<?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>213268</bug_id>
          
          <creation_ts>2020-06-16 16:17:18 -0700</creation_ts>
          <short_desc>Add experimental feature flag for modern &amp; unprefixed WebAudio API</short_desc>
          <delta_ts>2020-06-18 16:30:51 -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>Media</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>212611</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Chris Dumez">cdumez</reporter>
          <assigned_to name="Chris Dumez">cdumez</assigned_to>
          <cc>annulen</cc>
    
    <cc>benjamin</cc>
    
    <cc>calvaris</cc>
    
    <cc>clark_wang</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>ggaren</cc>
    
    <cc>glenn</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>japhet</cc>
    
    <cc>jer.noble</cc>
    
    <cc>kangil.han</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>mkwst</cc>
    
    <cc>philipj</cc>
    
    <cc>ryuan.choi</cc>
    
    <cc>sergio</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>youennf</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1663294</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2020-06-16 16:17:18 -0700</bug_when>
    <thetext>Add experimental feature flag for modern &amp; unprefixed WebAudio API.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1663342</commentid>
    <comment_count>1</comment_count>
      <attachid>402065</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2020-06-16 18:28:17 -0700</bug_when>
    <thetext>Created attachment 402065
WIP Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1663344</commentid>
    <comment_count>2</comment_count>
      <attachid>402067</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2020-06-16 18:32:30 -0700</bug_when>
    <thetext>Created attachment 402067
WIP Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1663347</commentid>
    <comment_count>3</comment_count>
      <attachid>402068</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2020-06-16 18:40:23 -0700</bug_when>
    <thetext>Created attachment 402068
WIP Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1663406</commentid>
    <comment_count>4</comment_count>
      <attachid>402089</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2020-06-17 01:25:16 -0700</bug_when>
    <thetext>Created attachment 402089
WIP Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1663411</commentid>
    <comment_count>5</comment_count>
      <attachid>402091</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2020-06-17 01:34:48 -0700</bug_when>
    <thetext>Created attachment 402091
WIP Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1663413</commentid>
    <comment_count>6</comment_count>
      <attachid>402092</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2020-06-17 01:45:59 -0700</bug_when>
    <thetext>Created attachment 402092
WIP Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1663534</commentid>
    <comment_count>7</comment_count>
      <attachid>402117</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2020-06-17 09:27:20 -0700</bug_when>
    <thetext>Created attachment 402117
WIP Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1663537</commentid>
    <comment_count>8</comment_count>
      <attachid>402119</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2020-06-17 09:39:38 -0700</bug_when>
    <thetext>Created attachment 402119
WIP Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1663553</commentid>
    <comment_count>9</comment_count>
      <attachid>402122</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2020-06-17 10:08:12 -0700</bug_when>
    <thetext>Created attachment 402122
WIP Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1663559</commentid>
    <comment_count>10</comment_count>
      <attachid>402124</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2020-06-17 10:15:16 -0700</bug_when>
    <thetext>Created attachment 402124
WIP Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1663577</commentid>
    <comment_count>11</comment_count>
      <attachid>402129</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2020-06-17 10:33:36 -0700</bug_when>
    <thetext>Created attachment 402129
WIP Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1663611</commentid>
    <comment_count>12</comment_count>
      <attachid>402136</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2020-06-17 11:31:15 -0700</bug_when>
    <thetext>Created attachment 402136
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1663633</commentid>
    <comment_count>13</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2020-06-17 12:03:54 -0700</bug_when>
    <thetext>Oh, it appears I have to do something to turn on the setting in DRT. Seems to only work for WKTR right now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1663637</commentid>
    <comment_count>14</comment_count>
      <attachid>402143</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2020-06-17 12:24:47 -0700</bug_when>
    <thetext>Created attachment 402143
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1663649</commentid>
    <comment_count>15</comment_count>
      <attachid>402146</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2020-06-17 13:00:10 -0700</bug_when>
    <thetext>Created attachment 402146
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1663651</commentid>
    <comment_count>16</comment_count>
      <attachid>402147</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2020-06-17 13:06:52 -0700</bug_when>
    <thetext>Created attachment 402147
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1663652</commentid>
    <comment_count>17</comment_count>
      <attachid>402148</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2020-06-17 13:09:27 -0700</bug_when>
    <thetext>Created attachment 402148
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1663662</commentid>
    <comment_count>18</comment_count>
      <attachid>402149</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2020-06-17 13:25:25 -0700</bug_when>
    <thetext>Created attachment 402149
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1663668</commentid>
    <comment_count>19</comment_count>
      <attachid>402152</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2020-06-17 13:57:45 -0700</bug_when>
    <thetext>Created attachment 402152
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1663669</commentid>
    <comment_count>20</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2020-06-17 13:57:58 -0700</bug_when>
    <thetext>Working on making wincairo happy.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1663679</commentid>
    <comment_count>21</comment_count>
      <attachid>402155</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2020-06-17 14:40:06 -0700</bug_when>
    <thetext>Created attachment 402155
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1663760</commentid>
    <comment_count>22</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2020-06-17 19:32:14 -0700</bug_when>
    <thetext>Found 1 new test failure: imported/w3c/web-platform-tests/service-workers/service-worker/fetch-audio-tainting.https.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1663765</commentid>
    <comment_count>23</comment_count>
      <attachid>402179</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2020-06-17 20:21:45 -0700</bug_when>
    <thetext>Created attachment 402179
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1663781</commentid>
    <comment_count>24</comment_count>
      <attachid>402179</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2020-06-17 21:14:20 -0700</bug_when>
    <thetext>Comment on attachment 402179
Patch

Clearing flags on attachment: 402179

Committed r263198: &lt;https://trac.webkit.org/changeset/263198&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1663782</commentid>
    <comment_count>25</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2020-06-17 21:14:25 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1663783</commentid>
    <comment_count>26</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-06-17 21:15:24 -0700</bug_when>
    <thetext>&lt;rdar://problem/64475693&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>402065</attachid>
            <date>2020-06-16 18:28:17 -0700</date>
            <delta_ts>2020-06-16 18:32:30 -0700</delta_ts>
            <desc>WIP Patch</desc>
            <filename>213268_wip.patch</filename>
            <type>text/plain</type>
            <size>126638</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dlYkNv
cmUvQ01ha2VMaXN0cy50eHQKaW5kZXggOTc1OTQ4OTVkOGMuLmNiZWM5ZWMwOWY1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9D
TWFrZUxpc3RzLnR4dApAQCAtNDMzLDYgKzQzMyw3IEBAIHNldChXZWJDb3JlX05PTl9TVkdfSURM
X0ZJTEVTCiAgICAgTW9kdWxlcy93ZWJhdWRpby9BdWRpb0J1ZmZlckNhbGxiYWNrLmlkbAogICAg
IE1vZHVsZXMvd2ViYXVkaW8vQXVkaW9CdWZmZXJTb3VyY2VOb2RlLmlkbAogICAgIE1vZHVsZXMv
d2ViYXVkaW8vQXVkaW9Db250ZXh0LmlkbAorICAgIE1vZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250
ZXh0U3RhdGUuaWRsCiAgICAgTW9kdWxlcy93ZWJhdWRpby9BdWRpb0Rlc3RpbmF0aW9uTm9kZS5p
ZGwKICAgICBNb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvTGlzdGVuZXIuaWRsCiAgICAgTW9kdWxlcy93
ZWJhdWRpby9BdWRpb05vZGUuaWRsCkBAIC00NTUsNiArNDU2LDkgQEAgc2V0KFdlYkNvcmVfTk9O
X1NWR19JRExfRklMRVMKICAgICBNb2R1bGVzL3dlYmF1ZGlvL1BlcmlvZGljV2F2ZS5pZGwKICAg
ICBNb2R1bGVzL3dlYmF1ZGlvL1NjcmlwdFByb2Nlc3Nvck5vZGUuaWRsCiAgICAgTW9kdWxlcy93
ZWJhdWRpby9XYXZlU2hhcGVyTm9kZS5pZGwKKyAgICBNb2R1bGVzL3dlYmF1ZGlvL1dlYktpdEF1
ZGlvQ29udGV4dC5pZGwKKyAgICBNb2R1bGVzL3dlYmF1ZGlvL1dlYktpdEF1ZGlvUGFubmVyTm9k
ZS5pZGwKKyAgICBNb2R1bGVzL3dlYmF1ZGlvL1dlYktpdE9mZmxpbmVBdWRpb0NvbnRleHQuaWRs
CiAKICAgICBNb2R1bGVzL3dlYmF1dGhuL0F0dGVzdGF0aW9uQ29udmV5YW5jZVByZWZlcmVuY2Uu
aWRsCiAgICAgTW9kdWxlcy93ZWJhdXRobi9BdXRoZW50aWNhdGlvbkV4dGVuc2lvbnNDbGllbnRJ
bnB1dHMuaWRsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy1pbnB1
dC54Y2ZpbGVsaXN0IGIvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMtaW5wdXQueGNmaWxl
bGlzdAppbmRleCA2YTdhYTdkMTRlYi4uMDRhMzM3OGJkYmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLWlucHV0LnhjZmlsZWxpc3QKKysrIGIvU291cmNlL1dlYkNv
cmUvRGVyaXZlZFNvdXJjZXMtaW5wdXQueGNmaWxlbGlzdApAQCAtMzIyLDYgKzMyMiw3IEBAICQo
UFJPSkVDVF9ESVIpL01vZHVsZXMvd2ViYXVkaW8vUGFubmVyTm9kZS5pZGwKICQoUFJPSkVDVF9E
SVIpL01vZHVsZXMvd2ViYXVkaW8vUGVyaW9kaWNXYXZlLmlkbAogJChQUk9KRUNUX0RJUikvTW9k
dWxlcy93ZWJhdWRpby9TY3JpcHRQcm9jZXNzb3JOb2RlLmlkbAogJChQUk9KRUNUX0RJUikvTW9k
dWxlcy93ZWJhdWRpby9XYXZlU2hhcGVyTm9kZS5pZGwKKyQoUFJPSkVDVF9ESVIpL01vZHVsZXMv
d2ViYXVkaW8vV2ViS2l0QXVkaW9Db250ZXh0LmlkbAogJChQUk9KRUNUX0RJUikvTW9kdWxlcy93
ZWJhdXRobi9BdHRlc3RhdGlvbkNvbnZleWFuY2VQcmVmZXJlbmNlLmlkbAogJChQUk9KRUNUX0RJ
UikvTW9kdWxlcy93ZWJhdXRobi9BdXRoZW50aWNhdGlvbkV4dGVuc2lvbnNDbGllbnRJbnB1dHMu
aWRsCiAkKFBST0pFQ1RfRElSKS9Nb2R1bGVzL3dlYmF1dGhuL0F1dGhlbnRpY2F0aW9uRXh0ZW5z
aW9uc0NsaWVudE91dHB1dHMuaWRsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVk
U291cmNlcy5tYWtlIGIvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQppbmRleCBk
MjY3MDg5ZTM4Ny4uMDY5ZTIwNTI2NzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0Rlcml2
ZWRTb3VyY2VzLm1ha2UKKysrIGIvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQpA
QCAtMzgzLDYgKzM4Myw3IEBAIEpTX0JJTkRJTkdfSURMUyA9IFwKICAgICAkKFdlYkNvcmUpL01v
ZHVsZXMvd2ViYXVkaW8vQXVkaW9CdWZmZXJDYWxsYmFjay5pZGwgXAogICAgICQoV2ViQ29yZSkv
TW9kdWxlcy93ZWJhdWRpby9BdWRpb0J1ZmZlclNvdXJjZU5vZGUuaWRsIFwKICAgICAkKFdlYkNv
cmUpL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0LmlkbCBcCisgICAgJChXZWJDb3JlKS9N
b2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQ29udGV4dFN0YXRlLmlkbCBcCiAgICAgJChXZWJDb3JlKS9N
b2R1bGVzL3dlYmF1ZGlvL0F1ZGlvRGVzdGluYXRpb25Ob2RlLmlkbCBcCiAgICAgJChXZWJDb3Jl
KS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvTGlzdGVuZXIuaWRsIFwKICAgICAkKFdlYkNvcmUpL01v
ZHVsZXMvd2ViYXVkaW8vQXVkaW9Ob2RlLmlkbCBcCkBAIC00MDUsNiArNDA2LDkgQEAgSlNfQklO
RElOR19JRExTID0gXAogICAgICQoV2ViQ29yZSkvTW9kdWxlcy93ZWJhdWRpby9QZXJpb2RpY1dh
dmUuaWRsIFwKICAgICAkKFdlYkNvcmUpL01vZHVsZXMvd2ViYXVkaW8vU2NyaXB0UHJvY2Vzc29y
Tm9kZS5pZGwgXAogICAgICQoV2ViQ29yZSkvTW9kdWxlcy93ZWJhdWRpby9XYXZlU2hhcGVyTm9k
ZS5pZGwgXAorICAgICQoV2ViQ29yZSkvTW9kdWxlcy93ZWJhdWRpby9XZWJLaXRBdWRpb0NvbnRl
eHQuaWRsIFwKKyAgICAkKFdlYkNvcmUpL01vZHVsZXMvd2ViYXVkaW8vV2ViS2l0QXVkaW9QYW5u
ZXJOb2RlLmlkbCBcCisgICAgJChXZWJDb3JlKS9Nb2R1bGVzL3dlYmF1ZGlvL1dlYktpdE9mZmxp
bmVBdWRpb0NvbnRleHQuaWRsIFwKICAgICAkKFdlYkNvcmUpL01vZHVsZXMvd2ViYXV0aG4vQXR0
ZXN0YXRpb25Db252ZXlhbmNlUHJlZmVyZW5jZS5pZGwgXAogICAgICQoV2ViQ29yZSkvTW9kdWxl
cy93ZWJhdXRobi9BdXRoZW50aWNhdGlvbkV4dGVuc2lvbnNDbGllbnRJbnB1dHMuaWRsIFwKICAg
ICAkKFdlYkNvcmUpL01vZHVsZXMvd2ViYXV0aG4vQXV0aGVudGljYXRpb25FeHRlbnNpb25zQ2xp
ZW50T3V0cHV0cy5pZGwgXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJh
dWRpby9BdWRpb0NvbnRleHQuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVk
aW9Db250ZXh0LmgKaW5kZXggOGUwOTQzOTRjZmYuLmMxZGZjNDAzYmJmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQ29udGV4dC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0LmgKQEAgLTI4LDYgKzI4LDcg
QEAKICNpbmNsdWRlICJBY3RpdmVET01PYmplY3QuaCIKICNpbmNsdWRlICJBc3luY0F1ZGlvRGVj
b2Rlci5oIgogI2luY2x1ZGUgIkF1ZGlvQnVzLmgiCisjaW5jbHVkZSAiQXVkaW9Db250ZXh0U3Rh
dGUuaCIKICNpbmNsdWRlICJBdWRpb0Rlc3RpbmF0aW9uTm9kZS5oIgogI2luY2x1ZGUgIkV2ZW50
VGFyZ2V0LmgiCiAjaW5jbHVkZSAiTWVkaWFDYW5TdGFydExpc3RlbmVyLmgiCkBAIC0xMzAsNyAr
MTMxLDcgQEAgcHVibGljOgogICAgIHZvaWQgcmVzdW1lUmVuZGVyaW5nKERPTVByb21pc2VEZWZl
cnJlZDx2b2lkPiYmKTsKICAgICB2b2lkIGNsb3NlKERPTVByb21pc2VEZWZlcnJlZDx2b2lkPiYm
KTsKIAotICAgIGVudW0gY2xhc3MgU3RhdGUgeyBTdXNwZW5kZWQsIFJ1bm5pbmcsIEludGVycnVw
dGVkLCBDbG9zZWQgfTsKKyAgICB1c2luZyBTdGF0ZSA9IEF1ZGlvQ29udGV4dFN0YXRlOwogICAg
IFN0YXRlIHN0YXRlKCkgY29uc3Q7CiAgICAgYm9vbCBpc0Nsb3NlZCgpIGNvbnN0IHsgcmV0dXJu
IG1fc3RhdGUgPT0gU3RhdGU6OkNsb3NlZDsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQ29udGV4dC5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmF1ZGlvL0F1ZGlvQ29udGV4dC5pZGwKaW5kZXggMTIxMjRhMzY3NzcuLjgzZGIzYjRk
NmIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQ29u
dGV4dC5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0NvbnRl
eHQuaWRsCkBAIC0yMywyMiArMjMsMTQgQEAKICAqIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLWVudW0gQXVkaW9Db250
ZXh0U3RhdGUgewotICAgICJzdXNwZW5kZWQiLAotICAgICJydW5uaW5nIiwKLSAgICAiaW50ZXJy
dXB0ZWQiLAotICAgICJjbG9zZWQiCi19OwotCiBbCiAgICAgQWN0aXZlRE9NT2JqZWN0LAogICAg
IENvbmRpdGlvbmFsPVdFQl9BVURJTywKICAgICBDb25zdHJ1Y3RvciwKICAgICBDb25zdHJ1Y3Rv
ckNhbGxXaXRoPURvY3VtZW50LAogICAgIENvbnN0cnVjdG9yTWF5VGhyb3dFeGNlcHRpb24sCi0g
ICAgRW5hYmxlZEJ5U2V0dGluZz1XZWJBdWRpbywKKyAgICBFbmFibGVkQnlTZXR0aW5nPU1vZGVy
blVucHJlZml4ZWRXZWJBdWRpbywKICAgICBFeHBvcnRNYWNybz1XRUJDT1JFX0VYUE9SVCwKLSAg
ICBJbnRlcmZhY2VOYW1lPXdlYmtpdEF1ZGlvQ29udGV4dCwKIF0gaW50ZXJmYWNlIEF1ZGlvQ29u
dGV4dCA6IEV2ZW50VGFyZ2V0IHsKICAgICAvLyBBbGwgcmVuZGVyZWQgYXVkaW8gdWx0aW1hdGVs
eSBjb25uZWN0cyB0byBkZXN0aW5hdGlvbiwgd2hpY2ggcmVwcmVzZW50cyB0aGUgYXVkaW8gaGFy
ZHdhcmUuCiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIEF1ZGlvRGVzdGluYXRpb25Ob2RlIGRlc3Rp
bmF0aW9uOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRp
b0NvbnRleHRTdGF0ZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0Nv
bnRleHRTdGF0ZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi4xNjAx
MzExMDhmYQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVk
aW8vQXVkaW9Db250ZXh0U3RhdGUuaApAQCAtMCwwICsxLDMyIEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTYtMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiAgUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIg
UFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTgorICog
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTCisgKiBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
cHJhZ21hIG9uY2UKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitlbnVtIGNsYXNzIEF1ZGlvQ29u
dGV4dFN0YXRlIHsgU3VzcGVuZGVkLCBSdW5uaW5nLCBJbnRlcnJ1cHRlZCwgQ2xvc2VkIH07CisK
K30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250
ZXh0U3RhdGUuaWRsIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0NvbnRl
eHRTdGF0ZS5pZGwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLmM4ZDA4
YmQyYjU2Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRp
by9BdWRpb0NvbnRleHRTdGF0ZS5pZGwKQEAgLTAsMCArMSwzMSBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxMCwgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdo
dCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVS
UE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMK
KyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTgorICogQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTCisgKiBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCitlbnVt
IEF1ZGlvQ29udGV4dFN0YXRlIHsKKyAgICAic3VzcGVuZGVkIiwKKyAgICAicnVubmluZyIsCisg
ICAgImludGVycnVwdGVkIiwKKyAgICAiY2xvc2VkIgorfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vT2ZmbGluZUF1ZGlvQ29udGV4dC5pZGwgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL09mZmxpbmVBdWRpb0NvbnRleHQuaWRsCmluZGV4IGM2
ZTBkNzRmMDJmLi42ZjEyMmE3YzNjOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJhdWRpby9PZmZsaW5lQXVkaW9Db250ZXh0LmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmF1ZGlvL09mZmxpbmVBdWRpb0NvbnRleHQuaWRsCkBAIC0yOCw2ICsyOCw2IEBA
CiAgICAgQ29uc3RydWN0b3IodW5zaWduZWQgbG9uZyBudW1iZXJPZkNoYW5uZWxzLCB1bnNpZ25l
ZCBsb25nIG51bWJlck9mRnJhbWVzLCB1bnJlc3RyaWN0ZWQgZmxvYXQgc2FtcGxlUmF0ZSksCiAg
ICAgQ29uc3RydWN0b3JNYXlUaHJvd0V4Y2VwdGlvbiwKICAgICBDb25zdHJ1Y3RvckNhbGxXaXRo
PVNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsCi0gICAgSW50ZXJmYWNlTmFtZT13ZWJraXRPZmZsaW5l
QXVkaW9Db250ZXh0CisgICAgRW5hYmxlZEJ5U2V0dGluZz1Nb2Rlcm5VbnByZWZpeGVkV2ViQXVk
aW8sCiBdIGludGVyZmFjZSBPZmZsaW5lQXVkaW9Db250ZXh0IDogQXVkaW9Db250ZXh0IHsKIH07
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1Bhbm5lck5vZGUu
aWRsIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9QYW5uZXJOb2RlLmlkbAppbmRl
eCAwMzI5ODM3ZDJmNS4uMzJkODkxZGMyYWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViYXVkaW8vUGFubmVyTm9kZS5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJhdWRpby9QYW5uZXJOb2RlLmlkbApAQCAtNDIsNyArNDIsNyBAQAogWwogICAgIENvbmRp
dGlvbmFsPVdFQl9BVURJTywKICAgICBKU0dlbmVyYXRlVG9KU09iamVjdCwKLSAgICBJbnRlcmZh
Y2VOYW1lPXdlYmtpdEF1ZGlvUGFubmVyTm9kZSwKKyAgICBFbmFibGVkQnlTZXR0aW5nPU1vZGVy
blVucHJlZml4ZWRXZWJBdWRpbywKIF0gaW50ZXJmYWNlIFBhbm5lck5vZGUgOiBBdWRpb05vZGUg
ewogICAgIC8vIERlZmF1bHQgbW9kZWwgZm9yIHN0ZXJlbyBpcyBIUlRGIAogICAgIGF0dHJpYnV0
ZSBQYW5uaW5nTW9kZWxUeXBlIHBhbm5pbmdNb2RlbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViYXVkaW8vV2ViS2l0QXVkaW9Db250ZXh0LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViYXVkaW8vV2ViS2l0QXVkaW9Db250ZXh0LmNwcApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uN2FjNThmMGEyYzgKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1dlYktpdEF1ZGlvQ29udGV4dC5jcHAK
QEAgLTAsMCArMSwxNDA3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQg
QU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04KKyAqIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUworICogU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaWYg
RU5BQkxFKFdFQl9BVURJTykKKworI2luY2x1ZGUgIldlYktpdEF1ZGlvQ29udGV4dC5oIgorCisj
aW5jbHVkZSAiQW5hbHlzZXJOb2RlLmgiCisjaW5jbHVkZSAiQXN5bmNBdWRpb0RlY29kZXIuaCIK
KyNpbmNsdWRlICJBdWRpb0J1ZmZlci5oIgorI2luY2x1ZGUgIkF1ZGlvQnVmZmVyQ2FsbGJhY2su
aCIKKyNpbmNsdWRlICJBdWRpb0J1ZmZlclNvdXJjZU5vZGUuaCIKKyNpbmNsdWRlICJBdWRpb0xp
c3RlbmVyLmgiCisjaW5jbHVkZSAiQXVkaW9Ob2RlSW5wdXQuaCIKKyNpbmNsdWRlICJBdWRpb05v
ZGVPdXRwdXQuaCIKKyNpbmNsdWRlICJBdWRpb1Nlc3Npb24uaCIKKyNpbmNsdWRlICJCaXF1YWRG
aWx0ZXJOb2RlLmgiCisjaW5jbHVkZSAiQ2hhbm5lbE1lcmdlck5vZGUuaCIKKyNpbmNsdWRlICJD
aGFubmVsU3BsaXR0ZXJOb2RlLmgiCisjaW5jbHVkZSAiQ29udm9sdmVyTm9kZS5oIgorI2luY2x1
ZGUgIkRlZmF1bHRBdWRpb0Rlc3RpbmF0aW9uTm9kZS5oIgorI2luY2x1ZGUgIkRlbGF5Tm9kZS5o
IgorI2luY2x1ZGUgIkRvY3VtZW50LmgiCisjaW5jbHVkZSAiRHluYW1pY3NDb21wcmVzc29yTm9k
ZS5oIgorI2luY2x1ZGUgIkV2ZW50TmFtZXMuaCIKKyNpbmNsdWRlICJGRlRGcmFtZS5oIgorI2lu
Y2x1ZGUgIkZyYW1lLmgiCisjaW5jbHVkZSAiRnJhbWVMb2FkZXIuaCIKKyNpbmNsdWRlICJHYWlu
Tm9kZS5oIgorI2luY2x1ZGUgIkdlbmVyaWNFdmVudFF1ZXVlLmgiCisjaW5jbHVkZSAiSFJURkRh
dGFiYXNlTG9hZGVyLmgiCisjaW5jbHVkZSAiSFJURlBhbm5lci5oIgorI2luY2x1ZGUgIkpTRE9N
UHJvbWlzZURlZmVycmVkLmgiCisjaW5jbHVkZSAiTG9nZ2luZy5oIgorI2luY2x1ZGUgIk5ldHdv
cmtpbmdDb250ZXh0LmgiCisjaW5jbHVkZSAiT2ZmbGluZUF1ZGlvQ29tcGxldGlvbkV2ZW50Lmgi
CisjaW5jbHVkZSAiT2ZmbGluZUF1ZGlvRGVzdGluYXRpb25Ob2RlLmgiCisjaW5jbHVkZSAiT3Nj
aWxsYXRvck5vZGUuaCIKKyNpbmNsdWRlICJQYWdlLmgiCisjaW5jbHVkZSAiUGFubmVyTm9kZS5o
IgorI2luY2x1ZGUgIlBlcmlvZGljV2F2ZS5oIgorI2luY2x1ZGUgIlBsYXRmb3JtTWVkaWFTZXNz
aW9uTWFuYWdlci5oIgorI2luY2x1ZGUgIlNjcmlwdENvbnRyb2xsZXIuaCIKKyNpbmNsdWRlICJT
Y3JpcHRQcm9jZXNzb3JOb2RlLmgiCisjaW5jbHVkZSAiV2F2ZVNoYXBlck5vZGUuaCIKKyNpbmNs
dWRlIDxKYXZhU2NyaXB0Q29yZS9TY3JpcHRDYWxsU3RhY2suaD4KKworI2lmIEVOQUJMRShNRURJ
QV9TVFJFQU0pCisjaW5jbHVkZSAiTWVkaWFTdHJlYW0uaCIKKyNpbmNsdWRlICJNZWRpYVN0cmVh
bUF1ZGlvRGVzdGluYXRpb25Ob2RlLmgiCisjaW5jbHVkZSAiTWVkaWFTdHJlYW1BdWRpb1NvdXJj
ZS5oIgorI2luY2x1ZGUgIk1lZGlhU3RyZWFtQXVkaW9Tb3VyY2VOb2RlLmgiCisjZW5kaWYKKwor
I2lmIEVOQUJMRShWSURFTykKKyNpbmNsdWRlICJIVE1MTWVkaWFFbGVtZW50LmgiCisjaW5jbHVk
ZSAiTWVkaWFFbGVtZW50QXVkaW9Tb3VyY2VOb2RlLmgiCisjZW5kaWYKKworI2lmIERFQlVHX0FV
RElPTk9ERV9SRUZFUkVOQ0VTCisjaW5jbHVkZSA8c3RkaW8uaD4KKyNlbmRpZgorCisjaWYgVVNF
KEdTVFJFQU1FUikKKyNpbmNsdWRlICJHU3RyZWFtZXJDb21tb24uaCIKKyNlbmRpZgorCisjaWYg
UExBVEZPUk0oSU9TX0ZBTUlMWSkKKyNpbmNsdWRlICJTY3JpcHRDb250cm9sbGVyLmgiCisjaW5j
bHVkZSAiU2V0dGluZ3MuaCIKKyNlbmRpZgorCisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvQXJy
YXlCdWZmZXIuaD4KKyNpbmNsdWRlIDx3dGYvQXRvbWljcy5oPgorI2luY2x1ZGUgPHd0Zi9Jc29N
YWxsb2NJbmxpbmVzLmg+CisjaW5jbHVkZSA8d3RmL01haW5UaHJlYWQuaD4KKyNpbmNsdWRlIDx3
dGYvUmVmLmg+CisjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KKyNpbmNsdWRlIDx3dGYvU2Nv
cGUuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KKworY29uc3QgdW5zaWduZWQg
TWF4UGVyaW9kaWNXYXZlTGVuZ3RoID0gNDA5NjsKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitX
VEZfTUFLRV9JU09fQUxMT0NBVEVEX0lNUEwoV2ViS2l0QXVkaW9Db250ZXh0KTsKKworI2RlZmlu
ZSBSRUxFQVNFX0xPR19JRl9BTExPV0VEKGZtdCwgLi4uKSBSRUxFQVNFX0xPR19JRihkb2N1bWVu
dCgpICYmIGRvY3VtZW50KCktPnBhZ2UoKSAmJiBkb2N1bWVudCgpLT5wYWdlKCktPmlzQWx3YXlz
T25Mb2dnaW5nQWxsb3dlZCgpLCBNZWRpYSwgIiVwIC0gV2ViS2l0QXVkaW9Db250ZXh0OjoiIGZt
dCwgdGhpcywgIyNfX1ZBX0FSR1NfXykKKworYm9vbCBXZWJLaXRBdWRpb0NvbnRleHQ6OmlzU2Ft
cGxlUmF0ZVJhbmdlR29vZChmbG9hdCBzYW1wbGVSYXRlKQoreworICAgIC8vIEZJWE1FOiBJdCB3
b3VsZCBiZSBuaWNlIGlmIHRoZSBtaW5pbXVtIHNhbXBsZS1yYXRlIGNvdWxkIGJlIGxlc3MgdGhh
biA0NC4xS0h6LAorICAgIC8vIGJ1dCB0aGF0IHdpbGwgcmVxdWlyZSBzb21lIGZpeGVzIGluIEhS
VEZQYW5uZXI6OmZmdFNpemVGb3JTYW1wbGVSYXRlKCksIGFuZCBzb21lIHRlc3RpbmcgdGhlcmUu
CisgICAgcmV0dXJuIHNhbXBsZVJhdGUgPj0gNDQxMDAgJiYgc2FtcGxlUmF0ZSA8PSA5NjAwMDsK
K30KKworI2lmIE9TKFdJTkRPV1MpCisvLyBEb24ndCBhbGxvdyBtb3JlIHRoYW4gdGhpcyBudW1i
ZXIgb2Ygc2ltdWx0YW5lb3VzIEF1ZGlvQ29udGV4dHMgdGFsa2luZyB0byBoYXJkd2FyZS4KK2Nv
bnN0ZXhwciB1bnNpZ25lZCBtYXhIYXJkd2FyZUNvbnRleHRzID0gNDsKKyNlbmRpZgordW5zaWdu
ZWQgV2ViS2l0QXVkaW9Db250ZXh0OjpzX2hhcmR3YXJlQ29udGV4dENvdW50ID0gMDsKKworRXhj
ZXB0aW9uT3I8UmVmPFdlYktpdEF1ZGlvQ29udGV4dD4+IFdlYktpdEF1ZGlvQ29udGV4dDo6Y3Jl
YXRlKERvY3VtZW50JiBkb2N1bWVudCkKK3sKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwor
I2lmIE9TKFdJTkRPV1MpCisgICAgaWYgKHNfaGFyZHdhcmVDb250ZXh0Q291bnQgPj0gbWF4SGFy
ZHdhcmVDb250ZXh0cykKKyAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IFF1b3RhRXhjZWVkZWRF
cnJvciB9OworI2VuZGlmCisKKyAgICBhdXRvIGF1ZGlvQ29udGV4dCA9IGFkb3B0UmVmKCpuZXcg
V2ViS2l0QXVkaW9Db250ZXh0KGRvY3VtZW50KSk7CisgICAgYXVkaW9Db250ZXh0LT5zdXNwZW5k
SWZOZWVkZWQoKTsKKyAgICByZXR1cm4gYXVkaW9Db250ZXh0OworfQorCisvLyBDb25zdHJ1Y3Rv
ciBmb3IgcmVuZGVyaW5nIHRvIHRoZSBhdWRpbyBoYXJkd2FyZS4KK1dlYktpdEF1ZGlvQ29udGV4
dDo6V2ViS2l0QXVkaW9Db250ZXh0KERvY3VtZW50JiBkb2N1bWVudCkKKyAgICA6IEFjdGl2ZURP
TU9iamVjdChkb2N1bWVudCkKKyNpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKKyAgICAsIG1fbG9n
Z2VyKGRvY3VtZW50LmxvZ2dlcigpKQorICAgICwgbV9sb2dJZGVudGlmaWVyKHVuaXF1ZUxvZ0lk
ZW50aWZpZXIoKSkKKyNlbmRpZgorICAgICwgbV9tZWRpYVNlc3Npb24oUGxhdGZvcm1NZWRpYVNl
c3Npb246OmNyZWF0ZShQbGF0Zm9ybU1lZGlhU2Vzc2lvbk1hbmFnZXI6OnNoYXJlZE1hbmFnZXIo
KSwgKnRoaXMpKQorICAgICwgbV9ldmVudFF1ZXVlKE1haW5UaHJlYWRHZW5lcmljRXZlbnRRdWV1
ZTo6Y3JlYXRlKCp0aGlzKSkKK3sKKyAgICAvLyBBY2NvcmRpbmcgdG8gc3BlYyBBdWRpb0NvbnRl
eHQgbXVzdCBkaWUgb25seSBhZnRlciBwYWdlIG5hdmlnYXRlLgorICAgIC8vIExldHMgbWFyayBp
dCBhcyBBY3RpdmVET01PYmplY3Qgd2l0aCBwZW5kaW5nIGFjdGl2aXR5IGFuZCB1bm1hcmsgaXQg
aW4gY2xlYXIgbWV0aG9kLgorICAgIG1ha2VQZW5kaW5nQWN0aXZpdHkoKTsKKworICAgIGNvbnN0
cnVjdENvbW1vbigpOworCisgICAgbV9kZXN0aW5hdGlvbk5vZGUgPSBEZWZhdWx0QXVkaW9EZXN0
aW5hdGlvbk5vZGU6OmNyZWF0ZSgqdGhpcyk7CisKKyAgICAvLyBJbml0aWFsaXplIHRoZSBkZXN0
aW5hdGlvbiBub2RlJ3MgbXV0ZWQgc3RhdGUgdG8gbWF0Y2ggdGhlIHBhZ2UncyBjdXJyZW50IG11
dGVkIHN0YXRlLgorICAgIHBhZ2VNdXRlZFN0YXRlRGlkQ2hhbmdlKCk7CisKKyAgICBkb2N1bWVu
dC5hZGRBdWRpb1Byb2R1Y2VyKCp0aGlzKTsKKyAgICBkb2N1bWVudC5yZWdpc3RlckZvclZpc2li
aWxpdHlTdGF0ZUNoYW5nZWRDYWxsYmFja3MoKnRoaXMpOworfQorCisvLyBDb25zdHJ1Y3RvciBm
b3Igb2ZmbGluZSAobm9uLXJlYWx0aW1lKSByZW5kZXJpbmcuCitXZWJLaXRBdWRpb0NvbnRleHQ6
OldlYktpdEF1ZGlvQ29udGV4dChEb2N1bWVudCYgZG9jdW1lbnQsIEF1ZGlvQnVmZmVyKiByZW5k
ZXJUYXJnZXQpCisgICAgOiBBY3RpdmVET01PYmplY3QoZG9jdW1lbnQpCisjaWYgIVJFTEVBU0Vf
TE9HX0RJU0FCTEVECisgICAgLCBtX2xvZ2dlcihkb2N1bWVudC5sb2dnZXIoKSkKKyAgICAsIG1f
bG9nSWRlbnRpZmllcih1bmlxdWVMb2dJZGVudGlmaWVyKCkpCisjZW5kaWYKKyAgICAsIG1faXNP
ZmZsaW5lQ29udGV4dCh0cnVlKQorICAgICwgbV9tZWRpYVNlc3Npb24oUGxhdGZvcm1NZWRpYVNl
c3Npb246OmNyZWF0ZShQbGF0Zm9ybU1lZGlhU2Vzc2lvbk1hbmFnZXI6OnNoYXJlZE1hbmFnZXIo
KSwgKnRoaXMpKQorICAgICwgbV9ldmVudFF1ZXVlKE1haW5UaHJlYWRHZW5lcmljRXZlbnRRdWV1
ZTo6Y3JlYXRlKCp0aGlzKSkKKyAgICAsIG1fcmVuZGVyVGFyZ2V0KHJlbmRlclRhcmdldCkKK3sK
KyAgICBjb25zdHJ1Y3RDb21tb24oKTsKKworICAgIC8vIENyZWF0ZSBhIG5ldyBkZXN0aW5hdGlv
biBmb3Igb2ZmbGluZSByZW5kZXJpbmcuCisgICAgbV9kZXN0aW5hdGlvbk5vZGUgPSBPZmZsaW5l
QXVkaW9EZXN0aW5hdGlvbk5vZGU6OmNyZWF0ZSgqdGhpcywgbV9yZW5kZXJUYXJnZXQuZ2V0KCkp
OworfQorCit2b2lkIFdlYktpdEF1ZGlvQ29udGV4dDo6Y29uc3RydWN0Q29tbW9uKCkKK3sKKyAg
ICBGRlRGcmFtZTo6aW5pdGlhbGl6ZSgpOworCisgICAgbV9saXN0ZW5lciA9IEF1ZGlvTGlzdGVu
ZXI6OmNyZWF0ZSgpOworCisgICAgQVNTRVJUKGRvY3VtZW50KCkpOworICAgIGlmIChkb2N1bWVu
dCgpLT5hdWRpb1BsYXliYWNrUmVxdWlyZXNVc2VyR2VzdHVyZSgpKQorICAgICAgICBhZGRCZWhh
dmlvclJlc3RyaWN0aW9uKFJlcXVpcmVVc2VyR2VzdHVyZUZvckF1ZGlvU3RhcnRSZXN0cmljdGlv
bik7CisgICAgZWxzZQorICAgICAgICBtX3Jlc3RyaWN0aW9ucyA9IE5vUmVzdHJpY3Rpb25zOwor
CisjaWYgUExBVEZPUk0oQ09DT0EpCisgICAgYWRkQmVoYXZpb3JSZXN0cmljdGlvbihSZXF1aXJl
UGFnZUNvbnNlbnRGb3JBdWRpb1N0YXJ0UmVzdHJpY3Rpb24pOworI2VuZGlmCit9CisKK1dlYktp
dEF1ZGlvQ29udGV4dDo6fkF1ZGlvQ29udGV4dCgpCit7CisjaWYgREVCVUdfQVVESU9OT0RFX1JF
RkVSRU5DRVMKKyAgICBmcHJpbnRmKHN0ZGVyciwgIiVwOiBXZWJLaXRBdWRpb0NvbnRleHQ6On5B
dWRpb0NvbnRleHQoKVxuIiwgdGhpcyk7CisjZW5kaWYKKyAgICBBU1NFUlQoIW1faXNJbml0aWFs
aXplZCk7CisgICAgQVNTRVJUKG1faXNTdG9wU2NoZWR1bGVkKTsKKyAgICBBU1NFUlQobV9ub2Rl
c1RvRGVsZXRlLmlzRW1wdHkoKSk7CisgICAgQVNTRVJUKG1fcmVmZXJlbmNlZE5vZGVzLmlzRW1w
dHkoKSk7CisgICAgQVNTRVJUKG1fZmluaXNoZWROb2Rlcy5pc0VtcHR5KCkpOyAvLyBGSVhNRSAo
YnVnIDEwNTg3MCk6IFRoaXMgYXNzZXJ0aW9uIGZhaWxzIG9uIHRlc3RzIHNvbWV0aW1lcy4KKyAg
ICBBU1NFUlQobV9hdXRvbWF0aWNQdWxsTm9kZXMuaXNFbXB0eSgpKTsKKyAgICBpZiAobV9hdXRv
bWF0aWNQdWxsTm9kZXNOZWVkVXBkYXRpbmcpCisgICAgICAgIG1fcmVuZGVyaW5nQXV0b21hdGlj
UHVsbE5vZGVzLnJlc2l6ZShtX2F1dG9tYXRpY1B1bGxOb2Rlcy5zaXplKCkpOworICAgIEFTU0VS
VChtX3JlbmRlcmluZ0F1dG9tYXRpY1B1bGxOb2Rlcy5pc0VtcHR5KCkpOworICAgIC8vIEZJWE1F
OiBDYW4gd2UgYXNzZXJ0IHRoYXQgbV9kZWZlcnJlZEZpbmlzaERlcmVmTGlzdCBpcyBlbXB0eT8K
KworICAgIGlmICghaXNPZmZsaW5lQ29udGV4dCgpICYmIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQo
KSkgeworICAgICAgICBkb2N1bWVudCgpLT5yZW1vdmVBdWRpb1Byb2R1Y2VyKCp0aGlzKTsKKyAg
ICAgICAgZG9jdW1lbnQoKS0+dW5yZWdpc3RlckZvclZpc2liaWxpdHlTdGF0ZUNoYW5nZWRDYWxs
YmFja3MoKnRoaXMpOworICAgIH0KK30KKwordm9pZCBXZWJLaXRBdWRpb0NvbnRleHQ6OmxhenlJ
bml0aWFsaXplKCkKK3sKKyAgICBBU1NFUlQoIW1faXNTdG9wU2NoZWR1bGVkKTsKKworICAgIGlm
IChtX2lzSW5pdGlhbGl6ZWQpCisgICAgICAgIHJldHVybjsKKworICAgIC8vIERvbid0IGFsbG93
IHRoZSBjb250ZXh0IHRvIGluaXRpYWxpemUgYSBzZWNvbmQgdGltZSBhZnRlciBpdCdzIGFscmVh
ZHkgYmVlbiBleHBsaWNpdGx5IHVuaW5pdGlhbGl6ZWQuCisgICAgQVNTRVJUKCFtX2lzQXVkaW9U
aHJlYWRGaW5pc2hlZCk7CisgICAgaWYgKG1faXNBdWRpb1RocmVhZEZpbmlzaGVkKQorICAgICAg
ICByZXR1cm47CisKKyAgICBpZiAobV9kZXN0aW5hdGlvbk5vZGUpIHsKKyAgICAgICAgbV9kZXN0
aW5hdGlvbk5vZGUtPmluaXRpYWxpemUoKTsKKworICAgICAgICBpZiAoIWlzT2ZmbGluZUNvbnRl
eHQoKSkgeworICAgICAgICAgICAgLy8gVGhpcyBzdGFydHMgdGhlIGF1ZGlvIHRocmVhZC4gVGhl
IGRlc3RpbmF0aW9uIG5vZGUncyBwcm92aWRlSW5wdXQoKSBtZXRob2Qgd2lsbCBub3cgYmUgY2Fs
bGVkIHJlcGVhdGVkbHkgdG8gcmVuZGVyIGF1ZGlvLgorICAgICAgICAgICAgLy8gRWFjaCB0aW1l
IHByb3ZpZGVJbnB1dCgpIGlzIGNhbGxlZCwgYSBwb3J0aW9uIG9mIHRoZSBhdWRpbyBzdHJlYW0g
aXMgcmVuZGVyZWQuIExldCdzIGNhbGwgdGhpcyB0aW1lIHBlcmlvZCBhICJyZW5kZXIgcXVhbnR1
bSIuCisgICAgICAgICAgICAvLyBOT1RFOiBmb3Igbm93IGRlZmF1bHQgQXVkaW9Db250ZXh0IGRv
ZXMgbm90IG5lZWQgYW4gZXhwbGljaXQgc3RhcnRSZW5kZXJpbmcoKSBjYWxsIGZyb20gSmF2YVNj
cmlwdC4KKyAgICAgICAgICAgIC8vIFdlIG1heSB3YW50IHRvIGNvbnNpZGVyIHJlcXVpcmluZyBp
dCBmb3Igc3ltbWV0cnkgd2l0aCBPZmZsaW5lQXVkaW9Db250ZXh0LgorICAgICAgICAgICAgc3Rh
cnRSZW5kZXJpbmcoKTsKKyAgICAgICAgICAgICsrc19oYXJkd2FyZUNvbnRleHRDb3VudDsKKyAg
ICAgICAgfQorICAgIH0KKyAgICBtX2lzSW5pdGlhbGl6ZWQgPSB0cnVlOworfQorCit2b2lkIFdl
YktpdEF1ZGlvQ29udGV4dDo6Y2xlYXIoKQoreworICAgIFJlZjxXZWJLaXRBdWRpb0NvbnRleHQ+
IHByb3RlY3RlZFRoaXMoKnRoaXMpOworCisgICAgLy8gV2UgaGF2ZSB0byByZWxlYXNlIG91ciBy
ZWZlcmVuY2UgdG8gdGhlIGRlc3RpbmF0aW9uIG5vZGUgYmVmb3JlIHRoZSBjb250ZXh0IHdpbGwg
ZXZlciBiZSBkZWxldGVkIHNpbmNlIHRoZSBkZXN0aW5hdGlvbiBub2RlIGhvbGRzIGEgcmVmZXJl
bmNlIHRvIHRoZSBjb250ZXh0LgorICAgIGlmIChtX2Rlc3RpbmF0aW9uTm9kZSkKKyAgICAgICAg
bV9kZXN0aW5hdGlvbk5vZGUgPSBudWxscHRyOworCisgICAgLy8gQXVkaW8gdGhyZWFkIGlzIGRl
YWQuIE5vYm9keSB3aWxsIHNjaGVkdWxlIG5vZGUgZGVsZXRpb24gYWN0aW9uLiBMZXQncyBkbyBp
dCBvdXJzZWx2ZXMuCisgICAgZG8geworICAgICAgICBkZWxldGVNYXJrZWROb2RlcygpOworICAg
ICAgICBtX25vZGVzVG9EZWxldGUuYXBwZW5kVmVjdG9yKG1fbm9kZXNNYXJrZWRGb3JEZWxldGlv
bik7CisgICAgICAgIG1fbm9kZXNNYXJrZWRGb3JEZWxldGlvbi5jbGVhcigpOworICAgIH0gd2hp
bGUgKG1fbm9kZXNUb0RlbGV0ZS5zaXplKCkpOworCisgICAgY2xlYXJQZW5kaW5nQWN0aXZpdHko
KTsKK30KKwordm9pZCBXZWJLaXRBdWRpb0NvbnRleHQ6OnVuaW5pdGlhbGl6ZSgpCit7CisgICAg
QUxXQVlTX0xPRyhMT0dJREVOVElGSUVSKTsKKworICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7
CisKKyAgICBpZiAoIW1faXNJbml0aWFsaXplZCkKKyAgICAgICAgcmV0dXJuOworCisgICAgLy8g
VGhpcyBzdG9wcyB0aGUgYXVkaW8gdGhyZWFkIGFuZCBhbGwgYXVkaW8gcmVuZGVyaW5nLgorICAg
IGlmIChtX2Rlc3RpbmF0aW9uTm9kZSkKKyAgICAgICAgbV9kZXN0aW5hdGlvbk5vZGUtPnVuaW5p
dGlhbGl6ZSgpOworCisgICAgLy8gRG9uJ3QgYWxsb3cgdGhlIGNvbnRleHQgdG8gaW5pdGlhbGl6
ZSBhIHNlY29uZCB0aW1lIGFmdGVyIGl0J3MgYWxyZWFkeSBiZWVuIGV4cGxpY2l0bHkgdW5pbml0
aWFsaXplZC4KKyAgICBtX2lzQXVkaW9UaHJlYWRGaW5pc2hlZCA9IHRydWU7CisKKyAgICBpZiAo
IWlzT2ZmbGluZUNvbnRleHQoKSkgeworICAgICAgICBBU1NFUlQoc19oYXJkd2FyZUNvbnRleHRD
b3VudCk7CisgICAgICAgIC0tc19oYXJkd2FyZUNvbnRleHRDb3VudDsKKworICAgICAgICAvLyBP
ZmZsaW5lIGNvbnRleHRzIG1vdmUgdG8gJ0Nsb3NlZCcgc3RhdGUgd2hlbiBkaXNwYXRjaGluZyB0
aGUgY29tcGxldGlvbiBldmVudC4KKyAgICAgICAgc2V0U3RhdGUoU3RhdGU6OkNsb3NlZCk7Cisg
ICAgfQorCisgICAgLy8gR2V0IHJpZCBvZiB0aGUgc291cmNlcyB3aGljaCBtYXkgc3RpbGwgYmUg
cGxheWluZy4KKyAgICBkZXJlZlVuZmluaXNoZWRTb3VyY2VOb2RlcygpOworCisgICAgbV9pc0lu
aXRpYWxpemVkID0gZmFsc2U7Cit9CisKK2Jvb2wgV2ViS2l0QXVkaW9Db250ZXh0Ojppc0luaXRp
YWxpemVkKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9pc0luaXRpYWxpemVkOworfQorCit2b2lk
IFdlYktpdEF1ZGlvQ29udGV4dDo6YWRkUmVhY3Rpb24oU3RhdGUgc3RhdGUsIERPTVByb21pc2VE
ZWZlcnJlZDx2b2lkPiYmIHByb21pc2UpCit7CisgICAgc2l6ZV90IHN0YXRlSW5kZXggPSBzdGF0
aWNfY2FzdDxzaXplX3Q+KHN0YXRlKTsKKyAgICBpZiAoc3RhdGVJbmRleCA+PSBtX3N0YXRlUmVh
Y3Rpb25zLnNpemUoKSkKKyAgICAgICAgbV9zdGF0ZVJlYWN0aW9ucy5ncm93KHN0YXRlSW5kZXgg
KyAxKTsKKworICAgIG1fc3RhdGVSZWFjdGlvbnNbc3RhdGVJbmRleF0uYXBwZW5kKFdURk1vdmUo
cHJvbWlzZSkpOworfQorCit2b2lkIFdlYktpdEF1ZGlvQ29udGV4dDo6c2V0U3RhdGUoU3RhdGUg
c3RhdGUpCit7CisgICAgaWYgKG1fc3RhdGUgPT0gc3RhdGUpCisgICAgICAgIHJldHVybjsKKwor
ICAgIG1fc3RhdGUgPSBzdGF0ZTsKKyAgICBtX2V2ZW50UXVldWUtPmVucXVldWVFdmVudChFdmVu
dDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5zdGF0ZWNoYW5nZUV2ZW50LCBFdmVudDo6Q2FuQnViYmxl
OjpZZXMsIEV2ZW50OjpJc0NhbmNlbGFibGU6Ok5vKSk7CisKKyAgICBzaXplX3Qgc3RhdGVJbmRl
eCA9IHN0YXRpY19jYXN0PHNpemVfdD4oc3RhdGUpOworICAgIGlmIChzdGF0ZUluZGV4ID49IG1f
c3RhdGVSZWFjdGlvbnMuc2l6ZSgpKQorICAgICAgICByZXR1cm47CisKKyAgICBWZWN0b3I8RE9N
UHJvbWlzZURlZmVycmVkPHZvaWQ+PiByZWFjdGlvbnM7CisgICAgbV9zdGF0ZVJlYWN0aW9uc1tz
dGF0ZUluZGV4XS5zd2FwKHJlYWN0aW9ucyk7CisKKyAgICBmb3IgKGF1dG8mIHByb21pc2UgOiBy
ZWFjdGlvbnMpCisgICAgICAgIHByb21pc2UucmVzb2x2ZSgpOworfQorCit2b2lkIFdlYktpdEF1
ZGlvQ29udGV4dDo6c3RvcCgpCit7CisgICAgQUxXQVlTX0xPRyhMT0dJREVOVElGSUVSKTsKKwor
ICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisKKyAgICAvLyBVc3VhbGx5IFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQgY2FsbHMgc3RvcCB0d2ljZS4KKyAgICBpZiAobV9pc1N0b3BTY2hlZHVsZWQp
CisgICAgICAgIHJldHVybjsKKyAgICBtX2lzU3RvcFNjaGVkdWxlZCA9IHRydWU7CisKKyAgICBB
U1NFUlQoZG9jdW1lbnQoKSk7CisgICAgZG9jdW1lbnQoKS0+dXBkYXRlSXNQbGF5aW5nTWVkaWEo
KTsKKworICAgIHVuaW5pdGlhbGl6ZSgpOworICAgIGNsZWFyKCk7Cit9CisKK3ZvaWQgV2ViS2l0
QXVkaW9Db250ZXh0OjpzdXNwZW5kKFJlYXNvbkZvclN1c3BlbnNpb24pCit7CisgICAgaWYgKHN0
YXRlKCkgPT0gU3RhdGU6OlJ1bm5pbmcpIHsKKyAgICAgICAgbV9tZWRpYVNlc3Npb24tPmJlZ2lu
SW50ZXJydXB0aW9uKFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpQbGF5YmFja1N1c3BlbmRlZCk7Cisg
ICAgICAgIGRvY3VtZW50KCktPnVwZGF0ZUlzUGxheWluZ01lZGlhKCk7CisgICAgfQorfQorCit2
b2lkIFdlYktpdEF1ZGlvQ29udGV4dDo6cmVzdW1lKCkKK3sKKyAgICBpZiAoc3RhdGUoKSA9PSBT
dGF0ZTo6SW50ZXJydXB0ZWQpIHsKKyAgICAgICAgbV9tZWRpYVNlc3Npb24tPmVuZEludGVycnVw
dGlvbihQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6TWF5UmVzdW1lUGxheWluZyk7CisgICAgICAgIGRv
Y3VtZW50KCktPnVwZGF0ZUlzUGxheWluZ01lZGlhKCk7CisgICAgfQorfQorCitjb25zdCBjaGFy
KiBXZWJLaXRBdWRpb0NvbnRleHQ6OmFjdGl2ZURPTU9iamVjdE5hbWUoKSBjb25zdAoreworICAg
IHJldHVybiAiV2ViS2l0QXVkaW9Db250ZXh0IjsKK30KKworRG9jdW1lbnQqIFdlYktpdEF1ZGlv
Q29udGV4dDo6ZG9jdW1lbnQoKSBjb25zdAoreworICAgIHJldHVybiBkb3duY2FzdDxEb2N1bWVu
dD4obV9zY3JpcHRFeGVjdXRpb25Db250ZXh0KTsKK30KKworRG9jdW1lbnRJZGVudGlmaWVyIFdl
YktpdEF1ZGlvQ29udGV4dDo6aG9zdGluZ0RvY3VtZW50SWRlbnRpZmllcigpIGNvbnN0Cit7Cisg
ICAgYXV0byogZG9jdW1lbnQgPSBkb3duY2FzdDxEb2N1bWVudD4obV9zY3JpcHRFeGVjdXRpb25D
b250ZXh0KTsKKyAgICByZXR1cm4gZG9jdW1lbnQgPyBkb2N1bWVudC0+aWRlbnRpZmllcigpIDog
RG9jdW1lbnRJZGVudGlmaWVyIHsgfTsKK30KKworYm9vbCBXZWJLaXRBdWRpb0NvbnRleHQ6Omlz
U3VzcGVuZGVkKCkgY29uc3QKK3sKKyAgICByZXR1cm4gIWRvY3VtZW50KCkgfHwgZG9jdW1lbnQo
KS0+YWN0aXZlRE9NT2JqZWN0c0FyZVN1c3BlbmRlZCgpIHx8IGRvY3VtZW50KCktPmFjdGl2ZURP
TU9iamVjdHNBcmVTdG9wcGVkKCk7Cit9CisKK3ZvaWQgV2ViS2l0QXVkaW9Db250ZXh0Ojp2aXNp
YmlsaXR5U3RhdGVDaGFuZ2VkKCkKK3sKKyAgICAvLyBEbyBub3Qgc3VzcGVuZCBpZiBhdWRpbyBp
cyBhdWRpYmxlLgorICAgIGlmICghZG9jdW1lbnQoKSB8fCBtZWRpYVN0YXRlKCkgPT0gTWVkaWFQ
cm9kdWNlcjo6SXNQbGF5aW5nQXVkaW8gfHwgbV9pc1N0b3BTY2hlZHVsZWQpCisgICAgICAgIHJl
dHVybjsKKworICAgIGlmIChkb2N1bWVudCgpLT5oaWRkZW4oKSkgeworICAgICAgICBpZiAoc3Rh
dGUoKSA9PSBTdGF0ZTo6UnVubmluZykgeworICAgICAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxM
T1dFRCgidmlzaWJpbGl0eVN0YXRlQ2hhbmdlZCgpIFN1c3BlbmRpbmcgcGxheWJhY2sgYWZ0ZXIg
Z29pbmcgdG8gdGhlIGJhY2tncm91bmQiKTsKKyAgICAgICAgICAgIG1fbWVkaWFTZXNzaW9uLT5i
ZWdpbkludGVycnVwdGlvbihQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6RW50ZXJpbmdCYWNrZ3JvdW5k
KTsKKyAgICAgICAgfQorICAgIH0gZWxzZSB7CisgICAgICAgIGlmIChzdGF0ZSgpID09IFN0YXRl
OjpJbnRlcnJ1cHRlZCkgeworICAgICAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgidmlz
aWJpbGl0eVN0YXRlQ2hhbmdlZCgpIFJlc3VtaW5nIHBsYXliYWNrIGFmdGVyIGVudGVyaW5nIGZv
cmVncm91bmQiKTsKKyAgICAgICAgICAgIG1fbWVkaWFTZXNzaW9uLT5lbmRJbnRlcnJ1cHRpb24o
UGxhdGZvcm1NZWRpYVNlc3Npb246Ok1heVJlc3VtZVBsYXlpbmcpOworICAgICAgICB9CisgICAg
fQorfQorCitib29sIFdlYktpdEF1ZGlvQ29udGV4dDo6d291bGRUYWludE9yaWdpbihjb25zdCBV
UkwmIHVybCkgY29uc3QKK3sKKyAgICBpZiAodXJsLnByb3RvY29sSXNEYXRhKCkpCisgICAgICAg
IHJldHVybiBmYWxzZTsKKworICAgIGlmIChhdXRvKiBkb2N1bWVudCA9IHRoaXMtPmRvY3VtZW50
KCkpCisgICAgICAgIHJldHVybiAhZG9jdW1lbnQtPnNlY3VyaXR5T3JpZ2luKCkuY2FuUmVxdWVz
dCh1cmwpOworCisgICAgcmV0dXJuIGZhbHNlOworfQorCitFeGNlcHRpb25PcjxSZWY8QXVkaW9C
dWZmZXI+PiBXZWJLaXRBdWRpb0NvbnRleHQ6OmNyZWF0ZUJ1ZmZlcih1bnNpZ25lZCBudW1iZXJP
ZkNoYW5uZWxzLCBzaXplX3QgbnVtYmVyT2ZGcmFtZXMsIGZsb2F0IHNhbXBsZVJhdGUpCit7Cisg
ICAgYXV0byBhdWRpb0J1ZmZlciA9IEF1ZGlvQnVmZmVyOjpjcmVhdGUobnVtYmVyT2ZDaGFubmVs
cywgbnVtYmVyT2ZGcmFtZXMsIHNhbXBsZVJhdGUpOworICAgIGlmICghYXVkaW9CdWZmZXIpCisg
ICAgICAgIHJldHVybiBFeGNlcHRpb24geyBOb3RTdXBwb3J0ZWRFcnJvciB9OworICAgIHJldHVy
biBhdWRpb0J1ZmZlci5yZWxlYXNlTm9uTnVsbCgpOworfQorCitFeGNlcHRpb25PcjxSZWY8QXVk
aW9CdWZmZXI+PiBXZWJLaXRBdWRpb0NvbnRleHQ6OmNyZWF0ZUJ1ZmZlcihBcnJheUJ1ZmZlciYg
YXJyYXlCdWZmZXIsIGJvb2wgbWl4VG9Nb25vKQoreworICAgIGF1dG8gYXVkaW9CdWZmZXIgPSBB
dWRpb0J1ZmZlcjo6Y3JlYXRlRnJvbUF1ZGlvRmlsZURhdGEoYXJyYXlCdWZmZXIuZGF0YSgpLCBh
cnJheUJ1ZmZlci5ieXRlTGVuZ3RoKCksIG1peFRvTW9ubywgc2FtcGxlUmF0ZSgpKTsKKyAgICBp
ZiAoIWF1ZGlvQnVmZmVyKQorICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgU3ludGF4RXJyb3Ig
fTsKKyAgICByZXR1cm4gYXVkaW9CdWZmZXIucmVsZWFzZU5vbk51bGwoKTsKK30KKwordm9pZCBX
ZWJLaXRBdWRpb0NvbnRleHQ6OmRlY29kZUF1ZGlvRGF0YShSZWY8QXJyYXlCdWZmZXI+JiYgYXVk
aW9EYXRhLCBSZWZQdHI8QXVkaW9CdWZmZXJDYWxsYmFjaz4mJiBzdWNjZXNzQ2FsbGJhY2ssIFJl
ZlB0cjxBdWRpb0J1ZmZlckNhbGxiYWNrPiYmIGVycm9yQ2FsbGJhY2spCit7CisgICAgaWYgKCFt
X2F1ZGlvRGVjb2RlcikKKyAgICAgICAgbV9hdWRpb0RlY29kZXIgPSBtYWtlVW5pcXVlPEFzeW5j
QXVkaW9EZWNvZGVyPigpOworICAgIG1fYXVkaW9EZWNvZGVyLT5kZWNvZGVBc3luYyhXVEZNb3Zl
KGF1ZGlvRGF0YSksIHNhbXBsZVJhdGUoKSwgV1RGTW92ZShzdWNjZXNzQ2FsbGJhY2spLCBXVEZN
b3ZlKGVycm9yQ2FsbGJhY2spKTsKK30KKworRXhjZXB0aW9uT3I8UmVmPEF1ZGlvQnVmZmVyU291
cmNlTm9kZT4+IFdlYktpdEF1ZGlvQ29udGV4dDo6Y3JlYXRlQnVmZmVyU291cmNlKCkKK3sKKyAg
ICBBTFdBWVNfTE9HKExPR0lERU5USUZJRVIpOworCisgICAgQVNTRVJUKGlzTWFpblRocmVhZCgp
KTsKKworICAgIGlmIChtX2lzU3RvcFNjaGVkdWxlZCkKKyAgICAgICAgcmV0dXJuIEV4Y2VwdGlv
biB7IEludmFsaWRTdGF0ZUVycm9yIH07CisKKyAgICBsYXp5SW5pdGlhbGl6ZSgpOworICAgIFJl
ZjxBdWRpb0J1ZmZlclNvdXJjZU5vZGU+IG5vZGUgPSBBdWRpb0J1ZmZlclNvdXJjZU5vZGU6OmNy
ZWF0ZSgqdGhpcywgc2FtcGxlUmF0ZSgpKTsKKworICAgIC8vIEJlY2F1c2UgdGhpcyBpcyBhbiBB
dWRpb1NjaGVkdWxlZFNvdXJjZU5vZGUsIHRoZSBjb250ZXh0IGtlZXBzIGEgcmVmZXJlbmNlIHVu
dGlsIGl0IGhhcyBmaW5pc2hlZCBwbGF5aW5nLgorICAgIC8vIFdoZW4gdGhpcyBoYXBwZW5zLCBB
dWRpb1NjaGVkdWxlZFNvdXJjZU5vZGU6OmZpbmlzaCgpIGNhbGxzIFdlYktpdEF1ZGlvQ29udGV4
dDo6bm90aWZ5Tm9kZUZpbmlzaGVkUHJvY2Vzc2luZygpLgorICAgIHJlZk5vZGUobm9kZSk7CisK
KyAgICByZXR1cm4gbm9kZTsKK30KKworI2lmIEVOQUJMRShWSURFTykKKworRXhjZXB0aW9uT3I8
UmVmPE1lZGlhRWxlbWVudEF1ZGlvU291cmNlTm9kZT4+IFdlYktpdEF1ZGlvQ29udGV4dDo6Y3Jl
YXRlTWVkaWFFbGVtZW50U291cmNlKEhUTUxNZWRpYUVsZW1lbnQmIG1lZGlhRWxlbWVudCkKK3sK
KyAgICBBTFdBWVNfTE9HKExPR0lERU5USUZJRVIpOworCisgICAgQVNTRVJUKGlzTWFpblRocmVh
ZCgpKTsKKworICAgIGlmIChtX2lzU3RvcFNjaGVkdWxlZCB8fCBtZWRpYUVsZW1lbnQuYXVkaW9T
b3VyY2VOb2RlKCkpCisgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBJbnZhbGlkU3RhdGVFcnJv
ciB9OworCisgICAgbGF6eUluaXRpYWxpemUoKTsKKworICAgIGF1dG8gbm9kZSA9IE1lZGlhRWxl
bWVudEF1ZGlvU291cmNlTm9kZTo6Y3JlYXRlKCp0aGlzLCBtZWRpYUVsZW1lbnQpOworCisgICAg
bWVkaWFFbGVtZW50LnNldEF1ZGlvU291cmNlTm9kZShub2RlLnB0cigpKTsKKworICAgIHJlZk5v
ZGUobm9kZS5nZXQoKSk7IC8vIGNvbnRleHQga2VlcHMgcmVmZXJlbmNlIHVudGlsIG5vZGUgaXMg
ZGlzY29ubmVjdGVkCisgICAgcmV0dXJuIG5vZGU7Cit9CisKKyNlbmRpZgorCisjaWYgRU5BQkxF
KE1FRElBX1NUUkVBTSkKKworRXhjZXB0aW9uT3I8UmVmPE1lZGlhU3RyZWFtQXVkaW9Tb3VyY2VO
b2RlPj4gV2ViS2l0QXVkaW9Db250ZXh0OjpjcmVhdGVNZWRpYVN0cmVhbVNvdXJjZShNZWRpYVN0
cmVhbSYgbWVkaWFTdHJlYW0pCit7CisgICAgQUxXQVlTX0xPRyhMT0dJREVOVElGSUVSKTsKKwor
ICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisKKyAgICBpZiAobV9pc1N0b3BTY2hlZHVsZWQp
CisgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBJbnZhbGlkU3RhdGVFcnJvciB9OworCisgICAg
YXV0byBhdWRpb1RyYWNrcyA9IG1lZGlhU3RyZWFtLmdldEF1ZGlvVHJhY2tzKCk7CisgICAgaWYg
KGF1ZGlvVHJhY2tzLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IEludmFs
aWRTdGF0ZUVycm9yIH07CisKKyAgICBNZWRpYVN0cmVhbVRyYWNrKiBwcm92aWRlclRyYWNrID0g
bnVsbHB0cjsKKyAgICBmb3IgKGF1dG8mIHRyYWNrIDogYXVkaW9UcmFja3MpIHsKKyAgICAgICAg
aWYgKHRyYWNrLT5hdWRpb1NvdXJjZVByb3ZpZGVyKCkpIHsKKyAgICAgICAgICAgIHByb3ZpZGVy
VHJhY2sgPSB0cmFjay5nZXQoKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAg
fQorICAgIGlmICghcHJvdmlkZXJUcmFjaykKKyAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IElu
dmFsaWRTdGF0ZUVycm9yIH07CisKKyAgICBsYXp5SW5pdGlhbGl6ZSgpOworCisgICAgYXV0byBu
b2RlID0gTWVkaWFTdHJlYW1BdWRpb1NvdXJjZU5vZGU6OmNyZWF0ZSgqdGhpcywgbWVkaWFTdHJl
YW0sICpwcm92aWRlclRyYWNrKTsKKyAgICBub2RlLT5zZXRGb3JtYXQoMiwgc2FtcGxlUmF0ZSgp
KTsKKworICAgIHJlZk5vZGUobm9kZSk7IC8vIGNvbnRleHQga2VlcHMgcmVmZXJlbmNlIHVudGls
IG5vZGUgaXMgZGlzY29ubmVjdGVkCisgICAgcmV0dXJuIG5vZGU7Cit9CisKK0V4Y2VwdGlvbk9y
PFJlZjxNZWRpYVN0cmVhbUF1ZGlvRGVzdGluYXRpb25Ob2RlPj4gV2ViS2l0QXVkaW9Db250ZXh0
OjpjcmVhdGVNZWRpYVN0cmVhbURlc3RpbmF0aW9uKCkKK3sKKyAgICBpZiAobV9pc1N0b3BTY2hl
ZHVsZWQpCisgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBJbnZhbGlkU3RhdGVFcnJvciB9Owor
CisgICAgLy8gRklYTUU6IEFkZCBzdXBwb3J0IGZvciBhbiBvcHRpb25hbCBhcmd1bWVudCB3aGlj
aCBzcGVjaWZpZXMgdGhlIG51bWJlciBvZiBjaGFubmVscy4KKyAgICAvLyBGSVhNRTogVGhlIGRl
ZmF1bHQgc2hvdWxkIHByb2JhYmx5IGJlIHN0ZXJlbyBpbnN0ZWFkIG9mIG1vbm8uCisgICAgcmV0
dXJuIE1lZGlhU3RyZWFtQXVkaW9EZXN0aW5hdGlvbk5vZGU6OmNyZWF0ZSgqdGhpcywgMSk7Cit9
CisKKyNlbmRpZgorCitFeGNlcHRpb25PcjxSZWY8U2NyaXB0UHJvY2Vzc29yTm9kZT4+IFdlYktp
dEF1ZGlvQ29udGV4dDo6Y3JlYXRlU2NyaXB0UHJvY2Vzc29yKHNpemVfdCBidWZmZXJTaXplLCBz
aXplX3QgbnVtYmVyT2ZJbnB1dENoYW5uZWxzLCBzaXplX3QgbnVtYmVyT2ZPdXRwdXRDaGFubmVs
cykKK3sKKyAgICBBTFdBWVNfTE9HKExPR0lERU5USUZJRVIpOworCisgICAgQVNTRVJUKGlzTWFp
blRocmVhZCgpKTsKKworICAgIGlmIChtX2lzU3RvcFNjaGVkdWxlZCkKKyAgICAgICAgcmV0dXJu
IEV4Y2VwdGlvbiB7IEludmFsaWRTdGF0ZUVycm9yIH07CisKKyAgICBsYXp5SW5pdGlhbGl6ZSgp
OworCisgICAgLy8gVzNDIEVkaXRvcidzIERyYWZ0IDA2IEp1bmUgMjAxNworICAgIC8vICBodHRw
czovL3dlYmF1ZGlvLmdpdGh1Yi5pby93ZWItYXVkaW8tYXBpLyN3aWRsLUJhc2VBdWRpb0NvbnRl
eHQtY3JlYXRlU2NyaXB0UHJvY2Vzc29yLVNjcmlwdFByb2Nlc3Nvck5vZGUtdW5zaWduZWQtbG9u
Zy1idWZmZXJTaXplLXVuc2lnbmVkLWxvbmctbnVtYmVyT2ZJbnB1dENoYW5uZWxzLXVuc2lnbmVk
LWxvbmctbnVtYmVyT2ZPdXRwdXRDaGFubmVscworCisgICAgLy8gVGhlIGJ1ZmZlclNpemUgcGFy
YW1ldGVyIGRldGVybWluZXMgdGhlIGJ1ZmZlciBzaXplIGluIHVuaXRzIG9mIHNhbXBsZS1mcmFt
ZXMuIElmIGl0J3Mgbm90IHBhc3NlZCBpbiwKKyAgICAvLyBvciBpZiB0aGUgdmFsdWUgaXMgMCwg
dGhlbiB0aGUgaW1wbGVtZW50YXRpb24gd2lsbCBjaG9vc2UgdGhlIGJlc3QgYnVmZmVyIHNpemUg
Zm9yIHRoZSBnaXZlbiBlbnZpcm9ubWVudCwKKyAgICAvLyB3aGljaCB3aWxsIGJlIGNvbnN0YW50
IHBvd2VyIG9mIDIgdGhyb3VnaG91dCB0aGUgbGlmZXRpbWUgb2YgdGhlIG5vZGUuIC4uLiBJZiB0
aGUgdmFsdWUgb2YgdGhpcyBwYXJhbWV0ZXIKKyAgICAvLyBpcyBub3Qgb25lIG9mIHRoZSBhbGxv
d2VkIHBvd2VyLW9mLTIgdmFsdWVzIGxpc3RlZCBhYm92ZSwgYW4gSW5kZXhTaXplRXJyb3IgbXVz
dCBiZSB0aHJvd24uCisgICAgc3dpdGNoIChidWZmZXJTaXplKSB7CisgICAgY2FzZSAwOgorI2lm
IFVTRShBVURJT19TRVNTSU9OKQorICAgICAgICAvLyBQaWNrIGEgdmFsdWUgYmV0d2VlbiAyNTYg
KDJeOCkgYW5kIDE2Mzg0ICgyXjE0KSwgYmFzZWQgb24gdGhlIGJ1ZmZlciBzaXplIG9mIHRoZSBj
dXJyZW50IEF1ZGlvU2Vzc2lvbjoKKyAgICAgICAgYnVmZmVyU2l6ZSA9IDEgPDwgc3RkOjptYXg8
c2l6ZV90Pig4LCBzdGQ6Om1pbjxzaXplX3Q+KDE0LCBzdGQ6OmxvZzIoQXVkaW9TZXNzaW9uOjpz
aGFyZWRTZXNzaW9uKCkuYnVmZmVyU2l6ZSgpKSkpOworI2Vsc2UKKyAgICAgICAgYnVmZmVyU2l6
ZSA9IDIwNDg7CisjZW5kaWYKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSAyNTY6CisgICAgY2Fz
ZSA1MTI6CisgICAgY2FzZSAxMDI0OgorICAgIGNhc2UgMjA0ODoKKyAgICBjYXNlIDQwOTY6Cisg
ICAgY2FzZSA4MTkyOgorICAgIGNhc2UgMTYzODQ6CisgICAgICAgIGJyZWFrOworICAgIGRlZmF1
bHQ6CisgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBJbmRleFNpemVFcnJvciB9OworICAgIH0K
KworICAgIC8vIEFuIEluZGV4U2l6ZUVycm9yIGV4Y2VwdGlvbiBtdXN0IGJlIHRocm93biBpZiBi
dWZmZXJTaXplIG9yIG51bWJlck9mSW5wdXRDaGFubmVscyBvciBudW1iZXJPZk91dHB1dENoYW5u
ZWxzCisgICAgLy8gYXJlIG91dHNpZGUgdGhlIHZhbGlkIHJhbmdlLiBJdCBpcyBpbnZhbGlkIGZv
ciBib3RoIG51bWJlck9mSW5wdXRDaGFubmVscyBhbmQgbnVtYmVyT2ZPdXRwdXRDaGFubmVscyB0
byBiZSB6ZXJvLgorICAgIC8vIEluIHRoaXMgY2FzZSBhbiBJbmRleFNpemVFcnJvciBtdXN0IGJl
IHRocm93bi4KKworICAgIGlmICghbnVtYmVyT2ZJbnB1dENoYW5uZWxzICYmICFudW1iZXJPZk91
dHB1dENoYW5uZWxzKQorICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgTm90U3VwcG9ydGVkRXJy
b3IgfTsKKworICAgIC8vIFRoaXMgcGFyYW1ldGVyIFtudW1iZXJPZklucHV0Q2hhbm5lbHNdIGRl
dGVybWluZXMgdGhlIG51bWJlciBvZiBjaGFubmVscyBmb3IgdGhpcyBub2RlJ3MgaW5wdXQuIFZh
bHVlcyBvZgorICAgIC8vIHVwIHRvIDMyIG11c3QgYmUgc3VwcG9ydGVkLiBBIE5vdFN1cHBvcnRl
ZEVycm9yIG11c3QgYmUgdGhyb3duIGlmIHRoZSBudW1iZXIgb2YgY2hhbm5lbHMgaXMgbm90IHN1
cHBvcnRlZC4KKworICAgIGlmIChudW1iZXJPZklucHV0Q2hhbm5lbHMgPiBtYXhOdW1iZXJPZkNo
YW5uZWxzKCkpCisgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBOb3RTdXBwb3J0ZWRFcnJvciB9
OworCisgICAgLy8gVGhpcyBwYXJhbWV0ZXIgW251bWJlck9mT3V0cHV0Q2hhbm5lbHNdIGRldGVy
bWluZXMgdGhlIG51bWJlciBvZiBjaGFubmVscyBmb3IgdGhpcyBub2RlJ3Mgb3V0cHV0LiBWYWx1
ZXMgb2YKKyAgICAvLyB1cCB0byAzMiBtdXN0IGJlIHN1cHBvcnRlZC4gQSBOb3RTdXBwb3J0ZWRF
cnJvciBtdXN0IGJlIHRocm93biBpZiB0aGUgbnVtYmVyIG9mIGNoYW5uZWxzIGlzIG5vdCBzdXBw
b3J0ZWQuCisKKyAgICBpZiAobnVtYmVyT2ZPdXRwdXRDaGFubmVscyA+IG1heE51bWJlck9mQ2hh
bm5lbHMoKSkKKyAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IE5vdFN1cHBvcnRlZEVycm9yIH07
CisKKyAgICBhdXRvIG5vZGUgPSBTY3JpcHRQcm9jZXNzb3JOb2RlOjpjcmVhdGUoKnRoaXMsIHNh
bXBsZVJhdGUoKSwgYnVmZmVyU2l6ZSwgbnVtYmVyT2ZJbnB1dENoYW5uZWxzLCBudW1iZXJPZk91
dHB1dENoYW5uZWxzKTsKKworICAgIHJlZk5vZGUobm9kZSk7IC8vIGNvbnRleHQga2VlcHMgcmVm
ZXJlbmNlIHVudGlsIHdlIHN0b3AgbWFraW5nIGphdmFzY3JpcHQgcmVuZGVyaW5nIGNhbGxiYWNr
cworICAgIHJldHVybiBub2RlOworfQorCitFeGNlcHRpb25PcjxSZWY8QmlxdWFkRmlsdGVyTm9k
ZT4+IFdlYktpdEF1ZGlvQ29udGV4dDo6Y3JlYXRlQmlxdWFkRmlsdGVyKCkKK3sKKyAgICBBTFdB
WVNfTE9HKExPR0lERU5USUZJRVIpOworCisgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKyAg
ICBpZiAobV9pc1N0b3BTY2hlZHVsZWQpCisgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBJbnZh
bGlkU3RhdGVFcnJvciB9OworCisgICAgbGF6eUluaXRpYWxpemUoKTsKKworICAgIHJldHVybiBC
aXF1YWRGaWx0ZXJOb2RlOjpjcmVhdGUoKnRoaXMsIHNhbXBsZVJhdGUoKSk7Cit9CisKK0V4Y2Vw
dGlvbk9yPFJlZjxXYXZlU2hhcGVyTm9kZT4+IFdlYktpdEF1ZGlvQ29udGV4dDo6Y3JlYXRlV2F2
ZVNoYXBlcigpCit7CisgICAgQUxXQVlTX0xPRyhMT0dJREVOVElGSUVSKTsKKworICAgIEFTU0VS
VChpc01haW5UaHJlYWQoKSk7CisgICAgaWYgKG1faXNTdG9wU2NoZWR1bGVkKQorICAgICAgICBy
ZXR1cm4gRXhjZXB0aW9uIHsgSW52YWxpZFN0YXRlRXJyb3IgfTsKKworICAgIGxhenlJbml0aWFs
aXplKCk7CisgICAgcmV0dXJuIFdhdmVTaGFwZXJOb2RlOjpjcmVhdGUoKnRoaXMpOworfQorCitF
eGNlcHRpb25PcjxSZWY8UGFubmVyTm9kZT4+IFdlYktpdEF1ZGlvQ29udGV4dDo6Y3JlYXRlUGFu
bmVyKCkKK3sKKyAgICBBTFdBWVNfTE9HKExPR0lERU5USUZJRVIpOworCisgICAgQVNTRVJUKGlz
TWFpblRocmVhZCgpKTsKKyAgICBpZiAobV9pc1N0b3BTY2hlZHVsZWQpCisgICAgICAgIHJldHVy
biBFeGNlcHRpb24geyBJbnZhbGlkU3RhdGVFcnJvciB9OworCisgICAgbGF6eUluaXRpYWxpemUo
KTsKKyAgICByZXR1cm4gUGFubmVyTm9kZTo6Y3JlYXRlKCp0aGlzLCBzYW1wbGVSYXRlKCkpOwor
fQorCitFeGNlcHRpb25PcjxSZWY8Q29udm9sdmVyTm9kZT4+IFdlYktpdEF1ZGlvQ29udGV4dDo6
Y3JlYXRlQ29udm9sdmVyKCkKK3sKKyAgICBBTFdBWVNfTE9HKExPR0lERU5USUZJRVIpOworCisg
ICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKyAgICBpZiAobV9pc1N0b3BTY2hlZHVsZWQpCisg
ICAgICAgIHJldHVybiBFeGNlcHRpb24geyBJbnZhbGlkU3RhdGVFcnJvciB9OworCisgICAgbGF6
eUluaXRpYWxpemUoKTsKKyAgICByZXR1cm4gQ29udm9sdmVyTm9kZTo6Y3JlYXRlKCp0aGlzLCBz
YW1wbGVSYXRlKCkpOworfQorCitFeGNlcHRpb25PcjxSZWY8RHluYW1pY3NDb21wcmVzc29yTm9k
ZT4+IFdlYktpdEF1ZGlvQ29udGV4dDo6Y3JlYXRlRHluYW1pY3NDb21wcmVzc29yKCkKK3sKKyAg
ICBBTFdBWVNfTE9HKExPR0lERU5USUZJRVIpOworCisgICAgQVNTRVJUKGlzTWFpblRocmVhZCgp
KTsKKyAgICBpZiAobV9pc1N0b3BTY2hlZHVsZWQpCisgICAgICAgIHJldHVybiBFeGNlcHRpb24g
eyBJbnZhbGlkU3RhdGVFcnJvciB9OworCisgICAgbGF6eUluaXRpYWxpemUoKTsKKyAgICByZXR1
cm4gRHluYW1pY3NDb21wcmVzc29yTm9kZTo6Y3JlYXRlKCp0aGlzLCBzYW1wbGVSYXRlKCkpOwor
fQorCitFeGNlcHRpb25PcjxSZWY8QW5hbHlzZXJOb2RlPj4gV2ViS2l0QXVkaW9Db250ZXh0Ojpj
cmVhdGVBbmFseXNlcigpCit7CisgICAgQUxXQVlTX0xPRyhMT0dJREVOVElGSUVSKTsKKworICAg
IEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisgICAgaWYgKG1faXNTdG9wU2NoZWR1bGVkKQorICAg
ICAgICByZXR1cm4gRXhjZXB0aW9uIHsgSW52YWxpZFN0YXRlRXJyb3IgfTsKKworICAgIGxhenlJ
bml0aWFsaXplKCk7CisgICAgcmV0dXJuIEFuYWx5c2VyTm9kZTo6Y3JlYXRlKCp0aGlzLCBzYW1w
bGVSYXRlKCkpOworfQorCitFeGNlcHRpb25PcjxSZWY8R2Fpbk5vZGU+PiBXZWJLaXRBdWRpb0Nv
bnRleHQ6OmNyZWF0ZUdhaW4oKQoreworICAgIEFMV0FZU19MT0coTE9HSURFTlRJRklFUik7CisK
KyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAgIGlmIChtX2lzU3RvcFNjaGVkdWxlZCkK
KyAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IEludmFsaWRTdGF0ZUVycm9yIH07CisKKyAgICBs
YXp5SW5pdGlhbGl6ZSgpOworICAgIHJldHVybiBHYWluTm9kZTo6Y3JlYXRlKCp0aGlzLCBzYW1w
bGVSYXRlKCkpOworfQorCitFeGNlcHRpb25PcjxSZWY8RGVsYXlOb2RlPj4gV2ViS2l0QXVkaW9D
b250ZXh0OjpjcmVhdGVEZWxheShkb3VibGUgbWF4RGVsYXlUaW1lKQoreworICAgIEFMV0FZU19M
T0coTE9HSURFTlRJRklFUik7CisKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAgIGlm
IChtX2lzU3RvcFNjaGVkdWxlZCkKKyAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IEludmFsaWRT
dGF0ZUVycm9yIH07CisKKyAgICBsYXp5SW5pdGlhbGl6ZSgpOworICAgIHJldHVybiBEZWxheU5v
ZGU6OmNyZWF0ZSgqdGhpcywgc2FtcGxlUmF0ZSgpLCBtYXhEZWxheVRpbWUpOworfQorCitFeGNl
cHRpb25PcjxSZWY8Q2hhbm5lbFNwbGl0dGVyTm9kZT4+IFdlYktpdEF1ZGlvQ29udGV4dDo6Y3Jl
YXRlQ2hhbm5lbFNwbGl0dGVyKHNpemVfdCBudW1iZXJPZk91dHB1dHMpCit7CisgICAgQUxXQVlT
X0xPRyhMT0dJREVOVElGSUVSKTsKKworICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisgICAg
aWYgKG1faXNTdG9wU2NoZWR1bGVkKQorICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgSW52YWxp
ZFN0YXRlRXJyb3IgfTsKKworICAgIGxhenlJbml0aWFsaXplKCk7CisgICAgYXV0byBub2RlID0g
Q2hhbm5lbFNwbGl0dGVyTm9kZTo6Y3JlYXRlKCp0aGlzLCBzYW1wbGVSYXRlKCksIG51bWJlck9m
T3V0cHV0cyk7CisgICAgaWYgKCFub2RlKQorICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgSW5k
ZXhTaXplRXJyb3IgfTsKKyAgICByZXR1cm4gbm9kZS5yZWxlYXNlTm9uTnVsbCgpOworfQorCitF
eGNlcHRpb25PcjxSZWY8Q2hhbm5lbE1lcmdlck5vZGU+PiBXZWJLaXRBdWRpb0NvbnRleHQ6OmNy
ZWF0ZUNoYW5uZWxNZXJnZXIoc2l6ZV90IG51bWJlck9mSW5wdXRzKQoreworICAgIEFMV0FZU19M
T0coTE9HSURFTlRJRklFUik7CisKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAgIGlm
IChtX2lzU3RvcFNjaGVkdWxlZCkKKyAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IEludmFsaWRT
dGF0ZUVycm9yIH07CisKKyAgICBsYXp5SW5pdGlhbGl6ZSgpOworICAgIGF1dG8gbm9kZSA9IENo
YW5uZWxNZXJnZXJOb2RlOjpjcmVhdGUoKnRoaXMsIHNhbXBsZVJhdGUoKSwgbnVtYmVyT2ZJbnB1
dHMpOworICAgIGlmICghbm9kZSkKKyAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IEluZGV4U2l6
ZUVycm9yIH07CisgICAgcmV0dXJuIG5vZGUucmVsZWFzZU5vbk51bGwoKTsKK30KKworRXhjZXB0
aW9uT3I8UmVmPE9zY2lsbGF0b3JOb2RlPj4gV2ViS2l0QXVkaW9Db250ZXh0OjpjcmVhdGVPc2Np
bGxhdG9yKCkKK3sKKyAgICBBTFdBWVNfTE9HKExPR0lERU5USUZJRVIpOworCisgICAgQVNTRVJU
KGlzTWFpblRocmVhZCgpKTsKKyAgICBpZiAobV9pc1N0b3BTY2hlZHVsZWQpCisgICAgICAgIHJl
dHVybiBFeGNlcHRpb24geyBJbnZhbGlkU3RhdGVFcnJvciB9OworCisgICAgbGF6eUluaXRpYWxp
emUoKTsKKworICAgIFJlZjxPc2NpbGxhdG9yTm9kZT4gbm9kZSA9IE9zY2lsbGF0b3JOb2RlOjpj
cmVhdGUoKnRoaXMsIHNhbXBsZVJhdGUoKSk7CisKKyAgICAvLyBCZWNhdXNlIHRoaXMgaXMgYW4g
QXVkaW9TY2hlZHVsZWRTb3VyY2VOb2RlLCB0aGUgY29udGV4dCBrZWVwcyBhIHJlZmVyZW5jZSB1
bnRpbCBpdCBoYXMgZmluaXNoZWQgcGxheWluZy4KKyAgICAvLyBXaGVuIHRoaXMgaGFwcGVucywg
QXVkaW9TY2hlZHVsZWRTb3VyY2VOb2RlOjpmaW5pc2goKSBjYWxscyBXZWJLaXRBdWRpb0NvbnRl
eHQ6Om5vdGlmeU5vZGVGaW5pc2hlZFByb2Nlc3NpbmcoKS4KKyAgICByZWZOb2RlKG5vZGUpOwor
CisgICAgcmV0dXJuIG5vZGU7Cit9CisKK0V4Y2VwdGlvbk9yPFJlZjxQZXJpb2RpY1dhdmU+PiBX
ZWJLaXRBdWRpb0NvbnRleHQ6OmNyZWF0ZVBlcmlvZGljV2F2ZShGbG9hdDMyQXJyYXkmIHJlYWws
IEZsb2F0MzJBcnJheSYgaW1hZ2luYXJ5KQoreworICAgIEFMV0FZU19MT0coTE9HSURFTlRJRklF
Uik7CisKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAgIGlmIChtX2lzU3RvcFNjaGVk
dWxlZCkKKyAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IEludmFsaWRTdGF0ZUVycm9yIH07CisK
KyAgICBpZiAocmVhbC5sZW5ndGgoKSAhPSBpbWFnaW5hcnkubGVuZ3RoKCkgfHwgKHJlYWwubGVu
Z3RoKCkgPiBNYXhQZXJpb2RpY1dhdmVMZW5ndGgpIHx8ICFyZWFsLmxlbmd0aCgpKQorICAgICAg
ICByZXR1cm4gRXhjZXB0aW9uIHsgSW5kZXhTaXplRXJyb3IgfTsKKyAgICBsYXp5SW5pdGlhbGl6
ZSgpOworICAgIHJldHVybiBQZXJpb2RpY1dhdmU6OmNyZWF0ZShzYW1wbGVSYXRlKCksIHJlYWws
IGltYWdpbmFyeSk7Cit9CisKK3ZvaWQgV2ViS2l0QXVkaW9Db250ZXh0Ojpub3RpZnlOb2RlRmlu
aXNoZWRQcm9jZXNzaW5nKEF1ZGlvTm9kZSogbm9kZSkKK3sKKyAgICBBU1NFUlQoaXNBdWRpb1Ro
cmVhZCgpKTsKKyAgICBtX2ZpbmlzaGVkTm9kZXMuYXBwZW5kKG5vZGUpOworfQorCit2b2lkIFdl
YktpdEF1ZGlvQ29udGV4dDo6ZGVyZWZGaW5pc2hlZFNvdXJjZU5vZGVzKCkKK3sKKyAgICBBU1NF
UlQoaXNHcmFwaE93bmVyKCkpOworICAgIEFTU0VSVChpc0F1ZGlvVGhyZWFkKCkgfHwgaXNBdWRp
b1RocmVhZEZpbmlzaGVkKCkpOworICAgIGZvciAoYXV0byYgbm9kZSA6IG1fZmluaXNoZWROb2Rl
cykKKyAgICAgICAgZGVyZWZOb2RlKCpub2RlKTsKKworICAgIG1fZmluaXNoZWROb2Rlcy5jbGVh
cigpOworfQorCit2b2lkIFdlYktpdEF1ZGlvQ29udGV4dDo6cmVmTm9kZShBdWRpb05vZGUmIG5v
ZGUpCit7CisgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKyAgICBBdXRvTG9ja2VyIGxvY2tl
cigqdGhpcyk7CisKKyAgICBub2RlLnJlZihBdWRpb05vZGU6OlJlZlR5cGVDb25uZWN0aW9uKTsK
KyAgICBtX3JlZmVyZW5jZWROb2Rlcy5hcHBlbmQoJm5vZGUpOworfQorCit2b2lkIFdlYktpdEF1
ZGlvQ29udGV4dDo6ZGVyZWZOb2RlKEF1ZGlvTm9kZSYgbm9kZSkKK3sKKyAgICBBU1NFUlQoaXNH
cmFwaE93bmVyKCkpOworCisgICAgbm9kZS5kZXJlZihBdWRpb05vZGU6OlJlZlR5cGVDb25uZWN0
aW9uKTsKKworICAgIEFTU0VSVChtX3JlZmVyZW5jZWROb2Rlcy5jb250YWlucygmbm9kZSkpOwor
ICAgIG1fcmVmZXJlbmNlZE5vZGVzLnJlbW92ZUZpcnN0KCZub2RlKTsKK30KKwordm9pZCBXZWJL
aXRBdWRpb0NvbnRleHQ6OmRlcmVmVW5maW5pc2hlZFNvdXJjZU5vZGVzKCkKK3sKKyAgICBBU1NF
UlQoaXNNYWluVGhyZWFkKCkgJiYgaXNBdWRpb1RocmVhZEZpbmlzaGVkKCkpOworICAgIGZvciAo
YXV0byYgbm9kZSA6IG1fcmVmZXJlbmNlZE5vZGVzKQorICAgICAgICBub2RlLT5kZXJlZihBdWRp
b05vZGU6OlJlZlR5cGVDb25uZWN0aW9uKTsKKworICAgIG1fcmVmZXJlbmNlZE5vZGVzLmNsZWFy
KCk7Cit9CisKK3ZvaWQgV2ViS2l0QXVkaW9Db250ZXh0Ojpsb2NrKGJvb2wmIG11c3RSZWxlYXNl
TG9jaykKK3sKKyAgICAvLyBEb24ndCBhbGxvdyByZWd1bGFyIGxvY2sgaW4gcmVhbC10aW1lIGF1
ZGlvIHRocmVhZC4KKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworCisgICAgVGhyZWFkJiB0
aGlzVGhyZWFkID0gVGhyZWFkOjpjdXJyZW50KCk7CisKKyAgICBpZiAoJnRoaXNUaHJlYWQgPT0g
bV9ncmFwaE93bmVyVGhyZWFkKSB7CisgICAgICAgIC8vIFdlIGFscmVhZHkgaGF2ZSB0aGUgbG9j
ay4KKyAgICAgICAgbXVzdFJlbGVhc2VMb2NrID0gZmFsc2U7CisgICAgfSBlbHNlIHsKKyAgICAg
ICAgLy8gQWNxdWlyZSB0aGUgbG9jay4KKyAgICAgICAgbV9jb250ZXh0R3JhcGhNdXRleC5sb2Nr
KCk7CisgICAgICAgIG1fZ3JhcGhPd25lclRocmVhZCA9ICZ0aGlzVGhyZWFkOworICAgICAgICBt
dXN0UmVsZWFzZUxvY2sgPSB0cnVlOworICAgIH0KK30KKworYm9vbCBXZWJLaXRBdWRpb0NvbnRl
eHQ6OnRyeUxvY2soYm9vbCYgbXVzdFJlbGVhc2VMb2NrKQoreworICAgIFRocmVhZCYgdGhpc1Ro
cmVhZCA9IFRocmVhZDo6Y3VycmVudCgpOworICAgIGJvb2wgaXNBdWRpb1RocmVhZCA9ICZ0aGlz
VGhyZWFkID09IGF1ZGlvVGhyZWFkKCk7CisKKyAgICAvLyBUcnkgdG8gY2F0Y2ggY2FzZXMgb2Yg
dXNpbmcgdHJ5IGxvY2sgb24gbWFpbiB0aHJlYWQgLSBpdCBzaG91bGQgdXNlIHJlZ3VsYXIgbG9j
ay4KKyAgICBBU1NFUlQoaXNBdWRpb1RocmVhZCB8fCBpc0F1ZGlvVGhyZWFkRmluaXNoZWQoKSk7
CisKKyAgICBpZiAoIWlzQXVkaW9UaHJlYWQpIHsKKyAgICAgICAgLy8gSW4gcmVsZWFzZSBidWls
ZCB0cmVhdCB0cnlMb2NrKCkgYXMgbG9jaygpIChzaW5jZSBhYm92ZSBBU1NFUlQoaXNBdWRpb1Ro
cmVhZCkgbmV2ZXIgZmlyZXMpIC0gdGhpcyBpcyB0aGUgYmVzdCB3ZSBjYW4gZG8uCisgICAgICAg
IGxvY2sobXVzdFJlbGVhc2VMb2NrKTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorCisg
ICAgYm9vbCBoYXNMb2NrOworCisgICAgaWYgKCZ0aGlzVGhyZWFkID09IG1fZ3JhcGhPd25lclRo
cmVhZCkgeworICAgICAgICAvLyBUaHJlYWQgYWxyZWFkeSBoYXMgdGhlIGxvY2suCisgICAgICAg
IGhhc0xvY2sgPSB0cnVlOworICAgICAgICBtdXN0UmVsZWFzZUxvY2sgPSBmYWxzZTsKKyAgICB9
IGVsc2UgeworICAgICAgICAvLyBEb24ndCBhbHJlYWR5IGhhdmUgdGhlIGxvY2sgLSB0cnkgdG8g
YWNxdWlyZSBpdC4KKyAgICAgICAgaGFzTG9jayA9IG1fY29udGV4dEdyYXBoTXV0ZXgudHJ5TG9j
aygpOworCisgICAgICAgIGlmIChoYXNMb2NrKQorICAgICAgICAgICAgbV9ncmFwaE93bmVyVGhy
ZWFkID0gJnRoaXNUaHJlYWQ7CisKKyAgICAgICAgbXVzdFJlbGVhc2VMb2NrID0gaGFzTG9jazsK
KyAgICB9CisKKyAgICByZXR1cm4gaGFzTG9jazsKK30KKwordm9pZCBXZWJLaXRBdWRpb0NvbnRl
eHQ6OnVubG9jaygpCit7CisgICAgQVNTRVJUKG1fZ3JhcGhPd25lclRocmVhZCA9PSAmVGhyZWFk
OjpjdXJyZW50KCkpOworCisgICAgbV9ncmFwaE93bmVyVGhyZWFkID0gbnVsbHB0cjsKKyAgICBt
X2NvbnRleHRHcmFwaE11dGV4LnVubG9jaygpOworfQorCitib29sIFdlYktpdEF1ZGlvQ29udGV4
dDo6aXNBdWRpb1RocmVhZCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fYXVkaW9UaHJlYWQgPT0g
JlRocmVhZDo6Y3VycmVudCgpOworfQorCitib29sIFdlYktpdEF1ZGlvQ29udGV4dDo6aXNHcmFw
aE93bmVyKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9ncmFwaE93bmVyVGhyZWFkID09ICZUaHJl
YWQ6OmN1cnJlbnQoKTsKK30KKwordm9pZCBXZWJLaXRBdWRpb0NvbnRleHQ6OmFkZERlZmVycmVk
RmluaXNoRGVyZWYoQXVkaW9Ob2RlKiBub2RlKQoreworICAgIEFTU0VSVChpc0F1ZGlvVGhyZWFk
KCkpOworICAgIG1fZGVmZXJyZWRGaW5pc2hEZXJlZkxpc3QuYXBwZW5kKG5vZGUpOworfQorCit2
b2lkIFdlYktpdEF1ZGlvQ29udGV4dDo6aGFuZGxlUHJlUmVuZGVyVGFza3MoKQoreworICAgIEFT
U0VSVChpc0F1ZGlvVGhyZWFkKCkpOworCisgICAgLy8gQXQgdGhlIGJlZ2lubmluZyBvZiBldmVy
eSByZW5kZXIgcXVhbnR1bSwgdHJ5IHRvIHVwZGF0ZSB0aGUgaW50ZXJuYWwgcmVuZGVyaW5nIGdy
YXBoIHN0YXRlIChmcm9tIG1haW4gdGhyZWFkIGNoYW5nZXMpLgorICAgIC8vIEl0J3MgT0sgaWYg
dGhlIHRyeUxvY2soKSBmYWlscywgd2UnbGwganVzdCB0YWtlIHNsaWdodGx5IGxvbmdlciB0byBw
aWNrIHVwIHRoZSBjaGFuZ2VzLgorICAgIGJvb2wgbXVzdFJlbGVhc2VMb2NrOworICAgIGlmICh0
cnlMb2NrKG11c3RSZWxlYXNlTG9jaykpIHsKKyAgICAgICAgLy8gRml4dXAgdGhlIHN0YXRlIG9m
IGFueSBkaXJ0eSBBdWRpb1N1bW1pbmdKdW5jdGlvbnMgYW5kIEF1ZGlvTm9kZU91dHB1dHMuCisg
ICAgICAgIGhhbmRsZURpcnR5QXVkaW9TdW1taW5nSnVuY3Rpb25zKCk7CisgICAgICAgIGhhbmRs
ZURpcnR5QXVkaW9Ob2RlT3V0cHV0cygpOworCisgICAgICAgIHVwZGF0ZUF1dG9tYXRpY1B1bGxO
b2RlcygpOworCisgICAgICAgIGlmIChtdXN0UmVsZWFzZUxvY2spCisgICAgICAgICAgICB1bmxv
Y2soKTsKKyAgICB9Cit9CisKK3ZvaWQgV2ViS2l0QXVkaW9Db250ZXh0OjpoYW5kbGVQb3N0UmVu
ZGVyVGFza3MoKQoreworICAgIEFTU0VSVChpc0F1ZGlvVGhyZWFkKCkpOworCisgICAgLy8gTXVz
dCB1c2UgYSB0cnlMb2NrKCkgaGVyZSB0b28uIERvbid0IHdvcnJ5LCB0aGUgbG9jayB3aWxsIHZl
cnkgcmFyZWx5IGJlIGNvbnRlbmRlZCBhbmQgdGhpcyBtZXRob2QgaXMgY2FsbGVkIGZyZXF1ZW50
bHkuCisgICAgLy8gVGhlIHdvcnN0IHRoYXQgY2FuIGhhcHBlbiBpcyB0aGF0IHRoZXJlIHdpbGwg
YmUgc29tZSBub2RlcyB3aGljaCB3aWxsIHRha2Ugc2xpZ2h0bHkgbG9uZ2VyIHRoYW4gdXN1YWwg
dG8gYmUgZGVsZXRlZCBvciByZW1vdmVkCisgICAgLy8gZnJvbSB0aGUgcmVuZGVyIGdyYXBoIChp
biB3aGljaCBjYXNlIHRoZXknbGwgcmVuZGVyIHNpbGVuY2UpLgorICAgIGJvb2wgbXVzdFJlbGVh
c2VMb2NrOworICAgIGlmICh0cnlMb2NrKG11c3RSZWxlYXNlTG9jaykpIHsKKyAgICAgICAgLy8g
VGFrZSBjYXJlIG9mIGZpbmlzaGluZyBhbnkgZGVyZWZzIHdoZXJlIHRoZSB0cnlMb2NrKCkgZmFp
bGVkIHByZXZpb3VzbHkuCisgICAgICAgIGhhbmRsZURlZmVycmVkRmluaXNoRGVyZWZzKCk7CisK
KyAgICAgICAgLy8gRHluYW1pY2FsbHkgY2xlYW4gdXAgbm9kZXMgd2hpY2ggYXJlIG5vIGxvbmdl
ciBuZWVkZWQuCisgICAgICAgIGRlcmVmRmluaXNoZWRTb3VyY2VOb2RlcygpOworCisgICAgICAg
IC8vIERvbid0IGRlbGV0ZSBpbiB0aGUgcmVhbC10aW1lIHRocmVhZC4gTGV0IHRoZSBtYWluIHRo
cmVhZCBkbyBpdC4KKyAgICAgICAgLy8gUmVmLWNvdW50ZWQgb2JqZWN0cyBoZWxkIGJ5IGNlcnRh
aW4gQXVkaW9Ob2RlcyBtYXkgbm90IGJlIHRocmVhZC1zYWZlLgorICAgICAgICBzY2hlZHVsZU5v
ZGVEZWxldGlvbigpOworCisgICAgICAgIC8vIEZpeHVwIHRoZSBzdGF0ZSBvZiBhbnkgZGlydHkg
QXVkaW9TdW1taW5nSnVuY3Rpb25zIGFuZCBBdWRpb05vZGVPdXRwdXRzLgorICAgICAgICBoYW5k
bGVEaXJ0eUF1ZGlvU3VtbWluZ0p1bmN0aW9ucygpOworICAgICAgICBoYW5kbGVEaXJ0eUF1ZGlv
Tm9kZU91dHB1dHMoKTsKKworICAgICAgICB1cGRhdGVBdXRvbWF0aWNQdWxsTm9kZXMoKTsKKwor
ICAgICAgICBpZiAobXVzdFJlbGVhc2VMb2NrKQorICAgICAgICAgICAgdW5sb2NrKCk7CisgICAg
fQorfQorCit2b2lkIFdlYktpdEF1ZGlvQ29udGV4dDo6aGFuZGxlRGVmZXJyZWRGaW5pc2hEZXJl
ZnMoKQoreworICAgIEFTU0VSVChpc0F1ZGlvVGhyZWFkKCkgJiYgaXNHcmFwaE93bmVyKCkpOwor
ICAgIGZvciAoYXV0byYgbm9kZSA6IG1fZGVmZXJyZWRGaW5pc2hEZXJlZkxpc3QpCisgICAgICAg
IG5vZGUtPmZpbmlzaERlcmVmKEF1ZGlvTm9kZTo6UmVmVHlwZUNvbm5lY3Rpb24pOworCisgICAg
bV9kZWZlcnJlZEZpbmlzaERlcmVmTGlzdC5jbGVhcigpOworfQorCit2b2lkIFdlYktpdEF1ZGlv
Q29udGV4dDo6bWFya0ZvckRlbGV0aW9uKEF1ZGlvTm9kZSYgbm9kZSkKK3sKKyAgICBBU1NFUlQo
aXNHcmFwaE93bmVyKCkpOworCisgICAgaWYgKGlzQXVkaW9UaHJlYWRGaW5pc2hlZCgpKQorICAg
ICAgICBtX25vZGVzVG9EZWxldGUuYXBwZW5kKCZub2RlKTsKKyAgICBlbHNlCisgICAgICAgIG1f
bm9kZXNNYXJrZWRGb3JEZWxldGlvbi5hcHBlbmQoJm5vZGUpOworCisgICAgLy8gVGhpcyBpcyBw
cm9iYWJseSB0aGUgYmVzdCB0aW1lIGZvciB1cyB0byByZW1vdmUgdGhlIG5vZGUgZnJvbSBhdXRv
bWF0aWMgcHVsbCBsaXN0LAorICAgIC8vIHNpbmNlIGFsbCBjb25uZWN0aW9ucyBhcmUgZ29uZSBh
bmQgd2UgaG9sZCB0aGUgZ3JhcGggbG9jay4gVGhlbiB3aGVuIGhhbmRsZVBvc3RSZW5kZXJUYXNr
cygpCisgICAgLy8gZ2V0cyBhIGNoYW5jZSB0byBzY2hlZHVsZSB0aGUgZGVsZXRpb24gd29yaywg
dXBkYXRlQXV0b21hdGljUHVsbE5vZGVzKCkgYWxzbyBnZXRzIGEgY2hhbmNlIHRvCisgICAgLy8g
bW9kaWZ5IG1fcmVuZGVyaW5nQXV0b21hdGljUHVsbE5vZGVzLgorICAgIHJlbW92ZUF1dG9tYXRp
Y1B1bGxOb2RlKG5vZGUpOworfQorCit2b2lkIFdlYktpdEF1ZGlvQ29udGV4dDo6c2NoZWR1bGVO
b2RlRGVsZXRpb24oKQoreworICAgIGJvb2wgaXNHb29kID0gbV9pc0luaXRpYWxpemVkICYmIGlz
R3JhcGhPd25lcigpOworICAgIEFTU0VSVChpc0dvb2QpOworICAgIGlmICghaXNHb29kKQorICAg
ICAgICByZXR1cm47CisKKyAgICAvLyBNYWtlIHN1cmUgdG8gY2FsbCBkZWxldGVNYXJrZWROb2Rl
cygpIG9uIG1haW4gdGhyZWFkLgorICAgIGlmIChtX25vZGVzTWFya2VkRm9yRGVsZXRpb24uc2l6
ZSgpICYmICFtX2lzRGVsZXRpb25TY2hlZHVsZWQpIHsKKyAgICAgICAgbV9ub2Rlc1RvRGVsZXRl
LmFwcGVuZFZlY3RvcihtX25vZGVzTWFya2VkRm9yRGVsZXRpb24pOworICAgICAgICBtX25vZGVz
TWFya2VkRm9yRGVsZXRpb24uY2xlYXIoKTsKKworICAgICAgICBtX2lzRGVsZXRpb25TY2hlZHVs
ZWQgPSB0cnVlOworCisgICAgICAgIGNhbGxPbk1haW5UaHJlYWQoW3Byb3RlY3RlZFRoaXMgPSBt
YWtlUmVmKCp0aGlzKV0oKSBtdXRhYmxlIHsKKyAgICAgICAgICAgIHByb3RlY3RlZFRoaXMtPmRl
bGV0ZU1hcmtlZE5vZGVzKCk7CisgICAgICAgIH0pOworICAgIH0KK30KKwordm9pZCBXZWJLaXRB
dWRpb0NvbnRleHQ6OmRlbGV0ZU1hcmtlZE5vZGVzKCkKK3sKKyAgICBBU1NFUlQoaXNNYWluVGhy
ZWFkKCkpOworCisgICAgLy8gUHJvdGVjdCB0aGlzIG9iamVjdCBmcm9tIGJlaW5nIGRlbGV0ZWQg
YmVmb3JlIHdlIHJlbGVhc2UgdGhlIG11dGV4IGxvY2tlZCBieSBBdXRvTG9ja2VyLgorICAgIFJl
ZjxXZWJLaXRBdWRpb0NvbnRleHQ+IHByb3RlY3RlZFRoaXMoKnRoaXMpOworICAgIHsKKyAgICAg
ICAgQXV0b0xvY2tlciBsb2NrZXIoKnRoaXMpOworCisgICAgICAgIHdoaWxlIChtX25vZGVzVG9E
ZWxldGUuc2l6ZSgpKSB7CisgICAgICAgICAgICBBdWRpb05vZGUqIG5vZGUgPSBtX25vZGVzVG9E
ZWxldGUudGFrZUxhc3QoKTsKKworICAgICAgICAgICAgLy8gQmVmb3JlIGRlbGV0aW5nIHRoZSBu
b2RlLCBjbGVhciBvdXQgYW55IEF1ZGlvTm9kZUlucHV0cyBmcm9tIG1fZGlydHlTdW1taW5nSnVu
Y3Rpb25zLgorICAgICAgICAgICAgdW5zaWduZWQgbnVtYmVyT2ZJbnB1dHMgPSBub2RlLT5udW1i
ZXJPZklucHV0cygpOworICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG51bWJl
ck9mSW5wdXRzOyArK2kpCisgICAgICAgICAgICAgICAgbV9kaXJ0eVN1bW1pbmdKdW5jdGlvbnMu
cmVtb3ZlKG5vZGUtPmlucHV0KGkpKTsKKworICAgICAgICAgICAgLy8gQmVmb3JlIGRlbGV0aW5n
IHRoZSBub2RlLCBjbGVhciBvdXQgYW55IEF1ZGlvTm9kZU91dHB1dHMgZnJvbSBtX2RpcnR5QXVk
aW9Ob2RlT3V0cHV0cy4KKyAgICAgICAgICAgIHVuc2lnbmVkIG51bWJlck9mT3V0cHV0cyA9IG5v
ZGUtPm51bWJlck9mT3V0cHV0cygpOworICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsg
aSA8IG51bWJlck9mT3V0cHV0czsgKytpKQorICAgICAgICAgICAgICAgIG1fZGlydHlBdWRpb05v
ZGVPdXRwdXRzLnJlbW92ZShub2RlLT5vdXRwdXQoaSkpOworCisgICAgICAgICAgICAvLyBGaW5h
bGx5LCBkZWxldGUgaXQuCisgICAgICAgICAgICBkZWxldGUgbm9kZTsKKyAgICAgICAgfQorICAg
ICAgICBtX2lzRGVsZXRpb25TY2hlZHVsZWQgPSBmYWxzZTsKKyAgICB9Cit9CisKK3ZvaWQgV2Vi
S2l0QXVkaW9Db250ZXh0OjptYXJrU3VtbWluZ0p1bmN0aW9uRGlydHkoQXVkaW9TdW1taW5nSnVu
Y3Rpb24qIHN1bW1pbmdKdW5jdGlvbikKK3sKKyAgICBBU1NFUlQoaXNHcmFwaE93bmVyKCkpOwor
ICAgIG1fZGlydHlTdW1taW5nSnVuY3Rpb25zLmFkZChzdW1taW5nSnVuY3Rpb24pOworfQorCit2
b2lkIFdlYktpdEF1ZGlvQ29udGV4dDo6cmVtb3ZlTWFya2VkU3VtbWluZ0p1bmN0aW9uKEF1ZGlv
U3VtbWluZ0p1bmN0aW9uKiBzdW1taW5nSnVuY3Rpb24pCit7CisgICAgQVNTRVJUKGlzTWFpblRo
cmVhZCgpKTsKKyAgICBBdXRvTG9ja2VyIGxvY2tlcigqdGhpcyk7CisgICAgbV9kaXJ0eVN1bW1p
bmdKdW5jdGlvbnMucmVtb3ZlKHN1bW1pbmdKdW5jdGlvbik7Cit9CisKK3ZvaWQgV2ViS2l0QXVk
aW9Db250ZXh0OjptYXJrQXVkaW9Ob2RlT3V0cHV0RGlydHkoQXVkaW9Ob2RlT3V0cHV0KiBvdXRw
dXQpCit7CisgICAgQVNTRVJUKGlzR3JhcGhPd25lcigpKTsKKyAgICBtX2RpcnR5QXVkaW9Ob2Rl
T3V0cHV0cy5hZGQob3V0cHV0KTsKK30KKwordm9pZCBXZWJLaXRBdWRpb0NvbnRleHQ6OmhhbmRs
ZURpcnR5QXVkaW9TdW1taW5nSnVuY3Rpb25zKCkKK3sKKyAgICBBU1NFUlQoaXNHcmFwaE93bmVy
KCkpOworCisgICAgZm9yIChhdXRvJiBqdW5jdGlvbiA6IG1fZGlydHlTdW1taW5nSnVuY3Rpb25z
KQorICAgICAgICBqdW5jdGlvbi0+dXBkYXRlUmVuZGVyaW5nU3RhdGUoKTsKKworICAgIG1fZGly
dHlTdW1taW5nSnVuY3Rpb25zLmNsZWFyKCk7Cit9CisKK3ZvaWQgV2ViS2l0QXVkaW9Db250ZXh0
OjpoYW5kbGVEaXJ0eUF1ZGlvTm9kZU91dHB1dHMoKQoreworICAgIEFTU0VSVChpc0dyYXBoT3du
ZXIoKSk7CisKKyAgICBmb3IgKGF1dG8mIG91dHB1dCA6IG1fZGlydHlBdWRpb05vZGVPdXRwdXRz
KQorICAgICAgICBvdXRwdXQtPnVwZGF0ZVJlbmRlcmluZ1N0YXRlKCk7CisKKyAgICBtX2RpcnR5
QXVkaW9Ob2RlT3V0cHV0cy5jbGVhcigpOworfQorCit2b2lkIFdlYktpdEF1ZGlvQ29udGV4dDo6
YWRkQXV0b21hdGljUHVsbE5vZGUoQXVkaW9Ob2RlJiBub2RlKQoreworICAgIEFTU0VSVChpc0dy
YXBoT3duZXIoKSk7CisKKyAgICBpZiAobV9hdXRvbWF0aWNQdWxsTm9kZXMuYWRkKCZub2RlKS5p
c05ld0VudHJ5KQorICAgICAgICBtX2F1dG9tYXRpY1B1bGxOb2Rlc05lZWRVcGRhdGluZyA9IHRy
dWU7Cit9CisKK3ZvaWQgV2ViS2l0QXVkaW9Db250ZXh0OjpyZW1vdmVBdXRvbWF0aWNQdWxsTm9k
ZShBdWRpb05vZGUmIG5vZGUpCit7CisgICAgQVNTRVJUKGlzR3JhcGhPd25lcigpKTsKKworICAg
IGlmIChtX2F1dG9tYXRpY1B1bGxOb2Rlcy5yZW1vdmUoJm5vZGUpKQorICAgICAgICBtX2F1dG9t
YXRpY1B1bGxOb2Rlc05lZWRVcGRhdGluZyA9IHRydWU7Cit9CisKK3ZvaWQgV2ViS2l0QXVkaW9D
b250ZXh0Ojp1cGRhdGVBdXRvbWF0aWNQdWxsTm9kZXMoKQoreworICAgIEFTU0VSVChpc0dyYXBo
T3duZXIoKSk7CisKKyAgICBpZiAobV9hdXRvbWF0aWNQdWxsTm9kZXNOZWVkVXBkYXRpbmcpIHsK
KyAgICAgICAgLy8gQ29weSBmcm9tIG1fYXV0b21hdGljUHVsbE5vZGVzIHRvIG1fcmVuZGVyaW5n
QXV0b21hdGljUHVsbE5vZGVzLgorICAgICAgICBtX3JlbmRlcmluZ0F1dG9tYXRpY1B1bGxOb2Rl
cy5yZXNpemUobV9hdXRvbWF0aWNQdWxsTm9kZXMuc2l6ZSgpKTsKKworICAgICAgICB1bnNpZ25l
ZCBpID0gMDsKKyAgICAgICAgZm9yIChhdXRvJiBvdXRwdXQgOiBtX2F1dG9tYXRpY1B1bGxOb2Rl
cykKKyAgICAgICAgICAgIG1fcmVuZGVyaW5nQXV0b21hdGljUHVsbE5vZGVzW2krK10gPSBvdXRw
dXQ7CisKKyAgICAgICAgbV9hdXRvbWF0aWNQdWxsTm9kZXNOZWVkVXBkYXRpbmcgPSBmYWxzZTsK
KyAgICB9Cit9CisKK3ZvaWQgV2ViS2l0QXVkaW9Db250ZXh0Ojpwcm9jZXNzQXV0b21hdGljUHVs
bE5vZGVzKHNpemVfdCBmcmFtZXNUb1Byb2Nlc3MpCit7CisgICAgQVNTRVJUKGlzQXVkaW9UaHJl
YWQoKSk7CisKKyAgICBmb3IgKGF1dG8mIG5vZGUgOiBtX3JlbmRlcmluZ0F1dG9tYXRpY1B1bGxO
b2RlcykKKyAgICAgICAgbm9kZS0+cHJvY2Vzc0lmTmVjZXNzYXJ5KGZyYW1lc1RvUHJvY2Vzcyk7
Cit9CisKK1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIFdlYktpdEF1ZGlvQ29udGV4dDo6c2NyaXB0
RXhlY3V0aW9uQ29udGV4dCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIEFjdGl2ZURPTU9iamVjdDo6
c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOworfQorCit2b2lkIFdlYktpdEF1ZGlvQ29udGV4dDo6
bm9kZVdpbGxCZWdpblBsYXliYWNrKCkKK3sKKyAgICAvLyBDYWxsZWQgYnkgc2NoZWR1bGVkIEF1
ZGlvTm9kZXMgd2hlbiBjbGllbnRzIHNjaGVkdWxlIHRoZWlyIHN0YXJ0IHRpbWVzLgorICAgIC8v
IFByaW9yIHRvIHRoZSBpbnRyb2R1Y3Rpb24gb2Ygc3VzcGVuZCgpLCByZXN1bWUoKSwgYW5kIHN0
b3AoKSwgc3RhcnRpbmcKKyAgICAvLyBhIHNjaGVkdWxlZCBBdWRpb05vZGUgd291bGQgcmVtb3Zl
IHRoZSB1c2VyLWdlc3R1cmUgcmVzdHJpY3Rpb24sIGlmIHByZXNlbnQsCisgICAgLy8gYW5kIHdv
dWxkIHRodXMgdW5tdXRlIHRoZSBjb250ZXh0LiBOb3cgdGhhdCBBdWRpb0NvbnRleHQgc3RheXMg
aW4gdGhlCisgICAgLy8gInN1c3BlbmRlZCIgc3RhdGUgaWYgYSB1c2VyLWdlc3R1cmUgcmVzdHJp
Y3Rpb24gaXMgcHJlc2VudCwgc3RhcnRpbmcgYQorICAgIC8vIHNjaGVkdWxlIEF1ZGlvTm9kZSBz
aG91bGQgc2V0IHRoZSBzdGF0ZSB0byAicnVubmluZyIsIGJ1dCBvbmx5IGlmIHRoZQorICAgIC8v
IHVzZXItZ2VzdHVyZSByZXN0cmljdGlvbiBpcyBzZXQuCisgICAgaWYgKHVzZXJHZXN0dXJlUmVx
dWlyZWRGb3JBdWRpb1N0YXJ0KCkpCisgICAgICAgIHN0YXJ0UmVuZGVyaW5nKCk7Cit9CisKK3N0
YXRpYyBib29sIHNob3VsZERvY3VtZW50QWxsb3dXZWJBdWRpb1RvQXV0b1BsYXkoY29uc3QgRG9j
dW1lbnQmIGRvY3VtZW50KQoreworICAgIGlmIChkb2N1bWVudC5wcm9jZXNzaW5nVXNlckdlc3R1
cmVGb3JNZWRpYSgpIHx8IGRvY3VtZW50LmlzQ2FwdHVyaW5nKCkpCisgICAgICAgIHJldHVybiB0
cnVlOworICAgIHJldHVybiBkb2N1bWVudC5xdWlya3MoKS5zaG91bGRBdXRvcGxheVdlYkF1ZGlv
Rm9yQXJiaXRyYXJ5VXNlckdlc3R1cmUoKSAmJiBkb2N1bWVudC50b3BEb2N1bWVudCgpLmhhc0hh
ZFVzZXJJbnRlcmFjdGlvbigpOworfQorCitib29sIFdlYktpdEF1ZGlvQ29udGV4dDo6d2lsbEJl
Z2luUGxheWJhY2soKQoreworICAgIGF1dG8qIGRvY3VtZW50ID0gdGhpcy0+ZG9jdW1lbnQoKTsK
KyAgICBpZiAoIWRvY3VtZW50KQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBpZiAodXNl
ckdlc3R1cmVSZXF1aXJlZEZvckF1ZGlvU3RhcnQoKSkgeworICAgICAgICBpZiAoIXNob3VsZERv
Y3VtZW50QWxsb3dXZWJBdWRpb1RvQXV0b1BsYXkoKmRvY3VtZW50KSkgeworICAgICAgICAgICAg
QUxXQVlTX0xPRyhMT0dJREVOVElGSUVSLCAicmV0dXJuaW5nIGZhbHNlLCBub3QgcHJvY2Vzc2lu
ZyB1c2VyIGdlc3R1cmUgb3IgY2FwdHVyaW5nIik7CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7
CisgICAgICAgIH0KKyAgICAgICAgcmVtb3ZlQmVoYXZpb3JSZXN0cmljdGlvbihXZWJLaXRBdWRp
b0NvbnRleHQ6OlJlcXVpcmVVc2VyR2VzdHVyZUZvckF1ZGlvU3RhcnRSZXN0cmljdGlvbik7Cisg
ICAgfQorCisgICAgaWYgKHBhZ2VDb25zZW50UmVxdWlyZWRGb3JBdWRpb1N0YXJ0KCkpIHsKKyAg
ICAgICAgYXV0byogcGFnZSA9IGRvY3VtZW50LT5wYWdlKCk7CisgICAgICAgIGlmIChwYWdlICYm
ICFwYWdlLT5jYW5TdGFydE1lZGlhKCkpIHsKKyAgICAgICAgICAgIGRvY3VtZW50LT5hZGRNZWRp
YUNhblN0YXJ0TGlzdGVuZXIoKnRoaXMpOworICAgICAgICAgICAgQUxXQVlTX0xPRyhMT0dJREVO
VElGSUVSLCAicmV0dXJuaW5nIGZhbHNlLCBwYWdlIGRvZXNuJ3QgYWxsb3cgbWVkaWEgdG8gc3Rh
cnQiKTsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorICAgICAgICByZW1v
dmVCZWhhdmlvclJlc3RyaWN0aW9uKFdlYktpdEF1ZGlvQ29udGV4dDo6UmVxdWlyZVBhZ2VDb25z
ZW50Rm9yQXVkaW9TdGFydFJlc3RyaWN0aW9uKTsKKyAgICB9CisKKyAgICBhdXRvIHdpbGxCZWdp
biA9IG1fbWVkaWFTZXNzaW9uLT5jbGllbnRXaWxsQmVnaW5QbGF5YmFjaygpOworICAgIEFMV0FZ
U19MT0coTE9HSURFTlRJRklFUiwgInJldHVybmluZyAiLCB3aWxsQmVnaW4pOworCisgICAgcmV0
dXJuIHdpbGxCZWdpbjsKK30KKworYm9vbCBXZWJLaXRBdWRpb0NvbnRleHQ6OndpbGxQYXVzZVBs
YXliYWNrKCkKK3sKKyAgICBhdXRvKiBkb2N1bWVudCA9IHRoaXMtPmRvY3VtZW50KCk7CisgICAg
aWYgKCFkb2N1bWVudCkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgaWYgKHVzZXJHZXN0
dXJlUmVxdWlyZWRGb3JBdWRpb1N0YXJ0KCkpIHsKKyAgICAgICAgaWYgKCFkb2N1bWVudC0+cHJv
Y2Vzc2luZ1VzZXJHZXN0dXJlRm9yTWVkaWEoKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
KyAgICAgICAgcmVtb3ZlQmVoYXZpb3JSZXN0cmljdGlvbihXZWJLaXRBdWRpb0NvbnRleHQ6OlJl
cXVpcmVVc2VyR2VzdHVyZUZvckF1ZGlvU3RhcnRSZXN0cmljdGlvbik7CisgICAgfQorCisgICAg
aWYgKHBhZ2VDb25zZW50UmVxdWlyZWRGb3JBdWRpb1N0YXJ0KCkpIHsKKyAgICAgICAgYXV0byog
cGFnZSA9IGRvY3VtZW50LT5wYWdlKCk7CisgICAgICAgIGlmIChwYWdlICYmICFwYWdlLT5jYW5T
dGFydE1lZGlhKCkpIHsKKyAgICAgICAgICAgIGRvY3VtZW50LT5hZGRNZWRpYUNhblN0YXJ0TGlz
dGVuZXIoKnRoaXMpOworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisgICAg
ICAgIHJlbW92ZUJlaGF2aW9yUmVzdHJpY3Rpb24oV2ViS2l0QXVkaW9Db250ZXh0OjpSZXF1aXJl
UGFnZUNvbnNlbnRGb3JBdWRpb1N0YXJ0UmVzdHJpY3Rpb24pOworICAgIH0KKworICAgIHJldHVy
biBtX21lZGlhU2Vzc2lvbi0+Y2xpZW50V2lsbFBhdXNlUGxheWJhY2soKTsKK30KKwordm9pZCBX
ZWJLaXRBdWRpb0NvbnRleHQ6OnN0YXJ0UmVuZGVyaW5nKCkKK3sKKyAgICBBTFdBWVNfTE9HKExP
R0lERU5USUZJRVIpOworICAgIGlmIChtX2lzU3RvcFNjaGVkdWxlZCB8fCAhd2lsbEJlZ2luUGxh
eWJhY2soKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgbWFrZVBlbmRpbmdBY3Rpdml0eSgpOwor
CisgICAgZGVzdGluYXRpb24oKS0+c3RhcnRSZW5kZXJpbmcoKTsKKyAgICBzZXRTdGF0ZShTdGF0
ZTo6UnVubmluZyk7Cit9CisKK3ZvaWQgV2ViS2l0QXVkaW9Db250ZXh0OjptZWRpYUNhblN0YXJ0
KERvY3VtZW50JiBkb2N1bWVudCkKK3sKKyAgICBBU1NFUlRfVU5VU0VEKGRvY3VtZW50LCAmZG9j
dW1lbnQgPT0gdGhpcy0+ZG9jdW1lbnQoKSk7CisgICAgcmVtb3ZlQmVoYXZpb3JSZXN0cmljdGlv
bihXZWJLaXRBdWRpb0NvbnRleHQ6OlJlcXVpcmVQYWdlQ29uc2VudEZvckF1ZGlvU3RhcnRSZXN0
cmljdGlvbik7CisgICAgbWF5UmVzdW1lUGxheWJhY2sodHJ1ZSk7Cit9CisKK01lZGlhUHJvZHVj
ZXI6Ok1lZGlhU3RhdGVGbGFncyBXZWJLaXRBdWRpb0NvbnRleHQ6Om1lZGlhU3RhdGUoKSBjb25z
dAoreworICAgIGlmICghbV9pc1N0b3BTY2hlZHVsZWQgJiYgbV9kZXN0aW5hdGlvbk5vZGUgJiYg
bV9kZXN0aW5hdGlvbk5vZGUtPmlzUGxheWluZ0F1ZGlvKCkpCisgICAgICAgIHJldHVybiBNZWRp
YVByb2R1Y2VyOjpJc1BsYXlpbmdBdWRpbzsKKworICAgIHJldHVybiBNZWRpYVByb2R1Y2VyOjpJ
c05vdFBsYXlpbmc7Cit9CisKK3ZvaWQgV2ViS2l0QXVkaW9Db250ZXh0OjpwYWdlTXV0ZWRTdGF0
ZURpZENoYW5nZSgpCit7CisgICAgaWYgKG1fZGVzdGluYXRpb25Ob2RlICYmIGRvY3VtZW50KCkg
JiYgZG9jdW1lbnQoKS0+cGFnZSgpKQorICAgICAgICBtX2Rlc3RpbmF0aW9uTm9kZS0+c2V0TXV0
ZWQoZG9jdW1lbnQoKS0+cGFnZSgpLT5pc0F1ZGlvTXV0ZWQoKSk7Cit9CisKK3ZvaWQgV2ViS2l0
QXVkaW9Db250ZXh0Ojppc1BsYXlpbmdBdWRpb0RpZENoYW5nZSgpCit7CisgICAgLy8gTWFrZSBz
dXJlIHRvIGNhbGwgRG9jdW1lbnQ6OnVwZGF0ZUlzUGxheWluZ01lZGlhKCkgb24gdGhlIG1haW4g
dGhyZWFkLCBzaW5jZQorICAgIC8vIHdlIGNvdWxkIGJlIG9uIHRoZSBhdWRpbyBJL08gdGhyZWFk
IGhlcmUgYW5kIHRoZSBjYWxsIGludG8gV2ViQ29yZSBjb3VsZCBibG9jay4KKyAgICBjYWxsT25N
YWluVGhyZWFkKFtwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyldIHsKKyAgICAgICAgaWYg
KHByb3RlY3RlZFRoaXMtPmRvY3VtZW50KCkpCisgICAgICAgICAgICBwcm90ZWN0ZWRUaGlzLT5k
b2N1bWVudCgpLT51cGRhdGVJc1BsYXlpbmdNZWRpYSgpOworICAgIH0pOworfQorCit2b2lkIFdl
YktpdEF1ZGlvQ29udGV4dDo6ZmluaXNoZWRSZW5kZXJpbmcoYm9vbCBkaWRSZW5kZXJpbmcpCit7
CisgICAgQVNTRVJUKGlzT2ZmbGluZUNvbnRleHQoKSk7CisgICAgQVNTRVJUKGlzTWFpblRocmVh
ZCgpKTsKKyAgICBpZiAoIWlzTWFpblRocmVhZCgpKQorICAgICAgICByZXR1cm47CisKKyAgICBh
dXRvIGNsZWFyUGVuZGluZ0FjdGl2aXR5SWZFeGl0RWFybHkgPSBXVEY6Om1ha2VTY29wZUV4aXQo
W3RoaXNdIHsKKyAgICAgICAgY2xlYXJQZW5kaW5nQWN0aXZpdHkoKTsKKyAgICB9KTsKKworCisg
ICAgQUxXQVlTX0xPRyhMT0dJREVOVElGSUVSKTsKKworICAgIGlmICghZGlkUmVuZGVyaW5nKQor
ICAgICAgICByZXR1cm47CisKKyAgICBBdWRpb0J1ZmZlciogcmVuZGVyZWRCdWZmZXIgPSBtX3Jl
bmRlclRhcmdldC5nZXQoKTsKKyAgICBzZXRTdGF0ZShTdGF0ZTo6Q2xvc2VkKTsKKworICAgIEFT
U0VSVChyZW5kZXJlZEJ1ZmZlcik7CisgICAgaWYgKCFyZW5kZXJlZEJ1ZmZlcikKKyAgICAgICAg
cmV0dXJuOworCisgICAgLy8gQXZvaWQgZmlyaW5nIHRoZSBldmVudCBpZiB0aGUgZG9jdW1lbnQg
aGFzIGFscmVhZHkgZ29uZSBhd2F5LgorICAgIGlmIChtX2lzU3RvcFNjaGVkdWxlZCkKKyAgICAg
ICAgcmV0dXJuOworCisgICAgY2xlYXJQZW5kaW5nQWN0aXZpdHlJZkV4aXRFYXJseS5yZWxlYXNl
KCk7CisgICAgbV9ldmVudFF1ZXVlLT5lbnF1ZXVlRXZlbnQoT2ZmbGluZUF1ZGlvQ29tcGxldGlv
bkV2ZW50OjpjcmVhdGUocmVuZGVyZWRCdWZmZXIpKTsKK30KKwordm9pZCBXZWJLaXRBdWRpb0Nv
bnRleHQ6OmRpc3BhdGNoRXZlbnQoRXZlbnQmIGV2ZW50KQoreworICAgIEV2ZW50VGFyZ2V0Ojpk
aXNwYXRjaEV2ZW50KGV2ZW50KTsKKyAgICBpZiAoZXZlbnQuZXZlbnRJbnRlcmZhY2UoKSA9PSBP
ZmZsaW5lQXVkaW9Db21wbGV0aW9uRXZlbnRJbnRlcmZhY2VUeXBlKQorICAgICAgICBjbGVhclBl
bmRpbmdBY3Rpdml0eSgpOworfQorCit2b2lkIFdlYktpdEF1ZGlvQ29udGV4dDo6aW5jcmVtZW50
QWN0aXZlU291cmNlQ291bnQoKQoreworICAgICsrbV9hY3RpdmVTb3VyY2VDb3VudDsKK30KKwor
dm9pZCBXZWJLaXRBdWRpb0NvbnRleHQ6OmRlY3JlbWVudEFjdGl2ZVNvdXJjZUNvdW50KCkKK3sK
KyAgICAtLW1fYWN0aXZlU291cmNlQ291bnQ7Cit9CisKK3ZvaWQgV2ViS2l0QXVkaW9Db250ZXh0
OjpzdXNwZW5kUmVuZGVyaW5nKERPTVByb21pc2VEZWZlcnJlZDx2b2lkPiYmIHByb21pc2UpCit7
CisgICAgaWYgKGlzT2ZmbGluZUNvbnRleHQoKSB8fCBtX2lzU3RvcFNjaGVkdWxlZCkgeworICAg
ICAgICBwcm9taXNlLnJlamVjdChJbnZhbGlkU3RhdGVFcnJvcik7CisgICAgICAgIHJldHVybjsK
KyAgICB9CisKKyAgICBpZiAobV9zdGF0ZSA9PSBTdGF0ZTo6U3VzcGVuZGVkKSB7CisgICAgICAg
IHByb21pc2UucmVzb2x2ZSgpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgaWYgKG1f
c3RhdGUgPT0gU3RhdGU6OkNsb3NlZCB8fCBtX3N0YXRlID09IFN0YXRlOjpJbnRlcnJ1cHRlZCB8
fCAhbV9kZXN0aW5hdGlvbk5vZGUpIHsKKyAgICAgICAgcHJvbWlzZS5yZWplY3QoKTsKKyAgICAg
ICAgcmV0dXJuOworICAgIH0KKworICAgIGFkZFJlYWN0aW9uKFN0YXRlOjpTdXNwZW5kZWQsIFdU
Rk1vdmUocHJvbWlzZSkpOworCisgICAgaWYgKCF3aWxsUGF1c2VQbGF5YmFjaygpKQorICAgICAg
ICByZXR1cm47CisKKyAgICBsYXp5SW5pdGlhbGl6ZSgpOworCisgICAgbV9kZXN0aW5hdGlvbk5v
ZGUtPnN1c3BlbmQoW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKV0geworICAg
ICAgICBzZXRTdGF0ZShTdGF0ZTo6U3VzcGVuZGVkKTsKKyAgICB9KTsKK30KKwordm9pZCBXZWJL
aXRBdWRpb0NvbnRleHQ6OnJlc3VtZVJlbmRlcmluZyhET01Qcm9taXNlRGVmZXJyZWQ8dm9pZD4m
JiBwcm9taXNlKQoreworICAgIGlmIChpc09mZmxpbmVDb250ZXh0KCkgfHwgbV9pc1N0b3BTY2hl
ZHVsZWQpIHsKKyAgICAgICAgcHJvbWlzZS5yZWplY3QoSW52YWxpZFN0YXRlRXJyb3IpOworICAg
ICAgICByZXR1cm47CisgICAgfQorCisgICAgaWYgKG1fc3RhdGUgPT0gU3RhdGU6OlJ1bm5pbmcp
IHsKKyAgICAgICAgcHJvbWlzZS5yZXNvbHZlKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisK
KyAgICBpZiAobV9zdGF0ZSA9PSBTdGF0ZTo6Q2xvc2VkIHx8ICFtX2Rlc3RpbmF0aW9uTm9kZSkg
eworICAgICAgICBwcm9taXNlLnJlamVjdCgpOworICAgICAgICByZXR1cm47CisgICAgfQorCisg
ICAgYWRkUmVhY3Rpb24oU3RhdGU6OlJ1bm5pbmcsIFdURk1vdmUocHJvbWlzZSkpOworCisgICAg
aWYgKCF3aWxsQmVnaW5QbGF5YmFjaygpKQorICAgICAgICByZXR1cm47CisKKyAgICBsYXp5SW5p
dGlhbGl6ZSgpOworCisgICAgbV9kZXN0aW5hdGlvbk5vZGUtPnJlc3VtZShbdGhpcywgcHJvdGVj
dGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpXSB7CisgICAgICAgIHNldFN0YXRlKFN0YXRlOjpSdW5u
aW5nKTsKKyAgICB9KTsKK30KKwordm9pZCBXZWJLaXRBdWRpb0NvbnRleHQ6OmNsb3NlKERPTVBy
b21pc2VEZWZlcnJlZDx2b2lkPiYmIHByb21pc2UpCit7CisgICAgaWYgKGlzT2ZmbGluZUNvbnRl
eHQoKSB8fCBtX2lzU3RvcFNjaGVkdWxlZCkgeworICAgICAgICBwcm9taXNlLnJlamVjdChJbnZh
bGlkU3RhdGVFcnJvcik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpZiAobV9zdGF0
ZSA9PSBTdGF0ZTo6Q2xvc2VkIHx8ICFtX2Rlc3RpbmF0aW9uTm9kZSkgeworICAgICAgICBwcm9t
aXNlLnJlc29sdmUoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGFkZFJlYWN0aW9u
KFN0YXRlOjpDbG9zZWQsIFdURk1vdmUocHJvbWlzZSkpOworCisgICAgbGF6eUluaXRpYWxpemUo
KTsKKworICAgIG1fZGVzdGluYXRpb25Ob2RlLT5jbG9zZShbdGhpcywgcHJvdGVjdGVkVGhpcyA9
IG1ha2VSZWYoKnRoaXMpXSB7CisgICAgICAgIHNldFN0YXRlKFN0YXRlOjpDbG9zZWQpOworICAg
ICAgICB1bmluaXRpYWxpemUoKTsKKyAgICB9KTsKK30KKworCit2b2lkIFdlYktpdEF1ZGlvQ29u
dGV4dDo6c3VzcGVuZFBsYXliYWNrKCkKK3sKKyAgICBpZiAoIW1fZGVzdGluYXRpb25Ob2RlIHx8
IG1fc3RhdGUgPT0gU3RhdGU6OkNsb3NlZCkKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKG1f
c3RhdGUgPT0gU3RhdGU6OlN1c3BlbmRlZCkgeworICAgICAgICBpZiAobV9tZWRpYVNlc3Npb24t
PnN0YXRlKCkgPT0gUGxhdGZvcm1NZWRpYVNlc3Npb246OkludGVycnVwdGVkKQorICAgICAgICAg
ICAgc2V0U3RhdGUoU3RhdGU6OkludGVycnVwdGVkKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0K
KworICAgIGxhenlJbml0aWFsaXplKCk7CisKKyAgICBtX2Rlc3RpbmF0aW9uTm9kZS0+c3VzcGVu
ZChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpXSB7CisgICAgICAgIGJvb2wg
aW50ZXJydXB0ZWQgPSBtX21lZGlhU2Vzc2lvbi0+c3RhdGUoKSA9PSBQbGF0Zm9ybU1lZGlhU2Vz
c2lvbjo6SW50ZXJydXB0ZWQ7CisgICAgICAgIHNldFN0YXRlKGludGVycnVwdGVkID8gU3RhdGU6
OkludGVycnVwdGVkIDogU3RhdGU6OlN1c3BlbmRlZCk7CisgICAgfSk7Cit9CisKK3ZvaWQgV2Vi
S2l0QXVkaW9Db250ZXh0OjptYXlSZXN1bWVQbGF5YmFjayhib29sIHNob3VsZFJlc3VtZSkKK3sK
KyAgICBpZiAoIW1fZGVzdGluYXRpb25Ob2RlIHx8IG1fc3RhdGUgPT0gU3RhdGU6OkNsb3NlZCB8
fCBtX3N0YXRlID09IFN0YXRlOjpSdW5uaW5nKQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAo
IXNob3VsZFJlc3VtZSkgeworICAgICAgICBzZXRTdGF0ZShTdGF0ZTo6U3VzcGVuZGVkKTsKKyAg
ICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlmICghd2lsbEJlZ2luUGxheWJhY2soKSkKKyAg
ICAgICAgcmV0dXJuOworCisgICAgbGF6eUluaXRpYWxpemUoKTsKKworICAgIG1fZGVzdGluYXRp
b25Ob2RlLT5yZXN1bWUoW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKV0gewor
ICAgICAgICBzZXRTdGF0ZShTdGF0ZTo6UnVubmluZyk7CisgICAgfSk7Cit9CisKK3ZvaWQgV2Vi
S2l0QXVkaW9Db250ZXh0Ojpwb3N0VGFzayhXVEY6OkZ1bmN0aW9uPHZvaWQoKT4mJiB0YXNrKQor
eworICAgIGlmIChtX2lzU3RvcFNjaGVkdWxlZCkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9z
Y3JpcHRFeGVjdXRpb25Db250ZXh0LT5wb3N0VGFzayhXVEZNb3ZlKHRhc2spKTsKK30KKworY29u
c3QgU2VjdXJpdHlPcmlnaW4qIFdlYktpdEF1ZGlvQ29udGV4dDo6b3JpZ2luKCkgY29uc3QKK3sK
KyAgICByZXR1cm4gbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0ID8gbV9zY3JpcHRFeGVjdXRpb25D
b250ZXh0LT5zZWN1cml0eU9yaWdpbigpIDogbnVsbHB0cjsKK30KKwordm9pZCBXZWJLaXRBdWRp
b0NvbnRleHQ6OmFkZENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VTb3VyY2Ugc291cmNlLCBNZXNzYWdl
TGV2ZWwgbGV2ZWwsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKK3sKKyAgICBpZiAobV9zY3JpcHRF
eGVjdXRpb25Db250ZXh0KQorICAgICAgICBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPmFkZENv
bnNvbGVNZXNzYWdlKHNvdXJjZSwgbGV2ZWwsIG1lc3NhZ2UpOworfQorCit2b2lkIFdlYktpdEF1
ZGlvQ29udGV4dDo6Y2xlYXJQZW5kaW5nQWN0aXZpdHkoKQoreworICAgIGlmICghbV9wZW5kaW5n
QWN0aXZpdHkpCisgICAgICAgIHJldHVybjsKKyAgICBtX3BlbmRpbmdBY3Rpdml0eSA9IG51bGxw
dHI7CisgICAgLy8gRklYTUU6IFJlbW92ZSB0aGlzIHNwZWNpZmljIGRlcmVmKCkgYW5kIHJlZigp
IGNhbGwgaW4gbWFrZVBlbmRpbmdBY3Rpdml0eSgpLgorICAgIGRlcmVmKCk7Cit9CisKK3ZvaWQg
V2ViS2l0QXVkaW9Db250ZXh0OjptYWtlUGVuZGluZ0FjdGl2aXR5KCkKK3sKKyAgICBpZiAobV9w
ZW5kaW5nQWN0aXZpdHkpCisgICAgICAgIHJldHVybjsKKyAgICBtX3BlbmRpbmdBY3Rpdml0eSA9
IEFjdGl2ZURPTU9iamVjdDo6bWFrZVBlbmRpbmdBY3Rpdml0eSgqdGhpcyk7CisgICAgcmVmKCk7
Cit9CisKKyNpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKK1dURkxvZ0NoYW5uZWwmIFdlYktpdEF1
ZGlvQ29udGV4dDo6bG9nQ2hhbm5lbCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIExvZ01lZGlhOwor
fQorI2VuZGlmCisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShX
RUJfQVVESU8pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1dl
YktpdEF1ZGlvQ29udGV4dC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9XZWJL
aXRBdWRpb0NvbnRleHQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4u
NWE0NmZiMjgwYmMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmF1ZGlvL1dlYktpdEF1ZGlvQ29udGV4dC5oCkBAIC0wLDAgKzEsNDY3IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTYtMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiAgUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQK
KyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TgorICogQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTCisgKiBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkFjdGl2ZURPTU9iamVjdC5oIgorI2luY2x1
ZGUgIkFzeW5jQXVkaW9EZWNvZGVyLmgiCisjaW5jbHVkZSAiQXVkaW9CdXMuaCIKKyNpbmNsdWRl
ICJBdWRpb0NvbnRleHRTdGF0ZS5oIgorI2luY2x1ZGUgIkF1ZGlvRGVzdGluYXRpb25Ob2RlLmgi
CisjaW5jbHVkZSAiRXZlbnRUYXJnZXQuaCIKKyNpbmNsdWRlICJNZWRpYUNhblN0YXJ0TGlzdGVu
ZXIuaCIKKyNpbmNsdWRlICJNZWRpYVByb2R1Y2VyLmgiCisjaW5jbHVkZSAiUGxhdGZvcm1NZWRp
YVNlc3Npb24uaCIKKyNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCisjaW5jbHVk
ZSAiVmlzaWJpbGl0eUNoYW5nZUNsaWVudC5oIgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0Nv
bnNvbGVUeXBlcy5oPgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0Zsb2F0MzJBcnJheS5oPgor
I2luY2x1ZGUgPGF0b21pYz4KKyNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgorI2luY2x1ZGUgPHd0
Zi9Mb2dnZXJIZWxwZXIuaD4KKyNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgorI2luY2x1ZGUg
PHd0Zi9SZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYvVGhyZWFkU2FmZVJlZkNvdW50ZWQuaD4KKyNp
bmNsdWRlIDx3dGYvVGhyZWFkaW5nLmg+CisjaW5jbHVkZSA8d3RmL1VuaXF1ZVJlZi5oPgorI2lu
Y2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9BdG9tU3RyaW5nSGFzaC5o
PgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIEFuYWx5c2VyTm9kZTsKK2NsYXNzIEF1
ZGlvQnVmZmVyOworY2xhc3MgQXVkaW9CdWZmZXJDYWxsYmFjazsKK2NsYXNzIEF1ZGlvQnVmZmVy
U291cmNlTm9kZTsKK2NsYXNzIEF1ZGlvTGlzdGVuZXI7CitjbGFzcyBBdWRpb1N1bW1pbmdKdW5j
dGlvbjsKK2NsYXNzIEJpcXVhZEZpbHRlck5vZGU7CitjbGFzcyBDaGFubmVsTWVyZ2VyTm9kZTsK
K2NsYXNzIENoYW5uZWxTcGxpdHRlck5vZGU7CitjbGFzcyBDb252b2x2ZXJOb2RlOworY2xhc3Mg
RGVsYXlOb2RlOworY2xhc3MgRG9jdW1lbnQ7CitjbGFzcyBEeW5hbWljc0NvbXByZXNzb3JOb2Rl
OworY2xhc3MgR2Fpbk5vZGU7CitjbGFzcyBIVE1MTWVkaWFFbGVtZW50OworY2xhc3MgTWFpblRo
cmVhZEdlbmVyaWNFdmVudFF1ZXVlOworY2xhc3MgTWVkaWFFbGVtZW50QXVkaW9Tb3VyY2VOb2Rl
OworY2xhc3MgTWVkaWFTdHJlYW07CitjbGFzcyBNZWRpYVN0cmVhbUF1ZGlvRGVzdGluYXRpb25O
b2RlOworY2xhc3MgTWVkaWFTdHJlYW1BdWRpb1NvdXJjZU5vZGU7CitjbGFzcyBPc2NpbGxhdG9y
Tm9kZTsKK2NsYXNzIFBhbm5lck5vZGU7CitjbGFzcyBQZXJpb2RpY1dhdmU7CitjbGFzcyBTY3Jp
cHRQcm9jZXNzb3JOb2RlOworY2xhc3MgU2VjdXJpdHlPcmlnaW47CitjbGFzcyBXYXZlU2hhcGVy
Tm9kZTsKKwordGVtcGxhdGU8dHlwZW5hbWUgSURMVHlwZT4gY2xhc3MgRE9NUHJvbWlzZURlZmVy
cmVkOworCisvLyBBdWRpb0NvbnRleHQgaXMgdGhlIGNvcm5lcnN0b25lIG9mIHRoZSB3ZWIgYXVk
aW8gQVBJIGFuZCBhbGwgQXVkaW9Ob2RlcyBhcmUgY3JlYXRlZCBmcm9tIGl0LgorLy8gRm9yIHRo
cmVhZCBzYWZldHkgYmV0d2VlbiB0aGUgYXVkaW8gdGhyZWFkIGFuZCB0aGUgbWFpbiB0aHJlYWQs
IGl0IGhhcyBhIHJlbmRlcmluZyBncmFwaCBsb2NraW5nIG1lY2hhbmlzbS4KKworY2xhc3MgV2Vi
S2l0QXVkaW9Db250ZXh0CisgICAgOiBwdWJsaWMgQWN0aXZlRE9NT2JqZWN0CisgICAgLCBwdWJs
aWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8V2ViS2l0QXVkaW9Db250ZXh0PgorICAgICwgcHVibGlj
IEV2ZW50VGFyZ2V0V2l0aElubGluZURhdGEKKyAgICAsIHB1YmxpYyBNZWRpYUNhblN0YXJ0TGlz
dGVuZXIKKyAgICAsIHB1YmxpYyBNZWRpYVByb2R1Y2VyCisgICAgLCBwcml2YXRlIFBsYXRmb3Jt
TWVkaWFTZXNzaW9uQ2xpZW50CisgICAgLCBwcml2YXRlIFZpc2liaWxpdHlDaGFuZ2VDbGllbnQK
KyNpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKKyAgICAsIHByaXZhdGUgTG9nZ2VySGVscGVyCisj
ZW5kaWYKK3sKKyAgICBXVEZfTUFLRV9JU09fQUxMT0NBVEVEKFdlYktpdEF1ZGlvQ29udGV4dCk7
CitwdWJsaWM6CisgICAgLy8gQ3JlYXRlIGFuIFdlYktpdEF1ZGlvQ29udGV4dCBmb3IgcmVuZGVy
aW5nIHRvIHRoZSBhdWRpbyBoYXJkd2FyZS4KKyAgICBzdGF0aWMgRXhjZXB0aW9uT3I8UmVmPFdl
YktpdEF1ZGlvQ29udGV4dD4+IGNyZWF0ZShEb2N1bWVudCYpOworCisgICAgdmlydHVhbCB+V2Vi
S2l0QXVkaW9Db250ZXh0KCk7CisKKyAgICBib29sIGlzSW5pdGlhbGl6ZWQoKSBjb25zdDsKKwor
ICAgIGJvb2wgaXNPZmZsaW5lQ29udGV4dCgpIGNvbnN0IHsgcmV0dXJuIG1faXNPZmZsaW5lQ29u
dGV4dDsgfQorCisgICAgRG9jdW1lbnQqIGRvY3VtZW50KCkgY29uc3Q7IC8vIEFTU0VSVHMgaWYg
ZG9jdW1lbnQgbm8gbG9uZ2VyIGV4aXN0cy4KKworICAgIERvY3VtZW50SWRlbnRpZmllciBob3N0
aW5nRG9jdW1lbnRJZGVudGlmaWVyKCkgY29uc3QgZmluYWw7CisKKyAgICBBdWRpb0Rlc3RpbmF0
aW9uTm9kZSogZGVzdGluYXRpb24oKSB7IHJldHVybiBtX2Rlc3RpbmF0aW9uTm9kZS5nZXQoKTsg
fQorICAgIHNpemVfdCBjdXJyZW50U2FtcGxlRnJhbWUoKSBjb25zdCB7IHJldHVybiBtX2Rlc3Rp
bmF0aW9uTm9kZSA/IG1fZGVzdGluYXRpb25Ob2RlLT5jdXJyZW50U2FtcGxlRnJhbWUoKSA6IDA7
IH0KKyAgICBkb3VibGUgY3VycmVudFRpbWUoKSBjb25zdCB7IHJldHVybiBtX2Rlc3RpbmF0aW9u
Tm9kZSA/IG1fZGVzdGluYXRpb25Ob2RlLT5jdXJyZW50VGltZSgpIDogMC47IH0KKyAgICBmbG9h
dCBzYW1wbGVSYXRlKCkgY29uc3QgeyByZXR1cm4gbV9kZXN0aW5hdGlvbk5vZGUgPyBtX2Rlc3Rp
bmF0aW9uTm9kZS0+c2FtcGxlUmF0ZSgpIDogMC5mOyB9CisgICAgdW5zaWduZWQgbG9uZyBhY3Rp
dmVTb3VyY2VDb3VudCgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PHVuc2lnbmVkIGxvbmc+
KG1fYWN0aXZlU291cmNlQ291bnQpOyB9CisKKyAgICB2b2lkIGluY3JlbWVudEFjdGl2ZVNvdXJj
ZUNvdW50KCk7CisgICAgdm9pZCBkZWNyZW1lbnRBY3RpdmVTb3VyY2VDb3VudCgpOworCisgICAg
RXhjZXB0aW9uT3I8UmVmPEF1ZGlvQnVmZmVyPj4gY3JlYXRlQnVmZmVyKHVuc2lnbmVkIG51bWJl
ck9mQ2hhbm5lbHMsIHNpemVfdCBudW1iZXJPZkZyYW1lcywgZmxvYXQgc2FtcGxlUmF0ZSk7Cisg
ICAgRXhjZXB0aW9uT3I8UmVmPEF1ZGlvQnVmZmVyPj4gY3JlYXRlQnVmZmVyKEFycmF5QnVmZmVy
JiwgYm9vbCBtaXhUb01vbm8pOworCisgICAgLy8gQXN5bmNocm9ub3VzIGF1ZGlvIGZpbGUgZGF0
YSBkZWNvZGluZy4KKyAgICB2b2lkIGRlY29kZUF1ZGlvRGF0YShSZWY8QXJyYXlCdWZmZXI+JiYs
IFJlZlB0cjxBdWRpb0J1ZmZlckNhbGxiYWNrPiYmLCBSZWZQdHI8QXVkaW9CdWZmZXJDYWxsYmFj
az4mJik7CisKKyAgICBBdWRpb0xpc3RlbmVyKiBsaXN0ZW5lcigpIHsgcmV0dXJuIG1fbGlzdGVu
ZXIuZ2V0KCk7IH0KKworICAgIHZvaWQgc3VzcGVuZFJlbmRlcmluZyhET01Qcm9taXNlRGVmZXJy
ZWQ8dm9pZD4mJik7CisgICAgdm9pZCByZXN1bWVSZW5kZXJpbmcoRE9NUHJvbWlzZURlZmVycmVk
PHZvaWQ+JiYpOworICAgIHZvaWQgY2xvc2UoRE9NUHJvbWlzZURlZmVycmVkPHZvaWQ+JiYpOwor
CisgICAgdXNpbmcgU3RhdGUgPSBBdWRpb0NvbnRleHRTdGF0ZTsKKyAgICBTdGF0ZSBzdGF0ZSgp
IGNvbnN0OworICAgIGJvb2wgaXNDbG9zZWQoKSBjb25zdCB7IHJldHVybiBtX3N0YXRlID09IFN0
YXRlOjpDbG9zZWQ7IH0KKworICAgIGJvb2wgd291bGRUYWludE9yaWdpbihjb25zdCBVUkwmKSBj
b25zdDsKKworICAgIC8vIFRoZSBBdWRpb05vZGUgY3JlYXRlIG1ldGhvZHMgYXJlIGNhbGxlZCBv
biB0aGUgbWFpbiB0aHJlYWQgKGZyb20gSmF2YVNjcmlwdCkuCisgICAgRXhjZXB0aW9uT3I8UmVm
PEF1ZGlvQnVmZmVyU291cmNlTm9kZT4+IGNyZWF0ZUJ1ZmZlclNvdXJjZSgpOworI2lmIEVOQUJM
RShWSURFTykKKyAgICBFeGNlcHRpb25PcjxSZWY8TWVkaWFFbGVtZW50QXVkaW9Tb3VyY2VOb2Rl
Pj4gY3JlYXRlTWVkaWFFbGVtZW50U291cmNlKEhUTUxNZWRpYUVsZW1lbnQmKTsKKyNlbmRpZgor
I2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCisgICAgRXhjZXB0aW9uT3I8UmVmPE1lZGlhU3RyZWFt
QXVkaW9Tb3VyY2VOb2RlPj4gY3JlYXRlTWVkaWFTdHJlYW1Tb3VyY2UoTWVkaWFTdHJlYW0mKTsK
KyAgICBFeGNlcHRpb25PcjxSZWY8TWVkaWFTdHJlYW1BdWRpb0Rlc3RpbmF0aW9uTm9kZT4+IGNy
ZWF0ZU1lZGlhU3RyZWFtRGVzdGluYXRpb24oKTsKKyNlbmRpZgorICAgIEV4Y2VwdGlvbk9yPFJl
ZjxHYWluTm9kZT4+IGNyZWF0ZUdhaW4oKTsKKyAgICBFeGNlcHRpb25PcjxSZWY8QmlxdWFkRmls
dGVyTm9kZT4+IGNyZWF0ZUJpcXVhZEZpbHRlcigpOworICAgIEV4Y2VwdGlvbk9yPFJlZjxXYXZl
U2hhcGVyTm9kZT4+IGNyZWF0ZVdhdmVTaGFwZXIoKTsKKyAgICBFeGNlcHRpb25PcjxSZWY8RGVs
YXlOb2RlPj4gY3JlYXRlRGVsYXkoZG91YmxlIG1heERlbGF5VGltZSk7CisgICAgRXhjZXB0aW9u
T3I8UmVmPFBhbm5lck5vZGU+PiBjcmVhdGVQYW5uZXIoKTsKKyAgICBFeGNlcHRpb25PcjxSZWY8
Q29udm9sdmVyTm9kZT4+IGNyZWF0ZUNvbnZvbHZlcigpOworICAgIEV4Y2VwdGlvbk9yPFJlZjxE
eW5hbWljc0NvbXByZXNzb3JOb2RlPj4gY3JlYXRlRHluYW1pY3NDb21wcmVzc29yKCk7CisgICAg
RXhjZXB0aW9uT3I8UmVmPEFuYWx5c2VyTm9kZT4+IGNyZWF0ZUFuYWx5c2VyKCk7CisgICAgRXhj
ZXB0aW9uT3I8UmVmPFNjcmlwdFByb2Nlc3Nvck5vZGU+PiBjcmVhdGVTY3JpcHRQcm9jZXNzb3Io
c2l6ZV90IGJ1ZmZlclNpemUsIHNpemVfdCBudW1iZXJPZklucHV0Q2hhbm5lbHMsIHNpemVfdCBu
dW1iZXJPZk91dHB1dENoYW5uZWxzKTsKKyAgICBFeGNlcHRpb25PcjxSZWY8Q2hhbm5lbFNwbGl0
dGVyTm9kZT4+IGNyZWF0ZUNoYW5uZWxTcGxpdHRlcihzaXplX3QgbnVtYmVyT2ZPdXRwdXRzKTsK
KyAgICBFeGNlcHRpb25PcjxSZWY8Q2hhbm5lbE1lcmdlck5vZGU+PiBjcmVhdGVDaGFubmVsTWVy
Z2VyKHNpemVfdCBudW1iZXJPZklucHV0cyk7CisgICAgRXhjZXB0aW9uT3I8UmVmPE9zY2lsbGF0
b3JOb2RlPj4gY3JlYXRlT3NjaWxsYXRvcigpOworICAgIEV4Y2VwdGlvbk9yPFJlZjxQZXJpb2Rp
Y1dhdmU+PiBjcmVhdGVQZXJpb2RpY1dhdmUoRmxvYXQzMkFycmF5JiByZWFsLCBGbG9hdDMyQXJy
YXkmIGltYWdpbmFyeSk7CisKKyAgICAvLyBXaGVuIGEgc291cmNlIG5vZGUgaGFzIG5vIG1vcmUg
cHJvY2Vzc2luZyB0byBkbyAoaGFzIGZpbmlzaGVkIHBsYXlpbmcpLCB0aGVuIGl0IHRlbGxzIHRo
ZSBjb250ZXh0IHRvIGRlcmVmZXJlbmNlIGl0LgorICAgIHZvaWQgbm90aWZ5Tm9kZUZpbmlzaGVk
UHJvY2Vzc2luZyhBdWRpb05vZGUqKTsKKworICAgIC8vIENhbGxlZCBhdCB0aGUgc3RhcnQgb2Yg
ZWFjaCByZW5kZXIgcXVhbnR1bS4KKyAgICB2b2lkIGhhbmRsZVByZVJlbmRlclRhc2tzKCk7CisK
KyAgICAvLyBDYWxsZWQgYXQgdGhlIGVuZCBvZiBlYWNoIHJlbmRlciBxdWFudHVtLgorICAgIHZv
aWQgaGFuZGxlUG9zdFJlbmRlclRhc2tzKCk7CisKKyAgICAvLyBDYWxsZWQgcGVyaW9kaWNhbGx5
IGF0IHRoZSBlbmQgb2YgZWFjaCByZW5kZXIgcXVhbnR1bSB0byBkZXJlZmVyZW5jZSBmaW5pc2hl
ZCBzb3VyY2Ugbm9kZXMuCisgICAgdm9pZCBkZXJlZkZpbmlzaGVkU291cmNlTm9kZXMoKTsKKwor
ICAgIC8vIFdlIHNjaGVkdWxlIGRlbGV0aW9uIG9mIGFsbCBtYXJrZWQgbm9kZXMgYXQgdGhlIGVu
ZCBvZiBlYWNoIHJlYWx0aW1lIHJlbmRlciBxdWFudHVtLgorICAgIHZvaWQgbWFya0ZvckRlbGV0
aW9uKEF1ZGlvTm9kZSYpOworICAgIHZvaWQgZGVsZXRlTWFya2VkTm9kZXMoKTsKKworICAgIC8v
IEF1ZGlvQ29udGV4dCBjYW4gcHVsbCBub2RlKHMpIGF0IHRoZSBlbmQgb2YgZWFjaCByZW5kZXIg
cXVhbnR1bSBldmVuIHdoZW4gdGhleSBhcmUgbm90IGNvbm5lY3RlZCB0byBhbnkgZG93bnN0cmVh
bSBub2Rlcy4KKyAgICAvLyBUaGVzZSB0d28gbWV0aG9kcyBhcmUgY2FsbGVkIGJ5IHRoZSBub2Rl
cyB3aG8gd2FudCB0byBhZGQvcmVtb3ZlIHRoZW1zZWx2ZXMgaW50by9mcm9tIHRoZSBhdXRvbWF0
aWMgcHVsbCBsaXN0cy4KKyAgICB2b2lkIGFkZEF1dG9tYXRpY1B1bGxOb2RlKEF1ZGlvTm9kZSYp
OworICAgIHZvaWQgcmVtb3ZlQXV0b21hdGljUHVsbE5vZGUoQXVkaW9Ob2RlJik7CisKKyAgICAv
LyBDYWxsZWQgcmlnaHQgYmVmb3JlIGhhbmRsZVBvc3RSZW5kZXJUYXNrcygpIHRvIGhhbmRsZSBu
b2RlcyB3aGljaCBuZWVkIHRvIGJlIHB1bGxlZCBldmVuIHdoZW4gdGhleSBhcmUgbm90IGNvbm5l
Y3RlZCB0byBhbnl0aGluZy4KKyAgICB2b2lkIHByb2Nlc3NBdXRvbWF0aWNQdWxsTm9kZXMoc2l6
ZV90IGZyYW1lc1RvUHJvY2Vzcyk7CisKKyAgICAvLyBLZWVwcyB0cmFjayBvZiB0aGUgbnVtYmVy
IG9mIGNvbm5lY3Rpb25zIG1hZGUuCisgICAgdm9pZCBpbmNyZW1lbnRDb25uZWN0aW9uQ291bnQo
KQorICAgIHsKKyAgICAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKyAgICAgICAgbV9jb25u
ZWN0aW9uQ291bnQrKzsKKyAgICB9CisKKyAgICB1bnNpZ25lZCBjb25uZWN0aW9uQ291bnQoKSBj
b25zdCB7IHJldHVybiBtX2Nvbm5lY3Rpb25Db3VudDsgfQorCisgICAgLy8KKyAgICAvLyBUaHJl
YWQgU2FmZXR5IGFuZCBHcmFwaCBMb2NraW5nOgorICAgIC8vCisKKyAgICB2b2lkIHNldEF1ZGlv
VGhyZWFkKFRocmVhZCYgdGhyZWFkKSB7IG1fYXVkaW9UaHJlYWQgPSAmdGhyZWFkOyB9IC8vIEZJ
WE1FOiBjaGVjayBlaXRoZXIgbm90IGluaXRpYWxpemVkIG9yIHRoZSBzYW1lCisgICAgVGhyZWFk
KiBhdWRpb1RocmVhZCgpIGNvbnN0IHsgcmV0dXJuIG1fYXVkaW9UaHJlYWQ7IH0KKyAgICBib29s
IGlzQXVkaW9UaHJlYWQoKSBjb25zdDsKKworICAgIC8vIFJldHVybnMgdHJ1ZSBvbmx5IGFmdGVy
IHRoZSBhdWRpbyB0aHJlYWQgaGFzIGJlZW4gc3RhcnRlZCBhbmQgdGhlbiBzaHV0ZG93bi4KKyAg
ICBib29sIGlzQXVkaW9UaHJlYWRGaW5pc2hlZCgpIHsgcmV0dXJuIG1faXNBdWRpb1RocmVhZEZp
bmlzaGVkOyB9CisKKyAgICAvLyBtdXN0UmVsZWFzZUxvY2sgaXMgc2V0IHRvIHRydWUgaWYgd2Ug
YWNxdWlyZWQgdGhlIGxvY2sgaW4gdGhpcyBtZXRob2QgY2FsbCBhbmQgY2FsbGVyIG11c3QgdW5s
b2NrKCksIGZhbHNlIGlmIGl0IHdhcyBwcmV2aW91c2x5IGFjcXVpcmVkLgorICAgIHZvaWQgbG9j
ayhib29sJiBtdXN0UmVsZWFzZUxvY2spOworCisgICAgLy8gUmV0dXJucyB0cnVlIGlmIHdlIG93
biB0aGUgbG9jay4KKyAgICAvLyBtdXN0UmVsZWFzZUxvY2sgaXMgc2V0IHRvIHRydWUgaWYgd2Ug
YWNxdWlyZWQgdGhlIGxvY2sgaW4gdGhpcyBtZXRob2QgY2FsbCBhbmQgY2FsbGVyIG11c3QgdW5s
b2NrKCksIGZhbHNlIGlmIGl0IHdhcyBwcmV2aW91c2x5IGFjcXVpcmVkLgorICAgIGJvb2wgdHJ5
TG9jayhib29sJiBtdXN0UmVsZWFzZUxvY2spOworCisgICAgdm9pZCB1bmxvY2soKTsKKworICAg
IC8vIFJldHVybnMgdHJ1ZSBpZiB0aGlzIHRocmVhZCBvd25zIHRoZSBjb250ZXh0J3MgbG9jay4K
KyAgICBib29sIGlzR3JhcGhPd25lcigpIGNvbnN0OworCisgICAgLy8gUmV0dXJucyB0aGUgbWF4
aW11bSBudW1iZXIgb2YgY2hhbm5lbHMgd2UgY2FuIHN1cHBvcnQuCisgICAgc3RhdGljIHVuc2ln
bmVkIG1heE51bWJlck9mQ2hhbm5lbHMoKSB7IHJldHVybiBNYXhOdW1iZXJPZkNoYW5uZWxzOyB9
CisKKyAgICBjbGFzcyBBdXRvTG9ja2VyIHsKKyAgICBwdWJsaWM6CisgICAgICAgIGV4cGxpY2l0
IEF1dG9Mb2NrZXIoV2ViS2l0QXVkaW9Db250ZXh0JiBjb250ZXh0KQorICAgICAgICAgICAgOiBt
X2NvbnRleHQoY29udGV4dCkKKyAgICAgICAgeworICAgICAgICAgICAgbV9jb250ZXh0LmxvY2so
bV9tdXN0UmVsZWFzZUxvY2spOworICAgICAgICB9CisKKyAgICAgICAgfkF1dG9Mb2NrZXIoKQor
ICAgICAgICB7CisgICAgICAgICAgICBpZiAobV9tdXN0UmVsZWFzZUxvY2spCisgICAgICAgICAg
ICAgICAgbV9jb250ZXh0LnVubG9jaygpOworICAgICAgICB9CisKKyAgICBwcml2YXRlOgorICAg
ICAgICBXZWJLaXRBdWRpb0NvbnRleHQmIG1fY29udGV4dDsKKyAgICAgICAgYm9vbCBtX211c3RS
ZWxlYXNlTG9jazsKKyAgICB9OworCisgICAgLy8gSW4gQXVkaW9Ob2RlOjpkZXJlZigpIGEgdHJ5
TG9jaygpIGlzIHVzZWQgZm9yIGNhbGxpbmcgZmluaXNoRGVyZWYoKSwgYnV0IGlmIGl0IGZhaWxz
IGtlZXAgdHJhY2sgaGVyZS4KKyAgICB2b2lkIGFkZERlZmVycmVkRmluaXNoRGVyZWYoQXVkaW9O
b2RlKik7CisKKyAgICAvLyBJbiB0aGUgYXVkaW8gdGhyZWFkIGF0IHRoZSBzdGFydCBvZiBlYWNo
IHJlbmRlciBjeWNsZSwgd2UnbGwgY2FsbCBoYW5kbGVEZWZlcnJlZEZpbmlzaERlcmVmcygpLgor
ICAgIHZvaWQgaGFuZGxlRGVmZXJyZWRGaW5pc2hEZXJlZnMoKTsKKworICAgIC8vIE9ubHkgYWNj
ZXNzZWQgd2hlbiB0aGUgZ3JhcGggbG9jayBpcyBoZWxkLgorICAgIHZvaWQgbWFya1N1bW1pbmdK
dW5jdGlvbkRpcnR5KEF1ZGlvU3VtbWluZ0p1bmN0aW9uKik7CisgICAgdm9pZCBtYXJrQXVkaW9O
b2RlT3V0cHV0RGlydHkoQXVkaW9Ob2RlT3V0cHV0Kik7CisKKyAgICAvLyBNdXN0IGJlIGNhbGxl
ZCBvbiBtYWluIHRocmVhZC4KKyAgICB2b2lkIHJlbW92ZU1hcmtlZFN1bW1pbmdKdW5jdGlvbihB
dWRpb1N1bW1pbmdKdW5jdGlvbiopOworCisgICAgLy8gRXZlbnRUYXJnZXQKKyAgICBFdmVudFRh
cmdldEludGVyZmFjZSBldmVudFRhcmdldEludGVyZmFjZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJu
IFdlYktpdEF1ZGlvQ29udGV4dEV2ZW50VGFyZ2V0SW50ZXJmYWNlVHlwZTsgfQorCisgICAgLy8g
UmVjb25jaWxlIHJlZi9kZXJlZiB3aGljaCBhcmUgZGVmaW5lZCBib3RoIGluIFRocmVhZFNhZmVS
ZWZDb3VudGVkIGFuZCBFdmVudFRhcmdldC4KKyAgICB1c2luZyBUaHJlYWRTYWZlUmVmQ291bnRl
ZDo6cmVmOworICAgIHVzaW5nIFRocmVhZFNhZmVSZWZDb3VudGVkOjpkZXJlZjsKKworICAgIHZv
aWQgc3RhcnRSZW5kZXJpbmcoKTsKKyAgICB2b2lkIGZpbmlzaGVkUmVuZGVyaW5nKGJvb2wgZGlk
UmVuZGVyaW5nKTsKKworICAgIHN0YXRpYyB1bnNpZ25lZCBzX2hhcmR3YXJlQ29udGV4dENvdW50
OworCisgICAgLy8gUmVzdHJpY3Rpb25zIHRvIGNoYW5nZSBkZWZhdWx0IGJlaGF2aW9ycy4KKyAg
ICBlbnVtIEJlaGF2aW9yUmVzdHJpY3Rpb25GbGFncyB7CisgICAgICAgIE5vUmVzdHJpY3Rpb25z
ID0gMCwKKyAgICAgICAgUmVxdWlyZVVzZXJHZXN0dXJlRm9yQXVkaW9TdGFydFJlc3RyaWN0aW9u
ID0gMSA8PCAwLAorICAgICAgICBSZXF1aXJlUGFnZUNvbnNlbnRGb3JBdWRpb1N0YXJ0UmVzdHJp
Y3Rpb24gPSAxIDw8IDEsCisgICAgfTsKKyAgICB0eXBlZGVmIHVuc2lnbmVkIEJlaGF2aW9yUmVz
dHJpY3Rpb25zOworCisgICAgQmVoYXZpb3JSZXN0cmljdGlvbnMgYmVoYXZpb3JSZXN0cmljdGlv
bnMoKSBjb25zdCB7IHJldHVybiBtX3Jlc3RyaWN0aW9uczsgfQorICAgIHZvaWQgYWRkQmVoYXZp
b3JSZXN0cmljdGlvbihCZWhhdmlvclJlc3RyaWN0aW9ucyByZXN0cmljdGlvbikgeyBtX3Jlc3Ry
aWN0aW9ucyB8PSByZXN0cmljdGlvbjsgfQorICAgIHZvaWQgcmVtb3ZlQmVoYXZpb3JSZXN0cmlj
dGlvbihCZWhhdmlvclJlc3RyaWN0aW9ucyByZXN0cmljdGlvbikgeyBtX3Jlc3RyaWN0aW9ucyAm
PSB+cmVzdHJpY3Rpb247IH0KKworICAgIHZvaWQgaXNQbGF5aW5nQXVkaW9EaWRDaGFuZ2UoKTsK
KworICAgIHZvaWQgbm9kZVdpbGxCZWdpblBsYXliYWNrKCk7CisKKyNpZiAhUkVMRUFTRV9MT0df
RElTQUJMRUQKKyAgICBjb25zdCBMb2dnZXImIGxvZ2dlcigpIGNvbnN0IGZpbmFsIHsgcmV0dXJu
IG1fbG9nZ2VyLmdldCgpOyB9CisgICAgY29uc3Qgdm9pZCogbG9nSWRlbnRpZmllcigpIGNvbnN0
IGZpbmFsIHsgcmV0dXJuIG1fbG9nSWRlbnRpZmllcjsgfQorICAgIFdURkxvZ0NoYW5uZWwmIGxv
Z0NoYW5uZWwoKSBjb25zdCBmaW5hbDsKKyAgICBjb25zdCB2b2lkKiBuZXh0QXVkaW9Ob2RlTG9n
SWRlbnRpZmllcigpIHsgcmV0dXJuIGNoaWxkTG9nSWRlbnRpZmllcihtX2xvZ0lkZW50aWZpZXIs
ICsrbV9uZXh0QXVkaW9Ob2RlSWRlbnRpZmllcik7IH0KKyAgICBjb25zdCB2b2lkKiBuZXh0QXVk
aW9QYXJhbWV0ZXJMb2dJZGVudGlmaWVyKCkgeyByZXR1cm4gY2hpbGRMb2dJZGVudGlmaWVyKG1f
bG9nSWRlbnRpZmllciwgKyttX25leHRBdWRpb1BhcmFtZXRlcklkZW50aWZpZXIpOyB9CisjZW5k
aWYKKworICAgIHZvaWQgcG9zdFRhc2soV1RGOjpGdW5jdGlvbjx2b2lkKCk+JiYpOworICAgIGJv
b2wgaXNTdG9wcGVkKCkgY29uc3QgeyByZXR1cm4gbV9pc1N0b3BTY2hlZHVsZWQ7IH0KKyAgICBj
b25zdCBTZWN1cml0eU9yaWdpbiogb3JpZ2luKCkgY29uc3Q7CisgICAgdm9pZCBhZGRDb25zb2xl
TWVzc2FnZShNZXNzYWdlU291cmNlLCBNZXNzYWdlTGV2ZWwsIGNvbnN0IFN0cmluZyYgbWVzc2Fn
ZSk7CisKKyAgICAvLyBFdmVudFRhcmdldAorICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQoKSBjb25zdCBmaW5hbDsKKworcHJvdGVjdGVkOgorICAgIGV4
cGxpY2l0IFdlYktpdEF1ZGlvQ29udGV4dChEb2N1bWVudCYpOworICAgIFdlYktpdEF1ZGlvQ29u
dGV4dChEb2N1bWVudCYsIEF1ZGlvQnVmZmVyKiByZW5kZXJUYXJnZXQpOworCisgICAgc3RhdGlj
IGJvb2wgaXNTYW1wbGVSYXRlUmFuZ2VHb29kKGZsb2F0IHNhbXBsZVJhdGUpOworICAgIHZvaWQg
Y2xlYXJQZW5kaW5nQWN0aXZpdHkoKTsKKyAgICB2b2lkIG1ha2VQZW5kaW5nQWN0aXZpdHkoKTsK
KworcHJpdmF0ZToKKyAgICB2b2lkIGNvbnN0cnVjdENvbW1vbigpOworCisgICAgdm9pZCBsYXp5
SW5pdGlhbGl6ZSgpOworICAgIHZvaWQgdW5pbml0aWFsaXplKCk7CisKKyAgICBib29sIHdpbGxC
ZWdpblBsYXliYWNrKCk7CisgICAgYm9vbCB3aWxsUGF1c2VQbGF5YmFjaygpOworCisgICAgYm9v
bCB1c2VyR2VzdHVyZVJlcXVpcmVkRm9yQXVkaW9TdGFydCgpIGNvbnN0IHsgcmV0dXJuICFpc09m
ZmxpbmVDb250ZXh0KCkgJiYgbV9yZXN0cmljdGlvbnMgJiBSZXF1aXJlVXNlckdlc3R1cmVGb3JB
dWRpb1N0YXJ0UmVzdHJpY3Rpb247IH0KKyAgICBib29sIHBhZ2VDb25zZW50UmVxdWlyZWRGb3JB
dWRpb1N0YXJ0KCkgY29uc3QgeyByZXR1cm4gIWlzT2ZmbGluZUNvbnRleHQoKSAmJiBtX3Jlc3Ry
aWN0aW9ucyAmIFJlcXVpcmVQYWdlQ29uc2VudEZvckF1ZGlvU3RhcnRSZXN0cmljdGlvbjsgfQor
CisgICAgdm9pZCBzZXRTdGF0ZShTdGF0ZSk7CisKKyAgICB2b2lkIGNsZWFyKCk7CisKKyAgICB2
b2lkIHNjaGVkdWxlTm9kZURlbGV0aW9uKCk7CisKKyAgICB2b2lkIG1lZGlhQ2FuU3RhcnQoRG9j
dW1lbnQmKSBvdmVycmlkZTsKKworICAgIC8vIEV2ZW50VGFyZ2V0CisgICAgdm9pZCBkaXNwYXRj
aEV2ZW50KEV2ZW50JikgZmluYWw7CisKKyAgICAvLyBNZWRpYVByb2R1Y2VyCisgICAgTWVkaWFQ
cm9kdWNlcjo6TWVkaWFTdGF0ZUZsYWdzIG1lZGlhU3RhdGUoKSBjb25zdCBvdmVycmlkZTsKKyAg
ICB2b2lkIHBhZ2VNdXRlZFN0YXRlRGlkQ2hhbmdlKCkgb3ZlcnJpZGU7CisKKyAgICAvLyBUaGUg
Y29udGV4dCBpdHNlbGYga2VlcHMgYSByZWZlcmVuY2UgdG8gYWxsIHNvdXJjZSBub2Rlcy4gIFRo
ZSBzb3VyY2Ugbm9kZXMsIHRoZW4gcmVmZXJlbmNlIGFsbCBub2RlcyB0aGV5J3JlIGNvbm5lY3Rl
ZCB0by4KKyAgICAvLyBJbiB0dXJuLCB0aGVzZSBub2RlcyByZWZlcmVuY2UgYWxsIG5vZGVzIHRo
ZXkncmUgY29ubmVjdGVkIHRvLiAgQWxsIG5vZGVzIGFyZSB1bHRpbWF0ZWx5IGNvbm5lY3RlZCB0
byB0aGUgQXVkaW9EZXN0aW5hdGlvbk5vZGUuCisgICAgLy8gV2hlbiB0aGUgY29udGV4dCBkZXJl
ZmVyZW5jZXMgYSBzb3VyY2Ugbm9kZSwgaXQgd2lsbCBiZSBkZWFjdGl2YXRlZCBmcm9tIHRoZSBy
ZW5kZXJpbmcgZ3JhcGggYWxvbmcgd2l0aCBhbGwgb3RoZXIgbm9kZXMgaXQgaXMKKyAgICAvLyB1
bmlxdWVseSBjb25uZWN0ZWQgdG8uICBTZWUgdGhlIEF1ZGlvTm9kZTo6cmVmKCkgYW5kIEF1ZGlv
Tm9kZTo6ZGVyZWYoKSBtZXRob2RzIGZvciBtb3JlIGRldGFpbHMuCisgICAgdm9pZCByZWZOb2Rl
KEF1ZGlvTm9kZSYpOworICAgIHZvaWQgZGVyZWZOb2RlKEF1ZGlvTm9kZSYpOworCisgICAgLy8g
QWN0aXZlRE9NT2JqZWN0IEFQSS4KKyAgICB2b2lkIHN1c3BlbmQoUmVhc29uRm9yU3VzcGVuc2lv
bikgZmluYWw7CisgICAgdm9pZCByZXN1bWUoKSBmaW5hbDsKKyAgICB2b2lkIHN0b3AoKSBvdmVy
cmlkZTsKKyAgICBjb25zdCBjaGFyKiBhY3RpdmVET01PYmplY3ROYW1lKCkgY29uc3Qgb3ZlcnJp
ZGU7CisKKyAgICAvLyBXaGVuIHRoZSBjb250ZXh0IGdvZXMgYXdheSwgdGhlcmUgbWlnaHQgc3Rp
bGwgYmUgc29tZSBzb3VyY2VzIHdoaWNoIGhhdmVuJ3QgZmluaXNoZWQgcGxheWluZy4KKyAgICAv
LyBNYWtlIHN1cmUgdG8gZGVyZWZlcmVuY2UgdGhlbSBoZXJlLgorICAgIHZvaWQgZGVyZWZVbmZp
bmlzaGVkU291cmNlTm9kZXMoKTsKKworICAgIC8vIFBsYXRmb3JtTWVkaWFTZXNzaW9uQ2xpZW50
CisgICAgUGxhdGZvcm1NZWRpYVNlc3Npb246Ok1lZGlhVHlwZSBtZWRpYVR5cGUoKSBjb25zdCBv
dmVycmlkZSB7IHJldHVybiBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6TWVkaWFUeXBlOjpXZWJBdWRp
bzsgfQorICAgIFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpNZWRpYVR5cGUgcHJlc2VudGF0aW9uVHlw
ZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpNZWRpYVR5
cGU6OldlYkF1ZGlvOyB9CisgICAgdm9pZCBtYXlSZXN1bWVQbGF5YmFjayhib29sIHNob3VsZFJl
c3VtZSkgb3ZlcnJpZGU7CisgICAgdm9pZCBzdXNwZW5kUGxheWJhY2soKSBvdmVycmlkZTsKKyAg
ICBib29sIGNhblJlY2VpdmVSZW1vdGVDb250cm9sQ29tbWFuZHMoKSBjb25zdCBvdmVycmlkZSB7
IHJldHVybiBmYWxzZTsgfQorICAgIHZvaWQgZGlkUmVjZWl2ZVJlbW90ZUNvbnRyb2xDb21tYW5k
KFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpSZW1vdGVDb250cm9sQ29tbWFuZFR5cGUsIGNvbnN0IFBs
YXRmb3JtTWVkaWFTZXNzaW9uOjpSZW1vdGVDb21tYW5kQXJndW1lbnQqKSBvdmVycmlkZSB7IH0K
KyAgICBib29sIHN1cHBvcnRzU2Vla2luZygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNl
OyB9CisgICAgYm9vbCBzaG91bGRPdmVycmlkZUJhY2tncm91bmRQbGF5YmFja1Jlc3RyaWN0aW9u
KFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpJbnRlcnJ1cHRpb25UeXBlKSBjb25zdCBvdmVycmlkZSB7
IHJldHVybiBmYWxzZTsgfQorICAgIGJvb2wgY2FuUHJvZHVjZUF1ZGlvKCkgY29uc3QgZmluYWwg
eyByZXR1cm4gdHJ1ZTsgfQorICAgIGJvb2wgaXNTdXNwZW5kZWQoKSBjb25zdCBmaW5hbDsKKwor
ICAgIHZvaWQgdmlzaWJpbGl0eVN0YXRlQ2hhbmdlZCgpIGZpbmFsOworCisgICAgLy8gRXZlbnRU
YXJnZXQKKyAgICB2b2lkIHJlZkV2ZW50VGFyZ2V0KCkgb3ZlcnJpZGUgeyByZWYoKTsgfQorICAg
IHZvaWQgZGVyZWZFdmVudFRhcmdldCgpIG92ZXJyaWRlIHsgZGVyZWYoKTsgfQorCisgICAgdm9p
ZCBoYW5kbGVEaXJ0eUF1ZGlvU3VtbWluZ0p1bmN0aW9ucygpOworICAgIHZvaWQgaGFuZGxlRGly
dHlBdWRpb05vZGVPdXRwdXRzKCk7CisKKyAgICB2b2lkIGFkZFJlYWN0aW9uKFN0YXRlLCBET01Q
cm9taXNlRGVmZXJyZWQ8dm9pZD4mJik7CisgICAgdm9pZCB1cGRhdGVBdXRvbWF0aWNQdWxsTm9k
ZXMoKTsKKworI2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRAorICAgIGNvbnN0IGNoYXIqIGxvZ0Ns
YXNzTmFtZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuICJXZWJLaXRBdWRpb0NvbnRleHQiOyB9CisK
KyAgICBSZWY8TG9nZ2VyPiBtX2xvZ2dlcjsKKyAgICBjb25zdCB2b2lkKiBtX2xvZ0lkZW50aWZp
ZXI7CisgICAgdWludDY0X3QgbV9uZXh0QXVkaW9Ob2RlSWRlbnRpZmllciB7IDAgfTsKKyAgICB1
aW50NjRfdCBtX25leHRBdWRpb1BhcmFtZXRlcklkZW50aWZpZXIgeyAwIH07CisjZW5kaWYKKwor
ICAgIC8vIE9ubHkgYWNjZXNzZWQgaW4gdGhlIGF1ZGlvIHRocmVhZC4KKyAgICBWZWN0b3I8QXVk
aW9Ob2RlKj4gbV9maW5pc2hlZE5vZGVzOworCisgICAgLy8gV2UgZG9uJ3QgdXNlIFJlZlB0cjxB
dWRpb05vZGU+IGhlcmUgYmVjYXVzZSBBdWRpb05vZGUgaGFzIGEgbW9yZSBjb21wbGV4IHJlZigp
IC8gZGVyZWYoKSBpbXBsZW1lbnRhdGlvbgorICAgIC8vIHdpdGggYW4gb3B0aW9uYWwgYXJndW1l
bnQgZm9yIHJlZlR5cGUuICBXZSBuZWVkIHRvIHVzZSB0aGUgc3BlY2lhbCByZWZUeXBlOiBSZWZU
eXBlQ29ubmVjdGlvbgorICAgIC8vIEVpdGhlciBhY2Nlc3NlZCB3aGVuIHRoZSBncmFwaCBsb2Nr
IGlzIGhlbGQsIG9yIG9uIHRoZSBtYWluIHRocmVhZCB3aGVuIHRoZSBhdWRpbyB0aHJlYWQgaGFz
IGZpbmlzaGVkLgorICAgIFZlY3RvcjxBdWRpb05vZGUqPiBtX3JlZmVyZW5jZWROb2RlczsKKwor
ICAgIC8vIEFjY3VtdWxhdGUgbm9kZXMgd2hpY2ggbmVlZCB0byBiZSBkZWxldGVkIGhlcmUuCisg
ICAgLy8gVGhpcyBpcyBjb3BpZWQgdG8gbV9ub2Rlc1RvRGVsZXRlIGF0IHRoZSBlbmQgb2YgYSBy
ZW5kZXIgY3ljbGUgaW4gaGFuZGxlUG9zdFJlbmRlclRhc2tzKCksIHdoZXJlIHdlJ3JlIGFzc3Vy
ZWQgb2YgYSBzdGFibGUgZ3JhcGgKKyAgICAvLyBzdGF0ZSB3aGljaCB3aWxsIGhhdmUgbm8gcmVm
ZXJlbmNlcyB0byBhbnkgb2YgdGhlIG5vZGVzIGluIG1fbm9kZXNUb0RlbGV0ZSBvbmNlIHRoZSBj
b250ZXh0IGxvY2sgaXMgcmVsZWFzZWQKKyAgICAvLyAod2hlbiBoYW5kbGVQb3N0UmVuZGVyVGFz
a3MoKSBoYXMgY29tcGxldGVkKS4KKyAgICBWZWN0b3I8QXVkaW9Ob2RlKj4gbV9ub2Rlc01hcmtl
ZEZvckRlbGV0aW9uOworCisgICAgLy8gVGhleSB3aWxsIGJlIHNjaGVkdWxlZCBmb3IgZGVsZXRp
b24gKG9uIHRoZSBtYWluIHRocmVhZCkgYXQgdGhlIGVuZCBvZiBhIHJlbmRlciBjeWNsZSAoaW4g
cmVhbHRpbWUgdGhyZWFkKS4KKyAgICBWZWN0b3I8QXVkaW9Ob2RlKj4gbV9ub2Rlc1RvRGVsZXRl
OworCisgICAgYm9vbCBtX2lzRGVsZXRpb25TY2hlZHVsZWQgeyBmYWxzZSB9OworICAgIGJvb2wg
bV9pc1N0b3BTY2hlZHVsZWQgeyBmYWxzZSB9OworICAgIGJvb2wgbV9pc0luaXRpYWxpemVkIHsg
ZmFsc2UgfTsKKyAgICBib29sIG1faXNBdWRpb1RocmVhZEZpbmlzaGVkIHsgZmFsc2UgfTsKKyAg
ICBib29sIG1fYXV0b21hdGljUHVsbE5vZGVzTmVlZFVwZGF0aW5nIHsgZmFsc2UgfTsKKyAgICBi
b29sIG1faXNPZmZsaW5lQ29udGV4dCB7IGZhbHNlIH07CisKKyAgICAvLyBPbmx5IGFjY2Vzc2Vk
IHdoZW4gdGhlIGdyYXBoIGxvY2sgaXMgaGVsZC4KKyAgICBIYXNoU2V0PEF1ZGlvU3VtbWluZ0p1
bmN0aW9uKj4gbV9kaXJ0eVN1bW1pbmdKdW5jdGlvbnM7CisgICAgSGFzaFNldDxBdWRpb05vZGVP
dXRwdXQqPiBtX2RpcnR5QXVkaW9Ob2RlT3V0cHV0czsKKworICAgIC8vIEZvciB0aGUgc2FrZSBv
ZiB0aHJlYWQgc2FmZXR5LCB3ZSBtYWludGFpbiBhIHNlcGVyYXRlIFZlY3RvciBvZiBhdXRvbWF0
aWMgcHVsbCBub2RlcyBmb3IgcmVuZGVyaW5nIGluIG1fcmVuZGVyaW5nQXV0b21hdGljUHVsbE5v
ZGVzLgorICAgIC8vIEl0IHdpbGwgYmUgY29waWVkIGZyb20gbV9hdXRvbWF0aWNQdWxsTm9kZXMg
YnkgdXBkYXRlQXV0b21hdGljUHVsbE5vZGVzKCkgYXQgdGhlIHZlcnkgc3RhcnQgb3IgZW5kIG9m
IHRoZSByZW5kZXJpbmcgcXVhbnR1bS4KKyAgICBIYXNoU2V0PEF1ZGlvTm9kZSo+IG1fYXV0b21h
dGljUHVsbE5vZGVzOworICAgIFZlY3RvcjxBdWRpb05vZGUqPiBtX3JlbmRlcmluZ0F1dG9tYXRp
Y1B1bGxOb2RlczsKKyAgICAvLyBPbmx5IGFjY2Vzc2VkIGluIHRoZSBhdWRpbyB0aHJlYWQuCisg
ICAgVmVjdG9yPEF1ZGlvTm9kZSo+IG1fZGVmZXJyZWRGaW5pc2hEZXJlZkxpc3Q7CisgICAgVmVj
dG9yPFZlY3RvcjxET01Qcm9taXNlRGVmZXJyZWQ8dm9pZD4+PiBtX3N0YXRlUmVhY3Rpb25zOwor
CisgICAgc3RkOjp1bmlxdWVfcHRyPFBsYXRmb3JtTWVkaWFTZXNzaW9uPiBtX21lZGlhU2Vzc2lv
bjsKKyAgICBVbmlxdWVSZWY8TWFpblRocmVhZEdlbmVyaWNFdmVudFF1ZXVlPiBtX2V2ZW50UXVl
dWU7CisKKyAgICBSZWZQdHI8QXVkaW9CdWZmZXI+IG1fcmVuZGVyVGFyZ2V0OworICAgIFJlZlB0
cjxBdWRpb0Rlc3RpbmF0aW9uTm9kZT4gbV9kZXN0aW5hdGlvbk5vZGU7CisgICAgUmVmUHRyPEF1
ZGlvTGlzdGVuZXI+IG1fbGlzdGVuZXI7CisKKyAgICB1bnNpZ25lZCBtX2Nvbm5lY3Rpb25Db3Vu
dCB7IDAgfTsKKworICAgIC8vIEdyYXBoIGxvY2tpbmcuCisgICAgTG9jayBtX2NvbnRleHRHcmFw
aE11dGV4OworICAgIC8vIEZJWE1FOiBVc2luZyB2b2xhdGlsZSBzZWVtcyBpbmNvcnJlY3QuCisg
ICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4MDMzMgorICAg
IFRocmVhZCogdm9sYXRpbGUgbV9hdWRpb1RocmVhZCB7IG51bGxwdHIgfTsKKyAgICBUaHJlYWQq
IHZvbGF0aWxlIG1fZ3JhcGhPd25lclRocmVhZCB7IG51bGxwdHIgfTsgLy8gaWYgdGhlIGxvY2sg
aXMgaGVsZCB0aGVuIHRoaXMgaXMgdGhlIHRocmVhZCB3aGljaCBvd25zIGl0LCBvdGhlcndpc2Ug
PT0gbnVsbHB0ci4KKworICAgIHN0ZDo6dW5pcXVlX3B0cjxBc3luY0F1ZGlvRGVjb2Rlcj4gbV9h
dWRpb0RlY29kZXI7CisKKyAgICAvLyBUaGlzIGlzIGNvbnNpZGVyaW5nIDMyIGlzIGxhcmdlIGVu
b3VnaCBmb3IgbXVsdGlwbGUgY2hhbm5lbHMgYXVkaW8uCisgICAgLy8gSXQgaXMgc29tZXdoYXQg
YXJiaXRyYXJ5IGFuZCBjb3VsZCBiZSBpbmNyZWFzZWQgaWYgbmVjZXNzYXJ5LgorICAgIGVudW0g
eyBNYXhOdW1iZXJPZkNoYW5uZWxzID0gMzIgfTsKKworICAgIC8vIE51bWJlciBvZiBBdWRpb0J1
ZmZlclNvdXJjZU5vZGVzIHRoYXQgYXJlIGFjdGl2ZSAocGxheWluZykuCisgICAgc3RkOjphdG9t
aWM8aW50PiBtX2FjdGl2ZVNvdXJjZUNvdW50IHsgMCB9OworCisgICAgQmVoYXZpb3JSZXN0cmlj
dGlvbnMgbV9yZXN0cmljdGlvbnMgeyBOb1Jlc3RyaWN0aW9ucyB9OworCisgICAgU3RhdGUgbV9z
dGF0ZSB7IFN0YXRlOjpTdXNwZW5kZWQgfTsKKyAgICBSZWZQdHI8UGVuZGluZ0FjdGl2aXR5PFdl
YktpdEF1ZGlvQ29udGV4dD4+IG1fcGVuZGluZ0FjdGl2aXR5OworfTsKKworLy8gRklYTUU6IEZp
bmQgb3V0IHdoeSB0aGVzZSA9PS8hPSBmdW5jdGlvbnMgYXJlIG5lZWRlZCBhbmQgcmVtb3ZlIHRo
ZW0gaWYgcG9zc2libGUuCisKK2lubGluZSBib29sIG9wZXJhdG9yPT0oY29uc3QgV2ViS2l0QXVk
aW9Db250ZXh0JiBsaHMsIGNvbnN0IFdlYktpdEF1ZGlvQ29udGV4dCYgcmhzKQoreworICAgIHJl
dHVybiAmbGhzID09ICZyaHM7Cit9CisKK2lubGluZSBib29sIG9wZXJhdG9yIT0oY29uc3QgV2Vi
S2l0QXVkaW9Db250ZXh0JiBsaHMsIGNvbnN0IFdlYktpdEF1ZGlvQ29udGV4dCYgcmhzKQorewor
ICAgIHJldHVybiAmbGhzICE9ICZyaHM7Cit9CisKK2lubGluZSBBdWRpb0NvbnRleHRTdGF0ZSBX
ZWJLaXRBdWRpb0NvbnRleHQ6OnN0YXRlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9zdGF0ZTsK
K30KKworfSAvLyBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmF1ZGlvL1dlYktpdEF1ZGlvQ29udGV4dC5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmF1ZGlvL1dlYktpdEF1ZGlvQ29udGV4dC5pZGwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAuLmI3NGVmMzUxODEzCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJhdWRpby9XZWJLaXRBdWRpb0NvbnRleHQuaWRsCkBAIC0wLDAgKzEsOTQg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAsIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAq
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04KKyAqIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUwor
ICogU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworWworICAgIEFjdGl2ZURPTU9iamVjdCwKKyAgICBDb25kaXRpb25hbD1X
RUJfQVVESU8sCisgICAgQ29uc3RydWN0b3IsCisgICAgQ29uc3RydWN0b3JDYWxsV2l0aD1Eb2N1
bWVudCwKKyAgICBDb25zdHJ1Y3Rvck1heVRocm93RXhjZXB0aW9uLAorICAgIEVuYWJsZWRCeVNl
dHRpbmc9V2ViQXVkaW8sCisgICAgRXhwb3J0TWFjcm89V0VCQ09SRV9FWFBPUlQsCisgICAgSW50
ZXJmYWNlTmFtZT13ZWJraXRBdWRpb0NvbnRleHQsCitdIGludGVyZmFjZSBXZWJLaXRBdWRpb0Nv
bnRleHQgOiBFdmVudFRhcmdldCB7CisgICAgLy8gQWxsIHJlbmRlcmVkIGF1ZGlvIHVsdGltYXRl
bHkgY29ubmVjdHMgdG8gZGVzdGluYXRpb24sIHdoaWNoIHJlcHJlc2VudHMgdGhlIGF1ZGlvIGhh
cmR3YXJlLgorICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBBdWRpb0Rlc3RpbmF0aW9uTm9kZSBkZXN0
aW5hdGlvbjsKKworICAgIC8vIEFsbCBzY2hlZHVsZWQgdGltZXMgYXJlIHJlbGF0aXZlIHRvIHRo
aXMgdGltZSBpbiBzZWNvbmRzLgorICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSB1bnJlc3RyaWN0ZWQg
ZG91YmxlIGN1cnJlbnRUaW1lOworCisgICAgLy8gQWxsIEF1ZGlvTm9kZXMgaW4gdGhlIGNvbnRl
eHQgcnVuIGF0IHRoaXMgc2FtcGxlLXJhdGUgKHNhbXBsZS1mcmFtZXMgcGVyIHNlY29uZCkuCisg
ICAgcmVhZG9ubHkgYXR0cmlidXRlIHVucmVzdHJpY3RlZCBmbG9hdCBzYW1wbGVSYXRlOworCisg
ICAgLy8gQWxsIHBhbm5pbmcgaXMgcmVsYXRpdmUgdG8gdGhpcyBsaXN0ZW5lci4KKyAgICByZWFk
b25seSBhdHRyaWJ1dGUgQXVkaW9MaXN0ZW5lciBsaXN0ZW5lcjsKKworICAgIFtJbXBsZW1lbnRl
ZEFzPXN1c3BlbmRSZW5kZXJpbmddIFByb21pc2U8dm9pZD4gc3VzcGVuZCgpOworICAgIFtJbXBs
ZW1lbnRlZEFzPXJlc3VtZVJlbmRlcmluZ10gUHJvbWlzZTx2b2lkPiByZXN1bWUoKTsKKyAgICBQ
cm9taXNlPHZvaWQ+IGNsb3NlKCk7CisKKyAgICByZWFkb25seSBhdHRyaWJ1dGUgQXVkaW9Db250
ZXh0U3RhdGUgc3RhdGU7CisgICAgYXR0cmlidXRlIEV2ZW50SGFuZGxlciBvbnN0YXRlY2hhbmdl
OworCisgICAgLy8gTnVtYmVyIG9mIEF1ZGlvQnVmZmVyU291cmNlTm9kZXMgdGhhdCBhcmUgY3Vy
cmVudGx5IHBsYXlpbmcuCisgICAgcmVhZG9ubHkgYXR0cmlidXRlIHVuc2lnbmVkIGxvbmcgYWN0
aXZlU291cmNlQ291bnQ7CisKKyAgICBbTWF5VGhyb3dFeGNlcHRpb25dIEF1ZGlvQnVmZmVyIGNy
ZWF0ZUJ1ZmZlcih1bnNpZ25lZCBsb25nIG51bWJlck9mQ2hhbm5lbHMsIHVuc2lnbmVkIGxvbmcg
bnVtYmVyT2ZGcmFtZXMsIHVucmVzdHJpY3RlZCBmbG9hdCBzYW1wbGVSYXRlKTsKKyAgICBbTWF5
VGhyb3dFeGNlcHRpb25dIEF1ZGlvQnVmZmVyIGNyZWF0ZUJ1ZmZlcihBcnJheUJ1ZmZlciBidWZm
ZXIsIGJvb2xlYW4gbWl4VG9Nb25vKTsKKworICAgIC8vIEFzeW5jaHJvbm91cyBhdWRpbyBmaWxl
IGRhdGEgZGVjb2RpbmcuCisgICAgLy8gRklYTUU6IHN1Y2Nlc3NDYWxsYmFjayBzaG91bGQgYmUg
b3B0aW9uYWwgYW5kIHRoZSBjYWxsYmFja3Mgc2hvdWxkIG5vdCBiZSBudWxsYWJsZS4gVGhpcyBz
aG91bGQgYWxzbyByZXR1cm4gYSBQcm9taXNlLgorICAgIHZvaWQgZGVjb2RlQXVkaW9EYXRhKEFy
cmF5QnVmZmVyIGF1ZGlvRGF0YSwgQXVkaW9CdWZmZXJDYWxsYmFjaz8gc3VjY2Vzc0NhbGxiYWNr
LCBvcHRpb25hbCBBdWRpb0J1ZmZlckNhbGxiYWNrPyBlcnJvckNhbGxiYWNrKTsKKworICAgIC8v
IFNvdXJjZXMKKyAgICBbTWF5VGhyb3dFeGNlcHRpb25dIEF1ZGlvQnVmZmVyU291cmNlTm9kZSBj
cmVhdGVCdWZmZXJTb3VyY2UoKTsKKworICAgIFtDb25kaXRpb25hbD1WSURFTywgTWF5VGhyb3dF
eGNlcHRpb25dIE1lZGlhRWxlbWVudEF1ZGlvU291cmNlTm9kZSBjcmVhdGVNZWRpYUVsZW1lbnRT
b3VyY2UoSFRNTE1lZGlhRWxlbWVudCBtZWRpYUVsZW1lbnQpOworCisgICAgW0NvbmRpdGlvbmFs
PU1FRElBX1NUUkVBTSwgTWF5VGhyb3dFeGNlcHRpb25dIE1lZGlhU3RyZWFtQXVkaW9Tb3VyY2VO
b2RlIGNyZWF0ZU1lZGlhU3RyZWFtU291cmNlKE1lZGlhU3RyZWFtIG1lZGlhU3RyZWFtKTsKKyAg
ICBbQ29uZGl0aW9uYWw9TUVESUFfU1RSRUFNLCBNYXlUaHJvd0V4Y2VwdGlvbl0gTWVkaWFTdHJl
YW1BdWRpb0Rlc3RpbmF0aW9uTm9kZSBjcmVhdGVNZWRpYVN0cmVhbURlc3RpbmF0aW9uKCk7CisK
KyAgICAvLyBQcm9jZXNzaW5nIG5vZGVzCisgICAgW01heVRocm93RXhjZXB0aW9uXSBHYWluTm9k
ZSBjcmVhdGVHYWluKCk7CisgICAgW01heVRocm93RXhjZXB0aW9uXSBEZWxheU5vZGUgY3JlYXRl
RGVsYXkob3B0aW9uYWwgdW5yZXN0cmljdGVkIGRvdWJsZSBtYXhEZWxheVRpbWUgPSAxKTsKKyAg
ICBbTWF5VGhyb3dFeGNlcHRpb25dIEJpcXVhZEZpbHRlck5vZGUgY3JlYXRlQmlxdWFkRmlsdGVy
KCk7CisgICAgW01heVRocm93RXhjZXB0aW9uXSBXYXZlU2hhcGVyTm9kZSBjcmVhdGVXYXZlU2hh
cGVyKCk7CisgICAgW01heVRocm93RXhjZXB0aW9uXSBQYW5uZXJOb2RlIGNyZWF0ZVBhbm5lcigp
OworICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gQ29udm9sdmVyTm9kZSBjcmVhdGVDb252b2x2ZXIo
KTsKKyAgICBbTWF5VGhyb3dFeGNlcHRpb25dIER5bmFtaWNzQ29tcHJlc3Nvck5vZGUgY3JlYXRl
RHluYW1pY3NDb21wcmVzc29yKCk7CisgICAgW01heVRocm93RXhjZXB0aW9uXSBBbmFseXNlck5v
ZGUgY3JlYXRlQW5hbHlzZXIoKTsKKyAgICBbTWF5VGhyb3dFeGNlcHRpb25dIFNjcmlwdFByb2Nl
c3Nvck5vZGUgY3JlYXRlU2NyaXB0UHJvY2Vzc29yKG9wdGlvbmFsIHVuc2lnbmVkIGxvbmcgYnVm
ZmVyU2l6ZSA9IDAsIG9wdGlvbmFsIHVuc2lnbmVkIGxvbmcgbnVtYmVyT2ZJbnB1dENoYW5uZWxz
ID0gMiwgb3B0aW9uYWwgdW5zaWduZWQgbG9uZyBudW1iZXJPZk91dHB1dENoYW5uZWxzID0gMik7
CisgICAgW01heVRocm93RXhjZXB0aW9uXSBPc2NpbGxhdG9yTm9kZSBjcmVhdGVPc2NpbGxhdG9y
KCk7CisgICAgW01heVRocm93RXhjZXB0aW9uXSBQZXJpb2RpY1dhdmUgY3JlYXRlUGVyaW9kaWNX
YXZlKEZsb2F0MzJBcnJheSByZWFsLCBGbG9hdDMyQXJyYXkgaW1hZyk7CisKKyAgICAvLyBDaGFu
bmVsIHNwbGl0dGluZyBhbmQgbWVyZ2luZworICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gQ2hhbm5l
bFNwbGl0dGVyTm9kZSBjcmVhdGVDaGFubmVsU3BsaXR0ZXIob3B0aW9uYWwgdW5zaWduZWQgbG9u
ZyBudW1iZXJPZk91dHB1dHMgPSA2KTsKKyAgICBbTWF5VGhyb3dFeGNlcHRpb25dIENoYW5uZWxN
ZXJnZXJOb2RlIGNyZWF0ZUNoYW5uZWxNZXJnZXIob3B0aW9uYWwgdW5zaWduZWQgbG9uZyBudW1i
ZXJPZklucHV0cyA9IDYpOworCisgICAgLy8gT2ZmbGluZSByZW5kZXJpbmcKKyAgICAvLyB2b2lk
IHByZXBhcmVPZmZsaW5lQnVmZmVyUmVuZGVyaW5nKHVuc2lnbmVkIGxvbmcgbnVtYmVyT2ZDaGFu
bmVscywgdW5zaWduZWQgbG9uZyBudW1iZXJPZkZyYW1lcywgdW5yZXN0cmljdGVkIGZsb2F0IHNh
bXBsZVJhdGUpOworICAgIGF0dHJpYnV0ZSBFdmVudEhhbmRsZXIgb25jb21wbGV0ZTsKKyAgICB2
b2lkIHN0YXJ0UmVuZGVyaW5nKCk7Cit9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJhdWRpby9XZWJLaXRBdWRpb1Bhbm5lck5vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJhdWRpby9XZWJLaXRBdWRpb1Bhbm5lck5vZGUuY3BwCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi5mM2U3YzE2ZDg4NgotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vV2ViS2l0QXVkaW9QYW5uZXJOb2RlLmNw
cApAQCAtMCwwICsxLDM3NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCwgR29vZ2xlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycg
QU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OCisgKiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMKKyAqIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNp
bmNsdWRlICJXZWJLaXRBdWRpb1Bhbm5lck5vZGUuaCIKKworI2lmIEVOQUJMRShXRUJfQVVESU8p
CisKKyNpbmNsdWRlICJBdWRpb0J1ZmZlclNvdXJjZU5vZGUuaCIKKyNpbmNsdWRlICJBdWRpb0J1
cy5oIgorI2luY2x1ZGUgIkF1ZGlvQ29udGV4dC5oIgorI2luY2x1ZGUgIkF1ZGlvTm9kZUlucHV0
LmgiCisjaW5jbHVkZSAiQXVkaW9Ob2RlT3V0cHV0LmgiCisjaW5jbHVkZSAiSFJURkRhdGFiYXNl
TG9hZGVyLmgiCisjaW5jbHVkZSAiSFJURlBhbm5lci5oIgorI2luY2x1ZGUgIlNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQuaCIKKyNpbmNsdWRlIDx3dGYvSXNvTWFsbG9jSW5saW5lcy5oPgorI2luY2x1
ZGUgPHd0Zi9NYXRoRXh0cmFzLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworV1RGX01BS0Vf
SVNPX0FMTE9DQVRFRF9JTVBMKFdlYktpdEF1ZGlvUGFubmVyTm9kZSk7CisKK3N0YXRpYyB2b2lk
IGZpeE5BTnMoZG91YmxlICZ4KQoreworICAgIGlmIChzdGQ6OmlzbmFuKHgpIHx8IHN0ZDo6aXNp
bmYoeCkpCisgICAgICAgIHggPSAwLjA7Cit9CisKK1dlYktpdEF1ZGlvUGFubmVyTm9kZTo6UGFu
bmVyTm9kZShBdWRpb0NvbnRleHQmIGNvbnRleHQsIGZsb2F0IHNhbXBsZVJhdGUpCisgICAgOiBB
dWRpb05vZGUoY29udGV4dCwgc2FtcGxlUmF0ZSkKKyAgICAsIG1fcGFubmluZ01vZGVsKFBhbm5p
bmdNb2RlbFR5cGU6OkhSVEYpCisgICAgLCBtX2xhc3RHYWluKC0xLjApCisgICAgLCBtX3Bvc2l0
aW9uWChBdWRpb1BhcmFtOjpjcmVhdGUoY29udGV4dCwgInBvc2l0aW9uWCJfcywgMCwgLUZMVF9N
QVgsIEZMVF9NQVgpKQorICAgICwgbV9wb3NpdGlvblkoQXVkaW9QYXJhbTo6Y3JlYXRlKGNvbnRl
eHQsICJwb3NpdGlvblkiX3MsIDAsIC1GTFRfTUFYLCBGTFRfTUFYKSkKKyAgICAsIG1fcG9zaXRp
b25aKEF1ZGlvUGFyYW06OmNyZWF0ZShjb250ZXh0LCAicG9zaXRpb25aIl9zLCAwLCAtRkxUX01B
WCwgRkxUX01BWCkpCisgICAgLCBtX2Nvbm5lY3Rpb25Db3VudCgwKQoreworICAgIHNldE5vZGVU
eXBlKE5vZGVUeXBlUGFubmVyKTsKKworICAgIC8vIExvYWQgdGhlIEhSVEYgZGF0YWJhc2UgYXN5
bmNocm9ub3VzbHkgc28gd2UgZG9uJ3QgYmxvY2sgdGhlIEphdmFzY3JpcHQgdGhyZWFkIHdoaWxl
IGNyZWF0aW5nIHRoZSBIUlRGIGRhdGFiYXNlLgorICAgIG1faHJ0ZkRhdGFiYXNlTG9hZGVyID0g
SFJURkRhdGFiYXNlTG9hZGVyOjpjcmVhdGVBbmRMb2FkQXN5bmNocm9ub3VzbHlJZk5lY2Vzc2Fy
eShjb250ZXh0LnNhbXBsZVJhdGUoKSk7CisKKyAgICBhZGRJbnB1dChtYWtlVW5pcXVlPEF1ZGlv
Tm9kZUlucHV0Pih0aGlzKSk7CisgICAgYWRkT3V0cHV0KG1ha2VVbmlxdWU8QXVkaW9Ob2RlT3V0
cHV0Pih0aGlzLCAyKSk7CisKKyAgICAvLyBOb2RlLXNwZWNpZmljIGRlZmF1bHQgbWl4aW5nIHJ1
bGVzLgorICAgIG1fY2hhbm5lbENvdW50ID0gMjsKKyAgICBtX2NoYW5uZWxDb3VudE1vZGUgPSBD
bGFtcGVkTWF4OworICAgIG1fY2hhbm5lbEludGVycHJldGF0aW9uID0gQXVkaW9CdXM6OlNwZWFr
ZXJzOworCisgICAgbV9kaXN0YW5jZUdhaW4gPSBBdWRpb1BhcmFtOjpjcmVhdGUoY29udGV4dCwg
ImRpc3RhbmNlR2FpbiIsIDEuMCwgMC4wLCAxLjApOworICAgIG1fY29uZUdhaW4gPSBBdWRpb1Bh
cmFtOjpjcmVhdGUoY29udGV4dCwgImNvbmVHYWluIiwgMS4wLCAwLjAsIDEuMCk7CisKKyAgICBt
X29yaWVudGF0aW9uID0gRmxvYXRQb2ludDNEKDEsIDAsIDApOworICAgIG1fdmVsb2NpdHkgPSBG
bG9hdFBvaW50M0QoMCwgMCwgMCk7CisKKyAgICBpbml0aWFsaXplKCk7Cit9CisKK1dlYktpdEF1
ZGlvUGFubmVyTm9kZTo6flBhbm5lck5vZGUoKQoreworICAgIHVuaW5pdGlhbGl6ZSgpOworfQor
Cit2b2lkIFdlYktpdEF1ZGlvUGFubmVyTm9kZTo6cHVsbElucHV0cyhzaXplX3QgZnJhbWVzVG9Q
cm9jZXNzKQoreworICAgIC8vIFdlIG92ZXJyaWRlIHB1bGxJbnB1dHMoKSwgc28gd2UgY2FuIGRl
dGVjdCBuZXcgQXVkaW9Tb3VyY2VOb2RlcyB3aGljaCBoYXZlIGNvbm5lY3RlZCB0byB1cyB3aGVu
IG5ldyBjb25uZWN0aW9ucyBhcmUgbWFkZS4KKyAgICAvLyBUaGVzZSBBdWRpb1NvdXJjZU5vZGVz
IG5lZWQgdG8gYmUgbWFkZSBhd2FyZSBvZiBvdXIgZXhpc3RlbmNlIGluIG9yZGVyIHRvIGhhbmRs
ZSBkb3BwbGVyIHNoaWZ0IHBpdGNoIGNoYW5nZXMuCisgICAgaWYgKG1fY29ubmVjdGlvbkNvdW50
ICE9IGNvbnRleHQoKS5jb25uZWN0aW9uQ291bnQoKSkgeworICAgICAgICBtX2Nvbm5lY3Rpb25D
b3VudCA9IGNvbnRleHQoKS5jb25uZWN0aW9uQ291bnQoKTsKKworICAgICAgICAvLyBSZWN1cnNp
dmVseSBnbyB0aHJvdWdoIGFsbCBub2RlcyBjb25uZWN0ZWQgdG8gdXMuCisgICAgICAgIEhhc2hT
ZXQ8QXVkaW9Ob2RlKj4gdmlzaXRlZE5vZGVzOworICAgICAgICBub3RpZnlBdWRpb1NvdXJjZXND
b25uZWN0ZWRUb05vZGUodGhpcywgdmlzaXRlZE5vZGVzKTsKKyAgICB9CisKKyAgICBBdWRpb05v
ZGU6OnB1bGxJbnB1dHMoZnJhbWVzVG9Qcm9jZXNzKTsKK30KKwordm9pZCBXZWJLaXRBdWRpb1Bh
bm5lck5vZGU6OnByb2Nlc3Moc2l6ZV90IGZyYW1lc1RvUHJvY2VzcykKK3sKKyAgICBBdWRpb0J1
cyogZGVzdGluYXRpb24gPSBvdXRwdXQoMCktPmJ1cygpOworCisgICAgaWYgKCFpc0luaXRpYWxp
emVkKCkgfHwgIWlucHV0KDApLT5pc0Nvbm5lY3RlZCgpIHx8ICFtX3Bhbm5lci5nZXQoKSkgewor
ICAgICAgICBkZXN0aW5hdGlvbi0+emVybygpOworICAgICAgICByZXR1cm47CisgICAgfQorCisg
ICAgQXVkaW9CdXMqIHNvdXJjZSA9IGlucHV0KDApLT5idXMoKTsKKyAgICBpZiAoIXNvdXJjZSkg
eworICAgICAgICBkZXN0aW5hdGlvbi0+emVybygpOworICAgICAgICByZXR1cm47CisgICAgfQor
CisgICAgLy8gSFJURkRhdGFiYXNlIHNob3VsZCBiZSBsb2FkZWQgYmVmb3JlIHByb2NlZWRpbmcg
Zm9yIG9mZmxpbmUgYXVkaW8gY29udGV4dCB3aGVuIHBhbm5pbmdNb2RlbCgpIGlzICJIUlRGIi4K
KyAgICBpZiAocGFubmluZ01vZGVsKCkgPT0gUGFubmluZ01vZGVsVHlwZTo6SFJURiAmJiAhbV9o
cnRmRGF0YWJhc2VMb2FkZXItPmlzTG9hZGVkKCkpIHsKKyAgICAgICAgaWYgKGNvbnRleHQoKS5p
c09mZmxpbmVDb250ZXh0KCkpCisgICAgICAgICAgICBtX2hydGZEYXRhYmFzZUxvYWRlci0+d2Fp
dEZvckxvYWRlclRocmVhZENvbXBsZXRpb24oKTsKKyAgICAgICAgZWxzZSB7CisgICAgICAgICAg
ICBkZXN0aW5hdGlvbi0+emVybygpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9Cisg
ICAgfQorCisgICAgLy8gVGhlIGF1ZGlvIHRocmVhZCBjYW4ndCBibG9jayBvbiB0aGlzIGxvY2ss
IHNvIHdlIHVzZSBzdGQ6OnRyeV90b19sb2NrIGluc3RlYWQuCisgICAgc3RkOjp1bmlxdWVfbG9j
azxMb2NrPiBsb2NrKG1fcGFubmVyTXV0ZXgsIHN0ZDo6dHJ5X3RvX2xvY2spOworICAgIGlmICgh
bG9jay5vd25zX2xvY2soKSkgeworICAgICAgICAvLyBUb28gYmFkIC0gVGhlIHRyeV9sb2NrKCkg
ZmFpbGVkLiBXZSBtdXN0IGJlIGluIHRoZSBtaWRkbGUgb2YgY2hhbmdpbmcgdGhlIHBhbm5lci4K
KyAgICAgICAgZGVzdGluYXRpb24tPnplcm8oKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKwor
ICAgIC8vIEFwcGx5IHRoZSBwYW5uaW5nIGVmZmVjdC4KKyAgICBkb3VibGUgYXppbXV0aDsKKyAg
ICBkb3VibGUgZWxldmF0aW9uOworICAgIGdldEF6aW11dGhFbGV2YXRpb24oJmF6aW11dGgsICZl
bGV2YXRpb24pOworICAgIG1fcGFubmVyLT5wYW4oYXppbXV0aCwgZWxldmF0aW9uLCBzb3VyY2Us
IGRlc3RpbmF0aW9uLCBmcmFtZXNUb1Byb2Nlc3MpOworCisgICAgLy8gR2V0IHRoZSBkaXN0YW5j
ZSBhbmQgY29uZSBnYWluLgorICAgIGRvdWJsZSB0b3RhbEdhaW4gPSBkaXN0YW5jZUNvbmVHYWlu
KCk7CisKKyAgICAvLyBTbmFwIHRvIGRlc2lyZWQgZ2FpbiBhdCB0aGUgYmVnaW5uaW5nLgorICAg
IGlmIChtX2xhc3RHYWluID09IC0xLjApCisgICAgICAgIG1fbGFzdEdhaW4gPSB0b3RhbEdhaW47
CisKKyAgICAvLyBBcHBseSBnYWluIGluLXBsYWNlIHdpdGggZGUtemlwcGVyaW5nLgorICAgIGRl
c3RpbmF0aW9uLT5jb3B5V2l0aEdhaW5Gcm9tKCpkZXN0aW5hdGlvbiwgJm1fbGFzdEdhaW4sIHRv
dGFsR2Fpbik7Cit9CisKK3ZvaWQgV2ViS2l0QXVkaW9QYW5uZXJOb2RlOjpyZXNldCgpCit7Cisg
ICAgbV9sYXN0R2FpbiA9IC0xLjA7IC8vIGZvcmNlIHRvIHNuYXAgdG8gaW5pdGlhbCBnYWluCisg
ICAgaWYgKG1fcGFubmVyLmdldCgpKQorICAgICAgICBtX3Bhbm5lci0+cmVzZXQoKTsKK30KKwor
dm9pZCBXZWJLaXRBdWRpb1Bhbm5lck5vZGU6OmluaXRpYWxpemUoKQoreworICAgIGlmIChpc0lu
aXRpYWxpemVkKCkpCisgICAgICAgIHJldHVybjsKKworICAgIG1fcGFubmVyID0gUGFubmVyOjpj
cmVhdGUobV9wYW5uaW5nTW9kZWwsIHNhbXBsZVJhdGUoKSwgbV9ocnRmRGF0YWJhc2VMb2FkZXIu
Z2V0KCkpOworCisgICAgQXVkaW9Ob2RlOjppbml0aWFsaXplKCk7Cit9CisKK3ZvaWQgV2ViS2l0
QXVkaW9QYW5uZXJOb2RlOjp1bmluaXRpYWxpemUoKQoreworICAgIGlmICghaXNJbml0aWFsaXpl
ZCgpKQorICAgICAgICByZXR1cm47CisKKyAgICBtX3Bhbm5lciA9IG51bGxwdHI7CisgICAgQXVk
aW9Ob2RlOjp1bmluaXRpYWxpemUoKTsKK30KKworQXVkaW9MaXN0ZW5lciogV2ViS2l0QXVkaW9Q
YW5uZXJOb2RlOjpsaXN0ZW5lcigpCit7CisgICAgcmV0dXJuIGNvbnRleHQoKS5saXN0ZW5lcigp
OworfQorCit2b2lkIFdlYktpdEF1ZGlvUGFubmVyTm9kZTo6c2V0UGFubmluZ01vZGVsKFBhbm5p
bmdNb2RlbFR5cGUgbW9kZWwpCit7CisgICAgaWYgKCFtX3Bhbm5lci5nZXQoKSB8fCBtb2RlbCAh
PSBtX3Bhbm5pbmdNb2RlbCkgeworICAgICAgICAvLyBUaGlzIHN5bmNocm9uaXplcyB3aXRoIHBy
b2Nlc3MoKS4KKyAgICAgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhtX3Bhbm5lck11dGV4KTsK
KworICAgICAgICBtX3Bhbm5lciA9IFBhbm5lcjo6Y3JlYXRlKG1vZGVsLCBzYW1wbGVSYXRlKCks
IG1faHJ0ZkRhdGFiYXNlTG9hZGVyLmdldCgpKTsKKyAgICAgICAgbV9wYW5uaW5nTW9kZWwgPSBt
b2RlbDsKKyAgICB9Cit9CisKK0Zsb2F0UG9pbnQzRCBXZWJLaXRBdWRpb1Bhbm5lck5vZGU6OnBv
c2l0aW9uKCkgY29uc3QKK3sKKyAgICByZXR1cm4gRmxvYXRQb2ludDNEKG1fcG9zaXRpb25YLT52
YWx1ZSgpLCBtX3Bvc2l0aW9uWS0+dmFsdWUoKSwgbV9wb3NpdGlvblotPnZhbHVlKCkpOworfQor
Cit2b2lkIFdlYktpdEF1ZGlvUGFubmVyTm9kZTo6c2V0UG9zaXRpb24oZmxvYXQgeCwgZmxvYXQg
eSwgZmxvYXQgeikKK3sKKyAgICBtX3Bvc2l0aW9uWC0+c2V0VmFsdWUoeCk7CisgICAgbV9wb3Np
dGlvblktPnNldFZhbHVlKHkpOworICAgIG1fcG9zaXRpb25aLT5zZXRWYWx1ZSh6KTsKK30KKwor
RGlzdGFuY2VNb2RlbFR5cGUgV2ViS2l0QXVkaW9QYW5uZXJOb2RlOjpkaXN0YW5jZU1vZGVsKCkg
Y29uc3QKK3sKKyAgICByZXR1cm4gY29uc3RfY2FzdDxQYW5uZXJOb2RlKj4odGhpcyktPm1fZGlz
dGFuY2VFZmZlY3QubW9kZWwoKTsKK30KKwordm9pZCBXZWJLaXRBdWRpb1Bhbm5lck5vZGU6OnNl
dERpc3RhbmNlTW9kZWwoRGlzdGFuY2VNb2RlbFR5cGUgbW9kZWwpCit7CisgICAgbV9kaXN0YW5j
ZUVmZmVjdC5zZXRNb2RlbChtb2RlbCwgdHJ1ZSk7Cit9CisKK3ZvaWQgV2ViS2l0QXVkaW9QYW5u
ZXJOb2RlOjpnZXRBemltdXRoRWxldmF0aW9uKGRvdWJsZSogb3V0QXppbXV0aCwgZG91YmxlKiBv
dXRFbGV2YXRpb24pCit7CisgICAgLy8gRklYTUU6IHdlIHNob3VsZCBjYWNoZSBhemltdXRoIGFu
ZCBlbGV2YXRpb24gKGlmIHBvc3NpYmxlKSwgc28gd2Ugb25seSByZS1jYWxjdWxhdGUgaWYgYSBj
aGFuZ2UgaGFzIGJlZW4gbWFkZS4KKworICAgIGRvdWJsZSBhemltdXRoID0gMC4wOworCisgICAg
Ly8gQ2FsY3VsYXRlIHRoZSBzb3VyY2UtbGlzdGVuZXIgdmVjdG9yCisgICAgRmxvYXRQb2ludDNE
IGxpc3RlbmVyUG9zaXRpb24gPSBsaXN0ZW5lcigpLT5wb3NpdGlvbigpOworICAgIEZsb2F0UG9p
bnQzRCBzb3VyY2VMaXN0ZW5lciA9IHBvc2l0aW9uKCkgLSBsaXN0ZW5lclBvc2l0aW9uOworCisg
ICAgaWYgKHNvdXJjZUxpc3RlbmVyLmlzWmVybygpKSB7CisgICAgICAgIC8vIGRlZ2VuZXJhdGUg
Y2FzZSBpZiBzb3VyY2UgYW5kIGxpc3RlbmVyIGFyZSBhdCB0aGUgc2FtZSBwb2ludAorICAgICAg
ICAqb3V0QXppbXV0aCA9IDAuMDsKKyAgICAgICAgKm91dEVsZXZhdGlvbiA9IDAuMDsKKyAgICAg
ICAgcmV0dXJuOworICAgIH0KKworICAgIHNvdXJjZUxpc3RlbmVyLm5vcm1hbGl6ZSgpOworCisg
ICAgLy8gQWxpZ24gYXhlcworICAgIEZsb2F0UG9pbnQzRCBsaXN0ZW5lckZyb250ID0gbGlzdGVu
ZXIoKS0+b3JpZW50YXRpb24oKTsKKyAgICBGbG9hdFBvaW50M0QgbGlzdGVuZXJVcCA9IGxpc3Rl
bmVyKCktPnVwVmVjdG9yKCk7CisgICAgRmxvYXRQb2ludDNEIGxpc3RlbmVyUmlnaHQgPSBsaXN0
ZW5lckZyb250LmNyb3NzKGxpc3RlbmVyVXApOworICAgIGxpc3RlbmVyUmlnaHQubm9ybWFsaXpl
KCk7CisKKyAgICBGbG9hdFBvaW50M0QgbGlzdGVuZXJGcm9udE5vcm0gPSBsaXN0ZW5lckZyb250
OworICAgIGxpc3RlbmVyRnJvbnROb3JtLm5vcm1hbGl6ZSgpOworCisgICAgRmxvYXRQb2ludDNE
IHVwID0gbGlzdGVuZXJSaWdodC5jcm9zcyhsaXN0ZW5lckZyb250Tm9ybSk7CisKKyAgICBmbG9h
dCB1cFByb2plY3Rpb24gPSBzb3VyY2VMaXN0ZW5lci5kb3QodXApOworCisgICAgRmxvYXRQb2lu
dDNEIHByb2plY3RlZFNvdXJjZSA9IHNvdXJjZUxpc3RlbmVyIC0gdXBQcm9qZWN0aW9uICogdXA7
CisgICAgcHJvamVjdGVkU291cmNlLm5vcm1hbGl6ZSgpOworCisgICAgYXppbXV0aCA9IDE4MC4w
ICogYWNvcyhwcm9qZWN0ZWRTb3VyY2UuZG90KGxpc3RlbmVyUmlnaHQpKSAvIHBpRG91YmxlOwor
ICAgIGZpeE5BTnMoYXppbXV0aCk7IC8vIGF2b2lkIGlsbGVnYWwgdmFsdWVzCisKKyAgICAvLyBT
b3VyY2UgIGluIGZyb250IG9yIGJlaGluZCB0aGUgbGlzdGVuZXIKKyAgICBkb3VibGUgZnJvbnRC
YWNrID0gcHJvamVjdGVkU291cmNlLmRvdChsaXN0ZW5lckZyb250Tm9ybSk7CisgICAgaWYgKGZy
b250QmFjayA8IDAuMCkKKyAgICAgICAgYXppbXV0aCA9IDM2MC4wIC0gYXppbXV0aDsKKworICAg
IC8vIE1ha2UgYXppbXV0aCByZWxhdGl2ZSB0byAiZnJvbnQiIGFuZCBub3QgInJpZ2h0IiBsaXN0
ZW5lciB2ZWN0b3IKKyAgICBpZiAoKGF6aW11dGggPj0gMC4wKSAmJiAoYXppbXV0aCA8PSAyNzAu
MCkpCisgICAgICAgIGF6aW11dGggPSA5MC4wIC0gYXppbXV0aDsKKyAgICBlbHNlCisgICAgICAg
IGF6aW11dGggPSA0NTAuMCAtIGF6aW11dGg7CisKKyAgICAvLyBFbGV2YXRpb24KKyAgICBkb3Vi
bGUgZWxldmF0aW9uID0gOTAuMCAtIDE4MC4wICogYWNvcyhzb3VyY2VMaXN0ZW5lci5kb3QodXAp
KSAvIHBpRG91YmxlOworICAgIGZpeE5BTnMoZWxldmF0aW9uKTsgLy8gYXZvaWQgaWxsZWdhbCB2
YWx1ZXMKKworICAgIGlmIChlbGV2YXRpb24gPiA5MC4wKQorICAgICAgICBlbGV2YXRpb24gPSAx
ODAuMCAtIGVsZXZhdGlvbjsKKyAgICBlbHNlIGlmIChlbGV2YXRpb24gPCAtOTAuMCkKKyAgICAg
ICAgZWxldmF0aW9uID0gLTE4MC4wIC0gZWxldmF0aW9uOworCisgICAgaWYgKG91dEF6aW11dGgp
CisgICAgICAgICpvdXRBemltdXRoID0gYXppbXV0aDsKKyAgICBpZiAob3V0RWxldmF0aW9uKQor
ICAgICAgICAqb3V0RWxldmF0aW9uID0gZWxldmF0aW9uOworfQorCitmbG9hdCBXZWJLaXRBdWRp
b1Bhbm5lck5vZGU6OmRvcHBsZXJSYXRlKCkKK3sKKyAgICBkb3VibGUgZG9wcGxlclNoaWZ0ID0g
MS4wOworCisgICAgLy8gRklYTUU6IG9wdGltaXplIGZvciBjYXNlIHdoZW4gbmVpdGhlciBzb3Vy
Y2Ugbm9yIGxpc3RlbmVyIGhhcyBjaGFuZ2VkLi4uCisgICAgZG91YmxlIGRvcHBsZXJGYWN0b3Ig
PSBsaXN0ZW5lcigpLT5kb3BwbGVyRmFjdG9yKCk7CisKKyAgICBpZiAoZG9wcGxlckZhY3RvciA+
IDAuMCkgeworICAgICAgICBkb3VibGUgc3BlZWRPZlNvdW5kID0gbGlzdGVuZXIoKS0+c3BlZWRP
ZlNvdW5kKCk7CisKKyAgICAgICAgY29uc3QgRmxvYXRQb2ludDNEICZzb3VyY2VWZWxvY2l0eSA9
IG1fdmVsb2NpdHk7CisgICAgICAgIGNvbnN0IEZsb2F0UG9pbnQzRCAmbGlzdGVuZXJWZWxvY2l0
eSA9IGxpc3RlbmVyKCktPnZlbG9jaXR5KCk7CisKKyAgICAgICAgLy8gRG9uJ3QgYm90aGVyIGlm
IGJvdGggc291cmNlIGFuZCBsaXN0ZW5lciBoYXZlIG5vIHZlbG9jaXR5CisgICAgICAgIGJvb2wg
c291cmNlSGFzVmVsb2NpdHkgPSAhc291cmNlVmVsb2NpdHkuaXNaZXJvKCk7CisgICAgICAgIGJv
b2wgbGlzdGVuZXJIYXNWZWxvY2l0eSA9ICFsaXN0ZW5lclZlbG9jaXR5LmlzWmVybygpOworCisg
ICAgICAgIGlmIChzb3VyY2VIYXNWZWxvY2l0eSB8fCBsaXN0ZW5lckhhc1ZlbG9jaXR5KSB7Cisg
ICAgICAgICAgICAvLyBDYWxjdWxhdGUgdGhlIHNvdXJjZSB0byBsaXN0ZW5lciB2ZWN0b3IKKyAg
ICAgICAgICAgIEZsb2F0UG9pbnQzRCBsaXN0ZW5lclBvc2l0aW9uID0gbGlzdGVuZXIoKS0+cG9z
aXRpb24oKTsKKyAgICAgICAgICAgIEZsb2F0UG9pbnQzRCBzb3VyY2VUb0xpc3RlbmVyID0gcG9z
aXRpb24oKSAtIGxpc3RlbmVyUG9zaXRpb247CisKKyAgICAgICAgICAgIGRvdWJsZSBzb3VyY2VM
aXN0ZW5lck1hZ25pdHVkZSA9IHNvdXJjZVRvTGlzdGVuZXIubGVuZ3RoKCk7CisKKyAgICAgICAg
ICAgIGRvdWJsZSBsaXN0ZW5lclByb2plY3Rpb24gPSBzb3VyY2VUb0xpc3RlbmVyLmRvdChsaXN0
ZW5lclZlbG9jaXR5KSAvIHNvdXJjZUxpc3RlbmVyTWFnbml0dWRlOworICAgICAgICAgICAgZG91
YmxlIHNvdXJjZVByb2plY3Rpb24gPSBzb3VyY2VUb0xpc3RlbmVyLmRvdChzb3VyY2VWZWxvY2l0
eSkgLyBzb3VyY2VMaXN0ZW5lck1hZ25pdHVkZTsKKworICAgICAgICAgICAgbGlzdGVuZXJQcm9q
ZWN0aW9uID0gLWxpc3RlbmVyUHJvamVjdGlvbjsKKyAgICAgICAgICAgIHNvdXJjZVByb2plY3Rp
b24gPSAtc291cmNlUHJvamVjdGlvbjsKKworICAgICAgICAgICAgZG91YmxlIHNjYWxlZFNwZWVk
T2ZTb3VuZCA9IHNwZWVkT2ZTb3VuZCAvIGRvcHBsZXJGYWN0b3I7CisgICAgICAgICAgICBsaXN0
ZW5lclByb2plY3Rpb24gPSBzdGQ6Om1pbihsaXN0ZW5lclByb2plY3Rpb24sIHNjYWxlZFNwZWVk
T2ZTb3VuZCk7CisgICAgICAgICAgICBzb3VyY2VQcm9qZWN0aW9uID0gc3RkOjptaW4oc291cmNl
UHJvamVjdGlvbiwgc2NhbGVkU3BlZWRPZlNvdW5kKTsKKworICAgICAgICAgICAgZG9wcGxlclNo
aWZ0ID0gKChzcGVlZE9mU291bmQgLSBkb3BwbGVyRmFjdG9yICogbGlzdGVuZXJQcm9qZWN0aW9u
KSAvIChzcGVlZE9mU291bmQgLSBkb3BwbGVyRmFjdG9yICogc291cmNlUHJvamVjdGlvbikpOwor
ICAgICAgICAgICAgZml4TkFOcyhkb3BwbGVyU2hpZnQpOyAvLyBhdm9pZCBpbGxlZ2FsIHZhbHVl
cworCisgICAgICAgICAgICAvLyBMaW1pdCB0aGUgcGl0Y2ggc2hpZnRpbmcgdG8gNCBvY3RhdmVz
IHVwIGFuZCAzIG9jdGF2ZXMgZG93bi4KKyAgICAgICAgICAgIGlmIChkb3BwbGVyU2hpZnQgPiAx
Ni4wKQorICAgICAgICAgICAgICAgIGRvcHBsZXJTaGlmdCA9IDE2LjA7CisgICAgICAgICAgICBl
bHNlIGlmIChkb3BwbGVyU2hpZnQgPCAwLjEyNSkKKyAgICAgICAgICAgICAgICBkb3BwbGVyU2hp
ZnQgPSAwLjEyNTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHJldHVybiBzdGF0aWNfY2FzdDxm
bG9hdD4oZG9wcGxlclNoaWZ0KTsKK30KKworZmxvYXQgV2ViS2l0QXVkaW9QYW5uZXJOb2RlOjpk
aXN0YW5jZUNvbmVHYWluKCkKK3sKKyAgICBGbG9hdFBvaW50M0QgbGlzdGVuZXJQb3NpdGlvbiA9
IGxpc3RlbmVyKCktPnBvc2l0aW9uKCk7CisgICAgRmxvYXRQb2ludDNEIHNvdXJjZVBvc2l0aW9u
ID0gcG9zaXRpb24oKTsKKworICAgIGRvdWJsZSBsaXN0ZW5lckRpc3RhbmNlID0gc291cmNlUG9z
aXRpb24uZGlzdGFuY2VUbyhsaXN0ZW5lclBvc2l0aW9uKTsKKyAgICBkb3VibGUgZGlzdGFuY2VH
YWluID0gbV9kaXN0YW5jZUVmZmVjdC5nYWluKGxpc3RlbmVyRGlzdGFuY2UpOworCisgICAgbV9k
aXN0YW5jZUdhaW4tPnNldFZhbHVlKHN0YXRpY19jYXN0PGZsb2F0PihkaXN0YW5jZUdhaW4pKTsK
KworICAgIC8vIEZJWE1FOiBjb3VsZCBvcHRpbWl6ZSBieSBjYWNoaW5nIGNvbmVHYWluCisgICAg
ZG91YmxlIGNvbmVHYWluID0gbV9jb25lRWZmZWN0LmdhaW4oc291cmNlUG9zaXRpb24sIG1fb3Jp
ZW50YXRpb24sIGxpc3RlbmVyUG9zaXRpb24pOworCisgICAgbV9jb25lR2Fpbi0+c2V0VmFsdWUo
c3RhdGljX2Nhc3Q8ZmxvYXQ+KGNvbmVHYWluKSk7CisKKyAgICByZXR1cm4gZmxvYXQoZGlzdGFu
Y2VHYWluICogY29uZUdhaW4pOworfQorCit2b2lkIFdlYktpdEF1ZGlvUGFubmVyTm9kZTo6bm90
aWZ5QXVkaW9Tb3VyY2VzQ29ubmVjdGVkVG9Ob2RlKEF1ZGlvTm9kZSogbm9kZSwgSGFzaFNldDxB
dWRpb05vZGUqPiYgdmlzaXRlZE5vZGVzKQoreworICAgIEFTU0VSVChub2RlKTsKKyAgICBpZiAo
IW5vZGUpCisgICAgICAgIHJldHVybjsKKworICAgIC8vIEZpcnN0IGNoZWNrIGlmIHRoaXMgbm9k
ZSBpcyBhbiBBdWRpb0J1ZmZlclNvdXJjZU5vZGUuIElmIHNvLCBsZXQgaXQga25vdyBhYm91dCB1
cyBzbyB0aGF0IGRvcHBsZXIgc2hpZnQgcGl0Y2ggY2FuIGJlIHRha2VuIGludG8gYWNjb3VudC4K
KyAgICBpZiAobm9kZS0+bm9kZVR5cGUoKSA9PSBOb2RlVHlwZUF1ZGlvQnVmZmVyU291cmNlKSB7
CisgICAgICAgIEF1ZGlvQnVmZmVyU291cmNlTm9kZSogYnVmZmVyU291cmNlTm9kZSA9IHJlaW50
ZXJwcmV0X2Nhc3Q8QXVkaW9CdWZmZXJTb3VyY2VOb2RlKj4obm9kZSk7CisgICAgICAgIGJ1ZmZl
clNvdXJjZU5vZGUtPnNldFBhbm5lck5vZGUodGhpcyk7CisgICAgfSBlbHNlIHsKKyAgICAgICAg
Ly8gR28gdGhyb3VnaCBhbGwgaW5wdXRzIHRvIHRoaXMgbm9kZS4KKyAgICAgICAgZm9yICh1bnNp
Z25lZCBpID0gMDsgaSA8IG5vZGUtPm51bWJlck9mSW5wdXRzKCk7ICsraSkgeworICAgICAgICAg
ICAgQXVkaW9Ob2RlSW5wdXQqIGlucHV0ID0gbm9kZS0+aW5wdXQoaSk7CisKKyAgICAgICAgICAg
IC8vIEZvciBlYWNoIGlucHV0LCBnbyB0aHJvdWdoIGFsbCBvZiBpdHMgY29ubmVjdGlvbnMsIGxv
b2tpbmcgZm9yIEF1ZGlvQnVmZmVyU291cmNlTm9kZXMuCisgICAgICAgICAgICBmb3IgKHVuc2ln
bmVkIGogPSAwOyBqIDwgaW5wdXQtPm51bWJlck9mUmVuZGVyaW5nQ29ubmVjdGlvbnMoKTsgKytq
KSB7CisgICAgICAgICAgICAgICAgQXVkaW9Ob2RlT3V0cHV0KiBjb25uZWN0ZWRPdXRwdXQgPSBp
bnB1dC0+cmVuZGVyaW5nT3V0cHV0KGopOworICAgICAgICAgICAgICAgIEF1ZGlvTm9kZSogY29u
bmVjdGVkTm9kZSA9IGNvbm5lY3RlZE91dHB1dC0+bm9kZSgpOworICAgICAgICAgICAgICAgIGlm
ICh2aXNpdGVkTm9kZXMuY29udGFpbnMoY29ubmVjdGVkTm9kZSkpCisgICAgICAgICAgICAgICAg
ICAgIGNvbnRpbnVlOworCisgICAgICAgICAgICAgICAgdmlzaXRlZE5vZGVzLmFkZChjb25uZWN0
ZWROb2RlKTsKKyAgICAgICAgICAgICAgICBub3RpZnlBdWRpb1NvdXJjZXNDb25uZWN0ZWRUb05v
ZGUoY29ubmVjdGVkTm9kZSwgdmlzaXRlZE5vZGVzKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAg
fQorICAgIH0KK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxF
KFdFQl9BVURJTykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8v
V2ViS2l0QXVkaW9QYW5uZXJOb2RlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlv
L1dlYktpdEF1ZGlvUGFubmVyTm9kZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwLi5jN2IzMGE3OGYzNQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViYXVkaW8vV2ViS2l0QXVkaW9QYW5uZXJOb2RlLmgKQEAgLTAsMCArMSwxNjEgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAsIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiAg
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhF
IElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICog
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTgorICogQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTCisg
KiBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShXRUJfQVVESU8pCisKKyNp
bmNsdWRlICJBdWRpb0xpc3RlbmVyLmgiCisjaW5jbHVkZSAiQXVkaW9Ob2RlLmgiCisjaW5jbHVk
ZSAiQXVkaW9QYXJhbS5oIgorI2luY2x1ZGUgIkNvbmUuaCIKKyNpbmNsdWRlICJEaXN0YW5jZS5o
IgorI2luY2x1ZGUgIkZsb2F0UG9pbnQzRC5oIgorI2luY2x1ZGUgIlBhbm5lci5oIgorI2luY2x1
ZGUgPG1lbW9yeT4KKyNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgorI2luY2x1ZGUgPHd0Zi9Mb2Nr
Lmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgSFJURkRhdGFiYXNlTG9hZGVyOwor
CisvLyBQYW5uZXJOb2RlIGlzIGFuIEF1ZGlvTm9kZSB3aXRoIG9uZSBpbnB1dCBhbmQgb25lIG91
dHB1dC4KKy8vIEl0IHBvc2l0aW9ucyBhIHNvdW5kIGluIDNEIHNwYWNlLCB3aXRoIHRoZSBleGFj
dCBlZmZlY3QgZGVwZW5kZW50IG9uIHRoZSBwYW5uaW5nIG1vZGVsLgorLy8gSXQgaGFzIGEgcG9z
aXRpb24gYW5kIGFuIG9yaWVudGF0aW9uIGluIDNEIHNwYWNlIHdoaWNoIGlzIHJlbGF0aXZlIHRv
IHRoZSBwb3NpdGlvbiBhbmQgb3JpZW50YXRpb24gb2YgdGhlIGNvbnRleHQncyBBdWRpb0xpc3Rl
bmVyLgorLy8gQSBkaXN0YW5jZSBlZmZlY3Qgd2lsbCBhdHRlbnVhdGUgdGhlIGdhaW4gYXMgdGhl
IHBvc2l0aW9uIG1vdmVzIGF3YXkgZnJvbSB0aGUgbGlzdGVuZXIuCisvLyBBIGNvbmUgZWZmZWN0
IHdpbGwgYXR0ZW51YXRlIHRoZSBnYWluIGFzIHRoZSBvcmllbnRhdGlvbiBtb3ZlcyBhd2F5IGZy
b20gdGhlIGxpc3RlbmVyLgorLy8gQWxsIG9mIHRoZXNlIGVmZmVjdHMgZm9sbG93IHRoZSBPcGVu
QUwgc3BlY2lmaWNhdGlvbiB2ZXJ5IGNsb3NlbHkuCisKK2NsYXNzIFdlYktpdEF1ZGlvUGFubmVy
Tm9kZSBmaW5hbCA6IHB1YmxpYyBBdWRpb05vZGUgeworICAgIFdURl9NQUtFX0lTT19BTExPQ0FU
RUQoV2ViS2l0QXVkaW9QYW5uZXJOb2RlKTsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUmVmPFdlYktp
dEF1ZGlvUGFubmVyTm9kZT4gY3JlYXRlKFdlYktpdEF1ZGlvQ29udGV4dCYgY29udGV4dCwgZmxv
YXQgc2FtcGxlUmF0ZSkKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFdlYktp
dEF1ZGlvUGFubmVyTm9kZShjb250ZXh0LCBzYW1wbGVSYXRlKSk7CisgICAgfQorCisgICAgdmly
dHVhbCB+V2ViS2l0QXVkaW9QYW5uZXJOb2RlKCk7CisKKyAgICAvLyBBdWRpb05vZGUKKyAgICB2
b2lkIHByb2Nlc3Moc2l6ZV90IGZyYW1lc1RvUHJvY2Vzcykgb3ZlcnJpZGU7CisgICAgdm9pZCBw
dWxsSW5wdXRzKHNpemVfdCBmcmFtZXNUb1Byb2Nlc3MpIG92ZXJyaWRlOworICAgIHZvaWQgcmVz
ZXQoKSBvdmVycmlkZTsKKyAgICB2b2lkIGluaXRpYWxpemUoKSBvdmVycmlkZTsKKyAgICB2b2lk
IHVuaW5pdGlhbGl6ZSgpIG92ZXJyaWRlOworCisgICAgLy8gTGlzdGVuZXIKKyAgICBBdWRpb0xp
c3RlbmVyKiBsaXN0ZW5lcigpOworCisgICAgLy8gUGFubmluZyBtb2RlbAorICAgIFBhbm5pbmdN
b2RlbFR5cGUgcGFubmluZ01vZGVsKCkgY29uc3QgeyByZXR1cm4gbV9wYW5uaW5nTW9kZWw7IH0K
KyAgICB2b2lkIHNldFBhbm5pbmdNb2RlbChQYW5uaW5nTW9kZWxUeXBlKTsKKworICAgIC8vIFBv
c2l0aW9uCisgICAgRmxvYXRQb2ludDNEIHBvc2l0aW9uKCkgY29uc3Q7CisgICAgdm9pZCBzZXRQ
b3NpdGlvbihmbG9hdCB4LCBmbG9hdCB5LCBmbG9hdCB6KTsKKyAgICBBdWRpb1BhcmFtJiBwb3Np
dGlvblgoKSB7IHJldHVybiBtX3Bvc2l0aW9uWC5nZXQoKTsgfQorICAgIEF1ZGlvUGFyYW0mIHBv
c2l0aW9uWSgpIHsgcmV0dXJuIG1fcG9zaXRpb25ZLmdldCgpOyB9CisgICAgQXVkaW9QYXJhbSYg
cG9zaXRpb25aKCkgeyByZXR1cm4gbV9wb3NpdGlvblouZ2V0KCk7IH0KKworICAgIC8vIE9yaWVu
dGF0aW9uCisgICAgRmxvYXRQb2ludDNEIG9yaWVudGF0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9v
cmllbnRhdGlvbjsgfQorICAgIHZvaWQgc2V0T3JpZW50YXRpb24oZmxvYXQgeCwgZmxvYXQgeSwg
ZmxvYXQgeikgeyBtX29yaWVudGF0aW9uID0gRmxvYXRQb2ludDNEKHgsIHksIHopOyB9CisKKyAg
ICAvLyBWZWxvY2l0eQorICAgIEZsb2F0UG9pbnQzRCB2ZWxvY2l0eSgpIGNvbnN0IHsgcmV0dXJu
IG1fdmVsb2NpdHk7IH0KKyAgICB2b2lkIHNldFZlbG9jaXR5KGZsb2F0IHgsIGZsb2F0IHksIGZs
b2F0IHopIHsgbV92ZWxvY2l0eSA9IEZsb2F0UG9pbnQzRCh4LCB5LCB6KTsgfQorCisgICAgLy8g
RGlzdGFuY2UgcGFyYW1ldGVycworICAgIERpc3RhbmNlTW9kZWxUeXBlIGRpc3RhbmNlTW9kZWwo
KSBjb25zdDsKKyAgICB2b2lkIHNldERpc3RhbmNlTW9kZWwoRGlzdGFuY2VNb2RlbFR5cGUpOwor
CisgICAgZG91YmxlIHJlZkRpc3RhbmNlKCkgeyByZXR1cm4gbV9kaXN0YW5jZUVmZmVjdC5yZWZE
aXN0YW5jZSgpOyB9CisgICAgdm9pZCBzZXRSZWZEaXN0YW5jZShkb3VibGUgcmVmRGlzdGFuY2Up
IHsgbV9kaXN0YW5jZUVmZmVjdC5zZXRSZWZEaXN0YW5jZShyZWZEaXN0YW5jZSk7IH0KKworICAg
IGRvdWJsZSBtYXhEaXN0YW5jZSgpIHsgcmV0dXJuIG1fZGlzdGFuY2VFZmZlY3QubWF4RGlzdGFu
Y2UoKTsgfQorICAgIHZvaWQgc2V0TWF4RGlzdGFuY2UoZG91YmxlIG1heERpc3RhbmNlKSB7IG1f
ZGlzdGFuY2VFZmZlY3Quc2V0TWF4RGlzdGFuY2UobWF4RGlzdGFuY2UpOyB9CisKKyAgICBkb3Vi
bGUgcm9sbG9mZkZhY3RvcigpIHsgcmV0dXJuIG1fZGlzdGFuY2VFZmZlY3Qucm9sbG9mZkZhY3Rv
cigpOyB9CisgICAgdm9pZCBzZXRSb2xsb2ZmRmFjdG9yKGRvdWJsZSByb2xsb2ZmRmFjdG9yKSB7
IG1fZGlzdGFuY2VFZmZlY3Quc2V0Um9sbG9mZkZhY3Rvcihyb2xsb2ZmRmFjdG9yKTsgfQorCisg
ICAgLy8gU291bmQgY29uZXMgLSBhbmdsZXMgaW4gZGVncmVlcworICAgIGRvdWJsZSBjb25lSW5u
ZXJBbmdsZSgpIGNvbnN0IHsgcmV0dXJuIG1fY29uZUVmZmVjdC5pbm5lckFuZ2xlKCk7IH0KKyAg
ICB2b2lkIHNldENvbmVJbm5lckFuZ2xlKGRvdWJsZSBhbmdsZSkgeyBtX2NvbmVFZmZlY3Quc2V0
SW5uZXJBbmdsZShhbmdsZSk7IH0KKworICAgIGRvdWJsZSBjb25lT3V0ZXJBbmdsZSgpIGNvbnN0
IHsgcmV0dXJuIG1fY29uZUVmZmVjdC5vdXRlckFuZ2xlKCk7IH0KKyAgICB2b2lkIHNldENvbmVP
dXRlckFuZ2xlKGRvdWJsZSBhbmdsZSkgeyBtX2NvbmVFZmZlY3Quc2V0T3V0ZXJBbmdsZShhbmds
ZSk7IH0KKworICAgIGRvdWJsZSBjb25lT3V0ZXJHYWluKCkgY29uc3QgeyByZXR1cm4gbV9jb25l
RWZmZWN0Lm91dGVyR2FpbigpOyB9CisgICAgdm9pZCBzZXRDb25lT3V0ZXJHYWluKGRvdWJsZSBh
bmdsZSkgeyBtX2NvbmVFZmZlY3Quc2V0T3V0ZXJHYWluKGFuZ2xlKTsgfQorCisgICAgdm9pZCBn
ZXRBemltdXRoRWxldmF0aW9uKGRvdWJsZSogb3V0QXppbXV0aCwgZG91YmxlKiBvdXRFbGV2YXRp
b24pOworICAgIGZsb2F0IGRvcHBsZXJSYXRlKCk7CisKKyAgICAvLyBBY2Nlc3NvcnMgZm9yIGR5
bmFtaWNhbGx5IGNhbGN1bGF0ZWQgZ2FpbiB2YWx1ZXMuCisgICAgQXVkaW9QYXJhbSogZGlzdGFu
Y2VHYWluKCkgeyByZXR1cm4gbV9kaXN0YW5jZUdhaW4uZ2V0KCk7IH0KKyAgICBBdWRpb1BhcmFt
KiBjb25lR2FpbigpIHsgcmV0dXJuIG1fY29uZUdhaW4uZ2V0KCk7IH0KKworICAgIGRvdWJsZSB0
YWlsVGltZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fcGFubmVyID8gbV9wYW5uZXItPnRh
aWxUaW1lKCkgOiAwOyB9CisgICAgZG91YmxlIGxhdGVuY3lUaW1lKCkgY29uc3Qgb3ZlcnJpZGUg
eyByZXR1cm4gbV9wYW5uZXIgPyBtX3Bhbm5lci0+bGF0ZW5jeVRpbWUoKSA6IDA7IH0KKworcHJp
dmF0ZToKKyAgICBXZWJLaXRBdWRpb1Bhbm5lck5vZGUoV2ViS2l0QXVkaW9Db250ZXh0JiwgZmxv
YXQgc2FtcGxlUmF0ZSk7CisKKyAgICAvLyBSZXR1cm5zIHRoZSBjb21iaW5lZCBkaXN0YW5jZSBh
bmQgY29uZSBnYWluIGF0dGVudWF0aW9uLgorICAgIGZsb2F0IGRpc3RhbmNlQ29uZUdhaW4oKTsK
KworICAgIC8vIE5vdGlmaWVzIGFueSBBdWRpb0J1ZmZlclNvdXJjZU5vZGVzIGNvbm5lY3RlZCB0
byB1cyBlaXRoZXIgZGlyZWN0bHkgb3IgaW5kaXJlY3RseSBhYm91dCBvdXIgZXhpc3RlbmNlLgor
ICAgIC8vIFRoaXMgaXMgaW4gb3JkZXIgdG8gaGFuZGxlIHRoZSBwaXRjaCBjaGFuZ2UgbmVjZXNz
YXJ5IGZvciB0aGUgZG9wcGxlciBzaGlmdC4KKyAgICB2b2lkIG5vdGlmeUF1ZGlvU291cmNlc0Nv
bm5lY3RlZFRvTm9kZShBdWRpb05vZGUqLCBIYXNoU2V0PEF1ZGlvTm9kZSo+JiB2aXNpdGVkTm9k
ZXMpOworCisgICAgc3RkOjp1bmlxdWVfcHRyPFBhbm5lcj4gbV9wYW5uZXI7CisgICAgUGFubmlu
Z01vZGVsVHlwZSBtX3Bhbm5pbmdNb2RlbDsKKworICAgIEZsb2F0UG9pbnQzRCBtX29yaWVudGF0
aW9uOworICAgIEZsb2F0UG9pbnQzRCBtX3ZlbG9jaXR5OworCisgICAgLy8gR2FpbgorICAgIFJl
ZlB0cjxBdWRpb1BhcmFtPiBtX2Rpc3RhbmNlR2FpbjsKKyAgICBSZWZQdHI8QXVkaW9QYXJhbT4g
bV9jb25lR2FpbjsKKyAgICBEaXN0YW5jZUVmZmVjdCBtX2Rpc3RhbmNlRWZmZWN0OworICAgIENv
bmVFZmZlY3QgbV9jb25lRWZmZWN0OworICAgIGZsb2F0IG1fbGFzdEdhaW47CisKKyAgICBSZWY8
QXVkaW9QYXJhbT4gbV9wb3NpdGlvblg7CisgICAgUmVmPEF1ZGlvUGFyYW0+IG1fcG9zaXRpb25Z
OworICAgIFJlZjxBdWRpb1BhcmFtPiBtX3Bvc2l0aW9uWjsKKworICAgIC8vIEhSVEYgRGF0YWJh
c2UgbG9hZGVyCisgICAgUmVmUHRyPEhSVEZEYXRhYmFzZUxvYWRlcj4gbV9ocnRmRGF0YWJhc2VM
b2FkZXI7CisKKyAgICB1bnNpZ25lZCBtX2Nvbm5lY3Rpb25Db3VudDsKKworICAgIC8vIFN5bmNo
cm9uaXplIHByb2Nlc3MoKSBhbmQgc2V0UGFubmluZ01vZGVsKCkgd2hpY2ggY2FuIGNoYW5nZSB0
aGUgcGFubmVyLgorICAgIG11dGFibGUgTG9jayBtX3Bhbm5lck11dGV4OworfTsKKworfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViYXVkaW8vV2ViS2l0T2ZmbGluZUF1ZGlvQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1dlYktpdE9mZmxpbmVBdWRpb0NvbnRleHQuY3BwCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi42MGI1OTdlOWVkZAotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vV2ViS2l0T2ZmbGluZUF1
ZGlvQ29udGV4dC5jcHAKQEAgLTAsMCArMSw2MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
MiwgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFS
RQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OCisgKiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKKyAqIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJj
b25maWcuaCIKKworI2lmIEVOQUJMRShXRUJfQVVESU8pCisKKyNpbmNsdWRlICJXZWJLaXRPZmZs
aW5lQXVkaW9Db250ZXh0LmgiCisKKyNpbmNsdWRlICJBdWRpb0J1ZmZlci5oIgorI2luY2x1ZGUg
IkRvY3VtZW50LmgiCisjaW5jbHVkZSA8d3RmL0lzb01hbGxvY0lubGluZXMuaD4KKworbmFtZXNw
YWNlIFdlYkNvcmUgeworCitXVEZfTUFLRV9JU09fQUxMT0NBVEVEX0lNUEwoV2ViS2l0T2ZmbGlu
ZUF1ZGlvQ29udGV4dCk7CisKK2lubGluZSBXZWJLaXRPZmZsaW5lQXVkaW9Db250ZXh0OjpPZmZs
aW5lQXVkaW9Db250ZXh0KERvY3VtZW50JiBkb2N1bWVudCwgQXVkaW9CdWZmZXIqIHJlbmRlclRh
cmdldCkKKyAgICA6IEF1ZGlvQ29udGV4dChkb2N1bWVudCwgcmVuZGVyVGFyZ2V0KQoreworfQor
CitFeGNlcHRpb25PcjxSZWY8T2ZmbGluZUF1ZGlvQ29udGV4dD4+IFdlYktpdE9mZmxpbmVBdWRp
b0NvbnRleHQ6OmNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCB1bnNpZ25l
ZCBudW1iZXJPZkNoYW5uZWxzLCBzaXplX3QgbnVtYmVyT2ZGcmFtZXMsIGZsb2F0IHNhbXBsZVJh
dGUpCit7CisgICAgLy8gRklYTUU6IEFkZCBzdXBwb3J0IGZvciB3b3JrZXJzLgorICAgIGlmICgh
aXM8RG9jdW1lbnQ+KGNvbnRleHQpKQorICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgTm90U3Vw
cG9ydGVkRXJyb3IgfTsKKyAgICBpZiAoIW51bWJlck9mQ2hhbm5lbHMgfHwgbnVtYmVyT2ZDaGFu
bmVscyA+IDEwIHx8ICFudW1iZXJPZkZyYW1lcyB8fCAhaXNTYW1wbGVSYXRlUmFuZ2VHb29kKHNh
bXBsZVJhdGUpKQorICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgU3ludGF4RXJyb3IgfTsKKyAg
ICBhdXRvIHJlbmRlclRhcmdldCA9IEF1ZGlvQnVmZmVyOjpjcmVhdGUobnVtYmVyT2ZDaGFubmVs
cywgbnVtYmVyT2ZGcmFtZXMsIHNhbXBsZVJhdGUpOworICAgIGlmICghcmVuZGVyVGFyZ2V0KQor
ICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgU3ludGF4RXJyb3IgfTsKKworICAgIGF1dG8gYXVk
aW9Db250ZXh0ID0gYWRvcHRSZWYoKm5ldyBPZmZsaW5lQXVkaW9Db250ZXh0KGRvd25jYXN0PERv
Y3VtZW50Pihjb250ZXh0KSwgcmVuZGVyVGFyZ2V0LmdldCgpKSk7CisgICAgYXVkaW9Db250ZXh0
LT5zdXNwZW5kSWZOZWVkZWQoKTsKKyAgICByZXR1cm4gYXVkaW9Db250ZXh0OworfQorCit9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoV0VCX0FVRElPKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9XZWJLaXRPZmZsaW5lQXVkaW9D
b250ZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1dlYktpdE9mZmxpbmVB
dWRpb0NvbnRleHQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uMDkw
ZjFmMjgxNTYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1
ZGlvL1dlYktpdE9mZmxpbmVBdWRpb0NvbnRleHQuaApAQCAtMCwwICsxLDQwIEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDEyLCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVE
CisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04KKyAqIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUworICogU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJXZWJLaXRBdWRpb0NvbnRleHQuaCIKKwor
bmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBXZWJLaXRPZmZsaW5lQXVkaW9Db250ZXh0IGZp
bmFsIDogcHVibGljIFdlYktpdEF1ZGlvQ29udGV4dCB7CisgICAgV1RGX01BS0VfSVNPX0FMTE9D
QVRFRChPZmZsaW5lQXVkaW9Db250ZXh0KTsKK3B1YmxpYzoKKyAgICBzdGF0aWMgRXhjZXB0aW9u
T3I8UmVmPE9mZmxpbmVBdWRpb0NvbnRleHQ+PiBjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCYsIHVuc2lnbmVkIG51bWJlck9mQ2hhbm5lbHMsIHNpemVfdCBudW1iZXJPZkZyYW1lcywgZmxv
YXQgc2FtcGxlUmF0ZSk7CisKK3ByaXZhdGU6CisgICAgT2ZmbGluZUF1ZGlvQ29udGV4dChEb2N1
bWVudCYsIEF1ZGlvQnVmZmVyKiByZW5kZXJUYXJnZXQpOworfTsKKworfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9XZWJL
aXRPZmZsaW5lQXVkaW9Db250ZXh0LmlkbCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVk
aW8vV2ViS2l0T2ZmbGluZUF1ZGlvQ29udGV4dC5pZGwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAuLjZlMjg5NTEzMWJhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJhdWRpby9XZWJLaXRPZmZsaW5lQXVkaW9Db250ZXh0LmlkbApAQCAt
MCwwICsxLDMzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyLCBHb29nbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQgQU5Z
CisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7Cisg
KiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04KKyAqIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUworICogU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworWworICAgIENvbmRpdGlvbmFsPVdFQl9BVURJTywK
KyAgICBKU0dlbmVyYXRlVG9KU09iamVjdCwKKyAgICBDb25zdHJ1Y3Rvcih1bnNpZ25lZCBsb25n
IG51bWJlck9mQ2hhbm5lbHMsIHVuc2lnbmVkIGxvbmcgbnVtYmVyT2ZGcmFtZXMsIHVucmVzdHJp
Y3RlZCBmbG9hdCBzYW1wbGVSYXRlKSwKKyAgICBDb25zdHJ1Y3Rvck1heVRocm93RXhjZXB0aW9u
LAorICAgIENvbnN0cnVjdG9yQ2FsbFdpdGg9U2NyaXB0RXhlY3V0aW9uQ29udGV4dCwKKyAgICBJ
bnRlcmZhY2VOYW1lPXdlYmtpdE9mZmxpbmVBdWRpb0NvbnRleHQKK10gaW50ZXJmYWNlIFdlYktp
dE9mZmxpbmVBdWRpb0NvbnRleHQgOiBBdWRpb0NvbnRleHQgeworfTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vV2Via2l0QXVkaW9QYW5uZXJOb2RlLmlkbCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vV2Via2l0QXVkaW9QYW5uZXJOb2RlLmlk
bApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uYTc3Mjg5ODQzZTkKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1dlYmtpdEF1
ZGlvUGFubmVyTm9kZS5pZGwKQEAgLTAsMCArMSw3MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxMCwgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NF
IEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICog
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OCisgKiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKKyAqIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKK1sKKyAgICBD
b25kaXRpb25hbD1XRUJfQVVESU8sCisgICAgSW1wbGVtZW50ZWRBcz1QYW5uaW5nTW9kZWxUeXBl
CitdIGVudW0gUGFubmluZ01vZGVsVHlwZSB7CisgICAgImVxdWFscG93ZXIiLAorICAgICJIUlRG
IgorfTsKKworWworICAgIENvbmRpdGlvbmFsPVdFQl9BVURJTywKKyAgICBJbXBsZW1lbnRlZEFz
PURpc3RhbmNlTW9kZWxUeXBlCitdIGVudW0gRGlzdGFuY2VNb2RlbFR5cGUgeworICAgICJsaW5l
YXIiLAorICAgICJpbnZlcnNlIiwKKyAgICAiZXhwb25lbnRpYWwiCit9OworCitbCisgICAgQ29u
ZGl0aW9uYWw9V0VCX0FVRElPLAorICAgIEpTR2VuZXJhdGVUb0pTT2JqZWN0LAorICAgIEludGVy
ZmFjZU5hbWU9d2Via2l0QXVkaW9QYW5uZXJOb2RlLAorXSBpbnRlcmZhY2UgV2ViS2l0QXVkaW9Q
YW5uZXJOb2RlIDogQXVkaW9Ob2RlIHsKKyAgICAvLyBEZWZhdWx0IG1vZGVsIGZvciBzdGVyZW8g
aXMgSFJURgorICAgIGF0dHJpYnV0ZSBQYW5uaW5nTW9kZWxUeXBlIHBhbm5pbmdNb2RlbDsKKwor
ICAgIC8vIFVzZXMgYSAzRCBjYXJ0ZXNpYW4gY29vcmRpbmF0ZSBzeXN0ZW0KKyAgICB2b2lkIHNl
dFBvc2l0aW9uKHVucmVzdHJpY3RlZCBmbG9hdCB4LCB1bnJlc3RyaWN0ZWQgZmxvYXQgeSwgdW5y
ZXN0cmljdGVkIGZsb2F0IHopOworICAgIHZvaWQgc2V0T3JpZW50YXRpb24odW5yZXN0cmljdGVk
IGZsb2F0IHgsIHVucmVzdHJpY3RlZCBmbG9hdCB5LCB1bnJlc3RyaWN0ZWQgZmxvYXQgeik7Cisg
ICAgdm9pZCBzZXRWZWxvY2l0eSh1bnJlc3RyaWN0ZWQgZmxvYXQgeCwgdW5yZXN0cmljdGVkIGZs
b2F0IHksIHVucmVzdHJpY3RlZCBmbG9hdCB6KTsKKworICAgIC8vIERpc3RhbmNlIG1vZGVsCisg
ICAgYXR0cmlidXRlIERpc3RhbmNlTW9kZWxUeXBlIGRpc3RhbmNlTW9kZWw7CisKKyAgICBhdHRy
aWJ1dGUgdW5yZXN0cmljdGVkIGRvdWJsZSByZWZEaXN0YW5jZTsKKyAgICBhdHRyaWJ1dGUgdW5y
ZXN0cmljdGVkIGRvdWJsZSBtYXhEaXN0YW5jZTsKKyAgICBhdHRyaWJ1dGUgdW5yZXN0cmljdGVk
IGRvdWJsZSByb2xsb2ZmRmFjdG9yOworCisgICAgLy8gRGlyZWN0aW9uYWwgc291bmQgY29uZQor
ICAgIGF0dHJpYnV0ZSB1bnJlc3RyaWN0ZWQgZG91YmxlIGNvbmVJbm5lckFuZ2xlOworICAgIGF0
dHJpYnV0ZSB1bnJlc3RyaWN0ZWQgZG91YmxlIGNvbmVPdXRlckFuZ2xlOworICAgIGF0dHJpYnV0
ZSB1bnJlc3RyaWN0ZWQgZG91YmxlIGNvbmVPdXRlckdhaW47CisKKyAgICAvLyBQb3NpdGlvbiBv
ZiBhdWRpbyBzb3VyY2UgaW4gM0QgQ2FydGVzaWFuIHN5c3RlbQorICAgIHJlYWRvbmx5IGF0dHJp
YnV0ZSBBdWRpb1BhcmFtIHBvc2l0aW9uWDsKKyAgICByZWFkb25seSBhdHRyaWJ1dGUgQXVkaW9Q
YXJhbSBwb3NpdGlvblk7CisgICAgcmVhZG9ubHkgYXR0cmlidXRlIEF1ZGlvUGFyYW0gcG9zaXRp
b25aOworfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0IGIvU291cmNl
L1dlYkNvcmUvU291cmNlcy50eHQKaW5kZXggMjRkYjhmZDJjMzEuLmU1MWIzMWYyZmYwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9T
b3VyY2VzLnR4dApAQCAtMjY4LDYgKzI2OCw5IEBAIE1vZHVsZXMvd2ViYXVkaW8vU2NyaXB0UHJv
Y2Vzc29yTm9kZS5jcHAKIE1vZHVsZXMvd2ViYXVkaW8vV2F2ZVNoYXBlckRTUEtlcm5lbC5jcHAK
IE1vZHVsZXMvd2ViYXVkaW8vV2F2ZVNoYXBlck5vZGUuY3BwCiBNb2R1bGVzL3dlYmF1ZGlvL1dh
dmVTaGFwZXJQcm9jZXNzb3IuY3BwCitNb2R1bGVzL3dlYmF1ZGlvL1dlYktpdEF1ZGlvQ29udGV4
dC5jcHAKK01vZHVsZXMvd2ViYXVkaW8vV2ViS2l0QXVkaW9QYW5uZXJOb2RlLmNwcAorTW9kdWxl
cy93ZWJhdWRpby9XZWJLaXRPZmZsaW5lQXVkaW9Db250ZXh0LmNwcAogCiBNb2R1bGVzL3dlYmF1
dGhuL0F1dGhlbnRpY2F0b3JDb29yZGluYXRvci5jcHAKIE1vZHVsZXMvd2ViYXV0aG4vQXV0aGVu
dGljYXRvckFzc2VydGlvblJlc3BvbnNlLmNwcApAQCAtMzU2Nyw3ICszNTcwLDEwIEBAIEpTV2Vi
R1BVU3dhcENoYWluLmNwcAogSlNXZWJHUFVUZXh0dXJlLmNwcAogSlNXZWJHUFVUZXh0dXJlVmll
dy5jcHAKIEpTV2ViS2l0QW5pbWF0aW9uRXZlbnQuY3BwCitKU1dlYktpdEF1ZGlvQ29udGV4dC5j
cHAKK0pTV2ViS2l0QXVkaW9QYW5uZXJOb2RlLmNwcAogSlNXZWJLaXRDU1NNYXRyaXguY3BwCitK
U1dlYktpdE9mZmxpbmVBdWRpb0NvbnRleHQuY3BwCiBKU1dlYktpdFBsYXliYWNrVGFyZ2V0QXZh
aWxhYmlsaXR5RXZlbnQuY3BwCiBKU1dlYktpdFBvaW50LmNwcAogSlNXZWJLaXRUcmFuc2l0aW9u
RXZlbnQuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oKaW5kZXggNTI2NWRiNTgzODIuLmQ0Njk4MDc2MGQ1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0yNDE0LDYgKzI0
MTQsOCBAQAogCQk4MzEwMkIyNzFGOUVBREQ5MDBFNDA0QjkgLyogSlNFeHRlbmRhYmxlTWVzc2Fn
ZUV2ZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4
MzEwMkIyMzFGOUVBREMyMDBFNDA0QjkgLyogSlNFeHRlbmRhYmxlTWVzc2FnZUV2ZW50LmggKi87
IH07CiAJCTgzMTFDMDAzMUZBQTJFOTUwMEUzQzhFNSAvKiBTV1NlcnZlckpvYlF1ZXVlLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4MzExQzAwMjFGQUEy
RTg5MDBFM0M4RTUgLyogU1dTZXJ2ZXJKb2JRdWV1ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTgzMTIwQzcxMUM1NkYzRkIwMDFDQjExMiAvKiBI
VE1MRGF0YUVsZW1lbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDgzNEI4NkE3MUM1NkU4M0EwMEYzRjBFMyAvKiBIVE1MRGF0YUVsZW1lbnQuaCAqLzsg
fTsKKwkJODMxQjYxNzYyNDk5QTVCQjAwQzA3Qzc5IC8qIFdlYktpdEF1ZGlvUGFubmVyTm9kZS5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODMxQjYxNzQy
NDk5QTU5QzAwQzA3Qzc5IC8qIFdlYktpdEF1ZGlvUGFubmVyTm9kZS5oICovOyB9OworCQk4MzFC
NjE3NzI0OTlBNUJGMDBDMDdDNzkgLyogV2ViS2l0T2ZmbGluZUF1ZGlvQ29udGV4dC5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODMxQjYxNzUyNDk5QTU5
RDAwQzA3Qzc5IC8qIFdlYktpdE9mZmxpbmVBdWRpb0NvbnRleHQuaCAqLzsgfTsKIAkJODMyMTUw
N0UxRjI3RUExQjAwOTVCMTM2IC8qIE5hdmlnYXRvckJlYWNvbi5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODMyMTUwN0IxRjI3RUExNTAwOTVCMTM2IC8q
IE5hdmlnYXRvckJlYWNvbi5oICovOyB9OwogCQk4MzJCODQzNDE5RDhFNTUxMDBCMjYwNTUgLyog
U1ZHQW5pbWF0ZUVsZW1lbnRCYXNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA4MzJCODQzMzE5RDhFNTUxMDBCMjYwNTUgLyogU1ZHQW5pbWF0ZUVsZW1l
bnRCYXNlLmggKi87IH07CiAJCTgzM0I5RTMyMUY1MDhEODUwMEUwRTQyOCAvKiBKU0ZpbGVTeXN0
ZW1EaXJlY3RvcnlFbnRyeS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gODMzQjlFMkYxRjUwOEQ4MDAwRTBFNDI4IC8qIEpTRmlsZVN5c3RlbURpcmVjdG9y
eUVudHJ5LmggKi87IH07CkBAIC0yNDY5LDEwICsyNDcxLDEyIEBACiAJCTgzOUEyRjJFMUUyMDRB
NzEwMDM5MDU3RSAvKiBXZWJHTFN0YXRlVHJhY2tlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODM5QTJGMkMxRTIwNEE2RDAwMzkwNTdFIC8qIFdlYkdM
U3RhdGVUcmFja2VyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKIAkJODM5QUFGRUQxQTBDMEM4RDAwNjA1Rjk5IC8qIEhUTUxXQlJFbGVtZW50LmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4MzlBQUZFQjFBMEMw
QzhEMDA2MDVGOTkgLyogSFRNTFdCUkVsZW1lbnQuaCAqLzsgfTsKIAkJODNBOEFDNDAxRkFCQkZF
NTAwMjA2NEFDIC8qIFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4M0E4QUMzRTFGQUJCRkQxMDAyMDY0QUMgLyog
U2VydmljZVdvcmtlcklkZW50aWZpZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OworCQk4M0IxQTcwMjI0OTk4NUYwMDBGRTU5NjEgLyogV2ViS2l0QXVk
aW9Db250ZXh0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA4M0IxQTZGRjI0OTk4NUQwMDBGRTU5NjEgLyogV2ViS2l0QXVkaW9Db250ZXh0LmggKi87IH07
CiAJCTgzQjJEMTc1MUI4QkNENkEwMEEwMkU0NyAvKiBOYXRpdmVOb2RlRmlsdGVyLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4M0U5NTlFMTFCOEJDMjJC
MDA0RDkzODUgLyogTmF0aXZlTm9kZUZpbHRlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CiAJCTgzQjc0RUY2MUYzRTBCRjIwMDk5NkJDNyAvKiBLZWVw
YWxpdmVSZXF1ZXN0VHJhY2tlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gODNCNzRFRjMxRjNFMEJENzAwOTk2QkM3IC8qIEtlZXBhbGl2ZVJlcXVlc3RU
cmFja2VyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
IAkJODNCOTY4N0IxOUY4QUI4MzAwNEVGN0FGIC8qIFN0eWxlQnVpbGRlckNvbnZlcnRlci5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODNCOTY4NzkxOUY4
QUI4MzAwNEVGN0FGIC8qIFN0eWxlQnVpbGRlckNvbnZlcnRlci5oICovOyB9OwogCQk4M0JCNUM4
ODFENUQ2RjQ1MDA1QTcxRjQgLyogQWxsRGVzY2VuZGFudHNDb2xsZWN0aW9uLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4M0JCNUM4NzFENUQ2RjNBMDA1
QTcxRjQgLyogQWxsRGVzY2VuZGFudHNDb2xsZWN0aW9uLmggKi87IH07CisJCTgzQkQzQ0VFMjQ5
OThFMDEwMEJBM0U2NyAvKiBBdWRpb0NvbnRleHRTdGF0ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODNCRDNDRUQyNDk5OERGNjAwQkEzRTY3IC8qIEF1
ZGlvQ29udGV4dFN0YXRlLmggKi87IH07CiAJCTgzQzA1QTVCMUE2ODYyMTIwMDdFNURFQSAvKiBT
dHlsZVByb3BlcnR5U2hvcnRoYW5kRnVuY3Rpb25zLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4M0MwNUE1OTFBNjg2MjEyMDA3RTVERUEgLyogU3R5bGVQ
cm9wZXJ0eVNob3J0aGFuZEZ1bmN0aW9ucy5oICovOyB9OwogCQk4M0MxRjU5NDFFREY2OUQzMDA0
MTBEMjcgLyogUXVhbGlmaWVkTmFtZUNhY2hlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA4M0MxRjU5MjFFREY2OUQzMDA0MTBEMjcgLyogUXVhbGlmaWVk
TmFtZUNhY2hlLmggKi87IH07CiAJCTgzQzQ1QjhFMURDMkI2OEEwMDg4NzFCQSAvKiBWYWxpZGF0
aW9uQnViYmxlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA4M0M0NUI4RDFEQzJCNjdDMDA4ODcxQkEgLyogVmFsaWRhdGlvbkJ1YmJsZS5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC0xMDI5Nyw2ICsxMDMw
MSw3IEBACiAJCTgzMDAzMEYzMUI3RDMzQTYwMEVEM0FBQyAvKiBHZW5lcmljQ2FjaGVkSFRNTENv
bGxlY3Rpb24uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gR2VuZXJp
Y0NhY2hlZEhUTUxDb2xsZWN0aW9uLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
ODMwMDMwRjQxQjdEMzNBNjAwRUQzQUFDIC8qIEdlbmVyaWNDYWNoZWRIVE1MQ29sbGVjdGlvbi5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBHZW5lcmljQ2FjaGVkSFRNTENvbGxl
Y3Rpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODMwMDMwRjcxQjdEMzk4ODAw
RUQzQUFDIC8qIENhY2hlZEhUTUxDb2xsZWN0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IENhY2hlZEhUTUxDb2xsZWN0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTgzMDAzRTJCMjQ5OTk3QTgwMDYwQUY5NCAvKiBXZWJLaXRBdWRpb0NvbnRleHQuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2ViS2l0QXVkaW9Db250ZXh0
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODMwMzM0RkIxRjU0OTA1MjAwNERG
NzA3IC8qIEZpbGVTeXN0ZW1EaXJlY3RvcnlSZWFkZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gRmlsZVN5c3RlbURpcmVjdG9yeVJlYWRlci5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTgzMDMzNEZDMUY1NDkwNTIwMDRERjcwNyAvKiBGaWxlU3lz
dGVtRGlyZWN0b3J5UmVhZGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEZp
bGVTeXN0ZW1EaXJlY3RvcnlSZWFkZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
ODMwMzM0RkQxRjU0OTA1MjAwNERGNzA3IC8qIEZpbGVTeXN0ZW1FbnRyaWVzQ2FsbGJhY2suaWRs
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IEZpbGVTeXN0ZW1FbnRyaWVzQ2FsbGJhY2suaWRsOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTAzMTQsNiArMTAzMTksMTIgQEAKIAkJODMx
MDJCMjUxRjlFQURDMjAwRTQwNEI5IC8qIEpTRXh0ZW5kYWJsZU1lc3NhZ2VFdmVudC5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0V4dGVuZGFibGVNZXNzYWdlRXZl
bnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4MzExQzAwMDFGQUEyRTg5MDBF
M0M4RTUgLyogU1dTZXJ2ZXJKb2JRdWV1ZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBTV1NlcnZlckpvYlF1ZXVlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJODMxMUMwMDIxRkFBMkU4OTAwRTNDOEU1IC8qIFNXU2VydmVySm9iUXVldWUuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU1dTZXJ2ZXJKb2JRdWV1ZS5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQk4MzFCNjE2RjI0OTlBNTk4MDBDMDdDNzkgLyogV2Via2l0
QXVkaW9QYW5uZXJOb2RlLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBXZWJraXRBdWRpb1Bh
bm5lck5vZGUuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk4MzFCNjE3MTI0OTlB
NTk5MDBDMDdDNzkgLyogV2ViS2l0QXVkaW9QYW5uZXJOb2RlLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYktpdEF1ZGlvUGFubmVyTm9kZS5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTgzMUI2MTcyMjQ5OUE1OUEwMEMwN0M3OSAvKiBXZWJLaXRP
ZmZsaW5lQXVkaW9Db250ZXh0LmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBXZWJLaXRPZmZs
aW5lQXVkaW9Db250ZXh0LmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJODMxQjYx
NzMyNDk5QTU5QjAwQzA3Qzc5IC8qIFdlYktpdE9mZmxpbmVBdWRpb0NvbnRleHQuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2ViS2l0T2ZmbGluZUF1ZGlvQ29udGV4
dC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTgzMUI2MTc0MjQ5OUE1OUMwMEMw
N0M3OSAvKiBXZWJLaXRBdWRpb1Bhbm5lck5vZGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gV2ViS2l0QXVkaW9QYW5uZXJOb2RlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTgzMUI2MTc1MjQ5OUE1OUQwMEMwN0M3OSAvKiBXZWJLaXRPZmZsaW5lQXVkaW9Db250
ZXh0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYktpdE9mZmxpbmVBdWRp
b0NvbnRleHQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODMxQzQ2QzMxRjlFRTVF
MDAwRUJENDUwIC8qIEpTRXh0ZW5kYWJsZU1lc3NhZ2VFdmVudEN1c3RvbS5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0V4dGVuZGFibGVNZXNzYWdlRXZlbnRDdXN0
b20uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4MzFEMUYyOTFDNTZFQ0EwMDBG
NUY2QzAgLyogSFRNTERhdGFFbGVtZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IEhUTUxEYXRhRWxlbWVudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTgzMjE1MDdBMUYyN0VBMTUwMDk1QjEzNiAvKiBOYXZpZ2F0b3JCZWFjb24uY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gTmF2aWdhdG9yQmVhY29uLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKQEAgLTEwNDQxLDYgKzEwNDUyLDggQEAKIAkJODM5QUFGRUIxQTBDMEM4RDAwNjA1Rjk5
IC8qIEhUTUxXQlJFbGVtZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEhU
TUxXQlJFbGVtZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTgzQTRBOUY4MUNF
N0ZEN0UwMDcwOUIwMCAvKiBKU1hNTERvY3VtZW50Q3VzdG9tLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTWE1MRG9jdW1lbnRDdXN0b20uY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk4M0E4QUMzRTFGQUJCRkQxMDAyMDY0QUMgLyogU2VydmljZVdv
cmtlcklkZW50aWZpZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2Vydmlj
ZVdvcmtlcklkZW50aWZpZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJODNCMUE2
RkYyNDk5ODVEMDAwRkU1OTYxIC8qIFdlYktpdEF1ZGlvQ29udGV4dC5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBXZWJLaXRBdWRpb0NvbnRleHQuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJODNCMUE3MDEyNDk5ODVEMDAwRkU1OTYxIC8qIFdlYktpdEF1ZGlvQ29u
dGV4dC5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gV2ViS2l0QXVkaW9Db250ZXh0LmlkbDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODNCMjUwMDkxRkExMTgxQzAwQkMwMkQ5IC8q
IEpTU2VydmljZVdvcmtlckNsaWVudFR5cGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gSlNTZXJ2aWNlV29ya2VyQ2xpZW50VHlwZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk4M0IyNTAwQjFGQTExODFEMDBCQzAyRDkgLyogSlNTZXJ2aWNlV29ya2VyQ2xpZW50
VHlwZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU1NlcnZpY2VX
b3JrZXJDbGllbnRUeXBlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODNCNURB
NDUxRkE5MDc5MzAwQjU5REY0IC8qIEpTTmF2aWdhdG9yQ3VzdG9tLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTTmF2aWdhdG9yQ3VzdG9tLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTEwNDQ4LDYgKzEwNDYxLDggQEAKIAkJODNCNzRFRjMxRjNF
MEJENzAwOTk2QkM3IC8qIEtlZXBhbGl2ZVJlcXVlc3RUcmFja2VyLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IEtlZXBhbGl2ZVJlcXVlc3RUcmFja2VyLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTgzQjk2ODc5MTlGOEFCODMwMDRFRjdBRiAvKiBTdHlsZUJ1aWxk
ZXJDb252ZXJ0ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU3R5bGVCdWls
ZGVyQ29udmVydGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTgzQkI1Qzg3MUQ1
RDZGM0EwMDVBNzFGNCAvKiBBbGxEZXNjZW5kYW50c0NvbGxlY3Rpb24uaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gQWxsRGVzY2VuZGFudHNDb2xsZWN0aW9uLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTgzQkQzQ0VCMjQ5OThDQzUwMEJBM0U2NyAvKiBBdWRpb0Nv
bnRleHRTdGF0ZS5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gQXVkaW9Db250ZXh0U3RhdGUu
aWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk4M0JEM0NFRDI0OTk4REY2MDBCQTNF
NjcgLyogQXVkaW9Db250ZXh0U3RhdGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gQXVkaW9Db250ZXh0U3RhdGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODND
MDVBNTgxQTY4NjIxMjAwN0U1REVBIC8qIFN0eWxlUHJvcGVydHlTaG9ydGhhbmRGdW5jdGlvbnMu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gU3R5bGVQcm9wZXJ0eVNo
b3J0aGFuZEZ1bmN0aW9ucy5jcHA7IHBhdGggPSBEZXJpdmVkU291cmNlcy9XZWJDb3JlL1N0eWxl
UHJvcGVydHlTaG9ydGhhbmRGdW5jdGlvbnMuY3BwOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVD
VFNfRElSOyB9OwogCQk4M0MwNUE1OTFBNjg2MjEyMDA3RTVERUEgLyogU3R5bGVQcm9wZXJ0eVNo
b3J0aGFuZEZ1bmN0aW9ucy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBTdHls
ZVByb3BlcnR5U2hvcnRoYW5kRnVuY3Rpb25zLmg7IHBhdGggPSBEZXJpdmVkU291cmNlcy9XZWJD
b3JlL1N0eWxlUHJvcGVydHlTaG9ydGhhbmRGdW5jdGlvbnMuaDsgc291cmNlVHJlZSA9IEJVSUxU
X1BST0RVQ1RTX0RJUjsgfTsKIAkJODNDMUY1OTExRURGNjlEMzAwNDEwRDI3IC8qIFF1YWxpZmll
ZE5hbWVDYWNoZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBRdWFs
aWZpZWROYW1lQ2FjaGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjkyMzEs
NiArMjkyNDYsOCBAQAogCQkJCUZEMzE1RkJBMTJCMDI2NzUwMEMxQTM1OSAvKiBBdWRpb0NvbnRl
eHQuY3BwICovLAogCQkJCUZEMzE1RkJCMTJCMDI2NzUwMEMxQTM1OSAvKiBBdWRpb0NvbnRleHQu
aCAqLywKIAkJCQlGRDMxNUZCQzEyQjAyNjc1MDBDMUEzNTkgLyogQXVkaW9Db250ZXh0LmlkbCAq
LywKKwkJCQk4M0JEM0NFRDI0OTk4REY2MDBCQTNFNjcgLyogQXVkaW9Db250ZXh0U3RhdGUuaCAq
LywKKwkJCQk4M0JEM0NFQjI0OTk4Q0M1MDBCQTNFNjcgLyogQXVkaW9Db250ZXh0U3RhdGUuaWRs
ICovLAogCQkJCUZEMzE1RkJEMTJCMDI2NzUwMEMxQTM1OSAvKiBBdWRpb0Rlc3RpbmF0aW9uTm9k
ZS5jcHAgKi8sCiAJCQkJRkQzMTVGQkUxMkIwMjY3NTAwQzFBMzU5IC8qIEF1ZGlvRGVzdGluYXRp
b25Ob2RlLmggKi8sCiAJCQkJRkQzMTVGQkYxMkIwMjY3NTAwQzFBMzU5IC8qIEF1ZGlvRGVzdGlu
YXRpb25Ob2RlLmlkbCAqLywKQEAgLTI5MzI4LDYgKzI5MzQ1LDE1IEBACiAJCQkJRkQ3RjI5OEUx
M0Q0QzBDQjAwQUQ5NTM1IC8qIFdhdmVTaGFwZXJOb2RlLmlkbCAqLywKIAkJCQlGRDdGMjk4RjEz
RDRDMENCMDBBRDk1MzUgLyogV2F2ZVNoYXBlclByb2Nlc3Nvci5jcHAgKi8sCiAJCQkJRkQ3RjI5
OTAxM0Q0QzBDQjAwQUQ5NTM1IC8qIFdhdmVTaGFwZXJQcm9jZXNzb3IuaCAqLywKKwkJCQk4MzAw
M0UyQjI0OTk5N0E4MDA2MEFGOTQgLyogV2ViS2l0QXVkaW9Db250ZXh0LmNwcCAqLywKKwkJCQk4
M0IxQTZGRjI0OTk4NUQwMDBGRTU5NjEgLyogV2ViS2l0QXVkaW9Db250ZXh0LmggKi8sCisJCQkJ
ODNCMUE3MDEyNDk5ODVEMDAwRkU1OTYxIC8qIFdlYktpdEF1ZGlvQ29udGV4dC5pZGwgKi8sCisJ
CQkJODMxQjYxNzEyNDk5QTU5OTAwQzA3Qzc5IC8qIFdlYktpdEF1ZGlvUGFubmVyTm9kZS5jcHAg
Ki8sCisJCQkJODMxQjYxNzQyNDk5QTU5QzAwQzA3Qzc5IC8qIFdlYktpdEF1ZGlvUGFubmVyTm9k
ZS5oICovLAorCQkJCTgzMUI2MTZGMjQ5OUE1OTgwMEMwN0M3OSAvKiBXZWJraXRBdWRpb1Bhbm5l
ck5vZGUuaWRsICovLAorCQkJCTgzMUI2MTczMjQ5OUE1OUIwMEMwN0M3OSAvKiBXZWJLaXRPZmZs
aW5lQXVkaW9Db250ZXh0LmNwcCAqLywKKwkJCQk4MzFCNjE3NTI0OTlBNTlEMDBDMDdDNzkgLyog
V2ViS2l0T2ZmbGluZUF1ZGlvQ29udGV4dC5oICovLAorCQkJCTgzMUI2MTcyMjQ5OUE1OUEwMEMw
N0M3OSAvKiBXZWJLaXRPZmZsaW5lQXVkaW9Db250ZXh0LmlkbCAqLywKIAkJCSk7CiAJCQlwYXRo
ID0gd2ViYXVkaW87CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwpAQCAtMjk3MDQsNiArMjk3
MzAsNyBAQAogCQkJCTlCNDE3MDY0MTI1NjYyQjMwMDZCMjhGQyAvKiBBcHBseUJsb2NrRWxlbWVu
dENvbW1hbmQuaCBpbiBIZWFkZXJzICovLAogCQkJCTkzMzA5REQ5MDk5RTY0OTIwMDU2RTU4MSAv
KiBBcHBseVN0eWxlQ29tbWFuZC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTEyREQ4RjYwRDkxRTZB
RjAwMEY4OUVFIC8qIEFyY2hpdmUuaCBpbiBIZWFkZXJzICovLAorCQkJCTgzQkQzQ0VFMjQ5OThF
MDEwMEJBM0U2NyAvKiBBdWRpb0NvbnRleHRTdGF0ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTEy
REQ4RkQwRDkxRTZBRjAwMEY4OUVFIC8qIEFyY2hpdmVGYWN0b3J5LmggaW4gSGVhZGVycyAqLywK
IAkJCQk1MTJERDhGQzBEOTFFNkFGMDAwRjg5RUUgLyogQXJjaGl2ZVJlc291cmNlLmggaW4gSGVh
ZGVycyAqLywKIAkJCQk1MTJERDhGODBEOTFFNkFGMDAwRjg5RUUgLyogQXJjaGl2ZVJlc291cmNl
Q29sbGVjdGlvbi5oIGluIEhlYWRlcnMgKi8sCkBAIC0zMDg2OSw2ICszMDg5Niw3IEBACiAJCQkJ
QTQzQkY1OTkxMTQ5MjkwQTAwQzY0M0NBIC8qIEhUTUxQcm9ncmVzc0VsZW1lbnQuaCBpbiBIZWFk
ZXJzICovLAogCQkJCUE4Q0ZGN0EzMEExNTY5NzgwMDBBNDIzNCAvKiBIVE1MUXVvdGVFbGVtZW50
LmggaW4gSGVhZGVycyAqLywKIAkJCQlBOEQyMjNGRTE2QjUyRTRFMDAxNTcyODggLyogSFRNTFJl
c291cmNlUHJlbG9hZGVyLmggaW4gSGVhZGVycyAqLywKKwkJCQk4M0IxQTcwMjI0OTk4NUYwMDBG
RTU5NjEgLyogV2ViS2l0QXVkaW9Db250ZXh0LmggaW4gSGVhZGVycyAqLywKIAkJCQlBODcxREMy
NTBBMTUyMDU3MDBCMTJBNjggLyogSFRNTFNjcmlwdEVsZW1lbnQuaCBpbiBIZWFkZXJzICovLAog
CQkJCTk3N0IzODc1MTIyODgzRTkwMEI4MUZGOCAvKiBIVE1MU2NyaXB0UnVubmVyLmggaW4gSGVh
ZGVycyAqLywKIAkJCQk5NzdCMzg3NjEyMjg4M0U5MDBCODFGRjggLyogSFRNTFNjcmlwdFJ1bm5l
ckhvc3QuaCBpbiBIZWFkZXJzICovLApAQCAtMzE3MTEsNiArMzE3MzksNyBAQAogCQkJCUJDODI0
MzI5MEQwQ0U4QTIwMDQ2MEM4RiAvKiBKU1NRTEVycm9yLmggaW4gSGVhZGVycyAqLywKIAkJCQkx
QUU4MkZFRDBDQUIwN0VFMDAyMjM3QUUgLyogSlNTUUxSZXN1bHRTZXQuaCBpbiBIZWFkZXJzICov
LAogCQkJCTFBRkUxMTlBMENCRkZDQzQwMDMwMTdGQSAvKiBKU1NRTFJlc3VsdFNldFJvd0xpc3Qu
aCBpbiBIZWFkZXJzICovLAorCQkJCTgzMUI2MTc2MjQ5OUE1QkIwMEMwN0M3OSAvKiBXZWJLaXRB
dWRpb1Bhbm5lck5vZGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUI1OURENkE1MTE5MDJBNjIwMDdF
OTY4NCAvKiBKU1NRTFN0YXRlbWVudENhbGxiYWNrLmggaW4gSGVhZGVycyAqLywKIAkJCQlCNTlE
RDZBOTExOTAyQTcxMDA3RTk2ODQgLyogSlNTUUxTdGF0ZW1lbnRFcnJvckNhbGxiYWNrLmggaW4g
SGVhZGVycyAqLywKIAkJCQlCQzgyNDMyQTBEMENFOEEyMDA0NjBDOEYgLyogSlNTUUxUcmFuc2Fj
dGlvbi5oIGluIEhlYWRlcnMgKi8sCkBAIC0zMjgwNCw2ICszMjgzMyw3IEBACiAJCQkJNTFFRTdC
MzgxQUE1MEIwNTAwRjkyQjIxIC8qIFJlc291cmNlTG9hZEluZm8uaCBpbiBIZWFkZXJzICovLAog
CQkJCTk3M0UzMjU3MTA4ODNCN0MwMDVCQzQ5MyAvKiBSZXNvdXJjZUxvYWROb3RpZmllci5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJNkI2OTNBMkUxQzUxQTgyRTAwQjAzQkVGIC8qIFJlc291cmNlTG9h
ZE9ic2VydmVyLmggaW4gSGVhZGVycyAqLywKKwkJCQk4MzFCNjE3NzI0OTlBNUJGMDBDMDdDNzkg
LyogV2ViS2l0T2ZmbGluZUF1ZGlvQ29udGV4dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTQyOTVG
QTQxMkIwNjE0RTAwRDFBQ0UwIC8qIFJlc291cmNlTG9hZFByaW9yaXR5LmggaW4gSGVhZGVycyAq
LywKIAkJCQk3QTkyOUNBNzFDNTk4QUE5MDA0REYyMjYgLyogUmVzb3VyY2VMb2FkU3RhdGlzdGlj
cy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJN0VFNjg0NkQxMkQyNkUzODAwRTc5NDE1IC8qIFJlc291
cmNlUmVxdWVzdC5oIGluIEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9XZWJDb3JlQnVpbHRpbk5hbWVzLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9XZWJDb3JlQnVpbHRpbk5hbWVzLmgKaW5kZXggYzkxYjRkZmFkNzEuLjNlYjYyYjJhODFl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9XZWJDb3JlQnVpbHRpbk5h
bWVzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvV2ViQ29yZUJ1aWx0aW5OYW1l
cy5oCkBAIC00OSw2ICs0OSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBtYWNybyhBcHBs
ZVBheVNldHVwRmVhdHVyZSkgXAogICAgIG1hY3JvKEF0dGFjaG1lbnRFbGVtZW50KSBcCiAgICAg
bWFjcm8oQXVkaW8pIFwKKyAgICBtYWNybyhBdWRpb0NvbnRleHQpIFwKICAgICBtYWNybyhBdXRo
ZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2UpIFwKICAgICBtYWNybyhBdXRoZW50aWNhdG9yQXR0
ZXN0YXRpb25SZXNwb25zZSkgXAogICAgIG1hY3JvKEF1dGhlbnRpY2F0b3JSZXNwb25zZSkgXApA
QCAtMTY1LDkgKzE2NiwxMSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgbWFjcm8oTmF2aWdh
dG9yQ3JlZGVudGlhbHMpIFwKICAgICBtYWNybyhOYXZpZ2F0b3JNZWRpYURldmljZXMpIFwKICAg
ICBtYWNybyhOYXZpZ2F0b3JVc2VyTWVkaWEpIFwKKyAgICBtYWNybyhPZmZsaW5lQXVkaW9Db250
ZXh0KSBcCiAgICAgbWFjcm8oT2Zmc2NyZWVuQ2FudmFzKSBcCiAgICAgbWFjcm8oT2Zmc2NyZWVu
Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJEKSBcCiAgICAgbWFjcm8oUGFpbnRSZW5kZXJpbmdDb250
ZXh0MkQpIFwKKyAgICBtYWNybyhQYW5uZXJOb2RlKSBcCiAgICAgbWFjcm8oUGF5bWVudEFkZHJl
c3MpIFwKICAgICBtYWNybyhQYXltZW50TWV0aG9kQ2hhbmdlRXZlbnQpIFwKICAgICBtYWNybyhQ
YXltZW50UmVxdWVzdCkgXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50VGFy
Z2V0RmFjdG9yeS5pbiBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudFRhcmdldEZhY3RvcnkuaW4K
aW5kZXggZmMxZGIyY2UwZTAuLmExNTRiNDQ1YTEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vRXZlbnRUYXJnZXRGYWN0b3J5LmluCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVu
dFRhcmdldEZhY3RvcnkuaW4KQEAgLTUzLDYgKzUzLDcgQEAgVmlkZW9UcmFja0xpc3QgY29uZGl0
aW9uYWw9VklERU8KIFZpc3VhbFZpZXdwb3J0CiBXZWJBbmltYXRpb24KIFdlYkdQVURldmljZSBj
b25kaXRpb25hbD1XRUJHUFUKK1dlYktpdEF1ZGlvQ29udGV4dCBjb25kaXRpb25hbD1XRUJfQVVE
SU8KIFdlYktpdE1lZGlhS2V5U2Vzc2lvbiBjb25kaXRpb25hbD1MRUdBQ1lfRU5DUllQVEVEX01F
RElBCiBXZWJTb2NrZXQKIFdvcmtlcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9T
ZXR0aW5ncy55YW1sIGIvU291cmNlL1dlYkNvcmUvcGFnZS9TZXR0aW5ncy55YW1sCmluZGV4IDJk
NmJjNmZmMmVmLi41ODNmYzZmNzk1ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9T
ZXR0aW5ncy55YW1sCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3MueWFtbApAQCAt
MjU1LDYgKzI1NSw4IEBAIGxvYWREZWZlcnJpbmdFbmFibGVkOgogICBpbml0aWFsOiB0cnVlCiB3
ZWJBdWRpb0VuYWJsZWQ6CiAgIGluaXRpYWw6IGZhbHNlCittb2Rlcm5VbnByZWZpeGVkV2ViQXVk
aW9FbmFibGVkOgorICBpbml0aWFsOiBmYWxzZQogcGFnaW5hdGVEdXJpbmdMYXlvdXRFbmFibGVk
OgogICBpbml0aWFsOiBmYWxzZQogZnVsbFNjcmVlbkVuYWJsZWQ6CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9XZWJQcmVmZXJlbmNlcy55YW1sIGIvU291cmNlL1dlYktpdC9TaGFy
ZWQvV2ViUHJlZmVyZW5jZXMueWFtbAppbmRleCBmYWQxYTlmNTg4Ni4uNTIzNWNlNzFmZjcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlByZWZlcmVuY2VzLnlhbWwKKysrIGIv
U291cmNlL1dlYktpdC9TaGFyZWQvV2ViUHJlZmVyZW5jZXMueWFtbApAQCAtMzM0LDYgKzMzNCwx
NCBAQCBXZWJBdWRpb0VuYWJsZWQ6CiAgIGRlZmF1bHRWYWx1ZTogdHJ1ZQogICBjb25kaXRpb246
IEVOQUJMRShXRUJfQVVESU8pCiAKK01vZGVyblVucHJlZml4ZWRXZWJBdWRpb0VuYWJsZWQ6Cisg
IHR5cGU6IGJvb2wKKyAgZGVmYXVsdFZhbHVlOiBmYWxzZQorICBjb25kaXRpb246IEVOQUJMRShX
RUJfQVVESU8pCisgIGh1bWFuUmVhZGFibGVOYW1lOiAiTW9kZXJuIFdlYkF1ZGlvIEFQSSIKKyAg
aHVtYW5SZWFkYWJsZURlc2NyaXB0aW9uOiAiTW9kZXJuIGFuZCB1bnByZWZpeGVkIFdlYkF1ZGlv
IEFQSSIKKyAgY2F0ZWdvcnk6IGV4cGVyaW1lbnRhbAorCiBBdHRhY2htZW50RWxlbWVudEVuYWJs
ZWQ6CiAgIHR5cGU6IGJvb2wKICAgZGVmYXVsdFZhbHVlOiBmYWxzZQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>402067</attachid>
            <date>2020-06-16 18:32:30 -0700</date>
            <delta_ts>2020-06-16 18:40:23 -0700</delta_ts>
            <desc>WIP Patch</desc>
            <filename>213268_wip.patch</filename>
            <type>text/plain</type>
            <size>126638</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dlYkNv
cmUvQ01ha2VMaXN0cy50eHQKaW5kZXggOTc1OTQ4OTVkOGMuLmNiZWM5ZWMwOWY1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9D
TWFrZUxpc3RzLnR4dApAQCAtNDMzLDYgKzQzMyw3IEBAIHNldChXZWJDb3JlX05PTl9TVkdfSURM
X0ZJTEVTCiAgICAgTW9kdWxlcy93ZWJhdWRpby9BdWRpb0J1ZmZlckNhbGxiYWNrLmlkbAogICAg
IE1vZHVsZXMvd2ViYXVkaW8vQXVkaW9CdWZmZXJTb3VyY2VOb2RlLmlkbAogICAgIE1vZHVsZXMv
d2ViYXVkaW8vQXVkaW9Db250ZXh0LmlkbAorICAgIE1vZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250
ZXh0U3RhdGUuaWRsCiAgICAgTW9kdWxlcy93ZWJhdWRpby9BdWRpb0Rlc3RpbmF0aW9uTm9kZS5p
ZGwKICAgICBNb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvTGlzdGVuZXIuaWRsCiAgICAgTW9kdWxlcy93
ZWJhdWRpby9BdWRpb05vZGUuaWRsCkBAIC00NTUsNiArNDU2LDkgQEAgc2V0KFdlYkNvcmVfTk9O
X1NWR19JRExfRklMRVMKICAgICBNb2R1bGVzL3dlYmF1ZGlvL1BlcmlvZGljV2F2ZS5pZGwKICAg
ICBNb2R1bGVzL3dlYmF1ZGlvL1NjcmlwdFByb2Nlc3Nvck5vZGUuaWRsCiAgICAgTW9kdWxlcy93
ZWJhdWRpby9XYXZlU2hhcGVyTm9kZS5pZGwKKyAgICBNb2R1bGVzL3dlYmF1ZGlvL1dlYktpdEF1
ZGlvQ29udGV4dC5pZGwKKyAgICBNb2R1bGVzL3dlYmF1ZGlvL1dlYktpdEF1ZGlvUGFubmVyTm9k
ZS5pZGwKKyAgICBNb2R1bGVzL3dlYmF1ZGlvL1dlYktpdE9mZmxpbmVBdWRpb0NvbnRleHQuaWRs
CiAKICAgICBNb2R1bGVzL3dlYmF1dGhuL0F0dGVzdGF0aW9uQ29udmV5YW5jZVByZWZlcmVuY2Uu
aWRsCiAgICAgTW9kdWxlcy93ZWJhdXRobi9BdXRoZW50aWNhdGlvbkV4dGVuc2lvbnNDbGllbnRJ
bnB1dHMuaWRsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy1pbnB1
dC54Y2ZpbGVsaXN0IGIvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMtaW5wdXQueGNmaWxl
bGlzdAppbmRleCA2YTdhYTdkMTRlYi4uMDRhMzM3OGJkYmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLWlucHV0LnhjZmlsZWxpc3QKKysrIGIvU291cmNlL1dlYkNv
cmUvRGVyaXZlZFNvdXJjZXMtaW5wdXQueGNmaWxlbGlzdApAQCAtMzIyLDYgKzMyMiw3IEBAICQo
UFJPSkVDVF9ESVIpL01vZHVsZXMvd2ViYXVkaW8vUGFubmVyTm9kZS5pZGwKICQoUFJPSkVDVF9E
SVIpL01vZHVsZXMvd2ViYXVkaW8vUGVyaW9kaWNXYXZlLmlkbAogJChQUk9KRUNUX0RJUikvTW9k
dWxlcy93ZWJhdWRpby9TY3JpcHRQcm9jZXNzb3JOb2RlLmlkbAogJChQUk9KRUNUX0RJUikvTW9k
dWxlcy93ZWJhdWRpby9XYXZlU2hhcGVyTm9kZS5pZGwKKyQoUFJPSkVDVF9ESVIpL01vZHVsZXMv
d2ViYXVkaW8vV2ViS2l0QXVkaW9Db250ZXh0LmlkbAogJChQUk9KRUNUX0RJUikvTW9kdWxlcy93
ZWJhdXRobi9BdHRlc3RhdGlvbkNvbnZleWFuY2VQcmVmZXJlbmNlLmlkbAogJChQUk9KRUNUX0RJ
UikvTW9kdWxlcy93ZWJhdXRobi9BdXRoZW50aWNhdGlvbkV4dGVuc2lvbnNDbGllbnRJbnB1dHMu
aWRsCiAkKFBST0pFQ1RfRElSKS9Nb2R1bGVzL3dlYmF1dGhuL0F1dGhlbnRpY2F0aW9uRXh0ZW5z
aW9uc0NsaWVudE91dHB1dHMuaWRsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVk
U291cmNlcy5tYWtlIGIvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQppbmRleCBk
MjY3MDg5ZTM4Ny4uMDY5ZTIwNTI2NzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0Rlcml2
ZWRTb3VyY2VzLm1ha2UKKysrIGIvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQpA
QCAtMzgzLDYgKzM4Myw3IEBAIEpTX0JJTkRJTkdfSURMUyA9IFwKICAgICAkKFdlYkNvcmUpL01v
ZHVsZXMvd2ViYXVkaW8vQXVkaW9CdWZmZXJDYWxsYmFjay5pZGwgXAogICAgICQoV2ViQ29yZSkv
TW9kdWxlcy93ZWJhdWRpby9BdWRpb0J1ZmZlclNvdXJjZU5vZGUuaWRsIFwKICAgICAkKFdlYkNv
cmUpL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0LmlkbCBcCisgICAgJChXZWJDb3JlKS9N
b2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQ29udGV4dFN0YXRlLmlkbCBcCiAgICAgJChXZWJDb3JlKS9N
b2R1bGVzL3dlYmF1ZGlvL0F1ZGlvRGVzdGluYXRpb25Ob2RlLmlkbCBcCiAgICAgJChXZWJDb3Jl
KS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvTGlzdGVuZXIuaWRsIFwKICAgICAkKFdlYkNvcmUpL01v
ZHVsZXMvd2ViYXVkaW8vQXVkaW9Ob2RlLmlkbCBcCkBAIC00MDUsNiArNDA2LDkgQEAgSlNfQklO
RElOR19JRExTID0gXAogICAgICQoV2ViQ29yZSkvTW9kdWxlcy93ZWJhdWRpby9QZXJpb2RpY1dh
dmUuaWRsIFwKICAgICAkKFdlYkNvcmUpL01vZHVsZXMvd2ViYXVkaW8vU2NyaXB0UHJvY2Vzc29y
Tm9kZS5pZGwgXAogICAgICQoV2ViQ29yZSkvTW9kdWxlcy93ZWJhdWRpby9XYXZlU2hhcGVyTm9k
ZS5pZGwgXAorICAgICQoV2ViQ29yZSkvTW9kdWxlcy93ZWJhdWRpby9XZWJLaXRBdWRpb0NvbnRl
eHQuaWRsIFwKKyAgICAkKFdlYkNvcmUpL01vZHVsZXMvd2ViYXVkaW8vV2ViS2l0QXVkaW9QYW5u
ZXJOb2RlLmlkbCBcCisgICAgJChXZWJDb3JlKS9Nb2R1bGVzL3dlYmF1ZGlvL1dlYktpdE9mZmxp
bmVBdWRpb0NvbnRleHQuaWRsIFwKICAgICAkKFdlYkNvcmUpL01vZHVsZXMvd2ViYXV0aG4vQXR0
ZXN0YXRpb25Db252ZXlhbmNlUHJlZmVyZW5jZS5pZGwgXAogICAgICQoV2ViQ29yZSkvTW9kdWxl
cy93ZWJhdXRobi9BdXRoZW50aWNhdGlvbkV4dGVuc2lvbnNDbGllbnRJbnB1dHMuaWRsIFwKICAg
ICAkKFdlYkNvcmUpL01vZHVsZXMvd2ViYXV0aG4vQXV0aGVudGljYXRpb25FeHRlbnNpb25zQ2xp
ZW50T3V0cHV0cy5pZGwgXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJh
dWRpby9BdWRpb0NvbnRleHQuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVk
aW9Db250ZXh0LmgKaW5kZXggOGUwOTQzOTRjZmYuLmMxZGZjNDAzYmJmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQ29udGV4dC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0LmgKQEAgLTI4LDYgKzI4LDcg
QEAKICNpbmNsdWRlICJBY3RpdmVET01PYmplY3QuaCIKICNpbmNsdWRlICJBc3luY0F1ZGlvRGVj
b2Rlci5oIgogI2luY2x1ZGUgIkF1ZGlvQnVzLmgiCisjaW5jbHVkZSAiQXVkaW9Db250ZXh0U3Rh
dGUuaCIKICNpbmNsdWRlICJBdWRpb0Rlc3RpbmF0aW9uTm9kZS5oIgogI2luY2x1ZGUgIkV2ZW50
VGFyZ2V0LmgiCiAjaW5jbHVkZSAiTWVkaWFDYW5TdGFydExpc3RlbmVyLmgiCkBAIC0xMzAsNyAr
MTMxLDcgQEAgcHVibGljOgogICAgIHZvaWQgcmVzdW1lUmVuZGVyaW5nKERPTVByb21pc2VEZWZl
cnJlZDx2b2lkPiYmKTsKICAgICB2b2lkIGNsb3NlKERPTVByb21pc2VEZWZlcnJlZDx2b2lkPiYm
KTsKIAotICAgIGVudW0gY2xhc3MgU3RhdGUgeyBTdXNwZW5kZWQsIFJ1bm5pbmcsIEludGVycnVw
dGVkLCBDbG9zZWQgfTsKKyAgICB1c2luZyBTdGF0ZSA9IEF1ZGlvQ29udGV4dFN0YXRlOwogICAg
IFN0YXRlIHN0YXRlKCkgY29uc3Q7CiAgICAgYm9vbCBpc0Nsb3NlZCgpIGNvbnN0IHsgcmV0dXJu
IG1fc3RhdGUgPT0gU3RhdGU6OkNsb3NlZDsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQ29udGV4dC5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmF1ZGlvL0F1ZGlvQ29udGV4dC5pZGwKaW5kZXggMTIxMjRhMzY3NzcuLjgzZGIzYjRk
NmIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQ29u
dGV4dC5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0NvbnRl
eHQuaWRsCkBAIC0yMywyMiArMjMsMTQgQEAKICAqIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLWVudW0gQXVkaW9Db250
ZXh0U3RhdGUgewotICAgICJzdXNwZW5kZWQiLAotICAgICJydW5uaW5nIiwKLSAgICAiaW50ZXJy
dXB0ZWQiLAotICAgICJjbG9zZWQiCi19OwotCiBbCiAgICAgQWN0aXZlRE9NT2JqZWN0LAogICAg
IENvbmRpdGlvbmFsPVdFQl9BVURJTywKICAgICBDb25zdHJ1Y3RvciwKICAgICBDb25zdHJ1Y3Rv
ckNhbGxXaXRoPURvY3VtZW50LAogICAgIENvbnN0cnVjdG9yTWF5VGhyb3dFeGNlcHRpb24sCi0g
ICAgRW5hYmxlZEJ5U2V0dGluZz1XZWJBdWRpbywKKyAgICBFbmFibGVkQnlTZXR0aW5nPU1vZGVy
blVucHJlZml4ZWRXZWJBdWRpbywKICAgICBFeHBvcnRNYWNybz1XRUJDT1JFX0VYUE9SVCwKLSAg
ICBJbnRlcmZhY2VOYW1lPXdlYmtpdEF1ZGlvQ29udGV4dCwKIF0gaW50ZXJmYWNlIEF1ZGlvQ29u
dGV4dCA6IEV2ZW50VGFyZ2V0IHsKICAgICAvLyBBbGwgcmVuZGVyZWQgYXVkaW8gdWx0aW1hdGVs
eSBjb25uZWN0cyB0byBkZXN0aW5hdGlvbiwgd2hpY2ggcmVwcmVzZW50cyB0aGUgYXVkaW8gaGFy
ZHdhcmUuCiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIEF1ZGlvRGVzdGluYXRpb25Ob2RlIGRlc3Rp
bmF0aW9uOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRp
b0NvbnRleHRTdGF0ZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0Nv
bnRleHRTdGF0ZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi4xNjAx
MzExMDhmYQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVk
aW8vQXVkaW9Db250ZXh0U3RhdGUuaApAQCAtMCwwICsxLDMyIEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTYtMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiAgUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIg
UFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTgorICog
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTCisgKiBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
cHJhZ21hIG9uY2UKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitlbnVtIGNsYXNzIEF1ZGlvQ29u
dGV4dFN0YXRlIHsgU3VzcGVuZGVkLCBSdW5uaW5nLCBJbnRlcnJ1cHRlZCwgQ2xvc2VkIH07CisK
K30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250
ZXh0U3RhdGUuaWRsIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0NvbnRl
eHRTdGF0ZS5pZGwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLmM4ZDA4
YmQyYjU2Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRp
by9BdWRpb0NvbnRleHRTdGF0ZS5pZGwKQEAgLTAsMCArMSwzMSBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxMCwgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdo
dCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVS
UE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMK
KyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTgorICogQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTCisgKiBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCitlbnVt
IEF1ZGlvQ29udGV4dFN0YXRlIHsKKyAgICAic3VzcGVuZGVkIiwKKyAgICAicnVubmluZyIsCisg
ICAgImludGVycnVwdGVkIiwKKyAgICAiY2xvc2VkIgorfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vT2ZmbGluZUF1ZGlvQ29udGV4dC5pZGwgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL09mZmxpbmVBdWRpb0NvbnRleHQuaWRsCmluZGV4IGM2
ZTBkNzRmMDJmLi42ZjEyMmE3YzNjOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJhdWRpby9PZmZsaW5lQXVkaW9Db250ZXh0LmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmF1ZGlvL09mZmxpbmVBdWRpb0NvbnRleHQuaWRsCkBAIC0yOCw2ICsyOCw2IEBA
CiAgICAgQ29uc3RydWN0b3IodW5zaWduZWQgbG9uZyBudW1iZXJPZkNoYW5uZWxzLCB1bnNpZ25l
ZCBsb25nIG51bWJlck9mRnJhbWVzLCB1bnJlc3RyaWN0ZWQgZmxvYXQgc2FtcGxlUmF0ZSksCiAg
ICAgQ29uc3RydWN0b3JNYXlUaHJvd0V4Y2VwdGlvbiwKICAgICBDb25zdHJ1Y3RvckNhbGxXaXRo
PVNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsCi0gICAgSW50ZXJmYWNlTmFtZT13ZWJraXRPZmZsaW5l
QXVkaW9Db250ZXh0CisgICAgRW5hYmxlZEJ5U2V0dGluZz1Nb2Rlcm5VbnByZWZpeGVkV2ViQXVk
aW8sCiBdIGludGVyZmFjZSBPZmZsaW5lQXVkaW9Db250ZXh0IDogQXVkaW9Db250ZXh0IHsKIH07
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1Bhbm5lck5vZGUu
aWRsIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9QYW5uZXJOb2RlLmlkbAppbmRl
eCAwMzI5ODM3ZDJmNS4uMzJkODkxZGMyYWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViYXVkaW8vUGFubmVyTm9kZS5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJhdWRpby9QYW5uZXJOb2RlLmlkbApAQCAtNDIsNyArNDIsNyBAQAogWwogICAgIENvbmRp
dGlvbmFsPVdFQl9BVURJTywKICAgICBKU0dlbmVyYXRlVG9KU09iamVjdCwKLSAgICBJbnRlcmZh
Y2VOYW1lPXdlYmtpdEF1ZGlvUGFubmVyTm9kZSwKKyAgICBFbmFibGVkQnlTZXR0aW5nPU1vZGVy
blVucHJlZml4ZWRXZWJBdWRpbywKIF0gaW50ZXJmYWNlIFBhbm5lck5vZGUgOiBBdWRpb05vZGUg
ewogICAgIC8vIERlZmF1bHQgbW9kZWwgZm9yIHN0ZXJlbyBpcyBIUlRGIAogICAgIGF0dHJpYnV0
ZSBQYW5uaW5nTW9kZWxUeXBlIHBhbm5pbmdNb2RlbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViYXVkaW8vV2ViS2l0QXVkaW9Db250ZXh0LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViYXVkaW8vV2ViS2l0QXVkaW9Db250ZXh0LmNwcApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uN2FjNThmMGEyYzgKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1dlYktpdEF1ZGlvQ29udGV4dC5jcHAK
QEAgLTAsMCArMSwxNDA3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQg
QU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04KKyAqIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUworICogU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaWYg
RU5BQkxFKFdFQl9BVURJTykKKworI2luY2x1ZGUgIldlYktpdEF1ZGlvQ29udGV4dC5oIgorCisj
aW5jbHVkZSAiQW5hbHlzZXJOb2RlLmgiCisjaW5jbHVkZSAiQXN5bmNBdWRpb0RlY29kZXIuaCIK
KyNpbmNsdWRlICJBdWRpb0J1ZmZlci5oIgorI2luY2x1ZGUgIkF1ZGlvQnVmZmVyQ2FsbGJhY2su
aCIKKyNpbmNsdWRlICJBdWRpb0J1ZmZlclNvdXJjZU5vZGUuaCIKKyNpbmNsdWRlICJBdWRpb0xp
c3RlbmVyLmgiCisjaW5jbHVkZSAiQXVkaW9Ob2RlSW5wdXQuaCIKKyNpbmNsdWRlICJBdWRpb05v
ZGVPdXRwdXQuaCIKKyNpbmNsdWRlICJBdWRpb1Nlc3Npb24uaCIKKyNpbmNsdWRlICJCaXF1YWRG
aWx0ZXJOb2RlLmgiCisjaW5jbHVkZSAiQ2hhbm5lbE1lcmdlck5vZGUuaCIKKyNpbmNsdWRlICJD
aGFubmVsU3BsaXR0ZXJOb2RlLmgiCisjaW5jbHVkZSAiQ29udm9sdmVyTm9kZS5oIgorI2luY2x1
ZGUgIkRlZmF1bHRBdWRpb0Rlc3RpbmF0aW9uTm9kZS5oIgorI2luY2x1ZGUgIkRlbGF5Tm9kZS5o
IgorI2luY2x1ZGUgIkRvY3VtZW50LmgiCisjaW5jbHVkZSAiRHluYW1pY3NDb21wcmVzc29yTm9k
ZS5oIgorI2luY2x1ZGUgIkV2ZW50TmFtZXMuaCIKKyNpbmNsdWRlICJGRlRGcmFtZS5oIgorI2lu
Y2x1ZGUgIkZyYW1lLmgiCisjaW5jbHVkZSAiRnJhbWVMb2FkZXIuaCIKKyNpbmNsdWRlICJHYWlu
Tm9kZS5oIgorI2luY2x1ZGUgIkdlbmVyaWNFdmVudFF1ZXVlLmgiCisjaW5jbHVkZSAiSFJURkRh
dGFiYXNlTG9hZGVyLmgiCisjaW5jbHVkZSAiSFJURlBhbm5lci5oIgorI2luY2x1ZGUgIkpTRE9N
UHJvbWlzZURlZmVycmVkLmgiCisjaW5jbHVkZSAiTG9nZ2luZy5oIgorI2luY2x1ZGUgIk5ldHdv
cmtpbmdDb250ZXh0LmgiCisjaW5jbHVkZSAiT2ZmbGluZUF1ZGlvQ29tcGxldGlvbkV2ZW50Lmgi
CisjaW5jbHVkZSAiT2ZmbGluZUF1ZGlvRGVzdGluYXRpb25Ob2RlLmgiCisjaW5jbHVkZSAiT3Nj
aWxsYXRvck5vZGUuaCIKKyNpbmNsdWRlICJQYWdlLmgiCisjaW5jbHVkZSAiUGFubmVyTm9kZS5o
IgorI2luY2x1ZGUgIlBlcmlvZGljV2F2ZS5oIgorI2luY2x1ZGUgIlBsYXRmb3JtTWVkaWFTZXNz
aW9uTWFuYWdlci5oIgorI2luY2x1ZGUgIlNjcmlwdENvbnRyb2xsZXIuaCIKKyNpbmNsdWRlICJT
Y3JpcHRQcm9jZXNzb3JOb2RlLmgiCisjaW5jbHVkZSAiV2F2ZVNoYXBlck5vZGUuaCIKKyNpbmNs
dWRlIDxKYXZhU2NyaXB0Q29yZS9TY3JpcHRDYWxsU3RhY2suaD4KKworI2lmIEVOQUJMRShNRURJ
QV9TVFJFQU0pCisjaW5jbHVkZSAiTWVkaWFTdHJlYW0uaCIKKyNpbmNsdWRlICJNZWRpYVN0cmVh
bUF1ZGlvRGVzdGluYXRpb25Ob2RlLmgiCisjaW5jbHVkZSAiTWVkaWFTdHJlYW1BdWRpb1NvdXJj
ZS5oIgorI2luY2x1ZGUgIk1lZGlhU3RyZWFtQXVkaW9Tb3VyY2VOb2RlLmgiCisjZW5kaWYKKwor
I2lmIEVOQUJMRShWSURFTykKKyNpbmNsdWRlICJIVE1MTWVkaWFFbGVtZW50LmgiCisjaW5jbHVk
ZSAiTWVkaWFFbGVtZW50QXVkaW9Tb3VyY2VOb2RlLmgiCisjZW5kaWYKKworI2lmIERFQlVHX0FV
RElPTk9ERV9SRUZFUkVOQ0VTCisjaW5jbHVkZSA8c3RkaW8uaD4KKyNlbmRpZgorCisjaWYgVVNF
KEdTVFJFQU1FUikKKyNpbmNsdWRlICJHU3RyZWFtZXJDb21tb24uaCIKKyNlbmRpZgorCisjaWYg
UExBVEZPUk0oSU9TX0ZBTUlMWSkKKyNpbmNsdWRlICJTY3JpcHRDb250cm9sbGVyLmgiCisjaW5j
bHVkZSAiU2V0dGluZ3MuaCIKKyNlbmRpZgorCisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvQXJy
YXlCdWZmZXIuaD4KKyNpbmNsdWRlIDx3dGYvQXRvbWljcy5oPgorI2luY2x1ZGUgPHd0Zi9Jc29N
YWxsb2NJbmxpbmVzLmg+CisjaW5jbHVkZSA8d3RmL01haW5UaHJlYWQuaD4KKyNpbmNsdWRlIDx3
dGYvUmVmLmg+CisjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KKyNpbmNsdWRlIDx3dGYvU2Nv
cGUuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KKworY29uc3QgdW5zaWduZWQg
TWF4UGVyaW9kaWNXYXZlTGVuZ3RoID0gNDA5NjsKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitX
VEZfTUFLRV9JU09fQUxMT0NBVEVEX0lNUEwoV2ViS2l0QXVkaW9Db250ZXh0KTsKKworI2RlZmlu
ZSBSRUxFQVNFX0xPR19JRl9BTExPV0VEKGZtdCwgLi4uKSBSRUxFQVNFX0xPR19JRihkb2N1bWVu
dCgpICYmIGRvY3VtZW50KCktPnBhZ2UoKSAmJiBkb2N1bWVudCgpLT5wYWdlKCktPmlzQWx3YXlz
T25Mb2dnaW5nQWxsb3dlZCgpLCBNZWRpYSwgIiVwIC0gV2ViS2l0QXVkaW9Db250ZXh0OjoiIGZt
dCwgdGhpcywgIyNfX1ZBX0FSR1NfXykKKworYm9vbCBXZWJLaXRBdWRpb0NvbnRleHQ6OmlzU2Ft
cGxlUmF0ZVJhbmdlR29vZChmbG9hdCBzYW1wbGVSYXRlKQoreworICAgIC8vIEZJWE1FOiBJdCB3
b3VsZCBiZSBuaWNlIGlmIHRoZSBtaW5pbXVtIHNhbXBsZS1yYXRlIGNvdWxkIGJlIGxlc3MgdGhh
biA0NC4xS0h6LAorICAgIC8vIGJ1dCB0aGF0IHdpbGwgcmVxdWlyZSBzb21lIGZpeGVzIGluIEhS
VEZQYW5uZXI6OmZmdFNpemVGb3JTYW1wbGVSYXRlKCksIGFuZCBzb21lIHRlc3RpbmcgdGhlcmUu
CisgICAgcmV0dXJuIHNhbXBsZVJhdGUgPj0gNDQxMDAgJiYgc2FtcGxlUmF0ZSA8PSA5NjAwMDsK
K30KKworI2lmIE9TKFdJTkRPV1MpCisvLyBEb24ndCBhbGxvdyBtb3JlIHRoYW4gdGhpcyBudW1i
ZXIgb2Ygc2ltdWx0YW5lb3VzIEF1ZGlvQ29udGV4dHMgdGFsa2luZyB0byBoYXJkd2FyZS4KK2Nv
bnN0ZXhwciB1bnNpZ25lZCBtYXhIYXJkd2FyZUNvbnRleHRzID0gNDsKKyNlbmRpZgordW5zaWdu
ZWQgV2ViS2l0QXVkaW9Db250ZXh0OjpzX2hhcmR3YXJlQ29udGV4dENvdW50ID0gMDsKKworRXhj
ZXB0aW9uT3I8UmVmPFdlYktpdEF1ZGlvQ29udGV4dD4+IFdlYktpdEF1ZGlvQ29udGV4dDo6Y3Jl
YXRlKERvY3VtZW50JiBkb2N1bWVudCkKK3sKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwor
I2lmIE9TKFdJTkRPV1MpCisgICAgaWYgKHNfaGFyZHdhcmVDb250ZXh0Q291bnQgPj0gbWF4SGFy
ZHdhcmVDb250ZXh0cykKKyAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IFF1b3RhRXhjZWVkZWRF
cnJvciB9OworI2VuZGlmCisKKyAgICBhdXRvIGF1ZGlvQ29udGV4dCA9IGFkb3B0UmVmKCpuZXcg
V2ViS2l0QXVkaW9Db250ZXh0KGRvY3VtZW50KSk7CisgICAgYXVkaW9Db250ZXh0LT5zdXNwZW5k
SWZOZWVkZWQoKTsKKyAgICByZXR1cm4gYXVkaW9Db250ZXh0OworfQorCisvLyBDb25zdHJ1Y3Rv
ciBmb3IgcmVuZGVyaW5nIHRvIHRoZSBhdWRpbyBoYXJkd2FyZS4KK1dlYktpdEF1ZGlvQ29udGV4
dDo6V2ViS2l0QXVkaW9Db250ZXh0KERvY3VtZW50JiBkb2N1bWVudCkKKyAgICA6IEFjdGl2ZURP
TU9iamVjdChkb2N1bWVudCkKKyNpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKKyAgICAsIG1fbG9n
Z2VyKGRvY3VtZW50LmxvZ2dlcigpKQorICAgICwgbV9sb2dJZGVudGlmaWVyKHVuaXF1ZUxvZ0lk
ZW50aWZpZXIoKSkKKyNlbmRpZgorICAgICwgbV9tZWRpYVNlc3Npb24oUGxhdGZvcm1NZWRpYVNl
c3Npb246OmNyZWF0ZShQbGF0Zm9ybU1lZGlhU2Vzc2lvbk1hbmFnZXI6OnNoYXJlZE1hbmFnZXIo
KSwgKnRoaXMpKQorICAgICwgbV9ldmVudFF1ZXVlKE1haW5UaHJlYWRHZW5lcmljRXZlbnRRdWV1
ZTo6Y3JlYXRlKCp0aGlzKSkKK3sKKyAgICAvLyBBY2NvcmRpbmcgdG8gc3BlYyBBdWRpb0NvbnRl
eHQgbXVzdCBkaWUgb25seSBhZnRlciBwYWdlIG5hdmlnYXRlLgorICAgIC8vIExldHMgbWFyayBp
dCBhcyBBY3RpdmVET01PYmplY3Qgd2l0aCBwZW5kaW5nIGFjdGl2aXR5IGFuZCB1bm1hcmsgaXQg
aW4gY2xlYXIgbWV0aG9kLgorICAgIG1ha2VQZW5kaW5nQWN0aXZpdHkoKTsKKworICAgIGNvbnN0
cnVjdENvbW1vbigpOworCisgICAgbV9kZXN0aW5hdGlvbk5vZGUgPSBEZWZhdWx0QXVkaW9EZXN0
aW5hdGlvbk5vZGU6OmNyZWF0ZSgqdGhpcyk7CisKKyAgICAvLyBJbml0aWFsaXplIHRoZSBkZXN0
aW5hdGlvbiBub2RlJ3MgbXV0ZWQgc3RhdGUgdG8gbWF0Y2ggdGhlIHBhZ2UncyBjdXJyZW50IG11
dGVkIHN0YXRlLgorICAgIHBhZ2VNdXRlZFN0YXRlRGlkQ2hhbmdlKCk7CisKKyAgICBkb2N1bWVu
dC5hZGRBdWRpb1Byb2R1Y2VyKCp0aGlzKTsKKyAgICBkb2N1bWVudC5yZWdpc3RlckZvclZpc2li
aWxpdHlTdGF0ZUNoYW5nZWRDYWxsYmFja3MoKnRoaXMpOworfQorCisvLyBDb25zdHJ1Y3RvciBm
b3Igb2ZmbGluZSAobm9uLXJlYWx0aW1lKSByZW5kZXJpbmcuCitXZWJLaXRBdWRpb0NvbnRleHQ6
OldlYktpdEF1ZGlvQ29udGV4dChEb2N1bWVudCYgZG9jdW1lbnQsIEF1ZGlvQnVmZmVyKiByZW5k
ZXJUYXJnZXQpCisgICAgOiBBY3RpdmVET01PYmplY3QoZG9jdW1lbnQpCisjaWYgIVJFTEVBU0Vf
TE9HX0RJU0FCTEVECisgICAgLCBtX2xvZ2dlcihkb2N1bWVudC5sb2dnZXIoKSkKKyAgICAsIG1f
bG9nSWRlbnRpZmllcih1bmlxdWVMb2dJZGVudGlmaWVyKCkpCisjZW5kaWYKKyAgICAsIG1faXNP
ZmZsaW5lQ29udGV4dCh0cnVlKQorICAgICwgbV9tZWRpYVNlc3Npb24oUGxhdGZvcm1NZWRpYVNl
c3Npb246OmNyZWF0ZShQbGF0Zm9ybU1lZGlhU2Vzc2lvbk1hbmFnZXI6OnNoYXJlZE1hbmFnZXIo
KSwgKnRoaXMpKQorICAgICwgbV9ldmVudFF1ZXVlKE1haW5UaHJlYWRHZW5lcmljRXZlbnRRdWV1
ZTo6Y3JlYXRlKCp0aGlzKSkKKyAgICAsIG1fcmVuZGVyVGFyZ2V0KHJlbmRlclRhcmdldCkKK3sK
KyAgICBjb25zdHJ1Y3RDb21tb24oKTsKKworICAgIC8vIENyZWF0ZSBhIG5ldyBkZXN0aW5hdGlv
biBmb3Igb2ZmbGluZSByZW5kZXJpbmcuCisgICAgbV9kZXN0aW5hdGlvbk5vZGUgPSBPZmZsaW5l
QXVkaW9EZXN0aW5hdGlvbk5vZGU6OmNyZWF0ZSgqdGhpcywgbV9yZW5kZXJUYXJnZXQuZ2V0KCkp
OworfQorCit2b2lkIFdlYktpdEF1ZGlvQ29udGV4dDo6Y29uc3RydWN0Q29tbW9uKCkKK3sKKyAg
ICBGRlRGcmFtZTo6aW5pdGlhbGl6ZSgpOworCisgICAgbV9saXN0ZW5lciA9IEF1ZGlvTGlzdGVu
ZXI6OmNyZWF0ZSgpOworCisgICAgQVNTRVJUKGRvY3VtZW50KCkpOworICAgIGlmIChkb2N1bWVu
dCgpLT5hdWRpb1BsYXliYWNrUmVxdWlyZXNVc2VyR2VzdHVyZSgpKQorICAgICAgICBhZGRCZWhh
dmlvclJlc3RyaWN0aW9uKFJlcXVpcmVVc2VyR2VzdHVyZUZvckF1ZGlvU3RhcnRSZXN0cmljdGlv
bik7CisgICAgZWxzZQorICAgICAgICBtX3Jlc3RyaWN0aW9ucyA9IE5vUmVzdHJpY3Rpb25zOwor
CisjaWYgUExBVEZPUk0oQ09DT0EpCisgICAgYWRkQmVoYXZpb3JSZXN0cmljdGlvbihSZXF1aXJl
UGFnZUNvbnNlbnRGb3JBdWRpb1N0YXJ0UmVzdHJpY3Rpb24pOworI2VuZGlmCit9CisKK1dlYktp
dEF1ZGlvQ29udGV4dDo6fkF1ZGlvQ29udGV4dCgpCit7CisjaWYgREVCVUdfQVVESU9OT0RFX1JF
RkVSRU5DRVMKKyAgICBmcHJpbnRmKHN0ZGVyciwgIiVwOiBXZWJLaXRBdWRpb0NvbnRleHQ6On5B
dWRpb0NvbnRleHQoKVxuIiwgdGhpcyk7CisjZW5kaWYKKyAgICBBU1NFUlQoIW1faXNJbml0aWFs
aXplZCk7CisgICAgQVNTRVJUKG1faXNTdG9wU2NoZWR1bGVkKTsKKyAgICBBU1NFUlQobV9ub2Rl
c1RvRGVsZXRlLmlzRW1wdHkoKSk7CisgICAgQVNTRVJUKG1fcmVmZXJlbmNlZE5vZGVzLmlzRW1w
dHkoKSk7CisgICAgQVNTRVJUKG1fZmluaXNoZWROb2Rlcy5pc0VtcHR5KCkpOyAvLyBGSVhNRSAo
YnVnIDEwNTg3MCk6IFRoaXMgYXNzZXJ0aW9uIGZhaWxzIG9uIHRlc3RzIHNvbWV0aW1lcy4KKyAg
ICBBU1NFUlQobV9hdXRvbWF0aWNQdWxsTm9kZXMuaXNFbXB0eSgpKTsKKyAgICBpZiAobV9hdXRv
bWF0aWNQdWxsTm9kZXNOZWVkVXBkYXRpbmcpCisgICAgICAgIG1fcmVuZGVyaW5nQXV0b21hdGlj
UHVsbE5vZGVzLnJlc2l6ZShtX2F1dG9tYXRpY1B1bGxOb2Rlcy5zaXplKCkpOworICAgIEFTU0VS
VChtX3JlbmRlcmluZ0F1dG9tYXRpY1B1bGxOb2Rlcy5pc0VtcHR5KCkpOworICAgIC8vIEZJWE1F
OiBDYW4gd2UgYXNzZXJ0IHRoYXQgbV9kZWZlcnJlZEZpbmlzaERlcmVmTGlzdCBpcyBlbXB0eT8K
KworICAgIGlmICghaXNPZmZsaW5lQ29udGV4dCgpICYmIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQo
KSkgeworICAgICAgICBkb2N1bWVudCgpLT5yZW1vdmVBdWRpb1Byb2R1Y2VyKCp0aGlzKTsKKyAg
ICAgICAgZG9jdW1lbnQoKS0+dW5yZWdpc3RlckZvclZpc2liaWxpdHlTdGF0ZUNoYW5nZWRDYWxs
YmFja3MoKnRoaXMpOworICAgIH0KK30KKwordm9pZCBXZWJLaXRBdWRpb0NvbnRleHQ6OmxhenlJ
bml0aWFsaXplKCkKK3sKKyAgICBBU1NFUlQoIW1faXNTdG9wU2NoZWR1bGVkKTsKKworICAgIGlm
IChtX2lzSW5pdGlhbGl6ZWQpCisgICAgICAgIHJldHVybjsKKworICAgIC8vIERvbid0IGFsbG93
IHRoZSBjb250ZXh0IHRvIGluaXRpYWxpemUgYSBzZWNvbmQgdGltZSBhZnRlciBpdCdzIGFscmVh
ZHkgYmVlbiBleHBsaWNpdGx5IHVuaW5pdGlhbGl6ZWQuCisgICAgQVNTRVJUKCFtX2lzQXVkaW9U
aHJlYWRGaW5pc2hlZCk7CisgICAgaWYgKG1faXNBdWRpb1RocmVhZEZpbmlzaGVkKQorICAgICAg
ICByZXR1cm47CisKKyAgICBpZiAobV9kZXN0aW5hdGlvbk5vZGUpIHsKKyAgICAgICAgbV9kZXN0
aW5hdGlvbk5vZGUtPmluaXRpYWxpemUoKTsKKworICAgICAgICBpZiAoIWlzT2ZmbGluZUNvbnRl
eHQoKSkgeworICAgICAgICAgICAgLy8gVGhpcyBzdGFydHMgdGhlIGF1ZGlvIHRocmVhZC4gVGhl
IGRlc3RpbmF0aW9uIG5vZGUncyBwcm92aWRlSW5wdXQoKSBtZXRob2Qgd2lsbCBub3cgYmUgY2Fs
bGVkIHJlcGVhdGVkbHkgdG8gcmVuZGVyIGF1ZGlvLgorICAgICAgICAgICAgLy8gRWFjaCB0aW1l
IHByb3ZpZGVJbnB1dCgpIGlzIGNhbGxlZCwgYSBwb3J0aW9uIG9mIHRoZSBhdWRpbyBzdHJlYW0g
aXMgcmVuZGVyZWQuIExldCdzIGNhbGwgdGhpcyB0aW1lIHBlcmlvZCBhICJyZW5kZXIgcXVhbnR1
bSIuCisgICAgICAgICAgICAvLyBOT1RFOiBmb3Igbm93IGRlZmF1bHQgQXVkaW9Db250ZXh0IGRv
ZXMgbm90IG5lZWQgYW4gZXhwbGljaXQgc3RhcnRSZW5kZXJpbmcoKSBjYWxsIGZyb20gSmF2YVNj
cmlwdC4KKyAgICAgICAgICAgIC8vIFdlIG1heSB3YW50IHRvIGNvbnNpZGVyIHJlcXVpcmluZyBp
dCBmb3Igc3ltbWV0cnkgd2l0aCBPZmZsaW5lQXVkaW9Db250ZXh0LgorICAgICAgICAgICAgc3Rh
cnRSZW5kZXJpbmcoKTsKKyAgICAgICAgICAgICsrc19oYXJkd2FyZUNvbnRleHRDb3VudDsKKyAg
ICAgICAgfQorICAgIH0KKyAgICBtX2lzSW5pdGlhbGl6ZWQgPSB0cnVlOworfQorCit2b2lkIFdl
YktpdEF1ZGlvQ29udGV4dDo6Y2xlYXIoKQoreworICAgIFJlZjxXZWJLaXRBdWRpb0NvbnRleHQ+
IHByb3RlY3RlZFRoaXMoKnRoaXMpOworCisgICAgLy8gV2UgaGF2ZSB0byByZWxlYXNlIG91ciBy
ZWZlcmVuY2UgdG8gdGhlIGRlc3RpbmF0aW9uIG5vZGUgYmVmb3JlIHRoZSBjb250ZXh0IHdpbGwg
ZXZlciBiZSBkZWxldGVkIHNpbmNlIHRoZSBkZXN0aW5hdGlvbiBub2RlIGhvbGRzIGEgcmVmZXJl
bmNlIHRvIHRoZSBjb250ZXh0LgorICAgIGlmIChtX2Rlc3RpbmF0aW9uTm9kZSkKKyAgICAgICAg
bV9kZXN0aW5hdGlvbk5vZGUgPSBudWxscHRyOworCisgICAgLy8gQXVkaW8gdGhyZWFkIGlzIGRl
YWQuIE5vYm9keSB3aWxsIHNjaGVkdWxlIG5vZGUgZGVsZXRpb24gYWN0aW9uLiBMZXQncyBkbyBp
dCBvdXJzZWx2ZXMuCisgICAgZG8geworICAgICAgICBkZWxldGVNYXJrZWROb2RlcygpOworICAg
ICAgICBtX25vZGVzVG9EZWxldGUuYXBwZW5kVmVjdG9yKG1fbm9kZXNNYXJrZWRGb3JEZWxldGlv
bik7CisgICAgICAgIG1fbm9kZXNNYXJrZWRGb3JEZWxldGlvbi5jbGVhcigpOworICAgIH0gd2hp
bGUgKG1fbm9kZXNUb0RlbGV0ZS5zaXplKCkpOworCisgICAgY2xlYXJQZW5kaW5nQWN0aXZpdHko
KTsKK30KKwordm9pZCBXZWJLaXRBdWRpb0NvbnRleHQ6OnVuaW5pdGlhbGl6ZSgpCit7CisgICAg
QUxXQVlTX0xPRyhMT0dJREVOVElGSUVSKTsKKworICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7
CisKKyAgICBpZiAoIW1faXNJbml0aWFsaXplZCkKKyAgICAgICAgcmV0dXJuOworCisgICAgLy8g
VGhpcyBzdG9wcyB0aGUgYXVkaW8gdGhyZWFkIGFuZCBhbGwgYXVkaW8gcmVuZGVyaW5nLgorICAg
IGlmIChtX2Rlc3RpbmF0aW9uTm9kZSkKKyAgICAgICAgbV9kZXN0aW5hdGlvbk5vZGUtPnVuaW5p
dGlhbGl6ZSgpOworCisgICAgLy8gRG9uJ3QgYWxsb3cgdGhlIGNvbnRleHQgdG8gaW5pdGlhbGl6
ZSBhIHNlY29uZCB0aW1lIGFmdGVyIGl0J3MgYWxyZWFkeSBiZWVuIGV4cGxpY2l0bHkgdW5pbml0
aWFsaXplZC4KKyAgICBtX2lzQXVkaW9UaHJlYWRGaW5pc2hlZCA9IHRydWU7CisKKyAgICBpZiAo
IWlzT2ZmbGluZUNvbnRleHQoKSkgeworICAgICAgICBBU1NFUlQoc19oYXJkd2FyZUNvbnRleHRD
b3VudCk7CisgICAgICAgIC0tc19oYXJkd2FyZUNvbnRleHRDb3VudDsKKworICAgICAgICAvLyBP
ZmZsaW5lIGNvbnRleHRzIG1vdmUgdG8gJ0Nsb3NlZCcgc3RhdGUgd2hlbiBkaXNwYXRjaGluZyB0
aGUgY29tcGxldGlvbiBldmVudC4KKyAgICAgICAgc2V0U3RhdGUoU3RhdGU6OkNsb3NlZCk7Cisg
ICAgfQorCisgICAgLy8gR2V0IHJpZCBvZiB0aGUgc291cmNlcyB3aGljaCBtYXkgc3RpbGwgYmUg
cGxheWluZy4KKyAgICBkZXJlZlVuZmluaXNoZWRTb3VyY2VOb2RlcygpOworCisgICAgbV9pc0lu
aXRpYWxpemVkID0gZmFsc2U7Cit9CisKK2Jvb2wgV2ViS2l0QXVkaW9Db250ZXh0Ojppc0luaXRp
YWxpemVkKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9pc0luaXRpYWxpemVkOworfQorCit2b2lk
IFdlYktpdEF1ZGlvQ29udGV4dDo6YWRkUmVhY3Rpb24oU3RhdGUgc3RhdGUsIERPTVByb21pc2VE
ZWZlcnJlZDx2b2lkPiYmIHByb21pc2UpCit7CisgICAgc2l6ZV90IHN0YXRlSW5kZXggPSBzdGF0
aWNfY2FzdDxzaXplX3Q+KHN0YXRlKTsKKyAgICBpZiAoc3RhdGVJbmRleCA+PSBtX3N0YXRlUmVh
Y3Rpb25zLnNpemUoKSkKKyAgICAgICAgbV9zdGF0ZVJlYWN0aW9ucy5ncm93KHN0YXRlSW5kZXgg
KyAxKTsKKworICAgIG1fc3RhdGVSZWFjdGlvbnNbc3RhdGVJbmRleF0uYXBwZW5kKFdURk1vdmUo
cHJvbWlzZSkpOworfQorCit2b2lkIFdlYktpdEF1ZGlvQ29udGV4dDo6c2V0U3RhdGUoU3RhdGUg
c3RhdGUpCit7CisgICAgaWYgKG1fc3RhdGUgPT0gc3RhdGUpCisgICAgICAgIHJldHVybjsKKwor
ICAgIG1fc3RhdGUgPSBzdGF0ZTsKKyAgICBtX2V2ZW50UXVldWUtPmVucXVldWVFdmVudChFdmVu
dDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5zdGF0ZWNoYW5nZUV2ZW50LCBFdmVudDo6Q2FuQnViYmxl
OjpZZXMsIEV2ZW50OjpJc0NhbmNlbGFibGU6Ok5vKSk7CisKKyAgICBzaXplX3Qgc3RhdGVJbmRl
eCA9IHN0YXRpY19jYXN0PHNpemVfdD4oc3RhdGUpOworICAgIGlmIChzdGF0ZUluZGV4ID49IG1f
c3RhdGVSZWFjdGlvbnMuc2l6ZSgpKQorICAgICAgICByZXR1cm47CisKKyAgICBWZWN0b3I8RE9N
UHJvbWlzZURlZmVycmVkPHZvaWQ+PiByZWFjdGlvbnM7CisgICAgbV9zdGF0ZVJlYWN0aW9uc1tz
dGF0ZUluZGV4XS5zd2FwKHJlYWN0aW9ucyk7CisKKyAgICBmb3IgKGF1dG8mIHByb21pc2UgOiBy
ZWFjdGlvbnMpCisgICAgICAgIHByb21pc2UucmVzb2x2ZSgpOworfQorCit2b2lkIFdlYktpdEF1
ZGlvQ29udGV4dDo6c3RvcCgpCit7CisgICAgQUxXQVlTX0xPRyhMT0dJREVOVElGSUVSKTsKKwor
ICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisKKyAgICAvLyBVc3VhbGx5IFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQgY2FsbHMgc3RvcCB0d2ljZS4KKyAgICBpZiAobV9pc1N0b3BTY2hlZHVsZWQp
CisgICAgICAgIHJldHVybjsKKyAgICBtX2lzU3RvcFNjaGVkdWxlZCA9IHRydWU7CisKKyAgICBB
U1NFUlQoZG9jdW1lbnQoKSk7CisgICAgZG9jdW1lbnQoKS0+dXBkYXRlSXNQbGF5aW5nTWVkaWEo
KTsKKworICAgIHVuaW5pdGlhbGl6ZSgpOworICAgIGNsZWFyKCk7Cit9CisKK3ZvaWQgV2ViS2l0
QXVkaW9Db250ZXh0OjpzdXNwZW5kKFJlYXNvbkZvclN1c3BlbnNpb24pCit7CisgICAgaWYgKHN0
YXRlKCkgPT0gU3RhdGU6OlJ1bm5pbmcpIHsKKyAgICAgICAgbV9tZWRpYVNlc3Npb24tPmJlZ2lu
SW50ZXJydXB0aW9uKFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpQbGF5YmFja1N1c3BlbmRlZCk7Cisg
ICAgICAgIGRvY3VtZW50KCktPnVwZGF0ZUlzUGxheWluZ01lZGlhKCk7CisgICAgfQorfQorCit2
b2lkIFdlYktpdEF1ZGlvQ29udGV4dDo6cmVzdW1lKCkKK3sKKyAgICBpZiAoc3RhdGUoKSA9PSBT
dGF0ZTo6SW50ZXJydXB0ZWQpIHsKKyAgICAgICAgbV9tZWRpYVNlc3Npb24tPmVuZEludGVycnVw
dGlvbihQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6TWF5UmVzdW1lUGxheWluZyk7CisgICAgICAgIGRv
Y3VtZW50KCktPnVwZGF0ZUlzUGxheWluZ01lZGlhKCk7CisgICAgfQorfQorCitjb25zdCBjaGFy
KiBXZWJLaXRBdWRpb0NvbnRleHQ6OmFjdGl2ZURPTU9iamVjdE5hbWUoKSBjb25zdAoreworICAg
IHJldHVybiAiV2ViS2l0QXVkaW9Db250ZXh0IjsKK30KKworRG9jdW1lbnQqIFdlYktpdEF1ZGlv
Q29udGV4dDo6ZG9jdW1lbnQoKSBjb25zdAoreworICAgIHJldHVybiBkb3duY2FzdDxEb2N1bWVu
dD4obV9zY3JpcHRFeGVjdXRpb25Db250ZXh0KTsKK30KKworRG9jdW1lbnRJZGVudGlmaWVyIFdl
YktpdEF1ZGlvQ29udGV4dDo6aG9zdGluZ0RvY3VtZW50SWRlbnRpZmllcigpIGNvbnN0Cit7Cisg
ICAgYXV0byogZG9jdW1lbnQgPSBkb3duY2FzdDxEb2N1bWVudD4obV9zY3JpcHRFeGVjdXRpb25D
b250ZXh0KTsKKyAgICByZXR1cm4gZG9jdW1lbnQgPyBkb2N1bWVudC0+aWRlbnRpZmllcigpIDog
RG9jdW1lbnRJZGVudGlmaWVyIHsgfTsKK30KKworYm9vbCBXZWJLaXRBdWRpb0NvbnRleHQ6Omlz
U3VzcGVuZGVkKCkgY29uc3QKK3sKKyAgICByZXR1cm4gIWRvY3VtZW50KCkgfHwgZG9jdW1lbnQo
KS0+YWN0aXZlRE9NT2JqZWN0c0FyZVN1c3BlbmRlZCgpIHx8IGRvY3VtZW50KCktPmFjdGl2ZURP
TU9iamVjdHNBcmVTdG9wcGVkKCk7Cit9CisKK3ZvaWQgV2ViS2l0QXVkaW9Db250ZXh0Ojp2aXNp
YmlsaXR5U3RhdGVDaGFuZ2VkKCkKK3sKKyAgICAvLyBEbyBub3Qgc3VzcGVuZCBpZiBhdWRpbyBp
cyBhdWRpYmxlLgorICAgIGlmICghZG9jdW1lbnQoKSB8fCBtZWRpYVN0YXRlKCkgPT0gTWVkaWFQ
cm9kdWNlcjo6SXNQbGF5aW5nQXVkaW8gfHwgbV9pc1N0b3BTY2hlZHVsZWQpCisgICAgICAgIHJl
dHVybjsKKworICAgIGlmIChkb2N1bWVudCgpLT5oaWRkZW4oKSkgeworICAgICAgICBpZiAoc3Rh
dGUoKSA9PSBTdGF0ZTo6UnVubmluZykgeworICAgICAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxM
T1dFRCgidmlzaWJpbGl0eVN0YXRlQ2hhbmdlZCgpIFN1c3BlbmRpbmcgcGxheWJhY2sgYWZ0ZXIg
Z29pbmcgdG8gdGhlIGJhY2tncm91bmQiKTsKKyAgICAgICAgICAgIG1fbWVkaWFTZXNzaW9uLT5i
ZWdpbkludGVycnVwdGlvbihQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6RW50ZXJpbmdCYWNrZ3JvdW5k
KTsKKyAgICAgICAgfQorICAgIH0gZWxzZSB7CisgICAgICAgIGlmIChzdGF0ZSgpID09IFN0YXRl
OjpJbnRlcnJ1cHRlZCkgeworICAgICAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgidmlz
aWJpbGl0eVN0YXRlQ2hhbmdlZCgpIFJlc3VtaW5nIHBsYXliYWNrIGFmdGVyIGVudGVyaW5nIGZv
cmVncm91bmQiKTsKKyAgICAgICAgICAgIG1fbWVkaWFTZXNzaW9uLT5lbmRJbnRlcnJ1cHRpb24o
UGxhdGZvcm1NZWRpYVNlc3Npb246Ok1heVJlc3VtZVBsYXlpbmcpOworICAgICAgICB9CisgICAg
fQorfQorCitib29sIFdlYktpdEF1ZGlvQ29udGV4dDo6d291bGRUYWludE9yaWdpbihjb25zdCBV
UkwmIHVybCkgY29uc3QKK3sKKyAgICBpZiAodXJsLnByb3RvY29sSXNEYXRhKCkpCisgICAgICAg
IHJldHVybiBmYWxzZTsKKworICAgIGlmIChhdXRvKiBkb2N1bWVudCA9IHRoaXMtPmRvY3VtZW50
KCkpCisgICAgICAgIHJldHVybiAhZG9jdW1lbnQtPnNlY3VyaXR5T3JpZ2luKCkuY2FuUmVxdWVz
dCh1cmwpOworCisgICAgcmV0dXJuIGZhbHNlOworfQorCitFeGNlcHRpb25PcjxSZWY8QXVkaW9C
dWZmZXI+PiBXZWJLaXRBdWRpb0NvbnRleHQ6OmNyZWF0ZUJ1ZmZlcih1bnNpZ25lZCBudW1iZXJP
ZkNoYW5uZWxzLCBzaXplX3QgbnVtYmVyT2ZGcmFtZXMsIGZsb2F0IHNhbXBsZVJhdGUpCit7Cisg
ICAgYXV0byBhdWRpb0J1ZmZlciA9IEF1ZGlvQnVmZmVyOjpjcmVhdGUobnVtYmVyT2ZDaGFubmVs
cywgbnVtYmVyT2ZGcmFtZXMsIHNhbXBsZVJhdGUpOworICAgIGlmICghYXVkaW9CdWZmZXIpCisg
ICAgICAgIHJldHVybiBFeGNlcHRpb24geyBOb3RTdXBwb3J0ZWRFcnJvciB9OworICAgIHJldHVy
biBhdWRpb0J1ZmZlci5yZWxlYXNlTm9uTnVsbCgpOworfQorCitFeGNlcHRpb25PcjxSZWY8QXVk
aW9CdWZmZXI+PiBXZWJLaXRBdWRpb0NvbnRleHQ6OmNyZWF0ZUJ1ZmZlcihBcnJheUJ1ZmZlciYg
YXJyYXlCdWZmZXIsIGJvb2wgbWl4VG9Nb25vKQoreworICAgIGF1dG8gYXVkaW9CdWZmZXIgPSBB
dWRpb0J1ZmZlcjo6Y3JlYXRlRnJvbUF1ZGlvRmlsZURhdGEoYXJyYXlCdWZmZXIuZGF0YSgpLCBh
cnJheUJ1ZmZlci5ieXRlTGVuZ3RoKCksIG1peFRvTW9ubywgc2FtcGxlUmF0ZSgpKTsKKyAgICBp
ZiAoIWF1ZGlvQnVmZmVyKQorICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgU3ludGF4RXJyb3Ig
fTsKKyAgICByZXR1cm4gYXVkaW9CdWZmZXIucmVsZWFzZU5vbk51bGwoKTsKK30KKwordm9pZCBX
ZWJLaXRBdWRpb0NvbnRleHQ6OmRlY29kZUF1ZGlvRGF0YShSZWY8QXJyYXlCdWZmZXI+JiYgYXVk
aW9EYXRhLCBSZWZQdHI8QXVkaW9CdWZmZXJDYWxsYmFjaz4mJiBzdWNjZXNzQ2FsbGJhY2ssIFJl
ZlB0cjxBdWRpb0J1ZmZlckNhbGxiYWNrPiYmIGVycm9yQ2FsbGJhY2spCit7CisgICAgaWYgKCFt
X2F1ZGlvRGVjb2RlcikKKyAgICAgICAgbV9hdWRpb0RlY29kZXIgPSBtYWtlVW5pcXVlPEFzeW5j
QXVkaW9EZWNvZGVyPigpOworICAgIG1fYXVkaW9EZWNvZGVyLT5kZWNvZGVBc3luYyhXVEZNb3Zl
KGF1ZGlvRGF0YSksIHNhbXBsZVJhdGUoKSwgV1RGTW92ZShzdWNjZXNzQ2FsbGJhY2spLCBXVEZN
b3ZlKGVycm9yQ2FsbGJhY2spKTsKK30KKworRXhjZXB0aW9uT3I8UmVmPEF1ZGlvQnVmZmVyU291
cmNlTm9kZT4+IFdlYktpdEF1ZGlvQ29udGV4dDo6Y3JlYXRlQnVmZmVyU291cmNlKCkKK3sKKyAg
ICBBTFdBWVNfTE9HKExPR0lERU5USUZJRVIpOworCisgICAgQVNTRVJUKGlzTWFpblRocmVhZCgp
KTsKKworICAgIGlmIChtX2lzU3RvcFNjaGVkdWxlZCkKKyAgICAgICAgcmV0dXJuIEV4Y2VwdGlv
biB7IEludmFsaWRTdGF0ZUVycm9yIH07CisKKyAgICBsYXp5SW5pdGlhbGl6ZSgpOworICAgIFJl
ZjxBdWRpb0J1ZmZlclNvdXJjZU5vZGU+IG5vZGUgPSBBdWRpb0J1ZmZlclNvdXJjZU5vZGU6OmNy
ZWF0ZSgqdGhpcywgc2FtcGxlUmF0ZSgpKTsKKworICAgIC8vIEJlY2F1c2UgdGhpcyBpcyBhbiBB
dWRpb1NjaGVkdWxlZFNvdXJjZU5vZGUsIHRoZSBjb250ZXh0IGtlZXBzIGEgcmVmZXJlbmNlIHVu
dGlsIGl0IGhhcyBmaW5pc2hlZCBwbGF5aW5nLgorICAgIC8vIFdoZW4gdGhpcyBoYXBwZW5zLCBB
dWRpb1NjaGVkdWxlZFNvdXJjZU5vZGU6OmZpbmlzaCgpIGNhbGxzIFdlYktpdEF1ZGlvQ29udGV4
dDo6bm90aWZ5Tm9kZUZpbmlzaGVkUHJvY2Vzc2luZygpLgorICAgIHJlZk5vZGUobm9kZSk7CisK
KyAgICByZXR1cm4gbm9kZTsKK30KKworI2lmIEVOQUJMRShWSURFTykKKworRXhjZXB0aW9uT3I8
UmVmPE1lZGlhRWxlbWVudEF1ZGlvU291cmNlTm9kZT4+IFdlYktpdEF1ZGlvQ29udGV4dDo6Y3Jl
YXRlTWVkaWFFbGVtZW50U291cmNlKEhUTUxNZWRpYUVsZW1lbnQmIG1lZGlhRWxlbWVudCkKK3sK
KyAgICBBTFdBWVNfTE9HKExPR0lERU5USUZJRVIpOworCisgICAgQVNTRVJUKGlzTWFpblRocmVh
ZCgpKTsKKworICAgIGlmIChtX2lzU3RvcFNjaGVkdWxlZCB8fCBtZWRpYUVsZW1lbnQuYXVkaW9T
b3VyY2VOb2RlKCkpCisgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBJbnZhbGlkU3RhdGVFcnJv
ciB9OworCisgICAgbGF6eUluaXRpYWxpemUoKTsKKworICAgIGF1dG8gbm9kZSA9IE1lZGlhRWxl
bWVudEF1ZGlvU291cmNlTm9kZTo6Y3JlYXRlKCp0aGlzLCBtZWRpYUVsZW1lbnQpOworCisgICAg
bWVkaWFFbGVtZW50LnNldEF1ZGlvU291cmNlTm9kZShub2RlLnB0cigpKTsKKworICAgIHJlZk5v
ZGUobm9kZS5nZXQoKSk7IC8vIGNvbnRleHQga2VlcHMgcmVmZXJlbmNlIHVudGlsIG5vZGUgaXMg
ZGlzY29ubmVjdGVkCisgICAgcmV0dXJuIG5vZGU7Cit9CisKKyNlbmRpZgorCisjaWYgRU5BQkxF
KE1FRElBX1NUUkVBTSkKKworRXhjZXB0aW9uT3I8UmVmPE1lZGlhU3RyZWFtQXVkaW9Tb3VyY2VO
b2RlPj4gV2ViS2l0QXVkaW9Db250ZXh0OjpjcmVhdGVNZWRpYVN0cmVhbVNvdXJjZShNZWRpYVN0
cmVhbSYgbWVkaWFTdHJlYW0pCit7CisgICAgQUxXQVlTX0xPRyhMT0dJREVOVElGSUVSKTsKKwor
ICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisKKyAgICBpZiAobV9pc1N0b3BTY2hlZHVsZWQp
CisgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBJbnZhbGlkU3RhdGVFcnJvciB9OworCisgICAg
YXV0byBhdWRpb1RyYWNrcyA9IG1lZGlhU3RyZWFtLmdldEF1ZGlvVHJhY2tzKCk7CisgICAgaWYg
KGF1ZGlvVHJhY2tzLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IEludmFs
aWRTdGF0ZUVycm9yIH07CisKKyAgICBNZWRpYVN0cmVhbVRyYWNrKiBwcm92aWRlclRyYWNrID0g
bnVsbHB0cjsKKyAgICBmb3IgKGF1dG8mIHRyYWNrIDogYXVkaW9UcmFja3MpIHsKKyAgICAgICAg
aWYgKHRyYWNrLT5hdWRpb1NvdXJjZVByb3ZpZGVyKCkpIHsKKyAgICAgICAgICAgIHByb3ZpZGVy
VHJhY2sgPSB0cmFjay5nZXQoKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAg
fQorICAgIGlmICghcHJvdmlkZXJUcmFjaykKKyAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IElu
dmFsaWRTdGF0ZUVycm9yIH07CisKKyAgICBsYXp5SW5pdGlhbGl6ZSgpOworCisgICAgYXV0byBu
b2RlID0gTWVkaWFTdHJlYW1BdWRpb1NvdXJjZU5vZGU6OmNyZWF0ZSgqdGhpcywgbWVkaWFTdHJl
YW0sICpwcm92aWRlclRyYWNrKTsKKyAgICBub2RlLT5zZXRGb3JtYXQoMiwgc2FtcGxlUmF0ZSgp
KTsKKworICAgIHJlZk5vZGUobm9kZSk7IC8vIGNvbnRleHQga2VlcHMgcmVmZXJlbmNlIHVudGls
IG5vZGUgaXMgZGlzY29ubmVjdGVkCisgICAgcmV0dXJuIG5vZGU7Cit9CisKK0V4Y2VwdGlvbk9y
PFJlZjxNZWRpYVN0cmVhbUF1ZGlvRGVzdGluYXRpb25Ob2RlPj4gV2ViS2l0QXVkaW9Db250ZXh0
OjpjcmVhdGVNZWRpYVN0cmVhbURlc3RpbmF0aW9uKCkKK3sKKyAgICBpZiAobV9pc1N0b3BTY2hl
ZHVsZWQpCisgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBJbnZhbGlkU3RhdGVFcnJvciB9Owor
CisgICAgLy8gRklYTUU6IEFkZCBzdXBwb3J0IGZvciBhbiBvcHRpb25hbCBhcmd1bWVudCB3aGlj
aCBzcGVjaWZpZXMgdGhlIG51bWJlciBvZiBjaGFubmVscy4KKyAgICAvLyBGSVhNRTogVGhlIGRl
ZmF1bHQgc2hvdWxkIHByb2JhYmx5IGJlIHN0ZXJlbyBpbnN0ZWFkIG9mIG1vbm8uCisgICAgcmV0
dXJuIE1lZGlhU3RyZWFtQXVkaW9EZXN0aW5hdGlvbk5vZGU6OmNyZWF0ZSgqdGhpcywgMSk7Cit9
CisKKyNlbmRpZgorCitFeGNlcHRpb25PcjxSZWY8U2NyaXB0UHJvY2Vzc29yTm9kZT4+IFdlYktp
dEF1ZGlvQ29udGV4dDo6Y3JlYXRlU2NyaXB0UHJvY2Vzc29yKHNpemVfdCBidWZmZXJTaXplLCBz
aXplX3QgbnVtYmVyT2ZJbnB1dENoYW5uZWxzLCBzaXplX3QgbnVtYmVyT2ZPdXRwdXRDaGFubmVs
cykKK3sKKyAgICBBTFdBWVNfTE9HKExPR0lERU5USUZJRVIpOworCisgICAgQVNTRVJUKGlzTWFp
blRocmVhZCgpKTsKKworICAgIGlmIChtX2lzU3RvcFNjaGVkdWxlZCkKKyAgICAgICAgcmV0dXJu
IEV4Y2VwdGlvbiB7IEludmFsaWRTdGF0ZUVycm9yIH07CisKKyAgICBsYXp5SW5pdGlhbGl6ZSgp
OworCisgICAgLy8gVzNDIEVkaXRvcidzIERyYWZ0IDA2IEp1bmUgMjAxNworICAgIC8vICBodHRw
czovL3dlYmF1ZGlvLmdpdGh1Yi5pby93ZWItYXVkaW8tYXBpLyN3aWRsLUJhc2VBdWRpb0NvbnRl
eHQtY3JlYXRlU2NyaXB0UHJvY2Vzc29yLVNjcmlwdFByb2Nlc3Nvck5vZGUtdW5zaWduZWQtbG9u
Zy1idWZmZXJTaXplLXVuc2lnbmVkLWxvbmctbnVtYmVyT2ZJbnB1dENoYW5uZWxzLXVuc2lnbmVk
LWxvbmctbnVtYmVyT2ZPdXRwdXRDaGFubmVscworCisgICAgLy8gVGhlIGJ1ZmZlclNpemUgcGFy
YW1ldGVyIGRldGVybWluZXMgdGhlIGJ1ZmZlciBzaXplIGluIHVuaXRzIG9mIHNhbXBsZS1mcmFt
ZXMuIElmIGl0J3Mgbm90IHBhc3NlZCBpbiwKKyAgICAvLyBvciBpZiB0aGUgdmFsdWUgaXMgMCwg
dGhlbiB0aGUgaW1wbGVtZW50YXRpb24gd2lsbCBjaG9vc2UgdGhlIGJlc3QgYnVmZmVyIHNpemUg
Zm9yIHRoZSBnaXZlbiBlbnZpcm9ubWVudCwKKyAgICAvLyB3aGljaCB3aWxsIGJlIGNvbnN0YW50
IHBvd2VyIG9mIDIgdGhyb3VnaG91dCB0aGUgbGlmZXRpbWUgb2YgdGhlIG5vZGUuIC4uLiBJZiB0
aGUgdmFsdWUgb2YgdGhpcyBwYXJhbWV0ZXIKKyAgICAvLyBpcyBub3Qgb25lIG9mIHRoZSBhbGxv
d2VkIHBvd2VyLW9mLTIgdmFsdWVzIGxpc3RlZCBhYm92ZSwgYW4gSW5kZXhTaXplRXJyb3IgbXVz
dCBiZSB0aHJvd24uCisgICAgc3dpdGNoIChidWZmZXJTaXplKSB7CisgICAgY2FzZSAwOgorI2lm
IFVTRShBVURJT19TRVNTSU9OKQorICAgICAgICAvLyBQaWNrIGEgdmFsdWUgYmV0d2VlbiAyNTYg
KDJeOCkgYW5kIDE2Mzg0ICgyXjE0KSwgYmFzZWQgb24gdGhlIGJ1ZmZlciBzaXplIG9mIHRoZSBj
dXJyZW50IEF1ZGlvU2Vzc2lvbjoKKyAgICAgICAgYnVmZmVyU2l6ZSA9IDEgPDwgc3RkOjptYXg8
c2l6ZV90Pig4LCBzdGQ6Om1pbjxzaXplX3Q+KDE0LCBzdGQ6OmxvZzIoQXVkaW9TZXNzaW9uOjpz
aGFyZWRTZXNzaW9uKCkuYnVmZmVyU2l6ZSgpKSkpOworI2Vsc2UKKyAgICAgICAgYnVmZmVyU2l6
ZSA9IDIwNDg7CisjZW5kaWYKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSAyNTY6CisgICAgY2Fz
ZSA1MTI6CisgICAgY2FzZSAxMDI0OgorICAgIGNhc2UgMjA0ODoKKyAgICBjYXNlIDQwOTY6Cisg
ICAgY2FzZSA4MTkyOgorICAgIGNhc2UgMTYzODQ6CisgICAgICAgIGJyZWFrOworICAgIGRlZmF1
bHQ6CisgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBJbmRleFNpemVFcnJvciB9OworICAgIH0K
KworICAgIC8vIEFuIEluZGV4U2l6ZUVycm9yIGV4Y2VwdGlvbiBtdXN0IGJlIHRocm93biBpZiBi
dWZmZXJTaXplIG9yIG51bWJlck9mSW5wdXRDaGFubmVscyBvciBudW1iZXJPZk91dHB1dENoYW5u
ZWxzCisgICAgLy8gYXJlIG91dHNpZGUgdGhlIHZhbGlkIHJhbmdlLiBJdCBpcyBpbnZhbGlkIGZv
ciBib3RoIG51bWJlck9mSW5wdXRDaGFubmVscyBhbmQgbnVtYmVyT2ZPdXRwdXRDaGFubmVscyB0
byBiZSB6ZXJvLgorICAgIC8vIEluIHRoaXMgY2FzZSBhbiBJbmRleFNpemVFcnJvciBtdXN0IGJl
IHRocm93bi4KKworICAgIGlmICghbnVtYmVyT2ZJbnB1dENoYW5uZWxzICYmICFudW1iZXJPZk91
dHB1dENoYW5uZWxzKQorICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgTm90U3VwcG9ydGVkRXJy
b3IgfTsKKworICAgIC8vIFRoaXMgcGFyYW1ldGVyIFtudW1iZXJPZklucHV0Q2hhbm5lbHNdIGRl
dGVybWluZXMgdGhlIG51bWJlciBvZiBjaGFubmVscyBmb3IgdGhpcyBub2RlJ3MgaW5wdXQuIFZh
bHVlcyBvZgorICAgIC8vIHVwIHRvIDMyIG11c3QgYmUgc3VwcG9ydGVkLiBBIE5vdFN1cHBvcnRl
ZEVycm9yIG11c3QgYmUgdGhyb3duIGlmIHRoZSBudW1iZXIgb2YgY2hhbm5lbHMgaXMgbm90IHN1
cHBvcnRlZC4KKworICAgIGlmIChudW1iZXJPZklucHV0Q2hhbm5lbHMgPiBtYXhOdW1iZXJPZkNo
YW5uZWxzKCkpCisgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBOb3RTdXBwb3J0ZWRFcnJvciB9
OworCisgICAgLy8gVGhpcyBwYXJhbWV0ZXIgW251bWJlck9mT3V0cHV0Q2hhbm5lbHNdIGRldGVy
bWluZXMgdGhlIG51bWJlciBvZiBjaGFubmVscyBmb3IgdGhpcyBub2RlJ3Mgb3V0cHV0LiBWYWx1
ZXMgb2YKKyAgICAvLyB1cCB0byAzMiBtdXN0IGJlIHN1cHBvcnRlZC4gQSBOb3RTdXBwb3J0ZWRF
cnJvciBtdXN0IGJlIHRocm93biBpZiB0aGUgbnVtYmVyIG9mIGNoYW5uZWxzIGlzIG5vdCBzdXBw
b3J0ZWQuCisKKyAgICBpZiAobnVtYmVyT2ZPdXRwdXRDaGFubmVscyA+IG1heE51bWJlck9mQ2hh
bm5lbHMoKSkKKyAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IE5vdFN1cHBvcnRlZEVycm9yIH07
CisKKyAgICBhdXRvIG5vZGUgPSBTY3JpcHRQcm9jZXNzb3JOb2RlOjpjcmVhdGUoKnRoaXMsIHNh
bXBsZVJhdGUoKSwgYnVmZmVyU2l6ZSwgbnVtYmVyT2ZJbnB1dENoYW5uZWxzLCBudW1iZXJPZk91
dHB1dENoYW5uZWxzKTsKKworICAgIHJlZk5vZGUobm9kZSk7IC8vIGNvbnRleHQga2VlcHMgcmVm
ZXJlbmNlIHVudGlsIHdlIHN0b3AgbWFraW5nIGphdmFzY3JpcHQgcmVuZGVyaW5nIGNhbGxiYWNr
cworICAgIHJldHVybiBub2RlOworfQorCitFeGNlcHRpb25PcjxSZWY8QmlxdWFkRmlsdGVyTm9k
ZT4+IFdlYktpdEF1ZGlvQ29udGV4dDo6Y3JlYXRlQmlxdWFkRmlsdGVyKCkKK3sKKyAgICBBTFdB
WVNfTE9HKExPR0lERU5USUZJRVIpOworCisgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKyAg
ICBpZiAobV9pc1N0b3BTY2hlZHVsZWQpCisgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBJbnZh
bGlkU3RhdGVFcnJvciB9OworCisgICAgbGF6eUluaXRpYWxpemUoKTsKKworICAgIHJldHVybiBC
aXF1YWRGaWx0ZXJOb2RlOjpjcmVhdGUoKnRoaXMsIHNhbXBsZVJhdGUoKSk7Cit9CisKK0V4Y2Vw
dGlvbk9yPFJlZjxXYXZlU2hhcGVyTm9kZT4+IFdlYktpdEF1ZGlvQ29udGV4dDo6Y3JlYXRlV2F2
ZVNoYXBlcigpCit7CisgICAgQUxXQVlTX0xPRyhMT0dJREVOVElGSUVSKTsKKworICAgIEFTU0VS
VChpc01haW5UaHJlYWQoKSk7CisgICAgaWYgKG1faXNTdG9wU2NoZWR1bGVkKQorICAgICAgICBy
ZXR1cm4gRXhjZXB0aW9uIHsgSW52YWxpZFN0YXRlRXJyb3IgfTsKKworICAgIGxhenlJbml0aWFs
aXplKCk7CisgICAgcmV0dXJuIFdhdmVTaGFwZXJOb2RlOjpjcmVhdGUoKnRoaXMpOworfQorCitF
eGNlcHRpb25PcjxSZWY8UGFubmVyTm9kZT4+IFdlYktpdEF1ZGlvQ29udGV4dDo6Y3JlYXRlUGFu
bmVyKCkKK3sKKyAgICBBTFdBWVNfTE9HKExPR0lERU5USUZJRVIpOworCisgICAgQVNTRVJUKGlz
TWFpblRocmVhZCgpKTsKKyAgICBpZiAobV9pc1N0b3BTY2hlZHVsZWQpCisgICAgICAgIHJldHVy
biBFeGNlcHRpb24geyBJbnZhbGlkU3RhdGVFcnJvciB9OworCisgICAgbGF6eUluaXRpYWxpemUo
KTsKKyAgICByZXR1cm4gUGFubmVyTm9kZTo6Y3JlYXRlKCp0aGlzLCBzYW1wbGVSYXRlKCkpOwor
fQorCitFeGNlcHRpb25PcjxSZWY8Q29udm9sdmVyTm9kZT4+IFdlYktpdEF1ZGlvQ29udGV4dDo6
Y3JlYXRlQ29udm9sdmVyKCkKK3sKKyAgICBBTFdBWVNfTE9HKExPR0lERU5USUZJRVIpOworCisg
ICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKyAgICBpZiAobV9pc1N0b3BTY2hlZHVsZWQpCisg
ICAgICAgIHJldHVybiBFeGNlcHRpb24geyBJbnZhbGlkU3RhdGVFcnJvciB9OworCisgICAgbGF6
eUluaXRpYWxpemUoKTsKKyAgICByZXR1cm4gQ29udm9sdmVyTm9kZTo6Y3JlYXRlKCp0aGlzLCBz
YW1wbGVSYXRlKCkpOworfQorCitFeGNlcHRpb25PcjxSZWY8RHluYW1pY3NDb21wcmVzc29yTm9k
ZT4+IFdlYktpdEF1ZGlvQ29udGV4dDo6Y3JlYXRlRHluYW1pY3NDb21wcmVzc29yKCkKK3sKKyAg
ICBBTFdBWVNfTE9HKExPR0lERU5USUZJRVIpOworCisgICAgQVNTRVJUKGlzTWFpblRocmVhZCgp
KTsKKyAgICBpZiAobV9pc1N0b3BTY2hlZHVsZWQpCisgICAgICAgIHJldHVybiBFeGNlcHRpb24g
eyBJbnZhbGlkU3RhdGVFcnJvciB9OworCisgICAgbGF6eUluaXRpYWxpemUoKTsKKyAgICByZXR1
cm4gRHluYW1pY3NDb21wcmVzc29yTm9kZTo6Y3JlYXRlKCp0aGlzLCBzYW1wbGVSYXRlKCkpOwor
fQorCitFeGNlcHRpb25PcjxSZWY8QW5hbHlzZXJOb2RlPj4gV2ViS2l0QXVkaW9Db250ZXh0Ojpj
cmVhdGVBbmFseXNlcigpCit7CisgICAgQUxXQVlTX0xPRyhMT0dJREVOVElGSUVSKTsKKworICAg
IEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisgICAgaWYgKG1faXNTdG9wU2NoZWR1bGVkKQorICAg
ICAgICByZXR1cm4gRXhjZXB0aW9uIHsgSW52YWxpZFN0YXRlRXJyb3IgfTsKKworICAgIGxhenlJ
bml0aWFsaXplKCk7CisgICAgcmV0dXJuIEFuYWx5c2VyTm9kZTo6Y3JlYXRlKCp0aGlzLCBzYW1w
bGVSYXRlKCkpOworfQorCitFeGNlcHRpb25PcjxSZWY8R2Fpbk5vZGU+PiBXZWJLaXRBdWRpb0Nv
bnRleHQ6OmNyZWF0ZUdhaW4oKQoreworICAgIEFMV0FZU19MT0coTE9HSURFTlRJRklFUik7CisK
KyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAgIGlmIChtX2lzU3RvcFNjaGVkdWxlZCkK
KyAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IEludmFsaWRTdGF0ZUVycm9yIH07CisKKyAgICBs
YXp5SW5pdGlhbGl6ZSgpOworICAgIHJldHVybiBHYWluTm9kZTo6Y3JlYXRlKCp0aGlzLCBzYW1w
bGVSYXRlKCkpOworfQorCitFeGNlcHRpb25PcjxSZWY8RGVsYXlOb2RlPj4gV2ViS2l0QXVkaW9D
b250ZXh0OjpjcmVhdGVEZWxheShkb3VibGUgbWF4RGVsYXlUaW1lKQoreworICAgIEFMV0FZU19M
T0coTE9HSURFTlRJRklFUik7CisKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAgIGlm
IChtX2lzU3RvcFNjaGVkdWxlZCkKKyAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IEludmFsaWRT
dGF0ZUVycm9yIH07CisKKyAgICBsYXp5SW5pdGlhbGl6ZSgpOworICAgIHJldHVybiBEZWxheU5v
ZGU6OmNyZWF0ZSgqdGhpcywgc2FtcGxlUmF0ZSgpLCBtYXhEZWxheVRpbWUpOworfQorCitFeGNl
cHRpb25PcjxSZWY8Q2hhbm5lbFNwbGl0dGVyTm9kZT4+IFdlYktpdEF1ZGlvQ29udGV4dDo6Y3Jl
YXRlQ2hhbm5lbFNwbGl0dGVyKHNpemVfdCBudW1iZXJPZk91dHB1dHMpCit7CisgICAgQUxXQVlT
X0xPRyhMT0dJREVOVElGSUVSKTsKKworICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisgICAg
aWYgKG1faXNTdG9wU2NoZWR1bGVkKQorICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgSW52YWxp
ZFN0YXRlRXJyb3IgfTsKKworICAgIGxhenlJbml0aWFsaXplKCk7CisgICAgYXV0byBub2RlID0g
Q2hhbm5lbFNwbGl0dGVyTm9kZTo6Y3JlYXRlKCp0aGlzLCBzYW1wbGVSYXRlKCksIG51bWJlck9m
T3V0cHV0cyk7CisgICAgaWYgKCFub2RlKQorICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgSW5k
ZXhTaXplRXJyb3IgfTsKKyAgICByZXR1cm4gbm9kZS5yZWxlYXNlTm9uTnVsbCgpOworfQorCitF
eGNlcHRpb25PcjxSZWY8Q2hhbm5lbE1lcmdlck5vZGU+PiBXZWJLaXRBdWRpb0NvbnRleHQ6OmNy
ZWF0ZUNoYW5uZWxNZXJnZXIoc2l6ZV90IG51bWJlck9mSW5wdXRzKQoreworICAgIEFMV0FZU19M
T0coTE9HSURFTlRJRklFUik7CisKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAgIGlm
IChtX2lzU3RvcFNjaGVkdWxlZCkKKyAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IEludmFsaWRT
dGF0ZUVycm9yIH07CisKKyAgICBsYXp5SW5pdGlhbGl6ZSgpOworICAgIGF1dG8gbm9kZSA9IENo
YW5uZWxNZXJnZXJOb2RlOjpjcmVhdGUoKnRoaXMsIHNhbXBsZVJhdGUoKSwgbnVtYmVyT2ZJbnB1
dHMpOworICAgIGlmICghbm9kZSkKKyAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IEluZGV4U2l6
ZUVycm9yIH07CisgICAgcmV0dXJuIG5vZGUucmVsZWFzZU5vbk51bGwoKTsKK30KKworRXhjZXB0
aW9uT3I8UmVmPE9zY2lsbGF0b3JOb2RlPj4gV2ViS2l0QXVkaW9Db250ZXh0OjpjcmVhdGVPc2Np
bGxhdG9yKCkKK3sKKyAgICBBTFdBWVNfTE9HKExPR0lERU5USUZJRVIpOworCisgICAgQVNTRVJU
KGlzTWFpblRocmVhZCgpKTsKKyAgICBpZiAobV9pc1N0b3BTY2hlZHVsZWQpCisgICAgICAgIHJl
dHVybiBFeGNlcHRpb24geyBJbnZhbGlkU3RhdGVFcnJvciB9OworCisgICAgbGF6eUluaXRpYWxp
emUoKTsKKworICAgIFJlZjxPc2NpbGxhdG9yTm9kZT4gbm9kZSA9IE9zY2lsbGF0b3JOb2RlOjpj
cmVhdGUoKnRoaXMsIHNhbXBsZVJhdGUoKSk7CisKKyAgICAvLyBCZWNhdXNlIHRoaXMgaXMgYW4g
QXVkaW9TY2hlZHVsZWRTb3VyY2VOb2RlLCB0aGUgY29udGV4dCBrZWVwcyBhIHJlZmVyZW5jZSB1
bnRpbCBpdCBoYXMgZmluaXNoZWQgcGxheWluZy4KKyAgICAvLyBXaGVuIHRoaXMgaGFwcGVucywg
QXVkaW9TY2hlZHVsZWRTb3VyY2VOb2RlOjpmaW5pc2goKSBjYWxscyBXZWJLaXRBdWRpb0NvbnRl
eHQ6Om5vdGlmeU5vZGVGaW5pc2hlZFByb2Nlc3NpbmcoKS4KKyAgICByZWZOb2RlKG5vZGUpOwor
CisgICAgcmV0dXJuIG5vZGU7Cit9CisKK0V4Y2VwdGlvbk9yPFJlZjxQZXJpb2RpY1dhdmU+PiBX
ZWJLaXRBdWRpb0NvbnRleHQ6OmNyZWF0ZVBlcmlvZGljV2F2ZShGbG9hdDMyQXJyYXkmIHJlYWws
IEZsb2F0MzJBcnJheSYgaW1hZ2luYXJ5KQoreworICAgIEFMV0FZU19MT0coTE9HSURFTlRJRklF
Uik7CisKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAgIGlmIChtX2lzU3RvcFNjaGVk
dWxlZCkKKyAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IEludmFsaWRTdGF0ZUVycm9yIH07CisK
KyAgICBpZiAocmVhbC5sZW5ndGgoKSAhPSBpbWFnaW5hcnkubGVuZ3RoKCkgfHwgKHJlYWwubGVu
Z3RoKCkgPiBNYXhQZXJpb2RpY1dhdmVMZW5ndGgpIHx8ICFyZWFsLmxlbmd0aCgpKQorICAgICAg
ICByZXR1cm4gRXhjZXB0aW9uIHsgSW5kZXhTaXplRXJyb3IgfTsKKyAgICBsYXp5SW5pdGlhbGl6
ZSgpOworICAgIHJldHVybiBQZXJpb2RpY1dhdmU6OmNyZWF0ZShzYW1wbGVSYXRlKCksIHJlYWws
IGltYWdpbmFyeSk7Cit9CisKK3ZvaWQgV2ViS2l0QXVkaW9Db250ZXh0Ojpub3RpZnlOb2RlRmlu
aXNoZWRQcm9jZXNzaW5nKEF1ZGlvTm9kZSogbm9kZSkKK3sKKyAgICBBU1NFUlQoaXNBdWRpb1Ro
cmVhZCgpKTsKKyAgICBtX2ZpbmlzaGVkTm9kZXMuYXBwZW5kKG5vZGUpOworfQorCit2b2lkIFdl
YktpdEF1ZGlvQ29udGV4dDo6ZGVyZWZGaW5pc2hlZFNvdXJjZU5vZGVzKCkKK3sKKyAgICBBU1NF
UlQoaXNHcmFwaE93bmVyKCkpOworICAgIEFTU0VSVChpc0F1ZGlvVGhyZWFkKCkgfHwgaXNBdWRp
b1RocmVhZEZpbmlzaGVkKCkpOworICAgIGZvciAoYXV0byYgbm9kZSA6IG1fZmluaXNoZWROb2Rl
cykKKyAgICAgICAgZGVyZWZOb2RlKCpub2RlKTsKKworICAgIG1fZmluaXNoZWROb2Rlcy5jbGVh
cigpOworfQorCit2b2lkIFdlYktpdEF1ZGlvQ29udGV4dDo6cmVmTm9kZShBdWRpb05vZGUmIG5v
ZGUpCit7CisgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKyAgICBBdXRvTG9ja2VyIGxvY2tl
cigqdGhpcyk7CisKKyAgICBub2RlLnJlZihBdWRpb05vZGU6OlJlZlR5cGVDb25uZWN0aW9uKTsK
KyAgICBtX3JlZmVyZW5jZWROb2Rlcy5hcHBlbmQoJm5vZGUpOworfQorCit2b2lkIFdlYktpdEF1
ZGlvQ29udGV4dDo6ZGVyZWZOb2RlKEF1ZGlvTm9kZSYgbm9kZSkKK3sKKyAgICBBU1NFUlQoaXNH
cmFwaE93bmVyKCkpOworCisgICAgbm9kZS5kZXJlZihBdWRpb05vZGU6OlJlZlR5cGVDb25uZWN0
aW9uKTsKKworICAgIEFTU0VSVChtX3JlZmVyZW5jZWROb2Rlcy5jb250YWlucygmbm9kZSkpOwor
ICAgIG1fcmVmZXJlbmNlZE5vZGVzLnJlbW92ZUZpcnN0KCZub2RlKTsKK30KKwordm9pZCBXZWJL
aXRBdWRpb0NvbnRleHQ6OmRlcmVmVW5maW5pc2hlZFNvdXJjZU5vZGVzKCkKK3sKKyAgICBBU1NF
UlQoaXNNYWluVGhyZWFkKCkgJiYgaXNBdWRpb1RocmVhZEZpbmlzaGVkKCkpOworICAgIGZvciAo
YXV0byYgbm9kZSA6IG1fcmVmZXJlbmNlZE5vZGVzKQorICAgICAgICBub2RlLT5kZXJlZihBdWRp
b05vZGU6OlJlZlR5cGVDb25uZWN0aW9uKTsKKworICAgIG1fcmVmZXJlbmNlZE5vZGVzLmNsZWFy
KCk7Cit9CisKK3ZvaWQgV2ViS2l0QXVkaW9Db250ZXh0Ojpsb2NrKGJvb2wmIG11c3RSZWxlYXNl
TG9jaykKK3sKKyAgICAvLyBEb24ndCBhbGxvdyByZWd1bGFyIGxvY2sgaW4gcmVhbC10aW1lIGF1
ZGlvIHRocmVhZC4KKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworCisgICAgVGhyZWFkJiB0
aGlzVGhyZWFkID0gVGhyZWFkOjpjdXJyZW50KCk7CisKKyAgICBpZiAoJnRoaXNUaHJlYWQgPT0g
bV9ncmFwaE93bmVyVGhyZWFkKSB7CisgICAgICAgIC8vIFdlIGFscmVhZHkgaGF2ZSB0aGUgbG9j
ay4KKyAgICAgICAgbXVzdFJlbGVhc2VMb2NrID0gZmFsc2U7CisgICAgfSBlbHNlIHsKKyAgICAg
ICAgLy8gQWNxdWlyZSB0aGUgbG9jay4KKyAgICAgICAgbV9jb250ZXh0R3JhcGhNdXRleC5sb2Nr
KCk7CisgICAgICAgIG1fZ3JhcGhPd25lclRocmVhZCA9ICZ0aGlzVGhyZWFkOworICAgICAgICBt
dXN0UmVsZWFzZUxvY2sgPSB0cnVlOworICAgIH0KK30KKworYm9vbCBXZWJLaXRBdWRpb0NvbnRl
eHQ6OnRyeUxvY2soYm9vbCYgbXVzdFJlbGVhc2VMb2NrKQoreworICAgIFRocmVhZCYgdGhpc1Ro
cmVhZCA9IFRocmVhZDo6Y3VycmVudCgpOworICAgIGJvb2wgaXNBdWRpb1RocmVhZCA9ICZ0aGlz
VGhyZWFkID09IGF1ZGlvVGhyZWFkKCk7CisKKyAgICAvLyBUcnkgdG8gY2F0Y2ggY2FzZXMgb2Yg
dXNpbmcgdHJ5IGxvY2sgb24gbWFpbiB0aHJlYWQgLSBpdCBzaG91bGQgdXNlIHJlZ3VsYXIgbG9j
ay4KKyAgICBBU1NFUlQoaXNBdWRpb1RocmVhZCB8fCBpc0F1ZGlvVGhyZWFkRmluaXNoZWQoKSk7
CisKKyAgICBpZiAoIWlzQXVkaW9UaHJlYWQpIHsKKyAgICAgICAgLy8gSW4gcmVsZWFzZSBidWls
ZCB0cmVhdCB0cnlMb2NrKCkgYXMgbG9jaygpIChzaW5jZSBhYm92ZSBBU1NFUlQoaXNBdWRpb1Ro
cmVhZCkgbmV2ZXIgZmlyZXMpIC0gdGhpcyBpcyB0aGUgYmVzdCB3ZSBjYW4gZG8uCisgICAgICAg
IGxvY2sobXVzdFJlbGVhc2VMb2NrKTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorCisg
ICAgYm9vbCBoYXNMb2NrOworCisgICAgaWYgKCZ0aGlzVGhyZWFkID09IG1fZ3JhcGhPd25lclRo
cmVhZCkgeworICAgICAgICAvLyBUaHJlYWQgYWxyZWFkeSBoYXMgdGhlIGxvY2suCisgICAgICAg
IGhhc0xvY2sgPSB0cnVlOworICAgICAgICBtdXN0UmVsZWFzZUxvY2sgPSBmYWxzZTsKKyAgICB9
IGVsc2UgeworICAgICAgICAvLyBEb24ndCBhbHJlYWR5IGhhdmUgdGhlIGxvY2sgLSB0cnkgdG8g
YWNxdWlyZSBpdC4KKyAgICAgICAgaGFzTG9jayA9IG1fY29udGV4dEdyYXBoTXV0ZXgudHJ5TG9j
aygpOworCisgICAgICAgIGlmIChoYXNMb2NrKQorICAgICAgICAgICAgbV9ncmFwaE93bmVyVGhy
ZWFkID0gJnRoaXNUaHJlYWQ7CisKKyAgICAgICAgbXVzdFJlbGVhc2VMb2NrID0gaGFzTG9jazsK
KyAgICB9CisKKyAgICByZXR1cm4gaGFzTG9jazsKK30KKwordm9pZCBXZWJLaXRBdWRpb0NvbnRl
eHQ6OnVubG9jaygpCit7CisgICAgQVNTRVJUKG1fZ3JhcGhPd25lclRocmVhZCA9PSAmVGhyZWFk
OjpjdXJyZW50KCkpOworCisgICAgbV9ncmFwaE93bmVyVGhyZWFkID0gbnVsbHB0cjsKKyAgICBt
X2NvbnRleHRHcmFwaE11dGV4LnVubG9jaygpOworfQorCitib29sIFdlYktpdEF1ZGlvQ29udGV4
dDo6aXNBdWRpb1RocmVhZCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fYXVkaW9UaHJlYWQgPT0g
JlRocmVhZDo6Y3VycmVudCgpOworfQorCitib29sIFdlYktpdEF1ZGlvQ29udGV4dDo6aXNHcmFw
aE93bmVyKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9ncmFwaE93bmVyVGhyZWFkID09ICZUaHJl
YWQ6OmN1cnJlbnQoKTsKK30KKwordm9pZCBXZWJLaXRBdWRpb0NvbnRleHQ6OmFkZERlZmVycmVk
RmluaXNoRGVyZWYoQXVkaW9Ob2RlKiBub2RlKQoreworICAgIEFTU0VSVChpc0F1ZGlvVGhyZWFk
KCkpOworICAgIG1fZGVmZXJyZWRGaW5pc2hEZXJlZkxpc3QuYXBwZW5kKG5vZGUpOworfQorCit2
b2lkIFdlYktpdEF1ZGlvQ29udGV4dDo6aGFuZGxlUHJlUmVuZGVyVGFza3MoKQoreworICAgIEFT
U0VSVChpc0F1ZGlvVGhyZWFkKCkpOworCisgICAgLy8gQXQgdGhlIGJlZ2lubmluZyBvZiBldmVy
eSByZW5kZXIgcXVhbnR1bSwgdHJ5IHRvIHVwZGF0ZSB0aGUgaW50ZXJuYWwgcmVuZGVyaW5nIGdy
YXBoIHN0YXRlIChmcm9tIG1haW4gdGhyZWFkIGNoYW5nZXMpLgorICAgIC8vIEl0J3MgT0sgaWYg
dGhlIHRyeUxvY2soKSBmYWlscywgd2UnbGwganVzdCB0YWtlIHNsaWdodGx5IGxvbmdlciB0byBw
aWNrIHVwIHRoZSBjaGFuZ2VzLgorICAgIGJvb2wgbXVzdFJlbGVhc2VMb2NrOworICAgIGlmICh0
cnlMb2NrKG11c3RSZWxlYXNlTG9jaykpIHsKKyAgICAgICAgLy8gRml4dXAgdGhlIHN0YXRlIG9m
IGFueSBkaXJ0eSBBdWRpb1N1bW1pbmdKdW5jdGlvbnMgYW5kIEF1ZGlvTm9kZU91dHB1dHMuCisg
ICAgICAgIGhhbmRsZURpcnR5QXVkaW9TdW1taW5nSnVuY3Rpb25zKCk7CisgICAgICAgIGhhbmRs
ZURpcnR5QXVkaW9Ob2RlT3V0cHV0cygpOworCisgICAgICAgIHVwZGF0ZUF1dG9tYXRpY1B1bGxO
b2RlcygpOworCisgICAgICAgIGlmIChtdXN0UmVsZWFzZUxvY2spCisgICAgICAgICAgICB1bmxv
Y2soKTsKKyAgICB9Cit9CisKK3ZvaWQgV2ViS2l0QXVkaW9Db250ZXh0OjpoYW5kbGVQb3N0UmVu
ZGVyVGFza3MoKQoreworICAgIEFTU0VSVChpc0F1ZGlvVGhyZWFkKCkpOworCisgICAgLy8gTXVz
dCB1c2UgYSB0cnlMb2NrKCkgaGVyZSB0b28uIERvbid0IHdvcnJ5LCB0aGUgbG9jayB3aWxsIHZl
cnkgcmFyZWx5IGJlIGNvbnRlbmRlZCBhbmQgdGhpcyBtZXRob2QgaXMgY2FsbGVkIGZyZXF1ZW50
bHkuCisgICAgLy8gVGhlIHdvcnN0IHRoYXQgY2FuIGhhcHBlbiBpcyB0aGF0IHRoZXJlIHdpbGwg
YmUgc29tZSBub2RlcyB3aGljaCB3aWxsIHRha2Ugc2xpZ2h0bHkgbG9uZ2VyIHRoYW4gdXN1YWwg
dG8gYmUgZGVsZXRlZCBvciByZW1vdmVkCisgICAgLy8gZnJvbSB0aGUgcmVuZGVyIGdyYXBoIChp
biB3aGljaCBjYXNlIHRoZXknbGwgcmVuZGVyIHNpbGVuY2UpLgorICAgIGJvb2wgbXVzdFJlbGVh
c2VMb2NrOworICAgIGlmICh0cnlMb2NrKG11c3RSZWxlYXNlTG9jaykpIHsKKyAgICAgICAgLy8g
VGFrZSBjYXJlIG9mIGZpbmlzaGluZyBhbnkgZGVyZWZzIHdoZXJlIHRoZSB0cnlMb2NrKCkgZmFp
bGVkIHByZXZpb3VzbHkuCisgICAgICAgIGhhbmRsZURlZmVycmVkRmluaXNoRGVyZWZzKCk7CisK
KyAgICAgICAgLy8gRHluYW1pY2FsbHkgY2xlYW4gdXAgbm9kZXMgd2hpY2ggYXJlIG5vIGxvbmdl
ciBuZWVkZWQuCisgICAgICAgIGRlcmVmRmluaXNoZWRTb3VyY2VOb2RlcygpOworCisgICAgICAg
IC8vIERvbid0IGRlbGV0ZSBpbiB0aGUgcmVhbC10aW1lIHRocmVhZC4gTGV0IHRoZSBtYWluIHRo
cmVhZCBkbyBpdC4KKyAgICAgICAgLy8gUmVmLWNvdW50ZWQgb2JqZWN0cyBoZWxkIGJ5IGNlcnRh
aW4gQXVkaW9Ob2RlcyBtYXkgbm90IGJlIHRocmVhZC1zYWZlLgorICAgICAgICBzY2hlZHVsZU5v
ZGVEZWxldGlvbigpOworCisgICAgICAgIC8vIEZpeHVwIHRoZSBzdGF0ZSBvZiBhbnkgZGlydHkg
QXVkaW9TdW1taW5nSnVuY3Rpb25zIGFuZCBBdWRpb05vZGVPdXRwdXRzLgorICAgICAgICBoYW5k
bGVEaXJ0eUF1ZGlvU3VtbWluZ0p1bmN0aW9ucygpOworICAgICAgICBoYW5kbGVEaXJ0eUF1ZGlv
Tm9kZU91dHB1dHMoKTsKKworICAgICAgICB1cGRhdGVBdXRvbWF0aWNQdWxsTm9kZXMoKTsKKwor
ICAgICAgICBpZiAobXVzdFJlbGVhc2VMb2NrKQorICAgICAgICAgICAgdW5sb2NrKCk7CisgICAg
fQorfQorCit2b2lkIFdlYktpdEF1ZGlvQ29udGV4dDo6aGFuZGxlRGVmZXJyZWRGaW5pc2hEZXJl
ZnMoKQoreworICAgIEFTU0VSVChpc0F1ZGlvVGhyZWFkKCkgJiYgaXNHcmFwaE93bmVyKCkpOwor
ICAgIGZvciAoYXV0byYgbm9kZSA6IG1fZGVmZXJyZWRGaW5pc2hEZXJlZkxpc3QpCisgICAgICAg
IG5vZGUtPmZpbmlzaERlcmVmKEF1ZGlvTm9kZTo6UmVmVHlwZUNvbm5lY3Rpb24pOworCisgICAg
bV9kZWZlcnJlZEZpbmlzaERlcmVmTGlzdC5jbGVhcigpOworfQorCit2b2lkIFdlYktpdEF1ZGlv
Q29udGV4dDo6bWFya0ZvckRlbGV0aW9uKEF1ZGlvTm9kZSYgbm9kZSkKK3sKKyAgICBBU1NFUlQo
aXNHcmFwaE93bmVyKCkpOworCisgICAgaWYgKGlzQXVkaW9UaHJlYWRGaW5pc2hlZCgpKQorICAg
ICAgICBtX25vZGVzVG9EZWxldGUuYXBwZW5kKCZub2RlKTsKKyAgICBlbHNlCisgICAgICAgIG1f
bm9kZXNNYXJrZWRGb3JEZWxldGlvbi5hcHBlbmQoJm5vZGUpOworCisgICAgLy8gVGhpcyBpcyBw
cm9iYWJseSB0aGUgYmVzdCB0aW1lIGZvciB1cyB0byByZW1vdmUgdGhlIG5vZGUgZnJvbSBhdXRv
bWF0aWMgcHVsbCBsaXN0LAorICAgIC8vIHNpbmNlIGFsbCBjb25uZWN0aW9ucyBhcmUgZ29uZSBh
bmQgd2UgaG9sZCB0aGUgZ3JhcGggbG9jay4gVGhlbiB3aGVuIGhhbmRsZVBvc3RSZW5kZXJUYXNr
cygpCisgICAgLy8gZ2V0cyBhIGNoYW5jZSB0byBzY2hlZHVsZSB0aGUgZGVsZXRpb24gd29yaywg
dXBkYXRlQXV0b21hdGljUHVsbE5vZGVzKCkgYWxzbyBnZXRzIGEgY2hhbmNlIHRvCisgICAgLy8g
bW9kaWZ5IG1fcmVuZGVyaW5nQXV0b21hdGljUHVsbE5vZGVzLgorICAgIHJlbW92ZUF1dG9tYXRp
Y1B1bGxOb2RlKG5vZGUpOworfQorCit2b2lkIFdlYktpdEF1ZGlvQ29udGV4dDo6c2NoZWR1bGVO
b2RlRGVsZXRpb24oKQoreworICAgIGJvb2wgaXNHb29kID0gbV9pc0luaXRpYWxpemVkICYmIGlz
R3JhcGhPd25lcigpOworICAgIEFTU0VSVChpc0dvb2QpOworICAgIGlmICghaXNHb29kKQorICAg
ICAgICByZXR1cm47CisKKyAgICAvLyBNYWtlIHN1cmUgdG8gY2FsbCBkZWxldGVNYXJrZWROb2Rl
cygpIG9uIG1haW4gdGhyZWFkLgorICAgIGlmIChtX25vZGVzTWFya2VkRm9yRGVsZXRpb24uc2l6
ZSgpICYmICFtX2lzRGVsZXRpb25TY2hlZHVsZWQpIHsKKyAgICAgICAgbV9ub2Rlc1RvRGVsZXRl
LmFwcGVuZFZlY3RvcihtX25vZGVzTWFya2VkRm9yRGVsZXRpb24pOworICAgICAgICBtX25vZGVz
TWFya2VkRm9yRGVsZXRpb24uY2xlYXIoKTsKKworICAgICAgICBtX2lzRGVsZXRpb25TY2hlZHVs
ZWQgPSB0cnVlOworCisgICAgICAgIGNhbGxPbk1haW5UaHJlYWQoW3Byb3RlY3RlZFRoaXMgPSBt
YWtlUmVmKCp0aGlzKV0oKSBtdXRhYmxlIHsKKyAgICAgICAgICAgIHByb3RlY3RlZFRoaXMtPmRl
bGV0ZU1hcmtlZE5vZGVzKCk7CisgICAgICAgIH0pOworICAgIH0KK30KKwordm9pZCBXZWJLaXRB
dWRpb0NvbnRleHQ6OmRlbGV0ZU1hcmtlZE5vZGVzKCkKK3sKKyAgICBBU1NFUlQoaXNNYWluVGhy
ZWFkKCkpOworCisgICAgLy8gUHJvdGVjdCB0aGlzIG9iamVjdCBmcm9tIGJlaW5nIGRlbGV0ZWQg
YmVmb3JlIHdlIHJlbGVhc2UgdGhlIG11dGV4IGxvY2tlZCBieSBBdXRvTG9ja2VyLgorICAgIFJl
ZjxXZWJLaXRBdWRpb0NvbnRleHQ+IHByb3RlY3RlZFRoaXMoKnRoaXMpOworICAgIHsKKyAgICAg
ICAgQXV0b0xvY2tlciBsb2NrZXIoKnRoaXMpOworCisgICAgICAgIHdoaWxlIChtX25vZGVzVG9E
ZWxldGUuc2l6ZSgpKSB7CisgICAgICAgICAgICBBdWRpb05vZGUqIG5vZGUgPSBtX25vZGVzVG9E
ZWxldGUudGFrZUxhc3QoKTsKKworICAgICAgICAgICAgLy8gQmVmb3JlIGRlbGV0aW5nIHRoZSBu
b2RlLCBjbGVhciBvdXQgYW55IEF1ZGlvTm9kZUlucHV0cyBmcm9tIG1fZGlydHlTdW1taW5nSnVu
Y3Rpb25zLgorICAgICAgICAgICAgdW5zaWduZWQgbnVtYmVyT2ZJbnB1dHMgPSBub2RlLT5udW1i
ZXJPZklucHV0cygpOworICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG51bWJl
ck9mSW5wdXRzOyArK2kpCisgICAgICAgICAgICAgICAgbV9kaXJ0eVN1bW1pbmdKdW5jdGlvbnMu
cmVtb3ZlKG5vZGUtPmlucHV0KGkpKTsKKworICAgICAgICAgICAgLy8gQmVmb3JlIGRlbGV0aW5n
IHRoZSBub2RlLCBjbGVhciBvdXQgYW55IEF1ZGlvTm9kZU91dHB1dHMgZnJvbSBtX2RpcnR5QXVk
aW9Ob2RlT3V0cHV0cy4KKyAgICAgICAgICAgIHVuc2lnbmVkIG51bWJlck9mT3V0cHV0cyA9IG5v
ZGUtPm51bWJlck9mT3V0cHV0cygpOworICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsg
aSA8IG51bWJlck9mT3V0cHV0czsgKytpKQorICAgICAgICAgICAgICAgIG1fZGlydHlBdWRpb05v
ZGVPdXRwdXRzLnJlbW92ZShub2RlLT5vdXRwdXQoaSkpOworCisgICAgICAgICAgICAvLyBGaW5h
bGx5LCBkZWxldGUgaXQuCisgICAgICAgICAgICBkZWxldGUgbm9kZTsKKyAgICAgICAgfQorICAg
ICAgICBtX2lzRGVsZXRpb25TY2hlZHVsZWQgPSBmYWxzZTsKKyAgICB9Cit9CisKK3ZvaWQgV2Vi
S2l0QXVkaW9Db250ZXh0OjptYXJrU3VtbWluZ0p1bmN0aW9uRGlydHkoQXVkaW9TdW1taW5nSnVu
Y3Rpb24qIHN1bW1pbmdKdW5jdGlvbikKK3sKKyAgICBBU1NFUlQoaXNHcmFwaE93bmVyKCkpOwor
ICAgIG1fZGlydHlTdW1taW5nSnVuY3Rpb25zLmFkZChzdW1taW5nSnVuY3Rpb24pOworfQorCit2
b2lkIFdlYktpdEF1ZGlvQ29udGV4dDo6cmVtb3ZlTWFya2VkU3VtbWluZ0p1bmN0aW9uKEF1ZGlv
U3VtbWluZ0p1bmN0aW9uKiBzdW1taW5nSnVuY3Rpb24pCit7CisgICAgQVNTRVJUKGlzTWFpblRo
cmVhZCgpKTsKKyAgICBBdXRvTG9ja2VyIGxvY2tlcigqdGhpcyk7CisgICAgbV9kaXJ0eVN1bW1p
bmdKdW5jdGlvbnMucmVtb3ZlKHN1bW1pbmdKdW5jdGlvbik7Cit9CisKK3ZvaWQgV2ViS2l0QXVk
aW9Db250ZXh0OjptYXJrQXVkaW9Ob2RlT3V0cHV0RGlydHkoQXVkaW9Ob2RlT3V0cHV0KiBvdXRw
dXQpCit7CisgICAgQVNTRVJUKGlzR3JhcGhPd25lcigpKTsKKyAgICBtX2RpcnR5QXVkaW9Ob2Rl
T3V0cHV0cy5hZGQob3V0cHV0KTsKK30KKwordm9pZCBXZWJLaXRBdWRpb0NvbnRleHQ6OmhhbmRs
ZURpcnR5QXVkaW9TdW1taW5nSnVuY3Rpb25zKCkKK3sKKyAgICBBU1NFUlQoaXNHcmFwaE93bmVy
KCkpOworCisgICAgZm9yIChhdXRvJiBqdW5jdGlvbiA6IG1fZGlydHlTdW1taW5nSnVuY3Rpb25z
KQorICAgICAgICBqdW5jdGlvbi0+dXBkYXRlUmVuZGVyaW5nU3RhdGUoKTsKKworICAgIG1fZGly
dHlTdW1taW5nSnVuY3Rpb25zLmNsZWFyKCk7Cit9CisKK3ZvaWQgV2ViS2l0QXVkaW9Db250ZXh0
OjpoYW5kbGVEaXJ0eUF1ZGlvTm9kZU91dHB1dHMoKQoreworICAgIEFTU0VSVChpc0dyYXBoT3du
ZXIoKSk7CisKKyAgICBmb3IgKGF1dG8mIG91dHB1dCA6IG1fZGlydHlBdWRpb05vZGVPdXRwdXRz
KQorICAgICAgICBvdXRwdXQtPnVwZGF0ZVJlbmRlcmluZ1N0YXRlKCk7CisKKyAgICBtX2RpcnR5
QXVkaW9Ob2RlT3V0cHV0cy5jbGVhcigpOworfQorCit2b2lkIFdlYktpdEF1ZGlvQ29udGV4dDo6
YWRkQXV0b21hdGljUHVsbE5vZGUoQXVkaW9Ob2RlJiBub2RlKQoreworICAgIEFTU0VSVChpc0dy
YXBoT3duZXIoKSk7CisKKyAgICBpZiAobV9hdXRvbWF0aWNQdWxsTm9kZXMuYWRkKCZub2RlKS5p
c05ld0VudHJ5KQorICAgICAgICBtX2F1dG9tYXRpY1B1bGxOb2Rlc05lZWRVcGRhdGluZyA9IHRy
dWU7Cit9CisKK3ZvaWQgV2ViS2l0QXVkaW9Db250ZXh0OjpyZW1vdmVBdXRvbWF0aWNQdWxsTm9k
ZShBdWRpb05vZGUmIG5vZGUpCit7CisgICAgQVNTRVJUKGlzR3JhcGhPd25lcigpKTsKKworICAg
IGlmIChtX2F1dG9tYXRpY1B1bGxOb2Rlcy5yZW1vdmUoJm5vZGUpKQorICAgICAgICBtX2F1dG9t
YXRpY1B1bGxOb2Rlc05lZWRVcGRhdGluZyA9IHRydWU7Cit9CisKK3ZvaWQgV2ViS2l0QXVkaW9D
b250ZXh0Ojp1cGRhdGVBdXRvbWF0aWNQdWxsTm9kZXMoKQoreworICAgIEFTU0VSVChpc0dyYXBo
T3duZXIoKSk7CisKKyAgICBpZiAobV9hdXRvbWF0aWNQdWxsTm9kZXNOZWVkVXBkYXRpbmcpIHsK
KyAgICAgICAgLy8gQ29weSBmcm9tIG1fYXV0b21hdGljUHVsbE5vZGVzIHRvIG1fcmVuZGVyaW5n
QXV0b21hdGljUHVsbE5vZGVzLgorICAgICAgICBtX3JlbmRlcmluZ0F1dG9tYXRpY1B1bGxOb2Rl
cy5yZXNpemUobV9hdXRvbWF0aWNQdWxsTm9kZXMuc2l6ZSgpKTsKKworICAgICAgICB1bnNpZ25l
ZCBpID0gMDsKKyAgICAgICAgZm9yIChhdXRvJiBvdXRwdXQgOiBtX2F1dG9tYXRpY1B1bGxOb2Rl
cykKKyAgICAgICAgICAgIG1fcmVuZGVyaW5nQXV0b21hdGljUHVsbE5vZGVzW2krK10gPSBvdXRw
dXQ7CisKKyAgICAgICAgbV9hdXRvbWF0aWNQdWxsTm9kZXNOZWVkVXBkYXRpbmcgPSBmYWxzZTsK
KyAgICB9Cit9CisKK3ZvaWQgV2ViS2l0QXVkaW9Db250ZXh0Ojpwcm9jZXNzQXV0b21hdGljUHVs
bE5vZGVzKHNpemVfdCBmcmFtZXNUb1Byb2Nlc3MpCit7CisgICAgQVNTRVJUKGlzQXVkaW9UaHJl
YWQoKSk7CisKKyAgICBmb3IgKGF1dG8mIG5vZGUgOiBtX3JlbmRlcmluZ0F1dG9tYXRpY1B1bGxO
b2RlcykKKyAgICAgICAgbm9kZS0+cHJvY2Vzc0lmTmVjZXNzYXJ5KGZyYW1lc1RvUHJvY2Vzcyk7
Cit9CisKK1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIFdlYktpdEF1ZGlvQ29udGV4dDo6c2NyaXB0
RXhlY3V0aW9uQ29udGV4dCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIEFjdGl2ZURPTU9iamVjdDo6
c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOworfQorCit2b2lkIFdlYktpdEF1ZGlvQ29udGV4dDo6
bm9kZVdpbGxCZWdpblBsYXliYWNrKCkKK3sKKyAgICAvLyBDYWxsZWQgYnkgc2NoZWR1bGVkIEF1
ZGlvTm9kZXMgd2hlbiBjbGllbnRzIHNjaGVkdWxlIHRoZWlyIHN0YXJ0IHRpbWVzLgorICAgIC8v
IFByaW9yIHRvIHRoZSBpbnRyb2R1Y3Rpb24gb2Ygc3VzcGVuZCgpLCByZXN1bWUoKSwgYW5kIHN0
b3AoKSwgc3RhcnRpbmcKKyAgICAvLyBhIHNjaGVkdWxlZCBBdWRpb05vZGUgd291bGQgcmVtb3Zl
IHRoZSB1c2VyLWdlc3R1cmUgcmVzdHJpY3Rpb24sIGlmIHByZXNlbnQsCisgICAgLy8gYW5kIHdv
dWxkIHRodXMgdW5tdXRlIHRoZSBjb250ZXh0LiBOb3cgdGhhdCBBdWRpb0NvbnRleHQgc3RheXMg
aW4gdGhlCisgICAgLy8gInN1c3BlbmRlZCIgc3RhdGUgaWYgYSB1c2VyLWdlc3R1cmUgcmVzdHJp
Y3Rpb24gaXMgcHJlc2VudCwgc3RhcnRpbmcgYQorICAgIC8vIHNjaGVkdWxlIEF1ZGlvTm9kZSBz
aG91bGQgc2V0IHRoZSBzdGF0ZSB0byAicnVubmluZyIsIGJ1dCBvbmx5IGlmIHRoZQorICAgIC8v
IHVzZXItZ2VzdHVyZSByZXN0cmljdGlvbiBpcyBzZXQuCisgICAgaWYgKHVzZXJHZXN0dXJlUmVx
dWlyZWRGb3JBdWRpb1N0YXJ0KCkpCisgICAgICAgIHN0YXJ0UmVuZGVyaW5nKCk7Cit9CisKK3N0
YXRpYyBib29sIHNob3VsZERvY3VtZW50QWxsb3dXZWJBdWRpb1RvQXV0b1BsYXkoY29uc3QgRG9j
dW1lbnQmIGRvY3VtZW50KQoreworICAgIGlmIChkb2N1bWVudC5wcm9jZXNzaW5nVXNlckdlc3R1
cmVGb3JNZWRpYSgpIHx8IGRvY3VtZW50LmlzQ2FwdHVyaW5nKCkpCisgICAgICAgIHJldHVybiB0
cnVlOworICAgIHJldHVybiBkb2N1bWVudC5xdWlya3MoKS5zaG91bGRBdXRvcGxheVdlYkF1ZGlv
Rm9yQXJiaXRyYXJ5VXNlckdlc3R1cmUoKSAmJiBkb2N1bWVudC50b3BEb2N1bWVudCgpLmhhc0hh
ZFVzZXJJbnRlcmFjdGlvbigpOworfQorCitib29sIFdlYktpdEF1ZGlvQ29udGV4dDo6d2lsbEJl
Z2luUGxheWJhY2soKQoreworICAgIGF1dG8qIGRvY3VtZW50ID0gdGhpcy0+ZG9jdW1lbnQoKTsK
KyAgICBpZiAoIWRvY3VtZW50KQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBpZiAodXNl
ckdlc3R1cmVSZXF1aXJlZEZvckF1ZGlvU3RhcnQoKSkgeworICAgICAgICBpZiAoIXNob3VsZERv
Y3VtZW50QWxsb3dXZWJBdWRpb1RvQXV0b1BsYXkoKmRvY3VtZW50KSkgeworICAgICAgICAgICAg
QUxXQVlTX0xPRyhMT0dJREVOVElGSUVSLCAicmV0dXJuaW5nIGZhbHNlLCBub3QgcHJvY2Vzc2lu
ZyB1c2VyIGdlc3R1cmUgb3IgY2FwdHVyaW5nIik7CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7
CisgICAgICAgIH0KKyAgICAgICAgcmVtb3ZlQmVoYXZpb3JSZXN0cmljdGlvbihXZWJLaXRBdWRp
b0NvbnRleHQ6OlJlcXVpcmVVc2VyR2VzdHVyZUZvckF1ZGlvU3RhcnRSZXN0cmljdGlvbik7Cisg
ICAgfQorCisgICAgaWYgKHBhZ2VDb25zZW50UmVxdWlyZWRGb3JBdWRpb1N0YXJ0KCkpIHsKKyAg
ICAgICAgYXV0byogcGFnZSA9IGRvY3VtZW50LT5wYWdlKCk7CisgICAgICAgIGlmIChwYWdlICYm
ICFwYWdlLT5jYW5TdGFydE1lZGlhKCkpIHsKKyAgICAgICAgICAgIGRvY3VtZW50LT5hZGRNZWRp
YUNhblN0YXJ0TGlzdGVuZXIoKnRoaXMpOworICAgICAgICAgICAgQUxXQVlTX0xPRyhMT0dJREVO
VElGSUVSLCAicmV0dXJuaW5nIGZhbHNlLCBwYWdlIGRvZXNuJ3QgYWxsb3cgbWVkaWEgdG8gc3Rh
cnQiKTsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorICAgICAgICByZW1v
dmVCZWhhdmlvclJlc3RyaWN0aW9uKFdlYktpdEF1ZGlvQ29udGV4dDo6UmVxdWlyZVBhZ2VDb25z
ZW50Rm9yQXVkaW9TdGFydFJlc3RyaWN0aW9uKTsKKyAgICB9CisKKyAgICBhdXRvIHdpbGxCZWdp
biA9IG1fbWVkaWFTZXNzaW9uLT5jbGllbnRXaWxsQmVnaW5QbGF5YmFjaygpOworICAgIEFMV0FZ
U19MT0coTE9HSURFTlRJRklFUiwgInJldHVybmluZyAiLCB3aWxsQmVnaW4pOworCisgICAgcmV0
dXJuIHdpbGxCZWdpbjsKK30KKworYm9vbCBXZWJLaXRBdWRpb0NvbnRleHQ6OndpbGxQYXVzZVBs
YXliYWNrKCkKK3sKKyAgICBhdXRvKiBkb2N1bWVudCA9IHRoaXMtPmRvY3VtZW50KCk7CisgICAg
aWYgKCFkb2N1bWVudCkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgaWYgKHVzZXJHZXN0
dXJlUmVxdWlyZWRGb3JBdWRpb1N0YXJ0KCkpIHsKKyAgICAgICAgaWYgKCFkb2N1bWVudC0+cHJv
Y2Vzc2luZ1VzZXJHZXN0dXJlRm9yTWVkaWEoKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
KyAgICAgICAgcmVtb3ZlQmVoYXZpb3JSZXN0cmljdGlvbihXZWJLaXRBdWRpb0NvbnRleHQ6OlJl
cXVpcmVVc2VyR2VzdHVyZUZvckF1ZGlvU3RhcnRSZXN0cmljdGlvbik7CisgICAgfQorCisgICAg
aWYgKHBhZ2VDb25zZW50UmVxdWlyZWRGb3JBdWRpb1N0YXJ0KCkpIHsKKyAgICAgICAgYXV0byog
cGFnZSA9IGRvY3VtZW50LT5wYWdlKCk7CisgICAgICAgIGlmIChwYWdlICYmICFwYWdlLT5jYW5T
dGFydE1lZGlhKCkpIHsKKyAgICAgICAgICAgIGRvY3VtZW50LT5hZGRNZWRpYUNhblN0YXJ0TGlz
dGVuZXIoKnRoaXMpOworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisgICAg
ICAgIHJlbW92ZUJlaGF2aW9yUmVzdHJpY3Rpb24oV2ViS2l0QXVkaW9Db250ZXh0OjpSZXF1aXJl
UGFnZUNvbnNlbnRGb3JBdWRpb1N0YXJ0UmVzdHJpY3Rpb24pOworICAgIH0KKworICAgIHJldHVy
biBtX21lZGlhU2Vzc2lvbi0+Y2xpZW50V2lsbFBhdXNlUGxheWJhY2soKTsKK30KKwordm9pZCBX
ZWJLaXRBdWRpb0NvbnRleHQ6OnN0YXJ0UmVuZGVyaW5nKCkKK3sKKyAgICBBTFdBWVNfTE9HKExP
R0lERU5USUZJRVIpOworICAgIGlmIChtX2lzU3RvcFNjaGVkdWxlZCB8fCAhd2lsbEJlZ2luUGxh
eWJhY2soKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgbWFrZVBlbmRpbmdBY3Rpdml0eSgpOwor
CisgICAgZGVzdGluYXRpb24oKS0+c3RhcnRSZW5kZXJpbmcoKTsKKyAgICBzZXRTdGF0ZShTdGF0
ZTo6UnVubmluZyk7Cit9CisKK3ZvaWQgV2ViS2l0QXVkaW9Db250ZXh0OjptZWRpYUNhblN0YXJ0
KERvY3VtZW50JiBkb2N1bWVudCkKK3sKKyAgICBBU1NFUlRfVU5VU0VEKGRvY3VtZW50LCAmZG9j
dW1lbnQgPT0gdGhpcy0+ZG9jdW1lbnQoKSk7CisgICAgcmVtb3ZlQmVoYXZpb3JSZXN0cmljdGlv
bihXZWJLaXRBdWRpb0NvbnRleHQ6OlJlcXVpcmVQYWdlQ29uc2VudEZvckF1ZGlvU3RhcnRSZXN0
cmljdGlvbik7CisgICAgbWF5UmVzdW1lUGxheWJhY2sodHJ1ZSk7Cit9CisKK01lZGlhUHJvZHVj
ZXI6Ok1lZGlhU3RhdGVGbGFncyBXZWJLaXRBdWRpb0NvbnRleHQ6Om1lZGlhU3RhdGUoKSBjb25z
dAoreworICAgIGlmICghbV9pc1N0b3BTY2hlZHVsZWQgJiYgbV9kZXN0aW5hdGlvbk5vZGUgJiYg
bV9kZXN0aW5hdGlvbk5vZGUtPmlzUGxheWluZ0F1ZGlvKCkpCisgICAgICAgIHJldHVybiBNZWRp
YVByb2R1Y2VyOjpJc1BsYXlpbmdBdWRpbzsKKworICAgIHJldHVybiBNZWRpYVByb2R1Y2VyOjpJ
c05vdFBsYXlpbmc7Cit9CisKK3ZvaWQgV2ViS2l0QXVkaW9Db250ZXh0OjpwYWdlTXV0ZWRTdGF0
ZURpZENoYW5nZSgpCit7CisgICAgaWYgKG1fZGVzdGluYXRpb25Ob2RlICYmIGRvY3VtZW50KCkg
JiYgZG9jdW1lbnQoKS0+cGFnZSgpKQorICAgICAgICBtX2Rlc3RpbmF0aW9uTm9kZS0+c2V0TXV0
ZWQoZG9jdW1lbnQoKS0+cGFnZSgpLT5pc0F1ZGlvTXV0ZWQoKSk7Cit9CisKK3ZvaWQgV2ViS2l0
QXVkaW9Db250ZXh0Ojppc1BsYXlpbmdBdWRpb0RpZENoYW5nZSgpCit7CisgICAgLy8gTWFrZSBz
dXJlIHRvIGNhbGwgRG9jdW1lbnQ6OnVwZGF0ZUlzUGxheWluZ01lZGlhKCkgb24gdGhlIG1haW4g
dGhyZWFkLCBzaW5jZQorICAgIC8vIHdlIGNvdWxkIGJlIG9uIHRoZSBhdWRpbyBJL08gdGhyZWFk
IGhlcmUgYW5kIHRoZSBjYWxsIGludG8gV2ViQ29yZSBjb3VsZCBibG9jay4KKyAgICBjYWxsT25N
YWluVGhyZWFkKFtwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyldIHsKKyAgICAgICAgaWYg
KHByb3RlY3RlZFRoaXMtPmRvY3VtZW50KCkpCisgICAgICAgICAgICBwcm90ZWN0ZWRUaGlzLT5k
b2N1bWVudCgpLT51cGRhdGVJc1BsYXlpbmdNZWRpYSgpOworICAgIH0pOworfQorCit2b2lkIFdl
YktpdEF1ZGlvQ29udGV4dDo6ZmluaXNoZWRSZW5kZXJpbmcoYm9vbCBkaWRSZW5kZXJpbmcpCit7
CisgICAgQVNTRVJUKGlzT2ZmbGluZUNvbnRleHQoKSk7CisgICAgQVNTRVJUKGlzTWFpblRocmVh
ZCgpKTsKKyAgICBpZiAoIWlzTWFpblRocmVhZCgpKQorICAgICAgICByZXR1cm47CisKKyAgICBh
dXRvIGNsZWFyUGVuZGluZ0FjdGl2aXR5SWZFeGl0RWFybHkgPSBXVEY6Om1ha2VTY29wZUV4aXQo
W3RoaXNdIHsKKyAgICAgICAgY2xlYXJQZW5kaW5nQWN0aXZpdHkoKTsKKyAgICB9KTsKKworCisg
ICAgQUxXQVlTX0xPRyhMT0dJREVOVElGSUVSKTsKKworICAgIGlmICghZGlkUmVuZGVyaW5nKQor
ICAgICAgICByZXR1cm47CisKKyAgICBBdWRpb0J1ZmZlciogcmVuZGVyZWRCdWZmZXIgPSBtX3Jl
bmRlclRhcmdldC5nZXQoKTsKKyAgICBzZXRTdGF0ZShTdGF0ZTo6Q2xvc2VkKTsKKworICAgIEFT
U0VSVChyZW5kZXJlZEJ1ZmZlcik7CisgICAgaWYgKCFyZW5kZXJlZEJ1ZmZlcikKKyAgICAgICAg
cmV0dXJuOworCisgICAgLy8gQXZvaWQgZmlyaW5nIHRoZSBldmVudCBpZiB0aGUgZG9jdW1lbnQg
aGFzIGFscmVhZHkgZ29uZSBhd2F5LgorICAgIGlmIChtX2lzU3RvcFNjaGVkdWxlZCkKKyAgICAg
ICAgcmV0dXJuOworCisgICAgY2xlYXJQZW5kaW5nQWN0aXZpdHlJZkV4aXRFYXJseS5yZWxlYXNl
KCk7CisgICAgbV9ldmVudFF1ZXVlLT5lbnF1ZXVlRXZlbnQoT2ZmbGluZUF1ZGlvQ29tcGxldGlv
bkV2ZW50OjpjcmVhdGUocmVuZGVyZWRCdWZmZXIpKTsKK30KKwordm9pZCBXZWJLaXRBdWRpb0Nv
bnRleHQ6OmRpc3BhdGNoRXZlbnQoRXZlbnQmIGV2ZW50KQoreworICAgIEV2ZW50VGFyZ2V0Ojpk
aXNwYXRjaEV2ZW50KGV2ZW50KTsKKyAgICBpZiAoZXZlbnQuZXZlbnRJbnRlcmZhY2UoKSA9PSBP
ZmZsaW5lQXVkaW9Db21wbGV0aW9uRXZlbnRJbnRlcmZhY2VUeXBlKQorICAgICAgICBjbGVhclBl
bmRpbmdBY3Rpdml0eSgpOworfQorCit2b2lkIFdlYktpdEF1ZGlvQ29udGV4dDo6aW5jcmVtZW50
QWN0aXZlU291cmNlQ291bnQoKQoreworICAgICsrbV9hY3RpdmVTb3VyY2VDb3VudDsKK30KKwor
dm9pZCBXZWJLaXRBdWRpb0NvbnRleHQ6OmRlY3JlbWVudEFjdGl2ZVNvdXJjZUNvdW50KCkKK3sK
KyAgICAtLW1fYWN0aXZlU291cmNlQ291bnQ7Cit9CisKK3ZvaWQgV2ViS2l0QXVkaW9Db250ZXh0
OjpzdXNwZW5kUmVuZGVyaW5nKERPTVByb21pc2VEZWZlcnJlZDx2b2lkPiYmIHByb21pc2UpCit7
CisgICAgaWYgKGlzT2ZmbGluZUNvbnRleHQoKSB8fCBtX2lzU3RvcFNjaGVkdWxlZCkgeworICAg
ICAgICBwcm9taXNlLnJlamVjdChJbnZhbGlkU3RhdGVFcnJvcik7CisgICAgICAgIHJldHVybjsK
KyAgICB9CisKKyAgICBpZiAobV9zdGF0ZSA9PSBTdGF0ZTo6U3VzcGVuZGVkKSB7CisgICAgICAg
IHByb21pc2UucmVzb2x2ZSgpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgaWYgKG1f
c3RhdGUgPT0gU3RhdGU6OkNsb3NlZCB8fCBtX3N0YXRlID09IFN0YXRlOjpJbnRlcnJ1cHRlZCB8
fCAhbV9kZXN0aW5hdGlvbk5vZGUpIHsKKyAgICAgICAgcHJvbWlzZS5yZWplY3QoKTsKKyAgICAg
ICAgcmV0dXJuOworICAgIH0KKworICAgIGFkZFJlYWN0aW9uKFN0YXRlOjpTdXNwZW5kZWQsIFdU
Rk1vdmUocHJvbWlzZSkpOworCisgICAgaWYgKCF3aWxsUGF1c2VQbGF5YmFjaygpKQorICAgICAg
ICByZXR1cm47CisKKyAgICBsYXp5SW5pdGlhbGl6ZSgpOworCisgICAgbV9kZXN0aW5hdGlvbk5v
ZGUtPnN1c3BlbmQoW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKV0geworICAg
ICAgICBzZXRTdGF0ZShTdGF0ZTo6U3VzcGVuZGVkKTsKKyAgICB9KTsKK30KKwordm9pZCBXZWJL
aXRBdWRpb0NvbnRleHQ6OnJlc3VtZVJlbmRlcmluZyhET01Qcm9taXNlRGVmZXJyZWQ8dm9pZD4m
JiBwcm9taXNlKQoreworICAgIGlmIChpc09mZmxpbmVDb250ZXh0KCkgfHwgbV9pc1N0b3BTY2hl
ZHVsZWQpIHsKKyAgICAgICAgcHJvbWlzZS5yZWplY3QoSW52YWxpZFN0YXRlRXJyb3IpOworICAg
ICAgICByZXR1cm47CisgICAgfQorCisgICAgaWYgKG1fc3RhdGUgPT0gU3RhdGU6OlJ1bm5pbmcp
IHsKKyAgICAgICAgcHJvbWlzZS5yZXNvbHZlKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisK
KyAgICBpZiAobV9zdGF0ZSA9PSBTdGF0ZTo6Q2xvc2VkIHx8ICFtX2Rlc3RpbmF0aW9uTm9kZSkg
eworICAgICAgICBwcm9taXNlLnJlamVjdCgpOworICAgICAgICByZXR1cm47CisgICAgfQorCisg
ICAgYWRkUmVhY3Rpb24oU3RhdGU6OlJ1bm5pbmcsIFdURk1vdmUocHJvbWlzZSkpOworCisgICAg
aWYgKCF3aWxsQmVnaW5QbGF5YmFjaygpKQorICAgICAgICByZXR1cm47CisKKyAgICBsYXp5SW5p
dGlhbGl6ZSgpOworCisgICAgbV9kZXN0aW5hdGlvbk5vZGUtPnJlc3VtZShbdGhpcywgcHJvdGVj
dGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpXSB7CisgICAgICAgIHNldFN0YXRlKFN0YXRlOjpSdW5u
aW5nKTsKKyAgICB9KTsKK30KKwordm9pZCBXZWJLaXRBdWRpb0NvbnRleHQ6OmNsb3NlKERPTVBy
b21pc2VEZWZlcnJlZDx2b2lkPiYmIHByb21pc2UpCit7CisgICAgaWYgKGlzT2ZmbGluZUNvbnRl
eHQoKSB8fCBtX2lzU3RvcFNjaGVkdWxlZCkgeworICAgICAgICBwcm9taXNlLnJlamVjdChJbnZh
bGlkU3RhdGVFcnJvcik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpZiAobV9zdGF0
ZSA9PSBTdGF0ZTo6Q2xvc2VkIHx8ICFtX2Rlc3RpbmF0aW9uTm9kZSkgeworICAgICAgICBwcm9t
aXNlLnJlc29sdmUoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGFkZFJlYWN0aW9u
KFN0YXRlOjpDbG9zZWQsIFdURk1vdmUocHJvbWlzZSkpOworCisgICAgbGF6eUluaXRpYWxpemUo
KTsKKworICAgIG1fZGVzdGluYXRpb25Ob2RlLT5jbG9zZShbdGhpcywgcHJvdGVjdGVkVGhpcyA9
IG1ha2VSZWYoKnRoaXMpXSB7CisgICAgICAgIHNldFN0YXRlKFN0YXRlOjpDbG9zZWQpOworICAg
ICAgICB1bmluaXRpYWxpemUoKTsKKyAgICB9KTsKK30KKworCit2b2lkIFdlYktpdEF1ZGlvQ29u
dGV4dDo6c3VzcGVuZFBsYXliYWNrKCkKK3sKKyAgICBpZiAoIW1fZGVzdGluYXRpb25Ob2RlIHx8
IG1fc3RhdGUgPT0gU3RhdGU6OkNsb3NlZCkKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKG1f
c3RhdGUgPT0gU3RhdGU6OlN1c3BlbmRlZCkgeworICAgICAgICBpZiAobV9tZWRpYVNlc3Npb24t
PnN0YXRlKCkgPT0gUGxhdGZvcm1NZWRpYVNlc3Npb246OkludGVycnVwdGVkKQorICAgICAgICAg
ICAgc2V0U3RhdGUoU3RhdGU6OkludGVycnVwdGVkKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0K
KworICAgIGxhenlJbml0aWFsaXplKCk7CisKKyAgICBtX2Rlc3RpbmF0aW9uTm9kZS0+c3VzcGVu
ZChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpXSB7CisgICAgICAgIGJvb2wg
aW50ZXJydXB0ZWQgPSBtX21lZGlhU2Vzc2lvbi0+c3RhdGUoKSA9PSBQbGF0Zm9ybU1lZGlhU2Vz
c2lvbjo6SW50ZXJydXB0ZWQ7CisgICAgICAgIHNldFN0YXRlKGludGVycnVwdGVkID8gU3RhdGU6
OkludGVycnVwdGVkIDogU3RhdGU6OlN1c3BlbmRlZCk7CisgICAgfSk7Cit9CisKK3ZvaWQgV2Vi
S2l0QXVkaW9Db250ZXh0OjptYXlSZXN1bWVQbGF5YmFjayhib29sIHNob3VsZFJlc3VtZSkKK3sK
KyAgICBpZiAoIW1fZGVzdGluYXRpb25Ob2RlIHx8IG1fc3RhdGUgPT0gU3RhdGU6OkNsb3NlZCB8
fCBtX3N0YXRlID09IFN0YXRlOjpSdW5uaW5nKQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAo
IXNob3VsZFJlc3VtZSkgeworICAgICAgICBzZXRTdGF0ZShTdGF0ZTo6U3VzcGVuZGVkKTsKKyAg
ICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlmICghd2lsbEJlZ2luUGxheWJhY2soKSkKKyAg
ICAgICAgcmV0dXJuOworCisgICAgbGF6eUluaXRpYWxpemUoKTsKKworICAgIG1fZGVzdGluYXRp
b25Ob2RlLT5yZXN1bWUoW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKV0gewor
ICAgICAgICBzZXRTdGF0ZShTdGF0ZTo6UnVubmluZyk7CisgICAgfSk7Cit9CisKK3ZvaWQgV2Vi
S2l0QXVkaW9Db250ZXh0Ojpwb3N0VGFzayhXVEY6OkZ1bmN0aW9uPHZvaWQoKT4mJiB0YXNrKQor
eworICAgIGlmIChtX2lzU3RvcFNjaGVkdWxlZCkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9z
Y3JpcHRFeGVjdXRpb25Db250ZXh0LT5wb3N0VGFzayhXVEZNb3ZlKHRhc2spKTsKK30KKworY29u
c3QgU2VjdXJpdHlPcmlnaW4qIFdlYktpdEF1ZGlvQ29udGV4dDo6b3JpZ2luKCkgY29uc3QKK3sK
KyAgICByZXR1cm4gbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0ID8gbV9zY3JpcHRFeGVjdXRpb25D
b250ZXh0LT5zZWN1cml0eU9yaWdpbigpIDogbnVsbHB0cjsKK30KKwordm9pZCBXZWJLaXRBdWRp
b0NvbnRleHQ6OmFkZENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VTb3VyY2Ugc291cmNlLCBNZXNzYWdl
TGV2ZWwgbGV2ZWwsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKK3sKKyAgICBpZiAobV9zY3JpcHRF
eGVjdXRpb25Db250ZXh0KQorICAgICAgICBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPmFkZENv
bnNvbGVNZXNzYWdlKHNvdXJjZSwgbGV2ZWwsIG1lc3NhZ2UpOworfQorCit2b2lkIFdlYktpdEF1
ZGlvQ29udGV4dDo6Y2xlYXJQZW5kaW5nQWN0aXZpdHkoKQoreworICAgIGlmICghbV9wZW5kaW5n
QWN0aXZpdHkpCisgICAgICAgIHJldHVybjsKKyAgICBtX3BlbmRpbmdBY3Rpdml0eSA9IG51bGxw
dHI7CisgICAgLy8gRklYTUU6IFJlbW92ZSB0aGlzIHNwZWNpZmljIGRlcmVmKCkgYW5kIHJlZigp
IGNhbGwgaW4gbWFrZVBlbmRpbmdBY3Rpdml0eSgpLgorICAgIGRlcmVmKCk7Cit9CisKK3ZvaWQg
V2ViS2l0QXVkaW9Db250ZXh0OjptYWtlUGVuZGluZ0FjdGl2aXR5KCkKK3sKKyAgICBpZiAobV9w
ZW5kaW5nQWN0aXZpdHkpCisgICAgICAgIHJldHVybjsKKyAgICBtX3BlbmRpbmdBY3Rpdml0eSA9
IEFjdGl2ZURPTU9iamVjdDo6bWFrZVBlbmRpbmdBY3Rpdml0eSgqdGhpcyk7CisgICAgcmVmKCk7
Cit9CisKKyNpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKK1dURkxvZ0NoYW5uZWwmIFdlYktpdEF1
ZGlvQ29udGV4dDo6bG9nQ2hhbm5lbCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIExvZ01lZGlhOwor
fQorI2VuZGlmCisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShX
RUJfQVVESU8pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1dl
YktpdEF1ZGlvQ29udGV4dC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9XZWJL
aXRBdWRpb0NvbnRleHQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4u
NWE0NmZiMjgwYmMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmF1ZGlvL1dlYktpdEF1ZGlvQ29udGV4dC5oCkBAIC0wLDAgKzEsNDY3IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTYtMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiAgUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQK
KyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TgorICogQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTCisgKiBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkFjdGl2ZURPTU9iamVjdC5oIgorI2luY2x1
ZGUgIkFzeW5jQXVkaW9EZWNvZGVyLmgiCisjaW5jbHVkZSAiQXVkaW9CdXMuaCIKKyNpbmNsdWRl
ICJBdWRpb0NvbnRleHRTdGF0ZS5oIgorI2luY2x1ZGUgIkF1ZGlvRGVzdGluYXRpb25Ob2RlLmgi
CisjaW5jbHVkZSAiRXZlbnRUYXJnZXQuaCIKKyNpbmNsdWRlICJNZWRpYUNhblN0YXJ0TGlzdGVu
ZXIuaCIKKyNpbmNsdWRlICJNZWRpYVByb2R1Y2VyLmgiCisjaW5jbHVkZSAiUGxhdGZvcm1NZWRp
YVNlc3Npb24uaCIKKyNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCisjaW5jbHVk
ZSAiVmlzaWJpbGl0eUNoYW5nZUNsaWVudC5oIgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0Nv
bnNvbGVUeXBlcy5oPgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0Zsb2F0MzJBcnJheS5oPgor
I2luY2x1ZGUgPGF0b21pYz4KKyNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgorI2luY2x1ZGUgPHd0
Zi9Mb2dnZXJIZWxwZXIuaD4KKyNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgorI2luY2x1ZGUg
PHd0Zi9SZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYvVGhyZWFkU2FmZVJlZkNvdW50ZWQuaD4KKyNp
bmNsdWRlIDx3dGYvVGhyZWFkaW5nLmg+CisjaW5jbHVkZSA8d3RmL1VuaXF1ZVJlZi5oPgorI2lu
Y2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9BdG9tU3RyaW5nSGFzaC5o
PgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIEFuYWx5c2VyTm9kZTsKK2NsYXNzIEF1
ZGlvQnVmZmVyOworY2xhc3MgQXVkaW9CdWZmZXJDYWxsYmFjazsKK2NsYXNzIEF1ZGlvQnVmZmVy
U291cmNlTm9kZTsKK2NsYXNzIEF1ZGlvTGlzdGVuZXI7CitjbGFzcyBBdWRpb1N1bW1pbmdKdW5j
dGlvbjsKK2NsYXNzIEJpcXVhZEZpbHRlck5vZGU7CitjbGFzcyBDaGFubmVsTWVyZ2VyTm9kZTsK
K2NsYXNzIENoYW5uZWxTcGxpdHRlck5vZGU7CitjbGFzcyBDb252b2x2ZXJOb2RlOworY2xhc3Mg
RGVsYXlOb2RlOworY2xhc3MgRG9jdW1lbnQ7CitjbGFzcyBEeW5hbWljc0NvbXByZXNzb3JOb2Rl
OworY2xhc3MgR2Fpbk5vZGU7CitjbGFzcyBIVE1MTWVkaWFFbGVtZW50OworY2xhc3MgTWFpblRo
cmVhZEdlbmVyaWNFdmVudFF1ZXVlOworY2xhc3MgTWVkaWFFbGVtZW50QXVkaW9Tb3VyY2VOb2Rl
OworY2xhc3MgTWVkaWFTdHJlYW07CitjbGFzcyBNZWRpYVN0cmVhbUF1ZGlvRGVzdGluYXRpb25O
b2RlOworY2xhc3MgTWVkaWFTdHJlYW1BdWRpb1NvdXJjZU5vZGU7CitjbGFzcyBPc2NpbGxhdG9y
Tm9kZTsKK2NsYXNzIFBhbm5lck5vZGU7CitjbGFzcyBQZXJpb2RpY1dhdmU7CitjbGFzcyBTY3Jp
cHRQcm9jZXNzb3JOb2RlOworY2xhc3MgU2VjdXJpdHlPcmlnaW47CitjbGFzcyBXYXZlU2hhcGVy
Tm9kZTsKKwordGVtcGxhdGU8dHlwZW5hbWUgSURMVHlwZT4gY2xhc3MgRE9NUHJvbWlzZURlZmVy
cmVkOworCisvLyBBdWRpb0NvbnRleHQgaXMgdGhlIGNvcm5lcnN0b25lIG9mIHRoZSB3ZWIgYXVk
aW8gQVBJIGFuZCBhbGwgQXVkaW9Ob2RlcyBhcmUgY3JlYXRlZCBmcm9tIGl0LgorLy8gRm9yIHRo
cmVhZCBzYWZldHkgYmV0d2VlbiB0aGUgYXVkaW8gdGhyZWFkIGFuZCB0aGUgbWFpbiB0aHJlYWQs
IGl0IGhhcyBhIHJlbmRlcmluZyBncmFwaCBsb2NraW5nIG1lY2hhbmlzbS4KKworY2xhc3MgV2Vi
S2l0QXVkaW9Db250ZXh0CisgICAgOiBwdWJsaWMgQWN0aXZlRE9NT2JqZWN0CisgICAgLCBwdWJs
aWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8V2ViS2l0QXVkaW9Db250ZXh0PgorICAgICwgcHVibGlj
IEV2ZW50VGFyZ2V0V2l0aElubGluZURhdGEKKyAgICAsIHB1YmxpYyBNZWRpYUNhblN0YXJ0TGlz
dGVuZXIKKyAgICAsIHB1YmxpYyBNZWRpYVByb2R1Y2VyCisgICAgLCBwcml2YXRlIFBsYXRmb3Jt
TWVkaWFTZXNzaW9uQ2xpZW50CisgICAgLCBwcml2YXRlIFZpc2liaWxpdHlDaGFuZ2VDbGllbnQK
KyNpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKKyAgICAsIHByaXZhdGUgTG9nZ2VySGVscGVyCisj
ZW5kaWYKK3sKKyAgICBXVEZfTUFLRV9JU09fQUxMT0NBVEVEKFdlYktpdEF1ZGlvQ29udGV4dCk7
CitwdWJsaWM6CisgICAgLy8gQ3JlYXRlIGFuIFdlYktpdEF1ZGlvQ29udGV4dCBmb3IgcmVuZGVy
aW5nIHRvIHRoZSBhdWRpbyBoYXJkd2FyZS4KKyAgICBzdGF0aWMgRXhjZXB0aW9uT3I8UmVmPFdl
YktpdEF1ZGlvQ29udGV4dD4+IGNyZWF0ZShEb2N1bWVudCYpOworCisgICAgdmlydHVhbCB+V2Vi
S2l0QXVkaW9Db250ZXh0KCk7CisKKyAgICBib29sIGlzSW5pdGlhbGl6ZWQoKSBjb25zdDsKKwor
ICAgIGJvb2wgaXNPZmZsaW5lQ29udGV4dCgpIGNvbnN0IHsgcmV0dXJuIG1faXNPZmZsaW5lQ29u
dGV4dDsgfQorCisgICAgRG9jdW1lbnQqIGRvY3VtZW50KCkgY29uc3Q7IC8vIEFTU0VSVHMgaWYg
ZG9jdW1lbnQgbm8gbG9uZ2VyIGV4aXN0cy4KKworICAgIERvY3VtZW50SWRlbnRpZmllciBob3N0
aW5nRG9jdW1lbnRJZGVudGlmaWVyKCkgY29uc3QgZmluYWw7CisKKyAgICBBdWRpb0Rlc3RpbmF0
aW9uTm9kZSogZGVzdGluYXRpb24oKSB7IHJldHVybiBtX2Rlc3RpbmF0aW9uTm9kZS5nZXQoKTsg
fQorICAgIHNpemVfdCBjdXJyZW50U2FtcGxlRnJhbWUoKSBjb25zdCB7IHJldHVybiBtX2Rlc3Rp
bmF0aW9uTm9kZSA/IG1fZGVzdGluYXRpb25Ob2RlLT5jdXJyZW50U2FtcGxlRnJhbWUoKSA6IDA7
IH0KKyAgICBkb3VibGUgY3VycmVudFRpbWUoKSBjb25zdCB7IHJldHVybiBtX2Rlc3RpbmF0aW9u
Tm9kZSA/IG1fZGVzdGluYXRpb25Ob2RlLT5jdXJyZW50VGltZSgpIDogMC47IH0KKyAgICBmbG9h
dCBzYW1wbGVSYXRlKCkgY29uc3QgeyByZXR1cm4gbV9kZXN0aW5hdGlvbk5vZGUgPyBtX2Rlc3Rp
bmF0aW9uTm9kZS0+c2FtcGxlUmF0ZSgpIDogMC5mOyB9CisgICAgdW5zaWduZWQgbG9uZyBhY3Rp
dmVTb3VyY2VDb3VudCgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PHVuc2lnbmVkIGxvbmc+
KG1fYWN0aXZlU291cmNlQ291bnQpOyB9CisKKyAgICB2b2lkIGluY3JlbWVudEFjdGl2ZVNvdXJj
ZUNvdW50KCk7CisgICAgdm9pZCBkZWNyZW1lbnRBY3RpdmVTb3VyY2VDb3VudCgpOworCisgICAg
RXhjZXB0aW9uT3I8UmVmPEF1ZGlvQnVmZmVyPj4gY3JlYXRlQnVmZmVyKHVuc2lnbmVkIG51bWJl
ck9mQ2hhbm5lbHMsIHNpemVfdCBudW1iZXJPZkZyYW1lcywgZmxvYXQgc2FtcGxlUmF0ZSk7Cisg
ICAgRXhjZXB0aW9uT3I8UmVmPEF1ZGlvQnVmZmVyPj4gY3JlYXRlQnVmZmVyKEFycmF5QnVmZmVy
JiwgYm9vbCBtaXhUb01vbm8pOworCisgICAgLy8gQXN5bmNocm9ub3VzIGF1ZGlvIGZpbGUgZGF0
YSBkZWNvZGluZy4KKyAgICB2b2lkIGRlY29kZUF1ZGlvRGF0YShSZWY8QXJyYXlCdWZmZXI+JiYs
IFJlZlB0cjxBdWRpb0J1ZmZlckNhbGxiYWNrPiYmLCBSZWZQdHI8QXVkaW9CdWZmZXJDYWxsYmFj
az4mJik7CisKKyAgICBBdWRpb0xpc3RlbmVyKiBsaXN0ZW5lcigpIHsgcmV0dXJuIG1fbGlzdGVu
ZXIuZ2V0KCk7IH0KKworICAgIHZvaWQgc3VzcGVuZFJlbmRlcmluZyhET01Qcm9taXNlRGVmZXJy
ZWQ8dm9pZD4mJik7CisgICAgdm9pZCByZXN1bWVSZW5kZXJpbmcoRE9NUHJvbWlzZURlZmVycmVk
PHZvaWQ+JiYpOworICAgIHZvaWQgY2xvc2UoRE9NUHJvbWlzZURlZmVycmVkPHZvaWQ+JiYpOwor
CisgICAgdXNpbmcgU3RhdGUgPSBBdWRpb0NvbnRleHRTdGF0ZTsKKyAgICBTdGF0ZSBzdGF0ZSgp
IGNvbnN0OworICAgIGJvb2wgaXNDbG9zZWQoKSBjb25zdCB7IHJldHVybiBtX3N0YXRlID09IFN0
YXRlOjpDbG9zZWQ7IH0KKworICAgIGJvb2wgd291bGRUYWludE9yaWdpbihjb25zdCBVUkwmKSBj
b25zdDsKKworICAgIC8vIFRoZSBBdWRpb05vZGUgY3JlYXRlIG1ldGhvZHMgYXJlIGNhbGxlZCBv
biB0aGUgbWFpbiB0aHJlYWQgKGZyb20gSmF2YVNjcmlwdCkuCisgICAgRXhjZXB0aW9uT3I8UmVm
PEF1ZGlvQnVmZmVyU291cmNlTm9kZT4+IGNyZWF0ZUJ1ZmZlclNvdXJjZSgpOworI2lmIEVOQUJM
RShWSURFTykKKyAgICBFeGNlcHRpb25PcjxSZWY8TWVkaWFFbGVtZW50QXVkaW9Tb3VyY2VOb2Rl
Pj4gY3JlYXRlTWVkaWFFbGVtZW50U291cmNlKEhUTUxNZWRpYUVsZW1lbnQmKTsKKyNlbmRpZgor
I2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCisgICAgRXhjZXB0aW9uT3I8UmVmPE1lZGlhU3RyZWFt
QXVkaW9Tb3VyY2VOb2RlPj4gY3JlYXRlTWVkaWFTdHJlYW1Tb3VyY2UoTWVkaWFTdHJlYW0mKTsK
KyAgICBFeGNlcHRpb25PcjxSZWY8TWVkaWFTdHJlYW1BdWRpb0Rlc3RpbmF0aW9uTm9kZT4+IGNy
ZWF0ZU1lZGlhU3RyZWFtRGVzdGluYXRpb24oKTsKKyNlbmRpZgorICAgIEV4Y2VwdGlvbk9yPFJl
ZjxHYWluTm9kZT4+IGNyZWF0ZUdhaW4oKTsKKyAgICBFeGNlcHRpb25PcjxSZWY8QmlxdWFkRmls
dGVyTm9kZT4+IGNyZWF0ZUJpcXVhZEZpbHRlcigpOworICAgIEV4Y2VwdGlvbk9yPFJlZjxXYXZl
U2hhcGVyTm9kZT4+IGNyZWF0ZVdhdmVTaGFwZXIoKTsKKyAgICBFeGNlcHRpb25PcjxSZWY8RGVs
YXlOb2RlPj4gY3JlYXRlRGVsYXkoZG91YmxlIG1heERlbGF5VGltZSk7CisgICAgRXhjZXB0aW9u
T3I8UmVmPFBhbm5lck5vZGU+PiBjcmVhdGVQYW5uZXIoKTsKKyAgICBFeGNlcHRpb25PcjxSZWY8
Q29udm9sdmVyTm9kZT4+IGNyZWF0ZUNvbnZvbHZlcigpOworICAgIEV4Y2VwdGlvbk9yPFJlZjxE
eW5hbWljc0NvbXByZXNzb3JOb2RlPj4gY3JlYXRlRHluYW1pY3NDb21wcmVzc29yKCk7CisgICAg
RXhjZXB0aW9uT3I8UmVmPEFuYWx5c2VyTm9kZT4+IGNyZWF0ZUFuYWx5c2VyKCk7CisgICAgRXhj
ZXB0aW9uT3I8UmVmPFNjcmlwdFByb2Nlc3Nvck5vZGU+PiBjcmVhdGVTY3JpcHRQcm9jZXNzb3Io
c2l6ZV90IGJ1ZmZlclNpemUsIHNpemVfdCBudW1iZXJPZklucHV0Q2hhbm5lbHMsIHNpemVfdCBu
dW1iZXJPZk91dHB1dENoYW5uZWxzKTsKKyAgICBFeGNlcHRpb25PcjxSZWY8Q2hhbm5lbFNwbGl0
dGVyTm9kZT4+IGNyZWF0ZUNoYW5uZWxTcGxpdHRlcihzaXplX3QgbnVtYmVyT2ZPdXRwdXRzKTsK
KyAgICBFeGNlcHRpb25PcjxSZWY8Q2hhbm5lbE1lcmdlck5vZGU+PiBjcmVhdGVDaGFubmVsTWVy
Z2VyKHNpemVfdCBudW1iZXJPZklucHV0cyk7CisgICAgRXhjZXB0aW9uT3I8UmVmPE9zY2lsbGF0
b3JOb2RlPj4gY3JlYXRlT3NjaWxsYXRvcigpOworICAgIEV4Y2VwdGlvbk9yPFJlZjxQZXJpb2Rp
Y1dhdmU+PiBjcmVhdGVQZXJpb2RpY1dhdmUoRmxvYXQzMkFycmF5JiByZWFsLCBGbG9hdDMyQXJy
YXkmIGltYWdpbmFyeSk7CisKKyAgICAvLyBXaGVuIGEgc291cmNlIG5vZGUgaGFzIG5vIG1vcmUg
cHJvY2Vzc2luZyB0byBkbyAoaGFzIGZpbmlzaGVkIHBsYXlpbmcpLCB0aGVuIGl0IHRlbGxzIHRo
ZSBjb250ZXh0IHRvIGRlcmVmZXJlbmNlIGl0LgorICAgIHZvaWQgbm90aWZ5Tm9kZUZpbmlzaGVk
UHJvY2Vzc2luZyhBdWRpb05vZGUqKTsKKworICAgIC8vIENhbGxlZCBhdCB0aGUgc3RhcnQgb2Yg
ZWFjaCByZW5kZXIgcXVhbnR1bS4KKyAgICB2b2lkIGhhbmRsZVByZVJlbmRlclRhc2tzKCk7CisK
KyAgICAvLyBDYWxsZWQgYXQgdGhlIGVuZCBvZiBlYWNoIHJlbmRlciBxdWFudHVtLgorICAgIHZv
aWQgaGFuZGxlUG9zdFJlbmRlclRhc2tzKCk7CisKKyAgICAvLyBDYWxsZWQgcGVyaW9kaWNhbGx5
IGF0IHRoZSBlbmQgb2YgZWFjaCByZW5kZXIgcXVhbnR1bSB0byBkZXJlZmVyZW5jZSBmaW5pc2hl
ZCBzb3VyY2Ugbm9kZXMuCisgICAgdm9pZCBkZXJlZkZpbmlzaGVkU291cmNlTm9kZXMoKTsKKwor
ICAgIC8vIFdlIHNjaGVkdWxlIGRlbGV0aW9uIG9mIGFsbCBtYXJrZWQgbm9kZXMgYXQgdGhlIGVu
ZCBvZiBlYWNoIHJlYWx0aW1lIHJlbmRlciBxdWFudHVtLgorICAgIHZvaWQgbWFya0ZvckRlbGV0
aW9uKEF1ZGlvTm9kZSYpOworICAgIHZvaWQgZGVsZXRlTWFya2VkTm9kZXMoKTsKKworICAgIC8v
IEF1ZGlvQ29udGV4dCBjYW4gcHVsbCBub2RlKHMpIGF0IHRoZSBlbmQgb2YgZWFjaCByZW5kZXIg
cXVhbnR1bSBldmVuIHdoZW4gdGhleSBhcmUgbm90IGNvbm5lY3RlZCB0byBhbnkgZG93bnN0cmVh
bSBub2Rlcy4KKyAgICAvLyBUaGVzZSB0d28gbWV0aG9kcyBhcmUgY2FsbGVkIGJ5IHRoZSBub2Rl
cyB3aG8gd2FudCB0byBhZGQvcmVtb3ZlIHRoZW1zZWx2ZXMgaW50by9mcm9tIHRoZSBhdXRvbWF0
aWMgcHVsbCBsaXN0cy4KKyAgICB2b2lkIGFkZEF1dG9tYXRpY1B1bGxOb2RlKEF1ZGlvTm9kZSYp
OworICAgIHZvaWQgcmVtb3ZlQXV0b21hdGljUHVsbE5vZGUoQXVkaW9Ob2RlJik7CisKKyAgICAv
LyBDYWxsZWQgcmlnaHQgYmVmb3JlIGhhbmRsZVBvc3RSZW5kZXJUYXNrcygpIHRvIGhhbmRsZSBu
b2RlcyB3aGljaCBuZWVkIHRvIGJlIHB1bGxlZCBldmVuIHdoZW4gdGhleSBhcmUgbm90IGNvbm5l
Y3RlZCB0byBhbnl0aGluZy4KKyAgICB2b2lkIHByb2Nlc3NBdXRvbWF0aWNQdWxsTm9kZXMoc2l6
ZV90IGZyYW1lc1RvUHJvY2Vzcyk7CisKKyAgICAvLyBLZWVwcyB0cmFjayBvZiB0aGUgbnVtYmVy
IG9mIGNvbm5lY3Rpb25zIG1hZGUuCisgICAgdm9pZCBpbmNyZW1lbnRDb25uZWN0aW9uQ291bnQo
KQorICAgIHsKKyAgICAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKyAgICAgICAgbV9jb25u
ZWN0aW9uQ291bnQrKzsKKyAgICB9CisKKyAgICB1bnNpZ25lZCBjb25uZWN0aW9uQ291bnQoKSBj
b25zdCB7IHJldHVybiBtX2Nvbm5lY3Rpb25Db3VudDsgfQorCisgICAgLy8KKyAgICAvLyBUaHJl
YWQgU2FmZXR5IGFuZCBHcmFwaCBMb2NraW5nOgorICAgIC8vCisKKyAgICB2b2lkIHNldEF1ZGlv
VGhyZWFkKFRocmVhZCYgdGhyZWFkKSB7IG1fYXVkaW9UaHJlYWQgPSAmdGhyZWFkOyB9IC8vIEZJ
WE1FOiBjaGVjayBlaXRoZXIgbm90IGluaXRpYWxpemVkIG9yIHRoZSBzYW1lCisgICAgVGhyZWFk
KiBhdWRpb1RocmVhZCgpIGNvbnN0IHsgcmV0dXJuIG1fYXVkaW9UaHJlYWQ7IH0KKyAgICBib29s
IGlzQXVkaW9UaHJlYWQoKSBjb25zdDsKKworICAgIC8vIFJldHVybnMgdHJ1ZSBvbmx5IGFmdGVy
IHRoZSBhdWRpbyB0aHJlYWQgaGFzIGJlZW4gc3RhcnRlZCBhbmQgdGhlbiBzaHV0ZG93bi4KKyAg
ICBib29sIGlzQXVkaW9UaHJlYWRGaW5pc2hlZCgpIHsgcmV0dXJuIG1faXNBdWRpb1RocmVhZEZp
bmlzaGVkOyB9CisKKyAgICAvLyBtdXN0UmVsZWFzZUxvY2sgaXMgc2V0IHRvIHRydWUgaWYgd2Ug
YWNxdWlyZWQgdGhlIGxvY2sgaW4gdGhpcyBtZXRob2QgY2FsbCBhbmQgY2FsbGVyIG11c3QgdW5s
b2NrKCksIGZhbHNlIGlmIGl0IHdhcyBwcmV2aW91c2x5IGFjcXVpcmVkLgorICAgIHZvaWQgbG9j
ayhib29sJiBtdXN0UmVsZWFzZUxvY2spOworCisgICAgLy8gUmV0dXJucyB0cnVlIGlmIHdlIG93
biB0aGUgbG9jay4KKyAgICAvLyBtdXN0UmVsZWFzZUxvY2sgaXMgc2V0IHRvIHRydWUgaWYgd2Ug
YWNxdWlyZWQgdGhlIGxvY2sgaW4gdGhpcyBtZXRob2QgY2FsbCBhbmQgY2FsbGVyIG11c3QgdW5s
b2NrKCksIGZhbHNlIGlmIGl0IHdhcyBwcmV2aW91c2x5IGFjcXVpcmVkLgorICAgIGJvb2wgdHJ5
TG9jayhib29sJiBtdXN0UmVsZWFzZUxvY2spOworCisgICAgdm9pZCB1bmxvY2soKTsKKworICAg
IC8vIFJldHVybnMgdHJ1ZSBpZiB0aGlzIHRocmVhZCBvd25zIHRoZSBjb250ZXh0J3MgbG9jay4K
KyAgICBib29sIGlzR3JhcGhPd25lcigpIGNvbnN0OworCisgICAgLy8gUmV0dXJucyB0aGUgbWF4
aW11bSBudW1iZXIgb2YgY2hhbm5lbHMgd2UgY2FuIHN1cHBvcnQuCisgICAgc3RhdGljIHVuc2ln
bmVkIG1heE51bWJlck9mQ2hhbm5lbHMoKSB7IHJldHVybiBNYXhOdW1iZXJPZkNoYW5uZWxzOyB9
CisKKyAgICBjbGFzcyBBdXRvTG9ja2VyIHsKKyAgICBwdWJsaWM6CisgICAgICAgIGV4cGxpY2l0
IEF1dG9Mb2NrZXIoV2ViS2l0QXVkaW9Db250ZXh0JiBjb250ZXh0KQorICAgICAgICAgICAgOiBt
X2NvbnRleHQoY29udGV4dCkKKyAgICAgICAgeworICAgICAgICAgICAgbV9jb250ZXh0LmxvY2so
bV9tdXN0UmVsZWFzZUxvY2spOworICAgICAgICB9CisKKyAgICAgICAgfkF1dG9Mb2NrZXIoKQor
ICAgICAgICB7CisgICAgICAgICAgICBpZiAobV9tdXN0UmVsZWFzZUxvY2spCisgICAgICAgICAg
ICAgICAgbV9jb250ZXh0LnVubG9jaygpOworICAgICAgICB9CisKKyAgICBwcml2YXRlOgorICAg
ICAgICBXZWJLaXRBdWRpb0NvbnRleHQmIG1fY29udGV4dDsKKyAgICAgICAgYm9vbCBtX211c3RS
ZWxlYXNlTG9jazsKKyAgICB9OworCisgICAgLy8gSW4gQXVkaW9Ob2RlOjpkZXJlZigpIGEgdHJ5
TG9jaygpIGlzIHVzZWQgZm9yIGNhbGxpbmcgZmluaXNoRGVyZWYoKSwgYnV0IGlmIGl0IGZhaWxz
IGtlZXAgdHJhY2sgaGVyZS4KKyAgICB2b2lkIGFkZERlZmVycmVkRmluaXNoRGVyZWYoQXVkaW9O
b2RlKik7CisKKyAgICAvLyBJbiB0aGUgYXVkaW8gdGhyZWFkIGF0IHRoZSBzdGFydCBvZiBlYWNo
IHJlbmRlciBjeWNsZSwgd2UnbGwgY2FsbCBoYW5kbGVEZWZlcnJlZEZpbmlzaERlcmVmcygpLgor
ICAgIHZvaWQgaGFuZGxlRGVmZXJyZWRGaW5pc2hEZXJlZnMoKTsKKworICAgIC8vIE9ubHkgYWNj
ZXNzZWQgd2hlbiB0aGUgZ3JhcGggbG9jayBpcyBoZWxkLgorICAgIHZvaWQgbWFya1N1bW1pbmdK
dW5jdGlvbkRpcnR5KEF1ZGlvU3VtbWluZ0p1bmN0aW9uKik7CisgICAgdm9pZCBtYXJrQXVkaW9O
b2RlT3V0cHV0RGlydHkoQXVkaW9Ob2RlT3V0cHV0Kik7CisKKyAgICAvLyBNdXN0IGJlIGNhbGxl
ZCBvbiBtYWluIHRocmVhZC4KKyAgICB2b2lkIHJlbW92ZU1hcmtlZFN1bW1pbmdKdW5jdGlvbihB
dWRpb1N1bW1pbmdKdW5jdGlvbiopOworCisgICAgLy8gRXZlbnRUYXJnZXQKKyAgICBFdmVudFRh
cmdldEludGVyZmFjZSBldmVudFRhcmdldEludGVyZmFjZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJu
IFdlYktpdEF1ZGlvQ29udGV4dEV2ZW50VGFyZ2V0SW50ZXJmYWNlVHlwZTsgfQorCisgICAgLy8g
UmVjb25jaWxlIHJlZi9kZXJlZiB3aGljaCBhcmUgZGVmaW5lZCBib3RoIGluIFRocmVhZFNhZmVS
ZWZDb3VudGVkIGFuZCBFdmVudFRhcmdldC4KKyAgICB1c2luZyBUaHJlYWRTYWZlUmVmQ291bnRl
ZDo6cmVmOworICAgIHVzaW5nIFRocmVhZFNhZmVSZWZDb3VudGVkOjpkZXJlZjsKKworICAgIHZv
aWQgc3RhcnRSZW5kZXJpbmcoKTsKKyAgICB2b2lkIGZpbmlzaGVkUmVuZGVyaW5nKGJvb2wgZGlk
UmVuZGVyaW5nKTsKKworICAgIHN0YXRpYyB1bnNpZ25lZCBzX2hhcmR3YXJlQ29udGV4dENvdW50
OworCisgICAgLy8gUmVzdHJpY3Rpb25zIHRvIGNoYW5nZSBkZWZhdWx0IGJlaGF2aW9ycy4KKyAg
ICBlbnVtIEJlaGF2aW9yUmVzdHJpY3Rpb25GbGFncyB7CisgICAgICAgIE5vUmVzdHJpY3Rpb25z
ID0gMCwKKyAgICAgICAgUmVxdWlyZVVzZXJHZXN0dXJlRm9yQXVkaW9TdGFydFJlc3RyaWN0aW9u
ID0gMSA8PCAwLAorICAgICAgICBSZXF1aXJlUGFnZUNvbnNlbnRGb3JBdWRpb1N0YXJ0UmVzdHJp
Y3Rpb24gPSAxIDw8IDEsCisgICAgfTsKKyAgICB0eXBlZGVmIHVuc2lnbmVkIEJlaGF2aW9yUmVz
dHJpY3Rpb25zOworCisgICAgQmVoYXZpb3JSZXN0cmljdGlvbnMgYmVoYXZpb3JSZXN0cmljdGlv
bnMoKSBjb25zdCB7IHJldHVybiBtX3Jlc3RyaWN0aW9uczsgfQorICAgIHZvaWQgYWRkQmVoYXZp
b3JSZXN0cmljdGlvbihCZWhhdmlvclJlc3RyaWN0aW9ucyByZXN0cmljdGlvbikgeyBtX3Jlc3Ry
aWN0aW9ucyB8PSByZXN0cmljdGlvbjsgfQorICAgIHZvaWQgcmVtb3ZlQmVoYXZpb3JSZXN0cmlj
dGlvbihCZWhhdmlvclJlc3RyaWN0aW9ucyByZXN0cmljdGlvbikgeyBtX3Jlc3RyaWN0aW9ucyAm
PSB+cmVzdHJpY3Rpb247IH0KKworICAgIHZvaWQgaXNQbGF5aW5nQXVkaW9EaWRDaGFuZ2UoKTsK
KworICAgIHZvaWQgbm9kZVdpbGxCZWdpblBsYXliYWNrKCk7CisKKyNpZiAhUkVMRUFTRV9MT0df
RElTQUJMRUQKKyAgICBjb25zdCBMb2dnZXImIGxvZ2dlcigpIGNvbnN0IGZpbmFsIHsgcmV0dXJu
IG1fbG9nZ2VyLmdldCgpOyB9CisgICAgY29uc3Qgdm9pZCogbG9nSWRlbnRpZmllcigpIGNvbnN0
IGZpbmFsIHsgcmV0dXJuIG1fbG9nSWRlbnRpZmllcjsgfQorICAgIFdURkxvZ0NoYW5uZWwmIGxv
Z0NoYW5uZWwoKSBjb25zdCBmaW5hbDsKKyAgICBjb25zdCB2b2lkKiBuZXh0QXVkaW9Ob2RlTG9n
SWRlbnRpZmllcigpIHsgcmV0dXJuIGNoaWxkTG9nSWRlbnRpZmllcihtX2xvZ0lkZW50aWZpZXIs
ICsrbV9uZXh0QXVkaW9Ob2RlSWRlbnRpZmllcik7IH0KKyAgICBjb25zdCB2b2lkKiBuZXh0QXVk
aW9QYXJhbWV0ZXJMb2dJZGVudGlmaWVyKCkgeyByZXR1cm4gY2hpbGRMb2dJZGVudGlmaWVyKG1f
bG9nSWRlbnRpZmllciwgKyttX25leHRBdWRpb1BhcmFtZXRlcklkZW50aWZpZXIpOyB9CisjZW5k
aWYKKworICAgIHZvaWQgcG9zdFRhc2soV1RGOjpGdW5jdGlvbjx2b2lkKCk+JiYpOworICAgIGJv
b2wgaXNTdG9wcGVkKCkgY29uc3QgeyByZXR1cm4gbV9pc1N0b3BTY2hlZHVsZWQ7IH0KKyAgICBj
b25zdCBTZWN1cml0eU9yaWdpbiogb3JpZ2luKCkgY29uc3Q7CisgICAgdm9pZCBhZGRDb25zb2xl
TWVzc2FnZShNZXNzYWdlU291cmNlLCBNZXNzYWdlTGV2ZWwsIGNvbnN0IFN0cmluZyYgbWVzc2Fn
ZSk7CisKKyAgICAvLyBFdmVudFRhcmdldAorICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQoKSBjb25zdCBmaW5hbDsKKworcHJvdGVjdGVkOgorICAgIGV4
cGxpY2l0IFdlYktpdEF1ZGlvQ29udGV4dChEb2N1bWVudCYpOworICAgIFdlYktpdEF1ZGlvQ29u
dGV4dChEb2N1bWVudCYsIEF1ZGlvQnVmZmVyKiByZW5kZXJUYXJnZXQpOworCisgICAgc3RhdGlj
IGJvb2wgaXNTYW1wbGVSYXRlUmFuZ2VHb29kKGZsb2F0IHNhbXBsZVJhdGUpOworICAgIHZvaWQg
Y2xlYXJQZW5kaW5nQWN0aXZpdHkoKTsKKyAgICB2b2lkIG1ha2VQZW5kaW5nQWN0aXZpdHkoKTsK
KworcHJpdmF0ZToKKyAgICB2b2lkIGNvbnN0cnVjdENvbW1vbigpOworCisgICAgdm9pZCBsYXp5
SW5pdGlhbGl6ZSgpOworICAgIHZvaWQgdW5pbml0aWFsaXplKCk7CisKKyAgICBib29sIHdpbGxC
ZWdpblBsYXliYWNrKCk7CisgICAgYm9vbCB3aWxsUGF1c2VQbGF5YmFjaygpOworCisgICAgYm9v
bCB1c2VyR2VzdHVyZVJlcXVpcmVkRm9yQXVkaW9TdGFydCgpIGNvbnN0IHsgcmV0dXJuICFpc09m
ZmxpbmVDb250ZXh0KCkgJiYgbV9yZXN0cmljdGlvbnMgJiBSZXF1aXJlVXNlckdlc3R1cmVGb3JB
dWRpb1N0YXJ0UmVzdHJpY3Rpb247IH0KKyAgICBib29sIHBhZ2VDb25zZW50UmVxdWlyZWRGb3JB
dWRpb1N0YXJ0KCkgY29uc3QgeyByZXR1cm4gIWlzT2ZmbGluZUNvbnRleHQoKSAmJiBtX3Jlc3Ry
aWN0aW9ucyAmIFJlcXVpcmVQYWdlQ29uc2VudEZvckF1ZGlvU3RhcnRSZXN0cmljdGlvbjsgfQor
CisgICAgdm9pZCBzZXRTdGF0ZShTdGF0ZSk7CisKKyAgICB2b2lkIGNsZWFyKCk7CisKKyAgICB2
b2lkIHNjaGVkdWxlTm9kZURlbGV0aW9uKCk7CisKKyAgICB2b2lkIG1lZGlhQ2FuU3RhcnQoRG9j
dW1lbnQmKSBvdmVycmlkZTsKKworICAgIC8vIEV2ZW50VGFyZ2V0CisgICAgdm9pZCBkaXNwYXRj
aEV2ZW50KEV2ZW50JikgZmluYWw7CisKKyAgICAvLyBNZWRpYVByb2R1Y2VyCisgICAgTWVkaWFQ
cm9kdWNlcjo6TWVkaWFTdGF0ZUZsYWdzIG1lZGlhU3RhdGUoKSBjb25zdCBvdmVycmlkZTsKKyAg
ICB2b2lkIHBhZ2VNdXRlZFN0YXRlRGlkQ2hhbmdlKCkgb3ZlcnJpZGU7CisKKyAgICAvLyBUaGUg
Y29udGV4dCBpdHNlbGYga2VlcHMgYSByZWZlcmVuY2UgdG8gYWxsIHNvdXJjZSBub2Rlcy4gIFRo
ZSBzb3VyY2Ugbm9kZXMsIHRoZW4gcmVmZXJlbmNlIGFsbCBub2RlcyB0aGV5J3JlIGNvbm5lY3Rl
ZCB0by4KKyAgICAvLyBJbiB0dXJuLCB0aGVzZSBub2RlcyByZWZlcmVuY2UgYWxsIG5vZGVzIHRo
ZXkncmUgY29ubmVjdGVkIHRvLiAgQWxsIG5vZGVzIGFyZSB1bHRpbWF0ZWx5IGNvbm5lY3RlZCB0
byB0aGUgQXVkaW9EZXN0aW5hdGlvbk5vZGUuCisgICAgLy8gV2hlbiB0aGUgY29udGV4dCBkZXJl
ZmVyZW5jZXMgYSBzb3VyY2Ugbm9kZSwgaXQgd2lsbCBiZSBkZWFjdGl2YXRlZCBmcm9tIHRoZSBy
ZW5kZXJpbmcgZ3JhcGggYWxvbmcgd2l0aCBhbGwgb3RoZXIgbm9kZXMgaXQgaXMKKyAgICAvLyB1
bmlxdWVseSBjb25uZWN0ZWQgdG8uICBTZWUgdGhlIEF1ZGlvTm9kZTo6cmVmKCkgYW5kIEF1ZGlv
Tm9kZTo6ZGVyZWYoKSBtZXRob2RzIGZvciBtb3JlIGRldGFpbHMuCisgICAgdm9pZCByZWZOb2Rl
KEF1ZGlvTm9kZSYpOworICAgIHZvaWQgZGVyZWZOb2RlKEF1ZGlvTm9kZSYpOworCisgICAgLy8g
QWN0aXZlRE9NT2JqZWN0IEFQSS4KKyAgICB2b2lkIHN1c3BlbmQoUmVhc29uRm9yU3VzcGVuc2lv
bikgZmluYWw7CisgICAgdm9pZCByZXN1bWUoKSBmaW5hbDsKKyAgICB2b2lkIHN0b3AoKSBvdmVy
cmlkZTsKKyAgICBjb25zdCBjaGFyKiBhY3RpdmVET01PYmplY3ROYW1lKCkgY29uc3Qgb3ZlcnJp
ZGU7CisKKyAgICAvLyBXaGVuIHRoZSBjb250ZXh0IGdvZXMgYXdheSwgdGhlcmUgbWlnaHQgc3Rp
bGwgYmUgc29tZSBzb3VyY2VzIHdoaWNoIGhhdmVuJ3QgZmluaXNoZWQgcGxheWluZy4KKyAgICAv
LyBNYWtlIHN1cmUgdG8gZGVyZWZlcmVuY2UgdGhlbSBoZXJlLgorICAgIHZvaWQgZGVyZWZVbmZp
bmlzaGVkU291cmNlTm9kZXMoKTsKKworICAgIC8vIFBsYXRmb3JtTWVkaWFTZXNzaW9uQ2xpZW50
CisgICAgUGxhdGZvcm1NZWRpYVNlc3Npb246Ok1lZGlhVHlwZSBtZWRpYVR5cGUoKSBjb25zdCBv
dmVycmlkZSB7IHJldHVybiBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6TWVkaWFUeXBlOjpXZWJBdWRp
bzsgfQorICAgIFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpNZWRpYVR5cGUgcHJlc2VudGF0aW9uVHlw
ZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpNZWRpYVR5
cGU6OldlYkF1ZGlvOyB9CisgICAgdm9pZCBtYXlSZXN1bWVQbGF5YmFjayhib29sIHNob3VsZFJl
c3VtZSkgb3ZlcnJpZGU7CisgICAgdm9pZCBzdXNwZW5kUGxheWJhY2soKSBvdmVycmlkZTsKKyAg
ICBib29sIGNhblJlY2VpdmVSZW1vdGVDb250cm9sQ29tbWFuZHMoKSBjb25zdCBvdmVycmlkZSB7
IHJldHVybiBmYWxzZTsgfQorICAgIHZvaWQgZGlkUmVjZWl2ZVJlbW90ZUNvbnRyb2xDb21tYW5k
KFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpSZW1vdGVDb250cm9sQ29tbWFuZFR5cGUsIGNvbnN0IFBs
YXRmb3JtTWVkaWFTZXNzaW9uOjpSZW1vdGVDb21tYW5kQXJndW1lbnQqKSBvdmVycmlkZSB7IH0K
KyAgICBib29sIHN1cHBvcnRzU2Vla2luZygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNl
OyB9CisgICAgYm9vbCBzaG91bGRPdmVycmlkZUJhY2tncm91bmRQbGF5YmFja1Jlc3RyaWN0aW9u
KFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpJbnRlcnJ1cHRpb25UeXBlKSBjb25zdCBvdmVycmlkZSB7
IHJldHVybiBmYWxzZTsgfQorICAgIGJvb2wgY2FuUHJvZHVjZUF1ZGlvKCkgY29uc3QgZmluYWwg
eyByZXR1cm4gdHJ1ZTsgfQorICAgIGJvb2wgaXNTdXNwZW5kZWQoKSBjb25zdCBmaW5hbDsKKwor
ICAgIHZvaWQgdmlzaWJpbGl0eVN0YXRlQ2hhbmdlZCgpIGZpbmFsOworCisgICAgLy8gRXZlbnRU
YXJnZXQKKyAgICB2b2lkIHJlZkV2ZW50VGFyZ2V0KCkgb3ZlcnJpZGUgeyByZWYoKTsgfQorICAg
IHZvaWQgZGVyZWZFdmVudFRhcmdldCgpIG92ZXJyaWRlIHsgZGVyZWYoKTsgfQorCisgICAgdm9p
ZCBoYW5kbGVEaXJ0eUF1ZGlvU3VtbWluZ0p1bmN0aW9ucygpOworICAgIHZvaWQgaGFuZGxlRGly
dHlBdWRpb05vZGVPdXRwdXRzKCk7CisKKyAgICB2b2lkIGFkZFJlYWN0aW9uKFN0YXRlLCBET01Q
cm9taXNlRGVmZXJyZWQ8dm9pZD4mJik7CisgICAgdm9pZCB1cGRhdGVBdXRvbWF0aWNQdWxsTm9k
ZXMoKTsKKworI2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRAorICAgIGNvbnN0IGNoYXIqIGxvZ0Ns
YXNzTmFtZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuICJXZWJLaXRBdWRpb0NvbnRleHQiOyB9CisK
KyAgICBSZWY8TG9nZ2VyPiBtX2xvZ2dlcjsKKyAgICBjb25zdCB2b2lkKiBtX2xvZ0lkZW50aWZp
ZXI7CisgICAgdWludDY0X3QgbV9uZXh0QXVkaW9Ob2RlSWRlbnRpZmllciB7IDAgfTsKKyAgICB1
aW50NjRfdCBtX25leHRBdWRpb1BhcmFtZXRlcklkZW50aWZpZXIgeyAwIH07CisjZW5kaWYKKwor
ICAgIC8vIE9ubHkgYWNjZXNzZWQgaW4gdGhlIGF1ZGlvIHRocmVhZC4KKyAgICBWZWN0b3I8QXVk
aW9Ob2RlKj4gbV9maW5pc2hlZE5vZGVzOworCisgICAgLy8gV2UgZG9uJ3QgdXNlIFJlZlB0cjxB
dWRpb05vZGU+IGhlcmUgYmVjYXVzZSBBdWRpb05vZGUgaGFzIGEgbW9yZSBjb21wbGV4IHJlZigp
IC8gZGVyZWYoKSBpbXBsZW1lbnRhdGlvbgorICAgIC8vIHdpdGggYW4gb3B0aW9uYWwgYXJndW1l
bnQgZm9yIHJlZlR5cGUuICBXZSBuZWVkIHRvIHVzZSB0aGUgc3BlY2lhbCByZWZUeXBlOiBSZWZU
eXBlQ29ubmVjdGlvbgorICAgIC8vIEVpdGhlciBhY2Nlc3NlZCB3aGVuIHRoZSBncmFwaCBsb2Nr
IGlzIGhlbGQsIG9yIG9uIHRoZSBtYWluIHRocmVhZCB3aGVuIHRoZSBhdWRpbyB0aHJlYWQgaGFz
IGZpbmlzaGVkLgorICAgIFZlY3RvcjxBdWRpb05vZGUqPiBtX3JlZmVyZW5jZWROb2RlczsKKwor
ICAgIC8vIEFjY3VtdWxhdGUgbm9kZXMgd2hpY2ggbmVlZCB0byBiZSBkZWxldGVkIGhlcmUuCisg
ICAgLy8gVGhpcyBpcyBjb3BpZWQgdG8gbV9ub2Rlc1RvRGVsZXRlIGF0IHRoZSBlbmQgb2YgYSBy
ZW5kZXIgY3ljbGUgaW4gaGFuZGxlUG9zdFJlbmRlclRhc2tzKCksIHdoZXJlIHdlJ3JlIGFzc3Vy
ZWQgb2YgYSBzdGFibGUgZ3JhcGgKKyAgICAvLyBzdGF0ZSB3aGljaCB3aWxsIGhhdmUgbm8gcmVm
ZXJlbmNlcyB0byBhbnkgb2YgdGhlIG5vZGVzIGluIG1fbm9kZXNUb0RlbGV0ZSBvbmNlIHRoZSBj
b250ZXh0IGxvY2sgaXMgcmVsZWFzZWQKKyAgICAvLyAod2hlbiBoYW5kbGVQb3N0UmVuZGVyVGFz
a3MoKSBoYXMgY29tcGxldGVkKS4KKyAgICBWZWN0b3I8QXVkaW9Ob2RlKj4gbV9ub2Rlc01hcmtl
ZEZvckRlbGV0aW9uOworCisgICAgLy8gVGhleSB3aWxsIGJlIHNjaGVkdWxlZCBmb3IgZGVsZXRp
b24gKG9uIHRoZSBtYWluIHRocmVhZCkgYXQgdGhlIGVuZCBvZiBhIHJlbmRlciBjeWNsZSAoaW4g
cmVhbHRpbWUgdGhyZWFkKS4KKyAgICBWZWN0b3I8QXVkaW9Ob2RlKj4gbV9ub2Rlc1RvRGVsZXRl
OworCisgICAgYm9vbCBtX2lzRGVsZXRpb25TY2hlZHVsZWQgeyBmYWxzZSB9OworICAgIGJvb2wg
bV9pc1N0b3BTY2hlZHVsZWQgeyBmYWxzZSB9OworICAgIGJvb2wgbV9pc0luaXRpYWxpemVkIHsg
ZmFsc2UgfTsKKyAgICBib29sIG1faXNBdWRpb1RocmVhZEZpbmlzaGVkIHsgZmFsc2UgfTsKKyAg
ICBib29sIG1fYXV0b21hdGljUHVsbE5vZGVzTmVlZFVwZGF0aW5nIHsgZmFsc2UgfTsKKyAgICBi
b29sIG1faXNPZmZsaW5lQ29udGV4dCB7IGZhbHNlIH07CisKKyAgICAvLyBPbmx5IGFjY2Vzc2Vk
IHdoZW4gdGhlIGdyYXBoIGxvY2sgaXMgaGVsZC4KKyAgICBIYXNoU2V0PEF1ZGlvU3VtbWluZ0p1
bmN0aW9uKj4gbV9kaXJ0eVN1bW1pbmdKdW5jdGlvbnM7CisgICAgSGFzaFNldDxBdWRpb05vZGVP
dXRwdXQqPiBtX2RpcnR5QXVkaW9Ob2RlT3V0cHV0czsKKworICAgIC8vIEZvciB0aGUgc2FrZSBv
ZiB0aHJlYWQgc2FmZXR5LCB3ZSBtYWludGFpbiBhIHNlcGVyYXRlIFZlY3RvciBvZiBhdXRvbWF0
aWMgcHVsbCBub2RlcyBmb3IgcmVuZGVyaW5nIGluIG1fcmVuZGVyaW5nQXV0b21hdGljUHVsbE5v
ZGVzLgorICAgIC8vIEl0IHdpbGwgYmUgY29waWVkIGZyb20gbV9hdXRvbWF0aWNQdWxsTm9kZXMg
YnkgdXBkYXRlQXV0b21hdGljUHVsbE5vZGVzKCkgYXQgdGhlIHZlcnkgc3RhcnQgb3IgZW5kIG9m
IHRoZSByZW5kZXJpbmcgcXVhbnR1bS4KKyAgICBIYXNoU2V0PEF1ZGlvTm9kZSo+IG1fYXV0b21h
dGljUHVsbE5vZGVzOworICAgIFZlY3RvcjxBdWRpb05vZGUqPiBtX3JlbmRlcmluZ0F1dG9tYXRp
Y1B1bGxOb2RlczsKKyAgICAvLyBPbmx5IGFjY2Vzc2VkIGluIHRoZSBhdWRpbyB0aHJlYWQuCisg
ICAgVmVjdG9yPEF1ZGlvTm9kZSo+IG1fZGVmZXJyZWRGaW5pc2hEZXJlZkxpc3Q7CisgICAgVmVj
dG9yPFZlY3RvcjxET01Qcm9taXNlRGVmZXJyZWQ8dm9pZD4+PiBtX3N0YXRlUmVhY3Rpb25zOwor
CisgICAgc3RkOjp1bmlxdWVfcHRyPFBsYXRmb3JtTWVkaWFTZXNzaW9uPiBtX21lZGlhU2Vzc2lv
bjsKKyAgICBVbmlxdWVSZWY8TWFpblRocmVhZEdlbmVyaWNFdmVudFF1ZXVlPiBtX2V2ZW50UXVl
dWU7CisKKyAgICBSZWZQdHI8QXVkaW9CdWZmZXI+IG1fcmVuZGVyVGFyZ2V0OworICAgIFJlZlB0
cjxBdWRpb0Rlc3RpbmF0aW9uTm9kZT4gbV9kZXN0aW5hdGlvbk5vZGU7CisgICAgUmVmUHRyPEF1
ZGlvTGlzdGVuZXI+IG1fbGlzdGVuZXI7CisKKyAgICB1bnNpZ25lZCBtX2Nvbm5lY3Rpb25Db3Vu
dCB7IDAgfTsKKworICAgIC8vIEdyYXBoIGxvY2tpbmcuCisgICAgTG9jayBtX2NvbnRleHRHcmFw
aE11dGV4OworICAgIC8vIEZJWE1FOiBVc2luZyB2b2xhdGlsZSBzZWVtcyBpbmNvcnJlY3QuCisg
ICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4MDMzMgorICAg
IFRocmVhZCogdm9sYXRpbGUgbV9hdWRpb1RocmVhZCB7IG51bGxwdHIgfTsKKyAgICBUaHJlYWQq
IHZvbGF0aWxlIG1fZ3JhcGhPd25lclRocmVhZCB7IG51bGxwdHIgfTsgLy8gaWYgdGhlIGxvY2sg
aXMgaGVsZCB0aGVuIHRoaXMgaXMgdGhlIHRocmVhZCB3aGljaCBvd25zIGl0LCBvdGhlcndpc2Ug
PT0gbnVsbHB0ci4KKworICAgIHN0ZDo6dW5pcXVlX3B0cjxBc3luY0F1ZGlvRGVjb2Rlcj4gbV9h
dWRpb0RlY29kZXI7CisKKyAgICAvLyBUaGlzIGlzIGNvbnNpZGVyaW5nIDMyIGlzIGxhcmdlIGVu
b3VnaCBmb3IgbXVsdGlwbGUgY2hhbm5lbHMgYXVkaW8uCisgICAgLy8gSXQgaXMgc29tZXdoYXQg
YXJiaXRyYXJ5IGFuZCBjb3VsZCBiZSBpbmNyZWFzZWQgaWYgbmVjZXNzYXJ5LgorICAgIGVudW0g
eyBNYXhOdW1iZXJPZkNoYW5uZWxzID0gMzIgfTsKKworICAgIC8vIE51bWJlciBvZiBBdWRpb0J1
ZmZlclNvdXJjZU5vZGVzIHRoYXQgYXJlIGFjdGl2ZSAocGxheWluZykuCisgICAgc3RkOjphdG9t
aWM8aW50PiBtX2FjdGl2ZVNvdXJjZUNvdW50IHsgMCB9OworCisgICAgQmVoYXZpb3JSZXN0cmlj
dGlvbnMgbV9yZXN0cmljdGlvbnMgeyBOb1Jlc3RyaWN0aW9ucyB9OworCisgICAgU3RhdGUgbV9z
dGF0ZSB7IFN0YXRlOjpTdXNwZW5kZWQgfTsKKyAgICBSZWZQdHI8UGVuZGluZ0FjdGl2aXR5PFdl
YktpdEF1ZGlvQ29udGV4dD4+IG1fcGVuZGluZ0FjdGl2aXR5OworfTsKKworLy8gRklYTUU6IEZp
bmQgb3V0IHdoeSB0aGVzZSA9PS8hPSBmdW5jdGlvbnMgYXJlIG5lZWRlZCBhbmQgcmVtb3ZlIHRo
ZW0gaWYgcG9zc2libGUuCisKK2lubGluZSBib29sIG9wZXJhdG9yPT0oY29uc3QgV2ViS2l0QXVk
aW9Db250ZXh0JiBsaHMsIGNvbnN0IFdlYktpdEF1ZGlvQ29udGV4dCYgcmhzKQoreworICAgIHJl
dHVybiAmbGhzID09ICZyaHM7Cit9CisKK2lubGluZSBib29sIG9wZXJhdG9yIT0oY29uc3QgV2Vi
S2l0QXVkaW9Db250ZXh0JiBsaHMsIGNvbnN0IFdlYktpdEF1ZGlvQ29udGV4dCYgcmhzKQorewor
ICAgIHJldHVybiAmbGhzICE9ICZyaHM7Cit9CisKK2lubGluZSBBdWRpb0NvbnRleHRTdGF0ZSBX
ZWJLaXRBdWRpb0NvbnRleHQ6OnN0YXRlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9zdGF0ZTsK
K30KKworfSAvLyBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmF1ZGlvL1dlYktpdEF1ZGlvQ29udGV4dC5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmF1ZGlvL1dlYktpdEF1ZGlvQ29udGV4dC5pZGwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAuLmI3NGVmMzUxODEzCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJhdWRpby9XZWJLaXRBdWRpb0NvbnRleHQuaWRsCkBAIC0wLDAgKzEsOTQg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAsIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAq
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04KKyAqIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUwor
ICogU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworWworICAgIEFjdGl2ZURPTU9iamVjdCwKKyAgICBDb25kaXRpb25hbD1X
RUJfQVVESU8sCisgICAgQ29uc3RydWN0b3IsCisgICAgQ29uc3RydWN0b3JDYWxsV2l0aD1Eb2N1
bWVudCwKKyAgICBDb25zdHJ1Y3Rvck1heVRocm93RXhjZXB0aW9uLAorICAgIEVuYWJsZWRCeVNl
dHRpbmc9V2ViQXVkaW8sCisgICAgRXhwb3J0TWFjcm89V0VCQ09SRV9FWFBPUlQsCisgICAgSW50
ZXJmYWNlTmFtZT13ZWJraXRBdWRpb0NvbnRleHQsCitdIGludGVyZmFjZSBXZWJLaXRBdWRpb0Nv
bnRleHQgOiBFdmVudFRhcmdldCB7CisgICAgLy8gQWxsIHJlbmRlcmVkIGF1ZGlvIHVsdGltYXRl
bHkgY29ubmVjdHMgdG8gZGVzdGluYXRpb24sIHdoaWNoIHJlcHJlc2VudHMgdGhlIGF1ZGlvIGhh
cmR3YXJlLgorICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBBdWRpb0Rlc3RpbmF0aW9uTm9kZSBkZXN0
aW5hdGlvbjsKKworICAgIC8vIEFsbCBzY2hlZHVsZWQgdGltZXMgYXJlIHJlbGF0aXZlIHRvIHRo
aXMgdGltZSBpbiBzZWNvbmRzLgorICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSB1bnJlc3RyaWN0ZWQg
ZG91YmxlIGN1cnJlbnRUaW1lOworCisgICAgLy8gQWxsIEF1ZGlvTm9kZXMgaW4gdGhlIGNvbnRl
eHQgcnVuIGF0IHRoaXMgc2FtcGxlLXJhdGUgKHNhbXBsZS1mcmFtZXMgcGVyIHNlY29uZCkuCisg
ICAgcmVhZG9ubHkgYXR0cmlidXRlIHVucmVzdHJpY3RlZCBmbG9hdCBzYW1wbGVSYXRlOworCisg
ICAgLy8gQWxsIHBhbm5pbmcgaXMgcmVsYXRpdmUgdG8gdGhpcyBsaXN0ZW5lci4KKyAgICByZWFk
b25seSBhdHRyaWJ1dGUgQXVkaW9MaXN0ZW5lciBsaXN0ZW5lcjsKKworICAgIFtJbXBsZW1lbnRl
ZEFzPXN1c3BlbmRSZW5kZXJpbmddIFByb21pc2U8dm9pZD4gc3VzcGVuZCgpOworICAgIFtJbXBs
ZW1lbnRlZEFzPXJlc3VtZVJlbmRlcmluZ10gUHJvbWlzZTx2b2lkPiByZXN1bWUoKTsKKyAgICBQ
cm9taXNlPHZvaWQ+IGNsb3NlKCk7CisKKyAgICByZWFkb25seSBhdHRyaWJ1dGUgQXVkaW9Db250
ZXh0U3RhdGUgc3RhdGU7CisgICAgYXR0cmlidXRlIEV2ZW50SGFuZGxlciBvbnN0YXRlY2hhbmdl
OworCisgICAgLy8gTnVtYmVyIG9mIEF1ZGlvQnVmZmVyU291cmNlTm9kZXMgdGhhdCBhcmUgY3Vy
cmVudGx5IHBsYXlpbmcuCisgICAgcmVhZG9ubHkgYXR0cmlidXRlIHVuc2lnbmVkIGxvbmcgYWN0
aXZlU291cmNlQ291bnQ7CisKKyAgICBbTWF5VGhyb3dFeGNlcHRpb25dIEF1ZGlvQnVmZmVyIGNy
ZWF0ZUJ1ZmZlcih1bnNpZ25lZCBsb25nIG51bWJlck9mQ2hhbm5lbHMsIHVuc2lnbmVkIGxvbmcg
bnVtYmVyT2ZGcmFtZXMsIHVucmVzdHJpY3RlZCBmbG9hdCBzYW1wbGVSYXRlKTsKKyAgICBbTWF5
VGhyb3dFeGNlcHRpb25dIEF1ZGlvQnVmZmVyIGNyZWF0ZUJ1ZmZlcihBcnJheUJ1ZmZlciBidWZm
ZXIsIGJvb2xlYW4gbWl4VG9Nb25vKTsKKworICAgIC8vIEFzeW5jaHJvbm91cyBhdWRpbyBmaWxl
IGRhdGEgZGVjb2RpbmcuCisgICAgLy8gRklYTUU6IHN1Y2Nlc3NDYWxsYmFjayBzaG91bGQgYmUg
b3B0aW9uYWwgYW5kIHRoZSBjYWxsYmFja3Mgc2hvdWxkIG5vdCBiZSBudWxsYWJsZS4gVGhpcyBz
aG91bGQgYWxzbyByZXR1cm4gYSBQcm9taXNlLgorICAgIHZvaWQgZGVjb2RlQXVkaW9EYXRhKEFy
cmF5QnVmZmVyIGF1ZGlvRGF0YSwgQXVkaW9CdWZmZXJDYWxsYmFjaz8gc3VjY2Vzc0NhbGxiYWNr
LCBvcHRpb25hbCBBdWRpb0J1ZmZlckNhbGxiYWNrPyBlcnJvckNhbGxiYWNrKTsKKworICAgIC8v
IFNvdXJjZXMKKyAgICBbTWF5VGhyb3dFeGNlcHRpb25dIEF1ZGlvQnVmZmVyU291cmNlTm9kZSBj
cmVhdGVCdWZmZXJTb3VyY2UoKTsKKworICAgIFtDb25kaXRpb25hbD1WSURFTywgTWF5VGhyb3dF
eGNlcHRpb25dIE1lZGlhRWxlbWVudEF1ZGlvU291cmNlTm9kZSBjcmVhdGVNZWRpYUVsZW1lbnRT
b3VyY2UoSFRNTE1lZGlhRWxlbWVudCBtZWRpYUVsZW1lbnQpOworCisgICAgW0NvbmRpdGlvbmFs
PU1FRElBX1NUUkVBTSwgTWF5VGhyb3dFeGNlcHRpb25dIE1lZGlhU3RyZWFtQXVkaW9Tb3VyY2VO
b2RlIGNyZWF0ZU1lZGlhU3RyZWFtU291cmNlKE1lZGlhU3RyZWFtIG1lZGlhU3RyZWFtKTsKKyAg
ICBbQ29uZGl0aW9uYWw9TUVESUFfU1RSRUFNLCBNYXlUaHJvd0V4Y2VwdGlvbl0gTWVkaWFTdHJl
YW1BdWRpb0Rlc3RpbmF0aW9uTm9kZSBjcmVhdGVNZWRpYVN0cmVhbURlc3RpbmF0aW9uKCk7CisK
KyAgICAvLyBQcm9jZXNzaW5nIG5vZGVzCisgICAgW01heVRocm93RXhjZXB0aW9uXSBHYWluTm9k
ZSBjcmVhdGVHYWluKCk7CisgICAgW01heVRocm93RXhjZXB0aW9uXSBEZWxheU5vZGUgY3JlYXRl
RGVsYXkob3B0aW9uYWwgdW5yZXN0cmljdGVkIGRvdWJsZSBtYXhEZWxheVRpbWUgPSAxKTsKKyAg
ICBbTWF5VGhyb3dFeGNlcHRpb25dIEJpcXVhZEZpbHRlck5vZGUgY3JlYXRlQmlxdWFkRmlsdGVy
KCk7CisgICAgW01heVRocm93RXhjZXB0aW9uXSBXYXZlU2hhcGVyTm9kZSBjcmVhdGVXYXZlU2hh
cGVyKCk7CisgICAgW01heVRocm93RXhjZXB0aW9uXSBQYW5uZXJOb2RlIGNyZWF0ZVBhbm5lcigp
OworICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gQ29udm9sdmVyTm9kZSBjcmVhdGVDb252b2x2ZXIo
KTsKKyAgICBbTWF5VGhyb3dFeGNlcHRpb25dIER5bmFtaWNzQ29tcHJlc3Nvck5vZGUgY3JlYXRl
RHluYW1pY3NDb21wcmVzc29yKCk7CisgICAgW01heVRocm93RXhjZXB0aW9uXSBBbmFseXNlck5v
ZGUgY3JlYXRlQW5hbHlzZXIoKTsKKyAgICBbTWF5VGhyb3dFeGNlcHRpb25dIFNjcmlwdFByb2Nl
c3Nvck5vZGUgY3JlYXRlU2NyaXB0UHJvY2Vzc29yKG9wdGlvbmFsIHVuc2lnbmVkIGxvbmcgYnVm
ZmVyU2l6ZSA9IDAsIG9wdGlvbmFsIHVuc2lnbmVkIGxvbmcgbnVtYmVyT2ZJbnB1dENoYW5uZWxz
ID0gMiwgb3B0aW9uYWwgdW5zaWduZWQgbG9uZyBudW1iZXJPZk91dHB1dENoYW5uZWxzID0gMik7
CisgICAgW01heVRocm93RXhjZXB0aW9uXSBPc2NpbGxhdG9yTm9kZSBjcmVhdGVPc2NpbGxhdG9y
KCk7CisgICAgW01heVRocm93RXhjZXB0aW9uXSBQZXJpb2RpY1dhdmUgY3JlYXRlUGVyaW9kaWNX
YXZlKEZsb2F0MzJBcnJheSByZWFsLCBGbG9hdDMyQXJyYXkgaW1hZyk7CisKKyAgICAvLyBDaGFu
bmVsIHNwbGl0dGluZyBhbmQgbWVyZ2luZworICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gQ2hhbm5l
bFNwbGl0dGVyTm9kZSBjcmVhdGVDaGFubmVsU3BsaXR0ZXIob3B0aW9uYWwgdW5zaWduZWQgbG9u
ZyBudW1iZXJPZk91dHB1dHMgPSA2KTsKKyAgICBbTWF5VGhyb3dFeGNlcHRpb25dIENoYW5uZWxN
ZXJnZXJOb2RlIGNyZWF0ZUNoYW5uZWxNZXJnZXIob3B0aW9uYWwgdW5zaWduZWQgbG9uZyBudW1i
ZXJPZklucHV0cyA9IDYpOworCisgICAgLy8gT2ZmbGluZSByZW5kZXJpbmcKKyAgICAvLyB2b2lk
IHByZXBhcmVPZmZsaW5lQnVmZmVyUmVuZGVyaW5nKHVuc2lnbmVkIGxvbmcgbnVtYmVyT2ZDaGFu
bmVscywgdW5zaWduZWQgbG9uZyBudW1iZXJPZkZyYW1lcywgdW5yZXN0cmljdGVkIGZsb2F0IHNh
bXBsZVJhdGUpOworICAgIGF0dHJpYnV0ZSBFdmVudEhhbmRsZXIgb25jb21wbGV0ZTsKKyAgICB2
b2lkIHN0YXJ0UmVuZGVyaW5nKCk7Cit9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJhdWRpby9XZWJLaXRBdWRpb1Bhbm5lck5vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJhdWRpby9XZWJLaXRBdWRpb1Bhbm5lck5vZGUuY3BwCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi5mM2U3YzE2ZDg4NgotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vV2ViS2l0QXVkaW9QYW5uZXJOb2RlLmNw
cApAQCAtMCwwICsxLDM3NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCwgR29vZ2xlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycg
QU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OCisgKiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMKKyAqIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNp
bmNsdWRlICJXZWJLaXRBdWRpb1Bhbm5lck5vZGUuaCIKKworI2lmIEVOQUJMRShXRUJfQVVESU8p
CisKKyNpbmNsdWRlICJBdWRpb0J1ZmZlclNvdXJjZU5vZGUuaCIKKyNpbmNsdWRlICJBdWRpb0J1
cy5oIgorI2luY2x1ZGUgIkF1ZGlvQ29udGV4dC5oIgorI2luY2x1ZGUgIkF1ZGlvTm9kZUlucHV0
LmgiCisjaW5jbHVkZSAiQXVkaW9Ob2RlT3V0cHV0LmgiCisjaW5jbHVkZSAiSFJURkRhdGFiYXNl
TG9hZGVyLmgiCisjaW5jbHVkZSAiSFJURlBhbm5lci5oIgorI2luY2x1ZGUgIlNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQuaCIKKyNpbmNsdWRlIDx3dGYvSXNvTWFsbG9jSW5saW5lcy5oPgorI2luY2x1
ZGUgPHd0Zi9NYXRoRXh0cmFzLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworV1RGX01BS0Vf
SVNPX0FMTE9DQVRFRF9JTVBMKFdlYktpdEF1ZGlvUGFubmVyTm9kZSk7CisKK3N0YXRpYyB2b2lk
IGZpeE5BTnMoZG91YmxlICZ4KQoreworICAgIGlmIChzdGQ6OmlzbmFuKHgpIHx8IHN0ZDo6aXNp
bmYoeCkpCisgICAgICAgIHggPSAwLjA7Cit9CisKK1dlYktpdEF1ZGlvUGFubmVyTm9kZTo6UGFu
bmVyTm9kZShBdWRpb0NvbnRleHQmIGNvbnRleHQsIGZsb2F0IHNhbXBsZVJhdGUpCisgICAgOiBB
dWRpb05vZGUoY29udGV4dCwgc2FtcGxlUmF0ZSkKKyAgICAsIG1fcGFubmluZ01vZGVsKFBhbm5p
bmdNb2RlbFR5cGU6OkhSVEYpCisgICAgLCBtX2xhc3RHYWluKC0xLjApCisgICAgLCBtX3Bvc2l0
aW9uWChBdWRpb1BhcmFtOjpjcmVhdGUoY29udGV4dCwgInBvc2l0aW9uWCJfcywgMCwgLUZMVF9N
QVgsIEZMVF9NQVgpKQorICAgICwgbV9wb3NpdGlvblkoQXVkaW9QYXJhbTo6Y3JlYXRlKGNvbnRl
eHQsICJwb3NpdGlvblkiX3MsIDAsIC1GTFRfTUFYLCBGTFRfTUFYKSkKKyAgICAsIG1fcG9zaXRp
b25aKEF1ZGlvUGFyYW06OmNyZWF0ZShjb250ZXh0LCAicG9zaXRpb25aIl9zLCAwLCAtRkxUX01B
WCwgRkxUX01BWCkpCisgICAgLCBtX2Nvbm5lY3Rpb25Db3VudCgwKQoreworICAgIHNldE5vZGVU
eXBlKE5vZGVUeXBlUGFubmVyKTsKKworICAgIC8vIExvYWQgdGhlIEhSVEYgZGF0YWJhc2UgYXN5
bmNocm9ub3VzbHkgc28gd2UgZG9uJ3QgYmxvY2sgdGhlIEphdmFzY3JpcHQgdGhyZWFkIHdoaWxl
IGNyZWF0aW5nIHRoZSBIUlRGIGRhdGFiYXNlLgorICAgIG1faHJ0ZkRhdGFiYXNlTG9hZGVyID0g
SFJURkRhdGFiYXNlTG9hZGVyOjpjcmVhdGVBbmRMb2FkQXN5bmNocm9ub3VzbHlJZk5lY2Vzc2Fy
eShjb250ZXh0LnNhbXBsZVJhdGUoKSk7CisKKyAgICBhZGRJbnB1dChtYWtlVW5pcXVlPEF1ZGlv
Tm9kZUlucHV0Pih0aGlzKSk7CisgICAgYWRkT3V0cHV0KG1ha2VVbmlxdWU8QXVkaW9Ob2RlT3V0
cHV0Pih0aGlzLCAyKSk7CisKKyAgICAvLyBOb2RlLXNwZWNpZmljIGRlZmF1bHQgbWl4aW5nIHJ1
bGVzLgorICAgIG1fY2hhbm5lbENvdW50ID0gMjsKKyAgICBtX2NoYW5uZWxDb3VudE1vZGUgPSBD
bGFtcGVkTWF4OworICAgIG1fY2hhbm5lbEludGVycHJldGF0aW9uID0gQXVkaW9CdXM6OlNwZWFr
ZXJzOworCisgICAgbV9kaXN0YW5jZUdhaW4gPSBBdWRpb1BhcmFtOjpjcmVhdGUoY29udGV4dCwg
ImRpc3RhbmNlR2FpbiIsIDEuMCwgMC4wLCAxLjApOworICAgIG1fY29uZUdhaW4gPSBBdWRpb1Bh
cmFtOjpjcmVhdGUoY29udGV4dCwgImNvbmVHYWluIiwgMS4wLCAwLjAsIDEuMCk7CisKKyAgICBt
X29yaWVudGF0aW9uID0gRmxvYXRQb2ludDNEKDEsIDAsIDApOworICAgIG1fdmVsb2NpdHkgPSBG
bG9hdFBvaW50M0QoMCwgMCwgMCk7CisKKyAgICBpbml0aWFsaXplKCk7Cit9CisKK1dlYktpdEF1
ZGlvUGFubmVyTm9kZTo6flBhbm5lck5vZGUoKQoreworICAgIHVuaW5pdGlhbGl6ZSgpOworfQor
Cit2b2lkIFdlYktpdEF1ZGlvUGFubmVyTm9kZTo6cHVsbElucHV0cyhzaXplX3QgZnJhbWVzVG9Q
cm9jZXNzKQoreworICAgIC8vIFdlIG92ZXJyaWRlIHB1bGxJbnB1dHMoKSwgc28gd2UgY2FuIGRl
dGVjdCBuZXcgQXVkaW9Tb3VyY2VOb2RlcyB3aGljaCBoYXZlIGNvbm5lY3RlZCB0byB1cyB3aGVu
IG5ldyBjb25uZWN0aW9ucyBhcmUgbWFkZS4KKyAgICAvLyBUaGVzZSBBdWRpb1NvdXJjZU5vZGVz
IG5lZWQgdG8gYmUgbWFkZSBhd2FyZSBvZiBvdXIgZXhpc3RlbmNlIGluIG9yZGVyIHRvIGhhbmRs
ZSBkb3BwbGVyIHNoaWZ0IHBpdGNoIGNoYW5nZXMuCisgICAgaWYgKG1fY29ubmVjdGlvbkNvdW50
ICE9IGNvbnRleHQoKS5jb25uZWN0aW9uQ291bnQoKSkgeworICAgICAgICBtX2Nvbm5lY3Rpb25D
b3VudCA9IGNvbnRleHQoKS5jb25uZWN0aW9uQ291bnQoKTsKKworICAgICAgICAvLyBSZWN1cnNp
dmVseSBnbyB0aHJvdWdoIGFsbCBub2RlcyBjb25uZWN0ZWQgdG8gdXMuCisgICAgICAgIEhhc2hT
ZXQ8QXVkaW9Ob2RlKj4gdmlzaXRlZE5vZGVzOworICAgICAgICBub3RpZnlBdWRpb1NvdXJjZXND
b25uZWN0ZWRUb05vZGUodGhpcywgdmlzaXRlZE5vZGVzKTsKKyAgICB9CisKKyAgICBBdWRpb05v
ZGU6OnB1bGxJbnB1dHMoZnJhbWVzVG9Qcm9jZXNzKTsKK30KKwordm9pZCBXZWJLaXRBdWRpb1Bh
bm5lck5vZGU6OnByb2Nlc3Moc2l6ZV90IGZyYW1lc1RvUHJvY2VzcykKK3sKKyAgICBBdWRpb0J1
cyogZGVzdGluYXRpb24gPSBvdXRwdXQoMCktPmJ1cygpOworCisgICAgaWYgKCFpc0luaXRpYWxp
emVkKCkgfHwgIWlucHV0KDApLT5pc0Nvbm5lY3RlZCgpIHx8ICFtX3Bhbm5lci5nZXQoKSkgewor
ICAgICAgICBkZXN0aW5hdGlvbi0+emVybygpOworICAgICAgICByZXR1cm47CisgICAgfQorCisg
ICAgQXVkaW9CdXMqIHNvdXJjZSA9IGlucHV0KDApLT5idXMoKTsKKyAgICBpZiAoIXNvdXJjZSkg
eworICAgICAgICBkZXN0aW5hdGlvbi0+emVybygpOworICAgICAgICByZXR1cm47CisgICAgfQor
CisgICAgLy8gSFJURkRhdGFiYXNlIHNob3VsZCBiZSBsb2FkZWQgYmVmb3JlIHByb2NlZWRpbmcg
Zm9yIG9mZmxpbmUgYXVkaW8gY29udGV4dCB3aGVuIHBhbm5pbmdNb2RlbCgpIGlzICJIUlRGIi4K
KyAgICBpZiAocGFubmluZ01vZGVsKCkgPT0gUGFubmluZ01vZGVsVHlwZTo6SFJURiAmJiAhbV9o
cnRmRGF0YWJhc2VMb2FkZXItPmlzTG9hZGVkKCkpIHsKKyAgICAgICAgaWYgKGNvbnRleHQoKS5p
c09mZmxpbmVDb250ZXh0KCkpCisgICAgICAgICAgICBtX2hydGZEYXRhYmFzZUxvYWRlci0+d2Fp
dEZvckxvYWRlclRocmVhZENvbXBsZXRpb24oKTsKKyAgICAgICAgZWxzZSB7CisgICAgICAgICAg
ICBkZXN0aW5hdGlvbi0+emVybygpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9Cisg
ICAgfQorCisgICAgLy8gVGhlIGF1ZGlvIHRocmVhZCBjYW4ndCBibG9jayBvbiB0aGlzIGxvY2ss
IHNvIHdlIHVzZSBzdGQ6OnRyeV90b19sb2NrIGluc3RlYWQuCisgICAgc3RkOjp1bmlxdWVfbG9j
azxMb2NrPiBsb2NrKG1fcGFubmVyTXV0ZXgsIHN0ZDo6dHJ5X3RvX2xvY2spOworICAgIGlmICgh
bG9jay5vd25zX2xvY2soKSkgeworICAgICAgICAvLyBUb28gYmFkIC0gVGhlIHRyeV9sb2NrKCkg
ZmFpbGVkLiBXZSBtdXN0IGJlIGluIHRoZSBtaWRkbGUgb2YgY2hhbmdpbmcgdGhlIHBhbm5lci4K
KyAgICAgICAgZGVzdGluYXRpb24tPnplcm8oKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKwor
ICAgIC8vIEFwcGx5IHRoZSBwYW5uaW5nIGVmZmVjdC4KKyAgICBkb3VibGUgYXppbXV0aDsKKyAg
ICBkb3VibGUgZWxldmF0aW9uOworICAgIGdldEF6aW11dGhFbGV2YXRpb24oJmF6aW11dGgsICZl
bGV2YXRpb24pOworICAgIG1fcGFubmVyLT5wYW4oYXppbXV0aCwgZWxldmF0aW9uLCBzb3VyY2Us
IGRlc3RpbmF0aW9uLCBmcmFtZXNUb1Byb2Nlc3MpOworCisgICAgLy8gR2V0IHRoZSBkaXN0YW5j
ZSBhbmQgY29uZSBnYWluLgorICAgIGRvdWJsZSB0b3RhbEdhaW4gPSBkaXN0YW5jZUNvbmVHYWlu
KCk7CisKKyAgICAvLyBTbmFwIHRvIGRlc2lyZWQgZ2FpbiBhdCB0aGUgYmVnaW5uaW5nLgorICAg
IGlmIChtX2xhc3RHYWluID09IC0xLjApCisgICAgICAgIG1fbGFzdEdhaW4gPSB0b3RhbEdhaW47
CisKKyAgICAvLyBBcHBseSBnYWluIGluLXBsYWNlIHdpdGggZGUtemlwcGVyaW5nLgorICAgIGRl
c3RpbmF0aW9uLT5jb3B5V2l0aEdhaW5Gcm9tKCpkZXN0aW5hdGlvbiwgJm1fbGFzdEdhaW4sIHRv
dGFsR2Fpbik7Cit9CisKK3ZvaWQgV2ViS2l0QXVkaW9QYW5uZXJOb2RlOjpyZXNldCgpCit7Cisg
ICAgbV9sYXN0R2FpbiA9IC0xLjA7IC8vIGZvcmNlIHRvIHNuYXAgdG8gaW5pdGlhbCBnYWluCisg
ICAgaWYgKG1fcGFubmVyLmdldCgpKQorICAgICAgICBtX3Bhbm5lci0+cmVzZXQoKTsKK30KKwor
dm9pZCBXZWJLaXRBdWRpb1Bhbm5lck5vZGU6OmluaXRpYWxpemUoKQoreworICAgIGlmIChpc0lu
aXRpYWxpemVkKCkpCisgICAgICAgIHJldHVybjsKKworICAgIG1fcGFubmVyID0gUGFubmVyOjpj
cmVhdGUobV9wYW5uaW5nTW9kZWwsIHNhbXBsZVJhdGUoKSwgbV9ocnRmRGF0YWJhc2VMb2FkZXIu
Z2V0KCkpOworCisgICAgQXVkaW9Ob2RlOjppbml0aWFsaXplKCk7Cit9CisKK3ZvaWQgV2ViS2l0
QXVkaW9QYW5uZXJOb2RlOjp1bmluaXRpYWxpemUoKQoreworICAgIGlmICghaXNJbml0aWFsaXpl
ZCgpKQorICAgICAgICByZXR1cm47CisKKyAgICBtX3Bhbm5lciA9IG51bGxwdHI7CisgICAgQXVk
aW9Ob2RlOjp1bmluaXRpYWxpemUoKTsKK30KKworQXVkaW9MaXN0ZW5lciogV2ViS2l0QXVkaW9Q
YW5uZXJOb2RlOjpsaXN0ZW5lcigpCit7CisgICAgcmV0dXJuIGNvbnRleHQoKS5saXN0ZW5lcigp
OworfQorCit2b2lkIFdlYktpdEF1ZGlvUGFubmVyTm9kZTo6c2V0UGFubmluZ01vZGVsKFBhbm5p
bmdNb2RlbFR5cGUgbW9kZWwpCit7CisgICAgaWYgKCFtX3Bhbm5lci5nZXQoKSB8fCBtb2RlbCAh
PSBtX3Bhbm5pbmdNb2RlbCkgeworICAgICAgICAvLyBUaGlzIHN5bmNocm9uaXplcyB3aXRoIHBy
b2Nlc3MoKS4KKyAgICAgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhtX3Bhbm5lck11dGV4KTsK
KworICAgICAgICBtX3Bhbm5lciA9IFBhbm5lcjo6Y3JlYXRlKG1vZGVsLCBzYW1wbGVSYXRlKCks
IG1faHJ0ZkRhdGFiYXNlTG9hZGVyLmdldCgpKTsKKyAgICAgICAgbV9wYW5uaW5nTW9kZWwgPSBt
b2RlbDsKKyAgICB9Cit9CisKK0Zsb2F0UG9pbnQzRCBXZWJLaXRBdWRpb1Bhbm5lck5vZGU6OnBv
c2l0aW9uKCkgY29uc3QKK3sKKyAgICByZXR1cm4gRmxvYXRQb2ludDNEKG1fcG9zaXRpb25YLT52
YWx1ZSgpLCBtX3Bvc2l0aW9uWS0+dmFsdWUoKSwgbV9wb3NpdGlvblotPnZhbHVlKCkpOworfQor
Cit2b2lkIFdlYktpdEF1ZGlvUGFubmVyTm9kZTo6c2V0UG9zaXRpb24oZmxvYXQgeCwgZmxvYXQg
eSwgZmxvYXQgeikKK3sKKyAgICBtX3Bvc2l0aW9uWC0+c2V0VmFsdWUoeCk7CisgICAgbV9wb3Np
dGlvblktPnNldFZhbHVlKHkpOworICAgIG1fcG9zaXRpb25aLT5zZXRWYWx1ZSh6KTsKK30KKwor
RGlzdGFuY2VNb2RlbFR5cGUgV2ViS2l0QXVkaW9QYW5uZXJOb2RlOjpkaXN0YW5jZU1vZGVsKCkg
Y29uc3QKK3sKKyAgICByZXR1cm4gY29uc3RfY2FzdDxQYW5uZXJOb2RlKj4odGhpcyktPm1fZGlz
dGFuY2VFZmZlY3QubW9kZWwoKTsKK30KKwordm9pZCBXZWJLaXRBdWRpb1Bhbm5lck5vZGU6OnNl
dERpc3RhbmNlTW9kZWwoRGlzdGFuY2VNb2RlbFR5cGUgbW9kZWwpCit7CisgICAgbV9kaXN0YW5j
ZUVmZmVjdC5zZXRNb2RlbChtb2RlbCwgdHJ1ZSk7Cit9CisKK3ZvaWQgV2ViS2l0QXVkaW9QYW5u
ZXJOb2RlOjpnZXRBemltdXRoRWxldmF0aW9uKGRvdWJsZSogb3V0QXppbXV0aCwgZG91YmxlKiBv
dXRFbGV2YXRpb24pCit7CisgICAgLy8gRklYTUU6IHdlIHNob3VsZCBjYWNoZSBhemltdXRoIGFu
ZCBlbGV2YXRpb24gKGlmIHBvc3NpYmxlKSwgc28gd2Ugb25seSByZS1jYWxjdWxhdGUgaWYgYSBj
aGFuZ2UgaGFzIGJlZW4gbWFkZS4KKworICAgIGRvdWJsZSBhemltdXRoID0gMC4wOworCisgICAg
Ly8gQ2FsY3VsYXRlIHRoZSBzb3VyY2UtbGlzdGVuZXIgdmVjdG9yCisgICAgRmxvYXRQb2ludDNE
IGxpc3RlbmVyUG9zaXRpb24gPSBsaXN0ZW5lcigpLT5wb3NpdGlvbigpOworICAgIEZsb2F0UG9p
bnQzRCBzb3VyY2VMaXN0ZW5lciA9IHBvc2l0aW9uKCkgLSBsaXN0ZW5lclBvc2l0aW9uOworCisg
ICAgaWYgKHNvdXJjZUxpc3RlbmVyLmlzWmVybygpKSB7CisgICAgICAgIC8vIGRlZ2VuZXJhdGUg
Y2FzZSBpZiBzb3VyY2UgYW5kIGxpc3RlbmVyIGFyZSBhdCB0aGUgc2FtZSBwb2ludAorICAgICAg
ICAqb3V0QXppbXV0aCA9IDAuMDsKKyAgICAgICAgKm91dEVsZXZhdGlvbiA9IDAuMDsKKyAgICAg
ICAgcmV0dXJuOworICAgIH0KKworICAgIHNvdXJjZUxpc3RlbmVyLm5vcm1hbGl6ZSgpOworCisg
ICAgLy8gQWxpZ24gYXhlcworICAgIEZsb2F0UG9pbnQzRCBsaXN0ZW5lckZyb250ID0gbGlzdGVu
ZXIoKS0+b3JpZW50YXRpb24oKTsKKyAgICBGbG9hdFBvaW50M0QgbGlzdGVuZXJVcCA9IGxpc3Rl
bmVyKCktPnVwVmVjdG9yKCk7CisgICAgRmxvYXRQb2ludDNEIGxpc3RlbmVyUmlnaHQgPSBsaXN0
ZW5lckZyb250LmNyb3NzKGxpc3RlbmVyVXApOworICAgIGxpc3RlbmVyUmlnaHQubm9ybWFsaXpl
KCk7CisKKyAgICBGbG9hdFBvaW50M0QgbGlzdGVuZXJGcm9udE5vcm0gPSBsaXN0ZW5lckZyb250
OworICAgIGxpc3RlbmVyRnJvbnROb3JtLm5vcm1hbGl6ZSgpOworCisgICAgRmxvYXRQb2ludDNE
IHVwID0gbGlzdGVuZXJSaWdodC5jcm9zcyhsaXN0ZW5lckZyb250Tm9ybSk7CisKKyAgICBmbG9h
dCB1cFByb2plY3Rpb24gPSBzb3VyY2VMaXN0ZW5lci5kb3QodXApOworCisgICAgRmxvYXRQb2lu
dDNEIHByb2plY3RlZFNvdXJjZSA9IHNvdXJjZUxpc3RlbmVyIC0gdXBQcm9qZWN0aW9uICogdXA7
CisgICAgcHJvamVjdGVkU291cmNlLm5vcm1hbGl6ZSgpOworCisgICAgYXppbXV0aCA9IDE4MC4w
ICogYWNvcyhwcm9qZWN0ZWRTb3VyY2UuZG90KGxpc3RlbmVyUmlnaHQpKSAvIHBpRG91YmxlOwor
ICAgIGZpeE5BTnMoYXppbXV0aCk7IC8vIGF2b2lkIGlsbGVnYWwgdmFsdWVzCisKKyAgICAvLyBT
b3VyY2UgIGluIGZyb250IG9yIGJlaGluZCB0aGUgbGlzdGVuZXIKKyAgICBkb3VibGUgZnJvbnRC
YWNrID0gcHJvamVjdGVkU291cmNlLmRvdChsaXN0ZW5lckZyb250Tm9ybSk7CisgICAgaWYgKGZy
b250QmFjayA8IDAuMCkKKyAgICAgICAgYXppbXV0aCA9IDM2MC4wIC0gYXppbXV0aDsKKworICAg
IC8vIE1ha2UgYXppbXV0aCByZWxhdGl2ZSB0byAiZnJvbnQiIGFuZCBub3QgInJpZ2h0IiBsaXN0
ZW5lciB2ZWN0b3IKKyAgICBpZiAoKGF6aW11dGggPj0gMC4wKSAmJiAoYXppbXV0aCA8PSAyNzAu
MCkpCisgICAgICAgIGF6aW11dGggPSA5MC4wIC0gYXppbXV0aDsKKyAgICBlbHNlCisgICAgICAg
IGF6aW11dGggPSA0NTAuMCAtIGF6aW11dGg7CisKKyAgICAvLyBFbGV2YXRpb24KKyAgICBkb3Vi
bGUgZWxldmF0aW9uID0gOTAuMCAtIDE4MC4wICogYWNvcyhzb3VyY2VMaXN0ZW5lci5kb3QodXAp
KSAvIHBpRG91YmxlOworICAgIGZpeE5BTnMoZWxldmF0aW9uKTsgLy8gYXZvaWQgaWxsZWdhbCB2
YWx1ZXMKKworICAgIGlmIChlbGV2YXRpb24gPiA5MC4wKQorICAgICAgICBlbGV2YXRpb24gPSAx
ODAuMCAtIGVsZXZhdGlvbjsKKyAgICBlbHNlIGlmIChlbGV2YXRpb24gPCAtOTAuMCkKKyAgICAg
ICAgZWxldmF0aW9uID0gLTE4MC4wIC0gZWxldmF0aW9uOworCisgICAgaWYgKG91dEF6aW11dGgp
CisgICAgICAgICpvdXRBemltdXRoID0gYXppbXV0aDsKKyAgICBpZiAob3V0RWxldmF0aW9uKQor
ICAgICAgICAqb3V0RWxldmF0aW9uID0gZWxldmF0aW9uOworfQorCitmbG9hdCBXZWJLaXRBdWRp
b1Bhbm5lck5vZGU6OmRvcHBsZXJSYXRlKCkKK3sKKyAgICBkb3VibGUgZG9wcGxlclNoaWZ0ID0g
MS4wOworCisgICAgLy8gRklYTUU6IG9wdGltaXplIGZvciBjYXNlIHdoZW4gbmVpdGhlciBzb3Vy
Y2Ugbm9yIGxpc3RlbmVyIGhhcyBjaGFuZ2VkLi4uCisgICAgZG91YmxlIGRvcHBsZXJGYWN0b3Ig
PSBsaXN0ZW5lcigpLT5kb3BwbGVyRmFjdG9yKCk7CisKKyAgICBpZiAoZG9wcGxlckZhY3RvciA+
IDAuMCkgeworICAgICAgICBkb3VibGUgc3BlZWRPZlNvdW5kID0gbGlzdGVuZXIoKS0+c3BlZWRP
ZlNvdW5kKCk7CisKKyAgICAgICAgY29uc3QgRmxvYXRQb2ludDNEICZzb3VyY2VWZWxvY2l0eSA9
IG1fdmVsb2NpdHk7CisgICAgICAgIGNvbnN0IEZsb2F0UG9pbnQzRCAmbGlzdGVuZXJWZWxvY2l0
eSA9IGxpc3RlbmVyKCktPnZlbG9jaXR5KCk7CisKKyAgICAgICAgLy8gRG9uJ3QgYm90aGVyIGlm
IGJvdGggc291cmNlIGFuZCBsaXN0ZW5lciBoYXZlIG5vIHZlbG9jaXR5CisgICAgICAgIGJvb2wg
c291cmNlSGFzVmVsb2NpdHkgPSAhc291cmNlVmVsb2NpdHkuaXNaZXJvKCk7CisgICAgICAgIGJv
b2wgbGlzdGVuZXJIYXNWZWxvY2l0eSA9ICFsaXN0ZW5lclZlbG9jaXR5LmlzWmVybygpOworCisg
ICAgICAgIGlmIChzb3VyY2VIYXNWZWxvY2l0eSB8fCBsaXN0ZW5lckhhc1ZlbG9jaXR5KSB7Cisg
ICAgICAgICAgICAvLyBDYWxjdWxhdGUgdGhlIHNvdXJjZSB0byBsaXN0ZW5lciB2ZWN0b3IKKyAg
ICAgICAgICAgIEZsb2F0UG9pbnQzRCBsaXN0ZW5lclBvc2l0aW9uID0gbGlzdGVuZXIoKS0+cG9z
aXRpb24oKTsKKyAgICAgICAgICAgIEZsb2F0UG9pbnQzRCBzb3VyY2VUb0xpc3RlbmVyID0gcG9z
aXRpb24oKSAtIGxpc3RlbmVyUG9zaXRpb247CisKKyAgICAgICAgICAgIGRvdWJsZSBzb3VyY2VM
aXN0ZW5lck1hZ25pdHVkZSA9IHNvdXJjZVRvTGlzdGVuZXIubGVuZ3RoKCk7CisKKyAgICAgICAg
ICAgIGRvdWJsZSBsaXN0ZW5lclByb2plY3Rpb24gPSBzb3VyY2VUb0xpc3RlbmVyLmRvdChsaXN0
ZW5lclZlbG9jaXR5KSAvIHNvdXJjZUxpc3RlbmVyTWFnbml0dWRlOworICAgICAgICAgICAgZG91
YmxlIHNvdXJjZVByb2plY3Rpb24gPSBzb3VyY2VUb0xpc3RlbmVyLmRvdChzb3VyY2VWZWxvY2l0
eSkgLyBzb3VyY2VMaXN0ZW5lck1hZ25pdHVkZTsKKworICAgICAgICAgICAgbGlzdGVuZXJQcm9q
ZWN0aW9uID0gLWxpc3RlbmVyUHJvamVjdGlvbjsKKyAgICAgICAgICAgIHNvdXJjZVByb2plY3Rp
b24gPSAtc291cmNlUHJvamVjdGlvbjsKKworICAgICAgICAgICAgZG91YmxlIHNjYWxlZFNwZWVk
T2ZTb3VuZCA9IHNwZWVkT2ZTb3VuZCAvIGRvcHBsZXJGYWN0b3I7CisgICAgICAgICAgICBsaXN0
ZW5lclByb2plY3Rpb24gPSBzdGQ6Om1pbihsaXN0ZW5lclByb2plY3Rpb24sIHNjYWxlZFNwZWVk
T2ZTb3VuZCk7CisgICAgICAgICAgICBzb3VyY2VQcm9qZWN0aW9uID0gc3RkOjptaW4oc291cmNl
UHJvamVjdGlvbiwgc2NhbGVkU3BlZWRPZlNvdW5kKTsKKworICAgICAgICAgICAgZG9wcGxlclNo
aWZ0ID0gKChzcGVlZE9mU291bmQgLSBkb3BwbGVyRmFjdG9yICogbGlzdGVuZXJQcm9qZWN0aW9u
KSAvIChzcGVlZE9mU291bmQgLSBkb3BwbGVyRmFjdG9yICogc291cmNlUHJvamVjdGlvbikpOwor
ICAgICAgICAgICAgZml4TkFOcyhkb3BwbGVyU2hpZnQpOyAvLyBhdm9pZCBpbGxlZ2FsIHZhbHVl
cworCisgICAgICAgICAgICAvLyBMaW1pdCB0aGUgcGl0Y2ggc2hpZnRpbmcgdG8gNCBvY3RhdmVz
IHVwIGFuZCAzIG9jdGF2ZXMgZG93bi4KKyAgICAgICAgICAgIGlmIChkb3BwbGVyU2hpZnQgPiAx
Ni4wKQorICAgICAgICAgICAgICAgIGRvcHBsZXJTaGlmdCA9IDE2LjA7CisgICAgICAgICAgICBl
bHNlIGlmIChkb3BwbGVyU2hpZnQgPCAwLjEyNSkKKyAgICAgICAgICAgICAgICBkb3BwbGVyU2hp
ZnQgPSAwLjEyNTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHJldHVybiBzdGF0aWNfY2FzdDxm
bG9hdD4oZG9wcGxlclNoaWZ0KTsKK30KKworZmxvYXQgV2ViS2l0QXVkaW9QYW5uZXJOb2RlOjpk
aXN0YW5jZUNvbmVHYWluKCkKK3sKKyAgICBGbG9hdFBvaW50M0QgbGlzdGVuZXJQb3NpdGlvbiA9
IGxpc3RlbmVyKCktPnBvc2l0aW9uKCk7CisgICAgRmxvYXRQb2ludDNEIHNvdXJjZVBvc2l0aW9u
ID0gcG9zaXRpb24oKTsKKworICAgIGRvdWJsZSBsaXN0ZW5lckRpc3RhbmNlID0gc291cmNlUG9z
aXRpb24uZGlzdGFuY2VUbyhsaXN0ZW5lclBvc2l0aW9uKTsKKyAgICBkb3VibGUgZGlzdGFuY2VH
YWluID0gbV9kaXN0YW5jZUVmZmVjdC5nYWluKGxpc3RlbmVyRGlzdGFuY2UpOworCisgICAgbV9k
aXN0YW5jZUdhaW4tPnNldFZhbHVlKHN0YXRpY19jYXN0PGZsb2F0PihkaXN0YW5jZUdhaW4pKTsK
KworICAgIC8vIEZJWE1FOiBjb3VsZCBvcHRpbWl6ZSBieSBjYWNoaW5nIGNvbmVHYWluCisgICAg
ZG91YmxlIGNvbmVHYWluID0gbV9jb25lRWZmZWN0LmdhaW4oc291cmNlUG9zaXRpb24sIG1fb3Jp
ZW50YXRpb24sIGxpc3RlbmVyUG9zaXRpb24pOworCisgICAgbV9jb25lR2Fpbi0+c2V0VmFsdWUo
c3RhdGljX2Nhc3Q8ZmxvYXQ+KGNvbmVHYWluKSk7CisKKyAgICByZXR1cm4gZmxvYXQoZGlzdGFu
Y2VHYWluICogY29uZUdhaW4pOworfQorCit2b2lkIFdlYktpdEF1ZGlvUGFubmVyTm9kZTo6bm90
aWZ5QXVkaW9Tb3VyY2VzQ29ubmVjdGVkVG9Ob2RlKEF1ZGlvTm9kZSogbm9kZSwgSGFzaFNldDxB
dWRpb05vZGUqPiYgdmlzaXRlZE5vZGVzKQoreworICAgIEFTU0VSVChub2RlKTsKKyAgICBpZiAo
IW5vZGUpCisgICAgICAgIHJldHVybjsKKworICAgIC8vIEZpcnN0IGNoZWNrIGlmIHRoaXMgbm9k
ZSBpcyBhbiBBdWRpb0J1ZmZlclNvdXJjZU5vZGUuIElmIHNvLCBsZXQgaXQga25vdyBhYm91dCB1
cyBzbyB0aGF0IGRvcHBsZXIgc2hpZnQgcGl0Y2ggY2FuIGJlIHRha2VuIGludG8gYWNjb3VudC4K
KyAgICBpZiAobm9kZS0+bm9kZVR5cGUoKSA9PSBOb2RlVHlwZUF1ZGlvQnVmZmVyU291cmNlKSB7
CisgICAgICAgIEF1ZGlvQnVmZmVyU291cmNlTm9kZSogYnVmZmVyU291cmNlTm9kZSA9IHJlaW50
ZXJwcmV0X2Nhc3Q8QXVkaW9CdWZmZXJTb3VyY2VOb2RlKj4obm9kZSk7CisgICAgICAgIGJ1ZmZl
clNvdXJjZU5vZGUtPnNldFBhbm5lck5vZGUodGhpcyk7CisgICAgfSBlbHNlIHsKKyAgICAgICAg
Ly8gR28gdGhyb3VnaCBhbGwgaW5wdXRzIHRvIHRoaXMgbm9kZS4KKyAgICAgICAgZm9yICh1bnNp
Z25lZCBpID0gMDsgaSA8IG5vZGUtPm51bWJlck9mSW5wdXRzKCk7ICsraSkgeworICAgICAgICAg
ICAgQXVkaW9Ob2RlSW5wdXQqIGlucHV0ID0gbm9kZS0+aW5wdXQoaSk7CisKKyAgICAgICAgICAg
IC8vIEZvciBlYWNoIGlucHV0LCBnbyB0aHJvdWdoIGFsbCBvZiBpdHMgY29ubmVjdGlvbnMsIGxv
b2tpbmcgZm9yIEF1ZGlvQnVmZmVyU291cmNlTm9kZXMuCisgICAgICAgICAgICBmb3IgKHVuc2ln
bmVkIGogPSAwOyBqIDwgaW5wdXQtPm51bWJlck9mUmVuZGVyaW5nQ29ubmVjdGlvbnMoKTsgKytq
KSB7CisgICAgICAgICAgICAgICAgQXVkaW9Ob2RlT3V0cHV0KiBjb25uZWN0ZWRPdXRwdXQgPSBp
bnB1dC0+cmVuZGVyaW5nT3V0cHV0KGopOworICAgICAgICAgICAgICAgIEF1ZGlvTm9kZSogY29u
bmVjdGVkTm9kZSA9IGNvbm5lY3RlZE91dHB1dC0+bm9kZSgpOworICAgICAgICAgICAgICAgIGlm
ICh2aXNpdGVkTm9kZXMuY29udGFpbnMoY29ubmVjdGVkTm9kZSkpCisgICAgICAgICAgICAgICAg
ICAgIGNvbnRpbnVlOworCisgICAgICAgICAgICAgICAgdmlzaXRlZE5vZGVzLmFkZChjb25uZWN0
ZWROb2RlKTsKKyAgICAgICAgICAgICAgICBub3RpZnlBdWRpb1NvdXJjZXNDb25uZWN0ZWRUb05v
ZGUoY29ubmVjdGVkTm9kZSwgdmlzaXRlZE5vZGVzKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAg
fQorICAgIH0KK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxF
KFdFQl9BVURJTykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8v
V2ViS2l0QXVkaW9QYW5uZXJOb2RlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlv
L1dlYktpdEF1ZGlvUGFubmVyTm9kZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwLi5jN2IzMGE3OGYzNQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViYXVkaW8vV2ViS2l0QXVkaW9QYW5uZXJOb2RlLmgKQEAgLTAsMCArMSwxNjEgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAsIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiAg
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhF
IElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICog
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTgorICogQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTCisg
KiBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShXRUJfQVVESU8pCisKKyNp
bmNsdWRlICJBdWRpb0xpc3RlbmVyLmgiCisjaW5jbHVkZSAiQXVkaW9Ob2RlLmgiCisjaW5jbHVk
ZSAiQXVkaW9QYXJhbS5oIgorI2luY2x1ZGUgIkNvbmUuaCIKKyNpbmNsdWRlICJEaXN0YW5jZS5o
IgorI2luY2x1ZGUgIkZsb2F0UG9pbnQzRC5oIgorI2luY2x1ZGUgIlBhbm5lci5oIgorI2luY2x1
ZGUgPG1lbW9yeT4KKyNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgorI2luY2x1ZGUgPHd0Zi9Mb2Nr
Lmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgSFJURkRhdGFiYXNlTG9hZGVyOwor
CisvLyBQYW5uZXJOb2RlIGlzIGFuIEF1ZGlvTm9kZSB3aXRoIG9uZSBpbnB1dCBhbmQgb25lIG91
dHB1dC4KKy8vIEl0IHBvc2l0aW9ucyBhIHNvdW5kIGluIDNEIHNwYWNlLCB3aXRoIHRoZSBleGFj
dCBlZmZlY3QgZGVwZW5kZW50IG9uIHRoZSBwYW5uaW5nIG1vZGVsLgorLy8gSXQgaGFzIGEgcG9z
aXRpb24gYW5kIGFuIG9yaWVudGF0aW9uIGluIDNEIHNwYWNlIHdoaWNoIGlzIHJlbGF0aXZlIHRv
IHRoZSBwb3NpdGlvbiBhbmQgb3JpZW50YXRpb24gb2YgdGhlIGNvbnRleHQncyBBdWRpb0xpc3Rl
bmVyLgorLy8gQSBkaXN0YW5jZSBlZmZlY3Qgd2lsbCBhdHRlbnVhdGUgdGhlIGdhaW4gYXMgdGhl
IHBvc2l0aW9uIG1vdmVzIGF3YXkgZnJvbSB0aGUgbGlzdGVuZXIuCisvLyBBIGNvbmUgZWZmZWN0
IHdpbGwgYXR0ZW51YXRlIHRoZSBnYWluIGFzIHRoZSBvcmllbnRhdGlvbiBtb3ZlcyBhd2F5IGZy
b20gdGhlIGxpc3RlbmVyLgorLy8gQWxsIG9mIHRoZXNlIGVmZmVjdHMgZm9sbG93IHRoZSBPcGVu
QUwgc3BlY2lmaWNhdGlvbiB2ZXJ5IGNsb3NlbHkuCisKK2NsYXNzIFdlYktpdEF1ZGlvUGFubmVy
Tm9kZSBmaW5hbCA6IHB1YmxpYyBBdWRpb05vZGUgeworICAgIFdURl9NQUtFX0lTT19BTExPQ0FU
RUQoV2ViS2l0QXVkaW9QYW5uZXJOb2RlKTsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUmVmPFdlYktp
dEF1ZGlvUGFubmVyTm9kZT4gY3JlYXRlKFdlYktpdEF1ZGlvQ29udGV4dCYgY29udGV4dCwgZmxv
YXQgc2FtcGxlUmF0ZSkKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFdlYktp
dEF1ZGlvUGFubmVyTm9kZShjb250ZXh0LCBzYW1wbGVSYXRlKSk7CisgICAgfQorCisgICAgdmly
dHVhbCB+V2ViS2l0QXVkaW9QYW5uZXJOb2RlKCk7CisKKyAgICAvLyBBdWRpb05vZGUKKyAgICB2
b2lkIHByb2Nlc3Moc2l6ZV90IGZyYW1lc1RvUHJvY2Vzcykgb3ZlcnJpZGU7CisgICAgdm9pZCBw
dWxsSW5wdXRzKHNpemVfdCBmcmFtZXNUb1Byb2Nlc3MpIG92ZXJyaWRlOworICAgIHZvaWQgcmVz
ZXQoKSBvdmVycmlkZTsKKyAgICB2b2lkIGluaXRpYWxpemUoKSBvdmVycmlkZTsKKyAgICB2b2lk
IHVuaW5pdGlhbGl6ZSgpIG92ZXJyaWRlOworCisgICAgLy8gTGlzdGVuZXIKKyAgICBBdWRpb0xp
c3RlbmVyKiBsaXN0ZW5lcigpOworCisgICAgLy8gUGFubmluZyBtb2RlbAorICAgIFBhbm5pbmdN
b2RlbFR5cGUgcGFubmluZ01vZGVsKCkgY29uc3QgeyByZXR1cm4gbV9wYW5uaW5nTW9kZWw7IH0K
KyAgICB2b2lkIHNldFBhbm5pbmdNb2RlbChQYW5uaW5nTW9kZWxUeXBlKTsKKworICAgIC8vIFBv
c2l0aW9uCisgICAgRmxvYXRQb2ludDNEIHBvc2l0aW9uKCkgY29uc3Q7CisgICAgdm9pZCBzZXRQ
b3NpdGlvbihmbG9hdCB4LCBmbG9hdCB5LCBmbG9hdCB6KTsKKyAgICBBdWRpb1BhcmFtJiBwb3Np
dGlvblgoKSB7IHJldHVybiBtX3Bvc2l0aW9uWC5nZXQoKTsgfQorICAgIEF1ZGlvUGFyYW0mIHBv
c2l0aW9uWSgpIHsgcmV0dXJuIG1fcG9zaXRpb25ZLmdldCgpOyB9CisgICAgQXVkaW9QYXJhbSYg
cG9zaXRpb25aKCkgeyByZXR1cm4gbV9wb3NpdGlvblouZ2V0KCk7IH0KKworICAgIC8vIE9yaWVu
dGF0aW9uCisgICAgRmxvYXRQb2ludDNEIG9yaWVudGF0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9v
cmllbnRhdGlvbjsgfQorICAgIHZvaWQgc2V0T3JpZW50YXRpb24oZmxvYXQgeCwgZmxvYXQgeSwg
ZmxvYXQgeikgeyBtX29yaWVudGF0aW9uID0gRmxvYXRQb2ludDNEKHgsIHksIHopOyB9CisKKyAg
ICAvLyBWZWxvY2l0eQorICAgIEZsb2F0UG9pbnQzRCB2ZWxvY2l0eSgpIGNvbnN0IHsgcmV0dXJu
IG1fdmVsb2NpdHk7IH0KKyAgICB2b2lkIHNldFZlbG9jaXR5KGZsb2F0IHgsIGZsb2F0IHksIGZs
b2F0IHopIHsgbV92ZWxvY2l0eSA9IEZsb2F0UG9pbnQzRCh4LCB5LCB6KTsgfQorCisgICAgLy8g
RGlzdGFuY2UgcGFyYW1ldGVycworICAgIERpc3RhbmNlTW9kZWxUeXBlIGRpc3RhbmNlTW9kZWwo
KSBjb25zdDsKKyAgICB2b2lkIHNldERpc3RhbmNlTW9kZWwoRGlzdGFuY2VNb2RlbFR5cGUpOwor
CisgICAgZG91YmxlIHJlZkRpc3RhbmNlKCkgeyByZXR1cm4gbV9kaXN0YW5jZUVmZmVjdC5yZWZE
aXN0YW5jZSgpOyB9CisgICAgdm9pZCBzZXRSZWZEaXN0YW5jZShkb3VibGUgcmVmRGlzdGFuY2Up
IHsgbV9kaXN0YW5jZUVmZmVjdC5zZXRSZWZEaXN0YW5jZShyZWZEaXN0YW5jZSk7IH0KKworICAg
IGRvdWJsZSBtYXhEaXN0YW5jZSgpIHsgcmV0dXJuIG1fZGlzdGFuY2VFZmZlY3QubWF4RGlzdGFu
Y2UoKTsgfQorICAgIHZvaWQgc2V0TWF4RGlzdGFuY2UoZG91YmxlIG1heERpc3RhbmNlKSB7IG1f
ZGlzdGFuY2VFZmZlY3Quc2V0TWF4RGlzdGFuY2UobWF4RGlzdGFuY2UpOyB9CisKKyAgICBkb3Vi
bGUgcm9sbG9mZkZhY3RvcigpIHsgcmV0dXJuIG1fZGlzdGFuY2VFZmZlY3Qucm9sbG9mZkZhY3Rv
cigpOyB9CisgICAgdm9pZCBzZXRSb2xsb2ZmRmFjdG9yKGRvdWJsZSByb2xsb2ZmRmFjdG9yKSB7
IG1fZGlzdGFuY2VFZmZlY3Quc2V0Um9sbG9mZkZhY3Rvcihyb2xsb2ZmRmFjdG9yKTsgfQorCisg
ICAgLy8gU291bmQgY29uZXMgLSBhbmdsZXMgaW4gZGVncmVlcworICAgIGRvdWJsZSBjb25lSW5u
ZXJBbmdsZSgpIGNvbnN0IHsgcmV0dXJuIG1fY29uZUVmZmVjdC5pbm5lckFuZ2xlKCk7IH0KKyAg
ICB2b2lkIHNldENvbmVJbm5lckFuZ2xlKGRvdWJsZSBhbmdsZSkgeyBtX2NvbmVFZmZlY3Quc2V0
SW5uZXJBbmdsZShhbmdsZSk7IH0KKworICAgIGRvdWJsZSBjb25lT3V0ZXJBbmdsZSgpIGNvbnN0
IHsgcmV0dXJuIG1fY29uZUVmZmVjdC5vdXRlckFuZ2xlKCk7IH0KKyAgICB2b2lkIHNldENvbmVP
dXRlckFuZ2xlKGRvdWJsZSBhbmdsZSkgeyBtX2NvbmVFZmZlY3Quc2V0T3V0ZXJBbmdsZShhbmds
ZSk7IH0KKworICAgIGRvdWJsZSBjb25lT3V0ZXJHYWluKCkgY29uc3QgeyByZXR1cm4gbV9jb25l
RWZmZWN0Lm91dGVyR2FpbigpOyB9CisgICAgdm9pZCBzZXRDb25lT3V0ZXJHYWluKGRvdWJsZSBh
bmdsZSkgeyBtX2NvbmVFZmZlY3Quc2V0T3V0ZXJHYWluKGFuZ2xlKTsgfQorCisgICAgdm9pZCBn
ZXRBemltdXRoRWxldmF0aW9uKGRvdWJsZSogb3V0QXppbXV0aCwgZG91YmxlKiBvdXRFbGV2YXRp
b24pOworICAgIGZsb2F0IGRvcHBsZXJSYXRlKCk7CisKKyAgICAvLyBBY2Nlc3NvcnMgZm9yIGR5
bmFtaWNhbGx5IGNhbGN1bGF0ZWQgZ2FpbiB2YWx1ZXMuCisgICAgQXVkaW9QYXJhbSogZGlzdGFu
Y2VHYWluKCkgeyByZXR1cm4gbV9kaXN0YW5jZUdhaW4uZ2V0KCk7IH0KKyAgICBBdWRpb1BhcmFt
KiBjb25lR2FpbigpIHsgcmV0dXJuIG1fY29uZUdhaW4uZ2V0KCk7IH0KKworICAgIGRvdWJsZSB0
YWlsVGltZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fcGFubmVyID8gbV9wYW5uZXItPnRh
aWxUaW1lKCkgOiAwOyB9CisgICAgZG91YmxlIGxhdGVuY3lUaW1lKCkgY29uc3Qgb3ZlcnJpZGUg
eyByZXR1cm4gbV9wYW5uZXIgPyBtX3Bhbm5lci0+bGF0ZW5jeVRpbWUoKSA6IDA7IH0KKworcHJp
dmF0ZToKKyAgICBXZWJLaXRBdWRpb1Bhbm5lck5vZGUoV2ViS2l0QXVkaW9Db250ZXh0JiwgZmxv
YXQgc2FtcGxlUmF0ZSk7CisKKyAgICAvLyBSZXR1cm5zIHRoZSBjb21iaW5lZCBkaXN0YW5jZSBh
bmQgY29uZSBnYWluIGF0dGVudWF0aW9uLgorICAgIGZsb2F0IGRpc3RhbmNlQ29uZUdhaW4oKTsK
KworICAgIC8vIE5vdGlmaWVzIGFueSBBdWRpb0J1ZmZlclNvdXJjZU5vZGVzIGNvbm5lY3RlZCB0
byB1cyBlaXRoZXIgZGlyZWN0bHkgb3IgaW5kaXJlY3RseSBhYm91dCBvdXIgZXhpc3RlbmNlLgor
ICAgIC8vIFRoaXMgaXMgaW4gb3JkZXIgdG8gaGFuZGxlIHRoZSBwaXRjaCBjaGFuZ2UgbmVjZXNz
YXJ5IGZvciB0aGUgZG9wcGxlciBzaGlmdC4KKyAgICB2b2lkIG5vdGlmeUF1ZGlvU291cmNlc0Nv
bm5lY3RlZFRvTm9kZShBdWRpb05vZGUqLCBIYXNoU2V0PEF1ZGlvTm9kZSo+JiB2aXNpdGVkTm9k
ZXMpOworCisgICAgc3RkOjp1bmlxdWVfcHRyPFBhbm5lcj4gbV9wYW5uZXI7CisgICAgUGFubmlu
Z01vZGVsVHlwZSBtX3Bhbm5pbmdNb2RlbDsKKworICAgIEZsb2F0UG9pbnQzRCBtX29yaWVudGF0
aW9uOworICAgIEZsb2F0UG9pbnQzRCBtX3ZlbG9jaXR5OworCisgICAgLy8gR2FpbgorICAgIFJl
ZlB0cjxBdWRpb1BhcmFtPiBtX2Rpc3RhbmNlR2FpbjsKKyAgICBSZWZQdHI8QXVkaW9QYXJhbT4g
bV9jb25lR2FpbjsKKyAgICBEaXN0YW5jZUVmZmVjdCBtX2Rpc3RhbmNlRWZmZWN0OworICAgIENv
bmVFZmZlY3QgbV9jb25lRWZmZWN0OworICAgIGZsb2F0IG1fbGFzdEdhaW47CisKKyAgICBSZWY8
QXVkaW9QYXJhbT4gbV9wb3NpdGlvblg7CisgICAgUmVmPEF1ZGlvUGFyYW0+IG1fcG9zaXRpb25Z
OworICAgIFJlZjxBdWRpb1BhcmFtPiBtX3Bvc2l0aW9uWjsKKworICAgIC8vIEhSVEYgRGF0YWJh
c2UgbG9hZGVyCisgICAgUmVmUHRyPEhSVEZEYXRhYmFzZUxvYWRlcj4gbV9ocnRmRGF0YWJhc2VM
b2FkZXI7CisKKyAgICB1bnNpZ25lZCBtX2Nvbm5lY3Rpb25Db3VudDsKKworICAgIC8vIFN5bmNo
cm9uaXplIHByb2Nlc3MoKSBhbmQgc2V0UGFubmluZ01vZGVsKCkgd2hpY2ggY2FuIGNoYW5nZSB0
aGUgcGFubmVyLgorICAgIG11dGFibGUgTG9jayBtX3Bhbm5lck11dGV4OworfTsKKworfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViYXVkaW8vV2ViS2l0QXVkaW9QYW5uZXJOb2RlLmlkbCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViYXVkaW8vV2ViS2l0QXVkaW9QYW5uZXJOb2RlLmlkbApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uYTc3Mjg5ODQzZTkKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1dlYktpdEF1ZGlvUGFubmVyTm9kZS5p
ZGwKQEAgLTAsMCArMSw3MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCwgR29vZ2xlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycg
QU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OCisgKiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMKKyAqIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKK1sKKyAgICBDb25kaXRpb25hbD1XRUJf
QVVESU8sCisgICAgSW1wbGVtZW50ZWRBcz1QYW5uaW5nTW9kZWxUeXBlCitdIGVudW0gUGFubmlu
Z01vZGVsVHlwZSB7CisgICAgImVxdWFscG93ZXIiLAorICAgICJIUlRGIgorfTsKKworWworICAg
IENvbmRpdGlvbmFsPVdFQl9BVURJTywKKyAgICBJbXBsZW1lbnRlZEFzPURpc3RhbmNlTW9kZWxU
eXBlCitdIGVudW0gRGlzdGFuY2VNb2RlbFR5cGUgeworICAgICJsaW5lYXIiLAorICAgICJpbnZl
cnNlIiwKKyAgICAiZXhwb25lbnRpYWwiCit9OworCitbCisgICAgQ29uZGl0aW9uYWw9V0VCX0FV
RElPLAorICAgIEpTR2VuZXJhdGVUb0pTT2JqZWN0LAorICAgIEludGVyZmFjZU5hbWU9d2Via2l0
QXVkaW9QYW5uZXJOb2RlLAorXSBpbnRlcmZhY2UgV2ViS2l0QXVkaW9QYW5uZXJOb2RlIDogQXVk
aW9Ob2RlIHsKKyAgICAvLyBEZWZhdWx0IG1vZGVsIGZvciBzdGVyZW8gaXMgSFJURgorICAgIGF0
dHJpYnV0ZSBQYW5uaW5nTW9kZWxUeXBlIHBhbm5pbmdNb2RlbDsKKworICAgIC8vIFVzZXMgYSAz
RCBjYXJ0ZXNpYW4gY29vcmRpbmF0ZSBzeXN0ZW0KKyAgICB2b2lkIHNldFBvc2l0aW9uKHVucmVz
dHJpY3RlZCBmbG9hdCB4LCB1bnJlc3RyaWN0ZWQgZmxvYXQgeSwgdW5yZXN0cmljdGVkIGZsb2F0
IHopOworICAgIHZvaWQgc2V0T3JpZW50YXRpb24odW5yZXN0cmljdGVkIGZsb2F0IHgsIHVucmVz
dHJpY3RlZCBmbG9hdCB5LCB1bnJlc3RyaWN0ZWQgZmxvYXQgeik7CisgICAgdm9pZCBzZXRWZWxv
Y2l0eSh1bnJlc3RyaWN0ZWQgZmxvYXQgeCwgdW5yZXN0cmljdGVkIGZsb2F0IHksIHVucmVzdHJp
Y3RlZCBmbG9hdCB6KTsKKworICAgIC8vIERpc3RhbmNlIG1vZGVsCisgICAgYXR0cmlidXRlIERp
c3RhbmNlTW9kZWxUeXBlIGRpc3RhbmNlTW9kZWw7CisKKyAgICBhdHRyaWJ1dGUgdW5yZXN0cmlj
dGVkIGRvdWJsZSByZWZEaXN0YW5jZTsKKyAgICBhdHRyaWJ1dGUgdW5yZXN0cmljdGVkIGRvdWJs
ZSBtYXhEaXN0YW5jZTsKKyAgICBhdHRyaWJ1dGUgdW5yZXN0cmljdGVkIGRvdWJsZSByb2xsb2Zm
RmFjdG9yOworCisgICAgLy8gRGlyZWN0aW9uYWwgc291bmQgY29uZQorICAgIGF0dHJpYnV0ZSB1
bnJlc3RyaWN0ZWQgZG91YmxlIGNvbmVJbm5lckFuZ2xlOworICAgIGF0dHJpYnV0ZSB1bnJlc3Ry
aWN0ZWQgZG91YmxlIGNvbmVPdXRlckFuZ2xlOworICAgIGF0dHJpYnV0ZSB1bnJlc3RyaWN0ZWQg
ZG91YmxlIGNvbmVPdXRlckdhaW47CisKKyAgICAvLyBQb3NpdGlvbiBvZiBhdWRpbyBzb3VyY2Ug
aW4gM0QgQ2FydGVzaWFuIHN5c3RlbQorICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBBdWRpb1BhcmFt
IHBvc2l0aW9uWDsKKyAgICByZWFkb25seSBhdHRyaWJ1dGUgQXVkaW9QYXJhbSBwb3NpdGlvblk7
CisgICAgcmVhZG9ubHkgYXR0cmlidXRlIEF1ZGlvUGFyYW0gcG9zaXRpb25aOworfTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vV2ViS2l0T2ZmbGluZUF1ZGlv
Q29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1dlYktpdE9mZmxp
bmVBdWRpb0NvbnRleHQuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
Li42MGI1OTdlOWVkZAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViYXVkaW8vV2ViS2l0T2ZmbGluZUF1ZGlvQ29udGV4dC5jcHAKQEAgLTAsMCArMSw2MiBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiwgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuICBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUg
SU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OCisgKiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKKyAq
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2lmIEVOQUJMRShXRUJfQVVESU8p
CisKKyNpbmNsdWRlICJXZWJLaXRPZmZsaW5lQXVkaW9Db250ZXh0LmgiCisKKyNpbmNsdWRlICJB
dWRpb0J1ZmZlci5oIgorI2luY2x1ZGUgIkRvY3VtZW50LmgiCisjaW5jbHVkZSA8d3RmL0lzb01h
bGxvY0lubGluZXMuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitXVEZfTUFLRV9JU09fQUxM
T0NBVEVEX0lNUEwoV2ViS2l0T2ZmbGluZUF1ZGlvQ29udGV4dCk7CisKK2lubGluZSBXZWJLaXRP
ZmZsaW5lQXVkaW9Db250ZXh0OjpPZmZsaW5lQXVkaW9Db250ZXh0KERvY3VtZW50JiBkb2N1bWVu
dCwgQXVkaW9CdWZmZXIqIHJlbmRlclRhcmdldCkKKyAgICA6IEF1ZGlvQ29udGV4dChkb2N1bWVu
dCwgcmVuZGVyVGFyZ2V0KQoreworfQorCitFeGNlcHRpb25PcjxSZWY8T2ZmbGluZUF1ZGlvQ29u
dGV4dD4+IFdlYktpdE9mZmxpbmVBdWRpb0NvbnRleHQ6OmNyZWF0ZShTY3JpcHRFeGVjdXRpb25D
b250ZXh0JiBjb250ZXh0LCB1bnNpZ25lZCBudW1iZXJPZkNoYW5uZWxzLCBzaXplX3QgbnVtYmVy
T2ZGcmFtZXMsIGZsb2F0IHNhbXBsZVJhdGUpCit7CisgICAgLy8gRklYTUU6IEFkZCBzdXBwb3J0
IGZvciB3b3JrZXJzLgorICAgIGlmICghaXM8RG9jdW1lbnQ+KGNvbnRleHQpKQorICAgICAgICBy
ZXR1cm4gRXhjZXB0aW9uIHsgTm90U3VwcG9ydGVkRXJyb3IgfTsKKyAgICBpZiAoIW51bWJlck9m
Q2hhbm5lbHMgfHwgbnVtYmVyT2ZDaGFubmVscyA+IDEwIHx8ICFudW1iZXJPZkZyYW1lcyB8fCAh
aXNTYW1wbGVSYXRlUmFuZ2VHb29kKHNhbXBsZVJhdGUpKQorICAgICAgICByZXR1cm4gRXhjZXB0
aW9uIHsgU3ludGF4RXJyb3IgfTsKKyAgICBhdXRvIHJlbmRlclRhcmdldCA9IEF1ZGlvQnVmZmVy
OjpjcmVhdGUobnVtYmVyT2ZDaGFubmVscywgbnVtYmVyT2ZGcmFtZXMsIHNhbXBsZVJhdGUpOwor
ICAgIGlmICghcmVuZGVyVGFyZ2V0KQorICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgU3ludGF4
RXJyb3IgfTsKKworICAgIGF1dG8gYXVkaW9Db250ZXh0ID0gYWRvcHRSZWYoKm5ldyBPZmZsaW5l
QXVkaW9Db250ZXh0KGRvd25jYXN0PERvY3VtZW50Pihjb250ZXh0KSwgcmVuZGVyVGFyZ2V0Lmdl
dCgpKSk7CisgICAgYXVkaW9Db250ZXh0LT5zdXNwZW5kSWZOZWVkZWQoKTsKKyAgICByZXR1cm4g
YXVkaW9Db250ZXh0OworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBF
TkFCTEUoV0VCX0FVRElPKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJh
dWRpby9XZWJLaXRPZmZsaW5lQXVkaW9Db250ZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmF1ZGlvL1dlYktpdE9mZmxpbmVBdWRpb0NvbnRleHQuaApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMC4uMDkwZjFmMjgxNTYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1dlYktpdE9mZmxpbmVBdWRpb0NvbnRleHQuaApA
QCAtMCwwICsxLDQwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyLCBHb29nbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQg
QU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04KKyAqIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUworICogU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJX
ZWJLaXRBdWRpb0NvbnRleHQuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBXZWJL
aXRPZmZsaW5lQXVkaW9Db250ZXh0IGZpbmFsIDogcHVibGljIFdlYktpdEF1ZGlvQ29udGV4dCB7
CisgICAgV1RGX01BS0VfSVNPX0FMTE9DQVRFRChPZmZsaW5lQXVkaW9Db250ZXh0KTsKK3B1Ymxp
YzoKKyAgICBzdGF0aWMgRXhjZXB0aW9uT3I8UmVmPE9mZmxpbmVBdWRpb0NvbnRleHQ+PiBjcmVh
dGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIHVuc2lnbmVkIG51bWJlck9mQ2hhbm5lbHMsIHNp
emVfdCBudW1iZXJPZkZyYW1lcywgZmxvYXQgc2FtcGxlUmF0ZSk7CisKK3ByaXZhdGU6CisgICAg
T2ZmbGluZUF1ZGlvQ29udGV4dChEb2N1bWVudCYsIEF1ZGlvQnVmZmVyKiByZW5kZXJUYXJnZXQp
OworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJhdWRpby9XZWJLaXRPZmZsaW5lQXVkaW9Db250ZXh0LmlkbCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vV2ViS2l0T2ZmbGluZUF1ZGlvQ29udGV4dC5pZGwK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjZlMjg5NTEzMWJhCi0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9XZWJLaXRPZmZs
aW5lQXVkaW9Db250ZXh0LmlkbApAQCAtMCwwICsxLDMzIEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDEyLCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBP
U0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisg
KiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04KKyAqIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUworICogU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworWworICAg
IENvbmRpdGlvbmFsPVdFQl9BVURJTywKKyAgICBKU0dlbmVyYXRlVG9KU09iamVjdCwKKyAgICBD
b25zdHJ1Y3Rvcih1bnNpZ25lZCBsb25nIG51bWJlck9mQ2hhbm5lbHMsIHVuc2lnbmVkIGxvbmcg
bnVtYmVyT2ZGcmFtZXMsIHVucmVzdHJpY3RlZCBmbG9hdCBzYW1wbGVSYXRlKSwKKyAgICBDb25z
dHJ1Y3Rvck1heVRocm93RXhjZXB0aW9uLAorICAgIENvbnN0cnVjdG9yQ2FsbFdpdGg9U2NyaXB0
RXhlY3V0aW9uQ29udGV4dCwKKyAgICBJbnRlcmZhY2VOYW1lPXdlYmtpdE9mZmxpbmVBdWRpb0Nv
bnRleHQKK10gaW50ZXJmYWNlIFdlYktpdE9mZmxpbmVBdWRpb0NvbnRleHQgOiBBdWRpb0NvbnRl
eHQgeworfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0IGIvU291cmNl
L1dlYkNvcmUvU291cmNlcy50eHQKaW5kZXggMjRkYjhmZDJjMzEuLmU1MWIzMWYyZmYwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9T
b3VyY2VzLnR4dApAQCAtMjY4LDYgKzI2OCw5IEBAIE1vZHVsZXMvd2ViYXVkaW8vU2NyaXB0UHJv
Y2Vzc29yTm9kZS5jcHAKIE1vZHVsZXMvd2ViYXVkaW8vV2F2ZVNoYXBlckRTUEtlcm5lbC5jcHAK
IE1vZHVsZXMvd2ViYXVkaW8vV2F2ZVNoYXBlck5vZGUuY3BwCiBNb2R1bGVzL3dlYmF1ZGlvL1dh
dmVTaGFwZXJQcm9jZXNzb3IuY3BwCitNb2R1bGVzL3dlYmF1ZGlvL1dlYktpdEF1ZGlvQ29udGV4
dC5jcHAKK01vZHVsZXMvd2ViYXVkaW8vV2ViS2l0QXVkaW9QYW5uZXJOb2RlLmNwcAorTW9kdWxl
cy93ZWJhdWRpby9XZWJLaXRPZmZsaW5lQXVkaW9Db250ZXh0LmNwcAogCiBNb2R1bGVzL3dlYmF1
dGhuL0F1dGhlbnRpY2F0b3JDb29yZGluYXRvci5jcHAKIE1vZHVsZXMvd2ViYXV0aG4vQXV0aGVu
dGljYXRvckFzc2VydGlvblJlc3BvbnNlLmNwcApAQCAtMzU2Nyw3ICszNTcwLDEwIEBAIEpTV2Vi
R1BVU3dhcENoYWluLmNwcAogSlNXZWJHUFVUZXh0dXJlLmNwcAogSlNXZWJHUFVUZXh0dXJlVmll
dy5jcHAKIEpTV2ViS2l0QW5pbWF0aW9uRXZlbnQuY3BwCitKU1dlYktpdEF1ZGlvQ29udGV4dC5j
cHAKK0pTV2ViS2l0QXVkaW9QYW5uZXJOb2RlLmNwcAogSlNXZWJLaXRDU1NNYXRyaXguY3BwCitK
U1dlYktpdE9mZmxpbmVBdWRpb0NvbnRleHQuY3BwCiBKU1dlYktpdFBsYXliYWNrVGFyZ2V0QXZh
aWxhYmlsaXR5RXZlbnQuY3BwCiBKU1dlYktpdFBvaW50LmNwcAogSlNXZWJLaXRUcmFuc2l0aW9u
RXZlbnQuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oKaW5kZXggNTI2NWRiNTgzODIuLmZjZTYyNjhiYjA3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0yNDE0LDYgKzI0
MTQsOCBAQAogCQk4MzEwMkIyNzFGOUVBREQ5MDBFNDA0QjkgLyogSlNFeHRlbmRhYmxlTWVzc2Fn
ZUV2ZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4
MzEwMkIyMzFGOUVBREMyMDBFNDA0QjkgLyogSlNFeHRlbmRhYmxlTWVzc2FnZUV2ZW50LmggKi87
IH07CiAJCTgzMTFDMDAzMUZBQTJFOTUwMEUzQzhFNSAvKiBTV1NlcnZlckpvYlF1ZXVlLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4MzExQzAwMjFGQUEy
RTg5MDBFM0M4RTUgLyogU1dTZXJ2ZXJKb2JRdWV1ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTgzMTIwQzcxMUM1NkYzRkIwMDFDQjExMiAvKiBI
VE1MRGF0YUVsZW1lbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDgzNEI4NkE3MUM1NkU4M0EwMEYzRjBFMyAvKiBIVE1MRGF0YUVsZW1lbnQuaCAqLzsg
fTsKKwkJODMxQjYxNzYyNDk5QTVCQjAwQzA3Qzc5IC8qIFdlYktpdEF1ZGlvUGFubmVyTm9kZS5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODMxQjYxNzQy
NDk5QTU5QzAwQzA3Qzc5IC8qIFdlYktpdEF1ZGlvUGFubmVyTm9kZS5oICovOyB9OworCQk4MzFC
NjE3NzI0OTlBNUJGMDBDMDdDNzkgLyogV2ViS2l0T2ZmbGluZUF1ZGlvQ29udGV4dC5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODMxQjYxNzUyNDk5QTU5
RDAwQzA3Qzc5IC8qIFdlYktpdE9mZmxpbmVBdWRpb0NvbnRleHQuaCAqLzsgfTsKIAkJODMyMTUw
N0UxRjI3RUExQjAwOTVCMTM2IC8qIE5hdmlnYXRvckJlYWNvbi5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODMyMTUwN0IxRjI3RUExNTAwOTVCMTM2IC8q
IE5hdmlnYXRvckJlYWNvbi5oICovOyB9OwogCQk4MzJCODQzNDE5RDhFNTUxMDBCMjYwNTUgLyog
U1ZHQW5pbWF0ZUVsZW1lbnRCYXNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA4MzJCODQzMzE5RDhFNTUxMDBCMjYwNTUgLyogU1ZHQW5pbWF0ZUVsZW1l
bnRCYXNlLmggKi87IH07CiAJCTgzM0I5RTMyMUY1MDhEODUwMEUwRTQyOCAvKiBKU0ZpbGVTeXN0
ZW1EaXJlY3RvcnlFbnRyeS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gODMzQjlFMkYxRjUwOEQ4MDAwRTBFNDI4IC8qIEpTRmlsZVN5c3RlbURpcmVjdG9y
eUVudHJ5LmggKi87IH07CkBAIC0yNDY5LDEwICsyNDcxLDEyIEBACiAJCTgzOUEyRjJFMUUyMDRB
NzEwMDM5MDU3RSAvKiBXZWJHTFN0YXRlVHJhY2tlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODM5QTJGMkMxRTIwNEE2RDAwMzkwNTdFIC8qIFdlYkdM
U3RhdGVUcmFja2VyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKIAkJODM5QUFGRUQxQTBDMEM4RDAwNjA1Rjk5IC8qIEhUTUxXQlJFbGVtZW50LmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4MzlBQUZFQjFBMEMw
QzhEMDA2MDVGOTkgLyogSFRNTFdCUkVsZW1lbnQuaCAqLzsgfTsKIAkJODNBOEFDNDAxRkFCQkZF
NTAwMjA2NEFDIC8qIFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4M0E4QUMzRTFGQUJCRkQxMDAyMDY0QUMgLyog
U2VydmljZVdvcmtlcklkZW50aWZpZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OworCQk4M0IxQTcwMjI0OTk4NUYwMDBGRTU5NjEgLyogV2ViS2l0QXVk
aW9Db250ZXh0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA4M0IxQTZGRjI0OTk4NUQwMDBGRTU5NjEgLyogV2ViS2l0QXVkaW9Db250ZXh0LmggKi87IH07
CiAJCTgzQjJEMTc1MUI4QkNENkEwMEEwMkU0NyAvKiBOYXRpdmVOb2RlRmlsdGVyLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4M0U5NTlFMTFCOEJDMjJC
MDA0RDkzODUgLyogTmF0aXZlTm9kZUZpbHRlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CiAJCTgzQjc0RUY2MUYzRTBCRjIwMDk5NkJDNyAvKiBLZWVw
YWxpdmVSZXF1ZXN0VHJhY2tlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gODNCNzRFRjMxRjNFMEJENzAwOTk2QkM3IC8qIEtlZXBhbGl2ZVJlcXVlc3RU
cmFja2VyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
IAkJODNCOTY4N0IxOUY4QUI4MzAwNEVGN0FGIC8qIFN0eWxlQnVpbGRlckNvbnZlcnRlci5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODNCOTY4NzkxOUY4
QUI4MzAwNEVGN0FGIC8qIFN0eWxlQnVpbGRlckNvbnZlcnRlci5oICovOyB9OwogCQk4M0JCNUM4
ODFENUQ2RjQ1MDA1QTcxRjQgLyogQWxsRGVzY2VuZGFudHNDb2xsZWN0aW9uLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4M0JCNUM4NzFENUQ2RjNBMDA1
QTcxRjQgLyogQWxsRGVzY2VuZGFudHNDb2xsZWN0aW9uLmggKi87IH07CisJCTgzQkQzQ0VFMjQ5
OThFMDEwMEJBM0U2NyAvKiBBdWRpb0NvbnRleHRTdGF0ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODNCRDNDRUQyNDk5OERGNjAwQkEzRTY3IC8qIEF1
ZGlvQ29udGV4dFN0YXRlLmggKi87IH07CiAJCTgzQzA1QTVCMUE2ODYyMTIwMDdFNURFQSAvKiBT
dHlsZVByb3BlcnR5U2hvcnRoYW5kRnVuY3Rpb25zLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4M0MwNUE1OTFBNjg2MjEyMDA3RTVERUEgLyogU3R5bGVQ
cm9wZXJ0eVNob3J0aGFuZEZ1bmN0aW9ucy5oICovOyB9OwogCQk4M0MxRjU5NDFFREY2OUQzMDA0
MTBEMjcgLyogUXVhbGlmaWVkTmFtZUNhY2hlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA4M0MxRjU5MjFFREY2OUQzMDA0MTBEMjcgLyogUXVhbGlmaWVk
TmFtZUNhY2hlLmggKi87IH07CiAJCTgzQzQ1QjhFMURDMkI2OEEwMDg4NzFCQSAvKiBWYWxpZGF0
aW9uQnViYmxlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA4M0M0NUI4RDFEQzJCNjdDMDA4ODcxQkEgLyogVmFsaWRhdGlvbkJ1YmJsZS5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC0xMDI5Nyw2ICsxMDMw
MSw3IEBACiAJCTgzMDAzMEYzMUI3RDMzQTYwMEVEM0FBQyAvKiBHZW5lcmljQ2FjaGVkSFRNTENv
bGxlY3Rpb24uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gR2VuZXJp
Y0NhY2hlZEhUTUxDb2xsZWN0aW9uLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
ODMwMDMwRjQxQjdEMzNBNjAwRUQzQUFDIC8qIEdlbmVyaWNDYWNoZWRIVE1MQ29sbGVjdGlvbi5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBHZW5lcmljQ2FjaGVkSFRNTENvbGxl
Y3Rpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODMwMDMwRjcxQjdEMzk4ODAw
RUQzQUFDIC8qIENhY2hlZEhUTUxDb2xsZWN0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IENhY2hlZEhUTUxDb2xsZWN0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTgzMDAzRTJCMjQ5OTk3QTgwMDYwQUY5NCAvKiBXZWJLaXRBdWRpb0NvbnRleHQuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2ViS2l0QXVkaW9Db250ZXh0
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODMwMzM0RkIxRjU0OTA1MjAwNERG
NzA3IC8qIEZpbGVTeXN0ZW1EaXJlY3RvcnlSZWFkZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gRmlsZVN5c3RlbURpcmVjdG9yeVJlYWRlci5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTgzMDMzNEZDMUY1NDkwNTIwMDRERjcwNyAvKiBGaWxlU3lz
dGVtRGlyZWN0b3J5UmVhZGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEZp
bGVTeXN0ZW1EaXJlY3RvcnlSZWFkZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
ODMwMzM0RkQxRjU0OTA1MjAwNERGNzA3IC8qIEZpbGVTeXN0ZW1FbnRyaWVzQ2FsbGJhY2suaWRs
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IEZpbGVTeXN0ZW1FbnRyaWVzQ2FsbGJhY2suaWRsOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTAzMTQsNiArMTAzMTksMTIgQEAKIAkJODMx
MDJCMjUxRjlFQURDMjAwRTQwNEI5IC8qIEpTRXh0ZW5kYWJsZU1lc3NhZ2VFdmVudC5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0V4dGVuZGFibGVNZXNzYWdlRXZl
bnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4MzExQzAwMDFGQUEyRTg5MDBF
M0M4RTUgLyogU1dTZXJ2ZXJKb2JRdWV1ZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBTV1NlcnZlckpvYlF1ZXVlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJODMxMUMwMDIxRkFBMkU4OTAwRTNDOEU1IC8qIFNXU2VydmVySm9iUXVldWUuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU1dTZXJ2ZXJKb2JRdWV1ZS5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQk4MzFCNjE2RjI0OTlBNTk4MDBDMDdDNzkgLyogV2ViS2l0
QXVkaW9QYW5uZXJOb2RlLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBXZWJLaXRBdWRpb1Bh
bm5lck5vZGUuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk4MzFCNjE3MTI0OTlB
NTk5MDBDMDdDNzkgLyogV2ViS2l0QXVkaW9QYW5uZXJOb2RlLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYktpdEF1ZGlvUGFubmVyTm9kZS5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTgzMUI2MTcyMjQ5OUE1OUEwMEMwN0M3OSAvKiBXZWJLaXRP
ZmZsaW5lQXVkaW9Db250ZXh0LmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBXZWJLaXRPZmZs
aW5lQXVkaW9Db250ZXh0LmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJODMxQjYx
NzMyNDk5QTU5QjAwQzA3Qzc5IC8qIFdlYktpdE9mZmxpbmVBdWRpb0NvbnRleHQuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2ViS2l0T2ZmbGluZUF1ZGlvQ29udGV4
dC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTgzMUI2MTc0MjQ5OUE1OUMwMEMw
N0M3OSAvKiBXZWJLaXRBdWRpb1Bhbm5lck5vZGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gV2ViS2l0QXVkaW9QYW5uZXJOb2RlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTgzMUI2MTc1MjQ5OUE1OUQwMEMwN0M3OSAvKiBXZWJLaXRPZmZsaW5lQXVkaW9Db250
ZXh0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYktpdE9mZmxpbmVBdWRp
b0NvbnRleHQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODMxQzQ2QzMxRjlFRTVF
MDAwRUJENDUwIC8qIEpTRXh0ZW5kYWJsZU1lc3NhZ2VFdmVudEN1c3RvbS5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0V4dGVuZGFibGVNZXNzYWdlRXZlbnRDdXN0
b20uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4MzFEMUYyOTFDNTZFQ0EwMDBG
NUY2QzAgLyogSFRNTERhdGFFbGVtZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IEhUTUxEYXRhRWxlbWVudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTgzMjE1MDdBMUYyN0VBMTUwMDk1QjEzNiAvKiBOYXZpZ2F0b3JCZWFjb24uY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gTmF2aWdhdG9yQmVhY29uLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKQEAgLTEwNDQxLDYgKzEwNDUyLDggQEAKIAkJODM5QUFGRUIxQTBDMEM4RDAwNjA1Rjk5
IC8qIEhUTUxXQlJFbGVtZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEhU
TUxXQlJFbGVtZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTgzQTRBOUY4MUNF
N0ZEN0UwMDcwOUIwMCAvKiBKU1hNTERvY3VtZW50Q3VzdG9tLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTWE1MRG9jdW1lbnRDdXN0b20uY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk4M0E4QUMzRTFGQUJCRkQxMDAyMDY0QUMgLyogU2VydmljZVdv
cmtlcklkZW50aWZpZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2Vydmlj
ZVdvcmtlcklkZW50aWZpZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJODNCMUE2
RkYyNDk5ODVEMDAwRkU1OTYxIC8qIFdlYktpdEF1ZGlvQ29udGV4dC5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBXZWJLaXRBdWRpb0NvbnRleHQuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJODNCMUE3MDEyNDk5ODVEMDAwRkU1OTYxIC8qIFdlYktpdEF1ZGlvQ29u
dGV4dC5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gV2ViS2l0QXVkaW9Db250ZXh0LmlkbDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODNCMjUwMDkxRkExMTgxQzAwQkMwMkQ5IC8q
IEpTU2VydmljZVdvcmtlckNsaWVudFR5cGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gSlNTZXJ2aWNlV29ya2VyQ2xpZW50VHlwZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk4M0IyNTAwQjFGQTExODFEMDBCQzAyRDkgLyogSlNTZXJ2aWNlV29ya2VyQ2xpZW50
VHlwZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU1NlcnZpY2VX
b3JrZXJDbGllbnRUeXBlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODNCNURB
NDUxRkE5MDc5MzAwQjU5REY0IC8qIEpTTmF2aWdhdG9yQ3VzdG9tLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTTmF2aWdhdG9yQ3VzdG9tLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTEwNDQ4LDYgKzEwNDYxLDggQEAKIAkJODNCNzRFRjMxRjNF
MEJENzAwOTk2QkM3IC8qIEtlZXBhbGl2ZVJlcXVlc3RUcmFja2VyLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IEtlZXBhbGl2ZVJlcXVlc3RUcmFja2VyLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTgzQjk2ODc5MTlGOEFCODMwMDRFRjdBRiAvKiBTdHlsZUJ1aWxk
ZXJDb252ZXJ0ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU3R5bGVCdWls
ZGVyQ29udmVydGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTgzQkI1Qzg3MUQ1
RDZGM0EwMDVBNzFGNCAvKiBBbGxEZXNjZW5kYW50c0NvbGxlY3Rpb24uaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gQWxsRGVzY2VuZGFudHNDb2xsZWN0aW9uLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTgzQkQzQ0VCMjQ5OThDQzUwMEJBM0U2NyAvKiBBdWRpb0Nv
bnRleHRTdGF0ZS5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gQXVkaW9Db250ZXh0U3RhdGUu
aWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk4M0JEM0NFRDI0OTk4REY2MDBCQTNF
NjcgLyogQXVkaW9Db250ZXh0U3RhdGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gQXVkaW9Db250ZXh0U3RhdGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODND
MDVBNTgxQTY4NjIxMjAwN0U1REVBIC8qIFN0eWxlUHJvcGVydHlTaG9ydGhhbmRGdW5jdGlvbnMu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gU3R5bGVQcm9wZXJ0eVNo
b3J0aGFuZEZ1bmN0aW9ucy5jcHA7IHBhdGggPSBEZXJpdmVkU291cmNlcy9XZWJDb3JlL1N0eWxl
UHJvcGVydHlTaG9ydGhhbmRGdW5jdGlvbnMuY3BwOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVD
VFNfRElSOyB9OwogCQk4M0MwNUE1OTFBNjg2MjEyMDA3RTVERUEgLyogU3R5bGVQcm9wZXJ0eVNo
b3J0aGFuZEZ1bmN0aW9ucy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBTdHls
ZVByb3BlcnR5U2hvcnRoYW5kRnVuY3Rpb25zLmg7IHBhdGggPSBEZXJpdmVkU291cmNlcy9XZWJD
b3JlL1N0eWxlUHJvcGVydHlTaG9ydGhhbmRGdW5jdGlvbnMuaDsgc291cmNlVHJlZSA9IEJVSUxU
X1BST0RVQ1RTX0RJUjsgfTsKIAkJODNDMUY1OTExRURGNjlEMzAwNDEwRDI3IC8qIFF1YWxpZmll
ZE5hbWVDYWNoZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBRdWFs
aWZpZWROYW1lQ2FjaGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjkyMzEs
NiArMjkyNDYsOCBAQAogCQkJCUZEMzE1RkJBMTJCMDI2NzUwMEMxQTM1OSAvKiBBdWRpb0NvbnRl
eHQuY3BwICovLAogCQkJCUZEMzE1RkJCMTJCMDI2NzUwMEMxQTM1OSAvKiBBdWRpb0NvbnRleHQu
aCAqLywKIAkJCQlGRDMxNUZCQzEyQjAyNjc1MDBDMUEzNTkgLyogQXVkaW9Db250ZXh0LmlkbCAq
LywKKwkJCQk4M0JEM0NFRDI0OTk4REY2MDBCQTNFNjcgLyogQXVkaW9Db250ZXh0U3RhdGUuaCAq
LywKKwkJCQk4M0JEM0NFQjI0OTk4Q0M1MDBCQTNFNjcgLyogQXVkaW9Db250ZXh0U3RhdGUuaWRs
ICovLAogCQkJCUZEMzE1RkJEMTJCMDI2NzUwMEMxQTM1OSAvKiBBdWRpb0Rlc3RpbmF0aW9uTm9k
ZS5jcHAgKi8sCiAJCQkJRkQzMTVGQkUxMkIwMjY3NTAwQzFBMzU5IC8qIEF1ZGlvRGVzdGluYXRp
b25Ob2RlLmggKi8sCiAJCQkJRkQzMTVGQkYxMkIwMjY3NTAwQzFBMzU5IC8qIEF1ZGlvRGVzdGlu
YXRpb25Ob2RlLmlkbCAqLywKQEAgLTI5MzI4LDYgKzI5MzQ1LDE1IEBACiAJCQkJRkQ3RjI5OEUx
M0Q0QzBDQjAwQUQ5NTM1IC8qIFdhdmVTaGFwZXJOb2RlLmlkbCAqLywKIAkJCQlGRDdGMjk4RjEz
RDRDMENCMDBBRDk1MzUgLyogV2F2ZVNoYXBlclByb2Nlc3Nvci5jcHAgKi8sCiAJCQkJRkQ3RjI5
OTAxM0Q0QzBDQjAwQUQ5NTM1IC8qIFdhdmVTaGFwZXJQcm9jZXNzb3IuaCAqLywKKwkJCQk4MzAw
M0UyQjI0OTk5N0E4MDA2MEFGOTQgLyogV2ViS2l0QXVkaW9Db250ZXh0LmNwcCAqLywKKwkJCQk4
M0IxQTZGRjI0OTk4NUQwMDBGRTU5NjEgLyogV2ViS2l0QXVkaW9Db250ZXh0LmggKi8sCisJCQkJ
ODNCMUE3MDEyNDk5ODVEMDAwRkU1OTYxIC8qIFdlYktpdEF1ZGlvQ29udGV4dC5pZGwgKi8sCisJ
CQkJODMxQjYxNzEyNDk5QTU5OTAwQzA3Qzc5IC8qIFdlYktpdEF1ZGlvUGFubmVyTm9kZS5jcHAg
Ki8sCisJCQkJODMxQjYxNzQyNDk5QTU5QzAwQzA3Qzc5IC8qIFdlYktpdEF1ZGlvUGFubmVyTm9k
ZS5oICovLAorCQkJCTgzMUI2MTZGMjQ5OUE1OTgwMEMwN0M3OSAvKiBXZWJLaXRBdWRpb1Bhbm5l
ck5vZGUuaWRsICovLAorCQkJCTgzMUI2MTczMjQ5OUE1OUIwMEMwN0M3OSAvKiBXZWJLaXRPZmZs
aW5lQXVkaW9Db250ZXh0LmNwcCAqLywKKwkJCQk4MzFCNjE3NTI0OTlBNTlEMDBDMDdDNzkgLyog
V2ViS2l0T2ZmbGluZUF1ZGlvQ29udGV4dC5oICovLAorCQkJCTgzMUI2MTcyMjQ5OUE1OUEwMEMw
N0M3OSAvKiBXZWJLaXRPZmZsaW5lQXVkaW9Db250ZXh0LmlkbCAqLywKIAkJCSk7CiAJCQlwYXRo
ID0gd2ViYXVkaW87CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwpAQCAtMjk3MDQsNiArMjk3
MzAsNyBAQAogCQkJCTlCNDE3MDY0MTI1NjYyQjMwMDZCMjhGQyAvKiBBcHBseUJsb2NrRWxlbWVu
dENvbW1hbmQuaCBpbiBIZWFkZXJzICovLAogCQkJCTkzMzA5REQ5MDk5RTY0OTIwMDU2RTU4MSAv
KiBBcHBseVN0eWxlQ29tbWFuZC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTEyREQ4RjYwRDkxRTZB
RjAwMEY4OUVFIC8qIEFyY2hpdmUuaCBpbiBIZWFkZXJzICovLAorCQkJCTgzQkQzQ0VFMjQ5OThF
MDEwMEJBM0U2NyAvKiBBdWRpb0NvbnRleHRTdGF0ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTEy
REQ4RkQwRDkxRTZBRjAwMEY4OUVFIC8qIEFyY2hpdmVGYWN0b3J5LmggaW4gSGVhZGVycyAqLywK
IAkJCQk1MTJERDhGQzBEOTFFNkFGMDAwRjg5RUUgLyogQXJjaGl2ZVJlc291cmNlLmggaW4gSGVh
ZGVycyAqLywKIAkJCQk1MTJERDhGODBEOTFFNkFGMDAwRjg5RUUgLyogQXJjaGl2ZVJlc291cmNl
Q29sbGVjdGlvbi5oIGluIEhlYWRlcnMgKi8sCkBAIC0zMDg2OSw2ICszMDg5Niw3IEBACiAJCQkJ
QTQzQkY1OTkxMTQ5MjkwQTAwQzY0M0NBIC8qIEhUTUxQcm9ncmVzc0VsZW1lbnQuaCBpbiBIZWFk
ZXJzICovLAogCQkJCUE4Q0ZGN0EzMEExNTY5NzgwMDBBNDIzNCAvKiBIVE1MUXVvdGVFbGVtZW50
LmggaW4gSGVhZGVycyAqLywKIAkJCQlBOEQyMjNGRTE2QjUyRTRFMDAxNTcyODggLyogSFRNTFJl
c291cmNlUHJlbG9hZGVyLmggaW4gSGVhZGVycyAqLywKKwkJCQk4M0IxQTcwMjI0OTk4NUYwMDBG
RTU5NjEgLyogV2ViS2l0QXVkaW9Db250ZXh0LmggaW4gSGVhZGVycyAqLywKIAkJCQlBODcxREMy
NTBBMTUyMDU3MDBCMTJBNjggLyogSFRNTFNjcmlwdEVsZW1lbnQuaCBpbiBIZWFkZXJzICovLAog
CQkJCTk3N0IzODc1MTIyODgzRTkwMEI4MUZGOCAvKiBIVE1MU2NyaXB0UnVubmVyLmggaW4gSGVh
ZGVycyAqLywKIAkJCQk5NzdCMzg3NjEyMjg4M0U5MDBCODFGRjggLyogSFRNTFNjcmlwdFJ1bm5l
ckhvc3QuaCBpbiBIZWFkZXJzICovLApAQCAtMzE3MTEsNiArMzE3MzksNyBAQAogCQkJCUJDODI0
MzI5MEQwQ0U4QTIwMDQ2MEM4RiAvKiBKU1NRTEVycm9yLmggaW4gSGVhZGVycyAqLywKIAkJCQkx
QUU4MkZFRDBDQUIwN0VFMDAyMjM3QUUgLyogSlNTUUxSZXN1bHRTZXQuaCBpbiBIZWFkZXJzICov
LAogCQkJCTFBRkUxMTlBMENCRkZDQzQwMDMwMTdGQSAvKiBKU1NRTFJlc3VsdFNldFJvd0xpc3Qu
aCBpbiBIZWFkZXJzICovLAorCQkJCTgzMUI2MTc2MjQ5OUE1QkIwMEMwN0M3OSAvKiBXZWJLaXRB
dWRpb1Bhbm5lck5vZGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUI1OURENkE1MTE5MDJBNjIwMDdF
OTY4NCAvKiBKU1NRTFN0YXRlbWVudENhbGxiYWNrLmggaW4gSGVhZGVycyAqLywKIAkJCQlCNTlE
RDZBOTExOTAyQTcxMDA3RTk2ODQgLyogSlNTUUxTdGF0ZW1lbnRFcnJvckNhbGxiYWNrLmggaW4g
SGVhZGVycyAqLywKIAkJCQlCQzgyNDMyQTBEMENFOEEyMDA0NjBDOEYgLyogSlNTUUxUcmFuc2Fj
dGlvbi5oIGluIEhlYWRlcnMgKi8sCkBAIC0zMjgwNCw2ICszMjgzMyw3IEBACiAJCQkJNTFFRTdC
MzgxQUE1MEIwNTAwRjkyQjIxIC8qIFJlc291cmNlTG9hZEluZm8uaCBpbiBIZWFkZXJzICovLAog
CQkJCTk3M0UzMjU3MTA4ODNCN0MwMDVCQzQ5MyAvKiBSZXNvdXJjZUxvYWROb3RpZmllci5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJNkI2OTNBMkUxQzUxQTgyRTAwQjAzQkVGIC8qIFJlc291cmNlTG9h
ZE9ic2VydmVyLmggaW4gSGVhZGVycyAqLywKKwkJCQk4MzFCNjE3NzI0OTlBNUJGMDBDMDdDNzkg
LyogV2ViS2l0T2ZmbGluZUF1ZGlvQ29udGV4dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTQyOTVG
QTQxMkIwNjE0RTAwRDFBQ0UwIC8qIFJlc291cmNlTG9hZFByaW9yaXR5LmggaW4gSGVhZGVycyAq
LywKIAkJCQk3QTkyOUNBNzFDNTk4QUE5MDA0REYyMjYgLyogUmVzb3VyY2VMb2FkU3RhdGlzdGlj
cy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJN0VFNjg0NkQxMkQyNkUzODAwRTc5NDE1IC8qIFJlc291
cmNlUmVxdWVzdC5oIGluIEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9XZWJDb3JlQnVpbHRpbk5hbWVzLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9XZWJDb3JlQnVpbHRpbk5hbWVzLmgKaW5kZXggYzkxYjRkZmFkNzEuLjNlYjYyYjJhODFl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9XZWJDb3JlQnVpbHRpbk5h
bWVzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvV2ViQ29yZUJ1aWx0aW5OYW1l
cy5oCkBAIC00OSw2ICs0OSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBtYWNybyhBcHBs
ZVBheVNldHVwRmVhdHVyZSkgXAogICAgIG1hY3JvKEF0dGFjaG1lbnRFbGVtZW50KSBcCiAgICAg
bWFjcm8oQXVkaW8pIFwKKyAgICBtYWNybyhBdWRpb0NvbnRleHQpIFwKICAgICBtYWNybyhBdXRo
ZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2UpIFwKICAgICBtYWNybyhBdXRoZW50aWNhdG9yQXR0
ZXN0YXRpb25SZXNwb25zZSkgXAogICAgIG1hY3JvKEF1dGhlbnRpY2F0b3JSZXNwb25zZSkgXApA
QCAtMTY1LDkgKzE2NiwxMSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgbWFjcm8oTmF2aWdh
dG9yQ3JlZGVudGlhbHMpIFwKICAgICBtYWNybyhOYXZpZ2F0b3JNZWRpYURldmljZXMpIFwKICAg
ICBtYWNybyhOYXZpZ2F0b3JVc2VyTWVkaWEpIFwKKyAgICBtYWNybyhPZmZsaW5lQXVkaW9Db250
ZXh0KSBcCiAgICAgbWFjcm8oT2Zmc2NyZWVuQ2FudmFzKSBcCiAgICAgbWFjcm8oT2Zmc2NyZWVu
Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJEKSBcCiAgICAgbWFjcm8oUGFpbnRSZW5kZXJpbmdDb250
ZXh0MkQpIFwKKyAgICBtYWNybyhQYW5uZXJOb2RlKSBcCiAgICAgbWFjcm8oUGF5bWVudEFkZHJl
c3MpIFwKICAgICBtYWNybyhQYXltZW50TWV0aG9kQ2hhbmdlRXZlbnQpIFwKICAgICBtYWNybyhQ
YXltZW50UmVxdWVzdCkgXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50VGFy
Z2V0RmFjdG9yeS5pbiBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudFRhcmdldEZhY3RvcnkuaW4K
aW5kZXggZmMxZGIyY2UwZTAuLmExNTRiNDQ1YTEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vRXZlbnRUYXJnZXRGYWN0b3J5LmluCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVu
dFRhcmdldEZhY3RvcnkuaW4KQEAgLTUzLDYgKzUzLDcgQEAgVmlkZW9UcmFja0xpc3QgY29uZGl0
aW9uYWw9VklERU8KIFZpc3VhbFZpZXdwb3J0CiBXZWJBbmltYXRpb24KIFdlYkdQVURldmljZSBj
b25kaXRpb25hbD1XRUJHUFUKK1dlYktpdEF1ZGlvQ29udGV4dCBjb25kaXRpb25hbD1XRUJfQVVE
SU8KIFdlYktpdE1lZGlhS2V5U2Vzc2lvbiBjb25kaXRpb25hbD1MRUdBQ1lfRU5DUllQVEVEX01F
RElBCiBXZWJTb2NrZXQKIFdvcmtlcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9T
ZXR0aW5ncy55YW1sIGIvU291cmNlL1dlYkNvcmUvcGFnZS9TZXR0aW5ncy55YW1sCmluZGV4IDJk
NmJjNmZmMmVmLi41ODNmYzZmNzk1ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9T
ZXR0aW5ncy55YW1sCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3MueWFtbApAQCAt
MjU1LDYgKzI1NSw4IEBAIGxvYWREZWZlcnJpbmdFbmFibGVkOgogICBpbml0aWFsOiB0cnVlCiB3
ZWJBdWRpb0VuYWJsZWQ6CiAgIGluaXRpYWw6IGZhbHNlCittb2Rlcm5VbnByZWZpeGVkV2ViQXVk
aW9FbmFibGVkOgorICBpbml0aWFsOiBmYWxzZQogcGFnaW5hdGVEdXJpbmdMYXlvdXRFbmFibGVk
OgogICBpbml0aWFsOiBmYWxzZQogZnVsbFNjcmVlbkVuYWJsZWQ6CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9XZWJQcmVmZXJlbmNlcy55YW1sIGIvU291cmNlL1dlYktpdC9TaGFy
ZWQvV2ViUHJlZmVyZW5jZXMueWFtbAppbmRleCBmYWQxYTlmNTg4Ni4uNTIzNWNlNzFmZjcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlByZWZlcmVuY2VzLnlhbWwKKysrIGIv
U291cmNlL1dlYktpdC9TaGFyZWQvV2ViUHJlZmVyZW5jZXMueWFtbApAQCAtMzM0LDYgKzMzNCwx
NCBAQCBXZWJBdWRpb0VuYWJsZWQ6CiAgIGRlZmF1bHRWYWx1ZTogdHJ1ZQogICBjb25kaXRpb246
IEVOQUJMRShXRUJfQVVESU8pCiAKK01vZGVyblVucHJlZml4ZWRXZWJBdWRpb0VuYWJsZWQ6Cisg
IHR5cGU6IGJvb2wKKyAgZGVmYXVsdFZhbHVlOiBmYWxzZQorICBjb25kaXRpb246IEVOQUJMRShX
RUJfQVVESU8pCisgIGh1bWFuUmVhZGFibGVOYW1lOiAiTW9kZXJuIFdlYkF1ZGlvIEFQSSIKKyAg
aHVtYW5SZWFkYWJsZURlc2NyaXB0aW9uOiAiTW9kZXJuIGFuZCB1bnByZWZpeGVkIFdlYkF1ZGlv
IEFQSSIKKyAgY2F0ZWdvcnk6IGV4cGVyaW1lbnRhbAorCiBBdHRhY2htZW50RWxlbWVudEVuYWJs
ZWQ6CiAgIHR5cGU6IGJvb2wKICAgZGVmYXVsdFZhbHVlOiBmYWxzZQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>402068</attachid>
            <date>2020-06-16 18:40:23 -0700</date>
            <delta_ts>2020-06-17 01:25:16 -0700</delta_ts>
            <desc>WIP Patch</desc>
            <filename>213268_wip.patch</filename>
            <type>text/plain</type>
            <size>125751</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dlYkNv
cmUvQ01ha2VMaXN0cy50eHQKaW5kZXggOTc1OTQ4OTVkOGMuLmNiZWM5ZWMwOWY1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9D
TWFrZUxpc3RzLnR4dApAQCAtNDMzLDYgKzQzMyw3IEBAIHNldChXZWJDb3JlX05PTl9TVkdfSURM
X0ZJTEVTCiAgICAgTW9kdWxlcy93ZWJhdWRpby9BdWRpb0J1ZmZlckNhbGxiYWNrLmlkbAogICAg
IE1vZHVsZXMvd2ViYXVkaW8vQXVkaW9CdWZmZXJTb3VyY2VOb2RlLmlkbAogICAgIE1vZHVsZXMv
d2ViYXVkaW8vQXVkaW9Db250ZXh0LmlkbAorICAgIE1vZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250
ZXh0U3RhdGUuaWRsCiAgICAgTW9kdWxlcy93ZWJhdWRpby9BdWRpb0Rlc3RpbmF0aW9uTm9kZS5p
ZGwKICAgICBNb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvTGlzdGVuZXIuaWRsCiAgICAgTW9kdWxlcy93
ZWJhdWRpby9BdWRpb05vZGUuaWRsCkBAIC00NTUsNiArNDU2LDkgQEAgc2V0KFdlYkNvcmVfTk9O
X1NWR19JRExfRklMRVMKICAgICBNb2R1bGVzL3dlYmF1ZGlvL1BlcmlvZGljV2F2ZS5pZGwKICAg
ICBNb2R1bGVzL3dlYmF1ZGlvL1NjcmlwdFByb2Nlc3Nvck5vZGUuaWRsCiAgICAgTW9kdWxlcy93
ZWJhdWRpby9XYXZlU2hhcGVyTm9kZS5pZGwKKyAgICBNb2R1bGVzL3dlYmF1ZGlvL1dlYktpdEF1
ZGlvQ29udGV4dC5pZGwKKyAgICBNb2R1bGVzL3dlYmF1ZGlvL1dlYktpdEF1ZGlvUGFubmVyTm9k
ZS5pZGwKKyAgICBNb2R1bGVzL3dlYmF1ZGlvL1dlYktpdE9mZmxpbmVBdWRpb0NvbnRleHQuaWRs
CiAKICAgICBNb2R1bGVzL3dlYmF1dGhuL0F0dGVzdGF0aW9uQ29udmV5YW5jZVByZWZlcmVuY2Uu
aWRsCiAgICAgTW9kdWxlcy93ZWJhdXRobi9BdXRoZW50aWNhdGlvbkV4dGVuc2lvbnNDbGllbnRJ
bnB1dHMuaWRsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy1pbnB1
dC54Y2ZpbGVsaXN0IGIvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMtaW5wdXQueGNmaWxl
bGlzdAppbmRleCA2YTdhYTdkMTRlYi4uMDRhMzM3OGJkYmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLWlucHV0LnhjZmlsZWxpc3QKKysrIGIvU291cmNlL1dlYkNv
cmUvRGVyaXZlZFNvdXJjZXMtaW5wdXQueGNmaWxlbGlzdApAQCAtMzIyLDYgKzMyMiw3IEBAICQo
UFJPSkVDVF9ESVIpL01vZHVsZXMvd2ViYXVkaW8vUGFubmVyTm9kZS5pZGwKICQoUFJPSkVDVF9E
SVIpL01vZHVsZXMvd2ViYXVkaW8vUGVyaW9kaWNXYXZlLmlkbAogJChQUk9KRUNUX0RJUikvTW9k
dWxlcy93ZWJhdWRpby9TY3JpcHRQcm9jZXNzb3JOb2RlLmlkbAogJChQUk9KRUNUX0RJUikvTW9k
dWxlcy93ZWJhdWRpby9XYXZlU2hhcGVyTm9kZS5pZGwKKyQoUFJPSkVDVF9ESVIpL01vZHVsZXMv
d2ViYXVkaW8vV2ViS2l0QXVkaW9Db250ZXh0LmlkbAogJChQUk9KRUNUX0RJUikvTW9kdWxlcy93
ZWJhdXRobi9BdHRlc3RhdGlvbkNvbnZleWFuY2VQcmVmZXJlbmNlLmlkbAogJChQUk9KRUNUX0RJ
UikvTW9kdWxlcy93ZWJhdXRobi9BdXRoZW50aWNhdGlvbkV4dGVuc2lvbnNDbGllbnRJbnB1dHMu
aWRsCiAkKFBST0pFQ1RfRElSKS9Nb2R1bGVzL3dlYmF1dGhuL0F1dGhlbnRpY2F0aW9uRXh0ZW5z
aW9uc0NsaWVudE91dHB1dHMuaWRsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVk
U291cmNlcy5tYWtlIGIvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQppbmRleCBk
MjY3MDg5ZTM4Ny4uMDY5ZTIwNTI2NzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0Rlcml2
ZWRTb3VyY2VzLm1ha2UKKysrIGIvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQpA
QCAtMzgzLDYgKzM4Myw3IEBAIEpTX0JJTkRJTkdfSURMUyA9IFwKICAgICAkKFdlYkNvcmUpL01v
ZHVsZXMvd2ViYXVkaW8vQXVkaW9CdWZmZXJDYWxsYmFjay5pZGwgXAogICAgICQoV2ViQ29yZSkv
TW9kdWxlcy93ZWJhdWRpby9BdWRpb0J1ZmZlclNvdXJjZU5vZGUuaWRsIFwKICAgICAkKFdlYkNv
cmUpL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0LmlkbCBcCisgICAgJChXZWJDb3JlKS9N
b2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQ29udGV4dFN0YXRlLmlkbCBcCiAgICAgJChXZWJDb3JlKS9N
b2R1bGVzL3dlYmF1ZGlvL0F1ZGlvRGVzdGluYXRpb25Ob2RlLmlkbCBcCiAgICAgJChXZWJDb3Jl
KS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvTGlzdGVuZXIuaWRsIFwKICAgICAkKFdlYkNvcmUpL01v
ZHVsZXMvd2ViYXVkaW8vQXVkaW9Ob2RlLmlkbCBcCkBAIC00MDUsNiArNDA2LDkgQEAgSlNfQklO
RElOR19JRExTID0gXAogICAgICQoV2ViQ29yZSkvTW9kdWxlcy93ZWJhdWRpby9QZXJpb2RpY1dh
dmUuaWRsIFwKICAgICAkKFdlYkNvcmUpL01vZHVsZXMvd2ViYXVkaW8vU2NyaXB0UHJvY2Vzc29y
Tm9kZS5pZGwgXAogICAgICQoV2ViQ29yZSkvTW9kdWxlcy93ZWJhdWRpby9XYXZlU2hhcGVyTm9k
ZS5pZGwgXAorICAgICQoV2ViQ29yZSkvTW9kdWxlcy93ZWJhdWRpby9XZWJLaXRBdWRpb0NvbnRl
eHQuaWRsIFwKKyAgICAkKFdlYkNvcmUpL01vZHVsZXMvd2ViYXVkaW8vV2ViS2l0QXVkaW9QYW5u
ZXJOb2RlLmlkbCBcCisgICAgJChXZWJDb3JlKS9Nb2R1bGVzL3dlYmF1ZGlvL1dlYktpdE9mZmxp
bmVBdWRpb0NvbnRleHQuaWRsIFwKICAgICAkKFdlYkNvcmUpL01vZHVsZXMvd2ViYXV0aG4vQXR0
ZXN0YXRpb25Db252ZXlhbmNlUHJlZmVyZW5jZS5pZGwgXAogICAgICQoV2ViQ29yZSkvTW9kdWxl
cy93ZWJhdXRobi9BdXRoZW50aWNhdGlvbkV4dGVuc2lvbnNDbGllbnRJbnB1dHMuaWRsIFwKICAg
ICAkKFdlYkNvcmUpL01vZHVsZXMvd2ViYXV0aG4vQXV0aGVudGljYXRpb25FeHRlbnNpb25zQ2xp
ZW50T3V0cHV0cy5pZGwgXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJh
dWRpby9BdWRpb0NvbnRleHQuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVk
aW9Db250ZXh0LmgKaW5kZXggOGUwOTQzOTRjZmYuLmMxZGZjNDAzYmJmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQ29udGV4dC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0LmgKQEAgLTI4LDYgKzI4LDcg
QEAKICNpbmNsdWRlICJBY3RpdmVET01PYmplY3QuaCIKICNpbmNsdWRlICJBc3luY0F1ZGlvRGVj
b2Rlci5oIgogI2luY2x1ZGUgIkF1ZGlvQnVzLmgiCisjaW5jbHVkZSAiQXVkaW9Db250ZXh0U3Rh
dGUuaCIKICNpbmNsdWRlICJBdWRpb0Rlc3RpbmF0aW9uTm9kZS5oIgogI2luY2x1ZGUgIkV2ZW50
VGFyZ2V0LmgiCiAjaW5jbHVkZSAiTWVkaWFDYW5TdGFydExpc3RlbmVyLmgiCkBAIC0xMzAsNyAr
MTMxLDcgQEAgcHVibGljOgogICAgIHZvaWQgcmVzdW1lUmVuZGVyaW5nKERPTVByb21pc2VEZWZl
cnJlZDx2b2lkPiYmKTsKICAgICB2b2lkIGNsb3NlKERPTVByb21pc2VEZWZlcnJlZDx2b2lkPiYm
KTsKIAotICAgIGVudW0gY2xhc3MgU3RhdGUgeyBTdXNwZW5kZWQsIFJ1bm5pbmcsIEludGVycnVw
dGVkLCBDbG9zZWQgfTsKKyAgICB1c2luZyBTdGF0ZSA9IEF1ZGlvQ29udGV4dFN0YXRlOwogICAg
IFN0YXRlIHN0YXRlKCkgY29uc3Q7CiAgICAgYm9vbCBpc0Nsb3NlZCgpIGNvbnN0IHsgcmV0dXJu
IG1fc3RhdGUgPT0gU3RhdGU6OkNsb3NlZDsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQ29udGV4dC5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmF1ZGlvL0F1ZGlvQ29udGV4dC5pZGwKaW5kZXggMTIxMjRhMzY3NzcuLjgzZGIzYjRk
NmIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQ29u
dGV4dC5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0NvbnRl
eHQuaWRsCkBAIC0yMywyMiArMjMsMTQgQEAKICAqIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLWVudW0gQXVkaW9Db250
ZXh0U3RhdGUgewotICAgICJzdXNwZW5kZWQiLAotICAgICJydW5uaW5nIiwKLSAgICAiaW50ZXJy
dXB0ZWQiLAotICAgICJjbG9zZWQiCi19OwotCiBbCiAgICAgQWN0aXZlRE9NT2JqZWN0LAogICAg
IENvbmRpdGlvbmFsPVdFQl9BVURJTywKICAgICBDb25zdHJ1Y3RvciwKICAgICBDb25zdHJ1Y3Rv
ckNhbGxXaXRoPURvY3VtZW50LAogICAgIENvbnN0cnVjdG9yTWF5VGhyb3dFeGNlcHRpb24sCi0g
ICAgRW5hYmxlZEJ5U2V0dGluZz1XZWJBdWRpbywKKyAgICBFbmFibGVkQnlTZXR0aW5nPU1vZGVy
blVucHJlZml4ZWRXZWJBdWRpbywKICAgICBFeHBvcnRNYWNybz1XRUJDT1JFX0VYUE9SVCwKLSAg
ICBJbnRlcmZhY2VOYW1lPXdlYmtpdEF1ZGlvQ29udGV4dCwKIF0gaW50ZXJmYWNlIEF1ZGlvQ29u
dGV4dCA6IEV2ZW50VGFyZ2V0IHsKICAgICAvLyBBbGwgcmVuZGVyZWQgYXVkaW8gdWx0aW1hdGVs
eSBjb25uZWN0cyB0byBkZXN0aW5hdGlvbiwgd2hpY2ggcmVwcmVzZW50cyB0aGUgYXVkaW8gaGFy
ZHdhcmUuCiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIEF1ZGlvRGVzdGluYXRpb25Ob2RlIGRlc3Rp
bmF0aW9uOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRp
b0NvbnRleHRTdGF0ZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0Nv
bnRleHRTdGF0ZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi4xNjAx
MzExMDhmYQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVk
aW8vQXVkaW9Db250ZXh0U3RhdGUuaApAQCAtMCwwICsxLDMyIEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTYtMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiAgUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIg
UFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTgorICog
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTCisgKiBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
cHJhZ21hIG9uY2UKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitlbnVtIGNsYXNzIEF1ZGlvQ29u
dGV4dFN0YXRlIHsgU3VzcGVuZGVkLCBSdW5uaW5nLCBJbnRlcnJ1cHRlZCwgQ2xvc2VkIH07CisK
K30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250
ZXh0U3RhdGUuaWRsIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0NvbnRl
eHRTdGF0ZS5pZGwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLmM4ZDA4
YmQyYjU2Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRp
by9BdWRpb0NvbnRleHRTdGF0ZS5pZGwKQEAgLTAsMCArMSwzMSBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxMCwgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdo
dCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVS
UE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMK
KyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTgorICogQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTCisgKiBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCitlbnVt
IEF1ZGlvQ29udGV4dFN0YXRlIHsKKyAgICAic3VzcGVuZGVkIiwKKyAgICAicnVubmluZyIsCisg
ICAgImludGVycnVwdGVkIiwKKyAgICAiY2xvc2VkIgorfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vT2ZmbGluZUF1ZGlvQ29udGV4dC5pZGwgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL09mZmxpbmVBdWRpb0NvbnRleHQuaWRsCmluZGV4IGM2
ZTBkNzRmMDJmLi42ZjEyMmE3YzNjOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJhdWRpby9PZmZsaW5lQXVkaW9Db250ZXh0LmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmF1ZGlvL09mZmxpbmVBdWRpb0NvbnRleHQuaWRsCkBAIC0yOCw2ICsyOCw2IEBA
CiAgICAgQ29uc3RydWN0b3IodW5zaWduZWQgbG9uZyBudW1iZXJPZkNoYW5uZWxzLCB1bnNpZ25l
ZCBsb25nIG51bWJlck9mRnJhbWVzLCB1bnJlc3RyaWN0ZWQgZmxvYXQgc2FtcGxlUmF0ZSksCiAg
ICAgQ29uc3RydWN0b3JNYXlUaHJvd0V4Y2VwdGlvbiwKICAgICBDb25zdHJ1Y3RvckNhbGxXaXRo
PVNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsCi0gICAgSW50ZXJmYWNlTmFtZT13ZWJraXRPZmZsaW5l
QXVkaW9Db250ZXh0CisgICAgRW5hYmxlZEJ5U2V0dGluZz1Nb2Rlcm5VbnByZWZpeGVkV2ViQXVk
aW8sCiBdIGludGVyZmFjZSBPZmZsaW5lQXVkaW9Db250ZXh0IDogQXVkaW9Db250ZXh0IHsKIH07
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1Bhbm5lck5vZGUu
aWRsIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9QYW5uZXJOb2RlLmlkbAppbmRl
eCAwMzI5ODM3ZDJmNS4uMzJkODkxZGMyYWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViYXVkaW8vUGFubmVyTm9kZS5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJhdWRpby9QYW5uZXJOb2RlLmlkbApAQCAtNDIsNyArNDIsNyBAQAogWwogICAgIENvbmRp
dGlvbmFsPVdFQl9BVURJTywKICAgICBKU0dlbmVyYXRlVG9KU09iamVjdCwKLSAgICBJbnRlcmZh
Y2VOYW1lPXdlYmtpdEF1ZGlvUGFubmVyTm9kZSwKKyAgICBFbmFibGVkQnlTZXR0aW5nPU1vZGVy
blVucHJlZml4ZWRXZWJBdWRpbywKIF0gaW50ZXJmYWNlIFBhbm5lck5vZGUgOiBBdWRpb05vZGUg
ewogICAgIC8vIERlZmF1bHQgbW9kZWwgZm9yIHN0ZXJlbyBpcyBIUlRGIAogICAgIGF0dHJpYnV0
ZSBQYW5uaW5nTW9kZWxUeXBlIHBhbm5pbmdNb2RlbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViYXVkaW8vV2ViS2l0QXVkaW9Db250ZXh0LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViYXVkaW8vV2ViS2l0QXVkaW9Db250ZXh0LmNwcApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uN2FjNThmMGEyYzgKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1dlYktpdEF1ZGlvQ29udGV4dC5jcHAK
QEAgLTAsMCArMSwxNDA3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQg
QU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04KKyAqIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUworICogU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaWYg
RU5BQkxFKFdFQl9BVURJTykKKworI2luY2x1ZGUgIldlYktpdEF1ZGlvQ29udGV4dC5oIgorCisj
aW5jbHVkZSAiQW5hbHlzZXJOb2RlLmgiCisjaW5jbHVkZSAiQXN5bmNBdWRpb0RlY29kZXIuaCIK
KyNpbmNsdWRlICJBdWRpb0J1ZmZlci5oIgorI2luY2x1ZGUgIkF1ZGlvQnVmZmVyQ2FsbGJhY2su
aCIKKyNpbmNsdWRlICJBdWRpb0J1ZmZlclNvdXJjZU5vZGUuaCIKKyNpbmNsdWRlICJBdWRpb0xp
c3RlbmVyLmgiCisjaW5jbHVkZSAiQXVkaW9Ob2RlSW5wdXQuaCIKKyNpbmNsdWRlICJBdWRpb05v
ZGVPdXRwdXQuaCIKKyNpbmNsdWRlICJBdWRpb1Nlc3Npb24uaCIKKyNpbmNsdWRlICJCaXF1YWRG
aWx0ZXJOb2RlLmgiCisjaW5jbHVkZSAiQ2hhbm5lbE1lcmdlck5vZGUuaCIKKyNpbmNsdWRlICJD
aGFubmVsU3BsaXR0ZXJOb2RlLmgiCisjaW5jbHVkZSAiQ29udm9sdmVyTm9kZS5oIgorI2luY2x1
ZGUgIkRlZmF1bHRBdWRpb0Rlc3RpbmF0aW9uTm9kZS5oIgorI2luY2x1ZGUgIkRlbGF5Tm9kZS5o
IgorI2luY2x1ZGUgIkRvY3VtZW50LmgiCisjaW5jbHVkZSAiRHluYW1pY3NDb21wcmVzc29yTm9k
ZS5oIgorI2luY2x1ZGUgIkV2ZW50TmFtZXMuaCIKKyNpbmNsdWRlICJGRlRGcmFtZS5oIgorI2lu
Y2x1ZGUgIkZyYW1lLmgiCisjaW5jbHVkZSAiRnJhbWVMb2FkZXIuaCIKKyNpbmNsdWRlICJHYWlu
Tm9kZS5oIgorI2luY2x1ZGUgIkdlbmVyaWNFdmVudFF1ZXVlLmgiCisjaW5jbHVkZSAiSFJURkRh
dGFiYXNlTG9hZGVyLmgiCisjaW5jbHVkZSAiSFJURlBhbm5lci5oIgorI2luY2x1ZGUgIkpTRE9N
UHJvbWlzZURlZmVycmVkLmgiCisjaW5jbHVkZSAiTG9nZ2luZy5oIgorI2luY2x1ZGUgIk5ldHdv
cmtpbmdDb250ZXh0LmgiCisjaW5jbHVkZSAiT2ZmbGluZUF1ZGlvQ29tcGxldGlvbkV2ZW50Lmgi
CisjaW5jbHVkZSAiT2ZmbGluZUF1ZGlvRGVzdGluYXRpb25Ob2RlLmgiCisjaW5jbHVkZSAiT3Nj
aWxsYXRvck5vZGUuaCIKKyNpbmNsdWRlICJQYWdlLmgiCisjaW5jbHVkZSAiUGFubmVyTm9kZS5o
IgorI2luY2x1ZGUgIlBlcmlvZGljV2F2ZS5oIgorI2luY2x1ZGUgIlBsYXRmb3JtTWVkaWFTZXNz
aW9uTWFuYWdlci5oIgorI2luY2x1ZGUgIlNjcmlwdENvbnRyb2xsZXIuaCIKKyNpbmNsdWRlICJT
Y3JpcHRQcm9jZXNzb3JOb2RlLmgiCisjaW5jbHVkZSAiV2F2ZVNoYXBlck5vZGUuaCIKKyNpbmNs
dWRlIDxKYXZhU2NyaXB0Q29yZS9TY3JpcHRDYWxsU3RhY2suaD4KKworI2lmIEVOQUJMRShNRURJ
QV9TVFJFQU0pCisjaW5jbHVkZSAiTWVkaWFTdHJlYW0uaCIKKyNpbmNsdWRlICJNZWRpYVN0cmVh
bUF1ZGlvRGVzdGluYXRpb25Ob2RlLmgiCisjaW5jbHVkZSAiTWVkaWFTdHJlYW1BdWRpb1NvdXJj
ZS5oIgorI2luY2x1ZGUgIk1lZGlhU3RyZWFtQXVkaW9Tb3VyY2VOb2RlLmgiCisjZW5kaWYKKwor
I2lmIEVOQUJMRShWSURFTykKKyNpbmNsdWRlICJIVE1MTWVkaWFFbGVtZW50LmgiCisjaW5jbHVk
ZSAiTWVkaWFFbGVtZW50QXVkaW9Tb3VyY2VOb2RlLmgiCisjZW5kaWYKKworI2lmIERFQlVHX0FV
RElPTk9ERV9SRUZFUkVOQ0VTCisjaW5jbHVkZSA8c3RkaW8uaD4KKyNlbmRpZgorCisjaWYgVVNF
KEdTVFJFQU1FUikKKyNpbmNsdWRlICJHU3RyZWFtZXJDb21tb24uaCIKKyNlbmRpZgorCisjaWYg
UExBVEZPUk0oSU9TX0ZBTUlMWSkKKyNpbmNsdWRlICJTY3JpcHRDb250cm9sbGVyLmgiCisjaW5j
bHVkZSAiU2V0dGluZ3MuaCIKKyNlbmRpZgorCisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvQXJy
YXlCdWZmZXIuaD4KKyNpbmNsdWRlIDx3dGYvQXRvbWljcy5oPgorI2luY2x1ZGUgPHd0Zi9Jc29N
YWxsb2NJbmxpbmVzLmg+CisjaW5jbHVkZSA8d3RmL01haW5UaHJlYWQuaD4KKyNpbmNsdWRlIDx3
dGYvUmVmLmg+CisjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KKyNpbmNsdWRlIDx3dGYvU2Nv
cGUuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KKworY29uc3QgdW5zaWduZWQg
TWF4UGVyaW9kaWNXYXZlTGVuZ3RoID0gNDA5NjsKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitX
VEZfTUFLRV9JU09fQUxMT0NBVEVEX0lNUEwoV2ViS2l0QXVkaW9Db250ZXh0KTsKKworI2RlZmlu
ZSBSRUxFQVNFX0xPR19JRl9BTExPV0VEKGZtdCwgLi4uKSBSRUxFQVNFX0xPR19JRihkb2N1bWVu
dCgpICYmIGRvY3VtZW50KCktPnBhZ2UoKSAmJiBkb2N1bWVudCgpLT5wYWdlKCktPmlzQWx3YXlz
T25Mb2dnaW5nQWxsb3dlZCgpLCBNZWRpYSwgIiVwIC0gV2ViS2l0QXVkaW9Db250ZXh0OjoiIGZt
dCwgdGhpcywgIyNfX1ZBX0FSR1NfXykKKworYm9vbCBXZWJLaXRBdWRpb0NvbnRleHQ6OmlzU2Ft
cGxlUmF0ZVJhbmdlR29vZChmbG9hdCBzYW1wbGVSYXRlKQoreworICAgIC8vIEZJWE1FOiBJdCB3
b3VsZCBiZSBuaWNlIGlmIHRoZSBtaW5pbXVtIHNhbXBsZS1yYXRlIGNvdWxkIGJlIGxlc3MgdGhh
biA0NC4xS0h6LAorICAgIC8vIGJ1dCB0aGF0IHdpbGwgcmVxdWlyZSBzb21lIGZpeGVzIGluIEhS
VEZQYW5uZXI6OmZmdFNpemVGb3JTYW1wbGVSYXRlKCksIGFuZCBzb21lIHRlc3RpbmcgdGhlcmUu
CisgICAgcmV0dXJuIHNhbXBsZVJhdGUgPj0gNDQxMDAgJiYgc2FtcGxlUmF0ZSA8PSA5NjAwMDsK
K30KKworI2lmIE9TKFdJTkRPV1MpCisvLyBEb24ndCBhbGxvdyBtb3JlIHRoYW4gdGhpcyBudW1i
ZXIgb2Ygc2ltdWx0YW5lb3VzIEF1ZGlvQ29udGV4dHMgdGFsa2luZyB0byBoYXJkd2FyZS4KK2Nv
bnN0ZXhwciB1bnNpZ25lZCBtYXhIYXJkd2FyZUNvbnRleHRzID0gNDsKKyNlbmRpZgordW5zaWdu
ZWQgV2ViS2l0QXVkaW9Db250ZXh0OjpzX2hhcmR3YXJlQ29udGV4dENvdW50ID0gMDsKKworRXhj
ZXB0aW9uT3I8UmVmPFdlYktpdEF1ZGlvQ29udGV4dD4+IFdlYktpdEF1ZGlvQ29udGV4dDo6Y3Jl
YXRlKERvY3VtZW50JiBkb2N1bWVudCkKK3sKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwor
I2lmIE9TKFdJTkRPV1MpCisgICAgaWYgKHNfaGFyZHdhcmVDb250ZXh0Q291bnQgPj0gbWF4SGFy
ZHdhcmVDb250ZXh0cykKKyAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IFF1b3RhRXhjZWVkZWRF
cnJvciB9OworI2VuZGlmCisKKyAgICBhdXRvIGF1ZGlvQ29udGV4dCA9IGFkb3B0UmVmKCpuZXcg
V2ViS2l0QXVkaW9Db250ZXh0KGRvY3VtZW50KSk7CisgICAgYXVkaW9Db250ZXh0LT5zdXNwZW5k
SWZOZWVkZWQoKTsKKyAgICByZXR1cm4gYXVkaW9Db250ZXh0OworfQorCisvLyBDb25zdHJ1Y3Rv
ciBmb3IgcmVuZGVyaW5nIHRvIHRoZSBhdWRpbyBoYXJkd2FyZS4KK1dlYktpdEF1ZGlvQ29udGV4
dDo6V2ViS2l0QXVkaW9Db250ZXh0KERvY3VtZW50JiBkb2N1bWVudCkKKyAgICA6IEFjdGl2ZURP
TU9iamVjdChkb2N1bWVudCkKKyNpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKKyAgICAsIG1fbG9n
Z2VyKGRvY3VtZW50LmxvZ2dlcigpKQorICAgICwgbV9sb2dJZGVudGlmaWVyKHVuaXF1ZUxvZ0lk
ZW50aWZpZXIoKSkKKyNlbmRpZgorICAgICwgbV9tZWRpYVNlc3Npb24oUGxhdGZvcm1NZWRpYVNl
c3Npb246OmNyZWF0ZShQbGF0Zm9ybU1lZGlhU2Vzc2lvbk1hbmFnZXI6OnNoYXJlZE1hbmFnZXIo
KSwgKnRoaXMpKQorICAgICwgbV9ldmVudFF1ZXVlKE1haW5UaHJlYWRHZW5lcmljRXZlbnRRdWV1
ZTo6Y3JlYXRlKCp0aGlzKSkKK3sKKyAgICAvLyBBY2NvcmRpbmcgdG8gc3BlYyBBdWRpb0NvbnRl
eHQgbXVzdCBkaWUgb25seSBhZnRlciBwYWdlIG5hdmlnYXRlLgorICAgIC8vIExldHMgbWFyayBp
dCBhcyBBY3RpdmVET01PYmplY3Qgd2l0aCBwZW5kaW5nIGFjdGl2aXR5IGFuZCB1bm1hcmsgaXQg
aW4gY2xlYXIgbWV0aG9kLgorICAgIG1ha2VQZW5kaW5nQWN0aXZpdHkoKTsKKworICAgIGNvbnN0
cnVjdENvbW1vbigpOworCisgICAgbV9kZXN0aW5hdGlvbk5vZGUgPSBEZWZhdWx0QXVkaW9EZXN0
aW5hdGlvbk5vZGU6OmNyZWF0ZSgqdGhpcyk7CisKKyAgICAvLyBJbml0aWFsaXplIHRoZSBkZXN0
aW5hdGlvbiBub2RlJ3MgbXV0ZWQgc3RhdGUgdG8gbWF0Y2ggdGhlIHBhZ2UncyBjdXJyZW50IG11
dGVkIHN0YXRlLgorICAgIHBhZ2VNdXRlZFN0YXRlRGlkQ2hhbmdlKCk7CisKKyAgICBkb2N1bWVu
dC5hZGRBdWRpb1Byb2R1Y2VyKCp0aGlzKTsKKyAgICBkb2N1bWVudC5yZWdpc3RlckZvclZpc2li
aWxpdHlTdGF0ZUNoYW5nZWRDYWxsYmFja3MoKnRoaXMpOworfQorCisvLyBDb25zdHJ1Y3RvciBm
b3Igb2ZmbGluZSAobm9uLXJlYWx0aW1lKSByZW5kZXJpbmcuCitXZWJLaXRBdWRpb0NvbnRleHQ6
OldlYktpdEF1ZGlvQ29udGV4dChEb2N1bWVudCYgZG9jdW1lbnQsIEF1ZGlvQnVmZmVyKiByZW5k
ZXJUYXJnZXQpCisgICAgOiBBY3RpdmVET01PYmplY3QoZG9jdW1lbnQpCisjaWYgIVJFTEVBU0Vf
TE9HX0RJU0FCTEVECisgICAgLCBtX2xvZ2dlcihkb2N1bWVudC5sb2dnZXIoKSkKKyAgICAsIG1f
bG9nSWRlbnRpZmllcih1bmlxdWVMb2dJZGVudGlmaWVyKCkpCisjZW5kaWYKKyAgICAsIG1faXNP
ZmZsaW5lQ29udGV4dCh0cnVlKQorICAgICwgbV9tZWRpYVNlc3Npb24oUGxhdGZvcm1NZWRpYVNl
c3Npb246OmNyZWF0ZShQbGF0Zm9ybU1lZGlhU2Vzc2lvbk1hbmFnZXI6OnNoYXJlZE1hbmFnZXIo
KSwgKnRoaXMpKQorICAgICwgbV9ldmVudFF1ZXVlKE1haW5UaHJlYWRHZW5lcmljRXZlbnRRdWV1
ZTo6Y3JlYXRlKCp0aGlzKSkKKyAgICAsIG1fcmVuZGVyVGFyZ2V0KHJlbmRlclRhcmdldCkKK3sK
KyAgICBjb25zdHJ1Y3RDb21tb24oKTsKKworICAgIC8vIENyZWF0ZSBhIG5ldyBkZXN0aW5hdGlv
biBmb3Igb2ZmbGluZSByZW5kZXJpbmcuCisgICAgbV9kZXN0aW5hdGlvbk5vZGUgPSBPZmZsaW5l
QXVkaW9EZXN0aW5hdGlvbk5vZGU6OmNyZWF0ZSgqdGhpcywgbV9yZW5kZXJUYXJnZXQuZ2V0KCkp
OworfQorCit2b2lkIFdlYktpdEF1ZGlvQ29udGV4dDo6Y29uc3RydWN0Q29tbW9uKCkKK3sKKyAg
ICBGRlRGcmFtZTo6aW5pdGlhbGl6ZSgpOworCisgICAgbV9saXN0ZW5lciA9IEF1ZGlvTGlzdGVu
ZXI6OmNyZWF0ZSgpOworCisgICAgQVNTRVJUKGRvY3VtZW50KCkpOworICAgIGlmIChkb2N1bWVu
dCgpLT5hdWRpb1BsYXliYWNrUmVxdWlyZXNVc2VyR2VzdHVyZSgpKQorICAgICAgICBhZGRCZWhh
dmlvclJlc3RyaWN0aW9uKFJlcXVpcmVVc2VyR2VzdHVyZUZvckF1ZGlvU3RhcnRSZXN0cmljdGlv
bik7CisgICAgZWxzZQorICAgICAgICBtX3Jlc3RyaWN0aW9ucyA9IE5vUmVzdHJpY3Rpb25zOwor
CisjaWYgUExBVEZPUk0oQ09DT0EpCisgICAgYWRkQmVoYXZpb3JSZXN0cmljdGlvbihSZXF1aXJl
UGFnZUNvbnNlbnRGb3JBdWRpb1N0YXJ0UmVzdHJpY3Rpb24pOworI2VuZGlmCit9CisKK1dlYktp
dEF1ZGlvQ29udGV4dDo6fkF1ZGlvQ29udGV4dCgpCit7CisjaWYgREVCVUdfQVVESU9OT0RFX1JF
RkVSRU5DRVMKKyAgICBmcHJpbnRmKHN0ZGVyciwgIiVwOiBXZWJLaXRBdWRpb0NvbnRleHQ6On5B
dWRpb0NvbnRleHQoKVxuIiwgdGhpcyk7CisjZW5kaWYKKyAgICBBU1NFUlQoIW1faXNJbml0aWFs
aXplZCk7CisgICAgQVNTRVJUKG1faXNTdG9wU2NoZWR1bGVkKTsKKyAgICBBU1NFUlQobV9ub2Rl
c1RvRGVsZXRlLmlzRW1wdHkoKSk7CisgICAgQVNTRVJUKG1fcmVmZXJlbmNlZE5vZGVzLmlzRW1w
dHkoKSk7CisgICAgQVNTRVJUKG1fZmluaXNoZWROb2Rlcy5pc0VtcHR5KCkpOyAvLyBGSVhNRSAo
YnVnIDEwNTg3MCk6IFRoaXMgYXNzZXJ0aW9uIGZhaWxzIG9uIHRlc3RzIHNvbWV0aW1lcy4KKyAg
ICBBU1NFUlQobV9hdXRvbWF0aWNQdWxsTm9kZXMuaXNFbXB0eSgpKTsKKyAgICBpZiAobV9hdXRv
bWF0aWNQdWxsTm9kZXNOZWVkVXBkYXRpbmcpCisgICAgICAgIG1fcmVuZGVyaW5nQXV0b21hdGlj
UHVsbE5vZGVzLnJlc2l6ZShtX2F1dG9tYXRpY1B1bGxOb2Rlcy5zaXplKCkpOworICAgIEFTU0VS
VChtX3JlbmRlcmluZ0F1dG9tYXRpY1B1bGxOb2Rlcy5pc0VtcHR5KCkpOworICAgIC8vIEZJWE1F
OiBDYW4gd2UgYXNzZXJ0IHRoYXQgbV9kZWZlcnJlZEZpbmlzaERlcmVmTGlzdCBpcyBlbXB0eT8K
KworICAgIGlmICghaXNPZmZsaW5lQ29udGV4dCgpICYmIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQo
KSkgeworICAgICAgICBkb2N1bWVudCgpLT5yZW1vdmVBdWRpb1Byb2R1Y2VyKCp0aGlzKTsKKyAg
ICAgICAgZG9jdW1lbnQoKS0+dW5yZWdpc3RlckZvclZpc2liaWxpdHlTdGF0ZUNoYW5nZWRDYWxs
YmFja3MoKnRoaXMpOworICAgIH0KK30KKwordm9pZCBXZWJLaXRBdWRpb0NvbnRleHQ6OmxhenlJ
bml0aWFsaXplKCkKK3sKKyAgICBBU1NFUlQoIW1faXNTdG9wU2NoZWR1bGVkKTsKKworICAgIGlm
IChtX2lzSW5pdGlhbGl6ZWQpCisgICAgICAgIHJldHVybjsKKworICAgIC8vIERvbid0IGFsbG93
IHRoZSBjb250ZXh0IHRvIGluaXRpYWxpemUgYSBzZWNvbmQgdGltZSBhZnRlciBpdCdzIGFscmVh
ZHkgYmVlbiBleHBsaWNpdGx5IHVuaW5pdGlhbGl6ZWQuCisgICAgQVNTRVJUKCFtX2lzQXVkaW9U
aHJlYWRGaW5pc2hlZCk7CisgICAgaWYgKG1faXNBdWRpb1RocmVhZEZpbmlzaGVkKQorICAgICAg
ICByZXR1cm47CisKKyAgICBpZiAobV9kZXN0aW5hdGlvbk5vZGUpIHsKKyAgICAgICAgbV9kZXN0
aW5hdGlvbk5vZGUtPmluaXRpYWxpemUoKTsKKworICAgICAgICBpZiAoIWlzT2ZmbGluZUNvbnRl
eHQoKSkgeworICAgICAgICAgICAgLy8gVGhpcyBzdGFydHMgdGhlIGF1ZGlvIHRocmVhZC4gVGhl
IGRlc3RpbmF0aW9uIG5vZGUncyBwcm92aWRlSW5wdXQoKSBtZXRob2Qgd2lsbCBub3cgYmUgY2Fs
bGVkIHJlcGVhdGVkbHkgdG8gcmVuZGVyIGF1ZGlvLgorICAgICAgICAgICAgLy8gRWFjaCB0aW1l
IHByb3ZpZGVJbnB1dCgpIGlzIGNhbGxlZCwgYSBwb3J0aW9uIG9mIHRoZSBhdWRpbyBzdHJlYW0g
aXMgcmVuZGVyZWQuIExldCdzIGNhbGwgdGhpcyB0aW1lIHBlcmlvZCBhICJyZW5kZXIgcXVhbnR1
bSIuCisgICAgICAgICAgICAvLyBOT1RFOiBmb3Igbm93IGRlZmF1bHQgQXVkaW9Db250ZXh0IGRv
ZXMgbm90IG5lZWQgYW4gZXhwbGljaXQgc3RhcnRSZW5kZXJpbmcoKSBjYWxsIGZyb20gSmF2YVNj
cmlwdC4KKyAgICAgICAgICAgIC8vIFdlIG1heSB3YW50IHRvIGNvbnNpZGVyIHJlcXVpcmluZyBp
dCBmb3Igc3ltbWV0cnkgd2l0aCBPZmZsaW5lQXVkaW9Db250ZXh0LgorICAgICAgICAgICAgc3Rh
cnRSZW5kZXJpbmcoKTsKKyAgICAgICAgICAgICsrc19oYXJkd2FyZUNvbnRleHRDb3VudDsKKyAg
ICAgICAgfQorICAgIH0KKyAgICBtX2lzSW5pdGlhbGl6ZWQgPSB0cnVlOworfQorCit2b2lkIFdl
YktpdEF1ZGlvQ29udGV4dDo6Y2xlYXIoKQoreworICAgIFJlZjxXZWJLaXRBdWRpb0NvbnRleHQ+
IHByb3RlY3RlZFRoaXMoKnRoaXMpOworCisgICAgLy8gV2UgaGF2ZSB0byByZWxlYXNlIG91ciBy
ZWZlcmVuY2UgdG8gdGhlIGRlc3RpbmF0aW9uIG5vZGUgYmVmb3JlIHRoZSBjb250ZXh0IHdpbGwg
ZXZlciBiZSBkZWxldGVkIHNpbmNlIHRoZSBkZXN0aW5hdGlvbiBub2RlIGhvbGRzIGEgcmVmZXJl
bmNlIHRvIHRoZSBjb250ZXh0LgorICAgIGlmIChtX2Rlc3RpbmF0aW9uTm9kZSkKKyAgICAgICAg
bV9kZXN0aW5hdGlvbk5vZGUgPSBudWxscHRyOworCisgICAgLy8gQXVkaW8gdGhyZWFkIGlzIGRl
YWQuIE5vYm9keSB3aWxsIHNjaGVkdWxlIG5vZGUgZGVsZXRpb24gYWN0aW9uLiBMZXQncyBkbyBp
dCBvdXJzZWx2ZXMuCisgICAgZG8geworICAgICAgICBkZWxldGVNYXJrZWROb2RlcygpOworICAg
ICAgICBtX25vZGVzVG9EZWxldGUuYXBwZW5kVmVjdG9yKG1fbm9kZXNNYXJrZWRGb3JEZWxldGlv
bik7CisgICAgICAgIG1fbm9kZXNNYXJrZWRGb3JEZWxldGlvbi5jbGVhcigpOworICAgIH0gd2hp
bGUgKG1fbm9kZXNUb0RlbGV0ZS5zaXplKCkpOworCisgICAgY2xlYXJQZW5kaW5nQWN0aXZpdHko
KTsKK30KKwordm9pZCBXZWJLaXRBdWRpb0NvbnRleHQ6OnVuaW5pdGlhbGl6ZSgpCit7CisgICAg
QUxXQVlTX0xPRyhMT0dJREVOVElGSUVSKTsKKworICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7
CisKKyAgICBpZiAoIW1faXNJbml0aWFsaXplZCkKKyAgICAgICAgcmV0dXJuOworCisgICAgLy8g
VGhpcyBzdG9wcyB0aGUgYXVkaW8gdGhyZWFkIGFuZCBhbGwgYXVkaW8gcmVuZGVyaW5nLgorICAg
IGlmIChtX2Rlc3RpbmF0aW9uTm9kZSkKKyAgICAgICAgbV9kZXN0aW5hdGlvbk5vZGUtPnVuaW5p
dGlhbGl6ZSgpOworCisgICAgLy8gRG9uJ3QgYWxsb3cgdGhlIGNvbnRleHQgdG8gaW5pdGlhbGl6
ZSBhIHNlY29uZCB0aW1lIGFmdGVyIGl0J3MgYWxyZWFkeSBiZWVuIGV4cGxpY2l0bHkgdW5pbml0
aWFsaXplZC4KKyAgICBtX2lzQXVkaW9UaHJlYWRGaW5pc2hlZCA9IHRydWU7CisKKyAgICBpZiAo
IWlzT2ZmbGluZUNvbnRleHQoKSkgeworICAgICAgICBBU1NFUlQoc19oYXJkd2FyZUNvbnRleHRD
b3VudCk7CisgICAgICAgIC0tc19oYXJkd2FyZUNvbnRleHRDb3VudDsKKworICAgICAgICAvLyBP
ZmZsaW5lIGNvbnRleHRzIG1vdmUgdG8gJ0Nsb3NlZCcgc3RhdGUgd2hlbiBkaXNwYXRjaGluZyB0
aGUgY29tcGxldGlvbiBldmVudC4KKyAgICAgICAgc2V0U3RhdGUoU3RhdGU6OkNsb3NlZCk7Cisg
ICAgfQorCisgICAgLy8gR2V0IHJpZCBvZiB0aGUgc291cmNlcyB3aGljaCBtYXkgc3RpbGwgYmUg
cGxheWluZy4KKyAgICBkZXJlZlVuZmluaXNoZWRTb3VyY2VOb2RlcygpOworCisgICAgbV9pc0lu
aXRpYWxpemVkID0gZmFsc2U7Cit9CisKK2Jvb2wgV2ViS2l0QXVkaW9Db250ZXh0Ojppc0luaXRp
YWxpemVkKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9pc0luaXRpYWxpemVkOworfQorCit2b2lk
IFdlYktpdEF1ZGlvQ29udGV4dDo6YWRkUmVhY3Rpb24oU3RhdGUgc3RhdGUsIERPTVByb21pc2VE
ZWZlcnJlZDx2b2lkPiYmIHByb21pc2UpCit7CisgICAgc2l6ZV90IHN0YXRlSW5kZXggPSBzdGF0
aWNfY2FzdDxzaXplX3Q+KHN0YXRlKTsKKyAgICBpZiAoc3RhdGVJbmRleCA+PSBtX3N0YXRlUmVh
Y3Rpb25zLnNpemUoKSkKKyAgICAgICAgbV9zdGF0ZVJlYWN0aW9ucy5ncm93KHN0YXRlSW5kZXgg
KyAxKTsKKworICAgIG1fc3RhdGVSZWFjdGlvbnNbc3RhdGVJbmRleF0uYXBwZW5kKFdURk1vdmUo
cHJvbWlzZSkpOworfQorCit2b2lkIFdlYktpdEF1ZGlvQ29udGV4dDo6c2V0U3RhdGUoU3RhdGUg
c3RhdGUpCit7CisgICAgaWYgKG1fc3RhdGUgPT0gc3RhdGUpCisgICAgICAgIHJldHVybjsKKwor
ICAgIG1fc3RhdGUgPSBzdGF0ZTsKKyAgICBtX2V2ZW50UXVldWUtPmVucXVldWVFdmVudChFdmVu
dDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5zdGF0ZWNoYW5nZUV2ZW50LCBFdmVudDo6Q2FuQnViYmxl
OjpZZXMsIEV2ZW50OjpJc0NhbmNlbGFibGU6Ok5vKSk7CisKKyAgICBzaXplX3Qgc3RhdGVJbmRl
eCA9IHN0YXRpY19jYXN0PHNpemVfdD4oc3RhdGUpOworICAgIGlmIChzdGF0ZUluZGV4ID49IG1f
c3RhdGVSZWFjdGlvbnMuc2l6ZSgpKQorICAgICAgICByZXR1cm47CisKKyAgICBWZWN0b3I8RE9N
UHJvbWlzZURlZmVycmVkPHZvaWQ+PiByZWFjdGlvbnM7CisgICAgbV9zdGF0ZVJlYWN0aW9uc1tz
dGF0ZUluZGV4XS5zd2FwKHJlYWN0aW9ucyk7CisKKyAgICBmb3IgKGF1dG8mIHByb21pc2UgOiBy
ZWFjdGlvbnMpCisgICAgICAgIHByb21pc2UucmVzb2x2ZSgpOworfQorCit2b2lkIFdlYktpdEF1
ZGlvQ29udGV4dDo6c3RvcCgpCit7CisgICAgQUxXQVlTX0xPRyhMT0dJREVOVElGSUVSKTsKKwor
ICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisKKyAgICAvLyBVc3VhbGx5IFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQgY2FsbHMgc3RvcCB0d2ljZS4KKyAgICBpZiAobV9pc1N0b3BTY2hlZHVsZWQp
CisgICAgICAgIHJldHVybjsKKyAgICBtX2lzU3RvcFNjaGVkdWxlZCA9IHRydWU7CisKKyAgICBB
U1NFUlQoZG9jdW1lbnQoKSk7CisgICAgZG9jdW1lbnQoKS0+dXBkYXRlSXNQbGF5aW5nTWVkaWEo
KTsKKworICAgIHVuaW5pdGlhbGl6ZSgpOworICAgIGNsZWFyKCk7Cit9CisKK3ZvaWQgV2ViS2l0
QXVkaW9Db250ZXh0OjpzdXNwZW5kKFJlYXNvbkZvclN1c3BlbnNpb24pCit7CisgICAgaWYgKHN0
YXRlKCkgPT0gU3RhdGU6OlJ1bm5pbmcpIHsKKyAgICAgICAgbV9tZWRpYVNlc3Npb24tPmJlZ2lu
SW50ZXJydXB0aW9uKFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpQbGF5YmFja1N1c3BlbmRlZCk7Cisg
ICAgICAgIGRvY3VtZW50KCktPnVwZGF0ZUlzUGxheWluZ01lZGlhKCk7CisgICAgfQorfQorCit2
b2lkIFdlYktpdEF1ZGlvQ29udGV4dDo6cmVzdW1lKCkKK3sKKyAgICBpZiAoc3RhdGUoKSA9PSBT
dGF0ZTo6SW50ZXJydXB0ZWQpIHsKKyAgICAgICAgbV9tZWRpYVNlc3Npb24tPmVuZEludGVycnVw
dGlvbihQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6TWF5UmVzdW1lUGxheWluZyk7CisgICAgICAgIGRv
Y3VtZW50KCktPnVwZGF0ZUlzUGxheWluZ01lZGlhKCk7CisgICAgfQorfQorCitjb25zdCBjaGFy
KiBXZWJLaXRBdWRpb0NvbnRleHQ6OmFjdGl2ZURPTU9iamVjdE5hbWUoKSBjb25zdAoreworICAg
IHJldHVybiAiV2ViS2l0QXVkaW9Db250ZXh0IjsKK30KKworRG9jdW1lbnQqIFdlYktpdEF1ZGlv
Q29udGV4dDo6ZG9jdW1lbnQoKSBjb25zdAoreworICAgIHJldHVybiBkb3duY2FzdDxEb2N1bWVu
dD4obV9zY3JpcHRFeGVjdXRpb25Db250ZXh0KTsKK30KKworRG9jdW1lbnRJZGVudGlmaWVyIFdl
YktpdEF1ZGlvQ29udGV4dDo6aG9zdGluZ0RvY3VtZW50SWRlbnRpZmllcigpIGNvbnN0Cit7Cisg
ICAgYXV0byogZG9jdW1lbnQgPSBkb3duY2FzdDxEb2N1bWVudD4obV9zY3JpcHRFeGVjdXRpb25D
b250ZXh0KTsKKyAgICByZXR1cm4gZG9jdW1lbnQgPyBkb2N1bWVudC0+aWRlbnRpZmllcigpIDog
RG9jdW1lbnRJZGVudGlmaWVyIHsgfTsKK30KKworYm9vbCBXZWJLaXRBdWRpb0NvbnRleHQ6Omlz
U3VzcGVuZGVkKCkgY29uc3QKK3sKKyAgICByZXR1cm4gIWRvY3VtZW50KCkgfHwgZG9jdW1lbnQo
KS0+YWN0aXZlRE9NT2JqZWN0c0FyZVN1c3BlbmRlZCgpIHx8IGRvY3VtZW50KCktPmFjdGl2ZURP
TU9iamVjdHNBcmVTdG9wcGVkKCk7Cit9CisKK3ZvaWQgV2ViS2l0QXVkaW9Db250ZXh0Ojp2aXNp
YmlsaXR5U3RhdGVDaGFuZ2VkKCkKK3sKKyAgICAvLyBEbyBub3Qgc3VzcGVuZCBpZiBhdWRpbyBp
cyBhdWRpYmxlLgorICAgIGlmICghZG9jdW1lbnQoKSB8fCBtZWRpYVN0YXRlKCkgPT0gTWVkaWFQ
cm9kdWNlcjo6SXNQbGF5aW5nQXVkaW8gfHwgbV9pc1N0b3BTY2hlZHVsZWQpCisgICAgICAgIHJl
dHVybjsKKworICAgIGlmIChkb2N1bWVudCgpLT5oaWRkZW4oKSkgeworICAgICAgICBpZiAoc3Rh
dGUoKSA9PSBTdGF0ZTo6UnVubmluZykgeworICAgICAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxM
T1dFRCgidmlzaWJpbGl0eVN0YXRlQ2hhbmdlZCgpIFN1c3BlbmRpbmcgcGxheWJhY2sgYWZ0ZXIg
Z29pbmcgdG8gdGhlIGJhY2tncm91bmQiKTsKKyAgICAgICAgICAgIG1fbWVkaWFTZXNzaW9uLT5i
ZWdpbkludGVycnVwdGlvbihQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6RW50ZXJpbmdCYWNrZ3JvdW5k
KTsKKyAgICAgICAgfQorICAgIH0gZWxzZSB7CisgICAgICAgIGlmIChzdGF0ZSgpID09IFN0YXRl
OjpJbnRlcnJ1cHRlZCkgeworICAgICAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgidmlz
aWJpbGl0eVN0YXRlQ2hhbmdlZCgpIFJlc3VtaW5nIHBsYXliYWNrIGFmdGVyIGVudGVyaW5nIGZv
cmVncm91bmQiKTsKKyAgICAgICAgICAgIG1fbWVkaWFTZXNzaW9uLT5lbmRJbnRlcnJ1cHRpb24o
UGxhdGZvcm1NZWRpYVNlc3Npb246Ok1heVJlc3VtZVBsYXlpbmcpOworICAgICAgICB9CisgICAg
fQorfQorCitib29sIFdlYktpdEF1ZGlvQ29udGV4dDo6d291bGRUYWludE9yaWdpbihjb25zdCBV
UkwmIHVybCkgY29uc3QKK3sKKyAgICBpZiAodXJsLnByb3RvY29sSXNEYXRhKCkpCisgICAgICAg
IHJldHVybiBmYWxzZTsKKworICAgIGlmIChhdXRvKiBkb2N1bWVudCA9IHRoaXMtPmRvY3VtZW50
KCkpCisgICAgICAgIHJldHVybiAhZG9jdW1lbnQtPnNlY3VyaXR5T3JpZ2luKCkuY2FuUmVxdWVz
dCh1cmwpOworCisgICAgcmV0dXJuIGZhbHNlOworfQorCitFeGNlcHRpb25PcjxSZWY8QXVkaW9C
dWZmZXI+PiBXZWJLaXRBdWRpb0NvbnRleHQ6OmNyZWF0ZUJ1ZmZlcih1bnNpZ25lZCBudW1iZXJP
ZkNoYW5uZWxzLCBzaXplX3QgbnVtYmVyT2ZGcmFtZXMsIGZsb2F0IHNhbXBsZVJhdGUpCit7Cisg
ICAgYXV0byBhdWRpb0J1ZmZlciA9IEF1ZGlvQnVmZmVyOjpjcmVhdGUobnVtYmVyT2ZDaGFubmVs
cywgbnVtYmVyT2ZGcmFtZXMsIHNhbXBsZVJhdGUpOworICAgIGlmICghYXVkaW9CdWZmZXIpCisg
ICAgICAgIHJldHVybiBFeGNlcHRpb24geyBOb3RTdXBwb3J0ZWRFcnJvciB9OworICAgIHJldHVy
biBhdWRpb0J1ZmZlci5yZWxlYXNlTm9uTnVsbCgpOworfQorCitFeGNlcHRpb25PcjxSZWY8QXVk
aW9CdWZmZXI+PiBXZWJLaXRBdWRpb0NvbnRleHQ6OmNyZWF0ZUJ1ZmZlcihBcnJheUJ1ZmZlciYg
YXJyYXlCdWZmZXIsIGJvb2wgbWl4VG9Nb25vKQoreworICAgIGF1dG8gYXVkaW9CdWZmZXIgPSBB
dWRpb0J1ZmZlcjo6Y3JlYXRlRnJvbUF1ZGlvRmlsZURhdGEoYXJyYXlCdWZmZXIuZGF0YSgpLCBh
cnJheUJ1ZmZlci5ieXRlTGVuZ3RoKCksIG1peFRvTW9ubywgc2FtcGxlUmF0ZSgpKTsKKyAgICBp
ZiAoIWF1ZGlvQnVmZmVyKQorICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgU3ludGF4RXJyb3Ig
fTsKKyAgICByZXR1cm4gYXVkaW9CdWZmZXIucmVsZWFzZU5vbk51bGwoKTsKK30KKwordm9pZCBX
ZWJLaXRBdWRpb0NvbnRleHQ6OmRlY29kZUF1ZGlvRGF0YShSZWY8QXJyYXlCdWZmZXI+JiYgYXVk
aW9EYXRhLCBSZWZQdHI8QXVkaW9CdWZmZXJDYWxsYmFjaz4mJiBzdWNjZXNzQ2FsbGJhY2ssIFJl
ZlB0cjxBdWRpb0J1ZmZlckNhbGxiYWNrPiYmIGVycm9yQ2FsbGJhY2spCit7CisgICAgaWYgKCFt
X2F1ZGlvRGVjb2RlcikKKyAgICAgICAgbV9hdWRpb0RlY29kZXIgPSBtYWtlVW5pcXVlPEFzeW5j
QXVkaW9EZWNvZGVyPigpOworICAgIG1fYXVkaW9EZWNvZGVyLT5kZWNvZGVBc3luYyhXVEZNb3Zl
KGF1ZGlvRGF0YSksIHNhbXBsZVJhdGUoKSwgV1RGTW92ZShzdWNjZXNzQ2FsbGJhY2spLCBXVEZN
b3ZlKGVycm9yQ2FsbGJhY2spKTsKK30KKworRXhjZXB0aW9uT3I8UmVmPEF1ZGlvQnVmZmVyU291
cmNlTm9kZT4+IFdlYktpdEF1ZGlvQ29udGV4dDo6Y3JlYXRlQnVmZmVyU291cmNlKCkKK3sKKyAg
ICBBTFdBWVNfTE9HKExPR0lERU5USUZJRVIpOworCisgICAgQVNTRVJUKGlzTWFpblRocmVhZCgp
KTsKKworICAgIGlmIChtX2lzU3RvcFNjaGVkdWxlZCkKKyAgICAgICAgcmV0dXJuIEV4Y2VwdGlv
biB7IEludmFsaWRTdGF0ZUVycm9yIH07CisKKyAgICBsYXp5SW5pdGlhbGl6ZSgpOworICAgIFJl
ZjxBdWRpb0J1ZmZlclNvdXJjZU5vZGU+IG5vZGUgPSBBdWRpb0J1ZmZlclNvdXJjZU5vZGU6OmNy
ZWF0ZSgqdGhpcywgc2FtcGxlUmF0ZSgpKTsKKworICAgIC8vIEJlY2F1c2UgdGhpcyBpcyBhbiBB
dWRpb1NjaGVkdWxlZFNvdXJjZU5vZGUsIHRoZSBjb250ZXh0IGtlZXBzIGEgcmVmZXJlbmNlIHVu
dGlsIGl0IGhhcyBmaW5pc2hlZCBwbGF5aW5nLgorICAgIC8vIFdoZW4gdGhpcyBoYXBwZW5zLCBB
dWRpb1NjaGVkdWxlZFNvdXJjZU5vZGU6OmZpbmlzaCgpIGNhbGxzIFdlYktpdEF1ZGlvQ29udGV4
dDo6bm90aWZ5Tm9kZUZpbmlzaGVkUHJvY2Vzc2luZygpLgorICAgIHJlZk5vZGUobm9kZSk7CisK
KyAgICByZXR1cm4gbm9kZTsKK30KKworI2lmIEVOQUJMRShWSURFTykKKworRXhjZXB0aW9uT3I8
UmVmPE1lZGlhRWxlbWVudEF1ZGlvU291cmNlTm9kZT4+IFdlYktpdEF1ZGlvQ29udGV4dDo6Y3Jl
YXRlTWVkaWFFbGVtZW50U291cmNlKEhUTUxNZWRpYUVsZW1lbnQmIG1lZGlhRWxlbWVudCkKK3sK
KyAgICBBTFdBWVNfTE9HKExPR0lERU5USUZJRVIpOworCisgICAgQVNTRVJUKGlzTWFpblRocmVh
ZCgpKTsKKworICAgIGlmIChtX2lzU3RvcFNjaGVkdWxlZCB8fCBtZWRpYUVsZW1lbnQuYXVkaW9T
b3VyY2VOb2RlKCkpCisgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBJbnZhbGlkU3RhdGVFcnJv
ciB9OworCisgICAgbGF6eUluaXRpYWxpemUoKTsKKworICAgIGF1dG8gbm9kZSA9IE1lZGlhRWxl
bWVudEF1ZGlvU291cmNlTm9kZTo6Y3JlYXRlKCp0aGlzLCBtZWRpYUVsZW1lbnQpOworCisgICAg
bWVkaWFFbGVtZW50LnNldEF1ZGlvU291cmNlTm9kZShub2RlLnB0cigpKTsKKworICAgIHJlZk5v
ZGUobm9kZS5nZXQoKSk7IC8vIGNvbnRleHQga2VlcHMgcmVmZXJlbmNlIHVudGlsIG5vZGUgaXMg
ZGlzY29ubmVjdGVkCisgICAgcmV0dXJuIG5vZGU7Cit9CisKKyNlbmRpZgorCisjaWYgRU5BQkxF
KE1FRElBX1NUUkVBTSkKKworRXhjZXB0aW9uT3I8UmVmPE1lZGlhU3RyZWFtQXVkaW9Tb3VyY2VO
b2RlPj4gV2ViS2l0QXVkaW9Db250ZXh0OjpjcmVhdGVNZWRpYVN0cmVhbVNvdXJjZShNZWRpYVN0
cmVhbSYgbWVkaWFTdHJlYW0pCit7CisgICAgQUxXQVlTX0xPRyhMT0dJREVOVElGSUVSKTsKKwor
ICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisKKyAgICBpZiAobV9pc1N0b3BTY2hlZHVsZWQp
CisgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBJbnZhbGlkU3RhdGVFcnJvciB9OworCisgICAg
YXV0byBhdWRpb1RyYWNrcyA9IG1lZGlhU3RyZWFtLmdldEF1ZGlvVHJhY2tzKCk7CisgICAgaWYg
KGF1ZGlvVHJhY2tzLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IEludmFs
aWRTdGF0ZUVycm9yIH07CisKKyAgICBNZWRpYVN0cmVhbVRyYWNrKiBwcm92aWRlclRyYWNrID0g
bnVsbHB0cjsKKyAgICBmb3IgKGF1dG8mIHRyYWNrIDogYXVkaW9UcmFja3MpIHsKKyAgICAgICAg
aWYgKHRyYWNrLT5hdWRpb1NvdXJjZVByb3ZpZGVyKCkpIHsKKyAgICAgICAgICAgIHByb3ZpZGVy
VHJhY2sgPSB0cmFjay5nZXQoKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAg
fQorICAgIGlmICghcHJvdmlkZXJUcmFjaykKKyAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IElu
dmFsaWRTdGF0ZUVycm9yIH07CisKKyAgICBsYXp5SW5pdGlhbGl6ZSgpOworCisgICAgYXV0byBu
b2RlID0gTWVkaWFTdHJlYW1BdWRpb1NvdXJjZU5vZGU6OmNyZWF0ZSgqdGhpcywgbWVkaWFTdHJl
YW0sICpwcm92aWRlclRyYWNrKTsKKyAgICBub2RlLT5zZXRGb3JtYXQoMiwgc2FtcGxlUmF0ZSgp
KTsKKworICAgIHJlZk5vZGUobm9kZSk7IC8vIGNvbnRleHQga2VlcHMgcmVmZXJlbmNlIHVudGls
IG5vZGUgaXMgZGlzY29ubmVjdGVkCisgICAgcmV0dXJuIG5vZGU7Cit9CisKK0V4Y2VwdGlvbk9y
PFJlZjxNZWRpYVN0cmVhbUF1ZGlvRGVzdGluYXRpb25Ob2RlPj4gV2ViS2l0QXVkaW9Db250ZXh0
OjpjcmVhdGVNZWRpYVN0cmVhbURlc3RpbmF0aW9uKCkKK3sKKyAgICBpZiAobV9pc1N0b3BTY2hl
ZHVsZWQpCisgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBJbnZhbGlkU3RhdGVFcnJvciB9Owor
CisgICAgLy8gRklYTUU6IEFkZCBzdXBwb3J0IGZvciBhbiBvcHRpb25hbCBhcmd1bWVudCB3aGlj
aCBzcGVjaWZpZXMgdGhlIG51bWJlciBvZiBjaGFubmVscy4KKyAgICAvLyBGSVhNRTogVGhlIGRl
ZmF1bHQgc2hvdWxkIHByb2JhYmx5IGJlIHN0ZXJlbyBpbnN0ZWFkIG9mIG1vbm8uCisgICAgcmV0
dXJuIE1lZGlhU3RyZWFtQXVkaW9EZXN0aW5hdGlvbk5vZGU6OmNyZWF0ZSgqdGhpcywgMSk7Cit9
CisKKyNlbmRpZgorCitFeGNlcHRpb25PcjxSZWY8U2NyaXB0UHJvY2Vzc29yTm9kZT4+IFdlYktp
dEF1ZGlvQ29udGV4dDo6Y3JlYXRlU2NyaXB0UHJvY2Vzc29yKHNpemVfdCBidWZmZXJTaXplLCBz
aXplX3QgbnVtYmVyT2ZJbnB1dENoYW5uZWxzLCBzaXplX3QgbnVtYmVyT2ZPdXRwdXRDaGFubmVs
cykKK3sKKyAgICBBTFdBWVNfTE9HKExPR0lERU5USUZJRVIpOworCisgICAgQVNTRVJUKGlzTWFp
blRocmVhZCgpKTsKKworICAgIGlmIChtX2lzU3RvcFNjaGVkdWxlZCkKKyAgICAgICAgcmV0dXJu
IEV4Y2VwdGlvbiB7IEludmFsaWRTdGF0ZUVycm9yIH07CisKKyAgICBsYXp5SW5pdGlhbGl6ZSgp
OworCisgICAgLy8gVzNDIEVkaXRvcidzIERyYWZ0IDA2IEp1bmUgMjAxNworICAgIC8vICBodHRw
czovL3dlYmF1ZGlvLmdpdGh1Yi5pby93ZWItYXVkaW8tYXBpLyN3aWRsLUJhc2VBdWRpb0NvbnRl
eHQtY3JlYXRlU2NyaXB0UHJvY2Vzc29yLVNjcmlwdFByb2Nlc3Nvck5vZGUtdW5zaWduZWQtbG9u
Zy1idWZmZXJTaXplLXVuc2lnbmVkLWxvbmctbnVtYmVyT2ZJbnB1dENoYW5uZWxzLXVuc2lnbmVk
LWxvbmctbnVtYmVyT2ZPdXRwdXRDaGFubmVscworCisgICAgLy8gVGhlIGJ1ZmZlclNpemUgcGFy
YW1ldGVyIGRldGVybWluZXMgdGhlIGJ1ZmZlciBzaXplIGluIHVuaXRzIG9mIHNhbXBsZS1mcmFt
ZXMuIElmIGl0J3Mgbm90IHBhc3NlZCBpbiwKKyAgICAvLyBvciBpZiB0aGUgdmFsdWUgaXMgMCwg
dGhlbiB0aGUgaW1wbGVtZW50YXRpb24gd2lsbCBjaG9vc2UgdGhlIGJlc3QgYnVmZmVyIHNpemUg
Zm9yIHRoZSBnaXZlbiBlbnZpcm9ubWVudCwKKyAgICAvLyB3aGljaCB3aWxsIGJlIGNvbnN0YW50
IHBvd2VyIG9mIDIgdGhyb3VnaG91dCB0aGUgbGlmZXRpbWUgb2YgdGhlIG5vZGUuIC4uLiBJZiB0
aGUgdmFsdWUgb2YgdGhpcyBwYXJhbWV0ZXIKKyAgICAvLyBpcyBub3Qgb25lIG9mIHRoZSBhbGxv
d2VkIHBvd2VyLW9mLTIgdmFsdWVzIGxpc3RlZCBhYm92ZSwgYW4gSW5kZXhTaXplRXJyb3IgbXVz
dCBiZSB0aHJvd24uCisgICAgc3dpdGNoIChidWZmZXJTaXplKSB7CisgICAgY2FzZSAwOgorI2lm
IFVTRShBVURJT19TRVNTSU9OKQorICAgICAgICAvLyBQaWNrIGEgdmFsdWUgYmV0d2VlbiAyNTYg
KDJeOCkgYW5kIDE2Mzg0ICgyXjE0KSwgYmFzZWQgb24gdGhlIGJ1ZmZlciBzaXplIG9mIHRoZSBj
dXJyZW50IEF1ZGlvU2Vzc2lvbjoKKyAgICAgICAgYnVmZmVyU2l6ZSA9IDEgPDwgc3RkOjptYXg8
c2l6ZV90Pig4LCBzdGQ6Om1pbjxzaXplX3Q+KDE0LCBzdGQ6OmxvZzIoQXVkaW9TZXNzaW9uOjpz
aGFyZWRTZXNzaW9uKCkuYnVmZmVyU2l6ZSgpKSkpOworI2Vsc2UKKyAgICAgICAgYnVmZmVyU2l6
ZSA9IDIwNDg7CisjZW5kaWYKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSAyNTY6CisgICAgY2Fz
ZSA1MTI6CisgICAgY2FzZSAxMDI0OgorICAgIGNhc2UgMjA0ODoKKyAgICBjYXNlIDQwOTY6Cisg
ICAgY2FzZSA4MTkyOgorICAgIGNhc2UgMTYzODQ6CisgICAgICAgIGJyZWFrOworICAgIGRlZmF1
bHQ6CisgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBJbmRleFNpemVFcnJvciB9OworICAgIH0K
KworICAgIC8vIEFuIEluZGV4U2l6ZUVycm9yIGV4Y2VwdGlvbiBtdXN0IGJlIHRocm93biBpZiBi
dWZmZXJTaXplIG9yIG51bWJlck9mSW5wdXRDaGFubmVscyBvciBudW1iZXJPZk91dHB1dENoYW5u
ZWxzCisgICAgLy8gYXJlIG91dHNpZGUgdGhlIHZhbGlkIHJhbmdlLiBJdCBpcyBpbnZhbGlkIGZv
ciBib3RoIG51bWJlck9mSW5wdXRDaGFubmVscyBhbmQgbnVtYmVyT2ZPdXRwdXRDaGFubmVscyB0
byBiZSB6ZXJvLgorICAgIC8vIEluIHRoaXMgY2FzZSBhbiBJbmRleFNpemVFcnJvciBtdXN0IGJl
IHRocm93bi4KKworICAgIGlmICghbnVtYmVyT2ZJbnB1dENoYW5uZWxzICYmICFudW1iZXJPZk91
dHB1dENoYW5uZWxzKQorICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgTm90U3VwcG9ydGVkRXJy
b3IgfTsKKworICAgIC8vIFRoaXMgcGFyYW1ldGVyIFtudW1iZXJPZklucHV0Q2hhbm5lbHNdIGRl
dGVybWluZXMgdGhlIG51bWJlciBvZiBjaGFubmVscyBmb3IgdGhpcyBub2RlJ3MgaW5wdXQuIFZh
bHVlcyBvZgorICAgIC8vIHVwIHRvIDMyIG11c3QgYmUgc3VwcG9ydGVkLiBBIE5vdFN1cHBvcnRl
ZEVycm9yIG11c3QgYmUgdGhyb3duIGlmIHRoZSBudW1iZXIgb2YgY2hhbm5lbHMgaXMgbm90IHN1
cHBvcnRlZC4KKworICAgIGlmIChudW1iZXJPZklucHV0Q2hhbm5lbHMgPiBtYXhOdW1iZXJPZkNo
YW5uZWxzKCkpCisgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBOb3RTdXBwb3J0ZWRFcnJvciB9
OworCisgICAgLy8gVGhpcyBwYXJhbWV0ZXIgW251bWJlck9mT3V0cHV0Q2hhbm5lbHNdIGRldGVy
bWluZXMgdGhlIG51bWJlciBvZiBjaGFubmVscyBmb3IgdGhpcyBub2RlJ3Mgb3V0cHV0LiBWYWx1
ZXMgb2YKKyAgICAvLyB1cCB0byAzMiBtdXN0IGJlIHN1cHBvcnRlZC4gQSBOb3RTdXBwb3J0ZWRF
cnJvciBtdXN0IGJlIHRocm93biBpZiB0aGUgbnVtYmVyIG9mIGNoYW5uZWxzIGlzIG5vdCBzdXBw
b3J0ZWQuCisKKyAgICBpZiAobnVtYmVyT2ZPdXRwdXRDaGFubmVscyA+IG1heE51bWJlck9mQ2hh
bm5lbHMoKSkKKyAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IE5vdFN1cHBvcnRlZEVycm9yIH07
CisKKyAgICBhdXRvIG5vZGUgPSBTY3JpcHRQcm9jZXNzb3JOb2RlOjpjcmVhdGUoKnRoaXMsIHNh
bXBsZVJhdGUoKSwgYnVmZmVyU2l6ZSwgbnVtYmVyT2ZJbnB1dENoYW5uZWxzLCBudW1iZXJPZk91
dHB1dENoYW5uZWxzKTsKKworICAgIHJlZk5vZGUobm9kZSk7IC8vIGNvbnRleHQga2VlcHMgcmVm
ZXJlbmNlIHVudGlsIHdlIHN0b3AgbWFraW5nIGphdmFzY3JpcHQgcmVuZGVyaW5nIGNhbGxiYWNr
cworICAgIHJldHVybiBub2RlOworfQorCitFeGNlcHRpb25PcjxSZWY8QmlxdWFkRmlsdGVyTm9k
ZT4+IFdlYktpdEF1ZGlvQ29udGV4dDo6Y3JlYXRlQmlxdWFkRmlsdGVyKCkKK3sKKyAgICBBTFdB
WVNfTE9HKExPR0lERU5USUZJRVIpOworCisgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKyAg
ICBpZiAobV9pc1N0b3BTY2hlZHVsZWQpCisgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBJbnZh
bGlkU3RhdGVFcnJvciB9OworCisgICAgbGF6eUluaXRpYWxpemUoKTsKKworICAgIHJldHVybiBC
aXF1YWRGaWx0ZXJOb2RlOjpjcmVhdGUoKnRoaXMsIHNhbXBsZVJhdGUoKSk7Cit9CisKK0V4Y2Vw
dGlvbk9yPFJlZjxXYXZlU2hhcGVyTm9kZT4+IFdlYktpdEF1ZGlvQ29udGV4dDo6Y3JlYXRlV2F2
ZVNoYXBlcigpCit7CisgICAgQUxXQVlTX0xPRyhMT0dJREVOVElGSUVSKTsKKworICAgIEFTU0VS
VChpc01haW5UaHJlYWQoKSk7CisgICAgaWYgKG1faXNTdG9wU2NoZWR1bGVkKQorICAgICAgICBy
ZXR1cm4gRXhjZXB0aW9uIHsgSW52YWxpZFN0YXRlRXJyb3IgfTsKKworICAgIGxhenlJbml0aWFs
aXplKCk7CisgICAgcmV0dXJuIFdhdmVTaGFwZXJOb2RlOjpjcmVhdGUoKnRoaXMpOworfQorCitF
eGNlcHRpb25PcjxSZWY8UGFubmVyTm9kZT4+IFdlYktpdEF1ZGlvQ29udGV4dDo6Y3JlYXRlUGFu
bmVyKCkKK3sKKyAgICBBTFdBWVNfTE9HKExPR0lERU5USUZJRVIpOworCisgICAgQVNTRVJUKGlz
TWFpblRocmVhZCgpKTsKKyAgICBpZiAobV9pc1N0b3BTY2hlZHVsZWQpCisgICAgICAgIHJldHVy
biBFeGNlcHRpb24geyBJbnZhbGlkU3RhdGVFcnJvciB9OworCisgICAgbGF6eUluaXRpYWxpemUo
KTsKKyAgICByZXR1cm4gUGFubmVyTm9kZTo6Y3JlYXRlKCp0aGlzLCBzYW1wbGVSYXRlKCkpOwor
fQorCitFeGNlcHRpb25PcjxSZWY8Q29udm9sdmVyTm9kZT4+IFdlYktpdEF1ZGlvQ29udGV4dDo6
Y3JlYXRlQ29udm9sdmVyKCkKK3sKKyAgICBBTFdBWVNfTE9HKExPR0lERU5USUZJRVIpOworCisg
ICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKyAgICBpZiAobV9pc1N0b3BTY2hlZHVsZWQpCisg
ICAgICAgIHJldHVybiBFeGNlcHRpb24geyBJbnZhbGlkU3RhdGVFcnJvciB9OworCisgICAgbGF6
eUluaXRpYWxpemUoKTsKKyAgICByZXR1cm4gQ29udm9sdmVyTm9kZTo6Y3JlYXRlKCp0aGlzLCBz
YW1wbGVSYXRlKCkpOworfQorCitFeGNlcHRpb25PcjxSZWY8RHluYW1pY3NDb21wcmVzc29yTm9k
ZT4+IFdlYktpdEF1ZGlvQ29udGV4dDo6Y3JlYXRlRHluYW1pY3NDb21wcmVzc29yKCkKK3sKKyAg
ICBBTFdBWVNfTE9HKExPR0lERU5USUZJRVIpOworCisgICAgQVNTRVJUKGlzTWFpblRocmVhZCgp
KTsKKyAgICBpZiAobV9pc1N0b3BTY2hlZHVsZWQpCisgICAgICAgIHJldHVybiBFeGNlcHRpb24g
eyBJbnZhbGlkU3RhdGVFcnJvciB9OworCisgICAgbGF6eUluaXRpYWxpemUoKTsKKyAgICByZXR1
cm4gRHluYW1pY3NDb21wcmVzc29yTm9kZTo6Y3JlYXRlKCp0aGlzLCBzYW1wbGVSYXRlKCkpOwor
fQorCitFeGNlcHRpb25PcjxSZWY8QW5hbHlzZXJOb2RlPj4gV2ViS2l0QXVkaW9Db250ZXh0Ojpj
cmVhdGVBbmFseXNlcigpCit7CisgICAgQUxXQVlTX0xPRyhMT0dJREVOVElGSUVSKTsKKworICAg
IEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisgICAgaWYgKG1faXNTdG9wU2NoZWR1bGVkKQorICAg
ICAgICByZXR1cm4gRXhjZXB0aW9uIHsgSW52YWxpZFN0YXRlRXJyb3IgfTsKKworICAgIGxhenlJ
bml0aWFsaXplKCk7CisgICAgcmV0dXJuIEFuYWx5c2VyTm9kZTo6Y3JlYXRlKCp0aGlzLCBzYW1w
bGVSYXRlKCkpOworfQorCitFeGNlcHRpb25PcjxSZWY8R2Fpbk5vZGU+PiBXZWJLaXRBdWRpb0Nv
bnRleHQ6OmNyZWF0ZUdhaW4oKQoreworICAgIEFMV0FZU19MT0coTE9HSURFTlRJRklFUik7CisK
KyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAgIGlmIChtX2lzU3RvcFNjaGVkdWxlZCkK
KyAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IEludmFsaWRTdGF0ZUVycm9yIH07CisKKyAgICBs
YXp5SW5pdGlhbGl6ZSgpOworICAgIHJldHVybiBHYWluTm9kZTo6Y3JlYXRlKCp0aGlzLCBzYW1w
bGVSYXRlKCkpOworfQorCitFeGNlcHRpb25PcjxSZWY8RGVsYXlOb2RlPj4gV2ViS2l0QXVkaW9D
b250ZXh0OjpjcmVhdGVEZWxheShkb3VibGUgbWF4RGVsYXlUaW1lKQoreworICAgIEFMV0FZU19M
T0coTE9HSURFTlRJRklFUik7CisKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAgIGlm
IChtX2lzU3RvcFNjaGVkdWxlZCkKKyAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IEludmFsaWRT
dGF0ZUVycm9yIH07CisKKyAgICBsYXp5SW5pdGlhbGl6ZSgpOworICAgIHJldHVybiBEZWxheU5v
ZGU6OmNyZWF0ZSgqdGhpcywgc2FtcGxlUmF0ZSgpLCBtYXhEZWxheVRpbWUpOworfQorCitFeGNl
cHRpb25PcjxSZWY8Q2hhbm5lbFNwbGl0dGVyTm9kZT4+IFdlYktpdEF1ZGlvQ29udGV4dDo6Y3Jl
YXRlQ2hhbm5lbFNwbGl0dGVyKHNpemVfdCBudW1iZXJPZk91dHB1dHMpCit7CisgICAgQUxXQVlT
X0xPRyhMT0dJREVOVElGSUVSKTsKKworICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisgICAg
aWYgKG1faXNTdG9wU2NoZWR1bGVkKQorICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgSW52YWxp
ZFN0YXRlRXJyb3IgfTsKKworICAgIGxhenlJbml0aWFsaXplKCk7CisgICAgYXV0byBub2RlID0g
Q2hhbm5lbFNwbGl0dGVyTm9kZTo6Y3JlYXRlKCp0aGlzLCBzYW1wbGVSYXRlKCksIG51bWJlck9m
T3V0cHV0cyk7CisgICAgaWYgKCFub2RlKQorICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgSW5k
ZXhTaXplRXJyb3IgfTsKKyAgICByZXR1cm4gbm9kZS5yZWxlYXNlTm9uTnVsbCgpOworfQorCitF
eGNlcHRpb25PcjxSZWY8Q2hhbm5lbE1lcmdlck5vZGU+PiBXZWJLaXRBdWRpb0NvbnRleHQ6OmNy
ZWF0ZUNoYW5uZWxNZXJnZXIoc2l6ZV90IG51bWJlck9mSW5wdXRzKQoreworICAgIEFMV0FZU19M
T0coTE9HSURFTlRJRklFUik7CisKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAgIGlm
IChtX2lzU3RvcFNjaGVkdWxlZCkKKyAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IEludmFsaWRT
dGF0ZUVycm9yIH07CisKKyAgICBsYXp5SW5pdGlhbGl6ZSgpOworICAgIGF1dG8gbm9kZSA9IENo
YW5uZWxNZXJnZXJOb2RlOjpjcmVhdGUoKnRoaXMsIHNhbXBsZVJhdGUoKSwgbnVtYmVyT2ZJbnB1
dHMpOworICAgIGlmICghbm9kZSkKKyAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IEluZGV4U2l6
ZUVycm9yIH07CisgICAgcmV0dXJuIG5vZGUucmVsZWFzZU5vbk51bGwoKTsKK30KKworRXhjZXB0
aW9uT3I8UmVmPE9zY2lsbGF0b3JOb2RlPj4gV2ViS2l0QXVkaW9Db250ZXh0OjpjcmVhdGVPc2Np
bGxhdG9yKCkKK3sKKyAgICBBTFdBWVNfTE9HKExPR0lERU5USUZJRVIpOworCisgICAgQVNTRVJU
KGlzTWFpblRocmVhZCgpKTsKKyAgICBpZiAobV9pc1N0b3BTY2hlZHVsZWQpCisgICAgICAgIHJl
dHVybiBFeGNlcHRpb24geyBJbnZhbGlkU3RhdGVFcnJvciB9OworCisgICAgbGF6eUluaXRpYWxp
emUoKTsKKworICAgIFJlZjxPc2NpbGxhdG9yTm9kZT4gbm9kZSA9IE9zY2lsbGF0b3JOb2RlOjpj
cmVhdGUoKnRoaXMsIHNhbXBsZVJhdGUoKSk7CisKKyAgICAvLyBCZWNhdXNlIHRoaXMgaXMgYW4g
QXVkaW9TY2hlZHVsZWRTb3VyY2VOb2RlLCB0aGUgY29udGV4dCBrZWVwcyBhIHJlZmVyZW5jZSB1
bnRpbCBpdCBoYXMgZmluaXNoZWQgcGxheWluZy4KKyAgICAvLyBXaGVuIHRoaXMgaGFwcGVucywg
QXVkaW9TY2hlZHVsZWRTb3VyY2VOb2RlOjpmaW5pc2goKSBjYWxscyBXZWJLaXRBdWRpb0NvbnRl
eHQ6Om5vdGlmeU5vZGVGaW5pc2hlZFByb2Nlc3NpbmcoKS4KKyAgICByZWZOb2RlKG5vZGUpOwor
CisgICAgcmV0dXJuIG5vZGU7Cit9CisKK0V4Y2VwdGlvbk9yPFJlZjxQZXJpb2RpY1dhdmU+PiBX
ZWJLaXRBdWRpb0NvbnRleHQ6OmNyZWF0ZVBlcmlvZGljV2F2ZShGbG9hdDMyQXJyYXkmIHJlYWws
IEZsb2F0MzJBcnJheSYgaW1hZ2luYXJ5KQoreworICAgIEFMV0FZU19MT0coTE9HSURFTlRJRklF
Uik7CisKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAgIGlmIChtX2lzU3RvcFNjaGVk
dWxlZCkKKyAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IEludmFsaWRTdGF0ZUVycm9yIH07CisK
KyAgICBpZiAocmVhbC5sZW5ndGgoKSAhPSBpbWFnaW5hcnkubGVuZ3RoKCkgfHwgKHJlYWwubGVu
Z3RoKCkgPiBNYXhQZXJpb2RpY1dhdmVMZW5ndGgpIHx8ICFyZWFsLmxlbmd0aCgpKQorICAgICAg
ICByZXR1cm4gRXhjZXB0aW9uIHsgSW5kZXhTaXplRXJyb3IgfTsKKyAgICBsYXp5SW5pdGlhbGl6
ZSgpOworICAgIHJldHVybiBQZXJpb2RpY1dhdmU6OmNyZWF0ZShzYW1wbGVSYXRlKCksIHJlYWws
IGltYWdpbmFyeSk7Cit9CisKK3ZvaWQgV2ViS2l0QXVkaW9Db250ZXh0Ojpub3RpZnlOb2RlRmlu
aXNoZWRQcm9jZXNzaW5nKEF1ZGlvTm9kZSogbm9kZSkKK3sKKyAgICBBU1NFUlQoaXNBdWRpb1Ro
cmVhZCgpKTsKKyAgICBtX2ZpbmlzaGVkTm9kZXMuYXBwZW5kKG5vZGUpOworfQorCit2b2lkIFdl
YktpdEF1ZGlvQ29udGV4dDo6ZGVyZWZGaW5pc2hlZFNvdXJjZU5vZGVzKCkKK3sKKyAgICBBU1NF
UlQoaXNHcmFwaE93bmVyKCkpOworICAgIEFTU0VSVChpc0F1ZGlvVGhyZWFkKCkgfHwgaXNBdWRp
b1RocmVhZEZpbmlzaGVkKCkpOworICAgIGZvciAoYXV0byYgbm9kZSA6IG1fZmluaXNoZWROb2Rl
cykKKyAgICAgICAgZGVyZWZOb2RlKCpub2RlKTsKKworICAgIG1fZmluaXNoZWROb2Rlcy5jbGVh
cigpOworfQorCit2b2lkIFdlYktpdEF1ZGlvQ29udGV4dDo6cmVmTm9kZShBdWRpb05vZGUmIG5v
ZGUpCit7CisgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKyAgICBBdXRvTG9ja2VyIGxvY2tl
cigqdGhpcyk7CisKKyAgICBub2RlLnJlZihBdWRpb05vZGU6OlJlZlR5cGVDb25uZWN0aW9uKTsK
KyAgICBtX3JlZmVyZW5jZWROb2Rlcy5hcHBlbmQoJm5vZGUpOworfQorCit2b2lkIFdlYktpdEF1
ZGlvQ29udGV4dDo6ZGVyZWZOb2RlKEF1ZGlvTm9kZSYgbm9kZSkKK3sKKyAgICBBU1NFUlQoaXNH
cmFwaE93bmVyKCkpOworCisgICAgbm9kZS5kZXJlZihBdWRpb05vZGU6OlJlZlR5cGVDb25uZWN0
aW9uKTsKKworICAgIEFTU0VSVChtX3JlZmVyZW5jZWROb2Rlcy5jb250YWlucygmbm9kZSkpOwor
ICAgIG1fcmVmZXJlbmNlZE5vZGVzLnJlbW92ZUZpcnN0KCZub2RlKTsKK30KKwordm9pZCBXZWJL
aXRBdWRpb0NvbnRleHQ6OmRlcmVmVW5maW5pc2hlZFNvdXJjZU5vZGVzKCkKK3sKKyAgICBBU1NF
UlQoaXNNYWluVGhyZWFkKCkgJiYgaXNBdWRpb1RocmVhZEZpbmlzaGVkKCkpOworICAgIGZvciAo
YXV0byYgbm9kZSA6IG1fcmVmZXJlbmNlZE5vZGVzKQorICAgICAgICBub2RlLT5kZXJlZihBdWRp
b05vZGU6OlJlZlR5cGVDb25uZWN0aW9uKTsKKworICAgIG1fcmVmZXJlbmNlZE5vZGVzLmNsZWFy
KCk7Cit9CisKK3ZvaWQgV2ViS2l0QXVkaW9Db250ZXh0Ojpsb2NrKGJvb2wmIG11c3RSZWxlYXNl
TG9jaykKK3sKKyAgICAvLyBEb24ndCBhbGxvdyByZWd1bGFyIGxvY2sgaW4gcmVhbC10aW1lIGF1
ZGlvIHRocmVhZC4KKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworCisgICAgVGhyZWFkJiB0
aGlzVGhyZWFkID0gVGhyZWFkOjpjdXJyZW50KCk7CisKKyAgICBpZiAoJnRoaXNUaHJlYWQgPT0g
bV9ncmFwaE93bmVyVGhyZWFkKSB7CisgICAgICAgIC8vIFdlIGFscmVhZHkgaGF2ZSB0aGUgbG9j
ay4KKyAgICAgICAgbXVzdFJlbGVhc2VMb2NrID0gZmFsc2U7CisgICAgfSBlbHNlIHsKKyAgICAg
ICAgLy8gQWNxdWlyZSB0aGUgbG9jay4KKyAgICAgICAgbV9jb250ZXh0R3JhcGhNdXRleC5sb2Nr
KCk7CisgICAgICAgIG1fZ3JhcGhPd25lclRocmVhZCA9ICZ0aGlzVGhyZWFkOworICAgICAgICBt
dXN0UmVsZWFzZUxvY2sgPSB0cnVlOworICAgIH0KK30KKworYm9vbCBXZWJLaXRBdWRpb0NvbnRl
eHQ6OnRyeUxvY2soYm9vbCYgbXVzdFJlbGVhc2VMb2NrKQoreworICAgIFRocmVhZCYgdGhpc1Ro
cmVhZCA9IFRocmVhZDo6Y3VycmVudCgpOworICAgIGJvb2wgaXNBdWRpb1RocmVhZCA9ICZ0aGlz
VGhyZWFkID09IGF1ZGlvVGhyZWFkKCk7CisKKyAgICAvLyBUcnkgdG8gY2F0Y2ggY2FzZXMgb2Yg
dXNpbmcgdHJ5IGxvY2sgb24gbWFpbiB0aHJlYWQgLSBpdCBzaG91bGQgdXNlIHJlZ3VsYXIgbG9j
ay4KKyAgICBBU1NFUlQoaXNBdWRpb1RocmVhZCB8fCBpc0F1ZGlvVGhyZWFkRmluaXNoZWQoKSk7
CisKKyAgICBpZiAoIWlzQXVkaW9UaHJlYWQpIHsKKyAgICAgICAgLy8gSW4gcmVsZWFzZSBidWls
ZCB0cmVhdCB0cnlMb2NrKCkgYXMgbG9jaygpIChzaW5jZSBhYm92ZSBBU1NFUlQoaXNBdWRpb1Ro
cmVhZCkgbmV2ZXIgZmlyZXMpIC0gdGhpcyBpcyB0aGUgYmVzdCB3ZSBjYW4gZG8uCisgICAgICAg
IGxvY2sobXVzdFJlbGVhc2VMb2NrKTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorCisg
ICAgYm9vbCBoYXNMb2NrOworCisgICAgaWYgKCZ0aGlzVGhyZWFkID09IG1fZ3JhcGhPd25lclRo
cmVhZCkgeworICAgICAgICAvLyBUaHJlYWQgYWxyZWFkeSBoYXMgdGhlIGxvY2suCisgICAgICAg
IGhhc0xvY2sgPSB0cnVlOworICAgICAgICBtdXN0UmVsZWFzZUxvY2sgPSBmYWxzZTsKKyAgICB9
IGVsc2UgeworICAgICAgICAvLyBEb24ndCBhbHJlYWR5IGhhdmUgdGhlIGxvY2sgLSB0cnkgdG8g
YWNxdWlyZSBpdC4KKyAgICAgICAgaGFzTG9jayA9IG1fY29udGV4dEdyYXBoTXV0ZXgudHJ5TG9j
aygpOworCisgICAgICAgIGlmIChoYXNMb2NrKQorICAgICAgICAgICAgbV9ncmFwaE93bmVyVGhy
ZWFkID0gJnRoaXNUaHJlYWQ7CisKKyAgICAgICAgbXVzdFJlbGVhc2VMb2NrID0gaGFzTG9jazsK
KyAgICB9CisKKyAgICByZXR1cm4gaGFzTG9jazsKK30KKwordm9pZCBXZWJLaXRBdWRpb0NvbnRl
eHQ6OnVubG9jaygpCit7CisgICAgQVNTRVJUKG1fZ3JhcGhPd25lclRocmVhZCA9PSAmVGhyZWFk
OjpjdXJyZW50KCkpOworCisgICAgbV9ncmFwaE93bmVyVGhyZWFkID0gbnVsbHB0cjsKKyAgICBt
X2NvbnRleHRHcmFwaE11dGV4LnVubG9jaygpOworfQorCitib29sIFdlYktpdEF1ZGlvQ29udGV4
dDo6aXNBdWRpb1RocmVhZCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fYXVkaW9UaHJlYWQgPT0g
JlRocmVhZDo6Y3VycmVudCgpOworfQorCitib29sIFdlYktpdEF1ZGlvQ29udGV4dDo6aXNHcmFw
aE93bmVyKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9ncmFwaE93bmVyVGhyZWFkID09ICZUaHJl
YWQ6OmN1cnJlbnQoKTsKK30KKwordm9pZCBXZWJLaXRBdWRpb0NvbnRleHQ6OmFkZERlZmVycmVk
RmluaXNoRGVyZWYoQXVkaW9Ob2RlKiBub2RlKQoreworICAgIEFTU0VSVChpc0F1ZGlvVGhyZWFk
KCkpOworICAgIG1fZGVmZXJyZWRGaW5pc2hEZXJlZkxpc3QuYXBwZW5kKG5vZGUpOworfQorCit2
b2lkIFdlYktpdEF1ZGlvQ29udGV4dDo6aGFuZGxlUHJlUmVuZGVyVGFza3MoKQoreworICAgIEFT
U0VSVChpc0F1ZGlvVGhyZWFkKCkpOworCisgICAgLy8gQXQgdGhlIGJlZ2lubmluZyBvZiBldmVy
eSByZW5kZXIgcXVhbnR1bSwgdHJ5IHRvIHVwZGF0ZSB0aGUgaW50ZXJuYWwgcmVuZGVyaW5nIGdy
YXBoIHN0YXRlIChmcm9tIG1haW4gdGhyZWFkIGNoYW5nZXMpLgorICAgIC8vIEl0J3MgT0sgaWYg
dGhlIHRyeUxvY2soKSBmYWlscywgd2UnbGwganVzdCB0YWtlIHNsaWdodGx5IGxvbmdlciB0byBw
aWNrIHVwIHRoZSBjaGFuZ2VzLgorICAgIGJvb2wgbXVzdFJlbGVhc2VMb2NrOworICAgIGlmICh0
cnlMb2NrKG11c3RSZWxlYXNlTG9jaykpIHsKKyAgICAgICAgLy8gRml4dXAgdGhlIHN0YXRlIG9m
IGFueSBkaXJ0eSBBdWRpb1N1bW1pbmdKdW5jdGlvbnMgYW5kIEF1ZGlvTm9kZU91dHB1dHMuCisg
ICAgICAgIGhhbmRsZURpcnR5QXVkaW9TdW1taW5nSnVuY3Rpb25zKCk7CisgICAgICAgIGhhbmRs
ZURpcnR5QXVkaW9Ob2RlT3V0cHV0cygpOworCisgICAgICAgIHVwZGF0ZUF1dG9tYXRpY1B1bGxO
b2RlcygpOworCisgICAgICAgIGlmIChtdXN0UmVsZWFzZUxvY2spCisgICAgICAgICAgICB1bmxv
Y2soKTsKKyAgICB9Cit9CisKK3ZvaWQgV2ViS2l0QXVkaW9Db250ZXh0OjpoYW5kbGVQb3N0UmVu
ZGVyVGFza3MoKQoreworICAgIEFTU0VSVChpc0F1ZGlvVGhyZWFkKCkpOworCisgICAgLy8gTXVz
dCB1c2UgYSB0cnlMb2NrKCkgaGVyZSB0b28uIERvbid0IHdvcnJ5LCB0aGUgbG9jayB3aWxsIHZl
cnkgcmFyZWx5IGJlIGNvbnRlbmRlZCBhbmQgdGhpcyBtZXRob2QgaXMgY2FsbGVkIGZyZXF1ZW50
bHkuCisgICAgLy8gVGhlIHdvcnN0IHRoYXQgY2FuIGhhcHBlbiBpcyB0aGF0IHRoZXJlIHdpbGwg
YmUgc29tZSBub2RlcyB3aGljaCB3aWxsIHRha2Ugc2xpZ2h0bHkgbG9uZ2VyIHRoYW4gdXN1YWwg
dG8gYmUgZGVsZXRlZCBvciByZW1vdmVkCisgICAgLy8gZnJvbSB0aGUgcmVuZGVyIGdyYXBoIChp
biB3aGljaCBjYXNlIHRoZXknbGwgcmVuZGVyIHNpbGVuY2UpLgorICAgIGJvb2wgbXVzdFJlbGVh
c2VMb2NrOworICAgIGlmICh0cnlMb2NrKG11c3RSZWxlYXNlTG9jaykpIHsKKyAgICAgICAgLy8g
VGFrZSBjYXJlIG9mIGZpbmlzaGluZyBhbnkgZGVyZWZzIHdoZXJlIHRoZSB0cnlMb2NrKCkgZmFp
bGVkIHByZXZpb3VzbHkuCisgICAgICAgIGhhbmRsZURlZmVycmVkRmluaXNoRGVyZWZzKCk7CisK
KyAgICAgICAgLy8gRHluYW1pY2FsbHkgY2xlYW4gdXAgbm9kZXMgd2hpY2ggYXJlIG5vIGxvbmdl
ciBuZWVkZWQuCisgICAgICAgIGRlcmVmRmluaXNoZWRTb3VyY2VOb2RlcygpOworCisgICAgICAg
IC8vIERvbid0IGRlbGV0ZSBpbiB0aGUgcmVhbC10aW1lIHRocmVhZC4gTGV0IHRoZSBtYWluIHRo
cmVhZCBkbyBpdC4KKyAgICAgICAgLy8gUmVmLWNvdW50ZWQgb2JqZWN0cyBoZWxkIGJ5IGNlcnRh
aW4gQXVkaW9Ob2RlcyBtYXkgbm90IGJlIHRocmVhZC1zYWZlLgorICAgICAgICBzY2hlZHVsZU5v
ZGVEZWxldGlvbigpOworCisgICAgICAgIC8vIEZpeHVwIHRoZSBzdGF0ZSBvZiBhbnkgZGlydHkg
QXVkaW9TdW1taW5nSnVuY3Rpb25zIGFuZCBBdWRpb05vZGVPdXRwdXRzLgorICAgICAgICBoYW5k
bGVEaXJ0eUF1ZGlvU3VtbWluZ0p1bmN0aW9ucygpOworICAgICAgICBoYW5kbGVEaXJ0eUF1ZGlv
Tm9kZU91dHB1dHMoKTsKKworICAgICAgICB1cGRhdGVBdXRvbWF0aWNQdWxsTm9kZXMoKTsKKwor
ICAgICAgICBpZiAobXVzdFJlbGVhc2VMb2NrKQorICAgICAgICAgICAgdW5sb2NrKCk7CisgICAg
fQorfQorCit2b2lkIFdlYktpdEF1ZGlvQ29udGV4dDo6aGFuZGxlRGVmZXJyZWRGaW5pc2hEZXJl
ZnMoKQoreworICAgIEFTU0VSVChpc0F1ZGlvVGhyZWFkKCkgJiYgaXNHcmFwaE93bmVyKCkpOwor
ICAgIGZvciAoYXV0byYgbm9kZSA6IG1fZGVmZXJyZWRGaW5pc2hEZXJlZkxpc3QpCisgICAgICAg
IG5vZGUtPmZpbmlzaERlcmVmKEF1ZGlvTm9kZTo6UmVmVHlwZUNvbm5lY3Rpb24pOworCisgICAg
bV9kZWZlcnJlZEZpbmlzaERlcmVmTGlzdC5jbGVhcigpOworfQorCit2b2lkIFdlYktpdEF1ZGlv
Q29udGV4dDo6bWFya0ZvckRlbGV0aW9uKEF1ZGlvTm9kZSYgbm9kZSkKK3sKKyAgICBBU1NFUlQo
aXNHcmFwaE93bmVyKCkpOworCisgICAgaWYgKGlzQXVkaW9UaHJlYWRGaW5pc2hlZCgpKQorICAg
ICAgICBtX25vZGVzVG9EZWxldGUuYXBwZW5kKCZub2RlKTsKKyAgICBlbHNlCisgICAgICAgIG1f
bm9kZXNNYXJrZWRGb3JEZWxldGlvbi5hcHBlbmQoJm5vZGUpOworCisgICAgLy8gVGhpcyBpcyBw
cm9iYWJseSB0aGUgYmVzdCB0aW1lIGZvciB1cyB0byByZW1vdmUgdGhlIG5vZGUgZnJvbSBhdXRv
bWF0aWMgcHVsbCBsaXN0LAorICAgIC8vIHNpbmNlIGFsbCBjb25uZWN0aW9ucyBhcmUgZ29uZSBh
bmQgd2UgaG9sZCB0aGUgZ3JhcGggbG9jay4gVGhlbiB3aGVuIGhhbmRsZVBvc3RSZW5kZXJUYXNr
cygpCisgICAgLy8gZ2V0cyBhIGNoYW5jZSB0byBzY2hlZHVsZSB0aGUgZGVsZXRpb24gd29yaywg
dXBkYXRlQXV0b21hdGljUHVsbE5vZGVzKCkgYWxzbyBnZXRzIGEgY2hhbmNlIHRvCisgICAgLy8g
bW9kaWZ5IG1fcmVuZGVyaW5nQXV0b21hdGljUHVsbE5vZGVzLgorICAgIHJlbW92ZUF1dG9tYXRp
Y1B1bGxOb2RlKG5vZGUpOworfQorCit2b2lkIFdlYktpdEF1ZGlvQ29udGV4dDo6c2NoZWR1bGVO
b2RlRGVsZXRpb24oKQoreworICAgIGJvb2wgaXNHb29kID0gbV9pc0luaXRpYWxpemVkICYmIGlz
R3JhcGhPd25lcigpOworICAgIEFTU0VSVChpc0dvb2QpOworICAgIGlmICghaXNHb29kKQorICAg
ICAgICByZXR1cm47CisKKyAgICAvLyBNYWtlIHN1cmUgdG8gY2FsbCBkZWxldGVNYXJrZWROb2Rl
cygpIG9uIG1haW4gdGhyZWFkLgorICAgIGlmIChtX25vZGVzTWFya2VkRm9yRGVsZXRpb24uc2l6
ZSgpICYmICFtX2lzRGVsZXRpb25TY2hlZHVsZWQpIHsKKyAgICAgICAgbV9ub2Rlc1RvRGVsZXRl
LmFwcGVuZFZlY3RvcihtX25vZGVzTWFya2VkRm9yRGVsZXRpb24pOworICAgICAgICBtX25vZGVz
TWFya2VkRm9yRGVsZXRpb24uY2xlYXIoKTsKKworICAgICAgICBtX2lzRGVsZXRpb25TY2hlZHVs
ZWQgPSB0cnVlOworCisgICAgICAgIGNhbGxPbk1haW5UaHJlYWQoW3Byb3RlY3RlZFRoaXMgPSBt
YWtlUmVmKCp0aGlzKV0oKSBtdXRhYmxlIHsKKyAgICAgICAgICAgIHByb3RlY3RlZFRoaXMtPmRl
bGV0ZU1hcmtlZE5vZGVzKCk7CisgICAgICAgIH0pOworICAgIH0KK30KKwordm9pZCBXZWJLaXRB
dWRpb0NvbnRleHQ6OmRlbGV0ZU1hcmtlZE5vZGVzKCkKK3sKKyAgICBBU1NFUlQoaXNNYWluVGhy
ZWFkKCkpOworCisgICAgLy8gUHJvdGVjdCB0aGlzIG9iamVjdCBmcm9tIGJlaW5nIGRlbGV0ZWQg
YmVmb3JlIHdlIHJlbGVhc2UgdGhlIG11dGV4IGxvY2tlZCBieSBBdXRvTG9ja2VyLgorICAgIFJl
ZjxXZWJLaXRBdWRpb0NvbnRleHQ+IHByb3RlY3RlZFRoaXMoKnRoaXMpOworICAgIHsKKyAgICAg
ICAgQXV0b0xvY2tlciBsb2NrZXIoKnRoaXMpOworCisgICAgICAgIHdoaWxlIChtX25vZGVzVG9E
ZWxldGUuc2l6ZSgpKSB7CisgICAgICAgICAgICBBdWRpb05vZGUqIG5vZGUgPSBtX25vZGVzVG9E
ZWxldGUudGFrZUxhc3QoKTsKKworICAgICAgICAgICAgLy8gQmVmb3JlIGRlbGV0aW5nIHRoZSBu
b2RlLCBjbGVhciBvdXQgYW55IEF1ZGlvTm9kZUlucHV0cyBmcm9tIG1fZGlydHlTdW1taW5nSnVu
Y3Rpb25zLgorICAgICAgICAgICAgdW5zaWduZWQgbnVtYmVyT2ZJbnB1dHMgPSBub2RlLT5udW1i
ZXJPZklucHV0cygpOworICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG51bWJl
ck9mSW5wdXRzOyArK2kpCisgICAgICAgICAgICAgICAgbV9kaXJ0eVN1bW1pbmdKdW5jdGlvbnMu
cmVtb3ZlKG5vZGUtPmlucHV0KGkpKTsKKworICAgICAgICAgICAgLy8gQmVmb3JlIGRlbGV0aW5n
IHRoZSBub2RlLCBjbGVhciBvdXQgYW55IEF1ZGlvTm9kZU91dHB1dHMgZnJvbSBtX2RpcnR5QXVk
aW9Ob2RlT3V0cHV0cy4KKyAgICAgICAgICAgIHVuc2lnbmVkIG51bWJlck9mT3V0cHV0cyA9IG5v
ZGUtPm51bWJlck9mT3V0cHV0cygpOworICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsg
aSA8IG51bWJlck9mT3V0cHV0czsgKytpKQorICAgICAgICAgICAgICAgIG1fZGlydHlBdWRpb05v
ZGVPdXRwdXRzLnJlbW92ZShub2RlLT5vdXRwdXQoaSkpOworCisgICAgICAgICAgICAvLyBGaW5h
bGx5LCBkZWxldGUgaXQuCisgICAgICAgICAgICBkZWxldGUgbm9kZTsKKyAgICAgICAgfQorICAg
ICAgICBtX2lzRGVsZXRpb25TY2hlZHVsZWQgPSBmYWxzZTsKKyAgICB9Cit9CisKK3ZvaWQgV2Vi
S2l0QXVkaW9Db250ZXh0OjptYXJrU3VtbWluZ0p1bmN0aW9uRGlydHkoQXVkaW9TdW1taW5nSnVu
Y3Rpb24qIHN1bW1pbmdKdW5jdGlvbikKK3sKKyAgICBBU1NFUlQoaXNHcmFwaE93bmVyKCkpOwor
ICAgIG1fZGlydHlTdW1taW5nSnVuY3Rpb25zLmFkZChzdW1taW5nSnVuY3Rpb24pOworfQorCit2
b2lkIFdlYktpdEF1ZGlvQ29udGV4dDo6cmVtb3ZlTWFya2VkU3VtbWluZ0p1bmN0aW9uKEF1ZGlv
U3VtbWluZ0p1bmN0aW9uKiBzdW1taW5nSnVuY3Rpb24pCit7CisgICAgQVNTRVJUKGlzTWFpblRo
cmVhZCgpKTsKKyAgICBBdXRvTG9ja2VyIGxvY2tlcigqdGhpcyk7CisgICAgbV9kaXJ0eVN1bW1p
bmdKdW5jdGlvbnMucmVtb3ZlKHN1bW1pbmdKdW5jdGlvbik7Cit9CisKK3ZvaWQgV2ViS2l0QXVk
aW9Db250ZXh0OjptYXJrQXVkaW9Ob2RlT3V0cHV0RGlydHkoQXVkaW9Ob2RlT3V0cHV0KiBvdXRw
dXQpCit7CisgICAgQVNTRVJUKGlzR3JhcGhPd25lcigpKTsKKyAgICBtX2RpcnR5QXVkaW9Ob2Rl
T3V0cHV0cy5hZGQob3V0cHV0KTsKK30KKwordm9pZCBXZWJLaXRBdWRpb0NvbnRleHQ6OmhhbmRs
ZURpcnR5QXVkaW9TdW1taW5nSnVuY3Rpb25zKCkKK3sKKyAgICBBU1NFUlQoaXNHcmFwaE93bmVy
KCkpOworCisgICAgZm9yIChhdXRvJiBqdW5jdGlvbiA6IG1fZGlydHlTdW1taW5nSnVuY3Rpb25z
KQorICAgICAgICBqdW5jdGlvbi0+dXBkYXRlUmVuZGVyaW5nU3RhdGUoKTsKKworICAgIG1fZGly
dHlTdW1taW5nSnVuY3Rpb25zLmNsZWFyKCk7Cit9CisKK3ZvaWQgV2ViS2l0QXVkaW9Db250ZXh0
OjpoYW5kbGVEaXJ0eUF1ZGlvTm9kZU91dHB1dHMoKQoreworICAgIEFTU0VSVChpc0dyYXBoT3du
ZXIoKSk7CisKKyAgICBmb3IgKGF1dG8mIG91dHB1dCA6IG1fZGlydHlBdWRpb05vZGVPdXRwdXRz
KQorICAgICAgICBvdXRwdXQtPnVwZGF0ZVJlbmRlcmluZ1N0YXRlKCk7CisKKyAgICBtX2RpcnR5
QXVkaW9Ob2RlT3V0cHV0cy5jbGVhcigpOworfQorCit2b2lkIFdlYktpdEF1ZGlvQ29udGV4dDo6
YWRkQXV0b21hdGljUHVsbE5vZGUoQXVkaW9Ob2RlJiBub2RlKQoreworICAgIEFTU0VSVChpc0dy
YXBoT3duZXIoKSk7CisKKyAgICBpZiAobV9hdXRvbWF0aWNQdWxsTm9kZXMuYWRkKCZub2RlKS5p
c05ld0VudHJ5KQorICAgICAgICBtX2F1dG9tYXRpY1B1bGxOb2Rlc05lZWRVcGRhdGluZyA9IHRy
dWU7Cit9CisKK3ZvaWQgV2ViS2l0QXVkaW9Db250ZXh0OjpyZW1vdmVBdXRvbWF0aWNQdWxsTm9k
ZShBdWRpb05vZGUmIG5vZGUpCit7CisgICAgQVNTRVJUKGlzR3JhcGhPd25lcigpKTsKKworICAg
IGlmIChtX2F1dG9tYXRpY1B1bGxOb2Rlcy5yZW1vdmUoJm5vZGUpKQorICAgICAgICBtX2F1dG9t
YXRpY1B1bGxOb2Rlc05lZWRVcGRhdGluZyA9IHRydWU7Cit9CisKK3ZvaWQgV2ViS2l0QXVkaW9D
b250ZXh0Ojp1cGRhdGVBdXRvbWF0aWNQdWxsTm9kZXMoKQoreworICAgIEFTU0VSVChpc0dyYXBo
T3duZXIoKSk7CisKKyAgICBpZiAobV9hdXRvbWF0aWNQdWxsTm9kZXNOZWVkVXBkYXRpbmcpIHsK
KyAgICAgICAgLy8gQ29weSBmcm9tIG1fYXV0b21hdGljUHVsbE5vZGVzIHRvIG1fcmVuZGVyaW5n
QXV0b21hdGljUHVsbE5vZGVzLgorICAgICAgICBtX3JlbmRlcmluZ0F1dG9tYXRpY1B1bGxOb2Rl
cy5yZXNpemUobV9hdXRvbWF0aWNQdWxsTm9kZXMuc2l6ZSgpKTsKKworICAgICAgICB1bnNpZ25l
ZCBpID0gMDsKKyAgICAgICAgZm9yIChhdXRvJiBvdXRwdXQgOiBtX2F1dG9tYXRpY1B1bGxOb2Rl
cykKKyAgICAgICAgICAgIG1fcmVuZGVyaW5nQXV0b21hdGljUHVsbE5vZGVzW2krK10gPSBvdXRw
dXQ7CisKKyAgICAgICAgbV9hdXRvbWF0aWNQdWxsTm9kZXNOZWVkVXBkYXRpbmcgPSBmYWxzZTsK
KyAgICB9Cit9CisKK3ZvaWQgV2ViS2l0QXVkaW9Db250ZXh0Ojpwcm9jZXNzQXV0b21hdGljUHVs
bE5vZGVzKHNpemVfdCBmcmFtZXNUb1Byb2Nlc3MpCit7CisgICAgQVNTRVJUKGlzQXVkaW9UaHJl
YWQoKSk7CisKKyAgICBmb3IgKGF1dG8mIG5vZGUgOiBtX3JlbmRlcmluZ0F1dG9tYXRpY1B1bGxO
b2RlcykKKyAgICAgICAgbm9kZS0+cHJvY2Vzc0lmTmVjZXNzYXJ5KGZyYW1lc1RvUHJvY2Vzcyk7
Cit9CisKK1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIFdlYktpdEF1ZGlvQ29udGV4dDo6c2NyaXB0
RXhlY3V0aW9uQ29udGV4dCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIEFjdGl2ZURPTU9iamVjdDo6
c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOworfQorCit2b2lkIFdlYktpdEF1ZGlvQ29udGV4dDo6
bm9kZVdpbGxCZWdpblBsYXliYWNrKCkKK3sKKyAgICAvLyBDYWxsZWQgYnkgc2NoZWR1bGVkIEF1
ZGlvTm9kZXMgd2hlbiBjbGllbnRzIHNjaGVkdWxlIHRoZWlyIHN0YXJ0IHRpbWVzLgorICAgIC8v
IFByaW9yIHRvIHRoZSBpbnRyb2R1Y3Rpb24gb2Ygc3VzcGVuZCgpLCByZXN1bWUoKSwgYW5kIHN0
b3AoKSwgc3RhcnRpbmcKKyAgICAvLyBhIHNjaGVkdWxlZCBBdWRpb05vZGUgd291bGQgcmVtb3Zl
IHRoZSB1c2VyLWdlc3R1cmUgcmVzdHJpY3Rpb24sIGlmIHByZXNlbnQsCisgICAgLy8gYW5kIHdv
dWxkIHRodXMgdW5tdXRlIHRoZSBjb250ZXh0LiBOb3cgdGhhdCBBdWRpb0NvbnRleHQgc3RheXMg
aW4gdGhlCisgICAgLy8gInN1c3BlbmRlZCIgc3RhdGUgaWYgYSB1c2VyLWdlc3R1cmUgcmVzdHJp
Y3Rpb24gaXMgcHJlc2VudCwgc3RhcnRpbmcgYQorICAgIC8vIHNjaGVkdWxlIEF1ZGlvTm9kZSBz
aG91bGQgc2V0IHRoZSBzdGF0ZSB0byAicnVubmluZyIsIGJ1dCBvbmx5IGlmIHRoZQorICAgIC8v
IHVzZXItZ2VzdHVyZSByZXN0cmljdGlvbiBpcyBzZXQuCisgICAgaWYgKHVzZXJHZXN0dXJlUmVx
dWlyZWRGb3JBdWRpb1N0YXJ0KCkpCisgICAgICAgIHN0YXJ0UmVuZGVyaW5nKCk7Cit9CisKK3N0
YXRpYyBib29sIHNob3VsZERvY3VtZW50QWxsb3dXZWJBdWRpb1RvQXV0b1BsYXkoY29uc3QgRG9j
dW1lbnQmIGRvY3VtZW50KQoreworICAgIGlmIChkb2N1bWVudC5wcm9jZXNzaW5nVXNlckdlc3R1
cmVGb3JNZWRpYSgpIHx8IGRvY3VtZW50LmlzQ2FwdHVyaW5nKCkpCisgICAgICAgIHJldHVybiB0
cnVlOworICAgIHJldHVybiBkb2N1bWVudC5xdWlya3MoKS5zaG91bGRBdXRvcGxheVdlYkF1ZGlv
Rm9yQXJiaXRyYXJ5VXNlckdlc3R1cmUoKSAmJiBkb2N1bWVudC50b3BEb2N1bWVudCgpLmhhc0hh
ZFVzZXJJbnRlcmFjdGlvbigpOworfQorCitib29sIFdlYktpdEF1ZGlvQ29udGV4dDo6d2lsbEJl
Z2luUGxheWJhY2soKQoreworICAgIGF1dG8qIGRvY3VtZW50ID0gdGhpcy0+ZG9jdW1lbnQoKTsK
KyAgICBpZiAoIWRvY3VtZW50KQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBpZiAodXNl
ckdlc3R1cmVSZXF1aXJlZEZvckF1ZGlvU3RhcnQoKSkgeworICAgICAgICBpZiAoIXNob3VsZERv
Y3VtZW50QWxsb3dXZWJBdWRpb1RvQXV0b1BsYXkoKmRvY3VtZW50KSkgeworICAgICAgICAgICAg
QUxXQVlTX0xPRyhMT0dJREVOVElGSUVSLCAicmV0dXJuaW5nIGZhbHNlLCBub3QgcHJvY2Vzc2lu
ZyB1c2VyIGdlc3R1cmUgb3IgY2FwdHVyaW5nIik7CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7
CisgICAgICAgIH0KKyAgICAgICAgcmVtb3ZlQmVoYXZpb3JSZXN0cmljdGlvbihXZWJLaXRBdWRp
b0NvbnRleHQ6OlJlcXVpcmVVc2VyR2VzdHVyZUZvckF1ZGlvU3RhcnRSZXN0cmljdGlvbik7Cisg
ICAgfQorCisgICAgaWYgKHBhZ2VDb25zZW50UmVxdWlyZWRGb3JBdWRpb1N0YXJ0KCkpIHsKKyAg
ICAgICAgYXV0byogcGFnZSA9IGRvY3VtZW50LT5wYWdlKCk7CisgICAgICAgIGlmIChwYWdlICYm
ICFwYWdlLT5jYW5TdGFydE1lZGlhKCkpIHsKKyAgICAgICAgICAgIGRvY3VtZW50LT5hZGRNZWRp
YUNhblN0YXJ0TGlzdGVuZXIoKnRoaXMpOworICAgICAgICAgICAgQUxXQVlTX0xPRyhMT0dJREVO
VElGSUVSLCAicmV0dXJuaW5nIGZhbHNlLCBwYWdlIGRvZXNuJ3QgYWxsb3cgbWVkaWEgdG8gc3Rh
cnQiKTsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorICAgICAgICByZW1v
dmVCZWhhdmlvclJlc3RyaWN0aW9uKFdlYktpdEF1ZGlvQ29udGV4dDo6UmVxdWlyZVBhZ2VDb25z
ZW50Rm9yQXVkaW9TdGFydFJlc3RyaWN0aW9uKTsKKyAgICB9CisKKyAgICBhdXRvIHdpbGxCZWdp
biA9IG1fbWVkaWFTZXNzaW9uLT5jbGllbnRXaWxsQmVnaW5QbGF5YmFjaygpOworICAgIEFMV0FZ
U19MT0coTE9HSURFTlRJRklFUiwgInJldHVybmluZyAiLCB3aWxsQmVnaW4pOworCisgICAgcmV0
dXJuIHdpbGxCZWdpbjsKK30KKworYm9vbCBXZWJLaXRBdWRpb0NvbnRleHQ6OndpbGxQYXVzZVBs
YXliYWNrKCkKK3sKKyAgICBhdXRvKiBkb2N1bWVudCA9IHRoaXMtPmRvY3VtZW50KCk7CisgICAg
aWYgKCFkb2N1bWVudCkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgaWYgKHVzZXJHZXN0
dXJlUmVxdWlyZWRGb3JBdWRpb1N0YXJ0KCkpIHsKKyAgICAgICAgaWYgKCFkb2N1bWVudC0+cHJv
Y2Vzc2luZ1VzZXJHZXN0dXJlRm9yTWVkaWEoKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
KyAgICAgICAgcmVtb3ZlQmVoYXZpb3JSZXN0cmljdGlvbihXZWJLaXRBdWRpb0NvbnRleHQ6OlJl
cXVpcmVVc2VyR2VzdHVyZUZvckF1ZGlvU3RhcnRSZXN0cmljdGlvbik7CisgICAgfQorCisgICAg
aWYgKHBhZ2VDb25zZW50UmVxdWlyZWRGb3JBdWRpb1N0YXJ0KCkpIHsKKyAgICAgICAgYXV0byog
cGFnZSA9IGRvY3VtZW50LT5wYWdlKCk7CisgICAgICAgIGlmIChwYWdlICYmICFwYWdlLT5jYW5T
dGFydE1lZGlhKCkpIHsKKyAgICAgICAgICAgIGRvY3VtZW50LT5hZGRNZWRpYUNhblN0YXJ0TGlz
dGVuZXIoKnRoaXMpOworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisgICAg
ICAgIHJlbW92ZUJlaGF2aW9yUmVzdHJpY3Rpb24oV2ViS2l0QXVkaW9Db250ZXh0OjpSZXF1aXJl
UGFnZUNvbnNlbnRGb3JBdWRpb1N0YXJ0UmVzdHJpY3Rpb24pOworICAgIH0KKworICAgIHJldHVy
biBtX21lZGlhU2Vzc2lvbi0+Y2xpZW50V2lsbFBhdXNlUGxheWJhY2soKTsKK30KKwordm9pZCBX
ZWJLaXRBdWRpb0NvbnRleHQ6OnN0YXJ0UmVuZGVyaW5nKCkKK3sKKyAgICBBTFdBWVNfTE9HKExP
R0lERU5USUZJRVIpOworICAgIGlmIChtX2lzU3RvcFNjaGVkdWxlZCB8fCAhd2lsbEJlZ2luUGxh
eWJhY2soKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgbWFrZVBlbmRpbmdBY3Rpdml0eSgpOwor
CisgICAgZGVzdGluYXRpb24oKS0+c3RhcnRSZW5kZXJpbmcoKTsKKyAgICBzZXRTdGF0ZShTdGF0
ZTo6UnVubmluZyk7Cit9CisKK3ZvaWQgV2ViS2l0QXVkaW9Db250ZXh0OjptZWRpYUNhblN0YXJ0
KERvY3VtZW50JiBkb2N1bWVudCkKK3sKKyAgICBBU1NFUlRfVU5VU0VEKGRvY3VtZW50LCAmZG9j
dW1lbnQgPT0gdGhpcy0+ZG9jdW1lbnQoKSk7CisgICAgcmVtb3ZlQmVoYXZpb3JSZXN0cmljdGlv
bihXZWJLaXRBdWRpb0NvbnRleHQ6OlJlcXVpcmVQYWdlQ29uc2VudEZvckF1ZGlvU3RhcnRSZXN0
cmljdGlvbik7CisgICAgbWF5UmVzdW1lUGxheWJhY2sodHJ1ZSk7Cit9CisKK01lZGlhUHJvZHVj
ZXI6Ok1lZGlhU3RhdGVGbGFncyBXZWJLaXRBdWRpb0NvbnRleHQ6Om1lZGlhU3RhdGUoKSBjb25z
dAoreworICAgIGlmICghbV9pc1N0b3BTY2hlZHVsZWQgJiYgbV9kZXN0aW5hdGlvbk5vZGUgJiYg
bV9kZXN0aW5hdGlvbk5vZGUtPmlzUGxheWluZ0F1ZGlvKCkpCisgICAgICAgIHJldHVybiBNZWRp
YVByb2R1Y2VyOjpJc1BsYXlpbmdBdWRpbzsKKworICAgIHJldHVybiBNZWRpYVByb2R1Y2VyOjpJ
c05vdFBsYXlpbmc7Cit9CisKK3ZvaWQgV2ViS2l0QXVkaW9Db250ZXh0OjpwYWdlTXV0ZWRTdGF0
ZURpZENoYW5nZSgpCit7CisgICAgaWYgKG1fZGVzdGluYXRpb25Ob2RlICYmIGRvY3VtZW50KCkg
JiYgZG9jdW1lbnQoKS0+cGFnZSgpKQorICAgICAgICBtX2Rlc3RpbmF0aW9uTm9kZS0+c2V0TXV0
ZWQoZG9jdW1lbnQoKS0+cGFnZSgpLT5pc0F1ZGlvTXV0ZWQoKSk7Cit9CisKK3ZvaWQgV2ViS2l0
QXVkaW9Db250ZXh0Ojppc1BsYXlpbmdBdWRpb0RpZENoYW5nZSgpCit7CisgICAgLy8gTWFrZSBz
dXJlIHRvIGNhbGwgRG9jdW1lbnQ6OnVwZGF0ZUlzUGxheWluZ01lZGlhKCkgb24gdGhlIG1haW4g
dGhyZWFkLCBzaW5jZQorICAgIC8vIHdlIGNvdWxkIGJlIG9uIHRoZSBhdWRpbyBJL08gdGhyZWFk
IGhlcmUgYW5kIHRoZSBjYWxsIGludG8gV2ViQ29yZSBjb3VsZCBibG9jay4KKyAgICBjYWxsT25N
YWluVGhyZWFkKFtwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyldIHsKKyAgICAgICAgaWYg
KHByb3RlY3RlZFRoaXMtPmRvY3VtZW50KCkpCisgICAgICAgICAgICBwcm90ZWN0ZWRUaGlzLT5k
b2N1bWVudCgpLT51cGRhdGVJc1BsYXlpbmdNZWRpYSgpOworICAgIH0pOworfQorCit2b2lkIFdl
YktpdEF1ZGlvQ29udGV4dDo6ZmluaXNoZWRSZW5kZXJpbmcoYm9vbCBkaWRSZW5kZXJpbmcpCit7
CisgICAgQVNTRVJUKGlzT2ZmbGluZUNvbnRleHQoKSk7CisgICAgQVNTRVJUKGlzTWFpblRocmVh
ZCgpKTsKKyAgICBpZiAoIWlzTWFpblRocmVhZCgpKQorICAgICAgICByZXR1cm47CisKKyAgICBh
dXRvIGNsZWFyUGVuZGluZ0FjdGl2aXR5SWZFeGl0RWFybHkgPSBXVEY6Om1ha2VTY29wZUV4aXQo
W3RoaXNdIHsKKyAgICAgICAgY2xlYXJQZW5kaW5nQWN0aXZpdHkoKTsKKyAgICB9KTsKKworCisg
ICAgQUxXQVlTX0xPRyhMT0dJREVOVElGSUVSKTsKKworICAgIGlmICghZGlkUmVuZGVyaW5nKQor
ICAgICAgICByZXR1cm47CisKKyAgICBBdWRpb0J1ZmZlciogcmVuZGVyZWRCdWZmZXIgPSBtX3Jl
bmRlclRhcmdldC5nZXQoKTsKKyAgICBzZXRTdGF0ZShTdGF0ZTo6Q2xvc2VkKTsKKworICAgIEFT
U0VSVChyZW5kZXJlZEJ1ZmZlcik7CisgICAgaWYgKCFyZW5kZXJlZEJ1ZmZlcikKKyAgICAgICAg
cmV0dXJuOworCisgICAgLy8gQXZvaWQgZmlyaW5nIHRoZSBldmVudCBpZiB0aGUgZG9jdW1lbnQg
aGFzIGFscmVhZHkgZ29uZSBhd2F5LgorICAgIGlmIChtX2lzU3RvcFNjaGVkdWxlZCkKKyAgICAg
ICAgcmV0dXJuOworCisgICAgY2xlYXJQZW5kaW5nQWN0aXZpdHlJZkV4aXRFYXJseS5yZWxlYXNl
KCk7CisgICAgbV9ldmVudFF1ZXVlLT5lbnF1ZXVlRXZlbnQoT2ZmbGluZUF1ZGlvQ29tcGxldGlv
bkV2ZW50OjpjcmVhdGUocmVuZGVyZWRCdWZmZXIpKTsKK30KKwordm9pZCBXZWJLaXRBdWRpb0Nv
bnRleHQ6OmRpc3BhdGNoRXZlbnQoRXZlbnQmIGV2ZW50KQoreworICAgIEV2ZW50VGFyZ2V0Ojpk
aXNwYXRjaEV2ZW50KGV2ZW50KTsKKyAgICBpZiAoZXZlbnQuZXZlbnRJbnRlcmZhY2UoKSA9PSBP
ZmZsaW5lQXVkaW9Db21wbGV0aW9uRXZlbnRJbnRlcmZhY2VUeXBlKQorICAgICAgICBjbGVhclBl
bmRpbmdBY3Rpdml0eSgpOworfQorCit2b2lkIFdlYktpdEF1ZGlvQ29udGV4dDo6aW5jcmVtZW50
QWN0aXZlU291cmNlQ291bnQoKQoreworICAgICsrbV9hY3RpdmVTb3VyY2VDb3VudDsKK30KKwor
dm9pZCBXZWJLaXRBdWRpb0NvbnRleHQ6OmRlY3JlbWVudEFjdGl2ZVNvdXJjZUNvdW50KCkKK3sK
KyAgICAtLW1fYWN0aXZlU291cmNlQ291bnQ7Cit9CisKK3ZvaWQgV2ViS2l0QXVkaW9Db250ZXh0
OjpzdXNwZW5kUmVuZGVyaW5nKERPTVByb21pc2VEZWZlcnJlZDx2b2lkPiYmIHByb21pc2UpCit7
CisgICAgaWYgKGlzT2ZmbGluZUNvbnRleHQoKSB8fCBtX2lzU3RvcFNjaGVkdWxlZCkgeworICAg
ICAgICBwcm9taXNlLnJlamVjdChJbnZhbGlkU3RhdGVFcnJvcik7CisgICAgICAgIHJldHVybjsK
KyAgICB9CisKKyAgICBpZiAobV9zdGF0ZSA9PSBTdGF0ZTo6U3VzcGVuZGVkKSB7CisgICAgICAg
IHByb21pc2UucmVzb2x2ZSgpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgaWYgKG1f
c3RhdGUgPT0gU3RhdGU6OkNsb3NlZCB8fCBtX3N0YXRlID09IFN0YXRlOjpJbnRlcnJ1cHRlZCB8
fCAhbV9kZXN0aW5hdGlvbk5vZGUpIHsKKyAgICAgICAgcHJvbWlzZS5yZWplY3QoKTsKKyAgICAg
ICAgcmV0dXJuOworICAgIH0KKworICAgIGFkZFJlYWN0aW9uKFN0YXRlOjpTdXNwZW5kZWQsIFdU
Rk1vdmUocHJvbWlzZSkpOworCisgICAgaWYgKCF3aWxsUGF1c2VQbGF5YmFjaygpKQorICAgICAg
ICByZXR1cm47CisKKyAgICBsYXp5SW5pdGlhbGl6ZSgpOworCisgICAgbV9kZXN0aW5hdGlvbk5v
ZGUtPnN1c3BlbmQoW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKV0geworICAg
ICAgICBzZXRTdGF0ZShTdGF0ZTo6U3VzcGVuZGVkKTsKKyAgICB9KTsKK30KKwordm9pZCBXZWJL
aXRBdWRpb0NvbnRleHQ6OnJlc3VtZVJlbmRlcmluZyhET01Qcm9taXNlRGVmZXJyZWQ8dm9pZD4m
JiBwcm9taXNlKQoreworICAgIGlmIChpc09mZmxpbmVDb250ZXh0KCkgfHwgbV9pc1N0b3BTY2hl
ZHVsZWQpIHsKKyAgICAgICAgcHJvbWlzZS5yZWplY3QoSW52YWxpZFN0YXRlRXJyb3IpOworICAg
ICAgICByZXR1cm47CisgICAgfQorCisgICAgaWYgKG1fc3RhdGUgPT0gU3RhdGU6OlJ1bm5pbmcp
IHsKKyAgICAgICAgcHJvbWlzZS5yZXNvbHZlKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisK
KyAgICBpZiAobV9zdGF0ZSA9PSBTdGF0ZTo6Q2xvc2VkIHx8ICFtX2Rlc3RpbmF0aW9uTm9kZSkg
eworICAgICAgICBwcm9taXNlLnJlamVjdCgpOworICAgICAgICByZXR1cm47CisgICAgfQorCisg
ICAgYWRkUmVhY3Rpb24oU3RhdGU6OlJ1bm5pbmcsIFdURk1vdmUocHJvbWlzZSkpOworCisgICAg
aWYgKCF3aWxsQmVnaW5QbGF5YmFjaygpKQorICAgICAgICByZXR1cm47CisKKyAgICBsYXp5SW5p
dGlhbGl6ZSgpOworCisgICAgbV9kZXN0aW5hdGlvbk5vZGUtPnJlc3VtZShbdGhpcywgcHJvdGVj
dGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpXSB7CisgICAgICAgIHNldFN0YXRlKFN0YXRlOjpSdW5u
aW5nKTsKKyAgICB9KTsKK30KKwordm9pZCBXZWJLaXRBdWRpb0NvbnRleHQ6OmNsb3NlKERPTVBy
b21pc2VEZWZlcnJlZDx2b2lkPiYmIHByb21pc2UpCit7CisgICAgaWYgKGlzT2ZmbGluZUNvbnRl
eHQoKSB8fCBtX2lzU3RvcFNjaGVkdWxlZCkgeworICAgICAgICBwcm9taXNlLnJlamVjdChJbnZh
bGlkU3RhdGVFcnJvcik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpZiAobV9zdGF0
ZSA9PSBTdGF0ZTo6Q2xvc2VkIHx8ICFtX2Rlc3RpbmF0aW9uTm9kZSkgeworICAgICAgICBwcm9t
aXNlLnJlc29sdmUoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGFkZFJlYWN0aW9u
KFN0YXRlOjpDbG9zZWQsIFdURk1vdmUocHJvbWlzZSkpOworCisgICAgbGF6eUluaXRpYWxpemUo
KTsKKworICAgIG1fZGVzdGluYXRpb25Ob2RlLT5jbG9zZShbdGhpcywgcHJvdGVjdGVkVGhpcyA9
IG1ha2VSZWYoKnRoaXMpXSB7CisgICAgICAgIHNldFN0YXRlKFN0YXRlOjpDbG9zZWQpOworICAg
ICAgICB1bmluaXRpYWxpemUoKTsKKyAgICB9KTsKK30KKworCit2b2lkIFdlYktpdEF1ZGlvQ29u
dGV4dDo6c3VzcGVuZFBsYXliYWNrKCkKK3sKKyAgICBpZiAoIW1fZGVzdGluYXRpb25Ob2RlIHx8
IG1fc3RhdGUgPT0gU3RhdGU6OkNsb3NlZCkKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKG1f
c3RhdGUgPT0gU3RhdGU6OlN1c3BlbmRlZCkgeworICAgICAgICBpZiAobV9tZWRpYVNlc3Npb24t
PnN0YXRlKCkgPT0gUGxhdGZvcm1NZWRpYVNlc3Npb246OkludGVycnVwdGVkKQorICAgICAgICAg
ICAgc2V0U3RhdGUoU3RhdGU6OkludGVycnVwdGVkKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0K
KworICAgIGxhenlJbml0aWFsaXplKCk7CisKKyAgICBtX2Rlc3RpbmF0aW9uTm9kZS0+c3VzcGVu
ZChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpXSB7CisgICAgICAgIGJvb2wg
aW50ZXJydXB0ZWQgPSBtX21lZGlhU2Vzc2lvbi0+c3RhdGUoKSA9PSBQbGF0Zm9ybU1lZGlhU2Vz
c2lvbjo6SW50ZXJydXB0ZWQ7CisgICAgICAgIHNldFN0YXRlKGludGVycnVwdGVkID8gU3RhdGU6
OkludGVycnVwdGVkIDogU3RhdGU6OlN1c3BlbmRlZCk7CisgICAgfSk7Cit9CisKK3ZvaWQgV2Vi
S2l0QXVkaW9Db250ZXh0OjptYXlSZXN1bWVQbGF5YmFjayhib29sIHNob3VsZFJlc3VtZSkKK3sK
KyAgICBpZiAoIW1fZGVzdGluYXRpb25Ob2RlIHx8IG1fc3RhdGUgPT0gU3RhdGU6OkNsb3NlZCB8
fCBtX3N0YXRlID09IFN0YXRlOjpSdW5uaW5nKQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAo
IXNob3VsZFJlc3VtZSkgeworICAgICAgICBzZXRTdGF0ZShTdGF0ZTo6U3VzcGVuZGVkKTsKKyAg
ICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlmICghd2lsbEJlZ2luUGxheWJhY2soKSkKKyAg
ICAgICAgcmV0dXJuOworCisgICAgbGF6eUluaXRpYWxpemUoKTsKKworICAgIG1fZGVzdGluYXRp
b25Ob2RlLT5yZXN1bWUoW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKV0gewor
ICAgICAgICBzZXRTdGF0ZShTdGF0ZTo6UnVubmluZyk7CisgICAgfSk7Cit9CisKK3ZvaWQgV2Vi
S2l0QXVkaW9Db250ZXh0Ojpwb3N0VGFzayhXVEY6OkZ1bmN0aW9uPHZvaWQoKT4mJiB0YXNrKQor
eworICAgIGlmIChtX2lzU3RvcFNjaGVkdWxlZCkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9z
Y3JpcHRFeGVjdXRpb25Db250ZXh0LT5wb3N0VGFzayhXVEZNb3ZlKHRhc2spKTsKK30KKworY29u
c3QgU2VjdXJpdHlPcmlnaW4qIFdlYktpdEF1ZGlvQ29udGV4dDo6b3JpZ2luKCkgY29uc3QKK3sK
KyAgICByZXR1cm4gbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0ID8gbV9zY3JpcHRFeGVjdXRpb25D
b250ZXh0LT5zZWN1cml0eU9yaWdpbigpIDogbnVsbHB0cjsKK30KKwordm9pZCBXZWJLaXRBdWRp
b0NvbnRleHQ6OmFkZENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VTb3VyY2Ugc291cmNlLCBNZXNzYWdl
TGV2ZWwgbGV2ZWwsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKK3sKKyAgICBpZiAobV9zY3JpcHRF
eGVjdXRpb25Db250ZXh0KQorICAgICAgICBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPmFkZENv
bnNvbGVNZXNzYWdlKHNvdXJjZSwgbGV2ZWwsIG1lc3NhZ2UpOworfQorCit2b2lkIFdlYktpdEF1
ZGlvQ29udGV4dDo6Y2xlYXJQZW5kaW5nQWN0aXZpdHkoKQoreworICAgIGlmICghbV9wZW5kaW5n
QWN0aXZpdHkpCisgICAgICAgIHJldHVybjsKKyAgICBtX3BlbmRpbmdBY3Rpdml0eSA9IG51bGxw
dHI7CisgICAgLy8gRklYTUU6IFJlbW92ZSB0aGlzIHNwZWNpZmljIGRlcmVmKCkgYW5kIHJlZigp
IGNhbGwgaW4gbWFrZVBlbmRpbmdBY3Rpdml0eSgpLgorICAgIGRlcmVmKCk7Cit9CisKK3ZvaWQg
V2ViS2l0QXVkaW9Db250ZXh0OjptYWtlUGVuZGluZ0FjdGl2aXR5KCkKK3sKKyAgICBpZiAobV9w
ZW5kaW5nQWN0aXZpdHkpCisgICAgICAgIHJldHVybjsKKyAgICBtX3BlbmRpbmdBY3Rpdml0eSA9
IEFjdGl2ZURPTU9iamVjdDo6bWFrZVBlbmRpbmdBY3Rpdml0eSgqdGhpcyk7CisgICAgcmVmKCk7
Cit9CisKKyNpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKK1dURkxvZ0NoYW5uZWwmIFdlYktpdEF1
ZGlvQ29udGV4dDo6bG9nQ2hhbm5lbCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIExvZ01lZGlhOwor
fQorI2VuZGlmCisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShX
RUJfQVVESU8pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1dl
YktpdEF1ZGlvQ29udGV4dC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9XZWJL
aXRBdWRpb0NvbnRleHQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4u
NWE0NmZiMjgwYmMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmF1ZGlvL1dlYktpdEF1ZGlvQ29udGV4dC5oCkBAIC0wLDAgKzEsNDY3IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTYtMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiAgUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQK
KyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TgorICogQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTCisgKiBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkFjdGl2ZURPTU9iamVjdC5oIgorI2luY2x1
ZGUgIkFzeW5jQXVkaW9EZWNvZGVyLmgiCisjaW5jbHVkZSAiQXVkaW9CdXMuaCIKKyNpbmNsdWRl
ICJBdWRpb0NvbnRleHRTdGF0ZS5oIgorI2luY2x1ZGUgIkF1ZGlvRGVzdGluYXRpb25Ob2RlLmgi
CisjaW5jbHVkZSAiRXZlbnRUYXJnZXQuaCIKKyNpbmNsdWRlICJNZWRpYUNhblN0YXJ0TGlzdGVu
ZXIuaCIKKyNpbmNsdWRlICJNZWRpYVByb2R1Y2VyLmgiCisjaW5jbHVkZSAiUGxhdGZvcm1NZWRp
YVNlc3Npb24uaCIKKyNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCisjaW5jbHVk
ZSAiVmlzaWJpbGl0eUNoYW5nZUNsaWVudC5oIgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0Nv
bnNvbGVUeXBlcy5oPgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0Zsb2F0MzJBcnJheS5oPgor
I2luY2x1ZGUgPGF0b21pYz4KKyNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgorI2luY2x1ZGUgPHd0
Zi9Mb2dnZXJIZWxwZXIuaD4KKyNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgorI2luY2x1ZGUg
PHd0Zi9SZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYvVGhyZWFkU2FmZVJlZkNvdW50ZWQuaD4KKyNp
bmNsdWRlIDx3dGYvVGhyZWFkaW5nLmg+CisjaW5jbHVkZSA8d3RmL1VuaXF1ZVJlZi5oPgorI2lu
Y2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9BdG9tU3RyaW5nSGFzaC5o
PgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIEFuYWx5c2VyTm9kZTsKK2NsYXNzIEF1
ZGlvQnVmZmVyOworY2xhc3MgQXVkaW9CdWZmZXJDYWxsYmFjazsKK2NsYXNzIEF1ZGlvQnVmZmVy
U291cmNlTm9kZTsKK2NsYXNzIEF1ZGlvTGlzdGVuZXI7CitjbGFzcyBBdWRpb1N1bW1pbmdKdW5j
dGlvbjsKK2NsYXNzIEJpcXVhZEZpbHRlck5vZGU7CitjbGFzcyBDaGFubmVsTWVyZ2VyTm9kZTsK
K2NsYXNzIENoYW5uZWxTcGxpdHRlck5vZGU7CitjbGFzcyBDb252b2x2ZXJOb2RlOworY2xhc3Mg
RGVsYXlOb2RlOworY2xhc3MgRG9jdW1lbnQ7CitjbGFzcyBEeW5hbWljc0NvbXByZXNzb3JOb2Rl
OworY2xhc3MgR2Fpbk5vZGU7CitjbGFzcyBIVE1MTWVkaWFFbGVtZW50OworY2xhc3MgTWFpblRo
cmVhZEdlbmVyaWNFdmVudFF1ZXVlOworY2xhc3MgTWVkaWFFbGVtZW50QXVkaW9Tb3VyY2VOb2Rl
OworY2xhc3MgTWVkaWFTdHJlYW07CitjbGFzcyBNZWRpYVN0cmVhbUF1ZGlvRGVzdGluYXRpb25O
b2RlOworY2xhc3MgTWVkaWFTdHJlYW1BdWRpb1NvdXJjZU5vZGU7CitjbGFzcyBPc2NpbGxhdG9y
Tm9kZTsKK2NsYXNzIFBhbm5lck5vZGU7CitjbGFzcyBQZXJpb2RpY1dhdmU7CitjbGFzcyBTY3Jp
cHRQcm9jZXNzb3JOb2RlOworY2xhc3MgU2VjdXJpdHlPcmlnaW47CitjbGFzcyBXYXZlU2hhcGVy
Tm9kZTsKKwordGVtcGxhdGU8dHlwZW5hbWUgSURMVHlwZT4gY2xhc3MgRE9NUHJvbWlzZURlZmVy
cmVkOworCisvLyBBdWRpb0NvbnRleHQgaXMgdGhlIGNvcm5lcnN0b25lIG9mIHRoZSB3ZWIgYXVk
aW8gQVBJIGFuZCBhbGwgQXVkaW9Ob2RlcyBhcmUgY3JlYXRlZCBmcm9tIGl0LgorLy8gRm9yIHRo
cmVhZCBzYWZldHkgYmV0d2VlbiB0aGUgYXVkaW8gdGhyZWFkIGFuZCB0aGUgbWFpbiB0aHJlYWQs
IGl0IGhhcyBhIHJlbmRlcmluZyBncmFwaCBsb2NraW5nIG1lY2hhbmlzbS4KKworY2xhc3MgV2Vi
S2l0QXVkaW9Db250ZXh0CisgICAgOiBwdWJsaWMgQWN0aXZlRE9NT2JqZWN0CisgICAgLCBwdWJs
aWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8V2ViS2l0QXVkaW9Db250ZXh0PgorICAgICwgcHVibGlj
IEV2ZW50VGFyZ2V0V2l0aElubGluZURhdGEKKyAgICAsIHB1YmxpYyBNZWRpYUNhblN0YXJ0TGlz
dGVuZXIKKyAgICAsIHB1YmxpYyBNZWRpYVByb2R1Y2VyCisgICAgLCBwcml2YXRlIFBsYXRmb3Jt
TWVkaWFTZXNzaW9uQ2xpZW50CisgICAgLCBwcml2YXRlIFZpc2liaWxpdHlDaGFuZ2VDbGllbnQK
KyNpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKKyAgICAsIHByaXZhdGUgTG9nZ2VySGVscGVyCisj
ZW5kaWYKK3sKKyAgICBXVEZfTUFLRV9JU09fQUxMT0NBVEVEKFdlYktpdEF1ZGlvQ29udGV4dCk7
CitwdWJsaWM6CisgICAgLy8gQ3JlYXRlIGFuIFdlYktpdEF1ZGlvQ29udGV4dCBmb3IgcmVuZGVy
aW5nIHRvIHRoZSBhdWRpbyBoYXJkd2FyZS4KKyAgICBzdGF0aWMgRXhjZXB0aW9uT3I8UmVmPFdl
YktpdEF1ZGlvQ29udGV4dD4+IGNyZWF0ZShEb2N1bWVudCYpOworCisgICAgdmlydHVhbCB+V2Vi
S2l0QXVkaW9Db250ZXh0KCk7CisKKyAgICBib29sIGlzSW5pdGlhbGl6ZWQoKSBjb25zdDsKKwor
ICAgIGJvb2wgaXNPZmZsaW5lQ29udGV4dCgpIGNvbnN0IHsgcmV0dXJuIG1faXNPZmZsaW5lQ29u
dGV4dDsgfQorCisgICAgRG9jdW1lbnQqIGRvY3VtZW50KCkgY29uc3Q7IC8vIEFTU0VSVHMgaWYg
ZG9jdW1lbnQgbm8gbG9uZ2VyIGV4aXN0cy4KKworICAgIERvY3VtZW50SWRlbnRpZmllciBob3N0
aW5nRG9jdW1lbnRJZGVudGlmaWVyKCkgY29uc3QgZmluYWw7CisKKyAgICBBdWRpb0Rlc3RpbmF0
aW9uTm9kZSogZGVzdGluYXRpb24oKSB7IHJldHVybiBtX2Rlc3RpbmF0aW9uTm9kZS5nZXQoKTsg
fQorICAgIHNpemVfdCBjdXJyZW50U2FtcGxlRnJhbWUoKSBjb25zdCB7IHJldHVybiBtX2Rlc3Rp
bmF0aW9uTm9kZSA/IG1fZGVzdGluYXRpb25Ob2RlLT5jdXJyZW50U2FtcGxlRnJhbWUoKSA6IDA7
IH0KKyAgICBkb3VibGUgY3VycmVudFRpbWUoKSBjb25zdCB7IHJldHVybiBtX2Rlc3RpbmF0aW9u
Tm9kZSA/IG1fZGVzdGluYXRpb25Ob2RlLT5jdXJyZW50VGltZSgpIDogMC47IH0KKyAgICBmbG9h
dCBzYW1wbGVSYXRlKCkgY29uc3QgeyByZXR1cm4gbV9kZXN0aW5hdGlvbk5vZGUgPyBtX2Rlc3Rp
bmF0aW9uTm9kZS0+c2FtcGxlUmF0ZSgpIDogMC5mOyB9CisgICAgdW5zaWduZWQgbG9uZyBhY3Rp
dmVTb3VyY2VDb3VudCgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PHVuc2lnbmVkIGxvbmc+
KG1fYWN0aXZlU291cmNlQ291bnQpOyB9CisKKyAgICB2b2lkIGluY3JlbWVudEFjdGl2ZVNvdXJj
ZUNvdW50KCk7CisgICAgdm9pZCBkZWNyZW1lbnRBY3RpdmVTb3VyY2VDb3VudCgpOworCisgICAg
RXhjZXB0aW9uT3I8UmVmPEF1ZGlvQnVmZmVyPj4gY3JlYXRlQnVmZmVyKHVuc2lnbmVkIG51bWJl
ck9mQ2hhbm5lbHMsIHNpemVfdCBudW1iZXJPZkZyYW1lcywgZmxvYXQgc2FtcGxlUmF0ZSk7Cisg
ICAgRXhjZXB0aW9uT3I8UmVmPEF1ZGlvQnVmZmVyPj4gY3JlYXRlQnVmZmVyKEFycmF5QnVmZmVy
JiwgYm9vbCBtaXhUb01vbm8pOworCisgICAgLy8gQXN5bmNocm9ub3VzIGF1ZGlvIGZpbGUgZGF0
YSBkZWNvZGluZy4KKyAgICB2b2lkIGRlY29kZUF1ZGlvRGF0YShSZWY8QXJyYXlCdWZmZXI+JiYs
IFJlZlB0cjxBdWRpb0J1ZmZlckNhbGxiYWNrPiYmLCBSZWZQdHI8QXVkaW9CdWZmZXJDYWxsYmFj
az4mJik7CisKKyAgICBBdWRpb0xpc3RlbmVyKiBsaXN0ZW5lcigpIHsgcmV0dXJuIG1fbGlzdGVu
ZXIuZ2V0KCk7IH0KKworICAgIHZvaWQgc3VzcGVuZFJlbmRlcmluZyhET01Qcm9taXNlRGVmZXJy
ZWQ8dm9pZD4mJik7CisgICAgdm9pZCByZXN1bWVSZW5kZXJpbmcoRE9NUHJvbWlzZURlZmVycmVk
PHZvaWQ+JiYpOworICAgIHZvaWQgY2xvc2UoRE9NUHJvbWlzZURlZmVycmVkPHZvaWQ+JiYpOwor
CisgICAgdXNpbmcgU3RhdGUgPSBBdWRpb0NvbnRleHRTdGF0ZTsKKyAgICBTdGF0ZSBzdGF0ZSgp
IGNvbnN0OworICAgIGJvb2wgaXNDbG9zZWQoKSBjb25zdCB7IHJldHVybiBtX3N0YXRlID09IFN0
YXRlOjpDbG9zZWQ7IH0KKworICAgIGJvb2wgd291bGRUYWludE9yaWdpbihjb25zdCBVUkwmKSBj
b25zdDsKKworICAgIC8vIFRoZSBBdWRpb05vZGUgY3JlYXRlIG1ldGhvZHMgYXJlIGNhbGxlZCBv
biB0aGUgbWFpbiB0aHJlYWQgKGZyb20gSmF2YVNjcmlwdCkuCisgICAgRXhjZXB0aW9uT3I8UmVm
PEF1ZGlvQnVmZmVyU291cmNlTm9kZT4+IGNyZWF0ZUJ1ZmZlclNvdXJjZSgpOworI2lmIEVOQUJM
RShWSURFTykKKyAgICBFeGNlcHRpb25PcjxSZWY8TWVkaWFFbGVtZW50QXVkaW9Tb3VyY2VOb2Rl
Pj4gY3JlYXRlTWVkaWFFbGVtZW50U291cmNlKEhUTUxNZWRpYUVsZW1lbnQmKTsKKyNlbmRpZgor
I2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCisgICAgRXhjZXB0aW9uT3I8UmVmPE1lZGlhU3RyZWFt
QXVkaW9Tb3VyY2VOb2RlPj4gY3JlYXRlTWVkaWFTdHJlYW1Tb3VyY2UoTWVkaWFTdHJlYW0mKTsK
KyAgICBFeGNlcHRpb25PcjxSZWY8TWVkaWFTdHJlYW1BdWRpb0Rlc3RpbmF0aW9uTm9kZT4+IGNy
ZWF0ZU1lZGlhU3RyZWFtRGVzdGluYXRpb24oKTsKKyNlbmRpZgorICAgIEV4Y2VwdGlvbk9yPFJl
ZjxHYWluTm9kZT4+IGNyZWF0ZUdhaW4oKTsKKyAgICBFeGNlcHRpb25PcjxSZWY8QmlxdWFkRmls
dGVyTm9kZT4+IGNyZWF0ZUJpcXVhZEZpbHRlcigpOworICAgIEV4Y2VwdGlvbk9yPFJlZjxXYXZl
U2hhcGVyTm9kZT4+IGNyZWF0ZVdhdmVTaGFwZXIoKTsKKyAgICBFeGNlcHRpb25PcjxSZWY8RGVs
YXlOb2RlPj4gY3JlYXRlRGVsYXkoZG91YmxlIG1heERlbGF5VGltZSk7CisgICAgRXhjZXB0aW9u
T3I8UmVmPFBhbm5lck5vZGU+PiBjcmVhdGVQYW5uZXIoKTsKKyAgICBFeGNlcHRpb25PcjxSZWY8
Q29udm9sdmVyTm9kZT4+IGNyZWF0ZUNvbnZvbHZlcigpOworICAgIEV4Y2VwdGlvbk9yPFJlZjxE
eW5hbWljc0NvbXByZXNzb3JOb2RlPj4gY3JlYXRlRHluYW1pY3NDb21wcmVzc29yKCk7CisgICAg
RXhjZXB0aW9uT3I8UmVmPEFuYWx5c2VyTm9kZT4+IGNyZWF0ZUFuYWx5c2VyKCk7CisgICAgRXhj
ZXB0aW9uT3I8UmVmPFNjcmlwdFByb2Nlc3Nvck5vZGU+PiBjcmVhdGVTY3JpcHRQcm9jZXNzb3Io
c2l6ZV90IGJ1ZmZlclNpemUsIHNpemVfdCBudW1iZXJPZklucHV0Q2hhbm5lbHMsIHNpemVfdCBu
dW1iZXJPZk91dHB1dENoYW5uZWxzKTsKKyAgICBFeGNlcHRpb25PcjxSZWY8Q2hhbm5lbFNwbGl0
dGVyTm9kZT4+IGNyZWF0ZUNoYW5uZWxTcGxpdHRlcihzaXplX3QgbnVtYmVyT2ZPdXRwdXRzKTsK
KyAgICBFeGNlcHRpb25PcjxSZWY8Q2hhbm5lbE1lcmdlck5vZGU+PiBjcmVhdGVDaGFubmVsTWVy
Z2VyKHNpemVfdCBudW1iZXJPZklucHV0cyk7CisgICAgRXhjZXB0aW9uT3I8UmVmPE9zY2lsbGF0
b3JOb2RlPj4gY3JlYXRlT3NjaWxsYXRvcigpOworICAgIEV4Y2VwdGlvbk9yPFJlZjxQZXJpb2Rp
Y1dhdmU+PiBjcmVhdGVQZXJpb2RpY1dhdmUoRmxvYXQzMkFycmF5JiByZWFsLCBGbG9hdDMyQXJy
YXkmIGltYWdpbmFyeSk7CisKKyAgICAvLyBXaGVuIGEgc291cmNlIG5vZGUgaGFzIG5vIG1vcmUg
cHJvY2Vzc2luZyB0byBkbyAoaGFzIGZpbmlzaGVkIHBsYXlpbmcpLCB0aGVuIGl0IHRlbGxzIHRo
ZSBjb250ZXh0IHRvIGRlcmVmZXJlbmNlIGl0LgorICAgIHZvaWQgbm90aWZ5Tm9kZUZpbmlzaGVk
UHJvY2Vzc2luZyhBdWRpb05vZGUqKTsKKworICAgIC8vIENhbGxlZCBhdCB0aGUgc3RhcnQgb2Yg
ZWFjaCByZW5kZXIgcXVhbnR1bS4KKyAgICB2b2lkIGhhbmRsZVByZVJlbmRlclRhc2tzKCk7CisK
KyAgICAvLyBDYWxsZWQgYXQgdGhlIGVuZCBvZiBlYWNoIHJlbmRlciBxdWFudHVtLgorICAgIHZv
aWQgaGFuZGxlUG9zdFJlbmRlclRhc2tzKCk7CisKKyAgICAvLyBDYWxsZWQgcGVyaW9kaWNhbGx5
IGF0IHRoZSBlbmQgb2YgZWFjaCByZW5kZXIgcXVhbnR1bSB0byBkZXJlZmVyZW5jZSBmaW5pc2hl
ZCBzb3VyY2Ugbm9kZXMuCisgICAgdm9pZCBkZXJlZkZpbmlzaGVkU291cmNlTm9kZXMoKTsKKwor
ICAgIC8vIFdlIHNjaGVkdWxlIGRlbGV0aW9uIG9mIGFsbCBtYXJrZWQgbm9kZXMgYXQgdGhlIGVu
ZCBvZiBlYWNoIHJlYWx0aW1lIHJlbmRlciBxdWFudHVtLgorICAgIHZvaWQgbWFya0ZvckRlbGV0
aW9uKEF1ZGlvTm9kZSYpOworICAgIHZvaWQgZGVsZXRlTWFya2VkTm9kZXMoKTsKKworICAgIC8v
IEF1ZGlvQ29udGV4dCBjYW4gcHVsbCBub2RlKHMpIGF0IHRoZSBlbmQgb2YgZWFjaCByZW5kZXIg
cXVhbnR1bSBldmVuIHdoZW4gdGhleSBhcmUgbm90IGNvbm5lY3RlZCB0byBhbnkgZG93bnN0cmVh
bSBub2Rlcy4KKyAgICAvLyBUaGVzZSB0d28gbWV0aG9kcyBhcmUgY2FsbGVkIGJ5IHRoZSBub2Rl
cyB3aG8gd2FudCB0byBhZGQvcmVtb3ZlIHRoZW1zZWx2ZXMgaW50by9mcm9tIHRoZSBhdXRvbWF0
aWMgcHVsbCBsaXN0cy4KKyAgICB2b2lkIGFkZEF1dG9tYXRpY1B1bGxOb2RlKEF1ZGlvTm9kZSYp
OworICAgIHZvaWQgcmVtb3ZlQXV0b21hdGljUHVsbE5vZGUoQXVkaW9Ob2RlJik7CisKKyAgICAv
LyBDYWxsZWQgcmlnaHQgYmVmb3JlIGhhbmRsZVBvc3RSZW5kZXJUYXNrcygpIHRvIGhhbmRsZSBu
b2RlcyB3aGljaCBuZWVkIHRvIGJlIHB1bGxlZCBldmVuIHdoZW4gdGhleSBhcmUgbm90IGNvbm5l
Y3RlZCB0byBhbnl0aGluZy4KKyAgICB2b2lkIHByb2Nlc3NBdXRvbWF0aWNQdWxsTm9kZXMoc2l6
ZV90IGZyYW1lc1RvUHJvY2Vzcyk7CisKKyAgICAvLyBLZWVwcyB0cmFjayBvZiB0aGUgbnVtYmVy
IG9mIGNvbm5lY3Rpb25zIG1hZGUuCisgICAgdm9pZCBpbmNyZW1lbnRDb25uZWN0aW9uQ291bnQo
KQorICAgIHsKKyAgICAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKyAgICAgICAgbV9jb25u
ZWN0aW9uQ291bnQrKzsKKyAgICB9CisKKyAgICB1bnNpZ25lZCBjb25uZWN0aW9uQ291bnQoKSBj
b25zdCB7IHJldHVybiBtX2Nvbm5lY3Rpb25Db3VudDsgfQorCisgICAgLy8KKyAgICAvLyBUaHJl
YWQgU2FmZXR5IGFuZCBHcmFwaCBMb2NraW5nOgorICAgIC8vCisKKyAgICB2b2lkIHNldEF1ZGlv
VGhyZWFkKFRocmVhZCYgdGhyZWFkKSB7IG1fYXVkaW9UaHJlYWQgPSAmdGhyZWFkOyB9IC8vIEZJ
WE1FOiBjaGVjayBlaXRoZXIgbm90IGluaXRpYWxpemVkIG9yIHRoZSBzYW1lCisgICAgVGhyZWFk
KiBhdWRpb1RocmVhZCgpIGNvbnN0IHsgcmV0dXJuIG1fYXVkaW9UaHJlYWQ7IH0KKyAgICBib29s
IGlzQXVkaW9UaHJlYWQoKSBjb25zdDsKKworICAgIC8vIFJldHVybnMgdHJ1ZSBvbmx5IGFmdGVy
IHRoZSBhdWRpbyB0aHJlYWQgaGFzIGJlZW4gc3RhcnRlZCBhbmQgdGhlbiBzaHV0ZG93bi4KKyAg
ICBib29sIGlzQXVkaW9UaHJlYWRGaW5pc2hlZCgpIHsgcmV0dXJuIG1faXNBdWRpb1RocmVhZEZp
bmlzaGVkOyB9CisKKyAgICAvLyBtdXN0UmVsZWFzZUxvY2sgaXMgc2V0IHRvIHRydWUgaWYgd2Ug
YWNxdWlyZWQgdGhlIGxvY2sgaW4gdGhpcyBtZXRob2QgY2FsbCBhbmQgY2FsbGVyIG11c3QgdW5s
b2NrKCksIGZhbHNlIGlmIGl0IHdhcyBwcmV2aW91c2x5IGFjcXVpcmVkLgorICAgIHZvaWQgbG9j
ayhib29sJiBtdXN0UmVsZWFzZUxvY2spOworCisgICAgLy8gUmV0dXJucyB0cnVlIGlmIHdlIG93
biB0aGUgbG9jay4KKyAgICAvLyBtdXN0UmVsZWFzZUxvY2sgaXMgc2V0IHRvIHRydWUgaWYgd2Ug
YWNxdWlyZWQgdGhlIGxvY2sgaW4gdGhpcyBtZXRob2QgY2FsbCBhbmQgY2FsbGVyIG11c3QgdW5s
b2NrKCksIGZhbHNlIGlmIGl0IHdhcyBwcmV2aW91c2x5IGFjcXVpcmVkLgorICAgIGJvb2wgdHJ5
TG9jayhib29sJiBtdXN0UmVsZWFzZUxvY2spOworCisgICAgdm9pZCB1bmxvY2soKTsKKworICAg
IC8vIFJldHVybnMgdHJ1ZSBpZiB0aGlzIHRocmVhZCBvd25zIHRoZSBjb250ZXh0J3MgbG9jay4K
KyAgICBib29sIGlzR3JhcGhPd25lcigpIGNvbnN0OworCisgICAgLy8gUmV0dXJucyB0aGUgbWF4
aW11bSBudW1iZXIgb2YgY2hhbm5lbHMgd2UgY2FuIHN1cHBvcnQuCisgICAgc3RhdGljIHVuc2ln
bmVkIG1heE51bWJlck9mQ2hhbm5lbHMoKSB7IHJldHVybiBNYXhOdW1iZXJPZkNoYW5uZWxzOyB9
CisKKyAgICBjbGFzcyBBdXRvTG9ja2VyIHsKKyAgICBwdWJsaWM6CisgICAgICAgIGV4cGxpY2l0
IEF1dG9Mb2NrZXIoV2ViS2l0QXVkaW9Db250ZXh0JiBjb250ZXh0KQorICAgICAgICAgICAgOiBt
X2NvbnRleHQoY29udGV4dCkKKyAgICAgICAgeworICAgICAgICAgICAgbV9jb250ZXh0LmxvY2so
bV9tdXN0UmVsZWFzZUxvY2spOworICAgICAgICB9CisKKyAgICAgICAgfkF1dG9Mb2NrZXIoKQor
ICAgICAgICB7CisgICAgICAgICAgICBpZiAobV9tdXN0UmVsZWFzZUxvY2spCisgICAgICAgICAg
ICAgICAgbV9jb250ZXh0LnVubG9jaygpOworICAgICAgICB9CisKKyAgICBwcml2YXRlOgorICAg
ICAgICBXZWJLaXRBdWRpb0NvbnRleHQmIG1fY29udGV4dDsKKyAgICAgICAgYm9vbCBtX211c3RS
ZWxlYXNlTG9jazsKKyAgICB9OworCisgICAgLy8gSW4gQXVkaW9Ob2RlOjpkZXJlZigpIGEgdHJ5
TG9jaygpIGlzIHVzZWQgZm9yIGNhbGxpbmcgZmluaXNoRGVyZWYoKSwgYnV0IGlmIGl0IGZhaWxz
IGtlZXAgdHJhY2sgaGVyZS4KKyAgICB2b2lkIGFkZERlZmVycmVkRmluaXNoRGVyZWYoQXVkaW9O
b2RlKik7CisKKyAgICAvLyBJbiB0aGUgYXVkaW8gdGhyZWFkIGF0IHRoZSBzdGFydCBvZiBlYWNo
IHJlbmRlciBjeWNsZSwgd2UnbGwgY2FsbCBoYW5kbGVEZWZlcnJlZEZpbmlzaERlcmVmcygpLgor
ICAgIHZvaWQgaGFuZGxlRGVmZXJyZWRGaW5pc2hEZXJlZnMoKTsKKworICAgIC8vIE9ubHkgYWNj
ZXNzZWQgd2hlbiB0aGUgZ3JhcGggbG9jayBpcyBoZWxkLgorICAgIHZvaWQgbWFya1N1bW1pbmdK
dW5jdGlvbkRpcnR5KEF1ZGlvU3VtbWluZ0p1bmN0aW9uKik7CisgICAgdm9pZCBtYXJrQXVkaW9O
b2RlT3V0cHV0RGlydHkoQXVkaW9Ob2RlT3V0cHV0Kik7CisKKyAgICAvLyBNdXN0IGJlIGNhbGxl
ZCBvbiBtYWluIHRocmVhZC4KKyAgICB2b2lkIHJlbW92ZU1hcmtlZFN1bW1pbmdKdW5jdGlvbihB
dWRpb1N1bW1pbmdKdW5jdGlvbiopOworCisgICAgLy8gRXZlbnRUYXJnZXQKKyAgICBFdmVudFRh
cmdldEludGVyZmFjZSBldmVudFRhcmdldEludGVyZmFjZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJu
IFdlYktpdEF1ZGlvQ29udGV4dEV2ZW50VGFyZ2V0SW50ZXJmYWNlVHlwZTsgfQorCisgICAgLy8g
UmVjb25jaWxlIHJlZi9kZXJlZiB3aGljaCBhcmUgZGVmaW5lZCBib3RoIGluIFRocmVhZFNhZmVS
ZWZDb3VudGVkIGFuZCBFdmVudFRhcmdldC4KKyAgICB1c2luZyBUaHJlYWRTYWZlUmVmQ291bnRl
ZDo6cmVmOworICAgIHVzaW5nIFRocmVhZFNhZmVSZWZDb3VudGVkOjpkZXJlZjsKKworICAgIHZv
aWQgc3RhcnRSZW5kZXJpbmcoKTsKKyAgICB2b2lkIGZpbmlzaGVkUmVuZGVyaW5nKGJvb2wgZGlk
UmVuZGVyaW5nKTsKKworICAgIHN0YXRpYyB1bnNpZ25lZCBzX2hhcmR3YXJlQ29udGV4dENvdW50
OworCisgICAgLy8gUmVzdHJpY3Rpb25zIHRvIGNoYW5nZSBkZWZhdWx0IGJlaGF2aW9ycy4KKyAg
ICBlbnVtIEJlaGF2aW9yUmVzdHJpY3Rpb25GbGFncyB7CisgICAgICAgIE5vUmVzdHJpY3Rpb25z
ID0gMCwKKyAgICAgICAgUmVxdWlyZVVzZXJHZXN0dXJlRm9yQXVkaW9TdGFydFJlc3RyaWN0aW9u
ID0gMSA8PCAwLAorICAgICAgICBSZXF1aXJlUGFnZUNvbnNlbnRGb3JBdWRpb1N0YXJ0UmVzdHJp
Y3Rpb24gPSAxIDw8IDEsCisgICAgfTsKKyAgICB0eXBlZGVmIHVuc2lnbmVkIEJlaGF2aW9yUmVz
dHJpY3Rpb25zOworCisgICAgQmVoYXZpb3JSZXN0cmljdGlvbnMgYmVoYXZpb3JSZXN0cmljdGlv
bnMoKSBjb25zdCB7IHJldHVybiBtX3Jlc3RyaWN0aW9uczsgfQorICAgIHZvaWQgYWRkQmVoYXZp
b3JSZXN0cmljdGlvbihCZWhhdmlvclJlc3RyaWN0aW9ucyByZXN0cmljdGlvbikgeyBtX3Jlc3Ry
aWN0aW9ucyB8PSByZXN0cmljdGlvbjsgfQorICAgIHZvaWQgcmVtb3ZlQmVoYXZpb3JSZXN0cmlj
dGlvbihCZWhhdmlvclJlc3RyaWN0aW9ucyByZXN0cmljdGlvbikgeyBtX3Jlc3RyaWN0aW9ucyAm
PSB+cmVzdHJpY3Rpb247IH0KKworICAgIHZvaWQgaXNQbGF5aW5nQXVkaW9EaWRDaGFuZ2UoKTsK
KworICAgIHZvaWQgbm9kZVdpbGxCZWdpblBsYXliYWNrKCk7CisKKyNpZiAhUkVMRUFTRV9MT0df
RElTQUJMRUQKKyAgICBjb25zdCBMb2dnZXImIGxvZ2dlcigpIGNvbnN0IGZpbmFsIHsgcmV0dXJu
IG1fbG9nZ2VyLmdldCgpOyB9CisgICAgY29uc3Qgdm9pZCogbG9nSWRlbnRpZmllcigpIGNvbnN0
IGZpbmFsIHsgcmV0dXJuIG1fbG9nSWRlbnRpZmllcjsgfQorICAgIFdURkxvZ0NoYW5uZWwmIGxv
Z0NoYW5uZWwoKSBjb25zdCBmaW5hbDsKKyAgICBjb25zdCB2b2lkKiBuZXh0QXVkaW9Ob2RlTG9n
SWRlbnRpZmllcigpIHsgcmV0dXJuIGNoaWxkTG9nSWRlbnRpZmllcihtX2xvZ0lkZW50aWZpZXIs
ICsrbV9uZXh0QXVkaW9Ob2RlSWRlbnRpZmllcik7IH0KKyAgICBjb25zdCB2b2lkKiBuZXh0QXVk
aW9QYXJhbWV0ZXJMb2dJZGVudGlmaWVyKCkgeyByZXR1cm4gY2hpbGRMb2dJZGVudGlmaWVyKG1f
bG9nSWRlbnRpZmllciwgKyttX25leHRBdWRpb1BhcmFtZXRlcklkZW50aWZpZXIpOyB9CisjZW5k
aWYKKworICAgIHZvaWQgcG9zdFRhc2soV1RGOjpGdW5jdGlvbjx2b2lkKCk+JiYpOworICAgIGJv
b2wgaXNTdG9wcGVkKCkgY29uc3QgeyByZXR1cm4gbV9pc1N0b3BTY2hlZHVsZWQ7IH0KKyAgICBj
b25zdCBTZWN1cml0eU9yaWdpbiogb3JpZ2luKCkgY29uc3Q7CisgICAgdm9pZCBhZGRDb25zb2xl
TWVzc2FnZShNZXNzYWdlU291cmNlLCBNZXNzYWdlTGV2ZWwsIGNvbnN0IFN0cmluZyYgbWVzc2Fn
ZSk7CisKKyAgICAvLyBFdmVudFRhcmdldAorICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQoKSBjb25zdCBmaW5hbDsKKworcHJvdGVjdGVkOgorICAgIGV4
cGxpY2l0IFdlYktpdEF1ZGlvQ29udGV4dChEb2N1bWVudCYpOworICAgIFdlYktpdEF1ZGlvQ29u
dGV4dChEb2N1bWVudCYsIEF1ZGlvQnVmZmVyKiByZW5kZXJUYXJnZXQpOworCisgICAgc3RhdGlj
IGJvb2wgaXNTYW1wbGVSYXRlUmFuZ2VHb29kKGZsb2F0IHNhbXBsZVJhdGUpOworICAgIHZvaWQg
Y2xlYXJQZW5kaW5nQWN0aXZpdHkoKTsKKyAgICB2b2lkIG1ha2VQZW5kaW5nQWN0aXZpdHkoKTsK
KworcHJpdmF0ZToKKyAgICB2b2lkIGNvbnN0cnVjdENvbW1vbigpOworCisgICAgdm9pZCBsYXp5
SW5pdGlhbGl6ZSgpOworICAgIHZvaWQgdW5pbml0aWFsaXplKCk7CisKKyAgICBib29sIHdpbGxC
ZWdpblBsYXliYWNrKCk7CisgICAgYm9vbCB3aWxsUGF1c2VQbGF5YmFjaygpOworCisgICAgYm9v
bCB1c2VyR2VzdHVyZVJlcXVpcmVkRm9yQXVkaW9TdGFydCgpIGNvbnN0IHsgcmV0dXJuICFpc09m
ZmxpbmVDb250ZXh0KCkgJiYgbV9yZXN0cmljdGlvbnMgJiBSZXF1aXJlVXNlckdlc3R1cmVGb3JB
dWRpb1N0YXJ0UmVzdHJpY3Rpb247IH0KKyAgICBib29sIHBhZ2VDb25zZW50UmVxdWlyZWRGb3JB
dWRpb1N0YXJ0KCkgY29uc3QgeyByZXR1cm4gIWlzT2ZmbGluZUNvbnRleHQoKSAmJiBtX3Jlc3Ry
aWN0aW9ucyAmIFJlcXVpcmVQYWdlQ29uc2VudEZvckF1ZGlvU3RhcnRSZXN0cmljdGlvbjsgfQor
CisgICAgdm9pZCBzZXRTdGF0ZShTdGF0ZSk7CisKKyAgICB2b2lkIGNsZWFyKCk7CisKKyAgICB2
b2lkIHNjaGVkdWxlTm9kZURlbGV0aW9uKCk7CisKKyAgICB2b2lkIG1lZGlhQ2FuU3RhcnQoRG9j
dW1lbnQmKSBvdmVycmlkZTsKKworICAgIC8vIEV2ZW50VGFyZ2V0CisgICAgdm9pZCBkaXNwYXRj
aEV2ZW50KEV2ZW50JikgZmluYWw7CisKKyAgICAvLyBNZWRpYVByb2R1Y2VyCisgICAgTWVkaWFQ
cm9kdWNlcjo6TWVkaWFTdGF0ZUZsYWdzIG1lZGlhU3RhdGUoKSBjb25zdCBvdmVycmlkZTsKKyAg
ICB2b2lkIHBhZ2VNdXRlZFN0YXRlRGlkQ2hhbmdlKCkgb3ZlcnJpZGU7CisKKyAgICAvLyBUaGUg
Y29udGV4dCBpdHNlbGYga2VlcHMgYSByZWZlcmVuY2UgdG8gYWxsIHNvdXJjZSBub2Rlcy4gIFRo
ZSBzb3VyY2Ugbm9kZXMsIHRoZW4gcmVmZXJlbmNlIGFsbCBub2RlcyB0aGV5J3JlIGNvbm5lY3Rl
ZCB0by4KKyAgICAvLyBJbiB0dXJuLCB0aGVzZSBub2RlcyByZWZlcmVuY2UgYWxsIG5vZGVzIHRo
ZXkncmUgY29ubmVjdGVkIHRvLiAgQWxsIG5vZGVzIGFyZSB1bHRpbWF0ZWx5IGNvbm5lY3RlZCB0
byB0aGUgQXVkaW9EZXN0aW5hdGlvbk5vZGUuCisgICAgLy8gV2hlbiB0aGUgY29udGV4dCBkZXJl
ZmVyZW5jZXMgYSBzb3VyY2Ugbm9kZSwgaXQgd2lsbCBiZSBkZWFjdGl2YXRlZCBmcm9tIHRoZSBy
ZW5kZXJpbmcgZ3JhcGggYWxvbmcgd2l0aCBhbGwgb3RoZXIgbm9kZXMgaXQgaXMKKyAgICAvLyB1
bmlxdWVseSBjb25uZWN0ZWQgdG8uICBTZWUgdGhlIEF1ZGlvTm9kZTo6cmVmKCkgYW5kIEF1ZGlv
Tm9kZTo6ZGVyZWYoKSBtZXRob2RzIGZvciBtb3JlIGRldGFpbHMuCisgICAgdm9pZCByZWZOb2Rl
KEF1ZGlvTm9kZSYpOworICAgIHZvaWQgZGVyZWZOb2RlKEF1ZGlvTm9kZSYpOworCisgICAgLy8g
QWN0aXZlRE9NT2JqZWN0IEFQSS4KKyAgICB2b2lkIHN1c3BlbmQoUmVhc29uRm9yU3VzcGVuc2lv
bikgZmluYWw7CisgICAgdm9pZCByZXN1bWUoKSBmaW5hbDsKKyAgICB2b2lkIHN0b3AoKSBvdmVy
cmlkZTsKKyAgICBjb25zdCBjaGFyKiBhY3RpdmVET01PYmplY3ROYW1lKCkgY29uc3Qgb3ZlcnJp
ZGU7CisKKyAgICAvLyBXaGVuIHRoZSBjb250ZXh0IGdvZXMgYXdheSwgdGhlcmUgbWlnaHQgc3Rp
bGwgYmUgc29tZSBzb3VyY2VzIHdoaWNoIGhhdmVuJ3QgZmluaXNoZWQgcGxheWluZy4KKyAgICAv
LyBNYWtlIHN1cmUgdG8gZGVyZWZlcmVuY2UgdGhlbSBoZXJlLgorICAgIHZvaWQgZGVyZWZVbmZp
bmlzaGVkU291cmNlTm9kZXMoKTsKKworICAgIC8vIFBsYXRmb3JtTWVkaWFTZXNzaW9uQ2xpZW50
CisgICAgUGxhdGZvcm1NZWRpYVNlc3Npb246Ok1lZGlhVHlwZSBtZWRpYVR5cGUoKSBjb25zdCBv
dmVycmlkZSB7IHJldHVybiBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6TWVkaWFUeXBlOjpXZWJBdWRp
bzsgfQorICAgIFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpNZWRpYVR5cGUgcHJlc2VudGF0aW9uVHlw
ZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpNZWRpYVR5
cGU6OldlYkF1ZGlvOyB9CisgICAgdm9pZCBtYXlSZXN1bWVQbGF5YmFjayhib29sIHNob3VsZFJl
c3VtZSkgb3ZlcnJpZGU7CisgICAgdm9pZCBzdXNwZW5kUGxheWJhY2soKSBvdmVycmlkZTsKKyAg
ICBib29sIGNhblJlY2VpdmVSZW1vdGVDb250cm9sQ29tbWFuZHMoKSBjb25zdCBvdmVycmlkZSB7
IHJldHVybiBmYWxzZTsgfQorICAgIHZvaWQgZGlkUmVjZWl2ZVJlbW90ZUNvbnRyb2xDb21tYW5k
KFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpSZW1vdGVDb250cm9sQ29tbWFuZFR5cGUsIGNvbnN0IFBs
YXRmb3JtTWVkaWFTZXNzaW9uOjpSZW1vdGVDb21tYW5kQXJndW1lbnQqKSBvdmVycmlkZSB7IH0K
KyAgICBib29sIHN1cHBvcnRzU2Vla2luZygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNl
OyB9CisgICAgYm9vbCBzaG91bGRPdmVycmlkZUJhY2tncm91bmRQbGF5YmFja1Jlc3RyaWN0aW9u
KFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpJbnRlcnJ1cHRpb25UeXBlKSBjb25zdCBvdmVycmlkZSB7
IHJldHVybiBmYWxzZTsgfQorICAgIGJvb2wgY2FuUHJvZHVjZUF1ZGlvKCkgY29uc3QgZmluYWwg
eyByZXR1cm4gdHJ1ZTsgfQorICAgIGJvb2wgaXNTdXNwZW5kZWQoKSBjb25zdCBmaW5hbDsKKwor
ICAgIHZvaWQgdmlzaWJpbGl0eVN0YXRlQ2hhbmdlZCgpIGZpbmFsOworCisgICAgLy8gRXZlbnRU
YXJnZXQKKyAgICB2b2lkIHJlZkV2ZW50VGFyZ2V0KCkgb3ZlcnJpZGUgeyByZWYoKTsgfQorICAg
IHZvaWQgZGVyZWZFdmVudFRhcmdldCgpIG92ZXJyaWRlIHsgZGVyZWYoKTsgfQorCisgICAgdm9p
ZCBoYW5kbGVEaXJ0eUF1ZGlvU3VtbWluZ0p1bmN0aW9ucygpOworICAgIHZvaWQgaGFuZGxlRGly
dHlBdWRpb05vZGVPdXRwdXRzKCk7CisKKyAgICB2b2lkIGFkZFJlYWN0aW9uKFN0YXRlLCBET01Q
cm9taXNlRGVmZXJyZWQ8dm9pZD4mJik7CisgICAgdm9pZCB1cGRhdGVBdXRvbWF0aWNQdWxsTm9k
ZXMoKTsKKworI2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRAorICAgIGNvbnN0IGNoYXIqIGxvZ0Ns
YXNzTmFtZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuICJXZWJLaXRBdWRpb0NvbnRleHQiOyB9CisK
KyAgICBSZWY8TG9nZ2VyPiBtX2xvZ2dlcjsKKyAgICBjb25zdCB2b2lkKiBtX2xvZ0lkZW50aWZp
ZXI7CisgICAgdWludDY0X3QgbV9uZXh0QXVkaW9Ob2RlSWRlbnRpZmllciB7IDAgfTsKKyAgICB1
aW50NjRfdCBtX25leHRBdWRpb1BhcmFtZXRlcklkZW50aWZpZXIgeyAwIH07CisjZW5kaWYKKwor
ICAgIC8vIE9ubHkgYWNjZXNzZWQgaW4gdGhlIGF1ZGlvIHRocmVhZC4KKyAgICBWZWN0b3I8QXVk
aW9Ob2RlKj4gbV9maW5pc2hlZE5vZGVzOworCisgICAgLy8gV2UgZG9uJ3QgdXNlIFJlZlB0cjxB
dWRpb05vZGU+IGhlcmUgYmVjYXVzZSBBdWRpb05vZGUgaGFzIGEgbW9yZSBjb21wbGV4IHJlZigp
IC8gZGVyZWYoKSBpbXBsZW1lbnRhdGlvbgorICAgIC8vIHdpdGggYW4gb3B0aW9uYWwgYXJndW1l
bnQgZm9yIHJlZlR5cGUuICBXZSBuZWVkIHRvIHVzZSB0aGUgc3BlY2lhbCByZWZUeXBlOiBSZWZU
eXBlQ29ubmVjdGlvbgorICAgIC8vIEVpdGhlciBhY2Nlc3NlZCB3aGVuIHRoZSBncmFwaCBsb2Nr
IGlzIGhlbGQsIG9yIG9uIHRoZSBtYWluIHRocmVhZCB3aGVuIHRoZSBhdWRpbyB0aHJlYWQgaGFz
IGZpbmlzaGVkLgorICAgIFZlY3RvcjxBdWRpb05vZGUqPiBtX3JlZmVyZW5jZWROb2RlczsKKwor
ICAgIC8vIEFjY3VtdWxhdGUgbm9kZXMgd2hpY2ggbmVlZCB0byBiZSBkZWxldGVkIGhlcmUuCisg
ICAgLy8gVGhpcyBpcyBjb3BpZWQgdG8gbV9ub2Rlc1RvRGVsZXRlIGF0IHRoZSBlbmQgb2YgYSBy
ZW5kZXIgY3ljbGUgaW4gaGFuZGxlUG9zdFJlbmRlclRhc2tzKCksIHdoZXJlIHdlJ3JlIGFzc3Vy
ZWQgb2YgYSBzdGFibGUgZ3JhcGgKKyAgICAvLyBzdGF0ZSB3aGljaCB3aWxsIGhhdmUgbm8gcmVm
ZXJlbmNlcyB0byBhbnkgb2YgdGhlIG5vZGVzIGluIG1fbm9kZXNUb0RlbGV0ZSBvbmNlIHRoZSBj
b250ZXh0IGxvY2sgaXMgcmVsZWFzZWQKKyAgICAvLyAod2hlbiBoYW5kbGVQb3N0UmVuZGVyVGFz
a3MoKSBoYXMgY29tcGxldGVkKS4KKyAgICBWZWN0b3I8QXVkaW9Ob2RlKj4gbV9ub2Rlc01hcmtl
ZEZvckRlbGV0aW9uOworCisgICAgLy8gVGhleSB3aWxsIGJlIHNjaGVkdWxlZCBmb3IgZGVsZXRp
b24gKG9uIHRoZSBtYWluIHRocmVhZCkgYXQgdGhlIGVuZCBvZiBhIHJlbmRlciBjeWNsZSAoaW4g
cmVhbHRpbWUgdGhyZWFkKS4KKyAgICBWZWN0b3I8QXVkaW9Ob2RlKj4gbV9ub2Rlc1RvRGVsZXRl
OworCisgICAgYm9vbCBtX2lzRGVsZXRpb25TY2hlZHVsZWQgeyBmYWxzZSB9OworICAgIGJvb2wg
bV9pc1N0b3BTY2hlZHVsZWQgeyBmYWxzZSB9OworICAgIGJvb2wgbV9pc0luaXRpYWxpemVkIHsg
ZmFsc2UgfTsKKyAgICBib29sIG1faXNBdWRpb1RocmVhZEZpbmlzaGVkIHsgZmFsc2UgfTsKKyAg
ICBib29sIG1fYXV0b21hdGljUHVsbE5vZGVzTmVlZFVwZGF0aW5nIHsgZmFsc2UgfTsKKyAgICBi
b29sIG1faXNPZmZsaW5lQ29udGV4dCB7IGZhbHNlIH07CisKKyAgICAvLyBPbmx5IGFjY2Vzc2Vk
IHdoZW4gdGhlIGdyYXBoIGxvY2sgaXMgaGVsZC4KKyAgICBIYXNoU2V0PEF1ZGlvU3VtbWluZ0p1
bmN0aW9uKj4gbV9kaXJ0eVN1bW1pbmdKdW5jdGlvbnM7CisgICAgSGFzaFNldDxBdWRpb05vZGVP
dXRwdXQqPiBtX2RpcnR5QXVkaW9Ob2RlT3V0cHV0czsKKworICAgIC8vIEZvciB0aGUgc2FrZSBv
ZiB0aHJlYWQgc2FmZXR5LCB3ZSBtYWludGFpbiBhIHNlcGVyYXRlIFZlY3RvciBvZiBhdXRvbWF0
aWMgcHVsbCBub2RlcyBmb3IgcmVuZGVyaW5nIGluIG1fcmVuZGVyaW5nQXV0b21hdGljUHVsbE5v
ZGVzLgorICAgIC8vIEl0IHdpbGwgYmUgY29waWVkIGZyb20gbV9hdXRvbWF0aWNQdWxsTm9kZXMg
YnkgdXBkYXRlQXV0b21hdGljUHVsbE5vZGVzKCkgYXQgdGhlIHZlcnkgc3RhcnQgb3IgZW5kIG9m
IHRoZSByZW5kZXJpbmcgcXVhbnR1bS4KKyAgICBIYXNoU2V0PEF1ZGlvTm9kZSo+IG1fYXV0b21h
dGljUHVsbE5vZGVzOworICAgIFZlY3RvcjxBdWRpb05vZGUqPiBtX3JlbmRlcmluZ0F1dG9tYXRp
Y1B1bGxOb2RlczsKKyAgICAvLyBPbmx5IGFjY2Vzc2VkIGluIHRoZSBhdWRpbyB0aHJlYWQuCisg
ICAgVmVjdG9yPEF1ZGlvTm9kZSo+IG1fZGVmZXJyZWRGaW5pc2hEZXJlZkxpc3Q7CisgICAgVmVj
dG9yPFZlY3RvcjxET01Qcm9taXNlRGVmZXJyZWQ8dm9pZD4+PiBtX3N0YXRlUmVhY3Rpb25zOwor
CisgICAgc3RkOjp1bmlxdWVfcHRyPFBsYXRmb3JtTWVkaWFTZXNzaW9uPiBtX21lZGlhU2Vzc2lv
bjsKKyAgICBVbmlxdWVSZWY8TWFpblRocmVhZEdlbmVyaWNFdmVudFF1ZXVlPiBtX2V2ZW50UXVl
dWU7CisKKyAgICBSZWZQdHI8QXVkaW9CdWZmZXI+IG1fcmVuZGVyVGFyZ2V0OworICAgIFJlZlB0
cjxBdWRpb0Rlc3RpbmF0aW9uTm9kZT4gbV9kZXN0aW5hdGlvbk5vZGU7CisgICAgUmVmUHRyPEF1
ZGlvTGlzdGVuZXI+IG1fbGlzdGVuZXI7CisKKyAgICB1bnNpZ25lZCBtX2Nvbm5lY3Rpb25Db3Vu
dCB7IDAgfTsKKworICAgIC8vIEdyYXBoIGxvY2tpbmcuCisgICAgTG9jayBtX2NvbnRleHRHcmFw
aE11dGV4OworICAgIC8vIEZJWE1FOiBVc2luZyB2b2xhdGlsZSBzZWVtcyBpbmNvcnJlY3QuCisg
ICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4MDMzMgorICAg
IFRocmVhZCogdm9sYXRpbGUgbV9hdWRpb1RocmVhZCB7IG51bGxwdHIgfTsKKyAgICBUaHJlYWQq
IHZvbGF0aWxlIG1fZ3JhcGhPd25lclRocmVhZCB7IG51bGxwdHIgfTsgLy8gaWYgdGhlIGxvY2sg
aXMgaGVsZCB0aGVuIHRoaXMgaXMgdGhlIHRocmVhZCB3aGljaCBvd25zIGl0LCBvdGhlcndpc2Ug
PT0gbnVsbHB0ci4KKworICAgIHN0ZDo6dW5pcXVlX3B0cjxBc3luY0F1ZGlvRGVjb2Rlcj4gbV9h
dWRpb0RlY29kZXI7CisKKyAgICAvLyBUaGlzIGlzIGNvbnNpZGVyaW5nIDMyIGlzIGxhcmdlIGVu
b3VnaCBmb3IgbXVsdGlwbGUgY2hhbm5lbHMgYXVkaW8uCisgICAgLy8gSXQgaXMgc29tZXdoYXQg
YXJiaXRyYXJ5IGFuZCBjb3VsZCBiZSBpbmNyZWFzZWQgaWYgbmVjZXNzYXJ5LgorICAgIGVudW0g
eyBNYXhOdW1iZXJPZkNoYW5uZWxzID0gMzIgfTsKKworICAgIC8vIE51bWJlciBvZiBBdWRpb0J1
ZmZlclNvdXJjZU5vZGVzIHRoYXQgYXJlIGFjdGl2ZSAocGxheWluZykuCisgICAgc3RkOjphdG9t
aWM8aW50PiBtX2FjdGl2ZVNvdXJjZUNvdW50IHsgMCB9OworCisgICAgQmVoYXZpb3JSZXN0cmlj
dGlvbnMgbV9yZXN0cmljdGlvbnMgeyBOb1Jlc3RyaWN0aW9ucyB9OworCisgICAgU3RhdGUgbV9z
dGF0ZSB7IFN0YXRlOjpTdXNwZW5kZWQgfTsKKyAgICBSZWZQdHI8UGVuZGluZ0FjdGl2aXR5PFdl
YktpdEF1ZGlvQ29udGV4dD4+IG1fcGVuZGluZ0FjdGl2aXR5OworfTsKKworLy8gRklYTUU6IEZp
bmQgb3V0IHdoeSB0aGVzZSA9PS8hPSBmdW5jdGlvbnMgYXJlIG5lZWRlZCBhbmQgcmVtb3ZlIHRo
ZW0gaWYgcG9zc2libGUuCisKK2lubGluZSBib29sIG9wZXJhdG9yPT0oY29uc3QgV2ViS2l0QXVk
aW9Db250ZXh0JiBsaHMsIGNvbnN0IFdlYktpdEF1ZGlvQ29udGV4dCYgcmhzKQoreworICAgIHJl
dHVybiAmbGhzID09ICZyaHM7Cit9CisKK2lubGluZSBib29sIG9wZXJhdG9yIT0oY29uc3QgV2Vi
S2l0QXVkaW9Db250ZXh0JiBsaHMsIGNvbnN0IFdlYktpdEF1ZGlvQ29udGV4dCYgcmhzKQorewor
ICAgIHJldHVybiAmbGhzICE9ICZyaHM7Cit9CisKK2lubGluZSBBdWRpb0NvbnRleHRTdGF0ZSBX
ZWJLaXRBdWRpb0NvbnRleHQ6OnN0YXRlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9zdGF0ZTsK
K30KKworfSAvLyBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmF1ZGlvL1dlYktpdEF1ZGlvQ29udGV4dC5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmF1ZGlvL1dlYktpdEF1ZGlvQ29udGV4dC5pZGwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAuLmI3NGVmMzUxODEzCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJhdWRpby9XZWJLaXRBdWRpb0NvbnRleHQuaWRsCkBAIC0wLDAgKzEsOTQg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAsIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAq
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04KKyAqIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUwor
ICogU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworWworICAgIEFjdGl2ZURPTU9iamVjdCwKKyAgICBDb25kaXRpb25hbD1X
RUJfQVVESU8sCisgICAgQ29uc3RydWN0b3IsCisgICAgQ29uc3RydWN0b3JDYWxsV2l0aD1Eb2N1
bWVudCwKKyAgICBDb25zdHJ1Y3Rvck1heVRocm93RXhjZXB0aW9uLAorICAgIEVuYWJsZWRCeVNl
dHRpbmc9V2ViQXVkaW8sCisgICAgRXhwb3J0TWFjcm89V0VCQ09SRV9FWFBPUlQsCisgICAgSW50
ZXJmYWNlTmFtZT13ZWJraXRBdWRpb0NvbnRleHQsCitdIGludGVyZmFjZSBXZWJLaXRBdWRpb0Nv
bnRleHQgOiBFdmVudFRhcmdldCB7CisgICAgLy8gQWxsIHJlbmRlcmVkIGF1ZGlvIHVsdGltYXRl
bHkgY29ubmVjdHMgdG8gZGVzdGluYXRpb24sIHdoaWNoIHJlcHJlc2VudHMgdGhlIGF1ZGlvIGhh
cmR3YXJlLgorICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBBdWRpb0Rlc3RpbmF0aW9uTm9kZSBkZXN0
aW5hdGlvbjsKKworICAgIC8vIEFsbCBzY2hlZHVsZWQgdGltZXMgYXJlIHJlbGF0aXZlIHRvIHRo
aXMgdGltZSBpbiBzZWNvbmRzLgorICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSB1bnJlc3RyaWN0ZWQg
ZG91YmxlIGN1cnJlbnRUaW1lOworCisgICAgLy8gQWxsIEF1ZGlvTm9kZXMgaW4gdGhlIGNvbnRl
eHQgcnVuIGF0IHRoaXMgc2FtcGxlLXJhdGUgKHNhbXBsZS1mcmFtZXMgcGVyIHNlY29uZCkuCisg
ICAgcmVhZG9ubHkgYXR0cmlidXRlIHVucmVzdHJpY3RlZCBmbG9hdCBzYW1wbGVSYXRlOworCisg
ICAgLy8gQWxsIHBhbm5pbmcgaXMgcmVsYXRpdmUgdG8gdGhpcyBsaXN0ZW5lci4KKyAgICByZWFk
b25seSBhdHRyaWJ1dGUgQXVkaW9MaXN0ZW5lciBsaXN0ZW5lcjsKKworICAgIFtJbXBsZW1lbnRl
ZEFzPXN1c3BlbmRSZW5kZXJpbmddIFByb21pc2U8dm9pZD4gc3VzcGVuZCgpOworICAgIFtJbXBs
ZW1lbnRlZEFzPXJlc3VtZVJlbmRlcmluZ10gUHJvbWlzZTx2b2lkPiByZXN1bWUoKTsKKyAgICBQ
cm9taXNlPHZvaWQ+IGNsb3NlKCk7CisKKyAgICByZWFkb25seSBhdHRyaWJ1dGUgQXVkaW9Db250
ZXh0U3RhdGUgc3RhdGU7CisgICAgYXR0cmlidXRlIEV2ZW50SGFuZGxlciBvbnN0YXRlY2hhbmdl
OworCisgICAgLy8gTnVtYmVyIG9mIEF1ZGlvQnVmZmVyU291cmNlTm9kZXMgdGhhdCBhcmUgY3Vy
cmVudGx5IHBsYXlpbmcuCisgICAgcmVhZG9ubHkgYXR0cmlidXRlIHVuc2lnbmVkIGxvbmcgYWN0
aXZlU291cmNlQ291bnQ7CisKKyAgICBbTWF5VGhyb3dFeGNlcHRpb25dIEF1ZGlvQnVmZmVyIGNy
ZWF0ZUJ1ZmZlcih1bnNpZ25lZCBsb25nIG51bWJlck9mQ2hhbm5lbHMsIHVuc2lnbmVkIGxvbmcg
bnVtYmVyT2ZGcmFtZXMsIHVucmVzdHJpY3RlZCBmbG9hdCBzYW1wbGVSYXRlKTsKKyAgICBbTWF5
VGhyb3dFeGNlcHRpb25dIEF1ZGlvQnVmZmVyIGNyZWF0ZUJ1ZmZlcihBcnJheUJ1ZmZlciBidWZm
ZXIsIGJvb2xlYW4gbWl4VG9Nb25vKTsKKworICAgIC8vIEFzeW5jaHJvbm91cyBhdWRpbyBmaWxl
IGRhdGEgZGVjb2RpbmcuCisgICAgLy8gRklYTUU6IHN1Y2Nlc3NDYWxsYmFjayBzaG91bGQgYmUg
b3B0aW9uYWwgYW5kIHRoZSBjYWxsYmFja3Mgc2hvdWxkIG5vdCBiZSBudWxsYWJsZS4gVGhpcyBz
aG91bGQgYWxzbyByZXR1cm4gYSBQcm9taXNlLgorICAgIHZvaWQgZGVjb2RlQXVkaW9EYXRhKEFy
cmF5QnVmZmVyIGF1ZGlvRGF0YSwgQXVkaW9CdWZmZXJDYWxsYmFjaz8gc3VjY2Vzc0NhbGxiYWNr
LCBvcHRpb25hbCBBdWRpb0J1ZmZlckNhbGxiYWNrPyBlcnJvckNhbGxiYWNrKTsKKworICAgIC8v
IFNvdXJjZXMKKyAgICBbTWF5VGhyb3dFeGNlcHRpb25dIEF1ZGlvQnVmZmVyU291cmNlTm9kZSBj
cmVhdGVCdWZmZXJTb3VyY2UoKTsKKworICAgIFtDb25kaXRpb25hbD1WSURFTywgTWF5VGhyb3dF
eGNlcHRpb25dIE1lZGlhRWxlbWVudEF1ZGlvU291cmNlTm9kZSBjcmVhdGVNZWRpYUVsZW1lbnRT
b3VyY2UoSFRNTE1lZGlhRWxlbWVudCBtZWRpYUVsZW1lbnQpOworCisgICAgW0NvbmRpdGlvbmFs
PU1FRElBX1NUUkVBTSwgTWF5VGhyb3dFeGNlcHRpb25dIE1lZGlhU3RyZWFtQXVkaW9Tb3VyY2VO
b2RlIGNyZWF0ZU1lZGlhU3RyZWFtU291cmNlKE1lZGlhU3RyZWFtIG1lZGlhU3RyZWFtKTsKKyAg
ICBbQ29uZGl0aW9uYWw9TUVESUFfU1RSRUFNLCBNYXlUaHJvd0V4Y2VwdGlvbl0gTWVkaWFTdHJl
YW1BdWRpb0Rlc3RpbmF0aW9uTm9kZSBjcmVhdGVNZWRpYVN0cmVhbURlc3RpbmF0aW9uKCk7CisK
KyAgICAvLyBQcm9jZXNzaW5nIG5vZGVzCisgICAgW01heVRocm93RXhjZXB0aW9uXSBHYWluTm9k
ZSBjcmVhdGVHYWluKCk7CisgICAgW01heVRocm93RXhjZXB0aW9uXSBEZWxheU5vZGUgY3JlYXRl
RGVsYXkob3B0aW9uYWwgdW5yZXN0cmljdGVkIGRvdWJsZSBtYXhEZWxheVRpbWUgPSAxKTsKKyAg
ICBbTWF5VGhyb3dFeGNlcHRpb25dIEJpcXVhZEZpbHRlck5vZGUgY3JlYXRlQmlxdWFkRmlsdGVy
KCk7CisgICAgW01heVRocm93RXhjZXB0aW9uXSBXYXZlU2hhcGVyTm9kZSBjcmVhdGVXYXZlU2hh
cGVyKCk7CisgICAgW01heVRocm93RXhjZXB0aW9uXSBQYW5uZXJOb2RlIGNyZWF0ZVBhbm5lcigp
OworICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gQ29udm9sdmVyTm9kZSBjcmVhdGVDb252b2x2ZXIo
KTsKKyAgICBbTWF5VGhyb3dFeGNlcHRpb25dIER5bmFtaWNzQ29tcHJlc3Nvck5vZGUgY3JlYXRl
RHluYW1pY3NDb21wcmVzc29yKCk7CisgICAgW01heVRocm93RXhjZXB0aW9uXSBBbmFseXNlck5v
ZGUgY3JlYXRlQW5hbHlzZXIoKTsKKyAgICBbTWF5VGhyb3dFeGNlcHRpb25dIFNjcmlwdFByb2Nl
c3Nvck5vZGUgY3JlYXRlU2NyaXB0UHJvY2Vzc29yKG9wdGlvbmFsIHVuc2lnbmVkIGxvbmcgYnVm
ZmVyU2l6ZSA9IDAsIG9wdGlvbmFsIHVuc2lnbmVkIGxvbmcgbnVtYmVyT2ZJbnB1dENoYW5uZWxz
ID0gMiwgb3B0aW9uYWwgdW5zaWduZWQgbG9uZyBudW1iZXJPZk91dHB1dENoYW5uZWxzID0gMik7
CisgICAgW01heVRocm93RXhjZXB0aW9uXSBPc2NpbGxhdG9yTm9kZSBjcmVhdGVPc2NpbGxhdG9y
KCk7CisgICAgW01heVRocm93RXhjZXB0aW9uXSBQZXJpb2RpY1dhdmUgY3JlYXRlUGVyaW9kaWNX
YXZlKEZsb2F0MzJBcnJheSByZWFsLCBGbG9hdDMyQXJyYXkgaW1hZyk7CisKKyAgICAvLyBDaGFu
bmVsIHNwbGl0dGluZyBhbmQgbWVyZ2luZworICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gQ2hhbm5l
bFNwbGl0dGVyTm9kZSBjcmVhdGVDaGFubmVsU3BsaXR0ZXIob3B0aW9uYWwgdW5zaWduZWQgbG9u
ZyBudW1iZXJPZk91dHB1dHMgPSA2KTsKKyAgICBbTWF5VGhyb3dFeGNlcHRpb25dIENoYW5uZWxN
ZXJnZXJOb2RlIGNyZWF0ZUNoYW5uZWxNZXJnZXIob3B0aW9uYWwgdW5zaWduZWQgbG9uZyBudW1i
ZXJPZklucHV0cyA9IDYpOworCisgICAgLy8gT2ZmbGluZSByZW5kZXJpbmcKKyAgICAvLyB2b2lk
IHByZXBhcmVPZmZsaW5lQnVmZmVyUmVuZGVyaW5nKHVuc2lnbmVkIGxvbmcgbnVtYmVyT2ZDaGFu
bmVscywgdW5zaWduZWQgbG9uZyBudW1iZXJPZkZyYW1lcywgdW5yZXN0cmljdGVkIGZsb2F0IHNh
bXBsZVJhdGUpOworICAgIGF0dHJpYnV0ZSBFdmVudEhhbmRsZXIgb25jb21wbGV0ZTsKKyAgICB2
b2lkIHN0YXJ0UmVuZGVyaW5nKCk7Cit9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJhdWRpby9XZWJLaXRBdWRpb1Bhbm5lck5vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJhdWRpby9XZWJLaXRBdWRpb1Bhbm5lck5vZGUuY3BwCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi45ZmZjY2EwNzBhNgotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vV2ViS2l0QXVkaW9QYW5uZXJOb2RlLmNw
cApAQCAtMCwwICsxLDM2MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCwgR29vZ2xlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycg
QU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OCisgKiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMKKyAqIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNp
bmNsdWRlICJXZWJLaXRBdWRpb1Bhbm5lck5vZGUuaCIKKworI2lmIEVOQUJMRShXRUJfQVVESU8p
CisKKyNpbmNsdWRlICJBdWRpb0J1ZmZlclNvdXJjZU5vZGUuaCIKKyNpbmNsdWRlICJBdWRpb0J1
cy5oIgorI2luY2x1ZGUgIkF1ZGlvQ29udGV4dC5oIgorI2luY2x1ZGUgIkF1ZGlvTm9kZUlucHV0
LmgiCisjaW5jbHVkZSAiQXVkaW9Ob2RlT3V0cHV0LmgiCisjaW5jbHVkZSAiSFJURkRhdGFiYXNl
TG9hZGVyLmgiCisjaW5jbHVkZSAiSFJURlBhbm5lci5oIgorI2luY2x1ZGUgIlNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQuaCIKKyNpbmNsdWRlIDx3dGYvSXNvTWFsbG9jSW5saW5lcy5oPgorI2luY2x1
ZGUgPHd0Zi9NYXRoRXh0cmFzLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworV1RGX01BS0Vf
SVNPX0FMTE9DQVRFRF9JTVBMKFdlYktpdEF1ZGlvUGFubmVyTm9kZSk7CisKK3N0YXRpYyB2b2lk
IGZpeE5BTnMoZG91YmxlICZ4KQoreworICAgIGlmIChzdGQ6OmlzbmFuKHgpIHx8IHN0ZDo6aXNp
bmYoeCkpCisgICAgICAgIHggPSAwLjA7Cit9CisKK1dlYktpdEF1ZGlvUGFubmVyTm9kZTo6UGFu
bmVyTm9kZShBdWRpb0NvbnRleHQmIGNvbnRleHQsIGZsb2F0IHNhbXBsZVJhdGUpCisgICAgOiBB
dWRpb05vZGUoY29udGV4dCwgc2FtcGxlUmF0ZSkKKyAgICAsIG1fcGFubmluZ01vZGVsKFBhbm5p
bmdNb2RlbFR5cGU6OkhSVEYpCisgICAgLCBtX2xhc3RHYWluKC0xLjApCisgICAgLCBtX2Nvbm5l
Y3Rpb25Db3VudCgwKQoreworICAgIHNldE5vZGVUeXBlKE5vZGVUeXBlUGFubmVyKTsKKworICAg
IC8vIExvYWQgdGhlIEhSVEYgZGF0YWJhc2UgYXN5bmNocm9ub3VzbHkgc28gd2UgZG9uJ3QgYmxv
Y2sgdGhlIEphdmFzY3JpcHQgdGhyZWFkIHdoaWxlIGNyZWF0aW5nIHRoZSBIUlRGIGRhdGFiYXNl
LgorICAgIG1faHJ0ZkRhdGFiYXNlTG9hZGVyID0gSFJURkRhdGFiYXNlTG9hZGVyOjpjcmVhdGVB
bmRMb2FkQXN5bmNocm9ub3VzbHlJZk5lY2Vzc2FyeShjb250ZXh0LnNhbXBsZVJhdGUoKSk7CisK
KyAgICBhZGRJbnB1dChtYWtlVW5pcXVlPEF1ZGlvTm9kZUlucHV0Pih0aGlzKSk7CisgICAgYWRk
T3V0cHV0KG1ha2VVbmlxdWU8QXVkaW9Ob2RlT3V0cHV0Pih0aGlzLCAyKSk7CisKKyAgICAvLyBO
b2RlLXNwZWNpZmljIGRlZmF1bHQgbWl4aW5nIHJ1bGVzLgorICAgIG1fY2hhbm5lbENvdW50ID0g
MjsKKyAgICBtX2NoYW5uZWxDb3VudE1vZGUgPSBDbGFtcGVkTWF4OworICAgIG1fY2hhbm5lbElu
dGVycHJldGF0aW9uID0gQXVkaW9CdXM6OlNwZWFrZXJzOworCisgICAgbV9kaXN0YW5jZUdhaW4g
PSBBdWRpb1BhcmFtOjpjcmVhdGUoY29udGV4dCwgImRpc3RhbmNlR2FpbiIsIDEuMCwgMC4wLCAx
LjApOworICAgIG1fY29uZUdhaW4gPSBBdWRpb1BhcmFtOjpjcmVhdGUoY29udGV4dCwgImNvbmVH
YWluIiwgMS4wLCAwLjAsIDEuMCk7CisKKyAgICBtX3Bvc2l0aW9uID0gRmxvYXRQb2ludDNEKDAs
IDAsIDApOworICAgIG1fb3JpZW50YXRpb24gPSBGbG9hdFBvaW50M0QoMSwgMCwgMCk7CisgICAg
bV92ZWxvY2l0eSA9IEZsb2F0UG9pbnQzRCgwLCAwLCAwKTsKKworICAgIGluaXRpYWxpemUoKTsK
K30KKworV2ViS2l0QXVkaW9QYW5uZXJOb2RlOjp+UGFubmVyTm9kZSgpCit7CisgICAgdW5pbml0
aWFsaXplKCk7Cit9CisKK3ZvaWQgV2ViS2l0QXVkaW9QYW5uZXJOb2RlOjpwdWxsSW5wdXRzKHNp
emVfdCBmcmFtZXNUb1Byb2Nlc3MpCit7CisgICAgLy8gV2Ugb3ZlcnJpZGUgcHVsbElucHV0cygp
LCBzbyB3ZSBjYW4gZGV0ZWN0IG5ldyBBdWRpb1NvdXJjZU5vZGVzIHdoaWNoIGhhdmUgY29ubmVj
dGVkIHRvIHVzIHdoZW4gbmV3IGNvbm5lY3Rpb25zIGFyZSBtYWRlLgorICAgIC8vIFRoZXNlIEF1
ZGlvU291cmNlTm9kZXMgbmVlZCB0byBiZSBtYWRlIGF3YXJlIG9mIG91ciBleGlzdGVuY2UgaW4g
b3JkZXIgdG8gaGFuZGxlIGRvcHBsZXIgc2hpZnQgcGl0Y2ggY2hhbmdlcy4KKyAgICBpZiAobV9j
b25uZWN0aW9uQ291bnQgIT0gY29udGV4dCgpLmNvbm5lY3Rpb25Db3VudCgpKSB7CisgICAgICAg
IG1fY29ubmVjdGlvbkNvdW50ID0gY29udGV4dCgpLmNvbm5lY3Rpb25Db3VudCgpOworCisgICAg
ICAgIC8vIFJlY3Vyc2l2ZWx5IGdvIHRocm91Z2ggYWxsIG5vZGVzIGNvbm5lY3RlZCB0byB1cy4K
KyAgICAgICAgSGFzaFNldDxBdWRpb05vZGUqPiB2aXNpdGVkTm9kZXM7CisgICAgICAgIG5vdGlm
eUF1ZGlvU291cmNlc0Nvbm5lY3RlZFRvTm9kZSh0aGlzLCB2aXNpdGVkTm9kZXMpOworICAgIH0K
KworICAgIEF1ZGlvTm9kZTo6cHVsbElucHV0cyhmcmFtZXNUb1Byb2Nlc3MpOworfQorCit2b2lk
IFdlYktpdEF1ZGlvUGFubmVyTm9kZTo6cHJvY2VzcyhzaXplX3QgZnJhbWVzVG9Qcm9jZXNzKQor
eworICAgIEF1ZGlvQnVzKiBkZXN0aW5hdGlvbiA9IG91dHB1dCgwKS0+YnVzKCk7CisKKyAgICBp
ZiAoIWlzSW5pdGlhbGl6ZWQoKSB8fCAhaW5wdXQoMCktPmlzQ29ubmVjdGVkKCkgfHwgIW1fcGFu
bmVyLmdldCgpKSB7CisgICAgICAgIGRlc3RpbmF0aW9uLT56ZXJvKCk7CisgICAgICAgIHJldHVy
bjsKKyAgICB9CisKKyAgICBBdWRpb0J1cyogc291cmNlID0gaW5wdXQoMCktPmJ1cygpOworICAg
IGlmICghc291cmNlKSB7CisgICAgICAgIGRlc3RpbmF0aW9uLT56ZXJvKCk7CisgICAgICAgIHJl
dHVybjsKKyAgICB9CisKKyAgICAvLyBIUlRGRGF0YWJhc2Ugc2hvdWxkIGJlIGxvYWRlZCBiZWZv
cmUgcHJvY2VlZGluZyBmb3Igb2ZmbGluZSBhdWRpbyBjb250ZXh0IHdoZW4gcGFubmluZ01vZGVs
KCkgaXMgIkhSVEYiLgorICAgIGlmIChwYW5uaW5nTW9kZWwoKSA9PSBQYW5uaW5nTW9kZWxUeXBl
OjpIUlRGICYmICFtX2hydGZEYXRhYmFzZUxvYWRlci0+aXNMb2FkZWQoKSkgeworICAgICAgICBp
ZiAoY29udGV4dCgpLmlzT2ZmbGluZUNvbnRleHQoKSkKKyAgICAgICAgICAgIG1faHJ0ZkRhdGFi
YXNlTG9hZGVyLT53YWl0Rm9yTG9hZGVyVGhyZWFkQ29tcGxldGlvbigpOworICAgICAgICBlbHNl
IHsKKyAgICAgICAgICAgIGRlc3RpbmF0aW9uLT56ZXJvKCk7CisgICAgICAgICAgICByZXR1cm47
CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvLyBUaGUgYXVkaW8gdGhyZWFkIGNhbid0IGJsb2Nr
IG9uIHRoaXMgbG9jaywgc28gd2UgdXNlIHN0ZDo6dHJ5X3RvX2xvY2sgaW5zdGVhZC4KKyAgICBz
dGQ6OnVuaXF1ZV9sb2NrPExvY2s+IGxvY2sobV9wYW5uZXJNdXRleCwgc3RkOjp0cnlfdG9fbG9j
ayk7CisgICAgaWYgKCFsb2NrLm93bnNfbG9jaygpKSB7CisgICAgICAgIC8vIFRvbyBiYWQgLSBU
aGUgdHJ5X2xvY2soKSBmYWlsZWQuIFdlIG11c3QgYmUgaW4gdGhlIG1pZGRsZSBvZiBjaGFuZ2lu
ZyB0aGUgcGFubmVyLgorICAgICAgICBkZXN0aW5hdGlvbi0+emVybygpOworICAgICAgICByZXR1
cm47CisgICAgfQorCisgICAgLy8gQXBwbHkgdGhlIHBhbm5pbmcgZWZmZWN0LgorICAgIGRvdWJs
ZSBhemltdXRoOworICAgIGRvdWJsZSBlbGV2YXRpb247CisgICAgZ2V0QXppbXV0aEVsZXZhdGlv
bigmYXppbXV0aCwgJmVsZXZhdGlvbik7CisgICAgbV9wYW5uZXItPnBhbihhemltdXRoLCBlbGV2
YXRpb24sIHNvdXJjZSwgZGVzdGluYXRpb24sIGZyYW1lc1RvUHJvY2Vzcyk7CisKKyAgICAvLyBH
ZXQgdGhlIGRpc3RhbmNlIGFuZCBjb25lIGdhaW4uCisgICAgZG91YmxlIHRvdGFsR2FpbiA9IGRp
c3RhbmNlQ29uZUdhaW4oKTsKKworICAgIC8vIFNuYXAgdG8gZGVzaXJlZCBnYWluIGF0IHRoZSBi
ZWdpbm5pbmcuCisgICAgaWYgKG1fbGFzdEdhaW4gPT0gLTEuMCkKKyAgICAgICAgbV9sYXN0R2Fp
biA9IHRvdGFsR2FpbjsKKworICAgIC8vIEFwcGx5IGdhaW4gaW4tcGxhY2Ugd2l0aCBkZS16aXBw
ZXJpbmcuCisgICAgZGVzdGluYXRpb24tPmNvcHlXaXRoR2FpbkZyb20oKmRlc3RpbmF0aW9uLCAm
bV9sYXN0R2FpbiwgdG90YWxHYWluKTsKK30KKwordm9pZCBXZWJLaXRBdWRpb1Bhbm5lck5vZGU6
OnJlc2V0KCkKK3sKKyAgICBtX2xhc3RHYWluID0gLTEuMDsgLy8gZm9yY2UgdG8gc25hcCB0byBp
bml0aWFsIGdhaW4KKyAgICBpZiAobV9wYW5uZXIuZ2V0KCkpCisgICAgICAgIG1fcGFubmVyLT5y
ZXNldCgpOworfQorCit2b2lkIFdlYktpdEF1ZGlvUGFubmVyTm9kZTo6aW5pdGlhbGl6ZSgpCit7
CisgICAgaWYgKGlzSW5pdGlhbGl6ZWQoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9wYW5u
ZXIgPSBQYW5uZXI6OmNyZWF0ZShtX3Bhbm5pbmdNb2RlbCwgc2FtcGxlUmF0ZSgpLCBtX2hydGZE
YXRhYmFzZUxvYWRlci5nZXQoKSk7CisKKyAgICBBdWRpb05vZGU6OmluaXRpYWxpemUoKTsKK30K
Kwordm9pZCBXZWJLaXRBdWRpb1Bhbm5lck5vZGU6OnVuaW5pdGlhbGl6ZSgpCit7CisgICAgaWYg
KCFpc0luaXRpYWxpemVkKCkpCisgICAgICAgIHJldHVybjsKKworICAgIG1fcGFubmVyID0gbnVs
bHB0cjsKKyAgICBBdWRpb05vZGU6OnVuaW5pdGlhbGl6ZSgpOworfQorCitBdWRpb0xpc3RlbmVy
KiBXZWJLaXRBdWRpb1Bhbm5lck5vZGU6Omxpc3RlbmVyKCkKK3sKKyAgICByZXR1cm4gY29udGV4
dCgpLmxpc3RlbmVyKCk7Cit9CisKK3ZvaWQgV2ViS2l0QXVkaW9QYW5uZXJOb2RlOjpzZXRQYW5u
aW5nTW9kZWwoUGFubmluZ01vZGVsVHlwZSBtb2RlbCkKK3sKKyAgICBpZiAoIW1fcGFubmVyLmdl
dCgpIHx8IG1vZGVsICE9IG1fcGFubmluZ01vZGVsKSB7CisgICAgICAgIC8vIFRoaXMgc3luY2hy
b25pemVzIHdpdGggcHJvY2VzcygpLgorICAgICAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG1f
cGFubmVyTXV0ZXgpOworCisgICAgICAgIG1fcGFubmVyID0gUGFubmVyOjpjcmVhdGUobW9kZWws
IHNhbXBsZVJhdGUoKSwgbV9ocnRmRGF0YWJhc2VMb2FkZXIuZ2V0KCkpOworICAgICAgICBtX3Bh
bm5pbmdNb2RlbCA9IG1vZGVsOworICAgIH0KK30KKworRGlzdGFuY2VNb2RlbFR5cGUgV2ViS2l0
QXVkaW9QYW5uZXJOb2RlOjpkaXN0YW5jZU1vZGVsKCkgY29uc3QKK3sKKyAgICByZXR1cm4gY29u
c3RfY2FzdDxQYW5uZXJOb2RlKj4odGhpcyktPm1fZGlzdGFuY2VFZmZlY3QubW9kZWwoKTsKK30K
Kwordm9pZCBXZWJLaXRBdWRpb1Bhbm5lck5vZGU6OnNldERpc3RhbmNlTW9kZWwoRGlzdGFuY2VN
b2RlbFR5cGUgbW9kZWwpCit7CisgICAgbV9kaXN0YW5jZUVmZmVjdC5zZXRNb2RlbChtb2RlbCwg
dHJ1ZSk7Cit9CisKK3ZvaWQgV2ViS2l0QXVkaW9QYW5uZXJOb2RlOjpnZXRBemltdXRoRWxldmF0
aW9uKGRvdWJsZSogb3V0QXppbXV0aCwgZG91YmxlKiBvdXRFbGV2YXRpb24pCit7CisgICAgLy8g
RklYTUU6IHdlIHNob3VsZCBjYWNoZSBhemltdXRoIGFuZCBlbGV2YXRpb24gKGlmIHBvc3NpYmxl
KSwgc28gd2Ugb25seSByZS1jYWxjdWxhdGUgaWYgYSBjaGFuZ2UgaGFzIGJlZW4gbWFkZS4KKwor
ICAgIGRvdWJsZSBhemltdXRoID0gMC4wOworCisgICAgLy8gQ2FsY3VsYXRlIHRoZSBzb3VyY2Ut
bGlzdGVuZXIgdmVjdG9yCisgICAgRmxvYXRQb2ludDNEIGxpc3RlbmVyUG9zaXRpb24gPSBsaXN0
ZW5lcigpLT5wb3NpdGlvbigpOworICAgIEZsb2F0UG9pbnQzRCBzb3VyY2VMaXN0ZW5lciA9IHBv
c2l0aW9uKCkgLSBsaXN0ZW5lclBvc2l0aW9uOworCisgICAgaWYgKHNvdXJjZUxpc3RlbmVyLmlz
WmVybygpKSB7CisgICAgICAgIC8vIGRlZ2VuZXJhdGUgY2FzZSBpZiBzb3VyY2UgYW5kIGxpc3Rl
bmVyIGFyZSBhdCB0aGUgc2FtZSBwb2ludAorICAgICAgICAqb3V0QXppbXV0aCA9IDAuMDsKKyAg
ICAgICAgKm91dEVsZXZhdGlvbiA9IDAuMDsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAg
IHNvdXJjZUxpc3RlbmVyLm5vcm1hbGl6ZSgpOworCisgICAgLy8gQWxpZ24gYXhlcworICAgIEZs
b2F0UG9pbnQzRCBsaXN0ZW5lckZyb250ID0gbGlzdGVuZXIoKS0+b3JpZW50YXRpb24oKTsKKyAg
ICBGbG9hdFBvaW50M0QgbGlzdGVuZXJVcCA9IGxpc3RlbmVyKCktPnVwVmVjdG9yKCk7CisgICAg
RmxvYXRQb2ludDNEIGxpc3RlbmVyUmlnaHQgPSBsaXN0ZW5lckZyb250LmNyb3NzKGxpc3RlbmVy
VXApOworICAgIGxpc3RlbmVyUmlnaHQubm9ybWFsaXplKCk7CisKKyAgICBGbG9hdFBvaW50M0Qg
bGlzdGVuZXJGcm9udE5vcm0gPSBsaXN0ZW5lckZyb250OworICAgIGxpc3RlbmVyRnJvbnROb3Jt
Lm5vcm1hbGl6ZSgpOworCisgICAgRmxvYXRQb2ludDNEIHVwID0gbGlzdGVuZXJSaWdodC5jcm9z
cyhsaXN0ZW5lckZyb250Tm9ybSk7CisKKyAgICBmbG9hdCB1cFByb2plY3Rpb24gPSBzb3VyY2VM
aXN0ZW5lci5kb3QodXApOworCisgICAgRmxvYXRQb2ludDNEIHByb2plY3RlZFNvdXJjZSA9IHNv
dXJjZUxpc3RlbmVyIC0gdXBQcm9qZWN0aW9uICogdXA7CisgICAgcHJvamVjdGVkU291cmNlLm5v
cm1hbGl6ZSgpOworCisgICAgYXppbXV0aCA9IDE4MC4wICogYWNvcyhwcm9qZWN0ZWRTb3VyY2Uu
ZG90KGxpc3RlbmVyUmlnaHQpKSAvIHBpRG91YmxlOworICAgIGZpeE5BTnMoYXppbXV0aCk7IC8v
IGF2b2lkIGlsbGVnYWwgdmFsdWVzCisKKyAgICAvLyBTb3VyY2UgIGluIGZyb250IG9yIGJlaGlu
ZCB0aGUgbGlzdGVuZXIKKyAgICBkb3VibGUgZnJvbnRCYWNrID0gcHJvamVjdGVkU291cmNlLmRv
dChsaXN0ZW5lckZyb250Tm9ybSk7CisgICAgaWYgKGZyb250QmFjayA8IDAuMCkKKyAgICAgICAg
YXppbXV0aCA9IDM2MC4wIC0gYXppbXV0aDsKKworICAgIC8vIE1ha2UgYXppbXV0aCByZWxhdGl2
ZSB0byAiZnJvbnQiIGFuZCBub3QgInJpZ2h0IiBsaXN0ZW5lciB2ZWN0b3IKKyAgICBpZiAoKGF6
aW11dGggPj0gMC4wKSAmJiAoYXppbXV0aCA8PSAyNzAuMCkpCisgICAgICAgIGF6aW11dGggPSA5
MC4wIC0gYXppbXV0aDsKKyAgICBlbHNlCisgICAgICAgIGF6aW11dGggPSA0NTAuMCAtIGF6aW11
dGg7CisKKyAgICAvLyBFbGV2YXRpb24KKyAgICBkb3VibGUgZWxldmF0aW9uID0gOTAuMCAtIDE4
MC4wICogYWNvcyhzb3VyY2VMaXN0ZW5lci5kb3QodXApKSAvIHBpRG91YmxlOworICAgIGZpeE5B
TnMoZWxldmF0aW9uKTsgLy8gYXZvaWQgaWxsZWdhbCB2YWx1ZXMKKworICAgIGlmIChlbGV2YXRp
b24gPiA5MC4wKQorICAgICAgICBlbGV2YXRpb24gPSAxODAuMCAtIGVsZXZhdGlvbjsKKyAgICBl
bHNlIGlmIChlbGV2YXRpb24gPCAtOTAuMCkKKyAgICAgICAgZWxldmF0aW9uID0gLTE4MC4wIC0g
ZWxldmF0aW9uOworCisgICAgaWYgKG91dEF6aW11dGgpCisgICAgICAgICpvdXRBemltdXRoID0g
YXppbXV0aDsKKyAgICBpZiAob3V0RWxldmF0aW9uKQorICAgICAgICAqb3V0RWxldmF0aW9uID0g
ZWxldmF0aW9uOworfQorCitmbG9hdCBXZWJLaXRBdWRpb1Bhbm5lck5vZGU6OmRvcHBsZXJSYXRl
KCkKK3sKKyAgICBkb3VibGUgZG9wcGxlclNoaWZ0ID0gMS4wOworCisgICAgLy8gRklYTUU6IG9w
dGltaXplIGZvciBjYXNlIHdoZW4gbmVpdGhlciBzb3VyY2Ugbm9yIGxpc3RlbmVyIGhhcyBjaGFu
Z2VkLi4uCisgICAgZG91YmxlIGRvcHBsZXJGYWN0b3IgPSBsaXN0ZW5lcigpLT5kb3BwbGVyRmFj
dG9yKCk7CisKKyAgICBpZiAoZG9wcGxlckZhY3RvciA+IDAuMCkgeworICAgICAgICBkb3VibGUg
c3BlZWRPZlNvdW5kID0gbGlzdGVuZXIoKS0+c3BlZWRPZlNvdW5kKCk7CisKKyAgICAgICAgY29u
c3QgRmxvYXRQb2ludDNEICZzb3VyY2VWZWxvY2l0eSA9IG1fdmVsb2NpdHk7CisgICAgICAgIGNv
bnN0IEZsb2F0UG9pbnQzRCAmbGlzdGVuZXJWZWxvY2l0eSA9IGxpc3RlbmVyKCktPnZlbG9jaXR5
KCk7CisKKyAgICAgICAgLy8gRG9uJ3QgYm90aGVyIGlmIGJvdGggc291cmNlIGFuZCBsaXN0ZW5l
ciBoYXZlIG5vIHZlbG9jaXR5CisgICAgICAgIGJvb2wgc291cmNlSGFzVmVsb2NpdHkgPSAhc291
cmNlVmVsb2NpdHkuaXNaZXJvKCk7CisgICAgICAgIGJvb2wgbGlzdGVuZXJIYXNWZWxvY2l0eSA9
ICFsaXN0ZW5lclZlbG9jaXR5LmlzWmVybygpOworCisgICAgICAgIGlmIChzb3VyY2VIYXNWZWxv
Y2l0eSB8fCBsaXN0ZW5lckhhc1ZlbG9jaXR5KSB7CisgICAgICAgICAgICAvLyBDYWxjdWxhdGUg
dGhlIHNvdXJjZSB0byBsaXN0ZW5lciB2ZWN0b3IKKyAgICAgICAgICAgIEZsb2F0UG9pbnQzRCBs
aXN0ZW5lclBvc2l0aW9uID0gbGlzdGVuZXIoKS0+cG9zaXRpb24oKTsKKyAgICAgICAgICAgIEZs
b2F0UG9pbnQzRCBzb3VyY2VUb0xpc3RlbmVyID0gcG9zaXRpb24oKSAtIGxpc3RlbmVyUG9zaXRp
b247CisKKyAgICAgICAgICAgIGRvdWJsZSBzb3VyY2VMaXN0ZW5lck1hZ25pdHVkZSA9IHNvdXJj
ZVRvTGlzdGVuZXIubGVuZ3RoKCk7CisKKyAgICAgICAgICAgIGRvdWJsZSBsaXN0ZW5lclByb2pl
Y3Rpb24gPSBzb3VyY2VUb0xpc3RlbmVyLmRvdChsaXN0ZW5lclZlbG9jaXR5KSAvIHNvdXJjZUxp
c3RlbmVyTWFnbml0dWRlOworICAgICAgICAgICAgZG91YmxlIHNvdXJjZVByb2plY3Rpb24gPSBz
b3VyY2VUb0xpc3RlbmVyLmRvdChzb3VyY2VWZWxvY2l0eSkgLyBzb3VyY2VMaXN0ZW5lck1hZ25p
dHVkZTsKKworICAgICAgICAgICAgbGlzdGVuZXJQcm9qZWN0aW9uID0gLWxpc3RlbmVyUHJvamVj
dGlvbjsKKyAgICAgICAgICAgIHNvdXJjZVByb2plY3Rpb24gPSAtc291cmNlUHJvamVjdGlvbjsK
KworICAgICAgICAgICAgZG91YmxlIHNjYWxlZFNwZWVkT2ZTb3VuZCA9IHNwZWVkT2ZTb3VuZCAv
IGRvcHBsZXJGYWN0b3I7CisgICAgICAgICAgICBsaXN0ZW5lclByb2plY3Rpb24gPSBzdGQ6Om1p
bihsaXN0ZW5lclByb2plY3Rpb24sIHNjYWxlZFNwZWVkT2ZTb3VuZCk7CisgICAgICAgICAgICBz
b3VyY2VQcm9qZWN0aW9uID0gc3RkOjptaW4oc291cmNlUHJvamVjdGlvbiwgc2NhbGVkU3BlZWRP
ZlNvdW5kKTsKKworICAgICAgICAgICAgZG9wcGxlclNoaWZ0ID0gKChzcGVlZE9mU291bmQgLSBk
b3BwbGVyRmFjdG9yICogbGlzdGVuZXJQcm9qZWN0aW9uKSAvIChzcGVlZE9mU291bmQgLSBkb3Bw
bGVyRmFjdG9yICogc291cmNlUHJvamVjdGlvbikpOworICAgICAgICAgICAgZml4TkFOcyhkb3Bw
bGVyU2hpZnQpOyAvLyBhdm9pZCBpbGxlZ2FsIHZhbHVlcworCisgICAgICAgICAgICAvLyBMaW1p
dCB0aGUgcGl0Y2ggc2hpZnRpbmcgdG8gNCBvY3RhdmVzIHVwIGFuZCAzIG9jdGF2ZXMgZG93bi4K
KyAgICAgICAgICAgIGlmIChkb3BwbGVyU2hpZnQgPiAxNi4wKQorICAgICAgICAgICAgICAgIGRv
cHBsZXJTaGlmdCA9IDE2LjA7CisgICAgICAgICAgICBlbHNlIGlmIChkb3BwbGVyU2hpZnQgPCAw
LjEyNSkKKyAgICAgICAgICAgICAgICBkb3BwbGVyU2hpZnQgPSAwLjEyNTsKKyAgICAgICAgfQor
ICAgIH0KKworICAgIHJldHVybiBzdGF0aWNfY2FzdDxmbG9hdD4oZG9wcGxlclNoaWZ0KTsKK30K
KworZmxvYXQgV2ViS2l0QXVkaW9QYW5uZXJOb2RlOjpkaXN0YW5jZUNvbmVHYWluKCkKK3sKKyAg
ICBGbG9hdFBvaW50M0QgbGlzdGVuZXJQb3NpdGlvbiA9IGxpc3RlbmVyKCktPnBvc2l0aW9uKCk7
CisgICAgRmxvYXRQb2ludDNEIHNvdXJjZVBvc2l0aW9uID0gcG9zaXRpb24oKTsKKworICAgIGRv
dWJsZSBsaXN0ZW5lckRpc3RhbmNlID0gc291cmNlUG9zaXRpb24uZGlzdGFuY2VUbyhsaXN0ZW5l
clBvc2l0aW9uKTsKKyAgICBkb3VibGUgZGlzdGFuY2VHYWluID0gbV9kaXN0YW5jZUVmZmVjdC5n
YWluKGxpc3RlbmVyRGlzdGFuY2UpOworCisgICAgbV9kaXN0YW5jZUdhaW4tPnNldFZhbHVlKHN0
YXRpY19jYXN0PGZsb2F0PihkaXN0YW5jZUdhaW4pKTsKKworICAgIC8vIEZJWE1FOiBjb3VsZCBv
cHRpbWl6ZSBieSBjYWNoaW5nIGNvbmVHYWluCisgICAgZG91YmxlIGNvbmVHYWluID0gbV9jb25l
RWZmZWN0LmdhaW4oc291cmNlUG9zaXRpb24sIG1fb3JpZW50YXRpb24sIGxpc3RlbmVyUG9zaXRp
b24pOworCisgICAgbV9jb25lR2Fpbi0+c2V0VmFsdWUoc3RhdGljX2Nhc3Q8ZmxvYXQ+KGNvbmVH
YWluKSk7CisKKyAgICByZXR1cm4gZmxvYXQoZGlzdGFuY2VHYWluICogY29uZUdhaW4pOworfQor
Cit2b2lkIFdlYktpdEF1ZGlvUGFubmVyTm9kZTo6bm90aWZ5QXVkaW9Tb3VyY2VzQ29ubmVjdGVk
VG9Ob2RlKEF1ZGlvTm9kZSogbm9kZSwgSGFzaFNldDxBdWRpb05vZGUqPiYgdmlzaXRlZE5vZGVz
KQoreworICAgIEFTU0VSVChub2RlKTsKKyAgICBpZiAoIW5vZGUpCisgICAgICAgIHJldHVybjsK
KworICAgIC8vIEZpcnN0IGNoZWNrIGlmIHRoaXMgbm9kZSBpcyBhbiBBdWRpb0J1ZmZlclNvdXJj
ZU5vZGUuIElmIHNvLCBsZXQgaXQga25vdyBhYm91dCB1cyBzbyB0aGF0IGRvcHBsZXIgc2hpZnQg
cGl0Y2ggY2FuIGJlIHRha2VuIGludG8gYWNjb3VudC4KKyAgICBpZiAobm9kZS0+bm9kZVR5cGUo
KSA9PSBOb2RlVHlwZUF1ZGlvQnVmZmVyU291cmNlKSB7CisgICAgICAgIEF1ZGlvQnVmZmVyU291
cmNlTm9kZSogYnVmZmVyU291cmNlTm9kZSA9IHJlaW50ZXJwcmV0X2Nhc3Q8QXVkaW9CdWZmZXJT
b3VyY2VOb2RlKj4obm9kZSk7CisgICAgICAgIGJ1ZmZlclNvdXJjZU5vZGUtPnNldFBhbm5lck5v
ZGUodGhpcyk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgLy8gR28gdGhyb3VnaCBhbGwgaW5wdXRz
IHRvIHRoaXMgbm9kZS4KKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG5vZGUtPm51
bWJlck9mSW5wdXRzKCk7ICsraSkgeworICAgICAgICAgICAgQXVkaW9Ob2RlSW5wdXQqIGlucHV0
ID0gbm9kZS0+aW5wdXQoaSk7CisKKyAgICAgICAgICAgIC8vIEZvciBlYWNoIGlucHV0LCBnbyB0
aHJvdWdoIGFsbCBvZiBpdHMgY29ubmVjdGlvbnMsIGxvb2tpbmcgZm9yIEF1ZGlvQnVmZmVyU291
cmNlTm9kZXMuCisgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGogPSAwOyBqIDwgaW5wdXQtPm51
bWJlck9mUmVuZGVyaW5nQ29ubmVjdGlvbnMoKTsgKytqKSB7CisgICAgICAgICAgICAgICAgQXVk
aW9Ob2RlT3V0cHV0KiBjb25uZWN0ZWRPdXRwdXQgPSBpbnB1dC0+cmVuZGVyaW5nT3V0cHV0KGop
OworICAgICAgICAgICAgICAgIEF1ZGlvTm9kZSogY29ubmVjdGVkTm9kZSA9IGNvbm5lY3RlZE91
dHB1dC0+bm9kZSgpOworICAgICAgICAgICAgICAgIGlmICh2aXNpdGVkTm9kZXMuY29udGFpbnMo
Y29ubmVjdGVkTm9kZSkpCisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAg
ICAgICAgICAgdmlzaXRlZE5vZGVzLmFkZChjb25uZWN0ZWROb2RlKTsKKyAgICAgICAgICAgICAg
ICBub3RpZnlBdWRpb1NvdXJjZXNDb25uZWN0ZWRUb05vZGUoY29ubmVjdGVkTm9kZSwgdmlzaXRl
ZE5vZGVzKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KK30KKworfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKFdFQl9BVURJTykKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vV2ViS2l0QXVkaW9QYW5uZXJOb2RlLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1dlYktpdEF1ZGlvUGFubmVyTm9kZS5o
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi5hMTI2MzAxZDYzMgotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vV2ViS2l0QXVk
aW9QYW5uZXJOb2RlLmgKQEAgLTAsMCArMSwxNTUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTAsIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
ICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBB
UkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTgorICogQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTCisgKiBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9u
Y2UKKworI2lmIEVOQUJMRShXRUJfQVVESU8pCisKKyNpbmNsdWRlICJBdWRpb0xpc3RlbmVyLmgi
CisjaW5jbHVkZSAiQXVkaW9Ob2RlLmgiCisjaW5jbHVkZSAiQXVkaW9QYXJhbS5oIgorI2luY2x1
ZGUgIkNvbmUuaCIKKyNpbmNsdWRlICJEaXN0YW5jZS5oIgorI2luY2x1ZGUgIkZsb2F0UG9pbnQz
RC5oIgorI2luY2x1ZGUgIlBhbm5lci5oIgorI2luY2x1ZGUgPG1lbW9yeT4KKyNpbmNsdWRlIDx3
dGYvSGFzaFNldC5oPgorI2luY2x1ZGUgPHd0Zi9Mb2NrLmg+CisKK25hbWVzcGFjZSBXZWJDb3Jl
IHsKKworY2xhc3MgSFJURkRhdGFiYXNlTG9hZGVyOworCisvLyBQYW5uZXJOb2RlIGlzIGFuIEF1
ZGlvTm9kZSB3aXRoIG9uZSBpbnB1dCBhbmQgb25lIG91dHB1dC4KKy8vIEl0IHBvc2l0aW9ucyBh
IHNvdW5kIGluIDNEIHNwYWNlLCB3aXRoIHRoZSBleGFjdCBlZmZlY3QgZGVwZW5kZW50IG9uIHRo
ZSBwYW5uaW5nIG1vZGVsLgorLy8gSXQgaGFzIGEgcG9zaXRpb24gYW5kIGFuIG9yaWVudGF0aW9u
IGluIDNEIHNwYWNlIHdoaWNoIGlzIHJlbGF0aXZlIHRvIHRoZSBwb3NpdGlvbiBhbmQgb3JpZW50
YXRpb24gb2YgdGhlIGNvbnRleHQncyBBdWRpb0xpc3RlbmVyLgorLy8gQSBkaXN0YW5jZSBlZmZl
Y3Qgd2lsbCBhdHRlbnVhdGUgdGhlIGdhaW4gYXMgdGhlIHBvc2l0aW9uIG1vdmVzIGF3YXkgZnJv
bSB0aGUgbGlzdGVuZXIuCisvLyBBIGNvbmUgZWZmZWN0IHdpbGwgYXR0ZW51YXRlIHRoZSBnYWlu
IGFzIHRoZSBvcmllbnRhdGlvbiBtb3ZlcyBhd2F5IGZyb20gdGhlIGxpc3RlbmVyLgorLy8gQWxs
IG9mIHRoZXNlIGVmZmVjdHMgZm9sbG93IHRoZSBPcGVuQUwgc3BlY2lmaWNhdGlvbiB2ZXJ5IGNs
b3NlbHkuCisKK2NsYXNzIFdlYktpdEF1ZGlvUGFubmVyTm9kZSBmaW5hbCA6IHB1YmxpYyBBdWRp
b05vZGUgeworICAgIFdURl9NQUtFX0lTT19BTExPQ0FURUQoV2ViS2l0QXVkaW9QYW5uZXJOb2Rl
KTsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUmVmPFdlYktpdEF1ZGlvUGFubmVyTm9kZT4gY3JlYXRl
KFdlYktpdEF1ZGlvQ29udGV4dCYgY29udGV4dCwgZmxvYXQgc2FtcGxlUmF0ZSkKKyAgICB7Cisg
ICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFdlYktpdEF1ZGlvUGFubmVyTm9kZShjb250ZXh0
LCBzYW1wbGVSYXRlKSk7CisgICAgfQorCisgICAgdmlydHVhbCB+V2ViS2l0QXVkaW9QYW5uZXJO
b2RlKCk7CisKKyAgICAvLyBBdWRpb05vZGUKKyAgICB2b2lkIHByb2Nlc3Moc2l6ZV90IGZyYW1l
c1RvUHJvY2Vzcykgb3ZlcnJpZGU7CisgICAgdm9pZCBwdWxsSW5wdXRzKHNpemVfdCBmcmFtZXNU
b1Byb2Nlc3MpIG92ZXJyaWRlOworICAgIHZvaWQgcmVzZXQoKSBvdmVycmlkZTsKKyAgICB2b2lk
IGluaXRpYWxpemUoKSBvdmVycmlkZTsKKyAgICB2b2lkIHVuaW5pdGlhbGl6ZSgpIG92ZXJyaWRl
OworCisgICAgLy8gTGlzdGVuZXIKKyAgICBBdWRpb0xpc3RlbmVyKiBsaXN0ZW5lcigpOworCisg
ICAgLy8gUGFubmluZyBtb2RlbAorICAgIFBhbm5pbmdNb2RlbFR5cGUgcGFubmluZ01vZGVsKCkg
Y29uc3QgeyByZXR1cm4gbV9wYW5uaW5nTW9kZWw7IH0KKyAgICB2b2lkIHNldFBhbm5pbmdNb2Rl
bChQYW5uaW5nTW9kZWxUeXBlKTsKKworICAgIC8vIFBvc2l0aW9uCisgICAgRmxvYXRQb2ludDNE
IHBvc2l0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9wb3NpdGlvbjsgfQorICAgIHZvaWQgc2V0UG9z
aXRpb24oZmxvYXQgeCwgZmxvYXQgeSwgZmxvYXQgeikgeyBtX3Bvc2l0aW9uID0gRmxvYXRQb2lu
dDNEKHgsIHksIHopOyB9CisKKyAgICAvLyBPcmllbnRhdGlvbgorICAgIEZsb2F0UG9pbnQzRCBv
cmllbnRhdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fb3JpZW50YXRpb247IH0KKyAgICB2b2lkIHNl
dE9yaWVudGF0aW9uKGZsb2F0IHgsIGZsb2F0IHksIGZsb2F0IHopIHsgbV9vcmllbnRhdGlvbiA9
IEZsb2F0UG9pbnQzRCh4LCB5LCB6KTsgfQorCisgICAgLy8gVmVsb2NpdHkKKyAgICBGbG9hdFBv
aW50M0QgdmVsb2NpdHkoKSBjb25zdCB7IHJldHVybiBtX3ZlbG9jaXR5OyB9CisgICAgdm9pZCBz
ZXRWZWxvY2l0eShmbG9hdCB4LCBmbG9hdCB5LCBmbG9hdCB6KSB7IG1fdmVsb2NpdHkgPSBGbG9h
dFBvaW50M0QoeCwgeSwgeik7IH0KKworICAgIC8vIERpc3RhbmNlIHBhcmFtZXRlcnMKKyAgICBE
aXN0YW5jZU1vZGVsVHlwZSBkaXN0YW5jZU1vZGVsKCkgY29uc3Q7CisgICAgdm9pZCBzZXREaXN0
YW5jZU1vZGVsKERpc3RhbmNlTW9kZWxUeXBlKTsKKworICAgIGRvdWJsZSByZWZEaXN0YW5jZSgp
IHsgcmV0dXJuIG1fZGlzdGFuY2VFZmZlY3QucmVmRGlzdGFuY2UoKTsgfQorICAgIHZvaWQgc2V0
UmVmRGlzdGFuY2UoZG91YmxlIHJlZkRpc3RhbmNlKSB7IG1fZGlzdGFuY2VFZmZlY3Quc2V0UmVm
RGlzdGFuY2UocmVmRGlzdGFuY2UpOyB9CisKKyAgICBkb3VibGUgbWF4RGlzdGFuY2UoKSB7IHJl
dHVybiBtX2Rpc3RhbmNlRWZmZWN0Lm1heERpc3RhbmNlKCk7IH0KKyAgICB2b2lkIHNldE1heERp
c3RhbmNlKGRvdWJsZSBtYXhEaXN0YW5jZSkgeyBtX2Rpc3RhbmNlRWZmZWN0LnNldE1heERpc3Rh
bmNlKG1heERpc3RhbmNlKTsgfQorCisgICAgZG91YmxlIHJvbGxvZmZGYWN0b3IoKSB7IHJldHVy
biBtX2Rpc3RhbmNlRWZmZWN0LnJvbGxvZmZGYWN0b3IoKTsgfQorICAgIHZvaWQgc2V0Um9sbG9m
ZkZhY3Rvcihkb3VibGUgcm9sbG9mZkZhY3RvcikgeyBtX2Rpc3RhbmNlRWZmZWN0LnNldFJvbGxv
ZmZGYWN0b3Iocm9sbG9mZkZhY3Rvcik7IH0KKworICAgIC8vIFNvdW5kIGNvbmVzIC0gYW5nbGVz
IGluIGRlZ3JlZXMKKyAgICBkb3VibGUgY29uZUlubmVyQW5nbGUoKSBjb25zdCB7IHJldHVybiBt
X2NvbmVFZmZlY3QuaW5uZXJBbmdsZSgpOyB9CisgICAgdm9pZCBzZXRDb25lSW5uZXJBbmdsZShk
b3VibGUgYW5nbGUpIHsgbV9jb25lRWZmZWN0LnNldElubmVyQW5nbGUoYW5nbGUpOyB9CisKKyAg
ICBkb3VibGUgY29uZU91dGVyQW5nbGUoKSBjb25zdCB7IHJldHVybiBtX2NvbmVFZmZlY3Qub3V0
ZXJBbmdsZSgpOyB9CisgICAgdm9pZCBzZXRDb25lT3V0ZXJBbmdsZShkb3VibGUgYW5nbGUpIHsg
bV9jb25lRWZmZWN0LnNldE91dGVyQW5nbGUoYW5nbGUpOyB9CisKKyAgICBkb3VibGUgY29uZU91
dGVyR2FpbigpIGNvbnN0IHsgcmV0dXJuIG1fY29uZUVmZmVjdC5vdXRlckdhaW4oKTsgfQorICAg
IHZvaWQgc2V0Q29uZU91dGVyR2Fpbihkb3VibGUgYW5nbGUpIHsgbV9jb25lRWZmZWN0LnNldE91
dGVyR2FpbihhbmdsZSk7IH0KKworICAgIHZvaWQgZ2V0QXppbXV0aEVsZXZhdGlvbihkb3VibGUq
IG91dEF6aW11dGgsIGRvdWJsZSogb3V0RWxldmF0aW9uKTsKKyAgICBmbG9hdCBkb3BwbGVyUmF0
ZSgpOworCisgICAgLy8gQWNjZXNzb3JzIGZvciBkeW5hbWljYWxseSBjYWxjdWxhdGVkIGdhaW4g
dmFsdWVzLgorICAgIEF1ZGlvUGFyYW0qIGRpc3RhbmNlR2FpbigpIHsgcmV0dXJuIG1fZGlzdGFu
Y2VHYWluLmdldCgpOyB9CisgICAgQXVkaW9QYXJhbSogY29uZUdhaW4oKSB7IHJldHVybiBtX2Nv
bmVHYWluLmdldCgpOyB9CisKKyAgICBkb3VibGUgdGFpbFRpbWUoKSBjb25zdCBvdmVycmlkZSB7
IHJldHVybiBtX3Bhbm5lciA/IG1fcGFubmVyLT50YWlsVGltZSgpIDogMDsgfQorICAgIGRvdWJs
ZSBsYXRlbmN5VGltZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fcGFubmVyID8gbV9wYW5u
ZXItPmxhdGVuY3lUaW1lKCkgOiAwOyB9CisKK3ByaXZhdGU6CisgICAgV2ViS2l0QXVkaW9QYW5u
ZXJOb2RlKFdlYktpdEF1ZGlvQ29udGV4dCYsIGZsb2F0IHNhbXBsZVJhdGUpOworCisgICAgLy8g
UmV0dXJucyB0aGUgY29tYmluZWQgZGlzdGFuY2UgYW5kIGNvbmUgZ2FpbiBhdHRlbnVhdGlvbi4K
KyAgICBmbG9hdCBkaXN0YW5jZUNvbmVHYWluKCk7CisKKyAgICAvLyBOb3RpZmllcyBhbnkgQXVk
aW9CdWZmZXJTb3VyY2VOb2RlcyBjb25uZWN0ZWQgdG8gdXMgZWl0aGVyIGRpcmVjdGx5IG9yIGlu
ZGlyZWN0bHkgYWJvdXQgb3VyIGV4aXN0ZW5jZS4KKyAgICAvLyBUaGlzIGlzIGluIG9yZGVyIHRv
IGhhbmRsZSB0aGUgcGl0Y2ggY2hhbmdlIG5lY2Vzc2FyeSBmb3IgdGhlIGRvcHBsZXIgc2hpZnQu
CisgICAgdm9pZCBub3RpZnlBdWRpb1NvdXJjZXNDb25uZWN0ZWRUb05vZGUoQXVkaW9Ob2RlKiwg
SGFzaFNldDxBdWRpb05vZGUqPiYgdmlzaXRlZE5vZGVzKTsKKworICAgIHN0ZDo6dW5pcXVlX3B0
cjxQYW5uZXI+IG1fcGFubmVyOworICAgIFBhbm5pbmdNb2RlbFR5cGUgbV9wYW5uaW5nTW9kZWw7
CisKKyAgICBGbG9hdFBvaW50M0QgbV9wb3NpdGlvbjsKKyAgICBGbG9hdFBvaW50M0QgbV9vcmll
bnRhdGlvbjsKKyAgICBGbG9hdFBvaW50M0QgbV92ZWxvY2l0eTsKKworICAgIC8vIEdhaW4KKyAg
ICBSZWZQdHI8QXVkaW9QYXJhbT4gbV9kaXN0YW5jZUdhaW47CisgICAgUmVmUHRyPEF1ZGlvUGFy
YW0+IG1fY29uZUdhaW47CisgICAgRGlzdGFuY2VFZmZlY3QgbV9kaXN0YW5jZUVmZmVjdDsKKyAg
ICBDb25lRWZmZWN0IG1fY29uZUVmZmVjdDsKKyAgICBmbG9hdCBtX2xhc3RHYWluOworCisgICAg
Ly8gSFJURiBEYXRhYmFzZSBsb2FkZXIKKyAgICBSZWZQdHI8SFJURkRhdGFiYXNlTG9hZGVyPiBt
X2hydGZEYXRhYmFzZUxvYWRlcjsKKworICAgIHVuc2lnbmVkIG1fY29ubmVjdGlvbkNvdW50Owor
CisgICAgLy8gU3luY2hyb25pemUgcHJvY2VzcygpIGFuZCBzZXRQYW5uaW5nTW9kZWwoKSB3aGlj
aCBjYW4gY2hhbmdlIHRoZSBwYW5uZXIuCisgICAgbXV0YWJsZSBMb2NrIG1fcGFubmVyTXV0ZXg7
Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9XZWJLaXRBdWRpb1Bhbm5lck5vZGUuaWRsIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9XZWJLaXRBdWRpb1Bhbm5lck5vZGUuaWRs
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi5jNGU5YjkwYjliMwotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vV2ViS2l0QXVk
aW9QYW5uZXJOb2RlLmlkbApAQCAtMCwwICsxLDY2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDEwLCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0Ug
QVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04KKyAqIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUworICogU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworWworICAgIENv
bmRpdGlvbmFsPVdFQl9BVURJTywKKyAgICBJbXBsZW1lbnRlZEFzPVBhbm5pbmdNb2RlbFR5cGUK
K10gZW51bSBQYW5uaW5nTW9kZWxUeXBlIHsKKyAgICAiZXF1YWxwb3dlciIsCisgICAgIkhSVEYi
Cit9OworCitbCisgICAgQ29uZGl0aW9uYWw9V0VCX0FVRElPLAorICAgIEltcGxlbWVudGVkQXM9
RGlzdGFuY2VNb2RlbFR5cGUKK10gZW51bSBEaXN0YW5jZU1vZGVsVHlwZSB7CisgICAgImxpbmVh
ciIsCisgICAgImludmVyc2UiLAorICAgICJleHBvbmVudGlhbCIKK307CisKK1sKKyAgICBDb25k
aXRpb25hbD1XRUJfQVVESU8sCisgICAgSlNHZW5lcmF0ZVRvSlNPYmplY3QsCisgICAgSW50ZXJm
YWNlTmFtZT13ZWJraXRBdWRpb1Bhbm5lck5vZGUsCitdIGludGVyZmFjZSBXZWJLaXRBdWRpb1Bh
bm5lck5vZGUgOiBBdWRpb05vZGUgeworICAgIC8vIERlZmF1bHQgbW9kZWwgZm9yIHN0ZXJlbyBp
cyBIUlRGCisgICAgYXR0cmlidXRlIFBhbm5pbmdNb2RlbFR5cGUgcGFubmluZ01vZGVsOworCisg
ICAgLy8gVXNlcyBhIDNEIGNhcnRlc2lhbiBjb29yZGluYXRlIHN5c3RlbQorICAgIHZvaWQgc2V0
UG9zaXRpb24odW5yZXN0cmljdGVkIGZsb2F0IHgsIHVucmVzdHJpY3RlZCBmbG9hdCB5LCB1bnJl
c3RyaWN0ZWQgZmxvYXQgeik7CisgICAgdm9pZCBzZXRPcmllbnRhdGlvbih1bnJlc3RyaWN0ZWQg
ZmxvYXQgeCwgdW5yZXN0cmljdGVkIGZsb2F0IHksIHVucmVzdHJpY3RlZCBmbG9hdCB6KTsKKyAg
ICB2b2lkIHNldFZlbG9jaXR5KHVucmVzdHJpY3RlZCBmbG9hdCB4LCB1bnJlc3RyaWN0ZWQgZmxv
YXQgeSwgdW5yZXN0cmljdGVkIGZsb2F0IHopOworCisgICAgLy8gRGlzdGFuY2UgbW9kZWwKKyAg
ICBhdHRyaWJ1dGUgRGlzdGFuY2VNb2RlbFR5cGUgZGlzdGFuY2VNb2RlbDsKKworICAgIGF0dHJp
YnV0ZSB1bnJlc3RyaWN0ZWQgZG91YmxlIHJlZkRpc3RhbmNlOworICAgIGF0dHJpYnV0ZSB1bnJl
c3RyaWN0ZWQgZG91YmxlIG1heERpc3RhbmNlOworICAgIGF0dHJpYnV0ZSB1bnJlc3RyaWN0ZWQg
ZG91YmxlIHJvbGxvZmZGYWN0b3I7CisKKyAgICAvLyBEaXJlY3Rpb25hbCBzb3VuZCBjb25lCisg
ICAgYXR0cmlidXRlIHVucmVzdHJpY3RlZCBkb3VibGUgY29uZUlubmVyQW5nbGU7CisgICAgYXR0
cmlidXRlIHVucmVzdHJpY3RlZCBkb3VibGUgY29uZU91dGVyQW5nbGU7CisgICAgYXR0cmlidXRl
IHVucmVzdHJpY3RlZCBkb3VibGUgY29uZU91dGVyR2FpbjsKK307CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1dlYktpdE9mZmxpbmVBdWRpb0NvbnRleHQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9XZWJLaXRPZmZsaW5lQXVkaW9Db250
ZXh0LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uMjA0NjI1NTA4
NWYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1dl
YktpdE9mZmxpbmVBdWRpb0NvbnRleHQuY3BwCkBAIC0wLDAgKzEsNjIgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTIsIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiAgUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAq
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTgor
ICogQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTCisgKiBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpZiBFTkFCTEUoV0VCX0FVRElPKQorCisjaW5jbHVk
ZSAiV2ViS2l0T2ZmbGluZUF1ZGlvQ29udGV4dC5oIgorCisjaW5jbHVkZSAiQXVkaW9CdWZmZXIu
aCIKKyNpbmNsdWRlICJEb2N1bWVudC5oIgorI2luY2x1ZGUgPHd0Zi9Jc29NYWxsb2NJbmxpbmVz
Lmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworV1RGX01BS0VfSVNPX0FMTE9DQVRFRF9JTVBM
KFdlYktpdE9mZmxpbmVBdWRpb0NvbnRleHQpOworCitpbmxpbmUgV2ViS2l0T2ZmbGluZUF1ZGlv
Q29udGV4dDo6T2ZmbGluZUF1ZGlvQ29udGV4dChEb2N1bWVudCYgZG9jdW1lbnQsIEF1ZGlvQnVm
ZmVyKiByZW5kZXJUYXJnZXQpCisgICAgOiBXZWJLaXRBdWRpb0NvbnRleHQoZG9jdW1lbnQsIHJl
bmRlclRhcmdldCkKK3sKK30KKworRXhjZXB0aW9uT3I8UmVmPFdlYktpdE9mZmxpbmVBdWRpb0Nv
bnRleHQ+PiBXZWJLaXRPZmZsaW5lQXVkaW9Db250ZXh0OjpjcmVhdGUoU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCYgY29udGV4dCwgdW5zaWduZWQgbnVtYmVyT2ZDaGFubmVscywgc2l6ZV90IG51bWJl
ck9mRnJhbWVzLCBmbG9hdCBzYW1wbGVSYXRlKQoreworICAgIC8vIEZJWE1FOiBBZGQgc3VwcG9y
dCBmb3Igd29ya2Vycy4KKyAgICBpZiAoIWlzPERvY3VtZW50Pihjb250ZXh0KSkKKyAgICAgICAg
cmV0dXJuIEV4Y2VwdGlvbiB7IE5vdFN1cHBvcnRlZEVycm9yIH07CisgICAgaWYgKCFudW1iZXJP
ZkNoYW5uZWxzIHx8IG51bWJlck9mQ2hhbm5lbHMgPiAxMCB8fCAhbnVtYmVyT2ZGcmFtZXMgfHwg
IWlzU2FtcGxlUmF0ZVJhbmdlR29vZChzYW1wbGVSYXRlKSkKKyAgICAgICAgcmV0dXJuIEV4Y2Vw
dGlvbiB7IFN5bnRheEVycm9yIH07CisgICAgYXV0byByZW5kZXJUYXJnZXQgPSBBdWRpb0J1ZmZl
cjo6Y3JlYXRlKG51bWJlck9mQ2hhbm5lbHMsIG51bWJlck9mRnJhbWVzLCBzYW1wbGVSYXRlKTsK
KyAgICBpZiAoIXJlbmRlclRhcmdldCkKKyAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IFN5bnRh
eEVycm9yIH07CisKKyAgICBhdXRvIGF1ZGlvQ29udGV4dCA9IGFkb3B0UmVmKCpuZXcgV2ViS2l0
T2ZmbGluZUF1ZGlvQ29udGV4dChkb3duY2FzdDxEb2N1bWVudD4oY29udGV4dCksIHJlbmRlclRh
cmdldC5nZXQoKSkpOworICAgIGF1ZGlvQ29udGV4dC0+c3VzcGVuZElmTmVlZGVkKCk7CisgICAg
cmV0dXJuIGF1ZGlvQ29udGV4dDsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5k
aWYgLy8gRU5BQkxFKFdFQl9BVURJTykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViYXVkaW8vV2ViS2l0T2ZmbGluZUF1ZGlvQ29udGV4dC5oIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJhdWRpby9XZWJLaXRPZmZsaW5lQXVkaW9Db250ZXh0LmgKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLmMyNTRlZDQxZmUwCi0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9XZWJLaXRPZmZsaW5lQXVkaW9Db250
ZXh0LmgKQEAgLTAsMCArMSw0MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiwgR29vZ2xl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OCisgKiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMKKyAqIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5j
bHVkZSAiV2ViS2l0QXVkaW9Db250ZXh0LmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xh
c3MgV2ViS2l0T2ZmbGluZUF1ZGlvQ29udGV4dCBmaW5hbCA6IHB1YmxpYyBXZWJLaXRBdWRpb0Nv
bnRleHQgeworICAgIFdURl9NQUtFX0lTT19BTExPQ0FURUQoV2ViS2l0T2ZmbGluZUF1ZGlvQ29u
dGV4dCk7CitwdWJsaWM6CisgICAgc3RhdGljIEV4Y2VwdGlvbk9yPFJlZjxXZWJLaXRPZmZsaW5l
QXVkaW9Db250ZXh0Pj4gY3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCB1bnNpZ25lZCBu
dW1iZXJPZkNoYW5uZWxzLCBzaXplX3QgbnVtYmVyT2ZGcmFtZXMsIGZsb2F0IHNhbXBsZVJhdGUp
OworCitwcml2YXRlOgorICAgIFdlYktpdE9mZmxpbmVBdWRpb0NvbnRleHQoRG9jdW1lbnQmLCBB
dWRpb0J1ZmZlciogcmVuZGVyVGFyZ2V0KTsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vV2ViS2l0T2ZmbGlu
ZUF1ZGlvQ29udGV4dC5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1dlYktp
dE9mZmxpbmVBdWRpb0NvbnRleHQuaWRsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwLi42ZTI4OTUxMzFiYQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViYXVkaW8vV2ViS2l0T2ZmbGluZUF1ZGlvQ29udGV4dC5pZGwKQEAgLTAsMCArMSwz
MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiwgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5EIEFOWQorICogRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
CisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OCisgKiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMKKyAqIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKK1sKKyAgICBDb25kaXRpb25hbD1XRUJfQVVESU8sCisgICAgSlNH
ZW5lcmF0ZVRvSlNPYmplY3QsCisgICAgQ29uc3RydWN0b3IodW5zaWduZWQgbG9uZyBudW1iZXJP
ZkNoYW5uZWxzLCB1bnNpZ25lZCBsb25nIG51bWJlck9mRnJhbWVzLCB1bnJlc3RyaWN0ZWQgZmxv
YXQgc2FtcGxlUmF0ZSksCisgICAgQ29uc3RydWN0b3JNYXlUaHJvd0V4Y2VwdGlvbiwKKyAgICBD
b25zdHJ1Y3RvckNhbGxXaXRoPVNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsCisgICAgSW50ZXJmYWNl
TmFtZT13ZWJraXRPZmZsaW5lQXVkaW9Db250ZXh0CitdIGludGVyZmFjZSBXZWJLaXRPZmZsaW5l
QXVkaW9Db250ZXh0IDogQXVkaW9Db250ZXh0IHsKK307CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Tb3VyY2VzLnR4dCBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CmluZGV4IDI0ZGI4
ZmQyYzMxLi5lNTFiMzFmMmZmMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvU291cmNlcy50
eHQKKysrIGIvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKQEAgLTI2OCw2ICsyNjgsOSBAQCBN
b2R1bGVzL3dlYmF1ZGlvL1NjcmlwdFByb2Nlc3Nvck5vZGUuY3BwCiBNb2R1bGVzL3dlYmF1ZGlv
L1dhdmVTaGFwZXJEU1BLZXJuZWwuY3BwCiBNb2R1bGVzL3dlYmF1ZGlvL1dhdmVTaGFwZXJOb2Rl
LmNwcAogTW9kdWxlcy93ZWJhdWRpby9XYXZlU2hhcGVyUHJvY2Vzc29yLmNwcAorTW9kdWxlcy93
ZWJhdWRpby9XZWJLaXRBdWRpb0NvbnRleHQuY3BwCitNb2R1bGVzL3dlYmF1ZGlvL1dlYktpdEF1
ZGlvUGFubmVyTm9kZS5jcHAKK01vZHVsZXMvd2ViYXVkaW8vV2ViS2l0T2ZmbGluZUF1ZGlvQ29u
dGV4dC5jcHAKIAogTW9kdWxlcy93ZWJhdXRobi9BdXRoZW50aWNhdG9yQ29vcmRpbmF0b3IuY3Bw
CiBNb2R1bGVzL3dlYmF1dGhuL0F1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZS5jcHAKQEAg
LTM1NjcsNyArMzU3MCwxMCBAQCBKU1dlYkdQVVN3YXBDaGFpbi5jcHAKIEpTV2ViR1BVVGV4dHVy
ZS5jcHAKIEpTV2ViR1BVVGV4dHVyZVZpZXcuY3BwCiBKU1dlYktpdEFuaW1hdGlvbkV2ZW50LmNw
cAorSlNXZWJLaXRBdWRpb0NvbnRleHQuY3BwCitKU1dlYktpdEF1ZGlvUGFubmVyTm9kZS5jcHAK
IEpTV2ViS2l0Q1NTTWF0cml4LmNwcAorSlNXZWJLaXRPZmZsaW5lQXVkaW9Db250ZXh0LmNwcAog
SlNXZWJLaXRQbGF5YmFja1RhcmdldEF2YWlsYWJpbGl0eUV2ZW50LmNwcAogSlNXZWJLaXRQb2lu
dC5jcHAKIEpTV2ViS2l0VHJhbnNpdGlvbkV2ZW50LmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDUyNjVkYjU4MzgyLi5mY2U2
MjY4YmIwNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagpAQCAtMjQxNCw2ICsyNDE0LDggQEAKIAkJODMxMDJCMjcxRjlFQUREOTAwRTQw
NEI5IC8qIEpTRXh0ZW5kYWJsZU1lc3NhZ2VFdmVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODMxMDJCMjMxRjlFQURDMjAwRTQwNEI5IC8qIEpTRXh0
ZW5kYWJsZU1lc3NhZ2VFdmVudC5oICovOyB9OwogCQk4MzExQzAwMzFGQUEyRTk1MDBFM0M4RTUg
LyogU1dTZXJ2ZXJKb2JRdWV1ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gODMxMUMwMDIxRkFBMkU4OTAwRTNDOEU1IC8qIFNXU2VydmVySm9iUXVldWUu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk4MzEy
MEM3MTFDNTZGM0ZCMDAxQ0IxMTIgLyogSFRNTERhdGFFbGVtZW50LmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4MzRCODZBNzFDNTZFODNBMDBGM0YwRTMg
LyogSFRNTERhdGFFbGVtZW50LmggKi87IH07CisJCTgzMUI2MTc2MjQ5OUE1QkIwMEMwN0M3OSAv
KiBXZWJLaXRBdWRpb1Bhbm5lck5vZGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDgzMUI2MTc0MjQ5OUE1OUMwMEMwN0M3OSAvKiBXZWJLaXRBdWRpb1Bh
bm5lck5vZGUuaCAqLzsgfTsKKwkJODMxQjYxNzcyNDk5QTVCRjAwQzA3Qzc5IC8qIFdlYktpdE9m
ZmxpbmVBdWRpb0NvbnRleHQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDgzMUI2MTc1MjQ5OUE1OUQwMEMwN0M3OSAvKiBXZWJLaXRPZmZsaW5lQXVkaW9D
b250ZXh0LmggKi87IH07CiAJCTgzMjE1MDdFMUYyN0VBMUIwMDk1QjEzNiAvKiBOYXZpZ2F0b3JC
ZWFjb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgz
MjE1MDdCMUYyN0VBMTUwMDk1QjEzNiAvKiBOYXZpZ2F0b3JCZWFjb24uaCAqLzsgfTsKIAkJODMy
Qjg0MzQxOUQ4RTU1MTAwQjI2MDU1IC8qIFNWR0FuaW1hdGVFbGVtZW50QmFzZS5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODMyQjg0MzMxOUQ4RTU1MTAw
QjI2MDU1IC8qIFNWR0FuaW1hdGVFbGVtZW50QmFzZS5oICovOyB9OwogCQk4MzNCOUUzMjFGNTA4
RDg1MDBFMEU0MjggLyogSlNGaWxlU3lzdGVtRGlyZWN0b3J5RW50cnkuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgzM0I5RTJGMUY1MDhEODAwMEUwRTQy
OCAvKiBKU0ZpbGVTeXN0ZW1EaXJlY3RvcnlFbnRyeS5oICovOyB9OwpAQCAtMjQ2OSwxMCArMjQ3
MSwxMiBAQAogCQk4MzlBMkYyRTFFMjA0QTcxMDAzOTA1N0UgLyogV2ViR0xTdGF0ZVRyYWNrZXIu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgzOUEyRjJD
MUUyMDRBNkQwMDM5MDU3RSAvKiBXZWJHTFN0YXRlVHJhY2tlci5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTgzOUFBRkVEMUEwQzBDOEQwMDYwNUY5
OSAvKiBIVE1MV0JSRWxlbWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gODM5QUFGRUIxQTBDMEM4RDAwNjA1Rjk5IC8qIEhUTUxXQlJFbGVtZW50Lmgg
Ki87IH07CiAJCTgzQThBQzQwMUZBQkJGRTUwMDIwNjRBQyAvKiBTZXJ2aWNlV29ya2VySWRlbnRp
Zmllci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODNB
OEFDM0UxRkFCQkZEMTAwMjA2NEFDIC8qIFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJODNCMUE3MDIyNDk5
ODVGMDAwRkU1OTYxIC8qIFdlYktpdEF1ZGlvQ29udGV4dC5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODNCMUE2RkYyNDk5ODVEMDAwRkU1OTYxIC8qIFdl
YktpdEF1ZGlvQ29udGV4dC5oICovOyB9OwogCQk4M0IyRDE3NTFCOEJDRDZBMDBBMDJFNDcgLyog
TmF0aXZlTm9kZUZpbHRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gODNFOTU5RTExQjhCQzIyQjAwNEQ5Mzg1IC8qIE5hdGl2ZU5vZGVGaWx0ZXIuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk4M0I3NEVG
NjFGM0UwQkYyMDA5OTZCQzcgLyogS2VlcGFsaXZlUmVxdWVzdFRyYWNrZXIuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgzQjc0RUYzMUYzRTBCRDcwMDk5
NkJDNyAvKiBLZWVwYWxpdmVSZXF1ZXN0VHJhY2tlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTgzQjk2ODdCMTlGOEFCODMwMDRFRjdBRiAvKiBT
dHlsZUJ1aWxkZXJDb252ZXJ0ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDgzQjk2ODc5MTlGOEFCODMwMDRFRjdBRiAvKiBTdHlsZUJ1aWxkZXJDb252
ZXJ0ZXIuaCAqLzsgfTsKIAkJODNCQjVDODgxRDVENkY0NTAwNUE3MUY0IC8qIEFsbERlc2NlbmRh
bnRzQ29sbGVjdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gODNCQjVDODcxRDVENkYzQTAwNUE3MUY0IC8qIEFsbERlc2NlbmRhbnRzQ29sbGVjdGlv
bi5oICovOyB9OworCQk4M0JEM0NFRTI0OTk4RTAxMDBCQTNFNjcgLyogQXVkaW9Db250ZXh0U3Rh
dGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgzQkQz
Q0VEMjQ5OThERjYwMEJBM0U2NyAvKiBBdWRpb0NvbnRleHRTdGF0ZS5oICovOyB9OwogCQk4M0Mw
NUE1QjFBNjg2MjEyMDA3RTVERUEgLyogU3R5bGVQcm9wZXJ0eVNob3J0aGFuZEZ1bmN0aW9ucy5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODNDMDVBNTkx
QTY4NjIxMjAwN0U1REVBIC8qIFN0eWxlUHJvcGVydHlTaG9ydGhhbmRGdW5jdGlvbnMuaCAqLzsg
fTsKIAkJODNDMUY1OTQxRURGNjlEMzAwNDEwRDI3IC8qIFF1YWxpZmllZE5hbWVDYWNoZS5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODNDMUY1OTIxRURG
NjlEMzAwNDEwRDI3IC8qIFF1YWxpZmllZE5hbWVDYWNoZS5oICovOyB9OwogCQk4M0M0NUI4RTFE
QzJCNjhBMDA4ODcxQkEgLyogVmFsaWRhdGlvbkJ1YmJsZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODNDNDVCOEQxREMyQjY3QzAwODg3MUJBIC8qIFZh
bGlkYXRpb25CdWJibGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwpAQCAtMTAyOTcsNiArMTAzMDEsNyBAQAogCQk4MzAwMzBGMzFCN0QzM0E2MDBFRDNB
QUMgLyogR2VuZXJpY0NhY2hlZEhUTUxDb2xsZWN0aW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IEdlbmVyaWNDYWNoZWRIVE1MQ29sbGVjdGlvbi5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTgzMDAzMEY0MUI3RDMzQTYwMEVEM0FBQyAvKiBHZW5l
cmljQ2FjaGVkSFRNTENvbGxlY3Rpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gR2VuZXJpY0NhY2hlZEhUTUxDb2xsZWN0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTgzMDAzMEY3MUI3RDM5ODgwMEVEM0FBQyAvKiBDYWNoZWRIVE1MQ29sbGVjdGlvbi5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDYWNoZWRIVE1MQ29sbGVjdGlvbi5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk4MzAwM0UyQjI0OTk5N0E4MDA2MEFGOTQg
LyogV2ViS2l0QXVkaW9Db250ZXh0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IFdlYktpdEF1ZGlvQ29udGV4dC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTgzMDMzNEZCMUY1NDkwNTIwMDRERjcwNyAvKiBGaWxlU3lzdGVtRGlyZWN0b3J5UmVhZGVy
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEZpbGVTeXN0ZW1EaXJl
Y3RvcnlSZWFkZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4MzAzMzRGQzFG
NTQ5MDUyMDA0REY3MDcgLyogRmlsZVN5c3RlbURpcmVjdG9yeVJlYWRlci5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBGaWxlU3lzdGVtRGlyZWN0b3J5UmVhZGVyLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTgzMDMzNEZEMUY1NDkwNTIwMDRERjcwNyAvKiBGaWxl
U3lzdGVtRW50cmllc0NhbGxiYWNrLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBGaWxlU3lz
dGVtRW50cmllc0NhbGxiYWNrLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTEw
MzE0LDYgKzEwMzE5LDEyIEBACiAJCTgzMTAyQjI1MUY5RUFEQzIwMEU0MDRCOSAvKiBKU0V4dGVu
ZGFibGVNZXNzYWdlRXZlbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gSlNFeHRlbmRhYmxlTWVzc2FnZUV2ZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJODMxMUMwMDAxRkFBMkU4OTAwRTNDOEU1IC8qIFNXU2VydmVySm9iUXVldWUuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU1dTZXJ2ZXJKb2JRdWV1ZS5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTgzMTFDMDAyMUZBQTJFODkwMEUzQzhFNSAv
KiBTV1NlcnZlckpvYlF1ZXVlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNX
U2VydmVySm9iUXVldWUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJODMxQjYxNkYy
NDk5QTU5ODAwQzA3Qzc5IC8qIFdlYktpdEF1ZGlvUGFubmVyTm9kZS5pZGwgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0
ZXh0OyBwYXRoID0gV2ViS2l0QXVkaW9QYW5uZXJOb2RlLmlkbDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJODMxQjYxNzEyNDk5QTU5OTAwQzA3Qzc5IC8qIFdlYktpdEF1ZGlvUGFubmVy
Tm9kZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJLaXRBdWRp
b1Bhbm5lck5vZGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk4MzFCNjE3MjI0
OTlBNTlBMDBDMDdDNzkgLyogV2ViS2l0T2ZmbGluZUF1ZGlvQ29udGV4dC5pZGwgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSB0ZXh0OyBwYXRoID0gV2ViS2l0T2ZmbGluZUF1ZGlvQ29udGV4dC5pZGw7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTgzMUI2MTczMjQ5OUE1OUIwMEMwN0M3OSAvKiBXZWJLaXRPZmZs
aW5lQXVkaW9Db250ZXh0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IFdlYktpdE9mZmxpbmVBdWRpb0NvbnRleHQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQk4MzFCNjE3NDI0OTlBNTlDMDBDMDdDNzkgLyogV2ViS2l0QXVkaW9QYW5uZXJOb2RlLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYktpdEF1ZGlvUGFubmVyTm9kZS5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk4MzFCNjE3NTI0OTlBNTlEMDBDMDdDNzkg
LyogV2ViS2l0T2ZmbGluZUF1ZGlvQ29udGV4dC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBXZWJLaXRPZmZsaW5lQXVkaW9Db250ZXh0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTgzMUM0NkMzMUY5RUU1RTAwMEVCRDQ1MCAvKiBKU0V4dGVuZGFibGVNZXNzYWdl
RXZlbnRDdXN0b20uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNF
eHRlbmRhYmxlTWVzc2FnZUV2ZW50Q3VzdG9tLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJODMxRDFGMjkxQzU2RUNBMDAwRjVGNkMwIC8qIEhUTUxEYXRhRWxlbWVudC5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBIVE1MRGF0YUVsZW1lbnQuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4MzIxNTA3QTFGMjdFQTE1MDA5NUIxMzYgLyog
TmF2aWdhdG9yQmVhY29uLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE5hdmlnYXRvckJlYWNvbi5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xMDQ0MSw2ICsxMDQ1Miw4IEBACiAJ
CTgzOUFBRkVCMUEwQzBDOEQwMDYwNUY5OSAvKiBIVE1MV0JSRWxlbWVudC5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBIVE1MV0JSRWxlbWVudC5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk4M0E0QTlGODFDRTdGRDdFMDA3MDlCMDAgLyogSlNYTUxEb2N1bWVudEN1
c3RvbS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU1hNTERvY3Vt
ZW50Q3VzdG9tLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODNBOEFDM0UxRkFC
QkZEMTAwMjA2NEFDIC8qIFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTgzQjFBNkZGMjQ5OTg1RDAwMEZFNTk2MSAvKiBXZWJLaXRBdWRp
b0NvbnRleHQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViS2l0QXVkaW9D
b250ZXh0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTgzQjFBNzAxMjQ5OTg1RDAw
MEZFNTk2MSAvKiBXZWJLaXRBdWRpb0NvbnRleHQuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9
IFdlYktpdEF1ZGlvQ29udGV4dC5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTgz
QjI1MDA5MUZBMTE4MUMwMEJDMDJEOSAvKiBKU1NlcnZpY2VXb3JrZXJDbGllbnRUeXBlLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTU2VydmljZVdvcmtlckNsaWVudFR5cGUu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODNCMjUwMEIxRkExMTgxRDAwQkMwMkQ5
IC8qIEpTU2VydmljZVdvcmtlckNsaWVudFR5cGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gSlNTZXJ2aWNlV29ya2VyQ2xpZW50VHlwZS5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTgzQjVEQTQ1MUZBOTA3OTMwMEI1OURGNCAvKiBKU05hdmlnYXRv
ckN1c3RvbS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU05hdmln
YXRvckN1c3RvbS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xMDQ0OCw2ICsx
MDQ2MSw4IEBACiAJCTgzQjc0RUYzMUYzRTBCRDcwMDk5NkJDNyAvKiBLZWVwYWxpdmVSZXF1ZXN0
VHJhY2tlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBLZWVwYWxpdmVSZXF1
ZXN0VHJhY2tlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4M0I5Njg3OTE5RjhB
QjgzMDA0RUY3QUYgLyogU3R5bGVCdWlsZGVyQ29udmVydGVyLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFN0eWxlQnVpbGRlckNvbnZlcnRlci5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk4M0JCNUM4NzFENUQ2RjNBMDA1QTcxRjQgLyogQWxsRGVzY2VuZGFudHND
b2xsZWN0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFsbERlc2NlbmRh
bnRzQ29sbGVjdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk4M0JEM0NFQjI0
OTk4Q0M1MDBCQTNFNjcgLyogQXVkaW9Db250ZXh0U3RhdGUuaWRsICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsg
cGF0aCA9IEF1ZGlvQ29udGV4dFN0YXRlLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJODNCRDNDRUQyNDk5OERGNjAwQkEzRTY3IC8qIEF1ZGlvQ29udGV4dFN0YXRlLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEF1ZGlvQ29udGV4dFN0YXRlLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTgzQzA1QTU4MUE2ODYyMTIwMDdFNURFQSAvKiBTdHlsZVBy
b3BlcnR5U2hvcnRoYW5kRnVuY3Rpb25zLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgbmFtZSA9IFN0eWxlUHJvcGVydHlTaG9ydGhhbmRGdW5jdGlvbnMuY3BwOyBwYXRoID0gRGVy
aXZlZFNvdXJjZXMvV2ViQ29yZS9TdHlsZVByb3BlcnR5U2hvcnRoYW5kRnVuY3Rpb25zLmNwcDsg
c291cmNlVHJlZSA9IEJVSUxUX1BST0RVQ1RTX0RJUjsgfTsKIAkJODNDMDVBNTkxQTY4NjIxMjAw
N0U1REVBIC8qIFN0eWxlUHJvcGVydHlTaG9ydGhhbmRGdW5jdGlvbnMuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBuYW1lID0gU3R5bGVQcm9wZXJ0eVNob3J0aGFuZEZ1bmN0aW9ucy5oOyBw
YXRoID0gRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9TdHlsZVByb3BlcnR5U2hvcnRoYW5kRnVuY3Rp
b25zLmg7IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19ESVI7IH07CiAJCTgzQzFGNTkxMUVE
RjY5RDMwMDQxMEQyNyAvKiBRdWFsaWZpZWROYW1lQ2FjaGUuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gUXVhbGlmaWVkTmFtZUNhY2hlLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKQEAgLTI5MjMxLDYgKzI5MjQ2LDggQEAKIAkJCQlGRDMxNUZCQTEyQjAy
Njc1MDBDMUEzNTkgLyogQXVkaW9Db250ZXh0LmNwcCAqLywKIAkJCQlGRDMxNUZCQjEyQjAyNjc1
MDBDMUEzNTkgLyogQXVkaW9Db250ZXh0LmggKi8sCiAJCQkJRkQzMTVGQkMxMkIwMjY3NTAwQzFB
MzU5IC8qIEF1ZGlvQ29udGV4dC5pZGwgKi8sCisJCQkJODNCRDNDRUQyNDk5OERGNjAwQkEzRTY3
IC8qIEF1ZGlvQ29udGV4dFN0YXRlLmggKi8sCisJCQkJODNCRDNDRUIyNDk5OENDNTAwQkEzRTY3
IC8qIEF1ZGlvQ29udGV4dFN0YXRlLmlkbCAqLywKIAkJCQlGRDMxNUZCRDEyQjAyNjc1MDBDMUEz
NTkgLyogQXVkaW9EZXN0aW5hdGlvbk5vZGUuY3BwICovLAogCQkJCUZEMzE1RkJFMTJCMDI2NzUw
MEMxQTM1OSAvKiBBdWRpb0Rlc3RpbmF0aW9uTm9kZS5oICovLAogCQkJCUZEMzE1RkJGMTJCMDI2
NzUwMEMxQTM1OSAvKiBBdWRpb0Rlc3RpbmF0aW9uTm9kZS5pZGwgKi8sCkBAIC0yOTMyOCw2ICsy
OTM0NSwxNSBAQAogCQkJCUZEN0YyOThFMTNENEMwQ0IwMEFEOTUzNSAvKiBXYXZlU2hhcGVyTm9k
ZS5pZGwgKi8sCiAJCQkJRkQ3RjI5OEYxM0Q0QzBDQjAwQUQ5NTM1IC8qIFdhdmVTaGFwZXJQcm9j
ZXNzb3IuY3BwICovLAogCQkJCUZEN0YyOTkwMTNENEMwQ0IwMEFEOTUzNSAvKiBXYXZlU2hhcGVy
UHJvY2Vzc29yLmggKi8sCisJCQkJODMwMDNFMkIyNDk5OTdBODAwNjBBRjk0IC8qIFdlYktpdEF1
ZGlvQ29udGV4dC5jcHAgKi8sCisJCQkJODNCMUE2RkYyNDk5ODVEMDAwRkU1OTYxIC8qIFdlYktp
dEF1ZGlvQ29udGV4dC5oICovLAorCQkJCTgzQjFBNzAxMjQ5OTg1RDAwMEZFNTk2MSAvKiBXZWJL
aXRBdWRpb0NvbnRleHQuaWRsICovLAorCQkJCTgzMUI2MTcxMjQ5OUE1OTkwMEMwN0M3OSAvKiBX
ZWJLaXRBdWRpb1Bhbm5lck5vZGUuY3BwICovLAorCQkJCTgzMUI2MTc0MjQ5OUE1OUMwMEMwN0M3
OSAvKiBXZWJLaXRBdWRpb1Bhbm5lck5vZGUuaCAqLywKKwkJCQk4MzFCNjE2RjI0OTlBNTk4MDBD
MDdDNzkgLyogV2ViS2l0QXVkaW9QYW5uZXJOb2RlLmlkbCAqLywKKwkJCQk4MzFCNjE3MzI0OTlB
NTlCMDBDMDdDNzkgLyogV2ViS2l0T2ZmbGluZUF1ZGlvQ29udGV4dC5jcHAgKi8sCisJCQkJODMx
QjYxNzUyNDk5QTU5RDAwQzA3Qzc5IC8qIFdlYktpdE9mZmxpbmVBdWRpb0NvbnRleHQuaCAqLywK
KwkJCQk4MzFCNjE3MjI0OTlBNTlBMDBDMDdDNzkgLyogV2ViS2l0T2ZmbGluZUF1ZGlvQ29udGV4
dC5pZGwgKi8sCiAJCQkpOwogCQkJcGF0aCA9IHdlYmF1ZGlvOwogCQkJc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsKQEAgLTI5NzA0LDYgKzI5NzMwLDcgQEAKIAkJCQk5QjQxNzA2NDEyNTY2MkIzMDA2
QjI4RkMgLyogQXBwbHlCbG9ja0VsZW1lbnRDb21tYW5kLmggaW4gSGVhZGVycyAqLywKIAkJCQk5
MzMwOUREOTA5OUU2NDkyMDA1NkU1ODEgLyogQXBwbHlTdHlsZUNvbW1hbmQuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTUxMkREOEY2MEQ5MUU2QUYwMDBGODlFRSAvKiBBcmNoaXZlLmggaW4gSGVhZGVy
cyAqLywKKwkJCQk4M0JEM0NFRTI0OTk4RTAxMDBCQTNFNjcgLyogQXVkaW9Db250ZXh0U3RhdGUu
aCBpbiBIZWFkZXJzICovLAogCQkJCTUxMkREOEZEMEQ5MUU2QUYwMDBGODlFRSAvKiBBcmNoaXZl
RmFjdG9yeS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTEyREQ4RkMwRDkxRTZBRjAwMEY4OUVFIC8q
IEFyY2hpdmVSZXNvdXJjZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTEyREQ4RjgwRDkxRTZBRjAw
MEY4OUVFIC8qIEFyY2hpdmVSZXNvdXJjZUNvbGxlY3Rpb24uaCBpbiBIZWFkZXJzICovLApAQCAt
MzA4NjksNiArMzA4OTYsNyBAQAogCQkJCUE0M0JGNTk5MTE0OTI5MEEwMEM2NDNDQSAvKiBIVE1M
UHJvZ3Jlc3NFbGVtZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlBOENGRjdBMzBBMTU2OTc4MDAw
QTQyMzQgLyogSFRNTFF1b3RlRWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQThEMjIzRkUx
NkI1MkU0RTAwMTU3Mjg4IC8qIEhUTUxSZXNvdXJjZVByZWxvYWRlci5oIGluIEhlYWRlcnMgKi8s
CisJCQkJODNCMUE3MDIyNDk5ODVGMDAwRkU1OTYxIC8qIFdlYktpdEF1ZGlvQ29udGV4dC5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJQTg3MURDMjUwQTE1MjA1NzAwQjEyQTY4IC8qIEhUTUxTY3JpcHRF
bGVtZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQk5NzdCMzg3NTEyMjg4M0U5MDBCODFGRjggLyog
SFRNTFNjcmlwdFJ1bm5lci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTc3QjM4NzYxMjI4ODNFOTAw
QjgxRkY4IC8qIEhUTUxTY3JpcHRSdW5uZXJIb3N0LmggaW4gSGVhZGVycyAqLywKQEAgLTMxNzEx
LDYgKzMxNzM5LDcgQEAKIAkJCQlCQzgyNDMyOTBEMENFOEEyMDA0NjBDOEYgLyogSlNTUUxFcnJv
ci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUFFODJGRUQwQ0FCMDdFRTAwMjIzN0FFIC8qIEpTU1FM
UmVzdWx0U2V0LmggaW4gSGVhZGVycyAqLywKIAkJCQkxQUZFMTE5QTBDQkZGQ0M0MDAzMDE3RkEg
LyogSlNTUUxSZXN1bHRTZXRSb3dMaXN0LmggaW4gSGVhZGVycyAqLywKKwkJCQk4MzFCNjE3NjI0
OTlBNUJCMDBDMDdDNzkgLyogV2ViS2l0QXVkaW9QYW5uZXJOb2RlLmggaW4gSGVhZGVycyAqLywK
IAkJCQlCNTlERDZBNTExOTAyQTYyMDA3RTk2ODQgLyogSlNTUUxTdGF0ZW1lbnRDYWxsYmFjay5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJQjU5REQ2QTkxMTkwMkE3MTAwN0U5Njg0IC8qIEpTU1FMU3Rh
dGVtZW50RXJyb3JDYWxsYmFjay5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkM4MjQzMkEwRDBDRThB
MjAwNDYwQzhGIC8qIEpTU1FMVHJhbnNhY3Rpb24uaCBpbiBIZWFkZXJzICovLApAQCAtMzI4MDQs
NiArMzI4MzMsNyBAQAogCQkJCTUxRUU3QjM4MUFBNTBCMDUwMEY5MkIyMSAvKiBSZXNvdXJjZUxv
YWRJbmZvLmggaW4gSGVhZGVycyAqLywKIAkJCQk5NzNFMzI1NzEwODgzQjdDMDA1QkM0OTMgLyog
UmVzb3VyY2VMb2FkTm90aWZpZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTZCNjkzQTJFMUM1MUE4
MkUwMEIwM0JFRiAvKiBSZXNvdXJjZUxvYWRPYnNlcnZlci5oIGluIEhlYWRlcnMgKi8sCisJCQkJ
ODMxQjYxNzcyNDk5QTVCRjAwQzA3Qzc5IC8qIFdlYktpdE9mZmxpbmVBdWRpb0NvbnRleHQuaCBp
biBIZWFkZXJzICovLAogCQkJCUU0Mjk1RkE0MTJCMDYxNEUwMEQxQUNFMCAvKiBSZXNvdXJjZUxv
YWRQcmlvcml0eS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJN0E5MjlDQTcxQzU5OEFBOTAwNERGMjI2
IC8qIFJlc291cmNlTG9hZFN0YXRpc3RpY3MuaCBpbiBIZWFkZXJzICovLAogCQkJCTdFRTY4NDZE
MTJEMjZFMzgwMEU3OTQxNSAvKiBSZXNvdXJjZVJlcXVlc3QuaCBpbiBIZWFkZXJzICovLApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvV2ViQ29yZUJ1aWx0aW5OYW1lcy5o
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvV2ViQ29yZUJ1aWx0aW5OYW1lcy5oCmluZGV4
IGM5MWI0ZGZhZDcxLi4zZWI2MmIyYTgxZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvV2ViQ29yZUJ1aWx0aW5OYW1lcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL1dlYkNvcmVCdWlsdGluTmFtZXMuaApAQCAtNDksNiArNDksNyBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAgICAgbWFjcm8oQXBwbGVQYXlTZXR1cEZlYXR1cmUpIFwKICAgICBtYWNybyhB
dHRhY2htZW50RWxlbWVudCkgXAogICAgIG1hY3JvKEF1ZGlvKSBcCisgICAgbWFjcm8oQXVkaW9D
b250ZXh0KSBcCiAgICAgbWFjcm8oQXV0aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNlKSBcCiAg
ICAgbWFjcm8oQXV0aGVudGljYXRvckF0dGVzdGF0aW9uUmVzcG9uc2UpIFwKICAgICBtYWNybyhB
dXRoZW50aWNhdG9yUmVzcG9uc2UpIFwKQEAgLTE2NSw5ICsxNjYsMTEgQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogICAgIG1hY3JvKE5hdmlnYXRvckNyZWRlbnRpYWxzKSBcCiAgICAgbWFjcm8oTmF2
aWdhdG9yTWVkaWFEZXZpY2VzKSBcCiAgICAgbWFjcm8oTmF2aWdhdG9yVXNlck1lZGlhKSBcCisg
ICAgbWFjcm8oT2ZmbGluZUF1ZGlvQ29udGV4dCkgXAogICAgIG1hY3JvKE9mZnNjcmVlbkNhbnZh
cykgXAogICAgIG1hY3JvKE9mZnNjcmVlbkNhbnZhc1JlbmRlcmluZ0NvbnRleHQyRCkgXAogICAg
IG1hY3JvKFBhaW50UmVuZGVyaW5nQ29udGV4dDJEKSBcCisgICAgbWFjcm8oUGFubmVyTm9kZSkg
XAogICAgIG1hY3JvKFBheW1lbnRBZGRyZXNzKSBcCiAgICAgbWFjcm8oUGF5bWVudE1ldGhvZENo
YW5nZUV2ZW50KSBcCiAgICAgbWFjcm8oUGF5bWVudFJlcXVlc3QpIFwKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2RvbS9FdmVudFRhcmdldEZhY3RvcnkuaW4gYi9Tb3VyY2UvV2ViQ29yZS9k
b20vRXZlbnRUYXJnZXRGYWN0b3J5LmluCmluZGV4IGZjMWRiMmNlMGUwLi5hMTU0YjQ0NWExMyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50VGFyZ2V0RmFjdG9yeS5pbgorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRUYXJnZXRGYWN0b3J5LmluCkBAIC01Myw2ICs1Myw3
IEBAIFZpZGVvVHJhY2tMaXN0IGNvbmRpdGlvbmFsPVZJREVPCiBWaXN1YWxWaWV3cG9ydAogV2Vi
QW5pbWF0aW9uCiBXZWJHUFVEZXZpY2UgY29uZGl0aW9uYWw9V0VCR1BVCitXZWJLaXRBdWRpb0Nv
bnRleHQgY29uZGl0aW9uYWw9V0VCX0FVRElPCiBXZWJLaXRNZWRpYUtleVNlc3Npb24gY29uZGl0
aW9uYWw9TEVHQUNZX0VOQ1JZUFRFRF9NRURJQQogV2ViU29ja2V0CiBXb3JrZXIKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3MueWFtbCBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvU2V0dGluZ3MueWFtbAppbmRleCAyZDZiYzZmZjJlZi4uNTgzZmM2Zjc5NWUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3MueWFtbAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL1NldHRpbmdzLnlhbWwKQEAgLTI1NSw2ICsyNTUsOCBAQCBsb2FkRGVmZXJyaW5nRW5h
YmxlZDoKICAgaW5pdGlhbDogdHJ1ZQogd2ViQXVkaW9FbmFibGVkOgogICBpbml0aWFsOiBmYWxz
ZQorbW9kZXJuVW5wcmVmaXhlZFdlYkF1ZGlvRW5hYmxlZDoKKyAgaW5pdGlhbDogZmFsc2UKIHBh
Z2luYXRlRHVyaW5nTGF5b3V0RW5hYmxlZDoKICAgaW5pdGlhbDogZmFsc2UKIGZ1bGxTY3JlZW5F
bmFibGVkOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUHJlZmVyZW5jZXMu
eWFtbCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlByZWZlcmVuY2VzLnlhbWwKaW5kZXggZmFk
MWE5ZjU4ODYuLjUyMzVjZTcxZmY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9X
ZWJQcmVmZXJlbmNlcy55YW1sCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlByZWZlcmVu
Y2VzLnlhbWwKQEAgLTMzNCw2ICszMzQsMTQgQEAgV2ViQXVkaW9FbmFibGVkOgogICBkZWZhdWx0
VmFsdWU6IHRydWUKICAgY29uZGl0aW9uOiBFTkFCTEUoV0VCX0FVRElPKQogCitNb2Rlcm5VbnBy
ZWZpeGVkV2ViQXVkaW9FbmFibGVkOgorICB0eXBlOiBib29sCisgIGRlZmF1bHRWYWx1ZTogZmFs
c2UKKyAgY29uZGl0aW9uOiBFTkFCTEUoV0VCX0FVRElPKQorICBodW1hblJlYWRhYmxlTmFtZTog
Ik1vZGVybiBXZWJBdWRpbyBBUEkiCisgIGh1bWFuUmVhZGFibGVEZXNjcmlwdGlvbjogIk1vZGVy
biBhbmQgdW5wcmVmaXhlZCBXZWJBdWRpbyBBUEkiCisgIGNhdGVnb3J5OiBleHBlcmltZW50YWwK
KwogQXR0YWNobWVudEVsZW1lbnRFbmFibGVkOgogICB0eXBlOiBib29sCiAgIGRlZmF1bHRWYWx1
ZTogZmFsc2UK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>402089</attachid>
            <date>2020-06-17 01:25:16 -0700</date>
            <delta_ts>2020-06-17 01:34:48 -0700</delta_ts>
            <desc>WIP Patch</desc>
            <filename>213268_wip.patch</filename>
            <type>text/plain</type>
            <size>202543</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dlYkNv
cmUvQ01ha2VMaXN0cy50eHQKaW5kZXggOTc1OTQ4OTVkOGMuLmNiZWM5ZWMwOWY1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9D
TWFrZUxpc3RzLnR4dApAQCAtNDMzLDYgKzQzMyw3IEBAIHNldChXZWJDb3JlX05PTl9TVkdfSURM
X0ZJTEVTCiAgICAgTW9kdWxlcy93ZWJhdWRpby9BdWRpb0J1ZmZlckNhbGxiYWNrLmlkbAogICAg
IE1vZHVsZXMvd2ViYXVkaW8vQXVkaW9CdWZmZXJTb3VyY2VOb2RlLmlkbAogICAgIE1vZHVsZXMv
d2ViYXVkaW8vQXVkaW9Db250ZXh0LmlkbAorICAgIE1vZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250
ZXh0U3RhdGUuaWRsCiAgICAgTW9kdWxlcy93ZWJhdWRpby9BdWRpb0Rlc3RpbmF0aW9uTm9kZS5p
ZGwKICAgICBNb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvTGlzdGVuZXIuaWRsCiAgICAgTW9kdWxlcy93
ZWJhdWRpby9BdWRpb05vZGUuaWRsCkBAIC00NTUsNiArNDU2LDkgQEAgc2V0KFdlYkNvcmVfTk9O
X1NWR19JRExfRklMRVMKICAgICBNb2R1bGVzL3dlYmF1ZGlvL1BlcmlvZGljV2F2ZS5pZGwKICAg
ICBNb2R1bGVzL3dlYmF1ZGlvL1NjcmlwdFByb2Nlc3Nvck5vZGUuaWRsCiAgICAgTW9kdWxlcy93
ZWJhdWRpby9XYXZlU2hhcGVyTm9kZS5pZGwKKyAgICBNb2R1bGVzL3dlYmF1ZGlvL1dlYktpdEF1
ZGlvQ29udGV4dC5pZGwKKyAgICBNb2R1bGVzL3dlYmF1ZGlvL1dlYktpdEF1ZGlvUGFubmVyTm9k
ZS5pZGwKKyAgICBNb2R1bGVzL3dlYmF1ZGlvL1dlYktpdE9mZmxpbmVBdWRpb0NvbnRleHQuaWRs
CiAKICAgICBNb2R1bGVzL3dlYmF1dGhuL0F0dGVzdGF0aW9uQ29udmV5YW5jZVByZWZlcmVuY2Uu
aWRsCiAgICAgTW9kdWxlcy93ZWJhdXRobi9BdXRoZW50aWNhdGlvbkV4dGVuc2lvbnNDbGllbnRJ
bnB1dHMuaWRsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy1pbnB1
dC54Y2ZpbGVsaXN0IGIvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMtaW5wdXQueGNmaWxl
bGlzdAppbmRleCA2YTdhYTdkMTRlYi4uMDRhMzM3OGJkYmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLWlucHV0LnhjZmlsZWxpc3QKKysrIGIvU291cmNlL1dlYkNv
cmUvRGVyaXZlZFNvdXJjZXMtaW5wdXQueGNmaWxlbGlzdApAQCAtMzIyLDYgKzMyMiw3IEBAICQo
UFJPSkVDVF9ESVIpL01vZHVsZXMvd2ViYXVkaW8vUGFubmVyTm9kZS5pZGwKICQoUFJPSkVDVF9E
SVIpL01vZHVsZXMvd2ViYXVkaW8vUGVyaW9kaWNXYXZlLmlkbAogJChQUk9KRUNUX0RJUikvTW9k
dWxlcy93ZWJhdWRpby9TY3JpcHRQcm9jZXNzb3JOb2RlLmlkbAogJChQUk9KRUNUX0RJUikvTW9k
dWxlcy93ZWJhdWRpby9XYXZlU2hhcGVyTm9kZS5pZGwKKyQoUFJPSkVDVF9ESVIpL01vZHVsZXMv
d2ViYXVkaW8vV2ViS2l0QXVkaW9Db250ZXh0LmlkbAogJChQUk9KRUNUX0RJUikvTW9kdWxlcy93
ZWJhdXRobi9BdHRlc3RhdGlvbkNvbnZleWFuY2VQcmVmZXJlbmNlLmlkbAogJChQUk9KRUNUX0RJ
UikvTW9kdWxlcy93ZWJhdXRobi9BdXRoZW50aWNhdGlvbkV4dGVuc2lvbnNDbGllbnRJbnB1dHMu
aWRsCiAkKFBST0pFQ1RfRElSKS9Nb2R1bGVzL3dlYmF1dGhuL0F1dGhlbnRpY2F0aW9uRXh0ZW5z
aW9uc0NsaWVudE91dHB1dHMuaWRsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVk
U291cmNlcy5tYWtlIGIvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQppbmRleCBk
MjY3MDg5ZTM4Ny4uMDY5ZTIwNTI2NzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0Rlcml2
ZWRTb3VyY2VzLm1ha2UKKysrIGIvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQpA
QCAtMzgzLDYgKzM4Myw3IEBAIEpTX0JJTkRJTkdfSURMUyA9IFwKICAgICAkKFdlYkNvcmUpL01v
ZHVsZXMvd2ViYXVkaW8vQXVkaW9CdWZmZXJDYWxsYmFjay5pZGwgXAogICAgICQoV2ViQ29yZSkv
TW9kdWxlcy93ZWJhdWRpby9BdWRpb0J1ZmZlclNvdXJjZU5vZGUuaWRsIFwKICAgICAkKFdlYkNv
cmUpL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0LmlkbCBcCisgICAgJChXZWJDb3JlKS9N
b2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQ29udGV4dFN0YXRlLmlkbCBcCiAgICAgJChXZWJDb3JlKS9N
b2R1bGVzL3dlYmF1ZGlvL0F1ZGlvRGVzdGluYXRpb25Ob2RlLmlkbCBcCiAgICAgJChXZWJDb3Jl
KS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvTGlzdGVuZXIuaWRsIFwKICAgICAkKFdlYkNvcmUpL01v
ZHVsZXMvd2ViYXVkaW8vQXVkaW9Ob2RlLmlkbCBcCkBAIC00MDUsNiArNDA2LDkgQEAgSlNfQklO
RElOR19JRExTID0gXAogICAgICQoV2ViQ29yZSkvTW9kdWxlcy93ZWJhdWRpby9QZXJpb2RpY1dh
dmUuaWRsIFwKICAgICAkKFdlYkNvcmUpL01vZHVsZXMvd2ViYXVkaW8vU2NyaXB0UHJvY2Vzc29y
Tm9kZS5pZGwgXAogICAgICQoV2ViQ29yZSkvTW9kdWxlcy93ZWJhdWRpby9XYXZlU2hhcGVyTm9k
ZS5pZGwgXAorICAgICQoV2ViQ29yZSkvTW9kdWxlcy93ZWJhdWRpby9XZWJLaXRBdWRpb0NvbnRl
eHQuaWRsIFwKKyAgICAkKFdlYkNvcmUpL01vZHVsZXMvd2ViYXVkaW8vV2ViS2l0QXVkaW9QYW5u
ZXJOb2RlLmlkbCBcCisgICAgJChXZWJDb3JlKS9Nb2R1bGVzL3dlYmF1ZGlvL1dlYktpdE9mZmxp
bmVBdWRpb0NvbnRleHQuaWRsIFwKICAgICAkKFdlYkNvcmUpL01vZHVsZXMvd2ViYXV0aG4vQXR0
ZXN0YXRpb25Db252ZXlhbmNlUHJlZmVyZW5jZS5pZGwgXAogICAgICQoV2ViQ29yZSkvTW9kdWxl
cy93ZWJhdXRobi9BdXRoZW50aWNhdGlvbkV4dGVuc2lvbnNDbGllbnRJbnB1dHMuaWRsIFwKICAg
ICAkKFdlYkNvcmUpL01vZHVsZXMvd2ViYXV0aG4vQXV0aGVudGljYXRpb25FeHRlbnNpb25zQ2xp
ZW50T3V0cHV0cy5pZGwgXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJh
dWRpby9BbmFseXNlck5vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9B
bmFseXNlck5vZGUuY3BwCmluZGV4IDE3OTg3MDcwMWY4Li4yMTVkZTMyMWU5YSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BbmFseXNlck5vZGUuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQW5hbHlzZXJOb2RlLmNwcApAQCAtMzYs
NyArMzYsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFdURl9NQUtFX0lTT19BTExPQ0FURURf
SU1QTChBbmFseXNlck5vZGUpOwogCi1BbmFseXNlck5vZGU6OkFuYWx5c2VyTm9kZShBdWRpb0Nv
bnRleHQmIGNvbnRleHQsIGZsb2F0IHNhbXBsZVJhdGUpCitBbmFseXNlck5vZGU6OkFuYWx5c2Vy
Tm9kZShBdWRpb0NvbnRleHRCYXNlJiBjb250ZXh0LCBmbG9hdCBzYW1wbGVSYXRlKQogICAgIDog
QXVkaW9CYXNpY0luc3BlY3Rvck5vZGUoY29udGV4dCwgc2FtcGxlUmF0ZSwgMikKIHsKICAgICBz
ZXROb2RlVHlwZShOb2RlVHlwZUFuYWx5c2VyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViYXVkaW8vQW5hbHlzZXJOb2RlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmF1ZGlvL0FuYWx5c2VyTm9kZS5oCmluZGV4IGRhMWI1ZTg5Y2EyLi5hNDAyM2EzMGRlYSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BbmFseXNlck5vZGUu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0FuYWx5c2VyTm9kZS5oCkBA
IC0zMiw3ICszMiw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIEFuYWx5c2VyTm9kZSBm
aW5hbCA6IHB1YmxpYyBBdWRpb0Jhc2ljSW5zcGVjdG9yTm9kZSB7CiAgICAgV1RGX01BS0VfSVNP
X0FMTE9DQVRFRChBbmFseXNlck5vZGUpOwogcHVibGljOgotICAgIHN0YXRpYyBSZWY8QW5hbHlz
ZXJOb2RlPiBjcmVhdGUoQXVkaW9Db250ZXh0JiBjb250ZXh0LCBmbG9hdCBzYW1wbGVSYXRlKQor
ICAgIHN0YXRpYyBSZWY8QW5hbHlzZXJOb2RlPiBjcmVhdGUoQXVkaW9Db250ZXh0QmFzZSYgY29u
dGV4dCwgZmxvYXQgc2FtcGxlUmF0ZSkKICAgICB7CiAgICAgICAgIHJldHVybiBhZG9wdFJlZigq
bmV3IEFuYWx5c2VyTm9kZShjb250ZXh0LCBzYW1wbGVSYXRlKSk7CiAgICAgfQpAQCAtNTgsNyAr
NTgsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBnZXRCeXRlVGltZURvbWFpbkRhdGEoY29uc3QgUmVm
UHRyPEpTQzo6VWludDhBcnJheT4mIGFycmF5KSB7IG1fYW5hbHlzZXIuZ2V0Qnl0ZVRpbWVEb21h
aW5EYXRhKGFycmF5LmdldCgpKTsgfQogCiBwcml2YXRlOgotICAgIEFuYWx5c2VyTm9kZShBdWRp
b0NvbnRleHQmLCBmbG9hdCBzYW1wbGVSYXRlKTsKKyAgICBBbmFseXNlck5vZGUoQXVkaW9Db250
ZXh0QmFzZSYsIGZsb2F0IHNhbXBsZVJhdGUpOwogCiAgICAgdm9pZCBwcm9jZXNzKHNpemVfdCBm
cmFtZXNUb1Byb2Nlc3MpIGZpbmFsOwogICAgIHZvaWQgcmVzZXQoKSBmaW5hbDsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9CYXNpY0luc3BlY3Rvck5v
ZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0Jhc2ljSW5zcGVj
dG9yTm9kZS5jcHAKaW5kZXggMGZiNTViMDhmMGMuLjE0NTNkYWNhZmRhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQmFzaWNJbnNwZWN0b3JOb2RlLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQmFzaWNJbnNwZWN0
b3JOb2RlLmNwcApAQCAtMzYsNyArMzYsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFdURl9N
QUtFX0lTT19BTExPQ0FURURfSU1QTChBdWRpb0Jhc2ljSW5zcGVjdG9yTm9kZSk7CiAKLUF1ZGlv
QmFzaWNJbnNwZWN0b3JOb2RlOjpBdWRpb0Jhc2ljSW5zcGVjdG9yTm9kZShBdWRpb0NvbnRleHQm
IGNvbnRleHQsIGZsb2F0IHNhbXBsZVJhdGUsIHVuc2lnbmVkIG91dHB1dENoYW5uZWxDb3VudCkK
K0F1ZGlvQmFzaWNJbnNwZWN0b3JOb2RlOjpBdWRpb0Jhc2ljSW5zcGVjdG9yTm9kZShBdWRpb0Nv
bnRleHRCYXNlJiBjb250ZXh0LCBmbG9hdCBzYW1wbGVSYXRlLCB1bnNpZ25lZCBvdXRwdXRDaGFu
bmVsQ291bnQpCiAgICAgOiBBdWRpb05vZGUoY29udGV4dCwgc2FtcGxlUmF0ZSkKIHsKICAgICBz
ZXROb2RlVHlwZShOb2RlVHlwZUJhc2ljSW5zcGVjdG9yKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9CYXNpY0luc3BlY3Rvck5vZGUuaCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9CYXNpY0luc3BlY3Rvck5vZGUuaAppbmRl
eCA4MGUwOGQyOTYxNy4uZTc2OWU0NmFlMjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViYXVkaW8vQXVkaW9CYXNpY0luc3BlY3Rvck5vZGUuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQmFzaWNJbnNwZWN0b3JOb2RlLmgKQEAgLTM0LDcg
KzM0LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgQXVkaW9CYXNpY0luc3BlY3Rvck5v
ZGUgOiBwdWJsaWMgQXVkaW9Ob2RlIHsKICAgICBXVEZfTUFLRV9JU09fQUxMT0NBVEVEKEF1ZGlv
QmFzaWNJbnNwZWN0b3JOb2RlKTsKIHB1YmxpYzoKLSAgICBBdWRpb0Jhc2ljSW5zcGVjdG9yTm9k
ZShBdWRpb0NvbnRleHQmLCBmbG9hdCBzYW1wbGVSYXRlLCB1bnNpZ25lZCBvdXRwdXRDaGFubmVs
Q291bnQpOworICAgIEF1ZGlvQmFzaWNJbnNwZWN0b3JOb2RlKEF1ZGlvQ29udGV4dEJhc2UmLCBm
bG9hdCBzYW1wbGVSYXRlLCB1bnNpZ25lZCBvdXRwdXRDaGFubmVsQ291bnQpOwogCiBwcml2YXRl
OgogICAgIHZvaWQgcHVsbElucHV0cyhzaXplX3QgZnJhbWVzVG9Qcm9jZXNzKSBvdmVycmlkZTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9CYXNpY1By
b2Nlc3Nvck5vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0Jh
c2ljUHJvY2Vzc29yTm9kZS5jcHAKaW5kZXggMGI5ZjFjZWQ4NzQuLmY3Yjc5NmJlNTU1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQmFzaWNQcm9jZXNz
b3JOb2RlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQmFz
aWNQcm9jZXNzb3JOb2RlLmNwcApAQCAtMzksNyArMzksNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKIFdURl9NQUtFX0lTT19BTExPQ0FURURfSU1QTChBdWRpb0Jhc2ljUHJvY2Vzc29yTm9kZSk7
CiAKLUF1ZGlvQmFzaWNQcm9jZXNzb3JOb2RlOjpBdWRpb0Jhc2ljUHJvY2Vzc29yTm9kZShBdWRp
b0NvbnRleHQmIGNvbnRleHQsIGZsb2F0IHNhbXBsZVJhdGUpCitBdWRpb0Jhc2ljUHJvY2Vzc29y
Tm9kZTo6QXVkaW9CYXNpY1Byb2Nlc3Nvck5vZGUoQXVkaW9Db250ZXh0QmFzZSYgY29udGV4dCwg
ZmxvYXQgc2FtcGxlUmF0ZSkKICAgICA6IEF1ZGlvTm9kZShjb250ZXh0LCBzYW1wbGVSYXRlKQog
ewogICAgIGFkZElucHV0KG1ha2VVbmlxdWU8QXVkaW9Ob2RlSW5wdXQ+KHRoaXMpKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9CYXNpY1Byb2Nlc3Nv
ck5vZGUuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9CYXNpY1Byb2Nl
c3Nvck5vZGUuaAppbmRleCA4MmNmZmRhNTlmMi4uZTE2MzczYmYwMjkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9CYXNpY1Byb2Nlc3Nvck5vZGUuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQmFzaWNQcm9jZXNzb3JO
b2RlLmgKQEAgLTM3LDcgKzM3LDcgQEAgY2xhc3MgQXVkaW9Qcm9jZXNzb3I7CiBjbGFzcyBBdWRp
b0Jhc2ljUHJvY2Vzc29yTm9kZSA6IHB1YmxpYyBBdWRpb05vZGUgewogICAgIFdURl9NQUtFX0lT
T19BTExPQ0FURUQoQXVkaW9CYXNpY1Byb2Nlc3Nvck5vZGUpOwogcHVibGljOgotICAgIEF1ZGlv
QmFzaWNQcm9jZXNzb3JOb2RlKEF1ZGlvQ29udGV4dCYsIGZsb2F0IHNhbXBsZVJhdGUpOworICAg
IEF1ZGlvQmFzaWNQcm9jZXNzb3JOb2RlKEF1ZGlvQ29udGV4dEJhc2UmLCBmbG9hdCBzYW1wbGVS
YXRlKTsKIAogICAgIC8vIEF1ZGlvTm9kZQogICAgIHZvaWQgcHJvY2VzcyhzaXplX3QgZnJhbWVz
VG9Qcm9jZXNzKSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViYXVkaW8vQXVkaW9CdWZmZXJTb3VyY2VOb2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViYXVkaW8vQXVkaW9CdWZmZXJTb3VyY2VOb2RlLmNwcAppbmRleCBjMzY2MWRlNTdkNy4u
MGMxYmE0ZTk0YTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8v
QXVkaW9CdWZmZXJTb3VyY2VOb2RlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmF1ZGlvL0F1ZGlvQnVmZmVyU291cmNlTm9kZS5jcHAKQEAgLTQ5LDEyICs0OSwxMiBAQCBjb25z
dCBkb3VibGUgRGVmYXVsdEdyYWluRHVyYXRpb24gPSAwLjAyMDsgLy8gMjBtcwogLy8gdG8gbWlu
aW1pemUgbGluZWFyIGludGVycG9sYXRpb24gYWxpYXNpbmcuCiBjb25zdCBkb3VibGUgTWF4UmF0
ZSA9IDEwMjQ7CiAKLVJlZjxBdWRpb0J1ZmZlclNvdXJjZU5vZGU+IEF1ZGlvQnVmZmVyU291cmNl
Tm9kZTo6Y3JlYXRlKEF1ZGlvQ29udGV4dCYgY29udGV4dCwgZmxvYXQgc2FtcGxlUmF0ZSkKK1Jl
ZjxBdWRpb0J1ZmZlclNvdXJjZU5vZGU+IEF1ZGlvQnVmZmVyU291cmNlTm9kZTo6Y3JlYXRlKEF1
ZGlvQ29udGV4dEJhc2UmIGNvbnRleHQsIGZsb2F0IHNhbXBsZVJhdGUpCiB7CiAgICAgcmV0dXJu
IGFkb3B0UmVmKCpuZXcgQXVkaW9CdWZmZXJTb3VyY2VOb2RlKGNvbnRleHQsIHNhbXBsZVJhdGUp
KTsKIH0KIAotQXVkaW9CdWZmZXJTb3VyY2VOb2RlOjpBdWRpb0J1ZmZlclNvdXJjZU5vZGUoQXVk
aW9Db250ZXh0JiBjb250ZXh0LCBmbG9hdCBzYW1wbGVSYXRlKQorQXVkaW9CdWZmZXJTb3VyY2VO
b2RlOjpBdWRpb0J1ZmZlclNvdXJjZU5vZGUoQXVkaW9Db250ZXh0QmFzZSYgY29udGV4dCwgZmxv
YXQgc2FtcGxlUmF0ZSkKICAgICA6IEF1ZGlvU2NoZWR1bGVkU291cmNlTm9kZShjb250ZXh0LCBz
YW1wbGVSYXRlKQogICAgICwgbV9idWZmZXIobnVsbHB0cikKICAgICAsIG1faXNMb29waW5nKGZh
bHNlKQpAQCAtNDEzLDcgKzQxMyw3IEBAIHZvaWQgQXVkaW9CdWZmZXJTb3VyY2VOb2RlOjpzZXRC
dWZmZXIoUmVmUHRyPEF1ZGlvQnVmZmVyPiYmIGJ1ZmZlcikKICAgICBERUJVR19MT0coTE9HSURF
TlRJRklFUik7CiAKICAgICAvLyBUaGUgY29udGV4dCBtdXN0IGJlIGxvY2tlZCBzaW5jZSBjaGFu
Z2luZyB0aGUgYnVmZmVyIGNhbiByZS1jb25maWd1cmUgdGhlIG51bWJlciBvZiBjaGFubmVscyB0
aGF0IGFyZSBvdXRwdXQuCi0gICAgQXVkaW9Db250ZXh0OjpBdXRvTG9ja2VyIGNvbnRleHRMb2Nr
ZXIoY29udGV4dCgpKTsKKyAgICBBdWRpb0NvbnRleHRCYXNlOjpBdXRvTG9ja2VyIGNvbnRleHRM
b2NrZXIoY29udGV4dCgpKTsKICAgICAKICAgICAvLyBUaGlzIHN5bmNocm9uaXplcyB3aXRoIHBy
b2Nlc3MoKS4KICAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG1fcHJvY2Vzc011dGV4KTsKQEAg
LTU1Nyw3ICs1NTcsNyBAQCBib29sIEF1ZGlvQnVmZmVyU291cmNlTm9kZTo6cHJvcGFnYXRlc1Np
bGVuY2UoKSBjb25zdAogICAgIHJldHVybiAhaXNQbGF5aW5nT3JTY2hlZHVsZWQoKSB8fCBoYXNG
aW5pc2hlZCgpIHx8ICFtX2J1ZmZlcjsKIH0KIAotdm9pZCBBdWRpb0J1ZmZlclNvdXJjZU5vZGU6
OnNldFBhbm5lck5vZGUoUGFubmVyTm9kZSogcGFubmVyTm9kZSkKK3ZvaWQgQXVkaW9CdWZmZXJT
b3VyY2VOb2RlOjpzZXRQYW5uZXJOb2RlKFBhbm5lck5vZGVCYXNlKiBwYW5uZXJOb2RlKQogewog
ICAgIGlmIChtX3Bhbm5lck5vZGUgIT0gcGFubmVyTm9kZSAmJiAhaGFzRmluaXNoZWQoKSkgewog
ICAgICAgICBpZiAocGFubmVyTm9kZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViYXVkaW8vQXVkaW9CdWZmZXJTb3VyY2VOb2RlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmF1ZGlvL0F1ZGlvQnVmZmVyU291cmNlTm9kZS5oCmluZGV4IDU0OGIyNmU3ZmE3Li42
MDExMzExOTlhNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9B
dWRpb0J1ZmZlclNvdXJjZU5vZGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1
ZGlvL0F1ZGlvQnVmZmVyU291cmNlTm9kZS5oCkBAIC0zMSw3ICszMSw3IEBACiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKIGNsYXNzIEF1ZGlvQnVmZmVyOwotY2xhc3MgUGFubmVyTm9kZTsKK2NsYXNz
IFBhbm5lck5vZGVCYXNlOwogCiAvLyBBdWRpb0J1ZmZlclNvdXJjZU5vZGUgaXMgYW4gQXVkaW9O
b2RlIHJlcHJlc2VudGluZyBhbiBhdWRpbyBzb3VyY2UgZnJvbSBhbiBpbi1tZW1vcnkgYXVkaW8g
YXNzZXQgcmVwcmVzZW50ZWQgYnkgYW4gQXVkaW9CdWZmZXIuCiAvLyBJdCBnZW5lcmFsbHkgd2ls
bCBiZSB1c2VkIGZvciBzaG9ydCBzb3VuZHMgd2hpY2ggcmVxdWlyZSBhIGhpZ2ggZGVncmVlIG9m
IHNjaGVkdWxpbmcgZmxleGliaWxpdHkgKGNhbiBwbGF5YmFjayBpbiByaHl0aG1pY2FsbHkgcGVy
ZmVjdCB3YXlzKS4KQEAgLTM5LDcgKzM5LDcgQEAgY2xhc3MgUGFubmVyTm9kZTsKIGNsYXNzIEF1
ZGlvQnVmZmVyU291cmNlTm9kZSBmaW5hbCA6IHB1YmxpYyBBdWRpb1NjaGVkdWxlZFNvdXJjZU5v
ZGUgewogICAgIFdURl9NQUtFX0lTT19BTExPQ0FURUQoQXVkaW9CdWZmZXJTb3VyY2VOb2RlKTsK
IHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPEF1ZGlvQnVmZmVyU291cmNlTm9kZT4gY3JlYXRlKEF1
ZGlvQ29udGV4dCYsIGZsb2F0IHNhbXBsZVJhdGUpOworICAgIHN0YXRpYyBSZWY8QXVkaW9CdWZm
ZXJTb3VyY2VOb2RlPiBjcmVhdGUoQXVkaW9Db250ZXh0QmFzZSYsIGZsb2F0IHNhbXBsZVJhdGUp
OwogCiAgICAgdmlydHVhbCB+QXVkaW9CdWZmZXJTb3VyY2VOb2RlKCk7CiAKQEAgLTc5LDcgKzc5
LDcgQEAgcHVibGljOgogICAgIEF1ZGlvUGFyYW0qIHBsYXliYWNrUmF0ZSgpIHsgcmV0dXJuIG1f
cGxheWJhY2tSYXRlLmdldCgpOyB9CiAKICAgICAvLyBJZiBhIHBhbm5lciBub2RlIGlzIHNldCwg
dGhlbiB3ZSBjYW4gaW5jb3Jwb3JhdGUgZG9wcGxlciBzaGlmdCBpbnRvIHRoZSBwbGF5YmFjayBw
aXRjaCByYXRlLgotICAgIHZvaWQgc2V0UGFubmVyTm9kZShQYW5uZXJOb2RlKik7CisgICAgdm9p
ZCBzZXRQYW5uZXJOb2RlKFBhbm5lck5vZGVCYXNlKik7CiAgICAgdm9pZCBjbGVhclBhbm5lck5v
ZGUoKTsKIAogICAgIC8vIElmIHdlIGFyZSBubyBsb25nZXIgcGxheWluZywgcHJvcG9nYXRlIHNp
bGVuY2UgYWhlYWQgdG8gZG93bnN0cmVhbSBub2Rlcy4KQEAgLTkxLDcgKzkxLDcgQEAgcHVibGlj
OgogICAgIGNvbnN0IGNoYXIqIGFjdGl2ZURPTU9iamVjdE5hbWUoKSBjb25zdCBvdmVycmlkZSB7
IHJldHVybiAiQXVkaW9CdWZmZXJTb3VyY2VOb2RlIjsgfQogCiBwcml2YXRlOgotICAgIEF1ZGlv
QnVmZmVyU291cmNlTm9kZShBdWRpb0NvbnRleHQmLCBmbG9hdCBzYW1wbGVSYXRlKTsKKyAgICBB
dWRpb0J1ZmZlclNvdXJjZU5vZGUoQXVkaW9Db250ZXh0QmFzZSYsIGZsb2F0IHNhbXBsZVJhdGUp
OwogCiAgICAgZG91YmxlIHRhaWxUaW1lKCkgY29uc3QgZmluYWwgeyByZXR1cm4gMDsgfQogICAg
IGRvdWJsZSBsYXRlbmN5VGltZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIDA7IH0KQEAgLTE0NSw3
ICsxNDUsNyBAQCBwcml2YXRlOgogCiAgICAgLy8gV2Ugb3B0aW9uYWxseSBrZWVwIHRyYWNrIG9m
IGEgcGFubmVyIG5vZGUgd2hpY2ggaGFzIGEgZG9wcGxlciBzaGlmdCB0aGF0IGlzIGluY29ycG9y
YXRlZCBpbnRvCiAgICAgLy8gdGhlIHBpdGNoIHJhdGUuIFdlIG1hbnVhbGx5IG1hbmFnZSByZWYt
Y291bnRpbmcgYmVjYXVzZSB3ZSB3YW50IHRvIHVzZSBSZWZUeXBlQ29ubmVjdGlvbi4KLSAgICBQ
YW5uZXJOb2RlKiBtX3Bhbm5lck5vZGU7CisgICAgUGFubmVyTm9kZUJhc2UqIG1fcGFubmVyTm9k
ZTsKIAogICAgIC8vIFRoaXMgc3luY2hyb25pemVzIHByb2Nlc3MoKSB3aXRoIHNldEJ1ZmZlcigp
IHdoaWNoIGNhbiBjYXVzZSBkeW5hbWljIGNoYW5uZWwgY291bnQgY2hhbmdlcy4KICAgICBtdXRh
YmxlIExvY2sgbV9wcm9jZXNzTXV0ZXg7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmF1ZGlvL0F1ZGlvQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmF1ZGlvL0F1ZGlvQ29udGV4dC5jcHAKaW5kZXggMzgyZGM3Y2YwY2QuLjRkYTBhMTQyMTFlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQ29udGV4dC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0NvbnRleHQuY3Bw
CkBAIC0xMDcsNyArMTA3LDcgQEAgY29uc3QgdW5zaWduZWQgTWF4UGVyaW9kaWNXYXZlTGVuZ3Ro
ID0gNDA5NjsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1XVEZfTUFLRV9JU09fQUxMT0NBVEVE
X0lNUEwoQXVkaW9Db250ZXh0KTsKK1dURl9NQUtFX0lTT19BTExPQ0FURURfSU1QTChBdWRpb0Nv
bnRleHRCYXNlKTsKIAogI2RlZmluZSBSRUxFQVNFX0xPR19JRl9BTExPV0VEKGZtdCwgLi4uKSBS
RUxFQVNFX0xPR19JRihkb2N1bWVudCgpICYmIGRvY3VtZW50KCktPnBhZ2UoKSAmJiBkb2N1bWVu
dCgpLT5wYWdlKCktPmlzQWx3YXlzT25Mb2dnaW5nQWxsb3dlZCgpLCBNZWRpYSwgIiVwIC0gQXVk
aW9Db250ZXh0OjoiIGZtdCwgdGhpcywgIyNfX1ZBX0FSR1NfXykKICAgICAKQEAgLTEzNyw5ICsx
MzcsMTQgQEAgRXhjZXB0aW9uT3I8UmVmPEF1ZGlvQ29udGV4dD4+IEF1ZGlvQ29udGV4dDo6Y3Jl
YXRlKERvY3VtZW50JiBkb2N1bWVudCkKICAgICByZXR1cm4gYXVkaW9Db250ZXh0OwogfQogCitB
dWRpb0NvbnRleHRCYXNlOjpBdWRpb0NvbnRleHRCYXNlKERvY3VtZW50JiBkb2N1bWVudCkKKyAg
ICA6IEFjdGl2ZURPTU9iamVjdChkb2N1bWVudCkKK3sKK30KKwogLy8gQ29uc3RydWN0b3IgZm9y
IHJlbmRlcmluZyB0byB0aGUgYXVkaW8gaGFyZHdhcmUuCiBBdWRpb0NvbnRleHQ6OkF1ZGlvQ29u
dGV4dChEb2N1bWVudCYgZG9jdW1lbnQpCi0gICAgOiBBY3RpdmVET01PYmplY3QoZG9jdW1lbnQp
CisgICAgOiBBdWRpb0NvbnRleHRCYXNlKGRvY3VtZW50KQogI2lmICFSRUxFQVNFX0xPR19ESVNB
QkxFRAogICAgICwgbV9sb2dnZXIoZG9jdW1lbnQubG9nZ2VyKCkpCiAgICAgLCBtX2xvZ0lkZW50
aWZpZXIodW5pcXVlTG9nSWRlbnRpZmllcigpKQpAQCAtMTY0LDcgKzE2OSw3IEBAIEF1ZGlvQ29u
dGV4dDo6QXVkaW9Db250ZXh0KERvY3VtZW50JiBkb2N1bWVudCkKIAogLy8gQ29uc3RydWN0b3Ig
Zm9yIG9mZmxpbmUgKG5vbi1yZWFsdGltZSkgcmVuZGVyaW5nLgogQXVkaW9Db250ZXh0OjpBdWRp
b0NvbnRleHQoRG9jdW1lbnQmIGRvY3VtZW50LCBBdWRpb0J1ZmZlciogcmVuZGVyVGFyZ2V0KQot
ICAgIDogQWN0aXZlRE9NT2JqZWN0KGRvY3VtZW50KQorICAgIDogQXVkaW9Db250ZXh0QmFzZShk
b2N1bWVudCkKICNpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKICAgICAsIG1fbG9nZ2VyKGRvY3Vt
ZW50LmxvZ2dlcigpKQogICAgICwgbV9sb2dJZGVudGlmaWVyKHVuaXF1ZUxvZ0lkZW50aWZpZXIo
KSkKQEAgLTM2Niw3ICszNzEsNyBAQCBjb25zdCBjaGFyKiBBdWRpb0NvbnRleHQ6OmFjdGl2ZURP
TU9iamVjdE5hbWUoKSBjb25zdAogICAgIHJldHVybiAiQXVkaW9Db250ZXh0IjsKIH0KIAotRG9j
dW1lbnQqIEF1ZGlvQ29udGV4dDo6ZG9jdW1lbnQoKSBjb25zdAorRG9jdW1lbnQqIEF1ZGlvQ29u
dGV4dEJhc2U6OmRvY3VtZW50KCkgY29uc3QKIHsKICAgICByZXR1cm4gZG93bmNhc3Q8RG9jdW1l
bnQ+KG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dCk7CiB9CkBAIC0xMDY4LDcgKzEwNzMsNyBAQCB2
b2lkIEF1ZGlvQ29udGV4dDo6cHJvY2Vzc0F1dG9tYXRpY1B1bGxOb2RlcyhzaXplX3QgZnJhbWVz
VG9Qcm9jZXNzKQogICAgICAgICBub2RlLT5wcm9jZXNzSWZOZWNlc3NhcnkoZnJhbWVzVG9Qcm9j
ZXNzKTsKIH0KIAotU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogQXVkaW9Db250ZXh0OjpzY3JpcHRF
eGVjdXRpb25Db250ZXh0KCkgY29uc3QKK1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIEF1ZGlvQ29u
dGV4dEJhc2U6OnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSBjb25zdAogewogICAgIHJldHVybiBB
Y3RpdmVET01PYmplY3Q6OnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0LmggYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQ29udGV4dC5oCmluZGV4IDhlMDk0Mzk0Y2Zm
Li5kNTNhM2ViOThiOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRp
by9BdWRpb0NvbnRleHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1
ZGlvQ29udGV4dC5oCkBAIC0yOCw2ICsyOCw3IEBACiAjaW5jbHVkZSAiQWN0aXZlRE9NT2JqZWN0
LmgiCiAjaW5jbHVkZSAiQXN5bmNBdWRpb0RlY29kZXIuaCIKICNpbmNsdWRlICJBdWRpb0J1cy5o
IgorI2luY2x1ZGUgIkF1ZGlvQ29udGV4dFN0YXRlLmgiCiAjaW5jbHVkZSAiQXVkaW9EZXN0aW5h
dGlvbk5vZGUuaCIKICNpbmNsdWRlICJFdmVudFRhcmdldC5oIgogI2luY2x1ZGUgIk1lZGlhQ2Fu
U3RhcnRMaXN0ZW5lci5oIgpAQCAtNzksNDQgKzgwLDEzNSBAQCBjbGFzcyBXYXZlU2hhcGVyTm9k
ZTsKIAogdGVtcGxhdGU8dHlwZW5hbWUgSURMVHlwZT4gY2xhc3MgRE9NUHJvbWlzZURlZmVycmVk
OwogCi0vLyBBdWRpb0NvbnRleHQgaXMgdGhlIGNvcm5lcnN0b25lIG9mIHRoZSB3ZWIgYXVkaW8g
QVBJIGFuZCBhbGwgQXVkaW9Ob2RlcyBhcmUgY3JlYXRlZCBmcm9tIGl0LgotLy8gRm9yIHRocmVh
ZCBzYWZldHkgYmV0d2VlbiB0aGUgYXVkaW8gdGhyZWFkIGFuZCB0aGUgbWFpbiB0aHJlYWQsIGl0
IGhhcyBhIHJlbmRlcmluZyBncmFwaCBsb2NraW5nIG1lY2hhbmlzbS4gCi0KLWNsYXNzIEF1ZGlv
Q29udGV4dAorY2xhc3MgQXVkaW9Db250ZXh0QmFzZQogICAgIDogcHVibGljIEFjdGl2ZURPTU9i
amVjdAogICAgICwgcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPEF1ZGlvQ29udGV4dD4KICAg
ICAsIHB1YmxpYyBFdmVudFRhcmdldFdpdGhJbmxpbmVEYXRhCiAgICAgLCBwdWJsaWMgTWVkaWFD
YW5TdGFydExpc3RlbmVyCiAgICAgLCBwdWJsaWMgTWVkaWFQcm9kdWNlcgotICAgICwgcHJpdmF0
ZSBQbGF0Zm9ybU1lZGlhU2Vzc2lvbkNsaWVudAotICAgICwgcHJpdmF0ZSBWaXNpYmlsaXR5Q2hh
bmdlQ2xpZW50CiAjaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECi0gICAgLCBwcml2YXRlIExvZ2dl
ckhlbHBlcgorICAgICwgcHVibGljIExvZ2dlckhlbHBlcgorI2VuZGlmCit7CisgICAgV1RGX01B
S0VfSVNPX0FMTE9DQVRFRChBdWRpb0NvbnRleHRCYXNlKTsKK3B1YmxpYzoKKyAgICB2aXJ0dWFs
IH5BdWRpb0NvbnRleHRCYXNlKCkgPSBkZWZhdWx0OworCisgICAgLy8gUmVjb25jaWxlIHJlZi9k
ZXJlZiB3aGljaCBhcmUgZGVmaW5lZCBib3RoIGluIFRocmVhZFNhZmVSZWZDb3VudGVkIGFuZCBF
dmVudFRhcmdldC4KKyAgICB1c2luZyBUaHJlYWRTYWZlUmVmQ291bnRlZDo6cmVmOworICAgIHVz
aW5nIFRocmVhZFNhZmVSZWZDb3VudGVkOjpkZXJlZjsKKworICAgIERvY3VtZW50KiBkb2N1bWVu
dCgpIGNvbnN0OworCisgICAgdmlydHVhbCBib29sIGlzSW5pdGlhbGl6ZWQoKSBjb25zdCA9IDA7
CisKKyAgICB2aXJ0dWFsIHNpemVfdCBjdXJyZW50U2FtcGxlRnJhbWUoKSBjb25zdCA9IDA7Cisg
ICAgdmlydHVhbCBmbG9hdCBzYW1wbGVSYXRlKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgZG91
YmxlIGN1cnJlbnRUaW1lKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgYm9vbCBpc0dyYXBoT3du
ZXIoKSBjb25zdCA9IDA7CisKKyAgICB2aXJ0dWFsIHZvaWQgc2V0QXVkaW9UaHJlYWQoVGhyZWFk
JikgPSAwOworICAgIHZpcnR1YWwgYm9vbCBpc0F1ZGlvVGhyZWFkKCkgY29uc3QgPSAwOworICAg
IHZpcnR1YWwgYm9vbCBpc0F1ZGlvVGhyZWFkRmluaXNoZWQoKSA9IDA7CisKKyAgICB2aXJ0dWFs
IHZvaWQgaXNQbGF5aW5nQXVkaW9EaWRDaGFuZ2UoKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIG5v
ZGVXaWxsQmVnaW5QbGF5YmFjaygpID0gMDsKKworICAgIHZpcnR1YWwgdm9pZCBwb3N0VGFzayhX
VEY6OkZ1bmN0aW9uPHZvaWQoKT4mJikgPSAwOworICAgIHZpcnR1YWwgYm9vbCBpc1N0b3BwZWQo
KSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBjb25zdCBTZWN1cml0eU9yaWdpbiogb3JpZ2luKCkg
Y29uc3QgPSAwOworICAgIHZpcnR1YWwgdm9pZCBhZGRDb25zb2xlTWVzc2FnZShNZXNzYWdlU291
cmNlLCBNZXNzYWdlTGV2ZWwsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSkgPSAwOworCisgICAgdmly
dHVhbCB2b2lkIG1hcmtGb3JEZWxldGlvbihBdWRpb05vZGUmKSA9IDA7CisgICAgdmlydHVhbCB2
b2lkIGRlbGV0ZU1hcmtlZE5vZGVzKCkgPSAwOworCisgICAgdmlydHVhbCB2b2lkIGhhbmRsZVBy
ZVJlbmRlclRhc2tzKCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBoYW5kbGVQb3N0UmVuZGVyVGFz
a3MoKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHByb2Nlc3NBdXRvbWF0aWNQdWxsTm9kZXMoc2l6
ZV90IGZyYW1lc1RvUHJvY2VzcykgPSAwOworICAgIHZpcnR1YWwgdm9pZCBhZGREZWZlcnJlZEZp
bmlzaERlcmVmKEF1ZGlvTm9kZSopID0gMDsKKworICAgIHZpcnR1YWwgdm9pZCByZW1vdmVNYXJr
ZWRTdW1taW5nSnVuY3Rpb24oQXVkaW9TdW1taW5nSnVuY3Rpb24qKSA9IDA7CisgICAgdmlydHVh
bCB2b2lkIG1hcmtTdW1taW5nSnVuY3Rpb25EaXJ0eShBdWRpb1N1bW1pbmdKdW5jdGlvbiopID0g
MDsKKyAgICB2aXJ0dWFsIHZvaWQgbWFya0F1ZGlvTm9kZU91dHB1dERpcnR5KEF1ZGlvTm9kZU91
dHB1dCopID0gMDsKKworI2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRAorICAgIHZpcnR1YWwgY29u
c3Qgdm9pZCogbmV4dEF1ZGlvTm9kZUxvZ0lkZW50aWZpZXIoKSA9IDA7CisgICAgdmlydHVhbCBj
b25zdCB2b2lkKiBuZXh0QXVkaW9QYXJhbWV0ZXJMb2dJZGVudGlmaWVyKCkgPSAwOwogI2VuZGlm
CisKKyAgICB2aXJ0dWFsIHZvaWQgYWRkQXV0b21hdGljUHVsbE5vZGUoQXVkaW9Ob2RlJikgPSAw
OworICAgIHZpcnR1YWwgdm9pZCByZW1vdmVBdXRvbWF0aWNQdWxsTm9kZShBdWRpb05vZGUmKSA9
IDA7CisKKyAgICB2aXJ0dWFsIHZvaWQgbm90aWZ5Tm9kZUZpbmlzaGVkUHJvY2Vzc2luZyhBdWRp
b05vZGUqKSA9IDA7CisKKyAgICB2aXJ0dWFsIHZvaWQgZmluaXNoZWRSZW5kZXJpbmcoYm9vbCBk
aWRSZW5kZXJpbmcpID0gMDsKKworICAgIHZpcnR1YWwgdm9pZCBpbmNyZW1lbnRDb25uZWN0aW9u
Q291bnQoKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGluY3JlbWVudEFjdGl2ZVNvdXJjZUNvdW50
KCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBkZWNyZW1lbnRBY3RpdmVTb3VyY2VDb3VudCgpID0g
MDsKKworICAgIHZpcnR1YWwgYm9vbCBpc0F1ZGlvQ29udGV4dCgpIGNvbnN0ID0gMDsKKyAgICB2
aXJ0dWFsIGJvb2wgaXNXZWJLaXRBdWRpb0NvbnRleHQoKSBjb25zdCA9IDA7CisKKyAgICAvLyBt
dXN0UmVsZWFzZUxvY2sgaXMgc2V0IHRvIHRydWUgaWYgd2UgYWNxdWlyZWQgdGhlIGxvY2sgaW4g
dGhpcyBtZXRob2QgY2FsbCBhbmQgY2FsbGVyIG11c3QgdW5sb2NrKCksIGZhbHNlIGlmIGl0IHdh
cyBwcmV2aW91c2x5IGFjcXVpcmVkLgorICAgIHZpcnR1YWwgdm9pZCBsb2NrKGJvb2wmIG11c3RS
ZWxlYXNlTG9jaykgPSAwOworICAgIHZpcnR1YWwgYm9vbCB0cnlMb2NrKGJvb2wmIG11c3RSZWxl
YXNlTG9jaykgPSAwOworICAgIHZpcnR1YWwgdm9pZCB1bmxvY2soKSA9IDA7CisKKyAgICBjbGFz
cyBBdXRvTG9ja2VyIHsKKyAgICBwdWJsaWM6CisgICAgICAgIGV4cGxpY2l0IEF1dG9Mb2NrZXIo
QXVkaW9Db250ZXh0QmFzZSYgY29udGV4dCkKKyAgICAgICAgICAgIDogbV9jb250ZXh0KGNvbnRl
eHQpCisgICAgICAgIHsKKyAgICAgICAgICAgIG1fY29udGV4dC5sb2NrKG1fbXVzdFJlbGVhc2VM
b2NrKTsKKyAgICAgICAgfQorCisgICAgICAgIH5BdXRvTG9ja2VyKCkKKyAgICAgICAgeworICAg
ICAgICAgICAgaWYgKG1fbXVzdFJlbGVhc2VMb2NrKQorICAgICAgICAgICAgICAgIG1fY29udGV4
dC51bmxvY2soKTsKKyAgICAgICAgfQorCisgICAgcHJpdmF0ZToKKyAgICAgICAgQXVkaW9Db250
ZXh0QmFzZSYgbV9jb250ZXh0OworICAgICAgICBib29sIG1fbXVzdFJlbGVhc2VMb2NrOworICAg
IH07CisKKyAgICAvLyBFdmVudFRhcmdldAorICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQoKSBjb25zdCBmaW5hbDsKKworcHJvdGVjdGVkOgorICAgIGV4
cGxpY2l0IEF1ZGlvQ29udGV4dEJhc2UoRG9jdW1lbnQmKTsKK307CisKKy8vIEF1ZGlvQ29udGV4
dCBpcyB0aGUgY29ybmVyc3RvbmUgb2YgdGhlIHdlYiBhdWRpbyBBUEkgYW5kIGFsbCBBdWRpb05v
ZGVzIGFyZSBjcmVhdGVkIGZyb20gaXQuCisvLyBGb3IgdGhyZWFkIHNhZmV0eSBiZXR3ZWVuIHRo
ZSBhdWRpbyB0aHJlYWQgYW5kIHRoZSBtYWluIHRocmVhZCwgaXQgaGFzIGEgcmVuZGVyaW5nIGdy
YXBoIGxvY2tpbmcgbWVjaGFuaXNtLiAKKworY2xhc3MgQXVkaW9Db250ZXh0CisgICAgOiBwdWJs
aWMgQXVkaW9Db250ZXh0QmFzZQorICAgICwgcHJpdmF0ZSBQbGF0Zm9ybU1lZGlhU2Vzc2lvbkNs
aWVudAorICAgICwgcHJpdmF0ZSBWaXNpYmlsaXR5Q2hhbmdlQ2xpZW50CiB7Ci0gICAgV1RGX01B
S0VfSVNPX0FMTE9DQVRFRChBdWRpb0NvbnRleHQpOwogcHVibGljOgogICAgIC8vIENyZWF0ZSBh
biBBdWRpb0NvbnRleHQgZm9yIHJlbmRlcmluZyB0byB0aGUgYXVkaW8gaGFyZHdhcmUuCiAgICAg
c3RhdGljIEV4Y2VwdGlvbk9yPFJlZjxBdWRpb0NvbnRleHQ+PiBjcmVhdGUoRG9jdW1lbnQmKTsK
IAogICAgIHZpcnR1YWwgfkF1ZGlvQ29udGV4dCgpOwogCi0gICAgYm9vbCBpc0luaXRpYWxpemVk
KCkgY29uc3Q7CisgICAgYm9vbCBpc0luaXRpYWxpemVkKCkgY29uc3QgZmluYWw7CiAgICAgCiAg
ICAgYm9vbCBpc09mZmxpbmVDb250ZXh0KCkgY29uc3QgeyByZXR1cm4gbV9pc09mZmxpbmVDb250
ZXh0OyB9CiAKLSAgICBEb2N1bWVudCogZG9jdW1lbnQoKSBjb25zdDsgLy8gQVNTRVJUcyBpZiBk
b2N1bWVudCBubyBsb25nZXIgZXhpc3RzLgotCiAgICAgRG9jdW1lbnRJZGVudGlmaWVyIGhvc3Rp
bmdEb2N1bWVudElkZW50aWZpZXIoKSBjb25zdCBmaW5hbDsKIAogICAgIEF1ZGlvRGVzdGluYXRp
b25Ob2RlKiBkZXN0aW5hdGlvbigpIHsgcmV0dXJuIG1fZGVzdGluYXRpb25Ob2RlLmdldCgpOyB9
Ci0gICAgc2l6ZV90IGN1cnJlbnRTYW1wbGVGcmFtZSgpIGNvbnN0IHsgcmV0dXJuIG1fZGVzdGlu
YXRpb25Ob2RlID8gbV9kZXN0aW5hdGlvbk5vZGUtPmN1cnJlbnRTYW1wbGVGcmFtZSgpIDogMDsg
fQotICAgIGRvdWJsZSBjdXJyZW50VGltZSgpIGNvbnN0IHsgcmV0dXJuIG1fZGVzdGluYXRpb25O
b2RlID8gbV9kZXN0aW5hdGlvbk5vZGUtPmN1cnJlbnRUaW1lKCkgOiAwLjsgfQotICAgIGZsb2F0
IHNhbXBsZVJhdGUoKSBjb25zdCB7IHJldHVybiBtX2Rlc3RpbmF0aW9uTm9kZSA/IG1fZGVzdGlu
YXRpb25Ob2RlLT5zYW1wbGVSYXRlKCkgOiAwLmY7IH0KKyAgICBzaXplX3QgY3VycmVudFNhbXBs
ZUZyYW1lKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9kZXN0aW5hdGlvbk5vZGUgPyBtX2Rlc3Rp
bmF0aW9uTm9kZS0+Y3VycmVudFNhbXBsZUZyYW1lKCkgOiAwOyB9CisgICAgZG91YmxlIGN1cnJl
bnRUaW1lKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9kZXN0aW5hdGlvbk5vZGUgPyBtX2Rlc3Rp
bmF0aW9uTm9kZS0+Y3VycmVudFRpbWUoKSA6IDAuOyB9CisgICAgZmxvYXQgc2FtcGxlUmF0ZSgp
IGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fZGVzdGluYXRpb25Ob2RlID8gbV9kZXN0aW5hdGlvbk5v
ZGUtPnNhbXBsZVJhdGUoKSA6IDAuZjsgfQogICAgIHVuc2lnbmVkIGxvbmcgYWN0aXZlU291cmNl
Q291bnQoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDx1bnNpZ25lZCBsb25nPihtX2FjdGl2
ZVNvdXJjZUNvdW50KTsgfQogCi0gICAgdm9pZCBpbmNyZW1lbnRBY3RpdmVTb3VyY2VDb3VudCgp
OwotICAgIHZvaWQgZGVjcmVtZW50QWN0aXZlU291cmNlQ291bnQoKTsKKyAgICB2b2lkIGluY3Jl
bWVudEFjdGl2ZVNvdXJjZUNvdW50KCkgZmluYWw7CisgICAgdm9pZCBkZWNyZW1lbnRBY3RpdmVT
b3VyY2VDb3VudCgpIGZpbmFsOwogICAgIAogICAgIEV4Y2VwdGlvbk9yPFJlZjxBdWRpb0J1ZmZl
cj4+IGNyZWF0ZUJ1ZmZlcih1bnNpZ25lZCBudW1iZXJPZkNoYW5uZWxzLCBzaXplX3QgbnVtYmVy
T2ZGcmFtZXMsIGZsb2F0IHNhbXBsZVJhdGUpOwogICAgIEV4Y2VwdGlvbk9yPFJlZjxBdWRpb0J1
ZmZlcj4+IGNyZWF0ZUJ1ZmZlcihBcnJheUJ1ZmZlciYsIGJvb2wgbWl4VG9Nb25vKTsKQEAgLTEz
MCw3ICsyMjIsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCByZXN1bWVSZW5kZXJpbmcoRE9NUHJvbWlz
ZURlZmVycmVkPHZvaWQ+JiYpOwogICAgIHZvaWQgY2xvc2UoRE9NUHJvbWlzZURlZmVycmVkPHZv
aWQ+JiYpOwogCi0gICAgZW51bSBjbGFzcyBTdGF0ZSB7IFN1c3BlbmRlZCwgUnVubmluZywgSW50
ZXJydXB0ZWQsIENsb3NlZCB9OworICAgIHVzaW5nIFN0YXRlID0gQXVkaW9Db250ZXh0U3RhdGU7
CiAgICAgU3RhdGUgc3RhdGUoKSBjb25zdDsKICAgICBib29sIGlzQ2xvc2VkKCkgY29uc3QgeyBy
ZXR1cm4gbV9zdGF0ZSA9PSBTdGF0ZTo6Q2xvc2VkOyB9CiAKQEAgLTE2MCwzMSArMjUyLDMxIEBA
IHB1YmxpYzoKICAgICBFeGNlcHRpb25PcjxSZWY8UGVyaW9kaWNXYXZlPj4gY3JlYXRlUGVyaW9k
aWNXYXZlKEZsb2F0MzJBcnJheSYgcmVhbCwgRmxvYXQzMkFycmF5JiBpbWFnaW5hcnkpOwogCiAg
ICAgLy8gV2hlbiBhIHNvdXJjZSBub2RlIGhhcyBubyBtb3JlIHByb2Nlc3NpbmcgdG8gZG8gKGhh
cyBmaW5pc2hlZCBwbGF5aW5nKSwgdGhlbiBpdCB0ZWxscyB0aGUgY29udGV4dCB0byBkZXJlZmVy
ZW5jZSBpdC4KLSAgICB2b2lkIG5vdGlmeU5vZGVGaW5pc2hlZFByb2Nlc3NpbmcoQXVkaW9Ob2Rl
Kik7CisgICAgdm9pZCBub3RpZnlOb2RlRmluaXNoZWRQcm9jZXNzaW5nKEF1ZGlvTm9kZSopIGZp
bmFsOwogCiAgICAgLy8gQ2FsbGVkIGF0IHRoZSBzdGFydCBvZiBlYWNoIHJlbmRlciBxdWFudHVt
LgotICAgIHZvaWQgaGFuZGxlUHJlUmVuZGVyVGFza3MoKTsKKyAgICB2b2lkIGhhbmRsZVByZVJl
bmRlclRhc2tzKCkgZmluYWw7CiAKICAgICAvLyBDYWxsZWQgYXQgdGhlIGVuZCBvZiBlYWNoIHJl
bmRlciBxdWFudHVtLgotICAgIHZvaWQgaGFuZGxlUG9zdFJlbmRlclRhc2tzKCk7CisgICAgdm9p
ZCBoYW5kbGVQb3N0UmVuZGVyVGFza3MoKSBmaW5hbDsKIAogICAgIC8vIENhbGxlZCBwZXJpb2Rp
Y2FsbHkgYXQgdGhlIGVuZCBvZiBlYWNoIHJlbmRlciBxdWFudHVtIHRvIGRlcmVmZXJlbmNlIGZp
bmlzaGVkIHNvdXJjZSBub2Rlcy4KICAgICB2b2lkIGRlcmVmRmluaXNoZWRTb3VyY2VOb2Rlcygp
OwogCiAgICAgLy8gV2Ugc2NoZWR1bGUgZGVsZXRpb24gb2YgYWxsIG1hcmtlZCBub2RlcyBhdCB0
aGUgZW5kIG9mIGVhY2ggcmVhbHRpbWUgcmVuZGVyIHF1YW50dW0uCi0gICAgdm9pZCBtYXJrRm9y
RGVsZXRpb24oQXVkaW9Ob2RlJik7Ci0gICAgdm9pZCBkZWxldGVNYXJrZWROb2RlcygpOworICAg
IHZvaWQgbWFya0ZvckRlbGV0aW9uKEF1ZGlvTm9kZSYpIGZpbmFsOworICAgIHZvaWQgZGVsZXRl
TWFya2VkTm9kZXMoKSBmaW5hbDsKIAogICAgIC8vIEF1ZGlvQ29udGV4dCBjYW4gcHVsbCBub2Rl
KHMpIGF0IHRoZSBlbmQgb2YgZWFjaCByZW5kZXIgcXVhbnR1bSBldmVuIHdoZW4gdGhleSBhcmUg
bm90IGNvbm5lY3RlZCB0byBhbnkgZG93bnN0cmVhbSBub2Rlcy4KICAgICAvLyBUaGVzZSB0d28g
bWV0aG9kcyBhcmUgY2FsbGVkIGJ5IHRoZSBub2RlcyB3aG8gd2FudCB0byBhZGQvcmVtb3ZlIHRo
ZW1zZWx2ZXMgaW50by9mcm9tIHRoZSBhdXRvbWF0aWMgcHVsbCBsaXN0cy4KLSAgICB2b2lkIGFk
ZEF1dG9tYXRpY1B1bGxOb2RlKEF1ZGlvTm9kZSYpOwotICAgIHZvaWQgcmVtb3ZlQXV0b21hdGlj
UHVsbE5vZGUoQXVkaW9Ob2RlJik7CisgICAgdm9pZCBhZGRBdXRvbWF0aWNQdWxsTm9kZShBdWRp
b05vZGUmKSBmaW5hbDsKKyAgICB2b2lkIHJlbW92ZUF1dG9tYXRpY1B1bGxOb2RlKEF1ZGlvTm9k
ZSYpIGZpbmFsOwogCiAgICAgLy8gQ2FsbGVkIHJpZ2h0IGJlZm9yZSBoYW5kbGVQb3N0UmVuZGVy
VGFza3MoKSB0byBoYW5kbGUgbm9kZXMgd2hpY2ggbmVlZCB0byBiZSBwdWxsZWQgZXZlbiB3aGVu
IHRoZXkgYXJlIG5vdCBjb25uZWN0ZWQgdG8gYW55dGhpbmcuCi0gICAgdm9pZCBwcm9jZXNzQXV0
b21hdGljUHVsbE5vZGVzKHNpemVfdCBmcmFtZXNUb1Byb2Nlc3MpOworICAgIHZvaWQgcHJvY2Vz
c0F1dG9tYXRpY1B1bGxOb2RlcyhzaXplX3QgZnJhbWVzVG9Qcm9jZXNzKSBmaW5hbDsKIAogICAg
IC8vIEtlZXBzIHRyYWNrIG9mIHRoZSBudW1iZXIgb2YgY29ubmVjdGlvbnMgbWFkZS4KLSAgICB2
b2lkIGluY3JlbWVudENvbm5lY3Rpb25Db3VudCgpCisgICAgdm9pZCBpbmNyZW1lbnRDb25uZWN0
aW9uQ291bnQoKSBmaW5hbAogICAgIHsKICAgICAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsK
ICAgICAgICAgbV9jb25uZWN0aW9uQ291bnQrKzsKQEAgLTE5Niw2OSArMjg4LDQ2IEBAIHB1Ymxp
YzoKICAgICAvLyBUaHJlYWQgU2FmZXR5IGFuZCBHcmFwaCBMb2NraW5nOgogICAgIC8vCiAgICAg
Ci0gICAgdm9pZCBzZXRBdWRpb1RocmVhZChUaHJlYWQmIHRocmVhZCkgeyBtX2F1ZGlvVGhyZWFk
ID0gJnRocmVhZDsgfSAvLyBGSVhNRTogY2hlY2sgZWl0aGVyIG5vdCBpbml0aWFsaXplZCBvciB0
aGUgc2FtZQorICAgIHZvaWQgc2V0QXVkaW9UaHJlYWQoVGhyZWFkJiB0aHJlYWQpIGZpbmFsIHsg
bV9hdWRpb1RocmVhZCA9ICZ0aHJlYWQ7IH0gLy8gRklYTUU6IGNoZWNrIGVpdGhlciBub3QgaW5p
dGlhbGl6ZWQgb3IgdGhlIHNhbWUKICAgICBUaHJlYWQqIGF1ZGlvVGhyZWFkKCkgY29uc3QgeyBy
ZXR1cm4gbV9hdWRpb1RocmVhZDsgfQotICAgIGJvb2wgaXNBdWRpb1RocmVhZCgpIGNvbnN0Owor
ICAgIGJvb2wgaXNBdWRpb1RocmVhZCgpIGNvbnN0IGZpbmFsOwogCiAgICAgLy8gUmV0dXJucyB0
cnVlIG9ubHkgYWZ0ZXIgdGhlIGF1ZGlvIHRocmVhZCBoYXMgYmVlbiBzdGFydGVkIGFuZCB0aGVu
IHNodXRkb3duLgotICAgIGJvb2wgaXNBdWRpb1RocmVhZEZpbmlzaGVkKCkgeyByZXR1cm4gbV9p
c0F1ZGlvVGhyZWFkRmluaXNoZWQ7IH0KKyAgICBib29sIGlzQXVkaW9UaHJlYWRGaW5pc2hlZCgp
IGZpbmFsIHsgcmV0dXJuIG1faXNBdWRpb1RocmVhZEZpbmlzaGVkOyB9CiAgICAgCiAgICAgLy8g
bXVzdFJlbGVhc2VMb2NrIGlzIHNldCB0byB0cnVlIGlmIHdlIGFjcXVpcmVkIHRoZSBsb2NrIGlu
IHRoaXMgbWV0aG9kIGNhbGwgYW5kIGNhbGxlciBtdXN0IHVubG9jaygpLCBmYWxzZSBpZiBpdCB3
YXMgcHJldmlvdXNseSBhY3F1aXJlZC4KLSAgICB2b2lkIGxvY2soYm9vbCYgbXVzdFJlbGVhc2VM
b2NrKTsKKyAgICB2b2lkIGxvY2soYm9vbCYgbXVzdFJlbGVhc2VMb2NrKSBmaW5hbDsKIAogICAg
IC8vIFJldHVybnMgdHJ1ZSBpZiB3ZSBvd24gdGhlIGxvY2suCiAgICAgLy8gbXVzdFJlbGVhc2VM
b2NrIGlzIHNldCB0byB0cnVlIGlmIHdlIGFjcXVpcmVkIHRoZSBsb2NrIGluIHRoaXMgbWV0aG9k
IGNhbGwgYW5kIGNhbGxlciBtdXN0IHVubG9jaygpLCBmYWxzZSBpZiBpdCB3YXMgcHJldmlvdXNs
eSBhY3F1aXJlZC4KLSAgICBib29sIHRyeUxvY2soYm9vbCYgbXVzdFJlbGVhc2VMb2NrKTsKKyAg
ICBib29sIHRyeUxvY2soYm9vbCYgbXVzdFJlbGVhc2VMb2NrKSBmaW5hbDsKIAotICAgIHZvaWQg
dW5sb2NrKCk7CisgICAgdm9pZCB1bmxvY2soKSBmaW5hbDsKIAogICAgIC8vIFJldHVybnMgdHJ1
ZSBpZiB0aGlzIHRocmVhZCBvd25zIHRoZSBjb250ZXh0J3MgbG9jay4KLSAgICBib29sIGlzR3Jh
cGhPd25lcigpIGNvbnN0OworICAgIGJvb2wgaXNHcmFwaE93bmVyKCkgY29uc3QgZmluYWw7CiAK
ICAgICAvLyBSZXR1cm5zIHRoZSBtYXhpbXVtIG51bWJlciBvZiBjaGFubmVscyB3ZSBjYW4gc3Vw
cG9ydC4KICAgICBzdGF0aWMgdW5zaWduZWQgbWF4TnVtYmVyT2ZDaGFubmVscygpIHsgcmV0dXJu
IE1heE51bWJlck9mQ2hhbm5lbHM7IH0KLQotICAgIGNsYXNzIEF1dG9Mb2NrZXIgewotICAgIHB1
YmxpYzoKLSAgICAgICAgZXhwbGljaXQgQXV0b0xvY2tlcihBdWRpb0NvbnRleHQmIGNvbnRleHQp
Ci0gICAgICAgICAgICA6IG1fY29udGV4dChjb250ZXh0KQotICAgICAgICB7Ci0gICAgICAgICAg
ICBtX2NvbnRleHQubG9jayhtX211c3RSZWxlYXNlTG9jayk7Ci0gICAgICAgIH0KLSAgICAgICAg
Ci0gICAgICAgIH5BdXRvTG9ja2VyKCkKLSAgICAgICAgewotICAgICAgICAgICAgaWYgKG1fbXVz
dFJlbGVhc2VMb2NrKQotICAgICAgICAgICAgICAgIG1fY29udGV4dC51bmxvY2soKTsKLSAgICAg
ICAgfQotCi0gICAgcHJpdmF0ZToKLSAgICAgICAgQXVkaW9Db250ZXh0JiBtX2NvbnRleHQ7Ci0g
ICAgICAgIGJvb2wgbV9tdXN0UmVsZWFzZUxvY2s7Ci0gICAgfTsKICAgICAKICAgICAvLyBJbiBB
dWRpb05vZGU6OmRlcmVmKCkgYSB0cnlMb2NrKCkgaXMgdXNlZCBmb3IgY2FsbGluZyBmaW5pc2hE
ZXJlZigpLCBidXQgaWYgaXQgZmFpbHMga2VlcCB0cmFjayBoZXJlLgotICAgIHZvaWQgYWRkRGVm
ZXJyZWRGaW5pc2hEZXJlZihBdWRpb05vZGUqKTsKKyAgICB2b2lkIGFkZERlZmVycmVkRmluaXNo
RGVyZWYoQXVkaW9Ob2RlKikgZmluYWw7CiAKICAgICAvLyBJbiB0aGUgYXVkaW8gdGhyZWFkIGF0
IHRoZSBzdGFydCBvZiBlYWNoIHJlbmRlciBjeWNsZSwgd2UnbGwgY2FsbCBoYW5kbGVEZWZlcnJl
ZEZpbmlzaERlcmVmcygpLgogICAgIHZvaWQgaGFuZGxlRGVmZXJyZWRGaW5pc2hEZXJlZnMoKTsK
IAogICAgIC8vIE9ubHkgYWNjZXNzZWQgd2hlbiB0aGUgZ3JhcGggbG9jayBpcyBoZWxkLgotICAg
IHZvaWQgbWFya1N1bW1pbmdKdW5jdGlvbkRpcnR5KEF1ZGlvU3VtbWluZ0p1bmN0aW9uKik7Ci0g
ICAgdm9pZCBtYXJrQXVkaW9Ob2RlT3V0cHV0RGlydHkoQXVkaW9Ob2RlT3V0cHV0Kik7CisgICAg
dm9pZCBtYXJrU3VtbWluZ0p1bmN0aW9uRGlydHkoQXVkaW9TdW1taW5nSnVuY3Rpb24qKSBmaW5h
bDsKKyAgICB2b2lkIG1hcmtBdWRpb05vZGVPdXRwdXREaXJ0eShBdWRpb05vZGVPdXRwdXQqKSBm
aW5hbDsKIAogICAgIC8vIE11c3QgYmUgY2FsbGVkIG9uIG1haW4gdGhyZWFkLgotICAgIHZvaWQg
cmVtb3ZlTWFya2VkU3VtbWluZ0p1bmN0aW9uKEF1ZGlvU3VtbWluZ0p1bmN0aW9uKik7CisgICAg
dm9pZCByZW1vdmVNYXJrZWRTdW1taW5nSnVuY3Rpb24oQXVkaW9TdW1taW5nSnVuY3Rpb24qKSBm
aW5hbDsKIAogICAgIC8vIEV2ZW50VGFyZ2V0CiAgICAgRXZlbnRUYXJnZXRJbnRlcmZhY2UgZXZl
bnRUYXJnZXRJbnRlcmZhY2UoKSBjb25zdCBmaW5hbCB7IHJldHVybiBBdWRpb0NvbnRleHRFdmVu
dFRhcmdldEludGVyZmFjZVR5cGU7IH0KIAotICAgIC8vIFJlY29uY2lsZSByZWYvZGVyZWYgd2hp
Y2ggYXJlIGRlZmluZWQgYm90aCBpbiBUaHJlYWRTYWZlUmVmQ291bnRlZCBhbmQgRXZlbnRUYXJn
ZXQuCi0gICAgdXNpbmcgVGhyZWFkU2FmZVJlZkNvdW50ZWQ6OnJlZjsKLSAgICB1c2luZyBUaHJl
YWRTYWZlUmVmQ291bnRlZDo6ZGVyZWY7Ci0KICAgICB2b2lkIHN0YXJ0UmVuZGVyaW5nKCk7Ci0g
ICAgdm9pZCBmaW5pc2hlZFJlbmRlcmluZyhib29sIGRpZFJlbmRlcmluZyk7CisgICAgdm9pZCBm
aW5pc2hlZFJlbmRlcmluZyhib29sIGRpZFJlbmRlcmluZykgZmluYWw7CiAKICAgICBzdGF0aWMg
dW5zaWduZWQgc19oYXJkd2FyZUNvbnRleHRDb3VudDsKIApAQCAtMjc0LDI1ICszNDMsMjIgQEAg
cHVibGljOgogICAgIHZvaWQgYWRkQmVoYXZpb3JSZXN0cmljdGlvbihCZWhhdmlvclJlc3RyaWN0
aW9ucyByZXN0cmljdGlvbikgeyBtX3Jlc3RyaWN0aW9ucyB8PSByZXN0cmljdGlvbjsgfQogICAg
IHZvaWQgcmVtb3ZlQmVoYXZpb3JSZXN0cmljdGlvbihCZWhhdmlvclJlc3RyaWN0aW9ucyByZXN0
cmljdGlvbikgeyBtX3Jlc3RyaWN0aW9ucyAmPSB+cmVzdHJpY3Rpb247IH0KIAotICAgIHZvaWQg
aXNQbGF5aW5nQXVkaW9EaWRDaGFuZ2UoKTsKKyAgICB2b2lkIGlzUGxheWluZ0F1ZGlvRGlkQ2hh
bmdlKCkgZmluYWw7CiAKLSAgICB2b2lkIG5vZGVXaWxsQmVnaW5QbGF5YmFjaygpOworICAgIHZv
aWQgbm9kZVdpbGxCZWdpblBsYXliYWNrKCkgZmluYWw7CiAKICNpZiAhUkVMRUFTRV9MT0dfRElT
QUJMRUQKICAgICBjb25zdCBMb2dnZXImIGxvZ2dlcigpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1f
bG9nZ2VyLmdldCgpOyB9CiAgICAgY29uc3Qgdm9pZCogbG9nSWRlbnRpZmllcigpIGNvbnN0IGZp
bmFsIHsgcmV0dXJuIG1fbG9nSWRlbnRpZmllcjsgfQogICAgIFdURkxvZ0NoYW5uZWwmIGxvZ0No
YW5uZWwoKSBjb25zdCBmaW5hbDsKLSAgICBjb25zdCB2b2lkKiBuZXh0QXVkaW9Ob2RlTG9nSWRl
bnRpZmllcigpIHsgcmV0dXJuIGNoaWxkTG9nSWRlbnRpZmllcihtX2xvZ0lkZW50aWZpZXIsICsr
bV9uZXh0QXVkaW9Ob2RlSWRlbnRpZmllcik7IH0KLSAgICBjb25zdCB2b2lkKiBuZXh0QXVkaW9Q
YXJhbWV0ZXJMb2dJZGVudGlmaWVyKCkgeyByZXR1cm4gY2hpbGRMb2dJZGVudGlmaWVyKG1fbG9n
SWRlbnRpZmllciwgKyttX25leHRBdWRpb1BhcmFtZXRlcklkZW50aWZpZXIpOyB9CisgICAgY29u
c3Qgdm9pZCogbmV4dEF1ZGlvTm9kZUxvZ0lkZW50aWZpZXIoKSBmaW5hbCB7IHJldHVybiBjaGls
ZExvZ0lkZW50aWZpZXIobV9sb2dJZGVudGlmaWVyLCArK21fbmV4dEF1ZGlvTm9kZUlkZW50aWZp
ZXIpOyB9CisgICAgY29uc3Qgdm9pZCogbmV4dEF1ZGlvUGFyYW1ldGVyTG9nSWRlbnRpZmllcigp
IGZpbmFsIHsgcmV0dXJuIGNoaWxkTG9nSWRlbnRpZmllcihtX2xvZ0lkZW50aWZpZXIsICsrbV9u
ZXh0QXVkaW9QYXJhbWV0ZXJJZGVudGlmaWVyKTsgfQogI2VuZGlmCiAKLSAgICB2b2lkIHBvc3RU
YXNrKFdURjo6RnVuY3Rpb248dm9pZCgpPiYmKTsKLSAgICBib29sIGlzU3RvcHBlZCgpIGNvbnN0
IHsgcmV0dXJuIG1faXNTdG9wU2NoZWR1bGVkOyB9Ci0gICAgY29uc3QgU2VjdXJpdHlPcmlnaW4q
IG9yaWdpbigpIGNvbnN0OwotICAgIHZvaWQgYWRkQ29uc29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJj
ZSwgTWVzc2FnZUxldmVsLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UpOwotCi0gICAgLy8gRXZlbnRU
YXJnZXQKLSAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0
KCkgY29uc3QgZmluYWw7CisgICAgdm9pZCBwb3N0VGFzayhXVEY6OkZ1bmN0aW9uPHZvaWQoKT4m
JikgZmluYWw7CisgICAgYm9vbCBpc1N0b3BwZWQoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2lz
U3RvcFNjaGVkdWxlZDsgfQorICAgIGNvbnN0IFNlY3VyaXR5T3JpZ2luKiBvcmlnaW4oKSBjb25z
dCBmaW5hbDsKKyAgICB2b2lkIGFkZENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VTb3VyY2UsIE1lc3Nh
Z2VMZXZlbCwgY29uc3QgU3RyaW5nJiBtZXNzYWdlKSBmaW5hbDsKIAogcHJvdGVjdGVkOgogICAg
IGV4cGxpY2l0IEF1ZGlvQ29udGV4dChEb2N1bWVudCYpOwpAQCAtMzYwLDYgKzQyNiw5IEBAIHBy
aXZhdGU6CiAKICAgICB2b2lkIHZpc2liaWxpdHlTdGF0ZUNoYW5nZWQoKSBmaW5hbDsKIAorICAg
IGJvb2wgaXNBdWRpb0NvbnRleHQoKSBjb25zdCBmaW5hbCB7IHJldHVybiB0cnVlOyB9CisgICAg
Ym9vbCBpc1dlYktpdEF1ZGlvQ29udGV4dCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIGZhbHNlOyB9
CisKICAgICAvLyBFdmVudFRhcmdldAogICAgIHZvaWQgcmVmRXZlbnRUYXJnZXQoKSBvdmVycmlk
ZSB7IHJlZigpOyB9CiAgICAgdm9pZCBkZXJlZkV2ZW50VGFyZ2V0KCkgb3ZlcnJpZGUgeyBkZXJl
ZigpOyB9CkBAIC00NDYsMjEgKzUxNSwxMyBAQCBwcml2YXRlOgogICAgIFJlZlB0cjxQZW5kaW5n
QWN0aXZpdHk8QXVkaW9Db250ZXh0Pj4gbV9wZW5kaW5nQWN0aXZpdHk7CiB9OwogCi0vLyBGSVhN
RTogRmluZCBvdXQgd2h5IHRoZXNlID09LyE9IGZ1bmN0aW9ucyBhcmUgbmVlZGVkIGFuZCByZW1v
dmUgdGhlbSBpZiBwb3NzaWJsZS4KLQotaW5saW5lIGJvb2wgb3BlcmF0b3I9PShjb25zdCBBdWRp
b0NvbnRleHQmIGxocywgY29uc3QgQXVkaW9Db250ZXh0JiByaHMpCi17Ci0gICAgcmV0dXJuICZs
aHMgPT0gJnJoczsKLX0KLQotaW5saW5lIGJvb2wgb3BlcmF0b3IhPShjb25zdCBBdWRpb0NvbnRl
eHQmIGxocywgY29uc3QgQXVkaW9Db250ZXh0JiByaHMpCi17Ci0gICAgcmV0dXJuICZsaHMgIT0g
JnJoczsKLX0KLQogaW5saW5lIEF1ZGlvQ29udGV4dDo6U3RhdGUgQXVkaW9Db250ZXh0OjpzdGF0
ZSgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1fc3RhdGU7CiB9CiAKIH0gLy8gV2ViQ29yZQorCitT
UEVDSUFMSVpFX1RZUEVfVFJBSVRTX0JFR0lOKFdlYkNvcmU6OkF1ZGlvQ29udGV4dCkKKyAgICBz
dGF0aWMgYm9vbCBpc1R5cGUoY29uc3QgV2ViQ29yZTo6QXVkaW9Db250ZXh0QmFzZSYgY29udGV4
dCkgeyByZXR1cm4gY29udGV4dC5pc0F1ZGlvQ29udGV4dCgpOyB9CitTUEVDSUFMSVpFX1RZUEVf
VFJBSVRTX0VORCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlv
L0F1ZGlvQ29udGV4dC5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlv
Q29udGV4dC5pZGwKaW5kZXggMTIxMjRhMzY3NzcuLjgzZGIzYjRkNmIxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQ29udGV4dC5pZGwKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0NvbnRleHQuaWRsCkBAIC0yMywyMiAr
MjMsMTQgQEAKICAqIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgogICovCiAKLWVudW0gQXVkaW9Db250ZXh0U3RhdGUgewotICAgICJz
dXNwZW5kZWQiLAotICAgICJydW5uaW5nIiwKLSAgICAiaW50ZXJydXB0ZWQiLAotICAgICJjbG9z
ZWQiCi19OwotCiBbCiAgICAgQWN0aXZlRE9NT2JqZWN0LAogICAgIENvbmRpdGlvbmFsPVdFQl9B
VURJTywKICAgICBDb25zdHJ1Y3RvciwKICAgICBDb25zdHJ1Y3RvckNhbGxXaXRoPURvY3VtZW50
LAogICAgIENvbnN0cnVjdG9yTWF5VGhyb3dFeGNlcHRpb24sCi0gICAgRW5hYmxlZEJ5U2V0dGlu
Zz1XZWJBdWRpbywKKyAgICBFbmFibGVkQnlTZXR0aW5nPU1vZGVyblVucHJlZml4ZWRXZWJBdWRp
bywKICAgICBFeHBvcnRNYWNybz1XRUJDT1JFX0VYUE9SVCwKLSAgICBJbnRlcmZhY2VOYW1lPXdl
YmtpdEF1ZGlvQ29udGV4dCwKIF0gaW50ZXJmYWNlIEF1ZGlvQ29udGV4dCA6IEV2ZW50VGFyZ2V0
IHsKICAgICAvLyBBbGwgcmVuZGVyZWQgYXVkaW8gdWx0aW1hdGVseSBjb25uZWN0cyB0byBkZXN0
aW5hdGlvbiwgd2hpY2ggcmVwcmVzZW50cyB0aGUgYXVkaW8gaGFyZHdhcmUuCiAgICAgcmVhZG9u
bHkgYXR0cmlidXRlIEF1ZGlvRGVzdGluYXRpb25Ob2RlIGRlc3RpbmF0aW9uOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0NvbnRleHRTdGF0ZS5oIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0NvbnRleHRTdGF0ZS5oCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi4xNjAxMzExMDhmYQotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0U3Rh
dGUuaApAQCAtMCwwICsxLDMyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYtMjAyMCBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTgorICogQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTCisgKiBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworbmFt
ZXNwYWNlIFdlYkNvcmUgeworCitlbnVtIGNsYXNzIEF1ZGlvQ29udGV4dFN0YXRlIHsgU3VzcGVu
ZGVkLCBSdW5uaW5nLCBJbnRlcnJ1cHRlZCwgQ2xvc2VkIH07CisKK30KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0U3RhdGUuaWRsIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0NvbnRleHRTdGF0ZS5pZGwKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLmM4ZDA4YmQyYjU2Ci0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0NvbnRleHRTdGF0
ZS5pZGwKQEAgLTAsMCArMSwzMSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCwgR29vZ2xl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
IEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTgorICogQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTCisgKiBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCitlbnVtIEF1ZGlvQ29udGV4dFN0YXRl
IHsKKyAgICAic3VzcGVuZGVkIiwKKyAgICAicnVubmluZyIsCisgICAgImludGVycnVwdGVkIiwK
KyAgICAiY2xvc2VkIgorfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
YXVkaW8vQXVkaW9EZXN0aW5hdGlvbk5vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJhdWRpby9BdWRpb0Rlc3RpbmF0aW9uTm9kZS5jcHAKaW5kZXggZDlhYmI5Nzc3YTkuLjY3NzYx
N2VjYjMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlv
RGVzdGluYXRpb25Ob2RlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlv
L0F1ZGlvRGVzdGluYXRpb25Ob2RlLmNwcApAQCAtMzksNyArMzksNyBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAgICAgCiBXVEZfTUFLRV9JU09fQUxMT0NBVEVEX0lNUEwoQXVkaW9EZXN0aW5hdGlv
bk5vZGUpOwogCi1BdWRpb0Rlc3RpbmF0aW9uTm9kZTo6QXVkaW9EZXN0aW5hdGlvbk5vZGUoQXVk
aW9Db250ZXh0JiBjb250ZXh0LCBmbG9hdCBzYW1wbGVSYXRlKQorQXVkaW9EZXN0aW5hdGlvbk5v
ZGU6OkF1ZGlvRGVzdGluYXRpb25Ob2RlKEF1ZGlvQ29udGV4dEJhc2UmIGNvbnRleHQsIGZsb2F0
IHNhbXBsZVJhdGUpCiAgICAgOiBBdWRpb05vZGUoY29udGV4dCwgc2FtcGxlUmF0ZSkKICAgICAs
IG1fY3VycmVudFNhbXBsZUZyYW1lKDApCiAgICAgLCBtX2lzU2lsZW50KHRydWUpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvRGVzdGluYXRpb25Ob2Rl
LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvRGVzdGluYXRpb25Ob2Rl
LmgKaW5kZXggODk0OGY0ZWU3MGEuLjM3NmY0NjI3MTJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvRGVzdGluYXRpb25Ob2RlLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0Rlc3RpbmF0aW9uTm9kZS5oCkBAIC0zNiw3
ICszNiw3IEBAIGNsYXNzIEF1ZGlvQ29udGV4dDsKIGNsYXNzIEF1ZGlvRGVzdGluYXRpb25Ob2Rl
IDogcHVibGljIEF1ZGlvTm9kZSwgcHVibGljIEF1ZGlvSU9DYWxsYmFjayB7CiAgICAgV1RGX01B
S0VfSVNPX0FMTE9DQVRFRChBdWRpb0Rlc3RpbmF0aW9uTm9kZSk7CiBwdWJsaWM6Ci0gICAgQXVk
aW9EZXN0aW5hdGlvbk5vZGUoQXVkaW9Db250ZXh0JiwgZmxvYXQgc2FtcGxlUmF0ZSk7CisgICAg
QXVkaW9EZXN0aW5hdGlvbk5vZGUoQXVkaW9Db250ZXh0QmFzZSYsIGZsb2F0IHNhbXBsZVJhdGUp
OwogICAgIHZpcnR1YWwgfkF1ZGlvRGVzdGluYXRpb25Ob2RlKCk7CiAgICAgCiAgICAgLy8gQXVk
aW9Ob2RlICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1
ZGlvTm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvTm9kZS5j
cHAKaW5kZXggNzY1ZWNlMzMyZjYuLmU1NTQzNzc5ZDUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvTm9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJhdWRpby9BdWRpb05vZGUuY3BwCkBAIC0zMyw2ICszMyw3IEBACiAjaW5jbHVk
ZSAiQXVkaW9Ob2RlT3V0cHV0LmgiCiAjaW5jbHVkZSAiQXVkaW9QYXJhbS5oIgogI2luY2x1ZGUg
IkxvZ2dpbmcuaCIKKyNpbmNsdWRlICJXZWJLaXRBdWRpb0NvbnRleHQuaCIKICNpbmNsdWRlIDx3
dGYvQXRvbWljcy5oPgogI2luY2x1ZGUgPHd0Zi9Jc29NYWxsb2NJbmxpbmVzLmg+CiAjaW5jbHVk
ZSA8d3RmL01haW5UaHJlYWQuaD4KQEAgLTk1LDcgKzk2LDcgQEAgU3RyaW5nIGNvbnZlcnRFbnVt
ZXJhdGlvblRvU3RyaW5nKEF1ZGlvTm9kZTo6Tm9kZVR5cGUgZW51bWVyYXRpb25WYWx1ZSkKICAg
ICByZXR1cm4gdmFsdWVzW3N0YXRpY19jYXN0PHNpemVfdD4oZW51bWVyYXRpb25WYWx1ZSldOwog
fQogCi1BdWRpb05vZGU6OkF1ZGlvTm9kZShBdWRpb0NvbnRleHQmIGNvbnRleHQsIGZsb2F0IHNh
bXBsZVJhdGUpCitBdWRpb05vZGU6OkF1ZGlvTm9kZShBdWRpb0NvbnRleHRCYXNlJiBjb250ZXh0
LCBmbG9hdCBzYW1wbGVSYXRlKQogICAgIDogbV9pc0luaXRpYWxpemVkKGZhbHNlKQogICAgICwg
bV9ub2RlVHlwZShOb2RlVHlwZVVua25vd24pCiAgICAgLCBtX2NvbnRleHQoY29udGV4dCkKQEAg
LTE5NCw3ICsxOTUsNyBAQCBBdWRpb05vZGVPdXRwdXQqIEF1ZGlvTm9kZTo6b3V0cHV0KHVuc2ln
bmVkIGkpCiBFeGNlcHRpb25Pcjx2b2lkPiBBdWRpb05vZGU6OmNvbm5lY3QoQXVkaW9Ob2RlJiBk
ZXN0aW5hdGlvbiwgdW5zaWduZWQgb3V0cHV0SW5kZXgsIHVuc2lnbmVkIGlucHV0SW5kZXgpCiB7
CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKLSAgICBBdWRpb0NvbnRleHQ6OkF1dG9Mb2Nr
ZXIgbG9ja2VyKGNvbnRleHQoKSk7CisgICAgQXVkaW9Db250ZXh0QmFzZTo6QXV0b0xvY2tlciBs
b2NrZXIoY29udGV4dCgpKTsKIAogICAgIEFMV0FZU19MT0coTE9HSURFTlRJRklFUiwgZGVzdGlu
YXRpb24ubm9kZVR5cGUoKSwgIiwgb3V0cHV0ID0gIiwgb3V0cHV0SW5kZXgsICIsIGlucHV0ID0g
IiwgaW5wdXRJbmRleCk7CiAgICAgCkBAIC0yMDUsNyArMjA2LDcgQEAgRXhjZXB0aW9uT3I8dm9p
ZD4gQXVkaW9Ob2RlOjpjb25uZWN0KEF1ZGlvTm9kZSYgZGVzdGluYXRpb24sIHVuc2lnbmVkIG91
dHB1dEluZGUKICAgICBpZiAoaW5wdXRJbmRleCA+PSBkZXN0aW5hdGlvbi5udW1iZXJPZklucHV0
cygpKQogICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgSW5kZXhTaXplRXJyb3IgfTsKIAotICAg
IGlmIChjb250ZXh0KCkgIT0gZGVzdGluYXRpb24uY29udGV4dCgpKQorICAgIGlmICgmY29udGV4
dCgpICE9ICZkZXN0aW5hdGlvbi5jb250ZXh0KCkpCiAgICAgICAgIHJldHVybiBFeGNlcHRpb24g
eyBTeW50YXhFcnJvciB9OwogCiAgICAgYXV0byogaW5wdXQgPSBkZXN0aW5hdGlvbi5pbnB1dChp
bnB1dEluZGV4KTsKQEAgLTIyMCw3ICsyMjEsNyBAQCBFeGNlcHRpb25Pcjx2b2lkPiBBdWRpb05v
ZGU6OmNvbm5lY3QoQXVkaW9Ob2RlJiBkZXN0aW5hdGlvbiwgdW5zaWduZWQgb3V0cHV0SW5kZQog
CiBFeGNlcHRpb25Pcjx2b2lkPiBBdWRpb05vZGU6OmNvbm5lY3QoQXVkaW9QYXJhbSYgcGFyYW0s
IHVuc2lnbmVkIG91dHB1dEluZGV4KQogewotICAgIEF1ZGlvQ29udGV4dDo6QXV0b0xvY2tlciBs
b2NrZXIoY29udGV4dCgpKTsKKyAgICBBdWRpb0NvbnRleHRCYXNlOjpBdXRvTG9ja2VyIGxvY2tl
cihjb250ZXh0KCkpOwogCiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKIApAQCAtMjI5LDcg
KzIzMCw3IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IEF1ZGlvTm9kZTo6Y29ubmVjdChBdWRpb1BhcmFt
JiBwYXJhbSwgdW5zaWduZWQgb3V0cHV0SW5kZXgpCiAgICAgaWYgKG91dHB1dEluZGV4ID49IG51
bWJlck9mT3V0cHV0cygpKQogICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgSW5kZXhTaXplRXJy
b3IgfTsKIAotICAgIGlmIChjb250ZXh0KCkgIT0gcGFyYW0uY29udGV4dCgpKQorICAgIGlmICgm
Y29udGV4dCgpICE9ICZwYXJhbS5jb250ZXh0KCkpCiAgICAgICAgIHJldHVybiBFeGNlcHRpb24g
eyBTeW50YXhFcnJvciB9OwogCiAgICAgYXV0byogb3V0cHV0ID0gdGhpcy0+b3V0cHV0KG91dHB1
dEluZGV4KTsKQEAgLTI0MSw3ICsyNDIsNyBAQCBFeGNlcHRpb25Pcjx2b2lkPiBBdWRpb05vZGU6
OmNvbm5lY3QoQXVkaW9QYXJhbSYgcGFyYW0sIHVuc2lnbmVkIG91dHB1dEluZGV4KQogRXhjZXB0
aW9uT3I8dm9pZD4gQXVkaW9Ob2RlOjpkaXNjb25uZWN0KHVuc2lnbmVkIG91dHB1dEluZGV4KQog
ewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7Ci0gICAgQXVkaW9Db250ZXh0OjpBdXRvTG9j
a2VyIGxvY2tlcihjb250ZXh0KCkpOworICAgIEF1ZGlvQ29udGV4dEJhc2U6OkF1dG9Mb2NrZXIg
bG9ja2VyKGNvbnRleHQoKSk7CiAKICAgICAvLyBTYW5pdHkgY2hlY2sgaW5wdXQgYW5kIG91dHB1
dCBpbmRpY2VzLgogICAgIGlmIChvdXRwdXRJbmRleCA+PSBudW1iZXJPZk91dHB1dHMoKSkKQEAg
LTI2Myw3ICsyNjQsNyBAQCB1bnNpZ25lZCBBdWRpb05vZGU6OmNoYW5uZWxDb3VudCgpCiBFeGNl
cHRpb25Pcjx2b2lkPiBBdWRpb05vZGU6OnNldENoYW5uZWxDb3VudCh1bnNpZ25lZCBjaGFubmVs
Q291bnQpCiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKLSAgICBBdWRpb0NvbnRleHQ6
OkF1dG9Mb2NrZXIgbG9ja2VyKGNvbnRleHQoKSk7CisgICAgQXVkaW9Db250ZXh0QmFzZTo6QXV0
b0xvY2tlciBsb2NrZXIoY29udGV4dCgpKTsKIAogICAgIEFMV0FZU19MT0coTE9HSURFTlRJRklF
UiwgY2hhbm5lbENvdW50KTsKICAgICAKQEAgLTI5Niw3ICsyOTcsNyBAQCBTdHJpbmcgQXVkaW9O
b2RlOjpjaGFubmVsQ291bnRNb2RlKCkKIEV4Y2VwdGlvbk9yPHZvaWQ+IEF1ZGlvTm9kZTo6c2V0
Q2hhbm5lbENvdW50TW9kZShjb25zdCBTdHJpbmcmIG1vZGUpCiB7CiAgICAgQVNTRVJUKGlzTWFp
blRocmVhZCgpKTsKLSAgICBBdWRpb0NvbnRleHQ6OkF1dG9Mb2NrZXIgbG9ja2VyKGNvbnRleHQo
KSk7CisgICAgQXVkaW9Db250ZXh0QmFzZTo6QXV0b0xvY2tlciBsb2NrZXIoY29udGV4dCgpKTsK
IAogICAgIEFMV0FZU19MT0coTE9HSURFTlRJRklFUiwgbW9kZSk7CiAgICAgCkBAIC0zMzIsNyAr
MzMzLDcgQEAgU3RyaW5nIEF1ZGlvTm9kZTo6Y2hhbm5lbEludGVycHJldGF0aW9uKCkKIEV4Y2Vw
dGlvbk9yPHZvaWQ+IEF1ZGlvTm9kZTo6c2V0Q2hhbm5lbEludGVycHJldGF0aW9uKGNvbnN0IFN0
cmluZyYgaW50ZXJwcmV0YXRpb24pCiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKLSAg
ICBBdWRpb0NvbnRleHQ6OkF1dG9Mb2NrZXIgbG9ja2VyKGNvbnRleHQoKSk7CisgICAgQXVkaW9D
b250ZXh0QmFzZTo6QXV0b0xvY2tlciBsb2NrZXIoY29udGV4dCgpKTsKIAogICAgIEFMV0FZU19M
T0coTE9HSURFTlRJRklFUiwgaW50ZXJwcmV0YXRpb24pOwogICAgIApAQCAtNDM3LDcgKzQzOCw3
IEBAIHZvaWQgQXVkaW9Ob2RlOjplbmFibGVPdXRwdXRzSWZOZWNlc3NhcnkoKQogewogICAgIGlm
IChtX2lzRGlzYWJsZWQgJiYgbV9jb25uZWN0aW9uUmVmQ291bnQgPiAwKSB7CiAgICAgICAgIEFT
U0VSVChpc01haW5UaHJlYWQoKSk7Ci0gICAgICAgIEF1ZGlvQ29udGV4dDo6QXV0b0xvY2tlciBs
b2NrZXIoY29udGV4dCgpKTsKKyAgICAgICAgQXVkaW9Db250ZXh0QmFzZTo6QXV0b0xvY2tlciBs
b2NrZXIoY29udGV4dCgpKTsKIAogICAgICAgICBtX2lzRGlzYWJsZWQgPSBmYWxzZTsKICAgICAg
ICAgZm9yIChhdXRvJiBvdXRwdXQgOiBtX291dHB1dHMpCkBAIC01MDEsNyArNTAyLDcgQEAgdm9p
ZCBBdWRpb05vZGU6OmRlcmVmKFJlZlR5cGUgcmVmVHlwZSkKICAgICAvLyBJbiB0aGUgY2FzZSBv
ZiB0aGUgYXVkaW8gdGhyZWFkLCB3ZSBtdXN0IHVzZSBhIHRyeUxvY2sgdG8gYXZvaWQgZ2xpdGNo
ZXMuCiAgICAgYm9vbCBoYXNMb2NrID0gZmFsc2U7CiAgICAgYm9vbCBtdXN0UmVsZWFzZUxvY2sg
PSBmYWxzZTsKLSAgICAKKwogICAgIGlmIChjb250ZXh0KCkuaXNBdWRpb1RocmVhZCgpKSB7CiAg
ICAgICAgIC8vIFJlYWwtdGltZSBhdWRpbyB0aHJlYWQgbXVzdCBub3QgY29udGVuZCBsb2NrICh0
byBhdm9pZCBnbGl0Y2hlcykuCiAgICAgICAgIGhhc0xvY2sgPSBjb250ZXh0KCkudHJ5TG9jayht
dXN0UmVsZWFzZUxvY2spOwpAQCAtNTMwLDYgKzUzMSwxMyBAQCB2b2lkIEF1ZGlvTm9kZTo6ZGVy
ZWYoUmVmVHlwZSByZWZUeXBlKQogICAgICAgICBjb250ZXh0KCkuZGVsZXRlTWFya2VkTm9kZXMo
KTsKIH0KIAorVmFyaWFudDxSZWZQdHI8QXVkaW9Db250ZXh0PiwgUmVmUHRyPFdlYktpdEF1ZGlv
Q29udGV4dD4+IEF1ZGlvTm9kZTo6Y29udGV4dEZvckJpbmRpbmdzKCkgY29uc3QKK3sKKyAgICBp
ZiAobV9jb250ZXh0LT5pc1dlYktpdEF1ZGlvQ29udGV4dCgpKQorICAgICAgICByZXR1cm4gbWFr
ZVJlZlB0cihzdGF0aWNfY2FzdDxXZWJLaXRBdWRpb0NvbnRleHQmPihtX2NvbnRleHQuZ2V0KCkp
KTsKKyAgICByZXR1cm4gbWFrZVJlZlB0cihzdGF0aWNfY2FzdDxBdWRpb0NvbnRleHQmPihtX2Nv
bnRleHQuZ2V0KCkpKTsKK30KKwogdm9pZCBBdWRpb05vZGU6OmZpbmlzaERlcmVmKFJlZlR5cGUg
cmVmVHlwZSkKIHsKICAgICBBU1NFUlQoY29udGV4dCgpLmlzR3JhcGhPd25lcigpKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Ob2RlLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvTm9kZS5oCmluZGV4IDQyMTAxMDA2Y2M3
Li5hOTg4MWJkNGI4ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRp
by9BdWRpb05vZGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlv
Tm9kZS5oCkBAIC0yOSwxNSArMjksMTggQEAKICNpbmNsdWRlICJFeGNlcHRpb25Pci5oIgogI2lu
Y2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8d3RmL0xvZ2dlckhlbHBlci5oPgorI2lu
Y2x1ZGUgPHd0Zi9WYXJpYW50Lmg+CiAKICNkZWZpbmUgREVCVUdfQVVESU9OT0RFX1JFRkVSRU5D
RVMgMAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEF1ZGlvQ29udGV4dDsKK2NsYXNz
IEF1ZGlvQ29udGV4dEJhc2U7CiBjbGFzcyBBdWRpb05vZGVJbnB1dDsKIGNsYXNzIEF1ZGlvTm9k
ZU91dHB1dDsKIGNsYXNzIEF1ZGlvUGFyYW07CitjbGFzcyBXZWJLaXRBdWRpb0NvbnRleHQ7CiAK
IC8vIEFuIEF1ZGlvTm9kZSBpcyB0aGUgYmFzaWMgYnVpbGRpbmcgYmxvY2sgZm9yIGhhbmRsaW5n
IGF1ZGlvIHdpdGhpbiBhbiBBdWRpb0NvbnRleHQuCiAvLyBJdCBtYXkgYmUgYW4gYXVkaW8gc291
cmNlLCBhbiBpbnRlcm1lZGlhdGUgcHJvY2Vzc2luZyBtb2R1bGUsIG9yIGFuIGF1ZGlvIGRlc3Rp
bmF0aW9uLgpAQCAtNTYsMTEgKzU5LDEzIEBAIGNsYXNzIEF1ZGlvTm9kZQogcHVibGljOgogICAg
IGVudW0geyBQcm9jZXNzaW5nU2l6ZUluRnJhbWVzID0gMTI4IH07CiAKLSAgICBBdWRpb05vZGUo
QXVkaW9Db250ZXh0JiwgZmxvYXQgc2FtcGxlUmF0ZSk7CisgICAgQXVkaW9Ob2RlKEF1ZGlvQ29u
dGV4dEJhc2UmLCBmbG9hdCBzYW1wbGVSYXRlKTsKICAgICB2aXJ0dWFsIH5BdWRpb05vZGUoKTsK
IAotICAgIEF1ZGlvQ29udGV4dCYgY29udGV4dCgpIHsgcmV0dXJuIG1fY29udGV4dC5nZXQoKTsg
fQotICAgIGNvbnN0IEF1ZGlvQ29udGV4dCYgY29udGV4dCgpIGNvbnN0IHsgcmV0dXJuIG1fY29u
dGV4dC5nZXQoKTsgfQorICAgIEF1ZGlvQ29udGV4dEJhc2UmIGNvbnRleHQoKSB7IHJldHVybiBt
X2NvbnRleHQuZ2V0KCk7IH0KKyAgICBjb25zdCBBdWRpb0NvbnRleHRCYXNlJiBjb250ZXh0KCkg
Y29uc3QgeyByZXR1cm4gbV9jb250ZXh0LmdldCgpOyB9CisKKyAgICBWYXJpYW50PFJlZlB0cjxB
dWRpb0NvbnRleHQ+LCBSZWZQdHI8V2ViS2l0QXVkaW9Db250ZXh0Pj4gY29udGV4dEZvckJpbmRp
bmdzKCkgY29uc3Q7CiAKICAgICBlbnVtIE5vZGVUeXBlIHsKICAgICAgICAgTm9kZVR5cGVVbmtu
b3duLApAQCAtMjA5LDcgKzIxNCw3IEBAIHByaXZhdGU6CiAKICAgICB2b2xhdGlsZSBib29sIG1f
aXNJbml0aWFsaXplZDsKICAgICBOb2RlVHlwZSBtX25vZGVUeXBlOwotICAgIFJlZjxBdWRpb0Nv
bnRleHQ+IG1fY29udGV4dDsKKyAgICBSZWY8QXVkaW9Db250ZXh0QmFzZT4gbV9jb250ZXh0Owog
ICAgIGZsb2F0IG1fc2FtcGxlUmF0ZTsKICAgICBWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPEF1ZGlv
Tm9kZUlucHV0Pj4gbV9pbnB1dHM7CiAgICAgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxBdWRpb05v
ZGVPdXRwdXQ+PiBtX291dHB1dHM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmF1ZGlvL0F1ZGlvTm9kZS5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlv
L0F1ZGlvTm9kZS5pZGwKaW5kZXggNzBmZWM4YzgxNDUuLjcxOTM5YzgzMTcxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvTm9kZS5pZGwKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb05vZGUuaWRsCkBAIC0yNSw3ICsyNSw3
IEBACiBbCiAgICAgQ29uZGl0aW9uYWw9V0VCX0FVRElPLAogXSBpbnRlcmZhY2UgQXVkaW9Ob2Rl
IDogRXZlbnRUYXJnZXQgewotICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBBdWRpb0NvbnRleHQgY29u
dGV4dDsKKyAgICBbSW1wbGVtZW50ZWRBcz1jb250ZXh0Rm9yQmluZGluZ3NdIHJlYWRvbmx5IGF0
dHJpYnV0ZSAoQXVkaW9Db250ZXh0IG9yIFdlYktpdEF1ZGlvQ29udGV4dCkgY29udGV4dDsKICAg
ICByZWFkb25seSBhdHRyaWJ1dGUgdW5zaWduZWQgbG9uZyBudW1iZXJPZklucHV0czsKICAgICBy
ZWFkb25seSBhdHRyaWJ1dGUgdW5zaWduZWQgbG9uZyBudW1iZXJPZk91dHB1dHM7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Ob2RlT3V0cHV0Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvTm9kZU91dHB1dC5oCmluZGV4
IDUwYTk1ZWUyMDVjLi5mMDg5ODM2MzVmMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJhdWRpby9BdWRpb05vZGVPdXRwdXQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmF1ZGlvL0F1ZGlvTm9kZU91dHB1dC5oCkBAIC00Nyw3ICs0Nyw3IEBAIHB1YmxpYzoK
IAogICAgIC8vIENhbiBiZSBjYWxsZWQgZnJvbSBhbnkgdGhyZWFkLgogICAgIEF1ZGlvTm9kZSog
bm9kZSgpIGNvbnN0IHsgcmV0dXJuIG1fbm9kZTsgfQotICAgIEF1ZGlvQ29udGV4dCYgY29udGV4
dCgpIHsgcmV0dXJuIG1fbm9kZS0+Y29udGV4dCgpOyB9CisgICAgQXVkaW9Db250ZXh0QmFzZSYg
Y29udGV4dCgpIHsgcmV0dXJuIG1fbm9kZS0+Y29udGV4dCgpOyB9CiAgICAgCiAgICAgLy8gQ2F1
c2VzIG91ciBBdWRpb05vZGUgdG8gcHJvY2VzcyBpZiBpdCBoYXNuJ3QgYWxyZWFkeSBmb3IgdGhp
cyByZW5kZXIgcXVhbnR1bS4KICAgICAvLyBJdCByZXR1cm5zIHRoZSBidXMgY29udGFpbmluZyB0
aGUgcHJvY2Vzc2VkIGF1ZGlvIGZvciB0aGlzIG91dHB1dCwgcmV0dXJuaW5nIGluUGxhY2VCdXMg
aWYgaW4tcGxhY2UgcHJvY2Vzc2luZyB3YXMgcG9zc2libGUuCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvUGFyYW0uY3BwIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJhdWRpby9BdWRpb1BhcmFtLmNwcAppbmRleCAyOTM0NTY0NDVjYy4uZDQ3MGJm
NzQ2ZWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Q
YXJhbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1BhcmFt
LmNwcApAQCAtNDEsNyArNDEsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjb25zdCBkb3VibGUg
QXVkaW9QYXJhbTo6RGVmYXVsdFNtb290aGluZ0NvbnN0YW50ID0gMC4wNTsKIGNvbnN0IGRvdWJs
ZSBBdWRpb1BhcmFtOjpTbmFwVGhyZXNob2xkID0gMC4wMDE7CiAKLUF1ZGlvUGFyYW06OkF1ZGlv
UGFyYW0oQXVkaW9Db250ZXh0JiBjb250ZXh0LCBjb25zdCBTdHJpbmcmIG5hbWUsIGRvdWJsZSBk
ZWZhdWx0VmFsdWUsIGRvdWJsZSBtaW5WYWx1ZSwgZG91YmxlIG1heFZhbHVlLCB1bnNpZ25lZCB1
bml0cykKK0F1ZGlvUGFyYW06OkF1ZGlvUGFyYW0oQXVkaW9Db250ZXh0QmFzZSYgY29udGV4dCwg
Y29uc3QgU3RyaW5nJiBuYW1lLCBkb3VibGUgZGVmYXVsdFZhbHVlLCBkb3VibGUgbWluVmFsdWUs
IGRvdWJsZSBtYXhWYWx1ZSwgdW5zaWduZWQgdW5pdHMpCiAgICAgOiBBdWRpb1N1bW1pbmdKdW5j
dGlvbihjb250ZXh0KQogICAgICwgbV9uYW1lKG5hbWUpCiAgICAgLCBtX3ZhbHVlKGRlZmF1bHRW
YWx1ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Q
YXJhbS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1BhcmFtLmgKaW5k
ZXggMjI2Yzk1N2U3MDYuLjE2YTIxMDk1MDQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmF1ZGlvL0F1ZGlvUGFyYW0uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmF1ZGlvL0F1ZGlvUGFyYW0uaApAQCAtMzEsNiArMzEsNyBAQAogI2luY2x1ZGUgIkF1ZGlv
Q29udGV4dC5oIgogI2luY2x1ZGUgIkF1ZGlvUGFyYW1UaW1lbGluZS5oIgogI2luY2x1ZGUgIkF1
ZGlvU3VtbWluZ0p1bmN0aW9uLmgiCisjaW5jbHVkZSAiV2ViS2l0QXVkaW9Db250ZXh0LmgiCiAj
aW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvRmxvYXQzMkFycmF5Lmg+CiAjaW5jbHVkZSA8c3lzL3R5
cGVzLmg+CiAjaW5jbHVkZSA8d3RmL0xvZ2dlckhlbHBlci5oPgpAQCAtNTIsNyArNTMsNyBAQCBw
dWJsaWM6CiAgICAgc3RhdGljIGNvbnN0IGRvdWJsZSBEZWZhdWx0U21vb3RoaW5nQ29uc3RhbnQ7
CiAgICAgc3RhdGljIGNvbnN0IGRvdWJsZSBTbmFwVGhyZXNob2xkOwogCi0gICAgc3RhdGljIFJl
ZjxBdWRpb1BhcmFtPiBjcmVhdGUoQXVkaW9Db250ZXh0JiBjb250ZXh0LCBjb25zdCBTdHJpbmcm
IG5hbWUsIGRvdWJsZSBkZWZhdWx0VmFsdWUsIGRvdWJsZSBtaW5WYWx1ZSwgZG91YmxlIG1heFZh
bHVlLCB1bnNpZ25lZCB1bml0cyA9IDApCisgICAgc3RhdGljIFJlZjxBdWRpb1BhcmFtPiBjcmVh
dGUoQXVkaW9Db250ZXh0QmFzZSYgY29udGV4dCwgY29uc3QgU3RyaW5nJiBuYW1lLCBkb3VibGUg
ZGVmYXVsdFZhbHVlLCBkb3VibGUgbWluVmFsdWUsIGRvdWJsZSBtYXhWYWx1ZSwgdW5zaWduZWQg
dW5pdHMgPSAwKQogICAgIHsKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQXVkaW9QYXJh
bShjb250ZXh0LCBuYW1lLCBkZWZhdWx0VmFsdWUsIG1pblZhbHVlLCBtYXhWYWx1ZSwgdW5pdHMp
KTsKICAgICB9CkBAIC0xMDgsNyArMTA5LDcgQEAgcHVibGljOgogICAgIHZvaWQgZGlzY29ubmVj
dChBdWRpb05vZGVPdXRwdXQqKTsKIAogcHJvdGVjdGVkOgotICAgIEF1ZGlvUGFyYW0oQXVkaW9D
b250ZXh0JiwgY29uc3QgU3RyaW5nJiwgZG91YmxlIGRlZmF1bHRWYWx1ZSwgZG91YmxlIG1pblZh
bHVlLCBkb3VibGUgbWF4VmFsdWUsIHVuc2lnbmVkIHVuaXRzID0gMCk7CisgICAgQXVkaW9QYXJh
bShBdWRpb0NvbnRleHRCYXNlJiwgY29uc3QgU3RyaW5nJiwgZG91YmxlIGRlZmF1bHRWYWx1ZSwg
ZG91YmxlIG1pblZhbHVlLCBkb3VibGUgbWF4VmFsdWUsIHVuc2lnbmVkIHVuaXRzID0gMCk7CiAK
IHByaXZhdGU6CiAgICAgLy8gc2FtcGxlQWNjdXJhdGUgY29ycmVzcG9uZHMgdG8gYS1yYXRlIChh
dWRpbyByYXRlKSB2cy4gay1yYXRlIGluIHRoZSBXZWIgQXVkaW8gc3BlY2lmaWNhdGlvbi4KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9QYXJhbVRpbWVs
aW5lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9QYXJhbVRpbWVs
aW5lLmNwcAppbmRleCAyYjU5NTcwYmY2ZS4uNmM0MTMwMWQ4YWQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9QYXJhbVRpbWVsaW5lLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvUGFyYW1UaW1lbGluZS5jcHAKQEAg
LTExMyw3ICsxMTMsNyBAQCB2b2lkIEF1ZGlvUGFyYW1UaW1lbGluZTo6Y2FuY2VsU2NoZWR1bGVk
VmFsdWVzKGZsb2F0IHN0YXJ0VGltZSkKICAgICB9CiB9CiAKLWZsb2F0IEF1ZGlvUGFyYW1UaW1l
bGluZTo6dmFsdWVGb3JDb250ZXh0VGltZShBdWRpb0NvbnRleHQmIGNvbnRleHQsIGZsb2F0IGRl
ZmF1bHRWYWx1ZSwgYm9vbCYgaGFzVmFsdWUpCitmbG9hdCBBdWRpb1BhcmFtVGltZWxpbmU6OnZh
bHVlRm9yQ29udGV4dFRpbWUoQXVkaW9Db250ZXh0QmFzZSYgY29udGV4dCwgZmxvYXQgZGVmYXVs
dFZhbHVlLCBib29sJiBoYXNWYWx1ZSkKIHsKICAgICB7CiAgICAgICAgIHN0ZDo6dW5pcXVlX2xv
Y2s8TG9jaz4gbG9jayhtX2V2ZW50c011dGV4LCBzdGQ6OnRyeV90b19sb2NrKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9QYXJhbVRpbWVsaW5lLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvUGFyYW1UaW1lbGluZS5oCmlu
ZGV4IDdjMTA5OTk1NmNlLi5hNTg2OGJkZWUxOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJhdWRpby9BdWRpb1BhcmFtVGltZWxpbmUuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvUGFyYW1UaW1lbGluZS5oCkBAIC01Miw3ICs1Miw3IEBA
IHB1YmxpYzoKIAogICAgIC8vIGhhc1ZhbHVlIGlzIHNldCB0byB0cnVlIGlmIGEgdmFsaWQgdGlt
ZWxpbmUgdmFsdWUgaXMgcmV0dXJuZWQuCiAgICAgLy8gb3RoZXJ3aXNlIGRlZmF1bHRWYWx1ZSBp
cyByZXR1cm5lZC4KLSAgICBmbG9hdCB2YWx1ZUZvckNvbnRleHRUaW1lKEF1ZGlvQ29udGV4dCYs
IGZsb2F0IGRlZmF1bHRWYWx1ZSwgYm9vbCYgaGFzVmFsdWUpOworICAgIGZsb2F0IHZhbHVlRm9y
Q29udGV4dFRpbWUoQXVkaW9Db250ZXh0QmFzZSYsIGZsb2F0IGRlZmF1bHRWYWx1ZSwgYm9vbCYg
aGFzVmFsdWUpOwogCiAgICAgLy8gR2l2ZW4gdGhlIHRpbWUgcmFuZ2UsIGNhbGN1bGF0ZXMgcGFy
YW1ldGVyIHZhbHVlcyBpbnRvIHRoZSB2YWx1ZXMgYnVmZmVyCiAgICAgLy8gYW5kIHJldHVybnMg
dGhlIGxhc3QgcGFyYW1ldGVyIHZhbHVlIGNhbGN1bGF0ZWQgZm9yICJ2YWx1ZXMiIG9yIHRoZSBk
ZWZhdWx0VmFsdWUgaWYgbm9uZSB3ZXJlIGNhbGN1bGF0ZWQuCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvU2NoZWR1bGVkU291cmNlTm9kZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvU2NoZWR1bGVkU291cmNlTm9kZS5j
cHAKaW5kZXggMGY3MjY3NmZjNzQuLjdjMjgyMzdhMGJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvU2NoZWR1bGVkU291cmNlTm9kZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1NjaGVkdWxlZFNvdXJjZU5vZGUu
Y3BwCkBAIC00OSw3ICs0OSw3IEBAIFdURl9NQUtFX0lTT19BTExPQ0FURURfSU1QTChBdWRpb1Nj
aGVkdWxlZFNvdXJjZU5vZGUpOwogCiBjb25zdCBkb3VibGUgQXVkaW9TY2hlZHVsZWRTb3VyY2VO
b2RlOjpVbmtub3duVGltZSA9IC0xOwogCi1BdWRpb1NjaGVkdWxlZFNvdXJjZU5vZGU6OkF1ZGlv
U2NoZWR1bGVkU291cmNlTm9kZShBdWRpb0NvbnRleHQmIGNvbnRleHQsIGZsb2F0IHNhbXBsZVJh
dGUpCitBdWRpb1NjaGVkdWxlZFNvdXJjZU5vZGU6OkF1ZGlvU2NoZWR1bGVkU291cmNlTm9kZShB
dWRpb0NvbnRleHRCYXNlJiBjb250ZXh0LCBmbG9hdCBzYW1wbGVSYXRlKQogICAgIDogQXVkaW9O
b2RlKGNvbnRleHQsIHNhbXBsZVJhdGUpCiAgICAgLCBBY3RpdmVET01PYmplY3QoY29udGV4dC5z
Y3JpcHRFeGVjdXRpb25Db250ZXh0KCkpCiAgICAgLCBtX2VuZFRpbWUoVW5rbm93blRpbWUpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvU2NoZWR1bGVk
U291cmNlTm9kZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1NjaGVk
dWxlZFNvdXJjZU5vZGUuaAppbmRleCA4Y2FkYmUxMGFmZC4uYjRkOTU4ODBjMWQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9TY2hlZHVsZWRTb3VyY2VO
b2RlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1NjaGVkdWxl
ZFNvdXJjZU5vZGUuaApAQCAtNTMsNyArNTMsNyBAQCBwdWJsaWM6CiAgICAgICAgIEZJTklTSEVE
X1NUQVRFID0gMwogICAgIH07CiAgICAgCi0gICAgQXVkaW9TY2hlZHVsZWRTb3VyY2VOb2RlKEF1
ZGlvQ29udGV4dCYsIGZsb2F0IHNhbXBsZVJhdGUpOworICAgIEF1ZGlvU2NoZWR1bGVkU291cmNl
Tm9kZShBdWRpb0NvbnRleHRCYXNlJiwgZmxvYXQgc2FtcGxlUmF0ZSk7CiAKICAgICBFeGNlcHRp
b25Pcjx2b2lkPiBzdGFydExhdGVyKGRvdWJsZSB3aGVuKTsKICAgICBFeGNlcHRpb25Pcjx2b2lk
PiBzdG9wTGF0ZXIoZG91YmxlIHdoZW4pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJhdWRpby9BdWRpb1N1bW1pbmdKdW5jdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmF1ZGlvL0F1ZGlvU3VtbWluZ0p1bmN0aW9uLmNwcAppbmRleCBlZTYwMGE2Mjlh
MS4uZGQ2NGZkM2VhODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVk
aW8vQXVkaW9TdW1taW5nSnVuY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViYXVkaW8vQXVkaW9TdW1taW5nSnVuY3Rpb24uY3BwCkBAIC0zNCw3ICszNCw3IEBACiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAotQXVkaW9TdW1taW5nSnVuY3Rpb246OkF1ZGlvU3VtbWluZ0p1
bmN0aW9uKEF1ZGlvQ29udGV4dCYgY29udGV4dCkKK0F1ZGlvU3VtbWluZ0p1bmN0aW9uOjpBdWRp
b1N1bW1pbmdKdW5jdGlvbihBdWRpb0NvbnRleHRCYXNlJiBjb250ZXh0KQogICAgIDogbV9jb250
ZXh0KGNvbnRleHQpCiAgICAgLCBtX3JlbmRlcmluZ1N0YXRlTmVlZFVwZGF0aW5nKGZhbHNlKQog
ewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1N1bW1p
bmdKdW5jdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1N1bW1p
bmdKdW5jdGlvbi5oCmluZGV4IGM5NGZmNmQ2YTVhLi40Y2JmOGFlOWZiOSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1N1bW1pbmdKdW5jdGlvbi5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9TdW1taW5nSnVuY3Rpb24u
aApAQCAtMzAsMTggKzMwLDE4IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgQXVk
aW9Db250ZXh0OworY2xhc3MgQXVkaW9Db250ZXh0QmFzZTsKIGNsYXNzIEF1ZGlvTm9kZU91dHB1
dDsKIAogLy8gQW4gQXVkaW9TdW1taW5nSnVuY3Rpb24gcmVwcmVzZW50cyBhIHBvaW50IHdoZXJl
IHplcm8sIG9uZSwgb3IgbW9yZSBBdWRpb05vZGVPdXRwdXRzIGNvbm5lY3QuCiAKIGNsYXNzIEF1
ZGlvU3VtbWluZ0p1bmN0aW9uIHsKIHB1YmxpYzoKLSAgICBleHBsaWNpdCBBdWRpb1N1bW1pbmdK
dW5jdGlvbihBdWRpb0NvbnRleHQmKTsKKyAgICBleHBsaWNpdCBBdWRpb1N1bW1pbmdKdW5jdGlv
bihBdWRpb0NvbnRleHRCYXNlJik7CiAgICAgdmlydHVhbCB+QXVkaW9TdW1taW5nSnVuY3Rpb24o
KTsKIAogICAgIC8vIENhbiBiZSBjYWxsZWQgZnJvbSBhbnkgdGhyZWFkLgotICAgIEF1ZGlvQ29u
dGV4dCYgY29udGV4dCgpIHsgcmV0dXJuIG1fY29udGV4dC5nZXQoKTsgfQorICAgIEF1ZGlvQ29u
dGV4dEJhc2UmIGNvbnRleHQoKSB7IHJldHVybiBtX2NvbnRleHQ7IH0KIAogICAgIC8vIFRoaXMg
bXVzdCBiZSBjYWxsZWQgd2hlbmV2ZXIgd2UgbW9kaWZ5IG1fb3V0cHV0cy4KICAgICB2b2lkIGNo
YW5nZWRPdXRwdXRzKCk7CkBAIC02MCw3ICs2MCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZv
aWQgZGlkVXBkYXRlKCkgPSAwOwogCiBwcm90ZWN0ZWQ6Ci0gICAgUmVmPEF1ZGlvQ29udGV4dD4g
bV9jb250ZXh0OworICAgIFJlZjxBdWRpb0NvbnRleHRCYXNlPiBtX2NvbnRleHQ7CiAKICAgICAv
LyBtX291dHB1dHMgY29udGFpbnMgdGhlIEF1ZGlvTm9kZU91dHB1dHMgcmVwcmVzZW50aW5nIGN1
cnJlbnQgY29ubmVjdGlvbnMgd2hpY2ggYXJlIG5vdCBkaXNhYmxlZC4KICAgICAvLyBUaGUgcmVu
ZGVyaW5nIGNvZGUgc2hvdWxkIG5ldmVyIHVzZSB0aGlzIGRpcmVjdGx5LCBidXQgaW5zdGVhZCB1
c2VzIG1fcmVuZGVyaW5nT3V0cHV0cy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViYXVkaW8vQmlxdWFkRmlsdGVyTm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmF1ZGlvL0JpcXVhZEZpbHRlck5vZGUuY3BwCmluZGV4IDRhODI1NWU2ZjBhLi5kZGUwNzcz
ZDQ3MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9CaXF1YWRG
aWx0ZXJOb2RlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0JpcXVh
ZEZpbHRlck5vZGUuY3BwCkBAIC0zMyw3ICszMyw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAog
V1RGX01BS0VfSVNPX0FMTE9DQVRFRF9JTVBMKEJpcXVhZEZpbHRlck5vZGUpOwogCi1CaXF1YWRG
aWx0ZXJOb2RlOjpCaXF1YWRGaWx0ZXJOb2RlKEF1ZGlvQ29udGV4dCYgY29udGV4dCwgZmxvYXQg
c2FtcGxlUmF0ZSkKK0JpcXVhZEZpbHRlck5vZGU6OkJpcXVhZEZpbHRlck5vZGUoQXVkaW9Db250
ZXh0QmFzZSYgY29udGV4dCwgZmxvYXQgc2FtcGxlUmF0ZSkKICAgICA6IEF1ZGlvQmFzaWNQcm9j
ZXNzb3JOb2RlKGNvbnRleHQsIHNhbXBsZVJhdGUpCiB7CiAgICAgc2V0Tm9kZVR5cGUoTm9kZVR5
cGVCaXF1YWRGaWx0ZXIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJh
dWRpby9CaXF1YWRGaWx0ZXJOb2RlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlv
L0JpcXVhZEZpbHRlck5vZGUuaAppbmRleCA4MDk0ZDkxZWFiMy4uYWM4ZDk0N2ExMGYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQmlxdWFkRmlsdGVyTm9kZS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQmlxdWFkRmlsdGVyTm9kZS5o
CkBAIC0zNCw3ICszNCw3IEBAIGNsYXNzIEF1ZGlvUGFyYW07CiBjbGFzcyBCaXF1YWRGaWx0ZXJO
b2RlIGZpbmFsIDogcHVibGljIEF1ZGlvQmFzaWNQcm9jZXNzb3JOb2RlIHsKICAgICBXVEZfTUFL
RV9JU09fQUxMT0NBVEVEKEJpcXVhZEZpbHRlck5vZGUpOwogcHVibGljOgotICAgIHN0YXRpYyBS
ZWY8QmlxdWFkRmlsdGVyTm9kZT4gY3JlYXRlKEF1ZGlvQ29udGV4dCYgY29udGV4dCwgZmxvYXQg
c2FtcGxlUmF0ZSkKKyAgICBzdGF0aWMgUmVmPEJpcXVhZEZpbHRlck5vZGU+IGNyZWF0ZShBdWRp
b0NvbnRleHRCYXNlJiBjb250ZXh0LCBmbG9hdCBzYW1wbGVSYXRlKQogICAgIHsKICAgICAgICAg
cmV0dXJuIGFkb3B0UmVmKCpuZXcgQmlxdWFkRmlsdGVyTm9kZShjb250ZXh0LCBzYW1wbGVSYXRl
KSk7CiAgICAgfQpAQCAtNTIsNyArNTIsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBnZXRGcmVxdWVu
Y3lSZXNwb25zZShjb25zdCBSZWZQdHI8RmxvYXQzMkFycmF5PiYgZnJlcXVlbmN5SHosIGNvbnN0
IFJlZlB0cjxGbG9hdDMyQXJyYXk+JiBtYWdSZXNwb25zZSwgY29uc3QgUmVmUHRyPEZsb2F0MzJB
cnJheT4mIHBoYXNlUmVzcG9uc2UpOwogCiBwcml2YXRlOgotICAgIEJpcXVhZEZpbHRlck5vZGUo
QXVkaW9Db250ZXh0JiwgZmxvYXQgc2FtcGxlUmF0ZSk7CisgICAgQmlxdWFkRmlsdGVyTm9kZShB
dWRpb0NvbnRleHRCYXNlJiwgZmxvYXQgc2FtcGxlUmF0ZSk7CiAKICAgICBCaXF1YWRQcm9jZXNz
b3IqIGJpcXVhZFByb2Nlc3NvcigpIHsgcmV0dXJuIHN0YXRpY19jYXN0PEJpcXVhZFByb2Nlc3Nv
cio+KHByb2Nlc3NvcigpKTsgfQogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViYXVkaW8vQmlxdWFkUHJvY2Vzc29yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViYXVkaW8vQmlxdWFkUHJvY2Vzc29yLmNwcAppbmRleCBlODRiOTgwMzU2Ny4uMmY2MDY3YTcy
ZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQmlxdWFkUHJv
Y2Vzc29yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0JpcXVhZFBy
b2Nlc3Nvci5jcHAKQEAgLTMyLDcgKzMyLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogICAg
IAotQmlxdWFkUHJvY2Vzc29yOjpCaXF1YWRQcm9jZXNzb3IoQXVkaW9Db250ZXh0JiBjb250ZXh0
LCBmbG9hdCBzYW1wbGVSYXRlLCBzaXplX3QgbnVtYmVyT2ZDaGFubmVscywgYm9vbCBhdXRvSW5p
dGlhbGl6ZSkKK0JpcXVhZFByb2Nlc3Nvcjo6QmlxdWFkUHJvY2Vzc29yKEF1ZGlvQ29udGV4dEJh
c2UmIGNvbnRleHQsIGZsb2F0IHNhbXBsZVJhdGUsIHNpemVfdCBudW1iZXJPZkNoYW5uZWxzLCBi
b29sIGF1dG9Jbml0aWFsaXplKQogICAgIDogQXVkaW9EU1BLZXJuZWxQcm9jZXNzb3Ioc2FtcGxl
UmF0ZSwgbnVtYmVyT2ZDaGFubmVscykKICAgICAsIG1fdHlwZShCaXF1YWRGaWx0ZXJUeXBlOjpM
b3dwYXNzKQogICAgICwgbV9wYXJhbWV0ZXIxKDApCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmF1ZGlvL0JpcXVhZFByb2Nlc3Nvci5oIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJhdWRpby9CaXF1YWRQcm9jZXNzb3IuaAppbmRleCBhZGJlZWM0MzAyNS4uZGMzMDZh
YjUxN2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQmlxdWFk
UHJvY2Vzc29yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9CaXF1YWRQ
cm9jZXNzb3IuaApAQCAtNTAsNyArNTAsNyBAQCBlbnVtIGNsYXNzIEJpcXVhZEZpbHRlclR5cGUg
ewogY2xhc3MgQmlxdWFkUHJvY2Vzc29yIGZpbmFsIDogcHVibGljIEF1ZGlvRFNQS2VybmVsUHJv
Y2Vzc29yIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKLSAgICBCaXF1
YWRQcm9jZXNzb3IoQXVkaW9Db250ZXh0JiwgZmxvYXQgc2FtcGxlUmF0ZSwgc2l6ZV90IG51bWJl
ck9mQ2hhbm5lbHMsIGJvb2wgYXV0b0luaXRpYWxpemUpOworICAgIEJpcXVhZFByb2Nlc3NvcihB
dWRpb0NvbnRleHRCYXNlJiwgZmxvYXQgc2FtcGxlUmF0ZSwgc2l6ZV90IG51bWJlck9mQ2hhbm5l
bHMsIGJvb2wgYXV0b0luaXRpYWxpemUpOwogCiAgICAgdmlydHVhbCB+QmlxdWFkUHJvY2Vzc29y
KCk7CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0No
YW5uZWxNZXJnZXJOb2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQ2hh
bm5lbE1lcmdlck5vZGUuY3BwCmluZGV4IGRmNTBmMjY4NzM2Li5kZTI4YWVhN2QyYyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9DaGFubmVsTWVyZ2VyTm9kZS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9DaGFubmVsTWVyZ2VyTm9k
ZS5jcHAKQEAgLTQzLDcgKzQzLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBXVEZfTUFLRV9J
U09fQUxMT0NBVEVEX0lNUEwoQ2hhbm5lbE1lcmdlck5vZGUpOwogCi1SZWZQdHI8Q2hhbm5lbE1l
cmdlck5vZGU+IENoYW5uZWxNZXJnZXJOb2RlOjpjcmVhdGUoQXVkaW9Db250ZXh0JiBjb250ZXh0
LCBmbG9hdCBzYW1wbGVSYXRlLCB1bnNpZ25lZCBudW1iZXJPZklucHV0cykKK1JlZlB0cjxDaGFu
bmVsTWVyZ2VyTm9kZT4gQ2hhbm5lbE1lcmdlck5vZGU6OmNyZWF0ZShBdWRpb0NvbnRleHRCYXNl
JiBjb250ZXh0LCBmbG9hdCBzYW1wbGVSYXRlLCB1bnNpZ25lZCBudW1iZXJPZklucHV0cykKIHsK
ICAgICBpZiAoIW51bWJlck9mSW5wdXRzIHx8IG51bWJlck9mSW5wdXRzID4gQXVkaW9Db250ZXh0
OjptYXhOdW1iZXJPZkNoYW5uZWxzKCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwpAQCAtNTEs
NyArNTEsNyBAQCBSZWZQdHI8Q2hhbm5lbE1lcmdlck5vZGU+IENoYW5uZWxNZXJnZXJOb2RlOjpj
cmVhdGUoQXVkaW9Db250ZXh0JiBjb250ZXh0LCBmbG9hdAogICAgIHJldHVybiBhZG9wdFJlZigq
bmV3IENoYW5uZWxNZXJnZXJOb2RlKGNvbnRleHQsIHNhbXBsZVJhdGUsIG51bWJlck9mSW5wdXRz
KSk7ICAgICAgCiB9CiAKLUNoYW5uZWxNZXJnZXJOb2RlOjpDaGFubmVsTWVyZ2VyTm9kZShBdWRp
b0NvbnRleHQmIGNvbnRleHQsIGZsb2F0IHNhbXBsZVJhdGUsIHVuc2lnbmVkIG51bWJlck9mSW5w
dXRzKQorQ2hhbm5lbE1lcmdlck5vZGU6OkNoYW5uZWxNZXJnZXJOb2RlKEF1ZGlvQ29udGV4dEJh
c2UmIGNvbnRleHQsIGZsb2F0IHNhbXBsZVJhdGUsIHVuc2lnbmVkIG51bWJlck9mSW5wdXRzKQog
ICAgIDogQXVkaW9Ob2RlKGNvbnRleHQsIHNhbXBsZVJhdGUpCiAgICAgLCBtX2Rlc2lyZWROdW1i
ZXJPZk91dHB1dENoYW5uZWxzKERlZmF1bHROdW1iZXJPZk91dHB1dENoYW5uZWxzKQogewpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9DaGFubmVsTWVyZ2VyTm9k
ZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9DaGFubmVsTWVyZ2VyTm9kZS5o
CmluZGV4IDY2NjM2ZWVkNmY3Li42Mjk3NmUwNTA3MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJhdWRpby9DaGFubmVsTWVyZ2VyTm9kZS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViYXVkaW8vQ2hhbm5lbE1lcmdlck5vZGUuaApAQCAtMzcsNyArMzcsNyBA
QCBjbGFzcyBBdWRpb0NvbnRleHQ7CiBjbGFzcyBDaGFubmVsTWVyZ2VyTm9kZSBmaW5hbCA6IHB1
YmxpYyBBdWRpb05vZGUgewogICAgIFdURl9NQUtFX0lTT19BTExPQ0FURUQoQ2hhbm5lbE1lcmdl
ck5vZGUpOwogcHVibGljOgotICAgIHN0YXRpYyBSZWZQdHI8Q2hhbm5lbE1lcmdlck5vZGU+IGNy
ZWF0ZShBdWRpb0NvbnRleHQmLCBmbG9hdCBzYW1wbGVSYXRlLCB1bnNpZ25lZCBudW1iZXJPZklu
cHV0cyk7CisgICAgc3RhdGljIFJlZlB0cjxDaGFubmVsTWVyZ2VyTm9kZT4gY3JlYXRlKEF1ZGlv
Q29udGV4dEJhc2UmLCBmbG9hdCBzYW1wbGVSYXRlLCB1bnNpZ25lZCBudW1iZXJPZklucHV0cyk7
CiAKICAgICAvLyBBdWRpb05vZGUKICAgICB2b2lkIHByb2Nlc3Moc2l6ZV90IGZyYW1lc1RvUHJv
Y2Vzcykgb3ZlcnJpZGU7CkBAIC01Miw3ICs1Miw3IEBAIHByaXZhdGU6CiAgICAgZG91YmxlIHRh
aWxUaW1lKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gMDsgfQogICAgIGRvdWJsZSBsYXRlbmN5
VGltZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIDA7IH0KIAotICAgIENoYW5uZWxNZXJnZXJO
b2RlKEF1ZGlvQ29udGV4dCYsIGZsb2F0IHNhbXBsZVJhdGUsIHVuc2lnbmVkIG51bWJlck9mSW5w
dXRzKTsKKyAgICBDaGFubmVsTWVyZ2VyTm9kZShBdWRpb0NvbnRleHRCYXNlJiwgZmxvYXQgc2Ft
cGxlUmF0ZSwgdW5zaWduZWQgbnVtYmVyT2ZJbnB1dHMpOwogfTsKIAogfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9DaGFu
bmVsU3BsaXR0ZXJOb2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQ2hh
bm5lbFNwbGl0dGVyTm9kZS5jcHAKaW5kZXggODJmNjlhMDRmOTkuLmY1NTUzZDBjODM1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0NoYW5uZWxTcGxpdHRlck5v
ZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQ2hhbm5lbFNwbGl0
dGVyTm9kZS5jcHAKQEAgLTM3LDcgKzM3LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBXVEZf
TUFLRV9JU09fQUxMT0NBVEVEX0lNUEwoQ2hhbm5lbFNwbGl0dGVyTm9kZSk7CiAgICAgCi1SZWZQ
dHI8Q2hhbm5lbFNwbGl0dGVyTm9kZT4gQ2hhbm5lbFNwbGl0dGVyTm9kZTo6Y3JlYXRlKEF1ZGlv
Q29udGV4dCYgY29udGV4dCwgZmxvYXQgc2FtcGxlUmF0ZSwgdW5zaWduZWQgbnVtYmVyT2ZPdXRw
dXRzKQorUmVmUHRyPENoYW5uZWxTcGxpdHRlck5vZGU+IENoYW5uZWxTcGxpdHRlck5vZGU6OmNy
ZWF0ZShBdWRpb0NvbnRleHRCYXNlJiBjb250ZXh0LCBmbG9hdCBzYW1wbGVSYXRlLCB1bnNpZ25l
ZCBudW1iZXJPZk91dHB1dHMpCiB7CiAgICAgaWYgKCFudW1iZXJPZk91dHB1dHMgfHwgbnVtYmVy
T2ZPdXRwdXRzID4gQXVkaW9Db250ZXh0OjptYXhOdW1iZXJPZkNoYW5uZWxzKCkpCiAgICAgICAg
IHJldHVybiBudWxscHRyOwpAQCAtNDUsNyArNDUsNyBAQCBSZWZQdHI8Q2hhbm5lbFNwbGl0dGVy
Tm9kZT4gQ2hhbm5lbFNwbGl0dGVyTm9kZTo6Y3JlYXRlKEF1ZGlvQ29udGV4dCYgY29udGV4dCwg
ZgogICAgIHJldHVybiBhZG9wdFJlZigqbmV3IENoYW5uZWxTcGxpdHRlck5vZGUoY29udGV4dCwg
c2FtcGxlUmF0ZSwgbnVtYmVyT2ZPdXRwdXRzKSk7ICAgICAgCiB9CiAKLUNoYW5uZWxTcGxpdHRl
ck5vZGU6OkNoYW5uZWxTcGxpdHRlck5vZGUoQXVkaW9Db250ZXh0JiBjb250ZXh0LCBmbG9hdCBz
YW1wbGVSYXRlLCB1bnNpZ25lZCBudW1iZXJPZk91dHB1dHMpCitDaGFubmVsU3BsaXR0ZXJOb2Rl
OjpDaGFubmVsU3BsaXR0ZXJOb2RlKEF1ZGlvQ29udGV4dEJhc2UmIGNvbnRleHQsIGZsb2F0IHNh
bXBsZVJhdGUsIHVuc2lnbmVkIG51bWJlck9mT3V0cHV0cykKICAgICA6IEF1ZGlvTm9kZShjb250
ZXh0LCBzYW1wbGVSYXRlKQogewogICAgIHNldE5vZGVUeXBlKE5vZGVUeXBlQ2hhbm5lbFNwbGl0
dGVyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQ2hhbm5l
bFNwbGl0dGVyTm9kZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9DaGFubmVs
U3BsaXR0ZXJOb2RlLmgKaW5kZXggOGQ5ODMyODEyMzcuLjEzZDhkOTgwZGFhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0NoYW5uZWxTcGxpdHRlck5vZGUuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0NoYW5uZWxTcGxpdHRlck5vZGUu
aApAQCAtMzMsNyArMzMsNyBAQCBjbGFzcyBBdWRpb0NvbnRleHQ7CiBjbGFzcyBDaGFubmVsU3Bs
aXR0ZXJOb2RlIGZpbmFsIDogcHVibGljIEF1ZGlvTm9kZSB7CiAgICAgV1RGX01BS0VfSVNPX0FM
TE9DQVRFRChDaGFubmVsU3BsaXR0ZXJOb2RlKTsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmUHRy
PENoYW5uZWxTcGxpdHRlck5vZGU+IGNyZWF0ZShBdWRpb0NvbnRleHQmLCBmbG9hdCBzYW1wbGVS
YXRlLCB1bnNpZ25lZCBudW1iZXJPZk91dHB1dHMpOworICAgIHN0YXRpYyBSZWZQdHI8Q2hhbm5l
bFNwbGl0dGVyTm9kZT4gY3JlYXRlKEF1ZGlvQ29udGV4dEJhc2UmLCBmbG9hdCBzYW1wbGVSYXRl
LCB1bnNpZ25lZCBudW1iZXJPZk91dHB1dHMpOwogCiAgICAgLy8gQXVkaW9Ob2RlCiAgICAgdm9p
ZCBwcm9jZXNzKHNpemVfdCBmcmFtZXNUb1Byb2Nlc3MpIG92ZXJyaWRlOwpAQCAtNDMsNyArNDMs
NyBAQCBwcml2YXRlOgogICAgIGRvdWJsZSB0YWlsVGltZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0
dXJuIDA7IH0KICAgICBkb3VibGUgbGF0ZW5jeVRpbWUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVy
biAwOyB9CiAKLSAgICBDaGFubmVsU3BsaXR0ZXJOb2RlKEF1ZGlvQ29udGV4dCYsIGZsb2F0IHNh
bXBsZVJhdGUsIHVuc2lnbmVkIG51bWJlck9mT3V0cHV0cyk7CisgICAgQ2hhbm5lbFNwbGl0dGVy
Tm9kZShBdWRpb0NvbnRleHRCYXNlJiwgZmxvYXQgc2FtcGxlUmF0ZSwgdW5zaWduZWQgbnVtYmVy
T2ZPdXRwdXRzKTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQ29udm9sdmVyTm9kZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0NvbnZvbHZlck5vZGUuY3BwCmluZGV4IGNjOTcyZjEw
ZGJkLi5lMWY1ZWI4MTU2MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJh
dWRpby9Db252b2x2ZXJOb2RlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1
ZGlvL0NvbnZvbHZlck5vZGUuY3BwCkBAIC00Nyw3ICs0Nyw3IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAogV1RGX01BS0VfSVNPX0FMTE9DQVRFRF9JTVBMKENvbnZvbHZlck5vZGUpOwogCi1Db252
b2x2ZXJOb2RlOjpDb252b2x2ZXJOb2RlKEF1ZGlvQ29udGV4dCYgY29udGV4dCwgZmxvYXQgc2Ft
cGxlUmF0ZSkKK0NvbnZvbHZlck5vZGU6OkNvbnZvbHZlck5vZGUoQXVkaW9Db250ZXh0QmFzZSYg
Y29udGV4dCwgZmxvYXQgc2FtcGxlUmF0ZSkKICAgICA6IEF1ZGlvTm9kZShjb250ZXh0LCBzYW1w
bGVSYXRlKQogewogICAgIHNldE5vZGVUeXBlKE5vZGVUeXBlQ29udm9sdmVyKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQ29udm9sdmVyTm9kZS5oIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9Db252b2x2ZXJOb2RlLmgKaW5kZXggNjRiZmVi
ZWQyZDguLjYzMTBjYzAwODk0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmF1ZGlvL0NvbnZvbHZlck5vZGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1
ZGlvL0NvbnZvbHZlck5vZGUuaApAQCAtMjQsNiArMjQsNyBAQAogCiAjcHJhZ21hIG9uY2UKIAor
I2luY2x1ZGUgIkF1ZGlvQ29udGV4dC5oIgogI2luY2x1ZGUgIkF1ZGlvTm9kZS5oIgogI2luY2x1
ZGUgPHd0Zi9Mb2NrLmg+CiAKQEAgLTM1LDEyICszNiwxNSBAQCBjbGFzcyBSZXZlcmI7CiBjbGFz
cyBDb252b2x2ZXJOb2RlIGZpbmFsIDogcHVibGljIEF1ZGlvTm9kZSB7CiAgICAgV1RGX01BS0Vf
SVNPX0FMTE9DQVRFRChDb252b2x2ZXJOb2RlKTsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPENv
bnZvbHZlck5vZGU+IGNyZWF0ZShBdWRpb0NvbnRleHQmIGNvbnRleHQsIGZsb2F0IHNhbXBsZVJh
dGUpCisgICAgc3RhdGljIFJlZjxDb252b2x2ZXJOb2RlPiBjcmVhdGUoQXVkaW9Db250ZXh0QmFz
ZSYgY29udGV4dCwgZmxvYXQgc2FtcGxlUmF0ZSkKICAgICB7CiAgICAgICAgIHJldHVybiBhZG9w
dFJlZigqbmV3IENvbnZvbHZlck5vZGUoY29udGV4dCwgc2FtcGxlUmF0ZSkpOwogICAgIH0KICAg
ICAKICAgICB2aXJ0dWFsIH5Db252b2x2ZXJOb2RlKCk7CisKKyAgICBBdWRpb0NvbnRleHQmIGNv
bnRleHQoKSB7IHJldHVybiBzdGF0aWNfY2FzdDxBdWRpb0NvbnRleHQmPihBdWRpb05vZGU6OmNv
bnRleHQoKSk7IH0KKyAgICBjb25zdCBBdWRpb0NvbnRleHQmIGNvbnRleHQoKSBjb25zdCB7IHJl
dHVybiBzdGF0aWNfY2FzdDxjb25zdCBBdWRpb0NvbnRleHQmPihBdWRpb05vZGU6OmNvbnRleHQo
KSk7IH0KICAgICAKICAgICBFeGNlcHRpb25Pcjx2b2lkPiBzZXRCdWZmZXIoQXVkaW9CdWZmZXIq
KTsKICAgICBBdWRpb0J1ZmZlciogYnVmZmVyKCk7CkBAIC00OSw3ICs1Myw3IEBAIHB1YmxpYzoK
ICAgICB2b2lkIHNldE5vcm1hbGl6ZShib29sIG5vcm1hbGl6ZSkgeyBtX25vcm1hbGl6ZSA9IG5v
cm1hbGl6ZTsgfQogCiBwcml2YXRlOgotICAgIENvbnZvbHZlck5vZGUoQXVkaW9Db250ZXh0Jiwg
ZmxvYXQgc2FtcGxlUmF0ZSk7CisgICAgQ29udm9sdmVyTm9kZShBdWRpb0NvbnRleHRCYXNlJiwg
ZmxvYXQgc2FtcGxlUmF0ZSk7CiAKICAgICBkb3VibGUgdGFpbFRpbWUoKSBjb25zdCBmaW5hbDsK
ICAgICBkb3VibGUgbGF0ZW5jeVRpbWUoKSBjb25zdCBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vRGVmYXVsdEF1ZGlvRGVzdGluYXRpb25Ob2RlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vRGVmYXVsdEF1ZGlvRGVzdGluYXRp
b25Ob2RlLmNwcAppbmRleCAxNzU5YWU0YTVhNi4uMDdlYjlhNDFiNWMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vRGVmYXVsdEF1ZGlvRGVzdGluYXRpb25Ob2Rl
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0RlZmF1bHRBdWRpb0Rl
c3RpbmF0aW9uTm9kZS5jcHAKQEAgLTQzLDcgKzQzLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
CiBXVEZfTUFLRV9JU09fQUxMT0NBVEVEX0lNUEwoRGVmYXVsdEF1ZGlvRGVzdGluYXRpb25Ob2Rl
KTsKICAgICAKLURlZmF1bHRBdWRpb0Rlc3RpbmF0aW9uTm9kZTo6RGVmYXVsdEF1ZGlvRGVzdGlu
YXRpb25Ob2RlKEF1ZGlvQ29udGV4dCYgY29udGV4dCkKK0RlZmF1bHRBdWRpb0Rlc3RpbmF0aW9u
Tm9kZTo6RGVmYXVsdEF1ZGlvRGVzdGluYXRpb25Ob2RlKEF1ZGlvQ29udGV4dEJhc2UmIGNvbnRl
eHQpCiAgICAgOiBBdWRpb0Rlc3RpbmF0aW9uTm9kZShjb250ZXh0LCBBdWRpb0Rlc3RpbmF0aW9u
OjpoYXJkd2FyZVNhbXBsZVJhdGUoKSkKIHsKICAgICAvLyBOb2RlLXNwZWNpZmljIGRlZmF1bHQg
bWl4aW5nIHJ1bGVzLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRp
by9EZWZhdWx0QXVkaW9EZXN0aW5hdGlvbk5vZGUuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViYXVkaW8vRGVmYXVsdEF1ZGlvRGVzdGluYXRpb25Ob2RlLmgKaW5kZXggNmZkOTVjMGYzMDEu
Ljk2YzgzN2M5OTM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlv
L0RlZmF1bHRBdWRpb0Rlc3RpbmF0aW9uTm9kZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViYXVkaW8vRGVmYXVsdEF1ZGlvRGVzdGluYXRpb25Ob2RlLmgKQEAgLTMzLDcgKzMzLDcg
QEAgY2xhc3MgQXVkaW9EZXN0aW5hdGlvbjsKIGNsYXNzIERlZmF1bHRBdWRpb0Rlc3RpbmF0aW9u
Tm9kZSBmaW5hbCA6IHB1YmxpYyBBdWRpb0Rlc3RpbmF0aW9uTm9kZSB7CiAgICAgV1RGX01BS0Vf
SVNPX0FMTE9DQVRFRChEZWZhdWx0QXVkaW9EZXN0aW5hdGlvbk5vZGUpOwogcHVibGljOgotICAg
IHN0YXRpYyBSZWY8RGVmYXVsdEF1ZGlvRGVzdGluYXRpb25Ob2RlPiBjcmVhdGUoQXVkaW9Db250
ZXh0JiBjb250ZXh0KQorICAgIHN0YXRpYyBSZWY8RGVmYXVsdEF1ZGlvRGVzdGluYXRpb25Ob2Rl
PiBjcmVhdGUoQXVkaW9Db250ZXh0QmFzZSYgY29udGV4dCkKICAgICB7CiAgICAgICAgIHJldHVy
biBhZG9wdFJlZigqbmV3IERlZmF1bHRBdWRpb0Rlc3RpbmF0aW9uTm9kZShjb250ZXh0KSk7ICAg
ICAKICAgICB9CkBAIC00MSw3ICs0MSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5EZWZhdWx0
QXVkaW9EZXN0aW5hdGlvbk5vZGUoKTsKICAgICAKIHByaXZhdGU6Ci0gICAgZXhwbGljaXQgRGVm
YXVsdEF1ZGlvRGVzdGluYXRpb25Ob2RlKEF1ZGlvQ29udGV4dCYpOworICAgIGV4cGxpY2l0IERl
ZmF1bHRBdWRpb0Rlc3RpbmF0aW9uTm9kZShBdWRpb0NvbnRleHRCYXNlJik7CiAgICAgdm9pZCBj
cmVhdGVEZXN0aW5hdGlvbigpOwogCiAgICAgdm9pZCBpbml0aWFsaXplKCkgZmluYWw7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0RlbGF5Tm9kZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0RlbGF5Tm9kZS5jcHAKaW5kZXggODFiZDdk
MTliMjcuLjQwNTI3YzgxZjlmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmF1ZGlvL0RlbGF5Tm9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRp
by9EZWxheU5vZGUuY3BwCkBAIC0zNywxNCArMzcsMTQgQEAgV1RGX01BS0VfSVNPX0FMTE9DQVRF
RF9JTVBMKERlbGF5Tm9kZSk7CiAKIGNvbnN0IGRvdWJsZSBtYXhpbXVtQWxsb3dlZERlbGF5VGlt
ZSA9IDE4MDsKIAotaW5saW5lIERlbGF5Tm9kZTo6RGVsYXlOb2RlKEF1ZGlvQ29udGV4dCYgY29u
dGV4dCwgZmxvYXQgc2FtcGxlUmF0ZSwgZG91YmxlIG1heERlbGF5VGltZSkKK2lubGluZSBEZWxh
eU5vZGU6OkRlbGF5Tm9kZShBdWRpb0NvbnRleHRCYXNlJiBjb250ZXh0LCBmbG9hdCBzYW1wbGVS
YXRlLCBkb3VibGUgbWF4RGVsYXlUaW1lKQogICAgIDogQXVkaW9CYXNpY1Byb2Nlc3Nvck5vZGUo
Y29udGV4dCwgc2FtcGxlUmF0ZSkKIHsKICAgICBzZXROb2RlVHlwZShOb2RlVHlwZURlbGF5KTsK
ICAgICBtX3Byb2Nlc3NvciA9IG1ha2VVbmlxdWU8RGVsYXlQcm9jZXNzb3I+KGNvbnRleHQsIHNh
bXBsZVJhdGUsIDEsIG1heERlbGF5VGltZSk7CiB9CiAKLUV4Y2VwdGlvbk9yPFJlZjxEZWxheU5v
ZGU+PiBEZWxheU5vZGU6OmNyZWF0ZShBdWRpb0NvbnRleHQmIGNvbnRleHQsIGZsb2F0IHNhbXBs
ZVJhdGUsIGRvdWJsZSBtYXhEZWxheVRpbWUpCitFeGNlcHRpb25PcjxSZWY8RGVsYXlOb2RlPj4g
RGVsYXlOb2RlOjpjcmVhdGUoQXVkaW9Db250ZXh0QmFzZSYgY29udGV4dCwgZmxvYXQgc2FtcGxl
UmF0ZSwgZG91YmxlIG1heERlbGF5VGltZSkKIHsKICAgICBpZiAobWF4RGVsYXlUaW1lIDw9IDAg
fHwgbWF4RGVsYXlUaW1lID49IG1heGltdW1BbGxvd2VkRGVsYXlUaW1lKQogICAgICAgICByZXR1
cm4gRXhjZXB0aW9uIHsgTm90U3VwcG9ydGVkRXJyb3IgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vRGVsYXlOb2RlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmF1ZGlvL0RlbGF5Tm9kZS5oCmluZGV4IGM5ZWNhZDlmOWZkLi5iNmFmZGQwZjkzMCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9EZWxheU5vZGUuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0RlbGF5Tm9kZS5oCkBAIC0zMSwx
MiArMzEsMTIgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgRGVsYXlOb2RlIGZpbmFsIDog
cHVibGljIEF1ZGlvQmFzaWNQcm9jZXNzb3JOb2RlIHsKICAgICBXVEZfTUFLRV9JU09fQUxMT0NB
VEVEKERlbGF5Tm9kZSk7CiBwdWJsaWM6Ci0gICAgc3RhdGljIEV4Y2VwdGlvbk9yPFJlZjxEZWxh
eU5vZGU+PiBjcmVhdGUoQXVkaW9Db250ZXh0JiwgZmxvYXQgc2FtcGxlUmF0ZSwgZG91YmxlIG1h
eERlbGF5VGltZSk7CisgICAgc3RhdGljIEV4Y2VwdGlvbk9yPFJlZjxEZWxheU5vZGU+PiBjcmVh
dGUoQXVkaW9Db250ZXh0QmFzZSYsIGZsb2F0IHNhbXBsZVJhdGUsIGRvdWJsZSBtYXhEZWxheVRp
bWUpOwogCiAgICAgQXVkaW9QYXJhbSogZGVsYXlUaW1lKCk7CiAKIHByaXZhdGU6Ci0gICAgRGVs
YXlOb2RlKEF1ZGlvQ29udGV4dCYsIGZsb2F0IHNhbXBsZVJhdGUsIGRvdWJsZSBtYXhEZWxheVRp
bWUpOworICAgIERlbGF5Tm9kZShBdWRpb0NvbnRleHRCYXNlJiwgZmxvYXQgc2FtcGxlUmF0ZSwg
ZG91YmxlIG1heERlbGF5VGltZSk7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0RlbGF5UHJvY2Vzc29yLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vRGVsYXlQcm9jZXNzb3IuY3BwCmlu
ZGV4IDEwMzY2ZWY2ZWFmLi5jYmJmZDlmYTJmYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJhdWRpby9EZWxheVByb2Nlc3Nvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJhdWRpby9EZWxheVByb2Nlc3Nvci5jcHAKQEAgLTMyLDcgKzMyLDcgQEAKIAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCi1EZWxheVByb2Nlc3Nvcjo6RGVsYXlQcm9jZXNzb3IoQXVk
aW9Db250ZXh0JiBjb250ZXh0LCBmbG9hdCBzYW1wbGVSYXRlLCB1bnNpZ25lZCBudW1iZXJPZkNo
YW5uZWxzLCBkb3VibGUgbWF4RGVsYXlUaW1lKQorRGVsYXlQcm9jZXNzb3I6OkRlbGF5UHJvY2Vz
c29yKEF1ZGlvQ29udGV4dEJhc2UmIGNvbnRleHQsIGZsb2F0IHNhbXBsZVJhdGUsIHVuc2lnbmVk
IG51bWJlck9mQ2hhbm5lbHMsIGRvdWJsZSBtYXhEZWxheVRpbWUpCiAgICAgOiBBdWRpb0RTUEtl
cm5lbFByb2Nlc3NvcihzYW1wbGVSYXRlLCBudW1iZXJPZkNoYW5uZWxzKQogICAgICwgbV9tYXhE
ZWxheVRpbWUobWF4RGVsYXlUaW1lKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJhdWRpby9EZWxheVByb2Nlc3Nvci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJhdWRpby9EZWxheVByb2Nlc3Nvci5oCmluZGV4IDg1ZDljYzZkN2ZkLi5jYmFjNzllY2YwZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9EZWxheVByb2Nlc3Nv
ci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vRGVsYXlQcm9jZXNzb3Iu
aApAQCAtMzYsNyArMzYsNyBAQCBjbGFzcyBBdWRpb0RTUEtlcm5lbDsKIGNsYXNzIERlbGF5UHJv
Y2Vzc29yIGZpbmFsIDogcHVibGljIEF1ZGlvRFNQS2VybmVsUHJvY2Vzc29yIHsKICAgICBXVEZf
TUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKLSAgICBEZWxheVByb2Nlc3NvcihBdWRpb0Nv
bnRleHQmLCBmbG9hdCBzYW1wbGVSYXRlLCB1bnNpZ25lZCBudW1iZXJPZkNoYW5uZWxzLCBkb3Vi
bGUgbWF4RGVsYXlUaW1lKTsKKyAgICBEZWxheVByb2Nlc3NvcihBdWRpb0NvbnRleHRCYXNlJiwg
ZmxvYXQgc2FtcGxlUmF0ZSwgdW5zaWduZWQgbnVtYmVyT2ZDaGFubmVscywgZG91YmxlIG1heERl
bGF5VGltZSk7CiAgICAgdmlydHVhbCB+RGVsYXlQcm9jZXNzb3IoKTsKICAgICAKICAgICBzdGQ6
OnVuaXF1ZV9wdHI8QXVkaW9EU1BLZXJuZWw+IGNyZWF0ZUtlcm5lbCgpIG92ZXJyaWRlOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9EeW5hbWljc0NvbXByZXNz
b3JOb2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vRHluYW1pY3NDb21w
cmVzc29yTm9kZS5jcHAKaW5kZXggMTQwOTZkOGYwYzUuLmMzM2QxZGU3MmRjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0R5bmFtaWNzQ29tcHJlc3Nvck5vZGUu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vRHluYW1pY3NDb21wcmVz
c29yTm9kZS5jcHAKQEAgLTQxLDcgKzQxLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBXVEZf
TUFLRV9JU09fQUxMT0NBVEVEX0lNUEwoRHluYW1pY3NDb21wcmVzc29yTm9kZSk7CiAKLUR5bmFt
aWNzQ29tcHJlc3Nvck5vZGU6OkR5bmFtaWNzQ29tcHJlc3Nvck5vZGUoQXVkaW9Db250ZXh0JiBj
b250ZXh0LCBmbG9hdCBzYW1wbGVSYXRlKQorRHluYW1pY3NDb21wcmVzc29yTm9kZTo6RHluYW1p
Y3NDb21wcmVzc29yTm9kZShBdWRpb0NvbnRleHRCYXNlJiBjb250ZXh0LCBmbG9hdCBzYW1wbGVS
YXRlKQogICAgIDogQXVkaW9Ob2RlKGNvbnRleHQsIHNhbXBsZVJhdGUpCiB7CiAgICAgc2V0Tm9k
ZVR5cGUoTm9kZVR5cGVEeW5hbWljc0NvbXByZXNzb3IpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJhdWRpby9EeW5hbWljc0NvbXByZXNzb3JOb2RlLmggYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0R5bmFtaWNzQ29tcHJlc3Nvck5vZGUuaAppbmRleCA0
NGNiZmJhYTA1OS4uNzJkMDAxZWQ5NWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViYXVkaW8vRHluYW1pY3NDb21wcmVzc29yTm9kZS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViYXVkaW8vRHluYW1pY3NDb21wcmVzc29yTm9kZS5oCkBAIC0yNCw2ICsyNCw3
IEBACiAKICNwcmFnbWEgb25jZQogCisjaW5jbHVkZSAiQXVkaW9Db250ZXh0LmgiCiAjaW5jbHVk
ZSAiQXVkaW9Ob2RlLmgiCiAjaW5jbHVkZSAiQXVkaW9QYXJhbS5oIgogI2luY2x1ZGUgPG1lbW9y
eT4KQEAgLTM1LDEzICszNiwxNiBAQCBjbGFzcyBEeW5hbWljc0NvbXByZXNzb3I7CiBjbGFzcyBE
eW5hbWljc0NvbXByZXNzb3JOb2RlIGZpbmFsIDogcHVibGljIEF1ZGlvTm9kZSB7CiAgICAgV1RG
X01BS0VfSVNPX0FMTE9DQVRFRChEeW5hbWljc0NvbXByZXNzb3JOb2RlKTsKIHB1YmxpYzoKLSAg
ICBzdGF0aWMgUmVmPER5bmFtaWNzQ29tcHJlc3Nvck5vZGU+IGNyZWF0ZShBdWRpb0NvbnRleHQm
IGNvbnRleHQsIGZsb2F0IHNhbXBsZVJhdGUpCisgICAgc3RhdGljIFJlZjxEeW5hbWljc0NvbXBy
ZXNzb3JOb2RlPiBjcmVhdGUoQXVkaW9Db250ZXh0QmFzZSYgY29udGV4dCwgZmxvYXQgc2FtcGxl
UmF0ZSkKICAgICB7CiAgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IER5bmFtaWNzQ29tcHJl
c3Nvck5vZGUoY29udGV4dCwgc2FtcGxlUmF0ZSkpOwogICAgIH0KIAogICAgIHZpcnR1YWwgfkR5
bmFtaWNzQ29tcHJlc3Nvck5vZGUoKTsKIAorICAgIEF1ZGlvQ29udGV4dCYgY29udGV4dCgpIHsg
cmV0dXJuIHN0YXRpY19jYXN0PEF1ZGlvQ29udGV4dCY+KEF1ZGlvTm9kZTo6Y29udGV4dCgpKTsg
fQorICAgIGNvbnN0IEF1ZGlvQ29udGV4dCYgY29udGV4dCgpIGNvbnN0IHsgcmV0dXJuIHN0YXRp
Y19jYXN0PGNvbnN0IEF1ZGlvQ29udGV4dCY+KEF1ZGlvTm9kZTo6Y29udGV4dCgpKTsgfQorCiAg
ICAgLy8gQXVkaW9Ob2RlCiAgICAgdm9pZCBwcm9jZXNzKHNpemVfdCBmcmFtZXNUb1Byb2Nlc3Mp
IG92ZXJyaWRlOwogICAgIHZvaWQgcmVzZXQoKSBvdmVycmlkZTsKQEAgLTYyLDcgKzY2LDcgQEAg
cHJpdmF0ZToKICAgICBkb3VibGUgdGFpbFRpbWUoKSBjb25zdCBvdmVycmlkZTsKICAgICBkb3Vi
bGUgbGF0ZW5jeVRpbWUoKSBjb25zdCBvdmVycmlkZTsKIAotICAgIER5bmFtaWNzQ29tcHJlc3Nv
ck5vZGUoQXVkaW9Db250ZXh0JiwgZmxvYXQgc2FtcGxlUmF0ZSk7CisgICAgRHluYW1pY3NDb21w
cmVzc29yTm9kZShBdWRpb0NvbnRleHRCYXNlJiwgZmxvYXQgc2FtcGxlUmF0ZSk7CiAKICAgICBz
dGQ6OnVuaXF1ZV9wdHI8RHluYW1pY3NDb21wcmVzc29yPiBtX2R5bmFtaWNzQ29tcHJlc3NvcjsK
ICAgICBSZWZQdHI8QXVkaW9QYXJhbT4gbV90aHJlc2hvbGQ7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0dhaW5Ob2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViYXVkaW8vR2Fpbk5vZGUuY3BwCmluZGV4IDI1N2RmMmVjZTIzLi45ODRkMTE5NGJk
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9HYWluTm9kZS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9HYWluTm9kZS5jcHAKQEAg
LTM3LDcgKzM3LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBXVEZfTUFLRV9JU09fQUxMT0NB
VEVEX0lNUEwoR2Fpbk5vZGUpOwogCi1HYWluTm9kZTo6R2Fpbk5vZGUoQXVkaW9Db250ZXh0JiBj
b250ZXh0LCBmbG9hdCBzYW1wbGVSYXRlKQorR2Fpbk5vZGU6OkdhaW5Ob2RlKEF1ZGlvQ29udGV4
dEJhc2UmIGNvbnRleHQsIGZsb2F0IHNhbXBsZVJhdGUpCiAgICAgOiBBdWRpb05vZGUoY29udGV4
dCwgc2FtcGxlUmF0ZSkKICAgICAsIG1fbGFzdEdhaW4oMS4wKQogICAgICwgbV9zYW1wbGVBY2N1
cmF0ZUdhaW5WYWx1ZXMoQXVkaW9Ob2RlOjpQcm9jZXNzaW5nU2l6ZUluRnJhbWVzKSAvLyBGSVhN
RTogY2FuIHByb2JhYmx5IHNoYXJlIHRlbXAgYnVmZmVyIGluIGNvbnRleHQKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vR2Fpbk5vZGUuaCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViYXVkaW8vR2Fpbk5vZGUuaAppbmRleCBmYTg1YjBiOWZmNS4uZGNmODU1
YTkxYzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vR2Fpbk5v
ZGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0dhaW5Ob2RlLmgKQEAg
LTM4LDcgKzM4LDcgQEAgY2xhc3MgQXVkaW9Db250ZXh0OwogY2xhc3MgR2Fpbk5vZGUgZmluYWwg
OiBwdWJsaWMgQXVkaW9Ob2RlIHsKICAgICBXVEZfTUFLRV9JU09fQUxMT0NBVEVEKEdhaW5Ob2Rl
KTsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPEdhaW5Ob2RlPiBjcmVhdGUoQXVkaW9Db250ZXh0
JiBjb250ZXh0LCBmbG9hdCBzYW1wbGVSYXRlKQorICAgIHN0YXRpYyBSZWY8R2Fpbk5vZGU+IGNy
ZWF0ZShBdWRpb0NvbnRleHRCYXNlJiBjb250ZXh0LCBmbG9hdCBzYW1wbGVSYXRlKQogICAgIHsK
ICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgR2Fpbk5vZGUoY29udGV4dCwgc2FtcGxlUmF0
ZSkpOwogICAgIH0KQEAgLTU3LDcgKzU3LDcgQEAgcHJpdmF0ZToKICAgICBkb3VibGUgdGFpbFRp
bWUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiAwOyB9CiAgICAgZG91YmxlIGxhdGVuY3lUaW1l
KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gMDsgfQogCi0gICAgR2Fpbk5vZGUoQXVkaW9Db250
ZXh0JiwgZmxvYXQgc2FtcGxlUmF0ZSk7CisgICAgR2Fpbk5vZGUoQXVkaW9Db250ZXh0QmFzZSYs
IGZsb2F0IHNhbXBsZVJhdGUpOwogCiAgICAgZmxvYXQgbV9sYXN0R2FpbjsgLy8gZm9yIGRlLXpp
cHBlcmluZwogICAgIFJlZlB0cjxBdWRpb1BhcmFtPiBtX2dhaW47CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL01lZGlhRWxlbWVudEF1ZGlvU291cmNlTm9kZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL01lZGlhRWxlbWVudEF1ZGlvU291
cmNlTm9kZS5jcHAKaW5kZXggMGU1OTgxZmE2ODYuLmM2NzVkN2RlNzE2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL01lZGlhRWxlbWVudEF1ZGlvU291cmNlTm9k
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9NZWRpYUVsZW1lbnRB
dWRpb1NvdXJjZU5vZGUuY3BwCkBAIC00MywxMiArNDMsMTIgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogCiBXVEZfTUFLRV9JU09fQUxMT0NBVEVEX0lNUEwoTWVkaWFFbGVtZW50QXVkaW9Tb3VyY2VO
b2RlKTsKIAotUmVmPE1lZGlhRWxlbWVudEF1ZGlvU291cmNlTm9kZT4gTWVkaWFFbGVtZW50QXVk
aW9Tb3VyY2VOb2RlOjpjcmVhdGUoQXVkaW9Db250ZXh0JiBjb250ZXh0LCBIVE1MTWVkaWFFbGVt
ZW50JiBtZWRpYUVsZW1lbnQpCitSZWY8TWVkaWFFbGVtZW50QXVkaW9Tb3VyY2VOb2RlPiBNZWRp
YUVsZW1lbnRBdWRpb1NvdXJjZU5vZGU6OmNyZWF0ZShBdWRpb0NvbnRleHRCYXNlJiBjb250ZXh0
LCBIVE1MTWVkaWFFbGVtZW50JiBtZWRpYUVsZW1lbnQpCiB7CiAgICAgcmV0dXJuIGFkb3B0UmVm
KCpuZXcgTWVkaWFFbGVtZW50QXVkaW9Tb3VyY2VOb2RlKGNvbnRleHQsIG1lZGlhRWxlbWVudCkp
OwogfQogCi1NZWRpYUVsZW1lbnRBdWRpb1NvdXJjZU5vZGU6Ok1lZGlhRWxlbWVudEF1ZGlvU291
cmNlTm9kZShBdWRpb0NvbnRleHQmIGNvbnRleHQsIEhUTUxNZWRpYUVsZW1lbnQmIG1lZGlhRWxl
bWVudCkKK01lZGlhRWxlbWVudEF1ZGlvU291cmNlTm9kZTo6TWVkaWFFbGVtZW50QXVkaW9Tb3Vy
Y2VOb2RlKEF1ZGlvQ29udGV4dEJhc2UmIGNvbnRleHQsIEhUTUxNZWRpYUVsZW1lbnQmIG1lZGlh
RWxlbWVudCkKICAgICA6IEF1ZGlvTm9kZShjb250ZXh0LCBjb250ZXh0LnNhbXBsZVJhdGUoKSkK
ICAgICAsIG1fbWVkaWFFbGVtZW50KG1lZGlhRWxlbWVudCkKICAgICAsIG1fc291cmNlTnVtYmVy
T2ZDaGFubmVscygwKQpAQCAtOTcsNyArOTcsNyBAQCB2b2lkIE1lZGlhRWxlbWVudEF1ZGlvU291
cmNlTm9kZTo6c2V0Rm9ybWF0KHNpemVfdCBudW1iZXJPZkNoYW5uZWxzLCBmbG9hdCBzb3VyYwog
CiAgICAgICAgIHsKICAgICAgICAgICAgIC8vIFRoZSBjb250ZXh0IG11c3QgYmUgbG9ja2VkIHdo
ZW4gY2hhbmdpbmcgdGhlIG51bWJlciBvZiBvdXRwdXQgY2hhbm5lbHMuCi0gICAgICAgICAgICBB
dWRpb0NvbnRleHQ6OkF1dG9Mb2NrZXIgY29udGV4dExvY2tlcihjb250ZXh0KCkpOworICAgICAg
ICAgICAgQXVkaW9Db250ZXh0QmFzZTo6QXV0b0xvY2tlciBjb250ZXh0TG9ja2VyKGNvbnRleHQo
KSk7CiAKICAgICAgICAgICAgIC8vIERvIGFueSBuZWNlc3NzYXJ5IHJlLWNvbmZpZ3VyYXRpb24g
dG8gdGhlIG91dHB1dCdzIG51bWJlciBvZiBjaGFubmVscy4KICAgICAgICAgICAgIG91dHB1dCgw
KS0+c2V0TnVtYmVyT2ZDaGFubmVscyhudW1iZXJPZkNoYW5uZWxzKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vTWVkaWFFbGVtZW50QXVkaW9Tb3VyY2VOb2Rl
LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL01lZGlhRWxlbWVudEF1ZGlvU291
cmNlTm9kZS5oCmluZGV4IDNhMTMxNTQxNWYxLi43MWQwZWQxMzhhNSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9NZWRpYUVsZW1lbnRBdWRpb1NvdXJjZU5vZGUu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL01lZGlhRWxlbWVudEF1ZGlv
U291cmNlTm9kZS5oCkBAIC00MCw3ICs0MCw3IEBAIGNsYXNzIEF1ZGlvQ29udGV4dDsKIGNsYXNz
IE1lZGlhRWxlbWVudEF1ZGlvU291cmNlTm9kZSBmaW5hbCA6IHB1YmxpYyBBdWRpb05vZGUsIHB1
YmxpYyBBdWRpb1NvdXJjZVByb3ZpZGVyQ2xpZW50IHsKICAgICBXVEZfTUFLRV9JU09fQUxMT0NB
VEVEKE1lZGlhRWxlbWVudEF1ZGlvU291cmNlTm9kZSk7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJl
ZjxNZWRpYUVsZW1lbnRBdWRpb1NvdXJjZU5vZGU+IGNyZWF0ZShBdWRpb0NvbnRleHQmLCBIVE1M
TWVkaWFFbGVtZW50Jik7CisgICAgc3RhdGljIFJlZjxNZWRpYUVsZW1lbnRBdWRpb1NvdXJjZU5v
ZGU+IGNyZWF0ZShBdWRpb0NvbnRleHRCYXNlJiwgSFRNTE1lZGlhRWxlbWVudCYpOwogCiAgICAg
dmlydHVhbCB+TWVkaWFFbGVtZW50QXVkaW9Tb3VyY2VOb2RlKCk7CiAKQEAgLTU3LDcgKzU3LDcg
QEAgcHVibGljOgogICAgIHZvaWQgdW5sb2NrKCk7CiAKIHByaXZhdGU6Ci0gICAgTWVkaWFFbGVt
ZW50QXVkaW9Tb3VyY2VOb2RlKEF1ZGlvQ29udGV4dCYsIEhUTUxNZWRpYUVsZW1lbnQmKTsKKyAg
ICBNZWRpYUVsZW1lbnRBdWRpb1NvdXJjZU5vZGUoQXVkaW9Db250ZXh0QmFzZSYsIEhUTUxNZWRp
YUVsZW1lbnQmKTsKIAogICAgIGRvdWJsZSB0YWlsVGltZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0
dXJuIDA7IH0KICAgICBkb3VibGUgbGF0ZW5jeVRpbWUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVy
biAwOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL01lZGlh
U3RyZWFtQXVkaW9EZXN0aW5hdGlvbk5vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJhdWRpby9NZWRpYVN0cmVhbUF1ZGlvRGVzdGluYXRpb25Ob2RlLmNwcAppbmRleCBkNzY2Mjkz
MDMwOC4uMzBmMWEyMjJiZTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
YXVkaW8vTWVkaWFTdHJlYW1BdWRpb0Rlc3RpbmF0aW9uTm9kZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJhdWRpby9NZWRpYVN0cmVhbUF1ZGlvRGVzdGluYXRpb25Ob2RlLmNw
cApAQCAtMzksMTIgKzM5LDEyIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogV1RGX01BS0VfSVNP
X0FMTE9DQVRFRF9JTVBMKE1lZGlhU3RyZWFtQXVkaW9EZXN0aW5hdGlvbk5vZGUpOwogCi1SZWY8
TWVkaWFTdHJlYW1BdWRpb0Rlc3RpbmF0aW9uTm9kZT4gTWVkaWFTdHJlYW1BdWRpb0Rlc3RpbmF0
aW9uTm9kZTo6Y3JlYXRlKEF1ZGlvQ29udGV4dCYgY29udGV4dCwgc2l6ZV90IG51bWJlck9mQ2hh
bm5lbHMpCitSZWY8TWVkaWFTdHJlYW1BdWRpb0Rlc3RpbmF0aW9uTm9kZT4gTWVkaWFTdHJlYW1B
dWRpb0Rlc3RpbmF0aW9uTm9kZTo6Y3JlYXRlKEF1ZGlvQ29udGV4dEJhc2UmIGNvbnRleHQsIHNp
emVfdCBudW1iZXJPZkNoYW5uZWxzKQogewogICAgIHJldHVybiBhZG9wdFJlZigqbmV3IE1lZGlh
U3RyZWFtQXVkaW9EZXN0aW5hdGlvbk5vZGUoY29udGV4dCwgbnVtYmVyT2ZDaGFubmVscykpOwog
fQogCi1NZWRpYVN0cmVhbUF1ZGlvRGVzdGluYXRpb25Ob2RlOjpNZWRpYVN0cmVhbUF1ZGlvRGVz
dGluYXRpb25Ob2RlKEF1ZGlvQ29udGV4dCYgY29udGV4dCwgc2l6ZV90IG51bWJlck9mQ2hhbm5l
bHMpCitNZWRpYVN0cmVhbUF1ZGlvRGVzdGluYXRpb25Ob2RlOjpNZWRpYVN0cmVhbUF1ZGlvRGVz
dGluYXRpb25Ob2RlKEF1ZGlvQ29udGV4dEJhc2UmIGNvbnRleHQsIHNpemVfdCBudW1iZXJPZkNo
YW5uZWxzKQogICAgIDogQXVkaW9CYXNpY0luc3BlY3Rvck5vZGUoY29udGV4dCwgY29udGV4dC5z
YW1wbGVSYXRlKCksIG51bWJlck9mQ2hhbm5lbHMpCiAgICAgLCBtX3NvdXJjZShNZWRpYVN0cmVh
bUF1ZGlvU291cmNlOjpjcmVhdGUoY29udGV4dC5zYW1wbGVSYXRlKCkpKQogICAgICwgbV9zdHJl
YW0oTWVkaWFTdHJlYW06OmNyZWF0ZSgqY29udGV4dC5kb2N1bWVudCgpLCBNZWRpYVN0cmVhbVBy
aXZhdGU6OmNyZWF0ZShjb250ZXh0LmRvY3VtZW50KCktPmxvZ2dlcigpLCBtX3NvdXJjZS5jb3B5
UmVmKCkpKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vTWVk
aWFTdHJlYW1BdWRpb0Rlc3RpbmF0aW9uTm9kZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJhdWRpby9NZWRpYVN0cmVhbUF1ZGlvRGVzdGluYXRpb25Ob2RlLmgKaW5kZXggZjVhN2U4ZmVj
NGEuLmRiYWQ5MjhkNzk2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1
ZGlvL01lZGlhU3RyZWFtQXVkaW9EZXN0aW5hdGlvbk5vZGUuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmF1ZGlvL01lZGlhU3RyZWFtQXVkaW9EZXN0aW5hdGlvbk5vZGUuaApAQCAt
MzIsMTMgKzMyLDEzIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgQXVkaW9Db250
ZXh0OworY2xhc3MgQXVkaW9Db250ZXh0QmFzZTsKIGNsYXNzIE1lZGlhU3RyZWFtQXVkaW9Tb3Vy
Y2U7CiAKIGNsYXNzIE1lZGlhU3RyZWFtQXVkaW9EZXN0aW5hdGlvbk5vZGUgZmluYWwgOiBwdWJs
aWMgQXVkaW9CYXNpY0luc3BlY3Rvck5vZGUgewogICAgIFdURl9NQUtFX0lTT19BTExPQ0FURUQo
TWVkaWFTdHJlYW1BdWRpb0Rlc3RpbmF0aW9uTm9kZSk7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJl
ZjxNZWRpYVN0cmVhbUF1ZGlvRGVzdGluYXRpb25Ob2RlPiBjcmVhdGUoQXVkaW9Db250ZXh0Jiwg
c2l6ZV90IG51bWJlck9mQ2hhbm5lbHMpOworICAgIHN0YXRpYyBSZWY8TWVkaWFTdHJlYW1BdWRp
b0Rlc3RpbmF0aW9uTm9kZT4gY3JlYXRlKEF1ZGlvQ29udGV4dEJhc2UmLCBzaXplX3QgbnVtYmVy
T2ZDaGFubmVscyk7CiAKICAgICB2aXJ0dWFsIH5NZWRpYVN0cmVhbUF1ZGlvRGVzdGluYXRpb25O
b2RlKCk7CiAKQEAgLTQ5LDcgKzQ5LDcgQEAgcHVibGljOgogICAgIHZvaWQgcmVzZXQoKSBmaW5h
bDsKICAgICAKIHByaXZhdGU6Ci0gICAgTWVkaWFTdHJlYW1BdWRpb0Rlc3RpbmF0aW9uTm9kZShB
dWRpb0NvbnRleHQmLCBzaXplX3QgbnVtYmVyT2ZDaGFubmVscyk7CisgICAgTWVkaWFTdHJlYW1B
dWRpb0Rlc3RpbmF0aW9uTm9kZShBdWRpb0NvbnRleHRCYXNlJiwgc2l6ZV90IG51bWJlck9mQ2hh
bm5lbHMpOwogCiAgICAgZG91YmxlIHRhaWxUaW1lKCkgY29uc3QgZmluYWwgeyByZXR1cm4gMDsg
fQogICAgIGRvdWJsZSBsYXRlbmN5VGltZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIDA7IH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vTWVkaWFTdHJlYW1BdWRp
b1NvdXJjZU5vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9NZWRpYVN0
cmVhbUF1ZGlvU291cmNlTm9kZS5jcHAKaW5kZXggMWI0ZmI2ZDE5MjIuLjM1ZTU1YTkyMDJjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL01lZGlhU3RyZWFtQXVk
aW9Tb3VyY2VOb2RlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL01l
ZGlhU3RyZWFtQXVkaW9Tb3VyY2VOb2RlLmNwcApAQCAtMzgsMTIgKzM4LDEyIEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAogV1RGX01BS0VfSVNPX0FMTE9DQVRFRF9JTVBMKE1lZGlhU3RyZWFtQXVk
aW9Tb3VyY2VOb2RlKTsKIAotUmVmPE1lZGlhU3RyZWFtQXVkaW9Tb3VyY2VOb2RlPiBNZWRpYVN0
cmVhbUF1ZGlvU291cmNlTm9kZTo6Y3JlYXRlKEF1ZGlvQ29udGV4dCYgY29udGV4dCwgTWVkaWFT
dHJlYW0mIG1lZGlhU3RyZWFtLCBNZWRpYVN0cmVhbVRyYWNrJiBhdWRpb1RyYWNrKQorUmVmPE1l
ZGlhU3RyZWFtQXVkaW9Tb3VyY2VOb2RlPiBNZWRpYVN0cmVhbUF1ZGlvU291cmNlTm9kZTo6Y3Jl
YXRlKEF1ZGlvQ29udGV4dEJhc2UmIGNvbnRleHQsIE1lZGlhU3RyZWFtJiBtZWRpYVN0cmVhbSwg
TWVkaWFTdHJlYW1UcmFjayYgYXVkaW9UcmFjaykKIHsKICAgICByZXR1cm4gYWRvcHRSZWYoKm5l
dyBNZWRpYVN0cmVhbUF1ZGlvU291cmNlTm9kZShjb250ZXh0LCBtZWRpYVN0cmVhbSwgYXVkaW9U
cmFjaykpOwogfQogCi1NZWRpYVN0cmVhbUF1ZGlvU291cmNlTm9kZTo6TWVkaWFTdHJlYW1BdWRp
b1NvdXJjZU5vZGUoQXVkaW9Db250ZXh0JiBjb250ZXh0LCBNZWRpYVN0cmVhbSYgbWVkaWFTdHJl
YW0sIE1lZGlhU3RyZWFtVHJhY2smIGF1ZGlvVHJhY2spCitNZWRpYVN0cmVhbUF1ZGlvU291cmNl
Tm9kZTo6TWVkaWFTdHJlYW1BdWRpb1NvdXJjZU5vZGUoQXVkaW9Db250ZXh0QmFzZSYgY29udGV4
dCwgTWVkaWFTdHJlYW0mIG1lZGlhU3RyZWFtLCBNZWRpYVN0cmVhbVRyYWNrJiBhdWRpb1RyYWNr
KQogICAgIDogQXVkaW9Ob2RlKGNvbnRleHQsIGNvbnRleHQuc2FtcGxlUmF0ZSgpKQogICAgICwg
bV9tZWRpYVN0cmVhbShtZWRpYVN0cmVhbSkKICAgICAsIG1fYXVkaW9UcmFjayhhdWRpb1RyYWNr
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9NZWRpYVN0cmVh
bUF1ZGlvU291cmNlTm9kZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9NZWRp
YVN0cmVhbUF1ZGlvU291cmNlTm9kZS5oCmluZGV4IGUzZWRlZmUxYmQ1Li5jNzJkMzEyMjMzZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9NZWRpYVN0cmVhbUF1
ZGlvU291cmNlTm9kZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vTWVk
aWFTdHJlYW1BdWRpb1NvdXJjZU5vZGUuaApAQCAtNDAsNyArNDAsNyBAQCBjbGFzcyBNdWx0aUNo
YW5uZWxSZXNhbXBsZXI7CiBjbGFzcyBNZWRpYVN0cmVhbUF1ZGlvU291cmNlTm9kZSBmaW5hbCA6
IHB1YmxpYyBBdWRpb05vZGUsIHB1YmxpYyBBdWRpb1NvdXJjZVByb3ZpZGVyQ2xpZW50IHsKICAg
ICBXVEZfTUFLRV9JU09fQUxMT0NBVEVEKE1lZGlhU3RyZWFtQXVkaW9Tb3VyY2VOb2RlKTsKIHB1
YmxpYzoKLSAgICBzdGF0aWMgUmVmPE1lZGlhU3RyZWFtQXVkaW9Tb3VyY2VOb2RlPiBjcmVhdGUo
QXVkaW9Db250ZXh0JiwgTWVkaWFTdHJlYW0mLCBNZWRpYVN0cmVhbVRyYWNrJik7CisgICAgc3Rh
dGljIFJlZjxNZWRpYVN0cmVhbUF1ZGlvU291cmNlTm9kZT4gY3JlYXRlKEF1ZGlvQ29udGV4dEJh
c2UmLCBNZWRpYVN0cmVhbSYsIE1lZGlhU3RyZWFtVHJhY2smKTsKIAogICAgIHZpcnR1YWwgfk1l
ZGlhU3RyZWFtQXVkaW9Tb3VyY2VOb2RlKCk7CiAKQEAgLTU0LDcgKzU0LDcgQEAgcHVibGljOgog
ICAgIHZvaWQgc2V0Rm9ybWF0KHNpemVfdCBudW1iZXJPZkNoYW5uZWxzLCBmbG9hdCBzYW1wbGVS
YXRlKSBvdmVycmlkZTsKIAogcHJpdmF0ZToKLSAgICBNZWRpYVN0cmVhbUF1ZGlvU291cmNlTm9k
ZShBdWRpb0NvbnRleHQmLCBNZWRpYVN0cmVhbSYsIE1lZGlhU3RyZWFtVHJhY2smKTsKKyAgICBN
ZWRpYVN0cmVhbUF1ZGlvU291cmNlTm9kZShBdWRpb0NvbnRleHRCYXNlJiwgTWVkaWFTdHJlYW0m
LCBNZWRpYVN0cmVhbVRyYWNrJik7CiAKICAgICBkb3VibGUgdGFpbFRpbWUoKSBjb25zdCBvdmVy
cmlkZSB7IHJldHVybiAwOyB9CiAgICAgZG91YmxlIGxhdGVuY3lUaW1lKCkgY29uc3Qgb3ZlcnJp
ZGUgeyByZXR1cm4gMDsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJh
dWRpby9PZmZsaW5lQXVkaW9Db250ZXh0LmlkbCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
YXVkaW8vT2ZmbGluZUF1ZGlvQ29udGV4dC5pZGwKaW5kZXggYzZlMGQ3NGYwMmYuLjZmMTIyYTdj
M2M4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL09mZmxpbmVB
dWRpb0NvbnRleHQuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vT2Zm
bGluZUF1ZGlvQ29udGV4dC5pZGwKQEAgLTI4LDYgKzI4LDYgQEAKICAgICBDb25zdHJ1Y3Rvcih1
bnNpZ25lZCBsb25nIG51bWJlck9mQ2hhbm5lbHMsIHVuc2lnbmVkIGxvbmcgbnVtYmVyT2ZGcmFt
ZXMsIHVucmVzdHJpY3RlZCBmbG9hdCBzYW1wbGVSYXRlKSwKICAgICBDb25zdHJ1Y3Rvck1heVRo
cm93RXhjZXB0aW9uLAogICAgIENvbnN0cnVjdG9yQ2FsbFdpdGg9U2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCwKLSAgICBJbnRlcmZhY2VOYW1lPXdlYmtpdE9mZmxpbmVBdWRpb0NvbnRleHQKKyAgICBF
bmFibGVkQnlTZXR0aW5nPU1vZGVyblVucHJlZml4ZWRXZWJBdWRpbywKIF0gaW50ZXJmYWNlIE9m
ZmxpbmVBdWRpb0NvbnRleHQgOiBBdWRpb0NvbnRleHQgewogfTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vT2ZmbGluZUF1ZGlvRGVzdGluYXRpb25Ob2RlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vT2ZmbGluZUF1ZGlvRGVzdGluYXRp
b25Ob2RlLmNwcAppbmRleCA2YTE5NTU0NmNmNy4uZmVjNTA4Y2JmZjEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vT2ZmbGluZUF1ZGlvRGVzdGluYXRpb25Ob2Rl
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL09mZmxpbmVBdWRpb0Rl
c3RpbmF0aW9uTm9kZS5jcHAKQEAgLTQxLDcgKzQxLDcgQEAgV1RGX01BS0VfSVNPX0FMTE9DQVRF
RF9JTVBMKE9mZmxpbmVBdWRpb0Rlc3RpbmF0aW9uTm9kZSk7CiAgICAgCiBjb25zdCBzaXplX3Qg
cmVuZGVyUXVhbnR1bVNpemUgPSAxMjg7ICAgIAogCi1PZmZsaW5lQXVkaW9EZXN0aW5hdGlvbk5v
ZGU6Ok9mZmxpbmVBdWRpb0Rlc3RpbmF0aW9uTm9kZShBdWRpb0NvbnRleHQmIGNvbnRleHQsIEF1
ZGlvQnVmZmVyKiByZW5kZXJUYXJnZXQpCitPZmZsaW5lQXVkaW9EZXN0aW5hdGlvbk5vZGU6Ok9m
ZmxpbmVBdWRpb0Rlc3RpbmF0aW9uTm9kZShBdWRpb0NvbnRleHRCYXNlJiBjb250ZXh0LCBBdWRp
b0J1ZmZlciogcmVuZGVyVGFyZ2V0KQogICAgIDogQXVkaW9EZXN0aW5hdGlvbk5vZGUoY29udGV4
dCwgcmVuZGVyVGFyZ2V0LT5zYW1wbGVSYXRlKCkpCiAgICAgLCBtX3JlbmRlclRhcmdldChyZW5k
ZXJUYXJnZXQpCiAgICAgLCBtX3N0YXJ0ZWRSZW5kZXJpbmcoZmFsc2UpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL09mZmxpbmVBdWRpb0Rlc3RpbmF0aW9uTm9k
ZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9PZmZsaW5lQXVkaW9EZXN0aW5h
dGlvbk5vZGUuaAppbmRleCBkYTI0OTU3NGQ0OC4uZjg3MTBmZGUxMGQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vT2ZmbGluZUF1ZGlvRGVzdGluYXRpb25Ob2Rl
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9PZmZsaW5lQXVkaW9EZXN0
aW5hdGlvbk5vZGUuaApAQCAtMzcsOSArMzcsOSBAQCBjbGFzcyBBdWRpb0NvbnRleHQ7CiBjbGFz
cyBPZmZsaW5lQXVkaW9EZXN0aW5hdGlvbk5vZGUgZmluYWwgOiBwdWJsaWMgQXVkaW9EZXN0aW5h
dGlvbk5vZGUgewogICAgIFdURl9NQUtFX0lTT19BTExPQ0FURUQoT2ZmbGluZUF1ZGlvRGVzdGlu
YXRpb25Ob2RlKTsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPE9mZmxpbmVBdWRpb0Rlc3RpbmF0
aW9uTm9kZT4gY3JlYXRlKEF1ZGlvQ29udGV4dCYgY29udGV4dCwgQXVkaW9CdWZmZXIqIHJlbmRl
clRhcmdldCkKKyAgICBzdGF0aWMgUmVmPE9mZmxpbmVBdWRpb0Rlc3RpbmF0aW9uTm9kZT4gY3Jl
YXRlKEF1ZGlvQ29udGV4dEJhc2UmIGNvbnRleHQsIEF1ZGlvQnVmZmVyKiByZW5kZXJUYXJnZXQp
CiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBPZmZsaW5lQXVkaW9EZXN0aW5h
dGlvbk5vZGUoY29udGV4dCwgcmVuZGVyVGFyZ2V0KSk7ICAgICAKKyAgICAgICAgcmV0dXJuIGFk
b3B0UmVmKCpuZXcgT2ZmbGluZUF1ZGlvRGVzdGluYXRpb25Ob2RlKGNvbnRleHQsIHJlbmRlclRh
cmdldCkpOwogICAgIH0KIAogICAgIHZpcnR1YWwgfk9mZmxpbmVBdWRpb0Rlc3RpbmF0aW9uTm9k
ZSgpOwpAQCAtNTUsNyArNTUsNyBAQCBwdWJsaWM6CiAgICAgZmxvYXQgc2FtcGxlUmF0ZSgpIGNv
bnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fcmVuZGVyVGFyZ2V0LT5zYW1wbGVSYXRlKCk7IH0KIAog
cHJpdmF0ZToKLSAgICBPZmZsaW5lQXVkaW9EZXN0aW5hdGlvbk5vZGUoQXVkaW9Db250ZXh0Jiwg
QXVkaW9CdWZmZXIqIHJlbmRlclRhcmdldCk7CisgICAgT2ZmbGluZUF1ZGlvRGVzdGluYXRpb25O
b2RlKEF1ZGlvQ29udGV4dEJhc2UmLCBBdWRpb0J1ZmZlciogcmVuZGVyVGFyZ2V0KTsKIAogICAg
IC8vIFRoaXMgQXVkaW9Ob2RlIHJlbmRlcnMgaW50byB0aGlzIEF1ZGlvQnVmZmVyLgogICAgIFJl
ZlB0cjxBdWRpb0J1ZmZlcj4gbV9yZW5kZXJUYXJnZXQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmF1ZGlvL09zY2lsbGF0b3JOb2RlLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViYXVkaW8vT3NjaWxsYXRvck5vZGUuY3BwCmluZGV4IDk1NjAwNTNhNDgwLi5l
OGYzMWM3MjIwZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9P
c2NpbGxhdG9yTm9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9P
c2NpbGxhdG9yTm9kZS5jcHAKQEAgLTQ1LDEyICs0NSwxMiBAQCBQZXJpb2RpY1dhdmUqIE9zY2ls
bGF0b3JOb2RlOjpzX3BlcmlvZGljV2F2ZVNxdWFyZSA9IG51bGxwdHI7CiBQZXJpb2RpY1dhdmUq
IE9zY2lsbGF0b3JOb2RlOjpzX3BlcmlvZGljV2F2ZVNhd3Rvb3RoID0gbnVsbHB0cjsKIFBlcmlv
ZGljV2F2ZSogT3NjaWxsYXRvck5vZGU6OnNfcGVyaW9kaWNXYXZlVHJpYW5nbGUgPSBudWxscHRy
OwogCi1SZWY8T3NjaWxsYXRvck5vZGU+IE9zY2lsbGF0b3JOb2RlOjpjcmVhdGUoQXVkaW9Db250
ZXh0JiBjb250ZXh0LCBmbG9hdCBzYW1wbGVSYXRlKQorUmVmPE9zY2lsbGF0b3JOb2RlPiBPc2Np
bGxhdG9yTm9kZTo6Y3JlYXRlKEF1ZGlvQ29udGV4dEJhc2UmIGNvbnRleHQsIGZsb2F0IHNhbXBs
ZVJhdGUpCiB7CiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgT3NjaWxsYXRvck5vZGUoY29udGV4
dCwgc2FtcGxlUmF0ZSkpOwogfQogCi1Pc2NpbGxhdG9yTm9kZTo6T3NjaWxsYXRvck5vZGUoQXVk
aW9Db250ZXh0JiBjb250ZXh0LCBmbG9hdCBzYW1wbGVSYXRlKQorT3NjaWxsYXRvck5vZGU6Ok9z
Y2lsbGF0b3JOb2RlKEF1ZGlvQ29udGV4dEJhc2UmIGNvbnRleHQsIGZsb2F0IHNhbXBsZVJhdGUp
CiAgICAgOiBBdWRpb1NjaGVkdWxlZFNvdXJjZU5vZGUoY29udGV4dCwgc2FtcGxlUmF0ZSkKICAg
ICAsIG1fZmlyc3RSZW5kZXIodHJ1ZSkKICAgICAsIG1fdmlydHVhbFJlYWRJbmRleCgwKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9Pc2NpbGxhdG9yTm9kZS5o
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9Pc2NpbGxhdG9yTm9kZS5oCmluZGV4
IDQyZmYwYzE5MjRiLi4wODk1YmNlM2RkZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJhdWRpby9Pc2NpbGxhdG9yTm9kZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViYXVkaW8vT3NjaWxsYXRvck5vZGUuaApAQCAtNDUsNyArNDUsNyBAQCBwdWJsaWM6CiAg
ICAgICAgIEN1c3RvbQogICAgIH07CiAKLSAgICBzdGF0aWMgUmVmPE9zY2lsbGF0b3JOb2RlPiBj
cmVhdGUoQXVkaW9Db250ZXh0JiwgZmxvYXQgc2FtcGxlUmF0ZSk7CisgICAgc3RhdGljIFJlZjxP
c2NpbGxhdG9yTm9kZT4gY3JlYXRlKEF1ZGlvQ29udGV4dEJhc2UmLCBmbG9hdCBzYW1wbGVSYXRl
KTsKIAogICAgIHZpcnR1YWwgfk9zY2lsbGF0b3JOb2RlKCk7CiAKQEAgLTYwLDcgKzYwLDcgQEAg
cHVibGljOgogICAgIHZvaWQgc2V0UGVyaW9kaWNXYXZlKFBlcmlvZGljV2F2ZSopOwogCiBwcml2
YXRlOgotICAgIE9zY2lsbGF0b3JOb2RlKEF1ZGlvQ29udGV4dCYsIGZsb2F0IHNhbXBsZVJhdGUp
OworICAgIE9zY2lsbGF0b3JOb2RlKEF1ZGlvQ29udGV4dEJhc2UmLCBmbG9hdCBzYW1wbGVSYXRl
KTsKIAogICAgIHZvaWQgcHJvY2VzcyhzaXplX3QgZnJhbWVzVG9Qcm9jZXNzKSBmaW5hbDsKICAg
ICB2b2lkIHJlc2V0KCkgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmF1ZGlvL1Bhbm5lck5vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRp
by9QYW5uZXJOb2RlLmNwcAppbmRleCBlYzgwZTY5ZDJhYi4uYWU0MmYxMTRiYmMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vUGFubmVyTm9kZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9QYW5uZXJOb2RlLmNwcApAQCAtNDgsOCAr
NDgsMTMgQEAgc3RhdGljIHZvaWQgZml4TkFOcyhkb3VibGUgJngpCiAgICAgICAgIHggPSAwLjA7
CiB9CiAKLVBhbm5lck5vZGU6OlBhbm5lck5vZGUoQXVkaW9Db250ZXh0JiBjb250ZXh0LCBmbG9h
dCBzYW1wbGVSYXRlKQorUGFubmVyTm9kZUJhc2U6OlBhbm5lck5vZGVCYXNlKEF1ZGlvQ29udGV4
dEJhc2UmIGNvbnRleHQsIGZsb2F0IHNhbXBsZVJhdGUpCiAgICAgOiBBdWRpb05vZGUoY29udGV4
dCwgc2FtcGxlUmF0ZSkKK3sKK30KKworUGFubmVyTm9kZTo6UGFubmVyTm9kZShBdWRpb0NvbnRl
eHQmIGNvbnRleHQsIGZsb2F0IHNhbXBsZVJhdGUpCisgICAgOiBQYW5uZXJOb2RlQmFzZShjb250
ZXh0LCBzYW1wbGVSYXRlKQogICAgICwgbV9wYW5uaW5nTW9kZWwoUGFubmluZ01vZGVsVHlwZTo6
SFJURikKICAgICAsIG1fbGFzdEdhaW4oLTEuMCkKICAgICAsIG1fcG9zaXRpb25YKEF1ZGlvUGFy
YW06OmNyZWF0ZShjb250ZXh0LCAicG9zaXRpb25YIl9zLCAwLCAtRkxUX01BWCwgRkxUX01BWCkp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1Bhbm5lck5vZGUu
aCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vUGFubmVyTm9kZS5oCmluZGV4IDg0
ODBjMjMzMjgwLi4yOWI2NDhkMDYwNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJhdWRpby9QYW5uZXJOb2RlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJh
dWRpby9QYW5uZXJOb2RlLmgKQEAgLTI2LDYgKzI2LDcgQEAKIAogI2lmIEVOQUJMRShXRUJfQVVE
SU8pCiAKKyNpbmNsdWRlICJBdWRpb0NvbnRleHQuaCIKICNpbmNsdWRlICJBdWRpb0xpc3RlbmVy
LmgiCiAjaW5jbHVkZSAiQXVkaW9Ob2RlLmgiCiAjaW5jbHVkZSAiQXVkaW9QYXJhbS5oIgpAQCAt
NDEsNiArNDIsMTYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBIUlRGRGF0YWJhc2VM
b2FkZXI7CiAKK2NsYXNzIFBhbm5lck5vZGVCYXNlIDogcHVibGljIEF1ZGlvTm9kZSB7CitwdWJs
aWM6CisgICAgdmlydHVhbCB+UGFubmVyTm9kZUJhc2UoKSA9IGRlZmF1bHQ7CisKKyAgICB2aXJ0
dWFsIGZsb2F0IGRvcHBsZXJSYXRlKCkgPSAwOworCitwcm90ZWN0ZWQ6CisgICAgUGFubmVyTm9k
ZUJhc2UoQXVkaW9Db250ZXh0QmFzZSYsIGZsb2F0IHNhbXBsZVJhdGUpOworfTsKKwogLy8gUGFu
bmVyTm9kZSBpcyBhbiBBdWRpb05vZGUgd2l0aCBvbmUgaW5wdXQgYW5kIG9uZSBvdXRwdXQuCiAv
LyBJdCBwb3NpdGlvbnMgYSBzb3VuZCBpbiAzRCBzcGFjZSwgd2l0aCB0aGUgZXhhY3QgZWZmZWN0
IGRlcGVuZGVudCBvbiB0aGUgcGFubmluZyBtb2RlbC4KIC8vIEl0IGhhcyBhIHBvc2l0aW9uIGFu
ZCBhbiBvcmllbnRhdGlvbiBpbiAzRCBzcGFjZSB3aGljaCBpcyByZWxhdGl2ZSB0byB0aGUgcG9z
aXRpb24gYW5kIG9yaWVudGF0aW9uIG9mIHRoZSBjb250ZXh0J3MgQXVkaW9MaXN0ZW5lci4KQEAg
LTQ4LDcgKzU5LDcgQEAgY2xhc3MgSFJURkRhdGFiYXNlTG9hZGVyOwogLy8gQSBjb25lIGVmZmVj
dCB3aWxsIGF0dGVudWF0ZSB0aGUgZ2FpbiBhcyB0aGUgb3JpZW50YXRpb24gbW92ZXMgYXdheSBm
cm9tIHRoZSBsaXN0ZW5lci4KIC8vIEFsbCBvZiB0aGVzZSBlZmZlY3RzIGZvbGxvdyB0aGUgT3Bl
bkFMIHNwZWNpZmljYXRpb24gdmVyeSBjbG9zZWx5LgogCi1jbGFzcyBQYW5uZXJOb2RlIGZpbmFs
IDogcHVibGljIEF1ZGlvTm9kZSB7CitjbGFzcyBQYW5uZXJOb2RlIGZpbmFsIDogcHVibGljIFBh
bm5lck5vZGVCYXNlIHsKICAgICBXVEZfTUFLRV9JU09fQUxMT0NBVEVEKFBhbm5lck5vZGUpOwog
cHVibGljOgogICAgIHN0YXRpYyBSZWY8UGFubmVyTm9kZT4gY3JlYXRlKEF1ZGlvQ29udGV4dCYg
Y29udGV4dCwgZmxvYXQgc2FtcGxlUmF0ZSkKQEAgLTU4LDYgKzY5LDkgQEAgcHVibGljOgogCiAg
ICAgdmlydHVhbCB+UGFubmVyTm9kZSgpOwogCisgICAgQXVkaW9Db250ZXh0JiBjb250ZXh0KCkg
eyByZXR1cm4gZG93bmNhc3Q8QXVkaW9Db250ZXh0PihBdWRpb05vZGU6OmNvbnRleHQoKSk7IH0K
KyAgICBjb25zdCBBdWRpb0NvbnRleHQmIGNvbnRleHQoKSBjb25zdCB7IHJldHVybiBkb3duY2Fz
dDxBdWRpb0NvbnRleHQ+KEF1ZGlvTm9kZTo6Y29udGV4dCgpKTsgfQorCiAgICAgLy8gQXVkaW9O
b2RlCiAgICAgdm9pZCBwcm9jZXNzKHNpemVfdCBmcmFtZXNUb1Byb2Nlc3MpIG92ZXJyaWRlOwog
ICAgIHZvaWQgcHVsbElucHV0cyhzaXplX3QgZnJhbWVzVG9Qcm9jZXNzKSBvdmVycmlkZTsKQEAg
LTExMSw3ICsxMjUsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRDb25lT3V0ZXJHYWluKGRvdWJs
ZSBhbmdsZSkgeyBtX2NvbmVFZmZlY3Quc2V0T3V0ZXJHYWluKGFuZ2xlKTsgfQogCiAgICAgdm9p
ZCBnZXRBemltdXRoRWxldmF0aW9uKGRvdWJsZSogb3V0QXppbXV0aCwgZG91YmxlKiBvdXRFbGV2
YXRpb24pOwotICAgIGZsb2F0IGRvcHBsZXJSYXRlKCk7CisgICAgZmxvYXQgZG9wcGxlclJhdGUo
KSBmaW5hbDsKIAogICAgIC8vIEFjY2Vzc29ycyBmb3IgZHluYW1pY2FsbHkgY2FsY3VsYXRlZCBn
YWluIHZhbHVlcy4KICAgICBBdWRpb1BhcmFtKiBkaXN0YW5jZUdhaW4oKSB7IHJldHVybiBtX2Rp
c3RhbmNlR2Fpbi5nZXQoKTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJhdWRpby9QYW5uZXJOb2RlLmlkbCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8v
UGFubmVyTm9kZS5pZGwKaW5kZXggMDMyOTgzN2QyZjUuLjMyZDg5MWRjMmFkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1Bhbm5lck5vZGUuaWRsCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vUGFubmVyTm9kZS5pZGwKQEAgLTQyLDcgKzQy
LDcgQEAKIFsKICAgICBDb25kaXRpb25hbD1XRUJfQVVESU8sCiAgICAgSlNHZW5lcmF0ZVRvSlNP
YmplY3QsCi0gICAgSW50ZXJmYWNlTmFtZT13ZWJraXRBdWRpb1Bhbm5lck5vZGUsCisgICAgRW5h
YmxlZEJ5U2V0dGluZz1Nb2Rlcm5VbnByZWZpeGVkV2ViQXVkaW8sCiBdIGludGVyZmFjZSBQYW5u
ZXJOb2RlIDogQXVkaW9Ob2RlIHsKICAgICAvLyBEZWZhdWx0IG1vZGVsIGZvciBzdGVyZW8gaXMg
SFJURiAKICAgICBhdHRyaWJ1dGUgUGFubmluZ01vZGVsVHlwZSBwYW5uaW5nTW9kZWw7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1NjcmlwdFByb2Nlc3Nvck5v
ZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9TY3JpcHRQcm9jZXNzb3JO
b2RlLmNwcAppbmRleCA5MWM3NTM3ZTE1ZS4uNzYxMGIxNTAyNDggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vU2NyaXB0UHJvY2Vzc29yTm9kZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9TY3JpcHRQcm9jZXNzb3JOb2RlLmNwcApA
QCAtNDQsMTIgKzQ0LDEyIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogV1RGX01BS0VfSVNPX0FM
TE9DQVRFRF9JTVBMKFNjcmlwdFByb2Nlc3Nvck5vZGUpOwogCi1SZWY8U2NyaXB0UHJvY2Vzc29y
Tm9kZT4gU2NyaXB0UHJvY2Vzc29yTm9kZTo6Y3JlYXRlKEF1ZGlvQ29udGV4dCYgY29udGV4dCwg
ZmxvYXQgc2FtcGxlUmF0ZSwgc2l6ZV90IGJ1ZmZlclNpemUsIHVuc2lnbmVkIG51bWJlck9mSW5w
dXRDaGFubmVscywgdW5zaWduZWQgbnVtYmVyT2ZPdXRwdXRDaGFubmVscykKK1JlZjxTY3JpcHRQ
cm9jZXNzb3JOb2RlPiBTY3JpcHRQcm9jZXNzb3JOb2RlOjpjcmVhdGUoQXVkaW9Db250ZXh0QmFz
ZSYgY29udGV4dCwgZmxvYXQgc2FtcGxlUmF0ZSwgc2l6ZV90IGJ1ZmZlclNpemUsIHVuc2lnbmVk
IG51bWJlck9mSW5wdXRDaGFubmVscywgdW5zaWduZWQgbnVtYmVyT2ZPdXRwdXRDaGFubmVscykK
IHsKICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTY3JpcHRQcm9jZXNzb3JOb2RlKGNvbnRleHQs
IHNhbXBsZVJhdGUsIGJ1ZmZlclNpemUsIG51bWJlck9mSW5wdXRDaGFubmVscywgbnVtYmVyT2ZP
dXRwdXRDaGFubmVscykpOwogfQogCi1TY3JpcHRQcm9jZXNzb3JOb2RlOjpTY3JpcHRQcm9jZXNz
b3JOb2RlKEF1ZGlvQ29udGV4dCYgY29udGV4dCwgZmxvYXQgc2FtcGxlUmF0ZSwgc2l6ZV90IGJ1
ZmZlclNpemUsIHVuc2lnbmVkIG51bWJlck9mSW5wdXRDaGFubmVscywgdW5zaWduZWQgbnVtYmVy
T2ZPdXRwdXRDaGFubmVscykKK1NjcmlwdFByb2Nlc3Nvck5vZGU6OlNjcmlwdFByb2Nlc3Nvck5v
ZGUoQXVkaW9Db250ZXh0QmFzZSYgY29udGV4dCwgZmxvYXQgc2FtcGxlUmF0ZSwgc2l6ZV90IGJ1
ZmZlclNpemUsIHVuc2lnbmVkIG51bWJlck9mSW5wdXRDaGFubmVscywgdW5zaWduZWQgbnVtYmVy
T2ZPdXRwdXRDaGFubmVscykKICAgICA6IEF1ZGlvTm9kZShjb250ZXh0LCBzYW1wbGVSYXRlKQog
ICAgICwgQWN0aXZlRE9NT2JqZWN0KGNvbnRleHQuc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKQog
ICAgICwgbV9kb3VibGVCdWZmZXJJbmRleCgwKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJhdWRpby9TY3JpcHRQcm9jZXNzb3JOb2RlLmggYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmF1ZGlvL1NjcmlwdFByb2Nlc3Nvck5vZGUuaAppbmRleCA1YTRlN2NlNDc1Mi4u
NGMxNGEwNzU3ZGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8v
U2NyaXB0UHJvY2Vzc29yTm9kZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVk
aW8vU2NyaXB0UHJvY2Vzc29yTm9kZS5oCkBAIC01Miw3ICs1Miw3IEBAIHB1YmxpYzoKICAgICAv
LyBUaGlzIHZhbHVlIGNvbnRyb2xzIGhvdyBmcmVxdWVudGx5IHRoZSBvbmF1ZGlvcHJvY2VzcyBl
dmVudCBoYW5kbGVyIGlzIGNhbGxlZCBhbmQgaG93IG1hbnkgc2FtcGxlLWZyYW1lcyBuZWVkIHRv
IGJlIHByb2Nlc3NlZCBlYWNoIGNhbGwuCiAgICAgLy8gTG93ZXIgbnVtYmVycyBmb3IgYnVmZmVy
U2l6ZSB3aWxsIHJlc3VsdCBpbiBhIGxvd2VyIChiZXR0ZXIpIGxhdGVuY3kuIEhpZ2hlciBudW1i
ZXJzIHdpbGwgYmUgbmVjZXNzYXJ5IHRvIGF2b2lkIGF1ZGlvIGJyZWFrdXAgYW5kIGdsaXRjaGVz
LgogICAgIC8vIFRoZSB2YWx1ZSBjaG9zZW4gbXVzdCBjYXJlZnVsbHkgYmFsYW5jZSBiZXR3ZWVu
IGxhdGVuY3kgYW5kIGF1ZGlvIHF1YWxpdHkuCi0gICAgc3RhdGljIFJlZjxTY3JpcHRQcm9jZXNz
b3JOb2RlPiBjcmVhdGUoQXVkaW9Db250ZXh0JiwgZmxvYXQgc2FtcGxlUmF0ZSwgc2l6ZV90IGJ1
ZmZlclNpemUsIHVuc2lnbmVkIG51bWJlck9mSW5wdXRDaGFubmVscywgdW5zaWduZWQgbnVtYmVy
T2ZPdXRwdXRDaGFubmVscyk7CisgICAgc3RhdGljIFJlZjxTY3JpcHRQcm9jZXNzb3JOb2RlPiBj
cmVhdGUoQXVkaW9Db250ZXh0QmFzZSYsIGZsb2F0IHNhbXBsZVJhdGUsIHNpemVfdCBidWZmZXJT
aXplLCB1bnNpZ25lZCBudW1iZXJPZklucHV0Q2hhbm5lbHMsIHVuc2lnbmVkIG51bWJlck9mT3V0
cHV0Q2hhbm5lbHMpOwogCiAgICAgdmlydHVhbCB+U2NyaXB0UHJvY2Vzc29yTm9kZSgpOwogCkBA
IC03MSw3ICs3MSw3IEBAIHByaXZhdGU6CiAgICAgZG91YmxlIHRhaWxUaW1lKCkgY29uc3Qgb3Zl
cnJpZGU7CiAgICAgZG91YmxlIGxhdGVuY3lUaW1lKCkgY29uc3Qgb3ZlcnJpZGU7CiAKLSAgICBT
Y3JpcHRQcm9jZXNzb3JOb2RlKEF1ZGlvQ29udGV4dCYsIGZsb2F0IHNhbXBsZVJhdGUsIHNpemVf
dCBidWZmZXJTaXplLCB1bnNpZ25lZCBudW1iZXJPZklucHV0Q2hhbm5lbHMsIHVuc2lnbmVkIG51
bWJlck9mT3V0cHV0Q2hhbm5lbHMpOworICAgIFNjcmlwdFByb2Nlc3Nvck5vZGUoQXVkaW9Db250
ZXh0QmFzZSYsIGZsb2F0IHNhbXBsZVJhdGUsIHNpemVfdCBidWZmZXJTaXplLCB1bnNpZ25lZCBu
dW1iZXJPZklucHV0Q2hhbm5lbHMsIHVuc2lnbmVkIG51bWJlck9mT3V0cHV0Q2hhbm5lbHMpOwog
CiAgICAgdm9pZCBmaXJlUHJvY2Vzc0V2ZW50KCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViYXVkaW8vV2F2ZVNoYXBlck5vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJhdWRpby9XYXZlU2hhcGVyTm9kZS5jcHAKaW5kZXggNmU3ZThkZDFjOWMuLmFl
NGFmOWYyMzJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1dh
dmVTaGFwZXJOb2RlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1dh
dmVTaGFwZXJOb2RlLmNwcApAQCAtMzUsNyArMzUsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
IFdURl9NQUtFX0lTT19BTExPQ0FURURfSU1QTChXYXZlU2hhcGVyTm9kZSk7CiAKLVdhdmVTaGFw
ZXJOb2RlOjpXYXZlU2hhcGVyTm9kZShBdWRpb0NvbnRleHQmIGNvbnRleHQpCitXYXZlU2hhcGVy
Tm9kZTo6V2F2ZVNoYXBlck5vZGUoQXVkaW9Db250ZXh0QmFzZSYgY29udGV4dCkKICAgICA6IEF1
ZGlvQmFzaWNQcm9jZXNzb3JOb2RlKGNvbnRleHQsIGNvbnRleHQuc2FtcGxlUmF0ZSgpKQogewog
ICAgIHNldE5vZGVUeXBlKE5vZGVUeXBlV2F2ZVNoYXBlcik7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1dhdmVTaGFwZXJOb2RlLmggYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmF1ZGlvL1dhdmVTaGFwZXJOb2RlLmgKaW5kZXggZjQ5ZTM0OWJjM2QuLjVm
NDkzMjhiMjJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1dh
dmVTaGFwZXJOb2RlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9XYXZl
U2hhcGVyTm9kZS5oCkBAIC0zMyw3ICszMyw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNz
IFdhdmVTaGFwZXJOb2RlIGZpbmFsIDogcHVibGljIEF1ZGlvQmFzaWNQcm9jZXNzb3JOb2RlIHsK
ICAgICBXVEZfTUFLRV9JU09fQUxMT0NBVEVEKFdhdmVTaGFwZXJOb2RlKTsKIHB1YmxpYzoKLSAg
ICBzdGF0aWMgUmVmPFdhdmVTaGFwZXJOb2RlPiBjcmVhdGUoQXVkaW9Db250ZXh0JiBjb250ZXh0
KQorICAgIHN0YXRpYyBSZWY8V2F2ZVNoYXBlck5vZGU+IGNyZWF0ZShBdWRpb0NvbnRleHRCYXNl
JiBjb250ZXh0KQogICAgIHsKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgV2F2ZVNoYXBl
ck5vZGUoY29udGV4dCkpOwogICAgIH0KQEAgLTQ5LDcgKzQ5LDcgQEAgcHVibGljOgogICAgIGRv
dWJsZSBsYXRlbmN5KCkgY29uc3QgeyByZXR1cm4gbGF0ZW5jeVRpbWUoKTsgfQogCiBwcml2YXRl
OiAgICAKLSAgICBleHBsaWNpdCBXYXZlU2hhcGVyTm9kZShBdWRpb0NvbnRleHQmKTsgICAgCisg
ICAgZXhwbGljaXQgV2F2ZVNoYXBlck5vZGUoQXVkaW9Db250ZXh0QmFzZSYpOwogCiAgICAgV2F2
ZVNoYXBlclByb2Nlc3Nvciogd2F2ZVNoYXBlclByb2Nlc3NvcigpIHsgcmV0dXJuIHN0YXRpY19j
YXN0PFdhdmVTaGFwZXJQcm9jZXNzb3IqPihwcm9jZXNzb3IoKSk7IH0KIH07CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1dlYktpdEF1ZGlvQ29udGV4dC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1dlYktpdEF1ZGlvQ29udGV4dC5jcHAK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLmMyMGYxYjdlMGI0Ci0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9XZWJLaXRBdWRp
b0NvbnRleHQuY3BwCkBAIC0wLDAgKzEsMTM5NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
MCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE2
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQor
ICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OCisgKiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKKyAqIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25m
aWcuaCIKKworI2lmIEVOQUJMRShXRUJfQVVESU8pCisKKyNpbmNsdWRlICJXZWJLaXRBdWRpb0Nv
bnRleHQuaCIKKworI2luY2x1ZGUgIkFuYWx5c2VyTm9kZS5oIgorI2luY2x1ZGUgIkFzeW5jQXVk
aW9EZWNvZGVyLmgiCisjaW5jbHVkZSAiQXVkaW9CdWZmZXIuaCIKKyNpbmNsdWRlICJBdWRpb0J1
ZmZlckNhbGxiYWNrLmgiCisjaW5jbHVkZSAiQXVkaW9CdWZmZXJTb3VyY2VOb2RlLmgiCisjaW5j
bHVkZSAiQXVkaW9MaXN0ZW5lci5oIgorI2luY2x1ZGUgIkF1ZGlvTm9kZUlucHV0LmgiCisjaW5j
bHVkZSAiQXVkaW9Ob2RlT3V0cHV0LmgiCisjaW5jbHVkZSAiQXVkaW9TZXNzaW9uLmgiCisjaW5j
bHVkZSAiQmlxdWFkRmlsdGVyTm9kZS5oIgorI2luY2x1ZGUgIkNoYW5uZWxNZXJnZXJOb2RlLmgi
CisjaW5jbHVkZSAiQ2hhbm5lbFNwbGl0dGVyTm9kZS5oIgorI2luY2x1ZGUgIkNvbnZvbHZlck5v
ZGUuaCIKKyNpbmNsdWRlICJEZWZhdWx0QXVkaW9EZXN0aW5hdGlvbk5vZGUuaCIKKyNpbmNsdWRl
ICJEZWxheU5vZGUuaCIKKyNpbmNsdWRlICJEb2N1bWVudC5oIgorI2luY2x1ZGUgIkR5bmFtaWNz
Q29tcHJlc3Nvck5vZGUuaCIKKyNpbmNsdWRlICJFdmVudE5hbWVzLmgiCisjaW5jbHVkZSAiRkZU
RnJhbWUuaCIKKyNpbmNsdWRlICJGcmFtZS5oIgorI2luY2x1ZGUgIkZyYW1lTG9hZGVyLmgiCisj
aW5jbHVkZSAiR2Fpbk5vZGUuaCIKKyNpbmNsdWRlICJHZW5lcmljRXZlbnRRdWV1ZS5oIgorI2lu
Y2x1ZGUgIkhSVEZEYXRhYmFzZUxvYWRlci5oIgorI2luY2x1ZGUgIkhSVEZQYW5uZXIuaCIKKyNp
bmNsdWRlICJKU0RPTVByb21pc2VEZWZlcnJlZC5oIgorI2luY2x1ZGUgIkxvZ2dpbmcuaCIKKyNp
bmNsdWRlICJOZXR3b3JraW5nQ29udGV4dC5oIgorI2luY2x1ZGUgIk9mZmxpbmVBdWRpb0NvbXBs
ZXRpb25FdmVudC5oIgorI2luY2x1ZGUgIk9mZmxpbmVBdWRpb0Rlc3RpbmF0aW9uTm9kZS5oIgor
I2luY2x1ZGUgIk9zY2lsbGF0b3JOb2RlLmgiCisjaW5jbHVkZSAiUGFnZS5oIgorI2luY2x1ZGUg
IlBlcmlvZGljV2F2ZS5oIgorI2luY2x1ZGUgIlBsYXRmb3JtTWVkaWFTZXNzaW9uTWFuYWdlci5o
IgorI2luY2x1ZGUgIlNjcmlwdENvbnRyb2xsZXIuaCIKKyNpbmNsdWRlICJTY3JpcHRQcm9jZXNz
b3JOb2RlLmgiCisjaW5jbHVkZSAiV2F2ZVNoYXBlck5vZGUuaCIKKyNpbmNsdWRlICJXZWJLaXRB
dWRpb1Bhbm5lck5vZGUuaCIKKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9TY3JpcHRDYWxsU3Rh
Y2suaD4KKworI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCisjaW5jbHVkZSAiTWVkaWFTdHJlYW0u
aCIKKyNpbmNsdWRlICJNZWRpYVN0cmVhbUF1ZGlvRGVzdGluYXRpb25Ob2RlLmgiCisjaW5jbHVk
ZSAiTWVkaWFTdHJlYW1BdWRpb1NvdXJjZS5oIgorI2luY2x1ZGUgIk1lZGlhU3RyZWFtQXVkaW9T
b3VyY2VOb2RlLmgiCisjZW5kaWYKKworI2lmIEVOQUJMRShWSURFTykKKyNpbmNsdWRlICJIVE1M
TWVkaWFFbGVtZW50LmgiCisjaW5jbHVkZSAiTWVkaWFFbGVtZW50QXVkaW9Tb3VyY2VOb2RlLmgi
CisjZW5kaWYKKworI2lmIERFQlVHX0FVRElPTk9ERV9SRUZFUkVOQ0VTCisjaW5jbHVkZSA8c3Rk
aW8uaD4KKyNlbmRpZgorCisjaWYgVVNFKEdTVFJFQU1FUikKKyNpbmNsdWRlICJHU3RyZWFtZXJD
b21tb24uaCIKKyNlbmRpZgorCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKKyNpbmNsdWRlICJT
Y3JpcHRDb250cm9sbGVyLmgiCisjaW5jbHVkZSAiU2V0dGluZ3MuaCIKKyNlbmRpZgorCisjaW5j
bHVkZSA8SmF2YVNjcmlwdENvcmUvQXJyYXlCdWZmZXIuaD4KKyNpbmNsdWRlIDx3dGYvQXRvbWlj
cy5oPgorI2luY2x1ZGUgPHd0Zi9Jc29NYWxsb2NJbmxpbmVzLmg+CisjaW5jbHVkZSA8d3RmL01h
aW5UaHJlYWQuaD4KKyNpbmNsdWRlIDx3dGYvUmVmLmg+CisjaW5jbHVkZSA8d3RmL1JlZkNvdW50
ZWQuaD4KKyNpbmNsdWRlIDx3dGYvU2NvcGUuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJp
bmcuaD4KKworY29uc3QgdW5zaWduZWQgTWF4UGVyaW9kaWNXYXZlTGVuZ3RoID0gNDA5NjsKKwor
bmFtZXNwYWNlIFdlYkNvcmUgeworCisjZGVmaW5lIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoZm10
LCAuLi4pIFJFTEVBU0VfTE9HX0lGKGRvY3VtZW50KCkgJiYgZG9jdW1lbnQoKS0+cGFnZSgpICYm
IGRvY3VtZW50KCktPnBhZ2UoKS0+aXNBbHdheXNPbkxvZ2dpbmdBbGxvd2VkKCksIE1lZGlhLCAi
JXAgLSBXZWJLaXRBdWRpb0NvbnRleHQ6OiIgZm10LCB0aGlzLCAjI19fVkFfQVJHU19fKQorCiti
b29sIFdlYktpdEF1ZGlvQ29udGV4dDo6aXNTYW1wbGVSYXRlUmFuZ2VHb29kKGZsb2F0IHNhbXBs
ZVJhdGUpCit7CisgICAgLy8gRklYTUU6IEl0IHdvdWxkIGJlIG5pY2UgaWYgdGhlIG1pbmltdW0g
c2FtcGxlLXJhdGUgY291bGQgYmUgbGVzcyB0aGFuIDQ0LjFLSHosCisgICAgLy8gYnV0IHRoYXQg
d2lsbCByZXF1aXJlIHNvbWUgZml4ZXMgaW4gSFJURlBhbm5lcjo6ZmZ0U2l6ZUZvclNhbXBsZVJh
dGUoKSwgYW5kIHNvbWUgdGVzdGluZyB0aGVyZS4KKyAgICByZXR1cm4gc2FtcGxlUmF0ZSA+PSA0
NDEwMCAmJiBzYW1wbGVSYXRlIDw9IDk2MDAwOworfQorCisjaWYgT1MoV0lORE9XUykKKy8vIERv
bid0IGFsbG93IG1vcmUgdGhhbiB0aGlzIG51bWJlciBvZiBzaW11bHRhbmVvdXMgQXVkaW9Db250
ZXh0cyB0YWxraW5nIHRvIGhhcmR3YXJlLgorY29uc3RleHByIHVuc2lnbmVkIG1heEhhcmR3YXJl
Q29udGV4dHMgPSA0OworI2VuZGlmCit1bnNpZ25lZCBXZWJLaXRBdWRpb0NvbnRleHQ6OnNfaGFy
ZHdhcmVDb250ZXh0Q291bnQgPSAwOworCitFeGNlcHRpb25PcjxSZWY8V2ViS2l0QXVkaW9Db250
ZXh0Pj4gV2ViS2l0QXVkaW9Db250ZXh0OjpjcmVhdGUoRG9jdW1lbnQmIGRvY3VtZW50KQorewor
ICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisjaWYgT1MoV0lORE9XUykKKyAgICBpZiAoc19o
YXJkd2FyZUNvbnRleHRDb3VudCA+PSBtYXhIYXJkd2FyZUNvbnRleHRzKQorICAgICAgICByZXR1
cm4gRXhjZXB0aW9uIHsgUXVvdGFFeGNlZWRlZEVycm9yIH07CisjZW5kaWYKKworICAgIGF1dG8g
YXVkaW9Db250ZXh0ID0gYWRvcHRSZWYoKm5ldyBXZWJLaXRBdWRpb0NvbnRleHQoZG9jdW1lbnQp
KTsKKyAgICBhdWRpb0NvbnRleHQtPnN1c3BlbmRJZk5lZWRlZCgpOworICAgIHJldHVybiBhdWRp
b0NvbnRleHQ7Cit9CisKKy8vIENvbnN0cnVjdG9yIGZvciByZW5kZXJpbmcgdG8gdGhlIGF1ZGlv
IGhhcmR3YXJlLgorV2ViS2l0QXVkaW9Db250ZXh0OjpXZWJLaXRBdWRpb0NvbnRleHQoRG9jdW1l
bnQmIGRvY3VtZW50KQorICAgIDogQXVkaW9Db250ZXh0QmFzZShkb2N1bWVudCkKKyNpZiAhUkVM
RUFTRV9MT0dfRElTQUJMRUQKKyAgICAsIG1fbG9nZ2VyKGRvY3VtZW50LmxvZ2dlcigpKQorICAg
ICwgbV9sb2dJZGVudGlmaWVyKHVuaXF1ZUxvZ0lkZW50aWZpZXIoKSkKKyNlbmRpZgorICAgICwg
bV9tZWRpYVNlc3Npb24oUGxhdGZvcm1NZWRpYVNlc3Npb246OmNyZWF0ZShQbGF0Zm9ybU1lZGlh
U2Vzc2lvbk1hbmFnZXI6OnNoYXJlZE1hbmFnZXIoKSwgKnRoaXMpKQorICAgICwgbV9ldmVudFF1
ZXVlKE1haW5UaHJlYWRHZW5lcmljRXZlbnRRdWV1ZTo6Y3JlYXRlKCp0aGlzKSkKK3sKKyAgICAv
LyBBY2NvcmRpbmcgdG8gc3BlYyBBdWRpb0NvbnRleHQgbXVzdCBkaWUgb25seSBhZnRlciBwYWdl
IG5hdmlnYXRlLgorICAgIC8vIExldHMgbWFyayBpdCBhcyBBY3RpdmVET01PYmplY3Qgd2l0aCBw
ZW5kaW5nIGFjdGl2aXR5IGFuZCB1bm1hcmsgaXQgaW4gY2xlYXIgbWV0aG9kLgorICAgIG1ha2VQ
ZW5kaW5nQWN0aXZpdHkoKTsKKworICAgIGNvbnN0cnVjdENvbW1vbigpOworCisgICAgbV9kZXN0
aW5hdGlvbk5vZGUgPSBEZWZhdWx0QXVkaW9EZXN0aW5hdGlvbk5vZGU6OmNyZWF0ZSgqdGhpcyk7
CisKKyAgICAvLyBJbml0aWFsaXplIHRoZSBkZXN0aW5hdGlvbiBub2RlJ3MgbXV0ZWQgc3RhdGUg
dG8gbWF0Y2ggdGhlIHBhZ2UncyBjdXJyZW50IG11dGVkIHN0YXRlLgorICAgIHBhZ2VNdXRlZFN0
YXRlRGlkQ2hhbmdlKCk7CisKKyAgICBkb2N1bWVudC5hZGRBdWRpb1Byb2R1Y2VyKCp0aGlzKTsK
KyAgICBkb2N1bWVudC5yZWdpc3RlckZvclZpc2liaWxpdHlTdGF0ZUNoYW5nZWRDYWxsYmFja3Mo
KnRoaXMpOworfQorCisvLyBDb25zdHJ1Y3RvciBmb3Igb2ZmbGluZSAobm9uLXJlYWx0aW1lKSBy
ZW5kZXJpbmcuCitXZWJLaXRBdWRpb0NvbnRleHQ6OldlYktpdEF1ZGlvQ29udGV4dChEb2N1bWVu
dCYgZG9jdW1lbnQsIEF1ZGlvQnVmZmVyKiByZW5kZXJUYXJnZXQpCisgICAgOiBBdWRpb0NvbnRl
eHRCYXNlKGRvY3VtZW50KQorI2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRAorICAgICwgbV9sb2dn
ZXIoZG9jdW1lbnQubG9nZ2VyKCkpCisgICAgLCBtX2xvZ0lkZW50aWZpZXIodW5pcXVlTG9nSWRl
bnRpZmllcigpKQorI2VuZGlmCisgICAgLCBtX2lzT2ZmbGluZUNvbnRleHQodHJ1ZSkKKyAgICAs
IG1fbWVkaWFTZXNzaW9uKFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpjcmVhdGUoUGxhdGZvcm1NZWRp
YVNlc3Npb25NYW5hZ2VyOjpzaGFyZWRNYW5hZ2VyKCksICp0aGlzKSkKKyAgICAsIG1fZXZlbnRR
dWV1ZShNYWluVGhyZWFkR2VuZXJpY0V2ZW50UXVldWU6OmNyZWF0ZSgqdGhpcykpCisgICAgLCBt
X3JlbmRlclRhcmdldChyZW5kZXJUYXJnZXQpCit7CisgICAgY29uc3RydWN0Q29tbW9uKCk7CisK
KyAgICAvLyBDcmVhdGUgYSBuZXcgZGVzdGluYXRpb24gZm9yIG9mZmxpbmUgcmVuZGVyaW5nLgor
ICAgIG1fZGVzdGluYXRpb25Ob2RlID0gT2ZmbGluZUF1ZGlvRGVzdGluYXRpb25Ob2RlOjpjcmVh
dGUoKnRoaXMsIG1fcmVuZGVyVGFyZ2V0LmdldCgpKTsKK30KKwordm9pZCBXZWJLaXRBdWRpb0Nv
bnRleHQ6OmNvbnN0cnVjdENvbW1vbigpCit7CisgICAgRkZURnJhbWU6OmluaXRpYWxpemUoKTsK
KworICAgIG1fbGlzdGVuZXIgPSBBdWRpb0xpc3RlbmVyOjpjcmVhdGUoKTsKKworICAgIEFTU0VS
VChkb2N1bWVudCgpKTsKKyAgICBpZiAoZG9jdW1lbnQoKS0+YXVkaW9QbGF5YmFja1JlcXVpcmVz
VXNlckdlc3R1cmUoKSkKKyAgICAgICAgYWRkQmVoYXZpb3JSZXN0cmljdGlvbihSZXF1aXJlVXNl
ckdlc3R1cmVGb3JBdWRpb1N0YXJ0UmVzdHJpY3Rpb24pOworICAgIGVsc2UKKyAgICAgICAgbV9y
ZXN0cmljdGlvbnMgPSBOb1Jlc3RyaWN0aW9uczsKKworI2lmIFBMQVRGT1JNKENPQ09BKQorICAg
IGFkZEJlaGF2aW9yUmVzdHJpY3Rpb24oUmVxdWlyZVBhZ2VDb25zZW50Rm9yQXVkaW9TdGFydFJl
c3RyaWN0aW9uKTsKKyNlbmRpZgorfQorCitXZWJLaXRBdWRpb0NvbnRleHQ6On5XZWJLaXRBdWRp
b0NvbnRleHQoKQoreworI2lmIERFQlVHX0FVRElPTk9ERV9SRUZFUkVOQ0VTCisgICAgZnByaW50
ZihzdGRlcnIsICIlcDogV2ViS2l0QXVkaW9Db250ZXh0Ojp+V2ViS2l0QXVkaW9Db250ZXh0KClc
biIsIHRoaXMpOworI2VuZGlmCisgICAgQVNTRVJUKCFtX2lzSW5pdGlhbGl6ZWQpOworICAgIEFT
U0VSVChtX2lzU3RvcFNjaGVkdWxlZCk7CisgICAgQVNTRVJUKG1fbm9kZXNUb0RlbGV0ZS5pc0Vt
cHR5KCkpOworICAgIEFTU0VSVChtX3JlZmVyZW5jZWROb2Rlcy5pc0VtcHR5KCkpOworICAgIEFT
U0VSVChtX2ZpbmlzaGVkTm9kZXMuaXNFbXB0eSgpKTsgLy8gRklYTUUgKGJ1ZyAxMDU4NzApOiBU
aGlzIGFzc2VydGlvbiBmYWlscyBvbiB0ZXN0cyBzb21ldGltZXMuCisgICAgQVNTRVJUKG1fYXV0
b21hdGljUHVsbE5vZGVzLmlzRW1wdHkoKSk7CisgICAgaWYgKG1fYXV0b21hdGljUHVsbE5vZGVz
TmVlZFVwZGF0aW5nKQorICAgICAgICBtX3JlbmRlcmluZ0F1dG9tYXRpY1B1bGxOb2Rlcy5yZXNp
emUobV9hdXRvbWF0aWNQdWxsTm9kZXMuc2l6ZSgpKTsKKyAgICBBU1NFUlQobV9yZW5kZXJpbmdB
dXRvbWF0aWNQdWxsTm9kZXMuaXNFbXB0eSgpKTsKKyAgICAvLyBGSVhNRTogQ2FuIHdlIGFzc2Vy
dCB0aGF0IG1fZGVmZXJyZWRGaW5pc2hEZXJlZkxpc3QgaXMgZW1wdHk/CisKKyAgICBpZiAoIWlz
T2ZmbGluZUNvbnRleHQoKSAmJiBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpIHsKKyAgICAgICAg
ZG9jdW1lbnQoKS0+cmVtb3ZlQXVkaW9Qcm9kdWNlcigqdGhpcyk7CisgICAgICAgIGRvY3VtZW50
KCktPnVucmVnaXN0ZXJGb3JWaXNpYmlsaXR5U3RhdGVDaGFuZ2VkQ2FsbGJhY2tzKCp0aGlzKTsK
KyAgICB9Cit9CisKK3ZvaWQgV2ViS2l0QXVkaW9Db250ZXh0OjpsYXp5SW5pdGlhbGl6ZSgpCit7
CisgICAgQVNTRVJUKCFtX2lzU3RvcFNjaGVkdWxlZCk7CisKKyAgICBpZiAobV9pc0luaXRpYWxp
emVkKQorICAgICAgICByZXR1cm47CisKKyAgICAvLyBEb24ndCBhbGxvdyB0aGUgY29udGV4dCB0
byBpbml0aWFsaXplIGEgc2Vjb25kIHRpbWUgYWZ0ZXIgaXQncyBhbHJlYWR5IGJlZW4gZXhwbGlj
aXRseSB1bmluaXRpYWxpemVkLgorICAgIEFTU0VSVCghbV9pc0F1ZGlvVGhyZWFkRmluaXNoZWQp
OworICAgIGlmIChtX2lzQXVkaW9UaHJlYWRGaW5pc2hlZCkKKyAgICAgICAgcmV0dXJuOworCisg
ICAgaWYgKG1fZGVzdGluYXRpb25Ob2RlKSB7CisgICAgICAgIG1fZGVzdGluYXRpb25Ob2RlLT5p
bml0aWFsaXplKCk7CisKKyAgICAgICAgaWYgKCFpc09mZmxpbmVDb250ZXh0KCkpIHsKKyAgICAg
ICAgICAgIC8vIFRoaXMgc3RhcnRzIHRoZSBhdWRpbyB0aHJlYWQuIFRoZSBkZXN0aW5hdGlvbiBu
b2RlJ3MgcHJvdmlkZUlucHV0KCkgbWV0aG9kIHdpbGwgbm93IGJlIGNhbGxlZCByZXBlYXRlZGx5
IHRvIHJlbmRlciBhdWRpby4KKyAgICAgICAgICAgIC8vIEVhY2ggdGltZSBwcm92aWRlSW5wdXQo
KSBpcyBjYWxsZWQsIGEgcG9ydGlvbiBvZiB0aGUgYXVkaW8gc3RyZWFtIGlzIHJlbmRlcmVkLiBM
ZXQncyBjYWxsIHRoaXMgdGltZSBwZXJpb2QgYSAicmVuZGVyIHF1YW50dW0iLgorICAgICAgICAg
ICAgLy8gTk9URTogZm9yIG5vdyBkZWZhdWx0IEF1ZGlvQ29udGV4dCBkb2VzIG5vdCBuZWVkIGFu
IGV4cGxpY2l0IHN0YXJ0UmVuZGVyaW5nKCkgY2FsbCBmcm9tIEphdmFTY3JpcHQuCisgICAgICAg
ICAgICAvLyBXZSBtYXkgd2FudCB0byBjb25zaWRlciByZXF1aXJpbmcgaXQgZm9yIHN5bW1ldHJ5
IHdpdGggT2ZmbGluZUF1ZGlvQ29udGV4dC4KKyAgICAgICAgICAgIHN0YXJ0UmVuZGVyaW5nKCk7
CisgICAgICAgICAgICArK3NfaGFyZHdhcmVDb250ZXh0Q291bnQ7CisgICAgICAgIH0KKyAgICB9
CisgICAgbV9pc0luaXRpYWxpemVkID0gdHJ1ZTsKK30KKwordm9pZCBXZWJLaXRBdWRpb0NvbnRl
eHQ6OmNsZWFyKCkKK3sKKyAgICBSZWY8V2ViS2l0QXVkaW9Db250ZXh0PiBwcm90ZWN0ZWRUaGlz
KCp0aGlzKTsKKworICAgIC8vIFdlIGhhdmUgdG8gcmVsZWFzZSBvdXIgcmVmZXJlbmNlIHRvIHRo
ZSBkZXN0aW5hdGlvbiBub2RlIGJlZm9yZSB0aGUgY29udGV4dCB3aWxsIGV2ZXIgYmUgZGVsZXRl
ZCBzaW5jZSB0aGUgZGVzdGluYXRpb24gbm9kZSBob2xkcyBhIHJlZmVyZW5jZSB0byB0aGUgY29u
dGV4dC4KKyAgICBpZiAobV9kZXN0aW5hdGlvbk5vZGUpCisgICAgICAgIG1fZGVzdGluYXRpb25O
b2RlID0gbnVsbHB0cjsKKworICAgIC8vIEF1ZGlvIHRocmVhZCBpcyBkZWFkLiBOb2JvZHkgd2ls
bCBzY2hlZHVsZSBub2RlIGRlbGV0aW9uIGFjdGlvbi4gTGV0J3MgZG8gaXQgb3Vyc2VsdmVzLgor
ICAgIGRvIHsKKyAgICAgICAgZGVsZXRlTWFya2VkTm9kZXMoKTsKKyAgICAgICAgbV9ub2Rlc1Rv
RGVsZXRlLmFwcGVuZFZlY3RvcihtX25vZGVzTWFya2VkRm9yRGVsZXRpb24pOworICAgICAgICBt
X25vZGVzTWFya2VkRm9yRGVsZXRpb24uY2xlYXIoKTsKKyAgICB9IHdoaWxlIChtX25vZGVzVG9E
ZWxldGUuc2l6ZSgpKTsKKworICAgIGNsZWFyUGVuZGluZ0FjdGl2aXR5KCk7Cit9CisKK3ZvaWQg
V2ViS2l0QXVkaW9Db250ZXh0Ojp1bmluaXRpYWxpemUoKQoreworICAgIEFMV0FZU19MT0coTE9H
SURFTlRJRklFUik7CisKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworCisgICAgaWYgKCFt
X2lzSW5pdGlhbGl6ZWQpCisgICAgICAgIHJldHVybjsKKworICAgIC8vIFRoaXMgc3RvcHMgdGhl
IGF1ZGlvIHRocmVhZCBhbmQgYWxsIGF1ZGlvIHJlbmRlcmluZy4KKyAgICBpZiAobV9kZXN0aW5h
dGlvbk5vZGUpCisgICAgICAgIG1fZGVzdGluYXRpb25Ob2RlLT51bmluaXRpYWxpemUoKTsKKwor
ICAgIC8vIERvbid0IGFsbG93IHRoZSBjb250ZXh0IHRvIGluaXRpYWxpemUgYSBzZWNvbmQgdGlt
ZSBhZnRlciBpdCdzIGFscmVhZHkgYmVlbiBleHBsaWNpdGx5IHVuaW5pdGlhbGl6ZWQuCisgICAg
bV9pc0F1ZGlvVGhyZWFkRmluaXNoZWQgPSB0cnVlOworCisgICAgaWYgKCFpc09mZmxpbmVDb250
ZXh0KCkpIHsKKyAgICAgICAgQVNTRVJUKHNfaGFyZHdhcmVDb250ZXh0Q291bnQpOworICAgICAg
ICAtLXNfaGFyZHdhcmVDb250ZXh0Q291bnQ7CisKKyAgICAgICAgLy8gT2ZmbGluZSBjb250ZXh0
cyBtb3ZlIHRvICdDbG9zZWQnIHN0YXRlIHdoZW4gZGlzcGF0Y2hpbmcgdGhlIGNvbXBsZXRpb24g
ZXZlbnQuCisgICAgICAgIHNldFN0YXRlKFN0YXRlOjpDbG9zZWQpOworICAgIH0KKworICAgIC8v
IEdldCByaWQgb2YgdGhlIHNvdXJjZXMgd2hpY2ggbWF5IHN0aWxsIGJlIHBsYXlpbmcuCisgICAg
ZGVyZWZVbmZpbmlzaGVkU291cmNlTm9kZXMoKTsKKworICAgIG1faXNJbml0aWFsaXplZCA9IGZh
bHNlOworfQorCitib29sIFdlYktpdEF1ZGlvQ29udGV4dDo6aXNJbml0aWFsaXplZCgpIGNvbnN0
Cit7CisgICAgcmV0dXJuIG1faXNJbml0aWFsaXplZDsKK30KKwordm9pZCBXZWJLaXRBdWRpb0Nv
bnRleHQ6OmFkZFJlYWN0aW9uKFN0YXRlIHN0YXRlLCBET01Qcm9taXNlRGVmZXJyZWQ8dm9pZD4m
JiBwcm9taXNlKQoreworICAgIHNpemVfdCBzdGF0ZUluZGV4ID0gc3RhdGljX2Nhc3Q8c2l6ZV90
PihzdGF0ZSk7CisgICAgaWYgKHN0YXRlSW5kZXggPj0gbV9zdGF0ZVJlYWN0aW9ucy5zaXplKCkp
CisgICAgICAgIG1fc3RhdGVSZWFjdGlvbnMuZ3JvdyhzdGF0ZUluZGV4ICsgMSk7CisKKyAgICBt
X3N0YXRlUmVhY3Rpb25zW3N0YXRlSW5kZXhdLmFwcGVuZChXVEZNb3ZlKHByb21pc2UpKTsKK30K
Kwordm9pZCBXZWJLaXRBdWRpb0NvbnRleHQ6OnNldFN0YXRlKFN0YXRlIHN0YXRlKQoreworICAg
IGlmIChtX3N0YXRlID09IHN0YXRlKQorICAgICAgICByZXR1cm47CisKKyAgICBtX3N0YXRlID0g
c3RhdGU7CisgICAgbV9ldmVudFF1ZXVlLT5lbnF1ZXVlRXZlbnQoRXZlbnQ6OmNyZWF0ZShldmVu
dE5hbWVzKCkuc3RhdGVjaGFuZ2VFdmVudCwgRXZlbnQ6OkNhbkJ1YmJsZTo6WWVzLCBFdmVudDo6
SXNDYW5jZWxhYmxlOjpObykpOworCisgICAgc2l6ZV90IHN0YXRlSW5kZXggPSBzdGF0aWNfY2Fz
dDxzaXplX3Q+KHN0YXRlKTsKKyAgICBpZiAoc3RhdGVJbmRleCA+PSBtX3N0YXRlUmVhY3Rpb25z
LnNpemUoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgVmVjdG9yPERPTVByb21pc2VEZWZlcnJl
ZDx2b2lkPj4gcmVhY3Rpb25zOworICAgIG1fc3RhdGVSZWFjdGlvbnNbc3RhdGVJbmRleF0uc3dh
cChyZWFjdGlvbnMpOworCisgICAgZm9yIChhdXRvJiBwcm9taXNlIDogcmVhY3Rpb25zKQorICAg
ICAgICBwcm9taXNlLnJlc29sdmUoKTsKK30KKwordm9pZCBXZWJLaXRBdWRpb0NvbnRleHQ6OnN0
b3AoKQoreworICAgIEFMV0FZU19MT0coTE9HSURFTlRJRklFUik7CisKKyAgICBBU1NFUlQoaXNN
YWluVGhyZWFkKCkpOworCisgICAgLy8gVXN1YWxseSBTY3JpcHRFeGVjdXRpb25Db250ZXh0IGNh
bGxzIHN0b3AgdHdpY2UuCisgICAgaWYgKG1faXNTdG9wU2NoZWR1bGVkKQorICAgICAgICByZXR1
cm47CisgICAgbV9pc1N0b3BTY2hlZHVsZWQgPSB0cnVlOworCisgICAgQVNTRVJUKGRvY3VtZW50
KCkpOworICAgIGRvY3VtZW50KCktPnVwZGF0ZUlzUGxheWluZ01lZGlhKCk7CisKKyAgICB1bmlu
aXRpYWxpemUoKTsKKyAgICBjbGVhcigpOworfQorCit2b2lkIFdlYktpdEF1ZGlvQ29udGV4dDo6
c3VzcGVuZChSZWFzb25Gb3JTdXNwZW5zaW9uKQoreworICAgIGlmIChzdGF0ZSgpID09IFN0YXRl
OjpSdW5uaW5nKSB7CisgICAgICAgIG1fbWVkaWFTZXNzaW9uLT5iZWdpbkludGVycnVwdGlvbihQ
bGF0Zm9ybU1lZGlhU2Vzc2lvbjo6UGxheWJhY2tTdXNwZW5kZWQpOworICAgICAgICBkb2N1bWVu
dCgpLT51cGRhdGVJc1BsYXlpbmdNZWRpYSgpOworICAgIH0KK30KKwordm9pZCBXZWJLaXRBdWRp
b0NvbnRleHQ6OnJlc3VtZSgpCit7CisgICAgaWYgKHN0YXRlKCkgPT0gU3RhdGU6OkludGVycnVw
dGVkKSB7CisgICAgICAgIG1fbWVkaWFTZXNzaW9uLT5lbmRJbnRlcnJ1cHRpb24oUGxhdGZvcm1N
ZWRpYVNlc3Npb246Ok1heVJlc3VtZVBsYXlpbmcpOworICAgICAgICBkb2N1bWVudCgpLT51cGRh
dGVJc1BsYXlpbmdNZWRpYSgpOworICAgIH0KK30KKworY29uc3QgY2hhciogV2ViS2l0QXVkaW9D
b250ZXh0OjphY3RpdmVET01PYmplY3ROYW1lKCkgY29uc3QKK3sKKyAgICByZXR1cm4gIldlYktp
dEF1ZGlvQ29udGV4dCI7Cit9CisKK0RvY3VtZW50SWRlbnRpZmllciBXZWJLaXRBdWRpb0NvbnRl
eHQ6Omhvc3RpbmdEb2N1bWVudElkZW50aWZpZXIoKSBjb25zdAoreworICAgIGF1dG8qIGRvY3Vt
ZW50ID0gZG93bmNhc3Q8RG9jdW1lbnQ+KG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dCk7CisgICAg
cmV0dXJuIGRvY3VtZW50ID8gZG9jdW1lbnQtPmlkZW50aWZpZXIoKSA6IERvY3VtZW50SWRlbnRp
ZmllciB7IH07Cit9CisKK2Jvb2wgV2ViS2l0QXVkaW9Db250ZXh0Ojppc1N1c3BlbmRlZCgpIGNv
bnN0Cit7CisgICAgcmV0dXJuICFkb2N1bWVudCgpIHx8IGRvY3VtZW50KCktPmFjdGl2ZURPTU9i
amVjdHNBcmVTdXNwZW5kZWQoKSB8fCBkb2N1bWVudCgpLT5hY3RpdmVET01PYmplY3RzQXJlU3Rv
cHBlZCgpOworfQorCit2b2lkIFdlYktpdEF1ZGlvQ29udGV4dDo6dmlzaWJpbGl0eVN0YXRlQ2hh
bmdlZCgpCit7CisgICAgLy8gRG8gbm90IHN1c3BlbmQgaWYgYXVkaW8gaXMgYXVkaWJsZS4KKyAg
ICBpZiAoIWRvY3VtZW50KCkgfHwgbWVkaWFTdGF0ZSgpID09IE1lZGlhUHJvZHVjZXI6OklzUGxh
eWluZ0F1ZGlvIHx8IG1faXNTdG9wU2NoZWR1bGVkKQorICAgICAgICByZXR1cm47CisKKyAgICBp
ZiAoZG9jdW1lbnQoKS0+aGlkZGVuKCkpIHsKKyAgICAgICAgaWYgKHN0YXRlKCkgPT0gU3RhdGU6
OlJ1bm5pbmcpIHsKKyAgICAgICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoInZpc2liaWxp
dHlTdGF0ZUNoYW5nZWQoKSBTdXNwZW5kaW5nIHBsYXliYWNrIGFmdGVyIGdvaW5nIHRvIHRoZSBi
YWNrZ3JvdW5kIik7CisgICAgICAgICAgICBtX21lZGlhU2Vzc2lvbi0+YmVnaW5JbnRlcnJ1cHRp
b24oUGxhdGZvcm1NZWRpYVNlc3Npb246OkVudGVyaW5nQmFja2dyb3VuZCk7CisgICAgICAgIH0K
KyAgICB9IGVsc2UgeworICAgICAgICBpZiAoc3RhdGUoKSA9PSBTdGF0ZTo6SW50ZXJydXB0ZWQp
IHsKKyAgICAgICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoInZpc2liaWxpdHlTdGF0ZUNo
YW5nZWQoKSBSZXN1bWluZyBwbGF5YmFjayBhZnRlciBlbnRlcmluZyBmb3JlZ3JvdW5kIik7Cisg
ICAgICAgICAgICBtX21lZGlhU2Vzc2lvbi0+ZW5kSW50ZXJydXB0aW9uKFBsYXRmb3JtTWVkaWFT
ZXNzaW9uOjpNYXlSZXN1bWVQbGF5aW5nKTsKKyAgICAgICAgfQorICAgIH0KK30KKworYm9vbCBX
ZWJLaXRBdWRpb0NvbnRleHQ6OndvdWxkVGFpbnRPcmlnaW4oY29uc3QgVVJMJiB1cmwpIGNvbnN0
Cit7CisgICAgaWYgKHVybC5wcm90b2NvbElzRGF0YSgpKQorICAgICAgICByZXR1cm4gZmFsc2U7
CisKKyAgICBpZiAoYXV0byogZG9jdW1lbnQgPSB0aGlzLT5kb2N1bWVudCgpKQorICAgICAgICBy
ZXR1cm4gIWRvY3VtZW50LT5zZWN1cml0eU9yaWdpbigpLmNhblJlcXVlc3QodXJsKTsKKworICAg
IHJldHVybiBmYWxzZTsKK30KKworRXhjZXB0aW9uT3I8UmVmPEF1ZGlvQnVmZmVyPj4gV2ViS2l0
QXVkaW9Db250ZXh0OjpjcmVhdGVCdWZmZXIodW5zaWduZWQgbnVtYmVyT2ZDaGFubmVscywgc2l6
ZV90IG51bWJlck9mRnJhbWVzLCBmbG9hdCBzYW1wbGVSYXRlKQoreworICAgIGF1dG8gYXVkaW9C
dWZmZXIgPSBBdWRpb0J1ZmZlcjo6Y3JlYXRlKG51bWJlck9mQ2hhbm5lbHMsIG51bWJlck9mRnJh
bWVzLCBzYW1wbGVSYXRlKTsKKyAgICBpZiAoIWF1ZGlvQnVmZmVyKQorICAgICAgICByZXR1cm4g
RXhjZXB0aW9uIHsgTm90U3VwcG9ydGVkRXJyb3IgfTsKKyAgICByZXR1cm4gYXVkaW9CdWZmZXIu
cmVsZWFzZU5vbk51bGwoKTsKK30KKworRXhjZXB0aW9uT3I8UmVmPEF1ZGlvQnVmZmVyPj4gV2Vi
S2l0QXVkaW9Db250ZXh0OjpjcmVhdGVCdWZmZXIoQXJyYXlCdWZmZXImIGFycmF5QnVmZmVyLCBi
b29sIG1peFRvTW9ubykKK3sKKyAgICBhdXRvIGF1ZGlvQnVmZmVyID0gQXVkaW9CdWZmZXI6OmNy
ZWF0ZUZyb21BdWRpb0ZpbGVEYXRhKGFycmF5QnVmZmVyLmRhdGEoKSwgYXJyYXlCdWZmZXIuYnl0
ZUxlbmd0aCgpLCBtaXhUb01vbm8sIHNhbXBsZVJhdGUoKSk7CisgICAgaWYgKCFhdWRpb0J1ZmZl
cikKKyAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IFN5bnRheEVycm9yIH07CisgICAgcmV0dXJu
IGF1ZGlvQnVmZmVyLnJlbGVhc2VOb25OdWxsKCk7Cit9CisKK3ZvaWQgV2ViS2l0QXVkaW9Db250
ZXh0OjpkZWNvZGVBdWRpb0RhdGEoUmVmPEFycmF5QnVmZmVyPiYmIGF1ZGlvRGF0YSwgUmVmUHRy
PEF1ZGlvQnVmZmVyQ2FsbGJhY2s+JiYgc3VjY2Vzc0NhbGxiYWNrLCBSZWZQdHI8QXVkaW9CdWZm
ZXJDYWxsYmFjaz4mJiBlcnJvckNhbGxiYWNrKQoreworICAgIGlmICghbV9hdWRpb0RlY29kZXIp
CisgICAgICAgIG1fYXVkaW9EZWNvZGVyID0gbWFrZVVuaXF1ZTxBc3luY0F1ZGlvRGVjb2Rlcj4o
KTsKKyAgICBtX2F1ZGlvRGVjb2Rlci0+ZGVjb2RlQXN5bmMoV1RGTW92ZShhdWRpb0RhdGEpLCBz
YW1wbGVSYXRlKCksIFdURk1vdmUoc3VjY2Vzc0NhbGxiYWNrKSwgV1RGTW92ZShlcnJvckNhbGxi
YWNrKSk7Cit9CisKK0V4Y2VwdGlvbk9yPFJlZjxBdWRpb0J1ZmZlclNvdXJjZU5vZGU+PiBXZWJL
aXRBdWRpb0NvbnRleHQ6OmNyZWF0ZUJ1ZmZlclNvdXJjZSgpCit7CisgICAgQUxXQVlTX0xPRyhM
T0dJREVOVElGSUVSKTsKKworICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisKKyAgICBpZiAo
bV9pc1N0b3BTY2hlZHVsZWQpCisgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBJbnZhbGlkU3Rh
dGVFcnJvciB9OworCisgICAgbGF6eUluaXRpYWxpemUoKTsKKyAgICBSZWY8QXVkaW9CdWZmZXJT
b3VyY2VOb2RlPiBub2RlID0gQXVkaW9CdWZmZXJTb3VyY2VOb2RlOjpjcmVhdGUoKnRoaXMsIHNh
bXBsZVJhdGUoKSk7CisKKyAgICAvLyBCZWNhdXNlIHRoaXMgaXMgYW4gQXVkaW9TY2hlZHVsZWRT
b3VyY2VOb2RlLCB0aGUgY29udGV4dCBrZWVwcyBhIHJlZmVyZW5jZSB1bnRpbCBpdCBoYXMgZmlu
aXNoZWQgcGxheWluZy4KKyAgICAvLyBXaGVuIHRoaXMgaGFwcGVucywgQXVkaW9TY2hlZHVsZWRT
b3VyY2VOb2RlOjpmaW5pc2goKSBjYWxscyBXZWJLaXRBdWRpb0NvbnRleHQ6Om5vdGlmeU5vZGVG
aW5pc2hlZFByb2Nlc3NpbmcoKS4KKyAgICByZWZOb2RlKG5vZGUpOworCisgICAgcmV0dXJuIG5v
ZGU7Cit9CisKKyNpZiBFTkFCTEUoVklERU8pCisKK0V4Y2VwdGlvbk9yPFJlZjxNZWRpYUVsZW1l
bnRBdWRpb1NvdXJjZU5vZGU+PiBXZWJLaXRBdWRpb0NvbnRleHQ6OmNyZWF0ZU1lZGlhRWxlbWVu
dFNvdXJjZShIVE1MTWVkaWFFbGVtZW50JiBtZWRpYUVsZW1lbnQpCit7CisgICAgQUxXQVlTX0xP
RyhMT0dJREVOVElGSUVSKTsKKworICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisKKyAgICBp
ZiAobV9pc1N0b3BTY2hlZHVsZWQgfHwgbWVkaWFFbGVtZW50LmF1ZGlvU291cmNlTm9kZSgpKQor
ICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgSW52YWxpZFN0YXRlRXJyb3IgfTsKKworICAgIGxh
enlJbml0aWFsaXplKCk7CisKKyAgICBhdXRvIG5vZGUgPSBNZWRpYUVsZW1lbnRBdWRpb1NvdXJj
ZU5vZGU6OmNyZWF0ZSgqdGhpcywgbWVkaWFFbGVtZW50KTsKKworICAgIG1lZGlhRWxlbWVudC5z
ZXRBdWRpb1NvdXJjZU5vZGUobm9kZS5wdHIoKSk7CisKKyAgICByZWZOb2RlKG5vZGUuZ2V0KCkp
OyAvLyBjb250ZXh0IGtlZXBzIHJlZmVyZW5jZSB1bnRpbCBub2RlIGlzIGRpc2Nvbm5lY3RlZAor
ICAgIHJldHVybiBub2RlOworfQorCisjZW5kaWYKKworI2lmIEVOQUJMRShNRURJQV9TVFJFQU0p
CisKK0V4Y2VwdGlvbk9yPFJlZjxNZWRpYVN0cmVhbUF1ZGlvU291cmNlTm9kZT4+IFdlYktpdEF1
ZGlvQ29udGV4dDo6Y3JlYXRlTWVkaWFTdHJlYW1Tb3VyY2UoTWVkaWFTdHJlYW0mIG1lZGlhU3Ry
ZWFtKQoreworICAgIEFMV0FZU19MT0coTE9HSURFTlRJRklFUik7CisKKyAgICBBU1NFUlQoaXNN
YWluVGhyZWFkKCkpOworCisgICAgaWYgKG1faXNTdG9wU2NoZWR1bGVkKQorICAgICAgICByZXR1
cm4gRXhjZXB0aW9uIHsgSW52YWxpZFN0YXRlRXJyb3IgfTsKKworICAgIGF1dG8gYXVkaW9UcmFj
a3MgPSBtZWRpYVN0cmVhbS5nZXRBdWRpb1RyYWNrcygpOworICAgIGlmIChhdWRpb1RyYWNrcy5p
c0VtcHR5KCkpCisgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBJbnZhbGlkU3RhdGVFcnJvciB9
OworCisgICAgTWVkaWFTdHJlYW1UcmFjayogcHJvdmlkZXJUcmFjayA9IG51bGxwdHI7CisgICAg
Zm9yIChhdXRvJiB0cmFjayA6IGF1ZGlvVHJhY2tzKSB7CisgICAgICAgIGlmICh0cmFjay0+YXVk
aW9Tb3VyY2VQcm92aWRlcigpKSB7CisgICAgICAgICAgICBwcm92aWRlclRyYWNrID0gdHJhY2su
Z2V0KCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgIH0KKyAgICBpZiAoIXBy
b3ZpZGVyVHJhY2spCisgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBJbnZhbGlkU3RhdGVFcnJv
ciB9OworCisgICAgbGF6eUluaXRpYWxpemUoKTsKKworICAgIGF1dG8gbm9kZSA9IE1lZGlhU3Ry
ZWFtQXVkaW9Tb3VyY2VOb2RlOjpjcmVhdGUoKnRoaXMsIG1lZGlhU3RyZWFtLCAqcHJvdmlkZXJU
cmFjayk7CisgICAgbm9kZS0+c2V0Rm9ybWF0KDIsIHNhbXBsZVJhdGUoKSk7CisKKyAgICByZWZO
b2RlKG5vZGUpOyAvLyBjb250ZXh0IGtlZXBzIHJlZmVyZW5jZSB1bnRpbCBub2RlIGlzIGRpc2Nv
bm5lY3RlZAorICAgIHJldHVybiBub2RlOworfQorCitFeGNlcHRpb25PcjxSZWY8TWVkaWFTdHJl
YW1BdWRpb0Rlc3RpbmF0aW9uTm9kZT4+IFdlYktpdEF1ZGlvQ29udGV4dDo6Y3JlYXRlTWVkaWFT
dHJlYW1EZXN0aW5hdGlvbigpCit7CisgICAgaWYgKG1faXNTdG9wU2NoZWR1bGVkKQorICAgICAg
ICByZXR1cm4gRXhjZXB0aW9uIHsgSW52YWxpZFN0YXRlRXJyb3IgfTsKKworICAgIC8vIEZJWE1F
OiBBZGQgc3VwcG9ydCBmb3IgYW4gb3B0aW9uYWwgYXJndW1lbnQgd2hpY2ggc3BlY2lmaWVzIHRo
ZSBudW1iZXIgb2YgY2hhbm5lbHMuCisgICAgLy8gRklYTUU6IFRoZSBkZWZhdWx0IHNob3VsZCBw
cm9iYWJseSBiZSBzdGVyZW8gaW5zdGVhZCBvZiBtb25vLgorICAgIHJldHVybiBNZWRpYVN0cmVh
bUF1ZGlvRGVzdGluYXRpb25Ob2RlOjpjcmVhdGUoKnRoaXMsIDEpOworfQorCisjZW5kaWYKKwor
RXhjZXB0aW9uT3I8UmVmPFNjcmlwdFByb2Nlc3Nvck5vZGU+PiBXZWJLaXRBdWRpb0NvbnRleHQ6
OmNyZWF0ZVNjcmlwdFByb2Nlc3NvcihzaXplX3QgYnVmZmVyU2l6ZSwgc2l6ZV90IG51bWJlck9m
SW5wdXRDaGFubmVscywgc2l6ZV90IG51bWJlck9mT3V0cHV0Q2hhbm5lbHMpCit7CisgICAgQUxX
QVlTX0xPRyhMT0dJREVOVElGSUVSKTsKKworICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisK
KyAgICBpZiAobV9pc1N0b3BTY2hlZHVsZWQpCisgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBJ
bnZhbGlkU3RhdGVFcnJvciB9OworCisgICAgbGF6eUluaXRpYWxpemUoKTsKKworICAgIC8vIFcz
QyBFZGl0b3IncyBEcmFmdCAwNiBKdW5lIDIwMTcKKyAgICAvLyAgaHR0cHM6Ly93ZWJhdWRpby5n
aXRodWIuaW8vd2ViLWF1ZGlvLWFwaS8jd2lkbC1CYXNlQXVkaW9Db250ZXh0LWNyZWF0ZVNjcmlw
dFByb2Nlc3Nvci1TY3JpcHRQcm9jZXNzb3JOb2RlLXVuc2lnbmVkLWxvbmctYnVmZmVyU2l6ZS11
bnNpZ25lZC1sb25nLW51bWJlck9mSW5wdXRDaGFubmVscy11bnNpZ25lZC1sb25nLW51bWJlck9m
T3V0cHV0Q2hhbm5lbHMKKworICAgIC8vIFRoZSBidWZmZXJTaXplIHBhcmFtZXRlciBkZXRlcm1p
bmVzIHRoZSBidWZmZXIgc2l6ZSBpbiB1bml0cyBvZiBzYW1wbGUtZnJhbWVzLiBJZiBpdCdzIG5v
dCBwYXNzZWQgaW4sCisgICAgLy8gb3IgaWYgdGhlIHZhbHVlIGlzIDAsIHRoZW4gdGhlIGltcGxl
bWVudGF0aW9uIHdpbGwgY2hvb3NlIHRoZSBiZXN0IGJ1ZmZlciBzaXplIGZvciB0aGUgZ2l2ZW4g
ZW52aXJvbm1lbnQsCisgICAgLy8gd2hpY2ggd2lsbCBiZSBjb25zdGFudCBwb3dlciBvZiAyIHRo
cm91Z2hvdXQgdGhlIGxpZmV0aW1lIG9mIHRoZSBub2RlLiAuLi4gSWYgdGhlIHZhbHVlIG9mIHRo
aXMgcGFyYW1ldGVyCisgICAgLy8gaXMgbm90IG9uZSBvZiB0aGUgYWxsb3dlZCBwb3dlci1vZi0y
IHZhbHVlcyBsaXN0ZWQgYWJvdmUsIGFuIEluZGV4U2l6ZUVycm9yIG11c3QgYmUgdGhyb3duLgor
ICAgIHN3aXRjaCAoYnVmZmVyU2l6ZSkgeworICAgIGNhc2UgMDoKKyNpZiBVU0UoQVVESU9fU0VT
U0lPTikKKyAgICAgICAgLy8gUGljayBhIHZhbHVlIGJldHdlZW4gMjU2ICgyXjgpIGFuZCAxNjM4
NCAoMl4xNCksIGJhc2VkIG9uIHRoZSBidWZmZXIgc2l6ZSBvZiB0aGUgY3VycmVudCBBdWRpb1Nl
c3Npb246CisgICAgICAgIGJ1ZmZlclNpemUgPSAxIDw8IHN0ZDo6bWF4PHNpemVfdD4oOCwgc3Rk
OjptaW48c2l6ZV90PigxNCwgc3RkOjpsb2cyKEF1ZGlvU2Vzc2lvbjo6c2hhcmVkU2Vzc2lvbigp
LmJ1ZmZlclNpemUoKSkpKTsKKyNlbHNlCisgICAgICAgIGJ1ZmZlclNpemUgPSAyMDQ4OworI2Vu
ZGlmCisgICAgICAgIGJyZWFrOworICAgIGNhc2UgMjU2OgorICAgIGNhc2UgNTEyOgorICAgIGNh
c2UgMTAyNDoKKyAgICBjYXNlIDIwNDg6CisgICAgY2FzZSA0MDk2OgorICAgIGNhc2UgODE5MjoK
KyAgICBjYXNlIDE2Mzg0OgorICAgICAgICBicmVhazsKKyAgICBkZWZhdWx0OgorICAgICAgICBy
ZXR1cm4gRXhjZXB0aW9uIHsgSW5kZXhTaXplRXJyb3IgfTsKKyAgICB9CisKKyAgICAvLyBBbiBJ
bmRleFNpemVFcnJvciBleGNlcHRpb24gbXVzdCBiZSB0aHJvd24gaWYgYnVmZmVyU2l6ZSBvciBu
dW1iZXJPZklucHV0Q2hhbm5lbHMgb3IgbnVtYmVyT2ZPdXRwdXRDaGFubmVscworICAgIC8vIGFy
ZSBvdXRzaWRlIHRoZSB2YWxpZCByYW5nZS4gSXQgaXMgaW52YWxpZCBmb3IgYm90aCBudW1iZXJP
ZklucHV0Q2hhbm5lbHMgYW5kIG51bWJlck9mT3V0cHV0Q2hhbm5lbHMgdG8gYmUgemVyby4KKyAg
ICAvLyBJbiB0aGlzIGNhc2UgYW4gSW5kZXhTaXplRXJyb3IgbXVzdCBiZSB0aHJvd24uCisKKyAg
ICBpZiAoIW51bWJlck9mSW5wdXRDaGFubmVscyAmJiAhbnVtYmVyT2ZPdXRwdXRDaGFubmVscykK
KyAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IE5vdFN1cHBvcnRlZEVycm9yIH07CisKKyAgICAv
LyBUaGlzIHBhcmFtZXRlciBbbnVtYmVyT2ZJbnB1dENoYW5uZWxzXSBkZXRlcm1pbmVzIHRoZSBu
dW1iZXIgb2YgY2hhbm5lbHMgZm9yIHRoaXMgbm9kZSdzIGlucHV0LiBWYWx1ZXMgb2YKKyAgICAv
LyB1cCB0byAzMiBtdXN0IGJlIHN1cHBvcnRlZC4gQSBOb3RTdXBwb3J0ZWRFcnJvciBtdXN0IGJl
IHRocm93biBpZiB0aGUgbnVtYmVyIG9mIGNoYW5uZWxzIGlzIG5vdCBzdXBwb3J0ZWQuCisKKyAg
ICBpZiAobnVtYmVyT2ZJbnB1dENoYW5uZWxzID4gbWF4TnVtYmVyT2ZDaGFubmVscygpKQorICAg
ICAgICByZXR1cm4gRXhjZXB0aW9uIHsgTm90U3VwcG9ydGVkRXJyb3IgfTsKKworICAgIC8vIFRo
aXMgcGFyYW1ldGVyIFtudW1iZXJPZk91dHB1dENoYW5uZWxzXSBkZXRlcm1pbmVzIHRoZSBudW1i
ZXIgb2YgY2hhbm5lbHMgZm9yIHRoaXMgbm9kZSdzIG91dHB1dC4gVmFsdWVzIG9mCisgICAgLy8g
dXAgdG8gMzIgbXVzdCBiZSBzdXBwb3J0ZWQuIEEgTm90U3VwcG9ydGVkRXJyb3IgbXVzdCBiZSB0
aHJvd24gaWYgdGhlIG51bWJlciBvZiBjaGFubmVscyBpcyBub3Qgc3VwcG9ydGVkLgorCisgICAg
aWYgKG51bWJlck9mT3V0cHV0Q2hhbm5lbHMgPiBtYXhOdW1iZXJPZkNoYW5uZWxzKCkpCisgICAg
ICAgIHJldHVybiBFeGNlcHRpb24geyBOb3RTdXBwb3J0ZWRFcnJvciB9OworCisgICAgYXV0byBu
b2RlID0gU2NyaXB0UHJvY2Vzc29yTm9kZTo6Y3JlYXRlKCp0aGlzLCBzYW1wbGVSYXRlKCksIGJ1
ZmZlclNpemUsIG51bWJlck9mSW5wdXRDaGFubmVscywgbnVtYmVyT2ZPdXRwdXRDaGFubmVscyk7
CisKKyAgICByZWZOb2RlKG5vZGUpOyAvLyBjb250ZXh0IGtlZXBzIHJlZmVyZW5jZSB1bnRpbCB3
ZSBzdG9wIG1ha2luZyBqYXZhc2NyaXB0IHJlbmRlcmluZyBjYWxsYmFja3MKKyAgICByZXR1cm4g
bm9kZTsKK30KKworRXhjZXB0aW9uT3I8UmVmPEJpcXVhZEZpbHRlck5vZGU+PiBXZWJLaXRBdWRp
b0NvbnRleHQ6OmNyZWF0ZUJpcXVhZEZpbHRlcigpCit7CisgICAgQUxXQVlTX0xPRyhMT0dJREVO
VElGSUVSKTsKKworICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisgICAgaWYgKG1faXNTdG9w
U2NoZWR1bGVkKQorICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgSW52YWxpZFN0YXRlRXJyb3Ig
fTsKKworICAgIGxhenlJbml0aWFsaXplKCk7CisKKyAgICByZXR1cm4gQmlxdWFkRmlsdGVyTm9k
ZTo6Y3JlYXRlKCp0aGlzLCBzYW1wbGVSYXRlKCkpOworfQorCitFeGNlcHRpb25PcjxSZWY8V2F2
ZVNoYXBlck5vZGU+PiBXZWJLaXRBdWRpb0NvbnRleHQ6OmNyZWF0ZVdhdmVTaGFwZXIoKQorewor
ICAgIEFMV0FZU19MT0coTE9HSURFTlRJRklFUik7CisKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFk
KCkpOworICAgIGlmIChtX2lzU3RvcFNjaGVkdWxlZCkKKyAgICAgICAgcmV0dXJuIEV4Y2VwdGlv
biB7IEludmFsaWRTdGF0ZUVycm9yIH07CisKKyAgICBsYXp5SW5pdGlhbGl6ZSgpOworICAgIHJl
dHVybiBXYXZlU2hhcGVyTm9kZTo6Y3JlYXRlKCp0aGlzKTsKK30KKworRXhjZXB0aW9uT3I8UmVm
PFdlYktpdEF1ZGlvUGFubmVyTm9kZT4+IFdlYktpdEF1ZGlvQ29udGV4dDo6Y3JlYXRlUGFubmVy
KCkKK3sKKyAgICBBTFdBWVNfTE9HKExPR0lERU5USUZJRVIpOworCisgICAgQVNTRVJUKGlzTWFp
blRocmVhZCgpKTsKKyAgICBpZiAobV9pc1N0b3BTY2hlZHVsZWQpCisgICAgICAgIHJldHVybiBF
eGNlcHRpb24geyBJbnZhbGlkU3RhdGVFcnJvciB9OworCisgICAgbGF6eUluaXRpYWxpemUoKTsK
KyAgICByZXR1cm4gV2ViS2l0QXVkaW9QYW5uZXJOb2RlOjpjcmVhdGUoKnRoaXMsIHNhbXBsZVJh
dGUoKSk7Cit9CisKK0V4Y2VwdGlvbk9yPFJlZjxDb252b2x2ZXJOb2RlPj4gV2ViS2l0QXVkaW9D
b250ZXh0OjpjcmVhdGVDb252b2x2ZXIoKQoreworICAgIEFMV0FZU19MT0coTE9HSURFTlRJRklF
Uik7CisKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAgIGlmIChtX2lzU3RvcFNjaGVk
dWxlZCkKKyAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IEludmFsaWRTdGF0ZUVycm9yIH07CisK
KyAgICBsYXp5SW5pdGlhbGl6ZSgpOworICAgIHJldHVybiBDb252b2x2ZXJOb2RlOjpjcmVhdGUo
KnRoaXMsIHNhbXBsZVJhdGUoKSk7Cit9CisKK0V4Y2VwdGlvbk9yPFJlZjxEeW5hbWljc0NvbXBy
ZXNzb3JOb2RlPj4gV2ViS2l0QXVkaW9Db250ZXh0OjpjcmVhdGVEeW5hbWljc0NvbXByZXNzb3Io
KQoreworICAgIEFMV0FZU19MT0coTE9HSURFTlRJRklFUik7CisKKyAgICBBU1NFUlQoaXNNYWlu
VGhyZWFkKCkpOworICAgIGlmIChtX2lzU3RvcFNjaGVkdWxlZCkKKyAgICAgICAgcmV0dXJuIEV4
Y2VwdGlvbiB7IEludmFsaWRTdGF0ZUVycm9yIH07CisKKyAgICBsYXp5SW5pdGlhbGl6ZSgpOwor
ICAgIHJldHVybiBEeW5hbWljc0NvbXByZXNzb3JOb2RlOjpjcmVhdGUoKnRoaXMsIHNhbXBsZVJh
dGUoKSk7Cit9CisKK0V4Y2VwdGlvbk9yPFJlZjxBbmFseXNlck5vZGU+PiBXZWJLaXRBdWRpb0Nv
bnRleHQ6OmNyZWF0ZUFuYWx5c2VyKCkKK3sKKyAgICBBTFdBWVNfTE9HKExPR0lERU5USUZJRVIp
OworCisgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKyAgICBpZiAobV9pc1N0b3BTY2hlZHVs
ZWQpCisgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBJbnZhbGlkU3RhdGVFcnJvciB9OworCisg
ICAgbGF6eUluaXRpYWxpemUoKTsKKyAgICByZXR1cm4gQW5hbHlzZXJOb2RlOjpjcmVhdGUoKnRo
aXMsIHNhbXBsZVJhdGUoKSk7Cit9CisKK0V4Y2VwdGlvbk9yPFJlZjxHYWluTm9kZT4+IFdlYktp
dEF1ZGlvQ29udGV4dDo6Y3JlYXRlR2FpbigpCit7CisgICAgQUxXQVlTX0xPRyhMT0dJREVOVElG
SUVSKTsKKworICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisgICAgaWYgKG1faXNTdG9wU2No
ZWR1bGVkKQorICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgSW52YWxpZFN0YXRlRXJyb3IgfTsK
KworICAgIGxhenlJbml0aWFsaXplKCk7CisgICAgcmV0dXJuIEdhaW5Ob2RlOjpjcmVhdGUoKnRo
aXMsIHNhbXBsZVJhdGUoKSk7Cit9CisKK0V4Y2VwdGlvbk9yPFJlZjxEZWxheU5vZGU+PiBXZWJL
aXRBdWRpb0NvbnRleHQ6OmNyZWF0ZURlbGF5KGRvdWJsZSBtYXhEZWxheVRpbWUpCit7CisgICAg
QUxXQVlTX0xPRyhMT0dJREVOVElGSUVSKTsKKworICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7
CisgICAgaWYgKG1faXNTdG9wU2NoZWR1bGVkKQorICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsg
SW52YWxpZFN0YXRlRXJyb3IgfTsKKworICAgIGxhenlJbml0aWFsaXplKCk7CisgICAgcmV0dXJu
IERlbGF5Tm9kZTo6Y3JlYXRlKCp0aGlzLCBzYW1wbGVSYXRlKCksIG1heERlbGF5VGltZSk7Cit9
CisKK0V4Y2VwdGlvbk9yPFJlZjxDaGFubmVsU3BsaXR0ZXJOb2RlPj4gV2ViS2l0QXVkaW9Db250
ZXh0OjpjcmVhdGVDaGFubmVsU3BsaXR0ZXIoc2l6ZV90IG51bWJlck9mT3V0cHV0cykKK3sKKyAg
ICBBTFdBWVNfTE9HKExPR0lERU5USUZJRVIpOworCisgICAgQVNTRVJUKGlzTWFpblRocmVhZCgp
KTsKKyAgICBpZiAobV9pc1N0b3BTY2hlZHVsZWQpCisgICAgICAgIHJldHVybiBFeGNlcHRpb24g
eyBJbnZhbGlkU3RhdGVFcnJvciB9OworCisgICAgbGF6eUluaXRpYWxpemUoKTsKKyAgICBhdXRv
IG5vZGUgPSBDaGFubmVsU3BsaXR0ZXJOb2RlOjpjcmVhdGUoKnRoaXMsIHNhbXBsZVJhdGUoKSwg
bnVtYmVyT2ZPdXRwdXRzKTsKKyAgICBpZiAoIW5vZGUpCisgICAgICAgIHJldHVybiBFeGNlcHRp
b24geyBJbmRleFNpemVFcnJvciB9OworICAgIHJldHVybiBub2RlLnJlbGVhc2VOb25OdWxsKCk7
Cit9CisKK0V4Y2VwdGlvbk9yPFJlZjxDaGFubmVsTWVyZ2VyTm9kZT4+IFdlYktpdEF1ZGlvQ29u
dGV4dDo6Y3JlYXRlQ2hhbm5lbE1lcmdlcihzaXplX3QgbnVtYmVyT2ZJbnB1dHMpCit7CisgICAg
QUxXQVlTX0xPRyhMT0dJREVOVElGSUVSKTsKKworICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7
CisgICAgaWYgKG1faXNTdG9wU2NoZWR1bGVkKQorICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsg
SW52YWxpZFN0YXRlRXJyb3IgfTsKKworICAgIGxhenlJbml0aWFsaXplKCk7CisgICAgYXV0byBu
b2RlID0gQ2hhbm5lbE1lcmdlck5vZGU6OmNyZWF0ZSgqdGhpcywgc2FtcGxlUmF0ZSgpLCBudW1i
ZXJPZklucHV0cyk7CisgICAgaWYgKCFub2RlKQorICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsg
SW5kZXhTaXplRXJyb3IgfTsKKyAgICByZXR1cm4gbm9kZS5yZWxlYXNlTm9uTnVsbCgpOworfQor
CitFeGNlcHRpb25PcjxSZWY8T3NjaWxsYXRvck5vZGU+PiBXZWJLaXRBdWRpb0NvbnRleHQ6OmNy
ZWF0ZU9zY2lsbGF0b3IoKQoreworICAgIEFMV0FZU19MT0coTE9HSURFTlRJRklFUik7CisKKyAg
ICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAgIGlmIChtX2lzU3RvcFNjaGVkdWxlZCkKKyAg
ICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IEludmFsaWRTdGF0ZUVycm9yIH07CisKKyAgICBsYXp5
SW5pdGlhbGl6ZSgpOworCisgICAgUmVmPE9zY2lsbGF0b3JOb2RlPiBub2RlID0gT3NjaWxsYXRv
ck5vZGU6OmNyZWF0ZSgqdGhpcywgc2FtcGxlUmF0ZSgpKTsKKworICAgIC8vIEJlY2F1c2UgdGhp
cyBpcyBhbiBBdWRpb1NjaGVkdWxlZFNvdXJjZU5vZGUsIHRoZSBjb250ZXh0IGtlZXBzIGEgcmVm
ZXJlbmNlIHVudGlsIGl0IGhhcyBmaW5pc2hlZCBwbGF5aW5nLgorICAgIC8vIFdoZW4gdGhpcyBo
YXBwZW5zLCBBdWRpb1NjaGVkdWxlZFNvdXJjZU5vZGU6OmZpbmlzaCgpIGNhbGxzIFdlYktpdEF1
ZGlvQ29udGV4dDo6bm90aWZ5Tm9kZUZpbmlzaGVkUHJvY2Vzc2luZygpLgorICAgIHJlZk5vZGUo
bm9kZSk7CisKKyAgICByZXR1cm4gbm9kZTsKK30KKworRXhjZXB0aW9uT3I8UmVmPFBlcmlvZGlj
V2F2ZT4+IFdlYktpdEF1ZGlvQ29udGV4dDo6Y3JlYXRlUGVyaW9kaWNXYXZlKEZsb2F0MzJBcnJh
eSYgcmVhbCwgRmxvYXQzMkFycmF5JiBpbWFnaW5hcnkpCit7CisgICAgQUxXQVlTX0xPRyhMT0dJ
REVOVElGSUVSKTsKKworICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisgICAgaWYgKG1faXNT
dG9wU2NoZWR1bGVkKQorICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgSW52YWxpZFN0YXRlRXJy
b3IgfTsKKworICAgIGlmIChyZWFsLmxlbmd0aCgpICE9IGltYWdpbmFyeS5sZW5ndGgoKSB8fCAo
cmVhbC5sZW5ndGgoKSA+IE1heFBlcmlvZGljV2F2ZUxlbmd0aCkgfHwgIXJlYWwubGVuZ3RoKCkp
CisgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBJbmRleFNpemVFcnJvciB9OworICAgIGxhenlJ
bml0aWFsaXplKCk7CisgICAgcmV0dXJuIFBlcmlvZGljV2F2ZTo6Y3JlYXRlKHNhbXBsZVJhdGUo
KSwgcmVhbCwgaW1hZ2luYXJ5KTsKK30KKwordm9pZCBXZWJLaXRBdWRpb0NvbnRleHQ6Om5vdGlm
eU5vZGVGaW5pc2hlZFByb2Nlc3NpbmcoQXVkaW9Ob2RlKiBub2RlKQoreworICAgIEFTU0VSVChp
c0F1ZGlvVGhyZWFkKCkpOworICAgIG1fZmluaXNoZWROb2Rlcy5hcHBlbmQobm9kZSk7Cit9CisK
K3ZvaWQgV2ViS2l0QXVkaW9Db250ZXh0OjpkZXJlZkZpbmlzaGVkU291cmNlTm9kZXMoKQorewor
ICAgIEFTU0VSVChpc0dyYXBoT3duZXIoKSk7CisgICAgQVNTRVJUKGlzQXVkaW9UaHJlYWQoKSB8
fCBpc0F1ZGlvVGhyZWFkRmluaXNoZWQoKSk7CisgICAgZm9yIChhdXRvJiBub2RlIDogbV9maW5p
c2hlZE5vZGVzKQorICAgICAgICBkZXJlZk5vZGUoKm5vZGUpOworCisgICAgbV9maW5pc2hlZE5v
ZGVzLmNsZWFyKCk7Cit9CisKK3ZvaWQgV2ViS2l0QXVkaW9Db250ZXh0OjpyZWZOb2RlKEF1ZGlv
Tm9kZSYgbm9kZSkKK3sKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAgIEF1dG9Mb2Nr
ZXIgbG9ja2VyKCp0aGlzKTsKKworICAgIG5vZGUucmVmKEF1ZGlvTm9kZTo6UmVmVHlwZUNvbm5l
Y3Rpb24pOworICAgIG1fcmVmZXJlbmNlZE5vZGVzLmFwcGVuZCgmbm9kZSk7Cit9CisKK3ZvaWQg
V2ViS2l0QXVkaW9Db250ZXh0OjpkZXJlZk5vZGUoQXVkaW9Ob2RlJiBub2RlKQoreworICAgIEFT
U0VSVChpc0dyYXBoT3duZXIoKSk7CisKKyAgICBub2RlLmRlcmVmKEF1ZGlvTm9kZTo6UmVmVHlw
ZUNvbm5lY3Rpb24pOworCisgICAgQVNTRVJUKG1fcmVmZXJlbmNlZE5vZGVzLmNvbnRhaW5zKCZu
b2RlKSk7CisgICAgbV9yZWZlcmVuY2VkTm9kZXMucmVtb3ZlRmlyc3QoJm5vZGUpOworfQorCit2
b2lkIFdlYktpdEF1ZGlvQ29udGV4dDo6ZGVyZWZVbmZpbmlzaGVkU291cmNlTm9kZXMoKQorewor
ICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSAmJiBpc0F1ZGlvVGhyZWFkRmluaXNoZWQoKSk7Cisg
ICAgZm9yIChhdXRvJiBub2RlIDogbV9yZWZlcmVuY2VkTm9kZXMpCisgICAgICAgIG5vZGUtPmRl
cmVmKEF1ZGlvTm9kZTo6UmVmVHlwZUNvbm5lY3Rpb24pOworCisgICAgbV9yZWZlcmVuY2VkTm9k
ZXMuY2xlYXIoKTsKK30KKwordm9pZCBXZWJLaXRBdWRpb0NvbnRleHQ6OmxvY2soYm9vbCYgbXVz
dFJlbGVhc2VMb2NrKQoreworICAgIC8vIERvbid0IGFsbG93IHJlZ3VsYXIgbG9jayBpbiByZWFs
LXRpbWUgYXVkaW8gdGhyZWFkLgorICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisKKyAgICBU
aHJlYWQmIHRoaXNUaHJlYWQgPSBUaHJlYWQ6OmN1cnJlbnQoKTsKKworICAgIGlmICgmdGhpc1Ro
cmVhZCA9PSBtX2dyYXBoT3duZXJUaHJlYWQpIHsKKyAgICAgICAgLy8gV2UgYWxyZWFkeSBoYXZl
IHRoZSBsb2NrLgorICAgICAgICBtdXN0UmVsZWFzZUxvY2sgPSBmYWxzZTsKKyAgICB9IGVsc2Ug
eworICAgICAgICAvLyBBY3F1aXJlIHRoZSBsb2NrLgorICAgICAgICBtX2NvbnRleHRHcmFwaE11
dGV4LmxvY2soKTsKKyAgICAgICAgbV9ncmFwaE93bmVyVGhyZWFkID0gJnRoaXNUaHJlYWQ7Cisg
ICAgICAgIG11c3RSZWxlYXNlTG9jayA9IHRydWU7CisgICAgfQorfQorCitib29sIFdlYktpdEF1
ZGlvQ29udGV4dDo6dHJ5TG9jayhib29sJiBtdXN0UmVsZWFzZUxvY2spCit7CisgICAgVGhyZWFk
JiB0aGlzVGhyZWFkID0gVGhyZWFkOjpjdXJyZW50KCk7CisgICAgYm9vbCBpc0F1ZGlvVGhyZWFk
ID0gJnRoaXNUaHJlYWQgPT0gYXVkaW9UaHJlYWQoKTsKKworICAgIC8vIFRyeSB0byBjYXRjaCBj
YXNlcyBvZiB1c2luZyB0cnkgbG9jayBvbiBtYWluIHRocmVhZCAtIGl0IHNob3VsZCB1c2UgcmVn
dWxhciBsb2NrLgorICAgIEFTU0VSVChpc0F1ZGlvVGhyZWFkIHx8IGlzQXVkaW9UaHJlYWRGaW5p
c2hlZCgpKTsKKworICAgIGlmICghaXNBdWRpb1RocmVhZCkgeworICAgICAgICAvLyBJbiByZWxl
YXNlIGJ1aWxkIHRyZWF0IHRyeUxvY2soKSBhcyBsb2NrKCkgKHNpbmNlIGFib3ZlIEFTU0VSVChp
c0F1ZGlvVGhyZWFkKSBuZXZlciBmaXJlcykgLSB0aGlzIGlzIHRoZSBiZXN0IHdlIGNhbiBkby4K
KyAgICAgICAgbG9jayhtdXN0UmVsZWFzZUxvY2spOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAg
ICB9CisKKyAgICBib29sIGhhc0xvY2s7CisKKyAgICBpZiAoJnRoaXNUaHJlYWQgPT0gbV9ncmFw
aE93bmVyVGhyZWFkKSB7CisgICAgICAgIC8vIFRocmVhZCBhbHJlYWR5IGhhcyB0aGUgbG9jay4K
KyAgICAgICAgaGFzTG9jayA9IHRydWU7CisgICAgICAgIG11c3RSZWxlYXNlTG9jayA9IGZhbHNl
OworICAgIH0gZWxzZSB7CisgICAgICAgIC8vIERvbid0IGFscmVhZHkgaGF2ZSB0aGUgbG9jayAt
IHRyeSB0byBhY3F1aXJlIGl0LgorICAgICAgICBoYXNMb2NrID0gbV9jb250ZXh0R3JhcGhNdXRl
eC50cnlMb2NrKCk7CisKKyAgICAgICAgaWYgKGhhc0xvY2spCisgICAgICAgICAgICBtX2dyYXBo
T3duZXJUaHJlYWQgPSAmdGhpc1RocmVhZDsKKworICAgICAgICBtdXN0UmVsZWFzZUxvY2sgPSBo
YXNMb2NrOworICAgIH0KKworICAgIHJldHVybiBoYXNMb2NrOworfQorCit2b2lkIFdlYktpdEF1
ZGlvQ29udGV4dDo6dW5sb2NrKCkKK3sKKyAgICBBU1NFUlQobV9ncmFwaE93bmVyVGhyZWFkID09
ICZUaHJlYWQ6OmN1cnJlbnQoKSk7CisKKyAgICBtX2dyYXBoT3duZXJUaHJlYWQgPSBudWxscHRy
OworICAgIG1fY29udGV4dEdyYXBoTXV0ZXgudW5sb2NrKCk7Cit9CisKK2Jvb2wgV2ViS2l0QXVk
aW9Db250ZXh0Ojppc0F1ZGlvVGhyZWFkKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9hdWRpb1Ro
cmVhZCA9PSAmVGhyZWFkOjpjdXJyZW50KCk7Cit9CisKK2Jvb2wgV2ViS2l0QXVkaW9Db250ZXh0
Ojppc0dyYXBoT3duZXIoKSBjb25zdAoreworICAgIHJldHVybiBtX2dyYXBoT3duZXJUaHJlYWQg
PT0gJlRocmVhZDo6Y3VycmVudCgpOworfQorCit2b2lkIFdlYktpdEF1ZGlvQ29udGV4dDo6YWRk
RGVmZXJyZWRGaW5pc2hEZXJlZihBdWRpb05vZGUqIG5vZGUpCit7CisgICAgQVNTRVJUKGlzQXVk
aW9UaHJlYWQoKSk7CisgICAgbV9kZWZlcnJlZEZpbmlzaERlcmVmTGlzdC5hcHBlbmQobm9kZSk7
Cit9CisKK3ZvaWQgV2ViS2l0QXVkaW9Db250ZXh0OjpoYW5kbGVQcmVSZW5kZXJUYXNrcygpCit7
CisgICAgQVNTRVJUKGlzQXVkaW9UaHJlYWQoKSk7CisKKyAgICAvLyBBdCB0aGUgYmVnaW5uaW5n
IG9mIGV2ZXJ5IHJlbmRlciBxdWFudHVtLCB0cnkgdG8gdXBkYXRlIHRoZSBpbnRlcm5hbCByZW5k
ZXJpbmcgZ3JhcGggc3RhdGUgKGZyb20gbWFpbiB0aHJlYWQgY2hhbmdlcykuCisgICAgLy8gSXQn
cyBPSyBpZiB0aGUgdHJ5TG9jaygpIGZhaWxzLCB3ZSdsbCBqdXN0IHRha2Ugc2xpZ2h0bHkgbG9u
Z2VyIHRvIHBpY2sgdXAgdGhlIGNoYW5nZXMuCisgICAgYm9vbCBtdXN0UmVsZWFzZUxvY2s7Cisg
ICAgaWYgKHRyeUxvY2sobXVzdFJlbGVhc2VMb2NrKSkgeworICAgICAgICAvLyBGaXh1cCB0aGUg
c3RhdGUgb2YgYW55IGRpcnR5IEF1ZGlvU3VtbWluZ0p1bmN0aW9ucyBhbmQgQXVkaW9Ob2RlT3V0
cHV0cy4KKyAgICAgICAgaGFuZGxlRGlydHlBdWRpb1N1bW1pbmdKdW5jdGlvbnMoKTsKKyAgICAg
ICAgaGFuZGxlRGlydHlBdWRpb05vZGVPdXRwdXRzKCk7CisKKyAgICAgICAgdXBkYXRlQXV0b21h
dGljUHVsbE5vZGVzKCk7CisKKyAgICAgICAgaWYgKG11c3RSZWxlYXNlTG9jaykKKyAgICAgICAg
ICAgIHVubG9jaygpOworICAgIH0KK30KKwordm9pZCBXZWJLaXRBdWRpb0NvbnRleHQ6OmhhbmRs
ZVBvc3RSZW5kZXJUYXNrcygpCit7CisgICAgQVNTRVJUKGlzQXVkaW9UaHJlYWQoKSk7CisKKyAg
ICAvLyBNdXN0IHVzZSBhIHRyeUxvY2soKSBoZXJlIHRvby4gRG9uJ3Qgd29ycnksIHRoZSBsb2Nr
IHdpbGwgdmVyeSByYXJlbHkgYmUgY29udGVuZGVkIGFuZCB0aGlzIG1ldGhvZCBpcyBjYWxsZWQg
ZnJlcXVlbnRseS4KKyAgICAvLyBUaGUgd29yc3QgdGhhdCBjYW4gaGFwcGVuIGlzIHRoYXQgdGhl
cmUgd2lsbCBiZSBzb21lIG5vZGVzIHdoaWNoIHdpbGwgdGFrZSBzbGlnaHRseSBsb25nZXIgdGhh
biB1c3VhbCB0byBiZSBkZWxldGVkIG9yIHJlbW92ZWQKKyAgICAvLyBmcm9tIHRoZSByZW5kZXIg
Z3JhcGggKGluIHdoaWNoIGNhc2UgdGhleSdsbCByZW5kZXIgc2lsZW5jZSkuCisgICAgYm9vbCBt
dXN0UmVsZWFzZUxvY2s7CisgICAgaWYgKHRyeUxvY2sobXVzdFJlbGVhc2VMb2NrKSkgeworICAg
ICAgICAvLyBUYWtlIGNhcmUgb2YgZmluaXNoaW5nIGFueSBkZXJlZnMgd2hlcmUgdGhlIHRyeUxv
Y2soKSBmYWlsZWQgcHJldmlvdXNseS4KKyAgICAgICAgaGFuZGxlRGVmZXJyZWRGaW5pc2hEZXJl
ZnMoKTsKKworICAgICAgICAvLyBEeW5hbWljYWxseSBjbGVhbiB1cCBub2RlcyB3aGljaCBhcmUg
bm8gbG9uZ2VyIG5lZWRlZC4KKyAgICAgICAgZGVyZWZGaW5pc2hlZFNvdXJjZU5vZGVzKCk7CisK
KyAgICAgICAgLy8gRG9uJ3QgZGVsZXRlIGluIHRoZSByZWFsLXRpbWUgdGhyZWFkLiBMZXQgdGhl
IG1haW4gdGhyZWFkIGRvIGl0LgorICAgICAgICAvLyBSZWYtY291bnRlZCBvYmplY3RzIGhlbGQg
YnkgY2VydGFpbiBBdWRpb05vZGVzIG1heSBub3QgYmUgdGhyZWFkLXNhZmUuCisgICAgICAgIHNj
aGVkdWxlTm9kZURlbGV0aW9uKCk7CisKKyAgICAgICAgLy8gRml4dXAgdGhlIHN0YXRlIG9mIGFu
eSBkaXJ0eSBBdWRpb1N1bW1pbmdKdW5jdGlvbnMgYW5kIEF1ZGlvTm9kZU91dHB1dHMuCisgICAg
ICAgIGhhbmRsZURpcnR5QXVkaW9TdW1taW5nSnVuY3Rpb25zKCk7CisgICAgICAgIGhhbmRsZURp
cnR5QXVkaW9Ob2RlT3V0cHV0cygpOworCisgICAgICAgIHVwZGF0ZUF1dG9tYXRpY1B1bGxOb2Rl
cygpOworCisgICAgICAgIGlmIChtdXN0UmVsZWFzZUxvY2spCisgICAgICAgICAgICB1bmxvY2so
KTsKKyAgICB9Cit9CisKK3ZvaWQgV2ViS2l0QXVkaW9Db250ZXh0OjpoYW5kbGVEZWZlcnJlZEZp
bmlzaERlcmVmcygpCit7CisgICAgQVNTRVJUKGlzQXVkaW9UaHJlYWQoKSAmJiBpc0dyYXBoT3du
ZXIoKSk7CisgICAgZm9yIChhdXRvJiBub2RlIDogbV9kZWZlcnJlZEZpbmlzaERlcmVmTGlzdCkK
KyAgICAgICAgbm9kZS0+ZmluaXNoRGVyZWYoQXVkaW9Ob2RlOjpSZWZUeXBlQ29ubmVjdGlvbik7
CisKKyAgICBtX2RlZmVycmVkRmluaXNoRGVyZWZMaXN0LmNsZWFyKCk7Cit9CisKK3ZvaWQgV2Vi
S2l0QXVkaW9Db250ZXh0OjptYXJrRm9yRGVsZXRpb24oQXVkaW9Ob2RlJiBub2RlKQoreworICAg
IEFTU0VSVChpc0dyYXBoT3duZXIoKSk7CisKKyAgICBpZiAoaXNBdWRpb1RocmVhZEZpbmlzaGVk
KCkpCisgICAgICAgIG1fbm9kZXNUb0RlbGV0ZS5hcHBlbmQoJm5vZGUpOworICAgIGVsc2UKKyAg
ICAgICAgbV9ub2Rlc01hcmtlZEZvckRlbGV0aW9uLmFwcGVuZCgmbm9kZSk7CisKKyAgICAvLyBU
aGlzIGlzIHByb2JhYmx5IHRoZSBiZXN0IHRpbWUgZm9yIHVzIHRvIHJlbW92ZSB0aGUgbm9kZSBm
cm9tIGF1dG9tYXRpYyBwdWxsIGxpc3QsCisgICAgLy8gc2luY2UgYWxsIGNvbm5lY3Rpb25zIGFy
ZSBnb25lIGFuZCB3ZSBob2xkIHRoZSBncmFwaCBsb2NrLiBUaGVuIHdoZW4gaGFuZGxlUG9zdFJl
bmRlclRhc2tzKCkKKyAgICAvLyBnZXRzIGEgY2hhbmNlIHRvIHNjaGVkdWxlIHRoZSBkZWxldGlv
biB3b3JrLCB1cGRhdGVBdXRvbWF0aWNQdWxsTm9kZXMoKSBhbHNvIGdldHMgYSBjaGFuY2UgdG8K
KyAgICAvLyBtb2RpZnkgbV9yZW5kZXJpbmdBdXRvbWF0aWNQdWxsTm9kZXMuCisgICAgcmVtb3Zl
QXV0b21hdGljUHVsbE5vZGUobm9kZSk7Cit9CisKK3ZvaWQgV2ViS2l0QXVkaW9Db250ZXh0Ojpz
Y2hlZHVsZU5vZGVEZWxldGlvbigpCit7CisgICAgYm9vbCBpc0dvb2QgPSBtX2lzSW5pdGlhbGl6
ZWQgJiYgaXNHcmFwaE93bmVyKCk7CisgICAgQVNTRVJUKGlzR29vZCk7CisgICAgaWYgKCFpc0dv
b2QpCisgICAgICAgIHJldHVybjsKKworICAgIC8vIE1ha2Ugc3VyZSB0byBjYWxsIGRlbGV0ZU1h
cmtlZE5vZGVzKCkgb24gbWFpbiB0aHJlYWQuCisgICAgaWYgKG1fbm9kZXNNYXJrZWRGb3JEZWxl
dGlvbi5zaXplKCkgJiYgIW1faXNEZWxldGlvblNjaGVkdWxlZCkgeworICAgICAgICBtX25vZGVz
VG9EZWxldGUuYXBwZW5kVmVjdG9yKG1fbm9kZXNNYXJrZWRGb3JEZWxldGlvbik7CisgICAgICAg
IG1fbm9kZXNNYXJrZWRGb3JEZWxldGlvbi5jbGVhcigpOworCisgICAgICAgIG1faXNEZWxldGlv
blNjaGVkdWxlZCA9IHRydWU7CisKKyAgICAgICAgY2FsbE9uTWFpblRocmVhZChbcHJvdGVjdGVk
VGhpcyA9IG1ha2VSZWYoKnRoaXMpXSgpIG11dGFibGUgeworICAgICAgICAgICAgcHJvdGVjdGVk
VGhpcy0+ZGVsZXRlTWFya2VkTm9kZXMoKTsKKyAgICAgICAgfSk7CisgICAgfQorfQorCit2b2lk
IFdlYktpdEF1ZGlvQ29udGV4dDo6ZGVsZXRlTWFya2VkTm9kZXMoKQoreworICAgIEFTU0VSVChp
c01haW5UaHJlYWQoKSk7CisKKyAgICAvLyBQcm90ZWN0IHRoaXMgb2JqZWN0IGZyb20gYmVpbmcg
ZGVsZXRlZCBiZWZvcmUgd2UgcmVsZWFzZSB0aGUgbXV0ZXggbG9ja2VkIGJ5IEF1dG9Mb2NrZXIu
CisgICAgUmVmPFdlYktpdEF1ZGlvQ29udGV4dD4gcHJvdGVjdGVkVGhpcygqdGhpcyk7CisgICAg
eworICAgICAgICBBdXRvTG9ja2VyIGxvY2tlcigqdGhpcyk7CisKKyAgICAgICAgd2hpbGUgKG1f
bm9kZXNUb0RlbGV0ZS5zaXplKCkpIHsKKyAgICAgICAgICAgIEF1ZGlvTm9kZSogbm9kZSA9IG1f
bm9kZXNUb0RlbGV0ZS50YWtlTGFzdCgpOworCisgICAgICAgICAgICAvLyBCZWZvcmUgZGVsZXRp
bmcgdGhlIG5vZGUsIGNsZWFyIG91dCBhbnkgQXVkaW9Ob2RlSW5wdXRzIGZyb20gbV9kaXJ0eVN1
bW1pbmdKdW5jdGlvbnMuCisgICAgICAgICAgICB1bnNpZ25lZCBudW1iZXJPZklucHV0cyA9IG5v
ZGUtPm51bWJlck9mSW5wdXRzKCk7CisgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBp
IDwgbnVtYmVyT2ZJbnB1dHM7ICsraSkKKyAgICAgICAgICAgICAgICBtX2RpcnR5U3VtbWluZ0p1
bmN0aW9ucy5yZW1vdmUobm9kZS0+aW5wdXQoaSkpOworCisgICAgICAgICAgICAvLyBCZWZvcmUg
ZGVsZXRpbmcgdGhlIG5vZGUsIGNsZWFyIG91dCBhbnkgQXVkaW9Ob2RlT3V0cHV0cyBmcm9tIG1f
ZGlydHlBdWRpb05vZGVPdXRwdXRzLgorICAgICAgICAgICAgdW5zaWduZWQgbnVtYmVyT2ZPdXRw
dXRzID0gbm9kZS0+bnVtYmVyT2ZPdXRwdXRzKCk7CisgICAgICAgICAgICBmb3IgKHVuc2lnbmVk
IGkgPSAwOyBpIDwgbnVtYmVyT2ZPdXRwdXRzOyArK2kpCisgICAgICAgICAgICAgICAgbV9kaXJ0
eUF1ZGlvTm9kZU91dHB1dHMucmVtb3ZlKG5vZGUtPm91dHB1dChpKSk7CisKKyAgICAgICAgICAg
IC8vIEZpbmFsbHksIGRlbGV0ZSBpdC4KKyAgICAgICAgICAgIGRlbGV0ZSBub2RlOworICAgICAg
ICB9CisgICAgICAgIG1faXNEZWxldGlvblNjaGVkdWxlZCA9IGZhbHNlOworICAgIH0KK30KKwor
dm9pZCBXZWJLaXRBdWRpb0NvbnRleHQ6Om1hcmtTdW1taW5nSnVuY3Rpb25EaXJ0eShBdWRpb1N1
bW1pbmdKdW5jdGlvbiogc3VtbWluZ0p1bmN0aW9uKQoreworICAgIEFTU0VSVChpc0dyYXBoT3du
ZXIoKSk7CisgICAgbV9kaXJ0eVN1bW1pbmdKdW5jdGlvbnMuYWRkKHN1bW1pbmdKdW5jdGlvbik7
Cit9CisKK3ZvaWQgV2ViS2l0QXVkaW9Db250ZXh0OjpyZW1vdmVNYXJrZWRTdW1taW5nSnVuY3Rp
b24oQXVkaW9TdW1taW5nSnVuY3Rpb24qIHN1bW1pbmdKdW5jdGlvbikKK3sKKyAgICBBU1NFUlQo
aXNNYWluVGhyZWFkKCkpOworICAgIEF1dG9Mb2NrZXIgbG9ja2VyKCp0aGlzKTsKKyAgICBtX2Rp
cnR5U3VtbWluZ0p1bmN0aW9ucy5yZW1vdmUoc3VtbWluZ0p1bmN0aW9uKTsKK30KKwordm9pZCBX
ZWJLaXRBdWRpb0NvbnRleHQ6Om1hcmtBdWRpb05vZGVPdXRwdXREaXJ0eShBdWRpb05vZGVPdXRw
dXQqIG91dHB1dCkKK3sKKyAgICBBU1NFUlQoaXNHcmFwaE93bmVyKCkpOworICAgIG1fZGlydHlB
dWRpb05vZGVPdXRwdXRzLmFkZChvdXRwdXQpOworfQorCit2b2lkIFdlYktpdEF1ZGlvQ29udGV4
dDo6aGFuZGxlRGlydHlBdWRpb1N1bW1pbmdKdW5jdGlvbnMoKQoreworICAgIEFTU0VSVChpc0dy
YXBoT3duZXIoKSk7CisKKyAgICBmb3IgKGF1dG8mIGp1bmN0aW9uIDogbV9kaXJ0eVN1bW1pbmdK
dW5jdGlvbnMpCisgICAgICAgIGp1bmN0aW9uLT51cGRhdGVSZW5kZXJpbmdTdGF0ZSgpOworCisg
ICAgbV9kaXJ0eVN1bW1pbmdKdW5jdGlvbnMuY2xlYXIoKTsKK30KKwordm9pZCBXZWJLaXRBdWRp
b0NvbnRleHQ6OmhhbmRsZURpcnR5QXVkaW9Ob2RlT3V0cHV0cygpCit7CisgICAgQVNTRVJUKGlz
R3JhcGhPd25lcigpKTsKKworICAgIGZvciAoYXV0byYgb3V0cHV0IDogbV9kaXJ0eUF1ZGlvTm9k
ZU91dHB1dHMpCisgICAgICAgIG91dHB1dC0+dXBkYXRlUmVuZGVyaW5nU3RhdGUoKTsKKworICAg
IG1fZGlydHlBdWRpb05vZGVPdXRwdXRzLmNsZWFyKCk7Cit9CisKK3ZvaWQgV2ViS2l0QXVkaW9D
b250ZXh0OjphZGRBdXRvbWF0aWNQdWxsTm9kZShBdWRpb05vZGUmIG5vZGUpCit7CisgICAgQVNT
RVJUKGlzR3JhcGhPd25lcigpKTsKKworICAgIGlmIChtX2F1dG9tYXRpY1B1bGxOb2Rlcy5hZGQo
Jm5vZGUpLmlzTmV3RW50cnkpCisgICAgICAgIG1fYXV0b21hdGljUHVsbE5vZGVzTmVlZFVwZGF0
aW5nID0gdHJ1ZTsKK30KKwordm9pZCBXZWJLaXRBdWRpb0NvbnRleHQ6OnJlbW92ZUF1dG9tYXRp
Y1B1bGxOb2RlKEF1ZGlvTm9kZSYgbm9kZSkKK3sKKyAgICBBU1NFUlQoaXNHcmFwaE93bmVyKCkp
OworCisgICAgaWYgKG1fYXV0b21hdGljUHVsbE5vZGVzLnJlbW92ZSgmbm9kZSkpCisgICAgICAg
IG1fYXV0b21hdGljUHVsbE5vZGVzTmVlZFVwZGF0aW5nID0gdHJ1ZTsKK30KKwordm9pZCBXZWJL
aXRBdWRpb0NvbnRleHQ6OnVwZGF0ZUF1dG9tYXRpY1B1bGxOb2RlcygpCit7CisgICAgQVNTRVJU
KGlzR3JhcGhPd25lcigpKTsKKworICAgIGlmIChtX2F1dG9tYXRpY1B1bGxOb2Rlc05lZWRVcGRh
dGluZykgeworICAgICAgICAvLyBDb3B5IGZyb20gbV9hdXRvbWF0aWNQdWxsTm9kZXMgdG8gbV9y
ZW5kZXJpbmdBdXRvbWF0aWNQdWxsTm9kZXMuCisgICAgICAgIG1fcmVuZGVyaW5nQXV0b21hdGlj
UHVsbE5vZGVzLnJlc2l6ZShtX2F1dG9tYXRpY1B1bGxOb2Rlcy5zaXplKCkpOworCisgICAgICAg
IHVuc2lnbmVkIGkgPSAwOworICAgICAgICBmb3IgKGF1dG8mIG91dHB1dCA6IG1fYXV0b21hdGlj
UHVsbE5vZGVzKQorICAgICAgICAgICAgbV9yZW5kZXJpbmdBdXRvbWF0aWNQdWxsTm9kZXNbaSsr
XSA9IG91dHB1dDsKKworICAgICAgICBtX2F1dG9tYXRpY1B1bGxOb2Rlc05lZWRVcGRhdGluZyA9
IGZhbHNlOworICAgIH0KK30KKwordm9pZCBXZWJLaXRBdWRpb0NvbnRleHQ6OnByb2Nlc3NBdXRv
bWF0aWNQdWxsTm9kZXMoc2l6ZV90IGZyYW1lc1RvUHJvY2VzcykKK3sKKyAgICBBU1NFUlQoaXNB
dWRpb1RocmVhZCgpKTsKKworICAgIGZvciAoYXV0byYgbm9kZSA6IG1fcmVuZGVyaW5nQXV0b21h
dGljUHVsbE5vZGVzKQorICAgICAgICBub2RlLT5wcm9jZXNzSWZOZWNlc3NhcnkoZnJhbWVzVG9Q
cm9jZXNzKTsKK30KKwordm9pZCBXZWJLaXRBdWRpb0NvbnRleHQ6Om5vZGVXaWxsQmVnaW5QbGF5
YmFjaygpCit7CisgICAgLy8gQ2FsbGVkIGJ5IHNjaGVkdWxlZCBBdWRpb05vZGVzIHdoZW4gY2xp
ZW50cyBzY2hlZHVsZSB0aGVpciBzdGFydCB0aW1lcy4KKyAgICAvLyBQcmlvciB0byB0aGUgaW50
cm9kdWN0aW9uIG9mIHN1c3BlbmQoKSwgcmVzdW1lKCksIGFuZCBzdG9wKCksIHN0YXJ0aW5nCisg
ICAgLy8gYSBzY2hlZHVsZWQgQXVkaW9Ob2RlIHdvdWxkIHJlbW92ZSB0aGUgdXNlci1nZXN0dXJl
IHJlc3RyaWN0aW9uLCBpZiBwcmVzZW50LAorICAgIC8vIGFuZCB3b3VsZCB0aHVzIHVubXV0ZSB0
aGUgY29udGV4dC4gTm93IHRoYXQgQXVkaW9Db250ZXh0IHN0YXlzIGluIHRoZQorICAgIC8vICJz
dXNwZW5kZWQiIHN0YXRlIGlmIGEgdXNlci1nZXN0dXJlIHJlc3RyaWN0aW9uIGlzIHByZXNlbnQs
IHN0YXJ0aW5nIGEKKyAgICAvLyBzY2hlZHVsZSBBdWRpb05vZGUgc2hvdWxkIHNldCB0aGUgc3Rh
dGUgdG8gInJ1bm5pbmciLCBidXQgb25seSBpZiB0aGUKKyAgICAvLyB1c2VyLWdlc3R1cmUgcmVz
dHJpY3Rpb24gaXMgc2V0LgorICAgIGlmICh1c2VyR2VzdHVyZVJlcXVpcmVkRm9yQXVkaW9TdGFy
dCgpKQorICAgICAgICBzdGFydFJlbmRlcmluZygpOworfQorCitzdGF0aWMgYm9vbCBzaG91bGRE
b2N1bWVudEFsbG93V2ViQXVkaW9Ub0F1dG9QbGF5KGNvbnN0IERvY3VtZW50JiBkb2N1bWVudCkK
K3sKKyAgICBpZiAoZG9jdW1lbnQucHJvY2Vzc2luZ1VzZXJHZXN0dXJlRm9yTWVkaWEoKSB8fCBk
b2N1bWVudC5pc0NhcHR1cmluZygpKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICByZXR1cm4g
ZG9jdW1lbnQucXVpcmtzKCkuc2hvdWxkQXV0b3BsYXlXZWJBdWRpb0ZvckFyYml0cmFyeVVzZXJH
ZXN0dXJlKCkgJiYgZG9jdW1lbnQudG9wRG9jdW1lbnQoKS5oYXNIYWRVc2VySW50ZXJhY3Rpb24o
KTsKK30KKworYm9vbCBXZWJLaXRBdWRpb0NvbnRleHQ6OndpbGxCZWdpblBsYXliYWNrKCkKK3sK
KyAgICBhdXRvKiBkb2N1bWVudCA9IHRoaXMtPmRvY3VtZW50KCk7CisgICAgaWYgKCFkb2N1bWVu
dCkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgaWYgKHVzZXJHZXN0dXJlUmVxdWlyZWRG
b3JBdWRpb1N0YXJ0KCkpIHsKKyAgICAgICAgaWYgKCFzaG91bGREb2N1bWVudEFsbG93V2ViQXVk
aW9Ub0F1dG9QbGF5KCpkb2N1bWVudCkpIHsKKyAgICAgICAgICAgIEFMV0FZU19MT0coTE9HSURF
TlRJRklFUiwgInJldHVybmluZyBmYWxzZSwgbm90IHByb2Nlc3NpbmcgdXNlciBnZXN0dXJlIG9y
IGNhcHR1cmluZyIpOworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisgICAg
ICAgIHJlbW92ZUJlaGF2aW9yUmVzdHJpY3Rpb24oV2ViS2l0QXVkaW9Db250ZXh0OjpSZXF1aXJl
VXNlckdlc3R1cmVGb3JBdWRpb1N0YXJ0UmVzdHJpY3Rpb24pOworICAgIH0KKworICAgIGlmIChw
YWdlQ29uc2VudFJlcXVpcmVkRm9yQXVkaW9TdGFydCgpKSB7CisgICAgICAgIGF1dG8qIHBhZ2Ug
PSBkb2N1bWVudC0+cGFnZSgpOworICAgICAgICBpZiAocGFnZSAmJiAhcGFnZS0+Y2FuU3RhcnRN
ZWRpYSgpKSB7CisgICAgICAgICAgICBkb2N1bWVudC0+YWRkTWVkaWFDYW5TdGFydExpc3RlbmVy
KCp0aGlzKTsKKyAgICAgICAgICAgIEFMV0FZU19MT0coTE9HSURFTlRJRklFUiwgInJldHVybmlu
ZyBmYWxzZSwgcGFnZSBkb2Vzbid0IGFsbG93IG1lZGlhIHRvIHN0YXJ0Iik7CisgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKyAgICAgICAgcmVtb3ZlQmVoYXZpb3JSZXN0cmlj
dGlvbihXZWJLaXRBdWRpb0NvbnRleHQ6OlJlcXVpcmVQYWdlQ29uc2VudEZvckF1ZGlvU3RhcnRS
ZXN0cmljdGlvbik7CisgICAgfQorCisgICAgYXV0byB3aWxsQmVnaW4gPSBtX21lZGlhU2Vzc2lv
bi0+Y2xpZW50V2lsbEJlZ2luUGxheWJhY2soKTsKKyAgICBBTFdBWVNfTE9HKExPR0lERU5USUZJ
RVIsICJyZXR1cm5pbmcgIiwgd2lsbEJlZ2luKTsKKworICAgIHJldHVybiB3aWxsQmVnaW47Cit9
CisKK2Jvb2wgV2ViS2l0QXVkaW9Db250ZXh0Ojp3aWxsUGF1c2VQbGF5YmFjaygpCit7CisgICAg
YXV0byogZG9jdW1lbnQgPSB0aGlzLT5kb2N1bWVudCgpOworICAgIGlmICghZG9jdW1lbnQpCisg
ICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGlmICh1c2VyR2VzdHVyZVJlcXVpcmVkRm9yQXVk
aW9TdGFydCgpKSB7CisgICAgICAgIGlmICghZG9jdW1lbnQtPnByb2Nlc3NpbmdVc2VyR2VzdHVy
ZUZvck1lZGlhKCkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIHJlbW92ZUJl
aGF2aW9yUmVzdHJpY3Rpb24oV2ViS2l0QXVkaW9Db250ZXh0OjpSZXF1aXJlVXNlckdlc3R1cmVG
b3JBdWRpb1N0YXJ0UmVzdHJpY3Rpb24pOworICAgIH0KKworICAgIGlmIChwYWdlQ29uc2VudFJl
cXVpcmVkRm9yQXVkaW9TdGFydCgpKSB7CisgICAgICAgIGF1dG8qIHBhZ2UgPSBkb2N1bWVudC0+
cGFnZSgpOworICAgICAgICBpZiAocGFnZSAmJiAhcGFnZS0+Y2FuU3RhcnRNZWRpYSgpKSB7Cisg
ICAgICAgICAgICBkb2N1bWVudC0+YWRkTWVkaWFDYW5TdGFydExpc3RlbmVyKCp0aGlzKTsKKyAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorICAgICAgICByZW1vdmVCZWhhdmlv
clJlc3RyaWN0aW9uKFdlYktpdEF1ZGlvQ29udGV4dDo6UmVxdWlyZVBhZ2VDb25zZW50Rm9yQXVk
aW9TdGFydFJlc3RyaWN0aW9uKTsKKyAgICB9CisKKyAgICByZXR1cm4gbV9tZWRpYVNlc3Npb24t
PmNsaWVudFdpbGxQYXVzZVBsYXliYWNrKCk7Cit9CisKK3ZvaWQgV2ViS2l0QXVkaW9Db250ZXh0
OjpzdGFydFJlbmRlcmluZygpCit7CisgICAgQUxXQVlTX0xPRyhMT0dJREVOVElGSUVSKTsKKyAg
ICBpZiAobV9pc1N0b3BTY2hlZHVsZWQgfHwgIXdpbGxCZWdpblBsYXliYWNrKCkpCisgICAgICAg
IHJldHVybjsKKworICAgIG1ha2VQZW5kaW5nQWN0aXZpdHkoKTsKKworICAgIGRlc3RpbmF0aW9u
KCktPnN0YXJ0UmVuZGVyaW5nKCk7CisgICAgc2V0U3RhdGUoU3RhdGU6OlJ1bm5pbmcpOworfQor
Cit2b2lkIFdlYktpdEF1ZGlvQ29udGV4dDo6bWVkaWFDYW5TdGFydChEb2N1bWVudCYgZG9jdW1l
bnQpCit7CisgICAgQVNTRVJUX1VOVVNFRChkb2N1bWVudCwgJmRvY3VtZW50ID09IHRoaXMtPmRv
Y3VtZW50KCkpOworICAgIHJlbW92ZUJlaGF2aW9yUmVzdHJpY3Rpb24oV2ViS2l0QXVkaW9Db250
ZXh0OjpSZXF1aXJlUGFnZUNvbnNlbnRGb3JBdWRpb1N0YXJ0UmVzdHJpY3Rpb24pOworICAgIG1h
eVJlc3VtZVBsYXliYWNrKHRydWUpOworfQorCitNZWRpYVByb2R1Y2VyOjpNZWRpYVN0YXRlRmxh
Z3MgV2ViS2l0QXVkaW9Db250ZXh0OjptZWRpYVN0YXRlKCkgY29uc3QKK3sKKyAgICBpZiAoIW1f
aXNTdG9wU2NoZWR1bGVkICYmIG1fZGVzdGluYXRpb25Ob2RlICYmIG1fZGVzdGluYXRpb25Ob2Rl
LT5pc1BsYXlpbmdBdWRpbygpKQorICAgICAgICByZXR1cm4gTWVkaWFQcm9kdWNlcjo6SXNQbGF5
aW5nQXVkaW87CisKKyAgICByZXR1cm4gTWVkaWFQcm9kdWNlcjo6SXNOb3RQbGF5aW5nOworfQor
Cit2b2lkIFdlYktpdEF1ZGlvQ29udGV4dDo6cGFnZU11dGVkU3RhdGVEaWRDaGFuZ2UoKQorewor
ICAgIGlmIChtX2Rlc3RpbmF0aW9uTm9kZSAmJiBkb2N1bWVudCgpICYmIGRvY3VtZW50KCktPnBh
Z2UoKSkKKyAgICAgICAgbV9kZXN0aW5hdGlvbk5vZGUtPnNldE11dGVkKGRvY3VtZW50KCktPnBh
Z2UoKS0+aXNBdWRpb011dGVkKCkpOworfQorCit2b2lkIFdlYktpdEF1ZGlvQ29udGV4dDo6aXNQ
bGF5aW5nQXVkaW9EaWRDaGFuZ2UoKQoreworICAgIC8vIE1ha2Ugc3VyZSB0byBjYWxsIERvY3Vt
ZW50Ojp1cGRhdGVJc1BsYXlpbmdNZWRpYSgpIG9uIHRoZSBtYWluIHRocmVhZCwgc2luY2UKKyAg
ICAvLyB3ZSBjb3VsZCBiZSBvbiB0aGUgYXVkaW8gSS9PIHRocmVhZCBoZXJlIGFuZCB0aGUgY2Fs
bCBpbnRvIFdlYkNvcmUgY291bGQgYmxvY2suCisgICAgY2FsbE9uTWFpblRocmVhZChbcHJvdGVj
dGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpXSB7CisgICAgICAgIGlmIChwcm90ZWN0ZWRUaGlzLT5k
b2N1bWVudCgpKQorICAgICAgICAgICAgcHJvdGVjdGVkVGhpcy0+ZG9jdW1lbnQoKS0+dXBkYXRl
SXNQbGF5aW5nTWVkaWEoKTsKKyAgICB9KTsKK30KKwordm9pZCBXZWJLaXRBdWRpb0NvbnRleHQ6
OmZpbmlzaGVkUmVuZGVyaW5nKGJvb2wgZGlkUmVuZGVyaW5nKQoreworICAgIEFTU0VSVChpc09m
ZmxpbmVDb250ZXh0KCkpOworICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisgICAgaWYgKCFp
c01haW5UaHJlYWQoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgYXV0byBjbGVhclBlbmRpbmdB
Y3Rpdml0eUlmRXhpdEVhcmx5ID0gV1RGOjptYWtlU2NvcGVFeGl0KFt0aGlzXSB7CisgICAgICAg
IGNsZWFyUGVuZGluZ0FjdGl2aXR5KCk7CisgICAgfSk7CisKKworICAgIEFMV0FZU19MT0coTE9H
SURFTlRJRklFUik7CisKKyAgICBpZiAoIWRpZFJlbmRlcmluZykKKyAgICAgICAgcmV0dXJuOwor
CisgICAgQXVkaW9CdWZmZXIqIHJlbmRlcmVkQnVmZmVyID0gbV9yZW5kZXJUYXJnZXQuZ2V0KCk7
CisgICAgc2V0U3RhdGUoU3RhdGU6OkNsb3NlZCk7CisKKyAgICBBU1NFUlQocmVuZGVyZWRCdWZm
ZXIpOworICAgIGlmICghcmVuZGVyZWRCdWZmZXIpCisgICAgICAgIHJldHVybjsKKworICAgIC8v
IEF2b2lkIGZpcmluZyB0aGUgZXZlbnQgaWYgdGhlIGRvY3VtZW50IGhhcyBhbHJlYWR5IGdvbmUg
YXdheS4KKyAgICBpZiAobV9pc1N0b3BTY2hlZHVsZWQpCisgICAgICAgIHJldHVybjsKKworICAg
IGNsZWFyUGVuZGluZ0FjdGl2aXR5SWZFeGl0RWFybHkucmVsZWFzZSgpOworICAgIG1fZXZlbnRR
dWV1ZS0+ZW5xdWV1ZUV2ZW50KE9mZmxpbmVBdWRpb0NvbXBsZXRpb25FdmVudDo6Y3JlYXRlKHJl
bmRlcmVkQnVmZmVyKSk7Cit9CisKK3ZvaWQgV2ViS2l0QXVkaW9Db250ZXh0OjpkaXNwYXRjaEV2
ZW50KEV2ZW50JiBldmVudCkKK3sKKyAgICBFdmVudFRhcmdldDo6ZGlzcGF0Y2hFdmVudChldmVu
dCk7CisgICAgaWYgKGV2ZW50LmV2ZW50SW50ZXJmYWNlKCkgPT0gT2ZmbGluZUF1ZGlvQ29tcGxl
dGlvbkV2ZW50SW50ZXJmYWNlVHlwZSkKKyAgICAgICAgY2xlYXJQZW5kaW5nQWN0aXZpdHkoKTsK
K30KKwordm9pZCBXZWJLaXRBdWRpb0NvbnRleHQ6OmluY3JlbWVudEFjdGl2ZVNvdXJjZUNvdW50
KCkKK3sKKyAgICArK21fYWN0aXZlU291cmNlQ291bnQ7Cit9CisKK3ZvaWQgV2ViS2l0QXVkaW9D
b250ZXh0OjpkZWNyZW1lbnRBY3RpdmVTb3VyY2VDb3VudCgpCit7CisgICAgLS1tX2FjdGl2ZVNv
dXJjZUNvdW50OworfQorCit2b2lkIFdlYktpdEF1ZGlvQ29udGV4dDo6c3VzcGVuZFJlbmRlcmlu
ZyhET01Qcm9taXNlRGVmZXJyZWQ8dm9pZD4mJiBwcm9taXNlKQoreworICAgIGlmIChpc09mZmxp
bmVDb250ZXh0KCkgfHwgbV9pc1N0b3BTY2hlZHVsZWQpIHsKKyAgICAgICAgcHJvbWlzZS5yZWpl
Y3QoSW52YWxpZFN0YXRlRXJyb3IpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgaWYg
KG1fc3RhdGUgPT0gU3RhdGU6OlN1c3BlbmRlZCkgeworICAgICAgICBwcm9taXNlLnJlc29sdmUo
KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlmIChtX3N0YXRlID09IFN0YXRlOjpD
bG9zZWQgfHwgbV9zdGF0ZSA9PSBTdGF0ZTo6SW50ZXJydXB0ZWQgfHwgIW1fZGVzdGluYXRpb25O
b2RlKSB7CisgICAgICAgIHByb21pc2UucmVqZWN0KCk7CisgICAgICAgIHJldHVybjsKKyAgICB9
CisKKyAgICBhZGRSZWFjdGlvbihTdGF0ZTo6U3VzcGVuZGVkLCBXVEZNb3ZlKHByb21pc2UpKTsK
KworICAgIGlmICghd2lsbFBhdXNlUGxheWJhY2soKSkKKyAgICAgICAgcmV0dXJuOworCisgICAg
bGF6eUluaXRpYWxpemUoKTsKKworICAgIG1fZGVzdGluYXRpb25Ob2RlLT5zdXNwZW5kKFt0aGlz
LCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyldIHsKKyAgICAgICAgc2V0U3RhdGUoU3Rh
dGU6OlN1c3BlbmRlZCk7CisgICAgfSk7Cit9CisKK3ZvaWQgV2ViS2l0QXVkaW9Db250ZXh0Ojpy
ZXN1bWVSZW5kZXJpbmcoRE9NUHJvbWlzZURlZmVycmVkPHZvaWQ+JiYgcHJvbWlzZSkKK3sKKyAg
ICBpZiAoaXNPZmZsaW5lQ29udGV4dCgpIHx8IG1faXNTdG9wU2NoZWR1bGVkKSB7CisgICAgICAg
IHByb21pc2UucmVqZWN0KEludmFsaWRTdGF0ZUVycm9yKTsKKyAgICAgICAgcmV0dXJuOworICAg
IH0KKworICAgIGlmIChtX3N0YXRlID09IFN0YXRlOjpSdW5uaW5nKSB7CisgICAgICAgIHByb21p
c2UucmVzb2x2ZSgpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgaWYgKG1fc3RhdGUg
PT0gU3RhdGU6OkNsb3NlZCB8fCAhbV9kZXN0aW5hdGlvbk5vZGUpIHsKKyAgICAgICAgcHJvbWlz
ZS5yZWplY3QoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGFkZFJlYWN0aW9uKFN0
YXRlOjpSdW5uaW5nLCBXVEZNb3ZlKHByb21pc2UpKTsKKworICAgIGlmICghd2lsbEJlZ2luUGxh
eWJhY2soKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgbGF6eUluaXRpYWxpemUoKTsKKworICAg
IG1fZGVzdGluYXRpb25Ob2RlLT5yZXN1bWUoW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVm
KCp0aGlzKV0geworICAgICAgICBzZXRTdGF0ZShTdGF0ZTo6UnVubmluZyk7CisgICAgfSk7Cit9
CisKK3ZvaWQgV2ViS2l0QXVkaW9Db250ZXh0OjpjbG9zZShET01Qcm9taXNlRGVmZXJyZWQ8dm9p
ZD4mJiBwcm9taXNlKQoreworICAgIGlmIChpc09mZmxpbmVDb250ZXh0KCkgfHwgbV9pc1N0b3BT
Y2hlZHVsZWQpIHsKKyAgICAgICAgcHJvbWlzZS5yZWplY3QoSW52YWxpZFN0YXRlRXJyb3IpOwor
ICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgaWYgKG1fc3RhdGUgPT0gU3RhdGU6OkNsb3Nl
ZCB8fCAhbV9kZXN0aW5hdGlvbk5vZGUpIHsKKyAgICAgICAgcHJvbWlzZS5yZXNvbHZlKCk7Cisg
ICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBhZGRSZWFjdGlvbihTdGF0ZTo6Q2xvc2VkLCBX
VEZNb3ZlKHByb21pc2UpKTsKKworICAgIGxhenlJbml0aWFsaXplKCk7CisKKyAgICBtX2Rlc3Rp
bmF0aW9uTm9kZS0+Y2xvc2UoW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKV0g
eworICAgICAgICBzZXRTdGF0ZShTdGF0ZTo6Q2xvc2VkKTsKKyAgICAgICAgdW5pbml0aWFsaXpl
KCk7CisgICAgfSk7Cit9CisKKwordm9pZCBXZWJLaXRBdWRpb0NvbnRleHQ6OnN1c3BlbmRQbGF5
YmFjaygpCit7CisgICAgaWYgKCFtX2Rlc3RpbmF0aW9uTm9kZSB8fCBtX3N0YXRlID09IFN0YXRl
OjpDbG9zZWQpCisgICAgICAgIHJldHVybjsKKworICAgIGlmIChtX3N0YXRlID09IFN0YXRlOjpT
dXNwZW5kZWQpIHsKKyAgICAgICAgaWYgKG1fbWVkaWFTZXNzaW9uLT5zdGF0ZSgpID09IFBsYXRm
b3JtTWVkaWFTZXNzaW9uOjpJbnRlcnJ1cHRlZCkKKyAgICAgICAgICAgIHNldFN0YXRlKFN0YXRl
OjpJbnRlcnJ1cHRlZCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBsYXp5SW5pdGlh
bGl6ZSgpOworCisgICAgbV9kZXN0aW5hdGlvbk5vZGUtPnN1c3BlbmQoW3RoaXMsIHByb3RlY3Rl
ZFRoaXMgPSBtYWtlUmVmKCp0aGlzKV0geworICAgICAgICBib29sIGludGVycnVwdGVkID0gbV9t
ZWRpYVNlc3Npb24tPnN0YXRlKCkgPT0gUGxhdGZvcm1NZWRpYVNlc3Npb246OkludGVycnVwdGVk
OworICAgICAgICBzZXRTdGF0ZShpbnRlcnJ1cHRlZCA/IFN0YXRlOjpJbnRlcnJ1cHRlZCA6IFN0
YXRlOjpTdXNwZW5kZWQpOworICAgIH0pOworfQorCit2b2lkIFdlYktpdEF1ZGlvQ29udGV4dDo6
bWF5UmVzdW1lUGxheWJhY2soYm9vbCBzaG91bGRSZXN1bWUpCit7CisgICAgaWYgKCFtX2Rlc3Rp
bmF0aW9uTm9kZSB8fCBtX3N0YXRlID09IFN0YXRlOjpDbG9zZWQgfHwgbV9zdGF0ZSA9PSBTdGF0
ZTo6UnVubmluZykKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKCFzaG91bGRSZXN1bWUpIHsK
KyAgICAgICAgc2V0U3RhdGUoU3RhdGU6OlN1c3BlbmRlZCk7CisgICAgICAgIHJldHVybjsKKyAg
ICB9CisKKyAgICBpZiAoIXdpbGxCZWdpblBsYXliYWNrKCkpCisgICAgICAgIHJldHVybjsKKwor
ICAgIGxhenlJbml0aWFsaXplKCk7CisKKyAgICBtX2Rlc3RpbmF0aW9uTm9kZS0+cmVzdW1lKFt0
aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyldIHsKKyAgICAgICAgc2V0U3RhdGUo
U3RhdGU6OlJ1bm5pbmcpOworICAgIH0pOworfQorCit2b2lkIFdlYktpdEF1ZGlvQ29udGV4dDo6
cG9zdFRhc2soV1RGOjpGdW5jdGlvbjx2b2lkKCk+JiYgdGFzaykKK3sKKyAgICBpZiAobV9pc1N0
b3BTY2hlZHVsZWQpCisgICAgICAgIHJldHVybjsKKworICAgIG1fc2NyaXB0RXhlY3V0aW9uQ29u
dGV4dC0+cG9zdFRhc2soV1RGTW92ZSh0YXNrKSk7Cit9CisKK2NvbnN0IFNlY3VyaXR5T3JpZ2lu
KiBXZWJLaXRBdWRpb0NvbnRleHQ6Om9yaWdpbigpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fc2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCA/IG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+c2VjdXJpdHlP
cmlnaW4oKSA6IG51bGxwdHI7Cit9CisKK3ZvaWQgV2ViS2l0QXVkaW9Db250ZXh0OjphZGRDb25z
b2xlTWVzc2FnZShNZXNzYWdlU291cmNlIHNvdXJjZSwgTWVzc2FnZUxldmVsIGxldmVsLCBjb25z
dCBTdHJpbmcmIG1lc3NhZ2UpCit7CisgICAgaWYgKG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dCkK
KyAgICAgICAgbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0LT5hZGRDb25zb2xlTWVzc2FnZShzb3Vy
Y2UsIGxldmVsLCBtZXNzYWdlKTsKK30KKwordm9pZCBXZWJLaXRBdWRpb0NvbnRleHQ6OmNsZWFy
UGVuZGluZ0FjdGl2aXR5KCkKK3sKKyAgICBpZiAoIW1fcGVuZGluZ0FjdGl2aXR5KQorICAgICAg
ICByZXR1cm47CisgICAgbV9wZW5kaW5nQWN0aXZpdHkgPSBudWxscHRyOworICAgIC8vIEZJWE1F
OiBSZW1vdmUgdGhpcyBzcGVjaWZpYyBkZXJlZigpIGFuZCByZWYoKSBjYWxsIGluIG1ha2VQZW5k
aW5nQWN0aXZpdHkoKS4KKyAgICBkZXJlZigpOworfQorCit2b2lkIFdlYktpdEF1ZGlvQ29udGV4
dDo6bWFrZVBlbmRpbmdBY3Rpdml0eSgpCit7CisgICAgaWYgKG1fcGVuZGluZ0FjdGl2aXR5KQor
ICAgICAgICByZXR1cm47CisgICAgbV9wZW5kaW5nQWN0aXZpdHkgPSBBY3RpdmVET01PYmplY3Q6
Om1ha2VQZW5kaW5nQWN0aXZpdHkoKnRoaXMpOworICAgIHJlZigpOworfQorCisjaWYgIVJFTEVB
U0VfTE9HX0RJU0FCTEVECitXVEZMb2dDaGFubmVsJiBXZWJLaXRBdWRpb0NvbnRleHQ6OmxvZ0No
YW5uZWwoKSBjb25zdAoreworICAgIHJldHVybiBMb2dNZWRpYTsKK30KKyNlbmRpZgorCit9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoV0VCX0FVRElPKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9XZWJLaXRBdWRpb0NvbnRleHQu
aCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vV2ViS2l0QXVkaW9Db250ZXh0LmgK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjY3MjQ2OGM1ZmJlCi0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9XZWJLaXRBdWRp
b0NvbnRleHQuaApAQCAtMCwwICsxLDQzMSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBH
b29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE2LTIw
MjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAg
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJF
CisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04KKyAqIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUworICogU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNl
CisKKyNpbmNsdWRlICJBY3RpdmVET01PYmplY3QuaCIKKyNpbmNsdWRlICJBc3luY0F1ZGlvRGVj
b2Rlci5oIgorI2luY2x1ZGUgIkF1ZGlvQnVzLmgiCisjaW5jbHVkZSAiQXVkaW9Db250ZXh0Lmgi
CisjaW5jbHVkZSAiQXVkaW9Db250ZXh0U3RhdGUuaCIKKyNpbmNsdWRlICJBdWRpb0Rlc3RpbmF0
aW9uTm9kZS5oIgorI2luY2x1ZGUgIkV2ZW50VGFyZ2V0LmgiCisjaW5jbHVkZSAiTWVkaWFDYW5T
dGFydExpc3RlbmVyLmgiCisjaW5jbHVkZSAiTWVkaWFQcm9kdWNlci5oIgorI2luY2x1ZGUgIlBs
YXRmb3JtTWVkaWFTZXNzaW9uLmgiCisjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5o
IgorI2luY2x1ZGUgIlZpc2liaWxpdHlDaGFuZ2VDbGllbnQuaCIKKyNpbmNsdWRlIDxKYXZhU2Ny
aXB0Q29yZS9Db25zb2xlVHlwZXMuaD4KKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9GbG9hdDMy
QXJyYXkuaD4KKyNpbmNsdWRlIDxhdG9taWM+CisjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KKyNp
bmNsdWRlIDx3dGYvTG9nZ2VySGVscGVyLmg+CisjaW5jbHVkZSA8d3RmL01haW5UaHJlYWQuaD4K
KyNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CisjaW5jbHVkZSA8d3RmL1RocmVhZFNhZmVSZWZDb3Vu
dGVkLmg+CisjaW5jbHVkZSA8d3RmL1RocmVhZGluZy5oPgorI2luY2x1ZGUgPHd0Zi9VbmlxdWVS
ZWYuaD4KKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvQXRvbVN0
cmluZ0hhc2guaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBBbmFseXNlck5vZGU7
CitjbGFzcyBBdWRpb0J1ZmZlcjsKK2NsYXNzIEF1ZGlvQnVmZmVyQ2FsbGJhY2s7CitjbGFzcyBB
dWRpb0J1ZmZlclNvdXJjZU5vZGU7CitjbGFzcyBBdWRpb0xpc3RlbmVyOworY2xhc3MgQXVkaW9T
dW1taW5nSnVuY3Rpb247CitjbGFzcyBCaXF1YWRGaWx0ZXJOb2RlOworY2xhc3MgQ2hhbm5lbE1l
cmdlck5vZGU7CitjbGFzcyBDaGFubmVsU3BsaXR0ZXJOb2RlOworY2xhc3MgQ29udm9sdmVyTm9k
ZTsKK2NsYXNzIERlbGF5Tm9kZTsKK2NsYXNzIERvY3VtZW50OworY2xhc3MgRHluYW1pY3NDb21w
cmVzc29yTm9kZTsKK2NsYXNzIEdhaW5Ob2RlOworY2xhc3MgSFRNTE1lZGlhRWxlbWVudDsKK2Ns
YXNzIE1haW5UaHJlYWRHZW5lcmljRXZlbnRRdWV1ZTsKK2NsYXNzIE1lZGlhRWxlbWVudEF1ZGlv
U291cmNlTm9kZTsKK2NsYXNzIE1lZGlhU3RyZWFtOworY2xhc3MgTWVkaWFTdHJlYW1BdWRpb0Rl
c3RpbmF0aW9uTm9kZTsKK2NsYXNzIE1lZGlhU3RyZWFtQXVkaW9Tb3VyY2VOb2RlOworY2xhc3Mg
T3NjaWxsYXRvck5vZGU7CitjbGFzcyBQZXJpb2RpY1dhdmU7CitjbGFzcyBTY3JpcHRQcm9jZXNz
b3JOb2RlOworY2xhc3MgU2VjdXJpdHlPcmlnaW47CitjbGFzcyBXYXZlU2hhcGVyTm9kZTsKK2Ns
YXNzIFdlYktpdEF1ZGlvUGFubmVyTm9kZTsKKwordGVtcGxhdGU8dHlwZW5hbWUgSURMVHlwZT4g
Y2xhc3MgRE9NUHJvbWlzZURlZmVycmVkOworCisvLyBBdWRpb0NvbnRleHQgaXMgdGhlIGNvcm5l
cnN0b25lIG9mIHRoZSB3ZWIgYXVkaW8gQVBJIGFuZCBhbGwgQXVkaW9Ob2RlcyBhcmUgY3JlYXRl
ZCBmcm9tIGl0LgorLy8gRm9yIHRocmVhZCBzYWZldHkgYmV0d2VlbiB0aGUgYXVkaW8gdGhyZWFk
IGFuZCB0aGUgbWFpbiB0aHJlYWQsIGl0IGhhcyBhIHJlbmRlcmluZyBncmFwaCBsb2NraW5nIG1l
Y2hhbmlzbS4KKworY2xhc3MgV2ViS2l0QXVkaW9Db250ZXh0CisgICAgOiBwdWJsaWMgQXVkaW9D
b250ZXh0QmFzZQorICAgICwgcHJpdmF0ZSBQbGF0Zm9ybU1lZGlhU2Vzc2lvbkNsaWVudAorICAg
ICwgcHJpdmF0ZSBWaXNpYmlsaXR5Q2hhbmdlQ2xpZW50Cit7CitwdWJsaWM6CisgICAgLy8gQ3Jl
YXRlIGFuIFdlYktpdEF1ZGlvQ29udGV4dCBmb3IgcmVuZGVyaW5nIHRvIHRoZSBhdWRpbyBoYXJk
d2FyZS4KKyAgICBzdGF0aWMgRXhjZXB0aW9uT3I8UmVmPFdlYktpdEF1ZGlvQ29udGV4dD4+IGNy
ZWF0ZShEb2N1bWVudCYpOworCisgICAgdmlydHVhbCB+V2ViS2l0QXVkaW9Db250ZXh0KCk7CisK
KyAgICBib29sIGlzSW5pdGlhbGl6ZWQoKSBjb25zdCBmaW5hbDsKKworICAgIGJvb2wgaXNPZmZs
aW5lQ29udGV4dCgpIGNvbnN0IHsgcmV0dXJuIG1faXNPZmZsaW5lQ29udGV4dDsgfQorCisgICAg
RG9jdW1lbnRJZGVudGlmaWVyIGhvc3RpbmdEb2N1bWVudElkZW50aWZpZXIoKSBjb25zdCBmaW5h
bDsKKworICAgIEF1ZGlvRGVzdGluYXRpb25Ob2RlKiBkZXN0aW5hdGlvbigpIHsgcmV0dXJuIG1f
ZGVzdGluYXRpb25Ob2RlLmdldCgpOyB9CisgICAgc2l6ZV90IGN1cnJlbnRTYW1wbGVGcmFtZSgp
IGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fZGVzdGluYXRpb25Ob2RlID8gbV9kZXN0aW5hdGlvbk5v
ZGUtPmN1cnJlbnRTYW1wbGVGcmFtZSgpIDogMDsgfQorICAgIGRvdWJsZSBjdXJyZW50VGltZSgp
IGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fZGVzdGluYXRpb25Ob2RlID8gbV9kZXN0aW5hdGlvbk5v
ZGUtPmN1cnJlbnRUaW1lKCkgOiAwLjsgfQorICAgIGZsb2F0IHNhbXBsZVJhdGUoKSBjb25zdCBm
aW5hbCB7IHJldHVybiBtX2Rlc3RpbmF0aW9uTm9kZSA/IG1fZGVzdGluYXRpb25Ob2RlLT5zYW1w
bGVSYXRlKCkgOiAwLmY7IH0KKyAgICB1bnNpZ25lZCBsb25nIGFjdGl2ZVNvdXJjZUNvdW50KCkg
Y29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8dW5zaWduZWQgbG9uZz4obV9hY3RpdmVTb3VyY2VD
b3VudCk7IH0KKworICAgIHZvaWQgaW5jcmVtZW50QWN0aXZlU291cmNlQ291bnQoKSBmaW5hbDsK
KyAgICB2b2lkIGRlY3JlbWVudEFjdGl2ZVNvdXJjZUNvdW50KCkgZmluYWw7CisKKyAgICBFeGNl
cHRpb25PcjxSZWY8QXVkaW9CdWZmZXI+PiBjcmVhdGVCdWZmZXIodW5zaWduZWQgbnVtYmVyT2ZD
aGFubmVscywgc2l6ZV90IG51bWJlck9mRnJhbWVzLCBmbG9hdCBzYW1wbGVSYXRlKTsKKyAgICBF
eGNlcHRpb25PcjxSZWY8QXVkaW9CdWZmZXI+PiBjcmVhdGVCdWZmZXIoQXJyYXlCdWZmZXImLCBi
b29sIG1peFRvTW9ubyk7CisKKyAgICAvLyBBc3luY2hyb25vdXMgYXVkaW8gZmlsZSBkYXRhIGRl
Y29kaW5nLgorICAgIHZvaWQgZGVjb2RlQXVkaW9EYXRhKFJlZjxBcnJheUJ1ZmZlcj4mJiwgUmVm
UHRyPEF1ZGlvQnVmZmVyQ2FsbGJhY2s+JiYsIFJlZlB0cjxBdWRpb0J1ZmZlckNhbGxiYWNrPiYm
KTsKKworICAgIEF1ZGlvTGlzdGVuZXIqIGxpc3RlbmVyKCkgeyByZXR1cm4gbV9saXN0ZW5lci5n
ZXQoKTsgfQorCisgICAgdm9pZCBzdXNwZW5kUmVuZGVyaW5nKERPTVByb21pc2VEZWZlcnJlZDx2
b2lkPiYmKTsKKyAgICB2b2lkIHJlc3VtZVJlbmRlcmluZyhET01Qcm9taXNlRGVmZXJyZWQ8dm9p
ZD4mJik7CisgICAgdm9pZCBjbG9zZShET01Qcm9taXNlRGVmZXJyZWQ8dm9pZD4mJik7CisKKyAg
ICB1c2luZyBTdGF0ZSA9IEF1ZGlvQ29udGV4dFN0YXRlOworICAgIFN0YXRlIHN0YXRlKCkgY29u
c3Q7CisgICAgYm9vbCBpc0Nsb3NlZCgpIGNvbnN0IHsgcmV0dXJuIG1fc3RhdGUgPT0gU3RhdGU6
OkNsb3NlZDsgfQorCisgICAgYm9vbCB3b3VsZFRhaW50T3JpZ2luKGNvbnN0IFVSTCYpIGNvbnN0
OworCisgICAgLy8gVGhlIEF1ZGlvTm9kZSBjcmVhdGUgbWV0aG9kcyBhcmUgY2FsbGVkIG9uIHRo
ZSBtYWluIHRocmVhZCAoZnJvbSBKYXZhU2NyaXB0KS4KKyAgICBFeGNlcHRpb25PcjxSZWY8QXVk
aW9CdWZmZXJTb3VyY2VOb2RlPj4gY3JlYXRlQnVmZmVyU291cmNlKCk7CisjaWYgRU5BQkxFKFZJ
REVPKQorICAgIEV4Y2VwdGlvbk9yPFJlZjxNZWRpYUVsZW1lbnRBdWRpb1NvdXJjZU5vZGU+PiBj
cmVhdGVNZWRpYUVsZW1lbnRTb3VyY2UoSFRNTE1lZGlhRWxlbWVudCYpOworI2VuZGlmCisjaWYg
RU5BQkxFKE1FRElBX1NUUkVBTSkKKyAgICBFeGNlcHRpb25PcjxSZWY8TWVkaWFTdHJlYW1BdWRp
b1NvdXJjZU5vZGU+PiBjcmVhdGVNZWRpYVN0cmVhbVNvdXJjZShNZWRpYVN0cmVhbSYpOworICAg
IEV4Y2VwdGlvbk9yPFJlZjxNZWRpYVN0cmVhbUF1ZGlvRGVzdGluYXRpb25Ob2RlPj4gY3JlYXRl
TWVkaWFTdHJlYW1EZXN0aW5hdGlvbigpOworI2VuZGlmCisgICAgRXhjZXB0aW9uT3I8UmVmPEdh
aW5Ob2RlPj4gY3JlYXRlR2FpbigpOworICAgIEV4Y2VwdGlvbk9yPFJlZjxCaXF1YWRGaWx0ZXJO
b2RlPj4gY3JlYXRlQmlxdWFkRmlsdGVyKCk7CisgICAgRXhjZXB0aW9uT3I8UmVmPFdhdmVTaGFw
ZXJOb2RlPj4gY3JlYXRlV2F2ZVNoYXBlcigpOworICAgIEV4Y2VwdGlvbk9yPFJlZjxEZWxheU5v
ZGU+PiBjcmVhdGVEZWxheShkb3VibGUgbWF4RGVsYXlUaW1lKTsKKyAgICBFeGNlcHRpb25PcjxS
ZWY8V2ViS2l0QXVkaW9QYW5uZXJOb2RlPj4gY3JlYXRlUGFubmVyKCk7CisgICAgRXhjZXB0aW9u
T3I8UmVmPENvbnZvbHZlck5vZGU+PiBjcmVhdGVDb252b2x2ZXIoKTsKKyAgICBFeGNlcHRpb25P
cjxSZWY8RHluYW1pY3NDb21wcmVzc29yTm9kZT4+IGNyZWF0ZUR5bmFtaWNzQ29tcHJlc3Nvcigp
OworICAgIEV4Y2VwdGlvbk9yPFJlZjxBbmFseXNlck5vZGU+PiBjcmVhdGVBbmFseXNlcigpOwor
ICAgIEV4Y2VwdGlvbk9yPFJlZjxTY3JpcHRQcm9jZXNzb3JOb2RlPj4gY3JlYXRlU2NyaXB0UHJv
Y2Vzc29yKHNpemVfdCBidWZmZXJTaXplLCBzaXplX3QgbnVtYmVyT2ZJbnB1dENoYW5uZWxzLCBz
aXplX3QgbnVtYmVyT2ZPdXRwdXRDaGFubmVscyk7CisgICAgRXhjZXB0aW9uT3I8UmVmPENoYW5u
ZWxTcGxpdHRlck5vZGU+PiBjcmVhdGVDaGFubmVsU3BsaXR0ZXIoc2l6ZV90IG51bWJlck9mT3V0
cHV0cyk7CisgICAgRXhjZXB0aW9uT3I8UmVmPENoYW5uZWxNZXJnZXJOb2RlPj4gY3JlYXRlQ2hh
bm5lbE1lcmdlcihzaXplX3QgbnVtYmVyT2ZJbnB1dHMpOworICAgIEV4Y2VwdGlvbk9yPFJlZjxP
c2NpbGxhdG9yTm9kZT4+IGNyZWF0ZU9zY2lsbGF0b3IoKTsKKyAgICBFeGNlcHRpb25PcjxSZWY8
UGVyaW9kaWNXYXZlPj4gY3JlYXRlUGVyaW9kaWNXYXZlKEZsb2F0MzJBcnJheSYgcmVhbCwgRmxv
YXQzMkFycmF5JiBpbWFnaW5hcnkpOworCisgICAgLy8gV2hlbiBhIHNvdXJjZSBub2RlIGhhcyBu
byBtb3JlIHByb2Nlc3NpbmcgdG8gZG8gKGhhcyBmaW5pc2hlZCBwbGF5aW5nKSwgdGhlbiBpdCB0
ZWxscyB0aGUgY29udGV4dCB0byBkZXJlZmVyZW5jZSBpdC4KKyAgICB2b2lkIG5vdGlmeU5vZGVG
aW5pc2hlZFByb2Nlc3NpbmcoQXVkaW9Ob2RlKikgZmluYWw7CisKKyAgICAvLyBDYWxsZWQgYXQg
dGhlIHN0YXJ0IG9mIGVhY2ggcmVuZGVyIHF1YW50dW0uCisgICAgdm9pZCBoYW5kbGVQcmVSZW5k
ZXJUYXNrcygpIGZpbmFsOworCisgICAgLy8gQ2FsbGVkIGF0IHRoZSBlbmQgb2YgZWFjaCByZW5k
ZXIgcXVhbnR1bS4KKyAgICB2b2lkIGhhbmRsZVBvc3RSZW5kZXJUYXNrcygpIGZpbmFsOworCisg
ICAgLy8gQ2FsbGVkIHBlcmlvZGljYWxseSBhdCB0aGUgZW5kIG9mIGVhY2ggcmVuZGVyIHF1YW50
dW0gdG8gZGVyZWZlcmVuY2UgZmluaXNoZWQgc291cmNlIG5vZGVzLgorICAgIHZvaWQgZGVyZWZG
aW5pc2hlZFNvdXJjZU5vZGVzKCk7CisKKyAgICAvLyBXZSBzY2hlZHVsZSBkZWxldGlvbiBvZiBh
bGwgbWFya2VkIG5vZGVzIGF0IHRoZSBlbmQgb2YgZWFjaCByZWFsdGltZSByZW5kZXIgcXVhbnR1
bS4KKyAgICB2b2lkIG1hcmtGb3JEZWxldGlvbihBdWRpb05vZGUmKSBmaW5hbDsKKyAgICB2b2lk
IGRlbGV0ZU1hcmtlZE5vZGVzKCkgZmluYWw7CisKKyAgICAvLyBBdWRpb0NvbnRleHQgY2FuIHB1
bGwgbm9kZShzKSBhdCB0aGUgZW5kIG9mIGVhY2ggcmVuZGVyIHF1YW50dW0gZXZlbiB3aGVuIHRo
ZXkgYXJlIG5vdCBjb25uZWN0ZWQgdG8gYW55IGRvd25zdHJlYW0gbm9kZXMuCisgICAgLy8gVGhl
c2UgdHdvIG1ldGhvZHMgYXJlIGNhbGxlZCBieSB0aGUgbm9kZXMgd2hvIHdhbnQgdG8gYWRkL3Jl
bW92ZSB0aGVtc2VsdmVzIGludG8vZnJvbSB0aGUgYXV0b21hdGljIHB1bGwgbGlzdHMuCisgICAg
dm9pZCBhZGRBdXRvbWF0aWNQdWxsTm9kZShBdWRpb05vZGUmKSBmaW5hbDsKKyAgICB2b2lkIHJl
bW92ZUF1dG9tYXRpY1B1bGxOb2RlKEF1ZGlvTm9kZSYpIGZpbmFsOworCisgICAgLy8gQ2FsbGVk
IHJpZ2h0IGJlZm9yZSBoYW5kbGVQb3N0UmVuZGVyVGFza3MoKSB0byBoYW5kbGUgbm9kZXMgd2hp
Y2ggbmVlZCB0byBiZSBwdWxsZWQgZXZlbiB3aGVuIHRoZXkgYXJlIG5vdCBjb25uZWN0ZWQgdG8g
YW55dGhpbmcuCisgICAgdm9pZCBwcm9jZXNzQXV0b21hdGljUHVsbE5vZGVzKHNpemVfdCBmcmFt
ZXNUb1Byb2Nlc3MpIGZpbmFsOworCisgICAgLy8gS2VlcHMgdHJhY2sgb2YgdGhlIG51bWJlciBv
ZiBjb25uZWN0aW9ucyBtYWRlLgorICAgIHZvaWQgaW5jcmVtZW50Q29ubmVjdGlvbkNvdW50KCkg
ZmluYWwKKyAgICB7CisgICAgICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisgICAgICAgIG1f
Y29ubmVjdGlvbkNvdW50Kys7CisgICAgfQorCisgICAgdW5zaWduZWQgY29ubmVjdGlvbkNvdW50
KCkgY29uc3QgeyByZXR1cm4gbV9jb25uZWN0aW9uQ291bnQ7IH0KKworICAgIC8vCisgICAgLy8g
VGhyZWFkIFNhZmV0eSBhbmQgR3JhcGggTG9ja2luZzoKKyAgICAvLworCisgICAgdm9pZCBzZXRB
dWRpb1RocmVhZChUaHJlYWQmIHRocmVhZCkgZmluYWwgeyBtX2F1ZGlvVGhyZWFkID0gJnRocmVh
ZDsgfSAvLyBGSVhNRTogY2hlY2sgZWl0aGVyIG5vdCBpbml0aWFsaXplZCBvciB0aGUgc2FtZQor
ICAgIFRocmVhZCogYXVkaW9UaHJlYWQoKSBjb25zdCB7IHJldHVybiBtX2F1ZGlvVGhyZWFkOyB9
CisgICAgYm9vbCBpc0F1ZGlvVGhyZWFkKCkgY29uc3QgZmluYWw7CisKKyAgICAvLyBSZXR1cm5z
IHRydWUgb25seSBhZnRlciB0aGUgYXVkaW8gdGhyZWFkIGhhcyBiZWVuIHN0YXJ0ZWQgYW5kIHRo
ZW4gc2h1dGRvd24uCisgICAgYm9vbCBpc0F1ZGlvVGhyZWFkRmluaXNoZWQoKSBmaW5hbCB7IHJl
dHVybiBtX2lzQXVkaW9UaHJlYWRGaW5pc2hlZDsgfQorCisgICAgLy8gbXVzdFJlbGVhc2VMb2Nr
IGlzIHNldCB0byB0cnVlIGlmIHdlIGFjcXVpcmVkIHRoZSBsb2NrIGluIHRoaXMgbWV0aG9kIGNh
bGwgYW5kIGNhbGxlciBtdXN0IHVubG9jaygpLCBmYWxzZSBpZiBpdCB3YXMgcHJldmlvdXNseSBh
Y3F1aXJlZC4KKyAgICB2b2lkIGxvY2soYm9vbCYgbXVzdFJlbGVhc2VMb2NrKSBmaW5hbDsKKwor
ICAgIC8vIFJldHVybnMgdHJ1ZSBpZiB3ZSBvd24gdGhlIGxvY2suCisgICAgLy8gbXVzdFJlbGVh
c2VMb2NrIGlzIHNldCB0byB0cnVlIGlmIHdlIGFjcXVpcmVkIHRoZSBsb2NrIGluIHRoaXMgbWV0
aG9kIGNhbGwgYW5kIGNhbGxlciBtdXN0IHVubG9jaygpLCBmYWxzZSBpZiBpdCB3YXMgcHJldmlv
dXNseSBhY3F1aXJlZC4KKyAgICBib29sIHRyeUxvY2soYm9vbCYgbXVzdFJlbGVhc2VMb2NrKSBm
aW5hbDsKKworICAgIHZvaWQgdW5sb2NrKCkgZmluYWw7CisKKyAgICAvLyBSZXR1cm5zIHRydWUg
aWYgdGhpcyB0aHJlYWQgb3ducyB0aGUgY29udGV4dCdzIGxvY2suCisgICAgYm9vbCBpc0dyYXBo
T3duZXIoKSBjb25zdCBmaW5hbDsKKworICAgIC8vIFJldHVybnMgdGhlIG1heGltdW0gbnVtYmVy
IG9mIGNoYW5uZWxzIHdlIGNhbiBzdXBwb3J0LgorICAgIHN0YXRpYyB1bnNpZ25lZCBtYXhOdW1i
ZXJPZkNoYW5uZWxzKCkgeyByZXR1cm4gTWF4TnVtYmVyT2ZDaGFubmVsczsgfQorCisgICAgLy8g
SW4gQXVkaW9Ob2RlOjpkZXJlZigpIGEgdHJ5TG9jaygpIGlzIHVzZWQgZm9yIGNhbGxpbmcgZmlu
aXNoRGVyZWYoKSwgYnV0IGlmIGl0IGZhaWxzIGtlZXAgdHJhY2sgaGVyZS4KKyAgICB2b2lkIGFk
ZERlZmVycmVkRmluaXNoRGVyZWYoQXVkaW9Ob2RlKikgZmluYWw7CisKKyAgICAvLyBJbiB0aGUg
YXVkaW8gdGhyZWFkIGF0IHRoZSBzdGFydCBvZiBlYWNoIHJlbmRlciBjeWNsZSwgd2UnbGwgY2Fs
bCBoYW5kbGVEZWZlcnJlZEZpbmlzaERlcmVmcygpLgorICAgIHZvaWQgaGFuZGxlRGVmZXJyZWRG
aW5pc2hEZXJlZnMoKTsKKworICAgIC8vIE9ubHkgYWNjZXNzZWQgd2hlbiB0aGUgZ3JhcGggbG9j
ayBpcyBoZWxkLgorICAgIHZvaWQgbWFya1N1bW1pbmdKdW5jdGlvbkRpcnR5KEF1ZGlvU3VtbWlu
Z0p1bmN0aW9uKikgZmluYWw7CisgICAgdm9pZCBtYXJrQXVkaW9Ob2RlT3V0cHV0RGlydHkoQXVk
aW9Ob2RlT3V0cHV0KikgZmluYWw7CisKKyAgICAvLyBNdXN0IGJlIGNhbGxlZCBvbiBtYWluIHRo
cmVhZC4KKyAgICB2b2lkIHJlbW92ZU1hcmtlZFN1bW1pbmdKdW5jdGlvbihBdWRpb1N1bW1pbmdK
dW5jdGlvbiopIGZpbmFsOworCisgICAgLy8gRXZlbnRUYXJnZXQKKyAgICBFdmVudFRhcmdldElu
dGVyZmFjZSBldmVudFRhcmdldEludGVyZmFjZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIFdlYktp
dEF1ZGlvQ29udGV4dEV2ZW50VGFyZ2V0SW50ZXJmYWNlVHlwZTsgfQorCisgICAgLy8gUmVjb25j
aWxlIHJlZi9kZXJlZiB3aGljaCBhcmUgZGVmaW5lZCBib3RoIGluIFRocmVhZFNhZmVSZWZDb3Vu
dGVkIGFuZCBFdmVudFRhcmdldC4KKyAgICB1c2luZyBUaHJlYWRTYWZlUmVmQ291bnRlZDo6cmVm
OworICAgIHVzaW5nIFRocmVhZFNhZmVSZWZDb3VudGVkOjpkZXJlZjsKKworICAgIHZvaWQgc3Rh
cnRSZW5kZXJpbmcoKTsKKyAgICB2b2lkIGZpbmlzaGVkUmVuZGVyaW5nKGJvb2wgZGlkUmVuZGVy
aW5nKSBmaW5hbDsKKworICAgIHN0YXRpYyB1bnNpZ25lZCBzX2hhcmR3YXJlQ29udGV4dENvdW50
OworCisgICAgLy8gUmVzdHJpY3Rpb25zIHRvIGNoYW5nZSBkZWZhdWx0IGJlaGF2aW9ycy4KKyAg
ICBlbnVtIEJlaGF2aW9yUmVzdHJpY3Rpb25GbGFncyB7CisgICAgICAgIE5vUmVzdHJpY3Rpb25z
ID0gMCwKKyAgICAgICAgUmVxdWlyZVVzZXJHZXN0dXJlRm9yQXVkaW9TdGFydFJlc3RyaWN0aW9u
ID0gMSA8PCAwLAorICAgICAgICBSZXF1aXJlUGFnZUNvbnNlbnRGb3JBdWRpb1N0YXJ0UmVzdHJp
Y3Rpb24gPSAxIDw8IDEsCisgICAgfTsKKyAgICB0eXBlZGVmIHVuc2lnbmVkIEJlaGF2aW9yUmVz
dHJpY3Rpb25zOworCisgICAgQmVoYXZpb3JSZXN0cmljdGlvbnMgYmVoYXZpb3JSZXN0cmljdGlv
bnMoKSBjb25zdCB7IHJldHVybiBtX3Jlc3RyaWN0aW9uczsgfQorICAgIHZvaWQgYWRkQmVoYXZp
b3JSZXN0cmljdGlvbihCZWhhdmlvclJlc3RyaWN0aW9ucyByZXN0cmljdGlvbikgeyBtX3Jlc3Ry
aWN0aW9ucyB8PSByZXN0cmljdGlvbjsgfQorICAgIHZvaWQgcmVtb3ZlQmVoYXZpb3JSZXN0cmlj
dGlvbihCZWhhdmlvclJlc3RyaWN0aW9ucyByZXN0cmljdGlvbikgeyBtX3Jlc3RyaWN0aW9ucyAm
PSB+cmVzdHJpY3Rpb247IH0KKworICAgIHZvaWQgaXNQbGF5aW5nQXVkaW9EaWRDaGFuZ2UoKSBm
aW5hbDsKKworICAgIHZvaWQgbm9kZVdpbGxCZWdpblBsYXliYWNrKCkgZmluYWw7CisKKyNpZiAh
UkVMRUFTRV9MT0dfRElTQUJMRUQKKyAgICBjb25zdCBMb2dnZXImIGxvZ2dlcigpIGNvbnN0IGZp
bmFsIHsgcmV0dXJuIG1fbG9nZ2VyLmdldCgpOyB9CisgICAgY29uc3Qgdm9pZCogbG9nSWRlbnRp
ZmllcigpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fbG9nSWRlbnRpZmllcjsgfQorICAgIFdURkxv
Z0NoYW5uZWwmIGxvZ0NoYW5uZWwoKSBjb25zdCBmaW5hbDsKKyAgICBjb25zdCB2b2lkKiBuZXh0
QXVkaW9Ob2RlTG9nSWRlbnRpZmllcigpIGZpbmFsIHsgcmV0dXJuIGNoaWxkTG9nSWRlbnRpZmll
cihtX2xvZ0lkZW50aWZpZXIsICsrbV9uZXh0QXVkaW9Ob2RlSWRlbnRpZmllcik7IH0KKyAgICBj
b25zdCB2b2lkKiBuZXh0QXVkaW9QYXJhbWV0ZXJMb2dJZGVudGlmaWVyKCkgZmluYWwgeyByZXR1
cm4gY2hpbGRMb2dJZGVudGlmaWVyKG1fbG9nSWRlbnRpZmllciwgKyttX25leHRBdWRpb1BhcmFt
ZXRlcklkZW50aWZpZXIpOyB9CisjZW5kaWYKKworICAgIHZvaWQgcG9zdFRhc2soV1RGOjpGdW5j
dGlvbjx2b2lkKCk+JiYpIGZpbmFsOworICAgIGJvb2wgaXNTdG9wcGVkKCkgY29uc3QgZmluYWwg
eyByZXR1cm4gbV9pc1N0b3BTY2hlZHVsZWQ7IH0KKyAgICBjb25zdCBTZWN1cml0eU9yaWdpbiog
b3JpZ2luKCkgY29uc3QgZmluYWw7CisgICAgdm9pZCBhZGRDb25zb2xlTWVzc2FnZShNZXNzYWdl
U291cmNlLCBNZXNzYWdlTGV2ZWwsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSkgZmluYWw7CisKK3By
b3RlY3RlZDoKKyAgICBleHBsaWNpdCBXZWJLaXRBdWRpb0NvbnRleHQoRG9jdW1lbnQmKTsKKyAg
ICBXZWJLaXRBdWRpb0NvbnRleHQoRG9jdW1lbnQmLCBBdWRpb0J1ZmZlciogcmVuZGVyVGFyZ2V0
KTsKKworICAgIHN0YXRpYyBib29sIGlzU2FtcGxlUmF0ZVJhbmdlR29vZChmbG9hdCBzYW1wbGVS
YXRlKTsKKyAgICB2b2lkIGNsZWFyUGVuZGluZ0FjdGl2aXR5KCk7CisgICAgdm9pZCBtYWtlUGVu
ZGluZ0FjdGl2aXR5KCk7CisKK3ByaXZhdGU6CisgICAgdm9pZCBjb25zdHJ1Y3RDb21tb24oKTsK
KworICAgIHZvaWQgbGF6eUluaXRpYWxpemUoKTsKKyAgICB2b2lkIHVuaW5pdGlhbGl6ZSgpOwor
CisgICAgYm9vbCB3aWxsQmVnaW5QbGF5YmFjaygpOworICAgIGJvb2wgd2lsbFBhdXNlUGxheWJh
Y2soKTsKKworICAgIGJvb2wgdXNlckdlc3R1cmVSZXF1aXJlZEZvckF1ZGlvU3RhcnQoKSBjb25z
dCB7IHJldHVybiAhaXNPZmZsaW5lQ29udGV4dCgpICYmIG1fcmVzdHJpY3Rpb25zICYgUmVxdWly
ZVVzZXJHZXN0dXJlRm9yQXVkaW9TdGFydFJlc3RyaWN0aW9uOyB9CisgICAgYm9vbCBwYWdlQ29u
c2VudFJlcXVpcmVkRm9yQXVkaW9TdGFydCgpIGNvbnN0IHsgcmV0dXJuICFpc09mZmxpbmVDb250
ZXh0KCkgJiYgbV9yZXN0cmljdGlvbnMgJiBSZXF1aXJlUGFnZUNvbnNlbnRGb3JBdWRpb1N0YXJ0
UmVzdHJpY3Rpb247IH0KKworICAgIHZvaWQgc2V0U3RhdGUoU3RhdGUpOworCisgICAgdm9pZCBj
bGVhcigpOworCisgICAgdm9pZCBzY2hlZHVsZU5vZGVEZWxldGlvbigpOworCisgICAgdm9pZCBt
ZWRpYUNhblN0YXJ0KERvY3VtZW50Jikgb3ZlcnJpZGU7CisKKyAgICAvLyBFdmVudFRhcmdldAor
ICAgIHZvaWQgZGlzcGF0Y2hFdmVudChFdmVudCYpIGZpbmFsOworCisgICAgLy8gTWVkaWFQcm9k
dWNlcgorICAgIE1lZGlhUHJvZHVjZXI6Ok1lZGlhU3RhdGVGbGFncyBtZWRpYVN0YXRlKCkgY29u
c3Qgb3ZlcnJpZGU7CisgICAgdm9pZCBwYWdlTXV0ZWRTdGF0ZURpZENoYW5nZSgpIG92ZXJyaWRl
OworCisgICAgLy8gVGhlIGNvbnRleHQgaXRzZWxmIGtlZXBzIGEgcmVmZXJlbmNlIHRvIGFsbCBz
b3VyY2Ugbm9kZXMuICBUaGUgc291cmNlIG5vZGVzLCB0aGVuIHJlZmVyZW5jZSBhbGwgbm9kZXMg
dGhleSdyZSBjb25uZWN0ZWQgdG8uCisgICAgLy8gSW4gdHVybiwgdGhlc2Ugbm9kZXMgcmVmZXJl
bmNlIGFsbCBub2RlcyB0aGV5J3JlIGNvbm5lY3RlZCB0by4gIEFsbCBub2RlcyBhcmUgdWx0aW1h
dGVseSBjb25uZWN0ZWQgdG8gdGhlIEF1ZGlvRGVzdGluYXRpb25Ob2RlLgorICAgIC8vIFdoZW4g
dGhlIGNvbnRleHQgZGVyZWZlcmVuY2VzIGEgc291cmNlIG5vZGUsIGl0IHdpbGwgYmUgZGVhY3Rp
dmF0ZWQgZnJvbSB0aGUgcmVuZGVyaW5nIGdyYXBoIGFsb25nIHdpdGggYWxsIG90aGVyIG5vZGVz
IGl0IGlzCisgICAgLy8gdW5pcXVlbHkgY29ubmVjdGVkIHRvLiAgU2VlIHRoZSBBdWRpb05vZGU6
OnJlZigpIGFuZCBBdWRpb05vZGU6OmRlcmVmKCkgbWV0aG9kcyBmb3IgbW9yZSBkZXRhaWxzLgor
ICAgIHZvaWQgcmVmTm9kZShBdWRpb05vZGUmKTsKKyAgICB2b2lkIGRlcmVmTm9kZShBdWRpb05v
ZGUmKTsKKworICAgIC8vIEFjdGl2ZURPTU9iamVjdCBBUEkuCisgICAgdm9pZCBzdXNwZW5kKFJl
YXNvbkZvclN1c3BlbnNpb24pIGZpbmFsOworICAgIHZvaWQgcmVzdW1lKCkgZmluYWw7CisgICAg
dm9pZCBzdG9wKCkgb3ZlcnJpZGU7CisgICAgY29uc3QgY2hhciogYWN0aXZlRE9NT2JqZWN0TmFt
ZSgpIGNvbnN0IG92ZXJyaWRlOworCisgICAgLy8gV2hlbiB0aGUgY29udGV4dCBnb2VzIGF3YXks
IHRoZXJlIG1pZ2h0IHN0aWxsIGJlIHNvbWUgc291cmNlcyB3aGljaCBoYXZlbid0IGZpbmlzaGVk
IHBsYXlpbmcuCisgICAgLy8gTWFrZSBzdXJlIHRvIGRlcmVmZXJlbmNlIHRoZW0gaGVyZS4KKyAg
ICB2b2lkIGRlcmVmVW5maW5pc2hlZFNvdXJjZU5vZGVzKCk7CisKKyAgICAvLyBQbGF0Zm9ybU1l
ZGlhU2Vzc2lvbkNsaWVudAorICAgIFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpNZWRpYVR5cGUgbWVk
aWFUeXBlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gUGxhdGZvcm1NZWRpYVNlc3Npb246Ok1l
ZGlhVHlwZTo6V2ViQXVkaW87IH0KKyAgICBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6TWVkaWFUeXBl
IHByZXNlbnRhdGlvblR5cGUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBQbGF0Zm9ybU1lZGlh
U2Vzc2lvbjo6TWVkaWFUeXBlOjpXZWJBdWRpbzsgfQorICAgIHZvaWQgbWF5UmVzdW1lUGxheWJh
Y2soYm9vbCBzaG91bGRSZXN1bWUpIG92ZXJyaWRlOworICAgIHZvaWQgc3VzcGVuZFBsYXliYWNr
KCkgb3ZlcnJpZGU7CisgICAgYm9vbCBjYW5SZWNlaXZlUmVtb3RlQ29udHJvbENvbW1hbmRzKCkg
Y29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KKyAgICB2b2lkIGRpZFJlY2VpdmVSZW1v
dGVDb250cm9sQ29tbWFuZChQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6UmVtb3RlQ29udHJvbENvbW1h
bmRUeXBlLCBjb25zdCBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6UmVtb3RlQ29tbWFuZEFyZ3VtZW50
Kikgb3ZlcnJpZGUgeyB9CisgICAgYm9vbCBzdXBwb3J0c1NlZWtpbmcoKSBjb25zdCBvdmVycmlk
ZSB7IHJldHVybiBmYWxzZTsgfQorICAgIGJvb2wgc2hvdWxkT3ZlcnJpZGVCYWNrZ3JvdW5kUGxh
eWJhY2tSZXN0cmljdGlvbihQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6SW50ZXJydXB0aW9uVHlwZSkg
Y29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KKyAgICBib29sIGNhblByb2R1Y2VBdWRp
bygpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIHRydWU7IH0KKyAgICBib29sIGlzU3VzcGVuZGVkKCkg
Y29uc3QgZmluYWw7CisKKyAgICB2b2lkIHZpc2liaWxpdHlTdGF0ZUNoYW5nZWQoKSBmaW5hbDsK
KworICAgIGJvb2wgaXNBdWRpb0NvbnRleHQoKSBjb25zdCBmaW5hbCB7IHJldHVybiBmYWxzZTsg
fQorICAgIGJvb2wgaXNXZWJLaXRBdWRpb0NvbnRleHQoKSBjb25zdCBmaW5hbCB7IHJldHVybiB0
cnVlOyB9CisKKyAgICAvLyBFdmVudFRhcmdldAorICAgIHZvaWQgcmVmRXZlbnRUYXJnZXQoKSBv
dmVycmlkZSB7IHJlZigpOyB9CisgICAgdm9pZCBkZXJlZkV2ZW50VGFyZ2V0KCkgb3ZlcnJpZGUg
eyBkZXJlZigpOyB9CisKKyAgICB2b2lkIGhhbmRsZURpcnR5QXVkaW9TdW1taW5nSnVuY3Rpb25z
KCk7CisgICAgdm9pZCBoYW5kbGVEaXJ0eUF1ZGlvTm9kZU91dHB1dHMoKTsKKworICAgIHZvaWQg
YWRkUmVhY3Rpb24oU3RhdGUsIERPTVByb21pc2VEZWZlcnJlZDx2b2lkPiYmKTsKKyAgICB2b2lk
IHVwZGF0ZUF1dG9tYXRpY1B1bGxOb2RlcygpOworCisjaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVE
CisgICAgY29uc3QgY2hhciogbG9nQ2xhc3NOYW1lKCkgY29uc3QgZmluYWwgeyByZXR1cm4gIldl
YktpdEF1ZGlvQ29udGV4dCI7IH0KKworICAgIFJlZjxMb2dnZXI+IG1fbG9nZ2VyOworICAgIGNv
bnN0IHZvaWQqIG1fbG9nSWRlbnRpZmllcjsKKyAgICB1aW50NjRfdCBtX25leHRBdWRpb05vZGVJ
ZGVudGlmaWVyIHsgMCB9OworICAgIHVpbnQ2NF90IG1fbmV4dEF1ZGlvUGFyYW1ldGVySWRlbnRp
ZmllciB7IDAgfTsKKyNlbmRpZgorCisgICAgLy8gT25seSBhY2Nlc3NlZCBpbiB0aGUgYXVkaW8g
dGhyZWFkLgorICAgIFZlY3RvcjxBdWRpb05vZGUqPiBtX2ZpbmlzaGVkTm9kZXM7CisKKyAgICAv
LyBXZSBkb24ndCB1c2UgUmVmUHRyPEF1ZGlvTm9kZT4gaGVyZSBiZWNhdXNlIEF1ZGlvTm9kZSBo
YXMgYSBtb3JlIGNvbXBsZXggcmVmKCkgLyBkZXJlZigpIGltcGxlbWVudGF0aW9uCisgICAgLy8g
d2l0aCBhbiBvcHRpb25hbCBhcmd1bWVudCBmb3IgcmVmVHlwZS4gIFdlIG5lZWQgdG8gdXNlIHRo
ZSBzcGVjaWFsIHJlZlR5cGU6IFJlZlR5cGVDb25uZWN0aW9uCisgICAgLy8gRWl0aGVyIGFjY2Vz
c2VkIHdoZW4gdGhlIGdyYXBoIGxvY2sgaXMgaGVsZCwgb3Igb24gdGhlIG1haW4gdGhyZWFkIHdo
ZW4gdGhlIGF1ZGlvIHRocmVhZCBoYXMgZmluaXNoZWQuCisgICAgVmVjdG9yPEF1ZGlvTm9kZSo+
IG1fcmVmZXJlbmNlZE5vZGVzOworCisgICAgLy8gQWNjdW11bGF0ZSBub2RlcyB3aGljaCBuZWVk
IHRvIGJlIGRlbGV0ZWQgaGVyZS4KKyAgICAvLyBUaGlzIGlzIGNvcGllZCB0byBtX25vZGVzVG9E
ZWxldGUgYXQgdGhlIGVuZCBvZiBhIHJlbmRlciBjeWNsZSBpbiBoYW5kbGVQb3N0UmVuZGVyVGFz
a3MoKSwgd2hlcmUgd2UncmUgYXNzdXJlZCBvZiBhIHN0YWJsZSBncmFwaAorICAgIC8vIHN0YXRl
IHdoaWNoIHdpbGwgaGF2ZSBubyByZWZlcmVuY2VzIHRvIGFueSBvZiB0aGUgbm9kZXMgaW4gbV9u
b2Rlc1RvRGVsZXRlIG9uY2UgdGhlIGNvbnRleHQgbG9jayBpcyByZWxlYXNlZAorICAgIC8vICh3
aGVuIGhhbmRsZVBvc3RSZW5kZXJUYXNrcygpIGhhcyBjb21wbGV0ZWQpLgorICAgIFZlY3RvcjxB
dWRpb05vZGUqPiBtX25vZGVzTWFya2VkRm9yRGVsZXRpb247CisKKyAgICAvLyBUaGV5IHdpbGwg
YmUgc2NoZWR1bGVkIGZvciBkZWxldGlvbiAob24gdGhlIG1haW4gdGhyZWFkKSBhdCB0aGUgZW5k
IG9mIGEgcmVuZGVyIGN5Y2xlIChpbiByZWFsdGltZSB0aHJlYWQpLgorICAgIFZlY3RvcjxBdWRp
b05vZGUqPiBtX25vZGVzVG9EZWxldGU7CisKKyAgICBib29sIG1faXNEZWxldGlvblNjaGVkdWxl
ZCB7IGZhbHNlIH07CisgICAgYm9vbCBtX2lzU3RvcFNjaGVkdWxlZCB7IGZhbHNlIH07CisgICAg
Ym9vbCBtX2lzSW5pdGlhbGl6ZWQgeyBmYWxzZSB9OworICAgIGJvb2wgbV9pc0F1ZGlvVGhyZWFk
RmluaXNoZWQgeyBmYWxzZSB9OworICAgIGJvb2wgbV9hdXRvbWF0aWNQdWxsTm9kZXNOZWVkVXBk
YXRpbmcgeyBmYWxzZSB9OworICAgIGJvb2wgbV9pc09mZmxpbmVDb250ZXh0IHsgZmFsc2UgfTsK
KworICAgIC8vIE9ubHkgYWNjZXNzZWQgd2hlbiB0aGUgZ3JhcGggbG9jayBpcyBoZWxkLgorICAg
IEhhc2hTZXQ8QXVkaW9TdW1taW5nSnVuY3Rpb24qPiBtX2RpcnR5U3VtbWluZ0p1bmN0aW9uczsK
KyAgICBIYXNoU2V0PEF1ZGlvTm9kZU91dHB1dCo+IG1fZGlydHlBdWRpb05vZGVPdXRwdXRzOwor
CisgICAgLy8gRm9yIHRoZSBzYWtlIG9mIHRocmVhZCBzYWZldHksIHdlIG1haW50YWluIGEgc2Vw
ZXJhdGUgVmVjdG9yIG9mIGF1dG9tYXRpYyBwdWxsIG5vZGVzIGZvciByZW5kZXJpbmcgaW4gbV9y
ZW5kZXJpbmdBdXRvbWF0aWNQdWxsTm9kZXMuCisgICAgLy8gSXQgd2lsbCBiZSBjb3BpZWQgZnJv
bSBtX2F1dG9tYXRpY1B1bGxOb2RlcyBieSB1cGRhdGVBdXRvbWF0aWNQdWxsTm9kZXMoKSBhdCB0
aGUgdmVyeSBzdGFydCBvciBlbmQgb2YgdGhlIHJlbmRlcmluZyBxdWFudHVtLgorICAgIEhhc2hT
ZXQ8QXVkaW9Ob2RlKj4gbV9hdXRvbWF0aWNQdWxsTm9kZXM7CisgICAgVmVjdG9yPEF1ZGlvTm9k
ZSo+IG1fcmVuZGVyaW5nQXV0b21hdGljUHVsbE5vZGVzOworICAgIC8vIE9ubHkgYWNjZXNzZWQg
aW4gdGhlIGF1ZGlvIHRocmVhZC4KKyAgICBWZWN0b3I8QXVkaW9Ob2RlKj4gbV9kZWZlcnJlZEZp
bmlzaERlcmVmTGlzdDsKKyAgICBWZWN0b3I8VmVjdG9yPERPTVByb21pc2VEZWZlcnJlZDx2b2lk
Pj4+IG1fc3RhdGVSZWFjdGlvbnM7CisKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8UGxhdGZvcm1NZWRp
YVNlc3Npb24+IG1fbWVkaWFTZXNzaW9uOworICAgIFVuaXF1ZVJlZjxNYWluVGhyZWFkR2VuZXJp
Y0V2ZW50UXVldWU+IG1fZXZlbnRRdWV1ZTsKKworICAgIFJlZlB0cjxBdWRpb0J1ZmZlcj4gbV9y
ZW5kZXJUYXJnZXQ7CisgICAgUmVmUHRyPEF1ZGlvRGVzdGluYXRpb25Ob2RlPiBtX2Rlc3RpbmF0
aW9uTm9kZTsKKyAgICBSZWZQdHI8QXVkaW9MaXN0ZW5lcj4gbV9saXN0ZW5lcjsKKworICAgIHVu
c2lnbmVkIG1fY29ubmVjdGlvbkNvdW50IHsgMCB9OworCisgICAgLy8gR3JhcGggbG9ja2luZy4K
KyAgICBMb2NrIG1fY29udGV4dEdyYXBoTXV0ZXg7CisgICAgLy8gRklYTUU6IFVzaW5nIHZvbGF0
aWxlIHNlZW1zIGluY29ycmVjdC4KKyAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTgwMzMyCisgICAgVGhyZWFkKiB2b2xhdGlsZSBtX2F1ZGlvVGhyZWFkIHsg
bnVsbHB0ciB9OworICAgIFRocmVhZCogdm9sYXRpbGUgbV9ncmFwaE93bmVyVGhyZWFkIHsgbnVs
bHB0ciB9OyAvLyBpZiB0aGUgbG9jayBpcyBoZWxkIHRoZW4gdGhpcyBpcyB0aGUgdGhyZWFkIHdo
aWNoIG93bnMgaXQsIG90aGVyd2lzZSA9PSBudWxscHRyLgorCisgICAgc3RkOjp1bmlxdWVfcHRy
PEFzeW5jQXVkaW9EZWNvZGVyPiBtX2F1ZGlvRGVjb2RlcjsKKworICAgIC8vIFRoaXMgaXMgY29u
c2lkZXJpbmcgMzIgaXMgbGFyZ2UgZW5vdWdoIGZvciBtdWx0aXBsZSBjaGFubmVscyBhdWRpby4K
KyAgICAvLyBJdCBpcyBzb21ld2hhdCBhcmJpdHJhcnkgYW5kIGNvdWxkIGJlIGluY3JlYXNlZCBp
ZiBuZWNlc3NhcnkuCisgICAgZW51bSB7IE1heE51bWJlck9mQ2hhbm5lbHMgPSAzMiB9OworCisg
ICAgLy8gTnVtYmVyIG9mIEF1ZGlvQnVmZmVyU291cmNlTm9kZXMgdGhhdCBhcmUgYWN0aXZlIChw
bGF5aW5nKS4KKyAgICBzdGQ6OmF0b21pYzxpbnQ+IG1fYWN0aXZlU291cmNlQ291bnQgeyAwIH07
CisKKyAgICBCZWhhdmlvclJlc3RyaWN0aW9ucyBtX3Jlc3RyaWN0aW9ucyB7IE5vUmVzdHJpY3Rp
b25zIH07CisKKyAgICBTdGF0ZSBtX3N0YXRlIHsgU3RhdGU6OlN1c3BlbmRlZCB9OworICAgIFJl
ZlB0cjxQZW5kaW5nQWN0aXZpdHk8V2ViS2l0QXVkaW9Db250ZXh0Pj4gbV9wZW5kaW5nQWN0aXZp
dHk7Cit9OworCitpbmxpbmUgQXVkaW9Db250ZXh0U3RhdGUgV2ViS2l0QXVkaW9Db250ZXh0Ojpz
dGF0ZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fc3RhdGU7Cit9CisKK30gLy8gV2ViQ29yZQor
CitTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0JFR0lOKFdlYkNvcmU6OldlYktpdEF1ZGlvQ29udGV4
dCkKKyAgICBzdGF0aWMgYm9vbCBpc1R5cGUoY29uc3QgV2ViQ29yZTo6QXVkaW9Db250ZXh0QmFz
ZSYgY29udGV4dCkgeyByZXR1cm4gY29udGV4dC5pc1dlYktpdEF1ZGlvQ29udGV4dCgpOyB9CitT
UEVDSUFMSVpFX1RZUEVfVFJBSVRTX0VORCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmF1ZGlvL1dlYktpdEF1ZGlvQ29udGV4dC5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmF1ZGlvL1dlYktpdEF1ZGlvQ29udGV4dC5pZGwKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAuLmVjYzcxZDA3NzhkCi0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9XZWJLaXRBdWRpb0NvbnRleHQuaWRsCkBAIC0w
LDAgKzEsOTQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAsIEdvb2dsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQgQU5ZCisg
KiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04KKyAqIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUworICogU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworWworICAgIEFjdGl2ZURPTU9iamVjdCwKKyAgICBDb25k
aXRpb25hbD1XRUJfQVVESU8sCisgICAgQ29uc3RydWN0b3IsCisgICAgQ29uc3RydWN0b3JDYWxs
V2l0aD1Eb2N1bWVudCwKKyAgICBDb25zdHJ1Y3Rvck1heVRocm93RXhjZXB0aW9uLAorICAgIEVu
YWJsZWRCeVNldHRpbmc9V2ViQXVkaW8sCisgICAgRXhwb3J0TWFjcm89V0VCQ09SRV9FWFBPUlQs
CisgICAgSW50ZXJmYWNlTmFtZT13ZWJraXRBdWRpb0NvbnRleHQsCitdIGludGVyZmFjZSBXZWJL
aXRBdWRpb0NvbnRleHQgOiBFdmVudFRhcmdldCB7CisgICAgLy8gQWxsIHJlbmRlcmVkIGF1ZGlv
IHVsdGltYXRlbHkgY29ubmVjdHMgdG8gZGVzdGluYXRpb24sIHdoaWNoIHJlcHJlc2VudHMgdGhl
IGF1ZGlvIGhhcmR3YXJlLgorICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBBdWRpb0Rlc3RpbmF0aW9u
Tm9kZSBkZXN0aW5hdGlvbjsKKworICAgIC8vIEFsbCBzY2hlZHVsZWQgdGltZXMgYXJlIHJlbGF0
aXZlIHRvIHRoaXMgdGltZSBpbiBzZWNvbmRzLgorICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSB1bnJl
c3RyaWN0ZWQgZG91YmxlIGN1cnJlbnRUaW1lOworCisgICAgLy8gQWxsIEF1ZGlvTm9kZXMgaW4g
dGhlIGNvbnRleHQgcnVuIGF0IHRoaXMgc2FtcGxlLXJhdGUgKHNhbXBsZS1mcmFtZXMgcGVyIHNl
Y29uZCkuCisgICAgcmVhZG9ubHkgYXR0cmlidXRlIHVucmVzdHJpY3RlZCBmbG9hdCBzYW1wbGVS
YXRlOworCisgICAgLy8gQWxsIHBhbm5pbmcgaXMgcmVsYXRpdmUgdG8gdGhpcyBsaXN0ZW5lci4K
KyAgICByZWFkb25seSBhdHRyaWJ1dGUgQXVkaW9MaXN0ZW5lciBsaXN0ZW5lcjsKKworICAgIFtJ
bXBsZW1lbnRlZEFzPXN1c3BlbmRSZW5kZXJpbmddIFByb21pc2U8dm9pZD4gc3VzcGVuZCgpOwor
ICAgIFtJbXBsZW1lbnRlZEFzPXJlc3VtZVJlbmRlcmluZ10gUHJvbWlzZTx2b2lkPiByZXN1bWUo
KTsKKyAgICBQcm9taXNlPHZvaWQ+IGNsb3NlKCk7CisKKyAgICByZWFkb25seSBhdHRyaWJ1dGUg
QXVkaW9Db250ZXh0U3RhdGUgc3RhdGU7CisgICAgYXR0cmlidXRlIEV2ZW50SGFuZGxlciBvbnN0
YXRlY2hhbmdlOworCisgICAgLy8gTnVtYmVyIG9mIEF1ZGlvQnVmZmVyU291cmNlTm9kZXMgdGhh
dCBhcmUgY3VycmVudGx5IHBsYXlpbmcuCisgICAgcmVhZG9ubHkgYXR0cmlidXRlIHVuc2lnbmVk
IGxvbmcgYWN0aXZlU291cmNlQ291bnQ7CisKKyAgICBbTWF5VGhyb3dFeGNlcHRpb25dIEF1ZGlv
QnVmZmVyIGNyZWF0ZUJ1ZmZlcih1bnNpZ25lZCBsb25nIG51bWJlck9mQ2hhbm5lbHMsIHVuc2ln
bmVkIGxvbmcgbnVtYmVyT2ZGcmFtZXMsIHVucmVzdHJpY3RlZCBmbG9hdCBzYW1wbGVSYXRlKTsK
KyAgICBbTWF5VGhyb3dFeGNlcHRpb25dIEF1ZGlvQnVmZmVyIGNyZWF0ZUJ1ZmZlcihBcnJheUJ1
ZmZlciBidWZmZXIsIGJvb2xlYW4gbWl4VG9Nb25vKTsKKworICAgIC8vIEFzeW5jaHJvbm91cyBh
dWRpbyBmaWxlIGRhdGEgZGVjb2RpbmcuCisgICAgLy8gRklYTUU6IHN1Y2Nlc3NDYWxsYmFjayBz
aG91bGQgYmUgb3B0aW9uYWwgYW5kIHRoZSBjYWxsYmFja3Mgc2hvdWxkIG5vdCBiZSBudWxsYWJs
ZS4gVGhpcyBzaG91bGQgYWxzbyByZXR1cm4gYSBQcm9taXNlLgorICAgIHZvaWQgZGVjb2RlQXVk
aW9EYXRhKEFycmF5QnVmZmVyIGF1ZGlvRGF0YSwgQXVkaW9CdWZmZXJDYWxsYmFjaz8gc3VjY2Vz
c0NhbGxiYWNrLCBvcHRpb25hbCBBdWRpb0J1ZmZlckNhbGxiYWNrPyBlcnJvckNhbGxiYWNrKTsK
KworICAgIC8vIFNvdXJjZXMKKyAgICBbTWF5VGhyb3dFeGNlcHRpb25dIEF1ZGlvQnVmZmVyU291
cmNlTm9kZSBjcmVhdGVCdWZmZXJTb3VyY2UoKTsKKworICAgIFtDb25kaXRpb25hbD1WSURFTywg
TWF5VGhyb3dFeGNlcHRpb25dIE1lZGlhRWxlbWVudEF1ZGlvU291cmNlTm9kZSBjcmVhdGVNZWRp
YUVsZW1lbnRTb3VyY2UoSFRNTE1lZGlhRWxlbWVudCBtZWRpYUVsZW1lbnQpOworCisgICAgW0Nv
bmRpdGlvbmFsPU1FRElBX1NUUkVBTSwgTWF5VGhyb3dFeGNlcHRpb25dIE1lZGlhU3RyZWFtQXVk
aW9Tb3VyY2VOb2RlIGNyZWF0ZU1lZGlhU3RyZWFtU291cmNlKE1lZGlhU3RyZWFtIG1lZGlhU3Ry
ZWFtKTsKKyAgICBbQ29uZGl0aW9uYWw9TUVESUFfU1RSRUFNLCBNYXlUaHJvd0V4Y2VwdGlvbl0g
TWVkaWFTdHJlYW1BdWRpb0Rlc3RpbmF0aW9uTm9kZSBjcmVhdGVNZWRpYVN0cmVhbURlc3RpbmF0
aW9uKCk7CisKKyAgICAvLyBQcm9jZXNzaW5nIG5vZGVzCisgICAgW01heVRocm93RXhjZXB0aW9u
XSBHYWluTm9kZSBjcmVhdGVHYWluKCk7CisgICAgW01heVRocm93RXhjZXB0aW9uXSBEZWxheU5v
ZGUgY3JlYXRlRGVsYXkob3B0aW9uYWwgdW5yZXN0cmljdGVkIGRvdWJsZSBtYXhEZWxheVRpbWUg
PSAxKTsKKyAgICBbTWF5VGhyb3dFeGNlcHRpb25dIEJpcXVhZEZpbHRlck5vZGUgY3JlYXRlQmlx
dWFkRmlsdGVyKCk7CisgICAgW01heVRocm93RXhjZXB0aW9uXSBXYXZlU2hhcGVyTm9kZSBjcmVh
dGVXYXZlU2hhcGVyKCk7CisgICAgW01heVRocm93RXhjZXB0aW9uXSBXZWJLaXRBdWRpb1Bhbm5l
ck5vZGUgY3JlYXRlUGFubmVyKCk7CisgICAgW01heVRocm93RXhjZXB0aW9uXSBDb252b2x2ZXJO
b2RlIGNyZWF0ZUNvbnZvbHZlcigpOworICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gRHluYW1pY3ND
b21wcmVzc29yTm9kZSBjcmVhdGVEeW5hbWljc0NvbXByZXNzb3IoKTsKKyAgICBbTWF5VGhyb3dF
eGNlcHRpb25dIEFuYWx5c2VyTm9kZSBjcmVhdGVBbmFseXNlcigpOworICAgIFtNYXlUaHJvd0V4
Y2VwdGlvbl0gU2NyaXB0UHJvY2Vzc29yTm9kZSBjcmVhdGVTY3JpcHRQcm9jZXNzb3Iob3B0aW9u
YWwgdW5zaWduZWQgbG9uZyBidWZmZXJTaXplID0gMCwgb3B0aW9uYWwgdW5zaWduZWQgbG9uZyBu
dW1iZXJPZklucHV0Q2hhbm5lbHMgPSAyLCBvcHRpb25hbCB1bnNpZ25lZCBsb25nIG51bWJlck9m
T3V0cHV0Q2hhbm5lbHMgPSAyKTsKKyAgICBbTWF5VGhyb3dFeGNlcHRpb25dIE9zY2lsbGF0b3JO
b2RlIGNyZWF0ZU9zY2lsbGF0b3IoKTsKKyAgICBbTWF5VGhyb3dFeGNlcHRpb25dIFBlcmlvZGlj
V2F2ZSBjcmVhdGVQZXJpb2RpY1dhdmUoRmxvYXQzMkFycmF5IHJlYWwsIEZsb2F0MzJBcnJheSBp
bWFnKTsKKworICAgIC8vIENoYW5uZWwgc3BsaXR0aW5nIGFuZCBtZXJnaW5nCisgICAgW01heVRo
cm93RXhjZXB0aW9uXSBDaGFubmVsU3BsaXR0ZXJOb2RlIGNyZWF0ZUNoYW5uZWxTcGxpdHRlcihv
cHRpb25hbCB1bnNpZ25lZCBsb25nIG51bWJlck9mT3V0cHV0cyA9IDYpOworICAgIFtNYXlUaHJv
d0V4Y2VwdGlvbl0gQ2hhbm5lbE1lcmdlck5vZGUgY3JlYXRlQ2hhbm5lbE1lcmdlcihvcHRpb25h
bCB1bnNpZ25lZCBsb25nIG51bWJlck9mSW5wdXRzID0gNik7CisKKyAgICAvLyBPZmZsaW5lIHJl
bmRlcmluZworICAgIC8vIHZvaWQgcHJlcGFyZU9mZmxpbmVCdWZmZXJSZW5kZXJpbmcodW5zaWdu
ZWQgbG9uZyBudW1iZXJPZkNoYW5uZWxzLCB1bnNpZ25lZCBsb25nIG51bWJlck9mRnJhbWVzLCB1
bnJlc3RyaWN0ZWQgZmxvYXQgc2FtcGxlUmF0ZSk7CisgICAgYXR0cmlidXRlIEV2ZW50SGFuZGxl
ciBvbmNvbXBsZXRlOworICAgIHZvaWQgc3RhcnRSZW5kZXJpbmcoKTsKK307CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1dlYktpdEF1ZGlvUGFubmVyTm9kZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1dlYktpdEF1ZGlvUGFubmVyTm9k
ZS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjI1OGY0NWU3Y2Zk
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9XZWJL
aXRBdWRpb1Bhbm5lck5vZGUuY3BwCkBAIC0wLDAgKzEsMzYzIEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDEwLCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBV
UlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
CisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04KKyAqIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUworICogU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lu
Y2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIldlYktpdEF1ZGlvUGFubmVyTm9kZS5oIgorCisj
aWYgRU5BQkxFKFdFQl9BVURJTykKKworI2luY2x1ZGUgIkF1ZGlvQnVmZmVyU291cmNlTm9kZS5o
IgorI2luY2x1ZGUgIkF1ZGlvQnVzLmgiCisjaW5jbHVkZSAiQXVkaW9Db250ZXh0LmgiCisjaW5j
bHVkZSAiQXVkaW9Ob2RlSW5wdXQuaCIKKyNpbmNsdWRlICJBdWRpb05vZGVPdXRwdXQuaCIKKyNp
bmNsdWRlICJIUlRGRGF0YWJhc2VMb2FkZXIuaCIKKyNpbmNsdWRlICJIUlRGUGFubmVyLmgiCisj
aW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgorI2luY2x1ZGUgPHd0Zi9Jc29NYWxs
b2NJbmxpbmVzLmg+CisjaW5jbHVkZSA8d3RmL01hdGhFeHRyYXMuaD4KKworbmFtZXNwYWNlIFdl
YkNvcmUgeworCitXVEZfTUFLRV9JU09fQUxMT0NBVEVEX0lNUEwoV2ViS2l0QXVkaW9QYW5uZXJO
b2RlKTsKKworc3RhdGljIHZvaWQgZml4TkFOcyhkb3VibGUgJngpCit7CisgICAgaWYgKHN0ZDo6
aXNuYW4oeCkgfHwgc3RkOjppc2luZih4KSkKKyAgICAgICAgeCA9IDAuMDsKK30KKworV2ViS2l0
QXVkaW9QYW5uZXJOb2RlOjpXZWJLaXRBdWRpb1Bhbm5lck5vZGUoV2ViS2l0QXVkaW9Db250ZXh0
JiBjb250ZXh0LCBmbG9hdCBzYW1wbGVSYXRlKQorICAgIDogUGFubmVyTm9kZUJhc2UoY29udGV4
dCwgc2FtcGxlUmF0ZSkKKyAgICAsIG1fcGFubmluZ01vZGVsKFBhbm5pbmdNb2RlbFR5cGU6OkhS
VEYpCisgICAgLCBtX2xhc3RHYWluKC0xLjApCisgICAgLCBtX2Nvbm5lY3Rpb25Db3VudCgwKQor
eworICAgIHNldE5vZGVUeXBlKE5vZGVUeXBlUGFubmVyKTsKKworICAgIC8vIExvYWQgdGhlIEhS
VEYgZGF0YWJhc2UgYXN5bmNocm9ub3VzbHkgc28gd2UgZG9uJ3QgYmxvY2sgdGhlIEphdmFzY3Jp
cHQgdGhyZWFkIHdoaWxlIGNyZWF0aW5nIHRoZSBIUlRGIGRhdGFiYXNlLgorICAgIG1faHJ0ZkRh
dGFiYXNlTG9hZGVyID0gSFJURkRhdGFiYXNlTG9hZGVyOjpjcmVhdGVBbmRMb2FkQXN5bmNocm9u
b3VzbHlJZk5lY2Vzc2FyeShjb250ZXh0LnNhbXBsZVJhdGUoKSk7CisKKyAgICBhZGRJbnB1dCht
YWtlVW5pcXVlPEF1ZGlvTm9kZUlucHV0Pih0aGlzKSk7CisgICAgYWRkT3V0cHV0KG1ha2VVbmlx
dWU8QXVkaW9Ob2RlT3V0cHV0Pih0aGlzLCAyKSk7CisKKyAgICAvLyBOb2RlLXNwZWNpZmljIGRl
ZmF1bHQgbWl4aW5nIHJ1bGVzLgorICAgIG1fY2hhbm5lbENvdW50ID0gMjsKKyAgICBtX2NoYW5u
ZWxDb3VudE1vZGUgPSBDbGFtcGVkTWF4OworICAgIG1fY2hhbm5lbEludGVycHJldGF0aW9uID0g
QXVkaW9CdXM6OlNwZWFrZXJzOworCisgICAgbV9kaXN0YW5jZUdhaW4gPSBBdWRpb1BhcmFtOjpj
cmVhdGUoY29udGV4dCwgImRpc3RhbmNlR2FpbiIsIDEuMCwgMC4wLCAxLjApOworICAgIG1fY29u
ZUdhaW4gPSBBdWRpb1BhcmFtOjpjcmVhdGUoY29udGV4dCwgImNvbmVHYWluIiwgMS4wLCAwLjAs
IDEuMCk7CisKKyAgICBtX3Bvc2l0aW9uID0gRmxvYXRQb2ludDNEKDAsIDAsIDApOworICAgIG1f
b3JpZW50YXRpb24gPSBGbG9hdFBvaW50M0QoMSwgMCwgMCk7CisgICAgbV92ZWxvY2l0eSA9IEZs
b2F0UG9pbnQzRCgwLCAwLCAwKTsKKworICAgIGluaXRpYWxpemUoKTsKK30KKworV2ViS2l0QXVk
aW9QYW5uZXJOb2RlOjp+V2ViS2l0QXVkaW9QYW5uZXJOb2RlKCkKK3sKKyAgICB1bmluaXRpYWxp
emUoKTsKK30KKwordm9pZCBXZWJLaXRBdWRpb1Bhbm5lck5vZGU6OnB1bGxJbnB1dHMoc2l6ZV90
IGZyYW1lc1RvUHJvY2VzcykKK3sKKyAgICAvLyBXZSBvdmVycmlkZSBwdWxsSW5wdXRzKCksIHNv
IHdlIGNhbiBkZXRlY3QgbmV3IEF1ZGlvU291cmNlTm9kZXMgd2hpY2ggaGF2ZSBjb25uZWN0ZWQg
dG8gdXMgd2hlbiBuZXcgY29ubmVjdGlvbnMgYXJlIG1hZGUuCisgICAgLy8gVGhlc2UgQXVkaW9T
b3VyY2VOb2RlcyBuZWVkIHRvIGJlIG1hZGUgYXdhcmUgb2Ygb3VyIGV4aXN0ZW5jZSBpbiBvcmRl
ciB0byBoYW5kbGUgZG9wcGxlciBzaGlmdCBwaXRjaCBjaGFuZ2VzLgorICAgIGlmIChtX2Nvbm5l
Y3Rpb25Db3VudCAhPSBjb250ZXh0KCkuY29ubmVjdGlvbkNvdW50KCkpIHsKKyAgICAgICAgbV9j
b25uZWN0aW9uQ291bnQgPSBjb250ZXh0KCkuY29ubmVjdGlvbkNvdW50KCk7CisKKyAgICAgICAg
Ly8gUmVjdXJzaXZlbHkgZ28gdGhyb3VnaCBhbGwgbm9kZXMgY29ubmVjdGVkIHRvIHVzLgorICAg
ICAgICBIYXNoU2V0PEF1ZGlvTm9kZSo+IHZpc2l0ZWROb2RlczsKKyAgICAgICAgbm90aWZ5QXVk
aW9Tb3VyY2VzQ29ubmVjdGVkVG9Ob2RlKHRoaXMsIHZpc2l0ZWROb2Rlcyk7CisgICAgfQorCisg
ICAgQXVkaW9Ob2RlOjpwdWxsSW5wdXRzKGZyYW1lc1RvUHJvY2Vzcyk7Cit9CisKK3ZvaWQgV2Vi
S2l0QXVkaW9QYW5uZXJOb2RlOjpwcm9jZXNzKHNpemVfdCBmcmFtZXNUb1Byb2Nlc3MpCit7Cisg
ICAgQXVkaW9CdXMqIGRlc3RpbmF0aW9uID0gb3V0cHV0KDApLT5idXMoKTsKKworICAgIGlmICgh
aXNJbml0aWFsaXplZCgpIHx8ICFpbnB1dCgwKS0+aXNDb25uZWN0ZWQoKSB8fCAhbV9wYW5uZXIu
Z2V0KCkpIHsKKyAgICAgICAgZGVzdGluYXRpb24tPnplcm8oKTsKKyAgICAgICAgcmV0dXJuOwor
ICAgIH0KKworICAgIEF1ZGlvQnVzKiBzb3VyY2UgPSBpbnB1dCgwKS0+YnVzKCk7CisgICAgaWYg
KCFzb3VyY2UpIHsKKyAgICAgICAgZGVzdGluYXRpb24tPnplcm8oKTsKKyAgICAgICAgcmV0dXJu
OworICAgIH0KKworICAgIC8vIEhSVEZEYXRhYmFzZSBzaG91bGQgYmUgbG9hZGVkIGJlZm9yZSBw
cm9jZWVkaW5nIGZvciBvZmZsaW5lIGF1ZGlvIGNvbnRleHQgd2hlbiBwYW5uaW5nTW9kZWwoKSBp
cyAiSFJURiIuCisgICAgaWYgKHBhbm5pbmdNb2RlbCgpID09IFBhbm5pbmdNb2RlbFR5cGU6OkhS
VEYgJiYgIW1faHJ0ZkRhdGFiYXNlTG9hZGVyLT5pc0xvYWRlZCgpKSB7CisgICAgICAgIGlmIChj
b250ZXh0KCkuaXNPZmZsaW5lQ29udGV4dCgpKQorICAgICAgICAgICAgbV9ocnRmRGF0YWJhc2VM
b2FkZXItPndhaXRGb3JMb2FkZXJUaHJlYWRDb21wbGV0aW9uKCk7CisgICAgICAgIGVsc2Ugewor
ICAgICAgICAgICAgZGVzdGluYXRpb24tPnplcm8oKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAg
ICAgICAgfQorICAgIH0KKworICAgIC8vIFRoZSBhdWRpbyB0aHJlYWQgY2FuJ3QgYmxvY2sgb24g
dGhpcyBsb2NrLCBzbyB3ZSB1c2Ugc3RkOjp0cnlfdG9fbG9jayBpbnN0ZWFkLgorICAgIHN0ZDo6
dW5pcXVlX2xvY2s8TG9jaz4gbG9jayhtX3Bhbm5lck11dGV4LCBzdGQ6OnRyeV90b19sb2NrKTsK
KyAgICBpZiAoIWxvY2sub3duc19sb2NrKCkpIHsKKyAgICAgICAgLy8gVG9vIGJhZCAtIFRoZSB0
cnlfbG9jaygpIGZhaWxlZC4gV2UgbXVzdCBiZSBpbiB0aGUgbWlkZGxlIG9mIGNoYW5naW5nIHRo
ZSBwYW5uZXIuCisgICAgICAgIGRlc3RpbmF0aW9uLT56ZXJvKCk7CisgICAgICAgIHJldHVybjsK
KyAgICB9CisKKyAgICAvLyBBcHBseSB0aGUgcGFubmluZyBlZmZlY3QuCisgICAgZG91YmxlIGF6
aW11dGg7CisgICAgZG91YmxlIGVsZXZhdGlvbjsKKyAgICBnZXRBemltdXRoRWxldmF0aW9uKCZh
emltdXRoLCAmZWxldmF0aW9uKTsKKyAgICBtX3Bhbm5lci0+cGFuKGF6aW11dGgsIGVsZXZhdGlv
biwgc291cmNlLCBkZXN0aW5hdGlvbiwgZnJhbWVzVG9Qcm9jZXNzKTsKKworICAgIC8vIEdldCB0
aGUgZGlzdGFuY2UgYW5kIGNvbmUgZ2Fpbi4KKyAgICBkb3VibGUgdG90YWxHYWluID0gZGlzdGFu
Y2VDb25lR2FpbigpOworCisgICAgLy8gU25hcCB0byBkZXNpcmVkIGdhaW4gYXQgdGhlIGJlZ2lu
bmluZy4KKyAgICBpZiAobV9sYXN0R2FpbiA9PSAtMS4wKQorICAgICAgICBtX2xhc3RHYWluID0g
dG90YWxHYWluOworCisgICAgLy8gQXBwbHkgZ2FpbiBpbi1wbGFjZSB3aXRoIGRlLXppcHBlcmlu
Zy4KKyAgICBkZXN0aW5hdGlvbi0+Y29weVdpdGhHYWluRnJvbSgqZGVzdGluYXRpb24sICZtX2xh
c3RHYWluLCB0b3RhbEdhaW4pOworfQorCit2b2lkIFdlYktpdEF1ZGlvUGFubmVyTm9kZTo6cmVz
ZXQoKQoreworICAgIG1fbGFzdEdhaW4gPSAtMS4wOyAvLyBmb3JjZSB0byBzbmFwIHRvIGluaXRp
YWwgZ2FpbgorICAgIGlmIChtX3Bhbm5lci5nZXQoKSkKKyAgICAgICAgbV9wYW5uZXItPnJlc2V0
KCk7Cit9CisKK3ZvaWQgV2ViS2l0QXVkaW9QYW5uZXJOb2RlOjppbml0aWFsaXplKCkKK3sKKyAg
ICBpZiAoaXNJbml0aWFsaXplZCgpKQorICAgICAgICByZXR1cm47CisKKyAgICBtX3Bhbm5lciA9
IFBhbm5lcjo6Y3JlYXRlKG1fcGFubmluZ01vZGVsLCBzYW1wbGVSYXRlKCksIG1faHJ0ZkRhdGFi
YXNlTG9hZGVyLmdldCgpKTsKKworICAgIEF1ZGlvTm9kZTo6aW5pdGlhbGl6ZSgpOworfQorCit2
b2lkIFdlYktpdEF1ZGlvUGFubmVyTm9kZTo6dW5pbml0aWFsaXplKCkKK3sKKyAgICBpZiAoIWlz
SW5pdGlhbGl6ZWQoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9wYW5uZXIgPSBudWxscHRy
OworICAgIEF1ZGlvTm9kZTo6dW5pbml0aWFsaXplKCk7Cit9CisKK0F1ZGlvTGlzdGVuZXIqIFdl
YktpdEF1ZGlvUGFubmVyTm9kZTo6bGlzdGVuZXIoKQoreworICAgIHJldHVybiBjb250ZXh0KCku
bGlzdGVuZXIoKTsKK30KKwordm9pZCBXZWJLaXRBdWRpb1Bhbm5lck5vZGU6OnNldFBhbm5pbmdN
b2RlbChQYW5uaW5nTW9kZWxUeXBlIG1vZGVsKQoreworICAgIGlmICghbV9wYW5uZXIuZ2V0KCkg
fHwgbW9kZWwgIT0gbV9wYW5uaW5nTW9kZWwpIHsKKyAgICAgICAgLy8gVGhpcyBzeW5jaHJvbml6
ZXMgd2l0aCBwcm9jZXNzKCkuCisgICAgICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sobV9wYW5u
ZXJNdXRleCk7CisKKyAgICAgICAgbV9wYW5uZXIgPSBQYW5uZXI6OmNyZWF0ZShtb2RlbCwgc2Ft
cGxlUmF0ZSgpLCBtX2hydGZEYXRhYmFzZUxvYWRlci5nZXQoKSk7CisgICAgICAgIG1fcGFubmlu
Z01vZGVsID0gbW9kZWw7CisgICAgfQorfQorCitEaXN0YW5jZU1vZGVsVHlwZSBXZWJLaXRBdWRp
b1Bhbm5lck5vZGU6OmRpc3RhbmNlTW9kZWwoKSBjb25zdAoreworICAgIHJldHVybiBjb25zdF9j
YXN0PFdlYktpdEF1ZGlvUGFubmVyTm9kZSo+KHRoaXMpLT5tX2Rpc3RhbmNlRWZmZWN0Lm1vZGVs
KCk7Cit9CisKK3ZvaWQgV2ViS2l0QXVkaW9QYW5uZXJOb2RlOjpzZXREaXN0YW5jZU1vZGVsKERp
c3RhbmNlTW9kZWxUeXBlIG1vZGVsKQoreworICAgIG1fZGlzdGFuY2VFZmZlY3Quc2V0TW9kZWwo
bW9kZWwsIHRydWUpOworfQorCit2b2lkIFdlYktpdEF1ZGlvUGFubmVyTm9kZTo6Z2V0QXppbXV0
aEVsZXZhdGlvbihkb3VibGUqIG91dEF6aW11dGgsIGRvdWJsZSogb3V0RWxldmF0aW9uKQorewor
ICAgIC8vIEZJWE1FOiB3ZSBzaG91bGQgY2FjaGUgYXppbXV0aCBhbmQgZWxldmF0aW9uIChpZiBw
b3NzaWJsZSksIHNvIHdlIG9ubHkgcmUtY2FsY3VsYXRlIGlmIGEgY2hhbmdlIGhhcyBiZWVuIG1h
ZGUuCisKKyAgICBkb3VibGUgYXppbXV0aCA9IDAuMDsKKworICAgIC8vIENhbGN1bGF0ZSB0aGUg
c291cmNlLWxpc3RlbmVyIHZlY3RvcgorICAgIEZsb2F0UG9pbnQzRCBsaXN0ZW5lclBvc2l0aW9u
ID0gbGlzdGVuZXIoKS0+cG9zaXRpb24oKTsKKyAgICBGbG9hdFBvaW50M0Qgc291cmNlTGlzdGVu
ZXIgPSBwb3NpdGlvbigpIC0gbGlzdGVuZXJQb3NpdGlvbjsKKworICAgIGlmIChzb3VyY2VMaXN0
ZW5lci5pc1plcm8oKSkgeworICAgICAgICAvLyBkZWdlbmVyYXRlIGNhc2UgaWYgc291cmNlIGFu
ZCBsaXN0ZW5lciBhcmUgYXQgdGhlIHNhbWUgcG9pbnQKKyAgICAgICAgKm91dEF6aW11dGggPSAw
LjA7CisgICAgICAgICpvdXRFbGV2YXRpb24gPSAwLjA7CisgICAgICAgIHJldHVybjsKKyAgICB9
CisKKyAgICBzb3VyY2VMaXN0ZW5lci5ub3JtYWxpemUoKTsKKworICAgIC8vIEFsaWduIGF4ZXMK
KyAgICBGbG9hdFBvaW50M0QgbGlzdGVuZXJGcm9udCA9IGxpc3RlbmVyKCktPm9yaWVudGF0aW9u
KCk7CisgICAgRmxvYXRQb2ludDNEIGxpc3RlbmVyVXAgPSBsaXN0ZW5lcigpLT51cFZlY3Rvcigp
OworICAgIEZsb2F0UG9pbnQzRCBsaXN0ZW5lclJpZ2h0ID0gbGlzdGVuZXJGcm9udC5jcm9zcyhs
aXN0ZW5lclVwKTsKKyAgICBsaXN0ZW5lclJpZ2h0Lm5vcm1hbGl6ZSgpOworCisgICAgRmxvYXRQ
b2ludDNEIGxpc3RlbmVyRnJvbnROb3JtID0gbGlzdGVuZXJGcm9udDsKKyAgICBsaXN0ZW5lckZy
b250Tm9ybS5ub3JtYWxpemUoKTsKKworICAgIEZsb2F0UG9pbnQzRCB1cCA9IGxpc3RlbmVyUmln
aHQuY3Jvc3MobGlzdGVuZXJGcm9udE5vcm0pOworCisgICAgZmxvYXQgdXBQcm9qZWN0aW9uID0g
c291cmNlTGlzdGVuZXIuZG90KHVwKTsKKworICAgIEZsb2F0UG9pbnQzRCBwcm9qZWN0ZWRTb3Vy
Y2UgPSBzb3VyY2VMaXN0ZW5lciAtIHVwUHJvamVjdGlvbiAqIHVwOworICAgIHByb2plY3RlZFNv
dXJjZS5ub3JtYWxpemUoKTsKKworICAgIGF6aW11dGggPSAxODAuMCAqIGFjb3MocHJvamVjdGVk
U291cmNlLmRvdChsaXN0ZW5lclJpZ2h0KSkgLyBwaURvdWJsZTsKKyAgICBmaXhOQU5zKGF6aW11
dGgpOyAvLyBhdm9pZCBpbGxlZ2FsIHZhbHVlcworCisgICAgLy8gU291cmNlICBpbiBmcm9udCBv
ciBiZWhpbmQgdGhlIGxpc3RlbmVyCisgICAgZG91YmxlIGZyb250QmFjayA9IHByb2plY3RlZFNv
dXJjZS5kb3QobGlzdGVuZXJGcm9udE5vcm0pOworICAgIGlmIChmcm9udEJhY2sgPCAwLjApCisg
ICAgICAgIGF6aW11dGggPSAzNjAuMCAtIGF6aW11dGg7CisKKyAgICAvLyBNYWtlIGF6aW11dGgg
cmVsYXRpdmUgdG8gImZyb250IiBhbmQgbm90ICJyaWdodCIgbGlzdGVuZXIgdmVjdG9yCisgICAg
aWYgKChhemltdXRoID49IDAuMCkgJiYgKGF6aW11dGggPD0gMjcwLjApKQorICAgICAgICBhemlt
dXRoID0gOTAuMCAtIGF6aW11dGg7CisgICAgZWxzZQorICAgICAgICBhemltdXRoID0gNDUwLjAg
LSBhemltdXRoOworCisgICAgLy8gRWxldmF0aW9uCisgICAgZG91YmxlIGVsZXZhdGlvbiA9IDkw
LjAgLSAxODAuMCAqIGFjb3Moc291cmNlTGlzdGVuZXIuZG90KHVwKSkgLyBwaURvdWJsZTsKKyAg
ICBmaXhOQU5zKGVsZXZhdGlvbik7IC8vIGF2b2lkIGlsbGVnYWwgdmFsdWVzCisKKyAgICBpZiAo
ZWxldmF0aW9uID4gOTAuMCkKKyAgICAgICAgZWxldmF0aW9uID0gMTgwLjAgLSBlbGV2YXRpb247
CisgICAgZWxzZSBpZiAoZWxldmF0aW9uIDwgLTkwLjApCisgICAgICAgIGVsZXZhdGlvbiA9IC0x
ODAuMCAtIGVsZXZhdGlvbjsKKworICAgIGlmIChvdXRBemltdXRoKQorICAgICAgICAqb3V0QXpp
bXV0aCA9IGF6aW11dGg7CisgICAgaWYgKG91dEVsZXZhdGlvbikKKyAgICAgICAgKm91dEVsZXZh
dGlvbiA9IGVsZXZhdGlvbjsKK30KKworZmxvYXQgV2ViS2l0QXVkaW9QYW5uZXJOb2RlOjpkb3Bw
bGVyUmF0ZSgpCit7CisgICAgZG91YmxlIGRvcHBsZXJTaGlmdCA9IDEuMDsKKworICAgIC8vIEZJ
WE1FOiBvcHRpbWl6ZSBmb3IgY2FzZSB3aGVuIG5laXRoZXIgc291cmNlIG5vciBsaXN0ZW5lciBo
YXMgY2hhbmdlZC4uLgorICAgIGRvdWJsZSBkb3BwbGVyRmFjdG9yID0gbGlzdGVuZXIoKS0+ZG9w
cGxlckZhY3RvcigpOworCisgICAgaWYgKGRvcHBsZXJGYWN0b3IgPiAwLjApIHsKKyAgICAgICAg
ZG91YmxlIHNwZWVkT2ZTb3VuZCA9IGxpc3RlbmVyKCktPnNwZWVkT2ZTb3VuZCgpOworCisgICAg
ICAgIGNvbnN0IEZsb2F0UG9pbnQzRCAmc291cmNlVmVsb2NpdHkgPSBtX3ZlbG9jaXR5OworICAg
ICAgICBjb25zdCBGbG9hdFBvaW50M0QgJmxpc3RlbmVyVmVsb2NpdHkgPSBsaXN0ZW5lcigpLT52
ZWxvY2l0eSgpOworCisgICAgICAgIC8vIERvbid0IGJvdGhlciBpZiBib3RoIHNvdXJjZSBhbmQg
bGlzdGVuZXIgaGF2ZSBubyB2ZWxvY2l0eQorICAgICAgICBib29sIHNvdXJjZUhhc1ZlbG9jaXR5
ID0gIXNvdXJjZVZlbG9jaXR5LmlzWmVybygpOworICAgICAgICBib29sIGxpc3RlbmVySGFzVmVs
b2NpdHkgPSAhbGlzdGVuZXJWZWxvY2l0eS5pc1plcm8oKTsKKworICAgICAgICBpZiAoc291cmNl
SGFzVmVsb2NpdHkgfHwgbGlzdGVuZXJIYXNWZWxvY2l0eSkgeworICAgICAgICAgICAgLy8gQ2Fs
Y3VsYXRlIHRoZSBzb3VyY2UgdG8gbGlzdGVuZXIgdmVjdG9yCisgICAgICAgICAgICBGbG9hdFBv
aW50M0QgbGlzdGVuZXJQb3NpdGlvbiA9IGxpc3RlbmVyKCktPnBvc2l0aW9uKCk7CisgICAgICAg
ICAgICBGbG9hdFBvaW50M0Qgc291cmNlVG9MaXN0ZW5lciA9IHBvc2l0aW9uKCkgLSBsaXN0ZW5l
clBvc2l0aW9uOworCisgICAgICAgICAgICBkb3VibGUgc291cmNlTGlzdGVuZXJNYWduaXR1ZGUg
PSBzb3VyY2VUb0xpc3RlbmVyLmxlbmd0aCgpOworCisgICAgICAgICAgICBkb3VibGUgbGlzdGVu
ZXJQcm9qZWN0aW9uID0gc291cmNlVG9MaXN0ZW5lci5kb3QobGlzdGVuZXJWZWxvY2l0eSkgLyBz
b3VyY2VMaXN0ZW5lck1hZ25pdHVkZTsKKyAgICAgICAgICAgIGRvdWJsZSBzb3VyY2VQcm9qZWN0
aW9uID0gc291cmNlVG9MaXN0ZW5lci5kb3Qoc291cmNlVmVsb2NpdHkpIC8gc291cmNlTGlzdGVu
ZXJNYWduaXR1ZGU7CisKKyAgICAgICAgICAgIGxpc3RlbmVyUHJvamVjdGlvbiA9IC1saXN0ZW5l
clByb2plY3Rpb247CisgICAgICAgICAgICBzb3VyY2VQcm9qZWN0aW9uID0gLXNvdXJjZVByb2pl
Y3Rpb247CisKKyAgICAgICAgICAgIGRvdWJsZSBzY2FsZWRTcGVlZE9mU291bmQgPSBzcGVlZE9m
U291bmQgLyBkb3BwbGVyRmFjdG9yOworICAgICAgICAgICAgbGlzdGVuZXJQcm9qZWN0aW9uID0g
c3RkOjptaW4obGlzdGVuZXJQcm9qZWN0aW9uLCBzY2FsZWRTcGVlZE9mU291bmQpOworICAgICAg
ICAgICAgc291cmNlUHJvamVjdGlvbiA9IHN0ZDo6bWluKHNvdXJjZVByb2plY3Rpb24sIHNjYWxl
ZFNwZWVkT2ZTb3VuZCk7CisKKyAgICAgICAgICAgIGRvcHBsZXJTaGlmdCA9ICgoc3BlZWRPZlNv
dW5kIC0gZG9wcGxlckZhY3RvciAqIGxpc3RlbmVyUHJvamVjdGlvbikgLyAoc3BlZWRPZlNvdW5k
IC0gZG9wcGxlckZhY3RvciAqIHNvdXJjZVByb2plY3Rpb24pKTsKKyAgICAgICAgICAgIGZpeE5B
TnMoZG9wcGxlclNoaWZ0KTsgLy8gYXZvaWQgaWxsZWdhbCB2YWx1ZXMKKworICAgICAgICAgICAg
Ly8gTGltaXQgdGhlIHBpdGNoIHNoaWZ0aW5nIHRvIDQgb2N0YXZlcyB1cCBhbmQgMyBvY3RhdmVz
IGRvd24uCisgICAgICAgICAgICBpZiAoZG9wcGxlclNoaWZ0ID4gMTYuMCkKKyAgICAgICAgICAg
ICAgICBkb3BwbGVyU2hpZnQgPSAxNi4wOworICAgICAgICAgICAgZWxzZSBpZiAoZG9wcGxlclNo
aWZ0IDwgMC4xMjUpCisgICAgICAgICAgICAgICAgZG9wcGxlclNoaWZ0ID0gMC4xMjU7CisgICAg
ICAgIH0KKyAgICB9CisKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8ZmxvYXQ+KGRvcHBsZXJTaGlm
dCk7Cit9CisKK2Zsb2F0IFdlYktpdEF1ZGlvUGFubmVyTm9kZTo6ZGlzdGFuY2VDb25lR2Fpbigp
Cit7CisgICAgRmxvYXRQb2ludDNEIGxpc3RlbmVyUG9zaXRpb24gPSBsaXN0ZW5lcigpLT5wb3Np
dGlvbigpOworICAgIEZsb2F0UG9pbnQzRCBzb3VyY2VQb3NpdGlvbiA9IHBvc2l0aW9uKCk7CisK
KyAgICBkb3VibGUgbGlzdGVuZXJEaXN0YW5jZSA9IHNvdXJjZVBvc2l0aW9uLmRpc3RhbmNlVG8o
bGlzdGVuZXJQb3NpdGlvbik7CisgICAgZG91YmxlIGRpc3RhbmNlR2FpbiA9IG1fZGlzdGFuY2VF
ZmZlY3QuZ2FpbihsaXN0ZW5lckRpc3RhbmNlKTsKKworICAgIG1fZGlzdGFuY2VHYWluLT5zZXRW
YWx1ZShzdGF0aWNfY2FzdDxmbG9hdD4oZGlzdGFuY2VHYWluKSk7CisKKyAgICAvLyBGSVhNRTog
Y291bGQgb3B0aW1pemUgYnkgY2FjaGluZyBjb25lR2FpbgorICAgIGRvdWJsZSBjb25lR2FpbiA9
IG1fY29uZUVmZmVjdC5nYWluKHNvdXJjZVBvc2l0aW9uLCBtX29yaWVudGF0aW9uLCBsaXN0ZW5l
clBvc2l0aW9uKTsKKworICAgIG1fY29uZUdhaW4tPnNldFZhbHVlKHN0YXRpY19jYXN0PGZsb2F0
Pihjb25lR2FpbikpOworCisgICAgcmV0dXJuIGZsb2F0KGRpc3RhbmNlR2FpbiAqIGNvbmVHYWlu
KTsKK30KKwordm9pZCBXZWJLaXRBdWRpb1Bhbm5lck5vZGU6Om5vdGlmeUF1ZGlvU291cmNlc0Nv
bm5lY3RlZFRvTm9kZShBdWRpb05vZGUqIG5vZGUsIEhhc2hTZXQ8QXVkaW9Ob2RlKj4mIHZpc2l0
ZWROb2RlcykKK3sKKyAgICBBU1NFUlQobm9kZSk7CisgICAgaWYgKCFub2RlKQorICAgICAgICBy
ZXR1cm47CisKKyAgICAvLyBGaXJzdCBjaGVjayBpZiB0aGlzIG5vZGUgaXMgYW4gQXVkaW9CdWZm
ZXJTb3VyY2VOb2RlLiBJZiBzbywgbGV0IGl0IGtub3cgYWJvdXQgdXMgc28gdGhhdCBkb3BwbGVy
IHNoaWZ0IHBpdGNoIGNhbiBiZSB0YWtlbiBpbnRvIGFjY291bnQuCisgICAgaWYgKG5vZGUtPm5v
ZGVUeXBlKCkgPT0gTm9kZVR5cGVBdWRpb0J1ZmZlclNvdXJjZSkgeworICAgICAgICBBdWRpb0J1
ZmZlclNvdXJjZU5vZGUqIGJ1ZmZlclNvdXJjZU5vZGUgPSByZWludGVycHJldF9jYXN0PEF1ZGlv
QnVmZmVyU291cmNlTm9kZSo+KG5vZGUpOworICAgICAgICBidWZmZXJTb3VyY2VOb2RlLT5zZXRQ
YW5uZXJOb2RlKHRoaXMpOworICAgIH0gZWxzZSB7CisgICAgICAgIC8vIEdvIHRocm91Z2ggYWxs
IGlucHV0cyB0byB0aGlzIG5vZGUuCisgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBu
b2RlLT5udW1iZXJPZklucHV0cygpOyArK2kpIHsKKyAgICAgICAgICAgIEF1ZGlvTm9kZUlucHV0
KiBpbnB1dCA9IG5vZGUtPmlucHV0KGkpOworCisgICAgICAgICAgICAvLyBGb3IgZWFjaCBpbnB1
dCwgZ28gdGhyb3VnaCBhbGwgb2YgaXRzIGNvbm5lY3Rpb25zLCBsb29raW5nIGZvciBBdWRpb0J1
ZmZlclNvdXJjZU5vZGVzLgorICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBqID0gMDsgaiA8IGlu
cHV0LT5udW1iZXJPZlJlbmRlcmluZ0Nvbm5lY3Rpb25zKCk7ICsraikgeworICAgICAgICAgICAg
ICAgIEF1ZGlvTm9kZU91dHB1dCogY29ubmVjdGVkT3V0cHV0ID0gaW5wdXQtPnJlbmRlcmluZ091
dHB1dChqKTsKKyAgICAgICAgICAgICAgICBBdWRpb05vZGUqIGNvbm5lY3RlZE5vZGUgPSBjb25u
ZWN0ZWRPdXRwdXQtPm5vZGUoKTsKKyAgICAgICAgICAgICAgICBpZiAodmlzaXRlZE5vZGVzLmNv
bnRhaW5zKGNvbm5lY3RlZE5vZGUpKQorICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKKwor
ICAgICAgICAgICAgICAgIHZpc2l0ZWROb2Rlcy5hZGQoY29ubmVjdGVkTm9kZSk7CisgICAgICAg
ICAgICAgICAgbm90aWZ5QXVkaW9Tb3VyY2VzQ29ubmVjdGVkVG9Ob2RlKGNvbm5lY3RlZE5vZGUs
IHZpc2l0ZWROb2Rlcyk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9Cit9CisKK30g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShXRUJfQVVESU8pCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1dlYktpdEF1ZGlvUGFubmVy
Tm9kZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9XZWJLaXRBdWRpb1Bhbm5l
ck5vZGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uODk3OTdjM2M0
YzUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1dl
YktpdEF1ZGlvUGFubmVyTm9kZS5oCkBAIC0wLDAgKzEsMTYwIEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDEwLCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBV
UlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
CisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04KKyAqIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUworICogU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3By
YWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoV0VCX0FVRElPKQorCisjaW5jbHVkZSAiQXVkaW9MaXN0
ZW5lci5oIgorI2luY2x1ZGUgIkF1ZGlvTm9kZS5oIgorI2luY2x1ZGUgIkF1ZGlvUGFyYW0uaCIK
KyNpbmNsdWRlICJDb25lLmgiCisjaW5jbHVkZSAiRGlzdGFuY2UuaCIKKyNpbmNsdWRlICJGbG9h
dFBvaW50M0QuaCIKKyNpbmNsdWRlICJQYW5uZXIuaCIKKyNpbmNsdWRlICJQYW5uZXJOb2RlLmgi
CisjaW5jbHVkZSAiV2ViS2l0QXVkaW9Db250ZXh0LmgiCisjaW5jbHVkZSA8bWVtb3J5PgorI2lu
Y2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CisjaW5jbHVkZSA8d3RmL0xvY2suaD4KKworbmFtZXNwYWNl
IFdlYkNvcmUgeworCitjbGFzcyBIUlRGRGF0YWJhc2VMb2FkZXI7CisKKy8vIFBhbm5lck5vZGUg
aXMgYW4gQXVkaW9Ob2RlIHdpdGggb25lIGlucHV0IGFuZCBvbmUgb3V0cHV0LgorLy8gSXQgcG9z
aXRpb25zIGEgc291bmQgaW4gM0Qgc3BhY2UsIHdpdGggdGhlIGV4YWN0IGVmZmVjdCBkZXBlbmRl
bnQgb24gdGhlIHBhbm5pbmcgbW9kZWwuCisvLyBJdCBoYXMgYSBwb3NpdGlvbiBhbmQgYW4gb3Jp
ZW50YXRpb24gaW4gM0Qgc3BhY2Ugd2hpY2ggaXMgcmVsYXRpdmUgdG8gdGhlIHBvc2l0aW9uIGFu
ZCBvcmllbnRhdGlvbiBvZiB0aGUgY29udGV4dCdzIEF1ZGlvTGlzdGVuZXIuCisvLyBBIGRpc3Rh
bmNlIGVmZmVjdCB3aWxsIGF0dGVudWF0ZSB0aGUgZ2FpbiBhcyB0aGUgcG9zaXRpb24gbW92ZXMg
YXdheSBmcm9tIHRoZSBsaXN0ZW5lci4KKy8vIEEgY29uZSBlZmZlY3Qgd2lsbCBhdHRlbnVhdGUg
dGhlIGdhaW4gYXMgdGhlIG9yaWVudGF0aW9uIG1vdmVzIGF3YXkgZnJvbSB0aGUgbGlzdGVuZXIu
CisvLyBBbGwgb2YgdGhlc2UgZWZmZWN0cyBmb2xsb3cgdGhlIE9wZW5BTCBzcGVjaWZpY2F0aW9u
IHZlcnkgY2xvc2VseS4KKworY2xhc3MgV2ViS2l0QXVkaW9QYW5uZXJOb2RlIGZpbmFsIDogcHVi
bGljIFBhbm5lck5vZGVCYXNlIHsKKyAgICBXVEZfTUFLRV9JU09fQUxMT0NBVEVEKFdlYktpdEF1
ZGlvUGFubmVyTm9kZSk7CitwdWJsaWM6CisgICAgc3RhdGljIFJlZjxXZWJLaXRBdWRpb1Bhbm5l
ck5vZGU+IGNyZWF0ZShXZWJLaXRBdWRpb0NvbnRleHQmIGNvbnRleHQsIGZsb2F0IHNhbXBsZVJh
dGUpCisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBXZWJLaXRBdWRpb1Bhbm5l
ck5vZGUoY29udGV4dCwgc2FtcGxlUmF0ZSkpOworICAgIH0KKworICAgIHZpcnR1YWwgfldlYktp
dEF1ZGlvUGFubmVyTm9kZSgpOworCisgICAgV2ViS2l0QXVkaW9Db250ZXh0JiBjb250ZXh0KCkg
eyByZXR1cm4gZG93bmNhc3Q8V2ViS2l0QXVkaW9Db250ZXh0PihBdWRpb05vZGU6OmNvbnRleHQo
KSk7IH0KKyAgICBjb25zdCBXZWJLaXRBdWRpb0NvbnRleHQmIGNvbnRleHQoKSBjb25zdCB7IHJl
dHVybiBkb3duY2FzdDxXZWJLaXRBdWRpb0NvbnRleHQ+KEF1ZGlvTm9kZTo6Y29udGV4dCgpKTsg
fQorCisgICAgLy8gQXVkaW9Ob2RlCisgICAgdm9pZCBwcm9jZXNzKHNpemVfdCBmcmFtZXNUb1By
b2Nlc3MpIG92ZXJyaWRlOworICAgIHZvaWQgcHVsbElucHV0cyhzaXplX3QgZnJhbWVzVG9Qcm9j
ZXNzKSBvdmVycmlkZTsKKyAgICB2b2lkIHJlc2V0KCkgb3ZlcnJpZGU7CisgICAgdm9pZCBpbml0
aWFsaXplKCkgb3ZlcnJpZGU7CisgICAgdm9pZCB1bmluaXRpYWxpemUoKSBvdmVycmlkZTsKKwor
ICAgIC8vIExpc3RlbmVyCisgICAgQXVkaW9MaXN0ZW5lciogbGlzdGVuZXIoKTsKKworICAgIC8v
IFBhbm5pbmcgbW9kZWwKKyAgICBQYW5uaW5nTW9kZWxUeXBlIHBhbm5pbmdNb2RlbCgpIGNvbnN0
IHsgcmV0dXJuIG1fcGFubmluZ01vZGVsOyB9CisgICAgdm9pZCBzZXRQYW5uaW5nTW9kZWwoUGFu
bmluZ01vZGVsVHlwZSk7CisKKyAgICAvLyBQb3NpdGlvbgorICAgIEZsb2F0UG9pbnQzRCBwb3Np
dGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fcG9zaXRpb247IH0KKyAgICB2b2lkIHNldFBvc2l0aW9u
KGZsb2F0IHgsIGZsb2F0IHksIGZsb2F0IHopIHsgbV9wb3NpdGlvbiA9IEZsb2F0UG9pbnQzRCh4
LCB5LCB6KTsgfQorCisgICAgLy8gT3JpZW50YXRpb24KKyAgICBGbG9hdFBvaW50M0Qgb3JpZW50
YXRpb24oKSBjb25zdCB7IHJldHVybiBtX29yaWVudGF0aW9uOyB9CisgICAgdm9pZCBzZXRPcmll
bnRhdGlvbihmbG9hdCB4LCBmbG9hdCB5LCBmbG9hdCB6KSB7IG1fb3JpZW50YXRpb24gPSBGbG9h
dFBvaW50M0QoeCwgeSwgeik7IH0KKworICAgIC8vIFZlbG9jaXR5CisgICAgRmxvYXRQb2ludDNE
IHZlbG9jaXR5KCkgY29uc3QgeyByZXR1cm4gbV92ZWxvY2l0eTsgfQorICAgIHZvaWQgc2V0VmVs
b2NpdHkoZmxvYXQgeCwgZmxvYXQgeSwgZmxvYXQgeikgeyBtX3ZlbG9jaXR5ID0gRmxvYXRQb2lu
dDNEKHgsIHksIHopOyB9CisKKyAgICAvLyBEaXN0YW5jZSBwYXJhbWV0ZXJzCisgICAgRGlzdGFu
Y2VNb2RlbFR5cGUgZGlzdGFuY2VNb2RlbCgpIGNvbnN0OworICAgIHZvaWQgc2V0RGlzdGFuY2VN
b2RlbChEaXN0YW5jZU1vZGVsVHlwZSk7CisKKyAgICBkb3VibGUgcmVmRGlzdGFuY2UoKSB7IHJl
dHVybiBtX2Rpc3RhbmNlRWZmZWN0LnJlZkRpc3RhbmNlKCk7IH0KKyAgICB2b2lkIHNldFJlZkRp
c3RhbmNlKGRvdWJsZSByZWZEaXN0YW5jZSkgeyBtX2Rpc3RhbmNlRWZmZWN0LnNldFJlZkRpc3Rh
bmNlKHJlZkRpc3RhbmNlKTsgfQorCisgICAgZG91YmxlIG1heERpc3RhbmNlKCkgeyByZXR1cm4g
bV9kaXN0YW5jZUVmZmVjdC5tYXhEaXN0YW5jZSgpOyB9CisgICAgdm9pZCBzZXRNYXhEaXN0YW5j
ZShkb3VibGUgbWF4RGlzdGFuY2UpIHsgbV9kaXN0YW5jZUVmZmVjdC5zZXRNYXhEaXN0YW5jZSht
YXhEaXN0YW5jZSk7IH0KKworICAgIGRvdWJsZSByb2xsb2ZmRmFjdG9yKCkgeyByZXR1cm4gbV9k
aXN0YW5jZUVmZmVjdC5yb2xsb2ZmRmFjdG9yKCk7IH0KKyAgICB2b2lkIHNldFJvbGxvZmZGYWN0
b3IoZG91YmxlIHJvbGxvZmZGYWN0b3IpIHsgbV9kaXN0YW5jZUVmZmVjdC5zZXRSb2xsb2ZmRmFj
dG9yKHJvbGxvZmZGYWN0b3IpOyB9CisKKyAgICAvLyBTb3VuZCBjb25lcyAtIGFuZ2xlcyBpbiBk
ZWdyZWVzCisgICAgZG91YmxlIGNvbmVJbm5lckFuZ2xlKCkgY29uc3QgeyByZXR1cm4gbV9jb25l
RWZmZWN0LmlubmVyQW5nbGUoKTsgfQorICAgIHZvaWQgc2V0Q29uZUlubmVyQW5nbGUoZG91Ymxl
IGFuZ2xlKSB7IG1fY29uZUVmZmVjdC5zZXRJbm5lckFuZ2xlKGFuZ2xlKTsgfQorCisgICAgZG91
YmxlIGNvbmVPdXRlckFuZ2xlKCkgY29uc3QgeyByZXR1cm4gbV9jb25lRWZmZWN0Lm91dGVyQW5n
bGUoKTsgfQorICAgIHZvaWQgc2V0Q29uZU91dGVyQW5nbGUoZG91YmxlIGFuZ2xlKSB7IG1fY29u
ZUVmZmVjdC5zZXRPdXRlckFuZ2xlKGFuZ2xlKTsgfQorCisgICAgZG91YmxlIGNvbmVPdXRlckdh
aW4oKSBjb25zdCB7IHJldHVybiBtX2NvbmVFZmZlY3Qub3V0ZXJHYWluKCk7IH0KKyAgICB2b2lk
IHNldENvbmVPdXRlckdhaW4oZG91YmxlIGFuZ2xlKSB7IG1fY29uZUVmZmVjdC5zZXRPdXRlckdh
aW4oYW5nbGUpOyB9CisKKyAgICB2b2lkIGdldEF6aW11dGhFbGV2YXRpb24oZG91YmxlKiBvdXRB
emltdXRoLCBkb3VibGUqIG91dEVsZXZhdGlvbik7CisgICAgZmxvYXQgZG9wcGxlclJhdGUoKSBm
aW5hbDsKKworICAgIC8vIEFjY2Vzc29ycyBmb3IgZHluYW1pY2FsbHkgY2FsY3VsYXRlZCBnYWlu
IHZhbHVlcy4KKyAgICBBdWRpb1BhcmFtKiBkaXN0YW5jZUdhaW4oKSB7IHJldHVybiBtX2Rpc3Rh
bmNlR2Fpbi5nZXQoKTsgfQorICAgIEF1ZGlvUGFyYW0qIGNvbmVHYWluKCkgeyByZXR1cm4gbV9j
b25lR2Fpbi5nZXQoKTsgfQorCisgICAgZG91YmxlIHRhaWxUaW1lKCkgY29uc3Qgb3ZlcnJpZGUg
eyByZXR1cm4gbV9wYW5uZXIgPyBtX3Bhbm5lci0+dGFpbFRpbWUoKSA6IDA7IH0KKyAgICBkb3Vi
bGUgbGF0ZW5jeVRpbWUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX3Bhbm5lciA/IG1fcGFu
bmVyLT5sYXRlbmN5VGltZSgpIDogMDsgfQorCitwcml2YXRlOgorICAgIFdlYktpdEF1ZGlvUGFu
bmVyTm9kZShXZWJLaXRBdWRpb0NvbnRleHQmLCBmbG9hdCBzYW1wbGVSYXRlKTsKKworICAgIC8v
IFJldHVybnMgdGhlIGNvbWJpbmVkIGRpc3RhbmNlIGFuZCBjb25lIGdhaW4gYXR0ZW51YXRpb24u
CisgICAgZmxvYXQgZGlzdGFuY2VDb25lR2FpbigpOworCisgICAgLy8gTm90aWZpZXMgYW55IEF1
ZGlvQnVmZmVyU291cmNlTm9kZXMgY29ubmVjdGVkIHRvIHVzIGVpdGhlciBkaXJlY3RseSBvciBp
bmRpcmVjdGx5IGFib3V0IG91ciBleGlzdGVuY2UuCisgICAgLy8gVGhpcyBpcyBpbiBvcmRlciB0
byBoYW5kbGUgdGhlIHBpdGNoIGNoYW5nZSBuZWNlc3NhcnkgZm9yIHRoZSBkb3BwbGVyIHNoaWZ0
LgorICAgIHZvaWQgbm90aWZ5QXVkaW9Tb3VyY2VzQ29ubmVjdGVkVG9Ob2RlKEF1ZGlvTm9kZSos
IEhhc2hTZXQ8QXVkaW9Ob2RlKj4mIHZpc2l0ZWROb2Rlcyk7CisKKyAgICBzdGQ6OnVuaXF1ZV9w
dHI8UGFubmVyPiBtX3Bhbm5lcjsKKyAgICBQYW5uaW5nTW9kZWxUeXBlIG1fcGFubmluZ01vZGVs
OworCisgICAgRmxvYXRQb2ludDNEIG1fcG9zaXRpb247CisgICAgRmxvYXRQb2ludDNEIG1fb3Jp
ZW50YXRpb247CisgICAgRmxvYXRQb2ludDNEIG1fdmVsb2NpdHk7CisKKyAgICAvLyBHYWluCisg
ICAgUmVmUHRyPEF1ZGlvUGFyYW0+IG1fZGlzdGFuY2VHYWluOworICAgIFJlZlB0cjxBdWRpb1Bh
cmFtPiBtX2NvbmVHYWluOworICAgIERpc3RhbmNlRWZmZWN0IG1fZGlzdGFuY2VFZmZlY3Q7Cisg
ICAgQ29uZUVmZmVjdCBtX2NvbmVFZmZlY3Q7CisgICAgZmxvYXQgbV9sYXN0R2FpbjsKKworICAg
IC8vIEhSVEYgRGF0YWJhc2UgbG9hZGVyCisgICAgUmVmUHRyPEhSVEZEYXRhYmFzZUxvYWRlcj4g
bV9ocnRmRGF0YWJhc2VMb2FkZXI7CisKKyAgICB1bnNpZ25lZCBtX2Nvbm5lY3Rpb25Db3VudDsK
KworICAgIC8vIFN5bmNocm9uaXplIHByb2Nlc3MoKSBhbmQgc2V0UGFubmluZ01vZGVsKCkgd2hp
Y2ggY2FuIGNoYW5nZSB0aGUgcGFubmVyLgorICAgIG11dGFibGUgTG9jayBtX3Bhbm5lck11dGV4
OworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vV2ViS2l0QXVkaW9QYW5uZXJOb2RlLmlkbCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vV2ViS2l0QXVkaW9QYW5uZXJOb2RlLmlk
bApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uYzRlOWI5MGI5YjMKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1dlYktpdEF1
ZGlvUGFubmVyTm9kZS5pZGwKQEAgLTAsMCArMSw2NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxMCwgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NF
IEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICog
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OCisgKiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKKyAqIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKK1sKKyAgICBD
b25kaXRpb25hbD1XRUJfQVVESU8sCisgICAgSW1wbGVtZW50ZWRBcz1QYW5uaW5nTW9kZWxUeXBl
CitdIGVudW0gUGFubmluZ01vZGVsVHlwZSB7CisgICAgImVxdWFscG93ZXIiLAorICAgICJIUlRG
IgorfTsKKworWworICAgIENvbmRpdGlvbmFsPVdFQl9BVURJTywKKyAgICBJbXBsZW1lbnRlZEFz
PURpc3RhbmNlTW9kZWxUeXBlCitdIGVudW0gRGlzdGFuY2VNb2RlbFR5cGUgeworICAgICJsaW5l
YXIiLAorICAgICJpbnZlcnNlIiwKKyAgICAiZXhwb25lbnRpYWwiCit9OworCitbCisgICAgQ29u
ZGl0aW9uYWw9V0VCX0FVRElPLAorICAgIEpTR2VuZXJhdGVUb0pTT2JqZWN0LAorICAgIEludGVy
ZmFjZU5hbWU9d2Via2l0QXVkaW9QYW5uZXJOb2RlLAorXSBpbnRlcmZhY2UgV2ViS2l0QXVkaW9Q
YW5uZXJOb2RlIDogQXVkaW9Ob2RlIHsKKyAgICAvLyBEZWZhdWx0IG1vZGVsIGZvciBzdGVyZW8g
aXMgSFJURgorICAgIGF0dHJpYnV0ZSBQYW5uaW5nTW9kZWxUeXBlIHBhbm5pbmdNb2RlbDsKKwor
ICAgIC8vIFVzZXMgYSAzRCBjYXJ0ZXNpYW4gY29vcmRpbmF0ZSBzeXN0ZW0KKyAgICB2b2lkIHNl
dFBvc2l0aW9uKHVucmVzdHJpY3RlZCBmbG9hdCB4LCB1bnJlc3RyaWN0ZWQgZmxvYXQgeSwgdW5y
ZXN0cmljdGVkIGZsb2F0IHopOworICAgIHZvaWQgc2V0T3JpZW50YXRpb24odW5yZXN0cmljdGVk
IGZsb2F0IHgsIHVucmVzdHJpY3RlZCBmbG9hdCB5LCB1bnJlc3RyaWN0ZWQgZmxvYXQgeik7Cisg
ICAgdm9pZCBzZXRWZWxvY2l0eSh1bnJlc3RyaWN0ZWQgZmxvYXQgeCwgdW5yZXN0cmljdGVkIGZs
b2F0IHksIHVucmVzdHJpY3RlZCBmbG9hdCB6KTsKKworICAgIC8vIERpc3RhbmNlIG1vZGVsCisg
ICAgYXR0cmlidXRlIERpc3RhbmNlTW9kZWxUeXBlIGRpc3RhbmNlTW9kZWw7CisKKyAgICBhdHRy
aWJ1dGUgdW5yZXN0cmljdGVkIGRvdWJsZSByZWZEaXN0YW5jZTsKKyAgICBhdHRyaWJ1dGUgdW5y
ZXN0cmljdGVkIGRvdWJsZSBtYXhEaXN0YW5jZTsKKyAgICBhdHRyaWJ1dGUgdW5yZXN0cmljdGVk
IGRvdWJsZSByb2xsb2ZmRmFjdG9yOworCisgICAgLy8gRGlyZWN0aW9uYWwgc291bmQgY29uZQor
ICAgIGF0dHJpYnV0ZSB1bnJlc3RyaWN0ZWQgZG91YmxlIGNvbmVJbm5lckFuZ2xlOworICAgIGF0
dHJpYnV0ZSB1bnJlc3RyaWN0ZWQgZG91YmxlIGNvbmVPdXRlckFuZ2xlOworICAgIGF0dHJpYnV0
ZSB1bnJlc3RyaWN0ZWQgZG91YmxlIGNvbmVPdXRlckdhaW47Cit9OwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9XZWJLaXRPZmZsaW5lQXVkaW9Db250ZXh0LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vV2ViS2l0T2ZmbGluZUF1ZGlvQ29u
dGV4dC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLmQ4ZTM5OWEx
NGEzCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9X
ZWJLaXRPZmZsaW5lQXVkaW9Db250ZXh0LmNwcApAQCAtMCwwICsxLDYyIEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDEyLCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisg
KiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04K
KyAqIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUworICogU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaWYgRU5BQkxFKFdFQl9BVURJTykKKworI2luY2x1
ZGUgIldlYktpdE9mZmxpbmVBdWRpb0NvbnRleHQuaCIKKworI2luY2x1ZGUgIkF1ZGlvQnVmZmVy
LmgiCisjaW5jbHVkZSAiRG9jdW1lbnQuaCIKKyNpbmNsdWRlIDx3dGYvSXNvTWFsbG9jSW5saW5l
cy5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1dURl9NQUtFX0lTT19BTExPQ0FURURfSU1Q
TChXZWJLaXRPZmZsaW5lQXVkaW9Db250ZXh0KTsKKworaW5saW5lIFdlYktpdE9mZmxpbmVBdWRp
b0NvbnRleHQ6OldlYktpdE9mZmxpbmVBdWRpb0NvbnRleHQoRG9jdW1lbnQmIGRvY3VtZW50LCBB
dWRpb0J1ZmZlciogcmVuZGVyVGFyZ2V0KQorICAgIDogV2ViS2l0QXVkaW9Db250ZXh0KGRvY3Vt
ZW50LCByZW5kZXJUYXJnZXQpCit7Cit9CisKK0V4Y2VwdGlvbk9yPFJlZjxXZWJLaXRPZmZsaW5l
QXVkaW9Db250ZXh0Pj4gV2ViS2l0T2ZmbGluZUF1ZGlvQ29udGV4dDo6Y3JlYXRlKFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIHVuc2lnbmVkIG51bWJlck9mQ2hhbm5lbHMsIHNpemVf
dCBudW1iZXJPZkZyYW1lcywgZmxvYXQgc2FtcGxlUmF0ZSkKK3sKKyAgICAvLyBGSVhNRTogQWRk
IHN1cHBvcnQgZm9yIHdvcmtlcnMuCisgICAgaWYgKCFpczxEb2N1bWVudD4oY29udGV4dCkpCisg
ICAgICAgIHJldHVybiBFeGNlcHRpb24geyBOb3RTdXBwb3J0ZWRFcnJvciB9OworICAgIGlmICgh
bnVtYmVyT2ZDaGFubmVscyB8fCBudW1iZXJPZkNoYW5uZWxzID4gMTAgfHwgIW51bWJlck9mRnJh
bWVzIHx8ICFpc1NhbXBsZVJhdGVSYW5nZUdvb2Qoc2FtcGxlUmF0ZSkpCisgICAgICAgIHJldHVy
biBFeGNlcHRpb24geyBTeW50YXhFcnJvciB9OworICAgIGF1dG8gcmVuZGVyVGFyZ2V0ID0gQXVk
aW9CdWZmZXI6OmNyZWF0ZShudW1iZXJPZkNoYW5uZWxzLCBudW1iZXJPZkZyYW1lcywgc2FtcGxl
UmF0ZSk7CisgICAgaWYgKCFyZW5kZXJUYXJnZXQpCisgICAgICAgIHJldHVybiBFeGNlcHRpb24g
eyBTeW50YXhFcnJvciB9OworCisgICAgYXV0byBhdWRpb0NvbnRleHQgPSBhZG9wdFJlZigqbmV3
IFdlYktpdE9mZmxpbmVBdWRpb0NvbnRleHQoZG93bmNhc3Q8RG9jdW1lbnQ+KGNvbnRleHQpLCBy
ZW5kZXJUYXJnZXQuZ2V0KCkpKTsKKyAgICBhdWRpb0NvbnRleHQtPnN1c3BlbmRJZk5lZWRlZCgp
OworICAgIHJldHVybiBhdWRpb0NvbnRleHQ7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
KworI2VuZGlmIC8vIEVOQUJMRShXRUJfQVVESU8pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmF1ZGlvL1dlYktpdE9mZmxpbmVBdWRpb0NvbnRleHQuaCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vV2ViS2l0T2ZmbGluZUF1ZGlvQ29udGV4dC5oCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi5jMjU0ZWQ0MWZlMAotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vV2ViS2l0T2ZmbGluZUF1
ZGlvQ29udGV4dC5oCkBAIC0wLDAgKzEsNDAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIs
IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUK
KyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTgorICogQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTCisgKiBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UK
KworI2luY2x1ZGUgIldlYktpdEF1ZGlvQ29udGV4dC5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7
CisKK2NsYXNzIFdlYktpdE9mZmxpbmVBdWRpb0NvbnRleHQgZmluYWwgOiBwdWJsaWMgV2ViS2l0
QXVkaW9Db250ZXh0IHsKKyAgICBXVEZfTUFLRV9JU09fQUxMT0NBVEVEKFdlYktpdE9mZmxpbmVB
dWRpb0NvbnRleHQpOworcHVibGljOgorICAgIHN0YXRpYyBFeGNlcHRpb25PcjxSZWY8V2ViS2l0
T2ZmbGluZUF1ZGlvQ29udGV4dD4+IGNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiwgdW5z
aWduZWQgbnVtYmVyT2ZDaGFubmVscywgc2l6ZV90IG51bWJlck9mRnJhbWVzLCBmbG9hdCBzYW1w
bGVSYXRlKTsKKworcHJpdmF0ZToKKyAgICBXZWJLaXRPZmZsaW5lQXVkaW9Db250ZXh0KERvY3Vt
ZW50JiwgQXVkaW9CdWZmZXIqIHJlbmRlclRhcmdldCk7Cit9OworCit9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1dlYktp
dE9mZmxpbmVBdWRpb0NvbnRleHQuaWRsIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRp
by9XZWJLaXRPZmZsaW5lQXVkaW9Db250ZXh0LmlkbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMC4uNGE5MmFjMDNiYTcKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1dlYktpdE9mZmxpbmVBdWRpb0NvbnRleHQuaWRsCkBAIC0w
LDAgKzEsMzMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIsIEdvb2dsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORCBBTlkK
KyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAq
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTgorICogQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTCisgKiBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCitbCisgICAgQ29uZGl0aW9uYWw9V0VCX0FVRElPLAor
ICAgIEpTR2VuZXJhdGVUb0pTT2JqZWN0LAorICAgIENvbnN0cnVjdG9yKHVuc2lnbmVkIGxvbmcg
bnVtYmVyT2ZDaGFubmVscywgdW5zaWduZWQgbG9uZyBudW1iZXJPZkZyYW1lcywgdW5yZXN0cmlj
dGVkIGZsb2F0IHNhbXBsZVJhdGUpLAorICAgIENvbnN0cnVjdG9yTWF5VGhyb3dFeGNlcHRpb24s
CisgICAgQ29uc3RydWN0b3JDYWxsV2l0aD1TY3JpcHRFeGVjdXRpb25Db250ZXh0LAorICAgIElu
dGVyZmFjZU5hbWU9d2Via2l0T2ZmbGluZUF1ZGlvQ29udGV4dAorXSBpbnRlcmZhY2UgV2ViS2l0
T2ZmbGluZUF1ZGlvQ29udGV4dCA6IFdlYktpdEF1ZGlvQ29udGV4dCB7Cit9OwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4
dAppbmRleCAyNGRiOGZkMmMzMS4uZTUxYjMxZjJmZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL1NvdXJjZXMudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CkBAIC0yNjgs
NiArMjY4LDkgQEAgTW9kdWxlcy93ZWJhdWRpby9TY3JpcHRQcm9jZXNzb3JOb2RlLmNwcAogTW9k
dWxlcy93ZWJhdWRpby9XYXZlU2hhcGVyRFNQS2VybmVsLmNwcAogTW9kdWxlcy93ZWJhdWRpby9X
YXZlU2hhcGVyTm9kZS5jcHAKIE1vZHVsZXMvd2ViYXVkaW8vV2F2ZVNoYXBlclByb2Nlc3Nvci5j
cHAKK01vZHVsZXMvd2ViYXVkaW8vV2ViS2l0QXVkaW9Db250ZXh0LmNwcAorTW9kdWxlcy93ZWJh
dWRpby9XZWJLaXRBdWRpb1Bhbm5lck5vZGUuY3BwCitNb2R1bGVzL3dlYmF1ZGlvL1dlYktpdE9m
ZmxpbmVBdWRpb0NvbnRleHQuY3BwCiAKIE1vZHVsZXMvd2ViYXV0aG4vQXV0aGVudGljYXRvckNv
b3JkaW5hdG9yLmNwcAogTW9kdWxlcy93ZWJhdXRobi9BdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVz
cG9uc2UuY3BwCkBAIC0zNTY3LDcgKzM1NzAsMTAgQEAgSlNXZWJHUFVTd2FwQ2hhaW4uY3BwCiBK
U1dlYkdQVVRleHR1cmUuY3BwCiBKU1dlYkdQVVRleHR1cmVWaWV3LmNwcAogSlNXZWJLaXRBbmlt
YXRpb25FdmVudC5jcHAKK0pTV2ViS2l0QXVkaW9Db250ZXh0LmNwcAorSlNXZWJLaXRBdWRpb1Bh
bm5lck5vZGUuY3BwCiBKU1dlYktpdENTU01hdHJpeC5jcHAKK0pTV2ViS2l0T2ZmbGluZUF1ZGlv
Q29udGV4dC5jcHAKIEpTV2ViS2l0UGxheWJhY2tUYXJnZXRBdmFpbGFiaWxpdHlFdmVudC5jcHAK
IEpTV2ViS2l0UG9pbnQuY3BwCiBKU1dlYktpdFRyYW5zaXRpb25FdmVudC5jcHAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA1MjY1
ZGI1ODM4Mi4uZmNlNjI2OGJiMDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTI0MTQsNiArMjQxNCw4IEBACiAJCTgzMTAyQjI3
MUY5RUFERDkwMEU0MDRCOSAvKiBKU0V4dGVuZGFibGVNZXNzYWdlRXZlbnQuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgzMTAyQjIzMUY5RUFEQzIwMEU0
MDRCOSAvKiBKU0V4dGVuZGFibGVNZXNzYWdlRXZlbnQuaCAqLzsgfTsKIAkJODMxMUMwMDMxRkFB
MkU5NTAwRTNDOEU1IC8qIFNXU2VydmVySm9iUXVldWUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgzMTFDMDAyMUZBQTJFODkwMEUzQzhFNSAvKiBTV1Nl
cnZlckpvYlF1ZXVlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKIAkJODMxMjBDNzExQzU2RjNGQjAwMUNCMTEyIC8qIEhUTUxEYXRhRWxlbWVudC5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODM0Qjg2QTcxQzU2
RTgzQTAwRjNGMEUzIC8qIEhUTUxEYXRhRWxlbWVudC5oICovOyB9OworCQk4MzFCNjE3NjI0OTlB
NUJCMDBDMDdDNzkgLyogV2ViS2l0QXVkaW9QYW5uZXJOb2RlLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4MzFCNjE3NDI0OTlBNTlDMDBDMDdDNzkgLyog
V2ViS2l0QXVkaW9QYW5uZXJOb2RlLmggKi87IH07CisJCTgzMUI2MTc3MjQ5OUE1QkYwMEMwN0M3
OSAvKiBXZWJLaXRPZmZsaW5lQXVkaW9Db250ZXh0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4MzFCNjE3NTI0OTlBNTlEMDBDMDdDNzkgLyogV2ViS2l0
T2ZmbGluZUF1ZGlvQ29udGV4dC5oICovOyB9OwogCQk4MzIxNTA3RTFGMjdFQTFCMDA5NUIxMzYg
LyogTmF2aWdhdG9yQmVhY29uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA4MzIxNTA3QjFGMjdFQTE1MDA5NUIxMzYgLyogTmF2aWdhdG9yQmVhY29uLmgg
Ki87IH07CiAJCTgzMkI4NDM0MTlEOEU1NTEwMEIyNjA1NSAvKiBTVkdBbmltYXRlRWxlbWVudEJh
c2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgzMkI4
NDMzMTlEOEU1NTEwMEIyNjA1NSAvKiBTVkdBbmltYXRlRWxlbWVudEJhc2UuaCAqLzsgfTsKIAkJ
ODMzQjlFMzIxRjUwOEQ4NTAwRTBFNDI4IC8qIEpTRmlsZVN5c3RlbURpcmVjdG9yeUVudHJ5Lmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4MzNCOUUyRjFG
NTA4RDgwMDBFMEU0MjggLyogSlNGaWxlU3lzdGVtRGlyZWN0b3J5RW50cnkuaCAqLzsgfTsKQEAg
LTI0NjksMTAgKzI0NzEsMTIgQEAKIAkJODM5QTJGMkUxRTIwNEE3MTAwMzkwNTdFIC8qIFdlYkdM
U3RhdGVUcmFja2VyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA4MzlBMkYyQzFFMjA0QTZEMDAzOTA1N0UgLyogV2ViR0xTdGF0ZVRyYWNrZXIuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk4MzlBQUZFRDFB
MEMwQzhEMDA2MDVGOTkgLyogSFRNTFdCUkVsZW1lbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgzOUFBRkVCMUEwQzBDOEQwMDYwNUY5OSAvKiBIVE1M
V0JSRWxlbWVudC5oICovOyB9OwogCQk4M0E4QUM0MDFGQUJCRkU1MDAyMDY0QUMgLyogU2Vydmlj
ZVdvcmtlcklkZW50aWZpZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDgzQThBQzNFMUZBQkJGRDEwMDIwNjRBQyAvKiBTZXJ2aWNlV29ya2VySWRlbnRp
Zmllci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJ
CTgzQjFBNzAyMjQ5OTg1RjAwMEZFNTk2MSAvKiBXZWJLaXRBdWRpb0NvbnRleHQuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgzQjFBNkZGMjQ5OTg1RDAw
MEZFNTk2MSAvKiBXZWJLaXRBdWRpb0NvbnRleHQuaCAqLzsgfTsKIAkJODNCMkQxNzUxQjhCQ0Q2
QTAwQTAyRTQ3IC8qIE5hdGl2ZU5vZGVGaWx0ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgzRTk1OUUxMUI4QkMyMkIwMDREOTM4NSAvKiBOYXRpdmVO
b2RlRmlsdGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKIAkJODNCNzRFRjYxRjNFMEJGMjAwOTk2QkM3IC8qIEtlZXBhbGl2ZVJlcXVlc3RUcmFja2Vy
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4M0I3NEVG
MzFGM0UwQkQ3MDA5OTZCQzcgLyogS2VlcGFsaXZlUmVxdWVzdFRyYWNrZXIuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk4M0I5Njg3QjE5RjhBQjgz
MDA0RUY3QUYgLyogU3R5bGVCdWlsZGVyQ29udmVydGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4M0I5Njg3OTE5RjhBQjgzMDA0RUY3QUYgLyogU3R5
bGVCdWlsZGVyQ29udmVydGVyLmggKi87IH07CiAJCTgzQkI1Qzg4MUQ1RDZGNDUwMDVBNzFGNCAv
KiBBbGxEZXNjZW5kYW50c0NvbGxlY3Rpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDgzQkI1Qzg3MUQ1RDZGM0EwMDVBNzFGNCAvKiBBbGxEZXNjZW5k
YW50c0NvbGxlY3Rpb24uaCAqLzsgfTsKKwkJODNCRDNDRUUyNDk5OEUwMTAwQkEzRTY3IC8qIEF1
ZGlvQ29udGV4dFN0YXRlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA4M0JEM0NFRDI0OTk4REY2MDBCQTNFNjcgLyogQXVkaW9Db250ZXh0U3RhdGUuaCAq
LzsgfTsKIAkJODNDMDVBNUIxQTY4NjIxMjAwN0U1REVBIC8qIFN0eWxlUHJvcGVydHlTaG9ydGhh
bmRGdW5jdGlvbnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDgzQzA1QTU5MUE2ODYyMTIwMDdFNURFQSAvKiBTdHlsZVByb3BlcnR5U2hvcnRoYW5kRnVu
Y3Rpb25zLmggKi87IH07CiAJCTgzQzFGNTk0MUVERjY5RDMwMDQxMEQyNyAvKiBRdWFsaWZpZWRO
YW1lQ2FjaGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDgzQzFGNTkyMUVERjY5RDMwMDQxMEQyNyAvKiBRdWFsaWZpZWROYW1lQ2FjaGUuaCAqLzsgfTsK
IAkJODNDNDVCOEUxREMyQjY4QTAwODg3MUJBIC8qIFZhbGlkYXRpb25CdWJibGUuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgzQzQ1QjhEMURDMkI2N0Mw
MDg4NzFCQSAvKiBWYWxpZGF0aW9uQnViYmxlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTEwMjk3LDYgKzEwMzAxLDcgQEAKIAkJODMwMDMwRjMx
QjdEMzNBNjAwRUQzQUFDIC8qIEdlbmVyaWNDYWNoZWRIVE1MQ29sbGVjdGlvbi5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBHZW5lcmljQ2FjaGVkSFRNTENvbGxlY3Rp
b24uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4MzAwMzBGNDFCN0QzM0E2MDBF
RDNBQUMgLyogR2VuZXJpY0NhY2hlZEhUTUxDb2xsZWN0aW9uLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IEdlbmVyaWNDYWNoZWRIVE1MQ29sbGVjdGlvbi5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk4MzAwMzBGNzFCN0QzOTg4MDBFRDNBQUMgLyogQ2FjaGVkSFRN
TENvbGxlY3Rpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ2FjaGVkSFRN
TENvbGxlY3Rpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJODMwMDNFMkIyNDk5
OTdBODAwNjBBRjk0IC8qIFdlYktpdEF1ZGlvQ29udGV4dC5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBXZWJLaXRBdWRpb0NvbnRleHQuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk4MzAzMzRGQjFGNTQ5MDUyMDA0REY3MDcgLyogRmlsZVN5c3RlbURp
cmVjdG9yeVJlYWRlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBG
aWxlU3lzdGVtRGlyZWN0b3J5UmVhZGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJODMwMzM0RkMxRjU0OTA1MjAwNERGNzA3IC8qIEZpbGVTeXN0ZW1EaXJlY3RvcnlSZWFkZXIu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRmlsZVN5c3RlbURpcmVjdG9yeVJl
YWRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4MzAzMzRGRDFGNTQ5MDUyMDA0
REY3MDcgLyogRmlsZVN5c3RlbUVudHJpZXNDYWxsYmFjay5pZGwgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBw
YXRoID0gRmlsZVN5c3RlbUVudHJpZXNDYWxsYmFjay5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CkBAIC0xMDMxNCw2ICsxMDMxOSwxMiBAQAogCQk4MzEwMkIyNTFGOUVBREMyMDBFNDA0
QjkgLyogSlNFeHRlbmRhYmxlTWVzc2FnZUV2ZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IEpTRXh0ZW5kYWJsZU1lc3NhZ2VFdmVudC5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTgzMTFDMDAwMUZBQTJFODkwMEUzQzhFNSAvKiBTV1NlcnZlckpv
YlF1ZXVlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNXU2VydmVy
Sm9iUXVldWUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4MzExQzAwMjFGQUEy
RTg5MDBFM0M4RTUgLyogU1dTZXJ2ZXJKb2JRdWV1ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBTV1NlcnZlckpvYlF1ZXVlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCTgzMUI2MTZGMjQ5OUE1OTgwMEMwN0M3OSAvKiBXZWJLaXRBdWRpb1Bhbm5lck5vZGUuaWRs
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFdlYktpdEF1ZGlvUGFubmVyTm9kZS5pZGw7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTgzMUI2MTcxMjQ5OUE1OTkwMEMwN0M3OSAvKiBXZWJL
aXRBdWRpb1Bhbm5lck5vZGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gV2ViS2l0QXVkaW9QYW5uZXJOb2RlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJODMxQjYxNzIyNDk5QTU5QTAwQzA3Qzc5IC8qIFdlYktpdE9mZmxpbmVBdWRpb0NvbnRleHQu
aWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFdlYktpdE9mZmxpbmVBdWRpb0NvbnRleHQuaWRs
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk4MzFCNjE3MzI0OTlBNTlCMDBDMDdDNzkg
LyogV2ViS2l0T2ZmbGluZUF1ZGlvQ29udGV4dC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBXZWJLaXRPZmZsaW5lQXVkaW9Db250ZXh0LmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJODMxQjYxNzQyNDk5QTU5QzAwQzA3Qzc5IC8qIFdlYktpdEF1ZGlv
UGFubmVyTm9kZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJLaXRBdWRp
b1Bhbm5lck5vZGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJODMxQjYxNzUyNDk5
QTU5RDAwQzA3Qzc5IC8qIFdlYktpdE9mZmxpbmVBdWRpb0NvbnRleHQuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViS2l0T2ZmbGluZUF1ZGlvQ29udGV4dC5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk4MzFDNDZDMzFGOUVFNUUwMDBFQkQ0NTAgLyogSlNFeHRl
bmRhYmxlTWVzc2FnZUV2ZW50Q3VzdG9tLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IEpTRXh0ZW5kYWJsZU1lc3NhZ2VFdmVudEN1c3RvbS5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTgzMUQxRjI5MUM1NkVDQTAwMEY1RjZDMCAvKiBIVE1MRGF0YUVs
ZW1lbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSFRNTERhdGFF
bGVtZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODMyMTUwN0ExRjI3RUEx
NTAwOTVCMTM2IC8qIE5hdmlnYXRvckJlYWNvbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBOYXZp
Z2F0b3JCZWFjb24uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTA0NDEsNiAr
MTA0NTIsOCBAQAogCQk4MzlBQUZFQjFBMEMwQzhEMDA2MDVGOTkgLyogSFRNTFdCUkVsZW1lbnQu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSFRNTFdCUkVsZW1lbnQuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODNBNEE5RjgxQ0U3RkQ3RTAwNzA5QjAwIC8qIEpT
WE1MRG9jdW1lbnRDdXN0b20uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gSlNYTUxEb2N1bWVudEN1c3RvbS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTgzQThBQzNFMUZBQkJGRDEwMDIwNjRBQyAvKiBTZXJ2aWNlV29ya2VySWRlbnRpZmllci5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTZXJ2aWNlV29ya2VySWRlbnRpZmllci5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk4M0IxQTZGRjI0OTk4NUQwMDBGRTU5NjEg
LyogV2ViS2l0QXVkaW9Db250ZXh0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFdlYktpdEF1ZGlvQ29udGV4dC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk4M0Ix
QTcwMTI0OTk4NUQwMDBGRTU5NjEgLyogV2ViS2l0QXVkaW9Db250ZXh0LmlkbCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHRleHQ7IHBhdGggPSBXZWJLaXRBdWRpb0NvbnRleHQuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk4M0IyNTAwOTFGQTExODFDMDBCQzAyRDkgLyogSlNTZXJ2aWNlV29ya2VyQ2xp
ZW50VHlwZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU1NlcnZpY2VXb3Jr
ZXJDbGllbnRUeXBlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTgzQjI1MDBCMUZB
MTE4MUQwMEJDMDJEOSAvKiBKU1NlcnZpY2VXb3JrZXJDbGllbnRUeXBlLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTU2VydmljZVdvcmtlckNsaWVudFR5cGUuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4M0I1REE0NTFGQTkwNzkzMDBCNTlERjQg
LyogSlNOYXZpZ2F0b3JDdXN0b20uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gSlNOYXZpZ2F0b3JDdXN0b20uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpA
QCAtMTA0NDgsNiArMTA0NjEsOCBAQAogCQk4M0I3NEVGMzFGM0UwQkQ3MDA5OTZCQzcgLyogS2Vl
cGFsaXZlUmVxdWVzdFRyYWNrZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
S2VlcGFsaXZlUmVxdWVzdFRyYWNrZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
ODNCOTY4NzkxOUY4QUI4MzAwNEVGN0FGIC8qIFN0eWxlQnVpbGRlckNvbnZlcnRlci5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTdHlsZUJ1aWxkZXJDb252ZXJ0ZXIuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODNCQjVDODcxRDVENkYzQTAwNUE3MUY0IC8qIEFs
bERlc2NlbmRhbnRzQ29sbGVjdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBBbGxEZXNjZW5kYW50c0NvbGxlY3Rpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJODNCRDNDRUIyNDk5OENDNTAwQkEzRTY3IC8qIEF1ZGlvQ29udGV4dFN0YXRlLmlkbCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHRleHQ7IHBhdGggPSBBdWRpb0NvbnRleHRTdGF0ZS5pZGw7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTgzQkQzQ0VEMjQ5OThERjYwMEJBM0U2NyAvKiBBdWRpb0NvbnRleHRT
dGF0ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBdWRpb0NvbnRleHRTdGF0
ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4M0MwNUE1ODFBNjg2MjEyMDA3RTVE
RUEgLyogU3R5bGVQcm9wZXJ0eVNob3J0aGFuZEZ1bmN0aW9ucy5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBTdHlsZVByb3BlcnR5U2hvcnRoYW5kRnVuY3Rpb25zLmNw
cDsgcGF0aCA9IERlcml2ZWRTb3VyY2VzL1dlYkNvcmUvU3R5bGVQcm9wZXJ0eVNob3J0aGFuZEZ1
bmN0aW9ucy5jcHA7IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19ESVI7IH07CiAJCTgzQzA1
QTU5MUE2ODYyMTIwMDdFNURFQSAvKiBTdHlsZVByb3BlcnR5U2hvcnRoYW5kRnVuY3Rpb25zLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFN0eWxlUHJvcGVydHlTaG9ydGhhbmRG
dW5jdGlvbnMuaDsgcGF0aCA9IERlcml2ZWRTb3VyY2VzL1dlYkNvcmUvU3R5bGVQcm9wZXJ0eVNo
b3J0aGFuZEZ1bmN0aW9ucy5oOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9Owog
CQk4M0MxRjU5MTFFREY2OUQzMDA0MTBEMjcgLyogUXVhbGlmaWVkTmFtZUNhY2hlLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFF1YWxpZmllZE5hbWVDYWNoZS5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yOTIzMSw2ICsyOTI0Niw4IEBACiAJCQkJ
RkQzMTVGQkExMkIwMjY3NTAwQzFBMzU5IC8qIEF1ZGlvQ29udGV4dC5jcHAgKi8sCiAJCQkJRkQz
MTVGQkIxMkIwMjY3NTAwQzFBMzU5IC8qIEF1ZGlvQ29udGV4dC5oICovLAogCQkJCUZEMzE1RkJD
MTJCMDI2NzUwMEMxQTM1OSAvKiBBdWRpb0NvbnRleHQuaWRsICovLAorCQkJCTgzQkQzQ0VEMjQ5
OThERjYwMEJBM0U2NyAvKiBBdWRpb0NvbnRleHRTdGF0ZS5oICovLAorCQkJCTgzQkQzQ0VCMjQ5
OThDQzUwMEJBM0U2NyAvKiBBdWRpb0NvbnRleHRTdGF0ZS5pZGwgKi8sCiAJCQkJRkQzMTVGQkQx
MkIwMjY3NTAwQzFBMzU5IC8qIEF1ZGlvRGVzdGluYXRpb25Ob2RlLmNwcCAqLywKIAkJCQlGRDMx
NUZCRTEyQjAyNjc1MDBDMUEzNTkgLyogQXVkaW9EZXN0aW5hdGlvbk5vZGUuaCAqLywKIAkJCQlG
RDMxNUZCRjEyQjAyNjc1MDBDMUEzNTkgLyogQXVkaW9EZXN0aW5hdGlvbk5vZGUuaWRsICovLApA
QCAtMjkzMjgsNiArMjkzNDUsMTUgQEAKIAkJCQlGRDdGMjk4RTEzRDRDMENCMDBBRDk1MzUgLyog
V2F2ZVNoYXBlck5vZGUuaWRsICovLAogCQkJCUZEN0YyOThGMTNENEMwQ0IwMEFEOTUzNSAvKiBX
YXZlU2hhcGVyUHJvY2Vzc29yLmNwcCAqLywKIAkJCQlGRDdGMjk5MDEzRDRDMENCMDBBRDk1MzUg
LyogV2F2ZVNoYXBlclByb2Nlc3Nvci5oICovLAorCQkJCTgzMDAzRTJCMjQ5OTk3QTgwMDYwQUY5
NCAvKiBXZWJLaXRBdWRpb0NvbnRleHQuY3BwICovLAorCQkJCTgzQjFBNkZGMjQ5OTg1RDAwMEZF
NTk2MSAvKiBXZWJLaXRBdWRpb0NvbnRleHQuaCAqLywKKwkJCQk4M0IxQTcwMTI0OTk4NUQwMDBG
RTU5NjEgLyogV2ViS2l0QXVkaW9Db250ZXh0LmlkbCAqLywKKwkJCQk4MzFCNjE3MTI0OTlBNTk5
MDBDMDdDNzkgLyogV2ViS2l0QXVkaW9QYW5uZXJOb2RlLmNwcCAqLywKKwkJCQk4MzFCNjE3NDI0
OTlBNTlDMDBDMDdDNzkgLyogV2ViS2l0QXVkaW9QYW5uZXJOb2RlLmggKi8sCisJCQkJODMxQjYx
NkYyNDk5QTU5ODAwQzA3Qzc5IC8qIFdlYktpdEF1ZGlvUGFubmVyTm9kZS5pZGwgKi8sCisJCQkJ
ODMxQjYxNzMyNDk5QTU5QjAwQzA3Qzc5IC8qIFdlYktpdE9mZmxpbmVBdWRpb0NvbnRleHQuY3Bw
ICovLAorCQkJCTgzMUI2MTc1MjQ5OUE1OUQwMEMwN0M3OSAvKiBXZWJLaXRPZmZsaW5lQXVkaW9D
b250ZXh0LmggKi8sCisJCQkJODMxQjYxNzIyNDk5QTU5QTAwQzA3Qzc5IC8qIFdlYktpdE9mZmxp
bmVBdWRpb0NvbnRleHQuaWRsICovLAogCQkJKTsKIAkJCXBhdGggPSB3ZWJhdWRpbzsKIAkJCXNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7CkBAIC0yOTcwNCw2ICsyOTczMCw3IEBACiAJCQkJOUI0MTcw
NjQxMjU2NjJCMzAwNkIyOEZDIC8qIEFwcGx5QmxvY2tFbGVtZW50Q29tbWFuZC5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJOTMzMDlERDkwOTlFNjQ5MjAwNTZFNTgxIC8qIEFwcGx5U3R5bGVDb21tYW5k
LmggaW4gSGVhZGVycyAqLywKIAkJCQk1MTJERDhGNjBEOTFFNkFGMDAwRjg5RUUgLyogQXJjaGl2
ZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJODNCRDNDRUUyNDk5OEUwMTAwQkEzRTY3IC8qIEF1ZGlv
Q29udGV4dFN0YXRlLmggaW4gSGVhZGVycyAqLywKIAkJCQk1MTJERDhGRDBEOTFFNkFGMDAwRjg5
RUUgLyogQXJjaGl2ZUZhY3RvcnkuaCBpbiBIZWFkZXJzICovLAogCQkJCTUxMkREOEZDMEQ5MUU2
QUYwMDBGODlFRSAvKiBBcmNoaXZlUmVzb3VyY2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTUxMkRE
OEY4MEQ5MUU2QUYwMDBGODlFRSAvKiBBcmNoaXZlUmVzb3VyY2VDb2xsZWN0aW9uLmggaW4gSGVh
ZGVycyAqLywKQEAgLTMwODY5LDYgKzMwODk2LDcgQEAKIAkJCQlBNDNCRjU5OTExNDkyOTBBMDBD
NjQzQ0EgLyogSFRNTFByb2dyZXNzRWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQThDRkY3
QTMwQTE1Njk3ODAwMEE0MjM0IC8qIEhUTUxRdW90ZUVsZW1lbnQuaCBpbiBIZWFkZXJzICovLAog
CQkJCUE4RDIyM0ZFMTZCNTJFNEUwMDE1NzI4OCAvKiBIVE1MUmVzb3VyY2VQcmVsb2FkZXIuaCBp
biBIZWFkZXJzICovLAorCQkJCTgzQjFBNzAyMjQ5OTg1RjAwMEZFNTk2MSAvKiBXZWJLaXRBdWRp
b0NvbnRleHQuaCBpbiBIZWFkZXJzICovLAogCQkJCUE4NzFEQzI1MEExNTIwNTcwMEIxMkE2OCAv
KiBIVE1MU2NyaXB0RWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTc3QjM4NzUxMjI4ODNF
OTAwQjgxRkY4IC8qIEhUTUxTY3JpcHRSdW5uZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTk3N0Iz
ODc2MTIyODgzRTkwMEI4MUZGOCAvKiBIVE1MU2NyaXB0UnVubmVySG9zdC5oIGluIEhlYWRlcnMg
Ki8sCkBAIC0zMTcxMSw2ICszMTczOSw3IEBACiAJCQkJQkM4MjQzMjkwRDBDRThBMjAwNDYwQzhG
IC8qIEpTU1FMRXJyb3IuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBRTgyRkVEMENBQjA3RUUwMDIy
MzdBRSAvKiBKU1NRTFJlc3VsdFNldC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUFGRTExOUEwQ0JG
RkNDNDAwMzAxN0ZBIC8qIEpTU1FMUmVzdWx0U2V0Um93TGlzdC5oIGluIEhlYWRlcnMgKi8sCisJ
CQkJODMxQjYxNzYyNDk5QTVCQjAwQzA3Qzc5IC8qIFdlYktpdEF1ZGlvUGFubmVyTm9kZS5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJQjU5REQ2QTUxMTkwMkE2MjAwN0U5Njg0IC8qIEpTU1FMU3RhdGVt
ZW50Q2FsbGJhY2suaCBpbiBIZWFkZXJzICovLAogCQkJCUI1OURENkE5MTE5MDJBNzEwMDdFOTY4
NCAvKiBKU1NRTFN0YXRlbWVudEVycm9yQ2FsbGJhY2suaCBpbiBIZWFkZXJzICovLAogCQkJCUJD
ODI0MzJBMEQwQ0U4QTIwMDQ2MEM4RiAvKiBKU1NRTFRyYW5zYWN0aW9uLmggaW4gSGVhZGVycyAq
LywKQEAgLTMyODA0LDYgKzMyODMzLDcgQEAKIAkJCQk1MUVFN0IzODFBQTUwQjA1MDBGOTJCMjEg
LyogUmVzb3VyY2VMb2FkSW5mby5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTczRTMyNTcxMDg4M0I3
QzAwNUJDNDkzIC8qIFJlc291cmNlTG9hZE5vdGlmaWVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk2
QjY5M0EyRTFDNTFBODJFMDBCMDNCRUYgLyogUmVzb3VyY2VMb2FkT2JzZXJ2ZXIuaCBpbiBIZWFk
ZXJzICovLAorCQkJCTgzMUI2MTc3MjQ5OUE1QkYwMEMwN0M3OSAvKiBXZWJLaXRPZmZsaW5lQXVk
aW9Db250ZXh0LmggaW4gSGVhZGVycyAqLywKIAkJCQlFNDI5NUZBNDEyQjA2MTRFMDBEMUFDRTAg
LyogUmVzb3VyY2VMb2FkUHJpb3JpdHkuaCBpbiBIZWFkZXJzICovLAogCQkJCTdBOTI5Q0E3MUM1
OThBQTkwMDRERjIyNiAvKiBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzLmggaW4gSGVhZGVycyAqLywK
IAkJCQk3RUU2ODQ2RDEyRDI2RTM4MDBFNzk0MTUgLyogUmVzb3VyY2VSZXF1ZXN0LmggaW4gSGVh
ZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1dlYkNvcmVC
dWlsdGluTmFtZXMuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1dlYkNvcmVCdWlsdGlu
TmFtZXMuaAppbmRleCBjOTFiNGRmYWQ3MS4uM2ViNjJiMmE4MWUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1dlYkNvcmVCdWlsdGluTmFtZXMuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9XZWJDb3JlQnVpbHRpbk5hbWVzLmgKQEAgLTQ5LDYgKzQ5LDcg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIG1hY3JvKEFwcGxlUGF5U2V0dXBGZWF0dXJlKSBc
CiAgICAgbWFjcm8oQXR0YWNobWVudEVsZW1lbnQpIFwKICAgICBtYWNybyhBdWRpbykgXAorICAg
IG1hY3JvKEF1ZGlvQ29udGV4dCkgXAogICAgIG1hY3JvKEF1dGhlbnRpY2F0b3JBc3NlcnRpb25S
ZXNwb25zZSkgXAogICAgIG1hY3JvKEF1dGhlbnRpY2F0b3JBdHRlc3RhdGlvblJlc3BvbnNlKSBc
CiAgICAgbWFjcm8oQXV0aGVudGljYXRvclJlc3BvbnNlKSBcCkBAIC0xNjUsOSArMTY2LDExIEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBtYWNybyhOYXZpZ2F0b3JDcmVkZW50aWFscykgXAog
ICAgIG1hY3JvKE5hdmlnYXRvck1lZGlhRGV2aWNlcykgXAogICAgIG1hY3JvKE5hdmlnYXRvclVz
ZXJNZWRpYSkgXAorICAgIG1hY3JvKE9mZmxpbmVBdWRpb0NvbnRleHQpIFwKICAgICBtYWNybyhP
ZmZzY3JlZW5DYW52YXMpIFwKICAgICBtYWNybyhPZmZzY3JlZW5DYW52YXNSZW5kZXJpbmdDb250
ZXh0MkQpIFwKICAgICBtYWNybyhQYWludFJlbmRlcmluZ0NvbnRleHQyRCkgXAorICAgIG1hY3Jv
KFBhbm5lck5vZGUpIFwKICAgICBtYWNybyhQYXltZW50QWRkcmVzcykgXAogICAgIG1hY3JvKFBh
eW1lbnRNZXRob2RDaGFuZ2VFdmVudCkgXAogICAgIG1hY3JvKFBheW1lbnRSZXF1ZXN0KSBcCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRUYXJnZXRGYWN0b3J5LmluIGIvU291
cmNlL1dlYkNvcmUvZG9tL0V2ZW50VGFyZ2V0RmFjdG9yeS5pbgppbmRleCBmYzFkYjJjZTBlMC4u
YTE1NGI0NDVhMTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudFRhcmdldEZh
Y3RvcnkuaW4KKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50VGFyZ2V0RmFjdG9yeS5pbgpA
QCAtNTMsNiArNTMsNyBAQCBWaWRlb1RyYWNrTGlzdCBjb25kaXRpb25hbD1WSURFTwogVmlzdWFs
Vmlld3BvcnQKIFdlYkFuaW1hdGlvbgogV2ViR1BVRGV2aWNlIGNvbmRpdGlvbmFsPVdFQkdQVQor
V2ViS2l0QXVkaW9Db250ZXh0IGNvbmRpdGlvbmFsPVdFQl9BVURJTwogV2ViS2l0TWVkaWFLZXlT
ZXNzaW9uIGNvbmRpdGlvbmFsPUxFR0FDWV9FTkNSWVBURURfTUVESUEKIFdlYlNvY2tldAogV29y
a2VyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdzLnlhbWwgYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL1NldHRpbmdzLnlhbWwKaW5kZXggMmQ2YmM2ZmYyZWYuLjU4M2ZjNmY3
OTVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdzLnlhbWwKKysrIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9TZXR0aW5ncy55YW1sCkBAIC0yNTUsNiArMjU1LDggQEAgbG9h
ZERlZmVycmluZ0VuYWJsZWQ6CiAgIGluaXRpYWw6IHRydWUKIHdlYkF1ZGlvRW5hYmxlZDoKICAg
aW5pdGlhbDogZmFsc2UKK21vZGVyblVucHJlZml4ZWRXZWJBdWRpb0VuYWJsZWQ6CisgIGluaXRp
YWw6IGZhbHNlCiBwYWdpbmF0ZUR1cmluZ0xheW91dEVuYWJsZWQ6CiAgIGluaXRpYWw6IGZhbHNl
CiBmdWxsU2NyZWVuRW5hYmxlZDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dl
YlByZWZlcmVuY2VzLnlhbWwgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQcmVmZXJlbmNlcy55
YW1sCmluZGV4IGZhZDFhOWY1ODg2Li41MjM1Y2U3MWZmNyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9TaGFyZWQvV2ViUHJlZmVyZW5jZXMueWFtbAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9XZWJQcmVmZXJlbmNlcy55YW1sCkBAIC0zMzQsNiArMzM0LDE0IEBAIFdlYkF1ZGlvRW5hYmxl
ZDoKICAgZGVmYXVsdFZhbHVlOiB0cnVlCiAgIGNvbmRpdGlvbjogRU5BQkxFKFdFQl9BVURJTykK
IAorTW9kZXJuVW5wcmVmaXhlZFdlYkF1ZGlvRW5hYmxlZDoKKyAgdHlwZTogYm9vbAorICBkZWZh
dWx0VmFsdWU6IGZhbHNlCisgIGNvbmRpdGlvbjogRU5BQkxFKFdFQl9BVURJTykKKyAgaHVtYW5S
ZWFkYWJsZU5hbWU6ICJNb2Rlcm4gV2ViQXVkaW8gQVBJIgorICBodW1hblJlYWRhYmxlRGVzY3Jp
cHRpb246ICJNb2Rlcm4gYW5kIHVucHJlZml4ZWQgV2ViQXVkaW8gQVBJIgorICBjYXRlZ29yeTog
ZXhwZXJpbWVudGFsCisKIEF0dGFjaG1lbnRFbGVtZW50RW5hYmxlZDoKICAgdHlwZTogYm9vbAog
ICBkZWZhdWx0VmFsdWU6IGZhbHNlCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>402091</attachid>
            <date>2020-06-17 01:34:48 -0700</date>
            <delta_ts>2020-06-17 01:45:59 -0700</delta_ts>
            <desc>WIP Patch</desc>
            <filename>213268_wip.patch</filename>
            <type>text/plain</type>
            <size>201761</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dlYkNv
cmUvQ01ha2VMaXN0cy50eHQKaW5kZXggOTc1OTQ4OTVkOGMuLmNiZWM5ZWMwOWY1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9D
TWFrZUxpc3RzLnR4dApAQCAtNDMzLDYgKzQzMyw3IEBAIHNldChXZWJDb3JlX05PTl9TVkdfSURM
X0ZJTEVTCiAgICAgTW9kdWxlcy93ZWJhdWRpby9BdWRpb0J1ZmZlckNhbGxiYWNrLmlkbAogICAg
IE1vZHVsZXMvd2ViYXVkaW8vQXVkaW9CdWZmZXJTb3VyY2VOb2RlLmlkbAogICAgIE1vZHVsZXMv
d2ViYXVkaW8vQXVkaW9Db250ZXh0LmlkbAorICAgIE1vZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250
ZXh0U3RhdGUuaWRsCiAgICAgTW9kdWxlcy93ZWJhdWRpby9BdWRpb0Rlc3RpbmF0aW9uTm9kZS5p
ZGwKICAgICBNb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvTGlzdGVuZXIuaWRsCiAgICAgTW9kdWxlcy93
ZWJhdWRpby9BdWRpb05vZGUuaWRsCkBAIC00NTUsNiArNDU2LDkgQEAgc2V0KFdlYkNvcmVfTk9O
X1NWR19JRExfRklMRVMKICAgICBNb2R1bGVzL3dlYmF1ZGlvL1BlcmlvZGljV2F2ZS5pZGwKICAg
ICBNb2R1bGVzL3dlYmF1ZGlvL1NjcmlwdFByb2Nlc3Nvck5vZGUuaWRsCiAgICAgTW9kdWxlcy93
ZWJhdWRpby9XYXZlU2hhcGVyTm9kZS5pZGwKKyAgICBNb2R1bGVzL3dlYmF1ZGlvL1dlYktpdEF1
ZGlvQ29udGV4dC5pZGwKKyAgICBNb2R1bGVzL3dlYmF1ZGlvL1dlYktpdEF1ZGlvUGFubmVyTm9k
ZS5pZGwKKyAgICBNb2R1bGVzL3dlYmF1ZGlvL1dlYktpdE9mZmxpbmVBdWRpb0NvbnRleHQuaWRs
CiAKICAgICBNb2R1bGVzL3dlYmF1dGhuL0F0dGVzdGF0aW9uQ29udmV5YW5jZVByZWZlcmVuY2Uu
aWRsCiAgICAgTW9kdWxlcy93ZWJhdXRobi9BdXRoZW50aWNhdGlvbkV4dGVuc2lvbnNDbGllbnRJ
bnB1dHMuaWRsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy1pbnB1
dC54Y2ZpbGVsaXN0IGIvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMtaW5wdXQueGNmaWxl
bGlzdAppbmRleCA2YTdhYTdkMTRlYi4uMDRhMzM3OGJkYmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLWlucHV0LnhjZmlsZWxpc3QKKysrIGIvU291cmNlL1dlYkNv
cmUvRGVyaXZlZFNvdXJjZXMtaW5wdXQueGNmaWxlbGlzdApAQCAtMzIyLDYgKzMyMiw3IEBAICQo
UFJPSkVDVF9ESVIpL01vZHVsZXMvd2ViYXVkaW8vUGFubmVyTm9kZS5pZGwKICQoUFJPSkVDVF9E
SVIpL01vZHVsZXMvd2ViYXVkaW8vUGVyaW9kaWNXYXZlLmlkbAogJChQUk9KRUNUX0RJUikvTW9k
dWxlcy93ZWJhdWRpby9TY3JpcHRQcm9jZXNzb3JOb2RlLmlkbAogJChQUk9KRUNUX0RJUikvTW9k
dWxlcy93ZWJhdWRpby9XYXZlU2hhcGVyTm9kZS5pZGwKKyQoUFJPSkVDVF9ESVIpL01vZHVsZXMv
d2ViYXVkaW8vV2ViS2l0QXVkaW9Db250ZXh0LmlkbAogJChQUk9KRUNUX0RJUikvTW9kdWxlcy93
ZWJhdXRobi9BdHRlc3RhdGlvbkNvbnZleWFuY2VQcmVmZXJlbmNlLmlkbAogJChQUk9KRUNUX0RJ
UikvTW9kdWxlcy93ZWJhdXRobi9BdXRoZW50aWNhdGlvbkV4dGVuc2lvbnNDbGllbnRJbnB1dHMu
aWRsCiAkKFBST0pFQ1RfRElSKS9Nb2R1bGVzL3dlYmF1dGhuL0F1dGhlbnRpY2F0aW9uRXh0ZW5z
aW9uc0NsaWVudE91dHB1dHMuaWRsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVk
U291cmNlcy5tYWtlIGIvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQppbmRleCBk
MjY3MDg5ZTM4Ny4uMDY5ZTIwNTI2NzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0Rlcml2
ZWRTb3VyY2VzLm1ha2UKKysrIGIvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQpA
QCAtMzgzLDYgKzM4Myw3IEBAIEpTX0JJTkRJTkdfSURMUyA9IFwKICAgICAkKFdlYkNvcmUpL01v
ZHVsZXMvd2ViYXVkaW8vQXVkaW9CdWZmZXJDYWxsYmFjay5pZGwgXAogICAgICQoV2ViQ29yZSkv
TW9kdWxlcy93ZWJhdWRpby9BdWRpb0J1ZmZlclNvdXJjZU5vZGUuaWRsIFwKICAgICAkKFdlYkNv
cmUpL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0LmlkbCBcCisgICAgJChXZWJDb3JlKS9N
b2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQ29udGV4dFN0YXRlLmlkbCBcCiAgICAgJChXZWJDb3JlKS9N
b2R1bGVzL3dlYmF1ZGlvL0F1ZGlvRGVzdGluYXRpb25Ob2RlLmlkbCBcCiAgICAgJChXZWJDb3Jl
KS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvTGlzdGVuZXIuaWRsIFwKICAgICAkKFdlYkNvcmUpL01v
ZHVsZXMvd2ViYXVkaW8vQXVkaW9Ob2RlLmlkbCBcCkBAIC00MDUsNiArNDA2LDkgQEAgSlNfQklO
RElOR19JRExTID0gXAogICAgICQoV2ViQ29yZSkvTW9kdWxlcy93ZWJhdWRpby9QZXJpb2RpY1dh
dmUuaWRsIFwKICAgICAkKFdlYkNvcmUpL01vZHVsZXMvd2ViYXVkaW8vU2NyaXB0UHJvY2Vzc29y
Tm9kZS5pZGwgXAogICAgICQoV2ViQ29yZSkvTW9kdWxlcy93ZWJhdWRpby9XYXZlU2hhcGVyTm9k
ZS5pZGwgXAorICAgICQoV2ViQ29yZSkvTW9kdWxlcy93ZWJhdWRpby9XZWJLaXRBdWRpb0NvbnRl
eHQuaWRsIFwKKyAgICAkKFdlYkNvcmUpL01vZHVsZXMvd2ViYXVkaW8vV2ViS2l0QXVkaW9QYW5u
ZXJOb2RlLmlkbCBcCisgICAgJChXZWJDb3JlKS9Nb2R1bGVzL3dlYmF1ZGlvL1dlYktpdE9mZmxp
bmVBdWRpb0NvbnRleHQuaWRsIFwKICAgICAkKFdlYkNvcmUpL01vZHVsZXMvd2ViYXV0aG4vQXR0
ZXN0YXRpb25Db252ZXlhbmNlUHJlZmVyZW5jZS5pZGwgXAogICAgICQoV2ViQ29yZSkvTW9kdWxl
cy93ZWJhdXRobi9BdXRoZW50aWNhdGlvbkV4dGVuc2lvbnNDbGllbnRJbnB1dHMuaWRsIFwKICAg
ICAkKFdlYkNvcmUpL01vZHVsZXMvd2ViYXV0aG4vQXV0aGVudGljYXRpb25FeHRlbnNpb25zQ2xp
ZW50T3V0cHV0cy5pZGwgXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJh
dWRpby9BbmFseXNlck5vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9B
bmFseXNlck5vZGUuY3BwCmluZGV4IDE3OTg3MDcwMWY4Li4yMTVkZTMyMWU5YSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BbmFseXNlck5vZGUuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQW5hbHlzZXJOb2RlLmNwcApAQCAtMzYs
NyArMzYsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFdURl9NQUtFX0lTT19BTExPQ0FURURf
SU1QTChBbmFseXNlck5vZGUpOwogCi1BbmFseXNlck5vZGU6OkFuYWx5c2VyTm9kZShBdWRpb0Nv
bnRleHQmIGNvbnRleHQsIGZsb2F0IHNhbXBsZVJhdGUpCitBbmFseXNlck5vZGU6OkFuYWx5c2Vy
Tm9kZShBdWRpb0NvbnRleHRCYXNlJiBjb250ZXh0LCBmbG9hdCBzYW1wbGVSYXRlKQogICAgIDog
QXVkaW9CYXNpY0luc3BlY3Rvck5vZGUoY29udGV4dCwgc2FtcGxlUmF0ZSwgMikKIHsKICAgICBz
ZXROb2RlVHlwZShOb2RlVHlwZUFuYWx5c2VyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViYXVkaW8vQW5hbHlzZXJOb2RlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmF1ZGlvL0FuYWx5c2VyTm9kZS5oCmluZGV4IGRhMWI1ZTg5Y2EyLi5hNDAyM2EzMGRlYSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BbmFseXNlck5vZGUu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0FuYWx5c2VyTm9kZS5oCkBA
IC0zMiw3ICszMiw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIEFuYWx5c2VyTm9kZSBm
aW5hbCA6IHB1YmxpYyBBdWRpb0Jhc2ljSW5zcGVjdG9yTm9kZSB7CiAgICAgV1RGX01BS0VfSVNP
X0FMTE9DQVRFRChBbmFseXNlck5vZGUpOwogcHVibGljOgotICAgIHN0YXRpYyBSZWY8QW5hbHlz
ZXJOb2RlPiBjcmVhdGUoQXVkaW9Db250ZXh0JiBjb250ZXh0LCBmbG9hdCBzYW1wbGVSYXRlKQor
ICAgIHN0YXRpYyBSZWY8QW5hbHlzZXJOb2RlPiBjcmVhdGUoQXVkaW9Db250ZXh0QmFzZSYgY29u
dGV4dCwgZmxvYXQgc2FtcGxlUmF0ZSkKICAgICB7CiAgICAgICAgIHJldHVybiBhZG9wdFJlZigq
bmV3IEFuYWx5c2VyTm9kZShjb250ZXh0LCBzYW1wbGVSYXRlKSk7CiAgICAgfQpAQCAtNTgsNyAr
NTgsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBnZXRCeXRlVGltZURvbWFpbkRhdGEoY29uc3QgUmVm
UHRyPEpTQzo6VWludDhBcnJheT4mIGFycmF5KSB7IG1fYW5hbHlzZXIuZ2V0Qnl0ZVRpbWVEb21h
aW5EYXRhKGFycmF5LmdldCgpKTsgfQogCiBwcml2YXRlOgotICAgIEFuYWx5c2VyTm9kZShBdWRp
b0NvbnRleHQmLCBmbG9hdCBzYW1wbGVSYXRlKTsKKyAgICBBbmFseXNlck5vZGUoQXVkaW9Db250
ZXh0QmFzZSYsIGZsb2F0IHNhbXBsZVJhdGUpOwogCiAgICAgdm9pZCBwcm9jZXNzKHNpemVfdCBm
cmFtZXNUb1Byb2Nlc3MpIGZpbmFsOwogICAgIHZvaWQgcmVzZXQoKSBmaW5hbDsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9CYXNpY0luc3BlY3Rvck5v
ZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0Jhc2ljSW5zcGVj
dG9yTm9kZS5jcHAKaW5kZXggMGZiNTViMDhmMGMuLjE0NTNkYWNhZmRhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQmFzaWNJbnNwZWN0b3JOb2RlLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQmFzaWNJbnNwZWN0
b3JOb2RlLmNwcApAQCAtMzYsNyArMzYsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFdURl9N
QUtFX0lTT19BTExPQ0FURURfSU1QTChBdWRpb0Jhc2ljSW5zcGVjdG9yTm9kZSk7CiAKLUF1ZGlv
QmFzaWNJbnNwZWN0b3JOb2RlOjpBdWRpb0Jhc2ljSW5zcGVjdG9yTm9kZShBdWRpb0NvbnRleHQm
IGNvbnRleHQsIGZsb2F0IHNhbXBsZVJhdGUsIHVuc2lnbmVkIG91dHB1dENoYW5uZWxDb3VudCkK
K0F1ZGlvQmFzaWNJbnNwZWN0b3JOb2RlOjpBdWRpb0Jhc2ljSW5zcGVjdG9yTm9kZShBdWRpb0Nv
bnRleHRCYXNlJiBjb250ZXh0LCBmbG9hdCBzYW1wbGVSYXRlLCB1bnNpZ25lZCBvdXRwdXRDaGFu
bmVsQ291bnQpCiAgICAgOiBBdWRpb05vZGUoY29udGV4dCwgc2FtcGxlUmF0ZSkKIHsKICAgICBz
ZXROb2RlVHlwZShOb2RlVHlwZUJhc2ljSW5zcGVjdG9yKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9CYXNpY0luc3BlY3Rvck5vZGUuaCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9CYXNpY0luc3BlY3Rvck5vZGUuaAppbmRl
eCA4MGUwOGQyOTYxNy4uZTc2OWU0NmFlMjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViYXVkaW8vQXVkaW9CYXNpY0luc3BlY3Rvck5vZGUuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQmFzaWNJbnNwZWN0b3JOb2RlLmgKQEAgLTM0LDcg
KzM0LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgQXVkaW9CYXNpY0luc3BlY3Rvck5v
ZGUgOiBwdWJsaWMgQXVkaW9Ob2RlIHsKICAgICBXVEZfTUFLRV9JU09fQUxMT0NBVEVEKEF1ZGlv
QmFzaWNJbnNwZWN0b3JOb2RlKTsKIHB1YmxpYzoKLSAgICBBdWRpb0Jhc2ljSW5zcGVjdG9yTm9k
ZShBdWRpb0NvbnRleHQmLCBmbG9hdCBzYW1wbGVSYXRlLCB1bnNpZ25lZCBvdXRwdXRDaGFubmVs
Q291bnQpOworICAgIEF1ZGlvQmFzaWNJbnNwZWN0b3JOb2RlKEF1ZGlvQ29udGV4dEJhc2UmLCBm
bG9hdCBzYW1wbGVSYXRlLCB1bnNpZ25lZCBvdXRwdXRDaGFubmVsQ291bnQpOwogCiBwcml2YXRl
OgogICAgIHZvaWQgcHVsbElucHV0cyhzaXplX3QgZnJhbWVzVG9Qcm9jZXNzKSBvdmVycmlkZTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9CYXNpY1By
b2Nlc3Nvck5vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0Jh
c2ljUHJvY2Vzc29yTm9kZS5jcHAKaW5kZXggMGI5ZjFjZWQ4NzQuLmY3Yjc5NmJlNTU1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQmFzaWNQcm9jZXNz
b3JOb2RlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQmFz
aWNQcm9jZXNzb3JOb2RlLmNwcApAQCAtMzksNyArMzksNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKIFdURl9NQUtFX0lTT19BTExPQ0FURURfSU1QTChBdWRpb0Jhc2ljUHJvY2Vzc29yTm9kZSk7
CiAKLUF1ZGlvQmFzaWNQcm9jZXNzb3JOb2RlOjpBdWRpb0Jhc2ljUHJvY2Vzc29yTm9kZShBdWRp
b0NvbnRleHQmIGNvbnRleHQsIGZsb2F0IHNhbXBsZVJhdGUpCitBdWRpb0Jhc2ljUHJvY2Vzc29y
Tm9kZTo6QXVkaW9CYXNpY1Byb2Nlc3Nvck5vZGUoQXVkaW9Db250ZXh0QmFzZSYgY29udGV4dCwg
ZmxvYXQgc2FtcGxlUmF0ZSkKICAgICA6IEF1ZGlvTm9kZShjb250ZXh0LCBzYW1wbGVSYXRlKQog
ewogICAgIGFkZElucHV0KG1ha2VVbmlxdWU8QXVkaW9Ob2RlSW5wdXQ+KHRoaXMpKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9CYXNpY1Byb2Nlc3Nv
ck5vZGUuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9CYXNpY1Byb2Nl
c3Nvck5vZGUuaAppbmRleCA4MmNmZmRhNTlmMi4uZTE2MzczYmYwMjkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9CYXNpY1Byb2Nlc3Nvck5vZGUuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQmFzaWNQcm9jZXNzb3JO
b2RlLmgKQEAgLTM3LDcgKzM3LDcgQEAgY2xhc3MgQXVkaW9Qcm9jZXNzb3I7CiBjbGFzcyBBdWRp
b0Jhc2ljUHJvY2Vzc29yTm9kZSA6IHB1YmxpYyBBdWRpb05vZGUgewogICAgIFdURl9NQUtFX0lT
T19BTExPQ0FURUQoQXVkaW9CYXNpY1Byb2Nlc3Nvck5vZGUpOwogcHVibGljOgotICAgIEF1ZGlv
QmFzaWNQcm9jZXNzb3JOb2RlKEF1ZGlvQ29udGV4dCYsIGZsb2F0IHNhbXBsZVJhdGUpOworICAg
IEF1ZGlvQmFzaWNQcm9jZXNzb3JOb2RlKEF1ZGlvQ29udGV4dEJhc2UmLCBmbG9hdCBzYW1wbGVS
YXRlKTsKIAogICAgIC8vIEF1ZGlvTm9kZQogICAgIHZvaWQgcHJvY2VzcyhzaXplX3QgZnJhbWVz
VG9Qcm9jZXNzKSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViYXVkaW8vQXVkaW9CdWZmZXJTb3VyY2VOb2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViYXVkaW8vQXVkaW9CdWZmZXJTb3VyY2VOb2RlLmNwcAppbmRleCBjMzY2MWRlNTdkNy4u
MGMxYmE0ZTk0YTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8v
QXVkaW9CdWZmZXJTb3VyY2VOb2RlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmF1ZGlvL0F1ZGlvQnVmZmVyU291cmNlTm9kZS5jcHAKQEAgLTQ5LDEyICs0OSwxMiBAQCBjb25z
dCBkb3VibGUgRGVmYXVsdEdyYWluRHVyYXRpb24gPSAwLjAyMDsgLy8gMjBtcwogLy8gdG8gbWlu
aW1pemUgbGluZWFyIGludGVycG9sYXRpb24gYWxpYXNpbmcuCiBjb25zdCBkb3VibGUgTWF4UmF0
ZSA9IDEwMjQ7CiAKLVJlZjxBdWRpb0J1ZmZlclNvdXJjZU5vZGU+IEF1ZGlvQnVmZmVyU291cmNl
Tm9kZTo6Y3JlYXRlKEF1ZGlvQ29udGV4dCYgY29udGV4dCwgZmxvYXQgc2FtcGxlUmF0ZSkKK1Jl
ZjxBdWRpb0J1ZmZlclNvdXJjZU5vZGU+IEF1ZGlvQnVmZmVyU291cmNlTm9kZTo6Y3JlYXRlKEF1
ZGlvQ29udGV4dEJhc2UmIGNvbnRleHQsIGZsb2F0IHNhbXBsZVJhdGUpCiB7CiAgICAgcmV0dXJu
IGFkb3B0UmVmKCpuZXcgQXVkaW9CdWZmZXJTb3VyY2VOb2RlKGNvbnRleHQsIHNhbXBsZVJhdGUp
KTsKIH0KIAotQXVkaW9CdWZmZXJTb3VyY2VOb2RlOjpBdWRpb0J1ZmZlclNvdXJjZU5vZGUoQXVk
aW9Db250ZXh0JiBjb250ZXh0LCBmbG9hdCBzYW1wbGVSYXRlKQorQXVkaW9CdWZmZXJTb3VyY2VO
b2RlOjpBdWRpb0J1ZmZlclNvdXJjZU5vZGUoQXVkaW9Db250ZXh0QmFzZSYgY29udGV4dCwgZmxv
YXQgc2FtcGxlUmF0ZSkKICAgICA6IEF1ZGlvU2NoZWR1bGVkU291cmNlTm9kZShjb250ZXh0LCBz
YW1wbGVSYXRlKQogICAgICwgbV9idWZmZXIobnVsbHB0cikKICAgICAsIG1faXNMb29waW5nKGZh
bHNlKQpAQCAtNDEzLDcgKzQxMyw3IEBAIHZvaWQgQXVkaW9CdWZmZXJTb3VyY2VOb2RlOjpzZXRC
dWZmZXIoUmVmUHRyPEF1ZGlvQnVmZmVyPiYmIGJ1ZmZlcikKICAgICBERUJVR19MT0coTE9HSURF
TlRJRklFUik7CiAKICAgICAvLyBUaGUgY29udGV4dCBtdXN0IGJlIGxvY2tlZCBzaW5jZSBjaGFu
Z2luZyB0aGUgYnVmZmVyIGNhbiByZS1jb25maWd1cmUgdGhlIG51bWJlciBvZiBjaGFubmVscyB0
aGF0IGFyZSBvdXRwdXQuCi0gICAgQXVkaW9Db250ZXh0OjpBdXRvTG9ja2VyIGNvbnRleHRMb2Nr
ZXIoY29udGV4dCgpKTsKKyAgICBBdWRpb0NvbnRleHRCYXNlOjpBdXRvTG9ja2VyIGNvbnRleHRM
b2NrZXIoY29udGV4dCgpKTsKICAgICAKICAgICAvLyBUaGlzIHN5bmNocm9uaXplcyB3aXRoIHBy
b2Nlc3MoKS4KICAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG1fcHJvY2Vzc011dGV4KTsKQEAg
LTU1Nyw3ICs1NTcsNyBAQCBib29sIEF1ZGlvQnVmZmVyU291cmNlTm9kZTo6cHJvcGFnYXRlc1Np
bGVuY2UoKSBjb25zdAogICAgIHJldHVybiAhaXNQbGF5aW5nT3JTY2hlZHVsZWQoKSB8fCBoYXNG
aW5pc2hlZCgpIHx8ICFtX2J1ZmZlcjsKIH0KIAotdm9pZCBBdWRpb0J1ZmZlclNvdXJjZU5vZGU6
OnNldFBhbm5lck5vZGUoUGFubmVyTm9kZSogcGFubmVyTm9kZSkKK3ZvaWQgQXVkaW9CdWZmZXJT
b3VyY2VOb2RlOjpzZXRQYW5uZXJOb2RlKFBhbm5lck5vZGVCYXNlKiBwYW5uZXJOb2RlKQogewog
ICAgIGlmIChtX3Bhbm5lck5vZGUgIT0gcGFubmVyTm9kZSAmJiAhaGFzRmluaXNoZWQoKSkgewog
ICAgICAgICBpZiAocGFubmVyTm9kZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViYXVkaW8vQXVkaW9CdWZmZXJTb3VyY2VOb2RlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmF1ZGlvL0F1ZGlvQnVmZmVyU291cmNlTm9kZS5oCmluZGV4IDU0OGIyNmU3ZmE3Li42
MDExMzExOTlhNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9B
dWRpb0J1ZmZlclNvdXJjZU5vZGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1
ZGlvL0F1ZGlvQnVmZmVyU291cmNlTm9kZS5oCkBAIC0zMSw3ICszMSw3IEBACiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKIGNsYXNzIEF1ZGlvQnVmZmVyOwotY2xhc3MgUGFubmVyTm9kZTsKK2NsYXNz
IFBhbm5lck5vZGVCYXNlOwogCiAvLyBBdWRpb0J1ZmZlclNvdXJjZU5vZGUgaXMgYW4gQXVkaW9O
b2RlIHJlcHJlc2VudGluZyBhbiBhdWRpbyBzb3VyY2UgZnJvbSBhbiBpbi1tZW1vcnkgYXVkaW8g
YXNzZXQgcmVwcmVzZW50ZWQgYnkgYW4gQXVkaW9CdWZmZXIuCiAvLyBJdCBnZW5lcmFsbHkgd2ls
bCBiZSB1c2VkIGZvciBzaG9ydCBzb3VuZHMgd2hpY2ggcmVxdWlyZSBhIGhpZ2ggZGVncmVlIG9m
IHNjaGVkdWxpbmcgZmxleGliaWxpdHkgKGNhbiBwbGF5YmFjayBpbiByaHl0aG1pY2FsbHkgcGVy
ZmVjdCB3YXlzKS4KQEAgLTM5LDcgKzM5LDcgQEAgY2xhc3MgUGFubmVyTm9kZTsKIGNsYXNzIEF1
ZGlvQnVmZmVyU291cmNlTm9kZSBmaW5hbCA6IHB1YmxpYyBBdWRpb1NjaGVkdWxlZFNvdXJjZU5v
ZGUgewogICAgIFdURl9NQUtFX0lTT19BTExPQ0FURUQoQXVkaW9CdWZmZXJTb3VyY2VOb2RlKTsK
IHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPEF1ZGlvQnVmZmVyU291cmNlTm9kZT4gY3JlYXRlKEF1
ZGlvQ29udGV4dCYsIGZsb2F0IHNhbXBsZVJhdGUpOworICAgIHN0YXRpYyBSZWY8QXVkaW9CdWZm
ZXJTb3VyY2VOb2RlPiBjcmVhdGUoQXVkaW9Db250ZXh0QmFzZSYsIGZsb2F0IHNhbXBsZVJhdGUp
OwogCiAgICAgdmlydHVhbCB+QXVkaW9CdWZmZXJTb3VyY2VOb2RlKCk7CiAKQEAgLTc5LDcgKzc5
LDcgQEAgcHVibGljOgogICAgIEF1ZGlvUGFyYW0qIHBsYXliYWNrUmF0ZSgpIHsgcmV0dXJuIG1f
cGxheWJhY2tSYXRlLmdldCgpOyB9CiAKICAgICAvLyBJZiBhIHBhbm5lciBub2RlIGlzIHNldCwg
dGhlbiB3ZSBjYW4gaW5jb3Jwb3JhdGUgZG9wcGxlciBzaGlmdCBpbnRvIHRoZSBwbGF5YmFjayBw
aXRjaCByYXRlLgotICAgIHZvaWQgc2V0UGFubmVyTm9kZShQYW5uZXJOb2RlKik7CisgICAgdm9p
ZCBzZXRQYW5uZXJOb2RlKFBhbm5lck5vZGVCYXNlKik7CiAgICAgdm9pZCBjbGVhclBhbm5lck5v
ZGUoKTsKIAogICAgIC8vIElmIHdlIGFyZSBubyBsb25nZXIgcGxheWluZywgcHJvcG9nYXRlIHNp
bGVuY2UgYWhlYWQgdG8gZG93bnN0cmVhbSBub2Rlcy4KQEAgLTkxLDcgKzkxLDcgQEAgcHVibGlj
OgogICAgIGNvbnN0IGNoYXIqIGFjdGl2ZURPTU9iamVjdE5hbWUoKSBjb25zdCBvdmVycmlkZSB7
IHJldHVybiAiQXVkaW9CdWZmZXJTb3VyY2VOb2RlIjsgfQogCiBwcml2YXRlOgotICAgIEF1ZGlv
QnVmZmVyU291cmNlTm9kZShBdWRpb0NvbnRleHQmLCBmbG9hdCBzYW1wbGVSYXRlKTsKKyAgICBB
dWRpb0J1ZmZlclNvdXJjZU5vZGUoQXVkaW9Db250ZXh0QmFzZSYsIGZsb2F0IHNhbXBsZVJhdGUp
OwogCiAgICAgZG91YmxlIHRhaWxUaW1lKCkgY29uc3QgZmluYWwgeyByZXR1cm4gMDsgfQogICAg
IGRvdWJsZSBsYXRlbmN5VGltZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIDA7IH0KQEAgLTE0NSw3
ICsxNDUsNyBAQCBwcml2YXRlOgogCiAgICAgLy8gV2Ugb3B0aW9uYWxseSBrZWVwIHRyYWNrIG9m
IGEgcGFubmVyIG5vZGUgd2hpY2ggaGFzIGEgZG9wcGxlciBzaGlmdCB0aGF0IGlzIGluY29ycG9y
YXRlZCBpbnRvCiAgICAgLy8gdGhlIHBpdGNoIHJhdGUuIFdlIG1hbnVhbGx5IG1hbmFnZSByZWYt
Y291bnRpbmcgYmVjYXVzZSB3ZSB3YW50IHRvIHVzZSBSZWZUeXBlQ29ubmVjdGlvbi4KLSAgICBQ
YW5uZXJOb2RlKiBtX3Bhbm5lck5vZGU7CisgICAgUGFubmVyTm9kZUJhc2UqIG1fcGFubmVyTm9k
ZTsKIAogICAgIC8vIFRoaXMgc3luY2hyb25pemVzIHByb2Nlc3MoKSB3aXRoIHNldEJ1ZmZlcigp
IHdoaWNoIGNhbiBjYXVzZSBkeW5hbWljIGNoYW5uZWwgY291bnQgY2hhbmdlcy4KICAgICBtdXRh
YmxlIExvY2sgbV9wcm9jZXNzTXV0ZXg7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmF1ZGlvL0F1ZGlvQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmF1ZGlvL0F1ZGlvQ29udGV4dC5jcHAKaW5kZXggMzgyZGM3Y2YwY2QuLjRkYTBhMTQyMTFlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQ29udGV4dC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0NvbnRleHQuY3Bw
CkBAIC0xMDcsNyArMTA3LDcgQEAgY29uc3QgdW5zaWduZWQgTWF4UGVyaW9kaWNXYXZlTGVuZ3Ro
ID0gNDA5NjsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1XVEZfTUFLRV9JU09fQUxMT0NBVEVE
X0lNUEwoQXVkaW9Db250ZXh0KTsKK1dURl9NQUtFX0lTT19BTExPQ0FURURfSU1QTChBdWRpb0Nv
bnRleHRCYXNlKTsKIAogI2RlZmluZSBSRUxFQVNFX0xPR19JRl9BTExPV0VEKGZtdCwgLi4uKSBS
RUxFQVNFX0xPR19JRihkb2N1bWVudCgpICYmIGRvY3VtZW50KCktPnBhZ2UoKSAmJiBkb2N1bWVu
dCgpLT5wYWdlKCktPmlzQWx3YXlzT25Mb2dnaW5nQWxsb3dlZCgpLCBNZWRpYSwgIiVwIC0gQXVk
aW9Db250ZXh0OjoiIGZtdCwgdGhpcywgIyNfX1ZBX0FSR1NfXykKICAgICAKQEAgLTEzNyw5ICsx
MzcsMTQgQEAgRXhjZXB0aW9uT3I8UmVmPEF1ZGlvQ29udGV4dD4+IEF1ZGlvQ29udGV4dDo6Y3Jl
YXRlKERvY3VtZW50JiBkb2N1bWVudCkKICAgICByZXR1cm4gYXVkaW9Db250ZXh0OwogfQogCitB
dWRpb0NvbnRleHRCYXNlOjpBdWRpb0NvbnRleHRCYXNlKERvY3VtZW50JiBkb2N1bWVudCkKKyAg
ICA6IEFjdGl2ZURPTU9iamVjdChkb2N1bWVudCkKK3sKK30KKwogLy8gQ29uc3RydWN0b3IgZm9y
IHJlbmRlcmluZyB0byB0aGUgYXVkaW8gaGFyZHdhcmUuCiBBdWRpb0NvbnRleHQ6OkF1ZGlvQ29u
dGV4dChEb2N1bWVudCYgZG9jdW1lbnQpCi0gICAgOiBBY3RpdmVET01PYmplY3QoZG9jdW1lbnQp
CisgICAgOiBBdWRpb0NvbnRleHRCYXNlKGRvY3VtZW50KQogI2lmICFSRUxFQVNFX0xPR19ESVNB
QkxFRAogICAgICwgbV9sb2dnZXIoZG9jdW1lbnQubG9nZ2VyKCkpCiAgICAgLCBtX2xvZ0lkZW50
aWZpZXIodW5pcXVlTG9nSWRlbnRpZmllcigpKQpAQCAtMTY0LDcgKzE2OSw3IEBAIEF1ZGlvQ29u
dGV4dDo6QXVkaW9Db250ZXh0KERvY3VtZW50JiBkb2N1bWVudCkKIAogLy8gQ29uc3RydWN0b3Ig
Zm9yIG9mZmxpbmUgKG5vbi1yZWFsdGltZSkgcmVuZGVyaW5nLgogQXVkaW9Db250ZXh0OjpBdWRp
b0NvbnRleHQoRG9jdW1lbnQmIGRvY3VtZW50LCBBdWRpb0J1ZmZlciogcmVuZGVyVGFyZ2V0KQot
ICAgIDogQWN0aXZlRE9NT2JqZWN0KGRvY3VtZW50KQorICAgIDogQXVkaW9Db250ZXh0QmFzZShk
b2N1bWVudCkKICNpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKICAgICAsIG1fbG9nZ2VyKGRvY3Vt
ZW50LmxvZ2dlcigpKQogICAgICwgbV9sb2dJZGVudGlmaWVyKHVuaXF1ZUxvZ0lkZW50aWZpZXIo
KSkKQEAgLTM2Niw3ICszNzEsNyBAQCBjb25zdCBjaGFyKiBBdWRpb0NvbnRleHQ6OmFjdGl2ZURP
TU9iamVjdE5hbWUoKSBjb25zdAogICAgIHJldHVybiAiQXVkaW9Db250ZXh0IjsKIH0KIAotRG9j
dW1lbnQqIEF1ZGlvQ29udGV4dDo6ZG9jdW1lbnQoKSBjb25zdAorRG9jdW1lbnQqIEF1ZGlvQ29u
dGV4dEJhc2U6OmRvY3VtZW50KCkgY29uc3QKIHsKICAgICByZXR1cm4gZG93bmNhc3Q8RG9jdW1l
bnQ+KG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dCk7CiB9CkBAIC0xMDY4LDcgKzEwNzMsNyBAQCB2
b2lkIEF1ZGlvQ29udGV4dDo6cHJvY2Vzc0F1dG9tYXRpY1B1bGxOb2RlcyhzaXplX3QgZnJhbWVz
VG9Qcm9jZXNzKQogICAgICAgICBub2RlLT5wcm9jZXNzSWZOZWNlc3NhcnkoZnJhbWVzVG9Qcm9j
ZXNzKTsKIH0KIAotU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogQXVkaW9Db250ZXh0OjpzY3JpcHRF
eGVjdXRpb25Db250ZXh0KCkgY29uc3QKK1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIEF1ZGlvQ29u
dGV4dEJhc2U6OnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSBjb25zdAogewogICAgIHJldHVybiBB
Y3RpdmVET01PYmplY3Q6OnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0LmggYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQ29udGV4dC5oCmluZGV4IDhlMDk0Mzk0Y2Zm
Li5lMzI0Mzc1ZWRhOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRp
by9BdWRpb0NvbnRleHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1
ZGlvQ29udGV4dC5oCkBAIC0yOCw2ICsyOCw3IEBACiAjaW5jbHVkZSAiQWN0aXZlRE9NT2JqZWN0
LmgiCiAjaW5jbHVkZSAiQXN5bmNBdWRpb0RlY29kZXIuaCIKICNpbmNsdWRlICJBdWRpb0J1cy5o
IgorI2luY2x1ZGUgIkF1ZGlvQ29udGV4dFN0YXRlLmgiCiAjaW5jbHVkZSAiQXVkaW9EZXN0aW5h
dGlvbk5vZGUuaCIKICNpbmNsdWRlICJFdmVudFRhcmdldC5oIgogI2luY2x1ZGUgIk1lZGlhQ2Fu
U3RhcnRMaXN0ZW5lci5oIgpAQCAtNzksNDQgKzgwLDEzNiBAQCBjbGFzcyBXYXZlU2hhcGVyTm9k
ZTsKIAogdGVtcGxhdGU8dHlwZW5hbWUgSURMVHlwZT4gY2xhc3MgRE9NUHJvbWlzZURlZmVycmVk
OwogCi0vLyBBdWRpb0NvbnRleHQgaXMgdGhlIGNvcm5lcnN0b25lIG9mIHRoZSB3ZWIgYXVkaW8g
QVBJIGFuZCBhbGwgQXVkaW9Ob2RlcyBhcmUgY3JlYXRlZCBmcm9tIGl0LgotLy8gRm9yIHRocmVh
ZCBzYWZldHkgYmV0d2VlbiB0aGUgYXVkaW8gdGhyZWFkIGFuZCB0aGUgbWFpbiB0aHJlYWQsIGl0
IGhhcyBhIHJlbmRlcmluZyBncmFwaCBsb2NraW5nIG1lY2hhbmlzbS4gCi0KLWNsYXNzIEF1ZGlv
Q29udGV4dAorY2xhc3MgQXVkaW9Db250ZXh0QmFzZQogICAgIDogcHVibGljIEFjdGl2ZURPTU9i
amVjdAogICAgICwgcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPEF1ZGlvQ29udGV4dD4KICAg
ICAsIHB1YmxpYyBFdmVudFRhcmdldFdpdGhJbmxpbmVEYXRhCiAgICAgLCBwdWJsaWMgTWVkaWFD
YW5TdGFydExpc3RlbmVyCiAgICAgLCBwdWJsaWMgTWVkaWFQcm9kdWNlcgotICAgICwgcHJpdmF0
ZSBQbGF0Zm9ybU1lZGlhU2Vzc2lvbkNsaWVudAotICAgICwgcHJpdmF0ZSBWaXNpYmlsaXR5Q2hh
bmdlQ2xpZW50CiAjaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECi0gICAgLCBwcml2YXRlIExvZ2dl
ckhlbHBlcgorICAgICwgcHVibGljIExvZ2dlckhlbHBlcgorI2VuZGlmCit7CisgICAgV1RGX01B
S0VfSVNPX0FMTE9DQVRFRChBdWRpb0NvbnRleHRCYXNlKTsKK3B1YmxpYzoKKyAgICB2aXJ0dWFs
IH5BdWRpb0NvbnRleHRCYXNlKCkgPSBkZWZhdWx0OworCisgICAgLy8gUmVjb25jaWxlIHJlZi9k
ZXJlZiB3aGljaCBhcmUgZGVmaW5lZCBib3RoIGluIFRocmVhZFNhZmVSZWZDb3VudGVkIGFuZCBF
dmVudFRhcmdldC4KKyAgICB1c2luZyBUaHJlYWRTYWZlUmVmQ291bnRlZDo6cmVmOworICAgIHVz
aW5nIFRocmVhZFNhZmVSZWZDb3VudGVkOjpkZXJlZjsKKworICAgIERvY3VtZW50KiBkb2N1bWVu
dCgpIGNvbnN0OworCisgICAgdmlydHVhbCBib29sIGlzSW5pdGlhbGl6ZWQoKSBjb25zdCA9IDA7
CisKKyAgICB2aXJ0dWFsIHNpemVfdCBjdXJyZW50U2FtcGxlRnJhbWUoKSBjb25zdCA9IDA7Cisg
ICAgdmlydHVhbCBmbG9hdCBzYW1wbGVSYXRlKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgZG91
YmxlIGN1cnJlbnRUaW1lKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgYm9vbCBpc0dyYXBoT3du
ZXIoKSBjb25zdCA9IDA7CisKKyAgICB2aXJ0dWFsIHZvaWQgc2V0QXVkaW9UaHJlYWQoVGhyZWFk
JikgPSAwOworICAgIHZpcnR1YWwgYm9vbCBpc0F1ZGlvVGhyZWFkKCkgY29uc3QgPSAwOworICAg
IHZpcnR1YWwgYm9vbCBpc0F1ZGlvVGhyZWFkRmluaXNoZWQoKSA9IDA7CisKKyAgICB2aXJ0dWFs
IHZvaWQgaXNQbGF5aW5nQXVkaW9EaWRDaGFuZ2UoKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIG5v
ZGVXaWxsQmVnaW5QbGF5YmFjaygpID0gMDsKKworICAgIHZpcnR1YWwgdm9pZCBwb3N0VGFzayhX
VEY6OkZ1bmN0aW9uPHZvaWQoKT4mJikgPSAwOworICAgIHZpcnR1YWwgYm9vbCBpc1N0b3BwZWQo
KSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBjb25zdCBTZWN1cml0eU9yaWdpbiogb3JpZ2luKCkg
Y29uc3QgPSAwOworICAgIHZpcnR1YWwgdm9pZCBhZGRDb25zb2xlTWVzc2FnZShNZXNzYWdlU291
cmNlLCBNZXNzYWdlTGV2ZWwsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSkgPSAwOworCisgICAgdmly
dHVhbCB2b2lkIG1hcmtGb3JEZWxldGlvbihBdWRpb05vZGUmKSA9IDA7CisgICAgdmlydHVhbCB2
b2lkIGRlbGV0ZU1hcmtlZE5vZGVzKCkgPSAwOworCisgICAgdmlydHVhbCB2b2lkIGhhbmRsZVBy
ZVJlbmRlclRhc2tzKCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBoYW5kbGVQb3N0UmVuZGVyVGFz
a3MoKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHByb2Nlc3NBdXRvbWF0aWNQdWxsTm9kZXMoc2l6
ZV90IGZyYW1lc1RvUHJvY2VzcykgPSAwOworICAgIHZpcnR1YWwgdm9pZCBhZGREZWZlcnJlZEZp
bmlzaERlcmVmKEF1ZGlvTm9kZSopID0gMDsKKworICAgIHZpcnR1YWwgdm9pZCByZW1vdmVNYXJr
ZWRTdW1taW5nSnVuY3Rpb24oQXVkaW9TdW1taW5nSnVuY3Rpb24qKSA9IDA7CisgICAgdmlydHVh
bCB2b2lkIG1hcmtTdW1taW5nSnVuY3Rpb25EaXJ0eShBdWRpb1N1bW1pbmdKdW5jdGlvbiopID0g
MDsKKyAgICB2aXJ0dWFsIHZvaWQgbWFya0F1ZGlvTm9kZU91dHB1dERpcnR5KEF1ZGlvTm9kZU91
dHB1dCopID0gMDsKKworI2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRAorICAgIHZpcnR1YWwgY29u
c3Qgdm9pZCogbmV4dEF1ZGlvTm9kZUxvZ0lkZW50aWZpZXIoKSA9IDA7CisgICAgdmlydHVhbCBj
b25zdCB2b2lkKiBuZXh0QXVkaW9QYXJhbWV0ZXJMb2dJZGVudGlmaWVyKCkgPSAwOwogI2VuZGlm
CisKKyAgICB2aXJ0dWFsIHZvaWQgYWRkQXV0b21hdGljUHVsbE5vZGUoQXVkaW9Ob2RlJikgPSAw
OworICAgIHZpcnR1YWwgdm9pZCByZW1vdmVBdXRvbWF0aWNQdWxsTm9kZShBdWRpb05vZGUmKSA9
IDA7CisKKyAgICB2aXJ0dWFsIHZvaWQgbm90aWZ5Tm9kZUZpbmlzaGVkUHJvY2Vzc2luZyhBdWRp
b05vZGUqKSA9IDA7CisKKyAgICB2aXJ0dWFsIHZvaWQgZmluaXNoZWRSZW5kZXJpbmcoYm9vbCBk
aWRSZW5kZXJpbmcpID0gMDsKKworICAgIHZpcnR1YWwgdm9pZCBpbmNyZW1lbnRDb25uZWN0aW9u
Q291bnQoKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGluY3JlbWVudEFjdGl2ZVNvdXJjZUNvdW50
KCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBkZWNyZW1lbnRBY3RpdmVTb3VyY2VDb3VudCgpID0g
MDsKKworICAgIHZpcnR1YWwgYm9vbCBpc09mZmxpbmVDb250ZXh0KCkgY29uc3QgPSAwOworICAg
IHZpcnR1YWwgYm9vbCBpc0F1ZGlvQ29udGV4dCgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJv
b2wgaXNXZWJLaXRBdWRpb0NvbnRleHQoKSBjb25zdCA9IDA7CisKKyAgICAvLyBtdXN0UmVsZWFz
ZUxvY2sgaXMgc2V0IHRvIHRydWUgaWYgd2UgYWNxdWlyZWQgdGhlIGxvY2sgaW4gdGhpcyBtZXRo
b2QgY2FsbCBhbmQgY2FsbGVyIG11c3QgdW5sb2NrKCksIGZhbHNlIGlmIGl0IHdhcyBwcmV2aW91
c2x5IGFjcXVpcmVkLgorICAgIHZpcnR1YWwgdm9pZCBsb2NrKGJvb2wmIG11c3RSZWxlYXNlTG9j
aykgPSAwOworICAgIHZpcnR1YWwgYm9vbCB0cnlMb2NrKGJvb2wmIG11c3RSZWxlYXNlTG9jaykg
PSAwOworICAgIHZpcnR1YWwgdm9pZCB1bmxvY2soKSA9IDA7CisKKyAgICBjbGFzcyBBdXRvTG9j
a2VyIHsKKyAgICBwdWJsaWM6CisgICAgICAgIGV4cGxpY2l0IEF1dG9Mb2NrZXIoQXVkaW9Db250
ZXh0QmFzZSYgY29udGV4dCkKKyAgICAgICAgICAgIDogbV9jb250ZXh0KGNvbnRleHQpCisgICAg
ICAgIHsKKyAgICAgICAgICAgIG1fY29udGV4dC5sb2NrKG1fbXVzdFJlbGVhc2VMb2NrKTsKKyAg
ICAgICAgfQorCisgICAgICAgIH5BdXRvTG9ja2VyKCkKKyAgICAgICAgeworICAgICAgICAgICAg
aWYgKG1fbXVzdFJlbGVhc2VMb2NrKQorICAgICAgICAgICAgICAgIG1fY29udGV4dC51bmxvY2so
KTsKKyAgICAgICAgfQorCisgICAgcHJpdmF0ZToKKyAgICAgICAgQXVkaW9Db250ZXh0QmFzZSYg
bV9jb250ZXh0OworICAgICAgICBib29sIG1fbXVzdFJlbGVhc2VMb2NrOworICAgIH07CisKKyAg
ICAvLyBFdmVudFRhcmdldAorICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQoKSBjb25zdCBmaW5hbDsKKworcHJvdGVjdGVkOgorICAgIGV4cGxpY2l0IEF1
ZGlvQ29udGV4dEJhc2UoRG9jdW1lbnQmKTsKK307CisKKy8vIEF1ZGlvQ29udGV4dCBpcyB0aGUg
Y29ybmVyc3RvbmUgb2YgdGhlIHdlYiBhdWRpbyBBUEkgYW5kIGFsbCBBdWRpb05vZGVzIGFyZSBj
cmVhdGVkIGZyb20gaXQuCisvLyBGb3IgdGhyZWFkIHNhZmV0eSBiZXR3ZWVuIHRoZSBhdWRpbyB0
aHJlYWQgYW5kIHRoZSBtYWluIHRocmVhZCwgaXQgaGFzIGEgcmVuZGVyaW5nIGdyYXBoIGxvY2tp
bmcgbWVjaGFuaXNtLiAKKworY2xhc3MgQXVkaW9Db250ZXh0CisgICAgOiBwdWJsaWMgQXVkaW9D
b250ZXh0QmFzZQorICAgICwgcHJpdmF0ZSBQbGF0Zm9ybU1lZGlhU2Vzc2lvbkNsaWVudAorICAg
ICwgcHJpdmF0ZSBWaXNpYmlsaXR5Q2hhbmdlQ2xpZW50CiB7Ci0gICAgV1RGX01BS0VfSVNPX0FM
TE9DQVRFRChBdWRpb0NvbnRleHQpOwogcHVibGljOgogICAgIC8vIENyZWF0ZSBhbiBBdWRpb0Nv
bnRleHQgZm9yIHJlbmRlcmluZyB0byB0aGUgYXVkaW8gaGFyZHdhcmUuCiAgICAgc3RhdGljIEV4
Y2VwdGlvbk9yPFJlZjxBdWRpb0NvbnRleHQ+PiBjcmVhdGUoRG9jdW1lbnQmKTsKIAogICAgIHZp
cnR1YWwgfkF1ZGlvQ29udGV4dCgpOwogCi0gICAgYm9vbCBpc0luaXRpYWxpemVkKCkgY29uc3Q7
CisgICAgYm9vbCBpc0luaXRpYWxpemVkKCkgY29uc3QgZmluYWw7CiAgICAgCi0gICAgYm9vbCBp
c09mZmxpbmVDb250ZXh0KCkgY29uc3QgeyByZXR1cm4gbV9pc09mZmxpbmVDb250ZXh0OyB9Ci0K
LSAgICBEb2N1bWVudCogZG9jdW1lbnQoKSBjb25zdDsgLy8gQVNTRVJUcyBpZiBkb2N1bWVudCBu
byBsb25nZXIgZXhpc3RzLgorICAgIGJvb2wgaXNPZmZsaW5lQ29udGV4dCgpIGNvbnN0IGZpbmFs
IHsgcmV0dXJuIG1faXNPZmZsaW5lQ29udGV4dDsgfQogCiAgICAgRG9jdW1lbnRJZGVudGlmaWVy
IGhvc3RpbmdEb2N1bWVudElkZW50aWZpZXIoKSBjb25zdCBmaW5hbDsKIAogICAgIEF1ZGlvRGVz
dGluYXRpb25Ob2RlKiBkZXN0aW5hdGlvbigpIHsgcmV0dXJuIG1fZGVzdGluYXRpb25Ob2RlLmdl
dCgpOyB9Ci0gICAgc2l6ZV90IGN1cnJlbnRTYW1wbGVGcmFtZSgpIGNvbnN0IHsgcmV0dXJuIG1f
ZGVzdGluYXRpb25Ob2RlID8gbV9kZXN0aW5hdGlvbk5vZGUtPmN1cnJlbnRTYW1wbGVGcmFtZSgp
IDogMDsgfQotICAgIGRvdWJsZSBjdXJyZW50VGltZSgpIGNvbnN0IHsgcmV0dXJuIG1fZGVzdGlu
YXRpb25Ob2RlID8gbV9kZXN0aW5hdGlvbk5vZGUtPmN1cnJlbnRUaW1lKCkgOiAwLjsgfQotICAg
IGZsb2F0IHNhbXBsZVJhdGUoKSBjb25zdCB7IHJldHVybiBtX2Rlc3RpbmF0aW9uTm9kZSA/IG1f
ZGVzdGluYXRpb25Ob2RlLT5zYW1wbGVSYXRlKCkgOiAwLmY7IH0KKyAgICBzaXplX3QgY3VycmVu
dFNhbXBsZUZyYW1lKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9kZXN0aW5hdGlvbk5vZGUgPyBt
X2Rlc3RpbmF0aW9uTm9kZS0+Y3VycmVudFNhbXBsZUZyYW1lKCkgOiAwOyB9CisgICAgZG91Ymxl
IGN1cnJlbnRUaW1lKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9kZXN0aW5hdGlvbk5vZGUgPyBt
X2Rlc3RpbmF0aW9uTm9kZS0+Y3VycmVudFRpbWUoKSA6IDAuOyB9CisgICAgZmxvYXQgc2FtcGxl
UmF0ZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fZGVzdGluYXRpb25Ob2RlID8gbV9kZXN0aW5h
dGlvbk5vZGUtPnNhbXBsZVJhdGUoKSA6IDAuZjsgfQogICAgIHVuc2lnbmVkIGxvbmcgYWN0aXZl
U291cmNlQ291bnQoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDx1bnNpZ25lZCBsb25nPiht
X2FjdGl2ZVNvdXJjZUNvdW50KTsgfQogCi0gICAgdm9pZCBpbmNyZW1lbnRBY3RpdmVTb3VyY2VD
b3VudCgpOwotICAgIHZvaWQgZGVjcmVtZW50QWN0aXZlU291cmNlQ291bnQoKTsKKyAgICB2b2lk
IGluY3JlbWVudEFjdGl2ZVNvdXJjZUNvdW50KCkgZmluYWw7CisgICAgdm9pZCBkZWNyZW1lbnRB
Y3RpdmVTb3VyY2VDb3VudCgpIGZpbmFsOwogICAgIAogICAgIEV4Y2VwdGlvbk9yPFJlZjxBdWRp
b0J1ZmZlcj4+IGNyZWF0ZUJ1ZmZlcih1bnNpZ25lZCBudW1iZXJPZkNoYW5uZWxzLCBzaXplX3Qg
bnVtYmVyT2ZGcmFtZXMsIGZsb2F0IHNhbXBsZVJhdGUpOwogICAgIEV4Y2VwdGlvbk9yPFJlZjxB
dWRpb0J1ZmZlcj4+IGNyZWF0ZUJ1ZmZlcihBcnJheUJ1ZmZlciYsIGJvb2wgbWl4VG9Nb25vKTsK
QEAgLTEzMCw3ICsyMjMsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCByZXN1bWVSZW5kZXJpbmcoRE9N
UHJvbWlzZURlZmVycmVkPHZvaWQ+JiYpOwogICAgIHZvaWQgY2xvc2UoRE9NUHJvbWlzZURlZmVy
cmVkPHZvaWQ+JiYpOwogCi0gICAgZW51bSBjbGFzcyBTdGF0ZSB7IFN1c3BlbmRlZCwgUnVubmlu
ZywgSW50ZXJydXB0ZWQsIENsb3NlZCB9OworICAgIHVzaW5nIFN0YXRlID0gQXVkaW9Db250ZXh0
U3RhdGU7CiAgICAgU3RhdGUgc3RhdGUoKSBjb25zdDsKICAgICBib29sIGlzQ2xvc2VkKCkgY29u
c3QgeyByZXR1cm4gbV9zdGF0ZSA9PSBTdGF0ZTo6Q2xvc2VkOyB9CiAKQEAgLTE2MCwzMSArMjUz
LDMxIEBAIHB1YmxpYzoKICAgICBFeGNlcHRpb25PcjxSZWY8UGVyaW9kaWNXYXZlPj4gY3JlYXRl
UGVyaW9kaWNXYXZlKEZsb2F0MzJBcnJheSYgcmVhbCwgRmxvYXQzMkFycmF5JiBpbWFnaW5hcnkp
OwogCiAgICAgLy8gV2hlbiBhIHNvdXJjZSBub2RlIGhhcyBubyBtb3JlIHByb2Nlc3NpbmcgdG8g
ZG8gKGhhcyBmaW5pc2hlZCBwbGF5aW5nKSwgdGhlbiBpdCB0ZWxscyB0aGUgY29udGV4dCB0byBk
ZXJlZmVyZW5jZSBpdC4KLSAgICB2b2lkIG5vdGlmeU5vZGVGaW5pc2hlZFByb2Nlc3NpbmcoQXVk
aW9Ob2RlKik7CisgICAgdm9pZCBub3RpZnlOb2RlRmluaXNoZWRQcm9jZXNzaW5nKEF1ZGlvTm9k
ZSopIGZpbmFsOwogCiAgICAgLy8gQ2FsbGVkIGF0IHRoZSBzdGFydCBvZiBlYWNoIHJlbmRlciBx
dWFudHVtLgotICAgIHZvaWQgaGFuZGxlUHJlUmVuZGVyVGFza3MoKTsKKyAgICB2b2lkIGhhbmRs
ZVByZVJlbmRlclRhc2tzKCkgZmluYWw7CiAKICAgICAvLyBDYWxsZWQgYXQgdGhlIGVuZCBvZiBl
YWNoIHJlbmRlciBxdWFudHVtLgotICAgIHZvaWQgaGFuZGxlUG9zdFJlbmRlclRhc2tzKCk7Cisg
ICAgdm9pZCBoYW5kbGVQb3N0UmVuZGVyVGFza3MoKSBmaW5hbDsKIAogICAgIC8vIENhbGxlZCBw
ZXJpb2RpY2FsbHkgYXQgdGhlIGVuZCBvZiBlYWNoIHJlbmRlciBxdWFudHVtIHRvIGRlcmVmZXJl
bmNlIGZpbmlzaGVkIHNvdXJjZSBub2Rlcy4KICAgICB2b2lkIGRlcmVmRmluaXNoZWRTb3VyY2VO
b2RlcygpOwogCiAgICAgLy8gV2Ugc2NoZWR1bGUgZGVsZXRpb24gb2YgYWxsIG1hcmtlZCBub2Rl
cyBhdCB0aGUgZW5kIG9mIGVhY2ggcmVhbHRpbWUgcmVuZGVyIHF1YW50dW0uCi0gICAgdm9pZCBt
YXJrRm9yRGVsZXRpb24oQXVkaW9Ob2RlJik7Ci0gICAgdm9pZCBkZWxldGVNYXJrZWROb2Rlcygp
OworICAgIHZvaWQgbWFya0ZvckRlbGV0aW9uKEF1ZGlvTm9kZSYpIGZpbmFsOworICAgIHZvaWQg
ZGVsZXRlTWFya2VkTm9kZXMoKSBmaW5hbDsKIAogICAgIC8vIEF1ZGlvQ29udGV4dCBjYW4gcHVs
bCBub2RlKHMpIGF0IHRoZSBlbmQgb2YgZWFjaCByZW5kZXIgcXVhbnR1bSBldmVuIHdoZW4gdGhl
eSBhcmUgbm90IGNvbm5lY3RlZCB0byBhbnkgZG93bnN0cmVhbSBub2Rlcy4KICAgICAvLyBUaGVz
ZSB0d28gbWV0aG9kcyBhcmUgY2FsbGVkIGJ5IHRoZSBub2RlcyB3aG8gd2FudCB0byBhZGQvcmVt
b3ZlIHRoZW1zZWx2ZXMgaW50by9mcm9tIHRoZSBhdXRvbWF0aWMgcHVsbCBsaXN0cy4KLSAgICB2
b2lkIGFkZEF1dG9tYXRpY1B1bGxOb2RlKEF1ZGlvTm9kZSYpOwotICAgIHZvaWQgcmVtb3ZlQXV0
b21hdGljUHVsbE5vZGUoQXVkaW9Ob2RlJik7CisgICAgdm9pZCBhZGRBdXRvbWF0aWNQdWxsTm9k
ZShBdWRpb05vZGUmKSBmaW5hbDsKKyAgICB2b2lkIHJlbW92ZUF1dG9tYXRpY1B1bGxOb2RlKEF1
ZGlvTm9kZSYpIGZpbmFsOwogCiAgICAgLy8gQ2FsbGVkIHJpZ2h0IGJlZm9yZSBoYW5kbGVQb3N0
UmVuZGVyVGFza3MoKSB0byBoYW5kbGUgbm9kZXMgd2hpY2ggbmVlZCB0byBiZSBwdWxsZWQgZXZl
biB3aGVuIHRoZXkgYXJlIG5vdCBjb25uZWN0ZWQgdG8gYW55dGhpbmcuCi0gICAgdm9pZCBwcm9j
ZXNzQXV0b21hdGljUHVsbE5vZGVzKHNpemVfdCBmcmFtZXNUb1Byb2Nlc3MpOworICAgIHZvaWQg
cHJvY2Vzc0F1dG9tYXRpY1B1bGxOb2RlcyhzaXplX3QgZnJhbWVzVG9Qcm9jZXNzKSBmaW5hbDsK
IAogICAgIC8vIEtlZXBzIHRyYWNrIG9mIHRoZSBudW1iZXIgb2YgY29ubmVjdGlvbnMgbWFkZS4K
LSAgICB2b2lkIGluY3JlbWVudENvbm5lY3Rpb25Db3VudCgpCisgICAgdm9pZCBpbmNyZW1lbnRD
b25uZWN0aW9uQ291bnQoKSBmaW5hbAogICAgIHsKICAgICAgICAgQVNTRVJUKGlzTWFpblRocmVh
ZCgpKTsKICAgICAgICAgbV9jb25uZWN0aW9uQ291bnQrKzsKQEAgLTE5Niw2OSArMjg5LDQ2IEBA
IHB1YmxpYzoKICAgICAvLyBUaHJlYWQgU2FmZXR5IGFuZCBHcmFwaCBMb2NraW5nOgogICAgIC8v
CiAgICAgCi0gICAgdm9pZCBzZXRBdWRpb1RocmVhZChUaHJlYWQmIHRocmVhZCkgeyBtX2F1ZGlv
VGhyZWFkID0gJnRocmVhZDsgfSAvLyBGSVhNRTogY2hlY2sgZWl0aGVyIG5vdCBpbml0aWFsaXpl
ZCBvciB0aGUgc2FtZQorICAgIHZvaWQgc2V0QXVkaW9UaHJlYWQoVGhyZWFkJiB0aHJlYWQpIGZp
bmFsIHsgbV9hdWRpb1RocmVhZCA9ICZ0aHJlYWQ7IH0gLy8gRklYTUU6IGNoZWNrIGVpdGhlciBu
b3QgaW5pdGlhbGl6ZWQgb3IgdGhlIHNhbWUKICAgICBUaHJlYWQqIGF1ZGlvVGhyZWFkKCkgY29u
c3QgeyByZXR1cm4gbV9hdWRpb1RocmVhZDsgfQotICAgIGJvb2wgaXNBdWRpb1RocmVhZCgpIGNv
bnN0OworICAgIGJvb2wgaXNBdWRpb1RocmVhZCgpIGNvbnN0IGZpbmFsOwogCiAgICAgLy8gUmV0
dXJucyB0cnVlIG9ubHkgYWZ0ZXIgdGhlIGF1ZGlvIHRocmVhZCBoYXMgYmVlbiBzdGFydGVkIGFu
ZCB0aGVuIHNodXRkb3duLgotICAgIGJvb2wgaXNBdWRpb1RocmVhZEZpbmlzaGVkKCkgeyByZXR1
cm4gbV9pc0F1ZGlvVGhyZWFkRmluaXNoZWQ7IH0KKyAgICBib29sIGlzQXVkaW9UaHJlYWRGaW5p
c2hlZCgpIGZpbmFsIHsgcmV0dXJuIG1faXNBdWRpb1RocmVhZEZpbmlzaGVkOyB9CiAgICAgCiAg
ICAgLy8gbXVzdFJlbGVhc2VMb2NrIGlzIHNldCB0byB0cnVlIGlmIHdlIGFjcXVpcmVkIHRoZSBs
b2NrIGluIHRoaXMgbWV0aG9kIGNhbGwgYW5kIGNhbGxlciBtdXN0IHVubG9jaygpLCBmYWxzZSBp
ZiBpdCB3YXMgcHJldmlvdXNseSBhY3F1aXJlZC4KLSAgICB2b2lkIGxvY2soYm9vbCYgbXVzdFJl
bGVhc2VMb2NrKTsKKyAgICB2b2lkIGxvY2soYm9vbCYgbXVzdFJlbGVhc2VMb2NrKSBmaW5hbDsK
IAogICAgIC8vIFJldHVybnMgdHJ1ZSBpZiB3ZSBvd24gdGhlIGxvY2suCiAgICAgLy8gbXVzdFJl
bGVhc2VMb2NrIGlzIHNldCB0byB0cnVlIGlmIHdlIGFjcXVpcmVkIHRoZSBsb2NrIGluIHRoaXMg
bWV0aG9kIGNhbGwgYW5kIGNhbGxlciBtdXN0IHVubG9jaygpLCBmYWxzZSBpZiBpdCB3YXMgcHJl
dmlvdXNseSBhY3F1aXJlZC4KLSAgICBib29sIHRyeUxvY2soYm9vbCYgbXVzdFJlbGVhc2VMb2Nr
KTsKKyAgICBib29sIHRyeUxvY2soYm9vbCYgbXVzdFJlbGVhc2VMb2NrKSBmaW5hbDsKIAotICAg
IHZvaWQgdW5sb2NrKCk7CisgICAgdm9pZCB1bmxvY2soKSBmaW5hbDsKIAogICAgIC8vIFJldHVy
bnMgdHJ1ZSBpZiB0aGlzIHRocmVhZCBvd25zIHRoZSBjb250ZXh0J3MgbG9jay4KLSAgICBib29s
IGlzR3JhcGhPd25lcigpIGNvbnN0OworICAgIGJvb2wgaXNHcmFwaE93bmVyKCkgY29uc3QgZmlu
YWw7CiAKICAgICAvLyBSZXR1cm5zIHRoZSBtYXhpbXVtIG51bWJlciBvZiBjaGFubmVscyB3ZSBj
YW4gc3VwcG9ydC4KICAgICBzdGF0aWMgdW5zaWduZWQgbWF4TnVtYmVyT2ZDaGFubmVscygpIHsg
cmV0dXJuIE1heE51bWJlck9mQ2hhbm5lbHM7IH0KLQotICAgIGNsYXNzIEF1dG9Mb2NrZXIgewot
ICAgIHB1YmxpYzoKLSAgICAgICAgZXhwbGljaXQgQXV0b0xvY2tlcihBdWRpb0NvbnRleHQmIGNv
bnRleHQpCi0gICAgICAgICAgICA6IG1fY29udGV4dChjb250ZXh0KQotICAgICAgICB7Ci0gICAg
ICAgICAgICBtX2NvbnRleHQubG9jayhtX211c3RSZWxlYXNlTG9jayk7Ci0gICAgICAgIH0KLSAg
ICAgICAgCi0gICAgICAgIH5BdXRvTG9ja2VyKCkKLSAgICAgICAgewotICAgICAgICAgICAgaWYg
KG1fbXVzdFJlbGVhc2VMb2NrKQotICAgICAgICAgICAgICAgIG1fY29udGV4dC51bmxvY2soKTsK
LSAgICAgICAgfQotCi0gICAgcHJpdmF0ZToKLSAgICAgICAgQXVkaW9Db250ZXh0JiBtX2NvbnRl
eHQ7Ci0gICAgICAgIGJvb2wgbV9tdXN0UmVsZWFzZUxvY2s7Ci0gICAgfTsKICAgICAKICAgICAv
LyBJbiBBdWRpb05vZGU6OmRlcmVmKCkgYSB0cnlMb2NrKCkgaXMgdXNlZCBmb3IgY2FsbGluZyBm
aW5pc2hEZXJlZigpLCBidXQgaWYgaXQgZmFpbHMga2VlcCB0cmFjayBoZXJlLgotICAgIHZvaWQg
YWRkRGVmZXJyZWRGaW5pc2hEZXJlZihBdWRpb05vZGUqKTsKKyAgICB2b2lkIGFkZERlZmVycmVk
RmluaXNoRGVyZWYoQXVkaW9Ob2RlKikgZmluYWw7CiAKICAgICAvLyBJbiB0aGUgYXVkaW8gdGhy
ZWFkIGF0IHRoZSBzdGFydCBvZiBlYWNoIHJlbmRlciBjeWNsZSwgd2UnbGwgY2FsbCBoYW5kbGVE
ZWZlcnJlZEZpbmlzaERlcmVmcygpLgogICAgIHZvaWQgaGFuZGxlRGVmZXJyZWRGaW5pc2hEZXJl
ZnMoKTsKIAogICAgIC8vIE9ubHkgYWNjZXNzZWQgd2hlbiB0aGUgZ3JhcGggbG9jayBpcyBoZWxk
LgotICAgIHZvaWQgbWFya1N1bW1pbmdKdW5jdGlvbkRpcnR5KEF1ZGlvU3VtbWluZ0p1bmN0aW9u
Kik7Ci0gICAgdm9pZCBtYXJrQXVkaW9Ob2RlT3V0cHV0RGlydHkoQXVkaW9Ob2RlT3V0cHV0Kik7
CisgICAgdm9pZCBtYXJrU3VtbWluZ0p1bmN0aW9uRGlydHkoQXVkaW9TdW1taW5nSnVuY3Rpb24q
KSBmaW5hbDsKKyAgICB2b2lkIG1hcmtBdWRpb05vZGVPdXRwdXREaXJ0eShBdWRpb05vZGVPdXRw
dXQqKSBmaW5hbDsKIAogICAgIC8vIE11c3QgYmUgY2FsbGVkIG9uIG1haW4gdGhyZWFkLgotICAg
IHZvaWQgcmVtb3ZlTWFya2VkU3VtbWluZ0p1bmN0aW9uKEF1ZGlvU3VtbWluZ0p1bmN0aW9uKik7
CisgICAgdm9pZCByZW1vdmVNYXJrZWRTdW1taW5nSnVuY3Rpb24oQXVkaW9TdW1taW5nSnVuY3Rp
b24qKSBmaW5hbDsKIAogICAgIC8vIEV2ZW50VGFyZ2V0CiAgICAgRXZlbnRUYXJnZXRJbnRlcmZh
Y2UgZXZlbnRUYXJnZXRJbnRlcmZhY2UoKSBjb25zdCBmaW5hbCB7IHJldHVybiBBdWRpb0NvbnRl
eHRFdmVudFRhcmdldEludGVyZmFjZVR5cGU7IH0KIAotICAgIC8vIFJlY29uY2lsZSByZWYvZGVy
ZWYgd2hpY2ggYXJlIGRlZmluZWQgYm90aCBpbiBUaHJlYWRTYWZlUmVmQ291bnRlZCBhbmQgRXZl
bnRUYXJnZXQuCi0gICAgdXNpbmcgVGhyZWFkU2FmZVJlZkNvdW50ZWQ6OnJlZjsKLSAgICB1c2lu
ZyBUaHJlYWRTYWZlUmVmQ291bnRlZDo6ZGVyZWY7Ci0KICAgICB2b2lkIHN0YXJ0UmVuZGVyaW5n
KCk7Ci0gICAgdm9pZCBmaW5pc2hlZFJlbmRlcmluZyhib29sIGRpZFJlbmRlcmluZyk7CisgICAg
dm9pZCBmaW5pc2hlZFJlbmRlcmluZyhib29sIGRpZFJlbmRlcmluZykgZmluYWw7CiAKICAgICBz
dGF0aWMgdW5zaWduZWQgc19oYXJkd2FyZUNvbnRleHRDb3VudDsKIApAQCAtMjc0LDI1ICszNDQs
MjIgQEAgcHVibGljOgogICAgIHZvaWQgYWRkQmVoYXZpb3JSZXN0cmljdGlvbihCZWhhdmlvclJl
c3RyaWN0aW9ucyByZXN0cmljdGlvbikgeyBtX3Jlc3RyaWN0aW9ucyB8PSByZXN0cmljdGlvbjsg
fQogICAgIHZvaWQgcmVtb3ZlQmVoYXZpb3JSZXN0cmljdGlvbihCZWhhdmlvclJlc3RyaWN0aW9u
cyByZXN0cmljdGlvbikgeyBtX3Jlc3RyaWN0aW9ucyAmPSB+cmVzdHJpY3Rpb247IH0KIAotICAg
IHZvaWQgaXNQbGF5aW5nQXVkaW9EaWRDaGFuZ2UoKTsKKyAgICB2b2lkIGlzUGxheWluZ0F1ZGlv
RGlkQ2hhbmdlKCkgZmluYWw7CiAKLSAgICB2b2lkIG5vZGVXaWxsQmVnaW5QbGF5YmFjaygpOwor
ICAgIHZvaWQgbm9kZVdpbGxCZWdpblBsYXliYWNrKCkgZmluYWw7CiAKICNpZiAhUkVMRUFTRV9M
T0dfRElTQUJMRUQKICAgICBjb25zdCBMb2dnZXImIGxvZ2dlcigpIGNvbnN0IGZpbmFsIHsgcmV0
dXJuIG1fbG9nZ2VyLmdldCgpOyB9CiAgICAgY29uc3Qgdm9pZCogbG9nSWRlbnRpZmllcigpIGNv
bnN0IGZpbmFsIHsgcmV0dXJuIG1fbG9nSWRlbnRpZmllcjsgfQogICAgIFdURkxvZ0NoYW5uZWwm
IGxvZ0NoYW5uZWwoKSBjb25zdCBmaW5hbDsKLSAgICBjb25zdCB2b2lkKiBuZXh0QXVkaW9Ob2Rl
TG9nSWRlbnRpZmllcigpIHsgcmV0dXJuIGNoaWxkTG9nSWRlbnRpZmllcihtX2xvZ0lkZW50aWZp
ZXIsICsrbV9uZXh0QXVkaW9Ob2RlSWRlbnRpZmllcik7IH0KLSAgICBjb25zdCB2b2lkKiBuZXh0
QXVkaW9QYXJhbWV0ZXJMb2dJZGVudGlmaWVyKCkgeyByZXR1cm4gY2hpbGRMb2dJZGVudGlmaWVy
KG1fbG9nSWRlbnRpZmllciwgKyttX25leHRBdWRpb1BhcmFtZXRlcklkZW50aWZpZXIpOyB9Cisg
ICAgY29uc3Qgdm9pZCogbmV4dEF1ZGlvTm9kZUxvZ0lkZW50aWZpZXIoKSBmaW5hbCB7IHJldHVy
biBjaGlsZExvZ0lkZW50aWZpZXIobV9sb2dJZGVudGlmaWVyLCArK21fbmV4dEF1ZGlvTm9kZUlk
ZW50aWZpZXIpOyB9CisgICAgY29uc3Qgdm9pZCogbmV4dEF1ZGlvUGFyYW1ldGVyTG9nSWRlbnRp
ZmllcigpIGZpbmFsIHsgcmV0dXJuIGNoaWxkTG9nSWRlbnRpZmllcihtX2xvZ0lkZW50aWZpZXIs
ICsrbV9uZXh0QXVkaW9QYXJhbWV0ZXJJZGVudGlmaWVyKTsgfQogI2VuZGlmCiAKLSAgICB2b2lk
IHBvc3RUYXNrKFdURjo6RnVuY3Rpb248dm9pZCgpPiYmKTsKLSAgICBib29sIGlzU3RvcHBlZCgp
IGNvbnN0IHsgcmV0dXJuIG1faXNTdG9wU2NoZWR1bGVkOyB9Ci0gICAgY29uc3QgU2VjdXJpdHlP
cmlnaW4qIG9yaWdpbigpIGNvbnN0OwotICAgIHZvaWQgYWRkQ29uc29sZU1lc3NhZ2UoTWVzc2Fn
ZVNvdXJjZSwgTWVzc2FnZUxldmVsLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UpOwotCi0gICAgLy8g
RXZlbnRUYXJnZXQKLSAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25D
b250ZXh0KCkgY29uc3QgZmluYWw7CisgICAgdm9pZCBwb3N0VGFzayhXVEY6OkZ1bmN0aW9uPHZv
aWQoKT4mJikgZmluYWw7CisgICAgYm9vbCBpc1N0b3BwZWQoKSBjb25zdCBmaW5hbCB7IHJldHVy
biBtX2lzU3RvcFNjaGVkdWxlZDsgfQorICAgIGNvbnN0IFNlY3VyaXR5T3JpZ2luKiBvcmlnaW4o
KSBjb25zdCBmaW5hbDsKKyAgICB2b2lkIGFkZENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VTb3VyY2Us
IE1lc3NhZ2VMZXZlbCwgY29uc3QgU3RyaW5nJiBtZXNzYWdlKSBmaW5hbDsKIAogcHJvdGVjdGVk
OgogICAgIGV4cGxpY2l0IEF1ZGlvQ29udGV4dChEb2N1bWVudCYpOwpAQCAtMzYwLDYgKzQyNyw5
IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIHZpc2liaWxpdHlTdGF0ZUNoYW5nZWQoKSBmaW5hbDsK
IAorICAgIGJvb2wgaXNBdWRpb0NvbnRleHQoKSBjb25zdCBmaW5hbCB7IHJldHVybiB0cnVlOyB9
CisgICAgYm9vbCBpc1dlYktpdEF1ZGlvQ29udGV4dCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIGZh
bHNlOyB9CisKICAgICAvLyBFdmVudFRhcmdldAogICAgIHZvaWQgcmVmRXZlbnRUYXJnZXQoKSBv
dmVycmlkZSB7IHJlZigpOyB9CiAgICAgdm9pZCBkZXJlZkV2ZW50VGFyZ2V0KCkgb3ZlcnJpZGUg
eyBkZXJlZigpOyB9CkBAIC00NDYsMjEgKzUxNiwxMyBAQCBwcml2YXRlOgogICAgIFJlZlB0cjxQ
ZW5kaW5nQWN0aXZpdHk8QXVkaW9Db250ZXh0Pj4gbV9wZW5kaW5nQWN0aXZpdHk7CiB9OwogCi0v
LyBGSVhNRTogRmluZCBvdXQgd2h5IHRoZXNlID09LyE9IGZ1bmN0aW9ucyBhcmUgbmVlZGVkIGFu
ZCByZW1vdmUgdGhlbSBpZiBwb3NzaWJsZS4KLQotaW5saW5lIGJvb2wgb3BlcmF0b3I9PShjb25z
dCBBdWRpb0NvbnRleHQmIGxocywgY29uc3QgQXVkaW9Db250ZXh0JiByaHMpCi17Ci0gICAgcmV0
dXJuICZsaHMgPT0gJnJoczsKLX0KLQotaW5saW5lIGJvb2wgb3BlcmF0b3IhPShjb25zdCBBdWRp
b0NvbnRleHQmIGxocywgY29uc3QgQXVkaW9Db250ZXh0JiByaHMpCi17Ci0gICAgcmV0dXJuICZs
aHMgIT0gJnJoczsKLX0KLQogaW5saW5lIEF1ZGlvQ29udGV4dDo6U3RhdGUgQXVkaW9Db250ZXh0
OjpzdGF0ZSgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1fc3RhdGU7CiB9CiAKIH0gLy8gV2ViQ29y
ZQorCitTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0JFR0lOKFdlYkNvcmU6OkF1ZGlvQ29udGV4dCkK
KyAgICBzdGF0aWMgYm9vbCBpc1R5cGUoY29uc3QgV2ViQ29yZTo6QXVkaW9Db250ZXh0QmFzZSYg
Y29udGV4dCkgeyByZXR1cm4gY29udGV4dC5pc0F1ZGlvQ29udGV4dCgpOyB9CitTUEVDSUFMSVpF
X1RZUEVfVFJBSVRTX0VORCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmF1ZGlvL0F1ZGlvQ29udGV4dC5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlv
L0F1ZGlvQ29udGV4dC5pZGwKaW5kZXggMTIxMjRhMzY3NzcuLjgzZGIzYjRkNmIxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQ29udGV4dC5pZGwKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0NvbnRleHQuaWRsCkBAIC0y
MywyMiArMjMsMTQgQEAKICAqIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLWVudW0gQXVkaW9Db250ZXh0U3RhdGUgewot
ICAgICJzdXNwZW5kZWQiLAotICAgICJydW5uaW5nIiwKLSAgICAiaW50ZXJydXB0ZWQiLAotICAg
ICJjbG9zZWQiCi19OwotCiBbCiAgICAgQWN0aXZlRE9NT2JqZWN0LAogICAgIENvbmRpdGlvbmFs
PVdFQl9BVURJTywKICAgICBDb25zdHJ1Y3RvciwKICAgICBDb25zdHJ1Y3RvckNhbGxXaXRoPURv
Y3VtZW50LAogICAgIENvbnN0cnVjdG9yTWF5VGhyb3dFeGNlcHRpb24sCi0gICAgRW5hYmxlZEJ5
U2V0dGluZz1XZWJBdWRpbywKKyAgICBFbmFibGVkQnlTZXR0aW5nPU1vZGVyblVucHJlZml4ZWRX
ZWJBdWRpbywKICAgICBFeHBvcnRNYWNybz1XRUJDT1JFX0VYUE9SVCwKLSAgICBJbnRlcmZhY2VO
YW1lPXdlYmtpdEF1ZGlvQ29udGV4dCwKIF0gaW50ZXJmYWNlIEF1ZGlvQ29udGV4dCA6IEV2ZW50
VGFyZ2V0IHsKICAgICAvLyBBbGwgcmVuZGVyZWQgYXVkaW8gdWx0aW1hdGVseSBjb25uZWN0cyB0
byBkZXN0aW5hdGlvbiwgd2hpY2ggcmVwcmVzZW50cyB0aGUgYXVkaW8gaGFyZHdhcmUuCiAgICAg
cmVhZG9ubHkgYXR0cmlidXRlIEF1ZGlvRGVzdGluYXRpb25Ob2RlIGRlc3RpbmF0aW9uOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0NvbnRleHRTdGF0
ZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0NvbnRleHRTdGF0ZS5o
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi4xNjAxMzExMDhmYQotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250
ZXh0U3RhdGUuaApAQCAtMCwwICsxLDMyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIEdv
b2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYtMjAy
MCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUK
KyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTgorICogQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTCisgKiBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UK
KworbmFtZXNwYWNlIFdlYkNvcmUgeworCitlbnVtIGNsYXNzIEF1ZGlvQ29udGV4dFN0YXRlIHsg
U3VzcGVuZGVkLCBSdW5uaW5nLCBJbnRlcnJ1cHRlZCwgQ2xvc2VkIH07CisKK30KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0U3RhdGUuaWRs
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0NvbnRleHRTdGF0ZS5pZGwK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLmM4ZDA4YmQyYjU2Ci0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0NvbnRl
eHRTdGF0ZS5pZGwKQEAgLTAsMCArMSwzMSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCwg
R29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMSBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAq
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTgorICogQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
KyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTCisgKiBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCitlbnVtIEF1ZGlvQ29udGV4
dFN0YXRlIHsKKyAgICAic3VzcGVuZGVkIiwKKyAgICAicnVubmluZyIsCisgICAgImludGVycnVw
dGVkIiwKKyAgICAiY2xvc2VkIgorfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViYXVkaW8vQXVkaW9EZXN0aW5hdGlvbk5vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJhdWRpby9BdWRpb0Rlc3RpbmF0aW9uTm9kZS5jcHAKaW5kZXggZDlhYmI5Nzc3YTku
LjY3NzYxN2VjYjMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlv
L0F1ZGlvRGVzdGluYXRpb25Ob2RlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmF1ZGlvL0F1ZGlvRGVzdGluYXRpb25Ob2RlLmNwcApAQCAtMzksNyArMzksNyBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAgICAgCiBXVEZfTUFLRV9JU09fQUxMT0NBVEVEX0lNUEwoQXVkaW9EZXN0
aW5hdGlvbk5vZGUpOwogCi1BdWRpb0Rlc3RpbmF0aW9uTm9kZTo6QXVkaW9EZXN0aW5hdGlvbk5v
ZGUoQXVkaW9Db250ZXh0JiBjb250ZXh0LCBmbG9hdCBzYW1wbGVSYXRlKQorQXVkaW9EZXN0aW5h
dGlvbk5vZGU6OkF1ZGlvRGVzdGluYXRpb25Ob2RlKEF1ZGlvQ29udGV4dEJhc2UmIGNvbnRleHQs
IGZsb2F0IHNhbXBsZVJhdGUpCiAgICAgOiBBdWRpb05vZGUoY29udGV4dCwgc2FtcGxlUmF0ZSkK
ICAgICAsIG1fY3VycmVudFNhbXBsZUZyYW1lKDApCiAgICAgLCBtX2lzU2lsZW50KHRydWUpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvRGVzdGluYXRp
b25Ob2RlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvRGVzdGluYXRp
b25Ob2RlLmgKaW5kZXggODk0OGY0ZWU3MGEuLjM3NmY0NjI3MTJkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvRGVzdGluYXRpb25Ob2RlLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0Rlc3RpbmF0aW9uTm9kZS5oCkBA
IC0zNiw3ICszNiw3IEBAIGNsYXNzIEF1ZGlvQ29udGV4dDsKIGNsYXNzIEF1ZGlvRGVzdGluYXRp
b25Ob2RlIDogcHVibGljIEF1ZGlvTm9kZSwgcHVibGljIEF1ZGlvSU9DYWxsYmFjayB7CiAgICAg
V1RGX01BS0VfSVNPX0FMTE9DQVRFRChBdWRpb0Rlc3RpbmF0aW9uTm9kZSk7CiBwdWJsaWM6Ci0g
ICAgQXVkaW9EZXN0aW5hdGlvbk5vZGUoQXVkaW9Db250ZXh0JiwgZmxvYXQgc2FtcGxlUmF0ZSk7
CisgICAgQXVkaW9EZXN0aW5hdGlvbk5vZGUoQXVkaW9Db250ZXh0QmFzZSYsIGZsb2F0IHNhbXBs
ZVJhdGUpOwogICAgIHZpcnR1YWwgfkF1ZGlvRGVzdGluYXRpb25Ob2RlKCk7CiAgICAgCiAgICAg
Ly8gQXVkaW9Ob2RlICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1
ZGlvL0F1ZGlvTm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlv
Tm9kZS5jcHAKaW5kZXggNzY1ZWNlMzMyZjYuLmU1NTQzNzc5ZDUxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvTm9kZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb05vZGUuY3BwCkBAIC0zMyw2ICszMyw3IEBACiAj
aW5jbHVkZSAiQXVkaW9Ob2RlT3V0cHV0LmgiCiAjaW5jbHVkZSAiQXVkaW9QYXJhbS5oIgogI2lu
Y2x1ZGUgIkxvZ2dpbmcuaCIKKyNpbmNsdWRlICJXZWJLaXRBdWRpb0NvbnRleHQuaCIKICNpbmNs
dWRlIDx3dGYvQXRvbWljcy5oPgogI2luY2x1ZGUgPHd0Zi9Jc29NYWxsb2NJbmxpbmVzLmg+CiAj
aW5jbHVkZSA8d3RmL01haW5UaHJlYWQuaD4KQEAgLTk1LDcgKzk2LDcgQEAgU3RyaW5nIGNvbnZl
cnRFbnVtZXJhdGlvblRvU3RyaW5nKEF1ZGlvTm9kZTo6Tm9kZVR5cGUgZW51bWVyYXRpb25WYWx1
ZSkKICAgICByZXR1cm4gdmFsdWVzW3N0YXRpY19jYXN0PHNpemVfdD4oZW51bWVyYXRpb25WYWx1
ZSldOwogfQogCi1BdWRpb05vZGU6OkF1ZGlvTm9kZShBdWRpb0NvbnRleHQmIGNvbnRleHQsIGZs
b2F0IHNhbXBsZVJhdGUpCitBdWRpb05vZGU6OkF1ZGlvTm9kZShBdWRpb0NvbnRleHRCYXNlJiBj
b250ZXh0LCBmbG9hdCBzYW1wbGVSYXRlKQogICAgIDogbV9pc0luaXRpYWxpemVkKGZhbHNlKQog
ICAgICwgbV9ub2RlVHlwZShOb2RlVHlwZVVua25vd24pCiAgICAgLCBtX2NvbnRleHQoY29udGV4
dCkKQEAgLTE5NCw3ICsxOTUsNyBAQCBBdWRpb05vZGVPdXRwdXQqIEF1ZGlvTm9kZTo6b3V0cHV0
KHVuc2lnbmVkIGkpCiBFeGNlcHRpb25Pcjx2b2lkPiBBdWRpb05vZGU6OmNvbm5lY3QoQXVkaW9O
b2RlJiBkZXN0aW5hdGlvbiwgdW5zaWduZWQgb3V0cHV0SW5kZXgsIHVuc2lnbmVkIGlucHV0SW5k
ZXgpCiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKLSAgICBBdWRpb0NvbnRleHQ6OkF1
dG9Mb2NrZXIgbG9ja2VyKGNvbnRleHQoKSk7CisgICAgQXVkaW9Db250ZXh0QmFzZTo6QXV0b0xv
Y2tlciBsb2NrZXIoY29udGV4dCgpKTsKIAogICAgIEFMV0FZU19MT0coTE9HSURFTlRJRklFUiwg
ZGVzdGluYXRpb24ubm9kZVR5cGUoKSwgIiwgb3V0cHV0ID0gIiwgb3V0cHV0SW5kZXgsICIsIGlu
cHV0ID0gIiwgaW5wdXRJbmRleCk7CiAgICAgCkBAIC0yMDUsNyArMjA2LDcgQEAgRXhjZXB0aW9u
T3I8dm9pZD4gQXVkaW9Ob2RlOjpjb25uZWN0KEF1ZGlvTm9kZSYgZGVzdGluYXRpb24sIHVuc2ln
bmVkIG91dHB1dEluZGUKICAgICBpZiAoaW5wdXRJbmRleCA+PSBkZXN0aW5hdGlvbi5udW1iZXJP
ZklucHV0cygpKQogICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgSW5kZXhTaXplRXJyb3IgfTsK
IAotICAgIGlmIChjb250ZXh0KCkgIT0gZGVzdGluYXRpb24uY29udGV4dCgpKQorICAgIGlmICgm
Y29udGV4dCgpICE9ICZkZXN0aW5hdGlvbi5jb250ZXh0KCkpCiAgICAgICAgIHJldHVybiBFeGNl
cHRpb24geyBTeW50YXhFcnJvciB9OwogCiAgICAgYXV0byogaW5wdXQgPSBkZXN0aW5hdGlvbi5p
bnB1dChpbnB1dEluZGV4KTsKQEAgLTIyMCw3ICsyMjEsNyBAQCBFeGNlcHRpb25Pcjx2b2lkPiBB
dWRpb05vZGU6OmNvbm5lY3QoQXVkaW9Ob2RlJiBkZXN0aW5hdGlvbiwgdW5zaWduZWQgb3V0cHV0
SW5kZQogCiBFeGNlcHRpb25Pcjx2b2lkPiBBdWRpb05vZGU6OmNvbm5lY3QoQXVkaW9QYXJhbSYg
cGFyYW0sIHVuc2lnbmVkIG91dHB1dEluZGV4KQogewotICAgIEF1ZGlvQ29udGV4dDo6QXV0b0xv
Y2tlciBsb2NrZXIoY29udGV4dCgpKTsKKyAgICBBdWRpb0NvbnRleHRCYXNlOjpBdXRvTG9ja2Vy
IGxvY2tlcihjb250ZXh0KCkpOwogCiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKIApAQCAt
MjI5LDcgKzIzMCw3IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IEF1ZGlvTm9kZTo6Y29ubmVjdChBdWRp
b1BhcmFtJiBwYXJhbSwgdW5zaWduZWQgb3V0cHV0SW5kZXgpCiAgICAgaWYgKG91dHB1dEluZGV4
ID49IG51bWJlck9mT3V0cHV0cygpKQogICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgSW5kZXhT
aXplRXJyb3IgfTsKIAotICAgIGlmIChjb250ZXh0KCkgIT0gcGFyYW0uY29udGV4dCgpKQorICAg
IGlmICgmY29udGV4dCgpICE9ICZwYXJhbS5jb250ZXh0KCkpCiAgICAgICAgIHJldHVybiBFeGNl
cHRpb24geyBTeW50YXhFcnJvciB9OwogCiAgICAgYXV0byogb3V0cHV0ID0gdGhpcy0+b3V0cHV0
KG91dHB1dEluZGV4KTsKQEAgLTI0MSw3ICsyNDIsNyBAQCBFeGNlcHRpb25Pcjx2b2lkPiBBdWRp
b05vZGU6OmNvbm5lY3QoQXVkaW9QYXJhbSYgcGFyYW0sIHVuc2lnbmVkIG91dHB1dEluZGV4KQog
RXhjZXB0aW9uT3I8dm9pZD4gQXVkaW9Ob2RlOjpkaXNjb25uZWN0KHVuc2lnbmVkIG91dHB1dElu
ZGV4KQogewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7Ci0gICAgQXVkaW9Db250ZXh0OjpB
dXRvTG9ja2VyIGxvY2tlcihjb250ZXh0KCkpOworICAgIEF1ZGlvQ29udGV4dEJhc2U6OkF1dG9M
b2NrZXIgbG9ja2VyKGNvbnRleHQoKSk7CiAKICAgICAvLyBTYW5pdHkgY2hlY2sgaW5wdXQgYW5k
IG91dHB1dCBpbmRpY2VzLgogICAgIGlmIChvdXRwdXRJbmRleCA+PSBudW1iZXJPZk91dHB1dHMo
KSkKQEAgLTI2Myw3ICsyNjQsNyBAQCB1bnNpZ25lZCBBdWRpb05vZGU6OmNoYW5uZWxDb3VudCgp
CiBFeGNlcHRpb25Pcjx2b2lkPiBBdWRpb05vZGU6OnNldENoYW5uZWxDb3VudCh1bnNpZ25lZCBj
aGFubmVsQ291bnQpCiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKLSAgICBBdWRpb0Nv
bnRleHQ6OkF1dG9Mb2NrZXIgbG9ja2VyKGNvbnRleHQoKSk7CisgICAgQXVkaW9Db250ZXh0QmFz
ZTo6QXV0b0xvY2tlciBsb2NrZXIoY29udGV4dCgpKTsKIAogICAgIEFMV0FZU19MT0coTE9HSURF
TlRJRklFUiwgY2hhbm5lbENvdW50KTsKICAgICAKQEAgLTI5Niw3ICsyOTcsNyBAQCBTdHJpbmcg
QXVkaW9Ob2RlOjpjaGFubmVsQ291bnRNb2RlKCkKIEV4Y2VwdGlvbk9yPHZvaWQ+IEF1ZGlvTm9k
ZTo6c2V0Q2hhbm5lbENvdW50TW9kZShjb25zdCBTdHJpbmcmIG1vZGUpCiB7CiAgICAgQVNTRVJU
KGlzTWFpblRocmVhZCgpKTsKLSAgICBBdWRpb0NvbnRleHQ6OkF1dG9Mb2NrZXIgbG9ja2VyKGNv
bnRleHQoKSk7CisgICAgQXVkaW9Db250ZXh0QmFzZTo6QXV0b0xvY2tlciBsb2NrZXIoY29udGV4
dCgpKTsKIAogICAgIEFMV0FZU19MT0coTE9HSURFTlRJRklFUiwgbW9kZSk7CiAgICAgCkBAIC0z
MzIsNyArMzMzLDcgQEAgU3RyaW5nIEF1ZGlvTm9kZTo6Y2hhbm5lbEludGVycHJldGF0aW9uKCkK
IEV4Y2VwdGlvbk9yPHZvaWQ+IEF1ZGlvTm9kZTo6c2V0Q2hhbm5lbEludGVycHJldGF0aW9uKGNv
bnN0IFN0cmluZyYgaW50ZXJwcmV0YXRpb24pCiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgp
KTsKLSAgICBBdWRpb0NvbnRleHQ6OkF1dG9Mb2NrZXIgbG9ja2VyKGNvbnRleHQoKSk7CisgICAg
QXVkaW9Db250ZXh0QmFzZTo6QXV0b0xvY2tlciBsb2NrZXIoY29udGV4dCgpKTsKIAogICAgIEFM
V0FZU19MT0coTE9HSURFTlRJRklFUiwgaW50ZXJwcmV0YXRpb24pOwogICAgIApAQCAtNDM3LDcg
KzQzOCw3IEBAIHZvaWQgQXVkaW9Ob2RlOjplbmFibGVPdXRwdXRzSWZOZWNlc3NhcnkoKQogewog
ICAgIGlmIChtX2lzRGlzYWJsZWQgJiYgbV9jb25uZWN0aW9uUmVmQ291bnQgPiAwKSB7CiAgICAg
ICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7Ci0gICAgICAgIEF1ZGlvQ29udGV4dDo6QXV0b0xv
Y2tlciBsb2NrZXIoY29udGV4dCgpKTsKKyAgICAgICAgQXVkaW9Db250ZXh0QmFzZTo6QXV0b0xv
Y2tlciBsb2NrZXIoY29udGV4dCgpKTsKIAogICAgICAgICBtX2lzRGlzYWJsZWQgPSBmYWxzZTsK
ICAgICAgICAgZm9yIChhdXRvJiBvdXRwdXQgOiBtX291dHB1dHMpCkBAIC01MDEsNyArNTAyLDcg
QEAgdm9pZCBBdWRpb05vZGU6OmRlcmVmKFJlZlR5cGUgcmVmVHlwZSkKICAgICAvLyBJbiB0aGUg
Y2FzZSBvZiB0aGUgYXVkaW8gdGhyZWFkLCB3ZSBtdXN0IHVzZSBhIHRyeUxvY2sgdG8gYXZvaWQg
Z2xpdGNoZXMuCiAgICAgYm9vbCBoYXNMb2NrID0gZmFsc2U7CiAgICAgYm9vbCBtdXN0UmVsZWFz
ZUxvY2sgPSBmYWxzZTsKLSAgICAKKwogICAgIGlmIChjb250ZXh0KCkuaXNBdWRpb1RocmVhZCgp
KSB7CiAgICAgICAgIC8vIFJlYWwtdGltZSBhdWRpbyB0aHJlYWQgbXVzdCBub3QgY29udGVuZCBs
b2NrICh0byBhdm9pZCBnbGl0Y2hlcykuCiAgICAgICAgIGhhc0xvY2sgPSBjb250ZXh0KCkudHJ5
TG9jayhtdXN0UmVsZWFzZUxvY2spOwpAQCAtNTMwLDYgKzUzMSwxMyBAQCB2b2lkIEF1ZGlvTm9k
ZTo6ZGVyZWYoUmVmVHlwZSByZWZUeXBlKQogICAgICAgICBjb250ZXh0KCkuZGVsZXRlTWFya2Vk
Tm9kZXMoKTsKIH0KIAorVmFyaWFudDxSZWZQdHI8QXVkaW9Db250ZXh0PiwgUmVmUHRyPFdlYktp
dEF1ZGlvQ29udGV4dD4+IEF1ZGlvTm9kZTo6Y29udGV4dEZvckJpbmRpbmdzKCkgY29uc3QKK3sK
KyAgICBpZiAobV9jb250ZXh0LT5pc1dlYktpdEF1ZGlvQ29udGV4dCgpKQorICAgICAgICByZXR1
cm4gbWFrZVJlZlB0cihzdGF0aWNfY2FzdDxXZWJLaXRBdWRpb0NvbnRleHQmPihtX2NvbnRleHQu
Z2V0KCkpKTsKKyAgICByZXR1cm4gbWFrZVJlZlB0cihzdGF0aWNfY2FzdDxBdWRpb0NvbnRleHQm
PihtX2NvbnRleHQuZ2V0KCkpKTsKK30KKwogdm9pZCBBdWRpb05vZGU6OmZpbmlzaERlcmVmKFJl
ZlR5cGUgcmVmVHlwZSkKIHsKICAgICBBU1NFUlQoY29udGV4dCgpLmlzR3JhcGhPd25lcigpKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Ob2RlLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvTm9kZS5oCmluZGV4IDQyMTAx
MDA2Y2M3Li5hOTg4MWJkNGI4ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJhdWRpby9BdWRpb05vZGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlv
L0F1ZGlvTm9kZS5oCkBAIC0yOSwxNSArMjksMTggQEAKICNpbmNsdWRlICJFeGNlcHRpb25Pci5o
IgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8d3RmL0xvZ2dlckhlbHBlci5o
PgorI2luY2x1ZGUgPHd0Zi9WYXJpYW50Lmg+CiAKICNkZWZpbmUgREVCVUdfQVVESU9OT0RFX1JF
RkVSRU5DRVMgMAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEF1ZGlvQ29udGV4dDsK
K2NsYXNzIEF1ZGlvQ29udGV4dEJhc2U7CiBjbGFzcyBBdWRpb05vZGVJbnB1dDsKIGNsYXNzIEF1
ZGlvTm9kZU91dHB1dDsKIGNsYXNzIEF1ZGlvUGFyYW07CitjbGFzcyBXZWJLaXRBdWRpb0NvbnRl
eHQ7CiAKIC8vIEFuIEF1ZGlvTm9kZSBpcyB0aGUgYmFzaWMgYnVpbGRpbmcgYmxvY2sgZm9yIGhh
bmRsaW5nIGF1ZGlvIHdpdGhpbiBhbiBBdWRpb0NvbnRleHQuCiAvLyBJdCBtYXkgYmUgYW4gYXVk
aW8gc291cmNlLCBhbiBpbnRlcm1lZGlhdGUgcHJvY2Vzc2luZyBtb2R1bGUsIG9yIGFuIGF1ZGlv
IGRlc3RpbmF0aW9uLgpAQCAtNTYsMTEgKzU5LDEzIEBAIGNsYXNzIEF1ZGlvTm9kZQogcHVibGlj
OgogICAgIGVudW0geyBQcm9jZXNzaW5nU2l6ZUluRnJhbWVzID0gMTI4IH07CiAKLSAgICBBdWRp
b05vZGUoQXVkaW9Db250ZXh0JiwgZmxvYXQgc2FtcGxlUmF0ZSk7CisgICAgQXVkaW9Ob2RlKEF1
ZGlvQ29udGV4dEJhc2UmLCBmbG9hdCBzYW1wbGVSYXRlKTsKICAgICB2aXJ0dWFsIH5BdWRpb05v
ZGUoKTsKIAotICAgIEF1ZGlvQ29udGV4dCYgY29udGV4dCgpIHsgcmV0dXJuIG1fY29udGV4dC5n
ZXQoKTsgfQotICAgIGNvbnN0IEF1ZGlvQ29udGV4dCYgY29udGV4dCgpIGNvbnN0IHsgcmV0dXJu
IG1fY29udGV4dC5nZXQoKTsgfQorICAgIEF1ZGlvQ29udGV4dEJhc2UmIGNvbnRleHQoKSB7IHJl
dHVybiBtX2NvbnRleHQuZ2V0KCk7IH0KKyAgICBjb25zdCBBdWRpb0NvbnRleHRCYXNlJiBjb250
ZXh0KCkgY29uc3QgeyByZXR1cm4gbV9jb250ZXh0LmdldCgpOyB9CisKKyAgICBWYXJpYW50PFJl
ZlB0cjxBdWRpb0NvbnRleHQ+LCBSZWZQdHI8V2ViS2l0QXVkaW9Db250ZXh0Pj4gY29udGV4dEZv
ckJpbmRpbmdzKCkgY29uc3Q7CiAKICAgICBlbnVtIE5vZGVUeXBlIHsKICAgICAgICAgTm9kZVR5
cGVVbmtub3duLApAQCAtMjA5LDcgKzIxNCw3IEBAIHByaXZhdGU6CiAKICAgICB2b2xhdGlsZSBi
b29sIG1faXNJbml0aWFsaXplZDsKICAgICBOb2RlVHlwZSBtX25vZGVUeXBlOwotICAgIFJlZjxB
dWRpb0NvbnRleHQ+IG1fY29udGV4dDsKKyAgICBSZWY8QXVkaW9Db250ZXh0QmFzZT4gbV9jb250
ZXh0OwogICAgIGZsb2F0IG1fc2FtcGxlUmF0ZTsKICAgICBWZWN0b3I8c3RkOjp1bmlxdWVfcHRy
PEF1ZGlvTm9kZUlucHV0Pj4gbV9pbnB1dHM7CiAgICAgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxB
dWRpb05vZGVPdXRwdXQ+PiBtX291dHB1dHM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmF1ZGlvL0F1ZGlvTm9kZS5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmF1ZGlvL0F1ZGlvTm9kZS5pZGwKaW5kZXggNzBmZWM4YzgxNDUuLjcxOTM5YzgzMTcxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvTm9kZS5pZGwKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb05vZGUuaWRsCkBAIC0yNSw3
ICsyNSw3IEBACiBbCiAgICAgQ29uZGl0aW9uYWw9V0VCX0FVRElPLAogXSBpbnRlcmZhY2UgQXVk
aW9Ob2RlIDogRXZlbnRUYXJnZXQgewotICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBBdWRpb0NvbnRl
eHQgY29udGV4dDsKKyAgICBbSW1wbGVtZW50ZWRBcz1jb250ZXh0Rm9yQmluZGluZ3NdIHJlYWRv
bmx5IGF0dHJpYnV0ZSAoQXVkaW9Db250ZXh0IG9yIFdlYktpdEF1ZGlvQ29udGV4dCkgY29udGV4
dDsKICAgICByZWFkb25seSBhdHRyaWJ1dGUgdW5zaWduZWQgbG9uZyBudW1iZXJPZklucHV0czsK
ICAgICByZWFkb25seSBhdHRyaWJ1dGUgdW5zaWduZWQgbG9uZyBudW1iZXJPZk91dHB1dHM7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Ob2RlT3V0
cHV0LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvTm9kZU91dHB1dC5o
CmluZGV4IDUwYTk1ZWUyMDVjLi5mMDg5ODM2MzVmMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb05vZGVPdXRwdXQuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvTm9kZU91dHB1dC5oCkBAIC00Nyw3ICs0Nyw3IEBAIHB1
YmxpYzoKIAogICAgIC8vIENhbiBiZSBjYWxsZWQgZnJvbSBhbnkgdGhyZWFkLgogICAgIEF1ZGlv
Tm9kZSogbm9kZSgpIGNvbnN0IHsgcmV0dXJuIG1fbm9kZTsgfQotICAgIEF1ZGlvQ29udGV4dCYg
Y29udGV4dCgpIHsgcmV0dXJuIG1fbm9kZS0+Y29udGV4dCgpOyB9CisgICAgQXVkaW9Db250ZXh0
QmFzZSYgY29udGV4dCgpIHsgcmV0dXJuIG1fbm9kZS0+Y29udGV4dCgpOyB9CiAgICAgCiAgICAg
Ly8gQ2F1c2VzIG91ciBBdWRpb05vZGUgdG8gcHJvY2VzcyBpZiBpdCBoYXNuJ3QgYWxyZWFkeSBm
b3IgdGhpcyByZW5kZXIgcXVhbnR1bS4KICAgICAvLyBJdCByZXR1cm5zIHRoZSBidXMgY29udGFp
bmluZyB0aGUgcHJvY2Vzc2VkIGF1ZGlvIGZvciB0aGlzIG91dHB1dCwgcmV0dXJuaW5nIGluUGxh
Y2VCdXMgaWYgaW4tcGxhY2UgcHJvY2Vzc2luZyB3YXMgcG9zc2libGUuCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvUGFyYW0uY3BwIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1BhcmFtLmNwcAppbmRleCAyOTM0NTY0NDVjYy4u
ZDQ3MGJmNzQ2ZWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8v
QXVkaW9QYXJhbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRp
b1BhcmFtLmNwcApAQCAtNDEsNyArNDEsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjb25zdCBk
b3VibGUgQXVkaW9QYXJhbTo6RGVmYXVsdFNtb290aGluZ0NvbnN0YW50ID0gMC4wNTsKIGNvbnN0
IGRvdWJsZSBBdWRpb1BhcmFtOjpTbmFwVGhyZXNob2xkID0gMC4wMDE7CiAKLUF1ZGlvUGFyYW06
OkF1ZGlvUGFyYW0oQXVkaW9Db250ZXh0JiBjb250ZXh0LCBjb25zdCBTdHJpbmcmIG5hbWUsIGRv
dWJsZSBkZWZhdWx0VmFsdWUsIGRvdWJsZSBtaW5WYWx1ZSwgZG91YmxlIG1heFZhbHVlLCB1bnNp
Z25lZCB1bml0cykKK0F1ZGlvUGFyYW06OkF1ZGlvUGFyYW0oQXVkaW9Db250ZXh0QmFzZSYgY29u
dGV4dCwgY29uc3QgU3RyaW5nJiBuYW1lLCBkb3VibGUgZGVmYXVsdFZhbHVlLCBkb3VibGUgbWlu
VmFsdWUsIGRvdWJsZSBtYXhWYWx1ZSwgdW5zaWduZWQgdW5pdHMpCiAgICAgOiBBdWRpb1N1bW1p
bmdKdW5jdGlvbihjb250ZXh0KQogICAgICwgbV9uYW1lKG5hbWUpCiAgICAgLCBtX3ZhbHVlKGRl
ZmF1bHRWYWx1ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8v
QXVkaW9QYXJhbS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1BhcmFt
LmgKaW5kZXggMjI2Yzk1N2U3MDYuLjE2YTIxMDk1MDQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvUGFyYW0uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmF1ZGlvL0F1ZGlvUGFyYW0uaApAQCAtMzEsNiArMzEsNyBAQAogI2luY2x1ZGUg
IkF1ZGlvQ29udGV4dC5oIgogI2luY2x1ZGUgIkF1ZGlvUGFyYW1UaW1lbGluZS5oIgogI2luY2x1
ZGUgIkF1ZGlvU3VtbWluZ0p1bmN0aW9uLmgiCisjaW5jbHVkZSAiV2ViS2l0QXVkaW9Db250ZXh0
LmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvRmxvYXQzMkFycmF5Lmg+CiAjaW5jbHVkZSA8
c3lzL3R5cGVzLmg+CiAjaW5jbHVkZSA8d3RmL0xvZ2dlckhlbHBlci5oPgpAQCAtNTIsNyArNTMs
NyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIGNvbnN0IGRvdWJsZSBEZWZhdWx0U21vb3RoaW5nQ29u
c3RhbnQ7CiAgICAgc3RhdGljIGNvbnN0IGRvdWJsZSBTbmFwVGhyZXNob2xkOwogCi0gICAgc3Rh
dGljIFJlZjxBdWRpb1BhcmFtPiBjcmVhdGUoQXVkaW9Db250ZXh0JiBjb250ZXh0LCBjb25zdCBT
dHJpbmcmIG5hbWUsIGRvdWJsZSBkZWZhdWx0VmFsdWUsIGRvdWJsZSBtaW5WYWx1ZSwgZG91Ymxl
IG1heFZhbHVlLCB1bnNpZ25lZCB1bml0cyA9IDApCisgICAgc3RhdGljIFJlZjxBdWRpb1BhcmFt
PiBjcmVhdGUoQXVkaW9Db250ZXh0QmFzZSYgY29udGV4dCwgY29uc3QgU3RyaW5nJiBuYW1lLCBk
b3VibGUgZGVmYXVsdFZhbHVlLCBkb3VibGUgbWluVmFsdWUsIGRvdWJsZSBtYXhWYWx1ZSwgdW5z
aWduZWQgdW5pdHMgPSAwKQogICAgIHsKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQXVk
aW9QYXJhbShjb250ZXh0LCBuYW1lLCBkZWZhdWx0VmFsdWUsIG1pblZhbHVlLCBtYXhWYWx1ZSwg
dW5pdHMpKTsKICAgICB9CkBAIC0xMDgsNyArMTA5LDcgQEAgcHVibGljOgogICAgIHZvaWQgZGlz
Y29ubmVjdChBdWRpb05vZGVPdXRwdXQqKTsKIAogcHJvdGVjdGVkOgotICAgIEF1ZGlvUGFyYW0o
QXVkaW9Db250ZXh0JiwgY29uc3QgU3RyaW5nJiwgZG91YmxlIGRlZmF1bHRWYWx1ZSwgZG91Ymxl
IG1pblZhbHVlLCBkb3VibGUgbWF4VmFsdWUsIHVuc2lnbmVkIHVuaXRzID0gMCk7CisgICAgQXVk
aW9QYXJhbShBdWRpb0NvbnRleHRCYXNlJiwgY29uc3QgU3RyaW5nJiwgZG91YmxlIGRlZmF1bHRW
YWx1ZSwgZG91YmxlIG1pblZhbHVlLCBkb3VibGUgbWF4VmFsdWUsIHVuc2lnbmVkIHVuaXRzID0g
MCk7CiAKIHByaXZhdGU6CiAgICAgLy8gc2FtcGxlQWNjdXJhdGUgY29ycmVzcG9uZHMgdG8gYS1y
YXRlIChhdWRpbyByYXRlKSB2cy4gay1yYXRlIGluIHRoZSBXZWIgQXVkaW8gc3BlY2lmaWNhdGlv
bi4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9QYXJh
bVRpbWVsaW5lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9QYXJh
bVRpbWVsaW5lLmNwcAppbmRleCAyYjU5NTcwYmY2ZS4uNmM0MTMwMWQ4YWQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9QYXJhbVRpbWVsaW5lLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvUGFyYW1UaW1lbGluZS5j
cHAKQEAgLTExMyw3ICsxMTMsNyBAQCB2b2lkIEF1ZGlvUGFyYW1UaW1lbGluZTo6Y2FuY2VsU2No
ZWR1bGVkVmFsdWVzKGZsb2F0IHN0YXJ0VGltZSkKICAgICB9CiB9CiAKLWZsb2F0IEF1ZGlvUGFy
YW1UaW1lbGluZTo6dmFsdWVGb3JDb250ZXh0VGltZShBdWRpb0NvbnRleHQmIGNvbnRleHQsIGZs
b2F0IGRlZmF1bHRWYWx1ZSwgYm9vbCYgaGFzVmFsdWUpCitmbG9hdCBBdWRpb1BhcmFtVGltZWxp
bmU6OnZhbHVlRm9yQ29udGV4dFRpbWUoQXVkaW9Db250ZXh0QmFzZSYgY29udGV4dCwgZmxvYXQg
ZGVmYXVsdFZhbHVlLCBib29sJiBoYXNWYWx1ZSkKIHsKICAgICB7CiAgICAgICAgIHN0ZDo6dW5p
cXVlX2xvY2s8TG9jaz4gbG9jayhtX2V2ZW50c011dGV4LCBzdGQ6OnRyeV90b19sb2NrKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9QYXJhbVRpbWVs
aW5lLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvUGFyYW1UaW1lbGlu
ZS5oCmluZGV4IDdjMTA5OTk1NmNlLi5hNTg2OGJkZWUxOCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1BhcmFtVGltZWxpbmUuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvUGFyYW1UaW1lbGluZS5oCkBAIC01Miw3ICs1
Miw3IEBAIHB1YmxpYzoKIAogICAgIC8vIGhhc1ZhbHVlIGlzIHNldCB0byB0cnVlIGlmIGEgdmFs
aWQgdGltZWxpbmUgdmFsdWUgaXMgcmV0dXJuZWQuCiAgICAgLy8gb3RoZXJ3aXNlIGRlZmF1bHRW
YWx1ZSBpcyByZXR1cm5lZC4KLSAgICBmbG9hdCB2YWx1ZUZvckNvbnRleHRUaW1lKEF1ZGlvQ29u
dGV4dCYsIGZsb2F0IGRlZmF1bHRWYWx1ZSwgYm9vbCYgaGFzVmFsdWUpOworICAgIGZsb2F0IHZh
bHVlRm9yQ29udGV4dFRpbWUoQXVkaW9Db250ZXh0QmFzZSYsIGZsb2F0IGRlZmF1bHRWYWx1ZSwg
Ym9vbCYgaGFzVmFsdWUpOwogCiAgICAgLy8gR2l2ZW4gdGhlIHRpbWUgcmFuZ2UsIGNhbGN1bGF0
ZXMgcGFyYW1ldGVyIHZhbHVlcyBpbnRvIHRoZSB2YWx1ZXMgYnVmZmVyCiAgICAgLy8gYW5kIHJl
dHVybnMgdGhlIGxhc3QgcGFyYW1ldGVyIHZhbHVlIGNhbGN1bGF0ZWQgZm9yICJ2YWx1ZXMiIG9y
IHRoZSBkZWZhdWx0VmFsdWUgaWYgbm9uZSB3ZXJlIGNhbGN1bGF0ZWQuCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvU2NoZWR1bGVkU291cmNlTm9kZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvU2NoZWR1bGVkU291cmNl
Tm9kZS5jcHAKaW5kZXggMGY3MjY3NmZjNzQuLjdjMjgyMzdhMGJkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvU2NoZWR1bGVkU291cmNlTm9kZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1NjaGVkdWxlZFNvdXJj
ZU5vZGUuY3BwCkBAIC00OSw3ICs0OSw3IEBAIFdURl9NQUtFX0lTT19BTExPQ0FURURfSU1QTChB
dWRpb1NjaGVkdWxlZFNvdXJjZU5vZGUpOwogCiBjb25zdCBkb3VibGUgQXVkaW9TY2hlZHVsZWRT
b3VyY2VOb2RlOjpVbmtub3duVGltZSA9IC0xOwogCi1BdWRpb1NjaGVkdWxlZFNvdXJjZU5vZGU6
OkF1ZGlvU2NoZWR1bGVkU291cmNlTm9kZShBdWRpb0NvbnRleHQmIGNvbnRleHQsIGZsb2F0IHNh
bXBsZVJhdGUpCitBdWRpb1NjaGVkdWxlZFNvdXJjZU5vZGU6OkF1ZGlvU2NoZWR1bGVkU291cmNl
Tm9kZShBdWRpb0NvbnRleHRCYXNlJiBjb250ZXh0LCBmbG9hdCBzYW1wbGVSYXRlKQogICAgIDog
QXVkaW9Ob2RlKGNvbnRleHQsIHNhbXBsZVJhdGUpCiAgICAgLCBBY3RpdmVET01PYmplY3QoY29u
dGV4dC5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpCiAgICAgLCBtX2VuZFRpbWUoVW5rbm93blRp
bWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvU2No
ZWR1bGVkU291cmNlTm9kZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRp
b1NjaGVkdWxlZFNvdXJjZU5vZGUuaAppbmRleCA4Y2FkYmUxMGFmZC4uYjRkOTU4ODBjMWQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9TY2hlZHVsZWRT
b3VyY2VOb2RlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1Nj
aGVkdWxlZFNvdXJjZU5vZGUuaApAQCAtNTMsNyArNTMsNyBAQCBwdWJsaWM6CiAgICAgICAgIEZJ
TklTSEVEX1NUQVRFID0gMwogICAgIH07CiAgICAgCi0gICAgQXVkaW9TY2hlZHVsZWRTb3VyY2VO
b2RlKEF1ZGlvQ29udGV4dCYsIGZsb2F0IHNhbXBsZVJhdGUpOworICAgIEF1ZGlvU2NoZWR1bGVk
U291cmNlTm9kZShBdWRpb0NvbnRleHRCYXNlJiwgZmxvYXQgc2FtcGxlUmF0ZSk7CiAKICAgICBF
eGNlcHRpb25Pcjx2b2lkPiBzdGFydExhdGVyKGRvdWJsZSB3aGVuKTsKICAgICBFeGNlcHRpb25P
cjx2b2lkPiBzdG9wTGF0ZXIoZG91YmxlIHdoZW4pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1N1bW1pbmdKdW5jdGlvbi5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvU3VtbWluZ0p1bmN0aW9uLmNwcAppbmRleCBlZTYw
MGE2MjlhMS4uZGQ2NGZkM2VhODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViYXVkaW8vQXVkaW9TdW1taW5nSnVuY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViYXVkaW8vQXVkaW9TdW1taW5nSnVuY3Rpb24uY3BwCkBAIC0zNCw3ICszNCw3IEBA
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotQXVkaW9TdW1taW5nSnVuY3Rpb246OkF1ZGlvU3Vt
bWluZ0p1bmN0aW9uKEF1ZGlvQ29udGV4dCYgY29udGV4dCkKK0F1ZGlvU3VtbWluZ0p1bmN0aW9u
OjpBdWRpb1N1bW1pbmdKdW5jdGlvbihBdWRpb0NvbnRleHRCYXNlJiBjb250ZXh0KQogICAgIDog
bV9jb250ZXh0KGNvbnRleHQpCiAgICAgLCBtX3JlbmRlcmluZ1N0YXRlTmVlZFVwZGF0aW5nKGZh
bHNlKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRp
b1N1bW1pbmdKdW5jdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRp
b1N1bW1pbmdKdW5jdGlvbi5oCmluZGV4IGM5NGZmNmQ2YTVhLi40Y2JmOGFlOWZiOSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1N1bW1pbmdKdW5jdGlv
bi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9TdW1taW5nSnVu
Y3Rpb24uaApAQCAtMzAsMTggKzMwLDE4IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xh
c3MgQXVkaW9Db250ZXh0OworY2xhc3MgQXVkaW9Db250ZXh0QmFzZTsKIGNsYXNzIEF1ZGlvTm9k
ZU91dHB1dDsKIAogLy8gQW4gQXVkaW9TdW1taW5nSnVuY3Rpb24gcmVwcmVzZW50cyBhIHBvaW50
IHdoZXJlIHplcm8sIG9uZSwgb3IgbW9yZSBBdWRpb05vZGVPdXRwdXRzIGNvbm5lY3QuCiAKIGNs
YXNzIEF1ZGlvU3VtbWluZ0p1bmN0aW9uIHsKIHB1YmxpYzoKLSAgICBleHBsaWNpdCBBdWRpb1N1
bW1pbmdKdW5jdGlvbihBdWRpb0NvbnRleHQmKTsKKyAgICBleHBsaWNpdCBBdWRpb1N1bW1pbmdK
dW5jdGlvbihBdWRpb0NvbnRleHRCYXNlJik7CiAgICAgdmlydHVhbCB+QXVkaW9TdW1taW5nSnVu
Y3Rpb24oKTsKIAogICAgIC8vIENhbiBiZSBjYWxsZWQgZnJvbSBhbnkgdGhyZWFkLgotICAgIEF1
ZGlvQ29udGV4dCYgY29udGV4dCgpIHsgcmV0dXJuIG1fY29udGV4dC5nZXQoKTsgfQorICAgIEF1
ZGlvQ29udGV4dEJhc2UmIGNvbnRleHQoKSB7IHJldHVybiBtX2NvbnRleHQ7IH0KIAogICAgIC8v
IFRoaXMgbXVzdCBiZSBjYWxsZWQgd2hlbmV2ZXIgd2UgbW9kaWZ5IG1fb3V0cHV0cy4KICAgICB2
b2lkIGNoYW5nZWRPdXRwdXRzKCk7CkBAIC02MCw3ICs2MCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0
dWFsIHZvaWQgZGlkVXBkYXRlKCkgPSAwOwogCiBwcm90ZWN0ZWQ6Ci0gICAgUmVmPEF1ZGlvQ29u
dGV4dD4gbV9jb250ZXh0OworICAgIFJlZjxBdWRpb0NvbnRleHRCYXNlPiBtX2NvbnRleHQ7CiAK
ICAgICAvLyBtX291dHB1dHMgY29udGFpbnMgdGhlIEF1ZGlvTm9kZU91dHB1dHMgcmVwcmVzZW50
aW5nIGN1cnJlbnQgY29ubmVjdGlvbnMgd2hpY2ggYXJlIG5vdCBkaXNhYmxlZC4KICAgICAvLyBU
aGUgcmVuZGVyaW5nIGNvZGUgc2hvdWxkIG5ldmVyIHVzZSB0aGlzIGRpcmVjdGx5LCBidXQgaW5z
dGVhZCB1c2VzIG1fcmVuZGVyaW5nT3V0cHV0cy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViYXVkaW8vQmlxdWFkRmlsdGVyTm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmF1ZGlvL0JpcXVhZEZpbHRlck5vZGUuY3BwCmluZGV4IDRhODI1NWU2ZjBhLi5k
ZGUwNzczZDQ3MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9C
aXF1YWRGaWx0ZXJOb2RlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlv
L0JpcXVhZEZpbHRlck5vZGUuY3BwCkBAIC0zMyw3ICszMyw3IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAogV1RGX01BS0VfSVNPX0FMTE9DQVRFRF9JTVBMKEJpcXVhZEZpbHRlck5vZGUpOwogCi1C
aXF1YWRGaWx0ZXJOb2RlOjpCaXF1YWRGaWx0ZXJOb2RlKEF1ZGlvQ29udGV4dCYgY29udGV4dCwg
ZmxvYXQgc2FtcGxlUmF0ZSkKK0JpcXVhZEZpbHRlck5vZGU6OkJpcXVhZEZpbHRlck5vZGUoQXVk
aW9Db250ZXh0QmFzZSYgY29udGV4dCwgZmxvYXQgc2FtcGxlUmF0ZSkKICAgICA6IEF1ZGlvQmFz
aWNQcm9jZXNzb3JOb2RlKGNvbnRleHQsIHNhbXBsZVJhdGUpCiB7CiAgICAgc2V0Tm9kZVR5cGUo
Tm9kZVR5cGVCaXF1YWRGaWx0ZXIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJhdWRpby9CaXF1YWRGaWx0ZXJOb2RlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmF1ZGlvL0JpcXVhZEZpbHRlck5vZGUuaAppbmRleCA4MDk0ZDkxZWFiMy4uYWM4ZDk0N2ExMGYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQmlxdWFkRmlsdGVy
Tm9kZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQmlxdWFkRmlsdGVy
Tm9kZS5oCkBAIC0zNCw3ICszNCw3IEBAIGNsYXNzIEF1ZGlvUGFyYW07CiBjbGFzcyBCaXF1YWRG
aWx0ZXJOb2RlIGZpbmFsIDogcHVibGljIEF1ZGlvQmFzaWNQcm9jZXNzb3JOb2RlIHsKICAgICBX
VEZfTUFLRV9JU09fQUxMT0NBVEVEKEJpcXVhZEZpbHRlck5vZGUpOwogcHVibGljOgotICAgIHN0
YXRpYyBSZWY8QmlxdWFkRmlsdGVyTm9kZT4gY3JlYXRlKEF1ZGlvQ29udGV4dCYgY29udGV4dCwg
ZmxvYXQgc2FtcGxlUmF0ZSkKKyAgICBzdGF0aWMgUmVmPEJpcXVhZEZpbHRlck5vZGU+IGNyZWF0
ZShBdWRpb0NvbnRleHRCYXNlJiBjb250ZXh0LCBmbG9hdCBzYW1wbGVSYXRlKQogICAgIHsKICAg
ICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQmlxdWFkRmlsdGVyTm9kZShjb250ZXh0LCBzYW1w
bGVSYXRlKSk7CiAgICAgfQpAQCAtNTIsNyArNTIsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBnZXRG
cmVxdWVuY3lSZXNwb25zZShjb25zdCBSZWZQdHI8RmxvYXQzMkFycmF5PiYgZnJlcXVlbmN5SHos
IGNvbnN0IFJlZlB0cjxGbG9hdDMyQXJyYXk+JiBtYWdSZXNwb25zZSwgY29uc3QgUmVmUHRyPEZs
b2F0MzJBcnJheT4mIHBoYXNlUmVzcG9uc2UpOwogCiBwcml2YXRlOgotICAgIEJpcXVhZEZpbHRl
ck5vZGUoQXVkaW9Db250ZXh0JiwgZmxvYXQgc2FtcGxlUmF0ZSk7CisgICAgQmlxdWFkRmlsdGVy
Tm9kZShBdWRpb0NvbnRleHRCYXNlJiwgZmxvYXQgc2FtcGxlUmF0ZSk7CiAKICAgICBCaXF1YWRQ
cm9jZXNzb3IqIGJpcXVhZFByb2Nlc3NvcigpIHsgcmV0dXJuIHN0YXRpY19jYXN0PEJpcXVhZFBy
b2Nlc3Nvcio+KHByb2Nlc3NvcigpKTsgfQogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViYXVkaW8vQmlxdWFkUHJvY2Vzc29yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViYXVkaW8vQmlxdWFkUHJvY2Vzc29yLmNwcAppbmRleCBlODRiOTgwMzU2Ny4uMmY2
MDY3YTcyZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQmlx
dWFkUHJvY2Vzc29yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0Jp
cXVhZFByb2Nlc3Nvci5jcHAKQEAgLTMyLDcgKzMyLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogICAgIAotQmlxdWFkUHJvY2Vzc29yOjpCaXF1YWRQcm9jZXNzb3IoQXVkaW9Db250ZXh0JiBj
b250ZXh0LCBmbG9hdCBzYW1wbGVSYXRlLCBzaXplX3QgbnVtYmVyT2ZDaGFubmVscywgYm9vbCBh
dXRvSW5pdGlhbGl6ZSkKK0JpcXVhZFByb2Nlc3Nvcjo6QmlxdWFkUHJvY2Vzc29yKEF1ZGlvQ29u
dGV4dEJhc2UmIGNvbnRleHQsIGZsb2F0IHNhbXBsZVJhdGUsIHNpemVfdCBudW1iZXJPZkNoYW5u
ZWxzLCBib29sIGF1dG9Jbml0aWFsaXplKQogICAgIDogQXVkaW9EU1BLZXJuZWxQcm9jZXNzb3Io
c2FtcGxlUmF0ZSwgbnVtYmVyT2ZDaGFubmVscykKICAgICAsIG1fdHlwZShCaXF1YWRGaWx0ZXJU
eXBlOjpMb3dwYXNzKQogICAgICwgbV9wYXJhbWV0ZXIxKDApCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0JpcXVhZFByb2Nlc3Nvci5oIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJhdWRpby9CaXF1YWRQcm9jZXNzb3IuaAppbmRleCBhZGJlZWM0MzAyNS4u
ZGMzMDZhYjUxN2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8v
QmlxdWFkUHJvY2Vzc29yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9C
aXF1YWRQcm9jZXNzb3IuaApAQCAtNTAsNyArNTAsNyBAQCBlbnVtIGNsYXNzIEJpcXVhZEZpbHRl
clR5cGUgewogY2xhc3MgQmlxdWFkUHJvY2Vzc29yIGZpbmFsIDogcHVibGljIEF1ZGlvRFNQS2Vy
bmVsUHJvY2Vzc29yIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKLSAg
ICBCaXF1YWRQcm9jZXNzb3IoQXVkaW9Db250ZXh0JiwgZmxvYXQgc2FtcGxlUmF0ZSwgc2l6ZV90
IG51bWJlck9mQ2hhbm5lbHMsIGJvb2wgYXV0b0luaXRpYWxpemUpOworICAgIEJpcXVhZFByb2Nl
c3NvcihBdWRpb0NvbnRleHRCYXNlJiwgZmxvYXQgc2FtcGxlUmF0ZSwgc2l6ZV90IG51bWJlck9m
Q2hhbm5lbHMsIGJvb2wgYXV0b0luaXRpYWxpemUpOwogCiAgICAgdmlydHVhbCB+QmlxdWFkUHJv
Y2Vzc29yKCk7CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1
ZGlvL0NoYW5uZWxNZXJnZXJOb2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVk
aW8vQ2hhbm5lbE1lcmdlck5vZGUuY3BwCmluZGV4IGRmNTBmMjY4NzM2Li5kZTI4YWVhN2QyYyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9DaGFubmVsTWVyZ2Vy
Tm9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9DaGFubmVsTWVy
Z2VyTm9kZS5jcHAKQEAgLTQzLDcgKzQzLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBXVEZf
TUFLRV9JU09fQUxMT0NBVEVEX0lNUEwoQ2hhbm5lbE1lcmdlck5vZGUpOwogCi1SZWZQdHI8Q2hh
bm5lbE1lcmdlck5vZGU+IENoYW5uZWxNZXJnZXJOb2RlOjpjcmVhdGUoQXVkaW9Db250ZXh0JiBj
b250ZXh0LCBmbG9hdCBzYW1wbGVSYXRlLCB1bnNpZ25lZCBudW1iZXJPZklucHV0cykKK1JlZlB0
cjxDaGFubmVsTWVyZ2VyTm9kZT4gQ2hhbm5lbE1lcmdlck5vZGU6OmNyZWF0ZShBdWRpb0NvbnRl
eHRCYXNlJiBjb250ZXh0LCBmbG9hdCBzYW1wbGVSYXRlLCB1bnNpZ25lZCBudW1iZXJPZklucHV0
cykKIHsKICAgICBpZiAoIW51bWJlck9mSW5wdXRzIHx8IG51bWJlck9mSW5wdXRzID4gQXVkaW9D
b250ZXh0OjptYXhOdW1iZXJPZkNoYW5uZWxzKCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwpA
QCAtNTEsNyArNTEsNyBAQCBSZWZQdHI8Q2hhbm5lbE1lcmdlck5vZGU+IENoYW5uZWxNZXJnZXJO
b2RlOjpjcmVhdGUoQXVkaW9Db250ZXh0JiBjb250ZXh0LCBmbG9hdAogICAgIHJldHVybiBhZG9w
dFJlZigqbmV3IENoYW5uZWxNZXJnZXJOb2RlKGNvbnRleHQsIHNhbXBsZVJhdGUsIG51bWJlck9m
SW5wdXRzKSk7ICAgICAgCiB9CiAKLUNoYW5uZWxNZXJnZXJOb2RlOjpDaGFubmVsTWVyZ2VyTm9k
ZShBdWRpb0NvbnRleHQmIGNvbnRleHQsIGZsb2F0IHNhbXBsZVJhdGUsIHVuc2lnbmVkIG51bWJl
ck9mSW5wdXRzKQorQ2hhbm5lbE1lcmdlck5vZGU6OkNoYW5uZWxNZXJnZXJOb2RlKEF1ZGlvQ29u
dGV4dEJhc2UmIGNvbnRleHQsIGZsb2F0IHNhbXBsZVJhdGUsIHVuc2lnbmVkIG51bWJlck9mSW5w
dXRzKQogICAgIDogQXVkaW9Ob2RlKGNvbnRleHQsIHNhbXBsZVJhdGUpCiAgICAgLCBtX2Rlc2ly
ZWROdW1iZXJPZk91dHB1dENoYW5uZWxzKERlZmF1bHROdW1iZXJPZk91dHB1dENoYW5uZWxzKQog
ewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9DaGFubmVsTWVy
Z2VyTm9kZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9DaGFubmVsTWVyZ2Vy
Tm9kZS5oCmluZGV4IDY2NjM2ZWVkNmY3Li42Mjk3NmUwNTA3MyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9DaGFubmVsTWVyZ2VyTm9kZS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQ2hhbm5lbE1lcmdlck5vZGUuaApAQCAtMzcsNyAr
MzcsNyBAQCBjbGFzcyBBdWRpb0NvbnRleHQ7CiBjbGFzcyBDaGFubmVsTWVyZ2VyTm9kZSBmaW5h
bCA6IHB1YmxpYyBBdWRpb05vZGUgewogICAgIFdURl9NQUtFX0lTT19BTExPQ0FURUQoQ2hhbm5l
bE1lcmdlck5vZGUpOwogcHVibGljOgotICAgIHN0YXRpYyBSZWZQdHI8Q2hhbm5lbE1lcmdlck5v
ZGU+IGNyZWF0ZShBdWRpb0NvbnRleHQmLCBmbG9hdCBzYW1wbGVSYXRlLCB1bnNpZ25lZCBudW1i
ZXJPZklucHV0cyk7CisgICAgc3RhdGljIFJlZlB0cjxDaGFubmVsTWVyZ2VyTm9kZT4gY3JlYXRl
KEF1ZGlvQ29udGV4dEJhc2UmLCBmbG9hdCBzYW1wbGVSYXRlLCB1bnNpZ25lZCBudW1iZXJPZklu
cHV0cyk7CiAKICAgICAvLyBBdWRpb05vZGUKICAgICB2b2lkIHByb2Nlc3Moc2l6ZV90IGZyYW1l
c1RvUHJvY2Vzcykgb3ZlcnJpZGU7CkBAIC01Miw3ICs1Miw3IEBAIHByaXZhdGU6CiAgICAgZG91
YmxlIHRhaWxUaW1lKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gMDsgfQogICAgIGRvdWJsZSBs
YXRlbmN5VGltZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIDA7IH0KIAotICAgIENoYW5uZWxN
ZXJnZXJOb2RlKEF1ZGlvQ29udGV4dCYsIGZsb2F0IHNhbXBsZVJhdGUsIHVuc2lnbmVkIG51bWJl
ck9mSW5wdXRzKTsKKyAgICBDaGFubmVsTWVyZ2VyTm9kZShBdWRpb0NvbnRleHRCYXNlJiwgZmxv
YXQgc2FtcGxlUmF0ZSwgdW5zaWduZWQgbnVtYmVyT2ZJbnB1dHMpOwogfTsKIAogfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRp
by9DaGFubmVsU3BsaXR0ZXJOb2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVk
aW8vQ2hhbm5lbFNwbGl0dGVyTm9kZS5jcHAKaW5kZXggODJmNjlhMDRmOTkuLmY1NTUzZDBjODM1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0NoYW5uZWxTcGxp
dHRlck5vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQ2hhbm5l
bFNwbGl0dGVyTm9kZS5jcHAKQEAgLTM3LDcgKzM3LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
CiBXVEZfTUFLRV9JU09fQUxMT0NBVEVEX0lNUEwoQ2hhbm5lbFNwbGl0dGVyTm9kZSk7CiAgICAg
Ci1SZWZQdHI8Q2hhbm5lbFNwbGl0dGVyTm9kZT4gQ2hhbm5lbFNwbGl0dGVyTm9kZTo6Y3JlYXRl
KEF1ZGlvQ29udGV4dCYgY29udGV4dCwgZmxvYXQgc2FtcGxlUmF0ZSwgdW5zaWduZWQgbnVtYmVy
T2ZPdXRwdXRzKQorUmVmUHRyPENoYW5uZWxTcGxpdHRlck5vZGU+IENoYW5uZWxTcGxpdHRlck5v
ZGU6OmNyZWF0ZShBdWRpb0NvbnRleHRCYXNlJiBjb250ZXh0LCBmbG9hdCBzYW1wbGVSYXRlLCB1
bnNpZ25lZCBudW1iZXJPZk91dHB1dHMpCiB7CiAgICAgaWYgKCFudW1iZXJPZk91dHB1dHMgfHwg
bnVtYmVyT2ZPdXRwdXRzID4gQXVkaW9Db250ZXh0OjptYXhOdW1iZXJPZkNoYW5uZWxzKCkpCiAg
ICAgICAgIHJldHVybiBudWxscHRyOwpAQCAtNDUsNyArNDUsNyBAQCBSZWZQdHI8Q2hhbm5lbFNw
bGl0dGVyTm9kZT4gQ2hhbm5lbFNwbGl0dGVyTm9kZTo6Y3JlYXRlKEF1ZGlvQ29udGV4dCYgY29u
dGV4dCwgZgogICAgIHJldHVybiBhZG9wdFJlZigqbmV3IENoYW5uZWxTcGxpdHRlck5vZGUoY29u
dGV4dCwgc2FtcGxlUmF0ZSwgbnVtYmVyT2ZPdXRwdXRzKSk7ICAgICAgCiB9CiAKLUNoYW5uZWxT
cGxpdHRlck5vZGU6OkNoYW5uZWxTcGxpdHRlck5vZGUoQXVkaW9Db250ZXh0JiBjb250ZXh0LCBm
bG9hdCBzYW1wbGVSYXRlLCB1bnNpZ25lZCBudW1iZXJPZk91dHB1dHMpCitDaGFubmVsU3BsaXR0
ZXJOb2RlOjpDaGFubmVsU3BsaXR0ZXJOb2RlKEF1ZGlvQ29udGV4dEJhc2UmIGNvbnRleHQsIGZs
b2F0IHNhbXBsZVJhdGUsIHVuc2lnbmVkIG51bWJlck9mT3V0cHV0cykKICAgICA6IEF1ZGlvTm9k
ZShjb250ZXh0LCBzYW1wbGVSYXRlKQogewogICAgIHNldE5vZGVUeXBlKE5vZGVUeXBlQ2hhbm5l
bFNwbGl0dGVyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8v
Q2hhbm5lbFNwbGl0dGVyTm9kZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9D
aGFubmVsU3BsaXR0ZXJOb2RlLmgKaW5kZXggOGQ5ODMyODEyMzcuLjEzZDhkOTgwZGFhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0NoYW5uZWxTcGxpdHRlck5v
ZGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0NoYW5uZWxTcGxpdHRl
ck5vZGUuaApAQCAtMzMsNyArMzMsNyBAQCBjbGFzcyBBdWRpb0NvbnRleHQ7CiBjbGFzcyBDaGFu
bmVsU3BsaXR0ZXJOb2RlIGZpbmFsIDogcHVibGljIEF1ZGlvTm9kZSB7CiAgICAgV1RGX01BS0Vf
SVNPX0FMTE9DQVRFRChDaGFubmVsU3BsaXR0ZXJOb2RlKTsKIHB1YmxpYzoKLSAgICBzdGF0aWMg
UmVmUHRyPENoYW5uZWxTcGxpdHRlck5vZGU+IGNyZWF0ZShBdWRpb0NvbnRleHQmLCBmbG9hdCBz
YW1wbGVSYXRlLCB1bnNpZ25lZCBudW1iZXJPZk91dHB1dHMpOworICAgIHN0YXRpYyBSZWZQdHI8
Q2hhbm5lbFNwbGl0dGVyTm9kZT4gY3JlYXRlKEF1ZGlvQ29udGV4dEJhc2UmLCBmbG9hdCBzYW1w
bGVSYXRlLCB1bnNpZ25lZCBudW1iZXJPZk91dHB1dHMpOwogCiAgICAgLy8gQXVkaW9Ob2RlCiAg
ICAgdm9pZCBwcm9jZXNzKHNpemVfdCBmcmFtZXNUb1Byb2Nlc3MpIG92ZXJyaWRlOwpAQCAtNDMs
NyArNDMsNyBAQCBwcml2YXRlOgogICAgIGRvdWJsZSB0YWlsVGltZSgpIGNvbnN0IG92ZXJyaWRl
IHsgcmV0dXJuIDA7IH0KICAgICBkb3VibGUgbGF0ZW5jeVRpbWUoKSBjb25zdCBvdmVycmlkZSB7
IHJldHVybiAwOyB9CiAKLSAgICBDaGFubmVsU3BsaXR0ZXJOb2RlKEF1ZGlvQ29udGV4dCYsIGZs
b2F0IHNhbXBsZVJhdGUsIHVuc2lnbmVkIG51bWJlck9mT3V0cHV0cyk7CisgICAgQ2hhbm5lbFNw
bGl0dGVyTm9kZShBdWRpb0NvbnRleHRCYXNlJiwgZmxvYXQgc2FtcGxlUmF0ZSwgdW5zaWduZWQg
bnVtYmVyT2ZPdXRwdXRzKTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQ29udm9sdmVyTm9kZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0NvbnZvbHZlck5vZGUuY3BwCmluZGV4IGNj
OTcyZjEwZGJkLi5lMWY1ZWI4MTU2MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJhdWRpby9Db252b2x2ZXJOb2RlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmF1ZGlvL0NvbnZvbHZlck5vZGUuY3BwCkBAIC00Nyw3ICs0Nyw3IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAogV1RGX01BS0VfSVNPX0FMTE9DQVRFRF9JTVBMKENvbnZvbHZlck5vZGUpOwog
Ci1Db252b2x2ZXJOb2RlOjpDb252b2x2ZXJOb2RlKEF1ZGlvQ29udGV4dCYgY29udGV4dCwgZmxv
YXQgc2FtcGxlUmF0ZSkKK0NvbnZvbHZlck5vZGU6OkNvbnZvbHZlck5vZGUoQXVkaW9Db250ZXh0
QmFzZSYgY29udGV4dCwgZmxvYXQgc2FtcGxlUmF0ZSkKICAgICA6IEF1ZGlvTm9kZShjb250ZXh0
LCBzYW1wbGVSYXRlKQogewogICAgIHNldE5vZGVUeXBlKE5vZGVUeXBlQ29udm9sdmVyKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQ29udm9sdmVyTm9kZS5o
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9Db252b2x2ZXJOb2RlLmgKaW5kZXgg
NjRiZmViZWQyZDguLjMxY2VjMWVjYzdmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmF1ZGlvL0NvbnZvbHZlck5vZGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmF1ZGlvL0NvbnZvbHZlck5vZGUuaApAQCAtMzUsNyArMzUsNyBAQCBjbGFzcyBSZXZlcmI7
CiBjbGFzcyBDb252b2x2ZXJOb2RlIGZpbmFsIDogcHVibGljIEF1ZGlvTm9kZSB7CiAgICAgV1RG
X01BS0VfSVNPX0FMTE9DQVRFRChDb252b2x2ZXJOb2RlKTsKIHB1YmxpYzoKLSAgICBzdGF0aWMg
UmVmPENvbnZvbHZlck5vZGU+IGNyZWF0ZShBdWRpb0NvbnRleHQmIGNvbnRleHQsIGZsb2F0IHNh
bXBsZVJhdGUpCisgICAgc3RhdGljIFJlZjxDb252b2x2ZXJOb2RlPiBjcmVhdGUoQXVkaW9Db250
ZXh0QmFzZSYgY29udGV4dCwgZmxvYXQgc2FtcGxlUmF0ZSkKICAgICB7CiAgICAgICAgIHJldHVy
biBhZG9wdFJlZigqbmV3IENvbnZvbHZlck5vZGUoY29udGV4dCwgc2FtcGxlUmF0ZSkpOwogICAg
IH0KQEAgLTQ5LDcgKzQ5LDcgQEAgcHVibGljOgogICAgIHZvaWQgc2V0Tm9ybWFsaXplKGJvb2wg
bm9ybWFsaXplKSB7IG1fbm9ybWFsaXplID0gbm9ybWFsaXplOyB9CiAKIHByaXZhdGU6Ci0gICAg
Q29udm9sdmVyTm9kZShBdWRpb0NvbnRleHQmLCBmbG9hdCBzYW1wbGVSYXRlKTsKKyAgICBDb252
b2x2ZXJOb2RlKEF1ZGlvQ29udGV4dEJhc2UmLCBmbG9hdCBzYW1wbGVSYXRlKTsKIAogICAgIGRv
dWJsZSB0YWlsVGltZSgpIGNvbnN0IGZpbmFsOwogICAgIGRvdWJsZSBsYXRlbmN5VGltZSgpIGNv
bnN0IGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9E
ZWZhdWx0QXVkaW9EZXN0aW5hdGlvbk5vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJhdWRpby9EZWZhdWx0QXVkaW9EZXN0aW5hdGlvbk5vZGUuY3BwCmluZGV4IDE3NTlhZTRhNWE2
Li4wN2ViOWE0MWI1YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRp
by9EZWZhdWx0QXVkaW9EZXN0aW5hdGlvbk5vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViYXVkaW8vRGVmYXVsdEF1ZGlvRGVzdGluYXRpb25Ob2RlLmNwcApAQCAtNDMsNyAr
NDMsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFdURl9NQUtFX0lTT19BTExPQ0FURURfSU1Q
TChEZWZhdWx0QXVkaW9EZXN0aW5hdGlvbk5vZGUpOwogICAgIAotRGVmYXVsdEF1ZGlvRGVzdGlu
YXRpb25Ob2RlOjpEZWZhdWx0QXVkaW9EZXN0aW5hdGlvbk5vZGUoQXVkaW9Db250ZXh0JiBjb250
ZXh0KQorRGVmYXVsdEF1ZGlvRGVzdGluYXRpb25Ob2RlOjpEZWZhdWx0QXVkaW9EZXN0aW5hdGlv
bk5vZGUoQXVkaW9Db250ZXh0QmFzZSYgY29udGV4dCkKICAgICA6IEF1ZGlvRGVzdGluYXRpb25O
b2RlKGNvbnRleHQsIEF1ZGlvRGVzdGluYXRpb246OmhhcmR3YXJlU2FtcGxlUmF0ZSgpKQogewog
ICAgIC8vIE5vZGUtc3BlY2lmaWMgZGVmYXVsdCBtaXhpbmcgcnVsZXMuCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0RlZmF1bHRBdWRpb0Rlc3RpbmF0aW9uTm9k
ZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9EZWZhdWx0QXVkaW9EZXN0aW5h
dGlvbk5vZGUuaAppbmRleCA2ZmQ5NWMwZjMwMS4uOTZjODM3Yzk5MzQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vRGVmYXVsdEF1ZGlvRGVzdGluYXRpb25Ob2Rl
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9EZWZhdWx0QXVkaW9EZXN0
aW5hdGlvbk5vZGUuaApAQCAtMzMsNyArMzMsNyBAQCBjbGFzcyBBdWRpb0Rlc3RpbmF0aW9uOwog
Y2xhc3MgRGVmYXVsdEF1ZGlvRGVzdGluYXRpb25Ob2RlIGZpbmFsIDogcHVibGljIEF1ZGlvRGVz
dGluYXRpb25Ob2RlIHsKICAgICBXVEZfTUFLRV9JU09fQUxMT0NBVEVEKERlZmF1bHRBdWRpb0Rl
c3RpbmF0aW9uTm9kZSk7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxEZWZhdWx0QXVkaW9EZXN0
aW5hdGlvbk5vZGU+IGNyZWF0ZShBdWRpb0NvbnRleHQmIGNvbnRleHQpCisgICAgc3RhdGljIFJl
ZjxEZWZhdWx0QXVkaW9EZXN0aW5hdGlvbk5vZGU+IGNyZWF0ZShBdWRpb0NvbnRleHRCYXNlJiBj
b250ZXh0KQogICAgIHsKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRGVmYXVsdEF1ZGlv
RGVzdGluYXRpb25Ob2RlKGNvbnRleHQpKTsgICAgIAogICAgIH0KQEAgLTQxLDcgKzQxLDcgQEAg
cHVibGljOgogICAgIHZpcnR1YWwgfkRlZmF1bHRBdWRpb0Rlc3RpbmF0aW9uTm9kZSgpOwogICAg
IAogcHJpdmF0ZToKLSAgICBleHBsaWNpdCBEZWZhdWx0QXVkaW9EZXN0aW5hdGlvbk5vZGUoQXVk
aW9Db250ZXh0Jik7CisgICAgZXhwbGljaXQgRGVmYXVsdEF1ZGlvRGVzdGluYXRpb25Ob2RlKEF1
ZGlvQ29udGV4dEJhc2UmKTsKICAgICB2b2lkIGNyZWF0ZURlc3RpbmF0aW9uKCk7CiAKICAgICB2
b2lkIGluaXRpYWxpemUoKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViYXVkaW8vRGVsYXlOb2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVk
aW8vRGVsYXlOb2RlLmNwcAppbmRleCA4MWJkN2QxOWIyNy4uNDA1MjdjODFmOWYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vRGVsYXlOb2RlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0RlbGF5Tm9kZS5jcHAKQEAgLTM3LDE0ICsz
NywxNCBAQCBXVEZfTUFLRV9JU09fQUxMT0NBVEVEX0lNUEwoRGVsYXlOb2RlKTsKIAogY29uc3Qg
ZG91YmxlIG1heGltdW1BbGxvd2VkRGVsYXlUaW1lID0gMTgwOwogCi1pbmxpbmUgRGVsYXlOb2Rl
OjpEZWxheU5vZGUoQXVkaW9Db250ZXh0JiBjb250ZXh0LCBmbG9hdCBzYW1wbGVSYXRlLCBkb3Vi
bGUgbWF4RGVsYXlUaW1lKQoraW5saW5lIERlbGF5Tm9kZTo6RGVsYXlOb2RlKEF1ZGlvQ29udGV4
dEJhc2UmIGNvbnRleHQsIGZsb2F0IHNhbXBsZVJhdGUsIGRvdWJsZSBtYXhEZWxheVRpbWUpCiAg
ICAgOiBBdWRpb0Jhc2ljUHJvY2Vzc29yTm9kZShjb250ZXh0LCBzYW1wbGVSYXRlKQogewogICAg
IHNldE5vZGVUeXBlKE5vZGVUeXBlRGVsYXkpOwogICAgIG1fcHJvY2Vzc29yID0gbWFrZVVuaXF1
ZTxEZWxheVByb2Nlc3Nvcj4oY29udGV4dCwgc2FtcGxlUmF0ZSwgMSwgbWF4RGVsYXlUaW1lKTsK
IH0KIAotRXhjZXB0aW9uT3I8UmVmPERlbGF5Tm9kZT4+IERlbGF5Tm9kZTo6Y3JlYXRlKEF1ZGlv
Q29udGV4dCYgY29udGV4dCwgZmxvYXQgc2FtcGxlUmF0ZSwgZG91YmxlIG1heERlbGF5VGltZSkK
K0V4Y2VwdGlvbk9yPFJlZjxEZWxheU5vZGU+PiBEZWxheU5vZGU6OmNyZWF0ZShBdWRpb0NvbnRl
eHRCYXNlJiBjb250ZXh0LCBmbG9hdCBzYW1wbGVSYXRlLCBkb3VibGUgbWF4RGVsYXlUaW1lKQog
ewogICAgIGlmIChtYXhEZWxheVRpbWUgPD0gMCB8fCBtYXhEZWxheVRpbWUgPj0gbWF4aW11bUFs
bG93ZWREZWxheVRpbWUpCiAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBOb3RTdXBwb3J0ZWRF
cnJvciB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9EZWxh
eU5vZGUuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vRGVsYXlOb2RlLmgKaW5k
ZXggYzllY2FkOWY5ZmQuLmI2YWZkZDBmOTMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmF1ZGlvL0RlbGF5Tm9kZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViYXVkaW8vRGVsYXlOb2RlLmgKQEAgLTMxLDEyICszMSwxMiBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiBjbGFzcyBEZWxheU5vZGUgZmluYWwgOiBwdWJsaWMgQXVkaW9CYXNpY1Byb2Nlc3Nvck5v
ZGUgewogICAgIFdURl9NQUtFX0lTT19BTExPQ0FURUQoRGVsYXlOb2RlKTsKIHB1YmxpYzoKLSAg
ICBzdGF0aWMgRXhjZXB0aW9uT3I8UmVmPERlbGF5Tm9kZT4+IGNyZWF0ZShBdWRpb0NvbnRleHQm
LCBmbG9hdCBzYW1wbGVSYXRlLCBkb3VibGUgbWF4RGVsYXlUaW1lKTsKKyAgICBzdGF0aWMgRXhj
ZXB0aW9uT3I8UmVmPERlbGF5Tm9kZT4+IGNyZWF0ZShBdWRpb0NvbnRleHRCYXNlJiwgZmxvYXQg
c2FtcGxlUmF0ZSwgZG91YmxlIG1heERlbGF5VGltZSk7CiAKICAgICBBdWRpb1BhcmFtKiBkZWxh
eVRpbWUoKTsKIAogcHJpdmF0ZToKLSAgICBEZWxheU5vZGUoQXVkaW9Db250ZXh0JiwgZmxvYXQg
c2FtcGxlUmF0ZSwgZG91YmxlIG1heERlbGF5VGltZSk7CisgICAgRGVsYXlOb2RlKEF1ZGlvQ29u
dGV4dEJhc2UmLCBmbG9hdCBzYW1wbGVSYXRlLCBkb3VibGUgbWF4RGVsYXlUaW1lKTsKIH07CiAK
IH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViYXVkaW8vRGVsYXlQcm9jZXNzb3IuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJhdWRpby9EZWxheVByb2Nlc3Nvci5jcHAKaW5kZXggMTAzNjZlZjZlYWYuLmNiYmZkOWZhMmZh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0RlbGF5UHJvY2Vz
c29yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0RlbGF5UHJvY2Vz
c29yLmNwcApAQCAtMzIsNyArMzIsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLURlbGF5
UHJvY2Vzc29yOjpEZWxheVByb2Nlc3NvcihBdWRpb0NvbnRleHQmIGNvbnRleHQsIGZsb2F0IHNh
bXBsZVJhdGUsIHVuc2lnbmVkIG51bWJlck9mQ2hhbm5lbHMsIGRvdWJsZSBtYXhEZWxheVRpbWUp
CitEZWxheVByb2Nlc3Nvcjo6RGVsYXlQcm9jZXNzb3IoQXVkaW9Db250ZXh0QmFzZSYgY29udGV4
dCwgZmxvYXQgc2FtcGxlUmF0ZSwgdW5zaWduZWQgbnVtYmVyT2ZDaGFubmVscywgZG91YmxlIG1h
eERlbGF5VGltZSkKICAgICA6IEF1ZGlvRFNQS2VybmVsUHJvY2Vzc29yKHNhbXBsZVJhdGUsIG51
bWJlck9mQ2hhbm5lbHMpCiAgICAgLCBtX21heERlbGF5VGltZShtYXhEZWxheVRpbWUpCiB7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0RlbGF5UHJvY2Vzc29y
LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0RlbGF5UHJvY2Vzc29yLmgKaW5k
ZXggODVkOWNjNmQ3ZmQuLmNiYWM3OWVjZjBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmF1ZGlvL0RlbGF5UHJvY2Vzc29yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJhdWRpby9EZWxheVByb2Nlc3Nvci5oCkBAIC0zNiw3ICszNiw3IEBAIGNsYXNzIEF1
ZGlvRFNQS2VybmVsOwogY2xhc3MgRGVsYXlQcm9jZXNzb3IgZmluYWwgOiBwdWJsaWMgQXVkaW9E
U1BLZXJuZWxQcm9jZXNzb3IgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGlj
OgotICAgIERlbGF5UHJvY2Vzc29yKEF1ZGlvQ29udGV4dCYsIGZsb2F0IHNhbXBsZVJhdGUsIHVu
c2lnbmVkIG51bWJlck9mQ2hhbm5lbHMsIGRvdWJsZSBtYXhEZWxheVRpbWUpOworICAgIERlbGF5
UHJvY2Vzc29yKEF1ZGlvQ29udGV4dEJhc2UmLCBmbG9hdCBzYW1wbGVSYXRlLCB1bnNpZ25lZCBu
dW1iZXJPZkNoYW5uZWxzLCBkb3VibGUgbWF4RGVsYXlUaW1lKTsKICAgICB2aXJ0dWFsIH5EZWxh
eVByb2Nlc3NvcigpOwogICAgIAogICAgIHN0ZDo6dW5pcXVlX3B0cjxBdWRpb0RTUEtlcm5lbD4g
Y3JlYXRlS2VybmVsKCkgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmF1ZGlvL0R5bmFtaWNzQ29tcHJlc3Nvck5vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJhdWRpby9EeW5hbWljc0NvbXByZXNzb3JOb2RlLmNwcAppbmRleCAxNDA5NmQ4
ZjBjNS4uYzMzZDFkZTcyZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
YXVkaW8vRHluYW1pY3NDb21wcmVzc29yTm9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJhdWRpby9EeW5hbWljc0NvbXByZXNzb3JOb2RlLmNwcApAQCAtNDEsNyArNDEsNyBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFdURl9NQUtFX0lTT19BTExPQ0FURURfSU1QTChEeW5h
bWljc0NvbXByZXNzb3JOb2RlKTsKIAotRHluYW1pY3NDb21wcmVzc29yTm9kZTo6RHluYW1pY3ND
b21wcmVzc29yTm9kZShBdWRpb0NvbnRleHQmIGNvbnRleHQsIGZsb2F0IHNhbXBsZVJhdGUpCitE
eW5hbWljc0NvbXByZXNzb3JOb2RlOjpEeW5hbWljc0NvbXByZXNzb3JOb2RlKEF1ZGlvQ29udGV4
dEJhc2UmIGNvbnRleHQsIGZsb2F0IHNhbXBsZVJhdGUpCiAgICAgOiBBdWRpb05vZGUoY29udGV4
dCwgc2FtcGxlUmF0ZSkKIHsKICAgICBzZXROb2RlVHlwZShOb2RlVHlwZUR5bmFtaWNzQ29tcHJl
c3Nvcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0R5bmFt
aWNzQ29tcHJlc3Nvck5vZGUuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vRHlu
YW1pY3NDb21wcmVzc29yTm9kZS5oCmluZGV4IDQ0Y2JmYmFhMDU5Li5iNzA1M2IyMjE3MyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9EeW5hbWljc0NvbXByZXNz
b3JOb2RlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9EeW5hbWljc0Nv
bXByZXNzb3JOb2RlLmgKQEAgLTM1LDcgKzM1LDcgQEAgY2xhc3MgRHluYW1pY3NDb21wcmVzc29y
OwogY2xhc3MgRHluYW1pY3NDb21wcmVzc29yTm9kZSBmaW5hbCA6IHB1YmxpYyBBdWRpb05vZGUg
ewogICAgIFdURl9NQUtFX0lTT19BTExPQ0FURUQoRHluYW1pY3NDb21wcmVzc29yTm9kZSk7CiBw
dWJsaWM6Ci0gICAgc3RhdGljIFJlZjxEeW5hbWljc0NvbXByZXNzb3JOb2RlPiBjcmVhdGUoQXVk
aW9Db250ZXh0JiBjb250ZXh0LCBmbG9hdCBzYW1wbGVSYXRlKQorICAgIHN0YXRpYyBSZWY8RHlu
YW1pY3NDb21wcmVzc29yTm9kZT4gY3JlYXRlKEF1ZGlvQ29udGV4dEJhc2UmIGNvbnRleHQsIGZs
b2F0IHNhbXBsZVJhdGUpCiAgICAgewogICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBEeW5h
bWljc0NvbXByZXNzb3JOb2RlKGNvbnRleHQsIHNhbXBsZVJhdGUpKTsKICAgICB9CkBAIC02Miw3
ICs2Miw3IEBAIHByaXZhdGU6CiAgICAgZG91YmxlIHRhaWxUaW1lKCkgY29uc3Qgb3ZlcnJpZGU7
CiAgICAgZG91YmxlIGxhdGVuY3lUaW1lKCkgY29uc3Qgb3ZlcnJpZGU7CiAKLSAgICBEeW5hbWlj
c0NvbXByZXNzb3JOb2RlKEF1ZGlvQ29udGV4dCYsIGZsb2F0IHNhbXBsZVJhdGUpOworICAgIER5
bmFtaWNzQ29tcHJlc3Nvck5vZGUoQXVkaW9Db250ZXh0QmFzZSYsIGZsb2F0IHNhbXBsZVJhdGUp
OwogCiAgICAgc3RkOjp1bmlxdWVfcHRyPER5bmFtaWNzQ29tcHJlc3Nvcj4gbV9keW5hbWljc0Nv
bXByZXNzb3I7CiAgICAgUmVmUHRyPEF1ZGlvUGFyYW0+IG1fdGhyZXNob2xkOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9HYWluTm9kZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0dhaW5Ob2RlLmNwcAppbmRleCAyNTdkZjJlY2UyMy4u
OTg0ZDExOTRiZGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8v
R2Fpbk5vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vR2Fpbk5v
ZGUuY3BwCkBAIC0zNyw3ICszNyw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogV1RGX01BS0Vf
SVNPX0FMTE9DQVRFRF9JTVBMKEdhaW5Ob2RlKTsKIAotR2Fpbk5vZGU6OkdhaW5Ob2RlKEF1ZGlv
Q29udGV4dCYgY29udGV4dCwgZmxvYXQgc2FtcGxlUmF0ZSkKK0dhaW5Ob2RlOjpHYWluTm9kZShB
dWRpb0NvbnRleHRCYXNlJiBjb250ZXh0LCBmbG9hdCBzYW1wbGVSYXRlKQogICAgIDogQXVkaW9O
b2RlKGNvbnRleHQsIHNhbXBsZVJhdGUpCiAgICAgLCBtX2xhc3RHYWluKDEuMCkKICAgICAsIG1f
c2FtcGxlQWNjdXJhdGVHYWluVmFsdWVzKEF1ZGlvTm9kZTo6UHJvY2Vzc2luZ1NpemVJbkZyYW1l
cykgLy8gRklYTUU6IGNhbiBwcm9iYWJseSBzaGFyZSB0ZW1wIGJ1ZmZlciBpbiBjb250ZXh0CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0dhaW5Ob2RlLmggYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0dhaW5Ob2RlLmgKaW5kZXggZmE4NWIwYjlm
ZjUuLmRjZjg1NWE5MWM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1
ZGlvL0dhaW5Ob2RlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9HYWlu
Tm9kZS5oCkBAIC0zOCw3ICszOCw3IEBAIGNsYXNzIEF1ZGlvQ29udGV4dDsKIGNsYXNzIEdhaW5O
b2RlIGZpbmFsIDogcHVibGljIEF1ZGlvTm9kZSB7CiAgICAgV1RGX01BS0VfSVNPX0FMTE9DQVRF
RChHYWluTm9kZSk7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxHYWluTm9kZT4gY3JlYXRlKEF1
ZGlvQ29udGV4dCYgY29udGV4dCwgZmxvYXQgc2FtcGxlUmF0ZSkKKyAgICBzdGF0aWMgUmVmPEdh
aW5Ob2RlPiBjcmVhdGUoQXVkaW9Db250ZXh0QmFzZSYgY29udGV4dCwgZmxvYXQgc2FtcGxlUmF0
ZSkKICAgICB7CiAgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEdhaW5Ob2RlKGNvbnRleHQs
IHNhbXBsZVJhdGUpKTsKICAgICB9CkBAIC01Nyw3ICs1Nyw3IEBAIHByaXZhdGU6CiAgICAgZG91
YmxlIHRhaWxUaW1lKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gMDsgfQogICAgIGRvdWJsZSBs
YXRlbmN5VGltZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIDA7IH0KIAotICAgIEdhaW5Ob2Rl
KEF1ZGlvQ29udGV4dCYsIGZsb2F0IHNhbXBsZVJhdGUpOworICAgIEdhaW5Ob2RlKEF1ZGlvQ29u
dGV4dEJhc2UmLCBmbG9hdCBzYW1wbGVSYXRlKTsKIAogICAgIGZsb2F0IG1fbGFzdEdhaW47IC8v
IGZvciBkZS16aXBwZXJpbmcKICAgICBSZWZQdHI8QXVkaW9QYXJhbT4gbV9nYWluOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9NZWRpYUVsZW1lbnRBdWRpb1Nv
dXJjZU5vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9NZWRpYUVsZW1l
bnRBdWRpb1NvdXJjZU5vZGUuY3BwCmluZGV4IDBlNTk4MWZhNjg2Li5jNjc1ZDdkZTcxNiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9NZWRpYUVsZW1lbnRBdWRp
b1NvdXJjZU5vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vTWVk
aWFFbGVtZW50QXVkaW9Tb3VyY2VOb2RlLmNwcApAQCAtNDMsMTIgKzQzLDEyIEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAogV1RGX01BS0VfSVNPX0FMTE9DQVRFRF9JTVBMKE1lZGlhRWxlbWVudEF1
ZGlvU291cmNlTm9kZSk7CiAKLVJlZjxNZWRpYUVsZW1lbnRBdWRpb1NvdXJjZU5vZGU+IE1lZGlh
RWxlbWVudEF1ZGlvU291cmNlTm9kZTo6Y3JlYXRlKEF1ZGlvQ29udGV4dCYgY29udGV4dCwgSFRN
TE1lZGlhRWxlbWVudCYgbWVkaWFFbGVtZW50KQorUmVmPE1lZGlhRWxlbWVudEF1ZGlvU291cmNl
Tm9kZT4gTWVkaWFFbGVtZW50QXVkaW9Tb3VyY2VOb2RlOjpjcmVhdGUoQXVkaW9Db250ZXh0QmFz
ZSYgY29udGV4dCwgSFRNTE1lZGlhRWxlbWVudCYgbWVkaWFFbGVtZW50KQogewogICAgIHJldHVy
biBhZG9wdFJlZigqbmV3IE1lZGlhRWxlbWVudEF1ZGlvU291cmNlTm9kZShjb250ZXh0LCBtZWRp
YUVsZW1lbnQpKTsKIH0KIAotTWVkaWFFbGVtZW50QXVkaW9Tb3VyY2VOb2RlOjpNZWRpYUVsZW1l
bnRBdWRpb1NvdXJjZU5vZGUoQXVkaW9Db250ZXh0JiBjb250ZXh0LCBIVE1MTWVkaWFFbGVtZW50
JiBtZWRpYUVsZW1lbnQpCitNZWRpYUVsZW1lbnRBdWRpb1NvdXJjZU5vZGU6Ok1lZGlhRWxlbWVu
dEF1ZGlvU291cmNlTm9kZShBdWRpb0NvbnRleHRCYXNlJiBjb250ZXh0LCBIVE1MTWVkaWFFbGVt
ZW50JiBtZWRpYUVsZW1lbnQpCiAgICAgOiBBdWRpb05vZGUoY29udGV4dCwgY29udGV4dC5zYW1w
bGVSYXRlKCkpCiAgICAgLCBtX21lZGlhRWxlbWVudChtZWRpYUVsZW1lbnQpCiAgICAgLCBtX3Nv
dXJjZU51bWJlck9mQ2hhbm5lbHMoMCkKQEAgLTk3LDcgKzk3LDcgQEAgdm9pZCBNZWRpYUVsZW1l
bnRBdWRpb1NvdXJjZU5vZGU6OnNldEZvcm1hdChzaXplX3QgbnVtYmVyT2ZDaGFubmVscywgZmxv
YXQgc291cmMKIAogICAgICAgICB7CiAgICAgICAgICAgICAvLyBUaGUgY29udGV4dCBtdXN0IGJl
IGxvY2tlZCB3aGVuIGNoYW5naW5nIHRoZSBudW1iZXIgb2Ygb3V0cHV0IGNoYW5uZWxzLgotICAg
ICAgICAgICAgQXVkaW9Db250ZXh0OjpBdXRvTG9ja2VyIGNvbnRleHRMb2NrZXIoY29udGV4dCgp
KTsKKyAgICAgICAgICAgIEF1ZGlvQ29udGV4dEJhc2U6OkF1dG9Mb2NrZXIgY29udGV4dExvY2tl
cihjb250ZXh0KCkpOwogCiAgICAgICAgICAgICAvLyBEbyBhbnkgbmVjZXNzc2FyeSByZS1jb25m
aWd1cmF0aW9uIHRvIHRoZSBvdXRwdXQncyBudW1iZXIgb2YgY2hhbm5lbHMuCiAgICAgICAgICAg
ICBvdXRwdXQoMCktPnNldE51bWJlck9mQ2hhbm5lbHMobnVtYmVyT2ZDaGFubmVscyk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL01lZGlhRWxlbWVudEF1ZGlv
U291cmNlTm9kZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9NZWRpYUVsZW1l
bnRBdWRpb1NvdXJjZU5vZGUuaAppbmRleCAzYTEzMTU0MTVmMS4uNzFkMGVkMTM4YTUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vTWVkaWFFbGVtZW50QXVkaW9T
b3VyY2VOb2RlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9NZWRpYUVs
ZW1lbnRBdWRpb1NvdXJjZU5vZGUuaApAQCAtNDAsNyArNDAsNyBAQCBjbGFzcyBBdWRpb0NvbnRl
eHQ7CiBjbGFzcyBNZWRpYUVsZW1lbnRBdWRpb1NvdXJjZU5vZGUgZmluYWwgOiBwdWJsaWMgQXVk
aW9Ob2RlLCBwdWJsaWMgQXVkaW9Tb3VyY2VQcm92aWRlckNsaWVudCB7CiAgICAgV1RGX01BS0Vf
SVNPX0FMTE9DQVRFRChNZWRpYUVsZW1lbnRBdWRpb1NvdXJjZU5vZGUpOwogcHVibGljOgotICAg
IHN0YXRpYyBSZWY8TWVkaWFFbGVtZW50QXVkaW9Tb3VyY2VOb2RlPiBjcmVhdGUoQXVkaW9Db250
ZXh0JiwgSFRNTE1lZGlhRWxlbWVudCYpOworICAgIHN0YXRpYyBSZWY8TWVkaWFFbGVtZW50QXVk
aW9Tb3VyY2VOb2RlPiBjcmVhdGUoQXVkaW9Db250ZXh0QmFzZSYsIEhUTUxNZWRpYUVsZW1lbnQm
KTsKIAogICAgIHZpcnR1YWwgfk1lZGlhRWxlbWVudEF1ZGlvU291cmNlTm9kZSgpOwogCkBAIC01
Nyw3ICs1Nyw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHVubG9jaygpOwogCiBwcml2YXRlOgotICAg
IE1lZGlhRWxlbWVudEF1ZGlvU291cmNlTm9kZShBdWRpb0NvbnRleHQmLCBIVE1MTWVkaWFFbGVt
ZW50Jik7CisgICAgTWVkaWFFbGVtZW50QXVkaW9Tb3VyY2VOb2RlKEF1ZGlvQ29udGV4dEJhc2Um
LCBIVE1MTWVkaWFFbGVtZW50Jik7CiAKICAgICBkb3VibGUgdGFpbFRpbWUoKSBjb25zdCBvdmVy
cmlkZSB7IHJldHVybiAwOyB9CiAgICAgZG91YmxlIGxhdGVuY3lUaW1lKCkgY29uc3Qgb3ZlcnJp
ZGUgeyByZXR1cm4gMDsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJh
dWRpby9NZWRpYVN0cmVhbUF1ZGlvRGVzdGluYXRpb25Ob2RlLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViYXVkaW8vTWVkaWFTdHJlYW1BdWRpb0Rlc3RpbmF0aW9uTm9kZS5jcHAKaW5k
ZXggZDc2NjI5MzAzMDguLjMwZjFhMjIyYmUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmF1ZGlvL01lZGlhU3RyZWFtQXVkaW9EZXN0aW5hdGlvbk5vZGUuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vTWVkaWFTdHJlYW1BdWRpb0Rlc3RpbmF0
aW9uTm9kZS5jcHAKQEAgLTM5LDEyICszOSwxMiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFdU
Rl9NQUtFX0lTT19BTExPQ0FURURfSU1QTChNZWRpYVN0cmVhbUF1ZGlvRGVzdGluYXRpb25Ob2Rl
KTsKIAotUmVmPE1lZGlhU3RyZWFtQXVkaW9EZXN0aW5hdGlvbk5vZGU+IE1lZGlhU3RyZWFtQXVk
aW9EZXN0aW5hdGlvbk5vZGU6OmNyZWF0ZShBdWRpb0NvbnRleHQmIGNvbnRleHQsIHNpemVfdCBu
dW1iZXJPZkNoYW5uZWxzKQorUmVmPE1lZGlhU3RyZWFtQXVkaW9EZXN0aW5hdGlvbk5vZGU+IE1l
ZGlhU3RyZWFtQXVkaW9EZXN0aW5hdGlvbk5vZGU6OmNyZWF0ZShBdWRpb0NvbnRleHRCYXNlJiBj
b250ZXh0LCBzaXplX3QgbnVtYmVyT2ZDaGFubmVscykKIHsKICAgICByZXR1cm4gYWRvcHRSZWYo
Km5ldyBNZWRpYVN0cmVhbUF1ZGlvRGVzdGluYXRpb25Ob2RlKGNvbnRleHQsIG51bWJlck9mQ2hh
bm5lbHMpKTsKIH0KIAotTWVkaWFTdHJlYW1BdWRpb0Rlc3RpbmF0aW9uTm9kZTo6TWVkaWFTdHJl
YW1BdWRpb0Rlc3RpbmF0aW9uTm9kZShBdWRpb0NvbnRleHQmIGNvbnRleHQsIHNpemVfdCBudW1i
ZXJPZkNoYW5uZWxzKQorTWVkaWFTdHJlYW1BdWRpb0Rlc3RpbmF0aW9uTm9kZTo6TWVkaWFTdHJl
YW1BdWRpb0Rlc3RpbmF0aW9uTm9kZShBdWRpb0NvbnRleHRCYXNlJiBjb250ZXh0LCBzaXplX3Qg
bnVtYmVyT2ZDaGFubmVscykKICAgICA6IEF1ZGlvQmFzaWNJbnNwZWN0b3JOb2RlKGNvbnRleHQs
IGNvbnRleHQuc2FtcGxlUmF0ZSgpLCBudW1iZXJPZkNoYW5uZWxzKQogICAgICwgbV9zb3VyY2Uo
TWVkaWFTdHJlYW1BdWRpb1NvdXJjZTo6Y3JlYXRlKGNvbnRleHQuc2FtcGxlUmF0ZSgpKSkKICAg
ICAsIG1fc3RyZWFtKE1lZGlhU3RyZWFtOjpjcmVhdGUoKmNvbnRleHQuZG9jdW1lbnQoKSwgTWVk
aWFTdHJlYW1Qcml2YXRlOjpjcmVhdGUoY29udGV4dC5kb2N1bWVudCgpLT5sb2dnZXIoKSwgbV9z
b3VyY2UuY29weVJlZigpKSkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmF1ZGlvL01lZGlhU3RyZWFtQXVkaW9EZXN0aW5hdGlvbk5vZGUuaCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViYXVkaW8vTWVkaWFTdHJlYW1BdWRpb0Rlc3RpbmF0aW9uTm9kZS5oCmluZGV4
IGY1YTdlOGZlYzRhLi5kYmFkOTI4ZDc5NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJhdWRpby9NZWRpYVN0cmVhbUF1ZGlvRGVzdGluYXRpb25Ob2RlLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9NZWRpYVN0cmVhbUF1ZGlvRGVzdGluYXRpb25O
b2RlLmgKQEAgLTMyLDEzICszMiwxMyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNz
IEF1ZGlvQ29udGV4dDsKK2NsYXNzIEF1ZGlvQ29udGV4dEJhc2U7CiBjbGFzcyBNZWRpYVN0cmVh
bUF1ZGlvU291cmNlOwogCiBjbGFzcyBNZWRpYVN0cmVhbUF1ZGlvRGVzdGluYXRpb25Ob2RlIGZp
bmFsIDogcHVibGljIEF1ZGlvQmFzaWNJbnNwZWN0b3JOb2RlIHsKICAgICBXVEZfTUFLRV9JU09f
QUxMT0NBVEVEKE1lZGlhU3RyZWFtQXVkaW9EZXN0aW5hdGlvbk5vZGUpOwogcHVibGljOgotICAg
IHN0YXRpYyBSZWY8TWVkaWFTdHJlYW1BdWRpb0Rlc3RpbmF0aW9uTm9kZT4gY3JlYXRlKEF1ZGlv
Q29udGV4dCYsIHNpemVfdCBudW1iZXJPZkNoYW5uZWxzKTsKKyAgICBzdGF0aWMgUmVmPE1lZGlh
U3RyZWFtQXVkaW9EZXN0aW5hdGlvbk5vZGU+IGNyZWF0ZShBdWRpb0NvbnRleHRCYXNlJiwgc2l6
ZV90IG51bWJlck9mQ2hhbm5lbHMpOwogCiAgICAgdmlydHVhbCB+TWVkaWFTdHJlYW1BdWRpb0Rl
c3RpbmF0aW9uTm9kZSgpOwogCkBAIC00OSw3ICs0OSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHJl
c2V0KCkgZmluYWw7CiAgICAgCiBwcml2YXRlOgotICAgIE1lZGlhU3RyZWFtQXVkaW9EZXN0aW5h
dGlvbk5vZGUoQXVkaW9Db250ZXh0Jiwgc2l6ZV90IG51bWJlck9mQ2hhbm5lbHMpOworICAgIE1l
ZGlhU3RyZWFtQXVkaW9EZXN0aW5hdGlvbk5vZGUoQXVkaW9Db250ZXh0QmFzZSYsIHNpemVfdCBu
dW1iZXJPZkNoYW5uZWxzKTsKIAogICAgIGRvdWJsZSB0YWlsVGltZSgpIGNvbnN0IGZpbmFsIHsg
cmV0dXJuIDA7IH0KICAgICBkb3VibGUgbGF0ZW5jeVRpbWUoKSBjb25zdCBmaW5hbCB7IHJldHVy
biAwOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL01lZGlh
U3RyZWFtQXVkaW9Tb3VyY2VOb2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVk
aW8vTWVkaWFTdHJlYW1BdWRpb1NvdXJjZU5vZGUuY3BwCmluZGV4IDFiNGZiNmQxOTIyLi4zNWU1
NWE5MjAyYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9NZWRp
YVN0cmVhbUF1ZGlvU291cmNlTm9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJhdWRpby9NZWRpYVN0cmVhbUF1ZGlvU291cmNlTm9kZS5jcHAKQEAgLTM4LDEyICszOCwxMiBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFdURl9NQUtFX0lTT19BTExPQ0FURURfSU1QTChNZWRp
YVN0cmVhbUF1ZGlvU291cmNlTm9kZSk7CiAKLVJlZjxNZWRpYVN0cmVhbUF1ZGlvU291cmNlTm9k
ZT4gTWVkaWFTdHJlYW1BdWRpb1NvdXJjZU5vZGU6OmNyZWF0ZShBdWRpb0NvbnRleHQmIGNvbnRl
eHQsIE1lZGlhU3RyZWFtJiBtZWRpYVN0cmVhbSwgTWVkaWFTdHJlYW1UcmFjayYgYXVkaW9UcmFj
aykKK1JlZjxNZWRpYVN0cmVhbUF1ZGlvU291cmNlTm9kZT4gTWVkaWFTdHJlYW1BdWRpb1NvdXJj
ZU5vZGU6OmNyZWF0ZShBdWRpb0NvbnRleHRCYXNlJiBjb250ZXh0LCBNZWRpYVN0cmVhbSYgbWVk
aWFTdHJlYW0sIE1lZGlhU3RyZWFtVHJhY2smIGF1ZGlvVHJhY2spCiB7CiAgICAgcmV0dXJuIGFk
b3B0UmVmKCpuZXcgTWVkaWFTdHJlYW1BdWRpb1NvdXJjZU5vZGUoY29udGV4dCwgbWVkaWFTdHJl
YW0sIGF1ZGlvVHJhY2spKTsKIH0KIAotTWVkaWFTdHJlYW1BdWRpb1NvdXJjZU5vZGU6Ok1lZGlh
U3RyZWFtQXVkaW9Tb3VyY2VOb2RlKEF1ZGlvQ29udGV4dCYgY29udGV4dCwgTWVkaWFTdHJlYW0m
IG1lZGlhU3RyZWFtLCBNZWRpYVN0cmVhbVRyYWNrJiBhdWRpb1RyYWNrKQorTWVkaWFTdHJlYW1B
dWRpb1NvdXJjZU5vZGU6Ok1lZGlhU3RyZWFtQXVkaW9Tb3VyY2VOb2RlKEF1ZGlvQ29udGV4dEJh
c2UmIGNvbnRleHQsIE1lZGlhU3RyZWFtJiBtZWRpYVN0cmVhbSwgTWVkaWFTdHJlYW1UcmFjayYg
YXVkaW9UcmFjaykKICAgICA6IEF1ZGlvTm9kZShjb250ZXh0LCBjb250ZXh0LnNhbXBsZVJhdGUo
KSkKICAgICAsIG1fbWVkaWFTdHJlYW0obWVkaWFTdHJlYW0pCiAgICAgLCBtX2F1ZGlvVHJhY2so
YXVkaW9UcmFjaykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8v
TWVkaWFTdHJlYW1BdWRpb1NvdXJjZU5vZGUuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
YXVkaW8vTWVkaWFTdHJlYW1BdWRpb1NvdXJjZU5vZGUuaAppbmRleCBlM2VkZWZlMWJkNS4uYzcy
ZDMxMjIzM2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vTWVk
aWFTdHJlYW1BdWRpb1NvdXJjZU5vZGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmF1ZGlvL01lZGlhU3RyZWFtQXVkaW9Tb3VyY2VOb2RlLmgKQEAgLTQwLDcgKzQwLDcgQEAgY2xh
c3MgTXVsdGlDaGFubmVsUmVzYW1wbGVyOwogY2xhc3MgTWVkaWFTdHJlYW1BdWRpb1NvdXJjZU5v
ZGUgZmluYWwgOiBwdWJsaWMgQXVkaW9Ob2RlLCBwdWJsaWMgQXVkaW9Tb3VyY2VQcm92aWRlckNs
aWVudCB7CiAgICAgV1RGX01BS0VfSVNPX0FMTE9DQVRFRChNZWRpYVN0cmVhbUF1ZGlvU291cmNl
Tm9kZSk7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxNZWRpYVN0cmVhbUF1ZGlvU291cmNlTm9k
ZT4gY3JlYXRlKEF1ZGlvQ29udGV4dCYsIE1lZGlhU3RyZWFtJiwgTWVkaWFTdHJlYW1UcmFjayYp
OworICAgIHN0YXRpYyBSZWY8TWVkaWFTdHJlYW1BdWRpb1NvdXJjZU5vZGU+IGNyZWF0ZShBdWRp
b0NvbnRleHRCYXNlJiwgTWVkaWFTdHJlYW0mLCBNZWRpYVN0cmVhbVRyYWNrJik7CiAKICAgICB2
aXJ0dWFsIH5NZWRpYVN0cmVhbUF1ZGlvU291cmNlTm9kZSgpOwogCkBAIC01NCw3ICs1NCw3IEBA
IHB1YmxpYzoKICAgICB2b2lkIHNldEZvcm1hdChzaXplX3QgbnVtYmVyT2ZDaGFubmVscywgZmxv
YXQgc2FtcGxlUmF0ZSkgb3ZlcnJpZGU7CiAKIHByaXZhdGU6Ci0gICAgTWVkaWFTdHJlYW1BdWRp
b1NvdXJjZU5vZGUoQXVkaW9Db250ZXh0JiwgTWVkaWFTdHJlYW0mLCBNZWRpYVN0cmVhbVRyYWNr
Jik7CisgICAgTWVkaWFTdHJlYW1BdWRpb1NvdXJjZU5vZGUoQXVkaW9Db250ZXh0QmFzZSYsIE1l
ZGlhU3RyZWFtJiwgTWVkaWFTdHJlYW1UcmFjayYpOwogCiAgICAgZG91YmxlIHRhaWxUaW1lKCkg
Y29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gMDsgfQogICAgIGRvdWJsZSBsYXRlbmN5VGltZSgpIGNv
bnN0IG92ZXJyaWRlIHsgcmV0dXJuIDA7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViYXVkaW8vT2ZmbGluZUF1ZGlvQ29udGV4dC5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmF1ZGlvL09mZmxpbmVBdWRpb0NvbnRleHQuaWRsCmluZGV4IGM2ZTBkNzRmMDJm
Li42ZjEyMmE3YzNjOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRp
by9PZmZsaW5lQXVkaW9Db250ZXh0LmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmF1ZGlvL09mZmxpbmVBdWRpb0NvbnRleHQuaWRsCkBAIC0yOCw2ICsyOCw2IEBACiAgICAgQ29u
c3RydWN0b3IodW5zaWduZWQgbG9uZyBudW1iZXJPZkNoYW5uZWxzLCB1bnNpZ25lZCBsb25nIG51
bWJlck9mRnJhbWVzLCB1bnJlc3RyaWN0ZWQgZmxvYXQgc2FtcGxlUmF0ZSksCiAgICAgQ29uc3Ry
dWN0b3JNYXlUaHJvd0V4Y2VwdGlvbiwKICAgICBDb25zdHJ1Y3RvckNhbGxXaXRoPVNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQsCi0gICAgSW50ZXJmYWNlTmFtZT13ZWJraXRPZmZsaW5lQXVkaW9Db250
ZXh0CisgICAgRW5hYmxlZEJ5U2V0dGluZz1Nb2Rlcm5VbnByZWZpeGVkV2ViQXVkaW8sCiBdIGlu
dGVyZmFjZSBPZmZsaW5lQXVkaW9Db250ZXh0IDogQXVkaW9Db250ZXh0IHsKIH07CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL09mZmxpbmVBdWRpb0Rlc3RpbmF0
aW9uTm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL09mZmxpbmVBdWRp
b0Rlc3RpbmF0aW9uTm9kZS5jcHAKaW5kZXggNmExOTU1NDZjZjcuLmZlYzUwOGNiZmYxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL09mZmxpbmVBdWRpb0Rlc3Rp
bmF0aW9uTm9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9PZmZs
aW5lQXVkaW9EZXN0aW5hdGlvbk5vZGUuY3BwCkBAIC00MSw3ICs0MSw3IEBAIFdURl9NQUtFX0lT
T19BTExPQ0FURURfSU1QTChPZmZsaW5lQXVkaW9EZXN0aW5hdGlvbk5vZGUpOwogICAgIAogY29u
c3Qgc2l6ZV90IHJlbmRlclF1YW50dW1TaXplID0gMTI4OyAgICAKIAotT2ZmbGluZUF1ZGlvRGVz
dGluYXRpb25Ob2RlOjpPZmZsaW5lQXVkaW9EZXN0aW5hdGlvbk5vZGUoQXVkaW9Db250ZXh0JiBj
b250ZXh0LCBBdWRpb0J1ZmZlciogcmVuZGVyVGFyZ2V0KQorT2ZmbGluZUF1ZGlvRGVzdGluYXRp
b25Ob2RlOjpPZmZsaW5lQXVkaW9EZXN0aW5hdGlvbk5vZGUoQXVkaW9Db250ZXh0QmFzZSYgY29u
dGV4dCwgQXVkaW9CdWZmZXIqIHJlbmRlclRhcmdldCkKICAgICA6IEF1ZGlvRGVzdGluYXRpb25O
b2RlKGNvbnRleHQsIHJlbmRlclRhcmdldC0+c2FtcGxlUmF0ZSgpKQogICAgICwgbV9yZW5kZXJU
YXJnZXQocmVuZGVyVGFyZ2V0KQogICAgICwgbV9zdGFydGVkUmVuZGVyaW5nKGZhbHNlKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9PZmZsaW5lQXVkaW9EZXN0
aW5hdGlvbk5vZGUuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vT2ZmbGluZUF1
ZGlvRGVzdGluYXRpb25Ob2RlLmgKaW5kZXggZGEyNDk1NzRkNDguLmY4NzEwZmRlMTBkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL09mZmxpbmVBdWRpb0Rlc3Rp
bmF0aW9uTm9kZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vT2ZmbGlu
ZUF1ZGlvRGVzdGluYXRpb25Ob2RlLmgKQEAgLTM3LDkgKzM3LDkgQEAgY2xhc3MgQXVkaW9Db250
ZXh0OwogY2xhc3MgT2ZmbGluZUF1ZGlvRGVzdGluYXRpb25Ob2RlIGZpbmFsIDogcHVibGljIEF1
ZGlvRGVzdGluYXRpb25Ob2RlIHsKICAgICBXVEZfTUFLRV9JU09fQUxMT0NBVEVEKE9mZmxpbmVB
dWRpb0Rlc3RpbmF0aW9uTm9kZSk7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxPZmZsaW5lQXVk
aW9EZXN0aW5hdGlvbk5vZGU+IGNyZWF0ZShBdWRpb0NvbnRleHQmIGNvbnRleHQsIEF1ZGlvQnVm
ZmVyKiByZW5kZXJUYXJnZXQpCisgICAgc3RhdGljIFJlZjxPZmZsaW5lQXVkaW9EZXN0aW5hdGlv
bk5vZGU+IGNyZWF0ZShBdWRpb0NvbnRleHRCYXNlJiBjb250ZXh0LCBBdWRpb0J1ZmZlciogcmVu
ZGVyVGFyZ2V0KQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgT2ZmbGluZUF1
ZGlvRGVzdGluYXRpb25Ob2RlKGNvbnRleHQsIHJlbmRlclRhcmdldCkpOyAgICAgCisgICAgICAg
IHJldHVybiBhZG9wdFJlZigqbmV3IE9mZmxpbmVBdWRpb0Rlc3RpbmF0aW9uTm9kZShjb250ZXh0
LCByZW5kZXJUYXJnZXQpKTsKICAgICB9CiAKICAgICB2aXJ0dWFsIH5PZmZsaW5lQXVkaW9EZXN0
aW5hdGlvbk5vZGUoKTsKQEAgLTU1LDcgKzU1LDcgQEAgcHVibGljOgogICAgIGZsb2F0IHNhbXBs
ZVJhdGUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX3JlbmRlclRhcmdldC0+c2FtcGxlUmF0
ZSgpOyB9CiAKIHByaXZhdGU6Ci0gICAgT2ZmbGluZUF1ZGlvRGVzdGluYXRpb25Ob2RlKEF1ZGlv
Q29udGV4dCYsIEF1ZGlvQnVmZmVyKiByZW5kZXJUYXJnZXQpOworICAgIE9mZmxpbmVBdWRpb0Rl
c3RpbmF0aW9uTm9kZShBdWRpb0NvbnRleHRCYXNlJiwgQXVkaW9CdWZmZXIqIHJlbmRlclRhcmdl
dCk7CiAKICAgICAvLyBUaGlzIEF1ZGlvTm9kZSByZW5kZXJzIGludG8gdGhpcyBBdWRpb0J1ZmZl
ci4KICAgICBSZWZQdHI8QXVkaW9CdWZmZXI+IG1fcmVuZGVyVGFyZ2V0OwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9Pc2NpbGxhdG9yTm9kZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL09zY2lsbGF0b3JOb2RlLmNwcAppbmRleCA5NTYw
MDUzYTQ4MC4uZThmMzFjNzIyMGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViYXVkaW8vT3NjaWxsYXRvck5vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViYXVkaW8vT3NjaWxsYXRvck5vZGUuY3BwCkBAIC00NSwxMiArNDUsMTIgQEAgUGVyaW9kaWNX
YXZlKiBPc2NpbGxhdG9yTm9kZTo6c19wZXJpb2RpY1dhdmVTcXVhcmUgPSBudWxscHRyOwogUGVy
aW9kaWNXYXZlKiBPc2NpbGxhdG9yTm9kZTo6c19wZXJpb2RpY1dhdmVTYXd0b290aCA9IG51bGxw
dHI7CiBQZXJpb2RpY1dhdmUqIE9zY2lsbGF0b3JOb2RlOjpzX3BlcmlvZGljV2F2ZVRyaWFuZ2xl
ID0gbnVsbHB0cjsKIAotUmVmPE9zY2lsbGF0b3JOb2RlPiBPc2NpbGxhdG9yTm9kZTo6Y3JlYXRl
KEF1ZGlvQ29udGV4dCYgY29udGV4dCwgZmxvYXQgc2FtcGxlUmF0ZSkKK1JlZjxPc2NpbGxhdG9y
Tm9kZT4gT3NjaWxsYXRvck5vZGU6OmNyZWF0ZShBdWRpb0NvbnRleHRCYXNlJiBjb250ZXh0LCBm
bG9hdCBzYW1wbGVSYXRlKQogewogICAgIHJldHVybiBhZG9wdFJlZigqbmV3IE9zY2lsbGF0b3JO
b2RlKGNvbnRleHQsIHNhbXBsZVJhdGUpKTsKIH0KIAotT3NjaWxsYXRvck5vZGU6Ok9zY2lsbGF0
b3JOb2RlKEF1ZGlvQ29udGV4dCYgY29udGV4dCwgZmxvYXQgc2FtcGxlUmF0ZSkKK09zY2lsbGF0
b3JOb2RlOjpPc2NpbGxhdG9yTm9kZShBdWRpb0NvbnRleHRCYXNlJiBjb250ZXh0LCBmbG9hdCBz
YW1wbGVSYXRlKQogICAgIDogQXVkaW9TY2hlZHVsZWRTb3VyY2VOb2RlKGNvbnRleHQsIHNhbXBs
ZVJhdGUpCiAgICAgLCBtX2ZpcnN0UmVuZGVyKHRydWUpCiAgICAgLCBtX3ZpcnR1YWxSZWFkSW5k
ZXgoMCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vT3NjaWxs
YXRvck5vZGUuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vT3NjaWxsYXRvck5v
ZGUuaAppbmRleCA0MmZmMGMxOTI0Yi4uMDg5NWJjZTNkZGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vT3NjaWxsYXRvck5vZGUuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmF1ZGlvL09zY2lsbGF0b3JOb2RlLmgKQEAgLTQ1LDcgKzQ1LDcgQEAg
cHVibGljOgogICAgICAgICBDdXN0b20KICAgICB9OwogCi0gICAgc3RhdGljIFJlZjxPc2NpbGxh
dG9yTm9kZT4gY3JlYXRlKEF1ZGlvQ29udGV4dCYsIGZsb2F0IHNhbXBsZVJhdGUpOworICAgIHN0
YXRpYyBSZWY8T3NjaWxsYXRvck5vZGU+IGNyZWF0ZShBdWRpb0NvbnRleHRCYXNlJiwgZmxvYXQg
c2FtcGxlUmF0ZSk7CiAKICAgICB2aXJ0dWFsIH5Pc2NpbGxhdG9yTm9kZSgpOwogCkBAIC02MCw3
ICs2MCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldFBlcmlvZGljV2F2ZShQZXJpb2RpY1dhdmUq
KTsKIAogcHJpdmF0ZToKLSAgICBPc2NpbGxhdG9yTm9kZShBdWRpb0NvbnRleHQmLCBmbG9hdCBz
YW1wbGVSYXRlKTsKKyAgICBPc2NpbGxhdG9yTm9kZShBdWRpb0NvbnRleHRCYXNlJiwgZmxvYXQg
c2FtcGxlUmF0ZSk7CiAKICAgICB2b2lkIHByb2Nlc3Moc2l6ZV90IGZyYW1lc1RvUHJvY2Vzcykg
ZmluYWw7CiAgICAgdm9pZCByZXNldCgpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJhdWRpby9QYW5uZXJOb2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViYXVkaW8vUGFubmVyTm9kZS5jcHAKaW5kZXggZWM4MGU2OWQyYWIuLmFlNDJmMTE0YmJj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1Bhbm5lck5vZGUu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vUGFubmVyTm9kZS5jcHAK
QEAgLTQ4LDggKzQ4LDEzIEBAIHN0YXRpYyB2b2lkIGZpeE5BTnMoZG91YmxlICZ4KQogICAgICAg
ICB4ID0gMC4wOwogfQogCi1QYW5uZXJOb2RlOjpQYW5uZXJOb2RlKEF1ZGlvQ29udGV4dCYgY29u
dGV4dCwgZmxvYXQgc2FtcGxlUmF0ZSkKK1Bhbm5lck5vZGVCYXNlOjpQYW5uZXJOb2RlQmFzZShB
dWRpb0NvbnRleHRCYXNlJiBjb250ZXh0LCBmbG9hdCBzYW1wbGVSYXRlKQogICAgIDogQXVkaW9O
b2RlKGNvbnRleHQsIHNhbXBsZVJhdGUpCit7Cit9CisKK1Bhbm5lck5vZGU6OlBhbm5lck5vZGUo
QXVkaW9Db250ZXh0JiBjb250ZXh0LCBmbG9hdCBzYW1wbGVSYXRlKQorICAgIDogUGFubmVyTm9k
ZUJhc2UoY29udGV4dCwgc2FtcGxlUmF0ZSkKICAgICAsIG1fcGFubmluZ01vZGVsKFBhbm5pbmdN
b2RlbFR5cGU6OkhSVEYpCiAgICAgLCBtX2xhc3RHYWluKC0xLjApCiAgICAgLCBtX3Bvc2l0aW9u
WChBdWRpb1BhcmFtOjpjcmVhdGUoY29udGV4dCwgInBvc2l0aW9uWCJfcywgMCwgLUZMVF9NQVgs
IEZMVF9NQVgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9Q
YW5uZXJOb2RlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1Bhbm5lck5vZGUu
aAppbmRleCA4NDgwYzIzMzI4MC4uMjliNjQ4ZDA2MDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViYXVkaW8vUGFubmVyTm9kZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViYXVkaW8vUGFubmVyTm9kZS5oCkBAIC0yNiw2ICsyNiw3IEBACiAKICNpZiBFTkFC
TEUoV0VCX0FVRElPKQogCisjaW5jbHVkZSAiQXVkaW9Db250ZXh0LmgiCiAjaW5jbHVkZSAiQXVk
aW9MaXN0ZW5lci5oIgogI2luY2x1ZGUgIkF1ZGlvTm9kZS5oIgogI2luY2x1ZGUgIkF1ZGlvUGFy
YW0uaCIKQEAgLTQxLDYgKzQyLDE2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgSFJU
RkRhdGFiYXNlTG9hZGVyOwogCitjbGFzcyBQYW5uZXJOb2RlQmFzZSA6IHB1YmxpYyBBdWRpb05v
ZGUgeworcHVibGljOgorICAgIHZpcnR1YWwgflBhbm5lck5vZGVCYXNlKCkgPSBkZWZhdWx0Owor
CisgICAgdmlydHVhbCBmbG9hdCBkb3BwbGVyUmF0ZSgpID0gMDsKKworcHJvdGVjdGVkOgorICAg
IFBhbm5lck5vZGVCYXNlKEF1ZGlvQ29udGV4dEJhc2UmLCBmbG9hdCBzYW1wbGVSYXRlKTsKK307
CisKIC8vIFBhbm5lck5vZGUgaXMgYW4gQXVkaW9Ob2RlIHdpdGggb25lIGlucHV0IGFuZCBvbmUg
b3V0cHV0LgogLy8gSXQgcG9zaXRpb25zIGEgc291bmQgaW4gM0Qgc3BhY2UsIHdpdGggdGhlIGV4
YWN0IGVmZmVjdCBkZXBlbmRlbnQgb24gdGhlIHBhbm5pbmcgbW9kZWwuCiAvLyBJdCBoYXMgYSBw
b3NpdGlvbiBhbmQgYW4gb3JpZW50YXRpb24gaW4gM0Qgc3BhY2Ugd2hpY2ggaXMgcmVsYXRpdmUg
dG8gdGhlIHBvc2l0aW9uIGFuZCBvcmllbnRhdGlvbiBvZiB0aGUgY29udGV4dCdzIEF1ZGlvTGlz
dGVuZXIuCkBAIC00OCw3ICs1OSw3IEBAIGNsYXNzIEhSVEZEYXRhYmFzZUxvYWRlcjsKIC8vIEEg
Y29uZSBlZmZlY3Qgd2lsbCBhdHRlbnVhdGUgdGhlIGdhaW4gYXMgdGhlIG9yaWVudGF0aW9uIG1v
dmVzIGF3YXkgZnJvbSB0aGUgbGlzdGVuZXIuCiAvLyBBbGwgb2YgdGhlc2UgZWZmZWN0cyBmb2xs
b3cgdGhlIE9wZW5BTCBzcGVjaWZpY2F0aW9uIHZlcnkgY2xvc2VseS4KIAotY2xhc3MgUGFubmVy
Tm9kZSBmaW5hbCA6IHB1YmxpYyBBdWRpb05vZGUgeworY2xhc3MgUGFubmVyTm9kZSBmaW5hbCA6
IHB1YmxpYyBQYW5uZXJOb2RlQmFzZSB7CiAgICAgV1RGX01BS0VfSVNPX0FMTE9DQVRFRChQYW5u
ZXJOb2RlKTsKIHB1YmxpYzoKICAgICBzdGF0aWMgUmVmPFBhbm5lck5vZGU+IGNyZWF0ZShBdWRp
b0NvbnRleHQmIGNvbnRleHQsIGZsb2F0IHNhbXBsZVJhdGUpCkBAIC01OCw2ICs2OSw5IEBAIHB1
YmxpYzoKIAogICAgIHZpcnR1YWwgflBhbm5lck5vZGUoKTsKIAorICAgIEF1ZGlvQ29udGV4dCYg
Y29udGV4dCgpIHsgcmV0dXJuIGRvd25jYXN0PEF1ZGlvQ29udGV4dD4oQXVkaW9Ob2RlOjpjb250
ZXh0KCkpOyB9CisgICAgY29uc3QgQXVkaW9Db250ZXh0JiBjb250ZXh0KCkgY29uc3QgeyByZXR1
cm4gZG93bmNhc3Q8QXVkaW9Db250ZXh0PihBdWRpb05vZGU6OmNvbnRleHQoKSk7IH0KKwogICAg
IC8vIEF1ZGlvTm9kZQogICAgIHZvaWQgcHJvY2VzcyhzaXplX3QgZnJhbWVzVG9Qcm9jZXNzKSBv
dmVycmlkZTsKICAgICB2b2lkIHB1bGxJbnB1dHMoc2l6ZV90IGZyYW1lc1RvUHJvY2Vzcykgb3Zl
cnJpZGU7CkBAIC0xMTEsNyArMTI1LDcgQEAgcHVibGljOgogICAgIHZvaWQgc2V0Q29uZU91dGVy
R2Fpbihkb3VibGUgYW5nbGUpIHsgbV9jb25lRWZmZWN0LnNldE91dGVyR2FpbihhbmdsZSk7IH0K
IAogICAgIHZvaWQgZ2V0QXppbXV0aEVsZXZhdGlvbihkb3VibGUqIG91dEF6aW11dGgsIGRvdWJs
ZSogb3V0RWxldmF0aW9uKTsKLSAgICBmbG9hdCBkb3BwbGVyUmF0ZSgpOworICAgIGZsb2F0IGRv
cHBsZXJSYXRlKCkgZmluYWw7CiAKICAgICAvLyBBY2Nlc3NvcnMgZm9yIGR5bmFtaWNhbGx5IGNh
bGN1bGF0ZWQgZ2FpbiB2YWx1ZXMuCiAgICAgQXVkaW9QYXJhbSogZGlzdGFuY2VHYWluKCkgeyBy
ZXR1cm4gbV9kaXN0YW5jZUdhaW4uZ2V0KCk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViYXVkaW8vUGFubmVyTm9kZS5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmF1ZGlvL1Bhbm5lck5vZGUuaWRsCmluZGV4IDAzMjk4MzdkMmY1Li4zMmQ4OTFkYzJhZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9QYW5uZXJOb2RlLmlk
bAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1Bhbm5lck5vZGUuaWRsCkBA
IC00Miw3ICs0Miw3IEBACiBbCiAgICAgQ29uZGl0aW9uYWw9V0VCX0FVRElPLAogICAgIEpTR2Vu
ZXJhdGVUb0pTT2JqZWN0LAotICAgIEludGVyZmFjZU5hbWU9d2Via2l0QXVkaW9QYW5uZXJOb2Rl
LAorICAgIEVuYWJsZWRCeVNldHRpbmc9TW9kZXJuVW5wcmVmaXhlZFdlYkF1ZGlvLAogXSBpbnRl
cmZhY2UgUGFubmVyTm9kZSA6IEF1ZGlvTm9kZSB7CiAgICAgLy8gRGVmYXVsdCBtb2RlbCBmb3Ig
c3RlcmVvIGlzIEhSVEYgCiAgICAgYXR0cmlidXRlIFBhbm5pbmdNb2RlbFR5cGUgcGFubmluZ01v
ZGVsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9TY3JpcHRQ
cm9jZXNzb3JOb2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vU2NyaXB0
UHJvY2Vzc29yTm9kZS5jcHAKaW5kZXggOTFjNzUzN2UxNWUuLjc2MTBiMTUwMjQ4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1NjcmlwdFByb2Nlc3Nvck5vZGUu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vU2NyaXB0UHJvY2Vzc29y
Tm9kZS5jcHAKQEAgLTQ0LDEyICs0NCwxMiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFdURl9N
QUtFX0lTT19BTExPQ0FURURfSU1QTChTY3JpcHRQcm9jZXNzb3JOb2RlKTsKIAotUmVmPFNjcmlw
dFByb2Nlc3Nvck5vZGU+IFNjcmlwdFByb2Nlc3Nvck5vZGU6OmNyZWF0ZShBdWRpb0NvbnRleHQm
IGNvbnRleHQsIGZsb2F0IHNhbXBsZVJhdGUsIHNpemVfdCBidWZmZXJTaXplLCB1bnNpZ25lZCBu
dW1iZXJPZklucHV0Q2hhbm5lbHMsIHVuc2lnbmVkIG51bWJlck9mT3V0cHV0Q2hhbm5lbHMpCitS
ZWY8U2NyaXB0UHJvY2Vzc29yTm9kZT4gU2NyaXB0UHJvY2Vzc29yTm9kZTo6Y3JlYXRlKEF1ZGlv
Q29udGV4dEJhc2UmIGNvbnRleHQsIGZsb2F0IHNhbXBsZVJhdGUsIHNpemVfdCBidWZmZXJTaXpl
LCB1bnNpZ25lZCBudW1iZXJPZklucHV0Q2hhbm5lbHMsIHVuc2lnbmVkIG51bWJlck9mT3V0cHV0
Q2hhbm5lbHMpCiB7CiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2NyaXB0UHJvY2Vzc29yTm9k
ZShjb250ZXh0LCBzYW1wbGVSYXRlLCBidWZmZXJTaXplLCBudW1iZXJPZklucHV0Q2hhbm5lbHMs
IG51bWJlck9mT3V0cHV0Q2hhbm5lbHMpKTsKIH0KIAotU2NyaXB0UHJvY2Vzc29yTm9kZTo6U2Ny
aXB0UHJvY2Vzc29yTm9kZShBdWRpb0NvbnRleHQmIGNvbnRleHQsIGZsb2F0IHNhbXBsZVJhdGUs
IHNpemVfdCBidWZmZXJTaXplLCB1bnNpZ25lZCBudW1iZXJPZklucHV0Q2hhbm5lbHMsIHVuc2ln
bmVkIG51bWJlck9mT3V0cHV0Q2hhbm5lbHMpCitTY3JpcHRQcm9jZXNzb3JOb2RlOjpTY3JpcHRQ
cm9jZXNzb3JOb2RlKEF1ZGlvQ29udGV4dEJhc2UmIGNvbnRleHQsIGZsb2F0IHNhbXBsZVJhdGUs
IHNpemVfdCBidWZmZXJTaXplLCB1bnNpZ25lZCBudW1iZXJPZklucHV0Q2hhbm5lbHMsIHVuc2ln
bmVkIG51bWJlck9mT3V0cHV0Q2hhbm5lbHMpCiAgICAgOiBBdWRpb05vZGUoY29udGV4dCwgc2Ft
cGxlUmF0ZSkKICAgICAsIEFjdGl2ZURPTU9iamVjdChjb250ZXh0LnNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQoKSkKICAgICAsIG1fZG91YmxlQnVmZmVySW5kZXgoMCkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vU2NyaXB0UHJvY2Vzc29yTm9kZS5oIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9TY3JpcHRQcm9jZXNzb3JOb2RlLmgKaW5kZXggNWE0
ZTdjZTQ3NTIuLjRjMTRhMDc1N2RmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmF1ZGlvL1NjcmlwdFByb2Nlc3Nvck5vZGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmF1ZGlvL1NjcmlwdFByb2Nlc3Nvck5vZGUuaApAQCAtNTIsNyArNTIsNyBAQCBwdWJs
aWM6CiAgICAgLy8gVGhpcyB2YWx1ZSBjb250cm9scyBob3cgZnJlcXVlbnRseSB0aGUgb25hdWRp
b3Byb2Nlc3MgZXZlbnQgaGFuZGxlciBpcyBjYWxsZWQgYW5kIGhvdyBtYW55IHNhbXBsZS1mcmFt
ZXMgbmVlZCB0byBiZSBwcm9jZXNzZWQgZWFjaCBjYWxsLgogICAgIC8vIExvd2VyIG51bWJlcnMg
Zm9yIGJ1ZmZlclNpemUgd2lsbCByZXN1bHQgaW4gYSBsb3dlciAoYmV0dGVyKSBsYXRlbmN5LiBI
aWdoZXIgbnVtYmVycyB3aWxsIGJlIG5lY2Vzc2FyeSB0byBhdm9pZCBhdWRpbyBicmVha3VwIGFu
ZCBnbGl0Y2hlcy4KICAgICAvLyBUaGUgdmFsdWUgY2hvc2VuIG11c3QgY2FyZWZ1bGx5IGJhbGFu
Y2UgYmV0d2VlbiBsYXRlbmN5IGFuZCBhdWRpbyBxdWFsaXR5LgotICAgIHN0YXRpYyBSZWY8U2Ny
aXB0UHJvY2Vzc29yTm9kZT4gY3JlYXRlKEF1ZGlvQ29udGV4dCYsIGZsb2F0IHNhbXBsZVJhdGUs
IHNpemVfdCBidWZmZXJTaXplLCB1bnNpZ25lZCBudW1iZXJPZklucHV0Q2hhbm5lbHMsIHVuc2ln
bmVkIG51bWJlck9mT3V0cHV0Q2hhbm5lbHMpOworICAgIHN0YXRpYyBSZWY8U2NyaXB0UHJvY2Vz
c29yTm9kZT4gY3JlYXRlKEF1ZGlvQ29udGV4dEJhc2UmLCBmbG9hdCBzYW1wbGVSYXRlLCBzaXpl
X3QgYnVmZmVyU2l6ZSwgdW5zaWduZWQgbnVtYmVyT2ZJbnB1dENoYW5uZWxzLCB1bnNpZ25lZCBu
dW1iZXJPZk91dHB1dENoYW5uZWxzKTsKIAogICAgIHZpcnR1YWwgflNjcmlwdFByb2Nlc3Nvck5v
ZGUoKTsKIApAQCAtNzEsNyArNzEsNyBAQCBwcml2YXRlOgogICAgIGRvdWJsZSB0YWlsVGltZSgp
IGNvbnN0IG92ZXJyaWRlOwogICAgIGRvdWJsZSBsYXRlbmN5VGltZSgpIGNvbnN0IG92ZXJyaWRl
OwogCi0gICAgU2NyaXB0UHJvY2Vzc29yTm9kZShBdWRpb0NvbnRleHQmLCBmbG9hdCBzYW1wbGVS
YXRlLCBzaXplX3QgYnVmZmVyU2l6ZSwgdW5zaWduZWQgbnVtYmVyT2ZJbnB1dENoYW5uZWxzLCB1
bnNpZ25lZCBudW1iZXJPZk91dHB1dENoYW5uZWxzKTsKKyAgICBTY3JpcHRQcm9jZXNzb3JOb2Rl
KEF1ZGlvQ29udGV4dEJhc2UmLCBmbG9hdCBzYW1wbGVSYXRlLCBzaXplX3QgYnVmZmVyU2l6ZSwg
dW5zaWduZWQgbnVtYmVyT2ZJbnB1dENoYW5uZWxzLCB1bnNpZ25lZCBudW1iZXJPZk91dHB1dENo
YW5uZWxzKTsKIAogICAgIHZvaWQgZmlyZVByb2Nlc3NFdmVudCgpOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1dhdmVTaGFwZXJOb2RlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vV2F2ZVNoYXBlck5vZGUuY3BwCmluZGV4IDZlN2U4
ZGQxYzljLi5hZTRhZjlmMjMyZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJhdWRpby9XYXZlU2hhcGVyTm9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJhdWRpby9XYXZlU2hhcGVyTm9kZS5jcHAKQEAgLTM1LDcgKzM1LDcgQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogCiBXVEZfTUFLRV9JU09fQUxMT0NBVEVEX0lNUEwoV2F2ZVNoYXBlck5vZGUpOwog
Ci1XYXZlU2hhcGVyTm9kZTo6V2F2ZVNoYXBlck5vZGUoQXVkaW9Db250ZXh0JiBjb250ZXh0KQor
V2F2ZVNoYXBlck5vZGU6OldhdmVTaGFwZXJOb2RlKEF1ZGlvQ29udGV4dEJhc2UmIGNvbnRleHQp
CiAgICAgOiBBdWRpb0Jhc2ljUHJvY2Vzc29yTm9kZShjb250ZXh0LCBjb250ZXh0LnNhbXBsZVJh
dGUoKSkKIHsKICAgICBzZXROb2RlVHlwZShOb2RlVHlwZVdhdmVTaGFwZXIpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9XYXZlU2hhcGVyTm9kZS5oIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9XYXZlU2hhcGVyTm9kZS5oCmluZGV4IGY0OWUz
NDliYzNkLi41ZjQ5MzI4YjIyZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJhdWRpby9XYXZlU2hhcGVyTm9kZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
YXVkaW8vV2F2ZVNoYXBlck5vZGUuaApAQCAtMzMsNyArMzMsNyBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiBjbGFzcyBXYXZlU2hhcGVyTm9kZSBmaW5hbCA6IHB1YmxpYyBBdWRpb0Jhc2ljUHJvY2Vz
c29yTm9kZSB7CiAgICAgV1RGX01BS0VfSVNPX0FMTE9DQVRFRChXYXZlU2hhcGVyTm9kZSk7CiBw
dWJsaWM6Ci0gICAgc3RhdGljIFJlZjxXYXZlU2hhcGVyTm9kZT4gY3JlYXRlKEF1ZGlvQ29udGV4
dCYgY29udGV4dCkKKyAgICBzdGF0aWMgUmVmPFdhdmVTaGFwZXJOb2RlPiBjcmVhdGUoQXVkaW9D
b250ZXh0QmFzZSYgY29udGV4dCkKICAgICB7CiAgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3
IFdhdmVTaGFwZXJOb2RlKGNvbnRleHQpKTsKICAgICB9CkBAIC00OSw3ICs0OSw3IEBAIHB1Ymxp
YzoKICAgICBkb3VibGUgbGF0ZW5jeSgpIGNvbnN0IHsgcmV0dXJuIGxhdGVuY3lUaW1lKCk7IH0K
IAogcHJpdmF0ZTogICAgCi0gICAgZXhwbGljaXQgV2F2ZVNoYXBlck5vZGUoQXVkaW9Db250ZXh0
Jik7ICAgIAorICAgIGV4cGxpY2l0IFdhdmVTaGFwZXJOb2RlKEF1ZGlvQ29udGV4dEJhc2UmKTsK
IAogICAgIFdhdmVTaGFwZXJQcm9jZXNzb3IqIHdhdmVTaGFwZXJQcm9jZXNzb3IoKSB7IHJldHVy
biBzdGF0aWNfY2FzdDxXYXZlU2hhcGVyUHJvY2Vzc29yKj4ocHJvY2Vzc29yKCkpOyB9CiB9Owpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9XZWJLaXRBdWRpb0Nv
bnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9XZWJLaXRBdWRpb0Nv
bnRleHQuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi5jMjBmMWI3
ZTBiNAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8v
V2ViS2l0QXVkaW9Db250ZXh0LmNwcApAQCAtMCwwICsxLDEzOTUgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdo
dCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVS
UE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMK
KyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTgorICogQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTCisgKiBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5j
bHVkZSAiY29uZmlnLmgiCisKKyNpZiBFTkFCTEUoV0VCX0FVRElPKQorCisjaW5jbHVkZSAiV2Vi
S2l0QXVkaW9Db250ZXh0LmgiCisKKyNpbmNsdWRlICJBbmFseXNlck5vZGUuaCIKKyNpbmNsdWRl
ICJBc3luY0F1ZGlvRGVjb2Rlci5oIgorI2luY2x1ZGUgIkF1ZGlvQnVmZmVyLmgiCisjaW5jbHVk
ZSAiQXVkaW9CdWZmZXJDYWxsYmFjay5oIgorI2luY2x1ZGUgIkF1ZGlvQnVmZmVyU291cmNlTm9k
ZS5oIgorI2luY2x1ZGUgIkF1ZGlvTGlzdGVuZXIuaCIKKyNpbmNsdWRlICJBdWRpb05vZGVJbnB1
dC5oIgorI2luY2x1ZGUgIkF1ZGlvTm9kZU91dHB1dC5oIgorI2luY2x1ZGUgIkF1ZGlvU2Vzc2lv
bi5oIgorI2luY2x1ZGUgIkJpcXVhZEZpbHRlck5vZGUuaCIKKyNpbmNsdWRlICJDaGFubmVsTWVy
Z2VyTm9kZS5oIgorI2luY2x1ZGUgIkNoYW5uZWxTcGxpdHRlck5vZGUuaCIKKyNpbmNsdWRlICJD
b252b2x2ZXJOb2RlLmgiCisjaW5jbHVkZSAiRGVmYXVsdEF1ZGlvRGVzdGluYXRpb25Ob2RlLmgi
CisjaW5jbHVkZSAiRGVsYXlOb2RlLmgiCisjaW5jbHVkZSAiRG9jdW1lbnQuaCIKKyNpbmNsdWRl
ICJEeW5hbWljc0NvbXByZXNzb3JOb2RlLmgiCisjaW5jbHVkZSAiRXZlbnROYW1lcy5oIgorI2lu
Y2x1ZGUgIkZGVEZyYW1lLmgiCisjaW5jbHVkZSAiRnJhbWUuaCIKKyNpbmNsdWRlICJGcmFtZUxv
YWRlci5oIgorI2luY2x1ZGUgIkdhaW5Ob2RlLmgiCisjaW5jbHVkZSAiR2VuZXJpY0V2ZW50UXVl
dWUuaCIKKyNpbmNsdWRlICJIUlRGRGF0YWJhc2VMb2FkZXIuaCIKKyNpbmNsdWRlICJIUlRGUGFu
bmVyLmgiCisjaW5jbHVkZSAiSlNET01Qcm9taXNlRGVmZXJyZWQuaCIKKyNpbmNsdWRlICJMb2dn
aW5nLmgiCisjaW5jbHVkZSAiTmV0d29ya2luZ0NvbnRleHQuaCIKKyNpbmNsdWRlICJPZmZsaW5l
QXVkaW9Db21wbGV0aW9uRXZlbnQuaCIKKyNpbmNsdWRlICJPZmZsaW5lQXVkaW9EZXN0aW5hdGlv
bk5vZGUuaCIKKyNpbmNsdWRlICJPc2NpbGxhdG9yTm9kZS5oIgorI2luY2x1ZGUgIlBhZ2UuaCIK
KyNpbmNsdWRlICJQZXJpb2RpY1dhdmUuaCIKKyNpbmNsdWRlICJQbGF0Zm9ybU1lZGlhU2Vzc2lv
bk1hbmFnZXIuaCIKKyNpbmNsdWRlICJTY3JpcHRDb250cm9sbGVyLmgiCisjaW5jbHVkZSAiU2Ny
aXB0UHJvY2Vzc29yTm9kZS5oIgorI2luY2x1ZGUgIldhdmVTaGFwZXJOb2RlLmgiCisjaW5jbHVk
ZSAiV2ViS2l0QXVkaW9QYW5uZXJOb2RlLmgiCisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvU2Ny
aXB0Q2FsbFN0YWNrLmg+CisKKyNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQorI2luY2x1ZGUgIk1l
ZGlhU3RyZWFtLmgiCisjaW5jbHVkZSAiTWVkaWFTdHJlYW1BdWRpb0Rlc3RpbmF0aW9uTm9kZS5o
IgorI2luY2x1ZGUgIk1lZGlhU3RyZWFtQXVkaW9Tb3VyY2UuaCIKKyNpbmNsdWRlICJNZWRpYVN0
cmVhbUF1ZGlvU291cmNlTm9kZS5oIgorI2VuZGlmCisKKyNpZiBFTkFCTEUoVklERU8pCisjaW5j
bHVkZSAiSFRNTE1lZGlhRWxlbWVudC5oIgorI2luY2x1ZGUgIk1lZGlhRWxlbWVudEF1ZGlvU291
cmNlTm9kZS5oIgorI2VuZGlmCisKKyNpZiBERUJVR19BVURJT05PREVfUkVGRVJFTkNFUworI2lu
Y2x1ZGUgPHN0ZGlvLmg+CisjZW5kaWYKKworI2lmIFVTRShHU1RSRUFNRVIpCisjaW5jbHVkZSAi
R1N0cmVhbWVyQ29tbW9uLmgiCisjZW5kaWYKKworI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCisj
aW5jbHVkZSAiU2NyaXB0Q29udHJvbGxlci5oIgorI2luY2x1ZGUgIlNldHRpbmdzLmgiCisjZW5k
aWYKKworI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0FycmF5QnVmZmVyLmg+CisjaW5jbHVkZSA8
d3RmL0F0b21pY3MuaD4KKyNpbmNsdWRlIDx3dGYvSXNvTWFsbG9jSW5saW5lcy5oPgorI2luY2x1
ZGUgPHd0Zi9NYWluVGhyZWFkLmg+CisjaW5jbHVkZSA8d3RmL1JlZi5oPgorI2luY2x1ZGUgPHd0
Zi9SZWZDb3VudGVkLmg+CisjaW5jbHVkZSA8d3RmL1Njb3BlLmg+CisjaW5jbHVkZSA8d3RmL3Rl
eHQvV1RGU3RyaW5nLmg+CisKK2NvbnN0IHVuc2lnbmVkIE1heFBlcmlvZGljV2F2ZUxlbmd0aCA9
IDQwOTY7CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworI2RlZmluZSBSRUxFQVNFX0xPR19JRl9B
TExPV0VEKGZtdCwgLi4uKSBSRUxFQVNFX0xPR19JRihkb2N1bWVudCgpICYmIGRvY3VtZW50KCkt
PnBhZ2UoKSAmJiBkb2N1bWVudCgpLT5wYWdlKCktPmlzQWx3YXlzT25Mb2dnaW5nQWxsb3dlZCgp
LCBNZWRpYSwgIiVwIC0gV2ViS2l0QXVkaW9Db250ZXh0OjoiIGZtdCwgdGhpcywgIyNfX1ZBX0FS
R1NfXykKKworYm9vbCBXZWJLaXRBdWRpb0NvbnRleHQ6OmlzU2FtcGxlUmF0ZVJhbmdlR29vZChm
bG9hdCBzYW1wbGVSYXRlKQoreworICAgIC8vIEZJWE1FOiBJdCB3b3VsZCBiZSBuaWNlIGlmIHRo
ZSBtaW5pbXVtIHNhbXBsZS1yYXRlIGNvdWxkIGJlIGxlc3MgdGhhbiA0NC4xS0h6LAorICAgIC8v
IGJ1dCB0aGF0IHdpbGwgcmVxdWlyZSBzb21lIGZpeGVzIGluIEhSVEZQYW5uZXI6OmZmdFNpemVG
b3JTYW1wbGVSYXRlKCksIGFuZCBzb21lIHRlc3RpbmcgdGhlcmUuCisgICAgcmV0dXJuIHNhbXBs
ZVJhdGUgPj0gNDQxMDAgJiYgc2FtcGxlUmF0ZSA8PSA5NjAwMDsKK30KKworI2lmIE9TKFdJTkRP
V1MpCisvLyBEb24ndCBhbGxvdyBtb3JlIHRoYW4gdGhpcyBudW1iZXIgb2Ygc2ltdWx0YW5lb3Vz
IEF1ZGlvQ29udGV4dHMgdGFsa2luZyB0byBoYXJkd2FyZS4KK2NvbnN0ZXhwciB1bnNpZ25lZCBt
YXhIYXJkd2FyZUNvbnRleHRzID0gNDsKKyNlbmRpZgordW5zaWduZWQgV2ViS2l0QXVkaW9Db250
ZXh0OjpzX2hhcmR3YXJlQ29udGV4dENvdW50ID0gMDsKKworRXhjZXB0aW9uT3I8UmVmPFdlYktp
dEF1ZGlvQ29udGV4dD4+IFdlYktpdEF1ZGlvQ29udGV4dDo6Y3JlYXRlKERvY3VtZW50JiBkb2N1
bWVudCkKK3sKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworI2lmIE9TKFdJTkRPV1MpCisg
ICAgaWYgKHNfaGFyZHdhcmVDb250ZXh0Q291bnQgPj0gbWF4SGFyZHdhcmVDb250ZXh0cykKKyAg
ICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IFF1b3RhRXhjZWVkZWRFcnJvciB9OworI2VuZGlmCisK
KyAgICBhdXRvIGF1ZGlvQ29udGV4dCA9IGFkb3B0UmVmKCpuZXcgV2ViS2l0QXVkaW9Db250ZXh0
KGRvY3VtZW50KSk7CisgICAgYXVkaW9Db250ZXh0LT5zdXNwZW5kSWZOZWVkZWQoKTsKKyAgICBy
ZXR1cm4gYXVkaW9Db250ZXh0OworfQorCisvLyBDb25zdHJ1Y3RvciBmb3IgcmVuZGVyaW5nIHRv
IHRoZSBhdWRpbyBoYXJkd2FyZS4KK1dlYktpdEF1ZGlvQ29udGV4dDo6V2ViS2l0QXVkaW9Db250
ZXh0KERvY3VtZW50JiBkb2N1bWVudCkKKyAgICA6IEF1ZGlvQ29udGV4dEJhc2UoZG9jdW1lbnQp
CisjaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECisgICAgLCBtX2xvZ2dlcihkb2N1bWVudC5sb2dn
ZXIoKSkKKyAgICAsIG1fbG9nSWRlbnRpZmllcih1bmlxdWVMb2dJZGVudGlmaWVyKCkpCisjZW5k
aWYKKyAgICAsIG1fbWVkaWFTZXNzaW9uKFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpjcmVhdGUoUGxh
dGZvcm1NZWRpYVNlc3Npb25NYW5hZ2VyOjpzaGFyZWRNYW5hZ2VyKCksICp0aGlzKSkKKyAgICAs
IG1fZXZlbnRRdWV1ZShNYWluVGhyZWFkR2VuZXJpY0V2ZW50UXVldWU6OmNyZWF0ZSgqdGhpcykp
Cit7CisgICAgLy8gQWNjb3JkaW5nIHRvIHNwZWMgQXVkaW9Db250ZXh0IG11c3QgZGllIG9ubHkg
YWZ0ZXIgcGFnZSBuYXZpZ2F0ZS4KKyAgICAvLyBMZXRzIG1hcmsgaXQgYXMgQWN0aXZlRE9NT2Jq
ZWN0IHdpdGggcGVuZGluZyBhY3Rpdml0eSBhbmQgdW5tYXJrIGl0IGluIGNsZWFyIG1ldGhvZC4K
KyAgICBtYWtlUGVuZGluZ0FjdGl2aXR5KCk7CisKKyAgICBjb25zdHJ1Y3RDb21tb24oKTsKKwor
ICAgIG1fZGVzdGluYXRpb25Ob2RlID0gRGVmYXVsdEF1ZGlvRGVzdGluYXRpb25Ob2RlOjpjcmVh
dGUoKnRoaXMpOworCisgICAgLy8gSW5pdGlhbGl6ZSB0aGUgZGVzdGluYXRpb24gbm9kZSdzIG11
dGVkIHN0YXRlIHRvIG1hdGNoIHRoZSBwYWdlJ3MgY3VycmVudCBtdXRlZCBzdGF0ZS4KKyAgICBw
YWdlTXV0ZWRTdGF0ZURpZENoYW5nZSgpOworCisgICAgZG9jdW1lbnQuYWRkQXVkaW9Qcm9kdWNl
cigqdGhpcyk7CisgICAgZG9jdW1lbnQucmVnaXN0ZXJGb3JWaXNpYmlsaXR5U3RhdGVDaGFuZ2Vk
Q2FsbGJhY2tzKCp0aGlzKTsKK30KKworLy8gQ29uc3RydWN0b3IgZm9yIG9mZmxpbmUgKG5vbi1y
ZWFsdGltZSkgcmVuZGVyaW5nLgorV2ViS2l0QXVkaW9Db250ZXh0OjpXZWJLaXRBdWRpb0NvbnRl
eHQoRG9jdW1lbnQmIGRvY3VtZW50LCBBdWRpb0J1ZmZlciogcmVuZGVyVGFyZ2V0KQorICAgIDog
QXVkaW9Db250ZXh0QmFzZShkb2N1bWVudCkKKyNpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKKyAg
ICAsIG1fbG9nZ2VyKGRvY3VtZW50LmxvZ2dlcigpKQorICAgICwgbV9sb2dJZGVudGlmaWVyKHVu
aXF1ZUxvZ0lkZW50aWZpZXIoKSkKKyNlbmRpZgorICAgICwgbV9pc09mZmxpbmVDb250ZXh0KHRy
dWUpCisgICAgLCBtX21lZGlhU2Vzc2lvbihQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6Y3JlYXRlKFBs
YXRmb3JtTWVkaWFTZXNzaW9uTWFuYWdlcjo6c2hhcmVkTWFuYWdlcigpLCAqdGhpcykpCisgICAg
LCBtX2V2ZW50UXVldWUoTWFpblRocmVhZEdlbmVyaWNFdmVudFF1ZXVlOjpjcmVhdGUoKnRoaXMp
KQorICAgICwgbV9yZW5kZXJUYXJnZXQocmVuZGVyVGFyZ2V0KQoreworICAgIGNvbnN0cnVjdENv
bW1vbigpOworCisgICAgLy8gQ3JlYXRlIGEgbmV3IGRlc3RpbmF0aW9uIGZvciBvZmZsaW5lIHJl
bmRlcmluZy4KKyAgICBtX2Rlc3RpbmF0aW9uTm9kZSA9IE9mZmxpbmVBdWRpb0Rlc3RpbmF0aW9u
Tm9kZTo6Y3JlYXRlKCp0aGlzLCBtX3JlbmRlclRhcmdldC5nZXQoKSk7Cit9CisKK3ZvaWQgV2Vi
S2l0QXVkaW9Db250ZXh0Ojpjb25zdHJ1Y3RDb21tb24oKQoreworICAgIEZGVEZyYW1lOjppbml0
aWFsaXplKCk7CisKKyAgICBtX2xpc3RlbmVyID0gQXVkaW9MaXN0ZW5lcjo6Y3JlYXRlKCk7CisK
KyAgICBBU1NFUlQoZG9jdW1lbnQoKSk7CisgICAgaWYgKGRvY3VtZW50KCktPmF1ZGlvUGxheWJh
Y2tSZXF1aXJlc1VzZXJHZXN0dXJlKCkpCisgICAgICAgIGFkZEJlaGF2aW9yUmVzdHJpY3Rpb24o
UmVxdWlyZVVzZXJHZXN0dXJlRm9yQXVkaW9TdGFydFJlc3RyaWN0aW9uKTsKKyAgICBlbHNlCisg
ICAgICAgIG1fcmVzdHJpY3Rpb25zID0gTm9SZXN0cmljdGlvbnM7CisKKyNpZiBQTEFURk9STShD
T0NPQSkKKyAgICBhZGRCZWhhdmlvclJlc3RyaWN0aW9uKFJlcXVpcmVQYWdlQ29uc2VudEZvckF1
ZGlvU3RhcnRSZXN0cmljdGlvbik7CisjZW5kaWYKK30KKworV2ViS2l0QXVkaW9Db250ZXh0Ojp+
V2ViS2l0QXVkaW9Db250ZXh0KCkKK3sKKyNpZiBERUJVR19BVURJT05PREVfUkVGRVJFTkNFUwor
ICAgIGZwcmludGYoc3RkZXJyLCAiJXA6IFdlYktpdEF1ZGlvQ29udGV4dDo6fldlYktpdEF1ZGlv
Q29udGV4dCgpXG4iLCB0aGlzKTsKKyNlbmRpZgorICAgIEFTU0VSVCghbV9pc0luaXRpYWxpemVk
KTsKKyAgICBBU1NFUlQobV9pc1N0b3BTY2hlZHVsZWQpOworICAgIEFTU0VSVChtX25vZGVzVG9E
ZWxldGUuaXNFbXB0eSgpKTsKKyAgICBBU1NFUlQobV9yZWZlcmVuY2VkTm9kZXMuaXNFbXB0eSgp
KTsKKyAgICBBU1NFUlQobV9maW5pc2hlZE5vZGVzLmlzRW1wdHkoKSk7IC8vIEZJWE1FIChidWcg
MTA1ODcwKTogVGhpcyBhc3NlcnRpb24gZmFpbHMgb24gdGVzdHMgc29tZXRpbWVzLgorICAgIEFT
U0VSVChtX2F1dG9tYXRpY1B1bGxOb2Rlcy5pc0VtcHR5KCkpOworICAgIGlmIChtX2F1dG9tYXRp
Y1B1bGxOb2Rlc05lZWRVcGRhdGluZykKKyAgICAgICAgbV9yZW5kZXJpbmdBdXRvbWF0aWNQdWxs
Tm9kZXMucmVzaXplKG1fYXV0b21hdGljUHVsbE5vZGVzLnNpemUoKSk7CisgICAgQVNTRVJUKG1f
cmVuZGVyaW5nQXV0b21hdGljUHVsbE5vZGVzLmlzRW1wdHkoKSk7CisgICAgLy8gRklYTUU6IENh
biB3ZSBhc3NlcnQgdGhhdCBtX2RlZmVycmVkRmluaXNoRGVyZWZMaXN0IGlzIGVtcHR5PworCisg
ICAgaWYgKCFpc09mZmxpbmVDb250ZXh0KCkgJiYgc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKSB7
CisgICAgICAgIGRvY3VtZW50KCktPnJlbW92ZUF1ZGlvUHJvZHVjZXIoKnRoaXMpOworICAgICAg
ICBkb2N1bWVudCgpLT51bnJlZ2lzdGVyRm9yVmlzaWJpbGl0eVN0YXRlQ2hhbmdlZENhbGxiYWNr
cygqdGhpcyk7CisgICAgfQorfQorCit2b2lkIFdlYktpdEF1ZGlvQ29udGV4dDo6bGF6eUluaXRp
YWxpemUoKQoreworICAgIEFTU0VSVCghbV9pc1N0b3BTY2hlZHVsZWQpOworCisgICAgaWYgKG1f
aXNJbml0aWFsaXplZCkKKyAgICAgICAgcmV0dXJuOworCisgICAgLy8gRG9uJ3QgYWxsb3cgdGhl
IGNvbnRleHQgdG8gaW5pdGlhbGl6ZSBhIHNlY29uZCB0aW1lIGFmdGVyIGl0J3MgYWxyZWFkeSBi
ZWVuIGV4cGxpY2l0bHkgdW5pbml0aWFsaXplZC4KKyAgICBBU1NFUlQoIW1faXNBdWRpb1RocmVh
ZEZpbmlzaGVkKTsKKyAgICBpZiAobV9pc0F1ZGlvVGhyZWFkRmluaXNoZWQpCisgICAgICAgIHJl
dHVybjsKKworICAgIGlmIChtX2Rlc3RpbmF0aW9uTm9kZSkgeworICAgICAgICBtX2Rlc3RpbmF0
aW9uTm9kZS0+aW5pdGlhbGl6ZSgpOworCisgICAgICAgIGlmICghaXNPZmZsaW5lQ29udGV4dCgp
KSB7CisgICAgICAgICAgICAvLyBUaGlzIHN0YXJ0cyB0aGUgYXVkaW8gdGhyZWFkLiBUaGUgZGVz
dGluYXRpb24gbm9kZSdzIHByb3ZpZGVJbnB1dCgpIG1ldGhvZCB3aWxsIG5vdyBiZSBjYWxsZWQg
cmVwZWF0ZWRseSB0byByZW5kZXIgYXVkaW8uCisgICAgICAgICAgICAvLyBFYWNoIHRpbWUgcHJv
dmlkZUlucHV0KCkgaXMgY2FsbGVkLCBhIHBvcnRpb24gb2YgdGhlIGF1ZGlvIHN0cmVhbSBpcyBy
ZW5kZXJlZC4gTGV0J3MgY2FsbCB0aGlzIHRpbWUgcGVyaW9kIGEgInJlbmRlciBxdWFudHVtIi4K
KyAgICAgICAgICAgIC8vIE5PVEU6IGZvciBub3cgZGVmYXVsdCBBdWRpb0NvbnRleHQgZG9lcyBu
b3QgbmVlZCBhbiBleHBsaWNpdCBzdGFydFJlbmRlcmluZygpIGNhbGwgZnJvbSBKYXZhU2NyaXB0
LgorICAgICAgICAgICAgLy8gV2UgbWF5IHdhbnQgdG8gY29uc2lkZXIgcmVxdWlyaW5nIGl0IGZv
ciBzeW1tZXRyeSB3aXRoIE9mZmxpbmVBdWRpb0NvbnRleHQuCisgICAgICAgICAgICBzdGFydFJl
bmRlcmluZygpOworICAgICAgICAgICAgKytzX2hhcmR3YXJlQ29udGV4dENvdW50OworICAgICAg
ICB9CisgICAgfQorICAgIG1faXNJbml0aWFsaXplZCA9IHRydWU7Cit9CisKK3ZvaWQgV2ViS2l0
QXVkaW9Db250ZXh0OjpjbGVhcigpCit7CisgICAgUmVmPFdlYktpdEF1ZGlvQ29udGV4dD4gcHJv
dGVjdGVkVGhpcygqdGhpcyk7CisKKyAgICAvLyBXZSBoYXZlIHRvIHJlbGVhc2Ugb3VyIHJlZmVy
ZW5jZSB0byB0aGUgZGVzdGluYXRpb24gbm9kZSBiZWZvcmUgdGhlIGNvbnRleHQgd2lsbCBldmVy
IGJlIGRlbGV0ZWQgc2luY2UgdGhlIGRlc3RpbmF0aW9uIG5vZGUgaG9sZHMgYSByZWZlcmVuY2Ug
dG8gdGhlIGNvbnRleHQuCisgICAgaWYgKG1fZGVzdGluYXRpb25Ob2RlKQorICAgICAgICBtX2Rl
c3RpbmF0aW9uTm9kZSA9IG51bGxwdHI7CisKKyAgICAvLyBBdWRpbyB0aHJlYWQgaXMgZGVhZC4g
Tm9ib2R5IHdpbGwgc2NoZWR1bGUgbm9kZSBkZWxldGlvbiBhY3Rpb24uIExldCdzIGRvIGl0IG91
cnNlbHZlcy4KKyAgICBkbyB7CisgICAgICAgIGRlbGV0ZU1hcmtlZE5vZGVzKCk7CisgICAgICAg
IG1fbm9kZXNUb0RlbGV0ZS5hcHBlbmRWZWN0b3IobV9ub2Rlc01hcmtlZEZvckRlbGV0aW9uKTsK
KyAgICAgICAgbV9ub2Rlc01hcmtlZEZvckRlbGV0aW9uLmNsZWFyKCk7CisgICAgfSB3aGlsZSAo
bV9ub2Rlc1RvRGVsZXRlLnNpemUoKSk7CisKKyAgICBjbGVhclBlbmRpbmdBY3Rpdml0eSgpOwor
fQorCit2b2lkIFdlYktpdEF1ZGlvQ29udGV4dDo6dW5pbml0aWFsaXplKCkKK3sKKyAgICBBTFdB
WVNfTE9HKExPR0lERU5USUZJRVIpOworCisgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKwor
ICAgIGlmICghbV9pc0luaXRpYWxpemVkKQorICAgICAgICByZXR1cm47CisKKyAgICAvLyBUaGlz
IHN0b3BzIHRoZSBhdWRpbyB0aHJlYWQgYW5kIGFsbCBhdWRpbyByZW5kZXJpbmcuCisgICAgaWYg
KG1fZGVzdGluYXRpb25Ob2RlKQorICAgICAgICBtX2Rlc3RpbmF0aW9uTm9kZS0+dW5pbml0aWFs
aXplKCk7CisKKyAgICAvLyBEb24ndCBhbGxvdyB0aGUgY29udGV4dCB0byBpbml0aWFsaXplIGEg
c2Vjb25kIHRpbWUgYWZ0ZXIgaXQncyBhbHJlYWR5IGJlZW4gZXhwbGljaXRseSB1bmluaXRpYWxp
emVkLgorICAgIG1faXNBdWRpb1RocmVhZEZpbmlzaGVkID0gdHJ1ZTsKKworICAgIGlmICghaXNP
ZmZsaW5lQ29udGV4dCgpKSB7CisgICAgICAgIEFTU0VSVChzX2hhcmR3YXJlQ29udGV4dENvdW50
KTsKKyAgICAgICAgLS1zX2hhcmR3YXJlQ29udGV4dENvdW50OworCisgICAgICAgIC8vIE9mZmxp
bmUgY29udGV4dHMgbW92ZSB0byAnQ2xvc2VkJyBzdGF0ZSB3aGVuIGRpc3BhdGNoaW5nIHRoZSBj
b21wbGV0aW9uIGV2ZW50LgorICAgICAgICBzZXRTdGF0ZShTdGF0ZTo6Q2xvc2VkKTsKKyAgICB9
CisKKyAgICAvLyBHZXQgcmlkIG9mIHRoZSBzb3VyY2VzIHdoaWNoIG1heSBzdGlsbCBiZSBwbGF5
aW5nLgorICAgIGRlcmVmVW5maW5pc2hlZFNvdXJjZU5vZGVzKCk7CisKKyAgICBtX2lzSW5pdGlh
bGl6ZWQgPSBmYWxzZTsKK30KKworYm9vbCBXZWJLaXRBdWRpb0NvbnRleHQ6OmlzSW5pdGlhbGl6
ZWQoKSBjb25zdAoreworICAgIHJldHVybiBtX2lzSW5pdGlhbGl6ZWQ7Cit9CisKK3ZvaWQgV2Vi
S2l0QXVkaW9Db250ZXh0OjphZGRSZWFjdGlvbihTdGF0ZSBzdGF0ZSwgRE9NUHJvbWlzZURlZmVy
cmVkPHZvaWQ+JiYgcHJvbWlzZSkKK3sKKyAgICBzaXplX3Qgc3RhdGVJbmRleCA9IHN0YXRpY19j
YXN0PHNpemVfdD4oc3RhdGUpOworICAgIGlmIChzdGF0ZUluZGV4ID49IG1fc3RhdGVSZWFjdGlv
bnMuc2l6ZSgpKQorICAgICAgICBtX3N0YXRlUmVhY3Rpb25zLmdyb3coc3RhdGVJbmRleCArIDEp
OworCisgICAgbV9zdGF0ZVJlYWN0aW9uc1tzdGF0ZUluZGV4XS5hcHBlbmQoV1RGTW92ZShwcm9t
aXNlKSk7Cit9CisKK3ZvaWQgV2ViS2l0QXVkaW9Db250ZXh0OjpzZXRTdGF0ZShTdGF0ZSBzdGF0
ZSkKK3sKKyAgICBpZiAobV9zdGF0ZSA9PSBzdGF0ZSkKKyAgICAgICAgcmV0dXJuOworCisgICAg
bV9zdGF0ZSA9IHN0YXRlOworICAgIG1fZXZlbnRRdWV1ZS0+ZW5xdWV1ZUV2ZW50KEV2ZW50Ojpj
cmVhdGUoZXZlbnROYW1lcygpLnN0YXRlY2hhbmdlRXZlbnQsIEV2ZW50OjpDYW5CdWJibGU6Olll
cywgRXZlbnQ6OklzQ2FuY2VsYWJsZTo6Tm8pKTsKKworICAgIHNpemVfdCBzdGF0ZUluZGV4ID0g
c3RhdGljX2Nhc3Q8c2l6ZV90PihzdGF0ZSk7CisgICAgaWYgKHN0YXRlSW5kZXggPj0gbV9zdGF0
ZVJlYWN0aW9ucy5zaXplKCkpCisgICAgICAgIHJldHVybjsKKworICAgIFZlY3RvcjxET01Qcm9t
aXNlRGVmZXJyZWQ8dm9pZD4+IHJlYWN0aW9uczsKKyAgICBtX3N0YXRlUmVhY3Rpb25zW3N0YXRl
SW5kZXhdLnN3YXAocmVhY3Rpb25zKTsKKworICAgIGZvciAoYXV0byYgcHJvbWlzZSA6IHJlYWN0
aW9ucykKKyAgICAgICAgcHJvbWlzZS5yZXNvbHZlKCk7Cit9CisKK3ZvaWQgV2ViS2l0QXVkaW9D
b250ZXh0OjpzdG9wKCkKK3sKKyAgICBBTFdBWVNfTE9HKExPR0lERU5USUZJRVIpOworCisgICAg
QVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKworICAgIC8vIFVzdWFsbHkgU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCBjYWxscyBzdG9wIHR3aWNlLgorICAgIGlmIChtX2lzU3RvcFNjaGVkdWxlZCkKKyAg
ICAgICAgcmV0dXJuOworICAgIG1faXNTdG9wU2NoZWR1bGVkID0gdHJ1ZTsKKworICAgIEFTU0VS
VChkb2N1bWVudCgpKTsKKyAgICBkb2N1bWVudCgpLT51cGRhdGVJc1BsYXlpbmdNZWRpYSgpOwor
CisgICAgdW5pbml0aWFsaXplKCk7CisgICAgY2xlYXIoKTsKK30KKwordm9pZCBXZWJLaXRBdWRp
b0NvbnRleHQ6OnN1c3BlbmQoUmVhc29uRm9yU3VzcGVuc2lvbikKK3sKKyAgICBpZiAoc3RhdGUo
KSA9PSBTdGF0ZTo6UnVubmluZykgeworICAgICAgICBtX21lZGlhU2Vzc2lvbi0+YmVnaW5JbnRl
cnJ1cHRpb24oUGxhdGZvcm1NZWRpYVNlc3Npb246OlBsYXliYWNrU3VzcGVuZGVkKTsKKyAgICAg
ICAgZG9jdW1lbnQoKS0+dXBkYXRlSXNQbGF5aW5nTWVkaWEoKTsKKyAgICB9Cit9CisKK3ZvaWQg
V2ViS2l0QXVkaW9Db250ZXh0OjpyZXN1bWUoKQoreworICAgIGlmIChzdGF0ZSgpID09IFN0YXRl
OjpJbnRlcnJ1cHRlZCkgeworICAgICAgICBtX21lZGlhU2Vzc2lvbi0+ZW5kSW50ZXJydXB0aW9u
KFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpNYXlSZXN1bWVQbGF5aW5nKTsKKyAgICAgICAgZG9jdW1l
bnQoKS0+dXBkYXRlSXNQbGF5aW5nTWVkaWEoKTsKKyAgICB9Cit9CisKK2NvbnN0IGNoYXIqIFdl
YktpdEF1ZGlvQ29udGV4dDo6YWN0aXZlRE9NT2JqZWN0TmFtZSgpIGNvbnN0Cit7CisgICAgcmV0
dXJuICJXZWJLaXRBdWRpb0NvbnRleHQiOworfQorCitEb2N1bWVudElkZW50aWZpZXIgV2ViS2l0
QXVkaW9Db250ZXh0Ojpob3N0aW5nRG9jdW1lbnRJZGVudGlmaWVyKCkgY29uc3QKK3sKKyAgICBh
dXRvKiBkb2N1bWVudCA9IGRvd25jYXN0PERvY3VtZW50PihtX3NjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQpOworICAgIHJldHVybiBkb2N1bWVudCA/IGRvY3VtZW50LT5pZGVudGlmaWVyKCkgOiBEb2N1
bWVudElkZW50aWZpZXIgeyB9OworfQorCitib29sIFdlYktpdEF1ZGlvQ29udGV4dDo6aXNTdXNw
ZW5kZWQoKSBjb25zdAoreworICAgIHJldHVybiAhZG9jdW1lbnQoKSB8fCBkb2N1bWVudCgpLT5h
Y3RpdmVET01PYmplY3RzQXJlU3VzcGVuZGVkKCkgfHwgZG9jdW1lbnQoKS0+YWN0aXZlRE9NT2Jq
ZWN0c0FyZVN0b3BwZWQoKTsKK30KKwordm9pZCBXZWJLaXRBdWRpb0NvbnRleHQ6OnZpc2liaWxp
dHlTdGF0ZUNoYW5nZWQoKQoreworICAgIC8vIERvIG5vdCBzdXNwZW5kIGlmIGF1ZGlvIGlzIGF1
ZGlibGUuCisgICAgaWYgKCFkb2N1bWVudCgpIHx8IG1lZGlhU3RhdGUoKSA9PSBNZWRpYVByb2R1
Y2VyOjpJc1BsYXlpbmdBdWRpbyB8fCBtX2lzU3RvcFNjaGVkdWxlZCkKKyAgICAgICAgcmV0dXJu
OworCisgICAgaWYgKGRvY3VtZW50KCktPmhpZGRlbigpKSB7CisgICAgICAgIGlmIChzdGF0ZSgp
ID09IFN0YXRlOjpSdW5uaW5nKSB7CisgICAgICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VE
KCJ2aXNpYmlsaXR5U3RhdGVDaGFuZ2VkKCkgU3VzcGVuZGluZyBwbGF5YmFjayBhZnRlciBnb2lu
ZyB0byB0aGUgYmFja2dyb3VuZCIpOworICAgICAgICAgICAgbV9tZWRpYVNlc3Npb24tPmJlZ2lu
SW50ZXJydXB0aW9uKFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpFbnRlcmluZ0JhY2tncm91bmQpOwor
ICAgICAgICB9CisgICAgfSBlbHNlIHsKKyAgICAgICAgaWYgKHN0YXRlKCkgPT0gU3RhdGU6Oklu
dGVycnVwdGVkKSB7CisgICAgICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJ2aXNpYmls
aXR5U3RhdGVDaGFuZ2VkKCkgUmVzdW1pbmcgcGxheWJhY2sgYWZ0ZXIgZW50ZXJpbmcgZm9yZWdy
b3VuZCIpOworICAgICAgICAgICAgbV9tZWRpYVNlc3Npb24tPmVuZEludGVycnVwdGlvbihQbGF0
Zm9ybU1lZGlhU2Vzc2lvbjo6TWF5UmVzdW1lUGxheWluZyk7CisgICAgICAgIH0KKyAgICB9Cit9
CisKK2Jvb2wgV2ViS2l0QXVkaW9Db250ZXh0Ojp3b3VsZFRhaW50T3JpZ2luKGNvbnN0IFVSTCYg
dXJsKSBjb25zdAoreworICAgIGlmICh1cmwucHJvdG9jb2xJc0RhdGEoKSkKKyAgICAgICAgcmV0
dXJuIGZhbHNlOworCisgICAgaWYgKGF1dG8qIGRvY3VtZW50ID0gdGhpcy0+ZG9jdW1lbnQoKSkK
KyAgICAgICAgcmV0dXJuICFkb2N1bWVudC0+c2VjdXJpdHlPcmlnaW4oKS5jYW5SZXF1ZXN0KHVy
bCk7CisKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK0V4Y2VwdGlvbk9yPFJlZjxBdWRpb0J1ZmZl
cj4+IFdlYktpdEF1ZGlvQ29udGV4dDo6Y3JlYXRlQnVmZmVyKHVuc2lnbmVkIG51bWJlck9mQ2hh
bm5lbHMsIHNpemVfdCBudW1iZXJPZkZyYW1lcywgZmxvYXQgc2FtcGxlUmF0ZSkKK3sKKyAgICBh
dXRvIGF1ZGlvQnVmZmVyID0gQXVkaW9CdWZmZXI6OmNyZWF0ZShudW1iZXJPZkNoYW5uZWxzLCBu
dW1iZXJPZkZyYW1lcywgc2FtcGxlUmF0ZSk7CisgICAgaWYgKCFhdWRpb0J1ZmZlcikKKyAgICAg
ICAgcmV0dXJuIEV4Y2VwdGlvbiB7IE5vdFN1cHBvcnRlZEVycm9yIH07CisgICAgcmV0dXJuIGF1
ZGlvQnVmZmVyLnJlbGVhc2VOb25OdWxsKCk7Cit9CisKK0V4Y2VwdGlvbk9yPFJlZjxBdWRpb0J1
ZmZlcj4+IFdlYktpdEF1ZGlvQ29udGV4dDo6Y3JlYXRlQnVmZmVyKEFycmF5QnVmZmVyJiBhcnJh
eUJ1ZmZlciwgYm9vbCBtaXhUb01vbm8pCit7CisgICAgYXV0byBhdWRpb0J1ZmZlciA9IEF1ZGlv
QnVmZmVyOjpjcmVhdGVGcm9tQXVkaW9GaWxlRGF0YShhcnJheUJ1ZmZlci5kYXRhKCksIGFycmF5
QnVmZmVyLmJ5dGVMZW5ndGgoKSwgbWl4VG9Nb25vLCBzYW1wbGVSYXRlKCkpOworICAgIGlmICgh
YXVkaW9CdWZmZXIpCisgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBTeW50YXhFcnJvciB9Owor
ICAgIHJldHVybiBhdWRpb0J1ZmZlci5yZWxlYXNlTm9uTnVsbCgpOworfQorCit2b2lkIFdlYktp
dEF1ZGlvQ29udGV4dDo6ZGVjb2RlQXVkaW9EYXRhKFJlZjxBcnJheUJ1ZmZlcj4mJiBhdWRpb0Rh
dGEsIFJlZlB0cjxBdWRpb0J1ZmZlckNhbGxiYWNrPiYmIHN1Y2Nlc3NDYWxsYmFjaywgUmVmUHRy
PEF1ZGlvQnVmZmVyQ2FsbGJhY2s+JiYgZXJyb3JDYWxsYmFjaykKK3sKKyAgICBpZiAoIW1fYXVk
aW9EZWNvZGVyKQorICAgICAgICBtX2F1ZGlvRGVjb2RlciA9IG1ha2VVbmlxdWU8QXN5bmNBdWRp
b0RlY29kZXI+KCk7CisgICAgbV9hdWRpb0RlY29kZXItPmRlY29kZUFzeW5jKFdURk1vdmUoYXVk
aW9EYXRhKSwgc2FtcGxlUmF0ZSgpLCBXVEZNb3ZlKHN1Y2Nlc3NDYWxsYmFjayksIFdURk1vdmUo
ZXJyb3JDYWxsYmFjaykpOworfQorCitFeGNlcHRpb25PcjxSZWY8QXVkaW9CdWZmZXJTb3VyY2VO
b2RlPj4gV2ViS2l0QXVkaW9Db250ZXh0OjpjcmVhdGVCdWZmZXJTb3VyY2UoKQoreworICAgIEFM
V0FZU19MT0coTE9HSURFTlRJRklFUik7CisKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwor
CisgICAgaWYgKG1faXNTdG9wU2NoZWR1bGVkKQorICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsg
SW52YWxpZFN0YXRlRXJyb3IgfTsKKworICAgIGxhenlJbml0aWFsaXplKCk7CisgICAgUmVmPEF1
ZGlvQnVmZmVyU291cmNlTm9kZT4gbm9kZSA9IEF1ZGlvQnVmZmVyU291cmNlTm9kZTo6Y3JlYXRl
KCp0aGlzLCBzYW1wbGVSYXRlKCkpOworCisgICAgLy8gQmVjYXVzZSB0aGlzIGlzIGFuIEF1ZGlv
U2NoZWR1bGVkU291cmNlTm9kZSwgdGhlIGNvbnRleHQga2VlcHMgYSByZWZlcmVuY2UgdW50aWwg
aXQgaGFzIGZpbmlzaGVkIHBsYXlpbmcuCisgICAgLy8gV2hlbiB0aGlzIGhhcHBlbnMsIEF1ZGlv
U2NoZWR1bGVkU291cmNlTm9kZTo6ZmluaXNoKCkgY2FsbHMgV2ViS2l0QXVkaW9Db250ZXh0Ojpu
b3RpZnlOb2RlRmluaXNoZWRQcm9jZXNzaW5nKCkuCisgICAgcmVmTm9kZShub2RlKTsKKworICAg
IHJldHVybiBub2RlOworfQorCisjaWYgRU5BQkxFKFZJREVPKQorCitFeGNlcHRpb25PcjxSZWY8
TWVkaWFFbGVtZW50QXVkaW9Tb3VyY2VOb2RlPj4gV2ViS2l0QXVkaW9Db250ZXh0OjpjcmVhdGVN
ZWRpYUVsZW1lbnRTb3VyY2UoSFRNTE1lZGlhRWxlbWVudCYgbWVkaWFFbGVtZW50KQoreworICAg
IEFMV0FZU19MT0coTE9HSURFTlRJRklFUik7CisKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkp
OworCisgICAgaWYgKG1faXNTdG9wU2NoZWR1bGVkIHx8IG1lZGlhRWxlbWVudC5hdWRpb1NvdXJj
ZU5vZGUoKSkKKyAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IEludmFsaWRTdGF0ZUVycm9yIH07
CisKKyAgICBsYXp5SW5pdGlhbGl6ZSgpOworCisgICAgYXV0byBub2RlID0gTWVkaWFFbGVtZW50
QXVkaW9Tb3VyY2VOb2RlOjpjcmVhdGUoKnRoaXMsIG1lZGlhRWxlbWVudCk7CisKKyAgICBtZWRp
YUVsZW1lbnQuc2V0QXVkaW9Tb3VyY2VOb2RlKG5vZGUucHRyKCkpOworCisgICAgcmVmTm9kZShu
b2RlLmdldCgpKTsgLy8gY29udGV4dCBrZWVwcyByZWZlcmVuY2UgdW50aWwgbm9kZSBpcyBkaXNj
b25uZWN0ZWQKKyAgICByZXR1cm4gbm9kZTsKK30KKworI2VuZGlmCisKKyNpZiBFTkFCTEUoTUVE
SUFfU1RSRUFNKQorCitFeGNlcHRpb25PcjxSZWY8TWVkaWFTdHJlYW1BdWRpb1NvdXJjZU5vZGU+
PiBXZWJLaXRBdWRpb0NvbnRleHQ6OmNyZWF0ZU1lZGlhU3RyZWFtU291cmNlKE1lZGlhU3RyZWFt
JiBtZWRpYVN0cmVhbSkKK3sKKyAgICBBTFdBWVNfTE9HKExPR0lERU5USUZJRVIpOworCisgICAg
QVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKworICAgIGlmIChtX2lzU3RvcFNjaGVkdWxlZCkKKyAg
ICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IEludmFsaWRTdGF0ZUVycm9yIH07CisKKyAgICBhdXRv
IGF1ZGlvVHJhY2tzID0gbWVkaWFTdHJlYW0uZ2V0QXVkaW9UcmFja3MoKTsKKyAgICBpZiAoYXVk
aW9UcmFja3MuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgSW52YWxpZFN0
YXRlRXJyb3IgfTsKKworICAgIE1lZGlhU3RyZWFtVHJhY2sqIHByb3ZpZGVyVHJhY2sgPSBudWxs
cHRyOworICAgIGZvciAoYXV0byYgdHJhY2sgOiBhdWRpb1RyYWNrcykgeworICAgICAgICBpZiAo
dHJhY2stPmF1ZGlvU291cmNlUHJvdmlkZXIoKSkgeworICAgICAgICAgICAgcHJvdmlkZXJUcmFj
ayA9IHRyYWNrLmdldCgpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICB9Cisg
ICAgaWYgKCFwcm92aWRlclRyYWNrKQorICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgSW52YWxp
ZFN0YXRlRXJyb3IgfTsKKworICAgIGxhenlJbml0aWFsaXplKCk7CisKKyAgICBhdXRvIG5vZGUg
PSBNZWRpYVN0cmVhbUF1ZGlvU291cmNlTm9kZTo6Y3JlYXRlKCp0aGlzLCBtZWRpYVN0cmVhbSwg
KnByb3ZpZGVyVHJhY2spOworICAgIG5vZGUtPnNldEZvcm1hdCgyLCBzYW1wbGVSYXRlKCkpOwor
CisgICAgcmVmTm9kZShub2RlKTsgLy8gY29udGV4dCBrZWVwcyByZWZlcmVuY2UgdW50aWwgbm9k
ZSBpcyBkaXNjb25uZWN0ZWQKKyAgICByZXR1cm4gbm9kZTsKK30KKworRXhjZXB0aW9uT3I8UmVm
PE1lZGlhU3RyZWFtQXVkaW9EZXN0aW5hdGlvbk5vZGU+PiBXZWJLaXRBdWRpb0NvbnRleHQ6OmNy
ZWF0ZU1lZGlhU3RyZWFtRGVzdGluYXRpb24oKQoreworICAgIGlmIChtX2lzU3RvcFNjaGVkdWxl
ZCkKKyAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IEludmFsaWRTdGF0ZUVycm9yIH07CisKKyAg
ICAvLyBGSVhNRTogQWRkIHN1cHBvcnQgZm9yIGFuIG9wdGlvbmFsIGFyZ3VtZW50IHdoaWNoIHNw
ZWNpZmllcyB0aGUgbnVtYmVyIG9mIGNoYW5uZWxzLgorICAgIC8vIEZJWE1FOiBUaGUgZGVmYXVs
dCBzaG91bGQgcHJvYmFibHkgYmUgc3RlcmVvIGluc3RlYWQgb2YgbW9uby4KKyAgICByZXR1cm4g
TWVkaWFTdHJlYW1BdWRpb0Rlc3RpbmF0aW9uTm9kZTo6Y3JlYXRlKCp0aGlzLCAxKTsKK30KKwor
I2VuZGlmCisKK0V4Y2VwdGlvbk9yPFJlZjxTY3JpcHRQcm9jZXNzb3JOb2RlPj4gV2ViS2l0QXVk
aW9Db250ZXh0OjpjcmVhdGVTY3JpcHRQcm9jZXNzb3Ioc2l6ZV90IGJ1ZmZlclNpemUsIHNpemVf
dCBudW1iZXJPZklucHV0Q2hhbm5lbHMsIHNpemVfdCBudW1iZXJPZk91dHB1dENoYW5uZWxzKQor
eworICAgIEFMV0FZU19MT0coTE9HSURFTlRJRklFUik7CisKKyAgICBBU1NFUlQoaXNNYWluVGhy
ZWFkKCkpOworCisgICAgaWYgKG1faXNTdG9wU2NoZWR1bGVkKQorICAgICAgICByZXR1cm4gRXhj
ZXB0aW9uIHsgSW52YWxpZFN0YXRlRXJyb3IgfTsKKworICAgIGxhenlJbml0aWFsaXplKCk7CisK
KyAgICAvLyBXM0MgRWRpdG9yJ3MgRHJhZnQgMDYgSnVuZSAyMDE3CisgICAgLy8gIGh0dHBzOi8v
d2ViYXVkaW8uZ2l0aHViLmlvL3dlYi1hdWRpby1hcGkvI3dpZGwtQmFzZUF1ZGlvQ29udGV4dC1j
cmVhdGVTY3JpcHRQcm9jZXNzb3ItU2NyaXB0UHJvY2Vzc29yTm9kZS11bnNpZ25lZC1sb25nLWJ1
ZmZlclNpemUtdW5zaWduZWQtbG9uZy1udW1iZXJPZklucHV0Q2hhbm5lbHMtdW5zaWduZWQtbG9u
Zy1udW1iZXJPZk91dHB1dENoYW5uZWxzCisKKyAgICAvLyBUaGUgYnVmZmVyU2l6ZSBwYXJhbWV0
ZXIgZGV0ZXJtaW5lcyB0aGUgYnVmZmVyIHNpemUgaW4gdW5pdHMgb2Ygc2FtcGxlLWZyYW1lcy4g
SWYgaXQncyBub3QgcGFzc2VkIGluLAorICAgIC8vIG9yIGlmIHRoZSB2YWx1ZSBpcyAwLCB0aGVu
IHRoZSBpbXBsZW1lbnRhdGlvbiB3aWxsIGNob29zZSB0aGUgYmVzdCBidWZmZXIgc2l6ZSBmb3Ig
dGhlIGdpdmVuIGVudmlyb25tZW50LAorICAgIC8vIHdoaWNoIHdpbGwgYmUgY29uc3RhbnQgcG93
ZXIgb2YgMiB0aHJvdWdob3V0IHRoZSBsaWZldGltZSBvZiB0aGUgbm9kZS4gLi4uIElmIHRoZSB2
YWx1ZSBvZiB0aGlzIHBhcmFtZXRlcgorICAgIC8vIGlzIG5vdCBvbmUgb2YgdGhlIGFsbG93ZWQg
cG93ZXItb2YtMiB2YWx1ZXMgbGlzdGVkIGFib3ZlLCBhbiBJbmRleFNpemVFcnJvciBtdXN0IGJl
IHRocm93bi4KKyAgICBzd2l0Y2ggKGJ1ZmZlclNpemUpIHsKKyAgICBjYXNlIDA6CisjaWYgVVNF
KEFVRElPX1NFU1NJT04pCisgICAgICAgIC8vIFBpY2sgYSB2YWx1ZSBiZXR3ZWVuIDI1NiAoMl44
KSBhbmQgMTYzODQgKDJeMTQpLCBiYXNlZCBvbiB0aGUgYnVmZmVyIHNpemUgb2YgdGhlIGN1cnJl
bnQgQXVkaW9TZXNzaW9uOgorICAgICAgICBidWZmZXJTaXplID0gMSA8PCBzdGQ6Om1heDxzaXpl
X3Q+KDgsIHN0ZDo6bWluPHNpemVfdD4oMTQsIHN0ZDo6bG9nMihBdWRpb1Nlc3Npb246OnNoYXJl
ZFNlc3Npb24oKS5idWZmZXJTaXplKCkpKSk7CisjZWxzZQorICAgICAgICBidWZmZXJTaXplID0g
MjA0ODsKKyNlbmRpZgorICAgICAgICBicmVhazsKKyAgICBjYXNlIDI1NjoKKyAgICBjYXNlIDUx
MjoKKyAgICBjYXNlIDEwMjQ6CisgICAgY2FzZSAyMDQ4OgorICAgIGNhc2UgNDA5NjoKKyAgICBj
YXNlIDgxOTI6CisgICAgY2FzZSAxNjM4NDoKKyAgICAgICAgYnJlYWs7CisgICAgZGVmYXVsdDoK
KyAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IEluZGV4U2l6ZUVycm9yIH07CisgICAgfQorCisg
ICAgLy8gQW4gSW5kZXhTaXplRXJyb3IgZXhjZXB0aW9uIG11c3QgYmUgdGhyb3duIGlmIGJ1ZmZl
clNpemUgb3IgbnVtYmVyT2ZJbnB1dENoYW5uZWxzIG9yIG51bWJlck9mT3V0cHV0Q2hhbm5lbHMK
KyAgICAvLyBhcmUgb3V0c2lkZSB0aGUgdmFsaWQgcmFuZ2UuIEl0IGlzIGludmFsaWQgZm9yIGJv
dGggbnVtYmVyT2ZJbnB1dENoYW5uZWxzIGFuZCBudW1iZXJPZk91dHB1dENoYW5uZWxzIHRvIGJl
IHplcm8uCisgICAgLy8gSW4gdGhpcyBjYXNlIGFuIEluZGV4U2l6ZUVycm9yIG11c3QgYmUgdGhy
b3duLgorCisgICAgaWYgKCFudW1iZXJPZklucHV0Q2hhbm5lbHMgJiYgIW51bWJlck9mT3V0cHV0
Q2hhbm5lbHMpCisgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBOb3RTdXBwb3J0ZWRFcnJvciB9
OworCisgICAgLy8gVGhpcyBwYXJhbWV0ZXIgW251bWJlck9mSW5wdXRDaGFubmVsc10gZGV0ZXJt
aW5lcyB0aGUgbnVtYmVyIG9mIGNoYW5uZWxzIGZvciB0aGlzIG5vZGUncyBpbnB1dC4gVmFsdWVz
IG9mCisgICAgLy8gdXAgdG8gMzIgbXVzdCBiZSBzdXBwb3J0ZWQuIEEgTm90U3VwcG9ydGVkRXJy
b3IgbXVzdCBiZSB0aHJvd24gaWYgdGhlIG51bWJlciBvZiBjaGFubmVscyBpcyBub3Qgc3VwcG9y
dGVkLgorCisgICAgaWYgKG51bWJlck9mSW5wdXRDaGFubmVscyA+IG1heE51bWJlck9mQ2hhbm5l
bHMoKSkKKyAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IE5vdFN1cHBvcnRlZEVycm9yIH07CisK
KyAgICAvLyBUaGlzIHBhcmFtZXRlciBbbnVtYmVyT2ZPdXRwdXRDaGFubmVsc10gZGV0ZXJtaW5l
cyB0aGUgbnVtYmVyIG9mIGNoYW5uZWxzIGZvciB0aGlzIG5vZGUncyBvdXRwdXQuIFZhbHVlcyBv
ZgorICAgIC8vIHVwIHRvIDMyIG11c3QgYmUgc3VwcG9ydGVkLiBBIE5vdFN1cHBvcnRlZEVycm9y
IG11c3QgYmUgdGhyb3duIGlmIHRoZSBudW1iZXIgb2YgY2hhbm5lbHMgaXMgbm90IHN1cHBvcnRl
ZC4KKworICAgIGlmIChudW1iZXJPZk91dHB1dENoYW5uZWxzID4gbWF4TnVtYmVyT2ZDaGFubmVs
cygpKQorICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgTm90U3VwcG9ydGVkRXJyb3IgfTsKKwor
ICAgIGF1dG8gbm9kZSA9IFNjcmlwdFByb2Nlc3Nvck5vZGU6OmNyZWF0ZSgqdGhpcywgc2FtcGxl
UmF0ZSgpLCBidWZmZXJTaXplLCBudW1iZXJPZklucHV0Q2hhbm5lbHMsIG51bWJlck9mT3V0cHV0
Q2hhbm5lbHMpOworCisgICAgcmVmTm9kZShub2RlKTsgLy8gY29udGV4dCBrZWVwcyByZWZlcmVu
Y2UgdW50aWwgd2Ugc3RvcCBtYWtpbmcgamF2YXNjcmlwdCByZW5kZXJpbmcgY2FsbGJhY2tzCisg
ICAgcmV0dXJuIG5vZGU7Cit9CisKK0V4Y2VwdGlvbk9yPFJlZjxCaXF1YWRGaWx0ZXJOb2RlPj4g
V2ViS2l0QXVkaW9Db250ZXh0OjpjcmVhdGVCaXF1YWRGaWx0ZXIoKQoreworICAgIEFMV0FZU19M
T0coTE9HSURFTlRJRklFUik7CisKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAgIGlm
IChtX2lzU3RvcFNjaGVkdWxlZCkKKyAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IEludmFsaWRT
dGF0ZUVycm9yIH07CisKKyAgICBsYXp5SW5pdGlhbGl6ZSgpOworCisgICAgcmV0dXJuIEJpcXVh
ZEZpbHRlck5vZGU6OmNyZWF0ZSgqdGhpcywgc2FtcGxlUmF0ZSgpKTsKK30KKworRXhjZXB0aW9u
T3I8UmVmPFdhdmVTaGFwZXJOb2RlPj4gV2ViS2l0QXVkaW9Db250ZXh0OjpjcmVhdGVXYXZlU2hh
cGVyKCkKK3sKKyAgICBBTFdBWVNfTE9HKExPR0lERU5USUZJRVIpOworCisgICAgQVNTRVJUKGlz
TWFpblRocmVhZCgpKTsKKyAgICBpZiAobV9pc1N0b3BTY2hlZHVsZWQpCisgICAgICAgIHJldHVy
biBFeGNlcHRpb24geyBJbnZhbGlkU3RhdGVFcnJvciB9OworCisgICAgbGF6eUluaXRpYWxpemUo
KTsKKyAgICByZXR1cm4gV2F2ZVNoYXBlck5vZGU6OmNyZWF0ZSgqdGhpcyk7Cit9CisKK0V4Y2Vw
dGlvbk9yPFJlZjxXZWJLaXRBdWRpb1Bhbm5lck5vZGU+PiBXZWJLaXRBdWRpb0NvbnRleHQ6OmNy
ZWF0ZVBhbm5lcigpCit7CisgICAgQUxXQVlTX0xPRyhMT0dJREVOVElGSUVSKTsKKworICAgIEFT
U0VSVChpc01haW5UaHJlYWQoKSk7CisgICAgaWYgKG1faXNTdG9wU2NoZWR1bGVkKQorICAgICAg
ICByZXR1cm4gRXhjZXB0aW9uIHsgSW52YWxpZFN0YXRlRXJyb3IgfTsKKworICAgIGxhenlJbml0
aWFsaXplKCk7CisgICAgcmV0dXJuIFdlYktpdEF1ZGlvUGFubmVyTm9kZTo6Y3JlYXRlKCp0aGlz
LCBzYW1wbGVSYXRlKCkpOworfQorCitFeGNlcHRpb25PcjxSZWY8Q29udm9sdmVyTm9kZT4+IFdl
YktpdEF1ZGlvQ29udGV4dDo6Y3JlYXRlQ29udm9sdmVyKCkKK3sKKyAgICBBTFdBWVNfTE9HKExP
R0lERU5USUZJRVIpOworCisgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKyAgICBpZiAobV9p
c1N0b3BTY2hlZHVsZWQpCisgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBJbnZhbGlkU3RhdGVF
cnJvciB9OworCisgICAgbGF6eUluaXRpYWxpemUoKTsKKyAgICByZXR1cm4gQ29udm9sdmVyTm9k
ZTo6Y3JlYXRlKCp0aGlzLCBzYW1wbGVSYXRlKCkpOworfQorCitFeGNlcHRpb25PcjxSZWY8RHlu
YW1pY3NDb21wcmVzc29yTm9kZT4+IFdlYktpdEF1ZGlvQ29udGV4dDo6Y3JlYXRlRHluYW1pY3ND
b21wcmVzc29yKCkKK3sKKyAgICBBTFdBWVNfTE9HKExPR0lERU5USUZJRVIpOworCisgICAgQVNT
RVJUKGlzTWFpblRocmVhZCgpKTsKKyAgICBpZiAobV9pc1N0b3BTY2hlZHVsZWQpCisgICAgICAg
IHJldHVybiBFeGNlcHRpb24geyBJbnZhbGlkU3RhdGVFcnJvciB9OworCisgICAgbGF6eUluaXRp
YWxpemUoKTsKKyAgICByZXR1cm4gRHluYW1pY3NDb21wcmVzc29yTm9kZTo6Y3JlYXRlKCp0aGlz
LCBzYW1wbGVSYXRlKCkpOworfQorCitFeGNlcHRpb25PcjxSZWY8QW5hbHlzZXJOb2RlPj4gV2Vi
S2l0QXVkaW9Db250ZXh0OjpjcmVhdGVBbmFseXNlcigpCit7CisgICAgQUxXQVlTX0xPRyhMT0dJ
REVOVElGSUVSKTsKKworICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisgICAgaWYgKG1faXNT
dG9wU2NoZWR1bGVkKQorICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgSW52YWxpZFN0YXRlRXJy
b3IgfTsKKworICAgIGxhenlJbml0aWFsaXplKCk7CisgICAgcmV0dXJuIEFuYWx5c2VyTm9kZTo6
Y3JlYXRlKCp0aGlzLCBzYW1wbGVSYXRlKCkpOworfQorCitFeGNlcHRpb25PcjxSZWY8R2Fpbk5v
ZGU+PiBXZWJLaXRBdWRpb0NvbnRleHQ6OmNyZWF0ZUdhaW4oKQoreworICAgIEFMV0FZU19MT0co
TE9HSURFTlRJRklFUik7CisKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAgIGlmICht
X2lzU3RvcFNjaGVkdWxlZCkKKyAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IEludmFsaWRTdGF0
ZUVycm9yIH07CisKKyAgICBsYXp5SW5pdGlhbGl6ZSgpOworICAgIHJldHVybiBHYWluTm9kZTo6
Y3JlYXRlKCp0aGlzLCBzYW1wbGVSYXRlKCkpOworfQorCitFeGNlcHRpb25PcjxSZWY8RGVsYXlO
b2RlPj4gV2ViS2l0QXVkaW9Db250ZXh0OjpjcmVhdGVEZWxheShkb3VibGUgbWF4RGVsYXlUaW1l
KQoreworICAgIEFMV0FZU19MT0coTE9HSURFTlRJRklFUik7CisKKyAgICBBU1NFUlQoaXNNYWlu
VGhyZWFkKCkpOworICAgIGlmIChtX2lzU3RvcFNjaGVkdWxlZCkKKyAgICAgICAgcmV0dXJuIEV4
Y2VwdGlvbiB7IEludmFsaWRTdGF0ZUVycm9yIH07CisKKyAgICBsYXp5SW5pdGlhbGl6ZSgpOwor
ICAgIHJldHVybiBEZWxheU5vZGU6OmNyZWF0ZSgqdGhpcywgc2FtcGxlUmF0ZSgpLCBtYXhEZWxh
eVRpbWUpOworfQorCitFeGNlcHRpb25PcjxSZWY8Q2hhbm5lbFNwbGl0dGVyTm9kZT4+IFdlYktp
dEF1ZGlvQ29udGV4dDo6Y3JlYXRlQ2hhbm5lbFNwbGl0dGVyKHNpemVfdCBudW1iZXJPZk91dHB1
dHMpCit7CisgICAgQUxXQVlTX0xPRyhMT0dJREVOVElGSUVSKTsKKworICAgIEFTU0VSVChpc01h
aW5UaHJlYWQoKSk7CisgICAgaWYgKG1faXNTdG9wU2NoZWR1bGVkKQorICAgICAgICByZXR1cm4g
RXhjZXB0aW9uIHsgSW52YWxpZFN0YXRlRXJyb3IgfTsKKworICAgIGxhenlJbml0aWFsaXplKCk7
CisgICAgYXV0byBub2RlID0gQ2hhbm5lbFNwbGl0dGVyTm9kZTo6Y3JlYXRlKCp0aGlzLCBzYW1w
bGVSYXRlKCksIG51bWJlck9mT3V0cHV0cyk7CisgICAgaWYgKCFub2RlKQorICAgICAgICByZXR1
cm4gRXhjZXB0aW9uIHsgSW5kZXhTaXplRXJyb3IgfTsKKyAgICByZXR1cm4gbm9kZS5yZWxlYXNl
Tm9uTnVsbCgpOworfQorCitFeGNlcHRpb25PcjxSZWY8Q2hhbm5lbE1lcmdlck5vZGU+PiBXZWJL
aXRBdWRpb0NvbnRleHQ6OmNyZWF0ZUNoYW5uZWxNZXJnZXIoc2l6ZV90IG51bWJlck9mSW5wdXRz
KQoreworICAgIEFMV0FZU19MT0coTE9HSURFTlRJRklFUik7CisKKyAgICBBU1NFUlQoaXNNYWlu
VGhyZWFkKCkpOworICAgIGlmIChtX2lzU3RvcFNjaGVkdWxlZCkKKyAgICAgICAgcmV0dXJuIEV4
Y2VwdGlvbiB7IEludmFsaWRTdGF0ZUVycm9yIH07CisKKyAgICBsYXp5SW5pdGlhbGl6ZSgpOwor
ICAgIGF1dG8gbm9kZSA9IENoYW5uZWxNZXJnZXJOb2RlOjpjcmVhdGUoKnRoaXMsIHNhbXBsZVJh
dGUoKSwgbnVtYmVyT2ZJbnB1dHMpOworICAgIGlmICghbm9kZSkKKyAgICAgICAgcmV0dXJuIEV4
Y2VwdGlvbiB7IEluZGV4U2l6ZUVycm9yIH07CisgICAgcmV0dXJuIG5vZGUucmVsZWFzZU5vbk51
bGwoKTsKK30KKworRXhjZXB0aW9uT3I8UmVmPE9zY2lsbGF0b3JOb2RlPj4gV2ViS2l0QXVkaW9D
b250ZXh0OjpjcmVhdGVPc2NpbGxhdG9yKCkKK3sKKyAgICBBTFdBWVNfTE9HKExPR0lERU5USUZJ
RVIpOworCisgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKyAgICBpZiAobV9pc1N0b3BTY2hl
ZHVsZWQpCisgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBJbnZhbGlkU3RhdGVFcnJvciB9Owor
CisgICAgbGF6eUluaXRpYWxpemUoKTsKKworICAgIFJlZjxPc2NpbGxhdG9yTm9kZT4gbm9kZSA9
IE9zY2lsbGF0b3JOb2RlOjpjcmVhdGUoKnRoaXMsIHNhbXBsZVJhdGUoKSk7CisKKyAgICAvLyBC
ZWNhdXNlIHRoaXMgaXMgYW4gQXVkaW9TY2hlZHVsZWRTb3VyY2VOb2RlLCB0aGUgY29udGV4dCBr
ZWVwcyBhIHJlZmVyZW5jZSB1bnRpbCBpdCBoYXMgZmluaXNoZWQgcGxheWluZy4KKyAgICAvLyBX
aGVuIHRoaXMgaGFwcGVucywgQXVkaW9TY2hlZHVsZWRTb3VyY2VOb2RlOjpmaW5pc2goKSBjYWxs
cyBXZWJLaXRBdWRpb0NvbnRleHQ6Om5vdGlmeU5vZGVGaW5pc2hlZFByb2Nlc3NpbmcoKS4KKyAg
ICByZWZOb2RlKG5vZGUpOworCisgICAgcmV0dXJuIG5vZGU7Cit9CisKK0V4Y2VwdGlvbk9yPFJl
ZjxQZXJpb2RpY1dhdmU+PiBXZWJLaXRBdWRpb0NvbnRleHQ6OmNyZWF0ZVBlcmlvZGljV2F2ZShG
bG9hdDMyQXJyYXkmIHJlYWwsIEZsb2F0MzJBcnJheSYgaW1hZ2luYXJ5KQoreworICAgIEFMV0FZ
U19MT0coTE9HSURFTlRJRklFUik7CisKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAg
IGlmIChtX2lzU3RvcFNjaGVkdWxlZCkKKyAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IEludmFs
aWRTdGF0ZUVycm9yIH07CisKKyAgICBpZiAocmVhbC5sZW5ndGgoKSAhPSBpbWFnaW5hcnkubGVu
Z3RoKCkgfHwgKHJlYWwubGVuZ3RoKCkgPiBNYXhQZXJpb2RpY1dhdmVMZW5ndGgpIHx8ICFyZWFs
Lmxlbmd0aCgpKQorICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgSW5kZXhTaXplRXJyb3IgfTsK
KyAgICBsYXp5SW5pdGlhbGl6ZSgpOworICAgIHJldHVybiBQZXJpb2RpY1dhdmU6OmNyZWF0ZShz
YW1wbGVSYXRlKCksIHJlYWwsIGltYWdpbmFyeSk7Cit9CisKK3ZvaWQgV2ViS2l0QXVkaW9Db250
ZXh0Ojpub3RpZnlOb2RlRmluaXNoZWRQcm9jZXNzaW5nKEF1ZGlvTm9kZSogbm9kZSkKK3sKKyAg
ICBBU1NFUlQoaXNBdWRpb1RocmVhZCgpKTsKKyAgICBtX2ZpbmlzaGVkTm9kZXMuYXBwZW5kKG5v
ZGUpOworfQorCit2b2lkIFdlYktpdEF1ZGlvQ29udGV4dDo6ZGVyZWZGaW5pc2hlZFNvdXJjZU5v
ZGVzKCkKK3sKKyAgICBBU1NFUlQoaXNHcmFwaE93bmVyKCkpOworICAgIEFTU0VSVChpc0F1ZGlv
VGhyZWFkKCkgfHwgaXNBdWRpb1RocmVhZEZpbmlzaGVkKCkpOworICAgIGZvciAoYXV0byYgbm9k
ZSA6IG1fZmluaXNoZWROb2RlcykKKyAgICAgICAgZGVyZWZOb2RlKCpub2RlKTsKKworICAgIG1f
ZmluaXNoZWROb2Rlcy5jbGVhcigpOworfQorCit2b2lkIFdlYktpdEF1ZGlvQ29udGV4dDo6cmVm
Tm9kZShBdWRpb05vZGUmIG5vZGUpCit7CisgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKyAg
ICBBdXRvTG9ja2VyIGxvY2tlcigqdGhpcyk7CisKKyAgICBub2RlLnJlZihBdWRpb05vZGU6OlJl
ZlR5cGVDb25uZWN0aW9uKTsKKyAgICBtX3JlZmVyZW5jZWROb2Rlcy5hcHBlbmQoJm5vZGUpOwor
fQorCit2b2lkIFdlYktpdEF1ZGlvQ29udGV4dDo6ZGVyZWZOb2RlKEF1ZGlvTm9kZSYgbm9kZSkK
K3sKKyAgICBBU1NFUlQoaXNHcmFwaE93bmVyKCkpOworCisgICAgbm9kZS5kZXJlZihBdWRpb05v
ZGU6OlJlZlR5cGVDb25uZWN0aW9uKTsKKworICAgIEFTU0VSVChtX3JlZmVyZW5jZWROb2Rlcy5j
b250YWlucygmbm9kZSkpOworICAgIG1fcmVmZXJlbmNlZE5vZGVzLnJlbW92ZUZpcnN0KCZub2Rl
KTsKK30KKwordm9pZCBXZWJLaXRBdWRpb0NvbnRleHQ6OmRlcmVmVW5maW5pc2hlZFNvdXJjZU5v
ZGVzKCkKK3sKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkgJiYgaXNBdWRpb1RocmVhZEZpbmlz
aGVkKCkpOworICAgIGZvciAoYXV0byYgbm9kZSA6IG1fcmVmZXJlbmNlZE5vZGVzKQorICAgICAg
ICBub2RlLT5kZXJlZihBdWRpb05vZGU6OlJlZlR5cGVDb25uZWN0aW9uKTsKKworICAgIG1fcmVm
ZXJlbmNlZE5vZGVzLmNsZWFyKCk7Cit9CisKK3ZvaWQgV2ViS2l0QXVkaW9Db250ZXh0Ojpsb2Nr
KGJvb2wmIG11c3RSZWxlYXNlTG9jaykKK3sKKyAgICAvLyBEb24ndCBhbGxvdyByZWd1bGFyIGxv
Y2sgaW4gcmVhbC10aW1lIGF1ZGlvIHRocmVhZC4KKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkp
OworCisgICAgVGhyZWFkJiB0aGlzVGhyZWFkID0gVGhyZWFkOjpjdXJyZW50KCk7CisKKyAgICBp
ZiAoJnRoaXNUaHJlYWQgPT0gbV9ncmFwaE93bmVyVGhyZWFkKSB7CisgICAgICAgIC8vIFdlIGFs
cmVhZHkgaGF2ZSB0aGUgbG9jay4KKyAgICAgICAgbXVzdFJlbGVhc2VMb2NrID0gZmFsc2U7Cisg
ICAgfSBlbHNlIHsKKyAgICAgICAgLy8gQWNxdWlyZSB0aGUgbG9jay4KKyAgICAgICAgbV9jb250
ZXh0R3JhcGhNdXRleC5sb2NrKCk7CisgICAgICAgIG1fZ3JhcGhPd25lclRocmVhZCA9ICZ0aGlz
VGhyZWFkOworICAgICAgICBtdXN0UmVsZWFzZUxvY2sgPSB0cnVlOworICAgIH0KK30KKworYm9v
bCBXZWJLaXRBdWRpb0NvbnRleHQ6OnRyeUxvY2soYm9vbCYgbXVzdFJlbGVhc2VMb2NrKQorewor
ICAgIFRocmVhZCYgdGhpc1RocmVhZCA9IFRocmVhZDo6Y3VycmVudCgpOworICAgIGJvb2wgaXNB
dWRpb1RocmVhZCA9ICZ0aGlzVGhyZWFkID09IGF1ZGlvVGhyZWFkKCk7CisKKyAgICAvLyBUcnkg
dG8gY2F0Y2ggY2FzZXMgb2YgdXNpbmcgdHJ5IGxvY2sgb24gbWFpbiB0aHJlYWQgLSBpdCBzaG91
bGQgdXNlIHJlZ3VsYXIgbG9jay4KKyAgICBBU1NFUlQoaXNBdWRpb1RocmVhZCB8fCBpc0F1ZGlv
VGhyZWFkRmluaXNoZWQoKSk7CisKKyAgICBpZiAoIWlzQXVkaW9UaHJlYWQpIHsKKyAgICAgICAg
Ly8gSW4gcmVsZWFzZSBidWlsZCB0cmVhdCB0cnlMb2NrKCkgYXMgbG9jaygpIChzaW5jZSBhYm92
ZSBBU1NFUlQoaXNBdWRpb1RocmVhZCkgbmV2ZXIgZmlyZXMpIC0gdGhpcyBpcyB0aGUgYmVzdCB3
ZSBjYW4gZG8uCisgICAgICAgIGxvY2sobXVzdFJlbGVhc2VMb2NrKTsKKyAgICAgICAgcmV0dXJu
IHRydWU7CisgICAgfQorCisgICAgYm9vbCBoYXNMb2NrOworCisgICAgaWYgKCZ0aGlzVGhyZWFk
ID09IG1fZ3JhcGhPd25lclRocmVhZCkgeworICAgICAgICAvLyBUaHJlYWQgYWxyZWFkeSBoYXMg
dGhlIGxvY2suCisgICAgICAgIGhhc0xvY2sgPSB0cnVlOworICAgICAgICBtdXN0UmVsZWFzZUxv
Y2sgPSBmYWxzZTsKKyAgICB9IGVsc2UgeworICAgICAgICAvLyBEb24ndCBhbHJlYWR5IGhhdmUg
dGhlIGxvY2sgLSB0cnkgdG8gYWNxdWlyZSBpdC4KKyAgICAgICAgaGFzTG9jayA9IG1fY29udGV4
dEdyYXBoTXV0ZXgudHJ5TG9jaygpOworCisgICAgICAgIGlmIChoYXNMb2NrKQorICAgICAgICAg
ICAgbV9ncmFwaE93bmVyVGhyZWFkID0gJnRoaXNUaHJlYWQ7CisKKyAgICAgICAgbXVzdFJlbGVh
c2VMb2NrID0gaGFzTG9jazsKKyAgICB9CisKKyAgICByZXR1cm4gaGFzTG9jazsKK30KKwordm9p
ZCBXZWJLaXRBdWRpb0NvbnRleHQ6OnVubG9jaygpCit7CisgICAgQVNTRVJUKG1fZ3JhcGhPd25l
clRocmVhZCA9PSAmVGhyZWFkOjpjdXJyZW50KCkpOworCisgICAgbV9ncmFwaE93bmVyVGhyZWFk
ID0gbnVsbHB0cjsKKyAgICBtX2NvbnRleHRHcmFwaE11dGV4LnVubG9jaygpOworfQorCitib29s
IFdlYktpdEF1ZGlvQ29udGV4dDo6aXNBdWRpb1RocmVhZCgpIGNvbnN0Cit7CisgICAgcmV0dXJu
IG1fYXVkaW9UaHJlYWQgPT0gJlRocmVhZDo6Y3VycmVudCgpOworfQorCitib29sIFdlYktpdEF1
ZGlvQ29udGV4dDo6aXNHcmFwaE93bmVyKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9ncmFwaE93
bmVyVGhyZWFkID09ICZUaHJlYWQ6OmN1cnJlbnQoKTsKK30KKwordm9pZCBXZWJLaXRBdWRpb0Nv
bnRleHQ6OmFkZERlZmVycmVkRmluaXNoRGVyZWYoQXVkaW9Ob2RlKiBub2RlKQoreworICAgIEFT
U0VSVChpc0F1ZGlvVGhyZWFkKCkpOworICAgIG1fZGVmZXJyZWRGaW5pc2hEZXJlZkxpc3QuYXBw
ZW5kKG5vZGUpOworfQorCit2b2lkIFdlYktpdEF1ZGlvQ29udGV4dDo6aGFuZGxlUHJlUmVuZGVy
VGFza3MoKQoreworICAgIEFTU0VSVChpc0F1ZGlvVGhyZWFkKCkpOworCisgICAgLy8gQXQgdGhl
IGJlZ2lubmluZyBvZiBldmVyeSByZW5kZXIgcXVhbnR1bSwgdHJ5IHRvIHVwZGF0ZSB0aGUgaW50
ZXJuYWwgcmVuZGVyaW5nIGdyYXBoIHN0YXRlIChmcm9tIG1haW4gdGhyZWFkIGNoYW5nZXMpLgor
ICAgIC8vIEl0J3MgT0sgaWYgdGhlIHRyeUxvY2soKSBmYWlscywgd2UnbGwganVzdCB0YWtlIHNs
aWdodGx5IGxvbmdlciB0byBwaWNrIHVwIHRoZSBjaGFuZ2VzLgorICAgIGJvb2wgbXVzdFJlbGVh
c2VMb2NrOworICAgIGlmICh0cnlMb2NrKG11c3RSZWxlYXNlTG9jaykpIHsKKyAgICAgICAgLy8g
Rml4dXAgdGhlIHN0YXRlIG9mIGFueSBkaXJ0eSBBdWRpb1N1bW1pbmdKdW5jdGlvbnMgYW5kIEF1
ZGlvTm9kZU91dHB1dHMuCisgICAgICAgIGhhbmRsZURpcnR5QXVkaW9TdW1taW5nSnVuY3Rpb25z
KCk7CisgICAgICAgIGhhbmRsZURpcnR5QXVkaW9Ob2RlT3V0cHV0cygpOworCisgICAgICAgIHVw
ZGF0ZUF1dG9tYXRpY1B1bGxOb2RlcygpOworCisgICAgICAgIGlmIChtdXN0UmVsZWFzZUxvY2sp
CisgICAgICAgICAgICB1bmxvY2soKTsKKyAgICB9Cit9CisKK3ZvaWQgV2ViS2l0QXVkaW9Db250
ZXh0OjpoYW5kbGVQb3N0UmVuZGVyVGFza3MoKQoreworICAgIEFTU0VSVChpc0F1ZGlvVGhyZWFk
KCkpOworCisgICAgLy8gTXVzdCB1c2UgYSB0cnlMb2NrKCkgaGVyZSB0b28uIERvbid0IHdvcnJ5
LCB0aGUgbG9jayB3aWxsIHZlcnkgcmFyZWx5IGJlIGNvbnRlbmRlZCBhbmQgdGhpcyBtZXRob2Qg
aXMgY2FsbGVkIGZyZXF1ZW50bHkuCisgICAgLy8gVGhlIHdvcnN0IHRoYXQgY2FuIGhhcHBlbiBp
cyB0aGF0IHRoZXJlIHdpbGwgYmUgc29tZSBub2RlcyB3aGljaCB3aWxsIHRha2Ugc2xpZ2h0bHkg
bG9uZ2VyIHRoYW4gdXN1YWwgdG8gYmUgZGVsZXRlZCBvciByZW1vdmVkCisgICAgLy8gZnJvbSB0
aGUgcmVuZGVyIGdyYXBoIChpbiB3aGljaCBjYXNlIHRoZXknbGwgcmVuZGVyIHNpbGVuY2UpLgor
ICAgIGJvb2wgbXVzdFJlbGVhc2VMb2NrOworICAgIGlmICh0cnlMb2NrKG11c3RSZWxlYXNlTG9j
aykpIHsKKyAgICAgICAgLy8gVGFrZSBjYXJlIG9mIGZpbmlzaGluZyBhbnkgZGVyZWZzIHdoZXJl
IHRoZSB0cnlMb2NrKCkgZmFpbGVkIHByZXZpb3VzbHkuCisgICAgICAgIGhhbmRsZURlZmVycmVk
RmluaXNoRGVyZWZzKCk7CisKKyAgICAgICAgLy8gRHluYW1pY2FsbHkgY2xlYW4gdXAgbm9kZXMg
d2hpY2ggYXJlIG5vIGxvbmdlciBuZWVkZWQuCisgICAgICAgIGRlcmVmRmluaXNoZWRTb3VyY2VO
b2RlcygpOworCisgICAgICAgIC8vIERvbid0IGRlbGV0ZSBpbiB0aGUgcmVhbC10aW1lIHRocmVh
ZC4gTGV0IHRoZSBtYWluIHRocmVhZCBkbyBpdC4KKyAgICAgICAgLy8gUmVmLWNvdW50ZWQgb2Jq
ZWN0cyBoZWxkIGJ5IGNlcnRhaW4gQXVkaW9Ob2RlcyBtYXkgbm90IGJlIHRocmVhZC1zYWZlLgor
ICAgICAgICBzY2hlZHVsZU5vZGVEZWxldGlvbigpOworCisgICAgICAgIC8vIEZpeHVwIHRoZSBz
dGF0ZSBvZiBhbnkgZGlydHkgQXVkaW9TdW1taW5nSnVuY3Rpb25zIGFuZCBBdWRpb05vZGVPdXRw
dXRzLgorICAgICAgICBoYW5kbGVEaXJ0eUF1ZGlvU3VtbWluZ0p1bmN0aW9ucygpOworICAgICAg
ICBoYW5kbGVEaXJ0eUF1ZGlvTm9kZU91dHB1dHMoKTsKKworICAgICAgICB1cGRhdGVBdXRvbWF0
aWNQdWxsTm9kZXMoKTsKKworICAgICAgICBpZiAobXVzdFJlbGVhc2VMb2NrKQorICAgICAgICAg
ICAgdW5sb2NrKCk7CisgICAgfQorfQorCit2b2lkIFdlYktpdEF1ZGlvQ29udGV4dDo6aGFuZGxl
RGVmZXJyZWRGaW5pc2hEZXJlZnMoKQoreworICAgIEFTU0VSVChpc0F1ZGlvVGhyZWFkKCkgJiYg
aXNHcmFwaE93bmVyKCkpOworICAgIGZvciAoYXV0byYgbm9kZSA6IG1fZGVmZXJyZWRGaW5pc2hE
ZXJlZkxpc3QpCisgICAgICAgIG5vZGUtPmZpbmlzaERlcmVmKEF1ZGlvTm9kZTo6UmVmVHlwZUNv
bm5lY3Rpb24pOworCisgICAgbV9kZWZlcnJlZEZpbmlzaERlcmVmTGlzdC5jbGVhcigpOworfQor
Cit2b2lkIFdlYktpdEF1ZGlvQ29udGV4dDo6bWFya0ZvckRlbGV0aW9uKEF1ZGlvTm9kZSYgbm9k
ZSkKK3sKKyAgICBBU1NFUlQoaXNHcmFwaE93bmVyKCkpOworCisgICAgaWYgKGlzQXVkaW9UaHJl
YWRGaW5pc2hlZCgpKQorICAgICAgICBtX25vZGVzVG9EZWxldGUuYXBwZW5kKCZub2RlKTsKKyAg
ICBlbHNlCisgICAgICAgIG1fbm9kZXNNYXJrZWRGb3JEZWxldGlvbi5hcHBlbmQoJm5vZGUpOwor
CisgICAgLy8gVGhpcyBpcyBwcm9iYWJseSB0aGUgYmVzdCB0aW1lIGZvciB1cyB0byByZW1vdmUg
dGhlIG5vZGUgZnJvbSBhdXRvbWF0aWMgcHVsbCBsaXN0LAorICAgIC8vIHNpbmNlIGFsbCBjb25u
ZWN0aW9ucyBhcmUgZ29uZSBhbmQgd2UgaG9sZCB0aGUgZ3JhcGggbG9jay4gVGhlbiB3aGVuIGhh
bmRsZVBvc3RSZW5kZXJUYXNrcygpCisgICAgLy8gZ2V0cyBhIGNoYW5jZSB0byBzY2hlZHVsZSB0
aGUgZGVsZXRpb24gd29yaywgdXBkYXRlQXV0b21hdGljUHVsbE5vZGVzKCkgYWxzbyBnZXRzIGEg
Y2hhbmNlIHRvCisgICAgLy8gbW9kaWZ5IG1fcmVuZGVyaW5nQXV0b21hdGljUHVsbE5vZGVzLgor
ICAgIHJlbW92ZUF1dG9tYXRpY1B1bGxOb2RlKG5vZGUpOworfQorCit2b2lkIFdlYktpdEF1ZGlv
Q29udGV4dDo6c2NoZWR1bGVOb2RlRGVsZXRpb24oKQoreworICAgIGJvb2wgaXNHb29kID0gbV9p
c0luaXRpYWxpemVkICYmIGlzR3JhcGhPd25lcigpOworICAgIEFTU0VSVChpc0dvb2QpOworICAg
IGlmICghaXNHb29kKQorICAgICAgICByZXR1cm47CisKKyAgICAvLyBNYWtlIHN1cmUgdG8gY2Fs
bCBkZWxldGVNYXJrZWROb2RlcygpIG9uIG1haW4gdGhyZWFkLgorICAgIGlmIChtX25vZGVzTWFy
a2VkRm9yRGVsZXRpb24uc2l6ZSgpICYmICFtX2lzRGVsZXRpb25TY2hlZHVsZWQpIHsKKyAgICAg
ICAgbV9ub2Rlc1RvRGVsZXRlLmFwcGVuZFZlY3RvcihtX25vZGVzTWFya2VkRm9yRGVsZXRpb24p
OworICAgICAgICBtX25vZGVzTWFya2VkRm9yRGVsZXRpb24uY2xlYXIoKTsKKworICAgICAgICBt
X2lzRGVsZXRpb25TY2hlZHVsZWQgPSB0cnVlOworCisgICAgICAgIGNhbGxPbk1haW5UaHJlYWQo
W3Byb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKV0oKSBtdXRhYmxlIHsKKyAgICAgICAgICAg
IHByb3RlY3RlZFRoaXMtPmRlbGV0ZU1hcmtlZE5vZGVzKCk7CisgICAgICAgIH0pOworICAgIH0K
K30KKwordm9pZCBXZWJLaXRBdWRpb0NvbnRleHQ6OmRlbGV0ZU1hcmtlZE5vZGVzKCkKK3sKKyAg
ICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworCisgICAgLy8gUHJvdGVjdCB0aGlzIG9iamVjdCBm
cm9tIGJlaW5nIGRlbGV0ZWQgYmVmb3JlIHdlIHJlbGVhc2UgdGhlIG11dGV4IGxvY2tlZCBieSBB
dXRvTG9ja2VyLgorICAgIFJlZjxXZWJLaXRBdWRpb0NvbnRleHQ+IHByb3RlY3RlZFRoaXMoKnRo
aXMpOworICAgIHsKKyAgICAgICAgQXV0b0xvY2tlciBsb2NrZXIoKnRoaXMpOworCisgICAgICAg
IHdoaWxlIChtX25vZGVzVG9EZWxldGUuc2l6ZSgpKSB7CisgICAgICAgICAgICBBdWRpb05vZGUq
IG5vZGUgPSBtX25vZGVzVG9EZWxldGUudGFrZUxhc3QoKTsKKworICAgICAgICAgICAgLy8gQmVm
b3JlIGRlbGV0aW5nIHRoZSBub2RlLCBjbGVhciBvdXQgYW55IEF1ZGlvTm9kZUlucHV0cyBmcm9t
IG1fZGlydHlTdW1taW5nSnVuY3Rpb25zLgorICAgICAgICAgICAgdW5zaWduZWQgbnVtYmVyT2ZJ
bnB1dHMgPSBub2RlLT5udW1iZXJPZklucHV0cygpOworICAgICAgICAgICAgZm9yICh1bnNpZ25l
ZCBpID0gMDsgaSA8IG51bWJlck9mSW5wdXRzOyArK2kpCisgICAgICAgICAgICAgICAgbV9kaXJ0
eVN1bW1pbmdKdW5jdGlvbnMucmVtb3ZlKG5vZGUtPmlucHV0KGkpKTsKKworICAgICAgICAgICAg
Ly8gQmVmb3JlIGRlbGV0aW5nIHRoZSBub2RlLCBjbGVhciBvdXQgYW55IEF1ZGlvTm9kZU91dHB1
dHMgZnJvbSBtX2RpcnR5QXVkaW9Ob2RlT3V0cHV0cy4KKyAgICAgICAgICAgIHVuc2lnbmVkIG51
bWJlck9mT3V0cHV0cyA9IG5vZGUtPm51bWJlck9mT3V0cHV0cygpOworICAgICAgICAgICAgZm9y
ICh1bnNpZ25lZCBpID0gMDsgaSA8IG51bWJlck9mT3V0cHV0czsgKytpKQorICAgICAgICAgICAg
ICAgIG1fZGlydHlBdWRpb05vZGVPdXRwdXRzLnJlbW92ZShub2RlLT5vdXRwdXQoaSkpOworCisg
ICAgICAgICAgICAvLyBGaW5hbGx5LCBkZWxldGUgaXQuCisgICAgICAgICAgICBkZWxldGUgbm9k
ZTsKKyAgICAgICAgfQorICAgICAgICBtX2lzRGVsZXRpb25TY2hlZHVsZWQgPSBmYWxzZTsKKyAg
ICB9Cit9CisKK3ZvaWQgV2ViS2l0QXVkaW9Db250ZXh0OjptYXJrU3VtbWluZ0p1bmN0aW9uRGly
dHkoQXVkaW9TdW1taW5nSnVuY3Rpb24qIHN1bW1pbmdKdW5jdGlvbikKK3sKKyAgICBBU1NFUlQo
aXNHcmFwaE93bmVyKCkpOworICAgIG1fZGlydHlTdW1taW5nSnVuY3Rpb25zLmFkZChzdW1taW5n
SnVuY3Rpb24pOworfQorCit2b2lkIFdlYktpdEF1ZGlvQ29udGV4dDo6cmVtb3ZlTWFya2VkU3Vt
bWluZ0p1bmN0aW9uKEF1ZGlvU3VtbWluZ0p1bmN0aW9uKiBzdW1taW5nSnVuY3Rpb24pCit7Cisg
ICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKyAgICBBdXRvTG9ja2VyIGxvY2tlcigqdGhpcyk7
CisgICAgbV9kaXJ0eVN1bW1pbmdKdW5jdGlvbnMucmVtb3ZlKHN1bW1pbmdKdW5jdGlvbik7Cit9
CisKK3ZvaWQgV2ViS2l0QXVkaW9Db250ZXh0OjptYXJrQXVkaW9Ob2RlT3V0cHV0RGlydHkoQXVk
aW9Ob2RlT3V0cHV0KiBvdXRwdXQpCit7CisgICAgQVNTRVJUKGlzR3JhcGhPd25lcigpKTsKKyAg
ICBtX2RpcnR5QXVkaW9Ob2RlT3V0cHV0cy5hZGQob3V0cHV0KTsKK30KKwordm9pZCBXZWJLaXRB
dWRpb0NvbnRleHQ6OmhhbmRsZURpcnR5QXVkaW9TdW1taW5nSnVuY3Rpb25zKCkKK3sKKyAgICBB
U1NFUlQoaXNHcmFwaE93bmVyKCkpOworCisgICAgZm9yIChhdXRvJiBqdW5jdGlvbiA6IG1fZGly
dHlTdW1taW5nSnVuY3Rpb25zKQorICAgICAgICBqdW5jdGlvbi0+dXBkYXRlUmVuZGVyaW5nU3Rh
dGUoKTsKKworICAgIG1fZGlydHlTdW1taW5nSnVuY3Rpb25zLmNsZWFyKCk7Cit9CisKK3ZvaWQg
V2ViS2l0QXVkaW9Db250ZXh0OjpoYW5kbGVEaXJ0eUF1ZGlvTm9kZU91dHB1dHMoKQoreworICAg
IEFTU0VSVChpc0dyYXBoT3duZXIoKSk7CisKKyAgICBmb3IgKGF1dG8mIG91dHB1dCA6IG1fZGly
dHlBdWRpb05vZGVPdXRwdXRzKQorICAgICAgICBvdXRwdXQtPnVwZGF0ZVJlbmRlcmluZ1N0YXRl
KCk7CisKKyAgICBtX2RpcnR5QXVkaW9Ob2RlT3V0cHV0cy5jbGVhcigpOworfQorCit2b2lkIFdl
YktpdEF1ZGlvQ29udGV4dDo6YWRkQXV0b21hdGljUHVsbE5vZGUoQXVkaW9Ob2RlJiBub2RlKQor
eworICAgIEFTU0VSVChpc0dyYXBoT3duZXIoKSk7CisKKyAgICBpZiAobV9hdXRvbWF0aWNQdWxs
Tm9kZXMuYWRkKCZub2RlKS5pc05ld0VudHJ5KQorICAgICAgICBtX2F1dG9tYXRpY1B1bGxOb2Rl
c05lZWRVcGRhdGluZyA9IHRydWU7Cit9CisKK3ZvaWQgV2ViS2l0QXVkaW9Db250ZXh0OjpyZW1v
dmVBdXRvbWF0aWNQdWxsTm9kZShBdWRpb05vZGUmIG5vZGUpCit7CisgICAgQVNTRVJUKGlzR3Jh
cGhPd25lcigpKTsKKworICAgIGlmIChtX2F1dG9tYXRpY1B1bGxOb2Rlcy5yZW1vdmUoJm5vZGUp
KQorICAgICAgICBtX2F1dG9tYXRpY1B1bGxOb2Rlc05lZWRVcGRhdGluZyA9IHRydWU7Cit9CisK
K3ZvaWQgV2ViS2l0QXVkaW9Db250ZXh0Ojp1cGRhdGVBdXRvbWF0aWNQdWxsTm9kZXMoKQorewor
ICAgIEFTU0VSVChpc0dyYXBoT3duZXIoKSk7CisKKyAgICBpZiAobV9hdXRvbWF0aWNQdWxsTm9k
ZXNOZWVkVXBkYXRpbmcpIHsKKyAgICAgICAgLy8gQ29weSBmcm9tIG1fYXV0b21hdGljUHVsbE5v
ZGVzIHRvIG1fcmVuZGVyaW5nQXV0b21hdGljUHVsbE5vZGVzLgorICAgICAgICBtX3JlbmRlcmlu
Z0F1dG9tYXRpY1B1bGxOb2Rlcy5yZXNpemUobV9hdXRvbWF0aWNQdWxsTm9kZXMuc2l6ZSgpKTsK
KworICAgICAgICB1bnNpZ25lZCBpID0gMDsKKyAgICAgICAgZm9yIChhdXRvJiBvdXRwdXQgOiBt
X2F1dG9tYXRpY1B1bGxOb2RlcykKKyAgICAgICAgICAgIG1fcmVuZGVyaW5nQXV0b21hdGljUHVs
bE5vZGVzW2krK10gPSBvdXRwdXQ7CisKKyAgICAgICAgbV9hdXRvbWF0aWNQdWxsTm9kZXNOZWVk
VXBkYXRpbmcgPSBmYWxzZTsKKyAgICB9Cit9CisKK3ZvaWQgV2ViS2l0QXVkaW9Db250ZXh0Ojpw
cm9jZXNzQXV0b21hdGljUHVsbE5vZGVzKHNpemVfdCBmcmFtZXNUb1Byb2Nlc3MpCit7CisgICAg
QVNTRVJUKGlzQXVkaW9UaHJlYWQoKSk7CisKKyAgICBmb3IgKGF1dG8mIG5vZGUgOiBtX3JlbmRl
cmluZ0F1dG9tYXRpY1B1bGxOb2RlcykKKyAgICAgICAgbm9kZS0+cHJvY2Vzc0lmTmVjZXNzYXJ5
KGZyYW1lc1RvUHJvY2Vzcyk7Cit9CisKK3ZvaWQgV2ViS2l0QXVkaW9Db250ZXh0Ojpub2RlV2ls
bEJlZ2luUGxheWJhY2soKQoreworICAgIC8vIENhbGxlZCBieSBzY2hlZHVsZWQgQXVkaW9Ob2Rl
cyB3aGVuIGNsaWVudHMgc2NoZWR1bGUgdGhlaXIgc3RhcnQgdGltZXMuCisgICAgLy8gUHJpb3Ig
dG8gdGhlIGludHJvZHVjdGlvbiBvZiBzdXNwZW5kKCksIHJlc3VtZSgpLCBhbmQgc3RvcCgpLCBz
dGFydGluZworICAgIC8vIGEgc2NoZWR1bGVkIEF1ZGlvTm9kZSB3b3VsZCByZW1vdmUgdGhlIHVz
ZXItZ2VzdHVyZSByZXN0cmljdGlvbiwgaWYgcHJlc2VudCwKKyAgICAvLyBhbmQgd291bGQgdGh1
cyB1bm11dGUgdGhlIGNvbnRleHQuIE5vdyB0aGF0IEF1ZGlvQ29udGV4dCBzdGF5cyBpbiB0aGUK
KyAgICAvLyAic3VzcGVuZGVkIiBzdGF0ZSBpZiBhIHVzZXItZ2VzdHVyZSByZXN0cmljdGlvbiBp
cyBwcmVzZW50LCBzdGFydGluZyBhCisgICAgLy8gc2NoZWR1bGUgQXVkaW9Ob2RlIHNob3VsZCBz
ZXQgdGhlIHN0YXRlIHRvICJydW5uaW5nIiwgYnV0IG9ubHkgaWYgdGhlCisgICAgLy8gdXNlci1n
ZXN0dXJlIHJlc3RyaWN0aW9uIGlzIHNldC4KKyAgICBpZiAodXNlckdlc3R1cmVSZXF1aXJlZEZv
ckF1ZGlvU3RhcnQoKSkKKyAgICAgICAgc3RhcnRSZW5kZXJpbmcoKTsKK30KKworc3RhdGljIGJv
b2wgc2hvdWxkRG9jdW1lbnRBbGxvd1dlYkF1ZGlvVG9BdXRvUGxheShjb25zdCBEb2N1bWVudCYg
ZG9jdW1lbnQpCit7CisgICAgaWYgKGRvY3VtZW50LnByb2Nlc3NpbmdVc2VyR2VzdHVyZUZvck1l
ZGlhKCkgfHwgZG9jdW1lbnQuaXNDYXB0dXJpbmcoKSkKKyAgICAgICAgcmV0dXJuIHRydWU7Cisg
ICAgcmV0dXJuIGRvY3VtZW50LnF1aXJrcygpLnNob3VsZEF1dG9wbGF5V2ViQXVkaW9Gb3JBcmJp
dHJhcnlVc2VyR2VzdHVyZSgpICYmIGRvY3VtZW50LnRvcERvY3VtZW50KCkuaGFzSGFkVXNlcklu
dGVyYWN0aW9uKCk7Cit9CisKK2Jvb2wgV2ViS2l0QXVkaW9Db250ZXh0Ojp3aWxsQmVnaW5QbGF5
YmFjaygpCit7CisgICAgYXV0byogZG9jdW1lbnQgPSB0aGlzLT5kb2N1bWVudCgpOworICAgIGlm
ICghZG9jdW1lbnQpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGlmICh1c2VyR2VzdHVy
ZVJlcXVpcmVkRm9yQXVkaW9TdGFydCgpKSB7CisgICAgICAgIGlmICghc2hvdWxkRG9jdW1lbnRB
bGxvd1dlYkF1ZGlvVG9BdXRvUGxheSgqZG9jdW1lbnQpKSB7CisgICAgICAgICAgICBBTFdBWVNf
TE9HKExPR0lERU5USUZJRVIsICJyZXR1cm5pbmcgZmFsc2UsIG5vdCBwcm9jZXNzaW5nIHVzZXIg
Z2VzdHVyZSBvciBjYXB0dXJpbmciKTsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAg
ICAgfQorICAgICAgICByZW1vdmVCZWhhdmlvclJlc3RyaWN0aW9uKFdlYktpdEF1ZGlvQ29udGV4
dDo6UmVxdWlyZVVzZXJHZXN0dXJlRm9yQXVkaW9TdGFydFJlc3RyaWN0aW9uKTsKKyAgICB9CisK
KyAgICBpZiAocGFnZUNvbnNlbnRSZXF1aXJlZEZvckF1ZGlvU3RhcnQoKSkgeworICAgICAgICBh
dXRvKiBwYWdlID0gZG9jdW1lbnQtPnBhZ2UoKTsKKyAgICAgICAgaWYgKHBhZ2UgJiYgIXBhZ2Ut
PmNhblN0YXJ0TWVkaWEoKSkgeworICAgICAgICAgICAgZG9jdW1lbnQtPmFkZE1lZGlhQ2FuU3Rh
cnRMaXN0ZW5lcigqdGhpcyk7CisgICAgICAgICAgICBBTFdBWVNfTE9HKExPR0lERU5USUZJRVIs
ICJyZXR1cm5pbmcgZmFsc2UsIHBhZ2UgZG9lc24ndCBhbGxvdyBtZWRpYSB0byBzdGFydCIpOwor
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisgICAgICAgIHJlbW92ZUJlaGF2
aW9yUmVzdHJpY3Rpb24oV2ViS2l0QXVkaW9Db250ZXh0OjpSZXF1aXJlUGFnZUNvbnNlbnRGb3JB
dWRpb1N0YXJ0UmVzdHJpY3Rpb24pOworICAgIH0KKworICAgIGF1dG8gd2lsbEJlZ2luID0gbV9t
ZWRpYVNlc3Npb24tPmNsaWVudFdpbGxCZWdpblBsYXliYWNrKCk7CisgICAgQUxXQVlTX0xPRyhM
T0dJREVOVElGSUVSLCAicmV0dXJuaW5nICIsIHdpbGxCZWdpbik7CisKKyAgICByZXR1cm4gd2ls
bEJlZ2luOworfQorCitib29sIFdlYktpdEF1ZGlvQ29udGV4dDo6d2lsbFBhdXNlUGxheWJhY2so
KQoreworICAgIGF1dG8qIGRvY3VtZW50ID0gdGhpcy0+ZG9jdW1lbnQoKTsKKyAgICBpZiAoIWRv
Y3VtZW50KQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBpZiAodXNlckdlc3R1cmVSZXF1
aXJlZEZvckF1ZGlvU3RhcnQoKSkgeworICAgICAgICBpZiAoIWRvY3VtZW50LT5wcm9jZXNzaW5n
VXNlckdlc3R1cmVGb3JNZWRpYSgpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAg
ICByZW1vdmVCZWhhdmlvclJlc3RyaWN0aW9uKFdlYktpdEF1ZGlvQ29udGV4dDo6UmVxdWlyZVVz
ZXJHZXN0dXJlRm9yQXVkaW9TdGFydFJlc3RyaWN0aW9uKTsKKyAgICB9CisKKyAgICBpZiAocGFn
ZUNvbnNlbnRSZXF1aXJlZEZvckF1ZGlvU3RhcnQoKSkgeworICAgICAgICBhdXRvKiBwYWdlID0g
ZG9jdW1lbnQtPnBhZ2UoKTsKKyAgICAgICAgaWYgKHBhZ2UgJiYgIXBhZ2UtPmNhblN0YXJ0TWVk
aWEoKSkgeworICAgICAgICAgICAgZG9jdW1lbnQtPmFkZE1lZGlhQ2FuU3RhcnRMaXN0ZW5lcigq
dGhpcyk7CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKyAgICAgICAgcmVt
b3ZlQmVoYXZpb3JSZXN0cmljdGlvbihXZWJLaXRBdWRpb0NvbnRleHQ6OlJlcXVpcmVQYWdlQ29u
c2VudEZvckF1ZGlvU3RhcnRSZXN0cmljdGlvbik7CisgICAgfQorCisgICAgcmV0dXJuIG1fbWVk
aWFTZXNzaW9uLT5jbGllbnRXaWxsUGF1c2VQbGF5YmFjaygpOworfQorCit2b2lkIFdlYktpdEF1
ZGlvQ29udGV4dDo6c3RhcnRSZW5kZXJpbmcoKQoreworICAgIEFMV0FZU19MT0coTE9HSURFTlRJ
RklFUik7CisgICAgaWYgKG1faXNTdG9wU2NoZWR1bGVkIHx8ICF3aWxsQmVnaW5QbGF5YmFjaygp
KQorICAgICAgICByZXR1cm47CisKKyAgICBtYWtlUGVuZGluZ0FjdGl2aXR5KCk7CisKKyAgICBk
ZXN0aW5hdGlvbigpLT5zdGFydFJlbmRlcmluZygpOworICAgIHNldFN0YXRlKFN0YXRlOjpSdW5u
aW5nKTsKK30KKwordm9pZCBXZWJLaXRBdWRpb0NvbnRleHQ6Om1lZGlhQ2FuU3RhcnQoRG9jdW1l
bnQmIGRvY3VtZW50KQoreworICAgIEFTU0VSVF9VTlVTRUQoZG9jdW1lbnQsICZkb2N1bWVudCA9
PSB0aGlzLT5kb2N1bWVudCgpKTsKKyAgICByZW1vdmVCZWhhdmlvclJlc3RyaWN0aW9uKFdlYktp
dEF1ZGlvQ29udGV4dDo6UmVxdWlyZVBhZ2VDb25zZW50Rm9yQXVkaW9TdGFydFJlc3RyaWN0aW9u
KTsKKyAgICBtYXlSZXN1bWVQbGF5YmFjayh0cnVlKTsKK30KKworTWVkaWFQcm9kdWNlcjo6TWVk
aWFTdGF0ZUZsYWdzIFdlYktpdEF1ZGlvQ29udGV4dDo6bWVkaWFTdGF0ZSgpIGNvbnN0Cit7Cisg
ICAgaWYgKCFtX2lzU3RvcFNjaGVkdWxlZCAmJiBtX2Rlc3RpbmF0aW9uTm9kZSAmJiBtX2Rlc3Rp
bmF0aW9uTm9kZS0+aXNQbGF5aW5nQXVkaW8oKSkKKyAgICAgICAgcmV0dXJuIE1lZGlhUHJvZHVj
ZXI6OklzUGxheWluZ0F1ZGlvOworCisgICAgcmV0dXJuIE1lZGlhUHJvZHVjZXI6OklzTm90UGxh
eWluZzsKK30KKwordm9pZCBXZWJLaXRBdWRpb0NvbnRleHQ6OnBhZ2VNdXRlZFN0YXRlRGlkQ2hh
bmdlKCkKK3sKKyAgICBpZiAobV9kZXN0aW5hdGlvbk5vZGUgJiYgZG9jdW1lbnQoKSAmJiBkb2N1
bWVudCgpLT5wYWdlKCkpCisgICAgICAgIG1fZGVzdGluYXRpb25Ob2RlLT5zZXRNdXRlZChkb2N1
bWVudCgpLT5wYWdlKCktPmlzQXVkaW9NdXRlZCgpKTsKK30KKwordm9pZCBXZWJLaXRBdWRpb0Nv
bnRleHQ6OmlzUGxheWluZ0F1ZGlvRGlkQ2hhbmdlKCkKK3sKKyAgICAvLyBNYWtlIHN1cmUgdG8g
Y2FsbCBEb2N1bWVudDo6dXBkYXRlSXNQbGF5aW5nTWVkaWEoKSBvbiB0aGUgbWFpbiB0aHJlYWQs
IHNpbmNlCisgICAgLy8gd2UgY291bGQgYmUgb24gdGhlIGF1ZGlvIEkvTyB0aHJlYWQgaGVyZSBh
bmQgdGhlIGNhbGwgaW50byBXZWJDb3JlIGNvdWxkIGJsb2NrLgorICAgIGNhbGxPbk1haW5UaHJl
YWQoW3Byb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKV0geworICAgICAgICBpZiAocHJvdGVj
dGVkVGhpcy0+ZG9jdW1lbnQoKSkKKyAgICAgICAgICAgIHByb3RlY3RlZFRoaXMtPmRvY3VtZW50
KCktPnVwZGF0ZUlzUGxheWluZ01lZGlhKCk7CisgICAgfSk7Cit9CisKK3ZvaWQgV2ViS2l0QXVk
aW9Db250ZXh0OjpmaW5pc2hlZFJlbmRlcmluZyhib29sIGRpZFJlbmRlcmluZykKK3sKKyAgICBB
U1NFUlQoaXNPZmZsaW5lQ29udGV4dCgpKTsKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwor
ICAgIGlmICghaXNNYWluVGhyZWFkKCkpCisgICAgICAgIHJldHVybjsKKworICAgIGF1dG8gY2xl
YXJQZW5kaW5nQWN0aXZpdHlJZkV4aXRFYXJseSA9IFdURjo6bWFrZVNjb3BlRXhpdChbdGhpc10g
eworICAgICAgICBjbGVhclBlbmRpbmdBY3Rpdml0eSgpOworICAgIH0pOworCisKKyAgICBBTFdB
WVNfTE9HKExPR0lERU5USUZJRVIpOworCisgICAgaWYgKCFkaWRSZW5kZXJpbmcpCisgICAgICAg
IHJldHVybjsKKworICAgIEF1ZGlvQnVmZmVyKiByZW5kZXJlZEJ1ZmZlciA9IG1fcmVuZGVyVGFy
Z2V0LmdldCgpOworICAgIHNldFN0YXRlKFN0YXRlOjpDbG9zZWQpOworCisgICAgQVNTRVJUKHJl
bmRlcmVkQnVmZmVyKTsKKyAgICBpZiAoIXJlbmRlcmVkQnVmZmVyKQorICAgICAgICByZXR1cm47
CisKKyAgICAvLyBBdm9pZCBmaXJpbmcgdGhlIGV2ZW50IGlmIHRoZSBkb2N1bWVudCBoYXMgYWxy
ZWFkeSBnb25lIGF3YXkuCisgICAgaWYgKG1faXNTdG9wU2NoZWR1bGVkKQorICAgICAgICByZXR1
cm47CisKKyAgICBjbGVhclBlbmRpbmdBY3Rpdml0eUlmRXhpdEVhcmx5LnJlbGVhc2UoKTsKKyAg
ICBtX2V2ZW50UXVldWUtPmVucXVldWVFdmVudChPZmZsaW5lQXVkaW9Db21wbGV0aW9uRXZlbnQ6
OmNyZWF0ZShyZW5kZXJlZEJ1ZmZlcikpOworfQorCit2b2lkIFdlYktpdEF1ZGlvQ29udGV4dDo6
ZGlzcGF0Y2hFdmVudChFdmVudCYgZXZlbnQpCit7CisgICAgRXZlbnRUYXJnZXQ6OmRpc3BhdGNo
RXZlbnQoZXZlbnQpOworICAgIGlmIChldmVudC5ldmVudEludGVyZmFjZSgpID09IE9mZmxpbmVB
dWRpb0NvbXBsZXRpb25FdmVudEludGVyZmFjZVR5cGUpCisgICAgICAgIGNsZWFyUGVuZGluZ0Fj
dGl2aXR5KCk7Cit9CisKK3ZvaWQgV2ViS2l0QXVkaW9Db250ZXh0OjppbmNyZW1lbnRBY3RpdmVT
b3VyY2VDb3VudCgpCit7CisgICAgKyttX2FjdGl2ZVNvdXJjZUNvdW50OworfQorCit2b2lkIFdl
YktpdEF1ZGlvQ29udGV4dDo6ZGVjcmVtZW50QWN0aXZlU291cmNlQ291bnQoKQoreworICAgIC0t
bV9hY3RpdmVTb3VyY2VDb3VudDsKK30KKwordm9pZCBXZWJLaXRBdWRpb0NvbnRleHQ6OnN1c3Bl
bmRSZW5kZXJpbmcoRE9NUHJvbWlzZURlZmVycmVkPHZvaWQ+JiYgcHJvbWlzZSkKK3sKKyAgICBp
ZiAoaXNPZmZsaW5lQ29udGV4dCgpIHx8IG1faXNTdG9wU2NoZWR1bGVkKSB7CisgICAgICAgIHBy
b21pc2UucmVqZWN0KEludmFsaWRTdGF0ZUVycm9yKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0K
KworICAgIGlmIChtX3N0YXRlID09IFN0YXRlOjpTdXNwZW5kZWQpIHsKKyAgICAgICAgcHJvbWlz
ZS5yZXNvbHZlKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpZiAobV9zdGF0ZSA9
PSBTdGF0ZTo6Q2xvc2VkIHx8IG1fc3RhdGUgPT0gU3RhdGU6OkludGVycnVwdGVkIHx8ICFtX2Rl
c3RpbmF0aW9uTm9kZSkgeworICAgICAgICBwcm9taXNlLnJlamVjdCgpOworICAgICAgICByZXR1
cm47CisgICAgfQorCisgICAgYWRkUmVhY3Rpb24oU3RhdGU6OlN1c3BlbmRlZCwgV1RGTW92ZShw
cm9taXNlKSk7CisKKyAgICBpZiAoIXdpbGxQYXVzZVBsYXliYWNrKCkpCisgICAgICAgIHJldHVy
bjsKKworICAgIGxhenlJbml0aWFsaXplKCk7CisKKyAgICBtX2Rlc3RpbmF0aW9uTm9kZS0+c3Vz
cGVuZChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpXSB7CisgICAgICAgIHNl
dFN0YXRlKFN0YXRlOjpTdXNwZW5kZWQpOworICAgIH0pOworfQorCit2b2lkIFdlYktpdEF1ZGlv
Q29udGV4dDo6cmVzdW1lUmVuZGVyaW5nKERPTVByb21pc2VEZWZlcnJlZDx2b2lkPiYmIHByb21p
c2UpCit7CisgICAgaWYgKGlzT2ZmbGluZUNvbnRleHQoKSB8fCBtX2lzU3RvcFNjaGVkdWxlZCkg
eworICAgICAgICBwcm9taXNlLnJlamVjdChJbnZhbGlkU3RhdGVFcnJvcik7CisgICAgICAgIHJl
dHVybjsKKyAgICB9CisKKyAgICBpZiAobV9zdGF0ZSA9PSBTdGF0ZTo6UnVubmluZykgeworICAg
ICAgICBwcm9taXNlLnJlc29sdmUoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlm
IChtX3N0YXRlID09IFN0YXRlOjpDbG9zZWQgfHwgIW1fZGVzdGluYXRpb25Ob2RlKSB7CisgICAg
ICAgIHByb21pc2UucmVqZWN0KCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBhZGRS
ZWFjdGlvbihTdGF0ZTo6UnVubmluZywgV1RGTW92ZShwcm9taXNlKSk7CisKKyAgICBpZiAoIXdp
bGxCZWdpblBsYXliYWNrKCkpCisgICAgICAgIHJldHVybjsKKworICAgIGxhenlJbml0aWFsaXpl
KCk7CisKKyAgICBtX2Rlc3RpbmF0aW9uTm9kZS0+cmVzdW1lKFt0aGlzLCBwcm90ZWN0ZWRUaGlz
ID0gbWFrZVJlZigqdGhpcyldIHsKKyAgICAgICAgc2V0U3RhdGUoU3RhdGU6OlJ1bm5pbmcpOwor
ICAgIH0pOworfQorCit2b2lkIFdlYktpdEF1ZGlvQ29udGV4dDo6Y2xvc2UoRE9NUHJvbWlzZURl
ZmVycmVkPHZvaWQ+JiYgcHJvbWlzZSkKK3sKKyAgICBpZiAoaXNPZmZsaW5lQ29udGV4dCgpIHx8
IG1faXNTdG9wU2NoZWR1bGVkKSB7CisgICAgICAgIHByb21pc2UucmVqZWN0KEludmFsaWRTdGF0
ZUVycm9yKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlmIChtX3N0YXRlID09IFN0
YXRlOjpDbG9zZWQgfHwgIW1fZGVzdGluYXRpb25Ob2RlKSB7CisgICAgICAgIHByb21pc2UucmVz
b2x2ZSgpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgYWRkUmVhY3Rpb24oU3RhdGU6
OkNsb3NlZCwgV1RGTW92ZShwcm9taXNlKSk7CisKKyAgICBsYXp5SW5pdGlhbGl6ZSgpOworCisg
ICAgbV9kZXN0aW5hdGlvbk5vZGUtPmNsb3NlKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJl
ZigqdGhpcyldIHsKKyAgICAgICAgc2V0U3RhdGUoU3RhdGU6OkNsb3NlZCk7CisgICAgICAgIHVu
aW5pdGlhbGl6ZSgpOworICAgIH0pOworfQorCisKK3ZvaWQgV2ViS2l0QXVkaW9Db250ZXh0Ojpz
dXNwZW5kUGxheWJhY2soKQoreworICAgIGlmICghbV9kZXN0aW5hdGlvbk5vZGUgfHwgbV9zdGF0
ZSA9PSBTdGF0ZTo6Q2xvc2VkKQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAobV9zdGF0ZSA9
PSBTdGF0ZTo6U3VzcGVuZGVkKSB7CisgICAgICAgIGlmIChtX21lZGlhU2Vzc2lvbi0+c3RhdGUo
KSA9PSBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6SW50ZXJydXB0ZWQpCisgICAgICAgICAgICBzZXRT
dGF0ZShTdGF0ZTo6SW50ZXJydXB0ZWQpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAg
bGF6eUluaXRpYWxpemUoKTsKKworICAgIG1fZGVzdGluYXRpb25Ob2RlLT5zdXNwZW5kKFt0aGlz
LCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyldIHsKKyAgICAgICAgYm9vbCBpbnRlcnJ1
cHRlZCA9IG1fbWVkaWFTZXNzaW9uLT5zdGF0ZSgpID09IFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpJ
bnRlcnJ1cHRlZDsKKyAgICAgICAgc2V0U3RhdGUoaW50ZXJydXB0ZWQgPyBTdGF0ZTo6SW50ZXJy
dXB0ZWQgOiBTdGF0ZTo6U3VzcGVuZGVkKTsKKyAgICB9KTsKK30KKwordm9pZCBXZWJLaXRBdWRp
b0NvbnRleHQ6Om1heVJlc3VtZVBsYXliYWNrKGJvb2wgc2hvdWxkUmVzdW1lKQoreworICAgIGlm
ICghbV9kZXN0aW5hdGlvbk5vZGUgfHwgbV9zdGF0ZSA9PSBTdGF0ZTo6Q2xvc2VkIHx8IG1fc3Rh
dGUgPT0gU3RhdGU6OlJ1bm5pbmcpCisgICAgICAgIHJldHVybjsKKworICAgIGlmICghc2hvdWxk
UmVzdW1lKSB7CisgICAgICAgIHNldFN0YXRlKFN0YXRlOjpTdXNwZW5kZWQpOworICAgICAgICBy
ZXR1cm47CisgICAgfQorCisgICAgaWYgKCF3aWxsQmVnaW5QbGF5YmFjaygpKQorICAgICAgICBy
ZXR1cm47CisKKyAgICBsYXp5SW5pdGlhbGl6ZSgpOworCisgICAgbV9kZXN0aW5hdGlvbk5vZGUt
PnJlc3VtZShbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpXSB7CisgICAgICAg
IHNldFN0YXRlKFN0YXRlOjpSdW5uaW5nKTsKKyAgICB9KTsKK30KKwordm9pZCBXZWJLaXRBdWRp
b0NvbnRleHQ6OnBvc3RUYXNrKFdURjo6RnVuY3Rpb248dm9pZCgpPiYmIHRhc2spCit7CisgICAg
aWYgKG1faXNTdG9wU2NoZWR1bGVkKQorICAgICAgICByZXR1cm47CisKKyAgICBtX3NjcmlwdEV4
ZWN1dGlvbkNvbnRleHQtPnBvc3RUYXNrKFdURk1vdmUodGFzaykpOworfQorCitjb25zdCBTZWN1
cml0eU9yaWdpbiogV2ViS2l0QXVkaW9Db250ZXh0OjpvcmlnaW4oKSBjb25zdAoreworICAgIHJl
dHVybiBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQgPyBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQt
PnNlY3VyaXR5T3JpZ2luKCkgOiBudWxscHRyOworfQorCit2b2lkIFdlYktpdEF1ZGlvQ29udGV4
dDo6YWRkQ29uc29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZSBzb3VyY2UsIE1lc3NhZ2VMZXZlbCBs
ZXZlbCwgY29uc3QgU3RyaW5nJiBtZXNzYWdlKQoreworICAgIGlmIChtX3NjcmlwdEV4ZWN1dGlv
bkNvbnRleHQpCisgICAgICAgIG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+YWRkQ29uc29sZU1l
c3NhZ2Uoc291cmNlLCBsZXZlbCwgbWVzc2FnZSk7Cit9CisKK3ZvaWQgV2ViS2l0QXVkaW9Db250
ZXh0OjpjbGVhclBlbmRpbmdBY3Rpdml0eSgpCit7CisgICAgaWYgKCFtX3BlbmRpbmdBY3Rpdml0
eSkKKyAgICAgICAgcmV0dXJuOworICAgIG1fcGVuZGluZ0FjdGl2aXR5ID0gbnVsbHB0cjsKKyAg
ICAvLyBGSVhNRTogUmVtb3ZlIHRoaXMgc3BlY2lmaWMgZGVyZWYoKSBhbmQgcmVmKCkgY2FsbCBp
biBtYWtlUGVuZGluZ0FjdGl2aXR5KCkuCisgICAgZGVyZWYoKTsKK30KKwordm9pZCBXZWJLaXRB
dWRpb0NvbnRleHQ6Om1ha2VQZW5kaW5nQWN0aXZpdHkoKQoreworICAgIGlmIChtX3BlbmRpbmdB
Y3Rpdml0eSkKKyAgICAgICAgcmV0dXJuOworICAgIG1fcGVuZGluZ0FjdGl2aXR5ID0gQWN0aXZl
RE9NT2JqZWN0OjptYWtlUGVuZGluZ0FjdGl2aXR5KCp0aGlzKTsKKyAgICByZWYoKTsKK30KKwor
I2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRAorV1RGTG9nQ2hhbm5lbCYgV2ViS2l0QXVkaW9Db250
ZXh0Ojpsb2dDaGFubmVsKCkgY29uc3QKK3sKKyAgICByZXR1cm4gTG9nTWVkaWE7Cit9CisjZW5k
aWYKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKFdFQl9BVURJ
TykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vV2ViS2l0QXVk
aW9Db250ZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1dlYktpdEF1ZGlv
Q29udGV4dC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi5jZTJkMDlh
MWYxMgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8v
V2ViS2l0QXVkaW9Db250ZXh0LmgKQEAgLTAsMCArMSw0MzEgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAo
QykgMjAxNi0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQ
VVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OCisgKiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKKyAqIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNw
cmFnbWEgb25jZQorCisjaW5jbHVkZSAiQWN0aXZlRE9NT2JqZWN0LmgiCisjaW5jbHVkZSAiQXN5
bmNBdWRpb0RlY29kZXIuaCIKKyNpbmNsdWRlICJBdWRpb0J1cy5oIgorI2luY2x1ZGUgIkF1ZGlv
Q29udGV4dC5oIgorI2luY2x1ZGUgIkF1ZGlvQ29udGV4dFN0YXRlLmgiCisjaW5jbHVkZSAiQXVk
aW9EZXN0aW5hdGlvbk5vZGUuaCIKKyNpbmNsdWRlICJFdmVudFRhcmdldC5oIgorI2luY2x1ZGUg
Ik1lZGlhQ2FuU3RhcnRMaXN0ZW5lci5oIgorI2luY2x1ZGUgIk1lZGlhUHJvZHVjZXIuaCIKKyNp
bmNsdWRlICJQbGF0Zm9ybU1lZGlhU2Vzc2lvbi5oIgorI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQuaCIKKyNpbmNsdWRlICJWaXNpYmlsaXR5Q2hhbmdlQ2xpZW50LmgiCisjaW5jbHVk
ZSA8SmF2YVNjcmlwdENvcmUvQ29uc29sZVR5cGVzLmg+CisjaW5jbHVkZSA8SmF2YVNjcmlwdENv
cmUvRmxvYXQzMkFycmF5Lmg+CisjaW5jbHVkZSA8YXRvbWljPgorI2luY2x1ZGUgPHd0Zi9IYXNo
U2V0Lmg+CisjaW5jbHVkZSA8d3RmL0xvZ2dlckhlbHBlci5oPgorI2luY2x1ZGUgPHd0Zi9NYWlu
VGhyZWFkLmg+CisjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi9UaHJlYWRT
YWZlUmVmQ291bnRlZC5oPgorI2luY2x1ZGUgPHd0Zi9UaHJlYWRpbmcuaD4KKyNpbmNsdWRlIDx3
dGYvVW5pcXVlUmVmLmg+CisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorI2luY2x1ZGUgPHd0Zi90
ZXh0L0F0b21TdHJpbmdIYXNoLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgQW5h
bHlzZXJOb2RlOworY2xhc3MgQXVkaW9CdWZmZXI7CitjbGFzcyBBdWRpb0J1ZmZlckNhbGxiYWNr
OworY2xhc3MgQXVkaW9CdWZmZXJTb3VyY2VOb2RlOworY2xhc3MgQXVkaW9MaXN0ZW5lcjsKK2Ns
YXNzIEF1ZGlvU3VtbWluZ0p1bmN0aW9uOworY2xhc3MgQmlxdWFkRmlsdGVyTm9kZTsKK2NsYXNz
IENoYW5uZWxNZXJnZXJOb2RlOworY2xhc3MgQ2hhbm5lbFNwbGl0dGVyTm9kZTsKK2NsYXNzIENv
bnZvbHZlck5vZGU7CitjbGFzcyBEZWxheU5vZGU7CitjbGFzcyBEb2N1bWVudDsKK2NsYXNzIER5
bmFtaWNzQ29tcHJlc3Nvck5vZGU7CitjbGFzcyBHYWluTm9kZTsKK2NsYXNzIEhUTUxNZWRpYUVs
ZW1lbnQ7CitjbGFzcyBNYWluVGhyZWFkR2VuZXJpY0V2ZW50UXVldWU7CitjbGFzcyBNZWRpYUVs
ZW1lbnRBdWRpb1NvdXJjZU5vZGU7CitjbGFzcyBNZWRpYVN0cmVhbTsKK2NsYXNzIE1lZGlhU3Ry
ZWFtQXVkaW9EZXN0aW5hdGlvbk5vZGU7CitjbGFzcyBNZWRpYVN0cmVhbUF1ZGlvU291cmNlTm9k
ZTsKK2NsYXNzIE9zY2lsbGF0b3JOb2RlOworY2xhc3MgUGVyaW9kaWNXYXZlOworY2xhc3MgU2Ny
aXB0UHJvY2Vzc29yTm9kZTsKK2NsYXNzIFNlY3VyaXR5T3JpZ2luOworY2xhc3MgV2F2ZVNoYXBl
ck5vZGU7CitjbGFzcyBXZWJLaXRBdWRpb1Bhbm5lck5vZGU7CisKK3RlbXBsYXRlPHR5cGVuYW1l
IElETFR5cGU+IGNsYXNzIERPTVByb21pc2VEZWZlcnJlZDsKKworLy8gQXVkaW9Db250ZXh0IGlz
IHRoZSBjb3JuZXJzdG9uZSBvZiB0aGUgd2ViIGF1ZGlvIEFQSSBhbmQgYWxsIEF1ZGlvTm9kZXMg
YXJlIGNyZWF0ZWQgZnJvbSBpdC4KKy8vIEZvciB0aHJlYWQgc2FmZXR5IGJldHdlZW4gdGhlIGF1
ZGlvIHRocmVhZCBhbmQgdGhlIG1haW4gdGhyZWFkLCBpdCBoYXMgYSByZW5kZXJpbmcgZ3JhcGgg
bG9ja2luZyBtZWNoYW5pc20uCisKK2NsYXNzIFdlYktpdEF1ZGlvQ29udGV4dAorICAgIDogcHVi
bGljIEF1ZGlvQ29udGV4dEJhc2UKKyAgICAsIHByaXZhdGUgUGxhdGZvcm1NZWRpYVNlc3Npb25D
bGllbnQKKyAgICAsIHByaXZhdGUgVmlzaWJpbGl0eUNoYW5nZUNsaWVudAoreworcHVibGljOgor
ICAgIC8vIENyZWF0ZSBhbiBXZWJLaXRBdWRpb0NvbnRleHQgZm9yIHJlbmRlcmluZyB0byB0aGUg
YXVkaW8gaGFyZHdhcmUuCisgICAgc3RhdGljIEV4Y2VwdGlvbk9yPFJlZjxXZWJLaXRBdWRpb0Nv
bnRleHQ+PiBjcmVhdGUoRG9jdW1lbnQmKTsKKworICAgIHZpcnR1YWwgfldlYktpdEF1ZGlvQ29u
dGV4dCgpOworCisgICAgYm9vbCBpc0luaXRpYWxpemVkKCkgY29uc3QgZmluYWw7CisKKyAgICBi
b29sIGlzT2ZmbGluZUNvbnRleHQoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2lzT2ZmbGluZUNv
bnRleHQ7IH0KKworICAgIERvY3VtZW50SWRlbnRpZmllciBob3N0aW5nRG9jdW1lbnRJZGVudGlm
aWVyKCkgY29uc3QgZmluYWw7CisKKyAgICBBdWRpb0Rlc3RpbmF0aW9uTm9kZSogZGVzdGluYXRp
b24oKSB7IHJldHVybiBtX2Rlc3RpbmF0aW9uTm9kZS5nZXQoKTsgfQorICAgIHNpemVfdCBjdXJy
ZW50U2FtcGxlRnJhbWUoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2Rlc3RpbmF0aW9uTm9kZSA/
IG1fZGVzdGluYXRpb25Ob2RlLT5jdXJyZW50U2FtcGxlRnJhbWUoKSA6IDA7IH0KKyAgICBkb3Vi
bGUgY3VycmVudFRpbWUoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2Rlc3RpbmF0aW9uTm9kZSA/
IG1fZGVzdGluYXRpb25Ob2RlLT5jdXJyZW50VGltZSgpIDogMC47IH0KKyAgICBmbG9hdCBzYW1w
bGVSYXRlKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9kZXN0aW5hdGlvbk5vZGUgPyBtX2Rlc3Rp
bmF0aW9uTm9kZS0+c2FtcGxlUmF0ZSgpIDogMC5mOyB9CisgICAgdW5zaWduZWQgbG9uZyBhY3Rp
dmVTb3VyY2VDb3VudCgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PHVuc2lnbmVkIGxvbmc+
KG1fYWN0aXZlU291cmNlQ291bnQpOyB9CisKKyAgICB2b2lkIGluY3JlbWVudEFjdGl2ZVNvdXJj
ZUNvdW50KCkgZmluYWw7CisgICAgdm9pZCBkZWNyZW1lbnRBY3RpdmVTb3VyY2VDb3VudCgpIGZp
bmFsOworCisgICAgRXhjZXB0aW9uT3I8UmVmPEF1ZGlvQnVmZmVyPj4gY3JlYXRlQnVmZmVyKHVu
c2lnbmVkIG51bWJlck9mQ2hhbm5lbHMsIHNpemVfdCBudW1iZXJPZkZyYW1lcywgZmxvYXQgc2Ft
cGxlUmF0ZSk7CisgICAgRXhjZXB0aW9uT3I8UmVmPEF1ZGlvQnVmZmVyPj4gY3JlYXRlQnVmZmVy
KEFycmF5QnVmZmVyJiwgYm9vbCBtaXhUb01vbm8pOworCisgICAgLy8gQXN5bmNocm9ub3VzIGF1
ZGlvIGZpbGUgZGF0YSBkZWNvZGluZy4KKyAgICB2b2lkIGRlY29kZUF1ZGlvRGF0YShSZWY8QXJy
YXlCdWZmZXI+JiYsIFJlZlB0cjxBdWRpb0J1ZmZlckNhbGxiYWNrPiYmLCBSZWZQdHI8QXVkaW9C
dWZmZXJDYWxsYmFjaz4mJik7CisKKyAgICBBdWRpb0xpc3RlbmVyKiBsaXN0ZW5lcigpIHsgcmV0
dXJuIG1fbGlzdGVuZXIuZ2V0KCk7IH0KKworICAgIHZvaWQgc3VzcGVuZFJlbmRlcmluZyhET01Q
cm9taXNlRGVmZXJyZWQ8dm9pZD4mJik7CisgICAgdm9pZCByZXN1bWVSZW5kZXJpbmcoRE9NUHJv
bWlzZURlZmVycmVkPHZvaWQ+JiYpOworICAgIHZvaWQgY2xvc2UoRE9NUHJvbWlzZURlZmVycmVk
PHZvaWQ+JiYpOworCisgICAgdXNpbmcgU3RhdGUgPSBBdWRpb0NvbnRleHRTdGF0ZTsKKyAgICBT
dGF0ZSBzdGF0ZSgpIGNvbnN0OworICAgIGJvb2wgaXNDbG9zZWQoKSBjb25zdCB7IHJldHVybiBt
X3N0YXRlID09IFN0YXRlOjpDbG9zZWQ7IH0KKworICAgIGJvb2wgd291bGRUYWludE9yaWdpbihj
b25zdCBVUkwmKSBjb25zdDsKKworICAgIC8vIFRoZSBBdWRpb05vZGUgY3JlYXRlIG1ldGhvZHMg
YXJlIGNhbGxlZCBvbiB0aGUgbWFpbiB0aHJlYWQgKGZyb20gSmF2YVNjcmlwdCkuCisgICAgRXhj
ZXB0aW9uT3I8UmVmPEF1ZGlvQnVmZmVyU291cmNlTm9kZT4+IGNyZWF0ZUJ1ZmZlclNvdXJjZSgp
OworI2lmIEVOQUJMRShWSURFTykKKyAgICBFeGNlcHRpb25PcjxSZWY8TWVkaWFFbGVtZW50QXVk
aW9Tb3VyY2VOb2RlPj4gY3JlYXRlTWVkaWFFbGVtZW50U291cmNlKEhUTUxNZWRpYUVsZW1lbnQm
KTsKKyNlbmRpZgorI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCisgICAgRXhjZXB0aW9uT3I8UmVm
PE1lZGlhU3RyZWFtQXVkaW9Tb3VyY2VOb2RlPj4gY3JlYXRlTWVkaWFTdHJlYW1Tb3VyY2UoTWVk
aWFTdHJlYW0mKTsKKyAgICBFeGNlcHRpb25PcjxSZWY8TWVkaWFTdHJlYW1BdWRpb0Rlc3RpbmF0
aW9uTm9kZT4+IGNyZWF0ZU1lZGlhU3RyZWFtRGVzdGluYXRpb24oKTsKKyNlbmRpZgorICAgIEV4
Y2VwdGlvbk9yPFJlZjxHYWluTm9kZT4+IGNyZWF0ZUdhaW4oKTsKKyAgICBFeGNlcHRpb25PcjxS
ZWY8QmlxdWFkRmlsdGVyTm9kZT4+IGNyZWF0ZUJpcXVhZEZpbHRlcigpOworICAgIEV4Y2VwdGlv
bk9yPFJlZjxXYXZlU2hhcGVyTm9kZT4+IGNyZWF0ZVdhdmVTaGFwZXIoKTsKKyAgICBFeGNlcHRp
b25PcjxSZWY8RGVsYXlOb2RlPj4gY3JlYXRlRGVsYXkoZG91YmxlIG1heERlbGF5VGltZSk7Cisg
ICAgRXhjZXB0aW9uT3I8UmVmPFdlYktpdEF1ZGlvUGFubmVyTm9kZT4+IGNyZWF0ZVBhbm5lcigp
OworICAgIEV4Y2VwdGlvbk9yPFJlZjxDb252b2x2ZXJOb2RlPj4gY3JlYXRlQ29udm9sdmVyKCk7
CisgICAgRXhjZXB0aW9uT3I8UmVmPER5bmFtaWNzQ29tcHJlc3Nvck5vZGU+PiBjcmVhdGVEeW5h
bWljc0NvbXByZXNzb3IoKTsKKyAgICBFeGNlcHRpb25PcjxSZWY8QW5hbHlzZXJOb2RlPj4gY3Jl
YXRlQW5hbHlzZXIoKTsKKyAgICBFeGNlcHRpb25PcjxSZWY8U2NyaXB0UHJvY2Vzc29yTm9kZT4+
IGNyZWF0ZVNjcmlwdFByb2Nlc3NvcihzaXplX3QgYnVmZmVyU2l6ZSwgc2l6ZV90IG51bWJlck9m
SW5wdXRDaGFubmVscywgc2l6ZV90IG51bWJlck9mT3V0cHV0Q2hhbm5lbHMpOworICAgIEV4Y2Vw
dGlvbk9yPFJlZjxDaGFubmVsU3BsaXR0ZXJOb2RlPj4gY3JlYXRlQ2hhbm5lbFNwbGl0dGVyKHNp
emVfdCBudW1iZXJPZk91dHB1dHMpOworICAgIEV4Y2VwdGlvbk9yPFJlZjxDaGFubmVsTWVyZ2Vy
Tm9kZT4+IGNyZWF0ZUNoYW5uZWxNZXJnZXIoc2l6ZV90IG51bWJlck9mSW5wdXRzKTsKKyAgICBF
eGNlcHRpb25PcjxSZWY8T3NjaWxsYXRvck5vZGU+PiBjcmVhdGVPc2NpbGxhdG9yKCk7CisgICAg
RXhjZXB0aW9uT3I8UmVmPFBlcmlvZGljV2F2ZT4+IGNyZWF0ZVBlcmlvZGljV2F2ZShGbG9hdDMy
QXJyYXkmIHJlYWwsIEZsb2F0MzJBcnJheSYgaW1hZ2luYXJ5KTsKKworICAgIC8vIFdoZW4gYSBz
b3VyY2Ugbm9kZSBoYXMgbm8gbW9yZSBwcm9jZXNzaW5nIHRvIGRvIChoYXMgZmluaXNoZWQgcGxh
eWluZyksIHRoZW4gaXQgdGVsbHMgdGhlIGNvbnRleHQgdG8gZGVyZWZlcmVuY2UgaXQuCisgICAg
dm9pZCBub3RpZnlOb2RlRmluaXNoZWRQcm9jZXNzaW5nKEF1ZGlvTm9kZSopIGZpbmFsOworCisg
ICAgLy8gQ2FsbGVkIGF0IHRoZSBzdGFydCBvZiBlYWNoIHJlbmRlciBxdWFudHVtLgorICAgIHZv
aWQgaGFuZGxlUHJlUmVuZGVyVGFza3MoKSBmaW5hbDsKKworICAgIC8vIENhbGxlZCBhdCB0aGUg
ZW5kIG9mIGVhY2ggcmVuZGVyIHF1YW50dW0uCisgICAgdm9pZCBoYW5kbGVQb3N0UmVuZGVyVGFz
a3MoKSBmaW5hbDsKKworICAgIC8vIENhbGxlZCBwZXJpb2RpY2FsbHkgYXQgdGhlIGVuZCBvZiBl
YWNoIHJlbmRlciBxdWFudHVtIHRvIGRlcmVmZXJlbmNlIGZpbmlzaGVkIHNvdXJjZSBub2Rlcy4K
KyAgICB2b2lkIGRlcmVmRmluaXNoZWRTb3VyY2VOb2RlcygpOworCisgICAgLy8gV2Ugc2NoZWR1
bGUgZGVsZXRpb24gb2YgYWxsIG1hcmtlZCBub2RlcyBhdCB0aGUgZW5kIG9mIGVhY2ggcmVhbHRp
bWUgcmVuZGVyIHF1YW50dW0uCisgICAgdm9pZCBtYXJrRm9yRGVsZXRpb24oQXVkaW9Ob2RlJikg
ZmluYWw7CisgICAgdm9pZCBkZWxldGVNYXJrZWROb2RlcygpIGZpbmFsOworCisgICAgLy8gQXVk
aW9Db250ZXh0IGNhbiBwdWxsIG5vZGUocykgYXQgdGhlIGVuZCBvZiBlYWNoIHJlbmRlciBxdWFu
dHVtIGV2ZW4gd2hlbiB0aGV5IGFyZSBub3QgY29ubmVjdGVkIHRvIGFueSBkb3duc3RyZWFtIG5v
ZGVzLgorICAgIC8vIFRoZXNlIHR3byBtZXRob2RzIGFyZSBjYWxsZWQgYnkgdGhlIG5vZGVzIHdo
byB3YW50IHRvIGFkZC9yZW1vdmUgdGhlbXNlbHZlcyBpbnRvL2Zyb20gdGhlIGF1dG9tYXRpYyBw
dWxsIGxpc3RzLgorICAgIHZvaWQgYWRkQXV0b21hdGljUHVsbE5vZGUoQXVkaW9Ob2RlJikgZmlu
YWw7CisgICAgdm9pZCByZW1vdmVBdXRvbWF0aWNQdWxsTm9kZShBdWRpb05vZGUmKSBmaW5hbDsK
KworICAgIC8vIENhbGxlZCByaWdodCBiZWZvcmUgaGFuZGxlUG9zdFJlbmRlclRhc2tzKCkgdG8g
aGFuZGxlIG5vZGVzIHdoaWNoIG5lZWQgdG8gYmUgcHVsbGVkIGV2ZW4gd2hlbiB0aGV5IGFyZSBu
b3QgY29ubmVjdGVkIHRvIGFueXRoaW5nLgorICAgIHZvaWQgcHJvY2Vzc0F1dG9tYXRpY1B1bGxO
b2RlcyhzaXplX3QgZnJhbWVzVG9Qcm9jZXNzKSBmaW5hbDsKKworICAgIC8vIEtlZXBzIHRyYWNr
IG9mIHRoZSBudW1iZXIgb2YgY29ubmVjdGlvbnMgbWFkZS4KKyAgICB2b2lkIGluY3JlbWVudENv
bm5lY3Rpb25Db3VudCgpIGZpbmFsCisgICAgeworICAgICAgICBBU1NFUlQoaXNNYWluVGhyZWFk
KCkpOworICAgICAgICBtX2Nvbm5lY3Rpb25Db3VudCsrOworICAgIH0KKworICAgIHVuc2lnbmVk
IGNvbm5lY3Rpb25Db3VudCgpIGNvbnN0IHsgcmV0dXJuIG1fY29ubmVjdGlvbkNvdW50OyB9CisK
KyAgICAvLworICAgIC8vIFRocmVhZCBTYWZldHkgYW5kIEdyYXBoIExvY2tpbmc6CisgICAgLy8K
KworICAgIHZvaWQgc2V0QXVkaW9UaHJlYWQoVGhyZWFkJiB0aHJlYWQpIGZpbmFsIHsgbV9hdWRp
b1RocmVhZCA9ICZ0aHJlYWQ7IH0gLy8gRklYTUU6IGNoZWNrIGVpdGhlciBub3QgaW5pdGlhbGl6
ZWQgb3IgdGhlIHNhbWUKKyAgICBUaHJlYWQqIGF1ZGlvVGhyZWFkKCkgY29uc3QgeyByZXR1cm4g
bV9hdWRpb1RocmVhZDsgfQorICAgIGJvb2wgaXNBdWRpb1RocmVhZCgpIGNvbnN0IGZpbmFsOwor
CisgICAgLy8gUmV0dXJucyB0cnVlIG9ubHkgYWZ0ZXIgdGhlIGF1ZGlvIHRocmVhZCBoYXMgYmVl
biBzdGFydGVkIGFuZCB0aGVuIHNodXRkb3duLgorICAgIGJvb2wgaXNBdWRpb1RocmVhZEZpbmlz
aGVkKCkgZmluYWwgeyByZXR1cm4gbV9pc0F1ZGlvVGhyZWFkRmluaXNoZWQ7IH0KKworICAgIC8v
IG11c3RSZWxlYXNlTG9jayBpcyBzZXQgdG8gdHJ1ZSBpZiB3ZSBhY3F1aXJlZCB0aGUgbG9jayBp
biB0aGlzIG1ldGhvZCBjYWxsIGFuZCBjYWxsZXIgbXVzdCB1bmxvY2soKSwgZmFsc2UgaWYgaXQg
d2FzIHByZXZpb3VzbHkgYWNxdWlyZWQuCisgICAgdm9pZCBsb2NrKGJvb2wmIG11c3RSZWxlYXNl
TG9jaykgZmluYWw7CisKKyAgICAvLyBSZXR1cm5zIHRydWUgaWYgd2Ugb3duIHRoZSBsb2NrLgor
ICAgIC8vIG11c3RSZWxlYXNlTG9jayBpcyBzZXQgdG8gdHJ1ZSBpZiB3ZSBhY3F1aXJlZCB0aGUg
bG9jayBpbiB0aGlzIG1ldGhvZCBjYWxsIGFuZCBjYWxsZXIgbXVzdCB1bmxvY2soKSwgZmFsc2Ug
aWYgaXQgd2FzIHByZXZpb3VzbHkgYWNxdWlyZWQuCisgICAgYm9vbCB0cnlMb2NrKGJvb2wmIG11
c3RSZWxlYXNlTG9jaykgZmluYWw7CisKKyAgICB2b2lkIHVubG9jaygpIGZpbmFsOworCisgICAg
Ly8gUmV0dXJucyB0cnVlIGlmIHRoaXMgdGhyZWFkIG93bnMgdGhlIGNvbnRleHQncyBsb2NrLgor
ICAgIGJvb2wgaXNHcmFwaE93bmVyKCkgY29uc3QgZmluYWw7CisKKyAgICAvLyBSZXR1cm5zIHRo
ZSBtYXhpbXVtIG51bWJlciBvZiBjaGFubmVscyB3ZSBjYW4gc3VwcG9ydC4KKyAgICBzdGF0aWMg
dW5zaWduZWQgbWF4TnVtYmVyT2ZDaGFubmVscygpIHsgcmV0dXJuIE1heE51bWJlck9mQ2hhbm5l
bHM7IH0KKworICAgIC8vIEluIEF1ZGlvTm9kZTo6ZGVyZWYoKSBhIHRyeUxvY2soKSBpcyB1c2Vk
IGZvciBjYWxsaW5nIGZpbmlzaERlcmVmKCksIGJ1dCBpZiBpdCBmYWlscyBrZWVwIHRyYWNrIGhl
cmUuCisgICAgdm9pZCBhZGREZWZlcnJlZEZpbmlzaERlcmVmKEF1ZGlvTm9kZSopIGZpbmFsOwor
CisgICAgLy8gSW4gdGhlIGF1ZGlvIHRocmVhZCBhdCB0aGUgc3RhcnQgb2YgZWFjaCByZW5kZXIg
Y3ljbGUsIHdlJ2xsIGNhbGwgaGFuZGxlRGVmZXJyZWRGaW5pc2hEZXJlZnMoKS4KKyAgICB2b2lk
IGhhbmRsZURlZmVycmVkRmluaXNoRGVyZWZzKCk7CisKKyAgICAvLyBPbmx5IGFjY2Vzc2VkIHdo
ZW4gdGhlIGdyYXBoIGxvY2sgaXMgaGVsZC4KKyAgICB2b2lkIG1hcmtTdW1taW5nSnVuY3Rpb25E
aXJ0eShBdWRpb1N1bW1pbmdKdW5jdGlvbiopIGZpbmFsOworICAgIHZvaWQgbWFya0F1ZGlvTm9k
ZU91dHB1dERpcnR5KEF1ZGlvTm9kZU91dHB1dCopIGZpbmFsOworCisgICAgLy8gTXVzdCBiZSBj
YWxsZWQgb24gbWFpbiB0aHJlYWQuCisgICAgdm9pZCByZW1vdmVNYXJrZWRTdW1taW5nSnVuY3Rp
b24oQXVkaW9TdW1taW5nSnVuY3Rpb24qKSBmaW5hbDsKKworICAgIC8vIEV2ZW50VGFyZ2V0Cisg
ICAgRXZlbnRUYXJnZXRJbnRlcmZhY2UgZXZlbnRUYXJnZXRJbnRlcmZhY2UoKSBjb25zdCBmaW5h
bCB7IHJldHVybiBXZWJLaXRBdWRpb0NvbnRleHRFdmVudFRhcmdldEludGVyZmFjZVR5cGU7IH0K
KworICAgIC8vIFJlY29uY2lsZSByZWYvZGVyZWYgd2hpY2ggYXJlIGRlZmluZWQgYm90aCBpbiBU
aHJlYWRTYWZlUmVmQ291bnRlZCBhbmQgRXZlbnRUYXJnZXQuCisgICAgdXNpbmcgVGhyZWFkU2Fm
ZVJlZkNvdW50ZWQ6OnJlZjsKKyAgICB1c2luZyBUaHJlYWRTYWZlUmVmQ291bnRlZDo6ZGVyZWY7
CisKKyAgICB2b2lkIHN0YXJ0UmVuZGVyaW5nKCk7CisgICAgdm9pZCBmaW5pc2hlZFJlbmRlcmlu
Zyhib29sIGRpZFJlbmRlcmluZykgZmluYWw7CisKKyAgICBzdGF0aWMgdW5zaWduZWQgc19oYXJk
d2FyZUNvbnRleHRDb3VudDsKKworICAgIC8vIFJlc3RyaWN0aW9ucyB0byBjaGFuZ2UgZGVmYXVs
dCBiZWhhdmlvcnMuCisgICAgZW51bSBCZWhhdmlvclJlc3RyaWN0aW9uRmxhZ3MgeworICAgICAg
ICBOb1Jlc3RyaWN0aW9ucyA9IDAsCisgICAgICAgIFJlcXVpcmVVc2VyR2VzdHVyZUZvckF1ZGlv
U3RhcnRSZXN0cmljdGlvbiA9IDEgPDwgMCwKKyAgICAgICAgUmVxdWlyZVBhZ2VDb25zZW50Rm9y
QXVkaW9TdGFydFJlc3RyaWN0aW9uID0gMSA8PCAxLAorICAgIH07CisgICAgdHlwZWRlZiB1bnNp
Z25lZCBCZWhhdmlvclJlc3RyaWN0aW9uczsKKworICAgIEJlaGF2aW9yUmVzdHJpY3Rpb25zIGJl
aGF2aW9yUmVzdHJpY3Rpb25zKCkgY29uc3QgeyByZXR1cm4gbV9yZXN0cmljdGlvbnM7IH0KKyAg
ICB2b2lkIGFkZEJlaGF2aW9yUmVzdHJpY3Rpb24oQmVoYXZpb3JSZXN0cmljdGlvbnMgcmVzdHJp
Y3Rpb24pIHsgbV9yZXN0cmljdGlvbnMgfD0gcmVzdHJpY3Rpb247IH0KKyAgICB2b2lkIHJlbW92
ZUJlaGF2aW9yUmVzdHJpY3Rpb24oQmVoYXZpb3JSZXN0cmljdGlvbnMgcmVzdHJpY3Rpb24pIHsg
bV9yZXN0cmljdGlvbnMgJj0gfnJlc3RyaWN0aW9uOyB9CisKKyAgICB2b2lkIGlzUGxheWluZ0F1
ZGlvRGlkQ2hhbmdlKCkgZmluYWw7CisKKyAgICB2b2lkIG5vZGVXaWxsQmVnaW5QbGF5YmFjaygp
IGZpbmFsOworCisjaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECisgICAgY29uc3QgTG9nZ2VyJiBs
b2dnZXIoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2xvZ2dlci5nZXQoKTsgfQorICAgIGNvbnN0
IHZvaWQqIGxvZ0lkZW50aWZpZXIoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2xvZ0lkZW50aWZp
ZXI7IH0KKyAgICBXVEZMb2dDaGFubmVsJiBsb2dDaGFubmVsKCkgY29uc3QgZmluYWw7CisgICAg
Y29uc3Qgdm9pZCogbmV4dEF1ZGlvTm9kZUxvZ0lkZW50aWZpZXIoKSBmaW5hbCB7IHJldHVybiBj
aGlsZExvZ0lkZW50aWZpZXIobV9sb2dJZGVudGlmaWVyLCArK21fbmV4dEF1ZGlvTm9kZUlkZW50
aWZpZXIpOyB9CisgICAgY29uc3Qgdm9pZCogbmV4dEF1ZGlvUGFyYW1ldGVyTG9nSWRlbnRpZmll
cigpIGZpbmFsIHsgcmV0dXJuIGNoaWxkTG9nSWRlbnRpZmllcihtX2xvZ0lkZW50aWZpZXIsICsr
bV9uZXh0QXVkaW9QYXJhbWV0ZXJJZGVudGlmaWVyKTsgfQorI2VuZGlmCisKKyAgICB2b2lkIHBv
c3RUYXNrKFdURjo6RnVuY3Rpb248dm9pZCgpPiYmKSBmaW5hbDsKKyAgICBib29sIGlzU3RvcHBl
ZCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1faXNTdG9wU2NoZWR1bGVkOyB9CisgICAgY29uc3Qg
U2VjdXJpdHlPcmlnaW4qIG9yaWdpbigpIGNvbnN0IGZpbmFsOworICAgIHZvaWQgYWRkQ29uc29s
ZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZSwgTWVzc2FnZUxldmVsLCBjb25zdCBTdHJpbmcmIG1lc3Nh
Z2UpIGZpbmFsOworCitwcm90ZWN0ZWQ6CisgICAgZXhwbGljaXQgV2ViS2l0QXVkaW9Db250ZXh0
KERvY3VtZW50Jik7CisgICAgV2ViS2l0QXVkaW9Db250ZXh0KERvY3VtZW50JiwgQXVkaW9CdWZm
ZXIqIHJlbmRlclRhcmdldCk7CisKKyAgICBzdGF0aWMgYm9vbCBpc1NhbXBsZVJhdGVSYW5nZUdv
b2QoZmxvYXQgc2FtcGxlUmF0ZSk7CisgICAgdm9pZCBjbGVhclBlbmRpbmdBY3Rpdml0eSgpOwor
ICAgIHZvaWQgbWFrZVBlbmRpbmdBY3Rpdml0eSgpOworCitwcml2YXRlOgorICAgIHZvaWQgY29u
c3RydWN0Q29tbW9uKCk7CisKKyAgICB2b2lkIGxhenlJbml0aWFsaXplKCk7CisgICAgdm9pZCB1
bmluaXRpYWxpemUoKTsKKworICAgIGJvb2wgd2lsbEJlZ2luUGxheWJhY2soKTsKKyAgICBib29s
IHdpbGxQYXVzZVBsYXliYWNrKCk7CisKKyAgICBib29sIHVzZXJHZXN0dXJlUmVxdWlyZWRGb3JB
dWRpb1N0YXJ0KCkgY29uc3QgeyByZXR1cm4gIWlzT2ZmbGluZUNvbnRleHQoKSAmJiBtX3Jlc3Ry
aWN0aW9ucyAmIFJlcXVpcmVVc2VyR2VzdHVyZUZvckF1ZGlvU3RhcnRSZXN0cmljdGlvbjsgfQor
ICAgIGJvb2wgcGFnZUNvbnNlbnRSZXF1aXJlZEZvckF1ZGlvU3RhcnQoKSBjb25zdCB7IHJldHVy
biAhaXNPZmZsaW5lQ29udGV4dCgpICYmIG1fcmVzdHJpY3Rpb25zICYgUmVxdWlyZVBhZ2VDb25z
ZW50Rm9yQXVkaW9TdGFydFJlc3RyaWN0aW9uOyB9CisKKyAgICB2b2lkIHNldFN0YXRlKFN0YXRl
KTsKKworICAgIHZvaWQgY2xlYXIoKTsKKworICAgIHZvaWQgc2NoZWR1bGVOb2RlRGVsZXRpb24o
KTsKKworICAgIHZvaWQgbWVkaWFDYW5TdGFydChEb2N1bWVudCYpIG92ZXJyaWRlOworCisgICAg
Ly8gRXZlbnRUYXJnZXQKKyAgICB2b2lkIGRpc3BhdGNoRXZlbnQoRXZlbnQmKSBmaW5hbDsKKwor
ICAgIC8vIE1lZGlhUHJvZHVjZXIKKyAgICBNZWRpYVByb2R1Y2VyOjpNZWRpYVN0YXRlRmxhZ3Mg
bWVkaWFTdGF0ZSgpIGNvbnN0IG92ZXJyaWRlOworICAgIHZvaWQgcGFnZU11dGVkU3RhdGVEaWRD
aGFuZ2UoKSBvdmVycmlkZTsKKworICAgIC8vIFRoZSBjb250ZXh0IGl0c2VsZiBrZWVwcyBhIHJl
ZmVyZW5jZSB0byBhbGwgc291cmNlIG5vZGVzLiAgVGhlIHNvdXJjZSBub2RlcywgdGhlbiByZWZl
cmVuY2UgYWxsIG5vZGVzIHRoZXkncmUgY29ubmVjdGVkIHRvLgorICAgIC8vIEluIHR1cm4sIHRo
ZXNlIG5vZGVzIHJlZmVyZW5jZSBhbGwgbm9kZXMgdGhleSdyZSBjb25uZWN0ZWQgdG8uICBBbGwg
bm9kZXMgYXJlIHVsdGltYXRlbHkgY29ubmVjdGVkIHRvIHRoZSBBdWRpb0Rlc3RpbmF0aW9uTm9k
ZS4KKyAgICAvLyBXaGVuIHRoZSBjb250ZXh0IGRlcmVmZXJlbmNlcyBhIHNvdXJjZSBub2RlLCBp
dCB3aWxsIGJlIGRlYWN0aXZhdGVkIGZyb20gdGhlIHJlbmRlcmluZyBncmFwaCBhbG9uZyB3aXRo
IGFsbCBvdGhlciBub2RlcyBpdCBpcworICAgIC8vIHVuaXF1ZWx5IGNvbm5lY3RlZCB0by4gIFNl
ZSB0aGUgQXVkaW9Ob2RlOjpyZWYoKSBhbmQgQXVkaW9Ob2RlOjpkZXJlZigpIG1ldGhvZHMgZm9y
IG1vcmUgZGV0YWlscy4KKyAgICB2b2lkIHJlZk5vZGUoQXVkaW9Ob2RlJik7CisgICAgdm9pZCBk
ZXJlZk5vZGUoQXVkaW9Ob2RlJik7CisKKyAgICAvLyBBY3RpdmVET01PYmplY3QgQVBJLgorICAg
IHZvaWQgc3VzcGVuZChSZWFzb25Gb3JTdXNwZW5zaW9uKSBmaW5hbDsKKyAgICB2b2lkIHJlc3Vt
ZSgpIGZpbmFsOworICAgIHZvaWQgc3RvcCgpIG92ZXJyaWRlOworICAgIGNvbnN0IGNoYXIqIGFj
dGl2ZURPTU9iamVjdE5hbWUoKSBjb25zdCBvdmVycmlkZTsKKworICAgIC8vIFdoZW4gdGhlIGNv
bnRleHQgZ29lcyBhd2F5LCB0aGVyZSBtaWdodCBzdGlsbCBiZSBzb21lIHNvdXJjZXMgd2hpY2gg
aGF2ZW4ndCBmaW5pc2hlZCBwbGF5aW5nLgorICAgIC8vIE1ha2Ugc3VyZSB0byBkZXJlZmVyZW5j
ZSB0aGVtIGhlcmUuCisgICAgdm9pZCBkZXJlZlVuZmluaXNoZWRTb3VyY2VOb2RlcygpOworCisg
ICAgLy8gUGxhdGZvcm1NZWRpYVNlc3Npb25DbGllbnQKKyAgICBQbGF0Zm9ybU1lZGlhU2Vzc2lv
bjo6TWVkaWFUeXBlIG1lZGlhVHlwZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIFBsYXRmb3Jt
TWVkaWFTZXNzaW9uOjpNZWRpYVR5cGU6OldlYkF1ZGlvOyB9CisgICAgUGxhdGZvcm1NZWRpYVNl
c3Npb246Ok1lZGlhVHlwZSBwcmVzZW50YXRpb25UeXBlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1
cm4gUGxhdGZvcm1NZWRpYVNlc3Npb246Ok1lZGlhVHlwZTo6V2ViQXVkaW87IH0KKyAgICB2b2lk
IG1heVJlc3VtZVBsYXliYWNrKGJvb2wgc2hvdWxkUmVzdW1lKSBvdmVycmlkZTsKKyAgICB2b2lk
IHN1c3BlbmRQbGF5YmFjaygpIG92ZXJyaWRlOworICAgIGJvb2wgY2FuUmVjZWl2ZVJlbW90ZUNv
bnRyb2xDb21tYW5kcygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdm9p
ZCBkaWRSZWNlaXZlUmVtb3RlQ29udHJvbENvbW1hbmQoUGxhdGZvcm1NZWRpYVNlc3Npb246OlJl
bW90ZUNvbnRyb2xDb21tYW5kVHlwZSwgY29uc3QgUGxhdGZvcm1NZWRpYVNlc3Npb246OlJlbW90
ZUNvbW1hbmRBcmd1bWVudCopIG92ZXJyaWRlIHsgfQorICAgIGJvb2wgc3VwcG9ydHNTZWVraW5n
KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KKyAgICBib29sIHNob3VsZE92ZXJy
aWRlQmFja2dyb3VuZFBsYXliYWNrUmVzdHJpY3Rpb24oUGxhdGZvcm1NZWRpYVNlc3Npb246Oklu
dGVycnVwdGlvblR5cGUpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgYm9v
bCBjYW5Qcm9kdWNlQXVkaW8oKSBjb25zdCBmaW5hbCB7IHJldHVybiB0cnVlOyB9CisgICAgYm9v
bCBpc1N1c3BlbmRlZCgpIGNvbnN0IGZpbmFsOworCisgICAgdm9pZCB2aXNpYmlsaXR5U3RhdGVD
aGFuZ2VkKCkgZmluYWw7CisKKyAgICBib29sIGlzQXVkaW9Db250ZXh0KCkgY29uc3QgZmluYWwg
eyByZXR1cm4gZmFsc2U7IH0KKyAgICBib29sIGlzV2ViS2l0QXVkaW9Db250ZXh0KCkgY29uc3Qg
ZmluYWwgeyByZXR1cm4gdHJ1ZTsgfQorCisgICAgLy8gRXZlbnRUYXJnZXQKKyAgICB2b2lkIHJl
ZkV2ZW50VGFyZ2V0KCkgb3ZlcnJpZGUgeyByZWYoKTsgfQorICAgIHZvaWQgZGVyZWZFdmVudFRh
cmdldCgpIG92ZXJyaWRlIHsgZGVyZWYoKTsgfQorCisgICAgdm9pZCBoYW5kbGVEaXJ0eUF1ZGlv
U3VtbWluZ0p1bmN0aW9ucygpOworICAgIHZvaWQgaGFuZGxlRGlydHlBdWRpb05vZGVPdXRwdXRz
KCk7CisKKyAgICB2b2lkIGFkZFJlYWN0aW9uKFN0YXRlLCBET01Qcm9taXNlRGVmZXJyZWQ8dm9p
ZD4mJik7CisgICAgdm9pZCB1cGRhdGVBdXRvbWF0aWNQdWxsTm9kZXMoKTsKKworI2lmICFSRUxF
QVNFX0xPR19ESVNBQkxFRAorICAgIGNvbnN0IGNoYXIqIGxvZ0NsYXNzTmFtZSgpIGNvbnN0IGZp
bmFsIHsgcmV0dXJuICJXZWJLaXRBdWRpb0NvbnRleHQiOyB9CisKKyAgICBSZWY8TG9nZ2VyPiBt
X2xvZ2dlcjsKKyAgICBjb25zdCB2b2lkKiBtX2xvZ0lkZW50aWZpZXI7CisgICAgdWludDY0X3Qg
bV9uZXh0QXVkaW9Ob2RlSWRlbnRpZmllciB7IDAgfTsKKyAgICB1aW50NjRfdCBtX25leHRBdWRp
b1BhcmFtZXRlcklkZW50aWZpZXIgeyAwIH07CisjZW5kaWYKKworICAgIC8vIE9ubHkgYWNjZXNz
ZWQgaW4gdGhlIGF1ZGlvIHRocmVhZC4KKyAgICBWZWN0b3I8QXVkaW9Ob2RlKj4gbV9maW5pc2hl
ZE5vZGVzOworCisgICAgLy8gV2UgZG9uJ3QgdXNlIFJlZlB0cjxBdWRpb05vZGU+IGhlcmUgYmVj
YXVzZSBBdWRpb05vZGUgaGFzIGEgbW9yZSBjb21wbGV4IHJlZigpIC8gZGVyZWYoKSBpbXBsZW1l
bnRhdGlvbgorICAgIC8vIHdpdGggYW4gb3B0aW9uYWwgYXJndW1lbnQgZm9yIHJlZlR5cGUuICBX
ZSBuZWVkIHRvIHVzZSB0aGUgc3BlY2lhbCByZWZUeXBlOiBSZWZUeXBlQ29ubmVjdGlvbgorICAg
IC8vIEVpdGhlciBhY2Nlc3NlZCB3aGVuIHRoZSBncmFwaCBsb2NrIGlzIGhlbGQsIG9yIG9uIHRo
ZSBtYWluIHRocmVhZCB3aGVuIHRoZSBhdWRpbyB0aHJlYWQgaGFzIGZpbmlzaGVkLgorICAgIFZl
Y3RvcjxBdWRpb05vZGUqPiBtX3JlZmVyZW5jZWROb2RlczsKKworICAgIC8vIEFjY3VtdWxhdGUg
bm9kZXMgd2hpY2ggbmVlZCB0byBiZSBkZWxldGVkIGhlcmUuCisgICAgLy8gVGhpcyBpcyBjb3Bp
ZWQgdG8gbV9ub2Rlc1RvRGVsZXRlIGF0IHRoZSBlbmQgb2YgYSByZW5kZXIgY3ljbGUgaW4gaGFu
ZGxlUG9zdFJlbmRlclRhc2tzKCksIHdoZXJlIHdlJ3JlIGFzc3VyZWQgb2YgYSBzdGFibGUgZ3Jh
cGgKKyAgICAvLyBzdGF0ZSB3aGljaCB3aWxsIGhhdmUgbm8gcmVmZXJlbmNlcyB0byBhbnkgb2Yg
dGhlIG5vZGVzIGluIG1fbm9kZXNUb0RlbGV0ZSBvbmNlIHRoZSBjb250ZXh0IGxvY2sgaXMgcmVs
ZWFzZWQKKyAgICAvLyAod2hlbiBoYW5kbGVQb3N0UmVuZGVyVGFza3MoKSBoYXMgY29tcGxldGVk
KS4KKyAgICBWZWN0b3I8QXVkaW9Ob2RlKj4gbV9ub2Rlc01hcmtlZEZvckRlbGV0aW9uOworCisg
ICAgLy8gVGhleSB3aWxsIGJlIHNjaGVkdWxlZCBmb3IgZGVsZXRpb24gKG9uIHRoZSBtYWluIHRo
cmVhZCkgYXQgdGhlIGVuZCBvZiBhIHJlbmRlciBjeWNsZSAoaW4gcmVhbHRpbWUgdGhyZWFkKS4K
KyAgICBWZWN0b3I8QXVkaW9Ob2RlKj4gbV9ub2Rlc1RvRGVsZXRlOworCisgICAgYm9vbCBtX2lz
RGVsZXRpb25TY2hlZHVsZWQgeyBmYWxzZSB9OworICAgIGJvb2wgbV9pc1N0b3BTY2hlZHVsZWQg
eyBmYWxzZSB9OworICAgIGJvb2wgbV9pc0luaXRpYWxpemVkIHsgZmFsc2UgfTsKKyAgICBib29s
IG1faXNBdWRpb1RocmVhZEZpbmlzaGVkIHsgZmFsc2UgfTsKKyAgICBib29sIG1fYXV0b21hdGlj
UHVsbE5vZGVzTmVlZFVwZGF0aW5nIHsgZmFsc2UgfTsKKyAgICBib29sIG1faXNPZmZsaW5lQ29u
dGV4dCB7IGZhbHNlIH07CisKKyAgICAvLyBPbmx5IGFjY2Vzc2VkIHdoZW4gdGhlIGdyYXBoIGxv
Y2sgaXMgaGVsZC4KKyAgICBIYXNoU2V0PEF1ZGlvU3VtbWluZ0p1bmN0aW9uKj4gbV9kaXJ0eVN1
bW1pbmdKdW5jdGlvbnM7CisgICAgSGFzaFNldDxBdWRpb05vZGVPdXRwdXQqPiBtX2RpcnR5QXVk
aW9Ob2RlT3V0cHV0czsKKworICAgIC8vIEZvciB0aGUgc2FrZSBvZiB0aHJlYWQgc2FmZXR5LCB3
ZSBtYWludGFpbiBhIHNlcGVyYXRlIFZlY3RvciBvZiBhdXRvbWF0aWMgcHVsbCBub2RlcyBmb3Ig
cmVuZGVyaW5nIGluIG1fcmVuZGVyaW5nQXV0b21hdGljUHVsbE5vZGVzLgorICAgIC8vIEl0IHdp
bGwgYmUgY29waWVkIGZyb20gbV9hdXRvbWF0aWNQdWxsTm9kZXMgYnkgdXBkYXRlQXV0b21hdGlj
UHVsbE5vZGVzKCkgYXQgdGhlIHZlcnkgc3RhcnQgb3IgZW5kIG9mIHRoZSByZW5kZXJpbmcgcXVh
bnR1bS4KKyAgICBIYXNoU2V0PEF1ZGlvTm9kZSo+IG1fYXV0b21hdGljUHVsbE5vZGVzOworICAg
IFZlY3RvcjxBdWRpb05vZGUqPiBtX3JlbmRlcmluZ0F1dG9tYXRpY1B1bGxOb2RlczsKKyAgICAv
LyBPbmx5IGFjY2Vzc2VkIGluIHRoZSBhdWRpbyB0aHJlYWQuCisgICAgVmVjdG9yPEF1ZGlvTm9k
ZSo+IG1fZGVmZXJyZWRGaW5pc2hEZXJlZkxpc3Q7CisgICAgVmVjdG9yPFZlY3RvcjxET01Qcm9t
aXNlRGVmZXJyZWQ8dm9pZD4+PiBtX3N0YXRlUmVhY3Rpb25zOworCisgICAgc3RkOjp1bmlxdWVf
cHRyPFBsYXRmb3JtTWVkaWFTZXNzaW9uPiBtX21lZGlhU2Vzc2lvbjsKKyAgICBVbmlxdWVSZWY8
TWFpblRocmVhZEdlbmVyaWNFdmVudFF1ZXVlPiBtX2V2ZW50UXVldWU7CisKKyAgICBSZWZQdHI8
QXVkaW9CdWZmZXI+IG1fcmVuZGVyVGFyZ2V0OworICAgIFJlZlB0cjxBdWRpb0Rlc3RpbmF0aW9u
Tm9kZT4gbV9kZXN0aW5hdGlvbk5vZGU7CisgICAgUmVmUHRyPEF1ZGlvTGlzdGVuZXI+IG1fbGlz
dGVuZXI7CisKKyAgICB1bnNpZ25lZCBtX2Nvbm5lY3Rpb25Db3VudCB7IDAgfTsKKworICAgIC8v
IEdyYXBoIGxvY2tpbmcuCisgICAgTG9jayBtX2NvbnRleHRHcmFwaE11dGV4OworICAgIC8vIEZJ
WE1FOiBVc2luZyB2b2xhdGlsZSBzZWVtcyBpbmNvcnJlY3QuCisgICAgLy8gaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4MDMzMgorICAgIFRocmVhZCogdm9sYXRpbGUg
bV9hdWRpb1RocmVhZCB7IG51bGxwdHIgfTsKKyAgICBUaHJlYWQqIHZvbGF0aWxlIG1fZ3JhcGhP
d25lclRocmVhZCB7IG51bGxwdHIgfTsgLy8gaWYgdGhlIGxvY2sgaXMgaGVsZCB0aGVuIHRoaXMg
aXMgdGhlIHRocmVhZCB3aGljaCBvd25zIGl0LCBvdGhlcndpc2UgPT0gbnVsbHB0ci4KKworICAg
IHN0ZDo6dW5pcXVlX3B0cjxBc3luY0F1ZGlvRGVjb2Rlcj4gbV9hdWRpb0RlY29kZXI7CisKKyAg
ICAvLyBUaGlzIGlzIGNvbnNpZGVyaW5nIDMyIGlzIGxhcmdlIGVub3VnaCBmb3IgbXVsdGlwbGUg
Y2hhbm5lbHMgYXVkaW8uCisgICAgLy8gSXQgaXMgc29tZXdoYXQgYXJiaXRyYXJ5IGFuZCBjb3Vs
ZCBiZSBpbmNyZWFzZWQgaWYgbmVjZXNzYXJ5LgorICAgIGVudW0geyBNYXhOdW1iZXJPZkNoYW5u
ZWxzID0gMzIgfTsKKworICAgIC8vIE51bWJlciBvZiBBdWRpb0J1ZmZlclNvdXJjZU5vZGVzIHRo
YXQgYXJlIGFjdGl2ZSAocGxheWluZykuCisgICAgc3RkOjphdG9taWM8aW50PiBtX2FjdGl2ZVNv
dXJjZUNvdW50IHsgMCB9OworCisgICAgQmVoYXZpb3JSZXN0cmljdGlvbnMgbV9yZXN0cmljdGlv
bnMgeyBOb1Jlc3RyaWN0aW9ucyB9OworCisgICAgU3RhdGUgbV9zdGF0ZSB7IFN0YXRlOjpTdXNw
ZW5kZWQgfTsKKyAgICBSZWZQdHI8UGVuZGluZ0FjdGl2aXR5PFdlYktpdEF1ZGlvQ29udGV4dD4+
IG1fcGVuZGluZ0FjdGl2aXR5OworfTsKKworaW5saW5lIEF1ZGlvQ29udGV4dFN0YXRlIFdlYktp
dEF1ZGlvQ29udGV4dDo6c3RhdGUoKSBjb25zdAoreworICAgIHJldHVybiBtX3N0YXRlOworfQor
Cit9IC8vIFdlYkNvcmUKKworU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19CRUdJTihXZWJDb3JlOjpX
ZWJLaXRBdWRpb0NvbnRleHQpCisgICAgc3RhdGljIGJvb2wgaXNUeXBlKGNvbnN0IFdlYkNvcmU6
OkF1ZGlvQ29udGV4dEJhc2UmIGNvbnRleHQpIHsgcmV0dXJuIGNvbnRleHQuaXNXZWJLaXRBdWRp
b0NvbnRleHQoKTsgfQorU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19FTkQoKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9XZWJLaXRBdWRpb0NvbnRleHQuaWRsIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9XZWJLaXRBdWRpb0NvbnRleHQuaWRsCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi5lY2M3MWQwNzc4ZAotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vV2ViS2l0QXVkaW9D
b250ZXh0LmlkbApAQCAtMCwwICsxLDk0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwLCBH
b29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDExIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICog
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OCisgKiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAor
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKKyAqIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKK1sKKyAgICBBY3RpdmVET01P
YmplY3QsCisgICAgQ29uZGl0aW9uYWw9V0VCX0FVRElPLAorICAgIENvbnN0cnVjdG9yLAorICAg
IENvbnN0cnVjdG9yQ2FsbFdpdGg9RG9jdW1lbnQsCisgICAgQ29uc3RydWN0b3JNYXlUaHJvd0V4
Y2VwdGlvbiwKKyAgICBFbmFibGVkQnlTZXR0aW5nPVdlYkF1ZGlvLAorICAgIEV4cG9ydE1hY3Jv
PVdFQkNPUkVfRVhQT1JULAorICAgIEludGVyZmFjZU5hbWU9d2Via2l0QXVkaW9Db250ZXh0LAor
XSBpbnRlcmZhY2UgV2ViS2l0QXVkaW9Db250ZXh0IDogRXZlbnRUYXJnZXQgeworICAgIC8vIEFs
bCByZW5kZXJlZCBhdWRpbyB1bHRpbWF0ZWx5IGNvbm5lY3RzIHRvIGRlc3RpbmF0aW9uLCB3aGlj
aCByZXByZXNlbnRzIHRoZSBhdWRpbyBoYXJkd2FyZS4KKyAgICByZWFkb25seSBhdHRyaWJ1dGUg
QXVkaW9EZXN0aW5hdGlvbk5vZGUgZGVzdGluYXRpb247CisKKyAgICAvLyBBbGwgc2NoZWR1bGVk
IHRpbWVzIGFyZSByZWxhdGl2ZSB0byB0aGlzIHRpbWUgaW4gc2Vjb25kcy4KKyAgICByZWFkb25s
eSBhdHRyaWJ1dGUgdW5yZXN0cmljdGVkIGRvdWJsZSBjdXJyZW50VGltZTsKKworICAgIC8vIEFs
bCBBdWRpb05vZGVzIGluIHRoZSBjb250ZXh0IHJ1biBhdCB0aGlzIHNhbXBsZS1yYXRlIChzYW1w
bGUtZnJhbWVzIHBlciBzZWNvbmQpLgorICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSB1bnJlc3RyaWN0
ZWQgZmxvYXQgc2FtcGxlUmF0ZTsKKworICAgIC8vIEFsbCBwYW5uaW5nIGlzIHJlbGF0aXZlIHRv
IHRoaXMgbGlzdGVuZXIuCisgICAgcmVhZG9ubHkgYXR0cmlidXRlIEF1ZGlvTGlzdGVuZXIgbGlz
dGVuZXI7CisKKyAgICBbSW1wbGVtZW50ZWRBcz1zdXNwZW5kUmVuZGVyaW5nXSBQcm9taXNlPHZv
aWQ+IHN1c3BlbmQoKTsKKyAgICBbSW1wbGVtZW50ZWRBcz1yZXN1bWVSZW5kZXJpbmddIFByb21p
c2U8dm9pZD4gcmVzdW1lKCk7CisgICAgUHJvbWlzZTx2b2lkPiBjbG9zZSgpOworCisgICAgcmVh
ZG9ubHkgYXR0cmlidXRlIEF1ZGlvQ29udGV4dFN0YXRlIHN0YXRlOworICAgIGF0dHJpYnV0ZSBF
dmVudEhhbmRsZXIgb25zdGF0ZWNoYW5nZTsKKworICAgIC8vIE51bWJlciBvZiBBdWRpb0J1ZmZl
clNvdXJjZU5vZGVzIHRoYXQgYXJlIGN1cnJlbnRseSBwbGF5aW5nLgorICAgIHJlYWRvbmx5IGF0
dHJpYnV0ZSB1bnNpZ25lZCBsb25nIGFjdGl2ZVNvdXJjZUNvdW50OworCisgICAgW01heVRocm93
RXhjZXB0aW9uXSBBdWRpb0J1ZmZlciBjcmVhdGVCdWZmZXIodW5zaWduZWQgbG9uZyBudW1iZXJP
ZkNoYW5uZWxzLCB1bnNpZ25lZCBsb25nIG51bWJlck9mRnJhbWVzLCB1bnJlc3RyaWN0ZWQgZmxv
YXQgc2FtcGxlUmF0ZSk7CisgICAgW01heVRocm93RXhjZXB0aW9uXSBBdWRpb0J1ZmZlciBjcmVh
dGVCdWZmZXIoQXJyYXlCdWZmZXIgYnVmZmVyLCBib29sZWFuIG1peFRvTW9ubyk7CisKKyAgICAv
LyBBc3luY2hyb25vdXMgYXVkaW8gZmlsZSBkYXRhIGRlY29kaW5nLgorICAgIC8vIEZJWE1FOiBz
dWNjZXNzQ2FsbGJhY2sgc2hvdWxkIGJlIG9wdGlvbmFsIGFuZCB0aGUgY2FsbGJhY2tzIHNob3Vs
ZCBub3QgYmUgbnVsbGFibGUuIFRoaXMgc2hvdWxkIGFsc28gcmV0dXJuIGEgUHJvbWlzZS4KKyAg
ICB2b2lkIGRlY29kZUF1ZGlvRGF0YShBcnJheUJ1ZmZlciBhdWRpb0RhdGEsIEF1ZGlvQnVmZmVy
Q2FsbGJhY2s/IHN1Y2Nlc3NDYWxsYmFjaywgb3B0aW9uYWwgQXVkaW9CdWZmZXJDYWxsYmFjaz8g
ZXJyb3JDYWxsYmFjayk7CisKKyAgICAvLyBTb3VyY2VzCisgICAgW01heVRocm93RXhjZXB0aW9u
XSBBdWRpb0J1ZmZlclNvdXJjZU5vZGUgY3JlYXRlQnVmZmVyU291cmNlKCk7CisKKyAgICBbQ29u
ZGl0aW9uYWw9VklERU8sIE1heVRocm93RXhjZXB0aW9uXSBNZWRpYUVsZW1lbnRBdWRpb1NvdXJj
ZU5vZGUgY3JlYXRlTWVkaWFFbGVtZW50U291cmNlKEhUTUxNZWRpYUVsZW1lbnQgbWVkaWFFbGVt
ZW50KTsKKworICAgIFtDb25kaXRpb25hbD1NRURJQV9TVFJFQU0sIE1heVRocm93RXhjZXB0aW9u
XSBNZWRpYVN0cmVhbUF1ZGlvU291cmNlTm9kZSBjcmVhdGVNZWRpYVN0cmVhbVNvdXJjZShNZWRp
YVN0cmVhbSBtZWRpYVN0cmVhbSk7CisgICAgW0NvbmRpdGlvbmFsPU1FRElBX1NUUkVBTSwgTWF5
VGhyb3dFeGNlcHRpb25dIE1lZGlhU3RyZWFtQXVkaW9EZXN0aW5hdGlvbk5vZGUgY3JlYXRlTWVk
aWFTdHJlYW1EZXN0aW5hdGlvbigpOworCisgICAgLy8gUHJvY2Vzc2luZyBub2RlcworICAgIFtN
YXlUaHJvd0V4Y2VwdGlvbl0gR2Fpbk5vZGUgY3JlYXRlR2FpbigpOworICAgIFtNYXlUaHJvd0V4
Y2VwdGlvbl0gRGVsYXlOb2RlIGNyZWF0ZURlbGF5KG9wdGlvbmFsIHVucmVzdHJpY3RlZCBkb3Vi
bGUgbWF4RGVsYXlUaW1lID0gMSk7CisgICAgW01heVRocm93RXhjZXB0aW9uXSBCaXF1YWRGaWx0
ZXJOb2RlIGNyZWF0ZUJpcXVhZEZpbHRlcigpOworICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gV2F2
ZVNoYXBlck5vZGUgY3JlYXRlV2F2ZVNoYXBlcigpOworICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0g
V2ViS2l0QXVkaW9QYW5uZXJOb2RlIGNyZWF0ZVBhbm5lcigpOworICAgIFtNYXlUaHJvd0V4Y2Vw
dGlvbl0gQ29udm9sdmVyTm9kZSBjcmVhdGVDb252b2x2ZXIoKTsKKyAgICBbTWF5VGhyb3dFeGNl
cHRpb25dIER5bmFtaWNzQ29tcHJlc3Nvck5vZGUgY3JlYXRlRHluYW1pY3NDb21wcmVzc29yKCk7
CisgICAgW01heVRocm93RXhjZXB0aW9uXSBBbmFseXNlck5vZGUgY3JlYXRlQW5hbHlzZXIoKTsK
KyAgICBbTWF5VGhyb3dFeGNlcHRpb25dIFNjcmlwdFByb2Nlc3Nvck5vZGUgY3JlYXRlU2NyaXB0
UHJvY2Vzc29yKG9wdGlvbmFsIHVuc2lnbmVkIGxvbmcgYnVmZmVyU2l6ZSA9IDAsIG9wdGlvbmFs
IHVuc2lnbmVkIGxvbmcgbnVtYmVyT2ZJbnB1dENoYW5uZWxzID0gMiwgb3B0aW9uYWwgdW5zaWdu
ZWQgbG9uZyBudW1iZXJPZk91dHB1dENoYW5uZWxzID0gMik7CisgICAgW01heVRocm93RXhjZXB0
aW9uXSBPc2NpbGxhdG9yTm9kZSBjcmVhdGVPc2NpbGxhdG9yKCk7CisgICAgW01heVRocm93RXhj
ZXB0aW9uXSBQZXJpb2RpY1dhdmUgY3JlYXRlUGVyaW9kaWNXYXZlKEZsb2F0MzJBcnJheSByZWFs
LCBGbG9hdDMyQXJyYXkgaW1hZyk7CisKKyAgICAvLyBDaGFubmVsIHNwbGl0dGluZyBhbmQgbWVy
Z2luZworICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gQ2hhbm5lbFNwbGl0dGVyTm9kZSBjcmVhdGVD
aGFubmVsU3BsaXR0ZXIob3B0aW9uYWwgdW5zaWduZWQgbG9uZyBudW1iZXJPZk91dHB1dHMgPSA2
KTsKKyAgICBbTWF5VGhyb3dFeGNlcHRpb25dIENoYW5uZWxNZXJnZXJOb2RlIGNyZWF0ZUNoYW5u
ZWxNZXJnZXIob3B0aW9uYWwgdW5zaWduZWQgbG9uZyBudW1iZXJPZklucHV0cyA9IDYpOworCisg
ICAgLy8gT2ZmbGluZSByZW5kZXJpbmcKKyAgICAvLyB2b2lkIHByZXBhcmVPZmZsaW5lQnVmZmVy
UmVuZGVyaW5nKHVuc2lnbmVkIGxvbmcgbnVtYmVyT2ZDaGFubmVscywgdW5zaWduZWQgbG9uZyBu
dW1iZXJPZkZyYW1lcywgdW5yZXN0cmljdGVkIGZsb2F0IHNhbXBsZVJhdGUpOworICAgIGF0dHJp
YnV0ZSBFdmVudEhhbmRsZXIgb25jb21wbGV0ZTsKKyAgICB2b2lkIHN0YXJ0UmVuZGVyaW5nKCk7
Cit9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9XZWJLaXRB
dWRpb1Bhbm5lck5vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9XZWJL
aXRBdWRpb1Bhbm5lck5vZGUuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwLi4yNThmNDVlN2NmZAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViYXVkaW8vV2ViS2l0QXVkaW9QYW5uZXJOb2RlLmNwcApAQCAtMCwwICsxLDM2MyBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCwgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuICBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUg
SU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OCisgKiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKKyAq
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJXZWJLaXRBdWRpb1Bh
bm5lck5vZGUuaCIKKworI2lmIEVOQUJMRShXRUJfQVVESU8pCisKKyNpbmNsdWRlICJBdWRpb0J1
ZmZlclNvdXJjZU5vZGUuaCIKKyNpbmNsdWRlICJBdWRpb0J1cy5oIgorI2luY2x1ZGUgIkF1ZGlv
Q29udGV4dC5oIgorI2luY2x1ZGUgIkF1ZGlvTm9kZUlucHV0LmgiCisjaW5jbHVkZSAiQXVkaW9O
b2RlT3V0cHV0LmgiCisjaW5jbHVkZSAiSFJURkRhdGFiYXNlTG9hZGVyLmgiCisjaW5jbHVkZSAi
SFJURlBhbm5lci5oIgorI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKKyNpbmNs
dWRlIDx3dGYvSXNvTWFsbG9jSW5saW5lcy5oPgorI2luY2x1ZGUgPHd0Zi9NYXRoRXh0cmFzLmg+
CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworV1RGX01BS0VfSVNPX0FMTE9DQVRFRF9JTVBMKFdl
YktpdEF1ZGlvUGFubmVyTm9kZSk7CisKK3N0YXRpYyB2b2lkIGZpeE5BTnMoZG91YmxlICZ4KQor
eworICAgIGlmIChzdGQ6OmlzbmFuKHgpIHx8IHN0ZDo6aXNpbmYoeCkpCisgICAgICAgIHggPSAw
LjA7Cit9CisKK1dlYktpdEF1ZGlvUGFubmVyTm9kZTo6V2ViS2l0QXVkaW9QYW5uZXJOb2RlKFdl
YktpdEF1ZGlvQ29udGV4dCYgY29udGV4dCwgZmxvYXQgc2FtcGxlUmF0ZSkKKyAgICA6IFBhbm5l
ck5vZGVCYXNlKGNvbnRleHQsIHNhbXBsZVJhdGUpCisgICAgLCBtX3Bhbm5pbmdNb2RlbChQYW5u
aW5nTW9kZWxUeXBlOjpIUlRGKQorICAgICwgbV9sYXN0R2FpbigtMS4wKQorICAgICwgbV9jb25u
ZWN0aW9uQ291bnQoMCkKK3sKKyAgICBzZXROb2RlVHlwZShOb2RlVHlwZVBhbm5lcik7CisKKyAg
ICAvLyBMb2FkIHRoZSBIUlRGIGRhdGFiYXNlIGFzeW5jaHJvbm91c2x5IHNvIHdlIGRvbid0IGJs
b2NrIHRoZSBKYXZhc2NyaXB0IHRocmVhZCB3aGlsZSBjcmVhdGluZyB0aGUgSFJURiBkYXRhYmFz
ZS4KKyAgICBtX2hydGZEYXRhYmFzZUxvYWRlciA9IEhSVEZEYXRhYmFzZUxvYWRlcjo6Y3JlYXRl
QW5kTG9hZEFzeW5jaHJvbm91c2x5SWZOZWNlc3NhcnkoY29udGV4dC5zYW1wbGVSYXRlKCkpOwor
CisgICAgYWRkSW5wdXQobWFrZVVuaXF1ZTxBdWRpb05vZGVJbnB1dD4odGhpcykpOworICAgIGFk
ZE91dHB1dChtYWtlVW5pcXVlPEF1ZGlvTm9kZU91dHB1dD4odGhpcywgMikpOworCisgICAgLy8g
Tm9kZS1zcGVjaWZpYyBkZWZhdWx0IG1peGluZyBydWxlcy4KKyAgICBtX2NoYW5uZWxDb3VudCA9
IDI7CisgICAgbV9jaGFubmVsQ291bnRNb2RlID0gQ2xhbXBlZE1heDsKKyAgICBtX2NoYW5uZWxJ
bnRlcnByZXRhdGlvbiA9IEF1ZGlvQnVzOjpTcGVha2VyczsKKworICAgIG1fZGlzdGFuY2VHYWlu
ID0gQXVkaW9QYXJhbTo6Y3JlYXRlKGNvbnRleHQsICJkaXN0YW5jZUdhaW4iLCAxLjAsIDAuMCwg
MS4wKTsKKyAgICBtX2NvbmVHYWluID0gQXVkaW9QYXJhbTo6Y3JlYXRlKGNvbnRleHQsICJjb25l
R2FpbiIsIDEuMCwgMC4wLCAxLjApOworCisgICAgbV9wb3NpdGlvbiA9IEZsb2F0UG9pbnQzRCgw
LCAwLCAwKTsKKyAgICBtX29yaWVudGF0aW9uID0gRmxvYXRQb2ludDNEKDEsIDAsIDApOworICAg
IG1fdmVsb2NpdHkgPSBGbG9hdFBvaW50M0QoMCwgMCwgMCk7CisKKyAgICBpbml0aWFsaXplKCk7
Cit9CisKK1dlYktpdEF1ZGlvUGFubmVyTm9kZTo6fldlYktpdEF1ZGlvUGFubmVyTm9kZSgpCit7
CisgICAgdW5pbml0aWFsaXplKCk7Cit9CisKK3ZvaWQgV2ViS2l0QXVkaW9QYW5uZXJOb2RlOjpw
dWxsSW5wdXRzKHNpemVfdCBmcmFtZXNUb1Byb2Nlc3MpCit7CisgICAgLy8gV2Ugb3ZlcnJpZGUg
cHVsbElucHV0cygpLCBzbyB3ZSBjYW4gZGV0ZWN0IG5ldyBBdWRpb1NvdXJjZU5vZGVzIHdoaWNo
IGhhdmUgY29ubmVjdGVkIHRvIHVzIHdoZW4gbmV3IGNvbm5lY3Rpb25zIGFyZSBtYWRlLgorICAg
IC8vIFRoZXNlIEF1ZGlvU291cmNlTm9kZXMgbmVlZCB0byBiZSBtYWRlIGF3YXJlIG9mIG91ciBl
eGlzdGVuY2UgaW4gb3JkZXIgdG8gaGFuZGxlIGRvcHBsZXIgc2hpZnQgcGl0Y2ggY2hhbmdlcy4K
KyAgICBpZiAobV9jb25uZWN0aW9uQ291bnQgIT0gY29udGV4dCgpLmNvbm5lY3Rpb25Db3VudCgp
KSB7CisgICAgICAgIG1fY29ubmVjdGlvbkNvdW50ID0gY29udGV4dCgpLmNvbm5lY3Rpb25Db3Vu
dCgpOworCisgICAgICAgIC8vIFJlY3Vyc2l2ZWx5IGdvIHRocm91Z2ggYWxsIG5vZGVzIGNvbm5l
Y3RlZCB0byB1cy4KKyAgICAgICAgSGFzaFNldDxBdWRpb05vZGUqPiB2aXNpdGVkTm9kZXM7Cisg
ICAgICAgIG5vdGlmeUF1ZGlvU291cmNlc0Nvbm5lY3RlZFRvTm9kZSh0aGlzLCB2aXNpdGVkTm9k
ZXMpOworICAgIH0KKworICAgIEF1ZGlvTm9kZTo6cHVsbElucHV0cyhmcmFtZXNUb1Byb2Nlc3Mp
OworfQorCit2b2lkIFdlYktpdEF1ZGlvUGFubmVyTm9kZTo6cHJvY2VzcyhzaXplX3QgZnJhbWVz
VG9Qcm9jZXNzKQoreworICAgIEF1ZGlvQnVzKiBkZXN0aW5hdGlvbiA9IG91dHB1dCgwKS0+YnVz
KCk7CisKKyAgICBpZiAoIWlzSW5pdGlhbGl6ZWQoKSB8fCAhaW5wdXQoMCktPmlzQ29ubmVjdGVk
KCkgfHwgIW1fcGFubmVyLmdldCgpKSB7CisgICAgICAgIGRlc3RpbmF0aW9uLT56ZXJvKCk7Cisg
ICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBBdWRpb0J1cyogc291cmNlID0gaW5wdXQoMCkt
PmJ1cygpOworICAgIGlmICghc291cmNlKSB7CisgICAgICAgIGRlc3RpbmF0aW9uLT56ZXJvKCk7
CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICAvLyBIUlRGRGF0YWJhc2Ugc2hvdWxkIGJl
IGxvYWRlZCBiZWZvcmUgcHJvY2VlZGluZyBmb3Igb2ZmbGluZSBhdWRpbyBjb250ZXh0IHdoZW4g
cGFubmluZ01vZGVsKCkgaXMgIkhSVEYiLgorICAgIGlmIChwYW5uaW5nTW9kZWwoKSA9PSBQYW5u
aW5nTW9kZWxUeXBlOjpIUlRGICYmICFtX2hydGZEYXRhYmFzZUxvYWRlci0+aXNMb2FkZWQoKSkg
eworICAgICAgICBpZiAoY29udGV4dCgpLmlzT2ZmbGluZUNvbnRleHQoKSkKKyAgICAgICAgICAg
IG1faHJ0ZkRhdGFiYXNlTG9hZGVyLT53YWl0Rm9yTG9hZGVyVGhyZWFkQ29tcGxldGlvbigpOwor
ICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIGRlc3RpbmF0aW9uLT56ZXJvKCk7CisgICAgICAg
ICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvLyBUaGUgYXVkaW8gdGhyZWFk
IGNhbid0IGJsb2NrIG9uIHRoaXMgbG9jaywgc28gd2UgdXNlIHN0ZDo6dHJ5X3RvX2xvY2sgaW5z
dGVhZC4KKyAgICBzdGQ6OnVuaXF1ZV9sb2NrPExvY2s+IGxvY2sobV9wYW5uZXJNdXRleCwgc3Rk
Ojp0cnlfdG9fbG9jayk7CisgICAgaWYgKCFsb2NrLm93bnNfbG9jaygpKSB7CisgICAgICAgIC8v
IFRvbyBiYWQgLSBUaGUgdHJ5X2xvY2soKSBmYWlsZWQuIFdlIG11c3QgYmUgaW4gdGhlIG1pZGRs
ZSBvZiBjaGFuZ2luZyB0aGUgcGFubmVyLgorICAgICAgICBkZXN0aW5hdGlvbi0+emVybygpOwor
ICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgLy8gQXBwbHkgdGhlIHBhbm5pbmcgZWZmZWN0
LgorICAgIGRvdWJsZSBhemltdXRoOworICAgIGRvdWJsZSBlbGV2YXRpb247CisgICAgZ2V0QXpp
bXV0aEVsZXZhdGlvbigmYXppbXV0aCwgJmVsZXZhdGlvbik7CisgICAgbV9wYW5uZXItPnBhbihh
emltdXRoLCBlbGV2YXRpb24sIHNvdXJjZSwgZGVzdGluYXRpb24sIGZyYW1lc1RvUHJvY2Vzcyk7
CisKKyAgICAvLyBHZXQgdGhlIGRpc3RhbmNlIGFuZCBjb25lIGdhaW4uCisgICAgZG91YmxlIHRv
dGFsR2FpbiA9IGRpc3RhbmNlQ29uZUdhaW4oKTsKKworICAgIC8vIFNuYXAgdG8gZGVzaXJlZCBn
YWluIGF0IHRoZSBiZWdpbm5pbmcuCisgICAgaWYgKG1fbGFzdEdhaW4gPT0gLTEuMCkKKyAgICAg
ICAgbV9sYXN0R2FpbiA9IHRvdGFsR2FpbjsKKworICAgIC8vIEFwcGx5IGdhaW4gaW4tcGxhY2Ug
d2l0aCBkZS16aXBwZXJpbmcuCisgICAgZGVzdGluYXRpb24tPmNvcHlXaXRoR2FpbkZyb20oKmRl
c3RpbmF0aW9uLCAmbV9sYXN0R2FpbiwgdG90YWxHYWluKTsKK30KKwordm9pZCBXZWJLaXRBdWRp
b1Bhbm5lck5vZGU6OnJlc2V0KCkKK3sKKyAgICBtX2xhc3RHYWluID0gLTEuMDsgLy8gZm9yY2Ug
dG8gc25hcCB0byBpbml0aWFsIGdhaW4KKyAgICBpZiAobV9wYW5uZXIuZ2V0KCkpCisgICAgICAg
IG1fcGFubmVyLT5yZXNldCgpOworfQorCit2b2lkIFdlYktpdEF1ZGlvUGFubmVyTm9kZTo6aW5p
dGlhbGl6ZSgpCit7CisgICAgaWYgKGlzSW5pdGlhbGl6ZWQoKSkKKyAgICAgICAgcmV0dXJuOwor
CisgICAgbV9wYW5uZXIgPSBQYW5uZXI6OmNyZWF0ZShtX3Bhbm5pbmdNb2RlbCwgc2FtcGxlUmF0
ZSgpLCBtX2hydGZEYXRhYmFzZUxvYWRlci5nZXQoKSk7CisKKyAgICBBdWRpb05vZGU6OmluaXRp
YWxpemUoKTsKK30KKwordm9pZCBXZWJLaXRBdWRpb1Bhbm5lck5vZGU6OnVuaW5pdGlhbGl6ZSgp
Cit7CisgICAgaWYgKCFpc0luaXRpYWxpemVkKCkpCisgICAgICAgIHJldHVybjsKKworICAgIG1f
cGFubmVyID0gbnVsbHB0cjsKKyAgICBBdWRpb05vZGU6OnVuaW5pdGlhbGl6ZSgpOworfQorCitB
dWRpb0xpc3RlbmVyKiBXZWJLaXRBdWRpb1Bhbm5lck5vZGU6Omxpc3RlbmVyKCkKK3sKKyAgICBy
ZXR1cm4gY29udGV4dCgpLmxpc3RlbmVyKCk7Cit9CisKK3ZvaWQgV2ViS2l0QXVkaW9QYW5uZXJO
b2RlOjpzZXRQYW5uaW5nTW9kZWwoUGFubmluZ01vZGVsVHlwZSBtb2RlbCkKK3sKKyAgICBpZiAo
IW1fcGFubmVyLmdldCgpIHx8IG1vZGVsICE9IG1fcGFubmluZ01vZGVsKSB7CisgICAgICAgIC8v
IFRoaXMgc3luY2hyb25pemVzIHdpdGggcHJvY2VzcygpLgorICAgICAgICBhdXRvIGxvY2tlciA9
IGhvbGRMb2NrKG1fcGFubmVyTXV0ZXgpOworCisgICAgICAgIG1fcGFubmVyID0gUGFubmVyOjpj
cmVhdGUobW9kZWwsIHNhbXBsZVJhdGUoKSwgbV9ocnRmRGF0YWJhc2VMb2FkZXIuZ2V0KCkpOwor
ICAgICAgICBtX3Bhbm5pbmdNb2RlbCA9IG1vZGVsOworICAgIH0KK30KKworRGlzdGFuY2VNb2Rl
bFR5cGUgV2ViS2l0QXVkaW9QYW5uZXJOb2RlOjpkaXN0YW5jZU1vZGVsKCkgY29uc3QKK3sKKyAg
ICByZXR1cm4gY29uc3RfY2FzdDxXZWJLaXRBdWRpb1Bhbm5lck5vZGUqPih0aGlzKS0+bV9kaXN0
YW5jZUVmZmVjdC5tb2RlbCgpOworfQorCit2b2lkIFdlYktpdEF1ZGlvUGFubmVyTm9kZTo6c2V0
RGlzdGFuY2VNb2RlbChEaXN0YW5jZU1vZGVsVHlwZSBtb2RlbCkKK3sKKyAgICBtX2Rpc3RhbmNl
RWZmZWN0LnNldE1vZGVsKG1vZGVsLCB0cnVlKTsKK30KKwordm9pZCBXZWJLaXRBdWRpb1Bhbm5l
ck5vZGU6OmdldEF6aW11dGhFbGV2YXRpb24oZG91YmxlKiBvdXRBemltdXRoLCBkb3VibGUqIG91
dEVsZXZhdGlvbikKK3sKKyAgICAvLyBGSVhNRTogd2Ugc2hvdWxkIGNhY2hlIGF6aW11dGggYW5k
IGVsZXZhdGlvbiAoaWYgcG9zc2libGUpLCBzbyB3ZSBvbmx5IHJlLWNhbGN1bGF0ZSBpZiBhIGNo
YW5nZSBoYXMgYmVlbiBtYWRlLgorCisgICAgZG91YmxlIGF6aW11dGggPSAwLjA7CisKKyAgICAv
LyBDYWxjdWxhdGUgdGhlIHNvdXJjZS1saXN0ZW5lciB2ZWN0b3IKKyAgICBGbG9hdFBvaW50M0Qg
bGlzdGVuZXJQb3NpdGlvbiA9IGxpc3RlbmVyKCktPnBvc2l0aW9uKCk7CisgICAgRmxvYXRQb2lu
dDNEIHNvdXJjZUxpc3RlbmVyID0gcG9zaXRpb24oKSAtIGxpc3RlbmVyUG9zaXRpb247CisKKyAg
ICBpZiAoc291cmNlTGlzdGVuZXIuaXNaZXJvKCkpIHsKKyAgICAgICAgLy8gZGVnZW5lcmF0ZSBj
YXNlIGlmIHNvdXJjZSBhbmQgbGlzdGVuZXIgYXJlIGF0IHRoZSBzYW1lIHBvaW50CisgICAgICAg
ICpvdXRBemltdXRoID0gMC4wOworICAgICAgICAqb3V0RWxldmF0aW9uID0gMC4wOworICAgICAg
ICByZXR1cm47CisgICAgfQorCisgICAgc291cmNlTGlzdGVuZXIubm9ybWFsaXplKCk7CisKKyAg
ICAvLyBBbGlnbiBheGVzCisgICAgRmxvYXRQb2ludDNEIGxpc3RlbmVyRnJvbnQgPSBsaXN0ZW5l
cigpLT5vcmllbnRhdGlvbigpOworICAgIEZsb2F0UG9pbnQzRCBsaXN0ZW5lclVwID0gbGlzdGVu
ZXIoKS0+dXBWZWN0b3IoKTsKKyAgICBGbG9hdFBvaW50M0QgbGlzdGVuZXJSaWdodCA9IGxpc3Rl
bmVyRnJvbnQuY3Jvc3MobGlzdGVuZXJVcCk7CisgICAgbGlzdGVuZXJSaWdodC5ub3JtYWxpemUo
KTsKKworICAgIEZsb2F0UG9pbnQzRCBsaXN0ZW5lckZyb250Tm9ybSA9IGxpc3RlbmVyRnJvbnQ7
CisgICAgbGlzdGVuZXJGcm9udE5vcm0ubm9ybWFsaXplKCk7CisKKyAgICBGbG9hdFBvaW50M0Qg
dXAgPSBsaXN0ZW5lclJpZ2h0LmNyb3NzKGxpc3RlbmVyRnJvbnROb3JtKTsKKworICAgIGZsb2F0
IHVwUHJvamVjdGlvbiA9IHNvdXJjZUxpc3RlbmVyLmRvdCh1cCk7CisKKyAgICBGbG9hdFBvaW50
M0QgcHJvamVjdGVkU291cmNlID0gc291cmNlTGlzdGVuZXIgLSB1cFByb2plY3Rpb24gKiB1cDsK
KyAgICBwcm9qZWN0ZWRTb3VyY2Uubm9ybWFsaXplKCk7CisKKyAgICBhemltdXRoID0gMTgwLjAg
KiBhY29zKHByb2plY3RlZFNvdXJjZS5kb3QobGlzdGVuZXJSaWdodCkpIC8gcGlEb3VibGU7Cisg
ICAgZml4TkFOcyhhemltdXRoKTsgLy8gYXZvaWQgaWxsZWdhbCB2YWx1ZXMKKworICAgIC8vIFNv
dXJjZSAgaW4gZnJvbnQgb3IgYmVoaW5kIHRoZSBsaXN0ZW5lcgorICAgIGRvdWJsZSBmcm9udEJh
Y2sgPSBwcm9qZWN0ZWRTb3VyY2UuZG90KGxpc3RlbmVyRnJvbnROb3JtKTsKKyAgICBpZiAoZnJv
bnRCYWNrIDwgMC4wKQorICAgICAgICBhemltdXRoID0gMzYwLjAgLSBhemltdXRoOworCisgICAg
Ly8gTWFrZSBhemltdXRoIHJlbGF0aXZlIHRvICJmcm9udCIgYW5kIG5vdCAicmlnaHQiIGxpc3Rl
bmVyIHZlY3RvcgorICAgIGlmICgoYXppbXV0aCA+PSAwLjApICYmIChhemltdXRoIDw9IDI3MC4w
KSkKKyAgICAgICAgYXppbXV0aCA9IDkwLjAgLSBhemltdXRoOworICAgIGVsc2UKKyAgICAgICAg
YXppbXV0aCA9IDQ1MC4wIC0gYXppbXV0aDsKKworICAgIC8vIEVsZXZhdGlvbgorICAgIGRvdWJs
ZSBlbGV2YXRpb24gPSA5MC4wIC0gMTgwLjAgKiBhY29zKHNvdXJjZUxpc3RlbmVyLmRvdCh1cCkp
IC8gcGlEb3VibGU7CisgICAgZml4TkFOcyhlbGV2YXRpb24pOyAvLyBhdm9pZCBpbGxlZ2FsIHZh
bHVlcworCisgICAgaWYgKGVsZXZhdGlvbiA+IDkwLjApCisgICAgICAgIGVsZXZhdGlvbiA9IDE4
MC4wIC0gZWxldmF0aW9uOworICAgIGVsc2UgaWYgKGVsZXZhdGlvbiA8IC05MC4wKQorICAgICAg
ICBlbGV2YXRpb24gPSAtMTgwLjAgLSBlbGV2YXRpb247CisKKyAgICBpZiAob3V0QXppbXV0aCkK
KyAgICAgICAgKm91dEF6aW11dGggPSBhemltdXRoOworICAgIGlmIChvdXRFbGV2YXRpb24pCisg
ICAgICAgICpvdXRFbGV2YXRpb24gPSBlbGV2YXRpb247Cit9CisKK2Zsb2F0IFdlYktpdEF1ZGlv
UGFubmVyTm9kZTo6ZG9wcGxlclJhdGUoKQoreworICAgIGRvdWJsZSBkb3BwbGVyU2hpZnQgPSAx
LjA7CisKKyAgICAvLyBGSVhNRTogb3B0aW1pemUgZm9yIGNhc2Ugd2hlbiBuZWl0aGVyIHNvdXJj
ZSBub3IgbGlzdGVuZXIgaGFzIGNoYW5nZWQuLi4KKyAgICBkb3VibGUgZG9wcGxlckZhY3RvciA9
IGxpc3RlbmVyKCktPmRvcHBsZXJGYWN0b3IoKTsKKworICAgIGlmIChkb3BwbGVyRmFjdG9yID4g
MC4wKSB7CisgICAgICAgIGRvdWJsZSBzcGVlZE9mU291bmQgPSBsaXN0ZW5lcigpLT5zcGVlZE9m
U291bmQoKTsKKworICAgICAgICBjb25zdCBGbG9hdFBvaW50M0QgJnNvdXJjZVZlbG9jaXR5ID0g
bV92ZWxvY2l0eTsKKyAgICAgICAgY29uc3QgRmxvYXRQb2ludDNEICZsaXN0ZW5lclZlbG9jaXR5
ID0gbGlzdGVuZXIoKS0+dmVsb2NpdHkoKTsKKworICAgICAgICAvLyBEb24ndCBib3RoZXIgaWYg
Ym90aCBzb3VyY2UgYW5kIGxpc3RlbmVyIGhhdmUgbm8gdmVsb2NpdHkKKyAgICAgICAgYm9vbCBz
b3VyY2VIYXNWZWxvY2l0eSA9ICFzb3VyY2VWZWxvY2l0eS5pc1plcm8oKTsKKyAgICAgICAgYm9v
bCBsaXN0ZW5lckhhc1ZlbG9jaXR5ID0gIWxpc3RlbmVyVmVsb2NpdHkuaXNaZXJvKCk7CisKKyAg
ICAgICAgaWYgKHNvdXJjZUhhc1ZlbG9jaXR5IHx8IGxpc3RlbmVySGFzVmVsb2NpdHkpIHsKKyAg
ICAgICAgICAgIC8vIENhbGN1bGF0ZSB0aGUgc291cmNlIHRvIGxpc3RlbmVyIHZlY3RvcgorICAg
ICAgICAgICAgRmxvYXRQb2ludDNEIGxpc3RlbmVyUG9zaXRpb24gPSBsaXN0ZW5lcigpLT5wb3Np
dGlvbigpOworICAgICAgICAgICAgRmxvYXRQb2ludDNEIHNvdXJjZVRvTGlzdGVuZXIgPSBwb3Np
dGlvbigpIC0gbGlzdGVuZXJQb3NpdGlvbjsKKworICAgICAgICAgICAgZG91YmxlIHNvdXJjZUxp
c3RlbmVyTWFnbml0dWRlID0gc291cmNlVG9MaXN0ZW5lci5sZW5ndGgoKTsKKworICAgICAgICAg
ICAgZG91YmxlIGxpc3RlbmVyUHJvamVjdGlvbiA9IHNvdXJjZVRvTGlzdGVuZXIuZG90KGxpc3Rl
bmVyVmVsb2NpdHkpIC8gc291cmNlTGlzdGVuZXJNYWduaXR1ZGU7CisgICAgICAgICAgICBkb3Vi
bGUgc291cmNlUHJvamVjdGlvbiA9IHNvdXJjZVRvTGlzdGVuZXIuZG90KHNvdXJjZVZlbG9jaXR5
KSAvIHNvdXJjZUxpc3RlbmVyTWFnbml0dWRlOworCisgICAgICAgICAgICBsaXN0ZW5lclByb2pl
Y3Rpb24gPSAtbGlzdGVuZXJQcm9qZWN0aW9uOworICAgICAgICAgICAgc291cmNlUHJvamVjdGlv
biA9IC1zb3VyY2VQcm9qZWN0aW9uOworCisgICAgICAgICAgICBkb3VibGUgc2NhbGVkU3BlZWRP
ZlNvdW5kID0gc3BlZWRPZlNvdW5kIC8gZG9wcGxlckZhY3RvcjsKKyAgICAgICAgICAgIGxpc3Rl
bmVyUHJvamVjdGlvbiA9IHN0ZDo6bWluKGxpc3RlbmVyUHJvamVjdGlvbiwgc2NhbGVkU3BlZWRP
ZlNvdW5kKTsKKyAgICAgICAgICAgIHNvdXJjZVByb2plY3Rpb24gPSBzdGQ6Om1pbihzb3VyY2VQ
cm9qZWN0aW9uLCBzY2FsZWRTcGVlZE9mU291bmQpOworCisgICAgICAgICAgICBkb3BwbGVyU2hp
ZnQgPSAoKHNwZWVkT2ZTb3VuZCAtIGRvcHBsZXJGYWN0b3IgKiBsaXN0ZW5lclByb2plY3Rpb24p
IC8gKHNwZWVkT2ZTb3VuZCAtIGRvcHBsZXJGYWN0b3IgKiBzb3VyY2VQcm9qZWN0aW9uKSk7Cisg
ICAgICAgICAgICBmaXhOQU5zKGRvcHBsZXJTaGlmdCk7IC8vIGF2b2lkIGlsbGVnYWwgdmFsdWVz
CisKKyAgICAgICAgICAgIC8vIExpbWl0IHRoZSBwaXRjaCBzaGlmdGluZyB0byA0IG9jdGF2ZXMg
dXAgYW5kIDMgb2N0YXZlcyBkb3duLgorICAgICAgICAgICAgaWYgKGRvcHBsZXJTaGlmdCA+IDE2
LjApCisgICAgICAgICAgICAgICAgZG9wcGxlclNoaWZ0ID0gMTYuMDsKKyAgICAgICAgICAgIGVs
c2UgaWYgKGRvcHBsZXJTaGlmdCA8IDAuMTI1KQorICAgICAgICAgICAgICAgIGRvcHBsZXJTaGlm
dCA9IDAuMTI1OworICAgICAgICB9CisgICAgfQorCisgICAgcmV0dXJuIHN0YXRpY19jYXN0PGZs
b2F0Pihkb3BwbGVyU2hpZnQpOworfQorCitmbG9hdCBXZWJLaXRBdWRpb1Bhbm5lck5vZGU6OmRp
c3RhbmNlQ29uZUdhaW4oKQoreworICAgIEZsb2F0UG9pbnQzRCBsaXN0ZW5lclBvc2l0aW9uID0g
bGlzdGVuZXIoKS0+cG9zaXRpb24oKTsKKyAgICBGbG9hdFBvaW50M0Qgc291cmNlUG9zaXRpb24g
PSBwb3NpdGlvbigpOworCisgICAgZG91YmxlIGxpc3RlbmVyRGlzdGFuY2UgPSBzb3VyY2VQb3Np
dGlvbi5kaXN0YW5jZVRvKGxpc3RlbmVyUG9zaXRpb24pOworICAgIGRvdWJsZSBkaXN0YW5jZUdh
aW4gPSBtX2Rpc3RhbmNlRWZmZWN0LmdhaW4obGlzdGVuZXJEaXN0YW5jZSk7CisKKyAgICBtX2Rp
c3RhbmNlR2Fpbi0+c2V0VmFsdWUoc3RhdGljX2Nhc3Q8ZmxvYXQ+KGRpc3RhbmNlR2FpbikpOwor
CisgICAgLy8gRklYTUU6IGNvdWxkIG9wdGltaXplIGJ5IGNhY2hpbmcgY29uZUdhaW4KKyAgICBk
b3VibGUgY29uZUdhaW4gPSBtX2NvbmVFZmZlY3QuZ2Fpbihzb3VyY2VQb3NpdGlvbiwgbV9vcmll
bnRhdGlvbiwgbGlzdGVuZXJQb3NpdGlvbik7CisKKyAgICBtX2NvbmVHYWluLT5zZXRWYWx1ZShz
dGF0aWNfY2FzdDxmbG9hdD4oY29uZUdhaW4pKTsKKworICAgIHJldHVybiBmbG9hdChkaXN0YW5j
ZUdhaW4gKiBjb25lR2Fpbik7Cit9CisKK3ZvaWQgV2ViS2l0QXVkaW9QYW5uZXJOb2RlOjpub3Rp
ZnlBdWRpb1NvdXJjZXNDb25uZWN0ZWRUb05vZGUoQXVkaW9Ob2RlKiBub2RlLCBIYXNoU2V0PEF1
ZGlvTm9kZSo+JiB2aXNpdGVkTm9kZXMpCit7CisgICAgQVNTRVJUKG5vZGUpOworICAgIGlmICgh
bm9kZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgLy8gRmlyc3QgY2hlY2sgaWYgdGhpcyBub2Rl
IGlzIGFuIEF1ZGlvQnVmZmVyU291cmNlTm9kZS4gSWYgc28sIGxldCBpdCBrbm93IGFib3V0IHVz
IHNvIHRoYXQgZG9wcGxlciBzaGlmdCBwaXRjaCBjYW4gYmUgdGFrZW4gaW50byBhY2NvdW50Lgor
ICAgIGlmIChub2RlLT5ub2RlVHlwZSgpID09IE5vZGVUeXBlQXVkaW9CdWZmZXJTb3VyY2UpIHsK
KyAgICAgICAgQXVkaW9CdWZmZXJTb3VyY2VOb2RlKiBidWZmZXJTb3VyY2VOb2RlID0gcmVpbnRl
cnByZXRfY2FzdDxBdWRpb0J1ZmZlclNvdXJjZU5vZGUqPihub2RlKTsKKyAgICAgICAgYnVmZmVy
U291cmNlTm9kZS0+c2V0UGFubmVyTm9kZSh0aGlzKTsKKyAgICB9IGVsc2UgeworICAgICAgICAv
LyBHbyB0aHJvdWdoIGFsbCBpbnB1dHMgdG8gdGhpcyBub2RlLgorICAgICAgICBmb3IgKHVuc2ln
bmVkIGkgPSAwOyBpIDwgbm9kZS0+bnVtYmVyT2ZJbnB1dHMoKTsgKytpKSB7CisgICAgICAgICAg
ICBBdWRpb05vZGVJbnB1dCogaW5wdXQgPSBub2RlLT5pbnB1dChpKTsKKworICAgICAgICAgICAg
Ly8gRm9yIGVhY2ggaW5wdXQsIGdvIHRocm91Z2ggYWxsIG9mIGl0cyBjb25uZWN0aW9ucywgbG9v
a2luZyBmb3IgQXVkaW9CdWZmZXJTb3VyY2VOb2Rlcy4KKyAgICAgICAgICAgIGZvciAodW5zaWdu
ZWQgaiA9IDA7IGogPCBpbnB1dC0+bnVtYmVyT2ZSZW5kZXJpbmdDb25uZWN0aW9ucygpOyArK2op
IHsKKyAgICAgICAgICAgICAgICBBdWRpb05vZGVPdXRwdXQqIGNvbm5lY3RlZE91dHB1dCA9IGlu
cHV0LT5yZW5kZXJpbmdPdXRwdXQoaik7CisgICAgICAgICAgICAgICAgQXVkaW9Ob2RlKiBjb25u
ZWN0ZWROb2RlID0gY29ubmVjdGVkT3V0cHV0LT5ub2RlKCk7CisgICAgICAgICAgICAgICAgaWYg
KHZpc2l0ZWROb2Rlcy5jb250YWlucyhjb25uZWN0ZWROb2RlKSkKKyAgICAgICAgICAgICAgICAg
ICAgY29udGludWU7CisKKyAgICAgICAgICAgICAgICB2aXNpdGVkTm9kZXMuYWRkKGNvbm5lY3Rl
ZE5vZGUpOworICAgICAgICAgICAgICAgIG5vdGlmeUF1ZGlvU291cmNlc0Nvbm5lY3RlZFRvTm9k
ZShjb25uZWN0ZWROb2RlLCB2aXNpdGVkTm9kZXMpOworICAgICAgICAgICAgfQorICAgICAgICB9
CisgICAgfQorfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUo
V0VCX0FVRElPKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9X
ZWJLaXRBdWRpb1Bhbm5lck5vZGUuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8v
V2ViS2l0QXVkaW9QYW5uZXJOb2RlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAuLjg5Nzk3YzNjNGM1Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJhdWRpby9XZWJLaXRBdWRpb1Bhbm5lck5vZGUuaApAQCAtMCwwICsxLDE2MCBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCwgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuICBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUg
SU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OCisgKiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKKyAq
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKFdFQl9BVURJTykKKworI2lu
Y2x1ZGUgIkF1ZGlvTGlzdGVuZXIuaCIKKyNpbmNsdWRlICJBdWRpb05vZGUuaCIKKyNpbmNsdWRl
ICJBdWRpb1BhcmFtLmgiCisjaW5jbHVkZSAiQ29uZS5oIgorI2luY2x1ZGUgIkRpc3RhbmNlLmgi
CisjaW5jbHVkZSAiRmxvYXRQb2ludDNELmgiCisjaW5jbHVkZSAiUGFubmVyLmgiCisjaW5jbHVk
ZSAiUGFubmVyTm9kZS5oIgorI2luY2x1ZGUgIldlYktpdEF1ZGlvQ29udGV4dC5oIgorI2luY2x1
ZGUgPG1lbW9yeT4KKyNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgorI2luY2x1ZGUgPHd0Zi9Mb2Nr
Lmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgSFJURkRhdGFiYXNlTG9hZGVyOwor
CisvLyBQYW5uZXJOb2RlIGlzIGFuIEF1ZGlvTm9kZSB3aXRoIG9uZSBpbnB1dCBhbmQgb25lIG91
dHB1dC4KKy8vIEl0IHBvc2l0aW9ucyBhIHNvdW5kIGluIDNEIHNwYWNlLCB3aXRoIHRoZSBleGFj
dCBlZmZlY3QgZGVwZW5kZW50IG9uIHRoZSBwYW5uaW5nIG1vZGVsLgorLy8gSXQgaGFzIGEgcG9z
aXRpb24gYW5kIGFuIG9yaWVudGF0aW9uIGluIDNEIHNwYWNlIHdoaWNoIGlzIHJlbGF0aXZlIHRv
IHRoZSBwb3NpdGlvbiBhbmQgb3JpZW50YXRpb24gb2YgdGhlIGNvbnRleHQncyBBdWRpb0xpc3Rl
bmVyLgorLy8gQSBkaXN0YW5jZSBlZmZlY3Qgd2lsbCBhdHRlbnVhdGUgdGhlIGdhaW4gYXMgdGhl
IHBvc2l0aW9uIG1vdmVzIGF3YXkgZnJvbSB0aGUgbGlzdGVuZXIuCisvLyBBIGNvbmUgZWZmZWN0
IHdpbGwgYXR0ZW51YXRlIHRoZSBnYWluIGFzIHRoZSBvcmllbnRhdGlvbiBtb3ZlcyBhd2F5IGZy
b20gdGhlIGxpc3RlbmVyLgorLy8gQWxsIG9mIHRoZXNlIGVmZmVjdHMgZm9sbG93IHRoZSBPcGVu
QUwgc3BlY2lmaWNhdGlvbiB2ZXJ5IGNsb3NlbHkuCisKK2NsYXNzIFdlYktpdEF1ZGlvUGFubmVy
Tm9kZSBmaW5hbCA6IHB1YmxpYyBQYW5uZXJOb2RlQmFzZSB7CisgICAgV1RGX01BS0VfSVNPX0FM
TE9DQVRFRChXZWJLaXRBdWRpb1Bhbm5lck5vZGUpOworcHVibGljOgorICAgIHN0YXRpYyBSZWY8
V2ViS2l0QXVkaW9QYW5uZXJOb2RlPiBjcmVhdGUoV2ViS2l0QXVkaW9Db250ZXh0JiBjb250ZXh0
LCBmbG9hdCBzYW1wbGVSYXRlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcg
V2ViS2l0QXVkaW9QYW5uZXJOb2RlKGNvbnRleHQsIHNhbXBsZVJhdGUpKTsKKyAgICB9CisKKyAg
ICB2aXJ0dWFsIH5XZWJLaXRBdWRpb1Bhbm5lck5vZGUoKTsKKworICAgIFdlYktpdEF1ZGlvQ29u
dGV4dCYgY29udGV4dCgpIHsgcmV0dXJuIGRvd25jYXN0PFdlYktpdEF1ZGlvQ29udGV4dD4oQXVk
aW9Ob2RlOjpjb250ZXh0KCkpOyB9CisgICAgY29uc3QgV2ViS2l0QXVkaW9Db250ZXh0JiBjb250
ZXh0KCkgY29uc3QgeyByZXR1cm4gZG93bmNhc3Q8V2ViS2l0QXVkaW9Db250ZXh0PihBdWRpb05v
ZGU6OmNvbnRleHQoKSk7IH0KKworICAgIC8vIEF1ZGlvTm9kZQorICAgIHZvaWQgcHJvY2Vzcyhz
aXplX3QgZnJhbWVzVG9Qcm9jZXNzKSBvdmVycmlkZTsKKyAgICB2b2lkIHB1bGxJbnB1dHMoc2l6
ZV90IGZyYW1lc1RvUHJvY2Vzcykgb3ZlcnJpZGU7CisgICAgdm9pZCByZXNldCgpIG92ZXJyaWRl
OworICAgIHZvaWQgaW5pdGlhbGl6ZSgpIG92ZXJyaWRlOworICAgIHZvaWQgdW5pbml0aWFsaXpl
KCkgb3ZlcnJpZGU7CisKKyAgICAvLyBMaXN0ZW5lcgorICAgIEF1ZGlvTGlzdGVuZXIqIGxpc3Rl
bmVyKCk7CisKKyAgICAvLyBQYW5uaW5nIG1vZGVsCisgICAgUGFubmluZ01vZGVsVHlwZSBwYW5u
aW5nTW9kZWwoKSBjb25zdCB7IHJldHVybiBtX3Bhbm5pbmdNb2RlbDsgfQorICAgIHZvaWQgc2V0
UGFubmluZ01vZGVsKFBhbm5pbmdNb2RlbFR5cGUpOworCisgICAgLy8gUG9zaXRpb24KKyAgICBG
bG9hdFBvaW50M0QgcG9zaXRpb24oKSBjb25zdCB7IHJldHVybiBtX3Bvc2l0aW9uOyB9CisgICAg
dm9pZCBzZXRQb3NpdGlvbihmbG9hdCB4LCBmbG9hdCB5LCBmbG9hdCB6KSB7IG1fcG9zaXRpb24g
PSBGbG9hdFBvaW50M0QoeCwgeSwgeik7IH0KKworICAgIC8vIE9yaWVudGF0aW9uCisgICAgRmxv
YXRQb2ludDNEIG9yaWVudGF0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9vcmllbnRhdGlvbjsgfQor
ICAgIHZvaWQgc2V0T3JpZW50YXRpb24oZmxvYXQgeCwgZmxvYXQgeSwgZmxvYXQgeikgeyBtX29y
aWVudGF0aW9uID0gRmxvYXRQb2ludDNEKHgsIHksIHopOyB9CisKKyAgICAvLyBWZWxvY2l0eQor
ICAgIEZsb2F0UG9pbnQzRCB2ZWxvY2l0eSgpIGNvbnN0IHsgcmV0dXJuIG1fdmVsb2NpdHk7IH0K
KyAgICB2b2lkIHNldFZlbG9jaXR5KGZsb2F0IHgsIGZsb2F0IHksIGZsb2F0IHopIHsgbV92ZWxv
Y2l0eSA9IEZsb2F0UG9pbnQzRCh4LCB5LCB6KTsgfQorCisgICAgLy8gRGlzdGFuY2UgcGFyYW1l
dGVycworICAgIERpc3RhbmNlTW9kZWxUeXBlIGRpc3RhbmNlTW9kZWwoKSBjb25zdDsKKyAgICB2
b2lkIHNldERpc3RhbmNlTW9kZWwoRGlzdGFuY2VNb2RlbFR5cGUpOworCisgICAgZG91YmxlIHJl
ZkRpc3RhbmNlKCkgeyByZXR1cm4gbV9kaXN0YW5jZUVmZmVjdC5yZWZEaXN0YW5jZSgpOyB9Cisg
ICAgdm9pZCBzZXRSZWZEaXN0YW5jZShkb3VibGUgcmVmRGlzdGFuY2UpIHsgbV9kaXN0YW5jZUVm
ZmVjdC5zZXRSZWZEaXN0YW5jZShyZWZEaXN0YW5jZSk7IH0KKworICAgIGRvdWJsZSBtYXhEaXN0
YW5jZSgpIHsgcmV0dXJuIG1fZGlzdGFuY2VFZmZlY3QubWF4RGlzdGFuY2UoKTsgfQorICAgIHZv
aWQgc2V0TWF4RGlzdGFuY2UoZG91YmxlIG1heERpc3RhbmNlKSB7IG1fZGlzdGFuY2VFZmZlY3Qu
c2V0TWF4RGlzdGFuY2UobWF4RGlzdGFuY2UpOyB9CisKKyAgICBkb3VibGUgcm9sbG9mZkZhY3Rv
cigpIHsgcmV0dXJuIG1fZGlzdGFuY2VFZmZlY3Qucm9sbG9mZkZhY3RvcigpOyB9CisgICAgdm9p
ZCBzZXRSb2xsb2ZmRmFjdG9yKGRvdWJsZSByb2xsb2ZmRmFjdG9yKSB7IG1fZGlzdGFuY2VFZmZl
Y3Quc2V0Um9sbG9mZkZhY3Rvcihyb2xsb2ZmRmFjdG9yKTsgfQorCisgICAgLy8gU291bmQgY29u
ZXMgLSBhbmdsZXMgaW4gZGVncmVlcworICAgIGRvdWJsZSBjb25lSW5uZXJBbmdsZSgpIGNvbnN0
IHsgcmV0dXJuIG1fY29uZUVmZmVjdC5pbm5lckFuZ2xlKCk7IH0KKyAgICB2b2lkIHNldENvbmVJ
bm5lckFuZ2xlKGRvdWJsZSBhbmdsZSkgeyBtX2NvbmVFZmZlY3Quc2V0SW5uZXJBbmdsZShhbmds
ZSk7IH0KKworICAgIGRvdWJsZSBjb25lT3V0ZXJBbmdsZSgpIGNvbnN0IHsgcmV0dXJuIG1fY29u
ZUVmZmVjdC5vdXRlckFuZ2xlKCk7IH0KKyAgICB2b2lkIHNldENvbmVPdXRlckFuZ2xlKGRvdWJs
ZSBhbmdsZSkgeyBtX2NvbmVFZmZlY3Quc2V0T3V0ZXJBbmdsZShhbmdsZSk7IH0KKworICAgIGRv
dWJsZSBjb25lT3V0ZXJHYWluKCkgY29uc3QgeyByZXR1cm4gbV9jb25lRWZmZWN0Lm91dGVyR2Fp
bigpOyB9CisgICAgdm9pZCBzZXRDb25lT3V0ZXJHYWluKGRvdWJsZSBhbmdsZSkgeyBtX2NvbmVF
ZmZlY3Quc2V0T3V0ZXJHYWluKGFuZ2xlKTsgfQorCisgICAgdm9pZCBnZXRBemltdXRoRWxldmF0
aW9uKGRvdWJsZSogb3V0QXppbXV0aCwgZG91YmxlKiBvdXRFbGV2YXRpb24pOworICAgIGZsb2F0
IGRvcHBsZXJSYXRlKCkgZmluYWw7CisKKyAgICAvLyBBY2Nlc3NvcnMgZm9yIGR5bmFtaWNhbGx5
IGNhbGN1bGF0ZWQgZ2FpbiB2YWx1ZXMuCisgICAgQXVkaW9QYXJhbSogZGlzdGFuY2VHYWluKCkg
eyByZXR1cm4gbV9kaXN0YW5jZUdhaW4uZ2V0KCk7IH0KKyAgICBBdWRpb1BhcmFtKiBjb25lR2Fp
bigpIHsgcmV0dXJuIG1fY29uZUdhaW4uZ2V0KCk7IH0KKworICAgIGRvdWJsZSB0YWlsVGltZSgp
IGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fcGFubmVyID8gbV9wYW5uZXItPnRhaWxUaW1lKCkg
OiAwOyB9CisgICAgZG91YmxlIGxhdGVuY3lUaW1lKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4g
bV9wYW5uZXIgPyBtX3Bhbm5lci0+bGF0ZW5jeVRpbWUoKSA6IDA7IH0KKworcHJpdmF0ZToKKyAg
ICBXZWJLaXRBdWRpb1Bhbm5lck5vZGUoV2ViS2l0QXVkaW9Db250ZXh0JiwgZmxvYXQgc2FtcGxl
UmF0ZSk7CisKKyAgICAvLyBSZXR1cm5zIHRoZSBjb21iaW5lZCBkaXN0YW5jZSBhbmQgY29uZSBn
YWluIGF0dGVudWF0aW9uLgorICAgIGZsb2F0IGRpc3RhbmNlQ29uZUdhaW4oKTsKKworICAgIC8v
IE5vdGlmaWVzIGFueSBBdWRpb0J1ZmZlclNvdXJjZU5vZGVzIGNvbm5lY3RlZCB0byB1cyBlaXRo
ZXIgZGlyZWN0bHkgb3IgaW5kaXJlY3RseSBhYm91dCBvdXIgZXhpc3RlbmNlLgorICAgIC8vIFRo
aXMgaXMgaW4gb3JkZXIgdG8gaGFuZGxlIHRoZSBwaXRjaCBjaGFuZ2UgbmVjZXNzYXJ5IGZvciB0
aGUgZG9wcGxlciBzaGlmdC4KKyAgICB2b2lkIG5vdGlmeUF1ZGlvU291cmNlc0Nvbm5lY3RlZFRv
Tm9kZShBdWRpb05vZGUqLCBIYXNoU2V0PEF1ZGlvTm9kZSo+JiB2aXNpdGVkTm9kZXMpOworCisg
ICAgc3RkOjp1bmlxdWVfcHRyPFBhbm5lcj4gbV9wYW5uZXI7CisgICAgUGFubmluZ01vZGVsVHlw
ZSBtX3Bhbm5pbmdNb2RlbDsKKworICAgIEZsb2F0UG9pbnQzRCBtX3Bvc2l0aW9uOworICAgIEZs
b2F0UG9pbnQzRCBtX29yaWVudGF0aW9uOworICAgIEZsb2F0UG9pbnQzRCBtX3ZlbG9jaXR5Owor
CisgICAgLy8gR2FpbgorICAgIFJlZlB0cjxBdWRpb1BhcmFtPiBtX2Rpc3RhbmNlR2FpbjsKKyAg
ICBSZWZQdHI8QXVkaW9QYXJhbT4gbV9jb25lR2FpbjsKKyAgICBEaXN0YW5jZUVmZmVjdCBtX2Rp
c3RhbmNlRWZmZWN0OworICAgIENvbmVFZmZlY3QgbV9jb25lRWZmZWN0OworICAgIGZsb2F0IG1f
bGFzdEdhaW47CisKKyAgICAvLyBIUlRGIERhdGFiYXNlIGxvYWRlcgorICAgIFJlZlB0cjxIUlRG
RGF0YWJhc2VMb2FkZXI+IG1faHJ0ZkRhdGFiYXNlTG9hZGVyOworCisgICAgdW5zaWduZWQgbV9j
b25uZWN0aW9uQ291bnQ7CisKKyAgICAvLyBTeW5jaHJvbml6ZSBwcm9jZXNzKCkgYW5kIHNldFBh
bm5pbmdNb2RlbCgpIHdoaWNoIGNhbiBjaGFuZ2UgdGhlIHBhbm5lci4KKyAgICBtdXRhYmxlIExv
Y2sgbV9wYW5uZXJNdXRleDsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlm
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1dlYktpdEF1ZGlv
UGFubmVyTm9kZS5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1dlYktpdEF1
ZGlvUGFubmVyTm9kZS5pZGwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAu
LmM0ZTliOTBiOWIzCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJhdWRpby9XZWJLaXRBdWRpb1Bhbm5lck5vZGUuaWRsCkBAIC0wLDAgKzEsNjYgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTAsIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiAgUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJ
RUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTgorICogQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTCisgKiBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCitbCisgICAgQ29uZGl0aW9uYWw9V0VCX0FVRElPLAorICAgIEltcGxlbWVudGVkQXM9
UGFubmluZ01vZGVsVHlwZQorXSBlbnVtIFBhbm5pbmdNb2RlbFR5cGUgeworICAgICJlcXVhbHBv
d2VyIiwKKyAgICAiSFJURiIKK307CisKK1sKKyAgICBDb25kaXRpb25hbD1XRUJfQVVESU8sCisg
ICAgSW1wbGVtZW50ZWRBcz1EaXN0YW5jZU1vZGVsVHlwZQorXSBlbnVtIERpc3RhbmNlTW9kZWxU
eXBlIHsKKyAgICAibGluZWFyIiwKKyAgICAiaW52ZXJzZSIsCisgICAgImV4cG9uZW50aWFsIgor
fTsKKworWworICAgIENvbmRpdGlvbmFsPVdFQl9BVURJTywKKyAgICBKU0dlbmVyYXRlVG9KU09i
amVjdCwKKyAgICBJbnRlcmZhY2VOYW1lPXdlYmtpdEF1ZGlvUGFubmVyTm9kZSwKK10gaW50ZXJm
YWNlIFdlYktpdEF1ZGlvUGFubmVyTm9kZSA6IEF1ZGlvTm9kZSB7CisgICAgLy8gRGVmYXVsdCBt
b2RlbCBmb3Igc3RlcmVvIGlzIEhSVEYKKyAgICBhdHRyaWJ1dGUgUGFubmluZ01vZGVsVHlwZSBw
YW5uaW5nTW9kZWw7CisKKyAgICAvLyBVc2VzIGEgM0QgY2FydGVzaWFuIGNvb3JkaW5hdGUgc3lz
dGVtCisgICAgdm9pZCBzZXRQb3NpdGlvbih1bnJlc3RyaWN0ZWQgZmxvYXQgeCwgdW5yZXN0cmlj
dGVkIGZsb2F0IHksIHVucmVzdHJpY3RlZCBmbG9hdCB6KTsKKyAgICB2b2lkIHNldE9yaWVudGF0
aW9uKHVucmVzdHJpY3RlZCBmbG9hdCB4LCB1bnJlc3RyaWN0ZWQgZmxvYXQgeSwgdW5yZXN0cmlj
dGVkIGZsb2F0IHopOworICAgIHZvaWQgc2V0VmVsb2NpdHkodW5yZXN0cmljdGVkIGZsb2F0IHgs
IHVucmVzdHJpY3RlZCBmbG9hdCB5LCB1bnJlc3RyaWN0ZWQgZmxvYXQgeik7CisKKyAgICAvLyBE
aXN0YW5jZSBtb2RlbAorICAgIGF0dHJpYnV0ZSBEaXN0YW5jZU1vZGVsVHlwZSBkaXN0YW5jZU1v
ZGVsOworCisgICAgYXR0cmlidXRlIHVucmVzdHJpY3RlZCBkb3VibGUgcmVmRGlzdGFuY2U7Cisg
ICAgYXR0cmlidXRlIHVucmVzdHJpY3RlZCBkb3VibGUgbWF4RGlzdGFuY2U7CisgICAgYXR0cmli
dXRlIHVucmVzdHJpY3RlZCBkb3VibGUgcm9sbG9mZkZhY3RvcjsKKworICAgIC8vIERpcmVjdGlv
bmFsIHNvdW5kIGNvbmUKKyAgICBhdHRyaWJ1dGUgdW5yZXN0cmljdGVkIGRvdWJsZSBjb25lSW5u
ZXJBbmdsZTsKKyAgICBhdHRyaWJ1dGUgdW5yZXN0cmljdGVkIGRvdWJsZSBjb25lT3V0ZXJBbmds
ZTsKKyAgICBhdHRyaWJ1dGUgdW5yZXN0cmljdGVkIGRvdWJsZSBjb25lT3V0ZXJHYWluOworfTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vV2ViS2l0T2ZmbGlu
ZUF1ZGlvQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1dlYktp
dE9mZmxpbmVBdWRpb0NvbnRleHQuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwLi5kOGUzOTlhMTRhMwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViYXVkaW8vV2ViS2l0T2ZmbGluZUF1ZGlvQ29udGV4dC5jcHAKQEAgLTAsMCArMSw2
MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiwgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5EIEFOWQorICogRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
CisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OCisgKiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMKKyAqIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2lmIEVOQUJMRShXRUJf
QVVESU8pCisKKyNpbmNsdWRlICJXZWJLaXRPZmZsaW5lQXVkaW9Db250ZXh0LmgiCisKKyNpbmNs
dWRlICJBdWRpb0J1ZmZlci5oIgorI2luY2x1ZGUgIkRvY3VtZW50LmgiCisjaW5jbHVkZSA8d3Rm
L0lzb01hbGxvY0lubGluZXMuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitXVEZfTUFLRV9J
U09fQUxMT0NBVEVEX0lNUEwoV2ViS2l0T2ZmbGluZUF1ZGlvQ29udGV4dCk7CisKK2lubGluZSBX
ZWJLaXRPZmZsaW5lQXVkaW9Db250ZXh0OjpXZWJLaXRPZmZsaW5lQXVkaW9Db250ZXh0KERvY3Vt
ZW50JiBkb2N1bWVudCwgQXVkaW9CdWZmZXIqIHJlbmRlclRhcmdldCkKKyAgICA6IFdlYktpdEF1
ZGlvQ29udGV4dChkb2N1bWVudCwgcmVuZGVyVGFyZ2V0KQoreworfQorCitFeGNlcHRpb25PcjxS
ZWY8V2ViS2l0T2ZmbGluZUF1ZGlvQ29udGV4dD4+IFdlYktpdE9mZmxpbmVBdWRpb0NvbnRleHQ6
OmNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCB1bnNpZ25lZCBudW1iZXJP
ZkNoYW5uZWxzLCBzaXplX3QgbnVtYmVyT2ZGcmFtZXMsIGZsb2F0IHNhbXBsZVJhdGUpCit7Cisg
ICAgLy8gRklYTUU6IEFkZCBzdXBwb3J0IGZvciB3b3JrZXJzLgorICAgIGlmICghaXM8RG9jdW1l
bnQ+KGNvbnRleHQpKQorICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgTm90U3VwcG9ydGVkRXJy
b3IgfTsKKyAgICBpZiAoIW51bWJlck9mQ2hhbm5lbHMgfHwgbnVtYmVyT2ZDaGFubmVscyA+IDEw
IHx8ICFudW1iZXJPZkZyYW1lcyB8fCAhaXNTYW1wbGVSYXRlUmFuZ2VHb29kKHNhbXBsZVJhdGUp
KQorICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgU3ludGF4RXJyb3IgfTsKKyAgICBhdXRvIHJl
bmRlclRhcmdldCA9IEF1ZGlvQnVmZmVyOjpjcmVhdGUobnVtYmVyT2ZDaGFubmVscywgbnVtYmVy
T2ZGcmFtZXMsIHNhbXBsZVJhdGUpOworICAgIGlmICghcmVuZGVyVGFyZ2V0KQorICAgICAgICBy
ZXR1cm4gRXhjZXB0aW9uIHsgU3ludGF4RXJyb3IgfTsKKworICAgIGF1dG8gYXVkaW9Db250ZXh0
ID0gYWRvcHRSZWYoKm5ldyBXZWJLaXRPZmZsaW5lQXVkaW9Db250ZXh0KGRvd25jYXN0PERvY3Vt
ZW50Pihjb250ZXh0KSwgcmVuZGVyVGFyZ2V0LmdldCgpKSk7CisgICAgYXVkaW9Db250ZXh0LT5z
dXNwZW5kSWZOZWVkZWQoKTsKKyAgICByZXR1cm4gYXVkaW9Db250ZXh0OworfQorCit9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoV0VCX0FVRElPKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9XZWJLaXRPZmZsaW5lQXVkaW9Db250
ZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1dlYktpdE9mZmxpbmVBdWRp
b0NvbnRleHQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uYzI1NGVk
NDFmZTAKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlv
L1dlYktpdE9mZmxpbmVBdWRpb0NvbnRleHQuaApAQCAtMCwwICsxLDQwIEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDEyLCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisg
KiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04K
KyAqIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUworICogU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJXZWJLaXRBdWRpb0NvbnRleHQuaCIKKworbmFt
ZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBXZWJLaXRPZmZsaW5lQXVkaW9Db250ZXh0IGZpbmFs
IDogcHVibGljIFdlYktpdEF1ZGlvQ29udGV4dCB7CisgICAgV1RGX01BS0VfSVNPX0FMTE9DQVRF
RChXZWJLaXRPZmZsaW5lQXVkaW9Db250ZXh0KTsKK3B1YmxpYzoKKyAgICBzdGF0aWMgRXhjZXB0
aW9uT3I8UmVmPFdlYktpdE9mZmxpbmVBdWRpb0NvbnRleHQ+PiBjcmVhdGUoU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCYsIHVuc2lnbmVkIG51bWJlck9mQ2hhbm5lbHMsIHNpemVfdCBudW1iZXJPZkZy
YW1lcywgZmxvYXQgc2FtcGxlUmF0ZSk7CisKK3ByaXZhdGU6CisgICAgV2ViS2l0T2ZmbGluZUF1
ZGlvQ29udGV4dChEb2N1bWVudCYsIEF1ZGlvQnVmZmVyKiByZW5kZXJUYXJnZXQpOworfTsKKwor
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJhdWRpby9XZWJLaXRPZmZsaW5lQXVkaW9Db250ZXh0LmlkbCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViYXVkaW8vV2ViS2l0T2ZmbGluZUF1ZGlvQ29udGV4dC5pZGwKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjRhOTJhYzAzYmE3Ci0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9XZWJLaXRPZmZsaW5lQXVkaW9D
b250ZXh0LmlkbApAQCAtMCwwICsxLDMzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyLCBH
b29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisg
KiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04KKyAqIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
CisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUworICogU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworWworICAgIENvbmRpdGlv
bmFsPVdFQl9BVURJTywKKyAgICBKU0dlbmVyYXRlVG9KU09iamVjdCwKKyAgICBDb25zdHJ1Y3Rv
cih1bnNpZ25lZCBsb25nIG51bWJlck9mQ2hhbm5lbHMsIHVuc2lnbmVkIGxvbmcgbnVtYmVyT2ZG
cmFtZXMsIHVucmVzdHJpY3RlZCBmbG9hdCBzYW1wbGVSYXRlKSwKKyAgICBDb25zdHJ1Y3Rvck1h
eVRocm93RXhjZXB0aW9uLAorICAgIENvbnN0cnVjdG9yQ2FsbFdpdGg9U2NyaXB0RXhlY3V0aW9u
Q29udGV4dCwKKyAgICBJbnRlcmZhY2VOYW1lPXdlYmtpdE9mZmxpbmVBdWRpb0NvbnRleHQKK10g
aW50ZXJmYWNlIFdlYktpdE9mZmxpbmVBdWRpb0NvbnRleHQgOiBXZWJLaXRBdWRpb0NvbnRleHQg
eworfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0IGIvU291cmNlL1dl
YkNvcmUvU291cmNlcy50eHQKaW5kZXggMjRkYjhmZDJjMzEuLmU1MWIzMWYyZmYwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Tb3Vy
Y2VzLnR4dApAQCAtMjY4LDYgKzI2OCw5IEBAIE1vZHVsZXMvd2ViYXVkaW8vU2NyaXB0UHJvY2Vz
c29yTm9kZS5jcHAKIE1vZHVsZXMvd2ViYXVkaW8vV2F2ZVNoYXBlckRTUEtlcm5lbC5jcHAKIE1v
ZHVsZXMvd2ViYXVkaW8vV2F2ZVNoYXBlck5vZGUuY3BwCiBNb2R1bGVzL3dlYmF1ZGlvL1dhdmVT
aGFwZXJQcm9jZXNzb3IuY3BwCitNb2R1bGVzL3dlYmF1ZGlvL1dlYktpdEF1ZGlvQ29udGV4dC5j
cHAKK01vZHVsZXMvd2ViYXVkaW8vV2ViS2l0QXVkaW9QYW5uZXJOb2RlLmNwcAorTW9kdWxlcy93
ZWJhdWRpby9XZWJLaXRPZmZsaW5lQXVkaW9Db250ZXh0LmNwcAogCiBNb2R1bGVzL3dlYmF1dGhu
L0F1dGhlbnRpY2F0b3JDb29yZGluYXRvci5jcHAKIE1vZHVsZXMvd2ViYXV0aG4vQXV0aGVudGlj
YXRvckFzc2VydGlvblJlc3BvbnNlLmNwcApAQCAtMzU2Nyw3ICszNTcwLDEwIEBAIEpTV2ViR1BV
U3dhcENoYWluLmNwcAogSlNXZWJHUFVUZXh0dXJlLmNwcAogSlNXZWJHUFVUZXh0dXJlVmlldy5j
cHAKIEpTV2ViS2l0QW5pbWF0aW9uRXZlbnQuY3BwCitKU1dlYktpdEF1ZGlvQ29udGV4dC5jcHAK
K0pTV2ViS2l0QXVkaW9QYW5uZXJOb2RlLmNwcAogSlNXZWJLaXRDU1NNYXRyaXguY3BwCitKU1dl
YktpdE9mZmxpbmVBdWRpb0NvbnRleHQuY3BwCiBKU1dlYktpdFBsYXliYWNrVGFyZ2V0QXZhaWxh
YmlsaXR5RXZlbnQuY3BwCiBKU1dlYktpdFBvaW50LmNwcAogSlNXZWJLaXRUcmFuc2l0aW9uRXZl
bnQuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKaW5kZXggNTI2NWRiNTgzODIuLmZjZTYyNjhiYjA3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0yNDE0LDYgKzI0MTQs
OCBAQAogCQk4MzEwMkIyNzFGOUVBREQ5MDBFNDA0QjkgLyogSlNFeHRlbmRhYmxlTWVzc2FnZUV2
ZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4MzEw
MkIyMzFGOUVBREMyMDBFNDA0QjkgLyogSlNFeHRlbmRhYmxlTWVzc2FnZUV2ZW50LmggKi87IH07
CiAJCTgzMTFDMDAzMUZBQTJFOTUwMEUzQzhFNSAvKiBTV1NlcnZlckpvYlF1ZXVlLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4MzExQzAwMjFGQUEyRTg5
MDBFM0M4RTUgLyogU1dTZXJ2ZXJKb2JRdWV1ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CiAJCTgzMTIwQzcxMUM1NkYzRkIwMDFDQjExMiAvKiBIVE1M
RGF0YUVsZW1lbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDgzNEI4NkE3MUM1NkU4M0EwMEYzRjBFMyAvKiBIVE1MRGF0YUVsZW1lbnQuaCAqLzsgfTsK
KwkJODMxQjYxNzYyNDk5QTVCQjAwQzA3Qzc5IC8qIFdlYktpdEF1ZGlvUGFubmVyTm9kZS5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODMxQjYxNzQyNDk5
QTU5QzAwQzA3Qzc5IC8qIFdlYktpdEF1ZGlvUGFubmVyTm9kZS5oICovOyB9OworCQk4MzFCNjE3
NzI0OTlBNUJGMDBDMDdDNzkgLyogV2ViS2l0T2ZmbGluZUF1ZGlvQ29udGV4dC5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODMxQjYxNzUyNDk5QTU5RDAw
QzA3Qzc5IC8qIFdlYktpdE9mZmxpbmVBdWRpb0NvbnRleHQuaCAqLzsgfTsKIAkJODMyMTUwN0Ux
RjI3RUExQjAwOTVCMTM2IC8qIE5hdmlnYXRvckJlYWNvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODMyMTUwN0IxRjI3RUExNTAwOTVCMTM2IC8qIE5h
dmlnYXRvckJlYWNvbi5oICovOyB9OwogCQk4MzJCODQzNDE5RDhFNTUxMDBCMjYwNTUgLyogU1ZH
QW5pbWF0ZUVsZW1lbnRCYXNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA4MzJCODQzMzE5RDhFNTUxMDBCMjYwNTUgLyogU1ZHQW5pbWF0ZUVsZW1lbnRC
YXNlLmggKi87IH07CiAJCTgzM0I5RTMyMUY1MDhEODUwMEUwRTQyOCAvKiBKU0ZpbGVTeXN0ZW1E
aXJlY3RvcnlFbnRyeS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gODMzQjlFMkYxRjUwOEQ4MDAwRTBFNDI4IC8qIEpTRmlsZVN5c3RlbURpcmVjdG9yeUVu
dHJ5LmggKi87IH07CkBAIC0yNDY5LDEwICsyNDcxLDEyIEBACiAJCTgzOUEyRjJFMUUyMDRBNzEw
MDM5MDU3RSAvKiBXZWJHTFN0YXRlVHJhY2tlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gODM5QTJGMkMxRTIwNEE2RDAwMzkwNTdFIC8qIFdlYkdMU3Rh
dGVUcmFja2VyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKIAkJODM5QUFGRUQxQTBDMEM4RDAwNjA1Rjk5IC8qIEhUTUxXQlJFbGVtZW50LmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4MzlBQUZFQjFBMEMwQzhE
MDA2MDVGOTkgLyogSFRNTFdCUkVsZW1lbnQuaCAqLzsgfTsKIAkJODNBOEFDNDAxRkFCQkZFNTAw
MjA2NEFDIC8qIFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4M0E4QUMzRTFGQUJCRkQxMDAyMDY0QUMgLyogU2Vy
dmljZVdvcmtlcklkZW50aWZpZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OworCQk4M0IxQTcwMjI0OTk4NUYwMDBGRTU5NjEgLyogV2ViS2l0QXVkaW9D
b250ZXh0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4
M0IxQTZGRjI0OTk4NUQwMDBGRTU5NjEgLyogV2ViS2l0QXVkaW9Db250ZXh0LmggKi87IH07CiAJ
CTgzQjJEMTc1MUI4QkNENkEwMEEwMkU0NyAvKiBOYXRpdmVOb2RlRmlsdGVyLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4M0U5NTlFMTFCOEJDMjJCMDA0
RDkzODUgLyogTmF0aXZlTm9kZUZpbHRlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CiAJCTgzQjc0RUY2MUYzRTBCRjIwMDk5NkJDNyAvKiBLZWVwYWxp
dmVSZXF1ZXN0VHJhY2tlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gODNCNzRFRjMxRjNFMEJENzAwOTk2QkM3IC8qIEtlZXBhbGl2ZVJlcXVlc3RUcmFj
a2VyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJ
ODNCOTY4N0IxOUY4QUI4MzAwNEVGN0FGIC8qIFN0eWxlQnVpbGRlckNvbnZlcnRlci5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODNCOTY4NzkxOUY4QUI4
MzAwNEVGN0FGIC8qIFN0eWxlQnVpbGRlckNvbnZlcnRlci5oICovOyB9OwogCQk4M0JCNUM4ODFE
NUQ2RjQ1MDA1QTcxRjQgLyogQWxsRGVzY2VuZGFudHNDb2xsZWN0aW9uLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4M0JCNUM4NzFENUQ2RjNBMDA1QTcx
RjQgLyogQWxsRGVzY2VuZGFudHNDb2xsZWN0aW9uLmggKi87IH07CisJCTgzQkQzQ0VFMjQ5OThF
MDEwMEJBM0U2NyAvKiBBdWRpb0NvbnRleHRTdGF0ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODNCRDNDRUQyNDk5OERGNjAwQkEzRTY3IC8qIEF1ZGlv
Q29udGV4dFN0YXRlLmggKi87IH07CiAJCTgzQzA1QTVCMUE2ODYyMTIwMDdFNURFQSAvKiBTdHls
ZVByb3BlcnR5U2hvcnRoYW5kRnVuY3Rpb25zLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA4M0MwNUE1OTFBNjg2MjEyMDA3RTVERUEgLyogU3R5bGVQcm9w
ZXJ0eVNob3J0aGFuZEZ1bmN0aW9ucy5oICovOyB9OwogCQk4M0MxRjU5NDFFREY2OUQzMDA0MTBE
MjcgLyogUXVhbGlmaWVkTmFtZUNhY2hlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA4M0MxRjU5MjFFREY2OUQzMDA0MTBEMjcgLyogUXVhbGlmaWVkTmFt
ZUNhY2hlLmggKi87IH07CiAJCTgzQzQ1QjhFMURDMkI2OEEwMDg4NzFCQSAvKiBWYWxpZGF0aW9u
QnViYmxlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4
M0M0NUI4RDFEQzJCNjdDMDA4ODcxQkEgLyogVmFsaWRhdGlvbkJ1YmJsZS5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC0xMDI5Nyw2ICsxMDMwMSw3
IEBACiAJCTgzMDAzMEYzMUI3RDMzQTYwMEVEM0FBQyAvKiBHZW5lcmljQ2FjaGVkSFRNTENvbGxl
Y3Rpb24uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gR2VuZXJpY0Nh
Y2hlZEhUTUxDb2xsZWN0aW9uLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODMw
MDMwRjQxQjdEMzNBNjAwRUQzQUFDIC8qIEdlbmVyaWNDYWNoZWRIVE1MQ29sbGVjdGlvbi5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBHZW5lcmljQ2FjaGVkSFRNTENvbGxlY3Rp
b24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODMwMDMwRjcxQjdEMzk4ODAwRUQz
QUFDIC8qIENhY2hlZEhUTUxDb2xsZWN0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IENhY2hlZEhUTUxDb2xsZWN0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCTgzMDAzRTJCMjQ5OTk3QTgwMDYwQUY5NCAvKiBXZWJLaXRBdWRpb0NvbnRleHQuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2ViS2l0QXVkaW9Db250ZXh0LmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODMwMzM0RkIxRjU0OTA1MjAwNERGNzA3
IC8qIEZpbGVTeXN0ZW1EaXJlY3RvcnlSZWFkZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gRmlsZVN5c3RlbURpcmVjdG9yeVJlYWRlci5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTgzMDMzNEZDMUY1NDkwNTIwMDRERjcwNyAvKiBGaWxlU3lzdGVt
RGlyZWN0b3J5UmVhZGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEZpbGVT
eXN0ZW1EaXJlY3RvcnlSZWFkZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODMw
MzM0RkQxRjU0OTA1MjAwNERGNzA3IC8qIEZpbGVTeXN0ZW1FbnRyaWVzQ2FsbGJhY2suaWRsICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gdGV4dDsgcGF0aCA9IEZpbGVTeXN0ZW1FbnRyaWVzQ2FsbGJhY2suaWRsOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTAzMTQsNiArMTAzMTksMTIgQEAKIAkJODMxMDJC
MjUxRjlFQURDMjAwRTQwNEI5IC8qIEpTRXh0ZW5kYWJsZU1lc3NhZ2VFdmVudC5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0V4dGVuZGFibGVNZXNzYWdlRXZlbnQu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4MzExQzAwMDFGQUEyRTg5MDBFM0M4
RTUgLyogU1dTZXJ2ZXJKb2JRdWV1ZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBTV1NlcnZlckpvYlF1ZXVlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJODMxMUMwMDIxRkFBMkU4OTAwRTNDOEU1IC8qIFNXU2VydmVySm9iUXVldWUuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU1dTZXJ2ZXJKb2JRdWV1ZS5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQk4MzFCNjE2RjI0OTlBNTk4MDBDMDdDNzkgLyogV2ViS2l0QXVk
aW9QYW5uZXJOb2RlLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBXZWJLaXRBdWRpb1Bhbm5l
ck5vZGUuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk4MzFCNjE3MTI0OTlBNTk5
MDBDMDdDNzkgLyogV2ViS2l0QXVkaW9QYW5uZXJOb2RlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IFdlYktpdEF1ZGlvUGFubmVyTm9kZS5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTgzMUI2MTcyMjQ5OUE1OUEwMEMwN0M3OSAvKiBXZWJLaXRPZmZs
aW5lQXVkaW9Db250ZXh0LmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBXZWJLaXRPZmZsaW5l
QXVkaW9Db250ZXh0LmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJODMxQjYxNzMy
NDk5QTU5QjAwQzA3Qzc5IC8qIFdlYktpdE9mZmxpbmVBdWRpb0NvbnRleHQuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2ViS2l0T2ZmbGluZUF1ZGlvQ29udGV4dC5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTgzMUI2MTc0MjQ5OUE1OUMwMEMwN0M3
OSAvKiBXZWJLaXRBdWRpb1Bhbm5lck5vZGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gV2ViS2l0QXVkaW9QYW5uZXJOb2RlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCTgzMUI2MTc1MjQ5OUE1OUQwMEMwN0M3OSAvKiBXZWJLaXRPZmZsaW5lQXVkaW9Db250ZXh0
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYktpdE9mZmxpbmVBdWRpb0Nv
bnRleHQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODMxQzQ2QzMxRjlFRTVFMDAw
RUJENDUwIC8qIEpTRXh0ZW5kYWJsZU1lc3NhZ2VFdmVudEN1c3RvbS5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0V4dGVuZGFibGVNZXNzYWdlRXZlbnRDdXN0b20u
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4MzFEMUYyOTFDNTZFQ0EwMDBGNUY2
QzAgLyogSFRNTERhdGFFbGVtZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IEhUTUxEYXRhRWxlbWVudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTgzMjE1MDdBMUYyN0VBMTUwMDk1QjEzNiAvKiBOYXZpZ2F0b3JCZWFjb24uY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gTmF2aWdhdG9yQmVhY29uLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKQEAgLTEwNDQxLDYgKzEwNDUyLDggQEAKIAkJODM5QUFGRUIxQTBDMEM4RDAwNjA1Rjk5IC8q
IEhUTUxXQlJFbGVtZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEhUTUxX
QlJFbGVtZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTgzQTRBOUY4MUNFN0ZE
N0UwMDcwOUIwMCAvKiBKU1hNTERvY3VtZW50Q3VzdG9tLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IEpTWE1MRG9jdW1lbnRDdXN0b20uY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk4M0E4QUMzRTFGQUJCRkQxMDAyMDY0QUMgLyogU2VydmljZVdvcmtl
cklkZW50aWZpZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2VydmljZVdv
cmtlcklkZW50aWZpZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJODNCMUE2RkYy
NDk5ODVEMDAwRkU1OTYxIC8qIFdlYktpdEF1ZGlvQ29udGV4dC5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBXZWJLaXRBdWRpb0NvbnRleHQuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJODNCMUE3MDEyNDk5ODVEMDAwRkU1OTYxIC8qIFdlYktpdEF1ZGlvQ29udGV4
dC5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gV2ViS2l0QXVkaW9Db250ZXh0LmlkbDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODNCMjUwMDkxRkExMTgxQzAwQkMwMkQ5IC8qIEpT
U2VydmljZVdvcmtlckNsaWVudFR5cGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gSlNTZXJ2aWNlV29ya2VyQ2xpZW50VHlwZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk4M0IyNTAwQjFGQTExODFEMDBCQzAyRDkgLyogSlNTZXJ2aWNlV29ya2VyQ2xpZW50VHlw
ZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU1NlcnZpY2VXb3Jr
ZXJDbGllbnRUeXBlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODNCNURBNDUx
RkE5MDc5MzAwQjU5REY0IC8qIEpTTmF2aWdhdG9yQ3VzdG9tLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTTmF2aWdhdG9yQ3VzdG9tLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKQEAgLTEwNDQ4LDYgKzEwNDYxLDggQEAKIAkJODNCNzRFRjMxRjNFMEJE
NzAwOTk2QkM3IC8qIEtlZXBhbGl2ZVJlcXVlc3RUcmFja2VyLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IEtlZXBhbGl2ZVJlcXVlc3RUcmFja2VyLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTgzQjk2ODc5MTlGOEFCODMwMDRFRjdBRiAvKiBTdHlsZUJ1aWxkZXJD
b252ZXJ0ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU3R5bGVCdWlsZGVy
Q29udmVydGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTgzQkI1Qzg3MUQ1RDZG
M0EwMDVBNzFGNCAvKiBBbGxEZXNjZW5kYW50c0NvbGxlY3Rpb24uaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gQWxsRGVzY2VuZGFudHNDb2xsZWN0aW9uLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTgzQkQzQ0VCMjQ5OThDQzUwMEJBM0U2NyAvKiBBdWRpb0NvbnRl
eHRTdGF0ZS5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gQXVkaW9Db250ZXh0U3RhdGUuaWRs
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk4M0JEM0NFRDI0OTk4REY2MDBCQTNFNjcg
LyogQXVkaW9Db250ZXh0U3RhdGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
QXVkaW9Db250ZXh0U3RhdGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODNDMDVB
NTgxQTY4NjIxMjAwN0U1REVBIC8qIFN0eWxlUHJvcGVydHlTaG9ydGhhbmRGdW5jdGlvbnMuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gU3R5bGVQcm9wZXJ0eVNob3J0
aGFuZEZ1bmN0aW9ucy5jcHA7IHBhdGggPSBEZXJpdmVkU291cmNlcy9XZWJDb3JlL1N0eWxlUHJv
cGVydHlTaG9ydGhhbmRGdW5jdGlvbnMuY3BwOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNf
RElSOyB9OwogCQk4M0MwNUE1OTFBNjg2MjEyMDA3RTVERUEgLyogU3R5bGVQcm9wZXJ0eVNob3J0
aGFuZEZ1bmN0aW9ucy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBTdHlsZVBy
b3BlcnR5U2hvcnRoYW5kRnVuY3Rpb25zLmg7IHBhdGggPSBEZXJpdmVkU291cmNlcy9XZWJDb3Jl
L1N0eWxlUHJvcGVydHlTaG9ydGhhbmRGdW5jdGlvbnMuaDsgc291cmNlVHJlZSA9IEJVSUxUX1BS
T0RVQ1RTX0RJUjsgfTsKIAkJODNDMUY1OTExRURGNjlEMzAwNDEwRDI3IC8qIFF1YWxpZmllZE5h
bWVDYWNoZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBRdWFsaWZp
ZWROYW1lQ2FjaGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjkyMzEsNiAr
MjkyNDYsOCBAQAogCQkJCUZEMzE1RkJBMTJCMDI2NzUwMEMxQTM1OSAvKiBBdWRpb0NvbnRleHQu
Y3BwICovLAogCQkJCUZEMzE1RkJCMTJCMDI2NzUwMEMxQTM1OSAvKiBBdWRpb0NvbnRleHQuaCAq
LywKIAkJCQlGRDMxNUZCQzEyQjAyNjc1MDBDMUEzNTkgLyogQXVkaW9Db250ZXh0LmlkbCAqLywK
KwkJCQk4M0JEM0NFRDI0OTk4REY2MDBCQTNFNjcgLyogQXVkaW9Db250ZXh0U3RhdGUuaCAqLywK
KwkJCQk4M0JEM0NFQjI0OTk4Q0M1MDBCQTNFNjcgLyogQXVkaW9Db250ZXh0U3RhdGUuaWRsICov
LAogCQkJCUZEMzE1RkJEMTJCMDI2NzUwMEMxQTM1OSAvKiBBdWRpb0Rlc3RpbmF0aW9uTm9kZS5j
cHAgKi8sCiAJCQkJRkQzMTVGQkUxMkIwMjY3NTAwQzFBMzU5IC8qIEF1ZGlvRGVzdGluYXRpb25O
b2RlLmggKi8sCiAJCQkJRkQzMTVGQkYxMkIwMjY3NTAwQzFBMzU5IC8qIEF1ZGlvRGVzdGluYXRp
b25Ob2RlLmlkbCAqLywKQEAgLTI5MzI4LDYgKzI5MzQ1LDE1IEBACiAJCQkJRkQ3RjI5OEUxM0Q0
QzBDQjAwQUQ5NTM1IC8qIFdhdmVTaGFwZXJOb2RlLmlkbCAqLywKIAkJCQlGRDdGMjk4RjEzRDRD
MENCMDBBRDk1MzUgLyogV2F2ZVNoYXBlclByb2Nlc3Nvci5jcHAgKi8sCiAJCQkJRkQ3RjI5OTAx
M0Q0QzBDQjAwQUQ5NTM1IC8qIFdhdmVTaGFwZXJQcm9jZXNzb3IuaCAqLywKKwkJCQk4MzAwM0Uy
QjI0OTk5N0E4MDA2MEFGOTQgLyogV2ViS2l0QXVkaW9Db250ZXh0LmNwcCAqLywKKwkJCQk4M0Ix
QTZGRjI0OTk4NUQwMDBGRTU5NjEgLyogV2ViS2l0QXVkaW9Db250ZXh0LmggKi8sCisJCQkJODNC
MUE3MDEyNDk5ODVEMDAwRkU1OTYxIC8qIFdlYktpdEF1ZGlvQ29udGV4dC5pZGwgKi8sCisJCQkJ
ODMxQjYxNzEyNDk5QTU5OTAwQzA3Qzc5IC8qIFdlYktpdEF1ZGlvUGFubmVyTm9kZS5jcHAgKi8s
CisJCQkJODMxQjYxNzQyNDk5QTU5QzAwQzA3Qzc5IC8qIFdlYktpdEF1ZGlvUGFubmVyTm9kZS5o
ICovLAorCQkJCTgzMUI2MTZGMjQ5OUE1OTgwMEMwN0M3OSAvKiBXZWJLaXRBdWRpb1Bhbm5lck5v
ZGUuaWRsICovLAorCQkJCTgzMUI2MTczMjQ5OUE1OUIwMEMwN0M3OSAvKiBXZWJLaXRPZmZsaW5l
QXVkaW9Db250ZXh0LmNwcCAqLywKKwkJCQk4MzFCNjE3NTI0OTlBNTlEMDBDMDdDNzkgLyogV2Vi
S2l0T2ZmbGluZUF1ZGlvQ29udGV4dC5oICovLAorCQkJCTgzMUI2MTcyMjQ5OUE1OUEwMEMwN0M3
OSAvKiBXZWJLaXRPZmZsaW5lQXVkaW9Db250ZXh0LmlkbCAqLywKIAkJCSk7CiAJCQlwYXRoID0g
d2ViYXVkaW87CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwpAQCAtMjk3MDQsNiArMjk3MzAs
NyBAQAogCQkJCTlCNDE3MDY0MTI1NjYyQjMwMDZCMjhGQyAvKiBBcHBseUJsb2NrRWxlbWVudENv
bW1hbmQuaCBpbiBIZWFkZXJzICovLAogCQkJCTkzMzA5REQ5MDk5RTY0OTIwMDU2RTU4MSAvKiBB
cHBseVN0eWxlQ29tbWFuZC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTEyREQ4RjYwRDkxRTZBRjAw
MEY4OUVFIC8qIEFyY2hpdmUuaCBpbiBIZWFkZXJzICovLAorCQkJCTgzQkQzQ0VFMjQ5OThFMDEw
MEJBM0U2NyAvKiBBdWRpb0NvbnRleHRTdGF0ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTEyREQ4
RkQwRDkxRTZBRjAwMEY4OUVFIC8qIEFyY2hpdmVGYWN0b3J5LmggaW4gSGVhZGVycyAqLywKIAkJ
CQk1MTJERDhGQzBEOTFFNkFGMDAwRjg5RUUgLyogQXJjaGl2ZVJlc291cmNlLmggaW4gSGVhZGVy
cyAqLywKIAkJCQk1MTJERDhGODBEOTFFNkFGMDAwRjg5RUUgLyogQXJjaGl2ZVJlc291cmNlQ29s
bGVjdGlvbi5oIGluIEhlYWRlcnMgKi8sCkBAIC0zMDg2OSw2ICszMDg5Niw3IEBACiAJCQkJQTQz
QkY1OTkxMTQ5MjkwQTAwQzY0M0NBIC8qIEhUTUxQcm9ncmVzc0VsZW1lbnQuaCBpbiBIZWFkZXJz
ICovLAogCQkJCUE4Q0ZGN0EzMEExNTY5NzgwMDBBNDIzNCAvKiBIVE1MUXVvdGVFbGVtZW50Lmgg
aW4gSGVhZGVycyAqLywKIAkJCQlBOEQyMjNGRTE2QjUyRTRFMDAxNTcyODggLyogSFRNTFJlc291
cmNlUHJlbG9hZGVyLmggaW4gSGVhZGVycyAqLywKKwkJCQk4M0IxQTcwMjI0OTk4NUYwMDBGRTU5
NjEgLyogV2ViS2l0QXVkaW9Db250ZXh0LmggaW4gSGVhZGVycyAqLywKIAkJCQlBODcxREMyNTBB
MTUyMDU3MDBCMTJBNjggLyogSFRNTFNjcmlwdEVsZW1lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTk3N0IzODc1MTIyODgzRTkwMEI4MUZGOCAvKiBIVE1MU2NyaXB0UnVubmVyLmggaW4gSGVhZGVy
cyAqLywKIAkJCQk5NzdCMzg3NjEyMjg4M0U5MDBCODFGRjggLyogSFRNTFNjcmlwdFJ1bm5lckhv
c3QuaCBpbiBIZWFkZXJzICovLApAQCAtMzE3MTEsNiArMzE3MzksNyBAQAogCQkJCUJDODI0MzI5
MEQwQ0U4QTIwMDQ2MEM4RiAvKiBKU1NRTEVycm9yLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQUU4
MkZFRDBDQUIwN0VFMDAyMjM3QUUgLyogSlNTUUxSZXN1bHRTZXQuaCBpbiBIZWFkZXJzICovLAog
CQkJCTFBRkUxMTlBMENCRkZDQzQwMDMwMTdGQSAvKiBKU1NRTFJlc3VsdFNldFJvd0xpc3QuaCBp
biBIZWFkZXJzICovLAorCQkJCTgzMUI2MTc2MjQ5OUE1QkIwMEMwN0M3OSAvKiBXZWJLaXRBdWRp
b1Bhbm5lck5vZGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUI1OURENkE1MTE5MDJBNjIwMDdFOTY4
NCAvKiBKU1NRTFN0YXRlbWVudENhbGxiYWNrLmggaW4gSGVhZGVycyAqLywKIAkJCQlCNTlERDZB
OTExOTAyQTcxMDA3RTk2ODQgLyogSlNTUUxTdGF0ZW1lbnRFcnJvckNhbGxiYWNrLmggaW4gSGVh
ZGVycyAqLywKIAkJCQlCQzgyNDMyQTBEMENFOEEyMDA0NjBDOEYgLyogSlNTUUxUcmFuc2FjdGlv
bi5oIGluIEhlYWRlcnMgKi8sCkBAIC0zMjgwNCw2ICszMjgzMyw3IEBACiAJCQkJNTFFRTdCMzgx
QUE1MEIwNTAwRjkyQjIxIC8qIFJlc291cmNlTG9hZEluZm8uaCBpbiBIZWFkZXJzICovLAogCQkJ
CTk3M0UzMjU3MTA4ODNCN0MwMDVCQzQ5MyAvKiBSZXNvdXJjZUxvYWROb3RpZmllci5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJNkI2OTNBMkUxQzUxQTgyRTAwQjAzQkVGIC8qIFJlc291cmNlTG9hZE9i
c2VydmVyLmggaW4gSGVhZGVycyAqLywKKwkJCQk4MzFCNjE3NzI0OTlBNUJGMDBDMDdDNzkgLyog
V2ViS2l0T2ZmbGluZUF1ZGlvQ29udGV4dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTQyOTVGQTQx
MkIwNjE0RTAwRDFBQ0UwIC8qIFJlc291cmNlTG9hZFByaW9yaXR5LmggaW4gSGVhZGVycyAqLywK
IAkJCQk3QTkyOUNBNzFDNTk4QUE5MDA0REYyMjYgLyogUmVzb3VyY2VMb2FkU3RhdGlzdGljcy5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJN0VFNjg0NkQxMkQyNkUzODAwRTc5NDE1IC8qIFJlc291cmNl
UmVxdWVzdC5oIGluIEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9XZWJDb3JlQnVpbHRpbk5hbWVzLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9XZWJDb3JlQnVpbHRpbk5hbWVzLmgKaW5kZXggYzkxYjRkZmFkNzEuLjNlYjYyYjJhODFlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9XZWJDb3JlQnVpbHRpbk5hbWVz
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvV2ViQ29yZUJ1aWx0aW5OYW1lcy5o
CkBAIC00OSw2ICs0OSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBtYWNybyhBcHBsZVBh
eVNldHVwRmVhdHVyZSkgXAogICAgIG1hY3JvKEF0dGFjaG1lbnRFbGVtZW50KSBcCiAgICAgbWFj
cm8oQXVkaW8pIFwKKyAgICBtYWNybyhBdWRpb0NvbnRleHQpIFwKICAgICBtYWNybyhBdXRoZW50
aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2UpIFwKICAgICBtYWNybyhBdXRoZW50aWNhdG9yQXR0ZXN0
YXRpb25SZXNwb25zZSkgXAogICAgIG1hY3JvKEF1dGhlbnRpY2F0b3JSZXNwb25zZSkgXApAQCAt
MTY1LDkgKzE2NiwxMSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgbWFjcm8oTmF2aWdhdG9y
Q3JlZGVudGlhbHMpIFwKICAgICBtYWNybyhOYXZpZ2F0b3JNZWRpYURldmljZXMpIFwKICAgICBt
YWNybyhOYXZpZ2F0b3JVc2VyTWVkaWEpIFwKKyAgICBtYWNybyhPZmZsaW5lQXVkaW9Db250ZXh0
KSBcCiAgICAgbWFjcm8oT2Zmc2NyZWVuQ2FudmFzKSBcCiAgICAgbWFjcm8oT2Zmc2NyZWVuQ2Fu
dmFzUmVuZGVyaW5nQ29udGV4dDJEKSBcCiAgICAgbWFjcm8oUGFpbnRSZW5kZXJpbmdDb250ZXh0
MkQpIFwKKyAgICBtYWNybyhQYW5uZXJOb2RlKSBcCiAgICAgbWFjcm8oUGF5bWVudEFkZHJlc3Mp
IFwKICAgICBtYWNybyhQYXltZW50TWV0aG9kQ2hhbmdlRXZlbnQpIFwKICAgICBtYWNybyhQYXlt
ZW50UmVxdWVzdCkgXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50VGFyZ2V0
RmFjdG9yeS5pbiBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudFRhcmdldEZhY3RvcnkuaW4KaW5k
ZXggZmMxZGIyY2UwZTAuLmExNTRiNDQ1YTEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9k
b20vRXZlbnRUYXJnZXRGYWN0b3J5LmluCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudFRh
cmdldEZhY3RvcnkuaW4KQEAgLTUzLDYgKzUzLDcgQEAgVmlkZW9UcmFja0xpc3QgY29uZGl0aW9u
YWw9VklERU8KIFZpc3VhbFZpZXdwb3J0CiBXZWJBbmltYXRpb24KIFdlYkdQVURldmljZSBjb25k
aXRpb25hbD1XRUJHUFUKK1dlYktpdEF1ZGlvQ29udGV4dCBjb25kaXRpb25hbD1XRUJfQVVESU8K
IFdlYktpdE1lZGlhS2V5U2Vzc2lvbiBjb25kaXRpb25hbD1MRUdBQ1lfRU5DUllQVEVEX01FRElB
CiBXZWJTb2NrZXQKIFdvcmtlcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9TZXR0
aW5ncy55YW1sIGIvU291cmNlL1dlYkNvcmUvcGFnZS9TZXR0aW5ncy55YW1sCmluZGV4IDJkNmJj
NmZmMmVmLi41ODNmYzZmNzk1ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9TZXR0
aW5ncy55YW1sCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3MueWFtbApAQCAtMjU1
LDYgKzI1NSw4IEBAIGxvYWREZWZlcnJpbmdFbmFibGVkOgogICBpbml0aWFsOiB0cnVlCiB3ZWJB
dWRpb0VuYWJsZWQ6CiAgIGluaXRpYWw6IGZhbHNlCittb2Rlcm5VbnByZWZpeGVkV2ViQXVkaW9F
bmFibGVkOgorICBpbml0aWFsOiBmYWxzZQogcGFnaW5hdGVEdXJpbmdMYXlvdXRFbmFibGVkOgog
ICBpbml0aWFsOiBmYWxzZQogZnVsbFNjcmVlbkVuYWJsZWQ6CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9XZWJQcmVmZXJlbmNlcy55YW1sIGIvU291cmNlL1dlYktpdC9TaGFyZWQv
V2ViUHJlZmVyZW5jZXMueWFtbAppbmRleCBmYWQxYTlmNTg4Ni4uNTIzNWNlNzFmZjcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlByZWZlcmVuY2VzLnlhbWwKKysrIGIvU291
cmNlL1dlYktpdC9TaGFyZWQvV2ViUHJlZmVyZW5jZXMueWFtbApAQCAtMzM0LDYgKzMzNCwxNCBA
QCBXZWJBdWRpb0VuYWJsZWQ6CiAgIGRlZmF1bHRWYWx1ZTogdHJ1ZQogICBjb25kaXRpb246IEVO
QUJMRShXRUJfQVVESU8pCiAKK01vZGVyblVucHJlZml4ZWRXZWJBdWRpb0VuYWJsZWQ6CisgIHR5
cGU6IGJvb2wKKyAgZGVmYXVsdFZhbHVlOiBmYWxzZQorICBjb25kaXRpb246IEVOQUJMRShXRUJf
QVVESU8pCisgIGh1bWFuUmVhZGFibGVOYW1lOiAiTW9kZXJuIFdlYkF1ZGlvIEFQSSIKKyAgaHVt
YW5SZWFkYWJsZURlc2NyaXB0aW9uOiAiTW9kZXJuIGFuZCB1bnByZWZpeGVkIFdlYkF1ZGlvIEFQ
SSIKKyAgY2F0ZWdvcnk6IGV4cGVyaW1lbnRhbAorCiBBdHRhY2htZW50RWxlbWVudEVuYWJsZWQ6
CiAgIHR5cGU6IGJvb2wKICAgZGVmYXVsdFZhbHVlOiBmYWxzZQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>402092</attachid>
            <date>2020-06-17 01:45:59 -0700</date>
            <delta_ts>2020-06-17 09:27:20 -0700</delta_ts>
            <desc>WIP Patch</desc>
            <filename>213268_wip.patch</filename>
            <type>text/plain</type>
            <size>201975</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dlYkNv
cmUvQ01ha2VMaXN0cy50eHQKaW5kZXggOTc1OTQ4OTVkOGMuLmNiZWM5ZWMwOWY1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9D
TWFrZUxpc3RzLnR4dApAQCAtNDMzLDYgKzQzMyw3IEBAIHNldChXZWJDb3JlX05PTl9TVkdfSURM
X0ZJTEVTCiAgICAgTW9kdWxlcy93ZWJhdWRpby9BdWRpb0J1ZmZlckNhbGxiYWNrLmlkbAogICAg
IE1vZHVsZXMvd2ViYXVkaW8vQXVkaW9CdWZmZXJTb3VyY2VOb2RlLmlkbAogICAgIE1vZHVsZXMv
d2ViYXVkaW8vQXVkaW9Db250ZXh0LmlkbAorICAgIE1vZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250
ZXh0U3RhdGUuaWRsCiAgICAgTW9kdWxlcy93ZWJhdWRpby9BdWRpb0Rlc3RpbmF0aW9uTm9kZS5p
ZGwKICAgICBNb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvTGlzdGVuZXIuaWRsCiAgICAgTW9kdWxlcy93
ZWJhdWRpby9BdWRpb05vZGUuaWRsCkBAIC00NTUsNiArNDU2LDkgQEAgc2V0KFdlYkNvcmVfTk9O
X1NWR19JRExfRklMRVMKICAgICBNb2R1bGVzL3dlYmF1ZGlvL1BlcmlvZGljV2F2ZS5pZGwKICAg
ICBNb2R1bGVzL3dlYmF1ZGlvL1NjcmlwdFByb2Nlc3Nvck5vZGUuaWRsCiAgICAgTW9kdWxlcy93
ZWJhdWRpby9XYXZlU2hhcGVyTm9kZS5pZGwKKyAgICBNb2R1bGVzL3dlYmF1ZGlvL1dlYktpdEF1
ZGlvQ29udGV4dC5pZGwKKyAgICBNb2R1bGVzL3dlYmF1ZGlvL1dlYktpdEF1ZGlvUGFubmVyTm9k
ZS5pZGwKKyAgICBNb2R1bGVzL3dlYmF1ZGlvL1dlYktpdE9mZmxpbmVBdWRpb0NvbnRleHQuaWRs
CiAKICAgICBNb2R1bGVzL3dlYmF1dGhuL0F0dGVzdGF0aW9uQ29udmV5YW5jZVByZWZlcmVuY2Uu
aWRsCiAgICAgTW9kdWxlcy93ZWJhdXRobi9BdXRoZW50aWNhdGlvbkV4dGVuc2lvbnNDbGllbnRJ
bnB1dHMuaWRsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy1pbnB1
dC54Y2ZpbGVsaXN0IGIvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMtaW5wdXQueGNmaWxl
bGlzdAppbmRleCA2YTdhYTdkMTRlYi4uMDRhMzM3OGJkYmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLWlucHV0LnhjZmlsZWxpc3QKKysrIGIvU291cmNlL1dlYkNv
cmUvRGVyaXZlZFNvdXJjZXMtaW5wdXQueGNmaWxlbGlzdApAQCAtMzIyLDYgKzMyMiw3IEBAICQo
UFJPSkVDVF9ESVIpL01vZHVsZXMvd2ViYXVkaW8vUGFubmVyTm9kZS5pZGwKICQoUFJPSkVDVF9E
SVIpL01vZHVsZXMvd2ViYXVkaW8vUGVyaW9kaWNXYXZlLmlkbAogJChQUk9KRUNUX0RJUikvTW9k
dWxlcy93ZWJhdWRpby9TY3JpcHRQcm9jZXNzb3JOb2RlLmlkbAogJChQUk9KRUNUX0RJUikvTW9k
dWxlcy93ZWJhdWRpby9XYXZlU2hhcGVyTm9kZS5pZGwKKyQoUFJPSkVDVF9ESVIpL01vZHVsZXMv
d2ViYXVkaW8vV2ViS2l0QXVkaW9Db250ZXh0LmlkbAogJChQUk9KRUNUX0RJUikvTW9kdWxlcy93
ZWJhdXRobi9BdHRlc3RhdGlvbkNvbnZleWFuY2VQcmVmZXJlbmNlLmlkbAogJChQUk9KRUNUX0RJ
UikvTW9kdWxlcy93ZWJhdXRobi9BdXRoZW50aWNhdGlvbkV4dGVuc2lvbnNDbGllbnRJbnB1dHMu
aWRsCiAkKFBST0pFQ1RfRElSKS9Nb2R1bGVzL3dlYmF1dGhuL0F1dGhlbnRpY2F0aW9uRXh0ZW5z
aW9uc0NsaWVudE91dHB1dHMuaWRsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVk
U291cmNlcy5tYWtlIGIvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQppbmRleCBk
MjY3MDg5ZTM4Ny4uMDY5ZTIwNTI2NzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0Rlcml2
ZWRTb3VyY2VzLm1ha2UKKysrIGIvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQpA
QCAtMzgzLDYgKzM4Myw3IEBAIEpTX0JJTkRJTkdfSURMUyA9IFwKICAgICAkKFdlYkNvcmUpL01v
ZHVsZXMvd2ViYXVkaW8vQXVkaW9CdWZmZXJDYWxsYmFjay5pZGwgXAogICAgICQoV2ViQ29yZSkv
TW9kdWxlcy93ZWJhdWRpby9BdWRpb0J1ZmZlclNvdXJjZU5vZGUuaWRsIFwKICAgICAkKFdlYkNv
cmUpL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0LmlkbCBcCisgICAgJChXZWJDb3JlKS9N
b2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQ29udGV4dFN0YXRlLmlkbCBcCiAgICAgJChXZWJDb3JlKS9N
b2R1bGVzL3dlYmF1ZGlvL0F1ZGlvRGVzdGluYXRpb25Ob2RlLmlkbCBcCiAgICAgJChXZWJDb3Jl
KS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvTGlzdGVuZXIuaWRsIFwKICAgICAkKFdlYkNvcmUpL01v
ZHVsZXMvd2ViYXVkaW8vQXVkaW9Ob2RlLmlkbCBcCkBAIC00MDUsNiArNDA2LDkgQEAgSlNfQklO
RElOR19JRExTID0gXAogICAgICQoV2ViQ29yZSkvTW9kdWxlcy93ZWJhdWRpby9QZXJpb2RpY1dh
dmUuaWRsIFwKICAgICAkKFdlYkNvcmUpL01vZHVsZXMvd2ViYXVkaW8vU2NyaXB0UHJvY2Vzc29y
Tm9kZS5pZGwgXAogICAgICQoV2ViQ29yZSkvTW9kdWxlcy93ZWJhdWRpby9XYXZlU2hhcGVyTm9k
ZS5pZGwgXAorICAgICQoV2ViQ29yZSkvTW9kdWxlcy93ZWJhdWRpby9XZWJLaXRBdWRpb0NvbnRl
eHQuaWRsIFwKKyAgICAkKFdlYkNvcmUpL01vZHVsZXMvd2ViYXVkaW8vV2ViS2l0QXVkaW9QYW5u
ZXJOb2RlLmlkbCBcCisgICAgJChXZWJDb3JlKS9Nb2R1bGVzL3dlYmF1ZGlvL1dlYktpdE9mZmxp
bmVBdWRpb0NvbnRleHQuaWRsIFwKICAgICAkKFdlYkNvcmUpL01vZHVsZXMvd2ViYXV0aG4vQXR0
ZXN0YXRpb25Db252ZXlhbmNlUHJlZmVyZW5jZS5pZGwgXAogICAgICQoV2ViQ29yZSkvTW9kdWxl
cy93ZWJhdXRobi9BdXRoZW50aWNhdGlvbkV4dGVuc2lvbnNDbGllbnRJbnB1dHMuaWRsIFwKICAg
ICAkKFdlYkNvcmUpL01vZHVsZXMvd2ViYXV0aG4vQXV0aGVudGljYXRpb25FeHRlbnNpb25zQ2xp
ZW50T3V0cHV0cy5pZGwgXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJh
dWRpby9BbmFseXNlck5vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9B
bmFseXNlck5vZGUuY3BwCmluZGV4IDE3OTg3MDcwMWY4Li4yMTVkZTMyMWU5YSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BbmFseXNlck5vZGUuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQW5hbHlzZXJOb2RlLmNwcApAQCAtMzYs
NyArMzYsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFdURl9NQUtFX0lTT19BTExPQ0FURURf
SU1QTChBbmFseXNlck5vZGUpOwogCi1BbmFseXNlck5vZGU6OkFuYWx5c2VyTm9kZShBdWRpb0Nv
bnRleHQmIGNvbnRleHQsIGZsb2F0IHNhbXBsZVJhdGUpCitBbmFseXNlck5vZGU6OkFuYWx5c2Vy
Tm9kZShBdWRpb0NvbnRleHRCYXNlJiBjb250ZXh0LCBmbG9hdCBzYW1wbGVSYXRlKQogICAgIDog
QXVkaW9CYXNpY0luc3BlY3Rvck5vZGUoY29udGV4dCwgc2FtcGxlUmF0ZSwgMikKIHsKICAgICBz
ZXROb2RlVHlwZShOb2RlVHlwZUFuYWx5c2VyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViYXVkaW8vQW5hbHlzZXJOb2RlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmF1ZGlvL0FuYWx5c2VyTm9kZS5oCmluZGV4IGRhMWI1ZTg5Y2EyLi5hNDAyM2EzMGRlYSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BbmFseXNlck5vZGUu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0FuYWx5c2VyTm9kZS5oCkBA
IC0zMiw3ICszMiw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIEFuYWx5c2VyTm9kZSBm
aW5hbCA6IHB1YmxpYyBBdWRpb0Jhc2ljSW5zcGVjdG9yTm9kZSB7CiAgICAgV1RGX01BS0VfSVNP
X0FMTE9DQVRFRChBbmFseXNlck5vZGUpOwogcHVibGljOgotICAgIHN0YXRpYyBSZWY8QW5hbHlz
ZXJOb2RlPiBjcmVhdGUoQXVkaW9Db250ZXh0JiBjb250ZXh0LCBmbG9hdCBzYW1wbGVSYXRlKQor
ICAgIHN0YXRpYyBSZWY8QW5hbHlzZXJOb2RlPiBjcmVhdGUoQXVkaW9Db250ZXh0QmFzZSYgY29u
dGV4dCwgZmxvYXQgc2FtcGxlUmF0ZSkKICAgICB7CiAgICAgICAgIHJldHVybiBhZG9wdFJlZigq
bmV3IEFuYWx5c2VyTm9kZShjb250ZXh0LCBzYW1wbGVSYXRlKSk7CiAgICAgfQpAQCAtNTgsNyAr
NTgsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBnZXRCeXRlVGltZURvbWFpbkRhdGEoY29uc3QgUmVm
UHRyPEpTQzo6VWludDhBcnJheT4mIGFycmF5KSB7IG1fYW5hbHlzZXIuZ2V0Qnl0ZVRpbWVEb21h
aW5EYXRhKGFycmF5LmdldCgpKTsgfQogCiBwcml2YXRlOgotICAgIEFuYWx5c2VyTm9kZShBdWRp
b0NvbnRleHQmLCBmbG9hdCBzYW1wbGVSYXRlKTsKKyAgICBBbmFseXNlck5vZGUoQXVkaW9Db250
ZXh0QmFzZSYsIGZsb2F0IHNhbXBsZVJhdGUpOwogCiAgICAgdm9pZCBwcm9jZXNzKHNpemVfdCBm
cmFtZXNUb1Byb2Nlc3MpIGZpbmFsOwogICAgIHZvaWQgcmVzZXQoKSBmaW5hbDsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9CYXNpY0luc3BlY3Rvck5v
ZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0Jhc2ljSW5zcGVj
dG9yTm9kZS5jcHAKaW5kZXggMGZiNTViMDhmMGMuLjE0NTNkYWNhZmRhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQmFzaWNJbnNwZWN0b3JOb2RlLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQmFzaWNJbnNwZWN0
b3JOb2RlLmNwcApAQCAtMzYsNyArMzYsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFdURl9N
QUtFX0lTT19BTExPQ0FURURfSU1QTChBdWRpb0Jhc2ljSW5zcGVjdG9yTm9kZSk7CiAKLUF1ZGlv
QmFzaWNJbnNwZWN0b3JOb2RlOjpBdWRpb0Jhc2ljSW5zcGVjdG9yTm9kZShBdWRpb0NvbnRleHQm
IGNvbnRleHQsIGZsb2F0IHNhbXBsZVJhdGUsIHVuc2lnbmVkIG91dHB1dENoYW5uZWxDb3VudCkK
K0F1ZGlvQmFzaWNJbnNwZWN0b3JOb2RlOjpBdWRpb0Jhc2ljSW5zcGVjdG9yTm9kZShBdWRpb0Nv
bnRleHRCYXNlJiBjb250ZXh0LCBmbG9hdCBzYW1wbGVSYXRlLCB1bnNpZ25lZCBvdXRwdXRDaGFu
bmVsQ291bnQpCiAgICAgOiBBdWRpb05vZGUoY29udGV4dCwgc2FtcGxlUmF0ZSkKIHsKICAgICBz
ZXROb2RlVHlwZShOb2RlVHlwZUJhc2ljSW5zcGVjdG9yKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9CYXNpY0luc3BlY3Rvck5vZGUuaCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9CYXNpY0luc3BlY3Rvck5vZGUuaAppbmRl
eCA4MGUwOGQyOTYxNy4uZTc2OWU0NmFlMjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViYXVkaW8vQXVkaW9CYXNpY0luc3BlY3Rvck5vZGUuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQmFzaWNJbnNwZWN0b3JOb2RlLmgKQEAgLTM0LDcg
KzM0LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgQXVkaW9CYXNpY0luc3BlY3Rvck5v
ZGUgOiBwdWJsaWMgQXVkaW9Ob2RlIHsKICAgICBXVEZfTUFLRV9JU09fQUxMT0NBVEVEKEF1ZGlv
QmFzaWNJbnNwZWN0b3JOb2RlKTsKIHB1YmxpYzoKLSAgICBBdWRpb0Jhc2ljSW5zcGVjdG9yTm9k
ZShBdWRpb0NvbnRleHQmLCBmbG9hdCBzYW1wbGVSYXRlLCB1bnNpZ25lZCBvdXRwdXRDaGFubmVs
Q291bnQpOworICAgIEF1ZGlvQmFzaWNJbnNwZWN0b3JOb2RlKEF1ZGlvQ29udGV4dEJhc2UmLCBm
bG9hdCBzYW1wbGVSYXRlLCB1bnNpZ25lZCBvdXRwdXRDaGFubmVsQ291bnQpOwogCiBwcml2YXRl
OgogICAgIHZvaWQgcHVsbElucHV0cyhzaXplX3QgZnJhbWVzVG9Qcm9jZXNzKSBvdmVycmlkZTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9CYXNpY1By
b2Nlc3Nvck5vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0Jh
c2ljUHJvY2Vzc29yTm9kZS5jcHAKaW5kZXggMGI5ZjFjZWQ4NzQuLmY3Yjc5NmJlNTU1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQmFzaWNQcm9jZXNz
b3JOb2RlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQmFz
aWNQcm9jZXNzb3JOb2RlLmNwcApAQCAtMzksNyArMzksNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKIFdURl9NQUtFX0lTT19BTExPQ0FURURfSU1QTChBdWRpb0Jhc2ljUHJvY2Vzc29yTm9kZSk7
CiAKLUF1ZGlvQmFzaWNQcm9jZXNzb3JOb2RlOjpBdWRpb0Jhc2ljUHJvY2Vzc29yTm9kZShBdWRp
b0NvbnRleHQmIGNvbnRleHQsIGZsb2F0IHNhbXBsZVJhdGUpCitBdWRpb0Jhc2ljUHJvY2Vzc29y
Tm9kZTo6QXVkaW9CYXNpY1Byb2Nlc3Nvck5vZGUoQXVkaW9Db250ZXh0QmFzZSYgY29udGV4dCwg
ZmxvYXQgc2FtcGxlUmF0ZSkKICAgICA6IEF1ZGlvTm9kZShjb250ZXh0LCBzYW1wbGVSYXRlKQog
ewogICAgIGFkZElucHV0KG1ha2VVbmlxdWU8QXVkaW9Ob2RlSW5wdXQ+KHRoaXMpKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9CYXNpY1Byb2Nlc3Nv
ck5vZGUuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9CYXNpY1Byb2Nl
c3Nvck5vZGUuaAppbmRleCA4MmNmZmRhNTlmMi4uZTE2MzczYmYwMjkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9CYXNpY1Byb2Nlc3Nvck5vZGUuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQmFzaWNQcm9jZXNzb3JO
b2RlLmgKQEAgLTM3LDcgKzM3LDcgQEAgY2xhc3MgQXVkaW9Qcm9jZXNzb3I7CiBjbGFzcyBBdWRp
b0Jhc2ljUHJvY2Vzc29yTm9kZSA6IHB1YmxpYyBBdWRpb05vZGUgewogICAgIFdURl9NQUtFX0lT
T19BTExPQ0FURUQoQXVkaW9CYXNpY1Byb2Nlc3Nvck5vZGUpOwogcHVibGljOgotICAgIEF1ZGlv
QmFzaWNQcm9jZXNzb3JOb2RlKEF1ZGlvQ29udGV4dCYsIGZsb2F0IHNhbXBsZVJhdGUpOworICAg
IEF1ZGlvQmFzaWNQcm9jZXNzb3JOb2RlKEF1ZGlvQ29udGV4dEJhc2UmLCBmbG9hdCBzYW1wbGVS
YXRlKTsKIAogICAgIC8vIEF1ZGlvTm9kZQogICAgIHZvaWQgcHJvY2VzcyhzaXplX3QgZnJhbWVz
VG9Qcm9jZXNzKSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViYXVkaW8vQXVkaW9CdWZmZXJTb3VyY2VOb2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViYXVkaW8vQXVkaW9CdWZmZXJTb3VyY2VOb2RlLmNwcAppbmRleCBjMzY2MWRlNTdkNy4u
MGMxYmE0ZTk0YTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8v
QXVkaW9CdWZmZXJTb3VyY2VOb2RlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmF1ZGlvL0F1ZGlvQnVmZmVyU291cmNlTm9kZS5jcHAKQEAgLTQ5LDEyICs0OSwxMiBAQCBjb25z
dCBkb3VibGUgRGVmYXVsdEdyYWluRHVyYXRpb24gPSAwLjAyMDsgLy8gMjBtcwogLy8gdG8gbWlu
aW1pemUgbGluZWFyIGludGVycG9sYXRpb24gYWxpYXNpbmcuCiBjb25zdCBkb3VibGUgTWF4UmF0
ZSA9IDEwMjQ7CiAKLVJlZjxBdWRpb0J1ZmZlclNvdXJjZU5vZGU+IEF1ZGlvQnVmZmVyU291cmNl
Tm9kZTo6Y3JlYXRlKEF1ZGlvQ29udGV4dCYgY29udGV4dCwgZmxvYXQgc2FtcGxlUmF0ZSkKK1Jl
ZjxBdWRpb0J1ZmZlclNvdXJjZU5vZGU+IEF1ZGlvQnVmZmVyU291cmNlTm9kZTo6Y3JlYXRlKEF1
ZGlvQ29udGV4dEJhc2UmIGNvbnRleHQsIGZsb2F0IHNhbXBsZVJhdGUpCiB7CiAgICAgcmV0dXJu
IGFkb3B0UmVmKCpuZXcgQXVkaW9CdWZmZXJTb3VyY2VOb2RlKGNvbnRleHQsIHNhbXBsZVJhdGUp
KTsKIH0KIAotQXVkaW9CdWZmZXJTb3VyY2VOb2RlOjpBdWRpb0J1ZmZlclNvdXJjZU5vZGUoQXVk
aW9Db250ZXh0JiBjb250ZXh0LCBmbG9hdCBzYW1wbGVSYXRlKQorQXVkaW9CdWZmZXJTb3VyY2VO
b2RlOjpBdWRpb0J1ZmZlclNvdXJjZU5vZGUoQXVkaW9Db250ZXh0QmFzZSYgY29udGV4dCwgZmxv
YXQgc2FtcGxlUmF0ZSkKICAgICA6IEF1ZGlvU2NoZWR1bGVkU291cmNlTm9kZShjb250ZXh0LCBz
YW1wbGVSYXRlKQogICAgICwgbV9idWZmZXIobnVsbHB0cikKICAgICAsIG1faXNMb29waW5nKGZh
bHNlKQpAQCAtNDEzLDcgKzQxMyw3IEBAIHZvaWQgQXVkaW9CdWZmZXJTb3VyY2VOb2RlOjpzZXRC
dWZmZXIoUmVmUHRyPEF1ZGlvQnVmZmVyPiYmIGJ1ZmZlcikKICAgICBERUJVR19MT0coTE9HSURF
TlRJRklFUik7CiAKICAgICAvLyBUaGUgY29udGV4dCBtdXN0IGJlIGxvY2tlZCBzaW5jZSBjaGFu
Z2luZyB0aGUgYnVmZmVyIGNhbiByZS1jb25maWd1cmUgdGhlIG51bWJlciBvZiBjaGFubmVscyB0
aGF0IGFyZSBvdXRwdXQuCi0gICAgQXVkaW9Db250ZXh0OjpBdXRvTG9ja2VyIGNvbnRleHRMb2Nr
ZXIoY29udGV4dCgpKTsKKyAgICBBdWRpb0NvbnRleHRCYXNlOjpBdXRvTG9ja2VyIGNvbnRleHRM
b2NrZXIoY29udGV4dCgpKTsKICAgICAKICAgICAvLyBUaGlzIHN5bmNocm9uaXplcyB3aXRoIHBy
b2Nlc3MoKS4KICAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG1fcHJvY2Vzc011dGV4KTsKQEAg
LTU1Nyw3ICs1NTcsNyBAQCBib29sIEF1ZGlvQnVmZmVyU291cmNlTm9kZTo6cHJvcGFnYXRlc1Np
bGVuY2UoKSBjb25zdAogICAgIHJldHVybiAhaXNQbGF5aW5nT3JTY2hlZHVsZWQoKSB8fCBoYXNG
aW5pc2hlZCgpIHx8ICFtX2J1ZmZlcjsKIH0KIAotdm9pZCBBdWRpb0J1ZmZlclNvdXJjZU5vZGU6
OnNldFBhbm5lck5vZGUoUGFubmVyTm9kZSogcGFubmVyTm9kZSkKK3ZvaWQgQXVkaW9CdWZmZXJT
b3VyY2VOb2RlOjpzZXRQYW5uZXJOb2RlKFBhbm5lck5vZGVCYXNlKiBwYW5uZXJOb2RlKQogewog
ICAgIGlmIChtX3Bhbm5lck5vZGUgIT0gcGFubmVyTm9kZSAmJiAhaGFzRmluaXNoZWQoKSkgewog
ICAgICAgICBpZiAocGFubmVyTm9kZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViYXVkaW8vQXVkaW9CdWZmZXJTb3VyY2VOb2RlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmF1ZGlvL0F1ZGlvQnVmZmVyU291cmNlTm9kZS5oCmluZGV4IDU0OGIyNmU3ZmE3Li42
MDExMzExOTlhNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9B
dWRpb0J1ZmZlclNvdXJjZU5vZGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1
ZGlvL0F1ZGlvQnVmZmVyU291cmNlTm9kZS5oCkBAIC0zMSw3ICszMSw3IEBACiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKIGNsYXNzIEF1ZGlvQnVmZmVyOwotY2xhc3MgUGFubmVyTm9kZTsKK2NsYXNz
IFBhbm5lck5vZGVCYXNlOwogCiAvLyBBdWRpb0J1ZmZlclNvdXJjZU5vZGUgaXMgYW4gQXVkaW9O
b2RlIHJlcHJlc2VudGluZyBhbiBhdWRpbyBzb3VyY2UgZnJvbSBhbiBpbi1tZW1vcnkgYXVkaW8g
YXNzZXQgcmVwcmVzZW50ZWQgYnkgYW4gQXVkaW9CdWZmZXIuCiAvLyBJdCBnZW5lcmFsbHkgd2ls
bCBiZSB1c2VkIGZvciBzaG9ydCBzb3VuZHMgd2hpY2ggcmVxdWlyZSBhIGhpZ2ggZGVncmVlIG9m
IHNjaGVkdWxpbmcgZmxleGliaWxpdHkgKGNhbiBwbGF5YmFjayBpbiByaHl0aG1pY2FsbHkgcGVy
ZmVjdCB3YXlzKS4KQEAgLTM5LDcgKzM5LDcgQEAgY2xhc3MgUGFubmVyTm9kZTsKIGNsYXNzIEF1
ZGlvQnVmZmVyU291cmNlTm9kZSBmaW5hbCA6IHB1YmxpYyBBdWRpb1NjaGVkdWxlZFNvdXJjZU5v
ZGUgewogICAgIFdURl9NQUtFX0lTT19BTExPQ0FURUQoQXVkaW9CdWZmZXJTb3VyY2VOb2RlKTsK
IHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPEF1ZGlvQnVmZmVyU291cmNlTm9kZT4gY3JlYXRlKEF1
ZGlvQ29udGV4dCYsIGZsb2F0IHNhbXBsZVJhdGUpOworICAgIHN0YXRpYyBSZWY8QXVkaW9CdWZm
ZXJTb3VyY2VOb2RlPiBjcmVhdGUoQXVkaW9Db250ZXh0QmFzZSYsIGZsb2F0IHNhbXBsZVJhdGUp
OwogCiAgICAgdmlydHVhbCB+QXVkaW9CdWZmZXJTb3VyY2VOb2RlKCk7CiAKQEAgLTc5LDcgKzc5
LDcgQEAgcHVibGljOgogICAgIEF1ZGlvUGFyYW0qIHBsYXliYWNrUmF0ZSgpIHsgcmV0dXJuIG1f
cGxheWJhY2tSYXRlLmdldCgpOyB9CiAKICAgICAvLyBJZiBhIHBhbm5lciBub2RlIGlzIHNldCwg
dGhlbiB3ZSBjYW4gaW5jb3Jwb3JhdGUgZG9wcGxlciBzaGlmdCBpbnRvIHRoZSBwbGF5YmFjayBw
aXRjaCByYXRlLgotICAgIHZvaWQgc2V0UGFubmVyTm9kZShQYW5uZXJOb2RlKik7CisgICAgdm9p
ZCBzZXRQYW5uZXJOb2RlKFBhbm5lck5vZGVCYXNlKik7CiAgICAgdm9pZCBjbGVhclBhbm5lck5v
ZGUoKTsKIAogICAgIC8vIElmIHdlIGFyZSBubyBsb25nZXIgcGxheWluZywgcHJvcG9nYXRlIHNp
bGVuY2UgYWhlYWQgdG8gZG93bnN0cmVhbSBub2Rlcy4KQEAgLTkxLDcgKzkxLDcgQEAgcHVibGlj
OgogICAgIGNvbnN0IGNoYXIqIGFjdGl2ZURPTU9iamVjdE5hbWUoKSBjb25zdCBvdmVycmlkZSB7
IHJldHVybiAiQXVkaW9CdWZmZXJTb3VyY2VOb2RlIjsgfQogCiBwcml2YXRlOgotICAgIEF1ZGlv
QnVmZmVyU291cmNlTm9kZShBdWRpb0NvbnRleHQmLCBmbG9hdCBzYW1wbGVSYXRlKTsKKyAgICBB
dWRpb0J1ZmZlclNvdXJjZU5vZGUoQXVkaW9Db250ZXh0QmFzZSYsIGZsb2F0IHNhbXBsZVJhdGUp
OwogCiAgICAgZG91YmxlIHRhaWxUaW1lKCkgY29uc3QgZmluYWwgeyByZXR1cm4gMDsgfQogICAg
IGRvdWJsZSBsYXRlbmN5VGltZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIDA7IH0KQEAgLTE0NSw3
ICsxNDUsNyBAQCBwcml2YXRlOgogCiAgICAgLy8gV2Ugb3B0aW9uYWxseSBrZWVwIHRyYWNrIG9m
IGEgcGFubmVyIG5vZGUgd2hpY2ggaGFzIGEgZG9wcGxlciBzaGlmdCB0aGF0IGlzIGluY29ycG9y
YXRlZCBpbnRvCiAgICAgLy8gdGhlIHBpdGNoIHJhdGUuIFdlIG1hbnVhbGx5IG1hbmFnZSByZWYt
Y291bnRpbmcgYmVjYXVzZSB3ZSB3YW50IHRvIHVzZSBSZWZUeXBlQ29ubmVjdGlvbi4KLSAgICBQ
YW5uZXJOb2RlKiBtX3Bhbm5lck5vZGU7CisgICAgUGFubmVyTm9kZUJhc2UqIG1fcGFubmVyTm9k
ZTsKIAogICAgIC8vIFRoaXMgc3luY2hyb25pemVzIHByb2Nlc3MoKSB3aXRoIHNldEJ1ZmZlcigp
IHdoaWNoIGNhbiBjYXVzZSBkeW5hbWljIGNoYW5uZWwgY291bnQgY2hhbmdlcy4KICAgICBtdXRh
YmxlIExvY2sgbV9wcm9jZXNzTXV0ZXg7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmF1ZGlvL0F1ZGlvQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmF1ZGlvL0F1ZGlvQ29udGV4dC5jcHAKaW5kZXggMzgyZGM3Y2YwY2QuLjRkYTBhMTQyMTFlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQ29udGV4dC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0NvbnRleHQuY3Bw
CkBAIC0xMDcsNyArMTA3LDcgQEAgY29uc3QgdW5zaWduZWQgTWF4UGVyaW9kaWNXYXZlTGVuZ3Ro
ID0gNDA5NjsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1XVEZfTUFLRV9JU09fQUxMT0NBVEVE
X0lNUEwoQXVkaW9Db250ZXh0KTsKK1dURl9NQUtFX0lTT19BTExPQ0FURURfSU1QTChBdWRpb0Nv
bnRleHRCYXNlKTsKIAogI2RlZmluZSBSRUxFQVNFX0xPR19JRl9BTExPV0VEKGZtdCwgLi4uKSBS
RUxFQVNFX0xPR19JRihkb2N1bWVudCgpICYmIGRvY3VtZW50KCktPnBhZ2UoKSAmJiBkb2N1bWVu
dCgpLT5wYWdlKCktPmlzQWx3YXlzT25Mb2dnaW5nQWxsb3dlZCgpLCBNZWRpYSwgIiVwIC0gQXVk
aW9Db250ZXh0OjoiIGZtdCwgdGhpcywgIyNfX1ZBX0FSR1NfXykKICAgICAKQEAgLTEzNyw5ICsx
MzcsMTQgQEAgRXhjZXB0aW9uT3I8UmVmPEF1ZGlvQ29udGV4dD4+IEF1ZGlvQ29udGV4dDo6Y3Jl
YXRlKERvY3VtZW50JiBkb2N1bWVudCkKICAgICByZXR1cm4gYXVkaW9Db250ZXh0OwogfQogCitB
dWRpb0NvbnRleHRCYXNlOjpBdWRpb0NvbnRleHRCYXNlKERvY3VtZW50JiBkb2N1bWVudCkKKyAg
ICA6IEFjdGl2ZURPTU9iamVjdChkb2N1bWVudCkKK3sKK30KKwogLy8gQ29uc3RydWN0b3IgZm9y
IHJlbmRlcmluZyB0byB0aGUgYXVkaW8gaGFyZHdhcmUuCiBBdWRpb0NvbnRleHQ6OkF1ZGlvQ29u
dGV4dChEb2N1bWVudCYgZG9jdW1lbnQpCi0gICAgOiBBY3RpdmVET01PYmplY3QoZG9jdW1lbnQp
CisgICAgOiBBdWRpb0NvbnRleHRCYXNlKGRvY3VtZW50KQogI2lmICFSRUxFQVNFX0xPR19ESVNB
QkxFRAogICAgICwgbV9sb2dnZXIoZG9jdW1lbnQubG9nZ2VyKCkpCiAgICAgLCBtX2xvZ0lkZW50
aWZpZXIodW5pcXVlTG9nSWRlbnRpZmllcigpKQpAQCAtMTY0LDcgKzE2OSw3IEBAIEF1ZGlvQ29u
dGV4dDo6QXVkaW9Db250ZXh0KERvY3VtZW50JiBkb2N1bWVudCkKIAogLy8gQ29uc3RydWN0b3Ig
Zm9yIG9mZmxpbmUgKG5vbi1yZWFsdGltZSkgcmVuZGVyaW5nLgogQXVkaW9Db250ZXh0OjpBdWRp
b0NvbnRleHQoRG9jdW1lbnQmIGRvY3VtZW50LCBBdWRpb0J1ZmZlciogcmVuZGVyVGFyZ2V0KQot
ICAgIDogQWN0aXZlRE9NT2JqZWN0KGRvY3VtZW50KQorICAgIDogQXVkaW9Db250ZXh0QmFzZShk
b2N1bWVudCkKICNpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKICAgICAsIG1fbG9nZ2VyKGRvY3Vt
ZW50LmxvZ2dlcigpKQogICAgICwgbV9sb2dJZGVudGlmaWVyKHVuaXF1ZUxvZ0lkZW50aWZpZXIo
KSkKQEAgLTM2Niw3ICszNzEsNyBAQCBjb25zdCBjaGFyKiBBdWRpb0NvbnRleHQ6OmFjdGl2ZURP
TU9iamVjdE5hbWUoKSBjb25zdAogICAgIHJldHVybiAiQXVkaW9Db250ZXh0IjsKIH0KIAotRG9j
dW1lbnQqIEF1ZGlvQ29udGV4dDo6ZG9jdW1lbnQoKSBjb25zdAorRG9jdW1lbnQqIEF1ZGlvQ29u
dGV4dEJhc2U6OmRvY3VtZW50KCkgY29uc3QKIHsKICAgICByZXR1cm4gZG93bmNhc3Q8RG9jdW1l
bnQ+KG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dCk7CiB9CkBAIC0xMDY4LDcgKzEwNzMsNyBAQCB2
b2lkIEF1ZGlvQ29udGV4dDo6cHJvY2Vzc0F1dG9tYXRpY1B1bGxOb2RlcyhzaXplX3QgZnJhbWVz
VG9Qcm9jZXNzKQogICAgICAgICBub2RlLT5wcm9jZXNzSWZOZWNlc3NhcnkoZnJhbWVzVG9Qcm9j
ZXNzKTsKIH0KIAotU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogQXVkaW9Db250ZXh0OjpzY3JpcHRF
eGVjdXRpb25Db250ZXh0KCkgY29uc3QKK1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIEF1ZGlvQ29u
dGV4dEJhc2U6OnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSBjb25zdAogewogICAgIHJldHVybiBB
Y3RpdmVET01PYmplY3Q6OnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0LmggYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQ29udGV4dC5oCmluZGV4IDhlMDk0Mzk0Y2Zm
Li5lMzI0Mzc1ZWRhOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRp
by9BdWRpb0NvbnRleHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1
ZGlvQ29udGV4dC5oCkBAIC0yOCw2ICsyOCw3IEBACiAjaW5jbHVkZSAiQWN0aXZlRE9NT2JqZWN0
LmgiCiAjaW5jbHVkZSAiQXN5bmNBdWRpb0RlY29kZXIuaCIKICNpbmNsdWRlICJBdWRpb0J1cy5o
IgorI2luY2x1ZGUgIkF1ZGlvQ29udGV4dFN0YXRlLmgiCiAjaW5jbHVkZSAiQXVkaW9EZXN0aW5h
dGlvbk5vZGUuaCIKICNpbmNsdWRlICJFdmVudFRhcmdldC5oIgogI2luY2x1ZGUgIk1lZGlhQ2Fu
U3RhcnRMaXN0ZW5lci5oIgpAQCAtNzksNDQgKzgwLDEzNiBAQCBjbGFzcyBXYXZlU2hhcGVyTm9k
ZTsKIAogdGVtcGxhdGU8dHlwZW5hbWUgSURMVHlwZT4gY2xhc3MgRE9NUHJvbWlzZURlZmVycmVk
OwogCi0vLyBBdWRpb0NvbnRleHQgaXMgdGhlIGNvcm5lcnN0b25lIG9mIHRoZSB3ZWIgYXVkaW8g
QVBJIGFuZCBhbGwgQXVkaW9Ob2RlcyBhcmUgY3JlYXRlZCBmcm9tIGl0LgotLy8gRm9yIHRocmVh
ZCBzYWZldHkgYmV0d2VlbiB0aGUgYXVkaW8gdGhyZWFkIGFuZCB0aGUgbWFpbiB0aHJlYWQsIGl0
IGhhcyBhIHJlbmRlcmluZyBncmFwaCBsb2NraW5nIG1lY2hhbmlzbS4gCi0KLWNsYXNzIEF1ZGlv
Q29udGV4dAorY2xhc3MgQXVkaW9Db250ZXh0QmFzZQogICAgIDogcHVibGljIEFjdGl2ZURPTU9i
amVjdAogICAgICwgcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPEF1ZGlvQ29udGV4dD4KICAg
ICAsIHB1YmxpYyBFdmVudFRhcmdldFdpdGhJbmxpbmVEYXRhCiAgICAgLCBwdWJsaWMgTWVkaWFD
YW5TdGFydExpc3RlbmVyCiAgICAgLCBwdWJsaWMgTWVkaWFQcm9kdWNlcgotICAgICwgcHJpdmF0
ZSBQbGF0Zm9ybU1lZGlhU2Vzc2lvbkNsaWVudAotICAgICwgcHJpdmF0ZSBWaXNpYmlsaXR5Q2hh
bmdlQ2xpZW50CiAjaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECi0gICAgLCBwcml2YXRlIExvZ2dl
ckhlbHBlcgorICAgICwgcHVibGljIExvZ2dlckhlbHBlcgorI2VuZGlmCit7CisgICAgV1RGX01B
S0VfSVNPX0FMTE9DQVRFRChBdWRpb0NvbnRleHRCYXNlKTsKK3B1YmxpYzoKKyAgICB2aXJ0dWFs
IH5BdWRpb0NvbnRleHRCYXNlKCkgPSBkZWZhdWx0OworCisgICAgLy8gUmVjb25jaWxlIHJlZi9k
ZXJlZiB3aGljaCBhcmUgZGVmaW5lZCBib3RoIGluIFRocmVhZFNhZmVSZWZDb3VudGVkIGFuZCBF
dmVudFRhcmdldC4KKyAgICB1c2luZyBUaHJlYWRTYWZlUmVmQ291bnRlZDo6cmVmOworICAgIHVz
aW5nIFRocmVhZFNhZmVSZWZDb3VudGVkOjpkZXJlZjsKKworICAgIERvY3VtZW50KiBkb2N1bWVu
dCgpIGNvbnN0OworCisgICAgdmlydHVhbCBib29sIGlzSW5pdGlhbGl6ZWQoKSBjb25zdCA9IDA7
CisKKyAgICB2aXJ0dWFsIHNpemVfdCBjdXJyZW50U2FtcGxlRnJhbWUoKSBjb25zdCA9IDA7Cisg
ICAgdmlydHVhbCBmbG9hdCBzYW1wbGVSYXRlKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgZG91
YmxlIGN1cnJlbnRUaW1lKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgYm9vbCBpc0dyYXBoT3du
ZXIoKSBjb25zdCA9IDA7CisKKyAgICB2aXJ0dWFsIHZvaWQgc2V0QXVkaW9UaHJlYWQoVGhyZWFk
JikgPSAwOworICAgIHZpcnR1YWwgYm9vbCBpc0F1ZGlvVGhyZWFkKCkgY29uc3QgPSAwOworICAg
IHZpcnR1YWwgYm9vbCBpc0F1ZGlvVGhyZWFkRmluaXNoZWQoKSA9IDA7CisKKyAgICB2aXJ0dWFs
IHZvaWQgaXNQbGF5aW5nQXVkaW9EaWRDaGFuZ2UoKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIG5v
ZGVXaWxsQmVnaW5QbGF5YmFjaygpID0gMDsKKworICAgIHZpcnR1YWwgdm9pZCBwb3N0VGFzayhX
VEY6OkZ1bmN0aW9uPHZvaWQoKT4mJikgPSAwOworICAgIHZpcnR1YWwgYm9vbCBpc1N0b3BwZWQo
KSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBjb25zdCBTZWN1cml0eU9yaWdpbiogb3JpZ2luKCkg
Y29uc3QgPSAwOworICAgIHZpcnR1YWwgdm9pZCBhZGRDb25zb2xlTWVzc2FnZShNZXNzYWdlU291
cmNlLCBNZXNzYWdlTGV2ZWwsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSkgPSAwOworCisgICAgdmly
dHVhbCB2b2lkIG1hcmtGb3JEZWxldGlvbihBdWRpb05vZGUmKSA9IDA7CisgICAgdmlydHVhbCB2
b2lkIGRlbGV0ZU1hcmtlZE5vZGVzKCkgPSAwOworCisgICAgdmlydHVhbCB2b2lkIGhhbmRsZVBy
ZVJlbmRlclRhc2tzKCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBoYW5kbGVQb3N0UmVuZGVyVGFz
a3MoKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHByb2Nlc3NBdXRvbWF0aWNQdWxsTm9kZXMoc2l6
ZV90IGZyYW1lc1RvUHJvY2VzcykgPSAwOworICAgIHZpcnR1YWwgdm9pZCBhZGREZWZlcnJlZEZp
bmlzaERlcmVmKEF1ZGlvTm9kZSopID0gMDsKKworICAgIHZpcnR1YWwgdm9pZCByZW1vdmVNYXJr
ZWRTdW1taW5nSnVuY3Rpb24oQXVkaW9TdW1taW5nSnVuY3Rpb24qKSA9IDA7CisgICAgdmlydHVh
bCB2b2lkIG1hcmtTdW1taW5nSnVuY3Rpb25EaXJ0eShBdWRpb1N1bW1pbmdKdW5jdGlvbiopID0g
MDsKKyAgICB2aXJ0dWFsIHZvaWQgbWFya0F1ZGlvTm9kZU91dHB1dERpcnR5KEF1ZGlvTm9kZU91
dHB1dCopID0gMDsKKworI2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRAorICAgIHZpcnR1YWwgY29u
c3Qgdm9pZCogbmV4dEF1ZGlvTm9kZUxvZ0lkZW50aWZpZXIoKSA9IDA7CisgICAgdmlydHVhbCBj
b25zdCB2b2lkKiBuZXh0QXVkaW9QYXJhbWV0ZXJMb2dJZGVudGlmaWVyKCkgPSAwOwogI2VuZGlm
CisKKyAgICB2aXJ0dWFsIHZvaWQgYWRkQXV0b21hdGljUHVsbE5vZGUoQXVkaW9Ob2RlJikgPSAw
OworICAgIHZpcnR1YWwgdm9pZCByZW1vdmVBdXRvbWF0aWNQdWxsTm9kZShBdWRpb05vZGUmKSA9
IDA7CisKKyAgICB2aXJ0dWFsIHZvaWQgbm90aWZ5Tm9kZUZpbmlzaGVkUHJvY2Vzc2luZyhBdWRp
b05vZGUqKSA9IDA7CisKKyAgICB2aXJ0dWFsIHZvaWQgZmluaXNoZWRSZW5kZXJpbmcoYm9vbCBk
aWRSZW5kZXJpbmcpID0gMDsKKworICAgIHZpcnR1YWwgdm9pZCBpbmNyZW1lbnRDb25uZWN0aW9u
Q291bnQoKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGluY3JlbWVudEFjdGl2ZVNvdXJjZUNvdW50
KCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBkZWNyZW1lbnRBY3RpdmVTb3VyY2VDb3VudCgpID0g
MDsKKworICAgIHZpcnR1YWwgYm9vbCBpc09mZmxpbmVDb250ZXh0KCkgY29uc3QgPSAwOworICAg
IHZpcnR1YWwgYm9vbCBpc0F1ZGlvQ29udGV4dCgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJv
b2wgaXNXZWJLaXRBdWRpb0NvbnRleHQoKSBjb25zdCA9IDA7CisKKyAgICAvLyBtdXN0UmVsZWFz
ZUxvY2sgaXMgc2V0IHRvIHRydWUgaWYgd2UgYWNxdWlyZWQgdGhlIGxvY2sgaW4gdGhpcyBtZXRo
b2QgY2FsbCBhbmQgY2FsbGVyIG11c3QgdW5sb2NrKCksIGZhbHNlIGlmIGl0IHdhcyBwcmV2aW91
c2x5IGFjcXVpcmVkLgorICAgIHZpcnR1YWwgdm9pZCBsb2NrKGJvb2wmIG11c3RSZWxlYXNlTG9j
aykgPSAwOworICAgIHZpcnR1YWwgYm9vbCB0cnlMb2NrKGJvb2wmIG11c3RSZWxlYXNlTG9jaykg
PSAwOworICAgIHZpcnR1YWwgdm9pZCB1bmxvY2soKSA9IDA7CisKKyAgICBjbGFzcyBBdXRvTG9j
a2VyIHsKKyAgICBwdWJsaWM6CisgICAgICAgIGV4cGxpY2l0IEF1dG9Mb2NrZXIoQXVkaW9Db250
ZXh0QmFzZSYgY29udGV4dCkKKyAgICAgICAgICAgIDogbV9jb250ZXh0KGNvbnRleHQpCisgICAg
ICAgIHsKKyAgICAgICAgICAgIG1fY29udGV4dC5sb2NrKG1fbXVzdFJlbGVhc2VMb2NrKTsKKyAg
ICAgICAgfQorCisgICAgICAgIH5BdXRvTG9ja2VyKCkKKyAgICAgICAgeworICAgICAgICAgICAg
aWYgKG1fbXVzdFJlbGVhc2VMb2NrKQorICAgICAgICAgICAgICAgIG1fY29udGV4dC51bmxvY2so
KTsKKyAgICAgICAgfQorCisgICAgcHJpdmF0ZToKKyAgICAgICAgQXVkaW9Db250ZXh0QmFzZSYg
bV9jb250ZXh0OworICAgICAgICBib29sIG1fbXVzdFJlbGVhc2VMb2NrOworICAgIH07CisKKyAg
ICAvLyBFdmVudFRhcmdldAorICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQoKSBjb25zdCBmaW5hbDsKKworcHJvdGVjdGVkOgorICAgIGV4cGxpY2l0IEF1
ZGlvQ29udGV4dEJhc2UoRG9jdW1lbnQmKTsKK307CisKKy8vIEF1ZGlvQ29udGV4dCBpcyB0aGUg
Y29ybmVyc3RvbmUgb2YgdGhlIHdlYiBhdWRpbyBBUEkgYW5kIGFsbCBBdWRpb05vZGVzIGFyZSBj
cmVhdGVkIGZyb20gaXQuCisvLyBGb3IgdGhyZWFkIHNhZmV0eSBiZXR3ZWVuIHRoZSBhdWRpbyB0
aHJlYWQgYW5kIHRoZSBtYWluIHRocmVhZCwgaXQgaGFzIGEgcmVuZGVyaW5nIGdyYXBoIGxvY2tp
bmcgbWVjaGFuaXNtLiAKKworY2xhc3MgQXVkaW9Db250ZXh0CisgICAgOiBwdWJsaWMgQXVkaW9D
b250ZXh0QmFzZQorICAgICwgcHJpdmF0ZSBQbGF0Zm9ybU1lZGlhU2Vzc2lvbkNsaWVudAorICAg
ICwgcHJpdmF0ZSBWaXNpYmlsaXR5Q2hhbmdlQ2xpZW50CiB7Ci0gICAgV1RGX01BS0VfSVNPX0FM
TE9DQVRFRChBdWRpb0NvbnRleHQpOwogcHVibGljOgogICAgIC8vIENyZWF0ZSBhbiBBdWRpb0Nv
bnRleHQgZm9yIHJlbmRlcmluZyB0byB0aGUgYXVkaW8gaGFyZHdhcmUuCiAgICAgc3RhdGljIEV4
Y2VwdGlvbk9yPFJlZjxBdWRpb0NvbnRleHQ+PiBjcmVhdGUoRG9jdW1lbnQmKTsKIAogICAgIHZp
cnR1YWwgfkF1ZGlvQ29udGV4dCgpOwogCi0gICAgYm9vbCBpc0luaXRpYWxpemVkKCkgY29uc3Q7
CisgICAgYm9vbCBpc0luaXRpYWxpemVkKCkgY29uc3QgZmluYWw7CiAgICAgCi0gICAgYm9vbCBp
c09mZmxpbmVDb250ZXh0KCkgY29uc3QgeyByZXR1cm4gbV9pc09mZmxpbmVDb250ZXh0OyB9Ci0K
LSAgICBEb2N1bWVudCogZG9jdW1lbnQoKSBjb25zdDsgLy8gQVNTRVJUcyBpZiBkb2N1bWVudCBu
byBsb25nZXIgZXhpc3RzLgorICAgIGJvb2wgaXNPZmZsaW5lQ29udGV4dCgpIGNvbnN0IGZpbmFs
IHsgcmV0dXJuIG1faXNPZmZsaW5lQ29udGV4dDsgfQogCiAgICAgRG9jdW1lbnRJZGVudGlmaWVy
IGhvc3RpbmdEb2N1bWVudElkZW50aWZpZXIoKSBjb25zdCBmaW5hbDsKIAogICAgIEF1ZGlvRGVz
dGluYXRpb25Ob2RlKiBkZXN0aW5hdGlvbigpIHsgcmV0dXJuIG1fZGVzdGluYXRpb25Ob2RlLmdl
dCgpOyB9Ci0gICAgc2l6ZV90IGN1cnJlbnRTYW1wbGVGcmFtZSgpIGNvbnN0IHsgcmV0dXJuIG1f
ZGVzdGluYXRpb25Ob2RlID8gbV9kZXN0aW5hdGlvbk5vZGUtPmN1cnJlbnRTYW1wbGVGcmFtZSgp
IDogMDsgfQotICAgIGRvdWJsZSBjdXJyZW50VGltZSgpIGNvbnN0IHsgcmV0dXJuIG1fZGVzdGlu
YXRpb25Ob2RlID8gbV9kZXN0aW5hdGlvbk5vZGUtPmN1cnJlbnRUaW1lKCkgOiAwLjsgfQotICAg
IGZsb2F0IHNhbXBsZVJhdGUoKSBjb25zdCB7IHJldHVybiBtX2Rlc3RpbmF0aW9uTm9kZSA/IG1f
ZGVzdGluYXRpb25Ob2RlLT5zYW1wbGVSYXRlKCkgOiAwLmY7IH0KKyAgICBzaXplX3QgY3VycmVu
dFNhbXBsZUZyYW1lKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9kZXN0aW5hdGlvbk5vZGUgPyBt
X2Rlc3RpbmF0aW9uTm9kZS0+Y3VycmVudFNhbXBsZUZyYW1lKCkgOiAwOyB9CisgICAgZG91Ymxl
IGN1cnJlbnRUaW1lKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9kZXN0aW5hdGlvbk5vZGUgPyBt
X2Rlc3RpbmF0aW9uTm9kZS0+Y3VycmVudFRpbWUoKSA6IDAuOyB9CisgICAgZmxvYXQgc2FtcGxl
UmF0ZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fZGVzdGluYXRpb25Ob2RlID8gbV9kZXN0aW5h
dGlvbk5vZGUtPnNhbXBsZVJhdGUoKSA6IDAuZjsgfQogICAgIHVuc2lnbmVkIGxvbmcgYWN0aXZl
U291cmNlQ291bnQoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDx1bnNpZ25lZCBsb25nPiht
X2FjdGl2ZVNvdXJjZUNvdW50KTsgfQogCi0gICAgdm9pZCBpbmNyZW1lbnRBY3RpdmVTb3VyY2VD
b3VudCgpOwotICAgIHZvaWQgZGVjcmVtZW50QWN0aXZlU291cmNlQ291bnQoKTsKKyAgICB2b2lk
IGluY3JlbWVudEFjdGl2ZVNvdXJjZUNvdW50KCkgZmluYWw7CisgICAgdm9pZCBkZWNyZW1lbnRB
Y3RpdmVTb3VyY2VDb3VudCgpIGZpbmFsOwogICAgIAogICAgIEV4Y2VwdGlvbk9yPFJlZjxBdWRp
b0J1ZmZlcj4+IGNyZWF0ZUJ1ZmZlcih1bnNpZ25lZCBudW1iZXJPZkNoYW5uZWxzLCBzaXplX3Qg
bnVtYmVyT2ZGcmFtZXMsIGZsb2F0IHNhbXBsZVJhdGUpOwogICAgIEV4Y2VwdGlvbk9yPFJlZjxB
dWRpb0J1ZmZlcj4+IGNyZWF0ZUJ1ZmZlcihBcnJheUJ1ZmZlciYsIGJvb2wgbWl4VG9Nb25vKTsK
QEAgLTEzMCw3ICsyMjMsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCByZXN1bWVSZW5kZXJpbmcoRE9N
UHJvbWlzZURlZmVycmVkPHZvaWQ+JiYpOwogICAgIHZvaWQgY2xvc2UoRE9NUHJvbWlzZURlZmVy
cmVkPHZvaWQ+JiYpOwogCi0gICAgZW51bSBjbGFzcyBTdGF0ZSB7IFN1c3BlbmRlZCwgUnVubmlu
ZywgSW50ZXJydXB0ZWQsIENsb3NlZCB9OworICAgIHVzaW5nIFN0YXRlID0gQXVkaW9Db250ZXh0
U3RhdGU7CiAgICAgU3RhdGUgc3RhdGUoKSBjb25zdDsKICAgICBib29sIGlzQ2xvc2VkKCkgY29u
c3QgeyByZXR1cm4gbV9zdGF0ZSA9PSBTdGF0ZTo6Q2xvc2VkOyB9CiAKQEAgLTE2MCwzMSArMjUz
LDMxIEBAIHB1YmxpYzoKICAgICBFeGNlcHRpb25PcjxSZWY8UGVyaW9kaWNXYXZlPj4gY3JlYXRl
UGVyaW9kaWNXYXZlKEZsb2F0MzJBcnJheSYgcmVhbCwgRmxvYXQzMkFycmF5JiBpbWFnaW5hcnkp
OwogCiAgICAgLy8gV2hlbiBhIHNvdXJjZSBub2RlIGhhcyBubyBtb3JlIHByb2Nlc3NpbmcgdG8g
ZG8gKGhhcyBmaW5pc2hlZCBwbGF5aW5nKSwgdGhlbiBpdCB0ZWxscyB0aGUgY29udGV4dCB0byBk
ZXJlZmVyZW5jZSBpdC4KLSAgICB2b2lkIG5vdGlmeU5vZGVGaW5pc2hlZFByb2Nlc3NpbmcoQXVk
aW9Ob2RlKik7CisgICAgdm9pZCBub3RpZnlOb2RlRmluaXNoZWRQcm9jZXNzaW5nKEF1ZGlvTm9k
ZSopIGZpbmFsOwogCiAgICAgLy8gQ2FsbGVkIGF0IHRoZSBzdGFydCBvZiBlYWNoIHJlbmRlciBx
dWFudHVtLgotICAgIHZvaWQgaGFuZGxlUHJlUmVuZGVyVGFza3MoKTsKKyAgICB2b2lkIGhhbmRs
ZVByZVJlbmRlclRhc2tzKCkgZmluYWw7CiAKICAgICAvLyBDYWxsZWQgYXQgdGhlIGVuZCBvZiBl
YWNoIHJlbmRlciBxdWFudHVtLgotICAgIHZvaWQgaGFuZGxlUG9zdFJlbmRlclRhc2tzKCk7Cisg
ICAgdm9pZCBoYW5kbGVQb3N0UmVuZGVyVGFza3MoKSBmaW5hbDsKIAogICAgIC8vIENhbGxlZCBw
ZXJpb2RpY2FsbHkgYXQgdGhlIGVuZCBvZiBlYWNoIHJlbmRlciBxdWFudHVtIHRvIGRlcmVmZXJl
bmNlIGZpbmlzaGVkIHNvdXJjZSBub2Rlcy4KICAgICB2b2lkIGRlcmVmRmluaXNoZWRTb3VyY2VO
b2RlcygpOwogCiAgICAgLy8gV2Ugc2NoZWR1bGUgZGVsZXRpb24gb2YgYWxsIG1hcmtlZCBub2Rl
cyBhdCB0aGUgZW5kIG9mIGVhY2ggcmVhbHRpbWUgcmVuZGVyIHF1YW50dW0uCi0gICAgdm9pZCBt
YXJrRm9yRGVsZXRpb24oQXVkaW9Ob2RlJik7Ci0gICAgdm9pZCBkZWxldGVNYXJrZWROb2Rlcygp
OworICAgIHZvaWQgbWFya0ZvckRlbGV0aW9uKEF1ZGlvTm9kZSYpIGZpbmFsOworICAgIHZvaWQg
ZGVsZXRlTWFya2VkTm9kZXMoKSBmaW5hbDsKIAogICAgIC8vIEF1ZGlvQ29udGV4dCBjYW4gcHVs
bCBub2RlKHMpIGF0IHRoZSBlbmQgb2YgZWFjaCByZW5kZXIgcXVhbnR1bSBldmVuIHdoZW4gdGhl
eSBhcmUgbm90IGNvbm5lY3RlZCB0byBhbnkgZG93bnN0cmVhbSBub2Rlcy4KICAgICAvLyBUaGVz
ZSB0d28gbWV0aG9kcyBhcmUgY2FsbGVkIGJ5IHRoZSBub2RlcyB3aG8gd2FudCB0byBhZGQvcmVt
b3ZlIHRoZW1zZWx2ZXMgaW50by9mcm9tIHRoZSBhdXRvbWF0aWMgcHVsbCBsaXN0cy4KLSAgICB2
b2lkIGFkZEF1dG9tYXRpY1B1bGxOb2RlKEF1ZGlvTm9kZSYpOwotICAgIHZvaWQgcmVtb3ZlQXV0
b21hdGljUHVsbE5vZGUoQXVkaW9Ob2RlJik7CisgICAgdm9pZCBhZGRBdXRvbWF0aWNQdWxsTm9k
ZShBdWRpb05vZGUmKSBmaW5hbDsKKyAgICB2b2lkIHJlbW92ZUF1dG9tYXRpY1B1bGxOb2RlKEF1
ZGlvTm9kZSYpIGZpbmFsOwogCiAgICAgLy8gQ2FsbGVkIHJpZ2h0IGJlZm9yZSBoYW5kbGVQb3N0
UmVuZGVyVGFza3MoKSB0byBoYW5kbGUgbm9kZXMgd2hpY2ggbmVlZCB0byBiZSBwdWxsZWQgZXZl
biB3aGVuIHRoZXkgYXJlIG5vdCBjb25uZWN0ZWQgdG8gYW55dGhpbmcuCi0gICAgdm9pZCBwcm9j
ZXNzQXV0b21hdGljUHVsbE5vZGVzKHNpemVfdCBmcmFtZXNUb1Byb2Nlc3MpOworICAgIHZvaWQg
cHJvY2Vzc0F1dG9tYXRpY1B1bGxOb2RlcyhzaXplX3QgZnJhbWVzVG9Qcm9jZXNzKSBmaW5hbDsK
IAogICAgIC8vIEtlZXBzIHRyYWNrIG9mIHRoZSBudW1iZXIgb2YgY29ubmVjdGlvbnMgbWFkZS4K
LSAgICB2b2lkIGluY3JlbWVudENvbm5lY3Rpb25Db3VudCgpCisgICAgdm9pZCBpbmNyZW1lbnRD
b25uZWN0aW9uQ291bnQoKSBmaW5hbAogICAgIHsKICAgICAgICAgQVNTRVJUKGlzTWFpblRocmVh
ZCgpKTsKICAgICAgICAgbV9jb25uZWN0aW9uQ291bnQrKzsKQEAgLTE5Niw2OSArMjg5LDQ2IEBA
IHB1YmxpYzoKICAgICAvLyBUaHJlYWQgU2FmZXR5IGFuZCBHcmFwaCBMb2NraW5nOgogICAgIC8v
CiAgICAgCi0gICAgdm9pZCBzZXRBdWRpb1RocmVhZChUaHJlYWQmIHRocmVhZCkgeyBtX2F1ZGlv
VGhyZWFkID0gJnRocmVhZDsgfSAvLyBGSVhNRTogY2hlY2sgZWl0aGVyIG5vdCBpbml0aWFsaXpl
ZCBvciB0aGUgc2FtZQorICAgIHZvaWQgc2V0QXVkaW9UaHJlYWQoVGhyZWFkJiB0aHJlYWQpIGZp
bmFsIHsgbV9hdWRpb1RocmVhZCA9ICZ0aHJlYWQ7IH0gLy8gRklYTUU6IGNoZWNrIGVpdGhlciBu
b3QgaW5pdGlhbGl6ZWQgb3IgdGhlIHNhbWUKICAgICBUaHJlYWQqIGF1ZGlvVGhyZWFkKCkgY29u
c3QgeyByZXR1cm4gbV9hdWRpb1RocmVhZDsgfQotICAgIGJvb2wgaXNBdWRpb1RocmVhZCgpIGNv
bnN0OworICAgIGJvb2wgaXNBdWRpb1RocmVhZCgpIGNvbnN0IGZpbmFsOwogCiAgICAgLy8gUmV0
dXJucyB0cnVlIG9ubHkgYWZ0ZXIgdGhlIGF1ZGlvIHRocmVhZCBoYXMgYmVlbiBzdGFydGVkIGFu
ZCB0aGVuIHNodXRkb3duLgotICAgIGJvb2wgaXNBdWRpb1RocmVhZEZpbmlzaGVkKCkgeyByZXR1
cm4gbV9pc0F1ZGlvVGhyZWFkRmluaXNoZWQ7IH0KKyAgICBib29sIGlzQXVkaW9UaHJlYWRGaW5p
c2hlZCgpIGZpbmFsIHsgcmV0dXJuIG1faXNBdWRpb1RocmVhZEZpbmlzaGVkOyB9CiAgICAgCiAg
ICAgLy8gbXVzdFJlbGVhc2VMb2NrIGlzIHNldCB0byB0cnVlIGlmIHdlIGFjcXVpcmVkIHRoZSBs
b2NrIGluIHRoaXMgbWV0aG9kIGNhbGwgYW5kIGNhbGxlciBtdXN0IHVubG9jaygpLCBmYWxzZSBp
ZiBpdCB3YXMgcHJldmlvdXNseSBhY3F1aXJlZC4KLSAgICB2b2lkIGxvY2soYm9vbCYgbXVzdFJl
bGVhc2VMb2NrKTsKKyAgICB2b2lkIGxvY2soYm9vbCYgbXVzdFJlbGVhc2VMb2NrKSBmaW5hbDsK
IAogICAgIC8vIFJldHVybnMgdHJ1ZSBpZiB3ZSBvd24gdGhlIGxvY2suCiAgICAgLy8gbXVzdFJl
bGVhc2VMb2NrIGlzIHNldCB0byB0cnVlIGlmIHdlIGFjcXVpcmVkIHRoZSBsb2NrIGluIHRoaXMg
bWV0aG9kIGNhbGwgYW5kIGNhbGxlciBtdXN0IHVubG9jaygpLCBmYWxzZSBpZiBpdCB3YXMgcHJl
dmlvdXNseSBhY3F1aXJlZC4KLSAgICBib29sIHRyeUxvY2soYm9vbCYgbXVzdFJlbGVhc2VMb2Nr
KTsKKyAgICBib29sIHRyeUxvY2soYm9vbCYgbXVzdFJlbGVhc2VMb2NrKSBmaW5hbDsKIAotICAg
IHZvaWQgdW5sb2NrKCk7CisgICAgdm9pZCB1bmxvY2soKSBmaW5hbDsKIAogICAgIC8vIFJldHVy
bnMgdHJ1ZSBpZiB0aGlzIHRocmVhZCBvd25zIHRoZSBjb250ZXh0J3MgbG9jay4KLSAgICBib29s
IGlzR3JhcGhPd25lcigpIGNvbnN0OworICAgIGJvb2wgaXNHcmFwaE93bmVyKCkgY29uc3QgZmlu
YWw7CiAKICAgICAvLyBSZXR1cm5zIHRoZSBtYXhpbXVtIG51bWJlciBvZiBjaGFubmVscyB3ZSBj
YW4gc3VwcG9ydC4KICAgICBzdGF0aWMgdW5zaWduZWQgbWF4TnVtYmVyT2ZDaGFubmVscygpIHsg
cmV0dXJuIE1heE51bWJlck9mQ2hhbm5lbHM7IH0KLQotICAgIGNsYXNzIEF1dG9Mb2NrZXIgewot
ICAgIHB1YmxpYzoKLSAgICAgICAgZXhwbGljaXQgQXV0b0xvY2tlcihBdWRpb0NvbnRleHQmIGNv
bnRleHQpCi0gICAgICAgICAgICA6IG1fY29udGV4dChjb250ZXh0KQotICAgICAgICB7Ci0gICAg
ICAgICAgICBtX2NvbnRleHQubG9jayhtX211c3RSZWxlYXNlTG9jayk7Ci0gICAgICAgIH0KLSAg
ICAgICAgCi0gICAgICAgIH5BdXRvTG9ja2VyKCkKLSAgICAgICAgewotICAgICAgICAgICAgaWYg
KG1fbXVzdFJlbGVhc2VMb2NrKQotICAgICAgICAgICAgICAgIG1fY29udGV4dC51bmxvY2soKTsK
LSAgICAgICAgfQotCi0gICAgcHJpdmF0ZToKLSAgICAgICAgQXVkaW9Db250ZXh0JiBtX2NvbnRl
eHQ7Ci0gICAgICAgIGJvb2wgbV9tdXN0UmVsZWFzZUxvY2s7Ci0gICAgfTsKICAgICAKICAgICAv
LyBJbiBBdWRpb05vZGU6OmRlcmVmKCkgYSB0cnlMb2NrKCkgaXMgdXNlZCBmb3IgY2FsbGluZyBm
aW5pc2hEZXJlZigpLCBidXQgaWYgaXQgZmFpbHMga2VlcCB0cmFjayBoZXJlLgotICAgIHZvaWQg
YWRkRGVmZXJyZWRGaW5pc2hEZXJlZihBdWRpb05vZGUqKTsKKyAgICB2b2lkIGFkZERlZmVycmVk
RmluaXNoRGVyZWYoQXVkaW9Ob2RlKikgZmluYWw7CiAKICAgICAvLyBJbiB0aGUgYXVkaW8gdGhy
ZWFkIGF0IHRoZSBzdGFydCBvZiBlYWNoIHJlbmRlciBjeWNsZSwgd2UnbGwgY2FsbCBoYW5kbGVE
ZWZlcnJlZEZpbmlzaERlcmVmcygpLgogICAgIHZvaWQgaGFuZGxlRGVmZXJyZWRGaW5pc2hEZXJl
ZnMoKTsKIAogICAgIC8vIE9ubHkgYWNjZXNzZWQgd2hlbiB0aGUgZ3JhcGggbG9jayBpcyBoZWxk
LgotICAgIHZvaWQgbWFya1N1bW1pbmdKdW5jdGlvbkRpcnR5KEF1ZGlvU3VtbWluZ0p1bmN0aW9u
Kik7Ci0gICAgdm9pZCBtYXJrQXVkaW9Ob2RlT3V0cHV0RGlydHkoQXVkaW9Ob2RlT3V0cHV0Kik7
CisgICAgdm9pZCBtYXJrU3VtbWluZ0p1bmN0aW9uRGlydHkoQXVkaW9TdW1taW5nSnVuY3Rpb24q
KSBmaW5hbDsKKyAgICB2b2lkIG1hcmtBdWRpb05vZGVPdXRwdXREaXJ0eShBdWRpb05vZGVPdXRw
dXQqKSBmaW5hbDsKIAogICAgIC8vIE11c3QgYmUgY2FsbGVkIG9uIG1haW4gdGhyZWFkLgotICAg
IHZvaWQgcmVtb3ZlTWFya2VkU3VtbWluZ0p1bmN0aW9uKEF1ZGlvU3VtbWluZ0p1bmN0aW9uKik7
CisgICAgdm9pZCByZW1vdmVNYXJrZWRTdW1taW5nSnVuY3Rpb24oQXVkaW9TdW1taW5nSnVuY3Rp
b24qKSBmaW5hbDsKIAogICAgIC8vIEV2ZW50VGFyZ2V0CiAgICAgRXZlbnRUYXJnZXRJbnRlcmZh
Y2UgZXZlbnRUYXJnZXRJbnRlcmZhY2UoKSBjb25zdCBmaW5hbCB7IHJldHVybiBBdWRpb0NvbnRl
eHRFdmVudFRhcmdldEludGVyZmFjZVR5cGU7IH0KIAotICAgIC8vIFJlY29uY2lsZSByZWYvZGVy
ZWYgd2hpY2ggYXJlIGRlZmluZWQgYm90aCBpbiBUaHJlYWRTYWZlUmVmQ291bnRlZCBhbmQgRXZl
bnRUYXJnZXQuCi0gICAgdXNpbmcgVGhyZWFkU2FmZVJlZkNvdW50ZWQ6OnJlZjsKLSAgICB1c2lu
ZyBUaHJlYWRTYWZlUmVmQ291bnRlZDo6ZGVyZWY7Ci0KICAgICB2b2lkIHN0YXJ0UmVuZGVyaW5n
KCk7Ci0gICAgdm9pZCBmaW5pc2hlZFJlbmRlcmluZyhib29sIGRpZFJlbmRlcmluZyk7CisgICAg
dm9pZCBmaW5pc2hlZFJlbmRlcmluZyhib29sIGRpZFJlbmRlcmluZykgZmluYWw7CiAKICAgICBz
dGF0aWMgdW5zaWduZWQgc19oYXJkd2FyZUNvbnRleHRDb3VudDsKIApAQCAtMjc0LDI1ICszNDQs
MjIgQEAgcHVibGljOgogICAgIHZvaWQgYWRkQmVoYXZpb3JSZXN0cmljdGlvbihCZWhhdmlvclJl
c3RyaWN0aW9ucyByZXN0cmljdGlvbikgeyBtX3Jlc3RyaWN0aW9ucyB8PSByZXN0cmljdGlvbjsg
fQogICAgIHZvaWQgcmVtb3ZlQmVoYXZpb3JSZXN0cmljdGlvbihCZWhhdmlvclJlc3RyaWN0aW9u
cyByZXN0cmljdGlvbikgeyBtX3Jlc3RyaWN0aW9ucyAmPSB+cmVzdHJpY3Rpb247IH0KIAotICAg
IHZvaWQgaXNQbGF5aW5nQXVkaW9EaWRDaGFuZ2UoKTsKKyAgICB2b2lkIGlzUGxheWluZ0F1ZGlv
RGlkQ2hhbmdlKCkgZmluYWw7CiAKLSAgICB2b2lkIG5vZGVXaWxsQmVnaW5QbGF5YmFjaygpOwor
ICAgIHZvaWQgbm9kZVdpbGxCZWdpblBsYXliYWNrKCkgZmluYWw7CiAKICNpZiAhUkVMRUFTRV9M
T0dfRElTQUJMRUQKICAgICBjb25zdCBMb2dnZXImIGxvZ2dlcigpIGNvbnN0IGZpbmFsIHsgcmV0
dXJuIG1fbG9nZ2VyLmdldCgpOyB9CiAgICAgY29uc3Qgdm9pZCogbG9nSWRlbnRpZmllcigpIGNv
bnN0IGZpbmFsIHsgcmV0dXJuIG1fbG9nSWRlbnRpZmllcjsgfQogICAgIFdURkxvZ0NoYW5uZWwm
IGxvZ0NoYW5uZWwoKSBjb25zdCBmaW5hbDsKLSAgICBjb25zdCB2b2lkKiBuZXh0QXVkaW9Ob2Rl
TG9nSWRlbnRpZmllcigpIHsgcmV0dXJuIGNoaWxkTG9nSWRlbnRpZmllcihtX2xvZ0lkZW50aWZp
ZXIsICsrbV9uZXh0QXVkaW9Ob2RlSWRlbnRpZmllcik7IH0KLSAgICBjb25zdCB2b2lkKiBuZXh0
QXVkaW9QYXJhbWV0ZXJMb2dJZGVudGlmaWVyKCkgeyByZXR1cm4gY2hpbGRMb2dJZGVudGlmaWVy
KG1fbG9nSWRlbnRpZmllciwgKyttX25leHRBdWRpb1BhcmFtZXRlcklkZW50aWZpZXIpOyB9Cisg
ICAgY29uc3Qgdm9pZCogbmV4dEF1ZGlvTm9kZUxvZ0lkZW50aWZpZXIoKSBmaW5hbCB7IHJldHVy
biBjaGlsZExvZ0lkZW50aWZpZXIobV9sb2dJZGVudGlmaWVyLCArK21fbmV4dEF1ZGlvTm9kZUlk
ZW50aWZpZXIpOyB9CisgICAgY29uc3Qgdm9pZCogbmV4dEF1ZGlvUGFyYW1ldGVyTG9nSWRlbnRp
ZmllcigpIGZpbmFsIHsgcmV0dXJuIGNoaWxkTG9nSWRlbnRpZmllcihtX2xvZ0lkZW50aWZpZXIs
ICsrbV9uZXh0QXVkaW9QYXJhbWV0ZXJJZGVudGlmaWVyKTsgfQogI2VuZGlmCiAKLSAgICB2b2lk
IHBvc3RUYXNrKFdURjo6RnVuY3Rpb248dm9pZCgpPiYmKTsKLSAgICBib29sIGlzU3RvcHBlZCgp
IGNvbnN0IHsgcmV0dXJuIG1faXNTdG9wU2NoZWR1bGVkOyB9Ci0gICAgY29uc3QgU2VjdXJpdHlP
cmlnaW4qIG9yaWdpbigpIGNvbnN0OwotICAgIHZvaWQgYWRkQ29uc29sZU1lc3NhZ2UoTWVzc2Fn
ZVNvdXJjZSwgTWVzc2FnZUxldmVsLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UpOwotCi0gICAgLy8g
RXZlbnRUYXJnZXQKLSAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25D
b250ZXh0KCkgY29uc3QgZmluYWw7CisgICAgdm9pZCBwb3N0VGFzayhXVEY6OkZ1bmN0aW9uPHZv
aWQoKT4mJikgZmluYWw7CisgICAgYm9vbCBpc1N0b3BwZWQoKSBjb25zdCBmaW5hbCB7IHJldHVy
biBtX2lzU3RvcFNjaGVkdWxlZDsgfQorICAgIGNvbnN0IFNlY3VyaXR5T3JpZ2luKiBvcmlnaW4o
KSBjb25zdCBmaW5hbDsKKyAgICB2b2lkIGFkZENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VTb3VyY2Us
IE1lc3NhZ2VMZXZlbCwgY29uc3QgU3RyaW5nJiBtZXNzYWdlKSBmaW5hbDsKIAogcHJvdGVjdGVk
OgogICAgIGV4cGxpY2l0IEF1ZGlvQ29udGV4dChEb2N1bWVudCYpOwpAQCAtMzYwLDYgKzQyNyw5
IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIHZpc2liaWxpdHlTdGF0ZUNoYW5nZWQoKSBmaW5hbDsK
IAorICAgIGJvb2wgaXNBdWRpb0NvbnRleHQoKSBjb25zdCBmaW5hbCB7IHJldHVybiB0cnVlOyB9
CisgICAgYm9vbCBpc1dlYktpdEF1ZGlvQ29udGV4dCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIGZh
bHNlOyB9CisKICAgICAvLyBFdmVudFRhcmdldAogICAgIHZvaWQgcmVmRXZlbnRUYXJnZXQoKSBv
dmVycmlkZSB7IHJlZigpOyB9CiAgICAgdm9pZCBkZXJlZkV2ZW50VGFyZ2V0KCkgb3ZlcnJpZGUg
eyBkZXJlZigpOyB9CkBAIC00NDYsMjEgKzUxNiwxMyBAQCBwcml2YXRlOgogICAgIFJlZlB0cjxQ
ZW5kaW5nQWN0aXZpdHk8QXVkaW9Db250ZXh0Pj4gbV9wZW5kaW5nQWN0aXZpdHk7CiB9OwogCi0v
LyBGSVhNRTogRmluZCBvdXQgd2h5IHRoZXNlID09LyE9IGZ1bmN0aW9ucyBhcmUgbmVlZGVkIGFu
ZCByZW1vdmUgdGhlbSBpZiBwb3NzaWJsZS4KLQotaW5saW5lIGJvb2wgb3BlcmF0b3I9PShjb25z
dCBBdWRpb0NvbnRleHQmIGxocywgY29uc3QgQXVkaW9Db250ZXh0JiByaHMpCi17Ci0gICAgcmV0
dXJuICZsaHMgPT0gJnJoczsKLX0KLQotaW5saW5lIGJvb2wgb3BlcmF0b3IhPShjb25zdCBBdWRp
b0NvbnRleHQmIGxocywgY29uc3QgQXVkaW9Db250ZXh0JiByaHMpCi17Ci0gICAgcmV0dXJuICZs
aHMgIT0gJnJoczsKLX0KLQogaW5saW5lIEF1ZGlvQ29udGV4dDo6U3RhdGUgQXVkaW9Db250ZXh0
OjpzdGF0ZSgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1fc3RhdGU7CiB9CiAKIH0gLy8gV2ViQ29y
ZQorCitTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0JFR0lOKFdlYkNvcmU6OkF1ZGlvQ29udGV4dCkK
KyAgICBzdGF0aWMgYm9vbCBpc1R5cGUoY29uc3QgV2ViQ29yZTo6QXVkaW9Db250ZXh0QmFzZSYg
Y29udGV4dCkgeyByZXR1cm4gY29udGV4dC5pc0F1ZGlvQ29udGV4dCgpOyB9CitTUEVDSUFMSVpF
X1RZUEVfVFJBSVRTX0VORCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmF1ZGlvL0F1ZGlvQ29udGV4dC5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlv
L0F1ZGlvQ29udGV4dC5pZGwKaW5kZXggMTIxMjRhMzY3NzcuLjgzZGIzYjRkNmIxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQ29udGV4dC5pZGwKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0NvbnRleHQuaWRsCkBAIC0y
MywyMiArMjMsMTQgQEAKICAqIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLWVudW0gQXVkaW9Db250ZXh0U3RhdGUgewot
ICAgICJzdXNwZW5kZWQiLAotICAgICJydW5uaW5nIiwKLSAgICAiaW50ZXJydXB0ZWQiLAotICAg
ICJjbG9zZWQiCi19OwotCiBbCiAgICAgQWN0aXZlRE9NT2JqZWN0LAogICAgIENvbmRpdGlvbmFs
PVdFQl9BVURJTywKICAgICBDb25zdHJ1Y3RvciwKICAgICBDb25zdHJ1Y3RvckNhbGxXaXRoPURv
Y3VtZW50LAogICAgIENvbnN0cnVjdG9yTWF5VGhyb3dFeGNlcHRpb24sCi0gICAgRW5hYmxlZEJ5
U2V0dGluZz1XZWJBdWRpbywKKyAgICBFbmFibGVkQnlTZXR0aW5nPU1vZGVyblVucHJlZml4ZWRX
ZWJBdWRpbywKICAgICBFeHBvcnRNYWNybz1XRUJDT1JFX0VYUE9SVCwKLSAgICBJbnRlcmZhY2VO
YW1lPXdlYmtpdEF1ZGlvQ29udGV4dCwKIF0gaW50ZXJmYWNlIEF1ZGlvQ29udGV4dCA6IEV2ZW50
VGFyZ2V0IHsKICAgICAvLyBBbGwgcmVuZGVyZWQgYXVkaW8gdWx0aW1hdGVseSBjb25uZWN0cyB0
byBkZXN0aW5hdGlvbiwgd2hpY2ggcmVwcmVzZW50cyB0aGUgYXVkaW8gaGFyZHdhcmUuCiAgICAg
cmVhZG9ubHkgYXR0cmlidXRlIEF1ZGlvRGVzdGluYXRpb25Ob2RlIGRlc3RpbmF0aW9uOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0NvbnRleHRTdGF0
ZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0NvbnRleHRTdGF0ZS5o
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi4xNjAxMzExMDhmYQotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250
ZXh0U3RhdGUuaApAQCAtMCwwICsxLDMyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIEdv
b2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYtMjAy
MCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUK
KyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTgorICogQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTCisgKiBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UK
KworbmFtZXNwYWNlIFdlYkNvcmUgeworCitlbnVtIGNsYXNzIEF1ZGlvQ29udGV4dFN0YXRlIHsg
U3VzcGVuZGVkLCBSdW5uaW5nLCBJbnRlcnJ1cHRlZCwgQ2xvc2VkIH07CisKK30KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0U3RhdGUuaWRs
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0NvbnRleHRTdGF0ZS5pZGwK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLmM4ZDA4YmQyYjU2Ci0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0NvbnRl
eHRTdGF0ZS5pZGwKQEAgLTAsMCArMSwzMSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCwg
R29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMSBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAq
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTgorICogQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
KyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTCisgKiBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCitlbnVtIEF1ZGlvQ29udGV4
dFN0YXRlIHsKKyAgICAic3VzcGVuZGVkIiwKKyAgICAicnVubmluZyIsCisgICAgImludGVycnVw
dGVkIiwKKyAgICAiY2xvc2VkIgorfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViYXVkaW8vQXVkaW9EZXN0aW5hdGlvbk5vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJhdWRpby9BdWRpb0Rlc3RpbmF0aW9uTm9kZS5jcHAKaW5kZXggZDlhYmI5Nzc3YTku
LjY3NzYxN2VjYjMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlv
L0F1ZGlvRGVzdGluYXRpb25Ob2RlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmF1ZGlvL0F1ZGlvRGVzdGluYXRpb25Ob2RlLmNwcApAQCAtMzksNyArMzksNyBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAgICAgCiBXVEZfTUFLRV9JU09fQUxMT0NBVEVEX0lNUEwoQXVkaW9EZXN0
aW5hdGlvbk5vZGUpOwogCi1BdWRpb0Rlc3RpbmF0aW9uTm9kZTo6QXVkaW9EZXN0aW5hdGlvbk5v
ZGUoQXVkaW9Db250ZXh0JiBjb250ZXh0LCBmbG9hdCBzYW1wbGVSYXRlKQorQXVkaW9EZXN0aW5h
dGlvbk5vZGU6OkF1ZGlvRGVzdGluYXRpb25Ob2RlKEF1ZGlvQ29udGV4dEJhc2UmIGNvbnRleHQs
IGZsb2F0IHNhbXBsZVJhdGUpCiAgICAgOiBBdWRpb05vZGUoY29udGV4dCwgc2FtcGxlUmF0ZSkK
ICAgICAsIG1fY3VycmVudFNhbXBsZUZyYW1lKDApCiAgICAgLCBtX2lzU2lsZW50KHRydWUpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvRGVzdGluYXRp
b25Ob2RlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvRGVzdGluYXRp
b25Ob2RlLmgKaW5kZXggODk0OGY0ZWU3MGEuLjM3NmY0NjI3MTJkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvRGVzdGluYXRpb25Ob2RlLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0Rlc3RpbmF0aW9uTm9kZS5oCkBA
IC0zNiw3ICszNiw3IEBAIGNsYXNzIEF1ZGlvQ29udGV4dDsKIGNsYXNzIEF1ZGlvRGVzdGluYXRp
b25Ob2RlIDogcHVibGljIEF1ZGlvTm9kZSwgcHVibGljIEF1ZGlvSU9DYWxsYmFjayB7CiAgICAg
V1RGX01BS0VfSVNPX0FMTE9DQVRFRChBdWRpb0Rlc3RpbmF0aW9uTm9kZSk7CiBwdWJsaWM6Ci0g
ICAgQXVkaW9EZXN0aW5hdGlvbk5vZGUoQXVkaW9Db250ZXh0JiwgZmxvYXQgc2FtcGxlUmF0ZSk7
CisgICAgQXVkaW9EZXN0aW5hdGlvbk5vZGUoQXVkaW9Db250ZXh0QmFzZSYsIGZsb2F0IHNhbXBs
ZVJhdGUpOwogICAgIHZpcnR1YWwgfkF1ZGlvRGVzdGluYXRpb25Ob2RlKCk7CiAgICAgCiAgICAg
Ly8gQXVkaW9Ob2RlICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1
ZGlvL0F1ZGlvTm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlv
Tm9kZS5jcHAKaW5kZXggNzY1ZWNlMzMyZjYuLmU1NTQzNzc5ZDUxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvTm9kZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb05vZGUuY3BwCkBAIC0zMyw2ICszMyw3IEBACiAj
aW5jbHVkZSAiQXVkaW9Ob2RlT3V0cHV0LmgiCiAjaW5jbHVkZSAiQXVkaW9QYXJhbS5oIgogI2lu
Y2x1ZGUgIkxvZ2dpbmcuaCIKKyNpbmNsdWRlICJXZWJLaXRBdWRpb0NvbnRleHQuaCIKICNpbmNs
dWRlIDx3dGYvQXRvbWljcy5oPgogI2luY2x1ZGUgPHd0Zi9Jc29NYWxsb2NJbmxpbmVzLmg+CiAj
aW5jbHVkZSA8d3RmL01haW5UaHJlYWQuaD4KQEAgLTk1LDcgKzk2LDcgQEAgU3RyaW5nIGNvbnZl
cnRFbnVtZXJhdGlvblRvU3RyaW5nKEF1ZGlvTm9kZTo6Tm9kZVR5cGUgZW51bWVyYXRpb25WYWx1
ZSkKICAgICByZXR1cm4gdmFsdWVzW3N0YXRpY19jYXN0PHNpemVfdD4oZW51bWVyYXRpb25WYWx1
ZSldOwogfQogCi1BdWRpb05vZGU6OkF1ZGlvTm9kZShBdWRpb0NvbnRleHQmIGNvbnRleHQsIGZs
b2F0IHNhbXBsZVJhdGUpCitBdWRpb05vZGU6OkF1ZGlvTm9kZShBdWRpb0NvbnRleHRCYXNlJiBj
b250ZXh0LCBmbG9hdCBzYW1wbGVSYXRlKQogICAgIDogbV9pc0luaXRpYWxpemVkKGZhbHNlKQog
ICAgICwgbV9ub2RlVHlwZShOb2RlVHlwZVVua25vd24pCiAgICAgLCBtX2NvbnRleHQoY29udGV4
dCkKQEAgLTE5NCw3ICsxOTUsNyBAQCBBdWRpb05vZGVPdXRwdXQqIEF1ZGlvTm9kZTo6b3V0cHV0
KHVuc2lnbmVkIGkpCiBFeGNlcHRpb25Pcjx2b2lkPiBBdWRpb05vZGU6OmNvbm5lY3QoQXVkaW9O
b2RlJiBkZXN0aW5hdGlvbiwgdW5zaWduZWQgb3V0cHV0SW5kZXgsIHVuc2lnbmVkIGlucHV0SW5k
ZXgpCiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKLSAgICBBdWRpb0NvbnRleHQ6OkF1
dG9Mb2NrZXIgbG9ja2VyKGNvbnRleHQoKSk7CisgICAgQXVkaW9Db250ZXh0QmFzZTo6QXV0b0xv
Y2tlciBsb2NrZXIoY29udGV4dCgpKTsKIAogICAgIEFMV0FZU19MT0coTE9HSURFTlRJRklFUiwg
ZGVzdGluYXRpb24ubm9kZVR5cGUoKSwgIiwgb3V0cHV0ID0gIiwgb3V0cHV0SW5kZXgsICIsIGlu
cHV0ID0gIiwgaW5wdXRJbmRleCk7CiAgICAgCkBAIC0yMDUsNyArMjA2LDcgQEAgRXhjZXB0aW9u
T3I8dm9pZD4gQXVkaW9Ob2RlOjpjb25uZWN0KEF1ZGlvTm9kZSYgZGVzdGluYXRpb24sIHVuc2ln
bmVkIG91dHB1dEluZGUKICAgICBpZiAoaW5wdXRJbmRleCA+PSBkZXN0aW5hdGlvbi5udW1iZXJP
ZklucHV0cygpKQogICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgSW5kZXhTaXplRXJyb3IgfTsK
IAotICAgIGlmIChjb250ZXh0KCkgIT0gZGVzdGluYXRpb24uY29udGV4dCgpKQorICAgIGlmICgm
Y29udGV4dCgpICE9ICZkZXN0aW5hdGlvbi5jb250ZXh0KCkpCiAgICAgICAgIHJldHVybiBFeGNl
cHRpb24geyBTeW50YXhFcnJvciB9OwogCiAgICAgYXV0byogaW5wdXQgPSBkZXN0aW5hdGlvbi5p
bnB1dChpbnB1dEluZGV4KTsKQEAgLTIyMCw3ICsyMjEsNyBAQCBFeGNlcHRpb25Pcjx2b2lkPiBB
dWRpb05vZGU6OmNvbm5lY3QoQXVkaW9Ob2RlJiBkZXN0aW5hdGlvbiwgdW5zaWduZWQgb3V0cHV0
SW5kZQogCiBFeGNlcHRpb25Pcjx2b2lkPiBBdWRpb05vZGU6OmNvbm5lY3QoQXVkaW9QYXJhbSYg
cGFyYW0sIHVuc2lnbmVkIG91dHB1dEluZGV4KQogewotICAgIEF1ZGlvQ29udGV4dDo6QXV0b0xv
Y2tlciBsb2NrZXIoY29udGV4dCgpKTsKKyAgICBBdWRpb0NvbnRleHRCYXNlOjpBdXRvTG9ja2Vy
IGxvY2tlcihjb250ZXh0KCkpOwogCiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKIApAQCAt
MjI5LDcgKzIzMCw3IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IEF1ZGlvTm9kZTo6Y29ubmVjdChBdWRp
b1BhcmFtJiBwYXJhbSwgdW5zaWduZWQgb3V0cHV0SW5kZXgpCiAgICAgaWYgKG91dHB1dEluZGV4
ID49IG51bWJlck9mT3V0cHV0cygpKQogICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgSW5kZXhT
aXplRXJyb3IgfTsKIAotICAgIGlmIChjb250ZXh0KCkgIT0gcGFyYW0uY29udGV4dCgpKQorICAg
IGlmICgmY29udGV4dCgpICE9ICZwYXJhbS5jb250ZXh0KCkpCiAgICAgICAgIHJldHVybiBFeGNl
cHRpb24geyBTeW50YXhFcnJvciB9OwogCiAgICAgYXV0byogb3V0cHV0ID0gdGhpcy0+b3V0cHV0
KG91dHB1dEluZGV4KTsKQEAgLTI0MSw3ICsyNDIsNyBAQCBFeGNlcHRpb25Pcjx2b2lkPiBBdWRp
b05vZGU6OmNvbm5lY3QoQXVkaW9QYXJhbSYgcGFyYW0sIHVuc2lnbmVkIG91dHB1dEluZGV4KQog
RXhjZXB0aW9uT3I8dm9pZD4gQXVkaW9Ob2RlOjpkaXNjb25uZWN0KHVuc2lnbmVkIG91dHB1dElu
ZGV4KQogewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7Ci0gICAgQXVkaW9Db250ZXh0OjpB
dXRvTG9ja2VyIGxvY2tlcihjb250ZXh0KCkpOworICAgIEF1ZGlvQ29udGV4dEJhc2U6OkF1dG9M
b2NrZXIgbG9ja2VyKGNvbnRleHQoKSk7CiAKICAgICAvLyBTYW5pdHkgY2hlY2sgaW5wdXQgYW5k
IG91dHB1dCBpbmRpY2VzLgogICAgIGlmIChvdXRwdXRJbmRleCA+PSBudW1iZXJPZk91dHB1dHMo
KSkKQEAgLTI2Myw3ICsyNjQsNyBAQCB1bnNpZ25lZCBBdWRpb05vZGU6OmNoYW5uZWxDb3VudCgp
CiBFeGNlcHRpb25Pcjx2b2lkPiBBdWRpb05vZGU6OnNldENoYW5uZWxDb3VudCh1bnNpZ25lZCBj
aGFubmVsQ291bnQpCiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKLSAgICBBdWRpb0Nv
bnRleHQ6OkF1dG9Mb2NrZXIgbG9ja2VyKGNvbnRleHQoKSk7CisgICAgQXVkaW9Db250ZXh0QmFz
ZTo6QXV0b0xvY2tlciBsb2NrZXIoY29udGV4dCgpKTsKIAogICAgIEFMV0FZU19MT0coTE9HSURF
TlRJRklFUiwgY2hhbm5lbENvdW50KTsKICAgICAKQEAgLTI5Niw3ICsyOTcsNyBAQCBTdHJpbmcg
QXVkaW9Ob2RlOjpjaGFubmVsQ291bnRNb2RlKCkKIEV4Y2VwdGlvbk9yPHZvaWQ+IEF1ZGlvTm9k
ZTo6c2V0Q2hhbm5lbENvdW50TW9kZShjb25zdCBTdHJpbmcmIG1vZGUpCiB7CiAgICAgQVNTRVJU
KGlzTWFpblRocmVhZCgpKTsKLSAgICBBdWRpb0NvbnRleHQ6OkF1dG9Mb2NrZXIgbG9ja2VyKGNv
bnRleHQoKSk7CisgICAgQXVkaW9Db250ZXh0QmFzZTo6QXV0b0xvY2tlciBsb2NrZXIoY29udGV4
dCgpKTsKIAogICAgIEFMV0FZU19MT0coTE9HSURFTlRJRklFUiwgbW9kZSk7CiAgICAgCkBAIC0z
MzIsNyArMzMzLDcgQEAgU3RyaW5nIEF1ZGlvTm9kZTo6Y2hhbm5lbEludGVycHJldGF0aW9uKCkK
IEV4Y2VwdGlvbk9yPHZvaWQ+IEF1ZGlvTm9kZTo6c2V0Q2hhbm5lbEludGVycHJldGF0aW9uKGNv
bnN0IFN0cmluZyYgaW50ZXJwcmV0YXRpb24pCiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgp
KTsKLSAgICBBdWRpb0NvbnRleHQ6OkF1dG9Mb2NrZXIgbG9ja2VyKGNvbnRleHQoKSk7CisgICAg
QXVkaW9Db250ZXh0QmFzZTo6QXV0b0xvY2tlciBsb2NrZXIoY29udGV4dCgpKTsKIAogICAgIEFM
V0FZU19MT0coTE9HSURFTlRJRklFUiwgaW50ZXJwcmV0YXRpb24pOwogICAgIApAQCAtNDM3LDcg
KzQzOCw3IEBAIHZvaWQgQXVkaW9Ob2RlOjplbmFibGVPdXRwdXRzSWZOZWNlc3NhcnkoKQogewog
ICAgIGlmIChtX2lzRGlzYWJsZWQgJiYgbV9jb25uZWN0aW9uUmVmQ291bnQgPiAwKSB7CiAgICAg
ICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7Ci0gICAgICAgIEF1ZGlvQ29udGV4dDo6QXV0b0xv
Y2tlciBsb2NrZXIoY29udGV4dCgpKTsKKyAgICAgICAgQXVkaW9Db250ZXh0QmFzZTo6QXV0b0xv
Y2tlciBsb2NrZXIoY29udGV4dCgpKTsKIAogICAgICAgICBtX2lzRGlzYWJsZWQgPSBmYWxzZTsK
ICAgICAgICAgZm9yIChhdXRvJiBvdXRwdXQgOiBtX291dHB1dHMpCkBAIC01MDEsNyArNTAyLDcg
QEAgdm9pZCBBdWRpb05vZGU6OmRlcmVmKFJlZlR5cGUgcmVmVHlwZSkKICAgICAvLyBJbiB0aGUg
Y2FzZSBvZiB0aGUgYXVkaW8gdGhyZWFkLCB3ZSBtdXN0IHVzZSBhIHRyeUxvY2sgdG8gYXZvaWQg
Z2xpdGNoZXMuCiAgICAgYm9vbCBoYXNMb2NrID0gZmFsc2U7CiAgICAgYm9vbCBtdXN0UmVsZWFz
ZUxvY2sgPSBmYWxzZTsKLSAgICAKKwogICAgIGlmIChjb250ZXh0KCkuaXNBdWRpb1RocmVhZCgp
KSB7CiAgICAgICAgIC8vIFJlYWwtdGltZSBhdWRpbyB0aHJlYWQgbXVzdCBub3QgY29udGVuZCBs
b2NrICh0byBhdm9pZCBnbGl0Y2hlcykuCiAgICAgICAgIGhhc0xvY2sgPSBjb250ZXh0KCkudHJ5
TG9jayhtdXN0UmVsZWFzZUxvY2spOwpAQCAtNTMwLDYgKzUzMSwxMyBAQCB2b2lkIEF1ZGlvTm9k
ZTo6ZGVyZWYoUmVmVHlwZSByZWZUeXBlKQogICAgICAgICBjb250ZXh0KCkuZGVsZXRlTWFya2Vk
Tm9kZXMoKTsKIH0KIAorVmFyaWFudDxSZWZQdHI8QXVkaW9Db250ZXh0PiwgUmVmUHRyPFdlYktp
dEF1ZGlvQ29udGV4dD4+IEF1ZGlvTm9kZTo6Y29udGV4dEZvckJpbmRpbmdzKCkgY29uc3QKK3sK
KyAgICBpZiAobV9jb250ZXh0LT5pc1dlYktpdEF1ZGlvQ29udGV4dCgpKQorICAgICAgICByZXR1
cm4gbWFrZVJlZlB0cihzdGF0aWNfY2FzdDxXZWJLaXRBdWRpb0NvbnRleHQmPihtX2NvbnRleHQu
Z2V0KCkpKTsKKyAgICByZXR1cm4gbWFrZVJlZlB0cihzdGF0aWNfY2FzdDxBdWRpb0NvbnRleHQm
PihtX2NvbnRleHQuZ2V0KCkpKTsKK30KKwogdm9pZCBBdWRpb05vZGU6OmZpbmlzaERlcmVmKFJl
ZlR5cGUgcmVmVHlwZSkKIHsKICAgICBBU1NFUlQoY29udGV4dCgpLmlzR3JhcGhPd25lcigpKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Ob2RlLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvTm9kZS5oCmluZGV4IDQyMTAx
MDA2Y2M3Li5hOTg4MWJkNGI4ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJhdWRpby9BdWRpb05vZGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlv
L0F1ZGlvTm9kZS5oCkBAIC0yOSwxNSArMjksMTggQEAKICNpbmNsdWRlICJFeGNlcHRpb25Pci5o
IgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8d3RmL0xvZ2dlckhlbHBlci5o
PgorI2luY2x1ZGUgPHd0Zi9WYXJpYW50Lmg+CiAKICNkZWZpbmUgREVCVUdfQVVESU9OT0RFX1JF
RkVSRU5DRVMgMAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEF1ZGlvQ29udGV4dDsK
K2NsYXNzIEF1ZGlvQ29udGV4dEJhc2U7CiBjbGFzcyBBdWRpb05vZGVJbnB1dDsKIGNsYXNzIEF1
ZGlvTm9kZU91dHB1dDsKIGNsYXNzIEF1ZGlvUGFyYW07CitjbGFzcyBXZWJLaXRBdWRpb0NvbnRl
eHQ7CiAKIC8vIEFuIEF1ZGlvTm9kZSBpcyB0aGUgYmFzaWMgYnVpbGRpbmcgYmxvY2sgZm9yIGhh
bmRsaW5nIGF1ZGlvIHdpdGhpbiBhbiBBdWRpb0NvbnRleHQuCiAvLyBJdCBtYXkgYmUgYW4gYXVk
aW8gc291cmNlLCBhbiBpbnRlcm1lZGlhdGUgcHJvY2Vzc2luZyBtb2R1bGUsIG9yIGFuIGF1ZGlv
IGRlc3RpbmF0aW9uLgpAQCAtNTYsMTEgKzU5LDEzIEBAIGNsYXNzIEF1ZGlvTm9kZQogcHVibGlj
OgogICAgIGVudW0geyBQcm9jZXNzaW5nU2l6ZUluRnJhbWVzID0gMTI4IH07CiAKLSAgICBBdWRp
b05vZGUoQXVkaW9Db250ZXh0JiwgZmxvYXQgc2FtcGxlUmF0ZSk7CisgICAgQXVkaW9Ob2RlKEF1
ZGlvQ29udGV4dEJhc2UmLCBmbG9hdCBzYW1wbGVSYXRlKTsKICAgICB2aXJ0dWFsIH5BdWRpb05v
ZGUoKTsKIAotICAgIEF1ZGlvQ29udGV4dCYgY29udGV4dCgpIHsgcmV0dXJuIG1fY29udGV4dC5n
ZXQoKTsgfQotICAgIGNvbnN0IEF1ZGlvQ29udGV4dCYgY29udGV4dCgpIGNvbnN0IHsgcmV0dXJu
IG1fY29udGV4dC5nZXQoKTsgfQorICAgIEF1ZGlvQ29udGV4dEJhc2UmIGNvbnRleHQoKSB7IHJl
dHVybiBtX2NvbnRleHQuZ2V0KCk7IH0KKyAgICBjb25zdCBBdWRpb0NvbnRleHRCYXNlJiBjb250
ZXh0KCkgY29uc3QgeyByZXR1cm4gbV9jb250ZXh0LmdldCgpOyB9CisKKyAgICBWYXJpYW50PFJl
ZlB0cjxBdWRpb0NvbnRleHQ+LCBSZWZQdHI8V2ViS2l0QXVkaW9Db250ZXh0Pj4gY29udGV4dEZv
ckJpbmRpbmdzKCkgY29uc3Q7CiAKICAgICBlbnVtIE5vZGVUeXBlIHsKICAgICAgICAgTm9kZVR5
cGVVbmtub3duLApAQCAtMjA5LDcgKzIxNCw3IEBAIHByaXZhdGU6CiAKICAgICB2b2xhdGlsZSBi
b29sIG1faXNJbml0aWFsaXplZDsKICAgICBOb2RlVHlwZSBtX25vZGVUeXBlOwotICAgIFJlZjxB
dWRpb0NvbnRleHQ+IG1fY29udGV4dDsKKyAgICBSZWY8QXVkaW9Db250ZXh0QmFzZT4gbV9jb250
ZXh0OwogICAgIGZsb2F0IG1fc2FtcGxlUmF0ZTsKICAgICBWZWN0b3I8c3RkOjp1bmlxdWVfcHRy
PEF1ZGlvTm9kZUlucHV0Pj4gbV9pbnB1dHM7CiAgICAgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxB
dWRpb05vZGVPdXRwdXQ+PiBtX291dHB1dHM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmF1ZGlvL0F1ZGlvTm9kZS5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmF1ZGlvL0F1ZGlvTm9kZS5pZGwKaW5kZXggNzBmZWM4YzgxNDUuLjcxOTM5YzgzMTcxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvTm9kZS5pZGwKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb05vZGUuaWRsCkBAIC0yNSw3
ICsyNSw3IEBACiBbCiAgICAgQ29uZGl0aW9uYWw9V0VCX0FVRElPLAogXSBpbnRlcmZhY2UgQXVk
aW9Ob2RlIDogRXZlbnRUYXJnZXQgewotICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBBdWRpb0NvbnRl
eHQgY29udGV4dDsKKyAgICBbSW1wbGVtZW50ZWRBcz1jb250ZXh0Rm9yQmluZGluZ3NdIHJlYWRv
bmx5IGF0dHJpYnV0ZSAoQXVkaW9Db250ZXh0IG9yIFdlYktpdEF1ZGlvQ29udGV4dCkgY29udGV4
dDsKICAgICByZWFkb25seSBhdHRyaWJ1dGUgdW5zaWduZWQgbG9uZyBudW1iZXJPZklucHV0czsK
ICAgICByZWFkb25seSBhdHRyaWJ1dGUgdW5zaWduZWQgbG9uZyBudW1iZXJPZk91dHB1dHM7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Ob2RlT3V0
cHV0LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvTm9kZU91dHB1dC5o
CmluZGV4IDUwYTk1ZWUyMDVjLi5mMDg5ODM2MzVmMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb05vZGVPdXRwdXQuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvTm9kZU91dHB1dC5oCkBAIC00Nyw3ICs0Nyw3IEBAIHB1
YmxpYzoKIAogICAgIC8vIENhbiBiZSBjYWxsZWQgZnJvbSBhbnkgdGhyZWFkLgogICAgIEF1ZGlv
Tm9kZSogbm9kZSgpIGNvbnN0IHsgcmV0dXJuIG1fbm9kZTsgfQotICAgIEF1ZGlvQ29udGV4dCYg
Y29udGV4dCgpIHsgcmV0dXJuIG1fbm9kZS0+Y29udGV4dCgpOyB9CisgICAgQXVkaW9Db250ZXh0
QmFzZSYgY29udGV4dCgpIHsgcmV0dXJuIG1fbm9kZS0+Y29udGV4dCgpOyB9CiAgICAgCiAgICAg
Ly8gQ2F1c2VzIG91ciBBdWRpb05vZGUgdG8gcHJvY2VzcyBpZiBpdCBoYXNuJ3QgYWxyZWFkeSBm
b3IgdGhpcyByZW5kZXIgcXVhbnR1bS4KICAgICAvLyBJdCByZXR1cm5zIHRoZSBidXMgY29udGFp
bmluZyB0aGUgcHJvY2Vzc2VkIGF1ZGlvIGZvciB0aGlzIG91dHB1dCwgcmV0dXJuaW5nIGluUGxh
Y2VCdXMgaWYgaW4tcGxhY2UgcHJvY2Vzc2luZyB3YXMgcG9zc2libGUuCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvUGFyYW0uY3BwIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1BhcmFtLmNwcAppbmRleCAyOTM0NTY0NDVjYy4u
ZDQ3MGJmNzQ2ZWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8v
QXVkaW9QYXJhbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRp
b1BhcmFtLmNwcApAQCAtNDEsNyArNDEsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjb25zdCBk
b3VibGUgQXVkaW9QYXJhbTo6RGVmYXVsdFNtb290aGluZ0NvbnN0YW50ID0gMC4wNTsKIGNvbnN0
IGRvdWJsZSBBdWRpb1BhcmFtOjpTbmFwVGhyZXNob2xkID0gMC4wMDE7CiAKLUF1ZGlvUGFyYW06
OkF1ZGlvUGFyYW0oQXVkaW9Db250ZXh0JiBjb250ZXh0LCBjb25zdCBTdHJpbmcmIG5hbWUsIGRv
dWJsZSBkZWZhdWx0VmFsdWUsIGRvdWJsZSBtaW5WYWx1ZSwgZG91YmxlIG1heFZhbHVlLCB1bnNp
Z25lZCB1bml0cykKK0F1ZGlvUGFyYW06OkF1ZGlvUGFyYW0oQXVkaW9Db250ZXh0QmFzZSYgY29u
dGV4dCwgY29uc3QgU3RyaW5nJiBuYW1lLCBkb3VibGUgZGVmYXVsdFZhbHVlLCBkb3VibGUgbWlu
VmFsdWUsIGRvdWJsZSBtYXhWYWx1ZSwgdW5zaWduZWQgdW5pdHMpCiAgICAgOiBBdWRpb1N1bW1p
bmdKdW5jdGlvbihjb250ZXh0KQogICAgICwgbV9uYW1lKG5hbWUpCiAgICAgLCBtX3ZhbHVlKGRl
ZmF1bHRWYWx1ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8v
QXVkaW9QYXJhbS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1BhcmFt
LmgKaW5kZXggMjI2Yzk1N2U3MDYuLjE2YTIxMDk1MDQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvUGFyYW0uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmF1ZGlvL0F1ZGlvUGFyYW0uaApAQCAtMzEsNiArMzEsNyBAQAogI2luY2x1ZGUg
IkF1ZGlvQ29udGV4dC5oIgogI2luY2x1ZGUgIkF1ZGlvUGFyYW1UaW1lbGluZS5oIgogI2luY2x1
ZGUgIkF1ZGlvU3VtbWluZ0p1bmN0aW9uLmgiCisjaW5jbHVkZSAiV2ViS2l0QXVkaW9Db250ZXh0
LmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvRmxvYXQzMkFycmF5Lmg+CiAjaW5jbHVkZSA8
c3lzL3R5cGVzLmg+CiAjaW5jbHVkZSA8d3RmL0xvZ2dlckhlbHBlci5oPgpAQCAtNTIsNyArNTMs
NyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIGNvbnN0IGRvdWJsZSBEZWZhdWx0U21vb3RoaW5nQ29u
c3RhbnQ7CiAgICAgc3RhdGljIGNvbnN0IGRvdWJsZSBTbmFwVGhyZXNob2xkOwogCi0gICAgc3Rh
dGljIFJlZjxBdWRpb1BhcmFtPiBjcmVhdGUoQXVkaW9Db250ZXh0JiBjb250ZXh0LCBjb25zdCBT
dHJpbmcmIG5hbWUsIGRvdWJsZSBkZWZhdWx0VmFsdWUsIGRvdWJsZSBtaW5WYWx1ZSwgZG91Ymxl
IG1heFZhbHVlLCB1bnNpZ25lZCB1bml0cyA9IDApCisgICAgc3RhdGljIFJlZjxBdWRpb1BhcmFt
PiBjcmVhdGUoQXVkaW9Db250ZXh0QmFzZSYgY29udGV4dCwgY29uc3QgU3RyaW5nJiBuYW1lLCBk
b3VibGUgZGVmYXVsdFZhbHVlLCBkb3VibGUgbWluVmFsdWUsIGRvdWJsZSBtYXhWYWx1ZSwgdW5z
aWduZWQgdW5pdHMgPSAwKQogICAgIHsKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQXVk
aW9QYXJhbShjb250ZXh0LCBuYW1lLCBkZWZhdWx0VmFsdWUsIG1pblZhbHVlLCBtYXhWYWx1ZSwg
dW5pdHMpKTsKICAgICB9CkBAIC0xMDgsNyArMTA5LDcgQEAgcHVibGljOgogICAgIHZvaWQgZGlz
Y29ubmVjdChBdWRpb05vZGVPdXRwdXQqKTsKIAogcHJvdGVjdGVkOgotICAgIEF1ZGlvUGFyYW0o
QXVkaW9Db250ZXh0JiwgY29uc3QgU3RyaW5nJiwgZG91YmxlIGRlZmF1bHRWYWx1ZSwgZG91Ymxl
IG1pblZhbHVlLCBkb3VibGUgbWF4VmFsdWUsIHVuc2lnbmVkIHVuaXRzID0gMCk7CisgICAgQXVk
aW9QYXJhbShBdWRpb0NvbnRleHRCYXNlJiwgY29uc3QgU3RyaW5nJiwgZG91YmxlIGRlZmF1bHRW
YWx1ZSwgZG91YmxlIG1pblZhbHVlLCBkb3VibGUgbWF4VmFsdWUsIHVuc2lnbmVkIHVuaXRzID0g
MCk7CiAKIHByaXZhdGU6CiAgICAgLy8gc2FtcGxlQWNjdXJhdGUgY29ycmVzcG9uZHMgdG8gYS1y
YXRlIChhdWRpbyByYXRlKSB2cy4gay1yYXRlIGluIHRoZSBXZWIgQXVkaW8gc3BlY2lmaWNhdGlv
bi4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9QYXJh
bVRpbWVsaW5lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9QYXJh
bVRpbWVsaW5lLmNwcAppbmRleCAyYjU5NTcwYmY2ZS4uNmM0MTMwMWQ4YWQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9QYXJhbVRpbWVsaW5lLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvUGFyYW1UaW1lbGluZS5j
cHAKQEAgLTExMyw3ICsxMTMsNyBAQCB2b2lkIEF1ZGlvUGFyYW1UaW1lbGluZTo6Y2FuY2VsU2No
ZWR1bGVkVmFsdWVzKGZsb2F0IHN0YXJ0VGltZSkKICAgICB9CiB9CiAKLWZsb2F0IEF1ZGlvUGFy
YW1UaW1lbGluZTo6dmFsdWVGb3JDb250ZXh0VGltZShBdWRpb0NvbnRleHQmIGNvbnRleHQsIGZs
b2F0IGRlZmF1bHRWYWx1ZSwgYm9vbCYgaGFzVmFsdWUpCitmbG9hdCBBdWRpb1BhcmFtVGltZWxp
bmU6OnZhbHVlRm9yQ29udGV4dFRpbWUoQXVkaW9Db250ZXh0QmFzZSYgY29udGV4dCwgZmxvYXQg
ZGVmYXVsdFZhbHVlLCBib29sJiBoYXNWYWx1ZSkKIHsKICAgICB7CiAgICAgICAgIHN0ZDo6dW5p
cXVlX2xvY2s8TG9jaz4gbG9jayhtX2V2ZW50c011dGV4LCBzdGQ6OnRyeV90b19sb2NrKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9QYXJhbVRpbWVs
aW5lLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvUGFyYW1UaW1lbGlu
ZS5oCmluZGV4IDdjMTA5OTk1NmNlLi5hNTg2OGJkZWUxOCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1BhcmFtVGltZWxpbmUuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvUGFyYW1UaW1lbGluZS5oCkBAIC01Miw3ICs1
Miw3IEBAIHB1YmxpYzoKIAogICAgIC8vIGhhc1ZhbHVlIGlzIHNldCB0byB0cnVlIGlmIGEgdmFs
aWQgdGltZWxpbmUgdmFsdWUgaXMgcmV0dXJuZWQuCiAgICAgLy8gb3RoZXJ3aXNlIGRlZmF1bHRW
YWx1ZSBpcyByZXR1cm5lZC4KLSAgICBmbG9hdCB2YWx1ZUZvckNvbnRleHRUaW1lKEF1ZGlvQ29u
dGV4dCYsIGZsb2F0IGRlZmF1bHRWYWx1ZSwgYm9vbCYgaGFzVmFsdWUpOworICAgIGZsb2F0IHZh
bHVlRm9yQ29udGV4dFRpbWUoQXVkaW9Db250ZXh0QmFzZSYsIGZsb2F0IGRlZmF1bHRWYWx1ZSwg
Ym9vbCYgaGFzVmFsdWUpOwogCiAgICAgLy8gR2l2ZW4gdGhlIHRpbWUgcmFuZ2UsIGNhbGN1bGF0
ZXMgcGFyYW1ldGVyIHZhbHVlcyBpbnRvIHRoZSB2YWx1ZXMgYnVmZmVyCiAgICAgLy8gYW5kIHJl
dHVybnMgdGhlIGxhc3QgcGFyYW1ldGVyIHZhbHVlIGNhbGN1bGF0ZWQgZm9yICJ2YWx1ZXMiIG9y
IHRoZSBkZWZhdWx0VmFsdWUgaWYgbm9uZSB3ZXJlIGNhbGN1bGF0ZWQuCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvU2NoZWR1bGVkU291cmNlTm9kZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvU2NoZWR1bGVkU291cmNl
Tm9kZS5jcHAKaW5kZXggMGY3MjY3NmZjNzQuLjdjMjgyMzdhMGJkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvU2NoZWR1bGVkU291cmNlTm9kZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1NjaGVkdWxlZFNvdXJj
ZU5vZGUuY3BwCkBAIC00OSw3ICs0OSw3IEBAIFdURl9NQUtFX0lTT19BTExPQ0FURURfSU1QTChB
dWRpb1NjaGVkdWxlZFNvdXJjZU5vZGUpOwogCiBjb25zdCBkb3VibGUgQXVkaW9TY2hlZHVsZWRT
b3VyY2VOb2RlOjpVbmtub3duVGltZSA9IC0xOwogCi1BdWRpb1NjaGVkdWxlZFNvdXJjZU5vZGU6
OkF1ZGlvU2NoZWR1bGVkU291cmNlTm9kZShBdWRpb0NvbnRleHQmIGNvbnRleHQsIGZsb2F0IHNh
bXBsZVJhdGUpCitBdWRpb1NjaGVkdWxlZFNvdXJjZU5vZGU6OkF1ZGlvU2NoZWR1bGVkU291cmNl
Tm9kZShBdWRpb0NvbnRleHRCYXNlJiBjb250ZXh0LCBmbG9hdCBzYW1wbGVSYXRlKQogICAgIDog
QXVkaW9Ob2RlKGNvbnRleHQsIHNhbXBsZVJhdGUpCiAgICAgLCBBY3RpdmVET01PYmplY3QoY29u
dGV4dC5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpCiAgICAgLCBtX2VuZFRpbWUoVW5rbm93blRp
bWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvU2No
ZWR1bGVkU291cmNlTm9kZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRp
b1NjaGVkdWxlZFNvdXJjZU5vZGUuaAppbmRleCA4Y2FkYmUxMGFmZC4uYjRkOTU4ODBjMWQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9TY2hlZHVsZWRT
b3VyY2VOb2RlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1Nj
aGVkdWxlZFNvdXJjZU5vZGUuaApAQCAtNTMsNyArNTMsNyBAQCBwdWJsaWM6CiAgICAgICAgIEZJ
TklTSEVEX1NUQVRFID0gMwogICAgIH07CiAgICAgCi0gICAgQXVkaW9TY2hlZHVsZWRTb3VyY2VO
b2RlKEF1ZGlvQ29udGV4dCYsIGZsb2F0IHNhbXBsZVJhdGUpOworICAgIEF1ZGlvU2NoZWR1bGVk
U291cmNlTm9kZShBdWRpb0NvbnRleHRCYXNlJiwgZmxvYXQgc2FtcGxlUmF0ZSk7CiAKICAgICBF
eGNlcHRpb25Pcjx2b2lkPiBzdGFydExhdGVyKGRvdWJsZSB3aGVuKTsKICAgICBFeGNlcHRpb25P
cjx2b2lkPiBzdG9wTGF0ZXIoZG91YmxlIHdoZW4pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1N1bW1pbmdKdW5jdGlvbi5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvU3VtbWluZ0p1bmN0aW9uLmNwcAppbmRleCBlZTYw
MGE2MjlhMS4uZGQ2NGZkM2VhODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViYXVkaW8vQXVkaW9TdW1taW5nSnVuY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViYXVkaW8vQXVkaW9TdW1taW5nSnVuY3Rpb24uY3BwCkBAIC0zNCw3ICszNCw3IEBA
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotQXVkaW9TdW1taW5nSnVuY3Rpb246OkF1ZGlvU3Vt
bWluZ0p1bmN0aW9uKEF1ZGlvQ29udGV4dCYgY29udGV4dCkKK0F1ZGlvU3VtbWluZ0p1bmN0aW9u
OjpBdWRpb1N1bW1pbmdKdW5jdGlvbihBdWRpb0NvbnRleHRCYXNlJiBjb250ZXh0KQogICAgIDog
bV9jb250ZXh0KGNvbnRleHQpCiAgICAgLCBtX3JlbmRlcmluZ1N0YXRlTmVlZFVwZGF0aW5nKGZh
bHNlKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRp
b1N1bW1pbmdKdW5jdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRp
b1N1bW1pbmdKdW5jdGlvbi5oCmluZGV4IGM5NGZmNmQ2YTVhLi40Y2JmOGFlOWZiOSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1N1bW1pbmdKdW5jdGlv
bi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9TdW1taW5nSnVu
Y3Rpb24uaApAQCAtMzAsMTggKzMwLDE4IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xh
c3MgQXVkaW9Db250ZXh0OworY2xhc3MgQXVkaW9Db250ZXh0QmFzZTsKIGNsYXNzIEF1ZGlvTm9k
ZU91dHB1dDsKIAogLy8gQW4gQXVkaW9TdW1taW5nSnVuY3Rpb24gcmVwcmVzZW50cyBhIHBvaW50
IHdoZXJlIHplcm8sIG9uZSwgb3IgbW9yZSBBdWRpb05vZGVPdXRwdXRzIGNvbm5lY3QuCiAKIGNs
YXNzIEF1ZGlvU3VtbWluZ0p1bmN0aW9uIHsKIHB1YmxpYzoKLSAgICBleHBsaWNpdCBBdWRpb1N1
bW1pbmdKdW5jdGlvbihBdWRpb0NvbnRleHQmKTsKKyAgICBleHBsaWNpdCBBdWRpb1N1bW1pbmdK
dW5jdGlvbihBdWRpb0NvbnRleHRCYXNlJik7CiAgICAgdmlydHVhbCB+QXVkaW9TdW1taW5nSnVu
Y3Rpb24oKTsKIAogICAgIC8vIENhbiBiZSBjYWxsZWQgZnJvbSBhbnkgdGhyZWFkLgotICAgIEF1
ZGlvQ29udGV4dCYgY29udGV4dCgpIHsgcmV0dXJuIG1fY29udGV4dC5nZXQoKTsgfQorICAgIEF1
ZGlvQ29udGV4dEJhc2UmIGNvbnRleHQoKSB7IHJldHVybiBtX2NvbnRleHQ7IH0KIAogICAgIC8v
IFRoaXMgbXVzdCBiZSBjYWxsZWQgd2hlbmV2ZXIgd2UgbW9kaWZ5IG1fb3V0cHV0cy4KICAgICB2
b2lkIGNoYW5nZWRPdXRwdXRzKCk7CkBAIC02MCw3ICs2MCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0
dWFsIHZvaWQgZGlkVXBkYXRlKCkgPSAwOwogCiBwcm90ZWN0ZWQ6Ci0gICAgUmVmPEF1ZGlvQ29u
dGV4dD4gbV9jb250ZXh0OworICAgIFJlZjxBdWRpb0NvbnRleHRCYXNlPiBtX2NvbnRleHQ7CiAK
ICAgICAvLyBtX291dHB1dHMgY29udGFpbnMgdGhlIEF1ZGlvTm9kZU91dHB1dHMgcmVwcmVzZW50
aW5nIGN1cnJlbnQgY29ubmVjdGlvbnMgd2hpY2ggYXJlIG5vdCBkaXNhYmxlZC4KICAgICAvLyBU
aGUgcmVuZGVyaW5nIGNvZGUgc2hvdWxkIG5ldmVyIHVzZSB0aGlzIGRpcmVjdGx5LCBidXQgaW5z
dGVhZCB1c2VzIG1fcmVuZGVyaW5nT3V0cHV0cy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViYXVkaW8vQmlxdWFkRmlsdGVyTm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmF1ZGlvL0JpcXVhZEZpbHRlck5vZGUuY3BwCmluZGV4IDRhODI1NWU2ZjBhLi5k
ZGUwNzczZDQ3MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9C
aXF1YWRGaWx0ZXJOb2RlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlv
L0JpcXVhZEZpbHRlck5vZGUuY3BwCkBAIC0zMyw3ICszMyw3IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAogV1RGX01BS0VfSVNPX0FMTE9DQVRFRF9JTVBMKEJpcXVhZEZpbHRlck5vZGUpOwogCi1C
aXF1YWRGaWx0ZXJOb2RlOjpCaXF1YWRGaWx0ZXJOb2RlKEF1ZGlvQ29udGV4dCYgY29udGV4dCwg
ZmxvYXQgc2FtcGxlUmF0ZSkKK0JpcXVhZEZpbHRlck5vZGU6OkJpcXVhZEZpbHRlck5vZGUoQXVk
aW9Db250ZXh0QmFzZSYgY29udGV4dCwgZmxvYXQgc2FtcGxlUmF0ZSkKICAgICA6IEF1ZGlvQmFz
aWNQcm9jZXNzb3JOb2RlKGNvbnRleHQsIHNhbXBsZVJhdGUpCiB7CiAgICAgc2V0Tm9kZVR5cGUo
Tm9kZVR5cGVCaXF1YWRGaWx0ZXIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJhdWRpby9CaXF1YWRGaWx0ZXJOb2RlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmF1ZGlvL0JpcXVhZEZpbHRlck5vZGUuaAppbmRleCA4MDk0ZDkxZWFiMy4uYWM4ZDk0N2ExMGYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQmlxdWFkRmlsdGVy
Tm9kZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQmlxdWFkRmlsdGVy
Tm9kZS5oCkBAIC0zNCw3ICszNCw3IEBAIGNsYXNzIEF1ZGlvUGFyYW07CiBjbGFzcyBCaXF1YWRG
aWx0ZXJOb2RlIGZpbmFsIDogcHVibGljIEF1ZGlvQmFzaWNQcm9jZXNzb3JOb2RlIHsKICAgICBX
VEZfTUFLRV9JU09fQUxMT0NBVEVEKEJpcXVhZEZpbHRlck5vZGUpOwogcHVibGljOgotICAgIHN0
YXRpYyBSZWY8QmlxdWFkRmlsdGVyTm9kZT4gY3JlYXRlKEF1ZGlvQ29udGV4dCYgY29udGV4dCwg
ZmxvYXQgc2FtcGxlUmF0ZSkKKyAgICBzdGF0aWMgUmVmPEJpcXVhZEZpbHRlck5vZGU+IGNyZWF0
ZShBdWRpb0NvbnRleHRCYXNlJiBjb250ZXh0LCBmbG9hdCBzYW1wbGVSYXRlKQogICAgIHsKICAg
ICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQmlxdWFkRmlsdGVyTm9kZShjb250ZXh0LCBzYW1w
bGVSYXRlKSk7CiAgICAgfQpAQCAtNTIsNyArNTIsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBnZXRG
cmVxdWVuY3lSZXNwb25zZShjb25zdCBSZWZQdHI8RmxvYXQzMkFycmF5PiYgZnJlcXVlbmN5SHos
IGNvbnN0IFJlZlB0cjxGbG9hdDMyQXJyYXk+JiBtYWdSZXNwb25zZSwgY29uc3QgUmVmUHRyPEZs
b2F0MzJBcnJheT4mIHBoYXNlUmVzcG9uc2UpOwogCiBwcml2YXRlOgotICAgIEJpcXVhZEZpbHRl
ck5vZGUoQXVkaW9Db250ZXh0JiwgZmxvYXQgc2FtcGxlUmF0ZSk7CisgICAgQmlxdWFkRmlsdGVy
Tm9kZShBdWRpb0NvbnRleHRCYXNlJiwgZmxvYXQgc2FtcGxlUmF0ZSk7CiAKICAgICBCaXF1YWRQ
cm9jZXNzb3IqIGJpcXVhZFByb2Nlc3NvcigpIHsgcmV0dXJuIHN0YXRpY19jYXN0PEJpcXVhZFBy
b2Nlc3Nvcio+KHByb2Nlc3NvcigpKTsgfQogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViYXVkaW8vQmlxdWFkUHJvY2Vzc29yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViYXVkaW8vQmlxdWFkUHJvY2Vzc29yLmNwcAppbmRleCBlODRiOTgwMzU2Ny4uMmY2
MDY3YTcyZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQmlx
dWFkUHJvY2Vzc29yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0Jp
cXVhZFByb2Nlc3Nvci5jcHAKQEAgLTMyLDcgKzMyLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogICAgIAotQmlxdWFkUHJvY2Vzc29yOjpCaXF1YWRQcm9jZXNzb3IoQXVkaW9Db250ZXh0JiBj
b250ZXh0LCBmbG9hdCBzYW1wbGVSYXRlLCBzaXplX3QgbnVtYmVyT2ZDaGFubmVscywgYm9vbCBh
dXRvSW5pdGlhbGl6ZSkKK0JpcXVhZFByb2Nlc3Nvcjo6QmlxdWFkUHJvY2Vzc29yKEF1ZGlvQ29u
dGV4dEJhc2UmIGNvbnRleHQsIGZsb2F0IHNhbXBsZVJhdGUsIHNpemVfdCBudW1iZXJPZkNoYW5u
ZWxzLCBib29sIGF1dG9Jbml0aWFsaXplKQogICAgIDogQXVkaW9EU1BLZXJuZWxQcm9jZXNzb3Io
c2FtcGxlUmF0ZSwgbnVtYmVyT2ZDaGFubmVscykKICAgICAsIG1fdHlwZShCaXF1YWRGaWx0ZXJU
eXBlOjpMb3dwYXNzKQogICAgICwgbV9wYXJhbWV0ZXIxKDApCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0JpcXVhZFByb2Nlc3Nvci5oIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJhdWRpby9CaXF1YWRQcm9jZXNzb3IuaAppbmRleCBhZGJlZWM0MzAyNS4u
ZGMzMDZhYjUxN2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8v
QmlxdWFkUHJvY2Vzc29yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9C
aXF1YWRQcm9jZXNzb3IuaApAQCAtNTAsNyArNTAsNyBAQCBlbnVtIGNsYXNzIEJpcXVhZEZpbHRl
clR5cGUgewogY2xhc3MgQmlxdWFkUHJvY2Vzc29yIGZpbmFsIDogcHVibGljIEF1ZGlvRFNQS2Vy
bmVsUHJvY2Vzc29yIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKLSAg
ICBCaXF1YWRQcm9jZXNzb3IoQXVkaW9Db250ZXh0JiwgZmxvYXQgc2FtcGxlUmF0ZSwgc2l6ZV90
IG51bWJlck9mQ2hhbm5lbHMsIGJvb2wgYXV0b0luaXRpYWxpemUpOworICAgIEJpcXVhZFByb2Nl
c3NvcihBdWRpb0NvbnRleHRCYXNlJiwgZmxvYXQgc2FtcGxlUmF0ZSwgc2l6ZV90IG51bWJlck9m
Q2hhbm5lbHMsIGJvb2wgYXV0b0luaXRpYWxpemUpOwogCiAgICAgdmlydHVhbCB+QmlxdWFkUHJv
Y2Vzc29yKCk7CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1
ZGlvL0NoYW5uZWxNZXJnZXJOb2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVk
aW8vQ2hhbm5lbE1lcmdlck5vZGUuY3BwCmluZGV4IGRmNTBmMjY4NzM2Li5kZTI4YWVhN2QyYyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9DaGFubmVsTWVyZ2Vy
Tm9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9DaGFubmVsTWVy
Z2VyTm9kZS5jcHAKQEAgLTQzLDcgKzQzLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBXVEZf
TUFLRV9JU09fQUxMT0NBVEVEX0lNUEwoQ2hhbm5lbE1lcmdlck5vZGUpOwogCi1SZWZQdHI8Q2hh
bm5lbE1lcmdlck5vZGU+IENoYW5uZWxNZXJnZXJOb2RlOjpjcmVhdGUoQXVkaW9Db250ZXh0JiBj
b250ZXh0LCBmbG9hdCBzYW1wbGVSYXRlLCB1bnNpZ25lZCBudW1iZXJPZklucHV0cykKK1JlZlB0
cjxDaGFubmVsTWVyZ2VyTm9kZT4gQ2hhbm5lbE1lcmdlck5vZGU6OmNyZWF0ZShBdWRpb0NvbnRl
eHRCYXNlJiBjb250ZXh0LCBmbG9hdCBzYW1wbGVSYXRlLCB1bnNpZ25lZCBudW1iZXJPZklucHV0
cykKIHsKICAgICBpZiAoIW51bWJlck9mSW5wdXRzIHx8IG51bWJlck9mSW5wdXRzID4gQXVkaW9D
b250ZXh0OjptYXhOdW1iZXJPZkNoYW5uZWxzKCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwpA
QCAtNTEsNyArNTEsNyBAQCBSZWZQdHI8Q2hhbm5lbE1lcmdlck5vZGU+IENoYW5uZWxNZXJnZXJO
b2RlOjpjcmVhdGUoQXVkaW9Db250ZXh0JiBjb250ZXh0LCBmbG9hdAogICAgIHJldHVybiBhZG9w
dFJlZigqbmV3IENoYW5uZWxNZXJnZXJOb2RlKGNvbnRleHQsIHNhbXBsZVJhdGUsIG51bWJlck9m
SW5wdXRzKSk7ICAgICAgCiB9CiAKLUNoYW5uZWxNZXJnZXJOb2RlOjpDaGFubmVsTWVyZ2VyTm9k
ZShBdWRpb0NvbnRleHQmIGNvbnRleHQsIGZsb2F0IHNhbXBsZVJhdGUsIHVuc2lnbmVkIG51bWJl
ck9mSW5wdXRzKQorQ2hhbm5lbE1lcmdlck5vZGU6OkNoYW5uZWxNZXJnZXJOb2RlKEF1ZGlvQ29u
dGV4dEJhc2UmIGNvbnRleHQsIGZsb2F0IHNhbXBsZVJhdGUsIHVuc2lnbmVkIG51bWJlck9mSW5w
dXRzKQogICAgIDogQXVkaW9Ob2RlKGNvbnRleHQsIHNhbXBsZVJhdGUpCiAgICAgLCBtX2Rlc2ly
ZWROdW1iZXJPZk91dHB1dENoYW5uZWxzKERlZmF1bHROdW1iZXJPZk91dHB1dENoYW5uZWxzKQog
ewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9DaGFubmVsTWVy
Z2VyTm9kZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9DaGFubmVsTWVyZ2Vy
Tm9kZS5oCmluZGV4IDY2NjM2ZWVkNmY3Li42Mjk3NmUwNTA3MyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9DaGFubmVsTWVyZ2VyTm9kZS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQ2hhbm5lbE1lcmdlck5vZGUuaApAQCAtMzcsNyAr
MzcsNyBAQCBjbGFzcyBBdWRpb0NvbnRleHQ7CiBjbGFzcyBDaGFubmVsTWVyZ2VyTm9kZSBmaW5h
bCA6IHB1YmxpYyBBdWRpb05vZGUgewogICAgIFdURl9NQUtFX0lTT19BTExPQ0FURUQoQ2hhbm5l
bE1lcmdlck5vZGUpOwogcHVibGljOgotICAgIHN0YXRpYyBSZWZQdHI8Q2hhbm5lbE1lcmdlck5v
ZGU+IGNyZWF0ZShBdWRpb0NvbnRleHQmLCBmbG9hdCBzYW1wbGVSYXRlLCB1bnNpZ25lZCBudW1i
ZXJPZklucHV0cyk7CisgICAgc3RhdGljIFJlZlB0cjxDaGFubmVsTWVyZ2VyTm9kZT4gY3JlYXRl
KEF1ZGlvQ29udGV4dEJhc2UmLCBmbG9hdCBzYW1wbGVSYXRlLCB1bnNpZ25lZCBudW1iZXJPZklu
cHV0cyk7CiAKICAgICAvLyBBdWRpb05vZGUKICAgICB2b2lkIHByb2Nlc3Moc2l6ZV90IGZyYW1l
c1RvUHJvY2Vzcykgb3ZlcnJpZGU7CkBAIC01Miw3ICs1Miw3IEBAIHByaXZhdGU6CiAgICAgZG91
YmxlIHRhaWxUaW1lKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gMDsgfQogICAgIGRvdWJsZSBs
YXRlbmN5VGltZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIDA7IH0KIAotICAgIENoYW5uZWxN
ZXJnZXJOb2RlKEF1ZGlvQ29udGV4dCYsIGZsb2F0IHNhbXBsZVJhdGUsIHVuc2lnbmVkIG51bWJl
ck9mSW5wdXRzKTsKKyAgICBDaGFubmVsTWVyZ2VyTm9kZShBdWRpb0NvbnRleHRCYXNlJiwgZmxv
YXQgc2FtcGxlUmF0ZSwgdW5zaWduZWQgbnVtYmVyT2ZJbnB1dHMpOwogfTsKIAogfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRp
by9DaGFubmVsU3BsaXR0ZXJOb2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVk
aW8vQ2hhbm5lbFNwbGl0dGVyTm9kZS5jcHAKaW5kZXggODJmNjlhMDRmOTkuLmY1NTUzZDBjODM1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0NoYW5uZWxTcGxp
dHRlck5vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQ2hhbm5l
bFNwbGl0dGVyTm9kZS5jcHAKQEAgLTM3LDcgKzM3LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
CiBXVEZfTUFLRV9JU09fQUxMT0NBVEVEX0lNUEwoQ2hhbm5lbFNwbGl0dGVyTm9kZSk7CiAgICAg
Ci1SZWZQdHI8Q2hhbm5lbFNwbGl0dGVyTm9kZT4gQ2hhbm5lbFNwbGl0dGVyTm9kZTo6Y3JlYXRl
KEF1ZGlvQ29udGV4dCYgY29udGV4dCwgZmxvYXQgc2FtcGxlUmF0ZSwgdW5zaWduZWQgbnVtYmVy
T2ZPdXRwdXRzKQorUmVmUHRyPENoYW5uZWxTcGxpdHRlck5vZGU+IENoYW5uZWxTcGxpdHRlck5v
ZGU6OmNyZWF0ZShBdWRpb0NvbnRleHRCYXNlJiBjb250ZXh0LCBmbG9hdCBzYW1wbGVSYXRlLCB1
bnNpZ25lZCBudW1iZXJPZk91dHB1dHMpCiB7CiAgICAgaWYgKCFudW1iZXJPZk91dHB1dHMgfHwg
bnVtYmVyT2ZPdXRwdXRzID4gQXVkaW9Db250ZXh0OjptYXhOdW1iZXJPZkNoYW5uZWxzKCkpCiAg
ICAgICAgIHJldHVybiBudWxscHRyOwpAQCAtNDUsNyArNDUsNyBAQCBSZWZQdHI8Q2hhbm5lbFNw
bGl0dGVyTm9kZT4gQ2hhbm5lbFNwbGl0dGVyTm9kZTo6Y3JlYXRlKEF1ZGlvQ29udGV4dCYgY29u
dGV4dCwgZgogICAgIHJldHVybiBhZG9wdFJlZigqbmV3IENoYW5uZWxTcGxpdHRlck5vZGUoY29u
dGV4dCwgc2FtcGxlUmF0ZSwgbnVtYmVyT2ZPdXRwdXRzKSk7ICAgICAgCiB9CiAKLUNoYW5uZWxT
cGxpdHRlck5vZGU6OkNoYW5uZWxTcGxpdHRlck5vZGUoQXVkaW9Db250ZXh0JiBjb250ZXh0LCBm
bG9hdCBzYW1wbGVSYXRlLCB1bnNpZ25lZCBudW1iZXJPZk91dHB1dHMpCitDaGFubmVsU3BsaXR0
ZXJOb2RlOjpDaGFubmVsU3BsaXR0ZXJOb2RlKEF1ZGlvQ29udGV4dEJhc2UmIGNvbnRleHQsIGZs
b2F0IHNhbXBsZVJhdGUsIHVuc2lnbmVkIG51bWJlck9mT3V0cHV0cykKICAgICA6IEF1ZGlvTm9k
ZShjb250ZXh0LCBzYW1wbGVSYXRlKQogewogICAgIHNldE5vZGVUeXBlKE5vZGVUeXBlQ2hhbm5l
bFNwbGl0dGVyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8v
Q2hhbm5lbFNwbGl0dGVyTm9kZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9D
aGFubmVsU3BsaXR0ZXJOb2RlLmgKaW5kZXggOGQ5ODMyODEyMzcuLjEzZDhkOTgwZGFhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0NoYW5uZWxTcGxpdHRlck5v
ZGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0NoYW5uZWxTcGxpdHRl
ck5vZGUuaApAQCAtMzMsNyArMzMsNyBAQCBjbGFzcyBBdWRpb0NvbnRleHQ7CiBjbGFzcyBDaGFu
bmVsU3BsaXR0ZXJOb2RlIGZpbmFsIDogcHVibGljIEF1ZGlvTm9kZSB7CiAgICAgV1RGX01BS0Vf
SVNPX0FMTE9DQVRFRChDaGFubmVsU3BsaXR0ZXJOb2RlKTsKIHB1YmxpYzoKLSAgICBzdGF0aWMg
UmVmUHRyPENoYW5uZWxTcGxpdHRlck5vZGU+IGNyZWF0ZShBdWRpb0NvbnRleHQmLCBmbG9hdCBz
YW1wbGVSYXRlLCB1bnNpZ25lZCBudW1iZXJPZk91dHB1dHMpOworICAgIHN0YXRpYyBSZWZQdHI8
Q2hhbm5lbFNwbGl0dGVyTm9kZT4gY3JlYXRlKEF1ZGlvQ29udGV4dEJhc2UmLCBmbG9hdCBzYW1w
bGVSYXRlLCB1bnNpZ25lZCBudW1iZXJPZk91dHB1dHMpOwogCiAgICAgLy8gQXVkaW9Ob2RlCiAg
ICAgdm9pZCBwcm9jZXNzKHNpemVfdCBmcmFtZXNUb1Byb2Nlc3MpIG92ZXJyaWRlOwpAQCAtNDMs
NyArNDMsNyBAQCBwcml2YXRlOgogICAgIGRvdWJsZSB0YWlsVGltZSgpIGNvbnN0IG92ZXJyaWRl
IHsgcmV0dXJuIDA7IH0KICAgICBkb3VibGUgbGF0ZW5jeVRpbWUoKSBjb25zdCBvdmVycmlkZSB7
IHJldHVybiAwOyB9CiAKLSAgICBDaGFubmVsU3BsaXR0ZXJOb2RlKEF1ZGlvQ29udGV4dCYsIGZs
b2F0IHNhbXBsZVJhdGUsIHVuc2lnbmVkIG51bWJlck9mT3V0cHV0cyk7CisgICAgQ2hhbm5lbFNw
bGl0dGVyTm9kZShBdWRpb0NvbnRleHRCYXNlJiwgZmxvYXQgc2FtcGxlUmF0ZSwgdW5zaWduZWQg
bnVtYmVyT2ZPdXRwdXRzKTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQ29udm9sdmVyTm9kZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0NvbnZvbHZlck5vZGUuY3BwCmluZGV4IGNj
OTcyZjEwZGJkLi5lMWY1ZWI4MTU2MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJhdWRpby9Db252b2x2ZXJOb2RlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmF1ZGlvL0NvbnZvbHZlck5vZGUuY3BwCkBAIC00Nyw3ICs0Nyw3IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAogV1RGX01BS0VfSVNPX0FMTE9DQVRFRF9JTVBMKENvbnZvbHZlck5vZGUpOwog
Ci1Db252b2x2ZXJOb2RlOjpDb252b2x2ZXJOb2RlKEF1ZGlvQ29udGV4dCYgY29udGV4dCwgZmxv
YXQgc2FtcGxlUmF0ZSkKK0NvbnZvbHZlck5vZGU6OkNvbnZvbHZlck5vZGUoQXVkaW9Db250ZXh0
QmFzZSYgY29udGV4dCwgZmxvYXQgc2FtcGxlUmF0ZSkKICAgICA6IEF1ZGlvTm9kZShjb250ZXh0
LCBzYW1wbGVSYXRlKQogewogICAgIHNldE5vZGVUeXBlKE5vZGVUeXBlQ29udm9sdmVyKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQ29udm9sdmVyTm9kZS5o
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9Db252b2x2ZXJOb2RlLmgKaW5kZXgg
NjRiZmViZWQyZDguLjMxY2VjMWVjYzdmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmF1ZGlvL0NvbnZvbHZlck5vZGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmF1ZGlvL0NvbnZvbHZlck5vZGUuaApAQCAtMzUsNyArMzUsNyBAQCBjbGFzcyBSZXZlcmI7
CiBjbGFzcyBDb252b2x2ZXJOb2RlIGZpbmFsIDogcHVibGljIEF1ZGlvTm9kZSB7CiAgICAgV1RG
X01BS0VfSVNPX0FMTE9DQVRFRChDb252b2x2ZXJOb2RlKTsKIHB1YmxpYzoKLSAgICBzdGF0aWMg
UmVmPENvbnZvbHZlck5vZGU+IGNyZWF0ZShBdWRpb0NvbnRleHQmIGNvbnRleHQsIGZsb2F0IHNh
bXBsZVJhdGUpCisgICAgc3RhdGljIFJlZjxDb252b2x2ZXJOb2RlPiBjcmVhdGUoQXVkaW9Db250
ZXh0QmFzZSYgY29udGV4dCwgZmxvYXQgc2FtcGxlUmF0ZSkKICAgICB7CiAgICAgICAgIHJldHVy
biBhZG9wdFJlZigqbmV3IENvbnZvbHZlck5vZGUoY29udGV4dCwgc2FtcGxlUmF0ZSkpOwogICAg
IH0KQEAgLTQ5LDcgKzQ5LDcgQEAgcHVibGljOgogICAgIHZvaWQgc2V0Tm9ybWFsaXplKGJvb2wg
bm9ybWFsaXplKSB7IG1fbm9ybWFsaXplID0gbm9ybWFsaXplOyB9CiAKIHByaXZhdGU6Ci0gICAg
Q29udm9sdmVyTm9kZShBdWRpb0NvbnRleHQmLCBmbG9hdCBzYW1wbGVSYXRlKTsKKyAgICBDb252
b2x2ZXJOb2RlKEF1ZGlvQ29udGV4dEJhc2UmLCBmbG9hdCBzYW1wbGVSYXRlKTsKIAogICAgIGRv
dWJsZSB0YWlsVGltZSgpIGNvbnN0IGZpbmFsOwogICAgIGRvdWJsZSBsYXRlbmN5VGltZSgpIGNv
bnN0IGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9E
ZWZhdWx0QXVkaW9EZXN0aW5hdGlvbk5vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJhdWRpby9EZWZhdWx0QXVkaW9EZXN0aW5hdGlvbk5vZGUuY3BwCmluZGV4IDE3NTlhZTRhNWE2
Li4wN2ViOWE0MWI1YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRp
by9EZWZhdWx0QXVkaW9EZXN0aW5hdGlvbk5vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViYXVkaW8vRGVmYXVsdEF1ZGlvRGVzdGluYXRpb25Ob2RlLmNwcApAQCAtNDMsNyAr
NDMsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFdURl9NQUtFX0lTT19BTExPQ0FURURfSU1Q
TChEZWZhdWx0QXVkaW9EZXN0aW5hdGlvbk5vZGUpOwogICAgIAotRGVmYXVsdEF1ZGlvRGVzdGlu
YXRpb25Ob2RlOjpEZWZhdWx0QXVkaW9EZXN0aW5hdGlvbk5vZGUoQXVkaW9Db250ZXh0JiBjb250
ZXh0KQorRGVmYXVsdEF1ZGlvRGVzdGluYXRpb25Ob2RlOjpEZWZhdWx0QXVkaW9EZXN0aW5hdGlv
bk5vZGUoQXVkaW9Db250ZXh0QmFzZSYgY29udGV4dCkKICAgICA6IEF1ZGlvRGVzdGluYXRpb25O
b2RlKGNvbnRleHQsIEF1ZGlvRGVzdGluYXRpb246OmhhcmR3YXJlU2FtcGxlUmF0ZSgpKQogewog
ICAgIC8vIE5vZGUtc3BlY2lmaWMgZGVmYXVsdCBtaXhpbmcgcnVsZXMuCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0RlZmF1bHRBdWRpb0Rlc3RpbmF0aW9uTm9k
ZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9EZWZhdWx0QXVkaW9EZXN0aW5h
dGlvbk5vZGUuaAppbmRleCA2ZmQ5NWMwZjMwMS4uOTZjODM3Yzk5MzQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vRGVmYXVsdEF1ZGlvRGVzdGluYXRpb25Ob2Rl
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9EZWZhdWx0QXVkaW9EZXN0
aW5hdGlvbk5vZGUuaApAQCAtMzMsNyArMzMsNyBAQCBjbGFzcyBBdWRpb0Rlc3RpbmF0aW9uOwog
Y2xhc3MgRGVmYXVsdEF1ZGlvRGVzdGluYXRpb25Ob2RlIGZpbmFsIDogcHVibGljIEF1ZGlvRGVz
dGluYXRpb25Ob2RlIHsKICAgICBXVEZfTUFLRV9JU09fQUxMT0NBVEVEKERlZmF1bHRBdWRpb0Rl
c3RpbmF0aW9uTm9kZSk7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxEZWZhdWx0QXVkaW9EZXN0
aW5hdGlvbk5vZGU+IGNyZWF0ZShBdWRpb0NvbnRleHQmIGNvbnRleHQpCisgICAgc3RhdGljIFJl
ZjxEZWZhdWx0QXVkaW9EZXN0aW5hdGlvbk5vZGU+IGNyZWF0ZShBdWRpb0NvbnRleHRCYXNlJiBj
b250ZXh0KQogICAgIHsKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRGVmYXVsdEF1ZGlv
RGVzdGluYXRpb25Ob2RlKGNvbnRleHQpKTsgICAgIAogICAgIH0KQEAgLTQxLDcgKzQxLDcgQEAg
cHVibGljOgogICAgIHZpcnR1YWwgfkRlZmF1bHRBdWRpb0Rlc3RpbmF0aW9uTm9kZSgpOwogICAg
IAogcHJpdmF0ZToKLSAgICBleHBsaWNpdCBEZWZhdWx0QXVkaW9EZXN0aW5hdGlvbk5vZGUoQXVk
aW9Db250ZXh0Jik7CisgICAgZXhwbGljaXQgRGVmYXVsdEF1ZGlvRGVzdGluYXRpb25Ob2RlKEF1
ZGlvQ29udGV4dEJhc2UmKTsKICAgICB2b2lkIGNyZWF0ZURlc3RpbmF0aW9uKCk7CiAKICAgICB2
b2lkIGluaXRpYWxpemUoKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViYXVkaW8vRGVsYXlOb2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVk
aW8vRGVsYXlOb2RlLmNwcAppbmRleCA4MWJkN2QxOWIyNy4uNDA1MjdjODFmOWYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vRGVsYXlOb2RlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0RlbGF5Tm9kZS5jcHAKQEAgLTM3LDE0ICsz
NywxNCBAQCBXVEZfTUFLRV9JU09fQUxMT0NBVEVEX0lNUEwoRGVsYXlOb2RlKTsKIAogY29uc3Qg
ZG91YmxlIG1heGltdW1BbGxvd2VkRGVsYXlUaW1lID0gMTgwOwogCi1pbmxpbmUgRGVsYXlOb2Rl
OjpEZWxheU5vZGUoQXVkaW9Db250ZXh0JiBjb250ZXh0LCBmbG9hdCBzYW1wbGVSYXRlLCBkb3Vi
bGUgbWF4RGVsYXlUaW1lKQoraW5saW5lIERlbGF5Tm9kZTo6RGVsYXlOb2RlKEF1ZGlvQ29udGV4
dEJhc2UmIGNvbnRleHQsIGZsb2F0IHNhbXBsZVJhdGUsIGRvdWJsZSBtYXhEZWxheVRpbWUpCiAg
ICAgOiBBdWRpb0Jhc2ljUHJvY2Vzc29yTm9kZShjb250ZXh0LCBzYW1wbGVSYXRlKQogewogICAg
IHNldE5vZGVUeXBlKE5vZGVUeXBlRGVsYXkpOwogICAgIG1fcHJvY2Vzc29yID0gbWFrZVVuaXF1
ZTxEZWxheVByb2Nlc3Nvcj4oY29udGV4dCwgc2FtcGxlUmF0ZSwgMSwgbWF4RGVsYXlUaW1lKTsK
IH0KIAotRXhjZXB0aW9uT3I8UmVmPERlbGF5Tm9kZT4+IERlbGF5Tm9kZTo6Y3JlYXRlKEF1ZGlv
Q29udGV4dCYgY29udGV4dCwgZmxvYXQgc2FtcGxlUmF0ZSwgZG91YmxlIG1heERlbGF5VGltZSkK
K0V4Y2VwdGlvbk9yPFJlZjxEZWxheU5vZGU+PiBEZWxheU5vZGU6OmNyZWF0ZShBdWRpb0NvbnRl
eHRCYXNlJiBjb250ZXh0LCBmbG9hdCBzYW1wbGVSYXRlLCBkb3VibGUgbWF4RGVsYXlUaW1lKQog
ewogICAgIGlmIChtYXhEZWxheVRpbWUgPD0gMCB8fCBtYXhEZWxheVRpbWUgPj0gbWF4aW11bUFs
bG93ZWREZWxheVRpbWUpCiAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBOb3RTdXBwb3J0ZWRF
cnJvciB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9EZWxh
eU5vZGUuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vRGVsYXlOb2RlLmgKaW5k
ZXggYzllY2FkOWY5ZmQuLmI2YWZkZDBmOTMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmF1ZGlvL0RlbGF5Tm9kZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViYXVkaW8vRGVsYXlOb2RlLmgKQEAgLTMxLDEyICszMSwxMiBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiBjbGFzcyBEZWxheU5vZGUgZmluYWwgOiBwdWJsaWMgQXVkaW9CYXNpY1Byb2Nlc3Nvck5v
ZGUgewogICAgIFdURl9NQUtFX0lTT19BTExPQ0FURUQoRGVsYXlOb2RlKTsKIHB1YmxpYzoKLSAg
ICBzdGF0aWMgRXhjZXB0aW9uT3I8UmVmPERlbGF5Tm9kZT4+IGNyZWF0ZShBdWRpb0NvbnRleHQm
LCBmbG9hdCBzYW1wbGVSYXRlLCBkb3VibGUgbWF4RGVsYXlUaW1lKTsKKyAgICBzdGF0aWMgRXhj
ZXB0aW9uT3I8UmVmPERlbGF5Tm9kZT4+IGNyZWF0ZShBdWRpb0NvbnRleHRCYXNlJiwgZmxvYXQg
c2FtcGxlUmF0ZSwgZG91YmxlIG1heERlbGF5VGltZSk7CiAKICAgICBBdWRpb1BhcmFtKiBkZWxh
eVRpbWUoKTsKIAogcHJpdmF0ZToKLSAgICBEZWxheU5vZGUoQXVkaW9Db250ZXh0JiwgZmxvYXQg
c2FtcGxlUmF0ZSwgZG91YmxlIG1heERlbGF5VGltZSk7CisgICAgRGVsYXlOb2RlKEF1ZGlvQ29u
dGV4dEJhc2UmLCBmbG9hdCBzYW1wbGVSYXRlLCBkb3VibGUgbWF4RGVsYXlUaW1lKTsKIH07CiAK
IH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViYXVkaW8vRGVsYXlQcm9jZXNzb3IuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJhdWRpby9EZWxheVByb2Nlc3Nvci5jcHAKaW5kZXggMTAzNjZlZjZlYWYuLmNiYmZkOWZhMmZh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0RlbGF5UHJvY2Vz
c29yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0RlbGF5UHJvY2Vz
c29yLmNwcApAQCAtMzIsNyArMzIsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLURlbGF5
UHJvY2Vzc29yOjpEZWxheVByb2Nlc3NvcihBdWRpb0NvbnRleHQmIGNvbnRleHQsIGZsb2F0IHNh
bXBsZVJhdGUsIHVuc2lnbmVkIG51bWJlck9mQ2hhbm5lbHMsIGRvdWJsZSBtYXhEZWxheVRpbWUp
CitEZWxheVByb2Nlc3Nvcjo6RGVsYXlQcm9jZXNzb3IoQXVkaW9Db250ZXh0QmFzZSYgY29udGV4
dCwgZmxvYXQgc2FtcGxlUmF0ZSwgdW5zaWduZWQgbnVtYmVyT2ZDaGFubmVscywgZG91YmxlIG1h
eERlbGF5VGltZSkKICAgICA6IEF1ZGlvRFNQS2VybmVsUHJvY2Vzc29yKHNhbXBsZVJhdGUsIG51
bWJlck9mQ2hhbm5lbHMpCiAgICAgLCBtX21heERlbGF5VGltZShtYXhEZWxheVRpbWUpCiB7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0RlbGF5UHJvY2Vzc29y
LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0RlbGF5UHJvY2Vzc29yLmgKaW5k
ZXggODVkOWNjNmQ3ZmQuLmNiYWM3OWVjZjBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmF1ZGlvL0RlbGF5UHJvY2Vzc29yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJhdWRpby9EZWxheVByb2Nlc3Nvci5oCkBAIC0zNiw3ICszNiw3IEBAIGNsYXNzIEF1
ZGlvRFNQS2VybmVsOwogY2xhc3MgRGVsYXlQcm9jZXNzb3IgZmluYWwgOiBwdWJsaWMgQXVkaW9E
U1BLZXJuZWxQcm9jZXNzb3IgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGlj
OgotICAgIERlbGF5UHJvY2Vzc29yKEF1ZGlvQ29udGV4dCYsIGZsb2F0IHNhbXBsZVJhdGUsIHVu
c2lnbmVkIG51bWJlck9mQ2hhbm5lbHMsIGRvdWJsZSBtYXhEZWxheVRpbWUpOworICAgIERlbGF5
UHJvY2Vzc29yKEF1ZGlvQ29udGV4dEJhc2UmLCBmbG9hdCBzYW1wbGVSYXRlLCB1bnNpZ25lZCBu
dW1iZXJPZkNoYW5uZWxzLCBkb3VibGUgbWF4RGVsYXlUaW1lKTsKICAgICB2aXJ0dWFsIH5EZWxh
eVByb2Nlc3NvcigpOwogICAgIAogICAgIHN0ZDo6dW5pcXVlX3B0cjxBdWRpb0RTUEtlcm5lbD4g
Y3JlYXRlS2VybmVsKCkgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmF1ZGlvL0R5bmFtaWNzQ29tcHJlc3Nvck5vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJhdWRpby9EeW5hbWljc0NvbXByZXNzb3JOb2RlLmNwcAppbmRleCAxNDA5NmQ4
ZjBjNS4uYzMzZDFkZTcyZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
YXVkaW8vRHluYW1pY3NDb21wcmVzc29yTm9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJhdWRpby9EeW5hbWljc0NvbXByZXNzb3JOb2RlLmNwcApAQCAtNDEsNyArNDEsNyBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFdURl9NQUtFX0lTT19BTExPQ0FURURfSU1QTChEeW5h
bWljc0NvbXByZXNzb3JOb2RlKTsKIAotRHluYW1pY3NDb21wcmVzc29yTm9kZTo6RHluYW1pY3ND
b21wcmVzc29yTm9kZShBdWRpb0NvbnRleHQmIGNvbnRleHQsIGZsb2F0IHNhbXBsZVJhdGUpCitE
eW5hbWljc0NvbXByZXNzb3JOb2RlOjpEeW5hbWljc0NvbXByZXNzb3JOb2RlKEF1ZGlvQ29udGV4
dEJhc2UmIGNvbnRleHQsIGZsb2F0IHNhbXBsZVJhdGUpCiAgICAgOiBBdWRpb05vZGUoY29udGV4
dCwgc2FtcGxlUmF0ZSkKIHsKICAgICBzZXROb2RlVHlwZShOb2RlVHlwZUR5bmFtaWNzQ29tcHJl
c3Nvcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0R5bmFt
aWNzQ29tcHJlc3Nvck5vZGUuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vRHlu
YW1pY3NDb21wcmVzc29yTm9kZS5oCmluZGV4IDQ0Y2JmYmFhMDU5Li5iNzA1M2IyMjE3MyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9EeW5hbWljc0NvbXByZXNz
b3JOb2RlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9EeW5hbWljc0Nv
bXByZXNzb3JOb2RlLmgKQEAgLTM1LDcgKzM1LDcgQEAgY2xhc3MgRHluYW1pY3NDb21wcmVzc29y
OwogY2xhc3MgRHluYW1pY3NDb21wcmVzc29yTm9kZSBmaW5hbCA6IHB1YmxpYyBBdWRpb05vZGUg
ewogICAgIFdURl9NQUtFX0lTT19BTExPQ0FURUQoRHluYW1pY3NDb21wcmVzc29yTm9kZSk7CiBw
dWJsaWM6Ci0gICAgc3RhdGljIFJlZjxEeW5hbWljc0NvbXByZXNzb3JOb2RlPiBjcmVhdGUoQXVk
aW9Db250ZXh0JiBjb250ZXh0LCBmbG9hdCBzYW1wbGVSYXRlKQorICAgIHN0YXRpYyBSZWY8RHlu
YW1pY3NDb21wcmVzc29yTm9kZT4gY3JlYXRlKEF1ZGlvQ29udGV4dEJhc2UmIGNvbnRleHQsIGZs
b2F0IHNhbXBsZVJhdGUpCiAgICAgewogICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBEeW5h
bWljc0NvbXByZXNzb3JOb2RlKGNvbnRleHQsIHNhbXBsZVJhdGUpKTsKICAgICB9CkBAIC02Miw3
ICs2Miw3IEBAIHByaXZhdGU6CiAgICAgZG91YmxlIHRhaWxUaW1lKCkgY29uc3Qgb3ZlcnJpZGU7
CiAgICAgZG91YmxlIGxhdGVuY3lUaW1lKCkgY29uc3Qgb3ZlcnJpZGU7CiAKLSAgICBEeW5hbWlj
c0NvbXByZXNzb3JOb2RlKEF1ZGlvQ29udGV4dCYsIGZsb2F0IHNhbXBsZVJhdGUpOworICAgIER5
bmFtaWNzQ29tcHJlc3Nvck5vZGUoQXVkaW9Db250ZXh0QmFzZSYsIGZsb2F0IHNhbXBsZVJhdGUp
OwogCiAgICAgc3RkOjp1bmlxdWVfcHRyPER5bmFtaWNzQ29tcHJlc3Nvcj4gbV9keW5hbWljc0Nv
bXByZXNzb3I7CiAgICAgUmVmUHRyPEF1ZGlvUGFyYW0+IG1fdGhyZXNob2xkOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9HYWluTm9kZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0dhaW5Ob2RlLmNwcAppbmRleCAyNTdkZjJlY2UyMy4u
OTg0ZDExOTRiZGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8v
R2Fpbk5vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vR2Fpbk5v
ZGUuY3BwCkBAIC0zNyw3ICszNyw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogV1RGX01BS0Vf
SVNPX0FMTE9DQVRFRF9JTVBMKEdhaW5Ob2RlKTsKIAotR2Fpbk5vZGU6OkdhaW5Ob2RlKEF1ZGlv
Q29udGV4dCYgY29udGV4dCwgZmxvYXQgc2FtcGxlUmF0ZSkKK0dhaW5Ob2RlOjpHYWluTm9kZShB
dWRpb0NvbnRleHRCYXNlJiBjb250ZXh0LCBmbG9hdCBzYW1wbGVSYXRlKQogICAgIDogQXVkaW9O
b2RlKGNvbnRleHQsIHNhbXBsZVJhdGUpCiAgICAgLCBtX2xhc3RHYWluKDEuMCkKICAgICAsIG1f
c2FtcGxlQWNjdXJhdGVHYWluVmFsdWVzKEF1ZGlvTm9kZTo6UHJvY2Vzc2luZ1NpemVJbkZyYW1l
cykgLy8gRklYTUU6IGNhbiBwcm9iYWJseSBzaGFyZSB0ZW1wIGJ1ZmZlciBpbiBjb250ZXh0CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0dhaW5Ob2RlLmggYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0dhaW5Ob2RlLmgKaW5kZXggZmE4NWIwYjlm
ZjUuLmRjZjg1NWE5MWM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1
ZGlvL0dhaW5Ob2RlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9HYWlu
Tm9kZS5oCkBAIC0zOCw3ICszOCw3IEBAIGNsYXNzIEF1ZGlvQ29udGV4dDsKIGNsYXNzIEdhaW5O
b2RlIGZpbmFsIDogcHVibGljIEF1ZGlvTm9kZSB7CiAgICAgV1RGX01BS0VfSVNPX0FMTE9DQVRF
RChHYWluTm9kZSk7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxHYWluTm9kZT4gY3JlYXRlKEF1
ZGlvQ29udGV4dCYgY29udGV4dCwgZmxvYXQgc2FtcGxlUmF0ZSkKKyAgICBzdGF0aWMgUmVmPEdh
aW5Ob2RlPiBjcmVhdGUoQXVkaW9Db250ZXh0QmFzZSYgY29udGV4dCwgZmxvYXQgc2FtcGxlUmF0
ZSkKICAgICB7CiAgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEdhaW5Ob2RlKGNvbnRleHQs
IHNhbXBsZVJhdGUpKTsKICAgICB9CkBAIC01Nyw3ICs1Nyw3IEBAIHByaXZhdGU6CiAgICAgZG91
YmxlIHRhaWxUaW1lKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gMDsgfQogICAgIGRvdWJsZSBs
YXRlbmN5VGltZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIDA7IH0KIAotICAgIEdhaW5Ob2Rl
KEF1ZGlvQ29udGV4dCYsIGZsb2F0IHNhbXBsZVJhdGUpOworICAgIEdhaW5Ob2RlKEF1ZGlvQ29u
dGV4dEJhc2UmLCBmbG9hdCBzYW1wbGVSYXRlKTsKIAogICAgIGZsb2F0IG1fbGFzdEdhaW47IC8v
IGZvciBkZS16aXBwZXJpbmcKICAgICBSZWZQdHI8QXVkaW9QYXJhbT4gbV9nYWluOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9NZWRpYUVsZW1lbnRBdWRpb1Nv
dXJjZU5vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9NZWRpYUVsZW1l
bnRBdWRpb1NvdXJjZU5vZGUuY3BwCmluZGV4IDBlNTk4MWZhNjg2Li5jNjc1ZDdkZTcxNiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9NZWRpYUVsZW1lbnRBdWRp
b1NvdXJjZU5vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vTWVk
aWFFbGVtZW50QXVkaW9Tb3VyY2VOb2RlLmNwcApAQCAtNDMsMTIgKzQzLDEyIEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAogV1RGX01BS0VfSVNPX0FMTE9DQVRFRF9JTVBMKE1lZGlhRWxlbWVudEF1
ZGlvU291cmNlTm9kZSk7CiAKLVJlZjxNZWRpYUVsZW1lbnRBdWRpb1NvdXJjZU5vZGU+IE1lZGlh
RWxlbWVudEF1ZGlvU291cmNlTm9kZTo6Y3JlYXRlKEF1ZGlvQ29udGV4dCYgY29udGV4dCwgSFRN
TE1lZGlhRWxlbWVudCYgbWVkaWFFbGVtZW50KQorUmVmPE1lZGlhRWxlbWVudEF1ZGlvU291cmNl
Tm9kZT4gTWVkaWFFbGVtZW50QXVkaW9Tb3VyY2VOb2RlOjpjcmVhdGUoQXVkaW9Db250ZXh0QmFz
ZSYgY29udGV4dCwgSFRNTE1lZGlhRWxlbWVudCYgbWVkaWFFbGVtZW50KQogewogICAgIHJldHVy
biBhZG9wdFJlZigqbmV3IE1lZGlhRWxlbWVudEF1ZGlvU291cmNlTm9kZShjb250ZXh0LCBtZWRp
YUVsZW1lbnQpKTsKIH0KIAotTWVkaWFFbGVtZW50QXVkaW9Tb3VyY2VOb2RlOjpNZWRpYUVsZW1l
bnRBdWRpb1NvdXJjZU5vZGUoQXVkaW9Db250ZXh0JiBjb250ZXh0LCBIVE1MTWVkaWFFbGVtZW50
JiBtZWRpYUVsZW1lbnQpCitNZWRpYUVsZW1lbnRBdWRpb1NvdXJjZU5vZGU6Ok1lZGlhRWxlbWVu
dEF1ZGlvU291cmNlTm9kZShBdWRpb0NvbnRleHRCYXNlJiBjb250ZXh0LCBIVE1MTWVkaWFFbGVt
ZW50JiBtZWRpYUVsZW1lbnQpCiAgICAgOiBBdWRpb05vZGUoY29udGV4dCwgY29udGV4dC5zYW1w
bGVSYXRlKCkpCiAgICAgLCBtX21lZGlhRWxlbWVudChtZWRpYUVsZW1lbnQpCiAgICAgLCBtX3Nv
dXJjZU51bWJlck9mQ2hhbm5lbHMoMCkKQEAgLTk3LDcgKzk3LDcgQEAgdm9pZCBNZWRpYUVsZW1l
bnRBdWRpb1NvdXJjZU5vZGU6OnNldEZvcm1hdChzaXplX3QgbnVtYmVyT2ZDaGFubmVscywgZmxv
YXQgc291cmMKIAogICAgICAgICB7CiAgICAgICAgICAgICAvLyBUaGUgY29udGV4dCBtdXN0IGJl
IGxvY2tlZCB3aGVuIGNoYW5naW5nIHRoZSBudW1iZXIgb2Ygb3V0cHV0IGNoYW5uZWxzLgotICAg
ICAgICAgICAgQXVkaW9Db250ZXh0OjpBdXRvTG9ja2VyIGNvbnRleHRMb2NrZXIoY29udGV4dCgp
KTsKKyAgICAgICAgICAgIEF1ZGlvQ29udGV4dEJhc2U6OkF1dG9Mb2NrZXIgY29udGV4dExvY2tl
cihjb250ZXh0KCkpOwogCiAgICAgICAgICAgICAvLyBEbyBhbnkgbmVjZXNzc2FyeSByZS1jb25m
aWd1cmF0aW9uIHRvIHRoZSBvdXRwdXQncyBudW1iZXIgb2YgY2hhbm5lbHMuCiAgICAgICAgICAg
ICBvdXRwdXQoMCktPnNldE51bWJlck9mQ2hhbm5lbHMobnVtYmVyT2ZDaGFubmVscyk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL01lZGlhRWxlbWVudEF1ZGlv
U291cmNlTm9kZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9NZWRpYUVsZW1l
bnRBdWRpb1NvdXJjZU5vZGUuaAppbmRleCAzYTEzMTU0MTVmMS4uNzFkMGVkMTM4YTUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vTWVkaWFFbGVtZW50QXVkaW9T
b3VyY2VOb2RlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9NZWRpYUVs
ZW1lbnRBdWRpb1NvdXJjZU5vZGUuaApAQCAtNDAsNyArNDAsNyBAQCBjbGFzcyBBdWRpb0NvbnRl
eHQ7CiBjbGFzcyBNZWRpYUVsZW1lbnRBdWRpb1NvdXJjZU5vZGUgZmluYWwgOiBwdWJsaWMgQXVk
aW9Ob2RlLCBwdWJsaWMgQXVkaW9Tb3VyY2VQcm92aWRlckNsaWVudCB7CiAgICAgV1RGX01BS0Vf
SVNPX0FMTE9DQVRFRChNZWRpYUVsZW1lbnRBdWRpb1NvdXJjZU5vZGUpOwogcHVibGljOgotICAg
IHN0YXRpYyBSZWY8TWVkaWFFbGVtZW50QXVkaW9Tb3VyY2VOb2RlPiBjcmVhdGUoQXVkaW9Db250
ZXh0JiwgSFRNTE1lZGlhRWxlbWVudCYpOworICAgIHN0YXRpYyBSZWY8TWVkaWFFbGVtZW50QXVk
aW9Tb3VyY2VOb2RlPiBjcmVhdGUoQXVkaW9Db250ZXh0QmFzZSYsIEhUTUxNZWRpYUVsZW1lbnQm
KTsKIAogICAgIHZpcnR1YWwgfk1lZGlhRWxlbWVudEF1ZGlvU291cmNlTm9kZSgpOwogCkBAIC01
Nyw3ICs1Nyw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHVubG9jaygpOwogCiBwcml2YXRlOgotICAg
IE1lZGlhRWxlbWVudEF1ZGlvU291cmNlTm9kZShBdWRpb0NvbnRleHQmLCBIVE1MTWVkaWFFbGVt
ZW50Jik7CisgICAgTWVkaWFFbGVtZW50QXVkaW9Tb3VyY2VOb2RlKEF1ZGlvQ29udGV4dEJhc2Um
LCBIVE1MTWVkaWFFbGVtZW50Jik7CiAKICAgICBkb3VibGUgdGFpbFRpbWUoKSBjb25zdCBvdmVy
cmlkZSB7IHJldHVybiAwOyB9CiAgICAgZG91YmxlIGxhdGVuY3lUaW1lKCkgY29uc3Qgb3ZlcnJp
ZGUgeyByZXR1cm4gMDsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJh
dWRpby9NZWRpYVN0cmVhbUF1ZGlvRGVzdGluYXRpb25Ob2RlLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViYXVkaW8vTWVkaWFTdHJlYW1BdWRpb0Rlc3RpbmF0aW9uTm9kZS5jcHAKaW5k
ZXggZDc2NjI5MzAzMDguLjMwZjFhMjIyYmUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmF1ZGlvL01lZGlhU3RyZWFtQXVkaW9EZXN0aW5hdGlvbk5vZGUuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vTWVkaWFTdHJlYW1BdWRpb0Rlc3RpbmF0
aW9uTm9kZS5jcHAKQEAgLTM5LDEyICszOSwxMiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFdU
Rl9NQUtFX0lTT19BTExPQ0FURURfSU1QTChNZWRpYVN0cmVhbUF1ZGlvRGVzdGluYXRpb25Ob2Rl
KTsKIAotUmVmPE1lZGlhU3RyZWFtQXVkaW9EZXN0aW5hdGlvbk5vZGU+IE1lZGlhU3RyZWFtQXVk
aW9EZXN0aW5hdGlvbk5vZGU6OmNyZWF0ZShBdWRpb0NvbnRleHQmIGNvbnRleHQsIHNpemVfdCBu
dW1iZXJPZkNoYW5uZWxzKQorUmVmPE1lZGlhU3RyZWFtQXVkaW9EZXN0aW5hdGlvbk5vZGU+IE1l
ZGlhU3RyZWFtQXVkaW9EZXN0aW5hdGlvbk5vZGU6OmNyZWF0ZShBdWRpb0NvbnRleHRCYXNlJiBj
b250ZXh0LCBzaXplX3QgbnVtYmVyT2ZDaGFubmVscykKIHsKICAgICByZXR1cm4gYWRvcHRSZWYo
Km5ldyBNZWRpYVN0cmVhbUF1ZGlvRGVzdGluYXRpb25Ob2RlKGNvbnRleHQsIG51bWJlck9mQ2hh
bm5lbHMpKTsKIH0KIAotTWVkaWFTdHJlYW1BdWRpb0Rlc3RpbmF0aW9uTm9kZTo6TWVkaWFTdHJl
YW1BdWRpb0Rlc3RpbmF0aW9uTm9kZShBdWRpb0NvbnRleHQmIGNvbnRleHQsIHNpemVfdCBudW1i
ZXJPZkNoYW5uZWxzKQorTWVkaWFTdHJlYW1BdWRpb0Rlc3RpbmF0aW9uTm9kZTo6TWVkaWFTdHJl
YW1BdWRpb0Rlc3RpbmF0aW9uTm9kZShBdWRpb0NvbnRleHRCYXNlJiBjb250ZXh0LCBzaXplX3Qg
bnVtYmVyT2ZDaGFubmVscykKICAgICA6IEF1ZGlvQmFzaWNJbnNwZWN0b3JOb2RlKGNvbnRleHQs
IGNvbnRleHQuc2FtcGxlUmF0ZSgpLCBudW1iZXJPZkNoYW5uZWxzKQogICAgICwgbV9zb3VyY2Uo
TWVkaWFTdHJlYW1BdWRpb1NvdXJjZTo6Y3JlYXRlKGNvbnRleHQuc2FtcGxlUmF0ZSgpKSkKICAg
ICAsIG1fc3RyZWFtKE1lZGlhU3RyZWFtOjpjcmVhdGUoKmNvbnRleHQuZG9jdW1lbnQoKSwgTWVk
aWFTdHJlYW1Qcml2YXRlOjpjcmVhdGUoY29udGV4dC5kb2N1bWVudCgpLT5sb2dnZXIoKSwgbV9z
b3VyY2UuY29weVJlZigpKSkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmF1ZGlvL01lZGlhU3RyZWFtQXVkaW9EZXN0aW5hdGlvbk5vZGUuaCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViYXVkaW8vTWVkaWFTdHJlYW1BdWRpb0Rlc3RpbmF0aW9uTm9kZS5oCmluZGV4
IGY1YTdlOGZlYzRhLi5kYmFkOTI4ZDc5NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJhdWRpby9NZWRpYVN0cmVhbUF1ZGlvRGVzdGluYXRpb25Ob2RlLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9NZWRpYVN0cmVhbUF1ZGlvRGVzdGluYXRpb25O
b2RlLmgKQEAgLTMyLDEzICszMiwxMyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNz
IEF1ZGlvQ29udGV4dDsKK2NsYXNzIEF1ZGlvQ29udGV4dEJhc2U7CiBjbGFzcyBNZWRpYVN0cmVh
bUF1ZGlvU291cmNlOwogCiBjbGFzcyBNZWRpYVN0cmVhbUF1ZGlvRGVzdGluYXRpb25Ob2RlIGZp
bmFsIDogcHVibGljIEF1ZGlvQmFzaWNJbnNwZWN0b3JOb2RlIHsKICAgICBXVEZfTUFLRV9JU09f
QUxMT0NBVEVEKE1lZGlhU3RyZWFtQXVkaW9EZXN0aW5hdGlvbk5vZGUpOwogcHVibGljOgotICAg
IHN0YXRpYyBSZWY8TWVkaWFTdHJlYW1BdWRpb0Rlc3RpbmF0aW9uTm9kZT4gY3JlYXRlKEF1ZGlv
Q29udGV4dCYsIHNpemVfdCBudW1iZXJPZkNoYW5uZWxzKTsKKyAgICBzdGF0aWMgUmVmPE1lZGlh
U3RyZWFtQXVkaW9EZXN0aW5hdGlvbk5vZGU+IGNyZWF0ZShBdWRpb0NvbnRleHRCYXNlJiwgc2l6
ZV90IG51bWJlck9mQ2hhbm5lbHMpOwogCiAgICAgdmlydHVhbCB+TWVkaWFTdHJlYW1BdWRpb0Rl
c3RpbmF0aW9uTm9kZSgpOwogCkBAIC00OSw3ICs0OSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHJl
c2V0KCkgZmluYWw7CiAgICAgCiBwcml2YXRlOgotICAgIE1lZGlhU3RyZWFtQXVkaW9EZXN0aW5h
dGlvbk5vZGUoQXVkaW9Db250ZXh0Jiwgc2l6ZV90IG51bWJlck9mQ2hhbm5lbHMpOworICAgIE1l
ZGlhU3RyZWFtQXVkaW9EZXN0aW5hdGlvbk5vZGUoQXVkaW9Db250ZXh0QmFzZSYsIHNpemVfdCBu
dW1iZXJPZkNoYW5uZWxzKTsKIAogICAgIGRvdWJsZSB0YWlsVGltZSgpIGNvbnN0IGZpbmFsIHsg
cmV0dXJuIDA7IH0KICAgICBkb3VibGUgbGF0ZW5jeVRpbWUoKSBjb25zdCBmaW5hbCB7IHJldHVy
biAwOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL01lZGlh
U3RyZWFtQXVkaW9Tb3VyY2VOb2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVk
aW8vTWVkaWFTdHJlYW1BdWRpb1NvdXJjZU5vZGUuY3BwCmluZGV4IDFiNGZiNmQxOTIyLi4zNWU1
NWE5MjAyYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9NZWRp
YVN0cmVhbUF1ZGlvU291cmNlTm9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJhdWRpby9NZWRpYVN0cmVhbUF1ZGlvU291cmNlTm9kZS5jcHAKQEAgLTM4LDEyICszOCwxMiBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFdURl9NQUtFX0lTT19BTExPQ0FURURfSU1QTChNZWRp
YVN0cmVhbUF1ZGlvU291cmNlTm9kZSk7CiAKLVJlZjxNZWRpYVN0cmVhbUF1ZGlvU291cmNlTm9k
ZT4gTWVkaWFTdHJlYW1BdWRpb1NvdXJjZU5vZGU6OmNyZWF0ZShBdWRpb0NvbnRleHQmIGNvbnRl
eHQsIE1lZGlhU3RyZWFtJiBtZWRpYVN0cmVhbSwgTWVkaWFTdHJlYW1UcmFjayYgYXVkaW9UcmFj
aykKK1JlZjxNZWRpYVN0cmVhbUF1ZGlvU291cmNlTm9kZT4gTWVkaWFTdHJlYW1BdWRpb1NvdXJj
ZU5vZGU6OmNyZWF0ZShBdWRpb0NvbnRleHRCYXNlJiBjb250ZXh0LCBNZWRpYVN0cmVhbSYgbWVk
aWFTdHJlYW0sIE1lZGlhU3RyZWFtVHJhY2smIGF1ZGlvVHJhY2spCiB7CiAgICAgcmV0dXJuIGFk
b3B0UmVmKCpuZXcgTWVkaWFTdHJlYW1BdWRpb1NvdXJjZU5vZGUoY29udGV4dCwgbWVkaWFTdHJl
YW0sIGF1ZGlvVHJhY2spKTsKIH0KIAotTWVkaWFTdHJlYW1BdWRpb1NvdXJjZU5vZGU6Ok1lZGlh
U3RyZWFtQXVkaW9Tb3VyY2VOb2RlKEF1ZGlvQ29udGV4dCYgY29udGV4dCwgTWVkaWFTdHJlYW0m
IG1lZGlhU3RyZWFtLCBNZWRpYVN0cmVhbVRyYWNrJiBhdWRpb1RyYWNrKQorTWVkaWFTdHJlYW1B
dWRpb1NvdXJjZU5vZGU6Ok1lZGlhU3RyZWFtQXVkaW9Tb3VyY2VOb2RlKEF1ZGlvQ29udGV4dEJh
c2UmIGNvbnRleHQsIE1lZGlhU3RyZWFtJiBtZWRpYVN0cmVhbSwgTWVkaWFTdHJlYW1UcmFjayYg
YXVkaW9UcmFjaykKICAgICA6IEF1ZGlvTm9kZShjb250ZXh0LCBjb250ZXh0LnNhbXBsZVJhdGUo
KSkKICAgICAsIG1fbWVkaWFTdHJlYW0obWVkaWFTdHJlYW0pCiAgICAgLCBtX2F1ZGlvVHJhY2so
YXVkaW9UcmFjaykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8v
TWVkaWFTdHJlYW1BdWRpb1NvdXJjZU5vZGUuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
YXVkaW8vTWVkaWFTdHJlYW1BdWRpb1NvdXJjZU5vZGUuaAppbmRleCBlM2VkZWZlMWJkNS4uYzcy
ZDMxMjIzM2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vTWVk
aWFTdHJlYW1BdWRpb1NvdXJjZU5vZGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmF1ZGlvL01lZGlhU3RyZWFtQXVkaW9Tb3VyY2VOb2RlLmgKQEAgLTQwLDcgKzQwLDcgQEAgY2xh
c3MgTXVsdGlDaGFubmVsUmVzYW1wbGVyOwogY2xhc3MgTWVkaWFTdHJlYW1BdWRpb1NvdXJjZU5v
ZGUgZmluYWwgOiBwdWJsaWMgQXVkaW9Ob2RlLCBwdWJsaWMgQXVkaW9Tb3VyY2VQcm92aWRlckNs
aWVudCB7CiAgICAgV1RGX01BS0VfSVNPX0FMTE9DQVRFRChNZWRpYVN0cmVhbUF1ZGlvU291cmNl
Tm9kZSk7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxNZWRpYVN0cmVhbUF1ZGlvU291cmNlTm9k
ZT4gY3JlYXRlKEF1ZGlvQ29udGV4dCYsIE1lZGlhU3RyZWFtJiwgTWVkaWFTdHJlYW1UcmFjayYp
OworICAgIHN0YXRpYyBSZWY8TWVkaWFTdHJlYW1BdWRpb1NvdXJjZU5vZGU+IGNyZWF0ZShBdWRp
b0NvbnRleHRCYXNlJiwgTWVkaWFTdHJlYW0mLCBNZWRpYVN0cmVhbVRyYWNrJik7CiAKICAgICB2
aXJ0dWFsIH5NZWRpYVN0cmVhbUF1ZGlvU291cmNlTm9kZSgpOwogCkBAIC01NCw3ICs1NCw3IEBA
IHB1YmxpYzoKICAgICB2b2lkIHNldEZvcm1hdChzaXplX3QgbnVtYmVyT2ZDaGFubmVscywgZmxv
YXQgc2FtcGxlUmF0ZSkgb3ZlcnJpZGU7CiAKIHByaXZhdGU6Ci0gICAgTWVkaWFTdHJlYW1BdWRp
b1NvdXJjZU5vZGUoQXVkaW9Db250ZXh0JiwgTWVkaWFTdHJlYW0mLCBNZWRpYVN0cmVhbVRyYWNr
Jik7CisgICAgTWVkaWFTdHJlYW1BdWRpb1NvdXJjZU5vZGUoQXVkaW9Db250ZXh0QmFzZSYsIE1l
ZGlhU3RyZWFtJiwgTWVkaWFTdHJlYW1UcmFjayYpOwogCiAgICAgZG91YmxlIHRhaWxUaW1lKCkg
Y29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gMDsgfQogICAgIGRvdWJsZSBsYXRlbmN5VGltZSgpIGNv
bnN0IG92ZXJyaWRlIHsgcmV0dXJuIDA7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViYXVkaW8vT2ZmbGluZUF1ZGlvQ29udGV4dC5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmF1ZGlvL09mZmxpbmVBdWRpb0NvbnRleHQuaWRsCmluZGV4IGM2ZTBkNzRmMDJm
Li42ZjEyMmE3YzNjOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRp
by9PZmZsaW5lQXVkaW9Db250ZXh0LmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmF1ZGlvL09mZmxpbmVBdWRpb0NvbnRleHQuaWRsCkBAIC0yOCw2ICsyOCw2IEBACiAgICAgQ29u
c3RydWN0b3IodW5zaWduZWQgbG9uZyBudW1iZXJPZkNoYW5uZWxzLCB1bnNpZ25lZCBsb25nIG51
bWJlck9mRnJhbWVzLCB1bnJlc3RyaWN0ZWQgZmxvYXQgc2FtcGxlUmF0ZSksCiAgICAgQ29uc3Ry
dWN0b3JNYXlUaHJvd0V4Y2VwdGlvbiwKICAgICBDb25zdHJ1Y3RvckNhbGxXaXRoPVNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQsCi0gICAgSW50ZXJmYWNlTmFtZT13ZWJraXRPZmZsaW5lQXVkaW9Db250
ZXh0CisgICAgRW5hYmxlZEJ5U2V0dGluZz1Nb2Rlcm5VbnByZWZpeGVkV2ViQXVkaW8sCiBdIGlu
dGVyZmFjZSBPZmZsaW5lQXVkaW9Db250ZXh0IDogQXVkaW9Db250ZXh0IHsKIH07CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL09mZmxpbmVBdWRpb0Rlc3RpbmF0
aW9uTm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL09mZmxpbmVBdWRp
b0Rlc3RpbmF0aW9uTm9kZS5jcHAKaW5kZXggNmExOTU1NDZjZjcuLmZlYzUwOGNiZmYxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL09mZmxpbmVBdWRpb0Rlc3Rp
bmF0aW9uTm9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9PZmZs
aW5lQXVkaW9EZXN0aW5hdGlvbk5vZGUuY3BwCkBAIC00MSw3ICs0MSw3IEBAIFdURl9NQUtFX0lT
T19BTExPQ0FURURfSU1QTChPZmZsaW5lQXVkaW9EZXN0aW5hdGlvbk5vZGUpOwogICAgIAogY29u
c3Qgc2l6ZV90IHJlbmRlclF1YW50dW1TaXplID0gMTI4OyAgICAKIAotT2ZmbGluZUF1ZGlvRGVz
dGluYXRpb25Ob2RlOjpPZmZsaW5lQXVkaW9EZXN0aW5hdGlvbk5vZGUoQXVkaW9Db250ZXh0JiBj
b250ZXh0LCBBdWRpb0J1ZmZlciogcmVuZGVyVGFyZ2V0KQorT2ZmbGluZUF1ZGlvRGVzdGluYXRp
b25Ob2RlOjpPZmZsaW5lQXVkaW9EZXN0aW5hdGlvbk5vZGUoQXVkaW9Db250ZXh0QmFzZSYgY29u
dGV4dCwgQXVkaW9CdWZmZXIqIHJlbmRlclRhcmdldCkKICAgICA6IEF1ZGlvRGVzdGluYXRpb25O
b2RlKGNvbnRleHQsIHJlbmRlclRhcmdldC0+c2FtcGxlUmF0ZSgpKQogICAgICwgbV9yZW5kZXJU
YXJnZXQocmVuZGVyVGFyZ2V0KQogICAgICwgbV9zdGFydGVkUmVuZGVyaW5nKGZhbHNlKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9PZmZsaW5lQXVkaW9EZXN0
aW5hdGlvbk5vZGUuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vT2ZmbGluZUF1
ZGlvRGVzdGluYXRpb25Ob2RlLmgKaW5kZXggZGEyNDk1NzRkNDguLmY4NzEwZmRlMTBkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL09mZmxpbmVBdWRpb0Rlc3Rp
bmF0aW9uTm9kZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vT2ZmbGlu
ZUF1ZGlvRGVzdGluYXRpb25Ob2RlLmgKQEAgLTM3LDkgKzM3LDkgQEAgY2xhc3MgQXVkaW9Db250
ZXh0OwogY2xhc3MgT2ZmbGluZUF1ZGlvRGVzdGluYXRpb25Ob2RlIGZpbmFsIDogcHVibGljIEF1
ZGlvRGVzdGluYXRpb25Ob2RlIHsKICAgICBXVEZfTUFLRV9JU09fQUxMT0NBVEVEKE9mZmxpbmVB
dWRpb0Rlc3RpbmF0aW9uTm9kZSk7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxPZmZsaW5lQXVk
aW9EZXN0aW5hdGlvbk5vZGU+IGNyZWF0ZShBdWRpb0NvbnRleHQmIGNvbnRleHQsIEF1ZGlvQnVm
ZmVyKiByZW5kZXJUYXJnZXQpCisgICAgc3RhdGljIFJlZjxPZmZsaW5lQXVkaW9EZXN0aW5hdGlv
bk5vZGU+IGNyZWF0ZShBdWRpb0NvbnRleHRCYXNlJiBjb250ZXh0LCBBdWRpb0J1ZmZlciogcmVu
ZGVyVGFyZ2V0KQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgT2ZmbGluZUF1
ZGlvRGVzdGluYXRpb25Ob2RlKGNvbnRleHQsIHJlbmRlclRhcmdldCkpOyAgICAgCisgICAgICAg
IHJldHVybiBhZG9wdFJlZigqbmV3IE9mZmxpbmVBdWRpb0Rlc3RpbmF0aW9uTm9kZShjb250ZXh0
LCByZW5kZXJUYXJnZXQpKTsKICAgICB9CiAKICAgICB2aXJ0dWFsIH5PZmZsaW5lQXVkaW9EZXN0
aW5hdGlvbk5vZGUoKTsKQEAgLTU1LDcgKzU1LDcgQEAgcHVibGljOgogICAgIGZsb2F0IHNhbXBs
ZVJhdGUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX3JlbmRlclRhcmdldC0+c2FtcGxlUmF0
ZSgpOyB9CiAKIHByaXZhdGU6Ci0gICAgT2ZmbGluZUF1ZGlvRGVzdGluYXRpb25Ob2RlKEF1ZGlv
Q29udGV4dCYsIEF1ZGlvQnVmZmVyKiByZW5kZXJUYXJnZXQpOworICAgIE9mZmxpbmVBdWRpb0Rl
c3RpbmF0aW9uTm9kZShBdWRpb0NvbnRleHRCYXNlJiwgQXVkaW9CdWZmZXIqIHJlbmRlclRhcmdl
dCk7CiAKICAgICAvLyBUaGlzIEF1ZGlvTm9kZSByZW5kZXJzIGludG8gdGhpcyBBdWRpb0J1ZmZl
ci4KICAgICBSZWZQdHI8QXVkaW9CdWZmZXI+IG1fcmVuZGVyVGFyZ2V0OwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9Pc2NpbGxhdG9yTm9kZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL09zY2lsbGF0b3JOb2RlLmNwcAppbmRleCA5NTYw
MDUzYTQ4MC4uZThmMzFjNzIyMGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViYXVkaW8vT3NjaWxsYXRvck5vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViYXVkaW8vT3NjaWxsYXRvck5vZGUuY3BwCkBAIC00NSwxMiArNDUsMTIgQEAgUGVyaW9kaWNX
YXZlKiBPc2NpbGxhdG9yTm9kZTo6c19wZXJpb2RpY1dhdmVTcXVhcmUgPSBudWxscHRyOwogUGVy
aW9kaWNXYXZlKiBPc2NpbGxhdG9yTm9kZTo6c19wZXJpb2RpY1dhdmVTYXd0b290aCA9IG51bGxw
dHI7CiBQZXJpb2RpY1dhdmUqIE9zY2lsbGF0b3JOb2RlOjpzX3BlcmlvZGljV2F2ZVRyaWFuZ2xl
ID0gbnVsbHB0cjsKIAotUmVmPE9zY2lsbGF0b3JOb2RlPiBPc2NpbGxhdG9yTm9kZTo6Y3JlYXRl
KEF1ZGlvQ29udGV4dCYgY29udGV4dCwgZmxvYXQgc2FtcGxlUmF0ZSkKK1JlZjxPc2NpbGxhdG9y
Tm9kZT4gT3NjaWxsYXRvck5vZGU6OmNyZWF0ZShBdWRpb0NvbnRleHRCYXNlJiBjb250ZXh0LCBm
bG9hdCBzYW1wbGVSYXRlKQogewogICAgIHJldHVybiBhZG9wdFJlZigqbmV3IE9zY2lsbGF0b3JO
b2RlKGNvbnRleHQsIHNhbXBsZVJhdGUpKTsKIH0KIAotT3NjaWxsYXRvck5vZGU6Ok9zY2lsbGF0
b3JOb2RlKEF1ZGlvQ29udGV4dCYgY29udGV4dCwgZmxvYXQgc2FtcGxlUmF0ZSkKK09zY2lsbGF0
b3JOb2RlOjpPc2NpbGxhdG9yTm9kZShBdWRpb0NvbnRleHRCYXNlJiBjb250ZXh0LCBmbG9hdCBz
YW1wbGVSYXRlKQogICAgIDogQXVkaW9TY2hlZHVsZWRTb3VyY2VOb2RlKGNvbnRleHQsIHNhbXBs
ZVJhdGUpCiAgICAgLCBtX2ZpcnN0UmVuZGVyKHRydWUpCiAgICAgLCBtX3ZpcnR1YWxSZWFkSW5k
ZXgoMCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vT3NjaWxs
YXRvck5vZGUuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vT3NjaWxsYXRvck5v
ZGUuaAppbmRleCA0MmZmMGMxOTI0Yi4uMDg5NWJjZTNkZGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vT3NjaWxsYXRvck5vZGUuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmF1ZGlvL09zY2lsbGF0b3JOb2RlLmgKQEAgLTQ1LDcgKzQ1LDcgQEAg
cHVibGljOgogICAgICAgICBDdXN0b20KICAgICB9OwogCi0gICAgc3RhdGljIFJlZjxPc2NpbGxh
dG9yTm9kZT4gY3JlYXRlKEF1ZGlvQ29udGV4dCYsIGZsb2F0IHNhbXBsZVJhdGUpOworICAgIHN0
YXRpYyBSZWY8T3NjaWxsYXRvck5vZGU+IGNyZWF0ZShBdWRpb0NvbnRleHRCYXNlJiwgZmxvYXQg
c2FtcGxlUmF0ZSk7CiAKICAgICB2aXJ0dWFsIH5Pc2NpbGxhdG9yTm9kZSgpOwogCkBAIC02MCw3
ICs2MCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldFBlcmlvZGljV2F2ZShQZXJpb2RpY1dhdmUq
KTsKIAogcHJpdmF0ZToKLSAgICBPc2NpbGxhdG9yTm9kZShBdWRpb0NvbnRleHQmLCBmbG9hdCBz
YW1wbGVSYXRlKTsKKyAgICBPc2NpbGxhdG9yTm9kZShBdWRpb0NvbnRleHRCYXNlJiwgZmxvYXQg
c2FtcGxlUmF0ZSk7CiAKICAgICB2b2lkIHByb2Nlc3Moc2l6ZV90IGZyYW1lc1RvUHJvY2Vzcykg
ZmluYWw7CiAgICAgdm9pZCByZXNldCgpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJhdWRpby9QYW5uZXJOb2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViYXVkaW8vUGFubmVyTm9kZS5jcHAKaW5kZXggZWM4MGU2OWQyYWIuLmFlNDJmMTE0YmJj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1Bhbm5lck5vZGUu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vUGFubmVyTm9kZS5jcHAK
QEAgLTQ4LDggKzQ4LDEzIEBAIHN0YXRpYyB2b2lkIGZpeE5BTnMoZG91YmxlICZ4KQogICAgICAg
ICB4ID0gMC4wOwogfQogCi1QYW5uZXJOb2RlOjpQYW5uZXJOb2RlKEF1ZGlvQ29udGV4dCYgY29u
dGV4dCwgZmxvYXQgc2FtcGxlUmF0ZSkKK1Bhbm5lck5vZGVCYXNlOjpQYW5uZXJOb2RlQmFzZShB
dWRpb0NvbnRleHRCYXNlJiBjb250ZXh0LCBmbG9hdCBzYW1wbGVSYXRlKQogICAgIDogQXVkaW9O
b2RlKGNvbnRleHQsIHNhbXBsZVJhdGUpCit7Cit9CisKK1Bhbm5lck5vZGU6OlBhbm5lck5vZGUo
QXVkaW9Db250ZXh0JiBjb250ZXh0LCBmbG9hdCBzYW1wbGVSYXRlKQorICAgIDogUGFubmVyTm9k
ZUJhc2UoY29udGV4dCwgc2FtcGxlUmF0ZSkKICAgICAsIG1fcGFubmluZ01vZGVsKFBhbm5pbmdN
b2RlbFR5cGU6OkhSVEYpCiAgICAgLCBtX2xhc3RHYWluKC0xLjApCiAgICAgLCBtX3Bvc2l0aW9u
WChBdWRpb1BhcmFtOjpjcmVhdGUoY29udGV4dCwgInBvc2l0aW9uWCJfcywgMCwgLUZMVF9NQVgs
IEZMVF9NQVgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9Q
YW5uZXJOb2RlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1Bhbm5lck5vZGUu
aAppbmRleCA4NDgwYzIzMzI4MC4uMjliNjQ4ZDA2MDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViYXVkaW8vUGFubmVyTm9kZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViYXVkaW8vUGFubmVyTm9kZS5oCkBAIC0yNiw2ICsyNiw3IEBACiAKICNpZiBFTkFC
TEUoV0VCX0FVRElPKQogCisjaW5jbHVkZSAiQXVkaW9Db250ZXh0LmgiCiAjaW5jbHVkZSAiQXVk
aW9MaXN0ZW5lci5oIgogI2luY2x1ZGUgIkF1ZGlvTm9kZS5oIgogI2luY2x1ZGUgIkF1ZGlvUGFy
YW0uaCIKQEAgLTQxLDYgKzQyLDE2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgSFJU
RkRhdGFiYXNlTG9hZGVyOwogCitjbGFzcyBQYW5uZXJOb2RlQmFzZSA6IHB1YmxpYyBBdWRpb05v
ZGUgeworcHVibGljOgorICAgIHZpcnR1YWwgflBhbm5lck5vZGVCYXNlKCkgPSBkZWZhdWx0Owor
CisgICAgdmlydHVhbCBmbG9hdCBkb3BwbGVyUmF0ZSgpID0gMDsKKworcHJvdGVjdGVkOgorICAg
IFBhbm5lck5vZGVCYXNlKEF1ZGlvQ29udGV4dEJhc2UmLCBmbG9hdCBzYW1wbGVSYXRlKTsKK307
CisKIC8vIFBhbm5lck5vZGUgaXMgYW4gQXVkaW9Ob2RlIHdpdGggb25lIGlucHV0IGFuZCBvbmUg
b3V0cHV0LgogLy8gSXQgcG9zaXRpb25zIGEgc291bmQgaW4gM0Qgc3BhY2UsIHdpdGggdGhlIGV4
YWN0IGVmZmVjdCBkZXBlbmRlbnQgb24gdGhlIHBhbm5pbmcgbW9kZWwuCiAvLyBJdCBoYXMgYSBw
b3NpdGlvbiBhbmQgYW4gb3JpZW50YXRpb24gaW4gM0Qgc3BhY2Ugd2hpY2ggaXMgcmVsYXRpdmUg
dG8gdGhlIHBvc2l0aW9uIGFuZCBvcmllbnRhdGlvbiBvZiB0aGUgY29udGV4dCdzIEF1ZGlvTGlz
dGVuZXIuCkBAIC00OCw3ICs1OSw3IEBAIGNsYXNzIEhSVEZEYXRhYmFzZUxvYWRlcjsKIC8vIEEg
Y29uZSBlZmZlY3Qgd2lsbCBhdHRlbnVhdGUgdGhlIGdhaW4gYXMgdGhlIG9yaWVudGF0aW9uIG1v
dmVzIGF3YXkgZnJvbSB0aGUgbGlzdGVuZXIuCiAvLyBBbGwgb2YgdGhlc2UgZWZmZWN0cyBmb2xs
b3cgdGhlIE9wZW5BTCBzcGVjaWZpY2F0aW9uIHZlcnkgY2xvc2VseS4KIAotY2xhc3MgUGFubmVy
Tm9kZSBmaW5hbCA6IHB1YmxpYyBBdWRpb05vZGUgeworY2xhc3MgUGFubmVyTm9kZSBmaW5hbCA6
IHB1YmxpYyBQYW5uZXJOb2RlQmFzZSB7CiAgICAgV1RGX01BS0VfSVNPX0FMTE9DQVRFRChQYW5u
ZXJOb2RlKTsKIHB1YmxpYzoKICAgICBzdGF0aWMgUmVmPFBhbm5lck5vZGU+IGNyZWF0ZShBdWRp
b0NvbnRleHQmIGNvbnRleHQsIGZsb2F0IHNhbXBsZVJhdGUpCkBAIC01OCw2ICs2OSw5IEBAIHB1
YmxpYzoKIAogICAgIHZpcnR1YWwgflBhbm5lck5vZGUoKTsKIAorICAgIEF1ZGlvQ29udGV4dCYg
Y29udGV4dCgpIHsgcmV0dXJuIGRvd25jYXN0PEF1ZGlvQ29udGV4dD4oQXVkaW9Ob2RlOjpjb250
ZXh0KCkpOyB9CisgICAgY29uc3QgQXVkaW9Db250ZXh0JiBjb250ZXh0KCkgY29uc3QgeyByZXR1
cm4gZG93bmNhc3Q8QXVkaW9Db250ZXh0PihBdWRpb05vZGU6OmNvbnRleHQoKSk7IH0KKwogICAg
IC8vIEF1ZGlvTm9kZQogICAgIHZvaWQgcHJvY2VzcyhzaXplX3QgZnJhbWVzVG9Qcm9jZXNzKSBv
dmVycmlkZTsKICAgICB2b2lkIHB1bGxJbnB1dHMoc2l6ZV90IGZyYW1lc1RvUHJvY2Vzcykgb3Zl
cnJpZGU7CkBAIC0xMTEsNyArMTI1LDcgQEAgcHVibGljOgogICAgIHZvaWQgc2V0Q29uZU91dGVy
R2Fpbihkb3VibGUgYW5nbGUpIHsgbV9jb25lRWZmZWN0LnNldE91dGVyR2FpbihhbmdsZSk7IH0K
IAogICAgIHZvaWQgZ2V0QXppbXV0aEVsZXZhdGlvbihkb3VibGUqIG91dEF6aW11dGgsIGRvdWJs
ZSogb3V0RWxldmF0aW9uKTsKLSAgICBmbG9hdCBkb3BwbGVyUmF0ZSgpOworICAgIGZsb2F0IGRv
cHBsZXJSYXRlKCkgZmluYWw7CiAKICAgICAvLyBBY2Nlc3NvcnMgZm9yIGR5bmFtaWNhbGx5IGNh
bGN1bGF0ZWQgZ2FpbiB2YWx1ZXMuCiAgICAgQXVkaW9QYXJhbSogZGlzdGFuY2VHYWluKCkgeyBy
ZXR1cm4gbV9kaXN0YW5jZUdhaW4uZ2V0KCk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViYXVkaW8vUGFubmVyTm9kZS5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmF1ZGlvL1Bhbm5lck5vZGUuaWRsCmluZGV4IDAzMjk4MzdkMmY1Li4zMmQ4OTFkYzJhZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9QYW5uZXJOb2RlLmlk
bAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1Bhbm5lck5vZGUuaWRsCkBA
IC00Miw3ICs0Miw3IEBACiBbCiAgICAgQ29uZGl0aW9uYWw9V0VCX0FVRElPLAogICAgIEpTR2Vu
ZXJhdGVUb0pTT2JqZWN0LAotICAgIEludGVyZmFjZU5hbWU9d2Via2l0QXVkaW9QYW5uZXJOb2Rl
LAorICAgIEVuYWJsZWRCeVNldHRpbmc9TW9kZXJuVW5wcmVmaXhlZFdlYkF1ZGlvLAogXSBpbnRl
cmZhY2UgUGFubmVyTm9kZSA6IEF1ZGlvTm9kZSB7CiAgICAgLy8gRGVmYXVsdCBtb2RlbCBmb3Ig
c3RlcmVvIGlzIEhSVEYgCiAgICAgYXR0cmlidXRlIFBhbm5pbmdNb2RlbFR5cGUgcGFubmluZ01v
ZGVsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9TY3JpcHRQ
cm9jZXNzb3JOb2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vU2NyaXB0
UHJvY2Vzc29yTm9kZS5jcHAKaW5kZXggOTFjNzUzN2UxNWUuLjc2MTBiMTUwMjQ4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1NjcmlwdFByb2Nlc3Nvck5vZGUu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vU2NyaXB0UHJvY2Vzc29y
Tm9kZS5jcHAKQEAgLTQ0LDEyICs0NCwxMiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFdURl9N
QUtFX0lTT19BTExPQ0FURURfSU1QTChTY3JpcHRQcm9jZXNzb3JOb2RlKTsKIAotUmVmPFNjcmlw
dFByb2Nlc3Nvck5vZGU+IFNjcmlwdFByb2Nlc3Nvck5vZGU6OmNyZWF0ZShBdWRpb0NvbnRleHQm
IGNvbnRleHQsIGZsb2F0IHNhbXBsZVJhdGUsIHNpemVfdCBidWZmZXJTaXplLCB1bnNpZ25lZCBu
dW1iZXJPZklucHV0Q2hhbm5lbHMsIHVuc2lnbmVkIG51bWJlck9mT3V0cHV0Q2hhbm5lbHMpCitS
ZWY8U2NyaXB0UHJvY2Vzc29yTm9kZT4gU2NyaXB0UHJvY2Vzc29yTm9kZTo6Y3JlYXRlKEF1ZGlv
Q29udGV4dEJhc2UmIGNvbnRleHQsIGZsb2F0IHNhbXBsZVJhdGUsIHNpemVfdCBidWZmZXJTaXpl
LCB1bnNpZ25lZCBudW1iZXJPZklucHV0Q2hhbm5lbHMsIHVuc2lnbmVkIG51bWJlck9mT3V0cHV0
Q2hhbm5lbHMpCiB7CiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2NyaXB0UHJvY2Vzc29yTm9k
ZShjb250ZXh0LCBzYW1wbGVSYXRlLCBidWZmZXJTaXplLCBudW1iZXJPZklucHV0Q2hhbm5lbHMs
IG51bWJlck9mT3V0cHV0Q2hhbm5lbHMpKTsKIH0KIAotU2NyaXB0UHJvY2Vzc29yTm9kZTo6U2Ny
aXB0UHJvY2Vzc29yTm9kZShBdWRpb0NvbnRleHQmIGNvbnRleHQsIGZsb2F0IHNhbXBsZVJhdGUs
IHNpemVfdCBidWZmZXJTaXplLCB1bnNpZ25lZCBudW1iZXJPZklucHV0Q2hhbm5lbHMsIHVuc2ln
bmVkIG51bWJlck9mT3V0cHV0Q2hhbm5lbHMpCitTY3JpcHRQcm9jZXNzb3JOb2RlOjpTY3JpcHRQ
cm9jZXNzb3JOb2RlKEF1ZGlvQ29udGV4dEJhc2UmIGNvbnRleHQsIGZsb2F0IHNhbXBsZVJhdGUs
IHNpemVfdCBidWZmZXJTaXplLCB1bnNpZ25lZCBudW1iZXJPZklucHV0Q2hhbm5lbHMsIHVuc2ln
bmVkIG51bWJlck9mT3V0cHV0Q2hhbm5lbHMpCiAgICAgOiBBdWRpb05vZGUoY29udGV4dCwgc2Ft
cGxlUmF0ZSkKICAgICAsIEFjdGl2ZURPTU9iamVjdChjb250ZXh0LnNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQoKSkKICAgICAsIG1fZG91YmxlQnVmZmVySW5kZXgoMCkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vU2NyaXB0UHJvY2Vzc29yTm9kZS5oIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9TY3JpcHRQcm9jZXNzb3JOb2RlLmgKaW5kZXggNWE0
ZTdjZTQ3NTIuLjRjMTRhMDc1N2RmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmF1ZGlvL1NjcmlwdFByb2Nlc3Nvck5vZGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmF1ZGlvL1NjcmlwdFByb2Nlc3Nvck5vZGUuaApAQCAtNTIsNyArNTIsNyBAQCBwdWJs
aWM6CiAgICAgLy8gVGhpcyB2YWx1ZSBjb250cm9scyBob3cgZnJlcXVlbnRseSB0aGUgb25hdWRp
b3Byb2Nlc3MgZXZlbnQgaGFuZGxlciBpcyBjYWxsZWQgYW5kIGhvdyBtYW55IHNhbXBsZS1mcmFt
ZXMgbmVlZCB0byBiZSBwcm9jZXNzZWQgZWFjaCBjYWxsLgogICAgIC8vIExvd2VyIG51bWJlcnMg
Zm9yIGJ1ZmZlclNpemUgd2lsbCByZXN1bHQgaW4gYSBsb3dlciAoYmV0dGVyKSBsYXRlbmN5LiBI
aWdoZXIgbnVtYmVycyB3aWxsIGJlIG5lY2Vzc2FyeSB0byBhdm9pZCBhdWRpbyBicmVha3VwIGFu
ZCBnbGl0Y2hlcy4KICAgICAvLyBUaGUgdmFsdWUgY2hvc2VuIG11c3QgY2FyZWZ1bGx5IGJhbGFu
Y2UgYmV0d2VlbiBsYXRlbmN5IGFuZCBhdWRpbyBxdWFsaXR5LgotICAgIHN0YXRpYyBSZWY8U2Ny
aXB0UHJvY2Vzc29yTm9kZT4gY3JlYXRlKEF1ZGlvQ29udGV4dCYsIGZsb2F0IHNhbXBsZVJhdGUs
IHNpemVfdCBidWZmZXJTaXplLCB1bnNpZ25lZCBudW1iZXJPZklucHV0Q2hhbm5lbHMsIHVuc2ln
bmVkIG51bWJlck9mT3V0cHV0Q2hhbm5lbHMpOworICAgIHN0YXRpYyBSZWY8U2NyaXB0UHJvY2Vz
c29yTm9kZT4gY3JlYXRlKEF1ZGlvQ29udGV4dEJhc2UmLCBmbG9hdCBzYW1wbGVSYXRlLCBzaXpl
X3QgYnVmZmVyU2l6ZSwgdW5zaWduZWQgbnVtYmVyT2ZJbnB1dENoYW5uZWxzLCB1bnNpZ25lZCBu
dW1iZXJPZk91dHB1dENoYW5uZWxzKTsKIAogICAgIHZpcnR1YWwgflNjcmlwdFByb2Nlc3Nvck5v
ZGUoKTsKIApAQCAtNzEsNyArNzEsNyBAQCBwcml2YXRlOgogICAgIGRvdWJsZSB0YWlsVGltZSgp
IGNvbnN0IG92ZXJyaWRlOwogICAgIGRvdWJsZSBsYXRlbmN5VGltZSgpIGNvbnN0IG92ZXJyaWRl
OwogCi0gICAgU2NyaXB0UHJvY2Vzc29yTm9kZShBdWRpb0NvbnRleHQmLCBmbG9hdCBzYW1wbGVS
YXRlLCBzaXplX3QgYnVmZmVyU2l6ZSwgdW5zaWduZWQgbnVtYmVyT2ZJbnB1dENoYW5uZWxzLCB1
bnNpZ25lZCBudW1iZXJPZk91dHB1dENoYW5uZWxzKTsKKyAgICBTY3JpcHRQcm9jZXNzb3JOb2Rl
KEF1ZGlvQ29udGV4dEJhc2UmLCBmbG9hdCBzYW1wbGVSYXRlLCBzaXplX3QgYnVmZmVyU2l6ZSwg
dW5zaWduZWQgbnVtYmVyT2ZJbnB1dENoYW5uZWxzLCB1bnNpZ25lZCBudW1iZXJPZk91dHB1dENo
YW5uZWxzKTsKIAogICAgIHZvaWQgZmlyZVByb2Nlc3NFdmVudCgpOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1dhdmVTaGFwZXJOb2RlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vV2F2ZVNoYXBlck5vZGUuY3BwCmluZGV4IDZlN2U4
ZGQxYzljLi5hZTRhZjlmMjMyZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJhdWRpby9XYXZlU2hhcGVyTm9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJhdWRpby9XYXZlU2hhcGVyTm9kZS5jcHAKQEAgLTM1LDcgKzM1LDcgQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogCiBXVEZfTUFLRV9JU09fQUxMT0NBVEVEX0lNUEwoV2F2ZVNoYXBlck5vZGUpOwog
Ci1XYXZlU2hhcGVyTm9kZTo6V2F2ZVNoYXBlck5vZGUoQXVkaW9Db250ZXh0JiBjb250ZXh0KQor
V2F2ZVNoYXBlck5vZGU6OldhdmVTaGFwZXJOb2RlKEF1ZGlvQ29udGV4dEJhc2UmIGNvbnRleHQp
CiAgICAgOiBBdWRpb0Jhc2ljUHJvY2Vzc29yTm9kZShjb250ZXh0LCBjb250ZXh0LnNhbXBsZVJh
dGUoKSkKIHsKICAgICBzZXROb2RlVHlwZShOb2RlVHlwZVdhdmVTaGFwZXIpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9XYXZlU2hhcGVyTm9kZS5oIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9XYXZlU2hhcGVyTm9kZS5oCmluZGV4IGY0OWUz
NDliYzNkLi41ZjQ5MzI4YjIyZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJhdWRpby9XYXZlU2hhcGVyTm9kZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
YXVkaW8vV2F2ZVNoYXBlck5vZGUuaApAQCAtMzMsNyArMzMsNyBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiBjbGFzcyBXYXZlU2hhcGVyTm9kZSBmaW5hbCA6IHB1YmxpYyBBdWRpb0Jhc2ljUHJvY2Vz
c29yTm9kZSB7CiAgICAgV1RGX01BS0VfSVNPX0FMTE9DQVRFRChXYXZlU2hhcGVyTm9kZSk7CiBw
dWJsaWM6Ci0gICAgc3RhdGljIFJlZjxXYXZlU2hhcGVyTm9kZT4gY3JlYXRlKEF1ZGlvQ29udGV4
dCYgY29udGV4dCkKKyAgICBzdGF0aWMgUmVmPFdhdmVTaGFwZXJOb2RlPiBjcmVhdGUoQXVkaW9D
b250ZXh0QmFzZSYgY29udGV4dCkKICAgICB7CiAgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3
IFdhdmVTaGFwZXJOb2RlKGNvbnRleHQpKTsKICAgICB9CkBAIC00OSw3ICs0OSw3IEBAIHB1Ymxp
YzoKICAgICBkb3VibGUgbGF0ZW5jeSgpIGNvbnN0IHsgcmV0dXJuIGxhdGVuY3lUaW1lKCk7IH0K
IAogcHJpdmF0ZTogICAgCi0gICAgZXhwbGljaXQgV2F2ZVNoYXBlck5vZGUoQXVkaW9Db250ZXh0
Jik7ICAgIAorICAgIGV4cGxpY2l0IFdhdmVTaGFwZXJOb2RlKEF1ZGlvQ29udGV4dEJhc2UmKTsK
IAogICAgIFdhdmVTaGFwZXJQcm9jZXNzb3IqIHdhdmVTaGFwZXJQcm9jZXNzb3IoKSB7IHJldHVy
biBzdGF0aWNfY2FzdDxXYXZlU2hhcGVyUHJvY2Vzc29yKj4ocHJvY2Vzc29yKCkpOyB9CiB9Owpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9XZWJLaXRBdWRpb0Nv
bnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9XZWJLaXRBdWRpb0Nv
bnRleHQuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi5jMjBmMWI3
ZTBiNAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8v
V2ViS2l0QXVkaW9Db250ZXh0LmNwcApAQCAtMCwwICsxLDEzOTUgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdo
dCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVS
UE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMK
KyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTgorICogQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTCisgKiBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5j
bHVkZSAiY29uZmlnLmgiCisKKyNpZiBFTkFCTEUoV0VCX0FVRElPKQorCisjaW5jbHVkZSAiV2Vi
S2l0QXVkaW9Db250ZXh0LmgiCisKKyNpbmNsdWRlICJBbmFseXNlck5vZGUuaCIKKyNpbmNsdWRl
ICJBc3luY0F1ZGlvRGVjb2Rlci5oIgorI2luY2x1ZGUgIkF1ZGlvQnVmZmVyLmgiCisjaW5jbHVk
ZSAiQXVkaW9CdWZmZXJDYWxsYmFjay5oIgorI2luY2x1ZGUgIkF1ZGlvQnVmZmVyU291cmNlTm9k
ZS5oIgorI2luY2x1ZGUgIkF1ZGlvTGlzdGVuZXIuaCIKKyNpbmNsdWRlICJBdWRpb05vZGVJbnB1
dC5oIgorI2luY2x1ZGUgIkF1ZGlvTm9kZU91dHB1dC5oIgorI2luY2x1ZGUgIkF1ZGlvU2Vzc2lv
bi5oIgorI2luY2x1ZGUgIkJpcXVhZEZpbHRlck5vZGUuaCIKKyNpbmNsdWRlICJDaGFubmVsTWVy
Z2VyTm9kZS5oIgorI2luY2x1ZGUgIkNoYW5uZWxTcGxpdHRlck5vZGUuaCIKKyNpbmNsdWRlICJD
b252b2x2ZXJOb2RlLmgiCisjaW5jbHVkZSAiRGVmYXVsdEF1ZGlvRGVzdGluYXRpb25Ob2RlLmgi
CisjaW5jbHVkZSAiRGVsYXlOb2RlLmgiCisjaW5jbHVkZSAiRG9jdW1lbnQuaCIKKyNpbmNsdWRl
ICJEeW5hbWljc0NvbXByZXNzb3JOb2RlLmgiCisjaW5jbHVkZSAiRXZlbnROYW1lcy5oIgorI2lu
Y2x1ZGUgIkZGVEZyYW1lLmgiCisjaW5jbHVkZSAiRnJhbWUuaCIKKyNpbmNsdWRlICJGcmFtZUxv
YWRlci5oIgorI2luY2x1ZGUgIkdhaW5Ob2RlLmgiCisjaW5jbHVkZSAiR2VuZXJpY0V2ZW50UXVl
dWUuaCIKKyNpbmNsdWRlICJIUlRGRGF0YWJhc2VMb2FkZXIuaCIKKyNpbmNsdWRlICJIUlRGUGFu
bmVyLmgiCisjaW5jbHVkZSAiSlNET01Qcm9taXNlRGVmZXJyZWQuaCIKKyNpbmNsdWRlICJMb2dn
aW5nLmgiCisjaW5jbHVkZSAiTmV0d29ya2luZ0NvbnRleHQuaCIKKyNpbmNsdWRlICJPZmZsaW5l
QXVkaW9Db21wbGV0aW9uRXZlbnQuaCIKKyNpbmNsdWRlICJPZmZsaW5lQXVkaW9EZXN0aW5hdGlv
bk5vZGUuaCIKKyNpbmNsdWRlICJPc2NpbGxhdG9yTm9kZS5oIgorI2luY2x1ZGUgIlBhZ2UuaCIK
KyNpbmNsdWRlICJQZXJpb2RpY1dhdmUuaCIKKyNpbmNsdWRlICJQbGF0Zm9ybU1lZGlhU2Vzc2lv
bk1hbmFnZXIuaCIKKyNpbmNsdWRlICJTY3JpcHRDb250cm9sbGVyLmgiCisjaW5jbHVkZSAiU2Ny
aXB0UHJvY2Vzc29yTm9kZS5oIgorI2luY2x1ZGUgIldhdmVTaGFwZXJOb2RlLmgiCisjaW5jbHVk
ZSAiV2ViS2l0QXVkaW9QYW5uZXJOb2RlLmgiCisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvU2Ny
aXB0Q2FsbFN0YWNrLmg+CisKKyNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQorI2luY2x1ZGUgIk1l
ZGlhU3RyZWFtLmgiCisjaW5jbHVkZSAiTWVkaWFTdHJlYW1BdWRpb0Rlc3RpbmF0aW9uTm9kZS5o
IgorI2luY2x1ZGUgIk1lZGlhU3RyZWFtQXVkaW9Tb3VyY2UuaCIKKyNpbmNsdWRlICJNZWRpYVN0
cmVhbUF1ZGlvU291cmNlTm9kZS5oIgorI2VuZGlmCisKKyNpZiBFTkFCTEUoVklERU8pCisjaW5j
bHVkZSAiSFRNTE1lZGlhRWxlbWVudC5oIgorI2luY2x1ZGUgIk1lZGlhRWxlbWVudEF1ZGlvU291
cmNlTm9kZS5oIgorI2VuZGlmCisKKyNpZiBERUJVR19BVURJT05PREVfUkVGRVJFTkNFUworI2lu
Y2x1ZGUgPHN0ZGlvLmg+CisjZW5kaWYKKworI2lmIFVTRShHU1RSRUFNRVIpCisjaW5jbHVkZSAi
R1N0cmVhbWVyQ29tbW9uLmgiCisjZW5kaWYKKworI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCisj
aW5jbHVkZSAiU2NyaXB0Q29udHJvbGxlci5oIgorI2luY2x1ZGUgIlNldHRpbmdzLmgiCisjZW5k
aWYKKworI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0FycmF5QnVmZmVyLmg+CisjaW5jbHVkZSA8
d3RmL0F0b21pY3MuaD4KKyNpbmNsdWRlIDx3dGYvSXNvTWFsbG9jSW5saW5lcy5oPgorI2luY2x1
ZGUgPHd0Zi9NYWluVGhyZWFkLmg+CisjaW5jbHVkZSA8d3RmL1JlZi5oPgorI2luY2x1ZGUgPHd0
Zi9SZWZDb3VudGVkLmg+CisjaW5jbHVkZSA8d3RmL1Njb3BlLmg+CisjaW5jbHVkZSA8d3RmL3Rl
eHQvV1RGU3RyaW5nLmg+CisKK2NvbnN0IHVuc2lnbmVkIE1heFBlcmlvZGljV2F2ZUxlbmd0aCA9
IDQwOTY7CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworI2RlZmluZSBSRUxFQVNFX0xPR19JRl9B
TExPV0VEKGZtdCwgLi4uKSBSRUxFQVNFX0xPR19JRihkb2N1bWVudCgpICYmIGRvY3VtZW50KCkt
PnBhZ2UoKSAmJiBkb2N1bWVudCgpLT5wYWdlKCktPmlzQWx3YXlzT25Mb2dnaW5nQWxsb3dlZCgp
LCBNZWRpYSwgIiVwIC0gV2ViS2l0QXVkaW9Db250ZXh0OjoiIGZtdCwgdGhpcywgIyNfX1ZBX0FS
R1NfXykKKworYm9vbCBXZWJLaXRBdWRpb0NvbnRleHQ6OmlzU2FtcGxlUmF0ZVJhbmdlR29vZChm
bG9hdCBzYW1wbGVSYXRlKQoreworICAgIC8vIEZJWE1FOiBJdCB3b3VsZCBiZSBuaWNlIGlmIHRo
ZSBtaW5pbXVtIHNhbXBsZS1yYXRlIGNvdWxkIGJlIGxlc3MgdGhhbiA0NC4xS0h6LAorICAgIC8v
IGJ1dCB0aGF0IHdpbGwgcmVxdWlyZSBzb21lIGZpeGVzIGluIEhSVEZQYW5uZXI6OmZmdFNpemVG
b3JTYW1wbGVSYXRlKCksIGFuZCBzb21lIHRlc3RpbmcgdGhlcmUuCisgICAgcmV0dXJuIHNhbXBs
ZVJhdGUgPj0gNDQxMDAgJiYgc2FtcGxlUmF0ZSA8PSA5NjAwMDsKK30KKworI2lmIE9TKFdJTkRP
V1MpCisvLyBEb24ndCBhbGxvdyBtb3JlIHRoYW4gdGhpcyBudW1iZXIgb2Ygc2ltdWx0YW5lb3Vz
IEF1ZGlvQ29udGV4dHMgdGFsa2luZyB0byBoYXJkd2FyZS4KK2NvbnN0ZXhwciB1bnNpZ25lZCBt
YXhIYXJkd2FyZUNvbnRleHRzID0gNDsKKyNlbmRpZgordW5zaWduZWQgV2ViS2l0QXVkaW9Db250
ZXh0OjpzX2hhcmR3YXJlQ29udGV4dENvdW50ID0gMDsKKworRXhjZXB0aW9uT3I8UmVmPFdlYktp
dEF1ZGlvQ29udGV4dD4+IFdlYktpdEF1ZGlvQ29udGV4dDo6Y3JlYXRlKERvY3VtZW50JiBkb2N1
bWVudCkKK3sKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworI2lmIE9TKFdJTkRPV1MpCisg
ICAgaWYgKHNfaGFyZHdhcmVDb250ZXh0Q291bnQgPj0gbWF4SGFyZHdhcmVDb250ZXh0cykKKyAg
ICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IFF1b3RhRXhjZWVkZWRFcnJvciB9OworI2VuZGlmCisK
KyAgICBhdXRvIGF1ZGlvQ29udGV4dCA9IGFkb3B0UmVmKCpuZXcgV2ViS2l0QXVkaW9Db250ZXh0
KGRvY3VtZW50KSk7CisgICAgYXVkaW9Db250ZXh0LT5zdXNwZW5kSWZOZWVkZWQoKTsKKyAgICBy
ZXR1cm4gYXVkaW9Db250ZXh0OworfQorCisvLyBDb25zdHJ1Y3RvciBmb3IgcmVuZGVyaW5nIHRv
IHRoZSBhdWRpbyBoYXJkd2FyZS4KK1dlYktpdEF1ZGlvQ29udGV4dDo6V2ViS2l0QXVkaW9Db250
ZXh0KERvY3VtZW50JiBkb2N1bWVudCkKKyAgICA6IEF1ZGlvQ29udGV4dEJhc2UoZG9jdW1lbnQp
CisjaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECisgICAgLCBtX2xvZ2dlcihkb2N1bWVudC5sb2dn
ZXIoKSkKKyAgICAsIG1fbG9nSWRlbnRpZmllcih1bmlxdWVMb2dJZGVudGlmaWVyKCkpCisjZW5k
aWYKKyAgICAsIG1fbWVkaWFTZXNzaW9uKFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpjcmVhdGUoUGxh
dGZvcm1NZWRpYVNlc3Npb25NYW5hZ2VyOjpzaGFyZWRNYW5hZ2VyKCksICp0aGlzKSkKKyAgICAs
IG1fZXZlbnRRdWV1ZShNYWluVGhyZWFkR2VuZXJpY0V2ZW50UXVldWU6OmNyZWF0ZSgqdGhpcykp
Cit7CisgICAgLy8gQWNjb3JkaW5nIHRvIHNwZWMgQXVkaW9Db250ZXh0IG11c3QgZGllIG9ubHkg
YWZ0ZXIgcGFnZSBuYXZpZ2F0ZS4KKyAgICAvLyBMZXRzIG1hcmsgaXQgYXMgQWN0aXZlRE9NT2Jq
ZWN0IHdpdGggcGVuZGluZyBhY3Rpdml0eSBhbmQgdW5tYXJrIGl0IGluIGNsZWFyIG1ldGhvZC4K
KyAgICBtYWtlUGVuZGluZ0FjdGl2aXR5KCk7CisKKyAgICBjb25zdHJ1Y3RDb21tb24oKTsKKwor
ICAgIG1fZGVzdGluYXRpb25Ob2RlID0gRGVmYXVsdEF1ZGlvRGVzdGluYXRpb25Ob2RlOjpjcmVh
dGUoKnRoaXMpOworCisgICAgLy8gSW5pdGlhbGl6ZSB0aGUgZGVzdGluYXRpb24gbm9kZSdzIG11
dGVkIHN0YXRlIHRvIG1hdGNoIHRoZSBwYWdlJ3MgY3VycmVudCBtdXRlZCBzdGF0ZS4KKyAgICBw
YWdlTXV0ZWRTdGF0ZURpZENoYW5nZSgpOworCisgICAgZG9jdW1lbnQuYWRkQXVkaW9Qcm9kdWNl
cigqdGhpcyk7CisgICAgZG9jdW1lbnQucmVnaXN0ZXJGb3JWaXNpYmlsaXR5U3RhdGVDaGFuZ2Vk
Q2FsbGJhY2tzKCp0aGlzKTsKK30KKworLy8gQ29uc3RydWN0b3IgZm9yIG9mZmxpbmUgKG5vbi1y
ZWFsdGltZSkgcmVuZGVyaW5nLgorV2ViS2l0QXVkaW9Db250ZXh0OjpXZWJLaXRBdWRpb0NvbnRl
eHQoRG9jdW1lbnQmIGRvY3VtZW50LCBBdWRpb0J1ZmZlciogcmVuZGVyVGFyZ2V0KQorICAgIDog
QXVkaW9Db250ZXh0QmFzZShkb2N1bWVudCkKKyNpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKKyAg
ICAsIG1fbG9nZ2VyKGRvY3VtZW50LmxvZ2dlcigpKQorICAgICwgbV9sb2dJZGVudGlmaWVyKHVu
aXF1ZUxvZ0lkZW50aWZpZXIoKSkKKyNlbmRpZgorICAgICwgbV9pc09mZmxpbmVDb250ZXh0KHRy
dWUpCisgICAgLCBtX21lZGlhU2Vzc2lvbihQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6Y3JlYXRlKFBs
YXRmb3JtTWVkaWFTZXNzaW9uTWFuYWdlcjo6c2hhcmVkTWFuYWdlcigpLCAqdGhpcykpCisgICAg
LCBtX2V2ZW50UXVldWUoTWFpblRocmVhZEdlbmVyaWNFdmVudFF1ZXVlOjpjcmVhdGUoKnRoaXMp
KQorICAgICwgbV9yZW5kZXJUYXJnZXQocmVuZGVyVGFyZ2V0KQoreworICAgIGNvbnN0cnVjdENv
bW1vbigpOworCisgICAgLy8gQ3JlYXRlIGEgbmV3IGRlc3RpbmF0aW9uIGZvciBvZmZsaW5lIHJl
bmRlcmluZy4KKyAgICBtX2Rlc3RpbmF0aW9uTm9kZSA9IE9mZmxpbmVBdWRpb0Rlc3RpbmF0aW9u
Tm9kZTo6Y3JlYXRlKCp0aGlzLCBtX3JlbmRlclRhcmdldC5nZXQoKSk7Cit9CisKK3ZvaWQgV2Vi
S2l0QXVkaW9Db250ZXh0Ojpjb25zdHJ1Y3RDb21tb24oKQoreworICAgIEZGVEZyYW1lOjppbml0
aWFsaXplKCk7CisKKyAgICBtX2xpc3RlbmVyID0gQXVkaW9MaXN0ZW5lcjo6Y3JlYXRlKCk7CisK
KyAgICBBU1NFUlQoZG9jdW1lbnQoKSk7CisgICAgaWYgKGRvY3VtZW50KCktPmF1ZGlvUGxheWJh
Y2tSZXF1aXJlc1VzZXJHZXN0dXJlKCkpCisgICAgICAgIGFkZEJlaGF2aW9yUmVzdHJpY3Rpb24o
UmVxdWlyZVVzZXJHZXN0dXJlRm9yQXVkaW9TdGFydFJlc3RyaWN0aW9uKTsKKyAgICBlbHNlCisg
ICAgICAgIG1fcmVzdHJpY3Rpb25zID0gTm9SZXN0cmljdGlvbnM7CisKKyNpZiBQTEFURk9STShD
T0NPQSkKKyAgICBhZGRCZWhhdmlvclJlc3RyaWN0aW9uKFJlcXVpcmVQYWdlQ29uc2VudEZvckF1
ZGlvU3RhcnRSZXN0cmljdGlvbik7CisjZW5kaWYKK30KKworV2ViS2l0QXVkaW9Db250ZXh0Ojp+
V2ViS2l0QXVkaW9Db250ZXh0KCkKK3sKKyNpZiBERUJVR19BVURJT05PREVfUkVGRVJFTkNFUwor
ICAgIGZwcmludGYoc3RkZXJyLCAiJXA6IFdlYktpdEF1ZGlvQ29udGV4dDo6fldlYktpdEF1ZGlv
Q29udGV4dCgpXG4iLCB0aGlzKTsKKyNlbmRpZgorICAgIEFTU0VSVCghbV9pc0luaXRpYWxpemVk
KTsKKyAgICBBU1NFUlQobV9pc1N0b3BTY2hlZHVsZWQpOworICAgIEFTU0VSVChtX25vZGVzVG9E
ZWxldGUuaXNFbXB0eSgpKTsKKyAgICBBU1NFUlQobV9yZWZlcmVuY2VkTm9kZXMuaXNFbXB0eSgp
KTsKKyAgICBBU1NFUlQobV9maW5pc2hlZE5vZGVzLmlzRW1wdHkoKSk7IC8vIEZJWE1FIChidWcg
MTA1ODcwKTogVGhpcyBhc3NlcnRpb24gZmFpbHMgb24gdGVzdHMgc29tZXRpbWVzLgorICAgIEFT
U0VSVChtX2F1dG9tYXRpY1B1bGxOb2Rlcy5pc0VtcHR5KCkpOworICAgIGlmIChtX2F1dG9tYXRp
Y1B1bGxOb2Rlc05lZWRVcGRhdGluZykKKyAgICAgICAgbV9yZW5kZXJpbmdBdXRvbWF0aWNQdWxs
Tm9kZXMucmVzaXplKG1fYXV0b21hdGljUHVsbE5vZGVzLnNpemUoKSk7CisgICAgQVNTRVJUKG1f
cmVuZGVyaW5nQXV0b21hdGljUHVsbE5vZGVzLmlzRW1wdHkoKSk7CisgICAgLy8gRklYTUU6IENh
biB3ZSBhc3NlcnQgdGhhdCBtX2RlZmVycmVkRmluaXNoRGVyZWZMaXN0IGlzIGVtcHR5PworCisg
ICAgaWYgKCFpc09mZmxpbmVDb250ZXh0KCkgJiYgc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKSB7
CisgICAgICAgIGRvY3VtZW50KCktPnJlbW92ZUF1ZGlvUHJvZHVjZXIoKnRoaXMpOworICAgICAg
ICBkb2N1bWVudCgpLT51bnJlZ2lzdGVyRm9yVmlzaWJpbGl0eVN0YXRlQ2hhbmdlZENhbGxiYWNr
cygqdGhpcyk7CisgICAgfQorfQorCit2b2lkIFdlYktpdEF1ZGlvQ29udGV4dDo6bGF6eUluaXRp
YWxpemUoKQoreworICAgIEFTU0VSVCghbV9pc1N0b3BTY2hlZHVsZWQpOworCisgICAgaWYgKG1f
aXNJbml0aWFsaXplZCkKKyAgICAgICAgcmV0dXJuOworCisgICAgLy8gRG9uJ3QgYWxsb3cgdGhl
IGNvbnRleHQgdG8gaW5pdGlhbGl6ZSBhIHNlY29uZCB0aW1lIGFmdGVyIGl0J3MgYWxyZWFkeSBi
ZWVuIGV4cGxpY2l0bHkgdW5pbml0aWFsaXplZC4KKyAgICBBU1NFUlQoIW1faXNBdWRpb1RocmVh
ZEZpbmlzaGVkKTsKKyAgICBpZiAobV9pc0F1ZGlvVGhyZWFkRmluaXNoZWQpCisgICAgICAgIHJl
dHVybjsKKworICAgIGlmIChtX2Rlc3RpbmF0aW9uTm9kZSkgeworICAgICAgICBtX2Rlc3RpbmF0
aW9uTm9kZS0+aW5pdGlhbGl6ZSgpOworCisgICAgICAgIGlmICghaXNPZmZsaW5lQ29udGV4dCgp
KSB7CisgICAgICAgICAgICAvLyBUaGlzIHN0YXJ0cyB0aGUgYXVkaW8gdGhyZWFkLiBUaGUgZGVz
dGluYXRpb24gbm9kZSdzIHByb3ZpZGVJbnB1dCgpIG1ldGhvZCB3aWxsIG5vdyBiZSBjYWxsZWQg
cmVwZWF0ZWRseSB0byByZW5kZXIgYXVkaW8uCisgICAgICAgICAgICAvLyBFYWNoIHRpbWUgcHJv
dmlkZUlucHV0KCkgaXMgY2FsbGVkLCBhIHBvcnRpb24gb2YgdGhlIGF1ZGlvIHN0cmVhbSBpcyBy
ZW5kZXJlZC4gTGV0J3MgY2FsbCB0aGlzIHRpbWUgcGVyaW9kIGEgInJlbmRlciBxdWFudHVtIi4K
KyAgICAgICAgICAgIC8vIE5PVEU6IGZvciBub3cgZGVmYXVsdCBBdWRpb0NvbnRleHQgZG9lcyBu
b3QgbmVlZCBhbiBleHBsaWNpdCBzdGFydFJlbmRlcmluZygpIGNhbGwgZnJvbSBKYXZhU2NyaXB0
LgorICAgICAgICAgICAgLy8gV2UgbWF5IHdhbnQgdG8gY29uc2lkZXIgcmVxdWlyaW5nIGl0IGZv
ciBzeW1tZXRyeSB3aXRoIE9mZmxpbmVBdWRpb0NvbnRleHQuCisgICAgICAgICAgICBzdGFydFJl
bmRlcmluZygpOworICAgICAgICAgICAgKytzX2hhcmR3YXJlQ29udGV4dENvdW50OworICAgICAg
ICB9CisgICAgfQorICAgIG1faXNJbml0aWFsaXplZCA9IHRydWU7Cit9CisKK3ZvaWQgV2ViS2l0
QXVkaW9Db250ZXh0OjpjbGVhcigpCit7CisgICAgUmVmPFdlYktpdEF1ZGlvQ29udGV4dD4gcHJv
dGVjdGVkVGhpcygqdGhpcyk7CisKKyAgICAvLyBXZSBoYXZlIHRvIHJlbGVhc2Ugb3VyIHJlZmVy
ZW5jZSB0byB0aGUgZGVzdGluYXRpb24gbm9kZSBiZWZvcmUgdGhlIGNvbnRleHQgd2lsbCBldmVy
IGJlIGRlbGV0ZWQgc2luY2UgdGhlIGRlc3RpbmF0aW9uIG5vZGUgaG9sZHMgYSByZWZlcmVuY2Ug
dG8gdGhlIGNvbnRleHQuCisgICAgaWYgKG1fZGVzdGluYXRpb25Ob2RlKQorICAgICAgICBtX2Rl
c3RpbmF0aW9uTm9kZSA9IG51bGxwdHI7CisKKyAgICAvLyBBdWRpbyB0aHJlYWQgaXMgZGVhZC4g
Tm9ib2R5IHdpbGwgc2NoZWR1bGUgbm9kZSBkZWxldGlvbiBhY3Rpb24uIExldCdzIGRvIGl0IG91
cnNlbHZlcy4KKyAgICBkbyB7CisgICAgICAgIGRlbGV0ZU1hcmtlZE5vZGVzKCk7CisgICAgICAg
IG1fbm9kZXNUb0RlbGV0ZS5hcHBlbmRWZWN0b3IobV9ub2Rlc01hcmtlZEZvckRlbGV0aW9uKTsK
KyAgICAgICAgbV9ub2Rlc01hcmtlZEZvckRlbGV0aW9uLmNsZWFyKCk7CisgICAgfSB3aGlsZSAo
bV9ub2Rlc1RvRGVsZXRlLnNpemUoKSk7CisKKyAgICBjbGVhclBlbmRpbmdBY3Rpdml0eSgpOwor
fQorCit2b2lkIFdlYktpdEF1ZGlvQ29udGV4dDo6dW5pbml0aWFsaXplKCkKK3sKKyAgICBBTFdB
WVNfTE9HKExPR0lERU5USUZJRVIpOworCisgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKwor
ICAgIGlmICghbV9pc0luaXRpYWxpemVkKQorICAgICAgICByZXR1cm47CisKKyAgICAvLyBUaGlz
IHN0b3BzIHRoZSBhdWRpbyB0aHJlYWQgYW5kIGFsbCBhdWRpbyByZW5kZXJpbmcuCisgICAgaWYg
KG1fZGVzdGluYXRpb25Ob2RlKQorICAgICAgICBtX2Rlc3RpbmF0aW9uTm9kZS0+dW5pbml0aWFs
aXplKCk7CisKKyAgICAvLyBEb24ndCBhbGxvdyB0aGUgY29udGV4dCB0byBpbml0aWFsaXplIGEg
c2Vjb25kIHRpbWUgYWZ0ZXIgaXQncyBhbHJlYWR5IGJlZW4gZXhwbGljaXRseSB1bmluaXRpYWxp
emVkLgorICAgIG1faXNBdWRpb1RocmVhZEZpbmlzaGVkID0gdHJ1ZTsKKworICAgIGlmICghaXNP
ZmZsaW5lQ29udGV4dCgpKSB7CisgICAgICAgIEFTU0VSVChzX2hhcmR3YXJlQ29udGV4dENvdW50
KTsKKyAgICAgICAgLS1zX2hhcmR3YXJlQ29udGV4dENvdW50OworCisgICAgICAgIC8vIE9mZmxp
bmUgY29udGV4dHMgbW92ZSB0byAnQ2xvc2VkJyBzdGF0ZSB3aGVuIGRpc3BhdGNoaW5nIHRoZSBj
b21wbGV0aW9uIGV2ZW50LgorICAgICAgICBzZXRTdGF0ZShTdGF0ZTo6Q2xvc2VkKTsKKyAgICB9
CisKKyAgICAvLyBHZXQgcmlkIG9mIHRoZSBzb3VyY2VzIHdoaWNoIG1heSBzdGlsbCBiZSBwbGF5
aW5nLgorICAgIGRlcmVmVW5maW5pc2hlZFNvdXJjZU5vZGVzKCk7CisKKyAgICBtX2lzSW5pdGlh
bGl6ZWQgPSBmYWxzZTsKK30KKworYm9vbCBXZWJLaXRBdWRpb0NvbnRleHQ6OmlzSW5pdGlhbGl6
ZWQoKSBjb25zdAoreworICAgIHJldHVybiBtX2lzSW5pdGlhbGl6ZWQ7Cit9CisKK3ZvaWQgV2Vi
S2l0QXVkaW9Db250ZXh0OjphZGRSZWFjdGlvbihTdGF0ZSBzdGF0ZSwgRE9NUHJvbWlzZURlZmVy
cmVkPHZvaWQ+JiYgcHJvbWlzZSkKK3sKKyAgICBzaXplX3Qgc3RhdGVJbmRleCA9IHN0YXRpY19j
YXN0PHNpemVfdD4oc3RhdGUpOworICAgIGlmIChzdGF0ZUluZGV4ID49IG1fc3RhdGVSZWFjdGlv
bnMuc2l6ZSgpKQorICAgICAgICBtX3N0YXRlUmVhY3Rpb25zLmdyb3coc3RhdGVJbmRleCArIDEp
OworCisgICAgbV9zdGF0ZVJlYWN0aW9uc1tzdGF0ZUluZGV4XS5hcHBlbmQoV1RGTW92ZShwcm9t
aXNlKSk7Cit9CisKK3ZvaWQgV2ViS2l0QXVkaW9Db250ZXh0OjpzZXRTdGF0ZShTdGF0ZSBzdGF0
ZSkKK3sKKyAgICBpZiAobV9zdGF0ZSA9PSBzdGF0ZSkKKyAgICAgICAgcmV0dXJuOworCisgICAg
bV9zdGF0ZSA9IHN0YXRlOworICAgIG1fZXZlbnRRdWV1ZS0+ZW5xdWV1ZUV2ZW50KEV2ZW50Ojpj
cmVhdGUoZXZlbnROYW1lcygpLnN0YXRlY2hhbmdlRXZlbnQsIEV2ZW50OjpDYW5CdWJibGU6Olll
cywgRXZlbnQ6OklzQ2FuY2VsYWJsZTo6Tm8pKTsKKworICAgIHNpemVfdCBzdGF0ZUluZGV4ID0g
c3RhdGljX2Nhc3Q8c2l6ZV90PihzdGF0ZSk7CisgICAgaWYgKHN0YXRlSW5kZXggPj0gbV9zdGF0
ZVJlYWN0aW9ucy5zaXplKCkpCisgICAgICAgIHJldHVybjsKKworICAgIFZlY3RvcjxET01Qcm9t
aXNlRGVmZXJyZWQ8dm9pZD4+IHJlYWN0aW9uczsKKyAgICBtX3N0YXRlUmVhY3Rpb25zW3N0YXRl
SW5kZXhdLnN3YXAocmVhY3Rpb25zKTsKKworICAgIGZvciAoYXV0byYgcHJvbWlzZSA6IHJlYWN0
aW9ucykKKyAgICAgICAgcHJvbWlzZS5yZXNvbHZlKCk7Cit9CisKK3ZvaWQgV2ViS2l0QXVkaW9D
b250ZXh0OjpzdG9wKCkKK3sKKyAgICBBTFdBWVNfTE9HKExPR0lERU5USUZJRVIpOworCisgICAg
QVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKworICAgIC8vIFVzdWFsbHkgU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCBjYWxscyBzdG9wIHR3aWNlLgorICAgIGlmIChtX2lzU3RvcFNjaGVkdWxlZCkKKyAg
ICAgICAgcmV0dXJuOworICAgIG1faXNTdG9wU2NoZWR1bGVkID0gdHJ1ZTsKKworICAgIEFTU0VS
VChkb2N1bWVudCgpKTsKKyAgICBkb2N1bWVudCgpLT51cGRhdGVJc1BsYXlpbmdNZWRpYSgpOwor
CisgICAgdW5pbml0aWFsaXplKCk7CisgICAgY2xlYXIoKTsKK30KKwordm9pZCBXZWJLaXRBdWRp
b0NvbnRleHQ6OnN1c3BlbmQoUmVhc29uRm9yU3VzcGVuc2lvbikKK3sKKyAgICBpZiAoc3RhdGUo
KSA9PSBTdGF0ZTo6UnVubmluZykgeworICAgICAgICBtX21lZGlhU2Vzc2lvbi0+YmVnaW5JbnRl
cnJ1cHRpb24oUGxhdGZvcm1NZWRpYVNlc3Npb246OlBsYXliYWNrU3VzcGVuZGVkKTsKKyAgICAg
ICAgZG9jdW1lbnQoKS0+dXBkYXRlSXNQbGF5aW5nTWVkaWEoKTsKKyAgICB9Cit9CisKK3ZvaWQg
V2ViS2l0QXVkaW9Db250ZXh0OjpyZXN1bWUoKQoreworICAgIGlmIChzdGF0ZSgpID09IFN0YXRl
OjpJbnRlcnJ1cHRlZCkgeworICAgICAgICBtX21lZGlhU2Vzc2lvbi0+ZW5kSW50ZXJydXB0aW9u
KFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpNYXlSZXN1bWVQbGF5aW5nKTsKKyAgICAgICAgZG9jdW1l
bnQoKS0+dXBkYXRlSXNQbGF5aW5nTWVkaWEoKTsKKyAgICB9Cit9CisKK2NvbnN0IGNoYXIqIFdl
YktpdEF1ZGlvQ29udGV4dDo6YWN0aXZlRE9NT2JqZWN0TmFtZSgpIGNvbnN0Cit7CisgICAgcmV0
dXJuICJXZWJLaXRBdWRpb0NvbnRleHQiOworfQorCitEb2N1bWVudElkZW50aWZpZXIgV2ViS2l0
QXVkaW9Db250ZXh0Ojpob3N0aW5nRG9jdW1lbnRJZGVudGlmaWVyKCkgY29uc3QKK3sKKyAgICBh
dXRvKiBkb2N1bWVudCA9IGRvd25jYXN0PERvY3VtZW50PihtX3NjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQpOworICAgIHJldHVybiBkb2N1bWVudCA/IGRvY3VtZW50LT5pZGVudGlmaWVyKCkgOiBEb2N1
bWVudElkZW50aWZpZXIgeyB9OworfQorCitib29sIFdlYktpdEF1ZGlvQ29udGV4dDo6aXNTdXNw
ZW5kZWQoKSBjb25zdAoreworICAgIHJldHVybiAhZG9jdW1lbnQoKSB8fCBkb2N1bWVudCgpLT5h
Y3RpdmVET01PYmplY3RzQXJlU3VzcGVuZGVkKCkgfHwgZG9jdW1lbnQoKS0+YWN0aXZlRE9NT2Jq
ZWN0c0FyZVN0b3BwZWQoKTsKK30KKwordm9pZCBXZWJLaXRBdWRpb0NvbnRleHQ6OnZpc2liaWxp
dHlTdGF0ZUNoYW5nZWQoKQoreworICAgIC8vIERvIG5vdCBzdXNwZW5kIGlmIGF1ZGlvIGlzIGF1
ZGlibGUuCisgICAgaWYgKCFkb2N1bWVudCgpIHx8IG1lZGlhU3RhdGUoKSA9PSBNZWRpYVByb2R1
Y2VyOjpJc1BsYXlpbmdBdWRpbyB8fCBtX2lzU3RvcFNjaGVkdWxlZCkKKyAgICAgICAgcmV0dXJu
OworCisgICAgaWYgKGRvY3VtZW50KCktPmhpZGRlbigpKSB7CisgICAgICAgIGlmIChzdGF0ZSgp
ID09IFN0YXRlOjpSdW5uaW5nKSB7CisgICAgICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VE
KCJ2aXNpYmlsaXR5U3RhdGVDaGFuZ2VkKCkgU3VzcGVuZGluZyBwbGF5YmFjayBhZnRlciBnb2lu
ZyB0byB0aGUgYmFja2dyb3VuZCIpOworICAgICAgICAgICAgbV9tZWRpYVNlc3Npb24tPmJlZ2lu
SW50ZXJydXB0aW9uKFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpFbnRlcmluZ0JhY2tncm91bmQpOwor
ICAgICAgICB9CisgICAgfSBlbHNlIHsKKyAgICAgICAgaWYgKHN0YXRlKCkgPT0gU3RhdGU6Oklu
dGVycnVwdGVkKSB7CisgICAgICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJ2aXNpYmls
aXR5U3RhdGVDaGFuZ2VkKCkgUmVzdW1pbmcgcGxheWJhY2sgYWZ0ZXIgZW50ZXJpbmcgZm9yZWdy
b3VuZCIpOworICAgICAgICAgICAgbV9tZWRpYVNlc3Npb24tPmVuZEludGVycnVwdGlvbihQbGF0
Zm9ybU1lZGlhU2Vzc2lvbjo6TWF5UmVzdW1lUGxheWluZyk7CisgICAgICAgIH0KKyAgICB9Cit9
CisKK2Jvb2wgV2ViS2l0QXVkaW9Db250ZXh0Ojp3b3VsZFRhaW50T3JpZ2luKGNvbnN0IFVSTCYg
dXJsKSBjb25zdAoreworICAgIGlmICh1cmwucHJvdG9jb2xJc0RhdGEoKSkKKyAgICAgICAgcmV0
dXJuIGZhbHNlOworCisgICAgaWYgKGF1dG8qIGRvY3VtZW50ID0gdGhpcy0+ZG9jdW1lbnQoKSkK
KyAgICAgICAgcmV0dXJuICFkb2N1bWVudC0+c2VjdXJpdHlPcmlnaW4oKS5jYW5SZXF1ZXN0KHVy
bCk7CisKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK0V4Y2VwdGlvbk9yPFJlZjxBdWRpb0J1ZmZl
cj4+IFdlYktpdEF1ZGlvQ29udGV4dDo6Y3JlYXRlQnVmZmVyKHVuc2lnbmVkIG51bWJlck9mQ2hh
bm5lbHMsIHNpemVfdCBudW1iZXJPZkZyYW1lcywgZmxvYXQgc2FtcGxlUmF0ZSkKK3sKKyAgICBh
dXRvIGF1ZGlvQnVmZmVyID0gQXVkaW9CdWZmZXI6OmNyZWF0ZShudW1iZXJPZkNoYW5uZWxzLCBu
dW1iZXJPZkZyYW1lcywgc2FtcGxlUmF0ZSk7CisgICAgaWYgKCFhdWRpb0J1ZmZlcikKKyAgICAg
ICAgcmV0dXJuIEV4Y2VwdGlvbiB7IE5vdFN1cHBvcnRlZEVycm9yIH07CisgICAgcmV0dXJuIGF1
ZGlvQnVmZmVyLnJlbGVhc2VOb25OdWxsKCk7Cit9CisKK0V4Y2VwdGlvbk9yPFJlZjxBdWRpb0J1
ZmZlcj4+IFdlYktpdEF1ZGlvQ29udGV4dDo6Y3JlYXRlQnVmZmVyKEFycmF5QnVmZmVyJiBhcnJh
eUJ1ZmZlciwgYm9vbCBtaXhUb01vbm8pCit7CisgICAgYXV0byBhdWRpb0J1ZmZlciA9IEF1ZGlv
QnVmZmVyOjpjcmVhdGVGcm9tQXVkaW9GaWxlRGF0YShhcnJheUJ1ZmZlci5kYXRhKCksIGFycmF5
QnVmZmVyLmJ5dGVMZW5ndGgoKSwgbWl4VG9Nb25vLCBzYW1wbGVSYXRlKCkpOworICAgIGlmICgh
YXVkaW9CdWZmZXIpCisgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBTeW50YXhFcnJvciB9Owor
ICAgIHJldHVybiBhdWRpb0J1ZmZlci5yZWxlYXNlTm9uTnVsbCgpOworfQorCit2b2lkIFdlYktp
dEF1ZGlvQ29udGV4dDo6ZGVjb2RlQXVkaW9EYXRhKFJlZjxBcnJheUJ1ZmZlcj4mJiBhdWRpb0Rh
dGEsIFJlZlB0cjxBdWRpb0J1ZmZlckNhbGxiYWNrPiYmIHN1Y2Nlc3NDYWxsYmFjaywgUmVmUHRy
PEF1ZGlvQnVmZmVyQ2FsbGJhY2s+JiYgZXJyb3JDYWxsYmFjaykKK3sKKyAgICBpZiAoIW1fYXVk
aW9EZWNvZGVyKQorICAgICAgICBtX2F1ZGlvRGVjb2RlciA9IG1ha2VVbmlxdWU8QXN5bmNBdWRp
b0RlY29kZXI+KCk7CisgICAgbV9hdWRpb0RlY29kZXItPmRlY29kZUFzeW5jKFdURk1vdmUoYXVk
aW9EYXRhKSwgc2FtcGxlUmF0ZSgpLCBXVEZNb3ZlKHN1Y2Nlc3NDYWxsYmFjayksIFdURk1vdmUo
ZXJyb3JDYWxsYmFjaykpOworfQorCitFeGNlcHRpb25PcjxSZWY8QXVkaW9CdWZmZXJTb3VyY2VO
b2RlPj4gV2ViS2l0QXVkaW9Db250ZXh0OjpjcmVhdGVCdWZmZXJTb3VyY2UoKQoreworICAgIEFM
V0FZU19MT0coTE9HSURFTlRJRklFUik7CisKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwor
CisgICAgaWYgKG1faXNTdG9wU2NoZWR1bGVkKQorICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsg
SW52YWxpZFN0YXRlRXJyb3IgfTsKKworICAgIGxhenlJbml0aWFsaXplKCk7CisgICAgUmVmPEF1
ZGlvQnVmZmVyU291cmNlTm9kZT4gbm9kZSA9IEF1ZGlvQnVmZmVyU291cmNlTm9kZTo6Y3JlYXRl
KCp0aGlzLCBzYW1wbGVSYXRlKCkpOworCisgICAgLy8gQmVjYXVzZSB0aGlzIGlzIGFuIEF1ZGlv
U2NoZWR1bGVkU291cmNlTm9kZSwgdGhlIGNvbnRleHQga2VlcHMgYSByZWZlcmVuY2UgdW50aWwg
aXQgaGFzIGZpbmlzaGVkIHBsYXlpbmcuCisgICAgLy8gV2hlbiB0aGlzIGhhcHBlbnMsIEF1ZGlv
U2NoZWR1bGVkU291cmNlTm9kZTo6ZmluaXNoKCkgY2FsbHMgV2ViS2l0QXVkaW9Db250ZXh0Ojpu
b3RpZnlOb2RlRmluaXNoZWRQcm9jZXNzaW5nKCkuCisgICAgcmVmTm9kZShub2RlKTsKKworICAg
IHJldHVybiBub2RlOworfQorCisjaWYgRU5BQkxFKFZJREVPKQorCitFeGNlcHRpb25PcjxSZWY8
TWVkaWFFbGVtZW50QXVkaW9Tb3VyY2VOb2RlPj4gV2ViS2l0QXVkaW9Db250ZXh0OjpjcmVhdGVN
ZWRpYUVsZW1lbnRTb3VyY2UoSFRNTE1lZGlhRWxlbWVudCYgbWVkaWFFbGVtZW50KQoreworICAg
IEFMV0FZU19MT0coTE9HSURFTlRJRklFUik7CisKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkp
OworCisgICAgaWYgKG1faXNTdG9wU2NoZWR1bGVkIHx8IG1lZGlhRWxlbWVudC5hdWRpb1NvdXJj
ZU5vZGUoKSkKKyAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IEludmFsaWRTdGF0ZUVycm9yIH07
CisKKyAgICBsYXp5SW5pdGlhbGl6ZSgpOworCisgICAgYXV0byBub2RlID0gTWVkaWFFbGVtZW50
QXVkaW9Tb3VyY2VOb2RlOjpjcmVhdGUoKnRoaXMsIG1lZGlhRWxlbWVudCk7CisKKyAgICBtZWRp
YUVsZW1lbnQuc2V0QXVkaW9Tb3VyY2VOb2RlKG5vZGUucHRyKCkpOworCisgICAgcmVmTm9kZShu
b2RlLmdldCgpKTsgLy8gY29udGV4dCBrZWVwcyByZWZlcmVuY2UgdW50aWwgbm9kZSBpcyBkaXNj
b25uZWN0ZWQKKyAgICByZXR1cm4gbm9kZTsKK30KKworI2VuZGlmCisKKyNpZiBFTkFCTEUoTUVE
SUFfU1RSRUFNKQorCitFeGNlcHRpb25PcjxSZWY8TWVkaWFTdHJlYW1BdWRpb1NvdXJjZU5vZGU+
PiBXZWJLaXRBdWRpb0NvbnRleHQ6OmNyZWF0ZU1lZGlhU3RyZWFtU291cmNlKE1lZGlhU3RyZWFt
JiBtZWRpYVN0cmVhbSkKK3sKKyAgICBBTFdBWVNfTE9HKExPR0lERU5USUZJRVIpOworCisgICAg
QVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKworICAgIGlmIChtX2lzU3RvcFNjaGVkdWxlZCkKKyAg
ICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IEludmFsaWRTdGF0ZUVycm9yIH07CisKKyAgICBhdXRv
IGF1ZGlvVHJhY2tzID0gbWVkaWFTdHJlYW0uZ2V0QXVkaW9UcmFja3MoKTsKKyAgICBpZiAoYXVk
aW9UcmFja3MuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgSW52YWxpZFN0
YXRlRXJyb3IgfTsKKworICAgIE1lZGlhU3RyZWFtVHJhY2sqIHByb3ZpZGVyVHJhY2sgPSBudWxs
cHRyOworICAgIGZvciAoYXV0byYgdHJhY2sgOiBhdWRpb1RyYWNrcykgeworICAgICAgICBpZiAo
dHJhY2stPmF1ZGlvU291cmNlUHJvdmlkZXIoKSkgeworICAgICAgICAgICAgcHJvdmlkZXJUcmFj
ayA9IHRyYWNrLmdldCgpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICB9Cisg
ICAgaWYgKCFwcm92aWRlclRyYWNrKQorICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgSW52YWxp
ZFN0YXRlRXJyb3IgfTsKKworICAgIGxhenlJbml0aWFsaXplKCk7CisKKyAgICBhdXRvIG5vZGUg
PSBNZWRpYVN0cmVhbUF1ZGlvU291cmNlTm9kZTo6Y3JlYXRlKCp0aGlzLCBtZWRpYVN0cmVhbSwg
KnByb3ZpZGVyVHJhY2spOworICAgIG5vZGUtPnNldEZvcm1hdCgyLCBzYW1wbGVSYXRlKCkpOwor
CisgICAgcmVmTm9kZShub2RlKTsgLy8gY29udGV4dCBrZWVwcyByZWZlcmVuY2UgdW50aWwgbm9k
ZSBpcyBkaXNjb25uZWN0ZWQKKyAgICByZXR1cm4gbm9kZTsKK30KKworRXhjZXB0aW9uT3I8UmVm
PE1lZGlhU3RyZWFtQXVkaW9EZXN0aW5hdGlvbk5vZGU+PiBXZWJLaXRBdWRpb0NvbnRleHQ6OmNy
ZWF0ZU1lZGlhU3RyZWFtRGVzdGluYXRpb24oKQoreworICAgIGlmIChtX2lzU3RvcFNjaGVkdWxl
ZCkKKyAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IEludmFsaWRTdGF0ZUVycm9yIH07CisKKyAg
ICAvLyBGSVhNRTogQWRkIHN1cHBvcnQgZm9yIGFuIG9wdGlvbmFsIGFyZ3VtZW50IHdoaWNoIHNw
ZWNpZmllcyB0aGUgbnVtYmVyIG9mIGNoYW5uZWxzLgorICAgIC8vIEZJWE1FOiBUaGUgZGVmYXVs
dCBzaG91bGQgcHJvYmFibHkgYmUgc3RlcmVvIGluc3RlYWQgb2YgbW9uby4KKyAgICByZXR1cm4g
TWVkaWFTdHJlYW1BdWRpb0Rlc3RpbmF0aW9uTm9kZTo6Y3JlYXRlKCp0aGlzLCAxKTsKK30KKwor
I2VuZGlmCisKK0V4Y2VwdGlvbk9yPFJlZjxTY3JpcHRQcm9jZXNzb3JOb2RlPj4gV2ViS2l0QXVk
aW9Db250ZXh0OjpjcmVhdGVTY3JpcHRQcm9jZXNzb3Ioc2l6ZV90IGJ1ZmZlclNpemUsIHNpemVf
dCBudW1iZXJPZklucHV0Q2hhbm5lbHMsIHNpemVfdCBudW1iZXJPZk91dHB1dENoYW5uZWxzKQor
eworICAgIEFMV0FZU19MT0coTE9HSURFTlRJRklFUik7CisKKyAgICBBU1NFUlQoaXNNYWluVGhy
ZWFkKCkpOworCisgICAgaWYgKG1faXNTdG9wU2NoZWR1bGVkKQorICAgICAgICByZXR1cm4gRXhj
ZXB0aW9uIHsgSW52YWxpZFN0YXRlRXJyb3IgfTsKKworICAgIGxhenlJbml0aWFsaXplKCk7CisK
KyAgICAvLyBXM0MgRWRpdG9yJ3MgRHJhZnQgMDYgSnVuZSAyMDE3CisgICAgLy8gIGh0dHBzOi8v
d2ViYXVkaW8uZ2l0aHViLmlvL3dlYi1hdWRpby1hcGkvI3dpZGwtQmFzZUF1ZGlvQ29udGV4dC1j
cmVhdGVTY3JpcHRQcm9jZXNzb3ItU2NyaXB0UHJvY2Vzc29yTm9kZS11bnNpZ25lZC1sb25nLWJ1
ZmZlclNpemUtdW5zaWduZWQtbG9uZy1udW1iZXJPZklucHV0Q2hhbm5lbHMtdW5zaWduZWQtbG9u
Zy1udW1iZXJPZk91dHB1dENoYW5uZWxzCisKKyAgICAvLyBUaGUgYnVmZmVyU2l6ZSBwYXJhbWV0
ZXIgZGV0ZXJtaW5lcyB0aGUgYnVmZmVyIHNpemUgaW4gdW5pdHMgb2Ygc2FtcGxlLWZyYW1lcy4g
SWYgaXQncyBub3QgcGFzc2VkIGluLAorICAgIC8vIG9yIGlmIHRoZSB2YWx1ZSBpcyAwLCB0aGVu
IHRoZSBpbXBsZW1lbnRhdGlvbiB3aWxsIGNob29zZSB0aGUgYmVzdCBidWZmZXIgc2l6ZSBmb3Ig
dGhlIGdpdmVuIGVudmlyb25tZW50LAorICAgIC8vIHdoaWNoIHdpbGwgYmUgY29uc3RhbnQgcG93
ZXIgb2YgMiB0aHJvdWdob3V0IHRoZSBsaWZldGltZSBvZiB0aGUgbm9kZS4gLi4uIElmIHRoZSB2
YWx1ZSBvZiB0aGlzIHBhcmFtZXRlcgorICAgIC8vIGlzIG5vdCBvbmUgb2YgdGhlIGFsbG93ZWQg
cG93ZXItb2YtMiB2YWx1ZXMgbGlzdGVkIGFib3ZlLCBhbiBJbmRleFNpemVFcnJvciBtdXN0IGJl
IHRocm93bi4KKyAgICBzd2l0Y2ggKGJ1ZmZlclNpemUpIHsKKyAgICBjYXNlIDA6CisjaWYgVVNF
KEFVRElPX1NFU1NJT04pCisgICAgICAgIC8vIFBpY2sgYSB2YWx1ZSBiZXR3ZWVuIDI1NiAoMl44
KSBhbmQgMTYzODQgKDJeMTQpLCBiYXNlZCBvbiB0aGUgYnVmZmVyIHNpemUgb2YgdGhlIGN1cnJl
bnQgQXVkaW9TZXNzaW9uOgorICAgICAgICBidWZmZXJTaXplID0gMSA8PCBzdGQ6Om1heDxzaXpl
X3Q+KDgsIHN0ZDo6bWluPHNpemVfdD4oMTQsIHN0ZDo6bG9nMihBdWRpb1Nlc3Npb246OnNoYXJl
ZFNlc3Npb24oKS5idWZmZXJTaXplKCkpKSk7CisjZWxzZQorICAgICAgICBidWZmZXJTaXplID0g
MjA0ODsKKyNlbmRpZgorICAgICAgICBicmVhazsKKyAgICBjYXNlIDI1NjoKKyAgICBjYXNlIDUx
MjoKKyAgICBjYXNlIDEwMjQ6CisgICAgY2FzZSAyMDQ4OgorICAgIGNhc2UgNDA5NjoKKyAgICBj
YXNlIDgxOTI6CisgICAgY2FzZSAxNjM4NDoKKyAgICAgICAgYnJlYWs7CisgICAgZGVmYXVsdDoK
KyAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IEluZGV4U2l6ZUVycm9yIH07CisgICAgfQorCisg
ICAgLy8gQW4gSW5kZXhTaXplRXJyb3IgZXhjZXB0aW9uIG11c3QgYmUgdGhyb3duIGlmIGJ1ZmZl
clNpemUgb3IgbnVtYmVyT2ZJbnB1dENoYW5uZWxzIG9yIG51bWJlck9mT3V0cHV0Q2hhbm5lbHMK
KyAgICAvLyBhcmUgb3V0c2lkZSB0aGUgdmFsaWQgcmFuZ2UuIEl0IGlzIGludmFsaWQgZm9yIGJv
dGggbnVtYmVyT2ZJbnB1dENoYW5uZWxzIGFuZCBudW1iZXJPZk91dHB1dENoYW5uZWxzIHRvIGJl
IHplcm8uCisgICAgLy8gSW4gdGhpcyBjYXNlIGFuIEluZGV4U2l6ZUVycm9yIG11c3QgYmUgdGhy
b3duLgorCisgICAgaWYgKCFudW1iZXJPZklucHV0Q2hhbm5lbHMgJiYgIW51bWJlck9mT3V0cHV0
Q2hhbm5lbHMpCisgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBOb3RTdXBwb3J0ZWRFcnJvciB9
OworCisgICAgLy8gVGhpcyBwYXJhbWV0ZXIgW251bWJlck9mSW5wdXRDaGFubmVsc10gZGV0ZXJt
aW5lcyB0aGUgbnVtYmVyIG9mIGNoYW5uZWxzIGZvciB0aGlzIG5vZGUncyBpbnB1dC4gVmFsdWVz
IG9mCisgICAgLy8gdXAgdG8gMzIgbXVzdCBiZSBzdXBwb3J0ZWQuIEEgTm90U3VwcG9ydGVkRXJy
b3IgbXVzdCBiZSB0aHJvd24gaWYgdGhlIG51bWJlciBvZiBjaGFubmVscyBpcyBub3Qgc3VwcG9y
dGVkLgorCisgICAgaWYgKG51bWJlck9mSW5wdXRDaGFubmVscyA+IG1heE51bWJlck9mQ2hhbm5l
bHMoKSkKKyAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IE5vdFN1cHBvcnRlZEVycm9yIH07CisK
KyAgICAvLyBUaGlzIHBhcmFtZXRlciBbbnVtYmVyT2ZPdXRwdXRDaGFubmVsc10gZGV0ZXJtaW5l
cyB0aGUgbnVtYmVyIG9mIGNoYW5uZWxzIGZvciB0aGlzIG5vZGUncyBvdXRwdXQuIFZhbHVlcyBv
ZgorICAgIC8vIHVwIHRvIDMyIG11c3QgYmUgc3VwcG9ydGVkLiBBIE5vdFN1cHBvcnRlZEVycm9y
IG11c3QgYmUgdGhyb3duIGlmIHRoZSBudW1iZXIgb2YgY2hhbm5lbHMgaXMgbm90IHN1cHBvcnRl
ZC4KKworICAgIGlmIChudW1iZXJPZk91dHB1dENoYW5uZWxzID4gbWF4TnVtYmVyT2ZDaGFubmVs
cygpKQorICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgTm90U3VwcG9ydGVkRXJyb3IgfTsKKwor
ICAgIGF1dG8gbm9kZSA9IFNjcmlwdFByb2Nlc3Nvck5vZGU6OmNyZWF0ZSgqdGhpcywgc2FtcGxl
UmF0ZSgpLCBidWZmZXJTaXplLCBudW1iZXJPZklucHV0Q2hhbm5lbHMsIG51bWJlck9mT3V0cHV0
Q2hhbm5lbHMpOworCisgICAgcmVmTm9kZShub2RlKTsgLy8gY29udGV4dCBrZWVwcyByZWZlcmVu
Y2UgdW50aWwgd2Ugc3RvcCBtYWtpbmcgamF2YXNjcmlwdCByZW5kZXJpbmcgY2FsbGJhY2tzCisg
ICAgcmV0dXJuIG5vZGU7Cit9CisKK0V4Y2VwdGlvbk9yPFJlZjxCaXF1YWRGaWx0ZXJOb2RlPj4g
V2ViS2l0QXVkaW9Db250ZXh0OjpjcmVhdGVCaXF1YWRGaWx0ZXIoKQoreworICAgIEFMV0FZU19M
T0coTE9HSURFTlRJRklFUik7CisKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAgIGlm
IChtX2lzU3RvcFNjaGVkdWxlZCkKKyAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IEludmFsaWRT
dGF0ZUVycm9yIH07CisKKyAgICBsYXp5SW5pdGlhbGl6ZSgpOworCisgICAgcmV0dXJuIEJpcXVh
ZEZpbHRlck5vZGU6OmNyZWF0ZSgqdGhpcywgc2FtcGxlUmF0ZSgpKTsKK30KKworRXhjZXB0aW9u
T3I8UmVmPFdhdmVTaGFwZXJOb2RlPj4gV2ViS2l0QXVkaW9Db250ZXh0OjpjcmVhdGVXYXZlU2hh
cGVyKCkKK3sKKyAgICBBTFdBWVNfTE9HKExPR0lERU5USUZJRVIpOworCisgICAgQVNTRVJUKGlz
TWFpblRocmVhZCgpKTsKKyAgICBpZiAobV9pc1N0b3BTY2hlZHVsZWQpCisgICAgICAgIHJldHVy
biBFeGNlcHRpb24geyBJbnZhbGlkU3RhdGVFcnJvciB9OworCisgICAgbGF6eUluaXRpYWxpemUo
KTsKKyAgICByZXR1cm4gV2F2ZVNoYXBlck5vZGU6OmNyZWF0ZSgqdGhpcyk7Cit9CisKK0V4Y2Vw
dGlvbk9yPFJlZjxXZWJLaXRBdWRpb1Bhbm5lck5vZGU+PiBXZWJLaXRBdWRpb0NvbnRleHQ6OmNy
ZWF0ZVBhbm5lcigpCit7CisgICAgQUxXQVlTX0xPRyhMT0dJREVOVElGSUVSKTsKKworICAgIEFT
U0VSVChpc01haW5UaHJlYWQoKSk7CisgICAgaWYgKG1faXNTdG9wU2NoZWR1bGVkKQorICAgICAg
ICByZXR1cm4gRXhjZXB0aW9uIHsgSW52YWxpZFN0YXRlRXJyb3IgfTsKKworICAgIGxhenlJbml0
aWFsaXplKCk7CisgICAgcmV0dXJuIFdlYktpdEF1ZGlvUGFubmVyTm9kZTo6Y3JlYXRlKCp0aGlz
LCBzYW1wbGVSYXRlKCkpOworfQorCitFeGNlcHRpb25PcjxSZWY8Q29udm9sdmVyTm9kZT4+IFdl
YktpdEF1ZGlvQ29udGV4dDo6Y3JlYXRlQ29udm9sdmVyKCkKK3sKKyAgICBBTFdBWVNfTE9HKExP
R0lERU5USUZJRVIpOworCisgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKyAgICBpZiAobV9p
c1N0b3BTY2hlZHVsZWQpCisgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBJbnZhbGlkU3RhdGVF
cnJvciB9OworCisgICAgbGF6eUluaXRpYWxpemUoKTsKKyAgICByZXR1cm4gQ29udm9sdmVyTm9k
ZTo6Y3JlYXRlKCp0aGlzLCBzYW1wbGVSYXRlKCkpOworfQorCitFeGNlcHRpb25PcjxSZWY8RHlu
YW1pY3NDb21wcmVzc29yTm9kZT4+IFdlYktpdEF1ZGlvQ29udGV4dDo6Y3JlYXRlRHluYW1pY3ND
b21wcmVzc29yKCkKK3sKKyAgICBBTFdBWVNfTE9HKExPR0lERU5USUZJRVIpOworCisgICAgQVNT
RVJUKGlzTWFpblRocmVhZCgpKTsKKyAgICBpZiAobV9pc1N0b3BTY2hlZHVsZWQpCisgICAgICAg
IHJldHVybiBFeGNlcHRpb24geyBJbnZhbGlkU3RhdGVFcnJvciB9OworCisgICAgbGF6eUluaXRp
YWxpemUoKTsKKyAgICByZXR1cm4gRHluYW1pY3NDb21wcmVzc29yTm9kZTo6Y3JlYXRlKCp0aGlz
LCBzYW1wbGVSYXRlKCkpOworfQorCitFeGNlcHRpb25PcjxSZWY8QW5hbHlzZXJOb2RlPj4gV2Vi
S2l0QXVkaW9Db250ZXh0OjpjcmVhdGVBbmFseXNlcigpCit7CisgICAgQUxXQVlTX0xPRyhMT0dJ
REVOVElGSUVSKTsKKworICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisgICAgaWYgKG1faXNT
dG9wU2NoZWR1bGVkKQorICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgSW52YWxpZFN0YXRlRXJy
b3IgfTsKKworICAgIGxhenlJbml0aWFsaXplKCk7CisgICAgcmV0dXJuIEFuYWx5c2VyTm9kZTo6
Y3JlYXRlKCp0aGlzLCBzYW1wbGVSYXRlKCkpOworfQorCitFeGNlcHRpb25PcjxSZWY8R2Fpbk5v
ZGU+PiBXZWJLaXRBdWRpb0NvbnRleHQ6OmNyZWF0ZUdhaW4oKQoreworICAgIEFMV0FZU19MT0co
TE9HSURFTlRJRklFUik7CisKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAgIGlmICht
X2lzU3RvcFNjaGVkdWxlZCkKKyAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IEludmFsaWRTdGF0
ZUVycm9yIH07CisKKyAgICBsYXp5SW5pdGlhbGl6ZSgpOworICAgIHJldHVybiBHYWluTm9kZTo6
Y3JlYXRlKCp0aGlzLCBzYW1wbGVSYXRlKCkpOworfQorCitFeGNlcHRpb25PcjxSZWY8RGVsYXlO
b2RlPj4gV2ViS2l0QXVkaW9Db250ZXh0OjpjcmVhdGVEZWxheShkb3VibGUgbWF4RGVsYXlUaW1l
KQoreworICAgIEFMV0FZU19MT0coTE9HSURFTlRJRklFUik7CisKKyAgICBBU1NFUlQoaXNNYWlu
VGhyZWFkKCkpOworICAgIGlmIChtX2lzU3RvcFNjaGVkdWxlZCkKKyAgICAgICAgcmV0dXJuIEV4
Y2VwdGlvbiB7IEludmFsaWRTdGF0ZUVycm9yIH07CisKKyAgICBsYXp5SW5pdGlhbGl6ZSgpOwor
ICAgIHJldHVybiBEZWxheU5vZGU6OmNyZWF0ZSgqdGhpcywgc2FtcGxlUmF0ZSgpLCBtYXhEZWxh
eVRpbWUpOworfQorCitFeGNlcHRpb25PcjxSZWY8Q2hhbm5lbFNwbGl0dGVyTm9kZT4+IFdlYktp
dEF1ZGlvQ29udGV4dDo6Y3JlYXRlQ2hhbm5lbFNwbGl0dGVyKHNpemVfdCBudW1iZXJPZk91dHB1
dHMpCit7CisgICAgQUxXQVlTX0xPRyhMT0dJREVOVElGSUVSKTsKKworICAgIEFTU0VSVChpc01h
aW5UaHJlYWQoKSk7CisgICAgaWYgKG1faXNTdG9wU2NoZWR1bGVkKQorICAgICAgICByZXR1cm4g
RXhjZXB0aW9uIHsgSW52YWxpZFN0YXRlRXJyb3IgfTsKKworICAgIGxhenlJbml0aWFsaXplKCk7
CisgICAgYXV0byBub2RlID0gQ2hhbm5lbFNwbGl0dGVyTm9kZTo6Y3JlYXRlKCp0aGlzLCBzYW1w
bGVSYXRlKCksIG51bWJlck9mT3V0cHV0cyk7CisgICAgaWYgKCFub2RlKQorICAgICAgICByZXR1
cm4gRXhjZXB0aW9uIHsgSW5kZXhTaXplRXJyb3IgfTsKKyAgICByZXR1cm4gbm9kZS5yZWxlYXNl
Tm9uTnVsbCgpOworfQorCitFeGNlcHRpb25PcjxSZWY8Q2hhbm5lbE1lcmdlck5vZGU+PiBXZWJL
aXRBdWRpb0NvbnRleHQ6OmNyZWF0ZUNoYW5uZWxNZXJnZXIoc2l6ZV90IG51bWJlck9mSW5wdXRz
KQoreworICAgIEFMV0FZU19MT0coTE9HSURFTlRJRklFUik7CisKKyAgICBBU1NFUlQoaXNNYWlu
VGhyZWFkKCkpOworICAgIGlmIChtX2lzU3RvcFNjaGVkdWxlZCkKKyAgICAgICAgcmV0dXJuIEV4
Y2VwdGlvbiB7IEludmFsaWRTdGF0ZUVycm9yIH07CisKKyAgICBsYXp5SW5pdGlhbGl6ZSgpOwor
ICAgIGF1dG8gbm9kZSA9IENoYW5uZWxNZXJnZXJOb2RlOjpjcmVhdGUoKnRoaXMsIHNhbXBsZVJh
dGUoKSwgbnVtYmVyT2ZJbnB1dHMpOworICAgIGlmICghbm9kZSkKKyAgICAgICAgcmV0dXJuIEV4
Y2VwdGlvbiB7IEluZGV4U2l6ZUVycm9yIH07CisgICAgcmV0dXJuIG5vZGUucmVsZWFzZU5vbk51
bGwoKTsKK30KKworRXhjZXB0aW9uT3I8UmVmPE9zY2lsbGF0b3JOb2RlPj4gV2ViS2l0QXVkaW9D
b250ZXh0OjpjcmVhdGVPc2NpbGxhdG9yKCkKK3sKKyAgICBBTFdBWVNfTE9HKExPR0lERU5USUZJ
RVIpOworCisgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKyAgICBpZiAobV9pc1N0b3BTY2hl
ZHVsZWQpCisgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBJbnZhbGlkU3RhdGVFcnJvciB9Owor
CisgICAgbGF6eUluaXRpYWxpemUoKTsKKworICAgIFJlZjxPc2NpbGxhdG9yTm9kZT4gbm9kZSA9
IE9zY2lsbGF0b3JOb2RlOjpjcmVhdGUoKnRoaXMsIHNhbXBsZVJhdGUoKSk7CisKKyAgICAvLyBC
ZWNhdXNlIHRoaXMgaXMgYW4gQXVkaW9TY2hlZHVsZWRTb3VyY2VOb2RlLCB0aGUgY29udGV4dCBr
ZWVwcyBhIHJlZmVyZW5jZSB1bnRpbCBpdCBoYXMgZmluaXNoZWQgcGxheWluZy4KKyAgICAvLyBX
aGVuIHRoaXMgaGFwcGVucywgQXVkaW9TY2hlZHVsZWRTb3VyY2VOb2RlOjpmaW5pc2goKSBjYWxs
cyBXZWJLaXRBdWRpb0NvbnRleHQ6Om5vdGlmeU5vZGVGaW5pc2hlZFByb2Nlc3NpbmcoKS4KKyAg
ICByZWZOb2RlKG5vZGUpOworCisgICAgcmV0dXJuIG5vZGU7Cit9CisKK0V4Y2VwdGlvbk9yPFJl
ZjxQZXJpb2RpY1dhdmU+PiBXZWJLaXRBdWRpb0NvbnRleHQ6OmNyZWF0ZVBlcmlvZGljV2F2ZShG
bG9hdDMyQXJyYXkmIHJlYWwsIEZsb2F0MzJBcnJheSYgaW1hZ2luYXJ5KQoreworICAgIEFMV0FZ
U19MT0coTE9HSURFTlRJRklFUik7CisKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAg
IGlmIChtX2lzU3RvcFNjaGVkdWxlZCkKKyAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IEludmFs
aWRTdGF0ZUVycm9yIH07CisKKyAgICBpZiAocmVhbC5sZW5ndGgoKSAhPSBpbWFnaW5hcnkubGVu
Z3RoKCkgfHwgKHJlYWwubGVuZ3RoKCkgPiBNYXhQZXJpb2RpY1dhdmVMZW5ndGgpIHx8ICFyZWFs
Lmxlbmd0aCgpKQorICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgSW5kZXhTaXplRXJyb3IgfTsK
KyAgICBsYXp5SW5pdGlhbGl6ZSgpOworICAgIHJldHVybiBQZXJpb2RpY1dhdmU6OmNyZWF0ZShz
YW1wbGVSYXRlKCksIHJlYWwsIGltYWdpbmFyeSk7Cit9CisKK3ZvaWQgV2ViS2l0QXVkaW9Db250
ZXh0Ojpub3RpZnlOb2RlRmluaXNoZWRQcm9jZXNzaW5nKEF1ZGlvTm9kZSogbm9kZSkKK3sKKyAg
ICBBU1NFUlQoaXNBdWRpb1RocmVhZCgpKTsKKyAgICBtX2ZpbmlzaGVkTm9kZXMuYXBwZW5kKG5v
ZGUpOworfQorCit2b2lkIFdlYktpdEF1ZGlvQ29udGV4dDo6ZGVyZWZGaW5pc2hlZFNvdXJjZU5v
ZGVzKCkKK3sKKyAgICBBU1NFUlQoaXNHcmFwaE93bmVyKCkpOworICAgIEFTU0VSVChpc0F1ZGlv
VGhyZWFkKCkgfHwgaXNBdWRpb1RocmVhZEZpbmlzaGVkKCkpOworICAgIGZvciAoYXV0byYgbm9k
ZSA6IG1fZmluaXNoZWROb2RlcykKKyAgICAgICAgZGVyZWZOb2RlKCpub2RlKTsKKworICAgIG1f
ZmluaXNoZWROb2Rlcy5jbGVhcigpOworfQorCit2b2lkIFdlYktpdEF1ZGlvQ29udGV4dDo6cmVm
Tm9kZShBdWRpb05vZGUmIG5vZGUpCit7CisgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKyAg
ICBBdXRvTG9ja2VyIGxvY2tlcigqdGhpcyk7CisKKyAgICBub2RlLnJlZihBdWRpb05vZGU6OlJl
ZlR5cGVDb25uZWN0aW9uKTsKKyAgICBtX3JlZmVyZW5jZWROb2Rlcy5hcHBlbmQoJm5vZGUpOwor
fQorCit2b2lkIFdlYktpdEF1ZGlvQ29udGV4dDo6ZGVyZWZOb2RlKEF1ZGlvTm9kZSYgbm9kZSkK
K3sKKyAgICBBU1NFUlQoaXNHcmFwaE93bmVyKCkpOworCisgICAgbm9kZS5kZXJlZihBdWRpb05v
ZGU6OlJlZlR5cGVDb25uZWN0aW9uKTsKKworICAgIEFTU0VSVChtX3JlZmVyZW5jZWROb2Rlcy5j
b250YWlucygmbm9kZSkpOworICAgIG1fcmVmZXJlbmNlZE5vZGVzLnJlbW92ZUZpcnN0KCZub2Rl
KTsKK30KKwordm9pZCBXZWJLaXRBdWRpb0NvbnRleHQ6OmRlcmVmVW5maW5pc2hlZFNvdXJjZU5v
ZGVzKCkKK3sKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkgJiYgaXNBdWRpb1RocmVhZEZpbmlz
aGVkKCkpOworICAgIGZvciAoYXV0byYgbm9kZSA6IG1fcmVmZXJlbmNlZE5vZGVzKQorICAgICAg
ICBub2RlLT5kZXJlZihBdWRpb05vZGU6OlJlZlR5cGVDb25uZWN0aW9uKTsKKworICAgIG1fcmVm
ZXJlbmNlZE5vZGVzLmNsZWFyKCk7Cit9CisKK3ZvaWQgV2ViS2l0QXVkaW9Db250ZXh0Ojpsb2Nr
KGJvb2wmIG11c3RSZWxlYXNlTG9jaykKK3sKKyAgICAvLyBEb24ndCBhbGxvdyByZWd1bGFyIGxv
Y2sgaW4gcmVhbC10aW1lIGF1ZGlvIHRocmVhZC4KKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkp
OworCisgICAgVGhyZWFkJiB0aGlzVGhyZWFkID0gVGhyZWFkOjpjdXJyZW50KCk7CisKKyAgICBp
ZiAoJnRoaXNUaHJlYWQgPT0gbV9ncmFwaE93bmVyVGhyZWFkKSB7CisgICAgICAgIC8vIFdlIGFs
cmVhZHkgaGF2ZSB0aGUgbG9jay4KKyAgICAgICAgbXVzdFJlbGVhc2VMb2NrID0gZmFsc2U7Cisg
ICAgfSBlbHNlIHsKKyAgICAgICAgLy8gQWNxdWlyZSB0aGUgbG9jay4KKyAgICAgICAgbV9jb250
ZXh0R3JhcGhNdXRleC5sb2NrKCk7CisgICAgICAgIG1fZ3JhcGhPd25lclRocmVhZCA9ICZ0aGlz
VGhyZWFkOworICAgICAgICBtdXN0UmVsZWFzZUxvY2sgPSB0cnVlOworICAgIH0KK30KKworYm9v
bCBXZWJLaXRBdWRpb0NvbnRleHQ6OnRyeUxvY2soYm9vbCYgbXVzdFJlbGVhc2VMb2NrKQorewor
ICAgIFRocmVhZCYgdGhpc1RocmVhZCA9IFRocmVhZDo6Y3VycmVudCgpOworICAgIGJvb2wgaXNB
dWRpb1RocmVhZCA9ICZ0aGlzVGhyZWFkID09IGF1ZGlvVGhyZWFkKCk7CisKKyAgICAvLyBUcnkg
dG8gY2F0Y2ggY2FzZXMgb2YgdXNpbmcgdHJ5IGxvY2sgb24gbWFpbiB0aHJlYWQgLSBpdCBzaG91
bGQgdXNlIHJlZ3VsYXIgbG9jay4KKyAgICBBU1NFUlQoaXNBdWRpb1RocmVhZCB8fCBpc0F1ZGlv
VGhyZWFkRmluaXNoZWQoKSk7CisKKyAgICBpZiAoIWlzQXVkaW9UaHJlYWQpIHsKKyAgICAgICAg
Ly8gSW4gcmVsZWFzZSBidWlsZCB0cmVhdCB0cnlMb2NrKCkgYXMgbG9jaygpIChzaW5jZSBhYm92
ZSBBU1NFUlQoaXNBdWRpb1RocmVhZCkgbmV2ZXIgZmlyZXMpIC0gdGhpcyBpcyB0aGUgYmVzdCB3
ZSBjYW4gZG8uCisgICAgICAgIGxvY2sobXVzdFJlbGVhc2VMb2NrKTsKKyAgICAgICAgcmV0dXJu
IHRydWU7CisgICAgfQorCisgICAgYm9vbCBoYXNMb2NrOworCisgICAgaWYgKCZ0aGlzVGhyZWFk
ID09IG1fZ3JhcGhPd25lclRocmVhZCkgeworICAgICAgICAvLyBUaHJlYWQgYWxyZWFkeSBoYXMg
dGhlIGxvY2suCisgICAgICAgIGhhc0xvY2sgPSB0cnVlOworICAgICAgICBtdXN0UmVsZWFzZUxv
Y2sgPSBmYWxzZTsKKyAgICB9IGVsc2UgeworICAgICAgICAvLyBEb24ndCBhbHJlYWR5IGhhdmUg
dGhlIGxvY2sgLSB0cnkgdG8gYWNxdWlyZSBpdC4KKyAgICAgICAgaGFzTG9jayA9IG1fY29udGV4
dEdyYXBoTXV0ZXgudHJ5TG9jaygpOworCisgICAgICAgIGlmIChoYXNMb2NrKQorICAgICAgICAg
ICAgbV9ncmFwaE93bmVyVGhyZWFkID0gJnRoaXNUaHJlYWQ7CisKKyAgICAgICAgbXVzdFJlbGVh
c2VMb2NrID0gaGFzTG9jazsKKyAgICB9CisKKyAgICByZXR1cm4gaGFzTG9jazsKK30KKwordm9p
ZCBXZWJLaXRBdWRpb0NvbnRleHQ6OnVubG9jaygpCit7CisgICAgQVNTRVJUKG1fZ3JhcGhPd25l
clRocmVhZCA9PSAmVGhyZWFkOjpjdXJyZW50KCkpOworCisgICAgbV9ncmFwaE93bmVyVGhyZWFk
ID0gbnVsbHB0cjsKKyAgICBtX2NvbnRleHRHcmFwaE11dGV4LnVubG9jaygpOworfQorCitib29s
IFdlYktpdEF1ZGlvQ29udGV4dDo6aXNBdWRpb1RocmVhZCgpIGNvbnN0Cit7CisgICAgcmV0dXJu
IG1fYXVkaW9UaHJlYWQgPT0gJlRocmVhZDo6Y3VycmVudCgpOworfQorCitib29sIFdlYktpdEF1
ZGlvQ29udGV4dDo6aXNHcmFwaE93bmVyKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9ncmFwaE93
bmVyVGhyZWFkID09ICZUaHJlYWQ6OmN1cnJlbnQoKTsKK30KKwordm9pZCBXZWJLaXRBdWRpb0Nv
bnRleHQ6OmFkZERlZmVycmVkRmluaXNoRGVyZWYoQXVkaW9Ob2RlKiBub2RlKQoreworICAgIEFT
U0VSVChpc0F1ZGlvVGhyZWFkKCkpOworICAgIG1fZGVmZXJyZWRGaW5pc2hEZXJlZkxpc3QuYXBw
ZW5kKG5vZGUpOworfQorCit2b2lkIFdlYktpdEF1ZGlvQ29udGV4dDo6aGFuZGxlUHJlUmVuZGVy
VGFza3MoKQoreworICAgIEFTU0VSVChpc0F1ZGlvVGhyZWFkKCkpOworCisgICAgLy8gQXQgdGhl
IGJlZ2lubmluZyBvZiBldmVyeSByZW5kZXIgcXVhbnR1bSwgdHJ5IHRvIHVwZGF0ZSB0aGUgaW50
ZXJuYWwgcmVuZGVyaW5nIGdyYXBoIHN0YXRlIChmcm9tIG1haW4gdGhyZWFkIGNoYW5nZXMpLgor
ICAgIC8vIEl0J3MgT0sgaWYgdGhlIHRyeUxvY2soKSBmYWlscywgd2UnbGwganVzdCB0YWtlIHNs
aWdodGx5IGxvbmdlciB0byBwaWNrIHVwIHRoZSBjaGFuZ2VzLgorICAgIGJvb2wgbXVzdFJlbGVh
c2VMb2NrOworICAgIGlmICh0cnlMb2NrKG11c3RSZWxlYXNlTG9jaykpIHsKKyAgICAgICAgLy8g
Rml4dXAgdGhlIHN0YXRlIG9mIGFueSBkaXJ0eSBBdWRpb1N1bW1pbmdKdW5jdGlvbnMgYW5kIEF1
ZGlvTm9kZU91dHB1dHMuCisgICAgICAgIGhhbmRsZURpcnR5QXVkaW9TdW1taW5nSnVuY3Rpb25z
KCk7CisgICAgICAgIGhhbmRsZURpcnR5QXVkaW9Ob2RlT3V0cHV0cygpOworCisgICAgICAgIHVw
ZGF0ZUF1dG9tYXRpY1B1bGxOb2RlcygpOworCisgICAgICAgIGlmIChtdXN0UmVsZWFzZUxvY2sp
CisgICAgICAgICAgICB1bmxvY2soKTsKKyAgICB9Cit9CisKK3ZvaWQgV2ViS2l0QXVkaW9Db250
ZXh0OjpoYW5kbGVQb3N0UmVuZGVyVGFza3MoKQoreworICAgIEFTU0VSVChpc0F1ZGlvVGhyZWFk
KCkpOworCisgICAgLy8gTXVzdCB1c2UgYSB0cnlMb2NrKCkgaGVyZSB0b28uIERvbid0IHdvcnJ5
LCB0aGUgbG9jayB3aWxsIHZlcnkgcmFyZWx5IGJlIGNvbnRlbmRlZCBhbmQgdGhpcyBtZXRob2Qg
aXMgY2FsbGVkIGZyZXF1ZW50bHkuCisgICAgLy8gVGhlIHdvcnN0IHRoYXQgY2FuIGhhcHBlbiBp
cyB0aGF0IHRoZXJlIHdpbGwgYmUgc29tZSBub2RlcyB3aGljaCB3aWxsIHRha2Ugc2xpZ2h0bHkg
bG9uZ2VyIHRoYW4gdXN1YWwgdG8gYmUgZGVsZXRlZCBvciByZW1vdmVkCisgICAgLy8gZnJvbSB0
aGUgcmVuZGVyIGdyYXBoIChpbiB3aGljaCBjYXNlIHRoZXknbGwgcmVuZGVyIHNpbGVuY2UpLgor
ICAgIGJvb2wgbXVzdFJlbGVhc2VMb2NrOworICAgIGlmICh0cnlMb2NrKG11c3RSZWxlYXNlTG9j
aykpIHsKKyAgICAgICAgLy8gVGFrZSBjYXJlIG9mIGZpbmlzaGluZyBhbnkgZGVyZWZzIHdoZXJl
IHRoZSB0cnlMb2NrKCkgZmFpbGVkIHByZXZpb3VzbHkuCisgICAgICAgIGhhbmRsZURlZmVycmVk
RmluaXNoRGVyZWZzKCk7CisKKyAgICAgICAgLy8gRHluYW1pY2FsbHkgY2xlYW4gdXAgbm9kZXMg
d2hpY2ggYXJlIG5vIGxvbmdlciBuZWVkZWQuCisgICAgICAgIGRlcmVmRmluaXNoZWRTb3VyY2VO
b2RlcygpOworCisgICAgICAgIC8vIERvbid0IGRlbGV0ZSBpbiB0aGUgcmVhbC10aW1lIHRocmVh
ZC4gTGV0IHRoZSBtYWluIHRocmVhZCBkbyBpdC4KKyAgICAgICAgLy8gUmVmLWNvdW50ZWQgb2Jq
ZWN0cyBoZWxkIGJ5IGNlcnRhaW4gQXVkaW9Ob2RlcyBtYXkgbm90IGJlIHRocmVhZC1zYWZlLgor
ICAgICAgICBzY2hlZHVsZU5vZGVEZWxldGlvbigpOworCisgICAgICAgIC8vIEZpeHVwIHRoZSBz
dGF0ZSBvZiBhbnkgZGlydHkgQXVkaW9TdW1taW5nSnVuY3Rpb25zIGFuZCBBdWRpb05vZGVPdXRw
dXRzLgorICAgICAgICBoYW5kbGVEaXJ0eUF1ZGlvU3VtbWluZ0p1bmN0aW9ucygpOworICAgICAg
ICBoYW5kbGVEaXJ0eUF1ZGlvTm9kZU91dHB1dHMoKTsKKworICAgICAgICB1cGRhdGVBdXRvbWF0
aWNQdWxsTm9kZXMoKTsKKworICAgICAgICBpZiAobXVzdFJlbGVhc2VMb2NrKQorICAgICAgICAg
ICAgdW5sb2NrKCk7CisgICAgfQorfQorCit2b2lkIFdlYktpdEF1ZGlvQ29udGV4dDo6aGFuZGxl
RGVmZXJyZWRGaW5pc2hEZXJlZnMoKQoreworICAgIEFTU0VSVChpc0F1ZGlvVGhyZWFkKCkgJiYg
aXNHcmFwaE93bmVyKCkpOworICAgIGZvciAoYXV0byYgbm9kZSA6IG1fZGVmZXJyZWRGaW5pc2hE
ZXJlZkxpc3QpCisgICAgICAgIG5vZGUtPmZpbmlzaERlcmVmKEF1ZGlvTm9kZTo6UmVmVHlwZUNv
bm5lY3Rpb24pOworCisgICAgbV9kZWZlcnJlZEZpbmlzaERlcmVmTGlzdC5jbGVhcigpOworfQor
Cit2b2lkIFdlYktpdEF1ZGlvQ29udGV4dDo6bWFya0ZvckRlbGV0aW9uKEF1ZGlvTm9kZSYgbm9k
ZSkKK3sKKyAgICBBU1NFUlQoaXNHcmFwaE93bmVyKCkpOworCisgICAgaWYgKGlzQXVkaW9UaHJl
YWRGaW5pc2hlZCgpKQorICAgICAgICBtX25vZGVzVG9EZWxldGUuYXBwZW5kKCZub2RlKTsKKyAg
ICBlbHNlCisgICAgICAgIG1fbm9kZXNNYXJrZWRGb3JEZWxldGlvbi5hcHBlbmQoJm5vZGUpOwor
CisgICAgLy8gVGhpcyBpcyBwcm9iYWJseSB0aGUgYmVzdCB0aW1lIGZvciB1cyB0byByZW1vdmUg
dGhlIG5vZGUgZnJvbSBhdXRvbWF0aWMgcHVsbCBsaXN0LAorICAgIC8vIHNpbmNlIGFsbCBjb25u
ZWN0aW9ucyBhcmUgZ29uZSBhbmQgd2UgaG9sZCB0aGUgZ3JhcGggbG9jay4gVGhlbiB3aGVuIGhh
bmRsZVBvc3RSZW5kZXJUYXNrcygpCisgICAgLy8gZ2V0cyBhIGNoYW5jZSB0byBzY2hlZHVsZSB0
aGUgZGVsZXRpb24gd29yaywgdXBkYXRlQXV0b21hdGljUHVsbE5vZGVzKCkgYWxzbyBnZXRzIGEg
Y2hhbmNlIHRvCisgICAgLy8gbW9kaWZ5IG1fcmVuZGVyaW5nQXV0b21hdGljUHVsbE5vZGVzLgor
ICAgIHJlbW92ZUF1dG9tYXRpY1B1bGxOb2RlKG5vZGUpOworfQorCit2b2lkIFdlYktpdEF1ZGlv
Q29udGV4dDo6c2NoZWR1bGVOb2RlRGVsZXRpb24oKQoreworICAgIGJvb2wgaXNHb29kID0gbV9p
c0luaXRpYWxpemVkICYmIGlzR3JhcGhPd25lcigpOworICAgIEFTU0VSVChpc0dvb2QpOworICAg
IGlmICghaXNHb29kKQorICAgICAgICByZXR1cm47CisKKyAgICAvLyBNYWtlIHN1cmUgdG8gY2Fs
bCBkZWxldGVNYXJrZWROb2RlcygpIG9uIG1haW4gdGhyZWFkLgorICAgIGlmIChtX25vZGVzTWFy
a2VkRm9yRGVsZXRpb24uc2l6ZSgpICYmICFtX2lzRGVsZXRpb25TY2hlZHVsZWQpIHsKKyAgICAg
ICAgbV9ub2Rlc1RvRGVsZXRlLmFwcGVuZFZlY3RvcihtX25vZGVzTWFya2VkRm9yRGVsZXRpb24p
OworICAgICAgICBtX25vZGVzTWFya2VkRm9yRGVsZXRpb24uY2xlYXIoKTsKKworICAgICAgICBt
X2lzRGVsZXRpb25TY2hlZHVsZWQgPSB0cnVlOworCisgICAgICAgIGNhbGxPbk1haW5UaHJlYWQo
W3Byb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKV0oKSBtdXRhYmxlIHsKKyAgICAgICAgICAg
IHByb3RlY3RlZFRoaXMtPmRlbGV0ZU1hcmtlZE5vZGVzKCk7CisgICAgICAgIH0pOworICAgIH0K
K30KKwordm9pZCBXZWJLaXRBdWRpb0NvbnRleHQ6OmRlbGV0ZU1hcmtlZE5vZGVzKCkKK3sKKyAg
ICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworCisgICAgLy8gUHJvdGVjdCB0aGlzIG9iamVjdCBm
cm9tIGJlaW5nIGRlbGV0ZWQgYmVmb3JlIHdlIHJlbGVhc2UgdGhlIG11dGV4IGxvY2tlZCBieSBB
dXRvTG9ja2VyLgorICAgIFJlZjxXZWJLaXRBdWRpb0NvbnRleHQ+IHByb3RlY3RlZFRoaXMoKnRo
aXMpOworICAgIHsKKyAgICAgICAgQXV0b0xvY2tlciBsb2NrZXIoKnRoaXMpOworCisgICAgICAg
IHdoaWxlIChtX25vZGVzVG9EZWxldGUuc2l6ZSgpKSB7CisgICAgICAgICAgICBBdWRpb05vZGUq
IG5vZGUgPSBtX25vZGVzVG9EZWxldGUudGFrZUxhc3QoKTsKKworICAgICAgICAgICAgLy8gQmVm
b3JlIGRlbGV0aW5nIHRoZSBub2RlLCBjbGVhciBvdXQgYW55IEF1ZGlvTm9kZUlucHV0cyBmcm9t
IG1fZGlydHlTdW1taW5nSnVuY3Rpb25zLgorICAgICAgICAgICAgdW5zaWduZWQgbnVtYmVyT2ZJ
bnB1dHMgPSBub2RlLT5udW1iZXJPZklucHV0cygpOworICAgICAgICAgICAgZm9yICh1bnNpZ25l
ZCBpID0gMDsgaSA8IG51bWJlck9mSW5wdXRzOyArK2kpCisgICAgICAgICAgICAgICAgbV9kaXJ0
eVN1bW1pbmdKdW5jdGlvbnMucmVtb3ZlKG5vZGUtPmlucHV0KGkpKTsKKworICAgICAgICAgICAg
Ly8gQmVmb3JlIGRlbGV0aW5nIHRoZSBub2RlLCBjbGVhciBvdXQgYW55IEF1ZGlvTm9kZU91dHB1
dHMgZnJvbSBtX2RpcnR5QXVkaW9Ob2RlT3V0cHV0cy4KKyAgICAgICAgICAgIHVuc2lnbmVkIG51
bWJlck9mT3V0cHV0cyA9IG5vZGUtPm51bWJlck9mT3V0cHV0cygpOworICAgICAgICAgICAgZm9y
ICh1bnNpZ25lZCBpID0gMDsgaSA8IG51bWJlck9mT3V0cHV0czsgKytpKQorICAgICAgICAgICAg
ICAgIG1fZGlydHlBdWRpb05vZGVPdXRwdXRzLnJlbW92ZShub2RlLT5vdXRwdXQoaSkpOworCisg
ICAgICAgICAgICAvLyBGaW5hbGx5LCBkZWxldGUgaXQuCisgICAgICAgICAgICBkZWxldGUgbm9k
ZTsKKyAgICAgICAgfQorICAgICAgICBtX2lzRGVsZXRpb25TY2hlZHVsZWQgPSBmYWxzZTsKKyAg
ICB9Cit9CisKK3ZvaWQgV2ViS2l0QXVkaW9Db250ZXh0OjptYXJrU3VtbWluZ0p1bmN0aW9uRGly
dHkoQXVkaW9TdW1taW5nSnVuY3Rpb24qIHN1bW1pbmdKdW5jdGlvbikKK3sKKyAgICBBU1NFUlQo
aXNHcmFwaE93bmVyKCkpOworICAgIG1fZGlydHlTdW1taW5nSnVuY3Rpb25zLmFkZChzdW1taW5n
SnVuY3Rpb24pOworfQorCit2b2lkIFdlYktpdEF1ZGlvQ29udGV4dDo6cmVtb3ZlTWFya2VkU3Vt
bWluZ0p1bmN0aW9uKEF1ZGlvU3VtbWluZ0p1bmN0aW9uKiBzdW1taW5nSnVuY3Rpb24pCit7Cisg
ICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKyAgICBBdXRvTG9ja2VyIGxvY2tlcigqdGhpcyk7
CisgICAgbV9kaXJ0eVN1bW1pbmdKdW5jdGlvbnMucmVtb3ZlKHN1bW1pbmdKdW5jdGlvbik7Cit9
CisKK3ZvaWQgV2ViS2l0QXVkaW9Db250ZXh0OjptYXJrQXVkaW9Ob2RlT3V0cHV0RGlydHkoQXVk
aW9Ob2RlT3V0cHV0KiBvdXRwdXQpCit7CisgICAgQVNTRVJUKGlzR3JhcGhPd25lcigpKTsKKyAg
ICBtX2RpcnR5QXVkaW9Ob2RlT3V0cHV0cy5hZGQob3V0cHV0KTsKK30KKwordm9pZCBXZWJLaXRB
dWRpb0NvbnRleHQ6OmhhbmRsZURpcnR5QXVkaW9TdW1taW5nSnVuY3Rpb25zKCkKK3sKKyAgICBB
U1NFUlQoaXNHcmFwaE93bmVyKCkpOworCisgICAgZm9yIChhdXRvJiBqdW5jdGlvbiA6IG1fZGly
dHlTdW1taW5nSnVuY3Rpb25zKQorICAgICAgICBqdW5jdGlvbi0+dXBkYXRlUmVuZGVyaW5nU3Rh
dGUoKTsKKworICAgIG1fZGlydHlTdW1taW5nSnVuY3Rpb25zLmNsZWFyKCk7Cit9CisKK3ZvaWQg
V2ViS2l0QXVkaW9Db250ZXh0OjpoYW5kbGVEaXJ0eUF1ZGlvTm9kZU91dHB1dHMoKQoreworICAg
IEFTU0VSVChpc0dyYXBoT3duZXIoKSk7CisKKyAgICBmb3IgKGF1dG8mIG91dHB1dCA6IG1fZGly
dHlBdWRpb05vZGVPdXRwdXRzKQorICAgICAgICBvdXRwdXQtPnVwZGF0ZVJlbmRlcmluZ1N0YXRl
KCk7CisKKyAgICBtX2RpcnR5QXVkaW9Ob2RlT3V0cHV0cy5jbGVhcigpOworfQorCit2b2lkIFdl
YktpdEF1ZGlvQ29udGV4dDo6YWRkQXV0b21hdGljUHVsbE5vZGUoQXVkaW9Ob2RlJiBub2RlKQor
eworICAgIEFTU0VSVChpc0dyYXBoT3duZXIoKSk7CisKKyAgICBpZiAobV9hdXRvbWF0aWNQdWxs
Tm9kZXMuYWRkKCZub2RlKS5pc05ld0VudHJ5KQorICAgICAgICBtX2F1dG9tYXRpY1B1bGxOb2Rl
c05lZWRVcGRhdGluZyA9IHRydWU7Cit9CisKK3ZvaWQgV2ViS2l0QXVkaW9Db250ZXh0OjpyZW1v
dmVBdXRvbWF0aWNQdWxsTm9kZShBdWRpb05vZGUmIG5vZGUpCit7CisgICAgQVNTRVJUKGlzR3Jh
cGhPd25lcigpKTsKKworICAgIGlmIChtX2F1dG9tYXRpY1B1bGxOb2Rlcy5yZW1vdmUoJm5vZGUp
KQorICAgICAgICBtX2F1dG9tYXRpY1B1bGxOb2Rlc05lZWRVcGRhdGluZyA9IHRydWU7Cit9CisK
K3ZvaWQgV2ViS2l0QXVkaW9Db250ZXh0Ojp1cGRhdGVBdXRvbWF0aWNQdWxsTm9kZXMoKQorewor
ICAgIEFTU0VSVChpc0dyYXBoT3duZXIoKSk7CisKKyAgICBpZiAobV9hdXRvbWF0aWNQdWxsTm9k
ZXNOZWVkVXBkYXRpbmcpIHsKKyAgICAgICAgLy8gQ29weSBmcm9tIG1fYXV0b21hdGljUHVsbE5v
ZGVzIHRvIG1fcmVuZGVyaW5nQXV0b21hdGljUHVsbE5vZGVzLgorICAgICAgICBtX3JlbmRlcmlu
Z0F1dG9tYXRpY1B1bGxOb2Rlcy5yZXNpemUobV9hdXRvbWF0aWNQdWxsTm9kZXMuc2l6ZSgpKTsK
KworICAgICAgICB1bnNpZ25lZCBpID0gMDsKKyAgICAgICAgZm9yIChhdXRvJiBvdXRwdXQgOiBt
X2F1dG9tYXRpY1B1bGxOb2RlcykKKyAgICAgICAgICAgIG1fcmVuZGVyaW5nQXV0b21hdGljUHVs
bE5vZGVzW2krK10gPSBvdXRwdXQ7CisKKyAgICAgICAgbV9hdXRvbWF0aWNQdWxsTm9kZXNOZWVk
VXBkYXRpbmcgPSBmYWxzZTsKKyAgICB9Cit9CisKK3ZvaWQgV2ViS2l0QXVkaW9Db250ZXh0Ojpw
cm9jZXNzQXV0b21hdGljUHVsbE5vZGVzKHNpemVfdCBmcmFtZXNUb1Byb2Nlc3MpCit7CisgICAg
QVNTRVJUKGlzQXVkaW9UaHJlYWQoKSk7CisKKyAgICBmb3IgKGF1dG8mIG5vZGUgOiBtX3JlbmRl
cmluZ0F1dG9tYXRpY1B1bGxOb2RlcykKKyAgICAgICAgbm9kZS0+cHJvY2Vzc0lmTmVjZXNzYXJ5
KGZyYW1lc1RvUHJvY2Vzcyk7Cit9CisKK3ZvaWQgV2ViS2l0QXVkaW9Db250ZXh0Ojpub2RlV2ls
bEJlZ2luUGxheWJhY2soKQoreworICAgIC8vIENhbGxlZCBieSBzY2hlZHVsZWQgQXVkaW9Ob2Rl
cyB3aGVuIGNsaWVudHMgc2NoZWR1bGUgdGhlaXIgc3RhcnQgdGltZXMuCisgICAgLy8gUHJpb3Ig
dG8gdGhlIGludHJvZHVjdGlvbiBvZiBzdXNwZW5kKCksIHJlc3VtZSgpLCBhbmQgc3RvcCgpLCBz
dGFydGluZworICAgIC8vIGEgc2NoZWR1bGVkIEF1ZGlvTm9kZSB3b3VsZCByZW1vdmUgdGhlIHVz
ZXItZ2VzdHVyZSByZXN0cmljdGlvbiwgaWYgcHJlc2VudCwKKyAgICAvLyBhbmQgd291bGQgdGh1
cyB1bm11dGUgdGhlIGNvbnRleHQuIE5vdyB0aGF0IEF1ZGlvQ29udGV4dCBzdGF5cyBpbiB0aGUK
KyAgICAvLyAic3VzcGVuZGVkIiBzdGF0ZSBpZiBhIHVzZXItZ2VzdHVyZSByZXN0cmljdGlvbiBp
cyBwcmVzZW50LCBzdGFydGluZyBhCisgICAgLy8gc2NoZWR1bGUgQXVkaW9Ob2RlIHNob3VsZCBz
ZXQgdGhlIHN0YXRlIHRvICJydW5uaW5nIiwgYnV0IG9ubHkgaWYgdGhlCisgICAgLy8gdXNlci1n
ZXN0dXJlIHJlc3RyaWN0aW9uIGlzIHNldC4KKyAgICBpZiAodXNlckdlc3R1cmVSZXF1aXJlZEZv
ckF1ZGlvU3RhcnQoKSkKKyAgICAgICAgc3RhcnRSZW5kZXJpbmcoKTsKK30KKworc3RhdGljIGJv
b2wgc2hvdWxkRG9jdW1lbnRBbGxvd1dlYkF1ZGlvVG9BdXRvUGxheShjb25zdCBEb2N1bWVudCYg
ZG9jdW1lbnQpCit7CisgICAgaWYgKGRvY3VtZW50LnByb2Nlc3NpbmdVc2VyR2VzdHVyZUZvck1l
ZGlhKCkgfHwgZG9jdW1lbnQuaXNDYXB0dXJpbmcoKSkKKyAgICAgICAgcmV0dXJuIHRydWU7Cisg
ICAgcmV0dXJuIGRvY3VtZW50LnF1aXJrcygpLnNob3VsZEF1dG9wbGF5V2ViQXVkaW9Gb3JBcmJp
dHJhcnlVc2VyR2VzdHVyZSgpICYmIGRvY3VtZW50LnRvcERvY3VtZW50KCkuaGFzSGFkVXNlcklu
dGVyYWN0aW9uKCk7Cit9CisKK2Jvb2wgV2ViS2l0QXVkaW9Db250ZXh0Ojp3aWxsQmVnaW5QbGF5
YmFjaygpCit7CisgICAgYXV0byogZG9jdW1lbnQgPSB0aGlzLT5kb2N1bWVudCgpOworICAgIGlm
ICghZG9jdW1lbnQpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGlmICh1c2VyR2VzdHVy
ZVJlcXVpcmVkRm9yQXVkaW9TdGFydCgpKSB7CisgICAgICAgIGlmICghc2hvdWxkRG9jdW1lbnRB
bGxvd1dlYkF1ZGlvVG9BdXRvUGxheSgqZG9jdW1lbnQpKSB7CisgICAgICAgICAgICBBTFdBWVNf
TE9HKExPR0lERU5USUZJRVIsICJyZXR1cm5pbmcgZmFsc2UsIG5vdCBwcm9jZXNzaW5nIHVzZXIg
Z2VzdHVyZSBvciBjYXB0dXJpbmciKTsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAg
ICAgfQorICAgICAgICByZW1vdmVCZWhhdmlvclJlc3RyaWN0aW9uKFdlYktpdEF1ZGlvQ29udGV4
dDo6UmVxdWlyZVVzZXJHZXN0dXJlRm9yQXVkaW9TdGFydFJlc3RyaWN0aW9uKTsKKyAgICB9CisK
KyAgICBpZiAocGFnZUNvbnNlbnRSZXF1aXJlZEZvckF1ZGlvU3RhcnQoKSkgeworICAgICAgICBh
dXRvKiBwYWdlID0gZG9jdW1lbnQtPnBhZ2UoKTsKKyAgICAgICAgaWYgKHBhZ2UgJiYgIXBhZ2Ut
PmNhblN0YXJ0TWVkaWEoKSkgeworICAgICAgICAgICAgZG9jdW1lbnQtPmFkZE1lZGlhQ2FuU3Rh
cnRMaXN0ZW5lcigqdGhpcyk7CisgICAgICAgICAgICBBTFdBWVNfTE9HKExPR0lERU5USUZJRVIs
ICJyZXR1cm5pbmcgZmFsc2UsIHBhZ2UgZG9lc24ndCBhbGxvdyBtZWRpYSB0byBzdGFydCIpOwor
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisgICAgICAgIHJlbW92ZUJlaGF2
aW9yUmVzdHJpY3Rpb24oV2ViS2l0QXVkaW9Db250ZXh0OjpSZXF1aXJlUGFnZUNvbnNlbnRGb3JB
dWRpb1N0YXJ0UmVzdHJpY3Rpb24pOworICAgIH0KKworICAgIGF1dG8gd2lsbEJlZ2luID0gbV9t
ZWRpYVNlc3Npb24tPmNsaWVudFdpbGxCZWdpblBsYXliYWNrKCk7CisgICAgQUxXQVlTX0xPRyhM
T0dJREVOVElGSUVSLCAicmV0dXJuaW5nICIsIHdpbGxCZWdpbik7CisKKyAgICByZXR1cm4gd2ls
bEJlZ2luOworfQorCitib29sIFdlYktpdEF1ZGlvQ29udGV4dDo6d2lsbFBhdXNlUGxheWJhY2so
KQoreworICAgIGF1dG8qIGRvY3VtZW50ID0gdGhpcy0+ZG9jdW1lbnQoKTsKKyAgICBpZiAoIWRv
Y3VtZW50KQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBpZiAodXNlckdlc3R1cmVSZXF1
aXJlZEZvckF1ZGlvU3RhcnQoKSkgeworICAgICAgICBpZiAoIWRvY3VtZW50LT5wcm9jZXNzaW5n
VXNlckdlc3R1cmVGb3JNZWRpYSgpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAg
ICByZW1vdmVCZWhhdmlvclJlc3RyaWN0aW9uKFdlYktpdEF1ZGlvQ29udGV4dDo6UmVxdWlyZVVz
ZXJHZXN0dXJlRm9yQXVkaW9TdGFydFJlc3RyaWN0aW9uKTsKKyAgICB9CisKKyAgICBpZiAocGFn
ZUNvbnNlbnRSZXF1aXJlZEZvckF1ZGlvU3RhcnQoKSkgeworICAgICAgICBhdXRvKiBwYWdlID0g
ZG9jdW1lbnQtPnBhZ2UoKTsKKyAgICAgICAgaWYgKHBhZ2UgJiYgIXBhZ2UtPmNhblN0YXJ0TWVk
aWEoKSkgeworICAgICAgICAgICAgZG9jdW1lbnQtPmFkZE1lZGlhQ2FuU3RhcnRMaXN0ZW5lcigq
dGhpcyk7CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKyAgICAgICAgcmVt
b3ZlQmVoYXZpb3JSZXN0cmljdGlvbihXZWJLaXRBdWRpb0NvbnRleHQ6OlJlcXVpcmVQYWdlQ29u
c2VudEZvckF1ZGlvU3RhcnRSZXN0cmljdGlvbik7CisgICAgfQorCisgICAgcmV0dXJuIG1fbWVk
aWFTZXNzaW9uLT5jbGllbnRXaWxsUGF1c2VQbGF5YmFjaygpOworfQorCit2b2lkIFdlYktpdEF1
ZGlvQ29udGV4dDo6c3RhcnRSZW5kZXJpbmcoKQoreworICAgIEFMV0FZU19MT0coTE9HSURFTlRJ
RklFUik7CisgICAgaWYgKG1faXNTdG9wU2NoZWR1bGVkIHx8ICF3aWxsQmVnaW5QbGF5YmFjaygp
KQorICAgICAgICByZXR1cm47CisKKyAgICBtYWtlUGVuZGluZ0FjdGl2aXR5KCk7CisKKyAgICBk
ZXN0aW5hdGlvbigpLT5zdGFydFJlbmRlcmluZygpOworICAgIHNldFN0YXRlKFN0YXRlOjpSdW5u
aW5nKTsKK30KKwordm9pZCBXZWJLaXRBdWRpb0NvbnRleHQ6Om1lZGlhQ2FuU3RhcnQoRG9jdW1l
bnQmIGRvY3VtZW50KQoreworICAgIEFTU0VSVF9VTlVTRUQoZG9jdW1lbnQsICZkb2N1bWVudCA9
PSB0aGlzLT5kb2N1bWVudCgpKTsKKyAgICByZW1vdmVCZWhhdmlvclJlc3RyaWN0aW9uKFdlYktp
dEF1ZGlvQ29udGV4dDo6UmVxdWlyZVBhZ2VDb25zZW50Rm9yQXVkaW9TdGFydFJlc3RyaWN0aW9u
KTsKKyAgICBtYXlSZXN1bWVQbGF5YmFjayh0cnVlKTsKK30KKworTWVkaWFQcm9kdWNlcjo6TWVk
aWFTdGF0ZUZsYWdzIFdlYktpdEF1ZGlvQ29udGV4dDo6bWVkaWFTdGF0ZSgpIGNvbnN0Cit7Cisg
ICAgaWYgKCFtX2lzU3RvcFNjaGVkdWxlZCAmJiBtX2Rlc3RpbmF0aW9uTm9kZSAmJiBtX2Rlc3Rp
bmF0aW9uTm9kZS0+aXNQbGF5aW5nQXVkaW8oKSkKKyAgICAgICAgcmV0dXJuIE1lZGlhUHJvZHVj
ZXI6OklzUGxheWluZ0F1ZGlvOworCisgICAgcmV0dXJuIE1lZGlhUHJvZHVjZXI6OklzTm90UGxh
eWluZzsKK30KKwordm9pZCBXZWJLaXRBdWRpb0NvbnRleHQ6OnBhZ2VNdXRlZFN0YXRlRGlkQ2hh
bmdlKCkKK3sKKyAgICBpZiAobV9kZXN0aW5hdGlvbk5vZGUgJiYgZG9jdW1lbnQoKSAmJiBkb2N1
bWVudCgpLT5wYWdlKCkpCisgICAgICAgIG1fZGVzdGluYXRpb25Ob2RlLT5zZXRNdXRlZChkb2N1
bWVudCgpLT5wYWdlKCktPmlzQXVkaW9NdXRlZCgpKTsKK30KKwordm9pZCBXZWJLaXRBdWRpb0Nv
bnRleHQ6OmlzUGxheWluZ0F1ZGlvRGlkQ2hhbmdlKCkKK3sKKyAgICAvLyBNYWtlIHN1cmUgdG8g
Y2FsbCBEb2N1bWVudDo6dXBkYXRlSXNQbGF5aW5nTWVkaWEoKSBvbiB0aGUgbWFpbiB0aHJlYWQs
IHNpbmNlCisgICAgLy8gd2UgY291bGQgYmUgb24gdGhlIGF1ZGlvIEkvTyB0aHJlYWQgaGVyZSBh
bmQgdGhlIGNhbGwgaW50byBXZWJDb3JlIGNvdWxkIGJsb2NrLgorICAgIGNhbGxPbk1haW5UaHJl
YWQoW3Byb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKV0geworICAgICAgICBpZiAocHJvdGVj
dGVkVGhpcy0+ZG9jdW1lbnQoKSkKKyAgICAgICAgICAgIHByb3RlY3RlZFRoaXMtPmRvY3VtZW50
KCktPnVwZGF0ZUlzUGxheWluZ01lZGlhKCk7CisgICAgfSk7Cit9CisKK3ZvaWQgV2ViS2l0QXVk
aW9Db250ZXh0OjpmaW5pc2hlZFJlbmRlcmluZyhib29sIGRpZFJlbmRlcmluZykKK3sKKyAgICBB
U1NFUlQoaXNPZmZsaW5lQ29udGV4dCgpKTsKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwor
ICAgIGlmICghaXNNYWluVGhyZWFkKCkpCisgICAgICAgIHJldHVybjsKKworICAgIGF1dG8gY2xl
YXJQZW5kaW5nQWN0aXZpdHlJZkV4aXRFYXJseSA9IFdURjo6bWFrZVNjb3BlRXhpdChbdGhpc10g
eworICAgICAgICBjbGVhclBlbmRpbmdBY3Rpdml0eSgpOworICAgIH0pOworCisKKyAgICBBTFdB
WVNfTE9HKExPR0lERU5USUZJRVIpOworCisgICAgaWYgKCFkaWRSZW5kZXJpbmcpCisgICAgICAg
IHJldHVybjsKKworICAgIEF1ZGlvQnVmZmVyKiByZW5kZXJlZEJ1ZmZlciA9IG1fcmVuZGVyVGFy
Z2V0LmdldCgpOworICAgIHNldFN0YXRlKFN0YXRlOjpDbG9zZWQpOworCisgICAgQVNTRVJUKHJl
bmRlcmVkQnVmZmVyKTsKKyAgICBpZiAoIXJlbmRlcmVkQnVmZmVyKQorICAgICAgICByZXR1cm47
CisKKyAgICAvLyBBdm9pZCBmaXJpbmcgdGhlIGV2ZW50IGlmIHRoZSBkb2N1bWVudCBoYXMgYWxy
ZWFkeSBnb25lIGF3YXkuCisgICAgaWYgKG1faXNTdG9wU2NoZWR1bGVkKQorICAgICAgICByZXR1
cm47CisKKyAgICBjbGVhclBlbmRpbmdBY3Rpdml0eUlmRXhpdEVhcmx5LnJlbGVhc2UoKTsKKyAg
ICBtX2V2ZW50UXVldWUtPmVucXVldWVFdmVudChPZmZsaW5lQXVkaW9Db21wbGV0aW9uRXZlbnQ6
OmNyZWF0ZShyZW5kZXJlZEJ1ZmZlcikpOworfQorCit2b2lkIFdlYktpdEF1ZGlvQ29udGV4dDo6
ZGlzcGF0Y2hFdmVudChFdmVudCYgZXZlbnQpCit7CisgICAgRXZlbnRUYXJnZXQ6OmRpc3BhdGNo
RXZlbnQoZXZlbnQpOworICAgIGlmIChldmVudC5ldmVudEludGVyZmFjZSgpID09IE9mZmxpbmVB
dWRpb0NvbXBsZXRpb25FdmVudEludGVyZmFjZVR5cGUpCisgICAgICAgIGNsZWFyUGVuZGluZ0Fj
dGl2aXR5KCk7Cit9CisKK3ZvaWQgV2ViS2l0QXVkaW9Db250ZXh0OjppbmNyZW1lbnRBY3RpdmVT
b3VyY2VDb3VudCgpCit7CisgICAgKyttX2FjdGl2ZVNvdXJjZUNvdW50OworfQorCit2b2lkIFdl
YktpdEF1ZGlvQ29udGV4dDo6ZGVjcmVtZW50QWN0aXZlU291cmNlQ291bnQoKQoreworICAgIC0t
bV9hY3RpdmVTb3VyY2VDb3VudDsKK30KKwordm9pZCBXZWJLaXRBdWRpb0NvbnRleHQ6OnN1c3Bl
bmRSZW5kZXJpbmcoRE9NUHJvbWlzZURlZmVycmVkPHZvaWQ+JiYgcHJvbWlzZSkKK3sKKyAgICBp
ZiAoaXNPZmZsaW5lQ29udGV4dCgpIHx8IG1faXNTdG9wU2NoZWR1bGVkKSB7CisgICAgICAgIHBy
b21pc2UucmVqZWN0KEludmFsaWRTdGF0ZUVycm9yKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0K
KworICAgIGlmIChtX3N0YXRlID09IFN0YXRlOjpTdXNwZW5kZWQpIHsKKyAgICAgICAgcHJvbWlz
ZS5yZXNvbHZlKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpZiAobV9zdGF0ZSA9
PSBTdGF0ZTo6Q2xvc2VkIHx8IG1fc3RhdGUgPT0gU3RhdGU6OkludGVycnVwdGVkIHx8ICFtX2Rl
c3RpbmF0aW9uTm9kZSkgeworICAgICAgICBwcm9taXNlLnJlamVjdCgpOworICAgICAgICByZXR1
cm47CisgICAgfQorCisgICAgYWRkUmVhY3Rpb24oU3RhdGU6OlN1c3BlbmRlZCwgV1RGTW92ZShw
cm9taXNlKSk7CisKKyAgICBpZiAoIXdpbGxQYXVzZVBsYXliYWNrKCkpCisgICAgICAgIHJldHVy
bjsKKworICAgIGxhenlJbml0aWFsaXplKCk7CisKKyAgICBtX2Rlc3RpbmF0aW9uTm9kZS0+c3Vz
cGVuZChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpXSB7CisgICAgICAgIHNl
dFN0YXRlKFN0YXRlOjpTdXNwZW5kZWQpOworICAgIH0pOworfQorCit2b2lkIFdlYktpdEF1ZGlv
Q29udGV4dDo6cmVzdW1lUmVuZGVyaW5nKERPTVByb21pc2VEZWZlcnJlZDx2b2lkPiYmIHByb21p
c2UpCit7CisgICAgaWYgKGlzT2ZmbGluZUNvbnRleHQoKSB8fCBtX2lzU3RvcFNjaGVkdWxlZCkg
eworICAgICAgICBwcm9taXNlLnJlamVjdChJbnZhbGlkU3RhdGVFcnJvcik7CisgICAgICAgIHJl
dHVybjsKKyAgICB9CisKKyAgICBpZiAobV9zdGF0ZSA9PSBTdGF0ZTo6UnVubmluZykgeworICAg
ICAgICBwcm9taXNlLnJlc29sdmUoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlm
IChtX3N0YXRlID09IFN0YXRlOjpDbG9zZWQgfHwgIW1fZGVzdGluYXRpb25Ob2RlKSB7CisgICAg
ICAgIHByb21pc2UucmVqZWN0KCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBhZGRS
ZWFjdGlvbihTdGF0ZTo6UnVubmluZywgV1RGTW92ZShwcm9taXNlKSk7CisKKyAgICBpZiAoIXdp
bGxCZWdpblBsYXliYWNrKCkpCisgICAgICAgIHJldHVybjsKKworICAgIGxhenlJbml0aWFsaXpl
KCk7CisKKyAgICBtX2Rlc3RpbmF0aW9uTm9kZS0+cmVzdW1lKFt0aGlzLCBwcm90ZWN0ZWRUaGlz
ID0gbWFrZVJlZigqdGhpcyldIHsKKyAgICAgICAgc2V0U3RhdGUoU3RhdGU6OlJ1bm5pbmcpOwor
ICAgIH0pOworfQorCit2b2lkIFdlYktpdEF1ZGlvQ29udGV4dDo6Y2xvc2UoRE9NUHJvbWlzZURl
ZmVycmVkPHZvaWQ+JiYgcHJvbWlzZSkKK3sKKyAgICBpZiAoaXNPZmZsaW5lQ29udGV4dCgpIHx8
IG1faXNTdG9wU2NoZWR1bGVkKSB7CisgICAgICAgIHByb21pc2UucmVqZWN0KEludmFsaWRTdGF0
ZUVycm9yKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlmIChtX3N0YXRlID09IFN0
YXRlOjpDbG9zZWQgfHwgIW1fZGVzdGluYXRpb25Ob2RlKSB7CisgICAgICAgIHByb21pc2UucmVz
b2x2ZSgpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgYWRkUmVhY3Rpb24oU3RhdGU6
OkNsb3NlZCwgV1RGTW92ZShwcm9taXNlKSk7CisKKyAgICBsYXp5SW5pdGlhbGl6ZSgpOworCisg
ICAgbV9kZXN0aW5hdGlvbk5vZGUtPmNsb3NlKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJl
ZigqdGhpcyldIHsKKyAgICAgICAgc2V0U3RhdGUoU3RhdGU6OkNsb3NlZCk7CisgICAgICAgIHVu
aW5pdGlhbGl6ZSgpOworICAgIH0pOworfQorCisKK3ZvaWQgV2ViS2l0QXVkaW9Db250ZXh0Ojpz
dXNwZW5kUGxheWJhY2soKQoreworICAgIGlmICghbV9kZXN0aW5hdGlvbk5vZGUgfHwgbV9zdGF0
ZSA9PSBTdGF0ZTo6Q2xvc2VkKQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAobV9zdGF0ZSA9
PSBTdGF0ZTo6U3VzcGVuZGVkKSB7CisgICAgICAgIGlmIChtX21lZGlhU2Vzc2lvbi0+c3RhdGUo
KSA9PSBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6SW50ZXJydXB0ZWQpCisgICAgICAgICAgICBzZXRT
dGF0ZShTdGF0ZTo6SW50ZXJydXB0ZWQpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAg
bGF6eUluaXRpYWxpemUoKTsKKworICAgIG1fZGVzdGluYXRpb25Ob2RlLT5zdXNwZW5kKFt0aGlz
LCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyldIHsKKyAgICAgICAgYm9vbCBpbnRlcnJ1
cHRlZCA9IG1fbWVkaWFTZXNzaW9uLT5zdGF0ZSgpID09IFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpJ
bnRlcnJ1cHRlZDsKKyAgICAgICAgc2V0U3RhdGUoaW50ZXJydXB0ZWQgPyBTdGF0ZTo6SW50ZXJy
dXB0ZWQgOiBTdGF0ZTo6U3VzcGVuZGVkKTsKKyAgICB9KTsKK30KKwordm9pZCBXZWJLaXRBdWRp
b0NvbnRleHQ6Om1heVJlc3VtZVBsYXliYWNrKGJvb2wgc2hvdWxkUmVzdW1lKQoreworICAgIGlm
ICghbV9kZXN0aW5hdGlvbk5vZGUgfHwgbV9zdGF0ZSA9PSBTdGF0ZTo6Q2xvc2VkIHx8IG1fc3Rh
dGUgPT0gU3RhdGU6OlJ1bm5pbmcpCisgICAgICAgIHJldHVybjsKKworICAgIGlmICghc2hvdWxk
UmVzdW1lKSB7CisgICAgICAgIHNldFN0YXRlKFN0YXRlOjpTdXNwZW5kZWQpOworICAgICAgICBy
ZXR1cm47CisgICAgfQorCisgICAgaWYgKCF3aWxsQmVnaW5QbGF5YmFjaygpKQorICAgICAgICBy
ZXR1cm47CisKKyAgICBsYXp5SW5pdGlhbGl6ZSgpOworCisgICAgbV9kZXN0aW5hdGlvbk5vZGUt
PnJlc3VtZShbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpXSB7CisgICAgICAg
IHNldFN0YXRlKFN0YXRlOjpSdW5uaW5nKTsKKyAgICB9KTsKK30KKwordm9pZCBXZWJLaXRBdWRp
b0NvbnRleHQ6OnBvc3RUYXNrKFdURjo6RnVuY3Rpb248dm9pZCgpPiYmIHRhc2spCit7CisgICAg
aWYgKG1faXNTdG9wU2NoZWR1bGVkKQorICAgICAgICByZXR1cm47CisKKyAgICBtX3NjcmlwdEV4
ZWN1dGlvbkNvbnRleHQtPnBvc3RUYXNrKFdURk1vdmUodGFzaykpOworfQorCitjb25zdCBTZWN1
cml0eU9yaWdpbiogV2ViS2l0QXVkaW9Db250ZXh0OjpvcmlnaW4oKSBjb25zdAoreworICAgIHJl
dHVybiBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQgPyBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQt
PnNlY3VyaXR5T3JpZ2luKCkgOiBudWxscHRyOworfQorCit2b2lkIFdlYktpdEF1ZGlvQ29udGV4
dDo6YWRkQ29uc29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZSBzb3VyY2UsIE1lc3NhZ2VMZXZlbCBs
ZXZlbCwgY29uc3QgU3RyaW5nJiBtZXNzYWdlKQoreworICAgIGlmIChtX3NjcmlwdEV4ZWN1dGlv
bkNvbnRleHQpCisgICAgICAgIG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+YWRkQ29uc29sZU1l
c3NhZ2Uoc291cmNlLCBsZXZlbCwgbWVzc2FnZSk7Cit9CisKK3ZvaWQgV2ViS2l0QXVkaW9Db250
ZXh0OjpjbGVhclBlbmRpbmdBY3Rpdml0eSgpCit7CisgICAgaWYgKCFtX3BlbmRpbmdBY3Rpdml0
eSkKKyAgICAgICAgcmV0dXJuOworICAgIG1fcGVuZGluZ0FjdGl2aXR5ID0gbnVsbHB0cjsKKyAg
ICAvLyBGSVhNRTogUmVtb3ZlIHRoaXMgc3BlY2lmaWMgZGVyZWYoKSBhbmQgcmVmKCkgY2FsbCBp
biBtYWtlUGVuZGluZ0FjdGl2aXR5KCkuCisgICAgZGVyZWYoKTsKK30KKwordm9pZCBXZWJLaXRB
dWRpb0NvbnRleHQ6Om1ha2VQZW5kaW5nQWN0aXZpdHkoKQoreworICAgIGlmIChtX3BlbmRpbmdB
Y3Rpdml0eSkKKyAgICAgICAgcmV0dXJuOworICAgIG1fcGVuZGluZ0FjdGl2aXR5ID0gQWN0aXZl
RE9NT2JqZWN0OjptYWtlUGVuZGluZ0FjdGl2aXR5KCp0aGlzKTsKKyAgICByZWYoKTsKK30KKwor
I2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRAorV1RGTG9nQ2hhbm5lbCYgV2ViS2l0QXVkaW9Db250
ZXh0Ojpsb2dDaGFubmVsKCkgY29uc3QKK3sKKyAgICByZXR1cm4gTG9nTWVkaWE7Cit9CisjZW5k
aWYKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKFdFQl9BVURJ
TykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vV2ViS2l0QXVk
aW9Db250ZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1dlYktpdEF1ZGlv
Q29udGV4dC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi5jZTJkMDlh
MWYxMgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8v
V2ViS2l0QXVkaW9Db250ZXh0LmgKQEAgLTAsMCArMSw0MzEgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAo
QykgMjAxNi0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQ
VVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OCisgKiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKKyAqIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNw
cmFnbWEgb25jZQorCisjaW5jbHVkZSAiQWN0aXZlRE9NT2JqZWN0LmgiCisjaW5jbHVkZSAiQXN5
bmNBdWRpb0RlY29kZXIuaCIKKyNpbmNsdWRlICJBdWRpb0J1cy5oIgorI2luY2x1ZGUgIkF1ZGlv
Q29udGV4dC5oIgorI2luY2x1ZGUgIkF1ZGlvQ29udGV4dFN0YXRlLmgiCisjaW5jbHVkZSAiQXVk
aW9EZXN0aW5hdGlvbk5vZGUuaCIKKyNpbmNsdWRlICJFdmVudFRhcmdldC5oIgorI2luY2x1ZGUg
Ik1lZGlhQ2FuU3RhcnRMaXN0ZW5lci5oIgorI2luY2x1ZGUgIk1lZGlhUHJvZHVjZXIuaCIKKyNp
bmNsdWRlICJQbGF0Zm9ybU1lZGlhU2Vzc2lvbi5oIgorI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQuaCIKKyNpbmNsdWRlICJWaXNpYmlsaXR5Q2hhbmdlQ2xpZW50LmgiCisjaW5jbHVk
ZSA8SmF2YVNjcmlwdENvcmUvQ29uc29sZVR5cGVzLmg+CisjaW5jbHVkZSA8SmF2YVNjcmlwdENv
cmUvRmxvYXQzMkFycmF5Lmg+CisjaW5jbHVkZSA8YXRvbWljPgorI2luY2x1ZGUgPHd0Zi9IYXNo
U2V0Lmg+CisjaW5jbHVkZSA8d3RmL0xvZ2dlckhlbHBlci5oPgorI2luY2x1ZGUgPHd0Zi9NYWlu
VGhyZWFkLmg+CisjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi9UaHJlYWRT
YWZlUmVmQ291bnRlZC5oPgorI2luY2x1ZGUgPHd0Zi9UaHJlYWRpbmcuaD4KKyNpbmNsdWRlIDx3
dGYvVW5pcXVlUmVmLmg+CisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorI2luY2x1ZGUgPHd0Zi90
ZXh0L0F0b21TdHJpbmdIYXNoLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgQW5h
bHlzZXJOb2RlOworY2xhc3MgQXVkaW9CdWZmZXI7CitjbGFzcyBBdWRpb0J1ZmZlckNhbGxiYWNr
OworY2xhc3MgQXVkaW9CdWZmZXJTb3VyY2VOb2RlOworY2xhc3MgQXVkaW9MaXN0ZW5lcjsKK2Ns
YXNzIEF1ZGlvU3VtbWluZ0p1bmN0aW9uOworY2xhc3MgQmlxdWFkRmlsdGVyTm9kZTsKK2NsYXNz
IENoYW5uZWxNZXJnZXJOb2RlOworY2xhc3MgQ2hhbm5lbFNwbGl0dGVyTm9kZTsKK2NsYXNzIENv
bnZvbHZlck5vZGU7CitjbGFzcyBEZWxheU5vZGU7CitjbGFzcyBEb2N1bWVudDsKK2NsYXNzIER5
bmFtaWNzQ29tcHJlc3Nvck5vZGU7CitjbGFzcyBHYWluTm9kZTsKK2NsYXNzIEhUTUxNZWRpYUVs
ZW1lbnQ7CitjbGFzcyBNYWluVGhyZWFkR2VuZXJpY0V2ZW50UXVldWU7CitjbGFzcyBNZWRpYUVs
ZW1lbnRBdWRpb1NvdXJjZU5vZGU7CitjbGFzcyBNZWRpYVN0cmVhbTsKK2NsYXNzIE1lZGlhU3Ry
ZWFtQXVkaW9EZXN0aW5hdGlvbk5vZGU7CitjbGFzcyBNZWRpYVN0cmVhbUF1ZGlvU291cmNlTm9k
ZTsKK2NsYXNzIE9zY2lsbGF0b3JOb2RlOworY2xhc3MgUGVyaW9kaWNXYXZlOworY2xhc3MgU2Ny
aXB0UHJvY2Vzc29yTm9kZTsKK2NsYXNzIFNlY3VyaXR5T3JpZ2luOworY2xhc3MgV2F2ZVNoYXBl
ck5vZGU7CitjbGFzcyBXZWJLaXRBdWRpb1Bhbm5lck5vZGU7CisKK3RlbXBsYXRlPHR5cGVuYW1l
IElETFR5cGU+IGNsYXNzIERPTVByb21pc2VEZWZlcnJlZDsKKworLy8gQXVkaW9Db250ZXh0IGlz
IHRoZSBjb3JuZXJzdG9uZSBvZiB0aGUgd2ViIGF1ZGlvIEFQSSBhbmQgYWxsIEF1ZGlvTm9kZXMg
YXJlIGNyZWF0ZWQgZnJvbSBpdC4KKy8vIEZvciB0aHJlYWQgc2FmZXR5IGJldHdlZW4gdGhlIGF1
ZGlvIHRocmVhZCBhbmQgdGhlIG1haW4gdGhyZWFkLCBpdCBoYXMgYSByZW5kZXJpbmcgZ3JhcGgg
bG9ja2luZyBtZWNoYW5pc20uCisKK2NsYXNzIFdlYktpdEF1ZGlvQ29udGV4dAorICAgIDogcHVi
bGljIEF1ZGlvQ29udGV4dEJhc2UKKyAgICAsIHByaXZhdGUgUGxhdGZvcm1NZWRpYVNlc3Npb25D
bGllbnQKKyAgICAsIHByaXZhdGUgVmlzaWJpbGl0eUNoYW5nZUNsaWVudAoreworcHVibGljOgor
ICAgIC8vIENyZWF0ZSBhbiBXZWJLaXRBdWRpb0NvbnRleHQgZm9yIHJlbmRlcmluZyB0byB0aGUg
YXVkaW8gaGFyZHdhcmUuCisgICAgc3RhdGljIEV4Y2VwdGlvbk9yPFJlZjxXZWJLaXRBdWRpb0Nv
bnRleHQ+PiBjcmVhdGUoRG9jdW1lbnQmKTsKKworICAgIHZpcnR1YWwgfldlYktpdEF1ZGlvQ29u
dGV4dCgpOworCisgICAgYm9vbCBpc0luaXRpYWxpemVkKCkgY29uc3QgZmluYWw7CisKKyAgICBi
b29sIGlzT2ZmbGluZUNvbnRleHQoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2lzT2ZmbGluZUNv
bnRleHQ7IH0KKworICAgIERvY3VtZW50SWRlbnRpZmllciBob3N0aW5nRG9jdW1lbnRJZGVudGlm
aWVyKCkgY29uc3QgZmluYWw7CisKKyAgICBBdWRpb0Rlc3RpbmF0aW9uTm9kZSogZGVzdGluYXRp
b24oKSB7IHJldHVybiBtX2Rlc3RpbmF0aW9uTm9kZS5nZXQoKTsgfQorICAgIHNpemVfdCBjdXJy
ZW50U2FtcGxlRnJhbWUoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2Rlc3RpbmF0aW9uTm9kZSA/
IG1fZGVzdGluYXRpb25Ob2RlLT5jdXJyZW50U2FtcGxlRnJhbWUoKSA6IDA7IH0KKyAgICBkb3Vi
bGUgY3VycmVudFRpbWUoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2Rlc3RpbmF0aW9uTm9kZSA/
IG1fZGVzdGluYXRpb25Ob2RlLT5jdXJyZW50VGltZSgpIDogMC47IH0KKyAgICBmbG9hdCBzYW1w
bGVSYXRlKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9kZXN0aW5hdGlvbk5vZGUgPyBtX2Rlc3Rp
bmF0aW9uTm9kZS0+c2FtcGxlUmF0ZSgpIDogMC5mOyB9CisgICAgdW5zaWduZWQgbG9uZyBhY3Rp
dmVTb3VyY2VDb3VudCgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PHVuc2lnbmVkIGxvbmc+
KG1fYWN0aXZlU291cmNlQ291bnQpOyB9CisKKyAgICB2b2lkIGluY3JlbWVudEFjdGl2ZVNvdXJj
ZUNvdW50KCkgZmluYWw7CisgICAgdm9pZCBkZWNyZW1lbnRBY3RpdmVTb3VyY2VDb3VudCgpIGZp
bmFsOworCisgICAgRXhjZXB0aW9uT3I8UmVmPEF1ZGlvQnVmZmVyPj4gY3JlYXRlQnVmZmVyKHVu
c2lnbmVkIG51bWJlck9mQ2hhbm5lbHMsIHNpemVfdCBudW1iZXJPZkZyYW1lcywgZmxvYXQgc2Ft
cGxlUmF0ZSk7CisgICAgRXhjZXB0aW9uT3I8UmVmPEF1ZGlvQnVmZmVyPj4gY3JlYXRlQnVmZmVy
KEFycmF5QnVmZmVyJiwgYm9vbCBtaXhUb01vbm8pOworCisgICAgLy8gQXN5bmNocm9ub3VzIGF1
ZGlvIGZpbGUgZGF0YSBkZWNvZGluZy4KKyAgICB2b2lkIGRlY29kZUF1ZGlvRGF0YShSZWY8QXJy
YXlCdWZmZXI+JiYsIFJlZlB0cjxBdWRpb0J1ZmZlckNhbGxiYWNrPiYmLCBSZWZQdHI8QXVkaW9C
dWZmZXJDYWxsYmFjaz4mJik7CisKKyAgICBBdWRpb0xpc3RlbmVyKiBsaXN0ZW5lcigpIHsgcmV0
dXJuIG1fbGlzdGVuZXIuZ2V0KCk7IH0KKworICAgIHZvaWQgc3VzcGVuZFJlbmRlcmluZyhET01Q
cm9taXNlRGVmZXJyZWQ8dm9pZD4mJik7CisgICAgdm9pZCByZXN1bWVSZW5kZXJpbmcoRE9NUHJv
bWlzZURlZmVycmVkPHZvaWQ+JiYpOworICAgIHZvaWQgY2xvc2UoRE9NUHJvbWlzZURlZmVycmVk
PHZvaWQ+JiYpOworCisgICAgdXNpbmcgU3RhdGUgPSBBdWRpb0NvbnRleHRTdGF0ZTsKKyAgICBT
dGF0ZSBzdGF0ZSgpIGNvbnN0OworICAgIGJvb2wgaXNDbG9zZWQoKSBjb25zdCB7IHJldHVybiBt
X3N0YXRlID09IFN0YXRlOjpDbG9zZWQ7IH0KKworICAgIGJvb2wgd291bGRUYWludE9yaWdpbihj
b25zdCBVUkwmKSBjb25zdDsKKworICAgIC8vIFRoZSBBdWRpb05vZGUgY3JlYXRlIG1ldGhvZHMg
YXJlIGNhbGxlZCBvbiB0aGUgbWFpbiB0aHJlYWQgKGZyb20gSmF2YVNjcmlwdCkuCisgICAgRXhj
ZXB0aW9uT3I8UmVmPEF1ZGlvQnVmZmVyU291cmNlTm9kZT4+IGNyZWF0ZUJ1ZmZlclNvdXJjZSgp
OworI2lmIEVOQUJMRShWSURFTykKKyAgICBFeGNlcHRpb25PcjxSZWY8TWVkaWFFbGVtZW50QXVk
aW9Tb3VyY2VOb2RlPj4gY3JlYXRlTWVkaWFFbGVtZW50U291cmNlKEhUTUxNZWRpYUVsZW1lbnQm
KTsKKyNlbmRpZgorI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCisgICAgRXhjZXB0aW9uT3I8UmVm
PE1lZGlhU3RyZWFtQXVkaW9Tb3VyY2VOb2RlPj4gY3JlYXRlTWVkaWFTdHJlYW1Tb3VyY2UoTWVk
aWFTdHJlYW0mKTsKKyAgICBFeGNlcHRpb25PcjxSZWY8TWVkaWFTdHJlYW1BdWRpb0Rlc3RpbmF0
aW9uTm9kZT4+IGNyZWF0ZU1lZGlhU3RyZWFtRGVzdGluYXRpb24oKTsKKyNlbmRpZgorICAgIEV4
Y2VwdGlvbk9yPFJlZjxHYWluTm9kZT4+IGNyZWF0ZUdhaW4oKTsKKyAgICBFeGNlcHRpb25PcjxS
ZWY8QmlxdWFkRmlsdGVyTm9kZT4+IGNyZWF0ZUJpcXVhZEZpbHRlcigpOworICAgIEV4Y2VwdGlv
bk9yPFJlZjxXYXZlU2hhcGVyTm9kZT4+IGNyZWF0ZVdhdmVTaGFwZXIoKTsKKyAgICBFeGNlcHRp
b25PcjxSZWY8RGVsYXlOb2RlPj4gY3JlYXRlRGVsYXkoZG91YmxlIG1heERlbGF5VGltZSk7Cisg
ICAgRXhjZXB0aW9uT3I8UmVmPFdlYktpdEF1ZGlvUGFubmVyTm9kZT4+IGNyZWF0ZVBhbm5lcigp
OworICAgIEV4Y2VwdGlvbk9yPFJlZjxDb252b2x2ZXJOb2RlPj4gY3JlYXRlQ29udm9sdmVyKCk7
CisgICAgRXhjZXB0aW9uT3I8UmVmPER5bmFtaWNzQ29tcHJlc3Nvck5vZGU+PiBjcmVhdGVEeW5h
bWljc0NvbXByZXNzb3IoKTsKKyAgICBFeGNlcHRpb25PcjxSZWY8QW5hbHlzZXJOb2RlPj4gY3Jl
YXRlQW5hbHlzZXIoKTsKKyAgICBFeGNlcHRpb25PcjxSZWY8U2NyaXB0UHJvY2Vzc29yTm9kZT4+
IGNyZWF0ZVNjcmlwdFByb2Nlc3NvcihzaXplX3QgYnVmZmVyU2l6ZSwgc2l6ZV90IG51bWJlck9m
SW5wdXRDaGFubmVscywgc2l6ZV90IG51bWJlck9mT3V0cHV0Q2hhbm5lbHMpOworICAgIEV4Y2Vw
dGlvbk9yPFJlZjxDaGFubmVsU3BsaXR0ZXJOb2RlPj4gY3JlYXRlQ2hhbm5lbFNwbGl0dGVyKHNp
emVfdCBudW1iZXJPZk91dHB1dHMpOworICAgIEV4Y2VwdGlvbk9yPFJlZjxDaGFubmVsTWVyZ2Vy
Tm9kZT4+IGNyZWF0ZUNoYW5uZWxNZXJnZXIoc2l6ZV90IG51bWJlck9mSW5wdXRzKTsKKyAgICBF
eGNlcHRpb25PcjxSZWY8T3NjaWxsYXRvck5vZGU+PiBjcmVhdGVPc2NpbGxhdG9yKCk7CisgICAg
RXhjZXB0aW9uT3I8UmVmPFBlcmlvZGljV2F2ZT4+IGNyZWF0ZVBlcmlvZGljV2F2ZShGbG9hdDMy
QXJyYXkmIHJlYWwsIEZsb2F0MzJBcnJheSYgaW1hZ2luYXJ5KTsKKworICAgIC8vIFdoZW4gYSBz
b3VyY2Ugbm9kZSBoYXMgbm8gbW9yZSBwcm9jZXNzaW5nIHRvIGRvIChoYXMgZmluaXNoZWQgcGxh
eWluZyksIHRoZW4gaXQgdGVsbHMgdGhlIGNvbnRleHQgdG8gZGVyZWZlcmVuY2UgaXQuCisgICAg
dm9pZCBub3RpZnlOb2RlRmluaXNoZWRQcm9jZXNzaW5nKEF1ZGlvTm9kZSopIGZpbmFsOworCisg
ICAgLy8gQ2FsbGVkIGF0IHRoZSBzdGFydCBvZiBlYWNoIHJlbmRlciBxdWFudHVtLgorICAgIHZv
aWQgaGFuZGxlUHJlUmVuZGVyVGFza3MoKSBmaW5hbDsKKworICAgIC8vIENhbGxlZCBhdCB0aGUg
ZW5kIG9mIGVhY2ggcmVuZGVyIHF1YW50dW0uCisgICAgdm9pZCBoYW5kbGVQb3N0UmVuZGVyVGFz
a3MoKSBmaW5hbDsKKworICAgIC8vIENhbGxlZCBwZXJpb2RpY2FsbHkgYXQgdGhlIGVuZCBvZiBl
YWNoIHJlbmRlciBxdWFudHVtIHRvIGRlcmVmZXJlbmNlIGZpbmlzaGVkIHNvdXJjZSBub2Rlcy4K
KyAgICB2b2lkIGRlcmVmRmluaXNoZWRTb3VyY2VOb2RlcygpOworCisgICAgLy8gV2Ugc2NoZWR1
bGUgZGVsZXRpb24gb2YgYWxsIG1hcmtlZCBub2RlcyBhdCB0aGUgZW5kIG9mIGVhY2ggcmVhbHRp
bWUgcmVuZGVyIHF1YW50dW0uCisgICAgdm9pZCBtYXJrRm9yRGVsZXRpb24oQXVkaW9Ob2RlJikg
ZmluYWw7CisgICAgdm9pZCBkZWxldGVNYXJrZWROb2RlcygpIGZpbmFsOworCisgICAgLy8gQXVk
aW9Db250ZXh0IGNhbiBwdWxsIG5vZGUocykgYXQgdGhlIGVuZCBvZiBlYWNoIHJlbmRlciBxdWFu
dHVtIGV2ZW4gd2hlbiB0aGV5IGFyZSBub3QgY29ubmVjdGVkIHRvIGFueSBkb3duc3RyZWFtIG5v
ZGVzLgorICAgIC8vIFRoZXNlIHR3byBtZXRob2RzIGFyZSBjYWxsZWQgYnkgdGhlIG5vZGVzIHdo
byB3YW50IHRvIGFkZC9yZW1vdmUgdGhlbXNlbHZlcyBpbnRvL2Zyb20gdGhlIGF1dG9tYXRpYyBw
dWxsIGxpc3RzLgorICAgIHZvaWQgYWRkQXV0b21hdGljUHVsbE5vZGUoQXVkaW9Ob2RlJikgZmlu
YWw7CisgICAgdm9pZCByZW1vdmVBdXRvbWF0aWNQdWxsTm9kZShBdWRpb05vZGUmKSBmaW5hbDsK
KworICAgIC8vIENhbGxlZCByaWdodCBiZWZvcmUgaGFuZGxlUG9zdFJlbmRlclRhc2tzKCkgdG8g
aGFuZGxlIG5vZGVzIHdoaWNoIG5lZWQgdG8gYmUgcHVsbGVkIGV2ZW4gd2hlbiB0aGV5IGFyZSBu
b3QgY29ubmVjdGVkIHRvIGFueXRoaW5nLgorICAgIHZvaWQgcHJvY2Vzc0F1dG9tYXRpY1B1bGxO
b2RlcyhzaXplX3QgZnJhbWVzVG9Qcm9jZXNzKSBmaW5hbDsKKworICAgIC8vIEtlZXBzIHRyYWNr
IG9mIHRoZSBudW1iZXIgb2YgY29ubmVjdGlvbnMgbWFkZS4KKyAgICB2b2lkIGluY3JlbWVudENv
bm5lY3Rpb25Db3VudCgpIGZpbmFsCisgICAgeworICAgICAgICBBU1NFUlQoaXNNYWluVGhyZWFk
KCkpOworICAgICAgICBtX2Nvbm5lY3Rpb25Db3VudCsrOworICAgIH0KKworICAgIHVuc2lnbmVk
IGNvbm5lY3Rpb25Db3VudCgpIGNvbnN0IHsgcmV0dXJuIG1fY29ubmVjdGlvbkNvdW50OyB9CisK
KyAgICAvLworICAgIC8vIFRocmVhZCBTYWZldHkgYW5kIEdyYXBoIExvY2tpbmc6CisgICAgLy8K
KworICAgIHZvaWQgc2V0QXVkaW9UaHJlYWQoVGhyZWFkJiB0aHJlYWQpIGZpbmFsIHsgbV9hdWRp
b1RocmVhZCA9ICZ0aHJlYWQ7IH0gLy8gRklYTUU6IGNoZWNrIGVpdGhlciBub3QgaW5pdGlhbGl6
ZWQgb3IgdGhlIHNhbWUKKyAgICBUaHJlYWQqIGF1ZGlvVGhyZWFkKCkgY29uc3QgeyByZXR1cm4g
bV9hdWRpb1RocmVhZDsgfQorICAgIGJvb2wgaXNBdWRpb1RocmVhZCgpIGNvbnN0IGZpbmFsOwor
CisgICAgLy8gUmV0dXJucyB0cnVlIG9ubHkgYWZ0ZXIgdGhlIGF1ZGlvIHRocmVhZCBoYXMgYmVl
biBzdGFydGVkIGFuZCB0aGVuIHNodXRkb3duLgorICAgIGJvb2wgaXNBdWRpb1RocmVhZEZpbmlz
aGVkKCkgZmluYWwgeyByZXR1cm4gbV9pc0F1ZGlvVGhyZWFkRmluaXNoZWQ7IH0KKworICAgIC8v
IG11c3RSZWxlYXNlTG9jayBpcyBzZXQgdG8gdHJ1ZSBpZiB3ZSBhY3F1aXJlZCB0aGUgbG9jayBp
biB0aGlzIG1ldGhvZCBjYWxsIGFuZCBjYWxsZXIgbXVzdCB1bmxvY2soKSwgZmFsc2UgaWYgaXQg
d2FzIHByZXZpb3VzbHkgYWNxdWlyZWQuCisgICAgdm9pZCBsb2NrKGJvb2wmIG11c3RSZWxlYXNl
TG9jaykgZmluYWw7CisKKyAgICAvLyBSZXR1cm5zIHRydWUgaWYgd2Ugb3duIHRoZSBsb2NrLgor
ICAgIC8vIG11c3RSZWxlYXNlTG9jayBpcyBzZXQgdG8gdHJ1ZSBpZiB3ZSBhY3F1aXJlZCB0aGUg
bG9jayBpbiB0aGlzIG1ldGhvZCBjYWxsIGFuZCBjYWxsZXIgbXVzdCB1bmxvY2soKSwgZmFsc2Ug
aWYgaXQgd2FzIHByZXZpb3VzbHkgYWNxdWlyZWQuCisgICAgYm9vbCB0cnlMb2NrKGJvb2wmIG11
c3RSZWxlYXNlTG9jaykgZmluYWw7CisKKyAgICB2b2lkIHVubG9jaygpIGZpbmFsOworCisgICAg
Ly8gUmV0dXJucyB0cnVlIGlmIHRoaXMgdGhyZWFkIG93bnMgdGhlIGNvbnRleHQncyBsb2NrLgor
ICAgIGJvb2wgaXNHcmFwaE93bmVyKCkgY29uc3QgZmluYWw7CisKKyAgICAvLyBSZXR1cm5zIHRo
ZSBtYXhpbXVtIG51bWJlciBvZiBjaGFubmVscyB3ZSBjYW4gc3VwcG9ydC4KKyAgICBzdGF0aWMg
dW5zaWduZWQgbWF4TnVtYmVyT2ZDaGFubmVscygpIHsgcmV0dXJuIE1heE51bWJlck9mQ2hhbm5l
bHM7IH0KKworICAgIC8vIEluIEF1ZGlvTm9kZTo6ZGVyZWYoKSBhIHRyeUxvY2soKSBpcyB1c2Vk
IGZvciBjYWxsaW5nIGZpbmlzaERlcmVmKCksIGJ1dCBpZiBpdCBmYWlscyBrZWVwIHRyYWNrIGhl
cmUuCisgICAgdm9pZCBhZGREZWZlcnJlZEZpbmlzaERlcmVmKEF1ZGlvTm9kZSopIGZpbmFsOwor
CisgICAgLy8gSW4gdGhlIGF1ZGlvIHRocmVhZCBhdCB0aGUgc3RhcnQgb2YgZWFjaCByZW5kZXIg
Y3ljbGUsIHdlJ2xsIGNhbGwgaGFuZGxlRGVmZXJyZWRGaW5pc2hEZXJlZnMoKS4KKyAgICB2b2lk
IGhhbmRsZURlZmVycmVkRmluaXNoRGVyZWZzKCk7CisKKyAgICAvLyBPbmx5IGFjY2Vzc2VkIHdo
ZW4gdGhlIGdyYXBoIGxvY2sgaXMgaGVsZC4KKyAgICB2b2lkIG1hcmtTdW1taW5nSnVuY3Rpb25E
aXJ0eShBdWRpb1N1bW1pbmdKdW5jdGlvbiopIGZpbmFsOworICAgIHZvaWQgbWFya0F1ZGlvTm9k
ZU91dHB1dERpcnR5KEF1ZGlvTm9kZU91dHB1dCopIGZpbmFsOworCisgICAgLy8gTXVzdCBiZSBj
YWxsZWQgb24gbWFpbiB0aHJlYWQuCisgICAgdm9pZCByZW1vdmVNYXJrZWRTdW1taW5nSnVuY3Rp
b24oQXVkaW9TdW1taW5nSnVuY3Rpb24qKSBmaW5hbDsKKworICAgIC8vIEV2ZW50VGFyZ2V0Cisg
ICAgRXZlbnRUYXJnZXRJbnRlcmZhY2UgZXZlbnRUYXJnZXRJbnRlcmZhY2UoKSBjb25zdCBmaW5h
bCB7IHJldHVybiBXZWJLaXRBdWRpb0NvbnRleHRFdmVudFRhcmdldEludGVyZmFjZVR5cGU7IH0K
KworICAgIC8vIFJlY29uY2lsZSByZWYvZGVyZWYgd2hpY2ggYXJlIGRlZmluZWQgYm90aCBpbiBU
aHJlYWRTYWZlUmVmQ291bnRlZCBhbmQgRXZlbnRUYXJnZXQuCisgICAgdXNpbmcgVGhyZWFkU2Fm
ZVJlZkNvdW50ZWQ6OnJlZjsKKyAgICB1c2luZyBUaHJlYWRTYWZlUmVmQ291bnRlZDo6ZGVyZWY7
CisKKyAgICB2b2lkIHN0YXJ0UmVuZGVyaW5nKCk7CisgICAgdm9pZCBmaW5pc2hlZFJlbmRlcmlu
Zyhib29sIGRpZFJlbmRlcmluZykgZmluYWw7CisKKyAgICBzdGF0aWMgdW5zaWduZWQgc19oYXJk
d2FyZUNvbnRleHRDb3VudDsKKworICAgIC8vIFJlc3RyaWN0aW9ucyB0byBjaGFuZ2UgZGVmYXVs
dCBiZWhhdmlvcnMuCisgICAgZW51bSBCZWhhdmlvclJlc3RyaWN0aW9uRmxhZ3MgeworICAgICAg
ICBOb1Jlc3RyaWN0aW9ucyA9IDAsCisgICAgICAgIFJlcXVpcmVVc2VyR2VzdHVyZUZvckF1ZGlv
U3RhcnRSZXN0cmljdGlvbiA9IDEgPDwgMCwKKyAgICAgICAgUmVxdWlyZVBhZ2VDb25zZW50Rm9y
QXVkaW9TdGFydFJlc3RyaWN0aW9uID0gMSA8PCAxLAorICAgIH07CisgICAgdHlwZWRlZiB1bnNp
Z25lZCBCZWhhdmlvclJlc3RyaWN0aW9uczsKKworICAgIEJlaGF2aW9yUmVzdHJpY3Rpb25zIGJl
aGF2aW9yUmVzdHJpY3Rpb25zKCkgY29uc3QgeyByZXR1cm4gbV9yZXN0cmljdGlvbnM7IH0KKyAg
ICB2b2lkIGFkZEJlaGF2aW9yUmVzdHJpY3Rpb24oQmVoYXZpb3JSZXN0cmljdGlvbnMgcmVzdHJp
Y3Rpb24pIHsgbV9yZXN0cmljdGlvbnMgfD0gcmVzdHJpY3Rpb247IH0KKyAgICB2b2lkIHJlbW92
ZUJlaGF2aW9yUmVzdHJpY3Rpb24oQmVoYXZpb3JSZXN0cmljdGlvbnMgcmVzdHJpY3Rpb24pIHsg
bV9yZXN0cmljdGlvbnMgJj0gfnJlc3RyaWN0aW9uOyB9CisKKyAgICB2b2lkIGlzUGxheWluZ0F1
ZGlvRGlkQ2hhbmdlKCkgZmluYWw7CisKKyAgICB2b2lkIG5vZGVXaWxsQmVnaW5QbGF5YmFjaygp
IGZpbmFsOworCisjaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECisgICAgY29uc3QgTG9nZ2VyJiBs
b2dnZXIoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2xvZ2dlci5nZXQoKTsgfQorICAgIGNvbnN0
IHZvaWQqIGxvZ0lkZW50aWZpZXIoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2xvZ0lkZW50aWZp
ZXI7IH0KKyAgICBXVEZMb2dDaGFubmVsJiBsb2dDaGFubmVsKCkgY29uc3QgZmluYWw7CisgICAg
Y29uc3Qgdm9pZCogbmV4dEF1ZGlvTm9kZUxvZ0lkZW50aWZpZXIoKSBmaW5hbCB7IHJldHVybiBj
aGlsZExvZ0lkZW50aWZpZXIobV9sb2dJZGVudGlmaWVyLCArK21fbmV4dEF1ZGlvTm9kZUlkZW50
aWZpZXIpOyB9CisgICAgY29uc3Qgdm9pZCogbmV4dEF1ZGlvUGFyYW1ldGVyTG9nSWRlbnRpZmll
cigpIGZpbmFsIHsgcmV0dXJuIGNoaWxkTG9nSWRlbnRpZmllcihtX2xvZ0lkZW50aWZpZXIsICsr
bV9uZXh0QXVkaW9QYXJhbWV0ZXJJZGVudGlmaWVyKTsgfQorI2VuZGlmCisKKyAgICB2b2lkIHBv
c3RUYXNrKFdURjo6RnVuY3Rpb248dm9pZCgpPiYmKSBmaW5hbDsKKyAgICBib29sIGlzU3RvcHBl
ZCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1faXNTdG9wU2NoZWR1bGVkOyB9CisgICAgY29uc3Qg
U2VjdXJpdHlPcmlnaW4qIG9yaWdpbigpIGNvbnN0IGZpbmFsOworICAgIHZvaWQgYWRkQ29uc29s
ZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZSwgTWVzc2FnZUxldmVsLCBjb25zdCBTdHJpbmcmIG1lc3Nh
Z2UpIGZpbmFsOworCitwcm90ZWN0ZWQ6CisgICAgZXhwbGljaXQgV2ViS2l0QXVkaW9Db250ZXh0
KERvY3VtZW50Jik7CisgICAgV2ViS2l0QXVkaW9Db250ZXh0KERvY3VtZW50JiwgQXVkaW9CdWZm
ZXIqIHJlbmRlclRhcmdldCk7CisKKyAgICBzdGF0aWMgYm9vbCBpc1NhbXBsZVJhdGVSYW5nZUdv
b2QoZmxvYXQgc2FtcGxlUmF0ZSk7CisgICAgdm9pZCBjbGVhclBlbmRpbmdBY3Rpdml0eSgpOwor
ICAgIHZvaWQgbWFrZVBlbmRpbmdBY3Rpdml0eSgpOworCitwcml2YXRlOgorICAgIHZvaWQgY29u
c3RydWN0Q29tbW9uKCk7CisKKyAgICB2b2lkIGxhenlJbml0aWFsaXplKCk7CisgICAgdm9pZCB1
bmluaXRpYWxpemUoKTsKKworICAgIGJvb2wgd2lsbEJlZ2luUGxheWJhY2soKTsKKyAgICBib29s
IHdpbGxQYXVzZVBsYXliYWNrKCk7CisKKyAgICBib29sIHVzZXJHZXN0dXJlUmVxdWlyZWRGb3JB
dWRpb1N0YXJ0KCkgY29uc3QgeyByZXR1cm4gIWlzT2ZmbGluZUNvbnRleHQoKSAmJiBtX3Jlc3Ry
aWN0aW9ucyAmIFJlcXVpcmVVc2VyR2VzdHVyZUZvckF1ZGlvU3RhcnRSZXN0cmljdGlvbjsgfQor
ICAgIGJvb2wgcGFnZUNvbnNlbnRSZXF1aXJlZEZvckF1ZGlvU3RhcnQoKSBjb25zdCB7IHJldHVy
biAhaXNPZmZsaW5lQ29udGV4dCgpICYmIG1fcmVzdHJpY3Rpb25zICYgUmVxdWlyZVBhZ2VDb25z
ZW50Rm9yQXVkaW9TdGFydFJlc3RyaWN0aW9uOyB9CisKKyAgICB2b2lkIHNldFN0YXRlKFN0YXRl
KTsKKworICAgIHZvaWQgY2xlYXIoKTsKKworICAgIHZvaWQgc2NoZWR1bGVOb2RlRGVsZXRpb24o
KTsKKworICAgIHZvaWQgbWVkaWFDYW5TdGFydChEb2N1bWVudCYpIG92ZXJyaWRlOworCisgICAg
Ly8gRXZlbnRUYXJnZXQKKyAgICB2b2lkIGRpc3BhdGNoRXZlbnQoRXZlbnQmKSBmaW5hbDsKKwor
ICAgIC8vIE1lZGlhUHJvZHVjZXIKKyAgICBNZWRpYVByb2R1Y2VyOjpNZWRpYVN0YXRlRmxhZ3Mg
bWVkaWFTdGF0ZSgpIGNvbnN0IG92ZXJyaWRlOworICAgIHZvaWQgcGFnZU11dGVkU3RhdGVEaWRD
aGFuZ2UoKSBvdmVycmlkZTsKKworICAgIC8vIFRoZSBjb250ZXh0IGl0c2VsZiBrZWVwcyBhIHJl
ZmVyZW5jZSB0byBhbGwgc291cmNlIG5vZGVzLiAgVGhlIHNvdXJjZSBub2RlcywgdGhlbiByZWZl
cmVuY2UgYWxsIG5vZGVzIHRoZXkncmUgY29ubmVjdGVkIHRvLgorICAgIC8vIEluIHR1cm4sIHRo
ZXNlIG5vZGVzIHJlZmVyZW5jZSBhbGwgbm9kZXMgdGhleSdyZSBjb25uZWN0ZWQgdG8uICBBbGwg
bm9kZXMgYXJlIHVsdGltYXRlbHkgY29ubmVjdGVkIHRvIHRoZSBBdWRpb0Rlc3RpbmF0aW9uTm9k
ZS4KKyAgICAvLyBXaGVuIHRoZSBjb250ZXh0IGRlcmVmZXJlbmNlcyBhIHNvdXJjZSBub2RlLCBp
dCB3aWxsIGJlIGRlYWN0aXZhdGVkIGZyb20gdGhlIHJlbmRlcmluZyBncmFwaCBhbG9uZyB3aXRo
IGFsbCBvdGhlciBub2RlcyBpdCBpcworICAgIC8vIHVuaXF1ZWx5IGNvbm5lY3RlZCB0by4gIFNl
ZSB0aGUgQXVkaW9Ob2RlOjpyZWYoKSBhbmQgQXVkaW9Ob2RlOjpkZXJlZigpIG1ldGhvZHMgZm9y
IG1vcmUgZGV0YWlscy4KKyAgICB2b2lkIHJlZk5vZGUoQXVkaW9Ob2RlJik7CisgICAgdm9pZCBk
ZXJlZk5vZGUoQXVkaW9Ob2RlJik7CisKKyAgICAvLyBBY3RpdmVET01PYmplY3QgQVBJLgorICAg
IHZvaWQgc3VzcGVuZChSZWFzb25Gb3JTdXNwZW5zaW9uKSBmaW5hbDsKKyAgICB2b2lkIHJlc3Vt
ZSgpIGZpbmFsOworICAgIHZvaWQgc3RvcCgpIG92ZXJyaWRlOworICAgIGNvbnN0IGNoYXIqIGFj
dGl2ZURPTU9iamVjdE5hbWUoKSBjb25zdCBvdmVycmlkZTsKKworICAgIC8vIFdoZW4gdGhlIGNv
bnRleHQgZ29lcyBhd2F5LCB0aGVyZSBtaWdodCBzdGlsbCBiZSBzb21lIHNvdXJjZXMgd2hpY2gg
aGF2ZW4ndCBmaW5pc2hlZCBwbGF5aW5nLgorICAgIC8vIE1ha2Ugc3VyZSB0byBkZXJlZmVyZW5j
ZSB0aGVtIGhlcmUuCisgICAgdm9pZCBkZXJlZlVuZmluaXNoZWRTb3VyY2VOb2RlcygpOworCisg
ICAgLy8gUGxhdGZvcm1NZWRpYVNlc3Npb25DbGllbnQKKyAgICBQbGF0Zm9ybU1lZGlhU2Vzc2lv
bjo6TWVkaWFUeXBlIG1lZGlhVHlwZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIFBsYXRmb3Jt
TWVkaWFTZXNzaW9uOjpNZWRpYVR5cGU6OldlYkF1ZGlvOyB9CisgICAgUGxhdGZvcm1NZWRpYVNl
c3Npb246Ok1lZGlhVHlwZSBwcmVzZW50YXRpb25UeXBlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1
cm4gUGxhdGZvcm1NZWRpYVNlc3Npb246Ok1lZGlhVHlwZTo6V2ViQXVkaW87IH0KKyAgICB2b2lk
IG1heVJlc3VtZVBsYXliYWNrKGJvb2wgc2hvdWxkUmVzdW1lKSBvdmVycmlkZTsKKyAgICB2b2lk
IHN1c3BlbmRQbGF5YmFjaygpIG92ZXJyaWRlOworICAgIGJvb2wgY2FuUmVjZWl2ZVJlbW90ZUNv
bnRyb2xDb21tYW5kcygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdm9p
ZCBkaWRSZWNlaXZlUmVtb3RlQ29udHJvbENvbW1hbmQoUGxhdGZvcm1NZWRpYVNlc3Npb246OlJl
bW90ZUNvbnRyb2xDb21tYW5kVHlwZSwgY29uc3QgUGxhdGZvcm1NZWRpYVNlc3Npb246OlJlbW90
ZUNvbW1hbmRBcmd1bWVudCopIG92ZXJyaWRlIHsgfQorICAgIGJvb2wgc3VwcG9ydHNTZWVraW5n
KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KKyAgICBib29sIHNob3VsZE92ZXJy
aWRlQmFja2dyb3VuZFBsYXliYWNrUmVzdHJpY3Rpb24oUGxhdGZvcm1NZWRpYVNlc3Npb246Oklu
dGVycnVwdGlvblR5cGUpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgYm9v
bCBjYW5Qcm9kdWNlQXVkaW8oKSBjb25zdCBmaW5hbCB7IHJldHVybiB0cnVlOyB9CisgICAgYm9v
bCBpc1N1c3BlbmRlZCgpIGNvbnN0IGZpbmFsOworCisgICAgdm9pZCB2aXNpYmlsaXR5U3RhdGVD
aGFuZ2VkKCkgZmluYWw7CisKKyAgICBib29sIGlzQXVkaW9Db250ZXh0KCkgY29uc3QgZmluYWwg
eyByZXR1cm4gZmFsc2U7IH0KKyAgICBib29sIGlzV2ViS2l0QXVkaW9Db250ZXh0KCkgY29uc3Qg
ZmluYWwgeyByZXR1cm4gdHJ1ZTsgfQorCisgICAgLy8gRXZlbnRUYXJnZXQKKyAgICB2b2lkIHJl
ZkV2ZW50VGFyZ2V0KCkgb3ZlcnJpZGUgeyByZWYoKTsgfQorICAgIHZvaWQgZGVyZWZFdmVudFRh
cmdldCgpIG92ZXJyaWRlIHsgZGVyZWYoKTsgfQorCisgICAgdm9pZCBoYW5kbGVEaXJ0eUF1ZGlv
U3VtbWluZ0p1bmN0aW9ucygpOworICAgIHZvaWQgaGFuZGxlRGlydHlBdWRpb05vZGVPdXRwdXRz
KCk7CisKKyAgICB2b2lkIGFkZFJlYWN0aW9uKFN0YXRlLCBET01Qcm9taXNlRGVmZXJyZWQ8dm9p
ZD4mJik7CisgICAgdm9pZCB1cGRhdGVBdXRvbWF0aWNQdWxsTm9kZXMoKTsKKworI2lmICFSRUxF
QVNFX0xPR19ESVNBQkxFRAorICAgIGNvbnN0IGNoYXIqIGxvZ0NsYXNzTmFtZSgpIGNvbnN0IGZp
bmFsIHsgcmV0dXJuICJXZWJLaXRBdWRpb0NvbnRleHQiOyB9CisKKyAgICBSZWY8TG9nZ2VyPiBt
X2xvZ2dlcjsKKyAgICBjb25zdCB2b2lkKiBtX2xvZ0lkZW50aWZpZXI7CisgICAgdWludDY0X3Qg
bV9uZXh0QXVkaW9Ob2RlSWRlbnRpZmllciB7IDAgfTsKKyAgICB1aW50NjRfdCBtX25leHRBdWRp
b1BhcmFtZXRlcklkZW50aWZpZXIgeyAwIH07CisjZW5kaWYKKworICAgIC8vIE9ubHkgYWNjZXNz
ZWQgaW4gdGhlIGF1ZGlvIHRocmVhZC4KKyAgICBWZWN0b3I8QXVkaW9Ob2RlKj4gbV9maW5pc2hl
ZE5vZGVzOworCisgICAgLy8gV2UgZG9uJ3QgdXNlIFJlZlB0cjxBdWRpb05vZGU+IGhlcmUgYmVj
YXVzZSBBdWRpb05vZGUgaGFzIGEgbW9yZSBjb21wbGV4IHJlZigpIC8gZGVyZWYoKSBpbXBsZW1l
bnRhdGlvbgorICAgIC8vIHdpdGggYW4gb3B0aW9uYWwgYXJndW1lbnQgZm9yIHJlZlR5cGUuICBX
ZSBuZWVkIHRvIHVzZSB0aGUgc3BlY2lhbCByZWZUeXBlOiBSZWZUeXBlQ29ubmVjdGlvbgorICAg
IC8vIEVpdGhlciBhY2Nlc3NlZCB3aGVuIHRoZSBncmFwaCBsb2NrIGlzIGhlbGQsIG9yIG9uIHRo
ZSBtYWluIHRocmVhZCB3aGVuIHRoZSBhdWRpbyB0aHJlYWQgaGFzIGZpbmlzaGVkLgorICAgIFZl
Y3RvcjxBdWRpb05vZGUqPiBtX3JlZmVyZW5jZWROb2RlczsKKworICAgIC8vIEFjY3VtdWxhdGUg
bm9kZXMgd2hpY2ggbmVlZCB0byBiZSBkZWxldGVkIGhlcmUuCisgICAgLy8gVGhpcyBpcyBjb3Bp
ZWQgdG8gbV9ub2Rlc1RvRGVsZXRlIGF0IHRoZSBlbmQgb2YgYSByZW5kZXIgY3ljbGUgaW4gaGFu
ZGxlUG9zdFJlbmRlclRhc2tzKCksIHdoZXJlIHdlJ3JlIGFzc3VyZWQgb2YgYSBzdGFibGUgZ3Jh
cGgKKyAgICAvLyBzdGF0ZSB3aGljaCB3aWxsIGhhdmUgbm8gcmVmZXJlbmNlcyB0byBhbnkgb2Yg
dGhlIG5vZGVzIGluIG1fbm9kZXNUb0RlbGV0ZSBvbmNlIHRoZSBjb250ZXh0IGxvY2sgaXMgcmVs
ZWFzZWQKKyAgICAvLyAod2hlbiBoYW5kbGVQb3N0UmVuZGVyVGFza3MoKSBoYXMgY29tcGxldGVk
KS4KKyAgICBWZWN0b3I8QXVkaW9Ob2RlKj4gbV9ub2Rlc01hcmtlZEZvckRlbGV0aW9uOworCisg
ICAgLy8gVGhleSB3aWxsIGJlIHNjaGVkdWxlZCBmb3IgZGVsZXRpb24gKG9uIHRoZSBtYWluIHRo
cmVhZCkgYXQgdGhlIGVuZCBvZiBhIHJlbmRlciBjeWNsZSAoaW4gcmVhbHRpbWUgdGhyZWFkKS4K
KyAgICBWZWN0b3I8QXVkaW9Ob2RlKj4gbV9ub2Rlc1RvRGVsZXRlOworCisgICAgYm9vbCBtX2lz
RGVsZXRpb25TY2hlZHVsZWQgeyBmYWxzZSB9OworICAgIGJvb2wgbV9pc1N0b3BTY2hlZHVsZWQg
eyBmYWxzZSB9OworICAgIGJvb2wgbV9pc0luaXRpYWxpemVkIHsgZmFsc2UgfTsKKyAgICBib29s
IG1faXNBdWRpb1RocmVhZEZpbmlzaGVkIHsgZmFsc2UgfTsKKyAgICBib29sIG1fYXV0b21hdGlj
UHVsbE5vZGVzTmVlZFVwZGF0aW5nIHsgZmFsc2UgfTsKKyAgICBib29sIG1faXNPZmZsaW5lQ29u
dGV4dCB7IGZhbHNlIH07CisKKyAgICAvLyBPbmx5IGFjY2Vzc2VkIHdoZW4gdGhlIGdyYXBoIGxv
Y2sgaXMgaGVsZC4KKyAgICBIYXNoU2V0PEF1ZGlvU3VtbWluZ0p1bmN0aW9uKj4gbV9kaXJ0eVN1
bW1pbmdKdW5jdGlvbnM7CisgICAgSGFzaFNldDxBdWRpb05vZGVPdXRwdXQqPiBtX2RpcnR5QXVk
aW9Ob2RlT3V0cHV0czsKKworICAgIC8vIEZvciB0aGUgc2FrZSBvZiB0aHJlYWQgc2FmZXR5LCB3
ZSBtYWludGFpbiBhIHNlcGVyYXRlIFZlY3RvciBvZiBhdXRvbWF0aWMgcHVsbCBub2RlcyBmb3Ig
cmVuZGVyaW5nIGluIG1fcmVuZGVyaW5nQXV0b21hdGljUHVsbE5vZGVzLgorICAgIC8vIEl0IHdp
bGwgYmUgY29waWVkIGZyb20gbV9hdXRvbWF0aWNQdWxsTm9kZXMgYnkgdXBkYXRlQXV0b21hdGlj
UHVsbE5vZGVzKCkgYXQgdGhlIHZlcnkgc3RhcnQgb3IgZW5kIG9mIHRoZSByZW5kZXJpbmcgcXVh
bnR1bS4KKyAgICBIYXNoU2V0PEF1ZGlvTm9kZSo+IG1fYXV0b21hdGljUHVsbE5vZGVzOworICAg
IFZlY3RvcjxBdWRpb05vZGUqPiBtX3JlbmRlcmluZ0F1dG9tYXRpY1B1bGxOb2RlczsKKyAgICAv
LyBPbmx5IGFjY2Vzc2VkIGluIHRoZSBhdWRpbyB0aHJlYWQuCisgICAgVmVjdG9yPEF1ZGlvTm9k
ZSo+IG1fZGVmZXJyZWRGaW5pc2hEZXJlZkxpc3Q7CisgICAgVmVjdG9yPFZlY3RvcjxET01Qcm9t
aXNlRGVmZXJyZWQ8dm9pZD4+PiBtX3N0YXRlUmVhY3Rpb25zOworCisgICAgc3RkOjp1bmlxdWVf
cHRyPFBsYXRmb3JtTWVkaWFTZXNzaW9uPiBtX21lZGlhU2Vzc2lvbjsKKyAgICBVbmlxdWVSZWY8
TWFpblRocmVhZEdlbmVyaWNFdmVudFF1ZXVlPiBtX2V2ZW50UXVldWU7CisKKyAgICBSZWZQdHI8
QXVkaW9CdWZmZXI+IG1fcmVuZGVyVGFyZ2V0OworICAgIFJlZlB0cjxBdWRpb0Rlc3RpbmF0aW9u
Tm9kZT4gbV9kZXN0aW5hdGlvbk5vZGU7CisgICAgUmVmUHRyPEF1ZGlvTGlzdGVuZXI+IG1fbGlz
dGVuZXI7CisKKyAgICB1bnNpZ25lZCBtX2Nvbm5lY3Rpb25Db3VudCB7IDAgfTsKKworICAgIC8v
IEdyYXBoIGxvY2tpbmcuCisgICAgTG9jayBtX2NvbnRleHRHcmFwaE11dGV4OworICAgIC8vIEZJ
WE1FOiBVc2luZyB2b2xhdGlsZSBzZWVtcyBpbmNvcnJlY3QuCisgICAgLy8gaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4MDMzMgorICAgIFRocmVhZCogdm9sYXRpbGUg
bV9hdWRpb1RocmVhZCB7IG51bGxwdHIgfTsKKyAgICBUaHJlYWQqIHZvbGF0aWxlIG1fZ3JhcGhP
d25lclRocmVhZCB7IG51bGxwdHIgfTsgLy8gaWYgdGhlIGxvY2sgaXMgaGVsZCB0aGVuIHRoaXMg
aXMgdGhlIHRocmVhZCB3aGljaCBvd25zIGl0LCBvdGhlcndpc2UgPT0gbnVsbHB0ci4KKworICAg
IHN0ZDo6dW5pcXVlX3B0cjxBc3luY0F1ZGlvRGVjb2Rlcj4gbV9hdWRpb0RlY29kZXI7CisKKyAg
ICAvLyBUaGlzIGlzIGNvbnNpZGVyaW5nIDMyIGlzIGxhcmdlIGVub3VnaCBmb3IgbXVsdGlwbGUg
Y2hhbm5lbHMgYXVkaW8uCisgICAgLy8gSXQgaXMgc29tZXdoYXQgYXJiaXRyYXJ5IGFuZCBjb3Vs
ZCBiZSBpbmNyZWFzZWQgaWYgbmVjZXNzYXJ5LgorICAgIGVudW0geyBNYXhOdW1iZXJPZkNoYW5u
ZWxzID0gMzIgfTsKKworICAgIC8vIE51bWJlciBvZiBBdWRpb0J1ZmZlclNvdXJjZU5vZGVzIHRo
YXQgYXJlIGFjdGl2ZSAocGxheWluZykuCisgICAgc3RkOjphdG9taWM8aW50PiBtX2FjdGl2ZVNv
dXJjZUNvdW50IHsgMCB9OworCisgICAgQmVoYXZpb3JSZXN0cmljdGlvbnMgbV9yZXN0cmljdGlv
bnMgeyBOb1Jlc3RyaWN0aW9ucyB9OworCisgICAgU3RhdGUgbV9zdGF0ZSB7IFN0YXRlOjpTdXNw
ZW5kZWQgfTsKKyAgICBSZWZQdHI8UGVuZGluZ0FjdGl2aXR5PFdlYktpdEF1ZGlvQ29udGV4dD4+
IG1fcGVuZGluZ0FjdGl2aXR5OworfTsKKworaW5saW5lIEF1ZGlvQ29udGV4dFN0YXRlIFdlYktp
dEF1ZGlvQ29udGV4dDo6c3RhdGUoKSBjb25zdAoreworICAgIHJldHVybiBtX3N0YXRlOworfQor
Cit9IC8vIFdlYkNvcmUKKworU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19CRUdJTihXZWJDb3JlOjpX
ZWJLaXRBdWRpb0NvbnRleHQpCisgICAgc3RhdGljIGJvb2wgaXNUeXBlKGNvbnN0IFdlYkNvcmU6
OkF1ZGlvQ29udGV4dEJhc2UmIGNvbnRleHQpIHsgcmV0dXJuIGNvbnRleHQuaXNXZWJLaXRBdWRp
b0NvbnRleHQoKTsgfQorU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19FTkQoKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9XZWJLaXRBdWRpb0NvbnRleHQuaWRsIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9XZWJLaXRBdWRpb0NvbnRleHQuaWRsCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi5lY2M3MWQwNzc4ZAotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vV2ViS2l0QXVkaW9D
b250ZXh0LmlkbApAQCAtMCwwICsxLDk0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwLCBH
b29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDExIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICog
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OCisgKiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAor
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKKyAqIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKK1sKKyAgICBBY3RpdmVET01P
YmplY3QsCisgICAgQ29uZGl0aW9uYWw9V0VCX0FVRElPLAorICAgIENvbnN0cnVjdG9yLAorICAg
IENvbnN0cnVjdG9yQ2FsbFdpdGg9RG9jdW1lbnQsCisgICAgQ29uc3RydWN0b3JNYXlUaHJvd0V4
Y2VwdGlvbiwKKyAgICBFbmFibGVkQnlTZXR0aW5nPVdlYkF1ZGlvLAorICAgIEV4cG9ydE1hY3Jv
PVdFQkNPUkVfRVhQT1JULAorICAgIEludGVyZmFjZU5hbWU9d2Via2l0QXVkaW9Db250ZXh0LAor
XSBpbnRlcmZhY2UgV2ViS2l0QXVkaW9Db250ZXh0IDogRXZlbnRUYXJnZXQgeworICAgIC8vIEFs
bCByZW5kZXJlZCBhdWRpbyB1bHRpbWF0ZWx5IGNvbm5lY3RzIHRvIGRlc3RpbmF0aW9uLCB3aGlj
aCByZXByZXNlbnRzIHRoZSBhdWRpbyBoYXJkd2FyZS4KKyAgICByZWFkb25seSBhdHRyaWJ1dGUg
QXVkaW9EZXN0aW5hdGlvbk5vZGUgZGVzdGluYXRpb247CisKKyAgICAvLyBBbGwgc2NoZWR1bGVk
IHRpbWVzIGFyZSByZWxhdGl2ZSB0byB0aGlzIHRpbWUgaW4gc2Vjb25kcy4KKyAgICByZWFkb25s
eSBhdHRyaWJ1dGUgdW5yZXN0cmljdGVkIGRvdWJsZSBjdXJyZW50VGltZTsKKworICAgIC8vIEFs
bCBBdWRpb05vZGVzIGluIHRoZSBjb250ZXh0IHJ1biBhdCB0aGlzIHNhbXBsZS1yYXRlIChzYW1w
bGUtZnJhbWVzIHBlciBzZWNvbmQpLgorICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSB1bnJlc3RyaWN0
ZWQgZmxvYXQgc2FtcGxlUmF0ZTsKKworICAgIC8vIEFsbCBwYW5uaW5nIGlzIHJlbGF0aXZlIHRv
IHRoaXMgbGlzdGVuZXIuCisgICAgcmVhZG9ubHkgYXR0cmlidXRlIEF1ZGlvTGlzdGVuZXIgbGlz
dGVuZXI7CisKKyAgICBbSW1wbGVtZW50ZWRBcz1zdXNwZW5kUmVuZGVyaW5nXSBQcm9taXNlPHZv
aWQ+IHN1c3BlbmQoKTsKKyAgICBbSW1wbGVtZW50ZWRBcz1yZXN1bWVSZW5kZXJpbmddIFByb21p
c2U8dm9pZD4gcmVzdW1lKCk7CisgICAgUHJvbWlzZTx2b2lkPiBjbG9zZSgpOworCisgICAgcmVh
ZG9ubHkgYXR0cmlidXRlIEF1ZGlvQ29udGV4dFN0YXRlIHN0YXRlOworICAgIGF0dHJpYnV0ZSBF
dmVudEhhbmRsZXIgb25zdGF0ZWNoYW5nZTsKKworICAgIC8vIE51bWJlciBvZiBBdWRpb0J1ZmZl
clNvdXJjZU5vZGVzIHRoYXQgYXJlIGN1cnJlbnRseSBwbGF5aW5nLgorICAgIHJlYWRvbmx5IGF0
dHJpYnV0ZSB1bnNpZ25lZCBsb25nIGFjdGl2ZVNvdXJjZUNvdW50OworCisgICAgW01heVRocm93
RXhjZXB0aW9uXSBBdWRpb0J1ZmZlciBjcmVhdGVCdWZmZXIodW5zaWduZWQgbG9uZyBudW1iZXJP
ZkNoYW5uZWxzLCB1bnNpZ25lZCBsb25nIG51bWJlck9mRnJhbWVzLCB1bnJlc3RyaWN0ZWQgZmxv
YXQgc2FtcGxlUmF0ZSk7CisgICAgW01heVRocm93RXhjZXB0aW9uXSBBdWRpb0J1ZmZlciBjcmVh
dGVCdWZmZXIoQXJyYXlCdWZmZXIgYnVmZmVyLCBib29sZWFuIG1peFRvTW9ubyk7CisKKyAgICAv
LyBBc3luY2hyb25vdXMgYXVkaW8gZmlsZSBkYXRhIGRlY29kaW5nLgorICAgIC8vIEZJWE1FOiBz
dWNjZXNzQ2FsbGJhY2sgc2hvdWxkIGJlIG9wdGlvbmFsIGFuZCB0aGUgY2FsbGJhY2tzIHNob3Vs
ZCBub3QgYmUgbnVsbGFibGUuIFRoaXMgc2hvdWxkIGFsc28gcmV0dXJuIGEgUHJvbWlzZS4KKyAg
ICB2b2lkIGRlY29kZUF1ZGlvRGF0YShBcnJheUJ1ZmZlciBhdWRpb0RhdGEsIEF1ZGlvQnVmZmVy
Q2FsbGJhY2s/IHN1Y2Nlc3NDYWxsYmFjaywgb3B0aW9uYWwgQXVkaW9CdWZmZXJDYWxsYmFjaz8g
ZXJyb3JDYWxsYmFjayk7CisKKyAgICAvLyBTb3VyY2VzCisgICAgW01heVRocm93RXhjZXB0aW9u
XSBBdWRpb0J1ZmZlclNvdXJjZU5vZGUgY3JlYXRlQnVmZmVyU291cmNlKCk7CisKKyAgICBbQ29u
ZGl0aW9uYWw9VklERU8sIE1heVRocm93RXhjZXB0aW9uXSBNZWRpYUVsZW1lbnRBdWRpb1NvdXJj
ZU5vZGUgY3JlYXRlTWVkaWFFbGVtZW50U291cmNlKEhUTUxNZWRpYUVsZW1lbnQgbWVkaWFFbGVt
ZW50KTsKKworICAgIFtDb25kaXRpb25hbD1NRURJQV9TVFJFQU0sIE1heVRocm93RXhjZXB0aW9u
XSBNZWRpYVN0cmVhbUF1ZGlvU291cmNlTm9kZSBjcmVhdGVNZWRpYVN0cmVhbVNvdXJjZShNZWRp
YVN0cmVhbSBtZWRpYVN0cmVhbSk7CisgICAgW0NvbmRpdGlvbmFsPU1FRElBX1NUUkVBTSwgTWF5
VGhyb3dFeGNlcHRpb25dIE1lZGlhU3RyZWFtQXVkaW9EZXN0aW5hdGlvbk5vZGUgY3JlYXRlTWVk
aWFTdHJlYW1EZXN0aW5hdGlvbigpOworCisgICAgLy8gUHJvY2Vzc2luZyBub2RlcworICAgIFtN
YXlUaHJvd0V4Y2VwdGlvbl0gR2Fpbk5vZGUgY3JlYXRlR2FpbigpOworICAgIFtNYXlUaHJvd0V4
Y2VwdGlvbl0gRGVsYXlOb2RlIGNyZWF0ZURlbGF5KG9wdGlvbmFsIHVucmVzdHJpY3RlZCBkb3Vi
bGUgbWF4RGVsYXlUaW1lID0gMSk7CisgICAgW01heVRocm93RXhjZXB0aW9uXSBCaXF1YWRGaWx0
ZXJOb2RlIGNyZWF0ZUJpcXVhZEZpbHRlcigpOworICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gV2F2
ZVNoYXBlck5vZGUgY3JlYXRlV2F2ZVNoYXBlcigpOworICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0g
V2ViS2l0QXVkaW9QYW5uZXJOb2RlIGNyZWF0ZVBhbm5lcigpOworICAgIFtNYXlUaHJvd0V4Y2Vw
dGlvbl0gQ29udm9sdmVyTm9kZSBjcmVhdGVDb252b2x2ZXIoKTsKKyAgICBbTWF5VGhyb3dFeGNl
cHRpb25dIER5bmFtaWNzQ29tcHJlc3Nvck5vZGUgY3JlYXRlRHluYW1pY3NDb21wcmVzc29yKCk7
CisgICAgW01heVRocm93RXhjZXB0aW9uXSBBbmFseXNlck5vZGUgY3JlYXRlQW5hbHlzZXIoKTsK
KyAgICBbTWF5VGhyb3dFeGNlcHRpb25dIFNjcmlwdFByb2Nlc3Nvck5vZGUgY3JlYXRlU2NyaXB0
UHJvY2Vzc29yKG9wdGlvbmFsIHVuc2lnbmVkIGxvbmcgYnVmZmVyU2l6ZSA9IDAsIG9wdGlvbmFs
IHVuc2lnbmVkIGxvbmcgbnVtYmVyT2ZJbnB1dENoYW5uZWxzID0gMiwgb3B0aW9uYWwgdW5zaWdu
ZWQgbG9uZyBudW1iZXJPZk91dHB1dENoYW5uZWxzID0gMik7CisgICAgW01heVRocm93RXhjZXB0
aW9uXSBPc2NpbGxhdG9yTm9kZSBjcmVhdGVPc2NpbGxhdG9yKCk7CisgICAgW01heVRocm93RXhj
ZXB0aW9uXSBQZXJpb2RpY1dhdmUgY3JlYXRlUGVyaW9kaWNXYXZlKEZsb2F0MzJBcnJheSByZWFs
LCBGbG9hdDMyQXJyYXkgaW1hZyk7CisKKyAgICAvLyBDaGFubmVsIHNwbGl0dGluZyBhbmQgbWVy
Z2luZworICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gQ2hhbm5lbFNwbGl0dGVyTm9kZSBjcmVhdGVD
aGFubmVsU3BsaXR0ZXIob3B0aW9uYWwgdW5zaWduZWQgbG9uZyBudW1iZXJPZk91dHB1dHMgPSA2
KTsKKyAgICBbTWF5VGhyb3dFeGNlcHRpb25dIENoYW5uZWxNZXJnZXJOb2RlIGNyZWF0ZUNoYW5u
ZWxNZXJnZXIob3B0aW9uYWwgdW5zaWduZWQgbG9uZyBudW1iZXJPZklucHV0cyA9IDYpOworCisg
ICAgLy8gT2ZmbGluZSByZW5kZXJpbmcKKyAgICAvLyB2b2lkIHByZXBhcmVPZmZsaW5lQnVmZmVy
UmVuZGVyaW5nKHVuc2lnbmVkIGxvbmcgbnVtYmVyT2ZDaGFubmVscywgdW5zaWduZWQgbG9uZyBu
dW1iZXJPZkZyYW1lcywgdW5yZXN0cmljdGVkIGZsb2F0IHNhbXBsZVJhdGUpOworICAgIGF0dHJp
YnV0ZSBFdmVudEhhbmRsZXIgb25jb21wbGV0ZTsKKyAgICB2b2lkIHN0YXJ0UmVuZGVyaW5nKCk7
Cit9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9XZWJLaXRB
dWRpb1Bhbm5lck5vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9XZWJL
aXRBdWRpb1Bhbm5lck5vZGUuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwLi4yNThmNDVlN2NmZAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViYXVkaW8vV2ViS2l0QXVkaW9QYW5uZXJOb2RlLmNwcApAQCAtMCwwICsxLDM2MyBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCwgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuICBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUg
SU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OCisgKiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKKyAq
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJXZWJLaXRBdWRpb1Bh
bm5lck5vZGUuaCIKKworI2lmIEVOQUJMRShXRUJfQVVESU8pCisKKyNpbmNsdWRlICJBdWRpb0J1
ZmZlclNvdXJjZU5vZGUuaCIKKyNpbmNsdWRlICJBdWRpb0J1cy5oIgorI2luY2x1ZGUgIkF1ZGlv
Q29udGV4dC5oIgorI2luY2x1ZGUgIkF1ZGlvTm9kZUlucHV0LmgiCisjaW5jbHVkZSAiQXVkaW9O
b2RlT3V0cHV0LmgiCisjaW5jbHVkZSAiSFJURkRhdGFiYXNlTG9hZGVyLmgiCisjaW5jbHVkZSAi
SFJURlBhbm5lci5oIgorI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKKyNpbmNs
dWRlIDx3dGYvSXNvTWFsbG9jSW5saW5lcy5oPgorI2luY2x1ZGUgPHd0Zi9NYXRoRXh0cmFzLmg+
CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworV1RGX01BS0VfSVNPX0FMTE9DQVRFRF9JTVBMKFdl
YktpdEF1ZGlvUGFubmVyTm9kZSk7CisKK3N0YXRpYyB2b2lkIGZpeE5BTnMoZG91YmxlICZ4KQor
eworICAgIGlmIChzdGQ6OmlzbmFuKHgpIHx8IHN0ZDo6aXNpbmYoeCkpCisgICAgICAgIHggPSAw
LjA7Cit9CisKK1dlYktpdEF1ZGlvUGFubmVyTm9kZTo6V2ViS2l0QXVkaW9QYW5uZXJOb2RlKFdl
YktpdEF1ZGlvQ29udGV4dCYgY29udGV4dCwgZmxvYXQgc2FtcGxlUmF0ZSkKKyAgICA6IFBhbm5l
ck5vZGVCYXNlKGNvbnRleHQsIHNhbXBsZVJhdGUpCisgICAgLCBtX3Bhbm5pbmdNb2RlbChQYW5u
aW5nTW9kZWxUeXBlOjpIUlRGKQorICAgICwgbV9sYXN0R2FpbigtMS4wKQorICAgICwgbV9jb25u
ZWN0aW9uQ291bnQoMCkKK3sKKyAgICBzZXROb2RlVHlwZShOb2RlVHlwZVBhbm5lcik7CisKKyAg
ICAvLyBMb2FkIHRoZSBIUlRGIGRhdGFiYXNlIGFzeW5jaHJvbm91c2x5IHNvIHdlIGRvbid0IGJs
b2NrIHRoZSBKYXZhc2NyaXB0IHRocmVhZCB3aGlsZSBjcmVhdGluZyB0aGUgSFJURiBkYXRhYmFz
ZS4KKyAgICBtX2hydGZEYXRhYmFzZUxvYWRlciA9IEhSVEZEYXRhYmFzZUxvYWRlcjo6Y3JlYXRl
QW5kTG9hZEFzeW5jaHJvbm91c2x5SWZOZWNlc3NhcnkoY29udGV4dC5zYW1wbGVSYXRlKCkpOwor
CisgICAgYWRkSW5wdXQobWFrZVVuaXF1ZTxBdWRpb05vZGVJbnB1dD4odGhpcykpOworICAgIGFk
ZE91dHB1dChtYWtlVW5pcXVlPEF1ZGlvTm9kZU91dHB1dD4odGhpcywgMikpOworCisgICAgLy8g
Tm9kZS1zcGVjaWZpYyBkZWZhdWx0IG1peGluZyBydWxlcy4KKyAgICBtX2NoYW5uZWxDb3VudCA9
IDI7CisgICAgbV9jaGFubmVsQ291bnRNb2RlID0gQ2xhbXBlZE1heDsKKyAgICBtX2NoYW5uZWxJ
bnRlcnByZXRhdGlvbiA9IEF1ZGlvQnVzOjpTcGVha2VyczsKKworICAgIG1fZGlzdGFuY2VHYWlu
ID0gQXVkaW9QYXJhbTo6Y3JlYXRlKGNvbnRleHQsICJkaXN0YW5jZUdhaW4iLCAxLjAsIDAuMCwg
MS4wKTsKKyAgICBtX2NvbmVHYWluID0gQXVkaW9QYXJhbTo6Y3JlYXRlKGNvbnRleHQsICJjb25l
R2FpbiIsIDEuMCwgMC4wLCAxLjApOworCisgICAgbV9wb3NpdGlvbiA9IEZsb2F0UG9pbnQzRCgw
LCAwLCAwKTsKKyAgICBtX29yaWVudGF0aW9uID0gRmxvYXRQb2ludDNEKDEsIDAsIDApOworICAg
IG1fdmVsb2NpdHkgPSBGbG9hdFBvaW50M0QoMCwgMCwgMCk7CisKKyAgICBpbml0aWFsaXplKCk7
Cit9CisKK1dlYktpdEF1ZGlvUGFubmVyTm9kZTo6fldlYktpdEF1ZGlvUGFubmVyTm9kZSgpCit7
CisgICAgdW5pbml0aWFsaXplKCk7Cit9CisKK3ZvaWQgV2ViS2l0QXVkaW9QYW5uZXJOb2RlOjpw
dWxsSW5wdXRzKHNpemVfdCBmcmFtZXNUb1Byb2Nlc3MpCit7CisgICAgLy8gV2Ugb3ZlcnJpZGUg
cHVsbElucHV0cygpLCBzbyB3ZSBjYW4gZGV0ZWN0IG5ldyBBdWRpb1NvdXJjZU5vZGVzIHdoaWNo
IGhhdmUgY29ubmVjdGVkIHRvIHVzIHdoZW4gbmV3IGNvbm5lY3Rpb25zIGFyZSBtYWRlLgorICAg
IC8vIFRoZXNlIEF1ZGlvU291cmNlTm9kZXMgbmVlZCB0byBiZSBtYWRlIGF3YXJlIG9mIG91ciBl
eGlzdGVuY2UgaW4gb3JkZXIgdG8gaGFuZGxlIGRvcHBsZXIgc2hpZnQgcGl0Y2ggY2hhbmdlcy4K
KyAgICBpZiAobV9jb25uZWN0aW9uQ291bnQgIT0gY29udGV4dCgpLmNvbm5lY3Rpb25Db3VudCgp
KSB7CisgICAgICAgIG1fY29ubmVjdGlvbkNvdW50ID0gY29udGV4dCgpLmNvbm5lY3Rpb25Db3Vu
dCgpOworCisgICAgICAgIC8vIFJlY3Vyc2l2ZWx5IGdvIHRocm91Z2ggYWxsIG5vZGVzIGNvbm5l
Y3RlZCB0byB1cy4KKyAgICAgICAgSGFzaFNldDxBdWRpb05vZGUqPiB2aXNpdGVkTm9kZXM7Cisg
ICAgICAgIG5vdGlmeUF1ZGlvU291cmNlc0Nvbm5lY3RlZFRvTm9kZSh0aGlzLCB2aXNpdGVkTm9k
ZXMpOworICAgIH0KKworICAgIEF1ZGlvTm9kZTo6cHVsbElucHV0cyhmcmFtZXNUb1Byb2Nlc3Mp
OworfQorCit2b2lkIFdlYktpdEF1ZGlvUGFubmVyTm9kZTo6cHJvY2VzcyhzaXplX3QgZnJhbWVz
VG9Qcm9jZXNzKQoreworICAgIEF1ZGlvQnVzKiBkZXN0aW5hdGlvbiA9IG91dHB1dCgwKS0+YnVz
KCk7CisKKyAgICBpZiAoIWlzSW5pdGlhbGl6ZWQoKSB8fCAhaW5wdXQoMCktPmlzQ29ubmVjdGVk
KCkgfHwgIW1fcGFubmVyLmdldCgpKSB7CisgICAgICAgIGRlc3RpbmF0aW9uLT56ZXJvKCk7Cisg
ICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBBdWRpb0J1cyogc291cmNlID0gaW5wdXQoMCkt
PmJ1cygpOworICAgIGlmICghc291cmNlKSB7CisgICAgICAgIGRlc3RpbmF0aW9uLT56ZXJvKCk7
CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICAvLyBIUlRGRGF0YWJhc2Ugc2hvdWxkIGJl
IGxvYWRlZCBiZWZvcmUgcHJvY2VlZGluZyBmb3Igb2ZmbGluZSBhdWRpbyBjb250ZXh0IHdoZW4g
cGFubmluZ01vZGVsKCkgaXMgIkhSVEYiLgorICAgIGlmIChwYW5uaW5nTW9kZWwoKSA9PSBQYW5u
aW5nTW9kZWxUeXBlOjpIUlRGICYmICFtX2hydGZEYXRhYmFzZUxvYWRlci0+aXNMb2FkZWQoKSkg
eworICAgICAgICBpZiAoY29udGV4dCgpLmlzT2ZmbGluZUNvbnRleHQoKSkKKyAgICAgICAgICAg
IG1faHJ0ZkRhdGFiYXNlTG9hZGVyLT53YWl0Rm9yTG9hZGVyVGhyZWFkQ29tcGxldGlvbigpOwor
ICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIGRlc3RpbmF0aW9uLT56ZXJvKCk7CisgICAgICAg
ICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvLyBUaGUgYXVkaW8gdGhyZWFk
IGNhbid0IGJsb2NrIG9uIHRoaXMgbG9jaywgc28gd2UgdXNlIHN0ZDo6dHJ5X3RvX2xvY2sgaW5z
dGVhZC4KKyAgICBzdGQ6OnVuaXF1ZV9sb2NrPExvY2s+IGxvY2sobV9wYW5uZXJNdXRleCwgc3Rk
Ojp0cnlfdG9fbG9jayk7CisgICAgaWYgKCFsb2NrLm93bnNfbG9jaygpKSB7CisgICAgICAgIC8v
IFRvbyBiYWQgLSBUaGUgdHJ5X2xvY2soKSBmYWlsZWQuIFdlIG11c3QgYmUgaW4gdGhlIG1pZGRs
ZSBvZiBjaGFuZ2luZyB0aGUgcGFubmVyLgorICAgICAgICBkZXN0aW5hdGlvbi0+emVybygpOwor
ICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgLy8gQXBwbHkgdGhlIHBhbm5pbmcgZWZmZWN0
LgorICAgIGRvdWJsZSBhemltdXRoOworICAgIGRvdWJsZSBlbGV2YXRpb247CisgICAgZ2V0QXpp
bXV0aEVsZXZhdGlvbigmYXppbXV0aCwgJmVsZXZhdGlvbik7CisgICAgbV9wYW5uZXItPnBhbihh
emltdXRoLCBlbGV2YXRpb24sIHNvdXJjZSwgZGVzdGluYXRpb24sIGZyYW1lc1RvUHJvY2Vzcyk7
CisKKyAgICAvLyBHZXQgdGhlIGRpc3RhbmNlIGFuZCBjb25lIGdhaW4uCisgICAgZG91YmxlIHRv
dGFsR2FpbiA9IGRpc3RhbmNlQ29uZUdhaW4oKTsKKworICAgIC8vIFNuYXAgdG8gZGVzaXJlZCBn
YWluIGF0IHRoZSBiZWdpbm5pbmcuCisgICAgaWYgKG1fbGFzdEdhaW4gPT0gLTEuMCkKKyAgICAg
ICAgbV9sYXN0R2FpbiA9IHRvdGFsR2FpbjsKKworICAgIC8vIEFwcGx5IGdhaW4gaW4tcGxhY2Ug
d2l0aCBkZS16aXBwZXJpbmcuCisgICAgZGVzdGluYXRpb24tPmNvcHlXaXRoR2FpbkZyb20oKmRl
c3RpbmF0aW9uLCAmbV9sYXN0R2FpbiwgdG90YWxHYWluKTsKK30KKwordm9pZCBXZWJLaXRBdWRp
b1Bhbm5lck5vZGU6OnJlc2V0KCkKK3sKKyAgICBtX2xhc3RHYWluID0gLTEuMDsgLy8gZm9yY2Ug
dG8gc25hcCB0byBpbml0aWFsIGdhaW4KKyAgICBpZiAobV9wYW5uZXIuZ2V0KCkpCisgICAgICAg
IG1fcGFubmVyLT5yZXNldCgpOworfQorCit2b2lkIFdlYktpdEF1ZGlvUGFubmVyTm9kZTo6aW5p
dGlhbGl6ZSgpCit7CisgICAgaWYgKGlzSW5pdGlhbGl6ZWQoKSkKKyAgICAgICAgcmV0dXJuOwor
CisgICAgbV9wYW5uZXIgPSBQYW5uZXI6OmNyZWF0ZShtX3Bhbm5pbmdNb2RlbCwgc2FtcGxlUmF0
ZSgpLCBtX2hydGZEYXRhYmFzZUxvYWRlci5nZXQoKSk7CisKKyAgICBBdWRpb05vZGU6OmluaXRp
YWxpemUoKTsKK30KKwordm9pZCBXZWJLaXRBdWRpb1Bhbm5lck5vZGU6OnVuaW5pdGlhbGl6ZSgp
Cit7CisgICAgaWYgKCFpc0luaXRpYWxpemVkKCkpCisgICAgICAgIHJldHVybjsKKworICAgIG1f
cGFubmVyID0gbnVsbHB0cjsKKyAgICBBdWRpb05vZGU6OnVuaW5pdGlhbGl6ZSgpOworfQorCitB
dWRpb0xpc3RlbmVyKiBXZWJLaXRBdWRpb1Bhbm5lck5vZGU6Omxpc3RlbmVyKCkKK3sKKyAgICBy
ZXR1cm4gY29udGV4dCgpLmxpc3RlbmVyKCk7Cit9CisKK3ZvaWQgV2ViS2l0QXVkaW9QYW5uZXJO
b2RlOjpzZXRQYW5uaW5nTW9kZWwoUGFubmluZ01vZGVsVHlwZSBtb2RlbCkKK3sKKyAgICBpZiAo
IW1fcGFubmVyLmdldCgpIHx8IG1vZGVsICE9IG1fcGFubmluZ01vZGVsKSB7CisgICAgICAgIC8v
IFRoaXMgc3luY2hyb25pemVzIHdpdGggcHJvY2VzcygpLgorICAgICAgICBhdXRvIGxvY2tlciA9
IGhvbGRMb2NrKG1fcGFubmVyTXV0ZXgpOworCisgICAgICAgIG1fcGFubmVyID0gUGFubmVyOjpj
cmVhdGUobW9kZWwsIHNhbXBsZVJhdGUoKSwgbV9ocnRmRGF0YWJhc2VMb2FkZXIuZ2V0KCkpOwor
ICAgICAgICBtX3Bhbm5pbmdNb2RlbCA9IG1vZGVsOworICAgIH0KK30KKworRGlzdGFuY2VNb2Rl
bFR5cGUgV2ViS2l0QXVkaW9QYW5uZXJOb2RlOjpkaXN0YW5jZU1vZGVsKCkgY29uc3QKK3sKKyAg
ICByZXR1cm4gY29uc3RfY2FzdDxXZWJLaXRBdWRpb1Bhbm5lck5vZGUqPih0aGlzKS0+bV9kaXN0
YW5jZUVmZmVjdC5tb2RlbCgpOworfQorCit2b2lkIFdlYktpdEF1ZGlvUGFubmVyTm9kZTo6c2V0
RGlzdGFuY2VNb2RlbChEaXN0YW5jZU1vZGVsVHlwZSBtb2RlbCkKK3sKKyAgICBtX2Rpc3RhbmNl
RWZmZWN0LnNldE1vZGVsKG1vZGVsLCB0cnVlKTsKK30KKwordm9pZCBXZWJLaXRBdWRpb1Bhbm5l
ck5vZGU6OmdldEF6aW11dGhFbGV2YXRpb24oZG91YmxlKiBvdXRBemltdXRoLCBkb3VibGUqIG91
dEVsZXZhdGlvbikKK3sKKyAgICAvLyBGSVhNRTogd2Ugc2hvdWxkIGNhY2hlIGF6aW11dGggYW5k
IGVsZXZhdGlvbiAoaWYgcG9zc2libGUpLCBzbyB3ZSBvbmx5IHJlLWNhbGN1bGF0ZSBpZiBhIGNo
YW5nZSBoYXMgYmVlbiBtYWRlLgorCisgICAgZG91YmxlIGF6aW11dGggPSAwLjA7CisKKyAgICAv
LyBDYWxjdWxhdGUgdGhlIHNvdXJjZS1saXN0ZW5lciB2ZWN0b3IKKyAgICBGbG9hdFBvaW50M0Qg
bGlzdGVuZXJQb3NpdGlvbiA9IGxpc3RlbmVyKCktPnBvc2l0aW9uKCk7CisgICAgRmxvYXRQb2lu
dDNEIHNvdXJjZUxpc3RlbmVyID0gcG9zaXRpb24oKSAtIGxpc3RlbmVyUG9zaXRpb247CisKKyAg
ICBpZiAoc291cmNlTGlzdGVuZXIuaXNaZXJvKCkpIHsKKyAgICAgICAgLy8gZGVnZW5lcmF0ZSBj
YXNlIGlmIHNvdXJjZSBhbmQgbGlzdGVuZXIgYXJlIGF0IHRoZSBzYW1lIHBvaW50CisgICAgICAg
ICpvdXRBemltdXRoID0gMC4wOworICAgICAgICAqb3V0RWxldmF0aW9uID0gMC4wOworICAgICAg
ICByZXR1cm47CisgICAgfQorCisgICAgc291cmNlTGlzdGVuZXIubm9ybWFsaXplKCk7CisKKyAg
ICAvLyBBbGlnbiBheGVzCisgICAgRmxvYXRQb2ludDNEIGxpc3RlbmVyRnJvbnQgPSBsaXN0ZW5l
cigpLT5vcmllbnRhdGlvbigpOworICAgIEZsb2F0UG9pbnQzRCBsaXN0ZW5lclVwID0gbGlzdGVu
ZXIoKS0+dXBWZWN0b3IoKTsKKyAgICBGbG9hdFBvaW50M0QgbGlzdGVuZXJSaWdodCA9IGxpc3Rl
bmVyRnJvbnQuY3Jvc3MobGlzdGVuZXJVcCk7CisgICAgbGlzdGVuZXJSaWdodC5ub3JtYWxpemUo
KTsKKworICAgIEZsb2F0UG9pbnQzRCBsaXN0ZW5lckZyb250Tm9ybSA9IGxpc3RlbmVyRnJvbnQ7
CisgICAgbGlzdGVuZXJGcm9udE5vcm0ubm9ybWFsaXplKCk7CisKKyAgICBGbG9hdFBvaW50M0Qg
dXAgPSBsaXN0ZW5lclJpZ2h0LmNyb3NzKGxpc3RlbmVyRnJvbnROb3JtKTsKKworICAgIGZsb2F0
IHVwUHJvamVjdGlvbiA9IHNvdXJjZUxpc3RlbmVyLmRvdCh1cCk7CisKKyAgICBGbG9hdFBvaW50
M0QgcHJvamVjdGVkU291cmNlID0gc291cmNlTGlzdGVuZXIgLSB1cFByb2plY3Rpb24gKiB1cDsK
KyAgICBwcm9qZWN0ZWRTb3VyY2Uubm9ybWFsaXplKCk7CisKKyAgICBhemltdXRoID0gMTgwLjAg
KiBhY29zKHByb2plY3RlZFNvdXJjZS5kb3QobGlzdGVuZXJSaWdodCkpIC8gcGlEb3VibGU7Cisg
ICAgZml4TkFOcyhhemltdXRoKTsgLy8gYXZvaWQgaWxsZWdhbCB2YWx1ZXMKKworICAgIC8vIFNv
dXJjZSAgaW4gZnJvbnQgb3IgYmVoaW5kIHRoZSBsaXN0ZW5lcgorICAgIGRvdWJsZSBmcm9udEJh
Y2sgPSBwcm9qZWN0ZWRTb3VyY2UuZG90KGxpc3RlbmVyRnJvbnROb3JtKTsKKyAgICBpZiAoZnJv
bnRCYWNrIDwgMC4wKQorICAgICAgICBhemltdXRoID0gMzYwLjAgLSBhemltdXRoOworCisgICAg
Ly8gTWFrZSBhemltdXRoIHJlbGF0aXZlIHRvICJmcm9udCIgYW5kIG5vdCAicmlnaHQiIGxpc3Rl
bmVyIHZlY3RvcgorICAgIGlmICgoYXppbXV0aCA+PSAwLjApICYmIChhemltdXRoIDw9IDI3MC4w
KSkKKyAgICAgICAgYXppbXV0aCA9IDkwLjAgLSBhemltdXRoOworICAgIGVsc2UKKyAgICAgICAg
YXppbXV0aCA9IDQ1MC4wIC0gYXppbXV0aDsKKworICAgIC8vIEVsZXZhdGlvbgorICAgIGRvdWJs
ZSBlbGV2YXRpb24gPSA5MC4wIC0gMTgwLjAgKiBhY29zKHNvdXJjZUxpc3RlbmVyLmRvdCh1cCkp
IC8gcGlEb3VibGU7CisgICAgZml4TkFOcyhlbGV2YXRpb24pOyAvLyBhdm9pZCBpbGxlZ2FsIHZh
bHVlcworCisgICAgaWYgKGVsZXZhdGlvbiA+IDkwLjApCisgICAgICAgIGVsZXZhdGlvbiA9IDE4
MC4wIC0gZWxldmF0aW9uOworICAgIGVsc2UgaWYgKGVsZXZhdGlvbiA8IC05MC4wKQorICAgICAg
ICBlbGV2YXRpb24gPSAtMTgwLjAgLSBlbGV2YXRpb247CisKKyAgICBpZiAob3V0QXppbXV0aCkK
KyAgICAgICAgKm91dEF6aW11dGggPSBhemltdXRoOworICAgIGlmIChvdXRFbGV2YXRpb24pCisg
ICAgICAgICpvdXRFbGV2YXRpb24gPSBlbGV2YXRpb247Cit9CisKK2Zsb2F0IFdlYktpdEF1ZGlv
UGFubmVyTm9kZTo6ZG9wcGxlclJhdGUoKQoreworICAgIGRvdWJsZSBkb3BwbGVyU2hpZnQgPSAx
LjA7CisKKyAgICAvLyBGSVhNRTogb3B0aW1pemUgZm9yIGNhc2Ugd2hlbiBuZWl0aGVyIHNvdXJj
ZSBub3IgbGlzdGVuZXIgaGFzIGNoYW5nZWQuLi4KKyAgICBkb3VibGUgZG9wcGxlckZhY3RvciA9
IGxpc3RlbmVyKCktPmRvcHBsZXJGYWN0b3IoKTsKKworICAgIGlmIChkb3BwbGVyRmFjdG9yID4g
MC4wKSB7CisgICAgICAgIGRvdWJsZSBzcGVlZE9mU291bmQgPSBsaXN0ZW5lcigpLT5zcGVlZE9m
U291bmQoKTsKKworICAgICAgICBjb25zdCBGbG9hdFBvaW50M0QgJnNvdXJjZVZlbG9jaXR5ID0g
bV92ZWxvY2l0eTsKKyAgICAgICAgY29uc3QgRmxvYXRQb2ludDNEICZsaXN0ZW5lclZlbG9jaXR5
ID0gbGlzdGVuZXIoKS0+dmVsb2NpdHkoKTsKKworICAgICAgICAvLyBEb24ndCBib3RoZXIgaWYg
Ym90aCBzb3VyY2UgYW5kIGxpc3RlbmVyIGhhdmUgbm8gdmVsb2NpdHkKKyAgICAgICAgYm9vbCBz
b3VyY2VIYXNWZWxvY2l0eSA9ICFzb3VyY2VWZWxvY2l0eS5pc1plcm8oKTsKKyAgICAgICAgYm9v
bCBsaXN0ZW5lckhhc1ZlbG9jaXR5ID0gIWxpc3RlbmVyVmVsb2NpdHkuaXNaZXJvKCk7CisKKyAg
ICAgICAgaWYgKHNvdXJjZUhhc1ZlbG9jaXR5IHx8IGxpc3RlbmVySGFzVmVsb2NpdHkpIHsKKyAg
ICAgICAgICAgIC8vIENhbGN1bGF0ZSB0aGUgc291cmNlIHRvIGxpc3RlbmVyIHZlY3RvcgorICAg
ICAgICAgICAgRmxvYXRQb2ludDNEIGxpc3RlbmVyUG9zaXRpb24gPSBsaXN0ZW5lcigpLT5wb3Np
dGlvbigpOworICAgICAgICAgICAgRmxvYXRQb2ludDNEIHNvdXJjZVRvTGlzdGVuZXIgPSBwb3Np
dGlvbigpIC0gbGlzdGVuZXJQb3NpdGlvbjsKKworICAgICAgICAgICAgZG91YmxlIHNvdXJjZUxp
c3RlbmVyTWFnbml0dWRlID0gc291cmNlVG9MaXN0ZW5lci5sZW5ndGgoKTsKKworICAgICAgICAg
ICAgZG91YmxlIGxpc3RlbmVyUHJvamVjdGlvbiA9IHNvdXJjZVRvTGlzdGVuZXIuZG90KGxpc3Rl
bmVyVmVsb2NpdHkpIC8gc291cmNlTGlzdGVuZXJNYWduaXR1ZGU7CisgICAgICAgICAgICBkb3Vi
bGUgc291cmNlUHJvamVjdGlvbiA9IHNvdXJjZVRvTGlzdGVuZXIuZG90KHNvdXJjZVZlbG9jaXR5
KSAvIHNvdXJjZUxpc3RlbmVyTWFnbml0dWRlOworCisgICAgICAgICAgICBsaXN0ZW5lclByb2pl
Y3Rpb24gPSAtbGlzdGVuZXJQcm9qZWN0aW9uOworICAgICAgICAgICAgc291cmNlUHJvamVjdGlv
biA9IC1zb3VyY2VQcm9qZWN0aW9uOworCisgICAgICAgICAgICBkb3VibGUgc2NhbGVkU3BlZWRP
ZlNvdW5kID0gc3BlZWRPZlNvdW5kIC8gZG9wcGxlckZhY3RvcjsKKyAgICAgICAgICAgIGxpc3Rl
bmVyUHJvamVjdGlvbiA9IHN0ZDo6bWluKGxpc3RlbmVyUHJvamVjdGlvbiwgc2NhbGVkU3BlZWRP
ZlNvdW5kKTsKKyAgICAgICAgICAgIHNvdXJjZVByb2plY3Rpb24gPSBzdGQ6Om1pbihzb3VyY2VQ
cm9qZWN0aW9uLCBzY2FsZWRTcGVlZE9mU291bmQpOworCisgICAgICAgICAgICBkb3BwbGVyU2hp
ZnQgPSAoKHNwZWVkT2ZTb3VuZCAtIGRvcHBsZXJGYWN0b3IgKiBsaXN0ZW5lclByb2plY3Rpb24p
IC8gKHNwZWVkT2ZTb3VuZCAtIGRvcHBsZXJGYWN0b3IgKiBzb3VyY2VQcm9qZWN0aW9uKSk7Cisg
ICAgICAgICAgICBmaXhOQU5zKGRvcHBsZXJTaGlmdCk7IC8vIGF2b2lkIGlsbGVnYWwgdmFsdWVz
CisKKyAgICAgICAgICAgIC8vIExpbWl0IHRoZSBwaXRjaCBzaGlmdGluZyB0byA0IG9jdGF2ZXMg
dXAgYW5kIDMgb2N0YXZlcyBkb3duLgorICAgICAgICAgICAgaWYgKGRvcHBsZXJTaGlmdCA+IDE2
LjApCisgICAgICAgICAgICAgICAgZG9wcGxlclNoaWZ0ID0gMTYuMDsKKyAgICAgICAgICAgIGVs
c2UgaWYgKGRvcHBsZXJTaGlmdCA8IDAuMTI1KQorICAgICAgICAgICAgICAgIGRvcHBsZXJTaGlm
dCA9IDAuMTI1OworICAgICAgICB9CisgICAgfQorCisgICAgcmV0dXJuIHN0YXRpY19jYXN0PGZs
b2F0Pihkb3BwbGVyU2hpZnQpOworfQorCitmbG9hdCBXZWJLaXRBdWRpb1Bhbm5lck5vZGU6OmRp
c3RhbmNlQ29uZUdhaW4oKQoreworICAgIEZsb2F0UG9pbnQzRCBsaXN0ZW5lclBvc2l0aW9uID0g
bGlzdGVuZXIoKS0+cG9zaXRpb24oKTsKKyAgICBGbG9hdFBvaW50M0Qgc291cmNlUG9zaXRpb24g
PSBwb3NpdGlvbigpOworCisgICAgZG91YmxlIGxpc3RlbmVyRGlzdGFuY2UgPSBzb3VyY2VQb3Np
dGlvbi5kaXN0YW5jZVRvKGxpc3RlbmVyUG9zaXRpb24pOworICAgIGRvdWJsZSBkaXN0YW5jZUdh
aW4gPSBtX2Rpc3RhbmNlRWZmZWN0LmdhaW4obGlzdGVuZXJEaXN0YW5jZSk7CisKKyAgICBtX2Rp
c3RhbmNlR2Fpbi0+c2V0VmFsdWUoc3RhdGljX2Nhc3Q8ZmxvYXQ+KGRpc3RhbmNlR2FpbikpOwor
CisgICAgLy8gRklYTUU6IGNvdWxkIG9wdGltaXplIGJ5IGNhY2hpbmcgY29uZUdhaW4KKyAgICBk
b3VibGUgY29uZUdhaW4gPSBtX2NvbmVFZmZlY3QuZ2Fpbihzb3VyY2VQb3NpdGlvbiwgbV9vcmll
bnRhdGlvbiwgbGlzdGVuZXJQb3NpdGlvbik7CisKKyAgICBtX2NvbmVHYWluLT5zZXRWYWx1ZShz
dGF0aWNfY2FzdDxmbG9hdD4oY29uZUdhaW4pKTsKKworICAgIHJldHVybiBmbG9hdChkaXN0YW5j
ZUdhaW4gKiBjb25lR2Fpbik7Cit9CisKK3ZvaWQgV2ViS2l0QXVkaW9QYW5uZXJOb2RlOjpub3Rp
ZnlBdWRpb1NvdXJjZXNDb25uZWN0ZWRUb05vZGUoQXVkaW9Ob2RlKiBub2RlLCBIYXNoU2V0PEF1
ZGlvTm9kZSo+JiB2aXNpdGVkTm9kZXMpCit7CisgICAgQVNTRVJUKG5vZGUpOworICAgIGlmICgh
bm9kZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgLy8gRmlyc3QgY2hlY2sgaWYgdGhpcyBub2Rl
IGlzIGFuIEF1ZGlvQnVmZmVyU291cmNlTm9kZS4gSWYgc28sIGxldCBpdCBrbm93IGFib3V0IHVz
IHNvIHRoYXQgZG9wcGxlciBzaGlmdCBwaXRjaCBjYW4gYmUgdGFrZW4gaW50byBhY2NvdW50Lgor
ICAgIGlmIChub2RlLT5ub2RlVHlwZSgpID09IE5vZGVUeXBlQXVkaW9CdWZmZXJTb3VyY2UpIHsK
KyAgICAgICAgQXVkaW9CdWZmZXJTb3VyY2VOb2RlKiBidWZmZXJTb3VyY2VOb2RlID0gcmVpbnRl
cnByZXRfY2FzdDxBdWRpb0J1ZmZlclNvdXJjZU5vZGUqPihub2RlKTsKKyAgICAgICAgYnVmZmVy
U291cmNlTm9kZS0+c2V0UGFubmVyTm9kZSh0aGlzKTsKKyAgICB9IGVsc2UgeworICAgICAgICAv
LyBHbyB0aHJvdWdoIGFsbCBpbnB1dHMgdG8gdGhpcyBub2RlLgorICAgICAgICBmb3IgKHVuc2ln
bmVkIGkgPSAwOyBpIDwgbm9kZS0+bnVtYmVyT2ZJbnB1dHMoKTsgKytpKSB7CisgICAgICAgICAg
ICBBdWRpb05vZGVJbnB1dCogaW5wdXQgPSBub2RlLT5pbnB1dChpKTsKKworICAgICAgICAgICAg
Ly8gRm9yIGVhY2ggaW5wdXQsIGdvIHRocm91Z2ggYWxsIG9mIGl0cyBjb25uZWN0aW9ucywgbG9v
a2luZyBmb3IgQXVkaW9CdWZmZXJTb3VyY2VOb2Rlcy4KKyAgICAgICAgICAgIGZvciAodW5zaWdu
ZWQgaiA9IDA7IGogPCBpbnB1dC0+bnVtYmVyT2ZSZW5kZXJpbmdDb25uZWN0aW9ucygpOyArK2op
IHsKKyAgICAgICAgICAgICAgICBBdWRpb05vZGVPdXRwdXQqIGNvbm5lY3RlZE91dHB1dCA9IGlu
cHV0LT5yZW5kZXJpbmdPdXRwdXQoaik7CisgICAgICAgICAgICAgICAgQXVkaW9Ob2RlKiBjb25u
ZWN0ZWROb2RlID0gY29ubmVjdGVkT3V0cHV0LT5ub2RlKCk7CisgICAgICAgICAgICAgICAgaWYg
KHZpc2l0ZWROb2Rlcy5jb250YWlucyhjb25uZWN0ZWROb2RlKSkKKyAgICAgICAgICAgICAgICAg
ICAgY29udGludWU7CisKKyAgICAgICAgICAgICAgICB2aXNpdGVkTm9kZXMuYWRkKGNvbm5lY3Rl
ZE5vZGUpOworICAgICAgICAgICAgICAgIG5vdGlmeUF1ZGlvU291cmNlc0Nvbm5lY3RlZFRvTm9k
ZShjb25uZWN0ZWROb2RlLCB2aXNpdGVkTm9kZXMpOworICAgICAgICAgICAgfQorICAgICAgICB9
CisgICAgfQorfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUo
V0VCX0FVRElPKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9X
ZWJLaXRBdWRpb1Bhbm5lck5vZGUuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8v
V2ViS2l0QXVkaW9QYW5uZXJOb2RlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAuLjg5Nzk3YzNjNGM1Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJhdWRpby9XZWJLaXRBdWRpb1Bhbm5lck5vZGUuaApAQCAtMCwwICsxLDE2MCBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCwgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuICBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUg
SU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OCisgKiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKKyAq
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKFdFQl9BVURJTykKKworI2lu
Y2x1ZGUgIkF1ZGlvTGlzdGVuZXIuaCIKKyNpbmNsdWRlICJBdWRpb05vZGUuaCIKKyNpbmNsdWRl
ICJBdWRpb1BhcmFtLmgiCisjaW5jbHVkZSAiQ29uZS5oIgorI2luY2x1ZGUgIkRpc3RhbmNlLmgi
CisjaW5jbHVkZSAiRmxvYXRQb2ludDNELmgiCisjaW5jbHVkZSAiUGFubmVyLmgiCisjaW5jbHVk
ZSAiUGFubmVyTm9kZS5oIgorI2luY2x1ZGUgIldlYktpdEF1ZGlvQ29udGV4dC5oIgorI2luY2x1
ZGUgPG1lbW9yeT4KKyNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgorI2luY2x1ZGUgPHd0Zi9Mb2Nr
Lmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgSFJURkRhdGFiYXNlTG9hZGVyOwor
CisvLyBQYW5uZXJOb2RlIGlzIGFuIEF1ZGlvTm9kZSB3aXRoIG9uZSBpbnB1dCBhbmQgb25lIG91
dHB1dC4KKy8vIEl0IHBvc2l0aW9ucyBhIHNvdW5kIGluIDNEIHNwYWNlLCB3aXRoIHRoZSBleGFj
dCBlZmZlY3QgZGVwZW5kZW50IG9uIHRoZSBwYW5uaW5nIG1vZGVsLgorLy8gSXQgaGFzIGEgcG9z
aXRpb24gYW5kIGFuIG9yaWVudGF0aW9uIGluIDNEIHNwYWNlIHdoaWNoIGlzIHJlbGF0aXZlIHRv
IHRoZSBwb3NpdGlvbiBhbmQgb3JpZW50YXRpb24gb2YgdGhlIGNvbnRleHQncyBBdWRpb0xpc3Rl
bmVyLgorLy8gQSBkaXN0YW5jZSBlZmZlY3Qgd2lsbCBhdHRlbnVhdGUgdGhlIGdhaW4gYXMgdGhl
IHBvc2l0aW9uIG1vdmVzIGF3YXkgZnJvbSB0aGUgbGlzdGVuZXIuCisvLyBBIGNvbmUgZWZmZWN0
IHdpbGwgYXR0ZW51YXRlIHRoZSBnYWluIGFzIHRoZSBvcmllbnRhdGlvbiBtb3ZlcyBhd2F5IGZy
b20gdGhlIGxpc3RlbmVyLgorLy8gQWxsIG9mIHRoZXNlIGVmZmVjdHMgZm9sbG93IHRoZSBPcGVu
QUwgc3BlY2lmaWNhdGlvbiB2ZXJ5IGNsb3NlbHkuCisKK2NsYXNzIFdlYktpdEF1ZGlvUGFubmVy
Tm9kZSBmaW5hbCA6IHB1YmxpYyBQYW5uZXJOb2RlQmFzZSB7CisgICAgV1RGX01BS0VfSVNPX0FM
TE9DQVRFRChXZWJLaXRBdWRpb1Bhbm5lck5vZGUpOworcHVibGljOgorICAgIHN0YXRpYyBSZWY8
V2ViS2l0QXVkaW9QYW5uZXJOb2RlPiBjcmVhdGUoV2ViS2l0QXVkaW9Db250ZXh0JiBjb250ZXh0
LCBmbG9hdCBzYW1wbGVSYXRlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcg
V2ViS2l0QXVkaW9QYW5uZXJOb2RlKGNvbnRleHQsIHNhbXBsZVJhdGUpKTsKKyAgICB9CisKKyAg
ICB2aXJ0dWFsIH5XZWJLaXRBdWRpb1Bhbm5lck5vZGUoKTsKKworICAgIFdlYktpdEF1ZGlvQ29u
dGV4dCYgY29udGV4dCgpIHsgcmV0dXJuIGRvd25jYXN0PFdlYktpdEF1ZGlvQ29udGV4dD4oQXVk
aW9Ob2RlOjpjb250ZXh0KCkpOyB9CisgICAgY29uc3QgV2ViS2l0QXVkaW9Db250ZXh0JiBjb250
ZXh0KCkgY29uc3QgeyByZXR1cm4gZG93bmNhc3Q8V2ViS2l0QXVkaW9Db250ZXh0PihBdWRpb05v
ZGU6OmNvbnRleHQoKSk7IH0KKworICAgIC8vIEF1ZGlvTm9kZQorICAgIHZvaWQgcHJvY2Vzcyhz
aXplX3QgZnJhbWVzVG9Qcm9jZXNzKSBvdmVycmlkZTsKKyAgICB2b2lkIHB1bGxJbnB1dHMoc2l6
ZV90IGZyYW1lc1RvUHJvY2Vzcykgb3ZlcnJpZGU7CisgICAgdm9pZCByZXNldCgpIG92ZXJyaWRl
OworICAgIHZvaWQgaW5pdGlhbGl6ZSgpIG92ZXJyaWRlOworICAgIHZvaWQgdW5pbml0aWFsaXpl
KCkgb3ZlcnJpZGU7CisKKyAgICAvLyBMaXN0ZW5lcgorICAgIEF1ZGlvTGlzdGVuZXIqIGxpc3Rl
bmVyKCk7CisKKyAgICAvLyBQYW5uaW5nIG1vZGVsCisgICAgUGFubmluZ01vZGVsVHlwZSBwYW5u
aW5nTW9kZWwoKSBjb25zdCB7IHJldHVybiBtX3Bhbm5pbmdNb2RlbDsgfQorICAgIHZvaWQgc2V0
UGFubmluZ01vZGVsKFBhbm5pbmdNb2RlbFR5cGUpOworCisgICAgLy8gUG9zaXRpb24KKyAgICBG
bG9hdFBvaW50M0QgcG9zaXRpb24oKSBjb25zdCB7IHJldHVybiBtX3Bvc2l0aW9uOyB9CisgICAg
dm9pZCBzZXRQb3NpdGlvbihmbG9hdCB4LCBmbG9hdCB5LCBmbG9hdCB6KSB7IG1fcG9zaXRpb24g
PSBGbG9hdFBvaW50M0QoeCwgeSwgeik7IH0KKworICAgIC8vIE9yaWVudGF0aW9uCisgICAgRmxv
YXRQb2ludDNEIG9yaWVudGF0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9vcmllbnRhdGlvbjsgfQor
ICAgIHZvaWQgc2V0T3JpZW50YXRpb24oZmxvYXQgeCwgZmxvYXQgeSwgZmxvYXQgeikgeyBtX29y
aWVudGF0aW9uID0gRmxvYXRQb2ludDNEKHgsIHksIHopOyB9CisKKyAgICAvLyBWZWxvY2l0eQor
ICAgIEZsb2F0UG9pbnQzRCB2ZWxvY2l0eSgpIGNvbnN0IHsgcmV0dXJuIG1fdmVsb2NpdHk7IH0K
KyAgICB2b2lkIHNldFZlbG9jaXR5KGZsb2F0IHgsIGZsb2F0IHksIGZsb2F0IHopIHsgbV92ZWxv
Y2l0eSA9IEZsb2F0UG9pbnQzRCh4LCB5LCB6KTsgfQorCisgICAgLy8gRGlzdGFuY2UgcGFyYW1l
dGVycworICAgIERpc3RhbmNlTW9kZWxUeXBlIGRpc3RhbmNlTW9kZWwoKSBjb25zdDsKKyAgICB2
b2lkIHNldERpc3RhbmNlTW9kZWwoRGlzdGFuY2VNb2RlbFR5cGUpOworCisgICAgZG91YmxlIHJl
ZkRpc3RhbmNlKCkgeyByZXR1cm4gbV9kaXN0YW5jZUVmZmVjdC5yZWZEaXN0YW5jZSgpOyB9Cisg
ICAgdm9pZCBzZXRSZWZEaXN0YW5jZShkb3VibGUgcmVmRGlzdGFuY2UpIHsgbV9kaXN0YW5jZUVm
ZmVjdC5zZXRSZWZEaXN0YW5jZShyZWZEaXN0YW5jZSk7IH0KKworICAgIGRvdWJsZSBtYXhEaXN0
YW5jZSgpIHsgcmV0dXJuIG1fZGlzdGFuY2VFZmZlY3QubWF4RGlzdGFuY2UoKTsgfQorICAgIHZv
aWQgc2V0TWF4RGlzdGFuY2UoZG91YmxlIG1heERpc3RhbmNlKSB7IG1fZGlzdGFuY2VFZmZlY3Qu
c2V0TWF4RGlzdGFuY2UobWF4RGlzdGFuY2UpOyB9CisKKyAgICBkb3VibGUgcm9sbG9mZkZhY3Rv
cigpIHsgcmV0dXJuIG1fZGlzdGFuY2VFZmZlY3Qucm9sbG9mZkZhY3RvcigpOyB9CisgICAgdm9p
ZCBzZXRSb2xsb2ZmRmFjdG9yKGRvdWJsZSByb2xsb2ZmRmFjdG9yKSB7IG1fZGlzdGFuY2VFZmZl
Y3Quc2V0Um9sbG9mZkZhY3Rvcihyb2xsb2ZmRmFjdG9yKTsgfQorCisgICAgLy8gU291bmQgY29u
ZXMgLSBhbmdsZXMgaW4gZGVncmVlcworICAgIGRvdWJsZSBjb25lSW5uZXJBbmdsZSgpIGNvbnN0
IHsgcmV0dXJuIG1fY29uZUVmZmVjdC5pbm5lckFuZ2xlKCk7IH0KKyAgICB2b2lkIHNldENvbmVJ
bm5lckFuZ2xlKGRvdWJsZSBhbmdsZSkgeyBtX2NvbmVFZmZlY3Quc2V0SW5uZXJBbmdsZShhbmds
ZSk7IH0KKworICAgIGRvdWJsZSBjb25lT3V0ZXJBbmdsZSgpIGNvbnN0IHsgcmV0dXJuIG1fY29u
ZUVmZmVjdC5vdXRlckFuZ2xlKCk7IH0KKyAgICB2b2lkIHNldENvbmVPdXRlckFuZ2xlKGRvdWJs
ZSBhbmdsZSkgeyBtX2NvbmVFZmZlY3Quc2V0T3V0ZXJBbmdsZShhbmdsZSk7IH0KKworICAgIGRv
dWJsZSBjb25lT3V0ZXJHYWluKCkgY29uc3QgeyByZXR1cm4gbV9jb25lRWZmZWN0Lm91dGVyR2Fp
bigpOyB9CisgICAgdm9pZCBzZXRDb25lT3V0ZXJHYWluKGRvdWJsZSBhbmdsZSkgeyBtX2NvbmVF
ZmZlY3Quc2V0T3V0ZXJHYWluKGFuZ2xlKTsgfQorCisgICAgdm9pZCBnZXRBemltdXRoRWxldmF0
aW9uKGRvdWJsZSogb3V0QXppbXV0aCwgZG91YmxlKiBvdXRFbGV2YXRpb24pOworICAgIGZsb2F0
IGRvcHBsZXJSYXRlKCkgZmluYWw7CisKKyAgICAvLyBBY2Nlc3NvcnMgZm9yIGR5bmFtaWNhbGx5
IGNhbGN1bGF0ZWQgZ2FpbiB2YWx1ZXMuCisgICAgQXVkaW9QYXJhbSogZGlzdGFuY2VHYWluKCkg
eyByZXR1cm4gbV9kaXN0YW5jZUdhaW4uZ2V0KCk7IH0KKyAgICBBdWRpb1BhcmFtKiBjb25lR2Fp
bigpIHsgcmV0dXJuIG1fY29uZUdhaW4uZ2V0KCk7IH0KKworICAgIGRvdWJsZSB0YWlsVGltZSgp
IGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fcGFubmVyID8gbV9wYW5uZXItPnRhaWxUaW1lKCkg
OiAwOyB9CisgICAgZG91YmxlIGxhdGVuY3lUaW1lKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4g
bV9wYW5uZXIgPyBtX3Bhbm5lci0+bGF0ZW5jeVRpbWUoKSA6IDA7IH0KKworcHJpdmF0ZToKKyAg
ICBXZWJLaXRBdWRpb1Bhbm5lck5vZGUoV2ViS2l0QXVkaW9Db250ZXh0JiwgZmxvYXQgc2FtcGxl
UmF0ZSk7CisKKyAgICAvLyBSZXR1cm5zIHRoZSBjb21iaW5lZCBkaXN0YW5jZSBhbmQgY29uZSBn
YWluIGF0dGVudWF0aW9uLgorICAgIGZsb2F0IGRpc3RhbmNlQ29uZUdhaW4oKTsKKworICAgIC8v
IE5vdGlmaWVzIGFueSBBdWRpb0J1ZmZlclNvdXJjZU5vZGVzIGNvbm5lY3RlZCB0byB1cyBlaXRo
ZXIgZGlyZWN0bHkgb3IgaW5kaXJlY3RseSBhYm91dCBvdXIgZXhpc3RlbmNlLgorICAgIC8vIFRo
aXMgaXMgaW4gb3JkZXIgdG8gaGFuZGxlIHRoZSBwaXRjaCBjaGFuZ2UgbmVjZXNzYXJ5IGZvciB0
aGUgZG9wcGxlciBzaGlmdC4KKyAgICB2b2lkIG5vdGlmeUF1ZGlvU291cmNlc0Nvbm5lY3RlZFRv
Tm9kZShBdWRpb05vZGUqLCBIYXNoU2V0PEF1ZGlvTm9kZSo+JiB2aXNpdGVkTm9kZXMpOworCisg
ICAgc3RkOjp1bmlxdWVfcHRyPFBhbm5lcj4gbV9wYW5uZXI7CisgICAgUGFubmluZ01vZGVsVHlw
ZSBtX3Bhbm5pbmdNb2RlbDsKKworICAgIEZsb2F0UG9pbnQzRCBtX3Bvc2l0aW9uOworICAgIEZs
b2F0UG9pbnQzRCBtX29yaWVudGF0aW9uOworICAgIEZsb2F0UG9pbnQzRCBtX3ZlbG9jaXR5Owor
CisgICAgLy8gR2FpbgorICAgIFJlZlB0cjxBdWRpb1BhcmFtPiBtX2Rpc3RhbmNlR2FpbjsKKyAg
ICBSZWZQdHI8QXVkaW9QYXJhbT4gbV9jb25lR2FpbjsKKyAgICBEaXN0YW5jZUVmZmVjdCBtX2Rp
c3RhbmNlRWZmZWN0OworICAgIENvbmVFZmZlY3QgbV9jb25lRWZmZWN0OworICAgIGZsb2F0IG1f
bGFzdEdhaW47CisKKyAgICAvLyBIUlRGIERhdGFiYXNlIGxvYWRlcgorICAgIFJlZlB0cjxIUlRG
RGF0YWJhc2VMb2FkZXI+IG1faHJ0ZkRhdGFiYXNlTG9hZGVyOworCisgICAgdW5zaWduZWQgbV9j
b25uZWN0aW9uQ291bnQ7CisKKyAgICAvLyBTeW5jaHJvbml6ZSBwcm9jZXNzKCkgYW5kIHNldFBh
bm5pbmdNb2RlbCgpIHdoaWNoIGNhbiBjaGFuZ2UgdGhlIHBhbm5lci4KKyAgICBtdXRhYmxlIExv
Y2sgbV9wYW5uZXJNdXRleDsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlm
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1dlYktpdEF1ZGlv
UGFubmVyTm9kZS5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1dlYktpdEF1
ZGlvUGFubmVyTm9kZS5pZGwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAu
LmM0ZTliOTBiOWIzCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJhdWRpby9XZWJLaXRBdWRpb1Bhbm5lck5vZGUuaWRsCkBAIC0wLDAgKzEsNjYgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTAsIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiAgUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJ
RUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTgorICogQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTCisgKiBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCitbCisgICAgQ29uZGl0aW9uYWw9V0VCX0FVRElPLAorICAgIEltcGxlbWVudGVkQXM9
UGFubmluZ01vZGVsVHlwZQorXSBlbnVtIFBhbm5pbmdNb2RlbFR5cGUgeworICAgICJlcXVhbHBv
d2VyIiwKKyAgICAiSFJURiIKK307CisKK1sKKyAgICBDb25kaXRpb25hbD1XRUJfQVVESU8sCisg
ICAgSW1wbGVtZW50ZWRBcz1EaXN0YW5jZU1vZGVsVHlwZQorXSBlbnVtIERpc3RhbmNlTW9kZWxU
eXBlIHsKKyAgICAibGluZWFyIiwKKyAgICAiaW52ZXJzZSIsCisgICAgImV4cG9uZW50aWFsIgor
fTsKKworWworICAgIENvbmRpdGlvbmFsPVdFQl9BVURJTywKKyAgICBKU0dlbmVyYXRlVG9KU09i
amVjdCwKKyAgICBJbnRlcmZhY2VOYW1lPXdlYmtpdEF1ZGlvUGFubmVyTm9kZSwKK10gaW50ZXJm
YWNlIFdlYktpdEF1ZGlvUGFubmVyTm9kZSA6IEF1ZGlvTm9kZSB7CisgICAgLy8gRGVmYXVsdCBt
b2RlbCBmb3Igc3RlcmVvIGlzIEhSVEYKKyAgICBhdHRyaWJ1dGUgUGFubmluZ01vZGVsVHlwZSBw
YW5uaW5nTW9kZWw7CisKKyAgICAvLyBVc2VzIGEgM0QgY2FydGVzaWFuIGNvb3JkaW5hdGUgc3lz
dGVtCisgICAgdm9pZCBzZXRQb3NpdGlvbih1bnJlc3RyaWN0ZWQgZmxvYXQgeCwgdW5yZXN0cmlj
dGVkIGZsb2F0IHksIHVucmVzdHJpY3RlZCBmbG9hdCB6KTsKKyAgICB2b2lkIHNldE9yaWVudGF0
aW9uKHVucmVzdHJpY3RlZCBmbG9hdCB4LCB1bnJlc3RyaWN0ZWQgZmxvYXQgeSwgdW5yZXN0cmlj
dGVkIGZsb2F0IHopOworICAgIHZvaWQgc2V0VmVsb2NpdHkodW5yZXN0cmljdGVkIGZsb2F0IHgs
IHVucmVzdHJpY3RlZCBmbG9hdCB5LCB1bnJlc3RyaWN0ZWQgZmxvYXQgeik7CisKKyAgICAvLyBE
aXN0YW5jZSBtb2RlbAorICAgIGF0dHJpYnV0ZSBEaXN0YW5jZU1vZGVsVHlwZSBkaXN0YW5jZU1v
ZGVsOworCisgICAgYXR0cmlidXRlIHVucmVzdHJpY3RlZCBkb3VibGUgcmVmRGlzdGFuY2U7Cisg
ICAgYXR0cmlidXRlIHVucmVzdHJpY3RlZCBkb3VibGUgbWF4RGlzdGFuY2U7CisgICAgYXR0cmli
dXRlIHVucmVzdHJpY3RlZCBkb3VibGUgcm9sbG9mZkZhY3RvcjsKKworICAgIC8vIERpcmVjdGlv
bmFsIHNvdW5kIGNvbmUKKyAgICBhdHRyaWJ1dGUgdW5yZXN0cmljdGVkIGRvdWJsZSBjb25lSW5u
ZXJBbmdsZTsKKyAgICBhdHRyaWJ1dGUgdW5yZXN0cmljdGVkIGRvdWJsZSBjb25lT3V0ZXJBbmds
ZTsKKyAgICBhdHRyaWJ1dGUgdW5yZXN0cmljdGVkIGRvdWJsZSBjb25lT3V0ZXJHYWluOworfTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vV2ViS2l0T2ZmbGlu
ZUF1ZGlvQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1dlYktp
dE9mZmxpbmVBdWRpb0NvbnRleHQuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwLi5kOGUzOTlhMTRhMwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViYXVkaW8vV2ViS2l0T2ZmbGluZUF1ZGlvQ29udGV4dC5jcHAKQEAgLTAsMCArMSw2
MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiwgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5EIEFOWQorICogRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
CisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OCisgKiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMKKyAqIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2lmIEVOQUJMRShXRUJf
QVVESU8pCisKKyNpbmNsdWRlICJXZWJLaXRPZmZsaW5lQXVkaW9Db250ZXh0LmgiCisKKyNpbmNs
dWRlICJBdWRpb0J1ZmZlci5oIgorI2luY2x1ZGUgIkRvY3VtZW50LmgiCisjaW5jbHVkZSA8d3Rm
L0lzb01hbGxvY0lubGluZXMuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitXVEZfTUFLRV9J
U09fQUxMT0NBVEVEX0lNUEwoV2ViS2l0T2ZmbGluZUF1ZGlvQ29udGV4dCk7CisKK2lubGluZSBX
ZWJLaXRPZmZsaW5lQXVkaW9Db250ZXh0OjpXZWJLaXRPZmZsaW5lQXVkaW9Db250ZXh0KERvY3Vt
ZW50JiBkb2N1bWVudCwgQXVkaW9CdWZmZXIqIHJlbmRlclRhcmdldCkKKyAgICA6IFdlYktpdEF1
ZGlvQ29udGV4dChkb2N1bWVudCwgcmVuZGVyVGFyZ2V0KQoreworfQorCitFeGNlcHRpb25PcjxS
ZWY8V2ViS2l0T2ZmbGluZUF1ZGlvQ29udGV4dD4+IFdlYktpdE9mZmxpbmVBdWRpb0NvbnRleHQ6
OmNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCB1bnNpZ25lZCBudW1iZXJP
ZkNoYW5uZWxzLCBzaXplX3QgbnVtYmVyT2ZGcmFtZXMsIGZsb2F0IHNhbXBsZVJhdGUpCit7Cisg
ICAgLy8gRklYTUU6IEFkZCBzdXBwb3J0IGZvciB3b3JrZXJzLgorICAgIGlmICghaXM8RG9jdW1l
bnQ+KGNvbnRleHQpKQorICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgTm90U3VwcG9ydGVkRXJy
b3IgfTsKKyAgICBpZiAoIW51bWJlck9mQ2hhbm5lbHMgfHwgbnVtYmVyT2ZDaGFubmVscyA+IDEw
IHx8ICFudW1iZXJPZkZyYW1lcyB8fCAhaXNTYW1wbGVSYXRlUmFuZ2VHb29kKHNhbXBsZVJhdGUp
KQorICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgU3ludGF4RXJyb3IgfTsKKyAgICBhdXRvIHJl
bmRlclRhcmdldCA9IEF1ZGlvQnVmZmVyOjpjcmVhdGUobnVtYmVyT2ZDaGFubmVscywgbnVtYmVy
T2ZGcmFtZXMsIHNhbXBsZVJhdGUpOworICAgIGlmICghcmVuZGVyVGFyZ2V0KQorICAgICAgICBy
ZXR1cm4gRXhjZXB0aW9uIHsgU3ludGF4RXJyb3IgfTsKKworICAgIGF1dG8gYXVkaW9Db250ZXh0
ID0gYWRvcHRSZWYoKm5ldyBXZWJLaXRPZmZsaW5lQXVkaW9Db250ZXh0KGRvd25jYXN0PERvY3Vt
ZW50Pihjb250ZXh0KSwgcmVuZGVyVGFyZ2V0LmdldCgpKSk7CisgICAgYXVkaW9Db250ZXh0LT5z
dXNwZW5kSWZOZWVkZWQoKTsKKyAgICByZXR1cm4gYXVkaW9Db250ZXh0OworfQorCit9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoV0VCX0FVRElPKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9XZWJLaXRPZmZsaW5lQXVkaW9Db250
ZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1dlYktpdE9mZmxpbmVBdWRp
b0NvbnRleHQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uYzI1NGVk
NDFmZTAKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlv
L1dlYktpdE9mZmxpbmVBdWRpb0NvbnRleHQuaApAQCAtMCwwICsxLDQwIEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDEyLCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisg
KiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04K
KyAqIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUworICogU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJXZWJLaXRBdWRpb0NvbnRleHQuaCIKKworbmFt
ZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBXZWJLaXRPZmZsaW5lQXVkaW9Db250ZXh0IGZpbmFs
IDogcHVibGljIFdlYktpdEF1ZGlvQ29udGV4dCB7CisgICAgV1RGX01BS0VfSVNPX0FMTE9DQVRF
RChXZWJLaXRPZmZsaW5lQXVkaW9Db250ZXh0KTsKK3B1YmxpYzoKKyAgICBzdGF0aWMgRXhjZXB0
aW9uT3I8UmVmPFdlYktpdE9mZmxpbmVBdWRpb0NvbnRleHQ+PiBjcmVhdGUoU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCYsIHVuc2lnbmVkIG51bWJlck9mQ2hhbm5lbHMsIHNpemVfdCBudW1iZXJPZkZy
YW1lcywgZmxvYXQgc2FtcGxlUmF0ZSk7CisKK3ByaXZhdGU6CisgICAgV2ViS2l0T2ZmbGluZUF1
ZGlvQ29udGV4dChEb2N1bWVudCYsIEF1ZGlvQnVmZmVyKiByZW5kZXJUYXJnZXQpOworfTsKKwor
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJhdWRpby9XZWJLaXRPZmZsaW5lQXVkaW9Db250ZXh0LmlkbCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViYXVkaW8vV2ViS2l0T2ZmbGluZUF1ZGlvQ29udGV4dC5pZGwKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjRhOTJhYzAzYmE3Ci0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9XZWJLaXRPZmZsaW5lQXVkaW9D
b250ZXh0LmlkbApAQCAtMCwwICsxLDMzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyLCBH
b29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisg
KiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04KKyAqIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
CisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUworICogU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworWworICAgIENvbmRpdGlv
bmFsPVdFQl9BVURJTywKKyAgICBKU0dlbmVyYXRlVG9KU09iamVjdCwKKyAgICBDb25zdHJ1Y3Rv
cih1bnNpZ25lZCBsb25nIG51bWJlck9mQ2hhbm5lbHMsIHVuc2lnbmVkIGxvbmcgbnVtYmVyT2ZG
cmFtZXMsIHVucmVzdHJpY3RlZCBmbG9hdCBzYW1wbGVSYXRlKSwKKyAgICBDb25zdHJ1Y3Rvck1h
eVRocm93RXhjZXB0aW9uLAorICAgIENvbnN0cnVjdG9yQ2FsbFdpdGg9U2NyaXB0RXhlY3V0aW9u
Q29udGV4dCwKKyAgICBJbnRlcmZhY2VOYW1lPXdlYmtpdE9mZmxpbmVBdWRpb0NvbnRleHQKK10g
aW50ZXJmYWNlIFdlYktpdE9mZmxpbmVBdWRpb0NvbnRleHQgOiBXZWJLaXRBdWRpb0NvbnRleHQg
eworfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0IGIvU291cmNlL1dl
YkNvcmUvU291cmNlcy50eHQKaW5kZXggMjRkYjhmZDJjMzEuLjkzZmNiNzQzNDg1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Tb3Vy
Y2VzLnR4dApAQCAtMjY4LDYgKzI2OCw5IEBAIE1vZHVsZXMvd2ViYXVkaW8vU2NyaXB0UHJvY2Vz
c29yTm9kZS5jcHAKIE1vZHVsZXMvd2ViYXVkaW8vV2F2ZVNoYXBlckRTUEtlcm5lbC5jcHAKIE1v
ZHVsZXMvd2ViYXVkaW8vV2F2ZVNoYXBlck5vZGUuY3BwCiBNb2R1bGVzL3dlYmF1ZGlvL1dhdmVT
aGFwZXJQcm9jZXNzb3IuY3BwCitNb2R1bGVzL3dlYmF1ZGlvL1dlYktpdEF1ZGlvQ29udGV4dC5j
cHAKK01vZHVsZXMvd2ViYXVkaW8vV2ViS2l0QXVkaW9QYW5uZXJOb2RlLmNwcAorTW9kdWxlcy93
ZWJhdWRpby9XZWJLaXRPZmZsaW5lQXVkaW9Db250ZXh0LmNwcAogCiBNb2R1bGVzL3dlYmF1dGhu
L0F1dGhlbnRpY2F0b3JDb29yZGluYXRvci5jcHAKIE1vZHVsZXMvd2ViYXV0aG4vQXV0aGVudGlj
YXRvckFzc2VydGlvblJlc3BvbnNlLmNwcApAQCAtMjc0NCw2ICsyNzQ3LDcgQEAgSlNBdWRpb0J1
ZmZlckNhbGxiYWNrLmNwcAogSlNBdWRpb0J1ZmZlclNvdXJjZU5vZGUuY3BwCiBKU0F1ZGlvQ29u
ZmlndXJhdGlvbi5jcHAKIEpTQXVkaW9Db250ZXh0LmNwcAorSlNBdWRpb0NvbnRleHRTdGF0ZS5j
cHAKIEpTQXVkaW9EZXN0aW5hdGlvbk5vZGUuY3BwCiBKU0F1ZGlvTGlzdGVuZXIuY3BwCiBKU0F1
ZGlvTm9kZS5jcHAKQEAgLTM1NjcsNyArMzU3MSwxMCBAQCBKU1dlYkdQVVN3YXBDaGFpbi5jcHAK
IEpTV2ViR1BVVGV4dHVyZS5jcHAKIEpTV2ViR1BVVGV4dHVyZVZpZXcuY3BwCiBKU1dlYktpdEFu
aW1hdGlvbkV2ZW50LmNwcAorSlNXZWJLaXRBdWRpb0NvbnRleHQuY3BwCitKU1dlYktpdEF1ZGlv
UGFubmVyTm9kZS5jcHAKIEpTV2ViS2l0Q1NTTWF0cml4LmNwcAorSlNXZWJLaXRPZmZsaW5lQXVk
aW9Db250ZXh0LmNwcAogSlNXZWJLaXRQbGF5YmFja1RhcmdldEF2YWlsYWJpbGl0eUV2ZW50LmNw
cAogSlNXZWJLaXRQb2ludC5jcHAKIEpTV2ViS2l0VHJhbnNpdGlvbkV2ZW50LmNwcApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIv
U291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDUy
NjVkYjU4MzgyLi5mY2U2MjY4YmIwNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMjQxNCw2ICsyNDE0LDggQEAKIAkJODMxMDJC
MjcxRjlFQUREOTAwRTQwNEI5IC8qIEpTRXh0ZW5kYWJsZU1lc3NhZ2VFdmVudC5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODMxMDJCMjMxRjlFQURDMjAw
RTQwNEI5IC8qIEpTRXh0ZW5kYWJsZU1lc3NhZ2VFdmVudC5oICovOyB9OwogCQk4MzExQzAwMzFG
QUEyRTk1MDBFM0M4RTUgLyogU1dTZXJ2ZXJKb2JRdWV1ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODMxMUMwMDIxRkFBMkU4OTAwRTNDOEU1IC8qIFNX
U2VydmVySm9iUXVldWUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwogCQk4MzEyMEM3MTFDNTZGM0ZCMDAxQ0IxMTIgLyogSFRNTERhdGFFbGVtZW50Lmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4MzRCODZBNzFD
NTZFODNBMDBGM0YwRTMgLyogSFRNTERhdGFFbGVtZW50LmggKi87IH07CisJCTgzMUI2MTc2MjQ5
OUE1QkIwMEMwN0M3OSAvKiBXZWJLaXRBdWRpb1Bhbm5lck5vZGUuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgzMUI2MTc0MjQ5OUE1OUMwMEMwN0M3OSAv
KiBXZWJLaXRBdWRpb1Bhbm5lck5vZGUuaCAqLzsgfTsKKwkJODMxQjYxNzcyNDk5QTVCRjAwQzA3
Qzc5IC8qIFdlYktpdE9mZmxpbmVBdWRpb0NvbnRleHQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgzMUI2MTc1MjQ5OUE1OUQwMEMwN0M3OSAvKiBXZWJL
aXRPZmZsaW5lQXVkaW9Db250ZXh0LmggKi87IH07CiAJCTgzMjE1MDdFMUYyN0VBMUIwMDk1QjEz
NiAvKiBOYXZpZ2F0b3JCZWFjb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDgzMjE1MDdCMUYyN0VBMTUwMDk1QjEzNiAvKiBOYXZpZ2F0b3JCZWFjb24u
aCAqLzsgfTsKIAkJODMyQjg0MzQxOUQ4RTU1MTAwQjI2MDU1IC8qIFNWR0FuaW1hdGVFbGVtZW50
QmFzZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODMy
Qjg0MzMxOUQ4RTU1MTAwQjI2MDU1IC8qIFNWR0FuaW1hdGVFbGVtZW50QmFzZS5oICovOyB9Owog
CQk4MzNCOUUzMjFGNTA4RDg1MDBFMEU0MjggLyogSlNGaWxlU3lzdGVtRGlyZWN0b3J5RW50cnku
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgzM0I5RTJG
MUY1MDhEODAwMEUwRTQyOCAvKiBKU0ZpbGVTeXN0ZW1EaXJlY3RvcnlFbnRyeS5oICovOyB9OwpA
QCAtMjQ2OSwxMCArMjQ3MSwxMiBAQAogCQk4MzlBMkYyRTFFMjA0QTcxMDAzOTA1N0UgLyogV2Vi
R0xTdGF0ZVRyYWNrZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDgzOUEyRjJDMUUyMDRBNkQwMDM5MDU3RSAvKiBXZWJHTFN0YXRlVHJhY2tlci5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTgzOUFBRkVE
MUEwQzBDOEQwMDYwNUY5OSAvKiBIVE1MV0JSRWxlbWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODM5QUFGRUIxQTBDMEM4RDAwNjA1Rjk5IC8qIEhU
TUxXQlJFbGVtZW50LmggKi87IH07CiAJCTgzQThBQzQwMUZBQkJGRTUwMDIwNjRBQyAvKiBTZXJ2
aWNlV29ya2VySWRlbnRpZmllci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gODNBOEFDM0UxRkFCQkZEMTAwMjA2NEFDIC8qIFNlcnZpY2VXb3JrZXJJZGVu
dGlmaWVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
KwkJODNCMUE3MDIyNDk5ODVGMDAwRkU1OTYxIC8qIFdlYktpdEF1ZGlvQ29udGV4dC5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODNCMUE2RkYyNDk5ODVE
MDAwRkU1OTYxIC8qIFdlYktpdEF1ZGlvQ29udGV4dC5oICovOyB9OwogCQk4M0IyRDE3NTFCOEJD
RDZBMDBBMDJFNDcgLyogTmF0aXZlTm9kZUZpbHRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODNFOTU5RTExQjhCQzIyQjAwNEQ5Mzg1IC8qIE5hdGl2
ZU5vZGVGaWx0ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwogCQk4M0I3NEVGNjFGM0UwQkYyMDA5OTZCQzcgLyogS2VlcGFsaXZlUmVxdWVzdFRyYWNr
ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgzQjc0
RUYzMUYzRTBCRDcwMDk5NkJDNyAvKiBLZWVwYWxpdmVSZXF1ZXN0VHJhY2tlci5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTgzQjk2ODdCMTlGOEFC
ODMwMDRFRjdBRiAvKiBTdHlsZUJ1aWxkZXJDb252ZXJ0ZXIuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgzQjk2ODc5MTlGOEFCODMwMDRFRjdBRiAvKiBT
dHlsZUJ1aWxkZXJDb252ZXJ0ZXIuaCAqLzsgfTsKIAkJODNCQjVDODgxRDVENkY0NTAwNUE3MUY0
IC8qIEFsbERlc2NlbmRhbnRzQ29sbGVjdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gODNCQjVDODcxRDVENkYzQTAwNUE3MUY0IC8qIEFsbERlc2Nl
bmRhbnRzQ29sbGVjdGlvbi5oICovOyB9OworCQk4M0JEM0NFRTI0OTk4RTAxMDBCQTNFNjcgLyog
QXVkaW9Db250ZXh0U3RhdGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDgzQkQzQ0VEMjQ5OThERjYwMEJBM0U2NyAvKiBBdWRpb0NvbnRleHRTdGF0ZS5o
ICovOyB9OwogCQk4M0MwNUE1QjFBNjg2MjEyMDA3RTVERUEgLyogU3R5bGVQcm9wZXJ0eVNob3J0
aGFuZEZ1bmN0aW9ucy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gODNDMDVBNTkxQTY4NjIxMjAwN0U1REVBIC8qIFN0eWxlUHJvcGVydHlTaG9ydGhhbmRG
dW5jdGlvbnMuaCAqLzsgfTsKIAkJODNDMUY1OTQxRURGNjlEMzAwNDEwRDI3IC8qIFF1YWxpZmll
ZE5hbWVDYWNoZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gODNDMUY1OTIxRURGNjlEMzAwNDEwRDI3IC8qIFF1YWxpZmllZE5hbWVDYWNoZS5oICovOyB9
OwogCQk4M0M0NUI4RTFEQzJCNjhBMDA4ODcxQkEgLyogVmFsaWRhdGlvbkJ1YmJsZS5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODNDNDVCOEQxREMyQjY3
QzAwODg3MUJBIC8qIFZhbGlkYXRpb25CdWJibGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtMTAyOTcsNiArMTAzMDEsNyBAQAogCQk4MzAwMzBG
MzFCN0QzM0E2MDBFRDNBQUMgLyogR2VuZXJpY0NhY2hlZEhUTUxDb2xsZWN0aW9uLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEdlbmVyaWNDYWNoZWRIVE1MQ29sbGVj
dGlvbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTgzMDAzMEY0MUI3RDMzQTYw
MEVEM0FBQyAvKiBHZW5lcmljQ2FjaGVkSFRNTENvbGxlY3Rpb24uaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gR2VuZXJpY0NhY2hlZEhUTUxDb2xsZWN0aW9uLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTgzMDAzMEY3MUI3RDM5ODgwMEVEM0FBQyAvKiBDYWNoZWRI
VE1MQ29sbGVjdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDYWNoZWRI
VE1MQ29sbGVjdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk4MzAwM0UyQjI0
OTk5N0E4MDA2MEFGOTQgLyogV2ViS2l0QXVkaW9Db250ZXh0LmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYktpdEF1ZGlvQ29udGV4dC5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTgzMDMzNEZCMUY1NDkwNTIwMDRERjcwNyAvKiBGaWxlU3lzdGVt
RGlyZWN0b3J5UmVhZGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IEZpbGVTeXN0ZW1EaXJlY3RvcnlSZWFkZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk4MzAzMzRGQzFGNTQ5MDUyMDA0REY3MDcgLyogRmlsZVN5c3RlbURpcmVjdG9yeVJlYWRl
ci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBGaWxlU3lzdGVtRGlyZWN0b3J5
UmVhZGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTgzMDMzNEZEMUY1NDkwNTIw
MDRERjcwNyAvKiBGaWxlU3lzdGVtRW50cmllc0NhbGxiYWNrLmlkbCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7
IHBhdGggPSBGaWxlU3lzdGVtRW50cmllc0NhbGxiYWNrLmlkbDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKQEAgLTEwMzE0LDYgKzEwMzE5LDEyIEBACiAJCTgzMTAyQjI1MUY5RUFEQzIwMEU0
MDRCOSAvKiBKU0V4dGVuZGFibGVNZXNzYWdlRXZlbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gSlNFeHRlbmRhYmxlTWVzc2FnZUV2ZW50LmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODMxMUMwMDAxRkFBMkU4OTAwRTNDOEU1IC8qIFNXU2VydmVy
Sm9iUXVldWUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU1dTZXJ2
ZXJKb2JRdWV1ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTgzMTFDMDAyMUZB
QTJFODkwMEUzQzhFNSAvKiBTV1NlcnZlckpvYlF1ZXVlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFNXU2VydmVySm9iUXVldWUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJODMxQjYxNkYyNDk5QTU5ODAwQzA3Qzc5IC8qIFdlYktpdEF1ZGlvUGFubmVyTm9kZS5p
ZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gV2ViS2l0QXVkaW9QYW5uZXJOb2RlLmlkbDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJODMxQjYxNzEyNDk5QTU5OTAwQzA3Qzc5IC8qIFdl
YktpdEF1ZGlvUGFubmVyTm9kZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBXZWJLaXRBdWRpb1Bhbm5lck5vZGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQk4MzFCNjE3MjI0OTlBNTlBMDBDMDdDNzkgLyogV2ViS2l0T2ZmbGluZUF1ZGlvQ29udGV4
dC5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gV2ViS2l0T2ZmbGluZUF1ZGlvQ29udGV4dC5p
ZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTgzMUI2MTczMjQ5OUE1OUIwMEMwN0M3
OSAvKiBXZWJLaXRPZmZsaW5lQXVkaW9Db250ZXh0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IFdlYktpdE9mZmxpbmVBdWRpb0NvbnRleHQuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQk4MzFCNjE3NDI0OTlBNTlDMDBDMDdDNzkgLyogV2ViS2l0QXVk
aW9QYW5uZXJOb2RlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYktpdEF1
ZGlvUGFubmVyTm9kZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk4MzFCNjE3NTI0
OTlBNTlEMDBDMDdDNzkgLyogV2ViS2l0T2ZmbGluZUF1ZGlvQ29udGV4dC5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJLaXRPZmZsaW5lQXVkaW9Db250ZXh0Lmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTgzMUM0NkMzMUY5RUU1RTAwMEVCRDQ1MCAvKiBKU0V4
dGVuZGFibGVNZXNzYWdlRXZlbnRDdXN0b20uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gSlNFeHRlbmRhYmxlTWVzc2FnZUV2ZW50Q3VzdG9tLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODMxRDFGMjkxQzU2RUNBMDAwRjVGNkMwIC8qIEhUTUxEYXRh
RWxlbWVudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBIVE1MRGF0
YUVsZW1lbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4MzIxNTA3QTFGMjdF
QTE1MDA5NUIxMzYgLyogTmF2aWdhdG9yQmVhY29uLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE5h
dmlnYXRvckJlYWNvbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xMDQ0MSw2
ICsxMDQ1Miw4IEBACiAJCTgzOUFBRkVCMUEwQzBDOEQwMDYwNUY5OSAvKiBIVE1MV0JSRWxlbWVu
dC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBIVE1MV0JSRWxlbWVudC5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4M0E0QTlGODFDRTdGRDdFMDA3MDlCMDAgLyog
SlNYTUxEb2N1bWVudEN1c3RvbS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBKU1hNTERvY3VtZW50Q3VzdG9tLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJODNBOEFDM0UxRkFCQkZEMTAwMjA2NEFDIC8qIFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNlcnZpY2VXb3JrZXJJZGVudGlmaWVy
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTgzQjFBNkZGMjQ5OTg1RDAwMEZFNTk2
MSAvKiBXZWJLaXRBdWRpb0NvbnRleHQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gV2ViS2l0QXVkaW9Db250ZXh0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTgz
QjFBNzAxMjQ5OTg1RDAwMEZFNTk2MSAvKiBXZWJLaXRBdWRpb0NvbnRleHQuaWRsICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gdGV4dDsgcGF0aCA9IFdlYktpdEF1ZGlvQ29udGV4dC5pZGw7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTgzQjI1MDA5MUZBMTE4MUMwMEJDMDJEOSAvKiBKU1NlcnZpY2VXb3JrZXJD
bGllbnRUeXBlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTU2VydmljZVdv
cmtlckNsaWVudFR5cGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODNCMjUwMEIx
RkExMTgxRDAwQkMwMkQ5IC8qIEpTU2VydmljZVdvcmtlckNsaWVudFR5cGUuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNTZXJ2aWNlV29ya2VyQ2xpZW50VHlwZS5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTgzQjVEQTQ1MUZBOTA3OTMwMEI1OURG
NCAvKiBKU05hdmlnYXRvckN1c3RvbS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBKU05hdmlnYXRvckN1c3RvbS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CkBAIC0xMDQ0OCw2ICsxMDQ2MSw4IEBACiAJCTgzQjc0RUYzMUYzRTBCRDcwMDk5NkJDNyAvKiBL
ZWVwYWxpdmVSZXF1ZXN0VHJhY2tlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBLZWVwYWxpdmVSZXF1ZXN0VHJhY2tlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk4M0I5Njg3OTE5RjhBQjgzMDA0RUY3QUYgLyogU3R5bGVCdWlsZGVyQ29udmVydGVyLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFN0eWxlQnVpbGRlckNvbnZlcnRlci5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4M0JCNUM4NzFENUQ2RjNBMDA1QTcxRjQgLyog
QWxsRGVzY2VuZGFudHNDb2xsZWN0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IEFsbERlc2NlbmRhbnRzQ29sbGVjdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQk4M0JEM0NFQjI0OTk4Q0M1MDBCQTNFNjcgLyogQXVkaW9Db250ZXh0U3RhdGUuaWRsICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gdGV4dDsgcGF0aCA9IEF1ZGlvQ29udGV4dFN0YXRlLmlkbDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJODNCRDNDRUQyNDk5OERGNjAwQkEzRTY3IC8qIEF1ZGlvQ29udGV4
dFN0YXRlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEF1ZGlvQ29udGV4dFN0
YXRlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTgzQzA1QTU4MUE2ODYyMTIwMDdF
NURFQSAvKiBTdHlsZVByb3BlcnR5U2hvcnRoYW5kRnVuY3Rpb25zLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IFN0eWxlUHJvcGVydHlTaG9ydGhhbmRGdW5jdGlvbnMu
Y3BwOyBwYXRoID0gRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9TdHlsZVByb3BlcnR5U2hvcnRoYW5k
RnVuY3Rpb25zLmNwcDsgc291cmNlVHJlZSA9IEJVSUxUX1BST0RVQ1RTX0RJUjsgfTsKIAkJODND
MDVBNTkxQTY4NjIxMjAwN0U1REVBIC8qIFN0eWxlUHJvcGVydHlTaG9ydGhhbmRGdW5jdGlvbnMu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gU3R5bGVQcm9wZXJ0eVNob3J0aGFu
ZEZ1bmN0aW9ucy5oOyBwYXRoID0gRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9TdHlsZVByb3BlcnR5
U2hvcnRoYW5kRnVuY3Rpb25zLmg7IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19ESVI7IH07
CiAJCTgzQzFGNTkxMUVERjY5RDMwMDQxMEQyNyAvKiBRdWFsaWZpZWROYW1lQ2FjaGUuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUXVhbGlmaWVkTmFtZUNhY2hlLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTI5MjMxLDYgKzI5MjQ2LDggQEAKIAkJ
CQlGRDMxNUZCQTEyQjAyNjc1MDBDMUEzNTkgLyogQXVkaW9Db250ZXh0LmNwcCAqLywKIAkJCQlG
RDMxNUZCQjEyQjAyNjc1MDBDMUEzNTkgLyogQXVkaW9Db250ZXh0LmggKi8sCiAJCQkJRkQzMTVG
QkMxMkIwMjY3NTAwQzFBMzU5IC8qIEF1ZGlvQ29udGV4dC5pZGwgKi8sCisJCQkJODNCRDNDRUQy
NDk5OERGNjAwQkEzRTY3IC8qIEF1ZGlvQ29udGV4dFN0YXRlLmggKi8sCisJCQkJODNCRDNDRUIy
NDk5OENDNTAwQkEzRTY3IC8qIEF1ZGlvQ29udGV4dFN0YXRlLmlkbCAqLywKIAkJCQlGRDMxNUZC
RDEyQjAyNjc1MDBDMUEzNTkgLyogQXVkaW9EZXN0aW5hdGlvbk5vZGUuY3BwICovLAogCQkJCUZE
MzE1RkJFMTJCMDI2NzUwMEMxQTM1OSAvKiBBdWRpb0Rlc3RpbmF0aW9uTm9kZS5oICovLAogCQkJ
CUZEMzE1RkJGMTJCMDI2NzUwMEMxQTM1OSAvKiBBdWRpb0Rlc3RpbmF0aW9uTm9kZS5pZGwgKi8s
CkBAIC0yOTMyOCw2ICsyOTM0NSwxNSBAQAogCQkJCUZEN0YyOThFMTNENEMwQ0IwMEFEOTUzNSAv
KiBXYXZlU2hhcGVyTm9kZS5pZGwgKi8sCiAJCQkJRkQ3RjI5OEYxM0Q0QzBDQjAwQUQ5NTM1IC8q
IFdhdmVTaGFwZXJQcm9jZXNzb3IuY3BwICovLAogCQkJCUZEN0YyOTkwMTNENEMwQ0IwMEFEOTUz
NSAvKiBXYXZlU2hhcGVyUHJvY2Vzc29yLmggKi8sCisJCQkJODMwMDNFMkIyNDk5OTdBODAwNjBB
Rjk0IC8qIFdlYktpdEF1ZGlvQ29udGV4dC5jcHAgKi8sCisJCQkJODNCMUE2RkYyNDk5ODVEMDAw
RkU1OTYxIC8qIFdlYktpdEF1ZGlvQ29udGV4dC5oICovLAorCQkJCTgzQjFBNzAxMjQ5OTg1RDAw
MEZFNTk2MSAvKiBXZWJLaXRBdWRpb0NvbnRleHQuaWRsICovLAorCQkJCTgzMUI2MTcxMjQ5OUE1
OTkwMEMwN0M3OSAvKiBXZWJLaXRBdWRpb1Bhbm5lck5vZGUuY3BwICovLAorCQkJCTgzMUI2MTc0
MjQ5OUE1OUMwMEMwN0M3OSAvKiBXZWJLaXRBdWRpb1Bhbm5lck5vZGUuaCAqLywKKwkJCQk4MzFC
NjE2RjI0OTlBNTk4MDBDMDdDNzkgLyogV2ViS2l0QXVkaW9QYW5uZXJOb2RlLmlkbCAqLywKKwkJ
CQk4MzFCNjE3MzI0OTlBNTlCMDBDMDdDNzkgLyogV2ViS2l0T2ZmbGluZUF1ZGlvQ29udGV4dC5j
cHAgKi8sCisJCQkJODMxQjYxNzUyNDk5QTU5RDAwQzA3Qzc5IC8qIFdlYktpdE9mZmxpbmVBdWRp
b0NvbnRleHQuaCAqLywKKwkJCQk4MzFCNjE3MjI0OTlBNTlBMDBDMDdDNzkgLyogV2ViS2l0T2Zm
bGluZUF1ZGlvQ29udGV4dC5pZGwgKi8sCiAJCQkpOwogCQkJcGF0aCA9IHdlYmF1ZGlvOwogCQkJ
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKQEAgLTI5NzA0LDYgKzI5NzMwLDcgQEAKIAkJCQk5QjQx
NzA2NDEyNTY2MkIzMDA2QjI4RkMgLyogQXBwbHlCbG9ja0VsZW1lbnRDb21tYW5kLmggaW4gSGVh
ZGVycyAqLywKIAkJCQk5MzMwOUREOTA5OUU2NDkyMDA1NkU1ODEgLyogQXBwbHlTdHlsZUNvbW1h
bmQuaCBpbiBIZWFkZXJzICovLAogCQkJCTUxMkREOEY2MEQ5MUU2QUYwMDBGODlFRSAvKiBBcmNo
aXZlLmggaW4gSGVhZGVycyAqLywKKwkJCQk4M0JEM0NFRTI0OTk4RTAxMDBCQTNFNjcgLyogQXVk
aW9Db250ZXh0U3RhdGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTUxMkREOEZEMEQ5MUU2QUYwMDBG
ODlFRSAvKiBBcmNoaXZlRmFjdG9yeS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTEyREQ4RkMwRDkx
RTZBRjAwMEY4OUVFIC8qIEFyY2hpdmVSZXNvdXJjZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTEy
REQ4RjgwRDkxRTZBRjAwMEY4OUVFIC8qIEFyY2hpdmVSZXNvdXJjZUNvbGxlY3Rpb24uaCBpbiBI
ZWFkZXJzICovLApAQCAtMzA4NjksNiArMzA4OTYsNyBAQAogCQkJCUE0M0JGNTk5MTE0OTI5MEEw
MEM2NDNDQSAvKiBIVE1MUHJvZ3Jlc3NFbGVtZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlBOENG
RjdBMzBBMTU2OTc4MDAwQTQyMzQgLyogSFRNTFF1b3RlRWxlbWVudC5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJQThEMjIzRkUxNkI1MkU0RTAwMTU3Mjg4IC8qIEhUTUxSZXNvdXJjZVByZWxvYWRlci5o
IGluIEhlYWRlcnMgKi8sCisJCQkJODNCMUE3MDIyNDk5ODVGMDAwRkU1OTYxIC8qIFdlYktpdEF1
ZGlvQ29udGV4dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTg3MURDMjUwQTE1MjA1NzAwQjEyQTY4
IC8qIEhUTUxTY3JpcHRFbGVtZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQk5NzdCMzg3NTEyMjg4
M0U5MDBCODFGRjggLyogSFRNTFNjcmlwdFJ1bm5lci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTc3
QjM4NzYxMjI4ODNFOTAwQjgxRkY4IC8qIEhUTUxTY3JpcHRSdW5uZXJIb3N0LmggaW4gSGVhZGVy
cyAqLywKQEAgLTMxNzExLDYgKzMxNzM5LDcgQEAKIAkJCQlCQzgyNDMyOTBEMENFOEEyMDA0NjBD
OEYgLyogSlNTUUxFcnJvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUFFODJGRUQwQ0FCMDdFRTAw
MjIzN0FFIC8qIEpTU1FMUmVzdWx0U2V0LmggaW4gSGVhZGVycyAqLywKIAkJCQkxQUZFMTE5QTBD
QkZGQ0M0MDAzMDE3RkEgLyogSlNTUUxSZXN1bHRTZXRSb3dMaXN0LmggaW4gSGVhZGVycyAqLywK
KwkJCQk4MzFCNjE3NjI0OTlBNUJCMDBDMDdDNzkgLyogV2ViS2l0QXVkaW9QYW5uZXJOb2RlLmgg
aW4gSGVhZGVycyAqLywKIAkJCQlCNTlERDZBNTExOTAyQTYyMDA3RTk2ODQgLyogSlNTUUxTdGF0
ZW1lbnRDYWxsYmFjay5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjU5REQ2QTkxMTkwMkE3MTAwN0U5
Njg0IC8qIEpTU1FMU3RhdGVtZW50RXJyb3JDYWxsYmFjay5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
QkM4MjQzMkEwRDBDRThBMjAwNDYwQzhGIC8qIEpTU1FMVHJhbnNhY3Rpb24uaCBpbiBIZWFkZXJz
ICovLApAQCAtMzI4MDQsNiArMzI4MzMsNyBAQAogCQkJCTUxRUU3QjM4MUFBNTBCMDUwMEY5MkIy
MSAvKiBSZXNvdXJjZUxvYWRJbmZvLmggaW4gSGVhZGVycyAqLywKIAkJCQk5NzNFMzI1NzEwODgz
QjdDMDA1QkM0OTMgLyogUmVzb3VyY2VMb2FkTm90aWZpZXIuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTZCNjkzQTJFMUM1MUE4MkUwMEIwM0JFRiAvKiBSZXNvdXJjZUxvYWRPYnNlcnZlci5oIGluIEhl
YWRlcnMgKi8sCisJCQkJODMxQjYxNzcyNDk5QTVCRjAwQzA3Qzc5IC8qIFdlYktpdE9mZmxpbmVB
dWRpb0NvbnRleHQuaCBpbiBIZWFkZXJzICovLAogCQkJCUU0Mjk1RkE0MTJCMDYxNEUwMEQxQUNF
MCAvKiBSZXNvdXJjZUxvYWRQcmlvcml0eS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJN0E5MjlDQTcx
QzU5OEFBOTAwNERGMjI2IC8qIFJlc291cmNlTG9hZFN0YXRpc3RpY3MuaCBpbiBIZWFkZXJzICov
LAogCQkJCTdFRTY4NDZEMTJEMjZFMzgwMEU3OTQxNSAvKiBSZXNvdXJjZVJlcXVlc3QuaCBpbiBI
ZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvV2ViQ29y
ZUJ1aWx0aW5OYW1lcy5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvV2ViQ29yZUJ1aWx0
aW5OYW1lcy5oCmluZGV4IGM5MWI0ZGZhZDcxLi4zZWI2MmIyYTgxZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvV2ViQ29yZUJ1aWx0aW5OYW1lcy5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1dlYkNvcmVCdWlsdGluTmFtZXMuaApAQCAtNDksNiArNDks
NyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgbWFjcm8oQXBwbGVQYXlTZXR1cEZlYXR1cmUp
IFwKICAgICBtYWNybyhBdHRhY2htZW50RWxlbWVudCkgXAogICAgIG1hY3JvKEF1ZGlvKSBcCisg
ICAgbWFjcm8oQXVkaW9Db250ZXh0KSBcCiAgICAgbWFjcm8oQXV0aGVudGljYXRvckFzc2VydGlv
blJlc3BvbnNlKSBcCiAgICAgbWFjcm8oQXV0aGVudGljYXRvckF0dGVzdGF0aW9uUmVzcG9uc2Up
IFwKICAgICBtYWNybyhBdXRoZW50aWNhdG9yUmVzcG9uc2UpIFwKQEAgLTE2NSw5ICsxNjYsMTEg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIG1hY3JvKE5hdmlnYXRvckNyZWRlbnRpYWxzKSBc
CiAgICAgbWFjcm8oTmF2aWdhdG9yTWVkaWFEZXZpY2VzKSBcCiAgICAgbWFjcm8oTmF2aWdhdG9y
VXNlck1lZGlhKSBcCisgICAgbWFjcm8oT2ZmbGluZUF1ZGlvQ29udGV4dCkgXAogICAgIG1hY3Jv
KE9mZnNjcmVlbkNhbnZhcykgXAogICAgIG1hY3JvKE9mZnNjcmVlbkNhbnZhc1JlbmRlcmluZ0Nv
bnRleHQyRCkgXAogICAgIG1hY3JvKFBhaW50UmVuZGVyaW5nQ29udGV4dDJEKSBcCisgICAgbWFj
cm8oUGFubmVyTm9kZSkgXAogICAgIG1hY3JvKFBheW1lbnRBZGRyZXNzKSBcCiAgICAgbWFjcm8o
UGF5bWVudE1ldGhvZENoYW5nZUV2ZW50KSBcCiAgICAgbWFjcm8oUGF5bWVudFJlcXVlc3QpIFwK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudFRhcmdldEZhY3RvcnkuaW4gYi9T
b3VyY2UvV2ViQ29yZS9kb20vRXZlbnRUYXJnZXRGYWN0b3J5LmluCmluZGV4IGZjMWRiMmNlMGUw
Li5hMTU0YjQ0NWExMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50VGFyZ2V0
RmFjdG9yeS5pbgorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRUYXJnZXRGYWN0b3J5Lmlu
CkBAIC01Myw2ICs1Myw3IEBAIFZpZGVvVHJhY2tMaXN0IGNvbmRpdGlvbmFsPVZJREVPCiBWaXN1
YWxWaWV3cG9ydAogV2ViQW5pbWF0aW9uCiBXZWJHUFVEZXZpY2UgY29uZGl0aW9uYWw9V0VCR1BV
CitXZWJLaXRBdWRpb0NvbnRleHQgY29uZGl0aW9uYWw9V0VCX0FVRElPCiBXZWJLaXRNZWRpYUtl
eVNlc3Npb24gY29uZGl0aW9uYWw9TEVHQUNZX0VOQ1JZUFRFRF9NRURJQQogV2ViU29ja2V0CiBX
b3JrZXIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3MueWFtbCBiL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3MueWFtbAppbmRleCAyZDZiYzZmZjJlZi4uNTgzZmM2
Zjc5NWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3MueWFtbAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdzLnlhbWwKQEAgLTI1NSw2ICsyNTUsOCBAQCBs
b2FkRGVmZXJyaW5nRW5hYmxlZDoKICAgaW5pdGlhbDogdHJ1ZQogd2ViQXVkaW9FbmFibGVkOgog
ICBpbml0aWFsOiBmYWxzZQorbW9kZXJuVW5wcmVmaXhlZFdlYkF1ZGlvRW5hYmxlZDoKKyAgaW5p
dGlhbDogZmFsc2UKIHBhZ2luYXRlRHVyaW5nTGF5b3V0RW5hYmxlZDoKICAgaW5pdGlhbDogZmFs
c2UKIGZ1bGxTY3JlZW5FbmFibGVkOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQv
V2ViUHJlZmVyZW5jZXMueWFtbCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlByZWZlcmVuY2Vz
LnlhbWwKaW5kZXggZmFkMWE5ZjU4ODYuLjUyMzVjZTcxZmY3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9XZWJQcmVmZXJlbmNlcy55YW1sCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL1dlYlByZWZlcmVuY2VzLnlhbWwKQEAgLTMzNCw2ICszMzQsMTQgQEAgV2ViQXVkaW9FbmFi
bGVkOgogICBkZWZhdWx0VmFsdWU6IHRydWUKICAgY29uZGl0aW9uOiBFTkFCTEUoV0VCX0FVRElP
KQogCitNb2Rlcm5VbnByZWZpeGVkV2ViQXVkaW9FbmFibGVkOgorICB0eXBlOiBib29sCisgIGRl
ZmF1bHRWYWx1ZTogZmFsc2UKKyAgY29uZGl0aW9uOiBFTkFCTEUoV0VCX0FVRElPKQorICBodW1h
blJlYWRhYmxlTmFtZTogIk1vZGVybiBXZWJBdWRpbyBBUEkiCisgIGh1bWFuUmVhZGFibGVEZXNj
cmlwdGlvbjogIk1vZGVybiBhbmQgdW5wcmVmaXhlZCBXZWJBdWRpbyBBUEkiCisgIGNhdGVnb3J5
OiBleHBlcmltZW50YWwKKwogQXR0YWNobWVudEVsZW1lbnRFbmFibGVkOgogICB0eXBlOiBib29s
CiAgIGRlZmF1bHRWYWx1ZTogZmFsc2UK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>402117</attachid>
            <date>2020-06-17 09:27:20 -0700</date>
            <delta_ts>2020-06-17 09:39:38 -0700</delta_ts>
            <desc>WIP Patch</desc>
            <filename>213268_wip.patch</filename>
            <type>text/plain</type>
            <size>215730</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dlYkNv
cmUvQ01ha2VMaXN0cy50eHQKaW5kZXggOTc1OTQ4OTVkOGMuLjM5OWE2YmQzZmQwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9D
TWFrZUxpc3RzLnR4dApAQCAtNDMzLDYgKzQzMyw3IEBAIHNldChXZWJDb3JlX05PTl9TVkdfSURM
X0ZJTEVTCiAgICAgTW9kdWxlcy93ZWJhdWRpby9BdWRpb0J1ZmZlckNhbGxiYWNrLmlkbAogICAg
IE1vZHVsZXMvd2ViYXVkaW8vQXVkaW9CdWZmZXJTb3VyY2VOb2RlLmlkbAogICAgIE1vZHVsZXMv
d2ViYXVkaW8vQXVkaW9Db250ZXh0LmlkbAorICAgIE1vZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250
ZXh0U3RhdGUuaWRsCiAgICAgTW9kdWxlcy93ZWJhdWRpby9BdWRpb0Rlc3RpbmF0aW9uTm9kZS5p
ZGwKICAgICBNb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvTGlzdGVuZXIuaWRsCiAgICAgTW9kdWxlcy93
ZWJhdWRpby9BdWRpb05vZGUuaWRsCkBAIC00NDMsNiArNDQ0LDcgQEAgc2V0KFdlYkNvcmVfTk9O
X1NWR19JRExfRklMRVMKICAgICBNb2R1bGVzL3dlYmF1ZGlvL0NoYW5uZWxTcGxpdHRlck5vZGUu
aWRsCiAgICAgTW9kdWxlcy93ZWJhdWRpby9Db252b2x2ZXJOb2RlLmlkbAogICAgIE1vZHVsZXMv
d2ViYXVkaW8vRGVsYXlOb2RlLmlkbAorICAgIE1vZHVsZXMvd2ViYXVkaW8vRGlzdGFuY2VNb2Rl
bFR5cGUuaWRsCiAgICAgTW9kdWxlcy93ZWJhdWRpby9EeW5hbWljc0NvbXByZXNzb3JOb2RlLmlk
bAogICAgIE1vZHVsZXMvd2ViYXVkaW8vR2Fpbk5vZGUuaWRsCiAgICAgTW9kdWxlcy93ZWJhdWRp
by9NZWRpYUVsZW1lbnRBdWRpb1NvdXJjZU5vZGUuaWRsCkBAIC00NTIsOSArNDU0LDEzIEBAIHNl
dChXZWJDb3JlX05PTl9TVkdfSURMX0ZJTEVTCiAgICAgTW9kdWxlcy93ZWJhdWRpby9PZmZsaW5l
QXVkaW9Db250ZXh0LmlkbAogICAgIE1vZHVsZXMvd2ViYXVkaW8vT3NjaWxsYXRvck5vZGUuaWRs
CiAgICAgTW9kdWxlcy93ZWJhdWRpby9QYW5uZXJOb2RlLmlkbAorICAgIE1vZHVsZXMvd2ViYXVk
aW8vUGFubmluZ01vZGVsVHlwZS5pZGwKICAgICBNb2R1bGVzL3dlYmF1ZGlvL1BlcmlvZGljV2F2
ZS5pZGwKICAgICBNb2R1bGVzL3dlYmF1ZGlvL1NjcmlwdFByb2Nlc3Nvck5vZGUuaWRsCiAgICAg
TW9kdWxlcy93ZWJhdWRpby9XYXZlU2hhcGVyTm9kZS5pZGwKKyAgICBNb2R1bGVzL3dlYmF1ZGlv
L1dlYktpdEF1ZGlvQ29udGV4dC5pZGwKKyAgICBNb2R1bGVzL3dlYmF1ZGlvL1dlYktpdEF1ZGlv
UGFubmVyTm9kZS5pZGwKKyAgICBNb2R1bGVzL3dlYmF1ZGlvL1dlYktpdE9mZmxpbmVBdWRpb0Nv
bnRleHQuaWRsCiAKICAgICBNb2R1bGVzL3dlYmF1dGhuL0F0dGVzdGF0aW9uQ29udmV5YW5jZVBy
ZWZlcmVuY2UuaWRsCiAgICAgTW9kdWxlcy93ZWJhdXRobi9BdXRoZW50aWNhdGlvbkV4dGVuc2lv
bnNDbGllbnRJbnB1dHMuaWRsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291
cmNlcy1pbnB1dC54Y2ZpbGVsaXN0IGIvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMtaW5w
dXQueGNmaWxlbGlzdAppbmRleCA2YTdhYTdkMTRlYi4uMDRhMzM3OGJkYmQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLWlucHV0LnhjZmlsZWxpc3QKKysrIGIvU291
cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMtaW5wdXQueGNmaWxlbGlzdApAQCAtMzIyLDYgKzMy
Miw3IEBAICQoUFJPSkVDVF9ESVIpL01vZHVsZXMvd2ViYXVkaW8vUGFubmVyTm9kZS5pZGwKICQo
UFJPSkVDVF9ESVIpL01vZHVsZXMvd2ViYXVkaW8vUGVyaW9kaWNXYXZlLmlkbAogJChQUk9KRUNU
X0RJUikvTW9kdWxlcy93ZWJhdWRpby9TY3JpcHRQcm9jZXNzb3JOb2RlLmlkbAogJChQUk9KRUNU
X0RJUikvTW9kdWxlcy93ZWJhdWRpby9XYXZlU2hhcGVyTm9kZS5pZGwKKyQoUFJPSkVDVF9ESVIp
L01vZHVsZXMvd2ViYXVkaW8vV2ViS2l0QXVkaW9Db250ZXh0LmlkbAogJChQUk9KRUNUX0RJUikv
TW9kdWxlcy93ZWJhdXRobi9BdHRlc3RhdGlvbkNvbnZleWFuY2VQcmVmZXJlbmNlLmlkbAogJChQ
Uk9KRUNUX0RJUikvTW9kdWxlcy93ZWJhdXRobi9BdXRoZW50aWNhdGlvbkV4dGVuc2lvbnNDbGll
bnRJbnB1dHMuaWRsCiAkKFBST0pFQ1RfRElSKS9Nb2R1bGVzL3dlYmF1dGhuL0F1dGhlbnRpY2F0
aW9uRXh0ZW5zaW9uc0NsaWVudE91dHB1dHMuaWRsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9EZXJpdmVkU291cmNlcy5tYWtlIGIvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMubWFr
ZQppbmRleCBkMjY3MDg5ZTM4Ny4uYjI3Yzc5Y2U2NjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UKKysrIGIvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJj
ZXMubWFrZQpAQCAtMzgzLDYgKzM4Myw3IEBAIEpTX0JJTkRJTkdfSURMUyA9IFwKICAgICAkKFdl
YkNvcmUpL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9CdWZmZXJDYWxsYmFjay5pZGwgXAogICAgICQo
V2ViQ29yZSkvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0J1ZmZlclNvdXJjZU5vZGUuaWRsIFwKICAg
ICAkKFdlYkNvcmUpL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0LmlkbCBcCisgICAgJChX
ZWJDb3JlKS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQ29udGV4dFN0YXRlLmlkbCBcCiAgICAgJChX
ZWJDb3JlKS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvRGVzdGluYXRpb25Ob2RlLmlkbCBcCiAgICAg
JChXZWJDb3JlKS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvTGlzdGVuZXIuaWRsIFwKICAgICAkKFdl
YkNvcmUpL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Ob2RlLmlkbCBcCkBAIC0zOTMsNiArMzk0LDcg
QEAgSlNfQklORElOR19JRExTID0gXAogICAgICQoV2ViQ29yZSkvTW9kdWxlcy93ZWJhdWRpby9D
aGFubmVsU3BsaXR0ZXJOb2RlLmlkbCBcCiAgICAgJChXZWJDb3JlKS9Nb2R1bGVzL3dlYmF1ZGlv
L0NvbnZvbHZlck5vZGUuaWRsIFwKICAgICAkKFdlYkNvcmUpL01vZHVsZXMvd2ViYXVkaW8vRGVs
YXlOb2RlLmlkbCBcCisgICAgJChXZWJDb3JlKS9Nb2R1bGVzL3dlYmF1ZGlvL0Rpc3RhbmNlTW9k
ZWxUeXBlLmlkbCBcCiAgICAgJChXZWJDb3JlKS9Nb2R1bGVzL3dlYmF1ZGlvL0R5bmFtaWNzQ29t
cHJlc3Nvck5vZGUuaWRsIFwKICAgICAkKFdlYkNvcmUpL01vZHVsZXMvd2ViYXVkaW8vR2Fpbk5v
ZGUuaWRsIFwKICAgICAkKFdlYkNvcmUpL01vZHVsZXMvd2ViYXVkaW8vTWVkaWFFbGVtZW50QXVk
aW9Tb3VyY2VOb2RlLmlkbCBcCkBAIC00MDIsOSArNDA0LDEzIEBAIEpTX0JJTkRJTkdfSURMUyA9
IFwKICAgICAkKFdlYkNvcmUpL01vZHVsZXMvd2ViYXVkaW8vT2ZmbGluZUF1ZGlvQ29udGV4dC5p
ZGwgXAogICAgICQoV2ViQ29yZSkvTW9kdWxlcy93ZWJhdWRpby9Pc2NpbGxhdG9yTm9kZS5pZGwg
XAogICAgICQoV2ViQ29yZSkvTW9kdWxlcy93ZWJhdWRpby9QYW5uZXJOb2RlLmlkbCBcCisgICAg
JChXZWJDb3JlKS9Nb2R1bGVzL3dlYmF1ZGlvL1Bhbm5pbmdNb2RlbFR5cGUuaWRsIFwKICAgICAk
KFdlYkNvcmUpL01vZHVsZXMvd2ViYXVkaW8vUGVyaW9kaWNXYXZlLmlkbCBcCiAgICAgJChXZWJD
b3JlKS9Nb2R1bGVzL3dlYmF1ZGlvL1NjcmlwdFByb2Nlc3Nvck5vZGUuaWRsIFwKICAgICAkKFdl
YkNvcmUpL01vZHVsZXMvd2ViYXVkaW8vV2F2ZVNoYXBlck5vZGUuaWRsIFwKKyAgICAkKFdlYkNv
cmUpL01vZHVsZXMvd2ViYXVkaW8vV2ViS2l0QXVkaW9Db250ZXh0LmlkbCBcCisgICAgJChXZWJD
b3JlKS9Nb2R1bGVzL3dlYmF1ZGlvL1dlYktpdEF1ZGlvUGFubmVyTm9kZS5pZGwgXAorICAgICQo
V2ViQ29yZSkvTW9kdWxlcy93ZWJhdWRpby9XZWJLaXRPZmZsaW5lQXVkaW9Db250ZXh0LmlkbCBc
CiAgICAgJChXZWJDb3JlKS9Nb2R1bGVzL3dlYmF1dGhuL0F0dGVzdGF0aW9uQ29udmV5YW5jZVBy
ZWZlcmVuY2UuaWRsIFwKICAgICAkKFdlYkNvcmUpL01vZHVsZXMvd2ViYXV0aG4vQXV0aGVudGlj
YXRpb25FeHRlbnNpb25zQ2xpZW50SW5wdXRzLmlkbCBcCiAgICAgJChXZWJDb3JlKS9Nb2R1bGVz
L3dlYmF1dGhuL0F1dGhlbnRpY2F0aW9uRXh0ZW5zaW9uc0NsaWVudE91dHB1dHMuaWRsIFwKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQW5hbHlzZXJOb2RlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQW5hbHlzZXJOb2RlLmNwcAppbmRl
eCAxNzk4NzA3MDFmOC4uMjE1ZGUzMjFlOWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViYXVkaW8vQW5hbHlzZXJOb2RlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmF1ZGlvL0FuYWx5c2VyTm9kZS5jcHAKQEAgLTM2LDcgKzM2LDcgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogCiBXVEZfTUFLRV9JU09fQUxMT0NBVEVEX0lNUEwoQW5hbHlzZXJOb2RlKTsK
IAotQW5hbHlzZXJOb2RlOjpBbmFseXNlck5vZGUoQXVkaW9Db250ZXh0JiBjb250ZXh0LCBmbG9h
dCBzYW1wbGVSYXRlKQorQW5hbHlzZXJOb2RlOjpBbmFseXNlck5vZGUoQXVkaW9Db250ZXh0QmFz
ZSYgY29udGV4dCwgZmxvYXQgc2FtcGxlUmF0ZSkKICAgICA6IEF1ZGlvQmFzaWNJbnNwZWN0b3JO
b2RlKGNvbnRleHQsIHNhbXBsZVJhdGUsIDIpCiB7CiAgICAgc2V0Tm9kZVR5cGUoTm9kZVR5cGVB
bmFseXNlcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0Fu
YWx5c2VyTm9kZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BbmFseXNlck5v
ZGUuaAppbmRleCBkYTFiNWU4OWNhMi4uYTQwMjNhMzBkZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQW5hbHlzZXJOb2RlLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJhdWRpby9BbmFseXNlck5vZGUuaApAQCAtMzIsNyArMzIsNyBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBBbmFseXNlck5vZGUgZmluYWwgOiBwdWJsaWMgQXVkaW9C
YXNpY0luc3BlY3Rvck5vZGUgewogICAgIFdURl9NQUtFX0lTT19BTExPQ0FURUQoQW5hbHlzZXJO
b2RlKTsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPEFuYWx5c2VyTm9kZT4gY3JlYXRlKEF1ZGlv
Q29udGV4dCYgY29udGV4dCwgZmxvYXQgc2FtcGxlUmF0ZSkKKyAgICBzdGF0aWMgUmVmPEFuYWx5
c2VyTm9kZT4gY3JlYXRlKEF1ZGlvQ29udGV4dEJhc2UmIGNvbnRleHQsIGZsb2F0IHNhbXBsZVJh
dGUpCiAgICAgewogICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBBbmFseXNlck5vZGUoY29u
dGV4dCwgc2FtcGxlUmF0ZSkpOwogICAgIH0KQEAgLTU4LDcgKzU4LDcgQEAgcHVibGljOgogICAg
IHZvaWQgZ2V0Qnl0ZVRpbWVEb21haW5EYXRhKGNvbnN0IFJlZlB0cjxKU0M6OlVpbnQ4QXJyYXk+
JiBhcnJheSkgeyBtX2FuYWx5c2VyLmdldEJ5dGVUaW1lRG9tYWluRGF0YShhcnJheS5nZXQoKSk7
IH0KIAogcHJpdmF0ZToKLSAgICBBbmFseXNlck5vZGUoQXVkaW9Db250ZXh0JiwgZmxvYXQgc2Ft
cGxlUmF0ZSk7CisgICAgQW5hbHlzZXJOb2RlKEF1ZGlvQ29udGV4dEJhc2UmLCBmbG9hdCBzYW1w
bGVSYXRlKTsKIAogICAgIHZvaWQgcHJvY2VzcyhzaXplX3QgZnJhbWVzVG9Qcm9jZXNzKSBmaW5h
bDsKICAgICB2b2lkIHJlc2V0KCkgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQmFzaWNJbnNwZWN0b3JOb2RlLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9CYXNpY0luc3BlY3Rvck5vZGUuY3BwCmluZGV4IDBm
YjU1YjA4ZjBjLi4xNDUzZGFjYWZkYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJhdWRpby9BdWRpb0Jhc2ljSW5zcGVjdG9yTm9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0Jhc2ljSW5zcGVjdG9yTm9kZS5jcHAKQEAgLTM2LDcg
KzM2LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBXVEZfTUFLRV9JU09fQUxMT0NBVEVEX0lN
UEwoQXVkaW9CYXNpY0luc3BlY3Rvck5vZGUpOwogCi1BdWRpb0Jhc2ljSW5zcGVjdG9yTm9kZTo6
QXVkaW9CYXNpY0luc3BlY3Rvck5vZGUoQXVkaW9Db250ZXh0JiBjb250ZXh0LCBmbG9hdCBzYW1w
bGVSYXRlLCB1bnNpZ25lZCBvdXRwdXRDaGFubmVsQ291bnQpCitBdWRpb0Jhc2ljSW5zcGVjdG9y
Tm9kZTo6QXVkaW9CYXNpY0luc3BlY3Rvck5vZGUoQXVkaW9Db250ZXh0QmFzZSYgY29udGV4dCwg
ZmxvYXQgc2FtcGxlUmF0ZSwgdW5zaWduZWQgb3V0cHV0Q2hhbm5lbENvdW50KQogICAgIDogQXVk
aW9Ob2RlKGNvbnRleHQsIHNhbXBsZVJhdGUpCiB7CiAgICAgc2V0Tm9kZVR5cGUoTm9kZVR5cGVC
YXNpY0luc3BlY3Rvcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1
ZGlvL0F1ZGlvQmFzaWNJbnNwZWN0b3JOb2RlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmF1ZGlvL0F1ZGlvQmFzaWNJbnNwZWN0b3JOb2RlLmgKaW5kZXggODBlMDhkMjk2MTcuLmU3Njll
NDZhZTIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlv
QmFzaWNJbnNwZWN0b3JOb2RlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRp
by9BdWRpb0Jhc2ljSW5zcGVjdG9yTm9kZS5oCkBAIC0zNCw3ICszNCw3IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIGNsYXNzIEF1ZGlvQmFzaWNJbnNwZWN0b3JOb2RlIDogcHVibGljIEF1ZGlvTm9k
ZSB7CiAgICAgV1RGX01BS0VfSVNPX0FMTE9DQVRFRChBdWRpb0Jhc2ljSW5zcGVjdG9yTm9kZSk7
CiBwdWJsaWM6Ci0gICAgQXVkaW9CYXNpY0luc3BlY3Rvck5vZGUoQXVkaW9Db250ZXh0JiwgZmxv
YXQgc2FtcGxlUmF0ZSwgdW5zaWduZWQgb3V0cHV0Q2hhbm5lbENvdW50KTsKKyAgICBBdWRpb0Jh
c2ljSW5zcGVjdG9yTm9kZShBdWRpb0NvbnRleHRCYXNlJiwgZmxvYXQgc2FtcGxlUmF0ZSwgdW5z
aWduZWQgb3V0cHV0Q2hhbm5lbENvdW50KTsKIAogcHJpdmF0ZToKICAgICB2b2lkIHB1bGxJbnB1
dHMoc2l6ZV90IGZyYW1lc1RvUHJvY2Vzcykgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQmFzaWNQcm9jZXNzb3JOb2RlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9CYXNpY1Byb2Nlc3Nvck5vZGUuY3Bw
CmluZGV4IDBiOWYxY2VkODc0Li5mN2I3OTZiZTU1NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0Jhc2ljUHJvY2Vzc29yTm9kZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0Jhc2ljUHJvY2Vzc29yTm9kZS5jcHAK
QEAgLTM5LDcgKzM5LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBXVEZfTUFLRV9JU09fQUxM
T0NBVEVEX0lNUEwoQXVkaW9CYXNpY1Byb2Nlc3Nvck5vZGUpOwogCi1BdWRpb0Jhc2ljUHJvY2Vz
c29yTm9kZTo6QXVkaW9CYXNpY1Byb2Nlc3Nvck5vZGUoQXVkaW9Db250ZXh0JiBjb250ZXh0LCBm
bG9hdCBzYW1wbGVSYXRlKQorQXVkaW9CYXNpY1Byb2Nlc3Nvck5vZGU6OkF1ZGlvQmFzaWNQcm9j
ZXNzb3JOb2RlKEF1ZGlvQ29udGV4dEJhc2UmIGNvbnRleHQsIGZsb2F0IHNhbXBsZVJhdGUpCiAg
ICAgOiBBdWRpb05vZGUoY29udGV4dCwgc2FtcGxlUmF0ZSkKIHsKICAgICBhZGRJbnB1dChtYWtl
VW5pcXVlPEF1ZGlvTm9kZUlucHV0Pih0aGlzKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQmFzaWNQcm9jZXNzb3JOb2RlLmggYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQmFzaWNQcm9jZXNzb3JOb2RlLmgKaW5kZXggODJj
ZmZkYTU5ZjIuLmUxNjM3M2JmMDI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmF1ZGlvL0F1ZGlvQmFzaWNQcm9jZXNzb3JOb2RlLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJhdWRpby9BdWRpb0Jhc2ljUHJvY2Vzc29yTm9kZS5oCkBAIC0zNyw3ICszNyw3
IEBAIGNsYXNzIEF1ZGlvUHJvY2Vzc29yOwogY2xhc3MgQXVkaW9CYXNpY1Byb2Nlc3Nvck5vZGUg
OiBwdWJsaWMgQXVkaW9Ob2RlIHsKICAgICBXVEZfTUFLRV9JU09fQUxMT0NBVEVEKEF1ZGlvQmFz
aWNQcm9jZXNzb3JOb2RlKTsKIHB1YmxpYzoKLSAgICBBdWRpb0Jhc2ljUHJvY2Vzc29yTm9kZShB
dWRpb0NvbnRleHQmLCBmbG9hdCBzYW1wbGVSYXRlKTsKKyAgICBBdWRpb0Jhc2ljUHJvY2Vzc29y
Tm9kZShBdWRpb0NvbnRleHRCYXNlJiwgZmxvYXQgc2FtcGxlUmF0ZSk7CiAKICAgICAvLyBBdWRp
b05vZGUKICAgICB2b2lkIHByb2Nlc3Moc2l6ZV90IGZyYW1lc1RvUHJvY2Vzcykgb3ZlcnJpZGU7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQnVmZmVy
U291cmNlTm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQnVm
ZmVyU291cmNlTm9kZS5jcHAKaW5kZXggYzM2NjFkZTU3ZDcuLjBjMWJhNGU5NGE5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQnVmZmVyU291cmNlTm9k
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0J1ZmZlclNv
dXJjZU5vZGUuY3BwCkBAIC00OSwxMiArNDksMTIgQEAgY29uc3QgZG91YmxlIERlZmF1bHRHcmFp
bkR1cmF0aW9uID0gMC4wMjA7IC8vIDIwbXMKIC8vIHRvIG1pbmltaXplIGxpbmVhciBpbnRlcnBv
bGF0aW9uIGFsaWFzaW5nLgogY29uc3QgZG91YmxlIE1heFJhdGUgPSAxMDI0OwogCi1SZWY8QXVk
aW9CdWZmZXJTb3VyY2VOb2RlPiBBdWRpb0J1ZmZlclNvdXJjZU5vZGU6OmNyZWF0ZShBdWRpb0Nv
bnRleHQmIGNvbnRleHQsIGZsb2F0IHNhbXBsZVJhdGUpCitSZWY8QXVkaW9CdWZmZXJTb3VyY2VO
b2RlPiBBdWRpb0J1ZmZlclNvdXJjZU5vZGU6OmNyZWF0ZShBdWRpb0NvbnRleHRCYXNlJiBjb250
ZXh0LCBmbG9hdCBzYW1wbGVSYXRlKQogewogICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEF1ZGlv
QnVmZmVyU291cmNlTm9kZShjb250ZXh0LCBzYW1wbGVSYXRlKSk7CiB9CiAKLUF1ZGlvQnVmZmVy
U291cmNlTm9kZTo6QXVkaW9CdWZmZXJTb3VyY2VOb2RlKEF1ZGlvQ29udGV4dCYgY29udGV4dCwg
ZmxvYXQgc2FtcGxlUmF0ZSkKK0F1ZGlvQnVmZmVyU291cmNlTm9kZTo6QXVkaW9CdWZmZXJTb3Vy
Y2VOb2RlKEF1ZGlvQ29udGV4dEJhc2UmIGNvbnRleHQsIGZsb2F0IHNhbXBsZVJhdGUpCiAgICAg
OiBBdWRpb1NjaGVkdWxlZFNvdXJjZU5vZGUoY29udGV4dCwgc2FtcGxlUmF0ZSkKICAgICAsIG1f
YnVmZmVyKG51bGxwdHIpCiAgICAgLCBtX2lzTG9vcGluZyhmYWxzZSkKQEAgLTQxMyw3ICs0MTMs
NyBAQCB2b2lkIEF1ZGlvQnVmZmVyU291cmNlTm9kZTo6c2V0QnVmZmVyKFJlZlB0cjxBdWRpb0J1
ZmZlcj4mJiBidWZmZXIpCiAgICAgREVCVUdfTE9HKExPR0lERU5USUZJRVIpOwogCiAgICAgLy8g
VGhlIGNvbnRleHQgbXVzdCBiZSBsb2NrZWQgc2luY2UgY2hhbmdpbmcgdGhlIGJ1ZmZlciBjYW4g
cmUtY29uZmlndXJlIHRoZSBudW1iZXIgb2YgY2hhbm5lbHMgdGhhdCBhcmUgb3V0cHV0LgotICAg
IEF1ZGlvQ29udGV4dDo6QXV0b0xvY2tlciBjb250ZXh0TG9ja2VyKGNvbnRleHQoKSk7CisgICAg
QXVkaW9Db250ZXh0QmFzZTo6QXV0b0xvY2tlciBjb250ZXh0TG9ja2VyKGNvbnRleHQoKSk7CiAg
ICAgCiAgICAgLy8gVGhpcyBzeW5jaHJvbml6ZXMgd2l0aCBwcm9jZXNzKCkuCiAgICAgYXV0byBs
b2NrZXIgPSBob2xkTG9jayhtX3Byb2Nlc3NNdXRleCk7CkBAIC01NTcsNyArNTU3LDcgQEAgYm9v
bCBBdWRpb0J1ZmZlclNvdXJjZU5vZGU6OnByb3BhZ2F0ZXNTaWxlbmNlKCkgY29uc3QKICAgICBy
ZXR1cm4gIWlzUGxheWluZ09yU2NoZWR1bGVkKCkgfHwgaGFzRmluaXNoZWQoKSB8fCAhbV9idWZm
ZXI7CiB9CiAKLXZvaWQgQXVkaW9CdWZmZXJTb3VyY2VOb2RlOjpzZXRQYW5uZXJOb2RlKFBhbm5l
ck5vZGUqIHBhbm5lck5vZGUpCit2b2lkIEF1ZGlvQnVmZmVyU291cmNlTm9kZTo6c2V0UGFubmVy
Tm9kZShQYW5uZXJOb2RlQmFzZSogcGFubmVyTm9kZSkKIHsKICAgICBpZiAobV9wYW5uZXJOb2Rl
ICE9IHBhbm5lck5vZGUgJiYgIWhhc0ZpbmlzaGVkKCkpIHsKICAgICAgICAgaWYgKHBhbm5lck5v
ZGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQnVm
ZmVyU291cmNlTm9kZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0J1
ZmZlclNvdXJjZU5vZGUuaAppbmRleCA1NDhiMjZlN2ZhNy4uNjAxMTMxMTk5YTQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9CdWZmZXJTb3VyY2VOb2Rl
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0J1ZmZlclNvdXJj
ZU5vZGUuaApAQCAtMzEsNyArMzEsNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBB
dWRpb0J1ZmZlcjsKLWNsYXNzIFBhbm5lck5vZGU7CitjbGFzcyBQYW5uZXJOb2RlQmFzZTsKIAog
Ly8gQXVkaW9CdWZmZXJTb3VyY2VOb2RlIGlzIGFuIEF1ZGlvTm9kZSByZXByZXNlbnRpbmcgYW4g
YXVkaW8gc291cmNlIGZyb20gYW4gaW4tbWVtb3J5IGF1ZGlvIGFzc2V0IHJlcHJlc2VudGVkIGJ5
IGFuIEF1ZGlvQnVmZmVyLgogLy8gSXQgZ2VuZXJhbGx5IHdpbGwgYmUgdXNlZCBmb3Igc2hvcnQg
c291bmRzIHdoaWNoIHJlcXVpcmUgYSBoaWdoIGRlZ3JlZSBvZiBzY2hlZHVsaW5nIGZsZXhpYmls
aXR5IChjYW4gcGxheWJhY2sgaW4gcmh5dGhtaWNhbGx5IHBlcmZlY3Qgd2F5cykuCkBAIC0zOSw3
ICszOSw3IEBAIGNsYXNzIFBhbm5lck5vZGU7CiBjbGFzcyBBdWRpb0J1ZmZlclNvdXJjZU5vZGUg
ZmluYWwgOiBwdWJsaWMgQXVkaW9TY2hlZHVsZWRTb3VyY2VOb2RlIHsKICAgICBXVEZfTUFLRV9J
U09fQUxMT0NBVEVEKEF1ZGlvQnVmZmVyU291cmNlTm9kZSk7CiBwdWJsaWM6Ci0gICAgc3RhdGlj
IFJlZjxBdWRpb0J1ZmZlclNvdXJjZU5vZGU+IGNyZWF0ZShBdWRpb0NvbnRleHQmLCBmbG9hdCBz
YW1wbGVSYXRlKTsKKyAgICBzdGF0aWMgUmVmPEF1ZGlvQnVmZmVyU291cmNlTm9kZT4gY3JlYXRl
KEF1ZGlvQ29udGV4dEJhc2UmLCBmbG9hdCBzYW1wbGVSYXRlKTsKIAogICAgIHZpcnR1YWwgfkF1
ZGlvQnVmZmVyU291cmNlTm9kZSgpOwogCkBAIC03OSw3ICs3OSw3IEBAIHB1YmxpYzoKICAgICBB
dWRpb1BhcmFtKiBwbGF5YmFja1JhdGUoKSB7IHJldHVybiBtX3BsYXliYWNrUmF0ZS5nZXQoKTsg
fQogCiAgICAgLy8gSWYgYSBwYW5uZXIgbm9kZSBpcyBzZXQsIHRoZW4gd2UgY2FuIGluY29ycG9y
YXRlIGRvcHBsZXIgc2hpZnQgaW50byB0aGUgcGxheWJhY2sgcGl0Y2ggcmF0ZS4KLSAgICB2b2lk
IHNldFBhbm5lck5vZGUoUGFubmVyTm9kZSopOworICAgIHZvaWQgc2V0UGFubmVyTm9kZShQYW5u
ZXJOb2RlQmFzZSopOwogICAgIHZvaWQgY2xlYXJQYW5uZXJOb2RlKCk7CiAKICAgICAvLyBJZiB3
ZSBhcmUgbm8gbG9uZ2VyIHBsYXlpbmcsIHByb3BvZ2F0ZSBzaWxlbmNlIGFoZWFkIHRvIGRvd25z
dHJlYW0gbm9kZXMuCkBAIC05MSw3ICs5MSw3IEBAIHB1YmxpYzoKICAgICBjb25zdCBjaGFyKiBh
Y3RpdmVET01PYmplY3ROYW1lKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gIkF1ZGlvQnVmZmVy
U291cmNlTm9kZSI7IH0KIAogcHJpdmF0ZToKLSAgICBBdWRpb0J1ZmZlclNvdXJjZU5vZGUoQXVk
aW9Db250ZXh0JiwgZmxvYXQgc2FtcGxlUmF0ZSk7CisgICAgQXVkaW9CdWZmZXJTb3VyY2VOb2Rl
KEF1ZGlvQ29udGV4dEJhc2UmLCBmbG9hdCBzYW1wbGVSYXRlKTsKIAogICAgIGRvdWJsZSB0YWls
VGltZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIDA7IH0KICAgICBkb3VibGUgbGF0ZW5jeVRpbWUo
KSBjb25zdCBmaW5hbCB7IHJldHVybiAwOyB9CkBAIC0xNDUsNyArMTQ1LDcgQEAgcHJpdmF0ZToK
IAogICAgIC8vIFdlIG9wdGlvbmFsbHkga2VlcCB0cmFjayBvZiBhIHBhbm5lciBub2RlIHdoaWNo
IGhhcyBhIGRvcHBsZXIgc2hpZnQgdGhhdCBpcyBpbmNvcnBvcmF0ZWQgaW50bwogICAgIC8vIHRo
ZSBwaXRjaCByYXRlLiBXZSBtYW51YWxseSBtYW5hZ2UgcmVmLWNvdW50aW5nIGJlY2F1c2Ugd2Ug
d2FudCB0byB1c2UgUmVmVHlwZUNvbm5lY3Rpb24uCi0gICAgUGFubmVyTm9kZSogbV9wYW5uZXJO
b2RlOworICAgIFBhbm5lck5vZGVCYXNlKiBtX3Bhbm5lck5vZGU7CiAKICAgICAvLyBUaGlzIHN5
bmNocm9uaXplcyBwcm9jZXNzKCkgd2l0aCBzZXRCdWZmZXIoKSB3aGljaCBjYW4gY2F1c2UgZHlu
YW1pYyBjaGFubmVsIGNvdW50IGNoYW5nZXMuCiAgICAgbXV0YWJsZSBMb2NrIG1fcHJvY2Vzc011
dGV4OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0Nv
bnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0NvbnRleHQu
Y3BwCmluZGV4IDM4MmRjN2NmMGNkLi40ZGEwYTE0MjExZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0LmNwcApAQCAtMTA3LDcgKzEwNyw3IEBA
IGNvbnN0IHVuc2lnbmVkIE1heFBlcmlvZGljV2F2ZUxlbmd0aCA9IDQwOTY7CiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAotV1RGX01BS0VfSVNPX0FMTE9DQVRFRF9JTVBMKEF1ZGlvQ29udGV4dCk7
CitXVEZfTUFLRV9JU09fQUxMT0NBVEVEX0lNUEwoQXVkaW9Db250ZXh0QmFzZSk7CiAKICNkZWZp
bmUgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChmbXQsIC4uLikgUkVMRUFTRV9MT0dfSUYoZG9jdW1l
bnQoKSAmJiBkb2N1bWVudCgpLT5wYWdlKCkgJiYgZG9jdW1lbnQoKS0+cGFnZSgpLT5pc0Fsd2F5
c09uTG9nZ2luZ0FsbG93ZWQoKSwgTWVkaWEsICIlcCAtIEF1ZGlvQ29udGV4dDo6IiBmbXQsIHRo
aXMsICMjX19WQV9BUkdTX18pCiAgICAgCkBAIC0xMzcsOSArMTM3LDE0IEBAIEV4Y2VwdGlvbk9y
PFJlZjxBdWRpb0NvbnRleHQ+PiBBdWRpb0NvbnRleHQ6OmNyZWF0ZShEb2N1bWVudCYgZG9jdW1l
bnQpCiAgICAgcmV0dXJuIGF1ZGlvQ29udGV4dDsKIH0KIAorQXVkaW9Db250ZXh0QmFzZTo6QXVk
aW9Db250ZXh0QmFzZShEb2N1bWVudCYgZG9jdW1lbnQpCisgICAgOiBBY3RpdmVET01PYmplY3Qo
ZG9jdW1lbnQpCit7Cit9CisKIC8vIENvbnN0cnVjdG9yIGZvciByZW5kZXJpbmcgdG8gdGhlIGF1
ZGlvIGhhcmR3YXJlLgogQXVkaW9Db250ZXh0OjpBdWRpb0NvbnRleHQoRG9jdW1lbnQmIGRvY3Vt
ZW50KQotICAgIDogQWN0aXZlRE9NT2JqZWN0KGRvY3VtZW50KQorICAgIDogQXVkaW9Db250ZXh0
QmFzZShkb2N1bWVudCkKICNpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKICAgICAsIG1fbG9nZ2Vy
KGRvY3VtZW50LmxvZ2dlcigpKQogICAgICwgbV9sb2dJZGVudGlmaWVyKHVuaXF1ZUxvZ0lkZW50
aWZpZXIoKSkKQEAgLTE2NCw3ICsxNjksNyBAQCBBdWRpb0NvbnRleHQ6OkF1ZGlvQ29udGV4dChE
b2N1bWVudCYgZG9jdW1lbnQpCiAKIC8vIENvbnN0cnVjdG9yIGZvciBvZmZsaW5lIChub24tcmVh
bHRpbWUpIHJlbmRlcmluZy4KIEF1ZGlvQ29udGV4dDo6QXVkaW9Db250ZXh0KERvY3VtZW50JiBk
b2N1bWVudCwgQXVkaW9CdWZmZXIqIHJlbmRlclRhcmdldCkKLSAgICA6IEFjdGl2ZURPTU9iamVj
dChkb2N1bWVudCkKKyAgICA6IEF1ZGlvQ29udGV4dEJhc2UoZG9jdW1lbnQpCiAjaWYgIVJFTEVB
U0VfTE9HX0RJU0FCTEVECiAgICAgLCBtX2xvZ2dlcihkb2N1bWVudC5sb2dnZXIoKSkKICAgICAs
IG1fbG9nSWRlbnRpZmllcih1bmlxdWVMb2dJZGVudGlmaWVyKCkpCkBAIC0zNjYsNyArMzcxLDcg
QEAgY29uc3QgY2hhciogQXVkaW9Db250ZXh0OjphY3RpdmVET01PYmplY3ROYW1lKCkgY29uc3QK
ICAgICByZXR1cm4gIkF1ZGlvQ29udGV4dCI7CiB9CiAKLURvY3VtZW50KiBBdWRpb0NvbnRleHQ6
OmRvY3VtZW50KCkgY29uc3QKK0RvY3VtZW50KiBBdWRpb0NvbnRleHRCYXNlOjpkb2N1bWVudCgp
IGNvbnN0CiB7CiAgICAgcmV0dXJuIGRvd25jYXN0PERvY3VtZW50PihtX3NjcmlwdEV4ZWN1dGlv
bkNvbnRleHQpOwogfQpAQCAtMTA2OCw3ICsxMDczLDcgQEAgdm9pZCBBdWRpb0NvbnRleHQ6OnBy
b2Nlc3NBdXRvbWF0aWNQdWxsTm9kZXMoc2l6ZV90IGZyYW1lc1RvUHJvY2VzcykKICAgICAgICAg
bm9kZS0+cHJvY2Vzc0lmTmVjZXNzYXJ5KGZyYW1lc1RvUHJvY2Vzcyk7CiB9CiAKLVNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQqIEF1ZGlvQ29udGV4dDo6c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpIGNv
bnN0CitTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBBdWRpb0NvbnRleHRCYXNlOjpzY3JpcHRFeGVj
dXRpb25Db250ZXh0KCkgY29uc3QKIHsKICAgICByZXR1cm4gQWN0aXZlRE9NT2JqZWN0OjpzY3Jp
cHRFeGVjdXRpb25Db250ZXh0KCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmF1ZGlvL0F1ZGlvQ29udGV4dC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJh
dWRpby9BdWRpb0NvbnRleHQuaAppbmRleCA4ZTA5NDM5NGNmZi4uZTMyNDM3NWVkYTkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0NvbnRleHQuaApAQCAtMjgs
NiArMjgsNyBAQAogI2luY2x1ZGUgIkFjdGl2ZURPTU9iamVjdC5oIgogI2luY2x1ZGUgIkFzeW5j
QXVkaW9EZWNvZGVyLmgiCiAjaW5jbHVkZSAiQXVkaW9CdXMuaCIKKyNpbmNsdWRlICJBdWRpb0Nv
bnRleHRTdGF0ZS5oIgogI2luY2x1ZGUgIkF1ZGlvRGVzdGluYXRpb25Ob2RlLmgiCiAjaW5jbHVk
ZSAiRXZlbnRUYXJnZXQuaCIKICNpbmNsdWRlICJNZWRpYUNhblN0YXJ0TGlzdGVuZXIuaCIKQEAg
LTc5LDQ0ICs4MCwxMzYgQEAgY2xhc3MgV2F2ZVNoYXBlck5vZGU7CiAKIHRlbXBsYXRlPHR5cGVu
YW1lIElETFR5cGU+IGNsYXNzIERPTVByb21pc2VEZWZlcnJlZDsKIAotLy8gQXVkaW9Db250ZXh0
IGlzIHRoZSBjb3JuZXJzdG9uZSBvZiB0aGUgd2ViIGF1ZGlvIEFQSSBhbmQgYWxsIEF1ZGlvTm9k
ZXMgYXJlIGNyZWF0ZWQgZnJvbSBpdC4KLS8vIEZvciB0aHJlYWQgc2FmZXR5IGJldHdlZW4gdGhl
IGF1ZGlvIHRocmVhZCBhbmQgdGhlIG1haW4gdGhyZWFkLCBpdCBoYXMgYSByZW5kZXJpbmcgZ3Jh
cGggbG9ja2luZyBtZWNoYW5pc20uIAotCi1jbGFzcyBBdWRpb0NvbnRleHQKK2NsYXNzIEF1ZGlv
Q29udGV4dEJhc2UKICAgICA6IHB1YmxpYyBBY3RpdmVET01PYmplY3QKICAgICAsIHB1YmxpYyBU
aHJlYWRTYWZlUmVmQ291bnRlZDxBdWRpb0NvbnRleHQ+CiAgICAgLCBwdWJsaWMgRXZlbnRUYXJn
ZXRXaXRoSW5saW5lRGF0YQogICAgICwgcHVibGljIE1lZGlhQ2FuU3RhcnRMaXN0ZW5lcgogICAg
ICwgcHVibGljIE1lZGlhUHJvZHVjZXIKLSAgICAsIHByaXZhdGUgUGxhdGZvcm1NZWRpYVNlc3Np
b25DbGllbnQKLSAgICAsIHByaXZhdGUgVmlzaWJpbGl0eUNoYW5nZUNsaWVudAogI2lmICFSRUxF
QVNFX0xPR19ESVNBQkxFRAotICAgICwgcHJpdmF0ZSBMb2dnZXJIZWxwZXIKKyAgICAsIHB1Ymxp
YyBMb2dnZXJIZWxwZXIKKyNlbmRpZgoreworICAgIFdURl9NQUtFX0lTT19BTExPQ0FURUQoQXVk
aW9Db250ZXh0QmFzZSk7CitwdWJsaWM6CisgICAgdmlydHVhbCB+QXVkaW9Db250ZXh0QmFzZSgp
ID0gZGVmYXVsdDsKKworICAgIC8vIFJlY29uY2lsZSByZWYvZGVyZWYgd2hpY2ggYXJlIGRlZmlu
ZWQgYm90aCBpbiBUaHJlYWRTYWZlUmVmQ291bnRlZCBhbmQgRXZlbnRUYXJnZXQuCisgICAgdXNp
bmcgVGhyZWFkU2FmZVJlZkNvdW50ZWQ6OnJlZjsKKyAgICB1c2luZyBUaHJlYWRTYWZlUmVmQ291
bnRlZDo6ZGVyZWY7CisKKyAgICBEb2N1bWVudCogZG9jdW1lbnQoKSBjb25zdDsKKworICAgIHZp
cnR1YWwgYm9vbCBpc0luaXRpYWxpemVkKCkgY29uc3QgPSAwOworCisgICAgdmlydHVhbCBzaXpl
X3QgY3VycmVudFNhbXBsZUZyYW1lKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgZmxvYXQgc2Ft
cGxlUmF0ZSgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGRvdWJsZSBjdXJyZW50VGltZSgpIGNv
bnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgaXNHcmFwaE93bmVyKCkgY29uc3QgPSAwOworCisg
ICAgdmlydHVhbCB2b2lkIHNldEF1ZGlvVGhyZWFkKFRocmVhZCYpID0gMDsKKyAgICB2aXJ0dWFs
IGJvb2wgaXNBdWRpb1RocmVhZCgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgaXNBdWRp
b1RocmVhZEZpbmlzaGVkKCkgPSAwOworCisgICAgdmlydHVhbCB2b2lkIGlzUGxheWluZ0F1ZGlv
RGlkQ2hhbmdlKCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBub2RlV2lsbEJlZ2luUGxheWJhY2so
KSA9IDA7CisKKyAgICB2aXJ0dWFsIHZvaWQgcG9zdFRhc2soV1RGOjpGdW5jdGlvbjx2b2lkKCk+
JiYpID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgaXNTdG9wcGVkKCkgY29uc3QgPSAwOworICAgIHZp
cnR1YWwgY29uc3QgU2VjdXJpdHlPcmlnaW4qIG9yaWdpbigpIGNvbnN0ID0gMDsKKyAgICB2aXJ0
dWFsIHZvaWQgYWRkQ29uc29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZSwgTWVzc2FnZUxldmVsLCBj
b25zdCBTdHJpbmcmIG1lc3NhZ2UpID0gMDsKKworICAgIHZpcnR1YWwgdm9pZCBtYXJrRm9yRGVs
ZXRpb24oQXVkaW9Ob2RlJikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBkZWxldGVNYXJrZWROb2Rl
cygpID0gMDsKKworICAgIHZpcnR1YWwgdm9pZCBoYW5kbGVQcmVSZW5kZXJUYXNrcygpID0gMDsK
KyAgICB2aXJ0dWFsIHZvaWQgaGFuZGxlUG9zdFJlbmRlclRhc2tzKCkgPSAwOworICAgIHZpcnR1
YWwgdm9pZCBwcm9jZXNzQXV0b21hdGljUHVsbE5vZGVzKHNpemVfdCBmcmFtZXNUb1Byb2Nlc3Mp
ID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgYWRkRGVmZXJyZWRGaW5pc2hEZXJlZihBdWRpb05vZGUq
KSA9IDA7CisKKyAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlTWFya2VkU3VtbWluZ0p1bmN0aW9uKEF1
ZGlvU3VtbWluZ0p1bmN0aW9uKikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBtYXJrU3VtbWluZ0p1
bmN0aW9uRGlydHkoQXVkaW9TdW1taW5nSnVuY3Rpb24qKSA9IDA7CisgICAgdmlydHVhbCB2b2lk
IG1hcmtBdWRpb05vZGVPdXRwdXREaXJ0eShBdWRpb05vZGVPdXRwdXQqKSA9IDA7CisKKyNpZiAh
UkVMRUFTRV9MT0dfRElTQUJMRUQKKyAgICB2aXJ0dWFsIGNvbnN0IHZvaWQqIG5leHRBdWRpb05v
ZGVMb2dJZGVudGlmaWVyKCkgPSAwOworICAgIHZpcnR1YWwgY29uc3Qgdm9pZCogbmV4dEF1ZGlv
UGFyYW1ldGVyTG9nSWRlbnRpZmllcigpID0gMDsKICNlbmRpZgorCisgICAgdmlydHVhbCB2b2lk
IGFkZEF1dG9tYXRpY1B1bGxOb2RlKEF1ZGlvTm9kZSYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQg
cmVtb3ZlQXV0b21hdGljUHVsbE5vZGUoQXVkaW9Ob2RlJikgPSAwOworCisgICAgdmlydHVhbCB2
b2lkIG5vdGlmeU5vZGVGaW5pc2hlZFByb2Nlc3NpbmcoQXVkaW9Ob2RlKikgPSAwOworCisgICAg
dmlydHVhbCB2b2lkIGZpbmlzaGVkUmVuZGVyaW5nKGJvb2wgZGlkUmVuZGVyaW5nKSA9IDA7CisK
KyAgICB2aXJ0dWFsIHZvaWQgaW5jcmVtZW50Q29ubmVjdGlvbkNvdW50KCkgPSAwOworICAgIHZp
cnR1YWwgdm9pZCBpbmNyZW1lbnRBY3RpdmVTb3VyY2VDb3VudCgpID0gMDsKKyAgICB2aXJ0dWFs
IHZvaWQgZGVjcmVtZW50QWN0aXZlU291cmNlQ291bnQoKSA9IDA7CisKKyAgICB2aXJ0dWFsIGJv
b2wgaXNPZmZsaW5lQ29udGV4dCgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgaXNBdWRp
b0NvbnRleHQoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBib29sIGlzV2ViS2l0QXVkaW9Db250
ZXh0KCkgY29uc3QgPSAwOworCisgICAgLy8gbXVzdFJlbGVhc2VMb2NrIGlzIHNldCB0byB0cnVl
IGlmIHdlIGFjcXVpcmVkIHRoZSBsb2NrIGluIHRoaXMgbWV0aG9kIGNhbGwgYW5kIGNhbGxlciBt
dXN0IHVubG9jaygpLCBmYWxzZSBpZiBpdCB3YXMgcHJldmlvdXNseSBhY3F1aXJlZC4KKyAgICB2
aXJ0dWFsIHZvaWQgbG9jayhib29sJiBtdXN0UmVsZWFzZUxvY2spID0gMDsKKyAgICB2aXJ0dWFs
IGJvb2wgdHJ5TG9jayhib29sJiBtdXN0UmVsZWFzZUxvY2spID0gMDsKKyAgICB2aXJ0dWFsIHZv
aWQgdW5sb2NrKCkgPSAwOworCisgICAgY2xhc3MgQXV0b0xvY2tlciB7CisgICAgcHVibGljOgor
ICAgICAgICBleHBsaWNpdCBBdXRvTG9ja2VyKEF1ZGlvQ29udGV4dEJhc2UmIGNvbnRleHQpCisg
ICAgICAgICAgICA6IG1fY29udGV4dChjb250ZXh0KQorICAgICAgICB7CisgICAgICAgICAgICBt
X2NvbnRleHQubG9jayhtX211c3RSZWxlYXNlTG9jayk7CisgICAgICAgIH0KKworICAgICAgICB+
QXV0b0xvY2tlcigpCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmIChtX211c3RSZWxlYXNlTG9j
aykKKyAgICAgICAgICAgICAgICBtX2NvbnRleHQudW5sb2NrKCk7CisgICAgICAgIH0KKworICAg
IHByaXZhdGU6CisgICAgICAgIEF1ZGlvQ29udGV4dEJhc2UmIG1fY29udGV4dDsKKyAgICAgICAg
Ym9vbCBtX211c3RSZWxlYXNlTG9jazsKKyAgICB9OworCisgICAgLy8gRXZlbnRUYXJnZXQKKyAg
ICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkgY29uc3Qg
ZmluYWw7CisKK3Byb3RlY3RlZDoKKyAgICBleHBsaWNpdCBBdWRpb0NvbnRleHRCYXNlKERvY3Vt
ZW50Jik7Cit9OworCisvLyBBdWRpb0NvbnRleHQgaXMgdGhlIGNvcm5lcnN0b25lIG9mIHRoZSB3
ZWIgYXVkaW8gQVBJIGFuZCBhbGwgQXVkaW9Ob2RlcyBhcmUgY3JlYXRlZCBmcm9tIGl0LgorLy8g
Rm9yIHRocmVhZCBzYWZldHkgYmV0d2VlbiB0aGUgYXVkaW8gdGhyZWFkIGFuZCB0aGUgbWFpbiB0
aHJlYWQsIGl0IGhhcyBhIHJlbmRlcmluZyBncmFwaCBsb2NraW5nIG1lY2hhbmlzbS4gCisKK2Ns
YXNzIEF1ZGlvQ29udGV4dAorICAgIDogcHVibGljIEF1ZGlvQ29udGV4dEJhc2UKKyAgICAsIHBy
aXZhdGUgUGxhdGZvcm1NZWRpYVNlc3Npb25DbGllbnQKKyAgICAsIHByaXZhdGUgVmlzaWJpbGl0
eUNoYW5nZUNsaWVudAogewotICAgIFdURl9NQUtFX0lTT19BTExPQ0FURUQoQXVkaW9Db250ZXh0
KTsKIHB1YmxpYzoKICAgICAvLyBDcmVhdGUgYW4gQXVkaW9Db250ZXh0IGZvciByZW5kZXJpbmcg
dG8gdGhlIGF1ZGlvIGhhcmR3YXJlLgogICAgIHN0YXRpYyBFeGNlcHRpb25PcjxSZWY8QXVkaW9D
b250ZXh0Pj4gY3JlYXRlKERvY3VtZW50Jik7CiAKICAgICB2aXJ0dWFsIH5BdWRpb0NvbnRleHQo
KTsKIAotICAgIGJvb2wgaXNJbml0aWFsaXplZCgpIGNvbnN0OworICAgIGJvb2wgaXNJbml0aWFs
aXplZCgpIGNvbnN0IGZpbmFsOwogICAgIAotICAgIGJvb2wgaXNPZmZsaW5lQ29udGV4dCgpIGNv
bnN0IHsgcmV0dXJuIG1faXNPZmZsaW5lQ29udGV4dDsgfQotCi0gICAgRG9jdW1lbnQqIGRvY3Vt
ZW50KCkgY29uc3Q7IC8vIEFTU0VSVHMgaWYgZG9jdW1lbnQgbm8gbG9uZ2VyIGV4aXN0cy4KKyAg
ICBib29sIGlzT2ZmbGluZUNvbnRleHQoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2lzT2ZmbGlu
ZUNvbnRleHQ7IH0KIAogICAgIERvY3VtZW50SWRlbnRpZmllciBob3N0aW5nRG9jdW1lbnRJZGVu
dGlmaWVyKCkgY29uc3QgZmluYWw7CiAKICAgICBBdWRpb0Rlc3RpbmF0aW9uTm9kZSogZGVzdGlu
YXRpb24oKSB7IHJldHVybiBtX2Rlc3RpbmF0aW9uTm9kZS5nZXQoKTsgfQotICAgIHNpemVfdCBj
dXJyZW50U2FtcGxlRnJhbWUoKSBjb25zdCB7IHJldHVybiBtX2Rlc3RpbmF0aW9uTm9kZSA/IG1f
ZGVzdGluYXRpb25Ob2RlLT5jdXJyZW50U2FtcGxlRnJhbWUoKSA6IDA7IH0KLSAgICBkb3VibGUg
Y3VycmVudFRpbWUoKSBjb25zdCB7IHJldHVybiBtX2Rlc3RpbmF0aW9uTm9kZSA/IG1fZGVzdGlu
YXRpb25Ob2RlLT5jdXJyZW50VGltZSgpIDogMC47IH0KLSAgICBmbG9hdCBzYW1wbGVSYXRlKCkg
Y29uc3QgeyByZXR1cm4gbV9kZXN0aW5hdGlvbk5vZGUgPyBtX2Rlc3RpbmF0aW9uTm9kZS0+c2Ft
cGxlUmF0ZSgpIDogMC5mOyB9CisgICAgc2l6ZV90IGN1cnJlbnRTYW1wbGVGcmFtZSgpIGNvbnN0
IGZpbmFsIHsgcmV0dXJuIG1fZGVzdGluYXRpb25Ob2RlID8gbV9kZXN0aW5hdGlvbk5vZGUtPmN1
cnJlbnRTYW1wbGVGcmFtZSgpIDogMDsgfQorICAgIGRvdWJsZSBjdXJyZW50VGltZSgpIGNvbnN0
IGZpbmFsIHsgcmV0dXJuIG1fZGVzdGluYXRpb25Ob2RlID8gbV9kZXN0aW5hdGlvbk5vZGUtPmN1
cnJlbnRUaW1lKCkgOiAwLjsgfQorICAgIGZsb2F0IHNhbXBsZVJhdGUoKSBjb25zdCBmaW5hbCB7
IHJldHVybiBtX2Rlc3RpbmF0aW9uTm9kZSA/IG1fZGVzdGluYXRpb25Ob2RlLT5zYW1wbGVSYXRl
KCkgOiAwLmY7IH0KICAgICB1bnNpZ25lZCBsb25nIGFjdGl2ZVNvdXJjZUNvdW50KCkgY29uc3Qg
eyByZXR1cm4gc3RhdGljX2Nhc3Q8dW5zaWduZWQgbG9uZz4obV9hY3RpdmVTb3VyY2VDb3VudCk7
IH0KIAotICAgIHZvaWQgaW5jcmVtZW50QWN0aXZlU291cmNlQ291bnQoKTsKLSAgICB2b2lkIGRl
Y3JlbWVudEFjdGl2ZVNvdXJjZUNvdW50KCk7CisgICAgdm9pZCBpbmNyZW1lbnRBY3RpdmVTb3Vy
Y2VDb3VudCgpIGZpbmFsOworICAgIHZvaWQgZGVjcmVtZW50QWN0aXZlU291cmNlQ291bnQoKSBm
aW5hbDsKICAgICAKICAgICBFeGNlcHRpb25PcjxSZWY8QXVkaW9CdWZmZXI+PiBjcmVhdGVCdWZm
ZXIodW5zaWduZWQgbnVtYmVyT2ZDaGFubmVscywgc2l6ZV90IG51bWJlck9mRnJhbWVzLCBmbG9h
dCBzYW1wbGVSYXRlKTsKICAgICBFeGNlcHRpb25PcjxSZWY8QXVkaW9CdWZmZXI+PiBjcmVhdGVC
dWZmZXIoQXJyYXlCdWZmZXImLCBib29sIG1peFRvTW9ubyk7CkBAIC0xMzAsNyArMjIzLDcgQEAg
cHVibGljOgogICAgIHZvaWQgcmVzdW1lUmVuZGVyaW5nKERPTVByb21pc2VEZWZlcnJlZDx2b2lk
PiYmKTsKICAgICB2b2lkIGNsb3NlKERPTVByb21pc2VEZWZlcnJlZDx2b2lkPiYmKTsKIAotICAg
IGVudW0gY2xhc3MgU3RhdGUgeyBTdXNwZW5kZWQsIFJ1bm5pbmcsIEludGVycnVwdGVkLCBDbG9z
ZWQgfTsKKyAgICB1c2luZyBTdGF0ZSA9IEF1ZGlvQ29udGV4dFN0YXRlOwogICAgIFN0YXRlIHN0
YXRlKCkgY29uc3Q7CiAgICAgYm9vbCBpc0Nsb3NlZCgpIGNvbnN0IHsgcmV0dXJuIG1fc3RhdGUg
PT0gU3RhdGU6OkNsb3NlZDsgfQogCkBAIC0xNjAsMzEgKzI1MywzMSBAQCBwdWJsaWM6CiAgICAg
RXhjZXB0aW9uT3I8UmVmPFBlcmlvZGljV2F2ZT4+IGNyZWF0ZVBlcmlvZGljV2F2ZShGbG9hdDMy
QXJyYXkmIHJlYWwsIEZsb2F0MzJBcnJheSYgaW1hZ2luYXJ5KTsKIAogICAgIC8vIFdoZW4gYSBz
b3VyY2Ugbm9kZSBoYXMgbm8gbW9yZSBwcm9jZXNzaW5nIHRvIGRvIChoYXMgZmluaXNoZWQgcGxh
eWluZyksIHRoZW4gaXQgdGVsbHMgdGhlIGNvbnRleHQgdG8gZGVyZWZlcmVuY2UgaXQuCi0gICAg
dm9pZCBub3RpZnlOb2RlRmluaXNoZWRQcm9jZXNzaW5nKEF1ZGlvTm9kZSopOworICAgIHZvaWQg
bm90aWZ5Tm9kZUZpbmlzaGVkUHJvY2Vzc2luZyhBdWRpb05vZGUqKSBmaW5hbDsKIAogICAgIC8v
IENhbGxlZCBhdCB0aGUgc3RhcnQgb2YgZWFjaCByZW5kZXIgcXVhbnR1bS4KLSAgICB2b2lkIGhh
bmRsZVByZVJlbmRlclRhc2tzKCk7CisgICAgdm9pZCBoYW5kbGVQcmVSZW5kZXJUYXNrcygpIGZp
bmFsOwogCiAgICAgLy8gQ2FsbGVkIGF0IHRoZSBlbmQgb2YgZWFjaCByZW5kZXIgcXVhbnR1bS4K
LSAgICB2b2lkIGhhbmRsZVBvc3RSZW5kZXJUYXNrcygpOworICAgIHZvaWQgaGFuZGxlUG9zdFJl
bmRlclRhc2tzKCkgZmluYWw7CiAKICAgICAvLyBDYWxsZWQgcGVyaW9kaWNhbGx5IGF0IHRoZSBl
bmQgb2YgZWFjaCByZW5kZXIgcXVhbnR1bSB0byBkZXJlZmVyZW5jZSBmaW5pc2hlZCBzb3VyY2Ug
bm9kZXMuCiAgICAgdm9pZCBkZXJlZkZpbmlzaGVkU291cmNlTm9kZXMoKTsKIAogICAgIC8vIFdl
IHNjaGVkdWxlIGRlbGV0aW9uIG9mIGFsbCBtYXJrZWQgbm9kZXMgYXQgdGhlIGVuZCBvZiBlYWNo
IHJlYWx0aW1lIHJlbmRlciBxdWFudHVtLgotICAgIHZvaWQgbWFya0ZvckRlbGV0aW9uKEF1ZGlv
Tm9kZSYpOwotICAgIHZvaWQgZGVsZXRlTWFya2VkTm9kZXMoKTsKKyAgICB2b2lkIG1hcmtGb3JE
ZWxldGlvbihBdWRpb05vZGUmKSBmaW5hbDsKKyAgICB2b2lkIGRlbGV0ZU1hcmtlZE5vZGVzKCkg
ZmluYWw7CiAKICAgICAvLyBBdWRpb0NvbnRleHQgY2FuIHB1bGwgbm9kZShzKSBhdCB0aGUgZW5k
IG9mIGVhY2ggcmVuZGVyIHF1YW50dW0gZXZlbiB3aGVuIHRoZXkgYXJlIG5vdCBjb25uZWN0ZWQg
dG8gYW55IGRvd25zdHJlYW0gbm9kZXMuCiAgICAgLy8gVGhlc2UgdHdvIG1ldGhvZHMgYXJlIGNh
bGxlZCBieSB0aGUgbm9kZXMgd2hvIHdhbnQgdG8gYWRkL3JlbW92ZSB0aGVtc2VsdmVzIGludG8v
ZnJvbSB0aGUgYXV0b21hdGljIHB1bGwgbGlzdHMuCi0gICAgdm9pZCBhZGRBdXRvbWF0aWNQdWxs
Tm9kZShBdWRpb05vZGUmKTsKLSAgICB2b2lkIHJlbW92ZUF1dG9tYXRpY1B1bGxOb2RlKEF1ZGlv
Tm9kZSYpOworICAgIHZvaWQgYWRkQXV0b21hdGljUHVsbE5vZGUoQXVkaW9Ob2RlJikgZmluYWw7
CisgICAgdm9pZCByZW1vdmVBdXRvbWF0aWNQdWxsTm9kZShBdWRpb05vZGUmKSBmaW5hbDsKIAog
ICAgIC8vIENhbGxlZCByaWdodCBiZWZvcmUgaGFuZGxlUG9zdFJlbmRlclRhc2tzKCkgdG8gaGFu
ZGxlIG5vZGVzIHdoaWNoIG5lZWQgdG8gYmUgcHVsbGVkIGV2ZW4gd2hlbiB0aGV5IGFyZSBub3Qg
Y29ubmVjdGVkIHRvIGFueXRoaW5nLgotICAgIHZvaWQgcHJvY2Vzc0F1dG9tYXRpY1B1bGxOb2Rl
cyhzaXplX3QgZnJhbWVzVG9Qcm9jZXNzKTsKKyAgICB2b2lkIHByb2Nlc3NBdXRvbWF0aWNQdWxs
Tm9kZXMoc2l6ZV90IGZyYW1lc1RvUHJvY2VzcykgZmluYWw7CiAKICAgICAvLyBLZWVwcyB0cmFj
ayBvZiB0aGUgbnVtYmVyIG9mIGNvbm5lY3Rpb25zIG1hZGUuCi0gICAgdm9pZCBpbmNyZW1lbnRD
b25uZWN0aW9uQ291bnQoKQorICAgIHZvaWQgaW5jcmVtZW50Q29ubmVjdGlvbkNvdW50KCkgZmlu
YWwKICAgICB7CiAgICAgICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAgICAgICAgIG1fY29u
bmVjdGlvbkNvdW50Kys7CkBAIC0xOTYsNjkgKzI4OSw0NiBAQCBwdWJsaWM6CiAgICAgLy8gVGhy
ZWFkIFNhZmV0eSBhbmQgR3JhcGggTG9ja2luZzoKICAgICAvLwogICAgIAotICAgIHZvaWQgc2V0
QXVkaW9UaHJlYWQoVGhyZWFkJiB0aHJlYWQpIHsgbV9hdWRpb1RocmVhZCA9ICZ0aHJlYWQ7IH0g
Ly8gRklYTUU6IGNoZWNrIGVpdGhlciBub3QgaW5pdGlhbGl6ZWQgb3IgdGhlIHNhbWUKKyAgICB2
b2lkIHNldEF1ZGlvVGhyZWFkKFRocmVhZCYgdGhyZWFkKSBmaW5hbCB7IG1fYXVkaW9UaHJlYWQg
PSAmdGhyZWFkOyB9IC8vIEZJWE1FOiBjaGVjayBlaXRoZXIgbm90IGluaXRpYWxpemVkIG9yIHRo
ZSBzYW1lCiAgICAgVGhyZWFkKiBhdWRpb1RocmVhZCgpIGNvbnN0IHsgcmV0dXJuIG1fYXVkaW9U
aHJlYWQ7IH0KLSAgICBib29sIGlzQXVkaW9UaHJlYWQoKSBjb25zdDsKKyAgICBib29sIGlzQXVk
aW9UaHJlYWQoKSBjb25zdCBmaW5hbDsKIAogICAgIC8vIFJldHVybnMgdHJ1ZSBvbmx5IGFmdGVy
IHRoZSBhdWRpbyB0aHJlYWQgaGFzIGJlZW4gc3RhcnRlZCBhbmQgdGhlbiBzaHV0ZG93bi4KLSAg
ICBib29sIGlzQXVkaW9UaHJlYWRGaW5pc2hlZCgpIHsgcmV0dXJuIG1faXNBdWRpb1RocmVhZEZp
bmlzaGVkOyB9CisgICAgYm9vbCBpc0F1ZGlvVGhyZWFkRmluaXNoZWQoKSBmaW5hbCB7IHJldHVy
biBtX2lzQXVkaW9UaHJlYWRGaW5pc2hlZDsgfQogICAgIAogICAgIC8vIG11c3RSZWxlYXNlTG9j
ayBpcyBzZXQgdG8gdHJ1ZSBpZiB3ZSBhY3F1aXJlZCB0aGUgbG9jayBpbiB0aGlzIG1ldGhvZCBj
YWxsIGFuZCBjYWxsZXIgbXVzdCB1bmxvY2soKSwgZmFsc2UgaWYgaXQgd2FzIHByZXZpb3VzbHkg
YWNxdWlyZWQuCi0gICAgdm9pZCBsb2NrKGJvb2wmIG11c3RSZWxlYXNlTG9jayk7CisgICAgdm9p
ZCBsb2NrKGJvb2wmIG11c3RSZWxlYXNlTG9jaykgZmluYWw7CiAKICAgICAvLyBSZXR1cm5zIHRy
dWUgaWYgd2Ugb3duIHRoZSBsb2NrLgogICAgIC8vIG11c3RSZWxlYXNlTG9jayBpcyBzZXQgdG8g
dHJ1ZSBpZiB3ZSBhY3F1aXJlZCB0aGUgbG9jayBpbiB0aGlzIG1ldGhvZCBjYWxsIGFuZCBjYWxs
ZXIgbXVzdCB1bmxvY2soKSwgZmFsc2UgaWYgaXQgd2FzIHByZXZpb3VzbHkgYWNxdWlyZWQuCi0g
ICAgYm9vbCB0cnlMb2NrKGJvb2wmIG11c3RSZWxlYXNlTG9jayk7CisgICAgYm9vbCB0cnlMb2Nr
KGJvb2wmIG11c3RSZWxlYXNlTG9jaykgZmluYWw7CiAKLSAgICB2b2lkIHVubG9jaygpOworICAg
IHZvaWQgdW5sb2NrKCkgZmluYWw7CiAKICAgICAvLyBSZXR1cm5zIHRydWUgaWYgdGhpcyB0aHJl
YWQgb3ducyB0aGUgY29udGV4dCdzIGxvY2suCi0gICAgYm9vbCBpc0dyYXBoT3duZXIoKSBjb25z
dDsKKyAgICBib29sIGlzR3JhcGhPd25lcigpIGNvbnN0IGZpbmFsOwogCiAgICAgLy8gUmV0dXJu
cyB0aGUgbWF4aW11bSBudW1iZXIgb2YgY2hhbm5lbHMgd2UgY2FuIHN1cHBvcnQuCiAgICAgc3Rh
dGljIHVuc2lnbmVkIG1heE51bWJlck9mQ2hhbm5lbHMoKSB7IHJldHVybiBNYXhOdW1iZXJPZkNo
YW5uZWxzOyB9Ci0KLSAgICBjbGFzcyBBdXRvTG9ja2VyIHsKLSAgICBwdWJsaWM6Ci0gICAgICAg
IGV4cGxpY2l0IEF1dG9Mb2NrZXIoQXVkaW9Db250ZXh0JiBjb250ZXh0KQotICAgICAgICAgICAg
OiBtX2NvbnRleHQoY29udGV4dCkKLSAgICAgICAgewotICAgICAgICAgICAgbV9jb250ZXh0Lmxv
Y2sobV9tdXN0UmVsZWFzZUxvY2spOwotICAgICAgICB9Ci0gICAgICAgIAotICAgICAgICB+QXV0
b0xvY2tlcigpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGlmIChtX211c3RSZWxlYXNlTG9jaykK
LSAgICAgICAgICAgICAgICBtX2NvbnRleHQudW5sb2NrKCk7Ci0gICAgICAgIH0KLQotICAgIHBy
aXZhdGU6Ci0gICAgICAgIEF1ZGlvQ29udGV4dCYgbV9jb250ZXh0OwotICAgICAgICBib29sIG1f
bXVzdFJlbGVhc2VMb2NrOwotICAgIH07CiAgICAgCiAgICAgLy8gSW4gQXVkaW9Ob2RlOjpkZXJl
ZigpIGEgdHJ5TG9jaygpIGlzIHVzZWQgZm9yIGNhbGxpbmcgZmluaXNoRGVyZWYoKSwgYnV0IGlm
IGl0IGZhaWxzIGtlZXAgdHJhY2sgaGVyZS4KLSAgICB2b2lkIGFkZERlZmVycmVkRmluaXNoRGVy
ZWYoQXVkaW9Ob2RlKik7CisgICAgdm9pZCBhZGREZWZlcnJlZEZpbmlzaERlcmVmKEF1ZGlvTm9k
ZSopIGZpbmFsOwogCiAgICAgLy8gSW4gdGhlIGF1ZGlvIHRocmVhZCBhdCB0aGUgc3RhcnQgb2Yg
ZWFjaCByZW5kZXIgY3ljbGUsIHdlJ2xsIGNhbGwgaGFuZGxlRGVmZXJyZWRGaW5pc2hEZXJlZnMo
KS4KICAgICB2b2lkIGhhbmRsZURlZmVycmVkRmluaXNoRGVyZWZzKCk7CiAKICAgICAvLyBPbmx5
IGFjY2Vzc2VkIHdoZW4gdGhlIGdyYXBoIGxvY2sgaXMgaGVsZC4KLSAgICB2b2lkIG1hcmtTdW1t
aW5nSnVuY3Rpb25EaXJ0eShBdWRpb1N1bW1pbmdKdW5jdGlvbiopOwotICAgIHZvaWQgbWFya0F1
ZGlvTm9kZU91dHB1dERpcnR5KEF1ZGlvTm9kZU91dHB1dCopOworICAgIHZvaWQgbWFya1N1bW1p
bmdKdW5jdGlvbkRpcnR5KEF1ZGlvU3VtbWluZ0p1bmN0aW9uKikgZmluYWw7CisgICAgdm9pZCBt
YXJrQXVkaW9Ob2RlT3V0cHV0RGlydHkoQXVkaW9Ob2RlT3V0cHV0KikgZmluYWw7CiAKICAgICAv
LyBNdXN0IGJlIGNhbGxlZCBvbiBtYWluIHRocmVhZC4KLSAgICB2b2lkIHJlbW92ZU1hcmtlZFN1
bW1pbmdKdW5jdGlvbihBdWRpb1N1bW1pbmdKdW5jdGlvbiopOworICAgIHZvaWQgcmVtb3ZlTWFy
a2VkU3VtbWluZ0p1bmN0aW9uKEF1ZGlvU3VtbWluZ0p1bmN0aW9uKikgZmluYWw7CiAKICAgICAv
LyBFdmVudFRhcmdldAogICAgIEV2ZW50VGFyZ2V0SW50ZXJmYWNlIGV2ZW50VGFyZ2V0SW50ZXJm
YWNlKCkgY29uc3QgZmluYWwgeyByZXR1cm4gQXVkaW9Db250ZXh0RXZlbnRUYXJnZXRJbnRlcmZh
Y2VUeXBlOyB9CiAKLSAgICAvLyBSZWNvbmNpbGUgcmVmL2RlcmVmIHdoaWNoIGFyZSBkZWZpbmVk
IGJvdGggaW4gVGhyZWFkU2FmZVJlZkNvdW50ZWQgYW5kIEV2ZW50VGFyZ2V0LgotICAgIHVzaW5n
IFRocmVhZFNhZmVSZWZDb3VudGVkOjpyZWY7Ci0gICAgdXNpbmcgVGhyZWFkU2FmZVJlZkNvdW50
ZWQ6OmRlcmVmOwotCiAgICAgdm9pZCBzdGFydFJlbmRlcmluZygpOwotICAgIHZvaWQgZmluaXNo
ZWRSZW5kZXJpbmcoYm9vbCBkaWRSZW5kZXJpbmcpOworICAgIHZvaWQgZmluaXNoZWRSZW5kZXJp
bmcoYm9vbCBkaWRSZW5kZXJpbmcpIGZpbmFsOwogCiAgICAgc3RhdGljIHVuc2lnbmVkIHNfaGFy
ZHdhcmVDb250ZXh0Q291bnQ7CiAKQEAgLTI3NCwyNSArMzQ0LDIyIEBAIHB1YmxpYzoKICAgICB2
b2lkIGFkZEJlaGF2aW9yUmVzdHJpY3Rpb24oQmVoYXZpb3JSZXN0cmljdGlvbnMgcmVzdHJpY3Rp
b24pIHsgbV9yZXN0cmljdGlvbnMgfD0gcmVzdHJpY3Rpb247IH0KICAgICB2b2lkIHJlbW92ZUJl
aGF2aW9yUmVzdHJpY3Rpb24oQmVoYXZpb3JSZXN0cmljdGlvbnMgcmVzdHJpY3Rpb24pIHsgbV9y
ZXN0cmljdGlvbnMgJj0gfnJlc3RyaWN0aW9uOyB9CiAKLSAgICB2b2lkIGlzUGxheWluZ0F1ZGlv
RGlkQ2hhbmdlKCk7CisgICAgdm9pZCBpc1BsYXlpbmdBdWRpb0RpZENoYW5nZSgpIGZpbmFsOwog
Ci0gICAgdm9pZCBub2RlV2lsbEJlZ2luUGxheWJhY2soKTsKKyAgICB2b2lkIG5vZGVXaWxsQmVn
aW5QbGF5YmFjaygpIGZpbmFsOwogCiAjaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECiAgICAgY29u
c3QgTG9nZ2VyJiBsb2dnZXIoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2xvZ2dlci5nZXQoKTsg
fQogICAgIGNvbnN0IHZvaWQqIGxvZ0lkZW50aWZpZXIoKSBjb25zdCBmaW5hbCB7IHJldHVybiBt
X2xvZ0lkZW50aWZpZXI7IH0KICAgICBXVEZMb2dDaGFubmVsJiBsb2dDaGFubmVsKCkgY29uc3Qg
ZmluYWw7Ci0gICAgY29uc3Qgdm9pZCogbmV4dEF1ZGlvTm9kZUxvZ0lkZW50aWZpZXIoKSB7IHJl
dHVybiBjaGlsZExvZ0lkZW50aWZpZXIobV9sb2dJZGVudGlmaWVyLCArK21fbmV4dEF1ZGlvTm9k
ZUlkZW50aWZpZXIpOyB9Ci0gICAgY29uc3Qgdm9pZCogbmV4dEF1ZGlvUGFyYW1ldGVyTG9nSWRl
bnRpZmllcigpIHsgcmV0dXJuIGNoaWxkTG9nSWRlbnRpZmllcihtX2xvZ0lkZW50aWZpZXIsICsr
bV9uZXh0QXVkaW9QYXJhbWV0ZXJJZGVudGlmaWVyKTsgfQorICAgIGNvbnN0IHZvaWQqIG5leHRB
dWRpb05vZGVMb2dJZGVudGlmaWVyKCkgZmluYWwgeyByZXR1cm4gY2hpbGRMb2dJZGVudGlmaWVy
KG1fbG9nSWRlbnRpZmllciwgKyttX25leHRBdWRpb05vZGVJZGVudGlmaWVyKTsgfQorICAgIGNv
bnN0IHZvaWQqIG5leHRBdWRpb1BhcmFtZXRlckxvZ0lkZW50aWZpZXIoKSBmaW5hbCB7IHJldHVy
biBjaGlsZExvZ0lkZW50aWZpZXIobV9sb2dJZGVudGlmaWVyLCArK21fbmV4dEF1ZGlvUGFyYW1l
dGVySWRlbnRpZmllcik7IH0KICNlbmRpZgogCi0gICAgdm9pZCBwb3N0VGFzayhXVEY6OkZ1bmN0
aW9uPHZvaWQoKT4mJik7Ci0gICAgYm9vbCBpc1N0b3BwZWQoKSBjb25zdCB7IHJldHVybiBtX2lz
U3RvcFNjaGVkdWxlZDsgfQotICAgIGNvbnN0IFNlY3VyaXR5T3JpZ2luKiBvcmlnaW4oKSBjb25z
dDsKLSAgICB2b2lkIGFkZENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VTb3VyY2UsIE1lc3NhZ2VMZXZl
bCwgY29uc3QgU3RyaW5nJiBtZXNzYWdlKTsKLQotICAgIC8vIEV2ZW50VGFyZ2V0Ci0gICAgU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpIGNvbnN0IGZpbmFs
OworICAgIHZvaWQgcG9zdFRhc2soV1RGOjpGdW5jdGlvbjx2b2lkKCk+JiYpIGZpbmFsOworICAg
IGJvb2wgaXNTdG9wcGVkKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9pc1N0b3BTY2hlZHVsZWQ7
IH0KKyAgICBjb25zdCBTZWN1cml0eU9yaWdpbiogb3JpZ2luKCkgY29uc3QgZmluYWw7CisgICAg
dm9pZCBhZGRDb25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNlLCBNZXNzYWdlTGV2ZWwsIGNvbnN0
IFN0cmluZyYgbWVzc2FnZSkgZmluYWw7CiAKIHByb3RlY3RlZDoKICAgICBleHBsaWNpdCBBdWRp
b0NvbnRleHQoRG9jdW1lbnQmKTsKQEAgLTM2MCw2ICs0MjcsOSBAQCBwcml2YXRlOgogCiAgICAg
dm9pZCB2aXNpYmlsaXR5U3RhdGVDaGFuZ2VkKCkgZmluYWw7CiAKKyAgICBib29sIGlzQXVkaW9D
b250ZXh0KCkgY29uc3QgZmluYWwgeyByZXR1cm4gdHJ1ZTsgfQorICAgIGJvb2wgaXNXZWJLaXRB
dWRpb0NvbnRleHQoKSBjb25zdCBmaW5hbCB7IHJldHVybiBmYWxzZTsgfQorCiAgICAgLy8gRXZl
bnRUYXJnZXQKICAgICB2b2lkIHJlZkV2ZW50VGFyZ2V0KCkgb3ZlcnJpZGUgeyByZWYoKTsgfQog
ICAgIHZvaWQgZGVyZWZFdmVudFRhcmdldCgpIG92ZXJyaWRlIHsgZGVyZWYoKTsgfQpAQCAtNDQ2
LDIxICs1MTYsMTMgQEAgcHJpdmF0ZToKICAgICBSZWZQdHI8UGVuZGluZ0FjdGl2aXR5PEF1ZGlv
Q29udGV4dD4+IG1fcGVuZGluZ0FjdGl2aXR5OwogfTsKIAotLy8gRklYTUU6IEZpbmQgb3V0IHdo
eSB0aGVzZSA9PS8hPSBmdW5jdGlvbnMgYXJlIG5lZWRlZCBhbmQgcmVtb3ZlIHRoZW0gaWYgcG9z
c2libGUuCi0KLWlubGluZSBib29sIG9wZXJhdG9yPT0oY29uc3QgQXVkaW9Db250ZXh0JiBsaHMs
IGNvbnN0IEF1ZGlvQ29udGV4dCYgcmhzKQotewotICAgIHJldHVybiAmbGhzID09ICZyaHM7Ci19
Ci0KLWlubGluZSBib29sIG9wZXJhdG9yIT0oY29uc3QgQXVkaW9Db250ZXh0JiBsaHMsIGNvbnN0
IEF1ZGlvQ29udGV4dCYgcmhzKQotewotICAgIHJldHVybiAmbGhzICE9ICZyaHM7Ci19Ci0KIGlu
bGluZSBBdWRpb0NvbnRleHQ6OlN0YXRlIEF1ZGlvQ29udGV4dDo6c3RhdGUoKSBjb25zdAogewog
ICAgIHJldHVybiBtX3N0YXRlOwogfQogCiB9IC8vIFdlYkNvcmUKKworU1BFQ0lBTElaRV9UWVBF
X1RSQUlUU19CRUdJTihXZWJDb3JlOjpBdWRpb0NvbnRleHQpCisgICAgc3RhdGljIGJvb2wgaXNU
eXBlKGNvbnN0IFdlYkNvcmU6OkF1ZGlvQ29udGV4dEJhc2UmIGNvbnRleHQpIHsgcmV0dXJuIGNv
bnRleHQuaXNBdWRpb0NvbnRleHQoKTsgfQorU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19FTkQoKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0NvbnRleHQu
aWRsIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0NvbnRleHQuaWRsCmlu
ZGV4IDEyMTI0YTM2Nzc3Li44M2RiM2I0ZDZiMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJhdWRpby9BdWRpb0NvbnRleHQuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0LmlkbApAQCAtMjMsMjIgKzIzLDE0IEBACiAgKiBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KICAqLwogCi1lbnVtIEF1ZGlvQ29udGV4dFN0YXRlIHsKLSAgICAic3VzcGVuZGVkIiwKLSAg
ICAicnVubmluZyIsCi0gICAgImludGVycnVwdGVkIiwKLSAgICAiY2xvc2VkIgotfTsKLQogWwog
ICAgIEFjdGl2ZURPTU9iamVjdCwKICAgICBDb25kaXRpb25hbD1XRUJfQVVESU8sCiAgICAgQ29u
c3RydWN0b3IsCiAgICAgQ29uc3RydWN0b3JDYWxsV2l0aD1Eb2N1bWVudCwKICAgICBDb25zdHJ1
Y3Rvck1heVRocm93RXhjZXB0aW9uLAotICAgIEVuYWJsZWRCeVNldHRpbmc9V2ViQXVkaW8sCisg
ICAgRW5hYmxlZEJ5U2V0dGluZz1Nb2Rlcm5VbnByZWZpeGVkV2ViQXVkaW8sCiAgICAgRXhwb3J0
TWFjcm89V0VCQ09SRV9FWFBPUlQsCi0gICAgSW50ZXJmYWNlTmFtZT13ZWJraXRBdWRpb0NvbnRl
eHQsCiBdIGludGVyZmFjZSBBdWRpb0NvbnRleHQgOiBFdmVudFRhcmdldCB7CiAgICAgLy8gQWxs
IHJlbmRlcmVkIGF1ZGlvIHVsdGltYXRlbHkgY29ubmVjdHMgdG8gZGVzdGluYXRpb24sIHdoaWNo
IHJlcHJlc2VudHMgdGhlIGF1ZGlvIGhhcmR3YXJlLgogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBB
dWRpb0Rlc3RpbmF0aW9uTm9kZSBkZXN0aW5hdGlvbjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0U3RhdGUuaCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0U3RhdGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMC4uMTYwMTMxMTA4ZmEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQ29udGV4dFN0YXRlLmgKQEAgLTAsMCAr
MSwzMiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE2LTIwMjAgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQgQU5ZCisg
KiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04KKyAqIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUworICogU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKK25hbWVzcGFjZSBXZWJDb3Jl
IHsKKworZW51bSBjbGFzcyBBdWRpb0NvbnRleHRTdGF0ZSB7IFN1c3BlbmRlZCwgUnVubmluZywg
SW50ZXJydXB0ZWQsIENsb3NlZCB9OworCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQ29udGV4dFN0YXRlLmlkbCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0U3RhdGUuaWRsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwLi5jOGQwOGJkMmI1NgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0U3RhdGUuaWRsCkBAIC0wLDAg
KzEsMzEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAsIEdvb2dsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04KKyAqIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUworICogU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworZW51bSBBdWRpb0NvbnRleHRTdGF0ZSB7CisgICAgInN1c3Bl
bmRlZCIsCisgICAgInJ1bm5pbmciLAorICAgICJpbnRlcnJ1cHRlZCIsCisgICAgImNsb3NlZCIK
K307CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvRGVz
dGluYXRpb25Ob2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9E
ZXN0aW5hdGlvbk5vZGUuY3BwCmluZGV4IGQ5YWJiOTc3N2E5Li42Nzc2MTdlY2IzMyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0Rlc3RpbmF0aW9uTm9k
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0Rlc3RpbmF0
aW9uTm9kZS5jcHAKQEAgLTM5LDcgKzM5LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIAog
V1RGX01BS0VfSVNPX0FMTE9DQVRFRF9JTVBMKEF1ZGlvRGVzdGluYXRpb25Ob2RlKTsKIAotQXVk
aW9EZXN0aW5hdGlvbk5vZGU6OkF1ZGlvRGVzdGluYXRpb25Ob2RlKEF1ZGlvQ29udGV4dCYgY29u
dGV4dCwgZmxvYXQgc2FtcGxlUmF0ZSkKK0F1ZGlvRGVzdGluYXRpb25Ob2RlOjpBdWRpb0Rlc3Rp
bmF0aW9uTm9kZShBdWRpb0NvbnRleHRCYXNlJiBjb250ZXh0LCBmbG9hdCBzYW1wbGVSYXRlKQog
ICAgIDogQXVkaW9Ob2RlKGNvbnRleHQsIHNhbXBsZVJhdGUpCiAgICAgLCBtX2N1cnJlbnRTYW1w
bGVGcmFtZSgwKQogICAgICwgbV9pc1NpbGVudCh0cnVlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0Rlc3RpbmF0aW9uTm9kZS5oIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0Rlc3RpbmF0aW9uTm9kZS5oCmluZGV4IDg5NDhm
NGVlNzBhLi4zNzZmNDYyNzEyZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJhdWRpby9BdWRpb0Rlc3RpbmF0aW9uTm9kZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViYXVkaW8vQXVkaW9EZXN0aW5hdGlvbk5vZGUuaApAQCAtMzYsNyArMzYsNyBAQCBjbGFz
cyBBdWRpb0NvbnRleHQ7CiBjbGFzcyBBdWRpb0Rlc3RpbmF0aW9uTm9kZSA6IHB1YmxpYyBBdWRp
b05vZGUsIHB1YmxpYyBBdWRpb0lPQ2FsbGJhY2sgewogICAgIFdURl9NQUtFX0lTT19BTExPQ0FU
RUQoQXVkaW9EZXN0aW5hdGlvbk5vZGUpOwogcHVibGljOgotICAgIEF1ZGlvRGVzdGluYXRpb25O
b2RlKEF1ZGlvQ29udGV4dCYsIGZsb2F0IHNhbXBsZVJhdGUpOworICAgIEF1ZGlvRGVzdGluYXRp
b25Ob2RlKEF1ZGlvQ29udGV4dEJhc2UmLCBmbG9hdCBzYW1wbGVSYXRlKTsKICAgICB2aXJ0dWFs
IH5BdWRpb0Rlc3RpbmF0aW9uTm9kZSgpOwogICAgIAogICAgIC8vIEF1ZGlvTm9kZSAgIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb05vZGUuY3BwIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb05vZGUuY3BwCmluZGV4IDc2NWVj
ZTMzMmY2Li5lNTU0Mzc3OWQ1MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJhdWRpby9BdWRpb05vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVk
aW8vQXVkaW9Ob2RlLmNwcApAQCAtMzMsNiArMzMsNyBAQAogI2luY2x1ZGUgIkF1ZGlvTm9kZU91
dHB1dC5oIgogI2luY2x1ZGUgIkF1ZGlvUGFyYW0uaCIKICNpbmNsdWRlICJMb2dnaW5nLmgiCisj
aW5jbHVkZSAiV2ViS2l0QXVkaW9Db250ZXh0LmgiCiAjaW5jbHVkZSA8d3RmL0F0b21pY3MuaD4K
ICNpbmNsdWRlIDx3dGYvSXNvTWFsbG9jSW5saW5lcy5oPgogI2luY2x1ZGUgPHd0Zi9NYWluVGhy
ZWFkLmg+CkBAIC05NSw3ICs5Niw3IEBAIFN0cmluZyBjb252ZXJ0RW51bWVyYXRpb25Ub1N0cmlu
ZyhBdWRpb05vZGU6Ok5vZGVUeXBlIGVudW1lcmF0aW9uVmFsdWUpCiAgICAgcmV0dXJuIHZhbHVl
c1tzdGF0aWNfY2FzdDxzaXplX3Q+KGVudW1lcmF0aW9uVmFsdWUpXTsKIH0KIAotQXVkaW9Ob2Rl
OjpBdWRpb05vZGUoQXVkaW9Db250ZXh0JiBjb250ZXh0LCBmbG9hdCBzYW1wbGVSYXRlKQorQXVk
aW9Ob2RlOjpBdWRpb05vZGUoQXVkaW9Db250ZXh0QmFzZSYgY29udGV4dCwgZmxvYXQgc2FtcGxl
UmF0ZSkKICAgICA6IG1faXNJbml0aWFsaXplZChmYWxzZSkKICAgICAsIG1fbm9kZVR5cGUoTm9k
ZVR5cGVVbmtub3duKQogICAgICwgbV9jb250ZXh0KGNvbnRleHQpCkBAIC0xOTQsNyArMTk1LDcg
QEAgQXVkaW9Ob2RlT3V0cHV0KiBBdWRpb05vZGU6Om91dHB1dCh1bnNpZ25lZCBpKQogRXhjZXB0
aW9uT3I8dm9pZD4gQXVkaW9Ob2RlOjpjb25uZWN0KEF1ZGlvTm9kZSYgZGVzdGluYXRpb24sIHVu
c2lnbmVkIG91dHB1dEluZGV4LCB1bnNpZ25lZCBpbnB1dEluZGV4KQogewogICAgIEFTU0VSVChp
c01haW5UaHJlYWQoKSk7Ci0gICAgQXVkaW9Db250ZXh0OjpBdXRvTG9ja2VyIGxvY2tlcihjb250
ZXh0KCkpOworICAgIEF1ZGlvQ29udGV4dEJhc2U6OkF1dG9Mb2NrZXIgbG9ja2VyKGNvbnRleHQo
KSk7CiAKICAgICBBTFdBWVNfTE9HKExPR0lERU5USUZJRVIsIGRlc3RpbmF0aW9uLm5vZGVUeXBl
KCksICIsIG91dHB1dCA9ICIsIG91dHB1dEluZGV4LCAiLCBpbnB1dCA9ICIsIGlucHV0SW5kZXgp
OwogICAgIApAQCAtMjA1LDcgKzIwNiw3IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IEF1ZGlvTm9kZTo6
Y29ubmVjdChBdWRpb05vZGUmIGRlc3RpbmF0aW9uLCB1bnNpZ25lZCBvdXRwdXRJbmRlCiAgICAg
aWYgKGlucHV0SW5kZXggPj0gZGVzdGluYXRpb24ubnVtYmVyT2ZJbnB1dHMoKSkKICAgICAgICAg
cmV0dXJuIEV4Y2VwdGlvbiB7IEluZGV4U2l6ZUVycm9yIH07CiAKLSAgICBpZiAoY29udGV4dCgp
ICE9IGRlc3RpbmF0aW9uLmNvbnRleHQoKSkKKyAgICBpZiAoJmNvbnRleHQoKSAhPSAmZGVzdGlu
YXRpb24uY29udGV4dCgpKQogICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgU3ludGF4RXJyb3Ig
fTsKIAogICAgIGF1dG8qIGlucHV0ID0gZGVzdGluYXRpb24uaW5wdXQoaW5wdXRJbmRleCk7CkBA
IC0yMjAsNyArMjIxLDcgQEAgRXhjZXB0aW9uT3I8dm9pZD4gQXVkaW9Ob2RlOjpjb25uZWN0KEF1
ZGlvTm9kZSYgZGVzdGluYXRpb24sIHVuc2lnbmVkIG91dHB1dEluZGUKIAogRXhjZXB0aW9uT3I8
dm9pZD4gQXVkaW9Ob2RlOjpjb25uZWN0KEF1ZGlvUGFyYW0mIHBhcmFtLCB1bnNpZ25lZCBvdXRw
dXRJbmRleCkKIHsKLSAgICBBdWRpb0NvbnRleHQ6OkF1dG9Mb2NrZXIgbG9ja2VyKGNvbnRleHQo
KSk7CisgICAgQXVkaW9Db250ZXh0QmFzZTo6QXV0b0xvY2tlciBsb2NrZXIoY29udGV4dCgpKTsK
IAogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAKQEAgLTIyOSw3ICsyMzAsNyBAQCBFeGNl
cHRpb25Pcjx2b2lkPiBBdWRpb05vZGU6OmNvbm5lY3QoQXVkaW9QYXJhbSYgcGFyYW0sIHVuc2ln
bmVkIG91dHB1dEluZGV4KQogICAgIGlmIChvdXRwdXRJbmRleCA+PSBudW1iZXJPZk91dHB1dHMo
KSkKICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IEluZGV4U2l6ZUVycm9yIH07CiAKLSAgICBp
ZiAoY29udGV4dCgpICE9IHBhcmFtLmNvbnRleHQoKSkKKyAgICBpZiAoJmNvbnRleHQoKSAhPSAm
cGFyYW0uY29udGV4dCgpKQogICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgU3ludGF4RXJyb3Ig
fTsKIAogICAgIGF1dG8qIG91dHB1dCA9IHRoaXMtPm91dHB1dChvdXRwdXRJbmRleCk7CkBAIC0y
NDEsNyArMjQyLDcgQEAgRXhjZXB0aW9uT3I8dm9pZD4gQXVkaW9Ob2RlOjpjb25uZWN0KEF1ZGlv
UGFyYW0mIHBhcmFtLCB1bnNpZ25lZCBvdXRwdXRJbmRleCkKIEV4Y2VwdGlvbk9yPHZvaWQ+IEF1
ZGlvTm9kZTo6ZGlzY29ubmVjdCh1bnNpZ25lZCBvdXRwdXRJbmRleCkKIHsKICAgICBBU1NFUlQo
aXNNYWluVGhyZWFkKCkpOwotICAgIEF1ZGlvQ29udGV4dDo6QXV0b0xvY2tlciBsb2NrZXIoY29u
dGV4dCgpKTsKKyAgICBBdWRpb0NvbnRleHRCYXNlOjpBdXRvTG9ja2VyIGxvY2tlcihjb250ZXh0
KCkpOwogCiAgICAgLy8gU2FuaXR5IGNoZWNrIGlucHV0IGFuZCBvdXRwdXQgaW5kaWNlcy4KICAg
ICBpZiAob3V0cHV0SW5kZXggPj0gbnVtYmVyT2ZPdXRwdXRzKCkpCkBAIC0yNjMsNyArMjY0LDcg
QEAgdW5zaWduZWQgQXVkaW9Ob2RlOjpjaGFubmVsQ291bnQoKQogRXhjZXB0aW9uT3I8dm9pZD4g
QXVkaW9Ob2RlOjpzZXRDaGFubmVsQ291bnQodW5zaWduZWQgY2hhbm5lbENvdW50KQogewogICAg
IEFTU0VSVChpc01haW5UaHJlYWQoKSk7Ci0gICAgQXVkaW9Db250ZXh0OjpBdXRvTG9ja2VyIGxv
Y2tlcihjb250ZXh0KCkpOworICAgIEF1ZGlvQ29udGV4dEJhc2U6OkF1dG9Mb2NrZXIgbG9ja2Vy
KGNvbnRleHQoKSk7CiAKICAgICBBTFdBWVNfTE9HKExPR0lERU5USUZJRVIsIGNoYW5uZWxDb3Vu
dCk7CiAgICAgCkBAIC0yOTYsNyArMjk3LDcgQEAgU3RyaW5nIEF1ZGlvTm9kZTo6Y2hhbm5lbENv
dW50TW9kZSgpCiBFeGNlcHRpb25Pcjx2b2lkPiBBdWRpb05vZGU6OnNldENoYW5uZWxDb3VudE1v
ZGUoY29uc3QgU3RyaW5nJiBtb2RlKQogewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7Ci0g
ICAgQXVkaW9Db250ZXh0OjpBdXRvTG9ja2VyIGxvY2tlcihjb250ZXh0KCkpOworICAgIEF1ZGlv
Q29udGV4dEJhc2U6OkF1dG9Mb2NrZXIgbG9ja2VyKGNvbnRleHQoKSk7CiAKICAgICBBTFdBWVNf
TE9HKExPR0lERU5USUZJRVIsIG1vZGUpOwogICAgIApAQCAtMzMyLDcgKzMzMyw3IEBAIFN0cmlu
ZyBBdWRpb05vZGU6OmNoYW5uZWxJbnRlcnByZXRhdGlvbigpCiBFeGNlcHRpb25Pcjx2b2lkPiBB
dWRpb05vZGU6OnNldENoYW5uZWxJbnRlcnByZXRhdGlvbihjb25zdCBTdHJpbmcmIGludGVycHJl
dGF0aW9uKQogewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7Ci0gICAgQXVkaW9Db250ZXh0
OjpBdXRvTG9ja2VyIGxvY2tlcihjb250ZXh0KCkpOworICAgIEF1ZGlvQ29udGV4dEJhc2U6OkF1
dG9Mb2NrZXIgbG9ja2VyKGNvbnRleHQoKSk7CiAKICAgICBBTFdBWVNfTE9HKExPR0lERU5USUZJ
RVIsIGludGVycHJldGF0aW9uKTsKICAgICAKQEAgLTQzNyw3ICs0MzgsNyBAQCB2b2lkIEF1ZGlv
Tm9kZTo6ZW5hYmxlT3V0cHV0c0lmTmVjZXNzYXJ5KCkKIHsKICAgICBpZiAobV9pc0Rpc2FibGVk
ICYmIG1fY29ubmVjdGlvblJlZkNvdW50ID4gMCkgewogICAgICAgICBBU1NFUlQoaXNNYWluVGhy
ZWFkKCkpOwotICAgICAgICBBdWRpb0NvbnRleHQ6OkF1dG9Mb2NrZXIgbG9ja2VyKGNvbnRleHQo
KSk7CisgICAgICAgIEF1ZGlvQ29udGV4dEJhc2U6OkF1dG9Mb2NrZXIgbG9ja2VyKGNvbnRleHQo
KSk7CiAKICAgICAgICAgbV9pc0Rpc2FibGVkID0gZmFsc2U7CiAgICAgICAgIGZvciAoYXV0byYg
b3V0cHV0IDogbV9vdXRwdXRzKQpAQCAtNTAxLDcgKzUwMiw3IEBAIHZvaWQgQXVkaW9Ob2RlOjpk
ZXJlZihSZWZUeXBlIHJlZlR5cGUpCiAgICAgLy8gSW4gdGhlIGNhc2Ugb2YgdGhlIGF1ZGlvIHRo
cmVhZCwgd2UgbXVzdCB1c2UgYSB0cnlMb2NrIHRvIGF2b2lkIGdsaXRjaGVzLgogICAgIGJvb2wg
aGFzTG9jayA9IGZhbHNlOwogICAgIGJvb2wgbXVzdFJlbGVhc2VMb2NrID0gZmFsc2U7Ci0gICAg
CisKICAgICBpZiAoY29udGV4dCgpLmlzQXVkaW9UaHJlYWQoKSkgewogICAgICAgICAvLyBSZWFs
LXRpbWUgYXVkaW8gdGhyZWFkIG11c3Qgbm90IGNvbnRlbmQgbG9jayAodG8gYXZvaWQgZ2xpdGNo
ZXMpLgogICAgICAgICBoYXNMb2NrID0gY29udGV4dCgpLnRyeUxvY2sobXVzdFJlbGVhc2VMb2Nr
KTsKQEAgLTUzMCw2ICs1MzEsMTMgQEAgdm9pZCBBdWRpb05vZGU6OmRlcmVmKFJlZlR5cGUgcmVm
VHlwZSkKICAgICAgICAgY29udGV4dCgpLmRlbGV0ZU1hcmtlZE5vZGVzKCk7CiB9CiAKK1Zhcmlh
bnQ8UmVmUHRyPEF1ZGlvQ29udGV4dD4sIFJlZlB0cjxXZWJLaXRBdWRpb0NvbnRleHQ+PiBBdWRp
b05vZGU6OmNvbnRleHRGb3JCaW5kaW5ncygpIGNvbnN0Cit7CisgICAgaWYgKG1fY29udGV4dC0+
aXNXZWJLaXRBdWRpb0NvbnRleHQoKSkKKyAgICAgICAgcmV0dXJuIG1ha2VSZWZQdHIoc3RhdGlj
X2Nhc3Q8V2ViS2l0QXVkaW9Db250ZXh0Jj4obV9jb250ZXh0LmdldCgpKSk7CisgICAgcmV0dXJu
IG1ha2VSZWZQdHIoc3RhdGljX2Nhc3Q8QXVkaW9Db250ZXh0Jj4obV9jb250ZXh0LmdldCgpKSk7
Cit9CisKIHZvaWQgQXVkaW9Ob2RlOjpmaW5pc2hEZXJlZihSZWZUeXBlIHJlZlR5cGUpCiB7CiAg
ICAgQVNTRVJUKGNvbnRleHQoKS5pc0dyYXBoT3duZXIoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvTm9kZS5oIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJhdWRpby9BdWRpb05vZGUuaAppbmRleCA0MjEwMTAwNmNjNy4uYTk4ODFiZDRiOGQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Ob2RlLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb05vZGUuaApAQCAtMjks
MTUgKzI5LDE4IEBACiAjaW5jbHVkZSAiRXhjZXB0aW9uT3IuaCIKICNpbmNsdWRlIDx3dGYvRm9y
d2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9Mb2dnZXJIZWxwZXIuaD4KKyNpbmNsdWRlIDx3dGYvVmFy
aWFudC5oPgogCiAjZGVmaW5lIERFQlVHX0FVRElPTk9ERV9SRUZFUkVOQ0VTIDAKIAogbmFtZXNw
YWNlIFdlYkNvcmUgewogCiBjbGFzcyBBdWRpb0NvbnRleHQ7CitjbGFzcyBBdWRpb0NvbnRleHRC
YXNlOwogY2xhc3MgQXVkaW9Ob2RlSW5wdXQ7CiBjbGFzcyBBdWRpb05vZGVPdXRwdXQ7CiBjbGFz
cyBBdWRpb1BhcmFtOworY2xhc3MgV2ViS2l0QXVkaW9Db250ZXh0OwogCiAvLyBBbiBBdWRpb05v
ZGUgaXMgdGhlIGJhc2ljIGJ1aWxkaW5nIGJsb2NrIGZvciBoYW5kbGluZyBhdWRpbyB3aXRoaW4g
YW4gQXVkaW9Db250ZXh0LgogLy8gSXQgbWF5IGJlIGFuIGF1ZGlvIHNvdXJjZSwgYW4gaW50ZXJt
ZWRpYXRlIHByb2Nlc3NpbmcgbW9kdWxlLCBvciBhbiBhdWRpbyBkZXN0aW5hdGlvbi4KQEAgLTU2
LDExICs1OSwxMyBAQCBjbGFzcyBBdWRpb05vZGUKIHB1YmxpYzoKICAgICBlbnVtIHsgUHJvY2Vz
c2luZ1NpemVJbkZyYW1lcyA9IDEyOCB9OwogCi0gICAgQXVkaW9Ob2RlKEF1ZGlvQ29udGV4dCYs
IGZsb2F0IHNhbXBsZVJhdGUpOworICAgIEF1ZGlvTm9kZShBdWRpb0NvbnRleHRCYXNlJiwgZmxv
YXQgc2FtcGxlUmF0ZSk7CiAgICAgdmlydHVhbCB+QXVkaW9Ob2RlKCk7CiAKLSAgICBBdWRpb0Nv
bnRleHQmIGNvbnRleHQoKSB7IHJldHVybiBtX2NvbnRleHQuZ2V0KCk7IH0KLSAgICBjb25zdCBB
dWRpb0NvbnRleHQmIGNvbnRleHQoKSBjb25zdCB7IHJldHVybiBtX2NvbnRleHQuZ2V0KCk7IH0K
KyAgICBBdWRpb0NvbnRleHRCYXNlJiBjb250ZXh0KCkgeyByZXR1cm4gbV9jb250ZXh0LmdldCgp
OyB9CisgICAgY29uc3QgQXVkaW9Db250ZXh0QmFzZSYgY29udGV4dCgpIGNvbnN0IHsgcmV0dXJu
IG1fY29udGV4dC5nZXQoKTsgfQorCisgICAgVmFyaWFudDxSZWZQdHI8QXVkaW9Db250ZXh0Piwg
UmVmUHRyPFdlYktpdEF1ZGlvQ29udGV4dD4+IGNvbnRleHRGb3JCaW5kaW5ncygpIGNvbnN0Owog
CiAgICAgZW51bSBOb2RlVHlwZSB7CiAgICAgICAgIE5vZGVUeXBlVW5rbm93biwKQEAgLTIwOSw3
ICsyMTQsNyBAQCBwcml2YXRlOgogCiAgICAgdm9sYXRpbGUgYm9vbCBtX2lzSW5pdGlhbGl6ZWQ7
CiAgICAgTm9kZVR5cGUgbV9ub2RlVHlwZTsKLSAgICBSZWY8QXVkaW9Db250ZXh0PiBtX2NvbnRl
eHQ7CisgICAgUmVmPEF1ZGlvQ29udGV4dEJhc2U+IG1fY29udGV4dDsKICAgICBmbG9hdCBtX3Nh
bXBsZVJhdGU7CiAgICAgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxBdWRpb05vZGVJbnB1dD4+IG1f
aW5wdXRzOwogICAgIFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8QXVkaW9Ob2RlT3V0cHV0Pj4gbV9v
dXRwdXRzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRp
b05vZGUuaWRsIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb05vZGUuaWRs
CmluZGV4IDcwZmVjOGM4MTQ1Li43MTkzOWM4MzE3MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb05vZGUuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViYXVkaW8vQXVkaW9Ob2RlLmlkbApAQCAtMjUsNyArMjUsNyBAQAogWwogICAgIENv
bmRpdGlvbmFsPVdFQl9BVURJTywKIF0gaW50ZXJmYWNlIEF1ZGlvTm9kZSA6IEV2ZW50VGFyZ2V0
IHsKLSAgICByZWFkb25seSBhdHRyaWJ1dGUgQXVkaW9Db250ZXh0IGNvbnRleHQ7CisgICAgW0lt
cGxlbWVudGVkQXM9Y29udGV4dEZvckJpbmRpbmdzXSByZWFkb25seSBhdHRyaWJ1dGUgKEF1ZGlv
Q29udGV4dCBvciBXZWJLaXRBdWRpb0NvbnRleHQpIGNvbnRleHQ7CiAgICAgcmVhZG9ubHkgYXR0
cmlidXRlIHVuc2lnbmVkIGxvbmcgbnVtYmVyT2ZJbnB1dHM7CiAgICAgcmVhZG9ubHkgYXR0cmli
dXRlIHVuc2lnbmVkIGxvbmcgbnVtYmVyT2ZPdXRwdXRzOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvTm9kZU91dHB1dC5oIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb05vZGVPdXRwdXQuaAppbmRleCA1MGE5NWVlMjA1Yy4u
ZjA4OTgzNjM1ZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8v
QXVkaW9Ob2RlT3V0cHV0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9B
dWRpb05vZGVPdXRwdXQuaApAQCAtNDcsNyArNDcsNyBAQCBwdWJsaWM6CiAKICAgICAvLyBDYW4g
YmUgY2FsbGVkIGZyb20gYW55IHRocmVhZC4KICAgICBBdWRpb05vZGUqIG5vZGUoKSBjb25zdCB7
IHJldHVybiBtX25vZGU7IH0KLSAgICBBdWRpb0NvbnRleHQmIGNvbnRleHQoKSB7IHJldHVybiBt
X25vZGUtPmNvbnRleHQoKTsgfQorICAgIEF1ZGlvQ29udGV4dEJhc2UmIGNvbnRleHQoKSB7IHJl
dHVybiBtX25vZGUtPmNvbnRleHQoKTsgfQogICAgIAogICAgIC8vIENhdXNlcyBvdXIgQXVkaW9O
b2RlIHRvIHByb2Nlc3MgaWYgaXQgaGFzbid0IGFscmVhZHkgZm9yIHRoaXMgcmVuZGVyIHF1YW50
dW0uCiAgICAgLy8gSXQgcmV0dXJucyB0aGUgYnVzIGNvbnRhaW5pbmcgdGhlIHByb2Nlc3NlZCBh
dWRpbyBmb3IgdGhpcyBvdXRwdXQsIHJldHVybmluZyBpblBsYWNlQnVzIGlmIGluLXBsYWNlIHBy
b2Nlc3Npbmcgd2FzIHBvc3NpYmxlLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJhdWRpby9BdWRpb1BhcmFtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVk
aW8vQXVkaW9QYXJhbS5jcHAKaW5kZXggMjkzNDU2NDQ1Y2MuLmQ0NzBiZjc0NmVmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvUGFyYW0uY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9QYXJhbS5jcHAKQEAgLTQxLDcg
KzQxLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY29uc3QgZG91YmxlIEF1ZGlvUGFyYW06OkRl
ZmF1bHRTbW9vdGhpbmdDb25zdGFudCA9IDAuMDU7CiBjb25zdCBkb3VibGUgQXVkaW9QYXJhbTo6
U25hcFRocmVzaG9sZCA9IDAuMDAxOwogCi1BdWRpb1BhcmFtOjpBdWRpb1BhcmFtKEF1ZGlvQ29u
dGV4dCYgY29udGV4dCwgY29uc3QgU3RyaW5nJiBuYW1lLCBkb3VibGUgZGVmYXVsdFZhbHVlLCBk
b3VibGUgbWluVmFsdWUsIGRvdWJsZSBtYXhWYWx1ZSwgdW5zaWduZWQgdW5pdHMpCitBdWRpb1Bh
cmFtOjpBdWRpb1BhcmFtKEF1ZGlvQ29udGV4dEJhc2UmIGNvbnRleHQsIGNvbnN0IFN0cmluZyYg
bmFtZSwgZG91YmxlIGRlZmF1bHRWYWx1ZSwgZG91YmxlIG1pblZhbHVlLCBkb3VibGUgbWF4VmFs
dWUsIHVuc2lnbmVkIHVuaXRzKQogICAgIDogQXVkaW9TdW1taW5nSnVuY3Rpb24oY29udGV4dCkK
ICAgICAsIG1fbmFtZShuYW1lKQogICAgICwgbV92YWx1ZShkZWZhdWx0VmFsdWUpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvUGFyYW0uaCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9QYXJhbS5oCmluZGV4IDIyNmM5NTdlNzA2
Li4xNmEyMTA5NTA0NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRp
by9BdWRpb1BhcmFtLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRp
b1BhcmFtLmgKQEAgLTMxLDYgKzMxLDcgQEAKICNpbmNsdWRlICJBdWRpb0NvbnRleHQuaCIKICNp
bmNsdWRlICJBdWRpb1BhcmFtVGltZWxpbmUuaCIKICNpbmNsdWRlICJBdWRpb1N1bW1pbmdKdW5j
dGlvbi5oIgorI2luY2x1ZGUgIldlYktpdEF1ZGlvQ29udGV4dC5oIgogI2luY2x1ZGUgPEphdmFT
Y3JpcHRDb3JlL0Zsb2F0MzJBcnJheS5oPgogI2luY2x1ZGUgPHN5cy90eXBlcy5oPgogI2luY2x1
ZGUgPHd0Zi9Mb2dnZXJIZWxwZXIuaD4KQEAgLTUyLDcgKzUzLDcgQEAgcHVibGljOgogICAgIHN0
YXRpYyBjb25zdCBkb3VibGUgRGVmYXVsdFNtb290aGluZ0NvbnN0YW50OwogICAgIHN0YXRpYyBj
b25zdCBkb3VibGUgU25hcFRocmVzaG9sZDsKIAotICAgIHN0YXRpYyBSZWY8QXVkaW9QYXJhbT4g
Y3JlYXRlKEF1ZGlvQ29udGV4dCYgY29udGV4dCwgY29uc3QgU3RyaW5nJiBuYW1lLCBkb3VibGUg
ZGVmYXVsdFZhbHVlLCBkb3VibGUgbWluVmFsdWUsIGRvdWJsZSBtYXhWYWx1ZSwgdW5zaWduZWQg
dW5pdHMgPSAwKQorICAgIHN0YXRpYyBSZWY8QXVkaW9QYXJhbT4gY3JlYXRlKEF1ZGlvQ29udGV4
dEJhc2UmIGNvbnRleHQsIGNvbnN0IFN0cmluZyYgbmFtZSwgZG91YmxlIGRlZmF1bHRWYWx1ZSwg
ZG91YmxlIG1pblZhbHVlLCBkb3VibGUgbWF4VmFsdWUsIHVuc2lnbmVkIHVuaXRzID0gMCkKICAg
ICB7CiAgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEF1ZGlvUGFyYW0oY29udGV4dCwgbmFt
ZSwgZGVmYXVsdFZhbHVlLCBtaW5WYWx1ZSwgbWF4VmFsdWUsIHVuaXRzKSk7CiAgICAgfQpAQCAt
MTA4LDcgKzEwOSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGRpc2Nvbm5lY3QoQXVkaW9Ob2RlT3V0
cHV0Kik7CiAKIHByb3RlY3RlZDoKLSAgICBBdWRpb1BhcmFtKEF1ZGlvQ29udGV4dCYsIGNvbnN0
IFN0cmluZyYsIGRvdWJsZSBkZWZhdWx0VmFsdWUsIGRvdWJsZSBtaW5WYWx1ZSwgZG91YmxlIG1h
eFZhbHVlLCB1bnNpZ25lZCB1bml0cyA9IDApOworICAgIEF1ZGlvUGFyYW0oQXVkaW9Db250ZXh0
QmFzZSYsIGNvbnN0IFN0cmluZyYsIGRvdWJsZSBkZWZhdWx0VmFsdWUsIGRvdWJsZSBtaW5WYWx1
ZSwgZG91YmxlIG1heFZhbHVlLCB1bnNpZ25lZCB1bml0cyA9IDApOwogCiBwcml2YXRlOgogICAg
IC8vIHNhbXBsZUFjY3VyYXRlIGNvcnJlc3BvbmRzIHRvIGEtcmF0ZSAoYXVkaW8gcmF0ZSkgdnMu
IGstcmF0ZSBpbiB0aGUgV2ViIEF1ZGlvIHNwZWNpZmljYXRpb24uCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvUGFyYW1UaW1lbGluZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvUGFyYW1UaW1lbGluZS5jcHAKaW5kZXgg
MmI1OTU3MGJmNmUuLjZjNDEzMDFkOGFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmF1ZGlvL0F1ZGlvUGFyYW1UaW1lbGluZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJhdWRpby9BdWRpb1BhcmFtVGltZWxpbmUuY3BwCkBAIC0xMTMsNyArMTEzLDcg
QEAgdm9pZCBBdWRpb1BhcmFtVGltZWxpbmU6OmNhbmNlbFNjaGVkdWxlZFZhbHVlcyhmbG9hdCBz
dGFydFRpbWUpCiAgICAgfQogfQogCi1mbG9hdCBBdWRpb1BhcmFtVGltZWxpbmU6OnZhbHVlRm9y
Q29udGV4dFRpbWUoQXVkaW9Db250ZXh0JiBjb250ZXh0LCBmbG9hdCBkZWZhdWx0VmFsdWUsIGJv
b2wmIGhhc1ZhbHVlKQorZmxvYXQgQXVkaW9QYXJhbVRpbWVsaW5lOjp2YWx1ZUZvckNvbnRleHRU
aW1lKEF1ZGlvQ29udGV4dEJhc2UmIGNvbnRleHQsIGZsb2F0IGRlZmF1bHRWYWx1ZSwgYm9vbCYg
aGFzVmFsdWUpCiB7CiAgICAgewogICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPExvY2s+IGxvY2so
bV9ldmVudHNNdXRleCwgc3RkOjp0cnlfdG9fbG9jayk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvUGFyYW1UaW1lbGluZS5oIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1BhcmFtVGltZWxpbmUuaAppbmRleCA3YzEwOTk5NTZj
ZS4uYTU4NjhiZGVlMTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVk
aW8vQXVkaW9QYXJhbVRpbWVsaW5lLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJh
dWRpby9BdWRpb1BhcmFtVGltZWxpbmUuaApAQCAtNTIsNyArNTIsNyBAQCBwdWJsaWM6CiAKICAg
ICAvLyBoYXNWYWx1ZSBpcyBzZXQgdG8gdHJ1ZSBpZiBhIHZhbGlkIHRpbWVsaW5lIHZhbHVlIGlz
IHJldHVybmVkLgogICAgIC8vIG90aGVyd2lzZSBkZWZhdWx0VmFsdWUgaXMgcmV0dXJuZWQuCi0g
ICAgZmxvYXQgdmFsdWVGb3JDb250ZXh0VGltZShBdWRpb0NvbnRleHQmLCBmbG9hdCBkZWZhdWx0
VmFsdWUsIGJvb2wmIGhhc1ZhbHVlKTsKKyAgICBmbG9hdCB2YWx1ZUZvckNvbnRleHRUaW1lKEF1
ZGlvQ29udGV4dEJhc2UmLCBmbG9hdCBkZWZhdWx0VmFsdWUsIGJvb2wmIGhhc1ZhbHVlKTsKIAog
ICAgIC8vIEdpdmVuIHRoZSB0aW1lIHJhbmdlLCBjYWxjdWxhdGVzIHBhcmFtZXRlciB2YWx1ZXMg
aW50byB0aGUgdmFsdWVzIGJ1ZmZlcgogICAgIC8vIGFuZCByZXR1cm5zIHRoZSBsYXN0IHBhcmFt
ZXRlciB2YWx1ZSBjYWxjdWxhdGVkIGZvciAidmFsdWVzIiBvciB0aGUgZGVmYXVsdFZhbHVlIGlm
IG5vbmUgd2VyZSBjYWxjdWxhdGVkLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJhdWRpby9BdWRpb1NjaGVkdWxlZFNvdXJjZU5vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJhdWRpby9BdWRpb1NjaGVkdWxlZFNvdXJjZU5vZGUuY3BwCmluZGV4IDBmNzI2
NzZmYzc0Li43YzI4MjM3YTBiZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJhdWRpby9BdWRpb1NjaGVkdWxlZFNvdXJjZU5vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViYXVkaW8vQXVkaW9TY2hlZHVsZWRTb3VyY2VOb2RlLmNwcApAQCAtNDksNyAr
NDksNyBAQCBXVEZfTUFLRV9JU09fQUxMT0NBVEVEX0lNUEwoQXVkaW9TY2hlZHVsZWRTb3VyY2VO
b2RlKTsKIAogY29uc3QgZG91YmxlIEF1ZGlvU2NoZWR1bGVkU291cmNlTm9kZTo6VW5rbm93blRp
bWUgPSAtMTsKIAotQXVkaW9TY2hlZHVsZWRTb3VyY2VOb2RlOjpBdWRpb1NjaGVkdWxlZFNvdXJj
ZU5vZGUoQXVkaW9Db250ZXh0JiBjb250ZXh0LCBmbG9hdCBzYW1wbGVSYXRlKQorQXVkaW9TY2hl
ZHVsZWRTb3VyY2VOb2RlOjpBdWRpb1NjaGVkdWxlZFNvdXJjZU5vZGUoQXVkaW9Db250ZXh0QmFz
ZSYgY29udGV4dCwgZmxvYXQgc2FtcGxlUmF0ZSkKICAgICA6IEF1ZGlvTm9kZShjb250ZXh0LCBz
YW1wbGVSYXRlKQogICAgICwgQWN0aXZlRE9NT2JqZWN0KGNvbnRleHQuc2NyaXB0RXhlY3V0aW9u
Q29udGV4dCgpKQogICAgICwgbV9lbmRUaW1lKFVua25vd25UaW1lKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1NjaGVkdWxlZFNvdXJjZU5vZGUuaCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9TY2hlZHVsZWRTb3VyY2VOb2Rl
LmgKaW5kZXggOGNhZGJlMTBhZmQuLmI0ZDk1ODgwYzFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvU2NoZWR1bGVkU291cmNlTm9kZS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9TY2hlZHVsZWRTb3VyY2VOb2RlLmgK
QEAgLTUzLDcgKzUzLDcgQEAgcHVibGljOgogICAgICAgICBGSU5JU0hFRF9TVEFURSA9IDMKICAg
ICB9OwogICAgIAotICAgIEF1ZGlvU2NoZWR1bGVkU291cmNlTm9kZShBdWRpb0NvbnRleHQmLCBm
bG9hdCBzYW1wbGVSYXRlKTsKKyAgICBBdWRpb1NjaGVkdWxlZFNvdXJjZU5vZGUoQXVkaW9Db250
ZXh0QmFzZSYsIGZsb2F0IHNhbXBsZVJhdGUpOwogCiAgICAgRXhjZXB0aW9uT3I8dm9pZD4gc3Rh
cnRMYXRlcihkb3VibGUgd2hlbik7CiAgICAgRXhjZXB0aW9uT3I8dm9pZD4gc3RvcExhdGVyKGRv
dWJsZSB3aGVuKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8v
QXVkaW9TdW1taW5nSnVuY3Rpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRp
by9BdWRpb1N1bW1pbmdKdW5jdGlvbi5jcHAKaW5kZXggZWU2MDBhNjI5YTEuLmRkNjRmZDNlYTgx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvU3VtbWlu
Z0p1bmN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlv
U3VtbWluZ0p1bmN0aW9uLmNwcApAQCAtMzQsNyArMzQsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKLUF1ZGlvU3VtbWluZ0p1bmN0aW9uOjpBdWRpb1N1bW1pbmdKdW5jdGlvbihBdWRpb0Nv
bnRleHQmIGNvbnRleHQpCitBdWRpb1N1bW1pbmdKdW5jdGlvbjo6QXVkaW9TdW1taW5nSnVuY3Rp
b24oQXVkaW9Db250ZXh0QmFzZSYgY29udGV4dCkKICAgICA6IG1fY29udGV4dChjb250ZXh0KQog
ICAgICwgbV9yZW5kZXJpbmdTdGF0ZU5lZWRVcGRhdGluZyhmYWxzZSkKIHsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9TdW1taW5nSnVuY3Rpb24uaCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9TdW1taW5nSnVuY3Rpb24uaApp
bmRleCBjOTRmZjZkNmE1YS4uNGNiZjhhZTlmYjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViYXVkaW8vQXVkaW9TdW1taW5nSnVuY3Rpb24uaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvU3VtbWluZ0p1bmN0aW9uLmgKQEAgLTMwLDE4ICsz
MCwxOCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIEF1ZGlvQ29udGV4dDsKK2Ns
YXNzIEF1ZGlvQ29udGV4dEJhc2U7CiBjbGFzcyBBdWRpb05vZGVPdXRwdXQ7CiAKIC8vIEFuIEF1
ZGlvU3VtbWluZ0p1bmN0aW9uIHJlcHJlc2VudHMgYSBwb2ludCB3aGVyZSB6ZXJvLCBvbmUsIG9y
IG1vcmUgQXVkaW9Ob2RlT3V0cHV0cyBjb25uZWN0LgogCiBjbGFzcyBBdWRpb1N1bW1pbmdKdW5j
dGlvbiB7CiBwdWJsaWM6Ci0gICAgZXhwbGljaXQgQXVkaW9TdW1taW5nSnVuY3Rpb24oQXVkaW9D
b250ZXh0Jik7CisgICAgZXhwbGljaXQgQXVkaW9TdW1taW5nSnVuY3Rpb24oQXVkaW9Db250ZXh0
QmFzZSYpOwogICAgIHZpcnR1YWwgfkF1ZGlvU3VtbWluZ0p1bmN0aW9uKCk7CiAKICAgICAvLyBD
YW4gYmUgY2FsbGVkIGZyb20gYW55IHRocmVhZC4KLSAgICBBdWRpb0NvbnRleHQmIGNvbnRleHQo
KSB7IHJldHVybiBtX2NvbnRleHQuZ2V0KCk7IH0KKyAgICBBdWRpb0NvbnRleHRCYXNlJiBjb250
ZXh0KCkgeyByZXR1cm4gbV9jb250ZXh0OyB9CiAKICAgICAvLyBUaGlzIG11c3QgYmUgY2FsbGVk
IHdoZW5ldmVyIHdlIG1vZGlmeSBtX291dHB1dHMuCiAgICAgdm9pZCBjaGFuZ2VkT3V0cHV0cygp
OwpAQCAtNjAsNyArNjAsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGRpZFVwZGF0ZSgp
ID0gMDsKIAogcHJvdGVjdGVkOgotICAgIFJlZjxBdWRpb0NvbnRleHQ+IG1fY29udGV4dDsKKyAg
ICBSZWY8QXVkaW9Db250ZXh0QmFzZT4gbV9jb250ZXh0OwogCiAgICAgLy8gbV9vdXRwdXRzIGNv
bnRhaW5zIHRoZSBBdWRpb05vZGVPdXRwdXRzIHJlcHJlc2VudGluZyBjdXJyZW50IGNvbm5lY3Rp
b25zIHdoaWNoIGFyZSBub3QgZGlzYWJsZWQuCiAgICAgLy8gVGhlIHJlbmRlcmluZyBjb2RlIHNo
b3VsZCBuZXZlciB1c2UgdGhpcyBkaXJlY3RseSwgYnV0IGluc3RlYWQgdXNlcyBtX3JlbmRlcmlu
Z091dHB1dHMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0Jp
cXVhZEZpbHRlck5vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9CaXF1
YWRGaWx0ZXJOb2RlLmNwcAppbmRleCA0YTgyNTVlNmYwYS4uZGRlMDc3M2Q0NzMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQmlxdWFkRmlsdGVyTm9kZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9CaXF1YWRGaWx0ZXJOb2RlLmNw
cApAQCAtMzMsNyArMzMsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFdURl9NQUtFX0lTT19B
TExPQ0FURURfSU1QTChCaXF1YWRGaWx0ZXJOb2RlKTsKIAotQmlxdWFkRmlsdGVyTm9kZTo6Qmlx
dWFkRmlsdGVyTm9kZShBdWRpb0NvbnRleHQmIGNvbnRleHQsIGZsb2F0IHNhbXBsZVJhdGUpCitC
aXF1YWRGaWx0ZXJOb2RlOjpCaXF1YWRGaWx0ZXJOb2RlKEF1ZGlvQ29udGV4dEJhc2UmIGNvbnRl
eHQsIGZsb2F0IHNhbXBsZVJhdGUpCiAgICAgOiBBdWRpb0Jhc2ljUHJvY2Vzc29yTm9kZShjb250
ZXh0LCBzYW1wbGVSYXRlKQogewogICAgIHNldE5vZGVUeXBlKE5vZGVUeXBlQmlxdWFkRmlsdGVy
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQmlxdWFkRmls
dGVyTm9kZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9CaXF1YWRGaWx0ZXJO
b2RlLmgKaW5kZXggODA5NGQ5MWVhYjMuLmFjOGQ5NDdhMTBmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0JpcXVhZEZpbHRlck5vZGUuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0JpcXVhZEZpbHRlck5vZGUuaApAQCAtMzQsNyArMzQs
NyBAQCBjbGFzcyBBdWRpb1BhcmFtOwogY2xhc3MgQmlxdWFkRmlsdGVyTm9kZSBmaW5hbCA6IHB1
YmxpYyBBdWRpb0Jhc2ljUHJvY2Vzc29yTm9kZSB7CiAgICAgV1RGX01BS0VfSVNPX0FMTE9DQVRF
RChCaXF1YWRGaWx0ZXJOb2RlKTsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPEJpcXVhZEZpbHRl
ck5vZGU+IGNyZWF0ZShBdWRpb0NvbnRleHQmIGNvbnRleHQsIGZsb2F0IHNhbXBsZVJhdGUpCisg
ICAgc3RhdGljIFJlZjxCaXF1YWRGaWx0ZXJOb2RlPiBjcmVhdGUoQXVkaW9Db250ZXh0QmFzZSYg
Y29udGV4dCwgZmxvYXQgc2FtcGxlUmF0ZSkKICAgICB7CiAgICAgICAgIHJldHVybiBhZG9wdFJl
ZigqbmV3IEJpcXVhZEZpbHRlck5vZGUoY29udGV4dCwgc2FtcGxlUmF0ZSkpOwogICAgIH0KQEAg
LTUyLDcgKzUyLDcgQEAgcHVibGljOgogICAgIHZvaWQgZ2V0RnJlcXVlbmN5UmVzcG9uc2UoY29u
c3QgUmVmUHRyPEZsb2F0MzJBcnJheT4mIGZyZXF1ZW5jeUh6LCBjb25zdCBSZWZQdHI8RmxvYXQz
MkFycmF5PiYgbWFnUmVzcG9uc2UsIGNvbnN0IFJlZlB0cjxGbG9hdDMyQXJyYXk+JiBwaGFzZVJl
c3BvbnNlKTsKIAogcHJpdmF0ZToKLSAgICBCaXF1YWRGaWx0ZXJOb2RlKEF1ZGlvQ29udGV4dCYs
IGZsb2F0IHNhbXBsZVJhdGUpOworICAgIEJpcXVhZEZpbHRlck5vZGUoQXVkaW9Db250ZXh0QmFz
ZSYsIGZsb2F0IHNhbXBsZVJhdGUpOwogCiAgICAgQmlxdWFkUHJvY2Vzc29yKiBiaXF1YWRQcm9j
ZXNzb3IoKSB7IHJldHVybiBzdGF0aWNfY2FzdDxCaXF1YWRQcm9jZXNzb3IqPihwcm9jZXNzb3Io
KSk7IH0KIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0Jp
cXVhZFByb2Nlc3Nvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0JpcXVh
ZFByb2Nlc3Nvci5jcHAKaW5kZXggZTg0Yjk4MDM1NjcuLjJmNjA2N2E3MmRjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0JpcXVhZFByb2Nlc3Nvci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9CaXF1YWRQcm9jZXNzb3IuY3BwCkBA
IC0zMiw3ICszMiw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAKLUJpcXVhZFByb2Nl
c3Nvcjo6QmlxdWFkUHJvY2Vzc29yKEF1ZGlvQ29udGV4dCYgY29udGV4dCwgZmxvYXQgc2FtcGxl
UmF0ZSwgc2l6ZV90IG51bWJlck9mQ2hhbm5lbHMsIGJvb2wgYXV0b0luaXRpYWxpemUpCitCaXF1
YWRQcm9jZXNzb3I6OkJpcXVhZFByb2Nlc3NvcihBdWRpb0NvbnRleHRCYXNlJiBjb250ZXh0LCBm
bG9hdCBzYW1wbGVSYXRlLCBzaXplX3QgbnVtYmVyT2ZDaGFubmVscywgYm9vbCBhdXRvSW5pdGlh
bGl6ZSkKICAgICA6IEF1ZGlvRFNQS2VybmVsUHJvY2Vzc29yKHNhbXBsZVJhdGUsIG51bWJlck9m
Q2hhbm5lbHMpCiAgICAgLCBtX3R5cGUoQmlxdWFkRmlsdGVyVHlwZTo6TG93cGFzcykKICAgICAs
IG1fcGFyYW1ldGVyMSgwKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJh
dWRpby9CaXF1YWRQcm9jZXNzb3IuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8v
QmlxdWFkUHJvY2Vzc29yLmgKaW5kZXggYWRiZWVjNDMwMjUuLmRjMzA2YWI1MTdiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0JpcXVhZFByb2Nlc3Nvci5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQmlxdWFkUHJvY2Vzc29yLmgKQEAg
LTUwLDcgKzUwLDcgQEAgZW51bSBjbGFzcyBCaXF1YWRGaWx0ZXJUeXBlIHsKIGNsYXNzIEJpcXVh
ZFByb2Nlc3NvciBmaW5hbCA6IHB1YmxpYyBBdWRpb0RTUEtlcm5lbFByb2Nlc3NvciB7CiAgICAg
V1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6Ci0gICAgQmlxdWFkUHJvY2Vzc29yKEF1
ZGlvQ29udGV4dCYsIGZsb2F0IHNhbXBsZVJhdGUsIHNpemVfdCBudW1iZXJPZkNoYW5uZWxzLCBi
b29sIGF1dG9Jbml0aWFsaXplKTsKKyAgICBCaXF1YWRQcm9jZXNzb3IoQXVkaW9Db250ZXh0QmFz
ZSYsIGZsb2F0IHNhbXBsZVJhdGUsIHNpemVfdCBudW1iZXJPZkNoYW5uZWxzLCBib29sIGF1dG9J
bml0aWFsaXplKTsKIAogICAgIHZpcnR1YWwgfkJpcXVhZFByb2Nlc3NvcigpOwogICAgIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9DaGFubmVsTWVyZ2VyTm9k
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0NoYW5uZWxNZXJnZXJOb2Rl
LmNwcAppbmRleCBkZjUwZjI2ODczNi4uZGUyOGFlYTdkMmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQ2hhbm5lbE1lcmdlck5vZGUuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQ2hhbm5lbE1lcmdlck5vZGUuY3BwCkBAIC00Myw3
ICs0Myw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogV1RGX01BS0VfSVNPX0FMTE9DQVRFRF9J
TVBMKENoYW5uZWxNZXJnZXJOb2RlKTsKIAotUmVmUHRyPENoYW5uZWxNZXJnZXJOb2RlPiBDaGFu
bmVsTWVyZ2VyTm9kZTo6Y3JlYXRlKEF1ZGlvQ29udGV4dCYgY29udGV4dCwgZmxvYXQgc2FtcGxl
UmF0ZSwgdW5zaWduZWQgbnVtYmVyT2ZJbnB1dHMpCitSZWZQdHI8Q2hhbm5lbE1lcmdlck5vZGU+
IENoYW5uZWxNZXJnZXJOb2RlOjpjcmVhdGUoQXVkaW9Db250ZXh0QmFzZSYgY29udGV4dCwgZmxv
YXQgc2FtcGxlUmF0ZSwgdW5zaWduZWQgbnVtYmVyT2ZJbnB1dHMpCiB7CiAgICAgaWYgKCFudW1i
ZXJPZklucHV0cyB8fCBudW1iZXJPZklucHV0cyA+IEF1ZGlvQ29udGV4dDo6bWF4TnVtYmVyT2ZD
aGFubmVscygpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTUxLDcgKzUxLDcgQEAgUmVm
UHRyPENoYW5uZWxNZXJnZXJOb2RlPiBDaGFubmVsTWVyZ2VyTm9kZTo6Y3JlYXRlKEF1ZGlvQ29u
dGV4dCYgY29udGV4dCwgZmxvYXQKICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBDaGFubmVsTWVy
Z2VyTm9kZShjb250ZXh0LCBzYW1wbGVSYXRlLCBudW1iZXJPZklucHV0cykpOyAgICAgIAogfQog
Ci1DaGFubmVsTWVyZ2VyTm9kZTo6Q2hhbm5lbE1lcmdlck5vZGUoQXVkaW9Db250ZXh0JiBjb250
ZXh0LCBmbG9hdCBzYW1wbGVSYXRlLCB1bnNpZ25lZCBudW1iZXJPZklucHV0cykKK0NoYW5uZWxN
ZXJnZXJOb2RlOjpDaGFubmVsTWVyZ2VyTm9kZShBdWRpb0NvbnRleHRCYXNlJiBjb250ZXh0LCBm
bG9hdCBzYW1wbGVSYXRlLCB1bnNpZ25lZCBudW1iZXJPZklucHV0cykKICAgICA6IEF1ZGlvTm9k
ZShjb250ZXh0LCBzYW1wbGVSYXRlKQogICAgICwgbV9kZXNpcmVkTnVtYmVyT2ZPdXRwdXRDaGFu
bmVscyhEZWZhdWx0TnVtYmVyT2ZPdXRwdXRDaGFubmVscykKIHsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQ2hhbm5lbE1lcmdlck5vZGUuaCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQ2hhbm5lbE1lcmdlck5vZGUuaAppbmRleCA2NjYzNmVl
ZDZmNy4uNjI5NzZlMDUwNzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
YXVkaW8vQ2hhbm5lbE1lcmdlck5vZGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmF1ZGlvL0NoYW5uZWxNZXJnZXJOb2RlLmgKQEAgLTM3LDcgKzM3LDcgQEAgY2xhc3MgQXVkaW9D
b250ZXh0OwogY2xhc3MgQ2hhbm5lbE1lcmdlck5vZGUgZmluYWwgOiBwdWJsaWMgQXVkaW9Ob2Rl
IHsKICAgICBXVEZfTUFLRV9JU09fQUxMT0NBVEVEKENoYW5uZWxNZXJnZXJOb2RlKTsKIHB1Ymxp
YzoKLSAgICBzdGF0aWMgUmVmUHRyPENoYW5uZWxNZXJnZXJOb2RlPiBjcmVhdGUoQXVkaW9Db250
ZXh0JiwgZmxvYXQgc2FtcGxlUmF0ZSwgdW5zaWduZWQgbnVtYmVyT2ZJbnB1dHMpOworICAgIHN0
YXRpYyBSZWZQdHI8Q2hhbm5lbE1lcmdlck5vZGU+IGNyZWF0ZShBdWRpb0NvbnRleHRCYXNlJiwg
ZmxvYXQgc2FtcGxlUmF0ZSwgdW5zaWduZWQgbnVtYmVyT2ZJbnB1dHMpOwogCiAgICAgLy8gQXVk
aW9Ob2RlCiAgICAgdm9pZCBwcm9jZXNzKHNpemVfdCBmcmFtZXNUb1Byb2Nlc3MpIG92ZXJyaWRl
OwpAQCAtNTIsNyArNTIsNyBAQCBwcml2YXRlOgogICAgIGRvdWJsZSB0YWlsVGltZSgpIGNvbnN0
IG92ZXJyaWRlIHsgcmV0dXJuIDA7IH0KICAgICBkb3VibGUgbGF0ZW5jeVRpbWUoKSBjb25zdCBv
dmVycmlkZSB7IHJldHVybiAwOyB9CiAKLSAgICBDaGFubmVsTWVyZ2VyTm9kZShBdWRpb0NvbnRl
eHQmLCBmbG9hdCBzYW1wbGVSYXRlLCB1bnNpZ25lZCBudW1iZXJPZklucHV0cyk7CisgICAgQ2hh
bm5lbE1lcmdlck5vZGUoQXVkaW9Db250ZXh0QmFzZSYsIGZsb2F0IHNhbXBsZVJhdGUsIHVuc2ln
bmVkIG51bWJlck9mSW5wdXRzKTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQ2hhbm5lbFNwbGl0dGVyTm9k
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0NoYW5uZWxTcGxpdHRlck5v
ZGUuY3BwCmluZGV4IDgyZjY5YTA0Zjk5Li5mNTU1M2QwYzgzNSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9DaGFubmVsU3BsaXR0ZXJOb2RlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0NoYW5uZWxTcGxpdHRlck5vZGUuY3BwCkBA
IC0zNyw3ICszNyw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogV1RGX01BS0VfSVNPX0FMTE9D
QVRFRF9JTVBMKENoYW5uZWxTcGxpdHRlck5vZGUpOwogICAgIAotUmVmUHRyPENoYW5uZWxTcGxp
dHRlck5vZGU+IENoYW5uZWxTcGxpdHRlck5vZGU6OmNyZWF0ZShBdWRpb0NvbnRleHQmIGNvbnRl
eHQsIGZsb2F0IHNhbXBsZVJhdGUsIHVuc2lnbmVkIG51bWJlck9mT3V0cHV0cykKK1JlZlB0cjxD
aGFubmVsU3BsaXR0ZXJOb2RlPiBDaGFubmVsU3BsaXR0ZXJOb2RlOjpjcmVhdGUoQXVkaW9Db250
ZXh0QmFzZSYgY29udGV4dCwgZmxvYXQgc2FtcGxlUmF0ZSwgdW5zaWduZWQgbnVtYmVyT2ZPdXRw
dXRzKQogewogICAgIGlmICghbnVtYmVyT2ZPdXRwdXRzIHx8IG51bWJlck9mT3V0cHV0cyA+IEF1
ZGlvQ29udGV4dDo6bWF4TnVtYmVyT2ZDaGFubmVscygpKQogICAgICAgICByZXR1cm4gbnVsbHB0
cjsKQEAgLTQ1LDcgKzQ1LDcgQEAgUmVmUHRyPENoYW5uZWxTcGxpdHRlck5vZGU+IENoYW5uZWxT
cGxpdHRlck5vZGU6OmNyZWF0ZShBdWRpb0NvbnRleHQmIGNvbnRleHQsIGYKICAgICByZXR1cm4g
YWRvcHRSZWYoKm5ldyBDaGFubmVsU3BsaXR0ZXJOb2RlKGNvbnRleHQsIHNhbXBsZVJhdGUsIG51
bWJlck9mT3V0cHV0cykpOyAgICAgIAogfQogCi1DaGFubmVsU3BsaXR0ZXJOb2RlOjpDaGFubmVs
U3BsaXR0ZXJOb2RlKEF1ZGlvQ29udGV4dCYgY29udGV4dCwgZmxvYXQgc2FtcGxlUmF0ZSwgdW5z
aWduZWQgbnVtYmVyT2ZPdXRwdXRzKQorQ2hhbm5lbFNwbGl0dGVyTm9kZTo6Q2hhbm5lbFNwbGl0
dGVyTm9kZShBdWRpb0NvbnRleHRCYXNlJiBjb250ZXh0LCBmbG9hdCBzYW1wbGVSYXRlLCB1bnNp
Z25lZCBudW1iZXJPZk91dHB1dHMpCiAgICAgOiBBdWRpb05vZGUoY29udGV4dCwgc2FtcGxlUmF0
ZSkKIHsKICAgICBzZXROb2RlVHlwZShOb2RlVHlwZUNoYW5uZWxTcGxpdHRlcik7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0NoYW5uZWxTcGxpdHRlck5vZGUu
aCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQ2hhbm5lbFNwbGl0dGVyTm9kZS5o
CmluZGV4IDhkOTgzMjgxMjM3Li4xM2Q4ZDk4MGRhYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJhdWRpby9DaGFubmVsU3BsaXR0ZXJOb2RlLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJhdWRpby9DaGFubmVsU3BsaXR0ZXJOb2RlLmgKQEAgLTMzLDcgKzMz
LDcgQEAgY2xhc3MgQXVkaW9Db250ZXh0OwogY2xhc3MgQ2hhbm5lbFNwbGl0dGVyTm9kZSBmaW5h
bCA6IHB1YmxpYyBBdWRpb05vZGUgewogICAgIFdURl9NQUtFX0lTT19BTExPQ0FURUQoQ2hhbm5l
bFNwbGl0dGVyTm9kZSk7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZlB0cjxDaGFubmVsU3BsaXR0
ZXJOb2RlPiBjcmVhdGUoQXVkaW9Db250ZXh0JiwgZmxvYXQgc2FtcGxlUmF0ZSwgdW5zaWduZWQg
bnVtYmVyT2ZPdXRwdXRzKTsKKyAgICBzdGF0aWMgUmVmUHRyPENoYW5uZWxTcGxpdHRlck5vZGU+
IGNyZWF0ZShBdWRpb0NvbnRleHRCYXNlJiwgZmxvYXQgc2FtcGxlUmF0ZSwgdW5zaWduZWQgbnVt
YmVyT2ZPdXRwdXRzKTsKIAogICAgIC8vIEF1ZGlvTm9kZQogICAgIHZvaWQgcHJvY2VzcyhzaXpl
X3QgZnJhbWVzVG9Qcm9jZXNzKSBvdmVycmlkZTsKQEAgLTQzLDcgKzQzLDcgQEAgcHJpdmF0ZToK
ICAgICBkb3VibGUgdGFpbFRpbWUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiAwOyB9CiAgICAg
ZG91YmxlIGxhdGVuY3lUaW1lKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gMDsgfQogCi0gICAg
Q2hhbm5lbFNwbGl0dGVyTm9kZShBdWRpb0NvbnRleHQmLCBmbG9hdCBzYW1wbGVSYXRlLCB1bnNp
Z25lZCBudW1iZXJPZk91dHB1dHMpOworICAgIENoYW5uZWxTcGxpdHRlck5vZGUoQXVkaW9Db250
ZXh0QmFzZSYsIGZsb2F0IHNhbXBsZVJhdGUsIHVuc2lnbmVkIG51bWJlck9mT3V0cHV0cyk7CiB9
OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmF1ZGlvL0NvbnZvbHZlck5vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJhdWRpby9Db252b2x2ZXJOb2RlLmNwcAppbmRleCBjYzk3MmYxMGRiZC4uZTFmNWViODE1
NjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQ29udm9sdmVy
Tm9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9Db252b2x2ZXJO
b2RlLmNwcApAQCAtNDcsNyArNDcsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFdURl9NQUtF
X0lTT19BTExPQ0FURURfSU1QTChDb252b2x2ZXJOb2RlKTsKIAotQ29udm9sdmVyTm9kZTo6Q29u
dm9sdmVyTm9kZShBdWRpb0NvbnRleHQmIGNvbnRleHQsIGZsb2F0IHNhbXBsZVJhdGUpCitDb252
b2x2ZXJOb2RlOjpDb252b2x2ZXJOb2RlKEF1ZGlvQ29udGV4dEJhc2UmIGNvbnRleHQsIGZsb2F0
IHNhbXBsZVJhdGUpCiAgICAgOiBBdWRpb05vZGUoY29udGV4dCwgc2FtcGxlUmF0ZSkKIHsKICAg
ICBzZXROb2RlVHlwZShOb2RlVHlwZUNvbnZvbHZlcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0NvbnZvbHZlck5vZGUuaCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViYXVkaW8vQ29udm9sdmVyTm9kZS5oCmluZGV4IDY0YmZlYmVkMmQ4Li4zMWNlYzFl
Y2M3ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9Db252b2x2
ZXJOb2RlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9Db252b2x2ZXJO
b2RlLmgKQEAgLTM1LDcgKzM1LDcgQEAgY2xhc3MgUmV2ZXJiOwogY2xhc3MgQ29udm9sdmVyTm9k
ZSBmaW5hbCA6IHB1YmxpYyBBdWRpb05vZGUgewogICAgIFdURl9NQUtFX0lTT19BTExPQ0FURUQo
Q29udm9sdmVyTm9kZSk7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxDb252b2x2ZXJOb2RlPiBj
cmVhdGUoQXVkaW9Db250ZXh0JiBjb250ZXh0LCBmbG9hdCBzYW1wbGVSYXRlKQorICAgIHN0YXRp
YyBSZWY8Q29udm9sdmVyTm9kZT4gY3JlYXRlKEF1ZGlvQ29udGV4dEJhc2UmIGNvbnRleHQsIGZs
b2F0IHNhbXBsZVJhdGUpCiAgICAgewogICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBDb252
b2x2ZXJOb2RlKGNvbnRleHQsIHNhbXBsZVJhdGUpKTsKICAgICB9CkBAIC00OSw3ICs0OSw3IEBA
IHB1YmxpYzoKICAgICB2b2lkIHNldE5vcm1hbGl6ZShib29sIG5vcm1hbGl6ZSkgeyBtX25vcm1h
bGl6ZSA9IG5vcm1hbGl6ZTsgfQogCiBwcml2YXRlOgotICAgIENvbnZvbHZlck5vZGUoQXVkaW9D
b250ZXh0JiwgZmxvYXQgc2FtcGxlUmF0ZSk7CisgICAgQ29udm9sdmVyTm9kZShBdWRpb0NvbnRl
eHRCYXNlJiwgZmxvYXQgc2FtcGxlUmF0ZSk7CiAKICAgICBkb3VibGUgdGFpbFRpbWUoKSBjb25z
dCBmaW5hbDsKICAgICBkb3VibGUgbGF0ZW5jeVRpbWUoKSBjb25zdCBmaW5hbDsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vRGVmYXVsdEF1ZGlvRGVzdGluYXRp
b25Ob2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vRGVmYXVsdEF1ZGlv
RGVzdGluYXRpb25Ob2RlLmNwcAppbmRleCAxNzU5YWU0YTVhNi4uMDdlYjlhNDFiNWMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vRGVmYXVsdEF1ZGlvRGVzdGlu
YXRpb25Ob2RlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0RlZmF1
bHRBdWRpb0Rlc3RpbmF0aW9uTm9kZS5jcHAKQEAgLTQzLDcgKzQzLDcgQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogCiBXVEZfTUFLRV9JU09fQUxMT0NBVEVEX0lNUEwoRGVmYXVsdEF1ZGlvRGVzdGlu
YXRpb25Ob2RlKTsKICAgICAKLURlZmF1bHRBdWRpb0Rlc3RpbmF0aW9uTm9kZTo6RGVmYXVsdEF1
ZGlvRGVzdGluYXRpb25Ob2RlKEF1ZGlvQ29udGV4dCYgY29udGV4dCkKK0RlZmF1bHRBdWRpb0Rl
c3RpbmF0aW9uTm9kZTo6RGVmYXVsdEF1ZGlvRGVzdGluYXRpb25Ob2RlKEF1ZGlvQ29udGV4dEJh
c2UmIGNvbnRleHQpCiAgICAgOiBBdWRpb0Rlc3RpbmF0aW9uTm9kZShjb250ZXh0LCBBdWRpb0Rl
c3RpbmF0aW9uOjpoYXJkd2FyZVNhbXBsZVJhdGUoKSkKIHsKICAgICAvLyBOb2RlLXNwZWNpZmlj
IGRlZmF1bHQgbWl4aW5nIHJ1bGVzLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJhdWRpby9EZWZhdWx0QXVkaW9EZXN0aW5hdGlvbk5vZGUuaCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViYXVkaW8vRGVmYXVsdEF1ZGlvRGVzdGluYXRpb25Ob2RlLmgKaW5kZXggNmZk
OTVjMGYzMDEuLjk2YzgzN2M5OTM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmF1ZGlvL0RlZmF1bHRBdWRpb0Rlc3RpbmF0aW9uTm9kZS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViYXVkaW8vRGVmYXVsdEF1ZGlvRGVzdGluYXRpb25Ob2RlLmgKQEAgLTMz
LDcgKzMzLDcgQEAgY2xhc3MgQXVkaW9EZXN0aW5hdGlvbjsKIGNsYXNzIERlZmF1bHRBdWRpb0Rl
c3RpbmF0aW9uTm9kZSBmaW5hbCA6IHB1YmxpYyBBdWRpb0Rlc3RpbmF0aW9uTm9kZSB7CiAgICAg
V1RGX01BS0VfSVNPX0FMTE9DQVRFRChEZWZhdWx0QXVkaW9EZXN0aW5hdGlvbk5vZGUpOwogcHVi
bGljOgotICAgIHN0YXRpYyBSZWY8RGVmYXVsdEF1ZGlvRGVzdGluYXRpb25Ob2RlPiBjcmVhdGUo
QXVkaW9Db250ZXh0JiBjb250ZXh0KQorICAgIHN0YXRpYyBSZWY8RGVmYXVsdEF1ZGlvRGVzdGlu
YXRpb25Ob2RlPiBjcmVhdGUoQXVkaW9Db250ZXh0QmFzZSYgY29udGV4dCkKICAgICB7CiAgICAg
ICAgIHJldHVybiBhZG9wdFJlZigqbmV3IERlZmF1bHRBdWRpb0Rlc3RpbmF0aW9uTm9kZShjb250
ZXh0KSk7ICAgICAKICAgICB9CkBAIC00MSw3ICs0MSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFs
IH5EZWZhdWx0QXVkaW9EZXN0aW5hdGlvbk5vZGUoKTsKICAgICAKIHByaXZhdGU6Ci0gICAgZXhw
bGljaXQgRGVmYXVsdEF1ZGlvRGVzdGluYXRpb25Ob2RlKEF1ZGlvQ29udGV4dCYpOworICAgIGV4
cGxpY2l0IERlZmF1bHRBdWRpb0Rlc3RpbmF0aW9uTm9kZShBdWRpb0NvbnRleHRCYXNlJik7CiAg
ICAgdm9pZCBjcmVhdGVEZXN0aW5hdGlvbigpOwogCiAgICAgdm9pZCBpbml0aWFsaXplKCkgZmlu
YWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0RlbGF5Tm9k
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0RlbGF5Tm9kZS5jcHAKaW5k
ZXggODFiZDdkMTliMjcuLjQwNTI3YzgxZjlmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmF1ZGlvL0RlbGF5Tm9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJhdWRpby9EZWxheU5vZGUuY3BwCkBAIC0zNywxNCArMzcsMTQgQEAgV1RGX01BS0VfSVNP
X0FMTE9DQVRFRF9JTVBMKERlbGF5Tm9kZSk7CiAKIGNvbnN0IGRvdWJsZSBtYXhpbXVtQWxsb3dl
ZERlbGF5VGltZSA9IDE4MDsKIAotaW5saW5lIERlbGF5Tm9kZTo6RGVsYXlOb2RlKEF1ZGlvQ29u
dGV4dCYgY29udGV4dCwgZmxvYXQgc2FtcGxlUmF0ZSwgZG91YmxlIG1heERlbGF5VGltZSkKK2lu
bGluZSBEZWxheU5vZGU6OkRlbGF5Tm9kZShBdWRpb0NvbnRleHRCYXNlJiBjb250ZXh0LCBmbG9h
dCBzYW1wbGVSYXRlLCBkb3VibGUgbWF4RGVsYXlUaW1lKQogICAgIDogQXVkaW9CYXNpY1Byb2Nl
c3Nvck5vZGUoY29udGV4dCwgc2FtcGxlUmF0ZSkKIHsKICAgICBzZXROb2RlVHlwZShOb2RlVHlw
ZURlbGF5KTsKICAgICBtX3Byb2Nlc3NvciA9IG1ha2VVbmlxdWU8RGVsYXlQcm9jZXNzb3I+KGNv
bnRleHQsIHNhbXBsZVJhdGUsIDEsIG1heERlbGF5VGltZSk7CiB9CiAKLUV4Y2VwdGlvbk9yPFJl
ZjxEZWxheU5vZGU+PiBEZWxheU5vZGU6OmNyZWF0ZShBdWRpb0NvbnRleHQmIGNvbnRleHQsIGZs
b2F0IHNhbXBsZVJhdGUsIGRvdWJsZSBtYXhEZWxheVRpbWUpCitFeGNlcHRpb25PcjxSZWY8RGVs
YXlOb2RlPj4gRGVsYXlOb2RlOjpjcmVhdGUoQXVkaW9Db250ZXh0QmFzZSYgY29udGV4dCwgZmxv
YXQgc2FtcGxlUmF0ZSwgZG91YmxlIG1heERlbGF5VGltZSkKIHsKICAgICBpZiAobWF4RGVsYXlU
aW1lIDw9IDAgfHwgbWF4RGVsYXlUaW1lID49IG1heGltdW1BbGxvd2VkRGVsYXlUaW1lKQogICAg
ICAgICByZXR1cm4gRXhjZXB0aW9uIHsgTm90U3VwcG9ydGVkRXJyb3IgfTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vRGVsYXlOb2RlLmggYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0RlbGF5Tm9kZS5oCmluZGV4IGM5ZWNhZDlmOWZkLi5iNmFm
ZGQwZjkzMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9EZWxh
eU5vZGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0RlbGF5Tm9kZS5o
CkBAIC0zMSwxMiArMzEsMTIgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgRGVsYXlOb2Rl
IGZpbmFsIDogcHVibGljIEF1ZGlvQmFzaWNQcm9jZXNzb3JOb2RlIHsKICAgICBXVEZfTUFLRV9J
U09fQUxMT0NBVEVEKERlbGF5Tm9kZSk7CiBwdWJsaWM6Ci0gICAgc3RhdGljIEV4Y2VwdGlvbk9y
PFJlZjxEZWxheU5vZGU+PiBjcmVhdGUoQXVkaW9Db250ZXh0JiwgZmxvYXQgc2FtcGxlUmF0ZSwg
ZG91YmxlIG1heERlbGF5VGltZSk7CisgICAgc3RhdGljIEV4Y2VwdGlvbk9yPFJlZjxEZWxheU5v
ZGU+PiBjcmVhdGUoQXVkaW9Db250ZXh0QmFzZSYsIGZsb2F0IHNhbXBsZVJhdGUsIGRvdWJsZSBt
YXhEZWxheVRpbWUpOwogCiAgICAgQXVkaW9QYXJhbSogZGVsYXlUaW1lKCk7CiAKIHByaXZhdGU6
Ci0gICAgRGVsYXlOb2RlKEF1ZGlvQ29udGV4dCYsIGZsb2F0IHNhbXBsZVJhdGUsIGRvdWJsZSBt
YXhEZWxheVRpbWUpOworICAgIERlbGF5Tm9kZShBdWRpb0NvbnRleHRCYXNlJiwgZmxvYXQgc2Ft
cGxlUmF0ZSwgZG91YmxlIG1heERlbGF5VGltZSk7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0RlbGF5UHJv
Y2Vzc29yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vRGVsYXlQcm9jZXNz
b3IuY3BwCmluZGV4IDEwMzY2ZWY2ZWFmLi5jYmJmZDlmYTJmYSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9EZWxheVByb2Nlc3Nvci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9EZWxheVByb2Nlc3Nvci5jcHAKQEAgLTMyLDcgKzMy
LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1EZWxheVByb2Nlc3Nvcjo6RGVsYXlQcm9j
ZXNzb3IoQXVkaW9Db250ZXh0JiBjb250ZXh0LCBmbG9hdCBzYW1wbGVSYXRlLCB1bnNpZ25lZCBu
dW1iZXJPZkNoYW5uZWxzLCBkb3VibGUgbWF4RGVsYXlUaW1lKQorRGVsYXlQcm9jZXNzb3I6OkRl
bGF5UHJvY2Vzc29yKEF1ZGlvQ29udGV4dEJhc2UmIGNvbnRleHQsIGZsb2F0IHNhbXBsZVJhdGUs
IHVuc2lnbmVkIG51bWJlck9mQ2hhbm5lbHMsIGRvdWJsZSBtYXhEZWxheVRpbWUpCiAgICAgOiBB
dWRpb0RTUEtlcm5lbFByb2Nlc3NvcihzYW1wbGVSYXRlLCBudW1iZXJPZkNoYW5uZWxzKQogICAg
ICwgbV9tYXhEZWxheVRpbWUobWF4RGVsYXlUaW1lKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJhdWRpby9EZWxheVByb2Nlc3Nvci5oIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJhdWRpby9EZWxheVByb2Nlc3Nvci5oCmluZGV4IDg1ZDljYzZkN2ZkLi5jYmFj
NzllY2YwZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9EZWxh
eVByb2Nlc3Nvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vRGVsYXlQ
cm9jZXNzb3IuaApAQCAtMzYsNyArMzYsNyBAQCBjbGFzcyBBdWRpb0RTUEtlcm5lbDsKIGNsYXNz
IERlbGF5UHJvY2Vzc29yIGZpbmFsIDogcHVibGljIEF1ZGlvRFNQS2VybmVsUHJvY2Vzc29yIHsK
ICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKLSAgICBEZWxheVByb2Nlc3Nv
cihBdWRpb0NvbnRleHQmLCBmbG9hdCBzYW1wbGVSYXRlLCB1bnNpZ25lZCBudW1iZXJPZkNoYW5u
ZWxzLCBkb3VibGUgbWF4RGVsYXlUaW1lKTsKKyAgICBEZWxheVByb2Nlc3NvcihBdWRpb0NvbnRl
eHRCYXNlJiwgZmxvYXQgc2FtcGxlUmF0ZSwgdW5zaWduZWQgbnVtYmVyT2ZDaGFubmVscywgZG91
YmxlIG1heERlbGF5VGltZSk7CiAgICAgdmlydHVhbCB+RGVsYXlQcm9jZXNzb3IoKTsKICAgICAK
ICAgICBzdGQ6OnVuaXF1ZV9wdHI8QXVkaW9EU1BLZXJuZWw+IGNyZWF0ZUtlcm5lbCgpIG92ZXJy
aWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9EaXN0YW5j
ZU1vZGVsVHlwZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9EaXN0YW5jZU1v
ZGVsVHlwZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi5kZmUxMzE4
MmNjMAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8v
RGlzdGFuY2VNb2RlbFR5cGUuaApAQCAtMCwwICsxLDI3IEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDIwLCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9T
RSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRT
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAq
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTgorICogQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTCisgKiBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21h
IG9uY2UKKworI2luY2x1ZGUgIkRpc3RhbmNlLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmF1ZGlvL0Rpc3RhbmNlTW9kZWxUeXBlLmlkbCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViYXVkaW8vRGlzdGFuY2VNb2RlbFR5cGUuaWRsCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwLi5mOGZmY2ZlZDIyYwotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vRGlzdGFuY2VNb2RlbFR5cGUuaWRsCkBAIC0w
LDAgKzEsMzEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAsIEdvb2dsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORCBBTlkK
KyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAq
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTgorICogQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTCisgKiBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCitbCisgICAgQ29uZGl0aW9uYWw9V0VCX0FVRElPLAor
XSBlbnVtIERpc3RhbmNlTW9kZWxUeXBlIHsKKyAgICAibGluZWFyIiwKKyAgICAiaW52ZXJzZSIs
CisgICAgImV4cG9uZW50aWFsIgorfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViYXVkaW8vRHluYW1pY3NDb21wcmVzc29yTm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmF1ZGlvL0R5bmFtaWNzQ29tcHJlc3Nvck5vZGUuY3BwCmluZGV4IDE0MDk2ZDhm
MGM1Li5jMzNkMWRlNzJkYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJh
dWRpby9EeW5hbWljc0NvbXByZXNzb3JOb2RlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmF1ZGlvL0R5bmFtaWNzQ29tcHJlc3Nvck5vZGUuY3BwCkBAIC00MSw3ICs0MSw3IEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogV1RGX01BS0VfSVNPX0FMTE9DQVRFRF9JTVBMKER5bmFt
aWNzQ29tcHJlc3Nvck5vZGUpOwogCi1EeW5hbWljc0NvbXByZXNzb3JOb2RlOjpEeW5hbWljc0Nv
bXByZXNzb3JOb2RlKEF1ZGlvQ29udGV4dCYgY29udGV4dCwgZmxvYXQgc2FtcGxlUmF0ZSkKK0R5
bmFtaWNzQ29tcHJlc3Nvck5vZGU6OkR5bmFtaWNzQ29tcHJlc3Nvck5vZGUoQXVkaW9Db250ZXh0
QmFzZSYgY29udGV4dCwgZmxvYXQgc2FtcGxlUmF0ZSkKICAgICA6IEF1ZGlvTm9kZShjb250ZXh0
LCBzYW1wbGVSYXRlKQogewogICAgIHNldE5vZGVUeXBlKE5vZGVUeXBlRHluYW1pY3NDb21wcmVz
c29yKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vRHluYW1p
Y3NDb21wcmVzc29yTm9kZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9EeW5h
bWljc0NvbXByZXNzb3JOb2RlLmgKaW5kZXggNDRjYmZiYWEwNTkuLmI3MDUzYjIyMTczIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0R5bmFtaWNzQ29tcHJlc3Nv
ck5vZGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0R5bmFtaWNzQ29t
cHJlc3Nvck5vZGUuaApAQCAtMzUsNyArMzUsNyBAQCBjbGFzcyBEeW5hbWljc0NvbXByZXNzb3I7
CiBjbGFzcyBEeW5hbWljc0NvbXByZXNzb3JOb2RlIGZpbmFsIDogcHVibGljIEF1ZGlvTm9kZSB7
CiAgICAgV1RGX01BS0VfSVNPX0FMTE9DQVRFRChEeW5hbWljc0NvbXByZXNzb3JOb2RlKTsKIHB1
YmxpYzoKLSAgICBzdGF0aWMgUmVmPER5bmFtaWNzQ29tcHJlc3Nvck5vZGU+IGNyZWF0ZShBdWRp
b0NvbnRleHQmIGNvbnRleHQsIGZsb2F0IHNhbXBsZVJhdGUpCisgICAgc3RhdGljIFJlZjxEeW5h
bWljc0NvbXByZXNzb3JOb2RlPiBjcmVhdGUoQXVkaW9Db250ZXh0QmFzZSYgY29udGV4dCwgZmxv
YXQgc2FtcGxlUmF0ZSkKICAgICB7CiAgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IER5bmFt
aWNzQ29tcHJlc3Nvck5vZGUoY29udGV4dCwgc2FtcGxlUmF0ZSkpOwogICAgIH0KQEAgLTYyLDcg
KzYyLDcgQEAgcHJpdmF0ZToKICAgICBkb3VibGUgdGFpbFRpbWUoKSBjb25zdCBvdmVycmlkZTsK
ICAgICBkb3VibGUgbGF0ZW5jeVRpbWUoKSBjb25zdCBvdmVycmlkZTsKIAotICAgIER5bmFtaWNz
Q29tcHJlc3Nvck5vZGUoQXVkaW9Db250ZXh0JiwgZmxvYXQgc2FtcGxlUmF0ZSk7CisgICAgRHlu
YW1pY3NDb21wcmVzc29yTm9kZShBdWRpb0NvbnRleHRCYXNlJiwgZmxvYXQgc2FtcGxlUmF0ZSk7
CiAKICAgICBzdGQ6OnVuaXF1ZV9wdHI8RHluYW1pY3NDb21wcmVzc29yPiBtX2R5bmFtaWNzQ29t
cHJlc3NvcjsKICAgICBSZWZQdHI8QXVkaW9QYXJhbT4gbV90aHJlc2hvbGQ7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0dhaW5Ob2RlLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vR2Fpbk5vZGUuY3BwCmluZGV4IDI1N2RmMmVjZTIzLi45
ODRkMTE5NGJkZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9H
YWluTm9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9HYWluTm9k
ZS5jcHAKQEAgLTM3LDcgKzM3LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBXVEZfTUFLRV9J
U09fQUxMT0NBVEVEX0lNUEwoR2Fpbk5vZGUpOwogCi1HYWluTm9kZTo6R2Fpbk5vZGUoQXVkaW9D
b250ZXh0JiBjb250ZXh0LCBmbG9hdCBzYW1wbGVSYXRlKQorR2Fpbk5vZGU6OkdhaW5Ob2RlKEF1
ZGlvQ29udGV4dEJhc2UmIGNvbnRleHQsIGZsb2F0IHNhbXBsZVJhdGUpCiAgICAgOiBBdWRpb05v
ZGUoY29udGV4dCwgc2FtcGxlUmF0ZSkKICAgICAsIG1fbGFzdEdhaW4oMS4wKQogICAgICwgbV9z
YW1wbGVBY2N1cmF0ZUdhaW5WYWx1ZXMoQXVkaW9Ob2RlOjpQcm9jZXNzaW5nU2l6ZUluRnJhbWVz
KSAvLyBGSVhNRTogY2FuIHByb2JhYmx5IHNoYXJlIHRlbXAgYnVmZmVyIGluIGNvbnRleHQKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vR2Fpbk5vZGUuaCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vR2Fpbk5vZGUuaAppbmRleCBmYTg1YjBiOWZm
NS4uZGNmODU1YTkxYzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVk
aW8vR2Fpbk5vZGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0dhaW5O
b2RlLmgKQEAgLTM4LDcgKzM4LDcgQEAgY2xhc3MgQXVkaW9Db250ZXh0OwogY2xhc3MgR2Fpbk5v
ZGUgZmluYWwgOiBwdWJsaWMgQXVkaW9Ob2RlIHsKICAgICBXVEZfTUFLRV9JU09fQUxMT0NBVEVE
KEdhaW5Ob2RlKTsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPEdhaW5Ob2RlPiBjcmVhdGUoQXVk
aW9Db250ZXh0JiBjb250ZXh0LCBmbG9hdCBzYW1wbGVSYXRlKQorICAgIHN0YXRpYyBSZWY8R2Fp
bk5vZGU+IGNyZWF0ZShBdWRpb0NvbnRleHRCYXNlJiBjb250ZXh0LCBmbG9hdCBzYW1wbGVSYXRl
KQogICAgIHsKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgR2Fpbk5vZGUoY29udGV4dCwg
c2FtcGxlUmF0ZSkpOwogICAgIH0KQEAgLTU3LDcgKzU3LDcgQEAgcHJpdmF0ZToKICAgICBkb3Vi
bGUgdGFpbFRpbWUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiAwOyB9CiAgICAgZG91YmxlIGxh
dGVuY3lUaW1lKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gMDsgfQogCi0gICAgR2Fpbk5vZGUo
QXVkaW9Db250ZXh0JiwgZmxvYXQgc2FtcGxlUmF0ZSk7CisgICAgR2Fpbk5vZGUoQXVkaW9Db250
ZXh0QmFzZSYsIGZsb2F0IHNhbXBsZVJhdGUpOwogCiAgICAgZmxvYXQgbV9sYXN0R2FpbjsgLy8g
Zm9yIGRlLXppcHBlcmluZwogICAgIFJlZlB0cjxBdWRpb1BhcmFtPiBtX2dhaW47CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL01lZGlhRWxlbWVudEF1ZGlvU291
cmNlTm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL01lZGlhRWxlbWVu
dEF1ZGlvU291cmNlTm9kZS5jcHAKaW5kZXggMGU1OTgxZmE2ODYuLmM2NzVkN2RlNzE2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL01lZGlhRWxlbWVudEF1ZGlv
U291cmNlTm9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9NZWRp
YUVsZW1lbnRBdWRpb1NvdXJjZU5vZGUuY3BwCkBAIC00MywxMiArNDMsMTIgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogCiBXVEZfTUFLRV9JU09fQUxMT0NBVEVEX0lNUEwoTWVkaWFFbGVtZW50QXVk
aW9Tb3VyY2VOb2RlKTsKIAotUmVmPE1lZGlhRWxlbWVudEF1ZGlvU291cmNlTm9kZT4gTWVkaWFF
bGVtZW50QXVkaW9Tb3VyY2VOb2RlOjpjcmVhdGUoQXVkaW9Db250ZXh0JiBjb250ZXh0LCBIVE1M
TWVkaWFFbGVtZW50JiBtZWRpYUVsZW1lbnQpCitSZWY8TWVkaWFFbGVtZW50QXVkaW9Tb3VyY2VO
b2RlPiBNZWRpYUVsZW1lbnRBdWRpb1NvdXJjZU5vZGU6OmNyZWF0ZShBdWRpb0NvbnRleHRCYXNl
JiBjb250ZXh0LCBIVE1MTWVkaWFFbGVtZW50JiBtZWRpYUVsZW1lbnQpCiB7CiAgICAgcmV0dXJu
IGFkb3B0UmVmKCpuZXcgTWVkaWFFbGVtZW50QXVkaW9Tb3VyY2VOb2RlKGNvbnRleHQsIG1lZGlh
RWxlbWVudCkpOwogfQogCi1NZWRpYUVsZW1lbnRBdWRpb1NvdXJjZU5vZGU6Ok1lZGlhRWxlbWVu
dEF1ZGlvU291cmNlTm9kZShBdWRpb0NvbnRleHQmIGNvbnRleHQsIEhUTUxNZWRpYUVsZW1lbnQm
IG1lZGlhRWxlbWVudCkKK01lZGlhRWxlbWVudEF1ZGlvU291cmNlTm9kZTo6TWVkaWFFbGVtZW50
QXVkaW9Tb3VyY2VOb2RlKEF1ZGlvQ29udGV4dEJhc2UmIGNvbnRleHQsIEhUTUxNZWRpYUVsZW1l
bnQmIG1lZGlhRWxlbWVudCkKICAgICA6IEF1ZGlvTm9kZShjb250ZXh0LCBjb250ZXh0LnNhbXBs
ZVJhdGUoKSkKICAgICAsIG1fbWVkaWFFbGVtZW50KG1lZGlhRWxlbWVudCkKICAgICAsIG1fc291
cmNlTnVtYmVyT2ZDaGFubmVscygwKQpAQCAtOTcsNyArOTcsNyBAQCB2b2lkIE1lZGlhRWxlbWVu
dEF1ZGlvU291cmNlTm9kZTo6c2V0Rm9ybWF0KHNpemVfdCBudW1iZXJPZkNoYW5uZWxzLCBmbG9h
dCBzb3VyYwogCiAgICAgICAgIHsKICAgICAgICAgICAgIC8vIFRoZSBjb250ZXh0IG11c3QgYmUg
bG9ja2VkIHdoZW4gY2hhbmdpbmcgdGhlIG51bWJlciBvZiBvdXRwdXQgY2hhbm5lbHMuCi0gICAg
ICAgICAgICBBdWRpb0NvbnRleHQ6OkF1dG9Mb2NrZXIgY29udGV4dExvY2tlcihjb250ZXh0KCkp
OworICAgICAgICAgICAgQXVkaW9Db250ZXh0QmFzZTo6QXV0b0xvY2tlciBjb250ZXh0TG9ja2Vy
KGNvbnRleHQoKSk7CiAKICAgICAgICAgICAgIC8vIERvIGFueSBuZWNlc3NzYXJ5IHJlLWNvbmZp
Z3VyYXRpb24gdG8gdGhlIG91dHB1dCdzIG51bWJlciBvZiBjaGFubmVscy4KICAgICAgICAgICAg
IG91dHB1dCgwKS0+c2V0TnVtYmVyT2ZDaGFubmVscyhudW1iZXJPZkNoYW5uZWxzKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vTWVkaWFFbGVtZW50QXVkaW9T
b3VyY2VOb2RlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL01lZGlhRWxlbWVu
dEF1ZGlvU291cmNlTm9kZS5oCmluZGV4IDNhMTMxNTQxNWYxLi43MWQwZWQxMzhhNSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9NZWRpYUVsZW1lbnRBdWRpb1Nv
dXJjZU5vZGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL01lZGlhRWxl
bWVudEF1ZGlvU291cmNlTm9kZS5oCkBAIC00MCw3ICs0MCw3IEBAIGNsYXNzIEF1ZGlvQ29udGV4
dDsKIGNsYXNzIE1lZGlhRWxlbWVudEF1ZGlvU291cmNlTm9kZSBmaW5hbCA6IHB1YmxpYyBBdWRp
b05vZGUsIHB1YmxpYyBBdWRpb1NvdXJjZVByb3ZpZGVyQ2xpZW50IHsKICAgICBXVEZfTUFLRV9J
U09fQUxMT0NBVEVEKE1lZGlhRWxlbWVudEF1ZGlvU291cmNlTm9kZSk7CiBwdWJsaWM6Ci0gICAg
c3RhdGljIFJlZjxNZWRpYUVsZW1lbnRBdWRpb1NvdXJjZU5vZGU+IGNyZWF0ZShBdWRpb0NvbnRl
eHQmLCBIVE1MTWVkaWFFbGVtZW50Jik7CisgICAgc3RhdGljIFJlZjxNZWRpYUVsZW1lbnRBdWRp
b1NvdXJjZU5vZGU+IGNyZWF0ZShBdWRpb0NvbnRleHRCYXNlJiwgSFRNTE1lZGlhRWxlbWVudCYp
OwogCiAgICAgdmlydHVhbCB+TWVkaWFFbGVtZW50QXVkaW9Tb3VyY2VOb2RlKCk7CiAKQEAgLTU3
LDcgKzU3LDcgQEAgcHVibGljOgogICAgIHZvaWQgdW5sb2NrKCk7CiAKIHByaXZhdGU6Ci0gICAg
TWVkaWFFbGVtZW50QXVkaW9Tb3VyY2VOb2RlKEF1ZGlvQ29udGV4dCYsIEhUTUxNZWRpYUVsZW1l
bnQmKTsKKyAgICBNZWRpYUVsZW1lbnRBdWRpb1NvdXJjZU5vZGUoQXVkaW9Db250ZXh0QmFzZSYs
IEhUTUxNZWRpYUVsZW1lbnQmKTsKIAogICAgIGRvdWJsZSB0YWlsVGltZSgpIGNvbnN0IG92ZXJy
aWRlIHsgcmV0dXJuIDA7IH0KICAgICBkb3VibGUgbGF0ZW5jeVRpbWUoKSBjb25zdCBvdmVycmlk
ZSB7IHJldHVybiAwOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1
ZGlvL01lZGlhU3RyZWFtQXVkaW9EZXN0aW5hdGlvbk5vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJhdWRpby9NZWRpYVN0cmVhbUF1ZGlvRGVzdGluYXRpb25Ob2RlLmNwcAppbmRl
eCBkNzY2MjkzMDMwOC4uMzBmMWEyMjJiZTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViYXVkaW8vTWVkaWFTdHJlYW1BdWRpb0Rlc3RpbmF0aW9uTm9kZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9NZWRpYVN0cmVhbUF1ZGlvRGVzdGluYXRp
b25Ob2RlLmNwcApAQCAtMzksMTIgKzM5LDEyIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogV1RG
X01BS0VfSVNPX0FMTE9DQVRFRF9JTVBMKE1lZGlhU3RyZWFtQXVkaW9EZXN0aW5hdGlvbk5vZGUp
OwogCi1SZWY8TWVkaWFTdHJlYW1BdWRpb0Rlc3RpbmF0aW9uTm9kZT4gTWVkaWFTdHJlYW1BdWRp
b0Rlc3RpbmF0aW9uTm9kZTo6Y3JlYXRlKEF1ZGlvQ29udGV4dCYgY29udGV4dCwgc2l6ZV90IG51
bWJlck9mQ2hhbm5lbHMpCitSZWY8TWVkaWFTdHJlYW1BdWRpb0Rlc3RpbmF0aW9uTm9kZT4gTWVk
aWFTdHJlYW1BdWRpb0Rlc3RpbmF0aW9uTm9kZTo6Y3JlYXRlKEF1ZGlvQ29udGV4dEJhc2UmIGNv
bnRleHQsIHNpemVfdCBudW1iZXJPZkNoYW5uZWxzKQogewogICAgIHJldHVybiBhZG9wdFJlZigq
bmV3IE1lZGlhU3RyZWFtQXVkaW9EZXN0aW5hdGlvbk5vZGUoY29udGV4dCwgbnVtYmVyT2ZDaGFu
bmVscykpOwogfQogCi1NZWRpYVN0cmVhbUF1ZGlvRGVzdGluYXRpb25Ob2RlOjpNZWRpYVN0cmVh
bUF1ZGlvRGVzdGluYXRpb25Ob2RlKEF1ZGlvQ29udGV4dCYgY29udGV4dCwgc2l6ZV90IG51bWJl
ck9mQ2hhbm5lbHMpCitNZWRpYVN0cmVhbUF1ZGlvRGVzdGluYXRpb25Ob2RlOjpNZWRpYVN0cmVh
bUF1ZGlvRGVzdGluYXRpb25Ob2RlKEF1ZGlvQ29udGV4dEJhc2UmIGNvbnRleHQsIHNpemVfdCBu
dW1iZXJPZkNoYW5uZWxzKQogICAgIDogQXVkaW9CYXNpY0luc3BlY3Rvck5vZGUoY29udGV4dCwg
Y29udGV4dC5zYW1wbGVSYXRlKCksIG51bWJlck9mQ2hhbm5lbHMpCiAgICAgLCBtX3NvdXJjZShN
ZWRpYVN0cmVhbUF1ZGlvU291cmNlOjpjcmVhdGUoY29udGV4dC5zYW1wbGVSYXRlKCkpKQogICAg
ICwgbV9zdHJlYW0oTWVkaWFTdHJlYW06OmNyZWF0ZSgqY29udGV4dC5kb2N1bWVudCgpLCBNZWRp
YVN0cmVhbVByaXZhdGU6OmNyZWF0ZShjb250ZXh0LmRvY3VtZW50KCktPmxvZ2dlcigpLCBtX3Nv
dXJjZS5jb3B5UmVmKCkpKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
YXVkaW8vTWVkaWFTdHJlYW1BdWRpb0Rlc3RpbmF0aW9uTm9kZS5oIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJhdWRpby9NZWRpYVN0cmVhbUF1ZGlvRGVzdGluYXRpb25Ob2RlLmgKaW5kZXgg
ZjVhN2U4ZmVjNGEuLmRiYWQ5MjhkNzk2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmF1ZGlvL01lZGlhU3RyZWFtQXVkaW9EZXN0aW5hdGlvbk5vZGUuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL01lZGlhU3RyZWFtQXVkaW9EZXN0aW5hdGlvbk5v
ZGUuaApAQCAtMzIsMTMgKzMyLDEzIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3Mg
QXVkaW9Db250ZXh0OworY2xhc3MgQXVkaW9Db250ZXh0QmFzZTsKIGNsYXNzIE1lZGlhU3RyZWFt
QXVkaW9Tb3VyY2U7CiAKIGNsYXNzIE1lZGlhU3RyZWFtQXVkaW9EZXN0aW5hdGlvbk5vZGUgZmlu
YWwgOiBwdWJsaWMgQXVkaW9CYXNpY0luc3BlY3Rvck5vZGUgewogICAgIFdURl9NQUtFX0lTT19B
TExPQ0FURUQoTWVkaWFTdHJlYW1BdWRpb0Rlc3RpbmF0aW9uTm9kZSk7CiBwdWJsaWM6Ci0gICAg
c3RhdGljIFJlZjxNZWRpYVN0cmVhbUF1ZGlvRGVzdGluYXRpb25Ob2RlPiBjcmVhdGUoQXVkaW9D
b250ZXh0Jiwgc2l6ZV90IG51bWJlck9mQ2hhbm5lbHMpOworICAgIHN0YXRpYyBSZWY8TWVkaWFT
dHJlYW1BdWRpb0Rlc3RpbmF0aW9uTm9kZT4gY3JlYXRlKEF1ZGlvQ29udGV4dEJhc2UmLCBzaXpl
X3QgbnVtYmVyT2ZDaGFubmVscyk7CiAKICAgICB2aXJ0dWFsIH5NZWRpYVN0cmVhbUF1ZGlvRGVz
dGluYXRpb25Ob2RlKCk7CiAKQEAgLTQ5LDcgKzQ5LDcgQEAgcHVibGljOgogICAgIHZvaWQgcmVz
ZXQoKSBmaW5hbDsKICAgICAKIHByaXZhdGU6Ci0gICAgTWVkaWFTdHJlYW1BdWRpb0Rlc3RpbmF0
aW9uTm9kZShBdWRpb0NvbnRleHQmLCBzaXplX3QgbnVtYmVyT2ZDaGFubmVscyk7CisgICAgTWVk
aWFTdHJlYW1BdWRpb0Rlc3RpbmF0aW9uTm9kZShBdWRpb0NvbnRleHRCYXNlJiwgc2l6ZV90IG51
bWJlck9mQ2hhbm5lbHMpOwogCiAgICAgZG91YmxlIHRhaWxUaW1lKCkgY29uc3QgZmluYWwgeyBy
ZXR1cm4gMDsgfQogICAgIGRvdWJsZSBsYXRlbmN5VGltZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJu
IDA7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vTWVkaWFT
dHJlYW1BdWRpb1NvdXJjZU5vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRp
by9NZWRpYVN0cmVhbUF1ZGlvU291cmNlTm9kZS5jcHAKaW5kZXggMWI0ZmI2ZDE5MjIuLjM1ZTU1
YTkyMDJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL01lZGlh
U3RyZWFtQXVkaW9Tb3VyY2VOb2RlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmF1ZGlvL01lZGlhU3RyZWFtQXVkaW9Tb3VyY2VOb2RlLmNwcApAQCAtMzgsMTIgKzM4LDEyIEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogV1RGX01BS0VfSVNPX0FMTE9DQVRFRF9JTVBMKE1lZGlh
U3RyZWFtQXVkaW9Tb3VyY2VOb2RlKTsKIAotUmVmPE1lZGlhU3RyZWFtQXVkaW9Tb3VyY2VOb2Rl
PiBNZWRpYVN0cmVhbUF1ZGlvU291cmNlTm9kZTo6Y3JlYXRlKEF1ZGlvQ29udGV4dCYgY29udGV4
dCwgTWVkaWFTdHJlYW0mIG1lZGlhU3RyZWFtLCBNZWRpYVN0cmVhbVRyYWNrJiBhdWRpb1RyYWNr
KQorUmVmPE1lZGlhU3RyZWFtQXVkaW9Tb3VyY2VOb2RlPiBNZWRpYVN0cmVhbUF1ZGlvU291cmNl
Tm9kZTo6Y3JlYXRlKEF1ZGlvQ29udGV4dEJhc2UmIGNvbnRleHQsIE1lZGlhU3RyZWFtJiBtZWRp
YVN0cmVhbSwgTWVkaWFTdHJlYW1UcmFjayYgYXVkaW9UcmFjaykKIHsKICAgICByZXR1cm4gYWRv
cHRSZWYoKm5ldyBNZWRpYVN0cmVhbUF1ZGlvU291cmNlTm9kZShjb250ZXh0LCBtZWRpYVN0cmVh
bSwgYXVkaW9UcmFjaykpOwogfQogCi1NZWRpYVN0cmVhbUF1ZGlvU291cmNlTm9kZTo6TWVkaWFT
dHJlYW1BdWRpb1NvdXJjZU5vZGUoQXVkaW9Db250ZXh0JiBjb250ZXh0LCBNZWRpYVN0cmVhbSYg
bWVkaWFTdHJlYW0sIE1lZGlhU3RyZWFtVHJhY2smIGF1ZGlvVHJhY2spCitNZWRpYVN0cmVhbUF1
ZGlvU291cmNlTm9kZTo6TWVkaWFTdHJlYW1BdWRpb1NvdXJjZU5vZGUoQXVkaW9Db250ZXh0QmFz
ZSYgY29udGV4dCwgTWVkaWFTdHJlYW0mIG1lZGlhU3RyZWFtLCBNZWRpYVN0cmVhbVRyYWNrJiBh
dWRpb1RyYWNrKQogICAgIDogQXVkaW9Ob2RlKGNvbnRleHQsIGNvbnRleHQuc2FtcGxlUmF0ZSgp
KQogICAgICwgbV9tZWRpYVN0cmVhbShtZWRpYVN0cmVhbSkKICAgICAsIG1fYXVkaW9UcmFjayhh
dWRpb1RyYWNrKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9N
ZWRpYVN0cmVhbUF1ZGlvU291cmNlTm9kZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJh
dWRpby9NZWRpYVN0cmVhbUF1ZGlvU291cmNlTm9kZS5oCmluZGV4IGUzZWRlZmUxYmQ1Li5jNzJk
MzEyMjMzZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9NZWRp
YVN0cmVhbUF1ZGlvU291cmNlTm9kZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
YXVkaW8vTWVkaWFTdHJlYW1BdWRpb1NvdXJjZU5vZGUuaApAQCAtNDAsNyArNDAsNyBAQCBjbGFz
cyBNdWx0aUNoYW5uZWxSZXNhbXBsZXI7CiBjbGFzcyBNZWRpYVN0cmVhbUF1ZGlvU291cmNlTm9k
ZSBmaW5hbCA6IHB1YmxpYyBBdWRpb05vZGUsIHB1YmxpYyBBdWRpb1NvdXJjZVByb3ZpZGVyQ2xp
ZW50IHsKICAgICBXVEZfTUFLRV9JU09fQUxMT0NBVEVEKE1lZGlhU3RyZWFtQXVkaW9Tb3VyY2VO
b2RlKTsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPE1lZGlhU3RyZWFtQXVkaW9Tb3VyY2VOb2Rl
PiBjcmVhdGUoQXVkaW9Db250ZXh0JiwgTWVkaWFTdHJlYW0mLCBNZWRpYVN0cmVhbVRyYWNrJik7
CisgICAgc3RhdGljIFJlZjxNZWRpYVN0cmVhbUF1ZGlvU291cmNlTm9kZT4gY3JlYXRlKEF1ZGlv
Q29udGV4dEJhc2UmLCBNZWRpYVN0cmVhbSYsIE1lZGlhU3RyZWFtVHJhY2smKTsKIAogICAgIHZp
cnR1YWwgfk1lZGlhU3RyZWFtQXVkaW9Tb3VyY2VOb2RlKCk7CiAKQEAgLTU0LDcgKzU0LDcgQEAg
cHVibGljOgogICAgIHZvaWQgc2V0Rm9ybWF0KHNpemVfdCBudW1iZXJPZkNoYW5uZWxzLCBmbG9h
dCBzYW1wbGVSYXRlKSBvdmVycmlkZTsKIAogcHJpdmF0ZToKLSAgICBNZWRpYVN0cmVhbUF1ZGlv
U291cmNlTm9kZShBdWRpb0NvbnRleHQmLCBNZWRpYVN0cmVhbSYsIE1lZGlhU3RyZWFtVHJhY2sm
KTsKKyAgICBNZWRpYVN0cmVhbUF1ZGlvU291cmNlTm9kZShBdWRpb0NvbnRleHRCYXNlJiwgTWVk
aWFTdHJlYW0mLCBNZWRpYVN0cmVhbVRyYWNrJik7CiAKICAgICBkb3VibGUgdGFpbFRpbWUoKSBj
b25zdCBvdmVycmlkZSB7IHJldHVybiAwOyB9CiAgICAgZG91YmxlIGxhdGVuY3lUaW1lKCkgY29u
c3Qgb3ZlcnJpZGUgeyByZXR1cm4gMDsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJhdWRpby9PZmZsaW5lQXVkaW9Db250ZXh0LmlkbCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViYXVkaW8vT2ZmbGluZUF1ZGlvQ29udGV4dC5pZGwKaW5kZXggYzZlMGQ3NGYwMmYu
LjZmMTIyYTdjM2M4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlv
L09mZmxpbmVBdWRpb0NvbnRleHQuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
YXVkaW8vT2ZmbGluZUF1ZGlvQ29udGV4dC5pZGwKQEAgLTI4LDYgKzI4LDYgQEAKICAgICBDb25z
dHJ1Y3Rvcih1bnNpZ25lZCBsb25nIG51bWJlck9mQ2hhbm5lbHMsIHVuc2lnbmVkIGxvbmcgbnVt
YmVyT2ZGcmFtZXMsIHVucmVzdHJpY3RlZCBmbG9hdCBzYW1wbGVSYXRlKSwKICAgICBDb25zdHJ1
Y3Rvck1heVRocm93RXhjZXB0aW9uLAogICAgIENvbnN0cnVjdG9yQ2FsbFdpdGg9U2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCwKLSAgICBJbnRlcmZhY2VOYW1lPXdlYmtpdE9mZmxpbmVBdWRpb0NvbnRl
eHQKKyAgICBFbmFibGVkQnlTZXR0aW5nPU1vZGVyblVucHJlZml4ZWRXZWJBdWRpbywKIF0gaW50
ZXJmYWNlIE9mZmxpbmVBdWRpb0NvbnRleHQgOiBBdWRpb0NvbnRleHQgewogfTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vT2ZmbGluZUF1ZGlvRGVzdGluYXRp
b25Ob2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vT2ZmbGluZUF1ZGlv
RGVzdGluYXRpb25Ob2RlLmNwcAppbmRleCA2YTE5NTU0NmNmNy4uZmVjNTA4Y2JmZjEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vT2ZmbGluZUF1ZGlvRGVzdGlu
YXRpb25Ob2RlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL09mZmxp
bmVBdWRpb0Rlc3RpbmF0aW9uTm9kZS5jcHAKQEAgLTQxLDcgKzQxLDcgQEAgV1RGX01BS0VfSVNP
X0FMTE9DQVRFRF9JTVBMKE9mZmxpbmVBdWRpb0Rlc3RpbmF0aW9uTm9kZSk7CiAgICAgCiBjb25z
dCBzaXplX3QgcmVuZGVyUXVhbnR1bVNpemUgPSAxMjg7ICAgIAogCi1PZmZsaW5lQXVkaW9EZXN0
aW5hdGlvbk5vZGU6Ok9mZmxpbmVBdWRpb0Rlc3RpbmF0aW9uTm9kZShBdWRpb0NvbnRleHQmIGNv
bnRleHQsIEF1ZGlvQnVmZmVyKiByZW5kZXJUYXJnZXQpCitPZmZsaW5lQXVkaW9EZXN0aW5hdGlv
bk5vZGU6Ok9mZmxpbmVBdWRpb0Rlc3RpbmF0aW9uTm9kZShBdWRpb0NvbnRleHRCYXNlJiBjb250
ZXh0LCBBdWRpb0J1ZmZlciogcmVuZGVyVGFyZ2V0KQogICAgIDogQXVkaW9EZXN0aW5hdGlvbk5v
ZGUoY29udGV4dCwgcmVuZGVyVGFyZ2V0LT5zYW1wbGVSYXRlKCkpCiAgICAgLCBtX3JlbmRlclRh
cmdldChyZW5kZXJUYXJnZXQpCiAgICAgLCBtX3N0YXJ0ZWRSZW5kZXJpbmcoZmFsc2UpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL09mZmxpbmVBdWRpb0Rlc3Rp
bmF0aW9uTm9kZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9PZmZsaW5lQXVk
aW9EZXN0aW5hdGlvbk5vZGUuaAppbmRleCBkYTI0OTU3NGQ0OC4uZjg3MTBmZGUxMGQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vT2ZmbGluZUF1ZGlvRGVzdGlu
YXRpb25Ob2RlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9PZmZsaW5l
QXVkaW9EZXN0aW5hdGlvbk5vZGUuaApAQCAtMzcsOSArMzcsOSBAQCBjbGFzcyBBdWRpb0NvbnRl
eHQ7CiBjbGFzcyBPZmZsaW5lQXVkaW9EZXN0aW5hdGlvbk5vZGUgZmluYWwgOiBwdWJsaWMgQXVk
aW9EZXN0aW5hdGlvbk5vZGUgewogICAgIFdURl9NQUtFX0lTT19BTExPQ0FURUQoT2ZmbGluZUF1
ZGlvRGVzdGluYXRpb25Ob2RlKTsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPE9mZmxpbmVBdWRp
b0Rlc3RpbmF0aW9uTm9kZT4gY3JlYXRlKEF1ZGlvQ29udGV4dCYgY29udGV4dCwgQXVkaW9CdWZm
ZXIqIHJlbmRlclRhcmdldCkKKyAgICBzdGF0aWMgUmVmPE9mZmxpbmVBdWRpb0Rlc3RpbmF0aW9u
Tm9kZT4gY3JlYXRlKEF1ZGlvQ29udGV4dEJhc2UmIGNvbnRleHQsIEF1ZGlvQnVmZmVyKiByZW5k
ZXJUYXJnZXQpCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBPZmZsaW5lQXVk
aW9EZXN0aW5hdGlvbk5vZGUoY29udGV4dCwgcmVuZGVyVGFyZ2V0KSk7ICAgICAKKyAgICAgICAg
cmV0dXJuIGFkb3B0UmVmKCpuZXcgT2ZmbGluZUF1ZGlvRGVzdGluYXRpb25Ob2RlKGNvbnRleHQs
IHJlbmRlclRhcmdldCkpOwogICAgIH0KIAogICAgIHZpcnR1YWwgfk9mZmxpbmVBdWRpb0Rlc3Rp
bmF0aW9uTm9kZSgpOwpAQCAtNTUsNyArNTUsNyBAQCBwdWJsaWM6CiAgICAgZmxvYXQgc2FtcGxl
UmF0ZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fcmVuZGVyVGFyZ2V0LT5zYW1wbGVSYXRl
KCk7IH0KIAogcHJpdmF0ZToKLSAgICBPZmZsaW5lQXVkaW9EZXN0aW5hdGlvbk5vZGUoQXVkaW9D
b250ZXh0JiwgQXVkaW9CdWZmZXIqIHJlbmRlclRhcmdldCk7CisgICAgT2ZmbGluZUF1ZGlvRGVz
dGluYXRpb25Ob2RlKEF1ZGlvQ29udGV4dEJhc2UmLCBBdWRpb0J1ZmZlciogcmVuZGVyVGFyZ2V0
KTsKIAogICAgIC8vIFRoaXMgQXVkaW9Ob2RlIHJlbmRlcnMgaW50byB0aGlzIEF1ZGlvQnVmZmVy
LgogICAgIFJlZlB0cjxBdWRpb0J1ZmZlcj4gbV9yZW5kZXJUYXJnZXQ7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL09zY2lsbGF0b3JOb2RlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vT3NjaWxsYXRvck5vZGUuY3BwCmluZGV4IDk1NjAw
NTNhNDgwLi5lOGYzMWM3MjIwZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJhdWRpby9Pc2NpbGxhdG9yTm9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJhdWRpby9Pc2NpbGxhdG9yTm9kZS5jcHAKQEAgLTQ1LDEyICs0NSwxMiBAQCBQZXJpb2RpY1dh
dmUqIE9zY2lsbGF0b3JOb2RlOjpzX3BlcmlvZGljV2F2ZVNxdWFyZSA9IG51bGxwdHI7CiBQZXJp
b2RpY1dhdmUqIE9zY2lsbGF0b3JOb2RlOjpzX3BlcmlvZGljV2F2ZVNhd3Rvb3RoID0gbnVsbHB0
cjsKIFBlcmlvZGljV2F2ZSogT3NjaWxsYXRvck5vZGU6OnNfcGVyaW9kaWNXYXZlVHJpYW5nbGUg
PSBudWxscHRyOwogCi1SZWY8T3NjaWxsYXRvck5vZGU+IE9zY2lsbGF0b3JOb2RlOjpjcmVhdGUo
QXVkaW9Db250ZXh0JiBjb250ZXh0LCBmbG9hdCBzYW1wbGVSYXRlKQorUmVmPE9zY2lsbGF0b3JO
b2RlPiBPc2NpbGxhdG9yTm9kZTo6Y3JlYXRlKEF1ZGlvQ29udGV4dEJhc2UmIGNvbnRleHQsIGZs
b2F0IHNhbXBsZVJhdGUpCiB7CiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgT3NjaWxsYXRvck5v
ZGUoY29udGV4dCwgc2FtcGxlUmF0ZSkpOwogfQogCi1Pc2NpbGxhdG9yTm9kZTo6T3NjaWxsYXRv
ck5vZGUoQXVkaW9Db250ZXh0JiBjb250ZXh0LCBmbG9hdCBzYW1wbGVSYXRlKQorT3NjaWxsYXRv
ck5vZGU6Ok9zY2lsbGF0b3JOb2RlKEF1ZGlvQ29udGV4dEJhc2UmIGNvbnRleHQsIGZsb2F0IHNh
bXBsZVJhdGUpCiAgICAgOiBBdWRpb1NjaGVkdWxlZFNvdXJjZU5vZGUoY29udGV4dCwgc2FtcGxl
UmF0ZSkKICAgICAsIG1fZmlyc3RSZW5kZXIodHJ1ZSkKICAgICAsIG1fdmlydHVhbFJlYWRJbmRl
eCgwKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9Pc2NpbGxh
dG9yTm9kZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9Pc2NpbGxhdG9yTm9k
ZS5oCmluZGV4IDQyZmYwYzE5MjRiLi4wODk1YmNlM2RkZCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJhdWRpby9Pc2NpbGxhdG9yTm9kZS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViYXVkaW8vT3NjaWxsYXRvck5vZGUuaApAQCAtNDUsNyArNDUsNyBAQCBw
dWJsaWM6CiAgICAgICAgIEN1c3RvbQogICAgIH07CiAKLSAgICBzdGF0aWMgUmVmPE9zY2lsbGF0
b3JOb2RlPiBjcmVhdGUoQXVkaW9Db250ZXh0JiwgZmxvYXQgc2FtcGxlUmF0ZSk7CisgICAgc3Rh
dGljIFJlZjxPc2NpbGxhdG9yTm9kZT4gY3JlYXRlKEF1ZGlvQ29udGV4dEJhc2UmLCBmbG9hdCBz
YW1wbGVSYXRlKTsKIAogICAgIHZpcnR1YWwgfk9zY2lsbGF0b3JOb2RlKCk7CiAKQEAgLTYwLDcg
KzYwLDcgQEAgcHVibGljOgogICAgIHZvaWQgc2V0UGVyaW9kaWNXYXZlKFBlcmlvZGljV2F2ZSop
OwogCiBwcml2YXRlOgotICAgIE9zY2lsbGF0b3JOb2RlKEF1ZGlvQ29udGV4dCYsIGZsb2F0IHNh
bXBsZVJhdGUpOworICAgIE9zY2lsbGF0b3JOb2RlKEF1ZGlvQ29udGV4dEJhc2UmLCBmbG9hdCBz
YW1wbGVSYXRlKTsKIAogICAgIHZvaWQgcHJvY2VzcyhzaXplX3QgZnJhbWVzVG9Qcm9jZXNzKSBm
aW5hbDsKICAgICB2b2lkIHJlc2V0KCkgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmF1ZGlvL1Bhbm5lck5vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJhdWRpby9QYW5uZXJOb2RlLmNwcAppbmRleCBlYzgwZTY5ZDJhYi4uYWU0MmYxMTRiYmMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vUGFubmVyTm9kZS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9QYW5uZXJOb2RlLmNwcApA
QCAtNDgsOCArNDgsMTMgQEAgc3RhdGljIHZvaWQgZml4TkFOcyhkb3VibGUgJngpCiAgICAgICAg
IHggPSAwLjA7CiB9CiAKLVBhbm5lck5vZGU6OlBhbm5lck5vZGUoQXVkaW9Db250ZXh0JiBjb250
ZXh0LCBmbG9hdCBzYW1wbGVSYXRlKQorUGFubmVyTm9kZUJhc2U6OlBhbm5lck5vZGVCYXNlKEF1
ZGlvQ29udGV4dEJhc2UmIGNvbnRleHQsIGZsb2F0IHNhbXBsZVJhdGUpCiAgICAgOiBBdWRpb05v
ZGUoY29udGV4dCwgc2FtcGxlUmF0ZSkKK3sKK30KKworUGFubmVyTm9kZTo6UGFubmVyTm9kZShB
dWRpb0NvbnRleHQmIGNvbnRleHQsIGZsb2F0IHNhbXBsZVJhdGUpCisgICAgOiBQYW5uZXJOb2Rl
QmFzZShjb250ZXh0LCBzYW1wbGVSYXRlKQogICAgICwgbV9wYW5uaW5nTW9kZWwoUGFubmluZ01v
ZGVsVHlwZTo6SFJURikKICAgICAsIG1fbGFzdEdhaW4oLTEuMCkKICAgICAsIG1fcG9zaXRpb25Y
KEF1ZGlvUGFyYW06OmNyZWF0ZShjb250ZXh0LCAicG9zaXRpb25YIl9zLCAwLCAtRkxUX01BWCwg
RkxUX01BWCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1Bh
bm5lck5vZGUuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vUGFubmVyTm9kZS5o
CmluZGV4IDg0ODBjMjMzMjgwLi4yOWI2NDhkMDYwNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJhdWRpby9QYW5uZXJOb2RlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJhdWRpby9QYW5uZXJOb2RlLmgKQEAgLTI2LDYgKzI2LDcgQEAKIAogI2lmIEVOQUJM
RShXRUJfQVVESU8pCiAKKyNpbmNsdWRlICJBdWRpb0NvbnRleHQuaCIKICNpbmNsdWRlICJBdWRp
b0xpc3RlbmVyLmgiCiAjaW5jbHVkZSAiQXVkaW9Ob2RlLmgiCiAjaW5jbHVkZSAiQXVkaW9QYXJh
bS5oIgpAQCAtNDEsNiArNDIsMTYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBIUlRG
RGF0YWJhc2VMb2FkZXI7CiAKK2NsYXNzIFBhbm5lck5vZGVCYXNlIDogcHVibGljIEF1ZGlvTm9k
ZSB7CitwdWJsaWM6CisgICAgdmlydHVhbCB+UGFubmVyTm9kZUJhc2UoKSA9IGRlZmF1bHQ7CisK
KyAgICB2aXJ0dWFsIGZsb2F0IGRvcHBsZXJSYXRlKCkgPSAwOworCitwcm90ZWN0ZWQ6CisgICAg
UGFubmVyTm9kZUJhc2UoQXVkaW9Db250ZXh0QmFzZSYsIGZsb2F0IHNhbXBsZVJhdGUpOworfTsK
KwogLy8gUGFubmVyTm9kZSBpcyBhbiBBdWRpb05vZGUgd2l0aCBvbmUgaW5wdXQgYW5kIG9uZSBv
dXRwdXQuCiAvLyBJdCBwb3NpdGlvbnMgYSBzb3VuZCBpbiAzRCBzcGFjZSwgd2l0aCB0aGUgZXhh
Y3QgZWZmZWN0IGRlcGVuZGVudCBvbiB0aGUgcGFubmluZyBtb2RlbC4KIC8vIEl0IGhhcyBhIHBv
c2l0aW9uIGFuZCBhbiBvcmllbnRhdGlvbiBpbiAzRCBzcGFjZSB3aGljaCBpcyByZWxhdGl2ZSB0
byB0aGUgcG9zaXRpb24gYW5kIG9yaWVudGF0aW9uIG9mIHRoZSBjb250ZXh0J3MgQXVkaW9MaXN0
ZW5lci4KQEAgLTQ4LDcgKzU5LDcgQEAgY2xhc3MgSFJURkRhdGFiYXNlTG9hZGVyOwogLy8gQSBj
b25lIGVmZmVjdCB3aWxsIGF0dGVudWF0ZSB0aGUgZ2FpbiBhcyB0aGUgb3JpZW50YXRpb24gbW92
ZXMgYXdheSBmcm9tIHRoZSBsaXN0ZW5lci4KIC8vIEFsbCBvZiB0aGVzZSBlZmZlY3RzIGZvbGxv
dyB0aGUgT3BlbkFMIHNwZWNpZmljYXRpb24gdmVyeSBjbG9zZWx5LgogCi1jbGFzcyBQYW5uZXJO
b2RlIGZpbmFsIDogcHVibGljIEF1ZGlvTm9kZSB7CitjbGFzcyBQYW5uZXJOb2RlIGZpbmFsIDog
cHVibGljIFBhbm5lck5vZGVCYXNlIHsKICAgICBXVEZfTUFLRV9JU09fQUxMT0NBVEVEKFBhbm5l
ck5vZGUpOwogcHVibGljOgogICAgIHN0YXRpYyBSZWY8UGFubmVyTm9kZT4gY3JlYXRlKEF1ZGlv
Q29udGV4dCYgY29udGV4dCwgZmxvYXQgc2FtcGxlUmF0ZSkKQEAgLTU4LDYgKzY5LDkgQEAgcHVi
bGljOgogCiAgICAgdmlydHVhbCB+UGFubmVyTm9kZSgpOwogCisgICAgQXVkaW9Db250ZXh0JiBj
b250ZXh0KCkgeyByZXR1cm4gZG93bmNhc3Q8QXVkaW9Db250ZXh0PihBdWRpb05vZGU6OmNvbnRl
eHQoKSk7IH0KKyAgICBjb25zdCBBdWRpb0NvbnRleHQmIGNvbnRleHQoKSBjb25zdCB7IHJldHVy
biBkb3duY2FzdDxBdWRpb0NvbnRleHQ+KEF1ZGlvTm9kZTo6Y29udGV4dCgpKTsgfQorCiAgICAg
Ly8gQXVkaW9Ob2RlCiAgICAgdm9pZCBwcm9jZXNzKHNpemVfdCBmcmFtZXNUb1Byb2Nlc3MpIG92
ZXJyaWRlOwogICAgIHZvaWQgcHVsbElucHV0cyhzaXplX3QgZnJhbWVzVG9Qcm9jZXNzKSBvdmVy
cmlkZTsKQEAgLTExMSw3ICsxMjUsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRDb25lT3V0ZXJH
YWluKGRvdWJsZSBhbmdsZSkgeyBtX2NvbmVFZmZlY3Quc2V0T3V0ZXJHYWluKGFuZ2xlKTsgfQog
CiAgICAgdm9pZCBnZXRBemltdXRoRWxldmF0aW9uKGRvdWJsZSogb3V0QXppbXV0aCwgZG91Ymxl
KiBvdXRFbGV2YXRpb24pOwotICAgIGZsb2F0IGRvcHBsZXJSYXRlKCk7CisgICAgZmxvYXQgZG9w
cGxlclJhdGUoKSBmaW5hbDsKIAogICAgIC8vIEFjY2Vzc29ycyBmb3IgZHluYW1pY2FsbHkgY2Fs
Y3VsYXRlZCBnYWluIHZhbHVlcy4KICAgICBBdWRpb1BhcmFtKiBkaXN0YW5jZUdhaW4oKSB7IHJl
dHVybiBtX2Rpc3RhbmNlR2Fpbi5nZXQoKTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJhdWRpby9QYW5uZXJOb2RlLmlkbCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViYXVkaW8vUGFubmVyTm9kZS5pZGwKaW5kZXggMDMyOTgzN2QyZjUuLjdiYjkyYzRmOGZiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1Bhbm5lck5vZGUuaWRs
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vUGFubmVyTm9kZS5pZGwKQEAg
LTIyLDI3ICsyMiwxMCBAQAogICogU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotWwotICAgIENvbmRpdGlvbmFsPVdFQl9B
VURJTywKLSAgICBJbXBsZW1lbnRlZEFzPVBhbm5pbmdNb2RlbFR5cGUKLV0gZW51bSBQYW5uaW5n
TW9kZWxUeXBlIHsKLSAgICAiZXF1YWxwb3dlciIsCi0gICAgIkhSVEYiCi19OwotCi1bCi0gICAg
Q29uZGl0aW9uYWw9V0VCX0FVRElPLAotICAgIEltcGxlbWVudGVkQXM9RGlzdGFuY2VNb2RlbFR5
cGUKLV0gZW51bSBEaXN0YW5jZU1vZGVsVHlwZSB7Ci0gICAgImxpbmVhciIsCi0gICAgImludmVy
c2UiLAotICAgICJleHBvbmVudGlhbCIKLX07Ci0KIFsKICAgICBDb25kaXRpb25hbD1XRUJfQVVE
SU8sCiAgICAgSlNHZW5lcmF0ZVRvSlNPYmplY3QsCi0gICAgSW50ZXJmYWNlTmFtZT13ZWJraXRB
dWRpb1Bhbm5lck5vZGUsCisgICAgRW5hYmxlZEJ5U2V0dGluZz1Nb2Rlcm5VbnByZWZpeGVkV2Vi
QXVkaW8sCiBdIGludGVyZmFjZSBQYW5uZXJOb2RlIDogQXVkaW9Ob2RlIHsKICAgICAvLyBEZWZh
dWx0IG1vZGVsIGZvciBzdGVyZW8gaXMgSFJURiAKICAgICBhdHRyaWJ1dGUgUGFubmluZ01vZGVs
VHlwZSBwYW5uaW5nTW9kZWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmF1ZGlvL1Bhbm5pbmdNb2RlbFR5cGUuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVk
aW8vUGFubmluZ01vZGVsVHlwZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwLi5hYjBiMjI3MTJhMQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViYXVkaW8vUGFubmluZ01vZGVsVHlwZS5oCkBAIC0wLDAgKzEsMjcgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMjAsIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuICBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAor
ICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
CisgKiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKKyAqIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiUGFubmVyLmgiCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1Bhbm5pbmdNb2RlbFR5cGUuaWRsIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9QYW5uaW5nTW9kZWxUeXBlLmlkbApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uYmY3ZGY4ZjU1NDIKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1Bhbm5pbmdNb2RlbFR5cGUuaWRs
CkBAIC0wLDAgKzEsMzAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAsIEdvb2dsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFO
RCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTgorICogQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTCisgKiBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCitbCisgICAgQ29uZGl0aW9uYWw9V0VCX0FV
RElPLAorXSBlbnVtIFBhbm5pbmdNb2RlbFR5cGUgeworICAgICJlcXVhbHBvd2VyIiwKKyAgICAi
SFJURiIKK307CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1Nj
cmlwdFByb2Nlc3Nvck5vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9T
Y3JpcHRQcm9jZXNzb3JOb2RlLmNwcAppbmRleCA5MWM3NTM3ZTE1ZS4uNzYxMGIxNTAyNDggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vU2NyaXB0UHJvY2Vzc29y
Tm9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9TY3JpcHRQcm9j
ZXNzb3JOb2RlLmNwcApAQCAtNDQsMTIgKzQ0LDEyIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAog
V1RGX01BS0VfSVNPX0FMTE9DQVRFRF9JTVBMKFNjcmlwdFByb2Nlc3Nvck5vZGUpOwogCi1SZWY8
U2NyaXB0UHJvY2Vzc29yTm9kZT4gU2NyaXB0UHJvY2Vzc29yTm9kZTo6Y3JlYXRlKEF1ZGlvQ29u
dGV4dCYgY29udGV4dCwgZmxvYXQgc2FtcGxlUmF0ZSwgc2l6ZV90IGJ1ZmZlclNpemUsIHVuc2ln
bmVkIG51bWJlck9mSW5wdXRDaGFubmVscywgdW5zaWduZWQgbnVtYmVyT2ZPdXRwdXRDaGFubmVs
cykKK1JlZjxTY3JpcHRQcm9jZXNzb3JOb2RlPiBTY3JpcHRQcm9jZXNzb3JOb2RlOjpjcmVhdGUo
QXVkaW9Db250ZXh0QmFzZSYgY29udGV4dCwgZmxvYXQgc2FtcGxlUmF0ZSwgc2l6ZV90IGJ1ZmZl
clNpemUsIHVuc2lnbmVkIG51bWJlck9mSW5wdXRDaGFubmVscywgdW5zaWduZWQgbnVtYmVyT2ZP
dXRwdXRDaGFubmVscykKIHsKICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTY3JpcHRQcm9jZXNz
b3JOb2RlKGNvbnRleHQsIHNhbXBsZVJhdGUsIGJ1ZmZlclNpemUsIG51bWJlck9mSW5wdXRDaGFu
bmVscywgbnVtYmVyT2ZPdXRwdXRDaGFubmVscykpOwogfQogCi1TY3JpcHRQcm9jZXNzb3JOb2Rl
OjpTY3JpcHRQcm9jZXNzb3JOb2RlKEF1ZGlvQ29udGV4dCYgY29udGV4dCwgZmxvYXQgc2FtcGxl
UmF0ZSwgc2l6ZV90IGJ1ZmZlclNpemUsIHVuc2lnbmVkIG51bWJlck9mSW5wdXRDaGFubmVscywg
dW5zaWduZWQgbnVtYmVyT2ZPdXRwdXRDaGFubmVscykKK1NjcmlwdFByb2Nlc3Nvck5vZGU6OlNj
cmlwdFByb2Nlc3Nvck5vZGUoQXVkaW9Db250ZXh0QmFzZSYgY29udGV4dCwgZmxvYXQgc2FtcGxl
UmF0ZSwgc2l6ZV90IGJ1ZmZlclNpemUsIHVuc2lnbmVkIG51bWJlck9mSW5wdXRDaGFubmVscywg
dW5zaWduZWQgbnVtYmVyT2ZPdXRwdXRDaGFubmVscykKICAgICA6IEF1ZGlvTm9kZShjb250ZXh0
LCBzYW1wbGVSYXRlKQogICAgICwgQWN0aXZlRE9NT2JqZWN0KGNvbnRleHQuc2NyaXB0RXhlY3V0
aW9uQ29udGV4dCgpKQogICAgICwgbV9kb3VibGVCdWZmZXJJbmRleCgwKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9TY3JpcHRQcm9jZXNzb3JOb2RlLmggYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1NjcmlwdFByb2Nlc3Nvck5vZGUuaAppbmRl
eCA1YTRlN2NlNDc1Mi4uNGMxNGEwNzU3ZGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViYXVkaW8vU2NyaXB0UHJvY2Vzc29yTm9kZS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViYXVkaW8vU2NyaXB0UHJvY2Vzc29yTm9kZS5oCkBAIC01Miw3ICs1Miw3IEBA
IHB1YmxpYzoKICAgICAvLyBUaGlzIHZhbHVlIGNvbnRyb2xzIGhvdyBmcmVxdWVudGx5IHRoZSBv
bmF1ZGlvcHJvY2VzcyBldmVudCBoYW5kbGVyIGlzIGNhbGxlZCBhbmQgaG93IG1hbnkgc2FtcGxl
LWZyYW1lcyBuZWVkIHRvIGJlIHByb2Nlc3NlZCBlYWNoIGNhbGwuCiAgICAgLy8gTG93ZXIgbnVt
YmVycyBmb3IgYnVmZmVyU2l6ZSB3aWxsIHJlc3VsdCBpbiBhIGxvd2VyIChiZXR0ZXIpIGxhdGVu
Y3kuIEhpZ2hlciBudW1iZXJzIHdpbGwgYmUgbmVjZXNzYXJ5IHRvIGF2b2lkIGF1ZGlvIGJyZWFr
dXAgYW5kIGdsaXRjaGVzLgogICAgIC8vIFRoZSB2YWx1ZSBjaG9zZW4gbXVzdCBjYXJlZnVsbHkg
YmFsYW5jZSBiZXR3ZWVuIGxhdGVuY3kgYW5kIGF1ZGlvIHF1YWxpdHkuCi0gICAgc3RhdGljIFJl
ZjxTY3JpcHRQcm9jZXNzb3JOb2RlPiBjcmVhdGUoQXVkaW9Db250ZXh0JiwgZmxvYXQgc2FtcGxl
UmF0ZSwgc2l6ZV90IGJ1ZmZlclNpemUsIHVuc2lnbmVkIG51bWJlck9mSW5wdXRDaGFubmVscywg
dW5zaWduZWQgbnVtYmVyT2ZPdXRwdXRDaGFubmVscyk7CisgICAgc3RhdGljIFJlZjxTY3JpcHRQ
cm9jZXNzb3JOb2RlPiBjcmVhdGUoQXVkaW9Db250ZXh0QmFzZSYsIGZsb2F0IHNhbXBsZVJhdGUs
IHNpemVfdCBidWZmZXJTaXplLCB1bnNpZ25lZCBudW1iZXJPZklucHV0Q2hhbm5lbHMsIHVuc2ln
bmVkIG51bWJlck9mT3V0cHV0Q2hhbm5lbHMpOwogCiAgICAgdmlydHVhbCB+U2NyaXB0UHJvY2Vz
c29yTm9kZSgpOwogCkBAIC03MSw3ICs3MSw3IEBAIHByaXZhdGU6CiAgICAgZG91YmxlIHRhaWxU
aW1lKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgZG91YmxlIGxhdGVuY3lUaW1lKCkgY29uc3Qgb3Zl
cnJpZGU7CiAKLSAgICBTY3JpcHRQcm9jZXNzb3JOb2RlKEF1ZGlvQ29udGV4dCYsIGZsb2F0IHNh
bXBsZVJhdGUsIHNpemVfdCBidWZmZXJTaXplLCB1bnNpZ25lZCBudW1iZXJPZklucHV0Q2hhbm5l
bHMsIHVuc2lnbmVkIG51bWJlck9mT3V0cHV0Q2hhbm5lbHMpOworICAgIFNjcmlwdFByb2Nlc3Nv
ck5vZGUoQXVkaW9Db250ZXh0QmFzZSYsIGZsb2F0IHNhbXBsZVJhdGUsIHNpemVfdCBidWZmZXJT
aXplLCB1bnNpZ25lZCBudW1iZXJPZklucHV0Q2hhbm5lbHMsIHVuc2lnbmVkIG51bWJlck9mT3V0
cHV0Q2hhbm5lbHMpOwogCiAgICAgdm9pZCBmaXJlUHJvY2Vzc0V2ZW50KCk7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vV2F2ZVNoYXBlck5vZGUuY3BwIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9XYXZlU2hhcGVyTm9kZS5jcHAKaW5kZXgg
NmU3ZThkZDFjOWMuLmFlNGFmOWYyMzJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmF1ZGlvL1dhdmVTaGFwZXJOb2RlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmF1ZGlvL1dhdmVTaGFwZXJOb2RlLmNwcApAQCAtMzUsNyArMzUsNyBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKIFdURl9NQUtFX0lTT19BTExPQ0FURURfSU1QTChXYXZlU2hhcGVyTm9k
ZSk7CiAKLVdhdmVTaGFwZXJOb2RlOjpXYXZlU2hhcGVyTm9kZShBdWRpb0NvbnRleHQmIGNvbnRl
eHQpCitXYXZlU2hhcGVyTm9kZTo6V2F2ZVNoYXBlck5vZGUoQXVkaW9Db250ZXh0QmFzZSYgY29u
dGV4dCkKICAgICA6IEF1ZGlvQmFzaWNQcm9jZXNzb3JOb2RlKGNvbnRleHQsIGNvbnRleHQuc2Ft
cGxlUmF0ZSgpKQogewogICAgIHNldE5vZGVUeXBlKE5vZGVUeXBlV2F2ZVNoYXBlcik7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1dhdmVTaGFwZXJOb2RlLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1dhdmVTaGFwZXJOb2RlLmgKaW5kZXgg
ZjQ5ZTM0OWJjM2QuLjVmNDkzMjhiMjJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmF1ZGlvL1dhdmVTaGFwZXJOb2RlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJhdWRpby9XYXZlU2hhcGVyTm9kZS5oCkBAIC0zMyw3ICszMyw3IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIGNsYXNzIFdhdmVTaGFwZXJOb2RlIGZpbmFsIDogcHVibGljIEF1ZGlvQmFzaWNQ
cm9jZXNzb3JOb2RlIHsKICAgICBXVEZfTUFLRV9JU09fQUxMT0NBVEVEKFdhdmVTaGFwZXJOb2Rl
KTsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPFdhdmVTaGFwZXJOb2RlPiBjcmVhdGUoQXVkaW9D
b250ZXh0JiBjb250ZXh0KQorICAgIHN0YXRpYyBSZWY8V2F2ZVNoYXBlck5vZGU+IGNyZWF0ZShB
dWRpb0NvbnRleHRCYXNlJiBjb250ZXh0KQogICAgIHsKICAgICAgICAgcmV0dXJuIGFkb3B0UmVm
KCpuZXcgV2F2ZVNoYXBlck5vZGUoY29udGV4dCkpOwogICAgIH0KQEAgLTQ5LDcgKzQ5LDcgQEAg
cHVibGljOgogICAgIGRvdWJsZSBsYXRlbmN5KCkgY29uc3QgeyByZXR1cm4gbGF0ZW5jeVRpbWUo
KTsgfQogCiBwcml2YXRlOiAgICAKLSAgICBleHBsaWNpdCBXYXZlU2hhcGVyTm9kZShBdWRpb0Nv
bnRleHQmKTsgICAgCisgICAgZXhwbGljaXQgV2F2ZVNoYXBlck5vZGUoQXVkaW9Db250ZXh0QmFz
ZSYpOwogCiAgICAgV2F2ZVNoYXBlclByb2Nlc3Nvciogd2F2ZVNoYXBlclByb2Nlc3NvcigpIHsg
cmV0dXJuIHN0YXRpY19jYXN0PFdhdmVTaGFwZXJQcm9jZXNzb3IqPihwcm9jZXNzb3IoKSk7IH0K
IH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1dlYktpdEF1
ZGlvQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1dlYktpdEF1
ZGlvQ29udGV4dC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLmMy
MGYxYjdlMGI0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJh
dWRpby9XZWJLaXRBdWRpb0NvbnRleHQuY3BwCkBAIC0wLDAgKzEsMTM5NSBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29w
eXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuICBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICog
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OCisg
KiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKKyAqIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNpbmNsdWRlICJjb25maWcuaCIKKworI2lmIEVOQUJMRShXRUJfQVVESU8pCisKKyNpbmNsdWRl
ICJXZWJLaXRBdWRpb0NvbnRleHQuaCIKKworI2luY2x1ZGUgIkFuYWx5c2VyTm9kZS5oIgorI2lu
Y2x1ZGUgIkFzeW5jQXVkaW9EZWNvZGVyLmgiCisjaW5jbHVkZSAiQXVkaW9CdWZmZXIuaCIKKyNp
bmNsdWRlICJBdWRpb0J1ZmZlckNhbGxiYWNrLmgiCisjaW5jbHVkZSAiQXVkaW9CdWZmZXJTb3Vy
Y2VOb2RlLmgiCisjaW5jbHVkZSAiQXVkaW9MaXN0ZW5lci5oIgorI2luY2x1ZGUgIkF1ZGlvTm9k
ZUlucHV0LmgiCisjaW5jbHVkZSAiQXVkaW9Ob2RlT3V0cHV0LmgiCisjaW5jbHVkZSAiQXVkaW9T
ZXNzaW9uLmgiCisjaW5jbHVkZSAiQmlxdWFkRmlsdGVyTm9kZS5oIgorI2luY2x1ZGUgIkNoYW5u
ZWxNZXJnZXJOb2RlLmgiCisjaW5jbHVkZSAiQ2hhbm5lbFNwbGl0dGVyTm9kZS5oIgorI2luY2x1
ZGUgIkNvbnZvbHZlck5vZGUuaCIKKyNpbmNsdWRlICJEZWZhdWx0QXVkaW9EZXN0aW5hdGlvbk5v
ZGUuaCIKKyNpbmNsdWRlICJEZWxheU5vZGUuaCIKKyNpbmNsdWRlICJEb2N1bWVudC5oIgorI2lu
Y2x1ZGUgIkR5bmFtaWNzQ29tcHJlc3Nvck5vZGUuaCIKKyNpbmNsdWRlICJFdmVudE5hbWVzLmgi
CisjaW5jbHVkZSAiRkZURnJhbWUuaCIKKyNpbmNsdWRlICJGcmFtZS5oIgorI2luY2x1ZGUgIkZy
YW1lTG9hZGVyLmgiCisjaW5jbHVkZSAiR2Fpbk5vZGUuaCIKKyNpbmNsdWRlICJHZW5lcmljRXZl
bnRRdWV1ZS5oIgorI2luY2x1ZGUgIkhSVEZEYXRhYmFzZUxvYWRlci5oIgorI2luY2x1ZGUgIkhS
VEZQYW5uZXIuaCIKKyNpbmNsdWRlICJKU0RPTVByb21pc2VEZWZlcnJlZC5oIgorI2luY2x1ZGUg
IkxvZ2dpbmcuaCIKKyNpbmNsdWRlICJOZXR3b3JraW5nQ29udGV4dC5oIgorI2luY2x1ZGUgIk9m
ZmxpbmVBdWRpb0NvbXBsZXRpb25FdmVudC5oIgorI2luY2x1ZGUgIk9mZmxpbmVBdWRpb0Rlc3Rp
bmF0aW9uTm9kZS5oIgorI2luY2x1ZGUgIk9zY2lsbGF0b3JOb2RlLmgiCisjaW5jbHVkZSAiUGFn
ZS5oIgorI2luY2x1ZGUgIlBlcmlvZGljV2F2ZS5oIgorI2luY2x1ZGUgIlBsYXRmb3JtTWVkaWFT
ZXNzaW9uTWFuYWdlci5oIgorI2luY2x1ZGUgIlNjcmlwdENvbnRyb2xsZXIuaCIKKyNpbmNsdWRl
ICJTY3JpcHRQcm9jZXNzb3JOb2RlLmgiCisjaW5jbHVkZSAiV2F2ZVNoYXBlck5vZGUuaCIKKyNp
bmNsdWRlICJXZWJLaXRBdWRpb1Bhbm5lck5vZGUuaCIKKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29y
ZS9TY3JpcHRDYWxsU3RhY2suaD4KKworI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCisjaW5jbHVk
ZSAiTWVkaWFTdHJlYW0uaCIKKyNpbmNsdWRlICJNZWRpYVN0cmVhbUF1ZGlvRGVzdGluYXRpb25O
b2RlLmgiCisjaW5jbHVkZSAiTWVkaWFTdHJlYW1BdWRpb1NvdXJjZS5oIgorI2luY2x1ZGUgIk1l
ZGlhU3RyZWFtQXVkaW9Tb3VyY2VOb2RlLmgiCisjZW5kaWYKKworI2lmIEVOQUJMRShWSURFTykK
KyNpbmNsdWRlICJIVE1MTWVkaWFFbGVtZW50LmgiCisjaW5jbHVkZSAiTWVkaWFFbGVtZW50QXVk
aW9Tb3VyY2VOb2RlLmgiCisjZW5kaWYKKworI2lmIERFQlVHX0FVRElPTk9ERV9SRUZFUkVOQ0VT
CisjaW5jbHVkZSA8c3RkaW8uaD4KKyNlbmRpZgorCisjaWYgVVNFKEdTVFJFQU1FUikKKyNpbmNs
dWRlICJHU3RyZWFtZXJDb21tb24uaCIKKyNlbmRpZgorCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlM
WSkKKyNpbmNsdWRlICJTY3JpcHRDb250cm9sbGVyLmgiCisjaW5jbHVkZSAiU2V0dGluZ3MuaCIK
KyNlbmRpZgorCisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvQXJyYXlCdWZmZXIuaD4KKyNpbmNs
dWRlIDx3dGYvQXRvbWljcy5oPgorI2luY2x1ZGUgPHd0Zi9Jc29NYWxsb2NJbmxpbmVzLmg+Cisj
aW5jbHVkZSA8d3RmL01haW5UaHJlYWQuaD4KKyNpbmNsdWRlIDx3dGYvUmVmLmg+CisjaW5jbHVk
ZSA8d3RmL1JlZkNvdW50ZWQuaD4KKyNpbmNsdWRlIDx3dGYvU2NvcGUuaD4KKyNpbmNsdWRlIDx3
dGYvdGV4dC9XVEZTdHJpbmcuaD4KKworY29uc3QgdW5zaWduZWQgTWF4UGVyaW9kaWNXYXZlTGVu
Z3RoID0gNDA5NjsKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCisjZGVmaW5lIFJFTEVBU0VfTE9H
X0lGX0FMTE9XRUQoZm10LCAuLi4pIFJFTEVBU0VfTE9HX0lGKGRvY3VtZW50KCkgJiYgZG9jdW1l
bnQoKS0+cGFnZSgpICYmIGRvY3VtZW50KCktPnBhZ2UoKS0+aXNBbHdheXNPbkxvZ2dpbmdBbGxv
d2VkKCksIE1lZGlhLCAiJXAgLSBXZWJLaXRBdWRpb0NvbnRleHQ6OiIgZm10LCB0aGlzLCAjI19f
VkFfQVJHU19fKQorCitib29sIFdlYktpdEF1ZGlvQ29udGV4dDo6aXNTYW1wbGVSYXRlUmFuZ2VH
b29kKGZsb2F0IHNhbXBsZVJhdGUpCit7CisgICAgLy8gRklYTUU6IEl0IHdvdWxkIGJlIG5pY2Ug
aWYgdGhlIG1pbmltdW0gc2FtcGxlLXJhdGUgY291bGQgYmUgbGVzcyB0aGFuIDQ0LjFLSHosCisg
ICAgLy8gYnV0IHRoYXQgd2lsbCByZXF1aXJlIHNvbWUgZml4ZXMgaW4gSFJURlBhbm5lcjo6ZmZ0
U2l6ZUZvclNhbXBsZVJhdGUoKSwgYW5kIHNvbWUgdGVzdGluZyB0aGVyZS4KKyAgICByZXR1cm4g
c2FtcGxlUmF0ZSA+PSA0NDEwMCAmJiBzYW1wbGVSYXRlIDw9IDk2MDAwOworfQorCisjaWYgT1Mo
V0lORE9XUykKKy8vIERvbid0IGFsbG93IG1vcmUgdGhhbiB0aGlzIG51bWJlciBvZiBzaW11bHRh
bmVvdXMgQXVkaW9Db250ZXh0cyB0YWxraW5nIHRvIGhhcmR3YXJlLgorY29uc3RleHByIHVuc2ln
bmVkIG1heEhhcmR3YXJlQ29udGV4dHMgPSA0OworI2VuZGlmCit1bnNpZ25lZCBXZWJLaXRBdWRp
b0NvbnRleHQ6OnNfaGFyZHdhcmVDb250ZXh0Q291bnQgPSAwOworCitFeGNlcHRpb25PcjxSZWY8
V2ViS2l0QXVkaW9Db250ZXh0Pj4gV2ViS2l0QXVkaW9Db250ZXh0OjpjcmVhdGUoRG9jdW1lbnQm
IGRvY3VtZW50KQoreworICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisjaWYgT1MoV0lORE9X
UykKKyAgICBpZiAoc19oYXJkd2FyZUNvbnRleHRDb3VudCA+PSBtYXhIYXJkd2FyZUNvbnRleHRz
KQorICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgUXVvdGFFeGNlZWRlZEVycm9yIH07CisjZW5k
aWYKKworICAgIGF1dG8gYXVkaW9Db250ZXh0ID0gYWRvcHRSZWYoKm5ldyBXZWJLaXRBdWRpb0Nv
bnRleHQoZG9jdW1lbnQpKTsKKyAgICBhdWRpb0NvbnRleHQtPnN1c3BlbmRJZk5lZWRlZCgpOwor
ICAgIHJldHVybiBhdWRpb0NvbnRleHQ7Cit9CisKKy8vIENvbnN0cnVjdG9yIGZvciByZW5kZXJp
bmcgdG8gdGhlIGF1ZGlvIGhhcmR3YXJlLgorV2ViS2l0QXVkaW9Db250ZXh0OjpXZWJLaXRBdWRp
b0NvbnRleHQoRG9jdW1lbnQmIGRvY3VtZW50KQorICAgIDogQXVkaW9Db250ZXh0QmFzZShkb2N1
bWVudCkKKyNpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKKyAgICAsIG1fbG9nZ2VyKGRvY3VtZW50
LmxvZ2dlcigpKQorICAgICwgbV9sb2dJZGVudGlmaWVyKHVuaXF1ZUxvZ0lkZW50aWZpZXIoKSkK
KyNlbmRpZgorICAgICwgbV9tZWRpYVNlc3Npb24oUGxhdGZvcm1NZWRpYVNlc3Npb246OmNyZWF0
ZShQbGF0Zm9ybU1lZGlhU2Vzc2lvbk1hbmFnZXI6OnNoYXJlZE1hbmFnZXIoKSwgKnRoaXMpKQor
ICAgICwgbV9ldmVudFF1ZXVlKE1haW5UaHJlYWRHZW5lcmljRXZlbnRRdWV1ZTo6Y3JlYXRlKCp0
aGlzKSkKK3sKKyAgICAvLyBBY2NvcmRpbmcgdG8gc3BlYyBBdWRpb0NvbnRleHQgbXVzdCBkaWUg
b25seSBhZnRlciBwYWdlIG5hdmlnYXRlLgorICAgIC8vIExldHMgbWFyayBpdCBhcyBBY3RpdmVE
T01PYmplY3Qgd2l0aCBwZW5kaW5nIGFjdGl2aXR5IGFuZCB1bm1hcmsgaXQgaW4gY2xlYXIgbWV0
aG9kLgorICAgIG1ha2VQZW5kaW5nQWN0aXZpdHkoKTsKKworICAgIGNvbnN0cnVjdENvbW1vbigp
OworCisgICAgbV9kZXN0aW5hdGlvbk5vZGUgPSBEZWZhdWx0QXVkaW9EZXN0aW5hdGlvbk5vZGU6
OmNyZWF0ZSgqdGhpcyk7CisKKyAgICAvLyBJbml0aWFsaXplIHRoZSBkZXN0aW5hdGlvbiBub2Rl
J3MgbXV0ZWQgc3RhdGUgdG8gbWF0Y2ggdGhlIHBhZ2UncyBjdXJyZW50IG11dGVkIHN0YXRlLgor
ICAgIHBhZ2VNdXRlZFN0YXRlRGlkQ2hhbmdlKCk7CisKKyAgICBkb2N1bWVudC5hZGRBdWRpb1By
b2R1Y2VyKCp0aGlzKTsKKyAgICBkb2N1bWVudC5yZWdpc3RlckZvclZpc2liaWxpdHlTdGF0ZUNo
YW5nZWRDYWxsYmFja3MoKnRoaXMpOworfQorCisvLyBDb25zdHJ1Y3RvciBmb3Igb2ZmbGluZSAo
bm9uLXJlYWx0aW1lKSByZW5kZXJpbmcuCitXZWJLaXRBdWRpb0NvbnRleHQ6OldlYktpdEF1ZGlv
Q29udGV4dChEb2N1bWVudCYgZG9jdW1lbnQsIEF1ZGlvQnVmZmVyKiByZW5kZXJUYXJnZXQpCisg
ICAgOiBBdWRpb0NvbnRleHRCYXNlKGRvY3VtZW50KQorI2lmICFSRUxFQVNFX0xPR19ESVNBQkxF
RAorICAgICwgbV9sb2dnZXIoZG9jdW1lbnQubG9nZ2VyKCkpCisgICAgLCBtX2xvZ0lkZW50aWZp
ZXIodW5pcXVlTG9nSWRlbnRpZmllcigpKQorI2VuZGlmCisgICAgLCBtX2lzT2ZmbGluZUNvbnRl
eHQodHJ1ZSkKKyAgICAsIG1fbWVkaWFTZXNzaW9uKFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpjcmVh
dGUoUGxhdGZvcm1NZWRpYVNlc3Npb25NYW5hZ2VyOjpzaGFyZWRNYW5hZ2VyKCksICp0aGlzKSkK
KyAgICAsIG1fZXZlbnRRdWV1ZShNYWluVGhyZWFkR2VuZXJpY0V2ZW50UXVldWU6OmNyZWF0ZSgq
dGhpcykpCisgICAgLCBtX3JlbmRlclRhcmdldChyZW5kZXJUYXJnZXQpCit7CisgICAgY29uc3Ry
dWN0Q29tbW9uKCk7CisKKyAgICAvLyBDcmVhdGUgYSBuZXcgZGVzdGluYXRpb24gZm9yIG9mZmxp
bmUgcmVuZGVyaW5nLgorICAgIG1fZGVzdGluYXRpb25Ob2RlID0gT2ZmbGluZUF1ZGlvRGVzdGlu
YXRpb25Ob2RlOjpjcmVhdGUoKnRoaXMsIG1fcmVuZGVyVGFyZ2V0LmdldCgpKTsKK30KKwordm9p
ZCBXZWJLaXRBdWRpb0NvbnRleHQ6OmNvbnN0cnVjdENvbW1vbigpCit7CisgICAgRkZURnJhbWU6
OmluaXRpYWxpemUoKTsKKworICAgIG1fbGlzdGVuZXIgPSBBdWRpb0xpc3RlbmVyOjpjcmVhdGUo
KTsKKworICAgIEFTU0VSVChkb2N1bWVudCgpKTsKKyAgICBpZiAoZG9jdW1lbnQoKS0+YXVkaW9Q
bGF5YmFja1JlcXVpcmVzVXNlckdlc3R1cmUoKSkKKyAgICAgICAgYWRkQmVoYXZpb3JSZXN0cmlj
dGlvbihSZXF1aXJlVXNlckdlc3R1cmVGb3JBdWRpb1N0YXJ0UmVzdHJpY3Rpb24pOworICAgIGVs
c2UKKyAgICAgICAgbV9yZXN0cmljdGlvbnMgPSBOb1Jlc3RyaWN0aW9uczsKKworI2lmIFBMQVRG
T1JNKENPQ09BKQorICAgIGFkZEJlaGF2aW9yUmVzdHJpY3Rpb24oUmVxdWlyZVBhZ2VDb25zZW50
Rm9yQXVkaW9TdGFydFJlc3RyaWN0aW9uKTsKKyNlbmRpZgorfQorCitXZWJLaXRBdWRpb0NvbnRl
eHQ6On5XZWJLaXRBdWRpb0NvbnRleHQoKQoreworI2lmIERFQlVHX0FVRElPTk9ERV9SRUZFUkVO
Q0VTCisgICAgZnByaW50ZihzdGRlcnIsICIlcDogV2ViS2l0QXVkaW9Db250ZXh0Ojp+V2ViS2l0
QXVkaW9Db250ZXh0KClcbiIsIHRoaXMpOworI2VuZGlmCisgICAgQVNTRVJUKCFtX2lzSW5pdGlh
bGl6ZWQpOworICAgIEFTU0VSVChtX2lzU3RvcFNjaGVkdWxlZCk7CisgICAgQVNTRVJUKG1fbm9k
ZXNUb0RlbGV0ZS5pc0VtcHR5KCkpOworICAgIEFTU0VSVChtX3JlZmVyZW5jZWROb2Rlcy5pc0Vt
cHR5KCkpOworICAgIEFTU0VSVChtX2ZpbmlzaGVkTm9kZXMuaXNFbXB0eSgpKTsgLy8gRklYTUUg
KGJ1ZyAxMDU4NzApOiBUaGlzIGFzc2VydGlvbiBmYWlscyBvbiB0ZXN0cyBzb21ldGltZXMuCisg
ICAgQVNTRVJUKG1fYXV0b21hdGljUHVsbE5vZGVzLmlzRW1wdHkoKSk7CisgICAgaWYgKG1fYXV0
b21hdGljUHVsbE5vZGVzTmVlZFVwZGF0aW5nKQorICAgICAgICBtX3JlbmRlcmluZ0F1dG9tYXRp
Y1B1bGxOb2Rlcy5yZXNpemUobV9hdXRvbWF0aWNQdWxsTm9kZXMuc2l6ZSgpKTsKKyAgICBBU1NF
UlQobV9yZW5kZXJpbmdBdXRvbWF0aWNQdWxsTm9kZXMuaXNFbXB0eSgpKTsKKyAgICAvLyBGSVhN
RTogQ2FuIHdlIGFzc2VydCB0aGF0IG1fZGVmZXJyZWRGaW5pc2hEZXJlZkxpc3QgaXMgZW1wdHk/
CisKKyAgICBpZiAoIWlzT2ZmbGluZUNvbnRleHQoKSAmJiBzY3JpcHRFeGVjdXRpb25Db250ZXh0
KCkpIHsKKyAgICAgICAgZG9jdW1lbnQoKS0+cmVtb3ZlQXVkaW9Qcm9kdWNlcigqdGhpcyk7Cisg
ICAgICAgIGRvY3VtZW50KCktPnVucmVnaXN0ZXJGb3JWaXNpYmlsaXR5U3RhdGVDaGFuZ2VkQ2Fs
bGJhY2tzKCp0aGlzKTsKKyAgICB9Cit9CisKK3ZvaWQgV2ViS2l0QXVkaW9Db250ZXh0OjpsYXp5
SW5pdGlhbGl6ZSgpCit7CisgICAgQVNTRVJUKCFtX2lzU3RvcFNjaGVkdWxlZCk7CisKKyAgICBp
ZiAobV9pc0luaXRpYWxpemVkKQorICAgICAgICByZXR1cm47CisKKyAgICAvLyBEb24ndCBhbGxv
dyB0aGUgY29udGV4dCB0byBpbml0aWFsaXplIGEgc2Vjb25kIHRpbWUgYWZ0ZXIgaXQncyBhbHJl
YWR5IGJlZW4gZXhwbGljaXRseSB1bmluaXRpYWxpemVkLgorICAgIEFTU0VSVCghbV9pc0F1ZGlv
VGhyZWFkRmluaXNoZWQpOworICAgIGlmIChtX2lzQXVkaW9UaHJlYWRGaW5pc2hlZCkKKyAgICAg
ICAgcmV0dXJuOworCisgICAgaWYgKG1fZGVzdGluYXRpb25Ob2RlKSB7CisgICAgICAgIG1fZGVz
dGluYXRpb25Ob2RlLT5pbml0aWFsaXplKCk7CisKKyAgICAgICAgaWYgKCFpc09mZmxpbmVDb250
ZXh0KCkpIHsKKyAgICAgICAgICAgIC8vIFRoaXMgc3RhcnRzIHRoZSBhdWRpbyB0aHJlYWQuIFRo
ZSBkZXN0aW5hdGlvbiBub2RlJ3MgcHJvdmlkZUlucHV0KCkgbWV0aG9kIHdpbGwgbm93IGJlIGNh
bGxlZCByZXBlYXRlZGx5IHRvIHJlbmRlciBhdWRpby4KKyAgICAgICAgICAgIC8vIEVhY2ggdGlt
ZSBwcm92aWRlSW5wdXQoKSBpcyBjYWxsZWQsIGEgcG9ydGlvbiBvZiB0aGUgYXVkaW8gc3RyZWFt
IGlzIHJlbmRlcmVkLiBMZXQncyBjYWxsIHRoaXMgdGltZSBwZXJpb2QgYSAicmVuZGVyIHF1YW50
dW0iLgorICAgICAgICAgICAgLy8gTk9URTogZm9yIG5vdyBkZWZhdWx0IEF1ZGlvQ29udGV4dCBk
b2VzIG5vdCBuZWVkIGFuIGV4cGxpY2l0IHN0YXJ0UmVuZGVyaW5nKCkgY2FsbCBmcm9tIEphdmFT
Y3JpcHQuCisgICAgICAgICAgICAvLyBXZSBtYXkgd2FudCB0byBjb25zaWRlciByZXF1aXJpbmcg
aXQgZm9yIHN5bW1ldHJ5IHdpdGggT2ZmbGluZUF1ZGlvQ29udGV4dC4KKyAgICAgICAgICAgIHN0
YXJ0UmVuZGVyaW5nKCk7CisgICAgICAgICAgICArK3NfaGFyZHdhcmVDb250ZXh0Q291bnQ7Cisg
ICAgICAgIH0KKyAgICB9CisgICAgbV9pc0luaXRpYWxpemVkID0gdHJ1ZTsKK30KKwordm9pZCBX
ZWJLaXRBdWRpb0NvbnRleHQ6OmNsZWFyKCkKK3sKKyAgICBSZWY8V2ViS2l0QXVkaW9Db250ZXh0
PiBwcm90ZWN0ZWRUaGlzKCp0aGlzKTsKKworICAgIC8vIFdlIGhhdmUgdG8gcmVsZWFzZSBvdXIg
cmVmZXJlbmNlIHRvIHRoZSBkZXN0aW5hdGlvbiBub2RlIGJlZm9yZSB0aGUgY29udGV4dCB3aWxs
IGV2ZXIgYmUgZGVsZXRlZCBzaW5jZSB0aGUgZGVzdGluYXRpb24gbm9kZSBob2xkcyBhIHJlZmVy
ZW5jZSB0byB0aGUgY29udGV4dC4KKyAgICBpZiAobV9kZXN0aW5hdGlvbk5vZGUpCisgICAgICAg
IG1fZGVzdGluYXRpb25Ob2RlID0gbnVsbHB0cjsKKworICAgIC8vIEF1ZGlvIHRocmVhZCBpcyBk
ZWFkLiBOb2JvZHkgd2lsbCBzY2hlZHVsZSBub2RlIGRlbGV0aW9uIGFjdGlvbi4gTGV0J3MgZG8g
aXQgb3Vyc2VsdmVzLgorICAgIGRvIHsKKyAgICAgICAgZGVsZXRlTWFya2VkTm9kZXMoKTsKKyAg
ICAgICAgbV9ub2Rlc1RvRGVsZXRlLmFwcGVuZFZlY3RvcihtX25vZGVzTWFya2VkRm9yRGVsZXRp
b24pOworICAgICAgICBtX25vZGVzTWFya2VkRm9yRGVsZXRpb24uY2xlYXIoKTsKKyAgICB9IHdo
aWxlIChtX25vZGVzVG9EZWxldGUuc2l6ZSgpKTsKKworICAgIGNsZWFyUGVuZGluZ0FjdGl2aXR5
KCk7Cit9CisKK3ZvaWQgV2ViS2l0QXVkaW9Db250ZXh0Ojp1bmluaXRpYWxpemUoKQoreworICAg
IEFMV0FZU19MT0coTE9HSURFTlRJRklFUik7CisKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkp
OworCisgICAgaWYgKCFtX2lzSW5pdGlhbGl6ZWQpCisgICAgICAgIHJldHVybjsKKworICAgIC8v
IFRoaXMgc3RvcHMgdGhlIGF1ZGlvIHRocmVhZCBhbmQgYWxsIGF1ZGlvIHJlbmRlcmluZy4KKyAg
ICBpZiAobV9kZXN0aW5hdGlvbk5vZGUpCisgICAgICAgIG1fZGVzdGluYXRpb25Ob2RlLT51bmlu
aXRpYWxpemUoKTsKKworICAgIC8vIERvbid0IGFsbG93IHRoZSBjb250ZXh0IHRvIGluaXRpYWxp
emUgYSBzZWNvbmQgdGltZSBhZnRlciBpdCdzIGFscmVhZHkgYmVlbiBleHBsaWNpdGx5IHVuaW5p
dGlhbGl6ZWQuCisgICAgbV9pc0F1ZGlvVGhyZWFkRmluaXNoZWQgPSB0cnVlOworCisgICAgaWYg
KCFpc09mZmxpbmVDb250ZXh0KCkpIHsKKyAgICAgICAgQVNTRVJUKHNfaGFyZHdhcmVDb250ZXh0
Q291bnQpOworICAgICAgICAtLXNfaGFyZHdhcmVDb250ZXh0Q291bnQ7CisKKyAgICAgICAgLy8g
T2ZmbGluZSBjb250ZXh0cyBtb3ZlIHRvICdDbG9zZWQnIHN0YXRlIHdoZW4gZGlzcGF0Y2hpbmcg
dGhlIGNvbXBsZXRpb24gZXZlbnQuCisgICAgICAgIHNldFN0YXRlKFN0YXRlOjpDbG9zZWQpOwor
ICAgIH0KKworICAgIC8vIEdldCByaWQgb2YgdGhlIHNvdXJjZXMgd2hpY2ggbWF5IHN0aWxsIGJl
IHBsYXlpbmcuCisgICAgZGVyZWZVbmZpbmlzaGVkU291cmNlTm9kZXMoKTsKKworICAgIG1faXNJ
bml0aWFsaXplZCA9IGZhbHNlOworfQorCitib29sIFdlYktpdEF1ZGlvQ29udGV4dDo6aXNJbml0
aWFsaXplZCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1faXNJbml0aWFsaXplZDsKK30KKwordm9p
ZCBXZWJLaXRBdWRpb0NvbnRleHQ6OmFkZFJlYWN0aW9uKFN0YXRlIHN0YXRlLCBET01Qcm9taXNl
RGVmZXJyZWQ8dm9pZD4mJiBwcm9taXNlKQoreworICAgIHNpemVfdCBzdGF0ZUluZGV4ID0gc3Rh
dGljX2Nhc3Q8c2l6ZV90PihzdGF0ZSk7CisgICAgaWYgKHN0YXRlSW5kZXggPj0gbV9zdGF0ZVJl
YWN0aW9ucy5zaXplKCkpCisgICAgICAgIG1fc3RhdGVSZWFjdGlvbnMuZ3JvdyhzdGF0ZUluZGV4
ICsgMSk7CisKKyAgICBtX3N0YXRlUmVhY3Rpb25zW3N0YXRlSW5kZXhdLmFwcGVuZChXVEZNb3Zl
KHByb21pc2UpKTsKK30KKwordm9pZCBXZWJLaXRBdWRpb0NvbnRleHQ6OnNldFN0YXRlKFN0YXRl
IHN0YXRlKQoreworICAgIGlmIChtX3N0YXRlID09IHN0YXRlKQorICAgICAgICByZXR1cm47CisK
KyAgICBtX3N0YXRlID0gc3RhdGU7CisgICAgbV9ldmVudFF1ZXVlLT5lbnF1ZXVlRXZlbnQoRXZl
bnQ6OmNyZWF0ZShldmVudE5hbWVzKCkuc3RhdGVjaGFuZ2VFdmVudCwgRXZlbnQ6OkNhbkJ1YmJs
ZTo6WWVzLCBFdmVudDo6SXNDYW5jZWxhYmxlOjpObykpOworCisgICAgc2l6ZV90IHN0YXRlSW5k
ZXggPSBzdGF0aWNfY2FzdDxzaXplX3Q+KHN0YXRlKTsKKyAgICBpZiAoc3RhdGVJbmRleCA+PSBt
X3N0YXRlUmVhY3Rpb25zLnNpemUoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgVmVjdG9yPERP
TVByb21pc2VEZWZlcnJlZDx2b2lkPj4gcmVhY3Rpb25zOworICAgIG1fc3RhdGVSZWFjdGlvbnNb
c3RhdGVJbmRleF0uc3dhcChyZWFjdGlvbnMpOworCisgICAgZm9yIChhdXRvJiBwcm9taXNlIDog
cmVhY3Rpb25zKQorICAgICAgICBwcm9taXNlLnJlc29sdmUoKTsKK30KKwordm9pZCBXZWJLaXRB
dWRpb0NvbnRleHQ6OnN0b3AoKQoreworICAgIEFMV0FZU19MT0coTE9HSURFTlRJRklFUik7CisK
KyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworCisgICAgLy8gVXN1YWxseSBTY3JpcHRFeGVj
dXRpb25Db250ZXh0IGNhbGxzIHN0b3AgdHdpY2UuCisgICAgaWYgKG1faXNTdG9wU2NoZWR1bGVk
KQorICAgICAgICByZXR1cm47CisgICAgbV9pc1N0b3BTY2hlZHVsZWQgPSB0cnVlOworCisgICAg
QVNTRVJUKGRvY3VtZW50KCkpOworICAgIGRvY3VtZW50KCktPnVwZGF0ZUlzUGxheWluZ01lZGlh
KCk7CisKKyAgICB1bmluaXRpYWxpemUoKTsKKyAgICBjbGVhcigpOworfQorCit2b2lkIFdlYktp
dEF1ZGlvQ29udGV4dDo6c3VzcGVuZChSZWFzb25Gb3JTdXNwZW5zaW9uKQoreworICAgIGlmIChz
dGF0ZSgpID09IFN0YXRlOjpSdW5uaW5nKSB7CisgICAgICAgIG1fbWVkaWFTZXNzaW9uLT5iZWdp
bkludGVycnVwdGlvbihQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6UGxheWJhY2tTdXNwZW5kZWQpOwor
ICAgICAgICBkb2N1bWVudCgpLT51cGRhdGVJc1BsYXlpbmdNZWRpYSgpOworICAgIH0KK30KKwor
dm9pZCBXZWJLaXRBdWRpb0NvbnRleHQ6OnJlc3VtZSgpCit7CisgICAgaWYgKHN0YXRlKCkgPT0g
U3RhdGU6OkludGVycnVwdGVkKSB7CisgICAgICAgIG1fbWVkaWFTZXNzaW9uLT5lbmRJbnRlcnJ1
cHRpb24oUGxhdGZvcm1NZWRpYVNlc3Npb246Ok1heVJlc3VtZVBsYXlpbmcpOworICAgICAgICBk
b2N1bWVudCgpLT51cGRhdGVJc1BsYXlpbmdNZWRpYSgpOworICAgIH0KK30KKworY29uc3QgY2hh
ciogV2ViS2l0QXVkaW9Db250ZXh0OjphY3RpdmVET01PYmplY3ROYW1lKCkgY29uc3QKK3sKKyAg
ICByZXR1cm4gIldlYktpdEF1ZGlvQ29udGV4dCI7Cit9CisKK0RvY3VtZW50SWRlbnRpZmllciBX
ZWJLaXRBdWRpb0NvbnRleHQ6Omhvc3RpbmdEb2N1bWVudElkZW50aWZpZXIoKSBjb25zdAorewor
ICAgIGF1dG8qIGRvY3VtZW50ID0gZG93bmNhc3Q8RG9jdW1lbnQ+KG1fc2NyaXB0RXhlY3V0aW9u
Q29udGV4dCk7CisgICAgcmV0dXJuIGRvY3VtZW50ID8gZG9jdW1lbnQtPmlkZW50aWZpZXIoKSA6
IERvY3VtZW50SWRlbnRpZmllciB7IH07Cit9CisKK2Jvb2wgV2ViS2l0QXVkaW9Db250ZXh0Ojpp
c1N1c3BlbmRlZCgpIGNvbnN0Cit7CisgICAgcmV0dXJuICFkb2N1bWVudCgpIHx8IGRvY3VtZW50
KCktPmFjdGl2ZURPTU9iamVjdHNBcmVTdXNwZW5kZWQoKSB8fCBkb2N1bWVudCgpLT5hY3RpdmVE
T01PYmplY3RzQXJlU3RvcHBlZCgpOworfQorCit2b2lkIFdlYktpdEF1ZGlvQ29udGV4dDo6dmlz
aWJpbGl0eVN0YXRlQ2hhbmdlZCgpCit7CisgICAgLy8gRG8gbm90IHN1c3BlbmQgaWYgYXVkaW8g
aXMgYXVkaWJsZS4KKyAgICBpZiAoIWRvY3VtZW50KCkgfHwgbWVkaWFTdGF0ZSgpID09IE1lZGlh
UHJvZHVjZXI6OklzUGxheWluZ0F1ZGlvIHx8IG1faXNTdG9wU2NoZWR1bGVkKQorICAgICAgICBy
ZXR1cm47CisKKyAgICBpZiAoZG9jdW1lbnQoKS0+aGlkZGVuKCkpIHsKKyAgICAgICAgaWYgKHN0
YXRlKCkgPT0gU3RhdGU6OlJ1bm5pbmcpIHsKKyAgICAgICAgICAgIFJFTEVBU0VfTE9HX0lGX0FM
TE9XRUQoInZpc2liaWxpdHlTdGF0ZUNoYW5nZWQoKSBTdXNwZW5kaW5nIHBsYXliYWNrIGFmdGVy
IGdvaW5nIHRvIHRoZSBiYWNrZ3JvdW5kIik7CisgICAgICAgICAgICBtX21lZGlhU2Vzc2lvbi0+
YmVnaW5JbnRlcnJ1cHRpb24oUGxhdGZvcm1NZWRpYVNlc3Npb246OkVudGVyaW5nQmFja2dyb3Vu
ZCk7CisgICAgICAgIH0KKyAgICB9IGVsc2UgeworICAgICAgICBpZiAoc3RhdGUoKSA9PSBTdGF0
ZTo6SW50ZXJydXB0ZWQpIHsKKyAgICAgICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoInZp
c2liaWxpdHlTdGF0ZUNoYW5nZWQoKSBSZXN1bWluZyBwbGF5YmFjayBhZnRlciBlbnRlcmluZyBm
b3JlZ3JvdW5kIik7CisgICAgICAgICAgICBtX21lZGlhU2Vzc2lvbi0+ZW5kSW50ZXJydXB0aW9u
KFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpNYXlSZXN1bWVQbGF5aW5nKTsKKyAgICAgICAgfQorICAg
IH0KK30KKworYm9vbCBXZWJLaXRBdWRpb0NvbnRleHQ6OndvdWxkVGFpbnRPcmlnaW4oY29uc3Qg
VVJMJiB1cmwpIGNvbnN0Cit7CisgICAgaWYgKHVybC5wcm90b2NvbElzRGF0YSgpKQorICAgICAg
ICByZXR1cm4gZmFsc2U7CisKKyAgICBpZiAoYXV0byogZG9jdW1lbnQgPSB0aGlzLT5kb2N1bWVu
dCgpKQorICAgICAgICByZXR1cm4gIWRvY3VtZW50LT5zZWN1cml0eU9yaWdpbigpLmNhblJlcXVl
c3QodXJsKTsKKworICAgIHJldHVybiBmYWxzZTsKK30KKworRXhjZXB0aW9uT3I8UmVmPEF1ZGlv
QnVmZmVyPj4gV2ViS2l0QXVkaW9Db250ZXh0OjpjcmVhdGVCdWZmZXIodW5zaWduZWQgbnVtYmVy
T2ZDaGFubmVscywgc2l6ZV90IG51bWJlck9mRnJhbWVzLCBmbG9hdCBzYW1wbGVSYXRlKQorewor
ICAgIGF1dG8gYXVkaW9CdWZmZXIgPSBBdWRpb0J1ZmZlcjo6Y3JlYXRlKG51bWJlck9mQ2hhbm5l
bHMsIG51bWJlck9mRnJhbWVzLCBzYW1wbGVSYXRlKTsKKyAgICBpZiAoIWF1ZGlvQnVmZmVyKQor
ICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgTm90U3VwcG9ydGVkRXJyb3IgfTsKKyAgICByZXR1
cm4gYXVkaW9CdWZmZXIucmVsZWFzZU5vbk51bGwoKTsKK30KKworRXhjZXB0aW9uT3I8UmVmPEF1
ZGlvQnVmZmVyPj4gV2ViS2l0QXVkaW9Db250ZXh0OjpjcmVhdGVCdWZmZXIoQXJyYXlCdWZmZXIm
IGFycmF5QnVmZmVyLCBib29sIG1peFRvTW9ubykKK3sKKyAgICBhdXRvIGF1ZGlvQnVmZmVyID0g
QXVkaW9CdWZmZXI6OmNyZWF0ZUZyb21BdWRpb0ZpbGVEYXRhKGFycmF5QnVmZmVyLmRhdGEoKSwg
YXJyYXlCdWZmZXIuYnl0ZUxlbmd0aCgpLCBtaXhUb01vbm8sIHNhbXBsZVJhdGUoKSk7CisgICAg
aWYgKCFhdWRpb0J1ZmZlcikKKyAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IFN5bnRheEVycm9y
IH07CisgICAgcmV0dXJuIGF1ZGlvQnVmZmVyLnJlbGVhc2VOb25OdWxsKCk7Cit9CisKK3ZvaWQg
V2ViS2l0QXVkaW9Db250ZXh0OjpkZWNvZGVBdWRpb0RhdGEoUmVmPEFycmF5QnVmZmVyPiYmIGF1
ZGlvRGF0YSwgUmVmUHRyPEF1ZGlvQnVmZmVyQ2FsbGJhY2s+JiYgc3VjY2Vzc0NhbGxiYWNrLCBS
ZWZQdHI8QXVkaW9CdWZmZXJDYWxsYmFjaz4mJiBlcnJvckNhbGxiYWNrKQoreworICAgIGlmICgh
bV9hdWRpb0RlY29kZXIpCisgICAgICAgIG1fYXVkaW9EZWNvZGVyID0gbWFrZVVuaXF1ZTxBc3lu
Y0F1ZGlvRGVjb2Rlcj4oKTsKKyAgICBtX2F1ZGlvRGVjb2Rlci0+ZGVjb2RlQXN5bmMoV1RGTW92
ZShhdWRpb0RhdGEpLCBzYW1wbGVSYXRlKCksIFdURk1vdmUoc3VjY2Vzc0NhbGxiYWNrKSwgV1RG
TW92ZShlcnJvckNhbGxiYWNrKSk7Cit9CisKK0V4Y2VwdGlvbk9yPFJlZjxBdWRpb0J1ZmZlclNv
dXJjZU5vZGU+PiBXZWJLaXRBdWRpb0NvbnRleHQ6OmNyZWF0ZUJ1ZmZlclNvdXJjZSgpCit7Cisg
ICAgQUxXQVlTX0xPRyhMT0dJREVOVElGSUVSKTsKKworICAgIEFTU0VSVChpc01haW5UaHJlYWQo
KSk7CisKKyAgICBpZiAobV9pc1N0b3BTY2hlZHVsZWQpCisgICAgICAgIHJldHVybiBFeGNlcHRp
b24geyBJbnZhbGlkU3RhdGVFcnJvciB9OworCisgICAgbGF6eUluaXRpYWxpemUoKTsKKyAgICBS
ZWY8QXVkaW9CdWZmZXJTb3VyY2VOb2RlPiBub2RlID0gQXVkaW9CdWZmZXJTb3VyY2VOb2RlOjpj
cmVhdGUoKnRoaXMsIHNhbXBsZVJhdGUoKSk7CisKKyAgICAvLyBCZWNhdXNlIHRoaXMgaXMgYW4g
QXVkaW9TY2hlZHVsZWRTb3VyY2VOb2RlLCB0aGUgY29udGV4dCBrZWVwcyBhIHJlZmVyZW5jZSB1
bnRpbCBpdCBoYXMgZmluaXNoZWQgcGxheWluZy4KKyAgICAvLyBXaGVuIHRoaXMgaGFwcGVucywg
QXVkaW9TY2hlZHVsZWRTb3VyY2VOb2RlOjpmaW5pc2goKSBjYWxscyBXZWJLaXRBdWRpb0NvbnRl
eHQ6Om5vdGlmeU5vZGVGaW5pc2hlZFByb2Nlc3NpbmcoKS4KKyAgICByZWZOb2RlKG5vZGUpOwor
CisgICAgcmV0dXJuIG5vZGU7Cit9CisKKyNpZiBFTkFCTEUoVklERU8pCisKK0V4Y2VwdGlvbk9y
PFJlZjxNZWRpYUVsZW1lbnRBdWRpb1NvdXJjZU5vZGU+PiBXZWJLaXRBdWRpb0NvbnRleHQ6OmNy
ZWF0ZU1lZGlhRWxlbWVudFNvdXJjZShIVE1MTWVkaWFFbGVtZW50JiBtZWRpYUVsZW1lbnQpCit7
CisgICAgQUxXQVlTX0xPRyhMT0dJREVOVElGSUVSKTsKKworICAgIEFTU0VSVChpc01haW5UaHJl
YWQoKSk7CisKKyAgICBpZiAobV9pc1N0b3BTY2hlZHVsZWQgfHwgbWVkaWFFbGVtZW50LmF1ZGlv
U291cmNlTm9kZSgpKQorICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgSW52YWxpZFN0YXRlRXJy
b3IgfTsKKworICAgIGxhenlJbml0aWFsaXplKCk7CisKKyAgICBhdXRvIG5vZGUgPSBNZWRpYUVs
ZW1lbnRBdWRpb1NvdXJjZU5vZGU6OmNyZWF0ZSgqdGhpcywgbWVkaWFFbGVtZW50KTsKKworICAg
IG1lZGlhRWxlbWVudC5zZXRBdWRpb1NvdXJjZU5vZGUobm9kZS5wdHIoKSk7CisKKyAgICByZWZO
b2RlKG5vZGUuZ2V0KCkpOyAvLyBjb250ZXh0IGtlZXBzIHJlZmVyZW5jZSB1bnRpbCBub2RlIGlz
IGRpc2Nvbm5lY3RlZAorICAgIHJldHVybiBub2RlOworfQorCisjZW5kaWYKKworI2lmIEVOQUJM
RShNRURJQV9TVFJFQU0pCisKK0V4Y2VwdGlvbk9yPFJlZjxNZWRpYVN0cmVhbUF1ZGlvU291cmNl
Tm9kZT4+IFdlYktpdEF1ZGlvQ29udGV4dDo6Y3JlYXRlTWVkaWFTdHJlYW1Tb3VyY2UoTWVkaWFT
dHJlYW0mIG1lZGlhU3RyZWFtKQoreworICAgIEFMV0FZU19MT0coTE9HSURFTlRJRklFUik7CisK
KyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworCisgICAgaWYgKG1faXNTdG9wU2NoZWR1bGVk
KQorICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgSW52YWxpZFN0YXRlRXJyb3IgfTsKKworICAg
IGF1dG8gYXVkaW9UcmFja3MgPSBtZWRpYVN0cmVhbS5nZXRBdWRpb1RyYWNrcygpOworICAgIGlm
IChhdWRpb1RyYWNrcy5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBJbnZh
bGlkU3RhdGVFcnJvciB9OworCisgICAgTWVkaWFTdHJlYW1UcmFjayogcHJvdmlkZXJUcmFjayA9
IG51bGxwdHI7CisgICAgZm9yIChhdXRvJiB0cmFjayA6IGF1ZGlvVHJhY2tzKSB7CisgICAgICAg
IGlmICh0cmFjay0+YXVkaW9Tb3VyY2VQcm92aWRlcigpKSB7CisgICAgICAgICAgICBwcm92aWRl
clRyYWNrID0gdHJhY2suZ2V0KCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAg
IH0KKyAgICBpZiAoIXByb3ZpZGVyVHJhY2spCisgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBJ
bnZhbGlkU3RhdGVFcnJvciB9OworCisgICAgbGF6eUluaXRpYWxpemUoKTsKKworICAgIGF1dG8g
bm9kZSA9IE1lZGlhU3RyZWFtQXVkaW9Tb3VyY2VOb2RlOjpjcmVhdGUoKnRoaXMsIG1lZGlhU3Ry
ZWFtLCAqcHJvdmlkZXJUcmFjayk7CisgICAgbm9kZS0+c2V0Rm9ybWF0KDIsIHNhbXBsZVJhdGUo
KSk7CisKKyAgICByZWZOb2RlKG5vZGUpOyAvLyBjb250ZXh0IGtlZXBzIHJlZmVyZW5jZSB1bnRp
bCBub2RlIGlzIGRpc2Nvbm5lY3RlZAorICAgIHJldHVybiBub2RlOworfQorCitFeGNlcHRpb25P
cjxSZWY8TWVkaWFTdHJlYW1BdWRpb0Rlc3RpbmF0aW9uTm9kZT4+IFdlYktpdEF1ZGlvQ29udGV4
dDo6Y3JlYXRlTWVkaWFTdHJlYW1EZXN0aW5hdGlvbigpCit7CisgICAgaWYgKG1faXNTdG9wU2No
ZWR1bGVkKQorICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgSW52YWxpZFN0YXRlRXJyb3IgfTsK
KworICAgIC8vIEZJWE1FOiBBZGQgc3VwcG9ydCBmb3IgYW4gb3B0aW9uYWwgYXJndW1lbnQgd2hp
Y2ggc3BlY2lmaWVzIHRoZSBudW1iZXIgb2YgY2hhbm5lbHMuCisgICAgLy8gRklYTUU6IFRoZSBk
ZWZhdWx0IHNob3VsZCBwcm9iYWJseSBiZSBzdGVyZW8gaW5zdGVhZCBvZiBtb25vLgorICAgIHJl
dHVybiBNZWRpYVN0cmVhbUF1ZGlvRGVzdGluYXRpb25Ob2RlOjpjcmVhdGUoKnRoaXMsIDEpOwor
fQorCisjZW5kaWYKKworRXhjZXB0aW9uT3I8UmVmPFNjcmlwdFByb2Nlc3Nvck5vZGU+PiBXZWJL
aXRBdWRpb0NvbnRleHQ6OmNyZWF0ZVNjcmlwdFByb2Nlc3NvcihzaXplX3QgYnVmZmVyU2l6ZSwg
c2l6ZV90IG51bWJlck9mSW5wdXRDaGFubmVscywgc2l6ZV90IG51bWJlck9mT3V0cHV0Q2hhbm5l
bHMpCit7CisgICAgQUxXQVlTX0xPRyhMT0dJREVOVElGSUVSKTsKKworICAgIEFTU0VSVChpc01h
aW5UaHJlYWQoKSk7CisKKyAgICBpZiAobV9pc1N0b3BTY2hlZHVsZWQpCisgICAgICAgIHJldHVy
biBFeGNlcHRpb24geyBJbnZhbGlkU3RhdGVFcnJvciB9OworCisgICAgbGF6eUluaXRpYWxpemUo
KTsKKworICAgIC8vIFczQyBFZGl0b3IncyBEcmFmdCAwNiBKdW5lIDIwMTcKKyAgICAvLyAgaHR0
cHM6Ly93ZWJhdWRpby5naXRodWIuaW8vd2ViLWF1ZGlvLWFwaS8jd2lkbC1CYXNlQXVkaW9Db250
ZXh0LWNyZWF0ZVNjcmlwdFByb2Nlc3Nvci1TY3JpcHRQcm9jZXNzb3JOb2RlLXVuc2lnbmVkLWxv
bmctYnVmZmVyU2l6ZS11bnNpZ25lZC1sb25nLW51bWJlck9mSW5wdXRDaGFubmVscy11bnNpZ25l
ZC1sb25nLW51bWJlck9mT3V0cHV0Q2hhbm5lbHMKKworICAgIC8vIFRoZSBidWZmZXJTaXplIHBh
cmFtZXRlciBkZXRlcm1pbmVzIHRoZSBidWZmZXIgc2l6ZSBpbiB1bml0cyBvZiBzYW1wbGUtZnJh
bWVzLiBJZiBpdCdzIG5vdCBwYXNzZWQgaW4sCisgICAgLy8gb3IgaWYgdGhlIHZhbHVlIGlzIDAs
IHRoZW4gdGhlIGltcGxlbWVudGF0aW9uIHdpbGwgY2hvb3NlIHRoZSBiZXN0IGJ1ZmZlciBzaXpl
IGZvciB0aGUgZ2l2ZW4gZW52aXJvbm1lbnQsCisgICAgLy8gd2hpY2ggd2lsbCBiZSBjb25zdGFu
dCBwb3dlciBvZiAyIHRocm91Z2hvdXQgdGhlIGxpZmV0aW1lIG9mIHRoZSBub2RlLiAuLi4gSWYg
dGhlIHZhbHVlIG9mIHRoaXMgcGFyYW1ldGVyCisgICAgLy8gaXMgbm90IG9uZSBvZiB0aGUgYWxs
b3dlZCBwb3dlci1vZi0yIHZhbHVlcyBsaXN0ZWQgYWJvdmUsIGFuIEluZGV4U2l6ZUVycm9yIG11
c3QgYmUgdGhyb3duLgorICAgIHN3aXRjaCAoYnVmZmVyU2l6ZSkgeworICAgIGNhc2UgMDoKKyNp
ZiBVU0UoQVVESU9fU0VTU0lPTikKKyAgICAgICAgLy8gUGljayBhIHZhbHVlIGJldHdlZW4gMjU2
ICgyXjgpIGFuZCAxNjM4NCAoMl4xNCksIGJhc2VkIG9uIHRoZSBidWZmZXIgc2l6ZSBvZiB0aGUg
Y3VycmVudCBBdWRpb1Nlc3Npb246CisgICAgICAgIGJ1ZmZlclNpemUgPSAxIDw8IHN0ZDo6bWF4
PHNpemVfdD4oOCwgc3RkOjptaW48c2l6ZV90PigxNCwgc3RkOjpsb2cyKEF1ZGlvU2Vzc2lvbjo6
c2hhcmVkU2Vzc2lvbigpLmJ1ZmZlclNpemUoKSkpKTsKKyNlbHNlCisgICAgICAgIGJ1ZmZlclNp
emUgPSAyMDQ4OworI2VuZGlmCisgICAgICAgIGJyZWFrOworICAgIGNhc2UgMjU2OgorICAgIGNh
c2UgNTEyOgorICAgIGNhc2UgMTAyNDoKKyAgICBjYXNlIDIwNDg6CisgICAgY2FzZSA0MDk2Ogor
ICAgIGNhc2UgODE5MjoKKyAgICBjYXNlIDE2Mzg0OgorICAgICAgICBicmVhazsKKyAgICBkZWZh
dWx0OgorICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgSW5kZXhTaXplRXJyb3IgfTsKKyAgICB9
CisKKyAgICAvLyBBbiBJbmRleFNpemVFcnJvciBleGNlcHRpb24gbXVzdCBiZSB0aHJvd24gaWYg
YnVmZmVyU2l6ZSBvciBudW1iZXJPZklucHV0Q2hhbm5lbHMgb3IgbnVtYmVyT2ZPdXRwdXRDaGFu
bmVscworICAgIC8vIGFyZSBvdXRzaWRlIHRoZSB2YWxpZCByYW5nZS4gSXQgaXMgaW52YWxpZCBm
b3IgYm90aCBudW1iZXJPZklucHV0Q2hhbm5lbHMgYW5kIG51bWJlck9mT3V0cHV0Q2hhbm5lbHMg
dG8gYmUgemVyby4KKyAgICAvLyBJbiB0aGlzIGNhc2UgYW4gSW5kZXhTaXplRXJyb3IgbXVzdCBi
ZSB0aHJvd24uCisKKyAgICBpZiAoIW51bWJlck9mSW5wdXRDaGFubmVscyAmJiAhbnVtYmVyT2ZP
dXRwdXRDaGFubmVscykKKyAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IE5vdFN1cHBvcnRlZEVy
cm9yIH07CisKKyAgICAvLyBUaGlzIHBhcmFtZXRlciBbbnVtYmVyT2ZJbnB1dENoYW5uZWxzXSBk
ZXRlcm1pbmVzIHRoZSBudW1iZXIgb2YgY2hhbm5lbHMgZm9yIHRoaXMgbm9kZSdzIGlucHV0LiBW
YWx1ZXMgb2YKKyAgICAvLyB1cCB0byAzMiBtdXN0IGJlIHN1cHBvcnRlZC4gQSBOb3RTdXBwb3J0
ZWRFcnJvciBtdXN0IGJlIHRocm93biBpZiB0aGUgbnVtYmVyIG9mIGNoYW5uZWxzIGlzIG5vdCBz
dXBwb3J0ZWQuCisKKyAgICBpZiAobnVtYmVyT2ZJbnB1dENoYW5uZWxzID4gbWF4TnVtYmVyT2ZD
aGFubmVscygpKQorICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgTm90U3VwcG9ydGVkRXJyb3Ig
fTsKKworICAgIC8vIFRoaXMgcGFyYW1ldGVyIFtudW1iZXJPZk91dHB1dENoYW5uZWxzXSBkZXRl
cm1pbmVzIHRoZSBudW1iZXIgb2YgY2hhbm5lbHMgZm9yIHRoaXMgbm9kZSdzIG91dHB1dC4gVmFs
dWVzIG9mCisgICAgLy8gdXAgdG8gMzIgbXVzdCBiZSBzdXBwb3J0ZWQuIEEgTm90U3VwcG9ydGVk
RXJyb3IgbXVzdCBiZSB0aHJvd24gaWYgdGhlIG51bWJlciBvZiBjaGFubmVscyBpcyBub3Qgc3Vw
cG9ydGVkLgorCisgICAgaWYgKG51bWJlck9mT3V0cHV0Q2hhbm5lbHMgPiBtYXhOdW1iZXJPZkNo
YW5uZWxzKCkpCisgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBOb3RTdXBwb3J0ZWRFcnJvciB9
OworCisgICAgYXV0byBub2RlID0gU2NyaXB0UHJvY2Vzc29yTm9kZTo6Y3JlYXRlKCp0aGlzLCBz
YW1wbGVSYXRlKCksIGJ1ZmZlclNpemUsIG51bWJlck9mSW5wdXRDaGFubmVscywgbnVtYmVyT2ZP
dXRwdXRDaGFubmVscyk7CisKKyAgICByZWZOb2RlKG5vZGUpOyAvLyBjb250ZXh0IGtlZXBzIHJl
ZmVyZW5jZSB1bnRpbCB3ZSBzdG9wIG1ha2luZyBqYXZhc2NyaXB0IHJlbmRlcmluZyBjYWxsYmFj
a3MKKyAgICByZXR1cm4gbm9kZTsKK30KKworRXhjZXB0aW9uT3I8UmVmPEJpcXVhZEZpbHRlck5v
ZGU+PiBXZWJLaXRBdWRpb0NvbnRleHQ6OmNyZWF0ZUJpcXVhZEZpbHRlcigpCit7CisgICAgQUxX
QVlTX0xPRyhMT0dJREVOVElGSUVSKTsKKworICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7Cisg
ICAgaWYgKG1faXNTdG9wU2NoZWR1bGVkKQorICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgSW52
YWxpZFN0YXRlRXJyb3IgfTsKKworICAgIGxhenlJbml0aWFsaXplKCk7CisKKyAgICByZXR1cm4g
QmlxdWFkRmlsdGVyTm9kZTo6Y3JlYXRlKCp0aGlzLCBzYW1wbGVSYXRlKCkpOworfQorCitFeGNl
cHRpb25PcjxSZWY8V2F2ZVNoYXBlck5vZGU+PiBXZWJLaXRBdWRpb0NvbnRleHQ6OmNyZWF0ZVdh
dmVTaGFwZXIoKQoreworICAgIEFMV0FZU19MT0coTE9HSURFTlRJRklFUik7CisKKyAgICBBU1NF
UlQoaXNNYWluVGhyZWFkKCkpOworICAgIGlmIChtX2lzU3RvcFNjaGVkdWxlZCkKKyAgICAgICAg
cmV0dXJuIEV4Y2VwdGlvbiB7IEludmFsaWRTdGF0ZUVycm9yIH07CisKKyAgICBsYXp5SW5pdGlh
bGl6ZSgpOworICAgIHJldHVybiBXYXZlU2hhcGVyTm9kZTo6Y3JlYXRlKCp0aGlzKTsKK30KKwor
RXhjZXB0aW9uT3I8UmVmPFdlYktpdEF1ZGlvUGFubmVyTm9kZT4+IFdlYktpdEF1ZGlvQ29udGV4
dDo6Y3JlYXRlUGFubmVyKCkKK3sKKyAgICBBTFdBWVNfTE9HKExPR0lERU5USUZJRVIpOworCisg
ICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKyAgICBpZiAobV9pc1N0b3BTY2hlZHVsZWQpCisg
ICAgICAgIHJldHVybiBFeGNlcHRpb24geyBJbnZhbGlkU3RhdGVFcnJvciB9OworCisgICAgbGF6
eUluaXRpYWxpemUoKTsKKyAgICByZXR1cm4gV2ViS2l0QXVkaW9QYW5uZXJOb2RlOjpjcmVhdGUo
KnRoaXMsIHNhbXBsZVJhdGUoKSk7Cit9CisKK0V4Y2VwdGlvbk9yPFJlZjxDb252b2x2ZXJOb2Rl
Pj4gV2ViS2l0QXVkaW9Db250ZXh0OjpjcmVhdGVDb252b2x2ZXIoKQoreworICAgIEFMV0FZU19M
T0coTE9HSURFTlRJRklFUik7CisKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAgIGlm
IChtX2lzU3RvcFNjaGVkdWxlZCkKKyAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IEludmFsaWRT
dGF0ZUVycm9yIH07CisKKyAgICBsYXp5SW5pdGlhbGl6ZSgpOworICAgIHJldHVybiBDb252b2x2
ZXJOb2RlOjpjcmVhdGUoKnRoaXMsIHNhbXBsZVJhdGUoKSk7Cit9CisKK0V4Y2VwdGlvbk9yPFJl
ZjxEeW5hbWljc0NvbXByZXNzb3JOb2RlPj4gV2ViS2l0QXVkaW9Db250ZXh0OjpjcmVhdGVEeW5h
bWljc0NvbXByZXNzb3IoKQoreworICAgIEFMV0FZU19MT0coTE9HSURFTlRJRklFUik7CisKKyAg
ICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAgIGlmIChtX2lzU3RvcFNjaGVkdWxlZCkKKyAg
ICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IEludmFsaWRTdGF0ZUVycm9yIH07CisKKyAgICBsYXp5
SW5pdGlhbGl6ZSgpOworICAgIHJldHVybiBEeW5hbWljc0NvbXByZXNzb3JOb2RlOjpjcmVhdGUo
KnRoaXMsIHNhbXBsZVJhdGUoKSk7Cit9CisKK0V4Y2VwdGlvbk9yPFJlZjxBbmFseXNlck5vZGU+
PiBXZWJLaXRBdWRpb0NvbnRleHQ6OmNyZWF0ZUFuYWx5c2VyKCkKK3sKKyAgICBBTFdBWVNfTE9H
KExPR0lERU5USUZJRVIpOworCisgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKyAgICBpZiAo
bV9pc1N0b3BTY2hlZHVsZWQpCisgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBJbnZhbGlkU3Rh
dGVFcnJvciB9OworCisgICAgbGF6eUluaXRpYWxpemUoKTsKKyAgICByZXR1cm4gQW5hbHlzZXJO
b2RlOjpjcmVhdGUoKnRoaXMsIHNhbXBsZVJhdGUoKSk7Cit9CisKK0V4Y2VwdGlvbk9yPFJlZjxH
YWluTm9kZT4+IFdlYktpdEF1ZGlvQ29udGV4dDo6Y3JlYXRlR2FpbigpCit7CisgICAgQUxXQVlT
X0xPRyhMT0dJREVOVElGSUVSKTsKKworICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisgICAg
aWYgKG1faXNTdG9wU2NoZWR1bGVkKQorICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgSW52YWxp
ZFN0YXRlRXJyb3IgfTsKKworICAgIGxhenlJbml0aWFsaXplKCk7CisgICAgcmV0dXJuIEdhaW5O
b2RlOjpjcmVhdGUoKnRoaXMsIHNhbXBsZVJhdGUoKSk7Cit9CisKK0V4Y2VwdGlvbk9yPFJlZjxE
ZWxheU5vZGU+PiBXZWJLaXRBdWRpb0NvbnRleHQ6OmNyZWF0ZURlbGF5KGRvdWJsZSBtYXhEZWxh
eVRpbWUpCit7CisgICAgQUxXQVlTX0xPRyhMT0dJREVOVElGSUVSKTsKKworICAgIEFTU0VSVChp
c01haW5UaHJlYWQoKSk7CisgICAgaWYgKG1faXNTdG9wU2NoZWR1bGVkKQorICAgICAgICByZXR1
cm4gRXhjZXB0aW9uIHsgSW52YWxpZFN0YXRlRXJyb3IgfTsKKworICAgIGxhenlJbml0aWFsaXpl
KCk7CisgICAgcmV0dXJuIERlbGF5Tm9kZTo6Y3JlYXRlKCp0aGlzLCBzYW1wbGVSYXRlKCksIG1h
eERlbGF5VGltZSk7Cit9CisKK0V4Y2VwdGlvbk9yPFJlZjxDaGFubmVsU3BsaXR0ZXJOb2RlPj4g
V2ViS2l0QXVkaW9Db250ZXh0OjpjcmVhdGVDaGFubmVsU3BsaXR0ZXIoc2l6ZV90IG51bWJlck9m
T3V0cHV0cykKK3sKKyAgICBBTFdBWVNfTE9HKExPR0lERU5USUZJRVIpOworCisgICAgQVNTRVJU
KGlzTWFpblRocmVhZCgpKTsKKyAgICBpZiAobV9pc1N0b3BTY2hlZHVsZWQpCisgICAgICAgIHJl
dHVybiBFeGNlcHRpb24geyBJbnZhbGlkU3RhdGVFcnJvciB9OworCisgICAgbGF6eUluaXRpYWxp
emUoKTsKKyAgICBhdXRvIG5vZGUgPSBDaGFubmVsU3BsaXR0ZXJOb2RlOjpjcmVhdGUoKnRoaXMs
IHNhbXBsZVJhdGUoKSwgbnVtYmVyT2ZPdXRwdXRzKTsKKyAgICBpZiAoIW5vZGUpCisgICAgICAg
IHJldHVybiBFeGNlcHRpb24geyBJbmRleFNpemVFcnJvciB9OworICAgIHJldHVybiBub2RlLnJl
bGVhc2VOb25OdWxsKCk7Cit9CisKK0V4Y2VwdGlvbk9yPFJlZjxDaGFubmVsTWVyZ2VyTm9kZT4+
IFdlYktpdEF1ZGlvQ29udGV4dDo6Y3JlYXRlQ2hhbm5lbE1lcmdlcihzaXplX3QgbnVtYmVyT2ZJ
bnB1dHMpCit7CisgICAgQUxXQVlTX0xPRyhMT0dJREVOVElGSUVSKTsKKworICAgIEFTU0VSVChp
c01haW5UaHJlYWQoKSk7CisgICAgaWYgKG1faXNTdG9wU2NoZWR1bGVkKQorICAgICAgICByZXR1
cm4gRXhjZXB0aW9uIHsgSW52YWxpZFN0YXRlRXJyb3IgfTsKKworICAgIGxhenlJbml0aWFsaXpl
KCk7CisgICAgYXV0byBub2RlID0gQ2hhbm5lbE1lcmdlck5vZGU6OmNyZWF0ZSgqdGhpcywgc2Ft
cGxlUmF0ZSgpLCBudW1iZXJPZklucHV0cyk7CisgICAgaWYgKCFub2RlKQorICAgICAgICByZXR1
cm4gRXhjZXB0aW9uIHsgSW5kZXhTaXplRXJyb3IgfTsKKyAgICByZXR1cm4gbm9kZS5yZWxlYXNl
Tm9uTnVsbCgpOworfQorCitFeGNlcHRpb25PcjxSZWY8T3NjaWxsYXRvck5vZGU+PiBXZWJLaXRB
dWRpb0NvbnRleHQ6OmNyZWF0ZU9zY2lsbGF0b3IoKQoreworICAgIEFMV0FZU19MT0coTE9HSURF
TlRJRklFUik7CisKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAgIGlmIChtX2lzU3Rv
cFNjaGVkdWxlZCkKKyAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IEludmFsaWRTdGF0ZUVycm9y
IH07CisKKyAgICBsYXp5SW5pdGlhbGl6ZSgpOworCisgICAgUmVmPE9zY2lsbGF0b3JOb2RlPiBu
b2RlID0gT3NjaWxsYXRvck5vZGU6OmNyZWF0ZSgqdGhpcywgc2FtcGxlUmF0ZSgpKTsKKworICAg
IC8vIEJlY2F1c2UgdGhpcyBpcyBhbiBBdWRpb1NjaGVkdWxlZFNvdXJjZU5vZGUsIHRoZSBjb250
ZXh0IGtlZXBzIGEgcmVmZXJlbmNlIHVudGlsIGl0IGhhcyBmaW5pc2hlZCBwbGF5aW5nLgorICAg
IC8vIFdoZW4gdGhpcyBoYXBwZW5zLCBBdWRpb1NjaGVkdWxlZFNvdXJjZU5vZGU6OmZpbmlzaCgp
IGNhbGxzIFdlYktpdEF1ZGlvQ29udGV4dDo6bm90aWZ5Tm9kZUZpbmlzaGVkUHJvY2Vzc2luZygp
LgorICAgIHJlZk5vZGUobm9kZSk7CisKKyAgICByZXR1cm4gbm9kZTsKK30KKworRXhjZXB0aW9u
T3I8UmVmPFBlcmlvZGljV2F2ZT4+IFdlYktpdEF1ZGlvQ29udGV4dDo6Y3JlYXRlUGVyaW9kaWNX
YXZlKEZsb2F0MzJBcnJheSYgcmVhbCwgRmxvYXQzMkFycmF5JiBpbWFnaW5hcnkpCit7CisgICAg
QUxXQVlTX0xPRyhMT0dJREVOVElGSUVSKTsKKworICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7
CisgICAgaWYgKG1faXNTdG9wU2NoZWR1bGVkKQorICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsg
SW52YWxpZFN0YXRlRXJyb3IgfTsKKworICAgIGlmIChyZWFsLmxlbmd0aCgpICE9IGltYWdpbmFy
eS5sZW5ndGgoKSB8fCAocmVhbC5sZW5ndGgoKSA+IE1heFBlcmlvZGljV2F2ZUxlbmd0aCkgfHwg
IXJlYWwubGVuZ3RoKCkpCisgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBJbmRleFNpemVFcnJv
ciB9OworICAgIGxhenlJbml0aWFsaXplKCk7CisgICAgcmV0dXJuIFBlcmlvZGljV2F2ZTo6Y3Jl
YXRlKHNhbXBsZVJhdGUoKSwgcmVhbCwgaW1hZ2luYXJ5KTsKK30KKwordm9pZCBXZWJLaXRBdWRp
b0NvbnRleHQ6Om5vdGlmeU5vZGVGaW5pc2hlZFByb2Nlc3NpbmcoQXVkaW9Ob2RlKiBub2RlKQor
eworICAgIEFTU0VSVChpc0F1ZGlvVGhyZWFkKCkpOworICAgIG1fZmluaXNoZWROb2Rlcy5hcHBl
bmQobm9kZSk7Cit9CisKK3ZvaWQgV2ViS2l0QXVkaW9Db250ZXh0OjpkZXJlZkZpbmlzaGVkU291
cmNlTm9kZXMoKQoreworICAgIEFTU0VSVChpc0dyYXBoT3duZXIoKSk7CisgICAgQVNTRVJUKGlz
QXVkaW9UaHJlYWQoKSB8fCBpc0F1ZGlvVGhyZWFkRmluaXNoZWQoKSk7CisgICAgZm9yIChhdXRv
JiBub2RlIDogbV9maW5pc2hlZE5vZGVzKQorICAgICAgICBkZXJlZk5vZGUoKm5vZGUpOworCisg
ICAgbV9maW5pc2hlZE5vZGVzLmNsZWFyKCk7Cit9CisKK3ZvaWQgV2ViS2l0QXVkaW9Db250ZXh0
OjpyZWZOb2RlKEF1ZGlvTm9kZSYgbm9kZSkKK3sKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkp
OworICAgIEF1dG9Mb2NrZXIgbG9ja2VyKCp0aGlzKTsKKworICAgIG5vZGUucmVmKEF1ZGlvTm9k
ZTo6UmVmVHlwZUNvbm5lY3Rpb24pOworICAgIG1fcmVmZXJlbmNlZE5vZGVzLmFwcGVuZCgmbm9k
ZSk7Cit9CisKK3ZvaWQgV2ViS2l0QXVkaW9Db250ZXh0OjpkZXJlZk5vZGUoQXVkaW9Ob2RlJiBu
b2RlKQoreworICAgIEFTU0VSVChpc0dyYXBoT3duZXIoKSk7CisKKyAgICBub2RlLmRlcmVmKEF1
ZGlvTm9kZTo6UmVmVHlwZUNvbm5lY3Rpb24pOworCisgICAgQVNTRVJUKG1fcmVmZXJlbmNlZE5v
ZGVzLmNvbnRhaW5zKCZub2RlKSk7CisgICAgbV9yZWZlcmVuY2VkTm9kZXMucmVtb3ZlRmlyc3Qo
Jm5vZGUpOworfQorCit2b2lkIFdlYktpdEF1ZGlvQ29udGV4dDo6ZGVyZWZVbmZpbmlzaGVkU291
cmNlTm9kZXMoKQoreworICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSAmJiBpc0F1ZGlvVGhyZWFk
RmluaXNoZWQoKSk7CisgICAgZm9yIChhdXRvJiBub2RlIDogbV9yZWZlcmVuY2VkTm9kZXMpCisg
ICAgICAgIG5vZGUtPmRlcmVmKEF1ZGlvTm9kZTo6UmVmVHlwZUNvbm5lY3Rpb24pOworCisgICAg
bV9yZWZlcmVuY2VkTm9kZXMuY2xlYXIoKTsKK30KKwordm9pZCBXZWJLaXRBdWRpb0NvbnRleHQ6
OmxvY2soYm9vbCYgbXVzdFJlbGVhc2VMb2NrKQoreworICAgIC8vIERvbid0IGFsbG93IHJlZ3Vs
YXIgbG9jayBpbiByZWFsLXRpbWUgYXVkaW8gdGhyZWFkLgorICAgIEFTU0VSVChpc01haW5UaHJl
YWQoKSk7CisKKyAgICBUaHJlYWQmIHRoaXNUaHJlYWQgPSBUaHJlYWQ6OmN1cnJlbnQoKTsKKwor
ICAgIGlmICgmdGhpc1RocmVhZCA9PSBtX2dyYXBoT3duZXJUaHJlYWQpIHsKKyAgICAgICAgLy8g
V2UgYWxyZWFkeSBoYXZlIHRoZSBsb2NrLgorICAgICAgICBtdXN0UmVsZWFzZUxvY2sgPSBmYWxz
ZTsKKyAgICB9IGVsc2UgeworICAgICAgICAvLyBBY3F1aXJlIHRoZSBsb2NrLgorICAgICAgICBt
X2NvbnRleHRHcmFwaE11dGV4LmxvY2soKTsKKyAgICAgICAgbV9ncmFwaE93bmVyVGhyZWFkID0g
JnRoaXNUaHJlYWQ7CisgICAgICAgIG11c3RSZWxlYXNlTG9jayA9IHRydWU7CisgICAgfQorfQor
Citib29sIFdlYktpdEF1ZGlvQ29udGV4dDo6dHJ5TG9jayhib29sJiBtdXN0UmVsZWFzZUxvY2sp
Cit7CisgICAgVGhyZWFkJiB0aGlzVGhyZWFkID0gVGhyZWFkOjpjdXJyZW50KCk7CisgICAgYm9v
bCBpc0F1ZGlvVGhyZWFkID0gJnRoaXNUaHJlYWQgPT0gYXVkaW9UaHJlYWQoKTsKKworICAgIC8v
IFRyeSB0byBjYXRjaCBjYXNlcyBvZiB1c2luZyB0cnkgbG9jayBvbiBtYWluIHRocmVhZCAtIGl0
IHNob3VsZCB1c2UgcmVndWxhciBsb2NrLgorICAgIEFTU0VSVChpc0F1ZGlvVGhyZWFkIHx8IGlz
QXVkaW9UaHJlYWRGaW5pc2hlZCgpKTsKKworICAgIGlmICghaXNBdWRpb1RocmVhZCkgeworICAg
ICAgICAvLyBJbiByZWxlYXNlIGJ1aWxkIHRyZWF0IHRyeUxvY2soKSBhcyBsb2NrKCkgKHNpbmNl
IGFib3ZlIEFTU0VSVChpc0F1ZGlvVGhyZWFkKSBuZXZlciBmaXJlcykgLSB0aGlzIGlzIHRoZSBi
ZXN0IHdlIGNhbiBkby4KKyAgICAgICAgbG9jayhtdXN0UmVsZWFzZUxvY2spOworICAgICAgICBy
ZXR1cm4gdHJ1ZTsKKyAgICB9CisKKyAgICBib29sIGhhc0xvY2s7CisKKyAgICBpZiAoJnRoaXNU
aHJlYWQgPT0gbV9ncmFwaE93bmVyVGhyZWFkKSB7CisgICAgICAgIC8vIFRocmVhZCBhbHJlYWR5
IGhhcyB0aGUgbG9jay4KKyAgICAgICAgaGFzTG9jayA9IHRydWU7CisgICAgICAgIG11c3RSZWxl
YXNlTG9jayA9IGZhbHNlOworICAgIH0gZWxzZSB7CisgICAgICAgIC8vIERvbid0IGFscmVhZHkg
aGF2ZSB0aGUgbG9jayAtIHRyeSB0byBhY3F1aXJlIGl0LgorICAgICAgICBoYXNMb2NrID0gbV9j
b250ZXh0R3JhcGhNdXRleC50cnlMb2NrKCk7CisKKyAgICAgICAgaWYgKGhhc0xvY2spCisgICAg
ICAgICAgICBtX2dyYXBoT3duZXJUaHJlYWQgPSAmdGhpc1RocmVhZDsKKworICAgICAgICBtdXN0
UmVsZWFzZUxvY2sgPSBoYXNMb2NrOworICAgIH0KKworICAgIHJldHVybiBoYXNMb2NrOworfQor
Cit2b2lkIFdlYktpdEF1ZGlvQ29udGV4dDo6dW5sb2NrKCkKK3sKKyAgICBBU1NFUlQobV9ncmFw
aE93bmVyVGhyZWFkID09ICZUaHJlYWQ6OmN1cnJlbnQoKSk7CisKKyAgICBtX2dyYXBoT3duZXJU
aHJlYWQgPSBudWxscHRyOworICAgIG1fY29udGV4dEdyYXBoTXV0ZXgudW5sb2NrKCk7Cit9CisK
K2Jvb2wgV2ViS2l0QXVkaW9Db250ZXh0Ojppc0F1ZGlvVGhyZWFkKCkgY29uc3QKK3sKKyAgICBy
ZXR1cm4gbV9hdWRpb1RocmVhZCA9PSAmVGhyZWFkOjpjdXJyZW50KCk7Cit9CisKK2Jvb2wgV2Vi
S2l0QXVkaW9Db250ZXh0Ojppc0dyYXBoT3duZXIoKSBjb25zdAoreworICAgIHJldHVybiBtX2dy
YXBoT3duZXJUaHJlYWQgPT0gJlRocmVhZDo6Y3VycmVudCgpOworfQorCit2b2lkIFdlYktpdEF1
ZGlvQ29udGV4dDo6YWRkRGVmZXJyZWRGaW5pc2hEZXJlZihBdWRpb05vZGUqIG5vZGUpCit7Cisg
ICAgQVNTRVJUKGlzQXVkaW9UaHJlYWQoKSk7CisgICAgbV9kZWZlcnJlZEZpbmlzaERlcmVmTGlz
dC5hcHBlbmQobm9kZSk7Cit9CisKK3ZvaWQgV2ViS2l0QXVkaW9Db250ZXh0OjpoYW5kbGVQcmVS
ZW5kZXJUYXNrcygpCit7CisgICAgQVNTRVJUKGlzQXVkaW9UaHJlYWQoKSk7CisKKyAgICAvLyBB
dCB0aGUgYmVnaW5uaW5nIG9mIGV2ZXJ5IHJlbmRlciBxdWFudHVtLCB0cnkgdG8gdXBkYXRlIHRo
ZSBpbnRlcm5hbCByZW5kZXJpbmcgZ3JhcGggc3RhdGUgKGZyb20gbWFpbiB0aHJlYWQgY2hhbmdl
cykuCisgICAgLy8gSXQncyBPSyBpZiB0aGUgdHJ5TG9jaygpIGZhaWxzLCB3ZSdsbCBqdXN0IHRh
a2Ugc2xpZ2h0bHkgbG9uZ2VyIHRvIHBpY2sgdXAgdGhlIGNoYW5nZXMuCisgICAgYm9vbCBtdXN0
UmVsZWFzZUxvY2s7CisgICAgaWYgKHRyeUxvY2sobXVzdFJlbGVhc2VMb2NrKSkgeworICAgICAg
ICAvLyBGaXh1cCB0aGUgc3RhdGUgb2YgYW55IGRpcnR5IEF1ZGlvU3VtbWluZ0p1bmN0aW9ucyBh
bmQgQXVkaW9Ob2RlT3V0cHV0cy4KKyAgICAgICAgaGFuZGxlRGlydHlBdWRpb1N1bW1pbmdKdW5j
dGlvbnMoKTsKKyAgICAgICAgaGFuZGxlRGlydHlBdWRpb05vZGVPdXRwdXRzKCk7CisKKyAgICAg
ICAgdXBkYXRlQXV0b21hdGljUHVsbE5vZGVzKCk7CisKKyAgICAgICAgaWYgKG11c3RSZWxlYXNl
TG9jaykKKyAgICAgICAgICAgIHVubG9jaygpOworICAgIH0KK30KKwordm9pZCBXZWJLaXRBdWRp
b0NvbnRleHQ6OmhhbmRsZVBvc3RSZW5kZXJUYXNrcygpCit7CisgICAgQVNTRVJUKGlzQXVkaW9U
aHJlYWQoKSk7CisKKyAgICAvLyBNdXN0IHVzZSBhIHRyeUxvY2soKSBoZXJlIHRvby4gRG9uJ3Qg
d29ycnksIHRoZSBsb2NrIHdpbGwgdmVyeSByYXJlbHkgYmUgY29udGVuZGVkIGFuZCB0aGlzIG1l
dGhvZCBpcyBjYWxsZWQgZnJlcXVlbnRseS4KKyAgICAvLyBUaGUgd29yc3QgdGhhdCBjYW4gaGFw
cGVuIGlzIHRoYXQgdGhlcmUgd2lsbCBiZSBzb21lIG5vZGVzIHdoaWNoIHdpbGwgdGFrZSBzbGln
aHRseSBsb25nZXIgdGhhbiB1c3VhbCB0byBiZSBkZWxldGVkIG9yIHJlbW92ZWQKKyAgICAvLyBm
cm9tIHRoZSByZW5kZXIgZ3JhcGggKGluIHdoaWNoIGNhc2UgdGhleSdsbCByZW5kZXIgc2lsZW5j
ZSkuCisgICAgYm9vbCBtdXN0UmVsZWFzZUxvY2s7CisgICAgaWYgKHRyeUxvY2sobXVzdFJlbGVh
c2VMb2NrKSkgeworICAgICAgICAvLyBUYWtlIGNhcmUgb2YgZmluaXNoaW5nIGFueSBkZXJlZnMg
d2hlcmUgdGhlIHRyeUxvY2soKSBmYWlsZWQgcHJldmlvdXNseS4KKyAgICAgICAgaGFuZGxlRGVm
ZXJyZWRGaW5pc2hEZXJlZnMoKTsKKworICAgICAgICAvLyBEeW5hbWljYWxseSBjbGVhbiB1cCBu
b2RlcyB3aGljaCBhcmUgbm8gbG9uZ2VyIG5lZWRlZC4KKyAgICAgICAgZGVyZWZGaW5pc2hlZFNv
dXJjZU5vZGVzKCk7CisKKyAgICAgICAgLy8gRG9uJ3QgZGVsZXRlIGluIHRoZSByZWFsLXRpbWUg
dGhyZWFkLiBMZXQgdGhlIG1haW4gdGhyZWFkIGRvIGl0LgorICAgICAgICAvLyBSZWYtY291bnRl
ZCBvYmplY3RzIGhlbGQgYnkgY2VydGFpbiBBdWRpb05vZGVzIG1heSBub3QgYmUgdGhyZWFkLXNh
ZmUuCisgICAgICAgIHNjaGVkdWxlTm9kZURlbGV0aW9uKCk7CisKKyAgICAgICAgLy8gRml4dXAg
dGhlIHN0YXRlIG9mIGFueSBkaXJ0eSBBdWRpb1N1bW1pbmdKdW5jdGlvbnMgYW5kIEF1ZGlvTm9k
ZU91dHB1dHMuCisgICAgICAgIGhhbmRsZURpcnR5QXVkaW9TdW1taW5nSnVuY3Rpb25zKCk7Cisg
ICAgICAgIGhhbmRsZURpcnR5QXVkaW9Ob2RlT3V0cHV0cygpOworCisgICAgICAgIHVwZGF0ZUF1
dG9tYXRpY1B1bGxOb2RlcygpOworCisgICAgICAgIGlmIChtdXN0UmVsZWFzZUxvY2spCisgICAg
ICAgICAgICB1bmxvY2soKTsKKyAgICB9Cit9CisKK3ZvaWQgV2ViS2l0QXVkaW9Db250ZXh0Ojpo
YW5kbGVEZWZlcnJlZEZpbmlzaERlcmVmcygpCit7CisgICAgQVNTRVJUKGlzQXVkaW9UaHJlYWQo
KSAmJiBpc0dyYXBoT3duZXIoKSk7CisgICAgZm9yIChhdXRvJiBub2RlIDogbV9kZWZlcnJlZEZp
bmlzaERlcmVmTGlzdCkKKyAgICAgICAgbm9kZS0+ZmluaXNoRGVyZWYoQXVkaW9Ob2RlOjpSZWZU
eXBlQ29ubmVjdGlvbik7CisKKyAgICBtX2RlZmVycmVkRmluaXNoRGVyZWZMaXN0LmNsZWFyKCk7
Cit9CisKK3ZvaWQgV2ViS2l0QXVkaW9Db250ZXh0OjptYXJrRm9yRGVsZXRpb24oQXVkaW9Ob2Rl
JiBub2RlKQoreworICAgIEFTU0VSVChpc0dyYXBoT3duZXIoKSk7CisKKyAgICBpZiAoaXNBdWRp
b1RocmVhZEZpbmlzaGVkKCkpCisgICAgICAgIG1fbm9kZXNUb0RlbGV0ZS5hcHBlbmQoJm5vZGUp
OworICAgIGVsc2UKKyAgICAgICAgbV9ub2Rlc01hcmtlZEZvckRlbGV0aW9uLmFwcGVuZCgmbm9k
ZSk7CisKKyAgICAvLyBUaGlzIGlzIHByb2JhYmx5IHRoZSBiZXN0IHRpbWUgZm9yIHVzIHRvIHJl
bW92ZSB0aGUgbm9kZSBmcm9tIGF1dG9tYXRpYyBwdWxsIGxpc3QsCisgICAgLy8gc2luY2UgYWxs
IGNvbm5lY3Rpb25zIGFyZSBnb25lIGFuZCB3ZSBob2xkIHRoZSBncmFwaCBsb2NrLiBUaGVuIHdo
ZW4gaGFuZGxlUG9zdFJlbmRlclRhc2tzKCkKKyAgICAvLyBnZXRzIGEgY2hhbmNlIHRvIHNjaGVk
dWxlIHRoZSBkZWxldGlvbiB3b3JrLCB1cGRhdGVBdXRvbWF0aWNQdWxsTm9kZXMoKSBhbHNvIGdl
dHMgYSBjaGFuY2UgdG8KKyAgICAvLyBtb2RpZnkgbV9yZW5kZXJpbmdBdXRvbWF0aWNQdWxsTm9k
ZXMuCisgICAgcmVtb3ZlQXV0b21hdGljUHVsbE5vZGUobm9kZSk7Cit9CisKK3ZvaWQgV2ViS2l0
QXVkaW9Db250ZXh0OjpzY2hlZHVsZU5vZGVEZWxldGlvbigpCit7CisgICAgYm9vbCBpc0dvb2Qg
PSBtX2lzSW5pdGlhbGl6ZWQgJiYgaXNHcmFwaE93bmVyKCk7CisgICAgQVNTRVJUKGlzR29vZCk7
CisgICAgaWYgKCFpc0dvb2QpCisgICAgICAgIHJldHVybjsKKworICAgIC8vIE1ha2Ugc3VyZSB0
byBjYWxsIGRlbGV0ZU1hcmtlZE5vZGVzKCkgb24gbWFpbiB0aHJlYWQuCisgICAgaWYgKG1fbm9k
ZXNNYXJrZWRGb3JEZWxldGlvbi5zaXplKCkgJiYgIW1faXNEZWxldGlvblNjaGVkdWxlZCkgewor
ICAgICAgICBtX25vZGVzVG9EZWxldGUuYXBwZW5kVmVjdG9yKG1fbm9kZXNNYXJrZWRGb3JEZWxl
dGlvbik7CisgICAgICAgIG1fbm9kZXNNYXJrZWRGb3JEZWxldGlvbi5jbGVhcigpOworCisgICAg
ICAgIG1faXNEZWxldGlvblNjaGVkdWxlZCA9IHRydWU7CisKKyAgICAgICAgY2FsbE9uTWFpblRo
cmVhZChbcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpXSgpIG11dGFibGUgeworICAgICAg
ICAgICAgcHJvdGVjdGVkVGhpcy0+ZGVsZXRlTWFya2VkTm9kZXMoKTsKKyAgICAgICAgfSk7Cisg
ICAgfQorfQorCit2b2lkIFdlYktpdEF1ZGlvQ29udGV4dDo6ZGVsZXRlTWFya2VkTm9kZXMoKQor
eworICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisKKyAgICAvLyBQcm90ZWN0IHRoaXMgb2Jq
ZWN0IGZyb20gYmVpbmcgZGVsZXRlZCBiZWZvcmUgd2UgcmVsZWFzZSB0aGUgbXV0ZXggbG9ja2Vk
IGJ5IEF1dG9Mb2NrZXIuCisgICAgUmVmPFdlYktpdEF1ZGlvQ29udGV4dD4gcHJvdGVjdGVkVGhp
cygqdGhpcyk7CisgICAgeworICAgICAgICBBdXRvTG9ja2VyIGxvY2tlcigqdGhpcyk7CisKKyAg
ICAgICAgd2hpbGUgKG1fbm9kZXNUb0RlbGV0ZS5zaXplKCkpIHsKKyAgICAgICAgICAgIEF1ZGlv
Tm9kZSogbm9kZSA9IG1fbm9kZXNUb0RlbGV0ZS50YWtlTGFzdCgpOworCisgICAgICAgICAgICAv
LyBCZWZvcmUgZGVsZXRpbmcgdGhlIG5vZGUsIGNsZWFyIG91dCBhbnkgQXVkaW9Ob2RlSW5wdXRz
IGZyb20gbV9kaXJ0eVN1bW1pbmdKdW5jdGlvbnMuCisgICAgICAgICAgICB1bnNpZ25lZCBudW1i
ZXJPZklucHV0cyA9IG5vZGUtPm51bWJlck9mSW5wdXRzKCk7CisgICAgICAgICAgICBmb3IgKHVu
c2lnbmVkIGkgPSAwOyBpIDwgbnVtYmVyT2ZJbnB1dHM7ICsraSkKKyAgICAgICAgICAgICAgICBt
X2RpcnR5U3VtbWluZ0p1bmN0aW9ucy5yZW1vdmUobm9kZS0+aW5wdXQoaSkpOworCisgICAgICAg
ICAgICAvLyBCZWZvcmUgZGVsZXRpbmcgdGhlIG5vZGUsIGNsZWFyIG91dCBhbnkgQXVkaW9Ob2Rl
T3V0cHV0cyBmcm9tIG1fZGlydHlBdWRpb05vZGVPdXRwdXRzLgorICAgICAgICAgICAgdW5zaWdu
ZWQgbnVtYmVyT2ZPdXRwdXRzID0gbm9kZS0+bnVtYmVyT2ZPdXRwdXRzKCk7CisgICAgICAgICAg
ICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbnVtYmVyT2ZPdXRwdXRzOyArK2kpCisgICAgICAg
ICAgICAgICAgbV9kaXJ0eUF1ZGlvTm9kZU91dHB1dHMucmVtb3ZlKG5vZGUtPm91dHB1dChpKSk7
CisKKyAgICAgICAgICAgIC8vIEZpbmFsbHksIGRlbGV0ZSBpdC4KKyAgICAgICAgICAgIGRlbGV0
ZSBub2RlOworICAgICAgICB9CisgICAgICAgIG1faXNEZWxldGlvblNjaGVkdWxlZCA9IGZhbHNl
OworICAgIH0KK30KKwordm9pZCBXZWJLaXRBdWRpb0NvbnRleHQ6Om1hcmtTdW1taW5nSnVuY3Rp
b25EaXJ0eShBdWRpb1N1bW1pbmdKdW5jdGlvbiogc3VtbWluZ0p1bmN0aW9uKQoreworICAgIEFT
U0VSVChpc0dyYXBoT3duZXIoKSk7CisgICAgbV9kaXJ0eVN1bW1pbmdKdW5jdGlvbnMuYWRkKHN1
bW1pbmdKdW5jdGlvbik7Cit9CisKK3ZvaWQgV2ViS2l0QXVkaW9Db250ZXh0OjpyZW1vdmVNYXJr
ZWRTdW1taW5nSnVuY3Rpb24oQXVkaW9TdW1taW5nSnVuY3Rpb24qIHN1bW1pbmdKdW5jdGlvbikK
K3sKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAgIEF1dG9Mb2NrZXIgbG9ja2VyKCp0
aGlzKTsKKyAgICBtX2RpcnR5U3VtbWluZ0p1bmN0aW9ucy5yZW1vdmUoc3VtbWluZ0p1bmN0aW9u
KTsKK30KKwordm9pZCBXZWJLaXRBdWRpb0NvbnRleHQ6Om1hcmtBdWRpb05vZGVPdXRwdXREaXJ0
eShBdWRpb05vZGVPdXRwdXQqIG91dHB1dCkKK3sKKyAgICBBU1NFUlQoaXNHcmFwaE93bmVyKCkp
OworICAgIG1fZGlydHlBdWRpb05vZGVPdXRwdXRzLmFkZChvdXRwdXQpOworfQorCit2b2lkIFdl
YktpdEF1ZGlvQ29udGV4dDo6aGFuZGxlRGlydHlBdWRpb1N1bW1pbmdKdW5jdGlvbnMoKQorewor
ICAgIEFTU0VSVChpc0dyYXBoT3duZXIoKSk7CisKKyAgICBmb3IgKGF1dG8mIGp1bmN0aW9uIDog
bV9kaXJ0eVN1bW1pbmdKdW5jdGlvbnMpCisgICAgICAgIGp1bmN0aW9uLT51cGRhdGVSZW5kZXJp
bmdTdGF0ZSgpOworCisgICAgbV9kaXJ0eVN1bW1pbmdKdW5jdGlvbnMuY2xlYXIoKTsKK30KKwor
dm9pZCBXZWJLaXRBdWRpb0NvbnRleHQ6OmhhbmRsZURpcnR5QXVkaW9Ob2RlT3V0cHV0cygpCit7
CisgICAgQVNTRVJUKGlzR3JhcGhPd25lcigpKTsKKworICAgIGZvciAoYXV0byYgb3V0cHV0IDog
bV9kaXJ0eUF1ZGlvTm9kZU91dHB1dHMpCisgICAgICAgIG91dHB1dC0+dXBkYXRlUmVuZGVyaW5n
U3RhdGUoKTsKKworICAgIG1fZGlydHlBdWRpb05vZGVPdXRwdXRzLmNsZWFyKCk7Cit9CisKK3Zv
aWQgV2ViS2l0QXVkaW9Db250ZXh0OjphZGRBdXRvbWF0aWNQdWxsTm9kZShBdWRpb05vZGUmIG5v
ZGUpCit7CisgICAgQVNTRVJUKGlzR3JhcGhPd25lcigpKTsKKworICAgIGlmIChtX2F1dG9tYXRp
Y1B1bGxOb2Rlcy5hZGQoJm5vZGUpLmlzTmV3RW50cnkpCisgICAgICAgIG1fYXV0b21hdGljUHVs
bE5vZGVzTmVlZFVwZGF0aW5nID0gdHJ1ZTsKK30KKwordm9pZCBXZWJLaXRBdWRpb0NvbnRleHQ6
OnJlbW92ZUF1dG9tYXRpY1B1bGxOb2RlKEF1ZGlvTm9kZSYgbm9kZSkKK3sKKyAgICBBU1NFUlQo
aXNHcmFwaE93bmVyKCkpOworCisgICAgaWYgKG1fYXV0b21hdGljUHVsbE5vZGVzLnJlbW92ZSgm
bm9kZSkpCisgICAgICAgIG1fYXV0b21hdGljUHVsbE5vZGVzTmVlZFVwZGF0aW5nID0gdHJ1ZTsK
K30KKwordm9pZCBXZWJLaXRBdWRpb0NvbnRleHQ6OnVwZGF0ZUF1dG9tYXRpY1B1bGxOb2Rlcygp
Cit7CisgICAgQVNTRVJUKGlzR3JhcGhPd25lcigpKTsKKworICAgIGlmIChtX2F1dG9tYXRpY1B1
bGxOb2Rlc05lZWRVcGRhdGluZykgeworICAgICAgICAvLyBDb3B5IGZyb20gbV9hdXRvbWF0aWNQ
dWxsTm9kZXMgdG8gbV9yZW5kZXJpbmdBdXRvbWF0aWNQdWxsTm9kZXMuCisgICAgICAgIG1fcmVu
ZGVyaW5nQXV0b21hdGljUHVsbE5vZGVzLnJlc2l6ZShtX2F1dG9tYXRpY1B1bGxOb2Rlcy5zaXpl
KCkpOworCisgICAgICAgIHVuc2lnbmVkIGkgPSAwOworICAgICAgICBmb3IgKGF1dG8mIG91dHB1
dCA6IG1fYXV0b21hdGljUHVsbE5vZGVzKQorICAgICAgICAgICAgbV9yZW5kZXJpbmdBdXRvbWF0
aWNQdWxsTm9kZXNbaSsrXSA9IG91dHB1dDsKKworICAgICAgICBtX2F1dG9tYXRpY1B1bGxOb2Rl
c05lZWRVcGRhdGluZyA9IGZhbHNlOworICAgIH0KK30KKwordm9pZCBXZWJLaXRBdWRpb0NvbnRl
eHQ6OnByb2Nlc3NBdXRvbWF0aWNQdWxsTm9kZXMoc2l6ZV90IGZyYW1lc1RvUHJvY2VzcykKK3sK
KyAgICBBU1NFUlQoaXNBdWRpb1RocmVhZCgpKTsKKworICAgIGZvciAoYXV0byYgbm9kZSA6IG1f
cmVuZGVyaW5nQXV0b21hdGljUHVsbE5vZGVzKQorICAgICAgICBub2RlLT5wcm9jZXNzSWZOZWNl
c3NhcnkoZnJhbWVzVG9Qcm9jZXNzKTsKK30KKwordm9pZCBXZWJLaXRBdWRpb0NvbnRleHQ6Om5v
ZGVXaWxsQmVnaW5QbGF5YmFjaygpCit7CisgICAgLy8gQ2FsbGVkIGJ5IHNjaGVkdWxlZCBBdWRp
b05vZGVzIHdoZW4gY2xpZW50cyBzY2hlZHVsZSB0aGVpciBzdGFydCB0aW1lcy4KKyAgICAvLyBQ
cmlvciB0byB0aGUgaW50cm9kdWN0aW9uIG9mIHN1c3BlbmQoKSwgcmVzdW1lKCksIGFuZCBzdG9w
KCksIHN0YXJ0aW5nCisgICAgLy8gYSBzY2hlZHVsZWQgQXVkaW9Ob2RlIHdvdWxkIHJlbW92ZSB0
aGUgdXNlci1nZXN0dXJlIHJlc3RyaWN0aW9uLCBpZiBwcmVzZW50LAorICAgIC8vIGFuZCB3b3Vs
ZCB0aHVzIHVubXV0ZSB0aGUgY29udGV4dC4gTm93IHRoYXQgQXVkaW9Db250ZXh0IHN0YXlzIGlu
IHRoZQorICAgIC8vICJzdXNwZW5kZWQiIHN0YXRlIGlmIGEgdXNlci1nZXN0dXJlIHJlc3RyaWN0
aW9uIGlzIHByZXNlbnQsIHN0YXJ0aW5nIGEKKyAgICAvLyBzY2hlZHVsZSBBdWRpb05vZGUgc2hv
dWxkIHNldCB0aGUgc3RhdGUgdG8gInJ1bm5pbmciLCBidXQgb25seSBpZiB0aGUKKyAgICAvLyB1
c2VyLWdlc3R1cmUgcmVzdHJpY3Rpb24gaXMgc2V0LgorICAgIGlmICh1c2VyR2VzdHVyZVJlcXVp
cmVkRm9yQXVkaW9TdGFydCgpKQorICAgICAgICBzdGFydFJlbmRlcmluZygpOworfQorCitzdGF0
aWMgYm9vbCBzaG91bGREb2N1bWVudEFsbG93V2ViQXVkaW9Ub0F1dG9QbGF5KGNvbnN0IERvY3Vt
ZW50JiBkb2N1bWVudCkKK3sKKyAgICBpZiAoZG9jdW1lbnQucHJvY2Vzc2luZ1VzZXJHZXN0dXJl
Rm9yTWVkaWEoKSB8fCBkb2N1bWVudC5pc0NhcHR1cmluZygpKQorICAgICAgICByZXR1cm4gdHJ1
ZTsKKyAgICByZXR1cm4gZG9jdW1lbnQucXVpcmtzKCkuc2hvdWxkQXV0b3BsYXlXZWJBdWRpb0Zv
ckFyYml0cmFyeVVzZXJHZXN0dXJlKCkgJiYgZG9jdW1lbnQudG9wRG9jdW1lbnQoKS5oYXNIYWRV
c2VySW50ZXJhY3Rpb24oKTsKK30KKworYm9vbCBXZWJLaXRBdWRpb0NvbnRleHQ6OndpbGxCZWdp
blBsYXliYWNrKCkKK3sKKyAgICBhdXRvKiBkb2N1bWVudCA9IHRoaXMtPmRvY3VtZW50KCk7Cisg
ICAgaWYgKCFkb2N1bWVudCkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgaWYgKHVzZXJH
ZXN0dXJlUmVxdWlyZWRGb3JBdWRpb1N0YXJ0KCkpIHsKKyAgICAgICAgaWYgKCFzaG91bGREb2N1
bWVudEFsbG93V2ViQXVkaW9Ub0F1dG9QbGF5KCpkb2N1bWVudCkpIHsKKyAgICAgICAgICAgIEFM
V0FZU19MT0coTE9HSURFTlRJRklFUiwgInJldHVybmluZyBmYWxzZSwgbm90IHByb2Nlc3Npbmcg
dXNlciBnZXN0dXJlIG9yIGNhcHR1cmluZyIpOworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgICAgICB9CisgICAgICAgIHJlbW92ZUJlaGF2aW9yUmVzdHJpY3Rpb24oV2ViS2l0QXVkaW9D
b250ZXh0OjpSZXF1aXJlVXNlckdlc3R1cmVGb3JBdWRpb1N0YXJ0UmVzdHJpY3Rpb24pOworICAg
IH0KKworICAgIGlmIChwYWdlQ29uc2VudFJlcXVpcmVkRm9yQXVkaW9TdGFydCgpKSB7CisgICAg
ICAgIGF1dG8qIHBhZ2UgPSBkb2N1bWVudC0+cGFnZSgpOworICAgICAgICBpZiAocGFnZSAmJiAh
cGFnZS0+Y2FuU3RhcnRNZWRpYSgpKSB7CisgICAgICAgICAgICBkb2N1bWVudC0+YWRkTWVkaWFD
YW5TdGFydExpc3RlbmVyKCp0aGlzKTsKKyAgICAgICAgICAgIEFMV0FZU19MT0coTE9HSURFTlRJ
RklFUiwgInJldHVybmluZyBmYWxzZSwgcGFnZSBkb2Vzbid0IGFsbG93IG1lZGlhIHRvIHN0YXJ0
Iik7CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKyAgICAgICAgcmVtb3Zl
QmVoYXZpb3JSZXN0cmljdGlvbihXZWJLaXRBdWRpb0NvbnRleHQ6OlJlcXVpcmVQYWdlQ29uc2Vu
dEZvckF1ZGlvU3RhcnRSZXN0cmljdGlvbik7CisgICAgfQorCisgICAgYXV0byB3aWxsQmVnaW4g
PSBtX21lZGlhU2Vzc2lvbi0+Y2xpZW50V2lsbEJlZ2luUGxheWJhY2soKTsKKyAgICBBTFdBWVNf
TE9HKExPR0lERU5USUZJRVIsICJyZXR1cm5pbmcgIiwgd2lsbEJlZ2luKTsKKworICAgIHJldHVy
biB3aWxsQmVnaW47Cit9CisKK2Jvb2wgV2ViS2l0QXVkaW9Db250ZXh0Ojp3aWxsUGF1c2VQbGF5
YmFjaygpCit7CisgICAgYXV0byogZG9jdW1lbnQgPSB0aGlzLT5kb2N1bWVudCgpOworICAgIGlm
ICghZG9jdW1lbnQpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGlmICh1c2VyR2VzdHVy
ZVJlcXVpcmVkRm9yQXVkaW9TdGFydCgpKSB7CisgICAgICAgIGlmICghZG9jdW1lbnQtPnByb2Nl
c3NpbmdVc2VyR2VzdHVyZUZvck1lZGlhKCkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7Cisg
ICAgICAgIHJlbW92ZUJlaGF2aW9yUmVzdHJpY3Rpb24oV2ViS2l0QXVkaW9Db250ZXh0OjpSZXF1
aXJlVXNlckdlc3R1cmVGb3JBdWRpb1N0YXJ0UmVzdHJpY3Rpb24pOworICAgIH0KKworICAgIGlm
IChwYWdlQ29uc2VudFJlcXVpcmVkRm9yQXVkaW9TdGFydCgpKSB7CisgICAgICAgIGF1dG8qIHBh
Z2UgPSBkb2N1bWVudC0+cGFnZSgpOworICAgICAgICBpZiAocGFnZSAmJiAhcGFnZS0+Y2FuU3Rh
cnRNZWRpYSgpKSB7CisgICAgICAgICAgICBkb2N1bWVudC0+YWRkTWVkaWFDYW5TdGFydExpc3Rl
bmVyKCp0aGlzKTsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorICAgICAg
ICByZW1vdmVCZWhhdmlvclJlc3RyaWN0aW9uKFdlYktpdEF1ZGlvQ29udGV4dDo6UmVxdWlyZVBh
Z2VDb25zZW50Rm9yQXVkaW9TdGFydFJlc3RyaWN0aW9uKTsKKyAgICB9CisKKyAgICByZXR1cm4g
bV9tZWRpYVNlc3Npb24tPmNsaWVudFdpbGxQYXVzZVBsYXliYWNrKCk7Cit9CisKK3ZvaWQgV2Vi
S2l0QXVkaW9Db250ZXh0OjpzdGFydFJlbmRlcmluZygpCit7CisgICAgQUxXQVlTX0xPRyhMT0dJ
REVOVElGSUVSKTsKKyAgICBpZiAobV9pc1N0b3BTY2hlZHVsZWQgfHwgIXdpbGxCZWdpblBsYXli
YWNrKCkpCisgICAgICAgIHJldHVybjsKKworICAgIG1ha2VQZW5kaW5nQWN0aXZpdHkoKTsKKwor
ICAgIGRlc3RpbmF0aW9uKCktPnN0YXJ0UmVuZGVyaW5nKCk7CisgICAgc2V0U3RhdGUoU3RhdGU6
OlJ1bm5pbmcpOworfQorCit2b2lkIFdlYktpdEF1ZGlvQ29udGV4dDo6bWVkaWFDYW5TdGFydChE
b2N1bWVudCYgZG9jdW1lbnQpCit7CisgICAgQVNTRVJUX1VOVVNFRChkb2N1bWVudCwgJmRvY3Vt
ZW50ID09IHRoaXMtPmRvY3VtZW50KCkpOworICAgIHJlbW92ZUJlaGF2aW9yUmVzdHJpY3Rpb24o
V2ViS2l0QXVkaW9Db250ZXh0OjpSZXF1aXJlUGFnZUNvbnNlbnRGb3JBdWRpb1N0YXJ0UmVzdHJp
Y3Rpb24pOworICAgIG1heVJlc3VtZVBsYXliYWNrKHRydWUpOworfQorCitNZWRpYVByb2R1Y2Vy
OjpNZWRpYVN0YXRlRmxhZ3MgV2ViS2l0QXVkaW9Db250ZXh0OjptZWRpYVN0YXRlKCkgY29uc3QK
K3sKKyAgICBpZiAoIW1faXNTdG9wU2NoZWR1bGVkICYmIG1fZGVzdGluYXRpb25Ob2RlICYmIG1f
ZGVzdGluYXRpb25Ob2RlLT5pc1BsYXlpbmdBdWRpbygpKQorICAgICAgICByZXR1cm4gTWVkaWFQ
cm9kdWNlcjo6SXNQbGF5aW5nQXVkaW87CisKKyAgICByZXR1cm4gTWVkaWFQcm9kdWNlcjo6SXNO
b3RQbGF5aW5nOworfQorCit2b2lkIFdlYktpdEF1ZGlvQ29udGV4dDo6cGFnZU11dGVkU3RhdGVE
aWRDaGFuZ2UoKQoreworICAgIGlmIChtX2Rlc3RpbmF0aW9uTm9kZSAmJiBkb2N1bWVudCgpICYm
IGRvY3VtZW50KCktPnBhZ2UoKSkKKyAgICAgICAgbV9kZXN0aW5hdGlvbk5vZGUtPnNldE11dGVk
KGRvY3VtZW50KCktPnBhZ2UoKS0+aXNBdWRpb011dGVkKCkpOworfQorCit2b2lkIFdlYktpdEF1
ZGlvQ29udGV4dDo6aXNQbGF5aW5nQXVkaW9EaWRDaGFuZ2UoKQoreworICAgIC8vIE1ha2Ugc3Vy
ZSB0byBjYWxsIERvY3VtZW50Ojp1cGRhdGVJc1BsYXlpbmdNZWRpYSgpIG9uIHRoZSBtYWluIHRo
cmVhZCwgc2luY2UKKyAgICAvLyB3ZSBjb3VsZCBiZSBvbiB0aGUgYXVkaW8gSS9PIHRocmVhZCBo
ZXJlIGFuZCB0aGUgY2FsbCBpbnRvIFdlYkNvcmUgY291bGQgYmxvY2suCisgICAgY2FsbE9uTWFp
blRocmVhZChbcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpXSB7CisgICAgICAgIGlmIChw
cm90ZWN0ZWRUaGlzLT5kb2N1bWVudCgpKQorICAgICAgICAgICAgcHJvdGVjdGVkVGhpcy0+ZG9j
dW1lbnQoKS0+dXBkYXRlSXNQbGF5aW5nTWVkaWEoKTsKKyAgICB9KTsKK30KKwordm9pZCBXZWJL
aXRBdWRpb0NvbnRleHQ6OmZpbmlzaGVkUmVuZGVyaW5nKGJvb2wgZGlkUmVuZGVyaW5nKQorewor
ICAgIEFTU0VSVChpc09mZmxpbmVDb250ZXh0KCkpOworICAgIEFTU0VSVChpc01haW5UaHJlYWQo
KSk7CisgICAgaWYgKCFpc01haW5UaHJlYWQoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgYXV0
byBjbGVhclBlbmRpbmdBY3Rpdml0eUlmRXhpdEVhcmx5ID0gV1RGOjptYWtlU2NvcGVFeGl0KFt0
aGlzXSB7CisgICAgICAgIGNsZWFyUGVuZGluZ0FjdGl2aXR5KCk7CisgICAgfSk7CisKKworICAg
IEFMV0FZU19MT0coTE9HSURFTlRJRklFUik7CisKKyAgICBpZiAoIWRpZFJlbmRlcmluZykKKyAg
ICAgICAgcmV0dXJuOworCisgICAgQXVkaW9CdWZmZXIqIHJlbmRlcmVkQnVmZmVyID0gbV9yZW5k
ZXJUYXJnZXQuZ2V0KCk7CisgICAgc2V0U3RhdGUoU3RhdGU6OkNsb3NlZCk7CisKKyAgICBBU1NF
UlQocmVuZGVyZWRCdWZmZXIpOworICAgIGlmICghcmVuZGVyZWRCdWZmZXIpCisgICAgICAgIHJl
dHVybjsKKworICAgIC8vIEF2b2lkIGZpcmluZyB0aGUgZXZlbnQgaWYgdGhlIGRvY3VtZW50IGhh
cyBhbHJlYWR5IGdvbmUgYXdheS4KKyAgICBpZiAobV9pc1N0b3BTY2hlZHVsZWQpCisgICAgICAg
IHJldHVybjsKKworICAgIGNsZWFyUGVuZGluZ0FjdGl2aXR5SWZFeGl0RWFybHkucmVsZWFzZSgp
OworICAgIG1fZXZlbnRRdWV1ZS0+ZW5xdWV1ZUV2ZW50KE9mZmxpbmVBdWRpb0NvbXBsZXRpb25F
dmVudDo6Y3JlYXRlKHJlbmRlcmVkQnVmZmVyKSk7Cit9CisKK3ZvaWQgV2ViS2l0QXVkaW9Db250
ZXh0OjpkaXNwYXRjaEV2ZW50KEV2ZW50JiBldmVudCkKK3sKKyAgICBFdmVudFRhcmdldDo6ZGlz
cGF0Y2hFdmVudChldmVudCk7CisgICAgaWYgKGV2ZW50LmV2ZW50SW50ZXJmYWNlKCkgPT0gT2Zm
bGluZUF1ZGlvQ29tcGxldGlvbkV2ZW50SW50ZXJmYWNlVHlwZSkKKyAgICAgICAgY2xlYXJQZW5k
aW5nQWN0aXZpdHkoKTsKK30KKwordm9pZCBXZWJLaXRBdWRpb0NvbnRleHQ6OmluY3JlbWVudEFj
dGl2ZVNvdXJjZUNvdW50KCkKK3sKKyAgICArK21fYWN0aXZlU291cmNlQ291bnQ7Cit9CisKK3Zv
aWQgV2ViS2l0QXVkaW9Db250ZXh0OjpkZWNyZW1lbnRBY3RpdmVTb3VyY2VDb3VudCgpCit7Cisg
ICAgLS1tX2FjdGl2ZVNvdXJjZUNvdW50OworfQorCit2b2lkIFdlYktpdEF1ZGlvQ29udGV4dDo6
c3VzcGVuZFJlbmRlcmluZyhET01Qcm9taXNlRGVmZXJyZWQ8dm9pZD4mJiBwcm9taXNlKQorewor
ICAgIGlmIChpc09mZmxpbmVDb250ZXh0KCkgfHwgbV9pc1N0b3BTY2hlZHVsZWQpIHsKKyAgICAg
ICAgcHJvbWlzZS5yZWplY3QoSW52YWxpZFN0YXRlRXJyb3IpOworICAgICAgICByZXR1cm47Cisg
ICAgfQorCisgICAgaWYgKG1fc3RhdGUgPT0gU3RhdGU6OlN1c3BlbmRlZCkgeworICAgICAgICBw
cm9taXNlLnJlc29sdmUoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlmIChtX3N0
YXRlID09IFN0YXRlOjpDbG9zZWQgfHwgbV9zdGF0ZSA9PSBTdGF0ZTo6SW50ZXJydXB0ZWQgfHwg
IW1fZGVzdGluYXRpb25Ob2RlKSB7CisgICAgICAgIHByb21pc2UucmVqZWN0KCk7CisgICAgICAg
IHJldHVybjsKKyAgICB9CisKKyAgICBhZGRSZWFjdGlvbihTdGF0ZTo6U3VzcGVuZGVkLCBXVEZN
b3ZlKHByb21pc2UpKTsKKworICAgIGlmICghd2lsbFBhdXNlUGxheWJhY2soKSkKKyAgICAgICAg
cmV0dXJuOworCisgICAgbGF6eUluaXRpYWxpemUoKTsKKworICAgIG1fZGVzdGluYXRpb25Ob2Rl
LT5zdXNwZW5kKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyldIHsKKyAgICAg
ICAgc2V0U3RhdGUoU3RhdGU6OlN1c3BlbmRlZCk7CisgICAgfSk7Cit9CisKK3ZvaWQgV2ViS2l0
QXVkaW9Db250ZXh0OjpyZXN1bWVSZW5kZXJpbmcoRE9NUHJvbWlzZURlZmVycmVkPHZvaWQ+JiYg
cHJvbWlzZSkKK3sKKyAgICBpZiAoaXNPZmZsaW5lQ29udGV4dCgpIHx8IG1faXNTdG9wU2NoZWR1
bGVkKSB7CisgICAgICAgIHByb21pc2UucmVqZWN0KEludmFsaWRTdGF0ZUVycm9yKTsKKyAgICAg
ICAgcmV0dXJuOworICAgIH0KKworICAgIGlmIChtX3N0YXRlID09IFN0YXRlOjpSdW5uaW5nKSB7
CisgICAgICAgIHByb21pc2UucmVzb2x2ZSgpOworICAgICAgICByZXR1cm47CisgICAgfQorCisg
ICAgaWYgKG1fc3RhdGUgPT0gU3RhdGU6OkNsb3NlZCB8fCAhbV9kZXN0aW5hdGlvbk5vZGUpIHsK
KyAgICAgICAgcHJvbWlzZS5yZWplY3QoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAg
IGFkZFJlYWN0aW9uKFN0YXRlOjpSdW5uaW5nLCBXVEZNb3ZlKHByb21pc2UpKTsKKworICAgIGlm
ICghd2lsbEJlZ2luUGxheWJhY2soKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgbGF6eUluaXRp
YWxpemUoKTsKKworICAgIG1fZGVzdGluYXRpb25Ob2RlLT5yZXN1bWUoW3RoaXMsIHByb3RlY3Rl
ZFRoaXMgPSBtYWtlUmVmKCp0aGlzKV0geworICAgICAgICBzZXRTdGF0ZShTdGF0ZTo6UnVubmlu
Zyk7CisgICAgfSk7Cit9CisKK3ZvaWQgV2ViS2l0QXVkaW9Db250ZXh0OjpjbG9zZShET01Qcm9t
aXNlRGVmZXJyZWQ8dm9pZD4mJiBwcm9taXNlKQoreworICAgIGlmIChpc09mZmxpbmVDb250ZXh0
KCkgfHwgbV9pc1N0b3BTY2hlZHVsZWQpIHsKKyAgICAgICAgcHJvbWlzZS5yZWplY3QoSW52YWxp
ZFN0YXRlRXJyb3IpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgaWYgKG1fc3RhdGUg
PT0gU3RhdGU6OkNsb3NlZCB8fCAhbV9kZXN0aW5hdGlvbk5vZGUpIHsKKyAgICAgICAgcHJvbWlz
ZS5yZXNvbHZlKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBhZGRSZWFjdGlvbihT
dGF0ZTo6Q2xvc2VkLCBXVEZNb3ZlKHByb21pc2UpKTsKKworICAgIGxhenlJbml0aWFsaXplKCk7
CisKKyAgICBtX2Rlc3RpbmF0aW9uTm9kZS0+Y2xvc2UoW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBt
YWtlUmVmKCp0aGlzKV0geworICAgICAgICBzZXRTdGF0ZShTdGF0ZTo6Q2xvc2VkKTsKKyAgICAg
ICAgdW5pbml0aWFsaXplKCk7CisgICAgfSk7Cit9CisKKwordm9pZCBXZWJLaXRBdWRpb0NvbnRl
eHQ6OnN1c3BlbmRQbGF5YmFjaygpCit7CisgICAgaWYgKCFtX2Rlc3RpbmF0aW9uTm9kZSB8fCBt
X3N0YXRlID09IFN0YXRlOjpDbG9zZWQpCisgICAgICAgIHJldHVybjsKKworICAgIGlmIChtX3N0
YXRlID09IFN0YXRlOjpTdXNwZW5kZWQpIHsKKyAgICAgICAgaWYgKG1fbWVkaWFTZXNzaW9uLT5z
dGF0ZSgpID09IFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpJbnRlcnJ1cHRlZCkKKyAgICAgICAgICAg
IHNldFN0YXRlKFN0YXRlOjpJbnRlcnJ1cHRlZCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisK
KyAgICBsYXp5SW5pdGlhbGl6ZSgpOworCisgICAgbV9kZXN0aW5hdGlvbk5vZGUtPnN1c3BlbmQo
W3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKV0geworICAgICAgICBib29sIGlu
dGVycnVwdGVkID0gbV9tZWRpYVNlc3Npb24tPnN0YXRlKCkgPT0gUGxhdGZvcm1NZWRpYVNlc3Np
b246OkludGVycnVwdGVkOworICAgICAgICBzZXRTdGF0ZShpbnRlcnJ1cHRlZCA/IFN0YXRlOjpJ
bnRlcnJ1cHRlZCA6IFN0YXRlOjpTdXNwZW5kZWQpOworICAgIH0pOworfQorCit2b2lkIFdlYktp
dEF1ZGlvQ29udGV4dDo6bWF5UmVzdW1lUGxheWJhY2soYm9vbCBzaG91bGRSZXN1bWUpCit7Cisg
ICAgaWYgKCFtX2Rlc3RpbmF0aW9uTm9kZSB8fCBtX3N0YXRlID09IFN0YXRlOjpDbG9zZWQgfHwg
bV9zdGF0ZSA9PSBTdGF0ZTo6UnVubmluZykKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKCFz
aG91bGRSZXN1bWUpIHsKKyAgICAgICAgc2V0U3RhdGUoU3RhdGU6OlN1c3BlbmRlZCk7CisgICAg
ICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpZiAoIXdpbGxCZWdpblBsYXliYWNrKCkpCisgICAg
ICAgIHJldHVybjsKKworICAgIGxhenlJbml0aWFsaXplKCk7CisKKyAgICBtX2Rlc3RpbmF0aW9u
Tm9kZS0+cmVzdW1lKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyldIHsKKyAg
ICAgICAgc2V0U3RhdGUoU3RhdGU6OlJ1bm5pbmcpOworICAgIH0pOworfQorCit2b2lkIFdlYktp
dEF1ZGlvQ29udGV4dDo6cG9zdFRhc2soV1RGOjpGdW5jdGlvbjx2b2lkKCk+JiYgdGFzaykKK3sK
KyAgICBpZiAobV9pc1N0b3BTY2hlZHVsZWQpCisgICAgICAgIHJldHVybjsKKworICAgIG1fc2Ny
aXB0RXhlY3V0aW9uQ29udGV4dC0+cG9zdFRhc2soV1RGTW92ZSh0YXNrKSk7Cit9CisKK2NvbnN0
IFNlY3VyaXR5T3JpZ2luKiBXZWJLaXRBdWRpb0NvbnRleHQ6Om9yaWdpbigpIGNvbnN0Cit7Cisg
ICAgcmV0dXJuIG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dCA/IG1fc2NyaXB0RXhlY3V0aW9uQ29u
dGV4dC0+c2VjdXJpdHlPcmlnaW4oKSA6IG51bGxwdHI7Cit9CisKK3ZvaWQgV2ViS2l0QXVkaW9D
b250ZXh0OjphZGRDb25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNlIHNvdXJjZSwgTWVzc2FnZUxl
dmVsIGxldmVsLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCit7CisgICAgaWYgKG1fc2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCkKKyAgICAgICAgbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0LT5hZGRDb25z
b2xlTWVzc2FnZShzb3VyY2UsIGxldmVsLCBtZXNzYWdlKTsKK30KKwordm9pZCBXZWJLaXRBdWRp
b0NvbnRleHQ6OmNsZWFyUGVuZGluZ0FjdGl2aXR5KCkKK3sKKyAgICBpZiAoIW1fcGVuZGluZ0Fj
dGl2aXR5KQorICAgICAgICByZXR1cm47CisgICAgbV9wZW5kaW5nQWN0aXZpdHkgPSBudWxscHRy
OworICAgIC8vIEZJWE1FOiBSZW1vdmUgdGhpcyBzcGVjaWZpYyBkZXJlZigpIGFuZCByZWYoKSBj
YWxsIGluIG1ha2VQZW5kaW5nQWN0aXZpdHkoKS4KKyAgICBkZXJlZigpOworfQorCit2b2lkIFdl
YktpdEF1ZGlvQ29udGV4dDo6bWFrZVBlbmRpbmdBY3Rpdml0eSgpCit7CisgICAgaWYgKG1fcGVu
ZGluZ0FjdGl2aXR5KQorICAgICAgICByZXR1cm47CisgICAgbV9wZW5kaW5nQWN0aXZpdHkgPSBB
Y3RpdmVET01PYmplY3Q6Om1ha2VQZW5kaW5nQWN0aXZpdHkoKnRoaXMpOworICAgIHJlZigpOwor
fQorCisjaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECitXVEZMb2dDaGFubmVsJiBXZWJLaXRBdWRp
b0NvbnRleHQ6OmxvZ0NoYW5uZWwoKSBjb25zdAoreworICAgIHJldHVybiBMb2dNZWRpYTsKK30K
KyNlbmRpZgorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoV0VC
X0FVRElPKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9XZWJL
aXRBdWRpb0NvbnRleHQuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vV2ViS2l0
QXVkaW9Db250ZXh0LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLmNl
MmQwOWExZjEyCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJh
dWRpby9XZWJLaXRBdWRpb0NvbnRleHQuaApAQCAtMCwwICsxLDQzMSBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJp
Z2h0IChDKSAyMDE2LTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisg
KiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04K
KyAqIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUworICogU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJBY3RpdmVET01PYmplY3QuaCIKKyNpbmNsdWRl
ICJBc3luY0F1ZGlvRGVjb2Rlci5oIgorI2luY2x1ZGUgIkF1ZGlvQnVzLmgiCisjaW5jbHVkZSAi
QXVkaW9Db250ZXh0LmgiCisjaW5jbHVkZSAiQXVkaW9Db250ZXh0U3RhdGUuaCIKKyNpbmNsdWRl
ICJBdWRpb0Rlc3RpbmF0aW9uTm9kZS5oIgorI2luY2x1ZGUgIkV2ZW50VGFyZ2V0LmgiCisjaW5j
bHVkZSAiTWVkaWFDYW5TdGFydExpc3RlbmVyLmgiCisjaW5jbHVkZSAiTWVkaWFQcm9kdWNlci5o
IgorI2luY2x1ZGUgIlBsYXRmb3JtTWVkaWFTZXNzaW9uLmgiCisjaW5jbHVkZSAiU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dC5oIgorI2luY2x1ZGUgIlZpc2liaWxpdHlDaGFuZ2VDbGllbnQuaCIKKyNp
bmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9Db25zb2xlVHlwZXMuaD4KKyNpbmNsdWRlIDxKYXZhU2Ny
aXB0Q29yZS9GbG9hdDMyQXJyYXkuaD4KKyNpbmNsdWRlIDxhdG9taWM+CisjaW5jbHVkZSA8d3Rm
L0hhc2hTZXQuaD4KKyNpbmNsdWRlIDx3dGYvTG9nZ2VySGVscGVyLmg+CisjaW5jbHVkZSA8d3Rm
L01haW5UaHJlYWQuaD4KKyNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CisjaW5jbHVkZSA8d3RmL1Ro
cmVhZFNhZmVSZWZDb3VudGVkLmg+CisjaW5jbHVkZSA8d3RmL1RocmVhZGluZy5oPgorI2luY2x1
ZGUgPHd0Zi9VbmlxdWVSZWYuaD4KKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisjaW5jbHVkZSA8
d3RmL3RleHQvQXRvbVN0cmluZ0hhc2guaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFz
cyBBbmFseXNlck5vZGU7CitjbGFzcyBBdWRpb0J1ZmZlcjsKK2NsYXNzIEF1ZGlvQnVmZmVyQ2Fs
bGJhY2s7CitjbGFzcyBBdWRpb0J1ZmZlclNvdXJjZU5vZGU7CitjbGFzcyBBdWRpb0xpc3RlbmVy
OworY2xhc3MgQXVkaW9TdW1taW5nSnVuY3Rpb247CitjbGFzcyBCaXF1YWRGaWx0ZXJOb2RlOwor
Y2xhc3MgQ2hhbm5lbE1lcmdlck5vZGU7CitjbGFzcyBDaGFubmVsU3BsaXR0ZXJOb2RlOworY2xh
c3MgQ29udm9sdmVyTm9kZTsKK2NsYXNzIERlbGF5Tm9kZTsKK2NsYXNzIERvY3VtZW50OworY2xh
c3MgRHluYW1pY3NDb21wcmVzc29yTm9kZTsKK2NsYXNzIEdhaW5Ob2RlOworY2xhc3MgSFRNTE1l
ZGlhRWxlbWVudDsKK2NsYXNzIE1haW5UaHJlYWRHZW5lcmljRXZlbnRRdWV1ZTsKK2NsYXNzIE1l
ZGlhRWxlbWVudEF1ZGlvU291cmNlTm9kZTsKK2NsYXNzIE1lZGlhU3RyZWFtOworY2xhc3MgTWVk
aWFTdHJlYW1BdWRpb0Rlc3RpbmF0aW9uTm9kZTsKK2NsYXNzIE1lZGlhU3RyZWFtQXVkaW9Tb3Vy
Y2VOb2RlOworY2xhc3MgT3NjaWxsYXRvck5vZGU7CitjbGFzcyBQZXJpb2RpY1dhdmU7CitjbGFz
cyBTY3JpcHRQcm9jZXNzb3JOb2RlOworY2xhc3MgU2VjdXJpdHlPcmlnaW47CitjbGFzcyBXYXZl
U2hhcGVyTm9kZTsKK2NsYXNzIFdlYktpdEF1ZGlvUGFubmVyTm9kZTsKKwordGVtcGxhdGU8dHlw
ZW5hbWUgSURMVHlwZT4gY2xhc3MgRE9NUHJvbWlzZURlZmVycmVkOworCisvLyBBdWRpb0NvbnRl
eHQgaXMgdGhlIGNvcm5lcnN0b25lIG9mIHRoZSB3ZWIgYXVkaW8gQVBJIGFuZCBhbGwgQXVkaW9O
b2RlcyBhcmUgY3JlYXRlZCBmcm9tIGl0LgorLy8gRm9yIHRocmVhZCBzYWZldHkgYmV0d2VlbiB0
aGUgYXVkaW8gdGhyZWFkIGFuZCB0aGUgbWFpbiB0aHJlYWQsIGl0IGhhcyBhIHJlbmRlcmluZyBn
cmFwaCBsb2NraW5nIG1lY2hhbmlzbS4KKworY2xhc3MgV2ViS2l0QXVkaW9Db250ZXh0CisgICAg
OiBwdWJsaWMgQXVkaW9Db250ZXh0QmFzZQorICAgICwgcHJpdmF0ZSBQbGF0Zm9ybU1lZGlhU2Vz
c2lvbkNsaWVudAorICAgICwgcHJpdmF0ZSBWaXNpYmlsaXR5Q2hhbmdlQ2xpZW50Cit7CitwdWJs
aWM6CisgICAgLy8gQ3JlYXRlIGFuIFdlYktpdEF1ZGlvQ29udGV4dCBmb3IgcmVuZGVyaW5nIHRv
IHRoZSBhdWRpbyBoYXJkd2FyZS4KKyAgICBzdGF0aWMgRXhjZXB0aW9uT3I8UmVmPFdlYktpdEF1
ZGlvQ29udGV4dD4+IGNyZWF0ZShEb2N1bWVudCYpOworCisgICAgdmlydHVhbCB+V2ViS2l0QXVk
aW9Db250ZXh0KCk7CisKKyAgICBib29sIGlzSW5pdGlhbGl6ZWQoKSBjb25zdCBmaW5hbDsKKwor
ICAgIGJvb2wgaXNPZmZsaW5lQ29udGV4dCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1faXNPZmZs
aW5lQ29udGV4dDsgfQorCisgICAgRG9jdW1lbnRJZGVudGlmaWVyIGhvc3RpbmdEb2N1bWVudElk
ZW50aWZpZXIoKSBjb25zdCBmaW5hbDsKKworICAgIEF1ZGlvRGVzdGluYXRpb25Ob2RlKiBkZXN0
aW5hdGlvbigpIHsgcmV0dXJuIG1fZGVzdGluYXRpb25Ob2RlLmdldCgpOyB9CisgICAgc2l6ZV90
IGN1cnJlbnRTYW1wbGVGcmFtZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fZGVzdGluYXRpb25O
b2RlID8gbV9kZXN0aW5hdGlvbk5vZGUtPmN1cnJlbnRTYW1wbGVGcmFtZSgpIDogMDsgfQorICAg
IGRvdWJsZSBjdXJyZW50VGltZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fZGVzdGluYXRpb25O
b2RlID8gbV9kZXN0aW5hdGlvbk5vZGUtPmN1cnJlbnRUaW1lKCkgOiAwLjsgfQorICAgIGZsb2F0
IHNhbXBsZVJhdGUoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2Rlc3RpbmF0aW9uTm9kZSA/IG1f
ZGVzdGluYXRpb25Ob2RlLT5zYW1wbGVSYXRlKCkgOiAwLmY7IH0KKyAgICB1bnNpZ25lZCBsb25n
IGFjdGl2ZVNvdXJjZUNvdW50KCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8dW5zaWduZWQg
bG9uZz4obV9hY3RpdmVTb3VyY2VDb3VudCk7IH0KKworICAgIHZvaWQgaW5jcmVtZW50QWN0aXZl
U291cmNlQ291bnQoKSBmaW5hbDsKKyAgICB2b2lkIGRlY3JlbWVudEFjdGl2ZVNvdXJjZUNvdW50
KCkgZmluYWw7CisKKyAgICBFeGNlcHRpb25PcjxSZWY8QXVkaW9CdWZmZXI+PiBjcmVhdGVCdWZm
ZXIodW5zaWduZWQgbnVtYmVyT2ZDaGFubmVscywgc2l6ZV90IG51bWJlck9mRnJhbWVzLCBmbG9h
dCBzYW1wbGVSYXRlKTsKKyAgICBFeGNlcHRpb25PcjxSZWY8QXVkaW9CdWZmZXI+PiBjcmVhdGVC
dWZmZXIoQXJyYXlCdWZmZXImLCBib29sIG1peFRvTW9ubyk7CisKKyAgICAvLyBBc3luY2hyb25v
dXMgYXVkaW8gZmlsZSBkYXRhIGRlY29kaW5nLgorICAgIHZvaWQgZGVjb2RlQXVkaW9EYXRhKFJl
ZjxBcnJheUJ1ZmZlcj4mJiwgUmVmUHRyPEF1ZGlvQnVmZmVyQ2FsbGJhY2s+JiYsIFJlZlB0cjxB
dWRpb0J1ZmZlckNhbGxiYWNrPiYmKTsKKworICAgIEF1ZGlvTGlzdGVuZXIqIGxpc3RlbmVyKCkg
eyByZXR1cm4gbV9saXN0ZW5lci5nZXQoKTsgfQorCisgICAgdm9pZCBzdXNwZW5kUmVuZGVyaW5n
KERPTVByb21pc2VEZWZlcnJlZDx2b2lkPiYmKTsKKyAgICB2b2lkIHJlc3VtZVJlbmRlcmluZyhE
T01Qcm9taXNlRGVmZXJyZWQ8dm9pZD4mJik7CisgICAgdm9pZCBjbG9zZShET01Qcm9taXNlRGVm
ZXJyZWQ8dm9pZD4mJik7CisKKyAgICB1c2luZyBTdGF0ZSA9IEF1ZGlvQ29udGV4dFN0YXRlOwor
ICAgIFN0YXRlIHN0YXRlKCkgY29uc3Q7CisgICAgYm9vbCBpc0Nsb3NlZCgpIGNvbnN0IHsgcmV0
dXJuIG1fc3RhdGUgPT0gU3RhdGU6OkNsb3NlZDsgfQorCisgICAgYm9vbCB3b3VsZFRhaW50T3Jp
Z2luKGNvbnN0IFVSTCYpIGNvbnN0OworCisgICAgLy8gVGhlIEF1ZGlvTm9kZSBjcmVhdGUgbWV0
aG9kcyBhcmUgY2FsbGVkIG9uIHRoZSBtYWluIHRocmVhZCAoZnJvbSBKYXZhU2NyaXB0KS4KKyAg
ICBFeGNlcHRpb25PcjxSZWY8QXVkaW9CdWZmZXJTb3VyY2VOb2RlPj4gY3JlYXRlQnVmZmVyU291
cmNlKCk7CisjaWYgRU5BQkxFKFZJREVPKQorICAgIEV4Y2VwdGlvbk9yPFJlZjxNZWRpYUVsZW1l
bnRBdWRpb1NvdXJjZU5vZGU+PiBjcmVhdGVNZWRpYUVsZW1lbnRTb3VyY2UoSFRNTE1lZGlhRWxl
bWVudCYpOworI2VuZGlmCisjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKKyAgICBFeGNlcHRpb25P
cjxSZWY8TWVkaWFTdHJlYW1BdWRpb1NvdXJjZU5vZGU+PiBjcmVhdGVNZWRpYVN0cmVhbVNvdXJj
ZShNZWRpYVN0cmVhbSYpOworICAgIEV4Y2VwdGlvbk9yPFJlZjxNZWRpYVN0cmVhbUF1ZGlvRGVz
dGluYXRpb25Ob2RlPj4gY3JlYXRlTWVkaWFTdHJlYW1EZXN0aW5hdGlvbigpOworI2VuZGlmCisg
ICAgRXhjZXB0aW9uT3I8UmVmPEdhaW5Ob2RlPj4gY3JlYXRlR2FpbigpOworICAgIEV4Y2VwdGlv
bk9yPFJlZjxCaXF1YWRGaWx0ZXJOb2RlPj4gY3JlYXRlQmlxdWFkRmlsdGVyKCk7CisgICAgRXhj
ZXB0aW9uT3I8UmVmPFdhdmVTaGFwZXJOb2RlPj4gY3JlYXRlV2F2ZVNoYXBlcigpOworICAgIEV4
Y2VwdGlvbk9yPFJlZjxEZWxheU5vZGU+PiBjcmVhdGVEZWxheShkb3VibGUgbWF4RGVsYXlUaW1l
KTsKKyAgICBFeGNlcHRpb25PcjxSZWY8V2ViS2l0QXVkaW9QYW5uZXJOb2RlPj4gY3JlYXRlUGFu
bmVyKCk7CisgICAgRXhjZXB0aW9uT3I8UmVmPENvbnZvbHZlck5vZGU+PiBjcmVhdGVDb252b2x2
ZXIoKTsKKyAgICBFeGNlcHRpb25PcjxSZWY8RHluYW1pY3NDb21wcmVzc29yTm9kZT4+IGNyZWF0
ZUR5bmFtaWNzQ29tcHJlc3NvcigpOworICAgIEV4Y2VwdGlvbk9yPFJlZjxBbmFseXNlck5vZGU+
PiBjcmVhdGVBbmFseXNlcigpOworICAgIEV4Y2VwdGlvbk9yPFJlZjxTY3JpcHRQcm9jZXNzb3JO
b2RlPj4gY3JlYXRlU2NyaXB0UHJvY2Vzc29yKHNpemVfdCBidWZmZXJTaXplLCBzaXplX3QgbnVt
YmVyT2ZJbnB1dENoYW5uZWxzLCBzaXplX3QgbnVtYmVyT2ZPdXRwdXRDaGFubmVscyk7CisgICAg
RXhjZXB0aW9uT3I8UmVmPENoYW5uZWxTcGxpdHRlck5vZGU+PiBjcmVhdGVDaGFubmVsU3BsaXR0
ZXIoc2l6ZV90IG51bWJlck9mT3V0cHV0cyk7CisgICAgRXhjZXB0aW9uT3I8UmVmPENoYW5uZWxN
ZXJnZXJOb2RlPj4gY3JlYXRlQ2hhbm5lbE1lcmdlcihzaXplX3QgbnVtYmVyT2ZJbnB1dHMpOwor
ICAgIEV4Y2VwdGlvbk9yPFJlZjxPc2NpbGxhdG9yTm9kZT4+IGNyZWF0ZU9zY2lsbGF0b3IoKTsK
KyAgICBFeGNlcHRpb25PcjxSZWY8UGVyaW9kaWNXYXZlPj4gY3JlYXRlUGVyaW9kaWNXYXZlKEZs
b2F0MzJBcnJheSYgcmVhbCwgRmxvYXQzMkFycmF5JiBpbWFnaW5hcnkpOworCisgICAgLy8gV2hl
biBhIHNvdXJjZSBub2RlIGhhcyBubyBtb3JlIHByb2Nlc3NpbmcgdG8gZG8gKGhhcyBmaW5pc2hl
ZCBwbGF5aW5nKSwgdGhlbiBpdCB0ZWxscyB0aGUgY29udGV4dCB0byBkZXJlZmVyZW5jZSBpdC4K
KyAgICB2b2lkIG5vdGlmeU5vZGVGaW5pc2hlZFByb2Nlc3NpbmcoQXVkaW9Ob2RlKikgZmluYWw7
CisKKyAgICAvLyBDYWxsZWQgYXQgdGhlIHN0YXJ0IG9mIGVhY2ggcmVuZGVyIHF1YW50dW0uCisg
ICAgdm9pZCBoYW5kbGVQcmVSZW5kZXJUYXNrcygpIGZpbmFsOworCisgICAgLy8gQ2FsbGVkIGF0
IHRoZSBlbmQgb2YgZWFjaCByZW5kZXIgcXVhbnR1bS4KKyAgICB2b2lkIGhhbmRsZVBvc3RSZW5k
ZXJUYXNrcygpIGZpbmFsOworCisgICAgLy8gQ2FsbGVkIHBlcmlvZGljYWxseSBhdCB0aGUgZW5k
IG9mIGVhY2ggcmVuZGVyIHF1YW50dW0gdG8gZGVyZWZlcmVuY2UgZmluaXNoZWQgc291cmNlIG5v
ZGVzLgorICAgIHZvaWQgZGVyZWZGaW5pc2hlZFNvdXJjZU5vZGVzKCk7CisKKyAgICAvLyBXZSBz
Y2hlZHVsZSBkZWxldGlvbiBvZiBhbGwgbWFya2VkIG5vZGVzIGF0IHRoZSBlbmQgb2YgZWFjaCBy
ZWFsdGltZSByZW5kZXIgcXVhbnR1bS4KKyAgICB2b2lkIG1hcmtGb3JEZWxldGlvbihBdWRpb05v
ZGUmKSBmaW5hbDsKKyAgICB2b2lkIGRlbGV0ZU1hcmtlZE5vZGVzKCkgZmluYWw7CisKKyAgICAv
LyBBdWRpb0NvbnRleHQgY2FuIHB1bGwgbm9kZShzKSBhdCB0aGUgZW5kIG9mIGVhY2ggcmVuZGVy
IHF1YW50dW0gZXZlbiB3aGVuIHRoZXkgYXJlIG5vdCBjb25uZWN0ZWQgdG8gYW55IGRvd25zdHJl
YW0gbm9kZXMuCisgICAgLy8gVGhlc2UgdHdvIG1ldGhvZHMgYXJlIGNhbGxlZCBieSB0aGUgbm9k
ZXMgd2hvIHdhbnQgdG8gYWRkL3JlbW92ZSB0aGVtc2VsdmVzIGludG8vZnJvbSB0aGUgYXV0b21h
dGljIHB1bGwgbGlzdHMuCisgICAgdm9pZCBhZGRBdXRvbWF0aWNQdWxsTm9kZShBdWRpb05vZGUm
KSBmaW5hbDsKKyAgICB2b2lkIHJlbW92ZUF1dG9tYXRpY1B1bGxOb2RlKEF1ZGlvTm9kZSYpIGZp
bmFsOworCisgICAgLy8gQ2FsbGVkIHJpZ2h0IGJlZm9yZSBoYW5kbGVQb3N0UmVuZGVyVGFza3Mo
KSB0byBoYW5kbGUgbm9kZXMgd2hpY2ggbmVlZCB0byBiZSBwdWxsZWQgZXZlbiB3aGVuIHRoZXkg
YXJlIG5vdCBjb25uZWN0ZWQgdG8gYW55dGhpbmcuCisgICAgdm9pZCBwcm9jZXNzQXV0b21hdGlj
UHVsbE5vZGVzKHNpemVfdCBmcmFtZXNUb1Byb2Nlc3MpIGZpbmFsOworCisgICAgLy8gS2VlcHMg
dHJhY2sgb2YgdGhlIG51bWJlciBvZiBjb25uZWN0aW9ucyBtYWRlLgorICAgIHZvaWQgaW5jcmVt
ZW50Q29ubmVjdGlvbkNvdW50KCkgZmluYWwKKyAgICB7CisgICAgICAgIEFTU0VSVChpc01haW5U
aHJlYWQoKSk7CisgICAgICAgIG1fY29ubmVjdGlvbkNvdW50Kys7CisgICAgfQorCisgICAgdW5z
aWduZWQgY29ubmVjdGlvbkNvdW50KCkgY29uc3QgeyByZXR1cm4gbV9jb25uZWN0aW9uQ291bnQ7
IH0KKworICAgIC8vCisgICAgLy8gVGhyZWFkIFNhZmV0eSBhbmQgR3JhcGggTG9ja2luZzoKKyAg
ICAvLworCisgICAgdm9pZCBzZXRBdWRpb1RocmVhZChUaHJlYWQmIHRocmVhZCkgZmluYWwgeyBt
X2F1ZGlvVGhyZWFkID0gJnRocmVhZDsgfSAvLyBGSVhNRTogY2hlY2sgZWl0aGVyIG5vdCBpbml0
aWFsaXplZCBvciB0aGUgc2FtZQorICAgIFRocmVhZCogYXVkaW9UaHJlYWQoKSBjb25zdCB7IHJl
dHVybiBtX2F1ZGlvVGhyZWFkOyB9CisgICAgYm9vbCBpc0F1ZGlvVGhyZWFkKCkgY29uc3QgZmlu
YWw7CisKKyAgICAvLyBSZXR1cm5zIHRydWUgb25seSBhZnRlciB0aGUgYXVkaW8gdGhyZWFkIGhh
cyBiZWVuIHN0YXJ0ZWQgYW5kIHRoZW4gc2h1dGRvd24uCisgICAgYm9vbCBpc0F1ZGlvVGhyZWFk
RmluaXNoZWQoKSBmaW5hbCB7IHJldHVybiBtX2lzQXVkaW9UaHJlYWRGaW5pc2hlZDsgfQorCisg
ICAgLy8gbXVzdFJlbGVhc2VMb2NrIGlzIHNldCB0byB0cnVlIGlmIHdlIGFjcXVpcmVkIHRoZSBs
b2NrIGluIHRoaXMgbWV0aG9kIGNhbGwgYW5kIGNhbGxlciBtdXN0IHVubG9jaygpLCBmYWxzZSBp
ZiBpdCB3YXMgcHJldmlvdXNseSBhY3F1aXJlZC4KKyAgICB2b2lkIGxvY2soYm9vbCYgbXVzdFJl
bGVhc2VMb2NrKSBmaW5hbDsKKworICAgIC8vIFJldHVybnMgdHJ1ZSBpZiB3ZSBvd24gdGhlIGxv
Y2suCisgICAgLy8gbXVzdFJlbGVhc2VMb2NrIGlzIHNldCB0byB0cnVlIGlmIHdlIGFjcXVpcmVk
IHRoZSBsb2NrIGluIHRoaXMgbWV0aG9kIGNhbGwgYW5kIGNhbGxlciBtdXN0IHVubG9jaygpLCBm
YWxzZSBpZiBpdCB3YXMgcHJldmlvdXNseSBhY3F1aXJlZC4KKyAgICBib29sIHRyeUxvY2soYm9v
bCYgbXVzdFJlbGVhc2VMb2NrKSBmaW5hbDsKKworICAgIHZvaWQgdW5sb2NrKCkgZmluYWw7CisK
KyAgICAvLyBSZXR1cm5zIHRydWUgaWYgdGhpcyB0aHJlYWQgb3ducyB0aGUgY29udGV4dCdzIGxv
Y2suCisgICAgYm9vbCBpc0dyYXBoT3duZXIoKSBjb25zdCBmaW5hbDsKKworICAgIC8vIFJldHVy
bnMgdGhlIG1heGltdW0gbnVtYmVyIG9mIGNoYW5uZWxzIHdlIGNhbiBzdXBwb3J0LgorICAgIHN0
YXRpYyB1bnNpZ25lZCBtYXhOdW1iZXJPZkNoYW5uZWxzKCkgeyByZXR1cm4gTWF4TnVtYmVyT2ZD
aGFubmVsczsgfQorCisgICAgLy8gSW4gQXVkaW9Ob2RlOjpkZXJlZigpIGEgdHJ5TG9jaygpIGlz
IHVzZWQgZm9yIGNhbGxpbmcgZmluaXNoRGVyZWYoKSwgYnV0IGlmIGl0IGZhaWxzIGtlZXAgdHJh
Y2sgaGVyZS4KKyAgICB2b2lkIGFkZERlZmVycmVkRmluaXNoRGVyZWYoQXVkaW9Ob2RlKikgZmlu
YWw7CisKKyAgICAvLyBJbiB0aGUgYXVkaW8gdGhyZWFkIGF0IHRoZSBzdGFydCBvZiBlYWNoIHJl
bmRlciBjeWNsZSwgd2UnbGwgY2FsbCBoYW5kbGVEZWZlcnJlZEZpbmlzaERlcmVmcygpLgorICAg
IHZvaWQgaGFuZGxlRGVmZXJyZWRGaW5pc2hEZXJlZnMoKTsKKworICAgIC8vIE9ubHkgYWNjZXNz
ZWQgd2hlbiB0aGUgZ3JhcGggbG9jayBpcyBoZWxkLgorICAgIHZvaWQgbWFya1N1bW1pbmdKdW5j
dGlvbkRpcnR5KEF1ZGlvU3VtbWluZ0p1bmN0aW9uKikgZmluYWw7CisgICAgdm9pZCBtYXJrQXVk
aW9Ob2RlT3V0cHV0RGlydHkoQXVkaW9Ob2RlT3V0cHV0KikgZmluYWw7CisKKyAgICAvLyBNdXN0
IGJlIGNhbGxlZCBvbiBtYWluIHRocmVhZC4KKyAgICB2b2lkIHJlbW92ZU1hcmtlZFN1bW1pbmdK
dW5jdGlvbihBdWRpb1N1bW1pbmdKdW5jdGlvbiopIGZpbmFsOworCisgICAgLy8gRXZlbnRUYXJn
ZXQKKyAgICBFdmVudFRhcmdldEludGVyZmFjZSBldmVudFRhcmdldEludGVyZmFjZSgpIGNvbnN0
IGZpbmFsIHsgcmV0dXJuIFdlYktpdEF1ZGlvQ29udGV4dEV2ZW50VGFyZ2V0SW50ZXJmYWNlVHlw
ZTsgfQorCisgICAgLy8gUmVjb25jaWxlIHJlZi9kZXJlZiB3aGljaCBhcmUgZGVmaW5lZCBib3Ro
IGluIFRocmVhZFNhZmVSZWZDb3VudGVkIGFuZCBFdmVudFRhcmdldC4KKyAgICB1c2luZyBUaHJl
YWRTYWZlUmVmQ291bnRlZDo6cmVmOworICAgIHVzaW5nIFRocmVhZFNhZmVSZWZDb3VudGVkOjpk
ZXJlZjsKKworICAgIHZvaWQgc3RhcnRSZW5kZXJpbmcoKTsKKyAgICB2b2lkIGZpbmlzaGVkUmVu
ZGVyaW5nKGJvb2wgZGlkUmVuZGVyaW5nKSBmaW5hbDsKKworICAgIHN0YXRpYyB1bnNpZ25lZCBz
X2hhcmR3YXJlQ29udGV4dENvdW50OworCisgICAgLy8gUmVzdHJpY3Rpb25zIHRvIGNoYW5nZSBk
ZWZhdWx0IGJlaGF2aW9ycy4KKyAgICBlbnVtIEJlaGF2aW9yUmVzdHJpY3Rpb25GbGFncyB7Cisg
ICAgICAgIE5vUmVzdHJpY3Rpb25zID0gMCwKKyAgICAgICAgUmVxdWlyZVVzZXJHZXN0dXJlRm9y
QXVkaW9TdGFydFJlc3RyaWN0aW9uID0gMSA8PCAwLAorICAgICAgICBSZXF1aXJlUGFnZUNvbnNl
bnRGb3JBdWRpb1N0YXJ0UmVzdHJpY3Rpb24gPSAxIDw8IDEsCisgICAgfTsKKyAgICB0eXBlZGVm
IHVuc2lnbmVkIEJlaGF2aW9yUmVzdHJpY3Rpb25zOworCisgICAgQmVoYXZpb3JSZXN0cmljdGlv
bnMgYmVoYXZpb3JSZXN0cmljdGlvbnMoKSBjb25zdCB7IHJldHVybiBtX3Jlc3RyaWN0aW9uczsg
fQorICAgIHZvaWQgYWRkQmVoYXZpb3JSZXN0cmljdGlvbihCZWhhdmlvclJlc3RyaWN0aW9ucyBy
ZXN0cmljdGlvbikgeyBtX3Jlc3RyaWN0aW9ucyB8PSByZXN0cmljdGlvbjsgfQorICAgIHZvaWQg
cmVtb3ZlQmVoYXZpb3JSZXN0cmljdGlvbihCZWhhdmlvclJlc3RyaWN0aW9ucyByZXN0cmljdGlv
bikgeyBtX3Jlc3RyaWN0aW9ucyAmPSB+cmVzdHJpY3Rpb247IH0KKworICAgIHZvaWQgaXNQbGF5
aW5nQXVkaW9EaWRDaGFuZ2UoKSBmaW5hbDsKKworICAgIHZvaWQgbm9kZVdpbGxCZWdpblBsYXli
YWNrKCkgZmluYWw7CisKKyNpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKKyAgICBjb25zdCBMb2dn
ZXImIGxvZ2dlcigpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fbG9nZ2VyLmdldCgpOyB9CisgICAg
Y29uc3Qgdm9pZCogbG9nSWRlbnRpZmllcigpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fbG9nSWRl
bnRpZmllcjsgfQorICAgIFdURkxvZ0NoYW5uZWwmIGxvZ0NoYW5uZWwoKSBjb25zdCBmaW5hbDsK
KyAgICBjb25zdCB2b2lkKiBuZXh0QXVkaW9Ob2RlTG9nSWRlbnRpZmllcigpIGZpbmFsIHsgcmV0
dXJuIGNoaWxkTG9nSWRlbnRpZmllcihtX2xvZ0lkZW50aWZpZXIsICsrbV9uZXh0QXVkaW9Ob2Rl
SWRlbnRpZmllcik7IH0KKyAgICBjb25zdCB2b2lkKiBuZXh0QXVkaW9QYXJhbWV0ZXJMb2dJZGVu
dGlmaWVyKCkgZmluYWwgeyByZXR1cm4gY2hpbGRMb2dJZGVudGlmaWVyKG1fbG9nSWRlbnRpZmll
ciwgKyttX25leHRBdWRpb1BhcmFtZXRlcklkZW50aWZpZXIpOyB9CisjZW5kaWYKKworICAgIHZv
aWQgcG9zdFRhc2soV1RGOjpGdW5jdGlvbjx2b2lkKCk+JiYpIGZpbmFsOworICAgIGJvb2wgaXNT
dG9wcGVkKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9pc1N0b3BTY2hlZHVsZWQ7IH0KKyAgICBj
b25zdCBTZWN1cml0eU9yaWdpbiogb3JpZ2luKCkgY29uc3QgZmluYWw7CisgICAgdm9pZCBhZGRD
b25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNlLCBNZXNzYWdlTGV2ZWwsIGNvbnN0IFN0cmluZyYg
bWVzc2FnZSkgZmluYWw7CisKK3Byb3RlY3RlZDoKKyAgICBleHBsaWNpdCBXZWJLaXRBdWRpb0Nv
bnRleHQoRG9jdW1lbnQmKTsKKyAgICBXZWJLaXRBdWRpb0NvbnRleHQoRG9jdW1lbnQmLCBBdWRp
b0J1ZmZlciogcmVuZGVyVGFyZ2V0KTsKKworICAgIHN0YXRpYyBib29sIGlzU2FtcGxlUmF0ZVJh
bmdlR29vZChmbG9hdCBzYW1wbGVSYXRlKTsKKyAgICB2b2lkIGNsZWFyUGVuZGluZ0FjdGl2aXR5
KCk7CisgICAgdm9pZCBtYWtlUGVuZGluZ0FjdGl2aXR5KCk7CisKK3ByaXZhdGU6CisgICAgdm9p
ZCBjb25zdHJ1Y3RDb21tb24oKTsKKworICAgIHZvaWQgbGF6eUluaXRpYWxpemUoKTsKKyAgICB2
b2lkIHVuaW5pdGlhbGl6ZSgpOworCisgICAgYm9vbCB3aWxsQmVnaW5QbGF5YmFjaygpOworICAg
IGJvb2wgd2lsbFBhdXNlUGxheWJhY2soKTsKKworICAgIGJvb2wgdXNlckdlc3R1cmVSZXF1aXJl
ZEZvckF1ZGlvU3RhcnQoKSBjb25zdCB7IHJldHVybiAhaXNPZmZsaW5lQ29udGV4dCgpICYmIG1f
cmVzdHJpY3Rpb25zICYgUmVxdWlyZVVzZXJHZXN0dXJlRm9yQXVkaW9TdGFydFJlc3RyaWN0aW9u
OyB9CisgICAgYm9vbCBwYWdlQ29uc2VudFJlcXVpcmVkRm9yQXVkaW9TdGFydCgpIGNvbnN0IHsg
cmV0dXJuICFpc09mZmxpbmVDb250ZXh0KCkgJiYgbV9yZXN0cmljdGlvbnMgJiBSZXF1aXJlUGFn
ZUNvbnNlbnRGb3JBdWRpb1N0YXJ0UmVzdHJpY3Rpb247IH0KKworICAgIHZvaWQgc2V0U3RhdGUo
U3RhdGUpOworCisgICAgdm9pZCBjbGVhcigpOworCisgICAgdm9pZCBzY2hlZHVsZU5vZGVEZWxl
dGlvbigpOworCisgICAgdm9pZCBtZWRpYUNhblN0YXJ0KERvY3VtZW50Jikgb3ZlcnJpZGU7CisK
KyAgICAvLyBFdmVudFRhcmdldAorICAgIHZvaWQgZGlzcGF0Y2hFdmVudChFdmVudCYpIGZpbmFs
OworCisgICAgLy8gTWVkaWFQcm9kdWNlcgorICAgIE1lZGlhUHJvZHVjZXI6Ok1lZGlhU3RhdGVG
bGFncyBtZWRpYVN0YXRlKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgdm9pZCBwYWdlTXV0ZWRTdGF0
ZURpZENoYW5nZSgpIG92ZXJyaWRlOworCisgICAgLy8gVGhlIGNvbnRleHQgaXRzZWxmIGtlZXBz
IGEgcmVmZXJlbmNlIHRvIGFsbCBzb3VyY2Ugbm9kZXMuICBUaGUgc291cmNlIG5vZGVzLCB0aGVu
IHJlZmVyZW5jZSBhbGwgbm9kZXMgdGhleSdyZSBjb25uZWN0ZWQgdG8uCisgICAgLy8gSW4gdHVy
biwgdGhlc2Ugbm9kZXMgcmVmZXJlbmNlIGFsbCBub2RlcyB0aGV5J3JlIGNvbm5lY3RlZCB0by4g
IEFsbCBub2RlcyBhcmUgdWx0aW1hdGVseSBjb25uZWN0ZWQgdG8gdGhlIEF1ZGlvRGVzdGluYXRp
b25Ob2RlLgorICAgIC8vIFdoZW4gdGhlIGNvbnRleHQgZGVyZWZlcmVuY2VzIGEgc291cmNlIG5v
ZGUsIGl0IHdpbGwgYmUgZGVhY3RpdmF0ZWQgZnJvbSB0aGUgcmVuZGVyaW5nIGdyYXBoIGFsb25n
IHdpdGggYWxsIG90aGVyIG5vZGVzIGl0IGlzCisgICAgLy8gdW5pcXVlbHkgY29ubmVjdGVkIHRv
LiAgU2VlIHRoZSBBdWRpb05vZGU6OnJlZigpIGFuZCBBdWRpb05vZGU6OmRlcmVmKCkgbWV0aG9k
cyBmb3IgbW9yZSBkZXRhaWxzLgorICAgIHZvaWQgcmVmTm9kZShBdWRpb05vZGUmKTsKKyAgICB2
b2lkIGRlcmVmTm9kZShBdWRpb05vZGUmKTsKKworICAgIC8vIEFjdGl2ZURPTU9iamVjdCBBUEku
CisgICAgdm9pZCBzdXNwZW5kKFJlYXNvbkZvclN1c3BlbnNpb24pIGZpbmFsOworICAgIHZvaWQg
cmVzdW1lKCkgZmluYWw7CisgICAgdm9pZCBzdG9wKCkgb3ZlcnJpZGU7CisgICAgY29uc3QgY2hh
ciogYWN0aXZlRE9NT2JqZWN0TmFtZSgpIGNvbnN0IG92ZXJyaWRlOworCisgICAgLy8gV2hlbiB0
aGUgY29udGV4dCBnb2VzIGF3YXksIHRoZXJlIG1pZ2h0IHN0aWxsIGJlIHNvbWUgc291cmNlcyB3
aGljaCBoYXZlbid0IGZpbmlzaGVkIHBsYXlpbmcuCisgICAgLy8gTWFrZSBzdXJlIHRvIGRlcmVm
ZXJlbmNlIHRoZW0gaGVyZS4KKyAgICB2b2lkIGRlcmVmVW5maW5pc2hlZFNvdXJjZU5vZGVzKCk7
CisKKyAgICAvLyBQbGF0Zm9ybU1lZGlhU2Vzc2lvbkNsaWVudAorICAgIFBsYXRmb3JtTWVkaWFT
ZXNzaW9uOjpNZWRpYVR5cGUgbWVkaWFUeXBlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gUGxh
dGZvcm1NZWRpYVNlc3Npb246Ok1lZGlhVHlwZTo6V2ViQXVkaW87IH0KKyAgICBQbGF0Zm9ybU1l
ZGlhU2Vzc2lvbjo6TWVkaWFUeXBlIHByZXNlbnRhdGlvblR5cGUoKSBjb25zdCBvdmVycmlkZSB7
IHJldHVybiBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6TWVkaWFUeXBlOjpXZWJBdWRpbzsgfQorICAg
IHZvaWQgbWF5UmVzdW1lUGxheWJhY2soYm9vbCBzaG91bGRSZXN1bWUpIG92ZXJyaWRlOworICAg
IHZvaWQgc3VzcGVuZFBsYXliYWNrKCkgb3ZlcnJpZGU7CisgICAgYm9vbCBjYW5SZWNlaXZlUmVt
b3RlQ29udHJvbENvbW1hbmRzKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KKyAg
ICB2b2lkIGRpZFJlY2VpdmVSZW1vdGVDb250cm9sQ29tbWFuZChQbGF0Zm9ybU1lZGlhU2Vzc2lv
bjo6UmVtb3RlQ29udHJvbENvbW1hbmRUeXBlLCBjb25zdCBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6
UmVtb3RlQ29tbWFuZEFyZ3VtZW50Kikgb3ZlcnJpZGUgeyB9CisgICAgYm9vbCBzdXBwb3J0c1Nl
ZWtpbmcoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQorICAgIGJvb2wgc2hvdWxk
T3ZlcnJpZGVCYWNrZ3JvdW5kUGxheWJhY2tSZXN0cmljdGlvbihQbGF0Zm9ybU1lZGlhU2Vzc2lv
bjo6SW50ZXJydXB0aW9uVHlwZSkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KKyAg
ICBib29sIGNhblByb2R1Y2VBdWRpbygpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIHRydWU7IH0KKyAg
ICBib29sIGlzU3VzcGVuZGVkKCkgY29uc3QgZmluYWw7CisKKyAgICB2b2lkIHZpc2liaWxpdHlT
dGF0ZUNoYW5nZWQoKSBmaW5hbDsKKworICAgIGJvb2wgaXNBdWRpb0NvbnRleHQoKSBjb25zdCBm
aW5hbCB7IHJldHVybiBmYWxzZTsgfQorICAgIGJvb2wgaXNXZWJLaXRBdWRpb0NvbnRleHQoKSBj
b25zdCBmaW5hbCB7IHJldHVybiB0cnVlOyB9CisKKyAgICAvLyBFdmVudFRhcmdldAorICAgIHZv
aWQgcmVmRXZlbnRUYXJnZXQoKSBvdmVycmlkZSB7IHJlZigpOyB9CisgICAgdm9pZCBkZXJlZkV2
ZW50VGFyZ2V0KCkgb3ZlcnJpZGUgeyBkZXJlZigpOyB9CisKKyAgICB2b2lkIGhhbmRsZURpcnR5
QXVkaW9TdW1taW5nSnVuY3Rpb25zKCk7CisgICAgdm9pZCBoYW5kbGVEaXJ0eUF1ZGlvTm9kZU91
dHB1dHMoKTsKKworICAgIHZvaWQgYWRkUmVhY3Rpb24oU3RhdGUsIERPTVByb21pc2VEZWZlcnJl
ZDx2b2lkPiYmKTsKKyAgICB2b2lkIHVwZGF0ZUF1dG9tYXRpY1B1bGxOb2RlcygpOworCisjaWYg
IVJFTEVBU0VfTE9HX0RJU0FCTEVECisgICAgY29uc3QgY2hhciogbG9nQ2xhc3NOYW1lKCkgY29u
c3QgZmluYWwgeyByZXR1cm4gIldlYktpdEF1ZGlvQ29udGV4dCI7IH0KKworICAgIFJlZjxMb2dn
ZXI+IG1fbG9nZ2VyOworICAgIGNvbnN0IHZvaWQqIG1fbG9nSWRlbnRpZmllcjsKKyAgICB1aW50
NjRfdCBtX25leHRBdWRpb05vZGVJZGVudGlmaWVyIHsgMCB9OworICAgIHVpbnQ2NF90IG1fbmV4
dEF1ZGlvUGFyYW1ldGVySWRlbnRpZmllciB7IDAgfTsKKyNlbmRpZgorCisgICAgLy8gT25seSBh
Y2Nlc3NlZCBpbiB0aGUgYXVkaW8gdGhyZWFkLgorICAgIFZlY3RvcjxBdWRpb05vZGUqPiBtX2Zp
bmlzaGVkTm9kZXM7CisKKyAgICAvLyBXZSBkb24ndCB1c2UgUmVmUHRyPEF1ZGlvTm9kZT4gaGVy
ZSBiZWNhdXNlIEF1ZGlvTm9kZSBoYXMgYSBtb3JlIGNvbXBsZXggcmVmKCkgLyBkZXJlZigpIGlt
cGxlbWVudGF0aW9uCisgICAgLy8gd2l0aCBhbiBvcHRpb25hbCBhcmd1bWVudCBmb3IgcmVmVHlw
ZS4gIFdlIG5lZWQgdG8gdXNlIHRoZSBzcGVjaWFsIHJlZlR5cGU6IFJlZlR5cGVDb25uZWN0aW9u
CisgICAgLy8gRWl0aGVyIGFjY2Vzc2VkIHdoZW4gdGhlIGdyYXBoIGxvY2sgaXMgaGVsZCwgb3Ig
b24gdGhlIG1haW4gdGhyZWFkIHdoZW4gdGhlIGF1ZGlvIHRocmVhZCBoYXMgZmluaXNoZWQuCisg
ICAgVmVjdG9yPEF1ZGlvTm9kZSo+IG1fcmVmZXJlbmNlZE5vZGVzOworCisgICAgLy8gQWNjdW11
bGF0ZSBub2RlcyB3aGljaCBuZWVkIHRvIGJlIGRlbGV0ZWQgaGVyZS4KKyAgICAvLyBUaGlzIGlz
IGNvcGllZCB0byBtX25vZGVzVG9EZWxldGUgYXQgdGhlIGVuZCBvZiBhIHJlbmRlciBjeWNsZSBp
biBoYW5kbGVQb3N0UmVuZGVyVGFza3MoKSwgd2hlcmUgd2UncmUgYXNzdXJlZCBvZiBhIHN0YWJs
ZSBncmFwaAorICAgIC8vIHN0YXRlIHdoaWNoIHdpbGwgaGF2ZSBubyByZWZlcmVuY2VzIHRvIGFu
eSBvZiB0aGUgbm9kZXMgaW4gbV9ub2Rlc1RvRGVsZXRlIG9uY2UgdGhlIGNvbnRleHQgbG9jayBp
cyByZWxlYXNlZAorICAgIC8vICh3aGVuIGhhbmRsZVBvc3RSZW5kZXJUYXNrcygpIGhhcyBjb21w
bGV0ZWQpLgorICAgIFZlY3RvcjxBdWRpb05vZGUqPiBtX25vZGVzTWFya2VkRm9yRGVsZXRpb247
CisKKyAgICAvLyBUaGV5IHdpbGwgYmUgc2NoZWR1bGVkIGZvciBkZWxldGlvbiAob24gdGhlIG1h
aW4gdGhyZWFkKSBhdCB0aGUgZW5kIG9mIGEgcmVuZGVyIGN5Y2xlIChpbiByZWFsdGltZSB0aHJl
YWQpLgorICAgIFZlY3RvcjxBdWRpb05vZGUqPiBtX25vZGVzVG9EZWxldGU7CisKKyAgICBib29s
IG1faXNEZWxldGlvblNjaGVkdWxlZCB7IGZhbHNlIH07CisgICAgYm9vbCBtX2lzU3RvcFNjaGVk
dWxlZCB7IGZhbHNlIH07CisgICAgYm9vbCBtX2lzSW5pdGlhbGl6ZWQgeyBmYWxzZSB9OworICAg
IGJvb2wgbV9pc0F1ZGlvVGhyZWFkRmluaXNoZWQgeyBmYWxzZSB9OworICAgIGJvb2wgbV9hdXRv
bWF0aWNQdWxsTm9kZXNOZWVkVXBkYXRpbmcgeyBmYWxzZSB9OworICAgIGJvb2wgbV9pc09mZmxp
bmVDb250ZXh0IHsgZmFsc2UgfTsKKworICAgIC8vIE9ubHkgYWNjZXNzZWQgd2hlbiB0aGUgZ3Jh
cGggbG9jayBpcyBoZWxkLgorICAgIEhhc2hTZXQ8QXVkaW9TdW1taW5nSnVuY3Rpb24qPiBtX2Rp
cnR5U3VtbWluZ0p1bmN0aW9uczsKKyAgICBIYXNoU2V0PEF1ZGlvTm9kZU91dHB1dCo+IG1fZGly
dHlBdWRpb05vZGVPdXRwdXRzOworCisgICAgLy8gRm9yIHRoZSBzYWtlIG9mIHRocmVhZCBzYWZl
dHksIHdlIG1haW50YWluIGEgc2VwZXJhdGUgVmVjdG9yIG9mIGF1dG9tYXRpYyBwdWxsIG5vZGVz
IGZvciByZW5kZXJpbmcgaW4gbV9yZW5kZXJpbmdBdXRvbWF0aWNQdWxsTm9kZXMuCisgICAgLy8g
SXQgd2lsbCBiZSBjb3BpZWQgZnJvbSBtX2F1dG9tYXRpY1B1bGxOb2RlcyBieSB1cGRhdGVBdXRv
bWF0aWNQdWxsTm9kZXMoKSBhdCB0aGUgdmVyeSBzdGFydCBvciBlbmQgb2YgdGhlIHJlbmRlcmlu
ZyBxdWFudHVtLgorICAgIEhhc2hTZXQ8QXVkaW9Ob2RlKj4gbV9hdXRvbWF0aWNQdWxsTm9kZXM7
CisgICAgVmVjdG9yPEF1ZGlvTm9kZSo+IG1fcmVuZGVyaW5nQXV0b21hdGljUHVsbE5vZGVzOwor
ICAgIC8vIE9ubHkgYWNjZXNzZWQgaW4gdGhlIGF1ZGlvIHRocmVhZC4KKyAgICBWZWN0b3I8QXVk
aW9Ob2RlKj4gbV9kZWZlcnJlZEZpbmlzaERlcmVmTGlzdDsKKyAgICBWZWN0b3I8VmVjdG9yPERP
TVByb21pc2VEZWZlcnJlZDx2b2lkPj4+IG1fc3RhdGVSZWFjdGlvbnM7CisKKyAgICBzdGQ6OnVu
aXF1ZV9wdHI8UGxhdGZvcm1NZWRpYVNlc3Npb24+IG1fbWVkaWFTZXNzaW9uOworICAgIFVuaXF1
ZVJlZjxNYWluVGhyZWFkR2VuZXJpY0V2ZW50UXVldWU+IG1fZXZlbnRRdWV1ZTsKKworICAgIFJl
ZlB0cjxBdWRpb0J1ZmZlcj4gbV9yZW5kZXJUYXJnZXQ7CisgICAgUmVmUHRyPEF1ZGlvRGVzdGlu
YXRpb25Ob2RlPiBtX2Rlc3RpbmF0aW9uTm9kZTsKKyAgICBSZWZQdHI8QXVkaW9MaXN0ZW5lcj4g
bV9saXN0ZW5lcjsKKworICAgIHVuc2lnbmVkIG1fY29ubmVjdGlvbkNvdW50IHsgMCB9OworCisg
ICAgLy8gR3JhcGggbG9ja2luZy4KKyAgICBMb2NrIG1fY29udGV4dEdyYXBoTXV0ZXg7CisgICAg
Ly8gRklYTUU6IFVzaW5nIHZvbGF0aWxlIHNlZW1zIGluY29ycmVjdC4KKyAgICAvLyBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTgwMzMyCisgICAgVGhyZWFkKiB2b2xh
dGlsZSBtX2F1ZGlvVGhyZWFkIHsgbnVsbHB0ciB9OworICAgIFRocmVhZCogdm9sYXRpbGUgbV9n
cmFwaE93bmVyVGhyZWFkIHsgbnVsbHB0ciB9OyAvLyBpZiB0aGUgbG9jayBpcyBoZWxkIHRoZW4g
dGhpcyBpcyB0aGUgdGhyZWFkIHdoaWNoIG93bnMgaXQsIG90aGVyd2lzZSA9PSBudWxscHRyLgor
CisgICAgc3RkOjp1bmlxdWVfcHRyPEFzeW5jQXVkaW9EZWNvZGVyPiBtX2F1ZGlvRGVjb2RlcjsK
KworICAgIC8vIFRoaXMgaXMgY29uc2lkZXJpbmcgMzIgaXMgbGFyZ2UgZW5vdWdoIGZvciBtdWx0
aXBsZSBjaGFubmVscyBhdWRpby4KKyAgICAvLyBJdCBpcyBzb21ld2hhdCBhcmJpdHJhcnkgYW5k
IGNvdWxkIGJlIGluY3JlYXNlZCBpZiBuZWNlc3NhcnkuCisgICAgZW51bSB7IE1heE51bWJlck9m
Q2hhbm5lbHMgPSAzMiB9OworCisgICAgLy8gTnVtYmVyIG9mIEF1ZGlvQnVmZmVyU291cmNlTm9k
ZXMgdGhhdCBhcmUgYWN0aXZlIChwbGF5aW5nKS4KKyAgICBzdGQ6OmF0b21pYzxpbnQ+IG1fYWN0
aXZlU291cmNlQ291bnQgeyAwIH07CisKKyAgICBCZWhhdmlvclJlc3RyaWN0aW9ucyBtX3Jlc3Ry
aWN0aW9ucyB7IE5vUmVzdHJpY3Rpb25zIH07CisKKyAgICBTdGF0ZSBtX3N0YXRlIHsgU3RhdGU6
OlN1c3BlbmRlZCB9OworICAgIFJlZlB0cjxQZW5kaW5nQWN0aXZpdHk8V2ViS2l0QXVkaW9Db250
ZXh0Pj4gbV9wZW5kaW5nQWN0aXZpdHk7Cit9OworCitpbmxpbmUgQXVkaW9Db250ZXh0U3RhdGUg
V2ViS2l0QXVkaW9Db250ZXh0OjpzdGF0ZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fc3RhdGU7
Cit9CisKK30gLy8gV2ViQ29yZQorCitTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0JFR0lOKFdlYkNv
cmU6OldlYktpdEF1ZGlvQ29udGV4dCkKKyAgICBzdGF0aWMgYm9vbCBpc1R5cGUoY29uc3QgV2Vi
Q29yZTo6QXVkaW9Db250ZXh0QmFzZSYgY29udGV4dCkgeyByZXR1cm4gY29udGV4dC5pc1dlYktp
dEF1ZGlvQ29udGV4dCgpOyB9CitTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0VORCgpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1dlYktpdEF1ZGlvQ29udGV4dC5p
ZGwgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1dlYktpdEF1ZGlvQ29udGV4dC5p
ZGwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLmVjYzcxZDA3NzhkCi0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9XZWJLaXRB
dWRpb0NvbnRleHQuaWRsCkBAIC0wLDAgKzEsOTQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTAsIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAg
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJF
CisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04KKyAqIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUworICogU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworWworICAgIEFjdGl2
ZURPTU9iamVjdCwKKyAgICBDb25kaXRpb25hbD1XRUJfQVVESU8sCisgICAgQ29uc3RydWN0b3Is
CisgICAgQ29uc3RydWN0b3JDYWxsV2l0aD1Eb2N1bWVudCwKKyAgICBDb25zdHJ1Y3Rvck1heVRo
cm93RXhjZXB0aW9uLAorICAgIEVuYWJsZWRCeVNldHRpbmc9V2ViQXVkaW8sCisgICAgRXhwb3J0
TWFjcm89V0VCQ09SRV9FWFBPUlQsCisgICAgSW50ZXJmYWNlTmFtZT13ZWJraXRBdWRpb0NvbnRl
eHQsCitdIGludGVyZmFjZSBXZWJLaXRBdWRpb0NvbnRleHQgOiBFdmVudFRhcmdldCB7CisgICAg
Ly8gQWxsIHJlbmRlcmVkIGF1ZGlvIHVsdGltYXRlbHkgY29ubmVjdHMgdG8gZGVzdGluYXRpb24s
IHdoaWNoIHJlcHJlc2VudHMgdGhlIGF1ZGlvIGhhcmR3YXJlLgorICAgIHJlYWRvbmx5IGF0dHJp
YnV0ZSBBdWRpb0Rlc3RpbmF0aW9uTm9kZSBkZXN0aW5hdGlvbjsKKworICAgIC8vIEFsbCBzY2hl
ZHVsZWQgdGltZXMgYXJlIHJlbGF0aXZlIHRvIHRoaXMgdGltZSBpbiBzZWNvbmRzLgorICAgIHJl
YWRvbmx5IGF0dHJpYnV0ZSB1bnJlc3RyaWN0ZWQgZG91YmxlIGN1cnJlbnRUaW1lOworCisgICAg
Ly8gQWxsIEF1ZGlvTm9kZXMgaW4gdGhlIGNvbnRleHQgcnVuIGF0IHRoaXMgc2FtcGxlLXJhdGUg
KHNhbXBsZS1mcmFtZXMgcGVyIHNlY29uZCkuCisgICAgcmVhZG9ubHkgYXR0cmlidXRlIHVucmVz
dHJpY3RlZCBmbG9hdCBzYW1wbGVSYXRlOworCisgICAgLy8gQWxsIHBhbm5pbmcgaXMgcmVsYXRp
dmUgdG8gdGhpcyBsaXN0ZW5lci4KKyAgICByZWFkb25seSBhdHRyaWJ1dGUgQXVkaW9MaXN0ZW5l
ciBsaXN0ZW5lcjsKKworICAgIFtJbXBsZW1lbnRlZEFzPXN1c3BlbmRSZW5kZXJpbmddIFByb21p
c2U8dm9pZD4gc3VzcGVuZCgpOworICAgIFtJbXBsZW1lbnRlZEFzPXJlc3VtZVJlbmRlcmluZ10g
UHJvbWlzZTx2b2lkPiByZXN1bWUoKTsKKyAgICBQcm9taXNlPHZvaWQ+IGNsb3NlKCk7CisKKyAg
ICByZWFkb25seSBhdHRyaWJ1dGUgQXVkaW9Db250ZXh0U3RhdGUgc3RhdGU7CisgICAgYXR0cmli
dXRlIEV2ZW50SGFuZGxlciBvbnN0YXRlY2hhbmdlOworCisgICAgLy8gTnVtYmVyIG9mIEF1ZGlv
QnVmZmVyU291cmNlTm9kZXMgdGhhdCBhcmUgY3VycmVudGx5IHBsYXlpbmcuCisgICAgcmVhZG9u
bHkgYXR0cmlidXRlIHVuc2lnbmVkIGxvbmcgYWN0aXZlU291cmNlQ291bnQ7CisKKyAgICBbTWF5
VGhyb3dFeGNlcHRpb25dIEF1ZGlvQnVmZmVyIGNyZWF0ZUJ1ZmZlcih1bnNpZ25lZCBsb25nIG51
bWJlck9mQ2hhbm5lbHMsIHVuc2lnbmVkIGxvbmcgbnVtYmVyT2ZGcmFtZXMsIHVucmVzdHJpY3Rl
ZCBmbG9hdCBzYW1wbGVSYXRlKTsKKyAgICBbTWF5VGhyb3dFeGNlcHRpb25dIEF1ZGlvQnVmZmVy
IGNyZWF0ZUJ1ZmZlcihBcnJheUJ1ZmZlciBidWZmZXIsIGJvb2xlYW4gbWl4VG9Nb25vKTsKKwor
ICAgIC8vIEFzeW5jaHJvbm91cyBhdWRpbyBmaWxlIGRhdGEgZGVjb2RpbmcuCisgICAgLy8gRklY
TUU6IHN1Y2Nlc3NDYWxsYmFjayBzaG91bGQgYmUgb3B0aW9uYWwgYW5kIHRoZSBjYWxsYmFja3Mg
c2hvdWxkIG5vdCBiZSBudWxsYWJsZS4gVGhpcyBzaG91bGQgYWxzbyByZXR1cm4gYSBQcm9taXNl
LgorICAgIHZvaWQgZGVjb2RlQXVkaW9EYXRhKEFycmF5QnVmZmVyIGF1ZGlvRGF0YSwgQXVkaW9C
dWZmZXJDYWxsYmFjaz8gc3VjY2Vzc0NhbGxiYWNrLCBvcHRpb25hbCBBdWRpb0J1ZmZlckNhbGxi
YWNrPyBlcnJvckNhbGxiYWNrKTsKKworICAgIC8vIFNvdXJjZXMKKyAgICBbTWF5VGhyb3dFeGNl
cHRpb25dIEF1ZGlvQnVmZmVyU291cmNlTm9kZSBjcmVhdGVCdWZmZXJTb3VyY2UoKTsKKworICAg
IFtDb25kaXRpb25hbD1WSURFTywgTWF5VGhyb3dFeGNlcHRpb25dIE1lZGlhRWxlbWVudEF1ZGlv
U291cmNlTm9kZSBjcmVhdGVNZWRpYUVsZW1lbnRTb3VyY2UoSFRNTE1lZGlhRWxlbWVudCBtZWRp
YUVsZW1lbnQpOworCisgICAgW0NvbmRpdGlvbmFsPU1FRElBX1NUUkVBTSwgTWF5VGhyb3dFeGNl
cHRpb25dIE1lZGlhU3RyZWFtQXVkaW9Tb3VyY2VOb2RlIGNyZWF0ZU1lZGlhU3RyZWFtU291cmNl
KE1lZGlhU3RyZWFtIG1lZGlhU3RyZWFtKTsKKyAgICBbQ29uZGl0aW9uYWw9TUVESUFfU1RSRUFN
LCBNYXlUaHJvd0V4Y2VwdGlvbl0gTWVkaWFTdHJlYW1BdWRpb0Rlc3RpbmF0aW9uTm9kZSBjcmVh
dGVNZWRpYVN0cmVhbURlc3RpbmF0aW9uKCk7CisKKyAgICAvLyBQcm9jZXNzaW5nIG5vZGVzCisg
ICAgW01heVRocm93RXhjZXB0aW9uXSBHYWluTm9kZSBjcmVhdGVHYWluKCk7CisgICAgW01heVRo
cm93RXhjZXB0aW9uXSBEZWxheU5vZGUgY3JlYXRlRGVsYXkob3B0aW9uYWwgdW5yZXN0cmljdGVk
IGRvdWJsZSBtYXhEZWxheVRpbWUgPSAxKTsKKyAgICBbTWF5VGhyb3dFeGNlcHRpb25dIEJpcXVh
ZEZpbHRlck5vZGUgY3JlYXRlQmlxdWFkRmlsdGVyKCk7CisgICAgW01heVRocm93RXhjZXB0aW9u
XSBXYXZlU2hhcGVyTm9kZSBjcmVhdGVXYXZlU2hhcGVyKCk7CisgICAgW01heVRocm93RXhjZXB0
aW9uXSBXZWJLaXRBdWRpb1Bhbm5lck5vZGUgY3JlYXRlUGFubmVyKCk7CisgICAgW01heVRocm93
RXhjZXB0aW9uXSBDb252b2x2ZXJOb2RlIGNyZWF0ZUNvbnZvbHZlcigpOworICAgIFtNYXlUaHJv
d0V4Y2VwdGlvbl0gRHluYW1pY3NDb21wcmVzc29yTm9kZSBjcmVhdGVEeW5hbWljc0NvbXByZXNz
b3IoKTsKKyAgICBbTWF5VGhyb3dFeGNlcHRpb25dIEFuYWx5c2VyTm9kZSBjcmVhdGVBbmFseXNl
cigpOworICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gU2NyaXB0UHJvY2Vzc29yTm9kZSBjcmVhdGVT
Y3JpcHRQcm9jZXNzb3Iob3B0aW9uYWwgdW5zaWduZWQgbG9uZyBidWZmZXJTaXplID0gMCwgb3B0
aW9uYWwgdW5zaWduZWQgbG9uZyBudW1iZXJPZklucHV0Q2hhbm5lbHMgPSAyLCBvcHRpb25hbCB1
bnNpZ25lZCBsb25nIG51bWJlck9mT3V0cHV0Q2hhbm5lbHMgPSAyKTsKKyAgICBbTWF5VGhyb3dF
eGNlcHRpb25dIE9zY2lsbGF0b3JOb2RlIGNyZWF0ZU9zY2lsbGF0b3IoKTsKKyAgICBbTWF5VGhy
b3dFeGNlcHRpb25dIFBlcmlvZGljV2F2ZSBjcmVhdGVQZXJpb2RpY1dhdmUoRmxvYXQzMkFycmF5
IHJlYWwsIEZsb2F0MzJBcnJheSBpbWFnKTsKKworICAgIC8vIENoYW5uZWwgc3BsaXR0aW5nIGFu
ZCBtZXJnaW5nCisgICAgW01heVRocm93RXhjZXB0aW9uXSBDaGFubmVsU3BsaXR0ZXJOb2RlIGNy
ZWF0ZUNoYW5uZWxTcGxpdHRlcihvcHRpb25hbCB1bnNpZ25lZCBsb25nIG51bWJlck9mT3V0cHV0
cyA9IDYpOworICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gQ2hhbm5lbE1lcmdlck5vZGUgY3JlYXRl
Q2hhbm5lbE1lcmdlcihvcHRpb25hbCB1bnNpZ25lZCBsb25nIG51bWJlck9mSW5wdXRzID0gNik7
CisKKyAgICAvLyBPZmZsaW5lIHJlbmRlcmluZworICAgIC8vIHZvaWQgcHJlcGFyZU9mZmxpbmVC
dWZmZXJSZW5kZXJpbmcodW5zaWduZWQgbG9uZyBudW1iZXJPZkNoYW5uZWxzLCB1bnNpZ25lZCBs
b25nIG51bWJlck9mRnJhbWVzLCB1bnJlc3RyaWN0ZWQgZmxvYXQgc2FtcGxlUmF0ZSk7CisgICAg
YXR0cmlidXRlIEV2ZW50SGFuZGxlciBvbmNvbXBsZXRlOworICAgIHZvaWQgc3RhcnRSZW5kZXJp
bmcoKTsKK307CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1dl
YktpdEF1ZGlvUGFubmVyTm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlv
L1dlYktpdEF1ZGlvUGFubmVyTm9kZS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAuLjI1OGY0NWU3Y2ZkCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJhdWRpby9XZWJLaXRBdWRpb1Bhbm5lck5vZGUuY3BwCkBAIC0wLDAgKzEsMzYz
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwLCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkK
KyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04KKyAqIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UworICogU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIldlYktpdEF1
ZGlvUGFubmVyTm9kZS5oIgorCisjaWYgRU5BQkxFKFdFQl9BVURJTykKKworI2luY2x1ZGUgIkF1
ZGlvQnVmZmVyU291cmNlTm9kZS5oIgorI2luY2x1ZGUgIkF1ZGlvQnVzLmgiCisjaW5jbHVkZSAi
QXVkaW9Db250ZXh0LmgiCisjaW5jbHVkZSAiQXVkaW9Ob2RlSW5wdXQuaCIKKyNpbmNsdWRlICJB
dWRpb05vZGVPdXRwdXQuaCIKKyNpbmNsdWRlICJIUlRGRGF0YWJhc2VMb2FkZXIuaCIKKyNpbmNs
dWRlICJIUlRGUGFubmVyLmgiCisjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgor
I2luY2x1ZGUgPHd0Zi9Jc29NYWxsb2NJbmxpbmVzLmg+CisjaW5jbHVkZSA8d3RmL01hdGhFeHRy
YXMuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitXVEZfTUFLRV9JU09fQUxMT0NBVEVEX0lN
UEwoV2ViS2l0QXVkaW9QYW5uZXJOb2RlKTsKKworc3RhdGljIHZvaWQgZml4TkFOcyhkb3VibGUg
JngpCit7CisgICAgaWYgKHN0ZDo6aXNuYW4oeCkgfHwgc3RkOjppc2luZih4KSkKKyAgICAgICAg
eCA9IDAuMDsKK30KKworV2ViS2l0QXVkaW9QYW5uZXJOb2RlOjpXZWJLaXRBdWRpb1Bhbm5lck5v
ZGUoV2ViS2l0QXVkaW9Db250ZXh0JiBjb250ZXh0LCBmbG9hdCBzYW1wbGVSYXRlKQorICAgIDog
UGFubmVyTm9kZUJhc2UoY29udGV4dCwgc2FtcGxlUmF0ZSkKKyAgICAsIG1fcGFubmluZ01vZGVs
KFBhbm5pbmdNb2RlbFR5cGU6OkhSVEYpCisgICAgLCBtX2xhc3RHYWluKC0xLjApCisgICAgLCBt
X2Nvbm5lY3Rpb25Db3VudCgwKQoreworICAgIHNldE5vZGVUeXBlKE5vZGVUeXBlUGFubmVyKTsK
KworICAgIC8vIExvYWQgdGhlIEhSVEYgZGF0YWJhc2UgYXN5bmNocm9ub3VzbHkgc28gd2UgZG9u
J3QgYmxvY2sgdGhlIEphdmFzY3JpcHQgdGhyZWFkIHdoaWxlIGNyZWF0aW5nIHRoZSBIUlRGIGRh
dGFiYXNlLgorICAgIG1faHJ0ZkRhdGFiYXNlTG9hZGVyID0gSFJURkRhdGFiYXNlTG9hZGVyOjpj
cmVhdGVBbmRMb2FkQXN5bmNocm9ub3VzbHlJZk5lY2Vzc2FyeShjb250ZXh0LnNhbXBsZVJhdGUo
KSk7CisKKyAgICBhZGRJbnB1dChtYWtlVW5pcXVlPEF1ZGlvTm9kZUlucHV0Pih0aGlzKSk7Cisg
ICAgYWRkT3V0cHV0KG1ha2VVbmlxdWU8QXVkaW9Ob2RlT3V0cHV0Pih0aGlzLCAyKSk7CisKKyAg
ICAvLyBOb2RlLXNwZWNpZmljIGRlZmF1bHQgbWl4aW5nIHJ1bGVzLgorICAgIG1fY2hhbm5lbENv
dW50ID0gMjsKKyAgICBtX2NoYW5uZWxDb3VudE1vZGUgPSBDbGFtcGVkTWF4OworICAgIG1fY2hh
bm5lbEludGVycHJldGF0aW9uID0gQXVkaW9CdXM6OlNwZWFrZXJzOworCisgICAgbV9kaXN0YW5j
ZUdhaW4gPSBBdWRpb1BhcmFtOjpjcmVhdGUoY29udGV4dCwgImRpc3RhbmNlR2FpbiIsIDEuMCwg
MC4wLCAxLjApOworICAgIG1fY29uZUdhaW4gPSBBdWRpb1BhcmFtOjpjcmVhdGUoY29udGV4dCwg
ImNvbmVHYWluIiwgMS4wLCAwLjAsIDEuMCk7CisKKyAgICBtX3Bvc2l0aW9uID0gRmxvYXRQb2lu
dDNEKDAsIDAsIDApOworICAgIG1fb3JpZW50YXRpb24gPSBGbG9hdFBvaW50M0QoMSwgMCwgMCk7
CisgICAgbV92ZWxvY2l0eSA9IEZsb2F0UG9pbnQzRCgwLCAwLCAwKTsKKworICAgIGluaXRpYWxp
emUoKTsKK30KKworV2ViS2l0QXVkaW9QYW5uZXJOb2RlOjp+V2ViS2l0QXVkaW9QYW5uZXJOb2Rl
KCkKK3sKKyAgICB1bmluaXRpYWxpemUoKTsKK30KKwordm9pZCBXZWJLaXRBdWRpb1Bhbm5lck5v
ZGU6OnB1bGxJbnB1dHMoc2l6ZV90IGZyYW1lc1RvUHJvY2VzcykKK3sKKyAgICAvLyBXZSBvdmVy
cmlkZSBwdWxsSW5wdXRzKCksIHNvIHdlIGNhbiBkZXRlY3QgbmV3IEF1ZGlvU291cmNlTm9kZXMg
d2hpY2ggaGF2ZSBjb25uZWN0ZWQgdG8gdXMgd2hlbiBuZXcgY29ubmVjdGlvbnMgYXJlIG1hZGUu
CisgICAgLy8gVGhlc2UgQXVkaW9Tb3VyY2VOb2RlcyBuZWVkIHRvIGJlIG1hZGUgYXdhcmUgb2Yg
b3VyIGV4aXN0ZW5jZSBpbiBvcmRlciB0byBoYW5kbGUgZG9wcGxlciBzaGlmdCBwaXRjaCBjaGFu
Z2VzLgorICAgIGlmIChtX2Nvbm5lY3Rpb25Db3VudCAhPSBjb250ZXh0KCkuY29ubmVjdGlvbkNv
dW50KCkpIHsKKyAgICAgICAgbV9jb25uZWN0aW9uQ291bnQgPSBjb250ZXh0KCkuY29ubmVjdGlv
bkNvdW50KCk7CisKKyAgICAgICAgLy8gUmVjdXJzaXZlbHkgZ28gdGhyb3VnaCBhbGwgbm9kZXMg
Y29ubmVjdGVkIHRvIHVzLgorICAgICAgICBIYXNoU2V0PEF1ZGlvTm9kZSo+IHZpc2l0ZWROb2Rl
czsKKyAgICAgICAgbm90aWZ5QXVkaW9Tb3VyY2VzQ29ubmVjdGVkVG9Ob2RlKHRoaXMsIHZpc2l0
ZWROb2Rlcyk7CisgICAgfQorCisgICAgQXVkaW9Ob2RlOjpwdWxsSW5wdXRzKGZyYW1lc1RvUHJv
Y2Vzcyk7Cit9CisKK3ZvaWQgV2ViS2l0QXVkaW9QYW5uZXJOb2RlOjpwcm9jZXNzKHNpemVfdCBm
cmFtZXNUb1Byb2Nlc3MpCit7CisgICAgQXVkaW9CdXMqIGRlc3RpbmF0aW9uID0gb3V0cHV0KDAp
LT5idXMoKTsKKworICAgIGlmICghaXNJbml0aWFsaXplZCgpIHx8ICFpbnB1dCgwKS0+aXNDb25u
ZWN0ZWQoKSB8fCAhbV9wYW5uZXIuZ2V0KCkpIHsKKyAgICAgICAgZGVzdGluYXRpb24tPnplcm8o
KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIEF1ZGlvQnVzKiBzb3VyY2UgPSBpbnB1
dCgwKS0+YnVzKCk7CisgICAgaWYgKCFzb3VyY2UpIHsKKyAgICAgICAgZGVzdGluYXRpb24tPnpl
cm8oKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIC8vIEhSVEZEYXRhYmFzZSBzaG91
bGQgYmUgbG9hZGVkIGJlZm9yZSBwcm9jZWVkaW5nIGZvciBvZmZsaW5lIGF1ZGlvIGNvbnRleHQg
d2hlbiBwYW5uaW5nTW9kZWwoKSBpcyAiSFJURiIuCisgICAgaWYgKHBhbm5pbmdNb2RlbCgpID09
IFBhbm5pbmdNb2RlbFR5cGU6OkhSVEYgJiYgIW1faHJ0ZkRhdGFiYXNlTG9hZGVyLT5pc0xvYWRl
ZCgpKSB7CisgICAgICAgIGlmIChjb250ZXh0KCkuaXNPZmZsaW5lQ29udGV4dCgpKQorICAgICAg
ICAgICAgbV9ocnRmRGF0YWJhc2VMb2FkZXItPndhaXRGb3JMb2FkZXJUaHJlYWRDb21wbGV0aW9u
KCk7CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgZGVzdGluYXRpb24tPnplcm8oKTsKKyAg
ICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgIH0KKworICAgIC8vIFRoZSBhdWRpbyB0
aHJlYWQgY2FuJ3QgYmxvY2sgb24gdGhpcyBsb2NrLCBzbyB3ZSB1c2Ugc3RkOjp0cnlfdG9fbG9j
ayBpbnN0ZWFkLgorICAgIHN0ZDo6dW5pcXVlX2xvY2s8TG9jaz4gbG9jayhtX3Bhbm5lck11dGV4
LCBzdGQ6OnRyeV90b19sb2NrKTsKKyAgICBpZiAoIWxvY2sub3duc19sb2NrKCkpIHsKKyAgICAg
ICAgLy8gVG9vIGJhZCAtIFRoZSB0cnlfbG9jaygpIGZhaWxlZC4gV2UgbXVzdCBiZSBpbiB0aGUg
bWlkZGxlIG9mIGNoYW5naW5nIHRoZSBwYW5uZXIuCisgICAgICAgIGRlc3RpbmF0aW9uLT56ZXJv
KCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICAvLyBBcHBseSB0aGUgcGFubmluZyBl
ZmZlY3QuCisgICAgZG91YmxlIGF6aW11dGg7CisgICAgZG91YmxlIGVsZXZhdGlvbjsKKyAgICBn
ZXRBemltdXRoRWxldmF0aW9uKCZhemltdXRoLCAmZWxldmF0aW9uKTsKKyAgICBtX3Bhbm5lci0+
cGFuKGF6aW11dGgsIGVsZXZhdGlvbiwgc291cmNlLCBkZXN0aW5hdGlvbiwgZnJhbWVzVG9Qcm9j
ZXNzKTsKKworICAgIC8vIEdldCB0aGUgZGlzdGFuY2UgYW5kIGNvbmUgZ2Fpbi4KKyAgICBkb3Vi
bGUgdG90YWxHYWluID0gZGlzdGFuY2VDb25lR2FpbigpOworCisgICAgLy8gU25hcCB0byBkZXNp
cmVkIGdhaW4gYXQgdGhlIGJlZ2lubmluZy4KKyAgICBpZiAobV9sYXN0R2FpbiA9PSAtMS4wKQor
ICAgICAgICBtX2xhc3RHYWluID0gdG90YWxHYWluOworCisgICAgLy8gQXBwbHkgZ2FpbiBpbi1w
bGFjZSB3aXRoIGRlLXppcHBlcmluZy4KKyAgICBkZXN0aW5hdGlvbi0+Y29weVdpdGhHYWluRnJv
bSgqZGVzdGluYXRpb24sICZtX2xhc3RHYWluLCB0b3RhbEdhaW4pOworfQorCit2b2lkIFdlYktp
dEF1ZGlvUGFubmVyTm9kZTo6cmVzZXQoKQoreworICAgIG1fbGFzdEdhaW4gPSAtMS4wOyAvLyBm
b3JjZSB0byBzbmFwIHRvIGluaXRpYWwgZ2FpbgorICAgIGlmIChtX3Bhbm5lci5nZXQoKSkKKyAg
ICAgICAgbV9wYW5uZXItPnJlc2V0KCk7Cit9CisKK3ZvaWQgV2ViS2l0QXVkaW9QYW5uZXJOb2Rl
Ojppbml0aWFsaXplKCkKK3sKKyAgICBpZiAoaXNJbml0aWFsaXplZCgpKQorICAgICAgICByZXR1
cm47CisKKyAgICBtX3Bhbm5lciA9IFBhbm5lcjo6Y3JlYXRlKG1fcGFubmluZ01vZGVsLCBzYW1w
bGVSYXRlKCksIG1faHJ0ZkRhdGFiYXNlTG9hZGVyLmdldCgpKTsKKworICAgIEF1ZGlvTm9kZTo6
aW5pdGlhbGl6ZSgpOworfQorCit2b2lkIFdlYktpdEF1ZGlvUGFubmVyTm9kZTo6dW5pbml0aWFs
aXplKCkKK3sKKyAgICBpZiAoIWlzSW5pdGlhbGl6ZWQoKSkKKyAgICAgICAgcmV0dXJuOworCisg
ICAgbV9wYW5uZXIgPSBudWxscHRyOworICAgIEF1ZGlvTm9kZTo6dW5pbml0aWFsaXplKCk7Cit9
CisKK0F1ZGlvTGlzdGVuZXIqIFdlYktpdEF1ZGlvUGFubmVyTm9kZTo6bGlzdGVuZXIoKQorewor
ICAgIHJldHVybiBjb250ZXh0KCkubGlzdGVuZXIoKTsKK30KKwordm9pZCBXZWJLaXRBdWRpb1Bh
bm5lck5vZGU6OnNldFBhbm5pbmdNb2RlbChQYW5uaW5nTW9kZWxUeXBlIG1vZGVsKQoreworICAg
IGlmICghbV9wYW5uZXIuZ2V0KCkgfHwgbW9kZWwgIT0gbV9wYW5uaW5nTW9kZWwpIHsKKyAgICAg
ICAgLy8gVGhpcyBzeW5jaHJvbml6ZXMgd2l0aCBwcm9jZXNzKCkuCisgICAgICAgIGF1dG8gbG9j
a2VyID0gaG9sZExvY2sobV9wYW5uZXJNdXRleCk7CisKKyAgICAgICAgbV9wYW5uZXIgPSBQYW5u
ZXI6OmNyZWF0ZShtb2RlbCwgc2FtcGxlUmF0ZSgpLCBtX2hydGZEYXRhYmFzZUxvYWRlci5nZXQo
KSk7CisgICAgICAgIG1fcGFubmluZ01vZGVsID0gbW9kZWw7CisgICAgfQorfQorCitEaXN0YW5j
ZU1vZGVsVHlwZSBXZWJLaXRBdWRpb1Bhbm5lck5vZGU6OmRpc3RhbmNlTW9kZWwoKSBjb25zdAor
eworICAgIHJldHVybiBjb25zdF9jYXN0PFdlYktpdEF1ZGlvUGFubmVyTm9kZSo+KHRoaXMpLT5t
X2Rpc3RhbmNlRWZmZWN0Lm1vZGVsKCk7Cit9CisKK3ZvaWQgV2ViS2l0QXVkaW9QYW5uZXJOb2Rl
OjpzZXREaXN0YW5jZU1vZGVsKERpc3RhbmNlTW9kZWxUeXBlIG1vZGVsKQoreworICAgIG1fZGlz
dGFuY2VFZmZlY3Quc2V0TW9kZWwobW9kZWwsIHRydWUpOworfQorCit2b2lkIFdlYktpdEF1ZGlv
UGFubmVyTm9kZTo6Z2V0QXppbXV0aEVsZXZhdGlvbihkb3VibGUqIG91dEF6aW11dGgsIGRvdWJs
ZSogb3V0RWxldmF0aW9uKQoreworICAgIC8vIEZJWE1FOiB3ZSBzaG91bGQgY2FjaGUgYXppbXV0
aCBhbmQgZWxldmF0aW9uIChpZiBwb3NzaWJsZSksIHNvIHdlIG9ubHkgcmUtY2FsY3VsYXRlIGlm
IGEgY2hhbmdlIGhhcyBiZWVuIG1hZGUuCisKKyAgICBkb3VibGUgYXppbXV0aCA9IDAuMDsKKwor
ICAgIC8vIENhbGN1bGF0ZSB0aGUgc291cmNlLWxpc3RlbmVyIHZlY3RvcgorICAgIEZsb2F0UG9p
bnQzRCBsaXN0ZW5lclBvc2l0aW9uID0gbGlzdGVuZXIoKS0+cG9zaXRpb24oKTsKKyAgICBGbG9h
dFBvaW50M0Qgc291cmNlTGlzdGVuZXIgPSBwb3NpdGlvbigpIC0gbGlzdGVuZXJQb3NpdGlvbjsK
KworICAgIGlmIChzb3VyY2VMaXN0ZW5lci5pc1plcm8oKSkgeworICAgICAgICAvLyBkZWdlbmVy
YXRlIGNhc2UgaWYgc291cmNlIGFuZCBsaXN0ZW5lciBhcmUgYXQgdGhlIHNhbWUgcG9pbnQKKyAg
ICAgICAgKm91dEF6aW11dGggPSAwLjA7CisgICAgICAgICpvdXRFbGV2YXRpb24gPSAwLjA7Cisg
ICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBzb3VyY2VMaXN0ZW5lci5ub3JtYWxpemUoKTsK
KworICAgIC8vIEFsaWduIGF4ZXMKKyAgICBGbG9hdFBvaW50M0QgbGlzdGVuZXJGcm9udCA9IGxp
c3RlbmVyKCktPm9yaWVudGF0aW9uKCk7CisgICAgRmxvYXRQb2ludDNEIGxpc3RlbmVyVXAgPSBs
aXN0ZW5lcigpLT51cFZlY3RvcigpOworICAgIEZsb2F0UG9pbnQzRCBsaXN0ZW5lclJpZ2h0ID0g
bGlzdGVuZXJGcm9udC5jcm9zcyhsaXN0ZW5lclVwKTsKKyAgICBsaXN0ZW5lclJpZ2h0Lm5vcm1h
bGl6ZSgpOworCisgICAgRmxvYXRQb2ludDNEIGxpc3RlbmVyRnJvbnROb3JtID0gbGlzdGVuZXJG
cm9udDsKKyAgICBsaXN0ZW5lckZyb250Tm9ybS5ub3JtYWxpemUoKTsKKworICAgIEZsb2F0UG9p
bnQzRCB1cCA9IGxpc3RlbmVyUmlnaHQuY3Jvc3MobGlzdGVuZXJGcm9udE5vcm0pOworCisgICAg
ZmxvYXQgdXBQcm9qZWN0aW9uID0gc291cmNlTGlzdGVuZXIuZG90KHVwKTsKKworICAgIEZsb2F0
UG9pbnQzRCBwcm9qZWN0ZWRTb3VyY2UgPSBzb3VyY2VMaXN0ZW5lciAtIHVwUHJvamVjdGlvbiAq
IHVwOworICAgIHByb2plY3RlZFNvdXJjZS5ub3JtYWxpemUoKTsKKworICAgIGF6aW11dGggPSAx
ODAuMCAqIGFjb3MocHJvamVjdGVkU291cmNlLmRvdChsaXN0ZW5lclJpZ2h0KSkgLyBwaURvdWJs
ZTsKKyAgICBmaXhOQU5zKGF6aW11dGgpOyAvLyBhdm9pZCBpbGxlZ2FsIHZhbHVlcworCisgICAg
Ly8gU291cmNlICBpbiBmcm9udCBvciBiZWhpbmQgdGhlIGxpc3RlbmVyCisgICAgZG91YmxlIGZy
b250QmFjayA9IHByb2plY3RlZFNvdXJjZS5kb3QobGlzdGVuZXJGcm9udE5vcm0pOworICAgIGlm
IChmcm9udEJhY2sgPCAwLjApCisgICAgICAgIGF6aW11dGggPSAzNjAuMCAtIGF6aW11dGg7CisK
KyAgICAvLyBNYWtlIGF6aW11dGggcmVsYXRpdmUgdG8gImZyb250IiBhbmQgbm90ICJyaWdodCIg
bGlzdGVuZXIgdmVjdG9yCisgICAgaWYgKChhemltdXRoID49IDAuMCkgJiYgKGF6aW11dGggPD0g
MjcwLjApKQorICAgICAgICBhemltdXRoID0gOTAuMCAtIGF6aW11dGg7CisgICAgZWxzZQorICAg
ICAgICBhemltdXRoID0gNDUwLjAgLSBhemltdXRoOworCisgICAgLy8gRWxldmF0aW9uCisgICAg
ZG91YmxlIGVsZXZhdGlvbiA9IDkwLjAgLSAxODAuMCAqIGFjb3Moc291cmNlTGlzdGVuZXIuZG90
KHVwKSkgLyBwaURvdWJsZTsKKyAgICBmaXhOQU5zKGVsZXZhdGlvbik7IC8vIGF2b2lkIGlsbGVn
YWwgdmFsdWVzCisKKyAgICBpZiAoZWxldmF0aW9uID4gOTAuMCkKKyAgICAgICAgZWxldmF0aW9u
ID0gMTgwLjAgLSBlbGV2YXRpb247CisgICAgZWxzZSBpZiAoZWxldmF0aW9uIDwgLTkwLjApCisg
ICAgICAgIGVsZXZhdGlvbiA9IC0xODAuMCAtIGVsZXZhdGlvbjsKKworICAgIGlmIChvdXRBemlt
dXRoKQorICAgICAgICAqb3V0QXppbXV0aCA9IGF6aW11dGg7CisgICAgaWYgKG91dEVsZXZhdGlv
bikKKyAgICAgICAgKm91dEVsZXZhdGlvbiA9IGVsZXZhdGlvbjsKK30KKworZmxvYXQgV2ViS2l0
QXVkaW9QYW5uZXJOb2RlOjpkb3BwbGVyUmF0ZSgpCit7CisgICAgZG91YmxlIGRvcHBsZXJTaGlm
dCA9IDEuMDsKKworICAgIC8vIEZJWE1FOiBvcHRpbWl6ZSBmb3IgY2FzZSB3aGVuIG5laXRoZXIg
c291cmNlIG5vciBsaXN0ZW5lciBoYXMgY2hhbmdlZC4uLgorICAgIGRvdWJsZSBkb3BwbGVyRmFj
dG9yID0gbGlzdGVuZXIoKS0+ZG9wcGxlckZhY3RvcigpOworCisgICAgaWYgKGRvcHBsZXJGYWN0
b3IgPiAwLjApIHsKKyAgICAgICAgZG91YmxlIHNwZWVkT2ZTb3VuZCA9IGxpc3RlbmVyKCktPnNw
ZWVkT2ZTb3VuZCgpOworCisgICAgICAgIGNvbnN0IEZsb2F0UG9pbnQzRCAmc291cmNlVmVsb2Np
dHkgPSBtX3ZlbG9jaXR5OworICAgICAgICBjb25zdCBGbG9hdFBvaW50M0QgJmxpc3RlbmVyVmVs
b2NpdHkgPSBsaXN0ZW5lcigpLT52ZWxvY2l0eSgpOworCisgICAgICAgIC8vIERvbid0IGJvdGhl
ciBpZiBib3RoIHNvdXJjZSBhbmQgbGlzdGVuZXIgaGF2ZSBubyB2ZWxvY2l0eQorICAgICAgICBi
b29sIHNvdXJjZUhhc1ZlbG9jaXR5ID0gIXNvdXJjZVZlbG9jaXR5LmlzWmVybygpOworICAgICAg
ICBib29sIGxpc3RlbmVySGFzVmVsb2NpdHkgPSAhbGlzdGVuZXJWZWxvY2l0eS5pc1plcm8oKTsK
KworICAgICAgICBpZiAoc291cmNlSGFzVmVsb2NpdHkgfHwgbGlzdGVuZXJIYXNWZWxvY2l0eSkg
eworICAgICAgICAgICAgLy8gQ2FsY3VsYXRlIHRoZSBzb3VyY2UgdG8gbGlzdGVuZXIgdmVjdG9y
CisgICAgICAgICAgICBGbG9hdFBvaW50M0QgbGlzdGVuZXJQb3NpdGlvbiA9IGxpc3RlbmVyKCkt
PnBvc2l0aW9uKCk7CisgICAgICAgICAgICBGbG9hdFBvaW50M0Qgc291cmNlVG9MaXN0ZW5lciA9
IHBvc2l0aW9uKCkgLSBsaXN0ZW5lclBvc2l0aW9uOworCisgICAgICAgICAgICBkb3VibGUgc291
cmNlTGlzdGVuZXJNYWduaXR1ZGUgPSBzb3VyY2VUb0xpc3RlbmVyLmxlbmd0aCgpOworCisgICAg
ICAgICAgICBkb3VibGUgbGlzdGVuZXJQcm9qZWN0aW9uID0gc291cmNlVG9MaXN0ZW5lci5kb3Qo
bGlzdGVuZXJWZWxvY2l0eSkgLyBzb3VyY2VMaXN0ZW5lck1hZ25pdHVkZTsKKyAgICAgICAgICAg
IGRvdWJsZSBzb3VyY2VQcm9qZWN0aW9uID0gc291cmNlVG9MaXN0ZW5lci5kb3Qoc291cmNlVmVs
b2NpdHkpIC8gc291cmNlTGlzdGVuZXJNYWduaXR1ZGU7CisKKyAgICAgICAgICAgIGxpc3RlbmVy
UHJvamVjdGlvbiA9IC1saXN0ZW5lclByb2plY3Rpb247CisgICAgICAgICAgICBzb3VyY2VQcm9q
ZWN0aW9uID0gLXNvdXJjZVByb2plY3Rpb247CisKKyAgICAgICAgICAgIGRvdWJsZSBzY2FsZWRT
cGVlZE9mU291bmQgPSBzcGVlZE9mU291bmQgLyBkb3BwbGVyRmFjdG9yOworICAgICAgICAgICAg
bGlzdGVuZXJQcm9qZWN0aW9uID0gc3RkOjptaW4obGlzdGVuZXJQcm9qZWN0aW9uLCBzY2FsZWRT
cGVlZE9mU291bmQpOworICAgICAgICAgICAgc291cmNlUHJvamVjdGlvbiA9IHN0ZDo6bWluKHNv
dXJjZVByb2plY3Rpb24sIHNjYWxlZFNwZWVkT2ZTb3VuZCk7CisKKyAgICAgICAgICAgIGRvcHBs
ZXJTaGlmdCA9ICgoc3BlZWRPZlNvdW5kIC0gZG9wcGxlckZhY3RvciAqIGxpc3RlbmVyUHJvamVj
dGlvbikgLyAoc3BlZWRPZlNvdW5kIC0gZG9wcGxlckZhY3RvciAqIHNvdXJjZVByb2plY3Rpb24p
KTsKKyAgICAgICAgICAgIGZpeE5BTnMoZG9wcGxlclNoaWZ0KTsgLy8gYXZvaWQgaWxsZWdhbCB2
YWx1ZXMKKworICAgICAgICAgICAgLy8gTGltaXQgdGhlIHBpdGNoIHNoaWZ0aW5nIHRvIDQgb2N0
YXZlcyB1cCBhbmQgMyBvY3RhdmVzIGRvd24uCisgICAgICAgICAgICBpZiAoZG9wcGxlclNoaWZ0
ID4gMTYuMCkKKyAgICAgICAgICAgICAgICBkb3BwbGVyU2hpZnQgPSAxNi4wOworICAgICAgICAg
ICAgZWxzZSBpZiAoZG9wcGxlclNoaWZ0IDwgMC4xMjUpCisgICAgICAgICAgICAgICAgZG9wcGxl
clNoaWZ0ID0gMC4xMjU7CisgICAgICAgIH0KKyAgICB9CisKKyAgICByZXR1cm4gc3RhdGljX2Nh
c3Q8ZmxvYXQ+KGRvcHBsZXJTaGlmdCk7Cit9CisKK2Zsb2F0IFdlYktpdEF1ZGlvUGFubmVyTm9k
ZTo6ZGlzdGFuY2VDb25lR2FpbigpCit7CisgICAgRmxvYXRQb2ludDNEIGxpc3RlbmVyUG9zaXRp
b24gPSBsaXN0ZW5lcigpLT5wb3NpdGlvbigpOworICAgIEZsb2F0UG9pbnQzRCBzb3VyY2VQb3Np
dGlvbiA9IHBvc2l0aW9uKCk7CisKKyAgICBkb3VibGUgbGlzdGVuZXJEaXN0YW5jZSA9IHNvdXJj
ZVBvc2l0aW9uLmRpc3RhbmNlVG8obGlzdGVuZXJQb3NpdGlvbik7CisgICAgZG91YmxlIGRpc3Rh
bmNlR2FpbiA9IG1fZGlzdGFuY2VFZmZlY3QuZ2FpbihsaXN0ZW5lckRpc3RhbmNlKTsKKworICAg
IG1fZGlzdGFuY2VHYWluLT5zZXRWYWx1ZShzdGF0aWNfY2FzdDxmbG9hdD4oZGlzdGFuY2VHYWlu
KSk7CisKKyAgICAvLyBGSVhNRTogY291bGQgb3B0aW1pemUgYnkgY2FjaGluZyBjb25lR2Fpbgor
ICAgIGRvdWJsZSBjb25lR2FpbiA9IG1fY29uZUVmZmVjdC5nYWluKHNvdXJjZVBvc2l0aW9uLCBt
X29yaWVudGF0aW9uLCBsaXN0ZW5lclBvc2l0aW9uKTsKKworICAgIG1fY29uZUdhaW4tPnNldFZh
bHVlKHN0YXRpY19jYXN0PGZsb2F0Pihjb25lR2FpbikpOworCisgICAgcmV0dXJuIGZsb2F0KGRp
c3RhbmNlR2FpbiAqIGNvbmVHYWluKTsKK30KKwordm9pZCBXZWJLaXRBdWRpb1Bhbm5lck5vZGU6
Om5vdGlmeUF1ZGlvU291cmNlc0Nvbm5lY3RlZFRvTm9kZShBdWRpb05vZGUqIG5vZGUsIEhhc2hT
ZXQ8QXVkaW9Ob2RlKj4mIHZpc2l0ZWROb2RlcykKK3sKKyAgICBBU1NFUlQobm9kZSk7CisgICAg
aWYgKCFub2RlKQorICAgICAgICByZXR1cm47CisKKyAgICAvLyBGaXJzdCBjaGVjayBpZiB0aGlz
IG5vZGUgaXMgYW4gQXVkaW9CdWZmZXJTb3VyY2VOb2RlLiBJZiBzbywgbGV0IGl0IGtub3cgYWJv
dXQgdXMgc28gdGhhdCBkb3BwbGVyIHNoaWZ0IHBpdGNoIGNhbiBiZSB0YWtlbiBpbnRvIGFjY291
bnQuCisgICAgaWYgKG5vZGUtPm5vZGVUeXBlKCkgPT0gTm9kZVR5cGVBdWRpb0J1ZmZlclNvdXJj
ZSkgeworICAgICAgICBBdWRpb0J1ZmZlclNvdXJjZU5vZGUqIGJ1ZmZlclNvdXJjZU5vZGUgPSBy
ZWludGVycHJldF9jYXN0PEF1ZGlvQnVmZmVyU291cmNlTm9kZSo+KG5vZGUpOworICAgICAgICBi
dWZmZXJTb3VyY2VOb2RlLT5zZXRQYW5uZXJOb2RlKHRoaXMpOworICAgIH0gZWxzZSB7CisgICAg
ICAgIC8vIEdvIHRocm91Z2ggYWxsIGlucHV0cyB0byB0aGlzIG5vZGUuCisgICAgICAgIGZvciAo
dW5zaWduZWQgaSA9IDA7IGkgPCBub2RlLT5udW1iZXJPZklucHV0cygpOyArK2kpIHsKKyAgICAg
ICAgICAgIEF1ZGlvTm9kZUlucHV0KiBpbnB1dCA9IG5vZGUtPmlucHV0KGkpOworCisgICAgICAg
ICAgICAvLyBGb3IgZWFjaCBpbnB1dCwgZ28gdGhyb3VnaCBhbGwgb2YgaXRzIGNvbm5lY3Rpb25z
LCBsb29raW5nIGZvciBBdWRpb0J1ZmZlclNvdXJjZU5vZGVzLgorICAgICAgICAgICAgZm9yICh1
bnNpZ25lZCBqID0gMDsgaiA8IGlucHV0LT5udW1iZXJPZlJlbmRlcmluZ0Nvbm5lY3Rpb25zKCk7
ICsraikgeworICAgICAgICAgICAgICAgIEF1ZGlvTm9kZU91dHB1dCogY29ubmVjdGVkT3V0cHV0
ID0gaW5wdXQtPnJlbmRlcmluZ091dHB1dChqKTsKKyAgICAgICAgICAgICAgICBBdWRpb05vZGUq
IGNvbm5lY3RlZE5vZGUgPSBjb25uZWN0ZWRPdXRwdXQtPm5vZGUoKTsKKyAgICAgICAgICAgICAg
ICBpZiAodmlzaXRlZE5vZGVzLmNvbnRhaW5zKGNvbm5lY3RlZE5vZGUpKQorICAgICAgICAgICAg
ICAgICAgICBjb250aW51ZTsKKworICAgICAgICAgICAgICAgIHZpc2l0ZWROb2Rlcy5hZGQoY29u
bmVjdGVkTm9kZSk7CisgICAgICAgICAgICAgICAgbm90aWZ5QXVkaW9Tb3VyY2VzQ29ubmVjdGVk
VG9Ob2RlKGNvbm5lY3RlZE5vZGUsIHZpc2l0ZWROb2Rlcyk7CisgICAgICAgICAgICB9CisgICAg
ICAgIH0KKyAgICB9Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVO
QUJMRShXRUJfQVVESU8pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1
ZGlvL1dlYktpdEF1ZGlvUGFubmVyTm9kZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJh
dWRpby9XZWJLaXRBdWRpb1Bhbm5lck5vZGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMC4uODk3OTdjM2M0YzUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmF1ZGlvL1dlYktpdEF1ZGlvUGFubmVyTm9kZS5oCkBAIC0wLDAgKzEsMTYw
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwLCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkK
KyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04KKyAqIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UworICogU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoV0VCX0FVRElPKQor
CisjaW5jbHVkZSAiQXVkaW9MaXN0ZW5lci5oIgorI2luY2x1ZGUgIkF1ZGlvTm9kZS5oIgorI2lu
Y2x1ZGUgIkF1ZGlvUGFyYW0uaCIKKyNpbmNsdWRlICJDb25lLmgiCisjaW5jbHVkZSAiRGlzdGFu
Y2UuaCIKKyNpbmNsdWRlICJGbG9hdFBvaW50M0QuaCIKKyNpbmNsdWRlICJQYW5uZXIuaCIKKyNp
bmNsdWRlICJQYW5uZXJOb2RlLmgiCisjaW5jbHVkZSAiV2ViS2l0QXVkaW9Db250ZXh0LmgiCisj
aW5jbHVkZSA8bWVtb3J5PgorI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CisjaW5jbHVkZSA8d3Rm
L0xvY2suaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBIUlRGRGF0YWJhc2VMb2Fk
ZXI7CisKKy8vIFBhbm5lck5vZGUgaXMgYW4gQXVkaW9Ob2RlIHdpdGggb25lIGlucHV0IGFuZCBv
bmUgb3V0cHV0LgorLy8gSXQgcG9zaXRpb25zIGEgc291bmQgaW4gM0Qgc3BhY2UsIHdpdGggdGhl
IGV4YWN0IGVmZmVjdCBkZXBlbmRlbnQgb24gdGhlIHBhbm5pbmcgbW9kZWwuCisvLyBJdCBoYXMg
YSBwb3NpdGlvbiBhbmQgYW4gb3JpZW50YXRpb24gaW4gM0Qgc3BhY2Ugd2hpY2ggaXMgcmVsYXRp
dmUgdG8gdGhlIHBvc2l0aW9uIGFuZCBvcmllbnRhdGlvbiBvZiB0aGUgY29udGV4dCdzIEF1ZGlv
TGlzdGVuZXIuCisvLyBBIGRpc3RhbmNlIGVmZmVjdCB3aWxsIGF0dGVudWF0ZSB0aGUgZ2FpbiBh
cyB0aGUgcG9zaXRpb24gbW92ZXMgYXdheSBmcm9tIHRoZSBsaXN0ZW5lci4KKy8vIEEgY29uZSBl
ZmZlY3Qgd2lsbCBhdHRlbnVhdGUgdGhlIGdhaW4gYXMgdGhlIG9yaWVudGF0aW9uIG1vdmVzIGF3
YXkgZnJvbSB0aGUgbGlzdGVuZXIuCisvLyBBbGwgb2YgdGhlc2UgZWZmZWN0cyBmb2xsb3cgdGhl
IE9wZW5BTCBzcGVjaWZpY2F0aW9uIHZlcnkgY2xvc2VseS4KKworY2xhc3MgV2ViS2l0QXVkaW9Q
YW5uZXJOb2RlIGZpbmFsIDogcHVibGljIFBhbm5lck5vZGVCYXNlIHsKKyAgICBXVEZfTUFLRV9J
U09fQUxMT0NBVEVEKFdlYktpdEF1ZGlvUGFubmVyTm9kZSk7CitwdWJsaWM6CisgICAgc3RhdGlj
IFJlZjxXZWJLaXRBdWRpb1Bhbm5lck5vZGU+IGNyZWF0ZShXZWJLaXRBdWRpb0NvbnRleHQmIGNv
bnRleHQsIGZsb2F0IHNhbXBsZVJhdGUpCisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRSZWYo
Km5ldyBXZWJLaXRBdWRpb1Bhbm5lck5vZGUoY29udGV4dCwgc2FtcGxlUmF0ZSkpOworICAgIH0K
KworICAgIHZpcnR1YWwgfldlYktpdEF1ZGlvUGFubmVyTm9kZSgpOworCisgICAgV2ViS2l0QXVk
aW9Db250ZXh0JiBjb250ZXh0KCkgeyByZXR1cm4gZG93bmNhc3Q8V2ViS2l0QXVkaW9Db250ZXh0
PihBdWRpb05vZGU6OmNvbnRleHQoKSk7IH0KKyAgICBjb25zdCBXZWJLaXRBdWRpb0NvbnRleHQm
IGNvbnRleHQoKSBjb25zdCB7IHJldHVybiBkb3duY2FzdDxXZWJLaXRBdWRpb0NvbnRleHQ+KEF1
ZGlvTm9kZTo6Y29udGV4dCgpKTsgfQorCisgICAgLy8gQXVkaW9Ob2RlCisgICAgdm9pZCBwcm9j
ZXNzKHNpemVfdCBmcmFtZXNUb1Byb2Nlc3MpIG92ZXJyaWRlOworICAgIHZvaWQgcHVsbElucHV0
cyhzaXplX3QgZnJhbWVzVG9Qcm9jZXNzKSBvdmVycmlkZTsKKyAgICB2b2lkIHJlc2V0KCkgb3Zl
cnJpZGU7CisgICAgdm9pZCBpbml0aWFsaXplKCkgb3ZlcnJpZGU7CisgICAgdm9pZCB1bmluaXRp
YWxpemUoKSBvdmVycmlkZTsKKworICAgIC8vIExpc3RlbmVyCisgICAgQXVkaW9MaXN0ZW5lciog
bGlzdGVuZXIoKTsKKworICAgIC8vIFBhbm5pbmcgbW9kZWwKKyAgICBQYW5uaW5nTW9kZWxUeXBl
IHBhbm5pbmdNb2RlbCgpIGNvbnN0IHsgcmV0dXJuIG1fcGFubmluZ01vZGVsOyB9CisgICAgdm9p
ZCBzZXRQYW5uaW5nTW9kZWwoUGFubmluZ01vZGVsVHlwZSk7CisKKyAgICAvLyBQb3NpdGlvbgor
ICAgIEZsb2F0UG9pbnQzRCBwb3NpdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fcG9zaXRpb247IH0K
KyAgICB2b2lkIHNldFBvc2l0aW9uKGZsb2F0IHgsIGZsb2F0IHksIGZsb2F0IHopIHsgbV9wb3Np
dGlvbiA9IEZsb2F0UG9pbnQzRCh4LCB5LCB6KTsgfQorCisgICAgLy8gT3JpZW50YXRpb24KKyAg
ICBGbG9hdFBvaW50M0Qgb3JpZW50YXRpb24oKSBjb25zdCB7IHJldHVybiBtX29yaWVudGF0aW9u
OyB9CisgICAgdm9pZCBzZXRPcmllbnRhdGlvbihmbG9hdCB4LCBmbG9hdCB5LCBmbG9hdCB6KSB7
IG1fb3JpZW50YXRpb24gPSBGbG9hdFBvaW50M0QoeCwgeSwgeik7IH0KKworICAgIC8vIFZlbG9j
aXR5CisgICAgRmxvYXRQb2ludDNEIHZlbG9jaXR5KCkgY29uc3QgeyByZXR1cm4gbV92ZWxvY2l0
eTsgfQorICAgIHZvaWQgc2V0VmVsb2NpdHkoZmxvYXQgeCwgZmxvYXQgeSwgZmxvYXQgeikgeyBt
X3ZlbG9jaXR5ID0gRmxvYXRQb2ludDNEKHgsIHksIHopOyB9CisKKyAgICAvLyBEaXN0YW5jZSBw
YXJhbWV0ZXJzCisgICAgRGlzdGFuY2VNb2RlbFR5cGUgZGlzdGFuY2VNb2RlbCgpIGNvbnN0Owor
ICAgIHZvaWQgc2V0RGlzdGFuY2VNb2RlbChEaXN0YW5jZU1vZGVsVHlwZSk7CisKKyAgICBkb3Vi
bGUgcmVmRGlzdGFuY2UoKSB7IHJldHVybiBtX2Rpc3RhbmNlRWZmZWN0LnJlZkRpc3RhbmNlKCk7
IH0KKyAgICB2b2lkIHNldFJlZkRpc3RhbmNlKGRvdWJsZSByZWZEaXN0YW5jZSkgeyBtX2Rpc3Rh
bmNlRWZmZWN0LnNldFJlZkRpc3RhbmNlKHJlZkRpc3RhbmNlKTsgfQorCisgICAgZG91YmxlIG1h
eERpc3RhbmNlKCkgeyByZXR1cm4gbV9kaXN0YW5jZUVmZmVjdC5tYXhEaXN0YW5jZSgpOyB9Cisg
ICAgdm9pZCBzZXRNYXhEaXN0YW5jZShkb3VibGUgbWF4RGlzdGFuY2UpIHsgbV9kaXN0YW5jZUVm
ZmVjdC5zZXRNYXhEaXN0YW5jZShtYXhEaXN0YW5jZSk7IH0KKworICAgIGRvdWJsZSByb2xsb2Zm
RmFjdG9yKCkgeyByZXR1cm4gbV9kaXN0YW5jZUVmZmVjdC5yb2xsb2ZmRmFjdG9yKCk7IH0KKyAg
ICB2b2lkIHNldFJvbGxvZmZGYWN0b3IoZG91YmxlIHJvbGxvZmZGYWN0b3IpIHsgbV9kaXN0YW5j
ZUVmZmVjdC5zZXRSb2xsb2ZmRmFjdG9yKHJvbGxvZmZGYWN0b3IpOyB9CisKKyAgICAvLyBTb3Vu
ZCBjb25lcyAtIGFuZ2xlcyBpbiBkZWdyZWVzCisgICAgZG91YmxlIGNvbmVJbm5lckFuZ2xlKCkg
Y29uc3QgeyByZXR1cm4gbV9jb25lRWZmZWN0LmlubmVyQW5nbGUoKTsgfQorICAgIHZvaWQgc2V0
Q29uZUlubmVyQW5nbGUoZG91YmxlIGFuZ2xlKSB7IG1fY29uZUVmZmVjdC5zZXRJbm5lckFuZ2xl
KGFuZ2xlKTsgfQorCisgICAgZG91YmxlIGNvbmVPdXRlckFuZ2xlKCkgY29uc3QgeyByZXR1cm4g
bV9jb25lRWZmZWN0Lm91dGVyQW5nbGUoKTsgfQorICAgIHZvaWQgc2V0Q29uZU91dGVyQW5nbGUo
ZG91YmxlIGFuZ2xlKSB7IG1fY29uZUVmZmVjdC5zZXRPdXRlckFuZ2xlKGFuZ2xlKTsgfQorCisg
ICAgZG91YmxlIGNvbmVPdXRlckdhaW4oKSBjb25zdCB7IHJldHVybiBtX2NvbmVFZmZlY3Qub3V0
ZXJHYWluKCk7IH0KKyAgICB2b2lkIHNldENvbmVPdXRlckdhaW4oZG91YmxlIGFuZ2xlKSB7IG1f
Y29uZUVmZmVjdC5zZXRPdXRlckdhaW4oYW5nbGUpOyB9CisKKyAgICB2b2lkIGdldEF6aW11dGhF
bGV2YXRpb24oZG91YmxlKiBvdXRBemltdXRoLCBkb3VibGUqIG91dEVsZXZhdGlvbik7CisgICAg
ZmxvYXQgZG9wcGxlclJhdGUoKSBmaW5hbDsKKworICAgIC8vIEFjY2Vzc29ycyBmb3IgZHluYW1p
Y2FsbHkgY2FsY3VsYXRlZCBnYWluIHZhbHVlcy4KKyAgICBBdWRpb1BhcmFtKiBkaXN0YW5jZUdh
aW4oKSB7IHJldHVybiBtX2Rpc3RhbmNlR2Fpbi5nZXQoKTsgfQorICAgIEF1ZGlvUGFyYW0qIGNv
bmVHYWluKCkgeyByZXR1cm4gbV9jb25lR2Fpbi5nZXQoKTsgfQorCisgICAgZG91YmxlIHRhaWxU
aW1lKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9wYW5uZXIgPyBtX3Bhbm5lci0+dGFpbFRp
bWUoKSA6IDA7IH0KKyAgICBkb3VibGUgbGF0ZW5jeVRpbWUoKSBjb25zdCBvdmVycmlkZSB7IHJl
dHVybiBtX3Bhbm5lciA/IG1fcGFubmVyLT5sYXRlbmN5VGltZSgpIDogMDsgfQorCitwcml2YXRl
OgorICAgIFdlYktpdEF1ZGlvUGFubmVyTm9kZShXZWJLaXRBdWRpb0NvbnRleHQmLCBmbG9hdCBz
YW1wbGVSYXRlKTsKKworICAgIC8vIFJldHVybnMgdGhlIGNvbWJpbmVkIGRpc3RhbmNlIGFuZCBj
b25lIGdhaW4gYXR0ZW51YXRpb24uCisgICAgZmxvYXQgZGlzdGFuY2VDb25lR2FpbigpOworCisg
ICAgLy8gTm90aWZpZXMgYW55IEF1ZGlvQnVmZmVyU291cmNlTm9kZXMgY29ubmVjdGVkIHRvIHVz
IGVpdGhlciBkaXJlY3RseSBvciBpbmRpcmVjdGx5IGFib3V0IG91ciBleGlzdGVuY2UuCisgICAg
Ly8gVGhpcyBpcyBpbiBvcmRlciB0byBoYW5kbGUgdGhlIHBpdGNoIGNoYW5nZSBuZWNlc3Nhcnkg
Zm9yIHRoZSBkb3BwbGVyIHNoaWZ0LgorICAgIHZvaWQgbm90aWZ5QXVkaW9Tb3VyY2VzQ29ubmVj
dGVkVG9Ob2RlKEF1ZGlvTm9kZSosIEhhc2hTZXQ8QXVkaW9Ob2RlKj4mIHZpc2l0ZWROb2Rlcyk7
CisKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8UGFubmVyPiBtX3Bhbm5lcjsKKyAgICBQYW5uaW5nTW9k
ZWxUeXBlIG1fcGFubmluZ01vZGVsOworCisgICAgRmxvYXRQb2ludDNEIG1fcG9zaXRpb247Cisg
ICAgRmxvYXRQb2ludDNEIG1fb3JpZW50YXRpb247CisgICAgRmxvYXRQb2ludDNEIG1fdmVsb2Np
dHk7CisKKyAgICAvLyBHYWluCisgICAgUmVmUHRyPEF1ZGlvUGFyYW0+IG1fZGlzdGFuY2VHYWlu
OworICAgIFJlZlB0cjxBdWRpb1BhcmFtPiBtX2NvbmVHYWluOworICAgIERpc3RhbmNlRWZmZWN0
IG1fZGlzdGFuY2VFZmZlY3Q7CisgICAgQ29uZUVmZmVjdCBtX2NvbmVFZmZlY3Q7CisgICAgZmxv
YXQgbV9sYXN0R2FpbjsKKworICAgIC8vIEhSVEYgRGF0YWJhc2UgbG9hZGVyCisgICAgUmVmUHRy
PEhSVEZEYXRhYmFzZUxvYWRlcj4gbV9ocnRmRGF0YWJhc2VMb2FkZXI7CisKKyAgICB1bnNpZ25l
ZCBtX2Nvbm5lY3Rpb25Db3VudDsKKworICAgIC8vIFN5bmNocm9uaXplIHByb2Nlc3MoKSBhbmQg
c2V0UGFubmluZ01vZGVsKCkgd2hpY2ggY2FuIGNoYW5nZSB0aGUgcGFubmVyLgorICAgIG11dGFi
bGUgTG9jayBtX3Bhbm5lck11dGV4OworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisj
ZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vV2ViS2l0
QXVkaW9QYW5uZXJOb2RlLmlkbCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vV2Vi
S2l0QXVkaW9QYW5uZXJOb2RlLmlkbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMC4uYWFhNGI3NmIwMGUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmF1ZGlvL1dlYktpdEF1ZGlvUGFubmVyTm9kZS5pZGwKQEAgLTAsMCArMSw1OCBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCwgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuICBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUg
SU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OCisgKiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKKyAq
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKK1sKKyAgICBDb25kaXRpb25hbD1XRUJfQVVESU8sCisgICAgSW1wbGVtZW50
ZWRBcz1EaXN0YW5jZU1vZGVsVHlwZQorXSBlbnVtIERpc3RhbmNlTW9kZWxUeXBlIHsKKyAgICAi
bGluZWFyIiwKKyAgICAiaW52ZXJzZSIsCisgICAgImV4cG9uZW50aWFsIgorfTsKKworWworICAg
IENvbmRpdGlvbmFsPVdFQl9BVURJTywKKyAgICBKU0dlbmVyYXRlVG9KU09iamVjdCwKKyAgICBJ
bnRlcmZhY2VOYW1lPXdlYmtpdEF1ZGlvUGFubmVyTm9kZSwKK10gaW50ZXJmYWNlIFdlYktpdEF1
ZGlvUGFubmVyTm9kZSA6IEF1ZGlvTm9kZSB7CisgICAgLy8gRGVmYXVsdCBtb2RlbCBmb3Igc3Rl
cmVvIGlzIEhSVEYKKyAgICBhdHRyaWJ1dGUgUGFubmluZ01vZGVsVHlwZSBwYW5uaW5nTW9kZWw7
CisKKyAgICAvLyBVc2VzIGEgM0QgY2FydGVzaWFuIGNvb3JkaW5hdGUgc3lzdGVtCisgICAgdm9p
ZCBzZXRQb3NpdGlvbih1bnJlc3RyaWN0ZWQgZmxvYXQgeCwgdW5yZXN0cmljdGVkIGZsb2F0IHks
IHVucmVzdHJpY3RlZCBmbG9hdCB6KTsKKyAgICB2b2lkIHNldE9yaWVudGF0aW9uKHVucmVzdHJp
Y3RlZCBmbG9hdCB4LCB1bnJlc3RyaWN0ZWQgZmxvYXQgeSwgdW5yZXN0cmljdGVkIGZsb2F0IHop
OworICAgIHZvaWQgc2V0VmVsb2NpdHkodW5yZXN0cmljdGVkIGZsb2F0IHgsIHVucmVzdHJpY3Rl
ZCBmbG9hdCB5LCB1bnJlc3RyaWN0ZWQgZmxvYXQgeik7CisKKyAgICAvLyBEaXN0YW5jZSBtb2Rl
bAorICAgIGF0dHJpYnV0ZSBEaXN0YW5jZU1vZGVsVHlwZSBkaXN0YW5jZU1vZGVsOworCisgICAg
YXR0cmlidXRlIHVucmVzdHJpY3RlZCBkb3VibGUgcmVmRGlzdGFuY2U7CisgICAgYXR0cmlidXRl
IHVucmVzdHJpY3RlZCBkb3VibGUgbWF4RGlzdGFuY2U7CisgICAgYXR0cmlidXRlIHVucmVzdHJp
Y3RlZCBkb3VibGUgcm9sbG9mZkZhY3RvcjsKKworICAgIC8vIERpcmVjdGlvbmFsIHNvdW5kIGNv
bmUKKyAgICBhdHRyaWJ1dGUgdW5yZXN0cmljdGVkIGRvdWJsZSBjb25lSW5uZXJBbmdsZTsKKyAg
ICBhdHRyaWJ1dGUgdW5yZXN0cmljdGVkIGRvdWJsZSBjb25lT3V0ZXJBbmdsZTsKKyAgICBhdHRy
aWJ1dGUgdW5yZXN0cmljdGVkIGRvdWJsZSBjb25lT3V0ZXJHYWluOworfTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vV2ViS2l0T2ZmbGluZUF1ZGlvQ29udGV4
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1dlYktpdE9mZmxpbmVBdWRp
b0NvbnRleHQuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi5kOGUz
OTlhMTRhMwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVk
aW8vV2ViS2l0T2ZmbGluZUF1ZGlvQ29udGV4dC5jcHAKQEAgLTAsMCArMSw2MiBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxMiwgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuICBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElF
RAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OCisgKiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKKyAqIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2lmIEVOQUJMRShXRUJfQVVESU8pCisKKyNp
bmNsdWRlICJXZWJLaXRPZmZsaW5lQXVkaW9Db250ZXh0LmgiCisKKyNpbmNsdWRlICJBdWRpb0J1
ZmZlci5oIgorI2luY2x1ZGUgIkRvY3VtZW50LmgiCisjaW5jbHVkZSA8d3RmL0lzb01hbGxvY0lu
bGluZXMuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitXVEZfTUFLRV9JU09fQUxMT0NBVEVE
X0lNUEwoV2ViS2l0T2ZmbGluZUF1ZGlvQ29udGV4dCk7CisKK2lubGluZSBXZWJLaXRPZmZsaW5l
QXVkaW9Db250ZXh0OjpXZWJLaXRPZmZsaW5lQXVkaW9Db250ZXh0KERvY3VtZW50JiBkb2N1bWVu
dCwgQXVkaW9CdWZmZXIqIHJlbmRlclRhcmdldCkKKyAgICA6IFdlYktpdEF1ZGlvQ29udGV4dChk
b2N1bWVudCwgcmVuZGVyVGFyZ2V0KQoreworfQorCitFeGNlcHRpb25PcjxSZWY8V2ViS2l0T2Zm
bGluZUF1ZGlvQ29udGV4dD4+IFdlYktpdE9mZmxpbmVBdWRpb0NvbnRleHQ6OmNyZWF0ZShTY3Jp
cHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCB1bnNpZ25lZCBudW1iZXJPZkNoYW5uZWxzLCBz
aXplX3QgbnVtYmVyT2ZGcmFtZXMsIGZsb2F0IHNhbXBsZVJhdGUpCit7CisgICAgLy8gRklYTUU6
IEFkZCBzdXBwb3J0IGZvciB3b3JrZXJzLgorICAgIGlmICghaXM8RG9jdW1lbnQ+KGNvbnRleHQp
KQorICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgTm90U3VwcG9ydGVkRXJyb3IgfTsKKyAgICBp
ZiAoIW51bWJlck9mQ2hhbm5lbHMgfHwgbnVtYmVyT2ZDaGFubmVscyA+IDEwIHx8ICFudW1iZXJP
ZkZyYW1lcyB8fCAhaXNTYW1wbGVSYXRlUmFuZ2VHb29kKHNhbXBsZVJhdGUpKQorICAgICAgICBy
ZXR1cm4gRXhjZXB0aW9uIHsgU3ludGF4RXJyb3IgfTsKKyAgICBhdXRvIHJlbmRlclRhcmdldCA9
IEF1ZGlvQnVmZmVyOjpjcmVhdGUobnVtYmVyT2ZDaGFubmVscywgbnVtYmVyT2ZGcmFtZXMsIHNh
bXBsZVJhdGUpOworICAgIGlmICghcmVuZGVyVGFyZ2V0KQorICAgICAgICByZXR1cm4gRXhjZXB0
aW9uIHsgU3ludGF4RXJyb3IgfTsKKworICAgIGF1dG8gYXVkaW9Db250ZXh0ID0gYWRvcHRSZWYo
Km5ldyBXZWJLaXRPZmZsaW5lQXVkaW9Db250ZXh0KGRvd25jYXN0PERvY3VtZW50Pihjb250ZXh0
KSwgcmVuZGVyVGFyZ2V0LmdldCgpKSk7CisgICAgYXVkaW9Db250ZXh0LT5zdXNwZW5kSWZOZWVk
ZWQoKTsKKyAgICByZXR1cm4gYXVkaW9Db250ZXh0OworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoV0VCX0FVRElPKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJhdWRpby9XZWJLaXRPZmZsaW5lQXVkaW9Db250ZXh0LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1dlYktpdE9mZmxpbmVBdWRpb0NvbnRleHQuaApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uYzI1NGVkNDFmZTAKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1dlYktpdE9mZmxp
bmVBdWRpb0NvbnRleHQuaApAQCAtMCwwICsxLDQwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDEyLCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0Ug
QVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04KKyAqIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUworICogU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBv
bmNlCisKKyNpbmNsdWRlICJXZWJLaXRBdWRpb0NvbnRleHQuaCIKKworbmFtZXNwYWNlIFdlYkNv
cmUgeworCitjbGFzcyBXZWJLaXRPZmZsaW5lQXVkaW9Db250ZXh0IGZpbmFsIDogcHVibGljIFdl
YktpdEF1ZGlvQ29udGV4dCB7CisgICAgV1RGX01BS0VfSVNPX0FMTE9DQVRFRChXZWJLaXRPZmZs
aW5lQXVkaW9Db250ZXh0KTsKK3B1YmxpYzoKKyAgICBzdGF0aWMgRXhjZXB0aW9uT3I8UmVmPFdl
YktpdE9mZmxpbmVBdWRpb0NvbnRleHQ+PiBjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYs
IHVuc2lnbmVkIG51bWJlck9mQ2hhbm5lbHMsIHNpemVfdCBudW1iZXJPZkZyYW1lcywgZmxvYXQg
c2FtcGxlUmF0ZSk7CisKK3ByaXZhdGU6CisgICAgV2ViS2l0T2ZmbGluZUF1ZGlvQ29udGV4dChE
b2N1bWVudCYsIEF1ZGlvQnVmZmVyKiByZW5kZXJUYXJnZXQpOworfTsKKworfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9X
ZWJLaXRPZmZsaW5lQXVkaW9Db250ZXh0LmlkbCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
YXVkaW8vV2ViS2l0T2ZmbGluZUF1ZGlvQ29udGV4dC5pZGwKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAuLjRhOTJhYzAzYmE3Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9XZWJLaXRPZmZsaW5lQXVkaW9Db250ZXh0LmlkbApA
QCAtMCwwICsxLDMzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyLCBHb29nbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQg
QU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04KKyAqIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUworICogU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworWworICAgIENvbmRpdGlvbmFsPVdFQl9BVURJ
TywKKyAgICBKU0dlbmVyYXRlVG9KU09iamVjdCwKKyAgICBDb25zdHJ1Y3Rvcih1bnNpZ25lZCBs
b25nIG51bWJlck9mQ2hhbm5lbHMsIHVuc2lnbmVkIGxvbmcgbnVtYmVyT2ZGcmFtZXMsIHVucmVz
dHJpY3RlZCBmbG9hdCBzYW1wbGVSYXRlKSwKKyAgICBDb25zdHJ1Y3Rvck1heVRocm93RXhjZXB0
aW9uLAorICAgIENvbnN0cnVjdG9yQ2FsbFdpdGg9U2NyaXB0RXhlY3V0aW9uQ29udGV4dCwKKyAg
ICBJbnRlcmZhY2VOYW1lPXdlYmtpdE9mZmxpbmVBdWRpb0NvbnRleHQKK10gaW50ZXJmYWNlIFdl
YktpdE9mZmxpbmVBdWRpb0NvbnRleHQgOiBXZWJLaXRBdWRpb0NvbnRleHQgeworfTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0IGIvU291cmNlL1dlYkNvcmUvU291cmNl
cy50eHQKaW5kZXggMjRkYjhmZDJjMzEuLjdlZWFjMmE1ZTI3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9Tb3VyY2VzLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dApAQCAt
MjY4LDYgKzI2OCw5IEBAIE1vZHVsZXMvd2ViYXVkaW8vU2NyaXB0UHJvY2Vzc29yTm9kZS5jcHAK
IE1vZHVsZXMvd2ViYXVkaW8vV2F2ZVNoYXBlckRTUEtlcm5lbC5jcHAKIE1vZHVsZXMvd2ViYXVk
aW8vV2F2ZVNoYXBlck5vZGUuY3BwCiBNb2R1bGVzL3dlYmF1ZGlvL1dhdmVTaGFwZXJQcm9jZXNz
b3IuY3BwCitNb2R1bGVzL3dlYmF1ZGlvL1dlYktpdEF1ZGlvQ29udGV4dC5jcHAKK01vZHVsZXMv
d2ViYXVkaW8vV2ViS2l0QXVkaW9QYW5uZXJOb2RlLmNwcAorTW9kdWxlcy93ZWJhdWRpby9XZWJL
aXRPZmZsaW5lQXVkaW9Db250ZXh0LmNwcAogCiBNb2R1bGVzL3dlYmF1dGhuL0F1dGhlbnRpY2F0
b3JDb29yZGluYXRvci5jcHAKIE1vZHVsZXMvd2ViYXV0aG4vQXV0aGVudGljYXRvckFzc2VydGlv
blJlc3BvbnNlLmNwcApAQCAtMjc0NCw2ICsyNzQ3LDcgQEAgSlNBdWRpb0J1ZmZlckNhbGxiYWNr
LmNwcAogSlNBdWRpb0J1ZmZlclNvdXJjZU5vZGUuY3BwCiBKU0F1ZGlvQ29uZmlndXJhdGlvbi5j
cHAKIEpTQXVkaW9Db250ZXh0LmNwcAorSlNBdWRpb0NvbnRleHRTdGF0ZS5jcHAKIEpTQXVkaW9E
ZXN0aW5hdGlvbk5vZGUuY3BwCiBKU0F1ZGlvTGlzdGVuZXIuY3BwCiBKU0F1ZGlvTm9kZS5jcHAK
QEAgLTI5MTQsNiArMjkxOCw3IEBAIEpTRGV2aWNlTW90aW9uRXZlbnQuY3BwCiBKU0RldmljZU9y
aWVudGF0aW9uRXZlbnQuY3BwCiBKU0RldmljZU9yaWVudGF0aW9uT3JNb3Rpb25QZXJtaXNzaW9u
U3RhdGUuY3BwCiBKU0RldmljZU9yaWVudGF0aW9uT3JNb3Rpb25FdmVudC5jcHAKK0pTRGlzdGFu
Y2VNb2RlbFR5cGUuY3BwCiBKU0RvY3VtZW50LmNwcAogSlNEb2N1bWVudEFuZEVsZW1lbnRFdmVu
dEhhbmRsZXJzLmNwcAogSlNEb2N1bWVudEZyYWdtZW50LmNwcApAQCAtMzIxMSw2ICszMjE2LDcg
QEAgSlNPdmVyZmxvd0V2ZW50LmNwcAogSlNQYWdlVHJhbnNpdGlvbkV2ZW50LmNwcAogSlNQYWlu
dFJlbmRlcmluZ0NvbnRleHQyRC5jcHAKIEpTUGFubmVyTm9kZS5jcHAKK0pTUGFubmluZ01vZGVs
VHlwZS5jcHAKIEpTUGFyZW50Tm9kZS5jcHAKIEpTUGF0aDJELmNwcAogSlNQYXllckVycm9yRmll
bGRzLmNwcApAQCAtMzU2Nyw3ICszNTczLDEwIEBAIEpTV2ViR1BVU3dhcENoYWluLmNwcAogSlNX
ZWJHUFVUZXh0dXJlLmNwcAogSlNXZWJHUFVUZXh0dXJlVmlldy5jcHAKIEpTV2ViS2l0QW5pbWF0
aW9uRXZlbnQuY3BwCitKU1dlYktpdEF1ZGlvQ29udGV4dC5jcHAKK0pTV2ViS2l0QXVkaW9QYW5u
ZXJOb2RlLmNwcAogSlNXZWJLaXRDU1NNYXRyaXguY3BwCitKU1dlYktpdE9mZmxpbmVBdWRpb0Nv
bnRleHQuY3BwCiBKU1dlYktpdFBsYXliYWNrVGFyZ2V0QXZhaWxhYmlsaXR5RXZlbnQuY3BwCiBK
U1dlYktpdFBvaW50LmNwcAogSlNXZWJLaXRUcmFuc2l0aW9uRXZlbnQuY3BwCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggNTI2NWRi
NTgzODIuLmU5ODRjNmNhMzVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0yNDA4LDEyICsyNDA4LDE2IEBACiAJCTgzMDAzMEY4
MUI3RDNCNzgwMEVEM0FBQyAvKiBDYWNoZWRIVE1MQ29sbGVjdGlvbi5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODMwMDMwRjcxQjdEMzk4ODAwRUQzQUFD
IC8qIENhY2hlZEhUTUxDb2xsZWN0aW9uLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKIAkJODMwMzM1MDIxRjU0OTA1NzAwNERGNzA3IC8qIEZpbGVTeXN0
ZW1EaXJlY3RvcnlSZWFkZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDgzMDMzNEZDMUY1NDkwNTIwMDRERjcwNyAvKiBGaWxlU3lzdGVtRGlyZWN0b3J5
UmVhZGVyLmggKi87IH07CiAJCTgzMDMzNTAzMUY1NDkwNUEwMDRERjcwNyAvKiBGaWxlU3lzdGVt
RW50cmllc0NhbGxiYWNrLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA4MzAzMzRGRTFGNTQ5MDUyMDA0REY3MDcgLyogRmlsZVN5c3RlbUVudHJpZXNDYWxs
YmFjay5oICovOyB9OworCQk4MzA0MDI4MjI0OUE3QTVGMDBBOTBEOEQgLyogUGFubmluZ01vZGVs
VHlwZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODMw
NDAyODAyNDlBN0E1QzAwQTkwRDhEIC8qIFBhbm5pbmdNb2RlbFR5cGUuaCAqLzsgfTsKKwkJODMw
NDAyODMyNDlBN0E2MjAwQTkwRDhEIC8qIERpc3RhbmNlTW9kZWxUeXBlLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4MzA0MDI3RDI0OUE3QTVCMDBBOTBE
OEQgLyogRGlzdGFuY2VNb2RlbFR5cGUuaCAqLzsgfTsKIAkJODMwNTE5OTYxQkIwRjExMDAwRjM3
NzJFIC8qIEhUTUxUaW1lRWxlbWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gODMwNTE5OTMxQkIwRjBFNzAwRjM3NzJFIC8qIEhUTUxUaW1lRWxlbWVu
dC5oICovOyB9OwogCQk4MzA3ODRCMjFDNTJFRTJDMDAxMDREMUQgLyogWE1MRG9jdW1lbnQuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgzMDc4NEIxMUM1
MkVFMTkwMDEwNEQxRCAvKiBYTUxEb2N1bWVudC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CiAJCTgzMEEzNkJEMURBQzVGQUQwMDZEN0QwOSAvKiBKU01v
dXNlRXZlbnRJbml0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA4MzBBMzZCQjFEQUM1RkE3MDA2RDdEMDkgLyogSlNNb3VzZUV2ZW50SW5pdC5oICovOyB9
OwogCQk4MzEwMkIyNzFGOUVBREQ5MDBFNDA0QjkgLyogSlNFeHRlbmRhYmxlTWVzc2FnZUV2ZW50
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4MzEwMkIy
MzFGOUVBREMyMDBFNDA0QjkgLyogSlNFeHRlbmRhYmxlTWVzc2FnZUV2ZW50LmggKi87IH07CiAJ
CTgzMTFDMDAzMUZBQTJFOTUwMEUzQzhFNSAvKiBTV1NlcnZlckpvYlF1ZXVlLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4MzExQzAwMjFGQUEyRTg5MDBF
M0M4RTUgLyogU1dTZXJ2ZXJKb2JRdWV1ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CiAJCTgzMTIwQzcxMUM1NkYzRkIwMDFDQjExMiAvKiBIVE1MRGF0
YUVsZW1lbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDgzNEI4NkE3MUM1NkU4M0EwMEYzRjBFMyAvKiBIVE1MRGF0YUVsZW1lbnQuaCAqLzsgfTsKKwkJ
ODMxQjYxNzYyNDk5QTVCQjAwQzA3Qzc5IC8qIFdlYktpdEF1ZGlvUGFubmVyTm9kZS5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODMxQjYxNzQyNDk5QTU5
QzAwQzA3Qzc5IC8qIFdlYktpdEF1ZGlvUGFubmVyTm9kZS5oICovOyB9OworCQk4MzFCNjE3NzI0
OTlBNUJGMDBDMDdDNzkgLyogV2ViS2l0T2ZmbGluZUF1ZGlvQ29udGV4dC5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODMxQjYxNzUyNDk5QTU5RDAwQzA3
Qzc5IC8qIFdlYktpdE9mZmxpbmVBdWRpb0NvbnRleHQuaCAqLzsgfTsKIAkJODMyMTUwN0UxRjI3
RUExQjAwOTVCMTM2IC8qIE5hdmlnYXRvckJlYWNvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODMyMTUwN0IxRjI3RUExNTAwOTVCMTM2IC8qIE5hdmln
YXRvckJlYWNvbi5oICovOyB9OwogCQk4MzJCODQzNDE5RDhFNTUxMDBCMjYwNTUgLyogU1ZHQW5p
bWF0ZUVsZW1lbnRCYXNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA4MzJCODQzMzE5RDhFNTUxMDBCMjYwNTUgLyogU1ZHQW5pbWF0ZUVsZW1lbnRCYXNl
LmggKi87IH07CiAJCTgzM0I5RTMyMUY1MDhEODUwMEUwRTQyOCAvKiBKU0ZpbGVTeXN0ZW1EaXJl
Y3RvcnlFbnRyeS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gODMzQjlFMkYxRjUwOEQ4MDAwRTBFNDI4IC8qIEpTRmlsZVN5c3RlbURpcmVjdG9yeUVudHJ5
LmggKi87IH07CkBAIC0yNDY5LDEwICsyNDczLDEyIEBACiAJCTgzOUEyRjJFMUUyMDRBNzEwMDM5
MDU3RSAvKiBXZWJHTFN0YXRlVHJhY2tlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gODM5QTJGMkMxRTIwNEE2RDAwMzkwNTdFIC8qIFdlYkdMU3RhdGVU
cmFja2VyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
IAkJODM5QUFGRUQxQTBDMEM4RDAwNjA1Rjk5IC8qIEhUTUxXQlJFbGVtZW50LmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4MzlBQUZFQjFBMEMwQzhEMDA2
MDVGOTkgLyogSFRNTFdCUkVsZW1lbnQuaCAqLzsgfTsKIAkJODNBOEFDNDAxRkFCQkZFNTAwMjA2
NEFDIC8qIFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4M0E4QUMzRTFGQUJCRkQxMDAyMDY0QUMgLyogU2Vydmlj
ZVdvcmtlcklkZW50aWZpZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OworCQk4M0IxQTcwMjI0OTk4NUYwMDBGRTU5NjEgLyogV2ViS2l0QXVkaW9Db250
ZXh0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4M0Ix
QTZGRjI0OTk4NUQwMDBGRTU5NjEgLyogV2ViS2l0QXVkaW9Db250ZXh0LmggKi87IH07CiAJCTgz
QjJEMTc1MUI4QkNENkEwMEEwMkU0NyAvKiBOYXRpdmVOb2RlRmlsdGVyLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4M0U5NTlFMTFCOEJDMjJCMDA0RDkz
ODUgLyogTmF0aXZlTm9kZUZpbHRlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CiAJCTgzQjc0RUY2MUYzRTBCRjIwMDk5NkJDNyAvKiBLZWVwYWxpdmVS
ZXF1ZXN0VHJhY2tlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gODNCNzRFRjMxRjNFMEJENzAwOTk2QkM3IC8qIEtlZXBhbGl2ZVJlcXVlc3RUcmFja2Vy
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJODNC
OTY4N0IxOUY4QUI4MzAwNEVGN0FGIC8qIFN0eWxlQnVpbGRlckNvbnZlcnRlci5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODNCOTY4NzkxOUY4QUI4MzAw
NEVGN0FGIC8qIFN0eWxlQnVpbGRlckNvbnZlcnRlci5oICovOyB9OwogCQk4M0JCNUM4ODFENUQ2
RjQ1MDA1QTcxRjQgLyogQWxsRGVzY2VuZGFudHNDb2xsZWN0aW9uLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4M0JCNUM4NzFENUQ2RjNBMDA1QTcxRjQg
LyogQWxsRGVzY2VuZGFudHNDb2xsZWN0aW9uLmggKi87IH07CisJCTgzQkQzQ0VFMjQ5OThFMDEw
MEJBM0U2NyAvKiBBdWRpb0NvbnRleHRTdGF0ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gODNCRDNDRUQyNDk5OERGNjAwQkEzRTY3IC8qIEF1ZGlvQ29u
dGV4dFN0YXRlLmggKi87IH07CiAJCTgzQzA1QTVCMUE2ODYyMTIwMDdFNURFQSAvKiBTdHlsZVBy
b3BlcnR5U2hvcnRoYW5kRnVuY3Rpb25zLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA4M0MwNUE1OTFBNjg2MjEyMDA3RTVERUEgLyogU3R5bGVQcm9wZXJ0
eVNob3J0aGFuZEZ1bmN0aW9ucy5oICovOyB9OwogCQk4M0MxRjU5NDFFREY2OUQzMDA0MTBEMjcg
LyogUXVhbGlmaWVkTmFtZUNhY2hlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA4M0MxRjU5MjFFREY2OUQzMDA0MTBEMjcgLyogUXVhbGlmaWVkTmFtZUNh
Y2hlLmggKi87IH07CiAJCTgzQzQ1QjhFMURDMkI2OEEwMDg4NzFCQSAvKiBWYWxpZGF0aW9uQnVi
YmxlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4M0M0
NUI4RDFEQzJCNjdDMDA4ODcxQkEgLyogVmFsaWRhdGlvbkJ1YmJsZS5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC0xMDI5NywxMSArMTAzMDMsMTYg
QEAKIAkJODMwMDMwRjMxQjdEMzNBNjAwRUQzQUFDIC8qIEdlbmVyaWNDYWNoZWRIVE1MQ29sbGVj
dGlvbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBHZW5lcmljQ2Fj
aGVkSFRNTENvbGxlY3Rpb24uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4MzAw
MzBGNDFCN0QzM0E2MDBFRDNBQUMgLyogR2VuZXJpY0NhY2hlZEhUTUxDb2xsZWN0aW9uLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdlbmVyaWNDYWNoZWRIVE1MQ29sbGVjdGlv
bi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4MzAwMzBGNzFCN0QzOTg4MDBFRDNB
QUMgLyogQ2FjaGVkSFRNTENvbGxlY3Rpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gQ2FjaGVkSFRNTENvbGxlY3Rpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJODMwMDNFMkIyNDk5OTdBODAwNjBBRjk0IC8qIFdlYktpdEF1ZGlvQ29udGV4dC5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJLaXRBdWRpb0NvbnRleHQuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4MzAzMzRGQjFGNTQ5MDUyMDA0REY3MDcg
LyogRmlsZVN5c3RlbURpcmVjdG9yeVJlYWRlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBGaWxlU3lzdGVtRGlyZWN0b3J5UmVhZGVyLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJODMwMzM0RkMxRjU0OTA1MjAwNERGNzA3IC8qIEZpbGVTeXN0ZW1E
aXJlY3RvcnlSZWFkZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRmlsZVN5
c3RlbURpcmVjdG9yeVJlYWRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4MzAz
MzRGRDFGNTQ5MDUyMDA0REY3MDcgLyogRmlsZVN5c3RlbUVudHJpZXNDYWxsYmFjay5pZGwgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSB0ZXh0OyBwYXRoID0gRmlsZVN5c3RlbUVudHJpZXNDYWxsYmFjay5pZGw7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTgzMDMzNEZFMUY1NDkwNTIwMDRERjcwNyAvKiBGaWxl
U3lzdGVtRW50cmllc0NhbGxiYWNrLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IEZpbGVTeXN0ZW1FbnRyaWVzQ2FsbGJhY2suaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJODMwMzM0RkYxRjU0OTA1MjAwNERGNzA3IC8qIEZpbGVTeXN0ZW1EaXJlY3RvcnlSZWFkZXIu
aWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IEZpbGVTeXN0ZW1EaXJlY3RvcnlSZWFkZXIuaWRs
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk4MzA0MDI3RDI0OUE3QTVCMDBBOTBEOEQg
LyogRGlzdGFuY2VNb2RlbFR5cGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
RGlzdGFuY2VNb2RlbFR5cGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJODMwNDAy
N0YyNDlBN0E1QzAwQTkwRDhEIC8qIERpc3RhbmNlTW9kZWxUeXBlLmlkbCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRl
eHQ7IHBhdGggPSBEaXN0YW5jZU1vZGVsVHlwZS5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTgzMDQwMjgwMjQ5QTdBNUMwMEE5MEQ4RCAvKiBQYW5uaW5nTW9kZWxUeXBlLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBhbm5pbmdNb2RlbFR5cGUuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJODMwNDAyODEyNDlBN0E1RDAwQTkwRDhEIC8qIFBhbm5p
bmdNb2RlbFR5cGUuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFBhbm5pbmdNb2RlbFR5cGUu
aWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4MzA1MTk5MjFCQjBGMEU3MDBGMzc3
MkUgLyogSFRNTFRpbWVFbGVtZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IEhUTUxUaW1lRWxlbWVudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTgzMDUxOTkzMUJCMEYwRTcwMEYzNzcyRSAvKiBIVE1MVGltZUVsZW1lbnQuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSFRNTFRpbWVFbGVtZW50Lmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTgzMDUxOTk0MUJCMEYwRTcwMEYzNzcyRSAvKiBIVE1MVGltZUVsZW1l
bnQuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IEhUTUxUaW1lRWxlbWVudC5pZGw7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xMDMxNCw2ICsxMDMyNSwxMiBAQAogCQk4MzEwMkIy
NTFGOUVBREMyMDBFNDA0QjkgLyogSlNFeHRlbmRhYmxlTWVzc2FnZUV2ZW50LmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTRXh0ZW5kYWJsZU1lc3NhZ2VFdmVudC5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTgzMTFDMDAwMUZBQTJFODkwMEUzQzhF
NSAvKiBTV1NlcnZlckpvYlF1ZXVlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IFNXU2VydmVySm9iUXVldWUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk4MzExQzAwMjFGQUEyRTg5MDBFM0M4RTUgLyogU1dTZXJ2ZXJKb2JRdWV1ZS5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTV1NlcnZlckpvYlF1ZXVlLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTgzMUI2MTZGMjQ5OUE1OTgwMEMwN0M3OSAvKiBXZWJLaXRBdWRp
b1Bhbm5lck5vZGUuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFdlYktpdEF1ZGlvUGFubmVy
Tm9kZS5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTgzMUI2MTcxMjQ5OUE1OTkw
MEMwN0M3OSAvKiBXZWJLaXRBdWRpb1Bhbm5lck5vZGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gV2ViS2l0QXVkaW9QYW5uZXJOb2RlLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJODMxQjYxNzIyNDk5QTU5QTAwQzA3Qzc5IC8qIFdlYktpdE9mZmxp
bmVBdWRpb0NvbnRleHQuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFdlYktpdE9mZmxpbmVB
dWRpb0NvbnRleHQuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk4MzFCNjE3MzI0
OTlBNTlCMDBDMDdDNzkgLyogV2ViS2l0T2ZmbGluZUF1ZGlvQ29udGV4dC5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJLaXRPZmZsaW5lQXVkaW9Db250ZXh0LmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJODMxQjYxNzQyNDk5QTU5QzAwQzA3Qzc5
IC8qIFdlYktpdEF1ZGlvUGFubmVyTm9kZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBXZWJLaXRBdWRpb1Bhbm5lck5vZGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJODMxQjYxNzUyNDk5QTU5RDAwQzA3Qzc5IC8qIFdlYktpdE9mZmxpbmVBdWRpb0NvbnRleHQu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViS2l0T2ZmbGluZUF1ZGlvQ29u
dGV4dC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4MzFDNDZDMzFGOUVFNUUwMDBF
QkQ0NTAgLyogSlNFeHRlbmRhYmxlTWVzc2FnZUV2ZW50Q3VzdG9tLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTRXh0ZW5kYWJsZU1lc3NhZ2VFdmVudEN1c3RvbS5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTgzMUQxRjI5MUM1NkVDQTAwMEY1RjZD
MCAvKiBIVE1MRGF0YUVsZW1lbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gSFRNTERhdGFFbGVtZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
ODMyMTUwN0ExRjI3RUExNTAwOTVCMTM2IC8qIE5hdmlnYXRvckJlYWNvbi5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBOYXZpZ2F0b3JCZWFjb24uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwpAQCAtMTA0NDEsNiArMTA0NTgsOCBAQAogCQk4MzlBQUZFQjFBMEMwQzhEMDA2MDVGOTkgLyog
SFRNTFdCUkVsZW1lbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSFRNTFdC
UkVsZW1lbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODNBNEE5RjgxQ0U3RkQ3
RTAwNzA5QjAwIC8qIEpTWE1MRG9jdW1lbnRDdXN0b20uY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gSlNYTUxEb2N1bWVudEN1c3RvbS5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTgzQThBQzNFMUZBQkJGRDEwMDIwNjRBQyAvKiBTZXJ2aWNlV29ya2Vy
SWRlbnRpZmllci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTZXJ2aWNlV29y
a2VySWRlbnRpZmllci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk4M0IxQTZGRjI0
OTk4NUQwMDBGRTU5NjEgLyogV2ViS2l0QXVkaW9Db250ZXh0LmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFdlYktpdEF1ZGlvQ29udGV4dC5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQk4M0IxQTcwMTI0OTk4NUQwMDBGRTU5NjEgLyogV2ViS2l0QXVkaW9Db250ZXh0
LmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBXZWJLaXRBdWRpb0NvbnRleHQuaWRsOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4M0IyNTAwOTFGQTExODFDMDBCQzAyRDkgLyogSlNT
ZXJ2aWNlV29ya2VyQ2xpZW50VHlwZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBKU1NlcnZpY2VXb3JrZXJDbGllbnRUeXBlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTgzQjI1MDBCMUZBMTE4MUQwMEJDMDJEOSAvKiBKU1NlcnZpY2VXb3JrZXJDbGllbnRUeXBl
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTU2VydmljZVdvcmtl
ckNsaWVudFR5cGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4M0I1REE0NTFG
QTkwNzkzMDBCNTlERjQgLyogSlNOYXZpZ2F0b3JDdXN0b20uY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gSlNOYXZpZ2F0b3JDdXN0b20uY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwpAQCAtMTA0NDgsNiArMTA0NjcsOCBAQAogCQk4M0I3NEVGMzFGM0UwQkQ3
MDA5OTZCQzcgLyogS2VlcGFsaXZlUmVxdWVzdFRyYWNrZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gS2VlcGFsaXZlUmVxdWVzdFRyYWNrZXIuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJODNCOTY4NzkxOUY4QUI4MzAwNEVGN0FGIC8qIFN0eWxlQnVpbGRlckNv
bnZlcnRlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTdHlsZUJ1aWxkZXJD
b252ZXJ0ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODNCQjVDODcxRDVENkYz
QTAwNUE3MUY0IC8qIEFsbERlc2NlbmRhbnRzQ29sbGVjdGlvbi5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBBbGxEZXNjZW5kYW50c0NvbGxlY3Rpb24uaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJODNCRDNDRUIyNDk5OENDNTAwQkEzRTY3IC8qIEF1ZGlvQ29udGV4
dFN0YXRlLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBBdWRpb0NvbnRleHRTdGF0ZS5pZGw7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTgzQkQzQ0VEMjQ5OThERjYwMEJBM0U2NyAv
KiBBdWRpb0NvbnRleHRTdGF0ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBB
dWRpb0NvbnRleHRTdGF0ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4M0MwNUE1
ODFBNjg2MjEyMDA3RTVERUEgLyogU3R5bGVQcm9wZXJ0eVNob3J0aGFuZEZ1bmN0aW9ucy5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBTdHlsZVByb3BlcnR5U2hvcnRo
YW5kRnVuY3Rpb25zLmNwcDsgcGF0aCA9IERlcml2ZWRTb3VyY2VzL1dlYkNvcmUvU3R5bGVQcm9w
ZXJ0eVNob3J0aGFuZEZ1bmN0aW9ucy5jcHA7IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19E
SVI7IH07CiAJCTgzQzA1QTU5MUE2ODYyMTIwMDdFNURFQSAvKiBTdHlsZVByb3BlcnR5U2hvcnRo
YW5kRnVuY3Rpb25zLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFN0eWxlUHJv
cGVydHlTaG9ydGhhbmRGdW5jdGlvbnMuaDsgcGF0aCA9IERlcml2ZWRTb3VyY2VzL1dlYkNvcmUv
U3R5bGVQcm9wZXJ0eVNob3J0aGFuZEZ1bmN0aW9ucy5oOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJP
RFVDVFNfRElSOyB9OwogCQk4M0MxRjU5MTFFREY2OUQzMDA0MTBEMjcgLyogUXVhbGlmaWVkTmFt
ZUNhY2hlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFF1YWxpZmll
ZE5hbWVDYWNoZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yOTIzMSw2ICsy
OTI1Miw4IEBACiAJCQkJRkQzMTVGQkExMkIwMjY3NTAwQzFBMzU5IC8qIEF1ZGlvQ29udGV4dC5j
cHAgKi8sCiAJCQkJRkQzMTVGQkIxMkIwMjY3NTAwQzFBMzU5IC8qIEF1ZGlvQ29udGV4dC5oICov
LAogCQkJCUZEMzE1RkJDMTJCMDI2NzUwMEMxQTM1OSAvKiBBdWRpb0NvbnRleHQuaWRsICovLAor
CQkJCTgzQkQzQ0VEMjQ5OThERjYwMEJBM0U2NyAvKiBBdWRpb0NvbnRleHRTdGF0ZS5oICovLAor
CQkJCTgzQkQzQ0VCMjQ5OThDQzUwMEJBM0U2NyAvKiBBdWRpb0NvbnRleHRTdGF0ZS5pZGwgKi8s
CiAJCQkJRkQzMTVGQkQxMkIwMjY3NTAwQzFBMzU5IC8qIEF1ZGlvRGVzdGluYXRpb25Ob2RlLmNw
cCAqLywKIAkJCQlGRDMxNUZCRTEyQjAyNjc1MDBDMUEzNTkgLyogQXVkaW9EZXN0aW5hdGlvbk5v
ZGUuaCAqLywKIAkJCQlGRDMxNUZCRjEyQjAyNjc1MDBDMUEzNTkgLyogQXVkaW9EZXN0aW5hdGlv
bk5vZGUuaWRsICovLApAQCAtMjkyODEsNiArMjkzMDQsOCBAQAogCQkJCUZEMzE1RkU1MTJCMDI2
NzYwMEMxQTM1OSAvKiBEZWxheU5vZGUuaWRsICovLAogCQkJCUZEMzE1RkU2MTJCMDI2NzYwMEMx
QTM1OSAvKiBEZWxheVByb2Nlc3Nvci5jcHAgKi8sCiAJCQkJRkQzMTVGRTcxMkIwMjY3NjAwQzFB
MzU5IC8qIERlbGF5UHJvY2Vzc29yLmggKi8sCisJCQkJODMwNDAyN0QyNDlBN0E1QjAwQTkwRDhE
IC8qIERpc3RhbmNlTW9kZWxUeXBlLmggKi8sCisJCQkJODMwNDAyN0YyNDlBN0E1QzAwQTkwRDhE
IC8qIERpc3RhbmNlTW9kZWxUeXBlLmlkbCAqLywKIAkJCQlGRDZFRDJDMTEzNkI4RTQyMDAzQ0Yw
NzIgLyogRHluYW1pY3NDb21wcmVzc29yTm9kZS5jcHAgKi8sCiAJCQkJRkQ2RUQyQzIxMzZCOEU0
MjAwM0NGMDcyIC8qIER5bmFtaWNzQ29tcHJlc3Nvck5vZGUuaCAqLywKIAkJCQlGRDZFRDJDOTEz
NkI4RTlEMDAzQ0YwNzIgLyogRHluYW1pY3NDb21wcmVzc29yTm9kZS5pZGwgKi8sCkBAIC0yOTMx
Myw2ICsyOTMzOCw4IEBACiAJCQkJRkQzMTVGQ0YxMkIwMjY3NTAwQzFBMzU5IC8qIFBhbm5lck5v
ZGUuY3BwICovLAogCQkJCUZEMzE1RkQwMTJCMDI2NzUwMEMxQTM1OSAvKiBQYW5uZXJOb2RlLmgg
Ki8sCiAJCQkJRkQzMTVGRDExMkIwMjY3NTAwQzFBMzU5IC8qIFBhbm5lck5vZGUuaWRsICovLAor
CQkJCTgzMDQwMjgwMjQ5QTdBNUMwMEE5MEQ4RCAvKiBQYW5uaW5nTW9kZWxUeXBlLmggKi8sCisJ
CQkJODMwNDAyODEyNDlBN0E1RDAwQTkwRDhEIC8qIFBhbm5pbmdNb2RlbFR5cGUuaWRsICovLAog
CQkJCUZENTgxRkIxMTUyMEY5M0IwMDNBN0E3NSAvKiBQZXJpb2RpY1dhdmUuY3BwICovLAogCQkJ
CUZENTgxRkIyMTUyMEY5M0IwMDNBN0E3NSAvKiBQZXJpb2RpY1dhdmUuaCAqLywKIAkJCQlGRDU4
MUZCMzE1MjBGOTNCMDAzQTdBNzUgLyogUGVyaW9kaWNXYXZlLmlkbCAqLywKQEAgLTI5MzI4LDYg
KzI5MzU1LDE1IEBACiAJCQkJRkQ3RjI5OEUxM0Q0QzBDQjAwQUQ5NTM1IC8qIFdhdmVTaGFwZXJO
b2RlLmlkbCAqLywKIAkJCQlGRDdGMjk4RjEzRDRDMENCMDBBRDk1MzUgLyogV2F2ZVNoYXBlclBy
b2Nlc3Nvci5jcHAgKi8sCiAJCQkJRkQ3RjI5OTAxM0Q0QzBDQjAwQUQ5NTM1IC8qIFdhdmVTaGFw
ZXJQcm9jZXNzb3IuaCAqLywKKwkJCQk4MzAwM0UyQjI0OTk5N0E4MDA2MEFGOTQgLyogV2ViS2l0
QXVkaW9Db250ZXh0LmNwcCAqLywKKwkJCQk4M0IxQTZGRjI0OTk4NUQwMDBGRTU5NjEgLyogV2Vi
S2l0QXVkaW9Db250ZXh0LmggKi8sCisJCQkJODNCMUE3MDEyNDk5ODVEMDAwRkU1OTYxIC8qIFdl
YktpdEF1ZGlvQ29udGV4dC5pZGwgKi8sCisJCQkJODMxQjYxNzEyNDk5QTU5OTAwQzA3Qzc5IC8q
IFdlYktpdEF1ZGlvUGFubmVyTm9kZS5jcHAgKi8sCisJCQkJODMxQjYxNzQyNDk5QTU5QzAwQzA3
Qzc5IC8qIFdlYktpdEF1ZGlvUGFubmVyTm9kZS5oICovLAorCQkJCTgzMUI2MTZGMjQ5OUE1OTgw
MEMwN0M3OSAvKiBXZWJLaXRBdWRpb1Bhbm5lck5vZGUuaWRsICovLAorCQkJCTgzMUI2MTczMjQ5
OUE1OUIwMEMwN0M3OSAvKiBXZWJLaXRPZmZsaW5lQXVkaW9Db250ZXh0LmNwcCAqLywKKwkJCQk4
MzFCNjE3NTI0OTlBNTlEMDBDMDdDNzkgLyogV2ViS2l0T2ZmbGluZUF1ZGlvQ29udGV4dC5oICov
LAorCQkJCTgzMUI2MTcyMjQ5OUE1OUEwMEMwN0M3OSAvKiBXZWJLaXRPZmZsaW5lQXVkaW9Db250
ZXh0LmlkbCAqLywKIAkJCSk7CiAJCQlwYXRoID0gd2ViYXVkaW87CiAJCQlzb3VyY2VUcmVlID0g
Ijxncm91cD4iOwpAQCAtMjk3MDQsNiArMjk3NDAsNyBAQAogCQkJCTlCNDE3MDY0MTI1NjYyQjMw
MDZCMjhGQyAvKiBBcHBseUJsb2NrRWxlbWVudENvbW1hbmQuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTkzMzA5REQ5MDk5RTY0OTIwMDU2RTU4MSAvKiBBcHBseVN0eWxlQ29tbWFuZC5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJNTEyREQ4RjYwRDkxRTZBRjAwMEY4OUVFIC8qIEFyY2hpdmUuaCBpbiBIZWFk
ZXJzICovLAorCQkJCTgzQkQzQ0VFMjQ5OThFMDEwMEJBM0U2NyAvKiBBdWRpb0NvbnRleHRTdGF0
ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTEyREQ4RkQwRDkxRTZBRjAwMEY4OUVFIC8qIEFyY2hp
dmVGYWN0b3J5LmggaW4gSGVhZGVycyAqLywKIAkJCQk1MTJERDhGQzBEOTFFNkFGMDAwRjg5RUUg
LyogQXJjaGl2ZVJlc291cmNlLmggaW4gSGVhZGVycyAqLywKIAkJCQk1MTJERDhGODBEOTFFNkFG
MDAwRjg5RUUgLyogQXJjaGl2ZVJlc291cmNlQ29sbGVjdGlvbi5oIGluIEhlYWRlcnMgKi8sCkBA
IC0zMDA4Myw2ICszMDEyMCw3IEBACiAJCQkJNzdENTEwMTcxRUQ2MDIyMjAwREE0Qzg3IC8qIENy
ZWRlbnRpYWxzQ29udGFpbmVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk1MUEwNTIzMzEwNTg3NzRG
MDBDQzlFOTUgLyogQ3JlZGVudGlhbFN0b3JhZ2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTJENDgx
RjAyMTQ2QjVDNTUwMEFBNzgzNCAvKiBDcm9zc2ZhZGVHZW5lcmF0ZWRJbWFnZS5oIGluIEhlYWRl
cnMgKi8sCisJCQkJODMwNDAyODIyNDlBN0E1RjAwQTkwRDhEIC8qIFBhbm5pbmdNb2RlbFR5cGUu
aCBpbiBIZWFkZXJzICovLAogCQkJCUUxQzQxNjEyMEY2NTYyRkQwMDkyRDJGQiAvKiBDcm9zc09y
aWdpbkFjY2Vzc0NvbnRyb2wuaCBpbiBIZWFkZXJzICovLAogCQkJCTQxQUJFNjdCMUQwNTgwREIw
MDZEODYyRCAvKiBDcm9zc09yaWdpblByZWZsaWdodENoZWNrZXIuaCBpbiBIZWFkZXJzICovLAog
CQkJCUUxQzQxNURBMEY2NTVENkYwMDkyRDJGQiAvKiBDcm9zc09yaWdpblByZWZsaWdodFJlc3Vs
dENhY2hlLmggaW4gSGVhZGVycyAqLywKQEAgLTMwODY5LDYgKzMwOTA3LDcgQEAKIAkJCQlBNDNC
RjU5OTExNDkyOTBBMDBDNjQzQ0EgLyogSFRNTFByb2dyZXNzRWxlbWVudC5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJQThDRkY3QTMwQTE1Njk3ODAwMEE0MjM0IC8qIEhUTUxRdW90ZUVsZW1lbnQuaCBp
biBIZWFkZXJzICovLAogCQkJCUE4RDIyM0ZFMTZCNTJFNEUwMDE1NzI4OCAvKiBIVE1MUmVzb3Vy
Y2VQcmVsb2FkZXIuaCBpbiBIZWFkZXJzICovLAorCQkJCTgzQjFBNzAyMjQ5OTg1RjAwMEZFNTk2
MSAvKiBXZWJLaXRBdWRpb0NvbnRleHQuaCBpbiBIZWFkZXJzICovLAogCQkJCUE4NzFEQzI1MEEx
NTIwNTcwMEIxMkE2OCAvKiBIVE1MU2NyaXB0RWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
OTc3QjM4NzUxMjI4ODNFOTAwQjgxRkY4IC8qIEhUTUxTY3JpcHRSdW5uZXIuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTk3N0IzODc2MTIyODgzRTkwMEI4MUZGOCAvKiBIVE1MU2NyaXB0UnVubmVySG9z
dC5oIGluIEhlYWRlcnMgKi8sCkBAIC0zMTcxMSw2ICszMTc1MCw3IEBACiAJCQkJQkM4MjQzMjkw
RDBDRThBMjAwNDYwQzhGIC8qIEpTU1FMRXJyb3IuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBRTgy
RkVEMENBQjA3RUUwMDIyMzdBRSAvKiBKU1NRTFJlc3VsdFNldC5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJMUFGRTExOUEwQ0JGRkNDNDAwMzAxN0ZBIC8qIEpTU1FMUmVzdWx0U2V0Um93TGlzdC5oIGlu
IEhlYWRlcnMgKi8sCisJCQkJODMxQjYxNzYyNDk5QTVCQjAwQzA3Qzc5IC8qIFdlYktpdEF1ZGlv
UGFubmVyTm9kZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjU5REQ2QTUxMTkwMkE2MjAwN0U5Njg0
IC8qIEpTU1FMU3RhdGVtZW50Q2FsbGJhY2suaCBpbiBIZWFkZXJzICovLAogCQkJCUI1OURENkE5
MTE5MDJBNzEwMDdFOTY4NCAvKiBKU1NRTFN0YXRlbWVudEVycm9yQ2FsbGJhY2suaCBpbiBIZWFk
ZXJzICovLAogCQkJCUJDODI0MzJBMEQwQ0U4QTIwMDQ2MEM4RiAvKiBKU1NRTFRyYW5zYWN0aW9u
LmggaW4gSGVhZGVycyAqLywKQEAgLTMyMTg5LDYgKzMyMjI5LDcgQEAKIAkJCQkwNzYzOEE5OTE4
ODQ0ODcyMDBFMTVBMUIgLyogTWVkaWFTZXNzaW9uTWFuYWdlcklPUy5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJQzlEODUxRjAxQjM5REM3ODAwODUwNjJFIC8qIE1lZGlhU2Vzc2lvbk1ldGFkYXRhLmgg
aW4gSGVhZGVycyAqLywKIAkJCQlDRDNBNDk1RjE3QTlEMDFCMDAyNzRFNDIgLyogTWVkaWFTb3Vy
Y2UuaCBpbiBIZWFkZXJzICovLAorCQkJCTgzMDQwMjgzMjQ5QTdBNjIwMEE5MEQ4RCAvKiBEaXN0
YW5jZU1vZGVsVHlwZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQ0Q2NDFFQjMxODE4RjVFRDAwRUU0
QzQxIC8qIE1lZGlhU291cmNlUHJpdmF0ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQ0RDOEI1QTcx
ODA0NzRGNzAwMTZFNjg1IC8qIE1lZGlhU291cmNlUHJpdmF0ZUFWRk9iakMuaCBpbiBIZWFkZXJz
ICovLAogCQkJCUNEREMxRTdBMThBOTUyRjMwMDI3QTlENCAvKiBNZWRpYVNvdXJjZVByaXZhdGVD
bGllbnQuaCBpbiBIZWFkZXJzICovLApAQCAtMzI4MDQsNiArMzI4NDUsNyBAQAogCQkJCTUxRUU3
QjM4MUFBNTBCMDUwMEY5MkIyMSAvKiBSZXNvdXJjZUxvYWRJbmZvLmggaW4gSGVhZGVycyAqLywK
IAkJCQk5NzNFMzI1NzEwODgzQjdDMDA1QkM0OTMgLyogUmVzb3VyY2VMb2FkTm90aWZpZXIuaCBp
biBIZWFkZXJzICovLAogCQkJCTZCNjkzQTJFMUM1MUE4MkUwMEIwM0JFRiAvKiBSZXNvdXJjZUxv
YWRPYnNlcnZlci5oIGluIEhlYWRlcnMgKi8sCisJCQkJODMxQjYxNzcyNDk5QTVCRjAwQzA3Qzc5
IC8qIFdlYktpdE9mZmxpbmVBdWRpb0NvbnRleHQuaCBpbiBIZWFkZXJzICovLAogCQkJCUU0Mjk1
RkE0MTJCMDYxNEUwMEQxQUNFMCAvKiBSZXNvdXJjZUxvYWRQcmlvcml0eS5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJN0E5MjlDQTcxQzU5OEFBOTAwNERGMjI2IC8qIFJlc291cmNlTG9hZFN0YXRpc3Rp
Y3MuaCBpbiBIZWFkZXJzICovLAogCQkJCTdFRTY4NDZEMTJEMjZFMzgwMEU3OTQxNSAvKiBSZXNv
dXJjZVJlcXVlc3QuaCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvV2ViQ29yZUJ1aWx0aW5OYW1lcy5oIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvV2ViQ29yZUJ1aWx0aW5OYW1lcy5oCmluZGV4IGM5MWI0ZGZhZDcxLi4zZWI2MmIyYTgx
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvV2ViQ29yZUJ1aWx0aW5O
YW1lcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1dlYkNvcmVCdWlsdGluTmFt
ZXMuaApAQCAtNDksNiArNDksNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgbWFjcm8oQXBw
bGVQYXlTZXR1cEZlYXR1cmUpIFwKICAgICBtYWNybyhBdHRhY2htZW50RWxlbWVudCkgXAogICAg
IG1hY3JvKEF1ZGlvKSBcCisgICAgbWFjcm8oQXVkaW9Db250ZXh0KSBcCiAgICAgbWFjcm8oQXV0
aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNlKSBcCiAgICAgbWFjcm8oQXV0aGVudGljYXRvckF0
dGVzdGF0aW9uUmVzcG9uc2UpIFwKICAgICBtYWNybyhBdXRoZW50aWNhdG9yUmVzcG9uc2UpIFwK
QEAgLTE2NSw5ICsxNjYsMTEgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIG1hY3JvKE5hdmln
YXRvckNyZWRlbnRpYWxzKSBcCiAgICAgbWFjcm8oTmF2aWdhdG9yTWVkaWFEZXZpY2VzKSBcCiAg
ICAgbWFjcm8oTmF2aWdhdG9yVXNlck1lZGlhKSBcCisgICAgbWFjcm8oT2ZmbGluZUF1ZGlvQ29u
dGV4dCkgXAogICAgIG1hY3JvKE9mZnNjcmVlbkNhbnZhcykgXAogICAgIG1hY3JvKE9mZnNjcmVl
bkNhbnZhc1JlbmRlcmluZ0NvbnRleHQyRCkgXAogICAgIG1hY3JvKFBhaW50UmVuZGVyaW5nQ29u
dGV4dDJEKSBcCisgICAgbWFjcm8oUGFubmVyTm9kZSkgXAogICAgIG1hY3JvKFBheW1lbnRBZGRy
ZXNzKSBcCiAgICAgbWFjcm8oUGF5bWVudE1ldGhvZENoYW5nZUV2ZW50KSBcCiAgICAgbWFjcm8o
UGF5bWVudFJlcXVlc3QpIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudFRh
cmdldEZhY3RvcnkuaW4gYi9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRUYXJnZXRGYWN0b3J5Lmlu
CmluZGV4IGZjMWRiMmNlMGUwLi5hMTU0YjQ0NWExMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvZG9tL0V2ZW50VGFyZ2V0RmFjdG9yeS5pbgorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRXZl
bnRUYXJnZXRGYWN0b3J5LmluCkBAIC01Myw2ICs1Myw3IEBAIFZpZGVvVHJhY2tMaXN0IGNvbmRp
dGlvbmFsPVZJREVPCiBWaXN1YWxWaWV3cG9ydAogV2ViQW5pbWF0aW9uCiBXZWJHUFVEZXZpY2Ug
Y29uZGl0aW9uYWw9V0VCR1BVCitXZWJLaXRBdWRpb0NvbnRleHQgY29uZGl0aW9uYWw9V0VCX0FV
RElPCiBXZWJLaXRNZWRpYUtleVNlc3Npb24gY29uZGl0aW9uYWw9TEVHQUNZX0VOQ1JZUFRFRF9N
RURJQQogV2ViU29ja2V0CiBXb3JrZXIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
U2V0dGluZ3MueWFtbCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3MueWFtbAppbmRleCAy
ZDZiYzZmZjJlZi4uNTgzZmM2Zjc5NWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
U2V0dGluZ3MueWFtbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdzLnlhbWwKQEAg
LTI1NSw2ICsyNTUsOCBAQCBsb2FkRGVmZXJyaW5nRW5hYmxlZDoKICAgaW5pdGlhbDogdHJ1ZQog
d2ViQXVkaW9FbmFibGVkOgogICBpbml0aWFsOiBmYWxzZQorbW9kZXJuVW5wcmVmaXhlZFdlYkF1
ZGlvRW5hYmxlZDoKKyAgaW5pdGlhbDogZmFsc2UKIHBhZ2luYXRlRHVyaW5nTGF5b3V0RW5hYmxl
ZDoKICAgaW5pdGlhbDogZmFsc2UKIGZ1bGxTY3JlZW5FbmFibGVkOgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9TaGFyZWQvV2ViUHJlZmVyZW5jZXMueWFtbCBiL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL1dlYlByZWZlcmVuY2VzLnlhbWwKaW5kZXggZmFkMWE5ZjU4ODYuLjUyMzVjZTcxZmY3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQcmVmZXJlbmNlcy55YW1sCisrKyBi
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlByZWZlcmVuY2VzLnlhbWwKQEAgLTMzNCw2ICszMzQs
MTQgQEAgV2ViQXVkaW9FbmFibGVkOgogICBkZWZhdWx0VmFsdWU6IHRydWUKICAgY29uZGl0aW9u
OiBFTkFCTEUoV0VCX0FVRElPKQogCitNb2Rlcm5VbnByZWZpeGVkV2ViQXVkaW9FbmFibGVkOgor
ICB0eXBlOiBib29sCisgIGRlZmF1bHRWYWx1ZTogZmFsc2UKKyAgY29uZGl0aW9uOiBFTkFCTEUo
V0VCX0FVRElPKQorICBodW1hblJlYWRhYmxlTmFtZTogIk1vZGVybiBXZWJBdWRpbyBBUEkiCisg
IGh1bWFuUmVhZGFibGVEZXNjcmlwdGlvbjogIk1vZGVybiBhbmQgdW5wcmVmaXhlZCBXZWJBdWRp
byBBUEkiCisgIGNhdGVnb3J5OiBleHBlcmltZW50YWwKKwogQXR0YWNobWVudEVsZW1lbnRFbmFi
bGVkOgogICB0eXBlOiBib29sCiAgIGRlZmF1bHRWYWx1ZTogZmFsc2UK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>402119</attachid>
            <date>2020-06-17 09:39:38 -0700</date>
            <delta_ts>2020-06-17 10:08:12 -0700</delta_ts>
            <desc>WIP Patch</desc>
            <filename>213268_wip.patch</filename>
            <type>text/plain</type>
            <size>215578</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dlYkNv
cmUvQ01ha2VMaXN0cy50eHQKaW5kZXggOTc1OTQ4OTVkOGMuLjM5OWE2YmQzZmQwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9D
TWFrZUxpc3RzLnR4dApAQCAtNDMzLDYgKzQzMyw3IEBAIHNldChXZWJDb3JlX05PTl9TVkdfSURM
X0ZJTEVTCiAgICAgTW9kdWxlcy93ZWJhdWRpby9BdWRpb0J1ZmZlckNhbGxiYWNrLmlkbAogICAg
IE1vZHVsZXMvd2ViYXVkaW8vQXVkaW9CdWZmZXJTb3VyY2VOb2RlLmlkbAogICAgIE1vZHVsZXMv
d2ViYXVkaW8vQXVkaW9Db250ZXh0LmlkbAorICAgIE1vZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250
ZXh0U3RhdGUuaWRsCiAgICAgTW9kdWxlcy93ZWJhdWRpby9BdWRpb0Rlc3RpbmF0aW9uTm9kZS5p
ZGwKICAgICBNb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvTGlzdGVuZXIuaWRsCiAgICAgTW9kdWxlcy93
ZWJhdWRpby9BdWRpb05vZGUuaWRsCkBAIC00NDMsNiArNDQ0LDcgQEAgc2V0KFdlYkNvcmVfTk9O
X1NWR19JRExfRklMRVMKICAgICBNb2R1bGVzL3dlYmF1ZGlvL0NoYW5uZWxTcGxpdHRlck5vZGUu
aWRsCiAgICAgTW9kdWxlcy93ZWJhdWRpby9Db252b2x2ZXJOb2RlLmlkbAogICAgIE1vZHVsZXMv
d2ViYXVkaW8vRGVsYXlOb2RlLmlkbAorICAgIE1vZHVsZXMvd2ViYXVkaW8vRGlzdGFuY2VNb2Rl
bFR5cGUuaWRsCiAgICAgTW9kdWxlcy93ZWJhdWRpby9EeW5hbWljc0NvbXByZXNzb3JOb2RlLmlk
bAogICAgIE1vZHVsZXMvd2ViYXVkaW8vR2Fpbk5vZGUuaWRsCiAgICAgTW9kdWxlcy93ZWJhdWRp
by9NZWRpYUVsZW1lbnRBdWRpb1NvdXJjZU5vZGUuaWRsCkBAIC00NTIsOSArNDU0LDEzIEBAIHNl
dChXZWJDb3JlX05PTl9TVkdfSURMX0ZJTEVTCiAgICAgTW9kdWxlcy93ZWJhdWRpby9PZmZsaW5l
QXVkaW9Db250ZXh0LmlkbAogICAgIE1vZHVsZXMvd2ViYXVkaW8vT3NjaWxsYXRvck5vZGUuaWRs
CiAgICAgTW9kdWxlcy93ZWJhdWRpby9QYW5uZXJOb2RlLmlkbAorICAgIE1vZHVsZXMvd2ViYXVk
aW8vUGFubmluZ01vZGVsVHlwZS5pZGwKICAgICBNb2R1bGVzL3dlYmF1ZGlvL1BlcmlvZGljV2F2
ZS5pZGwKICAgICBNb2R1bGVzL3dlYmF1ZGlvL1NjcmlwdFByb2Nlc3Nvck5vZGUuaWRsCiAgICAg
TW9kdWxlcy93ZWJhdWRpby9XYXZlU2hhcGVyTm9kZS5pZGwKKyAgICBNb2R1bGVzL3dlYmF1ZGlv
L1dlYktpdEF1ZGlvQ29udGV4dC5pZGwKKyAgICBNb2R1bGVzL3dlYmF1ZGlvL1dlYktpdEF1ZGlv
UGFubmVyTm9kZS5pZGwKKyAgICBNb2R1bGVzL3dlYmF1ZGlvL1dlYktpdE9mZmxpbmVBdWRpb0Nv
bnRleHQuaWRsCiAKICAgICBNb2R1bGVzL3dlYmF1dGhuL0F0dGVzdGF0aW9uQ29udmV5YW5jZVBy
ZWZlcmVuY2UuaWRsCiAgICAgTW9kdWxlcy93ZWJhdXRobi9BdXRoZW50aWNhdGlvbkV4dGVuc2lv
bnNDbGllbnRJbnB1dHMuaWRsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291
cmNlcy1pbnB1dC54Y2ZpbGVsaXN0IGIvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMtaW5w
dXQueGNmaWxlbGlzdAppbmRleCA2YTdhYTdkMTRlYi4uMDRhMzM3OGJkYmQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLWlucHV0LnhjZmlsZWxpc3QKKysrIGIvU291
cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMtaW5wdXQueGNmaWxlbGlzdApAQCAtMzIyLDYgKzMy
Miw3IEBAICQoUFJPSkVDVF9ESVIpL01vZHVsZXMvd2ViYXVkaW8vUGFubmVyTm9kZS5pZGwKICQo
UFJPSkVDVF9ESVIpL01vZHVsZXMvd2ViYXVkaW8vUGVyaW9kaWNXYXZlLmlkbAogJChQUk9KRUNU
X0RJUikvTW9kdWxlcy93ZWJhdWRpby9TY3JpcHRQcm9jZXNzb3JOb2RlLmlkbAogJChQUk9KRUNU
X0RJUikvTW9kdWxlcy93ZWJhdWRpby9XYXZlU2hhcGVyTm9kZS5pZGwKKyQoUFJPSkVDVF9ESVIp
L01vZHVsZXMvd2ViYXVkaW8vV2ViS2l0QXVkaW9Db250ZXh0LmlkbAogJChQUk9KRUNUX0RJUikv
TW9kdWxlcy93ZWJhdXRobi9BdHRlc3RhdGlvbkNvbnZleWFuY2VQcmVmZXJlbmNlLmlkbAogJChQ
Uk9KRUNUX0RJUikvTW9kdWxlcy93ZWJhdXRobi9BdXRoZW50aWNhdGlvbkV4dGVuc2lvbnNDbGll
bnRJbnB1dHMuaWRsCiAkKFBST0pFQ1RfRElSKS9Nb2R1bGVzL3dlYmF1dGhuL0F1dGhlbnRpY2F0
aW9uRXh0ZW5zaW9uc0NsaWVudE91dHB1dHMuaWRsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9EZXJpdmVkU291cmNlcy5tYWtlIGIvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMubWFr
ZQppbmRleCBkMjY3MDg5ZTM4Ny4uYjI3Yzc5Y2U2NjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UKKysrIGIvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJj
ZXMubWFrZQpAQCAtMzgzLDYgKzM4Myw3IEBAIEpTX0JJTkRJTkdfSURMUyA9IFwKICAgICAkKFdl
YkNvcmUpL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9CdWZmZXJDYWxsYmFjay5pZGwgXAogICAgICQo
V2ViQ29yZSkvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0J1ZmZlclNvdXJjZU5vZGUuaWRsIFwKICAg
ICAkKFdlYkNvcmUpL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0LmlkbCBcCisgICAgJChX
ZWJDb3JlKS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQ29udGV4dFN0YXRlLmlkbCBcCiAgICAgJChX
ZWJDb3JlKS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvRGVzdGluYXRpb25Ob2RlLmlkbCBcCiAgICAg
JChXZWJDb3JlKS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvTGlzdGVuZXIuaWRsIFwKICAgICAkKFdl
YkNvcmUpL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Ob2RlLmlkbCBcCkBAIC0zOTMsNiArMzk0LDcg
QEAgSlNfQklORElOR19JRExTID0gXAogICAgICQoV2ViQ29yZSkvTW9kdWxlcy93ZWJhdWRpby9D
aGFubmVsU3BsaXR0ZXJOb2RlLmlkbCBcCiAgICAgJChXZWJDb3JlKS9Nb2R1bGVzL3dlYmF1ZGlv
L0NvbnZvbHZlck5vZGUuaWRsIFwKICAgICAkKFdlYkNvcmUpL01vZHVsZXMvd2ViYXVkaW8vRGVs
YXlOb2RlLmlkbCBcCisgICAgJChXZWJDb3JlKS9Nb2R1bGVzL3dlYmF1ZGlvL0Rpc3RhbmNlTW9k
ZWxUeXBlLmlkbCBcCiAgICAgJChXZWJDb3JlKS9Nb2R1bGVzL3dlYmF1ZGlvL0R5bmFtaWNzQ29t
cHJlc3Nvck5vZGUuaWRsIFwKICAgICAkKFdlYkNvcmUpL01vZHVsZXMvd2ViYXVkaW8vR2Fpbk5v
ZGUuaWRsIFwKICAgICAkKFdlYkNvcmUpL01vZHVsZXMvd2ViYXVkaW8vTWVkaWFFbGVtZW50QXVk
aW9Tb3VyY2VOb2RlLmlkbCBcCkBAIC00MDIsOSArNDA0LDEzIEBAIEpTX0JJTkRJTkdfSURMUyA9
IFwKICAgICAkKFdlYkNvcmUpL01vZHVsZXMvd2ViYXVkaW8vT2ZmbGluZUF1ZGlvQ29udGV4dC5p
ZGwgXAogICAgICQoV2ViQ29yZSkvTW9kdWxlcy93ZWJhdWRpby9Pc2NpbGxhdG9yTm9kZS5pZGwg
XAogICAgICQoV2ViQ29yZSkvTW9kdWxlcy93ZWJhdWRpby9QYW5uZXJOb2RlLmlkbCBcCisgICAg
JChXZWJDb3JlKS9Nb2R1bGVzL3dlYmF1ZGlvL1Bhbm5pbmdNb2RlbFR5cGUuaWRsIFwKICAgICAk
KFdlYkNvcmUpL01vZHVsZXMvd2ViYXVkaW8vUGVyaW9kaWNXYXZlLmlkbCBcCiAgICAgJChXZWJD
b3JlKS9Nb2R1bGVzL3dlYmF1ZGlvL1NjcmlwdFByb2Nlc3Nvck5vZGUuaWRsIFwKICAgICAkKFdl
YkNvcmUpL01vZHVsZXMvd2ViYXVkaW8vV2F2ZVNoYXBlck5vZGUuaWRsIFwKKyAgICAkKFdlYkNv
cmUpL01vZHVsZXMvd2ViYXVkaW8vV2ViS2l0QXVkaW9Db250ZXh0LmlkbCBcCisgICAgJChXZWJD
b3JlKS9Nb2R1bGVzL3dlYmF1ZGlvL1dlYktpdEF1ZGlvUGFubmVyTm9kZS5pZGwgXAorICAgICQo
V2ViQ29yZSkvTW9kdWxlcy93ZWJhdWRpby9XZWJLaXRPZmZsaW5lQXVkaW9Db250ZXh0LmlkbCBc
CiAgICAgJChXZWJDb3JlKS9Nb2R1bGVzL3dlYmF1dGhuL0F0dGVzdGF0aW9uQ29udmV5YW5jZVBy
ZWZlcmVuY2UuaWRsIFwKICAgICAkKFdlYkNvcmUpL01vZHVsZXMvd2ViYXV0aG4vQXV0aGVudGlj
YXRpb25FeHRlbnNpb25zQ2xpZW50SW5wdXRzLmlkbCBcCiAgICAgJChXZWJDb3JlKS9Nb2R1bGVz
L3dlYmF1dGhuL0F1dGhlbnRpY2F0aW9uRXh0ZW5zaW9uc0NsaWVudE91dHB1dHMuaWRsIFwKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQW5hbHlzZXJOb2RlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQW5hbHlzZXJOb2RlLmNwcAppbmRl
eCAxNzk4NzA3MDFmOC4uMjE1ZGUzMjFlOWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViYXVkaW8vQW5hbHlzZXJOb2RlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmF1ZGlvL0FuYWx5c2VyTm9kZS5jcHAKQEAgLTM2LDcgKzM2LDcgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogCiBXVEZfTUFLRV9JU09fQUxMT0NBVEVEX0lNUEwoQW5hbHlzZXJOb2RlKTsK
IAotQW5hbHlzZXJOb2RlOjpBbmFseXNlck5vZGUoQXVkaW9Db250ZXh0JiBjb250ZXh0LCBmbG9h
dCBzYW1wbGVSYXRlKQorQW5hbHlzZXJOb2RlOjpBbmFseXNlck5vZGUoQXVkaW9Db250ZXh0QmFz
ZSYgY29udGV4dCwgZmxvYXQgc2FtcGxlUmF0ZSkKICAgICA6IEF1ZGlvQmFzaWNJbnNwZWN0b3JO
b2RlKGNvbnRleHQsIHNhbXBsZVJhdGUsIDIpCiB7CiAgICAgc2V0Tm9kZVR5cGUoTm9kZVR5cGVB
bmFseXNlcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0Fu
YWx5c2VyTm9kZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BbmFseXNlck5v
ZGUuaAppbmRleCBkYTFiNWU4OWNhMi4uYTQwMjNhMzBkZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQW5hbHlzZXJOb2RlLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJhdWRpby9BbmFseXNlck5vZGUuaApAQCAtMzIsNyArMzIsNyBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBBbmFseXNlck5vZGUgZmluYWwgOiBwdWJsaWMgQXVkaW9C
YXNpY0luc3BlY3Rvck5vZGUgewogICAgIFdURl9NQUtFX0lTT19BTExPQ0FURUQoQW5hbHlzZXJO
b2RlKTsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPEFuYWx5c2VyTm9kZT4gY3JlYXRlKEF1ZGlv
Q29udGV4dCYgY29udGV4dCwgZmxvYXQgc2FtcGxlUmF0ZSkKKyAgICBzdGF0aWMgUmVmPEFuYWx5
c2VyTm9kZT4gY3JlYXRlKEF1ZGlvQ29udGV4dEJhc2UmIGNvbnRleHQsIGZsb2F0IHNhbXBsZVJh
dGUpCiAgICAgewogICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBBbmFseXNlck5vZGUoY29u
dGV4dCwgc2FtcGxlUmF0ZSkpOwogICAgIH0KQEAgLTU4LDcgKzU4LDcgQEAgcHVibGljOgogICAg
IHZvaWQgZ2V0Qnl0ZVRpbWVEb21haW5EYXRhKGNvbnN0IFJlZlB0cjxKU0M6OlVpbnQ4QXJyYXk+
JiBhcnJheSkgeyBtX2FuYWx5c2VyLmdldEJ5dGVUaW1lRG9tYWluRGF0YShhcnJheS5nZXQoKSk7
IH0KIAogcHJpdmF0ZToKLSAgICBBbmFseXNlck5vZGUoQXVkaW9Db250ZXh0JiwgZmxvYXQgc2Ft
cGxlUmF0ZSk7CisgICAgQW5hbHlzZXJOb2RlKEF1ZGlvQ29udGV4dEJhc2UmLCBmbG9hdCBzYW1w
bGVSYXRlKTsKIAogICAgIHZvaWQgcHJvY2VzcyhzaXplX3QgZnJhbWVzVG9Qcm9jZXNzKSBmaW5h
bDsKICAgICB2b2lkIHJlc2V0KCkgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQmFzaWNJbnNwZWN0b3JOb2RlLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9CYXNpY0luc3BlY3Rvck5vZGUuY3BwCmluZGV4IDBm
YjU1YjA4ZjBjLi4xNDUzZGFjYWZkYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJhdWRpby9BdWRpb0Jhc2ljSW5zcGVjdG9yTm9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0Jhc2ljSW5zcGVjdG9yTm9kZS5jcHAKQEAgLTM2LDcg
KzM2LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBXVEZfTUFLRV9JU09fQUxMT0NBVEVEX0lN
UEwoQXVkaW9CYXNpY0luc3BlY3Rvck5vZGUpOwogCi1BdWRpb0Jhc2ljSW5zcGVjdG9yTm9kZTo6
QXVkaW9CYXNpY0luc3BlY3Rvck5vZGUoQXVkaW9Db250ZXh0JiBjb250ZXh0LCBmbG9hdCBzYW1w
bGVSYXRlLCB1bnNpZ25lZCBvdXRwdXRDaGFubmVsQ291bnQpCitBdWRpb0Jhc2ljSW5zcGVjdG9y
Tm9kZTo6QXVkaW9CYXNpY0luc3BlY3Rvck5vZGUoQXVkaW9Db250ZXh0QmFzZSYgY29udGV4dCwg
ZmxvYXQgc2FtcGxlUmF0ZSwgdW5zaWduZWQgb3V0cHV0Q2hhbm5lbENvdW50KQogICAgIDogQXVk
aW9Ob2RlKGNvbnRleHQsIHNhbXBsZVJhdGUpCiB7CiAgICAgc2V0Tm9kZVR5cGUoTm9kZVR5cGVC
YXNpY0luc3BlY3Rvcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1
ZGlvL0F1ZGlvQmFzaWNJbnNwZWN0b3JOb2RlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmF1ZGlvL0F1ZGlvQmFzaWNJbnNwZWN0b3JOb2RlLmgKaW5kZXggODBlMDhkMjk2MTcuLmU3Njll
NDZhZTIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlv
QmFzaWNJbnNwZWN0b3JOb2RlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRp
by9BdWRpb0Jhc2ljSW5zcGVjdG9yTm9kZS5oCkBAIC0zNCw3ICszNCw3IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIGNsYXNzIEF1ZGlvQmFzaWNJbnNwZWN0b3JOb2RlIDogcHVibGljIEF1ZGlvTm9k
ZSB7CiAgICAgV1RGX01BS0VfSVNPX0FMTE9DQVRFRChBdWRpb0Jhc2ljSW5zcGVjdG9yTm9kZSk7
CiBwdWJsaWM6Ci0gICAgQXVkaW9CYXNpY0luc3BlY3Rvck5vZGUoQXVkaW9Db250ZXh0JiwgZmxv
YXQgc2FtcGxlUmF0ZSwgdW5zaWduZWQgb3V0cHV0Q2hhbm5lbENvdW50KTsKKyAgICBBdWRpb0Jh
c2ljSW5zcGVjdG9yTm9kZShBdWRpb0NvbnRleHRCYXNlJiwgZmxvYXQgc2FtcGxlUmF0ZSwgdW5z
aWduZWQgb3V0cHV0Q2hhbm5lbENvdW50KTsKIAogcHJpdmF0ZToKICAgICB2b2lkIHB1bGxJbnB1
dHMoc2l6ZV90IGZyYW1lc1RvUHJvY2Vzcykgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQmFzaWNQcm9jZXNzb3JOb2RlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9CYXNpY1Byb2Nlc3Nvck5vZGUuY3Bw
CmluZGV4IDBiOWYxY2VkODc0Li5mN2I3OTZiZTU1NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0Jhc2ljUHJvY2Vzc29yTm9kZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0Jhc2ljUHJvY2Vzc29yTm9kZS5jcHAK
QEAgLTM5LDcgKzM5LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBXVEZfTUFLRV9JU09fQUxM
T0NBVEVEX0lNUEwoQXVkaW9CYXNpY1Byb2Nlc3Nvck5vZGUpOwogCi1BdWRpb0Jhc2ljUHJvY2Vz
c29yTm9kZTo6QXVkaW9CYXNpY1Byb2Nlc3Nvck5vZGUoQXVkaW9Db250ZXh0JiBjb250ZXh0LCBm
bG9hdCBzYW1wbGVSYXRlKQorQXVkaW9CYXNpY1Byb2Nlc3Nvck5vZGU6OkF1ZGlvQmFzaWNQcm9j
ZXNzb3JOb2RlKEF1ZGlvQ29udGV4dEJhc2UmIGNvbnRleHQsIGZsb2F0IHNhbXBsZVJhdGUpCiAg
ICAgOiBBdWRpb05vZGUoY29udGV4dCwgc2FtcGxlUmF0ZSkKIHsKICAgICBhZGRJbnB1dChtYWtl
VW5pcXVlPEF1ZGlvTm9kZUlucHV0Pih0aGlzKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQmFzaWNQcm9jZXNzb3JOb2RlLmggYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQmFzaWNQcm9jZXNzb3JOb2RlLmgKaW5kZXggODJj
ZmZkYTU5ZjIuLmUxNjM3M2JmMDI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmF1ZGlvL0F1ZGlvQmFzaWNQcm9jZXNzb3JOb2RlLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJhdWRpby9BdWRpb0Jhc2ljUHJvY2Vzc29yTm9kZS5oCkBAIC0zNyw3ICszNyw3
IEBAIGNsYXNzIEF1ZGlvUHJvY2Vzc29yOwogY2xhc3MgQXVkaW9CYXNpY1Byb2Nlc3Nvck5vZGUg
OiBwdWJsaWMgQXVkaW9Ob2RlIHsKICAgICBXVEZfTUFLRV9JU09fQUxMT0NBVEVEKEF1ZGlvQmFz
aWNQcm9jZXNzb3JOb2RlKTsKIHB1YmxpYzoKLSAgICBBdWRpb0Jhc2ljUHJvY2Vzc29yTm9kZShB
dWRpb0NvbnRleHQmLCBmbG9hdCBzYW1wbGVSYXRlKTsKKyAgICBBdWRpb0Jhc2ljUHJvY2Vzc29y
Tm9kZShBdWRpb0NvbnRleHRCYXNlJiwgZmxvYXQgc2FtcGxlUmF0ZSk7CiAKICAgICAvLyBBdWRp
b05vZGUKICAgICB2b2lkIHByb2Nlc3Moc2l6ZV90IGZyYW1lc1RvUHJvY2Vzcykgb3ZlcnJpZGU7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQnVmZmVy
U291cmNlTm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQnVm
ZmVyU291cmNlTm9kZS5jcHAKaW5kZXggYzM2NjFkZTU3ZDcuLjBjMWJhNGU5NGE5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQnVmZmVyU291cmNlTm9k
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0J1ZmZlclNv
dXJjZU5vZGUuY3BwCkBAIC00OSwxMiArNDksMTIgQEAgY29uc3QgZG91YmxlIERlZmF1bHRHcmFp
bkR1cmF0aW9uID0gMC4wMjA7IC8vIDIwbXMKIC8vIHRvIG1pbmltaXplIGxpbmVhciBpbnRlcnBv
bGF0aW9uIGFsaWFzaW5nLgogY29uc3QgZG91YmxlIE1heFJhdGUgPSAxMDI0OwogCi1SZWY8QXVk
aW9CdWZmZXJTb3VyY2VOb2RlPiBBdWRpb0J1ZmZlclNvdXJjZU5vZGU6OmNyZWF0ZShBdWRpb0Nv
bnRleHQmIGNvbnRleHQsIGZsb2F0IHNhbXBsZVJhdGUpCitSZWY8QXVkaW9CdWZmZXJTb3VyY2VO
b2RlPiBBdWRpb0J1ZmZlclNvdXJjZU5vZGU6OmNyZWF0ZShBdWRpb0NvbnRleHRCYXNlJiBjb250
ZXh0LCBmbG9hdCBzYW1wbGVSYXRlKQogewogICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEF1ZGlv
QnVmZmVyU291cmNlTm9kZShjb250ZXh0LCBzYW1wbGVSYXRlKSk7CiB9CiAKLUF1ZGlvQnVmZmVy
U291cmNlTm9kZTo6QXVkaW9CdWZmZXJTb3VyY2VOb2RlKEF1ZGlvQ29udGV4dCYgY29udGV4dCwg
ZmxvYXQgc2FtcGxlUmF0ZSkKK0F1ZGlvQnVmZmVyU291cmNlTm9kZTo6QXVkaW9CdWZmZXJTb3Vy
Y2VOb2RlKEF1ZGlvQ29udGV4dEJhc2UmIGNvbnRleHQsIGZsb2F0IHNhbXBsZVJhdGUpCiAgICAg
OiBBdWRpb1NjaGVkdWxlZFNvdXJjZU5vZGUoY29udGV4dCwgc2FtcGxlUmF0ZSkKICAgICAsIG1f
YnVmZmVyKG51bGxwdHIpCiAgICAgLCBtX2lzTG9vcGluZyhmYWxzZSkKQEAgLTQxMyw3ICs0MTMs
NyBAQCB2b2lkIEF1ZGlvQnVmZmVyU291cmNlTm9kZTo6c2V0QnVmZmVyKFJlZlB0cjxBdWRpb0J1
ZmZlcj4mJiBidWZmZXIpCiAgICAgREVCVUdfTE9HKExPR0lERU5USUZJRVIpOwogCiAgICAgLy8g
VGhlIGNvbnRleHQgbXVzdCBiZSBsb2NrZWQgc2luY2UgY2hhbmdpbmcgdGhlIGJ1ZmZlciBjYW4g
cmUtY29uZmlndXJlIHRoZSBudW1iZXIgb2YgY2hhbm5lbHMgdGhhdCBhcmUgb3V0cHV0LgotICAg
IEF1ZGlvQ29udGV4dDo6QXV0b0xvY2tlciBjb250ZXh0TG9ja2VyKGNvbnRleHQoKSk7CisgICAg
QXVkaW9Db250ZXh0QmFzZTo6QXV0b0xvY2tlciBjb250ZXh0TG9ja2VyKGNvbnRleHQoKSk7CiAg
ICAgCiAgICAgLy8gVGhpcyBzeW5jaHJvbml6ZXMgd2l0aCBwcm9jZXNzKCkuCiAgICAgYXV0byBs
b2NrZXIgPSBob2xkTG9jayhtX3Byb2Nlc3NNdXRleCk7CkBAIC01NTcsNyArNTU3LDcgQEAgYm9v
bCBBdWRpb0J1ZmZlclNvdXJjZU5vZGU6OnByb3BhZ2F0ZXNTaWxlbmNlKCkgY29uc3QKICAgICBy
ZXR1cm4gIWlzUGxheWluZ09yU2NoZWR1bGVkKCkgfHwgaGFzRmluaXNoZWQoKSB8fCAhbV9idWZm
ZXI7CiB9CiAKLXZvaWQgQXVkaW9CdWZmZXJTb3VyY2VOb2RlOjpzZXRQYW5uZXJOb2RlKFBhbm5l
ck5vZGUqIHBhbm5lck5vZGUpCit2b2lkIEF1ZGlvQnVmZmVyU291cmNlTm9kZTo6c2V0UGFubmVy
Tm9kZShQYW5uZXJOb2RlQmFzZSogcGFubmVyTm9kZSkKIHsKICAgICBpZiAobV9wYW5uZXJOb2Rl
ICE9IHBhbm5lck5vZGUgJiYgIWhhc0ZpbmlzaGVkKCkpIHsKICAgICAgICAgaWYgKHBhbm5lck5v
ZGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQnVm
ZmVyU291cmNlTm9kZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0J1
ZmZlclNvdXJjZU5vZGUuaAppbmRleCA1NDhiMjZlN2ZhNy4uNjAxMTMxMTk5YTQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9CdWZmZXJTb3VyY2VOb2Rl
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0J1ZmZlclNvdXJj
ZU5vZGUuaApAQCAtMzEsNyArMzEsNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBB
dWRpb0J1ZmZlcjsKLWNsYXNzIFBhbm5lck5vZGU7CitjbGFzcyBQYW5uZXJOb2RlQmFzZTsKIAog
Ly8gQXVkaW9CdWZmZXJTb3VyY2VOb2RlIGlzIGFuIEF1ZGlvTm9kZSByZXByZXNlbnRpbmcgYW4g
YXVkaW8gc291cmNlIGZyb20gYW4gaW4tbWVtb3J5IGF1ZGlvIGFzc2V0IHJlcHJlc2VudGVkIGJ5
IGFuIEF1ZGlvQnVmZmVyLgogLy8gSXQgZ2VuZXJhbGx5IHdpbGwgYmUgdXNlZCBmb3Igc2hvcnQg
c291bmRzIHdoaWNoIHJlcXVpcmUgYSBoaWdoIGRlZ3JlZSBvZiBzY2hlZHVsaW5nIGZsZXhpYmls
aXR5IChjYW4gcGxheWJhY2sgaW4gcmh5dGhtaWNhbGx5IHBlcmZlY3Qgd2F5cykuCkBAIC0zOSw3
ICszOSw3IEBAIGNsYXNzIFBhbm5lck5vZGU7CiBjbGFzcyBBdWRpb0J1ZmZlclNvdXJjZU5vZGUg
ZmluYWwgOiBwdWJsaWMgQXVkaW9TY2hlZHVsZWRTb3VyY2VOb2RlIHsKICAgICBXVEZfTUFLRV9J
U09fQUxMT0NBVEVEKEF1ZGlvQnVmZmVyU291cmNlTm9kZSk7CiBwdWJsaWM6Ci0gICAgc3RhdGlj
IFJlZjxBdWRpb0J1ZmZlclNvdXJjZU5vZGU+IGNyZWF0ZShBdWRpb0NvbnRleHQmLCBmbG9hdCBz
YW1wbGVSYXRlKTsKKyAgICBzdGF0aWMgUmVmPEF1ZGlvQnVmZmVyU291cmNlTm9kZT4gY3JlYXRl
KEF1ZGlvQ29udGV4dEJhc2UmLCBmbG9hdCBzYW1wbGVSYXRlKTsKIAogICAgIHZpcnR1YWwgfkF1
ZGlvQnVmZmVyU291cmNlTm9kZSgpOwogCkBAIC03OSw3ICs3OSw3IEBAIHB1YmxpYzoKICAgICBB
dWRpb1BhcmFtKiBwbGF5YmFja1JhdGUoKSB7IHJldHVybiBtX3BsYXliYWNrUmF0ZS5nZXQoKTsg
fQogCiAgICAgLy8gSWYgYSBwYW5uZXIgbm9kZSBpcyBzZXQsIHRoZW4gd2UgY2FuIGluY29ycG9y
YXRlIGRvcHBsZXIgc2hpZnQgaW50byB0aGUgcGxheWJhY2sgcGl0Y2ggcmF0ZS4KLSAgICB2b2lk
IHNldFBhbm5lck5vZGUoUGFubmVyTm9kZSopOworICAgIHZvaWQgc2V0UGFubmVyTm9kZShQYW5u
ZXJOb2RlQmFzZSopOwogICAgIHZvaWQgY2xlYXJQYW5uZXJOb2RlKCk7CiAKICAgICAvLyBJZiB3
ZSBhcmUgbm8gbG9uZ2VyIHBsYXlpbmcsIHByb3BvZ2F0ZSBzaWxlbmNlIGFoZWFkIHRvIGRvd25z
dHJlYW0gbm9kZXMuCkBAIC05MSw3ICs5MSw3IEBAIHB1YmxpYzoKICAgICBjb25zdCBjaGFyKiBh
Y3RpdmVET01PYmplY3ROYW1lKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gIkF1ZGlvQnVmZmVy
U291cmNlTm9kZSI7IH0KIAogcHJpdmF0ZToKLSAgICBBdWRpb0J1ZmZlclNvdXJjZU5vZGUoQXVk
aW9Db250ZXh0JiwgZmxvYXQgc2FtcGxlUmF0ZSk7CisgICAgQXVkaW9CdWZmZXJTb3VyY2VOb2Rl
KEF1ZGlvQ29udGV4dEJhc2UmLCBmbG9hdCBzYW1wbGVSYXRlKTsKIAogICAgIGRvdWJsZSB0YWls
VGltZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIDA7IH0KICAgICBkb3VibGUgbGF0ZW5jeVRpbWUo
KSBjb25zdCBmaW5hbCB7IHJldHVybiAwOyB9CkBAIC0xNDUsNyArMTQ1LDcgQEAgcHJpdmF0ZToK
IAogICAgIC8vIFdlIG9wdGlvbmFsbHkga2VlcCB0cmFjayBvZiBhIHBhbm5lciBub2RlIHdoaWNo
IGhhcyBhIGRvcHBsZXIgc2hpZnQgdGhhdCBpcyBpbmNvcnBvcmF0ZWQgaW50bwogICAgIC8vIHRo
ZSBwaXRjaCByYXRlLiBXZSBtYW51YWxseSBtYW5hZ2UgcmVmLWNvdW50aW5nIGJlY2F1c2Ugd2Ug
d2FudCB0byB1c2UgUmVmVHlwZUNvbm5lY3Rpb24uCi0gICAgUGFubmVyTm9kZSogbV9wYW5uZXJO
b2RlOworICAgIFBhbm5lck5vZGVCYXNlKiBtX3Bhbm5lck5vZGU7CiAKICAgICAvLyBUaGlzIHN5
bmNocm9uaXplcyBwcm9jZXNzKCkgd2l0aCBzZXRCdWZmZXIoKSB3aGljaCBjYW4gY2F1c2UgZHlu
YW1pYyBjaGFubmVsIGNvdW50IGNoYW5nZXMuCiAgICAgbXV0YWJsZSBMb2NrIG1fcHJvY2Vzc011
dGV4OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0Nv
bnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0NvbnRleHQu
Y3BwCmluZGV4IDM4MmRjN2NmMGNkLi40ZGEwYTE0MjExZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0LmNwcApAQCAtMTA3LDcgKzEwNyw3IEBA
IGNvbnN0IHVuc2lnbmVkIE1heFBlcmlvZGljV2F2ZUxlbmd0aCA9IDQwOTY7CiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAotV1RGX01BS0VfSVNPX0FMTE9DQVRFRF9JTVBMKEF1ZGlvQ29udGV4dCk7
CitXVEZfTUFLRV9JU09fQUxMT0NBVEVEX0lNUEwoQXVkaW9Db250ZXh0QmFzZSk7CiAKICNkZWZp
bmUgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChmbXQsIC4uLikgUkVMRUFTRV9MT0dfSUYoZG9jdW1l
bnQoKSAmJiBkb2N1bWVudCgpLT5wYWdlKCkgJiYgZG9jdW1lbnQoKS0+cGFnZSgpLT5pc0Fsd2F5
c09uTG9nZ2luZ0FsbG93ZWQoKSwgTWVkaWEsICIlcCAtIEF1ZGlvQ29udGV4dDo6IiBmbXQsIHRo
aXMsICMjX19WQV9BUkdTX18pCiAgICAgCkBAIC0xMzcsOSArMTM3LDE0IEBAIEV4Y2VwdGlvbk9y
PFJlZjxBdWRpb0NvbnRleHQ+PiBBdWRpb0NvbnRleHQ6OmNyZWF0ZShEb2N1bWVudCYgZG9jdW1l
bnQpCiAgICAgcmV0dXJuIGF1ZGlvQ29udGV4dDsKIH0KIAorQXVkaW9Db250ZXh0QmFzZTo6QXVk
aW9Db250ZXh0QmFzZShEb2N1bWVudCYgZG9jdW1lbnQpCisgICAgOiBBY3RpdmVET01PYmplY3Qo
ZG9jdW1lbnQpCit7Cit9CisKIC8vIENvbnN0cnVjdG9yIGZvciByZW5kZXJpbmcgdG8gdGhlIGF1
ZGlvIGhhcmR3YXJlLgogQXVkaW9Db250ZXh0OjpBdWRpb0NvbnRleHQoRG9jdW1lbnQmIGRvY3Vt
ZW50KQotICAgIDogQWN0aXZlRE9NT2JqZWN0KGRvY3VtZW50KQorICAgIDogQXVkaW9Db250ZXh0
QmFzZShkb2N1bWVudCkKICNpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKICAgICAsIG1fbG9nZ2Vy
KGRvY3VtZW50LmxvZ2dlcigpKQogICAgICwgbV9sb2dJZGVudGlmaWVyKHVuaXF1ZUxvZ0lkZW50
aWZpZXIoKSkKQEAgLTE2NCw3ICsxNjksNyBAQCBBdWRpb0NvbnRleHQ6OkF1ZGlvQ29udGV4dChE
b2N1bWVudCYgZG9jdW1lbnQpCiAKIC8vIENvbnN0cnVjdG9yIGZvciBvZmZsaW5lIChub24tcmVh
bHRpbWUpIHJlbmRlcmluZy4KIEF1ZGlvQ29udGV4dDo6QXVkaW9Db250ZXh0KERvY3VtZW50JiBk
b2N1bWVudCwgQXVkaW9CdWZmZXIqIHJlbmRlclRhcmdldCkKLSAgICA6IEFjdGl2ZURPTU9iamVj
dChkb2N1bWVudCkKKyAgICA6IEF1ZGlvQ29udGV4dEJhc2UoZG9jdW1lbnQpCiAjaWYgIVJFTEVB
U0VfTE9HX0RJU0FCTEVECiAgICAgLCBtX2xvZ2dlcihkb2N1bWVudC5sb2dnZXIoKSkKICAgICAs
IG1fbG9nSWRlbnRpZmllcih1bmlxdWVMb2dJZGVudGlmaWVyKCkpCkBAIC0zNjYsNyArMzcxLDcg
QEAgY29uc3QgY2hhciogQXVkaW9Db250ZXh0OjphY3RpdmVET01PYmplY3ROYW1lKCkgY29uc3QK
ICAgICByZXR1cm4gIkF1ZGlvQ29udGV4dCI7CiB9CiAKLURvY3VtZW50KiBBdWRpb0NvbnRleHQ6
OmRvY3VtZW50KCkgY29uc3QKK0RvY3VtZW50KiBBdWRpb0NvbnRleHRCYXNlOjpkb2N1bWVudCgp
IGNvbnN0CiB7CiAgICAgcmV0dXJuIGRvd25jYXN0PERvY3VtZW50PihtX3NjcmlwdEV4ZWN1dGlv
bkNvbnRleHQpOwogfQpAQCAtMTA2OCw3ICsxMDczLDcgQEAgdm9pZCBBdWRpb0NvbnRleHQ6OnBy
b2Nlc3NBdXRvbWF0aWNQdWxsTm9kZXMoc2l6ZV90IGZyYW1lc1RvUHJvY2VzcykKICAgICAgICAg
bm9kZS0+cHJvY2Vzc0lmTmVjZXNzYXJ5KGZyYW1lc1RvUHJvY2Vzcyk7CiB9CiAKLVNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQqIEF1ZGlvQ29udGV4dDo6c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpIGNv
bnN0CitTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBBdWRpb0NvbnRleHRCYXNlOjpzY3JpcHRFeGVj
dXRpb25Db250ZXh0KCkgY29uc3QKIHsKICAgICByZXR1cm4gQWN0aXZlRE9NT2JqZWN0OjpzY3Jp
cHRFeGVjdXRpb25Db250ZXh0KCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmF1ZGlvL0F1ZGlvQ29udGV4dC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJh
dWRpby9BdWRpb0NvbnRleHQuaAppbmRleCA4ZTA5NDM5NGNmZi4uZTMyNDM3NWVkYTkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0NvbnRleHQuaApAQCAtMjgs
NiArMjgsNyBAQAogI2luY2x1ZGUgIkFjdGl2ZURPTU9iamVjdC5oIgogI2luY2x1ZGUgIkFzeW5j
QXVkaW9EZWNvZGVyLmgiCiAjaW5jbHVkZSAiQXVkaW9CdXMuaCIKKyNpbmNsdWRlICJBdWRpb0Nv
bnRleHRTdGF0ZS5oIgogI2luY2x1ZGUgIkF1ZGlvRGVzdGluYXRpb25Ob2RlLmgiCiAjaW5jbHVk
ZSAiRXZlbnRUYXJnZXQuaCIKICNpbmNsdWRlICJNZWRpYUNhblN0YXJ0TGlzdGVuZXIuaCIKQEAg
LTc5LDQ0ICs4MCwxMzYgQEAgY2xhc3MgV2F2ZVNoYXBlck5vZGU7CiAKIHRlbXBsYXRlPHR5cGVu
YW1lIElETFR5cGU+IGNsYXNzIERPTVByb21pc2VEZWZlcnJlZDsKIAotLy8gQXVkaW9Db250ZXh0
IGlzIHRoZSBjb3JuZXJzdG9uZSBvZiB0aGUgd2ViIGF1ZGlvIEFQSSBhbmQgYWxsIEF1ZGlvTm9k
ZXMgYXJlIGNyZWF0ZWQgZnJvbSBpdC4KLS8vIEZvciB0aHJlYWQgc2FmZXR5IGJldHdlZW4gdGhl
IGF1ZGlvIHRocmVhZCBhbmQgdGhlIG1haW4gdGhyZWFkLCBpdCBoYXMgYSByZW5kZXJpbmcgZ3Jh
cGggbG9ja2luZyBtZWNoYW5pc20uIAotCi1jbGFzcyBBdWRpb0NvbnRleHQKK2NsYXNzIEF1ZGlv
Q29udGV4dEJhc2UKICAgICA6IHB1YmxpYyBBY3RpdmVET01PYmplY3QKICAgICAsIHB1YmxpYyBU
aHJlYWRTYWZlUmVmQ291bnRlZDxBdWRpb0NvbnRleHQ+CiAgICAgLCBwdWJsaWMgRXZlbnRUYXJn
ZXRXaXRoSW5saW5lRGF0YQogICAgICwgcHVibGljIE1lZGlhQ2FuU3RhcnRMaXN0ZW5lcgogICAg
ICwgcHVibGljIE1lZGlhUHJvZHVjZXIKLSAgICAsIHByaXZhdGUgUGxhdGZvcm1NZWRpYVNlc3Np
b25DbGllbnQKLSAgICAsIHByaXZhdGUgVmlzaWJpbGl0eUNoYW5nZUNsaWVudAogI2lmICFSRUxF
QVNFX0xPR19ESVNBQkxFRAotICAgICwgcHJpdmF0ZSBMb2dnZXJIZWxwZXIKKyAgICAsIHB1Ymxp
YyBMb2dnZXJIZWxwZXIKKyNlbmRpZgoreworICAgIFdURl9NQUtFX0lTT19BTExPQ0FURUQoQXVk
aW9Db250ZXh0QmFzZSk7CitwdWJsaWM6CisgICAgdmlydHVhbCB+QXVkaW9Db250ZXh0QmFzZSgp
ID0gZGVmYXVsdDsKKworICAgIC8vIFJlY29uY2lsZSByZWYvZGVyZWYgd2hpY2ggYXJlIGRlZmlu
ZWQgYm90aCBpbiBUaHJlYWRTYWZlUmVmQ291bnRlZCBhbmQgRXZlbnRUYXJnZXQuCisgICAgdXNp
bmcgVGhyZWFkU2FmZVJlZkNvdW50ZWQ6OnJlZjsKKyAgICB1c2luZyBUaHJlYWRTYWZlUmVmQ291
bnRlZDo6ZGVyZWY7CisKKyAgICBEb2N1bWVudCogZG9jdW1lbnQoKSBjb25zdDsKKworICAgIHZp
cnR1YWwgYm9vbCBpc0luaXRpYWxpemVkKCkgY29uc3QgPSAwOworCisgICAgdmlydHVhbCBzaXpl
X3QgY3VycmVudFNhbXBsZUZyYW1lKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgZmxvYXQgc2Ft
cGxlUmF0ZSgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGRvdWJsZSBjdXJyZW50VGltZSgpIGNv
bnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgaXNHcmFwaE93bmVyKCkgY29uc3QgPSAwOworCisg
ICAgdmlydHVhbCB2b2lkIHNldEF1ZGlvVGhyZWFkKFRocmVhZCYpID0gMDsKKyAgICB2aXJ0dWFs
IGJvb2wgaXNBdWRpb1RocmVhZCgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgaXNBdWRp
b1RocmVhZEZpbmlzaGVkKCkgPSAwOworCisgICAgdmlydHVhbCB2b2lkIGlzUGxheWluZ0F1ZGlv
RGlkQ2hhbmdlKCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBub2RlV2lsbEJlZ2luUGxheWJhY2so
KSA9IDA7CisKKyAgICB2aXJ0dWFsIHZvaWQgcG9zdFRhc2soV1RGOjpGdW5jdGlvbjx2b2lkKCk+
JiYpID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgaXNTdG9wcGVkKCkgY29uc3QgPSAwOworICAgIHZp
cnR1YWwgY29uc3QgU2VjdXJpdHlPcmlnaW4qIG9yaWdpbigpIGNvbnN0ID0gMDsKKyAgICB2aXJ0
dWFsIHZvaWQgYWRkQ29uc29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZSwgTWVzc2FnZUxldmVsLCBj
b25zdCBTdHJpbmcmIG1lc3NhZ2UpID0gMDsKKworICAgIHZpcnR1YWwgdm9pZCBtYXJrRm9yRGVs
ZXRpb24oQXVkaW9Ob2RlJikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBkZWxldGVNYXJrZWROb2Rl
cygpID0gMDsKKworICAgIHZpcnR1YWwgdm9pZCBoYW5kbGVQcmVSZW5kZXJUYXNrcygpID0gMDsK
KyAgICB2aXJ0dWFsIHZvaWQgaGFuZGxlUG9zdFJlbmRlclRhc2tzKCkgPSAwOworICAgIHZpcnR1
YWwgdm9pZCBwcm9jZXNzQXV0b21hdGljUHVsbE5vZGVzKHNpemVfdCBmcmFtZXNUb1Byb2Nlc3Mp
ID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgYWRkRGVmZXJyZWRGaW5pc2hEZXJlZihBdWRpb05vZGUq
KSA9IDA7CisKKyAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlTWFya2VkU3VtbWluZ0p1bmN0aW9uKEF1
ZGlvU3VtbWluZ0p1bmN0aW9uKikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBtYXJrU3VtbWluZ0p1
bmN0aW9uRGlydHkoQXVkaW9TdW1taW5nSnVuY3Rpb24qKSA9IDA7CisgICAgdmlydHVhbCB2b2lk
IG1hcmtBdWRpb05vZGVPdXRwdXREaXJ0eShBdWRpb05vZGVPdXRwdXQqKSA9IDA7CisKKyNpZiAh
UkVMRUFTRV9MT0dfRElTQUJMRUQKKyAgICB2aXJ0dWFsIGNvbnN0IHZvaWQqIG5leHRBdWRpb05v
ZGVMb2dJZGVudGlmaWVyKCkgPSAwOworICAgIHZpcnR1YWwgY29uc3Qgdm9pZCogbmV4dEF1ZGlv
UGFyYW1ldGVyTG9nSWRlbnRpZmllcigpID0gMDsKICNlbmRpZgorCisgICAgdmlydHVhbCB2b2lk
IGFkZEF1dG9tYXRpY1B1bGxOb2RlKEF1ZGlvTm9kZSYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQg
cmVtb3ZlQXV0b21hdGljUHVsbE5vZGUoQXVkaW9Ob2RlJikgPSAwOworCisgICAgdmlydHVhbCB2
b2lkIG5vdGlmeU5vZGVGaW5pc2hlZFByb2Nlc3NpbmcoQXVkaW9Ob2RlKikgPSAwOworCisgICAg
dmlydHVhbCB2b2lkIGZpbmlzaGVkUmVuZGVyaW5nKGJvb2wgZGlkUmVuZGVyaW5nKSA9IDA7CisK
KyAgICB2aXJ0dWFsIHZvaWQgaW5jcmVtZW50Q29ubmVjdGlvbkNvdW50KCkgPSAwOworICAgIHZp
cnR1YWwgdm9pZCBpbmNyZW1lbnRBY3RpdmVTb3VyY2VDb3VudCgpID0gMDsKKyAgICB2aXJ0dWFs
IHZvaWQgZGVjcmVtZW50QWN0aXZlU291cmNlQ291bnQoKSA9IDA7CisKKyAgICB2aXJ0dWFsIGJv
b2wgaXNPZmZsaW5lQ29udGV4dCgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgaXNBdWRp
b0NvbnRleHQoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBib29sIGlzV2ViS2l0QXVkaW9Db250
ZXh0KCkgY29uc3QgPSAwOworCisgICAgLy8gbXVzdFJlbGVhc2VMb2NrIGlzIHNldCB0byB0cnVl
IGlmIHdlIGFjcXVpcmVkIHRoZSBsb2NrIGluIHRoaXMgbWV0aG9kIGNhbGwgYW5kIGNhbGxlciBt
dXN0IHVubG9jaygpLCBmYWxzZSBpZiBpdCB3YXMgcHJldmlvdXNseSBhY3F1aXJlZC4KKyAgICB2
aXJ0dWFsIHZvaWQgbG9jayhib29sJiBtdXN0UmVsZWFzZUxvY2spID0gMDsKKyAgICB2aXJ0dWFs
IGJvb2wgdHJ5TG9jayhib29sJiBtdXN0UmVsZWFzZUxvY2spID0gMDsKKyAgICB2aXJ0dWFsIHZv
aWQgdW5sb2NrKCkgPSAwOworCisgICAgY2xhc3MgQXV0b0xvY2tlciB7CisgICAgcHVibGljOgor
ICAgICAgICBleHBsaWNpdCBBdXRvTG9ja2VyKEF1ZGlvQ29udGV4dEJhc2UmIGNvbnRleHQpCisg
ICAgICAgICAgICA6IG1fY29udGV4dChjb250ZXh0KQorICAgICAgICB7CisgICAgICAgICAgICBt
X2NvbnRleHQubG9jayhtX211c3RSZWxlYXNlTG9jayk7CisgICAgICAgIH0KKworICAgICAgICB+
QXV0b0xvY2tlcigpCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmIChtX211c3RSZWxlYXNlTG9j
aykKKyAgICAgICAgICAgICAgICBtX2NvbnRleHQudW5sb2NrKCk7CisgICAgICAgIH0KKworICAg
IHByaXZhdGU6CisgICAgICAgIEF1ZGlvQ29udGV4dEJhc2UmIG1fY29udGV4dDsKKyAgICAgICAg
Ym9vbCBtX211c3RSZWxlYXNlTG9jazsKKyAgICB9OworCisgICAgLy8gRXZlbnRUYXJnZXQKKyAg
ICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkgY29uc3Qg
ZmluYWw7CisKK3Byb3RlY3RlZDoKKyAgICBleHBsaWNpdCBBdWRpb0NvbnRleHRCYXNlKERvY3Vt
ZW50Jik7Cit9OworCisvLyBBdWRpb0NvbnRleHQgaXMgdGhlIGNvcm5lcnN0b25lIG9mIHRoZSB3
ZWIgYXVkaW8gQVBJIGFuZCBhbGwgQXVkaW9Ob2RlcyBhcmUgY3JlYXRlZCBmcm9tIGl0LgorLy8g
Rm9yIHRocmVhZCBzYWZldHkgYmV0d2VlbiB0aGUgYXVkaW8gdGhyZWFkIGFuZCB0aGUgbWFpbiB0
aHJlYWQsIGl0IGhhcyBhIHJlbmRlcmluZyBncmFwaCBsb2NraW5nIG1lY2hhbmlzbS4gCisKK2Ns
YXNzIEF1ZGlvQ29udGV4dAorICAgIDogcHVibGljIEF1ZGlvQ29udGV4dEJhc2UKKyAgICAsIHBy
aXZhdGUgUGxhdGZvcm1NZWRpYVNlc3Npb25DbGllbnQKKyAgICAsIHByaXZhdGUgVmlzaWJpbGl0
eUNoYW5nZUNsaWVudAogewotICAgIFdURl9NQUtFX0lTT19BTExPQ0FURUQoQXVkaW9Db250ZXh0
KTsKIHB1YmxpYzoKICAgICAvLyBDcmVhdGUgYW4gQXVkaW9Db250ZXh0IGZvciByZW5kZXJpbmcg
dG8gdGhlIGF1ZGlvIGhhcmR3YXJlLgogICAgIHN0YXRpYyBFeGNlcHRpb25PcjxSZWY8QXVkaW9D
b250ZXh0Pj4gY3JlYXRlKERvY3VtZW50Jik7CiAKICAgICB2aXJ0dWFsIH5BdWRpb0NvbnRleHQo
KTsKIAotICAgIGJvb2wgaXNJbml0aWFsaXplZCgpIGNvbnN0OworICAgIGJvb2wgaXNJbml0aWFs
aXplZCgpIGNvbnN0IGZpbmFsOwogICAgIAotICAgIGJvb2wgaXNPZmZsaW5lQ29udGV4dCgpIGNv
bnN0IHsgcmV0dXJuIG1faXNPZmZsaW5lQ29udGV4dDsgfQotCi0gICAgRG9jdW1lbnQqIGRvY3Vt
ZW50KCkgY29uc3Q7IC8vIEFTU0VSVHMgaWYgZG9jdW1lbnQgbm8gbG9uZ2VyIGV4aXN0cy4KKyAg
ICBib29sIGlzT2ZmbGluZUNvbnRleHQoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2lzT2ZmbGlu
ZUNvbnRleHQ7IH0KIAogICAgIERvY3VtZW50SWRlbnRpZmllciBob3N0aW5nRG9jdW1lbnRJZGVu
dGlmaWVyKCkgY29uc3QgZmluYWw7CiAKICAgICBBdWRpb0Rlc3RpbmF0aW9uTm9kZSogZGVzdGlu
YXRpb24oKSB7IHJldHVybiBtX2Rlc3RpbmF0aW9uTm9kZS5nZXQoKTsgfQotICAgIHNpemVfdCBj
dXJyZW50U2FtcGxlRnJhbWUoKSBjb25zdCB7IHJldHVybiBtX2Rlc3RpbmF0aW9uTm9kZSA/IG1f
ZGVzdGluYXRpb25Ob2RlLT5jdXJyZW50U2FtcGxlRnJhbWUoKSA6IDA7IH0KLSAgICBkb3VibGUg
Y3VycmVudFRpbWUoKSBjb25zdCB7IHJldHVybiBtX2Rlc3RpbmF0aW9uTm9kZSA/IG1fZGVzdGlu
YXRpb25Ob2RlLT5jdXJyZW50VGltZSgpIDogMC47IH0KLSAgICBmbG9hdCBzYW1wbGVSYXRlKCkg
Y29uc3QgeyByZXR1cm4gbV9kZXN0aW5hdGlvbk5vZGUgPyBtX2Rlc3RpbmF0aW9uTm9kZS0+c2Ft
cGxlUmF0ZSgpIDogMC5mOyB9CisgICAgc2l6ZV90IGN1cnJlbnRTYW1wbGVGcmFtZSgpIGNvbnN0
IGZpbmFsIHsgcmV0dXJuIG1fZGVzdGluYXRpb25Ob2RlID8gbV9kZXN0aW5hdGlvbk5vZGUtPmN1
cnJlbnRTYW1wbGVGcmFtZSgpIDogMDsgfQorICAgIGRvdWJsZSBjdXJyZW50VGltZSgpIGNvbnN0
IGZpbmFsIHsgcmV0dXJuIG1fZGVzdGluYXRpb25Ob2RlID8gbV9kZXN0aW5hdGlvbk5vZGUtPmN1
cnJlbnRUaW1lKCkgOiAwLjsgfQorICAgIGZsb2F0IHNhbXBsZVJhdGUoKSBjb25zdCBmaW5hbCB7
IHJldHVybiBtX2Rlc3RpbmF0aW9uTm9kZSA/IG1fZGVzdGluYXRpb25Ob2RlLT5zYW1wbGVSYXRl
KCkgOiAwLmY7IH0KICAgICB1bnNpZ25lZCBsb25nIGFjdGl2ZVNvdXJjZUNvdW50KCkgY29uc3Qg
eyByZXR1cm4gc3RhdGljX2Nhc3Q8dW5zaWduZWQgbG9uZz4obV9hY3RpdmVTb3VyY2VDb3VudCk7
IH0KIAotICAgIHZvaWQgaW5jcmVtZW50QWN0aXZlU291cmNlQ291bnQoKTsKLSAgICB2b2lkIGRl
Y3JlbWVudEFjdGl2ZVNvdXJjZUNvdW50KCk7CisgICAgdm9pZCBpbmNyZW1lbnRBY3RpdmVTb3Vy
Y2VDb3VudCgpIGZpbmFsOworICAgIHZvaWQgZGVjcmVtZW50QWN0aXZlU291cmNlQ291bnQoKSBm
aW5hbDsKICAgICAKICAgICBFeGNlcHRpb25PcjxSZWY8QXVkaW9CdWZmZXI+PiBjcmVhdGVCdWZm
ZXIodW5zaWduZWQgbnVtYmVyT2ZDaGFubmVscywgc2l6ZV90IG51bWJlck9mRnJhbWVzLCBmbG9h
dCBzYW1wbGVSYXRlKTsKICAgICBFeGNlcHRpb25PcjxSZWY8QXVkaW9CdWZmZXI+PiBjcmVhdGVC
dWZmZXIoQXJyYXlCdWZmZXImLCBib29sIG1peFRvTW9ubyk7CkBAIC0xMzAsNyArMjIzLDcgQEAg
cHVibGljOgogICAgIHZvaWQgcmVzdW1lUmVuZGVyaW5nKERPTVByb21pc2VEZWZlcnJlZDx2b2lk
PiYmKTsKICAgICB2b2lkIGNsb3NlKERPTVByb21pc2VEZWZlcnJlZDx2b2lkPiYmKTsKIAotICAg
IGVudW0gY2xhc3MgU3RhdGUgeyBTdXNwZW5kZWQsIFJ1bm5pbmcsIEludGVycnVwdGVkLCBDbG9z
ZWQgfTsKKyAgICB1c2luZyBTdGF0ZSA9IEF1ZGlvQ29udGV4dFN0YXRlOwogICAgIFN0YXRlIHN0
YXRlKCkgY29uc3Q7CiAgICAgYm9vbCBpc0Nsb3NlZCgpIGNvbnN0IHsgcmV0dXJuIG1fc3RhdGUg
PT0gU3RhdGU6OkNsb3NlZDsgfQogCkBAIC0xNjAsMzEgKzI1MywzMSBAQCBwdWJsaWM6CiAgICAg
RXhjZXB0aW9uT3I8UmVmPFBlcmlvZGljV2F2ZT4+IGNyZWF0ZVBlcmlvZGljV2F2ZShGbG9hdDMy
QXJyYXkmIHJlYWwsIEZsb2F0MzJBcnJheSYgaW1hZ2luYXJ5KTsKIAogICAgIC8vIFdoZW4gYSBz
b3VyY2Ugbm9kZSBoYXMgbm8gbW9yZSBwcm9jZXNzaW5nIHRvIGRvIChoYXMgZmluaXNoZWQgcGxh
eWluZyksIHRoZW4gaXQgdGVsbHMgdGhlIGNvbnRleHQgdG8gZGVyZWZlcmVuY2UgaXQuCi0gICAg
dm9pZCBub3RpZnlOb2RlRmluaXNoZWRQcm9jZXNzaW5nKEF1ZGlvTm9kZSopOworICAgIHZvaWQg
bm90aWZ5Tm9kZUZpbmlzaGVkUHJvY2Vzc2luZyhBdWRpb05vZGUqKSBmaW5hbDsKIAogICAgIC8v
IENhbGxlZCBhdCB0aGUgc3RhcnQgb2YgZWFjaCByZW5kZXIgcXVhbnR1bS4KLSAgICB2b2lkIGhh
bmRsZVByZVJlbmRlclRhc2tzKCk7CisgICAgdm9pZCBoYW5kbGVQcmVSZW5kZXJUYXNrcygpIGZp
bmFsOwogCiAgICAgLy8gQ2FsbGVkIGF0IHRoZSBlbmQgb2YgZWFjaCByZW5kZXIgcXVhbnR1bS4K
LSAgICB2b2lkIGhhbmRsZVBvc3RSZW5kZXJUYXNrcygpOworICAgIHZvaWQgaGFuZGxlUG9zdFJl
bmRlclRhc2tzKCkgZmluYWw7CiAKICAgICAvLyBDYWxsZWQgcGVyaW9kaWNhbGx5IGF0IHRoZSBl
bmQgb2YgZWFjaCByZW5kZXIgcXVhbnR1bSB0byBkZXJlZmVyZW5jZSBmaW5pc2hlZCBzb3VyY2Ug
bm9kZXMuCiAgICAgdm9pZCBkZXJlZkZpbmlzaGVkU291cmNlTm9kZXMoKTsKIAogICAgIC8vIFdl
IHNjaGVkdWxlIGRlbGV0aW9uIG9mIGFsbCBtYXJrZWQgbm9kZXMgYXQgdGhlIGVuZCBvZiBlYWNo
IHJlYWx0aW1lIHJlbmRlciBxdWFudHVtLgotICAgIHZvaWQgbWFya0ZvckRlbGV0aW9uKEF1ZGlv
Tm9kZSYpOwotICAgIHZvaWQgZGVsZXRlTWFya2VkTm9kZXMoKTsKKyAgICB2b2lkIG1hcmtGb3JE
ZWxldGlvbihBdWRpb05vZGUmKSBmaW5hbDsKKyAgICB2b2lkIGRlbGV0ZU1hcmtlZE5vZGVzKCkg
ZmluYWw7CiAKICAgICAvLyBBdWRpb0NvbnRleHQgY2FuIHB1bGwgbm9kZShzKSBhdCB0aGUgZW5k
IG9mIGVhY2ggcmVuZGVyIHF1YW50dW0gZXZlbiB3aGVuIHRoZXkgYXJlIG5vdCBjb25uZWN0ZWQg
dG8gYW55IGRvd25zdHJlYW0gbm9kZXMuCiAgICAgLy8gVGhlc2UgdHdvIG1ldGhvZHMgYXJlIGNh
bGxlZCBieSB0aGUgbm9kZXMgd2hvIHdhbnQgdG8gYWRkL3JlbW92ZSB0aGVtc2VsdmVzIGludG8v
ZnJvbSB0aGUgYXV0b21hdGljIHB1bGwgbGlzdHMuCi0gICAgdm9pZCBhZGRBdXRvbWF0aWNQdWxs
Tm9kZShBdWRpb05vZGUmKTsKLSAgICB2b2lkIHJlbW92ZUF1dG9tYXRpY1B1bGxOb2RlKEF1ZGlv
Tm9kZSYpOworICAgIHZvaWQgYWRkQXV0b21hdGljUHVsbE5vZGUoQXVkaW9Ob2RlJikgZmluYWw7
CisgICAgdm9pZCByZW1vdmVBdXRvbWF0aWNQdWxsTm9kZShBdWRpb05vZGUmKSBmaW5hbDsKIAog
ICAgIC8vIENhbGxlZCByaWdodCBiZWZvcmUgaGFuZGxlUG9zdFJlbmRlclRhc2tzKCkgdG8gaGFu
ZGxlIG5vZGVzIHdoaWNoIG5lZWQgdG8gYmUgcHVsbGVkIGV2ZW4gd2hlbiB0aGV5IGFyZSBub3Qg
Y29ubmVjdGVkIHRvIGFueXRoaW5nLgotICAgIHZvaWQgcHJvY2Vzc0F1dG9tYXRpY1B1bGxOb2Rl
cyhzaXplX3QgZnJhbWVzVG9Qcm9jZXNzKTsKKyAgICB2b2lkIHByb2Nlc3NBdXRvbWF0aWNQdWxs
Tm9kZXMoc2l6ZV90IGZyYW1lc1RvUHJvY2VzcykgZmluYWw7CiAKICAgICAvLyBLZWVwcyB0cmFj
ayBvZiB0aGUgbnVtYmVyIG9mIGNvbm5lY3Rpb25zIG1hZGUuCi0gICAgdm9pZCBpbmNyZW1lbnRD
b25uZWN0aW9uQ291bnQoKQorICAgIHZvaWQgaW5jcmVtZW50Q29ubmVjdGlvbkNvdW50KCkgZmlu
YWwKICAgICB7CiAgICAgICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAgICAgICAgIG1fY29u
bmVjdGlvbkNvdW50Kys7CkBAIC0xOTYsNjkgKzI4OSw0NiBAQCBwdWJsaWM6CiAgICAgLy8gVGhy
ZWFkIFNhZmV0eSBhbmQgR3JhcGggTG9ja2luZzoKICAgICAvLwogICAgIAotICAgIHZvaWQgc2V0
QXVkaW9UaHJlYWQoVGhyZWFkJiB0aHJlYWQpIHsgbV9hdWRpb1RocmVhZCA9ICZ0aHJlYWQ7IH0g
Ly8gRklYTUU6IGNoZWNrIGVpdGhlciBub3QgaW5pdGlhbGl6ZWQgb3IgdGhlIHNhbWUKKyAgICB2
b2lkIHNldEF1ZGlvVGhyZWFkKFRocmVhZCYgdGhyZWFkKSBmaW5hbCB7IG1fYXVkaW9UaHJlYWQg
PSAmdGhyZWFkOyB9IC8vIEZJWE1FOiBjaGVjayBlaXRoZXIgbm90IGluaXRpYWxpemVkIG9yIHRo
ZSBzYW1lCiAgICAgVGhyZWFkKiBhdWRpb1RocmVhZCgpIGNvbnN0IHsgcmV0dXJuIG1fYXVkaW9U
aHJlYWQ7IH0KLSAgICBib29sIGlzQXVkaW9UaHJlYWQoKSBjb25zdDsKKyAgICBib29sIGlzQXVk
aW9UaHJlYWQoKSBjb25zdCBmaW5hbDsKIAogICAgIC8vIFJldHVybnMgdHJ1ZSBvbmx5IGFmdGVy
IHRoZSBhdWRpbyB0aHJlYWQgaGFzIGJlZW4gc3RhcnRlZCBhbmQgdGhlbiBzaHV0ZG93bi4KLSAg
ICBib29sIGlzQXVkaW9UaHJlYWRGaW5pc2hlZCgpIHsgcmV0dXJuIG1faXNBdWRpb1RocmVhZEZp
bmlzaGVkOyB9CisgICAgYm9vbCBpc0F1ZGlvVGhyZWFkRmluaXNoZWQoKSBmaW5hbCB7IHJldHVy
biBtX2lzQXVkaW9UaHJlYWRGaW5pc2hlZDsgfQogICAgIAogICAgIC8vIG11c3RSZWxlYXNlTG9j
ayBpcyBzZXQgdG8gdHJ1ZSBpZiB3ZSBhY3F1aXJlZCB0aGUgbG9jayBpbiB0aGlzIG1ldGhvZCBj
YWxsIGFuZCBjYWxsZXIgbXVzdCB1bmxvY2soKSwgZmFsc2UgaWYgaXQgd2FzIHByZXZpb3VzbHkg
YWNxdWlyZWQuCi0gICAgdm9pZCBsb2NrKGJvb2wmIG11c3RSZWxlYXNlTG9jayk7CisgICAgdm9p
ZCBsb2NrKGJvb2wmIG11c3RSZWxlYXNlTG9jaykgZmluYWw7CiAKICAgICAvLyBSZXR1cm5zIHRy
dWUgaWYgd2Ugb3duIHRoZSBsb2NrLgogICAgIC8vIG11c3RSZWxlYXNlTG9jayBpcyBzZXQgdG8g
dHJ1ZSBpZiB3ZSBhY3F1aXJlZCB0aGUgbG9jayBpbiB0aGlzIG1ldGhvZCBjYWxsIGFuZCBjYWxs
ZXIgbXVzdCB1bmxvY2soKSwgZmFsc2UgaWYgaXQgd2FzIHByZXZpb3VzbHkgYWNxdWlyZWQuCi0g
ICAgYm9vbCB0cnlMb2NrKGJvb2wmIG11c3RSZWxlYXNlTG9jayk7CisgICAgYm9vbCB0cnlMb2Nr
KGJvb2wmIG11c3RSZWxlYXNlTG9jaykgZmluYWw7CiAKLSAgICB2b2lkIHVubG9jaygpOworICAg
IHZvaWQgdW5sb2NrKCkgZmluYWw7CiAKICAgICAvLyBSZXR1cm5zIHRydWUgaWYgdGhpcyB0aHJl
YWQgb3ducyB0aGUgY29udGV4dCdzIGxvY2suCi0gICAgYm9vbCBpc0dyYXBoT3duZXIoKSBjb25z
dDsKKyAgICBib29sIGlzR3JhcGhPd25lcigpIGNvbnN0IGZpbmFsOwogCiAgICAgLy8gUmV0dXJu
cyB0aGUgbWF4aW11bSBudW1iZXIgb2YgY2hhbm5lbHMgd2UgY2FuIHN1cHBvcnQuCiAgICAgc3Rh
dGljIHVuc2lnbmVkIG1heE51bWJlck9mQ2hhbm5lbHMoKSB7IHJldHVybiBNYXhOdW1iZXJPZkNo
YW5uZWxzOyB9Ci0KLSAgICBjbGFzcyBBdXRvTG9ja2VyIHsKLSAgICBwdWJsaWM6Ci0gICAgICAg
IGV4cGxpY2l0IEF1dG9Mb2NrZXIoQXVkaW9Db250ZXh0JiBjb250ZXh0KQotICAgICAgICAgICAg
OiBtX2NvbnRleHQoY29udGV4dCkKLSAgICAgICAgewotICAgICAgICAgICAgbV9jb250ZXh0Lmxv
Y2sobV9tdXN0UmVsZWFzZUxvY2spOwotICAgICAgICB9Ci0gICAgICAgIAotICAgICAgICB+QXV0
b0xvY2tlcigpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGlmIChtX211c3RSZWxlYXNlTG9jaykK
LSAgICAgICAgICAgICAgICBtX2NvbnRleHQudW5sb2NrKCk7Ci0gICAgICAgIH0KLQotICAgIHBy
aXZhdGU6Ci0gICAgICAgIEF1ZGlvQ29udGV4dCYgbV9jb250ZXh0OwotICAgICAgICBib29sIG1f
bXVzdFJlbGVhc2VMb2NrOwotICAgIH07CiAgICAgCiAgICAgLy8gSW4gQXVkaW9Ob2RlOjpkZXJl
ZigpIGEgdHJ5TG9jaygpIGlzIHVzZWQgZm9yIGNhbGxpbmcgZmluaXNoRGVyZWYoKSwgYnV0IGlm
IGl0IGZhaWxzIGtlZXAgdHJhY2sgaGVyZS4KLSAgICB2b2lkIGFkZERlZmVycmVkRmluaXNoRGVy
ZWYoQXVkaW9Ob2RlKik7CisgICAgdm9pZCBhZGREZWZlcnJlZEZpbmlzaERlcmVmKEF1ZGlvTm9k
ZSopIGZpbmFsOwogCiAgICAgLy8gSW4gdGhlIGF1ZGlvIHRocmVhZCBhdCB0aGUgc3RhcnQgb2Yg
ZWFjaCByZW5kZXIgY3ljbGUsIHdlJ2xsIGNhbGwgaGFuZGxlRGVmZXJyZWRGaW5pc2hEZXJlZnMo
KS4KICAgICB2b2lkIGhhbmRsZURlZmVycmVkRmluaXNoRGVyZWZzKCk7CiAKICAgICAvLyBPbmx5
IGFjY2Vzc2VkIHdoZW4gdGhlIGdyYXBoIGxvY2sgaXMgaGVsZC4KLSAgICB2b2lkIG1hcmtTdW1t
aW5nSnVuY3Rpb25EaXJ0eShBdWRpb1N1bW1pbmdKdW5jdGlvbiopOwotICAgIHZvaWQgbWFya0F1
ZGlvTm9kZU91dHB1dERpcnR5KEF1ZGlvTm9kZU91dHB1dCopOworICAgIHZvaWQgbWFya1N1bW1p
bmdKdW5jdGlvbkRpcnR5KEF1ZGlvU3VtbWluZ0p1bmN0aW9uKikgZmluYWw7CisgICAgdm9pZCBt
YXJrQXVkaW9Ob2RlT3V0cHV0RGlydHkoQXVkaW9Ob2RlT3V0cHV0KikgZmluYWw7CiAKICAgICAv
LyBNdXN0IGJlIGNhbGxlZCBvbiBtYWluIHRocmVhZC4KLSAgICB2b2lkIHJlbW92ZU1hcmtlZFN1
bW1pbmdKdW5jdGlvbihBdWRpb1N1bW1pbmdKdW5jdGlvbiopOworICAgIHZvaWQgcmVtb3ZlTWFy
a2VkU3VtbWluZ0p1bmN0aW9uKEF1ZGlvU3VtbWluZ0p1bmN0aW9uKikgZmluYWw7CiAKICAgICAv
LyBFdmVudFRhcmdldAogICAgIEV2ZW50VGFyZ2V0SW50ZXJmYWNlIGV2ZW50VGFyZ2V0SW50ZXJm
YWNlKCkgY29uc3QgZmluYWwgeyByZXR1cm4gQXVkaW9Db250ZXh0RXZlbnRUYXJnZXRJbnRlcmZh
Y2VUeXBlOyB9CiAKLSAgICAvLyBSZWNvbmNpbGUgcmVmL2RlcmVmIHdoaWNoIGFyZSBkZWZpbmVk
IGJvdGggaW4gVGhyZWFkU2FmZVJlZkNvdW50ZWQgYW5kIEV2ZW50VGFyZ2V0LgotICAgIHVzaW5n
IFRocmVhZFNhZmVSZWZDb3VudGVkOjpyZWY7Ci0gICAgdXNpbmcgVGhyZWFkU2FmZVJlZkNvdW50
ZWQ6OmRlcmVmOwotCiAgICAgdm9pZCBzdGFydFJlbmRlcmluZygpOwotICAgIHZvaWQgZmluaXNo
ZWRSZW5kZXJpbmcoYm9vbCBkaWRSZW5kZXJpbmcpOworICAgIHZvaWQgZmluaXNoZWRSZW5kZXJp
bmcoYm9vbCBkaWRSZW5kZXJpbmcpIGZpbmFsOwogCiAgICAgc3RhdGljIHVuc2lnbmVkIHNfaGFy
ZHdhcmVDb250ZXh0Q291bnQ7CiAKQEAgLTI3NCwyNSArMzQ0LDIyIEBAIHB1YmxpYzoKICAgICB2
b2lkIGFkZEJlaGF2aW9yUmVzdHJpY3Rpb24oQmVoYXZpb3JSZXN0cmljdGlvbnMgcmVzdHJpY3Rp
b24pIHsgbV9yZXN0cmljdGlvbnMgfD0gcmVzdHJpY3Rpb247IH0KICAgICB2b2lkIHJlbW92ZUJl
aGF2aW9yUmVzdHJpY3Rpb24oQmVoYXZpb3JSZXN0cmljdGlvbnMgcmVzdHJpY3Rpb24pIHsgbV9y
ZXN0cmljdGlvbnMgJj0gfnJlc3RyaWN0aW9uOyB9CiAKLSAgICB2b2lkIGlzUGxheWluZ0F1ZGlv
RGlkQ2hhbmdlKCk7CisgICAgdm9pZCBpc1BsYXlpbmdBdWRpb0RpZENoYW5nZSgpIGZpbmFsOwog
Ci0gICAgdm9pZCBub2RlV2lsbEJlZ2luUGxheWJhY2soKTsKKyAgICB2b2lkIG5vZGVXaWxsQmVn
aW5QbGF5YmFjaygpIGZpbmFsOwogCiAjaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECiAgICAgY29u
c3QgTG9nZ2VyJiBsb2dnZXIoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2xvZ2dlci5nZXQoKTsg
fQogICAgIGNvbnN0IHZvaWQqIGxvZ0lkZW50aWZpZXIoKSBjb25zdCBmaW5hbCB7IHJldHVybiBt
X2xvZ0lkZW50aWZpZXI7IH0KICAgICBXVEZMb2dDaGFubmVsJiBsb2dDaGFubmVsKCkgY29uc3Qg
ZmluYWw7Ci0gICAgY29uc3Qgdm9pZCogbmV4dEF1ZGlvTm9kZUxvZ0lkZW50aWZpZXIoKSB7IHJl
dHVybiBjaGlsZExvZ0lkZW50aWZpZXIobV9sb2dJZGVudGlmaWVyLCArK21fbmV4dEF1ZGlvTm9k
ZUlkZW50aWZpZXIpOyB9Ci0gICAgY29uc3Qgdm9pZCogbmV4dEF1ZGlvUGFyYW1ldGVyTG9nSWRl
bnRpZmllcigpIHsgcmV0dXJuIGNoaWxkTG9nSWRlbnRpZmllcihtX2xvZ0lkZW50aWZpZXIsICsr
bV9uZXh0QXVkaW9QYXJhbWV0ZXJJZGVudGlmaWVyKTsgfQorICAgIGNvbnN0IHZvaWQqIG5leHRB
dWRpb05vZGVMb2dJZGVudGlmaWVyKCkgZmluYWwgeyByZXR1cm4gY2hpbGRMb2dJZGVudGlmaWVy
KG1fbG9nSWRlbnRpZmllciwgKyttX25leHRBdWRpb05vZGVJZGVudGlmaWVyKTsgfQorICAgIGNv
bnN0IHZvaWQqIG5leHRBdWRpb1BhcmFtZXRlckxvZ0lkZW50aWZpZXIoKSBmaW5hbCB7IHJldHVy
biBjaGlsZExvZ0lkZW50aWZpZXIobV9sb2dJZGVudGlmaWVyLCArK21fbmV4dEF1ZGlvUGFyYW1l
dGVySWRlbnRpZmllcik7IH0KICNlbmRpZgogCi0gICAgdm9pZCBwb3N0VGFzayhXVEY6OkZ1bmN0
aW9uPHZvaWQoKT4mJik7Ci0gICAgYm9vbCBpc1N0b3BwZWQoKSBjb25zdCB7IHJldHVybiBtX2lz
U3RvcFNjaGVkdWxlZDsgfQotICAgIGNvbnN0IFNlY3VyaXR5T3JpZ2luKiBvcmlnaW4oKSBjb25z
dDsKLSAgICB2b2lkIGFkZENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VTb3VyY2UsIE1lc3NhZ2VMZXZl
bCwgY29uc3QgU3RyaW5nJiBtZXNzYWdlKTsKLQotICAgIC8vIEV2ZW50VGFyZ2V0Ci0gICAgU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpIGNvbnN0IGZpbmFs
OworICAgIHZvaWQgcG9zdFRhc2soV1RGOjpGdW5jdGlvbjx2b2lkKCk+JiYpIGZpbmFsOworICAg
IGJvb2wgaXNTdG9wcGVkKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9pc1N0b3BTY2hlZHVsZWQ7
IH0KKyAgICBjb25zdCBTZWN1cml0eU9yaWdpbiogb3JpZ2luKCkgY29uc3QgZmluYWw7CisgICAg
dm9pZCBhZGRDb25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNlLCBNZXNzYWdlTGV2ZWwsIGNvbnN0
IFN0cmluZyYgbWVzc2FnZSkgZmluYWw7CiAKIHByb3RlY3RlZDoKICAgICBleHBsaWNpdCBBdWRp
b0NvbnRleHQoRG9jdW1lbnQmKTsKQEAgLTM2MCw2ICs0MjcsOSBAQCBwcml2YXRlOgogCiAgICAg
dm9pZCB2aXNpYmlsaXR5U3RhdGVDaGFuZ2VkKCkgZmluYWw7CiAKKyAgICBib29sIGlzQXVkaW9D
b250ZXh0KCkgY29uc3QgZmluYWwgeyByZXR1cm4gdHJ1ZTsgfQorICAgIGJvb2wgaXNXZWJLaXRB
dWRpb0NvbnRleHQoKSBjb25zdCBmaW5hbCB7IHJldHVybiBmYWxzZTsgfQorCiAgICAgLy8gRXZl
bnRUYXJnZXQKICAgICB2b2lkIHJlZkV2ZW50VGFyZ2V0KCkgb3ZlcnJpZGUgeyByZWYoKTsgfQog
ICAgIHZvaWQgZGVyZWZFdmVudFRhcmdldCgpIG92ZXJyaWRlIHsgZGVyZWYoKTsgfQpAQCAtNDQ2
LDIxICs1MTYsMTMgQEAgcHJpdmF0ZToKICAgICBSZWZQdHI8UGVuZGluZ0FjdGl2aXR5PEF1ZGlv
Q29udGV4dD4+IG1fcGVuZGluZ0FjdGl2aXR5OwogfTsKIAotLy8gRklYTUU6IEZpbmQgb3V0IHdo
eSB0aGVzZSA9PS8hPSBmdW5jdGlvbnMgYXJlIG5lZWRlZCBhbmQgcmVtb3ZlIHRoZW0gaWYgcG9z
c2libGUuCi0KLWlubGluZSBib29sIG9wZXJhdG9yPT0oY29uc3QgQXVkaW9Db250ZXh0JiBsaHMs
IGNvbnN0IEF1ZGlvQ29udGV4dCYgcmhzKQotewotICAgIHJldHVybiAmbGhzID09ICZyaHM7Ci19
Ci0KLWlubGluZSBib29sIG9wZXJhdG9yIT0oY29uc3QgQXVkaW9Db250ZXh0JiBsaHMsIGNvbnN0
IEF1ZGlvQ29udGV4dCYgcmhzKQotewotICAgIHJldHVybiAmbGhzICE9ICZyaHM7Ci19Ci0KIGlu
bGluZSBBdWRpb0NvbnRleHQ6OlN0YXRlIEF1ZGlvQ29udGV4dDo6c3RhdGUoKSBjb25zdAogewog
ICAgIHJldHVybiBtX3N0YXRlOwogfQogCiB9IC8vIFdlYkNvcmUKKworU1BFQ0lBTElaRV9UWVBF
X1RSQUlUU19CRUdJTihXZWJDb3JlOjpBdWRpb0NvbnRleHQpCisgICAgc3RhdGljIGJvb2wgaXNU
eXBlKGNvbnN0IFdlYkNvcmU6OkF1ZGlvQ29udGV4dEJhc2UmIGNvbnRleHQpIHsgcmV0dXJuIGNv
bnRleHQuaXNBdWRpb0NvbnRleHQoKTsgfQorU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19FTkQoKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0NvbnRleHQu
aWRsIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0NvbnRleHQuaWRsCmlu
ZGV4IDEyMTI0YTM2Nzc3Li44M2RiM2I0ZDZiMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJhdWRpby9BdWRpb0NvbnRleHQuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0LmlkbApAQCAtMjMsMjIgKzIzLDE0IEBACiAgKiBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KICAqLwogCi1lbnVtIEF1ZGlvQ29udGV4dFN0YXRlIHsKLSAgICAic3VzcGVuZGVkIiwKLSAg
ICAicnVubmluZyIsCi0gICAgImludGVycnVwdGVkIiwKLSAgICAiY2xvc2VkIgotfTsKLQogWwog
ICAgIEFjdGl2ZURPTU9iamVjdCwKICAgICBDb25kaXRpb25hbD1XRUJfQVVESU8sCiAgICAgQ29u
c3RydWN0b3IsCiAgICAgQ29uc3RydWN0b3JDYWxsV2l0aD1Eb2N1bWVudCwKICAgICBDb25zdHJ1
Y3Rvck1heVRocm93RXhjZXB0aW9uLAotICAgIEVuYWJsZWRCeVNldHRpbmc9V2ViQXVkaW8sCisg
ICAgRW5hYmxlZEJ5U2V0dGluZz1Nb2Rlcm5VbnByZWZpeGVkV2ViQXVkaW8sCiAgICAgRXhwb3J0
TWFjcm89V0VCQ09SRV9FWFBPUlQsCi0gICAgSW50ZXJmYWNlTmFtZT13ZWJraXRBdWRpb0NvbnRl
eHQsCiBdIGludGVyZmFjZSBBdWRpb0NvbnRleHQgOiBFdmVudFRhcmdldCB7CiAgICAgLy8gQWxs
IHJlbmRlcmVkIGF1ZGlvIHVsdGltYXRlbHkgY29ubmVjdHMgdG8gZGVzdGluYXRpb24sIHdoaWNo
IHJlcHJlc2VudHMgdGhlIGF1ZGlvIGhhcmR3YXJlLgogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBB
dWRpb0Rlc3RpbmF0aW9uTm9kZSBkZXN0aW5hdGlvbjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0U3RhdGUuaCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0U3RhdGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMC4uMTYwMTMxMTA4ZmEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQ29udGV4dFN0YXRlLmgKQEAgLTAsMCAr
MSwzMiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE2LTIwMjAgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQgQU5ZCisg
KiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04KKyAqIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUworICogU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKK25hbWVzcGFjZSBXZWJDb3Jl
IHsKKworZW51bSBjbGFzcyBBdWRpb0NvbnRleHRTdGF0ZSB7IFN1c3BlbmRlZCwgUnVubmluZywg
SW50ZXJydXB0ZWQsIENsb3NlZCB9OworCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQ29udGV4dFN0YXRlLmlkbCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0U3RhdGUuaWRsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwLi5jOGQwOGJkMmI1NgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0U3RhdGUuaWRsCkBAIC0wLDAg
KzEsMzEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAsIEdvb2dsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04KKyAqIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUworICogU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworZW51bSBBdWRpb0NvbnRleHRTdGF0ZSB7CisgICAgInN1c3Bl
bmRlZCIsCisgICAgInJ1bm5pbmciLAorICAgICJpbnRlcnJ1cHRlZCIsCisgICAgImNsb3NlZCIK
K307CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvRGVz
dGluYXRpb25Ob2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9E
ZXN0aW5hdGlvbk5vZGUuY3BwCmluZGV4IGQ5YWJiOTc3N2E5Li42Nzc2MTdlY2IzMyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0Rlc3RpbmF0aW9uTm9k
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0Rlc3RpbmF0
aW9uTm9kZS5jcHAKQEAgLTM5LDcgKzM5LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIAog
V1RGX01BS0VfSVNPX0FMTE9DQVRFRF9JTVBMKEF1ZGlvRGVzdGluYXRpb25Ob2RlKTsKIAotQXVk
aW9EZXN0aW5hdGlvbk5vZGU6OkF1ZGlvRGVzdGluYXRpb25Ob2RlKEF1ZGlvQ29udGV4dCYgY29u
dGV4dCwgZmxvYXQgc2FtcGxlUmF0ZSkKK0F1ZGlvRGVzdGluYXRpb25Ob2RlOjpBdWRpb0Rlc3Rp
bmF0aW9uTm9kZShBdWRpb0NvbnRleHRCYXNlJiBjb250ZXh0LCBmbG9hdCBzYW1wbGVSYXRlKQog
ICAgIDogQXVkaW9Ob2RlKGNvbnRleHQsIHNhbXBsZVJhdGUpCiAgICAgLCBtX2N1cnJlbnRTYW1w
bGVGcmFtZSgwKQogICAgICwgbV9pc1NpbGVudCh0cnVlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0Rlc3RpbmF0aW9uTm9kZS5oIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0Rlc3RpbmF0aW9uTm9kZS5oCmluZGV4IDg5NDhm
NGVlNzBhLi4zNzZmNDYyNzEyZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJhdWRpby9BdWRpb0Rlc3RpbmF0aW9uTm9kZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViYXVkaW8vQXVkaW9EZXN0aW5hdGlvbk5vZGUuaApAQCAtMzYsNyArMzYsNyBAQCBjbGFz
cyBBdWRpb0NvbnRleHQ7CiBjbGFzcyBBdWRpb0Rlc3RpbmF0aW9uTm9kZSA6IHB1YmxpYyBBdWRp
b05vZGUsIHB1YmxpYyBBdWRpb0lPQ2FsbGJhY2sgewogICAgIFdURl9NQUtFX0lTT19BTExPQ0FU
RUQoQXVkaW9EZXN0aW5hdGlvbk5vZGUpOwogcHVibGljOgotICAgIEF1ZGlvRGVzdGluYXRpb25O
b2RlKEF1ZGlvQ29udGV4dCYsIGZsb2F0IHNhbXBsZVJhdGUpOworICAgIEF1ZGlvRGVzdGluYXRp
b25Ob2RlKEF1ZGlvQ29udGV4dEJhc2UmLCBmbG9hdCBzYW1wbGVSYXRlKTsKICAgICB2aXJ0dWFs
IH5BdWRpb0Rlc3RpbmF0aW9uTm9kZSgpOwogICAgIAogICAgIC8vIEF1ZGlvTm9kZSAgIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb05vZGUuY3BwIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb05vZGUuY3BwCmluZGV4IDc2NWVj
ZTMzMmY2Li5lNTU0Mzc3OWQ1MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJhdWRpby9BdWRpb05vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVk
aW8vQXVkaW9Ob2RlLmNwcApAQCAtMzMsNiArMzMsNyBAQAogI2luY2x1ZGUgIkF1ZGlvTm9kZU91
dHB1dC5oIgogI2luY2x1ZGUgIkF1ZGlvUGFyYW0uaCIKICNpbmNsdWRlICJMb2dnaW5nLmgiCisj
aW5jbHVkZSAiV2ViS2l0QXVkaW9Db250ZXh0LmgiCiAjaW5jbHVkZSA8d3RmL0F0b21pY3MuaD4K
ICNpbmNsdWRlIDx3dGYvSXNvTWFsbG9jSW5saW5lcy5oPgogI2luY2x1ZGUgPHd0Zi9NYWluVGhy
ZWFkLmg+CkBAIC05NSw3ICs5Niw3IEBAIFN0cmluZyBjb252ZXJ0RW51bWVyYXRpb25Ub1N0cmlu
ZyhBdWRpb05vZGU6Ok5vZGVUeXBlIGVudW1lcmF0aW9uVmFsdWUpCiAgICAgcmV0dXJuIHZhbHVl
c1tzdGF0aWNfY2FzdDxzaXplX3Q+KGVudW1lcmF0aW9uVmFsdWUpXTsKIH0KIAotQXVkaW9Ob2Rl
OjpBdWRpb05vZGUoQXVkaW9Db250ZXh0JiBjb250ZXh0LCBmbG9hdCBzYW1wbGVSYXRlKQorQXVk
aW9Ob2RlOjpBdWRpb05vZGUoQXVkaW9Db250ZXh0QmFzZSYgY29udGV4dCwgZmxvYXQgc2FtcGxl
UmF0ZSkKICAgICA6IG1faXNJbml0aWFsaXplZChmYWxzZSkKICAgICAsIG1fbm9kZVR5cGUoTm9k
ZVR5cGVVbmtub3duKQogICAgICwgbV9jb250ZXh0KGNvbnRleHQpCkBAIC0xOTQsNyArMTk1LDcg
QEAgQXVkaW9Ob2RlT3V0cHV0KiBBdWRpb05vZGU6Om91dHB1dCh1bnNpZ25lZCBpKQogRXhjZXB0
aW9uT3I8dm9pZD4gQXVkaW9Ob2RlOjpjb25uZWN0KEF1ZGlvTm9kZSYgZGVzdGluYXRpb24sIHVu
c2lnbmVkIG91dHB1dEluZGV4LCB1bnNpZ25lZCBpbnB1dEluZGV4KQogewogICAgIEFTU0VSVChp
c01haW5UaHJlYWQoKSk7Ci0gICAgQXVkaW9Db250ZXh0OjpBdXRvTG9ja2VyIGxvY2tlcihjb250
ZXh0KCkpOworICAgIEF1ZGlvQ29udGV4dEJhc2U6OkF1dG9Mb2NrZXIgbG9ja2VyKGNvbnRleHQo
KSk7CiAKICAgICBBTFdBWVNfTE9HKExPR0lERU5USUZJRVIsIGRlc3RpbmF0aW9uLm5vZGVUeXBl
KCksICIsIG91dHB1dCA9ICIsIG91dHB1dEluZGV4LCAiLCBpbnB1dCA9ICIsIGlucHV0SW5kZXgp
OwogICAgIApAQCAtMjA1LDcgKzIwNiw3IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IEF1ZGlvTm9kZTo6
Y29ubmVjdChBdWRpb05vZGUmIGRlc3RpbmF0aW9uLCB1bnNpZ25lZCBvdXRwdXRJbmRlCiAgICAg
aWYgKGlucHV0SW5kZXggPj0gZGVzdGluYXRpb24ubnVtYmVyT2ZJbnB1dHMoKSkKICAgICAgICAg
cmV0dXJuIEV4Y2VwdGlvbiB7IEluZGV4U2l6ZUVycm9yIH07CiAKLSAgICBpZiAoY29udGV4dCgp
ICE9IGRlc3RpbmF0aW9uLmNvbnRleHQoKSkKKyAgICBpZiAoJmNvbnRleHQoKSAhPSAmZGVzdGlu
YXRpb24uY29udGV4dCgpKQogICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgU3ludGF4RXJyb3Ig
fTsKIAogICAgIGF1dG8qIGlucHV0ID0gZGVzdGluYXRpb24uaW5wdXQoaW5wdXRJbmRleCk7CkBA
IC0yMjAsNyArMjIxLDcgQEAgRXhjZXB0aW9uT3I8dm9pZD4gQXVkaW9Ob2RlOjpjb25uZWN0KEF1
ZGlvTm9kZSYgZGVzdGluYXRpb24sIHVuc2lnbmVkIG91dHB1dEluZGUKIAogRXhjZXB0aW9uT3I8
dm9pZD4gQXVkaW9Ob2RlOjpjb25uZWN0KEF1ZGlvUGFyYW0mIHBhcmFtLCB1bnNpZ25lZCBvdXRw
dXRJbmRleCkKIHsKLSAgICBBdWRpb0NvbnRleHQ6OkF1dG9Mb2NrZXIgbG9ja2VyKGNvbnRleHQo
KSk7CisgICAgQXVkaW9Db250ZXh0QmFzZTo6QXV0b0xvY2tlciBsb2NrZXIoY29udGV4dCgpKTsK
IAogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAKQEAgLTIyOSw3ICsyMzAsNyBAQCBFeGNl
cHRpb25Pcjx2b2lkPiBBdWRpb05vZGU6OmNvbm5lY3QoQXVkaW9QYXJhbSYgcGFyYW0sIHVuc2ln
bmVkIG91dHB1dEluZGV4KQogICAgIGlmIChvdXRwdXRJbmRleCA+PSBudW1iZXJPZk91dHB1dHMo
KSkKICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IEluZGV4U2l6ZUVycm9yIH07CiAKLSAgICBp
ZiAoY29udGV4dCgpICE9IHBhcmFtLmNvbnRleHQoKSkKKyAgICBpZiAoJmNvbnRleHQoKSAhPSAm
cGFyYW0uY29udGV4dCgpKQogICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgU3ludGF4RXJyb3Ig
fTsKIAogICAgIGF1dG8qIG91dHB1dCA9IHRoaXMtPm91dHB1dChvdXRwdXRJbmRleCk7CkBAIC0y
NDEsNyArMjQyLDcgQEAgRXhjZXB0aW9uT3I8dm9pZD4gQXVkaW9Ob2RlOjpjb25uZWN0KEF1ZGlv
UGFyYW0mIHBhcmFtLCB1bnNpZ25lZCBvdXRwdXRJbmRleCkKIEV4Y2VwdGlvbk9yPHZvaWQ+IEF1
ZGlvTm9kZTo6ZGlzY29ubmVjdCh1bnNpZ25lZCBvdXRwdXRJbmRleCkKIHsKICAgICBBU1NFUlQo
aXNNYWluVGhyZWFkKCkpOwotICAgIEF1ZGlvQ29udGV4dDo6QXV0b0xvY2tlciBsb2NrZXIoY29u
dGV4dCgpKTsKKyAgICBBdWRpb0NvbnRleHRCYXNlOjpBdXRvTG9ja2VyIGxvY2tlcihjb250ZXh0
KCkpOwogCiAgICAgLy8gU2FuaXR5IGNoZWNrIGlucHV0IGFuZCBvdXRwdXQgaW5kaWNlcy4KICAg
ICBpZiAob3V0cHV0SW5kZXggPj0gbnVtYmVyT2ZPdXRwdXRzKCkpCkBAIC0yNjMsNyArMjY0LDcg
QEAgdW5zaWduZWQgQXVkaW9Ob2RlOjpjaGFubmVsQ291bnQoKQogRXhjZXB0aW9uT3I8dm9pZD4g
QXVkaW9Ob2RlOjpzZXRDaGFubmVsQ291bnQodW5zaWduZWQgY2hhbm5lbENvdW50KQogewogICAg
IEFTU0VSVChpc01haW5UaHJlYWQoKSk7Ci0gICAgQXVkaW9Db250ZXh0OjpBdXRvTG9ja2VyIGxv
Y2tlcihjb250ZXh0KCkpOworICAgIEF1ZGlvQ29udGV4dEJhc2U6OkF1dG9Mb2NrZXIgbG9ja2Vy
KGNvbnRleHQoKSk7CiAKICAgICBBTFdBWVNfTE9HKExPR0lERU5USUZJRVIsIGNoYW5uZWxDb3Vu
dCk7CiAgICAgCkBAIC0yOTYsNyArMjk3LDcgQEAgU3RyaW5nIEF1ZGlvTm9kZTo6Y2hhbm5lbENv
dW50TW9kZSgpCiBFeGNlcHRpb25Pcjx2b2lkPiBBdWRpb05vZGU6OnNldENoYW5uZWxDb3VudE1v
ZGUoY29uc3QgU3RyaW5nJiBtb2RlKQogewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7Ci0g
ICAgQXVkaW9Db250ZXh0OjpBdXRvTG9ja2VyIGxvY2tlcihjb250ZXh0KCkpOworICAgIEF1ZGlv
Q29udGV4dEJhc2U6OkF1dG9Mb2NrZXIgbG9ja2VyKGNvbnRleHQoKSk7CiAKICAgICBBTFdBWVNf
TE9HKExPR0lERU5USUZJRVIsIG1vZGUpOwogICAgIApAQCAtMzMyLDcgKzMzMyw3IEBAIFN0cmlu
ZyBBdWRpb05vZGU6OmNoYW5uZWxJbnRlcnByZXRhdGlvbigpCiBFeGNlcHRpb25Pcjx2b2lkPiBB
dWRpb05vZGU6OnNldENoYW5uZWxJbnRlcnByZXRhdGlvbihjb25zdCBTdHJpbmcmIGludGVycHJl
dGF0aW9uKQogewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7Ci0gICAgQXVkaW9Db250ZXh0
OjpBdXRvTG9ja2VyIGxvY2tlcihjb250ZXh0KCkpOworICAgIEF1ZGlvQ29udGV4dEJhc2U6OkF1
dG9Mb2NrZXIgbG9ja2VyKGNvbnRleHQoKSk7CiAKICAgICBBTFdBWVNfTE9HKExPR0lERU5USUZJ
RVIsIGludGVycHJldGF0aW9uKTsKICAgICAKQEAgLTQzNyw3ICs0MzgsNyBAQCB2b2lkIEF1ZGlv
Tm9kZTo6ZW5hYmxlT3V0cHV0c0lmTmVjZXNzYXJ5KCkKIHsKICAgICBpZiAobV9pc0Rpc2FibGVk
ICYmIG1fY29ubmVjdGlvblJlZkNvdW50ID4gMCkgewogICAgICAgICBBU1NFUlQoaXNNYWluVGhy
ZWFkKCkpOwotICAgICAgICBBdWRpb0NvbnRleHQ6OkF1dG9Mb2NrZXIgbG9ja2VyKGNvbnRleHQo
KSk7CisgICAgICAgIEF1ZGlvQ29udGV4dEJhc2U6OkF1dG9Mb2NrZXIgbG9ja2VyKGNvbnRleHQo
KSk7CiAKICAgICAgICAgbV9pc0Rpc2FibGVkID0gZmFsc2U7CiAgICAgICAgIGZvciAoYXV0byYg
b3V0cHV0IDogbV9vdXRwdXRzKQpAQCAtNTAxLDcgKzUwMiw3IEBAIHZvaWQgQXVkaW9Ob2RlOjpk
ZXJlZihSZWZUeXBlIHJlZlR5cGUpCiAgICAgLy8gSW4gdGhlIGNhc2Ugb2YgdGhlIGF1ZGlvIHRo
cmVhZCwgd2UgbXVzdCB1c2UgYSB0cnlMb2NrIHRvIGF2b2lkIGdsaXRjaGVzLgogICAgIGJvb2wg
aGFzTG9jayA9IGZhbHNlOwogICAgIGJvb2wgbXVzdFJlbGVhc2VMb2NrID0gZmFsc2U7Ci0gICAg
CisKICAgICBpZiAoY29udGV4dCgpLmlzQXVkaW9UaHJlYWQoKSkgewogICAgICAgICAvLyBSZWFs
LXRpbWUgYXVkaW8gdGhyZWFkIG11c3Qgbm90IGNvbnRlbmQgbG9jayAodG8gYXZvaWQgZ2xpdGNo
ZXMpLgogICAgICAgICBoYXNMb2NrID0gY29udGV4dCgpLnRyeUxvY2sobXVzdFJlbGVhc2VMb2Nr
KTsKQEAgLTUzMCw2ICs1MzEsMTMgQEAgdm9pZCBBdWRpb05vZGU6OmRlcmVmKFJlZlR5cGUgcmVm
VHlwZSkKICAgICAgICAgY29udGV4dCgpLmRlbGV0ZU1hcmtlZE5vZGVzKCk7CiB9CiAKK1Zhcmlh
bnQ8UmVmUHRyPEF1ZGlvQ29udGV4dD4sIFJlZlB0cjxXZWJLaXRBdWRpb0NvbnRleHQ+PiBBdWRp
b05vZGU6OmNvbnRleHRGb3JCaW5kaW5ncygpIGNvbnN0Cit7CisgICAgaWYgKG1fY29udGV4dC0+
aXNXZWJLaXRBdWRpb0NvbnRleHQoKSkKKyAgICAgICAgcmV0dXJuIG1ha2VSZWZQdHIoc3RhdGlj
X2Nhc3Q8V2ViS2l0QXVkaW9Db250ZXh0Jj4obV9jb250ZXh0LmdldCgpKSk7CisgICAgcmV0dXJu
IG1ha2VSZWZQdHIoc3RhdGljX2Nhc3Q8QXVkaW9Db250ZXh0Jj4obV9jb250ZXh0LmdldCgpKSk7
Cit9CisKIHZvaWQgQXVkaW9Ob2RlOjpmaW5pc2hEZXJlZihSZWZUeXBlIHJlZlR5cGUpCiB7CiAg
ICAgQVNTRVJUKGNvbnRleHQoKS5pc0dyYXBoT3duZXIoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvTm9kZS5oIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJhdWRpby9BdWRpb05vZGUuaAppbmRleCA0MjEwMTAwNmNjNy4uYTk4ODFiZDRiOGQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Ob2RlLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb05vZGUuaApAQCAtMjks
MTUgKzI5LDE4IEBACiAjaW5jbHVkZSAiRXhjZXB0aW9uT3IuaCIKICNpbmNsdWRlIDx3dGYvRm9y
d2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9Mb2dnZXJIZWxwZXIuaD4KKyNpbmNsdWRlIDx3dGYvVmFy
aWFudC5oPgogCiAjZGVmaW5lIERFQlVHX0FVRElPTk9ERV9SRUZFUkVOQ0VTIDAKIAogbmFtZXNw
YWNlIFdlYkNvcmUgewogCiBjbGFzcyBBdWRpb0NvbnRleHQ7CitjbGFzcyBBdWRpb0NvbnRleHRC
YXNlOwogY2xhc3MgQXVkaW9Ob2RlSW5wdXQ7CiBjbGFzcyBBdWRpb05vZGVPdXRwdXQ7CiBjbGFz
cyBBdWRpb1BhcmFtOworY2xhc3MgV2ViS2l0QXVkaW9Db250ZXh0OwogCiAvLyBBbiBBdWRpb05v
ZGUgaXMgdGhlIGJhc2ljIGJ1aWxkaW5nIGJsb2NrIGZvciBoYW5kbGluZyBhdWRpbyB3aXRoaW4g
YW4gQXVkaW9Db250ZXh0LgogLy8gSXQgbWF5IGJlIGFuIGF1ZGlvIHNvdXJjZSwgYW4gaW50ZXJt
ZWRpYXRlIHByb2Nlc3NpbmcgbW9kdWxlLCBvciBhbiBhdWRpbyBkZXN0aW5hdGlvbi4KQEAgLTU2
LDExICs1OSwxMyBAQCBjbGFzcyBBdWRpb05vZGUKIHB1YmxpYzoKICAgICBlbnVtIHsgUHJvY2Vz
c2luZ1NpemVJbkZyYW1lcyA9IDEyOCB9OwogCi0gICAgQXVkaW9Ob2RlKEF1ZGlvQ29udGV4dCYs
IGZsb2F0IHNhbXBsZVJhdGUpOworICAgIEF1ZGlvTm9kZShBdWRpb0NvbnRleHRCYXNlJiwgZmxv
YXQgc2FtcGxlUmF0ZSk7CiAgICAgdmlydHVhbCB+QXVkaW9Ob2RlKCk7CiAKLSAgICBBdWRpb0Nv
bnRleHQmIGNvbnRleHQoKSB7IHJldHVybiBtX2NvbnRleHQuZ2V0KCk7IH0KLSAgICBjb25zdCBB
dWRpb0NvbnRleHQmIGNvbnRleHQoKSBjb25zdCB7IHJldHVybiBtX2NvbnRleHQuZ2V0KCk7IH0K
KyAgICBBdWRpb0NvbnRleHRCYXNlJiBjb250ZXh0KCkgeyByZXR1cm4gbV9jb250ZXh0LmdldCgp
OyB9CisgICAgY29uc3QgQXVkaW9Db250ZXh0QmFzZSYgY29udGV4dCgpIGNvbnN0IHsgcmV0dXJu
IG1fY29udGV4dC5nZXQoKTsgfQorCisgICAgVmFyaWFudDxSZWZQdHI8QXVkaW9Db250ZXh0Piwg
UmVmUHRyPFdlYktpdEF1ZGlvQ29udGV4dD4+IGNvbnRleHRGb3JCaW5kaW5ncygpIGNvbnN0Owog
CiAgICAgZW51bSBOb2RlVHlwZSB7CiAgICAgICAgIE5vZGVUeXBlVW5rbm93biwKQEAgLTIwOSw3
ICsyMTQsNyBAQCBwcml2YXRlOgogCiAgICAgdm9sYXRpbGUgYm9vbCBtX2lzSW5pdGlhbGl6ZWQ7
CiAgICAgTm9kZVR5cGUgbV9ub2RlVHlwZTsKLSAgICBSZWY8QXVkaW9Db250ZXh0PiBtX2NvbnRl
eHQ7CisgICAgUmVmPEF1ZGlvQ29udGV4dEJhc2U+IG1fY29udGV4dDsKICAgICBmbG9hdCBtX3Nh
bXBsZVJhdGU7CiAgICAgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxBdWRpb05vZGVJbnB1dD4+IG1f
aW5wdXRzOwogICAgIFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8QXVkaW9Ob2RlT3V0cHV0Pj4gbV9v
dXRwdXRzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRp
b05vZGUuaWRsIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb05vZGUuaWRs
CmluZGV4IDcwZmVjOGM4MTQ1Li43MTkzOWM4MzE3MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb05vZGUuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViYXVkaW8vQXVkaW9Ob2RlLmlkbApAQCAtMjUsNyArMjUsNyBAQAogWwogICAgIENv
bmRpdGlvbmFsPVdFQl9BVURJTywKIF0gaW50ZXJmYWNlIEF1ZGlvTm9kZSA6IEV2ZW50VGFyZ2V0
IHsKLSAgICByZWFkb25seSBhdHRyaWJ1dGUgQXVkaW9Db250ZXh0IGNvbnRleHQ7CisgICAgW0lt
cGxlbWVudGVkQXM9Y29udGV4dEZvckJpbmRpbmdzXSByZWFkb25seSBhdHRyaWJ1dGUgKEF1ZGlv
Q29udGV4dCBvciBXZWJLaXRBdWRpb0NvbnRleHQpIGNvbnRleHQ7CiAgICAgcmVhZG9ubHkgYXR0
cmlidXRlIHVuc2lnbmVkIGxvbmcgbnVtYmVyT2ZJbnB1dHM7CiAgICAgcmVhZG9ubHkgYXR0cmli
dXRlIHVuc2lnbmVkIGxvbmcgbnVtYmVyT2ZPdXRwdXRzOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvTm9kZU91dHB1dC5oIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb05vZGVPdXRwdXQuaAppbmRleCA1MGE5NWVlMjA1Yy4u
ZjA4OTgzNjM1ZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8v
QXVkaW9Ob2RlT3V0cHV0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9B
dWRpb05vZGVPdXRwdXQuaApAQCAtNDcsNyArNDcsNyBAQCBwdWJsaWM6CiAKICAgICAvLyBDYW4g
YmUgY2FsbGVkIGZyb20gYW55IHRocmVhZC4KICAgICBBdWRpb05vZGUqIG5vZGUoKSBjb25zdCB7
IHJldHVybiBtX25vZGU7IH0KLSAgICBBdWRpb0NvbnRleHQmIGNvbnRleHQoKSB7IHJldHVybiBt
X25vZGUtPmNvbnRleHQoKTsgfQorICAgIEF1ZGlvQ29udGV4dEJhc2UmIGNvbnRleHQoKSB7IHJl
dHVybiBtX25vZGUtPmNvbnRleHQoKTsgfQogICAgIAogICAgIC8vIENhdXNlcyBvdXIgQXVkaW9O
b2RlIHRvIHByb2Nlc3MgaWYgaXQgaGFzbid0IGFscmVhZHkgZm9yIHRoaXMgcmVuZGVyIHF1YW50
dW0uCiAgICAgLy8gSXQgcmV0dXJucyB0aGUgYnVzIGNvbnRhaW5pbmcgdGhlIHByb2Nlc3NlZCBh
dWRpbyBmb3IgdGhpcyBvdXRwdXQsIHJldHVybmluZyBpblBsYWNlQnVzIGlmIGluLXBsYWNlIHBy
b2Nlc3Npbmcgd2FzIHBvc3NpYmxlLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJhdWRpby9BdWRpb1BhcmFtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVk
aW8vQXVkaW9QYXJhbS5jcHAKaW5kZXggMjkzNDU2NDQ1Y2MuLmQ0NzBiZjc0NmVmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvUGFyYW0uY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9QYXJhbS5jcHAKQEAgLTQxLDcg
KzQxLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY29uc3QgZG91YmxlIEF1ZGlvUGFyYW06OkRl
ZmF1bHRTbW9vdGhpbmdDb25zdGFudCA9IDAuMDU7CiBjb25zdCBkb3VibGUgQXVkaW9QYXJhbTo6
U25hcFRocmVzaG9sZCA9IDAuMDAxOwogCi1BdWRpb1BhcmFtOjpBdWRpb1BhcmFtKEF1ZGlvQ29u
dGV4dCYgY29udGV4dCwgY29uc3QgU3RyaW5nJiBuYW1lLCBkb3VibGUgZGVmYXVsdFZhbHVlLCBk
b3VibGUgbWluVmFsdWUsIGRvdWJsZSBtYXhWYWx1ZSwgdW5zaWduZWQgdW5pdHMpCitBdWRpb1Bh
cmFtOjpBdWRpb1BhcmFtKEF1ZGlvQ29udGV4dEJhc2UmIGNvbnRleHQsIGNvbnN0IFN0cmluZyYg
bmFtZSwgZG91YmxlIGRlZmF1bHRWYWx1ZSwgZG91YmxlIG1pblZhbHVlLCBkb3VibGUgbWF4VmFs
dWUsIHVuc2lnbmVkIHVuaXRzKQogICAgIDogQXVkaW9TdW1taW5nSnVuY3Rpb24oY29udGV4dCkK
ICAgICAsIG1fbmFtZShuYW1lKQogICAgICwgbV92YWx1ZShkZWZhdWx0VmFsdWUpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvUGFyYW0uaCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9QYXJhbS5oCmluZGV4IDIyNmM5NTdlNzA2
Li4xNmEyMTA5NTA0NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRp
by9BdWRpb1BhcmFtLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRp
b1BhcmFtLmgKQEAgLTMxLDYgKzMxLDcgQEAKICNpbmNsdWRlICJBdWRpb0NvbnRleHQuaCIKICNp
bmNsdWRlICJBdWRpb1BhcmFtVGltZWxpbmUuaCIKICNpbmNsdWRlICJBdWRpb1N1bW1pbmdKdW5j
dGlvbi5oIgorI2luY2x1ZGUgIldlYktpdEF1ZGlvQ29udGV4dC5oIgogI2luY2x1ZGUgPEphdmFT
Y3JpcHRDb3JlL0Zsb2F0MzJBcnJheS5oPgogI2luY2x1ZGUgPHN5cy90eXBlcy5oPgogI2luY2x1
ZGUgPHd0Zi9Mb2dnZXJIZWxwZXIuaD4KQEAgLTUyLDcgKzUzLDcgQEAgcHVibGljOgogICAgIHN0
YXRpYyBjb25zdCBkb3VibGUgRGVmYXVsdFNtb290aGluZ0NvbnN0YW50OwogICAgIHN0YXRpYyBj
b25zdCBkb3VibGUgU25hcFRocmVzaG9sZDsKIAotICAgIHN0YXRpYyBSZWY8QXVkaW9QYXJhbT4g
Y3JlYXRlKEF1ZGlvQ29udGV4dCYgY29udGV4dCwgY29uc3QgU3RyaW5nJiBuYW1lLCBkb3VibGUg
ZGVmYXVsdFZhbHVlLCBkb3VibGUgbWluVmFsdWUsIGRvdWJsZSBtYXhWYWx1ZSwgdW5zaWduZWQg
dW5pdHMgPSAwKQorICAgIHN0YXRpYyBSZWY8QXVkaW9QYXJhbT4gY3JlYXRlKEF1ZGlvQ29udGV4
dEJhc2UmIGNvbnRleHQsIGNvbnN0IFN0cmluZyYgbmFtZSwgZG91YmxlIGRlZmF1bHRWYWx1ZSwg
ZG91YmxlIG1pblZhbHVlLCBkb3VibGUgbWF4VmFsdWUsIHVuc2lnbmVkIHVuaXRzID0gMCkKICAg
ICB7CiAgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEF1ZGlvUGFyYW0oY29udGV4dCwgbmFt
ZSwgZGVmYXVsdFZhbHVlLCBtaW5WYWx1ZSwgbWF4VmFsdWUsIHVuaXRzKSk7CiAgICAgfQpAQCAt
MTA4LDcgKzEwOSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGRpc2Nvbm5lY3QoQXVkaW9Ob2RlT3V0
cHV0Kik7CiAKIHByb3RlY3RlZDoKLSAgICBBdWRpb1BhcmFtKEF1ZGlvQ29udGV4dCYsIGNvbnN0
IFN0cmluZyYsIGRvdWJsZSBkZWZhdWx0VmFsdWUsIGRvdWJsZSBtaW5WYWx1ZSwgZG91YmxlIG1h
eFZhbHVlLCB1bnNpZ25lZCB1bml0cyA9IDApOworICAgIEF1ZGlvUGFyYW0oQXVkaW9Db250ZXh0
QmFzZSYsIGNvbnN0IFN0cmluZyYsIGRvdWJsZSBkZWZhdWx0VmFsdWUsIGRvdWJsZSBtaW5WYWx1
ZSwgZG91YmxlIG1heFZhbHVlLCB1bnNpZ25lZCB1bml0cyA9IDApOwogCiBwcml2YXRlOgogICAg
IC8vIHNhbXBsZUFjY3VyYXRlIGNvcnJlc3BvbmRzIHRvIGEtcmF0ZSAoYXVkaW8gcmF0ZSkgdnMu
IGstcmF0ZSBpbiB0aGUgV2ViIEF1ZGlvIHNwZWNpZmljYXRpb24uCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvUGFyYW1UaW1lbGluZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvUGFyYW1UaW1lbGluZS5jcHAKaW5kZXgg
MmI1OTU3MGJmNmUuLjZjNDEzMDFkOGFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmF1ZGlvL0F1ZGlvUGFyYW1UaW1lbGluZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJhdWRpby9BdWRpb1BhcmFtVGltZWxpbmUuY3BwCkBAIC0xMTMsNyArMTEzLDcg
QEAgdm9pZCBBdWRpb1BhcmFtVGltZWxpbmU6OmNhbmNlbFNjaGVkdWxlZFZhbHVlcyhmbG9hdCBz
dGFydFRpbWUpCiAgICAgfQogfQogCi1mbG9hdCBBdWRpb1BhcmFtVGltZWxpbmU6OnZhbHVlRm9y
Q29udGV4dFRpbWUoQXVkaW9Db250ZXh0JiBjb250ZXh0LCBmbG9hdCBkZWZhdWx0VmFsdWUsIGJv
b2wmIGhhc1ZhbHVlKQorZmxvYXQgQXVkaW9QYXJhbVRpbWVsaW5lOjp2YWx1ZUZvckNvbnRleHRU
aW1lKEF1ZGlvQ29udGV4dEJhc2UmIGNvbnRleHQsIGZsb2F0IGRlZmF1bHRWYWx1ZSwgYm9vbCYg
aGFzVmFsdWUpCiB7CiAgICAgewogICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPExvY2s+IGxvY2so
bV9ldmVudHNNdXRleCwgc3RkOjp0cnlfdG9fbG9jayk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvUGFyYW1UaW1lbGluZS5oIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1BhcmFtVGltZWxpbmUuaAppbmRleCA3YzEwOTk5NTZj
ZS4uYTU4NjhiZGVlMTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVk
aW8vQXVkaW9QYXJhbVRpbWVsaW5lLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJh
dWRpby9BdWRpb1BhcmFtVGltZWxpbmUuaApAQCAtNTIsNyArNTIsNyBAQCBwdWJsaWM6CiAKICAg
ICAvLyBoYXNWYWx1ZSBpcyBzZXQgdG8gdHJ1ZSBpZiBhIHZhbGlkIHRpbWVsaW5lIHZhbHVlIGlz
IHJldHVybmVkLgogICAgIC8vIG90aGVyd2lzZSBkZWZhdWx0VmFsdWUgaXMgcmV0dXJuZWQuCi0g
ICAgZmxvYXQgdmFsdWVGb3JDb250ZXh0VGltZShBdWRpb0NvbnRleHQmLCBmbG9hdCBkZWZhdWx0
VmFsdWUsIGJvb2wmIGhhc1ZhbHVlKTsKKyAgICBmbG9hdCB2YWx1ZUZvckNvbnRleHRUaW1lKEF1
ZGlvQ29udGV4dEJhc2UmLCBmbG9hdCBkZWZhdWx0VmFsdWUsIGJvb2wmIGhhc1ZhbHVlKTsKIAog
ICAgIC8vIEdpdmVuIHRoZSB0aW1lIHJhbmdlLCBjYWxjdWxhdGVzIHBhcmFtZXRlciB2YWx1ZXMg
aW50byB0aGUgdmFsdWVzIGJ1ZmZlcgogICAgIC8vIGFuZCByZXR1cm5zIHRoZSBsYXN0IHBhcmFt
ZXRlciB2YWx1ZSBjYWxjdWxhdGVkIGZvciAidmFsdWVzIiBvciB0aGUgZGVmYXVsdFZhbHVlIGlm
IG5vbmUgd2VyZSBjYWxjdWxhdGVkLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJhdWRpby9BdWRpb1NjaGVkdWxlZFNvdXJjZU5vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJhdWRpby9BdWRpb1NjaGVkdWxlZFNvdXJjZU5vZGUuY3BwCmluZGV4IDBmNzI2
NzZmYzc0Li43YzI4MjM3YTBiZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJhdWRpby9BdWRpb1NjaGVkdWxlZFNvdXJjZU5vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViYXVkaW8vQXVkaW9TY2hlZHVsZWRTb3VyY2VOb2RlLmNwcApAQCAtNDksNyAr
NDksNyBAQCBXVEZfTUFLRV9JU09fQUxMT0NBVEVEX0lNUEwoQXVkaW9TY2hlZHVsZWRTb3VyY2VO
b2RlKTsKIAogY29uc3QgZG91YmxlIEF1ZGlvU2NoZWR1bGVkU291cmNlTm9kZTo6VW5rbm93blRp
bWUgPSAtMTsKIAotQXVkaW9TY2hlZHVsZWRTb3VyY2VOb2RlOjpBdWRpb1NjaGVkdWxlZFNvdXJj
ZU5vZGUoQXVkaW9Db250ZXh0JiBjb250ZXh0LCBmbG9hdCBzYW1wbGVSYXRlKQorQXVkaW9TY2hl
ZHVsZWRTb3VyY2VOb2RlOjpBdWRpb1NjaGVkdWxlZFNvdXJjZU5vZGUoQXVkaW9Db250ZXh0QmFz
ZSYgY29udGV4dCwgZmxvYXQgc2FtcGxlUmF0ZSkKICAgICA6IEF1ZGlvTm9kZShjb250ZXh0LCBz
YW1wbGVSYXRlKQogICAgICwgQWN0aXZlRE9NT2JqZWN0KGNvbnRleHQuc2NyaXB0RXhlY3V0aW9u
Q29udGV4dCgpKQogICAgICwgbV9lbmRUaW1lKFVua25vd25UaW1lKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1NjaGVkdWxlZFNvdXJjZU5vZGUuaCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9TY2hlZHVsZWRTb3VyY2VOb2Rl
LmgKaW5kZXggOGNhZGJlMTBhZmQuLmI0ZDk1ODgwYzFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvU2NoZWR1bGVkU291cmNlTm9kZS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9TY2hlZHVsZWRTb3VyY2VOb2RlLmgK
QEAgLTUzLDcgKzUzLDcgQEAgcHVibGljOgogICAgICAgICBGSU5JU0hFRF9TVEFURSA9IDMKICAg
ICB9OwogICAgIAotICAgIEF1ZGlvU2NoZWR1bGVkU291cmNlTm9kZShBdWRpb0NvbnRleHQmLCBm
bG9hdCBzYW1wbGVSYXRlKTsKKyAgICBBdWRpb1NjaGVkdWxlZFNvdXJjZU5vZGUoQXVkaW9Db250
ZXh0QmFzZSYsIGZsb2F0IHNhbXBsZVJhdGUpOwogCiAgICAgRXhjZXB0aW9uT3I8dm9pZD4gc3Rh
cnRMYXRlcihkb3VibGUgd2hlbik7CiAgICAgRXhjZXB0aW9uT3I8dm9pZD4gc3RvcExhdGVyKGRv
dWJsZSB3aGVuKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8v
QXVkaW9TdW1taW5nSnVuY3Rpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRp
by9BdWRpb1N1bW1pbmdKdW5jdGlvbi5jcHAKaW5kZXggZWU2MDBhNjI5YTEuLmRkNjRmZDNlYTgx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvU3VtbWlu
Z0p1bmN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlv
U3VtbWluZ0p1bmN0aW9uLmNwcApAQCAtMzQsNyArMzQsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKLUF1ZGlvU3VtbWluZ0p1bmN0aW9uOjpBdWRpb1N1bW1pbmdKdW5jdGlvbihBdWRpb0Nv
bnRleHQmIGNvbnRleHQpCitBdWRpb1N1bW1pbmdKdW5jdGlvbjo6QXVkaW9TdW1taW5nSnVuY3Rp
b24oQXVkaW9Db250ZXh0QmFzZSYgY29udGV4dCkKICAgICA6IG1fY29udGV4dChjb250ZXh0KQog
ICAgICwgbV9yZW5kZXJpbmdTdGF0ZU5lZWRVcGRhdGluZyhmYWxzZSkKIHsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9TdW1taW5nSnVuY3Rpb24uaCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9TdW1taW5nSnVuY3Rpb24uaApp
bmRleCBjOTRmZjZkNmE1YS4uNGNiZjhhZTlmYjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViYXVkaW8vQXVkaW9TdW1taW5nSnVuY3Rpb24uaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvU3VtbWluZ0p1bmN0aW9uLmgKQEAgLTMwLDE4ICsz
MCwxOCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIEF1ZGlvQ29udGV4dDsKK2Ns
YXNzIEF1ZGlvQ29udGV4dEJhc2U7CiBjbGFzcyBBdWRpb05vZGVPdXRwdXQ7CiAKIC8vIEFuIEF1
ZGlvU3VtbWluZ0p1bmN0aW9uIHJlcHJlc2VudHMgYSBwb2ludCB3aGVyZSB6ZXJvLCBvbmUsIG9y
IG1vcmUgQXVkaW9Ob2RlT3V0cHV0cyBjb25uZWN0LgogCiBjbGFzcyBBdWRpb1N1bW1pbmdKdW5j
dGlvbiB7CiBwdWJsaWM6Ci0gICAgZXhwbGljaXQgQXVkaW9TdW1taW5nSnVuY3Rpb24oQXVkaW9D
b250ZXh0Jik7CisgICAgZXhwbGljaXQgQXVkaW9TdW1taW5nSnVuY3Rpb24oQXVkaW9Db250ZXh0
QmFzZSYpOwogICAgIHZpcnR1YWwgfkF1ZGlvU3VtbWluZ0p1bmN0aW9uKCk7CiAKICAgICAvLyBD
YW4gYmUgY2FsbGVkIGZyb20gYW55IHRocmVhZC4KLSAgICBBdWRpb0NvbnRleHQmIGNvbnRleHQo
KSB7IHJldHVybiBtX2NvbnRleHQuZ2V0KCk7IH0KKyAgICBBdWRpb0NvbnRleHRCYXNlJiBjb250
ZXh0KCkgeyByZXR1cm4gbV9jb250ZXh0OyB9CiAKICAgICAvLyBUaGlzIG11c3QgYmUgY2FsbGVk
IHdoZW5ldmVyIHdlIG1vZGlmeSBtX291dHB1dHMuCiAgICAgdm9pZCBjaGFuZ2VkT3V0cHV0cygp
OwpAQCAtNjAsNyArNjAsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGRpZFVwZGF0ZSgp
ID0gMDsKIAogcHJvdGVjdGVkOgotICAgIFJlZjxBdWRpb0NvbnRleHQ+IG1fY29udGV4dDsKKyAg
ICBSZWY8QXVkaW9Db250ZXh0QmFzZT4gbV9jb250ZXh0OwogCiAgICAgLy8gbV9vdXRwdXRzIGNv
bnRhaW5zIHRoZSBBdWRpb05vZGVPdXRwdXRzIHJlcHJlc2VudGluZyBjdXJyZW50IGNvbm5lY3Rp
b25zIHdoaWNoIGFyZSBub3QgZGlzYWJsZWQuCiAgICAgLy8gVGhlIHJlbmRlcmluZyBjb2RlIHNo
b3VsZCBuZXZlciB1c2UgdGhpcyBkaXJlY3RseSwgYnV0IGluc3RlYWQgdXNlcyBtX3JlbmRlcmlu
Z091dHB1dHMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0Jp
cXVhZEZpbHRlck5vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9CaXF1
YWRGaWx0ZXJOb2RlLmNwcAppbmRleCA0YTgyNTVlNmYwYS4uZGRlMDc3M2Q0NzMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQmlxdWFkRmlsdGVyTm9kZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9CaXF1YWRGaWx0ZXJOb2RlLmNw
cApAQCAtMzMsNyArMzMsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFdURl9NQUtFX0lTT19B
TExPQ0FURURfSU1QTChCaXF1YWRGaWx0ZXJOb2RlKTsKIAotQmlxdWFkRmlsdGVyTm9kZTo6Qmlx
dWFkRmlsdGVyTm9kZShBdWRpb0NvbnRleHQmIGNvbnRleHQsIGZsb2F0IHNhbXBsZVJhdGUpCitC
aXF1YWRGaWx0ZXJOb2RlOjpCaXF1YWRGaWx0ZXJOb2RlKEF1ZGlvQ29udGV4dEJhc2UmIGNvbnRl
eHQsIGZsb2F0IHNhbXBsZVJhdGUpCiAgICAgOiBBdWRpb0Jhc2ljUHJvY2Vzc29yTm9kZShjb250
ZXh0LCBzYW1wbGVSYXRlKQogewogICAgIHNldE5vZGVUeXBlKE5vZGVUeXBlQmlxdWFkRmlsdGVy
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQmlxdWFkRmls
dGVyTm9kZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9CaXF1YWRGaWx0ZXJO
b2RlLmgKaW5kZXggODA5NGQ5MWVhYjMuLmFjOGQ5NDdhMTBmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0JpcXVhZEZpbHRlck5vZGUuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0JpcXVhZEZpbHRlck5vZGUuaApAQCAtMzQsNyArMzQs
NyBAQCBjbGFzcyBBdWRpb1BhcmFtOwogY2xhc3MgQmlxdWFkRmlsdGVyTm9kZSBmaW5hbCA6IHB1
YmxpYyBBdWRpb0Jhc2ljUHJvY2Vzc29yTm9kZSB7CiAgICAgV1RGX01BS0VfSVNPX0FMTE9DQVRF
RChCaXF1YWRGaWx0ZXJOb2RlKTsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPEJpcXVhZEZpbHRl
ck5vZGU+IGNyZWF0ZShBdWRpb0NvbnRleHQmIGNvbnRleHQsIGZsb2F0IHNhbXBsZVJhdGUpCisg
ICAgc3RhdGljIFJlZjxCaXF1YWRGaWx0ZXJOb2RlPiBjcmVhdGUoQXVkaW9Db250ZXh0QmFzZSYg
Y29udGV4dCwgZmxvYXQgc2FtcGxlUmF0ZSkKICAgICB7CiAgICAgICAgIHJldHVybiBhZG9wdFJl
ZigqbmV3IEJpcXVhZEZpbHRlck5vZGUoY29udGV4dCwgc2FtcGxlUmF0ZSkpOwogICAgIH0KQEAg
LTUyLDcgKzUyLDcgQEAgcHVibGljOgogICAgIHZvaWQgZ2V0RnJlcXVlbmN5UmVzcG9uc2UoY29u
c3QgUmVmUHRyPEZsb2F0MzJBcnJheT4mIGZyZXF1ZW5jeUh6LCBjb25zdCBSZWZQdHI8RmxvYXQz
MkFycmF5PiYgbWFnUmVzcG9uc2UsIGNvbnN0IFJlZlB0cjxGbG9hdDMyQXJyYXk+JiBwaGFzZVJl
c3BvbnNlKTsKIAogcHJpdmF0ZToKLSAgICBCaXF1YWRGaWx0ZXJOb2RlKEF1ZGlvQ29udGV4dCYs
IGZsb2F0IHNhbXBsZVJhdGUpOworICAgIEJpcXVhZEZpbHRlck5vZGUoQXVkaW9Db250ZXh0QmFz
ZSYsIGZsb2F0IHNhbXBsZVJhdGUpOwogCiAgICAgQmlxdWFkUHJvY2Vzc29yKiBiaXF1YWRQcm9j
ZXNzb3IoKSB7IHJldHVybiBzdGF0aWNfY2FzdDxCaXF1YWRQcm9jZXNzb3IqPihwcm9jZXNzb3Io
KSk7IH0KIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0Jp
cXVhZFByb2Nlc3Nvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0JpcXVh
ZFByb2Nlc3Nvci5jcHAKaW5kZXggZTg0Yjk4MDM1NjcuLjJmNjA2N2E3MmRjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0JpcXVhZFByb2Nlc3Nvci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9CaXF1YWRQcm9jZXNzb3IuY3BwCkBA
IC0zMiw3ICszMiw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAKLUJpcXVhZFByb2Nl
c3Nvcjo6QmlxdWFkUHJvY2Vzc29yKEF1ZGlvQ29udGV4dCYgY29udGV4dCwgZmxvYXQgc2FtcGxl
UmF0ZSwgc2l6ZV90IG51bWJlck9mQ2hhbm5lbHMsIGJvb2wgYXV0b0luaXRpYWxpemUpCitCaXF1
YWRQcm9jZXNzb3I6OkJpcXVhZFByb2Nlc3NvcihBdWRpb0NvbnRleHRCYXNlJiBjb250ZXh0LCBm
bG9hdCBzYW1wbGVSYXRlLCBzaXplX3QgbnVtYmVyT2ZDaGFubmVscywgYm9vbCBhdXRvSW5pdGlh
bGl6ZSkKICAgICA6IEF1ZGlvRFNQS2VybmVsUHJvY2Vzc29yKHNhbXBsZVJhdGUsIG51bWJlck9m
Q2hhbm5lbHMpCiAgICAgLCBtX3R5cGUoQmlxdWFkRmlsdGVyVHlwZTo6TG93cGFzcykKICAgICAs
IG1fcGFyYW1ldGVyMSgwKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJh
dWRpby9CaXF1YWRQcm9jZXNzb3IuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8v
QmlxdWFkUHJvY2Vzc29yLmgKaW5kZXggYWRiZWVjNDMwMjUuLmRjMzA2YWI1MTdiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0JpcXVhZFByb2Nlc3Nvci5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQmlxdWFkUHJvY2Vzc29yLmgKQEAg
LTUwLDcgKzUwLDcgQEAgZW51bSBjbGFzcyBCaXF1YWRGaWx0ZXJUeXBlIHsKIGNsYXNzIEJpcXVh
ZFByb2Nlc3NvciBmaW5hbCA6IHB1YmxpYyBBdWRpb0RTUEtlcm5lbFByb2Nlc3NvciB7CiAgICAg
V1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6Ci0gICAgQmlxdWFkUHJvY2Vzc29yKEF1
ZGlvQ29udGV4dCYsIGZsb2F0IHNhbXBsZVJhdGUsIHNpemVfdCBudW1iZXJPZkNoYW5uZWxzLCBi
b29sIGF1dG9Jbml0aWFsaXplKTsKKyAgICBCaXF1YWRQcm9jZXNzb3IoQXVkaW9Db250ZXh0QmFz
ZSYsIGZsb2F0IHNhbXBsZVJhdGUsIHNpemVfdCBudW1iZXJPZkNoYW5uZWxzLCBib29sIGF1dG9J
bml0aWFsaXplKTsKIAogICAgIHZpcnR1YWwgfkJpcXVhZFByb2Nlc3NvcigpOwogICAgIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9DaGFubmVsTWVyZ2VyTm9k
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0NoYW5uZWxNZXJnZXJOb2Rl
LmNwcAppbmRleCBkZjUwZjI2ODczNi4uZGUyOGFlYTdkMmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQ2hhbm5lbE1lcmdlck5vZGUuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQ2hhbm5lbE1lcmdlck5vZGUuY3BwCkBAIC00Myw3
ICs0Myw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogV1RGX01BS0VfSVNPX0FMTE9DQVRFRF9J
TVBMKENoYW5uZWxNZXJnZXJOb2RlKTsKIAotUmVmUHRyPENoYW5uZWxNZXJnZXJOb2RlPiBDaGFu
bmVsTWVyZ2VyTm9kZTo6Y3JlYXRlKEF1ZGlvQ29udGV4dCYgY29udGV4dCwgZmxvYXQgc2FtcGxl
UmF0ZSwgdW5zaWduZWQgbnVtYmVyT2ZJbnB1dHMpCitSZWZQdHI8Q2hhbm5lbE1lcmdlck5vZGU+
IENoYW5uZWxNZXJnZXJOb2RlOjpjcmVhdGUoQXVkaW9Db250ZXh0QmFzZSYgY29udGV4dCwgZmxv
YXQgc2FtcGxlUmF0ZSwgdW5zaWduZWQgbnVtYmVyT2ZJbnB1dHMpCiB7CiAgICAgaWYgKCFudW1i
ZXJPZklucHV0cyB8fCBudW1iZXJPZklucHV0cyA+IEF1ZGlvQ29udGV4dDo6bWF4TnVtYmVyT2ZD
aGFubmVscygpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTUxLDcgKzUxLDcgQEAgUmVm
UHRyPENoYW5uZWxNZXJnZXJOb2RlPiBDaGFubmVsTWVyZ2VyTm9kZTo6Y3JlYXRlKEF1ZGlvQ29u
dGV4dCYgY29udGV4dCwgZmxvYXQKICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBDaGFubmVsTWVy
Z2VyTm9kZShjb250ZXh0LCBzYW1wbGVSYXRlLCBudW1iZXJPZklucHV0cykpOyAgICAgIAogfQog
Ci1DaGFubmVsTWVyZ2VyTm9kZTo6Q2hhbm5lbE1lcmdlck5vZGUoQXVkaW9Db250ZXh0JiBjb250
ZXh0LCBmbG9hdCBzYW1wbGVSYXRlLCB1bnNpZ25lZCBudW1iZXJPZklucHV0cykKK0NoYW5uZWxN
ZXJnZXJOb2RlOjpDaGFubmVsTWVyZ2VyTm9kZShBdWRpb0NvbnRleHRCYXNlJiBjb250ZXh0LCBm
bG9hdCBzYW1wbGVSYXRlLCB1bnNpZ25lZCBudW1iZXJPZklucHV0cykKICAgICA6IEF1ZGlvTm9k
ZShjb250ZXh0LCBzYW1wbGVSYXRlKQogICAgICwgbV9kZXNpcmVkTnVtYmVyT2ZPdXRwdXRDaGFu
bmVscyhEZWZhdWx0TnVtYmVyT2ZPdXRwdXRDaGFubmVscykKIHsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQ2hhbm5lbE1lcmdlck5vZGUuaCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQ2hhbm5lbE1lcmdlck5vZGUuaAppbmRleCA2NjYzNmVl
ZDZmNy4uNjI5NzZlMDUwNzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
YXVkaW8vQ2hhbm5lbE1lcmdlck5vZGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmF1ZGlvL0NoYW5uZWxNZXJnZXJOb2RlLmgKQEAgLTM3LDcgKzM3LDcgQEAgY2xhc3MgQXVkaW9D
b250ZXh0OwogY2xhc3MgQ2hhbm5lbE1lcmdlck5vZGUgZmluYWwgOiBwdWJsaWMgQXVkaW9Ob2Rl
IHsKICAgICBXVEZfTUFLRV9JU09fQUxMT0NBVEVEKENoYW5uZWxNZXJnZXJOb2RlKTsKIHB1Ymxp
YzoKLSAgICBzdGF0aWMgUmVmUHRyPENoYW5uZWxNZXJnZXJOb2RlPiBjcmVhdGUoQXVkaW9Db250
ZXh0JiwgZmxvYXQgc2FtcGxlUmF0ZSwgdW5zaWduZWQgbnVtYmVyT2ZJbnB1dHMpOworICAgIHN0
YXRpYyBSZWZQdHI8Q2hhbm5lbE1lcmdlck5vZGU+IGNyZWF0ZShBdWRpb0NvbnRleHRCYXNlJiwg
ZmxvYXQgc2FtcGxlUmF0ZSwgdW5zaWduZWQgbnVtYmVyT2ZJbnB1dHMpOwogCiAgICAgLy8gQXVk
aW9Ob2RlCiAgICAgdm9pZCBwcm9jZXNzKHNpemVfdCBmcmFtZXNUb1Byb2Nlc3MpIG92ZXJyaWRl
OwpAQCAtNTIsNyArNTIsNyBAQCBwcml2YXRlOgogICAgIGRvdWJsZSB0YWlsVGltZSgpIGNvbnN0
IG92ZXJyaWRlIHsgcmV0dXJuIDA7IH0KICAgICBkb3VibGUgbGF0ZW5jeVRpbWUoKSBjb25zdCBv
dmVycmlkZSB7IHJldHVybiAwOyB9CiAKLSAgICBDaGFubmVsTWVyZ2VyTm9kZShBdWRpb0NvbnRl
eHQmLCBmbG9hdCBzYW1wbGVSYXRlLCB1bnNpZ25lZCBudW1iZXJPZklucHV0cyk7CisgICAgQ2hh
bm5lbE1lcmdlck5vZGUoQXVkaW9Db250ZXh0QmFzZSYsIGZsb2F0IHNhbXBsZVJhdGUsIHVuc2ln
bmVkIG51bWJlck9mSW5wdXRzKTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQ2hhbm5lbFNwbGl0dGVyTm9k
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0NoYW5uZWxTcGxpdHRlck5v
ZGUuY3BwCmluZGV4IDgyZjY5YTA0Zjk5Li5mNTU1M2QwYzgzNSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9DaGFubmVsU3BsaXR0ZXJOb2RlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0NoYW5uZWxTcGxpdHRlck5vZGUuY3BwCkBA
IC0zNyw3ICszNyw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogV1RGX01BS0VfSVNPX0FMTE9D
QVRFRF9JTVBMKENoYW5uZWxTcGxpdHRlck5vZGUpOwogICAgIAotUmVmUHRyPENoYW5uZWxTcGxp
dHRlck5vZGU+IENoYW5uZWxTcGxpdHRlck5vZGU6OmNyZWF0ZShBdWRpb0NvbnRleHQmIGNvbnRl
eHQsIGZsb2F0IHNhbXBsZVJhdGUsIHVuc2lnbmVkIG51bWJlck9mT3V0cHV0cykKK1JlZlB0cjxD
aGFubmVsU3BsaXR0ZXJOb2RlPiBDaGFubmVsU3BsaXR0ZXJOb2RlOjpjcmVhdGUoQXVkaW9Db250
ZXh0QmFzZSYgY29udGV4dCwgZmxvYXQgc2FtcGxlUmF0ZSwgdW5zaWduZWQgbnVtYmVyT2ZPdXRw
dXRzKQogewogICAgIGlmICghbnVtYmVyT2ZPdXRwdXRzIHx8IG51bWJlck9mT3V0cHV0cyA+IEF1
ZGlvQ29udGV4dDo6bWF4TnVtYmVyT2ZDaGFubmVscygpKQogICAgICAgICByZXR1cm4gbnVsbHB0
cjsKQEAgLTQ1LDcgKzQ1LDcgQEAgUmVmUHRyPENoYW5uZWxTcGxpdHRlck5vZGU+IENoYW5uZWxT
cGxpdHRlck5vZGU6OmNyZWF0ZShBdWRpb0NvbnRleHQmIGNvbnRleHQsIGYKICAgICByZXR1cm4g
YWRvcHRSZWYoKm5ldyBDaGFubmVsU3BsaXR0ZXJOb2RlKGNvbnRleHQsIHNhbXBsZVJhdGUsIG51
bWJlck9mT3V0cHV0cykpOyAgICAgIAogfQogCi1DaGFubmVsU3BsaXR0ZXJOb2RlOjpDaGFubmVs
U3BsaXR0ZXJOb2RlKEF1ZGlvQ29udGV4dCYgY29udGV4dCwgZmxvYXQgc2FtcGxlUmF0ZSwgdW5z
aWduZWQgbnVtYmVyT2ZPdXRwdXRzKQorQ2hhbm5lbFNwbGl0dGVyTm9kZTo6Q2hhbm5lbFNwbGl0
dGVyTm9kZShBdWRpb0NvbnRleHRCYXNlJiBjb250ZXh0LCBmbG9hdCBzYW1wbGVSYXRlLCB1bnNp
Z25lZCBudW1iZXJPZk91dHB1dHMpCiAgICAgOiBBdWRpb05vZGUoY29udGV4dCwgc2FtcGxlUmF0
ZSkKIHsKICAgICBzZXROb2RlVHlwZShOb2RlVHlwZUNoYW5uZWxTcGxpdHRlcik7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0NoYW5uZWxTcGxpdHRlck5vZGUu
aCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQ2hhbm5lbFNwbGl0dGVyTm9kZS5o
CmluZGV4IDhkOTgzMjgxMjM3Li4xM2Q4ZDk4MGRhYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJhdWRpby9DaGFubmVsU3BsaXR0ZXJOb2RlLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJhdWRpby9DaGFubmVsU3BsaXR0ZXJOb2RlLmgKQEAgLTMzLDcgKzMz
LDcgQEAgY2xhc3MgQXVkaW9Db250ZXh0OwogY2xhc3MgQ2hhbm5lbFNwbGl0dGVyTm9kZSBmaW5h
bCA6IHB1YmxpYyBBdWRpb05vZGUgewogICAgIFdURl9NQUtFX0lTT19BTExPQ0FURUQoQ2hhbm5l
bFNwbGl0dGVyTm9kZSk7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZlB0cjxDaGFubmVsU3BsaXR0
ZXJOb2RlPiBjcmVhdGUoQXVkaW9Db250ZXh0JiwgZmxvYXQgc2FtcGxlUmF0ZSwgdW5zaWduZWQg
bnVtYmVyT2ZPdXRwdXRzKTsKKyAgICBzdGF0aWMgUmVmUHRyPENoYW5uZWxTcGxpdHRlck5vZGU+
IGNyZWF0ZShBdWRpb0NvbnRleHRCYXNlJiwgZmxvYXQgc2FtcGxlUmF0ZSwgdW5zaWduZWQgbnVt
YmVyT2ZPdXRwdXRzKTsKIAogICAgIC8vIEF1ZGlvTm9kZQogICAgIHZvaWQgcHJvY2VzcyhzaXpl
X3QgZnJhbWVzVG9Qcm9jZXNzKSBvdmVycmlkZTsKQEAgLTQzLDcgKzQzLDcgQEAgcHJpdmF0ZToK
ICAgICBkb3VibGUgdGFpbFRpbWUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiAwOyB9CiAgICAg
ZG91YmxlIGxhdGVuY3lUaW1lKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gMDsgfQogCi0gICAg
Q2hhbm5lbFNwbGl0dGVyTm9kZShBdWRpb0NvbnRleHQmLCBmbG9hdCBzYW1wbGVSYXRlLCB1bnNp
Z25lZCBudW1iZXJPZk91dHB1dHMpOworICAgIENoYW5uZWxTcGxpdHRlck5vZGUoQXVkaW9Db250
ZXh0QmFzZSYsIGZsb2F0IHNhbXBsZVJhdGUsIHVuc2lnbmVkIG51bWJlck9mT3V0cHV0cyk7CiB9
OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmF1ZGlvL0NvbnZvbHZlck5vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJhdWRpby9Db252b2x2ZXJOb2RlLmNwcAppbmRleCBjYzk3MmYxMGRiZC4uZTFmNWViODE1
NjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQ29udm9sdmVy
Tm9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9Db252b2x2ZXJO
b2RlLmNwcApAQCAtNDcsNyArNDcsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFdURl9NQUtF
X0lTT19BTExPQ0FURURfSU1QTChDb252b2x2ZXJOb2RlKTsKIAotQ29udm9sdmVyTm9kZTo6Q29u
dm9sdmVyTm9kZShBdWRpb0NvbnRleHQmIGNvbnRleHQsIGZsb2F0IHNhbXBsZVJhdGUpCitDb252
b2x2ZXJOb2RlOjpDb252b2x2ZXJOb2RlKEF1ZGlvQ29udGV4dEJhc2UmIGNvbnRleHQsIGZsb2F0
IHNhbXBsZVJhdGUpCiAgICAgOiBBdWRpb05vZGUoY29udGV4dCwgc2FtcGxlUmF0ZSkKIHsKICAg
ICBzZXROb2RlVHlwZShOb2RlVHlwZUNvbnZvbHZlcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0NvbnZvbHZlck5vZGUuaCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViYXVkaW8vQ29udm9sdmVyTm9kZS5oCmluZGV4IDY0YmZlYmVkMmQ4Li4zMWNlYzFl
Y2M3ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9Db252b2x2
ZXJOb2RlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9Db252b2x2ZXJO
b2RlLmgKQEAgLTM1LDcgKzM1LDcgQEAgY2xhc3MgUmV2ZXJiOwogY2xhc3MgQ29udm9sdmVyTm9k
ZSBmaW5hbCA6IHB1YmxpYyBBdWRpb05vZGUgewogICAgIFdURl9NQUtFX0lTT19BTExPQ0FURUQo
Q29udm9sdmVyTm9kZSk7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxDb252b2x2ZXJOb2RlPiBj
cmVhdGUoQXVkaW9Db250ZXh0JiBjb250ZXh0LCBmbG9hdCBzYW1wbGVSYXRlKQorICAgIHN0YXRp
YyBSZWY8Q29udm9sdmVyTm9kZT4gY3JlYXRlKEF1ZGlvQ29udGV4dEJhc2UmIGNvbnRleHQsIGZs
b2F0IHNhbXBsZVJhdGUpCiAgICAgewogICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBDb252
b2x2ZXJOb2RlKGNvbnRleHQsIHNhbXBsZVJhdGUpKTsKICAgICB9CkBAIC00OSw3ICs0OSw3IEBA
IHB1YmxpYzoKICAgICB2b2lkIHNldE5vcm1hbGl6ZShib29sIG5vcm1hbGl6ZSkgeyBtX25vcm1h
bGl6ZSA9IG5vcm1hbGl6ZTsgfQogCiBwcml2YXRlOgotICAgIENvbnZvbHZlck5vZGUoQXVkaW9D
b250ZXh0JiwgZmxvYXQgc2FtcGxlUmF0ZSk7CisgICAgQ29udm9sdmVyTm9kZShBdWRpb0NvbnRl
eHRCYXNlJiwgZmxvYXQgc2FtcGxlUmF0ZSk7CiAKICAgICBkb3VibGUgdGFpbFRpbWUoKSBjb25z
dCBmaW5hbDsKICAgICBkb3VibGUgbGF0ZW5jeVRpbWUoKSBjb25zdCBmaW5hbDsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vRGVmYXVsdEF1ZGlvRGVzdGluYXRp
b25Ob2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vRGVmYXVsdEF1ZGlv
RGVzdGluYXRpb25Ob2RlLmNwcAppbmRleCAxNzU5YWU0YTVhNi4uMDdlYjlhNDFiNWMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vRGVmYXVsdEF1ZGlvRGVzdGlu
YXRpb25Ob2RlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0RlZmF1
bHRBdWRpb0Rlc3RpbmF0aW9uTm9kZS5jcHAKQEAgLTQzLDcgKzQzLDcgQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogCiBXVEZfTUFLRV9JU09fQUxMT0NBVEVEX0lNUEwoRGVmYXVsdEF1ZGlvRGVzdGlu
YXRpb25Ob2RlKTsKICAgICAKLURlZmF1bHRBdWRpb0Rlc3RpbmF0aW9uTm9kZTo6RGVmYXVsdEF1
ZGlvRGVzdGluYXRpb25Ob2RlKEF1ZGlvQ29udGV4dCYgY29udGV4dCkKK0RlZmF1bHRBdWRpb0Rl
c3RpbmF0aW9uTm9kZTo6RGVmYXVsdEF1ZGlvRGVzdGluYXRpb25Ob2RlKEF1ZGlvQ29udGV4dEJh
c2UmIGNvbnRleHQpCiAgICAgOiBBdWRpb0Rlc3RpbmF0aW9uTm9kZShjb250ZXh0LCBBdWRpb0Rl
c3RpbmF0aW9uOjpoYXJkd2FyZVNhbXBsZVJhdGUoKSkKIHsKICAgICAvLyBOb2RlLXNwZWNpZmlj
IGRlZmF1bHQgbWl4aW5nIHJ1bGVzLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJhdWRpby9EZWZhdWx0QXVkaW9EZXN0aW5hdGlvbk5vZGUuaCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViYXVkaW8vRGVmYXVsdEF1ZGlvRGVzdGluYXRpb25Ob2RlLmgKaW5kZXggNmZk
OTVjMGYzMDEuLjk2YzgzN2M5OTM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmF1ZGlvL0RlZmF1bHRBdWRpb0Rlc3RpbmF0aW9uTm9kZS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViYXVkaW8vRGVmYXVsdEF1ZGlvRGVzdGluYXRpb25Ob2RlLmgKQEAgLTMz
LDcgKzMzLDcgQEAgY2xhc3MgQXVkaW9EZXN0aW5hdGlvbjsKIGNsYXNzIERlZmF1bHRBdWRpb0Rl
c3RpbmF0aW9uTm9kZSBmaW5hbCA6IHB1YmxpYyBBdWRpb0Rlc3RpbmF0aW9uTm9kZSB7CiAgICAg
V1RGX01BS0VfSVNPX0FMTE9DQVRFRChEZWZhdWx0QXVkaW9EZXN0aW5hdGlvbk5vZGUpOwogcHVi
bGljOgotICAgIHN0YXRpYyBSZWY8RGVmYXVsdEF1ZGlvRGVzdGluYXRpb25Ob2RlPiBjcmVhdGUo
QXVkaW9Db250ZXh0JiBjb250ZXh0KQorICAgIHN0YXRpYyBSZWY8RGVmYXVsdEF1ZGlvRGVzdGlu
YXRpb25Ob2RlPiBjcmVhdGUoQXVkaW9Db250ZXh0QmFzZSYgY29udGV4dCkKICAgICB7CiAgICAg
ICAgIHJldHVybiBhZG9wdFJlZigqbmV3IERlZmF1bHRBdWRpb0Rlc3RpbmF0aW9uTm9kZShjb250
ZXh0KSk7ICAgICAKICAgICB9CkBAIC00MSw3ICs0MSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFs
IH5EZWZhdWx0QXVkaW9EZXN0aW5hdGlvbk5vZGUoKTsKICAgICAKIHByaXZhdGU6Ci0gICAgZXhw
bGljaXQgRGVmYXVsdEF1ZGlvRGVzdGluYXRpb25Ob2RlKEF1ZGlvQ29udGV4dCYpOworICAgIGV4
cGxpY2l0IERlZmF1bHRBdWRpb0Rlc3RpbmF0aW9uTm9kZShBdWRpb0NvbnRleHRCYXNlJik7CiAg
ICAgdm9pZCBjcmVhdGVEZXN0aW5hdGlvbigpOwogCiAgICAgdm9pZCBpbml0aWFsaXplKCkgZmlu
YWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0RlbGF5Tm9k
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0RlbGF5Tm9kZS5jcHAKaW5k
ZXggODFiZDdkMTliMjcuLjQwNTI3YzgxZjlmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmF1ZGlvL0RlbGF5Tm9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJhdWRpby9EZWxheU5vZGUuY3BwCkBAIC0zNywxNCArMzcsMTQgQEAgV1RGX01BS0VfSVNP
X0FMTE9DQVRFRF9JTVBMKERlbGF5Tm9kZSk7CiAKIGNvbnN0IGRvdWJsZSBtYXhpbXVtQWxsb3dl
ZERlbGF5VGltZSA9IDE4MDsKIAotaW5saW5lIERlbGF5Tm9kZTo6RGVsYXlOb2RlKEF1ZGlvQ29u
dGV4dCYgY29udGV4dCwgZmxvYXQgc2FtcGxlUmF0ZSwgZG91YmxlIG1heERlbGF5VGltZSkKK2lu
bGluZSBEZWxheU5vZGU6OkRlbGF5Tm9kZShBdWRpb0NvbnRleHRCYXNlJiBjb250ZXh0LCBmbG9h
dCBzYW1wbGVSYXRlLCBkb3VibGUgbWF4RGVsYXlUaW1lKQogICAgIDogQXVkaW9CYXNpY1Byb2Nl
c3Nvck5vZGUoY29udGV4dCwgc2FtcGxlUmF0ZSkKIHsKICAgICBzZXROb2RlVHlwZShOb2RlVHlw
ZURlbGF5KTsKICAgICBtX3Byb2Nlc3NvciA9IG1ha2VVbmlxdWU8RGVsYXlQcm9jZXNzb3I+KGNv
bnRleHQsIHNhbXBsZVJhdGUsIDEsIG1heERlbGF5VGltZSk7CiB9CiAKLUV4Y2VwdGlvbk9yPFJl
ZjxEZWxheU5vZGU+PiBEZWxheU5vZGU6OmNyZWF0ZShBdWRpb0NvbnRleHQmIGNvbnRleHQsIGZs
b2F0IHNhbXBsZVJhdGUsIGRvdWJsZSBtYXhEZWxheVRpbWUpCitFeGNlcHRpb25PcjxSZWY8RGVs
YXlOb2RlPj4gRGVsYXlOb2RlOjpjcmVhdGUoQXVkaW9Db250ZXh0QmFzZSYgY29udGV4dCwgZmxv
YXQgc2FtcGxlUmF0ZSwgZG91YmxlIG1heERlbGF5VGltZSkKIHsKICAgICBpZiAobWF4RGVsYXlU
aW1lIDw9IDAgfHwgbWF4RGVsYXlUaW1lID49IG1heGltdW1BbGxvd2VkRGVsYXlUaW1lKQogICAg
ICAgICByZXR1cm4gRXhjZXB0aW9uIHsgTm90U3VwcG9ydGVkRXJyb3IgfTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vRGVsYXlOb2RlLmggYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0RlbGF5Tm9kZS5oCmluZGV4IGM5ZWNhZDlmOWZkLi5iNmFm
ZGQwZjkzMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9EZWxh
eU5vZGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0RlbGF5Tm9kZS5o
CkBAIC0zMSwxMiArMzEsMTIgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgRGVsYXlOb2Rl
IGZpbmFsIDogcHVibGljIEF1ZGlvQmFzaWNQcm9jZXNzb3JOb2RlIHsKICAgICBXVEZfTUFLRV9J
U09fQUxMT0NBVEVEKERlbGF5Tm9kZSk7CiBwdWJsaWM6Ci0gICAgc3RhdGljIEV4Y2VwdGlvbk9y
PFJlZjxEZWxheU5vZGU+PiBjcmVhdGUoQXVkaW9Db250ZXh0JiwgZmxvYXQgc2FtcGxlUmF0ZSwg
ZG91YmxlIG1heERlbGF5VGltZSk7CisgICAgc3RhdGljIEV4Y2VwdGlvbk9yPFJlZjxEZWxheU5v
ZGU+PiBjcmVhdGUoQXVkaW9Db250ZXh0QmFzZSYsIGZsb2F0IHNhbXBsZVJhdGUsIGRvdWJsZSBt
YXhEZWxheVRpbWUpOwogCiAgICAgQXVkaW9QYXJhbSogZGVsYXlUaW1lKCk7CiAKIHByaXZhdGU6
Ci0gICAgRGVsYXlOb2RlKEF1ZGlvQ29udGV4dCYsIGZsb2F0IHNhbXBsZVJhdGUsIGRvdWJsZSBt
YXhEZWxheVRpbWUpOworICAgIERlbGF5Tm9kZShBdWRpb0NvbnRleHRCYXNlJiwgZmxvYXQgc2Ft
cGxlUmF0ZSwgZG91YmxlIG1heERlbGF5VGltZSk7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0RlbGF5UHJv
Y2Vzc29yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vRGVsYXlQcm9jZXNz
b3IuY3BwCmluZGV4IDEwMzY2ZWY2ZWFmLi5jYmJmZDlmYTJmYSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9EZWxheVByb2Nlc3Nvci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9EZWxheVByb2Nlc3Nvci5jcHAKQEAgLTMyLDcgKzMy
LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1EZWxheVByb2Nlc3Nvcjo6RGVsYXlQcm9j
ZXNzb3IoQXVkaW9Db250ZXh0JiBjb250ZXh0LCBmbG9hdCBzYW1wbGVSYXRlLCB1bnNpZ25lZCBu
dW1iZXJPZkNoYW5uZWxzLCBkb3VibGUgbWF4RGVsYXlUaW1lKQorRGVsYXlQcm9jZXNzb3I6OkRl
bGF5UHJvY2Vzc29yKEF1ZGlvQ29udGV4dEJhc2UmIGNvbnRleHQsIGZsb2F0IHNhbXBsZVJhdGUs
IHVuc2lnbmVkIG51bWJlck9mQ2hhbm5lbHMsIGRvdWJsZSBtYXhEZWxheVRpbWUpCiAgICAgOiBB
dWRpb0RTUEtlcm5lbFByb2Nlc3NvcihzYW1wbGVSYXRlLCBudW1iZXJPZkNoYW5uZWxzKQogICAg
ICwgbV9tYXhEZWxheVRpbWUobWF4RGVsYXlUaW1lKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJhdWRpby9EZWxheVByb2Nlc3Nvci5oIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJhdWRpby9EZWxheVByb2Nlc3Nvci5oCmluZGV4IDg1ZDljYzZkN2ZkLi5jYmFj
NzllY2YwZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9EZWxh
eVByb2Nlc3Nvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vRGVsYXlQ
cm9jZXNzb3IuaApAQCAtMzYsNyArMzYsNyBAQCBjbGFzcyBBdWRpb0RTUEtlcm5lbDsKIGNsYXNz
IERlbGF5UHJvY2Vzc29yIGZpbmFsIDogcHVibGljIEF1ZGlvRFNQS2VybmVsUHJvY2Vzc29yIHsK
ICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKLSAgICBEZWxheVByb2Nlc3Nv
cihBdWRpb0NvbnRleHQmLCBmbG9hdCBzYW1wbGVSYXRlLCB1bnNpZ25lZCBudW1iZXJPZkNoYW5u
ZWxzLCBkb3VibGUgbWF4RGVsYXlUaW1lKTsKKyAgICBEZWxheVByb2Nlc3NvcihBdWRpb0NvbnRl
eHRCYXNlJiwgZmxvYXQgc2FtcGxlUmF0ZSwgdW5zaWduZWQgbnVtYmVyT2ZDaGFubmVscywgZG91
YmxlIG1heERlbGF5VGltZSk7CiAgICAgdmlydHVhbCB+RGVsYXlQcm9jZXNzb3IoKTsKICAgICAK
ICAgICBzdGQ6OnVuaXF1ZV9wdHI8QXVkaW9EU1BLZXJuZWw+IGNyZWF0ZUtlcm5lbCgpIG92ZXJy
aWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9EaXN0YW5j
ZU1vZGVsVHlwZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9EaXN0YW5jZU1v
ZGVsVHlwZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi5kZmUxMzE4
MmNjMAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8v
RGlzdGFuY2VNb2RlbFR5cGUuaApAQCAtMCwwICsxLDI3IEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDIwLCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9T
RSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRT
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAq
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTgorICogQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTCisgKiBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21h
IG9uY2UKKworI2luY2x1ZGUgIkRpc3RhbmNlLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmF1ZGlvL0Rpc3RhbmNlTW9kZWxUeXBlLmlkbCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViYXVkaW8vRGlzdGFuY2VNb2RlbFR5cGUuaWRsCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwLi5mOGZmY2ZlZDIyYwotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vRGlzdGFuY2VNb2RlbFR5cGUuaWRsCkBAIC0w
LDAgKzEsMzEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAsIEdvb2dsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORCBBTlkK
KyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAq
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTgorICogQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTCisgKiBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCitbCisgICAgQ29uZGl0aW9uYWw9V0VCX0FVRElPLAor
XSBlbnVtIERpc3RhbmNlTW9kZWxUeXBlIHsKKyAgICAibGluZWFyIiwKKyAgICAiaW52ZXJzZSIs
CisgICAgImV4cG9uZW50aWFsIgorfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViYXVkaW8vRHluYW1pY3NDb21wcmVzc29yTm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmF1ZGlvL0R5bmFtaWNzQ29tcHJlc3Nvck5vZGUuY3BwCmluZGV4IDE0MDk2ZDhm
MGM1Li5jMzNkMWRlNzJkYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJh
dWRpby9EeW5hbWljc0NvbXByZXNzb3JOb2RlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmF1ZGlvL0R5bmFtaWNzQ29tcHJlc3Nvck5vZGUuY3BwCkBAIC00MSw3ICs0MSw3IEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogV1RGX01BS0VfSVNPX0FMTE9DQVRFRF9JTVBMKER5bmFt
aWNzQ29tcHJlc3Nvck5vZGUpOwogCi1EeW5hbWljc0NvbXByZXNzb3JOb2RlOjpEeW5hbWljc0Nv
bXByZXNzb3JOb2RlKEF1ZGlvQ29udGV4dCYgY29udGV4dCwgZmxvYXQgc2FtcGxlUmF0ZSkKK0R5
bmFtaWNzQ29tcHJlc3Nvck5vZGU6OkR5bmFtaWNzQ29tcHJlc3Nvck5vZGUoQXVkaW9Db250ZXh0
QmFzZSYgY29udGV4dCwgZmxvYXQgc2FtcGxlUmF0ZSkKICAgICA6IEF1ZGlvTm9kZShjb250ZXh0
LCBzYW1wbGVSYXRlKQogewogICAgIHNldE5vZGVUeXBlKE5vZGVUeXBlRHluYW1pY3NDb21wcmVz
c29yKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vRHluYW1p
Y3NDb21wcmVzc29yTm9kZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9EeW5h
bWljc0NvbXByZXNzb3JOb2RlLmgKaW5kZXggNDRjYmZiYWEwNTkuLmI3MDUzYjIyMTczIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0R5bmFtaWNzQ29tcHJlc3Nv
ck5vZGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0R5bmFtaWNzQ29t
cHJlc3Nvck5vZGUuaApAQCAtMzUsNyArMzUsNyBAQCBjbGFzcyBEeW5hbWljc0NvbXByZXNzb3I7
CiBjbGFzcyBEeW5hbWljc0NvbXByZXNzb3JOb2RlIGZpbmFsIDogcHVibGljIEF1ZGlvTm9kZSB7
CiAgICAgV1RGX01BS0VfSVNPX0FMTE9DQVRFRChEeW5hbWljc0NvbXByZXNzb3JOb2RlKTsKIHB1
YmxpYzoKLSAgICBzdGF0aWMgUmVmPER5bmFtaWNzQ29tcHJlc3Nvck5vZGU+IGNyZWF0ZShBdWRp
b0NvbnRleHQmIGNvbnRleHQsIGZsb2F0IHNhbXBsZVJhdGUpCisgICAgc3RhdGljIFJlZjxEeW5h
bWljc0NvbXByZXNzb3JOb2RlPiBjcmVhdGUoQXVkaW9Db250ZXh0QmFzZSYgY29udGV4dCwgZmxv
YXQgc2FtcGxlUmF0ZSkKICAgICB7CiAgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IER5bmFt
aWNzQ29tcHJlc3Nvck5vZGUoY29udGV4dCwgc2FtcGxlUmF0ZSkpOwogICAgIH0KQEAgLTYyLDcg
KzYyLDcgQEAgcHJpdmF0ZToKICAgICBkb3VibGUgdGFpbFRpbWUoKSBjb25zdCBvdmVycmlkZTsK
ICAgICBkb3VibGUgbGF0ZW5jeVRpbWUoKSBjb25zdCBvdmVycmlkZTsKIAotICAgIER5bmFtaWNz
Q29tcHJlc3Nvck5vZGUoQXVkaW9Db250ZXh0JiwgZmxvYXQgc2FtcGxlUmF0ZSk7CisgICAgRHlu
YW1pY3NDb21wcmVzc29yTm9kZShBdWRpb0NvbnRleHRCYXNlJiwgZmxvYXQgc2FtcGxlUmF0ZSk7
CiAKICAgICBzdGQ6OnVuaXF1ZV9wdHI8RHluYW1pY3NDb21wcmVzc29yPiBtX2R5bmFtaWNzQ29t
cHJlc3NvcjsKICAgICBSZWZQdHI8QXVkaW9QYXJhbT4gbV90aHJlc2hvbGQ7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0dhaW5Ob2RlLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vR2Fpbk5vZGUuY3BwCmluZGV4IDI1N2RmMmVjZTIzLi45
ODRkMTE5NGJkZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9H
YWluTm9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9HYWluTm9k
ZS5jcHAKQEAgLTM3LDcgKzM3LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBXVEZfTUFLRV9J
U09fQUxMT0NBVEVEX0lNUEwoR2Fpbk5vZGUpOwogCi1HYWluTm9kZTo6R2Fpbk5vZGUoQXVkaW9D
b250ZXh0JiBjb250ZXh0LCBmbG9hdCBzYW1wbGVSYXRlKQorR2Fpbk5vZGU6OkdhaW5Ob2RlKEF1
ZGlvQ29udGV4dEJhc2UmIGNvbnRleHQsIGZsb2F0IHNhbXBsZVJhdGUpCiAgICAgOiBBdWRpb05v
ZGUoY29udGV4dCwgc2FtcGxlUmF0ZSkKICAgICAsIG1fbGFzdEdhaW4oMS4wKQogICAgICwgbV9z
YW1wbGVBY2N1cmF0ZUdhaW5WYWx1ZXMoQXVkaW9Ob2RlOjpQcm9jZXNzaW5nU2l6ZUluRnJhbWVz
KSAvLyBGSVhNRTogY2FuIHByb2JhYmx5IHNoYXJlIHRlbXAgYnVmZmVyIGluIGNvbnRleHQKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vR2Fpbk5vZGUuaCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vR2Fpbk5vZGUuaAppbmRleCBmYTg1YjBiOWZm
NS4uZGNmODU1YTkxYzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVk
aW8vR2Fpbk5vZGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0dhaW5O
b2RlLmgKQEAgLTM4LDcgKzM4LDcgQEAgY2xhc3MgQXVkaW9Db250ZXh0OwogY2xhc3MgR2Fpbk5v
ZGUgZmluYWwgOiBwdWJsaWMgQXVkaW9Ob2RlIHsKICAgICBXVEZfTUFLRV9JU09fQUxMT0NBVEVE
KEdhaW5Ob2RlKTsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPEdhaW5Ob2RlPiBjcmVhdGUoQXVk
aW9Db250ZXh0JiBjb250ZXh0LCBmbG9hdCBzYW1wbGVSYXRlKQorICAgIHN0YXRpYyBSZWY8R2Fp
bk5vZGU+IGNyZWF0ZShBdWRpb0NvbnRleHRCYXNlJiBjb250ZXh0LCBmbG9hdCBzYW1wbGVSYXRl
KQogICAgIHsKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgR2Fpbk5vZGUoY29udGV4dCwg
c2FtcGxlUmF0ZSkpOwogICAgIH0KQEAgLTU3LDcgKzU3LDcgQEAgcHJpdmF0ZToKICAgICBkb3Vi
bGUgdGFpbFRpbWUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiAwOyB9CiAgICAgZG91YmxlIGxh
dGVuY3lUaW1lKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gMDsgfQogCi0gICAgR2Fpbk5vZGUo
QXVkaW9Db250ZXh0JiwgZmxvYXQgc2FtcGxlUmF0ZSk7CisgICAgR2Fpbk5vZGUoQXVkaW9Db250
ZXh0QmFzZSYsIGZsb2F0IHNhbXBsZVJhdGUpOwogCiAgICAgZmxvYXQgbV9sYXN0R2FpbjsgLy8g
Zm9yIGRlLXppcHBlcmluZwogICAgIFJlZlB0cjxBdWRpb1BhcmFtPiBtX2dhaW47CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL01lZGlhRWxlbWVudEF1ZGlvU291
cmNlTm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL01lZGlhRWxlbWVu
dEF1ZGlvU291cmNlTm9kZS5jcHAKaW5kZXggMGU1OTgxZmE2ODYuLmM2NzVkN2RlNzE2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL01lZGlhRWxlbWVudEF1ZGlv
U291cmNlTm9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9NZWRp
YUVsZW1lbnRBdWRpb1NvdXJjZU5vZGUuY3BwCkBAIC00MywxMiArNDMsMTIgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogCiBXVEZfTUFLRV9JU09fQUxMT0NBVEVEX0lNUEwoTWVkaWFFbGVtZW50QXVk
aW9Tb3VyY2VOb2RlKTsKIAotUmVmPE1lZGlhRWxlbWVudEF1ZGlvU291cmNlTm9kZT4gTWVkaWFF
bGVtZW50QXVkaW9Tb3VyY2VOb2RlOjpjcmVhdGUoQXVkaW9Db250ZXh0JiBjb250ZXh0LCBIVE1M
TWVkaWFFbGVtZW50JiBtZWRpYUVsZW1lbnQpCitSZWY8TWVkaWFFbGVtZW50QXVkaW9Tb3VyY2VO
b2RlPiBNZWRpYUVsZW1lbnRBdWRpb1NvdXJjZU5vZGU6OmNyZWF0ZShBdWRpb0NvbnRleHRCYXNl
JiBjb250ZXh0LCBIVE1MTWVkaWFFbGVtZW50JiBtZWRpYUVsZW1lbnQpCiB7CiAgICAgcmV0dXJu
IGFkb3B0UmVmKCpuZXcgTWVkaWFFbGVtZW50QXVkaW9Tb3VyY2VOb2RlKGNvbnRleHQsIG1lZGlh
RWxlbWVudCkpOwogfQogCi1NZWRpYUVsZW1lbnRBdWRpb1NvdXJjZU5vZGU6Ok1lZGlhRWxlbWVu
dEF1ZGlvU291cmNlTm9kZShBdWRpb0NvbnRleHQmIGNvbnRleHQsIEhUTUxNZWRpYUVsZW1lbnQm
IG1lZGlhRWxlbWVudCkKK01lZGlhRWxlbWVudEF1ZGlvU291cmNlTm9kZTo6TWVkaWFFbGVtZW50
QXVkaW9Tb3VyY2VOb2RlKEF1ZGlvQ29udGV4dEJhc2UmIGNvbnRleHQsIEhUTUxNZWRpYUVsZW1l
bnQmIG1lZGlhRWxlbWVudCkKICAgICA6IEF1ZGlvTm9kZShjb250ZXh0LCBjb250ZXh0LnNhbXBs
ZVJhdGUoKSkKICAgICAsIG1fbWVkaWFFbGVtZW50KG1lZGlhRWxlbWVudCkKICAgICAsIG1fc291
cmNlTnVtYmVyT2ZDaGFubmVscygwKQpAQCAtOTcsNyArOTcsNyBAQCB2b2lkIE1lZGlhRWxlbWVu
dEF1ZGlvU291cmNlTm9kZTo6c2V0Rm9ybWF0KHNpemVfdCBudW1iZXJPZkNoYW5uZWxzLCBmbG9h
dCBzb3VyYwogCiAgICAgICAgIHsKICAgICAgICAgICAgIC8vIFRoZSBjb250ZXh0IG11c3QgYmUg
bG9ja2VkIHdoZW4gY2hhbmdpbmcgdGhlIG51bWJlciBvZiBvdXRwdXQgY2hhbm5lbHMuCi0gICAg
ICAgICAgICBBdWRpb0NvbnRleHQ6OkF1dG9Mb2NrZXIgY29udGV4dExvY2tlcihjb250ZXh0KCkp
OworICAgICAgICAgICAgQXVkaW9Db250ZXh0QmFzZTo6QXV0b0xvY2tlciBjb250ZXh0TG9ja2Vy
KGNvbnRleHQoKSk7CiAKICAgICAgICAgICAgIC8vIERvIGFueSBuZWNlc3NzYXJ5IHJlLWNvbmZp
Z3VyYXRpb24gdG8gdGhlIG91dHB1dCdzIG51bWJlciBvZiBjaGFubmVscy4KICAgICAgICAgICAg
IG91dHB1dCgwKS0+c2V0TnVtYmVyT2ZDaGFubmVscyhudW1iZXJPZkNoYW5uZWxzKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vTWVkaWFFbGVtZW50QXVkaW9T
b3VyY2VOb2RlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL01lZGlhRWxlbWVu
dEF1ZGlvU291cmNlTm9kZS5oCmluZGV4IDNhMTMxNTQxNWYxLi43MWQwZWQxMzhhNSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9NZWRpYUVsZW1lbnRBdWRpb1Nv
dXJjZU5vZGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL01lZGlhRWxl
bWVudEF1ZGlvU291cmNlTm9kZS5oCkBAIC00MCw3ICs0MCw3IEBAIGNsYXNzIEF1ZGlvQ29udGV4
dDsKIGNsYXNzIE1lZGlhRWxlbWVudEF1ZGlvU291cmNlTm9kZSBmaW5hbCA6IHB1YmxpYyBBdWRp
b05vZGUsIHB1YmxpYyBBdWRpb1NvdXJjZVByb3ZpZGVyQ2xpZW50IHsKICAgICBXVEZfTUFLRV9J
U09fQUxMT0NBVEVEKE1lZGlhRWxlbWVudEF1ZGlvU291cmNlTm9kZSk7CiBwdWJsaWM6Ci0gICAg
c3RhdGljIFJlZjxNZWRpYUVsZW1lbnRBdWRpb1NvdXJjZU5vZGU+IGNyZWF0ZShBdWRpb0NvbnRl
eHQmLCBIVE1MTWVkaWFFbGVtZW50Jik7CisgICAgc3RhdGljIFJlZjxNZWRpYUVsZW1lbnRBdWRp
b1NvdXJjZU5vZGU+IGNyZWF0ZShBdWRpb0NvbnRleHRCYXNlJiwgSFRNTE1lZGlhRWxlbWVudCYp
OwogCiAgICAgdmlydHVhbCB+TWVkaWFFbGVtZW50QXVkaW9Tb3VyY2VOb2RlKCk7CiAKQEAgLTU3
LDcgKzU3LDcgQEAgcHVibGljOgogICAgIHZvaWQgdW5sb2NrKCk7CiAKIHByaXZhdGU6Ci0gICAg
TWVkaWFFbGVtZW50QXVkaW9Tb3VyY2VOb2RlKEF1ZGlvQ29udGV4dCYsIEhUTUxNZWRpYUVsZW1l
bnQmKTsKKyAgICBNZWRpYUVsZW1lbnRBdWRpb1NvdXJjZU5vZGUoQXVkaW9Db250ZXh0QmFzZSYs
IEhUTUxNZWRpYUVsZW1lbnQmKTsKIAogICAgIGRvdWJsZSB0YWlsVGltZSgpIGNvbnN0IG92ZXJy
aWRlIHsgcmV0dXJuIDA7IH0KICAgICBkb3VibGUgbGF0ZW5jeVRpbWUoKSBjb25zdCBvdmVycmlk
ZSB7IHJldHVybiAwOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1
ZGlvL01lZGlhU3RyZWFtQXVkaW9EZXN0aW5hdGlvbk5vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJhdWRpby9NZWRpYVN0cmVhbUF1ZGlvRGVzdGluYXRpb25Ob2RlLmNwcAppbmRl
eCBkNzY2MjkzMDMwOC4uMzBmMWEyMjJiZTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViYXVkaW8vTWVkaWFTdHJlYW1BdWRpb0Rlc3RpbmF0aW9uTm9kZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9NZWRpYVN0cmVhbUF1ZGlvRGVzdGluYXRp
b25Ob2RlLmNwcApAQCAtMzksMTIgKzM5LDEyIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogV1RG
X01BS0VfSVNPX0FMTE9DQVRFRF9JTVBMKE1lZGlhU3RyZWFtQXVkaW9EZXN0aW5hdGlvbk5vZGUp
OwogCi1SZWY8TWVkaWFTdHJlYW1BdWRpb0Rlc3RpbmF0aW9uTm9kZT4gTWVkaWFTdHJlYW1BdWRp
b0Rlc3RpbmF0aW9uTm9kZTo6Y3JlYXRlKEF1ZGlvQ29udGV4dCYgY29udGV4dCwgc2l6ZV90IG51
bWJlck9mQ2hhbm5lbHMpCitSZWY8TWVkaWFTdHJlYW1BdWRpb0Rlc3RpbmF0aW9uTm9kZT4gTWVk
aWFTdHJlYW1BdWRpb0Rlc3RpbmF0aW9uTm9kZTo6Y3JlYXRlKEF1ZGlvQ29udGV4dEJhc2UmIGNv
bnRleHQsIHNpemVfdCBudW1iZXJPZkNoYW5uZWxzKQogewogICAgIHJldHVybiBhZG9wdFJlZigq
bmV3IE1lZGlhU3RyZWFtQXVkaW9EZXN0aW5hdGlvbk5vZGUoY29udGV4dCwgbnVtYmVyT2ZDaGFu
bmVscykpOwogfQogCi1NZWRpYVN0cmVhbUF1ZGlvRGVzdGluYXRpb25Ob2RlOjpNZWRpYVN0cmVh
bUF1ZGlvRGVzdGluYXRpb25Ob2RlKEF1ZGlvQ29udGV4dCYgY29udGV4dCwgc2l6ZV90IG51bWJl
ck9mQ2hhbm5lbHMpCitNZWRpYVN0cmVhbUF1ZGlvRGVzdGluYXRpb25Ob2RlOjpNZWRpYVN0cmVh
bUF1ZGlvRGVzdGluYXRpb25Ob2RlKEF1ZGlvQ29udGV4dEJhc2UmIGNvbnRleHQsIHNpemVfdCBu
dW1iZXJPZkNoYW5uZWxzKQogICAgIDogQXVkaW9CYXNpY0luc3BlY3Rvck5vZGUoY29udGV4dCwg
Y29udGV4dC5zYW1wbGVSYXRlKCksIG51bWJlck9mQ2hhbm5lbHMpCiAgICAgLCBtX3NvdXJjZShN
ZWRpYVN0cmVhbUF1ZGlvU291cmNlOjpjcmVhdGUoY29udGV4dC5zYW1wbGVSYXRlKCkpKQogICAg
ICwgbV9zdHJlYW0oTWVkaWFTdHJlYW06OmNyZWF0ZSgqY29udGV4dC5kb2N1bWVudCgpLCBNZWRp
YVN0cmVhbVByaXZhdGU6OmNyZWF0ZShjb250ZXh0LmRvY3VtZW50KCktPmxvZ2dlcigpLCBtX3Nv
dXJjZS5jb3B5UmVmKCkpKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
YXVkaW8vTWVkaWFTdHJlYW1BdWRpb0Rlc3RpbmF0aW9uTm9kZS5oIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJhdWRpby9NZWRpYVN0cmVhbUF1ZGlvRGVzdGluYXRpb25Ob2RlLmgKaW5kZXgg
ZjVhN2U4ZmVjNGEuLmRiYWQ5MjhkNzk2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmF1ZGlvL01lZGlhU3RyZWFtQXVkaW9EZXN0aW5hdGlvbk5vZGUuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL01lZGlhU3RyZWFtQXVkaW9EZXN0aW5hdGlvbk5v
ZGUuaApAQCAtMzIsMTMgKzMyLDEzIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3Mg
QXVkaW9Db250ZXh0OworY2xhc3MgQXVkaW9Db250ZXh0QmFzZTsKIGNsYXNzIE1lZGlhU3RyZWFt
QXVkaW9Tb3VyY2U7CiAKIGNsYXNzIE1lZGlhU3RyZWFtQXVkaW9EZXN0aW5hdGlvbk5vZGUgZmlu
YWwgOiBwdWJsaWMgQXVkaW9CYXNpY0luc3BlY3Rvck5vZGUgewogICAgIFdURl9NQUtFX0lTT19B
TExPQ0FURUQoTWVkaWFTdHJlYW1BdWRpb0Rlc3RpbmF0aW9uTm9kZSk7CiBwdWJsaWM6Ci0gICAg
c3RhdGljIFJlZjxNZWRpYVN0cmVhbUF1ZGlvRGVzdGluYXRpb25Ob2RlPiBjcmVhdGUoQXVkaW9D
b250ZXh0Jiwgc2l6ZV90IG51bWJlck9mQ2hhbm5lbHMpOworICAgIHN0YXRpYyBSZWY8TWVkaWFT
dHJlYW1BdWRpb0Rlc3RpbmF0aW9uTm9kZT4gY3JlYXRlKEF1ZGlvQ29udGV4dEJhc2UmLCBzaXpl
X3QgbnVtYmVyT2ZDaGFubmVscyk7CiAKICAgICB2aXJ0dWFsIH5NZWRpYVN0cmVhbUF1ZGlvRGVz
dGluYXRpb25Ob2RlKCk7CiAKQEAgLTQ5LDcgKzQ5LDcgQEAgcHVibGljOgogICAgIHZvaWQgcmVz
ZXQoKSBmaW5hbDsKICAgICAKIHByaXZhdGU6Ci0gICAgTWVkaWFTdHJlYW1BdWRpb0Rlc3RpbmF0
aW9uTm9kZShBdWRpb0NvbnRleHQmLCBzaXplX3QgbnVtYmVyT2ZDaGFubmVscyk7CisgICAgTWVk
aWFTdHJlYW1BdWRpb0Rlc3RpbmF0aW9uTm9kZShBdWRpb0NvbnRleHRCYXNlJiwgc2l6ZV90IG51
bWJlck9mQ2hhbm5lbHMpOwogCiAgICAgZG91YmxlIHRhaWxUaW1lKCkgY29uc3QgZmluYWwgeyBy
ZXR1cm4gMDsgfQogICAgIGRvdWJsZSBsYXRlbmN5VGltZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJu
IDA7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vTWVkaWFT
dHJlYW1BdWRpb1NvdXJjZU5vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRp
by9NZWRpYVN0cmVhbUF1ZGlvU291cmNlTm9kZS5jcHAKaW5kZXggMWI0ZmI2ZDE5MjIuLjM1ZTU1
YTkyMDJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL01lZGlh
U3RyZWFtQXVkaW9Tb3VyY2VOb2RlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmF1ZGlvL01lZGlhU3RyZWFtQXVkaW9Tb3VyY2VOb2RlLmNwcApAQCAtMzgsMTIgKzM4LDEyIEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogV1RGX01BS0VfSVNPX0FMTE9DQVRFRF9JTVBMKE1lZGlh
U3RyZWFtQXVkaW9Tb3VyY2VOb2RlKTsKIAotUmVmPE1lZGlhU3RyZWFtQXVkaW9Tb3VyY2VOb2Rl
PiBNZWRpYVN0cmVhbUF1ZGlvU291cmNlTm9kZTo6Y3JlYXRlKEF1ZGlvQ29udGV4dCYgY29udGV4
dCwgTWVkaWFTdHJlYW0mIG1lZGlhU3RyZWFtLCBNZWRpYVN0cmVhbVRyYWNrJiBhdWRpb1RyYWNr
KQorUmVmPE1lZGlhU3RyZWFtQXVkaW9Tb3VyY2VOb2RlPiBNZWRpYVN0cmVhbUF1ZGlvU291cmNl
Tm9kZTo6Y3JlYXRlKEF1ZGlvQ29udGV4dEJhc2UmIGNvbnRleHQsIE1lZGlhU3RyZWFtJiBtZWRp
YVN0cmVhbSwgTWVkaWFTdHJlYW1UcmFjayYgYXVkaW9UcmFjaykKIHsKICAgICByZXR1cm4gYWRv
cHRSZWYoKm5ldyBNZWRpYVN0cmVhbUF1ZGlvU291cmNlTm9kZShjb250ZXh0LCBtZWRpYVN0cmVh
bSwgYXVkaW9UcmFjaykpOwogfQogCi1NZWRpYVN0cmVhbUF1ZGlvU291cmNlTm9kZTo6TWVkaWFT
dHJlYW1BdWRpb1NvdXJjZU5vZGUoQXVkaW9Db250ZXh0JiBjb250ZXh0LCBNZWRpYVN0cmVhbSYg
bWVkaWFTdHJlYW0sIE1lZGlhU3RyZWFtVHJhY2smIGF1ZGlvVHJhY2spCitNZWRpYVN0cmVhbUF1
ZGlvU291cmNlTm9kZTo6TWVkaWFTdHJlYW1BdWRpb1NvdXJjZU5vZGUoQXVkaW9Db250ZXh0QmFz
ZSYgY29udGV4dCwgTWVkaWFTdHJlYW0mIG1lZGlhU3RyZWFtLCBNZWRpYVN0cmVhbVRyYWNrJiBh
dWRpb1RyYWNrKQogICAgIDogQXVkaW9Ob2RlKGNvbnRleHQsIGNvbnRleHQuc2FtcGxlUmF0ZSgp
KQogICAgICwgbV9tZWRpYVN0cmVhbShtZWRpYVN0cmVhbSkKICAgICAsIG1fYXVkaW9UcmFjayhh
dWRpb1RyYWNrKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9N
ZWRpYVN0cmVhbUF1ZGlvU291cmNlTm9kZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJh
dWRpby9NZWRpYVN0cmVhbUF1ZGlvU291cmNlTm9kZS5oCmluZGV4IGUzZWRlZmUxYmQ1Li5jNzJk
MzEyMjMzZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9NZWRp
YVN0cmVhbUF1ZGlvU291cmNlTm9kZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
YXVkaW8vTWVkaWFTdHJlYW1BdWRpb1NvdXJjZU5vZGUuaApAQCAtNDAsNyArNDAsNyBAQCBjbGFz
cyBNdWx0aUNoYW5uZWxSZXNhbXBsZXI7CiBjbGFzcyBNZWRpYVN0cmVhbUF1ZGlvU291cmNlTm9k
ZSBmaW5hbCA6IHB1YmxpYyBBdWRpb05vZGUsIHB1YmxpYyBBdWRpb1NvdXJjZVByb3ZpZGVyQ2xp
ZW50IHsKICAgICBXVEZfTUFLRV9JU09fQUxMT0NBVEVEKE1lZGlhU3RyZWFtQXVkaW9Tb3VyY2VO
b2RlKTsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPE1lZGlhU3RyZWFtQXVkaW9Tb3VyY2VOb2Rl
PiBjcmVhdGUoQXVkaW9Db250ZXh0JiwgTWVkaWFTdHJlYW0mLCBNZWRpYVN0cmVhbVRyYWNrJik7
CisgICAgc3RhdGljIFJlZjxNZWRpYVN0cmVhbUF1ZGlvU291cmNlTm9kZT4gY3JlYXRlKEF1ZGlv
Q29udGV4dEJhc2UmLCBNZWRpYVN0cmVhbSYsIE1lZGlhU3RyZWFtVHJhY2smKTsKIAogICAgIHZp
cnR1YWwgfk1lZGlhU3RyZWFtQXVkaW9Tb3VyY2VOb2RlKCk7CiAKQEAgLTU0LDcgKzU0LDcgQEAg
cHVibGljOgogICAgIHZvaWQgc2V0Rm9ybWF0KHNpemVfdCBudW1iZXJPZkNoYW5uZWxzLCBmbG9h
dCBzYW1wbGVSYXRlKSBvdmVycmlkZTsKIAogcHJpdmF0ZToKLSAgICBNZWRpYVN0cmVhbUF1ZGlv
U291cmNlTm9kZShBdWRpb0NvbnRleHQmLCBNZWRpYVN0cmVhbSYsIE1lZGlhU3RyZWFtVHJhY2sm
KTsKKyAgICBNZWRpYVN0cmVhbUF1ZGlvU291cmNlTm9kZShBdWRpb0NvbnRleHRCYXNlJiwgTWVk
aWFTdHJlYW0mLCBNZWRpYVN0cmVhbVRyYWNrJik7CiAKICAgICBkb3VibGUgdGFpbFRpbWUoKSBj
b25zdCBvdmVycmlkZSB7IHJldHVybiAwOyB9CiAgICAgZG91YmxlIGxhdGVuY3lUaW1lKCkgY29u
c3Qgb3ZlcnJpZGUgeyByZXR1cm4gMDsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJhdWRpby9PZmZsaW5lQXVkaW9Db250ZXh0LmlkbCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViYXVkaW8vT2ZmbGluZUF1ZGlvQ29udGV4dC5pZGwKaW5kZXggYzZlMGQ3NGYwMmYu
LjZmMTIyYTdjM2M4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlv
L09mZmxpbmVBdWRpb0NvbnRleHQuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
YXVkaW8vT2ZmbGluZUF1ZGlvQ29udGV4dC5pZGwKQEAgLTI4LDYgKzI4LDYgQEAKICAgICBDb25z
dHJ1Y3Rvcih1bnNpZ25lZCBsb25nIG51bWJlck9mQ2hhbm5lbHMsIHVuc2lnbmVkIGxvbmcgbnVt
YmVyT2ZGcmFtZXMsIHVucmVzdHJpY3RlZCBmbG9hdCBzYW1wbGVSYXRlKSwKICAgICBDb25zdHJ1
Y3Rvck1heVRocm93RXhjZXB0aW9uLAogICAgIENvbnN0cnVjdG9yQ2FsbFdpdGg9U2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCwKLSAgICBJbnRlcmZhY2VOYW1lPXdlYmtpdE9mZmxpbmVBdWRpb0NvbnRl
eHQKKyAgICBFbmFibGVkQnlTZXR0aW5nPU1vZGVyblVucHJlZml4ZWRXZWJBdWRpbywKIF0gaW50
ZXJmYWNlIE9mZmxpbmVBdWRpb0NvbnRleHQgOiBBdWRpb0NvbnRleHQgewogfTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vT2ZmbGluZUF1ZGlvRGVzdGluYXRp
b25Ob2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vT2ZmbGluZUF1ZGlv
RGVzdGluYXRpb25Ob2RlLmNwcAppbmRleCA2YTE5NTU0NmNmNy4uZmVjNTA4Y2JmZjEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vT2ZmbGluZUF1ZGlvRGVzdGlu
YXRpb25Ob2RlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL09mZmxp
bmVBdWRpb0Rlc3RpbmF0aW9uTm9kZS5jcHAKQEAgLTQxLDcgKzQxLDcgQEAgV1RGX01BS0VfSVNP
X0FMTE9DQVRFRF9JTVBMKE9mZmxpbmVBdWRpb0Rlc3RpbmF0aW9uTm9kZSk7CiAgICAgCiBjb25z
dCBzaXplX3QgcmVuZGVyUXVhbnR1bVNpemUgPSAxMjg7ICAgIAogCi1PZmZsaW5lQXVkaW9EZXN0
aW5hdGlvbk5vZGU6Ok9mZmxpbmVBdWRpb0Rlc3RpbmF0aW9uTm9kZShBdWRpb0NvbnRleHQmIGNv
bnRleHQsIEF1ZGlvQnVmZmVyKiByZW5kZXJUYXJnZXQpCitPZmZsaW5lQXVkaW9EZXN0aW5hdGlv
bk5vZGU6Ok9mZmxpbmVBdWRpb0Rlc3RpbmF0aW9uTm9kZShBdWRpb0NvbnRleHRCYXNlJiBjb250
ZXh0LCBBdWRpb0J1ZmZlciogcmVuZGVyVGFyZ2V0KQogICAgIDogQXVkaW9EZXN0aW5hdGlvbk5v
ZGUoY29udGV4dCwgcmVuZGVyVGFyZ2V0LT5zYW1wbGVSYXRlKCkpCiAgICAgLCBtX3JlbmRlclRh
cmdldChyZW5kZXJUYXJnZXQpCiAgICAgLCBtX3N0YXJ0ZWRSZW5kZXJpbmcoZmFsc2UpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL09mZmxpbmVBdWRpb0Rlc3Rp
bmF0aW9uTm9kZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9PZmZsaW5lQXVk
aW9EZXN0aW5hdGlvbk5vZGUuaAppbmRleCBkYTI0OTU3NGQ0OC4uZjg3MTBmZGUxMGQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vT2ZmbGluZUF1ZGlvRGVzdGlu
YXRpb25Ob2RlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9PZmZsaW5l
QXVkaW9EZXN0aW5hdGlvbk5vZGUuaApAQCAtMzcsOSArMzcsOSBAQCBjbGFzcyBBdWRpb0NvbnRl
eHQ7CiBjbGFzcyBPZmZsaW5lQXVkaW9EZXN0aW5hdGlvbk5vZGUgZmluYWwgOiBwdWJsaWMgQXVk
aW9EZXN0aW5hdGlvbk5vZGUgewogICAgIFdURl9NQUtFX0lTT19BTExPQ0FURUQoT2ZmbGluZUF1
ZGlvRGVzdGluYXRpb25Ob2RlKTsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPE9mZmxpbmVBdWRp
b0Rlc3RpbmF0aW9uTm9kZT4gY3JlYXRlKEF1ZGlvQ29udGV4dCYgY29udGV4dCwgQXVkaW9CdWZm
ZXIqIHJlbmRlclRhcmdldCkKKyAgICBzdGF0aWMgUmVmPE9mZmxpbmVBdWRpb0Rlc3RpbmF0aW9u
Tm9kZT4gY3JlYXRlKEF1ZGlvQ29udGV4dEJhc2UmIGNvbnRleHQsIEF1ZGlvQnVmZmVyKiByZW5k
ZXJUYXJnZXQpCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBPZmZsaW5lQXVk
aW9EZXN0aW5hdGlvbk5vZGUoY29udGV4dCwgcmVuZGVyVGFyZ2V0KSk7ICAgICAKKyAgICAgICAg
cmV0dXJuIGFkb3B0UmVmKCpuZXcgT2ZmbGluZUF1ZGlvRGVzdGluYXRpb25Ob2RlKGNvbnRleHQs
IHJlbmRlclRhcmdldCkpOwogICAgIH0KIAogICAgIHZpcnR1YWwgfk9mZmxpbmVBdWRpb0Rlc3Rp
bmF0aW9uTm9kZSgpOwpAQCAtNTUsNyArNTUsNyBAQCBwdWJsaWM6CiAgICAgZmxvYXQgc2FtcGxl
UmF0ZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fcmVuZGVyVGFyZ2V0LT5zYW1wbGVSYXRl
KCk7IH0KIAogcHJpdmF0ZToKLSAgICBPZmZsaW5lQXVkaW9EZXN0aW5hdGlvbk5vZGUoQXVkaW9D
b250ZXh0JiwgQXVkaW9CdWZmZXIqIHJlbmRlclRhcmdldCk7CisgICAgT2ZmbGluZUF1ZGlvRGVz
dGluYXRpb25Ob2RlKEF1ZGlvQ29udGV4dEJhc2UmLCBBdWRpb0J1ZmZlciogcmVuZGVyVGFyZ2V0
KTsKIAogICAgIC8vIFRoaXMgQXVkaW9Ob2RlIHJlbmRlcnMgaW50byB0aGlzIEF1ZGlvQnVmZmVy
LgogICAgIFJlZlB0cjxBdWRpb0J1ZmZlcj4gbV9yZW5kZXJUYXJnZXQ7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL09zY2lsbGF0b3JOb2RlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vT3NjaWxsYXRvck5vZGUuY3BwCmluZGV4IDk1NjAw
NTNhNDgwLi5lOGYzMWM3MjIwZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJhdWRpby9Pc2NpbGxhdG9yTm9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJhdWRpby9Pc2NpbGxhdG9yTm9kZS5jcHAKQEAgLTQ1LDEyICs0NSwxMiBAQCBQZXJpb2RpY1dh
dmUqIE9zY2lsbGF0b3JOb2RlOjpzX3BlcmlvZGljV2F2ZVNxdWFyZSA9IG51bGxwdHI7CiBQZXJp
b2RpY1dhdmUqIE9zY2lsbGF0b3JOb2RlOjpzX3BlcmlvZGljV2F2ZVNhd3Rvb3RoID0gbnVsbHB0
cjsKIFBlcmlvZGljV2F2ZSogT3NjaWxsYXRvck5vZGU6OnNfcGVyaW9kaWNXYXZlVHJpYW5nbGUg
PSBudWxscHRyOwogCi1SZWY8T3NjaWxsYXRvck5vZGU+IE9zY2lsbGF0b3JOb2RlOjpjcmVhdGUo
QXVkaW9Db250ZXh0JiBjb250ZXh0LCBmbG9hdCBzYW1wbGVSYXRlKQorUmVmPE9zY2lsbGF0b3JO
b2RlPiBPc2NpbGxhdG9yTm9kZTo6Y3JlYXRlKEF1ZGlvQ29udGV4dEJhc2UmIGNvbnRleHQsIGZs
b2F0IHNhbXBsZVJhdGUpCiB7CiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgT3NjaWxsYXRvck5v
ZGUoY29udGV4dCwgc2FtcGxlUmF0ZSkpOwogfQogCi1Pc2NpbGxhdG9yTm9kZTo6T3NjaWxsYXRv
ck5vZGUoQXVkaW9Db250ZXh0JiBjb250ZXh0LCBmbG9hdCBzYW1wbGVSYXRlKQorT3NjaWxsYXRv
ck5vZGU6Ok9zY2lsbGF0b3JOb2RlKEF1ZGlvQ29udGV4dEJhc2UmIGNvbnRleHQsIGZsb2F0IHNh
bXBsZVJhdGUpCiAgICAgOiBBdWRpb1NjaGVkdWxlZFNvdXJjZU5vZGUoY29udGV4dCwgc2FtcGxl
UmF0ZSkKICAgICAsIG1fZmlyc3RSZW5kZXIodHJ1ZSkKICAgICAsIG1fdmlydHVhbFJlYWRJbmRl
eCgwKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9Pc2NpbGxh
dG9yTm9kZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9Pc2NpbGxhdG9yTm9k
ZS5oCmluZGV4IDQyZmYwYzE5MjRiLi4wODk1YmNlM2RkZCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJhdWRpby9Pc2NpbGxhdG9yTm9kZS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViYXVkaW8vT3NjaWxsYXRvck5vZGUuaApAQCAtNDUsNyArNDUsNyBAQCBw
dWJsaWM6CiAgICAgICAgIEN1c3RvbQogICAgIH07CiAKLSAgICBzdGF0aWMgUmVmPE9zY2lsbGF0
b3JOb2RlPiBjcmVhdGUoQXVkaW9Db250ZXh0JiwgZmxvYXQgc2FtcGxlUmF0ZSk7CisgICAgc3Rh
dGljIFJlZjxPc2NpbGxhdG9yTm9kZT4gY3JlYXRlKEF1ZGlvQ29udGV4dEJhc2UmLCBmbG9hdCBz
YW1wbGVSYXRlKTsKIAogICAgIHZpcnR1YWwgfk9zY2lsbGF0b3JOb2RlKCk7CiAKQEAgLTYwLDcg
KzYwLDcgQEAgcHVibGljOgogICAgIHZvaWQgc2V0UGVyaW9kaWNXYXZlKFBlcmlvZGljV2F2ZSop
OwogCiBwcml2YXRlOgotICAgIE9zY2lsbGF0b3JOb2RlKEF1ZGlvQ29udGV4dCYsIGZsb2F0IHNh
bXBsZVJhdGUpOworICAgIE9zY2lsbGF0b3JOb2RlKEF1ZGlvQ29udGV4dEJhc2UmLCBmbG9hdCBz
YW1wbGVSYXRlKTsKIAogICAgIHZvaWQgcHJvY2VzcyhzaXplX3QgZnJhbWVzVG9Qcm9jZXNzKSBm
aW5hbDsKICAgICB2b2lkIHJlc2V0KCkgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmF1ZGlvL1Bhbm5lck5vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJhdWRpby9QYW5uZXJOb2RlLmNwcAppbmRleCBlYzgwZTY5ZDJhYi4uYWU0MmYxMTRiYmMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vUGFubmVyTm9kZS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9QYW5uZXJOb2RlLmNwcApA
QCAtNDgsOCArNDgsMTMgQEAgc3RhdGljIHZvaWQgZml4TkFOcyhkb3VibGUgJngpCiAgICAgICAg
IHggPSAwLjA7CiB9CiAKLVBhbm5lck5vZGU6OlBhbm5lck5vZGUoQXVkaW9Db250ZXh0JiBjb250
ZXh0LCBmbG9hdCBzYW1wbGVSYXRlKQorUGFubmVyTm9kZUJhc2U6OlBhbm5lck5vZGVCYXNlKEF1
ZGlvQ29udGV4dEJhc2UmIGNvbnRleHQsIGZsb2F0IHNhbXBsZVJhdGUpCiAgICAgOiBBdWRpb05v
ZGUoY29udGV4dCwgc2FtcGxlUmF0ZSkKK3sKK30KKworUGFubmVyTm9kZTo6UGFubmVyTm9kZShB
dWRpb0NvbnRleHQmIGNvbnRleHQsIGZsb2F0IHNhbXBsZVJhdGUpCisgICAgOiBQYW5uZXJOb2Rl
QmFzZShjb250ZXh0LCBzYW1wbGVSYXRlKQogICAgICwgbV9wYW5uaW5nTW9kZWwoUGFubmluZ01v
ZGVsVHlwZTo6SFJURikKICAgICAsIG1fbGFzdEdhaW4oLTEuMCkKICAgICAsIG1fcG9zaXRpb25Y
KEF1ZGlvUGFyYW06OmNyZWF0ZShjb250ZXh0LCAicG9zaXRpb25YIl9zLCAwLCAtRkxUX01BWCwg
RkxUX01BWCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1Bh
bm5lck5vZGUuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vUGFubmVyTm9kZS5o
CmluZGV4IDg0ODBjMjMzMjgwLi4yOWI2NDhkMDYwNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJhdWRpby9QYW5uZXJOb2RlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJhdWRpby9QYW5uZXJOb2RlLmgKQEAgLTI2LDYgKzI2LDcgQEAKIAogI2lmIEVOQUJM
RShXRUJfQVVESU8pCiAKKyNpbmNsdWRlICJBdWRpb0NvbnRleHQuaCIKICNpbmNsdWRlICJBdWRp
b0xpc3RlbmVyLmgiCiAjaW5jbHVkZSAiQXVkaW9Ob2RlLmgiCiAjaW5jbHVkZSAiQXVkaW9QYXJh
bS5oIgpAQCAtNDEsNiArNDIsMTYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBIUlRG
RGF0YWJhc2VMb2FkZXI7CiAKK2NsYXNzIFBhbm5lck5vZGVCYXNlIDogcHVibGljIEF1ZGlvTm9k
ZSB7CitwdWJsaWM6CisgICAgdmlydHVhbCB+UGFubmVyTm9kZUJhc2UoKSA9IGRlZmF1bHQ7CisK
KyAgICB2aXJ0dWFsIGZsb2F0IGRvcHBsZXJSYXRlKCkgPSAwOworCitwcm90ZWN0ZWQ6CisgICAg
UGFubmVyTm9kZUJhc2UoQXVkaW9Db250ZXh0QmFzZSYsIGZsb2F0IHNhbXBsZVJhdGUpOworfTsK
KwogLy8gUGFubmVyTm9kZSBpcyBhbiBBdWRpb05vZGUgd2l0aCBvbmUgaW5wdXQgYW5kIG9uZSBv
dXRwdXQuCiAvLyBJdCBwb3NpdGlvbnMgYSBzb3VuZCBpbiAzRCBzcGFjZSwgd2l0aCB0aGUgZXhh
Y3QgZWZmZWN0IGRlcGVuZGVudCBvbiB0aGUgcGFubmluZyBtb2RlbC4KIC8vIEl0IGhhcyBhIHBv
c2l0aW9uIGFuZCBhbiBvcmllbnRhdGlvbiBpbiAzRCBzcGFjZSB3aGljaCBpcyByZWxhdGl2ZSB0
byB0aGUgcG9zaXRpb24gYW5kIG9yaWVudGF0aW9uIG9mIHRoZSBjb250ZXh0J3MgQXVkaW9MaXN0
ZW5lci4KQEAgLTQ4LDcgKzU5LDcgQEAgY2xhc3MgSFJURkRhdGFiYXNlTG9hZGVyOwogLy8gQSBj
b25lIGVmZmVjdCB3aWxsIGF0dGVudWF0ZSB0aGUgZ2FpbiBhcyB0aGUgb3JpZW50YXRpb24gbW92
ZXMgYXdheSBmcm9tIHRoZSBsaXN0ZW5lci4KIC8vIEFsbCBvZiB0aGVzZSBlZmZlY3RzIGZvbGxv
dyB0aGUgT3BlbkFMIHNwZWNpZmljYXRpb24gdmVyeSBjbG9zZWx5LgogCi1jbGFzcyBQYW5uZXJO
b2RlIGZpbmFsIDogcHVibGljIEF1ZGlvTm9kZSB7CitjbGFzcyBQYW5uZXJOb2RlIGZpbmFsIDog
cHVibGljIFBhbm5lck5vZGVCYXNlIHsKICAgICBXVEZfTUFLRV9JU09fQUxMT0NBVEVEKFBhbm5l
ck5vZGUpOwogcHVibGljOgogICAgIHN0YXRpYyBSZWY8UGFubmVyTm9kZT4gY3JlYXRlKEF1ZGlv
Q29udGV4dCYgY29udGV4dCwgZmxvYXQgc2FtcGxlUmF0ZSkKQEAgLTU4LDYgKzY5LDkgQEAgcHVi
bGljOgogCiAgICAgdmlydHVhbCB+UGFubmVyTm9kZSgpOwogCisgICAgQXVkaW9Db250ZXh0JiBj
b250ZXh0KCkgeyByZXR1cm4gZG93bmNhc3Q8QXVkaW9Db250ZXh0PihBdWRpb05vZGU6OmNvbnRl
eHQoKSk7IH0KKyAgICBjb25zdCBBdWRpb0NvbnRleHQmIGNvbnRleHQoKSBjb25zdCB7IHJldHVy
biBkb3duY2FzdDxBdWRpb0NvbnRleHQ+KEF1ZGlvTm9kZTo6Y29udGV4dCgpKTsgfQorCiAgICAg
Ly8gQXVkaW9Ob2RlCiAgICAgdm9pZCBwcm9jZXNzKHNpemVfdCBmcmFtZXNUb1Byb2Nlc3MpIG92
ZXJyaWRlOwogICAgIHZvaWQgcHVsbElucHV0cyhzaXplX3QgZnJhbWVzVG9Qcm9jZXNzKSBvdmVy
cmlkZTsKQEAgLTExMSw3ICsxMjUsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRDb25lT3V0ZXJH
YWluKGRvdWJsZSBhbmdsZSkgeyBtX2NvbmVFZmZlY3Quc2V0T3V0ZXJHYWluKGFuZ2xlKTsgfQog
CiAgICAgdm9pZCBnZXRBemltdXRoRWxldmF0aW9uKGRvdWJsZSogb3V0QXppbXV0aCwgZG91Ymxl
KiBvdXRFbGV2YXRpb24pOwotICAgIGZsb2F0IGRvcHBsZXJSYXRlKCk7CisgICAgZmxvYXQgZG9w
cGxlclJhdGUoKSBmaW5hbDsKIAogICAgIC8vIEFjY2Vzc29ycyBmb3IgZHluYW1pY2FsbHkgY2Fs
Y3VsYXRlZCBnYWluIHZhbHVlcy4KICAgICBBdWRpb1BhcmFtKiBkaXN0YW5jZUdhaW4oKSB7IHJl
dHVybiBtX2Rpc3RhbmNlR2Fpbi5nZXQoKTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJhdWRpby9QYW5uZXJOb2RlLmlkbCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViYXVkaW8vUGFubmVyTm9kZS5pZGwKaW5kZXggMDMyOTgzN2QyZjUuLjdiYjkyYzRmOGZiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1Bhbm5lck5vZGUuaWRs
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vUGFubmVyTm9kZS5pZGwKQEAg
LTIyLDI3ICsyMiwxMCBAQAogICogU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotWwotICAgIENvbmRpdGlvbmFsPVdFQl9B
VURJTywKLSAgICBJbXBsZW1lbnRlZEFzPVBhbm5pbmdNb2RlbFR5cGUKLV0gZW51bSBQYW5uaW5n
TW9kZWxUeXBlIHsKLSAgICAiZXF1YWxwb3dlciIsCi0gICAgIkhSVEYiCi19OwotCi1bCi0gICAg
Q29uZGl0aW9uYWw9V0VCX0FVRElPLAotICAgIEltcGxlbWVudGVkQXM9RGlzdGFuY2VNb2RlbFR5
cGUKLV0gZW51bSBEaXN0YW5jZU1vZGVsVHlwZSB7Ci0gICAgImxpbmVhciIsCi0gICAgImludmVy
c2UiLAotICAgICJleHBvbmVudGlhbCIKLX07Ci0KIFsKICAgICBDb25kaXRpb25hbD1XRUJfQVVE
SU8sCiAgICAgSlNHZW5lcmF0ZVRvSlNPYmplY3QsCi0gICAgSW50ZXJmYWNlTmFtZT13ZWJraXRB
dWRpb1Bhbm5lck5vZGUsCisgICAgRW5hYmxlZEJ5U2V0dGluZz1Nb2Rlcm5VbnByZWZpeGVkV2Vi
QXVkaW8sCiBdIGludGVyZmFjZSBQYW5uZXJOb2RlIDogQXVkaW9Ob2RlIHsKICAgICAvLyBEZWZh
dWx0IG1vZGVsIGZvciBzdGVyZW8gaXMgSFJURiAKICAgICBhdHRyaWJ1dGUgUGFubmluZ01vZGVs
VHlwZSBwYW5uaW5nTW9kZWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmF1ZGlvL1Bhbm5pbmdNb2RlbFR5cGUuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVk
aW8vUGFubmluZ01vZGVsVHlwZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwLi5hYjBiMjI3MTJhMQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViYXVkaW8vUGFubmluZ01vZGVsVHlwZS5oCkBAIC0wLDAgKzEsMjcgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMjAsIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuICBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAor
ICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
CisgKiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKKyAqIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiUGFubmVyLmgiCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1Bhbm5pbmdNb2RlbFR5cGUuaWRsIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9QYW5uaW5nTW9kZWxUeXBlLmlkbApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uYmY3ZGY4ZjU1NDIKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1Bhbm5pbmdNb2RlbFR5cGUuaWRs
CkBAIC0wLDAgKzEsMzAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAsIEdvb2dsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFO
RCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTgorICogQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTCisgKiBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCitbCisgICAgQ29uZGl0aW9uYWw9V0VCX0FV
RElPLAorXSBlbnVtIFBhbm5pbmdNb2RlbFR5cGUgeworICAgICJlcXVhbHBvd2VyIiwKKyAgICAi
SFJURiIKK307CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1Nj
cmlwdFByb2Nlc3Nvck5vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9T
Y3JpcHRQcm9jZXNzb3JOb2RlLmNwcAppbmRleCA5MWM3NTM3ZTE1ZS4uNzYxMGIxNTAyNDggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vU2NyaXB0UHJvY2Vzc29y
Tm9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9TY3JpcHRQcm9j
ZXNzb3JOb2RlLmNwcApAQCAtNDQsMTIgKzQ0LDEyIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAog
V1RGX01BS0VfSVNPX0FMTE9DQVRFRF9JTVBMKFNjcmlwdFByb2Nlc3Nvck5vZGUpOwogCi1SZWY8
U2NyaXB0UHJvY2Vzc29yTm9kZT4gU2NyaXB0UHJvY2Vzc29yTm9kZTo6Y3JlYXRlKEF1ZGlvQ29u
dGV4dCYgY29udGV4dCwgZmxvYXQgc2FtcGxlUmF0ZSwgc2l6ZV90IGJ1ZmZlclNpemUsIHVuc2ln
bmVkIG51bWJlck9mSW5wdXRDaGFubmVscywgdW5zaWduZWQgbnVtYmVyT2ZPdXRwdXRDaGFubmVs
cykKK1JlZjxTY3JpcHRQcm9jZXNzb3JOb2RlPiBTY3JpcHRQcm9jZXNzb3JOb2RlOjpjcmVhdGUo
QXVkaW9Db250ZXh0QmFzZSYgY29udGV4dCwgZmxvYXQgc2FtcGxlUmF0ZSwgc2l6ZV90IGJ1ZmZl
clNpemUsIHVuc2lnbmVkIG51bWJlck9mSW5wdXRDaGFubmVscywgdW5zaWduZWQgbnVtYmVyT2ZP
dXRwdXRDaGFubmVscykKIHsKICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTY3JpcHRQcm9jZXNz
b3JOb2RlKGNvbnRleHQsIHNhbXBsZVJhdGUsIGJ1ZmZlclNpemUsIG51bWJlck9mSW5wdXRDaGFu
bmVscywgbnVtYmVyT2ZPdXRwdXRDaGFubmVscykpOwogfQogCi1TY3JpcHRQcm9jZXNzb3JOb2Rl
OjpTY3JpcHRQcm9jZXNzb3JOb2RlKEF1ZGlvQ29udGV4dCYgY29udGV4dCwgZmxvYXQgc2FtcGxl
UmF0ZSwgc2l6ZV90IGJ1ZmZlclNpemUsIHVuc2lnbmVkIG51bWJlck9mSW5wdXRDaGFubmVscywg
dW5zaWduZWQgbnVtYmVyT2ZPdXRwdXRDaGFubmVscykKK1NjcmlwdFByb2Nlc3Nvck5vZGU6OlNj
cmlwdFByb2Nlc3Nvck5vZGUoQXVkaW9Db250ZXh0QmFzZSYgY29udGV4dCwgZmxvYXQgc2FtcGxl
UmF0ZSwgc2l6ZV90IGJ1ZmZlclNpemUsIHVuc2lnbmVkIG51bWJlck9mSW5wdXRDaGFubmVscywg
dW5zaWduZWQgbnVtYmVyT2ZPdXRwdXRDaGFubmVscykKICAgICA6IEF1ZGlvTm9kZShjb250ZXh0
LCBzYW1wbGVSYXRlKQogICAgICwgQWN0aXZlRE9NT2JqZWN0KGNvbnRleHQuc2NyaXB0RXhlY3V0
aW9uQ29udGV4dCgpKQogICAgICwgbV9kb3VibGVCdWZmZXJJbmRleCgwKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9TY3JpcHRQcm9jZXNzb3JOb2RlLmggYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1NjcmlwdFByb2Nlc3Nvck5vZGUuaAppbmRl
eCA1YTRlN2NlNDc1Mi4uNGMxNGEwNzU3ZGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViYXVkaW8vU2NyaXB0UHJvY2Vzc29yTm9kZS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViYXVkaW8vU2NyaXB0UHJvY2Vzc29yTm9kZS5oCkBAIC01Miw3ICs1Miw3IEBA
IHB1YmxpYzoKICAgICAvLyBUaGlzIHZhbHVlIGNvbnRyb2xzIGhvdyBmcmVxdWVudGx5IHRoZSBv
bmF1ZGlvcHJvY2VzcyBldmVudCBoYW5kbGVyIGlzIGNhbGxlZCBhbmQgaG93IG1hbnkgc2FtcGxl
LWZyYW1lcyBuZWVkIHRvIGJlIHByb2Nlc3NlZCBlYWNoIGNhbGwuCiAgICAgLy8gTG93ZXIgbnVt
YmVycyBmb3IgYnVmZmVyU2l6ZSB3aWxsIHJlc3VsdCBpbiBhIGxvd2VyIChiZXR0ZXIpIGxhdGVu
Y3kuIEhpZ2hlciBudW1iZXJzIHdpbGwgYmUgbmVjZXNzYXJ5IHRvIGF2b2lkIGF1ZGlvIGJyZWFr
dXAgYW5kIGdsaXRjaGVzLgogICAgIC8vIFRoZSB2YWx1ZSBjaG9zZW4gbXVzdCBjYXJlZnVsbHkg
YmFsYW5jZSBiZXR3ZWVuIGxhdGVuY3kgYW5kIGF1ZGlvIHF1YWxpdHkuCi0gICAgc3RhdGljIFJl
ZjxTY3JpcHRQcm9jZXNzb3JOb2RlPiBjcmVhdGUoQXVkaW9Db250ZXh0JiwgZmxvYXQgc2FtcGxl
UmF0ZSwgc2l6ZV90IGJ1ZmZlclNpemUsIHVuc2lnbmVkIG51bWJlck9mSW5wdXRDaGFubmVscywg
dW5zaWduZWQgbnVtYmVyT2ZPdXRwdXRDaGFubmVscyk7CisgICAgc3RhdGljIFJlZjxTY3JpcHRQ
cm9jZXNzb3JOb2RlPiBjcmVhdGUoQXVkaW9Db250ZXh0QmFzZSYsIGZsb2F0IHNhbXBsZVJhdGUs
IHNpemVfdCBidWZmZXJTaXplLCB1bnNpZ25lZCBudW1iZXJPZklucHV0Q2hhbm5lbHMsIHVuc2ln
bmVkIG51bWJlck9mT3V0cHV0Q2hhbm5lbHMpOwogCiAgICAgdmlydHVhbCB+U2NyaXB0UHJvY2Vz
c29yTm9kZSgpOwogCkBAIC03MSw3ICs3MSw3IEBAIHByaXZhdGU6CiAgICAgZG91YmxlIHRhaWxU
aW1lKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgZG91YmxlIGxhdGVuY3lUaW1lKCkgY29uc3Qgb3Zl
cnJpZGU7CiAKLSAgICBTY3JpcHRQcm9jZXNzb3JOb2RlKEF1ZGlvQ29udGV4dCYsIGZsb2F0IHNh
bXBsZVJhdGUsIHNpemVfdCBidWZmZXJTaXplLCB1bnNpZ25lZCBudW1iZXJPZklucHV0Q2hhbm5l
bHMsIHVuc2lnbmVkIG51bWJlck9mT3V0cHV0Q2hhbm5lbHMpOworICAgIFNjcmlwdFByb2Nlc3Nv
ck5vZGUoQXVkaW9Db250ZXh0QmFzZSYsIGZsb2F0IHNhbXBsZVJhdGUsIHNpemVfdCBidWZmZXJT
aXplLCB1bnNpZ25lZCBudW1iZXJPZklucHV0Q2hhbm5lbHMsIHVuc2lnbmVkIG51bWJlck9mT3V0
cHV0Q2hhbm5lbHMpOwogCiAgICAgdm9pZCBmaXJlUHJvY2Vzc0V2ZW50KCk7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vV2F2ZVNoYXBlck5vZGUuY3BwIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9XYXZlU2hhcGVyTm9kZS5jcHAKaW5kZXgg
NmU3ZThkZDFjOWMuLmFlNGFmOWYyMzJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmF1ZGlvL1dhdmVTaGFwZXJOb2RlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmF1ZGlvL1dhdmVTaGFwZXJOb2RlLmNwcApAQCAtMzUsNyArMzUsNyBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKIFdURl9NQUtFX0lTT19BTExPQ0FURURfSU1QTChXYXZlU2hhcGVyTm9k
ZSk7CiAKLVdhdmVTaGFwZXJOb2RlOjpXYXZlU2hhcGVyTm9kZShBdWRpb0NvbnRleHQmIGNvbnRl
eHQpCitXYXZlU2hhcGVyTm9kZTo6V2F2ZVNoYXBlck5vZGUoQXVkaW9Db250ZXh0QmFzZSYgY29u
dGV4dCkKICAgICA6IEF1ZGlvQmFzaWNQcm9jZXNzb3JOb2RlKGNvbnRleHQsIGNvbnRleHQuc2Ft
cGxlUmF0ZSgpKQogewogICAgIHNldE5vZGVUeXBlKE5vZGVUeXBlV2F2ZVNoYXBlcik7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1dhdmVTaGFwZXJOb2RlLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1dhdmVTaGFwZXJOb2RlLmgKaW5kZXgg
ZjQ5ZTM0OWJjM2QuLjVmNDkzMjhiMjJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmF1ZGlvL1dhdmVTaGFwZXJOb2RlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJhdWRpby9XYXZlU2hhcGVyTm9kZS5oCkBAIC0zMyw3ICszMyw3IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIGNsYXNzIFdhdmVTaGFwZXJOb2RlIGZpbmFsIDogcHVibGljIEF1ZGlvQmFzaWNQ
cm9jZXNzb3JOb2RlIHsKICAgICBXVEZfTUFLRV9JU09fQUxMT0NBVEVEKFdhdmVTaGFwZXJOb2Rl
KTsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPFdhdmVTaGFwZXJOb2RlPiBjcmVhdGUoQXVkaW9D
b250ZXh0JiBjb250ZXh0KQorICAgIHN0YXRpYyBSZWY8V2F2ZVNoYXBlck5vZGU+IGNyZWF0ZShB
dWRpb0NvbnRleHRCYXNlJiBjb250ZXh0KQogICAgIHsKICAgICAgICAgcmV0dXJuIGFkb3B0UmVm
KCpuZXcgV2F2ZVNoYXBlck5vZGUoY29udGV4dCkpOwogICAgIH0KQEAgLTQ5LDcgKzQ5LDcgQEAg
cHVibGljOgogICAgIGRvdWJsZSBsYXRlbmN5KCkgY29uc3QgeyByZXR1cm4gbGF0ZW5jeVRpbWUo
KTsgfQogCiBwcml2YXRlOiAgICAKLSAgICBleHBsaWNpdCBXYXZlU2hhcGVyTm9kZShBdWRpb0Nv
bnRleHQmKTsgICAgCisgICAgZXhwbGljaXQgV2F2ZVNoYXBlck5vZGUoQXVkaW9Db250ZXh0QmFz
ZSYpOwogCiAgICAgV2F2ZVNoYXBlclByb2Nlc3Nvciogd2F2ZVNoYXBlclByb2Nlc3NvcigpIHsg
cmV0dXJuIHN0YXRpY19jYXN0PFdhdmVTaGFwZXJQcm9jZXNzb3IqPihwcm9jZXNzb3IoKSk7IH0K
IH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1dlYktpdEF1
ZGlvQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1dlYktpdEF1
ZGlvQ29udGV4dC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLmMy
MGYxYjdlMGI0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJh
dWRpby9XZWJLaXRBdWRpb0NvbnRleHQuY3BwCkBAIC0wLDAgKzEsMTM5NSBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29w
eXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuICBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICog
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OCisg
KiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKKyAqIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNpbmNsdWRlICJjb25maWcuaCIKKworI2lmIEVOQUJMRShXRUJfQVVESU8pCisKKyNpbmNsdWRl
ICJXZWJLaXRBdWRpb0NvbnRleHQuaCIKKworI2luY2x1ZGUgIkFuYWx5c2VyTm9kZS5oIgorI2lu
Y2x1ZGUgIkFzeW5jQXVkaW9EZWNvZGVyLmgiCisjaW5jbHVkZSAiQXVkaW9CdWZmZXIuaCIKKyNp
bmNsdWRlICJBdWRpb0J1ZmZlckNhbGxiYWNrLmgiCisjaW5jbHVkZSAiQXVkaW9CdWZmZXJTb3Vy
Y2VOb2RlLmgiCisjaW5jbHVkZSAiQXVkaW9MaXN0ZW5lci5oIgorI2luY2x1ZGUgIkF1ZGlvTm9k
ZUlucHV0LmgiCisjaW5jbHVkZSAiQXVkaW9Ob2RlT3V0cHV0LmgiCisjaW5jbHVkZSAiQXVkaW9T
ZXNzaW9uLmgiCisjaW5jbHVkZSAiQmlxdWFkRmlsdGVyTm9kZS5oIgorI2luY2x1ZGUgIkNoYW5u
ZWxNZXJnZXJOb2RlLmgiCisjaW5jbHVkZSAiQ2hhbm5lbFNwbGl0dGVyTm9kZS5oIgorI2luY2x1
ZGUgIkNvbnZvbHZlck5vZGUuaCIKKyNpbmNsdWRlICJEZWZhdWx0QXVkaW9EZXN0aW5hdGlvbk5v
ZGUuaCIKKyNpbmNsdWRlICJEZWxheU5vZGUuaCIKKyNpbmNsdWRlICJEb2N1bWVudC5oIgorI2lu
Y2x1ZGUgIkR5bmFtaWNzQ29tcHJlc3Nvck5vZGUuaCIKKyNpbmNsdWRlICJFdmVudE5hbWVzLmgi
CisjaW5jbHVkZSAiRkZURnJhbWUuaCIKKyNpbmNsdWRlICJGcmFtZS5oIgorI2luY2x1ZGUgIkZy
YW1lTG9hZGVyLmgiCisjaW5jbHVkZSAiR2Fpbk5vZGUuaCIKKyNpbmNsdWRlICJHZW5lcmljRXZl
bnRRdWV1ZS5oIgorI2luY2x1ZGUgIkhSVEZEYXRhYmFzZUxvYWRlci5oIgorI2luY2x1ZGUgIkhS
VEZQYW5uZXIuaCIKKyNpbmNsdWRlICJKU0RPTVByb21pc2VEZWZlcnJlZC5oIgorI2luY2x1ZGUg
IkxvZ2dpbmcuaCIKKyNpbmNsdWRlICJOZXR3b3JraW5nQ29udGV4dC5oIgorI2luY2x1ZGUgIk9m
ZmxpbmVBdWRpb0NvbXBsZXRpb25FdmVudC5oIgorI2luY2x1ZGUgIk9mZmxpbmVBdWRpb0Rlc3Rp
bmF0aW9uTm9kZS5oIgorI2luY2x1ZGUgIk9zY2lsbGF0b3JOb2RlLmgiCisjaW5jbHVkZSAiUGFn
ZS5oIgorI2luY2x1ZGUgIlBlcmlvZGljV2F2ZS5oIgorI2luY2x1ZGUgIlBsYXRmb3JtTWVkaWFT
ZXNzaW9uTWFuYWdlci5oIgorI2luY2x1ZGUgIlNjcmlwdENvbnRyb2xsZXIuaCIKKyNpbmNsdWRl
ICJTY3JpcHRQcm9jZXNzb3JOb2RlLmgiCisjaW5jbHVkZSAiV2F2ZVNoYXBlck5vZGUuaCIKKyNp
bmNsdWRlICJXZWJLaXRBdWRpb1Bhbm5lck5vZGUuaCIKKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29y
ZS9TY3JpcHRDYWxsU3RhY2suaD4KKworI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCisjaW5jbHVk
ZSAiTWVkaWFTdHJlYW0uaCIKKyNpbmNsdWRlICJNZWRpYVN0cmVhbUF1ZGlvRGVzdGluYXRpb25O
b2RlLmgiCisjaW5jbHVkZSAiTWVkaWFTdHJlYW1BdWRpb1NvdXJjZS5oIgorI2luY2x1ZGUgIk1l
ZGlhU3RyZWFtQXVkaW9Tb3VyY2VOb2RlLmgiCisjZW5kaWYKKworI2lmIEVOQUJMRShWSURFTykK
KyNpbmNsdWRlICJIVE1MTWVkaWFFbGVtZW50LmgiCisjaW5jbHVkZSAiTWVkaWFFbGVtZW50QXVk
aW9Tb3VyY2VOb2RlLmgiCisjZW5kaWYKKworI2lmIERFQlVHX0FVRElPTk9ERV9SRUZFUkVOQ0VT
CisjaW5jbHVkZSA8c3RkaW8uaD4KKyNlbmRpZgorCisjaWYgVVNFKEdTVFJFQU1FUikKKyNpbmNs
dWRlICJHU3RyZWFtZXJDb21tb24uaCIKKyNlbmRpZgorCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlM
WSkKKyNpbmNsdWRlICJTY3JpcHRDb250cm9sbGVyLmgiCisjaW5jbHVkZSAiU2V0dGluZ3MuaCIK
KyNlbmRpZgorCisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvQXJyYXlCdWZmZXIuaD4KKyNpbmNs
dWRlIDx3dGYvQXRvbWljcy5oPgorI2luY2x1ZGUgPHd0Zi9Jc29NYWxsb2NJbmxpbmVzLmg+Cisj
aW5jbHVkZSA8d3RmL01haW5UaHJlYWQuaD4KKyNpbmNsdWRlIDx3dGYvUmVmLmg+CisjaW5jbHVk
ZSA8d3RmL1JlZkNvdW50ZWQuaD4KKyNpbmNsdWRlIDx3dGYvU2NvcGUuaD4KKyNpbmNsdWRlIDx3
dGYvdGV4dC9XVEZTdHJpbmcuaD4KKworY29uc3QgdW5zaWduZWQgTWF4UGVyaW9kaWNXYXZlTGVu
Z3RoID0gNDA5NjsKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCisjZGVmaW5lIFJFTEVBU0VfTE9H
X0lGX0FMTE9XRUQoZm10LCAuLi4pIFJFTEVBU0VfTE9HX0lGKGRvY3VtZW50KCkgJiYgZG9jdW1l
bnQoKS0+cGFnZSgpICYmIGRvY3VtZW50KCktPnBhZ2UoKS0+aXNBbHdheXNPbkxvZ2dpbmdBbGxv
d2VkKCksIE1lZGlhLCAiJXAgLSBXZWJLaXRBdWRpb0NvbnRleHQ6OiIgZm10LCB0aGlzLCAjI19f
VkFfQVJHU19fKQorCitib29sIFdlYktpdEF1ZGlvQ29udGV4dDo6aXNTYW1wbGVSYXRlUmFuZ2VH
b29kKGZsb2F0IHNhbXBsZVJhdGUpCit7CisgICAgLy8gRklYTUU6IEl0IHdvdWxkIGJlIG5pY2Ug
aWYgdGhlIG1pbmltdW0gc2FtcGxlLXJhdGUgY291bGQgYmUgbGVzcyB0aGFuIDQ0LjFLSHosCisg
ICAgLy8gYnV0IHRoYXQgd2lsbCByZXF1aXJlIHNvbWUgZml4ZXMgaW4gSFJURlBhbm5lcjo6ZmZ0
U2l6ZUZvclNhbXBsZVJhdGUoKSwgYW5kIHNvbWUgdGVzdGluZyB0aGVyZS4KKyAgICByZXR1cm4g
c2FtcGxlUmF0ZSA+PSA0NDEwMCAmJiBzYW1wbGVSYXRlIDw9IDk2MDAwOworfQorCisjaWYgT1Mo
V0lORE9XUykKKy8vIERvbid0IGFsbG93IG1vcmUgdGhhbiB0aGlzIG51bWJlciBvZiBzaW11bHRh
bmVvdXMgQXVkaW9Db250ZXh0cyB0YWxraW5nIHRvIGhhcmR3YXJlLgorY29uc3RleHByIHVuc2ln
bmVkIG1heEhhcmR3YXJlQ29udGV4dHMgPSA0OworI2VuZGlmCit1bnNpZ25lZCBXZWJLaXRBdWRp
b0NvbnRleHQ6OnNfaGFyZHdhcmVDb250ZXh0Q291bnQgPSAwOworCitFeGNlcHRpb25PcjxSZWY8
V2ViS2l0QXVkaW9Db250ZXh0Pj4gV2ViS2l0QXVkaW9Db250ZXh0OjpjcmVhdGUoRG9jdW1lbnQm
IGRvY3VtZW50KQoreworICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisjaWYgT1MoV0lORE9X
UykKKyAgICBpZiAoc19oYXJkd2FyZUNvbnRleHRDb3VudCA+PSBtYXhIYXJkd2FyZUNvbnRleHRz
KQorICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgUXVvdGFFeGNlZWRlZEVycm9yIH07CisjZW5k
aWYKKworICAgIGF1dG8gYXVkaW9Db250ZXh0ID0gYWRvcHRSZWYoKm5ldyBXZWJLaXRBdWRpb0Nv
bnRleHQoZG9jdW1lbnQpKTsKKyAgICBhdWRpb0NvbnRleHQtPnN1c3BlbmRJZk5lZWRlZCgpOwor
ICAgIHJldHVybiBhdWRpb0NvbnRleHQ7Cit9CisKKy8vIENvbnN0cnVjdG9yIGZvciByZW5kZXJp
bmcgdG8gdGhlIGF1ZGlvIGhhcmR3YXJlLgorV2ViS2l0QXVkaW9Db250ZXh0OjpXZWJLaXRBdWRp
b0NvbnRleHQoRG9jdW1lbnQmIGRvY3VtZW50KQorICAgIDogQXVkaW9Db250ZXh0QmFzZShkb2N1
bWVudCkKKyNpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKKyAgICAsIG1fbG9nZ2VyKGRvY3VtZW50
LmxvZ2dlcigpKQorICAgICwgbV9sb2dJZGVudGlmaWVyKHVuaXF1ZUxvZ0lkZW50aWZpZXIoKSkK
KyNlbmRpZgorICAgICwgbV9tZWRpYVNlc3Npb24oUGxhdGZvcm1NZWRpYVNlc3Npb246OmNyZWF0
ZShQbGF0Zm9ybU1lZGlhU2Vzc2lvbk1hbmFnZXI6OnNoYXJlZE1hbmFnZXIoKSwgKnRoaXMpKQor
ICAgICwgbV9ldmVudFF1ZXVlKE1haW5UaHJlYWRHZW5lcmljRXZlbnRRdWV1ZTo6Y3JlYXRlKCp0
aGlzKSkKK3sKKyAgICAvLyBBY2NvcmRpbmcgdG8gc3BlYyBBdWRpb0NvbnRleHQgbXVzdCBkaWUg
b25seSBhZnRlciBwYWdlIG5hdmlnYXRlLgorICAgIC8vIExldHMgbWFyayBpdCBhcyBBY3RpdmVE
T01PYmplY3Qgd2l0aCBwZW5kaW5nIGFjdGl2aXR5IGFuZCB1bm1hcmsgaXQgaW4gY2xlYXIgbWV0
aG9kLgorICAgIG1ha2VQZW5kaW5nQWN0aXZpdHkoKTsKKworICAgIGNvbnN0cnVjdENvbW1vbigp
OworCisgICAgbV9kZXN0aW5hdGlvbk5vZGUgPSBEZWZhdWx0QXVkaW9EZXN0aW5hdGlvbk5vZGU6
OmNyZWF0ZSgqdGhpcyk7CisKKyAgICAvLyBJbml0aWFsaXplIHRoZSBkZXN0aW5hdGlvbiBub2Rl
J3MgbXV0ZWQgc3RhdGUgdG8gbWF0Y2ggdGhlIHBhZ2UncyBjdXJyZW50IG11dGVkIHN0YXRlLgor
ICAgIHBhZ2VNdXRlZFN0YXRlRGlkQ2hhbmdlKCk7CisKKyAgICBkb2N1bWVudC5hZGRBdWRpb1By
b2R1Y2VyKCp0aGlzKTsKKyAgICBkb2N1bWVudC5yZWdpc3RlckZvclZpc2liaWxpdHlTdGF0ZUNo
YW5nZWRDYWxsYmFja3MoKnRoaXMpOworfQorCisvLyBDb25zdHJ1Y3RvciBmb3Igb2ZmbGluZSAo
bm9uLXJlYWx0aW1lKSByZW5kZXJpbmcuCitXZWJLaXRBdWRpb0NvbnRleHQ6OldlYktpdEF1ZGlv
Q29udGV4dChEb2N1bWVudCYgZG9jdW1lbnQsIEF1ZGlvQnVmZmVyKiByZW5kZXJUYXJnZXQpCisg
ICAgOiBBdWRpb0NvbnRleHRCYXNlKGRvY3VtZW50KQorI2lmICFSRUxFQVNFX0xPR19ESVNBQkxF
RAorICAgICwgbV9sb2dnZXIoZG9jdW1lbnQubG9nZ2VyKCkpCisgICAgLCBtX2xvZ0lkZW50aWZp
ZXIodW5pcXVlTG9nSWRlbnRpZmllcigpKQorI2VuZGlmCisgICAgLCBtX2lzT2ZmbGluZUNvbnRl
eHQodHJ1ZSkKKyAgICAsIG1fbWVkaWFTZXNzaW9uKFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpjcmVh
dGUoUGxhdGZvcm1NZWRpYVNlc3Npb25NYW5hZ2VyOjpzaGFyZWRNYW5hZ2VyKCksICp0aGlzKSkK
KyAgICAsIG1fZXZlbnRRdWV1ZShNYWluVGhyZWFkR2VuZXJpY0V2ZW50UXVldWU6OmNyZWF0ZSgq
dGhpcykpCisgICAgLCBtX3JlbmRlclRhcmdldChyZW5kZXJUYXJnZXQpCit7CisgICAgY29uc3Ry
dWN0Q29tbW9uKCk7CisKKyAgICAvLyBDcmVhdGUgYSBuZXcgZGVzdGluYXRpb24gZm9yIG9mZmxp
bmUgcmVuZGVyaW5nLgorICAgIG1fZGVzdGluYXRpb25Ob2RlID0gT2ZmbGluZUF1ZGlvRGVzdGlu
YXRpb25Ob2RlOjpjcmVhdGUoKnRoaXMsIG1fcmVuZGVyVGFyZ2V0LmdldCgpKTsKK30KKwordm9p
ZCBXZWJLaXRBdWRpb0NvbnRleHQ6OmNvbnN0cnVjdENvbW1vbigpCit7CisgICAgRkZURnJhbWU6
OmluaXRpYWxpemUoKTsKKworICAgIG1fbGlzdGVuZXIgPSBBdWRpb0xpc3RlbmVyOjpjcmVhdGUo
KTsKKworICAgIEFTU0VSVChkb2N1bWVudCgpKTsKKyAgICBpZiAoZG9jdW1lbnQoKS0+YXVkaW9Q
bGF5YmFja1JlcXVpcmVzVXNlckdlc3R1cmUoKSkKKyAgICAgICAgYWRkQmVoYXZpb3JSZXN0cmlj
dGlvbihSZXF1aXJlVXNlckdlc3R1cmVGb3JBdWRpb1N0YXJ0UmVzdHJpY3Rpb24pOworICAgIGVs
c2UKKyAgICAgICAgbV9yZXN0cmljdGlvbnMgPSBOb1Jlc3RyaWN0aW9uczsKKworI2lmIFBMQVRG
T1JNKENPQ09BKQorICAgIGFkZEJlaGF2aW9yUmVzdHJpY3Rpb24oUmVxdWlyZVBhZ2VDb25zZW50
Rm9yQXVkaW9TdGFydFJlc3RyaWN0aW9uKTsKKyNlbmRpZgorfQorCitXZWJLaXRBdWRpb0NvbnRl
eHQ6On5XZWJLaXRBdWRpb0NvbnRleHQoKQoreworI2lmIERFQlVHX0FVRElPTk9ERV9SRUZFUkVO
Q0VTCisgICAgZnByaW50ZihzdGRlcnIsICIlcDogV2ViS2l0QXVkaW9Db250ZXh0Ojp+V2ViS2l0
QXVkaW9Db250ZXh0KClcbiIsIHRoaXMpOworI2VuZGlmCisgICAgQVNTRVJUKCFtX2lzSW5pdGlh
bGl6ZWQpOworICAgIEFTU0VSVChtX2lzU3RvcFNjaGVkdWxlZCk7CisgICAgQVNTRVJUKG1fbm9k
ZXNUb0RlbGV0ZS5pc0VtcHR5KCkpOworICAgIEFTU0VSVChtX3JlZmVyZW5jZWROb2Rlcy5pc0Vt
cHR5KCkpOworICAgIEFTU0VSVChtX2ZpbmlzaGVkTm9kZXMuaXNFbXB0eSgpKTsgLy8gRklYTUUg
KGJ1ZyAxMDU4NzApOiBUaGlzIGFzc2VydGlvbiBmYWlscyBvbiB0ZXN0cyBzb21ldGltZXMuCisg
ICAgQVNTRVJUKG1fYXV0b21hdGljUHVsbE5vZGVzLmlzRW1wdHkoKSk7CisgICAgaWYgKG1fYXV0
b21hdGljUHVsbE5vZGVzTmVlZFVwZGF0aW5nKQorICAgICAgICBtX3JlbmRlcmluZ0F1dG9tYXRp
Y1B1bGxOb2Rlcy5yZXNpemUobV9hdXRvbWF0aWNQdWxsTm9kZXMuc2l6ZSgpKTsKKyAgICBBU1NF
UlQobV9yZW5kZXJpbmdBdXRvbWF0aWNQdWxsTm9kZXMuaXNFbXB0eSgpKTsKKyAgICAvLyBGSVhN
RTogQ2FuIHdlIGFzc2VydCB0aGF0IG1fZGVmZXJyZWRGaW5pc2hEZXJlZkxpc3QgaXMgZW1wdHk/
CisKKyAgICBpZiAoIWlzT2ZmbGluZUNvbnRleHQoKSAmJiBzY3JpcHRFeGVjdXRpb25Db250ZXh0
KCkpIHsKKyAgICAgICAgZG9jdW1lbnQoKS0+cmVtb3ZlQXVkaW9Qcm9kdWNlcigqdGhpcyk7Cisg
ICAgICAgIGRvY3VtZW50KCktPnVucmVnaXN0ZXJGb3JWaXNpYmlsaXR5U3RhdGVDaGFuZ2VkQ2Fs
bGJhY2tzKCp0aGlzKTsKKyAgICB9Cit9CisKK3ZvaWQgV2ViS2l0QXVkaW9Db250ZXh0OjpsYXp5
SW5pdGlhbGl6ZSgpCit7CisgICAgQVNTRVJUKCFtX2lzU3RvcFNjaGVkdWxlZCk7CisKKyAgICBp
ZiAobV9pc0luaXRpYWxpemVkKQorICAgICAgICByZXR1cm47CisKKyAgICAvLyBEb24ndCBhbGxv
dyB0aGUgY29udGV4dCB0byBpbml0aWFsaXplIGEgc2Vjb25kIHRpbWUgYWZ0ZXIgaXQncyBhbHJl
YWR5IGJlZW4gZXhwbGljaXRseSB1bmluaXRpYWxpemVkLgorICAgIEFTU0VSVCghbV9pc0F1ZGlv
VGhyZWFkRmluaXNoZWQpOworICAgIGlmIChtX2lzQXVkaW9UaHJlYWRGaW5pc2hlZCkKKyAgICAg
ICAgcmV0dXJuOworCisgICAgaWYgKG1fZGVzdGluYXRpb25Ob2RlKSB7CisgICAgICAgIG1fZGVz
dGluYXRpb25Ob2RlLT5pbml0aWFsaXplKCk7CisKKyAgICAgICAgaWYgKCFpc09mZmxpbmVDb250
ZXh0KCkpIHsKKyAgICAgICAgICAgIC8vIFRoaXMgc3RhcnRzIHRoZSBhdWRpbyB0aHJlYWQuIFRo
ZSBkZXN0aW5hdGlvbiBub2RlJ3MgcHJvdmlkZUlucHV0KCkgbWV0aG9kIHdpbGwgbm93IGJlIGNh
bGxlZCByZXBlYXRlZGx5IHRvIHJlbmRlciBhdWRpby4KKyAgICAgICAgICAgIC8vIEVhY2ggdGlt
ZSBwcm92aWRlSW5wdXQoKSBpcyBjYWxsZWQsIGEgcG9ydGlvbiBvZiB0aGUgYXVkaW8gc3RyZWFt
IGlzIHJlbmRlcmVkLiBMZXQncyBjYWxsIHRoaXMgdGltZSBwZXJpb2QgYSAicmVuZGVyIHF1YW50
dW0iLgorICAgICAgICAgICAgLy8gTk9URTogZm9yIG5vdyBkZWZhdWx0IEF1ZGlvQ29udGV4dCBk
b2VzIG5vdCBuZWVkIGFuIGV4cGxpY2l0IHN0YXJ0UmVuZGVyaW5nKCkgY2FsbCBmcm9tIEphdmFT
Y3JpcHQuCisgICAgICAgICAgICAvLyBXZSBtYXkgd2FudCB0byBjb25zaWRlciByZXF1aXJpbmcg
aXQgZm9yIHN5bW1ldHJ5IHdpdGggT2ZmbGluZUF1ZGlvQ29udGV4dC4KKyAgICAgICAgICAgIHN0
YXJ0UmVuZGVyaW5nKCk7CisgICAgICAgICAgICArK3NfaGFyZHdhcmVDb250ZXh0Q291bnQ7Cisg
ICAgICAgIH0KKyAgICB9CisgICAgbV9pc0luaXRpYWxpemVkID0gdHJ1ZTsKK30KKwordm9pZCBX
ZWJLaXRBdWRpb0NvbnRleHQ6OmNsZWFyKCkKK3sKKyAgICBSZWY8V2ViS2l0QXVkaW9Db250ZXh0
PiBwcm90ZWN0ZWRUaGlzKCp0aGlzKTsKKworICAgIC8vIFdlIGhhdmUgdG8gcmVsZWFzZSBvdXIg
cmVmZXJlbmNlIHRvIHRoZSBkZXN0aW5hdGlvbiBub2RlIGJlZm9yZSB0aGUgY29udGV4dCB3aWxs
IGV2ZXIgYmUgZGVsZXRlZCBzaW5jZSB0aGUgZGVzdGluYXRpb24gbm9kZSBob2xkcyBhIHJlZmVy
ZW5jZSB0byB0aGUgY29udGV4dC4KKyAgICBpZiAobV9kZXN0aW5hdGlvbk5vZGUpCisgICAgICAg
IG1fZGVzdGluYXRpb25Ob2RlID0gbnVsbHB0cjsKKworICAgIC8vIEF1ZGlvIHRocmVhZCBpcyBk
ZWFkLiBOb2JvZHkgd2lsbCBzY2hlZHVsZSBub2RlIGRlbGV0aW9uIGFjdGlvbi4gTGV0J3MgZG8g
aXQgb3Vyc2VsdmVzLgorICAgIGRvIHsKKyAgICAgICAgZGVsZXRlTWFya2VkTm9kZXMoKTsKKyAg
ICAgICAgbV9ub2Rlc1RvRGVsZXRlLmFwcGVuZFZlY3RvcihtX25vZGVzTWFya2VkRm9yRGVsZXRp
b24pOworICAgICAgICBtX25vZGVzTWFya2VkRm9yRGVsZXRpb24uY2xlYXIoKTsKKyAgICB9IHdo
aWxlIChtX25vZGVzVG9EZWxldGUuc2l6ZSgpKTsKKworICAgIGNsZWFyUGVuZGluZ0FjdGl2aXR5
KCk7Cit9CisKK3ZvaWQgV2ViS2l0QXVkaW9Db250ZXh0Ojp1bmluaXRpYWxpemUoKQoreworICAg
IEFMV0FZU19MT0coTE9HSURFTlRJRklFUik7CisKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkp
OworCisgICAgaWYgKCFtX2lzSW5pdGlhbGl6ZWQpCisgICAgICAgIHJldHVybjsKKworICAgIC8v
IFRoaXMgc3RvcHMgdGhlIGF1ZGlvIHRocmVhZCBhbmQgYWxsIGF1ZGlvIHJlbmRlcmluZy4KKyAg
ICBpZiAobV9kZXN0aW5hdGlvbk5vZGUpCisgICAgICAgIG1fZGVzdGluYXRpb25Ob2RlLT51bmlu
aXRpYWxpemUoKTsKKworICAgIC8vIERvbid0IGFsbG93IHRoZSBjb250ZXh0IHRvIGluaXRpYWxp
emUgYSBzZWNvbmQgdGltZSBhZnRlciBpdCdzIGFscmVhZHkgYmVlbiBleHBsaWNpdGx5IHVuaW5p
dGlhbGl6ZWQuCisgICAgbV9pc0F1ZGlvVGhyZWFkRmluaXNoZWQgPSB0cnVlOworCisgICAgaWYg
KCFpc09mZmxpbmVDb250ZXh0KCkpIHsKKyAgICAgICAgQVNTRVJUKHNfaGFyZHdhcmVDb250ZXh0
Q291bnQpOworICAgICAgICAtLXNfaGFyZHdhcmVDb250ZXh0Q291bnQ7CisKKyAgICAgICAgLy8g
T2ZmbGluZSBjb250ZXh0cyBtb3ZlIHRvICdDbG9zZWQnIHN0YXRlIHdoZW4gZGlzcGF0Y2hpbmcg
dGhlIGNvbXBsZXRpb24gZXZlbnQuCisgICAgICAgIHNldFN0YXRlKFN0YXRlOjpDbG9zZWQpOwor
ICAgIH0KKworICAgIC8vIEdldCByaWQgb2YgdGhlIHNvdXJjZXMgd2hpY2ggbWF5IHN0aWxsIGJl
IHBsYXlpbmcuCisgICAgZGVyZWZVbmZpbmlzaGVkU291cmNlTm9kZXMoKTsKKworICAgIG1faXNJ
bml0aWFsaXplZCA9IGZhbHNlOworfQorCitib29sIFdlYktpdEF1ZGlvQ29udGV4dDo6aXNJbml0
aWFsaXplZCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1faXNJbml0aWFsaXplZDsKK30KKwordm9p
ZCBXZWJLaXRBdWRpb0NvbnRleHQ6OmFkZFJlYWN0aW9uKFN0YXRlIHN0YXRlLCBET01Qcm9taXNl
RGVmZXJyZWQ8dm9pZD4mJiBwcm9taXNlKQoreworICAgIHNpemVfdCBzdGF0ZUluZGV4ID0gc3Rh
dGljX2Nhc3Q8c2l6ZV90PihzdGF0ZSk7CisgICAgaWYgKHN0YXRlSW5kZXggPj0gbV9zdGF0ZVJl
YWN0aW9ucy5zaXplKCkpCisgICAgICAgIG1fc3RhdGVSZWFjdGlvbnMuZ3JvdyhzdGF0ZUluZGV4
ICsgMSk7CisKKyAgICBtX3N0YXRlUmVhY3Rpb25zW3N0YXRlSW5kZXhdLmFwcGVuZChXVEZNb3Zl
KHByb21pc2UpKTsKK30KKwordm9pZCBXZWJLaXRBdWRpb0NvbnRleHQ6OnNldFN0YXRlKFN0YXRl
IHN0YXRlKQoreworICAgIGlmIChtX3N0YXRlID09IHN0YXRlKQorICAgICAgICByZXR1cm47CisK
KyAgICBtX3N0YXRlID0gc3RhdGU7CisgICAgbV9ldmVudFF1ZXVlLT5lbnF1ZXVlRXZlbnQoRXZl
bnQ6OmNyZWF0ZShldmVudE5hbWVzKCkuc3RhdGVjaGFuZ2VFdmVudCwgRXZlbnQ6OkNhbkJ1YmJs
ZTo6WWVzLCBFdmVudDo6SXNDYW5jZWxhYmxlOjpObykpOworCisgICAgc2l6ZV90IHN0YXRlSW5k
ZXggPSBzdGF0aWNfY2FzdDxzaXplX3Q+KHN0YXRlKTsKKyAgICBpZiAoc3RhdGVJbmRleCA+PSBt
X3N0YXRlUmVhY3Rpb25zLnNpemUoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgVmVjdG9yPERP
TVByb21pc2VEZWZlcnJlZDx2b2lkPj4gcmVhY3Rpb25zOworICAgIG1fc3RhdGVSZWFjdGlvbnNb
c3RhdGVJbmRleF0uc3dhcChyZWFjdGlvbnMpOworCisgICAgZm9yIChhdXRvJiBwcm9taXNlIDog
cmVhY3Rpb25zKQorICAgICAgICBwcm9taXNlLnJlc29sdmUoKTsKK30KKwordm9pZCBXZWJLaXRB
dWRpb0NvbnRleHQ6OnN0b3AoKQoreworICAgIEFMV0FZU19MT0coTE9HSURFTlRJRklFUik7CisK
KyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworCisgICAgLy8gVXN1YWxseSBTY3JpcHRFeGVj
dXRpb25Db250ZXh0IGNhbGxzIHN0b3AgdHdpY2UuCisgICAgaWYgKG1faXNTdG9wU2NoZWR1bGVk
KQorICAgICAgICByZXR1cm47CisgICAgbV9pc1N0b3BTY2hlZHVsZWQgPSB0cnVlOworCisgICAg
QVNTRVJUKGRvY3VtZW50KCkpOworICAgIGRvY3VtZW50KCktPnVwZGF0ZUlzUGxheWluZ01lZGlh
KCk7CisKKyAgICB1bmluaXRpYWxpemUoKTsKKyAgICBjbGVhcigpOworfQorCit2b2lkIFdlYktp
dEF1ZGlvQ29udGV4dDo6c3VzcGVuZChSZWFzb25Gb3JTdXNwZW5zaW9uKQoreworICAgIGlmIChz
dGF0ZSgpID09IFN0YXRlOjpSdW5uaW5nKSB7CisgICAgICAgIG1fbWVkaWFTZXNzaW9uLT5iZWdp
bkludGVycnVwdGlvbihQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6UGxheWJhY2tTdXNwZW5kZWQpOwor
ICAgICAgICBkb2N1bWVudCgpLT51cGRhdGVJc1BsYXlpbmdNZWRpYSgpOworICAgIH0KK30KKwor
dm9pZCBXZWJLaXRBdWRpb0NvbnRleHQ6OnJlc3VtZSgpCit7CisgICAgaWYgKHN0YXRlKCkgPT0g
U3RhdGU6OkludGVycnVwdGVkKSB7CisgICAgICAgIG1fbWVkaWFTZXNzaW9uLT5lbmRJbnRlcnJ1
cHRpb24oUGxhdGZvcm1NZWRpYVNlc3Npb246Ok1heVJlc3VtZVBsYXlpbmcpOworICAgICAgICBk
b2N1bWVudCgpLT51cGRhdGVJc1BsYXlpbmdNZWRpYSgpOworICAgIH0KK30KKworY29uc3QgY2hh
ciogV2ViS2l0QXVkaW9Db250ZXh0OjphY3RpdmVET01PYmplY3ROYW1lKCkgY29uc3QKK3sKKyAg
ICByZXR1cm4gIldlYktpdEF1ZGlvQ29udGV4dCI7Cit9CisKK0RvY3VtZW50SWRlbnRpZmllciBX
ZWJLaXRBdWRpb0NvbnRleHQ6Omhvc3RpbmdEb2N1bWVudElkZW50aWZpZXIoKSBjb25zdAorewor
ICAgIGF1dG8qIGRvY3VtZW50ID0gZG93bmNhc3Q8RG9jdW1lbnQ+KG1fc2NyaXB0RXhlY3V0aW9u
Q29udGV4dCk7CisgICAgcmV0dXJuIGRvY3VtZW50ID8gZG9jdW1lbnQtPmlkZW50aWZpZXIoKSA6
IERvY3VtZW50SWRlbnRpZmllciB7IH07Cit9CisKK2Jvb2wgV2ViS2l0QXVkaW9Db250ZXh0Ojpp
c1N1c3BlbmRlZCgpIGNvbnN0Cit7CisgICAgcmV0dXJuICFkb2N1bWVudCgpIHx8IGRvY3VtZW50
KCktPmFjdGl2ZURPTU9iamVjdHNBcmVTdXNwZW5kZWQoKSB8fCBkb2N1bWVudCgpLT5hY3RpdmVE
T01PYmplY3RzQXJlU3RvcHBlZCgpOworfQorCit2b2lkIFdlYktpdEF1ZGlvQ29udGV4dDo6dmlz
aWJpbGl0eVN0YXRlQ2hhbmdlZCgpCit7CisgICAgLy8gRG8gbm90IHN1c3BlbmQgaWYgYXVkaW8g
aXMgYXVkaWJsZS4KKyAgICBpZiAoIWRvY3VtZW50KCkgfHwgbWVkaWFTdGF0ZSgpID09IE1lZGlh
UHJvZHVjZXI6OklzUGxheWluZ0F1ZGlvIHx8IG1faXNTdG9wU2NoZWR1bGVkKQorICAgICAgICBy
ZXR1cm47CisKKyAgICBpZiAoZG9jdW1lbnQoKS0+aGlkZGVuKCkpIHsKKyAgICAgICAgaWYgKHN0
YXRlKCkgPT0gU3RhdGU6OlJ1bm5pbmcpIHsKKyAgICAgICAgICAgIFJFTEVBU0VfTE9HX0lGX0FM
TE9XRUQoInZpc2liaWxpdHlTdGF0ZUNoYW5nZWQoKSBTdXNwZW5kaW5nIHBsYXliYWNrIGFmdGVy
IGdvaW5nIHRvIHRoZSBiYWNrZ3JvdW5kIik7CisgICAgICAgICAgICBtX21lZGlhU2Vzc2lvbi0+
YmVnaW5JbnRlcnJ1cHRpb24oUGxhdGZvcm1NZWRpYVNlc3Npb246OkVudGVyaW5nQmFja2dyb3Vu
ZCk7CisgICAgICAgIH0KKyAgICB9IGVsc2UgeworICAgICAgICBpZiAoc3RhdGUoKSA9PSBTdGF0
ZTo6SW50ZXJydXB0ZWQpIHsKKyAgICAgICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoInZp
c2liaWxpdHlTdGF0ZUNoYW5nZWQoKSBSZXN1bWluZyBwbGF5YmFjayBhZnRlciBlbnRlcmluZyBm
b3JlZ3JvdW5kIik7CisgICAgICAgICAgICBtX21lZGlhU2Vzc2lvbi0+ZW5kSW50ZXJydXB0aW9u
KFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpNYXlSZXN1bWVQbGF5aW5nKTsKKyAgICAgICAgfQorICAg
IH0KK30KKworYm9vbCBXZWJLaXRBdWRpb0NvbnRleHQ6OndvdWxkVGFpbnRPcmlnaW4oY29uc3Qg
VVJMJiB1cmwpIGNvbnN0Cit7CisgICAgaWYgKHVybC5wcm90b2NvbElzRGF0YSgpKQorICAgICAg
ICByZXR1cm4gZmFsc2U7CisKKyAgICBpZiAoYXV0byogZG9jdW1lbnQgPSB0aGlzLT5kb2N1bWVu
dCgpKQorICAgICAgICByZXR1cm4gIWRvY3VtZW50LT5zZWN1cml0eU9yaWdpbigpLmNhblJlcXVl
c3QodXJsKTsKKworICAgIHJldHVybiBmYWxzZTsKK30KKworRXhjZXB0aW9uT3I8UmVmPEF1ZGlv
QnVmZmVyPj4gV2ViS2l0QXVkaW9Db250ZXh0OjpjcmVhdGVCdWZmZXIodW5zaWduZWQgbnVtYmVy
T2ZDaGFubmVscywgc2l6ZV90IG51bWJlck9mRnJhbWVzLCBmbG9hdCBzYW1wbGVSYXRlKQorewor
ICAgIGF1dG8gYXVkaW9CdWZmZXIgPSBBdWRpb0J1ZmZlcjo6Y3JlYXRlKG51bWJlck9mQ2hhbm5l
bHMsIG51bWJlck9mRnJhbWVzLCBzYW1wbGVSYXRlKTsKKyAgICBpZiAoIWF1ZGlvQnVmZmVyKQor
ICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgTm90U3VwcG9ydGVkRXJyb3IgfTsKKyAgICByZXR1
cm4gYXVkaW9CdWZmZXIucmVsZWFzZU5vbk51bGwoKTsKK30KKworRXhjZXB0aW9uT3I8UmVmPEF1
ZGlvQnVmZmVyPj4gV2ViS2l0QXVkaW9Db250ZXh0OjpjcmVhdGVCdWZmZXIoQXJyYXlCdWZmZXIm
IGFycmF5QnVmZmVyLCBib29sIG1peFRvTW9ubykKK3sKKyAgICBhdXRvIGF1ZGlvQnVmZmVyID0g
QXVkaW9CdWZmZXI6OmNyZWF0ZUZyb21BdWRpb0ZpbGVEYXRhKGFycmF5QnVmZmVyLmRhdGEoKSwg
YXJyYXlCdWZmZXIuYnl0ZUxlbmd0aCgpLCBtaXhUb01vbm8sIHNhbXBsZVJhdGUoKSk7CisgICAg
aWYgKCFhdWRpb0J1ZmZlcikKKyAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IFN5bnRheEVycm9y
IH07CisgICAgcmV0dXJuIGF1ZGlvQnVmZmVyLnJlbGVhc2VOb25OdWxsKCk7Cit9CisKK3ZvaWQg
V2ViS2l0QXVkaW9Db250ZXh0OjpkZWNvZGVBdWRpb0RhdGEoUmVmPEFycmF5QnVmZmVyPiYmIGF1
ZGlvRGF0YSwgUmVmUHRyPEF1ZGlvQnVmZmVyQ2FsbGJhY2s+JiYgc3VjY2Vzc0NhbGxiYWNrLCBS
ZWZQdHI8QXVkaW9CdWZmZXJDYWxsYmFjaz4mJiBlcnJvckNhbGxiYWNrKQoreworICAgIGlmICgh
bV9hdWRpb0RlY29kZXIpCisgICAgICAgIG1fYXVkaW9EZWNvZGVyID0gbWFrZVVuaXF1ZTxBc3lu
Y0F1ZGlvRGVjb2Rlcj4oKTsKKyAgICBtX2F1ZGlvRGVjb2Rlci0+ZGVjb2RlQXN5bmMoV1RGTW92
ZShhdWRpb0RhdGEpLCBzYW1wbGVSYXRlKCksIFdURk1vdmUoc3VjY2Vzc0NhbGxiYWNrKSwgV1RG
TW92ZShlcnJvckNhbGxiYWNrKSk7Cit9CisKK0V4Y2VwdGlvbk9yPFJlZjxBdWRpb0J1ZmZlclNv
dXJjZU5vZGU+PiBXZWJLaXRBdWRpb0NvbnRleHQ6OmNyZWF0ZUJ1ZmZlclNvdXJjZSgpCit7Cisg
ICAgQUxXQVlTX0xPRyhMT0dJREVOVElGSUVSKTsKKworICAgIEFTU0VSVChpc01haW5UaHJlYWQo
KSk7CisKKyAgICBpZiAobV9pc1N0b3BTY2hlZHVsZWQpCisgICAgICAgIHJldHVybiBFeGNlcHRp
b24geyBJbnZhbGlkU3RhdGVFcnJvciB9OworCisgICAgbGF6eUluaXRpYWxpemUoKTsKKyAgICBS
ZWY8QXVkaW9CdWZmZXJTb3VyY2VOb2RlPiBub2RlID0gQXVkaW9CdWZmZXJTb3VyY2VOb2RlOjpj
cmVhdGUoKnRoaXMsIHNhbXBsZVJhdGUoKSk7CisKKyAgICAvLyBCZWNhdXNlIHRoaXMgaXMgYW4g
QXVkaW9TY2hlZHVsZWRTb3VyY2VOb2RlLCB0aGUgY29udGV4dCBrZWVwcyBhIHJlZmVyZW5jZSB1
bnRpbCBpdCBoYXMgZmluaXNoZWQgcGxheWluZy4KKyAgICAvLyBXaGVuIHRoaXMgaGFwcGVucywg
QXVkaW9TY2hlZHVsZWRTb3VyY2VOb2RlOjpmaW5pc2goKSBjYWxscyBXZWJLaXRBdWRpb0NvbnRl
eHQ6Om5vdGlmeU5vZGVGaW5pc2hlZFByb2Nlc3NpbmcoKS4KKyAgICByZWZOb2RlKG5vZGUpOwor
CisgICAgcmV0dXJuIG5vZGU7Cit9CisKKyNpZiBFTkFCTEUoVklERU8pCisKK0V4Y2VwdGlvbk9y
PFJlZjxNZWRpYUVsZW1lbnRBdWRpb1NvdXJjZU5vZGU+PiBXZWJLaXRBdWRpb0NvbnRleHQ6OmNy
ZWF0ZU1lZGlhRWxlbWVudFNvdXJjZShIVE1MTWVkaWFFbGVtZW50JiBtZWRpYUVsZW1lbnQpCit7
CisgICAgQUxXQVlTX0xPRyhMT0dJREVOVElGSUVSKTsKKworICAgIEFTU0VSVChpc01haW5UaHJl
YWQoKSk7CisKKyAgICBpZiAobV9pc1N0b3BTY2hlZHVsZWQgfHwgbWVkaWFFbGVtZW50LmF1ZGlv
U291cmNlTm9kZSgpKQorICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgSW52YWxpZFN0YXRlRXJy
b3IgfTsKKworICAgIGxhenlJbml0aWFsaXplKCk7CisKKyAgICBhdXRvIG5vZGUgPSBNZWRpYUVs
ZW1lbnRBdWRpb1NvdXJjZU5vZGU6OmNyZWF0ZSgqdGhpcywgbWVkaWFFbGVtZW50KTsKKworICAg
IG1lZGlhRWxlbWVudC5zZXRBdWRpb1NvdXJjZU5vZGUobm9kZS5wdHIoKSk7CisKKyAgICByZWZO
b2RlKG5vZGUuZ2V0KCkpOyAvLyBjb250ZXh0IGtlZXBzIHJlZmVyZW5jZSB1bnRpbCBub2RlIGlz
IGRpc2Nvbm5lY3RlZAorICAgIHJldHVybiBub2RlOworfQorCisjZW5kaWYKKworI2lmIEVOQUJM
RShNRURJQV9TVFJFQU0pCisKK0V4Y2VwdGlvbk9yPFJlZjxNZWRpYVN0cmVhbUF1ZGlvU291cmNl
Tm9kZT4+IFdlYktpdEF1ZGlvQ29udGV4dDo6Y3JlYXRlTWVkaWFTdHJlYW1Tb3VyY2UoTWVkaWFT
dHJlYW0mIG1lZGlhU3RyZWFtKQoreworICAgIEFMV0FZU19MT0coTE9HSURFTlRJRklFUik7CisK
KyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworCisgICAgaWYgKG1faXNTdG9wU2NoZWR1bGVk
KQorICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgSW52YWxpZFN0YXRlRXJyb3IgfTsKKworICAg
IGF1dG8gYXVkaW9UcmFja3MgPSBtZWRpYVN0cmVhbS5nZXRBdWRpb1RyYWNrcygpOworICAgIGlm
IChhdWRpb1RyYWNrcy5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBJbnZh
bGlkU3RhdGVFcnJvciB9OworCisgICAgTWVkaWFTdHJlYW1UcmFjayogcHJvdmlkZXJUcmFjayA9
IG51bGxwdHI7CisgICAgZm9yIChhdXRvJiB0cmFjayA6IGF1ZGlvVHJhY2tzKSB7CisgICAgICAg
IGlmICh0cmFjay0+YXVkaW9Tb3VyY2VQcm92aWRlcigpKSB7CisgICAgICAgICAgICBwcm92aWRl
clRyYWNrID0gdHJhY2suZ2V0KCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAg
IH0KKyAgICBpZiAoIXByb3ZpZGVyVHJhY2spCisgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBJ
bnZhbGlkU3RhdGVFcnJvciB9OworCisgICAgbGF6eUluaXRpYWxpemUoKTsKKworICAgIGF1dG8g
bm9kZSA9IE1lZGlhU3RyZWFtQXVkaW9Tb3VyY2VOb2RlOjpjcmVhdGUoKnRoaXMsIG1lZGlhU3Ry
ZWFtLCAqcHJvdmlkZXJUcmFjayk7CisgICAgbm9kZS0+c2V0Rm9ybWF0KDIsIHNhbXBsZVJhdGUo
KSk7CisKKyAgICByZWZOb2RlKG5vZGUpOyAvLyBjb250ZXh0IGtlZXBzIHJlZmVyZW5jZSB1bnRp
bCBub2RlIGlzIGRpc2Nvbm5lY3RlZAorICAgIHJldHVybiBub2RlOworfQorCitFeGNlcHRpb25P
cjxSZWY8TWVkaWFTdHJlYW1BdWRpb0Rlc3RpbmF0aW9uTm9kZT4+IFdlYktpdEF1ZGlvQ29udGV4
dDo6Y3JlYXRlTWVkaWFTdHJlYW1EZXN0aW5hdGlvbigpCit7CisgICAgaWYgKG1faXNTdG9wU2No
ZWR1bGVkKQorICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgSW52YWxpZFN0YXRlRXJyb3IgfTsK
KworICAgIC8vIEZJWE1FOiBBZGQgc3VwcG9ydCBmb3IgYW4gb3B0aW9uYWwgYXJndW1lbnQgd2hp
Y2ggc3BlY2lmaWVzIHRoZSBudW1iZXIgb2YgY2hhbm5lbHMuCisgICAgLy8gRklYTUU6IFRoZSBk
ZWZhdWx0IHNob3VsZCBwcm9iYWJseSBiZSBzdGVyZW8gaW5zdGVhZCBvZiBtb25vLgorICAgIHJl
dHVybiBNZWRpYVN0cmVhbUF1ZGlvRGVzdGluYXRpb25Ob2RlOjpjcmVhdGUoKnRoaXMsIDEpOwor
fQorCisjZW5kaWYKKworRXhjZXB0aW9uT3I8UmVmPFNjcmlwdFByb2Nlc3Nvck5vZGU+PiBXZWJL
aXRBdWRpb0NvbnRleHQ6OmNyZWF0ZVNjcmlwdFByb2Nlc3NvcihzaXplX3QgYnVmZmVyU2l6ZSwg
c2l6ZV90IG51bWJlck9mSW5wdXRDaGFubmVscywgc2l6ZV90IG51bWJlck9mT3V0cHV0Q2hhbm5l
bHMpCit7CisgICAgQUxXQVlTX0xPRyhMT0dJREVOVElGSUVSKTsKKworICAgIEFTU0VSVChpc01h
aW5UaHJlYWQoKSk7CisKKyAgICBpZiAobV9pc1N0b3BTY2hlZHVsZWQpCisgICAgICAgIHJldHVy
biBFeGNlcHRpb24geyBJbnZhbGlkU3RhdGVFcnJvciB9OworCisgICAgbGF6eUluaXRpYWxpemUo
KTsKKworICAgIC8vIFczQyBFZGl0b3IncyBEcmFmdCAwNiBKdW5lIDIwMTcKKyAgICAvLyAgaHR0
cHM6Ly93ZWJhdWRpby5naXRodWIuaW8vd2ViLWF1ZGlvLWFwaS8jd2lkbC1CYXNlQXVkaW9Db250
ZXh0LWNyZWF0ZVNjcmlwdFByb2Nlc3Nvci1TY3JpcHRQcm9jZXNzb3JOb2RlLXVuc2lnbmVkLWxv
bmctYnVmZmVyU2l6ZS11bnNpZ25lZC1sb25nLW51bWJlck9mSW5wdXRDaGFubmVscy11bnNpZ25l
ZC1sb25nLW51bWJlck9mT3V0cHV0Q2hhbm5lbHMKKworICAgIC8vIFRoZSBidWZmZXJTaXplIHBh
cmFtZXRlciBkZXRlcm1pbmVzIHRoZSBidWZmZXIgc2l6ZSBpbiB1bml0cyBvZiBzYW1wbGUtZnJh
bWVzLiBJZiBpdCdzIG5vdCBwYXNzZWQgaW4sCisgICAgLy8gb3IgaWYgdGhlIHZhbHVlIGlzIDAs
IHRoZW4gdGhlIGltcGxlbWVudGF0aW9uIHdpbGwgY2hvb3NlIHRoZSBiZXN0IGJ1ZmZlciBzaXpl
IGZvciB0aGUgZ2l2ZW4gZW52aXJvbm1lbnQsCisgICAgLy8gd2hpY2ggd2lsbCBiZSBjb25zdGFu
dCBwb3dlciBvZiAyIHRocm91Z2hvdXQgdGhlIGxpZmV0aW1lIG9mIHRoZSBub2RlLiAuLi4gSWYg
dGhlIHZhbHVlIG9mIHRoaXMgcGFyYW1ldGVyCisgICAgLy8gaXMgbm90IG9uZSBvZiB0aGUgYWxs
b3dlZCBwb3dlci1vZi0yIHZhbHVlcyBsaXN0ZWQgYWJvdmUsIGFuIEluZGV4U2l6ZUVycm9yIG11
c3QgYmUgdGhyb3duLgorICAgIHN3aXRjaCAoYnVmZmVyU2l6ZSkgeworICAgIGNhc2UgMDoKKyNp
ZiBVU0UoQVVESU9fU0VTU0lPTikKKyAgICAgICAgLy8gUGljayBhIHZhbHVlIGJldHdlZW4gMjU2
ICgyXjgpIGFuZCAxNjM4NCAoMl4xNCksIGJhc2VkIG9uIHRoZSBidWZmZXIgc2l6ZSBvZiB0aGUg
Y3VycmVudCBBdWRpb1Nlc3Npb246CisgICAgICAgIGJ1ZmZlclNpemUgPSAxIDw8IHN0ZDo6bWF4
PHNpemVfdD4oOCwgc3RkOjptaW48c2l6ZV90PigxNCwgc3RkOjpsb2cyKEF1ZGlvU2Vzc2lvbjo6
c2hhcmVkU2Vzc2lvbigpLmJ1ZmZlclNpemUoKSkpKTsKKyNlbHNlCisgICAgICAgIGJ1ZmZlclNp
emUgPSAyMDQ4OworI2VuZGlmCisgICAgICAgIGJyZWFrOworICAgIGNhc2UgMjU2OgorICAgIGNh
c2UgNTEyOgorICAgIGNhc2UgMTAyNDoKKyAgICBjYXNlIDIwNDg6CisgICAgY2FzZSA0MDk2Ogor
ICAgIGNhc2UgODE5MjoKKyAgICBjYXNlIDE2Mzg0OgorICAgICAgICBicmVhazsKKyAgICBkZWZh
dWx0OgorICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgSW5kZXhTaXplRXJyb3IgfTsKKyAgICB9
CisKKyAgICAvLyBBbiBJbmRleFNpemVFcnJvciBleGNlcHRpb24gbXVzdCBiZSB0aHJvd24gaWYg
YnVmZmVyU2l6ZSBvciBudW1iZXJPZklucHV0Q2hhbm5lbHMgb3IgbnVtYmVyT2ZPdXRwdXRDaGFu
bmVscworICAgIC8vIGFyZSBvdXRzaWRlIHRoZSB2YWxpZCByYW5nZS4gSXQgaXMgaW52YWxpZCBm
b3IgYm90aCBudW1iZXJPZklucHV0Q2hhbm5lbHMgYW5kIG51bWJlck9mT3V0cHV0Q2hhbm5lbHMg
dG8gYmUgemVyby4KKyAgICAvLyBJbiB0aGlzIGNhc2UgYW4gSW5kZXhTaXplRXJyb3IgbXVzdCBi
ZSB0aHJvd24uCisKKyAgICBpZiAoIW51bWJlck9mSW5wdXRDaGFubmVscyAmJiAhbnVtYmVyT2ZP
dXRwdXRDaGFubmVscykKKyAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IE5vdFN1cHBvcnRlZEVy
cm9yIH07CisKKyAgICAvLyBUaGlzIHBhcmFtZXRlciBbbnVtYmVyT2ZJbnB1dENoYW5uZWxzXSBk
ZXRlcm1pbmVzIHRoZSBudW1iZXIgb2YgY2hhbm5lbHMgZm9yIHRoaXMgbm9kZSdzIGlucHV0LiBW
YWx1ZXMgb2YKKyAgICAvLyB1cCB0byAzMiBtdXN0IGJlIHN1cHBvcnRlZC4gQSBOb3RTdXBwb3J0
ZWRFcnJvciBtdXN0IGJlIHRocm93biBpZiB0aGUgbnVtYmVyIG9mIGNoYW5uZWxzIGlzIG5vdCBz
dXBwb3J0ZWQuCisKKyAgICBpZiAobnVtYmVyT2ZJbnB1dENoYW5uZWxzID4gbWF4TnVtYmVyT2ZD
aGFubmVscygpKQorICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgTm90U3VwcG9ydGVkRXJyb3Ig
fTsKKworICAgIC8vIFRoaXMgcGFyYW1ldGVyIFtudW1iZXJPZk91dHB1dENoYW5uZWxzXSBkZXRl
cm1pbmVzIHRoZSBudW1iZXIgb2YgY2hhbm5lbHMgZm9yIHRoaXMgbm9kZSdzIG91dHB1dC4gVmFs
dWVzIG9mCisgICAgLy8gdXAgdG8gMzIgbXVzdCBiZSBzdXBwb3J0ZWQuIEEgTm90U3VwcG9ydGVk
RXJyb3IgbXVzdCBiZSB0aHJvd24gaWYgdGhlIG51bWJlciBvZiBjaGFubmVscyBpcyBub3Qgc3Vw
cG9ydGVkLgorCisgICAgaWYgKG51bWJlck9mT3V0cHV0Q2hhbm5lbHMgPiBtYXhOdW1iZXJPZkNo
YW5uZWxzKCkpCisgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBOb3RTdXBwb3J0ZWRFcnJvciB9
OworCisgICAgYXV0byBub2RlID0gU2NyaXB0UHJvY2Vzc29yTm9kZTo6Y3JlYXRlKCp0aGlzLCBz
YW1wbGVSYXRlKCksIGJ1ZmZlclNpemUsIG51bWJlck9mSW5wdXRDaGFubmVscywgbnVtYmVyT2ZP
dXRwdXRDaGFubmVscyk7CisKKyAgICByZWZOb2RlKG5vZGUpOyAvLyBjb250ZXh0IGtlZXBzIHJl
ZmVyZW5jZSB1bnRpbCB3ZSBzdG9wIG1ha2luZyBqYXZhc2NyaXB0IHJlbmRlcmluZyBjYWxsYmFj
a3MKKyAgICByZXR1cm4gbm9kZTsKK30KKworRXhjZXB0aW9uT3I8UmVmPEJpcXVhZEZpbHRlck5v
ZGU+PiBXZWJLaXRBdWRpb0NvbnRleHQ6OmNyZWF0ZUJpcXVhZEZpbHRlcigpCit7CisgICAgQUxX
QVlTX0xPRyhMT0dJREVOVElGSUVSKTsKKworICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7Cisg
ICAgaWYgKG1faXNTdG9wU2NoZWR1bGVkKQorICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgSW52
YWxpZFN0YXRlRXJyb3IgfTsKKworICAgIGxhenlJbml0aWFsaXplKCk7CisKKyAgICByZXR1cm4g
QmlxdWFkRmlsdGVyTm9kZTo6Y3JlYXRlKCp0aGlzLCBzYW1wbGVSYXRlKCkpOworfQorCitFeGNl
cHRpb25PcjxSZWY8V2F2ZVNoYXBlck5vZGU+PiBXZWJLaXRBdWRpb0NvbnRleHQ6OmNyZWF0ZVdh
dmVTaGFwZXIoKQoreworICAgIEFMV0FZU19MT0coTE9HSURFTlRJRklFUik7CisKKyAgICBBU1NF
UlQoaXNNYWluVGhyZWFkKCkpOworICAgIGlmIChtX2lzU3RvcFNjaGVkdWxlZCkKKyAgICAgICAg
cmV0dXJuIEV4Y2VwdGlvbiB7IEludmFsaWRTdGF0ZUVycm9yIH07CisKKyAgICBsYXp5SW5pdGlh
bGl6ZSgpOworICAgIHJldHVybiBXYXZlU2hhcGVyTm9kZTo6Y3JlYXRlKCp0aGlzKTsKK30KKwor
RXhjZXB0aW9uT3I8UmVmPFdlYktpdEF1ZGlvUGFubmVyTm9kZT4+IFdlYktpdEF1ZGlvQ29udGV4
dDo6Y3JlYXRlUGFubmVyKCkKK3sKKyAgICBBTFdBWVNfTE9HKExPR0lERU5USUZJRVIpOworCisg
ICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKyAgICBpZiAobV9pc1N0b3BTY2hlZHVsZWQpCisg
ICAgICAgIHJldHVybiBFeGNlcHRpb24geyBJbnZhbGlkU3RhdGVFcnJvciB9OworCisgICAgbGF6
eUluaXRpYWxpemUoKTsKKyAgICByZXR1cm4gV2ViS2l0QXVkaW9QYW5uZXJOb2RlOjpjcmVhdGUo
KnRoaXMsIHNhbXBsZVJhdGUoKSk7Cit9CisKK0V4Y2VwdGlvbk9yPFJlZjxDb252b2x2ZXJOb2Rl
Pj4gV2ViS2l0QXVkaW9Db250ZXh0OjpjcmVhdGVDb252b2x2ZXIoKQoreworICAgIEFMV0FZU19M
T0coTE9HSURFTlRJRklFUik7CisKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAgIGlm
IChtX2lzU3RvcFNjaGVkdWxlZCkKKyAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IEludmFsaWRT
dGF0ZUVycm9yIH07CisKKyAgICBsYXp5SW5pdGlhbGl6ZSgpOworICAgIHJldHVybiBDb252b2x2
ZXJOb2RlOjpjcmVhdGUoKnRoaXMsIHNhbXBsZVJhdGUoKSk7Cit9CisKK0V4Y2VwdGlvbk9yPFJl
ZjxEeW5hbWljc0NvbXByZXNzb3JOb2RlPj4gV2ViS2l0QXVkaW9Db250ZXh0OjpjcmVhdGVEeW5h
bWljc0NvbXByZXNzb3IoKQoreworICAgIEFMV0FZU19MT0coTE9HSURFTlRJRklFUik7CisKKyAg
ICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAgIGlmIChtX2lzU3RvcFNjaGVkdWxlZCkKKyAg
ICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IEludmFsaWRTdGF0ZUVycm9yIH07CisKKyAgICBsYXp5
SW5pdGlhbGl6ZSgpOworICAgIHJldHVybiBEeW5hbWljc0NvbXByZXNzb3JOb2RlOjpjcmVhdGUo
KnRoaXMsIHNhbXBsZVJhdGUoKSk7Cit9CisKK0V4Y2VwdGlvbk9yPFJlZjxBbmFseXNlck5vZGU+
PiBXZWJLaXRBdWRpb0NvbnRleHQ6OmNyZWF0ZUFuYWx5c2VyKCkKK3sKKyAgICBBTFdBWVNfTE9H
KExPR0lERU5USUZJRVIpOworCisgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKyAgICBpZiAo
bV9pc1N0b3BTY2hlZHVsZWQpCisgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBJbnZhbGlkU3Rh
dGVFcnJvciB9OworCisgICAgbGF6eUluaXRpYWxpemUoKTsKKyAgICByZXR1cm4gQW5hbHlzZXJO
b2RlOjpjcmVhdGUoKnRoaXMsIHNhbXBsZVJhdGUoKSk7Cit9CisKK0V4Y2VwdGlvbk9yPFJlZjxH
YWluTm9kZT4+IFdlYktpdEF1ZGlvQ29udGV4dDo6Y3JlYXRlR2FpbigpCit7CisgICAgQUxXQVlT
X0xPRyhMT0dJREVOVElGSUVSKTsKKworICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisgICAg
aWYgKG1faXNTdG9wU2NoZWR1bGVkKQorICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgSW52YWxp
ZFN0YXRlRXJyb3IgfTsKKworICAgIGxhenlJbml0aWFsaXplKCk7CisgICAgcmV0dXJuIEdhaW5O
b2RlOjpjcmVhdGUoKnRoaXMsIHNhbXBsZVJhdGUoKSk7Cit9CisKK0V4Y2VwdGlvbk9yPFJlZjxE
ZWxheU5vZGU+PiBXZWJLaXRBdWRpb0NvbnRleHQ6OmNyZWF0ZURlbGF5KGRvdWJsZSBtYXhEZWxh
eVRpbWUpCit7CisgICAgQUxXQVlTX0xPRyhMT0dJREVOVElGSUVSKTsKKworICAgIEFTU0VSVChp
c01haW5UaHJlYWQoKSk7CisgICAgaWYgKG1faXNTdG9wU2NoZWR1bGVkKQorICAgICAgICByZXR1
cm4gRXhjZXB0aW9uIHsgSW52YWxpZFN0YXRlRXJyb3IgfTsKKworICAgIGxhenlJbml0aWFsaXpl
KCk7CisgICAgcmV0dXJuIERlbGF5Tm9kZTo6Y3JlYXRlKCp0aGlzLCBzYW1wbGVSYXRlKCksIG1h
eERlbGF5VGltZSk7Cit9CisKK0V4Y2VwdGlvbk9yPFJlZjxDaGFubmVsU3BsaXR0ZXJOb2RlPj4g
V2ViS2l0QXVkaW9Db250ZXh0OjpjcmVhdGVDaGFubmVsU3BsaXR0ZXIoc2l6ZV90IG51bWJlck9m
T3V0cHV0cykKK3sKKyAgICBBTFdBWVNfTE9HKExPR0lERU5USUZJRVIpOworCisgICAgQVNTRVJU
KGlzTWFpblRocmVhZCgpKTsKKyAgICBpZiAobV9pc1N0b3BTY2hlZHVsZWQpCisgICAgICAgIHJl
dHVybiBFeGNlcHRpb24geyBJbnZhbGlkU3RhdGVFcnJvciB9OworCisgICAgbGF6eUluaXRpYWxp
emUoKTsKKyAgICBhdXRvIG5vZGUgPSBDaGFubmVsU3BsaXR0ZXJOb2RlOjpjcmVhdGUoKnRoaXMs
IHNhbXBsZVJhdGUoKSwgbnVtYmVyT2ZPdXRwdXRzKTsKKyAgICBpZiAoIW5vZGUpCisgICAgICAg
IHJldHVybiBFeGNlcHRpb24geyBJbmRleFNpemVFcnJvciB9OworICAgIHJldHVybiBub2RlLnJl
bGVhc2VOb25OdWxsKCk7Cit9CisKK0V4Y2VwdGlvbk9yPFJlZjxDaGFubmVsTWVyZ2VyTm9kZT4+
IFdlYktpdEF1ZGlvQ29udGV4dDo6Y3JlYXRlQ2hhbm5lbE1lcmdlcihzaXplX3QgbnVtYmVyT2ZJ
bnB1dHMpCit7CisgICAgQUxXQVlTX0xPRyhMT0dJREVOVElGSUVSKTsKKworICAgIEFTU0VSVChp
c01haW5UaHJlYWQoKSk7CisgICAgaWYgKG1faXNTdG9wU2NoZWR1bGVkKQorICAgICAgICByZXR1
cm4gRXhjZXB0aW9uIHsgSW52YWxpZFN0YXRlRXJyb3IgfTsKKworICAgIGxhenlJbml0aWFsaXpl
KCk7CisgICAgYXV0byBub2RlID0gQ2hhbm5lbE1lcmdlck5vZGU6OmNyZWF0ZSgqdGhpcywgc2Ft
cGxlUmF0ZSgpLCBudW1iZXJPZklucHV0cyk7CisgICAgaWYgKCFub2RlKQorICAgICAgICByZXR1
cm4gRXhjZXB0aW9uIHsgSW5kZXhTaXplRXJyb3IgfTsKKyAgICByZXR1cm4gbm9kZS5yZWxlYXNl
Tm9uTnVsbCgpOworfQorCitFeGNlcHRpb25PcjxSZWY8T3NjaWxsYXRvck5vZGU+PiBXZWJLaXRB
dWRpb0NvbnRleHQ6OmNyZWF0ZU9zY2lsbGF0b3IoKQoreworICAgIEFMV0FZU19MT0coTE9HSURF
TlRJRklFUik7CisKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAgIGlmIChtX2lzU3Rv
cFNjaGVkdWxlZCkKKyAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IEludmFsaWRTdGF0ZUVycm9y
IH07CisKKyAgICBsYXp5SW5pdGlhbGl6ZSgpOworCisgICAgUmVmPE9zY2lsbGF0b3JOb2RlPiBu
b2RlID0gT3NjaWxsYXRvck5vZGU6OmNyZWF0ZSgqdGhpcywgc2FtcGxlUmF0ZSgpKTsKKworICAg
IC8vIEJlY2F1c2UgdGhpcyBpcyBhbiBBdWRpb1NjaGVkdWxlZFNvdXJjZU5vZGUsIHRoZSBjb250
ZXh0IGtlZXBzIGEgcmVmZXJlbmNlIHVudGlsIGl0IGhhcyBmaW5pc2hlZCBwbGF5aW5nLgorICAg
IC8vIFdoZW4gdGhpcyBoYXBwZW5zLCBBdWRpb1NjaGVkdWxlZFNvdXJjZU5vZGU6OmZpbmlzaCgp
IGNhbGxzIFdlYktpdEF1ZGlvQ29udGV4dDo6bm90aWZ5Tm9kZUZpbmlzaGVkUHJvY2Vzc2luZygp
LgorICAgIHJlZk5vZGUobm9kZSk7CisKKyAgICByZXR1cm4gbm9kZTsKK30KKworRXhjZXB0aW9u
T3I8UmVmPFBlcmlvZGljV2F2ZT4+IFdlYktpdEF1ZGlvQ29udGV4dDo6Y3JlYXRlUGVyaW9kaWNX
YXZlKEZsb2F0MzJBcnJheSYgcmVhbCwgRmxvYXQzMkFycmF5JiBpbWFnaW5hcnkpCit7CisgICAg
QUxXQVlTX0xPRyhMT0dJREVOVElGSUVSKTsKKworICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7
CisgICAgaWYgKG1faXNTdG9wU2NoZWR1bGVkKQorICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsg
SW52YWxpZFN0YXRlRXJyb3IgfTsKKworICAgIGlmIChyZWFsLmxlbmd0aCgpICE9IGltYWdpbmFy
eS5sZW5ndGgoKSB8fCAocmVhbC5sZW5ndGgoKSA+IE1heFBlcmlvZGljV2F2ZUxlbmd0aCkgfHwg
IXJlYWwubGVuZ3RoKCkpCisgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBJbmRleFNpemVFcnJv
ciB9OworICAgIGxhenlJbml0aWFsaXplKCk7CisgICAgcmV0dXJuIFBlcmlvZGljV2F2ZTo6Y3Jl
YXRlKHNhbXBsZVJhdGUoKSwgcmVhbCwgaW1hZ2luYXJ5KTsKK30KKwordm9pZCBXZWJLaXRBdWRp
b0NvbnRleHQ6Om5vdGlmeU5vZGVGaW5pc2hlZFByb2Nlc3NpbmcoQXVkaW9Ob2RlKiBub2RlKQor
eworICAgIEFTU0VSVChpc0F1ZGlvVGhyZWFkKCkpOworICAgIG1fZmluaXNoZWROb2Rlcy5hcHBl
bmQobm9kZSk7Cit9CisKK3ZvaWQgV2ViS2l0QXVkaW9Db250ZXh0OjpkZXJlZkZpbmlzaGVkU291
cmNlTm9kZXMoKQoreworICAgIEFTU0VSVChpc0dyYXBoT3duZXIoKSk7CisgICAgQVNTRVJUKGlz
QXVkaW9UaHJlYWQoKSB8fCBpc0F1ZGlvVGhyZWFkRmluaXNoZWQoKSk7CisgICAgZm9yIChhdXRv
JiBub2RlIDogbV9maW5pc2hlZE5vZGVzKQorICAgICAgICBkZXJlZk5vZGUoKm5vZGUpOworCisg
ICAgbV9maW5pc2hlZE5vZGVzLmNsZWFyKCk7Cit9CisKK3ZvaWQgV2ViS2l0QXVkaW9Db250ZXh0
OjpyZWZOb2RlKEF1ZGlvTm9kZSYgbm9kZSkKK3sKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkp
OworICAgIEF1dG9Mb2NrZXIgbG9ja2VyKCp0aGlzKTsKKworICAgIG5vZGUucmVmKEF1ZGlvTm9k
ZTo6UmVmVHlwZUNvbm5lY3Rpb24pOworICAgIG1fcmVmZXJlbmNlZE5vZGVzLmFwcGVuZCgmbm9k
ZSk7Cit9CisKK3ZvaWQgV2ViS2l0QXVkaW9Db250ZXh0OjpkZXJlZk5vZGUoQXVkaW9Ob2RlJiBu
b2RlKQoreworICAgIEFTU0VSVChpc0dyYXBoT3duZXIoKSk7CisKKyAgICBub2RlLmRlcmVmKEF1
ZGlvTm9kZTo6UmVmVHlwZUNvbm5lY3Rpb24pOworCisgICAgQVNTRVJUKG1fcmVmZXJlbmNlZE5v
ZGVzLmNvbnRhaW5zKCZub2RlKSk7CisgICAgbV9yZWZlcmVuY2VkTm9kZXMucmVtb3ZlRmlyc3Qo
Jm5vZGUpOworfQorCit2b2lkIFdlYktpdEF1ZGlvQ29udGV4dDo6ZGVyZWZVbmZpbmlzaGVkU291
cmNlTm9kZXMoKQoreworICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSAmJiBpc0F1ZGlvVGhyZWFk
RmluaXNoZWQoKSk7CisgICAgZm9yIChhdXRvJiBub2RlIDogbV9yZWZlcmVuY2VkTm9kZXMpCisg
ICAgICAgIG5vZGUtPmRlcmVmKEF1ZGlvTm9kZTo6UmVmVHlwZUNvbm5lY3Rpb24pOworCisgICAg
bV9yZWZlcmVuY2VkTm9kZXMuY2xlYXIoKTsKK30KKwordm9pZCBXZWJLaXRBdWRpb0NvbnRleHQ6
OmxvY2soYm9vbCYgbXVzdFJlbGVhc2VMb2NrKQoreworICAgIC8vIERvbid0IGFsbG93IHJlZ3Vs
YXIgbG9jayBpbiByZWFsLXRpbWUgYXVkaW8gdGhyZWFkLgorICAgIEFTU0VSVChpc01haW5UaHJl
YWQoKSk7CisKKyAgICBUaHJlYWQmIHRoaXNUaHJlYWQgPSBUaHJlYWQ6OmN1cnJlbnQoKTsKKwor
ICAgIGlmICgmdGhpc1RocmVhZCA9PSBtX2dyYXBoT3duZXJUaHJlYWQpIHsKKyAgICAgICAgLy8g
V2UgYWxyZWFkeSBoYXZlIHRoZSBsb2NrLgorICAgICAgICBtdXN0UmVsZWFzZUxvY2sgPSBmYWxz
ZTsKKyAgICB9IGVsc2UgeworICAgICAgICAvLyBBY3F1aXJlIHRoZSBsb2NrLgorICAgICAgICBt
X2NvbnRleHRHcmFwaE11dGV4LmxvY2soKTsKKyAgICAgICAgbV9ncmFwaE93bmVyVGhyZWFkID0g
JnRoaXNUaHJlYWQ7CisgICAgICAgIG11c3RSZWxlYXNlTG9jayA9IHRydWU7CisgICAgfQorfQor
Citib29sIFdlYktpdEF1ZGlvQ29udGV4dDo6dHJ5TG9jayhib29sJiBtdXN0UmVsZWFzZUxvY2sp
Cit7CisgICAgVGhyZWFkJiB0aGlzVGhyZWFkID0gVGhyZWFkOjpjdXJyZW50KCk7CisgICAgYm9v
bCBpc0F1ZGlvVGhyZWFkID0gJnRoaXNUaHJlYWQgPT0gYXVkaW9UaHJlYWQoKTsKKworICAgIC8v
IFRyeSB0byBjYXRjaCBjYXNlcyBvZiB1c2luZyB0cnkgbG9jayBvbiBtYWluIHRocmVhZCAtIGl0
IHNob3VsZCB1c2UgcmVndWxhciBsb2NrLgorICAgIEFTU0VSVChpc0F1ZGlvVGhyZWFkIHx8IGlz
QXVkaW9UaHJlYWRGaW5pc2hlZCgpKTsKKworICAgIGlmICghaXNBdWRpb1RocmVhZCkgeworICAg
ICAgICAvLyBJbiByZWxlYXNlIGJ1aWxkIHRyZWF0IHRyeUxvY2soKSBhcyBsb2NrKCkgKHNpbmNl
IGFib3ZlIEFTU0VSVChpc0F1ZGlvVGhyZWFkKSBuZXZlciBmaXJlcykgLSB0aGlzIGlzIHRoZSBi
ZXN0IHdlIGNhbiBkby4KKyAgICAgICAgbG9jayhtdXN0UmVsZWFzZUxvY2spOworICAgICAgICBy
ZXR1cm4gdHJ1ZTsKKyAgICB9CisKKyAgICBib29sIGhhc0xvY2s7CisKKyAgICBpZiAoJnRoaXNU
aHJlYWQgPT0gbV9ncmFwaE93bmVyVGhyZWFkKSB7CisgICAgICAgIC8vIFRocmVhZCBhbHJlYWR5
IGhhcyB0aGUgbG9jay4KKyAgICAgICAgaGFzTG9jayA9IHRydWU7CisgICAgICAgIG11c3RSZWxl
YXNlTG9jayA9IGZhbHNlOworICAgIH0gZWxzZSB7CisgICAgICAgIC8vIERvbid0IGFscmVhZHkg
aGF2ZSB0aGUgbG9jayAtIHRyeSB0byBhY3F1aXJlIGl0LgorICAgICAgICBoYXNMb2NrID0gbV9j
b250ZXh0R3JhcGhNdXRleC50cnlMb2NrKCk7CisKKyAgICAgICAgaWYgKGhhc0xvY2spCisgICAg
ICAgICAgICBtX2dyYXBoT3duZXJUaHJlYWQgPSAmdGhpc1RocmVhZDsKKworICAgICAgICBtdXN0
UmVsZWFzZUxvY2sgPSBoYXNMb2NrOworICAgIH0KKworICAgIHJldHVybiBoYXNMb2NrOworfQor
Cit2b2lkIFdlYktpdEF1ZGlvQ29udGV4dDo6dW5sb2NrKCkKK3sKKyAgICBBU1NFUlQobV9ncmFw
aE93bmVyVGhyZWFkID09ICZUaHJlYWQ6OmN1cnJlbnQoKSk7CisKKyAgICBtX2dyYXBoT3duZXJU
aHJlYWQgPSBudWxscHRyOworICAgIG1fY29udGV4dEdyYXBoTXV0ZXgudW5sb2NrKCk7Cit9CisK
K2Jvb2wgV2ViS2l0QXVkaW9Db250ZXh0Ojppc0F1ZGlvVGhyZWFkKCkgY29uc3QKK3sKKyAgICBy
ZXR1cm4gbV9hdWRpb1RocmVhZCA9PSAmVGhyZWFkOjpjdXJyZW50KCk7Cit9CisKK2Jvb2wgV2Vi
S2l0QXVkaW9Db250ZXh0Ojppc0dyYXBoT3duZXIoKSBjb25zdAoreworICAgIHJldHVybiBtX2dy
YXBoT3duZXJUaHJlYWQgPT0gJlRocmVhZDo6Y3VycmVudCgpOworfQorCit2b2lkIFdlYktpdEF1
ZGlvQ29udGV4dDo6YWRkRGVmZXJyZWRGaW5pc2hEZXJlZihBdWRpb05vZGUqIG5vZGUpCit7Cisg
ICAgQVNTRVJUKGlzQXVkaW9UaHJlYWQoKSk7CisgICAgbV9kZWZlcnJlZEZpbmlzaERlcmVmTGlz
dC5hcHBlbmQobm9kZSk7Cit9CisKK3ZvaWQgV2ViS2l0QXVkaW9Db250ZXh0OjpoYW5kbGVQcmVS
ZW5kZXJUYXNrcygpCit7CisgICAgQVNTRVJUKGlzQXVkaW9UaHJlYWQoKSk7CisKKyAgICAvLyBB
dCB0aGUgYmVnaW5uaW5nIG9mIGV2ZXJ5IHJlbmRlciBxdWFudHVtLCB0cnkgdG8gdXBkYXRlIHRo
ZSBpbnRlcm5hbCByZW5kZXJpbmcgZ3JhcGggc3RhdGUgKGZyb20gbWFpbiB0aHJlYWQgY2hhbmdl
cykuCisgICAgLy8gSXQncyBPSyBpZiB0aGUgdHJ5TG9jaygpIGZhaWxzLCB3ZSdsbCBqdXN0IHRh
a2Ugc2xpZ2h0bHkgbG9uZ2VyIHRvIHBpY2sgdXAgdGhlIGNoYW5nZXMuCisgICAgYm9vbCBtdXN0
UmVsZWFzZUxvY2s7CisgICAgaWYgKHRyeUxvY2sobXVzdFJlbGVhc2VMb2NrKSkgeworICAgICAg
ICAvLyBGaXh1cCB0aGUgc3RhdGUgb2YgYW55IGRpcnR5IEF1ZGlvU3VtbWluZ0p1bmN0aW9ucyBh
bmQgQXVkaW9Ob2RlT3V0cHV0cy4KKyAgICAgICAgaGFuZGxlRGlydHlBdWRpb1N1bW1pbmdKdW5j
dGlvbnMoKTsKKyAgICAgICAgaGFuZGxlRGlydHlBdWRpb05vZGVPdXRwdXRzKCk7CisKKyAgICAg
ICAgdXBkYXRlQXV0b21hdGljUHVsbE5vZGVzKCk7CisKKyAgICAgICAgaWYgKG11c3RSZWxlYXNl
TG9jaykKKyAgICAgICAgICAgIHVubG9jaygpOworICAgIH0KK30KKwordm9pZCBXZWJLaXRBdWRp
b0NvbnRleHQ6OmhhbmRsZVBvc3RSZW5kZXJUYXNrcygpCit7CisgICAgQVNTRVJUKGlzQXVkaW9U
aHJlYWQoKSk7CisKKyAgICAvLyBNdXN0IHVzZSBhIHRyeUxvY2soKSBoZXJlIHRvby4gRG9uJ3Qg
d29ycnksIHRoZSBsb2NrIHdpbGwgdmVyeSByYXJlbHkgYmUgY29udGVuZGVkIGFuZCB0aGlzIG1l
dGhvZCBpcyBjYWxsZWQgZnJlcXVlbnRseS4KKyAgICAvLyBUaGUgd29yc3QgdGhhdCBjYW4gaGFw
cGVuIGlzIHRoYXQgdGhlcmUgd2lsbCBiZSBzb21lIG5vZGVzIHdoaWNoIHdpbGwgdGFrZSBzbGln
aHRseSBsb25nZXIgdGhhbiB1c3VhbCB0byBiZSBkZWxldGVkIG9yIHJlbW92ZWQKKyAgICAvLyBm
cm9tIHRoZSByZW5kZXIgZ3JhcGggKGluIHdoaWNoIGNhc2UgdGhleSdsbCByZW5kZXIgc2lsZW5j
ZSkuCisgICAgYm9vbCBtdXN0UmVsZWFzZUxvY2s7CisgICAgaWYgKHRyeUxvY2sobXVzdFJlbGVh
c2VMb2NrKSkgeworICAgICAgICAvLyBUYWtlIGNhcmUgb2YgZmluaXNoaW5nIGFueSBkZXJlZnMg
d2hlcmUgdGhlIHRyeUxvY2soKSBmYWlsZWQgcHJldmlvdXNseS4KKyAgICAgICAgaGFuZGxlRGVm
ZXJyZWRGaW5pc2hEZXJlZnMoKTsKKworICAgICAgICAvLyBEeW5hbWljYWxseSBjbGVhbiB1cCBu
b2RlcyB3aGljaCBhcmUgbm8gbG9uZ2VyIG5lZWRlZC4KKyAgICAgICAgZGVyZWZGaW5pc2hlZFNv
dXJjZU5vZGVzKCk7CisKKyAgICAgICAgLy8gRG9uJ3QgZGVsZXRlIGluIHRoZSByZWFsLXRpbWUg
dGhyZWFkLiBMZXQgdGhlIG1haW4gdGhyZWFkIGRvIGl0LgorICAgICAgICAvLyBSZWYtY291bnRl
ZCBvYmplY3RzIGhlbGQgYnkgY2VydGFpbiBBdWRpb05vZGVzIG1heSBub3QgYmUgdGhyZWFkLXNh
ZmUuCisgICAgICAgIHNjaGVkdWxlTm9kZURlbGV0aW9uKCk7CisKKyAgICAgICAgLy8gRml4dXAg
dGhlIHN0YXRlIG9mIGFueSBkaXJ0eSBBdWRpb1N1bW1pbmdKdW5jdGlvbnMgYW5kIEF1ZGlvTm9k
ZU91dHB1dHMuCisgICAgICAgIGhhbmRsZURpcnR5QXVkaW9TdW1taW5nSnVuY3Rpb25zKCk7Cisg
ICAgICAgIGhhbmRsZURpcnR5QXVkaW9Ob2RlT3V0cHV0cygpOworCisgICAgICAgIHVwZGF0ZUF1
dG9tYXRpY1B1bGxOb2RlcygpOworCisgICAgICAgIGlmIChtdXN0UmVsZWFzZUxvY2spCisgICAg
ICAgICAgICB1bmxvY2soKTsKKyAgICB9Cit9CisKK3ZvaWQgV2ViS2l0QXVkaW9Db250ZXh0Ojpo
YW5kbGVEZWZlcnJlZEZpbmlzaERlcmVmcygpCit7CisgICAgQVNTRVJUKGlzQXVkaW9UaHJlYWQo
KSAmJiBpc0dyYXBoT3duZXIoKSk7CisgICAgZm9yIChhdXRvJiBub2RlIDogbV9kZWZlcnJlZEZp
bmlzaERlcmVmTGlzdCkKKyAgICAgICAgbm9kZS0+ZmluaXNoRGVyZWYoQXVkaW9Ob2RlOjpSZWZU
eXBlQ29ubmVjdGlvbik7CisKKyAgICBtX2RlZmVycmVkRmluaXNoRGVyZWZMaXN0LmNsZWFyKCk7
Cit9CisKK3ZvaWQgV2ViS2l0QXVkaW9Db250ZXh0OjptYXJrRm9yRGVsZXRpb24oQXVkaW9Ob2Rl
JiBub2RlKQoreworICAgIEFTU0VSVChpc0dyYXBoT3duZXIoKSk7CisKKyAgICBpZiAoaXNBdWRp
b1RocmVhZEZpbmlzaGVkKCkpCisgICAgICAgIG1fbm9kZXNUb0RlbGV0ZS5hcHBlbmQoJm5vZGUp
OworICAgIGVsc2UKKyAgICAgICAgbV9ub2Rlc01hcmtlZEZvckRlbGV0aW9uLmFwcGVuZCgmbm9k
ZSk7CisKKyAgICAvLyBUaGlzIGlzIHByb2JhYmx5IHRoZSBiZXN0IHRpbWUgZm9yIHVzIHRvIHJl
bW92ZSB0aGUgbm9kZSBmcm9tIGF1dG9tYXRpYyBwdWxsIGxpc3QsCisgICAgLy8gc2luY2UgYWxs
IGNvbm5lY3Rpb25zIGFyZSBnb25lIGFuZCB3ZSBob2xkIHRoZSBncmFwaCBsb2NrLiBUaGVuIHdo
ZW4gaGFuZGxlUG9zdFJlbmRlclRhc2tzKCkKKyAgICAvLyBnZXRzIGEgY2hhbmNlIHRvIHNjaGVk
dWxlIHRoZSBkZWxldGlvbiB3b3JrLCB1cGRhdGVBdXRvbWF0aWNQdWxsTm9kZXMoKSBhbHNvIGdl
dHMgYSBjaGFuY2UgdG8KKyAgICAvLyBtb2RpZnkgbV9yZW5kZXJpbmdBdXRvbWF0aWNQdWxsTm9k
ZXMuCisgICAgcmVtb3ZlQXV0b21hdGljUHVsbE5vZGUobm9kZSk7Cit9CisKK3ZvaWQgV2ViS2l0
QXVkaW9Db250ZXh0OjpzY2hlZHVsZU5vZGVEZWxldGlvbigpCit7CisgICAgYm9vbCBpc0dvb2Qg
PSBtX2lzSW5pdGlhbGl6ZWQgJiYgaXNHcmFwaE93bmVyKCk7CisgICAgQVNTRVJUKGlzR29vZCk7
CisgICAgaWYgKCFpc0dvb2QpCisgICAgICAgIHJldHVybjsKKworICAgIC8vIE1ha2Ugc3VyZSB0
byBjYWxsIGRlbGV0ZU1hcmtlZE5vZGVzKCkgb24gbWFpbiB0aHJlYWQuCisgICAgaWYgKG1fbm9k
ZXNNYXJrZWRGb3JEZWxldGlvbi5zaXplKCkgJiYgIW1faXNEZWxldGlvblNjaGVkdWxlZCkgewor
ICAgICAgICBtX25vZGVzVG9EZWxldGUuYXBwZW5kVmVjdG9yKG1fbm9kZXNNYXJrZWRGb3JEZWxl
dGlvbik7CisgICAgICAgIG1fbm9kZXNNYXJrZWRGb3JEZWxldGlvbi5jbGVhcigpOworCisgICAg
ICAgIG1faXNEZWxldGlvblNjaGVkdWxlZCA9IHRydWU7CisKKyAgICAgICAgY2FsbE9uTWFpblRo
cmVhZChbcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpXSgpIG11dGFibGUgeworICAgICAg
ICAgICAgcHJvdGVjdGVkVGhpcy0+ZGVsZXRlTWFya2VkTm9kZXMoKTsKKyAgICAgICAgfSk7Cisg
ICAgfQorfQorCit2b2lkIFdlYktpdEF1ZGlvQ29udGV4dDo6ZGVsZXRlTWFya2VkTm9kZXMoKQor
eworICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisKKyAgICAvLyBQcm90ZWN0IHRoaXMgb2Jq
ZWN0IGZyb20gYmVpbmcgZGVsZXRlZCBiZWZvcmUgd2UgcmVsZWFzZSB0aGUgbXV0ZXggbG9ja2Vk
IGJ5IEF1dG9Mb2NrZXIuCisgICAgUmVmPFdlYktpdEF1ZGlvQ29udGV4dD4gcHJvdGVjdGVkVGhp
cygqdGhpcyk7CisgICAgeworICAgICAgICBBdXRvTG9ja2VyIGxvY2tlcigqdGhpcyk7CisKKyAg
ICAgICAgd2hpbGUgKG1fbm9kZXNUb0RlbGV0ZS5zaXplKCkpIHsKKyAgICAgICAgICAgIEF1ZGlv
Tm9kZSogbm9kZSA9IG1fbm9kZXNUb0RlbGV0ZS50YWtlTGFzdCgpOworCisgICAgICAgICAgICAv
LyBCZWZvcmUgZGVsZXRpbmcgdGhlIG5vZGUsIGNsZWFyIG91dCBhbnkgQXVkaW9Ob2RlSW5wdXRz
IGZyb20gbV9kaXJ0eVN1bW1pbmdKdW5jdGlvbnMuCisgICAgICAgICAgICB1bnNpZ25lZCBudW1i
ZXJPZklucHV0cyA9IG5vZGUtPm51bWJlck9mSW5wdXRzKCk7CisgICAgICAgICAgICBmb3IgKHVu
c2lnbmVkIGkgPSAwOyBpIDwgbnVtYmVyT2ZJbnB1dHM7ICsraSkKKyAgICAgICAgICAgICAgICBt
X2RpcnR5U3VtbWluZ0p1bmN0aW9ucy5yZW1vdmUobm9kZS0+aW5wdXQoaSkpOworCisgICAgICAg
ICAgICAvLyBCZWZvcmUgZGVsZXRpbmcgdGhlIG5vZGUsIGNsZWFyIG91dCBhbnkgQXVkaW9Ob2Rl
T3V0cHV0cyBmcm9tIG1fZGlydHlBdWRpb05vZGVPdXRwdXRzLgorICAgICAgICAgICAgdW5zaWdu
ZWQgbnVtYmVyT2ZPdXRwdXRzID0gbm9kZS0+bnVtYmVyT2ZPdXRwdXRzKCk7CisgICAgICAgICAg
ICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbnVtYmVyT2ZPdXRwdXRzOyArK2kpCisgICAgICAg
ICAgICAgICAgbV9kaXJ0eUF1ZGlvTm9kZU91dHB1dHMucmVtb3ZlKG5vZGUtPm91dHB1dChpKSk7
CisKKyAgICAgICAgICAgIC8vIEZpbmFsbHksIGRlbGV0ZSBpdC4KKyAgICAgICAgICAgIGRlbGV0
ZSBub2RlOworICAgICAgICB9CisgICAgICAgIG1faXNEZWxldGlvblNjaGVkdWxlZCA9IGZhbHNl
OworICAgIH0KK30KKwordm9pZCBXZWJLaXRBdWRpb0NvbnRleHQ6Om1hcmtTdW1taW5nSnVuY3Rp
b25EaXJ0eShBdWRpb1N1bW1pbmdKdW5jdGlvbiogc3VtbWluZ0p1bmN0aW9uKQoreworICAgIEFT
U0VSVChpc0dyYXBoT3duZXIoKSk7CisgICAgbV9kaXJ0eVN1bW1pbmdKdW5jdGlvbnMuYWRkKHN1
bW1pbmdKdW5jdGlvbik7Cit9CisKK3ZvaWQgV2ViS2l0QXVkaW9Db250ZXh0OjpyZW1vdmVNYXJr
ZWRTdW1taW5nSnVuY3Rpb24oQXVkaW9TdW1taW5nSnVuY3Rpb24qIHN1bW1pbmdKdW5jdGlvbikK
K3sKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAgIEF1dG9Mb2NrZXIgbG9ja2VyKCp0
aGlzKTsKKyAgICBtX2RpcnR5U3VtbWluZ0p1bmN0aW9ucy5yZW1vdmUoc3VtbWluZ0p1bmN0aW9u
KTsKK30KKwordm9pZCBXZWJLaXRBdWRpb0NvbnRleHQ6Om1hcmtBdWRpb05vZGVPdXRwdXREaXJ0
eShBdWRpb05vZGVPdXRwdXQqIG91dHB1dCkKK3sKKyAgICBBU1NFUlQoaXNHcmFwaE93bmVyKCkp
OworICAgIG1fZGlydHlBdWRpb05vZGVPdXRwdXRzLmFkZChvdXRwdXQpOworfQorCit2b2lkIFdl
YktpdEF1ZGlvQ29udGV4dDo6aGFuZGxlRGlydHlBdWRpb1N1bW1pbmdKdW5jdGlvbnMoKQorewor
ICAgIEFTU0VSVChpc0dyYXBoT3duZXIoKSk7CisKKyAgICBmb3IgKGF1dG8mIGp1bmN0aW9uIDog
bV9kaXJ0eVN1bW1pbmdKdW5jdGlvbnMpCisgICAgICAgIGp1bmN0aW9uLT51cGRhdGVSZW5kZXJp
bmdTdGF0ZSgpOworCisgICAgbV9kaXJ0eVN1bW1pbmdKdW5jdGlvbnMuY2xlYXIoKTsKK30KKwor
dm9pZCBXZWJLaXRBdWRpb0NvbnRleHQ6OmhhbmRsZURpcnR5QXVkaW9Ob2RlT3V0cHV0cygpCit7
CisgICAgQVNTRVJUKGlzR3JhcGhPd25lcigpKTsKKworICAgIGZvciAoYXV0byYgb3V0cHV0IDog
bV9kaXJ0eUF1ZGlvTm9kZU91dHB1dHMpCisgICAgICAgIG91dHB1dC0+dXBkYXRlUmVuZGVyaW5n
U3RhdGUoKTsKKworICAgIG1fZGlydHlBdWRpb05vZGVPdXRwdXRzLmNsZWFyKCk7Cit9CisKK3Zv
aWQgV2ViS2l0QXVkaW9Db250ZXh0OjphZGRBdXRvbWF0aWNQdWxsTm9kZShBdWRpb05vZGUmIG5v
ZGUpCit7CisgICAgQVNTRVJUKGlzR3JhcGhPd25lcigpKTsKKworICAgIGlmIChtX2F1dG9tYXRp
Y1B1bGxOb2Rlcy5hZGQoJm5vZGUpLmlzTmV3RW50cnkpCisgICAgICAgIG1fYXV0b21hdGljUHVs
bE5vZGVzTmVlZFVwZGF0aW5nID0gdHJ1ZTsKK30KKwordm9pZCBXZWJLaXRBdWRpb0NvbnRleHQ6
OnJlbW92ZUF1dG9tYXRpY1B1bGxOb2RlKEF1ZGlvTm9kZSYgbm9kZSkKK3sKKyAgICBBU1NFUlQo
aXNHcmFwaE93bmVyKCkpOworCisgICAgaWYgKG1fYXV0b21hdGljUHVsbE5vZGVzLnJlbW92ZSgm
bm9kZSkpCisgICAgICAgIG1fYXV0b21hdGljUHVsbE5vZGVzTmVlZFVwZGF0aW5nID0gdHJ1ZTsK
K30KKwordm9pZCBXZWJLaXRBdWRpb0NvbnRleHQ6OnVwZGF0ZUF1dG9tYXRpY1B1bGxOb2Rlcygp
Cit7CisgICAgQVNTRVJUKGlzR3JhcGhPd25lcigpKTsKKworICAgIGlmIChtX2F1dG9tYXRpY1B1
bGxOb2Rlc05lZWRVcGRhdGluZykgeworICAgICAgICAvLyBDb3B5IGZyb20gbV9hdXRvbWF0aWNQ
dWxsTm9kZXMgdG8gbV9yZW5kZXJpbmdBdXRvbWF0aWNQdWxsTm9kZXMuCisgICAgICAgIG1fcmVu
ZGVyaW5nQXV0b21hdGljUHVsbE5vZGVzLnJlc2l6ZShtX2F1dG9tYXRpY1B1bGxOb2Rlcy5zaXpl
KCkpOworCisgICAgICAgIHVuc2lnbmVkIGkgPSAwOworICAgICAgICBmb3IgKGF1dG8mIG91dHB1
dCA6IG1fYXV0b21hdGljUHVsbE5vZGVzKQorICAgICAgICAgICAgbV9yZW5kZXJpbmdBdXRvbWF0
aWNQdWxsTm9kZXNbaSsrXSA9IG91dHB1dDsKKworICAgICAgICBtX2F1dG9tYXRpY1B1bGxOb2Rl
c05lZWRVcGRhdGluZyA9IGZhbHNlOworICAgIH0KK30KKwordm9pZCBXZWJLaXRBdWRpb0NvbnRl
eHQ6OnByb2Nlc3NBdXRvbWF0aWNQdWxsTm9kZXMoc2l6ZV90IGZyYW1lc1RvUHJvY2VzcykKK3sK
KyAgICBBU1NFUlQoaXNBdWRpb1RocmVhZCgpKTsKKworICAgIGZvciAoYXV0byYgbm9kZSA6IG1f
cmVuZGVyaW5nQXV0b21hdGljUHVsbE5vZGVzKQorICAgICAgICBub2RlLT5wcm9jZXNzSWZOZWNl
c3NhcnkoZnJhbWVzVG9Qcm9jZXNzKTsKK30KKwordm9pZCBXZWJLaXRBdWRpb0NvbnRleHQ6Om5v
ZGVXaWxsQmVnaW5QbGF5YmFjaygpCit7CisgICAgLy8gQ2FsbGVkIGJ5IHNjaGVkdWxlZCBBdWRp
b05vZGVzIHdoZW4gY2xpZW50cyBzY2hlZHVsZSB0aGVpciBzdGFydCB0aW1lcy4KKyAgICAvLyBQ
cmlvciB0byB0aGUgaW50cm9kdWN0aW9uIG9mIHN1c3BlbmQoKSwgcmVzdW1lKCksIGFuZCBzdG9w
KCksIHN0YXJ0aW5nCisgICAgLy8gYSBzY2hlZHVsZWQgQXVkaW9Ob2RlIHdvdWxkIHJlbW92ZSB0
aGUgdXNlci1nZXN0dXJlIHJlc3RyaWN0aW9uLCBpZiBwcmVzZW50LAorICAgIC8vIGFuZCB3b3Vs
ZCB0aHVzIHVubXV0ZSB0aGUgY29udGV4dC4gTm93IHRoYXQgQXVkaW9Db250ZXh0IHN0YXlzIGlu
IHRoZQorICAgIC8vICJzdXNwZW5kZWQiIHN0YXRlIGlmIGEgdXNlci1nZXN0dXJlIHJlc3RyaWN0
aW9uIGlzIHByZXNlbnQsIHN0YXJ0aW5nIGEKKyAgICAvLyBzY2hlZHVsZSBBdWRpb05vZGUgc2hv
dWxkIHNldCB0aGUgc3RhdGUgdG8gInJ1bm5pbmciLCBidXQgb25seSBpZiB0aGUKKyAgICAvLyB1
c2VyLWdlc3R1cmUgcmVzdHJpY3Rpb24gaXMgc2V0LgorICAgIGlmICh1c2VyR2VzdHVyZVJlcXVp
cmVkRm9yQXVkaW9TdGFydCgpKQorICAgICAgICBzdGFydFJlbmRlcmluZygpOworfQorCitzdGF0
aWMgYm9vbCBzaG91bGREb2N1bWVudEFsbG93V2ViQXVkaW9Ub0F1dG9QbGF5KGNvbnN0IERvY3Vt
ZW50JiBkb2N1bWVudCkKK3sKKyAgICBpZiAoZG9jdW1lbnQucHJvY2Vzc2luZ1VzZXJHZXN0dXJl
Rm9yTWVkaWEoKSB8fCBkb2N1bWVudC5pc0NhcHR1cmluZygpKQorICAgICAgICByZXR1cm4gdHJ1
ZTsKKyAgICByZXR1cm4gZG9jdW1lbnQucXVpcmtzKCkuc2hvdWxkQXV0b3BsYXlXZWJBdWRpb0Zv
ckFyYml0cmFyeVVzZXJHZXN0dXJlKCkgJiYgZG9jdW1lbnQudG9wRG9jdW1lbnQoKS5oYXNIYWRV
c2VySW50ZXJhY3Rpb24oKTsKK30KKworYm9vbCBXZWJLaXRBdWRpb0NvbnRleHQ6OndpbGxCZWdp
blBsYXliYWNrKCkKK3sKKyAgICBhdXRvKiBkb2N1bWVudCA9IHRoaXMtPmRvY3VtZW50KCk7Cisg
ICAgaWYgKCFkb2N1bWVudCkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgaWYgKHVzZXJH
ZXN0dXJlUmVxdWlyZWRGb3JBdWRpb1N0YXJ0KCkpIHsKKyAgICAgICAgaWYgKCFzaG91bGREb2N1
bWVudEFsbG93V2ViQXVkaW9Ub0F1dG9QbGF5KCpkb2N1bWVudCkpIHsKKyAgICAgICAgICAgIEFM
V0FZU19MT0coTE9HSURFTlRJRklFUiwgInJldHVybmluZyBmYWxzZSwgbm90IHByb2Nlc3Npbmcg
dXNlciBnZXN0dXJlIG9yIGNhcHR1cmluZyIpOworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgICAgICB9CisgICAgICAgIHJlbW92ZUJlaGF2aW9yUmVzdHJpY3Rpb24oV2ViS2l0QXVkaW9D
b250ZXh0OjpSZXF1aXJlVXNlckdlc3R1cmVGb3JBdWRpb1N0YXJ0UmVzdHJpY3Rpb24pOworICAg
IH0KKworICAgIGlmIChwYWdlQ29uc2VudFJlcXVpcmVkRm9yQXVkaW9TdGFydCgpKSB7CisgICAg
ICAgIGF1dG8qIHBhZ2UgPSBkb2N1bWVudC0+cGFnZSgpOworICAgICAgICBpZiAocGFnZSAmJiAh
cGFnZS0+Y2FuU3RhcnRNZWRpYSgpKSB7CisgICAgICAgICAgICBkb2N1bWVudC0+YWRkTWVkaWFD
YW5TdGFydExpc3RlbmVyKCp0aGlzKTsKKyAgICAgICAgICAgIEFMV0FZU19MT0coTE9HSURFTlRJ
RklFUiwgInJldHVybmluZyBmYWxzZSwgcGFnZSBkb2Vzbid0IGFsbG93IG1lZGlhIHRvIHN0YXJ0
Iik7CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKyAgICAgICAgcmVtb3Zl
QmVoYXZpb3JSZXN0cmljdGlvbihXZWJLaXRBdWRpb0NvbnRleHQ6OlJlcXVpcmVQYWdlQ29uc2Vu
dEZvckF1ZGlvU3RhcnRSZXN0cmljdGlvbik7CisgICAgfQorCisgICAgYXV0byB3aWxsQmVnaW4g
PSBtX21lZGlhU2Vzc2lvbi0+Y2xpZW50V2lsbEJlZ2luUGxheWJhY2soKTsKKyAgICBBTFdBWVNf
TE9HKExPR0lERU5USUZJRVIsICJyZXR1cm5pbmcgIiwgd2lsbEJlZ2luKTsKKworICAgIHJldHVy
biB3aWxsQmVnaW47Cit9CisKK2Jvb2wgV2ViS2l0QXVkaW9Db250ZXh0Ojp3aWxsUGF1c2VQbGF5
YmFjaygpCit7CisgICAgYXV0byogZG9jdW1lbnQgPSB0aGlzLT5kb2N1bWVudCgpOworICAgIGlm
ICghZG9jdW1lbnQpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGlmICh1c2VyR2VzdHVy
ZVJlcXVpcmVkRm9yQXVkaW9TdGFydCgpKSB7CisgICAgICAgIGlmICghZG9jdW1lbnQtPnByb2Nl
c3NpbmdVc2VyR2VzdHVyZUZvck1lZGlhKCkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7Cisg
ICAgICAgIHJlbW92ZUJlaGF2aW9yUmVzdHJpY3Rpb24oV2ViS2l0QXVkaW9Db250ZXh0OjpSZXF1
aXJlVXNlckdlc3R1cmVGb3JBdWRpb1N0YXJ0UmVzdHJpY3Rpb24pOworICAgIH0KKworICAgIGlm
IChwYWdlQ29uc2VudFJlcXVpcmVkRm9yQXVkaW9TdGFydCgpKSB7CisgICAgICAgIGF1dG8qIHBh
Z2UgPSBkb2N1bWVudC0+cGFnZSgpOworICAgICAgICBpZiAocGFnZSAmJiAhcGFnZS0+Y2FuU3Rh
cnRNZWRpYSgpKSB7CisgICAgICAgICAgICBkb2N1bWVudC0+YWRkTWVkaWFDYW5TdGFydExpc3Rl
bmVyKCp0aGlzKTsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorICAgICAg
ICByZW1vdmVCZWhhdmlvclJlc3RyaWN0aW9uKFdlYktpdEF1ZGlvQ29udGV4dDo6UmVxdWlyZVBh
Z2VDb25zZW50Rm9yQXVkaW9TdGFydFJlc3RyaWN0aW9uKTsKKyAgICB9CisKKyAgICByZXR1cm4g
bV9tZWRpYVNlc3Npb24tPmNsaWVudFdpbGxQYXVzZVBsYXliYWNrKCk7Cit9CisKK3ZvaWQgV2Vi
S2l0QXVkaW9Db250ZXh0OjpzdGFydFJlbmRlcmluZygpCit7CisgICAgQUxXQVlTX0xPRyhMT0dJ
REVOVElGSUVSKTsKKyAgICBpZiAobV9pc1N0b3BTY2hlZHVsZWQgfHwgIXdpbGxCZWdpblBsYXli
YWNrKCkpCisgICAgICAgIHJldHVybjsKKworICAgIG1ha2VQZW5kaW5nQWN0aXZpdHkoKTsKKwor
ICAgIGRlc3RpbmF0aW9uKCktPnN0YXJ0UmVuZGVyaW5nKCk7CisgICAgc2V0U3RhdGUoU3RhdGU6
OlJ1bm5pbmcpOworfQorCit2b2lkIFdlYktpdEF1ZGlvQ29udGV4dDo6bWVkaWFDYW5TdGFydChE
b2N1bWVudCYgZG9jdW1lbnQpCit7CisgICAgQVNTRVJUX1VOVVNFRChkb2N1bWVudCwgJmRvY3Vt
ZW50ID09IHRoaXMtPmRvY3VtZW50KCkpOworICAgIHJlbW92ZUJlaGF2aW9yUmVzdHJpY3Rpb24o
V2ViS2l0QXVkaW9Db250ZXh0OjpSZXF1aXJlUGFnZUNvbnNlbnRGb3JBdWRpb1N0YXJ0UmVzdHJp
Y3Rpb24pOworICAgIG1heVJlc3VtZVBsYXliYWNrKHRydWUpOworfQorCitNZWRpYVByb2R1Y2Vy
OjpNZWRpYVN0YXRlRmxhZ3MgV2ViS2l0QXVkaW9Db250ZXh0OjptZWRpYVN0YXRlKCkgY29uc3QK
K3sKKyAgICBpZiAoIW1faXNTdG9wU2NoZWR1bGVkICYmIG1fZGVzdGluYXRpb25Ob2RlICYmIG1f
ZGVzdGluYXRpb25Ob2RlLT5pc1BsYXlpbmdBdWRpbygpKQorICAgICAgICByZXR1cm4gTWVkaWFQ
cm9kdWNlcjo6SXNQbGF5aW5nQXVkaW87CisKKyAgICByZXR1cm4gTWVkaWFQcm9kdWNlcjo6SXNO
b3RQbGF5aW5nOworfQorCit2b2lkIFdlYktpdEF1ZGlvQ29udGV4dDo6cGFnZU11dGVkU3RhdGVE
aWRDaGFuZ2UoKQoreworICAgIGlmIChtX2Rlc3RpbmF0aW9uTm9kZSAmJiBkb2N1bWVudCgpICYm
IGRvY3VtZW50KCktPnBhZ2UoKSkKKyAgICAgICAgbV9kZXN0aW5hdGlvbk5vZGUtPnNldE11dGVk
KGRvY3VtZW50KCktPnBhZ2UoKS0+aXNBdWRpb011dGVkKCkpOworfQorCit2b2lkIFdlYktpdEF1
ZGlvQ29udGV4dDo6aXNQbGF5aW5nQXVkaW9EaWRDaGFuZ2UoKQoreworICAgIC8vIE1ha2Ugc3Vy
ZSB0byBjYWxsIERvY3VtZW50Ojp1cGRhdGVJc1BsYXlpbmdNZWRpYSgpIG9uIHRoZSBtYWluIHRo
cmVhZCwgc2luY2UKKyAgICAvLyB3ZSBjb3VsZCBiZSBvbiB0aGUgYXVkaW8gSS9PIHRocmVhZCBo
ZXJlIGFuZCB0aGUgY2FsbCBpbnRvIFdlYkNvcmUgY291bGQgYmxvY2suCisgICAgY2FsbE9uTWFp
blRocmVhZChbcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpXSB7CisgICAgICAgIGlmIChw
cm90ZWN0ZWRUaGlzLT5kb2N1bWVudCgpKQorICAgICAgICAgICAgcHJvdGVjdGVkVGhpcy0+ZG9j
dW1lbnQoKS0+dXBkYXRlSXNQbGF5aW5nTWVkaWEoKTsKKyAgICB9KTsKK30KKwordm9pZCBXZWJL
aXRBdWRpb0NvbnRleHQ6OmZpbmlzaGVkUmVuZGVyaW5nKGJvb2wgZGlkUmVuZGVyaW5nKQorewor
ICAgIEFTU0VSVChpc09mZmxpbmVDb250ZXh0KCkpOworICAgIEFTU0VSVChpc01haW5UaHJlYWQo
KSk7CisgICAgaWYgKCFpc01haW5UaHJlYWQoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgYXV0
byBjbGVhclBlbmRpbmdBY3Rpdml0eUlmRXhpdEVhcmx5ID0gV1RGOjptYWtlU2NvcGVFeGl0KFt0
aGlzXSB7CisgICAgICAgIGNsZWFyUGVuZGluZ0FjdGl2aXR5KCk7CisgICAgfSk7CisKKworICAg
IEFMV0FZU19MT0coTE9HSURFTlRJRklFUik7CisKKyAgICBpZiAoIWRpZFJlbmRlcmluZykKKyAg
ICAgICAgcmV0dXJuOworCisgICAgQXVkaW9CdWZmZXIqIHJlbmRlcmVkQnVmZmVyID0gbV9yZW5k
ZXJUYXJnZXQuZ2V0KCk7CisgICAgc2V0U3RhdGUoU3RhdGU6OkNsb3NlZCk7CisKKyAgICBBU1NF
UlQocmVuZGVyZWRCdWZmZXIpOworICAgIGlmICghcmVuZGVyZWRCdWZmZXIpCisgICAgICAgIHJl
dHVybjsKKworICAgIC8vIEF2b2lkIGZpcmluZyB0aGUgZXZlbnQgaWYgdGhlIGRvY3VtZW50IGhh
cyBhbHJlYWR5IGdvbmUgYXdheS4KKyAgICBpZiAobV9pc1N0b3BTY2hlZHVsZWQpCisgICAgICAg
IHJldHVybjsKKworICAgIGNsZWFyUGVuZGluZ0FjdGl2aXR5SWZFeGl0RWFybHkucmVsZWFzZSgp
OworICAgIG1fZXZlbnRRdWV1ZS0+ZW5xdWV1ZUV2ZW50KE9mZmxpbmVBdWRpb0NvbXBsZXRpb25F
dmVudDo6Y3JlYXRlKHJlbmRlcmVkQnVmZmVyKSk7Cit9CisKK3ZvaWQgV2ViS2l0QXVkaW9Db250
ZXh0OjpkaXNwYXRjaEV2ZW50KEV2ZW50JiBldmVudCkKK3sKKyAgICBFdmVudFRhcmdldDo6ZGlz
cGF0Y2hFdmVudChldmVudCk7CisgICAgaWYgKGV2ZW50LmV2ZW50SW50ZXJmYWNlKCkgPT0gT2Zm
bGluZUF1ZGlvQ29tcGxldGlvbkV2ZW50SW50ZXJmYWNlVHlwZSkKKyAgICAgICAgY2xlYXJQZW5k
aW5nQWN0aXZpdHkoKTsKK30KKwordm9pZCBXZWJLaXRBdWRpb0NvbnRleHQ6OmluY3JlbWVudEFj
dGl2ZVNvdXJjZUNvdW50KCkKK3sKKyAgICArK21fYWN0aXZlU291cmNlQ291bnQ7Cit9CisKK3Zv
aWQgV2ViS2l0QXVkaW9Db250ZXh0OjpkZWNyZW1lbnRBY3RpdmVTb3VyY2VDb3VudCgpCit7Cisg
ICAgLS1tX2FjdGl2ZVNvdXJjZUNvdW50OworfQorCit2b2lkIFdlYktpdEF1ZGlvQ29udGV4dDo6
c3VzcGVuZFJlbmRlcmluZyhET01Qcm9taXNlRGVmZXJyZWQ8dm9pZD4mJiBwcm9taXNlKQorewor
ICAgIGlmIChpc09mZmxpbmVDb250ZXh0KCkgfHwgbV9pc1N0b3BTY2hlZHVsZWQpIHsKKyAgICAg
ICAgcHJvbWlzZS5yZWplY3QoSW52YWxpZFN0YXRlRXJyb3IpOworICAgICAgICByZXR1cm47Cisg
ICAgfQorCisgICAgaWYgKG1fc3RhdGUgPT0gU3RhdGU6OlN1c3BlbmRlZCkgeworICAgICAgICBw
cm9taXNlLnJlc29sdmUoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlmIChtX3N0
YXRlID09IFN0YXRlOjpDbG9zZWQgfHwgbV9zdGF0ZSA9PSBTdGF0ZTo6SW50ZXJydXB0ZWQgfHwg
IW1fZGVzdGluYXRpb25Ob2RlKSB7CisgICAgICAgIHByb21pc2UucmVqZWN0KCk7CisgICAgICAg
IHJldHVybjsKKyAgICB9CisKKyAgICBhZGRSZWFjdGlvbihTdGF0ZTo6U3VzcGVuZGVkLCBXVEZN
b3ZlKHByb21pc2UpKTsKKworICAgIGlmICghd2lsbFBhdXNlUGxheWJhY2soKSkKKyAgICAgICAg
cmV0dXJuOworCisgICAgbGF6eUluaXRpYWxpemUoKTsKKworICAgIG1fZGVzdGluYXRpb25Ob2Rl
LT5zdXNwZW5kKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyldIHsKKyAgICAg
ICAgc2V0U3RhdGUoU3RhdGU6OlN1c3BlbmRlZCk7CisgICAgfSk7Cit9CisKK3ZvaWQgV2ViS2l0
QXVkaW9Db250ZXh0OjpyZXN1bWVSZW5kZXJpbmcoRE9NUHJvbWlzZURlZmVycmVkPHZvaWQ+JiYg
cHJvbWlzZSkKK3sKKyAgICBpZiAoaXNPZmZsaW5lQ29udGV4dCgpIHx8IG1faXNTdG9wU2NoZWR1
bGVkKSB7CisgICAgICAgIHByb21pc2UucmVqZWN0KEludmFsaWRTdGF0ZUVycm9yKTsKKyAgICAg
ICAgcmV0dXJuOworICAgIH0KKworICAgIGlmIChtX3N0YXRlID09IFN0YXRlOjpSdW5uaW5nKSB7
CisgICAgICAgIHByb21pc2UucmVzb2x2ZSgpOworICAgICAgICByZXR1cm47CisgICAgfQorCisg
ICAgaWYgKG1fc3RhdGUgPT0gU3RhdGU6OkNsb3NlZCB8fCAhbV9kZXN0aW5hdGlvbk5vZGUpIHsK
KyAgICAgICAgcHJvbWlzZS5yZWplY3QoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAg
IGFkZFJlYWN0aW9uKFN0YXRlOjpSdW5uaW5nLCBXVEZNb3ZlKHByb21pc2UpKTsKKworICAgIGlm
ICghd2lsbEJlZ2luUGxheWJhY2soKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgbGF6eUluaXRp
YWxpemUoKTsKKworICAgIG1fZGVzdGluYXRpb25Ob2RlLT5yZXN1bWUoW3RoaXMsIHByb3RlY3Rl
ZFRoaXMgPSBtYWtlUmVmKCp0aGlzKV0geworICAgICAgICBzZXRTdGF0ZShTdGF0ZTo6UnVubmlu
Zyk7CisgICAgfSk7Cit9CisKK3ZvaWQgV2ViS2l0QXVkaW9Db250ZXh0OjpjbG9zZShET01Qcm9t
aXNlRGVmZXJyZWQ8dm9pZD4mJiBwcm9taXNlKQoreworICAgIGlmIChpc09mZmxpbmVDb250ZXh0
KCkgfHwgbV9pc1N0b3BTY2hlZHVsZWQpIHsKKyAgICAgICAgcHJvbWlzZS5yZWplY3QoSW52YWxp
ZFN0YXRlRXJyb3IpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgaWYgKG1fc3RhdGUg
PT0gU3RhdGU6OkNsb3NlZCB8fCAhbV9kZXN0aW5hdGlvbk5vZGUpIHsKKyAgICAgICAgcHJvbWlz
ZS5yZXNvbHZlKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBhZGRSZWFjdGlvbihT
dGF0ZTo6Q2xvc2VkLCBXVEZNb3ZlKHByb21pc2UpKTsKKworICAgIGxhenlJbml0aWFsaXplKCk7
CisKKyAgICBtX2Rlc3RpbmF0aW9uTm9kZS0+Y2xvc2UoW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBt
YWtlUmVmKCp0aGlzKV0geworICAgICAgICBzZXRTdGF0ZShTdGF0ZTo6Q2xvc2VkKTsKKyAgICAg
ICAgdW5pbml0aWFsaXplKCk7CisgICAgfSk7Cit9CisKKwordm9pZCBXZWJLaXRBdWRpb0NvbnRl
eHQ6OnN1c3BlbmRQbGF5YmFjaygpCit7CisgICAgaWYgKCFtX2Rlc3RpbmF0aW9uTm9kZSB8fCBt
X3N0YXRlID09IFN0YXRlOjpDbG9zZWQpCisgICAgICAgIHJldHVybjsKKworICAgIGlmIChtX3N0
YXRlID09IFN0YXRlOjpTdXNwZW5kZWQpIHsKKyAgICAgICAgaWYgKG1fbWVkaWFTZXNzaW9uLT5z
dGF0ZSgpID09IFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpJbnRlcnJ1cHRlZCkKKyAgICAgICAgICAg
IHNldFN0YXRlKFN0YXRlOjpJbnRlcnJ1cHRlZCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisK
KyAgICBsYXp5SW5pdGlhbGl6ZSgpOworCisgICAgbV9kZXN0aW5hdGlvbk5vZGUtPnN1c3BlbmQo
W3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKV0geworICAgICAgICBib29sIGlu
dGVycnVwdGVkID0gbV9tZWRpYVNlc3Npb24tPnN0YXRlKCkgPT0gUGxhdGZvcm1NZWRpYVNlc3Np
b246OkludGVycnVwdGVkOworICAgICAgICBzZXRTdGF0ZShpbnRlcnJ1cHRlZCA/IFN0YXRlOjpJ
bnRlcnJ1cHRlZCA6IFN0YXRlOjpTdXNwZW5kZWQpOworICAgIH0pOworfQorCit2b2lkIFdlYktp
dEF1ZGlvQ29udGV4dDo6bWF5UmVzdW1lUGxheWJhY2soYm9vbCBzaG91bGRSZXN1bWUpCit7Cisg
ICAgaWYgKCFtX2Rlc3RpbmF0aW9uTm9kZSB8fCBtX3N0YXRlID09IFN0YXRlOjpDbG9zZWQgfHwg
bV9zdGF0ZSA9PSBTdGF0ZTo6UnVubmluZykKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKCFz
aG91bGRSZXN1bWUpIHsKKyAgICAgICAgc2V0U3RhdGUoU3RhdGU6OlN1c3BlbmRlZCk7CisgICAg
ICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpZiAoIXdpbGxCZWdpblBsYXliYWNrKCkpCisgICAg
ICAgIHJldHVybjsKKworICAgIGxhenlJbml0aWFsaXplKCk7CisKKyAgICBtX2Rlc3RpbmF0aW9u
Tm9kZS0+cmVzdW1lKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyldIHsKKyAg
ICAgICAgc2V0U3RhdGUoU3RhdGU6OlJ1bm5pbmcpOworICAgIH0pOworfQorCit2b2lkIFdlYktp
dEF1ZGlvQ29udGV4dDo6cG9zdFRhc2soV1RGOjpGdW5jdGlvbjx2b2lkKCk+JiYgdGFzaykKK3sK
KyAgICBpZiAobV9pc1N0b3BTY2hlZHVsZWQpCisgICAgICAgIHJldHVybjsKKworICAgIG1fc2Ny
aXB0RXhlY3V0aW9uQ29udGV4dC0+cG9zdFRhc2soV1RGTW92ZSh0YXNrKSk7Cit9CisKK2NvbnN0
IFNlY3VyaXR5T3JpZ2luKiBXZWJLaXRBdWRpb0NvbnRleHQ6Om9yaWdpbigpIGNvbnN0Cit7Cisg
ICAgcmV0dXJuIG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dCA/IG1fc2NyaXB0RXhlY3V0aW9uQ29u
dGV4dC0+c2VjdXJpdHlPcmlnaW4oKSA6IG51bGxwdHI7Cit9CisKK3ZvaWQgV2ViS2l0QXVkaW9D
b250ZXh0OjphZGRDb25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNlIHNvdXJjZSwgTWVzc2FnZUxl
dmVsIGxldmVsLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCit7CisgICAgaWYgKG1fc2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCkKKyAgICAgICAgbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0LT5hZGRDb25z
b2xlTWVzc2FnZShzb3VyY2UsIGxldmVsLCBtZXNzYWdlKTsKK30KKwordm9pZCBXZWJLaXRBdWRp
b0NvbnRleHQ6OmNsZWFyUGVuZGluZ0FjdGl2aXR5KCkKK3sKKyAgICBpZiAoIW1fcGVuZGluZ0Fj
dGl2aXR5KQorICAgICAgICByZXR1cm47CisgICAgbV9wZW5kaW5nQWN0aXZpdHkgPSBudWxscHRy
OworICAgIC8vIEZJWE1FOiBSZW1vdmUgdGhpcyBzcGVjaWZpYyBkZXJlZigpIGFuZCByZWYoKSBj
YWxsIGluIG1ha2VQZW5kaW5nQWN0aXZpdHkoKS4KKyAgICBkZXJlZigpOworfQorCit2b2lkIFdl
YktpdEF1ZGlvQ29udGV4dDo6bWFrZVBlbmRpbmdBY3Rpdml0eSgpCit7CisgICAgaWYgKG1fcGVu
ZGluZ0FjdGl2aXR5KQorICAgICAgICByZXR1cm47CisgICAgbV9wZW5kaW5nQWN0aXZpdHkgPSBB
Y3RpdmVET01PYmplY3Q6Om1ha2VQZW5kaW5nQWN0aXZpdHkoKnRoaXMpOworICAgIHJlZigpOwor
fQorCisjaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECitXVEZMb2dDaGFubmVsJiBXZWJLaXRBdWRp
b0NvbnRleHQ6OmxvZ0NoYW5uZWwoKSBjb25zdAoreworICAgIHJldHVybiBMb2dNZWRpYTsKK30K
KyNlbmRpZgorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoV0VC
X0FVRElPKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9XZWJL
aXRBdWRpb0NvbnRleHQuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vV2ViS2l0
QXVkaW9Db250ZXh0LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLmNl
MmQwOWExZjEyCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJh
dWRpby9XZWJLaXRBdWRpb0NvbnRleHQuaApAQCAtMCwwICsxLDQzMSBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJp
Z2h0IChDKSAyMDE2LTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisg
KiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04K
KyAqIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUworICogU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJBY3RpdmVET01PYmplY3QuaCIKKyNpbmNsdWRl
ICJBc3luY0F1ZGlvRGVjb2Rlci5oIgorI2luY2x1ZGUgIkF1ZGlvQnVzLmgiCisjaW5jbHVkZSAi
QXVkaW9Db250ZXh0LmgiCisjaW5jbHVkZSAiQXVkaW9Db250ZXh0U3RhdGUuaCIKKyNpbmNsdWRl
ICJBdWRpb0Rlc3RpbmF0aW9uTm9kZS5oIgorI2luY2x1ZGUgIkV2ZW50VGFyZ2V0LmgiCisjaW5j
bHVkZSAiTWVkaWFDYW5TdGFydExpc3RlbmVyLmgiCisjaW5jbHVkZSAiTWVkaWFQcm9kdWNlci5o
IgorI2luY2x1ZGUgIlBsYXRmb3JtTWVkaWFTZXNzaW9uLmgiCisjaW5jbHVkZSAiU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dC5oIgorI2luY2x1ZGUgIlZpc2liaWxpdHlDaGFuZ2VDbGllbnQuaCIKKyNp
bmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9Db25zb2xlVHlwZXMuaD4KKyNpbmNsdWRlIDxKYXZhU2Ny
aXB0Q29yZS9GbG9hdDMyQXJyYXkuaD4KKyNpbmNsdWRlIDxhdG9taWM+CisjaW5jbHVkZSA8d3Rm
L0hhc2hTZXQuaD4KKyNpbmNsdWRlIDx3dGYvTG9nZ2VySGVscGVyLmg+CisjaW5jbHVkZSA8d3Rm
L01haW5UaHJlYWQuaD4KKyNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CisjaW5jbHVkZSA8d3RmL1Ro
cmVhZFNhZmVSZWZDb3VudGVkLmg+CisjaW5jbHVkZSA8d3RmL1RocmVhZGluZy5oPgorI2luY2x1
ZGUgPHd0Zi9VbmlxdWVSZWYuaD4KKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisjaW5jbHVkZSA8
d3RmL3RleHQvQXRvbVN0cmluZ0hhc2guaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFz
cyBBbmFseXNlck5vZGU7CitjbGFzcyBBdWRpb0J1ZmZlcjsKK2NsYXNzIEF1ZGlvQnVmZmVyQ2Fs
bGJhY2s7CitjbGFzcyBBdWRpb0J1ZmZlclNvdXJjZU5vZGU7CitjbGFzcyBBdWRpb0xpc3RlbmVy
OworY2xhc3MgQXVkaW9TdW1taW5nSnVuY3Rpb247CitjbGFzcyBCaXF1YWRGaWx0ZXJOb2RlOwor
Y2xhc3MgQ2hhbm5lbE1lcmdlck5vZGU7CitjbGFzcyBDaGFubmVsU3BsaXR0ZXJOb2RlOworY2xh
c3MgQ29udm9sdmVyTm9kZTsKK2NsYXNzIERlbGF5Tm9kZTsKK2NsYXNzIERvY3VtZW50OworY2xh
c3MgRHluYW1pY3NDb21wcmVzc29yTm9kZTsKK2NsYXNzIEdhaW5Ob2RlOworY2xhc3MgSFRNTE1l
ZGlhRWxlbWVudDsKK2NsYXNzIE1haW5UaHJlYWRHZW5lcmljRXZlbnRRdWV1ZTsKK2NsYXNzIE1l
ZGlhRWxlbWVudEF1ZGlvU291cmNlTm9kZTsKK2NsYXNzIE1lZGlhU3RyZWFtOworY2xhc3MgTWVk
aWFTdHJlYW1BdWRpb0Rlc3RpbmF0aW9uTm9kZTsKK2NsYXNzIE1lZGlhU3RyZWFtQXVkaW9Tb3Vy
Y2VOb2RlOworY2xhc3MgT3NjaWxsYXRvck5vZGU7CitjbGFzcyBQZXJpb2RpY1dhdmU7CitjbGFz
cyBTY3JpcHRQcm9jZXNzb3JOb2RlOworY2xhc3MgU2VjdXJpdHlPcmlnaW47CitjbGFzcyBXYXZl
U2hhcGVyTm9kZTsKK2NsYXNzIFdlYktpdEF1ZGlvUGFubmVyTm9kZTsKKwordGVtcGxhdGU8dHlw
ZW5hbWUgSURMVHlwZT4gY2xhc3MgRE9NUHJvbWlzZURlZmVycmVkOworCisvLyBBdWRpb0NvbnRl
eHQgaXMgdGhlIGNvcm5lcnN0b25lIG9mIHRoZSB3ZWIgYXVkaW8gQVBJIGFuZCBhbGwgQXVkaW9O
b2RlcyBhcmUgY3JlYXRlZCBmcm9tIGl0LgorLy8gRm9yIHRocmVhZCBzYWZldHkgYmV0d2VlbiB0
aGUgYXVkaW8gdGhyZWFkIGFuZCB0aGUgbWFpbiB0aHJlYWQsIGl0IGhhcyBhIHJlbmRlcmluZyBn
cmFwaCBsb2NraW5nIG1lY2hhbmlzbS4KKworY2xhc3MgV2ViS2l0QXVkaW9Db250ZXh0CisgICAg
OiBwdWJsaWMgQXVkaW9Db250ZXh0QmFzZQorICAgICwgcHJpdmF0ZSBQbGF0Zm9ybU1lZGlhU2Vz
c2lvbkNsaWVudAorICAgICwgcHJpdmF0ZSBWaXNpYmlsaXR5Q2hhbmdlQ2xpZW50Cit7CitwdWJs
aWM6CisgICAgLy8gQ3JlYXRlIGFuIFdlYktpdEF1ZGlvQ29udGV4dCBmb3IgcmVuZGVyaW5nIHRv
IHRoZSBhdWRpbyBoYXJkd2FyZS4KKyAgICBzdGF0aWMgRXhjZXB0aW9uT3I8UmVmPFdlYktpdEF1
ZGlvQ29udGV4dD4+IGNyZWF0ZShEb2N1bWVudCYpOworCisgICAgdmlydHVhbCB+V2ViS2l0QXVk
aW9Db250ZXh0KCk7CisKKyAgICBib29sIGlzSW5pdGlhbGl6ZWQoKSBjb25zdCBmaW5hbDsKKwor
ICAgIGJvb2wgaXNPZmZsaW5lQ29udGV4dCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1faXNPZmZs
aW5lQ29udGV4dDsgfQorCisgICAgRG9jdW1lbnRJZGVudGlmaWVyIGhvc3RpbmdEb2N1bWVudElk
ZW50aWZpZXIoKSBjb25zdCBmaW5hbDsKKworICAgIEF1ZGlvRGVzdGluYXRpb25Ob2RlKiBkZXN0
aW5hdGlvbigpIHsgcmV0dXJuIG1fZGVzdGluYXRpb25Ob2RlLmdldCgpOyB9CisgICAgc2l6ZV90
IGN1cnJlbnRTYW1wbGVGcmFtZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fZGVzdGluYXRpb25O
b2RlID8gbV9kZXN0aW5hdGlvbk5vZGUtPmN1cnJlbnRTYW1wbGVGcmFtZSgpIDogMDsgfQorICAg
IGRvdWJsZSBjdXJyZW50VGltZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fZGVzdGluYXRpb25O
b2RlID8gbV9kZXN0aW5hdGlvbk5vZGUtPmN1cnJlbnRUaW1lKCkgOiAwLjsgfQorICAgIGZsb2F0
IHNhbXBsZVJhdGUoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2Rlc3RpbmF0aW9uTm9kZSA/IG1f
ZGVzdGluYXRpb25Ob2RlLT5zYW1wbGVSYXRlKCkgOiAwLmY7IH0KKyAgICB1bnNpZ25lZCBsb25n
IGFjdGl2ZVNvdXJjZUNvdW50KCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8dW5zaWduZWQg
bG9uZz4obV9hY3RpdmVTb3VyY2VDb3VudCk7IH0KKworICAgIHZvaWQgaW5jcmVtZW50QWN0aXZl
U291cmNlQ291bnQoKSBmaW5hbDsKKyAgICB2b2lkIGRlY3JlbWVudEFjdGl2ZVNvdXJjZUNvdW50
KCkgZmluYWw7CisKKyAgICBFeGNlcHRpb25PcjxSZWY8QXVkaW9CdWZmZXI+PiBjcmVhdGVCdWZm
ZXIodW5zaWduZWQgbnVtYmVyT2ZDaGFubmVscywgc2l6ZV90IG51bWJlck9mRnJhbWVzLCBmbG9h
dCBzYW1wbGVSYXRlKTsKKyAgICBFeGNlcHRpb25PcjxSZWY8QXVkaW9CdWZmZXI+PiBjcmVhdGVC
dWZmZXIoQXJyYXlCdWZmZXImLCBib29sIG1peFRvTW9ubyk7CisKKyAgICAvLyBBc3luY2hyb25v
dXMgYXVkaW8gZmlsZSBkYXRhIGRlY29kaW5nLgorICAgIHZvaWQgZGVjb2RlQXVkaW9EYXRhKFJl
ZjxBcnJheUJ1ZmZlcj4mJiwgUmVmUHRyPEF1ZGlvQnVmZmVyQ2FsbGJhY2s+JiYsIFJlZlB0cjxB
dWRpb0J1ZmZlckNhbGxiYWNrPiYmKTsKKworICAgIEF1ZGlvTGlzdGVuZXIqIGxpc3RlbmVyKCkg
eyByZXR1cm4gbV9saXN0ZW5lci5nZXQoKTsgfQorCisgICAgdm9pZCBzdXNwZW5kUmVuZGVyaW5n
KERPTVByb21pc2VEZWZlcnJlZDx2b2lkPiYmKTsKKyAgICB2b2lkIHJlc3VtZVJlbmRlcmluZyhE
T01Qcm9taXNlRGVmZXJyZWQ8dm9pZD4mJik7CisgICAgdm9pZCBjbG9zZShET01Qcm9taXNlRGVm
ZXJyZWQ8dm9pZD4mJik7CisKKyAgICB1c2luZyBTdGF0ZSA9IEF1ZGlvQ29udGV4dFN0YXRlOwor
ICAgIFN0YXRlIHN0YXRlKCkgY29uc3Q7CisgICAgYm9vbCBpc0Nsb3NlZCgpIGNvbnN0IHsgcmV0
dXJuIG1fc3RhdGUgPT0gU3RhdGU6OkNsb3NlZDsgfQorCisgICAgYm9vbCB3b3VsZFRhaW50T3Jp
Z2luKGNvbnN0IFVSTCYpIGNvbnN0OworCisgICAgLy8gVGhlIEF1ZGlvTm9kZSBjcmVhdGUgbWV0
aG9kcyBhcmUgY2FsbGVkIG9uIHRoZSBtYWluIHRocmVhZCAoZnJvbSBKYXZhU2NyaXB0KS4KKyAg
ICBFeGNlcHRpb25PcjxSZWY8QXVkaW9CdWZmZXJTb3VyY2VOb2RlPj4gY3JlYXRlQnVmZmVyU291
cmNlKCk7CisjaWYgRU5BQkxFKFZJREVPKQorICAgIEV4Y2VwdGlvbk9yPFJlZjxNZWRpYUVsZW1l
bnRBdWRpb1NvdXJjZU5vZGU+PiBjcmVhdGVNZWRpYUVsZW1lbnRTb3VyY2UoSFRNTE1lZGlhRWxl
bWVudCYpOworI2VuZGlmCisjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKKyAgICBFeGNlcHRpb25P
cjxSZWY8TWVkaWFTdHJlYW1BdWRpb1NvdXJjZU5vZGU+PiBjcmVhdGVNZWRpYVN0cmVhbVNvdXJj
ZShNZWRpYVN0cmVhbSYpOworICAgIEV4Y2VwdGlvbk9yPFJlZjxNZWRpYVN0cmVhbUF1ZGlvRGVz
dGluYXRpb25Ob2RlPj4gY3JlYXRlTWVkaWFTdHJlYW1EZXN0aW5hdGlvbigpOworI2VuZGlmCisg
ICAgRXhjZXB0aW9uT3I8UmVmPEdhaW5Ob2RlPj4gY3JlYXRlR2FpbigpOworICAgIEV4Y2VwdGlv
bk9yPFJlZjxCaXF1YWRGaWx0ZXJOb2RlPj4gY3JlYXRlQmlxdWFkRmlsdGVyKCk7CisgICAgRXhj
ZXB0aW9uT3I8UmVmPFdhdmVTaGFwZXJOb2RlPj4gY3JlYXRlV2F2ZVNoYXBlcigpOworICAgIEV4
Y2VwdGlvbk9yPFJlZjxEZWxheU5vZGU+PiBjcmVhdGVEZWxheShkb3VibGUgbWF4RGVsYXlUaW1l
KTsKKyAgICBFeGNlcHRpb25PcjxSZWY8V2ViS2l0QXVkaW9QYW5uZXJOb2RlPj4gY3JlYXRlUGFu
bmVyKCk7CisgICAgRXhjZXB0aW9uT3I8UmVmPENvbnZvbHZlck5vZGU+PiBjcmVhdGVDb252b2x2
ZXIoKTsKKyAgICBFeGNlcHRpb25PcjxSZWY8RHluYW1pY3NDb21wcmVzc29yTm9kZT4+IGNyZWF0
ZUR5bmFtaWNzQ29tcHJlc3NvcigpOworICAgIEV4Y2VwdGlvbk9yPFJlZjxBbmFseXNlck5vZGU+
PiBjcmVhdGVBbmFseXNlcigpOworICAgIEV4Y2VwdGlvbk9yPFJlZjxTY3JpcHRQcm9jZXNzb3JO
b2RlPj4gY3JlYXRlU2NyaXB0UHJvY2Vzc29yKHNpemVfdCBidWZmZXJTaXplLCBzaXplX3QgbnVt
YmVyT2ZJbnB1dENoYW5uZWxzLCBzaXplX3QgbnVtYmVyT2ZPdXRwdXRDaGFubmVscyk7CisgICAg
RXhjZXB0aW9uT3I8UmVmPENoYW5uZWxTcGxpdHRlck5vZGU+PiBjcmVhdGVDaGFubmVsU3BsaXR0
ZXIoc2l6ZV90IG51bWJlck9mT3V0cHV0cyk7CisgICAgRXhjZXB0aW9uT3I8UmVmPENoYW5uZWxN
ZXJnZXJOb2RlPj4gY3JlYXRlQ2hhbm5lbE1lcmdlcihzaXplX3QgbnVtYmVyT2ZJbnB1dHMpOwor
ICAgIEV4Y2VwdGlvbk9yPFJlZjxPc2NpbGxhdG9yTm9kZT4+IGNyZWF0ZU9zY2lsbGF0b3IoKTsK
KyAgICBFeGNlcHRpb25PcjxSZWY8UGVyaW9kaWNXYXZlPj4gY3JlYXRlUGVyaW9kaWNXYXZlKEZs
b2F0MzJBcnJheSYgcmVhbCwgRmxvYXQzMkFycmF5JiBpbWFnaW5hcnkpOworCisgICAgLy8gV2hl
biBhIHNvdXJjZSBub2RlIGhhcyBubyBtb3JlIHByb2Nlc3NpbmcgdG8gZG8gKGhhcyBmaW5pc2hl
ZCBwbGF5aW5nKSwgdGhlbiBpdCB0ZWxscyB0aGUgY29udGV4dCB0byBkZXJlZmVyZW5jZSBpdC4K
KyAgICB2b2lkIG5vdGlmeU5vZGVGaW5pc2hlZFByb2Nlc3NpbmcoQXVkaW9Ob2RlKikgZmluYWw7
CisKKyAgICAvLyBDYWxsZWQgYXQgdGhlIHN0YXJ0IG9mIGVhY2ggcmVuZGVyIHF1YW50dW0uCisg
ICAgdm9pZCBoYW5kbGVQcmVSZW5kZXJUYXNrcygpIGZpbmFsOworCisgICAgLy8gQ2FsbGVkIGF0
IHRoZSBlbmQgb2YgZWFjaCByZW5kZXIgcXVhbnR1bS4KKyAgICB2b2lkIGhhbmRsZVBvc3RSZW5k
ZXJUYXNrcygpIGZpbmFsOworCisgICAgLy8gQ2FsbGVkIHBlcmlvZGljYWxseSBhdCB0aGUgZW5k
IG9mIGVhY2ggcmVuZGVyIHF1YW50dW0gdG8gZGVyZWZlcmVuY2UgZmluaXNoZWQgc291cmNlIG5v
ZGVzLgorICAgIHZvaWQgZGVyZWZGaW5pc2hlZFNvdXJjZU5vZGVzKCk7CisKKyAgICAvLyBXZSBz
Y2hlZHVsZSBkZWxldGlvbiBvZiBhbGwgbWFya2VkIG5vZGVzIGF0IHRoZSBlbmQgb2YgZWFjaCBy
ZWFsdGltZSByZW5kZXIgcXVhbnR1bS4KKyAgICB2b2lkIG1hcmtGb3JEZWxldGlvbihBdWRpb05v
ZGUmKSBmaW5hbDsKKyAgICB2b2lkIGRlbGV0ZU1hcmtlZE5vZGVzKCkgZmluYWw7CisKKyAgICAv
LyBBdWRpb0NvbnRleHQgY2FuIHB1bGwgbm9kZShzKSBhdCB0aGUgZW5kIG9mIGVhY2ggcmVuZGVy
IHF1YW50dW0gZXZlbiB3aGVuIHRoZXkgYXJlIG5vdCBjb25uZWN0ZWQgdG8gYW55IGRvd25zdHJl
YW0gbm9kZXMuCisgICAgLy8gVGhlc2UgdHdvIG1ldGhvZHMgYXJlIGNhbGxlZCBieSB0aGUgbm9k
ZXMgd2hvIHdhbnQgdG8gYWRkL3JlbW92ZSB0aGVtc2VsdmVzIGludG8vZnJvbSB0aGUgYXV0b21h
dGljIHB1bGwgbGlzdHMuCisgICAgdm9pZCBhZGRBdXRvbWF0aWNQdWxsTm9kZShBdWRpb05vZGUm
KSBmaW5hbDsKKyAgICB2b2lkIHJlbW92ZUF1dG9tYXRpY1B1bGxOb2RlKEF1ZGlvTm9kZSYpIGZp
bmFsOworCisgICAgLy8gQ2FsbGVkIHJpZ2h0IGJlZm9yZSBoYW5kbGVQb3N0UmVuZGVyVGFza3Mo
KSB0byBoYW5kbGUgbm9kZXMgd2hpY2ggbmVlZCB0byBiZSBwdWxsZWQgZXZlbiB3aGVuIHRoZXkg
YXJlIG5vdCBjb25uZWN0ZWQgdG8gYW55dGhpbmcuCisgICAgdm9pZCBwcm9jZXNzQXV0b21hdGlj
UHVsbE5vZGVzKHNpemVfdCBmcmFtZXNUb1Byb2Nlc3MpIGZpbmFsOworCisgICAgLy8gS2VlcHMg
dHJhY2sgb2YgdGhlIG51bWJlciBvZiBjb25uZWN0aW9ucyBtYWRlLgorICAgIHZvaWQgaW5jcmVt
ZW50Q29ubmVjdGlvbkNvdW50KCkgZmluYWwKKyAgICB7CisgICAgICAgIEFTU0VSVChpc01haW5U
aHJlYWQoKSk7CisgICAgICAgIG1fY29ubmVjdGlvbkNvdW50Kys7CisgICAgfQorCisgICAgdW5z
aWduZWQgY29ubmVjdGlvbkNvdW50KCkgY29uc3QgeyByZXR1cm4gbV9jb25uZWN0aW9uQ291bnQ7
IH0KKworICAgIC8vCisgICAgLy8gVGhyZWFkIFNhZmV0eSBhbmQgR3JhcGggTG9ja2luZzoKKyAg
ICAvLworCisgICAgdm9pZCBzZXRBdWRpb1RocmVhZChUaHJlYWQmIHRocmVhZCkgZmluYWwgeyBt
X2F1ZGlvVGhyZWFkID0gJnRocmVhZDsgfSAvLyBGSVhNRTogY2hlY2sgZWl0aGVyIG5vdCBpbml0
aWFsaXplZCBvciB0aGUgc2FtZQorICAgIFRocmVhZCogYXVkaW9UaHJlYWQoKSBjb25zdCB7IHJl
dHVybiBtX2F1ZGlvVGhyZWFkOyB9CisgICAgYm9vbCBpc0F1ZGlvVGhyZWFkKCkgY29uc3QgZmlu
YWw7CisKKyAgICAvLyBSZXR1cm5zIHRydWUgb25seSBhZnRlciB0aGUgYXVkaW8gdGhyZWFkIGhh
cyBiZWVuIHN0YXJ0ZWQgYW5kIHRoZW4gc2h1dGRvd24uCisgICAgYm9vbCBpc0F1ZGlvVGhyZWFk
RmluaXNoZWQoKSBmaW5hbCB7IHJldHVybiBtX2lzQXVkaW9UaHJlYWRGaW5pc2hlZDsgfQorCisg
ICAgLy8gbXVzdFJlbGVhc2VMb2NrIGlzIHNldCB0byB0cnVlIGlmIHdlIGFjcXVpcmVkIHRoZSBs
b2NrIGluIHRoaXMgbWV0aG9kIGNhbGwgYW5kIGNhbGxlciBtdXN0IHVubG9jaygpLCBmYWxzZSBp
ZiBpdCB3YXMgcHJldmlvdXNseSBhY3F1aXJlZC4KKyAgICB2b2lkIGxvY2soYm9vbCYgbXVzdFJl
bGVhc2VMb2NrKSBmaW5hbDsKKworICAgIC8vIFJldHVybnMgdHJ1ZSBpZiB3ZSBvd24gdGhlIGxv
Y2suCisgICAgLy8gbXVzdFJlbGVhc2VMb2NrIGlzIHNldCB0byB0cnVlIGlmIHdlIGFjcXVpcmVk
IHRoZSBsb2NrIGluIHRoaXMgbWV0aG9kIGNhbGwgYW5kIGNhbGxlciBtdXN0IHVubG9jaygpLCBm
YWxzZSBpZiBpdCB3YXMgcHJldmlvdXNseSBhY3F1aXJlZC4KKyAgICBib29sIHRyeUxvY2soYm9v
bCYgbXVzdFJlbGVhc2VMb2NrKSBmaW5hbDsKKworICAgIHZvaWQgdW5sb2NrKCkgZmluYWw7CisK
KyAgICAvLyBSZXR1cm5zIHRydWUgaWYgdGhpcyB0aHJlYWQgb3ducyB0aGUgY29udGV4dCdzIGxv
Y2suCisgICAgYm9vbCBpc0dyYXBoT3duZXIoKSBjb25zdCBmaW5hbDsKKworICAgIC8vIFJldHVy
bnMgdGhlIG1heGltdW0gbnVtYmVyIG9mIGNoYW5uZWxzIHdlIGNhbiBzdXBwb3J0LgorICAgIHN0
YXRpYyB1bnNpZ25lZCBtYXhOdW1iZXJPZkNoYW5uZWxzKCkgeyByZXR1cm4gTWF4TnVtYmVyT2ZD
aGFubmVsczsgfQorCisgICAgLy8gSW4gQXVkaW9Ob2RlOjpkZXJlZigpIGEgdHJ5TG9jaygpIGlz
IHVzZWQgZm9yIGNhbGxpbmcgZmluaXNoRGVyZWYoKSwgYnV0IGlmIGl0IGZhaWxzIGtlZXAgdHJh
Y2sgaGVyZS4KKyAgICB2b2lkIGFkZERlZmVycmVkRmluaXNoRGVyZWYoQXVkaW9Ob2RlKikgZmlu
YWw7CisKKyAgICAvLyBJbiB0aGUgYXVkaW8gdGhyZWFkIGF0IHRoZSBzdGFydCBvZiBlYWNoIHJl
bmRlciBjeWNsZSwgd2UnbGwgY2FsbCBoYW5kbGVEZWZlcnJlZEZpbmlzaERlcmVmcygpLgorICAg
IHZvaWQgaGFuZGxlRGVmZXJyZWRGaW5pc2hEZXJlZnMoKTsKKworICAgIC8vIE9ubHkgYWNjZXNz
ZWQgd2hlbiB0aGUgZ3JhcGggbG9jayBpcyBoZWxkLgorICAgIHZvaWQgbWFya1N1bW1pbmdKdW5j
dGlvbkRpcnR5KEF1ZGlvU3VtbWluZ0p1bmN0aW9uKikgZmluYWw7CisgICAgdm9pZCBtYXJrQXVk
aW9Ob2RlT3V0cHV0RGlydHkoQXVkaW9Ob2RlT3V0cHV0KikgZmluYWw7CisKKyAgICAvLyBNdXN0
IGJlIGNhbGxlZCBvbiBtYWluIHRocmVhZC4KKyAgICB2b2lkIHJlbW92ZU1hcmtlZFN1bW1pbmdK
dW5jdGlvbihBdWRpb1N1bW1pbmdKdW5jdGlvbiopIGZpbmFsOworCisgICAgLy8gRXZlbnRUYXJn
ZXQKKyAgICBFdmVudFRhcmdldEludGVyZmFjZSBldmVudFRhcmdldEludGVyZmFjZSgpIGNvbnN0
IGZpbmFsIHsgcmV0dXJuIFdlYktpdEF1ZGlvQ29udGV4dEV2ZW50VGFyZ2V0SW50ZXJmYWNlVHlw
ZTsgfQorCisgICAgLy8gUmVjb25jaWxlIHJlZi9kZXJlZiB3aGljaCBhcmUgZGVmaW5lZCBib3Ro
IGluIFRocmVhZFNhZmVSZWZDb3VudGVkIGFuZCBFdmVudFRhcmdldC4KKyAgICB1c2luZyBUaHJl
YWRTYWZlUmVmQ291bnRlZDo6cmVmOworICAgIHVzaW5nIFRocmVhZFNhZmVSZWZDb3VudGVkOjpk
ZXJlZjsKKworICAgIHZvaWQgc3RhcnRSZW5kZXJpbmcoKTsKKyAgICB2b2lkIGZpbmlzaGVkUmVu
ZGVyaW5nKGJvb2wgZGlkUmVuZGVyaW5nKSBmaW5hbDsKKworICAgIHN0YXRpYyB1bnNpZ25lZCBz
X2hhcmR3YXJlQ29udGV4dENvdW50OworCisgICAgLy8gUmVzdHJpY3Rpb25zIHRvIGNoYW5nZSBk
ZWZhdWx0IGJlaGF2aW9ycy4KKyAgICBlbnVtIEJlaGF2aW9yUmVzdHJpY3Rpb25GbGFncyB7Cisg
ICAgICAgIE5vUmVzdHJpY3Rpb25zID0gMCwKKyAgICAgICAgUmVxdWlyZVVzZXJHZXN0dXJlRm9y
QXVkaW9TdGFydFJlc3RyaWN0aW9uID0gMSA8PCAwLAorICAgICAgICBSZXF1aXJlUGFnZUNvbnNl
bnRGb3JBdWRpb1N0YXJ0UmVzdHJpY3Rpb24gPSAxIDw8IDEsCisgICAgfTsKKyAgICB0eXBlZGVm
IHVuc2lnbmVkIEJlaGF2aW9yUmVzdHJpY3Rpb25zOworCisgICAgQmVoYXZpb3JSZXN0cmljdGlv
bnMgYmVoYXZpb3JSZXN0cmljdGlvbnMoKSBjb25zdCB7IHJldHVybiBtX3Jlc3RyaWN0aW9uczsg
fQorICAgIHZvaWQgYWRkQmVoYXZpb3JSZXN0cmljdGlvbihCZWhhdmlvclJlc3RyaWN0aW9ucyBy
ZXN0cmljdGlvbikgeyBtX3Jlc3RyaWN0aW9ucyB8PSByZXN0cmljdGlvbjsgfQorICAgIHZvaWQg
cmVtb3ZlQmVoYXZpb3JSZXN0cmljdGlvbihCZWhhdmlvclJlc3RyaWN0aW9ucyByZXN0cmljdGlv
bikgeyBtX3Jlc3RyaWN0aW9ucyAmPSB+cmVzdHJpY3Rpb247IH0KKworICAgIHZvaWQgaXNQbGF5
aW5nQXVkaW9EaWRDaGFuZ2UoKSBmaW5hbDsKKworICAgIHZvaWQgbm9kZVdpbGxCZWdpblBsYXli
YWNrKCkgZmluYWw7CisKKyNpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKKyAgICBjb25zdCBMb2dn
ZXImIGxvZ2dlcigpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fbG9nZ2VyLmdldCgpOyB9CisgICAg
Y29uc3Qgdm9pZCogbG9nSWRlbnRpZmllcigpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fbG9nSWRl
bnRpZmllcjsgfQorICAgIFdURkxvZ0NoYW5uZWwmIGxvZ0NoYW5uZWwoKSBjb25zdCBmaW5hbDsK
KyAgICBjb25zdCB2b2lkKiBuZXh0QXVkaW9Ob2RlTG9nSWRlbnRpZmllcigpIGZpbmFsIHsgcmV0
dXJuIGNoaWxkTG9nSWRlbnRpZmllcihtX2xvZ0lkZW50aWZpZXIsICsrbV9uZXh0QXVkaW9Ob2Rl
SWRlbnRpZmllcik7IH0KKyAgICBjb25zdCB2b2lkKiBuZXh0QXVkaW9QYXJhbWV0ZXJMb2dJZGVu
dGlmaWVyKCkgZmluYWwgeyByZXR1cm4gY2hpbGRMb2dJZGVudGlmaWVyKG1fbG9nSWRlbnRpZmll
ciwgKyttX25leHRBdWRpb1BhcmFtZXRlcklkZW50aWZpZXIpOyB9CisjZW5kaWYKKworICAgIHZv
aWQgcG9zdFRhc2soV1RGOjpGdW5jdGlvbjx2b2lkKCk+JiYpIGZpbmFsOworICAgIGJvb2wgaXNT
dG9wcGVkKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9pc1N0b3BTY2hlZHVsZWQ7IH0KKyAgICBj
b25zdCBTZWN1cml0eU9yaWdpbiogb3JpZ2luKCkgY29uc3QgZmluYWw7CisgICAgdm9pZCBhZGRD
b25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNlLCBNZXNzYWdlTGV2ZWwsIGNvbnN0IFN0cmluZyYg
bWVzc2FnZSkgZmluYWw7CisKK3Byb3RlY3RlZDoKKyAgICBleHBsaWNpdCBXZWJLaXRBdWRpb0Nv
bnRleHQoRG9jdW1lbnQmKTsKKyAgICBXZWJLaXRBdWRpb0NvbnRleHQoRG9jdW1lbnQmLCBBdWRp
b0J1ZmZlciogcmVuZGVyVGFyZ2V0KTsKKworICAgIHN0YXRpYyBib29sIGlzU2FtcGxlUmF0ZVJh
bmdlR29vZChmbG9hdCBzYW1wbGVSYXRlKTsKKyAgICB2b2lkIGNsZWFyUGVuZGluZ0FjdGl2aXR5
KCk7CisgICAgdm9pZCBtYWtlUGVuZGluZ0FjdGl2aXR5KCk7CisKK3ByaXZhdGU6CisgICAgdm9p
ZCBjb25zdHJ1Y3RDb21tb24oKTsKKworICAgIHZvaWQgbGF6eUluaXRpYWxpemUoKTsKKyAgICB2
b2lkIHVuaW5pdGlhbGl6ZSgpOworCisgICAgYm9vbCB3aWxsQmVnaW5QbGF5YmFjaygpOworICAg
IGJvb2wgd2lsbFBhdXNlUGxheWJhY2soKTsKKworICAgIGJvb2wgdXNlckdlc3R1cmVSZXF1aXJl
ZEZvckF1ZGlvU3RhcnQoKSBjb25zdCB7IHJldHVybiAhaXNPZmZsaW5lQ29udGV4dCgpICYmIG1f
cmVzdHJpY3Rpb25zICYgUmVxdWlyZVVzZXJHZXN0dXJlRm9yQXVkaW9TdGFydFJlc3RyaWN0aW9u
OyB9CisgICAgYm9vbCBwYWdlQ29uc2VudFJlcXVpcmVkRm9yQXVkaW9TdGFydCgpIGNvbnN0IHsg
cmV0dXJuICFpc09mZmxpbmVDb250ZXh0KCkgJiYgbV9yZXN0cmljdGlvbnMgJiBSZXF1aXJlUGFn
ZUNvbnNlbnRGb3JBdWRpb1N0YXJ0UmVzdHJpY3Rpb247IH0KKworICAgIHZvaWQgc2V0U3RhdGUo
U3RhdGUpOworCisgICAgdm9pZCBjbGVhcigpOworCisgICAgdm9pZCBzY2hlZHVsZU5vZGVEZWxl
dGlvbigpOworCisgICAgdm9pZCBtZWRpYUNhblN0YXJ0KERvY3VtZW50Jikgb3ZlcnJpZGU7CisK
KyAgICAvLyBFdmVudFRhcmdldAorICAgIHZvaWQgZGlzcGF0Y2hFdmVudChFdmVudCYpIGZpbmFs
OworCisgICAgLy8gTWVkaWFQcm9kdWNlcgorICAgIE1lZGlhUHJvZHVjZXI6Ok1lZGlhU3RhdGVG
bGFncyBtZWRpYVN0YXRlKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgdm9pZCBwYWdlTXV0ZWRTdGF0
ZURpZENoYW5nZSgpIG92ZXJyaWRlOworCisgICAgLy8gVGhlIGNvbnRleHQgaXRzZWxmIGtlZXBz
IGEgcmVmZXJlbmNlIHRvIGFsbCBzb3VyY2Ugbm9kZXMuICBUaGUgc291cmNlIG5vZGVzLCB0aGVu
IHJlZmVyZW5jZSBhbGwgbm9kZXMgdGhleSdyZSBjb25uZWN0ZWQgdG8uCisgICAgLy8gSW4gdHVy
biwgdGhlc2Ugbm9kZXMgcmVmZXJlbmNlIGFsbCBub2RlcyB0aGV5J3JlIGNvbm5lY3RlZCB0by4g
IEFsbCBub2RlcyBhcmUgdWx0aW1hdGVseSBjb25uZWN0ZWQgdG8gdGhlIEF1ZGlvRGVzdGluYXRp
b25Ob2RlLgorICAgIC8vIFdoZW4gdGhlIGNvbnRleHQgZGVyZWZlcmVuY2VzIGEgc291cmNlIG5v
ZGUsIGl0IHdpbGwgYmUgZGVhY3RpdmF0ZWQgZnJvbSB0aGUgcmVuZGVyaW5nIGdyYXBoIGFsb25n
IHdpdGggYWxsIG90aGVyIG5vZGVzIGl0IGlzCisgICAgLy8gdW5pcXVlbHkgY29ubmVjdGVkIHRv
LiAgU2VlIHRoZSBBdWRpb05vZGU6OnJlZigpIGFuZCBBdWRpb05vZGU6OmRlcmVmKCkgbWV0aG9k
cyBmb3IgbW9yZSBkZXRhaWxzLgorICAgIHZvaWQgcmVmTm9kZShBdWRpb05vZGUmKTsKKyAgICB2
b2lkIGRlcmVmTm9kZShBdWRpb05vZGUmKTsKKworICAgIC8vIEFjdGl2ZURPTU9iamVjdCBBUEku
CisgICAgdm9pZCBzdXNwZW5kKFJlYXNvbkZvclN1c3BlbnNpb24pIGZpbmFsOworICAgIHZvaWQg
cmVzdW1lKCkgZmluYWw7CisgICAgdm9pZCBzdG9wKCkgb3ZlcnJpZGU7CisgICAgY29uc3QgY2hh
ciogYWN0aXZlRE9NT2JqZWN0TmFtZSgpIGNvbnN0IG92ZXJyaWRlOworCisgICAgLy8gV2hlbiB0
aGUgY29udGV4dCBnb2VzIGF3YXksIHRoZXJlIG1pZ2h0IHN0aWxsIGJlIHNvbWUgc291cmNlcyB3
aGljaCBoYXZlbid0IGZpbmlzaGVkIHBsYXlpbmcuCisgICAgLy8gTWFrZSBzdXJlIHRvIGRlcmVm
ZXJlbmNlIHRoZW0gaGVyZS4KKyAgICB2b2lkIGRlcmVmVW5maW5pc2hlZFNvdXJjZU5vZGVzKCk7
CisKKyAgICAvLyBQbGF0Zm9ybU1lZGlhU2Vzc2lvbkNsaWVudAorICAgIFBsYXRmb3JtTWVkaWFT
ZXNzaW9uOjpNZWRpYVR5cGUgbWVkaWFUeXBlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gUGxh
dGZvcm1NZWRpYVNlc3Npb246Ok1lZGlhVHlwZTo6V2ViQXVkaW87IH0KKyAgICBQbGF0Zm9ybU1l
ZGlhU2Vzc2lvbjo6TWVkaWFUeXBlIHByZXNlbnRhdGlvblR5cGUoKSBjb25zdCBvdmVycmlkZSB7
IHJldHVybiBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6TWVkaWFUeXBlOjpXZWJBdWRpbzsgfQorICAg
IHZvaWQgbWF5UmVzdW1lUGxheWJhY2soYm9vbCBzaG91bGRSZXN1bWUpIG92ZXJyaWRlOworICAg
IHZvaWQgc3VzcGVuZFBsYXliYWNrKCkgb3ZlcnJpZGU7CisgICAgYm9vbCBjYW5SZWNlaXZlUmVt
b3RlQ29udHJvbENvbW1hbmRzKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KKyAg
ICB2b2lkIGRpZFJlY2VpdmVSZW1vdGVDb250cm9sQ29tbWFuZChQbGF0Zm9ybU1lZGlhU2Vzc2lv
bjo6UmVtb3RlQ29udHJvbENvbW1hbmRUeXBlLCBjb25zdCBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6
UmVtb3RlQ29tbWFuZEFyZ3VtZW50Kikgb3ZlcnJpZGUgeyB9CisgICAgYm9vbCBzdXBwb3J0c1Nl
ZWtpbmcoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQorICAgIGJvb2wgc2hvdWxk
T3ZlcnJpZGVCYWNrZ3JvdW5kUGxheWJhY2tSZXN0cmljdGlvbihQbGF0Zm9ybU1lZGlhU2Vzc2lv
bjo6SW50ZXJydXB0aW9uVHlwZSkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KKyAg
ICBib29sIGNhblByb2R1Y2VBdWRpbygpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIHRydWU7IH0KKyAg
ICBib29sIGlzU3VzcGVuZGVkKCkgY29uc3QgZmluYWw7CisKKyAgICB2b2lkIHZpc2liaWxpdHlT
dGF0ZUNoYW5nZWQoKSBmaW5hbDsKKworICAgIGJvb2wgaXNBdWRpb0NvbnRleHQoKSBjb25zdCBm
aW5hbCB7IHJldHVybiBmYWxzZTsgfQorICAgIGJvb2wgaXNXZWJLaXRBdWRpb0NvbnRleHQoKSBj
b25zdCBmaW5hbCB7IHJldHVybiB0cnVlOyB9CisKKyAgICAvLyBFdmVudFRhcmdldAorICAgIHZv
aWQgcmVmRXZlbnRUYXJnZXQoKSBvdmVycmlkZSB7IHJlZigpOyB9CisgICAgdm9pZCBkZXJlZkV2
ZW50VGFyZ2V0KCkgb3ZlcnJpZGUgeyBkZXJlZigpOyB9CisKKyAgICB2b2lkIGhhbmRsZURpcnR5
QXVkaW9TdW1taW5nSnVuY3Rpb25zKCk7CisgICAgdm9pZCBoYW5kbGVEaXJ0eUF1ZGlvTm9kZU91
dHB1dHMoKTsKKworICAgIHZvaWQgYWRkUmVhY3Rpb24oU3RhdGUsIERPTVByb21pc2VEZWZlcnJl
ZDx2b2lkPiYmKTsKKyAgICB2b2lkIHVwZGF0ZUF1dG9tYXRpY1B1bGxOb2RlcygpOworCisjaWYg
IVJFTEVBU0VfTE9HX0RJU0FCTEVECisgICAgY29uc3QgY2hhciogbG9nQ2xhc3NOYW1lKCkgY29u
c3QgZmluYWwgeyByZXR1cm4gIldlYktpdEF1ZGlvQ29udGV4dCI7IH0KKworICAgIFJlZjxMb2dn
ZXI+IG1fbG9nZ2VyOworICAgIGNvbnN0IHZvaWQqIG1fbG9nSWRlbnRpZmllcjsKKyAgICB1aW50
NjRfdCBtX25leHRBdWRpb05vZGVJZGVudGlmaWVyIHsgMCB9OworICAgIHVpbnQ2NF90IG1fbmV4
dEF1ZGlvUGFyYW1ldGVySWRlbnRpZmllciB7IDAgfTsKKyNlbmRpZgorCisgICAgLy8gT25seSBh
Y2Nlc3NlZCBpbiB0aGUgYXVkaW8gdGhyZWFkLgorICAgIFZlY3RvcjxBdWRpb05vZGUqPiBtX2Zp
bmlzaGVkTm9kZXM7CisKKyAgICAvLyBXZSBkb24ndCB1c2UgUmVmUHRyPEF1ZGlvTm9kZT4gaGVy
ZSBiZWNhdXNlIEF1ZGlvTm9kZSBoYXMgYSBtb3JlIGNvbXBsZXggcmVmKCkgLyBkZXJlZigpIGlt
cGxlbWVudGF0aW9uCisgICAgLy8gd2l0aCBhbiBvcHRpb25hbCBhcmd1bWVudCBmb3IgcmVmVHlw
ZS4gIFdlIG5lZWQgdG8gdXNlIHRoZSBzcGVjaWFsIHJlZlR5cGU6IFJlZlR5cGVDb25uZWN0aW9u
CisgICAgLy8gRWl0aGVyIGFjY2Vzc2VkIHdoZW4gdGhlIGdyYXBoIGxvY2sgaXMgaGVsZCwgb3Ig
b24gdGhlIG1haW4gdGhyZWFkIHdoZW4gdGhlIGF1ZGlvIHRocmVhZCBoYXMgZmluaXNoZWQuCisg
ICAgVmVjdG9yPEF1ZGlvTm9kZSo+IG1fcmVmZXJlbmNlZE5vZGVzOworCisgICAgLy8gQWNjdW11
bGF0ZSBub2RlcyB3aGljaCBuZWVkIHRvIGJlIGRlbGV0ZWQgaGVyZS4KKyAgICAvLyBUaGlzIGlz
IGNvcGllZCB0byBtX25vZGVzVG9EZWxldGUgYXQgdGhlIGVuZCBvZiBhIHJlbmRlciBjeWNsZSBp
biBoYW5kbGVQb3N0UmVuZGVyVGFza3MoKSwgd2hlcmUgd2UncmUgYXNzdXJlZCBvZiBhIHN0YWJs
ZSBncmFwaAorICAgIC8vIHN0YXRlIHdoaWNoIHdpbGwgaGF2ZSBubyByZWZlcmVuY2VzIHRvIGFu
eSBvZiB0aGUgbm9kZXMgaW4gbV9ub2Rlc1RvRGVsZXRlIG9uY2UgdGhlIGNvbnRleHQgbG9jayBp
cyByZWxlYXNlZAorICAgIC8vICh3aGVuIGhhbmRsZVBvc3RSZW5kZXJUYXNrcygpIGhhcyBjb21w
bGV0ZWQpLgorICAgIFZlY3RvcjxBdWRpb05vZGUqPiBtX25vZGVzTWFya2VkRm9yRGVsZXRpb247
CisKKyAgICAvLyBUaGV5IHdpbGwgYmUgc2NoZWR1bGVkIGZvciBkZWxldGlvbiAob24gdGhlIG1h
aW4gdGhyZWFkKSBhdCB0aGUgZW5kIG9mIGEgcmVuZGVyIGN5Y2xlIChpbiByZWFsdGltZSB0aHJl
YWQpLgorICAgIFZlY3RvcjxBdWRpb05vZGUqPiBtX25vZGVzVG9EZWxldGU7CisKKyAgICBib29s
IG1faXNEZWxldGlvblNjaGVkdWxlZCB7IGZhbHNlIH07CisgICAgYm9vbCBtX2lzU3RvcFNjaGVk
dWxlZCB7IGZhbHNlIH07CisgICAgYm9vbCBtX2lzSW5pdGlhbGl6ZWQgeyBmYWxzZSB9OworICAg
IGJvb2wgbV9pc0F1ZGlvVGhyZWFkRmluaXNoZWQgeyBmYWxzZSB9OworICAgIGJvb2wgbV9hdXRv
bWF0aWNQdWxsTm9kZXNOZWVkVXBkYXRpbmcgeyBmYWxzZSB9OworICAgIGJvb2wgbV9pc09mZmxp
bmVDb250ZXh0IHsgZmFsc2UgfTsKKworICAgIC8vIE9ubHkgYWNjZXNzZWQgd2hlbiB0aGUgZ3Jh
cGggbG9jayBpcyBoZWxkLgorICAgIEhhc2hTZXQ8QXVkaW9TdW1taW5nSnVuY3Rpb24qPiBtX2Rp
cnR5U3VtbWluZ0p1bmN0aW9uczsKKyAgICBIYXNoU2V0PEF1ZGlvTm9kZU91dHB1dCo+IG1fZGly
dHlBdWRpb05vZGVPdXRwdXRzOworCisgICAgLy8gRm9yIHRoZSBzYWtlIG9mIHRocmVhZCBzYWZl
dHksIHdlIG1haW50YWluIGEgc2VwZXJhdGUgVmVjdG9yIG9mIGF1dG9tYXRpYyBwdWxsIG5vZGVz
IGZvciByZW5kZXJpbmcgaW4gbV9yZW5kZXJpbmdBdXRvbWF0aWNQdWxsTm9kZXMuCisgICAgLy8g
SXQgd2lsbCBiZSBjb3BpZWQgZnJvbSBtX2F1dG9tYXRpY1B1bGxOb2RlcyBieSB1cGRhdGVBdXRv
bWF0aWNQdWxsTm9kZXMoKSBhdCB0aGUgdmVyeSBzdGFydCBvciBlbmQgb2YgdGhlIHJlbmRlcmlu
ZyBxdWFudHVtLgorICAgIEhhc2hTZXQ8QXVkaW9Ob2RlKj4gbV9hdXRvbWF0aWNQdWxsTm9kZXM7
CisgICAgVmVjdG9yPEF1ZGlvTm9kZSo+IG1fcmVuZGVyaW5nQXV0b21hdGljUHVsbE5vZGVzOwor
ICAgIC8vIE9ubHkgYWNjZXNzZWQgaW4gdGhlIGF1ZGlvIHRocmVhZC4KKyAgICBWZWN0b3I8QXVk
aW9Ob2RlKj4gbV9kZWZlcnJlZEZpbmlzaERlcmVmTGlzdDsKKyAgICBWZWN0b3I8VmVjdG9yPERP
TVByb21pc2VEZWZlcnJlZDx2b2lkPj4+IG1fc3RhdGVSZWFjdGlvbnM7CisKKyAgICBzdGQ6OnVu
aXF1ZV9wdHI8UGxhdGZvcm1NZWRpYVNlc3Npb24+IG1fbWVkaWFTZXNzaW9uOworICAgIFVuaXF1
ZVJlZjxNYWluVGhyZWFkR2VuZXJpY0V2ZW50UXVldWU+IG1fZXZlbnRRdWV1ZTsKKworICAgIFJl
ZlB0cjxBdWRpb0J1ZmZlcj4gbV9yZW5kZXJUYXJnZXQ7CisgICAgUmVmUHRyPEF1ZGlvRGVzdGlu
YXRpb25Ob2RlPiBtX2Rlc3RpbmF0aW9uTm9kZTsKKyAgICBSZWZQdHI8QXVkaW9MaXN0ZW5lcj4g
bV9saXN0ZW5lcjsKKworICAgIHVuc2lnbmVkIG1fY29ubmVjdGlvbkNvdW50IHsgMCB9OworCisg
ICAgLy8gR3JhcGggbG9ja2luZy4KKyAgICBMb2NrIG1fY29udGV4dEdyYXBoTXV0ZXg7CisgICAg
Ly8gRklYTUU6IFVzaW5nIHZvbGF0aWxlIHNlZW1zIGluY29ycmVjdC4KKyAgICAvLyBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTgwMzMyCisgICAgVGhyZWFkKiB2b2xh
dGlsZSBtX2F1ZGlvVGhyZWFkIHsgbnVsbHB0ciB9OworICAgIFRocmVhZCogdm9sYXRpbGUgbV9n
cmFwaE93bmVyVGhyZWFkIHsgbnVsbHB0ciB9OyAvLyBpZiB0aGUgbG9jayBpcyBoZWxkIHRoZW4g
dGhpcyBpcyB0aGUgdGhyZWFkIHdoaWNoIG93bnMgaXQsIG90aGVyd2lzZSA9PSBudWxscHRyLgor
CisgICAgc3RkOjp1bmlxdWVfcHRyPEFzeW5jQXVkaW9EZWNvZGVyPiBtX2F1ZGlvRGVjb2RlcjsK
KworICAgIC8vIFRoaXMgaXMgY29uc2lkZXJpbmcgMzIgaXMgbGFyZ2UgZW5vdWdoIGZvciBtdWx0
aXBsZSBjaGFubmVscyBhdWRpby4KKyAgICAvLyBJdCBpcyBzb21ld2hhdCBhcmJpdHJhcnkgYW5k
IGNvdWxkIGJlIGluY3JlYXNlZCBpZiBuZWNlc3NhcnkuCisgICAgZW51bSB7IE1heE51bWJlck9m
Q2hhbm5lbHMgPSAzMiB9OworCisgICAgLy8gTnVtYmVyIG9mIEF1ZGlvQnVmZmVyU291cmNlTm9k
ZXMgdGhhdCBhcmUgYWN0aXZlIChwbGF5aW5nKS4KKyAgICBzdGQ6OmF0b21pYzxpbnQ+IG1fYWN0
aXZlU291cmNlQ291bnQgeyAwIH07CisKKyAgICBCZWhhdmlvclJlc3RyaWN0aW9ucyBtX3Jlc3Ry
aWN0aW9ucyB7IE5vUmVzdHJpY3Rpb25zIH07CisKKyAgICBTdGF0ZSBtX3N0YXRlIHsgU3RhdGU6
OlN1c3BlbmRlZCB9OworICAgIFJlZlB0cjxQZW5kaW5nQWN0aXZpdHk8V2ViS2l0QXVkaW9Db250
ZXh0Pj4gbV9wZW5kaW5nQWN0aXZpdHk7Cit9OworCitpbmxpbmUgQXVkaW9Db250ZXh0U3RhdGUg
V2ViS2l0QXVkaW9Db250ZXh0OjpzdGF0ZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fc3RhdGU7
Cit9CisKK30gLy8gV2ViQ29yZQorCitTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0JFR0lOKFdlYkNv
cmU6OldlYktpdEF1ZGlvQ29udGV4dCkKKyAgICBzdGF0aWMgYm9vbCBpc1R5cGUoY29uc3QgV2Vi
Q29yZTo6QXVkaW9Db250ZXh0QmFzZSYgY29udGV4dCkgeyByZXR1cm4gY29udGV4dC5pc1dlYktp
dEF1ZGlvQ29udGV4dCgpOyB9CitTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0VORCgpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1dlYktpdEF1ZGlvQ29udGV4dC5p
ZGwgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1dlYktpdEF1ZGlvQ29udGV4dC5p
ZGwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLmVjYzcxZDA3NzhkCi0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9XZWJLaXRB
dWRpb0NvbnRleHQuaWRsCkBAIC0wLDAgKzEsOTQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTAsIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAg
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJF
CisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04KKyAqIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUworICogU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworWworICAgIEFjdGl2
ZURPTU9iamVjdCwKKyAgICBDb25kaXRpb25hbD1XRUJfQVVESU8sCisgICAgQ29uc3RydWN0b3Is
CisgICAgQ29uc3RydWN0b3JDYWxsV2l0aD1Eb2N1bWVudCwKKyAgICBDb25zdHJ1Y3Rvck1heVRo
cm93RXhjZXB0aW9uLAorICAgIEVuYWJsZWRCeVNldHRpbmc9V2ViQXVkaW8sCisgICAgRXhwb3J0
TWFjcm89V0VCQ09SRV9FWFBPUlQsCisgICAgSW50ZXJmYWNlTmFtZT13ZWJraXRBdWRpb0NvbnRl
eHQsCitdIGludGVyZmFjZSBXZWJLaXRBdWRpb0NvbnRleHQgOiBFdmVudFRhcmdldCB7CisgICAg
Ly8gQWxsIHJlbmRlcmVkIGF1ZGlvIHVsdGltYXRlbHkgY29ubmVjdHMgdG8gZGVzdGluYXRpb24s
IHdoaWNoIHJlcHJlc2VudHMgdGhlIGF1ZGlvIGhhcmR3YXJlLgorICAgIHJlYWRvbmx5IGF0dHJp
YnV0ZSBBdWRpb0Rlc3RpbmF0aW9uTm9kZSBkZXN0aW5hdGlvbjsKKworICAgIC8vIEFsbCBzY2hl
ZHVsZWQgdGltZXMgYXJlIHJlbGF0aXZlIHRvIHRoaXMgdGltZSBpbiBzZWNvbmRzLgorICAgIHJl
YWRvbmx5IGF0dHJpYnV0ZSB1bnJlc3RyaWN0ZWQgZG91YmxlIGN1cnJlbnRUaW1lOworCisgICAg
Ly8gQWxsIEF1ZGlvTm9kZXMgaW4gdGhlIGNvbnRleHQgcnVuIGF0IHRoaXMgc2FtcGxlLXJhdGUg
KHNhbXBsZS1mcmFtZXMgcGVyIHNlY29uZCkuCisgICAgcmVhZG9ubHkgYXR0cmlidXRlIHVucmVz
dHJpY3RlZCBmbG9hdCBzYW1wbGVSYXRlOworCisgICAgLy8gQWxsIHBhbm5pbmcgaXMgcmVsYXRp
dmUgdG8gdGhpcyBsaXN0ZW5lci4KKyAgICByZWFkb25seSBhdHRyaWJ1dGUgQXVkaW9MaXN0ZW5l
ciBsaXN0ZW5lcjsKKworICAgIFtJbXBsZW1lbnRlZEFzPXN1c3BlbmRSZW5kZXJpbmddIFByb21p
c2U8dm9pZD4gc3VzcGVuZCgpOworICAgIFtJbXBsZW1lbnRlZEFzPXJlc3VtZVJlbmRlcmluZ10g
UHJvbWlzZTx2b2lkPiByZXN1bWUoKTsKKyAgICBQcm9taXNlPHZvaWQ+IGNsb3NlKCk7CisKKyAg
ICByZWFkb25seSBhdHRyaWJ1dGUgQXVkaW9Db250ZXh0U3RhdGUgc3RhdGU7CisgICAgYXR0cmli
dXRlIEV2ZW50SGFuZGxlciBvbnN0YXRlY2hhbmdlOworCisgICAgLy8gTnVtYmVyIG9mIEF1ZGlv
QnVmZmVyU291cmNlTm9kZXMgdGhhdCBhcmUgY3VycmVudGx5IHBsYXlpbmcuCisgICAgcmVhZG9u
bHkgYXR0cmlidXRlIHVuc2lnbmVkIGxvbmcgYWN0aXZlU291cmNlQ291bnQ7CisKKyAgICBbTWF5
VGhyb3dFeGNlcHRpb25dIEF1ZGlvQnVmZmVyIGNyZWF0ZUJ1ZmZlcih1bnNpZ25lZCBsb25nIG51
bWJlck9mQ2hhbm5lbHMsIHVuc2lnbmVkIGxvbmcgbnVtYmVyT2ZGcmFtZXMsIHVucmVzdHJpY3Rl
ZCBmbG9hdCBzYW1wbGVSYXRlKTsKKyAgICBbTWF5VGhyb3dFeGNlcHRpb25dIEF1ZGlvQnVmZmVy
IGNyZWF0ZUJ1ZmZlcihBcnJheUJ1ZmZlciBidWZmZXIsIGJvb2xlYW4gbWl4VG9Nb25vKTsKKwor
ICAgIC8vIEFzeW5jaHJvbm91cyBhdWRpbyBmaWxlIGRhdGEgZGVjb2RpbmcuCisgICAgLy8gRklY
TUU6IHN1Y2Nlc3NDYWxsYmFjayBzaG91bGQgYmUgb3B0aW9uYWwgYW5kIHRoZSBjYWxsYmFja3Mg
c2hvdWxkIG5vdCBiZSBudWxsYWJsZS4gVGhpcyBzaG91bGQgYWxzbyByZXR1cm4gYSBQcm9taXNl
LgorICAgIHZvaWQgZGVjb2RlQXVkaW9EYXRhKEFycmF5QnVmZmVyIGF1ZGlvRGF0YSwgQXVkaW9C
dWZmZXJDYWxsYmFjaz8gc3VjY2Vzc0NhbGxiYWNrLCBvcHRpb25hbCBBdWRpb0J1ZmZlckNhbGxi
YWNrPyBlcnJvckNhbGxiYWNrKTsKKworICAgIC8vIFNvdXJjZXMKKyAgICBbTWF5VGhyb3dFeGNl
cHRpb25dIEF1ZGlvQnVmZmVyU291cmNlTm9kZSBjcmVhdGVCdWZmZXJTb3VyY2UoKTsKKworICAg
IFtDb25kaXRpb25hbD1WSURFTywgTWF5VGhyb3dFeGNlcHRpb25dIE1lZGlhRWxlbWVudEF1ZGlv
U291cmNlTm9kZSBjcmVhdGVNZWRpYUVsZW1lbnRTb3VyY2UoSFRNTE1lZGlhRWxlbWVudCBtZWRp
YUVsZW1lbnQpOworCisgICAgW0NvbmRpdGlvbmFsPU1FRElBX1NUUkVBTSwgTWF5VGhyb3dFeGNl
cHRpb25dIE1lZGlhU3RyZWFtQXVkaW9Tb3VyY2VOb2RlIGNyZWF0ZU1lZGlhU3RyZWFtU291cmNl
KE1lZGlhU3RyZWFtIG1lZGlhU3RyZWFtKTsKKyAgICBbQ29uZGl0aW9uYWw9TUVESUFfU1RSRUFN
LCBNYXlUaHJvd0V4Y2VwdGlvbl0gTWVkaWFTdHJlYW1BdWRpb0Rlc3RpbmF0aW9uTm9kZSBjcmVh
dGVNZWRpYVN0cmVhbURlc3RpbmF0aW9uKCk7CisKKyAgICAvLyBQcm9jZXNzaW5nIG5vZGVzCisg
ICAgW01heVRocm93RXhjZXB0aW9uXSBHYWluTm9kZSBjcmVhdGVHYWluKCk7CisgICAgW01heVRo
cm93RXhjZXB0aW9uXSBEZWxheU5vZGUgY3JlYXRlRGVsYXkob3B0aW9uYWwgdW5yZXN0cmljdGVk
IGRvdWJsZSBtYXhEZWxheVRpbWUgPSAxKTsKKyAgICBbTWF5VGhyb3dFeGNlcHRpb25dIEJpcXVh
ZEZpbHRlck5vZGUgY3JlYXRlQmlxdWFkRmlsdGVyKCk7CisgICAgW01heVRocm93RXhjZXB0aW9u
XSBXYXZlU2hhcGVyTm9kZSBjcmVhdGVXYXZlU2hhcGVyKCk7CisgICAgW01heVRocm93RXhjZXB0
aW9uXSBXZWJLaXRBdWRpb1Bhbm5lck5vZGUgY3JlYXRlUGFubmVyKCk7CisgICAgW01heVRocm93
RXhjZXB0aW9uXSBDb252b2x2ZXJOb2RlIGNyZWF0ZUNvbnZvbHZlcigpOworICAgIFtNYXlUaHJv
d0V4Y2VwdGlvbl0gRHluYW1pY3NDb21wcmVzc29yTm9kZSBjcmVhdGVEeW5hbWljc0NvbXByZXNz
b3IoKTsKKyAgICBbTWF5VGhyb3dFeGNlcHRpb25dIEFuYWx5c2VyTm9kZSBjcmVhdGVBbmFseXNl
cigpOworICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gU2NyaXB0UHJvY2Vzc29yTm9kZSBjcmVhdGVT
Y3JpcHRQcm9jZXNzb3Iob3B0aW9uYWwgdW5zaWduZWQgbG9uZyBidWZmZXJTaXplID0gMCwgb3B0
aW9uYWwgdW5zaWduZWQgbG9uZyBudW1iZXJPZklucHV0Q2hhbm5lbHMgPSAyLCBvcHRpb25hbCB1
bnNpZ25lZCBsb25nIG51bWJlck9mT3V0cHV0Q2hhbm5lbHMgPSAyKTsKKyAgICBbTWF5VGhyb3dF
eGNlcHRpb25dIE9zY2lsbGF0b3JOb2RlIGNyZWF0ZU9zY2lsbGF0b3IoKTsKKyAgICBbTWF5VGhy
b3dFeGNlcHRpb25dIFBlcmlvZGljV2F2ZSBjcmVhdGVQZXJpb2RpY1dhdmUoRmxvYXQzMkFycmF5
IHJlYWwsIEZsb2F0MzJBcnJheSBpbWFnKTsKKworICAgIC8vIENoYW5uZWwgc3BsaXR0aW5nIGFu
ZCBtZXJnaW5nCisgICAgW01heVRocm93RXhjZXB0aW9uXSBDaGFubmVsU3BsaXR0ZXJOb2RlIGNy
ZWF0ZUNoYW5uZWxTcGxpdHRlcihvcHRpb25hbCB1bnNpZ25lZCBsb25nIG51bWJlck9mT3V0cHV0
cyA9IDYpOworICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gQ2hhbm5lbE1lcmdlck5vZGUgY3JlYXRl
Q2hhbm5lbE1lcmdlcihvcHRpb25hbCB1bnNpZ25lZCBsb25nIG51bWJlck9mSW5wdXRzID0gNik7
CisKKyAgICAvLyBPZmZsaW5lIHJlbmRlcmluZworICAgIC8vIHZvaWQgcHJlcGFyZU9mZmxpbmVC
dWZmZXJSZW5kZXJpbmcodW5zaWduZWQgbG9uZyBudW1iZXJPZkNoYW5uZWxzLCB1bnNpZ25lZCBs
b25nIG51bWJlck9mRnJhbWVzLCB1bnJlc3RyaWN0ZWQgZmxvYXQgc2FtcGxlUmF0ZSk7CisgICAg
YXR0cmlidXRlIEV2ZW50SGFuZGxlciBvbmNvbXBsZXRlOworICAgIHZvaWQgc3RhcnRSZW5kZXJp
bmcoKTsKK307CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1dl
YktpdEF1ZGlvUGFubmVyTm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlv
L1dlYktpdEF1ZGlvUGFubmVyTm9kZS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAuLjI1OGY0NWU3Y2ZkCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJhdWRpby9XZWJLaXRBdWRpb1Bhbm5lck5vZGUuY3BwCkBAIC0wLDAgKzEsMzYz
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwLCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkK
KyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04KKyAqIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UworICogU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIldlYktpdEF1
ZGlvUGFubmVyTm9kZS5oIgorCisjaWYgRU5BQkxFKFdFQl9BVURJTykKKworI2luY2x1ZGUgIkF1
ZGlvQnVmZmVyU291cmNlTm9kZS5oIgorI2luY2x1ZGUgIkF1ZGlvQnVzLmgiCisjaW5jbHVkZSAi
QXVkaW9Db250ZXh0LmgiCisjaW5jbHVkZSAiQXVkaW9Ob2RlSW5wdXQuaCIKKyNpbmNsdWRlICJB
dWRpb05vZGVPdXRwdXQuaCIKKyNpbmNsdWRlICJIUlRGRGF0YWJhc2VMb2FkZXIuaCIKKyNpbmNs
dWRlICJIUlRGUGFubmVyLmgiCisjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgor
I2luY2x1ZGUgPHd0Zi9Jc29NYWxsb2NJbmxpbmVzLmg+CisjaW5jbHVkZSA8d3RmL01hdGhFeHRy
YXMuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitXVEZfTUFLRV9JU09fQUxMT0NBVEVEX0lN
UEwoV2ViS2l0QXVkaW9QYW5uZXJOb2RlKTsKKworc3RhdGljIHZvaWQgZml4TkFOcyhkb3VibGUg
JngpCit7CisgICAgaWYgKHN0ZDo6aXNuYW4oeCkgfHwgc3RkOjppc2luZih4KSkKKyAgICAgICAg
eCA9IDAuMDsKK30KKworV2ViS2l0QXVkaW9QYW5uZXJOb2RlOjpXZWJLaXRBdWRpb1Bhbm5lck5v
ZGUoV2ViS2l0QXVkaW9Db250ZXh0JiBjb250ZXh0LCBmbG9hdCBzYW1wbGVSYXRlKQorICAgIDog
UGFubmVyTm9kZUJhc2UoY29udGV4dCwgc2FtcGxlUmF0ZSkKKyAgICAsIG1fcGFubmluZ01vZGVs
KFBhbm5pbmdNb2RlbFR5cGU6OkhSVEYpCisgICAgLCBtX2xhc3RHYWluKC0xLjApCisgICAgLCBt
X2Nvbm5lY3Rpb25Db3VudCgwKQoreworICAgIHNldE5vZGVUeXBlKE5vZGVUeXBlUGFubmVyKTsK
KworICAgIC8vIExvYWQgdGhlIEhSVEYgZGF0YWJhc2UgYXN5bmNocm9ub3VzbHkgc28gd2UgZG9u
J3QgYmxvY2sgdGhlIEphdmFzY3JpcHQgdGhyZWFkIHdoaWxlIGNyZWF0aW5nIHRoZSBIUlRGIGRh
dGFiYXNlLgorICAgIG1faHJ0ZkRhdGFiYXNlTG9hZGVyID0gSFJURkRhdGFiYXNlTG9hZGVyOjpj
cmVhdGVBbmRMb2FkQXN5bmNocm9ub3VzbHlJZk5lY2Vzc2FyeShjb250ZXh0LnNhbXBsZVJhdGUo
KSk7CisKKyAgICBhZGRJbnB1dChtYWtlVW5pcXVlPEF1ZGlvTm9kZUlucHV0Pih0aGlzKSk7Cisg
ICAgYWRkT3V0cHV0KG1ha2VVbmlxdWU8QXVkaW9Ob2RlT3V0cHV0Pih0aGlzLCAyKSk7CisKKyAg
ICAvLyBOb2RlLXNwZWNpZmljIGRlZmF1bHQgbWl4aW5nIHJ1bGVzLgorICAgIG1fY2hhbm5lbENv
dW50ID0gMjsKKyAgICBtX2NoYW5uZWxDb3VudE1vZGUgPSBDbGFtcGVkTWF4OworICAgIG1fY2hh
bm5lbEludGVycHJldGF0aW9uID0gQXVkaW9CdXM6OlNwZWFrZXJzOworCisgICAgbV9kaXN0YW5j
ZUdhaW4gPSBBdWRpb1BhcmFtOjpjcmVhdGUoY29udGV4dCwgImRpc3RhbmNlR2FpbiIsIDEuMCwg
MC4wLCAxLjApOworICAgIG1fY29uZUdhaW4gPSBBdWRpb1BhcmFtOjpjcmVhdGUoY29udGV4dCwg
ImNvbmVHYWluIiwgMS4wLCAwLjAsIDEuMCk7CisKKyAgICBtX3Bvc2l0aW9uID0gRmxvYXRQb2lu
dDNEKDAsIDAsIDApOworICAgIG1fb3JpZW50YXRpb24gPSBGbG9hdFBvaW50M0QoMSwgMCwgMCk7
CisgICAgbV92ZWxvY2l0eSA9IEZsb2F0UG9pbnQzRCgwLCAwLCAwKTsKKworICAgIGluaXRpYWxp
emUoKTsKK30KKworV2ViS2l0QXVkaW9QYW5uZXJOb2RlOjp+V2ViS2l0QXVkaW9QYW5uZXJOb2Rl
KCkKK3sKKyAgICB1bmluaXRpYWxpemUoKTsKK30KKwordm9pZCBXZWJLaXRBdWRpb1Bhbm5lck5v
ZGU6OnB1bGxJbnB1dHMoc2l6ZV90IGZyYW1lc1RvUHJvY2VzcykKK3sKKyAgICAvLyBXZSBvdmVy
cmlkZSBwdWxsSW5wdXRzKCksIHNvIHdlIGNhbiBkZXRlY3QgbmV3IEF1ZGlvU291cmNlTm9kZXMg
d2hpY2ggaGF2ZSBjb25uZWN0ZWQgdG8gdXMgd2hlbiBuZXcgY29ubmVjdGlvbnMgYXJlIG1hZGUu
CisgICAgLy8gVGhlc2UgQXVkaW9Tb3VyY2VOb2RlcyBuZWVkIHRvIGJlIG1hZGUgYXdhcmUgb2Yg
b3VyIGV4aXN0ZW5jZSBpbiBvcmRlciB0byBoYW5kbGUgZG9wcGxlciBzaGlmdCBwaXRjaCBjaGFu
Z2VzLgorICAgIGlmIChtX2Nvbm5lY3Rpb25Db3VudCAhPSBjb250ZXh0KCkuY29ubmVjdGlvbkNv
dW50KCkpIHsKKyAgICAgICAgbV9jb25uZWN0aW9uQ291bnQgPSBjb250ZXh0KCkuY29ubmVjdGlv
bkNvdW50KCk7CisKKyAgICAgICAgLy8gUmVjdXJzaXZlbHkgZ28gdGhyb3VnaCBhbGwgbm9kZXMg
Y29ubmVjdGVkIHRvIHVzLgorICAgICAgICBIYXNoU2V0PEF1ZGlvTm9kZSo+IHZpc2l0ZWROb2Rl
czsKKyAgICAgICAgbm90aWZ5QXVkaW9Tb3VyY2VzQ29ubmVjdGVkVG9Ob2RlKHRoaXMsIHZpc2l0
ZWROb2Rlcyk7CisgICAgfQorCisgICAgQXVkaW9Ob2RlOjpwdWxsSW5wdXRzKGZyYW1lc1RvUHJv
Y2Vzcyk7Cit9CisKK3ZvaWQgV2ViS2l0QXVkaW9QYW5uZXJOb2RlOjpwcm9jZXNzKHNpemVfdCBm
cmFtZXNUb1Byb2Nlc3MpCit7CisgICAgQXVkaW9CdXMqIGRlc3RpbmF0aW9uID0gb3V0cHV0KDAp
LT5idXMoKTsKKworICAgIGlmICghaXNJbml0aWFsaXplZCgpIHx8ICFpbnB1dCgwKS0+aXNDb25u
ZWN0ZWQoKSB8fCAhbV9wYW5uZXIuZ2V0KCkpIHsKKyAgICAgICAgZGVzdGluYXRpb24tPnplcm8o
KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIEF1ZGlvQnVzKiBzb3VyY2UgPSBpbnB1
dCgwKS0+YnVzKCk7CisgICAgaWYgKCFzb3VyY2UpIHsKKyAgICAgICAgZGVzdGluYXRpb24tPnpl
cm8oKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIC8vIEhSVEZEYXRhYmFzZSBzaG91
bGQgYmUgbG9hZGVkIGJlZm9yZSBwcm9jZWVkaW5nIGZvciBvZmZsaW5lIGF1ZGlvIGNvbnRleHQg
d2hlbiBwYW5uaW5nTW9kZWwoKSBpcyAiSFJURiIuCisgICAgaWYgKHBhbm5pbmdNb2RlbCgpID09
IFBhbm5pbmdNb2RlbFR5cGU6OkhSVEYgJiYgIW1faHJ0ZkRhdGFiYXNlTG9hZGVyLT5pc0xvYWRl
ZCgpKSB7CisgICAgICAgIGlmIChjb250ZXh0KCkuaXNPZmZsaW5lQ29udGV4dCgpKQorICAgICAg
ICAgICAgbV9ocnRmRGF0YWJhc2VMb2FkZXItPndhaXRGb3JMb2FkZXJUaHJlYWRDb21wbGV0aW9u
KCk7CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgZGVzdGluYXRpb24tPnplcm8oKTsKKyAg
ICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgIH0KKworICAgIC8vIFRoZSBhdWRpbyB0
aHJlYWQgY2FuJ3QgYmxvY2sgb24gdGhpcyBsb2NrLCBzbyB3ZSB1c2Ugc3RkOjp0cnlfdG9fbG9j
ayBpbnN0ZWFkLgorICAgIHN0ZDo6dW5pcXVlX2xvY2s8TG9jaz4gbG9jayhtX3Bhbm5lck11dGV4
LCBzdGQ6OnRyeV90b19sb2NrKTsKKyAgICBpZiAoIWxvY2sub3duc19sb2NrKCkpIHsKKyAgICAg
ICAgLy8gVG9vIGJhZCAtIFRoZSB0cnlfbG9jaygpIGZhaWxlZC4gV2UgbXVzdCBiZSBpbiB0aGUg
bWlkZGxlIG9mIGNoYW5naW5nIHRoZSBwYW5uZXIuCisgICAgICAgIGRlc3RpbmF0aW9uLT56ZXJv
KCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICAvLyBBcHBseSB0aGUgcGFubmluZyBl
ZmZlY3QuCisgICAgZG91YmxlIGF6aW11dGg7CisgICAgZG91YmxlIGVsZXZhdGlvbjsKKyAgICBn
ZXRBemltdXRoRWxldmF0aW9uKCZhemltdXRoLCAmZWxldmF0aW9uKTsKKyAgICBtX3Bhbm5lci0+
cGFuKGF6aW11dGgsIGVsZXZhdGlvbiwgc291cmNlLCBkZXN0aW5hdGlvbiwgZnJhbWVzVG9Qcm9j
ZXNzKTsKKworICAgIC8vIEdldCB0aGUgZGlzdGFuY2UgYW5kIGNvbmUgZ2Fpbi4KKyAgICBkb3Vi
bGUgdG90YWxHYWluID0gZGlzdGFuY2VDb25lR2FpbigpOworCisgICAgLy8gU25hcCB0byBkZXNp
cmVkIGdhaW4gYXQgdGhlIGJlZ2lubmluZy4KKyAgICBpZiAobV9sYXN0R2FpbiA9PSAtMS4wKQor
ICAgICAgICBtX2xhc3RHYWluID0gdG90YWxHYWluOworCisgICAgLy8gQXBwbHkgZ2FpbiBpbi1w
bGFjZSB3aXRoIGRlLXppcHBlcmluZy4KKyAgICBkZXN0aW5hdGlvbi0+Y29weVdpdGhHYWluRnJv
bSgqZGVzdGluYXRpb24sICZtX2xhc3RHYWluLCB0b3RhbEdhaW4pOworfQorCit2b2lkIFdlYktp
dEF1ZGlvUGFubmVyTm9kZTo6cmVzZXQoKQoreworICAgIG1fbGFzdEdhaW4gPSAtMS4wOyAvLyBm
b3JjZSB0byBzbmFwIHRvIGluaXRpYWwgZ2FpbgorICAgIGlmIChtX3Bhbm5lci5nZXQoKSkKKyAg
ICAgICAgbV9wYW5uZXItPnJlc2V0KCk7Cit9CisKK3ZvaWQgV2ViS2l0QXVkaW9QYW5uZXJOb2Rl
Ojppbml0aWFsaXplKCkKK3sKKyAgICBpZiAoaXNJbml0aWFsaXplZCgpKQorICAgICAgICByZXR1
cm47CisKKyAgICBtX3Bhbm5lciA9IFBhbm5lcjo6Y3JlYXRlKG1fcGFubmluZ01vZGVsLCBzYW1w
bGVSYXRlKCksIG1faHJ0ZkRhdGFiYXNlTG9hZGVyLmdldCgpKTsKKworICAgIEF1ZGlvTm9kZTo6
aW5pdGlhbGl6ZSgpOworfQorCit2b2lkIFdlYktpdEF1ZGlvUGFubmVyTm9kZTo6dW5pbml0aWFs
aXplKCkKK3sKKyAgICBpZiAoIWlzSW5pdGlhbGl6ZWQoKSkKKyAgICAgICAgcmV0dXJuOworCisg
ICAgbV9wYW5uZXIgPSBudWxscHRyOworICAgIEF1ZGlvTm9kZTo6dW5pbml0aWFsaXplKCk7Cit9
CisKK0F1ZGlvTGlzdGVuZXIqIFdlYktpdEF1ZGlvUGFubmVyTm9kZTo6bGlzdGVuZXIoKQorewor
ICAgIHJldHVybiBjb250ZXh0KCkubGlzdGVuZXIoKTsKK30KKwordm9pZCBXZWJLaXRBdWRpb1Bh
bm5lck5vZGU6OnNldFBhbm5pbmdNb2RlbChQYW5uaW5nTW9kZWxUeXBlIG1vZGVsKQoreworICAg
IGlmICghbV9wYW5uZXIuZ2V0KCkgfHwgbW9kZWwgIT0gbV9wYW5uaW5nTW9kZWwpIHsKKyAgICAg
ICAgLy8gVGhpcyBzeW5jaHJvbml6ZXMgd2l0aCBwcm9jZXNzKCkuCisgICAgICAgIGF1dG8gbG9j
a2VyID0gaG9sZExvY2sobV9wYW5uZXJNdXRleCk7CisKKyAgICAgICAgbV9wYW5uZXIgPSBQYW5u
ZXI6OmNyZWF0ZShtb2RlbCwgc2FtcGxlUmF0ZSgpLCBtX2hydGZEYXRhYmFzZUxvYWRlci5nZXQo
KSk7CisgICAgICAgIG1fcGFubmluZ01vZGVsID0gbW9kZWw7CisgICAgfQorfQorCitEaXN0YW5j
ZU1vZGVsVHlwZSBXZWJLaXRBdWRpb1Bhbm5lck5vZGU6OmRpc3RhbmNlTW9kZWwoKSBjb25zdAor
eworICAgIHJldHVybiBjb25zdF9jYXN0PFdlYktpdEF1ZGlvUGFubmVyTm9kZSo+KHRoaXMpLT5t
X2Rpc3RhbmNlRWZmZWN0Lm1vZGVsKCk7Cit9CisKK3ZvaWQgV2ViS2l0QXVkaW9QYW5uZXJOb2Rl
OjpzZXREaXN0YW5jZU1vZGVsKERpc3RhbmNlTW9kZWxUeXBlIG1vZGVsKQoreworICAgIG1fZGlz
dGFuY2VFZmZlY3Quc2V0TW9kZWwobW9kZWwsIHRydWUpOworfQorCit2b2lkIFdlYktpdEF1ZGlv
UGFubmVyTm9kZTo6Z2V0QXppbXV0aEVsZXZhdGlvbihkb3VibGUqIG91dEF6aW11dGgsIGRvdWJs
ZSogb3V0RWxldmF0aW9uKQoreworICAgIC8vIEZJWE1FOiB3ZSBzaG91bGQgY2FjaGUgYXppbXV0
aCBhbmQgZWxldmF0aW9uIChpZiBwb3NzaWJsZSksIHNvIHdlIG9ubHkgcmUtY2FsY3VsYXRlIGlm
IGEgY2hhbmdlIGhhcyBiZWVuIG1hZGUuCisKKyAgICBkb3VibGUgYXppbXV0aCA9IDAuMDsKKwor
ICAgIC8vIENhbGN1bGF0ZSB0aGUgc291cmNlLWxpc3RlbmVyIHZlY3RvcgorICAgIEZsb2F0UG9p
bnQzRCBsaXN0ZW5lclBvc2l0aW9uID0gbGlzdGVuZXIoKS0+cG9zaXRpb24oKTsKKyAgICBGbG9h
dFBvaW50M0Qgc291cmNlTGlzdGVuZXIgPSBwb3NpdGlvbigpIC0gbGlzdGVuZXJQb3NpdGlvbjsK
KworICAgIGlmIChzb3VyY2VMaXN0ZW5lci5pc1plcm8oKSkgeworICAgICAgICAvLyBkZWdlbmVy
YXRlIGNhc2UgaWYgc291cmNlIGFuZCBsaXN0ZW5lciBhcmUgYXQgdGhlIHNhbWUgcG9pbnQKKyAg
ICAgICAgKm91dEF6aW11dGggPSAwLjA7CisgICAgICAgICpvdXRFbGV2YXRpb24gPSAwLjA7Cisg
ICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBzb3VyY2VMaXN0ZW5lci5ub3JtYWxpemUoKTsK
KworICAgIC8vIEFsaWduIGF4ZXMKKyAgICBGbG9hdFBvaW50M0QgbGlzdGVuZXJGcm9udCA9IGxp
c3RlbmVyKCktPm9yaWVudGF0aW9uKCk7CisgICAgRmxvYXRQb2ludDNEIGxpc3RlbmVyVXAgPSBs
aXN0ZW5lcigpLT51cFZlY3RvcigpOworICAgIEZsb2F0UG9pbnQzRCBsaXN0ZW5lclJpZ2h0ID0g
bGlzdGVuZXJGcm9udC5jcm9zcyhsaXN0ZW5lclVwKTsKKyAgICBsaXN0ZW5lclJpZ2h0Lm5vcm1h
bGl6ZSgpOworCisgICAgRmxvYXRQb2ludDNEIGxpc3RlbmVyRnJvbnROb3JtID0gbGlzdGVuZXJG
cm9udDsKKyAgICBsaXN0ZW5lckZyb250Tm9ybS5ub3JtYWxpemUoKTsKKworICAgIEZsb2F0UG9p
bnQzRCB1cCA9IGxpc3RlbmVyUmlnaHQuY3Jvc3MobGlzdGVuZXJGcm9udE5vcm0pOworCisgICAg
ZmxvYXQgdXBQcm9qZWN0aW9uID0gc291cmNlTGlzdGVuZXIuZG90KHVwKTsKKworICAgIEZsb2F0
UG9pbnQzRCBwcm9qZWN0ZWRTb3VyY2UgPSBzb3VyY2VMaXN0ZW5lciAtIHVwUHJvamVjdGlvbiAq
IHVwOworICAgIHByb2plY3RlZFNvdXJjZS5ub3JtYWxpemUoKTsKKworICAgIGF6aW11dGggPSAx
ODAuMCAqIGFjb3MocHJvamVjdGVkU291cmNlLmRvdChsaXN0ZW5lclJpZ2h0KSkgLyBwaURvdWJs
ZTsKKyAgICBmaXhOQU5zKGF6aW11dGgpOyAvLyBhdm9pZCBpbGxlZ2FsIHZhbHVlcworCisgICAg
Ly8gU291cmNlICBpbiBmcm9udCBvciBiZWhpbmQgdGhlIGxpc3RlbmVyCisgICAgZG91YmxlIGZy
b250QmFjayA9IHByb2plY3RlZFNvdXJjZS5kb3QobGlzdGVuZXJGcm9udE5vcm0pOworICAgIGlm
IChmcm9udEJhY2sgPCAwLjApCisgICAgICAgIGF6aW11dGggPSAzNjAuMCAtIGF6aW11dGg7CisK
KyAgICAvLyBNYWtlIGF6aW11dGggcmVsYXRpdmUgdG8gImZyb250IiBhbmQgbm90ICJyaWdodCIg
bGlzdGVuZXIgdmVjdG9yCisgICAgaWYgKChhemltdXRoID49IDAuMCkgJiYgKGF6aW11dGggPD0g
MjcwLjApKQorICAgICAgICBhemltdXRoID0gOTAuMCAtIGF6aW11dGg7CisgICAgZWxzZQorICAg
ICAgICBhemltdXRoID0gNDUwLjAgLSBhemltdXRoOworCisgICAgLy8gRWxldmF0aW9uCisgICAg
ZG91YmxlIGVsZXZhdGlvbiA9IDkwLjAgLSAxODAuMCAqIGFjb3Moc291cmNlTGlzdGVuZXIuZG90
KHVwKSkgLyBwaURvdWJsZTsKKyAgICBmaXhOQU5zKGVsZXZhdGlvbik7IC8vIGF2b2lkIGlsbGVn
YWwgdmFsdWVzCisKKyAgICBpZiAoZWxldmF0aW9uID4gOTAuMCkKKyAgICAgICAgZWxldmF0aW9u
ID0gMTgwLjAgLSBlbGV2YXRpb247CisgICAgZWxzZSBpZiAoZWxldmF0aW9uIDwgLTkwLjApCisg
ICAgICAgIGVsZXZhdGlvbiA9IC0xODAuMCAtIGVsZXZhdGlvbjsKKworICAgIGlmIChvdXRBemlt
dXRoKQorICAgICAgICAqb3V0QXppbXV0aCA9IGF6aW11dGg7CisgICAgaWYgKG91dEVsZXZhdGlv
bikKKyAgICAgICAgKm91dEVsZXZhdGlvbiA9IGVsZXZhdGlvbjsKK30KKworZmxvYXQgV2ViS2l0
QXVkaW9QYW5uZXJOb2RlOjpkb3BwbGVyUmF0ZSgpCit7CisgICAgZG91YmxlIGRvcHBsZXJTaGlm
dCA9IDEuMDsKKworICAgIC8vIEZJWE1FOiBvcHRpbWl6ZSBmb3IgY2FzZSB3aGVuIG5laXRoZXIg
c291cmNlIG5vciBsaXN0ZW5lciBoYXMgY2hhbmdlZC4uLgorICAgIGRvdWJsZSBkb3BwbGVyRmFj
dG9yID0gbGlzdGVuZXIoKS0+ZG9wcGxlckZhY3RvcigpOworCisgICAgaWYgKGRvcHBsZXJGYWN0
b3IgPiAwLjApIHsKKyAgICAgICAgZG91YmxlIHNwZWVkT2ZTb3VuZCA9IGxpc3RlbmVyKCktPnNw
ZWVkT2ZTb3VuZCgpOworCisgICAgICAgIGNvbnN0IEZsb2F0UG9pbnQzRCAmc291cmNlVmVsb2Np
dHkgPSBtX3ZlbG9jaXR5OworICAgICAgICBjb25zdCBGbG9hdFBvaW50M0QgJmxpc3RlbmVyVmVs
b2NpdHkgPSBsaXN0ZW5lcigpLT52ZWxvY2l0eSgpOworCisgICAgICAgIC8vIERvbid0IGJvdGhl
ciBpZiBib3RoIHNvdXJjZSBhbmQgbGlzdGVuZXIgaGF2ZSBubyB2ZWxvY2l0eQorICAgICAgICBi
b29sIHNvdXJjZUhhc1ZlbG9jaXR5ID0gIXNvdXJjZVZlbG9jaXR5LmlzWmVybygpOworICAgICAg
ICBib29sIGxpc3RlbmVySGFzVmVsb2NpdHkgPSAhbGlzdGVuZXJWZWxvY2l0eS5pc1plcm8oKTsK
KworICAgICAgICBpZiAoc291cmNlSGFzVmVsb2NpdHkgfHwgbGlzdGVuZXJIYXNWZWxvY2l0eSkg
eworICAgICAgICAgICAgLy8gQ2FsY3VsYXRlIHRoZSBzb3VyY2UgdG8gbGlzdGVuZXIgdmVjdG9y
CisgICAgICAgICAgICBGbG9hdFBvaW50M0QgbGlzdGVuZXJQb3NpdGlvbiA9IGxpc3RlbmVyKCkt
PnBvc2l0aW9uKCk7CisgICAgICAgICAgICBGbG9hdFBvaW50M0Qgc291cmNlVG9MaXN0ZW5lciA9
IHBvc2l0aW9uKCkgLSBsaXN0ZW5lclBvc2l0aW9uOworCisgICAgICAgICAgICBkb3VibGUgc291
cmNlTGlzdGVuZXJNYWduaXR1ZGUgPSBzb3VyY2VUb0xpc3RlbmVyLmxlbmd0aCgpOworCisgICAg
ICAgICAgICBkb3VibGUgbGlzdGVuZXJQcm9qZWN0aW9uID0gc291cmNlVG9MaXN0ZW5lci5kb3Qo
bGlzdGVuZXJWZWxvY2l0eSkgLyBzb3VyY2VMaXN0ZW5lck1hZ25pdHVkZTsKKyAgICAgICAgICAg
IGRvdWJsZSBzb3VyY2VQcm9qZWN0aW9uID0gc291cmNlVG9MaXN0ZW5lci5kb3Qoc291cmNlVmVs
b2NpdHkpIC8gc291cmNlTGlzdGVuZXJNYWduaXR1ZGU7CisKKyAgICAgICAgICAgIGxpc3RlbmVy
UHJvamVjdGlvbiA9IC1saXN0ZW5lclByb2plY3Rpb247CisgICAgICAgICAgICBzb3VyY2VQcm9q
ZWN0aW9uID0gLXNvdXJjZVByb2plY3Rpb247CisKKyAgICAgICAgICAgIGRvdWJsZSBzY2FsZWRT
cGVlZE9mU291bmQgPSBzcGVlZE9mU291bmQgLyBkb3BwbGVyRmFjdG9yOworICAgICAgICAgICAg
bGlzdGVuZXJQcm9qZWN0aW9uID0gc3RkOjptaW4obGlzdGVuZXJQcm9qZWN0aW9uLCBzY2FsZWRT
cGVlZE9mU291bmQpOworICAgICAgICAgICAgc291cmNlUHJvamVjdGlvbiA9IHN0ZDo6bWluKHNv
dXJjZVByb2plY3Rpb24sIHNjYWxlZFNwZWVkT2ZTb3VuZCk7CisKKyAgICAgICAgICAgIGRvcHBs
ZXJTaGlmdCA9ICgoc3BlZWRPZlNvdW5kIC0gZG9wcGxlckZhY3RvciAqIGxpc3RlbmVyUHJvamVj
dGlvbikgLyAoc3BlZWRPZlNvdW5kIC0gZG9wcGxlckZhY3RvciAqIHNvdXJjZVByb2plY3Rpb24p
KTsKKyAgICAgICAgICAgIGZpeE5BTnMoZG9wcGxlclNoaWZ0KTsgLy8gYXZvaWQgaWxsZWdhbCB2
YWx1ZXMKKworICAgICAgICAgICAgLy8gTGltaXQgdGhlIHBpdGNoIHNoaWZ0aW5nIHRvIDQgb2N0
YXZlcyB1cCBhbmQgMyBvY3RhdmVzIGRvd24uCisgICAgICAgICAgICBpZiAoZG9wcGxlclNoaWZ0
ID4gMTYuMCkKKyAgICAgICAgICAgICAgICBkb3BwbGVyU2hpZnQgPSAxNi4wOworICAgICAgICAg
ICAgZWxzZSBpZiAoZG9wcGxlclNoaWZ0IDwgMC4xMjUpCisgICAgICAgICAgICAgICAgZG9wcGxl
clNoaWZ0ID0gMC4xMjU7CisgICAgICAgIH0KKyAgICB9CisKKyAgICByZXR1cm4gc3RhdGljX2Nh
c3Q8ZmxvYXQ+KGRvcHBsZXJTaGlmdCk7Cit9CisKK2Zsb2F0IFdlYktpdEF1ZGlvUGFubmVyTm9k
ZTo6ZGlzdGFuY2VDb25lR2FpbigpCit7CisgICAgRmxvYXRQb2ludDNEIGxpc3RlbmVyUG9zaXRp
b24gPSBsaXN0ZW5lcigpLT5wb3NpdGlvbigpOworICAgIEZsb2F0UG9pbnQzRCBzb3VyY2VQb3Np
dGlvbiA9IHBvc2l0aW9uKCk7CisKKyAgICBkb3VibGUgbGlzdGVuZXJEaXN0YW5jZSA9IHNvdXJj
ZVBvc2l0aW9uLmRpc3RhbmNlVG8obGlzdGVuZXJQb3NpdGlvbik7CisgICAgZG91YmxlIGRpc3Rh
bmNlR2FpbiA9IG1fZGlzdGFuY2VFZmZlY3QuZ2FpbihsaXN0ZW5lckRpc3RhbmNlKTsKKworICAg
IG1fZGlzdGFuY2VHYWluLT5zZXRWYWx1ZShzdGF0aWNfY2FzdDxmbG9hdD4oZGlzdGFuY2VHYWlu
KSk7CisKKyAgICAvLyBGSVhNRTogY291bGQgb3B0aW1pemUgYnkgY2FjaGluZyBjb25lR2Fpbgor
ICAgIGRvdWJsZSBjb25lR2FpbiA9IG1fY29uZUVmZmVjdC5nYWluKHNvdXJjZVBvc2l0aW9uLCBt
X29yaWVudGF0aW9uLCBsaXN0ZW5lclBvc2l0aW9uKTsKKworICAgIG1fY29uZUdhaW4tPnNldFZh
bHVlKHN0YXRpY19jYXN0PGZsb2F0Pihjb25lR2FpbikpOworCisgICAgcmV0dXJuIGZsb2F0KGRp
c3RhbmNlR2FpbiAqIGNvbmVHYWluKTsKK30KKwordm9pZCBXZWJLaXRBdWRpb1Bhbm5lck5vZGU6
Om5vdGlmeUF1ZGlvU291cmNlc0Nvbm5lY3RlZFRvTm9kZShBdWRpb05vZGUqIG5vZGUsIEhhc2hT
ZXQ8QXVkaW9Ob2RlKj4mIHZpc2l0ZWROb2RlcykKK3sKKyAgICBBU1NFUlQobm9kZSk7CisgICAg
aWYgKCFub2RlKQorICAgICAgICByZXR1cm47CisKKyAgICAvLyBGaXJzdCBjaGVjayBpZiB0aGlz
IG5vZGUgaXMgYW4gQXVkaW9CdWZmZXJTb3VyY2VOb2RlLiBJZiBzbywgbGV0IGl0IGtub3cgYWJv
dXQgdXMgc28gdGhhdCBkb3BwbGVyIHNoaWZ0IHBpdGNoIGNhbiBiZSB0YWtlbiBpbnRvIGFjY291
bnQuCisgICAgaWYgKG5vZGUtPm5vZGVUeXBlKCkgPT0gTm9kZVR5cGVBdWRpb0J1ZmZlclNvdXJj
ZSkgeworICAgICAgICBBdWRpb0J1ZmZlclNvdXJjZU5vZGUqIGJ1ZmZlclNvdXJjZU5vZGUgPSBy
ZWludGVycHJldF9jYXN0PEF1ZGlvQnVmZmVyU291cmNlTm9kZSo+KG5vZGUpOworICAgICAgICBi
dWZmZXJTb3VyY2VOb2RlLT5zZXRQYW5uZXJOb2RlKHRoaXMpOworICAgIH0gZWxzZSB7CisgICAg
ICAgIC8vIEdvIHRocm91Z2ggYWxsIGlucHV0cyB0byB0aGlzIG5vZGUuCisgICAgICAgIGZvciAo
dW5zaWduZWQgaSA9IDA7IGkgPCBub2RlLT5udW1iZXJPZklucHV0cygpOyArK2kpIHsKKyAgICAg
ICAgICAgIEF1ZGlvTm9kZUlucHV0KiBpbnB1dCA9IG5vZGUtPmlucHV0KGkpOworCisgICAgICAg
ICAgICAvLyBGb3IgZWFjaCBpbnB1dCwgZ28gdGhyb3VnaCBhbGwgb2YgaXRzIGNvbm5lY3Rpb25z
LCBsb29raW5nIGZvciBBdWRpb0J1ZmZlclNvdXJjZU5vZGVzLgorICAgICAgICAgICAgZm9yICh1
bnNpZ25lZCBqID0gMDsgaiA8IGlucHV0LT5udW1iZXJPZlJlbmRlcmluZ0Nvbm5lY3Rpb25zKCk7
ICsraikgeworICAgICAgICAgICAgICAgIEF1ZGlvTm9kZU91dHB1dCogY29ubmVjdGVkT3V0cHV0
ID0gaW5wdXQtPnJlbmRlcmluZ091dHB1dChqKTsKKyAgICAgICAgICAgICAgICBBdWRpb05vZGUq
IGNvbm5lY3RlZE5vZGUgPSBjb25uZWN0ZWRPdXRwdXQtPm5vZGUoKTsKKyAgICAgICAgICAgICAg
ICBpZiAodmlzaXRlZE5vZGVzLmNvbnRhaW5zKGNvbm5lY3RlZE5vZGUpKQorICAgICAgICAgICAg
ICAgICAgICBjb250aW51ZTsKKworICAgICAgICAgICAgICAgIHZpc2l0ZWROb2Rlcy5hZGQoY29u
bmVjdGVkTm9kZSk7CisgICAgICAgICAgICAgICAgbm90aWZ5QXVkaW9Tb3VyY2VzQ29ubmVjdGVk
VG9Ob2RlKGNvbm5lY3RlZE5vZGUsIHZpc2l0ZWROb2Rlcyk7CisgICAgICAgICAgICB9CisgICAg
ICAgIH0KKyAgICB9Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVO
QUJMRShXRUJfQVVESU8pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1
ZGlvL1dlYktpdEF1ZGlvUGFubmVyTm9kZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJh
dWRpby9XZWJLaXRBdWRpb1Bhbm5lck5vZGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMC4uODk3OTdjM2M0YzUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmF1ZGlvL1dlYktpdEF1ZGlvUGFubmVyTm9kZS5oCkBAIC0wLDAgKzEsMTYw
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwLCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkK
KyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04KKyAqIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UworICogU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoV0VCX0FVRElPKQor
CisjaW5jbHVkZSAiQXVkaW9MaXN0ZW5lci5oIgorI2luY2x1ZGUgIkF1ZGlvTm9kZS5oIgorI2lu
Y2x1ZGUgIkF1ZGlvUGFyYW0uaCIKKyNpbmNsdWRlICJDb25lLmgiCisjaW5jbHVkZSAiRGlzdGFu
Y2UuaCIKKyNpbmNsdWRlICJGbG9hdFBvaW50M0QuaCIKKyNpbmNsdWRlICJQYW5uZXIuaCIKKyNp
bmNsdWRlICJQYW5uZXJOb2RlLmgiCisjaW5jbHVkZSAiV2ViS2l0QXVkaW9Db250ZXh0LmgiCisj
aW5jbHVkZSA8bWVtb3J5PgorI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CisjaW5jbHVkZSA8d3Rm
L0xvY2suaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBIUlRGRGF0YWJhc2VMb2Fk
ZXI7CisKKy8vIFBhbm5lck5vZGUgaXMgYW4gQXVkaW9Ob2RlIHdpdGggb25lIGlucHV0IGFuZCBv
bmUgb3V0cHV0LgorLy8gSXQgcG9zaXRpb25zIGEgc291bmQgaW4gM0Qgc3BhY2UsIHdpdGggdGhl
IGV4YWN0IGVmZmVjdCBkZXBlbmRlbnQgb24gdGhlIHBhbm5pbmcgbW9kZWwuCisvLyBJdCBoYXMg
YSBwb3NpdGlvbiBhbmQgYW4gb3JpZW50YXRpb24gaW4gM0Qgc3BhY2Ugd2hpY2ggaXMgcmVsYXRp
dmUgdG8gdGhlIHBvc2l0aW9uIGFuZCBvcmllbnRhdGlvbiBvZiB0aGUgY29udGV4dCdzIEF1ZGlv
TGlzdGVuZXIuCisvLyBBIGRpc3RhbmNlIGVmZmVjdCB3aWxsIGF0dGVudWF0ZSB0aGUgZ2FpbiBh
cyB0aGUgcG9zaXRpb24gbW92ZXMgYXdheSBmcm9tIHRoZSBsaXN0ZW5lci4KKy8vIEEgY29uZSBl
ZmZlY3Qgd2lsbCBhdHRlbnVhdGUgdGhlIGdhaW4gYXMgdGhlIG9yaWVudGF0aW9uIG1vdmVzIGF3
YXkgZnJvbSB0aGUgbGlzdGVuZXIuCisvLyBBbGwgb2YgdGhlc2UgZWZmZWN0cyBmb2xsb3cgdGhl
IE9wZW5BTCBzcGVjaWZpY2F0aW9uIHZlcnkgY2xvc2VseS4KKworY2xhc3MgV2ViS2l0QXVkaW9Q
YW5uZXJOb2RlIGZpbmFsIDogcHVibGljIFBhbm5lck5vZGVCYXNlIHsKKyAgICBXVEZfTUFLRV9J
U09fQUxMT0NBVEVEKFdlYktpdEF1ZGlvUGFubmVyTm9kZSk7CitwdWJsaWM6CisgICAgc3RhdGlj
IFJlZjxXZWJLaXRBdWRpb1Bhbm5lck5vZGU+IGNyZWF0ZShXZWJLaXRBdWRpb0NvbnRleHQmIGNv
bnRleHQsIGZsb2F0IHNhbXBsZVJhdGUpCisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRSZWYo
Km5ldyBXZWJLaXRBdWRpb1Bhbm5lck5vZGUoY29udGV4dCwgc2FtcGxlUmF0ZSkpOworICAgIH0K
KworICAgIHZpcnR1YWwgfldlYktpdEF1ZGlvUGFubmVyTm9kZSgpOworCisgICAgV2ViS2l0QXVk
aW9Db250ZXh0JiBjb250ZXh0KCkgeyByZXR1cm4gZG93bmNhc3Q8V2ViS2l0QXVkaW9Db250ZXh0
PihBdWRpb05vZGU6OmNvbnRleHQoKSk7IH0KKyAgICBjb25zdCBXZWJLaXRBdWRpb0NvbnRleHQm
IGNvbnRleHQoKSBjb25zdCB7IHJldHVybiBkb3duY2FzdDxXZWJLaXRBdWRpb0NvbnRleHQ+KEF1
ZGlvTm9kZTo6Y29udGV4dCgpKTsgfQorCisgICAgLy8gQXVkaW9Ob2RlCisgICAgdm9pZCBwcm9j
ZXNzKHNpemVfdCBmcmFtZXNUb1Byb2Nlc3MpIG92ZXJyaWRlOworICAgIHZvaWQgcHVsbElucHV0
cyhzaXplX3QgZnJhbWVzVG9Qcm9jZXNzKSBvdmVycmlkZTsKKyAgICB2b2lkIHJlc2V0KCkgb3Zl
cnJpZGU7CisgICAgdm9pZCBpbml0aWFsaXplKCkgb3ZlcnJpZGU7CisgICAgdm9pZCB1bmluaXRp
YWxpemUoKSBvdmVycmlkZTsKKworICAgIC8vIExpc3RlbmVyCisgICAgQXVkaW9MaXN0ZW5lciog
bGlzdGVuZXIoKTsKKworICAgIC8vIFBhbm5pbmcgbW9kZWwKKyAgICBQYW5uaW5nTW9kZWxUeXBl
IHBhbm5pbmdNb2RlbCgpIGNvbnN0IHsgcmV0dXJuIG1fcGFubmluZ01vZGVsOyB9CisgICAgdm9p
ZCBzZXRQYW5uaW5nTW9kZWwoUGFubmluZ01vZGVsVHlwZSk7CisKKyAgICAvLyBQb3NpdGlvbgor
ICAgIEZsb2F0UG9pbnQzRCBwb3NpdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fcG9zaXRpb247IH0K
KyAgICB2b2lkIHNldFBvc2l0aW9uKGZsb2F0IHgsIGZsb2F0IHksIGZsb2F0IHopIHsgbV9wb3Np
dGlvbiA9IEZsb2F0UG9pbnQzRCh4LCB5LCB6KTsgfQorCisgICAgLy8gT3JpZW50YXRpb24KKyAg
ICBGbG9hdFBvaW50M0Qgb3JpZW50YXRpb24oKSBjb25zdCB7IHJldHVybiBtX29yaWVudGF0aW9u
OyB9CisgICAgdm9pZCBzZXRPcmllbnRhdGlvbihmbG9hdCB4LCBmbG9hdCB5LCBmbG9hdCB6KSB7
IG1fb3JpZW50YXRpb24gPSBGbG9hdFBvaW50M0QoeCwgeSwgeik7IH0KKworICAgIC8vIFZlbG9j
aXR5CisgICAgRmxvYXRQb2ludDNEIHZlbG9jaXR5KCkgY29uc3QgeyByZXR1cm4gbV92ZWxvY2l0
eTsgfQorICAgIHZvaWQgc2V0VmVsb2NpdHkoZmxvYXQgeCwgZmxvYXQgeSwgZmxvYXQgeikgeyBt
X3ZlbG9jaXR5ID0gRmxvYXRQb2ludDNEKHgsIHksIHopOyB9CisKKyAgICAvLyBEaXN0YW5jZSBw
YXJhbWV0ZXJzCisgICAgRGlzdGFuY2VNb2RlbFR5cGUgZGlzdGFuY2VNb2RlbCgpIGNvbnN0Owor
ICAgIHZvaWQgc2V0RGlzdGFuY2VNb2RlbChEaXN0YW5jZU1vZGVsVHlwZSk7CisKKyAgICBkb3Vi
bGUgcmVmRGlzdGFuY2UoKSB7IHJldHVybiBtX2Rpc3RhbmNlRWZmZWN0LnJlZkRpc3RhbmNlKCk7
IH0KKyAgICB2b2lkIHNldFJlZkRpc3RhbmNlKGRvdWJsZSByZWZEaXN0YW5jZSkgeyBtX2Rpc3Rh
bmNlRWZmZWN0LnNldFJlZkRpc3RhbmNlKHJlZkRpc3RhbmNlKTsgfQorCisgICAgZG91YmxlIG1h
eERpc3RhbmNlKCkgeyByZXR1cm4gbV9kaXN0YW5jZUVmZmVjdC5tYXhEaXN0YW5jZSgpOyB9Cisg
ICAgdm9pZCBzZXRNYXhEaXN0YW5jZShkb3VibGUgbWF4RGlzdGFuY2UpIHsgbV9kaXN0YW5jZUVm
ZmVjdC5zZXRNYXhEaXN0YW5jZShtYXhEaXN0YW5jZSk7IH0KKworICAgIGRvdWJsZSByb2xsb2Zm
RmFjdG9yKCkgeyByZXR1cm4gbV9kaXN0YW5jZUVmZmVjdC5yb2xsb2ZmRmFjdG9yKCk7IH0KKyAg
ICB2b2lkIHNldFJvbGxvZmZGYWN0b3IoZG91YmxlIHJvbGxvZmZGYWN0b3IpIHsgbV9kaXN0YW5j
ZUVmZmVjdC5zZXRSb2xsb2ZmRmFjdG9yKHJvbGxvZmZGYWN0b3IpOyB9CisKKyAgICAvLyBTb3Vu
ZCBjb25lcyAtIGFuZ2xlcyBpbiBkZWdyZWVzCisgICAgZG91YmxlIGNvbmVJbm5lckFuZ2xlKCkg
Y29uc3QgeyByZXR1cm4gbV9jb25lRWZmZWN0LmlubmVyQW5nbGUoKTsgfQorICAgIHZvaWQgc2V0
Q29uZUlubmVyQW5nbGUoZG91YmxlIGFuZ2xlKSB7IG1fY29uZUVmZmVjdC5zZXRJbm5lckFuZ2xl
KGFuZ2xlKTsgfQorCisgICAgZG91YmxlIGNvbmVPdXRlckFuZ2xlKCkgY29uc3QgeyByZXR1cm4g
bV9jb25lRWZmZWN0Lm91dGVyQW5nbGUoKTsgfQorICAgIHZvaWQgc2V0Q29uZU91dGVyQW5nbGUo
ZG91YmxlIGFuZ2xlKSB7IG1fY29uZUVmZmVjdC5zZXRPdXRlckFuZ2xlKGFuZ2xlKTsgfQorCisg
ICAgZG91YmxlIGNvbmVPdXRlckdhaW4oKSBjb25zdCB7IHJldHVybiBtX2NvbmVFZmZlY3Qub3V0
ZXJHYWluKCk7IH0KKyAgICB2b2lkIHNldENvbmVPdXRlckdhaW4oZG91YmxlIGFuZ2xlKSB7IG1f
Y29uZUVmZmVjdC5zZXRPdXRlckdhaW4oYW5nbGUpOyB9CisKKyAgICB2b2lkIGdldEF6aW11dGhF
bGV2YXRpb24oZG91YmxlKiBvdXRBemltdXRoLCBkb3VibGUqIG91dEVsZXZhdGlvbik7CisgICAg
ZmxvYXQgZG9wcGxlclJhdGUoKSBmaW5hbDsKKworICAgIC8vIEFjY2Vzc29ycyBmb3IgZHluYW1p
Y2FsbHkgY2FsY3VsYXRlZCBnYWluIHZhbHVlcy4KKyAgICBBdWRpb1BhcmFtKiBkaXN0YW5jZUdh
aW4oKSB7IHJldHVybiBtX2Rpc3RhbmNlR2Fpbi5nZXQoKTsgfQorICAgIEF1ZGlvUGFyYW0qIGNv
bmVHYWluKCkgeyByZXR1cm4gbV9jb25lR2Fpbi5nZXQoKTsgfQorCisgICAgZG91YmxlIHRhaWxU
aW1lKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9wYW5uZXIgPyBtX3Bhbm5lci0+dGFpbFRp
bWUoKSA6IDA7IH0KKyAgICBkb3VibGUgbGF0ZW5jeVRpbWUoKSBjb25zdCBvdmVycmlkZSB7IHJl
dHVybiBtX3Bhbm5lciA/IG1fcGFubmVyLT5sYXRlbmN5VGltZSgpIDogMDsgfQorCitwcml2YXRl
OgorICAgIFdlYktpdEF1ZGlvUGFubmVyTm9kZShXZWJLaXRBdWRpb0NvbnRleHQmLCBmbG9hdCBz
YW1wbGVSYXRlKTsKKworICAgIC8vIFJldHVybnMgdGhlIGNvbWJpbmVkIGRpc3RhbmNlIGFuZCBj
b25lIGdhaW4gYXR0ZW51YXRpb24uCisgICAgZmxvYXQgZGlzdGFuY2VDb25lR2FpbigpOworCisg
ICAgLy8gTm90aWZpZXMgYW55IEF1ZGlvQnVmZmVyU291cmNlTm9kZXMgY29ubmVjdGVkIHRvIHVz
IGVpdGhlciBkaXJlY3RseSBvciBpbmRpcmVjdGx5IGFib3V0IG91ciBleGlzdGVuY2UuCisgICAg
Ly8gVGhpcyBpcyBpbiBvcmRlciB0byBoYW5kbGUgdGhlIHBpdGNoIGNoYW5nZSBuZWNlc3Nhcnkg
Zm9yIHRoZSBkb3BwbGVyIHNoaWZ0LgorICAgIHZvaWQgbm90aWZ5QXVkaW9Tb3VyY2VzQ29ubmVj
dGVkVG9Ob2RlKEF1ZGlvTm9kZSosIEhhc2hTZXQ8QXVkaW9Ob2RlKj4mIHZpc2l0ZWROb2Rlcyk7
CisKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8UGFubmVyPiBtX3Bhbm5lcjsKKyAgICBQYW5uaW5nTW9k
ZWxUeXBlIG1fcGFubmluZ01vZGVsOworCisgICAgRmxvYXRQb2ludDNEIG1fcG9zaXRpb247Cisg
ICAgRmxvYXRQb2ludDNEIG1fb3JpZW50YXRpb247CisgICAgRmxvYXRQb2ludDNEIG1fdmVsb2Np
dHk7CisKKyAgICAvLyBHYWluCisgICAgUmVmUHRyPEF1ZGlvUGFyYW0+IG1fZGlzdGFuY2VHYWlu
OworICAgIFJlZlB0cjxBdWRpb1BhcmFtPiBtX2NvbmVHYWluOworICAgIERpc3RhbmNlRWZmZWN0
IG1fZGlzdGFuY2VFZmZlY3Q7CisgICAgQ29uZUVmZmVjdCBtX2NvbmVFZmZlY3Q7CisgICAgZmxv
YXQgbV9sYXN0R2FpbjsKKworICAgIC8vIEhSVEYgRGF0YWJhc2UgbG9hZGVyCisgICAgUmVmUHRy
PEhSVEZEYXRhYmFzZUxvYWRlcj4gbV9ocnRmRGF0YWJhc2VMb2FkZXI7CisKKyAgICB1bnNpZ25l
ZCBtX2Nvbm5lY3Rpb25Db3VudDsKKworICAgIC8vIFN5bmNocm9uaXplIHByb2Nlc3MoKSBhbmQg
c2V0UGFubmluZ01vZGVsKCkgd2hpY2ggY2FuIGNoYW5nZSB0aGUgcGFubmVyLgorICAgIG11dGFi
bGUgTG9jayBtX3Bhbm5lck11dGV4OworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisj
ZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vV2ViS2l0
QXVkaW9QYW5uZXJOb2RlLmlkbCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vV2Vi
S2l0QXVkaW9QYW5uZXJOb2RlLmlkbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMC4uODhkMjY5MTBhZTEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmF1ZGlvL1dlYktpdEF1ZGlvUGFubmVyTm9kZS5pZGwKQEAgLTAsMCArMSw0OSBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCwgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuICBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUg
SU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OCisgKiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKKyAq
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKK1sKKyAgICBDb25kaXRpb25hbD1XRUJfQVVESU8sCisgICAgSlNHZW5lcmF0
ZVRvSlNPYmplY3QsCisgICAgSW50ZXJmYWNlTmFtZT13ZWJraXRBdWRpb1Bhbm5lck5vZGUsCitd
IGludGVyZmFjZSBXZWJLaXRBdWRpb1Bhbm5lck5vZGUgOiBBdWRpb05vZGUgeworICAgIC8vIERl
ZmF1bHQgbW9kZWwgZm9yIHN0ZXJlbyBpcyBIUlRGCisgICAgYXR0cmlidXRlIFBhbm5pbmdNb2Rl
bFR5cGUgcGFubmluZ01vZGVsOworCisgICAgLy8gVXNlcyBhIDNEIGNhcnRlc2lhbiBjb29yZGlu
YXRlIHN5c3RlbQorICAgIHZvaWQgc2V0UG9zaXRpb24odW5yZXN0cmljdGVkIGZsb2F0IHgsIHVu
cmVzdHJpY3RlZCBmbG9hdCB5LCB1bnJlc3RyaWN0ZWQgZmxvYXQgeik7CisgICAgdm9pZCBzZXRP
cmllbnRhdGlvbih1bnJlc3RyaWN0ZWQgZmxvYXQgeCwgdW5yZXN0cmljdGVkIGZsb2F0IHksIHVu
cmVzdHJpY3RlZCBmbG9hdCB6KTsKKyAgICB2b2lkIHNldFZlbG9jaXR5KHVucmVzdHJpY3RlZCBm
bG9hdCB4LCB1bnJlc3RyaWN0ZWQgZmxvYXQgeSwgdW5yZXN0cmljdGVkIGZsb2F0IHopOworCisg
ICAgLy8gRGlzdGFuY2UgbW9kZWwKKyAgICBhdHRyaWJ1dGUgRGlzdGFuY2VNb2RlbFR5cGUgZGlz
dGFuY2VNb2RlbDsKKworICAgIGF0dHJpYnV0ZSB1bnJlc3RyaWN0ZWQgZG91YmxlIHJlZkRpc3Rh
bmNlOworICAgIGF0dHJpYnV0ZSB1bnJlc3RyaWN0ZWQgZG91YmxlIG1heERpc3RhbmNlOworICAg
IGF0dHJpYnV0ZSB1bnJlc3RyaWN0ZWQgZG91YmxlIHJvbGxvZmZGYWN0b3I7CisKKyAgICAvLyBE
aXJlY3Rpb25hbCBzb3VuZCBjb25lCisgICAgYXR0cmlidXRlIHVucmVzdHJpY3RlZCBkb3VibGUg
Y29uZUlubmVyQW5nbGU7CisgICAgYXR0cmlidXRlIHVucmVzdHJpY3RlZCBkb3VibGUgY29uZU91
dGVyQW5nbGU7CisgICAgYXR0cmlidXRlIHVucmVzdHJpY3RlZCBkb3VibGUgY29uZU91dGVyR2Fp
bjsKK307CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1dlYktp
dE9mZmxpbmVBdWRpb0NvbnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRp
by9XZWJLaXRPZmZsaW5lQXVkaW9Db250ZXh0LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMC4uZDhlMzk5YTE0YTMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1dlYktpdE9mZmxpbmVBdWRpb0NvbnRleHQuY3BwCkBAIC0w
LDAgKzEsNjIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIsIEdvb2dsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORCBBTlkK
KyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAq
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTgorICogQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTCisgKiBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpZiBFTkFC
TEUoV0VCX0FVRElPKQorCisjaW5jbHVkZSAiV2ViS2l0T2ZmbGluZUF1ZGlvQ29udGV4dC5oIgor
CisjaW5jbHVkZSAiQXVkaW9CdWZmZXIuaCIKKyNpbmNsdWRlICJEb2N1bWVudC5oIgorI2luY2x1
ZGUgPHd0Zi9Jc29NYWxsb2NJbmxpbmVzLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworV1RG
X01BS0VfSVNPX0FMTE9DQVRFRF9JTVBMKFdlYktpdE9mZmxpbmVBdWRpb0NvbnRleHQpOworCitp
bmxpbmUgV2ViS2l0T2ZmbGluZUF1ZGlvQ29udGV4dDo6V2ViS2l0T2ZmbGluZUF1ZGlvQ29udGV4
dChEb2N1bWVudCYgZG9jdW1lbnQsIEF1ZGlvQnVmZmVyKiByZW5kZXJUYXJnZXQpCisgICAgOiBX
ZWJLaXRBdWRpb0NvbnRleHQoZG9jdW1lbnQsIHJlbmRlclRhcmdldCkKK3sKK30KKworRXhjZXB0
aW9uT3I8UmVmPFdlYktpdE9mZmxpbmVBdWRpb0NvbnRleHQ+PiBXZWJLaXRPZmZsaW5lQXVkaW9D
b250ZXh0OjpjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgdW5zaWduZWQg
bnVtYmVyT2ZDaGFubmVscywgc2l6ZV90IG51bWJlck9mRnJhbWVzLCBmbG9hdCBzYW1wbGVSYXRl
KQoreworICAgIC8vIEZJWE1FOiBBZGQgc3VwcG9ydCBmb3Igd29ya2Vycy4KKyAgICBpZiAoIWlz
PERvY3VtZW50Pihjb250ZXh0KSkKKyAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IE5vdFN1cHBv
cnRlZEVycm9yIH07CisgICAgaWYgKCFudW1iZXJPZkNoYW5uZWxzIHx8IG51bWJlck9mQ2hhbm5l
bHMgPiAxMCB8fCAhbnVtYmVyT2ZGcmFtZXMgfHwgIWlzU2FtcGxlUmF0ZVJhbmdlR29vZChzYW1w
bGVSYXRlKSkKKyAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IFN5bnRheEVycm9yIH07CisgICAg
YXV0byByZW5kZXJUYXJnZXQgPSBBdWRpb0J1ZmZlcjo6Y3JlYXRlKG51bWJlck9mQ2hhbm5lbHMs
IG51bWJlck9mRnJhbWVzLCBzYW1wbGVSYXRlKTsKKyAgICBpZiAoIXJlbmRlclRhcmdldCkKKyAg
ICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IFN5bnRheEVycm9yIH07CisKKyAgICBhdXRvIGF1ZGlv
Q29udGV4dCA9IGFkb3B0UmVmKCpuZXcgV2ViS2l0T2ZmbGluZUF1ZGlvQ29udGV4dChkb3duY2Fz
dDxEb2N1bWVudD4oY29udGV4dCksIHJlbmRlclRhcmdldC5nZXQoKSkpOworICAgIGF1ZGlvQ29u
dGV4dC0+c3VzcGVuZElmTmVlZGVkKCk7CisgICAgcmV0dXJuIGF1ZGlvQ29udGV4dDsKK30KKwor
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKFdFQl9BVURJTykKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vV2ViS2l0T2ZmbGluZUF1
ZGlvQ29udGV4dC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9XZWJLaXRPZmZs
aW5lQXVkaW9Db250ZXh0LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAu
LmMyNTRlZDQxZmUwCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJhdWRpby9XZWJLaXRPZmZsaW5lQXVkaW9Db250ZXh0LmgKQEAgLTAsMCArMSw0MCBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxMiwgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuICBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1Q
TElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OCisgKiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKKyAqIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiV2ViS2l0QXVkaW9Db250ZXh0Lmgi
CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgV2ViS2l0T2ZmbGluZUF1ZGlvQ29udGV4
dCBmaW5hbCA6IHB1YmxpYyBXZWJLaXRBdWRpb0NvbnRleHQgeworICAgIFdURl9NQUtFX0lTT19B
TExPQ0FURUQoV2ViS2l0T2ZmbGluZUF1ZGlvQ29udGV4dCk7CitwdWJsaWM6CisgICAgc3RhdGlj
IEV4Y2VwdGlvbk9yPFJlZjxXZWJLaXRPZmZsaW5lQXVkaW9Db250ZXh0Pj4gY3JlYXRlKFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQmLCB1bnNpZ25lZCBudW1iZXJPZkNoYW5uZWxzLCBzaXplX3QgbnVt
YmVyT2ZGcmFtZXMsIGZsb2F0IHNhbXBsZVJhdGUpOworCitwcml2YXRlOgorICAgIFdlYktpdE9m
ZmxpbmVBdWRpb0NvbnRleHQoRG9jdW1lbnQmLCBBdWRpb0J1ZmZlciogcmVuZGVyVGFyZ2V0KTsK
K307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViYXVkaW8vV2ViS2l0T2ZmbGluZUF1ZGlvQ29udGV4dC5pZGwgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1dlYktpdE9mZmxpbmVBdWRpb0NvbnRleHQuaWRsCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi40YTkyYWMwM2JhNwotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vV2ViS2l0T2ZmbGlu
ZUF1ZGlvQ29udGV4dC5pZGwKQEAgLTAsMCArMSwzMyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxMiwgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NF
IEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICog
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OCisgKiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKKyAqIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKK1sKKyAgICBD
b25kaXRpb25hbD1XRUJfQVVESU8sCisgICAgSlNHZW5lcmF0ZVRvSlNPYmplY3QsCisgICAgQ29u
c3RydWN0b3IodW5zaWduZWQgbG9uZyBudW1iZXJPZkNoYW5uZWxzLCB1bnNpZ25lZCBsb25nIG51
bWJlck9mRnJhbWVzLCB1bnJlc3RyaWN0ZWQgZmxvYXQgc2FtcGxlUmF0ZSksCisgICAgQ29uc3Ry
dWN0b3JNYXlUaHJvd0V4Y2VwdGlvbiwKKyAgICBDb25zdHJ1Y3RvckNhbGxXaXRoPVNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQsCisgICAgSW50ZXJmYWNlTmFtZT13ZWJraXRPZmZsaW5lQXVkaW9Db250
ZXh0CitdIGludGVyZmFjZSBXZWJLaXRPZmZsaW5lQXVkaW9Db250ZXh0IDogV2ViS2l0QXVkaW9D
b250ZXh0IHsKK307CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dCBiL1Nv
dXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CmluZGV4IDI0ZGI4ZmQyYzMxLi43ZWVhYzJhNWUyNyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKKysrIGIvU291cmNlL1dlYkNv
cmUvU291cmNlcy50eHQKQEAgLTI2OCw2ICsyNjgsOSBAQCBNb2R1bGVzL3dlYmF1ZGlvL1Njcmlw
dFByb2Nlc3Nvck5vZGUuY3BwCiBNb2R1bGVzL3dlYmF1ZGlvL1dhdmVTaGFwZXJEU1BLZXJuZWwu
Y3BwCiBNb2R1bGVzL3dlYmF1ZGlvL1dhdmVTaGFwZXJOb2RlLmNwcAogTW9kdWxlcy93ZWJhdWRp
by9XYXZlU2hhcGVyUHJvY2Vzc29yLmNwcAorTW9kdWxlcy93ZWJhdWRpby9XZWJLaXRBdWRpb0Nv
bnRleHQuY3BwCitNb2R1bGVzL3dlYmF1ZGlvL1dlYktpdEF1ZGlvUGFubmVyTm9kZS5jcHAKK01v
ZHVsZXMvd2ViYXVkaW8vV2ViS2l0T2ZmbGluZUF1ZGlvQ29udGV4dC5jcHAKIAogTW9kdWxlcy93
ZWJhdXRobi9BdXRoZW50aWNhdG9yQ29vcmRpbmF0b3IuY3BwCiBNb2R1bGVzL3dlYmF1dGhuL0F1
dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZS5jcHAKQEAgLTI3NDQsNiArMjc0Nyw3IEBAIEpT
QXVkaW9CdWZmZXJDYWxsYmFjay5jcHAKIEpTQXVkaW9CdWZmZXJTb3VyY2VOb2RlLmNwcAogSlNB
dWRpb0NvbmZpZ3VyYXRpb24uY3BwCiBKU0F1ZGlvQ29udGV4dC5jcHAKK0pTQXVkaW9Db250ZXh0
U3RhdGUuY3BwCiBKU0F1ZGlvRGVzdGluYXRpb25Ob2RlLmNwcAogSlNBdWRpb0xpc3RlbmVyLmNw
cAogSlNBdWRpb05vZGUuY3BwCkBAIC0yOTE0LDYgKzI5MTgsNyBAQCBKU0RldmljZU1vdGlvbkV2
ZW50LmNwcAogSlNEZXZpY2VPcmllbnRhdGlvbkV2ZW50LmNwcAogSlNEZXZpY2VPcmllbnRhdGlv
bk9yTW90aW9uUGVybWlzc2lvblN0YXRlLmNwcAogSlNEZXZpY2VPcmllbnRhdGlvbk9yTW90aW9u
RXZlbnQuY3BwCitKU0Rpc3RhbmNlTW9kZWxUeXBlLmNwcAogSlNEb2N1bWVudC5jcHAKIEpTRG9j
dW1lbnRBbmRFbGVtZW50RXZlbnRIYW5kbGVycy5jcHAKIEpTRG9jdW1lbnRGcmFnbWVudC5jcHAK
QEAgLTMyMTEsNiArMzIxNiw3IEBAIEpTT3ZlcmZsb3dFdmVudC5jcHAKIEpTUGFnZVRyYW5zaXRp
b25FdmVudC5jcHAKIEpTUGFpbnRSZW5kZXJpbmdDb250ZXh0MkQuY3BwCiBKU1Bhbm5lck5vZGUu
Y3BwCitKU1Bhbm5pbmdNb2RlbFR5cGUuY3BwCiBKU1BhcmVudE5vZGUuY3BwCiBKU1BhdGgyRC5j
cHAKIEpTUGF5ZXJFcnJvckZpZWxkcy5jcHAKQEAgLTM1NjcsNyArMzU3MywxMCBAQCBKU1dlYkdQ
VVN3YXBDaGFpbi5jcHAKIEpTV2ViR1BVVGV4dHVyZS5jcHAKIEpTV2ViR1BVVGV4dHVyZVZpZXcu
Y3BwCiBKU1dlYktpdEFuaW1hdGlvbkV2ZW50LmNwcAorSlNXZWJLaXRBdWRpb0NvbnRleHQuY3Bw
CitKU1dlYktpdEF1ZGlvUGFubmVyTm9kZS5jcHAKIEpTV2ViS2l0Q1NTTWF0cml4LmNwcAorSlNX
ZWJLaXRPZmZsaW5lQXVkaW9Db250ZXh0LmNwcAogSlNXZWJLaXRQbGF5YmFja1RhcmdldEF2YWls
YWJpbGl0eUV2ZW50LmNwcAogSlNXZWJLaXRQb2ludC5jcHAKIEpTV2ViS2l0VHJhbnNpdGlvbkV2
ZW50LmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCmluZGV4IDUyNjVkYjU4MzgyLi5lOTg0YzZjYTM1ZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMjQwOCwxMiArMjQw
OCwxNiBAQAogCQk4MzAwMzBGODFCN0QzQjc4MDBFRDNBQUMgLyogQ2FjaGVkSFRNTENvbGxlY3Rp
b24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgzMDAz
MEY3MUI3RDM5ODgwMEVEM0FBQyAvKiBDYWNoZWRIVE1MQ29sbGVjdGlvbi5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTgzMDMzNTAyMUY1NDkwNTcw
MDRERjcwNyAvKiBGaWxlU3lzdGVtRGlyZWN0b3J5UmVhZGVyLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4MzAzMzRGQzFGNTQ5MDUyMDA0REY3MDcgLyog
RmlsZVN5c3RlbURpcmVjdG9yeVJlYWRlci5oICovOyB9OwogCQk4MzAzMzUwMzFGNTQ5MDVBMDA0
REY3MDcgLyogRmlsZVN5c3RlbUVudHJpZXNDYWxsYmFjay5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODMwMzM0RkUxRjU0OTA1MjAwNERGNzA3IC8qIEZp
bGVTeXN0ZW1FbnRyaWVzQ2FsbGJhY2suaCAqLzsgfTsKKwkJODMwNDAyODIyNDlBN0E1RjAwQTkw
RDhEIC8qIFBhbm5pbmdNb2RlbFR5cGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDgzMDQwMjgwMjQ5QTdBNUMwMEE5MEQ4RCAvKiBQYW5uaW5nTW9kZWxU
eXBlLmggKi87IH07CisJCTgzMDQwMjgzMjQ5QTdBNjIwMEE5MEQ4RCAvKiBEaXN0YW5jZU1vZGVs
VHlwZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODMw
NDAyN0QyNDlBN0E1QjAwQTkwRDhEIC8qIERpc3RhbmNlTW9kZWxUeXBlLmggKi87IH07CiAJCTgz
MDUxOTk2MUJCMEYxMTAwMEYzNzcyRSAvKiBIVE1MVGltZUVsZW1lbnQuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgzMDUxOTkzMUJCMEYwRTcwMEYzNzcy
RSAvKiBIVE1MVGltZUVsZW1lbnQuaCAqLzsgfTsKIAkJODMwNzg0QjIxQzUyRUUyQzAwMTA0RDFE
IC8qIFhNTERvY3VtZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA4MzA3ODRCMTFDNTJFRTE5MDAxMDREMUQgLyogWE1MRG9jdW1lbnQuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk4MzBBMzZCRDFEQUM1
RkFEMDA2RDdEMDkgLyogSlNNb3VzZUV2ZW50SW5pdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODMwQTM2QkIxREFDNUZBNzAwNkQ3RDA5IC8qIEpTTW91
c2VFdmVudEluaXQuaCAqLzsgfTsKIAkJODMxMDJCMjcxRjlFQUREOTAwRTQwNEI5IC8qIEpTRXh0
ZW5kYWJsZU1lc3NhZ2VFdmVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gODMxMDJCMjMxRjlFQURDMjAwRTQwNEI5IC8qIEpTRXh0ZW5kYWJsZU1lc3Nh
Z2VFdmVudC5oICovOyB9OwogCQk4MzExQzAwMzFGQUEyRTk1MDBFM0M4RTUgLyogU1dTZXJ2ZXJK
b2JRdWV1ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
ODMxMUMwMDIxRkFBMkU4OTAwRTNDOEU1IC8qIFNXU2VydmVySm9iUXVldWUuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk4MzEyMEM3MTFDNTZGM0ZC
MDAxQ0IxMTIgLyogSFRNTERhdGFFbGVtZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA4MzRCODZBNzFDNTZFODNBMDBGM0YwRTMgLyogSFRNTERhdGFF
bGVtZW50LmggKi87IH07CisJCTgzMUI2MTc2MjQ5OUE1QkIwMEMwN0M3OSAvKiBXZWJLaXRBdWRp
b1Bhbm5lck5vZGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDgzMUI2MTc0MjQ5OUE1OUMwMEMwN0M3OSAvKiBXZWJLaXRBdWRpb1Bhbm5lck5vZGUuaCAq
LzsgfTsKKwkJODMxQjYxNzcyNDk5QTVCRjAwQzA3Qzc5IC8qIFdlYktpdE9mZmxpbmVBdWRpb0Nv
bnRleHQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgz
MUI2MTc1MjQ5OUE1OUQwMEMwN0M3OSAvKiBXZWJLaXRPZmZsaW5lQXVkaW9Db250ZXh0LmggKi87
IH07CiAJCTgzMjE1MDdFMUYyN0VBMUIwMDk1QjEzNiAvKiBOYXZpZ2F0b3JCZWFjb24uaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgzMjE1MDdCMUYyN0VB
MTUwMDk1QjEzNiAvKiBOYXZpZ2F0b3JCZWFjb24uaCAqLzsgfTsKIAkJODMyQjg0MzQxOUQ4RTU1
MTAwQjI2MDU1IC8qIFNWR0FuaW1hdGVFbGVtZW50QmFzZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODMyQjg0MzMxOUQ4RTU1MTAwQjI2MDU1IC8qIFNW
R0FuaW1hdGVFbGVtZW50QmFzZS5oICovOyB9OwogCQk4MzNCOUUzMjFGNTA4RDg1MDBFMEU0Mjgg
LyogSlNGaWxlU3lzdGVtRGlyZWN0b3J5RW50cnkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgzM0I5RTJGMUY1MDhEODAwMEUwRTQyOCAvKiBKU0ZpbGVT
eXN0ZW1EaXJlY3RvcnlFbnRyeS5oICovOyB9OwpAQCAtMjQ2OSwxMCArMjQ3MywxMiBAQAogCQk4
MzlBMkYyRTFFMjA0QTcxMDAzOTA1N0UgLyogV2ViR0xTdGF0ZVRyYWNrZXIuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgzOUEyRjJDMUUyMDRBNkQwMDM5
MDU3RSAvKiBXZWJHTFN0YXRlVHJhY2tlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CiAJCTgzOUFBRkVEMUEwQzBDOEQwMDYwNUY5OSAvKiBIVE1MV0JS
RWxlbWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
ODM5QUFGRUIxQTBDMEM4RDAwNjA1Rjk5IC8qIEhUTUxXQlJFbGVtZW50LmggKi87IH07CiAJCTgz
QThBQzQwMUZBQkJGRTUwMDIwNjRBQyAvKiBTZXJ2aWNlV29ya2VySWRlbnRpZmllci5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODNBOEFDM0UxRkFCQkZE
MTAwMjA2NEFDIC8qIFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJODNCMUE3MDIyNDk5ODVGMDAwRkU1OTYx
IC8qIFdlYktpdEF1ZGlvQ29udGV4dC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gODNCMUE2RkYyNDk5ODVEMDAwRkU1OTYxIC8qIFdlYktpdEF1ZGlvQ29u
dGV4dC5oICovOyB9OwogCQk4M0IyRDE3NTFCOEJDRDZBMDBBMDJFNDcgLyogTmF0aXZlTm9kZUZp
bHRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODNF
OTU5RTExQjhCQzIyQjAwNEQ5Mzg1IC8qIE5hdGl2ZU5vZGVGaWx0ZXIuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk4M0I3NEVGNjFGM0UwQkYyMDA5
OTZCQzcgLyogS2VlcGFsaXZlUmVxdWVzdFRyYWNrZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgzQjc0RUYzMUYzRTBCRDcwMDk5NkJDNyAvKiBLZWVw
YWxpdmVSZXF1ZXN0VHJhY2tlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CiAJCTgzQjk2ODdCMTlGOEFCODMwMDRFRjdBRiAvKiBTdHlsZUJ1aWxkZXJD
b252ZXJ0ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDgzQjk2ODc5MTlGOEFCODMwMDRFRjdBRiAvKiBTdHlsZUJ1aWxkZXJDb252ZXJ0ZXIuaCAqLzsg
fTsKIAkJODNCQjVDODgxRDVENkY0NTAwNUE3MUY0IC8qIEFsbERlc2NlbmRhbnRzQ29sbGVjdGlv
bi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODNCQjVD
ODcxRDVENkYzQTAwNUE3MUY0IC8qIEFsbERlc2NlbmRhbnRzQ29sbGVjdGlvbi5oICovOyB9Owor
CQk4M0JEM0NFRTI0OTk4RTAxMDBCQTNFNjcgLyogQXVkaW9Db250ZXh0U3RhdGUuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgzQkQzQ0VEMjQ5OThERjYw
MEJBM0U2NyAvKiBBdWRpb0NvbnRleHRTdGF0ZS5oICovOyB9OwogCQk4M0MwNUE1QjFBNjg2MjEy
MDA3RTVERUEgLyogU3R5bGVQcm9wZXJ0eVNob3J0aGFuZEZ1bmN0aW9ucy5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODNDMDVBNTkxQTY4NjIxMjAwN0U1
REVBIC8qIFN0eWxlUHJvcGVydHlTaG9ydGhhbmRGdW5jdGlvbnMuaCAqLzsgfTsKIAkJODNDMUY1
OTQxRURGNjlEMzAwNDEwRDI3IC8qIFF1YWxpZmllZE5hbWVDYWNoZS5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODNDMUY1OTIxRURGNjlEMzAwNDEwRDI3
IC8qIFF1YWxpZmllZE5hbWVDYWNoZS5oICovOyB9OwogCQk4M0M0NUI4RTFEQzJCNjhBMDA4ODcx
QkEgLyogVmFsaWRhdGlvbkJ1YmJsZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gODNDNDVCOEQxREMyQjY3QzAwODg3MUJBIC8qIFZhbGlkYXRpb25CdWJi
bGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAt
MTAyOTcsMTEgKzEwMzAzLDE2IEBACiAJCTgzMDAzMEYzMUI3RDMzQTYwMEVEM0FBQyAvKiBHZW5l
cmljQ2FjaGVkSFRNTENvbGxlY3Rpb24uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gR2VuZXJpY0NhY2hlZEhUTUxDb2xsZWN0aW9uLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJODMwMDMwRjQxQjdEMzNBNjAwRUQzQUFDIC8qIEdlbmVyaWNDYWNoZWRI
VE1MQ29sbGVjdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBHZW5lcmlj
Q2FjaGVkSFRNTENvbGxlY3Rpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODMw
MDMwRjcxQjdEMzk4ODAwRUQzQUFDIC8qIENhY2hlZEhUTUxDb2xsZWN0aW9uLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENhY2hlZEhUTUxDb2xsZWN0aW9uLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTgzMDAzRTJCMjQ5OTk3QTgwMDYwQUY5NCAvKiBXZWJLaXRB
dWRpb0NvbnRleHQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2Vi
S2l0QXVkaW9Db250ZXh0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODMwMzM0
RkIxRjU0OTA1MjAwNERGNzA3IC8qIEZpbGVTeXN0ZW1EaXJlY3RvcnlSZWFkZXIuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRmlsZVN5c3RlbURpcmVjdG9yeVJlYWRl
ci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTgzMDMzNEZDMUY1NDkwNTIwMDRE
RjcwNyAvKiBGaWxlU3lzdGVtRGlyZWN0b3J5UmVhZGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IEZpbGVTeXN0ZW1EaXJlY3RvcnlSZWFkZXIuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJODMwMzM0RkQxRjU0OTA1MjAwNERGNzA3IC8qIEZpbGVTeXN0ZW1FbnRy
aWVzQ2FsbGJhY2suaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IEZpbGVTeXN0ZW1FbnRyaWVz
Q2FsbGJhY2suaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4MzAzMzRGRTFGNTQ5
MDUyMDA0REY3MDcgLyogRmlsZVN5c3RlbUVudHJpZXNDYWxsYmFjay5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBGaWxlU3lzdGVtRW50cmllc0NhbGxiYWNrLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTgzMDMzNEZGMUY1NDkwNTIwMDRERjcwNyAvKiBGaWxlU3lz
dGVtRGlyZWN0b3J5UmVhZGVyLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBGaWxlU3lzdGVt
RGlyZWN0b3J5UmVhZGVyLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJODMwNDAy
N0QyNDlBN0E1QjAwQTkwRDhEIC8qIERpc3RhbmNlTW9kZWxUeXBlLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IERpc3RhbmNlTW9kZWxUeXBlLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTgzMDQwMjdGMjQ5QTdBNUMwMEE5MEQ4RCAvKiBEaXN0YW5jZU1vZGVsVHlw
ZS5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gRGlzdGFuY2VNb2RlbFR5cGUuaWRsOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQk4MzA0MDI4MDI0OUE3QTVDMDBBOTBEOEQgLyogUGFu
bmluZ01vZGVsVHlwZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQYW5uaW5n
TW9kZWxUeXBlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTgzMDQwMjgxMjQ5QTdB
NUQwMEE5MEQ4RCAvKiBQYW5uaW5nTW9kZWxUeXBlLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGgg
PSBQYW5uaW5nTW9kZWxUeXBlLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODMw
NTE5OTIxQkIwRjBFNzAwRjM3NzJFIC8qIEhUTUxUaW1lRWxlbWVudC5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBIVE1MVGltZUVsZW1lbnQuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk4MzA1MTk5MzFCQjBGMEU3MDBGMzc3MkUgLyogSFRNTFRpbWVF
bGVtZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEhUTUxUaW1lRWxlbWVu
dC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4MzA1MTk5NDFCQjBGMEU3MDBGMzc3
MkUgLyogSFRNTFRpbWVFbGVtZW50LmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBIVE1MVGlt
ZUVsZW1lbnQuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTAzMTQsNiArMTAz
MjUsMTIgQEAKIAkJODMxMDJCMjUxRjlFQURDMjAwRTQwNEI5IC8qIEpTRXh0ZW5kYWJsZU1lc3Nh
Z2VFdmVudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0V4dGVu
ZGFibGVNZXNzYWdlRXZlbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4MzEx
QzAwMDFGQUEyRTg5MDBFM0M4RTUgLyogU1dTZXJ2ZXJKb2JRdWV1ZS5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTV1NlcnZlckpvYlF1ZXVlLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODMxMUMwMDIxRkFBMkU4OTAwRTNDOEU1IC8qIFNXU2VydmVy
Sm9iUXVldWUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU1dTZXJ2ZXJKb2JR
dWV1ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk4MzFCNjE2RjI0OTlBNTk4MDBD
MDdDNzkgLyogV2ViS2l0QXVkaW9QYW5uZXJOb2RlLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGgg
PSBXZWJLaXRBdWRpb1Bhbm5lck5vZGUuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQk4MzFCNjE3MTI0OTlBNTk5MDBDMDdDNzkgLyogV2ViS2l0QXVkaW9QYW5uZXJOb2RlLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYktpdEF1ZGlvUGFubmVyTm9k
ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTgzMUI2MTcyMjQ5OUE1OUEwMEMw
N0M3OSAvKiBXZWJLaXRPZmZsaW5lQXVkaW9Db250ZXh0LmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBh
dGggPSBXZWJLaXRPZmZsaW5lQXVkaW9Db250ZXh0LmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJODMxQjYxNzMyNDk5QTU5QjAwQzA3Qzc5IC8qIFdlYktpdE9mZmxpbmVBdWRpb0Nv
bnRleHQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2ViS2l0T2Zm
bGluZUF1ZGlvQ29udGV4dC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTgzMUI2
MTc0MjQ5OUE1OUMwMEMwN0M3OSAvKiBXZWJLaXRBdWRpb1Bhbm5lck5vZGUuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViS2l0QXVkaW9QYW5uZXJOb2RlLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTgzMUI2MTc1MjQ5OUE1OUQwMEMwN0M3OSAvKiBXZWJLaXRP
ZmZsaW5lQXVkaW9Db250ZXh0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdl
YktpdE9mZmxpbmVBdWRpb0NvbnRleHQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
ODMxQzQ2QzMxRjlFRTVFMDAwRUJENDUwIC8qIEpTRXh0ZW5kYWJsZU1lc3NhZ2VFdmVudEN1c3Rv
bS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0V4dGVuZGFibGVN
ZXNzYWdlRXZlbnRDdXN0b20uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4MzFE
MUYyOTFDNTZFQ0EwMDBGNUY2QzAgLyogSFRNTERhdGFFbGVtZW50LmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEhUTUxEYXRhRWxlbWVudC5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTgzMjE1MDdBMUYyN0VBMTUwMDk1QjEzNiAvKiBOYXZpZ2F0b3JC
ZWFjb24uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTmF2aWdhdG9yQmVhY29uLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTEwNDQxLDYgKzEwNDU4LDggQEAKIAkJODM5QUFGRUIx
QTBDMEM4RDAwNjA1Rjk5IC8qIEhUTUxXQlJFbGVtZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IEhUTUxXQlJFbGVtZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTgzQTRBOUY4MUNFN0ZEN0UwMDcwOUIwMCAvKiBKU1hNTERvY3VtZW50Q3VzdG9tLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTWE1MRG9jdW1lbnRDdXN0b20u
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4M0E4QUMzRTFGQUJCRkQxMDAyMDY0
QUMgLyogU2VydmljZVdvcmtlcklkZW50aWZpZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gU2VydmljZVdvcmtlcklkZW50aWZpZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJODNCMUE2RkYyNDk5ODVEMDAwRkU1OTYxIC8qIFdlYktpdEF1ZGlvQ29udGV4dC5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJLaXRBdWRpb0NvbnRleHQuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJODNCMUE3MDEyNDk5ODVEMDAwRkU1OTYxIC8q
IFdlYktpdEF1ZGlvQ29udGV4dC5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gV2ViS2l0QXVk
aW9Db250ZXh0LmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODNCMjUwMDkxRkEx
MTgxQzAwQkMwMkQ5IC8qIEpTU2VydmljZVdvcmtlckNsaWVudFR5cGUuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gSlNTZXJ2aWNlV29ya2VyQ2xpZW50VHlwZS5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk4M0IyNTAwQjFGQTExODFEMDBCQzAyRDkgLyogSlNTZXJ2
aWNlV29ya2VyQ2xpZW50VHlwZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBKU1NlcnZpY2VXb3JrZXJDbGllbnRUeXBlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJODNCNURBNDUxRkE5MDc5MzAwQjU5REY0IC8qIEpTTmF2aWdhdG9yQ3VzdG9tLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTTmF2aWdhdG9yQ3VzdG9t
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTEwNDQ4LDYgKzEwNDY3LDggQEAK
IAkJODNCNzRFRjMxRjNFMEJENzAwOTk2QkM3IC8qIEtlZXBhbGl2ZVJlcXVlc3RUcmFja2VyLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEtlZXBhbGl2ZVJlcXVlc3RUcmFja2Vy
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTgzQjk2ODc5MTlGOEFCODMwMDRFRjdB
RiAvKiBTdHlsZUJ1aWxkZXJDb252ZXJ0ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gU3R5bGVCdWlsZGVyQ29udmVydGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTgzQkI1Qzg3MUQ1RDZGM0EwMDVBNzFGNCAvKiBBbGxEZXNjZW5kYW50c0NvbGxlY3Rpb24u
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQWxsRGVzY2VuZGFudHNDb2xsZWN0
aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTgzQkQzQ0VCMjQ5OThDQzUwMEJB
M0U2NyAvKiBBdWRpb0NvbnRleHRTdGF0ZS5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gQXVk
aW9Db250ZXh0U3RhdGUuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk4M0JEM0NF
RDI0OTk4REY2MDBCQTNFNjcgLyogQXVkaW9Db250ZXh0U3RhdGUuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gQXVkaW9Db250ZXh0U3RhdGUuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJODNDMDVBNTgxQTY4NjIxMjAwN0U1REVBIC8qIFN0eWxlUHJvcGVydHlTaG9y
dGhhbmRGdW5jdGlvbnMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0g
U3R5bGVQcm9wZXJ0eVNob3J0aGFuZEZ1bmN0aW9ucy5jcHA7IHBhdGggPSBEZXJpdmVkU291cmNl
cy9XZWJDb3JlL1N0eWxlUHJvcGVydHlTaG9ydGhhbmRGdW5jdGlvbnMuY3BwOyBzb3VyY2VUcmVl
ID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9OwogCQk4M0MwNUE1OTFBNjg2MjEyMDA3RTVERUEgLyog
U3R5bGVQcm9wZXJ0eVNob3J0aGFuZEZ1bmN0aW9ucy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IG5hbWUgPSBTdHlsZVByb3BlcnR5U2hvcnRoYW5kRnVuY3Rpb25zLmg7IHBhdGggPSBEZXJp
dmVkU291cmNlcy9XZWJDb3JlL1N0eWxlUHJvcGVydHlTaG9ydGhhbmRGdW5jdGlvbnMuaDsgc291
cmNlVHJlZSA9IEJVSUxUX1BST0RVQ1RTX0RJUjsgfTsKIAkJODNDMUY1OTExRURGNjlEMzAwNDEw
RDI3IC8qIFF1YWxpZmllZE5hbWVDYWNoZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBRdWFsaWZpZWROYW1lQ2FjaGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwpAQCAtMjkyMzEsNiArMjkyNTIsOCBAQAogCQkJCUZEMzE1RkJBMTJCMDI2NzUwMEMxQTM1
OSAvKiBBdWRpb0NvbnRleHQuY3BwICovLAogCQkJCUZEMzE1RkJCMTJCMDI2NzUwMEMxQTM1OSAv
KiBBdWRpb0NvbnRleHQuaCAqLywKIAkJCQlGRDMxNUZCQzEyQjAyNjc1MDBDMUEzNTkgLyogQXVk
aW9Db250ZXh0LmlkbCAqLywKKwkJCQk4M0JEM0NFRDI0OTk4REY2MDBCQTNFNjcgLyogQXVkaW9D
b250ZXh0U3RhdGUuaCAqLywKKwkJCQk4M0JEM0NFQjI0OTk4Q0M1MDBCQTNFNjcgLyogQXVkaW9D
b250ZXh0U3RhdGUuaWRsICovLAogCQkJCUZEMzE1RkJEMTJCMDI2NzUwMEMxQTM1OSAvKiBBdWRp
b0Rlc3RpbmF0aW9uTm9kZS5jcHAgKi8sCiAJCQkJRkQzMTVGQkUxMkIwMjY3NTAwQzFBMzU5IC8q
IEF1ZGlvRGVzdGluYXRpb25Ob2RlLmggKi8sCiAJCQkJRkQzMTVGQkYxMkIwMjY3NTAwQzFBMzU5
IC8qIEF1ZGlvRGVzdGluYXRpb25Ob2RlLmlkbCAqLywKQEAgLTI5MjgxLDYgKzI5MzA0LDggQEAK
IAkJCQlGRDMxNUZFNTEyQjAyNjc2MDBDMUEzNTkgLyogRGVsYXlOb2RlLmlkbCAqLywKIAkJCQlG
RDMxNUZFNjEyQjAyNjc2MDBDMUEzNTkgLyogRGVsYXlQcm9jZXNzb3IuY3BwICovLAogCQkJCUZE
MzE1RkU3MTJCMDI2NzYwMEMxQTM1OSAvKiBEZWxheVByb2Nlc3Nvci5oICovLAorCQkJCTgzMDQw
MjdEMjQ5QTdBNUIwMEE5MEQ4RCAvKiBEaXN0YW5jZU1vZGVsVHlwZS5oICovLAorCQkJCTgzMDQw
MjdGMjQ5QTdBNUMwMEE5MEQ4RCAvKiBEaXN0YW5jZU1vZGVsVHlwZS5pZGwgKi8sCiAJCQkJRkQ2
RUQyQzExMzZCOEU0MjAwM0NGMDcyIC8qIER5bmFtaWNzQ29tcHJlc3Nvck5vZGUuY3BwICovLAog
CQkJCUZENkVEMkMyMTM2QjhFNDIwMDNDRjA3MiAvKiBEeW5hbWljc0NvbXByZXNzb3JOb2RlLmgg
Ki8sCiAJCQkJRkQ2RUQyQzkxMzZCOEU5RDAwM0NGMDcyIC8qIER5bmFtaWNzQ29tcHJlc3Nvck5v
ZGUuaWRsICovLApAQCAtMjkzMTMsNiArMjkzMzgsOCBAQAogCQkJCUZEMzE1RkNGMTJCMDI2NzUw
MEMxQTM1OSAvKiBQYW5uZXJOb2RlLmNwcCAqLywKIAkJCQlGRDMxNUZEMDEyQjAyNjc1MDBDMUEz
NTkgLyogUGFubmVyTm9kZS5oICovLAogCQkJCUZEMzE1RkQxMTJCMDI2NzUwMEMxQTM1OSAvKiBQ
YW5uZXJOb2RlLmlkbCAqLywKKwkJCQk4MzA0MDI4MDI0OUE3QTVDMDBBOTBEOEQgLyogUGFubmlu
Z01vZGVsVHlwZS5oICovLAorCQkJCTgzMDQwMjgxMjQ5QTdBNUQwMEE5MEQ4RCAvKiBQYW5uaW5n
TW9kZWxUeXBlLmlkbCAqLywKIAkJCQlGRDU4MUZCMTE1MjBGOTNCMDAzQTdBNzUgLyogUGVyaW9k
aWNXYXZlLmNwcCAqLywKIAkJCQlGRDU4MUZCMjE1MjBGOTNCMDAzQTdBNzUgLyogUGVyaW9kaWNX
YXZlLmggKi8sCiAJCQkJRkQ1ODFGQjMxNTIwRjkzQjAwM0E3QTc1IC8qIFBlcmlvZGljV2F2ZS5p
ZGwgKi8sCkBAIC0yOTMyOCw2ICsyOTM1NSwxNSBAQAogCQkJCUZEN0YyOThFMTNENEMwQ0IwMEFE
OTUzNSAvKiBXYXZlU2hhcGVyTm9kZS5pZGwgKi8sCiAJCQkJRkQ3RjI5OEYxM0Q0QzBDQjAwQUQ5
NTM1IC8qIFdhdmVTaGFwZXJQcm9jZXNzb3IuY3BwICovLAogCQkJCUZEN0YyOTkwMTNENEMwQ0Iw
MEFEOTUzNSAvKiBXYXZlU2hhcGVyUHJvY2Vzc29yLmggKi8sCisJCQkJODMwMDNFMkIyNDk5OTdB
ODAwNjBBRjk0IC8qIFdlYktpdEF1ZGlvQ29udGV4dC5jcHAgKi8sCisJCQkJODNCMUE2RkYyNDk5
ODVEMDAwRkU1OTYxIC8qIFdlYktpdEF1ZGlvQ29udGV4dC5oICovLAorCQkJCTgzQjFBNzAxMjQ5
OTg1RDAwMEZFNTk2MSAvKiBXZWJLaXRBdWRpb0NvbnRleHQuaWRsICovLAorCQkJCTgzMUI2MTcx
MjQ5OUE1OTkwMEMwN0M3OSAvKiBXZWJLaXRBdWRpb1Bhbm5lck5vZGUuY3BwICovLAorCQkJCTgz
MUI2MTc0MjQ5OUE1OUMwMEMwN0M3OSAvKiBXZWJLaXRBdWRpb1Bhbm5lck5vZGUuaCAqLywKKwkJ
CQk4MzFCNjE2RjI0OTlBNTk4MDBDMDdDNzkgLyogV2ViS2l0QXVkaW9QYW5uZXJOb2RlLmlkbCAq
LywKKwkJCQk4MzFCNjE3MzI0OTlBNTlCMDBDMDdDNzkgLyogV2ViS2l0T2ZmbGluZUF1ZGlvQ29u
dGV4dC5jcHAgKi8sCisJCQkJODMxQjYxNzUyNDk5QTU5RDAwQzA3Qzc5IC8qIFdlYktpdE9mZmxp
bmVBdWRpb0NvbnRleHQuaCAqLywKKwkJCQk4MzFCNjE3MjI0OTlBNTlBMDBDMDdDNzkgLyogV2Vi
S2l0T2ZmbGluZUF1ZGlvQ29udGV4dC5pZGwgKi8sCiAJCQkpOwogCQkJcGF0aCA9IHdlYmF1ZGlv
OwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKQEAgLTI5NzA0LDYgKzI5NzQwLDcgQEAKIAkJ
CQk5QjQxNzA2NDEyNTY2MkIzMDA2QjI4RkMgLyogQXBwbHlCbG9ja0VsZW1lbnRDb21tYW5kLmgg
aW4gSGVhZGVycyAqLywKIAkJCQk5MzMwOUREOTA5OUU2NDkyMDA1NkU1ODEgLyogQXBwbHlTdHls
ZUNvbW1hbmQuaCBpbiBIZWFkZXJzICovLAogCQkJCTUxMkREOEY2MEQ5MUU2QUYwMDBGODlFRSAv
KiBBcmNoaXZlLmggaW4gSGVhZGVycyAqLywKKwkJCQk4M0JEM0NFRTI0OTk4RTAxMDBCQTNFNjcg
LyogQXVkaW9Db250ZXh0U3RhdGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTUxMkREOEZEMEQ5MUU2
QUYwMDBGODlFRSAvKiBBcmNoaXZlRmFjdG9yeS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTEyREQ4
RkMwRDkxRTZBRjAwMEY4OUVFIC8qIEFyY2hpdmVSZXNvdXJjZS5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJNTEyREQ4RjgwRDkxRTZBRjAwMEY4OUVFIC8qIEFyY2hpdmVSZXNvdXJjZUNvbGxlY3Rpb24u
aCBpbiBIZWFkZXJzICovLApAQCAtMzAwODMsNiArMzAxMjAsNyBAQAogCQkJCTc3RDUxMDE3MUVE
NjAyMjIwMERBNEM4NyAvKiBDcmVkZW50aWFsc0NvbnRhaW5lci5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJNTFBMDUyMzMxMDU4Nzc0RjAwQ0M5RTk1IC8qIENyZWRlbnRpYWxTdG9yYWdlLmggaW4gSGVh
ZGVycyAqLywKIAkJCQkyRDQ4MUYwMjE0NkI1QzU1MDBBQTc4MzQgLyogQ3Jvc3NmYWRlR2VuZXJh
dGVkSW1hZ2UuaCBpbiBIZWFkZXJzICovLAorCQkJCTgzMDQwMjgyMjQ5QTdBNUYwMEE5MEQ4RCAv
KiBQYW5uaW5nTW9kZWxUeXBlLmggaW4gSGVhZGVycyAqLywKIAkJCQlFMUM0MTYxMjBGNjU2MkZE
MDA5MkQyRkIgLyogQ3Jvc3NPcmlnaW5BY2Nlc3NDb250cm9sLmggaW4gSGVhZGVycyAqLywKIAkJ
CQk0MUFCRTY3QjFEMDU4MERCMDA2RDg2MkQgLyogQ3Jvc3NPcmlnaW5QcmVmbGlnaHRDaGVja2Vy
LmggaW4gSGVhZGVycyAqLywKIAkJCQlFMUM0MTVEQTBGNjU1RDZGMDA5MkQyRkIgLyogQ3Jvc3NP
cmlnaW5QcmVmbGlnaHRSZXN1bHRDYWNoZS5oIGluIEhlYWRlcnMgKi8sCkBAIC0zMDg2OSw2ICsz
MDkwNyw3IEBACiAJCQkJQTQzQkY1OTkxMTQ5MjkwQTAwQzY0M0NBIC8qIEhUTUxQcm9ncmVzc0Vs
ZW1lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUE4Q0ZGN0EzMEExNTY5NzgwMDBBNDIzNCAvKiBI
VE1MUXVvdGVFbGVtZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlBOEQyMjNGRTE2QjUyRTRFMDAx
NTcyODggLyogSFRNTFJlc291cmNlUHJlbG9hZGVyLmggaW4gSGVhZGVycyAqLywKKwkJCQk4M0Ix
QTcwMjI0OTk4NUYwMDBGRTU5NjEgLyogV2ViS2l0QXVkaW9Db250ZXh0LmggaW4gSGVhZGVycyAq
LywKIAkJCQlBODcxREMyNTBBMTUyMDU3MDBCMTJBNjggLyogSFRNTFNjcmlwdEVsZW1lbnQuaCBp
biBIZWFkZXJzICovLAogCQkJCTk3N0IzODc1MTIyODgzRTkwMEI4MUZGOCAvKiBIVE1MU2NyaXB0
UnVubmVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk5NzdCMzg3NjEyMjg4M0U5MDBCODFGRjggLyog
SFRNTFNjcmlwdFJ1bm5lckhvc3QuaCBpbiBIZWFkZXJzICovLApAQCAtMzE3MTEsNiArMzE3NTAs
NyBAQAogCQkJCUJDODI0MzI5MEQwQ0U4QTIwMDQ2MEM4RiAvKiBKU1NRTEVycm9yLmggaW4gSGVh
ZGVycyAqLywKIAkJCQkxQUU4MkZFRDBDQUIwN0VFMDAyMjM3QUUgLyogSlNTUUxSZXN1bHRTZXQu
aCBpbiBIZWFkZXJzICovLAogCQkJCTFBRkUxMTlBMENCRkZDQzQwMDMwMTdGQSAvKiBKU1NRTFJl
c3VsdFNldFJvd0xpc3QuaCBpbiBIZWFkZXJzICovLAorCQkJCTgzMUI2MTc2MjQ5OUE1QkIwMEMw
N0M3OSAvKiBXZWJLaXRBdWRpb1Bhbm5lck5vZGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUI1OURE
NkE1MTE5MDJBNjIwMDdFOTY4NCAvKiBKU1NRTFN0YXRlbWVudENhbGxiYWNrLmggaW4gSGVhZGVy
cyAqLywKIAkJCQlCNTlERDZBOTExOTAyQTcxMDA3RTk2ODQgLyogSlNTUUxTdGF0ZW1lbnRFcnJv
ckNhbGxiYWNrLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzgyNDMyQTBEMENFOEEyMDA0NjBDOEYg
LyogSlNTUUxUcmFuc2FjdGlvbi5oIGluIEhlYWRlcnMgKi8sCkBAIC0zMjE4OSw2ICszMjIyOSw3
IEBACiAJCQkJMDc2MzhBOTkxODg0NDg3MjAwRTE1QTFCIC8qIE1lZGlhU2Vzc2lvbk1hbmFnZXJJ
T1MuaCBpbiBIZWFkZXJzICovLAogCQkJCUM5RDg1MUYwMUIzOURDNzgwMDg1MDYyRSAvKiBNZWRp
YVNlc3Npb25NZXRhZGF0YS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQ0QzQTQ5NUYxN0E5RDAxQjAw
Mjc0RTQyIC8qIE1lZGlhU291cmNlLmggaW4gSGVhZGVycyAqLywKKwkJCQk4MzA0MDI4MzI0OUE3
QTYyMDBBOTBEOEQgLyogRGlzdGFuY2VNb2RlbFR5cGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUNE
NjQxRUIzMTgxOEY1RUQwMEVFNEM0MSAvKiBNZWRpYVNvdXJjZVByaXZhdGUuaCBpbiBIZWFkZXJz
ICovLAogCQkJCUNEQzhCNUE3MTgwNDc0RjcwMDE2RTY4NSAvKiBNZWRpYVNvdXJjZVByaXZhdGVB
VkZPYmpDLmggaW4gSGVhZGVycyAqLywKIAkJCQlDRERDMUU3QTE4QTk1MkYzMDAyN0E5RDQgLyog
TWVkaWFTb3VyY2VQcml2YXRlQ2xpZW50LmggaW4gSGVhZGVycyAqLywKQEAgLTMyODA0LDYgKzMy
ODQ1LDcgQEAKIAkJCQk1MUVFN0IzODFBQTUwQjA1MDBGOTJCMjEgLyogUmVzb3VyY2VMb2FkSW5m
by5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTczRTMyNTcxMDg4M0I3QzAwNUJDNDkzIC8qIFJlc291
cmNlTG9hZE5vdGlmaWVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk2QjY5M0EyRTFDNTFBODJFMDBC
MDNCRUYgLyogUmVzb3VyY2VMb2FkT2JzZXJ2ZXIuaCBpbiBIZWFkZXJzICovLAorCQkJCTgzMUI2
MTc3MjQ5OUE1QkYwMEMwN0M3OSAvKiBXZWJLaXRPZmZsaW5lQXVkaW9Db250ZXh0LmggaW4gSGVh
ZGVycyAqLywKIAkJCQlFNDI5NUZBNDEyQjA2MTRFMDBEMUFDRTAgLyogUmVzb3VyY2VMb2FkUHJp
b3JpdHkuaCBpbiBIZWFkZXJzICovLAogCQkJCTdBOTI5Q0E3MUM1OThBQTkwMDRERjIyNiAvKiBS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzLmggaW4gSGVhZGVycyAqLywKIAkJCQk3RUU2ODQ2RDEyRDI2
RTM4MDBFNzk0MTUgLyogUmVzb3VyY2VSZXF1ZXN0LmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1dlYkNvcmVCdWlsdGluTmFtZXMuaCBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1dlYkNvcmVCdWlsdGluTmFtZXMuaAppbmRleCBjOTFi
NGRmYWQ3MS4uM2ViNjJiMmE4MWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL1dlYkNvcmVCdWlsdGluTmFtZXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9XZWJDb3JlQnVpbHRpbk5hbWVzLmgKQEAgLTQ5LDYgKzQ5LDcgQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogICAgIG1hY3JvKEFwcGxlUGF5U2V0dXBGZWF0dXJlKSBcCiAgICAgbWFjcm8oQXR0YWNo
bWVudEVsZW1lbnQpIFwKICAgICBtYWNybyhBdWRpbykgXAorICAgIG1hY3JvKEF1ZGlvQ29udGV4
dCkgXAogICAgIG1hY3JvKEF1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZSkgXAogICAgIG1h
Y3JvKEF1dGhlbnRpY2F0b3JBdHRlc3RhdGlvblJlc3BvbnNlKSBcCiAgICAgbWFjcm8oQXV0aGVu
dGljYXRvclJlc3BvbnNlKSBcCkBAIC0xNjUsOSArMTY2LDExIEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKICAgICBtYWNybyhOYXZpZ2F0b3JDcmVkZW50aWFscykgXAogICAgIG1hY3JvKE5hdmlnYXRv
ck1lZGlhRGV2aWNlcykgXAogICAgIG1hY3JvKE5hdmlnYXRvclVzZXJNZWRpYSkgXAorICAgIG1h
Y3JvKE9mZmxpbmVBdWRpb0NvbnRleHQpIFwKICAgICBtYWNybyhPZmZzY3JlZW5DYW52YXMpIFwK
ICAgICBtYWNybyhPZmZzY3JlZW5DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQpIFwKICAgICBtYWNy
byhQYWludFJlbmRlcmluZ0NvbnRleHQyRCkgXAorICAgIG1hY3JvKFBhbm5lck5vZGUpIFwKICAg
ICBtYWNybyhQYXltZW50QWRkcmVzcykgXAogICAgIG1hY3JvKFBheW1lbnRNZXRob2RDaGFuZ2VF
dmVudCkgXAogICAgIG1hY3JvKFBheW1lbnRSZXF1ZXN0KSBcCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vRXZlbnRUYXJnZXRGYWN0b3J5LmluIGIvU291cmNlL1dlYkNvcmUvZG9tL0V2
ZW50VGFyZ2V0RmFjdG9yeS5pbgppbmRleCBmYzFkYjJjZTBlMC4uYTE1NGI0NDVhMTMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudFRhcmdldEZhY3RvcnkuaW4KKysrIGIvU291
cmNlL1dlYkNvcmUvZG9tL0V2ZW50VGFyZ2V0RmFjdG9yeS5pbgpAQCAtNTMsNiArNTMsNyBAQCBW
aWRlb1RyYWNrTGlzdCBjb25kaXRpb25hbD1WSURFTwogVmlzdWFsVmlld3BvcnQKIFdlYkFuaW1h
dGlvbgogV2ViR1BVRGV2aWNlIGNvbmRpdGlvbmFsPVdFQkdQVQorV2ViS2l0QXVkaW9Db250ZXh0
IGNvbmRpdGlvbmFsPVdFQl9BVURJTwogV2ViS2l0TWVkaWFLZXlTZXNzaW9uIGNvbmRpdGlvbmFs
PUxFR0FDWV9FTkNSWVBURURfTUVESUEKIFdlYlNvY2tldAogV29ya2VyCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdzLnlhbWwgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1Nl
dHRpbmdzLnlhbWwKaW5kZXggMmQ2YmM2ZmYyZWYuLjU4M2ZjNmY3OTVlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdzLnlhbWwKKysrIGIvU291cmNlL1dlYkNvcmUvcGFn
ZS9TZXR0aW5ncy55YW1sCkBAIC0yNTUsNiArMjU1LDggQEAgbG9hZERlZmVycmluZ0VuYWJsZWQ6
CiAgIGluaXRpYWw6IHRydWUKIHdlYkF1ZGlvRW5hYmxlZDoKICAgaW5pdGlhbDogZmFsc2UKK21v
ZGVyblVucHJlZml4ZWRXZWJBdWRpb0VuYWJsZWQ6CisgIGluaXRpYWw6IGZhbHNlCiBwYWdpbmF0
ZUR1cmluZ0xheW91dEVuYWJsZWQ6CiAgIGluaXRpYWw6IGZhbHNlCiBmdWxsU2NyZWVuRW5hYmxl
ZDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlByZWZlcmVuY2VzLnlhbWwg
Yi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQcmVmZXJlbmNlcy55YW1sCmluZGV4IGZhZDFhOWY1
ODg2Li41MjM1Y2U3MWZmNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUHJl
ZmVyZW5jZXMueWFtbAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQcmVmZXJlbmNlcy55
YW1sCkBAIC0zMzQsNiArMzM0LDE0IEBAIFdlYkF1ZGlvRW5hYmxlZDoKICAgZGVmYXVsdFZhbHVl
OiB0cnVlCiAgIGNvbmRpdGlvbjogRU5BQkxFKFdFQl9BVURJTykKIAorTW9kZXJuVW5wcmVmaXhl
ZFdlYkF1ZGlvRW5hYmxlZDoKKyAgdHlwZTogYm9vbAorICBkZWZhdWx0VmFsdWU6IGZhbHNlCisg
IGNvbmRpdGlvbjogRU5BQkxFKFdFQl9BVURJTykKKyAgaHVtYW5SZWFkYWJsZU5hbWU6ICJNb2Rl
cm4gV2ViQXVkaW8gQVBJIgorICBodW1hblJlYWRhYmxlRGVzY3JpcHRpb246ICJNb2Rlcm4gYW5k
IHVucHJlZml4ZWQgV2ViQXVkaW8gQVBJIgorICBjYXRlZ29yeTogZXhwZXJpbWVudGFsCisKIEF0
dGFjaG1lbnRFbGVtZW50RW5hYmxlZDoKICAgdHlwZTogYm9vbAogICBkZWZhdWx0VmFsdWU6IGZh
bHNlCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>402122</attachid>
            <date>2020-06-17 10:08:12 -0700</date>
            <delta_ts>2020-06-17 10:15:16 -0700</delta_ts>
            <desc>WIP Patch</desc>
            <filename>213268_wip.patch</filename>
            <type>text/plain</type>
            <size>220205</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dlYkNv
cmUvQ01ha2VMaXN0cy50eHQKaW5kZXggOTc1OTQ4OTVkOGMuLjM5OWE2YmQzZmQwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9D
TWFrZUxpc3RzLnR4dApAQCAtNDMzLDYgKzQzMyw3IEBAIHNldChXZWJDb3JlX05PTl9TVkdfSURM
X0ZJTEVTCiAgICAgTW9kdWxlcy93ZWJhdWRpby9BdWRpb0J1ZmZlckNhbGxiYWNrLmlkbAogICAg
IE1vZHVsZXMvd2ViYXVkaW8vQXVkaW9CdWZmZXJTb3VyY2VOb2RlLmlkbAogICAgIE1vZHVsZXMv
d2ViYXVkaW8vQXVkaW9Db250ZXh0LmlkbAorICAgIE1vZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250
ZXh0U3RhdGUuaWRsCiAgICAgTW9kdWxlcy93ZWJhdWRpby9BdWRpb0Rlc3RpbmF0aW9uTm9kZS5p
ZGwKICAgICBNb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvTGlzdGVuZXIuaWRsCiAgICAgTW9kdWxlcy93
ZWJhdWRpby9BdWRpb05vZGUuaWRsCkBAIC00NDMsNiArNDQ0LDcgQEAgc2V0KFdlYkNvcmVfTk9O
X1NWR19JRExfRklMRVMKICAgICBNb2R1bGVzL3dlYmF1ZGlvL0NoYW5uZWxTcGxpdHRlck5vZGUu
aWRsCiAgICAgTW9kdWxlcy93ZWJhdWRpby9Db252b2x2ZXJOb2RlLmlkbAogICAgIE1vZHVsZXMv
d2ViYXVkaW8vRGVsYXlOb2RlLmlkbAorICAgIE1vZHVsZXMvd2ViYXVkaW8vRGlzdGFuY2VNb2Rl
bFR5cGUuaWRsCiAgICAgTW9kdWxlcy93ZWJhdWRpby9EeW5hbWljc0NvbXByZXNzb3JOb2RlLmlk
bAogICAgIE1vZHVsZXMvd2ViYXVkaW8vR2Fpbk5vZGUuaWRsCiAgICAgTW9kdWxlcy93ZWJhdWRp
by9NZWRpYUVsZW1lbnRBdWRpb1NvdXJjZU5vZGUuaWRsCkBAIC00NTIsOSArNDU0LDEzIEBAIHNl
dChXZWJDb3JlX05PTl9TVkdfSURMX0ZJTEVTCiAgICAgTW9kdWxlcy93ZWJhdWRpby9PZmZsaW5l
QXVkaW9Db250ZXh0LmlkbAogICAgIE1vZHVsZXMvd2ViYXVkaW8vT3NjaWxsYXRvck5vZGUuaWRs
CiAgICAgTW9kdWxlcy93ZWJhdWRpby9QYW5uZXJOb2RlLmlkbAorICAgIE1vZHVsZXMvd2ViYXVk
aW8vUGFubmluZ01vZGVsVHlwZS5pZGwKICAgICBNb2R1bGVzL3dlYmF1ZGlvL1BlcmlvZGljV2F2
ZS5pZGwKICAgICBNb2R1bGVzL3dlYmF1ZGlvL1NjcmlwdFByb2Nlc3Nvck5vZGUuaWRsCiAgICAg
TW9kdWxlcy93ZWJhdWRpby9XYXZlU2hhcGVyTm9kZS5pZGwKKyAgICBNb2R1bGVzL3dlYmF1ZGlv
L1dlYktpdEF1ZGlvQ29udGV4dC5pZGwKKyAgICBNb2R1bGVzL3dlYmF1ZGlvL1dlYktpdEF1ZGlv
UGFubmVyTm9kZS5pZGwKKyAgICBNb2R1bGVzL3dlYmF1ZGlvL1dlYktpdE9mZmxpbmVBdWRpb0Nv
bnRleHQuaWRsCiAKICAgICBNb2R1bGVzL3dlYmF1dGhuL0F0dGVzdGF0aW9uQ29udmV5YW5jZVBy
ZWZlcmVuY2UuaWRsCiAgICAgTW9kdWxlcy93ZWJhdXRobi9BdXRoZW50aWNhdGlvbkV4dGVuc2lv
bnNDbGllbnRJbnB1dHMuaWRsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291
cmNlcy1pbnB1dC54Y2ZpbGVsaXN0IGIvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMtaW5w
dXQueGNmaWxlbGlzdAppbmRleCA2YTdhYTdkMTRlYi4uZjdkNjRjMTkzZDAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLWlucHV0LnhjZmlsZWxpc3QKKysrIGIvU291
cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMtaW5wdXQueGNmaWxlbGlzdApAQCAtMzAwLDYgKzMw
MCw3IEBAICQoUFJPSkVDVF9ESVIpL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9CdWZmZXIuaWRsCiAk
KFBST0pFQ1RfRElSKS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQnVmZmVyQ2FsbGJhY2suaWRsCiAk
KFBST0pFQ1RfRElSKS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQnVmZmVyU291cmNlTm9kZS5pZGwK
ICQoUFJPSkVDVF9ESVIpL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0LmlkbAorJChQUk9K
RUNUX0RJUikvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0NvbnRleHRTdGF0ZS5pZGwKICQoUFJPSkVD
VF9ESVIpL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9EZXN0aW5hdGlvbk5vZGUuaWRsCiAkKFBST0pF
Q1RfRElSKS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvTGlzdGVuZXIuaWRsCiAkKFBST0pFQ1RfRElS
KS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvTm9kZS5pZGwKQEAgLTMxMCw2ICszMTEsNyBAQCAkKFBS
T0pFQ1RfRElSKS9Nb2R1bGVzL3dlYmF1ZGlvL0NoYW5uZWxNZXJnZXJOb2RlLmlkbAogJChQUk9K
RUNUX0RJUikvTW9kdWxlcy93ZWJhdWRpby9DaGFubmVsU3BsaXR0ZXJOb2RlLmlkbAogJChQUk9K
RUNUX0RJUikvTW9kdWxlcy93ZWJhdWRpby9Db252b2x2ZXJOb2RlLmlkbAogJChQUk9KRUNUX0RJ
UikvTW9kdWxlcy93ZWJhdWRpby9EZWxheU5vZGUuaWRsCiskKFBST0pFQ1RfRElSKS9Nb2R1bGVz
L3dlYmF1ZGlvL0Rpc3RhbmNlTW9kZWxUeXBlLmlkbAogJChQUk9KRUNUX0RJUikvTW9kdWxlcy93
ZWJhdWRpby9EeW5hbWljc0NvbXByZXNzb3JOb2RlLmlkbAogJChQUk9KRUNUX0RJUikvTW9kdWxl
cy93ZWJhdWRpby9HYWluTm9kZS5pZGwKICQoUFJPSkVDVF9ESVIpL01vZHVsZXMvd2ViYXVkaW8v
TWVkaWFFbGVtZW50QXVkaW9Tb3VyY2VOb2RlLmlkbApAQCAtMzE5LDkgKzMyMSwxMyBAQCAkKFBS
T0pFQ1RfRElSKS9Nb2R1bGVzL3dlYmF1ZGlvL09mZmxpbmVBdWRpb0NvbXBsZXRpb25FdmVudC5p
ZGwKICQoUFJPSkVDVF9ESVIpL01vZHVsZXMvd2ViYXVkaW8vT2ZmbGluZUF1ZGlvQ29udGV4dC5p
ZGwKICQoUFJPSkVDVF9ESVIpL01vZHVsZXMvd2ViYXVkaW8vT3NjaWxsYXRvck5vZGUuaWRsCiAk
KFBST0pFQ1RfRElSKS9Nb2R1bGVzL3dlYmF1ZGlvL1Bhbm5lck5vZGUuaWRsCiskKFBST0pFQ1Rf
RElSKS9Nb2R1bGVzL3dlYmF1ZGlvL1Bhbm5pbmdNb2RlbFR5cGUuaWRsCiAkKFBST0pFQ1RfRElS
KS9Nb2R1bGVzL3dlYmF1ZGlvL1BlcmlvZGljV2F2ZS5pZGwKICQoUFJPSkVDVF9ESVIpL01vZHVs
ZXMvd2ViYXVkaW8vU2NyaXB0UHJvY2Vzc29yTm9kZS5pZGwKICQoUFJPSkVDVF9ESVIpL01vZHVs
ZXMvd2ViYXVkaW8vV2F2ZVNoYXBlck5vZGUuaWRsCiskKFBST0pFQ1RfRElSKS9Nb2R1bGVzL3dl
YmF1ZGlvL1dlYktpdEF1ZGlvQ29udGV4dC5pZGwKKyQoUFJPSkVDVF9ESVIpL01vZHVsZXMvd2Vi
YXVkaW8vV2ViS2l0QXVkaW9QYW5uZXJOb2RlLmlkbAorJChQUk9KRUNUX0RJUikvTW9kdWxlcy93
ZWJhdWRpby9XZWJLaXRPZmZsaW5lQXVkaW9Db250ZXh0LmlkbAogJChQUk9KRUNUX0RJUikvTW9k
dWxlcy93ZWJhdXRobi9BdHRlc3RhdGlvbkNvbnZleWFuY2VQcmVmZXJlbmNlLmlkbAogJChQUk9K
RUNUX0RJUikvTW9kdWxlcy93ZWJhdXRobi9BdXRoZW50aWNhdGlvbkV4dGVuc2lvbnNDbGllbnRJ
bnB1dHMuaWRsCiAkKFBST0pFQ1RfRElSKS9Nb2R1bGVzL3dlYmF1dGhuL0F1dGhlbnRpY2F0aW9u
RXh0ZW5zaW9uc0NsaWVudE91dHB1dHMuaWRsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9E
ZXJpdmVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlzdCBiL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRT
b3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0CmluZGV4IGExNDMzNjI1MTQwLi5jYmM2NDhhZmY4NyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxp
c3QKKysrIGIvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxpc3QK
QEAgLTE1NSw2ICsxNTUsOCBAQCAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMv
V2ViQ29yZS9KU0F1ZGlvQ29uZmlndXJhdGlvbi5jcHAKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9E
ZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTQXVkaW9Db25maWd1cmF0aW9uLmgKICQoQlVJTFRfUFJP
RFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTQXVkaW9Db250ZXh0LmNwcAogJChC
VUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNBdWRpb0NvbnRleHQu
aAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNBdWRpb0Nv
bnRleHRTdGF0ZS5jcHAKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJD
b3JlL0pTQXVkaW9Db250ZXh0U3RhdGUuaAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRT
b3VyY2VzL1dlYkNvcmUvSlNBdWRpb0Rlc3RpbmF0aW9uTm9kZS5jcHAKICQoQlVJTFRfUFJPRFVD
VFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTQXVkaW9EZXN0aW5hdGlvbk5vZGUuaAog
JChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNBdWRpb0xpc3Rl
bmVyLmNwcApAQCAtNDg2LDYgKzQ4OCw4IEBAICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVk
U291cmNlcy9XZWJDb3JlL0pTRGV2aWNlT3JpZW50YXRpb25Pck1vdGlvbkV2ZW50LmNwCiAkKEJV
SUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0RldmljZU9yaWVudGF0
aW9uT3JNb3Rpb25FdmVudC5oCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMv
V2ViQ29yZS9KU0RldmljZU9yaWVudGF0aW9uT3JNb3Rpb25QZXJtaXNzaW9uU3RhdGUuY3BwCiAk
KEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0RldmljZU9yaWVu
dGF0aW9uT3JNb3Rpb25QZXJtaXNzaW9uU3RhdGUuaAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rl
cml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNEaXN0YW5jZU1vZGVsVHlwZS5jcHAKKyQoQlVJTFRfUFJP
RFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTRGlzdGFuY2VNb2RlbFR5cGUuaAog
JChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNEb2N1bWVudC5j
cHAKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTRG9jdW1l
bnQuaAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNEb2N1
bWVudEFuZEVsZW1lbnRFdmVudEhhbmRsZXJzLmNwcApAQCAtMTIyNCw2ICsxMjI4LDggQEAgJChC
VUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNQYWludFdvcmtsZXRH
bG9iYWxTY29wZS5jcHAKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJD
b3JlL0pTUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUuaAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rl
cml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNQYW5uZXJOb2RlLmNwcAogJChCVUlMVF9QUk9EVUNUU19E
SVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNQYW5uZXJOb2RlLmgKKyQoQlVJTFRfUFJPRFVD
VFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTUGFubmluZ01vZGVsVHlwZS5jcHAKKyQo
QlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTUGFubmluZ01vZGVs
VHlwZS5oCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU1Bh
cmVudE5vZGUuY3BwCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29y
ZS9KU1BhcmVudE5vZGUuaAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dl
YkNvcmUvSlNQYXRoMkQuY3BwCkBAIC0yMDc4LDYgKzIwODQsMTAgQEAgJChCVUlMVF9QUk9EVUNU
U19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNXZWJHUFVUZXh0dXJlVmlldy5jcHAKICQo
QlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTV2ViR1BVVGV4dHVy
ZVZpZXcuaAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNX
ZWJLaXRBbmltYXRpb25FdmVudC5jcHAKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291
cmNlcy9XZWJDb3JlL0pTV2ViS2l0QW5pbWF0aW9uRXZlbnQuaAorJChCVUlMVF9QUk9EVUNUU19E
SVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNXZWJLaXRBdWRpb0NvbnRleHQuY3BwCiskKEJV
SUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU1dlYktpdEF1ZGlvQ29u
dGV4dC5oCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU1dl
YktpdEF1ZGlvUGFubmVyTm9kZS5jcHAKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291
cmNlcy9XZWJDb3JlL0pTV2ViS2l0QXVkaW9QYW5uZXJOb2RlLmgKICQoQlVJTFRfUFJPRFVDVFNf
RElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTV2ViS2l0Q1NTTWF0cml4LmNwcAogJChCVUlM
VF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNXZWJLaXRDU1NNYXRyaXgu
aAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNXZWJLaXRD
U1NWaWV3cG9ydFJ1bGUuY3BwCkBAIC0yMDk0LDYgKzIxMDQsOCBAQCAkKEJVSUxUX1BST0RVQ1RT
X0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU1dlYktpdE1lZGlhS2V5cy5jcHAKICQoQlVJ
TFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTV2ViS2l0TWVkaWFLZXlz
LmgKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTV2ViS2l0
TmFtZXNwYWNlLmNwcAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNv
cmUvSlNXZWJLaXROYW1lc3BhY2UuaAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3Vy
Y2VzL1dlYkNvcmUvSlNXZWJLaXRPZmZsaW5lQXVkaW9Db250ZXh0LmNwcAorJChCVUlMVF9QUk9E
VUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNXZWJLaXRPZmZsaW5lQXVkaW9Db250
ZXh0LmgKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTV2Vi
S2l0UGxheWJhY2tUYXJnZXRBdmFpbGFiaWxpdHlFdmVudC5jcHAKICQoQlVJTFRfUFJPRFVDVFNf
RElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTV2ViS2l0UGxheWJhY2tUYXJnZXRBdmFpbGFi
aWxpdHlFdmVudC5oCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29y
ZS9KU1dlYktpdFBvaW50LmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNv
dXJjZXMubWFrZSBiL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UKaW5kZXggZDI2
NzA4OWUzODcuLmIyN2M3OWNlNjYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVk
U291cmNlcy5tYWtlCisrKyBiL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UKQEAg
LTM4Myw2ICszODMsNyBAQCBKU19CSU5ESU5HX0lETFMgPSBcCiAgICAgJChXZWJDb3JlKS9Nb2R1
bGVzL3dlYmF1ZGlvL0F1ZGlvQnVmZmVyQ2FsbGJhY2suaWRsIFwKICAgICAkKFdlYkNvcmUpL01v
ZHVsZXMvd2ViYXVkaW8vQXVkaW9CdWZmZXJTb3VyY2VOb2RlLmlkbCBcCiAgICAgJChXZWJDb3Jl
KS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQ29udGV4dC5pZGwgXAorICAgICQoV2ViQ29yZSkvTW9k
dWxlcy93ZWJhdWRpby9BdWRpb0NvbnRleHRTdGF0ZS5pZGwgXAogICAgICQoV2ViQ29yZSkvTW9k
dWxlcy93ZWJhdWRpby9BdWRpb0Rlc3RpbmF0aW9uTm9kZS5pZGwgXAogICAgICQoV2ViQ29yZSkv
TW9kdWxlcy93ZWJhdWRpby9BdWRpb0xpc3RlbmVyLmlkbCBcCiAgICAgJChXZWJDb3JlKS9Nb2R1
bGVzL3dlYmF1ZGlvL0F1ZGlvTm9kZS5pZGwgXApAQCAtMzkzLDYgKzM5NCw3IEBAIEpTX0JJTkRJ
TkdfSURMUyA9IFwKICAgICAkKFdlYkNvcmUpL01vZHVsZXMvd2ViYXVkaW8vQ2hhbm5lbFNwbGl0
dGVyTm9kZS5pZGwgXAogICAgICQoV2ViQ29yZSkvTW9kdWxlcy93ZWJhdWRpby9Db252b2x2ZXJO
b2RlLmlkbCBcCiAgICAgJChXZWJDb3JlKS9Nb2R1bGVzL3dlYmF1ZGlvL0RlbGF5Tm9kZS5pZGwg
XAorICAgICQoV2ViQ29yZSkvTW9kdWxlcy93ZWJhdWRpby9EaXN0YW5jZU1vZGVsVHlwZS5pZGwg
XAogICAgICQoV2ViQ29yZSkvTW9kdWxlcy93ZWJhdWRpby9EeW5hbWljc0NvbXByZXNzb3JOb2Rl
LmlkbCBcCiAgICAgJChXZWJDb3JlKS9Nb2R1bGVzL3dlYmF1ZGlvL0dhaW5Ob2RlLmlkbCBcCiAg
ICAgJChXZWJDb3JlKS9Nb2R1bGVzL3dlYmF1ZGlvL01lZGlhRWxlbWVudEF1ZGlvU291cmNlTm9k
ZS5pZGwgXApAQCAtNDAyLDkgKzQwNCwxMyBAQCBKU19CSU5ESU5HX0lETFMgPSBcCiAgICAgJChX
ZWJDb3JlKS9Nb2R1bGVzL3dlYmF1ZGlvL09mZmxpbmVBdWRpb0NvbnRleHQuaWRsIFwKICAgICAk
KFdlYkNvcmUpL01vZHVsZXMvd2ViYXVkaW8vT3NjaWxsYXRvck5vZGUuaWRsIFwKICAgICAkKFdl
YkNvcmUpL01vZHVsZXMvd2ViYXVkaW8vUGFubmVyTm9kZS5pZGwgXAorICAgICQoV2ViQ29yZSkv
TW9kdWxlcy93ZWJhdWRpby9QYW5uaW5nTW9kZWxUeXBlLmlkbCBcCiAgICAgJChXZWJDb3JlKS9N
b2R1bGVzL3dlYmF1ZGlvL1BlcmlvZGljV2F2ZS5pZGwgXAogICAgICQoV2ViQ29yZSkvTW9kdWxl
cy93ZWJhdWRpby9TY3JpcHRQcm9jZXNzb3JOb2RlLmlkbCBcCiAgICAgJChXZWJDb3JlKS9Nb2R1
bGVzL3dlYmF1ZGlvL1dhdmVTaGFwZXJOb2RlLmlkbCBcCisgICAgJChXZWJDb3JlKS9Nb2R1bGVz
L3dlYmF1ZGlvL1dlYktpdEF1ZGlvQ29udGV4dC5pZGwgXAorICAgICQoV2ViQ29yZSkvTW9kdWxl
cy93ZWJhdWRpby9XZWJLaXRBdWRpb1Bhbm5lck5vZGUuaWRsIFwKKyAgICAkKFdlYkNvcmUpL01v
ZHVsZXMvd2ViYXVkaW8vV2ViS2l0T2ZmbGluZUF1ZGlvQ29udGV4dC5pZGwgXAogICAgICQoV2Vi
Q29yZSkvTW9kdWxlcy93ZWJhdXRobi9BdHRlc3RhdGlvbkNvbnZleWFuY2VQcmVmZXJlbmNlLmlk
bCBcCiAgICAgJChXZWJDb3JlKS9Nb2R1bGVzL3dlYmF1dGhuL0F1dGhlbnRpY2F0aW9uRXh0ZW5z
aW9uc0NsaWVudElucHV0cy5pZGwgXAogICAgICQoV2ViQ29yZSkvTW9kdWxlcy93ZWJhdXRobi9B
dXRoZW50aWNhdGlvbkV4dGVuc2lvbnNDbGllbnRPdXRwdXRzLmlkbCBcCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0FuYWx5c2VyTm9kZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0FuYWx5c2VyTm9kZS5jcHAKaW5kZXggMTc5ODcwNzAx
ZjguLjIxNWRlMzIxZTlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1
ZGlvL0FuYWx5c2VyTm9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRp
by9BbmFseXNlck5vZGUuY3BwCkBAIC0zNiw3ICszNiw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAogV1RGX01BS0VfSVNPX0FMTE9DQVRFRF9JTVBMKEFuYWx5c2VyTm9kZSk7CiAKLUFuYWx5c2Vy
Tm9kZTo6QW5hbHlzZXJOb2RlKEF1ZGlvQ29udGV4dCYgY29udGV4dCwgZmxvYXQgc2FtcGxlUmF0
ZSkKK0FuYWx5c2VyTm9kZTo6QW5hbHlzZXJOb2RlKEF1ZGlvQ29udGV4dEJhc2UmIGNvbnRleHQs
IGZsb2F0IHNhbXBsZVJhdGUpCiAgICAgOiBBdWRpb0Jhc2ljSW5zcGVjdG9yTm9kZShjb250ZXh0
LCBzYW1wbGVSYXRlLCAyKQogewogICAgIHNldE5vZGVUeXBlKE5vZGVUeXBlQW5hbHlzZXIpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BbmFseXNlck5vZGUu
aCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQW5hbHlzZXJOb2RlLmgKaW5kZXgg
ZGExYjVlODljYTIuLmE0MDIzYTMwZGVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmF1ZGlvL0FuYWx5c2VyTm9kZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViYXVkaW8vQW5hbHlzZXJOb2RlLmgKQEAgLTMyLDcgKzMyLDcgQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogY2xhc3MgQW5hbHlzZXJOb2RlIGZpbmFsIDogcHVibGljIEF1ZGlvQmFzaWNJbnNwZWN0
b3JOb2RlIHsKICAgICBXVEZfTUFLRV9JU09fQUxMT0NBVEVEKEFuYWx5c2VyTm9kZSk7CiBwdWJs
aWM6Ci0gICAgc3RhdGljIFJlZjxBbmFseXNlck5vZGU+IGNyZWF0ZShBdWRpb0NvbnRleHQmIGNv
bnRleHQsIGZsb2F0IHNhbXBsZVJhdGUpCisgICAgc3RhdGljIFJlZjxBbmFseXNlck5vZGU+IGNy
ZWF0ZShBdWRpb0NvbnRleHRCYXNlJiBjb250ZXh0LCBmbG9hdCBzYW1wbGVSYXRlKQogICAgIHsK
ICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQW5hbHlzZXJOb2RlKGNvbnRleHQsIHNhbXBs
ZVJhdGUpKTsKICAgICB9CkBAIC01OCw3ICs1OCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGdldEJ5
dGVUaW1lRG9tYWluRGF0YShjb25zdCBSZWZQdHI8SlNDOjpVaW50OEFycmF5PiYgYXJyYXkpIHsg
bV9hbmFseXNlci5nZXRCeXRlVGltZURvbWFpbkRhdGEoYXJyYXkuZ2V0KCkpOyB9CiAKIHByaXZh
dGU6Ci0gICAgQW5hbHlzZXJOb2RlKEF1ZGlvQ29udGV4dCYsIGZsb2F0IHNhbXBsZVJhdGUpOwor
ICAgIEFuYWx5c2VyTm9kZShBdWRpb0NvbnRleHRCYXNlJiwgZmxvYXQgc2FtcGxlUmF0ZSk7CiAK
ICAgICB2b2lkIHByb2Nlc3Moc2l6ZV90IGZyYW1lc1RvUHJvY2VzcykgZmluYWw7CiAgICAgdm9p
ZCByZXNldCgpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJh
dWRpby9BdWRpb0Jhc2ljSW5zcGVjdG9yTm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmF1ZGlvL0F1ZGlvQmFzaWNJbnNwZWN0b3JOb2RlLmNwcAppbmRleCAwZmI1NWIwOGYwYy4u
MTQ1M2RhY2FmZGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8v
QXVkaW9CYXNpY0luc3BlY3Rvck5vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViYXVkaW8vQXVkaW9CYXNpY0luc3BlY3Rvck5vZGUuY3BwCkBAIC0zNiw3ICszNiw3IEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAogV1RGX01BS0VfSVNPX0FMTE9DQVRFRF9JTVBMKEF1ZGlvQmFz
aWNJbnNwZWN0b3JOb2RlKTsKIAotQXVkaW9CYXNpY0luc3BlY3Rvck5vZGU6OkF1ZGlvQmFzaWNJ
bnNwZWN0b3JOb2RlKEF1ZGlvQ29udGV4dCYgY29udGV4dCwgZmxvYXQgc2FtcGxlUmF0ZSwgdW5z
aWduZWQgb3V0cHV0Q2hhbm5lbENvdW50KQorQXVkaW9CYXNpY0luc3BlY3Rvck5vZGU6OkF1ZGlv
QmFzaWNJbnNwZWN0b3JOb2RlKEF1ZGlvQ29udGV4dEJhc2UmIGNvbnRleHQsIGZsb2F0IHNhbXBs
ZVJhdGUsIHVuc2lnbmVkIG91dHB1dENoYW5uZWxDb3VudCkKICAgICA6IEF1ZGlvTm9kZShjb250
ZXh0LCBzYW1wbGVSYXRlKQogewogICAgIHNldE5vZGVUeXBlKE5vZGVUeXBlQmFzaWNJbnNwZWN0
b3IpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0Jh
c2ljSW5zcGVjdG9yTm9kZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRp
b0Jhc2ljSW5zcGVjdG9yTm9kZS5oCmluZGV4IDgwZTA4ZDI5NjE3Li5lNzY5ZTQ2YWUyMSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0Jhc2ljSW5zcGVj
dG9yTm9kZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9CYXNp
Y0luc3BlY3Rvck5vZGUuaApAQCAtMzQsNyArMzQsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBj
bGFzcyBBdWRpb0Jhc2ljSW5zcGVjdG9yTm9kZSA6IHB1YmxpYyBBdWRpb05vZGUgewogICAgIFdU
Rl9NQUtFX0lTT19BTExPQ0FURUQoQXVkaW9CYXNpY0luc3BlY3Rvck5vZGUpOwogcHVibGljOgot
ICAgIEF1ZGlvQmFzaWNJbnNwZWN0b3JOb2RlKEF1ZGlvQ29udGV4dCYsIGZsb2F0IHNhbXBsZVJh
dGUsIHVuc2lnbmVkIG91dHB1dENoYW5uZWxDb3VudCk7CisgICAgQXVkaW9CYXNpY0luc3BlY3Rv
ck5vZGUoQXVkaW9Db250ZXh0QmFzZSYsIGZsb2F0IHNhbXBsZVJhdGUsIHVuc2lnbmVkIG91dHB1
dENoYW5uZWxDb3VudCk7CiAKIHByaXZhdGU6CiAgICAgdm9pZCBwdWxsSW5wdXRzKHNpemVfdCBm
cmFtZXNUb1Byb2Nlc3MpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJhdWRpby9BdWRpb0Jhc2ljUHJvY2Vzc29yTm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQmFzaWNQcm9jZXNzb3JOb2RlLmNwcAppbmRleCAwYjlm
MWNlZDg3NC4uZjdiNzk2YmU1NTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViYXVkaW8vQXVkaW9CYXNpY1Byb2Nlc3Nvck5vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViYXVkaW8vQXVkaW9CYXNpY1Byb2Nlc3Nvck5vZGUuY3BwCkBAIC0zOSw3ICsz
OSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogV1RGX01BS0VfSVNPX0FMTE9DQVRFRF9JTVBM
KEF1ZGlvQmFzaWNQcm9jZXNzb3JOb2RlKTsKIAotQXVkaW9CYXNpY1Byb2Nlc3Nvck5vZGU6OkF1
ZGlvQmFzaWNQcm9jZXNzb3JOb2RlKEF1ZGlvQ29udGV4dCYgY29udGV4dCwgZmxvYXQgc2FtcGxl
UmF0ZSkKK0F1ZGlvQmFzaWNQcm9jZXNzb3JOb2RlOjpBdWRpb0Jhc2ljUHJvY2Vzc29yTm9kZShB
dWRpb0NvbnRleHRCYXNlJiBjb250ZXh0LCBmbG9hdCBzYW1wbGVSYXRlKQogICAgIDogQXVkaW9O
b2RlKGNvbnRleHQsIHNhbXBsZVJhdGUpCiB7CiAgICAgYWRkSW5wdXQobWFrZVVuaXF1ZTxBdWRp
b05vZGVJbnB1dD4odGhpcykpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJhdWRpby9BdWRpb0Jhc2ljUHJvY2Vzc29yTm9kZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJhdWRpby9BdWRpb0Jhc2ljUHJvY2Vzc29yTm9kZS5oCmluZGV4IDgyY2ZmZGE1OWYyLi5l
MTYzNzNiZjAyOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9B
dWRpb0Jhc2ljUHJvY2Vzc29yTm9kZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
YXVkaW8vQXVkaW9CYXNpY1Byb2Nlc3Nvck5vZGUuaApAQCAtMzcsNyArMzcsNyBAQCBjbGFzcyBB
dWRpb1Byb2Nlc3NvcjsKIGNsYXNzIEF1ZGlvQmFzaWNQcm9jZXNzb3JOb2RlIDogcHVibGljIEF1
ZGlvTm9kZSB7CiAgICAgV1RGX01BS0VfSVNPX0FMTE9DQVRFRChBdWRpb0Jhc2ljUHJvY2Vzc29y
Tm9kZSk7CiBwdWJsaWM6Ci0gICAgQXVkaW9CYXNpY1Byb2Nlc3Nvck5vZGUoQXVkaW9Db250ZXh0
JiwgZmxvYXQgc2FtcGxlUmF0ZSk7CisgICAgQXVkaW9CYXNpY1Byb2Nlc3Nvck5vZGUoQXVkaW9D
b250ZXh0QmFzZSYsIGZsb2F0IHNhbXBsZVJhdGUpOwogCiAgICAgLy8gQXVkaW9Ob2RlCiAgICAg
dm9pZCBwcm9jZXNzKHNpemVfdCBmcmFtZXNUb1Byb2Nlc3MpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0J1ZmZlclNvdXJjZU5vZGUu
Y3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0J1ZmZlclNvdXJjZU5v
ZGUuY3BwCmluZGV4IGMzNjYxZGU1N2Q3Li4wYzFiYTRlOTRhOSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0J1ZmZlclNvdXJjZU5vZGUuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9CdWZmZXJTb3VyY2VOb2RlLmNw
cApAQCAtNDksMTIgKzQ5LDEyIEBAIGNvbnN0IGRvdWJsZSBEZWZhdWx0R3JhaW5EdXJhdGlvbiA9
IDAuMDIwOyAvLyAyMG1zCiAvLyB0byBtaW5pbWl6ZSBsaW5lYXIgaW50ZXJwb2xhdGlvbiBhbGlh
c2luZy4KIGNvbnN0IGRvdWJsZSBNYXhSYXRlID0gMTAyNDsKIAotUmVmPEF1ZGlvQnVmZmVyU291
cmNlTm9kZT4gQXVkaW9CdWZmZXJTb3VyY2VOb2RlOjpjcmVhdGUoQXVkaW9Db250ZXh0JiBjb250
ZXh0LCBmbG9hdCBzYW1wbGVSYXRlKQorUmVmPEF1ZGlvQnVmZmVyU291cmNlTm9kZT4gQXVkaW9C
dWZmZXJTb3VyY2VOb2RlOjpjcmVhdGUoQXVkaW9Db250ZXh0QmFzZSYgY29udGV4dCwgZmxvYXQg
c2FtcGxlUmF0ZSkKIHsKICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBBdWRpb0J1ZmZlclNvdXJj
ZU5vZGUoY29udGV4dCwgc2FtcGxlUmF0ZSkpOwogfQogCi1BdWRpb0J1ZmZlclNvdXJjZU5vZGU6
OkF1ZGlvQnVmZmVyU291cmNlTm9kZShBdWRpb0NvbnRleHQmIGNvbnRleHQsIGZsb2F0IHNhbXBs
ZVJhdGUpCitBdWRpb0J1ZmZlclNvdXJjZU5vZGU6OkF1ZGlvQnVmZmVyU291cmNlTm9kZShBdWRp
b0NvbnRleHRCYXNlJiBjb250ZXh0LCBmbG9hdCBzYW1wbGVSYXRlKQogICAgIDogQXVkaW9TY2hl
ZHVsZWRTb3VyY2VOb2RlKGNvbnRleHQsIHNhbXBsZVJhdGUpCiAgICAgLCBtX2J1ZmZlcihudWxs
cHRyKQogICAgICwgbV9pc0xvb3BpbmcoZmFsc2UpCkBAIC00MTMsNyArNDEzLDcgQEAgdm9pZCBB
dWRpb0J1ZmZlclNvdXJjZU5vZGU6OnNldEJ1ZmZlcihSZWZQdHI8QXVkaW9CdWZmZXI+JiYgYnVm
ZmVyKQogICAgIERFQlVHX0xPRyhMT0dJREVOVElGSUVSKTsKIAogICAgIC8vIFRoZSBjb250ZXh0
IG11c3QgYmUgbG9ja2VkIHNpbmNlIGNoYW5naW5nIHRoZSBidWZmZXIgY2FuIHJlLWNvbmZpZ3Vy
ZSB0aGUgbnVtYmVyIG9mIGNoYW5uZWxzIHRoYXQgYXJlIG91dHB1dC4KLSAgICBBdWRpb0NvbnRl
eHQ6OkF1dG9Mb2NrZXIgY29udGV4dExvY2tlcihjb250ZXh0KCkpOworICAgIEF1ZGlvQ29udGV4
dEJhc2U6OkF1dG9Mb2NrZXIgY29udGV4dExvY2tlcihjb250ZXh0KCkpOwogICAgIAogICAgIC8v
IFRoaXMgc3luY2hyb25pemVzIHdpdGggcHJvY2VzcygpLgogICAgIGF1dG8gbG9ja2VyID0gaG9s
ZExvY2sobV9wcm9jZXNzTXV0ZXgpOwpAQCAtNTU3LDcgKzU1Nyw3IEBAIGJvb2wgQXVkaW9CdWZm
ZXJTb3VyY2VOb2RlOjpwcm9wYWdhdGVzU2lsZW5jZSgpIGNvbnN0CiAgICAgcmV0dXJuICFpc1Bs
YXlpbmdPclNjaGVkdWxlZCgpIHx8IGhhc0ZpbmlzaGVkKCkgfHwgIW1fYnVmZmVyOwogfQogCi12
b2lkIEF1ZGlvQnVmZmVyU291cmNlTm9kZTo6c2V0UGFubmVyTm9kZShQYW5uZXJOb2RlKiBwYW5u
ZXJOb2RlKQordm9pZCBBdWRpb0J1ZmZlclNvdXJjZU5vZGU6OnNldFBhbm5lck5vZGUoUGFubmVy
Tm9kZUJhc2UqIHBhbm5lck5vZGUpCiB7CiAgICAgaWYgKG1fcGFubmVyTm9kZSAhPSBwYW5uZXJO
b2RlICYmICFoYXNGaW5pc2hlZCgpKSB7CiAgICAgICAgIGlmIChwYW5uZXJOb2RlKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0J1ZmZlclNvdXJjZU5v
ZGUuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9CdWZmZXJTb3VyY2VO
b2RlLmgKaW5kZXggNTQ4YjI2ZTdmYTcuLjYwMTEzMTE5OWE0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQnVmZmVyU291cmNlTm9kZS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9CdWZmZXJTb3VyY2VOb2RlLmgKQEAg
LTMxLDcgKzMxLDcgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQXVkaW9CdWZmZXI7
Ci1jbGFzcyBQYW5uZXJOb2RlOworY2xhc3MgUGFubmVyTm9kZUJhc2U7CiAKIC8vIEF1ZGlvQnVm
ZmVyU291cmNlTm9kZSBpcyBhbiBBdWRpb05vZGUgcmVwcmVzZW50aW5nIGFuIGF1ZGlvIHNvdXJj
ZSBmcm9tIGFuIGluLW1lbW9yeSBhdWRpbyBhc3NldCByZXByZXNlbnRlZCBieSBhbiBBdWRpb0J1
ZmZlci4KIC8vIEl0IGdlbmVyYWxseSB3aWxsIGJlIHVzZWQgZm9yIHNob3J0IHNvdW5kcyB3aGlj
aCByZXF1aXJlIGEgaGlnaCBkZWdyZWUgb2Ygc2NoZWR1bGluZyBmbGV4aWJpbGl0eSAoY2FuIHBs
YXliYWNrIGluIHJoeXRobWljYWxseSBwZXJmZWN0IHdheXMpLgpAQCAtMzksNyArMzksNyBAQCBj
bGFzcyBQYW5uZXJOb2RlOwogY2xhc3MgQXVkaW9CdWZmZXJTb3VyY2VOb2RlIGZpbmFsIDogcHVi
bGljIEF1ZGlvU2NoZWR1bGVkU291cmNlTm9kZSB7CiAgICAgV1RGX01BS0VfSVNPX0FMTE9DQVRF
RChBdWRpb0J1ZmZlclNvdXJjZU5vZGUpOwogcHVibGljOgotICAgIHN0YXRpYyBSZWY8QXVkaW9C
dWZmZXJTb3VyY2VOb2RlPiBjcmVhdGUoQXVkaW9Db250ZXh0JiwgZmxvYXQgc2FtcGxlUmF0ZSk7
CisgICAgc3RhdGljIFJlZjxBdWRpb0J1ZmZlclNvdXJjZU5vZGU+IGNyZWF0ZShBdWRpb0NvbnRl
eHRCYXNlJiwgZmxvYXQgc2FtcGxlUmF0ZSk7CiAKICAgICB2aXJ0dWFsIH5BdWRpb0J1ZmZlclNv
dXJjZU5vZGUoKTsKIApAQCAtNzksNyArNzksNyBAQCBwdWJsaWM6CiAgICAgQXVkaW9QYXJhbSog
cGxheWJhY2tSYXRlKCkgeyByZXR1cm4gbV9wbGF5YmFja1JhdGUuZ2V0KCk7IH0KIAogICAgIC8v
IElmIGEgcGFubmVyIG5vZGUgaXMgc2V0LCB0aGVuIHdlIGNhbiBpbmNvcnBvcmF0ZSBkb3BwbGVy
IHNoaWZ0IGludG8gdGhlIHBsYXliYWNrIHBpdGNoIHJhdGUuCi0gICAgdm9pZCBzZXRQYW5uZXJO
b2RlKFBhbm5lck5vZGUqKTsKKyAgICB2b2lkIHNldFBhbm5lck5vZGUoUGFubmVyTm9kZUJhc2Uq
KTsKICAgICB2b2lkIGNsZWFyUGFubmVyTm9kZSgpOwogCiAgICAgLy8gSWYgd2UgYXJlIG5vIGxv
bmdlciBwbGF5aW5nLCBwcm9wb2dhdGUgc2lsZW5jZSBhaGVhZCB0byBkb3duc3RyZWFtIG5vZGVz
LgpAQCAtOTEsNyArOTEsNyBAQCBwdWJsaWM6CiAgICAgY29uc3QgY2hhciogYWN0aXZlRE9NT2Jq
ZWN0TmFtZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuICJBdWRpb0J1ZmZlclNvdXJjZU5vZGUi
OyB9CiAKIHByaXZhdGU6Ci0gICAgQXVkaW9CdWZmZXJTb3VyY2VOb2RlKEF1ZGlvQ29udGV4dCYs
IGZsb2F0IHNhbXBsZVJhdGUpOworICAgIEF1ZGlvQnVmZmVyU291cmNlTm9kZShBdWRpb0NvbnRl
eHRCYXNlJiwgZmxvYXQgc2FtcGxlUmF0ZSk7CiAKICAgICBkb3VibGUgdGFpbFRpbWUoKSBjb25z
dCBmaW5hbCB7IHJldHVybiAwOyB9CiAgICAgZG91YmxlIGxhdGVuY3lUaW1lKCkgY29uc3QgZmlu
YWwgeyByZXR1cm4gMDsgfQpAQCAtMTQ1LDcgKzE0NSw3IEBAIHByaXZhdGU6CiAKICAgICAvLyBX
ZSBvcHRpb25hbGx5IGtlZXAgdHJhY2sgb2YgYSBwYW5uZXIgbm9kZSB3aGljaCBoYXMgYSBkb3Bw
bGVyIHNoaWZ0IHRoYXQgaXMgaW5jb3Jwb3JhdGVkIGludG8KICAgICAvLyB0aGUgcGl0Y2ggcmF0
ZS4gV2UgbWFudWFsbHkgbWFuYWdlIHJlZi1jb3VudGluZyBiZWNhdXNlIHdlIHdhbnQgdG8gdXNl
IFJlZlR5cGVDb25uZWN0aW9uLgotICAgIFBhbm5lck5vZGUqIG1fcGFubmVyTm9kZTsKKyAgICBQ
YW5uZXJOb2RlQmFzZSogbV9wYW5uZXJOb2RlOwogCiAgICAgLy8gVGhpcyBzeW5jaHJvbml6ZXMg
cHJvY2VzcygpIHdpdGggc2V0QnVmZmVyKCkgd2hpY2ggY2FuIGNhdXNlIGR5bmFtaWMgY2hhbm5l
bCBjb3VudCBjaGFuZ2VzLgogICAgIG11dGFibGUgTG9jayBtX3Byb2Nlc3NNdXRleDsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0LmNwcAppbmRleCAz
ODJkYzdjZjBjZC4uNGRhMGExNDIxMWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmF1ZGlvL0F1ZGlvQ29udGV4dC5jcHAKQEAgLTEwNyw3ICsxMDcsNyBAQCBjb25zdCB1bnNp
Z25lZCBNYXhQZXJpb2RpY1dhdmVMZW5ndGggPSA0MDk2OwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKLVdURl9NQUtFX0lTT19BTExPQ0FURURfSU1QTChBdWRpb0NvbnRleHQpOworV1RGX01BS0Vf
SVNPX0FMTE9DQVRFRF9JTVBMKEF1ZGlvQ29udGV4dEJhc2UpOwogCiAjZGVmaW5lIFJFTEVBU0Vf
TE9HX0lGX0FMTE9XRUQoZm10LCAuLi4pIFJFTEVBU0VfTE9HX0lGKGRvY3VtZW50KCkgJiYgZG9j
dW1lbnQoKS0+cGFnZSgpICYmIGRvY3VtZW50KCktPnBhZ2UoKS0+aXNBbHdheXNPbkxvZ2dpbmdB
bGxvd2VkKCksIE1lZGlhLCAiJXAgLSBBdWRpb0NvbnRleHQ6OiIgZm10LCB0aGlzLCAjI19fVkFf
QVJHU19fKQogICAgIApAQCAtMTM3LDkgKzEzNywxNCBAQCBFeGNlcHRpb25PcjxSZWY8QXVkaW9D
b250ZXh0Pj4gQXVkaW9Db250ZXh0OjpjcmVhdGUoRG9jdW1lbnQmIGRvY3VtZW50KQogICAgIHJl
dHVybiBhdWRpb0NvbnRleHQ7CiB9CiAKK0F1ZGlvQ29udGV4dEJhc2U6OkF1ZGlvQ29udGV4dEJh
c2UoRG9jdW1lbnQmIGRvY3VtZW50KQorICAgIDogQWN0aXZlRE9NT2JqZWN0KGRvY3VtZW50KQor
eworfQorCiAvLyBDb25zdHJ1Y3RvciBmb3IgcmVuZGVyaW5nIHRvIHRoZSBhdWRpbyBoYXJkd2Fy
ZS4KIEF1ZGlvQ29udGV4dDo6QXVkaW9Db250ZXh0KERvY3VtZW50JiBkb2N1bWVudCkKLSAgICA6
IEFjdGl2ZURPTU9iamVjdChkb2N1bWVudCkKKyAgICA6IEF1ZGlvQ29udGV4dEJhc2UoZG9jdW1l
bnQpCiAjaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECiAgICAgLCBtX2xvZ2dlcihkb2N1bWVudC5s
b2dnZXIoKSkKICAgICAsIG1fbG9nSWRlbnRpZmllcih1bmlxdWVMb2dJZGVudGlmaWVyKCkpCkBA
IC0xNjQsNyArMTY5LDcgQEAgQXVkaW9Db250ZXh0OjpBdWRpb0NvbnRleHQoRG9jdW1lbnQmIGRv
Y3VtZW50KQogCiAvLyBDb25zdHJ1Y3RvciBmb3Igb2ZmbGluZSAobm9uLXJlYWx0aW1lKSByZW5k
ZXJpbmcuCiBBdWRpb0NvbnRleHQ6OkF1ZGlvQ29udGV4dChEb2N1bWVudCYgZG9jdW1lbnQsIEF1
ZGlvQnVmZmVyKiByZW5kZXJUYXJnZXQpCi0gICAgOiBBY3RpdmVET01PYmplY3QoZG9jdW1lbnQp
CisgICAgOiBBdWRpb0NvbnRleHRCYXNlKGRvY3VtZW50KQogI2lmICFSRUxFQVNFX0xPR19ESVNB
QkxFRAogICAgICwgbV9sb2dnZXIoZG9jdW1lbnQubG9nZ2VyKCkpCiAgICAgLCBtX2xvZ0lkZW50
aWZpZXIodW5pcXVlTG9nSWRlbnRpZmllcigpKQpAQCAtMzY2LDcgKzM3MSw3IEBAIGNvbnN0IGNo
YXIqIEF1ZGlvQ29udGV4dDo6YWN0aXZlRE9NT2JqZWN0TmFtZSgpIGNvbnN0CiAgICAgcmV0dXJu
ICJBdWRpb0NvbnRleHQiOwogfQogCi1Eb2N1bWVudCogQXVkaW9Db250ZXh0Ojpkb2N1bWVudCgp
IGNvbnN0CitEb2N1bWVudCogQXVkaW9Db250ZXh0QmFzZTo6ZG9jdW1lbnQoKSBjb25zdAogewog
ICAgIHJldHVybiBkb3duY2FzdDxEb2N1bWVudD4obV9zY3JpcHRFeGVjdXRpb25Db250ZXh0KTsK
IH0KQEAgLTEwNjgsNyArMTA3Myw3IEBAIHZvaWQgQXVkaW9Db250ZXh0Ojpwcm9jZXNzQXV0b21h
dGljUHVsbE5vZGVzKHNpemVfdCBmcmFtZXNUb1Byb2Nlc3MpCiAgICAgICAgIG5vZGUtPnByb2Nl
c3NJZk5lY2Vzc2FyeShmcmFtZXNUb1Byb2Nlc3MpOwogfQogCi1TY3JpcHRFeGVjdXRpb25Db250
ZXh0KiBBdWRpb0NvbnRleHQ6OnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSBjb25zdAorU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCogQXVkaW9Db250ZXh0QmFzZTo6c2NyaXB0RXhlY3V0aW9uQ29udGV4
dCgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIEFjdGl2ZURPTU9iamVjdDo6c2NyaXB0RXhlY3V0aW9u
Q29udGV4dCgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRp
by9BdWRpb0NvbnRleHQuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9D
b250ZXh0LmgKaW5kZXggOGUwOTQzOTRjZmYuLmJhNzQ3YWUyM2ExIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQ29udGV4dC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0LmgKQEAgLTI4LDYgKzI4LDcgQEAK
ICNpbmNsdWRlICJBY3RpdmVET01PYmplY3QuaCIKICNpbmNsdWRlICJBc3luY0F1ZGlvRGVjb2Rl
ci5oIgogI2luY2x1ZGUgIkF1ZGlvQnVzLmgiCisjaW5jbHVkZSAiQXVkaW9Db250ZXh0U3RhdGUu
aCIKICNpbmNsdWRlICJBdWRpb0Rlc3RpbmF0aW9uTm9kZS5oIgogI2luY2x1ZGUgIkV2ZW50VGFy
Z2V0LmgiCiAjaW5jbHVkZSAiTWVkaWFDYW5TdGFydExpc3RlbmVyLmgiCkBAIC03OSw0NCArODAs
MTM4IEBAIGNsYXNzIFdhdmVTaGFwZXJOb2RlOwogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBJRExUeXBl
PiBjbGFzcyBET01Qcm9taXNlRGVmZXJyZWQ7CiAKLS8vIEF1ZGlvQ29udGV4dCBpcyB0aGUgY29y
bmVyc3RvbmUgb2YgdGhlIHdlYiBhdWRpbyBBUEkgYW5kIGFsbCBBdWRpb05vZGVzIGFyZSBjcmVh
dGVkIGZyb20gaXQuCi0vLyBGb3IgdGhyZWFkIHNhZmV0eSBiZXR3ZWVuIHRoZSBhdWRpbyB0aHJl
YWQgYW5kIHRoZSBtYWluIHRocmVhZCwgaXQgaGFzIGEgcmVuZGVyaW5nIGdyYXBoIGxvY2tpbmcg
bWVjaGFuaXNtLiAKLQotY2xhc3MgQXVkaW9Db250ZXh0CitjbGFzcyBBdWRpb0NvbnRleHRCYXNl
CiAgICAgOiBwdWJsaWMgQWN0aXZlRE9NT2JqZWN0CiAgICAgLCBwdWJsaWMgVGhyZWFkU2FmZVJl
ZkNvdW50ZWQ8QXVkaW9Db250ZXh0PgogICAgICwgcHVibGljIEV2ZW50VGFyZ2V0V2l0aElubGlu
ZURhdGEKICAgICAsIHB1YmxpYyBNZWRpYUNhblN0YXJ0TGlzdGVuZXIKICAgICAsIHB1YmxpYyBN
ZWRpYVByb2R1Y2VyCi0gICAgLCBwcml2YXRlIFBsYXRmb3JtTWVkaWFTZXNzaW9uQ2xpZW50Ci0g
ICAgLCBwcml2YXRlIFZpc2liaWxpdHlDaGFuZ2VDbGllbnQKICNpZiAhUkVMRUFTRV9MT0dfRElT
QUJMRUQKLSAgICAsIHByaXZhdGUgTG9nZ2VySGVscGVyCisgICAgLCBwdWJsaWMgTG9nZ2VySGVs
cGVyCiAjZW5kaWYKIHsKLSAgICBXVEZfTUFLRV9JU09fQUxMT0NBVEVEKEF1ZGlvQ29udGV4dCk7
CisgICAgV1RGX01BS0VfSVNPX0FMTE9DQVRFRChBdWRpb0NvbnRleHRCYXNlKTsKK3B1YmxpYzoK
KyAgICB2aXJ0dWFsIH5BdWRpb0NvbnRleHRCYXNlKCkgPSBkZWZhdWx0OworCisgICAgLy8gUmVj
b25jaWxlIHJlZi9kZXJlZiB3aGljaCBhcmUgZGVmaW5lZCBib3RoIGluIFRocmVhZFNhZmVSZWZD
b3VudGVkIGFuZCBFdmVudFRhcmdldC4KKyAgICB1c2luZyBUaHJlYWRTYWZlUmVmQ291bnRlZDo6
cmVmOworICAgIHVzaW5nIFRocmVhZFNhZmVSZWZDb3VudGVkOjpkZXJlZjsKKworICAgIERvY3Vt
ZW50KiBkb2N1bWVudCgpIGNvbnN0OworCisgICAgdmlydHVhbCBib29sIGlzSW5pdGlhbGl6ZWQo
KSBjb25zdCA9IDA7CisKKyAgICB2aXJ0dWFsIHNpemVfdCBjdXJyZW50U2FtcGxlRnJhbWUoKSBj
b25zdCA9IDA7CisgICAgdmlydHVhbCBmbG9hdCBzYW1wbGVSYXRlKCkgY29uc3QgPSAwOworICAg
IHZpcnR1YWwgZG91YmxlIGN1cnJlbnRUaW1lKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgYm9v
bCBpc0dyYXBoT3duZXIoKSBjb25zdCA9IDA7CisKKyAgICB2aXJ0dWFsIHZvaWQgc2V0QXVkaW9U
aHJlYWQoVGhyZWFkJikgPSAwOworICAgIHZpcnR1YWwgYm9vbCBpc0F1ZGlvVGhyZWFkKCkgY29u
c3QgPSAwOworICAgIHZpcnR1YWwgYm9vbCBpc0F1ZGlvVGhyZWFkRmluaXNoZWQoKSA9IDA7CisK
KyAgICB2aXJ0dWFsIHZvaWQgaXNQbGF5aW5nQXVkaW9EaWRDaGFuZ2UoKSA9IDA7CisgICAgdmly
dHVhbCB2b2lkIG5vZGVXaWxsQmVnaW5QbGF5YmFjaygpID0gMDsKKworICAgIHZpcnR1YWwgdm9p
ZCBwb3N0VGFzayhXVEY6OkZ1bmN0aW9uPHZvaWQoKT4mJikgPSAwOworICAgIHZpcnR1YWwgYm9v
bCBpc1N0b3BwZWQoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBjb25zdCBTZWN1cml0eU9yaWdp
biogb3JpZ2luKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgdm9pZCBhZGRDb25zb2xlTWVzc2Fn
ZShNZXNzYWdlU291cmNlLCBNZXNzYWdlTGV2ZWwsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSkgPSAw
OworCisgICAgdmlydHVhbCB2b2lkIG1hcmtGb3JEZWxldGlvbihBdWRpb05vZGUmKSA9IDA7Cisg
ICAgdmlydHVhbCB2b2lkIGRlbGV0ZU1hcmtlZE5vZGVzKCkgPSAwOworCisgICAgdmlydHVhbCB2
b2lkIGhhbmRsZVByZVJlbmRlclRhc2tzKCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBoYW5kbGVQ
b3N0UmVuZGVyVGFza3MoKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHByb2Nlc3NBdXRvbWF0aWNQ
dWxsTm9kZXMoc2l6ZV90IGZyYW1lc1RvUHJvY2VzcykgPSAwOworICAgIHZpcnR1YWwgdm9pZCBh
ZGREZWZlcnJlZEZpbmlzaERlcmVmKEF1ZGlvTm9kZSopID0gMDsKKworICAgIHZpcnR1YWwgdm9p
ZCByZW1vdmVNYXJrZWRTdW1taW5nSnVuY3Rpb24oQXVkaW9TdW1taW5nSnVuY3Rpb24qKSA9IDA7
CisgICAgdmlydHVhbCB2b2lkIG1hcmtTdW1taW5nSnVuY3Rpb25EaXJ0eShBdWRpb1N1bW1pbmdK
dW5jdGlvbiopID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgbWFya0F1ZGlvTm9kZU91dHB1dERpcnR5
KEF1ZGlvTm9kZU91dHB1dCopID0gMDsKKworI2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRAorICAg
IHZpcnR1YWwgY29uc3Qgdm9pZCogbmV4dEF1ZGlvTm9kZUxvZ0lkZW50aWZpZXIoKSA9IDA7Cisg
ICAgdmlydHVhbCBjb25zdCB2b2lkKiBuZXh0QXVkaW9QYXJhbWV0ZXJMb2dJZGVudGlmaWVyKCkg
PSAwOworI2VuZGlmCisKKyAgICB2aXJ0dWFsIHZvaWQgYWRkQXV0b21hdGljUHVsbE5vZGUoQXVk
aW9Ob2RlJikgPSAwOworICAgIHZpcnR1YWwgdm9pZCByZW1vdmVBdXRvbWF0aWNQdWxsTm9kZShB
dWRpb05vZGUmKSA9IDA7CisKKyAgICB2aXJ0dWFsIHZvaWQgbm90aWZ5Tm9kZUZpbmlzaGVkUHJv
Y2Vzc2luZyhBdWRpb05vZGUqKSA9IDA7CisKKyAgICB2aXJ0dWFsIHZvaWQgZmluaXNoZWRSZW5k
ZXJpbmcoYm9vbCBkaWRSZW5kZXJpbmcpID0gMDsKKworICAgIHZpcnR1YWwgdm9pZCBpbmNyZW1l
bnRDb25uZWN0aW9uQ291bnQoKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGluY3JlbWVudEFjdGl2
ZVNvdXJjZUNvdW50KCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBkZWNyZW1lbnRBY3RpdmVTb3Vy
Y2VDb3VudCgpID0gMDsKKworICAgIHZpcnR1YWwgYm9vbCBpc09mZmxpbmVDb250ZXh0KCkgY29u
c3QgPSAwOworICAgIHZpcnR1YWwgYm9vbCBpc0F1ZGlvQ29udGV4dCgpIGNvbnN0ID0gMDsKKyAg
ICB2aXJ0dWFsIGJvb2wgaXNXZWJLaXRBdWRpb0NvbnRleHQoKSBjb25zdCA9IDA7CisKKyAgICAv
LyBtdXN0UmVsZWFzZUxvY2sgaXMgc2V0IHRvIHRydWUgaWYgd2UgYWNxdWlyZWQgdGhlIGxvY2sg
aW4gdGhpcyBtZXRob2QgY2FsbCBhbmQgY2FsbGVyIG11c3QgdW5sb2NrKCksIGZhbHNlIGlmIGl0
IHdhcyBwcmV2aW91c2x5IGFjcXVpcmVkLgorICAgIHZpcnR1YWwgdm9pZCBsb2NrKGJvb2wmIG11
c3RSZWxlYXNlTG9jaykgPSAwOworICAgIHZpcnR1YWwgYm9vbCB0cnlMb2NrKGJvb2wmIG11c3RS
ZWxlYXNlTG9jaykgPSAwOworICAgIHZpcnR1YWwgdm9pZCB1bmxvY2soKSA9IDA7CisKKyAgICBj
bGFzcyBBdXRvTG9ja2VyIHsKKyAgICBwdWJsaWM6CisgICAgICAgIGV4cGxpY2l0IEF1dG9Mb2Nr
ZXIoQXVkaW9Db250ZXh0QmFzZSYgY29udGV4dCkKKyAgICAgICAgICAgIDogbV9jb250ZXh0KGNv
bnRleHQpCisgICAgICAgIHsKKyAgICAgICAgICAgIG1fY29udGV4dC5sb2NrKG1fbXVzdFJlbGVh
c2VMb2NrKTsKKyAgICAgICAgfQorCisgICAgICAgIH5BdXRvTG9ja2VyKCkKKyAgICAgICAgewor
ICAgICAgICAgICAgaWYgKG1fbXVzdFJlbGVhc2VMb2NrKQorICAgICAgICAgICAgICAgIG1fY29u
dGV4dC51bmxvY2soKTsKKyAgICAgICAgfQorCisgICAgcHJpdmF0ZToKKyAgICAgICAgQXVkaW9D
b250ZXh0QmFzZSYgbV9jb250ZXh0OworICAgICAgICBib29sIG1fbXVzdFJlbGVhc2VMb2NrOwor
ICAgIH07CisKKyAgICAvLyBFdmVudFRhcmdldAorICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQq
IHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSBjb25zdCBmaW5hbDsKKyAgICB2b2lkIHJlZkV2ZW50
VGFyZ2V0KCkgb3ZlcnJpZGUgeyByZWYoKTsgfQorICAgIHZvaWQgZGVyZWZFdmVudFRhcmdldCgp
IG92ZXJyaWRlIHsgZGVyZWYoKTsgfQorCitwcm90ZWN0ZWQ6CisgICAgZXhwbGljaXQgQXVkaW9D
b250ZXh0QmFzZShEb2N1bWVudCYpOworfTsKKworLy8gQXVkaW9Db250ZXh0IGlzIHRoZSBjb3Ju
ZXJzdG9uZSBvZiB0aGUgd2ViIGF1ZGlvIEFQSSBhbmQgYWxsIEF1ZGlvTm9kZXMgYXJlIGNyZWF0
ZWQgZnJvbSBpdC4KKy8vIEZvciB0aHJlYWQgc2FmZXR5IGJldHdlZW4gdGhlIGF1ZGlvIHRocmVh
ZCBhbmQgdGhlIG1haW4gdGhyZWFkLCBpdCBoYXMgYSByZW5kZXJpbmcgZ3JhcGggbG9ja2luZyBt
ZWNoYW5pc20uIAorCitjbGFzcyBBdWRpb0NvbnRleHQKKyAgICA6IHB1YmxpYyBBdWRpb0NvbnRl
eHRCYXNlCisgICAgLCBwcml2YXRlIFBsYXRmb3JtTWVkaWFTZXNzaW9uQ2xpZW50CisgICAgLCBw
cml2YXRlIFZpc2liaWxpdHlDaGFuZ2VDbGllbnQKK3sKIHB1YmxpYzoKICAgICAvLyBDcmVhdGUg
YW4gQXVkaW9Db250ZXh0IGZvciByZW5kZXJpbmcgdG8gdGhlIGF1ZGlvIGhhcmR3YXJlLgogICAg
IHN0YXRpYyBFeGNlcHRpb25PcjxSZWY8QXVkaW9Db250ZXh0Pj4gY3JlYXRlKERvY3VtZW50Jik7
CiAKICAgICB2aXJ0dWFsIH5BdWRpb0NvbnRleHQoKTsKIAotICAgIGJvb2wgaXNJbml0aWFsaXpl
ZCgpIGNvbnN0OworICAgIGJvb2wgaXNJbml0aWFsaXplZCgpIGNvbnN0IGZpbmFsOwogICAgIAot
ICAgIGJvb2wgaXNPZmZsaW5lQ29udGV4dCgpIGNvbnN0IHsgcmV0dXJuIG1faXNPZmZsaW5lQ29u
dGV4dDsgfQotCi0gICAgRG9jdW1lbnQqIGRvY3VtZW50KCkgY29uc3Q7IC8vIEFTU0VSVHMgaWYg
ZG9jdW1lbnQgbm8gbG9uZ2VyIGV4aXN0cy4KKyAgICBib29sIGlzT2ZmbGluZUNvbnRleHQoKSBj
b25zdCBmaW5hbCB7IHJldHVybiBtX2lzT2ZmbGluZUNvbnRleHQ7IH0KIAogICAgIERvY3VtZW50
SWRlbnRpZmllciBob3N0aW5nRG9jdW1lbnRJZGVudGlmaWVyKCkgY29uc3QgZmluYWw7CiAKICAg
ICBBdWRpb0Rlc3RpbmF0aW9uTm9kZSogZGVzdGluYXRpb24oKSB7IHJldHVybiBtX2Rlc3RpbmF0
aW9uTm9kZS5nZXQoKTsgfQotICAgIHNpemVfdCBjdXJyZW50U2FtcGxlRnJhbWUoKSBjb25zdCB7
IHJldHVybiBtX2Rlc3RpbmF0aW9uTm9kZSA/IG1fZGVzdGluYXRpb25Ob2RlLT5jdXJyZW50U2Ft
cGxlRnJhbWUoKSA6IDA7IH0KLSAgICBkb3VibGUgY3VycmVudFRpbWUoKSBjb25zdCB7IHJldHVy
biBtX2Rlc3RpbmF0aW9uTm9kZSA/IG1fZGVzdGluYXRpb25Ob2RlLT5jdXJyZW50VGltZSgpIDog
MC47IH0KLSAgICBmbG9hdCBzYW1wbGVSYXRlKCkgY29uc3QgeyByZXR1cm4gbV9kZXN0aW5hdGlv
bk5vZGUgPyBtX2Rlc3RpbmF0aW9uTm9kZS0+c2FtcGxlUmF0ZSgpIDogMC5mOyB9CisgICAgc2l6
ZV90IGN1cnJlbnRTYW1wbGVGcmFtZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fZGVzdGluYXRp
b25Ob2RlID8gbV9kZXN0aW5hdGlvbk5vZGUtPmN1cnJlbnRTYW1wbGVGcmFtZSgpIDogMDsgfQor
ICAgIGRvdWJsZSBjdXJyZW50VGltZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fZGVzdGluYXRp
b25Ob2RlID8gbV9kZXN0aW5hdGlvbk5vZGUtPmN1cnJlbnRUaW1lKCkgOiAwLjsgfQorICAgIGZs
b2F0IHNhbXBsZVJhdGUoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2Rlc3RpbmF0aW9uTm9kZSA/
IG1fZGVzdGluYXRpb25Ob2RlLT5zYW1wbGVSYXRlKCkgOiAwLmY7IH0KICAgICB1bnNpZ25lZCBs
b25nIGFjdGl2ZVNvdXJjZUNvdW50KCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQgbG9uZz4obV9hY3RpdmVTb3VyY2VDb3VudCk7IH0KIAotICAgIHZvaWQgaW5jcmVtZW50QWN0
aXZlU291cmNlQ291bnQoKTsKLSAgICB2b2lkIGRlY3JlbWVudEFjdGl2ZVNvdXJjZUNvdW50KCk7
CisgICAgdm9pZCBpbmNyZW1lbnRBY3RpdmVTb3VyY2VDb3VudCgpIGZpbmFsOworICAgIHZvaWQg
ZGVjcmVtZW50QWN0aXZlU291cmNlQ291bnQoKSBmaW5hbDsKICAgICAKICAgICBFeGNlcHRpb25P
cjxSZWY8QXVkaW9CdWZmZXI+PiBjcmVhdGVCdWZmZXIodW5zaWduZWQgbnVtYmVyT2ZDaGFubmVs
cywgc2l6ZV90IG51bWJlck9mRnJhbWVzLCBmbG9hdCBzYW1wbGVSYXRlKTsKICAgICBFeGNlcHRp
b25PcjxSZWY8QXVkaW9CdWZmZXI+PiBjcmVhdGVCdWZmZXIoQXJyYXlCdWZmZXImLCBib29sIG1p
eFRvTW9ubyk7CkBAIC0xMzAsNyArMjI1LDcgQEAgcHVibGljOgogICAgIHZvaWQgcmVzdW1lUmVu
ZGVyaW5nKERPTVByb21pc2VEZWZlcnJlZDx2b2lkPiYmKTsKICAgICB2b2lkIGNsb3NlKERPTVBy
b21pc2VEZWZlcnJlZDx2b2lkPiYmKTsKIAotICAgIGVudW0gY2xhc3MgU3RhdGUgeyBTdXNwZW5k
ZWQsIFJ1bm5pbmcsIEludGVycnVwdGVkLCBDbG9zZWQgfTsKKyAgICB1c2luZyBTdGF0ZSA9IEF1
ZGlvQ29udGV4dFN0YXRlOwogICAgIFN0YXRlIHN0YXRlKCkgY29uc3Q7CiAgICAgYm9vbCBpc0Ns
b3NlZCgpIGNvbnN0IHsgcmV0dXJuIG1fc3RhdGUgPT0gU3RhdGU6OkNsb3NlZDsgfQogCkBAIC0x
NjAsMzEgKzI1NSwzMSBAQCBwdWJsaWM6CiAgICAgRXhjZXB0aW9uT3I8UmVmPFBlcmlvZGljV2F2
ZT4+IGNyZWF0ZVBlcmlvZGljV2F2ZShGbG9hdDMyQXJyYXkmIHJlYWwsIEZsb2F0MzJBcnJheSYg
aW1hZ2luYXJ5KTsKIAogICAgIC8vIFdoZW4gYSBzb3VyY2Ugbm9kZSBoYXMgbm8gbW9yZSBwcm9j
ZXNzaW5nIHRvIGRvIChoYXMgZmluaXNoZWQgcGxheWluZyksIHRoZW4gaXQgdGVsbHMgdGhlIGNv
bnRleHQgdG8gZGVyZWZlcmVuY2UgaXQuCi0gICAgdm9pZCBub3RpZnlOb2RlRmluaXNoZWRQcm9j
ZXNzaW5nKEF1ZGlvTm9kZSopOworICAgIHZvaWQgbm90aWZ5Tm9kZUZpbmlzaGVkUHJvY2Vzc2lu
ZyhBdWRpb05vZGUqKSBmaW5hbDsKIAogICAgIC8vIENhbGxlZCBhdCB0aGUgc3RhcnQgb2YgZWFj
aCByZW5kZXIgcXVhbnR1bS4KLSAgICB2b2lkIGhhbmRsZVByZVJlbmRlclRhc2tzKCk7CisgICAg
dm9pZCBoYW5kbGVQcmVSZW5kZXJUYXNrcygpIGZpbmFsOwogCiAgICAgLy8gQ2FsbGVkIGF0IHRo
ZSBlbmQgb2YgZWFjaCByZW5kZXIgcXVhbnR1bS4KLSAgICB2b2lkIGhhbmRsZVBvc3RSZW5kZXJU
YXNrcygpOworICAgIHZvaWQgaGFuZGxlUG9zdFJlbmRlclRhc2tzKCkgZmluYWw7CiAKICAgICAv
LyBDYWxsZWQgcGVyaW9kaWNhbGx5IGF0IHRoZSBlbmQgb2YgZWFjaCByZW5kZXIgcXVhbnR1bSB0
byBkZXJlZmVyZW5jZSBmaW5pc2hlZCBzb3VyY2Ugbm9kZXMuCiAgICAgdm9pZCBkZXJlZkZpbmlz
aGVkU291cmNlTm9kZXMoKTsKIAogICAgIC8vIFdlIHNjaGVkdWxlIGRlbGV0aW9uIG9mIGFsbCBt
YXJrZWQgbm9kZXMgYXQgdGhlIGVuZCBvZiBlYWNoIHJlYWx0aW1lIHJlbmRlciBxdWFudHVtLgot
ICAgIHZvaWQgbWFya0ZvckRlbGV0aW9uKEF1ZGlvTm9kZSYpOwotICAgIHZvaWQgZGVsZXRlTWFy
a2VkTm9kZXMoKTsKKyAgICB2b2lkIG1hcmtGb3JEZWxldGlvbihBdWRpb05vZGUmKSBmaW5hbDsK
KyAgICB2b2lkIGRlbGV0ZU1hcmtlZE5vZGVzKCkgZmluYWw7CiAKICAgICAvLyBBdWRpb0NvbnRl
eHQgY2FuIHB1bGwgbm9kZShzKSBhdCB0aGUgZW5kIG9mIGVhY2ggcmVuZGVyIHF1YW50dW0gZXZl
biB3aGVuIHRoZXkgYXJlIG5vdCBjb25uZWN0ZWQgdG8gYW55IGRvd25zdHJlYW0gbm9kZXMuCiAg
ICAgLy8gVGhlc2UgdHdvIG1ldGhvZHMgYXJlIGNhbGxlZCBieSB0aGUgbm9kZXMgd2hvIHdhbnQg
dG8gYWRkL3JlbW92ZSB0aGVtc2VsdmVzIGludG8vZnJvbSB0aGUgYXV0b21hdGljIHB1bGwgbGlz
dHMuCi0gICAgdm9pZCBhZGRBdXRvbWF0aWNQdWxsTm9kZShBdWRpb05vZGUmKTsKLSAgICB2b2lk
IHJlbW92ZUF1dG9tYXRpY1B1bGxOb2RlKEF1ZGlvTm9kZSYpOworICAgIHZvaWQgYWRkQXV0b21h
dGljUHVsbE5vZGUoQXVkaW9Ob2RlJikgZmluYWw7CisgICAgdm9pZCByZW1vdmVBdXRvbWF0aWNQ
dWxsTm9kZShBdWRpb05vZGUmKSBmaW5hbDsKIAogICAgIC8vIENhbGxlZCByaWdodCBiZWZvcmUg
aGFuZGxlUG9zdFJlbmRlclRhc2tzKCkgdG8gaGFuZGxlIG5vZGVzIHdoaWNoIG5lZWQgdG8gYmUg
cHVsbGVkIGV2ZW4gd2hlbiB0aGV5IGFyZSBub3QgY29ubmVjdGVkIHRvIGFueXRoaW5nLgotICAg
IHZvaWQgcHJvY2Vzc0F1dG9tYXRpY1B1bGxOb2RlcyhzaXplX3QgZnJhbWVzVG9Qcm9jZXNzKTsK
KyAgICB2b2lkIHByb2Nlc3NBdXRvbWF0aWNQdWxsTm9kZXMoc2l6ZV90IGZyYW1lc1RvUHJvY2Vz
cykgZmluYWw7CiAKICAgICAvLyBLZWVwcyB0cmFjayBvZiB0aGUgbnVtYmVyIG9mIGNvbm5lY3Rp
b25zIG1hZGUuCi0gICAgdm9pZCBpbmNyZW1lbnRDb25uZWN0aW9uQ291bnQoKQorICAgIHZvaWQg
aW5jcmVtZW50Q29ubmVjdGlvbkNvdW50KCkgZmluYWwKICAgICB7CiAgICAgICAgIEFTU0VSVChp
c01haW5UaHJlYWQoKSk7CiAgICAgICAgIG1fY29ubmVjdGlvbkNvdW50Kys7CkBAIC0xOTYsNjkg
KzI5MSw0NiBAQCBwdWJsaWM6CiAgICAgLy8gVGhyZWFkIFNhZmV0eSBhbmQgR3JhcGggTG9ja2lu
ZzoKICAgICAvLwogICAgIAotICAgIHZvaWQgc2V0QXVkaW9UaHJlYWQoVGhyZWFkJiB0aHJlYWQp
IHsgbV9hdWRpb1RocmVhZCA9ICZ0aHJlYWQ7IH0gLy8gRklYTUU6IGNoZWNrIGVpdGhlciBub3Qg
aW5pdGlhbGl6ZWQgb3IgdGhlIHNhbWUKKyAgICB2b2lkIHNldEF1ZGlvVGhyZWFkKFRocmVhZCYg
dGhyZWFkKSBmaW5hbCB7IG1fYXVkaW9UaHJlYWQgPSAmdGhyZWFkOyB9IC8vIEZJWE1FOiBjaGVj
ayBlaXRoZXIgbm90IGluaXRpYWxpemVkIG9yIHRoZSBzYW1lCiAgICAgVGhyZWFkKiBhdWRpb1Ro
cmVhZCgpIGNvbnN0IHsgcmV0dXJuIG1fYXVkaW9UaHJlYWQ7IH0KLSAgICBib29sIGlzQXVkaW9U
aHJlYWQoKSBjb25zdDsKKyAgICBib29sIGlzQXVkaW9UaHJlYWQoKSBjb25zdCBmaW5hbDsKIAog
ICAgIC8vIFJldHVybnMgdHJ1ZSBvbmx5IGFmdGVyIHRoZSBhdWRpbyB0aHJlYWQgaGFzIGJlZW4g
c3RhcnRlZCBhbmQgdGhlbiBzaHV0ZG93bi4KLSAgICBib29sIGlzQXVkaW9UaHJlYWRGaW5pc2hl
ZCgpIHsgcmV0dXJuIG1faXNBdWRpb1RocmVhZEZpbmlzaGVkOyB9CisgICAgYm9vbCBpc0F1ZGlv
VGhyZWFkRmluaXNoZWQoKSBmaW5hbCB7IHJldHVybiBtX2lzQXVkaW9UaHJlYWRGaW5pc2hlZDsg
fQogICAgIAogICAgIC8vIG11c3RSZWxlYXNlTG9jayBpcyBzZXQgdG8gdHJ1ZSBpZiB3ZSBhY3F1
aXJlZCB0aGUgbG9jayBpbiB0aGlzIG1ldGhvZCBjYWxsIGFuZCBjYWxsZXIgbXVzdCB1bmxvY2so
KSwgZmFsc2UgaWYgaXQgd2FzIHByZXZpb3VzbHkgYWNxdWlyZWQuCi0gICAgdm9pZCBsb2NrKGJv
b2wmIG11c3RSZWxlYXNlTG9jayk7CisgICAgdm9pZCBsb2NrKGJvb2wmIG11c3RSZWxlYXNlTG9j
aykgZmluYWw7CiAKICAgICAvLyBSZXR1cm5zIHRydWUgaWYgd2Ugb3duIHRoZSBsb2NrLgogICAg
IC8vIG11c3RSZWxlYXNlTG9jayBpcyBzZXQgdG8gdHJ1ZSBpZiB3ZSBhY3F1aXJlZCB0aGUgbG9j
ayBpbiB0aGlzIG1ldGhvZCBjYWxsIGFuZCBjYWxsZXIgbXVzdCB1bmxvY2soKSwgZmFsc2UgaWYg
aXQgd2FzIHByZXZpb3VzbHkgYWNxdWlyZWQuCi0gICAgYm9vbCB0cnlMb2NrKGJvb2wmIG11c3RS
ZWxlYXNlTG9jayk7CisgICAgYm9vbCB0cnlMb2NrKGJvb2wmIG11c3RSZWxlYXNlTG9jaykgZmlu
YWw7CiAKLSAgICB2b2lkIHVubG9jaygpOworICAgIHZvaWQgdW5sb2NrKCkgZmluYWw7CiAKICAg
ICAvLyBSZXR1cm5zIHRydWUgaWYgdGhpcyB0aHJlYWQgb3ducyB0aGUgY29udGV4dCdzIGxvY2su
Ci0gICAgYm9vbCBpc0dyYXBoT3duZXIoKSBjb25zdDsKKyAgICBib29sIGlzR3JhcGhPd25lcigp
IGNvbnN0IGZpbmFsOwogCiAgICAgLy8gUmV0dXJucyB0aGUgbWF4aW11bSBudW1iZXIgb2YgY2hh
bm5lbHMgd2UgY2FuIHN1cHBvcnQuCiAgICAgc3RhdGljIHVuc2lnbmVkIG1heE51bWJlck9mQ2hh
bm5lbHMoKSB7IHJldHVybiBNYXhOdW1iZXJPZkNoYW5uZWxzOyB9Ci0KLSAgICBjbGFzcyBBdXRv
TG9ja2VyIHsKLSAgICBwdWJsaWM6Ci0gICAgICAgIGV4cGxpY2l0IEF1dG9Mb2NrZXIoQXVkaW9D
b250ZXh0JiBjb250ZXh0KQotICAgICAgICAgICAgOiBtX2NvbnRleHQoY29udGV4dCkKLSAgICAg
ICAgewotICAgICAgICAgICAgbV9jb250ZXh0LmxvY2sobV9tdXN0UmVsZWFzZUxvY2spOwotICAg
ICAgICB9Ci0gICAgICAgIAotICAgICAgICB+QXV0b0xvY2tlcigpCi0gICAgICAgIHsKLSAgICAg
ICAgICAgIGlmIChtX211c3RSZWxlYXNlTG9jaykKLSAgICAgICAgICAgICAgICBtX2NvbnRleHQu
dW5sb2NrKCk7Ci0gICAgICAgIH0KLQotICAgIHByaXZhdGU6Ci0gICAgICAgIEF1ZGlvQ29udGV4
dCYgbV9jb250ZXh0OwotICAgICAgICBib29sIG1fbXVzdFJlbGVhc2VMb2NrOwotICAgIH07CiAg
ICAgCiAgICAgLy8gSW4gQXVkaW9Ob2RlOjpkZXJlZigpIGEgdHJ5TG9jaygpIGlzIHVzZWQgZm9y
IGNhbGxpbmcgZmluaXNoRGVyZWYoKSwgYnV0IGlmIGl0IGZhaWxzIGtlZXAgdHJhY2sgaGVyZS4K
LSAgICB2b2lkIGFkZERlZmVycmVkRmluaXNoRGVyZWYoQXVkaW9Ob2RlKik7CisgICAgdm9pZCBh
ZGREZWZlcnJlZEZpbmlzaERlcmVmKEF1ZGlvTm9kZSopIGZpbmFsOwogCiAgICAgLy8gSW4gdGhl
IGF1ZGlvIHRocmVhZCBhdCB0aGUgc3RhcnQgb2YgZWFjaCByZW5kZXIgY3ljbGUsIHdlJ2xsIGNh
bGwgaGFuZGxlRGVmZXJyZWRGaW5pc2hEZXJlZnMoKS4KICAgICB2b2lkIGhhbmRsZURlZmVycmVk
RmluaXNoRGVyZWZzKCk7CiAKICAgICAvLyBPbmx5IGFjY2Vzc2VkIHdoZW4gdGhlIGdyYXBoIGxv
Y2sgaXMgaGVsZC4KLSAgICB2b2lkIG1hcmtTdW1taW5nSnVuY3Rpb25EaXJ0eShBdWRpb1N1bW1p
bmdKdW5jdGlvbiopOwotICAgIHZvaWQgbWFya0F1ZGlvTm9kZU91dHB1dERpcnR5KEF1ZGlvTm9k
ZU91dHB1dCopOworICAgIHZvaWQgbWFya1N1bW1pbmdKdW5jdGlvbkRpcnR5KEF1ZGlvU3VtbWlu
Z0p1bmN0aW9uKikgZmluYWw7CisgICAgdm9pZCBtYXJrQXVkaW9Ob2RlT3V0cHV0RGlydHkoQXVk
aW9Ob2RlT3V0cHV0KikgZmluYWw7CiAKICAgICAvLyBNdXN0IGJlIGNhbGxlZCBvbiBtYWluIHRo
cmVhZC4KLSAgICB2b2lkIHJlbW92ZU1hcmtlZFN1bW1pbmdKdW5jdGlvbihBdWRpb1N1bW1pbmdK
dW5jdGlvbiopOworICAgIHZvaWQgcmVtb3ZlTWFya2VkU3VtbWluZ0p1bmN0aW9uKEF1ZGlvU3Vt
bWluZ0p1bmN0aW9uKikgZmluYWw7CiAKICAgICAvLyBFdmVudFRhcmdldAogICAgIEV2ZW50VGFy
Z2V0SW50ZXJmYWNlIGV2ZW50VGFyZ2V0SW50ZXJmYWNlKCkgY29uc3QgZmluYWwgeyByZXR1cm4g
QXVkaW9Db250ZXh0RXZlbnRUYXJnZXRJbnRlcmZhY2VUeXBlOyB9CiAKLSAgICAvLyBSZWNvbmNp
bGUgcmVmL2RlcmVmIHdoaWNoIGFyZSBkZWZpbmVkIGJvdGggaW4gVGhyZWFkU2FmZVJlZkNvdW50
ZWQgYW5kIEV2ZW50VGFyZ2V0LgotICAgIHVzaW5nIFRocmVhZFNhZmVSZWZDb3VudGVkOjpyZWY7
Ci0gICAgdXNpbmcgVGhyZWFkU2FmZVJlZkNvdW50ZWQ6OmRlcmVmOwotCiAgICAgdm9pZCBzdGFy
dFJlbmRlcmluZygpOwotICAgIHZvaWQgZmluaXNoZWRSZW5kZXJpbmcoYm9vbCBkaWRSZW5kZXJp
bmcpOworICAgIHZvaWQgZmluaXNoZWRSZW5kZXJpbmcoYm9vbCBkaWRSZW5kZXJpbmcpIGZpbmFs
OwogCiAgICAgc3RhdGljIHVuc2lnbmVkIHNfaGFyZHdhcmVDb250ZXh0Q291bnQ7CiAKQEAgLTI3
NCwyNSArMzQ2LDIyIEBAIHB1YmxpYzoKICAgICB2b2lkIGFkZEJlaGF2aW9yUmVzdHJpY3Rpb24o
QmVoYXZpb3JSZXN0cmljdGlvbnMgcmVzdHJpY3Rpb24pIHsgbV9yZXN0cmljdGlvbnMgfD0gcmVz
dHJpY3Rpb247IH0KICAgICB2b2lkIHJlbW92ZUJlaGF2aW9yUmVzdHJpY3Rpb24oQmVoYXZpb3JS
ZXN0cmljdGlvbnMgcmVzdHJpY3Rpb24pIHsgbV9yZXN0cmljdGlvbnMgJj0gfnJlc3RyaWN0aW9u
OyB9CiAKLSAgICB2b2lkIGlzUGxheWluZ0F1ZGlvRGlkQ2hhbmdlKCk7CisgICAgdm9pZCBpc1Bs
YXlpbmdBdWRpb0RpZENoYW5nZSgpIGZpbmFsOwogCi0gICAgdm9pZCBub2RlV2lsbEJlZ2luUGxh
eWJhY2soKTsKKyAgICB2b2lkIG5vZGVXaWxsQmVnaW5QbGF5YmFjaygpIGZpbmFsOwogCiAjaWYg
IVJFTEVBU0VfTE9HX0RJU0FCTEVECiAgICAgY29uc3QgTG9nZ2VyJiBsb2dnZXIoKSBjb25zdCBm
aW5hbCB7IHJldHVybiBtX2xvZ2dlci5nZXQoKTsgfQogICAgIGNvbnN0IHZvaWQqIGxvZ0lkZW50
aWZpZXIoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2xvZ0lkZW50aWZpZXI7IH0KICAgICBXVEZM
b2dDaGFubmVsJiBsb2dDaGFubmVsKCkgY29uc3QgZmluYWw7Ci0gICAgY29uc3Qgdm9pZCogbmV4
dEF1ZGlvTm9kZUxvZ0lkZW50aWZpZXIoKSB7IHJldHVybiBjaGlsZExvZ0lkZW50aWZpZXIobV9s
b2dJZGVudGlmaWVyLCArK21fbmV4dEF1ZGlvTm9kZUlkZW50aWZpZXIpOyB9Ci0gICAgY29uc3Qg
dm9pZCogbmV4dEF1ZGlvUGFyYW1ldGVyTG9nSWRlbnRpZmllcigpIHsgcmV0dXJuIGNoaWxkTG9n
SWRlbnRpZmllcihtX2xvZ0lkZW50aWZpZXIsICsrbV9uZXh0QXVkaW9QYXJhbWV0ZXJJZGVudGlm
aWVyKTsgfQorICAgIGNvbnN0IHZvaWQqIG5leHRBdWRpb05vZGVMb2dJZGVudGlmaWVyKCkgZmlu
YWwgeyByZXR1cm4gY2hpbGRMb2dJZGVudGlmaWVyKG1fbG9nSWRlbnRpZmllciwgKyttX25leHRB
dWRpb05vZGVJZGVudGlmaWVyKTsgfQorICAgIGNvbnN0IHZvaWQqIG5leHRBdWRpb1BhcmFtZXRl
ckxvZ0lkZW50aWZpZXIoKSBmaW5hbCB7IHJldHVybiBjaGlsZExvZ0lkZW50aWZpZXIobV9sb2dJ
ZGVudGlmaWVyLCArK21fbmV4dEF1ZGlvUGFyYW1ldGVySWRlbnRpZmllcik7IH0KICNlbmRpZgog
Ci0gICAgdm9pZCBwb3N0VGFzayhXVEY6OkZ1bmN0aW9uPHZvaWQoKT4mJik7Ci0gICAgYm9vbCBp
c1N0b3BwZWQoKSBjb25zdCB7IHJldHVybiBtX2lzU3RvcFNjaGVkdWxlZDsgfQotICAgIGNvbnN0
IFNlY3VyaXR5T3JpZ2luKiBvcmlnaW4oKSBjb25zdDsKLSAgICB2b2lkIGFkZENvbnNvbGVNZXNz
YWdlKE1lc3NhZ2VTb3VyY2UsIE1lc3NhZ2VMZXZlbCwgY29uc3QgU3RyaW5nJiBtZXNzYWdlKTsK
LQotICAgIC8vIEV2ZW50VGFyZ2V0Ci0gICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0
RXhlY3V0aW9uQ29udGV4dCgpIGNvbnN0IGZpbmFsOworICAgIHZvaWQgcG9zdFRhc2soV1RGOjpG
dW5jdGlvbjx2b2lkKCk+JiYpIGZpbmFsOworICAgIGJvb2wgaXNTdG9wcGVkKCkgY29uc3QgZmlu
YWwgeyByZXR1cm4gbV9pc1N0b3BTY2hlZHVsZWQ7IH0KKyAgICBjb25zdCBTZWN1cml0eU9yaWdp
biogb3JpZ2luKCkgY29uc3QgZmluYWw7CisgICAgdm9pZCBhZGRDb25zb2xlTWVzc2FnZShNZXNz
YWdlU291cmNlLCBNZXNzYWdlTGV2ZWwsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSkgZmluYWw7CiAK
IHByb3RlY3RlZDoKICAgICBleHBsaWNpdCBBdWRpb0NvbnRleHQoRG9jdW1lbnQmKTsKQEAgLTM2
MCw5ICs0MjksOCBAQCBwcml2YXRlOgogCiAgICAgdm9pZCB2aXNpYmlsaXR5U3RhdGVDaGFuZ2Vk
KCkgZmluYWw7CiAKLSAgICAvLyBFdmVudFRhcmdldAotICAgIHZvaWQgcmVmRXZlbnRUYXJnZXQo
KSBvdmVycmlkZSB7IHJlZigpOyB9Ci0gICAgdm9pZCBkZXJlZkV2ZW50VGFyZ2V0KCkgb3ZlcnJp
ZGUgeyBkZXJlZigpOyB9CisgICAgYm9vbCBpc0F1ZGlvQ29udGV4dCgpIGNvbnN0IGZpbmFsIHsg
cmV0dXJuIHRydWU7IH0KKyAgICBib29sIGlzV2ViS2l0QXVkaW9Db250ZXh0KCkgY29uc3QgZmlu
YWwgeyByZXR1cm4gZmFsc2U7IH0KIAogICAgIHZvaWQgaGFuZGxlRGlydHlBdWRpb1N1bW1pbmdK
dW5jdGlvbnMoKTsKICAgICB2b2lkIGhhbmRsZURpcnR5QXVkaW9Ob2RlT3V0cHV0cygpOwpAQCAt
NDQ2LDIxICs1MTQsMTMgQEAgcHJpdmF0ZToKICAgICBSZWZQdHI8UGVuZGluZ0FjdGl2aXR5PEF1
ZGlvQ29udGV4dD4+IG1fcGVuZGluZ0FjdGl2aXR5OwogfTsKIAotLy8gRklYTUU6IEZpbmQgb3V0
IHdoeSB0aGVzZSA9PS8hPSBmdW5jdGlvbnMgYXJlIG5lZWRlZCBhbmQgcmVtb3ZlIHRoZW0gaWYg
cG9zc2libGUuCi0KLWlubGluZSBib29sIG9wZXJhdG9yPT0oY29uc3QgQXVkaW9Db250ZXh0JiBs
aHMsIGNvbnN0IEF1ZGlvQ29udGV4dCYgcmhzKQotewotICAgIHJldHVybiAmbGhzID09ICZyaHM7
Ci19Ci0KLWlubGluZSBib29sIG9wZXJhdG9yIT0oY29uc3QgQXVkaW9Db250ZXh0JiBsaHMsIGNv
bnN0IEF1ZGlvQ29udGV4dCYgcmhzKQotewotICAgIHJldHVybiAmbGhzICE9ICZyaHM7Ci19Ci0K
IGlubGluZSBBdWRpb0NvbnRleHQ6OlN0YXRlIEF1ZGlvQ29udGV4dDo6c3RhdGUoKSBjb25zdAog
ewogICAgIHJldHVybiBtX3N0YXRlOwogfQogCiB9IC8vIFdlYkNvcmUKKworU1BFQ0lBTElaRV9U
WVBFX1RSQUlUU19CRUdJTihXZWJDb3JlOjpBdWRpb0NvbnRleHQpCisgICAgc3RhdGljIGJvb2wg
aXNUeXBlKGNvbnN0IFdlYkNvcmU6OkF1ZGlvQ29udGV4dEJhc2UmIGNvbnRleHQpIHsgcmV0dXJu
IGNvbnRleHQuaXNBdWRpb0NvbnRleHQoKTsgfQorU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19FTkQo
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0NvbnRl
eHQuaWRsIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0NvbnRleHQuaWRs
CmluZGV4IGU3MTE4MzliMzMzLi5mMWQ0OWNhMzY4ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0NvbnRleHQuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0LmlkbApAQCAtMjMsMTkgKzIzLDExIEBACiAg
KiBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KICAqLwogCi1lbnVtIEF1ZGlvQ29udGV4dFN0YXRlIHsKLSAgICAic3VzcGVuZGVkIiwK
LSAgICAicnVubmluZyIsCi0gICAgImludGVycnVwdGVkIiwKLSAgICAiY2xvc2VkIgotfTsKLQog
WwogICAgIEFjdGl2ZURPTU9iamVjdCwKICAgICBDb25kaXRpb25hbD1XRUJfQVVESU8sCi0gICAg
RW5hYmxlZEJ5U2V0dGluZz1XZWJBdWRpbywKKyAgICBFbmFibGVkQnlTZXR0aW5nPU1vZGVyblVu
cHJlZml4ZWRXZWJBdWRpbywKICAgICBFeHBvcnRNYWNybz1XRUJDT1JFX0VYUE9SVCwKLSAgICBJ
bnRlcmZhY2VOYW1lPXdlYmtpdEF1ZGlvQ29udGV4dCwKIF0gaW50ZXJmYWNlIEF1ZGlvQ29udGV4
dCA6IEV2ZW50VGFyZ2V0IHsKICAgICBbQ2FsbFdpdGg9RG9jdW1lbnQsIE1heVRocm93RXhjZXB0
aW9uXSBjb25zdHJ1Y3RvcigpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmF1ZGlvL0F1ZGlvQ29udGV4dFN0YXRlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmF1ZGlvL0F1ZGlvQ29udGV4dFN0YXRlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAuLjE2MDEzMTEwOGZhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJhdWRpby9BdWRpb0NvbnRleHRTdGF0ZS5oCkBAIC0wLDAgKzEsMzIgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqIENvcHlyaWdodCAoQykgMjAxNi0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuICBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUg
SU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OCisgKiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKKyAq
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2VudW0g
Y2xhc3MgQXVkaW9Db250ZXh0U3RhdGUgeyBTdXNwZW5kZWQsIFJ1bm5pbmcsIEludGVycnVwdGVk
LCBDbG9zZWQgfTsKKworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJh
dWRpby9BdWRpb0NvbnRleHRTdGF0ZS5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1
ZGlvL0F1ZGlvQ29udGV4dFN0YXRlLmlkbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMC4uYzhkMDhiZDJiNTYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQ29udGV4dFN0YXRlLmlkbApAQCAtMCwwICsxLDMxIEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDEwLCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICogQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuICBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1Q
TElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OCisgKiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKKyAqIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKK2VudW0gQXVkaW9Db250ZXh0U3RhdGUgeworICAgICJzdXNwZW5kZWQiLAorICAg
ICJydW5uaW5nIiwKKyAgICAiaW50ZXJydXB0ZWQiLAorICAgICJjbG9zZWQiCit9OwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0Rlc3RpbmF0aW9uTm9k
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvRGVzdGluYXRpb25O
b2RlLmNwcAppbmRleCBkOWFiYjk3NzdhOS4uNjc3NjE3ZWNiMzMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9EZXN0aW5hdGlvbk5vZGUuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9EZXN0aW5hdGlvbk5vZGUuY3Bw
CkBAIC0zOSw3ICszOSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAKIFdURl9NQUtFX0lT
T19BTExPQ0FURURfSU1QTChBdWRpb0Rlc3RpbmF0aW9uTm9kZSk7CiAKLUF1ZGlvRGVzdGluYXRp
b25Ob2RlOjpBdWRpb0Rlc3RpbmF0aW9uTm9kZShBdWRpb0NvbnRleHQmIGNvbnRleHQsIGZsb2F0
IHNhbXBsZVJhdGUpCitBdWRpb0Rlc3RpbmF0aW9uTm9kZTo6QXVkaW9EZXN0aW5hdGlvbk5vZGUo
QXVkaW9Db250ZXh0QmFzZSYgY29udGV4dCwgZmxvYXQgc2FtcGxlUmF0ZSkKICAgICA6IEF1ZGlv
Tm9kZShjb250ZXh0LCBzYW1wbGVSYXRlKQogICAgICwgbV9jdXJyZW50U2FtcGxlRnJhbWUoMCkK
ICAgICAsIG1faXNTaWxlbnQodHJ1ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViYXVkaW8vQXVkaW9EZXN0aW5hdGlvbk5vZGUuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViYXVkaW8vQXVkaW9EZXN0aW5hdGlvbk5vZGUuaAppbmRleCA4OTQ4ZjRlZTcwYS4uMzc2
ZjQ2MjcxMmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVk
aW9EZXN0aW5hdGlvbk5vZGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlv
L0F1ZGlvRGVzdGluYXRpb25Ob2RlLmgKQEAgLTM2LDcgKzM2LDcgQEAgY2xhc3MgQXVkaW9Db250
ZXh0OwogY2xhc3MgQXVkaW9EZXN0aW5hdGlvbk5vZGUgOiBwdWJsaWMgQXVkaW9Ob2RlLCBwdWJs
aWMgQXVkaW9JT0NhbGxiYWNrIHsKICAgICBXVEZfTUFLRV9JU09fQUxMT0NBVEVEKEF1ZGlvRGVz
dGluYXRpb25Ob2RlKTsKIHB1YmxpYzoKLSAgICBBdWRpb0Rlc3RpbmF0aW9uTm9kZShBdWRpb0Nv
bnRleHQmLCBmbG9hdCBzYW1wbGVSYXRlKTsKKyAgICBBdWRpb0Rlc3RpbmF0aW9uTm9kZShBdWRp
b0NvbnRleHRCYXNlJiwgZmxvYXQgc2FtcGxlUmF0ZSk7CiAgICAgdmlydHVhbCB+QXVkaW9EZXN0
aW5hdGlvbk5vZGUoKTsKICAgICAKICAgICAvLyBBdWRpb05vZGUgICAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Ob2RlLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Ob2RlLmNwcAppbmRleCA3NjVlY2UzMzJmNi4uZTU1
NDM3NzlkNTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVk
aW9Ob2RlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvTm9k
ZS5jcHAKQEAgLTMzLDYgKzMzLDcgQEAKICNpbmNsdWRlICJBdWRpb05vZGVPdXRwdXQuaCIKICNp
bmNsdWRlICJBdWRpb1BhcmFtLmgiCiAjaW5jbHVkZSAiTG9nZ2luZy5oIgorI2luY2x1ZGUgIldl
YktpdEF1ZGlvQ29udGV4dC5oIgogI2luY2x1ZGUgPHd0Zi9BdG9taWNzLmg+CiAjaW5jbHVkZSA8
d3RmL0lzb01hbGxvY0lubGluZXMuaD4KICNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgpAQCAt
OTUsNyArOTYsNyBAQCBTdHJpbmcgY29udmVydEVudW1lcmF0aW9uVG9TdHJpbmcoQXVkaW9Ob2Rl
OjpOb2RlVHlwZSBlbnVtZXJhdGlvblZhbHVlKQogICAgIHJldHVybiB2YWx1ZXNbc3RhdGljX2Nh
c3Q8c2l6ZV90PihlbnVtZXJhdGlvblZhbHVlKV07CiB9CiAKLUF1ZGlvTm9kZTo6QXVkaW9Ob2Rl
KEF1ZGlvQ29udGV4dCYgY29udGV4dCwgZmxvYXQgc2FtcGxlUmF0ZSkKK0F1ZGlvTm9kZTo6QXVk
aW9Ob2RlKEF1ZGlvQ29udGV4dEJhc2UmIGNvbnRleHQsIGZsb2F0IHNhbXBsZVJhdGUpCiAgICAg
OiBtX2lzSW5pdGlhbGl6ZWQoZmFsc2UpCiAgICAgLCBtX25vZGVUeXBlKE5vZGVUeXBlVW5rbm93
bikKICAgICAsIG1fY29udGV4dChjb250ZXh0KQpAQCAtMTk0LDcgKzE5NSw3IEBAIEF1ZGlvTm9k
ZU91dHB1dCogQXVkaW9Ob2RlOjpvdXRwdXQodW5zaWduZWQgaSkKIEV4Y2VwdGlvbk9yPHZvaWQ+
IEF1ZGlvTm9kZTo6Y29ubmVjdChBdWRpb05vZGUmIGRlc3RpbmF0aW9uLCB1bnNpZ25lZCBvdXRw
dXRJbmRleCwgdW5zaWduZWQgaW5wdXRJbmRleCkKIHsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFk
KCkpOwotICAgIEF1ZGlvQ29udGV4dDo6QXV0b0xvY2tlciBsb2NrZXIoY29udGV4dCgpKTsKKyAg
ICBBdWRpb0NvbnRleHRCYXNlOjpBdXRvTG9ja2VyIGxvY2tlcihjb250ZXh0KCkpOwogCiAgICAg
QUxXQVlTX0xPRyhMT0dJREVOVElGSUVSLCBkZXN0aW5hdGlvbi5ub2RlVHlwZSgpLCAiLCBvdXRw
dXQgPSAiLCBvdXRwdXRJbmRleCwgIiwgaW5wdXQgPSAiLCBpbnB1dEluZGV4KTsKICAgICAKQEAg
LTIwNSw3ICsyMDYsNyBAQCBFeGNlcHRpb25Pcjx2b2lkPiBBdWRpb05vZGU6OmNvbm5lY3QoQXVk
aW9Ob2RlJiBkZXN0aW5hdGlvbiwgdW5zaWduZWQgb3V0cHV0SW5kZQogICAgIGlmIChpbnB1dElu
ZGV4ID49IGRlc3RpbmF0aW9uLm51bWJlck9mSW5wdXRzKCkpCiAgICAgICAgIHJldHVybiBFeGNl
cHRpb24geyBJbmRleFNpemVFcnJvciB9OwogCi0gICAgaWYgKGNvbnRleHQoKSAhPSBkZXN0aW5h
dGlvbi5jb250ZXh0KCkpCisgICAgaWYgKCZjb250ZXh0KCkgIT0gJmRlc3RpbmF0aW9uLmNvbnRl
eHQoKSkKICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IFN5bnRheEVycm9yIH07CiAKICAgICBh
dXRvKiBpbnB1dCA9IGRlc3RpbmF0aW9uLmlucHV0KGlucHV0SW5kZXgpOwpAQCAtMjIwLDcgKzIy
MSw3IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IEF1ZGlvTm9kZTo6Y29ubmVjdChBdWRpb05vZGUmIGRl
c3RpbmF0aW9uLCB1bnNpZ25lZCBvdXRwdXRJbmRlCiAKIEV4Y2VwdGlvbk9yPHZvaWQ+IEF1ZGlv
Tm9kZTo6Y29ubmVjdChBdWRpb1BhcmFtJiBwYXJhbSwgdW5zaWduZWQgb3V0cHV0SW5kZXgpCiB7
Ci0gICAgQXVkaW9Db250ZXh0OjpBdXRvTG9ja2VyIGxvY2tlcihjb250ZXh0KCkpOworICAgIEF1
ZGlvQ29udGV4dEJhc2U6OkF1dG9Mb2NrZXIgbG9ja2VyKGNvbnRleHQoKSk7CiAKICAgICBBU1NF
UlQoaXNNYWluVGhyZWFkKCkpOwogCkBAIC0yMjksNyArMjMwLDcgQEAgRXhjZXB0aW9uT3I8dm9p
ZD4gQXVkaW9Ob2RlOjpjb25uZWN0KEF1ZGlvUGFyYW0mIHBhcmFtLCB1bnNpZ25lZCBvdXRwdXRJ
bmRleCkKICAgICBpZiAob3V0cHV0SW5kZXggPj0gbnVtYmVyT2ZPdXRwdXRzKCkpCiAgICAgICAg
IHJldHVybiBFeGNlcHRpb24geyBJbmRleFNpemVFcnJvciB9OwogCi0gICAgaWYgKGNvbnRleHQo
KSAhPSBwYXJhbS5jb250ZXh0KCkpCisgICAgaWYgKCZjb250ZXh0KCkgIT0gJnBhcmFtLmNvbnRl
eHQoKSkKICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IFN5bnRheEVycm9yIH07CiAKICAgICBh
dXRvKiBvdXRwdXQgPSB0aGlzLT5vdXRwdXQob3V0cHV0SW5kZXgpOwpAQCAtMjQxLDcgKzI0Miw3
IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IEF1ZGlvTm9kZTo6Y29ubmVjdChBdWRpb1BhcmFtJiBwYXJh
bSwgdW5zaWduZWQgb3V0cHV0SW5kZXgpCiBFeGNlcHRpb25Pcjx2b2lkPiBBdWRpb05vZGU6OmRp
c2Nvbm5lY3QodW5zaWduZWQgb3V0cHV0SW5kZXgpCiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVh
ZCgpKTsKLSAgICBBdWRpb0NvbnRleHQ6OkF1dG9Mb2NrZXIgbG9ja2VyKGNvbnRleHQoKSk7Cisg
ICAgQXVkaW9Db250ZXh0QmFzZTo6QXV0b0xvY2tlciBsb2NrZXIoY29udGV4dCgpKTsKIAogICAg
IC8vIFNhbml0eSBjaGVjayBpbnB1dCBhbmQgb3V0cHV0IGluZGljZXMuCiAgICAgaWYgKG91dHB1
dEluZGV4ID49IG51bWJlck9mT3V0cHV0cygpKQpAQCAtMjYzLDcgKzI2NCw3IEBAIHVuc2lnbmVk
IEF1ZGlvTm9kZTo6Y2hhbm5lbENvdW50KCkKIEV4Y2VwdGlvbk9yPHZvaWQ+IEF1ZGlvTm9kZTo6
c2V0Q2hhbm5lbENvdW50KHVuc2lnbmVkIGNoYW5uZWxDb3VudCkKIHsKICAgICBBU1NFUlQoaXNN
YWluVGhyZWFkKCkpOwotICAgIEF1ZGlvQ29udGV4dDo6QXV0b0xvY2tlciBsb2NrZXIoY29udGV4
dCgpKTsKKyAgICBBdWRpb0NvbnRleHRCYXNlOjpBdXRvTG9ja2VyIGxvY2tlcihjb250ZXh0KCkp
OwogCiAgICAgQUxXQVlTX0xPRyhMT0dJREVOVElGSUVSLCBjaGFubmVsQ291bnQpOwogICAgIApA
QCAtMjk2LDcgKzI5Nyw3IEBAIFN0cmluZyBBdWRpb05vZGU6OmNoYW5uZWxDb3VudE1vZGUoKQog
RXhjZXB0aW9uT3I8dm9pZD4gQXVkaW9Ob2RlOjpzZXRDaGFubmVsQ291bnRNb2RlKGNvbnN0IFN0
cmluZyYgbW9kZSkKIHsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwotICAgIEF1ZGlvQ29u
dGV4dDo6QXV0b0xvY2tlciBsb2NrZXIoY29udGV4dCgpKTsKKyAgICBBdWRpb0NvbnRleHRCYXNl
OjpBdXRvTG9ja2VyIGxvY2tlcihjb250ZXh0KCkpOwogCiAgICAgQUxXQVlTX0xPRyhMT0dJREVO
VElGSUVSLCBtb2RlKTsKICAgICAKQEAgLTMzMiw3ICszMzMsNyBAQCBTdHJpbmcgQXVkaW9Ob2Rl
OjpjaGFubmVsSW50ZXJwcmV0YXRpb24oKQogRXhjZXB0aW9uT3I8dm9pZD4gQXVkaW9Ob2RlOjpz
ZXRDaGFubmVsSW50ZXJwcmV0YXRpb24oY29uc3QgU3RyaW5nJiBpbnRlcnByZXRhdGlvbikKIHsK
ICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwotICAgIEF1ZGlvQ29udGV4dDo6QXV0b0xvY2tl
ciBsb2NrZXIoY29udGV4dCgpKTsKKyAgICBBdWRpb0NvbnRleHRCYXNlOjpBdXRvTG9ja2VyIGxv
Y2tlcihjb250ZXh0KCkpOwogCiAgICAgQUxXQVlTX0xPRyhMT0dJREVOVElGSUVSLCBpbnRlcnBy
ZXRhdGlvbik7CiAgICAgCkBAIC00MzcsNyArNDM4LDcgQEAgdm9pZCBBdWRpb05vZGU6OmVuYWJs
ZU91dHB1dHNJZk5lY2Vzc2FyeSgpCiB7CiAgICAgaWYgKG1faXNEaXNhYmxlZCAmJiBtX2Nvbm5l
Y3Rpb25SZWZDb3VudCA+IDApIHsKICAgICAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKLSAg
ICAgICAgQXVkaW9Db250ZXh0OjpBdXRvTG9ja2VyIGxvY2tlcihjb250ZXh0KCkpOworICAgICAg
ICBBdWRpb0NvbnRleHRCYXNlOjpBdXRvTG9ja2VyIGxvY2tlcihjb250ZXh0KCkpOwogCiAgICAg
ICAgIG1faXNEaXNhYmxlZCA9IGZhbHNlOwogICAgICAgICBmb3IgKGF1dG8mIG91dHB1dCA6IG1f
b3V0cHV0cykKQEAgLTUwMSw3ICs1MDIsNyBAQCB2b2lkIEF1ZGlvTm9kZTo6ZGVyZWYoUmVmVHlw
ZSByZWZUeXBlKQogICAgIC8vIEluIHRoZSBjYXNlIG9mIHRoZSBhdWRpbyB0aHJlYWQsIHdlIG11
c3QgdXNlIGEgdHJ5TG9jayB0byBhdm9pZCBnbGl0Y2hlcy4KICAgICBib29sIGhhc0xvY2sgPSBm
YWxzZTsKICAgICBib29sIG11c3RSZWxlYXNlTG9jayA9IGZhbHNlOwotICAgIAorCiAgICAgaWYg
KGNvbnRleHQoKS5pc0F1ZGlvVGhyZWFkKCkpIHsKICAgICAgICAgLy8gUmVhbC10aW1lIGF1ZGlv
IHRocmVhZCBtdXN0IG5vdCBjb250ZW5kIGxvY2sgKHRvIGF2b2lkIGdsaXRjaGVzKS4KICAgICAg
ICAgaGFzTG9jayA9IGNvbnRleHQoKS50cnlMb2NrKG11c3RSZWxlYXNlTG9jayk7CkBAIC01MzAs
NiArNTMxLDEzIEBAIHZvaWQgQXVkaW9Ob2RlOjpkZXJlZihSZWZUeXBlIHJlZlR5cGUpCiAgICAg
ICAgIGNvbnRleHQoKS5kZWxldGVNYXJrZWROb2RlcygpOwogfQogCitWYXJpYW50PFJlZlB0cjxB
dWRpb0NvbnRleHQ+LCBSZWZQdHI8V2ViS2l0QXVkaW9Db250ZXh0Pj4gQXVkaW9Ob2RlOjpjb250
ZXh0Rm9yQmluZGluZ3MoKSBjb25zdAoreworICAgIGlmIChtX2NvbnRleHQtPmlzV2ViS2l0QXVk
aW9Db250ZXh0KCkpCisgICAgICAgIHJldHVybiBtYWtlUmVmUHRyKHN0YXRpY19jYXN0PFdlYktp
dEF1ZGlvQ29udGV4dCY+KG1fY29udGV4dC5nZXQoKSkpOworICAgIHJldHVybiBtYWtlUmVmUHRy
KHN0YXRpY19jYXN0PEF1ZGlvQ29udGV4dCY+KG1fY29udGV4dC5nZXQoKSkpOworfQorCiB2b2lk
IEF1ZGlvTm9kZTo6ZmluaXNoRGVyZWYoUmVmVHlwZSByZWZUeXBlKQogewogICAgIEFTU0VSVChj
b250ZXh0KCkuaXNHcmFwaE93bmVyKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJhdWRpby9BdWRpb05vZGUuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVk
aW8vQXVkaW9Ob2RlLmgKaW5kZXggNDIxMDEwMDZjYzcuLmE5ODgxYmQ0YjhkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvTm9kZS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Ob2RlLmgKQEAgLTI5LDE1ICsyOSwxOCBA
QAogI2luY2x1ZGUgIkV4Y2VwdGlvbk9yLmgiCiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KICNp
bmNsdWRlIDx3dGYvTG9nZ2VySGVscGVyLmg+CisjaW5jbHVkZSA8d3RmL1ZhcmlhbnQuaD4KIAog
I2RlZmluZSBERUJVR19BVURJT05PREVfUkVGRVJFTkNFUyAwCiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAogY2xhc3MgQXVkaW9Db250ZXh0OworY2xhc3MgQXVkaW9Db250ZXh0QmFzZTsKIGNsYXNz
IEF1ZGlvTm9kZUlucHV0OwogY2xhc3MgQXVkaW9Ob2RlT3V0cHV0OwogY2xhc3MgQXVkaW9QYXJh
bTsKK2NsYXNzIFdlYktpdEF1ZGlvQ29udGV4dDsKIAogLy8gQW4gQXVkaW9Ob2RlIGlzIHRoZSBi
YXNpYyBidWlsZGluZyBibG9jayBmb3IgaGFuZGxpbmcgYXVkaW8gd2l0aGluIGFuIEF1ZGlvQ29u
dGV4dC4KIC8vIEl0IG1heSBiZSBhbiBhdWRpbyBzb3VyY2UsIGFuIGludGVybWVkaWF0ZSBwcm9j
ZXNzaW5nIG1vZHVsZSwgb3IgYW4gYXVkaW8gZGVzdGluYXRpb24uCkBAIC01NiwxMSArNTksMTMg
QEAgY2xhc3MgQXVkaW9Ob2RlCiBwdWJsaWM6CiAgICAgZW51bSB7IFByb2Nlc3NpbmdTaXplSW5G
cmFtZXMgPSAxMjggfTsKIAotICAgIEF1ZGlvTm9kZShBdWRpb0NvbnRleHQmLCBmbG9hdCBzYW1w
bGVSYXRlKTsKKyAgICBBdWRpb05vZGUoQXVkaW9Db250ZXh0QmFzZSYsIGZsb2F0IHNhbXBsZVJh
dGUpOwogICAgIHZpcnR1YWwgfkF1ZGlvTm9kZSgpOwogCi0gICAgQXVkaW9Db250ZXh0JiBjb250
ZXh0KCkgeyByZXR1cm4gbV9jb250ZXh0LmdldCgpOyB9Ci0gICAgY29uc3QgQXVkaW9Db250ZXh0
JiBjb250ZXh0KCkgY29uc3QgeyByZXR1cm4gbV9jb250ZXh0LmdldCgpOyB9CisgICAgQXVkaW9D
b250ZXh0QmFzZSYgY29udGV4dCgpIHsgcmV0dXJuIG1fY29udGV4dC5nZXQoKTsgfQorICAgIGNv
bnN0IEF1ZGlvQ29udGV4dEJhc2UmIGNvbnRleHQoKSBjb25zdCB7IHJldHVybiBtX2NvbnRleHQu
Z2V0KCk7IH0KKworICAgIFZhcmlhbnQ8UmVmUHRyPEF1ZGlvQ29udGV4dD4sIFJlZlB0cjxXZWJL
aXRBdWRpb0NvbnRleHQ+PiBjb250ZXh0Rm9yQmluZGluZ3MoKSBjb25zdDsKIAogICAgIGVudW0g
Tm9kZVR5cGUgewogICAgICAgICBOb2RlVHlwZVVua25vd24sCkBAIC0yMDksNyArMjE0LDcgQEAg
cHJpdmF0ZToKIAogICAgIHZvbGF0aWxlIGJvb2wgbV9pc0luaXRpYWxpemVkOwogICAgIE5vZGVU
eXBlIG1fbm9kZVR5cGU7Ci0gICAgUmVmPEF1ZGlvQ29udGV4dD4gbV9jb250ZXh0OworICAgIFJl
ZjxBdWRpb0NvbnRleHRCYXNlPiBtX2NvbnRleHQ7CiAgICAgZmxvYXQgbV9zYW1wbGVSYXRlOwog
ICAgIFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8QXVkaW9Ob2RlSW5wdXQ+PiBtX2lucHV0czsKICAg
ICBWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPEF1ZGlvTm9kZU91dHB1dD4+IG1fb3V0cHV0czsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Ob2RlLmlkbCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Ob2RlLmlkbAppbmRleCA3MGZl
YzhjODE0NS4uNzE5MzljODMxNzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViYXVkaW8vQXVkaW9Ob2RlLmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1
ZGlvL0F1ZGlvTm9kZS5pZGwKQEAgLTI1LDcgKzI1LDcgQEAKIFsKICAgICBDb25kaXRpb25hbD1X
RUJfQVVESU8sCiBdIGludGVyZmFjZSBBdWRpb05vZGUgOiBFdmVudFRhcmdldCB7Ci0gICAgcmVh
ZG9ubHkgYXR0cmlidXRlIEF1ZGlvQ29udGV4dCBjb250ZXh0OworICAgIFtJbXBsZW1lbnRlZEFz
PWNvbnRleHRGb3JCaW5kaW5nc10gcmVhZG9ubHkgYXR0cmlidXRlIChBdWRpb0NvbnRleHQgb3Ig
V2ViS2l0QXVkaW9Db250ZXh0KSBjb250ZXh0OwogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSB1bnNp
Z25lZCBsb25nIG51bWJlck9mSW5wdXRzOwogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSB1bnNpZ25l
ZCBsb25nIG51bWJlck9mT3V0cHV0czsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJhdWRpby9BdWRpb05vZGVPdXRwdXQuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViYXVkaW8vQXVkaW9Ob2RlT3V0cHV0LmgKaW5kZXggNTBhOTVlZTIwNWMuLmYwODk4MzYzNWYz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvTm9kZU91
dHB1dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Ob2RlT3V0
cHV0LmgKQEAgLTQ3LDcgKzQ3LDcgQEAgcHVibGljOgogCiAgICAgLy8gQ2FuIGJlIGNhbGxlZCBm
cm9tIGFueSB0aHJlYWQuCiAgICAgQXVkaW9Ob2RlKiBub2RlKCkgY29uc3QgeyByZXR1cm4gbV9u
b2RlOyB9Ci0gICAgQXVkaW9Db250ZXh0JiBjb250ZXh0KCkgeyByZXR1cm4gbV9ub2RlLT5jb250
ZXh0KCk7IH0KKyAgICBBdWRpb0NvbnRleHRCYXNlJiBjb250ZXh0KCkgeyByZXR1cm4gbV9ub2Rl
LT5jb250ZXh0KCk7IH0KICAgICAKICAgICAvLyBDYXVzZXMgb3VyIEF1ZGlvTm9kZSB0byBwcm9j
ZXNzIGlmIGl0IGhhc24ndCBhbHJlYWR5IGZvciB0aGlzIHJlbmRlciBxdWFudHVtLgogICAgIC8v
IEl0IHJldHVybnMgdGhlIGJ1cyBjb250YWluaW5nIHRoZSBwcm9jZXNzZWQgYXVkaW8gZm9yIHRo
aXMgb3V0cHV0LCByZXR1cm5pbmcgaW5QbGFjZUJ1cyBpZiBpbi1wbGFjZSBwcm9jZXNzaW5nIHdh
cyBwb3NzaWJsZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8v
QXVkaW9QYXJhbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvUGFy
YW0uY3BwCmluZGV4IDI5MzQ1NjQ0NWNjLi5kNDcwYmY3NDZlZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1BhcmFtLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvUGFyYW0uY3BwCkBAIC00MSw3ICs0MSw3IEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIGNvbnN0IGRvdWJsZSBBdWRpb1BhcmFtOjpEZWZhdWx0U21vb3Ro
aW5nQ29uc3RhbnQgPSAwLjA1OwogY29uc3QgZG91YmxlIEF1ZGlvUGFyYW06OlNuYXBUaHJlc2hv
bGQgPSAwLjAwMTsKIAotQXVkaW9QYXJhbTo6QXVkaW9QYXJhbShBdWRpb0NvbnRleHQmIGNvbnRl
eHQsIGNvbnN0IFN0cmluZyYgbmFtZSwgZG91YmxlIGRlZmF1bHRWYWx1ZSwgZG91YmxlIG1pblZh
bHVlLCBkb3VibGUgbWF4VmFsdWUsIHVuc2lnbmVkIHVuaXRzKQorQXVkaW9QYXJhbTo6QXVkaW9Q
YXJhbShBdWRpb0NvbnRleHRCYXNlJiBjb250ZXh0LCBjb25zdCBTdHJpbmcmIG5hbWUsIGRvdWJs
ZSBkZWZhdWx0VmFsdWUsIGRvdWJsZSBtaW5WYWx1ZSwgZG91YmxlIG1heFZhbHVlLCB1bnNpZ25l
ZCB1bml0cykKICAgICA6IEF1ZGlvU3VtbWluZ0p1bmN0aW9uKGNvbnRleHQpCiAgICAgLCBtX25h
bWUobmFtZSkKICAgICAsIG1fdmFsdWUoZGVmYXVsdFZhbHVlKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1BhcmFtLmggYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmF1ZGlvL0F1ZGlvUGFyYW0uaAppbmRleCAyMjZjOTU3ZTcwNi4uMTZhMjEwOTUw
NDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9QYXJh
bS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9QYXJhbS5oCkBA
IC0zMSw2ICszMSw3IEBACiAjaW5jbHVkZSAiQXVkaW9Db250ZXh0LmgiCiAjaW5jbHVkZSAiQXVk
aW9QYXJhbVRpbWVsaW5lLmgiCiAjaW5jbHVkZSAiQXVkaW9TdW1taW5nSnVuY3Rpb24uaCIKKyNp
bmNsdWRlICJXZWJLaXRBdWRpb0NvbnRleHQuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9G
bG9hdDMyQXJyYXkuaD4KICNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KICNpbmNsdWRlIDx3dGYvTG9n
Z2VySGVscGVyLmg+CkBAIC01Miw3ICs1Myw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgY29uc3Qg
ZG91YmxlIERlZmF1bHRTbW9vdGhpbmdDb25zdGFudDsKICAgICBzdGF0aWMgY29uc3QgZG91Ymxl
IFNuYXBUaHJlc2hvbGQ7CiAKLSAgICBzdGF0aWMgUmVmPEF1ZGlvUGFyYW0+IGNyZWF0ZShBdWRp
b0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IFN0cmluZyYgbmFtZSwgZG91YmxlIGRlZmF1bHRWYWx1
ZSwgZG91YmxlIG1pblZhbHVlLCBkb3VibGUgbWF4VmFsdWUsIHVuc2lnbmVkIHVuaXRzID0gMCkK
KyAgICBzdGF0aWMgUmVmPEF1ZGlvUGFyYW0+IGNyZWF0ZShBdWRpb0NvbnRleHRCYXNlJiBjb250
ZXh0LCBjb25zdCBTdHJpbmcmIG5hbWUsIGRvdWJsZSBkZWZhdWx0VmFsdWUsIGRvdWJsZSBtaW5W
YWx1ZSwgZG91YmxlIG1heFZhbHVlLCB1bnNpZ25lZCB1bml0cyA9IDApCiAgICAgewogICAgICAg
ICByZXR1cm4gYWRvcHRSZWYoKm5ldyBBdWRpb1BhcmFtKGNvbnRleHQsIG5hbWUsIGRlZmF1bHRW
YWx1ZSwgbWluVmFsdWUsIG1heFZhbHVlLCB1bml0cykpOwogICAgIH0KQEAgLTEwOCw3ICsxMDks
NyBAQCBwdWJsaWM6CiAgICAgdm9pZCBkaXNjb25uZWN0KEF1ZGlvTm9kZU91dHB1dCopOwogCiBw
cm90ZWN0ZWQ6Ci0gICAgQXVkaW9QYXJhbShBdWRpb0NvbnRleHQmLCBjb25zdCBTdHJpbmcmLCBk
b3VibGUgZGVmYXVsdFZhbHVlLCBkb3VibGUgbWluVmFsdWUsIGRvdWJsZSBtYXhWYWx1ZSwgdW5z
aWduZWQgdW5pdHMgPSAwKTsKKyAgICBBdWRpb1BhcmFtKEF1ZGlvQ29udGV4dEJhc2UmLCBjb25z
dCBTdHJpbmcmLCBkb3VibGUgZGVmYXVsdFZhbHVlLCBkb3VibGUgbWluVmFsdWUsIGRvdWJsZSBt
YXhWYWx1ZSwgdW5zaWduZWQgdW5pdHMgPSAwKTsKIAogcHJpdmF0ZToKICAgICAvLyBzYW1wbGVB
Y2N1cmF0ZSBjb3JyZXNwb25kcyB0byBhLXJhdGUgKGF1ZGlvIHJhdGUpIHZzLiBrLXJhdGUgaW4g
dGhlIFdlYiBBdWRpbyBzcGVjaWZpY2F0aW9uLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJhdWRpby9BdWRpb1BhcmFtVGltZWxpbmUuY3BwIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJhdWRpby9BdWRpb1BhcmFtVGltZWxpbmUuY3BwCmluZGV4IDJiNTk1NzBiZjZl
Li42YzQxMzAxZDhhZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRp
by9BdWRpb1BhcmFtVGltZWxpbmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
YXVkaW8vQXVkaW9QYXJhbVRpbWVsaW5lLmNwcApAQCAtMTEzLDcgKzExMyw3IEBAIHZvaWQgQXVk
aW9QYXJhbVRpbWVsaW5lOjpjYW5jZWxTY2hlZHVsZWRWYWx1ZXMoZmxvYXQgc3RhcnRUaW1lKQog
ICAgIH0KIH0KIAotZmxvYXQgQXVkaW9QYXJhbVRpbWVsaW5lOjp2YWx1ZUZvckNvbnRleHRUaW1l
KEF1ZGlvQ29udGV4dCYgY29udGV4dCwgZmxvYXQgZGVmYXVsdFZhbHVlLCBib29sJiBoYXNWYWx1
ZSkKK2Zsb2F0IEF1ZGlvUGFyYW1UaW1lbGluZTo6dmFsdWVGb3JDb250ZXh0VGltZShBdWRpb0Nv
bnRleHRCYXNlJiBjb250ZXh0LCBmbG9hdCBkZWZhdWx0VmFsdWUsIGJvb2wmIGhhc1ZhbHVlKQog
ewogICAgIHsKICAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxMb2NrPiBsb2NrKG1fZXZlbnRzTXV0
ZXgsIHN0ZDo6dHJ5X3RvX2xvY2spOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJhdWRpby9BdWRpb1BhcmFtVGltZWxpbmUuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViYXVkaW8vQXVkaW9QYXJhbVRpbWVsaW5lLmgKaW5kZXggN2MxMDk5OTU2Y2UuLmE1ODY4YmRl
ZTE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvUGFy
YW1UaW1lbGluZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Q
YXJhbVRpbWVsaW5lLmgKQEAgLTUyLDcgKzUyLDcgQEAgcHVibGljOgogCiAgICAgLy8gaGFzVmFs
dWUgaXMgc2V0IHRvIHRydWUgaWYgYSB2YWxpZCB0aW1lbGluZSB2YWx1ZSBpcyByZXR1cm5lZC4K
ICAgICAvLyBvdGhlcndpc2UgZGVmYXVsdFZhbHVlIGlzIHJldHVybmVkLgotICAgIGZsb2F0IHZh
bHVlRm9yQ29udGV4dFRpbWUoQXVkaW9Db250ZXh0JiwgZmxvYXQgZGVmYXVsdFZhbHVlLCBib29s
JiBoYXNWYWx1ZSk7CisgICAgZmxvYXQgdmFsdWVGb3JDb250ZXh0VGltZShBdWRpb0NvbnRleHRC
YXNlJiwgZmxvYXQgZGVmYXVsdFZhbHVlLCBib29sJiBoYXNWYWx1ZSk7CiAKICAgICAvLyBHaXZl
biB0aGUgdGltZSByYW5nZSwgY2FsY3VsYXRlcyBwYXJhbWV0ZXIgdmFsdWVzIGludG8gdGhlIHZh
bHVlcyBidWZmZXIKICAgICAvLyBhbmQgcmV0dXJucyB0aGUgbGFzdCBwYXJhbWV0ZXIgdmFsdWUg
Y2FsY3VsYXRlZCBmb3IgInZhbHVlcyIgb3IgdGhlIGRlZmF1bHRWYWx1ZSBpZiBub25lIHdlcmUg
Y2FsY3VsYXRlZC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8v
QXVkaW9TY2hlZHVsZWRTb3VyY2VOb2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
YXVkaW8vQXVkaW9TY2hlZHVsZWRTb3VyY2VOb2RlLmNwcAppbmRleCAwZjcyNjc2ZmM3NC4uN2My
ODIzN2EwYmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVk
aW9TY2hlZHVsZWRTb3VyY2VOb2RlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmF1ZGlvL0F1ZGlvU2NoZWR1bGVkU291cmNlTm9kZS5jcHAKQEAgLTQ5LDcgKzQ5LDcgQEAgV1RG
X01BS0VfSVNPX0FMTE9DQVRFRF9JTVBMKEF1ZGlvU2NoZWR1bGVkU291cmNlTm9kZSk7CiAKIGNv
bnN0IGRvdWJsZSBBdWRpb1NjaGVkdWxlZFNvdXJjZU5vZGU6OlVua25vd25UaW1lID0gLTE7CiAK
LUF1ZGlvU2NoZWR1bGVkU291cmNlTm9kZTo6QXVkaW9TY2hlZHVsZWRTb3VyY2VOb2RlKEF1ZGlv
Q29udGV4dCYgY29udGV4dCwgZmxvYXQgc2FtcGxlUmF0ZSkKK0F1ZGlvU2NoZWR1bGVkU291cmNl
Tm9kZTo6QXVkaW9TY2hlZHVsZWRTb3VyY2VOb2RlKEF1ZGlvQ29udGV4dEJhc2UmIGNvbnRleHQs
IGZsb2F0IHNhbXBsZVJhdGUpCiAgICAgOiBBdWRpb05vZGUoY29udGV4dCwgc2FtcGxlUmF0ZSkK
ICAgICAsIEFjdGl2ZURPTU9iamVjdChjb250ZXh0LnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSkK
ICAgICAsIG1fZW5kVGltZShVbmtub3duVGltZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViYXVkaW8vQXVkaW9TY2hlZHVsZWRTb3VyY2VOb2RlLmggYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvU2NoZWR1bGVkU291cmNlTm9kZS5oCmluZGV4IDhj
YWRiZTEwYWZkLi5iNGQ5NTg4MGMxZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJhdWRpby9BdWRpb1NjaGVkdWxlZFNvdXJjZU5vZGUuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvU2NoZWR1bGVkU291cmNlTm9kZS5oCkBAIC01Myw3ICs1
Myw3IEBAIHB1YmxpYzoKICAgICAgICAgRklOSVNIRURfU1RBVEUgPSAzCiAgICAgfTsKICAgICAK
LSAgICBBdWRpb1NjaGVkdWxlZFNvdXJjZU5vZGUoQXVkaW9Db250ZXh0JiwgZmxvYXQgc2FtcGxl
UmF0ZSk7CisgICAgQXVkaW9TY2hlZHVsZWRTb3VyY2VOb2RlKEF1ZGlvQ29udGV4dEJhc2UmLCBm
bG9hdCBzYW1wbGVSYXRlKTsKIAogICAgIEV4Y2VwdGlvbk9yPHZvaWQ+IHN0YXJ0TGF0ZXIoZG91
YmxlIHdoZW4pOwogICAgIEV4Y2VwdGlvbk9yPHZvaWQ+IHN0b3BMYXRlcihkb3VibGUgd2hlbik7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvU3VtbWlu
Z0p1bmN0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9TdW1t
aW5nSnVuY3Rpb24uY3BwCmluZGV4IGVlNjAwYTYyOWExLi5kZDY0ZmQzZWE4MSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1N1bW1pbmdKdW5jdGlvbi5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1N1bW1pbmdKdW5j
dGlvbi5jcHAKQEAgLTM0LDcgKzM0LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1BdWRp
b1N1bW1pbmdKdW5jdGlvbjo6QXVkaW9TdW1taW5nSnVuY3Rpb24oQXVkaW9Db250ZXh0JiBjb250
ZXh0KQorQXVkaW9TdW1taW5nSnVuY3Rpb246OkF1ZGlvU3VtbWluZ0p1bmN0aW9uKEF1ZGlvQ29u
dGV4dEJhc2UmIGNvbnRleHQpCiAgICAgOiBtX2NvbnRleHQoY29udGV4dCkKICAgICAsIG1fcmVu
ZGVyaW5nU3RhdGVOZWVkVXBkYXRpbmcoZmFsc2UpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvU3VtbWluZ0p1bmN0aW9uLmggYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvU3VtbWluZ0p1bmN0aW9uLmgKaW5kZXggYzk0ZmY2
ZDZhNWEuLjRjYmY4YWU5ZmI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmF1ZGlvL0F1ZGlvU3VtbWluZ0p1bmN0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJhdWRpby9BdWRpb1N1bW1pbmdKdW5jdGlvbi5oCkBAIC0zMCwxOCArMzAsMTggQEAKIAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBBdWRpb0NvbnRleHQ7CitjbGFzcyBBdWRpb0Nv
bnRleHRCYXNlOwogY2xhc3MgQXVkaW9Ob2RlT3V0cHV0OwogCiAvLyBBbiBBdWRpb1N1bW1pbmdK
dW5jdGlvbiByZXByZXNlbnRzIGEgcG9pbnQgd2hlcmUgemVybywgb25lLCBvciBtb3JlIEF1ZGlv
Tm9kZU91dHB1dHMgY29ubmVjdC4KIAogY2xhc3MgQXVkaW9TdW1taW5nSnVuY3Rpb24gewogcHVi
bGljOgotICAgIGV4cGxpY2l0IEF1ZGlvU3VtbWluZ0p1bmN0aW9uKEF1ZGlvQ29udGV4dCYpOwor
ICAgIGV4cGxpY2l0IEF1ZGlvU3VtbWluZ0p1bmN0aW9uKEF1ZGlvQ29udGV4dEJhc2UmKTsKICAg
ICB2aXJ0dWFsIH5BdWRpb1N1bW1pbmdKdW5jdGlvbigpOwogCiAgICAgLy8gQ2FuIGJlIGNhbGxl
ZCBmcm9tIGFueSB0aHJlYWQuCi0gICAgQXVkaW9Db250ZXh0JiBjb250ZXh0KCkgeyByZXR1cm4g
bV9jb250ZXh0LmdldCgpOyB9CisgICAgQXVkaW9Db250ZXh0QmFzZSYgY29udGV4dCgpIHsgcmV0
dXJuIG1fY29udGV4dDsgfQogCiAgICAgLy8gVGhpcyBtdXN0IGJlIGNhbGxlZCB3aGVuZXZlciB3
ZSBtb2RpZnkgbV9vdXRwdXRzLgogICAgIHZvaWQgY2hhbmdlZE91dHB1dHMoKTsKQEAgLTYwLDcg
KzYwLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBkaWRVcGRhdGUoKSA9IDA7CiAKIHBy
b3RlY3RlZDoKLSAgICBSZWY8QXVkaW9Db250ZXh0PiBtX2NvbnRleHQ7CisgICAgUmVmPEF1ZGlv
Q29udGV4dEJhc2U+IG1fY29udGV4dDsKIAogICAgIC8vIG1fb3V0cHV0cyBjb250YWlucyB0aGUg
QXVkaW9Ob2RlT3V0cHV0cyByZXByZXNlbnRpbmcgY3VycmVudCBjb25uZWN0aW9ucyB3aGljaCBh
cmUgbm90IGRpc2FibGVkLgogICAgIC8vIFRoZSByZW5kZXJpbmcgY29kZSBzaG91bGQgbmV2ZXIg
dXNlIHRoaXMgZGlyZWN0bHksIGJ1dCBpbnN0ZWFkIHVzZXMgbV9yZW5kZXJpbmdPdXRwdXRzLgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9CaXF1YWRGaWx0ZXJO
b2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQmlxdWFkRmlsdGVyTm9k
ZS5jcHAKaW5kZXggNGE4MjU1ZTZmMGEuLmRkZTA3NzNkNDczIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0JpcXVhZEZpbHRlck5vZGUuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQmlxdWFkRmlsdGVyTm9kZS5jcHAKQEAgLTMzLDcg
KzMzLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBXVEZfTUFLRV9JU09fQUxMT0NBVEVEX0lN
UEwoQmlxdWFkRmlsdGVyTm9kZSk7CiAKLUJpcXVhZEZpbHRlck5vZGU6OkJpcXVhZEZpbHRlck5v
ZGUoQXVkaW9Db250ZXh0JiBjb250ZXh0LCBmbG9hdCBzYW1wbGVSYXRlKQorQmlxdWFkRmlsdGVy
Tm9kZTo6QmlxdWFkRmlsdGVyTm9kZShBdWRpb0NvbnRleHRCYXNlJiBjb250ZXh0LCBmbG9hdCBz
YW1wbGVSYXRlKQogICAgIDogQXVkaW9CYXNpY1Byb2Nlc3Nvck5vZGUoY29udGV4dCwgc2FtcGxl
UmF0ZSkKIHsKICAgICBzZXROb2RlVHlwZShOb2RlVHlwZUJpcXVhZEZpbHRlcik7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0JpcXVhZEZpbHRlck5vZGUuaCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQmlxdWFkRmlsdGVyTm9kZS5oCmluZGV4
IDgwOTRkOTFlYWIzLi5hYzhkOTQ3YTEwZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJhdWRpby9CaXF1YWRGaWx0ZXJOb2RlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJhdWRpby9CaXF1YWRGaWx0ZXJOb2RlLmgKQEAgLTM0LDcgKzM0LDcgQEAgY2xhc3Mg
QXVkaW9QYXJhbTsKIGNsYXNzIEJpcXVhZEZpbHRlck5vZGUgZmluYWwgOiBwdWJsaWMgQXVkaW9C
YXNpY1Byb2Nlc3Nvck5vZGUgewogICAgIFdURl9NQUtFX0lTT19BTExPQ0FURUQoQmlxdWFkRmls
dGVyTm9kZSk7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxCaXF1YWRGaWx0ZXJOb2RlPiBjcmVh
dGUoQXVkaW9Db250ZXh0JiBjb250ZXh0LCBmbG9hdCBzYW1wbGVSYXRlKQorICAgIHN0YXRpYyBS
ZWY8QmlxdWFkRmlsdGVyTm9kZT4gY3JlYXRlKEF1ZGlvQ29udGV4dEJhc2UmIGNvbnRleHQsIGZs
b2F0IHNhbXBsZVJhdGUpCiAgICAgewogICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBCaXF1
YWRGaWx0ZXJOb2RlKGNvbnRleHQsIHNhbXBsZVJhdGUpKTsKICAgICB9CkBAIC01Miw3ICs1Miw3
IEBAIHB1YmxpYzoKICAgICB2b2lkIGdldEZyZXF1ZW5jeVJlc3BvbnNlKGNvbnN0IFJlZlB0cjxG
bG9hdDMyQXJyYXk+JiBmcmVxdWVuY3lIeiwgY29uc3QgUmVmUHRyPEZsb2F0MzJBcnJheT4mIG1h
Z1Jlc3BvbnNlLCBjb25zdCBSZWZQdHI8RmxvYXQzMkFycmF5PiYgcGhhc2VSZXNwb25zZSk7CiAK
IHByaXZhdGU6Ci0gICAgQmlxdWFkRmlsdGVyTm9kZShBdWRpb0NvbnRleHQmLCBmbG9hdCBzYW1w
bGVSYXRlKTsKKyAgICBCaXF1YWRGaWx0ZXJOb2RlKEF1ZGlvQ29udGV4dEJhc2UmLCBmbG9hdCBz
YW1wbGVSYXRlKTsKIAogICAgIEJpcXVhZFByb2Nlc3NvciogYmlxdWFkUHJvY2Vzc29yKCkgeyBy
ZXR1cm4gc3RhdGljX2Nhc3Q8QmlxdWFkUHJvY2Vzc29yKj4ocHJvY2Vzc29yKCkpOyB9CiB9Owpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9CaXF1YWRQcm9jZXNz
b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9CaXF1YWRQcm9jZXNzb3Iu
Y3BwCmluZGV4IGU4NGI5ODAzNTY3Li4yZjYwNjdhNzJkYyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJhdWRpby9CaXF1YWRQcm9jZXNzb3IuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQmlxdWFkUHJvY2Vzc29yLmNwcApAQCAtMzIsNyArMzIs
NyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgCi1CaXF1YWRQcm9jZXNzb3I6OkJpcXVh
ZFByb2Nlc3NvcihBdWRpb0NvbnRleHQmIGNvbnRleHQsIGZsb2F0IHNhbXBsZVJhdGUsIHNpemVf
dCBudW1iZXJPZkNoYW5uZWxzLCBib29sIGF1dG9Jbml0aWFsaXplKQorQmlxdWFkUHJvY2Vzc29y
OjpCaXF1YWRQcm9jZXNzb3IoQXVkaW9Db250ZXh0QmFzZSYgY29udGV4dCwgZmxvYXQgc2FtcGxl
UmF0ZSwgc2l6ZV90IG51bWJlck9mQ2hhbm5lbHMsIGJvb2wgYXV0b0luaXRpYWxpemUpCiAgICAg
OiBBdWRpb0RTUEtlcm5lbFByb2Nlc3NvcihzYW1wbGVSYXRlLCBudW1iZXJPZkNoYW5uZWxzKQog
ICAgICwgbV90eXBlKEJpcXVhZEZpbHRlclR5cGU6Okxvd3Bhc3MpCiAgICAgLCBtX3BhcmFtZXRl
cjEoMCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQmlxdWFk
UHJvY2Vzc29yLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0JpcXVhZFByb2Nl
c3Nvci5oCmluZGV4IGFkYmVlYzQzMDI1Li5kYzMwNmFiNTE3YiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9CaXF1YWRQcm9jZXNzb3IuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0JpcXVhZFByb2Nlc3Nvci5oCkBAIC01MCw3ICs1MCw3
IEBAIGVudW0gY2xhc3MgQmlxdWFkRmlsdGVyVHlwZSB7CiBjbGFzcyBCaXF1YWRQcm9jZXNzb3Ig
ZmluYWwgOiBwdWJsaWMgQXVkaW9EU1BLZXJuZWxQcm9jZXNzb3IgewogICAgIFdURl9NQUtFX0ZB
U1RfQUxMT0NBVEVEOwogcHVibGljOgotICAgIEJpcXVhZFByb2Nlc3NvcihBdWRpb0NvbnRleHQm
LCBmbG9hdCBzYW1wbGVSYXRlLCBzaXplX3QgbnVtYmVyT2ZDaGFubmVscywgYm9vbCBhdXRvSW5p
dGlhbGl6ZSk7CisgICAgQmlxdWFkUHJvY2Vzc29yKEF1ZGlvQ29udGV4dEJhc2UmLCBmbG9hdCBz
YW1wbGVSYXRlLCBzaXplX3QgbnVtYmVyT2ZDaGFubmVscywgYm9vbCBhdXRvSW5pdGlhbGl6ZSk7
CiAKICAgICB2aXJ0dWFsIH5CaXF1YWRQcm9jZXNzb3IoKTsKICAgICAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQ2hhbm5lbE1lcmdlck5vZGUuY3BwIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9DaGFubmVsTWVyZ2VyTm9kZS5jcHAKaW5kZXgg
ZGY1MGYyNjg3MzYuLmRlMjhhZWE3ZDJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmF1ZGlvL0NoYW5uZWxNZXJnZXJOb2RlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmF1ZGlvL0NoYW5uZWxNZXJnZXJOb2RlLmNwcApAQCAtNDMsNyArNDMsNyBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKIFdURl9NQUtFX0lTT19BTExPQ0FURURfSU1QTChDaGFubmVs
TWVyZ2VyTm9kZSk7CiAKLVJlZlB0cjxDaGFubmVsTWVyZ2VyTm9kZT4gQ2hhbm5lbE1lcmdlck5v
ZGU6OmNyZWF0ZShBdWRpb0NvbnRleHQmIGNvbnRleHQsIGZsb2F0IHNhbXBsZVJhdGUsIHVuc2ln
bmVkIG51bWJlck9mSW5wdXRzKQorUmVmUHRyPENoYW5uZWxNZXJnZXJOb2RlPiBDaGFubmVsTWVy
Z2VyTm9kZTo6Y3JlYXRlKEF1ZGlvQ29udGV4dEJhc2UmIGNvbnRleHQsIGZsb2F0IHNhbXBsZVJh
dGUsIHVuc2lnbmVkIG51bWJlck9mSW5wdXRzKQogewogICAgIGlmICghbnVtYmVyT2ZJbnB1dHMg
fHwgbnVtYmVyT2ZJbnB1dHMgPiBBdWRpb0NvbnRleHQ6Om1heE51bWJlck9mQ2hhbm5lbHMoKSkK
ICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC01MSw3ICs1MSw3IEBAIFJlZlB0cjxDaGFubmVs
TWVyZ2VyTm9kZT4gQ2hhbm5lbE1lcmdlck5vZGU6OmNyZWF0ZShBdWRpb0NvbnRleHQmIGNvbnRl
eHQsIGZsb2F0CiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQ2hhbm5lbE1lcmdlck5vZGUoY29u
dGV4dCwgc2FtcGxlUmF0ZSwgbnVtYmVyT2ZJbnB1dHMpKTsgICAgICAKIH0KIAotQ2hhbm5lbE1l
cmdlck5vZGU6OkNoYW5uZWxNZXJnZXJOb2RlKEF1ZGlvQ29udGV4dCYgY29udGV4dCwgZmxvYXQg
c2FtcGxlUmF0ZSwgdW5zaWduZWQgbnVtYmVyT2ZJbnB1dHMpCitDaGFubmVsTWVyZ2VyTm9kZTo6
Q2hhbm5lbE1lcmdlck5vZGUoQXVkaW9Db250ZXh0QmFzZSYgY29udGV4dCwgZmxvYXQgc2FtcGxl
UmF0ZSwgdW5zaWduZWQgbnVtYmVyT2ZJbnB1dHMpCiAgICAgOiBBdWRpb05vZGUoY29udGV4dCwg
c2FtcGxlUmF0ZSkKICAgICAsIG1fZGVzaXJlZE51bWJlck9mT3V0cHV0Q2hhbm5lbHMoRGVmYXVs
dE51bWJlck9mT3V0cHV0Q2hhbm5lbHMpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmF1ZGlvL0NoYW5uZWxNZXJnZXJOb2RlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmF1ZGlvL0NoYW5uZWxNZXJnZXJOb2RlLmgKaW5kZXggNjY2MzZlZWQ2ZjcuLjYyOTc2
ZTA1MDczIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0NoYW5u
ZWxNZXJnZXJOb2RlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9DaGFu
bmVsTWVyZ2VyTm9kZS5oCkBAIC0zNyw3ICszNyw3IEBAIGNsYXNzIEF1ZGlvQ29udGV4dDsKIGNs
YXNzIENoYW5uZWxNZXJnZXJOb2RlIGZpbmFsIDogcHVibGljIEF1ZGlvTm9kZSB7CiAgICAgV1RG
X01BS0VfSVNPX0FMTE9DQVRFRChDaGFubmVsTWVyZ2VyTm9kZSk7CiBwdWJsaWM6Ci0gICAgc3Rh
dGljIFJlZlB0cjxDaGFubmVsTWVyZ2VyTm9kZT4gY3JlYXRlKEF1ZGlvQ29udGV4dCYsIGZsb2F0
IHNhbXBsZVJhdGUsIHVuc2lnbmVkIG51bWJlck9mSW5wdXRzKTsKKyAgICBzdGF0aWMgUmVmUHRy
PENoYW5uZWxNZXJnZXJOb2RlPiBjcmVhdGUoQXVkaW9Db250ZXh0QmFzZSYsIGZsb2F0IHNhbXBs
ZVJhdGUsIHVuc2lnbmVkIG51bWJlck9mSW5wdXRzKTsKIAogICAgIC8vIEF1ZGlvTm9kZQogICAg
IHZvaWQgcHJvY2VzcyhzaXplX3QgZnJhbWVzVG9Qcm9jZXNzKSBvdmVycmlkZTsKQEAgLTUyLDcg
KzUyLDcgQEAgcHJpdmF0ZToKICAgICBkb3VibGUgdGFpbFRpbWUoKSBjb25zdCBvdmVycmlkZSB7
IHJldHVybiAwOyB9CiAgICAgZG91YmxlIGxhdGVuY3lUaW1lKCkgY29uc3Qgb3ZlcnJpZGUgeyBy
ZXR1cm4gMDsgfQogCi0gICAgQ2hhbm5lbE1lcmdlck5vZGUoQXVkaW9Db250ZXh0JiwgZmxvYXQg
c2FtcGxlUmF0ZSwgdW5zaWduZWQgbnVtYmVyT2ZJbnB1dHMpOworICAgIENoYW5uZWxNZXJnZXJO
b2RlKEF1ZGlvQ29udGV4dEJhc2UmLCBmbG9hdCBzYW1wbGVSYXRlLCB1bnNpZ25lZCBudW1iZXJP
ZklucHV0cyk7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0NoYW5uZWxTcGxpdHRlck5vZGUuY3BwIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9DaGFubmVsU3BsaXR0ZXJOb2RlLmNwcAppbmRl
eCA4MmY2OWEwNGY5OS4uZjU1NTNkMGM4MzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViYXVkaW8vQ2hhbm5lbFNwbGl0dGVyTm9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJhdWRpby9DaGFubmVsU3BsaXR0ZXJOb2RlLmNwcApAQCAtMzcsNyArMzcs
NyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFdURl9NQUtFX0lTT19BTExPQ0FURURfSU1QTChD
aGFubmVsU3BsaXR0ZXJOb2RlKTsKICAgICAKLVJlZlB0cjxDaGFubmVsU3BsaXR0ZXJOb2RlPiBD
aGFubmVsU3BsaXR0ZXJOb2RlOjpjcmVhdGUoQXVkaW9Db250ZXh0JiBjb250ZXh0LCBmbG9hdCBz
YW1wbGVSYXRlLCB1bnNpZ25lZCBudW1iZXJPZk91dHB1dHMpCitSZWZQdHI8Q2hhbm5lbFNwbGl0
dGVyTm9kZT4gQ2hhbm5lbFNwbGl0dGVyTm9kZTo6Y3JlYXRlKEF1ZGlvQ29udGV4dEJhc2UmIGNv
bnRleHQsIGZsb2F0IHNhbXBsZVJhdGUsIHVuc2lnbmVkIG51bWJlck9mT3V0cHV0cykKIHsKICAg
ICBpZiAoIW51bWJlck9mT3V0cHV0cyB8fCBudW1iZXJPZk91dHB1dHMgPiBBdWRpb0NvbnRleHQ6
Om1heE51bWJlck9mQ2hhbm5lbHMoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC00NSw3
ICs0NSw3IEBAIFJlZlB0cjxDaGFubmVsU3BsaXR0ZXJOb2RlPiBDaGFubmVsU3BsaXR0ZXJOb2Rl
OjpjcmVhdGUoQXVkaW9Db250ZXh0JiBjb250ZXh0LCBmCiAgICAgcmV0dXJuIGFkb3B0UmVmKCpu
ZXcgQ2hhbm5lbFNwbGl0dGVyTm9kZShjb250ZXh0LCBzYW1wbGVSYXRlLCBudW1iZXJPZk91dHB1
dHMpKTsgICAgICAKIH0KIAotQ2hhbm5lbFNwbGl0dGVyTm9kZTo6Q2hhbm5lbFNwbGl0dGVyTm9k
ZShBdWRpb0NvbnRleHQmIGNvbnRleHQsIGZsb2F0IHNhbXBsZVJhdGUsIHVuc2lnbmVkIG51bWJl
ck9mT3V0cHV0cykKK0NoYW5uZWxTcGxpdHRlck5vZGU6OkNoYW5uZWxTcGxpdHRlck5vZGUoQXVk
aW9Db250ZXh0QmFzZSYgY29udGV4dCwgZmxvYXQgc2FtcGxlUmF0ZSwgdW5zaWduZWQgbnVtYmVy
T2ZPdXRwdXRzKQogICAgIDogQXVkaW9Ob2RlKGNvbnRleHQsIHNhbXBsZVJhdGUpCiB7CiAgICAg
c2V0Tm9kZVR5cGUoTm9kZVR5cGVDaGFubmVsU3BsaXR0ZXIpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9DaGFubmVsU3BsaXR0ZXJOb2RlLmggYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0NoYW5uZWxTcGxpdHRlck5vZGUuaAppbmRleCA4ZDk4
MzI4MTIzNy4uMTNkOGQ5ODBkYWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViYXVkaW8vQ2hhbm5lbFNwbGl0dGVyTm9kZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViYXVkaW8vQ2hhbm5lbFNwbGl0dGVyTm9kZS5oCkBAIC0zMyw3ICszMyw3IEBAIGNsYXNz
IEF1ZGlvQ29udGV4dDsKIGNsYXNzIENoYW5uZWxTcGxpdHRlck5vZGUgZmluYWwgOiBwdWJsaWMg
QXVkaW9Ob2RlIHsKICAgICBXVEZfTUFLRV9JU09fQUxMT0NBVEVEKENoYW5uZWxTcGxpdHRlck5v
ZGUpOwogcHVibGljOgotICAgIHN0YXRpYyBSZWZQdHI8Q2hhbm5lbFNwbGl0dGVyTm9kZT4gY3Jl
YXRlKEF1ZGlvQ29udGV4dCYsIGZsb2F0IHNhbXBsZVJhdGUsIHVuc2lnbmVkIG51bWJlck9mT3V0
cHV0cyk7CisgICAgc3RhdGljIFJlZlB0cjxDaGFubmVsU3BsaXR0ZXJOb2RlPiBjcmVhdGUoQXVk
aW9Db250ZXh0QmFzZSYsIGZsb2F0IHNhbXBsZVJhdGUsIHVuc2lnbmVkIG51bWJlck9mT3V0cHV0
cyk7CiAKICAgICAvLyBBdWRpb05vZGUKICAgICB2b2lkIHByb2Nlc3Moc2l6ZV90IGZyYW1lc1Rv
UHJvY2Vzcykgb3ZlcnJpZGU7CkBAIC00Myw3ICs0Myw3IEBAIHByaXZhdGU6CiAgICAgZG91Ymxl
IHRhaWxUaW1lKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gMDsgfQogICAgIGRvdWJsZSBsYXRl
bmN5VGltZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIDA7IH0KIAotICAgIENoYW5uZWxTcGxp
dHRlck5vZGUoQXVkaW9Db250ZXh0JiwgZmxvYXQgc2FtcGxlUmF0ZSwgdW5zaWduZWQgbnVtYmVy
T2ZPdXRwdXRzKTsKKyAgICBDaGFubmVsU3BsaXR0ZXJOb2RlKEF1ZGlvQ29udGV4dEJhc2UmLCBm
bG9hdCBzYW1wbGVSYXRlLCB1bnNpZ25lZCBudW1iZXJPZk91dHB1dHMpOwogfTsKIAogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJh
dWRpby9Db252b2x2ZXJOb2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8v
Q29udm9sdmVyTm9kZS5jcHAKaW5kZXggY2M5NzJmMTBkYmQuLmUxZjVlYjgxNTYwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0NvbnZvbHZlck5vZGUuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQ29udm9sdmVyTm9kZS5jcHAKQEAg
LTQ3LDcgKzQ3LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBXVEZfTUFLRV9JU09fQUxMT0NB
VEVEX0lNUEwoQ29udm9sdmVyTm9kZSk7CiAKLUNvbnZvbHZlck5vZGU6OkNvbnZvbHZlck5vZGUo
QXVkaW9Db250ZXh0JiBjb250ZXh0LCBmbG9hdCBzYW1wbGVSYXRlKQorQ29udm9sdmVyTm9kZTo6
Q29udm9sdmVyTm9kZShBdWRpb0NvbnRleHRCYXNlJiBjb250ZXh0LCBmbG9hdCBzYW1wbGVSYXRl
KQogICAgIDogQXVkaW9Ob2RlKGNvbnRleHQsIHNhbXBsZVJhdGUpCiB7CiAgICAgc2V0Tm9kZVR5
cGUoTm9kZVR5cGVDb252b2x2ZXIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJhdWRpby9Db252b2x2ZXJOb2RlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1
ZGlvL0NvbnZvbHZlck5vZGUuaAppbmRleCA2NGJmZWJlZDJkOC4uMzFjZWMxZWNjN2YgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQ29udm9sdmVyTm9kZS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQ29udm9sdmVyTm9kZS5oCkBAIC0z
NSw3ICszNSw3IEBAIGNsYXNzIFJldmVyYjsKIGNsYXNzIENvbnZvbHZlck5vZGUgZmluYWwgOiBw
dWJsaWMgQXVkaW9Ob2RlIHsKICAgICBXVEZfTUFLRV9JU09fQUxMT0NBVEVEKENvbnZvbHZlck5v
ZGUpOwogcHVibGljOgotICAgIHN0YXRpYyBSZWY8Q29udm9sdmVyTm9kZT4gY3JlYXRlKEF1ZGlv
Q29udGV4dCYgY29udGV4dCwgZmxvYXQgc2FtcGxlUmF0ZSkKKyAgICBzdGF0aWMgUmVmPENvbnZv
bHZlck5vZGU+IGNyZWF0ZShBdWRpb0NvbnRleHRCYXNlJiBjb250ZXh0LCBmbG9hdCBzYW1wbGVS
YXRlKQogICAgIHsKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQ29udm9sdmVyTm9kZShj
b250ZXh0LCBzYW1wbGVSYXRlKSk7CiAgICAgfQpAQCAtNDksNyArNDksNyBAQCBwdWJsaWM6CiAg
ICAgdm9pZCBzZXROb3JtYWxpemUoYm9vbCBub3JtYWxpemUpIHsgbV9ub3JtYWxpemUgPSBub3Jt
YWxpemU7IH0KIAogcHJpdmF0ZToKLSAgICBDb252b2x2ZXJOb2RlKEF1ZGlvQ29udGV4dCYsIGZs
b2F0IHNhbXBsZVJhdGUpOworICAgIENvbnZvbHZlck5vZGUoQXVkaW9Db250ZXh0QmFzZSYsIGZs
b2F0IHNhbXBsZVJhdGUpOwogCiAgICAgZG91YmxlIHRhaWxUaW1lKCkgY29uc3QgZmluYWw7CiAg
ICAgZG91YmxlIGxhdGVuY3lUaW1lKCkgY29uc3QgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0RlZmF1bHRBdWRpb0Rlc3RpbmF0aW9uTm9kZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0RlZmF1bHRBdWRpb0Rlc3RpbmF0aW9u
Tm9kZS5jcHAKaW5kZXggMTc1OWFlNGE1YTYuLjA3ZWI5YTQxYjVjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0RlZmF1bHRBdWRpb0Rlc3RpbmF0aW9uTm9kZS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9EZWZhdWx0QXVkaW9EZXN0
aW5hdGlvbk5vZGUuY3BwCkBAIC00Myw3ICs0Myw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAog
V1RGX01BS0VfSVNPX0FMTE9DQVRFRF9JTVBMKERlZmF1bHRBdWRpb0Rlc3RpbmF0aW9uTm9kZSk7
CiAgICAgCi1EZWZhdWx0QXVkaW9EZXN0aW5hdGlvbk5vZGU6OkRlZmF1bHRBdWRpb0Rlc3RpbmF0
aW9uTm9kZShBdWRpb0NvbnRleHQmIGNvbnRleHQpCitEZWZhdWx0QXVkaW9EZXN0aW5hdGlvbk5v
ZGU6OkRlZmF1bHRBdWRpb0Rlc3RpbmF0aW9uTm9kZShBdWRpb0NvbnRleHRCYXNlJiBjb250ZXh0
KQogICAgIDogQXVkaW9EZXN0aW5hdGlvbk5vZGUoY29udGV4dCwgQXVkaW9EZXN0aW5hdGlvbjo6
aGFyZHdhcmVTYW1wbGVSYXRlKCkpCiB7CiAgICAgLy8gTm9kZS1zcGVjaWZpYyBkZWZhdWx0IG1p
eGluZyBydWxlcy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8v
RGVmYXVsdEF1ZGlvRGVzdGluYXRpb25Ob2RlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmF1ZGlvL0RlZmF1bHRBdWRpb0Rlc3RpbmF0aW9uTm9kZS5oCmluZGV4IDZmZDk1YzBmMzAxLi45
NmM4MzdjOTkzNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9E
ZWZhdWx0QXVkaW9EZXN0aW5hdGlvbk5vZGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmF1ZGlvL0RlZmF1bHRBdWRpb0Rlc3RpbmF0aW9uTm9kZS5oCkBAIC0zMyw3ICszMyw3IEBA
IGNsYXNzIEF1ZGlvRGVzdGluYXRpb247CiBjbGFzcyBEZWZhdWx0QXVkaW9EZXN0aW5hdGlvbk5v
ZGUgZmluYWwgOiBwdWJsaWMgQXVkaW9EZXN0aW5hdGlvbk5vZGUgewogICAgIFdURl9NQUtFX0lT
T19BTExPQ0FURUQoRGVmYXVsdEF1ZGlvRGVzdGluYXRpb25Ob2RlKTsKIHB1YmxpYzoKLSAgICBz
dGF0aWMgUmVmPERlZmF1bHRBdWRpb0Rlc3RpbmF0aW9uTm9kZT4gY3JlYXRlKEF1ZGlvQ29udGV4
dCYgY29udGV4dCkKKyAgICBzdGF0aWMgUmVmPERlZmF1bHRBdWRpb0Rlc3RpbmF0aW9uTm9kZT4g
Y3JlYXRlKEF1ZGlvQ29udGV4dEJhc2UmIGNvbnRleHQpCiAgICAgewogICAgICAgICByZXR1cm4g
YWRvcHRSZWYoKm5ldyBEZWZhdWx0QXVkaW9EZXN0aW5hdGlvbk5vZGUoY29udGV4dCkpOyAgICAg
CiAgICAgfQpAQCAtNDEsNyArNDEsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB+RGVmYXVsdEF1
ZGlvRGVzdGluYXRpb25Ob2RlKCk7CiAgICAgCiBwcml2YXRlOgotICAgIGV4cGxpY2l0IERlZmF1
bHRBdWRpb0Rlc3RpbmF0aW9uTm9kZShBdWRpb0NvbnRleHQmKTsKKyAgICBleHBsaWNpdCBEZWZh
dWx0QXVkaW9EZXN0aW5hdGlvbk5vZGUoQXVkaW9Db250ZXh0QmFzZSYpOwogICAgIHZvaWQgY3Jl
YXRlRGVzdGluYXRpb24oKTsKIAogICAgIHZvaWQgaW5pdGlhbGl6ZSgpIGZpbmFsOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9EZWxheU5vZGUuY3BwIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9EZWxheU5vZGUuY3BwCmluZGV4IDgxYmQ3ZDE5
YjI3Li40MDUyN2M4MWY5ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJh
dWRpby9EZWxheU5vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8v
RGVsYXlOb2RlLmNwcApAQCAtMzcsMTQgKzM3LDE0IEBAIFdURl9NQUtFX0lTT19BTExPQ0FURURf
SU1QTChEZWxheU5vZGUpOwogCiBjb25zdCBkb3VibGUgbWF4aW11bUFsbG93ZWREZWxheVRpbWUg
PSAxODA7CiAKLWlubGluZSBEZWxheU5vZGU6OkRlbGF5Tm9kZShBdWRpb0NvbnRleHQmIGNvbnRl
eHQsIGZsb2F0IHNhbXBsZVJhdGUsIGRvdWJsZSBtYXhEZWxheVRpbWUpCitpbmxpbmUgRGVsYXlO
b2RlOjpEZWxheU5vZGUoQXVkaW9Db250ZXh0QmFzZSYgY29udGV4dCwgZmxvYXQgc2FtcGxlUmF0
ZSwgZG91YmxlIG1heERlbGF5VGltZSkKICAgICA6IEF1ZGlvQmFzaWNQcm9jZXNzb3JOb2RlKGNv
bnRleHQsIHNhbXBsZVJhdGUpCiB7CiAgICAgc2V0Tm9kZVR5cGUoTm9kZVR5cGVEZWxheSk7CiAg
ICAgbV9wcm9jZXNzb3IgPSBtYWtlVW5pcXVlPERlbGF5UHJvY2Vzc29yPihjb250ZXh0LCBzYW1w
bGVSYXRlLCAxLCBtYXhEZWxheVRpbWUpOwogfQogCi1FeGNlcHRpb25PcjxSZWY8RGVsYXlOb2Rl
Pj4gRGVsYXlOb2RlOjpjcmVhdGUoQXVkaW9Db250ZXh0JiBjb250ZXh0LCBmbG9hdCBzYW1wbGVS
YXRlLCBkb3VibGUgbWF4RGVsYXlUaW1lKQorRXhjZXB0aW9uT3I8UmVmPERlbGF5Tm9kZT4+IERl
bGF5Tm9kZTo6Y3JlYXRlKEF1ZGlvQ29udGV4dEJhc2UmIGNvbnRleHQsIGZsb2F0IHNhbXBsZVJh
dGUsIGRvdWJsZSBtYXhEZWxheVRpbWUpCiB7CiAgICAgaWYgKG1heERlbGF5VGltZSA8PSAwIHx8
IG1heERlbGF5VGltZSA+PSBtYXhpbXVtQWxsb3dlZERlbGF5VGltZSkKICAgICAgICAgcmV0dXJu
IEV4Y2VwdGlvbiB7IE5vdFN1cHBvcnRlZEVycm9yIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0RlbGF5Tm9kZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJhdWRpby9EZWxheU5vZGUuaAppbmRleCBjOWVjYWQ5ZjlmZC4uYjZhZmRkMGY5MzAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vRGVsYXlOb2RlLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9EZWxheU5vZGUuaApAQCAtMzEsMTIg
KzMxLDEyIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIERlbGF5Tm9kZSBmaW5hbCA6IHB1
YmxpYyBBdWRpb0Jhc2ljUHJvY2Vzc29yTm9kZSB7CiAgICAgV1RGX01BS0VfSVNPX0FMTE9DQVRF
RChEZWxheU5vZGUpOwogcHVibGljOgotICAgIHN0YXRpYyBFeGNlcHRpb25PcjxSZWY8RGVsYXlO
b2RlPj4gY3JlYXRlKEF1ZGlvQ29udGV4dCYsIGZsb2F0IHNhbXBsZVJhdGUsIGRvdWJsZSBtYXhE
ZWxheVRpbWUpOworICAgIHN0YXRpYyBFeGNlcHRpb25PcjxSZWY8RGVsYXlOb2RlPj4gY3JlYXRl
KEF1ZGlvQ29udGV4dEJhc2UmLCBmbG9hdCBzYW1wbGVSYXRlLCBkb3VibGUgbWF4RGVsYXlUaW1l
KTsKIAogICAgIEF1ZGlvUGFyYW0qIGRlbGF5VGltZSgpOwogCiBwcml2YXRlOgotICAgIERlbGF5
Tm9kZShBdWRpb0NvbnRleHQmLCBmbG9hdCBzYW1wbGVSYXRlLCBkb3VibGUgbWF4RGVsYXlUaW1l
KTsKKyAgICBEZWxheU5vZGUoQXVkaW9Db250ZXh0QmFzZSYsIGZsb2F0IHNhbXBsZVJhdGUsIGRv
dWJsZSBtYXhEZWxheVRpbWUpOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9EZWxheVByb2Nlc3Nvci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0RlbGF5UHJvY2Vzc29yLmNwcAppbmRl
eCAxMDM2NmVmNmVhZi4uY2JiZmQ5ZmEyZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViYXVkaW8vRGVsYXlQcm9jZXNzb3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViYXVkaW8vRGVsYXlQcm9jZXNzb3IuY3BwCkBAIC0zMiw3ICszMiw3IEBACiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAotRGVsYXlQcm9jZXNzb3I6OkRlbGF5UHJvY2Vzc29yKEF1ZGlv
Q29udGV4dCYgY29udGV4dCwgZmxvYXQgc2FtcGxlUmF0ZSwgdW5zaWduZWQgbnVtYmVyT2ZDaGFu
bmVscywgZG91YmxlIG1heERlbGF5VGltZSkKK0RlbGF5UHJvY2Vzc29yOjpEZWxheVByb2Nlc3Nv
cihBdWRpb0NvbnRleHRCYXNlJiBjb250ZXh0LCBmbG9hdCBzYW1wbGVSYXRlLCB1bnNpZ25lZCBu
dW1iZXJPZkNoYW5uZWxzLCBkb3VibGUgbWF4RGVsYXlUaW1lKQogICAgIDogQXVkaW9EU1BLZXJu
ZWxQcm9jZXNzb3Ioc2FtcGxlUmF0ZSwgbnVtYmVyT2ZDaGFubmVscykKICAgICAsIG1fbWF4RGVs
YXlUaW1lKG1heERlbGF5VGltZSkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViYXVkaW8vRGVsYXlQcm9jZXNzb3IuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
YXVkaW8vRGVsYXlQcm9jZXNzb3IuaAppbmRleCA4NWQ5Y2M2ZDdmZC4uY2JhYzc5ZWNmMGYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vRGVsYXlQcm9jZXNzb3Iu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0RlbGF5UHJvY2Vzc29yLmgK
QEAgLTM2LDcgKzM2LDcgQEAgY2xhc3MgQXVkaW9EU1BLZXJuZWw7CiBjbGFzcyBEZWxheVByb2Nl
c3NvciBmaW5hbCA6IHB1YmxpYyBBdWRpb0RTUEtlcm5lbFByb2Nlc3NvciB7CiAgICAgV1RGX01B
S0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6Ci0gICAgRGVsYXlQcm9jZXNzb3IoQXVkaW9Db250
ZXh0JiwgZmxvYXQgc2FtcGxlUmF0ZSwgdW5zaWduZWQgbnVtYmVyT2ZDaGFubmVscywgZG91Ymxl
IG1heERlbGF5VGltZSk7CisgICAgRGVsYXlQcm9jZXNzb3IoQXVkaW9Db250ZXh0QmFzZSYsIGZs
b2F0IHNhbXBsZVJhdGUsIHVuc2lnbmVkIG51bWJlck9mQ2hhbm5lbHMsIGRvdWJsZSBtYXhEZWxh
eVRpbWUpOwogICAgIHZpcnR1YWwgfkRlbGF5UHJvY2Vzc29yKCk7CiAgICAgCiAgICAgc3RkOjp1
bmlxdWVfcHRyPEF1ZGlvRFNQS2VybmVsPiBjcmVhdGVLZXJuZWwoKSBvdmVycmlkZTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vRGlzdGFuY2VNb2RlbFR5cGUu
aCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vRGlzdGFuY2VNb2RlbFR5cGUuaApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uZGZlMTMxODJjYzAKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0Rpc3RhbmNlTW9k
ZWxUeXBlLmgKQEAgLTAsMCArMSwyNyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCwgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04KKyAqIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisg
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUworICogU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNp
bmNsdWRlICJEaXN0YW5jZS5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJhdWRpby9EaXN0YW5jZU1vZGVsVHlwZS5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmF1ZGlvL0Rpc3RhbmNlTW9kZWxUeXBlLmlkbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMC4uZjhmZmNmZWQyMmMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmF1ZGlvL0Rpc3RhbmNlTW9kZWxUeXBlLmlkbApAQCAtMCwwICsxLDMxIEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwLCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAq
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04KKyAqIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUwor
ICogU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworWworICAgIENvbmRpdGlvbmFsPVdFQl9BVURJTywKK10gZW51bSBEaXN0
YW5jZU1vZGVsVHlwZSB7CisgICAgImxpbmVhciIsCisgICAgImludmVyc2UiLAorICAgICJleHBv
bmVudGlhbCIKK307CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlv
L0R5bmFtaWNzQ29tcHJlc3Nvck5vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJh
dWRpby9EeW5hbWljc0NvbXByZXNzb3JOb2RlLmNwcAppbmRleCAxNDA5NmQ4ZjBjNS4uYzMzZDFk
ZTcyZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vRHluYW1p
Y3NDb21wcmVzc29yTm9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRp
by9EeW5hbWljc0NvbXByZXNzb3JOb2RlLmNwcApAQCAtNDEsNyArNDEsNyBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKIFdURl9NQUtFX0lTT19BTExPQ0FURURfSU1QTChEeW5hbWljc0NvbXByZXNz
b3JOb2RlKTsKIAotRHluYW1pY3NDb21wcmVzc29yTm9kZTo6RHluYW1pY3NDb21wcmVzc29yTm9k
ZShBdWRpb0NvbnRleHQmIGNvbnRleHQsIGZsb2F0IHNhbXBsZVJhdGUpCitEeW5hbWljc0NvbXBy
ZXNzb3JOb2RlOjpEeW5hbWljc0NvbXByZXNzb3JOb2RlKEF1ZGlvQ29udGV4dEJhc2UmIGNvbnRl
eHQsIGZsb2F0IHNhbXBsZVJhdGUpCiAgICAgOiBBdWRpb05vZGUoY29udGV4dCwgc2FtcGxlUmF0
ZSkKIHsKICAgICBzZXROb2RlVHlwZShOb2RlVHlwZUR5bmFtaWNzQ29tcHJlc3Nvcik7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0R5bmFtaWNzQ29tcHJlc3Nv
ck5vZGUuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vRHluYW1pY3NDb21wcmVz
c29yTm9kZS5oCmluZGV4IDQ0Y2JmYmFhMDU5Li5iNzA1M2IyMjE3MyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9EeW5hbWljc0NvbXByZXNzb3JOb2RlLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9EeW5hbWljc0NvbXByZXNzb3JOb2Rl
LmgKQEAgLTM1LDcgKzM1LDcgQEAgY2xhc3MgRHluYW1pY3NDb21wcmVzc29yOwogY2xhc3MgRHlu
YW1pY3NDb21wcmVzc29yTm9kZSBmaW5hbCA6IHB1YmxpYyBBdWRpb05vZGUgewogICAgIFdURl9N
QUtFX0lTT19BTExPQ0FURUQoRHluYW1pY3NDb21wcmVzc29yTm9kZSk7CiBwdWJsaWM6Ci0gICAg
c3RhdGljIFJlZjxEeW5hbWljc0NvbXByZXNzb3JOb2RlPiBjcmVhdGUoQXVkaW9Db250ZXh0JiBj
b250ZXh0LCBmbG9hdCBzYW1wbGVSYXRlKQorICAgIHN0YXRpYyBSZWY8RHluYW1pY3NDb21wcmVz
c29yTm9kZT4gY3JlYXRlKEF1ZGlvQ29udGV4dEJhc2UmIGNvbnRleHQsIGZsb2F0IHNhbXBsZVJh
dGUpCiAgICAgewogICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBEeW5hbWljc0NvbXByZXNz
b3JOb2RlKGNvbnRleHQsIHNhbXBsZVJhdGUpKTsKICAgICB9CkBAIC02Miw3ICs2Miw3IEBAIHBy
aXZhdGU6CiAgICAgZG91YmxlIHRhaWxUaW1lKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgZG91Ymxl
IGxhdGVuY3lUaW1lKCkgY29uc3Qgb3ZlcnJpZGU7CiAKLSAgICBEeW5hbWljc0NvbXByZXNzb3JO
b2RlKEF1ZGlvQ29udGV4dCYsIGZsb2F0IHNhbXBsZVJhdGUpOworICAgIER5bmFtaWNzQ29tcHJl
c3Nvck5vZGUoQXVkaW9Db250ZXh0QmFzZSYsIGZsb2F0IHNhbXBsZVJhdGUpOwogCiAgICAgc3Rk
Ojp1bmlxdWVfcHRyPER5bmFtaWNzQ29tcHJlc3Nvcj4gbV9keW5hbWljc0NvbXByZXNzb3I7CiAg
ICAgUmVmUHRyPEF1ZGlvUGFyYW0+IG1fdGhyZXNob2xkOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJhdWRpby9HYWluTm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmF1ZGlvL0dhaW5Ob2RlLmNwcAppbmRleCAyNTdkZjJlY2UyMy4uOTg0ZDExOTRiZGQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vR2Fpbk5vZGUuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vR2Fpbk5vZGUuY3BwCkBAIC0z
Nyw3ICszNyw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogV1RGX01BS0VfSVNPX0FMTE9DQVRF
RF9JTVBMKEdhaW5Ob2RlKTsKIAotR2Fpbk5vZGU6OkdhaW5Ob2RlKEF1ZGlvQ29udGV4dCYgY29u
dGV4dCwgZmxvYXQgc2FtcGxlUmF0ZSkKK0dhaW5Ob2RlOjpHYWluTm9kZShBdWRpb0NvbnRleHRC
YXNlJiBjb250ZXh0LCBmbG9hdCBzYW1wbGVSYXRlKQogICAgIDogQXVkaW9Ob2RlKGNvbnRleHQs
IHNhbXBsZVJhdGUpCiAgICAgLCBtX2xhc3RHYWluKDEuMCkKICAgICAsIG1fc2FtcGxlQWNjdXJh
dGVHYWluVmFsdWVzKEF1ZGlvTm9kZTo6UHJvY2Vzc2luZ1NpemVJbkZyYW1lcykgLy8gRklYTUU6
IGNhbiBwcm9iYWJseSBzaGFyZSB0ZW1wIGJ1ZmZlciBpbiBjb250ZXh0CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0dhaW5Ob2RlLmggYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmF1ZGlvL0dhaW5Ob2RlLmgKaW5kZXggZmE4NWIwYjlmZjUuLmRjZjg1NWE5
MWM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0dhaW5Ob2Rl
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9HYWluTm9kZS5oCkBAIC0z
OCw3ICszOCw3IEBAIGNsYXNzIEF1ZGlvQ29udGV4dDsKIGNsYXNzIEdhaW5Ob2RlIGZpbmFsIDog
cHVibGljIEF1ZGlvTm9kZSB7CiAgICAgV1RGX01BS0VfSVNPX0FMTE9DQVRFRChHYWluTm9kZSk7
CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxHYWluTm9kZT4gY3JlYXRlKEF1ZGlvQ29udGV4dCYg
Y29udGV4dCwgZmxvYXQgc2FtcGxlUmF0ZSkKKyAgICBzdGF0aWMgUmVmPEdhaW5Ob2RlPiBjcmVh
dGUoQXVkaW9Db250ZXh0QmFzZSYgY29udGV4dCwgZmxvYXQgc2FtcGxlUmF0ZSkKICAgICB7CiAg
ICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEdhaW5Ob2RlKGNvbnRleHQsIHNhbXBsZVJhdGUp
KTsKICAgICB9CkBAIC01Nyw3ICs1Nyw3IEBAIHByaXZhdGU6CiAgICAgZG91YmxlIHRhaWxUaW1l
KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gMDsgfQogICAgIGRvdWJsZSBsYXRlbmN5VGltZSgp
IGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIDA7IH0KIAotICAgIEdhaW5Ob2RlKEF1ZGlvQ29udGV4
dCYsIGZsb2F0IHNhbXBsZVJhdGUpOworICAgIEdhaW5Ob2RlKEF1ZGlvQ29udGV4dEJhc2UmLCBm
bG9hdCBzYW1wbGVSYXRlKTsKIAogICAgIGZsb2F0IG1fbGFzdEdhaW47IC8vIGZvciBkZS16aXBw
ZXJpbmcKICAgICBSZWZQdHI8QXVkaW9QYXJhbT4gbV9nYWluOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9NZWRpYUVsZW1lbnRBdWRpb1NvdXJjZU5vZGUuY3Bw
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9NZWRpYUVsZW1lbnRBdWRpb1NvdXJj
ZU5vZGUuY3BwCmluZGV4IDBlNTk4MWZhNjg2Li5jNjc1ZDdkZTcxNiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9NZWRpYUVsZW1lbnRBdWRpb1NvdXJjZU5vZGUu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vTWVkaWFFbGVtZW50QXVk
aW9Tb3VyY2VOb2RlLmNwcApAQCAtNDMsMTIgKzQzLDEyIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAogV1RGX01BS0VfSVNPX0FMTE9DQVRFRF9JTVBMKE1lZGlhRWxlbWVudEF1ZGlvU291cmNlTm9k
ZSk7CiAKLVJlZjxNZWRpYUVsZW1lbnRBdWRpb1NvdXJjZU5vZGU+IE1lZGlhRWxlbWVudEF1ZGlv
U291cmNlTm9kZTo6Y3JlYXRlKEF1ZGlvQ29udGV4dCYgY29udGV4dCwgSFRNTE1lZGlhRWxlbWVu
dCYgbWVkaWFFbGVtZW50KQorUmVmPE1lZGlhRWxlbWVudEF1ZGlvU291cmNlTm9kZT4gTWVkaWFF
bGVtZW50QXVkaW9Tb3VyY2VOb2RlOjpjcmVhdGUoQXVkaW9Db250ZXh0QmFzZSYgY29udGV4dCwg
SFRNTE1lZGlhRWxlbWVudCYgbWVkaWFFbGVtZW50KQogewogICAgIHJldHVybiBhZG9wdFJlZigq
bmV3IE1lZGlhRWxlbWVudEF1ZGlvU291cmNlTm9kZShjb250ZXh0LCBtZWRpYUVsZW1lbnQpKTsK
IH0KIAotTWVkaWFFbGVtZW50QXVkaW9Tb3VyY2VOb2RlOjpNZWRpYUVsZW1lbnRBdWRpb1NvdXJj
ZU5vZGUoQXVkaW9Db250ZXh0JiBjb250ZXh0LCBIVE1MTWVkaWFFbGVtZW50JiBtZWRpYUVsZW1l
bnQpCitNZWRpYUVsZW1lbnRBdWRpb1NvdXJjZU5vZGU6Ok1lZGlhRWxlbWVudEF1ZGlvU291cmNl
Tm9kZShBdWRpb0NvbnRleHRCYXNlJiBjb250ZXh0LCBIVE1MTWVkaWFFbGVtZW50JiBtZWRpYUVs
ZW1lbnQpCiAgICAgOiBBdWRpb05vZGUoY29udGV4dCwgY29udGV4dC5zYW1wbGVSYXRlKCkpCiAg
ICAgLCBtX21lZGlhRWxlbWVudChtZWRpYUVsZW1lbnQpCiAgICAgLCBtX3NvdXJjZU51bWJlck9m
Q2hhbm5lbHMoMCkKQEAgLTk3LDcgKzk3LDcgQEAgdm9pZCBNZWRpYUVsZW1lbnRBdWRpb1NvdXJj
ZU5vZGU6OnNldEZvcm1hdChzaXplX3QgbnVtYmVyT2ZDaGFubmVscywgZmxvYXQgc291cmMKIAog
ICAgICAgICB7CiAgICAgICAgICAgICAvLyBUaGUgY29udGV4dCBtdXN0IGJlIGxvY2tlZCB3aGVu
IGNoYW5naW5nIHRoZSBudW1iZXIgb2Ygb3V0cHV0IGNoYW5uZWxzLgotICAgICAgICAgICAgQXVk
aW9Db250ZXh0OjpBdXRvTG9ja2VyIGNvbnRleHRMb2NrZXIoY29udGV4dCgpKTsKKyAgICAgICAg
ICAgIEF1ZGlvQ29udGV4dEJhc2U6OkF1dG9Mb2NrZXIgY29udGV4dExvY2tlcihjb250ZXh0KCkp
OwogCiAgICAgICAgICAgICAvLyBEbyBhbnkgbmVjZXNzc2FyeSByZS1jb25maWd1cmF0aW9uIHRv
IHRoZSBvdXRwdXQncyBudW1iZXIgb2YgY2hhbm5lbHMuCiAgICAgICAgICAgICBvdXRwdXQoMCkt
PnNldE51bWJlck9mQ2hhbm5lbHMobnVtYmVyT2ZDaGFubmVscyk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL01lZGlhRWxlbWVudEF1ZGlvU291cmNlTm9kZS5o
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9NZWRpYUVsZW1lbnRBdWRpb1NvdXJj
ZU5vZGUuaAppbmRleCAzYTEzMTU0MTVmMS4uNzFkMGVkMTM4YTUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vTWVkaWFFbGVtZW50QXVkaW9Tb3VyY2VOb2RlLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9NZWRpYUVsZW1lbnRBdWRpb1Nv
dXJjZU5vZGUuaApAQCAtNDAsNyArNDAsNyBAQCBjbGFzcyBBdWRpb0NvbnRleHQ7CiBjbGFzcyBN
ZWRpYUVsZW1lbnRBdWRpb1NvdXJjZU5vZGUgZmluYWwgOiBwdWJsaWMgQXVkaW9Ob2RlLCBwdWJs
aWMgQXVkaW9Tb3VyY2VQcm92aWRlckNsaWVudCB7CiAgICAgV1RGX01BS0VfSVNPX0FMTE9DQVRF
RChNZWRpYUVsZW1lbnRBdWRpb1NvdXJjZU5vZGUpOwogcHVibGljOgotICAgIHN0YXRpYyBSZWY8
TWVkaWFFbGVtZW50QXVkaW9Tb3VyY2VOb2RlPiBjcmVhdGUoQXVkaW9Db250ZXh0JiwgSFRNTE1l
ZGlhRWxlbWVudCYpOworICAgIHN0YXRpYyBSZWY8TWVkaWFFbGVtZW50QXVkaW9Tb3VyY2VOb2Rl
PiBjcmVhdGUoQXVkaW9Db250ZXh0QmFzZSYsIEhUTUxNZWRpYUVsZW1lbnQmKTsKIAogICAgIHZp
cnR1YWwgfk1lZGlhRWxlbWVudEF1ZGlvU291cmNlTm9kZSgpOwogCkBAIC01Nyw3ICs1Nyw3IEBA
IHB1YmxpYzoKICAgICB2b2lkIHVubG9jaygpOwogCiBwcml2YXRlOgotICAgIE1lZGlhRWxlbWVu
dEF1ZGlvU291cmNlTm9kZShBdWRpb0NvbnRleHQmLCBIVE1MTWVkaWFFbGVtZW50Jik7CisgICAg
TWVkaWFFbGVtZW50QXVkaW9Tb3VyY2VOb2RlKEF1ZGlvQ29udGV4dEJhc2UmLCBIVE1MTWVkaWFF
bGVtZW50Jik7CiAKICAgICBkb3VibGUgdGFpbFRpbWUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVy
biAwOyB9CiAgICAgZG91YmxlIGxhdGVuY3lUaW1lKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4g
MDsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9NZWRpYVN0
cmVhbUF1ZGlvRGVzdGluYXRpb25Ob2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
YXVkaW8vTWVkaWFTdHJlYW1BdWRpb0Rlc3RpbmF0aW9uTm9kZS5jcHAKaW5kZXggZDc2NjI5MzAz
MDguLjMwZjFhMjIyYmUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1
ZGlvL01lZGlhU3RyZWFtQXVkaW9EZXN0aW5hdGlvbk5vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViYXVkaW8vTWVkaWFTdHJlYW1BdWRpb0Rlc3RpbmF0aW9uTm9kZS5jcHAK
QEAgLTM5LDEyICszOSwxMiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFdURl9NQUtFX0lTT19B
TExPQ0FURURfSU1QTChNZWRpYVN0cmVhbUF1ZGlvRGVzdGluYXRpb25Ob2RlKTsKIAotUmVmPE1l
ZGlhU3RyZWFtQXVkaW9EZXN0aW5hdGlvbk5vZGU+IE1lZGlhU3RyZWFtQXVkaW9EZXN0aW5hdGlv
bk5vZGU6OmNyZWF0ZShBdWRpb0NvbnRleHQmIGNvbnRleHQsIHNpemVfdCBudW1iZXJPZkNoYW5u
ZWxzKQorUmVmPE1lZGlhU3RyZWFtQXVkaW9EZXN0aW5hdGlvbk5vZGU+IE1lZGlhU3RyZWFtQXVk
aW9EZXN0aW5hdGlvbk5vZGU6OmNyZWF0ZShBdWRpb0NvbnRleHRCYXNlJiBjb250ZXh0LCBzaXpl
X3QgbnVtYmVyT2ZDaGFubmVscykKIHsKICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBNZWRpYVN0
cmVhbUF1ZGlvRGVzdGluYXRpb25Ob2RlKGNvbnRleHQsIG51bWJlck9mQ2hhbm5lbHMpKTsKIH0K
IAotTWVkaWFTdHJlYW1BdWRpb0Rlc3RpbmF0aW9uTm9kZTo6TWVkaWFTdHJlYW1BdWRpb0Rlc3Rp
bmF0aW9uTm9kZShBdWRpb0NvbnRleHQmIGNvbnRleHQsIHNpemVfdCBudW1iZXJPZkNoYW5uZWxz
KQorTWVkaWFTdHJlYW1BdWRpb0Rlc3RpbmF0aW9uTm9kZTo6TWVkaWFTdHJlYW1BdWRpb0Rlc3Rp
bmF0aW9uTm9kZShBdWRpb0NvbnRleHRCYXNlJiBjb250ZXh0LCBzaXplX3QgbnVtYmVyT2ZDaGFu
bmVscykKICAgICA6IEF1ZGlvQmFzaWNJbnNwZWN0b3JOb2RlKGNvbnRleHQsIGNvbnRleHQuc2Ft
cGxlUmF0ZSgpLCBudW1iZXJPZkNoYW5uZWxzKQogICAgICwgbV9zb3VyY2UoTWVkaWFTdHJlYW1B
dWRpb1NvdXJjZTo6Y3JlYXRlKGNvbnRleHQuc2FtcGxlUmF0ZSgpKSkKICAgICAsIG1fc3RyZWFt
KE1lZGlhU3RyZWFtOjpjcmVhdGUoKmNvbnRleHQuZG9jdW1lbnQoKSwgTWVkaWFTdHJlYW1Qcml2
YXRlOjpjcmVhdGUoY29udGV4dC5kb2N1bWVudCgpLT5sb2dnZXIoKSwgbV9zb3VyY2UuY29weVJl
ZigpKSkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL01lZGlh
U3RyZWFtQXVkaW9EZXN0aW5hdGlvbk5vZGUuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
YXVkaW8vTWVkaWFTdHJlYW1BdWRpb0Rlc3RpbmF0aW9uTm9kZS5oCmluZGV4IGY1YTdlOGZlYzRh
Li5kYmFkOTI4ZDc5NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRp
by9NZWRpYVN0cmVhbUF1ZGlvRGVzdGluYXRpb25Ob2RlLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJhdWRpby9NZWRpYVN0cmVhbUF1ZGlvRGVzdGluYXRpb25Ob2RlLmgKQEAgLTMy
LDEzICszMiwxMyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIEF1ZGlvQ29udGV4
dDsKK2NsYXNzIEF1ZGlvQ29udGV4dEJhc2U7CiBjbGFzcyBNZWRpYVN0cmVhbUF1ZGlvU291cmNl
OwogCiBjbGFzcyBNZWRpYVN0cmVhbUF1ZGlvRGVzdGluYXRpb25Ob2RlIGZpbmFsIDogcHVibGlj
IEF1ZGlvQmFzaWNJbnNwZWN0b3JOb2RlIHsKICAgICBXVEZfTUFLRV9JU09fQUxMT0NBVEVEKE1l
ZGlhU3RyZWFtQXVkaW9EZXN0aW5hdGlvbk5vZGUpOwogcHVibGljOgotICAgIHN0YXRpYyBSZWY8
TWVkaWFTdHJlYW1BdWRpb0Rlc3RpbmF0aW9uTm9kZT4gY3JlYXRlKEF1ZGlvQ29udGV4dCYsIHNp
emVfdCBudW1iZXJPZkNoYW5uZWxzKTsKKyAgICBzdGF0aWMgUmVmPE1lZGlhU3RyZWFtQXVkaW9E
ZXN0aW5hdGlvbk5vZGU+IGNyZWF0ZShBdWRpb0NvbnRleHRCYXNlJiwgc2l6ZV90IG51bWJlck9m
Q2hhbm5lbHMpOwogCiAgICAgdmlydHVhbCB+TWVkaWFTdHJlYW1BdWRpb0Rlc3RpbmF0aW9uTm9k
ZSgpOwogCkBAIC00OSw3ICs0OSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHJlc2V0KCkgZmluYWw7
CiAgICAgCiBwcml2YXRlOgotICAgIE1lZGlhU3RyZWFtQXVkaW9EZXN0aW5hdGlvbk5vZGUoQXVk
aW9Db250ZXh0Jiwgc2l6ZV90IG51bWJlck9mQ2hhbm5lbHMpOworICAgIE1lZGlhU3RyZWFtQXVk
aW9EZXN0aW5hdGlvbk5vZGUoQXVkaW9Db250ZXh0QmFzZSYsIHNpemVfdCBudW1iZXJPZkNoYW5u
ZWxzKTsKIAogICAgIGRvdWJsZSB0YWlsVGltZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIDA7IH0K
ICAgICBkb3VibGUgbGF0ZW5jeVRpbWUoKSBjb25zdCBmaW5hbCB7IHJldHVybiAwOyB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL01lZGlhU3RyZWFtQXVkaW9T
b3VyY2VOb2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vTWVkaWFTdHJl
YW1BdWRpb1NvdXJjZU5vZGUuY3BwCmluZGV4IDFiNGZiNmQxOTIyLi4zNWU1NWE5MjAyYyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9NZWRpYVN0cmVhbUF1ZGlv
U291cmNlTm9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9NZWRp
YVN0cmVhbUF1ZGlvU291cmNlTm9kZS5jcHAKQEAgLTM4LDEyICszOCwxMiBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKIFdURl9NQUtFX0lTT19BTExPQ0FURURfSU1QTChNZWRpYVN0cmVhbUF1ZGlv
U291cmNlTm9kZSk7CiAKLVJlZjxNZWRpYVN0cmVhbUF1ZGlvU291cmNlTm9kZT4gTWVkaWFTdHJl
YW1BdWRpb1NvdXJjZU5vZGU6OmNyZWF0ZShBdWRpb0NvbnRleHQmIGNvbnRleHQsIE1lZGlhU3Ry
ZWFtJiBtZWRpYVN0cmVhbSwgTWVkaWFTdHJlYW1UcmFjayYgYXVkaW9UcmFjaykKK1JlZjxNZWRp
YVN0cmVhbUF1ZGlvU291cmNlTm9kZT4gTWVkaWFTdHJlYW1BdWRpb1NvdXJjZU5vZGU6OmNyZWF0
ZShBdWRpb0NvbnRleHRCYXNlJiBjb250ZXh0LCBNZWRpYVN0cmVhbSYgbWVkaWFTdHJlYW0sIE1l
ZGlhU3RyZWFtVHJhY2smIGF1ZGlvVHJhY2spCiB7CiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcg
TWVkaWFTdHJlYW1BdWRpb1NvdXJjZU5vZGUoY29udGV4dCwgbWVkaWFTdHJlYW0sIGF1ZGlvVHJh
Y2spKTsKIH0KIAotTWVkaWFTdHJlYW1BdWRpb1NvdXJjZU5vZGU6Ok1lZGlhU3RyZWFtQXVkaW9T
b3VyY2VOb2RlKEF1ZGlvQ29udGV4dCYgY29udGV4dCwgTWVkaWFTdHJlYW0mIG1lZGlhU3RyZWFt
LCBNZWRpYVN0cmVhbVRyYWNrJiBhdWRpb1RyYWNrKQorTWVkaWFTdHJlYW1BdWRpb1NvdXJjZU5v
ZGU6Ok1lZGlhU3RyZWFtQXVkaW9Tb3VyY2VOb2RlKEF1ZGlvQ29udGV4dEJhc2UmIGNvbnRleHQs
IE1lZGlhU3RyZWFtJiBtZWRpYVN0cmVhbSwgTWVkaWFTdHJlYW1UcmFjayYgYXVkaW9UcmFjaykK
ICAgICA6IEF1ZGlvTm9kZShjb250ZXh0LCBjb250ZXh0LnNhbXBsZVJhdGUoKSkKICAgICAsIG1f
bWVkaWFTdHJlYW0obWVkaWFTdHJlYW0pCiAgICAgLCBtX2F1ZGlvVHJhY2soYXVkaW9UcmFjaykK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vTWVkaWFTdHJlYW1B
dWRpb1NvdXJjZU5vZGUuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vTWVkaWFT
dHJlYW1BdWRpb1NvdXJjZU5vZGUuaAppbmRleCBlM2VkZWZlMWJkNS4uYzcyZDMxMjIzM2QgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vTWVkaWFTdHJlYW1BdWRp
b1NvdXJjZU5vZGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL01lZGlh
U3RyZWFtQXVkaW9Tb3VyY2VOb2RlLmgKQEAgLTQwLDcgKzQwLDcgQEAgY2xhc3MgTXVsdGlDaGFu
bmVsUmVzYW1wbGVyOwogY2xhc3MgTWVkaWFTdHJlYW1BdWRpb1NvdXJjZU5vZGUgZmluYWwgOiBw
dWJsaWMgQXVkaW9Ob2RlLCBwdWJsaWMgQXVkaW9Tb3VyY2VQcm92aWRlckNsaWVudCB7CiAgICAg
V1RGX01BS0VfSVNPX0FMTE9DQVRFRChNZWRpYVN0cmVhbUF1ZGlvU291cmNlTm9kZSk7CiBwdWJs
aWM6Ci0gICAgc3RhdGljIFJlZjxNZWRpYVN0cmVhbUF1ZGlvU291cmNlTm9kZT4gY3JlYXRlKEF1
ZGlvQ29udGV4dCYsIE1lZGlhU3RyZWFtJiwgTWVkaWFTdHJlYW1UcmFjayYpOworICAgIHN0YXRp
YyBSZWY8TWVkaWFTdHJlYW1BdWRpb1NvdXJjZU5vZGU+IGNyZWF0ZShBdWRpb0NvbnRleHRCYXNl
JiwgTWVkaWFTdHJlYW0mLCBNZWRpYVN0cmVhbVRyYWNrJik7CiAKICAgICB2aXJ0dWFsIH5NZWRp
YVN0cmVhbUF1ZGlvU291cmNlTm9kZSgpOwogCkBAIC01NCw3ICs1NCw3IEBAIHB1YmxpYzoKICAg
ICB2b2lkIHNldEZvcm1hdChzaXplX3QgbnVtYmVyT2ZDaGFubmVscywgZmxvYXQgc2FtcGxlUmF0
ZSkgb3ZlcnJpZGU7CiAKIHByaXZhdGU6Ci0gICAgTWVkaWFTdHJlYW1BdWRpb1NvdXJjZU5vZGUo
QXVkaW9Db250ZXh0JiwgTWVkaWFTdHJlYW0mLCBNZWRpYVN0cmVhbVRyYWNrJik7CisgICAgTWVk
aWFTdHJlYW1BdWRpb1NvdXJjZU5vZGUoQXVkaW9Db250ZXh0QmFzZSYsIE1lZGlhU3RyZWFtJiwg
TWVkaWFTdHJlYW1UcmFjayYpOwogCiAgICAgZG91YmxlIHRhaWxUaW1lKCkgY29uc3Qgb3ZlcnJp
ZGUgeyByZXR1cm4gMDsgfQogICAgIGRvdWJsZSBsYXRlbmN5VGltZSgpIGNvbnN0IG92ZXJyaWRl
IHsgcmV0dXJuIDA7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVk
aW8vT2ZmbGluZUF1ZGlvQ29udGV4dC5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1
ZGlvL09mZmxpbmVBdWRpb0NvbnRleHQuaWRsCmluZGV4IGY2ZWNiMWE2ODU4Li4wZTcxYTA2YmMz
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9PZmZsaW5lQXVk
aW9Db250ZXh0LmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL09mZmxp
bmVBdWRpb0NvbnRleHQuaWRsCkBAIC0yNCw4ICsyNCw4IEBACiAKIFsKICAgICBDb25kaXRpb25h
bD1XRUJfQVVESU8sCisgICAgRW5hYmxlZEJ5U2V0dGluZz1Nb2Rlcm5VbnByZWZpeGVkV2ViQXVk
aW8sCiAgICAgSlNHZW5lcmF0ZVRvSlNPYmplY3QsCi0gICAgSW50ZXJmYWNlTmFtZT13ZWJraXRP
ZmZsaW5lQXVkaW9Db250ZXh0CiBdIGludGVyZmFjZSBPZmZsaW5lQXVkaW9Db250ZXh0IDogQXVk
aW9Db250ZXh0IHsKICAgICBbQ2FsbFdpdGg9U2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgTWF5VGhy
b3dFeGNlcHRpb25dIGNvbnN0cnVjdG9yKHVuc2lnbmVkIGxvbmcgbnVtYmVyT2ZDaGFubmVscywg
dW5zaWduZWQgbG9uZyBudW1iZXJPZkZyYW1lcywgdW5yZXN0cmljdGVkIGZsb2F0IHNhbXBsZVJh
dGUpOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vT2Zm
bGluZUF1ZGlvRGVzdGluYXRpb25Ob2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
YXVkaW8vT2ZmbGluZUF1ZGlvRGVzdGluYXRpb25Ob2RlLmNwcAppbmRleCA2YTE5NTU0NmNmNy4u
ZmVjNTA4Y2JmZjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8v
T2ZmbGluZUF1ZGlvRGVzdGluYXRpb25Ob2RlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmF1ZGlvL09mZmxpbmVBdWRpb0Rlc3RpbmF0aW9uTm9kZS5jcHAKQEAgLTQxLDcgKzQx
LDcgQEAgV1RGX01BS0VfSVNPX0FMTE9DQVRFRF9JTVBMKE9mZmxpbmVBdWRpb0Rlc3RpbmF0aW9u
Tm9kZSk7CiAgICAgCiBjb25zdCBzaXplX3QgcmVuZGVyUXVhbnR1bVNpemUgPSAxMjg7ICAgIAog
Ci1PZmZsaW5lQXVkaW9EZXN0aW5hdGlvbk5vZGU6Ok9mZmxpbmVBdWRpb0Rlc3RpbmF0aW9uTm9k
ZShBdWRpb0NvbnRleHQmIGNvbnRleHQsIEF1ZGlvQnVmZmVyKiByZW5kZXJUYXJnZXQpCitPZmZs
aW5lQXVkaW9EZXN0aW5hdGlvbk5vZGU6Ok9mZmxpbmVBdWRpb0Rlc3RpbmF0aW9uTm9kZShBdWRp
b0NvbnRleHRCYXNlJiBjb250ZXh0LCBBdWRpb0J1ZmZlciogcmVuZGVyVGFyZ2V0KQogICAgIDog
QXVkaW9EZXN0aW5hdGlvbk5vZGUoY29udGV4dCwgcmVuZGVyVGFyZ2V0LT5zYW1wbGVSYXRlKCkp
CiAgICAgLCBtX3JlbmRlclRhcmdldChyZW5kZXJUYXJnZXQpCiAgICAgLCBtX3N0YXJ0ZWRSZW5k
ZXJpbmcoZmFsc2UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlv
L09mZmxpbmVBdWRpb0Rlc3RpbmF0aW9uTm9kZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJhdWRpby9PZmZsaW5lQXVkaW9EZXN0aW5hdGlvbk5vZGUuaAppbmRleCBkYTI0OTU3NGQ0OC4u
Zjg3MTBmZGUxMGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8v
T2ZmbGluZUF1ZGlvRGVzdGluYXRpb25Ob2RlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJhdWRpby9PZmZsaW5lQXVkaW9EZXN0aW5hdGlvbk5vZGUuaApAQCAtMzcsOSArMzcsOSBA
QCBjbGFzcyBBdWRpb0NvbnRleHQ7CiBjbGFzcyBPZmZsaW5lQXVkaW9EZXN0aW5hdGlvbk5vZGUg
ZmluYWwgOiBwdWJsaWMgQXVkaW9EZXN0aW5hdGlvbk5vZGUgewogICAgIFdURl9NQUtFX0lTT19B
TExPQ0FURUQoT2ZmbGluZUF1ZGlvRGVzdGluYXRpb25Ob2RlKTsKIHB1YmxpYzoKLSAgICBzdGF0
aWMgUmVmPE9mZmxpbmVBdWRpb0Rlc3RpbmF0aW9uTm9kZT4gY3JlYXRlKEF1ZGlvQ29udGV4dCYg
Y29udGV4dCwgQXVkaW9CdWZmZXIqIHJlbmRlclRhcmdldCkKKyAgICBzdGF0aWMgUmVmPE9mZmxp
bmVBdWRpb0Rlc3RpbmF0aW9uTm9kZT4gY3JlYXRlKEF1ZGlvQ29udGV4dEJhc2UmIGNvbnRleHQs
IEF1ZGlvQnVmZmVyKiByZW5kZXJUYXJnZXQpCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRS
ZWYoKm5ldyBPZmZsaW5lQXVkaW9EZXN0aW5hdGlvbk5vZGUoY29udGV4dCwgcmVuZGVyVGFyZ2V0
KSk7ICAgICAKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgT2ZmbGluZUF1ZGlvRGVzdGlu
YXRpb25Ob2RlKGNvbnRleHQsIHJlbmRlclRhcmdldCkpOwogICAgIH0KIAogICAgIHZpcnR1YWwg
fk9mZmxpbmVBdWRpb0Rlc3RpbmF0aW9uTm9kZSgpOwpAQCAtNTUsNyArNTUsNyBAQCBwdWJsaWM6
CiAgICAgZmxvYXQgc2FtcGxlUmF0ZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fcmVuZGVy
VGFyZ2V0LT5zYW1wbGVSYXRlKCk7IH0KIAogcHJpdmF0ZToKLSAgICBPZmZsaW5lQXVkaW9EZXN0
aW5hdGlvbk5vZGUoQXVkaW9Db250ZXh0JiwgQXVkaW9CdWZmZXIqIHJlbmRlclRhcmdldCk7Cisg
ICAgT2ZmbGluZUF1ZGlvRGVzdGluYXRpb25Ob2RlKEF1ZGlvQ29udGV4dEJhc2UmLCBBdWRpb0J1
ZmZlciogcmVuZGVyVGFyZ2V0KTsKIAogICAgIC8vIFRoaXMgQXVkaW9Ob2RlIHJlbmRlcnMgaW50
byB0aGlzIEF1ZGlvQnVmZmVyLgogICAgIFJlZlB0cjxBdWRpb0J1ZmZlcj4gbV9yZW5kZXJUYXJn
ZXQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL09zY2lsbGF0
b3JOb2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vT3NjaWxsYXRvck5v
ZGUuY3BwCmluZGV4IDk1NjAwNTNhNDgwLi5lOGYzMWM3MjIwZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9Pc2NpbGxhdG9yTm9kZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9Pc2NpbGxhdG9yTm9kZS5jcHAKQEAgLTQ1LDEyICs0
NSwxMiBAQCBQZXJpb2RpY1dhdmUqIE9zY2lsbGF0b3JOb2RlOjpzX3BlcmlvZGljV2F2ZVNxdWFy
ZSA9IG51bGxwdHI7CiBQZXJpb2RpY1dhdmUqIE9zY2lsbGF0b3JOb2RlOjpzX3BlcmlvZGljV2F2
ZVNhd3Rvb3RoID0gbnVsbHB0cjsKIFBlcmlvZGljV2F2ZSogT3NjaWxsYXRvck5vZGU6OnNfcGVy
aW9kaWNXYXZlVHJpYW5nbGUgPSBudWxscHRyOwogCi1SZWY8T3NjaWxsYXRvck5vZGU+IE9zY2ls
bGF0b3JOb2RlOjpjcmVhdGUoQXVkaW9Db250ZXh0JiBjb250ZXh0LCBmbG9hdCBzYW1wbGVSYXRl
KQorUmVmPE9zY2lsbGF0b3JOb2RlPiBPc2NpbGxhdG9yTm9kZTo6Y3JlYXRlKEF1ZGlvQ29udGV4
dEJhc2UmIGNvbnRleHQsIGZsb2F0IHNhbXBsZVJhdGUpCiB7CiAgICAgcmV0dXJuIGFkb3B0UmVm
KCpuZXcgT3NjaWxsYXRvck5vZGUoY29udGV4dCwgc2FtcGxlUmF0ZSkpOwogfQogCi1Pc2NpbGxh
dG9yTm9kZTo6T3NjaWxsYXRvck5vZGUoQXVkaW9Db250ZXh0JiBjb250ZXh0LCBmbG9hdCBzYW1w
bGVSYXRlKQorT3NjaWxsYXRvck5vZGU6Ok9zY2lsbGF0b3JOb2RlKEF1ZGlvQ29udGV4dEJhc2Um
IGNvbnRleHQsIGZsb2F0IHNhbXBsZVJhdGUpCiAgICAgOiBBdWRpb1NjaGVkdWxlZFNvdXJjZU5v
ZGUoY29udGV4dCwgc2FtcGxlUmF0ZSkKICAgICAsIG1fZmlyc3RSZW5kZXIodHJ1ZSkKICAgICAs
IG1fdmlydHVhbFJlYWRJbmRleCgwKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJhdWRpby9Pc2NpbGxhdG9yTm9kZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJh
dWRpby9Pc2NpbGxhdG9yTm9kZS5oCmluZGV4IDQyZmYwYzE5MjRiLi4wODk1YmNlM2RkZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9Pc2NpbGxhdG9yTm9kZS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vT3NjaWxsYXRvck5vZGUuaApA
QCAtNDUsNyArNDUsNyBAQCBwdWJsaWM6CiAgICAgICAgIEN1c3RvbQogICAgIH07CiAKLSAgICBz
dGF0aWMgUmVmPE9zY2lsbGF0b3JOb2RlPiBjcmVhdGUoQXVkaW9Db250ZXh0JiwgZmxvYXQgc2Ft
cGxlUmF0ZSk7CisgICAgc3RhdGljIFJlZjxPc2NpbGxhdG9yTm9kZT4gY3JlYXRlKEF1ZGlvQ29u
dGV4dEJhc2UmLCBmbG9hdCBzYW1wbGVSYXRlKTsKIAogICAgIHZpcnR1YWwgfk9zY2lsbGF0b3JO
b2RlKCk7CiAKQEAgLTYwLDcgKzYwLDcgQEAgcHVibGljOgogICAgIHZvaWQgc2V0UGVyaW9kaWNX
YXZlKFBlcmlvZGljV2F2ZSopOwogCiBwcml2YXRlOgotICAgIE9zY2lsbGF0b3JOb2RlKEF1ZGlv
Q29udGV4dCYsIGZsb2F0IHNhbXBsZVJhdGUpOworICAgIE9zY2lsbGF0b3JOb2RlKEF1ZGlvQ29u
dGV4dEJhc2UmLCBmbG9hdCBzYW1wbGVSYXRlKTsKIAogICAgIHZvaWQgcHJvY2VzcyhzaXplX3Qg
ZnJhbWVzVG9Qcm9jZXNzKSBmaW5hbDsKICAgICB2b2lkIHJlc2V0KCkgZmluYWw7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1Bhbm5lck5vZGUuY3BwIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9QYW5uZXJOb2RlLmNwcAppbmRleCBlYzgwZTY5
ZDJhYi4uYWU0MmYxMTRiYmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
YXVkaW8vUGFubmVyTm9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRp
by9QYW5uZXJOb2RlLmNwcApAQCAtNDgsOCArNDgsMTMgQEAgc3RhdGljIHZvaWQgZml4TkFOcyhk
b3VibGUgJngpCiAgICAgICAgIHggPSAwLjA7CiB9CiAKLVBhbm5lck5vZGU6OlBhbm5lck5vZGUo
QXVkaW9Db250ZXh0JiBjb250ZXh0LCBmbG9hdCBzYW1wbGVSYXRlKQorUGFubmVyTm9kZUJhc2U6
OlBhbm5lck5vZGVCYXNlKEF1ZGlvQ29udGV4dEJhc2UmIGNvbnRleHQsIGZsb2F0IHNhbXBsZVJh
dGUpCiAgICAgOiBBdWRpb05vZGUoY29udGV4dCwgc2FtcGxlUmF0ZSkKK3sKK30KKworUGFubmVy
Tm9kZTo6UGFubmVyTm9kZShBdWRpb0NvbnRleHQmIGNvbnRleHQsIGZsb2F0IHNhbXBsZVJhdGUp
CisgICAgOiBQYW5uZXJOb2RlQmFzZShjb250ZXh0LCBzYW1wbGVSYXRlKQogICAgICwgbV9wYW5u
aW5nTW9kZWwoUGFubmluZ01vZGVsVHlwZTo6SFJURikKICAgICAsIG1fbGFzdEdhaW4oLTEuMCkK
ICAgICAsIG1fcG9zaXRpb25YKEF1ZGlvUGFyYW06OmNyZWF0ZShjb250ZXh0LCAicG9zaXRpb25Y
Il9zLCAwLCAtRkxUX01BWCwgRkxUX01BWCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmF1ZGlvL1Bhbm5lck5vZGUuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
YXVkaW8vUGFubmVyTm9kZS5oCmluZGV4IDg0ODBjMjMzMjgwLi4yOWI2NDhkMDYwNyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9QYW5uZXJOb2RlLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9QYW5uZXJOb2RlLmgKQEAgLTI2LDYgKzI2
LDcgQEAKIAogI2lmIEVOQUJMRShXRUJfQVVESU8pCiAKKyNpbmNsdWRlICJBdWRpb0NvbnRleHQu
aCIKICNpbmNsdWRlICJBdWRpb0xpc3RlbmVyLmgiCiAjaW5jbHVkZSAiQXVkaW9Ob2RlLmgiCiAj
aW5jbHVkZSAiQXVkaW9QYXJhbS5oIgpAQCAtNDEsNiArNDIsMTYgQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogCiBjbGFzcyBIUlRGRGF0YWJhc2VMb2FkZXI7CiAKK2NsYXNzIFBhbm5lck5vZGVCYXNl
IDogcHVibGljIEF1ZGlvTm9kZSB7CitwdWJsaWM6CisgICAgdmlydHVhbCB+UGFubmVyTm9kZUJh
c2UoKSA9IGRlZmF1bHQ7CisKKyAgICB2aXJ0dWFsIGZsb2F0IGRvcHBsZXJSYXRlKCkgPSAwOwor
Citwcm90ZWN0ZWQ6CisgICAgUGFubmVyTm9kZUJhc2UoQXVkaW9Db250ZXh0QmFzZSYsIGZsb2F0
IHNhbXBsZVJhdGUpOworfTsKKwogLy8gUGFubmVyTm9kZSBpcyBhbiBBdWRpb05vZGUgd2l0aCBv
bmUgaW5wdXQgYW5kIG9uZSBvdXRwdXQuCiAvLyBJdCBwb3NpdGlvbnMgYSBzb3VuZCBpbiAzRCBz
cGFjZSwgd2l0aCB0aGUgZXhhY3QgZWZmZWN0IGRlcGVuZGVudCBvbiB0aGUgcGFubmluZyBtb2Rl
bC4KIC8vIEl0IGhhcyBhIHBvc2l0aW9uIGFuZCBhbiBvcmllbnRhdGlvbiBpbiAzRCBzcGFjZSB3
aGljaCBpcyByZWxhdGl2ZSB0byB0aGUgcG9zaXRpb24gYW5kIG9yaWVudGF0aW9uIG9mIHRoZSBj
b250ZXh0J3MgQXVkaW9MaXN0ZW5lci4KQEAgLTQ4LDcgKzU5LDcgQEAgY2xhc3MgSFJURkRhdGFi
YXNlTG9hZGVyOwogLy8gQSBjb25lIGVmZmVjdCB3aWxsIGF0dGVudWF0ZSB0aGUgZ2FpbiBhcyB0
aGUgb3JpZW50YXRpb24gbW92ZXMgYXdheSBmcm9tIHRoZSBsaXN0ZW5lci4KIC8vIEFsbCBvZiB0
aGVzZSBlZmZlY3RzIGZvbGxvdyB0aGUgT3BlbkFMIHNwZWNpZmljYXRpb24gdmVyeSBjbG9zZWx5
LgogCi1jbGFzcyBQYW5uZXJOb2RlIGZpbmFsIDogcHVibGljIEF1ZGlvTm9kZSB7CitjbGFzcyBQ
YW5uZXJOb2RlIGZpbmFsIDogcHVibGljIFBhbm5lck5vZGVCYXNlIHsKICAgICBXVEZfTUFLRV9J
U09fQUxMT0NBVEVEKFBhbm5lck5vZGUpOwogcHVibGljOgogICAgIHN0YXRpYyBSZWY8UGFubmVy
Tm9kZT4gY3JlYXRlKEF1ZGlvQ29udGV4dCYgY29udGV4dCwgZmxvYXQgc2FtcGxlUmF0ZSkKQEAg
LTU4LDYgKzY5LDkgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCB+UGFubmVyTm9kZSgpOwogCisg
ICAgQXVkaW9Db250ZXh0JiBjb250ZXh0KCkgeyByZXR1cm4gZG93bmNhc3Q8QXVkaW9Db250ZXh0
PihBdWRpb05vZGU6OmNvbnRleHQoKSk7IH0KKyAgICBjb25zdCBBdWRpb0NvbnRleHQmIGNvbnRl
eHQoKSBjb25zdCB7IHJldHVybiBkb3duY2FzdDxBdWRpb0NvbnRleHQ+KEF1ZGlvTm9kZTo6Y29u
dGV4dCgpKTsgfQorCiAgICAgLy8gQXVkaW9Ob2RlCiAgICAgdm9pZCBwcm9jZXNzKHNpemVfdCBm
cmFtZXNUb1Byb2Nlc3MpIG92ZXJyaWRlOwogICAgIHZvaWQgcHVsbElucHV0cyhzaXplX3QgZnJh
bWVzVG9Qcm9jZXNzKSBvdmVycmlkZTsKQEAgLTExMSw3ICsxMjUsNyBAQCBwdWJsaWM6CiAgICAg
dm9pZCBzZXRDb25lT3V0ZXJHYWluKGRvdWJsZSBhbmdsZSkgeyBtX2NvbmVFZmZlY3Quc2V0T3V0
ZXJHYWluKGFuZ2xlKTsgfQogCiAgICAgdm9pZCBnZXRBemltdXRoRWxldmF0aW9uKGRvdWJsZSog
b3V0QXppbXV0aCwgZG91YmxlKiBvdXRFbGV2YXRpb24pOwotICAgIGZsb2F0IGRvcHBsZXJSYXRl
KCk7CisgICAgZmxvYXQgZG9wcGxlclJhdGUoKSBmaW5hbDsKIAogICAgIC8vIEFjY2Vzc29ycyBm
b3IgZHluYW1pY2FsbHkgY2FsY3VsYXRlZCBnYWluIHZhbHVlcy4KICAgICBBdWRpb1BhcmFtKiBk
aXN0YW5jZUdhaW4oKSB7IHJldHVybiBtX2Rpc3RhbmNlR2Fpbi5nZXQoKTsgfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9QYW5uZXJOb2RlLmlkbCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vUGFubmVyTm9kZS5pZGwKaW5kZXggMDMyOTgzN2Qy
ZjUuLjdiYjkyYzRmOGZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1
ZGlvL1Bhbm5lck5vZGUuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8v
UGFubmVyTm9kZS5pZGwKQEAgLTIyLDI3ICsyMiwxMCBAQAogICogU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotWwotICAg
IENvbmRpdGlvbmFsPVdFQl9BVURJTywKLSAgICBJbXBsZW1lbnRlZEFzPVBhbm5pbmdNb2RlbFR5
cGUKLV0gZW51bSBQYW5uaW5nTW9kZWxUeXBlIHsKLSAgICAiZXF1YWxwb3dlciIsCi0gICAgIkhS
VEYiCi19OwotCi1bCi0gICAgQ29uZGl0aW9uYWw9V0VCX0FVRElPLAotICAgIEltcGxlbWVudGVk
QXM9RGlzdGFuY2VNb2RlbFR5cGUKLV0gZW51bSBEaXN0YW5jZU1vZGVsVHlwZSB7Ci0gICAgImxp
bmVhciIsCi0gICAgImludmVyc2UiLAotICAgICJleHBvbmVudGlhbCIKLX07Ci0KIFsKICAgICBD
b25kaXRpb25hbD1XRUJfQVVESU8sCiAgICAgSlNHZW5lcmF0ZVRvSlNPYmplY3QsCi0gICAgSW50
ZXJmYWNlTmFtZT13ZWJraXRBdWRpb1Bhbm5lck5vZGUsCisgICAgRW5hYmxlZEJ5U2V0dGluZz1N
b2Rlcm5VbnByZWZpeGVkV2ViQXVkaW8sCiBdIGludGVyZmFjZSBQYW5uZXJOb2RlIDogQXVkaW9O
b2RlIHsKICAgICAvLyBEZWZhdWx0IG1vZGVsIGZvciBzdGVyZW8gaXMgSFJURiAKICAgICBhdHRy
aWJ1dGUgUGFubmluZ01vZGVsVHlwZSBwYW5uaW5nTW9kZWw7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1Bhbm5pbmdNb2RlbFR5cGUuaCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViYXVkaW8vUGFubmluZ01vZGVsVHlwZS5oCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwLi5hYjBiMjI3MTJhMQotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vUGFubmluZ01vZGVsVHlwZS5oCkBAIC0wLDAg
KzEsMjcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAsIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5EIEFOWQorICog
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OCisgKiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMKKyAqIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiUGFubmVyLmgi
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1Bhbm5pbmdNb2Rl
bFR5cGUuaWRsIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9QYW5uaW5nTW9kZWxU
eXBlLmlkbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uYmY3ZGY4ZjU1
NDIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1Bh
bm5pbmdNb2RlbFR5cGUuaWRsCkBAIC0wLDAgKzEsMzAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTAsIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9T
RSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRT
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAq
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTgorICogQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTCisgKiBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCitbCisgICAg
Q29uZGl0aW9uYWw9V0VCX0FVRElPLAorXSBlbnVtIFBhbm5pbmdNb2RlbFR5cGUgeworICAgICJl
cXVhbHBvd2VyIiwKKyAgICAiSFJURiIKK307CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmF1ZGlvL1NjcmlwdFByb2Nlc3Nvck5vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJhdWRpby9TY3JpcHRQcm9jZXNzb3JOb2RlLmNwcAppbmRleCA5MWM3NTM3ZTE1
ZS4uNzYxMGIxNTAyNDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVk
aW8vU2NyaXB0UHJvY2Vzc29yTm9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJhdWRpby9TY3JpcHRQcm9jZXNzb3JOb2RlLmNwcApAQCAtNDQsMTIgKzQ0LDEyIEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAogV1RGX01BS0VfSVNPX0FMTE9DQVRFRF9JTVBMKFNjcmlwdFByb2Nl
c3Nvck5vZGUpOwogCi1SZWY8U2NyaXB0UHJvY2Vzc29yTm9kZT4gU2NyaXB0UHJvY2Vzc29yTm9k
ZTo6Y3JlYXRlKEF1ZGlvQ29udGV4dCYgY29udGV4dCwgZmxvYXQgc2FtcGxlUmF0ZSwgc2l6ZV90
IGJ1ZmZlclNpemUsIHVuc2lnbmVkIG51bWJlck9mSW5wdXRDaGFubmVscywgdW5zaWduZWQgbnVt
YmVyT2ZPdXRwdXRDaGFubmVscykKK1JlZjxTY3JpcHRQcm9jZXNzb3JOb2RlPiBTY3JpcHRQcm9j
ZXNzb3JOb2RlOjpjcmVhdGUoQXVkaW9Db250ZXh0QmFzZSYgY29udGV4dCwgZmxvYXQgc2FtcGxl
UmF0ZSwgc2l6ZV90IGJ1ZmZlclNpemUsIHVuc2lnbmVkIG51bWJlck9mSW5wdXRDaGFubmVscywg
dW5zaWduZWQgbnVtYmVyT2ZPdXRwdXRDaGFubmVscykKIHsKICAgICByZXR1cm4gYWRvcHRSZWYo
Km5ldyBTY3JpcHRQcm9jZXNzb3JOb2RlKGNvbnRleHQsIHNhbXBsZVJhdGUsIGJ1ZmZlclNpemUs
IG51bWJlck9mSW5wdXRDaGFubmVscywgbnVtYmVyT2ZPdXRwdXRDaGFubmVscykpOwogfQogCi1T
Y3JpcHRQcm9jZXNzb3JOb2RlOjpTY3JpcHRQcm9jZXNzb3JOb2RlKEF1ZGlvQ29udGV4dCYgY29u
dGV4dCwgZmxvYXQgc2FtcGxlUmF0ZSwgc2l6ZV90IGJ1ZmZlclNpemUsIHVuc2lnbmVkIG51bWJl
ck9mSW5wdXRDaGFubmVscywgdW5zaWduZWQgbnVtYmVyT2ZPdXRwdXRDaGFubmVscykKK1Njcmlw
dFByb2Nlc3Nvck5vZGU6OlNjcmlwdFByb2Nlc3Nvck5vZGUoQXVkaW9Db250ZXh0QmFzZSYgY29u
dGV4dCwgZmxvYXQgc2FtcGxlUmF0ZSwgc2l6ZV90IGJ1ZmZlclNpemUsIHVuc2lnbmVkIG51bWJl
ck9mSW5wdXRDaGFubmVscywgdW5zaWduZWQgbnVtYmVyT2ZPdXRwdXRDaGFubmVscykKICAgICA6
IEF1ZGlvTm9kZShjb250ZXh0LCBzYW1wbGVSYXRlKQogICAgICwgQWN0aXZlRE9NT2JqZWN0KGNv
bnRleHQuc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKQogICAgICwgbV9kb3VibGVCdWZmZXJJbmRl
eCgwKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9TY3JpcHRQ
cm9jZXNzb3JOb2RlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1NjcmlwdFBy
b2Nlc3Nvck5vZGUuaAppbmRleCA1YTRlN2NlNDc1Mi4uNGMxNGEwNzU3ZGYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vU2NyaXB0UHJvY2Vzc29yTm9kZS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vU2NyaXB0UHJvY2Vzc29yTm9kZS5o
CkBAIC01Miw3ICs1Miw3IEBAIHB1YmxpYzoKICAgICAvLyBUaGlzIHZhbHVlIGNvbnRyb2xzIGhv
dyBmcmVxdWVudGx5IHRoZSBvbmF1ZGlvcHJvY2VzcyBldmVudCBoYW5kbGVyIGlzIGNhbGxlZCBh
bmQgaG93IG1hbnkgc2FtcGxlLWZyYW1lcyBuZWVkIHRvIGJlIHByb2Nlc3NlZCBlYWNoIGNhbGwu
CiAgICAgLy8gTG93ZXIgbnVtYmVycyBmb3IgYnVmZmVyU2l6ZSB3aWxsIHJlc3VsdCBpbiBhIGxv
d2VyIChiZXR0ZXIpIGxhdGVuY3kuIEhpZ2hlciBudW1iZXJzIHdpbGwgYmUgbmVjZXNzYXJ5IHRv
IGF2b2lkIGF1ZGlvIGJyZWFrdXAgYW5kIGdsaXRjaGVzLgogICAgIC8vIFRoZSB2YWx1ZSBjaG9z
ZW4gbXVzdCBjYXJlZnVsbHkgYmFsYW5jZSBiZXR3ZWVuIGxhdGVuY3kgYW5kIGF1ZGlvIHF1YWxp
dHkuCi0gICAgc3RhdGljIFJlZjxTY3JpcHRQcm9jZXNzb3JOb2RlPiBjcmVhdGUoQXVkaW9Db250
ZXh0JiwgZmxvYXQgc2FtcGxlUmF0ZSwgc2l6ZV90IGJ1ZmZlclNpemUsIHVuc2lnbmVkIG51bWJl
ck9mSW5wdXRDaGFubmVscywgdW5zaWduZWQgbnVtYmVyT2ZPdXRwdXRDaGFubmVscyk7CisgICAg
c3RhdGljIFJlZjxTY3JpcHRQcm9jZXNzb3JOb2RlPiBjcmVhdGUoQXVkaW9Db250ZXh0QmFzZSYs
IGZsb2F0IHNhbXBsZVJhdGUsIHNpemVfdCBidWZmZXJTaXplLCB1bnNpZ25lZCBudW1iZXJPZklu
cHV0Q2hhbm5lbHMsIHVuc2lnbmVkIG51bWJlck9mT3V0cHV0Q2hhbm5lbHMpOwogCiAgICAgdmly
dHVhbCB+U2NyaXB0UHJvY2Vzc29yTm9kZSgpOwogCkBAIC03MSw3ICs3MSw3IEBAIHByaXZhdGU6
CiAgICAgZG91YmxlIHRhaWxUaW1lKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgZG91YmxlIGxhdGVu
Y3lUaW1lKCkgY29uc3Qgb3ZlcnJpZGU7CiAKLSAgICBTY3JpcHRQcm9jZXNzb3JOb2RlKEF1ZGlv
Q29udGV4dCYsIGZsb2F0IHNhbXBsZVJhdGUsIHNpemVfdCBidWZmZXJTaXplLCB1bnNpZ25lZCBu
dW1iZXJPZklucHV0Q2hhbm5lbHMsIHVuc2lnbmVkIG51bWJlck9mT3V0cHV0Q2hhbm5lbHMpOwor
ICAgIFNjcmlwdFByb2Nlc3Nvck5vZGUoQXVkaW9Db250ZXh0QmFzZSYsIGZsb2F0IHNhbXBsZVJh
dGUsIHNpemVfdCBidWZmZXJTaXplLCB1bnNpZ25lZCBudW1iZXJPZklucHV0Q2hhbm5lbHMsIHVu
c2lnbmVkIG51bWJlck9mT3V0cHV0Q2hhbm5lbHMpOwogCiAgICAgdm9pZCBmaXJlUHJvY2Vzc0V2
ZW50KCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vV2F2
ZVNoYXBlck5vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9XYXZlU2hh
cGVyTm9kZS5jcHAKaW5kZXggNmU3ZThkZDFjOWMuLmFlNGFmOWYyMzJmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1dhdmVTaGFwZXJOb2RlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1dhdmVTaGFwZXJOb2RlLmNwcApAQCAtMzUs
NyArMzUsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFdURl9NQUtFX0lTT19BTExPQ0FURURf
SU1QTChXYXZlU2hhcGVyTm9kZSk7CiAKLVdhdmVTaGFwZXJOb2RlOjpXYXZlU2hhcGVyTm9kZShB
dWRpb0NvbnRleHQmIGNvbnRleHQpCitXYXZlU2hhcGVyTm9kZTo6V2F2ZVNoYXBlck5vZGUoQXVk
aW9Db250ZXh0QmFzZSYgY29udGV4dCkKICAgICA6IEF1ZGlvQmFzaWNQcm9jZXNzb3JOb2RlKGNv
bnRleHQsIGNvbnRleHQuc2FtcGxlUmF0ZSgpKQogewogICAgIHNldE5vZGVUeXBlKE5vZGVUeXBl
V2F2ZVNoYXBlcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlv
L1dhdmVTaGFwZXJOb2RlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1dhdmVT
aGFwZXJOb2RlLmgKaW5kZXggZjQ5ZTM0OWJjM2QuLjVmNDkzMjhiMjJkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1dhdmVTaGFwZXJOb2RlLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9XYXZlU2hhcGVyTm9kZS5oCkBAIC0zMyw3ICsz
Myw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIFdhdmVTaGFwZXJOb2RlIGZpbmFsIDog
cHVibGljIEF1ZGlvQmFzaWNQcm9jZXNzb3JOb2RlIHsKICAgICBXVEZfTUFLRV9JU09fQUxMT0NB
VEVEKFdhdmVTaGFwZXJOb2RlKTsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPFdhdmVTaGFwZXJO
b2RlPiBjcmVhdGUoQXVkaW9Db250ZXh0JiBjb250ZXh0KQorICAgIHN0YXRpYyBSZWY8V2F2ZVNo
YXBlck5vZGU+IGNyZWF0ZShBdWRpb0NvbnRleHRCYXNlJiBjb250ZXh0KQogICAgIHsKICAgICAg
ICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgV2F2ZVNoYXBlck5vZGUoY29udGV4dCkpOwogICAgIH0K
QEAgLTQ5LDcgKzQ5LDcgQEAgcHVibGljOgogICAgIGRvdWJsZSBsYXRlbmN5KCkgY29uc3QgeyBy
ZXR1cm4gbGF0ZW5jeVRpbWUoKTsgfQogCiBwcml2YXRlOiAgICAKLSAgICBleHBsaWNpdCBXYXZl
U2hhcGVyTm9kZShBdWRpb0NvbnRleHQmKTsgICAgCisgICAgZXhwbGljaXQgV2F2ZVNoYXBlck5v
ZGUoQXVkaW9Db250ZXh0QmFzZSYpOwogCiAgICAgV2F2ZVNoYXBlclByb2Nlc3Nvciogd2F2ZVNo
YXBlclByb2Nlc3NvcigpIHsgcmV0dXJuIHN0YXRpY19jYXN0PFdhdmVTaGFwZXJQcm9jZXNzb3Iq
Pihwcm9jZXNzb3IoKSk7IH0KIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmF1ZGlvL1dlYktpdEF1ZGlvQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmF1ZGlvL1dlYktpdEF1ZGlvQ29udGV4dC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAuLmMyMGYxYjdlMGI0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJhdWRpby9XZWJLaXRBdWRpb0NvbnRleHQuY3BwCkBAIC0wLDAgKzEs
MTM5NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5EIEFOWQorICogRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
CisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OCisgKiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMKKyAqIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2lmIEVOQUJMRShXRUJf
QVVESU8pCisKKyNpbmNsdWRlICJXZWJLaXRBdWRpb0NvbnRleHQuaCIKKworI2luY2x1ZGUgIkFu
YWx5c2VyTm9kZS5oIgorI2luY2x1ZGUgIkFzeW5jQXVkaW9EZWNvZGVyLmgiCisjaW5jbHVkZSAi
QXVkaW9CdWZmZXIuaCIKKyNpbmNsdWRlICJBdWRpb0J1ZmZlckNhbGxiYWNrLmgiCisjaW5jbHVk
ZSAiQXVkaW9CdWZmZXJTb3VyY2VOb2RlLmgiCisjaW5jbHVkZSAiQXVkaW9MaXN0ZW5lci5oIgor
I2luY2x1ZGUgIkF1ZGlvTm9kZUlucHV0LmgiCisjaW5jbHVkZSAiQXVkaW9Ob2RlT3V0cHV0Lmgi
CisjaW5jbHVkZSAiQXVkaW9TZXNzaW9uLmgiCisjaW5jbHVkZSAiQmlxdWFkRmlsdGVyTm9kZS5o
IgorI2luY2x1ZGUgIkNoYW5uZWxNZXJnZXJOb2RlLmgiCisjaW5jbHVkZSAiQ2hhbm5lbFNwbGl0
dGVyTm9kZS5oIgorI2luY2x1ZGUgIkNvbnZvbHZlck5vZGUuaCIKKyNpbmNsdWRlICJEZWZhdWx0
QXVkaW9EZXN0aW5hdGlvbk5vZGUuaCIKKyNpbmNsdWRlICJEZWxheU5vZGUuaCIKKyNpbmNsdWRl
ICJEb2N1bWVudC5oIgorI2luY2x1ZGUgIkR5bmFtaWNzQ29tcHJlc3Nvck5vZGUuaCIKKyNpbmNs
dWRlICJFdmVudE5hbWVzLmgiCisjaW5jbHVkZSAiRkZURnJhbWUuaCIKKyNpbmNsdWRlICJGcmFt
ZS5oIgorI2luY2x1ZGUgIkZyYW1lTG9hZGVyLmgiCisjaW5jbHVkZSAiR2Fpbk5vZGUuaCIKKyNp
bmNsdWRlICJHZW5lcmljRXZlbnRRdWV1ZS5oIgorI2luY2x1ZGUgIkhSVEZEYXRhYmFzZUxvYWRl
ci5oIgorI2luY2x1ZGUgIkhSVEZQYW5uZXIuaCIKKyNpbmNsdWRlICJKU0RPTVByb21pc2VEZWZl
cnJlZC5oIgorI2luY2x1ZGUgIkxvZ2dpbmcuaCIKKyNpbmNsdWRlICJOZXR3b3JraW5nQ29udGV4
dC5oIgorI2luY2x1ZGUgIk9mZmxpbmVBdWRpb0NvbXBsZXRpb25FdmVudC5oIgorI2luY2x1ZGUg
Ik9mZmxpbmVBdWRpb0Rlc3RpbmF0aW9uTm9kZS5oIgorI2luY2x1ZGUgIk9zY2lsbGF0b3JOb2Rl
LmgiCisjaW5jbHVkZSAiUGFnZS5oIgorI2luY2x1ZGUgIlBlcmlvZGljV2F2ZS5oIgorI2luY2x1
ZGUgIlBsYXRmb3JtTWVkaWFTZXNzaW9uTWFuYWdlci5oIgorI2luY2x1ZGUgIlNjcmlwdENvbnRy
b2xsZXIuaCIKKyNpbmNsdWRlICJTY3JpcHRQcm9jZXNzb3JOb2RlLmgiCisjaW5jbHVkZSAiV2F2
ZVNoYXBlck5vZGUuaCIKKyNpbmNsdWRlICJXZWJLaXRBdWRpb1Bhbm5lck5vZGUuaCIKKyNpbmNs
dWRlIDxKYXZhU2NyaXB0Q29yZS9TY3JpcHRDYWxsU3RhY2suaD4KKworI2lmIEVOQUJMRShNRURJ
QV9TVFJFQU0pCisjaW5jbHVkZSAiTWVkaWFTdHJlYW0uaCIKKyNpbmNsdWRlICJNZWRpYVN0cmVh
bUF1ZGlvRGVzdGluYXRpb25Ob2RlLmgiCisjaW5jbHVkZSAiTWVkaWFTdHJlYW1BdWRpb1NvdXJj
ZS5oIgorI2luY2x1ZGUgIk1lZGlhU3RyZWFtQXVkaW9Tb3VyY2VOb2RlLmgiCisjZW5kaWYKKwor
I2lmIEVOQUJMRShWSURFTykKKyNpbmNsdWRlICJIVE1MTWVkaWFFbGVtZW50LmgiCisjaW5jbHVk
ZSAiTWVkaWFFbGVtZW50QXVkaW9Tb3VyY2VOb2RlLmgiCisjZW5kaWYKKworI2lmIERFQlVHX0FV
RElPTk9ERV9SRUZFUkVOQ0VTCisjaW5jbHVkZSA8c3RkaW8uaD4KKyNlbmRpZgorCisjaWYgVVNF
KEdTVFJFQU1FUikKKyNpbmNsdWRlICJHU3RyZWFtZXJDb21tb24uaCIKKyNlbmRpZgorCisjaWYg
UExBVEZPUk0oSU9TX0ZBTUlMWSkKKyNpbmNsdWRlICJTY3JpcHRDb250cm9sbGVyLmgiCisjaW5j
bHVkZSAiU2V0dGluZ3MuaCIKKyNlbmRpZgorCisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvQXJy
YXlCdWZmZXIuaD4KKyNpbmNsdWRlIDx3dGYvQXRvbWljcy5oPgorI2luY2x1ZGUgPHd0Zi9Jc29N
YWxsb2NJbmxpbmVzLmg+CisjaW5jbHVkZSA8d3RmL01haW5UaHJlYWQuaD4KKyNpbmNsdWRlIDx3
dGYvUmVmLmg+CisjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KKyNpbmNsdWRlIDx3dGYvU2Nv
cGUuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KKworY29uc3QgdW5zaWduZWQg
TWF4UGVyaW9kaWNXYXZlTGVuZ3RoID0gNDA5NjsKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCisj
ZGVmaW5lIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoZm10LCAuLi4pIFJFTEVBU0VfTE9HX0lGKGRv
Y3VtZW50KCkgJiYgZG9jdW1lbnQoKS0+cGFnZSgpICYmIGRvY3VtZW50KCktPnBhZ2UoKS0+aXNB
bHdheXNPbkxvZ2dpbmdBbGxvd2VkKCksIE1lZGlhLCAiJXAgLSBXZWJLaXRBdWRpb0NvbnRleHQ6
OiIgZm10LCB0aGlzLCAjI19fVkFfQVJHU19fKQorCitib29sIFdlYktpdEF1ZGlvQ29udGV4dDo6
aXNTYW1wbGVSYXRlUmFuZ2VHb29kKGZsb2F0IHNhbXBsZVJhdGUpCit7CisgICAgLy8gRklYTUU6
IEl0IHdvdWxkIGJlIG5pY2UgaWYgdGhlIG1pbmltdW0gc2FtcGxlLXJhdGUgY291bGQgYmUgbGVz
cyB0aGFuIDQ0LjFLSHosCisgICAgLy8gYnV0IHRoYXQgd2lsbCByZXF1aXJlIHNvbWUgZml4ZXMg
aW4gSFJURlBhbm5lcjo6ZmZ0U2l6ZUZvclNhbXBsZVJhdGUoKSwgYW5kIHNvbWUgdGVzdGluZyB0
aGVyZS4KKyAgICByZXR1cm4gc2FtcGxlUmF0ZSA+PSA0NDEwMCAmJiBzYW1wbGVSYXRlIDw9IDk2
MDAwOworfQorCisjaWYgT1MoV0lORE9XUykKKy8vIERvbid0IGFsbG93IG1vcmUgdGhhbiB0aGlz
IG51bWJlciBvZiBzaW11bHRhbmVvdXMgQXVkaW9Db250ZXh0cyB0YWxraW5nIHRvIGhhcmR3YXJl
LgorY29uc3RleHByIHVuc2lnbmVkIG1heEhhcmR3YXJlQ29udGV4dHMgPSA0OworI2VuZGlmCit1
bnNpZ25lZCBXZWJLaXRBdWRpb0NvbnRleHQ6OnNfaGFyZHdhcmVDb250ZXh0Q291bnQgPSAwOwor
CitFeGNlcHRpb25PcjxSZWY8V2ViS2l0QXVkaW9Db250ZXh0Pj4gV2ViS2l0QXVkaW9Db250ZXh0
OjpjcmVhdGUoRG9jdW1lbnQmIGRvY3VtZW50KQoreworICAgIEFTU0VSVChpc01haW5UaHJlYWQo
KSk7CisjaWYgT1MoV0lORE9XUykKKyAgICBpZiAoc19oYXJkd2FyZUNvbnRleHRDb3VudCA+PSBt
YXhIYXJkd2FyZUNvbnRleHRzKQorICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgUXVvdGFFeGNl
ZWRlZEVycm9yIH07CisjZW5kaWYKKworICAgIGF1dG8gYXVkaW9Db250ZXh0ID0gYWRvcHRSZWYo
Km5ldyBXZWJLaXRBdWRpb0NvbnRleHQoZG9jdW1lbnQpKTsKKyAgICBhdWRpb0NvbnRleHQtPnN1
c3BlbmRJZk5lZWRlZCgpOworICAgIHJldHVybiBhdWRpb0NvbnRleHQ7Cit9CisKKy8vIENvbnN0
cnVjdG9yIGZvciByZW5kZXJpbmcgdG8gdGhlIGF1ZGlvIGhhcmR3YXJlLgorV2ViS2l0QXVkaW9D
b250ZXh0OjpXZWJLaXRBdWRpb0NvbnRleHQoRG9jdW1lbnQmIGRvY3VtZW50KQorICAgIDogQXVk
aW9Db250ZXh0QmFzZShkb2N1bWVudCkKKyNpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKKyAgICAs
IG1fbG9nZ2VyKGRvY3VtZW50LmxvZ2dlcigpKQorICAgICwgbV9sb2dJZGVudGlmaWVyKHVuaXF1
ZUxvZ0lkZW50aWZpZXIoKSkKKyNlbmRpZgorICAgICwgbV9tZWRpYVNlc3Npb24oUGxhdGZvcm1N
ZWRpYVNlc3Npb246OmNyZWF0ZShQbGF0Zm9ybU1lZGlhU2Vzc2lvbk1hbmFnZXI6OnNoYXJlZE1h
bmFnZXIoKSwgKnRoaXMpKQorICAgICwgbV9ldmVudFF1ZXVlKE1haW5UaHJlYWRHZW5lcmljRXZl
bnRRdWV1ZTo6Y3JlYXRlKCp0aGlzKSkKK3sKKyAgICAvLyBBY2NvcmRpbmcgdG8gc3BlYyBBdWRp
b0NvbnRleHQgbXVzdCBkaWUgb25seSBhZnRlciBwYWdlIG5hdmlnYXRlLgorICAgIC8vIExldHMg
bWFyayBpdCBhcyBBY3RpdmVET01PYmplY3Qgd2l0aCBwZW5kaW5nIGFjdGl2aXR5IGFuZCB1bm1h
cmsgaXQgaW4gY2xlYXIgbWV0aG9kLgorICAgIG1ha2VQZW5kaW5nQWN0aXZpdHkoKTsKKworICAg
IGNvbnN0cnVjdENvbW1vbigpOworCisgICAgbV9kZXN0aW5hdGlvbk5vZGUgPSBEZWZhdWx0QXVk
aW9EZXN0aW5hdGlvbk5vZGU6OmNyZWF0ZSgqdGhpcyk7CisKKyAgICAvLyBJbml0aWFsaXplIHRo
ZSBkZXN0aW5hdGlvbiBub2RlJ3MgbXV0ZWQgc3RhdGUgdG8gbWF0Y2ggdGhlIHBhZ2UncyBjdXJy
ZW50IG11dGVkIHN0YXRlLgorICAgIHBhZ2VNdXRlZFN0YXRlRGlkQ2hhbmdlKCk7CisKKyAgICBk
b2N1bWVudC5hZGRBdWRpb1Byb2R1Y2VyKCp0aGlzKTsKKyAgICBkb2N1bWVudC5yZWdpc3RlckZv
clZpc2liaWxpdHlTdGF0ZUNoYW5nZWRDYWxsYmFja3MoKnRoaXMpOworfQorCisvLyBDb25zdHJ1
Y3RvciBmb3Igb2ZmbGluZSAobm9uLXJlYWx0aW1lKSByZW5kZXJpbmcuCitXZWJLaXRBdWRpb0Nv
bnRleHQ6OldlYktpdEF1ZGlvQ29udGV4dChEb2N1bWVudCYgZG9jdW1lbnQsIEF1ZGlvQnVmZmVy
KiByZW5kZXJUYXJnZXQpCisgICAgOiBBdWRpb0NvbnRleHRCYXNlKGRvY3VtZW50KQorI2lmICFS
RUxFQVNFX0xPR19ESVNBQkxFRAorICAgICwgbV9sb2dnZXIoZG9jdW1lbnQubG9nZ2VyKCkpCisg
ICAgLCBtX2xvZ0lkZW50aWZpZXIodW5pcXVlTG9nSWRlbnRpZmllcigpKQorI2VuZGlmCisgICAg
LCBtX2lzT2ZmbGluZUNvbnRleHQodHJ1ZSkKKyAgICAsIG1fbWVkaWFTZXNzaW9uKFBsYXRmb3Jt
TWVkaWFTZXNzaW9uOjpjcmVhdGUoUGxhdGZvcm1NZWRpYVNlc3Npb25NYW5hZ2VyOjpzaGFyZWRN
YW5hZ2VyKCksICp0aGlzKSkKKyAgICAsIG1fZXZlbnRRdWV1ZShNYWluVGhyZWFkR2VuZXJpY0V2
ZW50UXVldWU6OmNyZWF0ZSgqdGhpcykpCisgICAgLCBtX3JlbmRlclRhcmdldChyZW5kZXJUYXJn
ZXQpCit7CisgICAgY29uc3RydWN0Q29tbW9uKCk7CisKKyAgICAvLyBDcmVhdGUgYSBuZXcgZGVz
dGluYXRpb24gZm9yIG9mZmxpbmUgcmVuZGVyaW5nLgorICAgIG1fZGVzdGluYXRpb25Ob2RlID0g
T2ZmbGluZUF1ZGlvRGVzdGluYXRpb25Ob2RlOjpjcmVhdGUoKnRoaXMsIG1fcmVuZGVyVGFyZ2V0
LmdldCgpKTsKK30KKwordm9pZCBXZWJLaXRBdWRpb0NvbnRleHQ6OmNvbnN0cnVjdENvbW1vbigp
Cit7CisgICAgRkZURnJhbWU6OmluaXRpYWxpemUoKTsKKworICAgIG1fbGlzdGVuZXIgPSBBdWRp
b0xpc3RlbmVyOjpjcmVhdGUoKTsKKworICAgIEFTU0VSVChkb2N1bWVudCgpKTsKKyAgICBpZiAo
ZG9jdW1lbnQoKS0+YXVkaW9QbGF5YmFja1JlcXVpcmVzVXNlckdlc3R1cmUoKSkKKyAgICAgICAg
YWRkQmVoYXZpb3JSZXN0cmljdGlvbihSZXF1aXJlVXNlckdlc3R1cmVGb3JBdWRpb1N0YXJ0UmVz
dHJpY3Rpb24pOworICAgIGVsc2UKKyAgICAgICAgbV9yZXN0cmljdGlvbnMgPSBOb1Jlc3RyaWN0
aW9uczsKKworI2lmIFBMQVRGT1JNKENPQ09BKQorICAgIGFkZEJlaGF2aW9yUmVzdHJpY3Rpb24o
UmVxdWlyZVBhZ2VDb25zZW50Rm9yQXVkaW9TdGFydFJlc3RyaWN0aW9uKTsKKyNlbmRpZgorfQor
CitXZWJLaXRBdWRpb0NvbnRleHQ6On5XZWJLaXRBdWRpb0NvbnRleHQoKQoreworI2lmIERFQlVH
X0FVRElPTk9ERV9SRUZFUkVOQ0VTCisgICAgZnByaW50ZihzdGRlcnIsICIlcDogV2ViS2l0QXVk
aW9Db250ZXh0Ojp+V2ViS2l0QXVkaW9Db250ZXh0KClcbiIsIHRoaXMpOworI2VuZGlmCisgICAg
QVNTRVJUKCFtX2lzSW5pdGlhbGl6ZWQpOworICAgIEFTU0VSVChtX2lzU3RvcFNjaGVkdWxlZCk7
CisgICAgQVNTRVJUKG1fbm9kZXNUb0RlbGV0ZS5pc0VtcHR5KCkpOworICAgIEFTU0VSVChtX3Jl
ZmVyZW5jZWROb2Rlcy5pc0VtcHR5KCkpOworICAgIEFTU0VSVChtX2ZpbmlzaGVkTm9kZXMuaXNF
bXB0eSgpKTsgLy8gRklYTUUgKGJ1ZyAxMDU4NzApOiBUaGlzIGFzc2VydGlvbiBmYWlscyBvbiB0
ZXN0cyBzb21ldGltZXMuCisgICAgQVNTRVJUKG1fYXV0b21hdGljUHVsbE5vZGVzLmlzRW1wdHko
KSk7CisgICAgaWYgKG1fYXV0b21hdGljUHVsbE5vZGVzTmVlZFVwZGF0aW5nKQorICAgICAgICBt
X3JlbmRlcmluZ0F1dG9tYXRpY1B1bGxOb2Rlcy5yZXNpemUobV9hdXRvbWF0aWNQdWxsTm9kZXMu
c2l6ZSgpKTsKKyAgICBBU1NFUlQobV9yZW5kZXJpbmdBdXRvbWF0aWNQdWxsTm9kZXMuaXNFbXB0
eSgpKTsKKyAgICAvLyBGSVhNRTogQ2FuIHdlIGFzc2VydCB0aGF0IG1fZGVmZXJyZWRGaW5pc2hE
ZXJlZkxpc3QgaXMgZW1wdHk/CisKKyAgICBpZiAoIWlzT2ZmbGluZUNvbnRleHQoKSAmJiBzY3Jp
cHRFeGVjdXRpb25Db250ZXh0KCkpIHsKKyAgICAgICAgZG9jdW1lbnQoKS0+cmVtb3ZlQXVkaW9Q
cm9kdWNlcigqdGhpcyk7CisgICAgICAgIGRvY3VtZW50KCktPnVucmVnaXN0ZXJGb3JWaXNpYmls
aXR5U3RhdGVDaGFuZ2VkQ2FsbGJhY2tzKCp0aGlzKTsKKyAgICB9Cit9CisKK3ZvaWQgV2ViS2l0
QXVkaW9Db250ZXh0OjpsYXp5SW5pdGlhbGl6ZSgpCit7CisgICAgQVNTRVJUKCFtX2lzU3RvcFNj
aGVkdWxlZCk7CisKKyAgICBpZiAobV9pc0luaXRpYWxpemVkKQorICAgICAgICByZXR1cm47CisK
KyAgICAvLyBEb24ndCBhbGxvdyB0aGUgY29udGV4dCB0byBpbml0aWFsaXplIGEgc2Vjb25kIHRp
bWUgYWZ0ZXIgaXQncyBhbHJlYWR5IGJlZW4gZXhwbGljaXRseSB1bmluaXRpYWxpemVkLgorICAg
IEFTU0VSVCghbV9pc0F1ZGlvVGhyZWFkRmluaXNoZWQpOworICAgIGlmIChtX2lzQXVkaW9UaHJl
YWRGaW5pc2hlZCkKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKG1fZGVzdGluYXRpb25Ob2Rl
KSB7CisgICAgICAgIG1fZGVzdGluYXRpb25Ob2RlLT5pbml0aWFsaXplKCk7CisKKyAgICAgICAg
aWYgKCFpc09mZmxpbmVDb250ZXh0KCkpIHsKKyAgICAgICAgICAgIC8vIFRoaXMgc3RhcnRzIHRo
ZSBhdWRpbyB0aHJlYWQuIFRoZSBkZXN0aW5hdGlvbiBub2RlJ3MgcHJvdmlkZUlucHV0KCkgbWV0
aG9kIHdpbGwgbm93IGJlIGNhbGxlZCByZXBlYXRlZGx5IHRvIHJlbmRlciBhdWRpby4KKyAgICAg
ICAgICAgIC8vIEVhY2ggdGltZSBwcm92aWRlSW5wdXQoKSBpcyBjYWxsZWQsIGEgcG9ydGlvbiBv
ZiB0aGUgYXVkaW8gc3RyZWFtIGlzIHJlbmRlcmVkLiBMZXQncyBjYWxsIHRoaXMgdGltZSBwZXJp
b2QgYSAicmVuZGVyIHF1YW50dW0iLgorICAgICAgICAgICAgLy8gTk9URTogZm9yIG5vdyBkZWZh
dWx0IEF1ZGlvQ29udGV4dCBkb2VzIG5vdCBuZWVkIGFuIGV4cGxpY2l0IHN0YXJ0UmVuZGVyaW5n
KCkgY2FsbCBmcm9tIEphdmFTY3JpcHQuCisgICAgICAgICAgICAvLyBXZSBtYXkgd2FudCB0byBj
b25zaWRlciByZXF1aXJpbmcgaXQgZm9yIHN5bW1ldHJ5IHdpdGggT2ZmbGluZUF1ZGlvQ29udGV4
dC4KKyAgICAgICAgICAgIHN0YXJ0UmVuZGVyaW5nKCk7CisgICAgICAgICAgICArK3NfaGFyZHdh
cmVDb250ZXh0Q291bnQ7CisgICAgICAgIH0KKyAgICB9CisgICAgbV9pc0luaXRpYWxpemVkID0g
dHJ1ZTsKK30KKwordm9pZCBXZWJLaXRBdWRpb0NvbnRleHQ6OmNsZWFyKCkKK3sKKyAgICBSZWY8
V2ViS2l0QXVkaW9Db250ZXh0PiBwcm90ZWN0ZWRUaGlzKCp0aGlzKTsKKworICAgIC8vIFdlIGhh
dmUgdG8gcmVsZWFzZSBvdXIgcmVmZXJlbmNlIHRvIHRoZSBkZXN0aW5hdGlvbiBub2RlIGJlZm9y
ZSB0aGUgY29udGV4dCB3aWxsIGV2ZXIgYmUgZGVsZXRlZCBzaW5jZSB0aGUgZGVzdGluYXRpb24g
bm9kZSBob2xkcyBhIHJlZmVyZW5jZSB0byB0aGUgY29udGV4dC4KKyAgICBpZiAobV9kZXN0aW5h
dGlvbk5vZGUpCisgICAgICAgIG1fZGVzdGluYXRpb25Ob2RlID0gbnVsbHB0cjsKKworICAgIC8v
IEF1ZGlvIHRocmVhZCBpcyBkZWFkLiBOb2JvZHkgd2lsbCBzY2hlZHVsZSBub2RlIGRlbGV0aW9u
IGFjdGlvbi4gTGV0J3MgZG8gaXQgb3Vyc2VsdmVzLgorICAgIGRvIHsKKyAgICAgICAgZGVsZXRl
TWFya2VkTm9kZXMoKTsKKyAgICAgICAgbV9ub2Rlc1RvRGVsZXRlLmFwcGVuZFZlY3RvcihtX25v
ZGVzTWFya2VkRm9yRGVsZXRpb24pOworICAgICAgICBtX25vZGVzTWFya2VkRm9yRGVsZXRpb24u
Y2xlYXIoKTsKKyAgICB9IHdoaWxlIChtX25vZGVzVG9EZWxldGUuc2l6ZSgpKTsKKworICAgIGNs
ZWFyUGVuZGluZ0FjdGl2aXR5KCk7Cit9CisKK3ZvaWQgV2ViS2l0QXVkaW9Db250ZXh0Ojp1bmlu
aXRpYWxpemUoKQoreworICAgIEFMV0FZU19MT0coTE9HSURFTlRJRklFUik7CisKKyAgICBBU1NF
UlQoaXNNYWluVGhyZWFkKCkpOworCisgICAgaWYgKCFtX2lzSW5pdGlhbGl6ZWQpCisgICAgICAg
IHJldHVybjsKKworICAgIC8vIFRoaXMgc3RvcHMgdGhlIGF1ZGlvIHRocmVhZCBhbmQgYWxsIGF1
ZGlvIHJlbmRlcmluZy4KKyAgICBpZiAobV9kZXN0aW5hdGlvbk5vZGUpCisgICAgICAgIG1fZGVz
dGluYXRpb25Ob2RlLT51bmluaXRpYWxpemUoKTsKKworICAgIC8vIERvbid0IGFsbG93IHRoZSBj
b250ZXh0IHRvIGluaXRpYWxpemUgYSBzZWNvbmQgdGltZSBhZnRlciBpdCdzIGFscmVhZHkgYmVl
biBleHBsaWNpdGx5IHVuaW5pdGlhbGl6ZWQuCisgICAgbV9pc0F1ZGlvVGhyZWFkRmluaXNoZWQg
PSB0cnVlOworCisgICAgaWYgKCFpc09mZmxpbmVDb250ZXh0KCkpIHsKKyAgICAgICAgQVNTRVJU
KHNfaGFyZHdhcmVDb250ZXh0Q291bnQpOworICAgICAgICAtLXNfaGFyZHdhcmVDb250ZXh0Q291
bnQ7CisKKyAgICAgICAgLy8gT2ZmbGluZSBjb250ZXh0cyBtb3ZlIHRvICdDbG9zZWQnIHN0YXRl
IHdoZW4gZGlzcGF0Y2hpbmcgdGhlIGNvbXBsZXRpb24gZXZlbnQuCisgICAgICAgIHNldFN0YXRl
KFN0YXRlOjpDbG9zZWQpOworICAgIH0KKworICAgIC8vIEdldCByaWQgb2YgdGhlIHNvdXJjZXMg
d2hpY2ggbWF5IHN0aWxsIGJlIHBsYXlpbmcuCisgICAgZGVyZWZVbmZpbmlzaGVkU291cmNlTm9k
ZXMoKTsKKworICAgIG1faXNJbml0aWFsaXplZCA9IGZhbHNlOworfQorCitib29sIFdlYktpdEF1
ZGlvQ29udGV4dDo6aXNJbml0aWFsaXplZCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1faXNJbml0
aWFsaXplZDsKK30KKwordm9pZCBXZWJLaXRBdWRpb0NvbnRleHQ6OmFkZFJlYWN0aW9uKFN0YXRl
IHN0YXRlLCBET01Qcm9taXNlRGVmZXJyZWQ8dm9pZD4mJiBwcm9taXNlKQoreworICAgIHNpemVf
dCBzdGF0ZUluZGV4ID0gc3RhdGljX2Nhc3Q8c2l6ZV90PihzdGF0ZSk7CisgICAgaWYgKHN0YXRl
SW5kZXggPj0gbV9zdGF0ZVJlYWN0aW9ucy5zaXplKCkpCisgICAgICAgIG1fc3RhdGVSZWFjdGlv
bnMuZ3JvdyhzdGF0ZUluZGV4ICsgMSk7CisKKyAgICBtX3N0YXRlUmVhY3Rpb25zW3N0YXRlSW5k
ZXhdLmFwcGVuZChXVEZNb3ZlKHByb21pc2UpKTsKK30KKwordm9pZCBXZWJLaXRBdWRpb0NvbnRl
eHQ6OnNldFN0YXRlKFN0YXRlIHN0YXRlKQoreworICAgIGlmIChtX3N0YXRlID09IHN0YXRlKQor
ICAgICAgICByZXR1cm47CisKKyAgICBtX3N0YXRlID0gc3RhdGU7CisgICAgbV9ldmVudFF1ZXVl
LT5lbnF1ZXVlRXZlbnQoRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkuc3RhdGVjaGFuZ2VFdmVu
dCwgRXZlbnQ6OkNhbkJ1YmJsZTo6WWVzLCBFdmVudDo6SXNDYW5jZWxhYmxlOjpObykpOworCisg
ICAgc2l6ZV90IHN0YXRlSW5kZXggPSBzdGF0aWNfY2FzdDxzaXplX3Q+KHN0YXRlKTsKKyAgICBp
ZiAoc3RhdGVJbmRleCA+PSBtX3N0YXRlUmVhY3Rpb25zLnNpemUoKSkKKyAgICAgICAgcmV0dXJu
OworCisgICAgVmVjdG9yPERPTVByb21pc2VEZWZlcnJlZDx2b2lkPj4gcmVhY3Rpb25zOworICAg
IG1fc3RhdGVSZWFjdGlvbnNbc3RhdGVJbmRleF0uc3dhcChyZWFjdGlvbnMpOworCisgICAgZm9y
IChhdXRvJiBwcm9taXNlIDogcmVhY3Rpb25zKQorICAgICAgICBwcm9taXNlLnJlc29sdmUoKTsK
K30KKwordm9pZCBXZWJLaXRBdWRpb0NvbnRleHQ6OnN0b3AoKQoreworICAgIEFMV0FZU19MT0co
TE9HSURFTlRJRklFUik7CisKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworCisgICAgLy8g
VXN1YWxseSBTY3JpcHRFeGVjdXRpb25Db250ZXh0IGNhbGxzIHN0b3AgdHdpY2UuCisgICAgaWYg
KG1faXNTdG9wU2NoZWR1bGVkKQorICAgICAgICByZXR1cm47CisgICAgbV9pc1N0b3BTY2hlZHVs
ZWQgPSB0cnVlOworCisgICAgQVNTRVJUKGRvY3VtZW50KCkpOworICAgIGRvY3VtZW50KCktPnVw
ZGF0ZUlzUGxheWluZ01lZGlhKCk7CisKKyAgICB1bmluaXRpYWxpemUoKTsKKyAgICBjbGVhcigp
OworfQorCit2b2lkIFdlYktpdEF1ZGlvQ29udGV4dDo6c3VzcGVuZChSZWFzb25Gb3JTdXNwZW5z
aW9uKQoreworICAgIGlmIChzdGF0ZSgpID09IFN0YXRlOjpSdW5uaW5nKSB7CisgICAgICAgIG1f
bWVkaWFTZXNzaW9uLT5iZWdpbkludGVycnVwdGlvbihQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6UGxh
eWJhY2tTdXNwZW5kZWQpOworICAgICAgICBkb2N1bWVudCgpLT51cGRhdGVJc1BsYXlpbmdNZWRp
YSgpOworICAgIH0KK30KKwordm9pZCBXZWJLaXRBdWRpb0NvbnRleHQ6OnJlc3VtZSgpCit7Cisg
ICAgaWYgKHN0YXRlKCkgPT0gU3RhdGU6OkludGVycnVwdGVkKSB7CisgICAgICAgIG1fbWVkaWFT
ZXNzaW9uLT5lbmRJbnRlcnJ1cHRpb24oUGxhdGZvcm1NZWRpYVNlc3Npb246Ok1heVJlc3VtZVBs
YXlpbmcpOworICAgICAgICBkb2N1bWVudCgpLT51cGRhdGVJc1BsYXlpbmdNZWRpYSgpOworICAg
IH0KK30KKworY29uc3QgY2hhciogV2ViS2l0QXVkaW9Db250ZXh0OjphY3RpdmVET01PYmplY3RO
YW1lKCkgY29uc3QKK3sKKyAgICByZXR1cm4gIldlYktpdEF1ZGlvQ29udGV4dCI7Cit9CisKK0Rv
Y3VtZW50SWRlbnRpZmllciBXZWJLaXRBdWRpb0NvbnRleHQ6Omhvc3RpbmdEb2N1bWVudElkZW50
aWZpZXIoKSBjb25zdAoreworICAgIGF1dG8qIGRvY3VtZW50ID0gZG93bmNhc3Q8RG9jdW1lbnQ+
KG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dCk7CisgICAgcmV0dXJuIGRvY3VtZW50ID8gZG9jdW1l
bnQtPmlkZW50aWZpZXIoKSA6IERvY3VtZW50SWRlbnRpZmllciB7IH07Cit9CisKK2Jvb2wgV2Vi
S2l0QXVkaW9Db250ZXh0Ojppc1N1c3BlbmRlZCgpIGNvbnN0Cit7CisgICAgcmV0dXJuICFkb2N1
bWVudCgpIHx8IGRvY3VtZW50KCktPmFjdGl2ZURPTU9iamVjdHNBcmVTdXNwZW5kZWQoKSB8fCBk
b2N1bWVudCgpLT5hY3RpdmVET01PYmplY3RzQXJlU3RvcHBlZCgpOworfQorCit2b2lkIFdlYktp
dEF1ZGlvQ29udGV4dDo6dmlzaWJpbGl0eVN0YXRlQ2hhbmdlZCgpCit7CisgICAgLy8gRG8gbm90
IHN1c3BlbmQgaWYgYXVkaW8gaXMgYXVkaWJsZS4KKyAgICBpZiAoIWRvY3VtZW50KCkgfHwgbWVk
aWFTdGF0ZSgpID09IE1lZGlhUHJvZHVjZXI6OklzUGxheWluZ0F1ZGlvIHx8IG1faXNTdG9wU2No
ZWR1bGVkKQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAoZG9jdW1lbnQoKS0+aGlkZGVuKCkp
IHsKKyAgICAgICAgaWYgKHN0YXRlKCkgPT0gU3RhdGU6OlJ1bm5pbmcpIHsKKyAgICAgICAgICAg
IFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoInZpc2liaWxpdHlTdGF0ZUNoYW5nZWQoKSBTdXNwZW5k
aW5nIHBsYXliYWNrIGFmdGVyIGdvaW5nIHRvIHRoZSBiYWNrZ3JvdW5kIik7CisgICAgICAgICAg
ICBtX21lZGlhU2Vzc2lvbi0+YmVnaW5JbnRlcnJ1cHRpb24oUGxhdGZvcm1NZWRpYVNlc3Npb246
OkVudGVyaW5nQmFja2dyb3VuZCk7CisgICAgICAgIH0KKyAgICB9IGVsc2UgeworICAgICAgICBp
ZiAoc3RhdGUoKSA9PSBTdGF0ZTo6SW50ZXJydXB0ZWQpIHsKKyAgICAgICAgICAgIFJFTEVBU0Vf
TE9HX0lGX0FMTE9XRUQoInZpc2liaWxpdHlTdGF0ZUNoYW5nZWQoKSBSZXN1bWluZyBwbGF5YmFj
ayBhZnRlciBlbnRlcmluZyBmb3JlZ3JvdW5kIik7CisgICAgICAgICAgICBtX21lZGlhU2Vzc2lv
bi0+ZW5kSW50ZXJydXB0aW9uKFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpNYXlSZXN1bWVQbGF5aW5n
KTsKKyAgICAgICAgfQorICAgIH0KK30KKworYm9vbCBXZWJLaXRBdWRpb0NvbnRleHQ6OndvdWxk
VGFpbnRPcmlnaW4oY29uc3QgVVJMJiB1cmwpIGNvbnN0Cit7CisgICAgaWYgKHVybC5wcm90b2Nv
bElzRGF0YSgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBpZiAoYXV0byogZG9jdW1l
bnQgPSB0aGlzLT5kb2N1bWVudCgpKQorICAgICAgICByZXR1cm4gIWRvY3VtZW50LT5zZWN1cml0
eU9yaWdpbigpLmNhblJlcXVlc3QodXJsKTsKKworICAgIHJldHVybiBmYWxzZTsKK30KKworRXhj
ZXB0aW9uT3I8UmVmPEF1ZGlvQnVmZmVyPj4gV2ViS2l0QXVkaW9Db250ZXh0OjpjcmVhdGVCdWZm
ZXIodW5zaWduZWQgbnVtYmVyT2ZDaGFubmVscywgc2l6ZV90IG51bWJlck9mRnJhbWVzLCBmbG9h
dCBzYW1wbGVSYXRlKQoreworICAgIGF1dG8gYXVkaW9CdWZmZXIgPSBBdWRpb0J1ZmZlcjo6Y3Jl
YXRlKG51bWJlck9mQ2hhbm5lbHMsIG51bWJlck9mRnJhbWVzLCBzYW1wbGVSYXRlKTsKKyAgICBp
ZiAoIWF1ZGlvQnVmZmVyKQorICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgTm90U3VwcG9ydGVk
RXJyb3IgfTsKKyAgICByZXR1cm4gYXVkaW9CdWZmZXIucmVsZWFzZU5vbk51bGwoKTsKK30KKwor
RXhjZXB0aW9uT3I8UmVmPEF1ZGlvQnVmZmVyPj4gV2ViS2l0QXVkaW9Db250ZXh0OjpjcmVhdGVC
dWZmZXIoQXJyYXlCdWZmZXImIGFycmF5QnVmZmVyLCBib29sIG1peFRvTW9ubykKK3sKKyAgICBh
dXRvIGF1ZGlvQnVmZmVyID0gQXVkaW9CdWZmZXI6OmNyZWF0ZUZyb21BdWRpb0ZpbGVEYXRhKGFy
cmF5QnVmZmVyLmRhdGEoKSwgYXJyYXlCdWZmZXIuYnl0ZUxlbmd0aCgpLCBtaXhUb01vbm8sIHNh
bXBsZVJhdGUoKSk7CisgICAgaWYgKCFhdWRpb0J1ZmZlcikKKyAgICAgICAgcmV0dXJuIEV4Y2Vw
dGlvbiB7IFN5bnRheEVycm9yIH07CisgICAgcmV0dXJuIGF1ZGlvQnVmZmVyLnJlbGVhc2VOb25O
dWxsKCk7Cit9CisKK3ZvaWQgV2ViS2l0QXVkaW9Db250ZXh0OjpkZWNvZGVBdWRpb0RhdGEoUmVm
PEFycmF5QnVmZmVyPiYmIGF1ZGlvRGF0YSwgUmVmUHRyPEF1ZGlvQnVmZmVyQ2FsbGJhY2s+JiYg
c3VjY2Vzc0NhbGxiYWNrLCBSZWZQdHI8QXVkaW9CdWZmZXJDYWxsYmFjaz4mJiBlcnJvckNhbGxi
YWNrKQoreworICAgIGlmICghbV9hdWRpb0RlY29kZXIpCisgICAgICAgIG1fYXVkaW9EZWNvZGVy
ID0gbWFrZVVuaXF1ZTxBc3luY0F1ZGlvRGVjb2Rlcj4oKTsKKyAgICBtX2F1ZGlvRGVjb2Rlci0+
ZGVjb2RlQXN5bmMoV1RGTW92ZShhdWRpb0RhdGEpLCBzYW1wbGVSYXRlKCksIFdURk1vdmUoc3Vj
Y2Vzc0NhbGxiYWNrKSwgV1RGTW92ZShlcnJvckNhbGxiYWNrKSk7Cit9CisKK0V4Y2VwdGlvbk9y
PFJlZjxBdWRpb0J1ZmZlclNvdXJjZU5vZGU+PiBXZWJLaXRBdWRpb0NvbnRleHQ6OmNyZWF0ZUJ1
ZmZlclNvdXJjZSgpCit7CisgICAgQUxXQVlTX0xPRyhMT0dJREVOVElGSUVSKTsKKworICAgIEFT
U0VSVChpc01haW5UaHJlYWQoKSk7CisKKyAgICBpZiAobV9pc1N0b3BTY2hlZHVsZWQpCisgICAg
ICAgIHJldHVybiBFeGNlcHRpb24geyBJbnZhbGlkU3RhdGVFcnJvciB9OworCisgICAgbGF6eUlu
aXRpYWxpemUoKTsKKyAgICBSZWY8QXVkaW9CdWZmZXJTb3VyY2VOb2RlPiBub2RlID0gQXVkaW9C
dWZmZXJTb3VyY2VOb2RlOjpjcmVhdGUoKnRoaXMsIHNhbXBsZVJhdGUoKSk7CisKKyAgICAvLyBC
ZWNhdXNlIHRoaXMgaXMgYW4gQXVkaW9TY2hlZHVsZWRTb3VyY2VOb2RlLCB0aGUgY29udGV4dCBr
ZWVwcyBhIHJlZmVyZW5jZSB1bnRpbCBpdCBoYXMgZmluaXNoZWQgcGxheWluZy4KKyAgICAvLyBX
aGVuIHRoaXMgaGFwcGVucywgQXVkaW9TY2hlZHVsZWRTb3VyY2VOb2RlOjpmaW5pc2goKSBjYWxs
cyBXZWJLaXRBdWRpb0NvbnRleHQ6Om5vdGlmeU5vZGVGaW5pc2hlZFByb2Nlc3NpbmcoKS4KKyAg
ICByZWZOb2RlKG5vZGUpOworCisgICAgcmV0dXJuIG5vZGU7Cit9CisKKyNpZiBFTkFCTEUoVklE
RU8pCisKK0V4Y2VwdGlvbk9yPFJlZjxNZWRpYUVsZW1lbnRBdWRpb1NvdXJjZU5vZGU+PiBXZWJL
aXRBdWRpb0NvbnRleHQ6OmNyZWF0ZU1lZGlhRWxlbWVudFNvdXJjZShIVE1MTWVkaWFFbGVtZW50
JiBtZWRpYUVsZW1lbnQpCit7CisgICAgQUxXQVlTX0xPRyhMT0dJREVOVElGSUVSKTsKKworICAg
IEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisKKyAgICBpZiAobV9pc1N0b3BTY2hlZHVsZWQgfHwg
bWVkaWFFbGVtZW50LmF1ZGlvU291cmNlTm9kZSgpKQorICAgICAgICByZXR1cm4gRXhjZXB0aW9u
IHsgSW52YWxpZFN0YXRlRXJyb3IgfTsKKworICAgIGxhenlJbml0aWFsaXplKCk7CisKKyAgICBh
dXRvIG5vZGUgPSBNZWRpYUVsZW1lbnRBdWRpb1NvdXJjZU5vZGU6OmNyZWF0ZSgqdGhpcywgbWVk
aWFFbGVtZW50KTsKKworICAgIG1lZGlhRWxlbWVudC5zZXRBdWRpb1NvdXJjZU5vZGUobm9kZS5w
dHIoKSk7CisKKyAgICByZWZOb2RlKG5vZGUuZ2V0KCkpOyAvLyBjb250ZXh0IGtlZXBzIHJlZmVy
ZW5jZSB1bnRpbCBub2RlIGlzIGRpc2Nvbm5lY3RlZAorICAgIHJldHVybiBub2RlOworfQorCisj
ZW5kaWYKKworI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCisKK0V4Y2VwdGlvbk9yPFJlZjxNZWRp
YVN0cmVhbUF1ZGlvU291cmNlTm9kZT4+IFdlYktpdEF1ZGlvQ29udGV4dDo6Y3JlYXRlTWVkaWFT
dHJlYW1Tb3VyY2UoTWVkaWFTdHJlYW0mIG1lZGlhU3RyZWFtKQoreworICAgIEFMV0FZU19MT0co
TE9HSURFTlRJRklFUik7CisKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworCisgICAgaWYg
KG1faXNTdG9wU2NoZWR1bGVkKQorICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgSW52YWxpZFN0
YXRlRXJyb3IgfTsKKworICAgIGF1dG8gYXVkaW9UcmFja3MgPSBtZWRpYVN0cmVhbS5nZXRBdWRp
b1RyYWNrcygpOworICAgIGlmIChhdWRpb1RyYWNrcy5pc0VtcHR5KCkpCisgICAgICAgIHJldHVy
biBFeGNlcHRpb24geyBJbnZhbGlkU3RhdGVFcnJvciB9OworCisgICAgTWVkaWFTdHJlYW1UcmFj
ayogcHJvdmlkZXJUcmFjayA9IG51bGxwdHI7CisgICAgZm9yIChhdXRvJiB0cmFjayA6IGF1ZGlv
VHJhY2tzKSB7CisgICAgICAgIGlmICh0cmFjay0+YXVkaW9Tb3VyY2VQcm92aWRlcigpKSB7Cisg
ICAgICAgICAgICBwcm92aWRlclRyYWNrID0gdHJhY2suZ2V0KCk7CisgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgfQorICAgIH0KKyAgICBpZiAoIXByb3ZpZGVyVHJhY2spCisgICAgICAgIHJl
dHVybiBFeGNlcHRpb24geyBJbnZhbGlkU3RhdGVFcnJvciB9OworCisgICAgbGF6eUluaXRpYWxp
emUoKTsKKworICAgIGF1dG8gbm9kZSA9IE1lZGlhU3RyZWFtQXVkaW9Tb3VyY2VOb2RlOjpjcmVh
dGUoKnRoaXMsIG1lZGlhU3RyZWFtLCAqcHJvdmlkZXJUcmFjayk7CisgICAgbm9kZS0+c2V0Rm9y
bWF0KDIsIHNhbXBsZVJhdGUoKSk7CisKKyAgICByZWZOb2RlKG5vZGUpOyAvLyBjb250ZXh0IGtl
ZXBzIHJlZmVyZW5jZSB1bnRpbCBub2RlIGlzIGRpc2Nvbm5lY3RlZAorICAgIHJldHVybiBub2Rl
OworfQorCitFeGNlcHRpb25PcjxSZWY8TWVkaWFTdHJlYW1BdWRpb0Rlc3RpbmF0aW9uTm9kZT4+
IFdlYktpdEF1ZGlvQ29udGV4dDo6Y3JlYXRlTWVkaWFTdHJlYW1EZXN0aW5hdGlvbigpCit7Cisg
ICAgaWYgKG1faXNTdG9wU2NoZWR1bGVkKQorICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgSW52
YWxpZFN0YXRlRXJyb3IgfTsKKworICAgIC8vIEZJWE1FOiBBZGQgc3VwcG9ydCBmb3IgYW4gb3B0
aW9uYWwgYXJndW1lbnQgd2hpY2ggc3BlY2lmaWVzIHRoZSBudW1iZXIgb2YgY2hhbm5lbHMuCisg
ICAgLy8gRklYTUU6IFRoZSBkZWZhdWx0IHNob3VsZCBwcm9iYWJseSBiZSBzdGVyZW8gaW5zdGVh
ZCBvZiBtb25vLgorICAgIHJldHVybiBNZWRpYVN0cmVhbUF1ZGlvRGVzdGluYXRpb25Ob2RlOjpj
cmVhdGUoKnRoaXMsIDEpOworfQorCisjZW5kaWYKKworRXhjZXB0aW9uT3I8UmVmPFNjcmlwdFBy
b2Nlc3Nvck5vZGU+PiBXZWJLaXRBdWRpb0NvbnRleHQ6OmNyZWF0ZVNjcmlwdFByb2Nlc3Nvcihz
aXplX3QgYnVmZmVyU2l6ZSwgc2l6ZV90IG51bWJlck9mSW5wdXRDaGFubmVscywgc2l6ZV90IG51
bWJlck9mT3V0cHV0Q2hhbm5lbHMpCit7CisgICAgQUxXQVlTX0xPRyhMT0dJREVOVElGSUVSKTsK
KworICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisKKyAgICBpZiAobV9pc1N0b3BTY2hlZHVs
ZWQpCisgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBJbnZhbGlkU3RhdGVFcnJvciB9OworCisg
ICAgbGF6eUluaXRpYWxpemUoKTsKKworICAgIC8vIFczQyBFZGl0b3IncyBEcmFmdCAwNiBKdW5l
IDIwMTcKKyAgICAvLyAgaHR0cHM6Ly93ZWJhdWRpby5naXRodWIuaW8vd2ViLWF1ZGlvLWFwaS8j
d2lkbC1CYXNlQXVkaW9Db250ZXh0LWNyZWF0ZVNjcmlwdFByb2Nlc3Nvci1TY3JpcHRQcm9jZXNz
b3JOb2RlLXVuc2lnbmVkLWxvbmctYnVmZmVyU2l6ZS11bnNpZ25lZC1sb25nLW51bWJlck9mSW5w
dXRDaGFubmVscy11bnNpZ25lZC1sb25nLW51bWJlck9mT3V0cHV0Q2hhbm5lbHMKKworICAgIC8v
IFRoZSBidWZmZXJTaXplIHBhcmFtZXRlciBkZXRlcm1pbmVzIHRoZSBidWZmZXIgc2l6ZSBpbiB1
bml0cyBvZiBzYW1wbGUtZnJhbWVzLiBJZiBpdCdzIG5vdCBwYXNzZWQgaW4sCisgICAgLy8gb3Ig
aWYgdGhlIHZhbHVlIGlzIDAsIHRoZW4gdGhlIGltcGxlbWVudGF0aW9uIHdpbGwgY2hvb3NlIHRo
ZSBiZXN0IGJ1ZmZlciBzaXplIGZvciB0aGUgZ2l2ZW4gZW52aXJvbm1lbnQsCisgICAgLy8gd2hp
Y2ggd2lsbCBiZSBjb25zdGFudCBwb3dlciBvZiAyIHRocm91Z2hvdXQgdGhlIGxpZmV0aW1lIG9m
IHRoZSBub2RlLiAuLi4gSWYgdGhlIHZhbHVlIG9mIHRoaXMgcGFyYW1ldGVyCisgICAgLy8gaXMg
bm90IG9uZSBvZiB0aGUgYWxsb3dlZCBwb3dlci1vZi0yIHZhbHVlcyBsaXN0ZWQgYWJvdmUsIGFu
IEluZGV4U2l6ZUVycm9yIG11c3QgYmUgdGhyb3duLgorICAgIHN3aXRjaCAoYnVmZmVyU2l6ZSkg
eworICAgIGNhc2UgMDoKKyNpZiBVU0UoQVVESU9fU0VTU0lPTikKKyAgICAgICAgLy8gUGljayBh
IHZhbHVlIGJldHdlZW4gMjU2ICgyXjgpIGFuZCAxNjM4NCAoMl4xNCksIGJhc2VkIG9uIHRoZSBi
dWZmZXIgc2l6ZSBvZiB0aGUgY3VycmVudCBBdWRpb1Nlc3Npb246CisgICAgICAgIGJ1ZmZlclNp
emUgPSAxIDw8IHN0ZDo6bWF4PHNpemVfdD4oOCwgc3RkOjptaW48c2l6ZV90PigxNCwgc3RkOjps
b2cyKEF1ZGlvU2Vzc2lvbjo6c2hhcmVkU2Vzc2lvbigpLmJ1ZmZlclNpemUoKSkpKTsKKyNlbHNl
CisgICAgICAgIGJ1ZmZlclNpemUgPSAyMDQ4OworI2VuZGlmCisgICAgICAgIGJyZWFrOworICAg
IGNhc2UgMjU2OgorICAgIGNhc2UgNTEyOgorICAgIGNhc2UgMTAyNDoKKyAgICBjYXNlIDIwNDg6
CisgICAgY2FzZSA0MDk2OgorICAgIGNhc2UgODE5MjoKKyAgICBjYXNlIDE2Mzg0OgorICAgICAg
ICBicmVhazsKKyAgICBkZWZhdWx0OgorICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgSW5kZXhT
aXplRXJyb3IgfTsKKyAgICB9CisKKyAgICAvLyBBbiBJbmRleFNpemVFcnJvciBleGNlcHRpb24g
bXVzdCBiZSB0aHJvd24gaWYgYnVmZmVyU2l6ZSBvciBudW1iZXJPZklucHV0Q2hhbm5lbHMgb3Ig
bnVtYmVyT2ZPdXRwdXRDaGFubmVscworICAgIC8vIGFyZSBvdXRzaWRlIHRoZSB2YWxpZCByYW5n
ZS4gSXQgaXMgaW52YWxpZCBmb3IgYm90aCBudW1iZXJPZklucHV0Q2hhbm5lbHMgYW5kIG51bWJl
ck9mT3V0cHV0Q2hhbm5lbHMgdG8gYmUgemVyby4KKyAgICAvLyBJbiB0aGlzIGNhc2UgYW4gSW5k
ZXhTaXplRXJyb3IgbXVzdCBiZSB0aHJvd24uCisKKyAgICBpZiAoIW51bWJlck9mSW5wdXRDaGFu
bmVscyAmJiAhbnVtYmVyT2ZPdXRwdXRDaGFubmVscykKKyAgICAgICAgcmV0dXJuIEV4Y2VwdGlv
biB7IE5vdFN1cHBvcnRlZEVycm9yIH07CisKKyAgICAvLyBUaGlzIHBhcmFtZXRlciBbbnVtYmVy
T2ZJbnB1dENoYW5uZWxzXSBkZXRlcm1pbmVzIHRoZSBudW1iZXIgb2YgY2hhbm5lbHMgZm9yIHRo
aXMgbm9kZSdzIGlucHV0LiBWYWx1ZXMgb2YKKyAgICAvLyB1cCB0byAzMiBtdXN0IGJlIHN1cHBv
cnRlZC4gQSBOb3RTdXBwb3J0ZWRFcnJvciBtdXN0IGJlIHRocm93biBpZiB0aGUgbnVtYmVyIG9m
IGNoYW5uZWxzIGlzIG5vdCBzdXBwb3J0ZWQuCisKKyAgICBpZiAobnVtYmVyT2ZJbnB1dENoYW5u
ZWxzID4gbWF4TnVtYmVyT2ZDaGFubmVscygpKQorICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsg
Tm90U3VwcG9ydGVkRXJyb3IgfTsKKworICAgIC8vIFRoaXMgcGFyYW1ldGVyIFtudW1iZXJPZk91
dHB1dENoYW5uZWxzXSBkZXRlcm1pbmVzIHRoZSBudW1iZXIgb2YgY2hhbm5lbHMgZm9yIHRoaXMg
bm9kZSdzIG91dHB1dC4gVmFsdWVzIG9mCisgICAgLy8gdXAgdG8gMzIgbXVzdCBiZSBzdXBwb3J0
ZWQuIEEgTm90U3VwcG9ydGVkRXJyb3IgbXVzdCBiZSB0aHJvd24gaWYgdGhlIG51bWJlciBvZiBj
aGFubmVscyBpcyBub3Qgc3VwcG9ydGVkLgorCisgICAgaWYgKG51bWJlck9mT3V0cHV0Q2hhbm5l
bHMgPiBtYXhOdW1iZXJPZkNoYW5uZWxzKCkpCisgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBO
b3RTdXBwb3J0ZWRFcnJvciB9OworCisgICAgYXV0byBub2RlID0gU2NyaXB0UHJvY2Vzc29yTm9k
ZTo6Y3JlYXRlKCp0aGlzLCBzYW1wbGVSYXRlKCksIGJ1ZmZlclNpemUsIG51bWJlck9mSW5wdXRD
aGFubmVscywgbnVtYmVyT2ZPdXRwdXRDaGFubmVscyk7CisKKyAgICByZWZOb2RlKG5vZGUpOyAv
LyBjb250ZXh0IGtlZXBzIHJlZmVyZW5jZSB1bnRpbCB3ZSBzdG9wIG1ha2luZyBqYXZhc2NyaXB0
IHJlbmRlcmluZyBjYWxsYmFja3MKKyAgICByZXR1cm4gbm9kZTsKK30KKworRXhjZXB0aW9uT3I8
UmVmPEJpcXVhZEZpbHRlck5vZGU+PiBXZWJLaXRBdWRpb0NvbnRleHQ6OmNyZWF0ZUJpcXVhZEZp
bHRlcigpCit7CisgICAgQUxXQVlTX0xPRyhMT0dJREVOVElGSUVSKTsKKworICAgIEFTU0VSVChp
c01haW5UaHJlYWQoKSk7CisgICAgaWYgKG1faXNTdG9wU2NoZWR1bGVkKQorICAgICAgICByZXR1
cm4gRXhjZXB0aW9uIHsgSW52YWxpZFN0YXRlRXJyb3IgfTsKKworICAgIGxhenlJbml0aWFsaXpl
KCk7CisKKyAgICByZXR1cm4gQmlxdWFkRmlsdGVyTm9kZTo6Y3JlYXRlKCp0aGlzLCBzYW1wbGVS
YXRlKCkpOworfQorCitFeGNlcHRpb25PcjxSZWY8V2F2ZVNoYXBlck5vZGU+PiBXZWJLaXRBdWRp
b0NvbnRleHQ6OmNyZWF0ZVdhdmVTaGFwZXIoKQoreworICAgIEFMV0FZU19MT0coTE9HSURFTlRJ
RklFUik7CisKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAgIGlmIChtX2lzU3RvcFNj
aGVkdWxlZCkKKyAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IEludmFsaWRTdGF0ZUVycm9yIH07
CisKKyAgICBsYXp5SW5pdGlhbGl6ZSgpOworICAgIHJldHVybiBXYXZlU2hhcGVyTm9kZTo6Y3Jl
YXRlKCp0aGlzKTsKK30KKworRXhjZXB0aW9uT3I8UmVmPFdlYktpdEF1ZGlvUGFubmVyTm9kZT4+
IFdlYktpdEF1ZGlvQ29udGV4dDo6Y3JlYXRlUGFubmVyKCkKK3sKKyAgICBBTFdBWVNfTE9HKExP
R0lERU5USUZJRVIpOworCisgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKyAgICBpZiAobV9p
c1N0b3BTY2hlZHVsZWQpCisgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBJbnZhbGlkU3RhdGVF
cnJvciB9OworCisgICAgbGF6eUluaXRpYWxpemUoKTsKKyAgICByZXR1cm4gV2ViS2l0QXVkaW9Q
YW5uZXJOb2RlOjpjcmVhdGUoKnRoaXMsIHNhbXBsZVJhdGUoKSk7Cit9CisKK0V4Y2VwdGlvbk9y
PFJlZjxDb252b2x2ZXJOb2RlPj4gV2ViS2l0QXVkaW9Db250ZXh0OjpjcmVhdGVDb252b2x2ZXIo
KQoreworICAgIEFMV0FZU19MT0coTE9HSURFTlRJRklFUik7CisKKyAgICBBU1NFUlQoaXNNYWlu
VGhyZWFkKCkpOworICAgIGlmIChtX2lzU3RvcFNjaGVkdWxlZCkKKyAgICAgICAgcmV0dXJuIEV4
Y2VwdGlvbiB7IEludmFsaWRTdGF0ZUVycm9yIH07CisKKyAgICBsYXp5SW5pdGlhbGl6ZSgpOwor
ICAgIHJldHVybiBDb252b2x2ZXJOb2RlOjpjcmVhdGUoKnRoaXMsIHNhbXBsZVJhdGUoKSk7Cit9
CisKK0V4Y2VwdGlvbk9yPFJlZjxEeW5hbWljc0NvbXByZXNzb3JOb2RlPj4gV2ViS2l0QXVkaW9D
b250ZXh0OjpjcmVhdGVEeW5hbWljc0NvbXByZXNzb3IoKQoreworICAgIEFMV0FZU19MT0coTE9H
SURFTlRJRklFUik7CisKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAgIGlmIChtX2lz
U3RvcFNjaGVkdWxlZCkKKyAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IEludmFsaWRTdGF0ZUVy
cm9yIH07CisKKyAgICBsYXp5SW5pdGlhbGl6ZSgpOworICAgIHJldHVybiBEeW5hbWljc0NvbXBy
ZXNzb3JOb2RlOjpjcmVhdGUoKnRoaXMsIHNhbXBsZVJhdGUoKSk7Cit9CisKK0V4Y2VwdGlvbk9y
PFJlZjxBbmFseXNlck5vZGU+PiBXZWJLaXRBdWRpb0NvbnRleHQ6OmNyZWF0ZUFuYWx5c2VyKCkK
K3sKKyAgICBBTFdBWVNfTE9HKExPR0lERU5USUZJRVIpOworCisgICAgQVNTRVJUKGlzTWFpblRo
cmVhZCgpKTsKKyAgICBpZiAobV9pc1N0b3BTY2hlZHVsZWQpCisgICAgICAgIHJldHVybiBFeGNl
cHRpb24geyBJbnZhbGlkU3RhdGVFcnJvciB9OworCisgICAgbGF6eUluaXRpYWxpemUoKTsKKyAg
ICByZXR1cm4gQW5hbHlzZXJOb2RlOjpjcmVhdGUoKnRoaXMsIHNhbXBsZVJhdGUoKSk7Cit9CisK
K0V4Y2VwdGlvbk9yPFJlZjxHYWluTm9kZT4+IFdlYktpdEF1ZGlvQ29udGV4dDo6Y3JlYXRlR2Fp
bigpCit7CisgICAgQUxXQVlTX0xPRyhMT0dJREVOVElGSUVSKTsKKworICAgIEFTU0VSVChpc01h
aW5UaHJlYWQoKSk7CisgICAgaWYgKG1faXNTdG9wU2NoZWR1bGVkKQorICAgICAgICByZXR1cm4g
RXhjZXB0aW9uIHsgSW52YWxpZFN0YXRlRXJyb3IgfTsKKworICAgIGxhenlJbml0aWFsaXplKCk7
CisgICAgcmV0dXJuIEdhaW5Ob2RlOjpjcmVhdGUoKnRoaXMsIHNhbXBsZVJhdGUoKSk7Cit9CisK
K0V4Y2VwdGlvbk9yPFJlZjxEZWxheU5vZGU+PiBXZWJLaXRBdWRpb0NvbnRleHQ6OmNyZWF0ZURl
bGF5KGRvdWJsZSBtYXhEZWxheVRpbWUpCit7CisgICAgQUxXQVlTX0xPRyhMT0dJREVOVElGSUVS
KTsKKworICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisgICAgaWYgKG1faXNTdG9wU2NoZWR1
bGVkKQorICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgSW52YWxpZFN0YXRlRXJyb3IgfTsKKwor
ICAgIGxhenlJbml0aWFsaXplKCk7CisgICAgcmV0dXJuIERlbGF5Tm9kZTo6Y3JlYXRlKCp0aGlz
LCBzYW1wbGVSYXRlKCksIG1heERlbGF5VGltZSk7Cit9CisKK0V4Y2VwdGlvbk9yPFJlZjxDaGFu
bmVsU3BsaXR0ZXJOb2RlPj4gV2ViS2l0QXVkaW9Db250ZXh0OjpjcmVhdGVDaGFubmVsU3BsaXR0
ZXIoc2l6ZV90IG51bWJlck9mT3V0cHV0cykKK3sKKyAgICBBTFdBWVNfTE9HKExPR0lERU5USUZJ
RVIpOworCisgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKyAgICBpZiAobV9pc1N0b3BTY2hl
ZHVsZWQpCisgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBJbnZhbGlkU3RhdGVFcnJvciB9Owor
CisgICAgbGF6eUluaXRpYWxpemUoKTsKKyAgICBhdXRvIG5vZGUgPSBDaGFubmVsU3BsaXR0ZXJO
b2RlOjpjcmVhdGUoKnRoaXMsIHNhbXBsZVJhdGUoKSwgbnVtYmVyT2ZPdXRwdXRzKTsKKyAgICBp
ZiAoIW5vZGUpCisgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBJbmRleFNpemVFcnJvciB9Owor
ICAgIHJldHVybiBub2RlLnJlbGVhc2VOb25OdWxsKCk7Cit9CisKK0V4Y2VwdGlvbk9yPFJlZjxD
aGFubmVsTWVyZ2VyTm9kZT4+IFdlYktpdEF1ZGlvQ29udGV4dDo6Y3JlYXRlQ2hhbm5lbE1lcmdl
cihzaXplX3QgbnVtYmVyT2ZJbnB1dHMpCit7CisgICAgQUxXQVlTX0xPRyhMT0dJREVOVElGSUVS
KTsKKworICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisgICAgaWYgKG1faXNTdG9wU2NoZWR1
bGVkKQorICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgSW52YWxpZFN0YXRlRXJyb3IgfTsKKwor
ICAgIGxhenlJbml0aWFsaXplKCk7CisgICAgYXV0byBub2RlID0gQ2hhbm5lbE1lcmdlck5vZGU6
OmNyZWF0ZSgqdGhpcywgc2FtcGxlUmF0ZSgpLCBudW1iZXJPZklucHV0cyk7CisgICAgaWYgKCFu
b2RlKQorICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgSW5kZXhTaXplRXJyb3IgfTsKKyAgICBy
ZXR1cm4gbm9kZS5yZWxlYXNlTm9uTnVsbCgpOworfQorCitFeGNlcHRpb25PcjxSZWY8T3NjaWxs
YXRvck5vZGU+PiBXZWJLaXRBdWRpb0NvbnRleHQ6OmNyZWF0ZU9zY2lsbGF0b3IoKQoreworICAg
IEFMV0FZU19MT0coTE9HSURFTlRJRklFUik7CisKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkp
OworICAgIGlmIChtX2lzU3RvcFNjaGVkdWxlZCkKKyAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7
IEludmFsaWRTdGF0ZUVycm9yIH07CisKKyAgICBsYXp5SW5pdGlhbGl6ZSgpOworCisgICAgUmVm
PE9zY2lsbGF0b3JOb2RlPiBub2RlID0gT3NjaWxsYXRvck5vZGU6OmNyZWF0ZSgqdGhpcywgc2Ft
cGxlUmF0ZSgpKTsKKworICAgIC8vIEJlY2F1c2UgdGhpcyBpcyBhbiBBdWRpb1NjaGVkdWxlZFNv
dXJjZU5vZGUsIHRoZSBjb250ZXh0IGtlZXBzIGEgcmVmZXJlbmNlIHVudGlsIGl0IGhhcyBmaW5p
c2hlZCBwbGF5aW5nLgorICAgIC8vIFdoZW4gdGhpcyBoYXBwZW5zLCBBdWRpb1NjaGVkdWxlZFNv
dXJjZU5vZGU6OmZpbmlzaCgpIGNhbGxzIFdlYktpdEF1ZGlvQ29udGV4dDo6bm90aWZ5Tm9kZUZp
bmlzaGVkUHJvY2Vzc2luZygpLgorICAgIHJlZk5vZGUobm9kZSk7CisKKyAgICByZXR1cm4gbm9k
ZTsKK30KKworRXhjZXB0aW9uT3I8UmVmPFBlcmlvZGljV2F2ZT4+IFdlYktpdEF1ZGlvQ29udGV4
dDo6Y3JlYXRlUGVyaW9kaWNXYXZlKEZsb2F0MzJBcnJheSYgcmVhbCwgRmxvYXQzMkFycmF5JiBp
bWFnaW5hcnkpCit7CisgICAgQUxXQVlTX0xPRyhMT0dJREVOVElGSUVSKTsKKworICAgIEFTU0VS
VChpc01haW5UaHJlYWQoKSk7CisgICAgaWYgKG1faXNTdG9wU2NoZWR1bGVkKQorICAgICAgICBy
ZXR1cm4gRXhjZXB0aW9uIHsgSW52YWxpZFN0YXRlRXJyb3IgfTsKKworICAgIGlmIChyZWFsLmxl
bmd0aCgpICE9IGltYWdpbmFyeS5sZW5ndGgoKSB8fCAocmVhbC5sZW5ndGgoKSA+IE1heFBlcmlv
ZGljV2F2ZUxlbmd0aCkgfHwgIXJlYWwubGVuZ3RoKCkpCisgICAgICAgIHJldHVybiBFeGNlcHRp
b24geyBJbmRleFNpemVFcnJvciB9OworICAgIGxhenlJbml0aWFsaXplKCk7CisgICAgcmV0dXJu
IFBlcmlvZGljV2F2ZTo6Y3JlYXRlKHNhbXBsZVJhdGUoKSwgcmVhbCwgaW1hZ2luYXJ5KTsKK30K
Kwordm9pZCBXZWJLaXRBdWRpb0NvbnRleHQ6Om5vdGlmeU5vZGVGaW5pc2hlZFByb2Nlc3Npbmco
QXVkaW9Ob2RlKiBub2RlKQoreworICAgIEFTU0VSVChpc0F1ZGlvVGhyZWFkKCkpOworICAgIG1f
ZmluaXNoZWROb2Rlcy5hcHBlbmQobm9kZSk7Cit9CisKK3ZvaWQgV2ViS2l0QXVkaW9Db250ZXh0
OjpkZXJlZkZpbmlzaGVkU291cmNlTm9kZXMoKQoreworICAgIEFTU0VSVChpc0dyYXBoT3duZXIo
KSk7CisgICAgQVNTRVJUKGlzQXVkaW9UaHJlYWQoKSB8fCBpc0F1ZGlvVGhyZWFkRmluaXNoZWQo
KSk7CisgICAgZm9yIChhdXRvJiBub2RlIDogbV9maW5pc2hlZE5vZGVzKQorICAgICAgICBkZXJl
Zk5vZGUoKm5vZGUpOworCisgICAgbV9maW5pc2hlZE5vZGVzLmNsZWFyKCk7Cit9CisKK3ZvaWQg
V2ViS2l0QXVkaW9Db250ZXh0OjpyZWZOb2RlKEF1ZGlvTm9kZSYgbm9kZSkKK3sKKyAgICBBU1NF
UlQoaXNNYWluVGhyZWFkKCkpOworICAgIEF1dG9Mb2NrZXIgbG9ja2VyKCp0aGlzKTsKKworICAg
IG5vZGUucmVmKEF1ZGlvTm9kZTo6UmVmVHlwZUNvbm5lY3Rpb24pOworICAgIG1fcmVmZXJlbmNl
ZE5vZGVzLmFwcGVuZCgmbm9kZSk7Cit9CisKK3ZvaWQgV2ViS2l0QXVkaW9Db250ZXh0OjpkZXJl
Zk5vZGUoQXVkaW9Ob2RlJiBub2RlKQoreworICAgIEFTU0VSVChpc0dyYXBoT3duZXIoKSk7CisK
KyAgICBub2RlLmRlcmVmKEF1ZGlvTm9kZTo6UmVmVHlwZUNvbm5lY3Rpb24pOworCisgICAgQVNT
RVJUKG1fcmVmZXJlbmNlZE5vZGVzLmNvbnRhaW5zKCZub2RlKSk7CisgICAgbV9yZWZlcmVuY2Vk
Tm9kZXMucmVtb3ZlRmlyc3QoJm5vZGUpOworfQorCit2b2lkIFdlYktpdEF1ZGlvQ29udGV4dDo6
ZGVyZWZVbmZpbmlzaGVkU291cmNlTm9kZXMoKQoreworICAgIEFTU0VSVChpc01haW5UaHJlYWQo
KSAmJiBpc0F1ZGlvVGhyZWFkRmluaXNoZWQoKSk7CisgICAgZm9yIChhdXRvJiBub2RlIDogbV9y
ZWZlcmVuY2VkTm9kZXMpCisgICAgICAgIG5vZGUtPmRlcmVmKEF1ZGlvTm9kZTo6UmVmVHlwZUNv
bm5lY3Rpb24pOworCisgICAgbV9yZWZlcmVuY2VkTm9kZXMuY2xlYXIoKTsKK30KKwordm9pZCBX
ZWJLaXRBdWRpb0NvbnRleHQ6OmxvY2soYm9vbCYgbXVzdFJlbGVhc2VMb2NrKQoreworICAgIC8v
IERvbid0IGFsbG93IHJlZ3VsYXIgbG9jayBpbiByZWFsLXRpbWUgYXVkaW8gdGhyZWFkLgorICAg
IEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisKKyAgICBUaHJlYWQmIHRoaXNUaHJlYWQgPSBUaHJl
YWQ6OmN1cnJlbnQoKTsKKworICAgIGlmICgmdGhpc1RocmVhZCA9PSBtX2dyYXBoT3duZXJUaHJl
YWQpIHsKKyAgICAgICAgLy8gV2UgYWxyZWFkeSBoYXZlIHRoZSBsb2NrLgorICAgICAgICBtdXN0
UmVsZWFzZUxvY2sgPSBmYWxzZTsKKyAgICB9IGVsc2UgeworICAgICAgICAvLyBBY3F1aXJlIHRo
ZSBsb2NrLgorICAgICAgICBtX2NvbnRleHRHcmFwaE11dGV4LmxvY2soKTsKKyAgICAgICAgbV9n
cmFwaE93bmVyVGhyZWFkID0gJnRoaXNUaHJlYWQ7CisgICAgICAgIG11c3RSZWxlYXNlTG9jayA9
IHRydWU7CisgICAgfQorfQorCitib29sIFdlYktpdEF1ZGlvQ29udGV4dDo6dHJ5TG9jayhib29s
JiBtdXN0UmVsZWFzZUxvY2spCit7CisgICAgVGhyZWFkJiB0aGlzVGhyZWFkID0gVGhyZWFkOjpj
dXJyZW50KCk7CisgICAgYm9vbCBpc0F1ZGlvVGhyZWFkID0gJnRoaXNUaHJlYWQgPT0gYXVkaW9U
aHJlYWQoKTsKKworICAgIC8vIFRyeSB0byBjYXRjaCBjYXNlcyBvZiB1c2luZyB0cnkgbG9jayBv
biBtYWluIHRocmVhZCAtIGl0IHNob3VsZCB1c2UgcmVndWxhciBsb2NrLgorICAgIEFTU0VSVChp
c0F1ZGlvVGhyZWFkIHx8IGlzQXVkaW9UaHJlYWRGaW5pc2hlZCgpKTsKKworICAgIGlmICghaXNB
dWRpb1RocmVhZCkgeworICAgICAgICAvLyBJbiByZWxlYXNlIGJ1aWxkIHRyZWF0IHRyeUxvY2so
KSBhcyBsb2NrKCkgKHNpbmNlIGFib3ZlIEFTU0VSVChpc0F1ZGlvVGhyZWFkKSBuZXZlciBmaXJl
cykgLSB0aGlzIGlzIHRoZSBiZXN0IHdlIGNhbiBkby4KKyAgICAgICAgbG9jayhtdXN0UmVsZWFz
ZUxvY2spOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisKKyAgICBib29sIGhhc0xvY2s7
CisKKyAgICBpZiAoJnRoaXNUaHJlYWQgPT0gbV9ncmFwaE93bmVyVGhyZWFkKSB7CisgICAgICAg
IC8vIFRocmVhZCBhbHJlYWR5IGhhcyB0aGUgbG9jay4KKyAgICAgICAgaGFzTG9jayA9IHRydWU7
CisgICAgICAgIG11c3RSZWxlYXNlTG9jayA9IGZhbHNlOworICAgIH0gZWxzZSB7CisgICAgICAg
IC8vIERvbid0IGFscmVhZHkgaGF2ZSB0aGUgbG9jayAtIHRyeSB0byBhY3F1aXJlIGl0LgorICAg
ICAgICBoYXNMb2NrID0gbV9jb250ZXh0R3JhcGhNdXRleC50cnlMb2NrKCk7CisKKyAgICAgICAg
aWYgKGhhc0xvY2spCisgICAgICAgICAgICBtX2dyYXBoT3duZXJUaHJlYWQgPSAmdGhpc1RocmVh
ZDsKKworICAgICAgICBtdXN0UmVsZWFzZUxvY2sgPSBoYXNMb2NrOworICAgIH0KKworICAgIHJl
dHVybiBoYXNMb2NrOworfQorCit2b2lkIFdlYktpdEF1ZGlvQ29udGV4dDo6dW5sb2NrKCkKK3sK
KyAgICBBU1NFUlQobV9ncmFwaE93bmVyVGhyZWFkID09ICZUaHJlYWQ6OmN1cnJlbnQoKSk7CisK
KyAgICBtX2dyYXBoT3duZXJUaHJlYWQgPSBudWxscHRyOworICAgIG1fY29udGV4dEdyYXBoTXV0
ZXgudW5sb2NrKCk7Cit9CisKK2Jvb2wgV2ViS2l0QXVkaW9Db250ZXh0Ojppc0F1ZGlvVGhyZWFk
KCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9hdWRpb1RocmVhZCA9PSAmVGhyZWFkOjpjdXJyZW50
KCk7Cit9CisKK2Jvb2wgV2ViS2l0QXVkaW9Db250ZXh0Ojppc0dyYXBoT3duZXIoKSBjb25zdAor
eworICAgIHJldHVybiBtX2dyYXBoT3duZXJUaHJlYWQgPT0gJlRocmVhZDo6Y3VycmVudCgpOwor
fQorCit2b2lkIFdlYktpdEF1ZGlvQ29udGV4dDo6YWRkRGVmZXJyZWRGaW5pc2hEZXJlZihBdWRp
b05vZGUqIG5vZGUpCit7CisgICAgQVNTRVJUKGlzQXVkaW9UaHJlYWQoKSk7CisgICAgbV9kZWZl
cnJlZEZpbmlzaERlcmVmTGlzdC5hcHBlbmQobm9kZSk7Cit9CisKK3ZvaWQgV2ViS2l0QXVkaW9D
b250ZXh0OjpoYW5kbGVQcmVSZW5kZXJUYXNrcygpCit7CisgICAgQVNTRVJUKGlzQXVkaW9UaHJl
YWQoKSk7CisKKyAgICAvLyBBdCB0aGUgYmVnaW5uaW5nIG9mIGV2ZXJ5IHJlbmRlciBxdWFudHVt
LCB0cnkgdG8gdXBkYXRlIHRoZSBpbnRlcm5hbCByZW5kZXJpbmcgZ3JhcGggc3RhdGUgKGZyb20g
bWFpbiB0aHJlYWQgY2hhbmdlcykuCisgICAgLy8gSXQncyBPSyBpZiB0aGUgdHJ5TG9jaygpIGZh
aWxzLCB3ZSdsbCBqdXN0IHRha2Ugc2xpZ2h0bHkgbG9uZ2VyIHRvIHBpY2sgdXAgdGhlIGNoYW5n
ZXMuCisgICAgYm9vbCBtdXN0UmVsZWFzZUxvY2s7CisgICAgaWYgKHRyeUxvY2sobXVzdFJlbGVh
c2VMb2NrKSkgeworICAgICAgICAvLyBGaXh1cCB0aGUgc3RhdGUgb2YgYW55IGRpcnR5IEF1ZGlv
U3VtbWluZ0p1bmN0aW9ucyBhbmQgQXVkaW9Ob2RlT3V0cHV0cy4KKyAgICAgICAgaGFuZGxlRGly
dHlBdWRpb1N1bW1pbmdKdW5jdGlvbnMoKTsKKyAgICAgICAgaGFuZGxlRGlydHlBdWRpb05vZGVP
dXRwdXRzKCk7CisKKyAgICAgICAgdXBkYXRlQXV0b21hdGljUHVsbE5vZGVzKCk7CisKKyAgICAg
ICAgaWYgKG11c3RSZWxlYXNlTG9jaykKKyAgICAgICAgICAgIHVubG9jaygpOworICAgIH0KK30K
Kwordm9pZCBXZWJLaXRBdWRpb0NvbnRleHQ6OmhhbmRsZVBvc3RSZW5kZXJUYXNrcygpCit7Cisg
ICAgQVNTRVJUKGlzQXVkaW9UaHJlYWQoKSk7CisKKyAgICAvLyBNdXN0IHVzZSBhIHRyeUxvY2so
KSBoZXJlIHRvby4gRG9uJ3Qgd29ycnksIHRoZSBsb2NrIHdpbGwgdmVyeSByYXJlbHkgYmUgY29u
dGVuZGVkIGFuZCB0aGlzIG1ldGhvZCBpcyBjYWxsZWQgZnJlcXVlbnRseS4KKyAgICAvLyBUaGUg
d29yc3QgdGhhdCBjYW4gaGFwcGVuIGlzIHRoYXQgdGhlcmUgd2lsbCBiZSBzb21lIG5vZGVzIHdo
aWNoIHdpbGwgdGFrZSBzbGlnaHRseSBsb25nZXIgdGhhbiB1c3VhbCB0byBiZSBkZWxldGVkIG9y
IHJlbW92ZWQKKyAgICAvLyBmcm9tIHRoZSByZW5kZXIgZ3JhcGggKGluIHdoaWNoIGNhc2UgdGhl
eSdsbCByZW5kZXIgc2lsZW5jZSkuCisgICAgYm9vbCBtdXN0UmVsZWFzZUxvY2s7CisgICAgaWYg
KHRyeUxvY2sobXVzdFJlbGVhc2VMb2NrKSkgeworICAgICAgICAvLyBUYWtlIGNhcmUgb2YgZmlu
aXNoaW5nIGFueSBkZXJlZnMgd2hlcmUgdGhlIHRyeUxvY2soKSBmYWlsZWQgcHJldmlvdXNseS4K
KyAgICAgICAgaGFuZGxlRGVmZXJyZWRGaW5pc2hEZXJlZnMoKTsKKworICAgICAgICAvLyBEeW5h
bWljYWxseSBjbGVhbiB1cCBub2RlcyB3aGljaCBhcmUgbm8gbG9uZ2VyIG5lZWRlZC4KKyAgICAg
ICAgZGVyZWZGaW5pc2hlZFNvdXJjZU5vZGVzKCk7CisKKyAgICAgICAgLy8gRG9uJ3QgZGVsZXRl
IGluIHRoZSByZWFsLXRpbWUgdGhyZWFkLiBMZXQgdGhlIG1haW4gdGhyZWFkIGRvIGl0LgorICAg
ICAgICAvLyBSZWYtY291bnRlZCBvYmplY3RzIGhlbGQgYnkgY2VydGFpbiBBdWRpb05vZGVzIG1h
eSBub3QgYmUgdGhyZWFkLXNhZmUuCisgICAgICAgIHNjaGVkdWxlTm9kZURlbGV0aW9uKCk7CisK
KyAgICAgICAgLy8gRml4dXAgdGhlIHN0YXRlIG9mIGFueSBkaXJ0eSBBdWRpb1N1bW1pbmdKdW5j
dGlvbnMgYW5kIEF1ZGlvTm9kZU91dHB1dHMuCisgICAgICAgIGhhbmRsZURpcnR5QXVkaW9TdW1t
aW5nSnVuY3Rpb25zKCk7CisgICAgICAgIGhhbmRsZURpcnR5QXVkaW9Ob2RlT3V0cHV0cygpOwor
CisgICAgICAgIHVwZGF0ZUF1dG9tYXRpY1B1bGxOb2RlcygpOworCisgICAgICAgIGlmIChtdXN0
UmVsZWFzZUxvY2spCisgICAgICAgICAgICB1bmxvY2soKTsKKyAgICB9Cit9CisKK3ZvaWQgV2Vi
S2l0QXVkaW9Db250ZXh0OjpoYW5kbGVEZWZlcnJlZEZpbmlzaERlcmVmcygpCit7CisgICAgQVNT
RVJUKGlzQXVkaW9UaHJlYWQoKSAmJiBpc0dyYXBoT3duZXIoKSk7CisgICAgZm9yIChhdXRvJiBu
b2RlIDogbV9kZWZlcnJlZEZpbmlzaERlcmVmTGlzdCkKKyAgICAgICAgbm9kZS0+ZmluaXNoRGVy
ZWYoQXVkaW9Ob2RlOjpSZWZUeXBlQ29ubmVjdGlvbik7CisKKyAgICBtX2RlZmVycmVkRmluaXNo
RGVyZWZMaXN0LmNsZWFyKCk7Cit9CisKK3ZvaWQgV2ViS2l0QXVkaW9Db250ZXh0OjptYXJrRm9y
RGVsZXRpb24oQXVkaW9Ob2RlJiBub2RlKQoreworICAgIEFTU0VSVChpc0dyYXBoT3duZXIoKSk7
CisKKyAgICBpZiAoaXNBdWRpb1RocmVhZEZpbmlzaGVkKCkpCisgICAgICAgIG1fbm9kZXNUb0Rl
bGV0ZS5hcHBlbmQoJm5vZGUpOworICAgIGVsc2UKKyAgICAgICAgbV9ub2Rlc01hcmtlZEZvckRl
bGV0aW9uLmFwcGVuZCgmbm9kZSk7CisKKyAgICAvLyBUaGlzIGlzIHByb2JhYmx5IHRoZSBiZXN0
IHRpbWUgZm9yIHVzIHRvIHJlbW92ZSB0aGUgbm9kZSBmcm9tIGF1dG9tYXRpYyBwdWxsIGxpc3Qs
CisgICAgLy8gc2luY2UgYWxsIGNvbm5lY3Rpb25zIGFyZSBnb25lIGFuZCB3ZSBob2xkIHRoZSBn
cmFwaCBsb2NrLiBUaGVuIHdoZW4gaGFuZGxlUG9zdFJlbmRlclRhc2tzKCkKKyAgICAvLyBnZXRz
IGEgY2hhbmNlIHRvIHNjaGVkdWxlIHRoZSBkZWxldGlvbiB3b3JrLCB1cGRhdGVBdXRvbWF0aWNQ
dWxsTm9kZXMoKSBhbHNvIGdldHMgYSBjaGFuY2UgdG8KKyAgICAvLyBtb2RpZnkgbV9yZW5kZXJp
bmdBdXRvbWF0aWNQdWxsTm9kZXMuCisgICAgcmVtb3ZlQXV0b21hdGljUHVsbE5vZGUobm9kZSk7
Cit9CisKK3ZvaWQgV2ViS2l0QXVkaW9Db250ZXh0OjpzY2hlZHVsZU5vZGVEZWxldGlvbigpCit7
CisgICAgYm9vbCBpc0dvb2QgPSBtX2lzSW5pdGlhbGl6ZWQgJiYgaXNHcmFwaE93bmVyKCk7Cisg
ICAgQVNTRVJUKGlzR29vZCk7CisgICAgaWYgKCFpc0dvb2QpCisgICAgICAgIHJldHVybjsKKwor
ICAgIC8vIE1ha2Ugc3VyZSB0byBjYWxsIGRlbGV0ZU1hcmtlZE5vZGVzKCkgb24gbWFpbiB0aHJl
YWQuCisgICAgaWYgKG1fbm9kZXNNYXJrZWRGb3JEZWxldGlvbi5zaXplKCkgJiYgIW1faXNEZWxl
dGlvblNjaGVkdWxlZCkgeworICAgICAgICBtX25vZGVzVG9EZWxldGUuYXBwZW5kVmVjdG9yKG1f
bm9kZXNNYXJrZWRGb3JEZWxldGlvbik7CisgICAgICAgIG1fbm9kZXNNYXJrZWRGb3JEZWxldGlv
bi5jbGVhcigpOworCisgICAgICAgIG1faXNEZWxldGlvblNjaGVkdWxlZCA9IHRydWU7CisKKyAg
ICAgICAgY2FsbE9uTWFpblRocmVhZChbcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpXSgp
IG11dGFibGUgeworICAgICAgICAgICAgcHJvdGVjdGVkVGhpcy0+ZGVsZXRlTWFya2VkTm9kZXMo
KTsKKyAgICAgICAgfSk7CisgICAgfQorfQorCit2b2lkIFdlYktpdEF1ZGlvQ29udGV4dDo6ZGVs
ZXRlTWFya2VkTm9kZXMoKQoreworICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisKKyAgICAv
LyBQcm90ZWN0IHRoaXMgb2JqZWN0IGZyb20gYmVpbmcgZGVsZXRlZCBiZWZvcmUgd2UgcmVsZWFz
ZSB0aGUgbXV0ZXggbG9ja2VkIGJ5IEF1dG9Mb2NrZXIuCisgICAgUmVmPFdlYktpdEF1ZGlvQ29u
dGV4dD4gcHJvdGVjdGVkVGhpcygqdGhpcyk7CisgICAgeworICAgICAgICBBdXRvTG9ja2VyIGxv
Y2tlcigqdGhpcyk7CisKKyAgICAgICAgd2hpbGUgKG1fbm9kZXNUb0RlbGV0ZS5zaXplKCkpIHsK
KyAgICAgICAgICAgIEF1ZGlvTm9kZSogbm9kZSA9IG1fbm9kZXNUb0RlbGV0ZS50YWtlTGFzdCgp
OworCisgICAgICAgICAgICAvLyBCZWZvcmUgZGVsZXRpbmcgdGhlIG5vZGUsIGNsZWFyIG91dCBh
bnkgQXVkaW9Ob2RlSW5wdXRzIGZyb20gbV9kaXJ0eVN1bW1pbmdKdW5jdGlvbnMuCisgICAgICAg
ICAgICB1bnNpZ25lZCBudW1iZXJPZklucHV0cyA9IG5vZGUtPm51bWJlck9mSW5wdXRzKCk7Cisg
ICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbnVtYmVyT2ZJbnB1dHM7ICsraSkK
KyAgICAgICAgICAgICAgICBtX2RpcnR5U3VtbWluZ0p1bmN0aW9ucy5yZW1vdmUobm9kZS0+aW5w
dXQoaSkpOworCisgICAgICAgICAgICAvLyBCZWZvcmUgZGVsZXRpbmcgdGhlIG5vZGUsIGNsZWFy
IG91dCBhbnkgQXVkaW9Ob2RlT3V0cHV0cyBmcm9tIG1fZGlydHlBdWRpb05vZGVPdXRwdXRzLgor
ICAgICAgICAgICAgdW5zaWduZWQgbnVtYmVyT2ZPdXRwdXRzID0gbm9kZS0+bnVtYmVyT2ZPdXRw
dXRzKCk7CisgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbnVtYmVyT2ZPdXRw
dXRzOyArK2kpCisgICAgICAgICAgICAgICAgbV9kaXJ0eUF1ZGlvTm9kZU91dHB1dHMucmVtb3Zl
KG5vZGUtPm91dHB1dChpKSk7CisKKyAgICAgICAgICAgIC8vIEZpbmFsbHksIGRlbGV0ZSBpdC4K
KyAgICAgICAgICAgIGRlbGV0ZSBub2RlOworICAgICAgICB9CisgICAgICAgIG1faXNEZWxldGlv
blNjaGVkdWxlZCA9IGZhbHNlOworICAgIH0KK30KKwordm9pZCBXZWJLaXRBdWRpb0NvbnRleHQ6
Om1hcmtTdW1taW5nSnVuY3Rpb25EaXJ0eShBdWRpb1N1bW1pbmdKdW5jdGlvbiogc3VtbWluZ0p1
bmN0aW9uKQoreworICAgIEFTU0VSVChpc0dyYXBoT3duZXIoKSk7CisgICAgbV9kaXJ0eVN1bW1p
bmdKdW5jdGlvbnMuYWRkKHN1bW1pbmdKdW5jdGlvbik7Cit9CisKK3ZvaWQgV2ViS2l0QXVkaW9D
b250ZXh0OjpyZW1vdmVNYXJrZWRTdW1taW5nSnVuY3Rpb24oQXVkaW9TdW1taW5nSnVuY3Rpb24q
IHN1bW1pbmdKdW5jdGlvbikKK3sKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAgIEF1
dG9Mb2NrZXIgbG9ja2VyKCp0aGlzKTsKKyAgICBtX2RpcnR5U3VtbWluZ0p1bmN0aW9ucy5yZW1v
dmUoc3VtbWluZ0p1bmN0aW9uKTsKK30KKwordm9pZCBXZWJLaXRBdWRpb0NvbnRleHQ6Om1hcmtB
dWRpb05vZGVPdXRwdXREaXJ0eShBdWRpb05vZGVPdXRwdXQqIG91dHB1dCkKK3sKKyAgICBBU1NF
UlQoaXNHcmFwaE93bmVyKCkpOworICAgIG1fZGlydHlBdWRpb05vZGVPdXRwdXRzLmFkZChvdXRw
dXQpOworfQorCit2b2lkIFdlYktpdEF1ZGlvQ29udGV4dDo6aGFuZGxlRGlydHlBdWRpb1N1bW1p
bmdKdW5jdGlvbnMoKQoreworICAgIEFTU0VSVChpc0dyYXBoT3duZXIoKSk7CisKKyAgICBmb3Ig
KGF1dG8mIGp1bmN0aW9uIDogbV9kaXJ0eVN1bW1pbmdKdW5jdGlvbnMpCisgICAgICAgIGp1bmN0
aW9uLT51cGRhdGVSZW5kZXJpbmdTdGF0ZSgpOworCisgICAgbV9kaXJ0eVN1bW1pbmdKdW5jdGlv
bnMuY2xlYXIoKTsKK30KKwordm9pZCBXZWJLaXRBdWRpb0NvbnRleHQ6OmhhbmRsZURpcnR5QXVk
aW9Ob2RlT3V0cHV0cygpCit7CisgICAgQVNTRVJUKGlzR3JhcGhPd25lcigpKTsKKworICAgIGZv
ciAoYXV0byYgb3V0cHV0IDogbV9kaXJ0eUF1ZGlvTm9kZU91dHB1dHMpCisgICAgICAgIG91dHB1
dC0+dXBkYXRlUmVuZGVyaW5nU3RhdGUoKTsKKworICAgIG1fZGlydHlBdWRpb05vZGVPdXRwdXRz
LmNsZWFyKCk7Cit9CisKK3ZvaWQgV2ViS2l0QXVkaW9Db250ZXh0OjphZGRBdXRvbWF0aWNQdWxs
Tm9kZShBdWRpb05vZGUmIG5vZGUpCit7CisgICAgQVNTRVJUKGlzR3JhcGhPd25lcigpKTsKKwor
ICAgIGlmIChtX2F1dG9tYXRpY1B1bGxOb2Rlcy5hZGQoJm5vZGUpLmlzTmV3RW50cnkpCisgICAg
ICAgIG1fYXV0b21hdGljUHVsbE5vZGVzTmVlZFVwZGF0aW5nID0gdHJ1ZTsKK30KKwordm9pZCBX
ZWJLaXRBdWRpb0NvbnRleHQ6OnJlbW92ZUF1dG9tYXRpY1B1bGxOb2RlKEF1ZGlvTm9kZSYgbm9k
ZSkKK3sKKyAgICBBU1NFUlQoaXNHcmFwaE93bmVyKCkpOworCisgICAgaWYgKG1fYXV0b21hdGlj
UHVsbE5vZGVzLnJlbW92ZSgmbm9kZSkpCisgICAgICAgIG1fYXV0b21hdGljUHVsbE5vZGVzTmVl
ZFVwZGF0aW5nID0gdHJ1ZTsKK30KKwordm9pZCBXZWJLaXRBdWRpb0NvbnRleHQ6OnVwZGF0ZUF1
dG9tYXRpY1B1bGxOb2RlcygpCit7CisgICAgQVNTRVJUKGlzR3JhcGhPd25lcigpKTsKKworICAg
IGlmIChtX2F1dG9tYXRpY1B1bGxOb2Rlc05lZWRVcGRhdGluZykgeworICAgICAgICAvLyBDb3B5
IGZyb20gbV9hdXRvbWF0aWNQdWxsTm9kZXMgdG8gbV9yZW5kZXJpbmdBdXRvbWF0aWNQdWxsTm9k
ZXMuCisgICAgICAgIG1fcmVuZGVyaW5nQXV0b21hdGljUHVsbE5vZGVzLnJlc2l6ZShtX2F1dG9t
YXRpY1B1bGxOb2Rlcy5zaXplKCkpOworCisgICAgICAgIHVuc2lnbmVkIGkgPSAwOworICAgICAg
ICBmb3IgKGF1dG8mIG91dHB1dCA6IG1fYXV0b21hdGljUHVsbE5vZGVzKQorICAgICAgICAgICAg
bV9yZW5kZXJpbmdBdXRvbWF0aWNQdWxsTm9kZXNbaSsrXSA9IG91dHB1dDsKKworICAgICAgICBt
X2F1dG9tYXRpY1B1bGxOb2Rlc05lZWRVcGRhdGluZyA9IGZhbHNlOworICAgIH0KK30KKwordm9p
ZCBXZWJLaXRBdWRpb0NvbnRleHQ6OnByb2Nlc3NBdXRvbWF0aWNQdWxsTm9kZXMoc2l6ZV90IGZy
YW1lc1RvUHJvY2VzcykKK3sKKyAgICBBU1NFUlQoaXNBdWRpb1RocmVhZCgpKTsKKworICAgIGZv
ciAoYXV0byYgbm9kZSA6IG1fcmVuZGVyaW5nQXV0b21hdGljUHVsbE5vZGVzKQorICAgICAgICBu
b2RlLT5wcm9jZXNzSWZOZWNlc3NhcnkoZnJhbWVzVG9Qcm9jZXNzKTsKK30KKwordm9pZCBXZWJL
aXRBdWRpb0NvbnRleHQ6Om5vZGVXaWxsQmVnaW5QbGF5YmFjaygpCit7CisgICAgLy8gQ2FsbGVk
IGJ5IHNjaGVkdWxlZCBBdWRpb05vZGVzIHdoZW4gY2xpZW50cyBzY2hlZHVsZSB0aGVpciBzdGFy
dCB0aW1lcy4KKyAgICAvLyBQcmlvciB0byB0aGUgaW50cm9kdWN0aW9uIG9mIHN1c3BlbmQoKSwg
cmVzdW1lKCksIGFuZCBzdG9wKCksIHN0YXJ0aW5nCisgICAgLy8gYSBzY2hlZHVsZWQgQXVkaW9O
b2RlIHdvdWxkIHJlbW92ZSB0aGUgdXNlci1nZXN0dXJlIHJlc3RyaWN0aW9uLCBpZiBwcmVzZW50
LAorICAgIC8vIGFuZCB3b3VsZCB0aHVzIHVubXV0ZSB0aGUgY29udGV4dC4gTm93IHRoYXQgQXVk
aW9Db250ZXh0IHN0YXlzIGluIHRoZQorICAgIC8vICJzdXNwZW5kZWQiIHN0YXRlIGlmIGEgdXNl
ci1nZXN0dXJlIHJlc3RyaWN0aW9uIGlzIHByZXNlbnQsIHN0YXJ0aW5nIGEKKyAgICAvLyBzY2hl
ZHVsZSBBdWRpb05vZGUgc2hvdWxkIHNldCB0aGUgc3RhdGUgdG8gInJ1bm5pbmciLCBidXQgb25s
eSBpZiB0aGUKKyAgICAvLyB1c2VyLWdlc3R1cmUgcmVzdHJpY3Rpb24gaXMgc2V0LgorICAgIGlm
ICh1c2VyR2VzdHVyZVJlcXVpcmVkRm9yQXVkaW9TdGFydCgpKQorICAgICAgICBzdGFydFJlbmRl
cmluZygpOworfQorCitzdGF0aWMgYm9vbCBzaG91bGREb2N1bWVudEFsbG93V2ViQXVkaW9Ub0F1
dG9QbGF5KGNvbnN0IERvY3VtZW50JiBkb2N1bWVudCkKK3sKKyAgICBpZiAoZG9jdW1lbnQucHJv
Y2Vzc2luZ1VzZXJHZXN0dXJlRm9yTWVkaWEoKSB8fCBkb2N1bWVudC5pc0NhcHR1cmluZygpKQor
ICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICByZXR1cm4gZG9jdW1lbnQucXVpcmtzKCkuc2hvdWxk
QXV0b3BsYXlXZWJBdWRpb0ZvckFyYml0cmFyeVVzZXJHZXN0dXJlKCkgJiYgZG9jdW1lbnQudG9w
RG9jdW1lbnQoKS5oYXNIYWRVc2VySW50ZXJhY3Rpb24oKTsKK30KKworYm9vbCBXZWJLaXRBdWRp
b0NvbnRleHQ6OndpbGxCZWdpblBsYXliYWNrKCkKK3sKKyAgICBhdXRvKiBkb2N1bWVudCA9IHRo
aXMtPmRvY3VtZW50KCk7CisgICAgaWYgKCFkb2N1bWVudCkKKyAgICAgICAgcmV0dXJuIGZhbHNl
OworCisgICAgaWYgKHVzZXJHZXN0dXJlUmVxdWlyZWRGb3JBdWRpb1N0YXJ0KCkpIHsKKyAgICAg
ICAgaWYgKCFzaG91bGREb2N1bWVudEFsbG93V2ViQXVkaW9Ub0F1dG9QbGF5KCpkb2N1bWVudCkp
IHsKKyAgICAgICAgICAgIEFMV0FZU19MT0coTE9HSURFTlRJRklFUiwgInJldHVybmluZyBmYWxz
ZSwgbm90IHByb2Nlc3NpbmcgdXNlciBnZXN0dXJlIG9yIGNhcHR1cmluZyIpOworICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisgICAgICAgIHJlbW92ZUJlaGF2aW9yUmVzdHJp
Y3Rpb24oV2ViS2l0QXVkaW9Db250ZXh0OjpSZXF1aXJlVXNlckdlc3R1cmVGb3JBdWRpb1N0YXJ0
UmVzdHJpY3Rpb24pOworICAgIH0KKworICAgIGlmIChwYWdlQ29uc2VudFJlcXVpcmVkRm9yQXVk
aW9TdGFydCgpKSB7CisgICAgICAgIGF1dG8qIHBhZ2UgPSBkb2N1bWVudC0+cGFnZSgpOworICAg
ICAgICBpZiAocGFnZSAmJiAhcGFnZS0+Y2FuU3RhcnRNZWRpYSgpKSB7CisgICAgICAgICAgICBk
b2N1bWVudC0+YWRkTWVkaWFDYW5TdGFydExpc3RlbmVyKCp0aGlzKTsKKyAgICAgICAgICAgIEFM
V0FZU19MT0coTE9HSURFTlRJRklFUiwgInJldHVybmluZyBmYWxzZSwgcGFnZSBkb2Vzbid0IGFs
bG93IG1lZGlhIHRvIHN0YXJ0Iik7CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAg
IH0KKyAgICAgICAgcmVtb3ZlQmVoYXZpb3JSZXN0cmljdGlvbihXZWJLaXRBdWRpb0NvbnRleHQ6
OlJlcXVpcmVQYWdlQ29uc2VudEZvckF1ZGlvU3RhcnRSZXN0cmljdGlvbik7CisgICAgfQorCisg
ICAgYXV0byB3aWxsQmVnaW4gPSBtX21lZGlhU2Vzc2lvbi0+Y2xpZW50V2lsbEJlZ2luUGxheWJh
Y2soKTsKKyAgICBBTFdBWVNfTE9HKExPR0lERU5USUZJRVIsICJyZXR1cm5pbmcgIiwgd2lsbEJl
Z2luKTsKKworICAgIHJldHVybiB3aWxsQmVnaW47Cit9CisKK2Jvb2wgV2ViS2l0QXVkaW9Db250
ZXh0Ojp3aWxsUGF1c2VQbGF5YmFjaygpCit7CisgICAgYXV0byogZG9jdW1lbnQgPSB0aGlzLT5k
b2N1bWVudCgpOworICAgIGlmICghZG9jdW1lbnQpCisgICAgICAgIHJldHVybiBmYWxzZTsKKwor
ICAgIGlmICh1c2VyR2VzdHVyZVJlcXVpcmVkRm9yQXVkaW9TdGFydCgpKSB7CisgICAgICAgIGlm
ICghZG9jdW1lbnQtPnByb2Nlc3NpbmdVc2VyR2VzdHVyZUZvck1lZGlhKCkpCisgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgICAgIHJlbW92ZUJlaGF2aW9yUmVzdHJpY3Rpb24oV2ViS2l0
QXVkaW9Db250ZXh0OjpSZXF1aXJlVXNlckdlc3R1cmVGb3JBdWRpb1N0YXJ0UmVzdHJpY3Rpb24p
OworICAgIH0KKworICAgIGlmIChwYWdlQ29uc2VudFJlcXVpcmVkRm9yQXVkaW9TdGFydCgpKSB7
CisgICAgICAgIGF1dG8qIHBhZ2UgPSBkb2N1bWVudC0+cGFnZSgpOworICAgICAgICBpZiAocGFn
ZSAmJiAhcGFnZS0+Y2FuU3RhcnRNZWRpYSgpKSB7CisgICAgICAgICAgICBkb2N1bWVudC0+YWRk
TWVkaWFDYW5TdGFydExpc3RlbmVyKCp0aGlzKTsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
KyAgICAgICAgfQorICAgICAgICByZW1vdmVCZWhhdmlvclJlc3RyaWN0aW9uKFdlYktpdEF1ZGlv
Q29udGV4dDo6UmVxdWlyZVBhZ2VDb25zZW50Rm9yQXVkaW9TdGFydFJlc3RyaWN0aW9uKTsKKyAg
ICB9CisKKyAgICByZXR1cm4gbV9tZWRpYVNlc3Npb24tPmNsaWVudFdpbGxQYXVzZVBsYXliYWNr
KCk7Cit9CisKK3ZvaWQgV2ViS2l0QXVkaW9Db250ZXh0OjpzdGFydFJlbmRlcmluZygpCit7Cisg
ICAgQUxXQVlTX0xPRyhMT0dJREVOVElGSUVSKTsKKyAgICBpZiAobV9pc1N0b3BTY2hlZHVsZWQg
fHwgIXdpbGxCZWdpblBsYXliYWNrKCkpCisgICAgICAgIHJldHVybjsKKworICAgIG1ha2VQZW5k
aW5nQWN0aXZpdHkoKTsKKworICAgIGRlc3RpbmF0aW9uKCktPnN0YXJ0UmVuZGVyaW5nKCk7Cisg
ICAgc2V0U3RhdGUoU3RhdGU6OlJ1bm5pbmcpOworfQorCit2b2lkIFdlYktpdEF1ZGlvQ29udGV4
dDo6bWVkaWFDYW5TdGFydChEb2N1bWVudCYgZG9jdW1lbnQpCit7CisgICAgQVNTRVJUX1VOVVNF
RChkb2N1bWVudCwgJmRvY3VtZW50ID09IHRoaXMtPmRvY3VtZW50KCkpOworICAgIHJlbW92ZUJl
aGF2aW9yUmVzdHJpY3Rpb24oV2ViS2l0QXVkaW9Db250ZXh0OjpSZXF1aXJlUGFnZUNvbnNlbnRG
b3JBdWRpb1N0YXJ0UmVzdHJpY3Rpb24pOworICAgIG1heVJlc3VtZVBsYXliYWNrKHRydWUpOwor
fQorCitNZWRpYVByb2R1Y2VyOjpNZWRpYVN0YXRlRmxhZ3MgV2ViS2l0QXVkaW9Db250ZXh0Ojpt
ZWRpYVN0YXRlKCkgY29uc3QKK3sKKyAgICBpZiAoIW1faXNTdG9wU2NoZWR1bGVkICYmIG1fZGVz
dGluYXRpb25Ob2RlICYmIG1fZGVzdGluYXRpb25Ob2RlLT5pc1BsYXlpbmdBdWRpbygpKQorICAg
ICAgICByZXR1cm4gTWVkaWFQcm9kdWNlcjo6SXNQbGF5aW5nQXVkaW87CisKKyAgICByZXR1cm4g
TWVkaWFQcm9kdWNlcjo6SXNOb3RQbGF5aW5nOworfQorCit2b2lkIFdlYktpdEF1ZGlvQ29udGV4
dDo6cGFnZU11dGVkU3RhdGVEaWRDaGFuZ2UoKQoreworICAgIGlmIChtX2Rlc3RpbmF0aW9uTm9k
ZSAmJiBkb2N1bWVudCgpICYmIGRvY3VtZW50KCktPnBhZ2UoKSkKKyAgICAgICAgbV9kZXN0aW5h
dGlvbk5vZGUtPnNldE11dGVkKGRvY3VtZW50KCktPnBhZ2UoKS0+aXNBdWRpb011dGVkKCkpOwor
fQorCit2b2lkIFdlYktpdEF1ZGlvQ29udGV4dDo6aXNQbGF5aW5nQXVkaW9EaWRDaGFuZ2UoKQor
eworICAgIC8vIE1ha2Ugc3VyZSB0byBjYWxsIERvY3VtZW50Ojp1cGRhdGVJc1BsYXlpbmdNZWRp
YSgpIG9uIHRoZSBtYWluIHRocmVhZCwgc2luY2UKKyAgICAvLyB3ZSBjb3VsZCBiZSBvbiB0aGUg
YXVkaW8gSS9PIHRocmVhZCBoZXJlIGFuZCB0aGUgY2FsbCBpbnRvIFdlYkNvcmUgY291bGQgYmxv
Y2suCisgICAgY2FsbE9uTWFpblRocmVhZChbcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMp
XSB7CisgICAgICAgIGlmIChwcm90ZWN0ZWRUaGlzLT5kb2N1bWVudCgpKQorICAgICAgICAgICAg
cHJvdGVjdGVkVGhpcy0+ZG9jdW1lbnQoKS0+dXBkYXRlSXNQbGF5aW5nTWVkaWEoKTsKKyAgICB9
KTsKK30KKwordm9pZCBXZWJLaXRBdWRpb0NvbnRleHQ6OmZpbmlzaGVkUmVuZGVyaW5nKGJvb2wg
ZGlkUmVuZGVyaW5nKQoreworICAgIEFTU0VSVChpc09mZmxpbmVDb250ZXh0KCkpOworICAgIEFT
U0VSVChpc01haW5UaHJlYWQoKSk7CisgICAgaWYgKCFpc01haW5UaHJlYWQoKSkKKyAgICAgICAg
cmV0dXJuOworCisgICAgYXV0byBjbGVhclBlbmRpbmdBY3Rpdml0eUlmRXhpdEVhcmx5ID0gV1RG
OjptYWtlU2NvcGVFeGl0KFt0aGlzXSB7CisgICAgICAgIGNsZWFyUGVuZGluZ0FjdGl2aXR5KCk7
CisgICAgfSk7CisKKworICAgIEFMV0FZU19MT0coTE9HSURFTlRJRklFUik7CisKKyAgICBpZiAo
IWRpZFJlbmRlcmluZykKKyAgICAgICAgcmV0dXJuOworCisgICAgQXVkaW9CdWZmZXIqIHJlbmRl
cmVkQnVmZmVyID0gbV9yZW5kZXJUYXJnZXQuZ2V0KCk7CisgICAgc2V0U3RhdGUoU3RhdGU6OkNs
b3NlZCk7CisKKyAgICBBU1NFUlQocmVuZGVyZWRCdWZmZXIpOworICAgIGlmICghcmVuZGVyZWRC
dWZmZXIpCisgICAgICAgIHJldHVybjsKKworICAgIC8vIEF2b2lkIGZpcmluZyB0aGUgZXZlbnQg
aWYgdGhlIGRvY3VtZW50IGhhcyBhbHJlYWR5IGdvbmUgYXdheS4KKyAgICBpZiAobV9pc1N0b3BT
Y2hlZHVsZWQpCisgICAgICAgIHJldHVybjsKKworICAgIGNsZWFyUGVuZGluZ0FjdGl2aXR5SWZF
eGl0RWFybHkucmVsZWFzZSgpOworICAgIG1fZXZlbnRRdWV1ZS0+ZW5xdWV1ZUV2ZW50KE9mZmxp
bmVBdWRpb0NvbXBsZXRpb25FdmVudDo6Y3JlYXRlKHJlbmRlcmVkQnVmZmVyKSk7Cit9CisKK3Zv
aWQgV2ViS2l0QXVkaW9Db250ZXh0OjpkaXNwYXRjaEV2ZW50KEV2ZW50JiBldmVudCkKK3sKKyAg
ICBFdmVudFRhcmdldDo6ZGlzcGF0Y2hFdmVudChldmVudCk7CisgICAgaWYgKGV2ZW50LmV2ZW50
SW50ZXJmYWNlKCkgPT0gT2ZmbGluZUF1ZGlvQ29tcGxldGlvbkV2ZW50SW50ZXJmYWNlVHlwZSkK
KyAgICAgICAgY2xlYXJQZW5kaW5nQWN0aXZpdHkoKTsKK30KKwordm9pZCBXZWJLaXRBdWRpb0Nv
bnRleHQ6OmluY3JlbWVudEFjdGl2ZVNvdXJjZUNvdW50KCkKK3sKKyAgICArK21fYWN0aXZlU291
cmNlQ291bnQ7Cit9CisKK3ZvaWQgV2ViS2l0QXVkaW9Db250ZXh0OjpkZWNyZW1lbnRBY3RpdmVT
b3VyY2VDb3VudCgpCit7CisgICAgLS1tX2FjdGl2ZVNvdXJjZUNvdW50OworfQorCit2b2lkIFdl
YktpdEF1ZGlvQ29udGV4dDo6c3VzcGVuZFJlbmRlcmluZyhET01Qcm9taXNlRGVmZXJyZWQ8dm9p
ZD4mJiBwcm9taXNlKQoreworICAgIGlmIChpc09mZmxpbmVDb250ZXh0KCkgfHwgbV9pc1N0b3BT
Y2hlZHVsZWQpIHsKKyAgICAgICAgcHJvbWlzZS5yZWplY3QoSW52YWxpZFN0YXRlRXJyb3IpOwor
ICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgaWYgKG1fc3RhdGUgPT0gU3RhdGU6OlN1c3Bl
bmRlZCkgeworICAgICAgICBwcm9taXNlLnJlc29sdmUoKTsKKyAgICAgICAgcmV0dXJuOworICAg
IH0KKworICAgIGlmIChtX3N0YXRlID09IFN0YXRlOjpDbG9zZWQgfHwgbV9zdGF0ZSA9PSBTdGF0
ZTo6SW50ZXJydXB0ZWQgfHwgIW1fZGVzdGluYXRpb25Ob2RlKSB7CisgICAgICAgIHByb21pc2Uu
cmVqZWN0KCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBhZGRSZWFjdGlvbihTdGF0
ZTo6U3VzcGVuZGVkLCBXVEZNb3ZlKHByb21pc2UpKTsKKworICAgIGlmICghd2lsbFBhdXNlUGxh
eWJhY2soKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgbGF6eUluaXRpYWxpemUoKTsKKworICAg
IG1fZGVzdGluYXRpb25Ob2RlLT5zdXNwZW5kKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJl
ZigqdGhpcyldIHsKKyAgICAgICAgc2V0U3RhdGUoU3RhdGU6OlN1c3BlbmRlZCk7CisgICAgfSk7
Cit9CisKK3ZvaWQgV2ViS2l0QXVkaW9Db250ZXh0OjpyZXN1bWVSZW5kZXJpbmcoRE9NUHJvbWlz
ZURlZmVycmVkPHZvaWQ+JiYgcHJvbWlzZSkKK3sKKyAgICBpZiAoaXNPZmZsaW5lQ29udGV4dCgp
IHx8IG1faXNTdG9wU2NoZWR1bGVkKSB7CisgICAgICAgIHByb21pc2UucmVqZWN0KEludmFsaWRT
dGF0ZUVycm9yKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlmIChtX3N0YXRlID09
IFN0YXRlOjpSdW5uaW5nKSB7CisgICAgICAgIHByb21pc2UucmVzb2x2ZSgpOworICAgICAgICBy
ZXR1cm47CisgICAgfQorCisgICAgaWYgKG1fc3RhdGUgPT0gU3RhdGU6OkNsb3NlZCB8fCAhbV9k
ZXN0aW5hdGlvbk5vZGUpIHsKKyAgICAgICAgcHJvbWlzZS5yZWplY3QoKTsKKyAgICAgICAgcmV0
dXJuOworICAgIH0KKworICAgIGFkZFJlYWN0aW9uKFN0YXRlOjpSdW5uaW5nLCBXVEZNb3ZlKHBy
b21pc2UpKTsKKworICAgIGlmICghd2lsbEJlZ2luUGxheWJhY2soKSkKKyAgICAgICAgcmV0dXJu
OworCisgICAgbGF6eUluaXRpYWxpemUoKTsKKworICAgIG1fZGVzdGluYXRpb25Ob2RlLT5yZXN1
bWUoW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKV0geworICAgICAgICBzZXRT
dGF0ZShTdGF0ZTo6UnVubmluZyk7CisgICAgfSk7Cit9CisKK3ZvaWQgV2ViS2l0QXVkaW9Db250
ZXh0OjpjbG9zZShET01Qcm9taXNlRGVmZXJyZWQ8dm9pZD4mJiBwcm9taXNlKQoreworICAgIGlm
IChpc09mZmxpbmVDb250ZXh0KCkgfHwgbV9pc1N0b3BTY2hlZHVsZWQpIHsKKyAgICAgICAgcHJv
bWlzZS5yZWplY3QoSW52YWxpZFN0YXRlRXJyb3IpOworICAgICAgICByZXR1cm47CisgICAgfQor
CisgICAgaWYgKG1fc3RhdGUgPT0gU3RhdGU6OkNsb3NlZCB8fCAhbV9kZXN0aW5hdGlvbk5vZGUp
IHsKKyAgICAgICAgcHJvbWlzZS5yZXNvbHZlKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisK
KyAgICBhZGRSZWFjdGlvbihTdGF0ZTo6Q2xvc2VkLCBXVEZNb3ZlKHByb21pc2UpKTsKKworICAg
IGxhenlJbml0aWFsaXplKCk7CisKKyAgICBtX2Rlc3RpbmF0aW9uTm9kZS0+Y2xvc2UoW3RoaXMs
IHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKV0geworICAgICAgICBzZXRTdGF0ZShTdGF0
ZTo6Q2xvc2VkKTsKKyAgICAgICAgdW5pbml0aWFsaXplKCk7CisgICAgfSk7Cit9CisKKwordm9p
ZCBXZWJLaXRBdWRpb0NvbnRleHQ6OnN1c3BlbmRQbGF5YmFjaygpCit7CisgICAgaWYgKCFtX2Rl
c3RpbmF0aW9uTm9kZSB8fCBtX3N0YXRlID09IFN0YXRlOjpDbG9zZWQpCisgICAgICAgIHJldHVy
bjsKKworICAgIGlmIChtX3N0YXRlID09IFN0YXRlOjpTdXNwZW5kZWQpIHsKKyAgICAgICAgaWYg
KG1fbWVkaWFTZXNzaW9uLT5zdGF0ZSgpID09IFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpJbnRlcnJ1
cHRlZCkKKyAgICAgICAgICAgIHNldFN0YXRlKFN0YXRlOjpJbnRlcnJ1cHRlZCk7CisgICAgICAg
IHJldHVybjsKKyAgICB9CisKKyAgICBsYXp5SW5pdGlhbGl6ZSgpOworCisgICAgbV9kZXN0aW5h
dGlvbk5vZGUtPnN1c3BlbmQoW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKV0g
eworICAgICAgICBib29sIGludGVycnVwdGVkID0gbV9tZWRpYVNlc3Npb24tPnN0YXRlKCkgPT0g
UGxhdGZvcm1NZWRpYVNlc3Npb246OkludGVycnVwdGVkOworICAgICAgICBzZXRTdGF0ZShpbnRl
cnJ1cHRlZCA/IFN0YXRlOjpJbnRlcnJ1cHRlZCA6IFN0YXRlOjpTdXNwZW5kZWQpOworICAgIH0p
OworfQorCit2b2lkIFdlYktpdEF1ZGlvQ29udGV4dDo6bWF5UmVzdW1lUGxheWJhY2soYm9vbCBz
aG91bGRSZXN1bWUpCit7CisgICAgaWYgKCFtX2Rlc3RpbmF0aW9uTm9kZSB8fCBtX3N0YXRlID09
IFN0YXRlOjpDbG9zZWQgfHwgbV9zdGF0ZSA9PSBTdGF0ZTo6UnVubmluZykKKyAgICAgICAgcmV0
dXJuOworCisgICAgaWYgKCFzaG91bGRSZXN1bWUpIHsKKyAgICAgICAgc2V0U3RhdGUoU3RhdGU6
OlN1c3BlbmRlZCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpZiAoIXdpbGxCZWdp
blBsYXliYWNrKCkpCisgICAgICAgIHJldHVybjsKKworICAgIGxhenlJbml0aWFsaXplKCk7CisK
KyAgICBtX2Rlc3RpbmF0aW9uTm9kZS0+cmVzdW1lKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFr
ZVJlZigqdGhpcyldIHsKKyAgICAgICAgc2V0U3RhdGUoU3RhdGU6OlJ1bm5pbmcpOworICAgIH0p
OworfQorCit2b2lkIFdlYktpdEF1ZGlvQ29udGV4dDo6cG9zdFRhc2soV1RGOjpGdW5jdGlvbjx2
b2lkKCk+JiYgdGFzaykKK3sKKyAgICBpZiAobV9pc1N0b3BTY2hlZHVsZWQpCisgICAgICAgIHJl
dHVybjsKKworICAgIG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+cG9zdFRhc2soV1RGTW92ZSh0
YXNrKSk7Cit9CisKK2NvbnN0IFNlY3VyaXR5T3JpZ2luKiBXZWJLaXRBdWRpb0NvbnRleHQ6Om9y
aWdpbigpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dCA/IG1f
c2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+c2VjdXJpdHlPcmlnaW4oKSA6IG51bGxwdHI7Cit9CisK
K3ZvaWQgV2ViS2l0QXVkaW9Db250ZXh0OjphZGRDb25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNl
IHNvdXJjZSwgTWVzc2FnZUxldmVsIGxldmVsLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCit7Cisg
ICAgaWYgKG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dCkKKyAgICAgICAgbV9zY3JpcHRFeGVjdXRp
b25Db250ZXh0LT5hZGRDb25zb2xlTWVzc2FnZShzb3VyY2UsIGxldmVsLCBtZXNzYWdlKTsKK30K
Kwordm9pZCBXZWJLaXRBdWRpb0NvbnRleHQ6OmNsZWFyUGVuZGluZ0FjdGl2aXR5KCkKK3sKKyAg
ICBpZiAoIW1fcGVuZGluZ0FjdGl2aXR5KQorICAgICAgICByZXR1cm47CisgICAgbV9wZW5kaW5n
QWN0aXZpdHkgPSBudWxscHRyOworICAgIC8vIEZJWE1FOiBSZW1vdmUgdGhpcyBzcGVjaWZpYyBk
ZXJlZigpIGFuZCByZWYoKSBjYWxsIGluIG1ha2VQZW5kaW5nQWN0aXZpdHkoKS4KKyAgICBkZXJl
ZigpOworfQorCit2b2lkIFdlYktpdEF1ZGlvQ29udGV4dDo6bWFrZVBlbmRpbmdBY3Rpdml0eSgp
Cit7CisgICAgaWYgKG1fcGVuZGluZ0FjdGl2aXR5KQorICAgICAgICByZXR1cm47CisgICAgbV9w
ZW5kaW5nQWN0aXZpdHkgPSBBY3RpdmVET01PYmplY3Q6Om1ha2VQZW5kaW5nQWN0aXZpdHkoKnRo
aXMpOworICAgIHJlZigpOworfQorCisjaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECitXVEZMb2dD
aGFubmVsJiBXZWJLaXRBdWRpb0NvbnRleHQ6OmxvZ0NoYW5uZWwoKSBjb25zdAoreworICAgIHJl
dHVybiBMb2dNZWRpYTsKK30KKyNlbmRpZgorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNl
bmRpZiAvLyBFTkFCTEUoV0VCX0FVRElPKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJhdWRpby9XZWJLaXRBdWRpb0NvbnRleHQuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViYXVkaW8vV2ViS2l0QXVkaW9Db250ZXh0LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAuLjdlYjUzNzI1ZTU0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJhdWRpby9XZWJLaXRBdWRpb0NvbnRleHQuaApAQCAtMCwwICsxLDQy
MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE2LTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04KKyAqIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUworICogU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJBY3RpdmVET01P
YmplY3QuaCIKKyNpbmNsdWRlICJBc3luY0F1ZGlvRGVjb2Rlci5oIgorI2luY2x1ZGUgIkF1ZGlv
QnVzLmgiCisjaW5jbHVkZSAiQXVkaW9Db250ZXh0LmgiCisjaW5jbHVkZSAiQXVkaW9Db250ZXh0
U3RhdGUuaCIKKyNpbmNsdWRlICJBdWRpb0Rlc3RpbmF0aW9uTm9kZS5oIgorI2luY2x1ZGUgIkV2
ZW50VGFyZ2V0LmgiCisjaW5jbHVkZSAiTWVkaWFDYW5TdGFydExpc3RlbmVyLmgiCisjaW5jbHVk
ZSAiTWVkaWFQcm9kdWNlci5oIgorI2luY2x1ZGUgIlBsYXRmb3JtTWVkaWFTZXNzaW9uLmgiCisj
aW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgorI2luY2x1ZGUgIlZpc2liaWxpdHlD
aGFuZ2VDbGllbnQuaCIKKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9Db25zb2xlVHlwZXMuaD4K
KyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9GbG9hdDMyQXJyYXkuaD4KKyNpbmNsdWRlIDxhdG9t
aWM+CisjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KKyNpbmNsdWRlIDx3dGYvTG9nZ2VySGVscGVy
Lmg+CisjaW5jbHVkZSA8d3RmL01haW5UaHJlYWQuaD4KKyNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+
CisjaW5jbHVkZSA8d3RmL1RocmVhZFNhZmVSZWZDb3VudGVkLmg+CisjaW5jbHVkZSA8d3RmL1Ro
cmVhZGluZy5oPgorI2luY2x1ZGUgPHd0Zi9VbmlxdWVSZWYuaD4KKyNpbmNsdWRlIDx3dGYvVmVj
dG9yLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvQXRvbVN0cmluZ0hhc2guaD4KKworbmFtZXNwYWNl
IFdlYkNvcmUgeworCitjbGFzcyBBbmFseXNlck5vZGU7CitjbGFzcyBBdWRpb0J1ZmZlcjsKK2Ns
YXNzIEF1ZGlvQnVmZmVyQ2FsbGJhY2s7CitjbGFzcyBBdWRpb0J1ZmZlclNvdXJjZU5vZGU7Citj
bGFzcyBBdWRpb0xpc3RlbmVyOworY2xhc3MgQXVkaW9TdW1taW5nSnVuY3Rpb247CitjbGFzcyBC
aXF1YWRGaWx0ZXJOb2RlOworY2xhc3MgQ2hhbm5lbE1lcmdlck5vZGU7CitjbGFzcyBDaGFubmVs
U3BsaXR0ZXJOb2RlOworY2xhc3MgQ29udm9sdmVyTm9kZTsKK2NsYXNzIERlbGF5Tm9kZTsKK2Ns
YXNzIERvY3VtZW50OworY2xhc3MgRHluYW1pY3NDb21wcmVzc29yTm9kZTsKK2NsYXNzIEdhaW5O
b2RlOworY2xhc3MgSFRNTE1lZGlhRWxlbWVudDsKK2NsYXNzIE1haW5UaHJlYWRHZW5lcmljRXZl
bnRRdWV1ZTsKK2NsYXNzIE1lZGlhRWxlbWVudEF1ZGlvU291cmNlTm9kZTsKK2NsYXNzIE1lZGlh
U3RyZWFtOworY2xhc3MgTWVkaWFTdHJlYW1BdWRpb0Rlc3RpbmF0aW9uTm9kZTsKK2NsYXNzIE1l
ZGlhU3RyZWFtQXVkaW9Tb3VyY2VOb2RlOworY2xhc3MgT3NjaWxsYXRvck5vZGU7CitjbGFzcyBQ
ZXJpb2RpY1dhdmU7CitjbGFzcyBTY3JpcHRQcm9jZXNzb3JOb2RlOworY2xhc3MgU2VjdXJpdHlP
cmlnaW47CitjbGFzcyBXYXZlU2hhcGVyTm9kZTsKK2NsYXNzIFdlYktpdEF1ZGlvUGFubmVyTm9k
ZTsKKwordGVtcGxhdGU8dHlwZW5hbWUgSURMVHlwZT4gY2xhc3MgRE9NUHJvbWlzZURlZmVycmVk
OworCisvLyBBdWRpb0NvbnRleHQgaXMgdGhlIGNvcm5lcnN0b25lIG9mIHRoZSB3ZWIgYXVkaW8g
QVBJIGFuZCBhbGwgQXVkaW9Ob2RlcyBhcmUgY3JlYXRlZCBmcm9tIGl0LgorLy8gRm9yIHRocmVh
ZCBzYWZldHkgYmV0d2VlbiB0aGUgYXVkaW8gdGhyZWFkIGFuZCB0aGUgbWFpbiB0aHJlYWQsIGl0
IGhhcyBhIHJlbmRlcmluZyBncmFwaCBsb2NraW5nIG1lY2hhbmlzbS4KKworY2xhc3MgV2ViS2l0
QXVkaW9Db250ZXh0CisgICAgOiBwdWJsaWMgQXVkaW9Db250ZXh0QmFzZQorICAgICwgcHJpdmF0
ZSBQbGF0Zm9ybU1lZGlhU2Vzc2lvbkNsaWVudAorICAgICwgcHJpdmF0ZSBWaXNpYmlsaXR5Q2hh
bmdlQ2xpZW50Cit7CitwdWJsaWM6CisgICAgLy8gQ3JlYXRlIGFuIFdlYktpdEF1ZGlvQ29udGV4
dCBmb3IgcmVuZGVyaW5nIHRvIHRoZSBhdWRpbyBoYXJkd2FyZS4KKyAgICBzdGF0aWMgRXhjZXB0
aW9uT3I8UmVmPFdlYktpdEF1ZGlvQ29udGV4dD4+IGNyZWF0ZShEb2N1bWVudCYpOworCisgICAg
dmlydHVhbCB+V2ViS2l0QXVkaW9Db250ZXh0KCk7CisKKyAgICBib29sIGlzSW5pdGlhbGl6ZWQo
KSBjb25zdCBmaW5hbDsKKworICAgIGJvb2wgaXNPZmZsaW5lQ29udGV4dCgpIGNvbnN0IGZpbmFs
IHsgcmV0dXJuIG1faXNPZmZsaW5lQ29udGV4dDsgfQorCisgICAgRG9jdW1lbnRJZGVudGlmaWVy
IGhvc3RpbmdEb2N1bWVudElkZW50aWZpZXIoKSBjb25zdCBmaW5hbDsKKworICAgIEF1ZGlvRGVz
dGluYXRpb25Ob2RlKiBkZXN0aW5hdGlvbigpIHsgcmV0dXJuIG1fZGVzdGluYXRpb25Ob2RlLmdl
dCgpOyB9CisgICAgc2l6ZV90IGN1cnJlbnRTYW1wbGVGcmFtZSgpIGNvbnN0IGZpbmFsIHsgcmV0
dXJuIG1fZGVzdGluYXRpb25Ob2RlID8gbV9kZXN0aW5hdGlvbk5vZGUtPmN1cnJlbnRTYW1wbGVG
cmFtZSgpIDogMDsgfQorICAgIGRvdWJsZSBjdXJyZW50VGltZSgpIGNvbnN0IGZpbmFsIHsgcmV0
dXJuIG1fZGVzdGluYXRpb25Ob2RlID8gbV9kZXN0aW5hdGlvbk5vZGUtPmN1cnJlbnRUaW1lKCkg
OiAwLjsgfQorICAgIGZsb2F0IHNhbXBsZVJhdGUoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2Rl
c3RpbmF0aW9uTm9kZSA/IG1fZGVzdGluYXRpb25Ob2RlLT5zYW1wbGVSYXRlKCkgOiAwLmY7IH0K
KyAgICB1bnNpZ25lZCBsb25nIGFjdGl2ZVNvdXJjZUNvdW50KCkgY29uc3QgeyByZXR1cm4gc3Rh
dGljX2Nhc3Q8dW5zaWduZWQgbG9uZz4obV9hY3RpdmVTb3VyY2VDb3VudCk7IH0KKworICAgIHZv
aWQgaW5jcmVtZW50QWN0aXZlU291cmNlQ291bnQoKSBmaW5hbDsKKyAgICB2b2lkIGRlY3JlbWVu
dEFjdGl2ZVNvdXJjZUNvdW50KCkgZmluYWw7CisKKyAgICBFeGNlcHRpb25PcjxSZWY8QXVkaW9C
dWZmZXI+PiBjcmVhdGVCdWZmZXIodW5zaWduZWQgbnVtYmVyT2ZDaGFubmVscywgc2l6ZV90IG51
bWJlck9mRnJhbWVzLCBmbG9hdCBzYW1wbGVSYXRlKTsKKyAgICBFeGNlcHRpb25PcjxSZWY8QXVk
aW9CdWZmZXI+PiBjcmVhdGVCdWZmZXIoQXJyYXlCdWZmZXImLCBib29sIG1peFRvTW9ubyk7CisK
KyAgICAvLyBBc3luY2hyb25vdXMgYXVkaW8gZmlsZSBkYXRhIGRlY29kaW5nLgorICAgIHZvaWQg
ZGVjb2RlQXVkaW9EYXRhKFJlZjxBcnJheUJ1ZmZlcj4mJiwgUmVmUHRyPEF1ZGlvQnVmZmVyQ2Fs
bGJhY2s+JiYsIFJlZlB0cjxBdWRpb0J1ZmZlckNhbGxiYWNrPiYmKTsKKworICAgIEF1ZGlvTGlz
dGVuZXIqIGxpc3RlbmVyKCkgeyByZXR1cm4gbV9saXN0ZW5lci5nZXQoKTsgfQorCisgICAgdm9p
ZCBzdXNwZW5kUmVuZGVyaW5nKERPTVByb21pc2VEZWZlcnJlZDx2b2lkPiYmKTsKKyAgICB2b2lk
IHJlc3VtZVJlbmRlcmluZyhET01Qcm9taXNlRGVmZXJyZWQ8dm9pZD4mJik7CisgICAgdm9pZCBj
bG9zZShET01Qcm9taXNlRGVmZXJyZWQ8dm9pZD4mJik7CisKKyAgICB1c2luZyBTdGF0ZSA9IEF1
ZGlvQ29udGV4dFN0YXRlOworICAgIFN0YXRlIHN0YXRlKCkgY29uc3Q7CisgICAgYm9vbCBpc0Ns
b3NlZCgpIGNvbnN0IHsgcmV0dXJuIG1fc3RhdGUgPT0gU3RhdGU6OkNsb3NlZDsgfQorCisgICAg
Ym9vbCB3b3VsZFRhaW50T3JpZ2luKGNvbnN0IFVSTCYpIGNvbnN0OworCisgICAgLy8gVGhlIEF1
ZGlvTm9kZSBjcmVhdGUgbWV0aG9kcyBhcmUgY2FsbGVkIG9uIHRoZSBtYWluIHRocmVhZCAoZnJv
bSBKYXZhU2NyaXB0KS4KKyAgICBFeGNlcHRpb25PcjxSZWY8QXVkaW9CdWZmZXJTb3VyY2VOb2Rl
Pj4gY3JlYXRlQnVmZmVyU291cmNlKCk7CisjaWYgRU5BQkxFKFZJREVPKQorICAgIEV4Y2VwdGlv
bk9yPFJlZjxNZWRpYUVsZW1lbnRBdWRpb1NvdXJjZU5vZGU+PiBjcmVhdGVNZWRpYUVsZW1lbnRT
b3VyY2UoSFRNTE1lZGlhRWxlbWVudCYpOworI2VuZGlmCisjaWYgRU5BQkxFKE1FRElBX1NUUkVB
TSkKKyAgICBFeGNlcHRpb25PcjxSZWY8TWVkaWFTdHJlYW1BdWRpb1NvdXJjZU5vZGU+PiBjcmVh
dGVNZWRpYVN0cmVhbVNvdXJjZShNZWRpYVN0cmVhbSYpOworICAgIEV4Y2VwdGlvbk9yPFJlZjxN
ZWRpYVN0cmVhbUF1ZGlvRGVzdGluYXRpb25Ob2RlPj4gY3JlYXRlTWVkaWFTdHJlYW1EZXN0aW5h
dGlvbigpOworI2VuZGlmCisgICAgRXhjZXB0aW9uT3I8UmVmPEdhaW5Ob2RlPj4gY3JlYXRlR2Fp
bigpOworICAgIEV4Y2VwdGlvbk9yPFJlZjxCaXF1YWRGaWx0ZXJOb2RlPj4gY3JlYXRlQmlxdWFk
RmlsdGVyKCk7CisgICAgRXhjZXB0aW9uT3I8UmVmPFdhdmVTaGFwZXJOb2RlPj4gY3JlYXRlV2F2
ZVNoYXBlcigpOworICAgIEV4Y2VwdGlvbk9yPFJlZjxEZWxheU5vZGU+PiBjcmVhdGVEZWxheShk
b3VibGUgbWF4RGVsYXlUaW1lKTsKKyAgICBFeGNlcHRpb25PcjxSZWY8V2ViS2l0QXVkaW9QYW5u
ZXJOb2RlPj4gY3JlYXRlUGFubmVyKCk7CisgICAgRXhjZXB0aW9uT3I8UmVmPENvbnZvbHZlck5v
ZGU+PiBjcmVhdGVDb252b2x2ZXIoKTsKKyAgICBFeGNlcHRpb25PcjxSZWY8RHluYW1pY3NDb21w
cmVzc29yTm9kZT4+IGNyZWF0ZUR5bmFtaWNzQ29tcHJlc3NvcigpOworICAgIEV4Y2VwdGlvbk9y
PFJlZjxBbmFseXNlck5vZGU+PiBjcmVhdGVBbmFseXNlcigpOworICAgIEV4Y2VwdGlvbk9yPFJl
ZjxTY3JpcHRQcm9jZXNzb3JOb2RlPj4gY3JlYXRlU2NyaXB0UHJvY2Vzc29yKHNpemVfdCBidWZm
ZXJTaXplLCBzaXplX3QgbnVtYmVyT2ZJbnB1dENoYW5uZWxzLCBzaXplX3QgbnVtYmVyT2ZPdXRw
dXRDaGFubmVscyk7CisgICAgRXhjZXB0aW9uT3I8UmVmPENoYW5uZWxTcGxpdHRlck5vZGU+PiBj
cmVhdGVDaGFubmVsU3BsaXR0ZXIoc2l6ZV90IG51bWJlck9mT3V0cHV0cyk7CisgICAgRXhjZXB0
aW9uT3I8UmVmPENoYW5uZWxNZXJnZXJOb2RlPj4gY3JlYXRlQ2hhbm5lbE1lcmdlcihzaXplX3Qg
bnVtYmVyT2ZJbnB1dHMpOworICAgIEV4Y2VwdGlvbk9yPFJlZjxPc2NpbGxhdG9yTm9kZT4+IGNy
ZWF0ZU9zY2lsbGF0b3IoKTsKKyAgICBFeGNlcHRpb25PcjxSZWY8UGVyaW9kaWNXYXZlPj4gY3Jl
YXRlUGVyaW9kaWNXYXZlKEZsb2F0MzJBcnJheSYgcmVhbCwgRmxvYXQzMkFycmF5JiBpbWFnaW5h
cnkpOworCisgICAgLy8gV2hlbiBhIHNvdXJjZSBub2RlIGhhcyBubyBtb3JlIHByb2Nlc3Npbmcg
dG8gZG8gKGhhcyBmaW5pc2hlZCBwbGF5aW5nKSwgdGhlbiBpdCB0ZWxscyB0aGUgY29udGV4dCB0
byBkZXJlZmVyZW5jZSBpdC4KKyAgICB2b2lkIG5vdGlmeU5vZGVGaW5pc2hlZFByb2Nlc3Npbmco
QXVkaW9Ob2RlKikgZmluYWw7CisKKyAgICAvLyBDYWxsZWQgYXQgdGhlIHN0YXJ0IG9mIGVhY2gg
cmVuZGVyIHF1YW50dW0uCisgICAgdm9pZCBoYW5kbGVQcmVSZW5kZXJUYXNrcygpIGZpbmFsOwor
CisgICAgLy8gQ2FsbGVkIGF0IHRoZSBlbmQgb2YgZWFjaCByZW5kZXIgcXVhbnR1bS4KKyAgICB2
b2lkIGhhbmRsZVBvc3RSZW5kZXJUYXNrcygpIGZpbmFsOworCisgICAgLy8gQ2FsbGVkIHBlcmlv
ZGljYWxseSBhdCB0aGUgZW5kIG9mIGVhY2ggcmVuZGVyIHF1YW50dW0gdG8gZGVyZWZlcmVuY2Ug
ZmluaXNoZWQgc291cmNlIG5vZGVzLgorICAgIHZvaWQgZGVyZWZGaW5pc2hlZFNvdXJjZU5vZGVz
KCk7CisKKyAgICAvLyBXZSBzY2hlZHVsZSBkZWxldGlvbiBvZiBhbGwgbWFya2VkIG5vZGVzIGF0
IHRoZSBlbmQgb2YgZWFjaCByZWFsdGltZSByZW5kZXIgcXVhbnR1bS4KKyAgICB2b2lkIG1hcmtG
b3JEZWxldGlvbihBdWRpb05vZGUmKSBmaW5hbDsKKyAgICB2b2lkIGRlbGV0ZU1hcmtlZE5vZGVz
KCkgZmluYWw7CisKKyAgICAvLyBBdWRpb0NvbnRleHQgY2FuIHB1bGwgbm9kZShzKSBhdCB0aGUg
ZW5kIG9mIGVhY2ggcmVuZGVyIHF1YW50dW0gZXZlbiB3aGVuIHRoZXkgYXJlIG5vdCBjb25uZWN0
ZWQgdG8gYW55IGRvd25zdHJlYW0gbm9kZXMuCisgICAgLy8gVGhlc2UgdHdvIG1ldGhvZHMgYXJl
IGNhbGxlZCBieSB0aGUgbm9kZXMgd2hvIHdhbnQgdG8gYWRkL3JlbW92ZSB0aGVtc2VsdmVzIGlu
dG8vZnJvbSB0aGUgYXV0b21hdGljIHB1bGwgbGlzdHMuCisgICAgdm9pZCBhZGRBdXRvbWF0aWNQ
dWxsTm9kZShBdWRpb05vZGUmKSBmaW5hbDsKKyAgICB2b2lkIHJlbW92ZUF1dG9tYXRpY1B1bGxO
b2RlKEF1ZGlvTm9kZSYpIGZpbmFsOworCisgICAgLy8gQ2FsbGVkIHJpZ2h0IGJlZm9yZSBoYW5k
bGVQb3N0UmVuZGVyVGFza3MoKSB0byBoYW5kbGUgbm9kZXMgd2hpY2ggbmVlZCB0byBiZSBwdWxs
ZWQgZXZlbiB3aGVuIHRoZXkgYXJlIG5vdCBjb25uZWN0ZWQgdG8gYW55dGhpbmcuCisgICAgdm9p
ZCBwcm9jZXNzQXV0b21hdGljUHVsbE5vZGVzKHNpemVfdCBmcmFtZXNUb1Byb2Nlc3MpIGZpbmFs
OworCisgICAgLy8gS2VlcHMgdHJhY2sgb2YgdGhlIG51bWJlciBvZiBjb25uZWN0aW9ucyBtYWRl
LgorICAgIHZvaWQgaW5jcmVtZW50Q29ubmVjdGlvbkNvdW50KCkgZmluYWwKKyAgICB7CisgICAg
ICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisgICAgICAgIG1fY29ubmVjdGlvbkNvdW50Kys7
CisgICAgfQorCisgICAgdW5zaWduZWQgY29ubmVjdGlvbkNvdW50KCkgY29uc3QgeyByZXR1cm4g
bV9jb25uZWN0aW9uQ291bnQ7IH0KKworICAgIC8vCisgICAgLy8gVGhyZWFkIFNhZmV0eSBhbmQg
R3JhcGggTG9ja2luZzoKKyAgICAvLworCisgICAgdm9pZCBzZXRBdWRpb1RocmVhZChUaHJlYWQm
IHRocmVhZCkgZmluYWwgeyBtX2F1ZGlvVGhyZWFkID0gJnRocmVhZDsgfSAvLyBGSVhNRTogY2hl
Y2sgZWl0aGVyIG5vdCBpbml0aWFsaXplZCBvciB0aGUgc2FtZQorICAgIFRocmVhZCogYXVkaW9U
aHJlYWQoKSBjb25zdCB7IHJldHVybiBtX2F1ZGlvVGhyZWFkOyB9CisgICAgYm9vbCBpc0F1ZGlv
VGhyZWFkKCkgY29uc3QgZmluYWw7CisKKyAgICAvLyBSZXR1cm5zIHRydWUgb25seSBhZnRlciB0
aGUgYXVkaW8gdGhyZWFkIGhhcyBiZWVuIHN0YXJ0ZWQgYW5kIHRoZW4gc2h1dGRvd24uCisgICAg
Ym9vbCBpc0F1ZGlvVGhyZWFkRmluaXNoZWQoKSBmaW5hbCB7IHJldHVybiBtX2lzQXVkaW9UaHJl
YWRGaW5pc2hlZDsgfQorCisgICAgLy8gbXVzdFJlbGVhc2VMb2NrIGlzIHNldCB0byB0cnVlIGlm
IHdlIGFjcXVpcmVkIHRoZSBsb2NrIGluIHRoaXMgbWV0aG9kIGNhbGwgYW5kIGNhbGxlciBtdXN0
IHVubG9jaygpLCBmYWxzZSBpZiBpdCB3YXMgcHJldmlvdXNseSBhY3F1aXJlZC4KKyAgICB2b2lk
IGxvY2soYm9vbCYgbXVzdFJlbGVhc2VMb2NrKSBmaW5hbDsKKworICAgIC8vIFJldHVybnMgdHJ1
ZSBpZiB3ZSBvd24gdGhlIGxvY2suCisgICAgLy8gbXVzdFJlbGVhc2VMb2NrIGlzIHNldCB0byB0
cnVlIGlmIHdlIGFjcXVpcmVkIHRoZSBsb2NrIGluIHRoaXMgbWV0aG9kIGNhbGwgYW5kIGNhbGxl
ciBtdXN0IHVubG9jaygpLCBmYWxzZSBpZiBpdCB3YXMgcHJldmlvdXNseSBhY3F1aXJlZC4KKyAg
ICBib29sIHRyeUxvY2soYm9vbCYgbXVzdFJlbGVhc2VMb2NrKSBmaW5hbDsKKworICAgIHZvaWQg
dW5sb2NrKCkgZmluYWw7CisKKyAgICAvLyBSZXR1cm5zIHRydWUgaWYgdGhpcyB0aHJlYWQgb3du
cyB0aGUgY29udGV4dCdzIGxvY2suCisgICAgYm9vbCBpc0dyYXBoT3duZXIoKSBjb25zdCBmaW5h
bDsKKworICAgIC8vIFJldHVybnMgdGhlIG1heGltdW0gbnVtYmVyIG9mIGNoYW5uZWxzIHdlIGNh
biBzdXBwb3J0LgorICAgIHN0YXRpYyB1bnNpZ25lZCBtYXhOdW1iZXJPZkNoYW5uZWxzKCkgeyBy
ZXR1cm4gTWF4TnVtYmVyT2ZDaGFubmVsczsgfQorCisgICAgLy8gSW4gQXVkaW9Ob2RlOjpkZXJl
ZigpIGEgdHJ5TG9jaygpIGlzIHVzZWQgZm9yIGNhbGxpbmcgZmluaXNoRGVyZWYoKSwgYnV0IGlm
IGl0IGZhaWxzIGtlZXAgdHJhY2sgaGVyZS4KKyAgICB2b2lkIGFkZERlZmVycmVkRmluaXNoRGVy
ZWYoQXVkaW9Ob2RlKikgZmluYWw7CisKKyAgICAvLyBJbiB0aGUgYXVkaW8gdGhyZWFkIGF0IHRo
ZSBzdGFydCBvZiBlYWNoIHJlbmRlciBjeWNsZSwgd2UnbGwgY2FsbCBoYW5kbGVEZWZlcnJlZEZp
bmlzaERlcmVmcygpLgorICAgIHZvaWQgaGFuZGxlRGVmZXJyZWRGaW5pc2hEZXJlZnMoKTsKKwor
ICAgIC8vIE9ubHkgYWNjZXNzZWQgd2hlbiB0aGUgZ3JhcGggbG9jayBpcyBoZWxkLgorICAgIHZv
aWQgbWFya1N1bW1pbmdKdW5jdGlvbkRpcnR5KEF1ZGlvU3VtbWluZ0p1bmN0aW9uKikgZmluYWw7
CisgICAgdm9pZCBtYXJrQXVkaW9Ob2RlT3V0cHV0RGlydHkoQXVkaW9Ob2RlT3V0cHV0KikgZmlu
YWw7CisKKyAgICAvLyBNdXN0IGJlIGNhbGxlZCBvbiBtYWluIHRocmVhZC4KKyAgICB2b2lkIHJl
bW92ZU1hcmtlZFN1bW1pbmdKdW5jdGlvbihBdWRpb1N1bW1pbmdKdW5jdGlvbiopIGZpbmFsOwor
CisgICAgLy8gRXZlbnRUYXJnZXQKKyAgICBFdmVudFRhcmdldEludGVyZmFjZSBldmVudFRhcmdl
dEludGVyZmFjZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIFdlYktpdEF1ZGlvQ29udGV4dEV2ZW50
VGFyZ2V0SW50ZXJmYWNlVHlwZTsgfQorCisgICAgdm9pZCBzdGFydFJlbmRlcmluZygpOworICAg
IHZvaWQgZmluaXNoZWRSZW5kZXJpbmcoYm9vbCBkaWRSZW5kZXJpbmcpIGZpbmFsOworCisgICAg
c3RhdGljIHVuc2lnbmVkIHNfaGFyZHdhcmVDb250ZXh0Q291bnQ7CisKKyAgICAvLyBSZXN0cmlj
dGlvbnMgdG8gY2hhbmdlIGRlZmF1bHQgYmVoYXZpb3JzLgorICAgIGVudW0gQmVoYXZpb3JSZXN0
cmljdGlvbkZsYWdzIHsKKyAgICAgICAgTm9SZXN0cmljdGlvbnMgPSAwLAorICAgICAgICBSZXF1
aXJlVXNlckdlc3R1cmVGb3JBdWRpb1N0YXJ0UmVzdHJpY3Rpb24gPSAxIDw8IDAsCisgICAgICAg
IFJlcXVpcmVQYWdlQ29uc2VudEZvckF1ZGlvU3RhcnRSZXN0cmljdGlvbiA9IDEgPDwgMSwKKyAg
ICB9OworICAgIHR5cGVkZWYgdW5zaWduZWQgQmVoYXZpb3JSZXN0cmljdGlvbnM7CisKKyAgICBC
ZWhhdmlvclJlc3RyaWN0aW9ucyBiZWhhdmlvclJlc3RyaWN0aW9ucygpIGNvbnN0IHsgcmV0dXJu
IG1fcmVzdHJpY3Rpb25zOyB9CisgICAgdm9pZCBhZGRCZWhhdmlvclJlc3RyaWN0aW9uKEJlaGF2
aW9yUmVzdHJpY3Rpb25zIHJlc3RyaWN0aW9uKSB7IG1fcmVzdHJpY3Rpb25zIHw9IHJlc3RyaWN0
aW9uOyB9CisgICAgdm9pZCByZW1vdmVCZWhhdmlvclJlc3RyaWN0aW9uKEJlaGF2aW9yUmVzdHJp
Y3Rpb25zIHJlc3RyaWN0aW9uKSB7IG1fcmVzdHJpY3Rpb25zICY9IH5yZXN0cmljdGlvbjsgfQor
CisgICAgdm9pZCBpc1BsYXlpbmdBdWRpb0RpZENoYW5nZSgpIGZpbmFsOworCisgICAgdm9pZCBu
b2RlV2lsbEJlZ2luUGxheWJhY2soKSBmaW5hbDsKKworI2lmICFSRUxFQVNFX0xPR19ESVNBQkxF
RAorICAgIGNvbnN0IExvZ2dlciYgbG9nZ2VyKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9sb2dn
ZXIuZ2V0KCk7IH0KKyAgICBjb25zdCB2b2lkKiBsb2dJZGVudGlmaWVyKCkgY29uc3QgZmluYWwg
eyByZXR1cm4gbV9sb2dJZGVudGlmaWVyOyB9CisgICAgV1RGTG9nQ2hhbm5lbCYgbG9nQ2hhbm5l
bCgpIGNvbnN0IGZpbmFsOworICAgIGNvbnN0IHZvaWQqIG5leHRBdWRpb05vZGVMb2dJZGVudGlm
aWVyKCkgZmluYWwgeyByZXR1cm4gY2hpbGRMb2dJZGVudGlmaWVyKG1fbG9nSWRlbnRpZmllciwg
KyttX25leHRBdWRpb05vZGVJZGVudGlmaWVyKTsgfQorICAgIGNvbnN0IHZvaWQqIG5leHRBdWRp
b1BhcmFtZXRlckxvZ0lkZW50aWZpZXIoKSBmaW5hbCB7IHJldHVybiBjaGlsZExvZ0lkZW50aWZp
ZXIobV9sb2dJZGVudGlmaWVyLCArK21fbmV4dEF1ZGlvUGFyYW1ldGVySWRlbnRpZmllcik7IH0K
KyNlbmRpZgorCisgICAgdm9pZCBwb3N0VGFzayhXVEY6OkZ1bmN0aW9uPHZvaWQoKT4mJikgZmlu
YWw7CisgICAgYm9vbCBpc1N0b3BwZWQoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2lzU3RvcFNj
aGVkdWxlZDsgfQorICAgIGNvbnN0IFNlY3VyaXR5T3JpZ2luKiBvcmlnaW4oKSBjb25zdCBmaW5h
bDsKKyAgICB2b2lkIGFkZENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VTb3VyY2UsIE1lc3NhZ2VMZXZl
bCwgY29uc3QgU3RyaW5nJiBtZXNzYWdlKSBmaW5hbDsKKworcHJvdGVjdGVkOgorICAgIGV4cGxp
Y2l0IFdlYktpdEF1ZGlvQ29udGV4dChEb2N1bWVudCYpOworICAgIFdlYktpdEF1ZGlvQ29udGV4
dChEb2N1bWVudCYsIEF1ZGlvQnVmZmVyKiByZW5kZXJUYXJnZXQpOworCisgICAgc3RhdGljIGJv
b2wgaXNTYW1wbGVSYXRlUmFuZ2VHb29kKGZsb2F0IHNhbXBsZVJhdGUpOworICAgIHZvaWQgY2xl
YXJQZW5kaW5nQWN0aXZpdHkoKTsKKyAgICB2b2lkIG1ha2VQZW5kaW5nQWN0aXZpdHkoKTsKKwor
cHJpdmF0ZToKKyAgICB2b2lkIGNvbnN0cnVjdENvbW1vbigpOworCisgICAgdm9pZCBsYXp5SW5p
dGlhbGl6ZSgpOworICAgIHZvaWQgdW5pbml0aWFsaXplKCk7CisKKyAgICBib29sIHdpbGxCZWdp
blBsYXliYWNrKCk7CisgICAgYm9vbCB3aWxsUGF1c2VQbGF5YmFjaygpOworCisgICAgYm9vbCB1
c2VyR2VzdHVyZVJlcXVpcmVkRm9yQXVkaW9TdGFydCgpIGNvbnN0IHsgcmV0dXJuICFpc09mZmxp
bmVDb250ZXh0KCkgJiYgbV9yZXN0cmljdGlvbnMgJiBSZXF1aXJlVXNlckdlc3R1cmVGb3JBdWRp
b1N0YXJ0UmVzdHJpY3Rpb247IH0KKyAgICBib29sIHBhZ2VDb25zZW50UmVxdWlyZWRGb3JBdWRp
b1N0YXJ0KCkgY29uc3QgeyByZXR1cm4gIWlzT2ZmbGluZUNvbnRleHQoKSAmJiBtX3Jlc3RyaWN0
aW9ucyAmIFJlcXVpcmVQYWdlQ29uc2VudEZvckF1ZGlvU3RhcnRSZXN0cmljdGlvbjsgfQorCisg
ICAgdm9pZCBzZXRTdGF0ZShTdGF0ZSk7CisKKyAgICB2b2lkIGNsZWFyKCk7CisKKyAgICB2b2lk
IHNjaGVkdWxlTm9kZURlbGV0aW9uKCk7CisKKyAgICB2b2lkIG1lZGlhQ2FuU3RhcnQoRG9jdW1l
bnQmKSBvdmVycmlkZTsKKworICAgIC8vIEV2ZW50VGFyZ2V0CisgICAgdm9pZCBkaXNwYXRjaEV2
ZW50KEV2ZW50JikgZmluYWw7CisKKyAgICAvLyBNZWRpYVByb2R1Y2VyCisgICAgTWVkaWFQcm9k
dWNlcjo6TWVkaWFTdGF0ZUZsYWdzIG1lZGlhU3RhdGUoKSBjb25zdCBvdmVycmlkZTsKKyAgICB2
b2lkIHBhZ2VNdXRlZFN0YXRlRGlkQ2hhbmdlKCkgb3ZlcnJpZGU7CisKKyAgICAvLyBUaGUgY29u
dGV4dCBpdHNlbGYga2VlcHMgYSByZWZlcmVuY2UgdG8gYWxsIHNvdXJjZSBub2Rlcy4gIFRoZSBz
b3VyY2Ugbm9kZXMsIHRoZW4gcmVmZXJlbmNlIGFsbCBub2RlcyB0aGV5J3JlIGNvbm5lY3RlZCB0
by4KKyAgICAvLyBJbiB0dXJuLCB0aGVzZSBub2RlcyByZWZlcmVuY2UgYWxsIG5vZGVzIHRoZXkn
cmUgY29ubmVjdGVkIHRvLiAgQWxsIG5vZGVzIGFyZSB1bHRpbWF0ZWx5IGNvbm5lY3RlZCB0byB0
aGUgQXVkaW9EZXN0aW5hdGlvbk5vZGUuCisgICAgLy8gV2hlbiB0aGUgY29udGV4dCBkZXJlZmVy
ZW5jZXMgYSBzb3VyY2Ugbm9kZSwgaXQgd2lsbCBiZSBkZWFjdGl2YXRlZCBmcm9tIHRoZSByZW5k
ZXJpbmcgZ3JhcGggYWxvbmcgd2l0aCBhbGwgb3RoZXIgbm9kZXMgaXQgaXMKKyAgICAvLyB1bmlx
dWVseSBjb25uZWN0ZWQgdG8uICBTZWUgdGhlIEF1ZGlvTm9kZTo6cmVmKCkgYW5kIEF1ZGlvTm9k
ZTo6ZGVyZWYoKSBtZXRob2RzIGZvciBtb3JlIGRldGFpbHMuCisgICAgdm9pZCByZWZOb2RlKEF1
ZGlvTm9kZSYpOworICAgIHZvaWQgZGVyZWZOb2RlKEF1ZGlvTm9kZSYpOworCisgICAgLy8gQWN0
aXZlRE9NT2JqZWN0IEFQSS4KKyAgICB2b2lkIHN1c3BlbmQoUmVhc29uRm9yU3VzcGVuc2lvbikg
ZmluYWw7CisgICAgdm9pZCByZXN1bWUoKSBmaW5hbDsKKyAgICB2b2lkIHN0b3AoKSBvdmVycmlk
ZTsKKyAgICBjb25zdCBjaGFyKiBhY3RpdmVET01PYmplY3ROYW1lKCkgY29uc3Qgb3ZlcnJpZGU7
CisKKyAgICAvLyBXaGVuIHRoZSBjb250ZXh0IGdvZXMgYXdheSwgdGhlcmUgbWlnaHQgc3RpbGwg
YmUgc29tZSBzb3VyY2VzIHdoaWNoIGhhdmVuJ3QgZmluaXNoZWQgcGxheWluZy4KKyAgICAvLyBN
YWtlIHN1cmUgdG8gZGVyZWZlcmVuY2UgdGhlbSBoZXJlLgorICAgIHZvaWQgZGVyZWZVbmZpbmlz
aGVkU291cmNlTm9kZXMoKTsKKworICAgIC8vIFBsYXRmb3JtTWVkaWFTZXNzaW9uQ2xpZW50Cisg
ICAgUGxhdGZvcm1NZWRpYVNlc3Npb246Ok1lZGlhVHlwZSBtZWRpYVR5cGUoKSBjb25zdCBvdmVy
cmlkZSB7IHJldHVybiBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6TWVkaWFUeXBlOjpXZWJBdWRpbzsg
fQorICAgIFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpNZWRpYVR5cGUgcHJlc2VudGF0aW9uVHlwZSgp
IGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpNZWRpYVR5cGU6
OldlYkF1ZGlvOyB9CisgICAgdm9pZCBtYXlSZXN1bWVQbGF5YmFjayhib29sIHNob3VsZFJlc3Vt
ZSkgb3ZlcnJpZGU7CisgICAgdm9pZCBzdXNwZW5kUGxheWJhY2soKSBvdmVycmlkZTsKKyAgICBi
b29sIGNhblJlY2VpdmVSZW1vdGVDb250cm9sQ29tbWFuZHMoKSBjb25zdCBvdmVycmlkZSB7IHJl
dHVybiBmYWxzZTsgfQorICAgIHZvaWQgZGlkUmVjZWl2ZVJlbW90ZUNvbnRyb2xDb21tYW5kKFBs
YXRmb3JtTWVkaWFTZXNzaW9uOjpSZW1vdGVDb250cm9sQ29tbWFuZFR5cGUsIGNvbnN0IFBsYXRm
b3JtTWVkaWFTZXNzaW9uOjpSZW1vdGVDb21tYW5kQXJndW1lbnQqKSBvdmVycmlkZSB7IH0KKyAg
ICBib29sIHN1cHBvcnRzU2Vla2luZygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9
CisgICAgYm9vbCBzaG91bGRPdmVycmlkZUJhY2tncm91bmRQbGF5YmFja1Jlc3RyaWN0aW9uKFBs
YXRmb3JtTWVkaWFTZXNzaW9uOjpJbnRlcnJ1cHRpb25UeXBlKSBjb25zdCBvdmVycmlkZSB7IHJl
dHVybiBmYWxzZTsgfQorICAgIGJvb2wgY2FuUHJvZHVjZUF1ZGlvKCkgY29uc3QgZmluYWwgeyBy
ZXR1cm4gdHJ1ZTsgfQorICAgIGJvb2wgaXNTdXNwZW5kZWQoKSBjb25zdCBmaW5hbDsKKworICAg
IHZvaWQgdmlzaWJpbGl0eVN0YXRlQ2hhbmdlZCgpIGZpbmFsOworCisgICAgYm9vbCBpc0F1ZGlv
Q29udGV4dCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgYm9vbCBpc1dlYktp
dEF1ZGlvQ29udGV4dCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIHRydWU7IH0KKworICAgIHZvaWQg
aGFuZGxlRGlydHlBdWRpb1N1bW1pbmdKdW5jdGlvbnMoKTsKKyAgICB2b2lkIGhhbmRsZURpcnR5
QXVkaW9Ob2RlT3V0cHV0cygpOworCisgICAgdm9pZCBhZGRSZWFjdGlvbihTdGF0ZSwgRE9NUHJv
bWlzZURlZmVycmVkPHZvaWQ+JiYpOworICAgIHZvaWQgdXBkYXRlQXV0b21hdGljUHVsbE5vZGVz
KCk7CisKKyNpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKKyAgICBjb25zdCBjaGFyKiBsb2dDbGFz
c05hbWUoKSBjb25zdCBmaW5hbCB7IHJldHVybiAiV2ViS2l0QXVkaW9Db250ZXh0IjsgfQorCisg
ICAgUmVmPExvZ2dlcj4gbV9sb2dnZXI7CisgICAgY29uc3Qgdm9pZCogbV9sb2dJZGVudGlmaWVy
OworICAgIHVpbnQ2NF90IG1fbmV4dEF1ZGlvTm9kZUlkZW50aWZpZXIgeyAwIH07CisgICAgdWlu
dDY0X3QgbV9uZXh0QXVkaW9QYXJhbWV0ZXJJZGVudGlmaWVyIHsgMCB9OworI2VuZGlmCisKKyAg
ICAvLyBPbmx5IGFjY2Vzc2VkIGluIHRoZSBhdWRpbyB0aHJlYWQuCisgICAgVmVjdG9yPEF1ZGlv
Tm9kZSo+IG1fZmluaXNoZWROb2RlczsKKworICAgIC8vIFdlIGRvbid0IHVzZSBSZWZQdHI8QXVk
aW9Ob2RlPiBoZXJlIGJlY2F1c2UgQXVkaW9Ob2RlIGhhcyBhIG1vcmUgY29tcGxleCByZWYoKSAv
IGRlcmVmKCkgaW1wbGVtZW50YXRpb24KKyAgICAvLyB3aXRoIGFuIG9wdGlvbmFsIGFyZ3VtZW50
IGZvciByZWZUeXBlLiAgV2UgbmVlZCB0byB1c2UgdGhlIHNwZWNpYWwgcmVmVHlwZTogUmVmVHlw
ZUNvbm5lY3Rpb24KKyAgICAvLyBFaXRoZXIgYWNjZXNzZWQgd2hlbiB0aGUgZ3JhcGggbG9jayBp
cyBoZWxkLCBvciBvbiB0aGUgbWFpbiB0aHJlYWQgd2hlbiB0aGUgYXVkaW8gdGhyZWFkIGhhcyBm
aW5pc2hlZC4KKyAgICBWZWN0b3I8QXVkaW9Ob2RlKj4gbV9yZWZlcmVuY2VkTm9kZXM7CisKKyAg
ICAvLyBBY2N1bXVsYXRlIG5vZGVzIHdoaWNoIG5lZWQgdG8gYmUgZGVsZXRlZCBoZXJlLgorICAg
IC8vIFRoaXMgaXMgY29waWVkIHRvIG1fbm9kZXNUb0RlbGV0ZSBhdCB0aGUgZW5kIG9mIGEgcmVu
ZGVyIGN5Y2xlIGluIGhhbmRsZVBvc3RSZW5kZXJUYXNrcygpLCB3aGVyZSB3ZSdyZSBhc3N1cmVk
IG9mIGEgc3RhYmxlIGdyYXBoCisgICAgLy8gc3RhdGUgd2hpY2ggd2lsbCBoYXZlIG5vIHJlZmVy
ZW5jZXMgdG8gYW55IG9mIHRoZSBub2RlcyBpbiBtX25vZGVzVG9EZWxldGUgb25jZSB0aGUgY29u
dGV4dCBsb2NrIGlzIHJlbGVhc2VkCisgICAgLy8gKHdoZW4gaGFuZGxlUG9zdFJlbmRlclRhc2tz
KCkgaGFzIGNvbXBsZXRlZCkuCisgICAgVmVjdG9yPEF1ZGlvTm9kZSo+IG1fbm9kZXNNYXJrZWRG
b3JEZWxldGlvbjsKKworICAgIC8vIFRoZXkgd2lsbCBiZSBzY2hlZHVsZWQgZm9yIGRlbGV0aW9u
IChvbiB0aGUgbWFpbiB0aHJlYWQpIGF0IHRoZSBlbmQgb2YgYSByZW5kZXIgY3ljbGUgKGluIHJl
YWx0aW1lIHRocmVhZCkuCisgICAgVmVjdG9yPEF1ZGlvTm9kZSo+IG1fbm9kZXNUb0RlbGV0ZTsK
KworICAgIGJvb2wgbV9pc0RlbGV0aW9uU2NoZWR1bGVkIHsgZmFsc2UgfTsKKyAgICBib29sIG1f
aXNTdG9wU2NoZWR1bGVkIHsgZmFsc2UgfTsKKyAgICBib29sIG1faXNJbml0aWFsaXplZCB7IGZh
bHNlIH07CisgICAgYm9vbCBtX2lzQXVkaW9UaHJlYWRGaW5pc2hlZCB7IGZhbHNlIH07CisgICAg
Ym9vbCBtX2F1dG9tYXRpY1B1bGxOb2Rlc05lZWRVcGRhdGluZyB7IGZhbHNlIH07CisgICAgYm9v
bCBtX2lzT2ZmbGluZUNvbnRleHQgeyBmYWxzZSB9OworCisgICAgLy8gT25seSBhY2Nlc3NlZCB3
aGVuIHRoZSBncmFwaCBsb2NrIGlzIGhlbGQuCisgICAgSGFzaFNldDxBdWRpb1N1bW1pbmdKdW5j
dGlvbio+IG1fZGlydHlTdW1taW5nSnVuY3Rpb25zOworICAgIEhhc2hTZXQ8QXVkaW9Ob2RlT3V0
cHV0Kj4gbV9kaXJ0eUF1ZGlvTm9kZU91dHB1dHM7CisKKyAgICAvLyBGb3IgdGhlIHNha2Ugb2Yg
dGhyZWFkIHNhZmV0eSwgd2UgbWFpbnRhaW4gYSBzZXBlcmF0ZSBWZWN0b3Igb2YgYXV0b21hdGlj
IHB1bGwgbm9kZXMgZm9yIHJlbmRlcmluZyBpbiBtX3JlbmRlcmluZ0F1dG9tYXRpY1B1bGxOb2Rl
cy4KKyAgICAvLyBJdCB3aWxsIGJlIGNvcGllZCBmcm9tIG1fYXV0b21hdGljUHVsbE5vZGVzIGJ5
IHVwZGF0ZUF1dG9tYXRpY1B1bGxOb2RlcygpIGF0IHRoZSB2ZXJ5IHN0YXJ0IG9yIGVuZCBvZiB0
aGUgcmVuZGVyaW5nIHF1YW50dW0uCisgICAgSGFzaFNldDxBdWRpb05vZGUqPiBtX2F1dG9tYXRp
Y1B1bGxOb2RlczsKKyAgICBWZWN0b3I8QXVkaW9Ob2RlKj4gbV9yZW5kZXJpbmdBdXRvbWF0aWNQ
dWxsTm9kZXM7CisgICAgLy8gT25seSBhY2Nlc3NlZCBpbiB0aGUgYXVkaW8gdGhyZWFkLgorICAg
IFZlY3RvcjxBdWRpb05vZGUqPiBtX2RlZmVycmVkRmluaXNoRGVyZWZMaXN0OworICAgIFZlY3Rv
cjxWZWN0b3I8RE9NUHJvbWlzZURlZmVycmVkPHZvaWQ+Pj4gbV9zdGF0ZVJlYWN0aW9uczsKKwor
ICAgIHN0ZDo6dW5pcXVlX3B0cjxQbGF0Zm9ybU1lZGlhU2Vzc2lvbj4gbV9tZWRpYVNlc3Npb247
CisgICAgVW5pcXVlUmVmPE1haW5UaHJlYWRHZW5lcmljRXZlbnRRdWV1ZT4gbV9ldmVudFF1ZXVl
OworCisgICAgUmVmUHRyPEF1ZGlvQnVmZmVyPiBtX3JlbmRlclRhcmdldDsKKyAgICBSZWZQdHI8
QXVkaW9EZXN0aW5hdGlvbk5vZGU+IG1fZGVzdGluYXRpb25Ob2RlOworICAgIFJlZlB0cjxBdWRp
b0xpc3RlbmVyPiBtX2xpc3RlbmVyOworCisgICAgdW5zaWduZWQgbV9jb25uZWN0aW9uQ291bnQg
eyAwIH07CisKKyAgICAvLyBHcmFwaCBsb2NraW5nLgorICAgIExvY2sgbV9jb250ZXh0R3JhcGhN
dXRleDsKKyAgICAvLyBGSVhNRTogVXNpbmcgdm9sYXRpbGUgc2VlbXMgaW5jb3JyZWN0LgorICAg
IC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODAzMzIKKyAgICBU
aHJlYWQqIHZvbGF0aWxlIG1fYXVkaW9UaHJlYWQgeyBudWxscHRyIH07CisgICAgVGhyZWFkKiB2
b2xhdGlsZSBtX2dyYXBoT3duZXJUaHJlYWQgeyBudWxscHRyIH07IC8vIGlmIHRoZSBsb2NrIGlz
IGhlbGQgdGhlbiB0aGlzIGlzIHRoZSB0aHJlYWQgd2hpY2ggb3ducyBpdCwgb3RoZXJ3aXNlID09
IG51bGxwdHIuCisKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8QXN5bmNBdWRpb0RlY29kZXI+IG1fYXVk
aW9EZWNvZGVyOworCisgICAgLy8gVGhpcyBpcyBjb25zaWRlcmluZyAzMiBpcyBsYXJnZSBlbm91
Z2ggZm9yIG11bHRpcGxlIGNoYW5uZWxzIGF1ZGlvLgorICAgIC8vIEl0IGlzIHNvbWV3aGF0IGFy
Yml0cmFyeSBhbmQgY291bGQgYmUgaW5jcmVhc2VkIGlmIG5lY2Vzc2FyeS4KKyAgICBlbnVtIHsg
TWF4TnVtYmVyT2ZDaGFubmVscyA9IDMyIH07CisKKyAgICAvLyBOdW1iZXIgb2YgQXVkaW9CdWZm
ZXJTb3VyY2VOb2RlcyB0aGF0IGFyZSBhY3RpdmUgKHBsYXlpbmcpLgorICAgIHN0ZDo6YXRvbWlj
PGludD4gbV9hY3RpdmVTb3VyY2VDb3VudCB7IDAgfTsKKworICAgIEJlaGF2aW9yUmVzdHJpY3Rp
b25zIG1fcmVzdHJpY3Rpb25zIHsgTm9SZXN0cmljdGlvbnMgfTsKKworICAgIFN0YXRlIG1fc3Rh
dGUgeyBTdGF0ZTo6U3VzcGVuZGVkIH07CisgICAgUmVmUHRyPFBlbmRpbmdBY3Rpdml0eTxXZWJL
aXRBdWRpb0NvbnRleHQ+PiBtX3BlbmRpbmdBY3Rpdml0eTsKK307CisKK2lubGluZSBBdWRpb0Nv
bnRleHRTdGF0ZSBXZWJLaXRBdWRpb0NvbnRleHQ6OnN0YXRlKCkgY29uc3QKK3sKKyAgICByZXR1
cm4gbV9zdGF0ZTsKK30KKworfSAvLyBXZWJDb3JlCisKK1NQRUNJQUxJWkVfVFlQRV9UUkFJVFNf
QkVHSU4oV2ViQ29yZTo6V2ViS2l0QXVkaW9Db250ZXh0KQorICAgIHN0YXRpYyBib29sIGlzVHlw
ZShjb25zdCBXZWJDb3JlOjpBdWRpb0NvbnRleHRCYXNlJiBjb250ZXh0KSB7IHJldHVybiBjb250
ZXh0LmlzV2ViS2l0QXVkaW9Db250ZXh0KCk7IH0KK1NQRUNJQUxJWkVfVFlQRV9UUkFJVFNfRU5E
KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vV2ViS2l0QXVk
aW9Db250ZXh0LmlkbCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vV2ViS2l0QXVk
aW9Db250ZXh0LmlkbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uNTY5
NWM3MzY2OTgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1
ZGlvL1dlYktpdEF1ZGlvQ29udGV4dC5pZGwKQEAgLTAsMCArMSw5MyBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxMCwgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHly
aWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiAgUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIg
UFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTgorICog
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTCisgKiBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCitb
CisgICAgQWN0aXZlRE9NT2JqZWN0LAorICAgIENvbmRpdGlvbmFsPVdFQl9BVURJTywKKyAgICBF
bmFibGVkQnlTZXR0aW5nPVdlYkF1ZGlvLAorICAgIEV4cG9ydE1hY3JvPVdFQkNPUkVfRVhQT1JU
LAorICAgIEludGVyZmFjZU5hbWU9d2Via2l0QXVkaW9Db250ZXh0LAorXSBpbnRlcmZhY2UgV2Vi
S2l0QXVkaW9Db250ZXh0IDogRXZlbnRUYXJnZXQgeworICAgIFtDYWxsV2l0aD1Eb2N1bWVudCwg
TWF5VGhyb3dFeGNlcHRpb25dIGNvbnN0cnVjdG9yKCk7CisKKyAgICAvLyBBbGwgcmVuZGVyZWQg
YXVkaW8gdWx0aW1hdGVseSBjb25uZWN0cyB0byBkZXN0aW5hdGlvbiwgd2hpY2ggcmVwcmVzZW50
cyB0aGUgYXVkaW8gaGFyZHdhcmUuCisgICAgcmVhZG9ubHkgYXR0cmlidXRlIEF1ZGlvRGVzdGlu
YXRpb25Ob2RlIGRlc3RpbmF0aW9uOworCisgICAgLy8gQWxsIHNjaGVkdWxlZCB0aW1lcyBhcmUg
cmVsYXRpdmUgdG8gdGhpcyB0aW1lIGluIHNlY29uZHMuCisgICAgcmVhZG9ubHkgYXR0cmlidXRl
IHVucmVzdHJpY3RlZCBkb3VibGUgY3VycmVudFRpbWU7CisKKyAgICAvLyBBbGwgQXVkaW9Ob2Rl
cyBpbiB0aGUgY29udGV4dCBydW4gYXQgdGhpcyBzYW1wbGUtcmF0ZSAoc2FtcGxlLWZyYW1lcyBw
ZXIgc2Vjb25kKS4KKyAgICByZWFkb25seSBhdHRyaWJ1dGUgdW5yZXN0cmljdGVkIGZsb2F0IHNh
bXBsZVJhdGU7CisKKyAgICAvLyBBbGwgcGFubmluZyBpcyByZWxhdGl2ZSB0byB0aGlzIGxpc3Rl
bmVyLgorICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBBdWRpb0xpc3RlbmVyIGxpc3RlbmVyOworCisg
ICAgW0ltcGxlbWVudGVkQXM9c3VzcGVuZFJlbmRlcmluZ10gUHJvbWlzZTx2b2lkPiBzdXNwZW5k
KCk7CisgICAgW0ltcGxlbWVudGVkQXM9cmVzdW1lUmVuZGVyaW5nXSBQcm9taXNlPHZvaWQ+IHJl
c3VtZSgpOworICAgIFByb21pc2U8dm9pZD4gY2xvc2UoKTsKKworICAgIHJlYWRvbmx5IGF0dHJp
YnV0ZSBBdWRpb0NvbnRleHRTdGF0ZSBzdGF0ZTsKKyAgICBhdHRyaWJ1dGUgRXZlbnRIYW5kbGVy
IG9uc3RhdGVjaGFuZ2U7CisKKyAgICAvLyBOdW1iZXIgb2YgQXVkaW9CdWZmZXJTb3VyY2VOb2Rl
cyB0aGF0IGFyZSBjdXJyZW50bHkgcGxheWluZy4KKyAgICByZWFkb25seSBhdHRyaWJ1dGUgdW5z
aWduZWQgbG9uZyBhY3RpdmVTb3VyY2VDb3VudDsKKworICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0g
QXVkaW9CdWZmZXIgY3JlYXRlQnVmZmVyKHVuc2lnbmVkIGxvbmcgbnVtYmVyT2ZDaGFubmVscywg
dW5zaWduZWQgbG9uZyBudW1iZXJPZkZyYW1lcywgdW5yZXN0cmljdGVkIGZsb2F0IHNhbXBsZVJh
dGUpOworICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gQXVkaW9CdWZmZXIgY3JlYXRlQnVmZmVyKEFy
cmF5QnVmZmVyIGJ1ZmZlciwgYm9vbGVhbiBtaXhUb01vbm8pOworCisgICAgLy8gQXN5bmNocm9u
b3VzIGF1ZGlvIGZpbGUgZGF0YSBkZWNvZGluZy4KKyAgICAvLyBGSVhNRTogc3VjY2Vzc0NhbGxi
YWNrIHNob3VsZCBiZSBvcHRpb25hbCBhbmQgdGhlIGNhbGxiYWNrcyBzaG91bGQgbm90IGJlIG51
bGxhYmxlLiBUaGlzIHNob3VsZCBhbHNvIHJldHVybiBhIFByb21pc2UuCisgICAgdm9pZCBkZWNv
ZGVBdWRpb0RhdGEoQXJyYXlCdWZmZXIgYXVkaW9EYXRhLCBBdWRpb0J1ZmZlckNhbGxiYWNrPyBz
dWNjZXNzQ2FsbGJhY2ssIG9wdGlvbmFsIEF1ZGlvQnVmZmVyQ2FsbGJhY2s/IGVycm9yQ2FsbGJh
Y2spOworCisgICAgLy8gU291cmNlcworICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gQXVkaW9CdWZm
ZXJTb3VyY2VOb2RlIGNyZWF0ZUJ1ZmZlclNvdXJjZSgpOworCisgICAgW0NvbmRpdGlvbmFsPVZJ
REVPLCBNYXlUaHJvd0V4Y2VwdGlvbl0gTWVkaWFFbGVtZW50QXVkaW9Tb3VyY2VOb2RlIGNyZWF0
ZU1lZGlhRWxlbWVudFNvdXJjZShIVE1MTWVkaWFFbGVtZW50IG1lZGlhRWxlbWVudCk7CisKKyAg
ICBbQ29uZGl0aW9uYWw9TUVESUFfU1RSRUFNLCBNYXlUaHJvd0V4Y2VwdGlvbl0gTWVkaWFTdHJl
YW1BdWRpb1NvdXJjZU5vZGUgY3JlYXRlTWVkaWFTdHJlYW1Tb3VyY2UoTWVkaWFTdHJlYW0gbWVk
aWFTdHJlYW0pOworICAgIFtDb25kaXRpb25hbD1NRURJQV9TVFJFQU0sIE1heVRocm93RXhjZXB0
aW9uXSBNZWRpYVN0cmVhbUF1ZGlvRGVzdGluYXRpb25Ob2RlIGNyZWF0ZU1lZGlhU3RyZWFtRGVz
dGluYXRpb24oKTsKKworICAgIC8vIFByb2Nlc3Npbmcgbm9kZXMKKyAgICBbTWF5VGhyb3dFeGNl
cHRpb25dIEdhaW5Ob2RlIGNyZWF0ZUdhaW4oKTsKKyAgICBbTWF5VGhyb3dFeGNlcHRpb25dIERl
bGF5Tm9kZSBjcmVhdGVEZWxheShvcHRpb25hbCB1bnJlc3RyaWN0ZWQgZG91YmxlIG1heERlbGF5
VGltZSA9IDEpOworICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gQmlxdWFkRmlsdGVyTm9kZSBjcmVh
dGVCaXF1YWRGaWx0ZXIoKTsKKyAgICBbTWF5VGhyb3dFeGNlcHRpb25dIFdhdmVTaGFwZXJOb2Rl
IGNyZWF0ZVdhdmVTaGFwZXIoKTsKKyAgICBbTWF5VGhyb3dFeGNlcHRpb25dIFdlYktpdEF1ZGlv
UGFubmVyTm9kZSBjcmVhdGVQYW5uZXIoKTsKKyAgICBbTWF5VGhyb3dFeGNlcHRpb25dIENvbnZv
bHZlck5vZGUgY3JlYXRlQ29udm9sdmVyKCk7CisgICAgW01heVRocm93RXhjZXB0aW9uXSBEeW5h
bWljc0NvbXByZXNzb3JOb2RlIGNyZWF0ZUR5bmFtaWNzQ29tcHJlc3NvcigpOworICAgIFtNYXlU
aHJvd0V4Y2VwdGlvbl0gQW5hbHlzZXJOb2RlIGNyZWF0ZUFuYWx5c2VyKCk7CisgICAgW01heVRo
cm93RXhjZXB0aW9uXSBTY3JpcHRQcm9jZXNzb3JOb2RlIGNyZWF0ZVNjcmlwdFByb2Nlc3Nvcihv
cHRpb25hbCB1bnNpZ25lZCBsb25nIGJ1ZmZlclNpemUgPSAwLCBvcHRpb25hbCB1bnNpZ25lZCBs
b25nIG51bWJlck9mSW5wdXRDaGFubmVscyA9IDIsIG9wdGlvbmFsIHVuc2lnbmVkIGxvbmcgbnVt
YmVyT2ZPdXRwdXRDaGFubmVscyA9IDIpOworICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gT3NjaWxs
YXRvck5vZGUgY3JlYXRlT3NjaWxsYXRvcigpOworICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gUGVy
aW9kaWNXYXZlIGNyZWF0ZVBlcmlvZGljV2F2ZShGbG9hdDMyQXJyYXkgcmVhbCwgRmxvYXQzMkFy
cmF5IGltYWcpOworCisgICAgLy8gQ2hhbm5lbCBzcGxpdHRpbmcgYW5kIG1lcmdpbmcKKyAgICBb
TWF5VGhyb3dFeGNlcHRpb25dIENoYW5uZWxTcGxpdHRlck5vZGUgY3JlYXRlQ2hhbm5lbFNwbGl0
dGVyKG9wdGlvbmFsIHVuc2lnbmVkIGxvbmcgbnVtYmVyT2ZPdXRwdXRzID0gNik7CisgICAgW01h
eVRocm93RXhjZXB0aW9uXSBDaGFubmVsTWVyZ2VyTm9kZSBjcmVhdGVDaGFubmVsTWVyZ2VyKG9w
dGlvbmFsIHVuc2lnbmVkIGxvbmcgbnVtYmVyT2ZJbnB1dHMgPSA2KTsKKworICAgIC8vIE9mZmxp
bmUgcmVuZGVyaW5nCisgICAgLy8gdm9pZCBwcmVwYXJlT2ZmbGluZUJ1ZmZlclJlbmRlcmluZyh1
bnNpZ25lZCBsb25nIG51bWJlck9mQ2hhbm5lbHMsIHVuc2lnbmVkIGxvbmcgbnVtYmVyT2ZGcmFt
ZXMsIHVucmVzdHJpY3RlZCBmbG9hdCBzYW1wbGVSYXRlKTsKKyAgICBhdHRyaWJ1dGUgRXZlbnRI
YW5kbGVyIG9uY29tcGxldGU7CisgICAgdm9pZCBzdGFydFJlbmRlcmluZygpOworfTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vV2ViS2l0QXVkaW9QYW5uZXJO
b2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vV2ViS2l0QXVkaW9QYW5u
ZXJOb2RlLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uMjU4ZjQ1
ZTdjZmQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlv
L1dlYktpdEF1ZGlvUGFubmVyTm9kZS5jcHAKQEAgLTAsMCArMSwzNjMgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTAsIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiAgUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAq
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTgor
ICogQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTCisgKiBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiV2ViS2l0QXVkaW9QYW5uZXJOb2RlLmgi
CisKKyNpZiBFTkFCTEUoV0VCX0FVRElPKQorCisjaW5jbHVkZSAiQXVkaW9CdWZmZXJTb3VyY2VO
b2RlLmgiCisjaW5jbHVkZSAiQXVkaW9CdXMuaCIKKyNpbmNsdWRlICJBdWRpb0NvbnRleHQuaCIK
KyNpbmNsdWRlICJBdWRpb05vZGVJbnB1dC5oIgorI2luY2x1ZGUgIkF1ZGlvTm9kZU91dHB1dC5o
IgorI2luY2x1ZGUgIkhSVEZEYXRhYmFzZUxvYWRlci5oIgorI2luY2x1ZGUgIkhSVEZQYW5uZXIu
aCIKKyNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCisjaW5jbHVkZSA8d3RmL0lz
b01hbGxvY0lubGluZXMuaD4KKyNpbmNsdWRlIDx3dGYvTWF0aEV4dHJhcy5oPgorCituYW1lc3Bh
Y2UgV2ViQ29yZSB7CisKK1dURl9NQUtFX0lTT19BTExPQ0FURURfSU1QTChXZWJLaXRBdWRpb1Bh
bm5lck5vZGUpOworCitzdGF0aWMgdm9pZCBmaXhOQU5zKGRvdWJsZSAmeCkKK3sKKyAgICBpZiAo
c3RkOjppc25hbih4KSB8fCBzdGQ6OmlzaW5mKHgpKQorICAgICAgICB4ID0gMC4wOworfQorCitX
ZWJLaXRBdWRpb1Bhbm5lck5vZGU6OldlYktpdEF1ZGlvUGFubmVyTm9kZShXZWJLaXRBdWRpb0Nv
bnRleHQmIGNvbnRleHQsIGZsb2F0IHNhbXBsZVJhdGUpCisgICAgOiBQYW5uZXJOb2RlQmFzZShj
b250ZXh0LCBzYW1wbGVSYXRlKQorICAgICwgbV9wYW5uaW5nTW9kZWwoUGFubmluZ01vZGVsVHlw
ZTo6SFJURikKKyAgICAsIG1fbGFzdEdhaW4oLTEuMCkKKyAgICAsIG1fY29ubmVjdGlvbkNvdW50
KDApCit7CisgICAgc2V0Tm9kZVR5cGUoTm9kZVR5cGVQYW5uZXIpOworCisgICAgLy8gTG9hZCB0
aGUgSFJURiBkYXRhYmFzZSBhc3luY2hyb25vdXNseSBzbyB3ZSBkb24ndCBibG9jayB0aGUgSmF2
YXNjcmlwdCB0aHJlYWQgd2hpbGUgY3JlYXRpbmcgdGhlIEhSVEYgZGF0YWJhc2UuCisgICAgbV9o
cnRmRGF0YWJhc2VMb2FkZXIgPSBIUlRGRGF0YWJhc2VMb2FkZXI6OmNyZWF0ZUFuZExvYWRBc3lu
Y2hyb25vdXNseUlmTmVjZXNzYXJ5KGNvbnRleHQuc2FtcGxlUmF0ZSgpKTsKKworICAgIGFkZElu
cHV0KG1ha2VVbmlxdWU8QXVkaW9Ob2RlSW5wdXQ+KHRoaXMpKTsKKyAgICBhZGRPdXRwdXQobWFr
ZVVuaXF1ZTxBdWRpb05vZGVPdXRwdXQ+KHRoaXMsIDIpKTsKKworICAgIC8vIE5vZGUtc3BlY2lm
aWMgZGVmYXVsdCBtaXhpbmcgcnVsZXMuCisgICAgbV9jaGFubmVsQ291bnQgPSAyOworICAgIG1f
Y2hhbm5lbENvdW50TW9kZSA9IENsYW1wZWRNYXg7CisgICAgbV9jaGFubmVsSW50ZXJwcmV0YXRp
b24gPSBBdWRpb0J1czo6U3BlYWtlcnM7CisKKyAgICBtX2Rpc3RhbmNlR2FpbiA9IEF1ZGlvUGFy
YW06OmNyZWF0ZShjb250ZXh0LCAiZGlzdGFuY2VHYWluIiwgMS4wLCAwLjAsIDEuMCk7CisgICAg
bV9jb25lR2FpbiA9IEF1ZGlvUGFyYW06OmNyZWF0ZShjb250ZXh0LCAiY29uZUdhaW4iLCAxLjAs
IDAuMCwgMS4wKTsKKworICAgIG1fcG9zaXRpb24gPSBGbG9hdFBvaW50M0QoMCwgMCwgMCk7Cisg
ICAgbV9vcmllbnRhdGlvbiA9IEZsb2F0UG9pbnQzRCgxLCAwLCAwKTsKKyAgICBtX3ZlbG9jaXR5
ID0gRmxvYXRQb2ludDNEKDAsIDAsIDApOworCisgICAgaW5pdGlhbGl6ZSgpOworfQorCitXZWJL
aXRBdWRpb1Bhbm5lck5vZGU6On5XZWJLaXRBdWRpb1Bhbm5lck5vZGUoKQoreworICAgIHVuaW5p
dGlhbGl6ZSgpOworfQorCit2b2lkIFdlYktpdEF1ZGlvUGFubmVyTm9kZTo6cHVsbElucHV0cyhz
aXplX3QgZnJhbWVzVG9Qcm9jZXNzKQoreworICAgIC8vIFdlIG92ZXJyaWRlIHB1bGxJbnB1dHMo
KSwgc28gd2UgY2FuIGRldGVjdCBuZXcgQXVkaW9Tb3VyY2VOb2RlcyB3aGljaCBoYXZlIGNvbm5l
Y3RlZCB0byB1cyB3aGVuIG5ldyBjb25uZWN0aW9ucyBhcmUgbWFkZS4KKyAgICAvLyBUaGVzZSBB
dWRpb1NvdXJjZU5vZGVzIG5lZWQgdG8gYmUgbWFkZSBhd2FyZSBvZiBvdXIgZXhpc3RlbmNlIGlu
IG9yZGVyIHRvIGhhbmRsZSBkb3BwbGVyIHNoaWZ0IHBpdGNoIGNoYW5nZXMuCisgICAgaWYgKG1f
Y29ubmVjdGlvbkNvdW50ICE9IGNvbnRleHQoKS5jb25uZWN0aW9uQ291bnQoKSkgeworICAgICAg
ICBtX2Nvbm5lY3Rpb25Db3VudCA9IGNvbnRleHQoKS5jb25uZWN0aW9uQ291bnQoKTsKKworICAg
ICAgICAvLyBSZWN1cnNpdmVseSBnbyB0aHJvdWdoIGFsbCBub2RlcyBjb25uZWN0ZWQgdG8gdXMu
CisgICAgICAgIEhhc2hTZXQ8QXVkaW9Ob2RlKj4gdmlzaXRlZE5vZGVzOworICAgICAgICBub3Rp
ZnlBdWRpb1NvdXJjZXNDb25uZWN0ZWRUb05vZGUodGhpcywgdmlzaXRlZE5vZGVzKTsKKyAgICB9
CisKKyAgICBBdWRpb05vZGU6OnB1bGxJbnB1dHMoZnJhbWVzVG9Qcm9jZXNzKTsKK30KKwordm9p
ZCBXZWJLaXRBdWRpb1Bhbm5lck5vZGU6OnByb2Nlc3Moc2l6ZV90IGZyYW1lc1RvUHJvY2VzcykK
K3sKKyAgICBBdWRpb0J1cyogZGVzdGluYXRpb24gPSBvdXRwdXQoMCktPmJ1cygpOworCisgICAg
aWYgKCFpc0luaXRpYWxpemVkKCkgfHwgIWlucHV0KDApLT5pc0Nvbm5lY3RlZCgpIHx8ICFtX3Bh
bm5lci5nZXQoKSkgeworICAgICAgICBkZXN0aW5hdGlvbi0+emVybygpOworICAgICAgICByZXR1
cm47CisgICAgfQorCisgICAgQXVkaW9CdXMqIHNvdXJjZSA9IGlucHV0KDApLT5idXMoKTsKKyAg
ICBpZiAoIXNvdXJjZSkgeworICAgICAgICBkZXN0aW5hdGlvbi0+emVybygpOworICAgICAgICBy
ZXR1cm47CisgICAgfQorCisgICAgLy8gSFJURkRhdGFiYXNlIHNob3VsZCBiZSBsb2FkZWQgYmVm
b3JlIHByb2NlZWRpbmcgZm9yIG9mZmxpbmUgYXVkaW8gY29udGV4dCB3aGVuIHBhbm5pbmdNb2Rl
bCgpIGlzICJIUlRGIi4KKyAgICBpZiAocGFubmluZ01vZGVsKCkgPT0gUGFubmluZ01vZGVsVHlw
ZTo6SFJURiAmJiAhbV9ocnRmRGF0YWJhc2VMb2FkZXItPmlzTG9hZGVkKCkpIHsKKyAgICAgICAg
aWYgKGNvbnRleHQoKS5pc09mZmxpbmVDb250ZXh0KCkpCisgICAgICAgICAgICBtX2hydGZEYXRh
YmFzZUxvYWRlci0+d2FpdEZvckxvYWRlclRocmVhZENvbXBsZXRpb24oKTsKKyAgICAgICAgZWxz
ZSB7CisgICAgICAgICAgICBkZXN0aW5hdGlvbi0+emVybygpOworICAgICAgICAgICAgcmV0dXJu
OworICAgICAgICB9CisgICAgfQorCisgICAgLy8gVGhlIGF1ZGlvIHRocmVhZCBjYW4ndCBibG9j
ayBvbiB0aGlzIGxvY2ssIHNvIHdlIHVzZSBzdGQ6OnRyeV90b19sb2NrIGluc3RlYWQuCisgICAg
c3RkOjp1bmlxdWVfbG9jazxMb2NrPiBsb2NrKG1fcGFubmVyTXV0ZXgsIHN0ZDo6dHJ5X3RvX2xv
Y2spOworICAgIGlmICghbG9jay5vd25zX2xvY2soKSkgeworICAgICAgICAvLyBUb28gYmFkIC0g
VGhlIHRyeV9sb2NrKCkgZmFpbGVkLiBXZSBtdXN0IGJlIGluIHRoZSBtaWRkbGUgb2YgY2hhbmdp
bmcgdGhlIHBhbm5lci4KKyAgICAgICAgZGVzdGluYXRpb24tPnplcm8oKTsKKyAgICAgICAgcmV0
dXJuOworICAgIH0KKworICAgIC8vIEFwcGx5IHRoZSBwYW5uaW5nIGVmZmVjdC4KKyAgICBkb3Vi
bGUgYXppbXV0aDsKKyAgICBkb3VibGUgZWxldmF0aW9uOworICAgIGdldEF6aW11dGhFbGV2YXRp
b24oJmF6aW11dGgsICZlbGV2YXRpb24pOworICAgIG1fcGFubmVyLT5wYW4oYXppbXV0aCwgZWxl
dmF0aW9uLCBzb3VyY2UsIGRlc3RpbmF0aW9uLCBmcmFtZXNUb1Byb2Nlc3MpOworCisgICAgLy8g
R2V0IHRoZSBkaXN0YW5jZSBhbmQgY29uZSBnYWluLgorICAgIGRvdWJsZSB0b3RhbEdhaW4gPSBk
aXN0YW5jZUNvbmVHYWluKCk7CisKKyAgICAvLyBTbmFwIHRvIGRlc2lyZWQgZ2FpbiBhdCB0aGUg
YmVnaW5uaW5nLgorICAgIGlmIChtX2xhc3RHYWluID09IC0xLjApCisgICAgICAgIG1fbGFzdEdh
aW4gPSB0b3RhbEdhaW47CisKKyAgICAvLyBBcHBseSBnYWluIGluLXBsYWNlIHdpdGggZGUtemlw
cGVyaW5nLgorICAgIGRlc3RpbmF0aW9uLT5jb3B5V2l0aEdhaW5Gcm9tKCpkZXN0aW5hdGlvbiwg
Jm1fbGFzdEdhaW4sIHRvdGFsR2Fpbik7Cit9CisKK3ZvaWQgV2ViS2l0QXVkaW9QYW5uZXJOb2Rl
OjpyZXNldCgpCit7CisgICAgbV9sYXN0R2FpbiA9IC0xLjA7IC8vIGZvcmNlIHRvIHNuYXAgdG8g
aW5pdGlhbCBnYWluCisgICAgaWYgKG1fcGFubmVyLmdldCgpKQorICAgICAgICBtX3Bhbm5lci0+
cmVzZXQoKTsKK30KKwordm9pZCBXZWJLaXRBdWRpb1Bhbm5lck5vZGU6OmluaXRpYWxpemUoKQor
eworICAgIGlmIChpc0luaXRpYWxpemVkKCkpCisgICAgICAgIHJldHVybjsKKworICAgIG1fcGFu
bmVyID0gUGFubmVyOjpjcmVhdGUobV9wYW5uaW5nTW9kZWwsIHNhbXBsZVJhdGUoKSwgbV9ocnRm
RGF0YWJhc2VMb2FkZXIuZ2V0KCkpOworCisgICAgQXVkaW9Ob2RlOjppbml0aWFsaXplKCk7Cit9
CisKK3ZvaWQgV2ViS2l0QXVkaW9QYW5uZXJOb2RlOjp1bmluaXRpYWxpemUoKQoreworICAgIGlm
ICghaXNJbml0aWFsaXplZCgpKQorICAgICAgICByZXR1cm47CisKKyAgICBtX3Bhbm5lciA9IG51
bGxwdHI7CisgICAgQXVkaW9Ob2RlOjp1bmluaXRpYWxpemUoKTsKK30KKworQXVkaW9MaXN0ZW5l
ciogV2ViS2l0QXVkaW9QYW5uZXJOb2RlOjpsaXN0ZW5lcigpCit7CisgICAgcmV0dXJuIGNvbnRl
eHQoKS5saXN0ZW5lcigpOworfQorCit2b2lkIFdlYktpdEF1ZGlvUGFubmVyTm9kZTo6c2V0UGFu
bmluZ01vZGVsKFBhbm5pbmdNb2RlbFR5cGUgbW9kZWwpCit7CisgICAgaWYgKCFtX3Bhbm5lci5n
ZXQoKSB8fCBtb2RlbCAhPSBtX3Bhbm5pbmdNb2RlbCkgeworICAgICAgICAvLyBUaGlzIHN5bmNo
cm9uaXplcyB3aXRoIHByb2Nlc3MoKS4KKyAgICAgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayht
X3Bhbm5lck11dGV4KTsKKworICAgICAgICBtX3Bhbm5lciA9IFBhbm5lcjo6Y3JlYXRlKG1vZGVs
LCBzYW1wbGVSYXRlKCksIG1faHJ0ZkRhdGFiYXNlTG9hZGVyLmdldCgpKTsKKyAgICAgICAgbV9w
YW5uaW5nTW9kZWwgPSBtb2RlbDsKKyAgICB9Cit9CisKK0Rpc3RhbmNlTW9kZWxUeXBlIFdlYktp
dEF1ZGlvUGFubmVyTm9kZTo6ZGlzdGFuY2VNb2RlbCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIGNv
bnN0X2Nhc3Q8V2ViS2l0QXVkaW9QYW5uZXJOb2RlKj4odGhpcyktPm1fZGlzdGFuY2VFZmZlY3Qu
bW9kZWwoKTsKK30KKwordm9pZCBXZWJLaXRBdWRpb1Bhbm5lck5vZGU6OnNldERpc3RhbmNlTW9k
ZWwoRGlzdGFuY2VNb2RlbFR5cGUgbW9kZWwpCit7CisgICAgbV9kaXN0YW5jZUVmZmVjdC5zZXRN
b2RlbChtb2RlbCwgdHJ1ZSk7Cit9CisKK3ZvaWQgV2ViS2l0QXVkaW9QYW5uZXJOb2RlOjpnZXRB
emltdXRoRWxldmF0aW9uKGRvdWJsZSogb3V0QXppbXV0aCwgZG91YmxlKiBvdXRFbGV2YXRpb24p
Cit7CisgICAgLy8gRklYTUU6IHdlIHNob3VsZCBjYWNoZSBhemltdXRoIGFuZCBlbGV2YXRpb24g
KGlmIHBvc3NpYmxlKSwgc28gd2Ugb25seSByZS1jYWxjdWxhdGUgaWYgYSBjaGFuZ2UgaGFzIGJl
ZW4gbWFkZS4KKworICAgIGRvdWJsZSBhemltdXRoID0gMC4wOworCisgICAgLy8gQ2FsY3VsYXRl
IHRoZSBzb3VyY2UtbGlzdGVuZXIgdmVjdG9yCisgICAgRmxvYXRQb2ludDNEIGxpc3RlbmVyUG9z
aXRpb24gPSBsaXN0ZW5lcigpLT5wb3NpdGlvbigpOworICAgIEZsb2F0UG9pbnQzRCBzb3VyY2VM
aXN0ZW5lciA9IHBvc2l0aW9uKCkgLSBsaXN0ZW5lclBvc2l0aW9uOworCisgICAgaWYgKHNvdXJj
ZUxpc3RlbmVyLmlzWmVybygpKSB7CisgICAgICAgIC8vIGRlZ2VuZXJhdGUgY2FzZSBpZiBzb3Vy
Y2UgYW5kIGxpc3RlbmVyIGFyZSBhdCB0aGUgc2FtZSBwb2ludAorICAgICAgICAqb3V0QXppbXV0
aCA9IDAuMDsKKyAgICAgICAgKm91dEVsZXZhdGlvbiA9IDAuMDsKKyAgICAgICAgcmV0dXJuOwor
ICAgIH0KKworICAgIHNvdXJjZUxpc3RlbmVyLm5vcm1hbGl6ZSgpOworCisgICAgLy8gQWxpZ24g
YXhlcworICAgIEZsb2F0UG9pbnQzRCBsaXN0ZW5lckZyb250ID0gbGlzdGVuZXIoKS0+b3JpZW50
YXRpb24oKTsKKyAgICBGbG9hdFBvaW50M0QgbGlzdGVuZXJVcCA9IGxpc3RlbmVyKCktPnVwVmVj
dG9yKCk7CisgICAgRmxvYXRQb2ludDNEIGxpc3RlbmVyUmlnaHQgPSBsaXN0ZW5lckZyb250LmNy
b3NzKGxpc3RlbmVyVXApOworICAgIGxpc3RlbmVyUmlnaHQubm9ybWFsaXplKCk7CisKKyAgICBG
bG9hdFBvaW50M0QgbGlzdGVuZXJGcm9udE5vcm0gPSBsaXN0ZW5lckZyb250OworICAgIGxpc3Rl
bmVyRnJvbnROb3JtLm5vcm1hbGl6ZSgpOworCisgICAgRmxvYXRQb2ludDNEIHVwID0gbGlzdGVu
ZXJSaWdodC5jcm9zcyhsaXN0ZW5lckZyb250Tm9ybSk7CisKKyAgICBmbG9hdCB1cFByb2plY3Rp
b24gPSBzb3VyY2VMaXN0ZW5lci5kb3QodXApOworCisgICAgRmxvYXRQb2ludDNEIHByb2plY3Rl
ZFNvdXJjZSA9IHNvdXJjZUxpc3RlbmVyIC0gdXBQcm9qZWN0aW9uICogdXA7CisgICAgcHJvamVj
dGVkU291cmNlLm5vcm1hbGl6ZSgpOworCisgICAgYXppbXV0aCA9IDE4MC4wICogYWNvcyhwcm9q
ZWN0ZWRTb3VyY2UuZG90KGxpc3RlbmVyUmlnaHQpKSAvIHBpRG91YmxlOworICAgIGZpeE5BTnMo
YXppbXV0aCk7IC8vIGF2b2lkIGlsbGVnYWwgdmFsdWVzCisKKyAgICAvLyBTb3VyY2UgIGluIGZy
b250IG9yIGJlaGluZCB0aGUgbGlzdGVuZXIKKyAgICBkb3VibGUgZnJvbnRCYWNrID0gcHJvamVj
dGVkU291cmNlLmRvdChsaXN0ZW5lckZyb250Tm9ybSk7CisgICAgaWYgKGZyb250QmFjayA8IDAu
MCkKKyAgICAgICAgYXppbXV0aCA9IDM2MC4wIC0gYXppbXV0aDsKKworICAgIC8vIE1ha2UgYXpp
bXV0aCByZWxhdGl2ZSB0byAiZnJvbnQiIGFuZCBub3QgInJpZ2h0IiBsaXN0ZW5lciB2ZWN0b3IK
KyAgICBpZiAoKGF6aW11dGggPj0gMC4wKSAmJiAoYXppbXV0aCA8PSAyNzAuMCkpCisgICAgICAg
IGF6aW11dGggPSA5MC4wIC0gYXppbXV0aDsKKyAgICBlbHNlCisgICAgICAgIGF6aW11dGggPSA0
NTAuMCAtIGF6aW11dGg7CisKKyAgICAvLyBFbGV2YXRpb24KKyAgICBkb3VibGUgZWxldmF0aW9u
ID0gOTAuMCAtIDE4MC4wICogYWNvcyhzb3VyY2VMaXN0ZW5lci5kb3QodXApKSAvIHBpRG91Ymxl
OworICAgIGZpeE5BTnMoZWxldmF0aW9uKTsgLy8gYXZvaWQgaWxsZWdhbCB2YWx1ZXMKKworICAg
IGlmIChlbGV2YXRpb24gPiA5MC4wKQorICAgICAgICBlbGV2YXRpb24gPSAxODAuMCAtIGVsZXZh
dGlvbjsKKyAgICBlbHNlIGlmIChlbGV2YXRpb24gPCAtOTAuMCkKKyAgICAgICAgZWxldmF0aW9u
ID0gLTE4MC4wIC0gZWxldmF0aW9uOworCisgICAgaWYgKG91dEF6aW11dGgpCisgICAgICAgICpv
dXRBemltdXRoID0gYXppbXV0aDsKKyAgICBpZiAob3V0RWxldmF0aW9uKQorICAgICAgICAqb3V0
RWxldmF0aW9uID0gZWxldmF0aW9uOworfQorCitmbG9hdCBXZWJLaXRBdWRpb1Bhbm5lck5vZGU6
OmRvcHBsZXJSYXRlKCkKK3sKKyAgICBkb3VibGUgZG9wcGxlclNoaWZ0ID0gMS4wOworCisgICAg
Ly8gRklYTUU6IG9wdGltaXplIGZvciBjYXNlIHdoZW4gbmVpdGhlciBzb3VyY2Ugbm9yIGxpc3Rl
bmVyIGhhcyBjaGFuZ2VkLi4uCisgICAgZG91YmxlIGRvcHBsZXJGYWN0b3IgPSBsaXN0ZW5lcigp
LT5kb3BwbGVyRmFjdG9yKCk7CisKKyAgICBpZiAoZG9wcGxlckZhY3RvciA+IDAuMCkgeworICAg
ICAgICBkb3VibGUgc3BlZWRPZlNvdW5kID0gbGlzdGVuZXIoKS0+c3BlZWRPZlNvdW5kKCk7CisK
KyAgICAgICAgY29uc3QgRmxvYXRQb2ludDNEICZzb3VyY2VWZWxvY2l0eSA9IG1fdmVsb2NpdHk7
CisgICAgICAgIGNvbnN0IEZsb2F0UG9pbnQzRCAmbGlzdGVuZXJWZWxvY2l0eSA9IGxpc3RlbmVy
KCktPnZlbG9jaXR5KCk7CisKKyAgICAgICAgLy8gRG9uJ3QgYm90aGVyIGlmIGJvdGggc291cmNl
IGFuZCBsaXN0ZW5lciBoYXZlIG5vIHZlbG9jaXR5CisgICAgICAgIGJvb2wgc291cmNlSGFzVmVs
b2NpdHkgPSAhc291cmNlVmVsb2NpdHkuaXNaZXJvKCk7CisgICAgICAgIGJvb2wgbGlzdGVuZXJI
YXNWZWxvY2l0eSA9ICFsaXN0ZW5lclZlbG9jaXR5LmlzWmVybygpOworCisgICAgICAgIGlmIChz
b3VyY2VIYXNWZWxvY2l0eSB8fCBsaXN0ZW5lckhhc1ZlbG9jaXR5KSB7CisgICAgICAgICAgICAv
LyBDYWxjdWxhdGUgdGhlIHNvdXJjZSB0byBsaXN0ZW5lciB2ZWN0b3IKKyAgICAgICAgICAgIEZs
b2F0UG9pbnQzRCBsaXN0ZW5lclBvc2l0aW9uID0gbGlzdGVuZXIoKS0+cG9zaXRpb24oKTsKKyAg
ICAgICAgICAgIEZsb2F0UG9pbnQzRCBzb3VyY2VUb0xpc3RlbmVyID0gcG9zaXRpb24oKSAtIGxp
c3RlbmVyUG9zaXRpb247CisKKyAgICAgICAgICAgIGRvdWJsZSBzb3VyY2VMaXN0ZW5lck1hZ25p
dHVkZSA9IHNvdXJjZVRvTGlzdGVuZXIubGVuZ3RoKCk7CisKKyAgICAgICAgICAgIGRvdWJsZSBs
aXN0ZW5lclByb2plY3Rpb24gPSBzb3VyY2VUb0xpc3RlbmVyLmRvdChsaXN0ZW5lclZlbG9jaXR5
KSAvIHNvdXJjZUxpc3RlbmVyTWFnbml0dWRlOworICAgICAgICAgICAgZG91YmxlIHNvdXJjZVBy
b2plY3Rpb24gPSBzb3VyY2VUb0xpc3RlbmVyLmRvdChzb3VyY2VWZWxvY2l0eSkgLyBzb3VyY2VM
aXN0ZW5lck1hZ25pdHVkZTsKKworICAgICAgICAgICAgbGlzdGVuZXJQcm9qZWN0aW9uID0gLWxp
c3RlbmVyUHJvamVjdGlvbjsKKyAgICAgICAgICAgIHNvdXJjZVByb2plY3Rpb24gPSAtc291cmNl
UHJvamVjdGlvbjsKKworICAgICAgICAgICAgZG91YmxlIHNjYWxlZFNwZWVkT2ZTb3VuZCA9IHNw
ZWVkT2ZTb3VuZCAvIGRvcHBsZXJGYWN0b3I7CisgICAgICAgICAgICBsaXN0ZW5lclByb2plY3Rp
b24gPSBzdGQ6Om1pbihsaXN0ZW5lclByb2plY3Rpb24sIHNjYWxlZFNwZWVkT2ZTb3VuZCk7Cisg
ICAgICAgICAgICBzb3VyY2VQcm9qZWN0aW9uID0gc3RkOjptaW4oc291cmNlUHJvamVjdGlvbiwg
c2NhbGVkU3BlZWRPZlNvdW5kKTsKKworICAgICAgICAgICAgZG9wcGxlclNoaWZ0ID0gKChzcGVl
ZE9mU291bmQgLSBkb3BwbGVyRmFjdG9yICogbGlzdGVuZXJQcm9qZWN0aW9uKSAvIChzcGVlZE9m
U291bmQgLSBkb3BwbGVyRmFjdG9yICogc291cmNlUHJvamVjdGlvbikpOworICAgICAgICAgICAg
Zml4TkFOcyhkb3BwbGVyU2hpZnQpOyAvLyBhdm9pZCBpbGxlZ2FsIHZhbHVlcworCisgICAgICAg
ICAgICAvLyBMaW1pdCB0aGUgcGl0Y2ggc2hpZnRpbmcgdG8gNCBvY3RhdmVzIHVwIGFuZCAzIG9j
dGF2ZXMgZG93bi4KKyAgICAgICAgICAgIGlmIChkb3BwbGVyU2hpZnQgPiAxNi4wKQorICAgICAg
ICAgICAgICAgIGRvcHBsZXJTaGlmdCA9IDE2LjA7CisgICAgICAgICAgICBlbHNlIGlmIChkb3Bw
bGVyU2hpZnQgPCAwLjEyNSkKKyAgICAgICAgICAgICAgICBkb3BwbGVyU2hpZnQgPSAwLjEyNTsK
KyAgICAgICAgfQorICAgIH0KKworICAgIHJldHVybiBzdGF0aWNfY2FzdDxmbG9hdD4oZG9wcGxl
clNoaWZ0KTsKK30KKworZmxvYXQgV2ViS2l0QXVkaW9QYW5uZXJOb2RlOjpkaXN0YW5jZUNvbmVH
YWluKCkKK3sKKyAgICBGbG9hdFBvaW50M0QgbGlzdGVuZXJQb3NpdGlvbiA9IGxpc3RlbmVyKCkt
PnBvc2l0aW9uKCk7CisgICAgRmxvYXRQb2ludDNEIHNvdXJjZVBvc2l0aW9uID0gcG9zaXRpb24o
KTsKKworICAgIGRvdWJsZSBsaXN0ZW5lckRpc3RhbmNlID0gc291cmNlUG9zaXRpb24uZGlzdGFu
Y2VUbyhsaXN0ZW5lclBvc2l0aW9uKTsKKyAgICBkb3VibGUgZGlzdGFuY2VHYWluID0gbV9kaXN0
YW5jZUVmZmVjdC5nYWluKGxpc3RlbmVyRGlzdGFuY2UpOworCisgICAgbV9kaXN0YW5jZUdhaW4t
PnNldFZhbHVlKHN0YXRpY19jYXN0PGZsb2F0PihkaXN0YW5jZUdhaW4pKTsKKworICAgIC8vIEZJ
WE1FOiBjb3VsZCBvcHRpbWl6ZSBieSBjYWNoaW5nIGNvbmVHYWluCisgICAgZG91YmxlIGNvbmVH
YWluID0gbV9jb25lRWZmZWN0LmdhaW4oc291cmNlUG9zaXRpb24sIG1fb3JpZW50YXRpb24sIGxp
c3RlbmVyUG9zaXRpb24pOworCisgICAgbV9jb25lR2Fpbi0+c2V0VmFsdWUoc3RhdGljX2Nhc3Q8
ZmxvYXQ+KGNvbmVHYWluKSk7CisKKyAgICByZXR1cm4gZmxvYXQoZGlzdGFuY2VHYWluICogY29u
ZUdhaW4pOworfQorCit2b2lkIFdlYktpdEF1ZGlvUGFubmVyTm9kZTo6bm90aWZ5QXVkaW9Tb3Vy
Y2VzQ29ubmVjdGVkVG9Ob2RlKEF1ZGlvTm9kZSogbm9kZSwgSGFzaFNldDxBdWRpb05vZGUqPiYg
dmlzaXRlZE5vZGVzKQoreworICAgIEFTU0VSVChub2RlKTsKKyAgICBpZiAoIW5vZGUpCisgICAg
ICAgIHJldHVybjsKKworICAgIC8vIEZpcnN0IGNoZWNrIGlmIHRoaXMgbm9kZSBpcyBhbiBBdWRp
b0J1ZmZlclNvdXJjZU5vZGUuIElmIHNvLCBsZXQgaXQga25vdyBhYm91dCB1cyBzbyB0aGF0IGRv
cHBsZXIgc2hpZnQgcGl0Y2ggY2FuIGJlIHRha2VuIGludG8gYWNjb3VudC4KKyAgICBpZiAobm9k
ZS0+bm9kZVR5cGUoKSA9PSBOb2RlVHlwZUF1ZGlvQnVmZmVyU291cmNlKSB7CisgICAgICAgIEF1
ZGlvQnVmZmVyU291cmNlTm9kZSogYnVmZmVyU291cmNlTm9kZSA9IHJlaW50ZXJwcmV0X2Nhc3Q8
QXVkaW9CdWZmZXJTb3VyY2VOb2RlKj4obm9kZSk7CisgICAgICAgIGJ1ZmZlclNvdXJjZU5vZGUt
PnNldFBhbm5lck5vZGUodGhpcyk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgLy8gR28gdGhyb3Vn
aCBhbGwgaW5wdXRzIHRvIHRoaXMgbm9kZS4KKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsg
aSA8IG5vZGUtPm51bWJlck9mSW5wdXRzKCk7ICsraSkgeworICAgICAgICAgICAgQXVkaW9Ob2Rl
SW5wdXQqIGlucHV0ID0gbm9kZS0+aW5wdXQoaSk7CisKKyAgICAgICAgICAgIC8vIEZvciBlYWNo
IGlucHV0LCBnbyB0aHJvdWdoIGFsbCBvZiBpdHMgY29ubmVjdGlvbnMsIGxvb2tpbmcgZm9yIEF1
ZGlvQnVmZmVyU291cmNlTm9kZXMuCisgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGogPSAwOyBq
IDwgaW5wdXQtPm51bWJlck9mUmVuZGVyaW5nQ29ubmVjdGlvbnMoKTsgKytqKSB7CisgICAgICAg
ICAgICAgICAgQXVkaW9Ob2RlT3V0cHV0KiBjb25uZWN0ZWRPdXRwdXQgPSBpbnB1dC0+cmVuZGVy
aW5nT3V0cHV0KGopOworICAgICAgICAgICAgICAgIEF1ZGlvTm9kZSogY29ubmVjdGVkTm9kZSA9
IGNvbm5lY3RlZE91dHB1dC0+bm9kZSgpOworICAgICAgICAgICAgICAgIGlmICh2aXNpdGVkTm9k
ZXMuY29udGFpbnMoY29ubmVjdGVkTm9kZSkpCisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVl
OworCisgICAgICAgICAgICAgICAgdmlzaXRlZE5vZGVzLmFkZChjb25uZWN0ZWROb2RlKTsKKyAg
ICAgICAgICAgICAgICBub3RpZnlBdWRpb1NvdXJjZXNDb25uZWN0ZWRUb05vZGUoY29ubmVjdGVk
Tm9kZSwgdmlzaXRlZE5vZGVzKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KK30K
KworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKFdFQl9BVURJTykK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vV2ViS2l0QXVkaW9Q
YW5uZXJOb2RlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1dlYktpdEF1ZGlv
UGFubmVyTm9kZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi44OTc5
N2MzYzRjNQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVk
aW8vV2ViS2l0QXVkaW9QYW5uZXJOb2RlLmgKQEAgLTAsMCArMSwxNjAgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTAsIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiAgUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAq
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTgor
ICogQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTCisgKiBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShXRUJfQVVESU8pCisKKyNpbmNsdWRlICJBdWRp
b0xpc3RlbmVyLmgiCisjaW5jbHVkZSAiQXVkaW9Ob2RlLmgiCisjaW5jbHVkZSAiQXVkaW9QYXJh
bS5oIgorI2luY2x1ZGUgIkNvbmUuaCIKKyNpbmNsdWRlICJEaXN0YW5jZS5oIgorI2luY2x1ZGUg
IkZsb2F0UG9pbnQzRC5oIgorI2luY2x1ZGUgIlBhbm5lci5oIgorI2luY2x1ZGUgIlBhbm5lck5v
ZGUuaCIKKyNpbmNsdWRlICJXZWJLaXRBdWRpb0NvbnRleHQuaCIKKyNpbmNsdWRlIDxtZW1vcnk+
CisjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KKyNpbmNsdWRlIDx3dGYvTG9jay5oPgorCituYW1l
c3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIEhSVEZEYXRhYmFzZUxvYWRlcjsKKworLy8gUGFubmVy
Tm9kZSBpcyBhbiBBdWRpb05vZGUgd2l0aCBvbmUgaW5wdXQgYW5kIG9uZSBvdXRwdXQuCisvLyBJ
dCBwb3NpdGlvbnMgYSBzb3VuZCBpbiAzRCBzcGFjZSwgd2l0aCB0aGUgZXhhY3QgZWZmZWN0IGRl
cGVuZGVudCBvbiB0aGUgcGFubmluZyBtb2RlbC4KKy8vIEl0IGhhcyBhIHBvc2l0aW9uIGFuZCBh
biBvcmllbnRhdGlvbiBpbiAzRCBzcGFjZSB3aGljaCBpcyByZWxhdGl2ZSB0byB0aGUgcG9zaXRp
b24gYW5kIG9yaWVudGF0aW9uIG9mIHRoZSBjb250ZXh0J3MgQXVkaW9MaXN0ZW5lci4KKy8vIEEg
ZGlzdGFuY2UgZWZmZWN0IHdpbGwgYXR0ZW51YXRlIHRoZSBnYWluIGFzIHRoZSBwb3NpdGlvbiBt
b3ZlcyBhd2F5IGZyb20gdGhlIGxpc3RlbmVyLgorLy8gQSBjb25lIGVmZmVjdCB3aWxsIGF0dGVu
dWF0ZSB0aGUgZ2FpbiBhcyB0aGUgb3JpZW50YXRpb24gbW92ZXMgYXdheSBmcm9tIHRoZSBsaXN0
ZW5lci4KKy8vIEFsbCBvZiB0aGVzZSBlZmZlY3RzIGZvbGxvdyB0aGUgT3BlbkFMIHNwZWNpZmlj
YXRpb24gdmVyeSBjbG9zZWx5LgorCitjbGFzcyBXZWJLaXRBdWRpb1Bhbm5lck5vZGUgZmluYWwg
OiBwdWJsaWMgUGFubmVyTm9kZUJhc2UgeworICAgIFdURl9NQUtFX0lTT19BTExPQ0FURUQoV2Vi
S2l0QXVkaW9QYW5uZXJOb2RlKTsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUmVmPFdlYktpdEF1ZGlv
UGFubmVyTm9kZT4gY3JlYXRlKFdlYktpdEF1ZGlvQ29udGV4dCYgY29udGV4dCwgZmxvYXQgc2Ft
cGxlUmF0ZSkKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFdlYktpdEF1ZGlv
UGFubmVyTm9kZShjb250ZXh0LCBzYW1wbGVSYXRlKSk7CisgICAgfQorCisgICAgdmlydHVhbCB+
V2ViS2l0QXVkaW9QYW5uZXJOb2RlKCk7CisKKyAgICBXZWJLaXRBdWRpb0NvbnRleHQmIGNvbnRl
eHQoKSB7IHJldHVybiBkb3duY2FzdDxXZWJLaXRBdWRpb0NvbnRleHQ+KEF1ZGlvTm9kZTo6Y29u
dGV4dCgpKTsgfQorICAgIGNvbnN0IFdlYktpdEF1ZGlvQ29udGV4dCYgY29udGV4dCgpIGNvbnN0
IHsgcmV0dXJuIGRvd25jYXN0PFdlYktpdEF1ZGlvQ29udGV4dD4oQXVkaW9Ob2RlOjpjb250ZXh0
KCkpOyB9CisKKyAgICAvLyBBdWRpb05vZGUKKyAgICB2b2lkIHByb2Nlc3Moc2l6ZV90IGZyYW1l
c1RvUHJvY2Vzcykgb3ZlcnJpZGU7CisgICAgdm9pZCBwdWxsSW5wdXRzKHNpemVfdCBmcmFtZXNU
b1Byb2Nlc3MpIG92ZXJyaWRlOworICAgIHZvaWQgcmVzZXQoKSBvdmVycmlkZTsKKyAgICB2b2lk
IGluaXRpYWxpemUoKSBvdmVycmlkZTsKKyAgICB2b2lkIHVuaW5pdGlhbGl6ZSgpIG92ZXJyaWRl
OworCisgICAgLy8gTGlzdGVuZXIKKyAgICBBdWRpb0xpc3RlbmVyKiBsaXN0ZW5lcigpOworCisg
ICAgLy8gUGFubmluZyBtb2RlbAorICAgIFBhbm5pbmdNb2RlbFR5cGUgcGFubmluZ01vZGVsKCkg
Y29uc3QgeyByZXR1cm4gbV9wYW5uaW5nTW9kZWw7IH0KKyAgICB2b2lkIHNldFBhbm5pbmdNb2Rl
bChQYW5uaW5nTW9kZWxUeXBlKTsKKworICAgIC8vIFBvc2l0aW9uCisgICAgRmxvYXRQb2ludDNE
IHBvc2l0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9wb3NpdGlvbjsgfQorICAgIHZvaWQgc2V0UG9z
aXRpb24oZmxvYXQgeCwgZmxvYXQgeSwgZmxvYXQgeikgeyBtX3Bvc2l0aW9uID0gRmxvYXRQb2lu
dDNEKHgsIHksIHopOyB9CisKKyAgICAvLyBPcmllbnRhdGlvbgorICAgIEZsb2F0UG9pbnQzRCBv
cmllbnRhdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fb3JpZW50YXRpb247IH0KKyAgICB2b2lkIHNl
dE9yaWVudGF0aW9uKGZsb2F0IHgsIGZsb2F0IHksIGZsb2F0IHopIHsgbV9vcmllbnRhdGlvbiA9
IEZsb2F0UG9pbnQzRCh4LCB5LCB6KTsgfQorCisgICAgLy8gVmVsb2NpdHkKKyAgICBGbG9hdFBv
aW50M0QgdmVsb2NpdHkoKSBjb25zdCB7IHJldHVybiBtX3ZlbG9jaXR5OyB9CisgICAgdm9pZCBz
ZXRWZWxvY2l0eShmbG9hdCB4LCBmbG9hdCB5LCBmbG9hdCB6KSB7IG1fdmVsb2NpdHkgPSBGbG9h
dFBvaW50M0QoeCwgeSwgeik7IH0KKworICAgIC8vIERpc3RhbmNlIHBhcmFtZXRlcnMKKyAgICBE
aXN0YW5jZU1vZGVsVHlwZSBkaXN0YW5jZU1vZGVsKCkgY29uc3Q7CisgICAgdm9pZCBzZXREaXN0
YW5jZU1vZGVsKERpc3RhbmNlTW9kZWxUeXBlKTsKKworICAgIGRvdWJsZSByZWZEaXN0YW5jZSgp
IHsgcmV0dXJuIG1fZGlzdGFuY2VFZmZlY3QucmVmRGlzdGFuY2UoKTsgfQorICAgIHZvaWQgc2V0
UmVmRGlzdGFuY2UoZG91YmxlIHJlZkRpc3RhbmNlKSB7IG1fZGlzdGFuY2VFZmZlY3Quc2V0UmVm
RGlzdGFuY2UocmVmRGlzdGFuY2UpOyB9CisKKyAgICBkb3VibGUgbWF4RGlzdGFuY2UoKSB7IHJl
dHVybiBtX2Rpc3RhbmNlRWZmZWN0Lm1heERpc3RhbmNlKCk7IH0KKyAgICB2b2lkIHNldE1heERp
c3RhbmNlKGRvdWJsZSBtYXhEaXN0YW5jZSkgeyBtX2Rpc3RhbmNlRWZmZWN0LnNldE1heERpc3Rh
bmNlKG1heERpc3RhbmNlKTsgfQorCisgICAgZG91YmxlIHJvbGxvZmZGYWN0b3IoKSB7IHJldHVy
biBtX2Rpc3RhbmNlRWZmZWN0LnJvbGxvZmZGYWN0b3IoKTsgfQorICAgIHZvaWQgc2V0Um9sbG9m
ZkZhY3Rvcihkb3VibGUgcm9sbG9mZkZhY3RvcikgeyBtX2Rpc3RhbmNlRWZmZWN0LnNldFJvbGxv
ZmZGYWN0b3Iocm9sbG9mZkZhY3Rvcik7IH0KKworICAgIC8vIFNvdW5kIGNvbmVzIC0gYW5nbGVz
IGluIGRlZ3JlZXMKKyAgICBkb3VibGUgY29uZUlubmVyQW5nbGUoKSBjb25zdCB7IHJldHVybiBt
X2NvbmVFZmZlY3QuaW5uZXJBbmdsZSgpOyB9CisgICAgdm9pZCBzZXRDb25lSW5uZXJBbmdsZShk
b3VibGUgYW5nbGUpIHsgbV9jb25lRWZmZWN0LnNldElubmVyQW5nbGUoYW5nbGUpOyB9CisKKyAg
ICBkb3VibGUgY29uZU91dGVyQW5nbGUoKSBjb25zdCB7IHJldHVybiBtX2NvbmVFZmZlY3Qub3V0
ZXJBbmdsZSgpOyB9CisgICAgdm9pZCBzZXRDb25lT3V0ZXJBbmdsZShkb3VibGUgYW5nbGUpIHsg
bV9jb25lRWZmZWN0LnNldE91dGVyQW5nbGUoYW5nbGUpOyB9CisKKyAgICBkb3VibGUgY29uZU91
dGVyR2FpbigpIGNvbnN0IHsgcmV0dXJuIG1fY29uZUVmZmVjdC5vdXRlckdhaW4oKTsgfQorICAg
IHZvaWQgc2V0Q29uZU91dGVyR2Fpbihkb3VibGUgYW5nbGUpIHsgbV9jb25lRWZmZWN0LnNldE91
dGVyR2FpbihhbmdsZSk7IH0KKworICAgIHZvaWQgZ2V0QXppbXV0aEVsZXZhdGlvbihkb3VibGUq
IG91dEF6aW11dGgsIGRvdWJsZSogb3V0RWxldmF0aW9uKTsKKyAgICBmbG9hdCBkb3BwbGVyUmF0
ZSgpIGZpbmFsOworCisgICAgLy8gQWNjZXNzb3JzIGZvciBkeW5hbWljYWxseSBjYWxjdWxhdGVk
IGdhaW4gdmFsdWVzLgorICAgIEF1ZGlvUGFyYW0qIGRpc3RhbmNlR2FpbigpIHsgcmV0dXJuIG1f
ZGlzdGFuY2VHYWluLmdldCgpOyB9CisgICAgQXVkaW9QYXJhbSogY29uZUdhaW4oKSB7IHJldHVy
biBtX2NvbmVHYWluLmdldCgpOyB9CisKKyAgICBkb3VibGUgdGFpbFRpbWUoKSBjb25zdCBvdmVy
cmlkZSB7IHJldHVybiBtX3Bhbm5lciA/IG1fcGFubmVyLT50YWlsVGltZSgpIDogMDsgfQorICAg
IGRvdWJsZSBsYXRlbmN5VGltZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fcGFubmVyID8g
bV9wYW5uZXItPmxhdGVuY3lUaW1lKCkgOiAwOyB9CisKK3ByaXZhdGU6CisgICAgV2ViS2l0QXVk
aW9QYW5uZXJOb2RlKFdlYktpdEF1ZGlvQ29udGV4dCYsIGZsb2F0IHNhbXBsZVJhdGUpOworCisg
ICAgLy8gUmV0dXJucyB0aGUgY29tYmluZWQgZGlzdGFuY2UgYW5kIGNvbmUgZ2FpbiBhdHRlbnVh
dGlvbi4KKyAgICBmbG9hdCBkaXN0YW5jZUNvbmVHYWluKCk7CisKKyAgICAvLyBOb3RpZmllcyBh
bnkgQXVkaW9CdWZmZXJTb3VyY2VOb2RlcyBjb25uZWN0ZWQgdG8gdXMgZWl0aGVyIGRpcmVjdGx5
IG9yIGluZGlyZWN0bHkgYWJvdXQgb3VyIGV4aXN0ZW5jZS4KKyAgICAvLyBUaGlzIGlzIGluIG9y
ZGVyIHRvIGhhbmRsZSB0aGUgcGl0Y2ggY2hhbmdlIG5lY2Vzc2FyeSBmb3IgdGhlIGRvcHBsZXIg
c2hpZnQuCisgICAgdm9pZCBub3RpZnlBdWRpb1NvdXJjZXNDb25uZWN0ZWRUb05vZGUoQXVkaW9O
b2RlKiwgSGFzaFNldDxBdWRpb05vZGUqPiYgdmlzaXRlZE5vZGVzKTsKKworICAgIHN0ZDo6dW5p
cXVlX3B0cjxQYW5uZXI+IG1fcGFubmVyOworICAgIFBhbm5pbmdNb2RlbFR5cGUgbV9wYW5uaW5n
TW9kZWw7CisKKyAgICBGbG9hdFBvaW50M0QgbV9wb3NpdGlvbjsKKyAgICBGbG9hdFBvaW50M0Qg
bV9vcmllbnRhdGlvbjsKKyAgICBGbG9hdFBvaW50M0QgbV92ZWxvY2l0eTsKKworICAgIC8vIEdh
aW4KKyAgICBSZWZQdHI8QXVkaW9QYXJhbT4gbV9kaXN0YW5jZUdhaW47CisgICAgUmVmUHRyPEF1
ZGlvUGFyYW0+IG1fY29uZUdhaW47CisgICAgRGlzdGFuY2VFZmZlY3QgbV9kaXN0YW5jZUVmZmVj
dDsKKyAgICBDb25lRWZmZWN0IG1fY29uZUVmZmVjdDsKKyAgICBmbG9hdCBtX2xhc3RHYWluOwor
CisgICAgLy8gSFJURiBEYXRhYmFzZSBsb2FkZXIKKyAgICBSZWZQdHI8SFJURkRhdGFiYXNlTG9h
ZGVyPiBtX2hydGZEYXRhYmFzZUxvYWRlcjsKKworICAgIHVuc2lnbmVkIG1fY29ubmVjdGlvbkNv
dW50OworCisgICAgLy8gU3luY2hyb25pemUgcHJvY2VzcygpIGFuZCBzZXRQYW5uaW5nTW9kZWwo
KSB3aGljaCBjYW4gY2hhbmdlIHRoZSBwYW5uZXIuCisgICAgbXV0YWJsZSBMb2NrIG1fcGFubmVy
TXV0ZXg7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9XZWJLaXRBdWRpb1Bhbm5lck5vZGUu
aWRsIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9XZWJLaXRBdWRpb1Bhbm5lck5v
ZGUuaWRsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi44OGQyNjkxMGFl
MQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vV2Vi
S2l0QXVkaW9QYW5uZXJOb2RlLmlkbApAQCAtMCwwICsxLDQ5IEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDEwLCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBV
UlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
CisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04KKyAqIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUworICogU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworWwor
ICAgIENvbmRpdGlvbmFsPVdFQl9BVURJTywKKyAgICBKU0dlbmVyYXRlVG9KU09iamVjdCwKKyAg
ICBJbnRlcmZhY2VOYW1lPXdlYmtpdEF1ZGlvUGFubmVyTm9kZSwKK10gaW50ZXJmYWNlIFdlYktp
dEF1ZGlvUGFubmVyTm9kZSA6IEF1ZGlvTm9kZSB7CisgICAgLy8gRGVmYXVsdCBtb2RlbCBmb3Ig
c3RlcmVvIGlzIEhSVEYKKyAgICBhdHRyaWJ1dGUgUGFubmluZ01vZGVsVHlwZSBwYW5uaW5nTW9k
ZWw7CisKKyAgICAvLyBVc2VzIGEgM0QgY2FydGVzaWFuIGNvb3JkaW5hdGUgc3lzdGVtCisgICAg
dm9pZCBzZXRQb3NpdGlvbih1bnJlc3RyaWN0ZWQgZmxvYXQgeCwgdW5yZXN0cmljdGVkIGZsb2F0
IHksIHVucmVzdHJpY3RlZCBmbG9hdCB6KTsKKyAgICB2b2lkIHNldE9yaWVudGF0aW9uKHVucmVz
dHJpY3RlZCBmbG9hdCB4LCB1bnJlc3RyaWN0ZWQgZmxvYXQgeSwgdW5yZXN0cmljdGVkIGZsb2F0
IHopOworICAgIHZvaWQgc2V0VmVsb2NpdHkodW5yZXN0cmljdGVkIGZsb2F0IHgsIHVucmVzdHJp
Y3RlZCBmbG9hdCB5LCB1bnJlc3RyaWN0ZWQgZmxvYXQgeik7CisKKyAgICAvLyBEaXN0YW5jZSBt
b2RlbAorICAgIGF0dHJpYnV0ZSBEaXN0YW5jZU1vZGVsVHlwZSBkaXN0YW5jZU1vZGVsOworCisg
ICAgYXR0cmlidXRlIHVucmVzdHJpY3RlZCBkb3VibGUgcmVmRGlzdGFuY2U7CisgICAgYXR0cmli
dXRlIHVucmVzdHJpY3RlZCBkb3VibGUgbWF4RGlzdGFuY2U7CisgICAgYXR0cmlidXRlIHVucmVz
dHJpY3RlZCBkb3VibGUgcm9sbG9mZkZhY3RvcjsKKworICAgIC8vIERpcmVjdGlvbmFsIHNvdW5k
IGNvbmUKKyAgICBhdHRyaWJ1dGUgdW5yZXN0cmljdGVkIGRvdWJsZSBjb25lSW5uZXJBbmdsZTsK
KyAgICBhdHRyaWJ1dGUgdW5yZXN0cmljdGVkIGRvdWJsZSBjb25lT3V0ZXJBbmdsZTsKKyAgICBh
dHRyaWJ1dGUgdW5yZXN0cmljdGVkIGRvdWJsZSBjb25lT3V0ZXJHYWluOworfTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vV2ViS2l0T2ZmbGluZUF1ZGlvQ29u
dGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1dlYktpdE9mZmxpbmVB
dWRpb0NvbnRleHQuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi5k
OGUzOTlhMTRhMwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
YXVkaW8vV2ViS2l0T2ZmbGluZUF1ZGlvQ29udGV4dC5jcHAKQEAgLTAsMCArMSw2MiBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxMiwgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuICBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1Q
TElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OCisgKiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKKyAqIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2lmIEVOQUJMRShXRUJfQVVESU8pCisK
KyNpbmNsdWRlICJXZWJLaXRPZmZsaW5lQXVkaW9Db250ZXh0LmgiCisKKyNpbmNsdWRlICJBdWRp
b0J1ZmZlci5oIgorI2luY2x1ZGUgIkRvY3VtZW50LmgiCisjaW5jbHVkZSA8d3RmL0lzb01hbGxv
Y0lubGluZXMuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitXVEZfTUFLRV9JU09fQUxMT0NB
VEVEX0lNUEwoV2ViS2l0T2ZmbGluZUF1ZGlvQ29udGV4dCk7CisKK2lubGluZSBXZWJLaXRPZmZs
aW5lQXVkaW9Db250ZXh0OjpXZWJLaXRPZmZsaW5lQXVkaW9Db250ZXh0KERvY3VtZW50JiBkb2N1
bWVudCwgQXVkaW9CdWZmZXIqIHJlbmRlclRhcmdldCkKKyAgICA6IFdlYktpdEF1ZGlvQ29udGV4
dChkb2N1bWVudCwgcmVuZGVyVGFyZ2V0KQoreworfQorCitFeGNlcHRpb25PcjxSZWY8V2ViS2l0
T2ZmbGluZUF1ZGlvQ29udGV4dD4+IFdlYktpdE9mZmxpbmVBdWRpb0NvbnRleHQ6OmNyZWF0ZShT
Y3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCB1bnNpZ25lZCBudW1iZXJPZkNoYW5uZWxz
LCBzaXplX3QgbnVtYmVyT2ZGcmFtZXMsIGZsb2F0IHNhbXBsZVJhdGUpCit7CisgICAgLy8gRklY
TUU6IEFkZCBzdXBwb3J0IGZvciB3b3JrZXJzLgorICAgIGlmICghaXM8RG9jdW1lbnQ+KGNvbnRl
eHQpKQorICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgTm90U3VwcG9ydGVkRXJyb3IgfTsKKyAg
ICBpZiAoIW51bWJlck9mQ2hhbm5lbHMgfHwgbnVtYmVyT2ZDaGFubmVscyA+IDEwIHx8ICFudW1i
ZXJPZkZyYW1lcyB8fCAhaXNTYW1wbGVSYXRlUmFuZ2VHb29kKHNhbXBsZVJhdGUpKQorICAgICAg
ICByZXR1cm4gRXhjZXB0aW9uIHsgU3ludGF4RXJyb3IgfTsKKyAgICBhdXRvIHJlbmRlclRhcmdl
dCA9IEF1ZGlvQnVmZmVyOjpjcmVhdGUobnVtYmVyT2ZDaGFubmVscywgbnVtYmVyT2ZGcmFtZXMs
IHNhbXBsZVJhdGUpOworICAgIGlmICghcmVuZGVyVGFyZ2V0KQorICAgICAgICByZXR1cm4gRXhj
ZXB0aW9uIHsgU3ludGF4RXJyb3IgfTsKKworICAgIGF1dG8gYXVkaW9Db250ZXh0ID0gYWRvcHRS
ZWYoKm5ldyBXZWJLaXRPZmZsaW5lQXVkaW9Db250ZXh0KGRvd25jYXN0PERvY3VtZW50Pihjb250
ZXh0KSwgcmVuZGVyVGFyZ2V0LmdldCgpKSk7CisgICAgYXVkaW9Db250ZXh0LT5zdXNwZW5kSWZO
ZWVkZWQoKTsKKyAgICByZXR1cm4gYXVkaW9Db250ZXh0OworfQorCit9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoV0VCX0FVRElPKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9XZWJLaXRPZmZsaW5lQXVkaW9Db250ZXh0LmggYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1dlYktpdE9mZmxpbmVBdWRpb0NvbnRleHQu
aApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uYzI1NGVkNDFmZTAKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1dlYktpdE9m
ZmxpbmVBdWRpb0NvbnRleHQuaApAQCAtMCwwICsxLDQwIEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDEyLCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBP
U0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisg
KiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04KKyAqIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUworICogU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdt
YSBvbmNlCisKKyNpbmNsdWRlICJXZWJLaXRBdWRpb0NvbnRleHQuaCIKKworbmFtZXNwYWNlIFdl
YkNvcmUgeworCitjbGFzcyBXZWJLaXRPZmZsaW5lQXVkaW9Db250ZXh0IGZpbmFsIDogcHVibGlj
IFdlYktpdEF1ZGlvQ29udGV4dCB7CisgICAgV1RGX01BS0VfSVNPX0FMTE9DQVRFRChXZWJLaXRP
ZmZsaW5lQXVkaW9Db250ZXh0KTsKK3B1YmxpYzoKKyAgICBzdGF0aWMgRXhjZXB0aW9uT3I8UmVm
PFdlYktpdE9mZmxpbmVBdWRpb0NvbnRleHQ+PiBjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCYsIHVuc2lnbmVkIG51bWJlck9mQ2hhbm5lbHMsIHNpemVfdCBudW1iZXJPZkZyYW1lcywgZmxv
YXQgc2FtcGxlUmF0ZSk7CisKK3ByaXZhdGU6CisgICAgV2ViS2l0T2ZmbGluZUF1ZGlvQ29udGV4
dChEb2N1bWVudCYsIEF1ZGlvQnVmZmVyKiByZW5kZXJUYXJnZXQpOworfTsKKworfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRp
by9XZWJLaXRPZmZsaW5lQXVkaW9Db250ZXh0LmlkbCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViYXVkaW8vV2ViS2l0T2ZmbGluZUF1ZGlvQ29udGV4dC5pZGwKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAuLjFkYTRjOTM2NjY1Ci0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9XZWJLaXRPZmZsaW5lQXVkaW9Db250ZXh0Lmlk
bApAQCAtMCwwICsxLDMxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyLCBHb29nbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBB
TkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04KKyAqIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUworICogU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworWworICAgIENvbmRpdGlvbmFsPVdFQl9B
VURJTywKKyAgICBJbnRlcmZhY2VOYW1lPXdlYmtpdE9mZmxpbmVBdWRpb0NvbnRleHQKKyAgICBK
U0dlbmVyYXRlVG9KU09iamVjdCwKK10gaW50ZXJmYWNlIFdlYktpdE9mZmxpbmVBdWRpb0NvbnRl
eHQgOiBXZWJLaXRBdWRpb0NvbnRleHQgeworICAgIFtDYWxsV2l0aD1TY3JpcHRFeGVjdXRpb25D
b250ZXh0LCBNYXlUaHJvd0V4Y2VwdGlvbl0gY29uc3RydWN0b3IodW5zaWduZWQgbG9uZyBudW1i
ZXJPZkNoYW5uZWxzLCB1bnNpZ25lZCBsb25nIG51bWJlck9mRnJhbWVzLCB1bnJlc3RyaWN0ZWQg
ZmxvYXQgc2FtcGxlUmF0ZSk7Cit9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvU291cmNl
cy50eHQgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAppbmRleCAyYzU2ZWQ1MTM5ZC4uMTQ5
NTljMzgxNTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CisrKyBiL1Nv
dXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CkBAIC0yNjksNiArMjY5LDkgQEAgTW9kdWxlcy93ZWJh
dWRpby9TY3JpcHRQcm9jZXNzb3JOb2RlLmNwcAogTW9kdWxlcy93ZWJhdWRpby9XYXZlU2hhcGVy
RFNQS2VybmVsLmNwcAogTW9kdWxlcy93ZWJhdWRpby9XYXZlU2hhcGVyTm9kZS5jcHAKIE1vZHVs
ZXMvd2ViYXVkaW8vV2F2ZVNoYXBlclByb2Nlc3Nvci5jcHAKK01vZHVsZXMvd2ViYXVkaW8vV2Vi
S2l0QXVkaW9Db250ZXh0LmNwcAorTW9kdWxlcy93ZWJhdWRpby9XZWJLaXRBdWRpb1Bhbm5lck5v
ZGUuY3BwCitNb2R1bGVzL3dlYmF1ZGlvL1dlYktpdE9mZmxpbmVBdWRpb0NvbnRleHQuY3BwCiAK
IE1vZHVsZXMvd2ViYXV0aG4vQXV0aGVudGljYXRvckNvb3JkaW5hdG9yLmNwcAogTW9kdWxlcy93
ZWJhdXRobi9BdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2UuY3BwCkBAIC0yNzQ0LDYgKzI3
NDcsNyBAQCBKU0F1ZGlvQnVmZmVyQ2FsbGJhY2suY3BwCiBKU0F1ZGlvQnVmZmVyU291cmNlTm9k
ZS5jcHAKIEpTQXVkaW9Db25maWd1cmF0aW9uLmNwcAogSlNBdWRpb0NvbnRleHQuY3BwCitKU0F1
ZGlvQ29udGV4dFN0YXRlLmNwcAogSlNBdWRpb0Rlc3RpbmF0aW9uTm9kZS5jcHAKIEpTQXVkaW9M
aXN0ZW5lci5jcHAKIEpTQXVkaW9Ob2RlLmNwcApAQCAtMjkxNCw2ICsyOTE4LDcgQEAgSlNEZXZp
Y2VNb3Rpb25FdmVudC5jcHAKIEpTRGV2aWNlT3JpZW50YXRpb25FdmVudC5jcHAKIEpTRGV2aWNl
T3JpZW50YXRpb25Pck1vdGlvblBlcm1pc3Npb25TdGF0ZS5jcHAKIEpTRGV2aWNlT3JpZW50YXRp
b25Pck1vdGlvbkV2ZW50LmNwcAorSlNEaXN0YW5jZU1vZGVsVHlwZS5jcHAKIEpTRG9jdW1lbnQu
Y3BwCiBKU0RvY3VtZW50QW5kRWxlbWVudEV2ZW50SGFuZGxlcnMuY3BwCiBKU0RvY3VtZW50RnJh
Z21lbnQuY3BwCkBAIC0zMjExLDYgKzMyMTYsNyBAQCBKU092ZXJmbG93RXZlbnQuY3BwCiBKU1Bh
Z2VUcmFuc2l0aW9uRXZlbnQuY3BwCiBKU1BhaW50UmVuZGVyaW5nQ29udGV4dDJELmNwcAogSlNQ
YW5uZXJOb2RlLmNwcAorSlNQYW5uaW5nTW9kZWxUeXBlLmNwcAogSlNQYXJlbnROb2RlLmNwcAog
SlNQYXRoMkQuY3BwCiBKU1BheWVyRXJyb3JGaWVsZHMuY3BwCkBAIC0zNTY3LDcgKzM1NzMsMTAg
QEAgSlNXZWJHUFVTd2FwQ2hhaW4uY3BwCiBKU1dlYkdQVVRleHR1cmUuY3BwCiBKU1dlYkdQVVRl
eHR1cmVWaWV3LmNwcAogSlNXZWJLaXRBbmltYXRpb25FdmVudC5jcHAKK0pTV2ViS2l0QXVkaW9D
b250ZXh0LmNwcAorSlNXZWJLaXRBdWRpb1Bhbm5lck5vZGUuY3BwCiBKU1dlYktpdENTU01hdHJp
eC5jcHAKK0pTV2ViS2l0T2ZmbGluZUF1ZGlvQ29udGV4dC5jcHAKIEpTV2ViS2l0UGxheWJhY2tU
YXJnZXRBdmFpbGFiaWxpdHlFdmVudC5jcHAKIEpTV2ViS2l0UG9pbnQuY3BwCiBKU1dlYktpdFRy
YW5zaXRpb25FdmVudC5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagppbmRleCBjN2FhYzg1OTY3Ni4uNTFiNzg0OWE5M2UgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTI0
MDcsMTIgKzI0MDcsMTYgQEAKIAkJODMwMDMwRjgxQjdEM0I3ODAwRUQzQUFDIC8qIENhY2hlZEhU
TUxDb2xsZWN0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA4MzAwMzBGNzFCN0QzOTg4MDBFRDNBQUMgLyogQ2FjaGVkSFRNTENvbGxlY3Rpb24uaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk4MzAzMzUw
MjFGNTQ5MDU3MDA0REY3MDcgLyogRmlsZVN5c3RlbURpcmVjdG9yeVJlYWRlci5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODMwMzM0RkMxRjU0OTA1MjAw
NERGNzA3IC8qIEZpbGVTeXN0ZW1EaXJlY3RvcnlSZWFkZXIuaCAqLzsgfTsKIAkJODMwMzM1MDMx
RjU0OTA1QTAwNERGNzA3IC8qIEZpbGVTeXN0ZW1FbnRyaWVzQ2FsbGJhY2suaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgzMDMzNEZFMUY1NDkwNTIwMDRE
RjcwNyAvKiBGaWxlU3lzdGVtRW50cmllc0NhbGxiYWNrLmggKi87IH07CisJCTgzMDQwMjgyMjQ5
QTdBNUYwMEE5MEQ4RCAvKiBQYW5uaW5nTW9kZWxUeXBlLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4MzA0MDI4MDI0OUE3QTVDMDBBOTBEOEQgLyogUGFu
bmluZ01vZGVsVHlwZS5oICovOyB9OworCQk4MzA0MDI4MzI0OUE3QTYyMDBBOTBEOEQgLyogRGlz
dGFuY2VNb2RlbFR5cGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDgzMDQwMjdEMjQ5QTdBNUIwMEE5MEQ4RCAvKiBEaXN0YW5jZU1vZGVsVHlwZS5oICov
OyB9OwogCQk4MzA1MTk5NjFCQjBGMTEwMDBGMzc3MkUgLyogSFRNTFRpbWVFbGVtZW50LmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4MzA1MTk5MzFCQjBG
MEU3MDBGMzc3MkUgLyogSFRNTFRpbWVFbGVtZW50LmggKi87IH07CiAJCTgzMDc4NEIyMUM1MkVF
MkMwMDEwNEQxRCAvKiBYTUxEb2N1bWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gODMwNzg0QjExQzUyRUUxOTAwMTA0RDFEIC8qIFhNTERvY3VtZW50
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJODMw
QTM2QkQxREFDNUZBRDAwNkQ3RDA5IC8qIEpTTW91c2VFdmVudEluaXQuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgzMEEzNkJCMURBQzVGQTcwMDZEN0Qw
OSAvKiBKU01vdXNlRXZlbnRJbml0LmggKi87IH07CiAJCTgzMTAyQjI3MUY5RUFERDkwMEU0MDRC
OSAvKiBKU0V4dGVuZGFibGVNZXNzYWdlRXZlbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgzMTAyQjIzMUY5RUFEQzIwMEU0MDRCOSAvKiBKU0V4dGVu
ZGFibGVNZXNzYWdlRXZlbnQuaCAqLzsgfTsKIAkJODMxMUMwMDMxRkFBMkU5NTAwRTNDOEU1IC8q
IFNXU2VydmVySm9iUXVldWUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDgzMTFDMDAyMUZBQTJFODkwMEUzQzhFNSAvKiBTV1NlcnZlckpvYlF1ZXVlLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJODMxMjBD
NzExQzU2RjNGQjAwMUNCMTEyIC8qIEhUTUxEYXRhRWxlbWVudC5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODM0Qjg2QTcxQzU2RTgzQTAwRjNGMEUzIC8q
IEhUTUxEYXRhRWxlbWVudC5oICovOyB9OworCQk4MzFCNjE3NjI0OTlBNUJCMDBDMDdDNzkgLyog
V2ViS2l0QXVkaW9QYW5uZXJOb2RlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA4MzFCNjE3NDI0OTlBNTlDMDBDMDdDNzkgLyogV2ViS2l0QXVkaW9QYW5u
ZXJOb2RlLmggKi87IH07CisJCTgzMUI2MTc3MjQ5OUE1QkYwMEMwN0M3OSAvKiBXZWJLaXRPZmZs
aW5lQXVkaW9Db250ZXh0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA4MzFCNjE3NTI0OTlBNTlEMDBDMDdDNzkgLyogV2ViS2l0T2ZmbGluZUF1ZGlvQ29u
dGV4dC5oICovOyB9OwogCQk4MzIxNTA3RTFGMjdFQTFCMDA5NUIxMzYgLyogTmF2aWdhdG9yQmVh
Y29uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4MzIx
NTA3QjFGMjdFQTE1MDA5NUIxMzYgLyogTmF2aWdhdG9yQmVhY29uLmggKi87IH07CiAJCTgzMkI4
NDM0MTlEOEU1NTEwMEIyNjA1NSAvKiBTVkdBbmltYXRlRWxlbWVudEJhc2UuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgzMkI4NDMzMTlEOEU1NTEwMEIy
NjA1NSAvKiBTVkdBbmltYXRlRWxlbWVudEJhc2UuaCAqLzsgfTsKIAkJODMzQjlFMzIxRjUwOEQ4
NTAwRTBFNDI4IC8qIEpTRmlsZVN5c3RlbURpcmVjdG9yeUVudHJ5LmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4MzNCOUUyRjFGNTA4RDgwMDBFMEU0Mjgg
LyogSlNGaWxlU3lzdGVtRGlyZWN0b3J5RW50cnkuaCAqLzsgfTsKQEAgLTI0NjgsMTAgKzI0NzIs
MTIgQEAKIAkJODM5QTJGMkUxRTIwNEE3MTAwMzkwNTdFIC8qIFdlYkdMU3RhdGVUcmFja2VyLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4MzlBMkYyQzFF
MjA0QTZEMDAzOTA1N0UgLyogV2ViR0xTdGF0ZVRyYWNrZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk4MzlBQUZFRDFBMEMwQzhEMDA2MDVGOTkg
LyogSFRNTFdCUkVsZW1lbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDgzOUFBRkVCMUEwQzBDOEQwMDYwNUY5OSAvKiBIVE1MV0JSRWxlbWVudC5oICov
OyB9OwogCQk4M0E4QUM0MDFGQUJCRkU1MDAyMDY0QUMgLyogU2VydmljZVdvcmtlcklkZW50aWZp
ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgzQThB
QzNFMUZBQkJGRDEwMDIwNjRBQyAvKiBTZXJ2aWNlV29ya2VySWRlbnRpZmllci5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTgzQjFBNzAyMjQ5OTg1
RjAwMEZFNTk2MSAvKiBXZWJLaXRBdWRpb0NvbnRleHQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgzQjFBNkZGMjQ5OTg1RDAwMEZFNTk2MSAvKiBXZWJL
aXRBdWRpb0NvbnRleHQuaCAqLzsgfTsKIAkJODNCMkQxNzUxQjhCQ0Q2QTAwQTAyRTQ3IC8qIE5h
dGl2ZU5vZGVGaWx0ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDgzRTk1OUUxMUI4QkMyMkIwMDREOTM4NSAvKiBOYXRpdmVOb2RlRmlsdGVyLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJODNCNzRFRjYx
RjNFMEJGMjAwOTk2QkM3IC8qIEtlZXBhbGl2ZVJlcXVlc3RUcmFja2VyLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4M0I3NEVGMzFGM0UwQkQ3MDA5OTZC
QzcgLyogS2VlcGFsaXZlUmVxdWVzdFRyYWNrZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk4M0I5Njg3QjE5RjhBQjgzMDA0RUY3QUYgLyogU3R5
bGVCdWlsZGVyQ29udmVydGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA4M0I5Njg3OTE5RjhBQjgzMDA0RUY3QUYgLyogU3R5bGVCdWlsZGVyQ29udmVy
dGVyLmggKi87IH07CiAJCTgzQkI1Qzg4MUQ1RDZGNDUwMDVBNzFGNCAvKiBBbGxEZXNjZW5kYW50
c0NvbGxlY3Rpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDgzQkI1Qzg3MUQ1RDZGM0EwMDVBNzFGNCAvKiBBbGxEZXNjZW5kYW50c0NvbGxlY3Rpb24u
aCAqLzsgfTsKKwkJODNCRDNDRUUyNDk5OEUwMTAwQkEzRTY3IC8qIEF1ZGlvQ29udGV4dFN0YXRl
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4M0JEM0NF
RDI0OTk4REY2MDBCQTNFNjcgLyogQXVkaW9Db250ZXh0U3RhdGUuaCAqLzsgfTsKIAkJODNDMDVB
NUIxQTY4NjIxMjAwN0U1REVBIC8qIFN0eWxlUHJvcGVydHlTaG9ydGhhbmRGdW5jdGlvbnMuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgzQzA1QTU5MUE2
ODYyMTIwMDdFNURFQSAvKiBTdHlsZVByb3BlcnR5U2hvcnRoYW5kRnVuY3Rpb25zLmggKi87IH07
CiAJCTgzQzFGNTk0MUVERjY5RDMwMDQxMEQyNyAvKiBRdWFsaWZpZWROYW1lQ2FjaGUuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgzQzFGNTkyMUVERjY5
RDMwMDQxMEQyNyAvKiBRdWFsaWZpZWROYW1lQ2FjaGUuaCAqLzsgfTsKIAkJODNDNDVCOEUxREMy
QjY4QTAwODg3MUJBIC8qIFZhbGlkYXRpb25CdWJibGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgzQzQ1QjhEMURDMkI2N0MwMDg4NzFCQSAvKiBWYWxp
ZGF0aW9uQnViYmxlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKQEAgLTEwMjk3LDExICsxMDMwMywxNiBAQAogCQk4MzAwMzBGMzFCN0QzM0E2MDBFRDNB
QUMgLyogR2VuZXJpY0NhY2hlZEhUTUxDb2xsZWN0aW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IEdlbmVyaWNDYWNoZWRIVE1MQ29sbGVjdGlvbi5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTgzMDAzMEY0MUI3RDMzQTYwMEVEM0FBQyAvKiBHZW5l
cmljQ2FjaGVkSFRNTENvbGxlY3Rpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gR2VuZXJpY0NhY2hlZEhUTUxDb2xsZWN0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTgzMDAzMEY3MUI3RDM5ODgwMEVEM0FBQyAvKiBDYWNoZWRIVE1MQ29sbGVjdGlvbi5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDYWNoZWRIVE1MQ29sbGVjdGlvbi5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk4MzAwM0UyQjI0OTk5N0E4MDA2MEFGOTQg
LyogV2ViS2l0QXVkaW9Db250ZXh0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IFdlYktpdEF1ZGlvQ29udGV4dC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTgzMDMzNEZCMUY1NDkwNTIwMDRERjcwNyAvKiBGaWxlU3lzdGVtRGlyZWN0b3J5UmVhZGVy
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEZpbGVTeXN0ZW1EaXJl
Y3RvcnlSZWFkZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4MzAzMzRGQzFG
NTQ5MDUyMDA0REY3MDcgLyogRmlsZVN5c3RlbURpcmVjdG9yeVJlYWRlci5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBGaWxlU3lzdGVtRGlyZWN0b3J5UmVhZGVyLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTgzMDMzNEZEMUY1NDkwNTIwMDRERjcwNyAvKiBGaWxl
U3lzdGVtRW50cmllc0NhbGxiYWNrLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBGaWxlU3lz
dGVtRW50cmllc0NhbGxiYWNrLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODMw
MzM0RkUxRjU0OTA1MjAwNERGNzA3IC8qIEZpbGVTeXN0ZW1FbnRyaWVzQ2FsbGJhY2suaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRmlsZVN5c3RlbUVudHJpZXNDYWxsYmFjay5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4MzAzMzRGRjFGNTQ5MDUyMDA0REY3MDcg
LyogRmlsZVN5c3RlbURpcmVjdG9yeVJlYWRlci5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0g
RmlsZVN5c3RlbURpcmVjdG9yeVJlYWRlci5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCTgzMDQwMjdEMjQ5QTdBNUIwMEE5MEQ4RCAvKiBEaXN0YW5jZU1vZGVsVHlwZS5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBEaXN0YW5jZU1vZGVsVHlwZS5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQk4MzA0MDI3RjI0OUE3QTVDMDBBOTBEOEQgLyogRGlzdGFu
Y2VNb2RlbFR5cGUuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IERpc3RhbmNlTW9kZWxUeXBl
LmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJODMwNDAyODAyNDlBN0E1QzAwQTkw
RDhEIC8qIFBhbm5pbmdNb2RlbFR5cGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gUGFubmluZ01vZGVsVHlwZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk4MzA0
MDI4MTI0OUE3QTVEMDBBOTBEOEQgLyogUGFubmluZ01vZGVsVHlwZS5pZGwgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0
ZXh0OyBwYXRoID0gUGFubmluZ01vZGVsVHlwZS5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTgzMDUxOTkyMUJCMEYwRTcwMEYzNzcyRSAvKiBIVE1MVGltZUVsZW1lbnQuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSFRNTFRpbWVFbGVtZW50LmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODMwNTE5OTMxQkIwRjBFNzAwRjM3NzJFIC8q
IEhUTUxUaW1lRWxlbWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBIVE1M
VGltZUVsZW1lbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODMwNTE5OTQxQkIw
RjBFNzAwRjM3NzJFIC8qIEhUTUxUaW1lRWxlbWVudC5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRo
ID0gSFRNTFRpbWVFbGVtZW50LmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTEw
MzE0LDYgKzEwMzI1LDEyIEBACiAJCTgzMTAyQjI1MUY5RUFEQzIwMEU0MDRCOSAvKiBKU0V4dGVu
ZGFibGVNZXNzYWdlRXZlbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gSlNFeHRlbmRhYmxlTWVzc2FnZUV2ZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJODMxMUMwMDAxRkFBMkU4OTAwRTNDOEU1IC8qIFNXU2VydmVySm9iUXVldWUuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU1dTZXJ2ZXJKb2JRdWV1ZS5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTgzMTFDMDAyMUZBQTJFODkwMEUzQzhFNSAv
KiBTV1NlcnZlckpvYlF1ZXVlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNX
U2VydmVySm9iUXVldWUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJODMxQjYxNkYy
NDk5QTU5ODAwQzA3Qzc5IC8qIFdlYktpdEF1ZGlvUGFubmVyTm9kZS5pZGwgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0
ZXh0OyBwYXRoID0gV2ViS2l0QXVkaW9QYW5uZXJOb2RlLmlkbDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJODMxQjYxNzEyNDk5QTU5OTAwQzA3Qzc5IC8qIFdlYktpdEF1ZGlvUGFubmVy
Tm9kZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJLaXRBdWRp
b1Bhbm5lck5vZGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk4MzFCNjE3MjI0
OTlBNTlBMDBDMDdDNzkgLyogV2ViS2l0T2ZmbGluZUF1ZGlvQ29udGV4dC5pZGwgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSB0ZXh0OyBwYXRoID0gV2ViS2l0T2ZmbGluZUF1ZGlvQ29udGV4dC5pZGw7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTgzMUI2MTczMjQ5OUE1OUIwMEMwN0M3OSAvKiBXZWJLaXRPZmZs
aW5lQXVkaW9Db250ZXh0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IFdlYktpdE9mZmxpbmVBdWRpb0NvbnRleHQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQk4MzFCNjE3NDI0OTlBNTlDMDBDMDdDNzkgLyogV2ViS2l0QXVkaW9QYW5uZXJOb2RlLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYktpdEF1ZGlvUGFubmVyTm9kZS5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk4MzFCNjE3NTI0OTlBNTlEMDBDMDdDNzkg
LyogV2ViS2l0T2ZmbGluZUF1ZGlvQ29udGV4dC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBXZWJLaXRPZmZsaW5lQXVkaW9Db250ZXh0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTgzMUM0NkMzMUY5RUU1RTAwMEVCRDQ1MCAvKiBKU0V4dGVuZGFibGVNZXNzYWdl
RXZlbnRDdXN0b20uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNF
eHRlbmRhYmxlTWVzc2FnZUV2ZW50Q3VzdG9tLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJODMxRDFGMjkxQzU2RUNBMDAwRjVGNkMwIC8qIEhUTUxEYXRhRWxlbWVudC5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBIVE1MRGF0YUVsZW1lbnQuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4MzIxNTA3QTFGMjdFQTE1MDA5NUIxMzYgLyog
TmF2aWdhdG9yQmVhY29uLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE5hdmlnYXRvckJlYWNvbi5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xMDQ0MSw2ICsxMDQ1OCw4IEBACiAJ
CTgzOUFBRkVCMUEwQzBDOEQwMDYwNUY5OSAvKiBIVE1MV0JSRWxlbWVudC5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBIVE1MV0JSRWxlbWVudC5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk4M0E0QTlGODFDRTdGRDdFMDA3MDlCMDAgLyogSlNYTUxEb2N1bWVudEN1
c3RvbS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU1hNTERvY3Vt
ZW50Q3VzdG9tLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODNBOEFDM0UxRkFC
QkZEMTAwMjA2NEFDIC8qIFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTgzQjFBNkZGMjQ5OTg1RDAwMEZFNTk2MSAvKiBXZWJLaXRBdWRp
b0NvbnRleHQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViS2l0QXVkaW9D
b250ZXh0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTgzQjFBNzAxMjQ5OTg1RDAw
MEZFNTk2MSAvKiBXZWJLaXRBdWRpb0NvbnRleHQuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9
IFdlYktpdEF1ZGlvQ29udGV4dC5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTgz
QjI1MDA5MUZBMTE4MUMwMEJDMDJEOSAvKiBKU1NlcnZpY2VXb3JrZXJDbGllbnRUeXBlLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTU2VydmljZVdvcmtlckNsaWVudFR5cGUu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODNCMjUwMEIxRkExMTgxRDAwQkMwMkQ5
IC8qIEpTU2VydmljZVdvcmtlckNsaWVudFR5cGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gSlNTZXJ2aWNlV29ya2VyQ2xpZW50VHlwZS5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTgzQjVEQTQ1MUZBOTA3OTMwMEI1OURGNCAvKiBKU05hdmlnYXRv
ckN1c3RvbS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU05hdmln
YXRvckN1c3RvbS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xMDQ0OCw2ICsx
MDQ2Nyw4IEBACiAJCTgzQjc0RUYzMUYzRTBCRDcwMDk5NkJDNyAvKiBLZWVwYWxpdmVSZXF1ZXN0
VHJhY2tlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBLZWVwYWxpdmVSZXF1
ZXN0VHJhY2tlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4M0I5Njg3OTE5RjhB
QjgzMDA0RUY3QUYgLyogU3R5bGVCdWlsZGVyQ29udmVydGVyLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFN0eWxlQnVpbGRlckNvbnZlcnRlci5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk4M0JCNUM4NzFENUQ2RjNBMDA1QTcxRjQgLyogQWxsRGVzY2VuZGFudHND
b2xsZWN0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFsbERlc2NlbmRh
bnRzQ29sbGVjdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk4M0JEM0NFQjI0
OTk4Q0M1MDBCQTNFNjcgLyogQXVkaW9Db250ZXh0U3RhdGUuaWRsICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsg
cGF0aCA9IEF1ZGlvQ29udGV4dFN0YXRlLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJODNCRDNDRUQyNDk5OERGNjAwQkEzRTY3IC8qIEF1ZGlvQ29udGV4dFN0YXRlLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEF1ZGlvQ29udGV4dFN0YXRlLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTgzQzA1QTU4MUE2ODYyMTIwMDdFNURFQSAvKiBTdHlsZVBy
b3BlcnR5U2hvcnRoYW5kRnVuY3Rpb25zLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgbmFtZSA9IFN0eWxlUHJvcGVydHlTaG9ydGhhbmRGdW5jdGlvbnMuY3BwOyBwYXRoID0gRGVy
aXZlZFNvdXJjZXMvV2ViQ29yZS9TdHlsZVByb3BlcnR5U2hvcnRoYW5kRnVuY3Rpb25zLmNwcDsg
c291cmNlVHJlZSA9IEJVSUxUX1BST0RVQ1RTX0RJUjsgfTsKIAkJODNDMDVBNTkxQTY4NjIxMjAw
N0U1REVBIC8qIFN0eWxlUHJvcGVydHlTaG9ydGhhbmRGdW5jdGlvbnMuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBuYW1lID0gU3R5bGVQcm9wZXJ0eVNob3J0aGFuZEZ1bmN0aW9ucy5oOyBw
YXRoID0gRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9TdHlsZVByb3BlcnR5U2hvcnRoYW5kRnVuY3Rp
b25zLmg7IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19ESVI7IH07CiAJCTgzQzFGNTkxMUVE
RjY5RDMwMDQxMEQyNyAvKiBRdWFsaWZpZWROYW1lQ2FjaGUuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gUXVhbGlmaWVkTmFtZUNhY2hlLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKQEAgLTI5MjM5LDYgKzI5MjYwLDggQEAKIAkJCQlGRDMxNUZCQTEyQjAy
Njc1MDBDMUEzNTkgLyogQXVkaW9Db250ZXh0LmNwcCAqLywKIAkJCQlGRDMxNUZCQjEyQjAyNjc1
MDBDMUEzNTkgLyogQXVkaW9Db250ZXh0LmggKi8sCiAJCQkJRkQzMTVGQkMxMkIwMjY3NTAwQzFB
MzU5IC8qIEF1ZGlvQ29udGV4dC5pZGwgKi8sCisJCQkJODNCRDNDRUQyNDk5OERGNjAwQkEzRTY3
IC8qIEF1ZGlvQ29udGV4dFN0YXRlLmggKi8sCisJCQkJODNCRDNDRUIyNDk5OENDNTAwQkEzRTY3
IC8qIEF1ZGlvQ29udGV4dFN0YXRlLmlkbCAqLywKIAkJCQlGRDMxNUZCRDEyQjAyNjc1MDBDMUEz
NTkgLyogQXVkaW9EZXN0aW5hdGlvbk5vZGUuY3BwICovLAogCQkJCUZEMzE1RkJFMTJCMDI2NzUw
MEMxQTM1OSAvKiBBdWRpb0Rlc3RpbmF0aW9uTm9kZS5oICovLAogCQkJCUZEMzE1RkJGMTJCMDI2
NzUwMEMxQTM1OSAvKiBBdWRpb0Rlc3RpbmF0aW9uTm9kZS5pZGwgKi8sCkBAIC0yOTI4OSw2ICsy
OTMxMiw4IEBACiAJCQkJRkQzMTVGRTUxMkIwMjY3NjAwQzFBMzU5IC8qIERlbGF5Tm9kZS5pZGwg
Ki8sCiAJCQkJRkQzMTVGRTYxMkIwMjY3NjAwQzFBMzU5IC8qIERlbGF5UHJvY2Vzc29yLmNwcCAq
LywKIAkJCQlGRDMxNUZFNzEyQjAyNjc2MDBDMUEzNTkgLyogRGVsYXlQcm9jZXNzb3IuaCAqLywK
KwkJCQk4MzA0MDI3RDI0OUE3QTVCMDBBOTBEOEQgLyogRGlzdGFuY2VNb2RlbFR5cGUuaCAqLywK
KwkJCQk4MzA0MDI3RjI0OUE3QTVDMDBBOTBEOEQgLyogRGlzdGFuY2VNb2RlbFR5cGUuaWRsICov
LAogCQkJCUZENkVEMkMxMTM2QjhFNDIwMDNDRjA3MiAvKiBEeW5hbWljc0NvbXByZXNzb3JOb2Rl
LmNwcCAqLywKIAkJCQlGRDZFRDJDMjEzNkI4RTQyMDAzQ0YwNzIgLyogRHluYW1pY3NDb21wcmVz
c29yTm9kZS5oICovLAogCQkJCUZENkVEMkM5MTM2QjhFOUQwMDNDRjA3MiAvKiBEeW5hbWljc0Nv
bXByZXNzb3JOb2RlLmlkbCAqLywKQEAgLTI5MzIxLDYgKzI5MzQ2LDggQEAKIAkJCQlGRDMxNUZD
RjEyQjAyNjc1MDBDMUEzNTkgLyogUGFubmVyTm9kZS5jcHAgKi8sCiAJCQkJRkQzMTVGRDAxMkIw
MjY3NTAwQzFBMzU5IC8qIFBhbm5lck5vZGUuaCAqLywKIAkJCQlGRDMxNUZEMTEyQjAyNjc1MDBD
MUEzNTkgLyogUGFubmVyTm9kZS5pZGwgKi8sCisJCQkJODMwNDAyODAyNDlBN0E1QzAwQTkwRDhE
IC8qIFBhbm5pbmdNb2RlbFR5cGUuaCAqLywKKwkJCQk4MzA0MDI4MTI0OUE3QTVEMDBBOTBEOEQg
LyogUGFubmluZ01vZGVsVHlwZS5pZGwgKi8sCiAJCQkJRkQ1ODFGQjExNTIwRjkzQjAwM0E3QTc1
IC8qIFBlcmlvZGljV2F2ZS5jcHAgKi8sCiAJCQkJRkQ1ODFGQjIxNTIwRjkzQjAwM0E3QTc1IC8q
IFBlcmlvZGljV2F2ZS5oICovLAogCQkJCUZENTgxRkIzMTUyMEY5M0IwMDNBN0E3NSAvKiBQZXJp
b2RpY1dhdmUuaWRsICovLApAQCAtMjkzMzYsNiArMjkzNjMsMTUgQEAKIAkJCQlGRDdGMjk4RTEz
RDRDMENCMDBBRDk1MzUgLyogV2F2ZVNoYXBlck5vZGUuaWRsICovLAogCQkJCUZEN0YyOThGMTNE
NEMwQ0IwMEFEOTUzNSAvKiBXYXZlU2hhcGVyUHJvY2Vzc29yLmNwcCAqLywKIAkJCQlGRDdGMjk5
MDEzRDRDMENCMDBBRDk1MzUgLyogV2F2ZVNoYXBlclByb2Nlc3Nvci5oICovLAorCQkJCTgzMDAz
RTJCMjQ5OTk3QTgwMDYwQUY5NCAvKiBXZWJLaXRBdWRpb0NvbnRleHQuY3BwICovLAorCQkJCTgz
QjFBNkZGMjQ5OTg1RDAwMEZFNTk2MSAvKiBXZWJLaXRBdWRpb0NvbnRleHQuaCAqLywKKwkJCQk4
M0IxQTcwMTI0OTk4NUQwMDBGRTU5NjEgLyogV2ViS2l0QXVkaW9Db250ZXh0LmlkbCAqLywKKwkJ
CQk4MzFCNjE3MTI0OTlBNTk5MDBDMDdDNzkgLyogV2ViS2l0QXVkaW9QYW5uZXJOb2RlLmNwcCAq
LywKKwkJCQk4MzFCNjE3NDI0OTlBNTlDMDBDMDdDNzkgLyogV2ViS2l0QXVkaW9QYW5uZXJOb2Rl
LmggKi8sCisJCQkJODMxQjYxNkYyNDk5QTU5ODAwQzA3Qzc5IC8qIFdlYktpdEF1ZGlvUGFubmVy
Tm9kZS5pZGwgKi8sCisJCQkJODMxQjYxNzMyNDk5QTU5QjAwQzA3Qzc5IC8qIFdlYktpdE9mZmxp
bmVBdWRpb0NvbnRleHQuY3BwICovLAorCQkJCTgzMUI2MTc1MjQ5OUE1OUQwMEMwN0M3OSAvKiBX
ZWJLaXRPZmZsaW5lQXVkaW9Db250ZXh0LmggKi8sCisJCQkJODMxQjYxNzIyNDk5QTU5QTAwQzA3
Qzc5IC8qIFdlYktpdE9mZmxpbmVBdWRpb0NvbnRleHQuaWRsICovLAogCQkJKTsKIAkJCXBhdGgg
PSB3ZWJhdWRpbzsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CkBAIC0yOTcxMiw2ICsyOTc0
OCw3IEBACiAJCQkJOUI0MTcwNjQxMjU2NjJCMzAwNkIyOEZDIC8qIEFwcGx5QmxvY2tFbGVtZW50
Q29tbWFuZC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTMzMDlERDkwOTlFNjQ5MjAwNTZFNTgxIC8q
IEFwcGx5U3R5bGVDb21tYW5kLmggaW4gSGVhZGVycyAqLywKIAkJCQk1MTJERDhGNjBEOTFFNkFG
MDAwRjg5RUUgLyogQXJjaGl2ZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJODNCRDNDRUUyNDk5OEUw
MTAwQkEzRTY3IC8qIEF1ZGlvQ29udGV4dFN0YXRlLmggaW4gSGVhZGVycyAqLywKIAkJCQk1MTJE
RDhGRDBEOTFFNkFGMDAwRjg5RUUgLyogQXJjaGl2ZUZhY3RvcnkuaCBpbiBIZWFkZXJzICovLAog
CQkJCTUxMkREOEZDMEQ5MUU2QUYwMDBGODlFRSAvKiBBcmNoaXZlUmVzb3VyY2UuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTUxMkREOEY4MEQ5MUU2QUYwMDBGODlFRSAvKiBBcmNoaXZlUmVzb3VyY2VD
b2xsZWN0aW9uLmggaW4gSGVhZGVycyAqLywKQEAgLTMwMDkyLDYgKzMwMTI5LDcgQEAKIAkJCQk3
N0Q1MTAxNzFFRDYwMjIyMDBEQTRDODcgLyogQ3JlZGVudGlhbHNDb250YWluZXIuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTUxQTA1MjMzMTA1ODc3NEYwMENDOUU5NSAvKiBDcmVkZW50aWFsU3RvcmFn
ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMkQ0ODFGMDIxNDZCNUM1NTAwQUE3ODM0IC8qIENyb3Nz
ZmFkZUdlbmVyYXRlZEltYWdlLmggaW4gSGVhZGVycyAqLywKKwkJCQk4MzA0MDI4MjI0OUE3QTVG
MDBBOTBEOEQgLyogUGFubmluZ01vZGVsVHlwZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTFDNDE2
MTIwRjY1NjJGRDAwOTJEMkZCIC8qIENyb3NzT3JpZ2luQWNjZXNzQ29udHJvbC5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJNDFBQkU2N0IxRDA1ODBEQjAwNkQ4NjJEIC8qIENyb3NzT3JpZ2luUHJlZmxp
Z2h0Q2hlY2tlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTFDNDE1REEwRjY1NUQ2RjAwOTJEMkZC
IC8qIENyb3NzT3JpZ2luUHJlZmxpZ2h0UmVzdWx0Q2FjaGUuaCBpbiBIZWFkZXJzICovLApAQCAt
MzA4NzcsNiArMzA5MTUsNyBAQAogCQkJCUE0M0JGNTk5MTE0OTI5MEEwMEM2NDNDQSAvKiBIVE1M
UHJvZ3Jlc3NFbGVtZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlBOENGRjdBMzBBMTU2OTc4MDAw
QTQyMzQgLyogSFRNTFF1b3RlRWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQThEMjIzRkUx
NkI1MkU0RTAwMTU3Mjg4IC8qIEhUTUxSZXNvdXJjZVByZWxvYWRlci5oIGluIEhlYWRlcnMgKi8s
CisJCQkJODNCMUE3MDIyNDk5ODVGMDAwRkU1OTYxIC8qIFdlYktpdEF1ZGlvQ29udGV4dC5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJQTg3MURDMjUwQTE1MjA1NzAwQjEyQTY4IC8qIEhUTUxTY3JpcHRF
bGVtZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQk5NzdCMzg3NTEyMjg4M0U5MDBCODFGRjggLyog
SFRNTFNjcmlwdFJ1bm5lci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTc3QjM4NzYxMjI4ODNFOTAw
QjgxRkY4IC8qIEhUTUxTY3JpcHRSdW5uZXJIb3N0LmggaW4gSGVhZGVycyAqLywKQEAgLTMxNzIx
LDYgKzMxNzYwLDcgQEAKIAkJCQlCQzgyNDMyOTBEMENFOEEyMDA0NjBDOEYgLyogSlNTUUxFcnJv
ci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUFFODJGRUQwQ0FCMDdFRTAwMjIzN0FFIC8qIEpTU1FM
UmVzdWx0U2V0LmggaW4gSGVhZGVycyAqLywKIAkJCQkxQUZFMTE5QTBDQkZGQ0M0MDAzMDE3RkEg
LyogSlNTUUxSZXN1bHRTZXRSb3dMaXN0LmggaW4gSGVhZGVycyAqLywKKwkJCQk4MzFCNjE3NjI0
OTlBNUJCMDBDMDdDNzkgLyogV2ViS2l0QXVkaW9QYW5uZXJOb2RlLmggaW4gSGVhZGVycyAqLywK
IAkJCQlCNTlERDZBNTExOTAyQTYyMDA3RTk2ODQgLyogSlNTUUxTdGF0ZW1lbnRDYWxsYmFjay5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJQjU5REQ2QTkxMTkwMkE3MTAwN0U5Njg0IC8qIEpTU1FMU3Rh
dGVtZW50RXJyb3JDYWxsYmFjay5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkM4MjQzMkEwRDBDRThB
MjAwNDYwQzhGIC8qIEpTU1FMVHJhbnNhY3Rpb24uaCBpbiBIZWFkZXJzICovLApAQCAtMzIxOTks
NiArMzIyMzksNyBAQAogCQkJCTA3NjM4QTk5MTg4NDQ4NzIwMEUxNUExQiAvKiBNZWRpYVNlc3Np
b25NYW5hZ2VySU9TLmggaW4gSGVhZGVycyAqLywKIAkJCQlDOUQ4NTFGMDFCMzlEQzc4MDA4NTA2
MkUgLyogTWVkaWFTZXNzaW9uTWV0YWRhdGEuaCBpbiBIZWFkZXJzICovLAogCQkJCUNEM0E0OTVG
MTdBOUQwMUIwMDI3NEU0MiAvKiBNZWRpYVNvdXJjZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJODMw
NDAyODMyNDlBN0E2MjAwQTkwRDhEIC8qIERpc3RhbmNlTW9kZWxUeXBlLmggaW4gSGVhZGVycyAq
LywKIAkJCQlDRDY0MUVCMzE4MThGNUVEMDBFRTRDNDEgLyogTWVkaWFTb3VyY2VQcml2YXRlLmgg
aW4gSGVhZGVycyAqLywKIAkJCQlDREM4QjVBNzE4MDQ3NEY3MDAxNkU2ODUgLyogTWVkaWFTb3Vy
Y2VQcml2YXRlQVZGT2JqQy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQ0REQzFFN0ExOEE5NTJGMzAw
MjdBOUQ0IC8qIE1lZGlhU291cmNlUHJpdmF0ZUNsaWVudC5oIGluIEhlYWRlcnMgKi8sCkBAIC0z
MjgxNSw2ICszMjg1Niw3IEBACiAJCQkJNTFFRTdCMzgxQUE1MEIwNTAwRjkyQjIxIC8qIFJlc291
cmNlTG9hZEluZm8uaCBpbiBIZWFkZXJzICovLAogCQkJCTk3M0UzMjU3MTA4ODNCN0MwMDVCQzQ5
MyAvKiBSZXNvdXJjZUxvYWROb3RpZmllci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNkI2OTNBMkUx
QzUxQTgyRTAwQjAzQkVGIC8qIFJlc291cmNlTG9hZE9ic2VydmVyLmggaW4gSGVhZGVycyAqLywK
KwkJCQk4MzFCNjE3NzI0OTlBNUJGMDBDMDdDNzkgLyogV2ViS2l0T2ZmbGluZUF1ZGlvQ29udGV4
dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTQyOTVGQTQxMkIwNjE0RTAwRDFBQ0UwIC8qIFJlc291
cmNlTG9hZFByaW9yaXR5LmggaW4gSGVhZGVycyAqLywKIAkJCQk3QTkyOUNBNzFDNTk4QUE5MDA0
REYyMjYgLyogUmVzb3VyY2VMb2FkU3RhdGlzdGljcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJN0VF
Njg0NkQxMkQyNkUzODAwRTc5NDE1IC8qIFJlc291cmNlUmVxdWVzdC5oIGluIEhlYWRlcnMgKi8s
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9XZWJDb3JlQnVpbHRpbk5h
bWVzLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9XZWJDb3JlQnVpbHRpbk5hbWVzLmgK
aW5kZXggNDk5N2FiOTkzY2IuLmY5MTk3YzI2YWU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9XZWJDb3JlQnVpbHRpbk5hbWVzLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvV2ViQ29yZUJ1aWx0aW5OYW1lcy5oCkBAIC00OSw2ICs0OSw3IEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKICAgICBtYWNybyhBcHBsZVBheVNldHVwRmVhdHVyZSkgXAogICAgIG1h
Y3JvKEF0dGFjaG1lbnRFbGVtZW50KSBcCiAgICAgbWFjcm8oQXVkaW8pIFwKKyAgICBtYWNybyhB
dWRpb0NvbnRleHQpIFwKICAgICBtYWNybyhBdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2Up
IFwKICAgICBtYWNybyhBdXRoZW50aWNhdG9yQXR0ZXN0YXRpb25SZXNwb25zZSkgXAogICAgIG1h
Y3JvKEF1dGhlbnRpY2F0b3JSZXNwb25zZSkgXApAQCAtMTY1LDkgKzE2NiwxMSBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAgICAgbWFjcm8oTmF2aWdhdG9yQ3JlZGVudGlhbHMpIFwKICAgICBtYWNy
byhOYXZpZ2F0b3JNZWRpYURldmljZXMpIFwKICAgICBtYWNybyhOYXZpZ2F0b3JVc2VyTWVkaWEp
IFwKKyAgICBtYWNybyhPZmZsaW5lQXVkaW9Db250ZXh0KSBcCiAgICAgbWFjcm8oT2Zmc2NyZWVu
Q2FudmFzKSBcCiAgICAgbWFjcm8oT2Zmc2NyZWVuQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEKSBc
CiAgICAgbWFjcm8oUGFpbnRSZW5kZXJpbmdDb250ZXh0MkQpIFwKKyAgICBtYWNybyhQYW5uZXJO
b2RlKSBcCiAgICAgbWFjcm8oUGF5bWVudEFkZHJlc3MpIFwKICAgICBtYWNybyhQYXltZW50TWV0
aG9kQ2hhbmdlRXZlbnQpIFwKICAgICBtYWNybyhQYXltZW50UmVxdWVzdCkgXApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50VGFyZ2V0RmFjdG9yeS5pbiBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9FdmVudFRhcmdldEZhY3RvcnkuaW4KaW5kZXggZmMxZGIyY2UwZTAuLmExNTRiNDQ1
YTEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRUYXJnZXRGYWN0b3J5Lmlu
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudFRhcmdldEZhY3RvcnkuaW4KQEAgLTUzLDYg
KzUzLDcgQEAgVmlkZW9UcmFja0xpc3QgY29uZGl0aW9uYWw9VklERU8KIFZpc3VhbFZpZXdwb3J0
CiBXZWJBbmltYXRpb24KIFdlYkdQVURldmljZSBjb25kaXRpb25hbD1XRUJHUFUKK1dlYktpdEF1
ZGlvQ29udGV4dCBjb25kaXRpb25hbD1XRUJfQVVESU8KIFdlYktpdE1lZGlhS2V5U2Vzc2lvbiBj
b25kaXRpb25hbD1MRUdBQ1lfRU5DUllQVEVEX01FRElBCiBXZWJTb2NrZXQKIFdvcmtlcgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9TZXR0aW5ncy55YW1sIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9TZXR0aW5ncy55YW1sCmluZGV4IDJkNmJjNmZmMmVmLi41ODNmYzZmNzk1ZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9TZXR0aW5ncy55YW1sCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvU2V0dGluZ3MueWFtbApAQCAtMjU1LDYgKzI1NSw4IEBAIGxvYWREZWZlcnJp
bmdFbmFibGVkOgogICBpbml0aWFsOiB0cnVlCiB3ZWJBdWRpb0VuYWJsZWQ6CiAgIGluaXRpYWw6
IGZhbHNlCittb2Rlcm5VbnByZWZpeGVkV2ViQXVkaW9FbmFibGVkOgorICBpbml0aWFsOiBmYWxz
ZQogcGFnaW5hdGVEdXJpbmdMYXlvdXRFbmFibGVkOgogICBpbml0aWFsOiBmYWxzZQogZnVsbFNj
cmVlbkVuYWJsZWQ6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQcmVmZXJl
bmNlcy55YW1sIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUHJlZmVyZW5jZXMueWFtbAppbmRl
eCBmYWQxYTlmNTg4Ni4uNTIzNWNlNzFmZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL1dlYlByZWZlcmVuY2VzLnlhbWwKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUHJl
ZmVyZW5jZXMueWFtbApAQCAtMzM0LDYgKzMzNCwxNCBAQCBXZWJBdWRpb0VuYWJsZWQ6CiAgIGRl
ZmF1bHRWYWx1ZTogdHJ1ZQogICBjb25kaXRpb246IEVOQUJMRShXRUJfQVVESU8pCiAKK01vZGVy
blVucHJlZml4ZWRXZWJBdWRpb0VuYWJsZWQ6CisgIHR5cGU6IGJvb2wKKyAgZGVmYXVsdFZhbHVl
OiBmYWxzZQorICBjb25kaXRpb246IEVOQUJMRShXRUJfQVVESU8pCisgIGh1bWFuUmVhZGFibGVO
YW1lOiAiTW9kZXJuIFdlYkF1ZGlvIEFQSSIKKyAgaHVtYW5SZWFkYWJsZURlc2NyaXB0aW9uOiAi
TW9kZXJuIGFuZCB1bnByZWZpeGVkIFdlYkF1ZGlvIEFQSSIKKyAgY2F0ZWdvcnk6IGV4cGVyaW1l
bnRhbAorCiBBdHRhY2htZW50RWxlbWVudEVuYWJsZWQ6CiAgIHR5cGU6IGJvb2wKICAgZGVmYXVs
dFZhbHVlOiBmYWxzZQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>402124</attachid>
            <date>2020-06-17 10:15:16 -0700</date>
            <delta_ts>2020-06-17 10:33:36 -0700</delta_ts>
            <desc>WIP Patch</desc>
            <filename>213268_wip.patch</filename>
            <type>text/plain</type>
            <size>220206</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dlYkNv
cmUvQ01ha2VMaXN0cy50eHQKaW5kZXggOTc1OTQ4OTVkOGMuLjM5OWE2YmQzZmQwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9D
TWFrZUxpc3RzLnR4dApAQCAtNDMzLDYgKzQzMyw3IEBAIHNldChXZWJDb3JlX05PTl9TVkdfSURM
X0ZJTEVTCiAgICAgTW9kdWxlcy93ZWJhdWRpby9BdWRpb0J1ZmZlckNhbGxiYWNrLmlkbAogICAg
IE1vZHVsZXMvd2ViYXVkaW8vQXVkaW9CdWZmZXJTb3VyY2VOb2RlLmlkbAogICAgIE1vZHVsZXMv
d2ViYXVkaW8vQXVkaW9Db250ZXh0LmlkbAorICAgIE1vZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250
ZXh0U3RhdGUuaWRsCiAgICAgTW9kdWxlcy93ZWJhdWRpby9BdWRpb0Rlc3RpbmF0aW9uTm9kZS5p
ZGwKICAgICBNb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvTGlzdGVuZXIuaWRsCiAgICAgTW9kdWxlcy93
ZWJhdWRpby9BdWRpb05vZGUuaWRsCkBAIC00NDMsNiArNDQ0LDcgQEAgc2V0KFdlYkNvcmVfTk9O
X1NWR19JRExfRklMRVMKICAgICBNb2R1bGVzL3dlYmF1ZGlvL0NoYW5uZWxTcGxpdHRlck5vZGUu
aWRsCiAgICAgTW9kdWxlcy93ZWJhdWRpby9Db252b2x2ZXJOb2RlLmlkbAogICAgIE1vZHVsZXMv
d2ViYXVkaW8vRGVsYXlOb2RlLmlkbAorICAgIE1vZHVsZXMvd2ViYXVkaW8vRGlzdGFuY2VNb2Rl
bFR5cGUuaWRsCiAgICAgTW9kdWxlcy93ZWJhdWRpby9EeW5hbWljc0NvbXByZXNzb3JOb2RlLmlk
bAogICAgIE1vZHVsZXMvd2ViYXVkaW8vR2Fpbk5vZGUuaWRsCiAgICAgTW9kdWxlcy93ZWJhdWRp
by9NZWRpYUVsZW1lbnRBdWRpb1NvdXJjZU5vZGUuaWRsCkBAIC00NTIsOSArNDU0LDEzIEBAIHNl
dChXZWJDb3JlX05PTl9TVkdfSURMX0ZJTEVTCiAgICAgTW9kdWxlcy93ZWJhdWRpby9PZmZsaW5l
QXVkaW9Db250ZXh0LmlkbAogICAgIE1vZHVsZXMvd2ViYXVkaW8vT3NjaWxsYXRvck5vZGUuaWRs
CiAgICAgTW9kdWxlcy93ZWJhdWRpby9QYW5uZXJOb2RlLmlkbAorICAgIE1vZHVsZXMvd2ViYXVk
aW8vUGFubmluZ01vZGVsVHlwZS5pZGwKICAgICBNb2R1bGVzL3dlYmF1ZGlvL1BlcmlvZGljV2F2
ZS5pZGwKICAgICBNb2R1bGVzL3dlYmF1ZGlvL1NjcmlwdFByb2Nlc3Nvck5vZGUuaWRsCiAgICAg
TW9kdWxlcy93ZWJhdWRpby9XYXZlU2hhcGVyTm9kZS5pZGwKKyAgICBNb2R1bGVzL3dlYmF1ZGlv
L1dlYktpdEF1ZGlvQ29udGV4dC5pZGwKKyAgICBNb2R1bGVzL3dlYmF1ZGlvL1dlYktpdEF1ZGlv
UGFubmVyTm9kZS5pZGwKKyAgICBNb2R1bGVzL3dlYmF1ZGlvL1dlYktpdE9mZmxpbmVBdWRpb0Nv
bnRleHQuaWRsCiAKICAgICBNb2R1bGVzL3dlYmF1dGhuL0F0dGVzdGF0aW9uQ29udmV5YW5jZVBy
ZWZlcmVuY2UuaWRsCiAgICAgTW9kdWxlcy93ZWJhdXRobi9BdXRoZW50aWNhdGlvbkV4dGVuc2lv
bnNDbGllbnRJbnB1dHMuaWRsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291
cmNlcy1pbnB1dC54Y2ZpbGVsaXN0IGIvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMtaW5w
dXQueGNmaWxlbGlzdAppbmRleCA2YTdhYTdkMTRlYi4uZjdkNjRjMTkzZDAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLWlucHV0LnhjZmlsZWxpc3QKKysrIGIvU291
cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMtaW5wdXQueGNmaWxlbGlzdApAQCAtMzAwLDYgKzMw
MCw3IEBAICQoUFJPSkVDVF9ESVIpL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9CdWZmZXIuaWRsCiAk
KFBST0pFQ1RfRElSKS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQnVmZmVyQ2FsbGJhY2suaWRsCiAk
KFBST0pFQ1RfRElSKS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQnVmZmVyU291cmNlTm9kZS5pZGwK
ICQoUFJPSkVDVF9ESVIpL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0LmlkbAorJChQUk9K
RUNUX0RJUikvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0NvbnRleHRTdGF0ZS5pZGwKICQoUFJPSkVD
VF9ESVIpL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9EZXN0aW5hdGlvbk5vZGUuaWRsCiAkKFBST0pF
Q1RfRElSKS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvTGlzdGVuZXIuaWRsCiAkKFBST0pFQ1RfRElS
KS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvTm9kZS5pZGwKQEAgLTMxMCw2ICszMTEsNyBAQCAkKFBS
T0pFQ1RfRElSKS9Nb2R1bGVzL3dlYmF1ZGlvL0NoYW5uZWxNZXJnZXJOb2RlLmlkbAogJChQUk9K
RUNUX0RJUikvTW9kdWxlcy93ZWJhdWRpby9DaGFubmVsU3BsaXR0ZXJOb2RlLmlkbAogJChQUk9K
RUNUX0RJUikvTW9kdWxlcy93ZWJhdWRpby9Db252b2x2ZXJOb2RlLmlkbAogJChQUk9KRUNUX0RJ
UikvTW9kdWxlcy93ZWJhdWRpby9EZWxheU5vZGUuaWRsCiskKFBST0pFQ1RfRElSKS9Nb2R1bGVz
L3dlYmF1ZGlvL0Rpc3RhbmNlTW9kZWxUeXBlLmlkbAogJChQUk9KRUNUX0RJUikvTW9kdWxlcy93
ZWJhdWRpby9EeW5hbWljc0NvbXByZXNzb3JOb2RlLmlkbAogJChQUk9KRUNUX0RJUikvTW9kdWxl
cy93ZWJhdWRpby9HYWluTm9kZS5pZGwKICQoUFJPSkVDVF9ESVIpL01vZHVsZXMvd2ViYXVkaW8v
TWVkaWFFbGVtZW50QXVkaW9Tb3VyY2VOb2RlLmlkbApAQCAtMzE5LDkgKzMyMSwxMyBAQCAkKFBS
T0pFQ1RfRElSKS9Nb2R1bGVzL3dlYmF1ZGlvL09mZmxpbmVBdWRpb0NvbXBsZXRpb25FdmVudC5p
ZGwKICQoUFJPSkVDVF9ESVIpL01vZHVsZXMvd2ViYXVkaW8vT2ZmbGluZUF1ZGlvQ29udGV4dC5p
ZGwKICQoUFJPSkVDVF9ESVIpL01vZHVsZXMvd2ViYXVkaW8vT3NjaWxsYXRvck5vZGUuaWRsCiAk
KFBST0pFQ1RfRElSKS9Nb2R1bGVzL3dlYmF1ZGlvL1Bhbm5lck5vZGUuaWRsCiskKFBST0pFQ1Rf
RElSKS9Nb2R1bGVzL3dlYmF1ZGlvL1Bhbm5pbmdNb2RlbFR5cGUuaWRsCiAkKFBST0pFQ1RfRElS
KS9Nb2R1bGVzL3dlYmF1ZGlvL1BlcmlvZGljV2F2ZS5pZGwKICQoUFJPSkVDVF9ESVIpL01vZHVs
ZXMvd2ViYXVkaW8vU2NyaXB0UHJvY2Vzc29yTm9kZS5pZGwKICQoUFJPSkVDVF9ESVIpL01vZHVs
ZXMvd2ViYXVkaW8vV2F2ZVNoYXBlck5vZGUuaWRsCiskKFBST0pFQ1RfRElSKS9Nb2R1bGVzL3dl
YmF1ZGlvL1dlYktpdEF1ZGlvQ29udGV4dC5pZGwKKyQoUFJPSkVDVF9ESVIpL01vZHVsZXMvd2Vi
YXVkaW8vV2ViS2l0QXVkaW9QYW5uZXJOb2RlLmlkbAorJChQUk9KRUNUX0RJUikvTW9kdWxlcy93
ZWJhdWRpby9XZWJLaXRPZmZsaW5lQXVkaW9Db250ZXh0LmlkbAogJChQUk9KRUNUX0RJUikvTW9k
dWxlcy93ZWJhdXRobi9BdHRlc3RhdGlvbkNvbnZleWFuY2VQcmVmZXJlbmNlLmlkbAogJChQUk9K
RUNUX0RJUikvTW9kdWxlcy93ZWJhdXRobi9BdXRoZW50aWNhdGlvbkV4dGVuc2lvbnNDbGllbnRJ
bnB1dHMuaWRsCiAkKFBST0pFQ1RfRElSKS9Nb2R1bGVzL3dlYmF1dGhuL0F1dGhlbnRpY2F0aW9u
RXh0ZW5zaW9uc0NsaWVudE91dHB1dHMuaWRsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9E
ZXJpdmVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlzdCBiL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRT
b3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0CmluZGV4IGExNDMzNjI1MTQwLi5jYmM2NDhhZmY4NyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxp
c3QKKysrIGIvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxpc3QK
QEAgLTE1NSw2ICsxNTUsOCBAQCAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMv
V2ViQ29yZS9KU0F1ZGlvQ29uZmlndXJhdGlvbi5jcHAKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9E
ZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTQXVkaW9Db25maWd1cmF0aW9uLmgKICQoQlVJTFRfUFJP
RFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTQXVkaW9Db250ZXh0LmNwcAogJChC
VUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNBdWRpb0NvbnRleHQu
aAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNBdWRpb0Nv
bnRleHRTdGF0ZS5jcHAKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJD
b3JlL0pTQXVkaW9Db250ZXh0U3RhdGUuaAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRT
b3VyY2VzL1dlYkNvcmUvSlNBdWRpb0Rlc3RpbmF0aW9uTm9kZS5jcHAKICQoQlVJTFRfUFJPRFVD
VFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTQXVkaW9EZXN0aW5hdGlvbk5vZGUuaAog
JChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNBdWRpb0xpc3Rl
bmVyLmNwcApAQCAtNDg2LDYgKzQ4OCw4IEBAICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVk
U291cmNlcy9XZWJDb3JlL0pTRGV2aWNlT3JpZW50YXRpb25Pck1vdGlvbkV2ZW50LmNwCiAkKEJV
SUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0RldmljZU9yaWVudGF0
aW9uT3JNb3Rpb25FdmVudC5oCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMv
V2ViQ29yZS9KU0RldmljZU9yaWVudGF0aW9uT3JNb3Rpb25QZXJtaXNzaW9uU3RhdGUuY3BwCiAk
KEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0RldmljZU9yaWVu
dGF0aW9uT3JNb3Rpb25QZXJtaXNzaW9uU3RhdGUuaAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rl
cml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNEaXN0YW5jZU1vZGVsVHlwZS5jcHAKKyQoQlVJTFRfUFJP
RFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTRGlzdGFuY2VNb2RlbFR5cGUuaAog
JChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNEb2N1bWVudC5j
cHAKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTRG9jdW1l
bnQuaAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNEb2N1
bWVudEFuZEVsZW1lbnRFdmVudEhhbmRsZXJzLmNwcApAQCAtMTIyNCw2ICsxMjI4LDggQEAgJChC
VUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNQYWludFdvcmtsZXRH
bG9iYWxTY29wZS5jcHAKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJD
b3JlL0pTUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUuaAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rl
cml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNQYW5uZXJOb2RlLmNwcAogJChCVUlMVF9QUk9EVUNUU19E
SVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNQYW5uZXJOb2RlLmgKKyQoQlVJTFRfUFJPRFVD
VFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTUGFubmluZ01vZGVsVHlwZS5jcHAKKyQo
QlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTUGFubmluZ01vZGVs
VHlwZS5oCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU1Bh
cmVudE5vZGUuY3BwCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29y
ZS9KU1BhcmVudE5vZGUuaAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dl
YkNvcmUvSlNQYXRoMkQuY3BwCkBAIC0yMDc4LDYgKzIwODQsMTAgQEAgJChCVUlMVF9QUk9EVUNU
U19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNXZWJHUFVUZXh0dXJlVmlldy5jcHAKICQo
QlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTV2ViR1BVVGV4dHVy
ZVZpZXcuaAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNX
ZWJLaXRBbmltYXRpb25FdmVudC5jcHAKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291
cmNlcy9XZWJDb3JlL0pTV2ViS2l0QW5pbWF0aW9uRXZlbnQuaAorJChCVUlMVF9QUk9EVUNUU19E
SVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNXZWJLaXRBdWRpb0NvbnRleHQuY3BwCiskKEJV
SUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU1dlYktpdEF1ZGlvQ29u
dGV4dC5oCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU1dl
YktpdEF1ZGlvUGFubmVyTm9kZS5jcHAKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291
cmNlcy9XZWJDb3JlL0pTV2ViS2l0QXVkaW9QYW5uZXJOb2RlLmgKICQoQlVJTFRfUFJPRFVDVFNf
RElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTV2ViS2l0Q1NTTWF0cml4LmNwcAogJChCVUlM
VF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNXZWJLaXRDU1NNYXRyaXgu
aAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNXZWJLaXRD
U1NWaWV3cG9ydFJ1bGUuY3BwCkBAIC0yMDk0LDYgKzIxMDQsOCBAQCAkKEJVSUxUX1BST0RVQ1RT
X0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU1dlYktpdE1lZGlhS2V5cy5jcHAKICQoQlVJ
TFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTV2ViS2l0TWVkaWFLZXlz
LmgKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTV2ViS2l0
TmFtZXNwYWNlLmNwcAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNv
cmUvSlNXZWJLaXROYW1lc3BhY2UuaAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3Vy
Y2VzL1dlYkNvcmUvSlNXZWJLaXRPZmZsaW5lQXVkaW9Db250ZXh0LmNwcAorJChCVUlMVF9QUk9E
VUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNXZWJLaXRPZmZsaW5lQXVkaW9Db250
ZXh0LmgKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTV2Vi
S2l0UGxheWJhY2tUYXJnZXRBdmFpbGFiaWxpdHlFdmVudC5jcHAKICQoQlVJTFRfUFJPRFVDVFNf
RElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTV2ViS2l0UGxheWJhY2tUYXJnZXRBdmFpbGFi
aWxpdHlFdmVudC5oCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29y
ZS9KU1dlYktpdFBvaW50LmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNv
dXJjZXMubWFrZSBiL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UKaW5kZXggZDI2
NzA4OWUzODcuLmIyN2M3OWNlNjYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVk
U291cmNlcy5tYWtlCisrKyBiL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UKQEAg
LTM4Myw2ICszODMsNyBAQCBKU19CSU5ESU5HX0lETFMgPSBcCiAgICAgJChXZWJDb3JlKS9Nb2R1
bGVzL3dlYmF1ZGlvL0F1ZGlvQnVmZmVyQ2FsbGJhY2suaWRsIFwKICAgICAkKFdlYkNvcmUpL01v
ZHVsZXMvd2ViYXVkaW8vQXVkaW9CdWZmZXJTb3VyY2VOb2RlLmlkbCBcCiAgICAgJChXZWJDb3Jl
KS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQ29udGV4dC5pZGwgXAorICAgICQoV2ViQ29yZSkvTW9k
dWxlcy93ZWJhdWRpby9BdWRpb0NvbnRleHRTdGF0ZS5pZGwgXAogICAgICQoV2ViQ29yZSkvTW9k
dWxlcy93ZWJhdWRpby9BdWRpb0Rlc3RpbmF0aW9uTm9kZS5pZGwgXAogICAgICQoV2ViQ29yZSkv
TW9kdWxlcy93ZWJhdWRpby9BdWRpb0xpc3RlbmVyLmlkbCBcCiAgICAgJChXZWJDb3JlKS9Nb2R1
bGVzL3dlYmF1ZGlvL0F1ZGlvTm9kZS5pZGwgXApAQCAtMzkzLDYgKzM5NCw3IEBAIEpTX0JJTkRJ
TkdfSURMUyA9IFwKICAgICAkKFdlYkNvcmUpL01vZHVsZXMvd2ViYXVkaW8vQ2hhbm5lbFNwbGl0
dGVyTm9kZS5pZGwgXAogICAgICQoV2ViQ29yZSkvTW9kdWxlcy93ZWJhdWRpby9Db252b2x2ZXJO
b2RlLmlkbCBcCiAgICAgJChXZWJDb3JlKS9Nb2R1bGVzL3dlYmF1ZGlvL0RlbGF5Tm9kZS5pZGwg
XAorICAgICQoV2ViQ29yZSkvTW9kdWxlcy93ZWJhdWRpby9EaXN0YW5jZU1vZGVsVHlwZS5pZGwg
XAogICAgICQoV2ViQ29yZSkvTW9kdWxlcy93ZWJhdWRpby9EeW5hbWljc0NvbXByZXNzb3JOb2Rl
LmlkbCBcCiAgICAgJChXZWJDb3JlKS9Nb2R1bGVzL3dlYmF1ZGlvL0dhaW5Ob2RlLmlkbCBcCiAg
ICAgJChXZWJDb3JlKS9Nb2R1bGVzL3dlYmF1ZGlvL01lZGlhRWxlbWVudEF1ZGlvU291cmNlTm9k
ZS5pZGwgXApAQCAtNDAyLDkgKzQwNCwxMyBAQCBKU19CSU5ESU5HX0lETFMgPSBcCiAgICAgJChX
ZWJDb3JlKS9Nb2R1bGVzL3dlYmF1ZGlvL09mZmxpbmVBdWRpb0NvbnRleHQuaWRsIFwKICAgICAk
KFdlYkNvcmUpL01vZHVsZXMvd2ViYXVkaW8vT3NjaWxsYXRvck5vZGUuaWRsIFwKICAgICAkKFdl
YkNvcmUpL01vZHVsZXMvd2ViYXVkaW8vUGFubmVyTm9kZS5pZGwgXAorICAgICQoV2ViQ29yZSkv
TW9kdWxlcy93ZWJhdWRpby9QYW5uaW5nTW9kZWxUeXBlLmlkbCBcCiAgICAgJChXZWJDb3JlKS9N
b2R1bGVzL3dlYmF1ZGlvL1BlcmlvZGljV2F2ZS5pZGwgXAogICAgICQoV2ViQ29yZSkvTW9kdWxl
cy93ZWJhdWRpby9TY3JpcHRQcm9jZXNzb3JOb2RlLmlkbCBcCiAgICAgJChXZWJDb3JlKS9Nb2R1
bGVzL3dlYmF1ZGlvL1dhdmVTaGFwZXJOb2RlLmlkbCBcCisgICAgJChXZWJDb3JlKS9Nb2R1bGVz
L3dlYmF1ZGlvL1dlYktpdEF1ZGlvQ29udGV4dC5pZGwgXAorICAgICQoV2ViQ29yZSkvTW9kdWxl
cy93ZWJhdWRpby9XZWJLaXRBdWRpb1Bhbm5lck5vZGUuaWRsIFwKKyAgICAkKFdlYkNvcmUpL01v
ZHVsZXMvd2ViYXVkaW8vV2ViS2l0T2ZmbGluZUF1ZGlvQ29udGV4dC5pZGwgXAogICAgICQoV2Vi
Q29yZSkvTW9kdWxlcy93ZWJhdXRobi9BdHRlc3RhdGlvbkNvbnZleWFuY2VQcmVmZXJlbmNlLmlk
bCBcCiAgICAgJChXZWJDb3JlKS9Nb2R1bGVzL3dlYmF1dGhuL0F1dGhlbnRpY2F0aW9uRXh0ZW5z
aW9uc0NsaWVudElucHV0cy5pZGwgXAogICAgICQoV2ViQ29yZSkvTW9kdWxlcy93ZWJhdXRobi9B
dXRoZW50aWNhdGlvbkV4dGVuc2lvbnNDbGllbnRPdXRwdXRzLmlkbCBcCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0FuYWx5c2VyTm9kZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0FuYWx5c2VyTm9kZS5jcHAKaW5kZXggMTc5ODcwNzAx
ZjguLjIxNWRlMzIxZTlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1
ZGlvL0FuYWx5c2VyTm9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRp
by9BbmFseXNlck5vZGUuY3BwCkBAIC0zNiw3ICszNiw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAogV1RGX01BS0VfSVNPX0FMTE9DQVRFRF9JTVBMKEFuYWx5c2VyTm9kZSk7CiAKLUFuYWx5c2Vy
Tm9kZTo6QW5hbHlzZXJOb2RlKEF1ZGlvQ29udGV4dCYgY29udGV4dCwgZmxvYXQgc2FtcGxlUmF0
ZSkKK0FuYWx5c2VyTm9kZTo6QW5hbHlzZXJOb2RlKEF1ZGlvQ29udGV4dEJhc2UmIGNvbnRleHQs
IGZsb2F0IHNhbXBsZVJhdGUpCiAgICAgOiBBdWRpb0Jhc2ljSW5zcGVjdG9yTm9kZShjb250ZXh0
LCBzYW1wbGVSYXRlLCAyKQogewogICAgIHNldE5vZGVUeXBlKE5vZGVUeXBlQW5hbHlzZXIpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BbmFseXNlck5vZGUu
aCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQW5hbHlzZXJOb2RlLmgKaW5kZXgg
ZGExYjVlODljYTIuLmE0MDIzYTMwZGVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmF1ZGlvL0FuYWx5c2VyTm9kZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViYXVkaW8vQW5hbHlzZXJOb2RlLmgKQEAgLTMyLDcgKzMyLDcgQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogY2xhc3MgQW5hbHlzZXJOb2RlIGZpbmFsIDogcHVibGljIEF1ZGlvQmFzaWNJbnNwZWN0
b3JOb2RlIHsKICAgICBXVEZfTUFLRV9JU09fQUxMT0NBVEVEKEFuYWx5c2VyTm9kZSk7CiBwdWJs
aWM6Ci0gICAgc3RhdGljIFJlZjxBbmFseXNlck5vZGU+IGNyZWF0ZShBdWRpb0NvbnRleHQmIGNv
bnRleHQsIGZsb2F0IHNhbXBsZVJhdGUpCisgICAgc3RhdGljIFJlZjxBbmFseXNlck5vZGU+IGNy
ZWF0ZShBdWRpb0NvbnRleHRCYXNlJiBjb250ZXh0LCBmbG9hdCBzYW1wbGVSYXRlKQogICAgIHsK
ICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQW5hbHlzZXJOb2RlKGNvbnRleHQsIHNhbXBs
ZVJhdGUpKTsKICAgICB9CkBAIC01OCw3ICs1OCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGdldEJ5
dGVUaW1lRG9tYWluRGF0YShjb25zdCBSZWZQdHI8SlNDOjpVaW50OEFycmF5PiYgYXJyYXkpIHsg
bV9hbmFseXNlci5nZXRCeXRlVGltZURvbWFpbkRhdGEoYXJyYXkuZ2V0KCkpOyB9CiAKIHByaXZh
dGU6Ci0gICAgQW5hbHlzZXJOb2RlKEF1ZGlvQ29udGV4dCYsIGZsb2F0IHNhbXBsZVJhdGUpOwor
ICAgIEFuYWx5c2VyTm9kZShBdWRpb0NvbnRleHRCYXNlJiwgZmxvYXQgc2FtcGxlUmF0ZSk7CiAK
ICAgICB2b2lkIHByb2Nlc3Moc2l6ZV90IGZyYW1lc1RvUHJvY2VzcykgZmluYWw7CiAgICAgdm9p
ZCByZXNldCgpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJh
dWRpby9BdWRpb0Jhc2ljSW5zcGVjdG9yTm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmF1ZGlvL0F1ZGlvQmFzaWNJbnNwZWN0b3JOb2RlLmNwcAppbmRleCAwZmI1NWIwOGYwYy4u
MTQ1M2RhY2FmZGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8v
QXVkaW9CYXNpY0luc3BlY3Rvck5vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViYXVkaW8vQXVkaW9CYXNpY0luc3BlY3Rvck5vZGUuY3BwCkBAIC0zNiw3ICszNiw3IEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAogV1RGX01BS0VfSVNPX0FMTE9DQVRFRF9JTVBMKEF1ZGlvQmFz
aWNJbnNwZWN0b3JOb2RlKTsKIAotQXVkaW9CYXNpY0luc3BlY3Rvck5vZGU6OkF1ZGlvQmFzaWNJ
bnNwZWN0b3JOb2RlKEF1ZGlvQ29udGV4dCYgY29udGV4dCwgZmxvYXQgc2FtcGxlUmF0ZSwgdW5z
aWduZWQgb3V0cHV0Q2hhbm5lbENvdW50KQorQXVkaW9CYXNpY0luc3BlY3Rvck5vZGU6OkF1ZGlv
QmFzaWNJbnNwZWN0b3JOb2RlKEF1ZGlvQ29udGV4dEJhc2UmIGNvbnRleHQsIGZsb2F0IHNhbXBs
ZVJhdGUsIHVuc2lnbmVkIG91dHB1dENoYW5uZWxDb3VudCkKICAgICA6IEF1ZGlvTm9kZShjb250
ZXh0LCBzYW1wbGVSYXRlKQogewogICAgIHNldE5vZGVUeXBlKE5vZGVUeXBlQmFzaWNJbnNwZWN0
b3IpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0Jh
c2ljSW5zcGVjdG9yTm9kZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRp
b0Jhc2ljSW5zcGVjdG9yTm9kZS5oCmluZGV4IDgwZTA4ZDI5NjE3Li5lNzY5ZTQ2YWUyMSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0Jhc2ljSW5zcGVj
dG9yTm9kZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9CYXNp
Y0luc3BlY3Rvck5vZGUuaApAQCAtMzQsNyArMzQsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBj
bGFzcyBBdWRpb0Jhc2ljSW5zcGVjdG9yTm9kZSA6IHB1YmxpYyBBdWRpb05vZGUgewogICAgIFdU
Rl9NQUtFX0lTT19BTExPQ0FURUQoQXVkaW9CYXNpY0luc3BlY3Rvck5vZGUpOwogcHVibGljOgot
ICAgIEF1ZGlvQmFzaWNJbnNwZWN0b3JOb2RlKEF1ZGlvQ29udGV4dCYsIGZsb2F0IHNhbXBsZVJh
dGUsIHVuc2lnbmVkIG91dHB1dENoYW5uZWxDb3VudCk7CisgICAgQXVkaW9CYXNpY0luc3BlY3Rv
ck5vZGUoQXVkaW9Db250ZXh0QmFzZSYsIGZsb2F0IHNhbXBsZVJhdGUsIHVuc2lnbmVkIG91dHB1
dENoYW5uZWxDb3VudCk7CiAKIHByaXZhdGU6CiAgICAgdm9pZCBwdWxsSW5wdXRzKHNpemVfdCBm
cmFtZXNUb1Byb2Nlc3MpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJhdWRpby9BdWRpb0Jhc2ljUHJvY2Vzc29yTm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQmFzaWNQcm9jZXNzb3JOb2RlLmNwcAppbmRleCAwYjlm
MWNlZDg3NC4uZjdiNzk2YmU1NTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViYXVkaW8vQXVkaW9CYXNpY1Byb2Nlc3Nvck5vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViYXVkaW8vQXVkaW9CYXNpY1Byb2Nlc3Nvck5vZGUuY3BwCkBAIC0zOSw3ICsz
OSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogV1RGX01BS0VfSVNPX0FMTE9DQVRFRF9JTVBM
KEF1ZGlvQmFzaWNQcm9jZXNzb3JOb2RlKTsKIAotQXVkaW9CYXNpY1Byb2Nlc3Nvck5vZGU6OkF1
ZGlvQmFzaWNQcm9jZXNzb3JOb2RlKEF1ZGlvQ29udGV4dCYgY29udGV4dCwgZmxvYXQgc2FtcGxl
UmF0ZSkKK0F1ZGlvQmFzaWNQcm9jZXNzb3JOb2RlOjpBdWRpb0Jhc2ljUHJvY2Vzc29yTm9kZShB
dWRpb0NvbnRleHRCYXNlJiBjb250ZXh0LCBmbG9hdCBzYW1wbGVSYXRlKQogICAgIDogQXVkaW9O
b2RlKGNvbnRleHQsIHNhbXBsZVJhdGUpCiB7CiAgICAgYWRkSW5wdXQobWFrZVVuaXF1ZTxBdWRp
b05vZGVJbnB1dD4odGhpcykpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJhdWRpby9BdWRpb0Jhc2ljUHJvY2Vzc29yTm9kZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJhdWRpby9BdWRpb0Jhc2ljUHJvY2Vzc29yTm9kZS5oCmluZGV4IDgyY2ZmZGE1OWYyLi5l
MTYzNzNiZjAyOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9B
dWRpb0Jhc2ljUHJvY2Vzc29yTm9kZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
YXVkaW8vQXVkaW9CYXNpY1Byb2Nlc3Nvck5vZGUuaApAQCAtMzcsNyArMzcsNyBAQCBjbGFzcyBB
dWRpb1Byb2Nlc3NvcjsKIGNsYXNzIEF1ZGlvQmFzaWNQcm9jZXNzb3JOb2RlIDogcHVibGljIEF1
ZGlvTm9kZSB7CiAgICAgV1RGX01BS0VfSVNPX0FMTE9DQVRFRChBdWRpb0Jhc2ljUHJvY2Vzc29y
Tm9kZSk7CiBwdWJsaWM6Ci0gICAgQXVkaW9CYXNpY1Byb2Nlc3Nvck5vZGUoQXVkaW9Db250ZXh0
JiwgZmxvYXQgc2FtcGxlUmF0ZSk7CisgICAgQXVkaW9CYXNpY1Byb2Nlc3Nvck5vZGUoQXVkaW9D
b250ZXh0QmFzZSYsIGZsb2F0IHNhbXBsZVJhdGUpOwogCiAgICAgLy8gQXVkaW9Ob2RlCiAgICAg
dm9pZCBwcm9jZXNzKHNpemVfdCBmcmFtZXNUb1Byb2Nlc3MpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0J1ZmZlclNvdXJjZU5vZGUu
Y3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0J1ZmZlclNvdXJjZU5v
ZGUuY3BwCmluZGV4IGMzNjYxZGU1N2Q3Li4wYzFiYTRlOTRhOSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0J1ZmZlclNvdXJjZU5vZGUuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9CdWZmZXJTb3VyY2VOb2RlLmNw
cApAQCAtNDksMTIgKzQ5LDEyIEBAIGNvbnN0IGRvdWJsZSBEZWZhdWx0R3JhaW5EdXJhdGlvbiA9
IDAuMDIwOyAvLyAyMG1zCiAvLyB0byBtaW5pbWl6ZSBsaW5lYXIgaW50ZXJwb2xhdGlvbiBhbGlh
c2luZy4KIGNvbnN0IGRvdWJsZSBNYXhSYXRlID0gMTAyNDsKIAotUmVmPEF1ZGlvQnVmZmVyU291
cmNlTm9kZT4gQXVkaW9CdWZmZXJTb3VyY2VOb2RlOjpjcmVhdGUoQXVkaW9Db250ZXh0JiBjb250
ZXh0LCBmbG9hdCBzYW1wbGVSYXRlKQorUmVmPEF1ZGlvQnVmZmVyU291cmNlTm9kZT4gQXVkaW9C
dWZmZXJTb3VyY2VOb2RlOjpjcmVhdGUoQXVkaW9Db250ZXh0QmFzZSYgY29udGV4dCwgZmxvYXQg
c2FtcGxlUmF0ZSkKIHsKICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBBdWRpb0J1ZmZlclNvdXJj
ZU5vZGUoY29udGV4dCwgc2FtcGxlUmF0ZSkpOwogfQogCi1BdWRpb0J1ZmZlclNvdXJjZU5vZGU6
OkF1ZGlvQnVmZmVyU291cmNlTm9kZShBdWRpb0NvbnRleHQmIGNvbnRleHQsIGZsb2F0IHNhbXBs
ZVJhdGUpCitBdWRpb0J1ZmZlclNvdXJjZU5vZGU6OkF1ZGlvQnVmZmVyU291cmNlTm9kZShBdWRp
b0NvbnRleHRCYXNlJiBjb250ZXh0LCBmbG9hdCBzYW1wbGVSYXRlKQogICAgIDogQXVkaW9TY2hl
ZHVsZWRTb3VyY2VOb2RlKGNvbnRleHQsIHNhbXBsZVJhdGUpCiAgICAgLCBtX2J1ZmZlcihudWxs
cHRyKQogICAgICwgbV9pc0xvb3BpbmcoZmFsc2UpCkBAIC00MTMsNyArNDEzLDcgQEAgdm9pZCBB
dWRpb0J1ZmZlclNvdXJjZU5vZGU6OnNldEJ1ZmZlcihSZWZQdHI8QXVkaW9CdWZmZXI+JiYgYnVm
ZmVyKQogICAgIERFQlVHX0xPRyhMT0dJREVOVElGSUVSKTsKIAogICAgIC8vIFRoZSBjb250ZXh0
IG11c3QgYmUgbG9ja2VkIHNpbmNlIGNoYW5naW5nIHRoZSBidWZmZXIgY2FuIHJlLWNvbmZpZ3Vy
ZSB0aGUgbnVtYmVyIG9mIGNoYW5uZWxzIHRoYXQgYXJlIG91dHB1dC4KLSAgICBBdWRpb0NvbnRl
eHQ6OkF1dG9Mb2NrZXIgY29udGV4dExvY2tlcihjb250ZXh0KCkpOworICAgIEF1ZGlvQ29udGV4
dEJhc2U6OkF1dG9Mb2NrZXIgY29udGV4dExvY2tlcihjb250ZXh0KCkpOwogICAgIAogICAgIC8v
IFRoaXMgc3luY2hyb25pemVzIHdpdGggcHJvY2VzcygpLgogICAgIGF1dG8gbG9ja2VyID0gaG9s
ZExvY2sobV9wcm9jZXNzTXV0ZXgpOwpAQCAtNTU3LDcgKzU1Nyw3IEBAIGJvb2wgQXVkaW9CdWZm
ZXJTb3VyY2VOb2RlOjpwcm9wYWdhdGVzU2lsZW5jZSgpIGNvbnN0CiAgICAgcmV0dXJuICFpc1Bs
YXlpbmdPclNjaGVkdWxlZCgpIHx8IGhhc0ZpbmlzaGVkKCkgfHwgIW1fYnVmZmVyOwogfQogCi12
b2lkIEF1ZGlvQnVmZmVyU291cmNlTm9kZTo6c2V0UGFubmVyTm9kZShQYW5uZXJOb2RlKiBwYW5u
ZXJOb2RlKQordm9pZCBBdWRpb0J1ZmZlclNvdXJjZU5vZGU6OnNldFBhbm5lck5vZGUoUGFubmVy
Tm9kZUJhc2UqIHBhbm5lck5vZGUpCiB7CiAgICAgaWYgKG1fcGFubmVyTm9kZSAhPSBwYW5uZXJO
b2RlICYmICFoYXNGaW5pc2hlZCgpKSB7CiAgICAgICAgIGlmIChwYW5uZXJOb2RlKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0J1ZmZlclNvdXJjZU5v
ZGUuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9CdWZmZXJTb3VyY2VO
b2RlLmgKaW5kZXggNTQ4YjI2ZTdmYTcuLjYwMTEzMTE5OWE0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQnVmZmVyU291cmNlTm9kZS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9CdWZmZXJTb3VyY2VOb2RlLmgKQEAg
LTMxLDcgKzMxLDcgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQXVkaW9CdWZmZXI7
Ci1jbGFzcyBQYW5uZXJOb2RlOworY2xhc3MgUGFubmVyTm9kZUJhc2U7CiAKIC8vIEF1ZGlvQnVm
ZmVyU291cmNlTm9kZSBpcyBhbiBBdWRpb05vZGUgcmVwcmVzZW50aW5nIGFuIGF1ZGlvIHNvdXJj
ZSBmcm9tIGFuIGluLW1lbW9yeSBhdWRpbyBhc3NldCByZXByZXNlbnRlZCBieSBhbiBBdWRpb0J1
ZmZlci4KIC8vIEl0IGdlbmVyYWxseSB3aWxsIGJlIHVzZWQgZm9yIHNob3J0IHNvdW5kcyB3aGlj
aCByZXF1aXJlIGEgaGlnaCBkZWdyZWUgb2Ygc2NoZWR1bGluZyBmbGV4aWJpbGl0eSAoY2FuIHBs
YXliYWNrIGluIHJoeXRobWljYWxseSBwZXJmZWN0IHdheXMpLgpAQCAtMzksNyArMzksNyBAQCBj
bGFzcyBQYW5uZXJOb2RlOwogY2xhc3MgQXVkaW9CdWZmZXJTb3VyY2VOb2RlIGZpbmFsIDogcHVi
bGljIEF1ZGlvU2NoZWR1bGVkU291cmNlTm9kZSB7CiAgICAgV1RGX01BS0VfSVNPX0FMTE9DQVRF
RChBdWRpb0J1ZmZlclNvdXJjZU5vZGUpOwogcHVibGljOgotICAgIHN0YXRpYyBSZWY8QXVkaW9C
dWZmZXJTb3VyY2VOb2RlPiBjcmVhdGUoQXVkaW9Db250ZXh0JiwgZmxvYXQgc2FtcGxlUmF0ZSk7
CisgICAgc3RhdGljIFJlZjxBdWRpb0J1ZmZlclNvdXJjZU5vZGU+IGNyZWF0ZShBdWRpb0NvbnRl
eHRCYXNlJiwgZmxvYXQgc2FtcGxlUmF0ZSk7CiAKICAgICB2aXJ0dWFsIH5BdWRpb0J1ZmZlclNv
dXJjZU5vZGUoKTsKIApAQCAtNzksNyArNzksNyBAQCBwdWJsaWM6CiAgICAgQXVkaW9QYXJhbSog
cGxheWJhY2tSYXRlKCkgeyByZXR1cm4gbV9wbGF5YmFja1JhdGUuZ2V0KCk7IH0KIAogICAgIC8v
IElmIGEgcGFubmVyIG5vZGUgaXMgc2V0LCB0aGVuIHdlIGNhbiBpbmNvcnBvcmF0ZSBkb3BwbGVy
IHNoaWZ0IGludG8gdGhlIHBsYXliYWNrIHBpdGNoIHJhdGUuCi0gICAgdm9pZCBzZXRQYW5uZXJO
b2RlKFBhbm5lck5vZGUqKTsKKyAgICB2b2lkIHNldFBhbm5lck5vZGUoUGFubmVyTm9kZUJhc2Uq
KTsKICAgICB2b2lkIGNsZWFyUGFubmVyTm9kZSgpOwogCiAgICAgLy8gSWYgd2UgYXJlIG5vIGxv
bmdlciBwbGF5aW5nLCBwcm9wb2dhdGUgc2lsZW5jZSBhaGVhZCB0byBkb3duc3RyZWFtIG5vZGVz
LgpAQCAtOTEsNyArOTEsNyBAQCBwdWJsaWM6CiAgICAgY29uc3QgY2hhciogYWN0aXZlRE9NT2Jq
ZWN0TmFtZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuICJBdWRpb0J1ZmZlclNvdXJjZU5vZGUi
OyB9CiAKIHByaXZhdGU6Ci0gICAgQXVkaW9CdWZmZXJTb3VyY2VOb2RlKEF1ZGlvQ29udGV4dCYs
IGZsb2F0IHNhbXBsZVJhdGUpOworICAgIEF1ZGlvQnVmZmVyU291cmNlTm9kZShBdWRpb0NvbnRl
eHRCYXNlJiwgZmxvYXQgc2FtcGxlUmF0ZSk7CiAKICAgICBkb3VibGUgdGFpbFRpbWUoKSBjb25z
dCBmaW5hbCB7IHJldHVybiAwOyB9CiAgICAgZG91YmxlIGxhdGVuY3lUaW1lKCkgY29uc3QgZmlu
YWwgeyByZXR1cm4gMDsgfQpAQCAtMTQ1LDcgKzE0NSw3IEBAIHByaXZhdGU6CiAKICAgICAvLyBX
ZSBvcHRpb25hbGx5IGtlZXAgdHJhY2sgb2YgYSBwYW5uZXIgbm9kZSB3aGljaCBoYXMgYSBkb3Bw
bGVyIHNoaWZ0IHRoYXQgaXMgaW5jb3Jwb3JhdGVkIGludG8KICAgICAvLyB0aGUgcGl0Y2ggcmF0
ZS4gV2UgbWFudWFsbHkgbWFuYWdlIHJlZi1jb3VudGluZyBiZWNhdXNlIHdlIHdhbnQgdG8gdXNl
IFJlZlR5cGVDb25uZWN0aW9uLgotICAgIFBhbm5lck5vZGUqIG1fcGFubmVyTm9kZTsKKyAgICBQ
YW5uZXJOb2RlQmFzZSogbV9wYW5uZXJOb2RlOwogCiAgICAgLy8gVGhpcyBzeW5jaHJvbml6ZXMg
cHJvY2VzcygpIHdpdGggc2V0QnVmZmVyKCkgd2hpY2ggY2FuIGNhdXNlIGR5bmFtaWMgY2hhbm5l
bCBjb3VudCBjaGFuZ2VzLgogICAgIG11dGFibGUgTG9jayBtX3Byb2Nlc3NNdXRleDsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0LmNwcAppbmRleCAz
ODJkYzdjZjBjZC4uNGRhMGExNDIxMWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmF1ZGlvL0F1ZGlvQ29udGV4dC5jcHAKQEAgLTEwNyw3ICsxMDcsNyBAQCBjb25zdCB1bnNp
Z25lZCBNYXhQZXJpb2RpY1dhdmVMZW5ndGggPSA0MDk2OwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKLVdURl9NQUtFX0lTT19BTExPQ0FURURfSU1QTChBdWRpb0NvbnRleHQpOworV1RGX01BS0Vf
SVNPX0FMTE9DQVRFRF9JTVBMKEF1ZGlvQ29udGV4dEJhc2UpOwogCiAjZGVmaW5lIFJFTEVBU0Vf
TE9HX0lGX0FMTE9XRUQoZm10LCAuLi4pIFJFTEVBU0VfTE9HX0lGKGRvY3VtZW50KCkgJiYgZG9j
dW1lbnQoKS0+cGFnZSgpICYmIGRvY3VtZW50KCktPnBhZ2UoKS0+aXNBbHdheXNPbkxvZ2dpbmdB
bGxvd2VkKCksIE1lZGlhLCAiJXAgLSBBdWRpb0NvbnRleHQ6OiIgZm10LCB0aGlzLCAjI19fVkFf
QVJHU19fKQogICAgIApAQCAtMTM3LDkgKzEzNywxNCBAQCBFeGNlcHRpb25PcjxSZWY8QXVkaW9D
b250ZXh0Pj4gQXVkaW9Db250ZXh0OjpjcmVhdGUoRG9jdW1lbnQmIGRvY3VtZW50KQogICAgIHJl
dHVybiBhdWRpb0NvbnRleHQ7CiB9CiAKK0F1ZGlvQ29udGV4dEJhc2U6OkF1ZGlvQ29udGV4dEJh
c2UoRG9jdW1lbnQmIGRvY3VtZW50KQorICAgIDogQWN0aXZlRE9NT2JqZWN0KGRvY3VtZW50KQor
eworfQorCiAvLyBDb25zdHJ1Y3RvciBmb3IgcmVuZGVyaW5nIHRvIHRoZSBhdWRpbyBoYXJkd2Fy
ZS4KIEF1ZGlvQ29udGV4dDo6QXVkaW9Db250ZXh0KERvY3VtZW50JiBkb2N1bWVudCkKLSAgICA6
IEFjdGl2ZURPTU9iamVjdChkb2N1bWVudCkKKyAgICA6IEF1ZGlvQ29udGV4dEJhc2UoZG9jdW1l
bnQpCiAjaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECiAgICAgLCBtX2xvZ2dlcihkb2N1bWVudC5s
b2dnZXIoKSkKICAgICAsIG1fbG9nSWRlbnRpZmllcih1bmlxdWVMb2dJZGVudGlmaWVyKCkpCkBA
IC0xNjQsNyArMTY5LDcgQEAgQXVkaW9Db250ZXh0OjpBdWRpb0NvbnRleHQoRG9jdW1lbnQmIGRv
Y3VtZW50KQogCiAvLyBDb25zdHJ1Y3RvciBmb3Igb2ZmbGluZSAobm9uLXJlYWx0aW1lKSByZW5k
ZXJpbmcuCiBBdWRpb0NvbnRleHQ6OkF1ZGlvQ29udGV4dChEb2N1bWVudCYgZG9jdW1lbnQsIEF1
ZGlvQnVmZmVyKiByZW5kZXJUYXJnZXQpCi0gICAgOiBBY3RpdmVET01PYmplY3QoZG9jdW1lbnQp
CisgICAgOiBBdWRpb0NvbnRleHRCYXNlKGRvY3VtZW50KQogI2lmICFSRUxFQVNFX0xPR19ESVNB
QkxFRAogICAgICwgbV9sb2dnZXIoZG9jdW1lbnQubG9nZ2VyKCkpCiAgICAgLCBtX2xvZ0lkZW50
aWZpZXIodW5pcXVlTG9nSWRlbnRpZmllcigpKQpAQCAtMzY2LDcgKzM3MSw3IEBAIGNvbnN0IGNo
YXIqIEF1ZGlvQ29udGV4dDo6YWN0aXZlRE9NT2JqZWN0TmFtZSgpIGNvbnN0CiAgICAgcmV0dXJu
ICJBdWRpb0NvbnRleHQiOwogfQogCi1Eb2N1bWVudCogQXVkaW9Db250ZXh0Ojpkb2N1bWVudCgp
IGNvbnN0CitEb2N1bWVudCogQXVkaW9Db250ZXh0QmFzZTo6ZG9jdW1lbnQoKSBjb25zdAogewog
ICAgIHJldHVybiBkb3duY2FzdDxEb2N1bWVudD4obV9zY3JpcHRFeGVjdXRpb25Db250ZXh0KTsK
IH0KQEAgLTEwNjgsNyArMTA3Myw3IEBAIHZvaWQgQXVkaW9Db250ZXh0Ojpwcm9jZXNzQXV0b21h
dGljUHVsbE5vZGVzKHNpemVfdCBmcmFtZXNUb1Byb2Nlc3MpCiAgICAgICAgIG5vZGUtPnByb2Nl
c3NJZk5lY2Vzc2FyeShmcmFtZXNUb1Byb2Nlc3MpOwogfQogCi1TY3JpcHRFeGVjdXRpb25Db250
ZXh0KiBBdWRpb0NvbnRleHQ6OnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSBjb25zdAorU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCogQXVkaW9Db250ZXh0QmFzZTo6c2NyaXB0RXhlY3V0aW9uQ29udGV4
dCgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIEFjdGl2ZURPTU9iamVjdDo6c2NyaXB0RXhlY3V0aW9u
Q29udGV4dCgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRp
by9BdWRpb0NvbnRleHQuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9D
b250ZXh0LmgKaW5kZXggOGUwOTQzOTRjZmYuLmJhNzQ3YWUyM2ExIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQ29udGV4dC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0LmgKQEAgLTI4LDYgKzI4LDcgQEAK
ICNpbmNsdWRlICJBY3RpdmVET01PYmplY3QuaCIKICNpbmNsdWRlICJBc3luY0F1ZGlvRGVjb2Rl
ci5oIgogI2luY2x1ZGUgIkF1ZGlvQnVzLmgiCisjaW5jbHVkZSAiQXVkaW9Db250ZXh0U3RhdGUu
aCIKICNpbmNsdWRlICJBdWRpb0Rlc3RpbmF0aW9uTm9kZS5oIgogI2luY2x1ZGUgIkV2ZW50VGFy
Z2V0LmgiCiAjaW5jbHVkZSAiTWVkaWFDYW5TdGFydExpc3RlbmVyLmgiCkBAIC03OSw0NCArODAs
MTM4IEBAIGNsYXNzIFdhdmVTaGFwZXJOb2RlOwogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBJRExUeXBl
PiBjbGFzcyBET01Qcm9taXNlRGVmZXJyZWQ7CiAKLS8vIEF1ZGlvQ29udGV4dCBpcyB0aGUgY29y
bmVyc3RvbmUgb2YgdGhlIHdlYiBhdWRpbyBBUEkgYW5kIGFsbCBBdWRpb05vZGVzIGFyZSBjcmVh
dGVkIGZyb20gaXQuCi0vLyBGb3IgdGhyZWFkIHNhZmV0eSBiZXR3ZWVuIHRoZSBhdWRpbyB0aHJl
YWQgYW5kIHRoZSBtYWluIHRocmVhZCwgaXQgaGFzIGEgcmVuZGVyaW5nIGdyYXBoIGxvY2tpbmcg
bWVjaGFuaXNtLiAKLQotY2xhc3MgQXVkaW9Db250ZXh0CitjbGFzcyBBdWRpb0NvbnRleHRCYXNl
CiAgICAgOiBwdWJsaWMgQWN0aXZlRE9NT2JqZWN0CiAgICAgLCBwdWJsaWMgVGhyZWFkU2FmZVJl
ZkNvdW50ZWQ8QXVkaW9Db250ZXh0PgogICAgICwgcHVibGljIEV2ZW50VGFyZ2V0V2l0aElubGlu
ZURhdGEKICAgICAsIHB1YmxpYyBNZWRpYUNhblN0YXJ0TGlzdGVuZXIKICAgICAsIHB1YmxpYyBN
ZWRpYVByb2R1Y2VyCi0gICAgLCBwcml2YXRlIFBsYXRmb3JtTWVkaWFTZXNzaW9uQ2xpZW50Ci0g
ICAgLCBwcml2YXRlIFZpc2liaWxpdHlDaGFuZ2VDbGllbnQKICNpZiAhUkVMRUFTRV9MT0dfRElT
QUJMRUQKLSAgICAsIHByaXZhdGUgTG9nZ2VySGVscGVyCisgICAgLCBwdWJsaWMgTG9nZ2VySGVs
cGVyCiAjZW5kaWYKIHsKLSAgICBXVEZfTUFLRV9JU09fQUxMT0NBVEVEKEF1ZGlvQ29udGV4dCk7
CisgICAgV1RGX01BS0VfSVNPX0FMTE9DQVRFRChBdWRpb0NvbnRleHRCYXNlKTsKK3B1YmxpYzoK
KyAgICB2aXJ0dWFsIH5BdWRpb0NvbnRleHRCYXNlKCkgPSBkZWZhdWx0OworCisgICAgLy8gUmVj
b25jaWxlIHJlZi9kZXJlZiB3aGljaCBhcmUgZGVmaW5lZCBib3RoIGluIFRocmVhZFNhZmVSZWZD
b3VudGVkIGFuZCBFdmVudFRhcmdldC4KKyAgICB1c2luZyBUaHJlYWRTYWZlUmVmQ291bnRlZDo6
cmVmOworICAgIHVzaW5nIFRocmVhZFNhZmVSZWZDb3VudGVkOjpkZXJlZjsKKworICAgIERvY3Vt
ZW50KiBkb2N1bWVudCgpIGNvbnN0OworCisgICAgdmlydHVhbCBib29sIGlzSW5pdGlhbGl6ZWQo
KSBjb25zdCA9IDA7CisKKyAgICB2aXJ0dWFsIHNpemVfdCBjdXJyZW50U2FtcGxlRnJhbWUoKSBj
b25zdCA9IDA7CisgICAgdmlydHVhbCBmbG9hdCBzYW1wbGVSYXRlKCkgY29uc3QgPSAwOworICAg
IHZpcnR1YWwgZG91YmxlIGN1cnJlbnRUaW1lKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgYm9v
bCBpc0dyYXBoT3duZXIoKSBjb25zdCA9IDA7CisKKyAgICB2aXJ0dWFsIHZvaWQgc2V0QXVkaW9U
aHJlYWQoVGhyZWFkJikgPSAwOworICAgIHZpcnR1YWwgYm9vbCBpc0F1ZGlvVGhyZWFkKCkgY29u
c3QgPSAwOworICAgIHZpcnR1YWwgYm9vbCBpc0F1ZGlvVGhyZWFkRmluaXNoZWQoKSA9IDA7CisK
KyAgICB2aXJ0dWFsIHZvaWQgaXNQbGF5aW5nQXVkaW9EaWRDaGFuZ2UoKSA9IDA7CisgICAgdmly
dHVhbCB2b2lkIG5vZGVXaWxsQmVnaW5QbGF5YmFjaygpID0gMDsKKworICAgIHZpcnR1YWwgdm9p
ZCBwb3N0VGFzayhXVEY6OkZ1bmN0aW9uPHZvaWQoKT4mJikgPSAwOworICAgIHZpcnR1YWwgYm9v
bCBpc1N0b3BwZWQoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBjb25zdCBTZWN1cml0eU9yaWdp
biogb3JpZ2luKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgdm9pZCBhZGRDb25zb2xlTWVzc2Fn
ZShNZXNzYWdlU291cmNlLCBNZXNzYWdlTGV2ZWwsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSkgPSAw
OworCisgICAgdmlydHVhbCB2b2lkIG1hcmtGb3JEZWxldGlvbihBdWRpb05vZGUmKSA9IDA7Cisg
ICAgdmlydHVhbCB2b2lkIGRlbGV0ZU1hcmtlZE5vZGVzKCkgPSAwOworCisgICAgdmlydHVhbCB2
b2lkIGhhbmRsZVByZVJlbmRlclRhc2tzKCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBoYW5kbGVQ
b3N0UmVuZGVyVGFza3MoKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHByb2Nlc3NBdXRvbWF0aWNQ
dWxsTm9kZXMoc2l6ZV90IGZyYW1lc1RvUHJvY2VzcykgPSAwOworICAgIHZpcnR1YWwgdm9pZCBh
ZGREZWZlcnJlZEZpbmlzaERlcmVmKEF1ZGlvTm9kZSopID0gMDsKKworICAgIHZpcnR1YWwgdm9p
ZCByZW1vdmVNYXJrZWRTdW1taW5nSnVuY3Rpb24oQXVkaW9TdW1taW5nSnVuY3Rpb24qKSA9IDA7
CisgICAgdmlydHVhbCB2b2lkIG1hcmtTdW1taW5nSnVuY3Rpb25EaXJ0eShBdWRpb1N1bW1pbmdK
dW5jdGlvbiopID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgbWFya0F1ZGlvTm9kZU91dHB1dERpcnR5
KEF1ZGlvTm9kZU91dHB1dCopID0gMDsKKworI2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRAorICAg
IHZpcnR1YWwgY29uc3Qgdm9pZCogbmV4dEF1ZGlvTm9kZUxvZ0lkZW50aWZpZXIoKSA9IDA7Cisg
ICAgdmlydHVhbCBjb25zdCB2b2lkKiBuZXh0QXVkaW9QYXJhbWV0ZXJMb2dJZGVudGlmaWVyKCkg
PSAwOworI2VuZGlmCisKKyAgICB2aXJ0dWFsIHZvaWQgYWRkQXV0b21hdGljUHVsbE5vZGUoQXVk
aW9Ob2RlJikgPSAwOworICAgIHZpcnR1YWwgdm9pZCByZW1vdmVBdXRvbWF0aWNQdWxsTm9kZShB
dWRpb05vZGUmKSA9IDA7CisKKyAgICB2aXJ0dWFsIHZvaWQgbm90aWZ5Tm9kZUZpbmlzaGVkUHJv
Y2Vzc2luZyhBdWRpb05vZGUqKSA9IDA7CisKKyAgICB2aXJ0dWFsIHZvaWQgZmluaXNoZWRSZW5k
ZXJpbmcoYm9vbCBkaWRSZW5kZXJpbmcpID0gMDsKKworICAgIHZpcnR1YWwgdm9pZCBpbmNyZW1l
bnRDb25uZWN0aW9uQ291bnQoKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGluY3JlbWVudEFjdGl2
ZVNvdXJjZUNvdW50KCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBkZWNyZW1lbnRBY3RpdmVTb3Vy
Y2VDb3VudCgpID0gMDsKKworICAgIHZpcnR1YWwgYm9vbCBpc09mZmxpbmVDb250ZXh0KCkgY29u
c3QgPSAwOworICAgIHZpcnR1YWwgYm9vbCBpc0F1ZGlvQ29udGV4dCgpIGNvbnN0ID0gMDsKKyAg
ICB2aXJ0dWFsIGJvb2wgaXNXZWJLaXRBdWRpb0NvbnRleHQoKSBjb25zdCA9IDA7CisKKyAgICAv
LyBtdXN0UmVsZWFzZUxvY2sgaXMgc2V0IHRvIHRydWUgaWYgd2UgYWNxdWlyZWQgdGhlIGxvY2sg
aW4gdGhpcyBtZXRob2QgY2FsbCBhbmQgY2FsbGVyIG11c3QgdW5sb2NrKCksIGZhbHNlIGlmIGl0
IHdhcyBwcmV2aW91c2x5IGFjcXVpcmVkLgorICAgIHZpcnR1YWwgdm9pZCBsb2NrKGJvb2wmIG11
c3RSZWxlYXNlTG9jaykgPSAwOworICAgIHZpcnR1YWwgYm9vbCB0cnlMb2NrKGJvb2wmIG11c3RS
ZWxlYXNlTG9jaykgPSAwOworICAgIHZpcnR1YWwgdm9pZCB1bmxvY2soKSA9IDA7CisKKyAgICBj
bGFzcyBBdXRvTG9ja2VyIHsKKyAgICBwdWJsaWM6CisgICAgICAgIGV4cGxpY2l0IEF1dG9Mb2Nr
ZXIoQXVkaW9Db250ZXh0QmFzZSYgY29udGV4dCkKKyAgICAgICAgICAgIDogbV9jb250ZXh0KGNv
bnRleHQpCisgICAgICAgIHsKKyAgICAgICAgICAgIG1fY29udGV4dC5sb2NrKG1fbXVzdFJlbGVh
c2VMb2NrKTsKKyAgICAgICAgfQorCisgICAgICAgIH5BdXRvTG9ja2VyKCkKKyAgICAgICAgewor
ICAgICAgICAgICAgaWYgKG1fbXVzdFJlbGVhc2VMb2NrKQorICAgICAgICAgICAgICAgIG1fY29u
dGV4dC51bmxvY2soKTsKKyAgICAgICAgfQorCisgICAgcHJpdmF0ZToKKyAgICAgICAgQXVkaW9D
b250ZXh0QmFzZSYgbV9jb250ZXh0OworICAgICAgICBib29sIG1fbXVzdFJlbGVhc2VMb2NrOwor
ICAgIH07CisKKyAgICAvLyBFdmVudFRhcmdldAorICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQq
IHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSBjb25zdCBmaW5hbDsKKyAgICB2b2lkIHJlZkV2ZW50
VGFyZ2V0KCkgb3ZlcnJpZGUgeyByZWYoKTsgfQorICAgIHZvaWQgZGVyZWZFdmVudFRhcmdldCgp
IG92ZXJyaWRlIHsgZGVyZWYoKTsgfQorCitwcm90ZWN0ZWQ6CisgICAgZXhwbGljaXQgQXVkaW9D
b250ZXh0QmFzZShEb2N1bWVudCYpOworfTsKKworLy8gQXVkaW9Db250ZXh0IGlzIHRoZSBjb3Ju
ZXJzdG9uZSBvZiB0aGUgd2ViIGF1ZGlvIEFQSSBhbmQgYWxsIEF1ZGlvTm9kZXMgYXJlIGNyZWF0
ZWQgZnJvbSBpdC4KKy8vIEZvciB0aHJlYWQgc2FmZXR5IGJldHdlZW4gdGhlIGF1ZGlvIHRocmVh
ZCBhbmQgdGhlIG1haW4gdGhyZWFkLCBpdCBoYXMgYSByZW5kZXJpbmcgZ3JhcGggbG9ja2luZyBt
ZWNoYW5pc20uIAorCitjbGFzcyBBdWRpb0NvbnRleHQKKyAgICA6IHB1YmxpYyBBdWRpb0NvbnRl
eHRCYXNlCisgICAgLCBwcml2YXRlIFBsYXRmb3JtTWVkaWFTZXNzaW9uQ2xpZW50CisgICAgLCBw
cml2YXRlIFZpc2liaWxpdHlDaGFuZ2VDbGllbnQKK3sKIHB1YmxpYzoKICAgICAvLyBDcmVhdGUg
YW4gQXVkaW9Db250ZXh0IGZvciByZW5kZXJpbmcgdG8gdGhlIGF1ZGlvIGhhcmR3YXJlLgogICAg
IHN0YXRpYyBFeGNlcHRpb25PcjxSZWY8QXVkaW9Db250ZXh0Pj4gY3JlYXRlKERvY3VtZW50Jik7
CiAKICAgICB2aXJ0dWFsIH5BdWRpb0NvbnRleHQoKTsKIAotICAgIGJvb2wgaXNJbml0aWFsaXpl
ZCgpIGNvbnN0OworICAgIGJvb2wgaXNJbml0aWFsaXplZCgpIGNvbnN0IGZpbmFsOwogICAgIAot
ICAgIGJvb2wgaXNPZmZsaW5lQ29udGV4dCgpIGNvbnN0IHsgcmV0dXJuIG1faXNPZmZsaW5lQ29u
dGV4dDsgfQotCi0gICAgRG9jdW1lbnQqIGRvY3VtZW50KCkgY29uc3Q7IC8vIEFTU0VSVHMgaWYg
ZG9jdW1lbnQgbm8gbG9uZ2VyIGV4aXN0cy4KKyAgICBib29sIGlzT2ZmbGluZUNvbnRleHQoKSBj
b25zdCBmaW5hbCB7IHJldHVybiBtX2lzT2ZmbGluZUNvbnRleHQ7IH0KIAogICAgIERvY3VtZW50
SWRlbnRpZmllciBob3N0aW5nRG9jdW1lbnRJZGVudGlmaWVyKCkgY29uc3QgZmluYWw7CiAKICAg
ICBBdWRpb0Rlc3RpbmF0aW9uTm9kZSogZGVzdGluYXRpb24oKSB7IHJldHVybiBtX2Rlc3RpbmF0
aW9uTm9kZS5nZXQoKTsgfQotICAgIHNpemVfdCBjdXJyZW50U2FtcGxlRnJhbWUoKSBjb25zdCB7
IHJldHVybiBtX2Rlc3RpbmF0aW9uTm9kZSA/IG1fZGVzdGluYXRpb25Ob2RlLT5jdXJyZW50U2Ft
cGxlRnJhbWUoKSA6IDA7IH0KLSAgICBkb3VibGUgY3VycmVudFRpbWUoKSBjb25zdCB7IHJldHVy
biBtX2Rlc3RpbmF0aW9uTm9kZSA/IG1fZGVzdGluYXRpb25Ob2RlLT5jdXJyZW50VGltZSgpIDog
MC47IH0KLSAgICBmbG9hdCBzYW1wbGVSYXRlKCkgY29uc3QgeyByZXR1cm4gbV9kZXN0aW5hdGlv
bk5vZGUgPyBtX2Rlc3RpbmF0aW9uTm9kZS0+c2FtcGxlUmF0ZSgpIDogMC5mOyB9CisgICAgc2l6
ZV90IGN1cnJlbnRTYW1wbGVGcmFtZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fZGVzdGluYXRp
b25Ob2RlID8gbV9kZXN0aW5hdGlvbk5vZGUtPmN1cnJlbnRTYW1wbGVGcmFtZSgpIDogMDsgfQor
ICAgIGRvdWJsZSBjdXJyZW50VGltZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fZGVzdGluYXRp
b25Ob2RlID8gbV9kZXN0aW5hdGlvbk5vZGUtPmN1cnJlbnRUaW1lKCkgOiAwLjsgfQorICAgIGZs
b2F0IHNhbXBsZVJhdGUoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2Rlc3RpbmF0aW9uTm9kZSA/
IG1fZGVzdGluYXRpb25Ob2RlLT5zYW1wbGVSYXRlKCkgOiAwLmY7IH0KICAgICB1bnNpZ25lZCBs
b25nIGFjdGl2ZVNvdXJjZUNvdW50KCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQgbG9uZz4obV9hY3RpdmVTb3VyY2VDb3VudCk7IH0KIAotICAgIHZvaWQgaW5jcmVtZW50QWN0
aXZlU291cmNlQ291bnQoKTsKLSAgICB2b2lkIGRlY3JlbWVudEFjdGl2ZVNvdXJjZUNvdW50KCk7
CisgICAgdm9pZCBpbmNyZW1lbnRBY3RpdmVTb3VyY2VDb3VudCgpIGZpbmFsOworICAgIHZvaWQg
ZGVjcmVtZW50QWN0aXZlU291cmNlQ291bnQoKSBmaW5hbDsKICAgICAKICAgICBFeGNlcHRpb25P
cjxSZWY8QXVkaW9CdWZmZXI+PiBjcmVhdGVCdWZmZXIodW5zaWduZWQgbnVtYmVyT2ZDaGFubmVs
cywgc2l6ZV90IG51bWJlck9mRnJhbWVzLCBmbG9hdCBzYW1wbGVSYXRlKTsKICAgICBFeGNlcHRp
b25PcjxSZWY8QXVkaW9CdWZmZXI+PiBjcmVhdGVCdWZmZXIoQXJyYXlCdWZmZXImLCBib29sIG1p
eFRvTW9ubyk7CkBAIC0xMzAsNyArMjI1LDcgQEAgcHVibGljOgogICAgIHZvaWQgcmVzdW1lUmVu
ZGVyaW5nKERPTVByb21pc2VEZWZlcnJlZDx2b2lkPiYmKTsKICAgICB2b2lkIGNsb3NlKERPTVBy
b21pc2VEZWZlcnJlZDx2b2lkPiYmKTsKIAotICAgIGVudW0gY2xhc3MgU3RhdGUgeyBTdXNwZW5k
ZWQsIFJ1bm5pbmcsIEludGVycnVwdGVkLCBDbG9zZWQgfTsKKyAgICB1c2luZyBTdGF0ZSA9IEF1
ZGlvQ29udGV4dFN0YXRlOwogICAgIFN0YXRlIHN0YXRlKCkgY29uc3Q7CiAgICAgYm9vbCBpc0Ns
b3NlZCgpIGNvbnN0IHsgcmV0dXJuIG1fc3RhdGUgPT0gU3RhdGU6OkNsb3NlZDsgfQogCkBAIC0x
NjAsMzEgKzI1NSwzMSBAQCBwdWJsaWM6CiAgICAgRXhjZXB0aW9uT3I8UmVmPFBlcmlvZGljV2F2
ZT4+IGNyZWF0ZVBlcmlvZGljV2F2ZShGbG9hdDMyQXJyYXkmIHJlYWwsIEZsb2F0MzJBcnJheSYg
aW1hZ2luYXJ5KTsKIAogICAgIC8vIFdoZW4gYSBzb3VyY2Ugbm9kZSBoYXMgbm8gbW9yZSBwcm9j
ZXNzaW5nIHRvIGRvIChoYXMgZmluaXNoZWQgcGxheWluZyksIHRoZW4gaXQgdGVsbHMgdGhlIGNv
bnRleHQgdG8gZGVyZWZlcmVuY2UgaXQuCi0gICAgdm9pZCBub3RpZnlOb2RlRmluaXNoZWRQcm9j
ZXNzaW5nKEF1ZGlvTm9kZSopOworICAgIHZvaWQgbm90aWZ5Tm9kZUZpbmlzaGVkUHJvY2Vzc2lu
ZyhBdWRpb05vZGUqKSBmaW5hbDsKIAogICAgIC8vIENhbGxlZCBhdCB0aGUgc3RhcnQgb2YgZWFj
aCByZW5kZXIgcXVhbnR1bS4KLSAgICB2b2lkIGhhbmRsZVByZVJlbmRlclRhc2tzKCk7CisgICAg
dm9pZCBoYW5kbGVQcmVSZW5kZXJUYXNrcygpIGZpbmFsOwogCiAgICAgLy8gQ2FsbGVkIGF0IHRo
ZSBlbmQgb2YgZWFjaCByZW5kZXIgcXVhbnR1bS4KLSAgICB2b2lkIGhhbmRsZVBvc3RSZW5kZXJU
YXNrcygpOworICAgIHZvaWQgaGFuZGxlUG9zdFJlbmRlclRhc2tzKCkgZmluYWw7CiAKICAgICAv
LyBDYWxsZWQgcGVyaW9kaWNhbGx5IGF0IHRoZSBlbmQgb2YgZWFjaCByZW5kZXIgcXVhbnR1bSB0
byBkZXJlZmVyZW5jZSBmaW5pc2hlZCBzb3VyY2Ugbm9kZXMuCiAgICAgdm9pZCBkZXJlZkZpbmlz
aGVkU291cmNlTm9kZXMoKTsKIAogICAgIC8vIFdlIHNjaGVkdWxlIGRlbGV0aW9uIG9mIGFsbCBt
YXJrZWQgbm9kZXMgYXQgdGhlIGVuZCBvZiBlYWNoIHJlYWx0aW1lIHJlbmRlciBxdWFudHVtLgot
ICAgIHZvaWQgbWFya0ZvckRlbGV0aW9uKEF1ZGlvTm9kZSYpOwotICAgIHZvaWQgZGVsZXRlTWFy
a2VkTm9kZXMoKTsKKyAgICB2b2lkIG1hcmtGb3JEZWxldGlvbihBdWRpb05vZGUmKSBmaW5hbDsK
KyAgICB2b2lkIGRlbGV0ZU1hcmtlZE5vZGVzKCkgZmluYWw7CiAKICAgICAvLyBBdWRpb0NvbnRl
eHQgY2FuIHB1bGwgbm9kZShzKSBhdCB0aGUgZW5kIG9mIGVhY2ggcmVuZGVyIHF1YW50dW0gZXZl
biB3aGVuIHRoZXkgYXJlIG5vdCBjb25uZWN0ZWQgdG8gYW55IGRvd25zdHJlYW0gbm9kZXMuCiAg
ICAgLy8gVGhlc2UgdHdvIG1ldGhvZHMgYXJlIGNhbGxlZCBieSB0aGUgbm9kZXMgd2hvIHdhbnQg
dG8gYWRkL3JlbW92ZSB0aGVtc2VsdmVzIGludG8vZnJvbSB0aGUgYXV0b21hdGljIHB1bGwgbGlz
dHMuCi0gICAgdm9pZCBhZGRBdXRvbWF0aWNQdWxsTm9kZShBdWRpb05vZGUmKTsKLSAgICB2b2lk
IHJlbW92ZUF1dG9tYXRpY1B1bGxOb2RlKEF1ZGlvTm9kZSYpOworICAgIHZvaWQgYWRkQXV0b21h
dGljUHVsbE5vZGUoQXVkaW9Ob2RlJikgZmluYWw7CisgICAgdm9pZCByZW1vdmVBdXRvbWF0aWNQ
dWxsTm9kZShBdWRpb05vZGUmKSBmaW5hbDsKIAogICAgIC8vIENhbGxlZCByaWdodCBiZWZvcmUg
aGFuZGxlUG9zdFJlbmRlclRhc2tzKCkgdG8gaGFuZGxlIG5vZGVzIHdoaWNoIG5lZWQgdG8gYmUg
cHVsbGVkIGV2ZW4gd2hlbiB0aGV5IGFyZSBub3QgY29ubmVjdGVkIHRvIGFueXRoaW5nLgotICAg
IHZvaWQgcHJvY2Vzc0F1dG9tYXRpY1B1bGxOb2RlcyhzaXplX3QgZnJhbWVzVG9Qcm9jZXNzKTsK
KyAgICB2b2lkIHByb2Nlc3NBdXRvbWF0aWNQdWxsTm9kZXMoc2l6ZV90IGZyYW1lc1RvUHJvY2Vz
cykgZmluYWw7CiAKICAgICAvLyBLZWVwcyB0cmFjayBvZiB0aGUgbnVtYmVyIG9mIGNvbm5lY3Rp
b25zIG1hZGUuCi0gICAgdm9pZCBpbmNyZW1lbnRDb25uZWN0aW9uQ291bnQoKQorICAgIHZvaWQg
aW5jcmVtZW50Q29ubmVjdGlvbkNvdW50KCkgZmluYWwKICAgICB7CiAgICAgICAgIEFTU0VSVChp
c01haW5UaHJlYWQoKSk7CiAgICAgICAgIG1fY29ubmVjdGlvbkNvdW50Kys7CkBAIC0xOTYsNjkg
KzI5MSw0NiBAQCBwdWJsaWM6CiAgICAgLy8gVGhyZWFkIFNhZmV0eSBhbmQgR3JhcGggTG9ja2lu
ZzoKICAgICAvLwogICAgIAotICAgIHZvaWQgc2V0QXVkaW9UaHJlYWQoVGhyZWFkJiB0aHJlYWQp
IHsgbV9hdWRpb1RocmVhZCA9ICZ0aHJlYWQ7IH0gLy8gRklYTUU6IGNoZWNrIGVpdGhlciBub3Qg
aW5pdGlhbGl6ZWQgb3IgdGhlIHNhbWUKKyAgICB2b2lkIHNldEF1ZGlvVGhyZWFkKFRocmVhZCYg
dGhyZWFkKSBmaW5hbCB7IG1fYXVkaW9UaHJlYWQgPSAmdGhyZWFkOyB9IC8vIEZJWE1FOiBjaGVj
ayBlaXRoZXIgbm90IGluaXRpYWxpemVkIG9yIHRoZSBzYW1lCiAgICAgVGhyZWFkKiBhdWRpb1Ro
cmVhZCgpIGNvbnN0IHsgcmV0dXJuIG1fYXVkaW9UaHJlYWQ7IH0KLSAgICBib29sIGlzQXVkaW9U
aHJlYWQoKSBjb25zdDsKKyAgICBib29sIGlzQXVkaW9UaHJlYWQoKSBjb25zdCBmaW5hbDsKIAog
ICAgIC8vIFJldHVybnMgdHJ1ZSBvbmx5IGFmdGVyIHRoZSBhdWRpbyB0aHJlYWQgaGFzIGJlZW4g
c3RhcnRlZCBhbmQgdGhlbiBzaHV0ZG93bi4KLSAgICBib29sIGlzQXVkaW9UaHJlYWRGaW5pc2hl
ZCgpIHsgcmV0dXJuIG1faXNBdWRpb1RocmVhZEZpbmlzaGVkOyB9CisgICAgYm9vbCBpc0F1ZGlv
VGhyZWFkRmluaXNoZWQoKSBmaW5hbCB7IHJldHVybiBtX2lzQXVkaW9UaHJlYWRGaW5pc2hlZDsg
fQogICAgIAogICAgIC8vIG11c3RSZWxlYXNlTG9jayBpcyBzZXQgdG8gdHJ1ZSBpZiB3ZSBhY3F1
aXJlZCB0aGUgbG9jayBpbiB0aGlzIG1ldGhvZCBjYWxsIGFuZCBjYWxsZXIgbXVzdCB1bmxvY2so
KSwgZmFsc2UgaWYgaXQgd2FzIHByZXZpb3VzbHkgYWNxdWlyZWQuCi0gICAgdm9pZCBsb2NrKGJv
b2wmIG11c3RSZWxlYXNlTG9jayk7CisgICAgdm9pZCBsb2NrKGJvb2wmIG11c3RSZWxlYXNlTG9j
aykgZmluYWw7CiAKICAgICAvLyBSZXR1cm5zIHRydWUgaWYgd2Ugb3duIHRoZSBsb2NrLgogICAg
IC8vIG11c3RSZWxlYXNlTG9jayBpcyBzZXQgdG8gdHJ1ZSBpZiB3ZSBhY3F1aXJlZCB0aGUgbG9j
ayBpbiB0aGlzIG1ldGhvZCBjYWxsIGFuZCBjYWxsZXIgbXVzdCB1bmxvY2soKSwgZmFsc2UgaWYg
aXQgd2FzIHByZXZpb3VzbHkgYWNxdWlyZWQuCi0gICAgYm9vbCB0cnlMb2NrKGJvb2wmIG11c3RS
ZWxlYXNlTG9jayk7CisgICAgYm9vbCB0cnlMb2NrKGJvb2wmIG11c3RSZWxlYXNlTG9jaykgZmlu
YWw7CiAKLSAgICB2b2lkIHVubG9jaygpOworICAgIHZvaWQgdW5sb2NrKCkgZmluYWw7CiAKICAg
ICAvLyBSZXR1cm5zIHRydWUgaWYgdGhpcyB0aHJlYWQgb3ducyB0aGUgY29udGV4dCdzIGxvY2su
Ci0gICAgYm9vbCBpc0dyYXBoT3duZXIoKSBjb25zdDsKKyAgICBib29sIGlzR3JhcGhPd25lcigp
IGNvbnN0IGZpbmFsOwogCiAgICAgLy8gUmV0dXJucyB0aGUgbWF4aW11bSBudW1iZXIgb2YgY2hh
bm5lbHMgd2UgY2FuIHN1cHBvcnQuCiAgICAgc3RhdGljIHVuc2lnbmVkIG1heE51bWJlck9mQ2hh
bm5lbHMoKSB7IHJldHVybiBNYXhOdW1iZXJPZkNoYW5uZWxzOyB9Ci0KLSAgICBjbGFzcyBBdXRv
TG9ja2VyIHsKLSAgICBwdWJsaWM6Ci0gICAgICAgIGV4cGxpY2l0IEF1dG9Mb2NrZXIoQXVkaW9D
b250ZXh0JiBjb250ZXh0KQotICAgICAgICAgICAgOiBtX2NvbnRleHQoY29udGV4dCkKLSAgICAg
ICAgewotICAgICAgICAgICAgbV9jb250ZXh0LmxvY2sobV9tdXN0UmVsZWFzZUxvY2spOwotICAg
ICAgICB9Ci0gICAgICAgIAotICAgICAgICB+QXV0b0xvY2tlcigpCi0gICAgICAgIHsKLSAgICAg
ICAgICAgIGlmIChtX211c3RSZWxlYXNlTG9jaykKLSAgICAgICAgICAgICAgICBtX2NvbnRleHQu
dW5sb2NrKCk7Ci0gICAgICAgIH0KLQotICAgIHByaXZhdGU6Ci0gICAgICAgIEF1ZGlvQ29udGV4
dCYgbV9jb250ZXh0OwotICAgICAgICBib29sIG1fbXVzdFJlbGVhc2VMb2NrOwotICAgIH07CiAg
ICAgCiAgICAgLy8gSW4gQXVkaW9Ob2RlOjpkZXJlZigpIGEgdHJ5TG9jaygpIGlzIHVzZWQgZm9y
IGNhbGxpbmcgZmluaXNoRGVyZWYoKSwgYnV0IGlmIGl0IGZhaWxzIGtlZXAgdHJhY2sgaGVyZS4K
LSAgICB2b2lkIGFkZERlZmVycmVkRmluaXNoRGVyZWYoQXVkaW9Ob2RlKik7CisgICAgdm9pZCBh
ZGREZWZlcnJlZEZpbmlzaERlcmVmKEF1ZGlvTm9kZSopIGZpbmFsOwogCiAgICAgLy8gSW4gdGhl
IGF1ZGlvIHRocmVhZCBhdCB0aGUgc3RhcnQgb2YgZWFjaCByZW5kZXIgY3ljbGUsIHdlJ2xsIGNh
bGwgaGFuZGxlRGVmZXJyZWRGaW5pc2hEZXJlZnMoKS4KICAgICB2b2lkIGhhbmRsZURlZmVycmVk
RmluaXNoRGVyZWZzKCk7CiAKICAgICAvLyBPbmx5IGFjY2Vzc2VkIHdoZW4gdGhlIGdyYXBoIGxv
Y2sgaXMgaGVsZC4KLSAgICB2b2lkIG1hcmtTdW1taW5nSnVuY3Rpb25EaXJ0eShBdWRpb1N1bW1p
bmdKdW5jdGlvbiopOwotICAgIHZvaWQgbWFya0F1ZGlvTm9kZU91dHB1dERpcnR5KEF1ZGlvTm9k
ZU91dHB1dCopOworICAgIHZvaWQgbWFya1N1bW1pbmdKdW5jdGlvbkRpcnR5KEF1ZGlvU3VtbWlu
Z0p1bmN0aW9uKikgZmluYWw7CisgICAgdm9pZCBtYXJrQXVkaW9Ob2RlT3V0cHV0RGlydHkoQXVk
aW9Ob2RlT3V0cHV0KikgZmluYWw7CiAKICAgICAvLyBNdXN0IGJlIGNhbGxlZCBvbiBtYWluIHRo
cmVhZC4KLSAgICB2b2lkIHJlbW92ZU1hcmtlZFN1bW1pbmdKdW5jdGlvbihBdWRpb1N1bW1pbmdK
dW5jdGlvbiopOworICAgIHZvaWQgcmVtb3ZlTWFya2VkU3VtbWluZ0p1bmN0aW9uKEF1ZGlvU3Vt
bWluZ0p1bmN0aW9uKikgZmluYWw7CiAKICAgICAvLyBFdmVudFRhcmdldAogICAgIEV2ZW50VGFy
Z2V0SW50ZXJmYWNlIGV2ZW50VGFyZ2V0SW50ZXJmYWNlKCkgY29uc3QgZmluYWwgeyByZXR1cm4g
QXVkaW9Db250ZXh0RXZlbnRUYXJnZXRJbnRlcmZhY2VUeXBlOyB9CiAKLSAgICAvLyBSZWNvbmNp
bGUgcmVmL2RlcmVmIHdoaWNoIGFyZSBkZWZpbmVkIGJvdGggaW4gVGhyZWFkU2FmZVJlZkNvdW50
ZWQgYW5kIEV2ZW50VGFyZ2V0LgotICAgIHVzaW5nIFRocmVhZFNhZmVSZWZDb3VudGVkOjpyZWY7
Ci0gICAgdXNpbmcgVGhyZWFkU2FmZVJlZkNvdW50ZWQ6OmRlcmVmOwotCiAgICAgdm9pZCBzdGFy
dFJlbmRlcmluZygpOwotICAgIHZvaWQgZmluaXNoZWRSZW5kZXJpbmcoYm9vbCBkaWRSZW5kZXJp
bmcpOworICAgIHZvaWQgZmluaXNoZWRSZW5kZXJpbmcoYm9vbCBkaWRSZW5kZXJpbmcpIGZpbmFs
OwogCiAgICAgc3RhdGljIHVuc2lnbmVkIHNfaGFyZHdhcmVDb250ZXh0Q291bnQ7CiAKQEAgLTI3
NCwyNSArMzQ2LDIyIEBAIHB1YmxpYzoKICAgICB2b2lkIGFkZEJlaGF2aW9yUmVzdHJpY3Rpb24o
QmVoYXZpb3JSZXN0cmljdGlvbnMgcmVzdHJpY3Rpb24pIHsgbV9yZXN0cmljdGlvbnMgfD0gcmVz
dHJpY3Rpb247IH0KICAgICB2b2lkIHJlbW92ZUJlaGF2aW9yUmVzdHJpY3Rpb24oQmVoYXZpb3JS
ZXN0cmljdGlvbnMgcmVzdHJpY3Rpb24pIHsgbV9yZXN0cmljdGlvbnMgJj0gfnJlc3RyaWN0aW9u
OyB9CiAKLSAgICB2b2lkIGlzUGxheWluZ0F1ZGlvRGlkQ2hhbmdlKCk7CisgICAgdm9pZCBpc1Bs
YXlpbmdBdWRpb0RpZENoYW5nZSgpIGZpbmFsOwogCi0gICAgdm9pZCBub2RlV2lsbEJlZ2luUGxh
eWJhY2soKTsKKyAgICB2b2lkIG5vZGVXaWxsQmVnaW5QbGF5YmFjaygpIGZpbmFsOwogCiAjaWYg
IVJFTEVBU0VfTE9HX0RJU0FCTEVECiAgICAgY29uc3QgTG9nZ2VyJiBsb2dnZXIoKSBjb25zdCBm
aW5hbCB7IHJldHVybiBtX2xvZ2dlci5nZXQoKTsgfQogICAgIGNvbnN0IHZvaWQqIGxvZ0lkZW50
aWZpZXIoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2xvZ0lkZW50aWZpZXI7IH0KICAgICBXVEZM
b2dDaGFubmVsJiBsb2dDaGFubmVsKCkgY29uc3QgZmluYWw7Ci0gICAgY29uc3Qgdm9pZCogbmV4
dEF1ZGlvTm9kZUxvZ0lkZW50aWZpZXIoKSB7IHJldHVybiBjaGlsZExvZ0lkZW50aWZpZXIobV9s
b2dJZGVudGlmaWVyLCArK21fbmV4dEF1ZGlvTm9kZUlkZW50aWZpZXIpOyB9Ci0gICAgY29uc3Qg
dm9pZCogbmV4dEF1ZGlvUGFyYW1ldGVyTG9nSWRlbnRpZmllcigpIHsgcmV0dXJuIGNoaWxkTG9n
SWRlbnRpZmllcihtX2xvZ0lkZW50aWZpZXIsICsrbV9uZXh0QXVkaW9QYXJhbWV0ZXJJZGVudGlm
aWVyKTsgfQorICAgIGNvbnN0IHZvaWQqIG5leHRBdWRpb05vZGVMb2dJZGVudGlmaWVyKCkgZmlu
YWwgeyByZXR1cm4gY2hpbGRMb2dJZGVudGlmaWVyKG1fbG9nSWRlbnRpZmllciwgKyttX25leHRB
dWRpb05vZGVJZGVudGlmaWVyKTsgfQorICAgIGNvbnN0IHZvaWQqIG5leHRBdWRpb1BhcmFtZXRl
ckxvZ0lkZW50aWZpZXIoKSBmaW5hbCB7IHJldHVybiBjaGlsZExvZ0lkZW50aWZpZXIobV9sb2dJ
ZGVudGlmaWVyLCArK21fbmV4dEF1ZGlvUGFyYW1ldGVySWRlbnRpZmllcik7IH0KICNlbmRpZgog
Ci0gICAgdm9pZCBwb3N0VGFzayhXVEY6OkZ1bmN0aW9uPHZvaWQoKT4mJik7Ci0gICAgYm9vbCBp
c1N0b3BwZWQoKSBjb25zdCB7IHJldHVybiBtX2lzU3RvcFNjaGVkdWxlZDsgfQotICAgIGNvbnN0
IFNlY3VyaXR5T3JpZ2luKiBvcmlnaW4oKSBjb25zdDsKLSAgICB2b2lkIGFkZENvbnNvbGVNZXNz
YWdlKE1lc3NhZ2VTb3VyY2UsIE1lc3NhZ2VMZXZlbCwgY29uc3QgU3RyaW5nJiBtZXNzYWdlKTsK
LQotICAgIC8vIEV2ZW50VGFyZ2V0Ci0gICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0
RXhlY3V0aW9uQ29udGV4dCgpIGNvbnN0IGZpbmFsOworICAgIHZvaWQgcG9zdFRhc2soV1RGOjpG
dW5jdGlvbjx2b2lkKCk+JiYpIGZpbmFsOworICAgIGJvb2wgaXNTdG9wcGVkKCkgY29uc3QgZmlu
YWwgeyByZXR1cm4gbV9pc1N0b3BTY2hlZHVsZWQ7IH0KKyAgICBjb25zdCBTZWN1cml0eU9yaWdp
biogb3JpZ2luKCkgY29uc3QgZmluYWw7CisgICAgdm9pZCBhZGRDb25zb2xlTWVzc2FnZShNZXNz
YWdlU291cmNlLCBNZXNzYWdlTGV2ZWwsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSkgZmluYWw7CiAK
IHByb3RlY3RlZDoKICAgICBleHBsaWNpdCBBdWRpb0NvbnRleHQoRG9jdW1lbnQmKTsKQEAgLTM2
MCw5ICs0MjksOCBAQCBwcml2YXRlOgogCiAgICAgdm9pZCB2aXNpYmlsaXR5U3RhdGVDaGFuZ2Vk
KCkgZmluYWw7CiAKLSAgICAvLyBFdmVudFRhcmdldAotICAgIHZvaWQgcmVmRXZlbnRUYXJnZXQo
KSBvdmVycmlkZSB7IHJlZigpOyB9Ci0gICAgdm9pZCBkZXJlZkV2ZW50VGFyZ2V0KCkgb3ZlcnJp
ZGUgeyBkZXJlZigpOyB9CisgICAgYm9vbCBpc0F1ZGlvQ29udGV4dCgpIGNvbnN0IGZpbmFsIHsg
cmV0dXJuIHRydWU7IH0KKyAgICBib29sIGlzV2ViS2l0QXVkaW9Db250ZXh0KCkgY29uc3QgZmlu
YWwgeyByZXR1cm4gZmFsc2U7IH0KIAogICAgIHZvaWQgaGFuZGxlRGlydHlBdWRpb1N1bW1pbmdK
dW5jdGlvbnMoKTsKICAgICB2b2lkIGhhbmRsZURpcnR5QXVkaW9Ob2RlT3V0cHV0cygpOwpAQCAt
NDQ2LDIxICs1MTQsMTMgQEAgcHJpdmF0ZToKICAgICBSZWZQdHI8UGVuZGluZ0FjdGl2aXR5PEF1
ZGlvQ29udGV4dD4+IG1fcGVuZGluZ0FjdGl2aXR5OwogfTsKIAotLy8gRklYTUU6IEZpbmQgb3V0
IHdoeSB0aGVzZSA9PS8hPSBmdW5jdGlvbnMgYXJlIG5lZWRlZCBhbmQgcmVtb3ZlIHRoZW0gaWYg
cG9zc2libGUuCi0KLWlubGluZSBib29sIG9wZXJhdG9yPT0oY29uc3QgQXVkaW9Db250ZXh0JiBs
aHMsIGNvbnN0IEF1ZGlvQ29udGV4dCYgcmhzKQotewotICAgIHJldHVybiAmbGhzID09ICZyaHM7
Ci19Ci0KLWlubGluZSBib29sIG9wZXJhdG9yIT0oY29uc3QgQXVkaW9Db250ZXh0JiBsaHMsIGNv
bnN0IEF1ZGlvQ29udGV4dCYgcmhzKQotewotICAgIHJldHVybiAmbGhzICE9ICZyaHM7Ci19Ci0K
IGlubGluZSBBdWRpb0NvbnRleHQ6OlN0YXRlIEF1ZGlvQ29udGV4dDo6c3RhdGUoKSBjb25zdAog
ewogICAgIHJldHVybiBtX3N0YXRlOwogfQogCiB9IC8vIFdlYkNvcmUKKworU1BFQ0lBTElaRV9U
WVBFX1RSQUlUU19CRUdJTihXZWJDb3JlOjpBdWRpb0NvbnRleHQpCisgICAgc3RhdGljIGJvb2wg
aXNUeXBlKGNvbnN0IFdlYkNvcmU6OkF1ZGlvQ29udGV4dEJhc2UmIGNvbnRleHQpIHsgcmV0dXJu
IGNvbnRleHQuaXNBdWRpb0NvbnRleHQoKTsgfQorU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19FTkQo
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0NvbnRl
eHQuaWRsIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0NvbnRleHQuaWRs
CmluZGV4IGU3MTE4MzliMzMzLi5mMWQ0OWNhMzY4ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0NvbnRleHQuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0LmlkbApAQCAtMjMsMTkgKzIzLDExIEBACiAg
KiBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KICAqLwogCi1lbnVtIEF1ZGlvQ29udGV4dFN0YXRlIHsKLSAgICAic3VzcGVuZGVkIiwK
LSAgICAicnVubmluZyIsCi0gICAgImludGVycnVwdGVkIiwKLSAgICAiY2xvc2VkIgotfTsKLQog
WwogICAgIEFjdGl2ZURPTU9iamVjdCwKICAgICBDb25kaXRpb25hbD1XRUJfQVVESU8sCi0gICAg
RW5hYmxlZEJ5U2V0dGluZz1XZWJBdWRpbywKKyAgICBFbmFibGVkQnlTZXR0aW5nPU1vZGVyblVu
cHJlZml4ZWRXZWJBdWRpbywKICAgICBFeHBvcnRNYWNybz1XRUJDT1JFX0VYUE9SVCwKLSAgICBJ
bnRlcmZhY2VOYW1lPXdlYmtpdEF1ZGlvQ29udGV4dCwKIF0gaW50ZXJmYWNlIEF1ZGlvQ29udGV4
dCA6IEV2ZW50VGFyZ2V0IHsKICAgICBbQ2FsbFdpdGg9RG9jdW1lbnQsIE1heVRocm93RXhjZXB0
aW9uXSBjb25zdHJ1Y3RvcigpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmF1ZGlvL0F1ZGlvQ29udGV4dFN0YXRlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmF1ZGlvL0F1ZGlvQ29udGV4dFN0YXRlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAuLjE2MDEzMTEwOGZhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJhdWRpby9BdWRpb0NvbnRleHRTdGF0ZS5oCkBAIC0wLDAgKzEsMzIgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqIENvcHlyaWdodCAoQykgMjAxNi0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuICBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUg
SU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OCisgKiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKKyAq
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2VudW0g
Y2xhc3MgQXVkaW9Db250ZXh0U3RhdGUgeyBTdXNwZW5kZWQsIFJ1bm5pbmcsIEludGVycnVwdGVk
LCBDbG9zZWQgfTsKKworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJh
dWRpby9BdWRpb0NvbnRleHRTdGF0ZS5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1
ZGlvL0F1ZGlvQ29udGV4dFN0YXRlLmlkbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMC4uYzhkMDhiZDJiNTYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQ29udGV4dFN0YXRlLmlkbApAQCAtMCwwICsxLDMxIEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDEwLCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICogQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuICBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1Q
TElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OCisgKiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKKyAqIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKK2VudW0gQXVkaW9Db250ZXh0U3RhdGUgeworICAgICJzdXNwZW5kZWQiLAorICAg
ICJydW5uaW5nIiwKKyAgICAiaW50ZXJydXB0ZWQiLAorICAgICJjbG9zZWQiCit9OwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0Rlc3RpbmF0aW9uTm9k
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvRGVzdGluYXRpb25O
b2RlLmNwcAppbmRleCBkOWFiYjk3NzdhOS4uNjc3NjE3ZWNiMzMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9EZXN0aW5hdGlvbk5vZGUuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9EZXN0aW5hdGlvbk5vZGUuY3Bw
CkBAIC0zOSw3ICszOSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAKIFdURl9NQUtFX0lT
T19BTExPQ0FURURfSU1QTChBdWRpb0Rlc3RpbmF0aW9uTm9kZSk7CiAKLUF1ZGlvRGVzdGluYXRp
b25Ob2RlOjpBdWRpb0Rlc3RpbmF0aW9uTm9kZShBdWRpb0NvbnRleHQmIGNvbnRleHQsIGZsb2F0
IHNhbXBsZVJhdGUpCitBdWRpb0Rlc3RpbmF0aW9uTm9kZTo6QXVkaW9EZXN0aW5hdGlvbk5vZGUo
QXVkaW9Db250ZXh0QmFzZSYgY29udGV4dCwgZmxvYXQgc2FtcGxlUmF0ZSkKICAgICA6IEF1ZGlv
Tm9kZShjb250ZXh0LCBzYW1wbGVSYXRlKQogICAgICwgbV9jdXJyZW50U2FtcGxlRnJhbWUoMCkK
ICAgICAsIG1faXNTaWxlbnQodHJ1ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViYXVkaW8vQXVkaW9EZXN0aW5hdGlvbk5vZGUuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViYXVkaW8vQXVkaW9EZXN0aW5hdGlvbk5vZGUuaAppbmRleCA4OTQ4ZjRlZTcwYS4uMzc2
ZjQ2MjcxMmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVk
aW9EZXN0aW5hdGlvbk5vZGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlv
L0F1ZGlvRGVzdGluYXRpb25Ob2RlLmgKQEAgLTM2LDcgKzM2LDcgQEAgY2xhc3MgQXVkaW9Db250
ZXh0OwogY2xhc3MgQXVkaW9EZXN0aW5hdGlvbk5vZGUgOiBwdWJsaWMgQXVkaW9Ob2RlLCBwdWJs
aWMgQXVkaW9JT0NhbGxiYWNrIHsKICAgICBXVEZfTUFLRV9JU09fQUxMT0NBVEVEKEF1ZGlvRGVz
dGluYXRpb25Ob2RlKTsKIHB1YmxpYzoKLSAgICBBdWRpb0Rlc3RpbmF0aW9uTm9kZShBdWRpb0Nv
bnRleHQmLCBmbG9hdCBzYW1wbGVSYXRlKTsKKyAgICBBdWRpb0Rlc3RpbmF0aW9uTm9kZShBdWRp
b0NvbnRleHRCYXNlJiwgZmxvYXQgc2FtcGxlUmF0ZSk7CiAgICAgdmlydHVhbCB+QXVkaW9EZXN0
aW5hdGlvbk5vZGUoKTsKICAgICAKICAgICAvLyBBdWRpb05vZGUgICAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Ob2RlLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Ob2RlLmNwcAppbmRleCA3NjVlY2UzMzJmNi4uZTU1
NDM3NzlkNTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVk
aW9Ob2RlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvTm9k
ZS5jcHAKQEAgLTMzLDYgKzMzLDcgQEAKICNpbmNsdWRlICJBdWRpb05vZGVPdXRwdXQuaCIKICNp
bmNsdWRlICJBdWRpb1BhcmFtLmgiCiAjaW5jbHVkZSAiTG9nZ2luZy5oIgorI2luY2x1ZGUgIldl
YktpdEF1ZGlvQ29udGV4dC5oIgogI2luY2x1ZGUgPHd0Zi9BdG9taWNzLmg+CiAjaW5jbHVkZSA8
d3RmL0lzb01hbGxvY0lubGluZXMuaD4KICNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgpAQCAt
OTUsNyArOTYsNyBAQCBTdHJpbmcgY29udmVydEVudW1lcmF0aW9uVG9TdHJpbmcoQXVkaW9Ob2Rl
OjpOb2RlVHlwZSBlbnVtZXJhdGlvblZhbHVlKQogICAgIHJldHVybiB2YWx1ZXNbc3RhdGljX2Nh
c3Q8c2l6ZV90PihlbnVtZXJhdGlvblZhbHVlKV07CiB9CiAKLUF1ZGlvTm9kZTo6QXVkaW9Ob2Rl
KEF1ZGlvQ29udGV4dCYgY29udGV4dCwgZmxvYXQgc2FtcGxlUmF0ZSkKK0F1ZGlvTm9kZTo6QXVk
aW9Ob2RlKEF1ZGlvQ29udGV4dEJhc2UmIGNvbnRleHQsIGZsb2F0IHNhbXBsZVJhdGUpCiAgICAg
OiBtX2lzSW5pdGlhbGl6ZWQoZmFsc2UpCiAgICAgLCBtX25vZGVUeXBlKE5vZGVUeXBlVW5rbm93
bikKICAgICAsIG1fY29udGV4dChjb250ZXh0KQpAQCAtMTk0LDcgKzE5NSw3IEBAIEF1ZGlvTm9k
ZU91dHB1dCogQXVkaW9Ob2RlOjpvdXRwdXQodW5zaWduZWQgaSkKIEV4Y2VwdGlvbk9yPHZvaWQ+
IEF1ZGlvTm9kZTo6Y29ubmVjdChBdWRpb05vZGUmIGRlc3RpbmF0aW9uLCB1bnNpZ25lZCBvdXRw
dXRJbmRleCwgdW5zaWduZWQgaW5wdXRJbmRleCkKIHsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFk
KCkpOwotICAgIEF1ZGlvQ29udGV4dDo6QXV0b0xvY2tlciBsb2NrZXIoY29udGV4dCgpKTsKKyAg
ICBBdWRpb0NvbnRleHRCYXNlOjpBdXRvTG9ja2VyIGxvY2tlcihjb250ZXh0KCkpOwogCiAgICAg
QUxXQVlTX0xPRyhMT0dJREVOVElGSUVSLCBkZXN0aW5hdGlvbi5ub2RlVHlwZSgpLCAiLCBvdXRw
dXQgPSAiLCBvdXRwdXRJbmRleCwgIiwgaW5wdXQgPSAiLCBpbnB1dEluZGV4KTsKICAgICAKQEAg
LTIwNSw3ICsyMDYsNyBAQCBFeGNlcHRpb25Pcjx2b2lkPiBBdWRpb05vZGU6OmNvbm5lY3QoQXVk
aW9Ob2RlJiBkZXN0aW5hdGlvbiwgdW5zaWduZWQgb3V0cHV0SW5kZQogICAgIGlmIChpbnB1dElu
ZGV4ID49IGRlc3RpbmF0aW9uLm51bWJlck9mSW5wdXRzKCkpCiAgICAgICAgIHJldHVybiBFeGNl
cHRpb24geyBJbmRleFNpemVFcnJvciB9OwogCi0gICAgaWYgKGNvbnRleHQoKSAhPSBkZXN0aW5h
dGlvbi5jb250ZXh0KCkpCisgICAgaWYgKCZjb250ZXh0KCkgIT0gJmRlc3RpbmF0aW9uLmNvbnRl
eHQoKSkKICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IFN5bnRheEVycm9yIH07CiAKICAgICBh
dXRvKiBpbnB1dCA9IGRlc3RpbmF0aW9uLmlucHV0KGlucHV0SW5kZXgpOwpAQCAtMjIwLDcgKzIy
MSw3IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IEF1ZGlvTm9kZTo6Y29ubmVjdChBdWRpb05vZGUmIGRl
c3RpbmF0aW9uLCB1bnNpZ25lZCBvdXRwdXRJbmRlCiAKIEV4Y2VwdGlvbk9yPHZvaWQ+IEF1ZGlv
Tm9kZTo6Y29ubmVjdChBdWRpb1BhcmFtJiBwYXJhbSwgdW5zaWduZWQgb3V0cHV0SW5kZXgpCiB7
Ci0gICAgQXVkaW9Db250ZXh0OjpBdXRvTG9ja2VyIGxvY2tlcihjb250ZXh0KCkpOworICAgIEF1
ZGlvQ29udGV4dEJhc2U6OkF1dG9Mb2NrZXIgbG9ja2VyKGNvbnRleHQoKSk7CiAKICAgICBBU1NF
UlQoaXNNYWluVGhyZWFkKCkpOwogCkBAIC0yMjksNyArMjMwLDcgQEAgRXhjZXB0aW9uT3I8dm9p
ZD4gQXVkaW9Ob2RlOjpjb25uZWN0KEF1ZGlvUGFyYW0mIHBhcmFtLCB1bnNpZ25lZCBvdXRwdXRJ
bmRleCkKICAgICBpZiAob3V0cHV0SW5kZXggPj0gbnVtYmVyT2ZPdXRwdXRzKCkpCiAgICAgICAg
IHJldHVybiBFeGNlcHRpb24geyBJbmRleFNpemVFcnJvciB9OwogCi0gICAgaWYgKGNvbnRleHQo
KSAhPSBwYXJhbS5jb250ZXh0KCkpCisgICAgaWYgKCZjb250ZXh0KCkgIT0gJnBhcmFtLmNvbnRl
eHQoKSkKICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IFN5bnRheEVycm9yIH07CiAKICAgICBh
dXRvKiBvdXRwdXQgPSB0aGlzLT5vdXRwdXQob3V0cHV0SW5kZXgpOwpAQCAtMjQxLDcgKzI0Miw3
IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IEF1ZGlvTm9kZTo6Y29ubmVjdChBdWRpb1BhcmFtJiBwYXJh
bSwgdW5zaWduZWQgb3V0cHV0SW5kZXgpCiBFeGNlcHRpb25Pcjx2b2lkPiBBdWRpb05vZGU6OmRp
c2Nvbm5lY3QodW5zaWduZWQgb3V0cHV0SW5kZXgpCiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVh
ZCgpKTsKLSAgICBBdWRpb0NvbnRleHQ6OkF1dG9Mb2NrZXIgbG9ja2VyKGNvbnRleHQoKSk7Cisg
ICAgQXVkaW9Db250ZXh0QmFzZTo6QXV0b0xvY2tlciBsb2NrZXIoY29udGV4dCgpKTsKIAogICAg
IC8vIFNhbml0eSBjaGVjayBpbnB1dCBhbmQgb3V0cHV0IGluZGljZXMuCiAgICAgaWYgKG91dHB1
dEluZGV4ID49IG51bWJlck9mT3V0cHV0cygpKQpAQCAtMjYzLDcgKzI2NCw3IEBAIHVuc2lnbmVk
IEF1ZGlvTm9kZTo6Y2hhbm5lbENvdW50KCkKIEV4Y2VwdGlvbk9yPHZvaWQ+IEF1ZGlvTm9kZTo6
c2V0Q2hhbm5lbENvdW50KHVuc2lnbmVkIGNoYW5uZWxDb3VudCkKIHsKICAgICBBU1NFUlQoaXNN
YWluVGhyZWFkKCkpOwotICAgIEF1ZGlvQ29udGV4dDo6QXV0b0xvY2tlciBsb2NrZXIoY29udGV4
dCgpKTsKKyAgICBBdWRpb0NvbnRleHRCYXNlOjpBdXRvTG9ja2VyIGxvY2tlcihjb250ZXh0KCkp
OwogCiAgICAgQUxXQVlTX0xPRyhMT0dJREVOVElGSUVSLCBjaGFubmVsQ291bnQpOwogICAgIApA
QCAtMjk2LDcgKzI5Nyw3IEBAIFN0cmluZyBBdWRpb05vZGU6OmNoYW5uZWxDb3VudE1vZGUoKQog
RXhjZXB0aW9uT3I8dm9pZD4gQXVkaW9Ob2RlOjpzZXRDaGFubmVsQ291bnRNb2RlKGNvbnN0IFN0
cmluZyYgbW9kZSkKIHsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwotICAgIEF1ZGlvQ29u
dGV4dDo6QXV0b0xvY2tlciBsb2NrZXIoY29udGV4dCgpKTsKKyAgICBBdWRpb0NvbnRleHRCYXNl
OjpBdXRvTG9ja2VyIGxvY2tlcihjb250ZXh0KCkpOwogCiAgICAgQUxXQVlTX0xPRyhMT0dJREVO
VElGSUVSLCBtb2RlKTsKICAgICAKQEAgLTMzMiw3ICszMzMsNyBAQCBTdHJpbmcgQXVkaW9Ob2Rl
OjpjaGFubmVsSW50ZXJwcmV0YXRpb24oKQogRXhjZXB0aW9uT3I8dm9pZD4gQXVkaW9Ob2RlOjpz
ZXRDaGFubmVsSW50ZXJwcmV0YXRpb24oY29uc3QgU3RyaW5nJiBpbnRlcnByZXRhdGlvbikKIHsK
ICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwotICAgIEF1ZGlvQ29udGV4dDo6QXV0b0xvY2tl
ciBsb2NrZXIoY29udGV4dCgpKTsKKyAgICBBdWRpb0NvbnRleHRCYXNlOjpBdXRvTG9ja2VyIGxv
Y2tlcihjb250ZXh0KCkpOwogCiAgICAgQUxXQVlTX0xPRyhMT0dJREVOVElGSUVSLCBpbnRlcnBy
ZXRhdGlvbik7CiAgICAgCkBAIC00MzcsNyArNDM4LDcgQEAgdm9pZCBBdWRpb05vZGU6OmVuYWJs
ZU91dHB1dHNJZk5lY2Vzc2FyeSgpCiB7CiAgICAgaWYgKG1faXNEaXNhYmxlZCAmJiBtX2Nvbm5l
Y3Rpb25SZWZDb3VudCA+IDApIHsKICAgICAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKLSAg
ICAgICAgQXVkaW9Db250ZXh0OjpBdXRvTG9ja2VyIGxvY2tlcihjb250ZXh0KCkpOworICAgICAg
ICBBdWRpb0NvbnRleHRCYXNlOjpBdXRvTG9ja2VyIGxvY2tlcihjb250ZXh0KCkpOwogCiAgICAg
ICAgIG1faXNEaXNhYmxlZCA9IGZhbHNlOwogICAgICAgICBmb3IgKGF1dG8mIG91dHB1dCA6IG1f
b3V0cHV0cykKQEAgLTUwMSw3ICs1MDIsNyBAQCB2b2lkIEF1ZGlvTm9kZTo6ZGVyZWYoUmVmVHlw
ZSByZWZUeXBlKQogICAgIC8vIEluIHRoZSBjYXNlIG9mIHRoZSBhdWRpbyB0aHJlYWQsIHdlIG11
c3QgdXNlIGEgdHJ5TG9jayB0byBhdm9pZCBnbGl0Y2hlcy4KICAgICBib29sIGhhc0xvY2sgPSBm
YWxzZTsKICAgICBib29sIG11c3RSZWxlYXNlTG9jayA9IGZhbHNlOwotICAgIAorCiAgICAgaWYg
KGNvbnRleHQoKS5pc0F1ZGlvVGhyZWFkKCkpIHsKICAgICAgICAgLy8gUmVhbC10aW1lIGF1ZGlv
IHRocmVhZCBtdXN0IG5vdCBjb250ZW5kIGxvY2sgKHRvIGF2b2lkIGdsaXRjaGVzKS4KICAgICAg
ICAgaGFzTG9jayA9IGNvbnRleHQoKS50cnlMb2NrKG11c3RSZWxlYXNlTG9jayk7CkBAIC01MzAs
NiArNTMxLDEzIEBAIHZvaWQgQXVkaW9Ob2RlOjpkZXJlZihSZWZUeXBlIHJlZlR5cGUpCiAgICAg
ICAgIGNvbnRleHQoKS5kZWxldGVNYXJrZWROb2RlcygpOwogfQogCitWYXJpYW50PFJlZlB0cjxB
dWRpb0NvbnRleHQ+LCBSZWZQdHI8V2ViS2l0QXVkaW9Db250ZXh0Pj4gQXVkaW9Ob2RlOjpjb250
ZXh0Rm9yQmluZGluZ3MoKSBjb25zdAoreworICAgIGlmIChtX2NvbnRleHQtPmlzV2ViS2l0QXVk
aW9Db250ZXh0KCkpCisgICAgICAgIHJldHVybiBtYWtlUmVmUHRyKHN0YXRpY19jYXN0PFdlYktp
dEF1ZGlvQ29udGV4dCY+KG1fY29udGV4dC5nZXQoKSkpOworICAgIHJldHVybiBtYWtlUmVmUHRy
KHN0YXRpY19jYXN0PEF1ZGlvQ29udGV4dCY+KG1fY29udGV4dC5nZXQoKSkpOworfQorCiB2b2lk
IEF1ZGlvTm9kZTo6ZmluaXNoRGVyZWYoUmVmVHlwZSByZWZUeXBlKQogewogICAgIEFTU0VSVChj
b250ZXh0KCkuaXNHcmFwaE93bmVyKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJhdWRpby9BdWRpb05vZGUuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVk
aW8vQXVkaW9Ob2RlLmgKaW5kZXggNDIxMDEwMDZjYzcuLmE5ODgxYmQ0YjhkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvTm9kZS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Ob2RlLmgKQEAgLTI5LDE1ICsyOSwxOCBA
QAogI2luY2x1ZGUgIkV4Y2VwdGlvbk9yLmgiCiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KICNp
bmNsdWRlIDx3dGYvTG9nZ2VySGVscGVyLmg+CisjaW5jbHVkZSA8d3RmL1ZhcmlhbnQuaD4KIAog
I2RlZmluZSBERUJVR19BVURJT05PREVfUkVGRVJFTkNFUyAwCiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAogY2xhc3MgQXVkaW9Db250ZXh0OworY2xhc3MgQXVkaW9Db250ZXh0QmFzZTsKIGNsYXNz
IEF1ZGlvTm9kZUlucHV0OwogY2xhc3MgQXVkaW9Ob2RlT3V0cHV0OwogY2xhc3MgQXVkaW9QYXJh
bTsKK2NsYXNzIFdlYktpdEF1ZGlvQ29udGV4dDsKIAogLy8gQW4gQXVkaW9Ob2RlIGlzIHRoZSBi
YXNpYyBidWlsZGluZyBibG9jayBmb3IgaGFuZGxpbmcgYXVkaW8gd2l0aGluIGFuIEF1ZGlvQ29u
dGV4dC4KIC8vIEl0IG1heSBiZSBhbiBhdWRpbyBzb3VyY2UsIGFuIGludGVybWVkaWF0ZSBwcm9j
ZXNzaW5nIG1vZHVsZSwgb3IgYW4gYXVkaW8gZGVzdGluYXRpb24uCkBAIC01NiwxMSArNTksMTMg
QEAgY2xhc3MgQXVkaW9Ob2RlCiBwdWJsaWM6CiAgICAgZW51bSB7IFByb2Nlc3NpbmdTaXplSW5G
cmFtZXMgPSAxMjggfTsKIAotICAgIEF1ZGlvTm9kZShBdWRpb0NvbnRleHQmLCBmbG9hdCBzYW1w
bGVSYXRlKTsKKyAgICBBdWRpb05vZGUoQXVkaW9Db250ZXh0QmFzZSYsIGZsb2F0IHNhbXBsZVJh
dGUpOwogICAgIHZpcnR1YWwgfkF1ZGlvTm9kZSgpOwogCi0gICAgQXVkaW9Db250ZXh0JiBjb250
ZXh0KCkgeyByZXR1cm4gbV9jb250ZXh0LmdldCgpOyB9Ci0gICAgY29uc3QgQXVkaW9Db250ZXh0
JiBjb250ZXh0KCkgY29uc3QgeyByZXR1cm4gbV9jb250ZXh0LmdldCgpOyB9CisgICAgQXVkaW9D
b250ZXh0QmFzZSYgY29udGV4dCgpIHsgcmV0dXJuIG1fY29udGV4dC5nZXQoKTsgfQorICAgIGNv
bnN0IEF1ZGlvQ29udGV4dEJhc2UmIGNvbnRleHQoKSBjb25zdCB7IHJldHVybiBtX2NvbnRleHQu
Z2V0KCk7IH0KKworICAgIFZhcmlhbnQ8UmVmUHRyPEF1ZGlvQ29udGV4dD4sIFJlZlB0cjxXZWJL
aXRBdWRpb0NvbnRleHQ+PiBjb250ZXh0Rm9yQmluZGluZ3MoKSBjb25zdDsKIAogICAgIGVudW0g
Tm9kZVR5cGUgewogICAgICAgICBOb2RlVHlwZVVua25vd24sCkBAIC0yMDksNyArMjE0LDcgQEAg
cHJpdmF0ZToKIAogICAgIHZvbGF0aWxlIGJvb2wgbV9pc0luaXRpYWxpemVkOwogICAgIE5vZGVU
eXBlIG1fbm9kZVR5cGU7Ci0gICAgUmVmPEF1ZGlvQ29udGV4dD4gbV9jb250ZXh0OworICAgIFJl
ZjxBdWRpb0NvbnRleHRCYXNlPiBtX2NvbnRleHQ7CiAgICAgZmxvYXQgbV9zYW1wbGVSYXRlOwog
ICAgIFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8QXVkaW9Ob2RlSW5wdXQ+PiBtX2lucHV0czsKICAg
ICBWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPEF1ZGlvTm9kZU91dHB1dD4+IG1fb3V0cHV0czsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Ob2RlLmlkbCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Ob2RlLmlkbAppbmRleCA3MGZl
YzhjODE0NS4uNzE5MzljODMxNzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViYXVkaW8vQXVkaW9Ob2RlLmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1
ZGlvL0F1ZGlvTm9kZS5pZGwKQEAgLTI1LDcgKzI1LDcgQEAKIFsKICAgICBDb25kaXRpb25hbD1X
RUJfQVVESU8sCiBdIGludGVyZmFjZSBBdWRpb05vZGUgOiBFdmVudFRhcmdldCB7Ci0gICAgcmVh
ZG9ubHkgYXR0cmlidXRlIEF1ZGlvQ29udGV4dCBjb250ZXh0OworICAgIFtJbXBsZW1lbnRlZEFz
PWNvbnRleHRGb3JCaW5kaW5nc10gcmVhZG9ubHkgYXR0cmlidXRlIChBdWRpb0NvbnRleHQgb3Ig
V2ViS2l0QXVkaW9Db250ZXh0KSBjb250ZXh0OwogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSB1bnNp
Z25lZCBsb25nIG51bWJlck9mSW5wdXRzOwogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSB1bnNpZ25l
ZCBsb25nIG51bWJlck9mT3V0cHV0czsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJhdWRpby9BdWRpb05vZGVPdXRwdXQuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViYXVkaW8vQXVkaW9Ob2RlT3V0cHV0LmgKaW5kZXggNTBhOTVlZTIwNWMuLmYwODk4MzYzNWYz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvTm9kZU91
dHB1dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Ob2RlT3V0
cHV0LmgKQEAgLTQ3LDcgKzQ3LDcgQEAgcHVibGljOgogCiAgICAgLy8gQ2FuIGJlIGNhbGxlZCBm
cm9tIGFueSB0aHJlYWQuCiAgICAgQXVkaW9Ob2RlKiBub2RlKCkgY29uc3QgeyByZXR1cm4gbV9u
b2RlOyB9Ci0gICAgQXVkaW9Db250ZXh0JiBjb250ZXh0KCkgeyByZXR1cm4gbV9ub2RlLT5jb250
ZXh0KCk7IH0KKyAgICBBdWRpb0NvbnRleHRCYXNlJiBjb250ZXh0KCkgeyByZXR1cm4gbV9ub2Rl
LT5jb250ZXh0KCk7IH0KICAgICAKICAgICAvLyBDYXVzZXMgb3VyIEF1ZGlvTm9kZSB0byBwcm9j
ZXNzIGlmIGl0IGhhc24ndCBhbHJlYWR5IGZvciB0aGlzIHJlbmRlciBxdWFudHVtLgogICAgIC8v
IEl0IHJldHVybnMgdGhlIGJ1cyBjb250YWluaW5nIHRoZSBwcm9jZXNzZWQgYXVkaW8gZm9yIHRo
aXMgb3V0cHV0LCByZXR1cm5pbmcgaW5QbGFjZUJ1cyBpZiBpbi1wbGFjZSBwcm9jZXNzaW5nIHdh
cyBwb3NzaWJsZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8v
QXVkaW9QYXJhbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvUGFy
YW0uY3BwCmluZGV4IDI5MzQ1NjQ0NWNjLi5kNDcwYmY3NDZlZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1BhcmFtLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvUGFyYW0uY3BwCkBAIC00MSw3ICs0MSw3IEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIGNvbnN0IGRvdWJsZSBBdWRpb1BhcmFtOjpEZWZhdWx0U21vb3Ro
aW5nQ29uc3RhbnQgPSAwLjA1OwogY29uc3QgZG91YmxlIEF1ZGlvUGFyYW06OlNuYXBUaHJlc2hv
bGQgPSAwLjAwMTsKIAotQXVkaW9QYXJhbTo6QXVkaW9QYXJhbShBdWRpb0NvbnRleHQmIGNvbnRl
eHQsIGNvbnN0IFN0cmluZyYgbmFtZSwgZG91YmxlIGRlZmF1bHRWYWx1ZSwgZG91YmxlIG1pblZh
bHVlLCBkb3VibGUgbWF4VmFsdWUsIHVuc2lnbmVkIHVuaXRzKQorQXVkaW9QYXJhbTo6QXVkaW9Q
YXJhbShBdWRpb0NvbnRleHRCYXNlJiBjb250ZXh0LCBjb25zdCBTdHJpbmcmIG5hbWUsIGRvdWJs
ZSBkZWZhdWx0VmFsdWUsIGRvdWJsZSBtaW5WYWx1ZSwgZG91YmxlIG1heFZhbHVlLCB1bnNpZ25l
ZCB1bml0cykKICAgICA6IEF1ZGlvU3VtbWluZ0p1bmN0aW9uKGNvbnRleHQpCiAgICAgLCBtX25h
bWUobmFtZSkKICAgICAsIG1fdmFsdWUoZGVmYXVsdFZhbHVlKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1BhcmFtLmggYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmF1ZGlvL0F1ZGlvUGFyYW0uaAppbmRleCAyMjZjOTU3ZTcwNi4uMTZhMjEwOTUw
NDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9QYXJh
bS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9QYXJhbS5oCkBA
IC0zMSw2ICszMSw3IEBACiAjaW5jbHVkZSAiQXVkaW9Db250ZXh0LmgiCiAjaW5jbHVkZSAiQXVk
aW9QYXJhbVRpbWVsaW5lLmgiCiAjaW5jbHVkZSAiQXVkaW9TdW1taW5nSnVuY3Rpb24uaCIKKyNp
bmNsdWRlICJXZWJLaXRBdWRpb0NvbnRleHQuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9G
bG9hdDMyQXJyYXkuaD4KICNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KICNpbmNsdWRlIDx3dGYvTG9n
Z2VySGVscGVyLmg+CkBAIC01Miw3ICs1Myw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgY29uc3Qg
ZG91YmxlIERlZmF1bHRTbW9vdGhpbmdDb25zdGFudDsKICAgICBzdGF0aWMgY29uc3QgZG91Ymxl
IFNuYXBUaHJlc2hvbGQ7CiAKLSAgICBzdGF0aWMgUmVmPEF1ZGlvUGFyYW0+IGNyZWF0ZShBdWRp
b0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IFN0cmluZyYgbmFtZSwgZG91YmxlIGRlZmF1bHRWYWx1
ZSwgZG91YmxlIG1pblZhbHVlLCBkb3VibGUgbWF4VmFsdWUsIHVuc2lnbmVkIHVuaXRzID0gMCkK
KyAgICBzdGF0aWMgUmVmPEF1ZGlvUGFyYW0+IGNyZWF0ZShBdWRpb0NvbnRleHRCYXNlJiBjb250
ZXh0LCBjb25zdCBTdHJpbmcmIG5hbWUsIGRvdWJsZSBkZWZhdWx0VmFsdWUsIGRvdWJsZSBtaW5W
YWx1ZSwgZG91YmxlIG1heFZhbHVlLCB1bnNpZ25lZCB1bml0cyA9IDApCiAgICAgewogICAgICAg
ICByZXR1cm4gYWRvcHRSZWYoKm5ldyBBdWRpb1BhcmFtKGNvbnRleHQsIG5hbWUsIGRlZmF1bHRW
YWx1ZSwgbWluVmFsdWUsIG1heFZhbHVlLCB1bml0cykpOwogICAgIH0KQEAgLTEwOCw3ICsxMDks
NyBAQCBwdWJsaWM6CiAgICAgdm9pZCBkaXNjb25uZWN0KEF1ZGlvTm9kZU91dHB1dCopOwogCiBw
cm90ZWN0ZWQ6Ci0gICAgQXVkaW9QYXJhbShBdWRpb0NvbnRleHQmLCBjb25zdCBTdHJpbmcmLCBk
b3VibGUgZGVmYXVsdFZhbHVlLCBkb3VibGUgbWluVmFsdWUsIGRvdWJsZSBtYXhWYWx1ZSwgdW5z
aWduZWQgdW5pdHMgPSAwKTsKKyAgICBBdWRpb1BhcmFtKEF1ZGlvQ29udGV4dEJhc2UmLCBjb25z
dCBTdHJpbmcmLCBkb3VibGUgZGVmYXVsdFZhbHVlLCBkb3VibGUgbWluVmFsdWUsIGRvdWJsZSBt
YXhWYWx1ZSwgdW5zaWduZWQgdW5pdHMgPSAwKTsKIAogcHJpdmF0ZToKICAgICAvLyBzYW1wbGVB
Y2N1cmF0ZSBjb3JyZXNwb25kcyB0byBhLXJhdGUgKGF1ZGlvIHJhdGUpIHZzLiBrLXJhdGUgaW4g
dGhlIFdlYiBBdWRpbyBzcGVjaWZpY2F0aW9uLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJhdWRpby9BdWRpb1BhcmFtVGltZWxpbmUuY3BwIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJhdWRpby9BdWRpb1BhcmFtVGltZWxpbmUuY3BwCmluZGV4IDJiNTk1NzBiZjZl
Li42YzQxMzAxZDhhZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRp
by9BdWRpb1BhcmFtVGltZWxpbmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
YXVkaW8vQXVkaW9QYXJhbVRpbWVsaW5lLmNwcApAQCAtMTEzLDcgKzExMyw3IEBAIHZvaWQgQXVk
aW9QYXJhbVRpbWVsaW5lOjpjYW5jZWxTY2hlZHVsZWRWYWx1ZXMoZmxvYXQgc3RhcnRUaW1lKQog
ICAgIH0KIH0KIAotZmxvYXQgQXVkaW9QYXJhbVRpbWVsaW5lOjp2YWx1ZUZvckNvbnRleHRUaW1l
KEF1ZGlvQ29udGV4dCYgY29udGV4dCwgZmxvYXQgZGVmYXVsdFZhbHVlLCBib29sJiBoYXNWYWx1
ZSkKK2Zsb2F0IEF1ZGlvUGFyYW1UaW1lbGluZTo6dmFsdWVGb3JDb250ZXh0VGltZShBdWRpb0Nv
bnRleHRCYXNlJiBjb250ZXh0LCBmbG9hdCBkZWZhdWx0VmFsdWUsIGJvb2wmIGhhc1ZhbHVlKQog
ewogICAgIHsKICAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxMb2NrPiBsb2NrKG1fZXZlbnRzTXV0
ZXgsIHN0ZDo6dHJ5X3RvX2xvY2spOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJhdWRpby9BdWRpb1BhcmFtVGltZWxpbmUuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViYXVkaW8vQXVkaW9QYXJhbVRpbWVsaW5lLmgKaW5kZXggN2MxMDk5OTU2Y2UuLmE1ODY4YmRl
ZTE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvUGFy
YW1UaW1lbGluZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Q
YXJhbVRpbWVsaW5lLmgKQEAgLTUyLDcgKzUyLDcgQEAgcHVibGljOgogCiAgICAgLy8gaGFzVmFs
dWUgaXMgc2V0IHRvIHRydWUgaWYgYSB2YWxpZCB0aW1lbGluZSB2YWx1ZSBpcyByZXR1cm5lZC4K
ICAgICAvLyBvdGhlcndpc2UgZGVmYXVsdFZhbHVlIGlzIHJldHVybmVkLgotICAgIGZsb2F0IHZh
bHVlRm9yQ29udGV4dFRpbWUoQXVkaW9Db250ZXh0JiwgZmxvYXQgZGVmYXVsdFZhbHVlLCBib29s
JiBoYXNWYWx1ZSk7CisgICAgZmxvYXQgdmFsdWVGb3JDb250ZXh0VGltZShBdWRpb0NvbnRleHRC
YXNlJiwgZmxvYXQgZGVmYXVsdFZhbHVlLCBib29sJiBoYXNWYWx1ZSk7CiAKICAgICAvLyBHaXZl
biB0aGUgdGltZSByYW5nZSwgY2FsY3VsYXRlcyBwYXJhbWV0ZXIgdmFsdWVzIGludG8gdGhlIHZh
bHVlcyBidWZmZXIKICAgICAvLyBhbmQgcmV0dXJucyB0aGUgbGFzdCBwYXJhbWV0ZXIgdmFsdWUg
Y2FsY3VsYXRlZCBmb3IgInZhbHVlcyIgb3IgdGhlIGRlZmF1bHRWYWx1ZSBpZiBub25lIHdlcmUg
Y2FsY3VsYXRlZC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8v
QXVkaW9TY2hlZHVsZWRTb3VyY2VOb2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
YXVkaW8vQXVkaW9TY2hlZHVsZWRTb3VyY2VOb2RlLmNwcAppbmRleCAwZjcyNjc2ZmM3NC4uN2My
ODIzN2EwYmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVk
aW9TY2hlZHVsZWRTb3VyY2VOb2RlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmF1ZGlvL0F1ZGlvU2NoZWR1bGVkU291cmNlTm9kZS5jcHAKQEAgLTQ5LDcgKzQ5LDcgQEAgV1RG
X01BS0VfSVNPX0FMTE9DQVRFRF9JTVBMKEF1ZGlvU2NoZWR1bGVkU291cmNlTm9kZSk7CiAKIGNv
bnN0IGRvdWJsZSBBdWRpb1NjaGVkdWxlZFNvdXJjZU5vZGU6OlVua25vd25UaW1lID0gLTE7CiAK
LUF1ZGlvU2NoZWR1bGVkU291cmNlTm9kZTo6QXVkaW9TY2hlZHVsZWRTb3VyY2VOb2RlKEF1ZGlv
Q29udGV4dCYgY29udGV4dCwgZmxvYXQgc2FtcGxlUmF0ZSkKK0F1ZGlvU2NoZWR1bGVkU291cmNl
Tm9kZTo6QXVkaW9TY2hlZHVsZWRTb3VyY2VOb2RlKEF1ZGlvQ29udGV4dEJhc2UmIGNvbnRleHQs
IGZsb2F0IHNhbXBsZVJhdGUpCiAgICAgOiBBdWRpb05vZGUoY29udGV4dCwgc2FtcGxlUmF0ZSkK
ICAgICAsIEFjdGl2ZURPTU9iamVjdChjb250ZXh0LnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSkK
ICAgICAsIG1fZW5kVGltZShVbmtub3duVGltZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViYXVkaW8vQXVkaW9TY2hlZHVsZWRTb3VyY2VOb2RlLmggYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvU2NoZWR1bGVkU291cmNlTm9kZS5oCmluZGV4IDhj
YWRiZTEwYWZkLi5iNGQ5NTg4MGMxZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJhdWRpby9BdWRpb1NjaGVkdWxlZFNvdXJjZU5vZGUuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvU2NoZWR1bGVkU291cmNlTm9kZS5oCkBAIC01Myw3ICs1
Myw3IEBAIHB1YmxpYzoKICAgICAgICAgRklOSVNIRURfU1RBVEUgPSAzCiAgICAgfTsKICAgICAK
LSAgICBBdWRpb1NjaGVkdWxlZFNvdXJjZU5vZGUoQXVkaW9Db250ZXh0JiwgZmxvYXQgc2FtcGxl
UmF0ZSk7CisgICAgQXVkaW9TY2hlZHVsZWRTb3VyY2VOb2RlKEF1ZGlvQ29udGV4dEJhc2UmLCBm
bG9hdCBzYW1wbGVSYXRlKTsKIAogICAgIEV4Y2VwdGlvbk9yPHZvaWQ+IHN0YXJ0TGF0ZXIoZG91
YmxlIHdoZW4pOwogICAgIEV4Y2VwdGlvbk9yPHZvaWQ+IHN0b3BMYXRlcihkb3VibGUgd2hlbik7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvU3VtbWlu
Z0p1bmN0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9TdW1t
aW5nSnVuY3Rpb24uY3BwCmluZGV4IGVlNjAwYTYyOWExLi5kZDY0ZmQzZWE4MSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1N1bW1pbmdKdW5jdGlvbi5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1N1bW1pbmdKdW5j
dGlvbi5jcHAKQEAgLTM0LDcgKzM0LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1BdWRp
b1N1bW1pbmdKdW5jdGlvbjo6QXVkaW9TdW1taW5nSnVuY3Rpb24oQXVkaW9Db250ZXh0JiBjb250
ZXh0KQorQXVkaW9TdW1taW5nSnVuY3Rpb246OkF1ZGlvU3VtbWluZ0p1bmN0aW9uKEF1ZGlvQ29u
dGV4dEJhc2UmIGNvbnRleHQpCiAgICAgOiBtX2NvbnRleHQoY29udGV4dCkKICAgICAsIG1fcmVu
ZGVyaW5nU3RhdGVOZWVkVXBkYXRpbmcoZmFsc2UpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvU3VtbWluZ0p1bmN0aW9uLmggYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvU3VtbWluZ0p1bmN0aW9uLmgKaW5kZXggYzk0ZmY2
ZDZhNWEuLjRjYmY4YWU5ZmI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmF1ZGlvL0F1ZGlvU3VtbWluZ0p1bmN0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJhdWRpby9BdWRpb1N1bW1pbmdKdW5jdGlvbi5oCkBAIC0zMCwxOCArMzAsMTggQEAKIAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBBdWRpb0NvbnRleHQ7CitjbGFzcyBBdWRpb0Nv
bnRleHRCYXNlOwogY2xhc3MgQXVkaW9Ob2RlT3V0cHV0OwogCiAvLyBBbiBBdWRpb1N1bW1pbmdK
dW5jdGlvbiByZXByZXNlbnRzIGEgcG9pbnQgd2hlcmUgemVybywgb25lLCBvciBtb3JlIEF1ZGlv
Tm9kZU91dHB1dHMgY29ubmVjdC4KIAogY2xhc3MgQXVkaW9TdW1taW5nSnVuY3Rpb24gewogcHVi
bGljOgotICAgIGV4cGxpY2l0IEF1ZGlvU3VtbWluZ0p1bmN0aW9uKEF1ZGlvQ29udGV4dCYpOwor
ICAgIGV4cGxpY2l0IEF1ZGlvU3VtbWluZ0p1bmN0aW9uKEF1ZGlvQ29udGV4dEJhc2UmKTsKICAg
ICB2aXJ0dWFsIH5BdWRpb1N1bW1pbmdKdW5jdGlvbigpOwogCiAgICAgLy8gQ2FuIGJlIGNhbGxl
ZCBmcm9tIGFueSB0aHJlYWQuCi0gICAgQXVkaW9Db250ZXh0JiBjb250ZXh0KCkgeyByZXR1cm4g
bV9jb250ZXh0LmdldCgpOyB9CisgICAgQXVkaW9Db250ZXh0QmFzZSYgY29udGV4dCgpIHsgcmV0
dXJuIG1fY29udGV4dDsgfQogCiAgICAgLy8gVGhpcyBtdXN0IGJlIGNhbGxlZCB3aGVuZXZlciB3
ZSBtb2RpZnkgbV9vdXRwdXRzLgogICAgIHZvaWQgY2hhbmdlZE91dHB1dHMoKTsKQEAgLTYwLDcg
KzYwLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBkaWRVcGRhdGUoKSA9IDA7CiAKIHBy
b3RlY3RlZDoKLSAgICBSZWY8QXVkaW9Db250ZXh0PiBtX2NvbnRleHQ7CisgICAgUmVmPEF1ZGlv
Q29udGV4dEJhc2U+IG1fY29udGV4dDsKIAogICAgIC8vIG1fb3V0cHV0cyBjb250YWlucyB0aGUg
QXVkaW9Ob2RlT3V0cHV0cyByZXByZXNlbnRpbmcgY3VycmVudCBjb25uZWN0aW9ucyB3aGljaCBh
cmUgbm90IGRpc2FibGVkLgogICAgIC8vIFRoZSByZW5kZXJpbmcgY29kZSBzaG91bGQgbmV2ZXIg
dXNlIHRoaXMgZGlyZWN0bHksIGJ1dCBpbnN0ZWFkIHVzZXMgbV9yZW5kZXJpbmdPdXRwdXRzLgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9CaXF1YWRGaWx0ZXJO
b2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQmlxdWFkRmlsdGVyTm9k
ZS5jcHAKaW5kZXggNGE4MjU1ZTZmMGEuLmRkZTA3NzNkNDczIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0JpcXVhZEZpbHRlck5vZGUuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQmlxdWFkRmlsdGVyTm9kZS5jcHAKQEAgLTMzLDcg
KzMzLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBXVEZfTUFLRV9JU09fQUxMT0NBVEVEX0lN
UEwoQmlxdWFkRmlsdGVyTm9kZSk7CiAKLUJpcXVhZEZpbHRlck5vZGU6OkJpcXVhZEZpbHRlck5v
ZGUoQXVkaW9Db250ZXh0JiBjb250ZXh0LCBmbG9hdCBzYW1wbGVSYXRlKQorQmlxdWFkRmlsdGVy
Tm9kZTo6QmlxdWFkRmlsdGVyTm9kZShBdWRpb0NvbnRleHRCYXNlJiBjb250ZXh0LCBmbG9hdCBz
YW1wbGVSYXRlKQogICAgIDogQXVkaW9CYXNpY1Byb2Nlc3Nvck5vZGUoY29udGV4dCwgc2FtcGxl
UmF0ZSkKIHsKICAgICBzZXROb2RlVHlwZShOb2RlVHlwZUJpcXVhZEZpbHRlcik7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0JpcXVhZEZpbHRlck5vZGUuaCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQmlxdWFkRmlsdGVyTm9kZS5oCmluZGV4
IDgwOTRkOTFlYWIzLi5hYzhkOTQ3YTEwZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJhdWRpby9CaXF1YWRGaWx0ZXJOb2RlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJhdWRpby9CaXF1YWRGaWx0ZXJOb2RlLmgKQEAgLTM0LDcgKzM0LDcgQEAgY2xhc3Mg
QXVkaW9QYXJhbTsKIGNsYXNzIEJpcXVhZEZpbHRlck5vZGUgZmluYWwgOiBwdWJsaWMgQXVkaW9C
YXNpY1Byb2Nlc3Nvck5vZGUgewogICAgIFdURl9NQUtFX0lTT19BTExPQ0FURUQoQmlxdWFkRmls
dGVyTm9kZSk7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxCaXF1YWRGaWx0ZXJOb2RlPiBjcmVh
dGUoQXVkaW9Db250ZXh0JiBjb250ZXh0LCBmbG9hdCBzYW1wbGVSYXRlKQorICAgIHN0YXRpYyBS
ZWY8QmlxdWFkRmlsdGVyTm9kZT4gY3JlYXRlKEF1ZGlvQ29udGV4dEJhc2UmIGNvbnRleHQsIGZs
b2F0IHNhbXBsZVJhdGUpCiAgICAgewogICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBCaXF1
YWRGaWx0ZXJOb2RlKGNvbnRleHQsIHNhbXBsZVJhdGUpKTsKICAgICB9CkBAIC01Miw3ICs1Miw3
IEBAIHB1YmxpYzoKICAgICB2b2lkIGdldEZyZXF1ZW5jeVJlc3BvbnNlKGNvbnN0IFJlZlB0cjxG
bG9hdDMyQXJyYXk+JiBmcmVxdWVuY3lIeiwgY29uc3QgUmVmUHRyPEZsb2F0MzJBcnJheT4mIG1h
Z1Jlc3BvbnNlLCBjb25zdCBSZWZQdHI8RmxvYXQzMkFycmF5PiYgcGhhc2VSZXNwb25zZSk7CiAK
IHByaXZhdGU6Ci0gICAgQmlxdWFkRmlsdGVyTm9kZShBdWRpb0NvbnRleHQmLCBmbG9hdCBzYW1w
bGVSYXRlKTsKKyAgICBCaXF1YWRGaWx0ZXJOb2RlKEF1ZGlvQ29udGV4dEJhc2UmLCBmbG9hdCBz
YW1wbGVSYXRlKTsKIAogICAgIEJpcXVhZFByb2Nlc3NvciogYmlxdWFkUHJvY2Vzc29yKCkgeyBy
ZXR1cm4gc3RhdGljX2Nhc3Q8QmlxdWFkUHJvY2Vzc29yKj4ocHJvY2Vzc29yKCkpOyB9CiB9Owpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9CaXF1YWRQcm9jZXNz
b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9CaXF1YWRQcm9jZXNzb3Iu
Y3BwCmluZGV4IGU4NGI5ODAzNTY3Li4yZjYwNjdhNzJkYyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJhdWRpby9CaXF1YWRQcm9jZXNzb3IuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQmlxdWFkUHJvY2Vzc29yLmNwcApAQCAtMzIsNyArMzIs
NyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgCi1CaXF1YWRQcm9jZXNzb3I6OkJpcXVh
ZFByb2Nlc3NvcihBdWRpb0NvbnRleHQmIGNvbnRleHQsIGZsb2F0IHNhbXBsZVJhdGUsIHNpemVf
dCBudW1iZXJPZkNoYW5uZWxzLCBib29sIGF1dG9Jbml0aWFsaXplKQorQmlxdWFkUHJvY2Vzc29y
OjpCaXF1YWRQcm9jZXNzb3IoQXVkaW9Db250ZXh0QmFzZSYgY29udGV4dCwgZmxvYXQgc2FtcGxl
UmF0ZSwgc2l6ZV90IG51bWJlck9mQ2hhbm5lbHMsIGJvb2wgYXV0b0luaXRpYWxpemUpCiAgICAg
OiBBdWRpb0RTUEtlcm5lbFByb2Nlc3NvcihzYW1wbGVSYXRlLCBudW1iZXJPZkNoYW5uZWxzKQog
ICAgICwgbV90eXBlKEJpcXVhZEZpbHRlclR5cGU6Okxvd3Bhc3MpCiAgICAgLCBtX3BhcmFtZXRl
cjEoMCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQmlxdWFk
UHJvY2Vzc29yLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0JpcXVhZFByb2Nl
c3Nvci5oCmluZGV4IGFkYmVlYzQzMDI1Li5kYzMwNmFiNTE3YiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9CaXF1YWRQcm9jZXNzb3IuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0JpcXVhZFByb2Nlc3Nvci5oCkBAIC01MCw3ICs1MCw3
IEBAIGVudW0gY2xhc3MgQmlxdWFkRmlsdGVyVHlwZSB7CiBjbGFzcyBCaXF1YWRQcm9jZXNzb3Ig
ZmluYWwgOiBwdWJsaWMgQXVkaW9EU1BLZXJuZWxQcm9jZXNzb3IgewogICAgIFdURl9NQUtFX0ZB
U1RfQUxMT0NBVEVEOwogcHVibGljOgotICAgIEJpcXVhZFByb2Nlc3NvcihBdWRpb0NvbnRleHQm
LCBmbG9hdCBzYW1wbGVSYXRlLCBzaXplX3QgbnVtYmVyT2ZDaGFubmVscywgYm9vbCBhdXRvSW5p
dGlhbGl6ZSk7CisgICAgQmlxdWFkUHJvY2Vzc29yKEF1ZGlvQ29udGV4dEJhc2UmLCBmbG9hdCBz
YW1wbGVSYXRlLCBzaXplX3QgbnVtYmVyT2ZDaGFubmVscywgYm9vbCBhdXRvSW5pdGlhbGl6ZSk7
CiAKICAgICB2aXJ0dWFsIH5CaXF1YWRQcm9jZXNzb3IoKTsKICAgICAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQ2hhbm5lbE1lcmdlck5vZGUuY3BwIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9DaGFubmVsTWVyZ2VyTm9kZS5jcHAKaW5kZXgg
ZGY1MGYyNjg3MzYuLmRlMjhhZWE3ZDJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmF1ZGlvL0NoYW5uZWxNZXJnZXJOb2RlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmF1ZGlvL0NoYW5uZWxNZXJnZXJOb2RlLmNwcApAQCAtNDMsNyArNDMsNyBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKIFdURl9NQUtFX0lTT19BTExPQ0FURURfSU1QTChDaGFubmVs
TWVyZ2VyTm9kZSk7CiAKLVJlZlB0cjxDaGFubmVsTWVyZ2VyTm9kZT4gQ2hhbm5lbE1lcmdlck5v
ZGU6OmNyZWF0ZShBdWRpb0NvbnRleHQmIGNvbnRleHQsIGZsb2F0IHNhbXBsZVJhdGUsIHVuc2ln
bmVkIG51bWJlck9mSW5wdXRzKQorUmVmUHRyPENoYW5uZWxNZXJnZXJOb2RlPiBDaGFubmVsTWVy
Z2VyTm9kZTo6Y3JlYXRlKEF1ZGlvQ29udGV4dEJhc2UmIGNvbnRleHQsIGZsb2F0IHNhbXBsZVJh
dGUsIHVuc2lnbmVkIG51bWJlck9mSW5wdXRzKQogewogICAgIGlmICghbnVtYmVyT2ZJbnB1dHMg
fHwgbnVtYmVyT2ZJbnB1dHMgPiBBdWRpb0NvbnRleHQ6Om1heE51bWJlck9mQ2hhbm5lbHMoKSkK
ICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC01MSw3ICs1MSw3IEBAIFJlZlB0cjxDaGFubmVs
TWVyZ2VyTm9kZT4gQ2hhbm5lbE1lcmdlck5vZGU6OmNyZWF0ZShBdWRpb0NvbnRleHQmIGNvbnRl
eHQsIGZsb2F0CiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQ2hhbm5lbE1lcmdlck5vZGUoY29u
dGV4dCwgc2FtcGxlUmF0ZSwgbnVtYmVyT2ZJbnB1dHMpKTsgICAgICAKIH0KIAotQ2hhbm5lbE1l
cmdlck5vZGU6OkNoYW5uZWxNZXJnZXJOb2RlKEF1ZGlvQ29udGV4dCYgY29udGV4dCwgZmxvYXQg
c2FtcGxlUmF0ZSwgdW5zaWduZWQgbnVtYmVyT2ZJbnB1dHMpCitDaGFubmVsTWVyZ2VyTm9kZTo6
Q2hhbm5lbE1lcmdlck5vZGUoQXVkaW9Db250ZXh0QmFzZSYgY29udGV4dCwgZmxvYXQgc2FtcGxl
UmF0ZSwgdW5zaWduZWQgbnVtYmVyT2ZJbnB1dHMpCiAgICAgOiBBdWRpb05vZGUoY29udGV4dCwg
c2FtcGxlUmF0ZSkKICAgICAsIG1fZGVzaXJlZE51bWJlck9mT3V0cHV0Q2hhbm5lbHMoRGVmYXVs
dE51bWJlck9mT3V0cHV0Q2hhbm5lbHMpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmF1ZGlvL0NoYW5uZWxNZXJnZXJOb2RlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmF1ZGlvL0NoYW5uZWxNZXJnZXJOb2RlLmgKaW5kZXggNjY2MzZlZWQ2ZjcuLjYyOTc2
ZTA1MDczIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0NoYW5u
ZWxNZXJnZXJOb2RlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9DaGFu
bmVsTWVyZ2VyTm9kZS5oCkBAIC0zNyw3ICszNyw3IEBAIGNsYXNzIEF1ZGlvQ29udGV4dDsKIGNs
YXNzIENoYW5uZWxNZXJnZXJOb2RlIGZpbmFsIDogcHVibGljIEF1ZGlvTm9kZSB7CiAgICAgV1RG
X01BS0VfSVNPX0FMTE9DQVRFRChDaGFubmVsTWVyZ2VyTm9kZSk7CiBwdWJsaWM6Ci0gICAgc3Rh
dGljIFJlZlB0cjxDaGFubmVsTWVyZ2VyTm9kZT4gY3JlYXRlKEF1ZGlvQ29udGV4dCYsIGZsb2F0
IHNhbXBsZVJhdGUsIHVuc2lnbmVkIG51bWJlck9mSW5wdXRzKTsKKyAgICBzdGF0aWMgUmVmUHRy
PENoYW5uZWxNZXJnZXJOb2RlPiBjcmVhdGUoQXVkaW9Db250ZXh0QmFzZSYsIGZsb2F0IHNhbXBs
ZVJhdGUsIHVuc2lnbmVkIG51bWJlck9mSW5wdXRzKTsKIAogICAgIC8vIEF1ZGlvTm9kZQogICAg
IHZvaWQgcHJvY2VzcyhzaXplX3QgZnJhbWVzVG9Qcm9jZXNzKSBvdmVycmlkZTsKQEAgLTUyLDcg
KzUyLDcgQEAgcHJpdmF0ZToKICAgICBkb3VibGUgdGFpbFRpbWUoKSBjb25zdCBvdmVycmlkZSB7
IHJldHVybiAwOyB9CiAgICAgZG91YmxlIGxhdGVuY3lUaW1lKCkgY29uc3Qgb3ZlcnJpZGUgeyBy
ZXR1cm4gMDsgfQogCi0gICAgQ2hhbm5lbE1lcmdlck5vZGUoQXVkaW9Db250ZXh0JiwgZmxvYXQg
c2FtcGxlUmF0ZSwgdW5zaWduZWQgbnVtYmVyT2ZJbnB1dHMpOworICAgIENoYW5uZWxNZXJnZXJO
b2RlKEF1ZGlvQ29udGV4dEJhc2UmLCBmbG9hdCBzYW1wbGVSYXRlLCB1bnNpZ25lZCBudW1iZXJP
ZklucHV0cyk7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0NoYW5uZWxTcGxpdHRlck5vZGUuY3BwIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9DaGFubmVsU3BsaXR0ZXJOb2RlLmNwcAppbmRl
eCA4MmY2OWEwNGY5OS4uZjU1NTNkMGM4MzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViYXVkaW8vQ2hhbm5lbFNwbGl0dGVyTm9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJhdWRpby9DaGFubmVsU3BsaXR0ZXJOb2RlLmNwcApAQCAtMzcsNyArMzcs
NyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFdURl9NQUtFX0lTT19BTExPQ0FURURfSU1QTChD
aGFubmVsU3BsaXR0ZXJOb2RlKTsKICAgICAKLVJlZlB0cjxDaGFubmVsU3BsaXR0ZXJOb2RlPiBD
aGFubmVsU3BsaXR0ZXJOb2RlOjpjcmVhdGUoQXVkaW9Db250ZXh0JiBjb250ZXh0LCBmbG9hdCBz
YW1wbGVSYXRlLCB1bnNpZ25lZCBudW1iZXJPZk91dHB1dHMpCitSZWZQdHI8Q2hhbm5lbFNwbGl0
dGVyTm9kZT4gQ2hhbm5lbFNwbGl0dGVyTm9kZTo6Y3JlYXRlKEF1ZGlvQ29udGV4dEJhc2UmIGNv
bnRleHQsIGZsb2F0IHNhbXBsZVJhdGUsIHVuc2lnbmVkIG51bWJlck9mT3V0cHV0cykKIHsKICAg
ICBpZiAoIW51bWJlck9mT3V0cHV0cyB8fCBudW1iZXJPZk91dHB1dHMgPiBBdWRpb0NvbnRleHQ6
Om1heE51bWJlck9mQ2hhbm5lbHMoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC00NSw3
ICs0NSw3IEBAIFJlZlB0cjxDaGFubmVsU3BsaXR0ZXJOb2RlPiBDaGFubmVsU3BsaXR0ZXJOb2Rl
OjpjcmVhdGUoQXVkaW9Db250ZXh0JiBjb250ZXh0LCBmCiAgICAgcmV0dXJuIGFkb3B0UmVmKCpu
ZXcgQ2hhbm5lbFNwbGl0dGVyTm9kZShjb250ZXh0LCBzYW1wbGVSYXRlLCBudW1iZXJPZk91dHB1
dHMpKTsgICAgICAKIH0KIAotQ2hhbm5lbFNwbGl0dGVyTm9kZTo6Q2hhbm5lbFNwbGl0dGVyTm9k
ZShBdWRpb0NvbnRleHQmIGNvbnRleHQsIGZsb2F0IHNhbXBsZVJhdGUsIHVuc2lnbmVkIG51bWJl
ck9mT3V0cHV0cykKK0NoYW5uZWxTcGxpdHRlck5vZGU6OkNoYW5uZWxTcGxpdHRlck5vZGUoQXVk
aW9Db250ZXh0QmFzZSYgY29udGV4dCwgZmxvYXQgc2FtcGxlUmF0ZSwgdW5zaWduZWQgbnVtYmVy
T2ZPdXRwdXRzKQogICAgIDogQXVkaW9Ob2RlKGNvbnRleHQsIHNhbXBsZVJhdGUpCiB7CiAgICAg
c2V0Tm9kZVR5cGUoTm9kZVR5cGVDaGFubmVsU3BsaXR0ZXIpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9DaGFubmVsU3BsaXR0ZXJOb2RlLmggYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0NoYW5uZWxTcGxpdHRlck5vZGUuaAppbmRleCA4ZDk4
MzI4MTIzNy4uMTNkOGQ5ODBkYWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViYXVkaW8vQ2hhbm5lbFNwbGl0dGVyTm9kZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViYXVkaW8vQ2hhbm5lbFNwbGl0dGVyTm9kZS5oCkBAIC0zMyw3ICszMyw3IEBAIGNsYXNz
IEF1ZGlvQ29udGV4dDsKIGNsYXNzIENoYW5uZWxTcGxpdHRlck5vZGUgZmluYWwgOiBwdWJsaWMg
QXVkaW9Ob2RlIHsKICAgICBXVEZfTUFLRV9JU09fQUxMT0NBVEVEKENoYW5uZWxTcGxpdHRlck5v
ZGUpOwogcHVibGljOgotICAgIHN0YXRpYyBSZWZQdHI8Q2hhbm5lbFNwbGl0dGVyTm9kZT4gY3Jl
YXRlKEF1ZGlvQ29udGV4dCYsIGZsb2F0IHNhbXBsZVJhdGUsIHVuc2lnbmVkIG51bWJlck9mT3V0
cHV0cyk7CisgICAgc3RhdGljIFJlZlB0cjxDaGFubmVsU3BsaXR0ZXJOb2RlPiBjcmVhdGUoQXVk
aW9Db250ZXh0QmFzZSYsIGZsb2F0IHNhbXBsZVJhdGUsIHVuc2lnbmVkIG51bWJlck9mT3V0cHV0
cyk7CiAKICAgICAvLyBBdWRpb05vZGUKICAgICB2b2lkIHByb2Nlc3Moc2l6ZV90IGZyYW1lc1Rv
UHJvY2Vzcykgb3ZlcnJpZGU7CkBAIC00Myw3ICs0Myw3IEBAIHByaXZhdGU6CiAgICAgZG91Ymxl
IHRhaWxUaW1lKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gMDsgfQogICAgIGRvdWJsZSBsYXRl
bmN5VGltZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIDA7IH0KIAotICAgIENoYW5uZWxTcGxp
dHRlck5vZGUoQXVkaW9Db250ZXh0JiwgZmxvYXQgc2FtcGxlUmF0ZSwgdW5zaWduZWQgbnVtYmVy
T2ZPdXRwdXRzKTsKKyAgICBDaGFubmVsU3BsaXR0ZXJOb2RlKEF1ZGlvQ29udGV4dEJhc2UmLCBm
bG9hdCBzYW1wbGVSYXRlLCB1bnNpZ25lZCBudW1iZXJPZk91dHB1dHMpOwogfTsKIAogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJh
dWRpby9Db252b2x2ZXJOb2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8v
Q29udm9sdmVyTm9kZS5jcHAKaW5kZXggY2M5NzJmMTBkYmQuLmUxZjVlYjgxNTYwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0NvbnZvbHZlck5vZGUuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQ29udm9sdmVyTm9kZS5jcHAKQEAg
LTQ3LDcgKzQ3LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBXVEZfTUFLRV9JU09fQUxMT0NB
VEVEX0lNUEwoQ29udm9sdmVyTm9kZSk7CiAKLUNvbnZvbHZlck5vZGU6OkNvbnZvbHZlck5vZGUo
QXVkaW9Db250ZXh0JiBjb250ZXh0LCBmbG9hdCBzYW1wbGVSYXRlKQorQ29udm9sdmVyTm9kZTo6
Q29udm9sdmVyTm9kZShBdWRpb0NvbnRleHRCYXNlJiBjb250ZXh0LCBmbG9hdCBzYW1wbGVSYXRl
KQogICAgIDogQXVkaW9Ob2RlKGNvbnRleHQsIHNhbXBsZVJhdGUpCiB7CiAgICAgc2V0Tm9kZVR5
cGUoTm9kZVR5cGVDb252b2x2ZXIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJhdWRpby9Db252b2x2ZXJOb2RlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1
ZGlvL0NvbnZvbHZlck5vZGUuaAppbmRleCA2NGJmZWJlZDJkOC4uMzFjZWMxZWNjN2YgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQ29udm9sdmVyTm9kZS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQ29udm9sdmVyTm9kZS5oCkBAIC0z
NSw3ICszNSw3IEBAIGNsYXNzIFJldmVyYjsKIGNsYXNzIENvbnZvbHZlck5vZGUgZmluYWwgOiBw
dWJsaWMgQXVkaW9Ob2RlIHsKICAgICBXVEZfTUFLRV9JU09fQUxMT0NBVEVEKENvbnZvbHZlck5v
ZGUpOwogcHVibGljOgotICAgIHN0YXRpYyBSZWY8Q29udm9sdmVyTm9kZT4gY3JlYXRlKEF1ZGlv
Q29udGV4dCYgY29udGV4dCwgZmxvYXQgc2FtcGxlUmF0ZSkKKyAgICBzdGF0aWMgUmVmPENvbnZv
bHZlck5vZGU+IGNyZWF0ZShBdWRpb0NvbnRleHRCYXNlJiBjb250ZXh0LCBmbG9hdCBzYW1wbGVS
YXRlKQogICAgIHsKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQ29udm9sdmVyTm9kZShj
b250ZXh0LCBzYW1wbGVSYXRlKSk7CiAgICAgfQpAQCAtNDksNyArNDksNyBAQCBwdWJsaWM6CiAg
ICAgdm9pZCBzZXROb3JtYWxpemUoYm9vbCBub3JtYWxpemUpIHsgbV9ub3JtYWxpemUgPSBub3Jt
YWxpemU7IH0KIAogcHJpdmF0ZToKLSAgICBDb252b2x2ZXJOb2RlKEF1ZGlvQ29udGV4dCYsIGZs
b2F0IHNhbXBsZVJhdGUpOworICAgIENvbnZvbHZlck5vZGUoQXVkaW9Db250ZXh0QmFzZSYsIGZs
b2F0IHNhbXBsZVJhdGUpOwogCiAgICAgZG91YmxlIHRhaWxUaW1lKCkgY29uc3QgZmluYWw7CiAg
ICAgZG91YmxlIGxhdGVuY3lUaW1lKCkgY29uc3QgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0RlZmF1bHRBdWRpb0Rlc3RpbmF0aW9uTm9kZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0RlZmF1bHRBdWRpb0Rlc3RpbmF0aW9u
Tm9kZS5jcHAKaW5kZXggMTc1OWFlNGE1YTYuLjA3ZWI5YTQxYjVjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0RlZmF1bHRBdWRpb0Rlc3RpbmF0aW9uTm9kZS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9EZWZhdWx0QXVkaW9EZXN0
aW5hdGlvbk5vZGUuY3BwCkBAIC00Myw3ICs0Myw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAog
V1RGX01BS0VfSVNPX0FMTE9DQVRFRF9JTVBMKERlZmF1bHRBdWRpb0Rlc3RpbmF0aW9uTm9kZSk7
CiAgICAgCi1EZWZhdWx0QXVkaW9EZXN0aW5hdGlvbk5vZGU6OkRlZmF1bHRBdWRpb0Rlc3RpbmF0
aW9uTm9kZShBdWRpb0NvbnRleHQmIGNvbnRleHQpCitEZWZhdWx0QXVkaW9EZXN0aW5hdGlvbk5v
ZGU6OkRlZmF1bHRBdWRpb0Rlc3RpbmF0aW9uTm9kZShBdWRpb0NvbnRleHRCYXNlJiBjb250ZXh0
KQogICAgIDogQXVkaW9EZXN0aW5hdGlvbk5vZGUoY29udGV4dCwgQXVkaW9EZXN0aW5hdGlvbjo6
aGFyZHdhcmVTYW1wbGVSYXRlKCkpCiB7CiAgICAgLy8gTm9kZS1zcGVjaWZpYyBkZWZhdWx0IG1p
eGluZyBydWxlcy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8v
RGVmYXVsdEF1ZGlvRGVzdGluYXRpb25Ob2RlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmF1ZGlvL0RlZmF1bHRBdWRpb0Rlc3RpbmF0aW9uTm9kZS5oCmluZGV4IDZmZDk1YzBmMzAxLi45
NmM4MzdjOTkzNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9E
ZWZhdWx0QXVkaW9EZXN0aW5hdGlvbk5vZGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmF1ZGlvL0RlZmF1bHRBdWRpb0Rlc3RpbmF0aW9uTm9kZS5oCkBAIC0zMyw3ICszMyw3IEBA
IGNsYXNzIEF1ZGlvRGVzdGluYXRpb247CiBjbGFzcyBEZWZhdWx0QXVkaW9EZXN0aW5hdGlvbk5v
ZGUgZmluYWwgOiBwdWJsaWMgQXVkaW9EZXN0aW5hdGlvbk5vZGUgewogICAgIFdURl9NQUtFX0lT
T19BTExPQ0FURUQoRGVmYXVsdEF1ZGlvRGVzdGluYXRpb25Ob2RlKTsKIHB1YmxpYzoKLSAgICBz
dGF0aWMgUmVmPERlZmF1bHRBdWRpb0Rlc3RpbmF0aW9uTm9kZT4gY3JlYXRlKEF1ZGlvQ29udGV4
dCYgY29udGV4dCkKKyAgICBzdGF0aWMgUmVmPERlZmF1bHRBdWRpb0Rlc3RpbmF0aW9uTm9kZT4g
Y3JlYXRlKEF1ZGlvQ29udGV4dEJhc2UmIGNvbnRleHQpCiAgICAgewogICAgICAgICByZXR1cm4g
YWRvcHRSZWYoKm5ldyBEZWZhdWx0QXVkaW9EZXN0aW5hdGlvbk5vZGUoY29udGV4dCkpOyAgICAg
CiAgICAgfQpAQCAtNDEsNyArNDEsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB+RGVmYXVsdEF1
ZGlvRGVzdGluYXRpb25Ob2RlKCk7CiAgICAgCiBwcml2YXRlOgotICAgIGV4cGxpY2l0IERlZmF1
bHRBdWRpb0Rlc3RpbmF0aW9uTm9kZShBdWRpb0NvbnRleHQmKTsKKyAgICBleHBsaWNpdCBEZWZh
dWx0QXVkaW9EZXN0aW5hdGlvbk5vZGUoQXVkaW9Db250ZXh0QmFzZSYpOwogICAgIHZvaWQgY3Jl
YXRlRGVzdGluYXRpb24oKTsKIAogICAgIHZvaWQgaW5pdGlhbGl6ZSgpIGZpbmFsOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9EZWxheU5vZGUuY3BwIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9EZWxheU5vZGUuY3BwCmluZGV4IDgxYmQ3ZDE5
YjI3Li40MDUyN2M4MWY5ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJh
dWRpby9EZWxheU5vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8v
RGVsYXlOb2RlLmNwcApAQCAtMzcsMTQgKzM3LDE0IEBAIFdURl9NQUtFX0lTT19BTExPQ0FURURf
SU1QTChEZWxheU5vZGUpOwogCiBjb25zdCBkb3VibGUgbWF4aW11bUFsbG93ZWREZWxheVRpbWUg
PSAxODA7CiAKLWlubGluZSBEZWxheU5vZGU6OkRlbGF5Tm9kZShBdWRpb0NvbnRleHQmIGNvbnRl
eHQsIGZsb2F0IHNhbXBsZVJhdGUsIGRvdWJsZSBtYXhEZWxheVRpbWUpCitpbmxpbmUgRGVsYXlO
b2RlOjpEZWxheU5vZGUoQXVkaW9Db250ZXh0QmFzZSYgY29udGV4dCwgZmxvYXQgc2FtcGxlUmF0
ZSwgZG91YmxlIG1heERlbGF5VGltZSkKICAgICA6IEF1ZGlvQmFzaWNQcm9jZXNzb3JOb2RlKGNv
bnRleHQsIHNhbXBsZVJhdGUpCiB7CiAgICAgc2V0Tm9kZVR5cGUoTm9kZVR5cGVEZWxheSk7CiAg
ICAgbV9wcm9jZXNzb3IgPSBtYWtlVW5pcXVlPERlbGF5UHJvY2Vzc29yPihjb250ZXh0LCBzYW1w
bGVSYXRlLCAxLCBtYXhEZWxheVRpbWUpOwogfQogCi1FeGNlcHRpb25PcjxSZWY8RGVsYXlOb2Rl
Pj4gRGVsYXlOb2RlOjpjcmVhdGUoQXVkaW9Db250ZXh0JiBjb250ZXh0LCBmbG9hdCBzYW1wbGVS
YXRlLCBkb3VibGUgbWF4RGVsYXlUaW1lKQorRXhjZXB0aW9uT3I8UmVmPERlbGF5Tm9kZT4+IERl
bGF5Tm9kZTo6Y3JlYXRlKEF1ZGlvQ29udGV4dEJhc2UmIGNvbnRleHQsIGZsb2F0IHNhbXBsZVJh
dGUsIGRvdWJsZSBtYXhEZWxheVRpbWUpCiB7CiAgICAgaWYgKG1heERlbGF5VGltZSA8PSAwIHx8
IG1heERlbGF5VGltZSA+PSBtYXhpbXVtQWxsb3dlZERlbGF5VGltZSkKICAgICAgICAgcmV0dXJu
IEV4Y2VwdGlvbiB7IE5vdFN1cHBvcnRlZEVycm9yIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0RlbGF5Tm9kZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJhdWRpby9EZWxheU5vZGUuaAppbmRleCBjOWVjYWQ5ZjlmZC4uYjZhZmRkMGY5MzAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vRGVsYXlOb2RlLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9EZWxheU5vZGUuaApAQCAtMzEsMTIg
KzMxLDEyIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIERlbGF5Tm9kZSBmaW5hbCA6IHB1
YmxpYyBBdWRpb0Jhc2ljUHJvY2Vzc29yTm9kZSB7CiAgICAgV1RGX01BS0VfSVNPX0FMTE9DQVRF
RChEZWxheU5vZGUpOwogcHVibGljOgotICAgIHN0YXRpYyBFeGNlcHRpb25PcjxSZWY8RGVsYXlO
b2RlPj4gY3JlYXRlKEF1ZGlvQ29udGV4dCYsIGZsb2F0IHNhbXBsZVJhdGUsIGRvdWJsZSBtYXhE
ZWxheVRpbWUpOworICAgIHN0YXRpYyBFeGNlcHRpb25PcjxSZWY8RGVsYXlOb2RlPj4gY3JlYXRl
KEF1ZGlvQ29udGV4dEJhc2UmLCBmbG9hdCBzYW1wbGVSYXRlLCBkb3VibGUgbWF4RGVsYXlUaW1l
KTsKIAogICAgIEF1ZGlvUGFyYW0qIGRlbGF5VGltZSgpOwogCiBwcml2YXRlOgotICAgIERlbGF5
Tm9kZShBdWRpb0NvbnRleHQmLCBmbG9hdCBzYW1wbGVSYXRlLCBkb3VibGUgbWF4RGVsYXlUaW1l
KTsKKyAgICBEZWxheU5vZGUoQXVkaW9Db250ZXh0QmFzZSYsIGZsb2F0IHNhbXBsZVJhdGUsIGRv
dWJsZSBtYXhEZWxheVRpbWUpOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9EZWxheVByb2Nlc3Nvci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0RlbGF5UHJvY2Vzc29yLmNwcAppbmRl
eCAxMDM2NmVmNmVhZi4uY2JiZmQ5ZmEyZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViYXVkaW8vRGVsYXlQcm9jZXNzb3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViYXVkaW8vRGVsYXlQcm9jZXNzb3IuY3BwCkBAIC0zMiw3ICszMiw3IEBACiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAotRGVsYXlQcm9jZXNzb3I6OkRlbGF5UHJvY2Vzc29yKEF1ZGlv
Q29udGV4dCYgY29udGV4dCwgZmxvYXQgc2FtcGxlUmF0ZSwgdW5zaWduZWQgbnVtYmVyT2ZDaGFu
bmVscywgZG91YmxlIG1heERlbGF5VGltZSkKK0RlbGF5UHJvY2Vzc29yOjpEZWxheVByb2Nlc3Nv
cihBdWRpb0NvbnRleHRCYXNlJiBjb250ZXh0LCBmbG9hdCBzYW1wbGVSYXRlLCB1bnNpZ25lZCBu
dW1iZXJPZkNoYW5uZWxzLCBkb3VibGUgbWF4RGVsYXlUaW1lKQogICAgIDogQXVkaW9EU1BLZXJu
ZWxQcm9jZXNzb3Ioc2FtcGxlUmF0ZSwgbnVtYmVyT2ZDaGFubmVscykKICAgICAsIG1fbWF4RGVs
YXlUaW1lKG1heERlbGF5VGltZSkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViYXVkaW8vRGVsYXlQcm9jZXNzb3IuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
YXVkaW8vRGVsYXlQcm9jZXNzb3IuaAppbmRleCA4NWQ5Y2M2ZDdmZC4uY2JhYzc5ZWNmMGYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vRGVsYXlQcm9jZXNzb3Iu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0RlbGF5UHJvY2Vzc29yLmgK
QEAgLTM2LDcgKzM2LDcgQEAgY2xhc3MgQXVkaW9EU1BLZXJuZWw7CiBjbGFzcyBEZWxheVByb2Nl
c3NvciBmaW5hbCA6IHB1YmxpYyBBdWRpb0RTUEtlcm5lbFByb2Nlc3NvciB7CiAgICAgV1RGX01B
S0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6Ci0gICAgRGVsYXlQcm9jZXNzb3IoQXVkaW9Db250
ZXh0JiwgZmxvYXQgc2FtcGxlUmF0ZSwgdW5zaWduZWQgbnVtYmVyT2ZDaGFubmVscywgZG91Ymxl
IG1heERlbGF5VGltZSk7CisgICAgRGVsYXlQcm9jZXNzb3IoQXVkaW9Db250ZXh0QmFzZSYsIGZs
b2F0IHNhbXBsZVJhdGUsIHVuc2lnbmVkIG51bWJlck9mQ2hhbm5lbHMsIGRvdWJsZSBtYXhEZWxh
eVRpbWUpOwogICAgIHZpcnR1YWwgfkRlbGF5UHJvY2Vzc29yKCk7CiAgICAgCiAgICAgc3RkOjp1
bmlxdWVfcHRyPEF1ZGlvRFNQS2VybmVsPiBjcmVhdGVLZXJuZWwoKSBvdmVycmlkZTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vRGlzdGFuY2VNb2RlbFR5cGUu
aCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vRGlzdGFuY2VNb2RlbFR5cGUuaApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uZGZlMTMxODJjYzAKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0Rpc3RhbmNlTW9k
ZWxUeXBlLmgKQEAgLTAsMCArMSwyNyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCwgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04KKyAqIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisg
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUworICogU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNp
bmNsdWRlICJEaXN0YW5jZS5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJhdWRpby9EaXN0YW5jZU1vZGVsVHlwZS5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmF1ZGlvL0Rpc3RhbmNlTW9kZWxUeXBlLmlkbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMC4uZjhmZmNmZWQyMmMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmF1ZGlvL0Rpc3RhbmNlTW9kZWxUeXBlLmlkbApAQCAtMCwwICsxLDMxIEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwLCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAq
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04KKyAqIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUwor
ICogU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworWworICAgIENvbmRpdGlvbmFsPVdFQl9BVURJTywKK10gZW51bSBEaXN0
YW5jZU1vZGVsVHlwZSB7CisgICAgImxpbmVhciIsCisgICAgImludmVyc2UiLAorICAgICJleHBv
bmVudGlhbCIKK307CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlv
L0R5bmFtaWNzQ29tcHJlc3Nvck5vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJh
dWRpby9EeW5hbWljc0NvbXByZXNzb3JOb2RlLmNwcAppbmRleCAxNDA5NmQ4ZjBjNS4uYzMzZDFk
ZTcyZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vRHluYW1p
Y3NDb21wcmVzc29yTm9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRp
by9EeW5hbWljc0NvbXByZXNzb3JOb2RlLmNwcApAQCAtNDEsNyArNDEsNyBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKIFdURl9NQUtFX0lTT19BTExPQ0FURURfSU1QTChEeW5hbWljc0NvbXByZXNz
b3JOb2RlKTsKIAotRHluYW1pY3NDb21wcmVzc29yTm9kZTo6RHluYW1pY3NDb21wcmVzc29yTm9k
ZShBdWRpb0NvbnRleHQmIGNvbnRleHQsIGZsb2F0IHNhbXBsZVJhdGUpCitEeW5hbWljc0NvbXBy
ZXNzb3JOb2RlOjpEeW5hbWljc0NvbXByZXNzb3JOb2RlKEF1ZGlvQ29udGV4dEJhc2UmIGNvbnRl
eHQsIGZsb2F0IHNhbXBsZVJhdGUpCiAgICAgOiBBdWRpb05vZGUoY29udGV4dCwgc2FtcGxlUmF0
ZSkKIHsKICAgICBzZXROb2RlVHlwZShOb2RlVHlwZUR5bmFtaWNzQ29tcHJlc3Nvcik7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0R5bmFtaWNzQ29tcHJlc3Nv
ck5vZGUuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vRHluYW1pY3NDb21wcmVz
c29yTm9kZS5oCmluZGV4IDQ0Y2JmYmFhMDU5Li5iNzA1M2IyMjE3MyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9EeW5hbWljc0NvbXByZXNzb3JOb2RlLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9EeW5hbWljc0NvbXByZXNzb3JOb2Rl
LmgKQEAgLTM1LDcgKzM1LDcgQEAgY2xhc3MgRHluYW1pY3NDb21wcmVzc29yOwogY2xhc3MgRHlu
YW1pY3NDb21wcmVzc29yTm9kZSBmaW5hbCA6IHB1YmxpYyBBdWRpb05vZGUgewogICAgIFdURl9N
QUtFX0lTT19BTExPQ0FURUQoRHluYW1pY3NDb21wcmVzc29yTm9kZSk7CiBwdWJsaWM6Ci0gICAg
c3RhdGljIFJlZjxEeW5hbWljc0NvbXByZXNzb3JOb2RlPiBjcmVhdGUoQXVkaW9Db250ZXh0JiBj
b250ZXh0LCBmbG9hdCBzYW1wbGVSYXRlKQorICAgIHN0YXRpYyBSZWY8RHluYW1pY3NDb21wcmVz
c29yTm9kZT4gY3JlYXRlKEF1ZGlvQ29udGV4dEJhc2UmIGNvbnRleHQsIGZsb2F0IHNhbXBsZVJh
dGUpCiAgICAgewogICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBEeW5hbWljc0NvbXByZXNz
b3JOb2RlKGNvbnRleHQsIHNhbXBsZVJhdGUpKTsKICAgICB9CkBAIC02Miw3ICs2Miw3IEBAIHBy
aXZhdGU6CiAgICAgZG91YmxlIHRhaWxUaW1lKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgZG91Ymxl
IGxhdGVuY3lUaW1lKCkgY29uc3Qgb3ZlcnJpZGU7CiAKLSAgICBEeW5hbWljc0NvbXByZXNzb3JO
b2RlKEF1ZGlvQ29udGV4dCYsIGZsb2F0IHNhbXBsZVJhdGUpOworICAgIER5bmFtaWNzQ29tcHJl
c3Nvck5vZGUoQXVkaW9Db250ZXh0QmFzZSYsIGZsb2F0IHNhbXBsZVJhdGUpOwogCiAgICAgc3Rk
Ojp1bmlxdWVfcHRyPER5bmFtaWNzQ29tcHJlc3Nvcj4gbV9keW5hbWljc0NvbXByZXNzb3I7CiAg
ICAgUmVmUHRyPEF1ZGlvUGFyYW0+IG1fdGhyZXNob2xkOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJhdWRpby9HYWluTm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmF1ZGlvL0dhaW5Ob2RlLmNwcAppbmRleCAyNTdkZjJlY2UyMy4uOTg0ZDExOTRiZGQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vR2Fpbk5vZGUuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vR2Fpbk5vZGUuY3BwCkBAIC0z
Nyw3ICszNyw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogV1RGX01BS0VfSVNPX0FMTE9DQVRF
RF9JTVBMKEdhaW5Ob2RlKTsKIAotR2Fpbk5vZGU6OkdhaW5Ob2RlKEF1ZGlvQ29udGV4dCYgY29u
dGV4dCwgZmxvYXQgc2FtcGxlUmF0ZSkKK0dhaW5Ob2RlOjpHYWluTm9kZShBdWRpb0NvbnRleHRC
YXNlJiBjb250ZXh0LCBmbG9hdCBzYW1wbGVSYXRlKQogICAgIDogQXVkaW9Ob2RlKGNvbnRleHQs
IHNhbXBsZVJhdGUpCiAgICAgLCBtX2xhc3RHYWluKDEuMCkKICAgICAsIG1fc2FtcGxlQWNjdXJh
dGVHYWluVmFsdWVzKEF1ZGlvTm9kZTo6UHJvY2Vzc2luZ1NpemVJbkZyYW1lcykgLy8gRklYTUU6
IGNhbiBwcm9iYWJseSBzaGFyZSB0ZW1wIGJ1ZmZlciBpbiBjb250ZXh0CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0dhaW5Ob2RlLmggYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmF1ZGlvL0dhaW5Ob2RlLmgKaW5kZXggZmE4NWIwYjlmZjUuLmRjZjg1NWE5
MWM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0dhaW5Ob2Rl
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9HYWluTm9kZS5oCkBAIC0z
OCw3ICszOCw3IEBAIGNsYXNzIEF1ZGlvQ29udGV4dDsKIGNsYXNzIEdhaW5Ob2RlIGZpbmFsIDog
cHVibGljIEF1ZGlvTm9kZSB7CiAgICAgV1RGX01BS0VfSVNPX0FMTE9DQVRFRChHYWluTm9kZSk7
CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxHYWluTm9kZT4gY3JlYXRlKEF1ZGlvQ29udGV4dCYg
Y29udGV4dCwgZmxvYXQgc2FtcGxlUmF0ZSkKKyAgICBzdGF0aWMgUmVmPEdhaW5Ob2RlPiBjcmVh
dGUoQXVkaW9Db250ZXh0QmFzZSYgY29udGV4dCwgZmxvYXQgc2FtcGxlUmF0ZSkKICAgICB7CiAg
ICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEdhaW5Ob2RlKGNvbnRleHQsIHNhbXBsZVJhdGUp
KTsKICAgICB9CkBAIC01Nyw3ICs1Nyw3IEBAIHByaXZhdGU6CiAgICAgZG91YmxlIHRhaWxUaW1l
KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gMDsgfQogICAgIGRvdWJsZSBsYXRlbmN5VGltZSgp
IGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIDA7IH0KIAotICAgIEdhaW5Ob2RlKEF1ZGlvQ29udGV4
dCYsIGZsb2F0IHNhbXBsZVJhdGUpOworICAgIEdhaW5Ob2RlKEF1ZGlvQ29udGV4dEJhc2UmLCBm
bG9hdCBzYW1wbGVSYXRlKTsKIAogICAgIGZsb2F0IG1fbGFzdEdhaW47IC8vIGZvciBkZS16aXBw
ZXJpbmcKICAgICBSZWZQdHI8QXVkaW9QYXJhbT4gbV9nYWluOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9NZWRpYUVsZW1lbnRBdWRpb1NvdXJjZU5vZGUuY3Bw
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9NZWRpYUVsZW1lbnRBdWRpb1NvdXJj
ZU5vZGUuY3BwCmluZGV4IDBlNTk4MWZhNjg2Li5jNjc1ZDdkZTcxNiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9NZWRpYUVsZW1lbnRBdWRpb1NvdXJjZU5vZGUu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vTWVkaWFFbGVtZW50QXVk
aW9Tb3VyY2VOb2RlLmNwcApAQCAtNDMsMTIgKzQzLDEyIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAogV1RGX01BS0VfSVNPX0FMTE9DQVRFRF9JTVBMKE1lZGlhRWxlbWVudEF1ZGlvU291cmNlTm9k
ZSk7CiAKLVJlZjxNZWRpYUVsZW1lbnRBdWRpb1NvdXJjZU5vZGU+IE1lZGlhRWxlbWVudEF1ZGlv
U291cmNlTm9kZTo6Y3JlYXRlKEF1ZGlvQ29udGV4dCYgY29udGV4dCwgSFRNTE1lZGlhRWxlbWVu
dCYgbWVkaWFFbGVtZW50KQorUmVmPE1lZGlhRWxlbWVudEF1ZGlvU291cmNlTm9kZT4gTWVkaWFF
bGVtZW50QXVkaW9Tb3VyY2VOb2RlOjpjcmVhdGUoQXVkaW9Db250ZXh0QmFzZSYgY29udGV4dCwg
SFRNTE1lZGlhRWxlbWVudCYgbWVkaWFFbGVtZW50KQogewogICAgIHJldHVybiBhZG9wdFJlZigq
bmV3IE1lZGlhRWxlbWVudEF1ZGlvU291cmNlTm9kZShjb250ZXh0LCBtZWRpYUVsZW1lbnQpKTsK
IH0KIAotTWVkaWFFbGVtZW50QXVkaW9Tb3VyY2VOb2RlOjpNZWRpYUVsZW1lbnRBdWRpb1NvdXJj
ZU5vZGUoQXVkaW9Db250ZXh0JiBjb250ZXh0LCBIVE1MTWVkaWFFbGVtZW50JiBtZWRpYUVsZW1l
bnQpCitNZWRpYUVsZW1lbnRBdWRpb1NvdXJjZU5vZGU6Ok1lZGlhRWxlbWVudEF1ZGlvU291cmNl
Tm9kZShBdWRpb0NvbnRleHRCYXNlJiBjb250ZXh0LCBIVE1MTWVkaWFFbGVtZW50JiBtZWRpYUVs
ZW1lbnQpCiAgICAgOiBBdWRpb05vZGUoY29udGV4dCwgY29udGV4dC5zYW1wbGVSYXRlKCkpCiAg
ICAgLCBtX21lZGlhRWxlbWVudChtZWRpYUVsZW1lbnQpCiAgICAgLCBtX3NvdXJjZU51bWJlck9m
Q2hhbm5lbHMoMCkKQEAgLTk3LDcgKzk3LDcgQEAgdm9pZCBNZWRpYUVsZW1lbnRBdWRpb1NvdXJj
ZU5vZGU6OnNldEZvcm1hdChzaXplX3QgbnVtYmVyT2ZDaGFubmVscywgZmxvYXQgc291cmMKIAog
ICAgICAgICB7CiAgICAgICAgICAgICAvLyBUaGUgY29udGV4dCBtdXN0IGJlIGxvY2tlZCB3aGVu
IGNoYW5naW5nIHRoZSBudW1iZXIgb2Ygb3V0cHV0IGNoYW5uZWxzLgotICAgICAgICAgICAgQXVk
aW9Db250ZXh0OjpBdXRvTG9ja2VyIGNvbnRleHRMb2NrZXIoY29udGV4dCgpKTsKKyAgICAgICAg
ICAgIEF1ZGlvQ29udGV4dEJhc2U6OkF1dG9Mb2NrZXIgY29udGV4dExvY2tlcihjb250ZXh0KCkp
OwogCiAgICAgICAgICAgICAvLyBEbyBhbnkgbmVjZXNzc2FyeSByZS1jb25maWd1cmF0aW9uIHRv
IHRoZSBvdXRwdXQncyBudW1iZXIgb2YgY2hhbm5lbHMuCiAgICAgICAgICAgICBvdXRwdXQoMCkt
PnNldE51bWJlck9mQ2hhbm5lbHMobnVtYmVyT2ZDaGFubmVscyk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL01lZGlhRWxlbWVudEF1ZGlvU291cmNlTm9kZS5o
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9NZWRpYUVsZW1lbnRBdWRpb1NvdXJj
ZU5vZGUuaAppbmRleCAzYTEzMTU0MTVmMS4uNzFkMGVkMTM4YTUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vTWVkaWFFbGVtZW50QXVkaW9Tb3VyY2VOb2RlLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9NZWRpYUVsZW1lbnRBdWRpb1Nv
dXJjZU5vZGUuaApAQCAtNDAsNyArNDAsNyBAQCBjbGFzcyBBdWRpb0NvbnRleHQ7CiBjbGFzcyBN
ZWRpYUVsZW1lbnRBdWRpb1NvdXJjZU5vZGUgZmluYWwgOiBwdWJsaWMgQXVkaW9Ob2RlLCBwdWJs
aWMgQXVkaW9Tb3VyY2VQcm92aWRlckNsaWVudCB7CiAgICAgV1RGX01BS0VfSVNPX0FMTE9DQVRF
RChNZWRpYUVsZW1lbnRBdWRpb1NvdXJjZU5vZGUpOwogcHVibGljOgotICAgIHN0YXRpYyBSZWY8
TWVkaWFFbGVtZW50QXVkaW9Tb3VyY2VOb2RlPiBjcmVhdGUoQXVkaW9Db250ZXh0JiwgSFRNTE1l
ZGlhRWxlbWVudCYpOworICAgIHN0YXRpYyBSZWY8TWVkaWFFbGVtZW50QXVkaW9Tb3VyY2VOb2Rl
PiBjcmVhdGUoQXVkaW9Db250ZXh0QmFzZSYsIEhUTUxNZWRpYUVsZW1lbnQmKTsKIAogICAgIHZp
cnR1YWwgfk1lZGlhRWxlbWVudEF1ZGlvU291cmNlTm9kZSgpOwogCkBAIC01Nyw3ICs1Nyw3IEBA
IHB1YmxpYzoKICAgICB2b2lkIHVubG9jaygpOwogCiBwcml2YXRlOgotICAgIE1lZGlhRWxlbWVu
dEF1ZGlvU291cmNlTm9kZShBdWRpb0NvbnRleHQmLCBIVE1MTWVkaWFFbGVtZW50Jik7CisgICAg
TWVkaWFFbGVtZW50QXVkaW9Tb3VyY2VOb2RlKEF1ZGlvQ29udGV4dEJhc2UmLCBIVE1MTWVkaWFF
bGVtZW50Jik7CiAKICAgICBkb3VibGUgdGFpbFRpbWUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVy
biAwOyB9CiAgICAgZG91YmxlIGxhdGVuY3lUaW1lKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4g
MDsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9NZWRpYVN0
cmVhbUF1ZGlvRGVzdGluYXRpb25Ob2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
YXVkaW8vTWVkaWFTdHJlYW1BdWRpb0Rlc3RpbmF0aW9uTm9kZS5jcHAKaW5kZXggZDc2NjI5MzAz
MDguLjMwZjFhMjIyYmUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1
ZGlvL01lZGlhU3RyZWFtQXVkaW9EZXN0aW5hdGlvbk5vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViYXVkaW8vTWVkaWFTdHJlYW1BdWRpb0Rlc3RpbmF0aW9uTm9kZS5jcHAK
QEAgLTM5LDEyICszOSwxMiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFdURl9NQUtFX0lTT19B
TExPQ0FURURfSU1QTChNZWRpYVN0cmVhbUF1ZGlvRGVzdGluYXRpb25Ob2RlKTsKIAotUmVmPE1l
ZGlhU3RyZWFtQXVkaW9EZXN0aW5hdGlvbk5vZGU+IE1lZGlhU3RyZWFtQXVkaW9EZXN0aW5hdGlv
bk5vZGU6OmNyZWF0ZShBdWRpb0NvbnRleHQmIGNvbnRleHQsIHNpemVfdCBudW1iZXJPZkNoYW5u
ZWxzKQorUmVmPE1lZGlhU3RyZWFtQXVkaW9EZXN0aW5hdGlvbk5vZGU+IE1lZGlhU3RyZWFtQXVk
aW9EZXN0aW5hdGlvbk5vZGU6OmNyZWF0ZShBdWRpb0NvbnRleHRCYXNlJiBjb250ZXh0LCBzaXpl
X3QgbnVtYmVyT2ZDaGFubmVscykKIHsKICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBNZWRpYVN0
cmVhbUF1ZGlvRGVzdGluYXRpb25Ob2RlKGNvbnRleHQsIG51bWJlck9mQ2hhbm5lbHMpKTsKIH0K
IAotTWVkaWFTdHJlYW1BdWRpb0Rlc3RpbmF0aW9uTm9kZTo6TWVkaWFTdHJlYW1BdWRpb0Rlc3Rp
bmF0aW9uTm9kZShBdWRpb0NvbnRleHQmIGNvbnRleHQsIHNpemVfdCBudW1iZXJPZkNoYW5uZWxz
KQorTWVkaWFTdHJlYW1BdWRpb0Rlc3RpbmF0aW9uTm9kZTo6TWVkaWFTdHJlYW1BdWRpb0Rlc3Rp
bmF0aW9uTm9kZShBdWRpb0NvbnRleHRCYXNlJiBjb250ZXh0LCBzaXplX3QgbnVtYmVyT2ZDaGFu
bmVscykKICAgICA6IEF1ZGlvQmFzaWNJbnNwZWN0b3JOb2RlKGNvbnRleHQsIGNvbnRleHQuc2Ft
cGxlUmF0ZSgpLCBudW1iZXJPZkNoYW5uZWxzKQogICAgICwgbV9zb3VyY2UoTWVkaWFTdHJlYW1B
dWRpb1NvdXJjZTo6Y3JlYXRlKGNvbnRleHQuc2FtcGxlUmF0ZSgpKSkKICAgICAsIG1fc3RyZWFt
KE1lZGlhU3RyZWFtOjpjcmVhdGUoKmNvbnRleHQuZG9jdW1lbnQoKSwgTWVkaWFTdHJlYW1Qcml2
YXRlOjpjcmVhdGUoY29udGV4dC5kb2N1bWVudCgpLT5sb2dnZXIoKSwgbV9zb3VyY2UuY29weVJl
ZigpKSkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL01lZGlh
U3RyZWFtQXVkaW9EZXN0aW5hdGlvbk5vZGUuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
YXVkaW8vTWVkaWFTdHJlYW1BdWRpb0Rlc3RpbmF0aW9uTm9kZS5oCmluZGV4IGY1YTdlOGZlYzRh
Li5kYmFkOTI4ZDc5NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRp
by9NZWRpYVN0cmVhbUF1ZGlvRGVzdGluYXRpb25Ob2RlLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJhdWRpby9NZWRpYVN0cmVhbUF1ZGlvRGVzdGluYXRpb25Ob2RlLmgKQEAgLTMy
LDEzICszMiwxMyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIEF1ZGlvQ29udGV4
dDsKK2NsYXNzIEF1ZGlvQ29udGV4dEJhc2U7CiBjbGFzcyBNZWRpYVN0cmVhbUF1ZGlvU291cmNl
OwogCiBjbGFzcyBNZWRpYVN0cmVhbUF1ZGlvRGVzdGluYXRpb25Ob2RlIGZpbmFsIDogcHVibGlj
IEF1ZGlvQmFzaWNJbnNwZWN0b3JOb2RlIHsKICAgICBXVEZfTUFLRV9JU09fQUxMT0NBVEVEKE1l
ZGlhU3RyZWFtQXVkaW9EZXN0aW5hdGlvbk5vZGUpOwogcHVibGljOgotICAgIHN0YXRpYyBSZWY8
TWVkaWFTdHJlYW1BdWRpb0Rlc3RpbmF0aW9uTm9kZT4gY3JlYXRlKEF1ZGlvQ29udGV4dCYsIHNp
emVfdCBudW1iZXJPZkNoYW5uZWxzKTsKKyAgICBzdGF0aWMgUmVmPE1lZGlhU3RyZWFtQXVkaW9E
ZXN0aW5hdGlvbk5vZGU+IGNyZWF0ZShBdWRpb0NvbnRleHRCYXNlJiwgc2l6ZV90IG51bWJlck9m
Q2hhbm5lbHMpOwogCiAgICAgdmlydHVhbCB+TWVkaWFTdHJlYW1BdWRpb0Rlc3RpbmF0aW9uTm9k
ZSgpOwogCkBAIC00OSw3ICs0OSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHJlc2V0KCkgZmluYWw7
CiAgICAgCiBwcml2YXRlOgotICAgIE1lZGlhU3RyZWFtQXVkaW9EZXN0aW5hdGlvbk5vZGUoQXVk
aW9Db250ZXh0Jiwgc2l6ZV90IG51bWJlck9mQ2hhbm5lbHMpOworICAgIE1lZGlhU3RyZWFtQXVk
aW9EZXN0aW5hdGlvbk5vZGUoQXVkaW9Db250ZXh0QmFzZSYsIHNpemVfdCBudW1iZXJPZkNoYW5u
ZWxzKTsKIAogICAgIGRvdWJsZSB0YWlsVGltZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIDA7IH0K
ICAgICBkb3VibGUgbGF0ZW5jeVRpbWUoKSBjb25zdCBmaW5hbCB7IHJldHVybiAwOyB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL01lZGlhU3RyZWFtQXVkaW9T
b3VyY2VOb2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vTWVkaWFTdHJl
YW1BdWRpb1NvdXJjZU5vZGUuY3BwCmluZGV4IDFiNGZiNmQxOTIyLi4zNWU1NWE5MjAyYyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9NZWRpYVN0cmVhbUF1ZGlv
U291cmNlTm9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9NZWRp
YVN0cmVhbUF1ZGlvU291cmNlTm9kZS5jcHAKQEAgLTM4LDEyICszOCwxMiBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKIFdURl9NQUtFX0lTT19BTExPQ0FURURfSU1QTChNZWRpYVN0cmVhbUF1ZGlv
U291cmNlTm9kZSk7CiAKLVJlZjxNZWRpYVN0cmVhbUF1ZGlvU291cmNlTm9kZT4gTWVkaWFTdHJl
YW1BdWRpb1NvdXJjZU5vZGU6OmNyZWF0ZShBdWRpb0NvbnRleHQmIGNvbnRleHQsIE1lZGlhU3Ry
ZWFtJiBtZWRpYVN0cmVhbSwgTWVkaWFTdHJlYW1UcmFjayYgYXVkaW9UcmFjaykKK1JlZjxNZWRp
YVN0cmVhbUF1ZGlvU291cmNlTm9kZT4gTWVkaWFTdHJlYW1BdWRpb1NvdXJjZU5vZGU6OmNyZWF0
ZShBdWRpb0NvbnRleHRCYXNlJiBjb250ZXh0LCBNZWRpYVN0cmVhbSYgbWVkaWFTdHJlYW0sIE1l
ZGlhU3RyZWFtVHJhY2smIGF1ZGlvVHJhY2spCiB7CiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcg
TWVkaWFTdHJlYW1BdWRpb1NvdXJjZU5vZGUoY29udGV4dCwgbWVkaWFTdHJlYW0sIGF1ZGlvVHJh
Y2spKTsKIH0KIAotTWVkaWFTdHJlYW1BdWRpb1NvdXJjZU5vZGU6Ok1lZGlhU3RyZWFtQXVkaW9T
b3VyY2VOb2RlKEF1ZGlvQ29udGV4dCYgY29udGV4dCwgTWVkaWFTdHJlYW0mIG1lZGlhU3RyZWFt
LCBNZWRpYVN0cmVhbVRyYWNrJiBhdWRpb1RyYWNrKQorTWVkaWFTdHJlYW1BdWRpb1NvdXJjZU5v
ZGU6Ok1lZGlhU3RyZWFtQXVkaW9Tb3VyY2VOb2RlKEF1ZGlvQ29udGV4dEJhc2UmIGNvbnRleHQs
IE1lZGlhU3RyZWFtJiBtZWRpYVN0cmVhbSwgTWVkaWFTdHJlYW1UcmFjayYgYXVkaW9UcmFjaykK
ICAgICA6IEF1ZGlvTm9kZShjb250ZXh0LCBjb250ZXh0LnNhbXBsZVJhdGUoKSkKICAgICAsIG1f
bWVkaWFTdHJlYW0obWVkaWFTdHJlYW0pCiAgICAgLCBtX2F1ZGlvVHJhY2soYXVkaW9UcmFjaykK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vTWVkaWFTdHJlYW1B
dWRpb1NvdXJjZU5vZGUuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vTWVkaWFT
dHJlYW1BdWRpb1NvdXJjZU5vZGUuaAppbmRleCBlM2VkZWZlMWJkNS4uYzcyZDMxMjIzM2QgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vTWVkaWFTdHJlYW1BdWRp
b1NvdXJjZU5vZGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL01lZGlh
U3RyZWFtQXVkaW9Tb3VyY2VOb2RlLmgKQEAgLTQwLDcgKzQwLDcgQEAgY2xhc3MgTXVsdGlDaGFu
bmVsUmVzYW1wbGVyOwogY2xhc3MgTWVkaWFTdHJlYW1BdWRpb1NvdXJjZU5vZGUgZmluYWwgOiBw
dWJsaWMgQXVkaW9Ob2RlLCBwdWJsaWMgQXVkaW9Tb3VyY2VQcm92aWRlckNsaWVudCB7CiAgICAg
V1RGX01BS0VfSVNPX0FMTE9DQVRFRChNZWRpYVN0cmVhbUF1ZGlvU291cmNlTm9kZSk7CiBwdWJs
aWM6Ci0gICAgc3RhdGljIFJlZjxNZWRpYVN0cmVhbUF1ZGlvU291cmNlTm9kZT4gY3JlYXRlKEF1
ZGlvQ29udGV4dCYsIE1lZGlhU3RyZWFtJiwgTWVkaWFTdHJlYW1UcmFjayYpOworICAgIHN0YXRp
YyBSZWY8TWVkaWFTdHJlYW1BdWRpb1NvdXJjZU5vZGU+IGNyZWF0ZShBdWRpb0NvbnRleHRCYXNl
JiwgTWVkaWFTdHJlYW0mLCBNZWRpYVN0cmVhbVRyYWNrJik7CiAKICAgICB2aXJ0dWFsIH5NZWRp
YVN0cmVhbUF1ZGlvU291cmNlTm9kZSgpOwogCkBAIC01NCw3ICs1NCw3IEBAIHB1YmxpYzoKICAg
ICB2b2lkIHNldEZvcm1hdChzaXplX3QgbnVtYmVyT2ZDaGFubmVscywgZmxvYXQgc2FtcGxlUmF0
ZSkgb3ZlcnJpZGU7CiAKIHByaXZhdGU6Ci0gICAgTWVkaWFTdHJlYW1BdWRpb1NvdXJjZU5vZGUo
QXVkaW9Db250ZXh0JiwgTWVkaWFTdHJlYW0mLCBNZWRpYVN0cmVhbVRyYWNrJik7CisgICAgTWVk
aWFTdHJlYW1BdWRpb1NvdXJjZU5vZGUoQXVkaW9Db250ZXh0QmFzZSYsIE1lZGlhU3RyZWFtJiwg
TWVkaWFTdHJlYW1UcmFjayYpOwogCiAgICAgZG91YmxlIHRhaWxUaW1lKCkgY29uc3Qgb3ZlcnJp
ZGUgeyByZXR1cm4gMDsgfQogICAgIGRvdWJsZSBsYXRlbmN5VGltZSgpIGNvbnN0IG92ZXJyaWRl
IHsgcmV0dXJuIDA7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVk
aW8vT2ZmbGluZUF1ZGlvQ29udGV4dC5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1
ZGlvL09mZmxpbmVBdWRpb0NvbnRleHQuaWRsCmluZGV4IGY2ZWNiMWE2ODU4Li4wZTcxYTA2YmMz
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9PZmZsaW5lQXVk
aW9Db250ZXh0LmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL09mZmxp
bmVBdWRpb0NvbnRleHQuaWRsCkBAIC0yNCw4ICsyNCw4IEBACiAKIFsKICAgICBDb25kaXRpb25h
bD1XRUJfQVVESU8sCisgICAgRW5hYmxlZEJ5U2V0dGluZz1Nb2Rlcm5VbnByZWZpeGVkV2ViQXVk
aW8sCiAgICAgSlNHZW5lcmF0ZVRvSlNPYmplY3QsCi0gICAgSW50ZXJmYWNlTmFtZT13ZWJraXRP
ZmZsaW5lQXVkaW9Db250ZXh0CiBdIGludGVyZmFjZSBPZmZsaW5lQXVkaW9Db250ZXh0IDogQXVk
aW9Db250ZXh0IHsKICAgICBbQ2FsbFdpdGg9U2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgTWF5VGhy
b3dFeGNlcHRpb25dIGNvbnN0cnVjdG9yKHVuc2lnbmVkIGxvbmcgbnVtYmVyT2ZDaGFubmVscywg
dW5zaWduZWQgbG9uZyBudW1iZXJPZkZyYW1lcywgdW5yZXN0cmljdGVkIGZsb2F0IHNhbXBsZVJh
dGUpOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vT2Zm
bGluZUF1ZGlvRGVzdGluYXRpb25Ob2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
YXVkaW8vT2ZmbGluZUF1ZGlvRGVzdGluYXRpb25Ob2RlLmNwcAppbmRleCA2YTE5NTU0NmNmNy4u
ZmVjNTA4Y2JmZjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8v
T2ZmbGluZUF1ZGlvRGVzdGluYXRpb25Ob2RlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmF1ZGlvL09mZmxpbmVBdWRpb0Rlc3RpbmF0aW9uTm9kZS5jcHAKQEAgLTQxLDcgKzQx
LDcgQEAgV1RGX01BS0VfSVNPX0FMTE9DQVRFRF9JTVBMKE9mZmxpbmVBdWRpb0Rlc3RpbmF0aW9u
Tm9kZSk7CiAgICAgCiBjb25zdCBzaXplX3QgcmVuZGVyUXVhbnR1bVNpemUgPSAxMjg7ICAgIAog
Ci1PZmZsaW5lQXVkaW9EZXN0aW5hdGlvbk5vZGU6Ok9mZmxpbmVBdWRpb0Rlc3RpbmF0aW9uTm9k
ZShBdWRpb0NvbnRleHQmIGNvbnRleHQsIEF1ZGlvQnVmZmVyKiByZW5kZXJUYXJnZXQpCitPZmZs
aW5lQXVkaW9EZXN0aW5hdGlvbk5vZGU6Ok9mZmxpbmVBdWRpb0Rlc3RpbmF0aW9uTm9kZShBdWRp
b0NvbnRleHRCYXNlJiBjb250ZXh0LCBBdWRpb0J1ZmZlciogcmVuZGVyVGFyZ2V0KQogICAgIDog
QXVkaW9EZXN0aW5hdGlvbk5vZGUoY29udGV4dCwgcmVuZGVyVGFyZ2V0LT5zYW1wbGVSYXRlKCkp
CiAgICAgLCBtX3JlbmRlclRhcmdldChyZW5kZXJUYXJnZXQpCiAgICAgLCBtX3N0YXJ0ZWRSZW5k
ZXJpbmcoZmFsc2UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlv
L09mZmxpbmVBdWRpb0Rlc3RpbmF0aW9uTm9kZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJhdWRpby9PZmZsaW5lQXVkaW9EZXN0aW5hdGlvbk5vZGUuaAppbmRleCBkYTI0OTU3NGQ0OC4u
Zjg3MTBmZGUxMGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8v
T2ZmbGluZUF1ZGlvRGVzdGluYXRpb25Ob2RlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJhdWRpby9PZmZsaW5lQXVkaW9EZXN0aW5hdGlvbk5vZGUuaApAQCAtMzcsOSArMzcsOSBA
QCBjbGFzcyBBdWRpb0NvbnRleHQ7CiBjbGFzcyBPZmZsaW5lQXVkaW9EZXN0aW5hdGlvbk5vZGUg
ZmluYWwgOiBwdWJsaWMgQXVkaW9EZXN0aW5hdGlvbk5vZGUgewogICAgIFdURl9NQUtFX0lTT19B
TExPQ0FURUQoT2ZmbGluZUF1ZGlvRGVzdGluYXRpb25Ob2RlKTsKIHB1YmxpYzoKLSAgICBzdGF0
aWMgUmVmPE9mZmxpbmVBdWRpb0Rlc3RpbmF0aW9uTm9kZT4gY3JlYXRlKEF1ZGlvQ29udGV4dCYg
Y29udGV4dCwgQXVkaW9CdWZmZXIqIHJlbmRlclRhcmdldCkKKyAgICBzdGF0aWMgUmVmPE9mZmxp
bmVBdWRpb0Rlc3RpbmF0aW9uTm9kZT4gY3JlYXRlKEF1ZGlvQ29udGV4dEJhc2UmIGNvbnRleHQs
IEF1ZGlvQnVmZmVyKiByZW5kZXJUYXJnZXQpCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRS
ZWYoKm5ldyBPZmZsaW5lQXVkaW9EZXN0aW5hdGlvbk5vZGUoY29udGV4dCwgcmVuZGVyVGFyZ2V0
KSk7ICAgICAKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgT2ZmbGluZUF1ZGlvRGVzdGlu
YXRpb25Ob2RlKGNvbnRleHQsIHJlbmRlclRhcmdldCkpOwogICAgIH0KIAogICAgIHZpcnR1YWwg
fk9mZmxpbmVBdWRpb0Rlc3RpbmF0aW9uTm9kZSgpOwpAQCAtNTUsNyArNTUsNyBAQCBwdWJsaWM6
CiAgICAgZmxvYXQgc2FtcGxlUmF0ZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fcmVuZGVy
VGFyZ2V0LT5zYW1wbGVSYXRlKCk7IH0KIAogcHJpdmF0ZToKLSAgICBPZmZsaW5lQXVkaW9EZXN0
aW5hdGlvbk5vZGUoQXVkaW9Db250ZXh0JiwgQXVkaW9CdWZmZXIqIHJlbmRlclRhcmdldCk7Cisg
ICAgT2ZmbGluZUF1ZGlvRGVzdGluYXRpb25Ob2RlKEF1ZGlvQ29udGV4dEJhc2UmLCBBdWRpb0J1
ZmZlciogcmVuZGVyVGFyZ2V0KTsKIAogICAgIC8vIFRoaXMgQXVkaW9Ob2RlIHJlbmRlcnMgaW50
byB0aGlzIEF1ZGlvQnVmZmVyLgogICAgIFJlZlB0cjxBdWRpb0J1ZmZlcj4gbV9yZW5kZXJUYXJn
ZXQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL09zY2lsbGF0
b3JOb2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vT3NjaWxsYXRvck5v
ZGUuY3BwCmluZGV4IDk1NjAwNTNhNDgwLi5lOGYzMWM3MjIwZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9Pc2NpbGxhdG9yTm9kZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9Pc2NpbGxhdG9yTm9kZS5jcHAKQEAgLTQ1LDEyICs0
NSwxMiBAQCBQZXJpb2RpY1dhdmUqIE9zY2lsbGF0b3JOb2RlOjpzX3BlcmlvZGljV2F2ZVNxdWFy
ZSA9IG51bGxwdHI7CiBQZXJpb2RpY1dhdmUqIE9zY2lsbGF0b3JOb2RlOjpzX3BlcmlvZGljV2F2
ZVNhd3Rvb3RoID0gbnVsbHB0cjsKIFBlcmlvZGljV2F2ZSogT3NjaWxsYXRvck5vZGU6OnNfcGVy
aW9kaWNXYXZlVHJpYW5nbGUgPSBudWxscHRyOwogCi1SZWY8T3NjaWxsYXRvck5vZGU+IE9zY2ls
bGF0b3JOb2RlOjpjcmVhdGUoQXVkaW9Db250ZXh0JiBjb250ZXh0LCBmbG9hdCBzYW1wbGVSYXRl
KQorUmVmPE9zY2lsbGF0b3JOb2RlPiBPc2NpbGxhdG9yTm9kZTo6Y3JlYXRlKEF1ZGlvQ29udGV4
dEJhc2UmIGNvbnRleHQsIGZsb2F0IHNhbXBsZVJhdGUpCiB7CiAgICAgcmV0dXJuIGFkb3B0UmVm
KCpuZXcgT3NjaWxsYXRvck5vZGUoY29udGV4dCwgc2FtcGxlUmF0ZSkpOwogfQogCi1Pc2NpbGxh
dG9yTm9kZTo6T3NjaWxsYXRvck5vZGUoQXVkaW9Db250ZXh0JiBjb250ZXh0LCBmbG9hdCBzYW1w
bGVSYXRlKQorT3NjaWxsYXRvck5vZGU6Ok9zY2lsbGF0b3JOb2RlKEF1ZGlvQ29udGV4dEJhc2Um
IGNvbnRleHQsIGZsb2F0IHNhbXBsZVJhdGUpCiAgICAgOiBBdWRpb1NjaGVkdWxlZFNvdXJjZU5v
ZGUoY29udGV4dCwgc2FtcGxlUmF0ZSkKICAgICAsIG1fZmlyc3RSZW5kZXIodHJ1ZSkKICAgICAs
IG1fdmlydHVhbFJlYWRJbmRleCgwKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJhdWRpby9Pc2NpbGxhdG9yTm9kZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJh
dWRpby9Pc2NpbGxhdG9yTm9kZS5oCmluZGV4IDQyZmYwYzE5MjRiLi4wODk1YmNlM2RkZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9Pc2NpbGxhdG9yTm9kZS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vT3NjaWxsYXRvck5vZGUuaApA
QCAtNDUsNyArNDUsNyBAQCBwdWJsaWM6CiAgICAgICAgIEN1c3RvbQogICAgIH07CiAKLSAgICBz
dGF0aWMgUmVmPE9zY2lsbGF0b3JOb2RlPiBjcmVhdGUoQXVkaW9Db250ZXh0JiwgZmxvYXQgc2Ft
cGxlUmF0ZSk7CisgICAgc3RhdGljIFJlZjxPc2NpbGxhdG9yTm9kZT4gY3JlYXRlKEF1ZGlvQ29u
dGV4dEJhc2UmLCBmbG9hdCBzYW1wbGVSYXRlKTsKIAogICAgIHZpcnR1YWwgfk9zY2lsbGF0b3JO
b2RlKCk7CiAKQEAgLTYwLDcgKzYwLDcgQEAgcHVibGljOgogICAgIHZvaWQgc2V0UGVyaW9kaWNX
YXZlKFBlcmlvZGljV2F2ZSopOwogCiBwcml2YXRlOgotICAgIE9zY2lsbGF0b3JOb2RlKEF1ZGlv
Q29udGV4dCYsIGZsb2F0IHNhbXBsZVJhdGUpOworICAgIE9zY2lsbGF0b3JOb2RlKEF1ZGlvQ29u
dGV4dEJhc2UmLCBmbG9hdCBzYW1wbGVSYXRlKTsKIAogICAgIHZvaWQgcHJvY2VzcyhzaXplX3Qg
ZnJhbWVzVG9Qcm9jZXNzKSBmaW5hbDsKICAgICB2b2lkIHJlc2V0KCkgZmluYWw7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1Bhbm5lck5vZGUuY3BwIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9QYW5uZXJOb2RlLmNwcAppbmRleCBlYzgwZTY5
ZDJhYi4uYWU0MmYxMTRiYmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
YXVkaW8vUGFubmVyTm9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRp
by9QYW5uZXJOb2RlLmNwcApAQCAtNDgsOCArNDgsMTMgQEAgc3RhdGljIHZvaWQgZml4TkFOcyhk
b3VibGUgJngpCiAgICAgICAgIHggPSAwLjA7CiB9CiAKLVBhbm5lck5vZGU6OlBhbm5lck5vZGUo
QXVkaW9Db250ZXh0JiBjb250ZXh0LCBmbG9hdCBzYW1wbGVSYXRlKQorUGFubmVyTm9kZUJhc2U6
OlBhbm5lck5vZGVCYXNlKEF1ZGlvQ29udGV4dEJhc2UmIGNvbnRleHQsIGZsb2F0IHNhbXBsZVJh
dGUpCiAgICAgOiBBdWRpb05vZGUoY29udGV4dCwgc2FtcGxlUmF0ZSkKK3sKK30KKworUGFubmVy
Tm9kZTo6UGFubmVyTm9kZShBdWRpb0NvbnRleHQmIGNvbnRleHQsIGZsb2F0IHNhbXBsZVJhdGUp
CisgICAgOiBQYW5uZXJOb2RlQmFzZShjb250ZXh0LCBzYW1wbGVSYXRlKQogICAgICwgbV9wYW5u
aW5nTW9kZWwoUGFubmluZ01vZGVsVHlwZTo6SFJURikKICAgICAsIG1fbGFzdEdhaW4oLTEuMCkK
ICAgICAsIG1fcG9zaXRpb25YKEF1ZGlvUGFyYW06OmNyZWF0ZShjb250ZXh0LCAicG9zaXRpb25Y
Il9zLCAwLCAtRkxUX01BWCwgRkxUX01BWCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmF1ZGlvL1Bhbm5lck5vZGUuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
YXVkaW8vUGFubmVyTm9kZS5oCmluZGV4IDg0ODBjMjMzMjgwLi4yOWI2NDhkMDYwNyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9QYW5uZXJOb2RlLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9QYW5uZXJOb2RlLmgKQEAgLTI2LDYgKzI2
LDcgQEAKIAogI2lmIEVOQUJMRShXRUJfQVVESU8pCiAKKyNpbmNsdWRlICJBdWRpb0NvbnRleHQu
aCIKICNpbmNsdWRlICJBdWRpb0xpc3RlbmVyLmgiCiAjaW5jbHVkZSAiQXVkaW9Ob2RlLmgiCiAj
aW5jbHVkZSAiQXVkaW9QYXJhbS5oIgpAQCAtNDEsNiArNDIsMTYgQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogCiBjbGFzcyBIUlRGRGF0YWJhc2VMb2FkZXI7CiAKK2NsYXNzIFBhbm5lck5vZGVCYXNl
IDogcHVibGljIEF1ZGlvTm9kZSB7CitwdWJsaWM6CisgICAgdmlydHVhbCB+UGFubmVyTm9kZUJh
c2UoKSA9IGRlZmF1bHQ7CisKKyAgICB2aXJ0dWFsIGZsb2F0IGRvcHBsZXJSYXRlKCkgPSAwOwor
Citwcm90ZWN0ZWQ6CisgICAgUGFubmVyTm9kZUJhc2UoQXVkaW9Db250ZXh0QmFzZSYsIGZsb2F0
IHNhbXBsZVJhdGUpOworfTsKKwogLy8gUGFubmVyTm9kZSBpcyBhbiBBdWRpb05vZGUgd2l0aCBv
bmUgaW5wdXQgYW5kIG9uZSBvdXRwdXQuCiAvLyBJdCBwb3NpdGlvbnMgYSBzb3VuZCBpbiAzRCBz
cGFjZSwgd2l0aCB0aGUgZXhhY3QgZWZmZWN0IGRlcGVuZGVudCBvbiB0aGUgcGFubmluZyBtb2Rl
bC4KIC8vIEl0IGhhcyBhIHBvc2l0aW9uIGFuZCBhbiBvcmllbnRhdGlvbiBpbiAzRCBzcGFjZSB3
aGljaCBpcyByZWxhdGl2ZSB0byB0aGUgcG9zaXRpb24gYW5kIG9yaWVudGF0aW9uIG9mIHRoZSBj
b250ZXh0J3MgQXVkaW9MaXN0ZW5lci4KQEAgLTQ4LDcgKzU5LDcgQEAgY2xhc3MgSFJURkRhdGFi
YXNlTG9hZGVyOwogLy8gQSBjb25lIGVmZmVjdCB3aWxsIGF0dGVudWF0ZSB0aGUgZ2FpbiBhcyB0
aGUgb3JpZW50YXRpb24gbW92ZXMgYXdheSBmcm9tIHRoZSBsaXN0ZW5lci4KIC8vIEFsbCBvZiB0
aGVzZSBlZmZlY3RzIGZvbGxvdyB0aGUgT3BlbkFMIHNwZWNpZmljYXRpb24gdmVyeSBjbG9zZWx5
LgogCi1jbGFzcyBQYW5uZXJOb2RlIGZpbmFsIDogcHVibGljIEF1ZGlvTm9kZSB7CitjbGFzcyBQ
YW5uZXJOb2RlIGZpbmFsIDogcHVibGljIFBhbm5lck5vZGVCYXNlIHsKICAgICBXVEZfTUFLRV9J
U09fQUxMT0NBVEVEKFBhbm5lck5vZGUpOwogcHVibGljOgogICAgIHN0YXRpYyBSZWY8UGFubmVy
Tm9kZT4gY3JlYXRlKEF1ZGlvQ29udGV4dCYgY29udGV4dCwgZmxvYXQgc2FtcGxlUmF0ZSkKQEAg
LTU4LDYgKzY5LDkgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCB+UGFubmVyTm9kZSgpOwogCisg
ICAgQXVkaW9Db250ZXh0JiBjb250ZXh0KCkgeyByZXR1cm4gZG93bmNhc3Q8QXVkaW9Db250ZXh0
PihBdWRpb05vZGU6OmNvbnRleHQoKSk7IH0KKyAgICBjb25zdCBBdWRpb0NvbnRleHQmIGNvbnRl
eHQoKSBjb25zdCB7IHJldHVybiBkb3duY2FzdDxBdWRpb0NvbnRleHQ+KEF1ZGlvTm9kZTo6Y29u
dGV4dCgpKTsgfQorCiAgICAgLy8gQXVkaW9Ob2RlCiAgICAgdm9pZCBwcm9jZXNzKHNpemVfdCBm
cmFtZXNUb1Byb2Nlc3MpIG92ZXJyaWRlOwogICAgIHZvaWQgcHVsbElucHV0cyhzaXplX3QgZnJh
bWVzVG9Qcm9jZXNzKSBvdmVycmlkZTsKQEAgLTExMSw3ICsxMjUsNyBAQCBwdWJsaWM6CiAgICAg
dm9pZCBzZXRDb25lT3V0ZXJHYWluKGRvdWJsZSBhbmdsZSkgeyBtX2NvbmVFZmZlY3Quc2V0T3V0
ZXJHYWluKGFuZ2xlKTsgfQogCiAgICAgdm9pZCBnZXRBemltdXRoRWxldmF0aW9uKGRvdWJsZSog
b3V0QXppbXV0aCwgZG91YmxlKiBvdXRFbGV2YXRpb24pOwotICAgIGZsb2F0IGRvcHBsZXJSYXRl
KCk7CisgICAgZmxvYXQgZG9wcGxlclJhdGUoKSBmaW5hbDsKIAogICAgIC8vIEFjY2Vzc29ycyBm
b3IgZHluYW1pY2FsbHkgY2FsY3VsYXRlZCBnYWluIHZhbHVlcy4KICAgICBBdWRpb1BhcmFtKiBk
aXN0YW5jZUdhaW4oKSB7IHJldHVybiBtX2Rpc3RhbmNlR2Fpbi5nZXQoKTsgfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9QYW5uZXJOb2RlLmlkbCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vUGFubmVyTm9kZS5pZGwKaW5kZXggMDMyOTgzN2Qy
ZjUuLjdiYjkyYzRmOGZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1
ZGlvL1Bhbm5lck5vZGUuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8v
UGFubmVyTm9kZS5pZGwKQEAgLTIyLDI3ICsyMiwxMCBAQAogICogU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotWwotICAg
IENvbmRpdGlvbmFsPVdFQl9BVURJTywKLSAgICBJbXBsZW1lbnRlZEFzPVBhbm5pbmdNb2RlbFR5
cGUKLV0gZW51bSBQYW5uaW5nTW9kZWxUeXBlIHsKLSAgICAiZXF1YWxwb3dlciIsCi0gICAgIkhS
VEYiCi19OwotCi1bCi0gICAgQ29uZGl0aW9uYWw9V0VCX0FVRElPLAotICAgIEltcGxlbWVudGVk
QXM9RGlzdGFuY2VNb2RlbFR5cGUKLV0gZW51bSBEaXN0YW5jZU1vZGVsVHlwZSB7Ci0gICAgImxp
bmVhciIsCi0gICAgImludmVyc2UiLAotICAgICJleHBvbmVudGlhbCIKLX07Ci0KIFsKICAgICBD
b25kaXRpb25hbD1XRUJfQVVESU8sCiAgICAgSlNHZW5lcmF0ZVRvSlNPYmplY3QsCi0gICAgSW50
ZXJmYWNlTmFtZT13ZWJraXRBdWRpb1Bhbm5lck5vZGUsCisgICAgRW5hYmxlZEJ5U2V0dGluZz1N
b2Rlcm5VbnByZWZpeGVkV2ViQXVkaW8sCiBdIGludGVyZmFjZSBQYW5uZXJOb2RlIDogQXVkaW9O
b2RlIHsKICAgICAvLyBEZWZhdWx0IG1vZGVsIGZvciBzdGVyZW8gaXMgSFJURiAKICAgICBhdHRy
aWJ1dGUgUGFubmluZ01vZGVsVHlwZSBwYW5uaW5nTW9kZWw7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1Bhbm5pbmdNb2RlbFR5cGUuaCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViYXVkaW8vUGFubmluZ01vZGVsVHlwZS5oCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwLi5hYjBiMjI3MTJhMQotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vUGFubmluZ01vZGVsVHlwZS5oCkBAIC0wLDAg
KzEsMjcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAsIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5EIEFOWQorICog
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OCisgKiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMKKyAqIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiUGFubmVyLmgi
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1Bhbm5pbmdNb2Rl
bFR5cGUuaWRsIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9QYW5uaW5nTW9kZWxU
eXBlLmlkbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uYmY3ZGY4ZjU1
NDIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1Bh
bm5pbmdNb2RlbFR5cGUuaWRsCkBAIC0wLDAgKzEsMzAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTAsIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9T
RSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRT
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAq
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTgorICogQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTCisgKiBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCitbCisgICAg
Q29uZGl0aW9uYWw9V0VCX0FVRElPLAorXSBlbnVtIFBhbm5pbmdNb2RlbFR5cGUgeworICAgICJl
cXVhbHBvd2VyIiwKKyAgICAiSFJURiIKK307CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmF1ZGlvL1NjcmlwdFByb2Nlc3Nvck5vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJhdWRpby9TY3JpcHRQcm9jZXNzb3JOb2RlLmNwcAppbmRleCA5MWM3NTM3ZTE1
ZS4uNzYxMGIxNTAyNDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVk
aW8vU2NyaXB0UHJvY2Vzc29yTm9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJhdWRpby9TY3JpcHRQcm9jZXNzb3JOb2RlLmNwcApAQCAtNDQsMTIgKzQ0LDEyIEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAogV1RGX01BS0VfSVNPX0FMTE9DQVRFRF9JTVBMKFNjcmlwdFByb2Nl
c3Nvck5vZGUpOwogCi1SZWY8U2NyaXB0UHJvY2Vzc29yTm9kZT4gU2NyaXB0UHJvY2Vzc29yTm9k
ZTo6Y3JlYXRlKEF1ZGlvQ29udGV4dCYgY29udGV4dCwgZmxvYXQgc2FtcGxlUmF0ZSwgc2l6ZV90
IGJ1ZmZlclNpemUsIHVuc2lnbmVkIG51bWJlck9mSW5wdXRDaGFubmVscywgdW5zaWduZWQgbnVt
YmVyT2ZPdXRwdXRDaGFubmVscykKK1JlZjxTY3JpcHRQcm9jZXNzb3JOb2RlPiBTY3JpcHRQcm9j
ZXNzb3JOb2RlOjpjcmVhdGUoQXVkaW9Db250ZXh0QmFzZSYgY29udGV4dCwgZmxvYXQgc2FtcGxl
UmF0ZSwgc2l6ZV90IGJ1ZmZlclNpemUsIHVuc2lnbmVkIG51bWJlck9mSW5wdXRDaGFubmVscywg
dW5zaWduZWQgbnVtYmVyT2ZPdXRwdXRDaGFubmVscykKIHsKICAgICByZXR1cm4gYWRvcHRSZWYo
Km5ldyBTY3JpcHRQcm9jZXNzb3JOb2RlKGNvbnRleHQsIHNhbXBsZVJhdGUsIGJ1ZmZlclNpemUs
IG51bWJlck9mSW5wdXRDaGFubmVscywgbnVtYmVyT2ZPdXRwdXRDaGFubmVscykpOwogfQogCi1T
Y3JpcHRQcm9jZXNzb3JOb2RlOjpTY3JpcHRQcm9jZXNzb3JOb2RlKEF1ZGlvQ29udGV4dCYgY29u
dGV4dCwgZmxvYXQgc2FtcGxlUmF0ZSwgc2l6ZV90IGJ1ZmZlclNpemUsIHVuc2lnbmVkIG51bWJl
ck9mSW5wdXRDaGFubmVscywgdW5zaWduZWQgbnVtYmVyT2ZPdXRwdXRDaGFubmVscykKK1Njcmlw
dFByb2Nlc3Nvck5vZGU6OlNjcmlwdFByb2Nlc3Nvck5vZGUoQXVkaW9Db250ZXh0QmFzZSYgY29u
dGV4dCwgZmxvYXQgc2FtcGxlUmF0ZSwgc2l6ZV90IGJ1ZmZlclNpemUsIHVuc2lnbmVkIG51bWJl
ck9mSW5wdXRDaGFubmVscywgdW5zaWduZWQgbnVtYmVyT2ZPdXRwdXRDaGFubmVscykKICAgICA6
IEF1ZGlvTm9kZShjb250ZXh0LCBzYW1wbGVSYXRlKQogICAgICwgQWN0aXZlRE9NT2JqZWN0KGNv
bnRleHQuc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKQogICAgICwgbV9kb3VibGVCdWZmZXJJbmRl
eCgwKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9TY3JpcHRQ
cm9jZXNzb3JOb2RlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1NjcmlwdFBy
b2Nlc3Nvck5vZGUuaAppbmRleCA1YTRlN2NlNDc1Mi4uNGMxNGEwNzU3ZGYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vU2NyaXB0UHJvY2Vzc29yTm9kZS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vU2NyaXB0UHJvY2Vzc29yTm9kZS5o
CkBAIC01Miw3ICs1Miw3IEBAIHB1YmxpYzoKICAgICAvLyBUaGlzIHZhbHVlIGNvbnRyb2xzIGhv
dyBmcmVxdWVudGx5IHRoZSBvbmF1ZGlvcHJvY2VzcyBldmVudCBoYW5kbGVyIGlzIGNhbGxlZCBh
bmQgaG93IG1hbnkgc2FtcGxlLWZyYW1lcyBuZWVkIHRvIGJlIHByb2Nlc3NlZCBlYWNoIGNhbGwu
CiAgICAgLy8gTG93ZXIgbnVtYmVycyBmb3IgYnVmZmVyU2l6ZSB3aWxsIHJlc3VsdCBpbiBhIGxv
d2VyIChiZXR0ZXIpIGxhdGVuY3kuIEhpZ2hlciBudW1iZXJzIHdpbGwgYmUgbmVjZXNzYXJ5IHRv
IGF2b2lkIGF1ZGlvIGJyZWFrdXAgYW5kIGdsaXRjaGVzLgogICAgIC8vIFRoZSB2YWx1ZSBjaG9z
ZW4gbXVzdCBjYXJlZnVsbHkgYmFsYW5jZSBiZXR3ZWVuIGxhdGVuY3kgYW5kIGF1ZGlvIHF1YWxp
dHkuCi0gICAgc3RhdGljIFJlZjxTY3JpcHRQcm9jZXNzb3JOb2RlPiBjcmVhdGUoQXVkaW9Db250
ZXh0JiwgZmxvYXQgc2FtcGxlUmF0ZSwgc2l6ZV90IGJ1ZmZlclNpemUsIHVuc2lnbmVkIG51bWJl
ck9mSW5wdXRDaGFubmVscywgdW5zaWduZWQgbnVtYmVyT2ZPdXRwdXRDaGFubmVscyk7CisgICAg
c3RhdGljIFJlZjxTY3JpcHRQcm9jZXNzb3JOb2RlPiBjcmVhdGUoQXVkaW9Db250ZXh0QmFzZSYs
IGZsb2F0IHNhbXBsZVJhdGUsIHNpemVfdCBidWZmZXJTaXplLCB1bnNpZ25lZCBudW1iZXJPZklu
cHV0Q2hhbm5lbHMsIHVuc2lnbmVkIG51bWJlck9mT3V0cHV0Q2hhbm5lbHMpOwogCiAgICAgdmly
dHVhbCB+U2NyaXB0UHJvY2Vzc29yTm9kZSgpOwogCkBAIC03MSw3ICs3MSw3IEBAIHByaXZhdGU6
CiAgICAgZG91YmxlIHRhaWxUaW1lKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgZG91YmxlIGxhdGVu
Y3lUaW1lKCkgY29uc3Qgb3ZlcnJpZGU7CiAKLSAgICBTY3JpcHRQcm9jZXNzb3JOb2RlKEF1ZGlv
Q29udGV4dCYsIGZsb2F0IHNhbXBsZVJhdGUsIHNpemVfdCBidWZmZXJTaXplLCB1bnNpZ25lZCBu
dW1iZXJPZklucHV0Q2hhbm5lbHMsIHVuc2lnbmVkIG51bWJlck9mT3V0cHV0Q2hhbm5lbHMpOwor
ICAgIFNjcmlwdFByb2Nlc3Nvck5vZGUoQXVkaW9Db250ZXh0QmFzZSYsIGZsb2F0IHNhbXBsZVJh
dGUsIHNpemVfdCBidWZmZXJTaXplLCB1bnNpZ25lZCBudW1iZXJPZklucHV0Q2hhbm5lbHMsIHVu
c2lnbmVkIG51bWJlck9mT3V0cHV0Q2hhbm5lbHMpOwogCiAgICAgdm9pZCBmaXJlUHJvY2Vzc0V2
ZW50KCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vV2F2
ZVNoYXBlck5vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9XYXZlU2hh
cGVyTm9kZS5jcHAKaW5kZXggNmU3ZThkZDFjOWMuLmFlNGFmOWYyMzJmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1dhdmVTaGFwZXJOb2RlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1dhdmVTaGFwZXJOb2RlLmNwcApAQCAtMzUs
NyArMzUsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFdURl9NQUtFX0lTT19BTExPQ0FURURf
SU1QTChXYXZlU2hhcGVyTm9kZSk7CiAKLVdhdmVTaGFwZXJOb2RlOjpXYXZlU2hhcGVyTm9kZShB
dWRpb0NvbnRleHQmIGNvbnRleHQpCitXYXZlU2hhcGVyTm9kZTo6V2F2ZVNoYXBlck5vZGUoQXVk
aW9Db250ZXh0QmFzZSYgY29udGV4dCkKICAgICA6IEF1ZGlvQmFzaWNQcm9jZXNzb3JOb2RlKGNv
bnRleHQsIGNvbnRleHQuc2FtcGxlUmF0ZSgpKQogewogICAgIHNldE5vZGVUeXBlKE5vZGVUeXBl
V2F2ZVNoYXBlcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlv
L1dhdmVTaGFwZXJOb2RlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1dhdmVT
aGFwZXJOb2RlLmgKaW5kZXggZjQ5ZTM0OWJjM2QuLjVmNDkzMjhiMjJkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1dhdmVTaGFwZXJOb2RlLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9XYXZlU2hhcGVyTm9kZS5oCkBAIC0zMyw3ICsz
Myw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIFdhdmVTaGFwZXJOb2RlIGZpbmFsIDog
cHVibGljIEF1ZGlvQmFzaWNQcm9jZXNzb3JOb2RlIHsKICAgICBXVEZfTUFLRV9JU09fQUxMT0NB
VEVEKFdhdmVTaGFwZXJOb2RlKTsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPFdhdmVTaGFwZXJO
b2RlPiBjcmVhdGUoQXVkaW9Db250ZXh0JiBjb250ZXh0KQorICAgIHN0YXRpYyBSZWY8V2F2ZVNo
YXBlck5vZGU+IGNyZWF0ZShBdWRpb0NvbnRleHRCYXNlJiBjb250ZXh0KQogICAgIHsKICAgICAg
ICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgV2F2ZVNoYXBlck5vZGUoY29udGV4dCkpOwogICAgIH0K
QEAgLTQ5LDcgKzQ5LDcgQEAgcHVibGljOgogICAgIGRvdWJsZSBsYXRlbmN5KCkgY29uc3QgeyBy
ZXR1cm4gbGF0ZW5jeVRpbWUoKTsgfQogCiBwcml2YXRlOiAgICAKLSAgICBleHBsaWNpdCBXYXZl
U2hhcGVyTm9kZShBdWRpb0NvbnRleHQmKTsgICAgCisgICAgZXhwbGljaXQgV2F2ZVNoYXBlck5v
ZGUoQXVkaW9Db250ZXh0QmFzZSYpOwogCiAgICAgV2F2ZVNoYXBlclByb2Nlc3Nvciogd2F2ZVNo
YXBlclByb2Nlc3NvcigpIHsgcmV0dXJuIHN0YXRpY19jYXN0PFdhdmVTaGFwZXJQcm9jZXNzb3Iq
Pihwcm9jZXNzb3IoKSk7IH0KIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmF1ZGlvL1dlYktpdEF1ZGlvQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmF1ZGlvL1dlYktpdEF1ZGlvQ29udGV4dC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAuLmMyMGYxYjdlMGI0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJhdWRpby9XZWJLaXRBdWRpb0NvbnRleHQuY3BwCkBAIC0wLDAgKzEs
MTM5NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5EIEFOWQorICogRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
CisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OCisgKiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMKKyAqIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2lmIEVOQUJMRShXRUJf
QVVESU8pCisKKyNpbmNsdWRlICJXZWJLaXRBdWRpb0NvbnRleHQuaCIKKworI2luY2x1ZGUgIkFu
YWx5c2VyTm9kZS5oIgorI2luY2x1ZGUgIkFzeW5jQXVkaW9EZWNvZGVyLmgiCisjaW5jbHVkZSAi
QXVkaW9CdWZmZXIuaCIKKyNpbmNsdWRlICJBdWRpb0J1ZmZlckNhbGxiYWNrLmgiCisjaW5jbHVk
ZSAiQXVkaW9CdWZmZXJTb3VyY2VOb2RlLmgiCisjaW5jbHVkZSAiQXVkaW9MaXN0ZW5lci5oIgor
I2luY2x1ZGUgIkF1ZGlvTm9kZUlucHV0LmgiCisjaW5jbHVkZSAiQXVkaW9Ob2RlT3V0cHV0Lmgi
CisjaW5jbHVkZSAiQXVkaW9TZXNzaW9uLmgiCisjaW5jbHVkZSAiQmlxdWFkRmlsdGVyTm9kZS5o
IgorI2luY2x1ZGUgIkNoYW5uZWxNZXJnZXJOb2RlLmgiCisjaW5jbHVkZSAiQ2hhbm5lbFNwbGl0
dGVyTm9kZS5oIgorI2luY2x1ZGUgIkNvbnZvbHZlck5vZGUuaCIKKyNpbmNsdWRlICJEZWZhdWx0
QXVkaW9EZXN0aW5hdGlvbk5vZGUuaCIKKyNpbmNsdWRlICJEZWxheU5vZGUuaCIKKyNpbmNsdWRl
ICJEb2N1bWVudC5oIgorI2luY2x1ZGUgIkR5bmFtaWNzQ29tcHJlc3Nvck5vZGUuaCIKKyNpbmNs
dWRlICJFdmVudE5hbWVzLmgiCisjaW5jbHVkZSAiRkZURnJhbWUuaCIKKyNpbmNsdWRlICJGcmFt
ZS5oIgorI2luY2x1ZGUgIkZyYW1lTG9hZGVyLmgiCisjaW5jbHVkZSAiR2Fpbk5vZGUuaCIKKyNp
bmNsdWRlICJHZW5lcmljRXZlbnRRdWV1ZS5oIgorI2luY2x1ZGUgIkhSVEZEYXRhYmFzZUxvYWRl
ci5oIgorI2luY2x1ZGUgIkhSVEZQYW5uZXIuaCIKKyNpbmNsdWRlICJKU0RPTVByb21pc2VEZWZl
cnJlZC5oIgorI2luY2x1ZGUgIkxvZ2dpbmcuaCIKKyNpbmNsdWRlICJOZXR3b3JraW5nQ29udGV4
dC5oIgorI2luY2x1ZGUgIk9mZmxpbmVBdWRpb0NvbXBsZXRpb25FdmVudC5oIgorI2luY2x1ZGUg
Ik9mZmxpbmVBdWRpb0Rlc3RpbmF0aW9uTm9kZS5oIgorI2luY2x1ZGUgIk9zY2lsbGF0b3JOb2Rl
LmgiCisjaW5jbHVkZSAiUGFnZS5oIgorI2luY2x1ZGUgIlBlcmlvZGljV2F2ZS5oIgorI2luY2x1
ZGUgIlBsYXRmb3JtTWVkaWFTZXNzaW9uTWFuYWdlci5oIgorI2luY2x1ZGUgIlNjcmlwdENvbnRy
b2xsZXIuaCIKKyNpbmNsdWRlICJTY3JpcHRQcm9jZXNzb3JOb2RlLmgiCisjaW5jbHVkZSAiV2F2
ZVNoYXBlck5vZGUuaCIKKyNpbmNsdWRlICJXZWJLaXRBdWRpb1Bhbm5lck5vZGUuaCIKKyNpbmNs
dWRlIDxKYXZhU2NyaXB0Q29yZS9TY3JpcHRDYWxsU3RhY2suaD4KKworI2lmIEVOQUJMRShNRURJ
QV9TVFJFQU0pCisjaW5jbHVkZSAiTWVkaWFTdHJlYW0uaCIKKyNpbmNsdWRlICJNZWRpYVN0cmVh
bUF1ZGlvRGVzdGluYXRpb25Ob2RlLmgiCisjaW5jbHVkZSAiTWVkaWFTdHJlYW1BdWRpb1NvdXJj
ZS5oIgorI2luY2x1ZGUgIk1lZGlhU3RyZWFtQXVkaW9Tb3VyY2VOb2RlLmgiCisjZW5kaWYKKwor
I2lmIEVOQUJMRShWSURFTykKKyNpbmNsdWRlICJIVE1MTWVkaWFFbGVtZW50LmgiCisjaW5jbHVk
ZSAiTWVkaWFFbGVtZW50QXVkaW9Tb3VyY2VOb2RlLmgiCisjZW5kaWYKKworI2lmIERFQlVHX0FV
RElPTk9ERV9SRUZFUkVOQ0VTCisjaW5jbHVkZSA8c3RkaW8uaD4KKyNlbmRpZgorCisjaWYgVVNF
KEdTVFJFQU1FUikKKyNpbmNsdWRlICJHU3RyZWFtZXJDb21tb24uaCIKKyNlbmRpZgorCisjaWYg
UExBVEZPUk0oSU9TX0ZBTUlMWSkKKyNpbmNsdWRlICJTY3JpcHRDb250cm9sbGVyLmgiCisjaW5j
bHVkZSAiU2V0dGluZ3MuaCIKKyNlbmRpZgorCisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvQXJy
YXlCdWZmZXIuaD4KKyNpbmNsdWRlIDx3dGYvQXRvbWljcy5oPgorI2luY2x1ZGUgPHd0Zi9Jc29N
YWxsb2NJbmxpbmVzLmg+CisjaW5jbHVkZSA8d3RmL01haW5UaHJlYWQuaD4KKyNpbmNsdWRlIDx3
dGYvUmVmLmg+CisjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KKyNpbmNsdWRlIDx3dGYvU2Nv
cGUuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KKworY29uc3QgdW5zaWduZWQg
TWF4UGVyaW9kaWNXYXZlTGVuZ3RoID0gNDA5NjsKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCisj
ZGVmaW5lIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoZm10LCAuLi4pIFJFTEVBU0VfTE9HX0lGKGRv
Y3VtZW50KCkgJiYgZG9jdW1lbnQoKS0+cGFnZSgpICYmIGRvY3VtZW50KCktPnBhZ2UoKS0+aXNB
bHdheXNPbkxvZ2dpbmdBbGxvd2VkKCksIE1lZGlhLCAiJXAgLSBXZWJLaXRBdWRpb0NvbnRleHQ6
OiIgZm10LCB0aGlzLCAjI19fVkFfQVJHU19fKQorCitib29sIFdlYktpdEF1ZGlvQ29udGV4dDo6
aXNTYW1wbGVSYXRlUmFuZ2VHb29kKGZsb2F0IHNhbXBsZVJhdGUpCit7CisgICAgLy8gRklYTUU6
IEl0IHdvdWxkIGJlIG5pY2UgaWYgdGhlIG1pbmltdW0gc2FtcGxlLXJhdGUgY291bGQgYmUgbGVz
cyB0aGFuIDQ0LjFLSHosCisgICAgLy8gYnV0IHRoYXQgd2lsbCByZXF1aXJlIHNvbWUgZml4ZXMg
aW4gSFJURlBhbm5lcjo6ZmZ0U2l6ZUZvclNhbXBsZVJhdGUoKSwgYW5kIHNvbWUgdGVzdGluZyB0
aGVyZS4KKyAgICByZXR1cm4gc2FtcGxlUmF0ZSA+PSA0NDEwMCAmJiBzYW1wbGVSYXRlIDw9IDk2
MDAwOworfQorCisjaWYgT1MoV0lORE9XUykKKy8vIERvbid0IGFsbG93IG1vcmUgdGhhbiB0aGlz
IG51bWJlciBvZiBzaW11bHRhbmVvdXMgQXVkaW9Db250ZXh0cyB0YWxraW5nIHRvIGhhcmR3YXJl
LgorY29uc3RleHByIHVuc2lnbmVkIG1heEhhcmR3YXJlQ29udGV4dHMgPSA0OworI2VuZGlmCit1
bnNpZ25lZCBXZWJLaXRBdWRpb0NvbnRleHQ6OnNfaGFyZHdhcmVDb250ZXh0Q291bnQgPSAwOwor
CitFeGNlcHRpb25PcjxSZWY8V2ViS2l0QXVkaW9Db250ZXh0Pj4gV2ViS2l0QXVkaW9Db250ZXh0
OjpjcmVhdGUoRG9jdW1lbnQmIGRvY3VtZW50KQoreworICAgIEFTU0VSVChpc01haW5UaHJlYWQo
KSk7CisjaWYgT1MoV0lORE9XUykKKyAgICBpZiAoc19oYXJkd2FyZUNvbnRleHRDb3VudCA+PSBt
YXhIYXJkd2FyZUNvbnRleHRzKQorICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgUXVvdGFFeGNl
ZWRlZEVycm9yIH07CisjZW5kaWYKKworICAgIGF1dG8gYXVkaW9Db250ZXh0ID0gYWRvcHRSZWYo
Km5ldyBXZWJLaXRBdWRpb0NvbnRleHQoZG9jdW1lbnQpKTsKKyAgICBhdWRpb0NvbnRleHQtPnN1
c3BlbmRJZk5lZWRlZCgpOworICAgIHJldHVybiBhdWRpb0NvbnRleHQ7Cit9CisKKy8vIENvbnN0
cnVjdG9yIGZvciByZW5kZXJpbmcgdG8gdGhlIGF1ZGlvIGhhcmR3YXJlLgorV2ViS2l0QXVkaW9D
b250ZXh0OjpXZWJLaXRBdWRpb0NvbnRleHQoRG9jdW1lbnQmIGRvY3VtZW50KQorICAgIDogQXVk
aW9Db250ZXh0QmFzZShkb2N1bWVudCkKKyNpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKKyAgICAs
IG1fbG9nZ2VyKGRvY3VtZW50LmxvZ2dlcigpKQorICAgICwgbV9sb2dJZGVudGlmaWVyKHVuaXF1
ZUxvZ0lkZW50aWZpZXIoKSkKKyNlbmRpZgorICAgICwgbV9tZWRpYVNlc3Npb24oUGxhdGZvcm1N
ZWRpYVNlc3Npb246OmNyZWF0ZShQbGF0Zm9ybU1lZGlhU2Vzc2lvbk1hbmFnZXI6OnNoYXJlZE1h
bmFnZXIoKSwgKnRoaXMpKQorICAgICwgbV9ldmVudFF1ZXVlKE1haW5UaHJlYWRHZW5lcmljRXZl
bnRRdWV1ZTo6Y3JlYXRlKCp0aGlzKSkKK3sKKyAgICAvLyBBY2NvcmRpbmcgdG8gc3BlYyBBdWRp
b0NvbnRleHQgbXVzdCBkaWUgb25seSBhZnRlciBwYWdlIG5hdmlnYXRlLgorICAgIC8vIExldHMg
bWFyayBpdCBhcyBBY3RpdmVET01PYmplY3Qgd2l0aCBwZW5kaW5nIGFjdGl2aXR5IGFuZCB1bm1h
cmsgaXQgaW4gY2xlYXIgbWV0aG9kLgorICAgIG1ha2VQZW5kaW5nQWN0aXZpdHkoKTsKKworICAg
IGNvbnN0cnVjdENvbW1vbigpOworCisgICAgbV9kZXN0aW5hdGlvbk5vZGUgPSBEZWZhdWx0QXVk
aW9EZXN0aW5hdGlvbk5vZGU6OmNyZWF0ZSgqdGhpcyk7CisKKyAgICAvLyBJbml0aWFsaXplIHRo
ZSBkZXN0aW5hdGlvbiBub2RlJ3MgbXV0ZWQgc3RhdGUgdG8gbWF0Y2ggdGhlIHBhZ2UncyBjdXJy
ZW50IG11dGVkIHN0YXRlLgorICAgIHBhZ2VNdXRlZFN0YXRlRGlkQ2hhbmdlKCk7CisKKyAgICBk
b2N1bWVudC5hZGRBdWRpb1Byb2R1Y2VyKCp0aGlzKTsKKyAgICBkb2N1bWVudC5yZWdpc3RlckZv
clZpc2liaWxpdHlTdGF0ZUNoYW5nZWRDYWxsYmFja3MoKnRoaXMpOworfQorCisvLyBDb25zdHJ1
Y3RvciBmb3Igb2ZmbGluZSAobm9uLXJlYWx0aW1lKSByZW5kZXJpbmcuCitXZWJLaXRBdWRpb0Nv
bnRleHQ6OldlYktpdEF1ZGlvQ29udGV4dChEb2N1bWVudCYgZG9jdW1lbnQsIEF1ZGlvQnVmZmVy
KiByZW5kZXJUYXJnZXQpCisgICAgOiBBdWRpb0NvbnRleHRCYXNlKGRvY3VtZW50KQorI2lmICFS
RUxFQVNFX0xPR19ESVNBQkxFRAorICAgICwgbV9sb2dnZXIoZG9jdW1lbnQubG9nZ2VyKCkpCisg
ICAgLCBtX2xvZ0lkZW50aWZpZXIodW5pcXVlTG9nSWRlbnRpZmllcigpKQorI2VuZGlmCisgICAg
LCBtX2lzT2ZmbGluZUNvbnRleHQodHJ1ZSkKKyAgICAsIG1fbWVkaWFTZXNzaW9uKFBsYXRmb3Jt
TWVkaWFTZXNzaW9uOjpjcmVhdGUoUGxhdGZvcm1NZWRpYVNlc3Npb25NYW5hZ2VyOjpzaGFyZWRN
YW5hZ2VyKCksICp0aGlzKSkKKyAgICAsIG1fZXZlbnRRdWV1ZShNYWluVGhyZWFkR2VuZXJpY0V2
ZW50UXVldWU6OmNyZWF0ZSgqdGhpcykpCisgICAgLCBtX3JlbmRlclRhcmdldChyZW5kZXJUYXJn
ZXQpCit7CisgICAgY29uc3RydWN0Q29tbW9uKCk7CisKKyAgICAvLyBDcmVhdGUgYSBuZXcgZGVz
dGluYXRpb24gZm9yIG9mZmxpbmUgcmVuZGVyaW5nLgorICAgIG1fZGVzdGluYXRpb25Ob2RlID0g
T2ZmbGluZUF1ZGlvRGVzdGluYXRpb25Ob2RlOjpjcmVhdGUoKnRoaXMsIG1fcmVuZGVyVGFyZ2V0
LmdldCgpKTsKK30KKwordm9pZCBXZWJLaXRBdWRpb0NvbnRleHQ6OmNvbnN0cnVjdENvbW1vbigp
Cit7CisgICAgRkZURnJhbWU6OmluaXRpYWxpemUoKTsKKworICAgIG1fbGlzdGVuZXIgPSBBdWRp
b0xpc3RlbmVyOjpjcmVhdGUoKTsKKworICAgIEFTU0VSVChkb2N1bWVudCgpKTsKKyAgICBpZiAo
ZG9jdW1lbnQoKS0+YXVkaW9QbGF5YmFja1JlcXVpcmVzVXNlckdlc3R1cmUoKSkKKyAgICAgICAg
YWRkQmVoYXZpb3JSZXN0cmljdGlvbihSZXF1aXJlVXNlckdlc3R1cmVGb3JBdWRpb1N0YXJ0UmVz
dHJpY3Rpb24pOworICAgIGVsc2UKKyAgICAgICAgbV9yZXN0cmljdGlvbnMgPSBOb1Jlc3RyaWN0
aW9uczsKKworI2lmIFBMQVRGT1JNKENPQ09BKQorICAgIGFkZEJlaGF2aW9yUmVzdHJpY3Rpb24o
UmVxdWlyZVBhZ2VDb25zZW50Rm9yQXVkaW9TdGFydFJlc3RyaWN0aW9uKTsKKyNlbmRpZgorfQor
CitXZWJLaXRBdWRpb0NvbnRleHQ6On5XZWJLaXRBdWRpb0NvbnRleHQoKQoreworI2lmIERFQlVH
X0FVRElPTk9ERV9SRUZFUkVOQ0VTCisgICAgZnByaW50ZihzdGRlcnIsICIlcDogV2ViS2l0QXVk
aW9Db250ZXh0Ojp+V2ViS2l0QXVkaW9Db250ZXh0KClcbiIsIHRoaXMpOworI2VuZGlmCisgICAg
QVNTRVJUKCFtX2lzSW5pdGlhbGl6ZWQpOworICAgIEFTU0VSVChtX2lzU3RvcFNjaGVkdWxlZCk7
CisgICAgQVNTRVJUKG1fbm9kZXNUb0RlbGV0ZS5pc0VtcHR5KCkpOworICAgIEFTU0VSVChtX3Jl
ZmVyZW5jZWROb2Rlcy5pc0VtcHR5KCkpOworICAgIEFTU0VSVChtX2ZpbmlzaGVkTm9kZXMuaXNF
bXB0eSgpKTsgLy8gRklYTUUgKGJ1ZyAxMDU4NzApOiBUaGlzIGFzc2VydGlvbiBmYWlscyBvbiB0
ZXN0cyBzb21ldGltZXMuCisgICAgQVNTRVJUKG1fYXV0b21hdGljUHVsbE5vZGVzLmlzRW1wdHko
KSk7CisgICAgaWYgKG1fYXV0b21hdGljUHVsbE5vZGVzTmVlZFVwZGF0aW5nKQorICAgICAgICBt
X3JlbmRlcmluZ0F1dG9tYXRpY1B1bGxOb2Rlcy5yZXNpemUobV9hdXRvbWF0aWNQdWxsTm9kZXMu
c2l6ZSgpKTsKKyAgICBBU1NFUlQobV9yZW5kZXJpbmdBdXRvbWF0aWNQdWxsTm9kZXMuaXNFbXB0
eSgpKTsKKyAgICAvLyBGSVhNRTogQ2FuIHdlIGFzc2VydCB0aGF0IG1fZGVmZXJyZWRGaW5pc2hE
ZXJlZkxpc3QgaXMgZW1wdHk/CisKKyAgICBpZiAoIWlzT2ZmbGluZUNvbnRleHQoKSAmJiBzY3Jp
cHRFeGVjdXRpb25Db250ZXh0KCkpIHsKKyAgICAgICAgZG9jdW1lbnQoKS0+cmVtb3ZlQXVkaW9Q
cm9kdWNlcigqdGhpcyk7CisgICAgICAgIGRvY3VtZW50KCktPnVucmVnaXN0ZXJGb3JWaXNpYmls
aXR5U3RhdGVDaGFuZ2VkQ2FsbGJhY2tzKCp0aGlzKTsKKyAgICB9Cit9CisKK3ZvaWQgV2ViS2l0
QXVkaW9Db250ZXh0OjpsYXp5SW5pdGlhbGl6ZSgpCit7CisgICAgQVNTRVJUKCFtX2lzU3RvcFNj
aGVkdWxlZCk7CisKKyAgICBpZiAobV9pc0luaXRpYWxpemVkKQorICAgICAgICByZXR1cm47CisK
KyAgICAvLyBEb24ndCBhbGxvdyB0aGUgY29udGV4dCB0byBpbml0aWFsaXplIGEgc2Vjb25kIHRp
bWUgYWZ0ZXIgaXQncyBhbHJlYWR5IGJlZW4gZXhwbGljaXRseSB1bmluaXRpYWxpemVkLgorICAg
IEFTU0VSVCghbV9pc0F1ZGlvVGhyZWFkRmluaXNoZWQpOworICAgIGlmIChtX2lzQXVkaW9UaHJl
YWRGaW5pc2hlZCkKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKG1fZGVzdGluYXRpb25Ob2Rl
KSB7CisgICAgICAgIG1fZGVzdGluYXRpb25Ob2RlLT5pbml0aWFsaXplKCk7CisKKyAgICAgICAg
aWYgKCFpc09mZmxpbmVDb250ZXh0KCkpIHsKKyAgICAgICAgICAgIC8vIFRoaXMgc3RhcnRzIHRo
ZSBhdWRpbyB0aHJlYWQuIFRoZSBkZXN0aW5hdGlvbiBub2RlJ3MgcHJvdmlkZUlucHV0KCkgbWV0
aG9kIHdpbGwgbm93IGJlIGNhbGxlZCByZXBlYXRlZGx5IHRvIHJlbmRlciBhdWRpby4KKyAgICAg
ICAgICAgIC8vIEVhY2ggdGltZSBwcm92aWRlSW5wdXQoKSBpcyBjYWxsZWQsIGEgcG9ydGlvbiBv
ZiB0aGUgYXVkaW8gc3RyZWFtIGlzIHJlbmRlcmVkLiBMZXQncyBjYWxsIHRoaXMgdGltZSBwZXJp
b2QgYSAicmVuZGVyIHF1YW50dW0iLgorICAgICAgICAgICAgLy8gTk9URTogZm9yIG5vdyBkZWZh
dWx0IEF1ZGlvQ29udGV4dCBkb2VzIG5vdCBuZWVkIGFuIGV4cGxpY2l0IHN0YXJ0UmVuZGVyaW5n
KCkgY2FsbCBmcm9tIEphdmFTY3JpcHQuCisgICAgICAgICAgICAvLyBXZSBtYXkgd2FudCB0byBj
b25zaWRlciByZXF1aXJpbmcgaXQgZm9yIHN5bW1ldHJ5IHdpdGggT2ZmbGluZUF1ZGlvQ29udGV4
dC4KKyAgICAgICAgICAgIHN0YXJ0UmVuZGVyaW5nKCk7CisgICAgICAgICAgICArK3NfaGFyZHdh
cmVDb250ZXh0Q291bnQ7CisgICAgICAgIH0KKyAgICB9CisgICAgbV9pc0luaXRpYWxpemVkID0g
dHJ1ZTsKK30KKwordm9pZCBXZWJLaXRBdWRpb0NvbnRleHQ6OmNsZWFyKCkKK3sKKyAgICBSZWY8
V2ViS2l0QXVkaW9Db250ZXh0PiBwcm90ZWN0ZWRUaGlzKCp0aGlzKTsKKworICAgIC8vIFdlIGhh
dmUgdG8gcmVsZWFzZSBvdXIgcmVmZXJlbmNlIHRvIHRoZSBkZXN0aW5hdGlvbiBub2RlIGJlZm9y
ZSB0aGUgY29udGV4dCB3aWxsIGV2ZXIgYmUgZGVsZXRlZCBzaW5jZSB0aGUgZGVzdGluYXRpb24g
bm9kZSBob2xkcyBhIHJlZmVyZW5jZSB0byB0aGUgY29udGV4dC4KKyAgICBpZiAobV9kZXN0aW5h
dGlvbk5vZGUpCisgICAgICAgIG1fZGVzdGluYXRpb25Ob2RlID0gbnVsbHB0cjsKKworICAgIC8v
IEF1ZGlvIHRocmVhZCBpcyBkZWFkLiBOb2JvZHkgd2lsbCBzY2hlZHVsZSBub2RlIGRlbGV0aW9u
IGFjdGlvbi4gTGV0J3MgZG8gaXQgb3Vyc2VsdmVzLgorICAgIGRvIHsKKyAgICAgICAgZGVsZXRl
TWFya2VkTm9kZXMoKTsKKyAgICAgICAgbV9ub2Rlc1RvRGVsZXRlLmFwcGVuZFZlY3RvcihtX25v
ZGVzTWFya2VkRm9yRGVsZXRpb24pOworICAgICAgICBtX25vZGVzTWFya2VkRm9yRGVsZXRpb24u
Y2xlYXIoKTsKKyAgICB9IHdoaWxlIChtX25vZGVzVG9EZWxldGUuc2l6ZSgpKTsKKworICAgIGNs
ZWFyUGVuZGluZ0FjdGl2aXR5KCk7Cit9CisKK3ZvaWQgV2ViS2l0QXVkaW9Db250ZXh0Ojp1bmlu
aXRpYWxpemUoKQoreworICAgIEFMV0FZU19MT0coTE9HSURFTlRJRklFUik7CisKKyAgICBBU1NF
UlQoaXNNYWluVGhyZWFkKCkpOworCisgICAgaWYgKCFtX2lzSW5pdGlhbGl6ZWQpCisgICAgICAg
IHJldHVybjsKKworICAgIC8vIFRoaXMgc3RvcHMgdGhlIGF1ZGlvIHRocmVhZCBhbmQgYWxsIGF1
ZGlvIHJlbmRlcmluZy4KKyAgICBpZiAobV9kZXN0aW5hdGlvbk5vZGUpCisgICAgICAgIG1fZGVz
dGluYXRpb25Ob2RlLT51bmluaXRpYWxpemUoKTsKKworICAgIC8vIERvbid0IGFsbG93IHRoZSBj
b250ZXh0IHRvIGluaXRpYWxpemUgYSBzZWNvbmQgdGltZSBhZnRlciBpdCdzIGFscmVhZHkgYmVl
biBleHBsaWNpdGx5IHVuaW5pdGlhbGl6ZWQuCisgICAgbV9pc0F1ZGlvVGhyZWFkRmluaXNoZWQg
PSB0cnVlOworCisgICAgaWYgKCFpc09mZmxpbmVDb250ZXh0KCkpIHsKKyAgICAgICAgQVNTRVJU
KHNfaGFyZHdhcmVDb250ZXh0Q291bnQpOworICAgICAgICAtLXNfaGFyZHdhcmVDb250ZXh0Q291
bnQ7CisKKyAgICAgICAgLy8gT2ZmbGluZSBjb250ZXh0cyBtb3ZlIHRvICdDbG9zZWQnIHN0YXRl
IHdoZW4gZGlzcGF0Y2hpbmcgdGhlIGNvbXBsZXRpb24gZXZlbnQuCisgICAgICAgIHNldFN0YXRl
KFN0YXRlOjpDbG9zZWQpOworICAgIH0KKworICAgIC8vIEdldCByaWQgb2YgdGhlIHNvdXJjZXMg
d2hpY2ggbWF5IHN0aWxsIGJlIHBsYXlpbmcuCisgICAgZGVyZWZVbmZpbmlzaGVkU291cmNlTm9k
ZXMoKTsKKworICAgIG1faXNJbml0aWFsaXplZCA9IGZhbHNlOworfQorCitib29sIFdlYktpdEF1
ZGlvQ29udGV4dDo6aXNJbml0aWFsaXplZCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1faXNJbml0
aWFsaXplZDsKK30KKwordm9pZCBXZWJLaXRBdWRpb0NvbnRleHQ6OmFkZFJlYWN0aW9uKFN0YXRl
IHN0YXRlLCBET01Qcm9taXNlRGVmZXJyZWQ8dm9pZD4mJiBwcm9taXNlKQoreworICAgIHNpemVf
dCBzdGF0ZUluZGV4ID0gc3RhdGljX2Nhc3Q8c2l6ZV90PihzdGF0ZSk7CisgICAgaWYgKHN0YXRl
SW5kZXggPj0gbV9zdGF0ZVJlYWN0aW9ucy5zaXplKCkpCisgICAgICAgIG1fc3RhdGVSZWFjdGlv
bnMuZ3JvdyhzdGF0ZUluZGV4ICsgMSk7CisKKyAgICBtX3N0YXRlUmVhY3Rpb25zW3N0YXRlSW5k
ZXhdLmFwcGVuZChXVEZNb3ZlKHByb21pc2UpKTsKK30KKwordm9pZCBXZWJLaXRBdWRpb0NvbnRl
eHQ6OnNldFN0YXRlKFN0YXRlIHN0YXRlKQoreworICAgIGlmIChtX3N0YXRlID09IHN0YXRlKQor
ICAgICAgICByZXR1cm47CisKKyAgICBtX3N0YXRlID0gc3RhdGU7CisgICAgbV9ldmVudFF1ZXVl
LT5lbnF1ZXVlRXZlbnQoRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkuc3RhdGVjaGFuZ2VFdmVu
dCwgRXZlbnQ6OkNhbkJ1YmJsZTo6WWVzLCBFdmVudDo6SXNDYW5jZWxhYmxlOjpObykpOworCisg
ICAgc2l6ZV90IHN0YXRlSW5kZXggPSBzdGF0aWNfY2FzdDxzaXplX3Q+KHN0YXRlKTsKKyAgICBp
ZiAoc3RhdGVJbmRleCA+PSBtX3N0YXRlUmVhY3Rpb25zLnNpemUoKSkKKyAgICAgICAgcmV0dXJu
OworCisgICAgVmVjdG9yPERPTVByb21pc2VEZWZlcnJlZDx2b2lkPj4gcmVhY3Rpb25zOworICAg
IG1fc3RhdGVSZWFjdGlvbnNbc3RhdGVJbmRleF0uc3dhcChyZWFjdGlvbnMpOworCisgICAgZm9y
IChhdXRvJiBwcm9taXNlIDogcmVhY3Rpb25zKQorICAgICAgICBwcm9taXNlLnJlc29sdmUoKTsK
K30KKwordm9pZCBXZWJLaXRBdWRpb0NvbnRleHQ6OnN0b3AoKQoreworICAgIEFMV0FZU19MT0co
TE9HSURFTlRJRklFUik7CisKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworCisgICAgLy8g
VXN1YWxseSBTY3JpcHRFeGVjdXRpb25Db250ZXh0IGNhbGxzIHN0b3AgdHdpY2UuCisgICAgaWYg
KG1faXNTdG9wU2NoZWR1bGVkKQorICAgICAgICByZXR1cm47CisgICAgbV9pc1N0b3BTY2hlZHVs
ZWQgPSB0cnVlOworCisgICAgQVNTRVJUKGRvY3VtZW50KCkpOworICAgIGRvY3VtZW50KCktPnVw
ZGF0ZUlzUGxheWluZ01lZGlhKCk7CisKKyAgICB1bmluaXRpYWxpemUoKTsKKyAgICBjbGVhcigp
OworfQorCit2b2lkIFdlYktpdEF1ZGlvQ29udGV4dDo6c3VzcGVuZChSZWFzb25Gb3JTdXNwZW5z
aW9uKQoreworICAgIGlmIChzdGF0ZSgpID09IFN0YXRlOjpSdW5uaW5nKSB7CisgICAgICAgIG1f
bWVkaWFTZXNzaW9uLT5iZWdpbkludGVycnVwdGlvbihQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6UGxh
eWJhY2tTdXNwZW5kZWQpOworICAgICAgICBkb2N1bWVudCgpLT51cGRhdGVJc1BsYXlpbmdNZWRp
YSgpOworICAgIH0KK30KKwordm9pZCBXZWJLaXRBdWRpb0NvbnRleHQ6OnJlc3VtZSgpCit7Cisg
ICAgaWYgKHN0YXRlKCkgPT0gU3RhdGU6OkludGVycnVwdGVkKSB7CisgICAgICAgIG1fbWVkaWFT
ZXNzaW9uLT5lbmRJbnRlcnJ1cHRpb24oUGxhdGZvcm1NZWRpYVNlc3Npb246Ok1heVJlc3VtZVBs
YXlpbmcpOworICAgICAgICBkb2N1bWVudCgpLT51cGRhdGVJc1BsYXlpbmdNZWRpYSgpOworICAg
IH0KK30KKworY29uc3QgY2hhciogV2ViS2l0QXVkaW9Db250ZXh0OjphY3RpdmVET01PYmplY3RO
YW1lKCkgY29uc3QKK3sKKyAgICByZXR1cm4gIldlYktpdEF1ZGlvQ29udGV4dCI7Cit9CisKK0Rv
Y3VtZW50SWRlbnRpZmllciBXZWJLaXRBdWRpb0NvbnRleHQ6Omhvc3RpbmdEb2N1bWVudElkZW50
aWZpZXIoKSBjb25zdAoreworICAgIGF1dG8qIGRvY3VtZW50ID0gZG93bmNhc3Q8RG9jdW1lbnQ+
KG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dCk7CisgICAgcmV0dXJuIGRvY3VtZW50ID8gZG9jdW1l
bnQtPmlkZW50aWZpZXIoKSA6IERvY3VtZW50SWRlbnRpZmllciB7IH07Cit9CisKK2Jvb2wgV2Vi
S2l0QXVkaW9Db250ZXh0Ojppc1N1c3BlbmRlZCgpIGNvbnN0Cit7CisgICAgcmV0dXJuICFkb2N1
bWVudCgpIHx8IGRvY3VtZW50KCktPmFjdGl2ZURPTU9iamVjdHNBcmVTdXNwZW5kZWQoKSB8fCBk
b2N1bWVudCgpLT5hY3RpdmVET01PYmplY3RzQXJlU3RvcHBlZCgpOworfQorCit2b2lkIFdlYktp
dEF1ZGlvQ29udGV4dDo6dmlzaWJpbGl0eVN0YXRlQ2hhbmdlZCgpCit7CisgICAgLy8gRG8gbm90
IHN1c3BlbmQgaWYgYXVkaW8gaXMgYXVkaWJsZS4KKyAgICBpZiAoIWRvY3VtZW50KCkgfHwgbWVk
aWFTdGF0ZSgpID09IE1lZGlhUHJvZHVjZXI6OklzUGxheWluZ0F1ZGlvIHx8IG1faXNTdG9wU2No
ZWR1bGVkKQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAoZG9jdW1lbnQoKS0+aGlkZGVuKCkp
IHsKKyAgICAgICAgaWYgKHN0YXRlKCkgPT0gU3RhdGU6OlJ1bm5pbmcpIHsKKyAgICAgICAgICAg
IFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoInZpc2liaWxpdHlTdGF0ZUNoYW5nZWQoKSBTdXNwZW5k
aW5nIHBsYXliYWNrIGFmdGVyIGdvaW5nIHRvIHRoZSBiYWNrZ3JvdW5kIik7CisgICAgICAgICAg
ICBtX21lZGlhU2Vzc2lvbi0+YmVnaW5JbnRlcnJ1cHRpb24oUGxhdGZvcm1NZWRpYVNlc3Npb246
OkVudGVyaW5nQmFja2dyb3VuZCk7CisgICAgICAgIH0KKyAgICB9IGVsc2UgeworICAgICAgICBp
ZiAoc3RhdGUoKSA9PSBTdGF0ZTo6SW50ZXJydXB0ZWQpIHsKKyAgICAgICAgICAgIFJFTEVBU0Vf
TE9HX0lGX0FMTE9XRUQoInZpc2liaWxpdHlTdGF0ZUNoYW5nZWQoKSBSZXN1bWluZyBwbGF5YmFj
ayBhZnRlciBlbnRlcmluZyBmb3JlZ3JvdW5kIik7CisgICAgICAgICAgICBtX21lZGlhU2Vzc2lv
bi0+ZW5kSW50ZXJydXB0aW9uKFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpNYXlSZXN1bWVQbGF5aW5n
KTsKKyAgICAgICAgfQorICAgIH0KK30KKworYm9vbCBXZWJLaXRBdWRpb0NvbnRleHQ6OndvdWxk
VGFpbnRPcmlnaW4oY29uc3QgVVJMJiB1cmwpIGNvbnN0Cit7CisgICAgaWYgKHVybC5wcm90b2Nv
bElzRGF0YSgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBpZiAoYXV0byogZG9jdW1l
bnQgPSB0aGlzLT5kb2N1bWVudCgpKQorICAgICAgICByZXR1cm4gIWRvY3VtZW50LT5zZWN1cml0
eU9yaWdpbigpLmNhblJlcXVlc3QodXJsKTsKKworICAgIHJldHVybiBmYWxzZTsKK30KKworRXhj
ZXB0aW9uT3I8UmVmPEF1ZGlvQnVmZmVyPj4gV2ViS2l0QXVkaW9Db250ZXh0OjpjcmVhdGVCdWZm
ZXIodW5zaWduZWQgbnVtYmVyT2ZDaGFubmVscywgc2l6ZV90IG51bWJlck9mRnJhbWVzLCBmbG9h
dCBzYW1wbGVSYXRlKQoreworICAgIGF1dG8gYXVkaW9CdWZmZXIgPSBBdWRpb0J1ZmZlcjo6Y3Jl
YXRlKG51bWJlck9mQ2hhbm5lbHMsIG51bWJlck9mRnJhbWVzLCBzYW1wbGVSYXRlKTsKKyAgICBp
ZiAoIWF1ZGlvQnVmZmVyKQorICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgTm90U3VwcG9ydGVk
RXJyb3IgfTsKKyAgICByZXR1cm4gYXVkaW9CdWZmZXIucmVsZWFzZU5vbk51bGwoKTsKK30KKwor
RXhjZXB0aW9uT3I8UmVmPEF1ZGlvQnVmZmVyPj4gV2ViS2l0QXVkaW9Db250ZXh0OjpjcmVhdGVC
dWZmZXIoQXJyYXlCdWZmZXImIGFycmF5QnVmZmVyLCBib29sIG1peFRvTW9ubykKK3sKKyAgICBh
dXRvIGF1ZGlvQnVmZmVyID0gQXVkaW9CdWZmZXI6OmNyZWF0ZUZyb21BdWRpb0ZpbGVEYXRhKGFy
cmF5QnVmZmVyLmRhdGEoKSwgYXJyYXlCdWZmZXIuYnl0ZUxlbmd0aCgpLCBtaXhUb01vbm8sIHNh
bXBsZVJhdGUoKSk7CisgICAgaWYgKCFhdWRpb0J1ZmZlcikKKyAgICAgICAgcmV0dXJuIEV4Y2Vw
dGlvbiB7IFN5bnRheEVycm9yIH07CisgICAgcmV0dXJuIGF1ZGlvQnVmZmVyLnJlbGVhc2VOb25O
dWxsKCk7Cit9CisKK3ZvaWQgV2ViS2l0QXVkaW9Db250ZXh0OjpkZWNvZGVBdWRpb0RhdGEoUmVm
PEFycmF5QnVmZmVyPiYmIGF1ZGlvRGF0YSwgUmVmUHRyPEF1ZGlvQnVmZmVyQ2FsbGJhY2s+JiYg
c3VjY2Vzc0NhbGxiYWNrLCBSZWZQdHI8QXVkaW9CdWZmZXJDYWxsYmFjaz4mJiBlcnJvckNhbGxi
YWNrKQoreworICAgIGlmICghbV9hdWRpb0RlY29kZXIpCisgICAgICAgIG1fYXVkaW9EZWNvZGVy
ID0gbWFrZVVuaXF1ZTxBc3luY0F1ZGlvRGVjb2Rlcj4oKTsKKyAgICBtX2F1ZGlvRGVjb2Rlci0+
ZGVjb2RlQXN5bmMoV1RGTW92ZShhdWRpb0RhdGEpLCBzYW1wbGVSYXRlKCksIFdURk1vdmUoc3Vj
Y2Vzc0NhbGxiYWNrKSwgV1RGTW92ZShlcnJvckNhbGxiYWNrKSk7Cit9CisKK0V4Y2VwdGlvbk9y
PFJlZjxBdWRpb0J1ZmZlclNvdXJjZU5vZGU+PiBXZWJLaXRBdWRpb0NvbnRleHQ6OmNyZWF0ZUJ1
ZmZlclNvdXJjZSgpCit7CisgICAgQUxXQVlTX0xPRyhMT0dJREVOVElGSUVSKTsKKworICAgIEFT
U0VSVChpc01haW5UaHJlYWQoKSk7CisKKyAgICBpZiAobV9pc1N0b3BTY2hlZHVsZWQpCisgICAg
ICAgIHJldHVybiBFeGNlcHRpb24geyBJbnZhbGlkU3RhdGVFcnJvciB9OworCisgICAgbGF6eUlu
aXRpYWxpemUoKTsKKyAgICBSZWY8QXVkaW9CdWZmZXJTb3VyY2VOb2RlPiBub2RlID0gQXVkaW9C
dWZmZXJTb3VyY2VOb2RlOjpjcmVhdGUoKnRoaXMsIHNhbXBsZVJhdGUoKSk7CisKKyAgICAvLyBC
ZWNhdXNlIHRoaXMgaXMgYW4gQXVkaW9TY2hlZHVsZWRTb3VyY2VOb2RlLCB0aGUgY29udGV4dCBr
ZWVwcyBhIHJlZmVyZW5jZSB1bnRpbCBpdCBoYXMgZmluaXNoZWQgcGxheWluZy4KKyAgICAvLyBX
aGVuIHRoaXMgaGFwcGVucywgQXVkaW9TY2hlZHVsZWRTb3VyY2VOb2RlOjpmaW5pc2goKSBjYWxs
cyBXZWJLaXRBdWRpb0NvbnRleHQ6Om5vdGlmeU5vZGVGaW5pc2hlZFByb2Nlc3NpbmcoKS4KKyAg
ICByZWZOb2RlKG5vZGUpOworCisgICAgcmV0dXJuIG5vZGU7Cit9CisKKyNpZiBFTkFCTEUoVklE
RU8pCisKK0V4Y2VwdGlvbk9yPFJlZjxNZWRpYUVsZW1lbnRBdWRpb1NvdXJjZU5vZGU+PiBXZWJL
aXRBdWRpb0NvbnRleHQ6OmNyZWF0ZU1lZGlhRWxlbWVudFNvdXJjZShIVE1MTWVkaWFFbGVtZW50
JiBtZWRpYUVsZW1lbnQpCit7CisgICAgQUxXQVlTX0xPRyhMT0dJREVOVElGSUVSKTsKKworICAg
IEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisKKyAgICBpZiAobV9pc1N0b3BTY2hlZHVsZWQgfHwg
bWVkaWFFbGVtZW50LmF1ZGlvU291cmNlTm9kZSgpKQorICAgICAgICByZXR1cm4gRXhjZXB0aW9u
IHsgSW52YWxpZFN0YXRlRXJyb3IgfTsKKworICAgIGxhenlJbml0aWFsaXplKCk7CisKKyAgICBh
dXRvIG5vZGUgPSBNZWRpYUVsZW1lbnRBdWRpb1NvdXJjZU5vZGU6OmNyZWF0ZSgqdGhpcywgbWVk
aWFFbGVtZW50KTsKKworICAgIG1lZGlhRWxlbWVudC5zZXRBdWRpb1NvdXJjZU5vZGUobm9kZS5w
dHIoKSk7CisKKyAgICByZWZOb2RlKG5vZGUuZ2V0KCkpOyAvLyBjb250ZXh0IGtlZXBzIHJlZmVy
ZW5jZSB1bnRpbCBub2RlIGlzIGRpc2Nvbm5lY3RlZAorICAgIHJldHVybiBub2RlOworfQorCisj
ZW5kaWYKKworI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCisKK0V4Y2VwdGlvbk9yPFJlZjxNZWRp
YVN0cmVhbUF1ZGlvU291cmNlTm9kZT4+IFdlYktpdEF1ZGlvQ29udGV4dDo6Y3JlYXRlTWVkaWFT
dHJlYW1Tb3VyY2UoTWVkaWFTdHJlYW0mIG1lZGlhU3RyZWFtKQoreworICAgIEFMV0FZU19MT0co
TE9HSURFTlRJRklFUik7CisKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworCisgICAgaWYg
KG1faXNTdG9wU2NoZWR1bGVkKQorICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgSW52YWxpZFN0
YXRlRXJyb3IgfTsKKworICAgIGF1dG8gYXVkaW9UcmFja3MgPSBtZWRpYVN0cmVhbS5nZXRBdWRp
b1RyYWNrcygpOworICAgIGlmIChhdWRpb1RyYWNrcy5pc0VtcHR5KCkpCisgICAgICAgIHJldHVy
biBFeGNlcHRpb24geyBJbnZhbGlkU3RhdGVFcnJvciB9OworCisgICAgTWVkaWFTdHJlYW1UcmFj
ayogcHJvdmlkZXJUcmFjayA9IG51bGxwdHI7CisgICAgZm9yIChhdXRvJiB0cmFjayA6IGF1ZGlv
VHJhY2tzKSB7CisgICAgICAgIGlmICh0cmFjay0+YXVkaW9Tb3VyY2VQcm92aWRlcigpKSB7Cisg
ICAgICAgICAgICBwcm92aWRlclRyYWNrID0gdHJhY2suZ2V0KCk7CisgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgfQorICAgIH0KKyAgICBpZiAoIXByb3ZpZGVyVHJhY2spCisgICAgICAgIHJl
dHVybiBFeGNlcHRpb24geyBJbnZhbGlkU3RhdGVFcnJvciB9OworCisgICAgbGF6eUluaXRpYWxp
emUoKTsKKworICAgIGF1dG8gbm9kZSA9IE1lZGlhU3RyZWFtQXVkaW9Tb3VyY2VOb2RlOjpjcmVh
dGUoKnRoaXMsIG1lZGlhU3RyZWFtLCAqcHJvdmlkZXJUcmFjayk7CisgICAgbm9kZS0+c2V0Rm9y
bWF0KDIsIHNhbXBsZVJhdGUoKSk7CisKKyAgICByZWZOb2RlKG5vZGUpOyAvLyBjb250ZXh0IGtl
ZXBzIHJlZmVyZW5jZSB1bnRpbCBub2RlIGlzIGRpc2Nvbm5lY3RlZAorICAgIHJldHVybiBub2Rl
OworfQorCitFeGNlcHRpb25PcjxSZWY8TWVkaWFTdHJlYW1BdWRpb0Rlc3RpbmF0aW9uTm9kZT4+
IFdlYktpdEF1ZGlvQ29udGV4dDo6Y3JlYXRlTWVkaWFTdHJlYW1EZXN0aW5hdGlvbigpCit7Cisg
ICAgaWYgKG1faXNTdG9wU2NoZWR1bGVkKQorICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgSW52
YWxpZFN0YXRlRXJyb3IgfTsKKworICAgIC8vIEZJWE1FOiBBZGQgc3VwcG9ydCBmb3IgYW4gb3B0
aW9uYWwgYXJndW1lbnQgd2hpY2ggc3BlY2lmaWVzIHRoZSBudW1iZXIgb2YgY2hhbm5lbHMuCisg
ICAgLy8gRklYTUU6IFRoZSBkZWZhdWx0IHNob3VsZCBwcm9iYWJseSBiZSBzdGVyZW8gaW5zdGVh
ZCBvZiBtb25vLgorICAgIHJldHVybiBNZWRpYVN0cmVhbUF1ZGlvRGVzdGluYXRpb25Ob2RlOjpj
cmVhdGUoKnRoaXMsIDEpOworfQorCisjZW5kaWYKKworRXhjZXB0aW9uT3I8UmVmPFNjcmlwdFBy
b2Nlc3Nvck5vZGU+PiBXZWJLaXRBdWRpb0NvbnRleHQ6OmNyZWF0ZVNjcmlwdFByb2Nlc3Nvcihz
aXplX3QgYnVmZmVyU2l6ZSwgc2l6ZV90IG51bWJlck9mSW5wdXRDaGFubmVscywgc2l6ZV90IG51
bWJlck9mT3V0cHV0Q2hhbm5lbHMpCit7CisgICAgQUxXQVlTX0xPRyhMT0dJREVOVElGSUVSKTsK
KworICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisKKyAgICBpZiAobV9pc1N0b3BTY2hlZHVs
ZWQpCisgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBJbnZhbGlkU3RhdGVFcnJvciB9OworCisg
ICAgbGF6eUluaXRpYWxpemUoKTsKKworICAgIC8vIFczQyBFZGl0b3IncyBEcmFmdCAwNiBKdW5l
IDIwMTcKKyAgICAvLyAgaHR0cHM6Ly93ZWJhdWRpby5naXRodWIuaW8vd2ViLWF1ZGlvLWFwaS8j
d2lkbC1CYXNlQXVkaW9Db250ZXh0LWNyZWF0ZVNjcmlwdFByb2Nlc3Nvci1TY3JpcHRQcm9jZXNz
b3JOb2RlLXVuc2lnbmVkLWxvbmctYnVmZmVyU2l6ZS11bnNpZ25lZC1sb25nLW51bWJlck9mSW5w
dXRDaGFubmVscy11bnNpZ25lZC1sb25nLW51bWJlck9mT3V0cHV0Q2hhbm5lbHMKKworICAgIC8v
IFRoZSBidWZmZXJTaXplIHBhcmFtZXRlciBkZXRlcm1pbmVzIHRoZSBidWZmZXIgc2l6ZSBpbiB1
bml0cyBvZiBzYW1wbGUtZnJhbWVzLiBJZiBpdCdzIG5vdCBwYXNzZWQgaW4sCisgICAgLy8gb3Ig
aWYgdGhlIHZhbHVlIGlzIDAsIHRoZW4gdGhlIGltcGxlbWVudGF0aW9uIHdpbGwgY2hvb3NlIHRo
ZSBiZXN0IGJ1ZmZlciBzaXplIGZvciB0aGUgZ2l2ZW4gZW52aXJvbm1lbnQsCisgICAgLy8gd2hp
Y2ggd2lsbCBiZSBjb25zdGFudCBwb3dlciBvZiAyIHRocm91Z2hvdXQgdGhlIGxpZmV0aW1lIG9m
IHRoZSBub2RlLiAuLi4gSWYgdGhlIHZhbHVlIG9mIHRoaXMgcGFyYW1ldGVyCisgICAgLy8gaXMg
bm90IG9uZSBvZiB0aGUgYWxsb3dlZCBwb3dlci1vZi0yIHZhbHVlcyBsaXN0ZWQgYWJvdmUsIGFu
IEluZGV4U2l6ZUVycm9yIG11c3QgYmUgdGhyb3duLgorICAgIHN3aXRjaCAoYnVmZmVyU2l6ZSkg
eworICAgIGNhc2UgMDoKKyNpZiBVU0UoQVVESU9fU0VTU0lPTikKKyAgICAgICAgLy8gUGljayBh
IHZhbHVlIGJldHdlZW4gMjU2ICgyXjgpIGFuZCAxNjM4NCAoMl4xNCksIGJhc2VkIG9uIHRoZSBi
dWZmZXIgc2l6ZSBvZiB0aGUgY3VycmVudCBBdWRpb1Nlc3Npb246CisgICAgICAgIGJ1ZmZlclNp
emUgPSAxIDw8IHN0ZDo6bWF4PHNpemVfdD4oOCwgc3RkOjptaW48c2l6ZV90PigxNCwgc3RkOjps
b2cyKEF1ZGlvU2Vzc2lvbjo6c2hhcmVkU2Vzc2lvbigpLmJ1ZmZlclNpemUoKSkpKTsKKyNlbHNl
CisgICAgICAgIGJ1ZmZlclNpemUgPSAyMDQ4OworI2VuZGlmCisgICAgICAgIGJyZWFrOworICAg
IGNhc2UgMjU2OgorICAgIGNhc2UgNTEyOgorICAgIGNhc2UgMTAyNDoKKyAgICBjYXNlIDIwNDg6
CisgICAgY2FzZSA0MDk2OgorICAgIGNhc2UgODE5MjoKKyAgICBjYXNlIDE2Mzg0OgorICAgICAg
ICBicmVhazsKKyAgICBkZWZhdWx0OgorICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgSW5kZXhT
aXplRXJyb3IgfTsKKyAgICB9CisKKyAgICAvLyBBbiBJbmRleFNpemVFcnJvciBleGNlcHRpb24g
bXVzdCBiZSB0aHJvd24gaWYgYnVmZmVyU2l6ZSBvciBudW1iZXJPZklucHV0Q2hhbm5lbHMgb3Ig
bnVtYmVyT2ZPdXRwdXRDaGFubmVscworICAgIC8vIGFyZSBvdXRzaWRlIHRoZSB2YWxpZCByYW5n
ZS4gSXQgaXMgaW52YWxpZCBmb3IgYm90aCBudW1iZXJPZklucHV0Q2hhbm5lbHMgYW5kIG51bWJl
ck9mT3V0cHV0Q2hhbm5lbHMgdG8gYmUgemVyby4KKyAgICAvLyBJbiB0aGlzIGNhc2UgYW4gSW5k
ZXhTaXplRXJyb3IgbXVzdCBiZSB0aHJvd24uCisKKyAgICBpZiAoIW51bWJlck9mSW5wdXRDaGFu
bmVscyAmJiAhbnVtYmVyT2ZPdXRwdXRDaGFubmVscykKKyAgICAgICAgcmV0dXJuIEV4Y2VwdGlv
biB7IE5vdFN1cHBvcnRlZEVycm9yIH07CisKKyAgICAvLyBUaGlzIHBhcmFtZXRlciBbbnVtYmVy
T2ZJbnB1dENoYW5uZWxzXSBkZXRlcm1pbmVzIHRoZSBudW1iZXIgb2YgY2hhbm5lbHMgZm9yIHRo
aXMgbm9kZSdzIGlucHV0LiBWYWx1ZXMgb2YKKyAgICAvLyB1cCB0byAzMiBtdXN0IGJlIHN1cHBv
cnRlZC4gQSBOb3RTdXBwb3J0ZWRFcnJvciBtdXN0IGJlIHRocm93biBpZiB0aGUgbnVtYmVyIG9m
IGNoYW5uZWxzIGlzIG5vdCBzdXBwb3J0ZWQuCisKKyAgICBpZiAobnVtYmVyT2ZJbnB1dENoYW5u
ZWxzID4gbWF4TnVtYmVyT2ZDaGFubmVscygpKQorICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsg
Tm90U3VwcG9ydGVkRXJyb3IgfTsKKworICAgIC8vIFRoaXMgcGFyYW1ldGVyIFtudW1iZXJPZk91
dHB1dENoYW5uZWxzXSBkZXRlcm1pbmVzIHRoZSBudW1iZXIgb2YgY2hhbm5lbHMgZm9yIHRoaXMg
bm9kZSdzIG91dHB1dC4gVmFsdWVzIG9mCisgICAgLy8gdXAgdG8gMzIgbXVzdCBiZSBzdXBwb3J0
ZWQuIEEgTm90U3VwcG9ydGVkRXJyb3IgbXVzdCBiZSB0aHJvd24gaWYgdGhlIG51bWJlciBvZiBj
aGFubmVscyBpcyBub3Qgc3VwcG9ydGVkLgorCisgICAgaWYgKG51bWJlck9mT3V0cHV0Q2hhbm5l
bHMgPiBtYXhOdW1iZXJPZkNoYW5uZWxzKCkpCisgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBO
b3RTdXBwb3J0ZWRFcnJvciB9OworCisgICAgYXV0byBub2RlID0gU2NyaXB0UHJvY2Vzc29yTm9k
ZTo6Y3JlYXRlKCp0aGlzLCBzYW1wbGVSYXRlKCksIGJ1ZmZlclNpemUsIG51bWJlck9mSW5wdXRD
aGFubmVscywgbnVtYmVyT2ZPdXRwdXRDaGFubmVscyk7CisKKyAgICByZWZOb2RlKG5vZGUpOyAv
LyBjb250ZXh0IGtlZXBzIHJlZmVyZW5jZSB1bnRpbCB3ZSBzdG9wIG1ha2luZyBqYXZhc2NyaXB0
IHJlbmRlcmluZyBjYWxsYmFja3MKKyAgICByZXR1cm4gbm9kZTsKK30KKworRXhjZXB0aW9uT3I8
UmVmPEJpcXVhZEZpbHRlck5vZGU+PiBXZWJLaXRBdWRpb0NvbnRleHQ6OmNyZWF0ZUJpcXVhZEZp
bHRlcigpCit7CisgICAgQUxXQVlTX0xPRyhMT0dJREVOVElGSUVSKTsKKworICAgIEFTU0VSVChp
c01haW5UaHJlYWQoKSk7CisgICAgaWYgKG1faXNTdG9wU2NoZWR1bGVkKQorICAgICAgICByZXR1
cm4gRXhjZXB0aW9uIHsgSW52YWxpZFN0YXRlRXJyb3IgfTsKKworICAgIGxhenlJbml0aWFsaXpl
KCk7CisKKyAgICByZXR1cm4gQmlxdWFkRmlsdGVyTm9kZTo6Y3JlYXRlKCp0aGlzLCBzYW1wbGVS
YXRlKCkpOworfQorCitFeGNlcHRpb25PcjxSZWY8V2F2ZVNoYXBlck5vZGU+PiBXZWJLaXRBdWRp
b0NvbnRleHQ6OmNyZWF0ZVdhdmVTaGFwZXIoKQoreworICAgIEFMV0FZU19MT0coTE9HSURFTlRJ
RklFUik7CisKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAgIGlmIChtX2lzU3RvcFNj
aGVkdWxlZCkKKyAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IEludmFsaWRTdGF0ZUVycm9yIH07
CisKKyAgICBsYXp5SW5pdGlhbGl6ZSgpOworICAgIHJldHVybiBXYXZlU2hhcGVyTm9kZTo6Y3Jl
YXRlKCp0aGlzKTsKK30KKworRXhjZXB0aW9uT3I8UmVmPFdlYktpdEF1ZGlvUGFubmVyTm9kZT4+
IFdlYktpdEF1ZGlvQ29udGV4dDo6Y3JlYXRlUGFubmVyKCkKK3sKKyAgICBBTFdBWVNfTE9HKExP
R0lERU5USUZJRVIpOworCisgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKyAgICBpZiAobV9p
c1N0b3BTY2hlZHVsZWQpCisgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBJbnZhbGlkU3RhdGVF
cnJvciB9OworCisgICAgbGF6eUluaXRpYWxpemUoKTsKKyAgICByZXR1cm4gV2ViS2l0QXVkaW9Q
YW5uZXJOb2RlOjpjcmVhdGUoKnRoaXMsIHNhbXBsZVJhdGUoKSk7Cit9CisKK0V4Y2VwdGlvbk9y
PFJlZjxDb252b2x2ZXJOb2RlPj4gV2ViS2l0QXVkaW9Db250ZXh0OjpjcmVhdGVDb252b2x2ZXIo
KQoreworICAgIEFMV0FZU19MT0coTE9HSURFTlRJRklFUik7CisKKyAgICBBU1NFUlQoaXNNYWlu
VGhyZWFkKCkpOworICAgIGlmIChtX2lzU3RvcFNjaGVkdWxlZCkKKyAgICAgICAgcmV0dXJuIEV4
Y2VwdGlvbiB7IEludmFsaWRTdGF0ZUVycm9yIH07CisKKyAgICBsYXp5SW5pdGlhbGl6ZSgpOwor
ICAgIHJldHVybiBDb252b2x2ZXJOb2RlOjpjcmVhdGUoKnRoaXMsIHNhbXBsZVJhdGUoKSk7Cit9
CisKK0V4Y2VwdGlvbk9yPFJlZjxEeW5hbWljc0NvbXByZXNzb3JOb2RlPj4gV2ViS2l0QXVkaW9D
b250ZXh0OjpjcmVhdGVEeW5hbWljc0NvbXByZXNzb3IoKQoreworICAgIEFMV0FZU19MT0coTE9H
SURFTlRJRklFUik7CisKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAgIGlmIChtX2lz
U3RvcFNjaGVkdWxlZCkKKyAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IEludmFsaWRTdGF0ZUVy
cm9yIH07CisKKyAgICBsYXp5SW5pdGlhbGl6ZSgpOworICAgIHJldHVybiBEeW5hbWljc0NvbXBy
ZXNzb3JOb2RlOjpjcmVhdGUoKnRoaXMsIHNhbXBsZVJhdGUoKSk7Cit9CisKK0V4Y2VwdGlvbk9y
PFJlZjxBbmFseXNlck5vZGU+PiBXZWJLaXRBdWRpb0NvbnRleHQ6OmNyZWF0ZUFuYWx5c2VyKCkK
K3sKKyAgICBBTFdBWVNfTE9HKExPR0lERU5USUZJRVIpOworCisgICAgQVNTRVJUKGlzTWFpblRo
cmVhZCgpKTsKKyAgICBpZiAobV9pc1N0b3BTY2hlZHVsZWQpCisgICAgICAgIHJldHVybiBFeGNl
cHRpb24geyBJbnZhbGlkU3RhdGVFcnJvciB9OworCisgICAgbGF6eUluaXRpYWxpemUoKTsKKyAg
ICByZXR1cm4gQW5hbHlzZXJOb2RlOjpjcmVhdGUoKnRoaXMsIHNhbXBsZVJhdGUoKSk7Cit9CisK
K0V4Y2VwdGlvbk9yPFJlZjxHYWluTm9kZT4+IFdlYktpdEF1ZGlvQ29udGV4dDo6Y3JlYXRlR2Fp
bigpCit7CisgICAgQUxXQVlTX0xPRyhMT0dJREVOVElGSUVSKTsKKworICAgIEFTU0VSVChpc01h
aW5UaHJlYWQoKSk7CisgICAgaWYgKG1faXNTdG9wU2NoZWR1bGVkKQorICAgICAgICByZXR1cm4g
RXhjZXB0aW9uIHsgSW52YWxpZFN0YXRlRXJyb3IgfTsKKworICAgIGxhenlJbml0aWFsaXplKCk7
CisgICAgcmV0dXJuIEdhaW5Ob2RlOjpjcmVhdGUoKnRoaXMsIHNhbXBsZVJhdGUoKSk7Cit9CisK
K0V4Y2VwdGlvbk9yPFJlZjxEZWxheU5vZGU+PiBXZWJLaXRBdWRpb0NvbnRleHQ6OmNyZWF0ZURl
bGF5KGRvdWJsZSBtYXhEZWxheVRpbWUpCit7CisgICAgQUxXQVlTX0xPRyhMT0dJREVOVElGSUVS
KTsKKworICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisgICAgaWYgKG1faXNTdG9wU2NoZWR1
bGVkKQorICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgSW52YWxpZFN0YXRlRXJyb3IgfTsKKwor
ICAgIGxhenlJbml0aWFsaXplKCk7CisgICAgcmV0dXJuIERlbGF5Tm9kZTo6Y3JlYXRlKCp0aGlz
LCBzYW1wbGVSYXRlKCksIG1heERlbGF5VGltZSk7Cit9CisKK0V4Y2VwdGlvbk9yPFJlZjxDaGFu
bmVsU3BsaXR0ZXJOb2RlPj4gV2ViS2l0QXVkaW9Db250ZXh0OjpjcmVhdGVDaGFubmVsU3BsaXR0
ZXIoc2l6ZV90IG51bWJlck9mT3V0cHV0cykKK3sKKyAgICBBTFdBWVNfTE9HKExPR0lERU5USUZJ
RVIpOworCisgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKyAgICBpZiAobV9pc1N0b3BTY2hl
ZHVsZWQpCisgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBJbnZhbGlkU3RhdGVFcnJvciB9Owor
CisgICAgbGF6eUluaXRpYWxpemUoKTsKKyAgICBhdXRvIG5vZGUgPSBDaGFubmVsU3BsaXR0ZXJO
b2RlOjpjcmVhdGUoKnRoaXMsIHNhbXBsZVJhdGUoKSwgbnVtYmVyT2ZPdXRwdXRzKTsKKyAgICBp
ZiAoIW5vZGUpCisgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBJbmRleFNpemVFcnJvciB9Owor
ICAgIHJldHVybiBub2RlLnJlbGVhc2VOb25OdWxsKCk7Cit9CisKK0V4Y2VwdGlvbk9yPFJlZjxD
aGFubmVsTWVyZ2VyTm9kZT4+IFdlYktpdEF1ZGlvQ29udGV4dDo6Y3JlYXRlQ2hhbm5lbE1lcmdl
cihzaXplX3QgbnVtYmVyT2ZJbnB1dHMpCit7CisgICAgQUxXQVlTX0xPRyhMT0dJREVOVElGSUVS
KTsKKworICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisgICAgaWYgKG1faXNTdG9wU2NoZWR1
bGVkKQorICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgSW52YWxpZFN0YXRlRXJyb3IgfTsKKwor
ICAgIGxhenlJbml0aWFsaXplKCk7CisgICAgYXV0byBub2RlID0gQ2hhbm5lbE1lcmdlck5vZGU6
OmNyZWF0ZSgqdGhpcywgc2FtcGxlUmF0ZSgpLCBudW1iZXJPZklucHV0cyk7CisgICAgaWYgKCFu
b2RlKQorICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgSW5kZXhTaXplRXJyb3IgfTsKKyAgICBy
ZXR1cm4gbm9kZS5yZWxlYXNlTm9uTnVsbCgpOworfQorCitFeGNlcHRpb25PcjxSZWY8T3NjaWxs
YXRvck5vZGU+PiBXZWJLaXRBdWRpb0NvbnRleHQ6OmNyZWF0ZU9zY2lsbGF0b3IoKQoreworICAg
IEFMV0FZU19MT0coTE9HSURFTlRJRklFUik7CisKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkp
OworICAgIGlmIChtX2lzU3RvcFNjaGVkdWxlZCkKKyAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7
IEludmFsaWRTdGF0ZUVycm9yIH07CisKKyAgICBsYXp5SW5pdGlhbGl6ZSgpOworCisgICAgUmVm
PE9zY2lsbGF0b3JOb2RlPiBub2RlID0gT3NjaWxsYXRvck5vZGU6OmNyZWF0ZSgqdGhpcywgc2Ft
cGxlUmF0ZSgpKTsKKworICAgIC8vIEJlY2F1c2UgdGhpcyBpcyBhbiBBdWRpb1NjaGVkdWxlZFNv
dXJjZU5vZGUsIHRoZSBjb250ZXh0IGtlZXBzIGEgcmVmZXJlbmNlIHVudGlsIGl0IGhhcyBmaW5p
c2hlZCBwbGF5aW5nLgorICAgIC8vIFdoZW4gdGhpcyBoYXBwZW5zLCBBdWRpb1NjaGVkdWxlZFNv
dXJjZU5vZGU6OmZpbmlzaCgpIGNhbGxzIFdlYktpdEF1ZGlvQ29udGV4dDo6bm90aWZ5Tm9kZUZp
bmlzaGVkUHJvY2Vzc2luZygpLgorICAgIHJlZk5vZGUobm9kZSk7CisKKyAgICByZXR1cm4gbm9k
ZTsKK30KKworRXhjZXB0aW9uT3I8UmVmPFBlcmlvZGljV2F2ZT4+IFdlYktpdEF1ZGlvQ29udGV4
dDo6Y3JlYXRlUGVyaW9kaWNXYXZlKEZsb2F0MzJBcnJheSYgcmVhbCwgRmxvYXQzMkFycmF5JiBp
bWFnaW5hcnkpCit7CisgICAgQUxXQVlTX0xPRyhMT0dJREVOVElGSUVSKTsKKworICAgIEFTU0VS
VChpc01haW5UaHJlYWQoKSk7CisgICAgaWYgKG1faXNTdG9wU2NoZWR1bGVkKQorICAgICAgICBy
ZXR1cm4gRXhjZXB0aW9uIHsgSW52YWxpZFN0YXRlRXJyb3IgfTsKKworICAgIGlmIChyZWFsLmxl
bmd0aCgpICE9IGltYWdpbmFyeS5sZW5ndGgoKSB8fCAocmVhbC5sZW5ndGgoKSA+IE1heFBlcmlv
ZGljV2F2ZUxlbmd0aCkgfHwgIXJlYWwubGVuZ3RoKCkpCisgICAgICAgIHJldHVybiBFeGNlcHRp
b24geyBJbmRleFNpemVFcnJvciB9OworICAgIGxhenlJbml0aWFsaXplKCk7CisgICAgcmV0dXJu
IFBlcmlvZGljV2F2ZTo6Y3JlYXRlKHNhbXBsZVJhdGUoKSwgcmVhbCwgaW1hZ2luYXJ5KTsKK30K
Kwordm9pZCBXZWJLaXRBdWRpb0NvbnRleHQ6Om5vdGlmeU5vZGVGaW5pc2hlZFByb2Nlc3Npbmco
QXVkaW9Ob2RlKiBub2RlKQoreworICAgIEFTU0VSVChpc0F1ZGlvVGhyZWFkKCkpOworICAgIG1f
ZmluaXNoZWROb2Rlcy5hcHBlbmQobm9kZSk7Cit9CisKK3ZvaWQgV2ViS2l0QXVkaW9Db250ZXh0
OjpkZXJlZkZpbmlzaGVkU291cmNlTm9kZXMoKQoreworICAgIEFTU0VSVChpc0dyYXBoT3duZXIo
KSk7CisgICAgQVNTRVJUKGlzQXVkaW9UaHJlYWQoKSB8fCBpc0F1ZGlvVGhyZWFkRmluaXNoZWQo
KSk7CisgICAgZm9yIChhdXRvJiBub2RlIDogbV9maW5pc2hlZE5vZGVzKQorICAgICAgICBkZXJl
Zk5vZGUoKm5vZGUpOworCisgICAgbV9maW5pc2hlZE5vZGVzLmNsZWFyKCk7Cit9CisKK3ZvaWQg
V2ViS2l0QXVkaW9Db250ZXh0OjpyZWZOb2RlKEF1ZGlvTm9kZSYgbm9kZSkKK3sKKyAgICBBU1NF
UlQoaXNNYWluVGhyZWFkKCkpOworICAgIEF1dG9Mb2NrZXIgbG9ja2VyKCp0aGlzKTsKKworICAg
IG5vZGUucmVmKEF1ZGlvTm9kZTo6UmVmVHlwZUNvbm5lY3Rpb24pOworICAgIG1fcmVmZXJlbmNl
ZE5vZGVzLmFwcGVuZCgmbm9kZSk7Cit9CisKK3ZvaWQgV2ViS2l0QXVkaW9Db250ZXh0OjpkZXJl
Zk5vZGUoQXVkaW9Ob2RlJiBub2RlKQoreworICAgIEFTU0VSVChpc0dyYXBoT3duZXIoKSk7CisK
KyAgICBub2RlLmRlcmVmKEF1ZGlvTm9kZTo6UmVmVHlwZUNvbm5lY3Rpb24pOworCisgICAgQVNT
RVJUKG1fcmVmZXJlbmNlZE5vZGVzLmNvbnRhaW5zKCZub2RlKSk7CisgICAgbV9yZWZlcmVuY2Vk
Tm9kZXMucmVtb3ZlRmlyc3QoJm5vZGUpOworfQorCit2b2lkIFdlYktpdEF1ZGlvQ29udGV4dDo6
ZGVyZWZVbmZpbmlzaGVkU291cmNlTm9kZXMoKQoreworICAgIEFTU0VSVChpc01haW5UaHJlYWQo
KSAmJiBpc0F1ZGlvVGhyZWFkRmluaXNoZWQoKSk7CisgICAgZm9yIChhdXRvJiBub2RlIDogbV9y
ZWZlcmVuY2VkTm9kZXMpCisgICAgICAgIG5vZGUtPmRlcmVmKEF1ZGlvTm9kZTo6UmVmVHlwZUNv
bm5lY3Rpb24pOworCisgICAgbV9yZWZlcmVuY2VkTm9kZXMuY2xlYXIoKTsKK30KKwordm9pZCBX
ZWJLaXRBdWRpb0NvbnRleHQ6OmxvY2soYm9vbCYgbXVzdFJlbGVhc2VMb2NrKQoreworICAgIC8v
IERvbid0IGFsbG93IHJlZ3VsYXIgbG9jayBpbiByZWFsLXRpbWUgYXVkaW8gdGhyZWFkLgorICAg
IEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisKKyAgICBUaHJlYWQmIHRoaXNUaHJlYWQgPSBUaHJl
YWQ6OmN1cnJlbnQoKTsKKworICAgIGlmICgmdGhpc1RocmVhZCA9PSBtX2dyYXBoT3duZXJUaHJl
YWQpIHsKKyAgICAgICAgLy8gV2UgYWxyZWFkeSBoYXZlIHRoZSBsb2NrLgorICAgICAgICBtdXN0
UmVsZWFzZUxvY2sgPSBmYWxzZTsKKyAgICB9IGVsc2UgeworICAgICAgICAvLyBBY3F1aXJlIHRo
ZSBsb2NrLgorICAgICAgICBtX2NvbnRleHRHcmFwaE11dGV4LmxvY2soKTsKKyAgICAgICAgbV9n
cmFwaE93bmVyVGhyZWFkID0gJnRoaXNUaHJlYWQ7CisgICAgICAgIG11c3RSZWxlYXNlTG9jayA9
IHRydWU7CisgICAgfQorfQorCitib29sIFdlYktpdEF1ZGlvQ29udGV4dDo6dHJ5TG9jayhib29s
JiBtdXN0UmVsZWFzZUxvY2spCit7CisgICAgVGhyZWFkJiB0aGlzVGhyZWFkID0gVGhyZWFkOjpj
dXJyZW50KCk7CisgICAgYm9vbCBpc0F1ZGlvVGhyZWFkID0gJnRoaXNUaHJlYWQgPT0gYXVkaW9U
aHJlYWQoKTsKKworICAgIC8vIFRyeSB0byBjYXRjaCBjYXNlcyBvZiB1c2luZyB0cnkgbG9jayBv
biBtYWluIHRocmVhZCAtIGl0IHNob3VsZCB1c2UgcmVndWxhciBsb2NrLgorICAgIEFTU0VSVChp
c0F1ZGlvVGhyZWFkIHx8IGlzQXVkaW9UaHJlYWRGaW5pc2hlZCgpKTsKKworICAgIGlmICghaXNB
dWRpb1RocmVhZCkgeworICAgICAgICAvLyBJbiByZWxlYXNlIGJ1aWxkIHRyZWF0IHRyeUxvY2so
KSBhcyBsb2NrKCkgKHNpbmNlIGFib3ZlIEFTU0VSVChpc0F1ZGlvVGhyZWFkKSBuZXZlciBmaXJl
cykgLSB0aGlzIGlzIHRoZSBiZXN0IHdlIGNhbiBkby4KKyAgICAgICAgbG9jayhtdXN0UmVsZWFz
ZUxvY2spOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisKKyAgICBib29sIGhhc0xvY2s7
CisKKyAgICBpZiAoJnRoaXNUaHJlYWQgPT0gbV9ncmFwaE93bmVyVGhyZWFkKSB7CisgICAgICAg
IC8vIFRocmVhZCBhbHJlYWR5IGhhcyB0aGUgbG9jay4KKyAgICAgICAgaGFzTG9jayA9IHRydWU7
CisgICAgICAgIG11c3RSZWxlYXNlTG9jayA9IGZhbHNlOworICAgIH0gZWxzZSB7CisgICAgICAg
IC8vIERvbid0IGFscmVhZHkgaGF2ZSB0aGUgbG9jayAtIHRyeSB0byBhY3F1aXJlIGl0LgorICAg
ICAgICBoYXNMb2NrID0gbV9jb250ZXh0R3JhcGhNdXRleC50cnlMb2NrKCk7CisKKyAgICAgICAg
aWYgKGhhc0xvY2spCisgICAgICAgICAgICBtX2dyYXBoT3duZXJUaHJlYWQgPSAmdGhpc1RocmVh
ZDsKKworICAgICAgICBtdXN0UmVsZWFzZUxvY2sgPSBoYXNMb2NrOworICAgIH0KKworICAgIHJl
dHVybiBoYXNMb2NrOworfQorCit2b2lkIFdlYktpdEF1ZGlvQ29udGV4dDo6dW5sb2NrKCkKK3sK
KyAgICBBU1NFUlQobV9ncmFwaE93bmVyVGhyZWFkID09ICZUaHJlYWQ6OmN1cnJlbnQoKSk7CisK
KyAgICBtX2dyYXBoT3duZXJUaHJlYWQgPSBudWxscHRyOworICAgIG1fY29udGV4dEdyYXBoTXV0
ZXgudW5sb2NrKCk7Cit9CisKK2Jvb2wgV2ViS2l0QXVkaW9Db250ZXh0Ojppc0F1ZGlvVGhyZWFk
KCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9hdWRpb1RocmVhZCA9PSAmVGhyZWFkOjpjdXJyZW50
KCk7Cit9CisKK2Jvb2wgV2ViS2l0QXVkaW9Db250ZXh0Ojppc0dyYXBoT3duZXIoKSBjb25zdAor
eworICAgIHJldHVybiBtX2dyYXBoT3duZXJUaHJlYWQgPT0gJlRocmVhZDo6Y3VycmVudCgpOwor
fQorCit2b2lkIFdlYktpdEF1ZGlvQ29udGV4dDo6YWRkRGVmZXJyZWRGaW5pc2hEZXJlZihBdWRp
b05vZGUqIG5vZGUpCit7CisgICAgQVNTRVJUKGlzQXVkaW9UaHJlYWQoKSk7CisgICAgbV9kZWZl
cnJlZEZpbmlzaERlcmVmTGlzdC5hcHBlbmQobm9kZSk7Cit9CisKK3ZvaWQgV2ViS2l0QXVkaW9D
b250ZXh0OjpoYW5kbGVQcmVSZW5kZXJUYXNrcygpCit7CisgICAgQVNTRVJUKGlzQXVkaW9UaHJl
YWQoKSk7CisKKyAgICAvLyBBdCB0aGUgYmVnaW5uaW5nIG9mIGV2ZXJ5IHJlbmRlciBxdWFudHVt
LCB0cnkgdG8gdXBkYXRlIHRoZSBpbnRlcm5hbCByZW5kZXJpbmcgZ3JhcGggc3RhdGUgKGZyb20g
bWFpbiB0aHJlYWQgY2hhbmdlcykuCisgICAgLy8gSXQncyBPSyBpZiB0aGUgdHJ5TG9jaygpIGZh
aWxzLCB3ZSdsbCBqdXN0IHRha2Ugc2xpZ2h0bHkgbG9uZ2VyIHRvIHBpY2sgdXAgdGhlIGNoYW5n
ZXMuCisgICAgYm9vbCBtdXN0UmVsZWFzZUxvY2s7CisgICAgaWYgKHRyeUxvY2sobXVzdFJlbGVh
c2VMb2NrKSkgeworICAgICAgICAvLyBGaXh1cCB0aGUgc3RhdGUgb2YgYW55IGRpcnR5IEF1ZGlv
U3VtbWluZ0p1bmN0aW9ucyBhbmQgQXVkaW9Ob2RlT3V0cHV0cy4KKyAgICAgICAgaGFuZGxlRGly
dHlBdWRpb1N1bW1pbmdKdW5jdGlvbnMoKTsKKyAgICAgICAgaGFuZGxlRGlydHlBdWRpb05vZGVP
dXRwdXRzKCk7CisKKyAgICAgICAgdXBkYXRlQXV0b21hdGljUHVsbE5vZGVzKCk7CisKKyAgICAg
ICAgaWYgKG11c3RSZWxlYXNlTG9jaykKKyAgICAgICAgICAgIHVubG9jaygpOworICAgIH0KK30K
Kwordm9pZCBXZWJLaXRBdWRpb0NvbnRleHQ6OmhhbmRsZVBvc3RSZW5kZXJUYXNrcygpCit7Cisg
ICAgQVNTRVJUKGlzQXVkaW9UaHJlYWQoKSk7CisKKyAgICAvLyBNdXN0IHVzZSBhIHRyeUxvY2so
KSBoZXJlIHRvby4gRG9uJ3Qgd29ycnksIHRoZSBsb2NrIHdpbGwgdmVyeSByYXJlbHkgYmUgY29u
dGVuZGVkIGFuZCB0aGlzIG1ldGhvZCBpcyBjYWxsZWQgZnJlcXVlbnRseS4KKyAgICAvLyBUaGUg
d29yc3QgdGhhdCBjYW4gaGFwcGVuIGlzIHRoYXQgdGhlcmUgd2lsbCBiZSBzb21lIG5vZGVzIHdo
aWNoIHdpbGwgdGFrZSBzbGlnaHRseSBsb25nZXIgdGhhbiB1c3VhbCB0byBiZSBkZWxldGVkIG9y
IHJlbW92ZWQKKyAgICAvLyBmcm9tIHRoZSByZW5kZXIgZ3JhcGggKGluIHdoaWNoIGNhc2UgdGhl
eSdsbCByZW5kZXIgc2lsZW5jZSkuCisgICAgYm9vbCBtdXN0UmVsZWFzZUxvY2s7CisgICAgaWYg
KHRyeUxvY2sobXVzdFJlbGVhc2VMb2NrKSkgeworICAgICAgICAvLyBUYWtlIGNhcmUgb2YgZmlu
aXNoaW5nIGFueSBkZXJlZnMgd2hlcmUgdGhlIHRyeUxvY2soKSBmYWlsZWQgcHJldmlvdXNseS4K
KyAgICAgICAgaGFuZGxlRGVmZXJyZWRGaW5pc2hEZXJlZnMoKTsKKworICAgICAgICAvLyBEeW5h
bWljYWxseSBjbGVhbiB1cCBub2RlcyB3aGljaCBhcmUgbm8gbG9uZ2VyIG5lZWRlZC4KKyAgICAg
ICAgZGVyZWZGaW5pc2hlZFNvdXJjZU5vZGVzKCk7CisKKyAgICAgICAgLy8gRG9uJ3QgZGVsZXRl
IGluIHRoZSByZWFsLXRpbWUgdGhyZWFkLiBMZXQgdGhlIG1haW4gdGhyZWFkIGRvIGl0LgorICAg
ICAgICAvLyBSZWYtY291bnRlZCBvYmplY3RzIGhlbGQgYnkgY2VydGFpbiBBdWRpb05vZGVzIG1h
eSBub3QgYmUgdGhyZWFkLXNhZmUuCisgICAgICAgIHNjaGVkdWxlTm9kZURlbGV0aW9uKCk7CisK
KyAgICAgICAgLy8gRml4dXAgdGhlIHN0YXRlIG9mIGFueSBkaXJ0eSBBdWRpb1N1bW1pbmdKdW5j
dGlvbnMgYW5kIEF1ZGlvTm9kZU91dHB1dHMuCisgICAgICAgIGhhbmRsZURpcnR5QXVkaW9TdW1t
aW5nSnVuY3Rpb25zKCk7CisgICAgICAgIGhhbmRsZURpcnR5QXVkaW9Ob2RlT3V0cHV0cygpOwor
CisgICAgICAgIHVwZGF0ZUF1dG9tYXRpY1B1bGxOb2RlcygpOworCisgICAgICAgIGlmIChtdXN0
UmVsZWFzZUxvY2spCisgICAgICAgICAgICB1bmxvY2soKTsKKyAgICB9Cit9CisKK3ZvaWQgV2Vi
S2l0QXVkaW9Db250ZXh0OjpoYW5kbGVEZWZlcnJlZEZpbmlzaERlcmVmcygpCit7CisgICAgQVNT
RVJUKGlzQXVkaW9UaHJlYWQoKSAmJiBpc0dyYXBoT3duZXIoKSk7CisgICAgZm9yIChhdXRvJiBu
b2RlIDogbV9kZWZlcnJlZEZpbmlzaERlcmVmTGlzdCkKKyAgICAgICAgbm9kZS0+ZmluaXNoRGVy
ZWYoQXVkaW9Ob2RlOjpSZWZUeXBlQ29ubmVjdGlvbik7CisKKyAgICBtX2RlZmVycmVkRmluaXNo
RGVyZWZMaXN0LmNsZWFyKCk7Cit9CisKK3ZvaWQgV2ViS2l0QXVkaW9Db250ZXh0OjptYXJrRm9y
RGVsZXRpb24oQXVkaW9Ob2RlJiBub2RlKQoreworICAgIEFTU0VSVChpc0dyYXBoT3duZXIoKSk7
CisKKyAgICBpZiAoaXNBdWRpb1RocmVhZEZpbmlzaGVkKCkpCisgICAgICAgIG1fbm9kZXNUb0Rl
bGV0ZS5hcHBlbmQoJm5vZGUpOworICAgIGVsc2UKKyAgICAgICAgbV9ub2Rlc01hcmtlZEZvckRl
bGV0aW9uLmFwcGVuZCgmbm9kZSk7CisKKyAgICAvLyBUaGlzIGlzIHByb2JhYmx5IHRoZSBiZXN0
IHRpbWUgZm9yIHVzIHRvIHJlbW92ZSB0aGUgbm9kZSBmcm9tIGF1dG9tYXRpYyBwdWxsIGxpc3Qs
CisgICAgLy8gc2luY2UgYWxsIGNvbm5lY3Rpb25zIGFyZSBnb25lIGFuZCB3ZSBob2xkIHRoZSBn
cmFwaCBsb2NrLiBUaGVuIHdoZW4gaGFuZGxlUG9zdFJlbmRlclRhc2tzKCkKKyAgICAvLyBnZXRz
IGEgY2hhbmNlIHRvIHNjaGVkdWxlIHRoZSBkZWxldGlvbiB3b3JrLCB1cGRhdGVBdXRvbWF0aWNQ
dWxsTm9kZXMoKSBhbHNvIGdldHMgYSBjaGFuY2UgdG8KKyAgICAvLyBtb2RpZnkgbV9yZW5kZXJp
bmdBdXRvbWF0aWNQdWxsTm9kZXMuCisgICAgcmVtb3ZlQXV0b21hdGljUHVsbE5vZGUobm9kZSk7
Cit9CisKK3ZvaWQgV2ViS2l0QXVkaW9Db250ZXh0OjpzY2hlZHVsZU5vZGVEZWxldGlvbigpCit7
CisgICAgYm9vbCBpc0dvb2QgPSBtX2lzSW5pdGlhbGl6ZWQgJiYgaXNHcmFwaE93bmVyKCk7Cisg
ICAgQVNTRVJUKGlzR29vZCk7CisgICAgaWYgKCFpc0dvb2QpCisgICAgICAgIHJldHVybjsKKwor
ICAgIC8vIE1ha2Ugc3VyZSB0byBjYWxsIGRlbGV0ZU1hcmtlZE5vZGVzKCkgb24gbWFpbiB0aHJl
YWQuCisgICAgaWYgKG1fbm9kZXNNYXJrZWRGb3JEZWxldGlvbi5zaXplKCkgJiYgIW1faXNEZWxl
dGlvblNjaGVkdWxlZCkgeworICAgICAgICBtX25vZGVzVG9EZWxldGUuYXBwZW5kVmVjdG9yKG1f
bm9kZXNNYXJrZWRGb3JEZWxldGlvbik7CisgICAgICAgIG1fbm9kZXNNYXJrZWRGb3JEZWxldGlv
bi5jbGVhcigpOworCisgICAgICAgIG1faXNEZWxldGlvblNjaGVkdWxlZCA9IHRydWU7CisKKyAg
ICAgICAgY2FsbE9uTWFpblRocmVhZChbcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpXSgp
IG11dGFibGUgeworICAgICAgICAgICAgcHJvdGVjdGVkVGhpcy0+ZGVsZXRlTWFya2VkTm9kZXMo
KTsKKyAgICAgICAgfSk7CisgICAgfQorfQorCit2b2lkIFdlYktpdEF1ZGlvQ29udGV4dDo6ZGVs
ZXRlTWFya2VkTm9kZXMoKQoreworICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisKKyAgICAv
LyBQcm90ZWN0IHRoaXMgb2JqZWN0IGZyb20gYmVpbmcgZGVsZXRlZCBiZWZvcmUgd2UgcmVsZWFz
ZSB0aGUgbXV0ZXggbG9ja2VkIGJ5IEF1dG9Mb2NrZXIuCisgICAgUmVmPFdlYktpdEF1ZGlvQ29u
dGV4dD4gcHJvdGVjdGVkVGhpcygqdGhpcyk7CisgICAgeworICAgICAgICBBdXRvTG9ja2VyIGxv
Y2tlcigqdGhpcyk7CisKKyAgICAgICAgd2hpbGUgKG1fbm9kZXNUb0RlbGV0ZS5zaXplKCkpIHsK
KyAgICAgICAgICAgIEF1ZGlvTm9kZSogbm9kZSA9IG1fbm9kZXNUb0RlbGV0ZS50YWtlTGFzdCgp
OworCisgICAgICAgICAgICAvLyBCZWZvcmUgZGVsZXRpbmcgdGhlIG5vZGUsIGNsZWFyIG91dCBh
bnkgQXVkaW9Ob2RlSW5wdXRzIGZyb20gbV9kaXJ0eVN1bW1pbmdKdW5jdGlvbnMuCisgICAgICAg
ICAgICB1bnNpZ25lZCBudW1iZXJPZklucHV0cyA9IG5vZGUtPm51bWJlck9mSW5wdXRzKCk7Cisg
ICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbnVtYmVyT2ZJbnB1dHM7ICsraSkK
KyAgICAgICAgICAgICAgICBtX2RpcnR5U3VtbWluZ0p1bmN0aW9ucy5yZW1vdmUobm9kZS0+aW5w
dXQoaSkpOworCisgICAgICAgICAgICAvLyBCZWZvcmUgZGVsZXRpbmcgdGhlIG5vZGUsIGNsZWFy
IG91dCBhbnkgQXVkaW9Ob2RlT3V0cHV0cyBmcm9tIG1fZGlydHlBdWRpb05vZGVPdXRwdXRzLgor
ICAgICAgICAgICAgdW5zaWduZWQgbnVtYmVyT2ZPdXRwdXRzID0gbm9kZS0+bnVtYmVyT2ZPdXRw
dXRzKCk7CisgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbnVtYmVyT2ZPdXRw
dXRzOyArK2kpCisgICAgICAgICAgICAgICAgbV9kaXJ0eUF1ZGlvTm9kZU91dHB1dHMucmVtb3Zl
KG5vZGUtPm91dHB1dChpKSk7CisKKyAgICAgICAgICAgIC8vIEZpbmFsbHksIGRlbGV0ZSBpdC4K
KyAgICAgICAgICAgIGRlbGV0ZSBub2RlOworICAgICAgICB9CisgICAgICAgIG1faXNEZWxldGlv
blNjaGVkdWxlZCA9IGZhbHNlOworICAgIH0KK30KKwordm9pZCBXZWJLaXRBdWRpb0NvbnRleHQ6
Om1hcmtTdW1taW5nSnVuY3Rpb25EaXJ0eShBdWRpb1N1bW1pbmdKdW5jdGlvbiogc3VtbWluZ0p1
bmN0aW9uKQoreworICAgIEFTU0VSVChpc0dyYXBoT3duZXIoKSk7CisgICAgbV9kaXJ0eVN1bW1p
bmdKdW5jdGlvbnMuYWRkKHN1bW1pbmdKdW5jdGlvbik7Cit9CisKK3ZvaWQgV2ViS2l0QXVkaW9D
b250ZXh0OjpyZW1vdmVNYXJrZWRTdW1taW5nSnVuY3Rpb24oQXVkaW9TdW1taW5nSnVuY3Rpb24q
IHN1bW1pbmdKdW5jdGlvbikKK3sKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAgIEF1
dG9Mb2NrZXIgbG9ja2VyKCp0aGlzKTsKKyAgICBtX2RpcnR5U3VtbWluZ0p1bmN0aW9ucy5yZW1v
dmUoc3VtbWluZ0p1bmN0aW9uKTsKK30KKwordm9pZCBXZWJLaXRBdWRpb0NvbnRleHQ6Om1hcmtB
dWRpb05vZGVPdXRwdXREaXJ0eShBdWRpb05vZGVPdXRwdXQqIG91dHB1dCkKK3sKKyAgICBBU1NF
UlQoaXNHcmFwaE93bmVyKCkpOworICAgIG1fZGlydHlBdWRpb05vZGVPdXRwdXRzLmFkZChvdXRw
dXQpOworfQorCit2b2lkIFdlYktpdEF1ZGlvQ29udGV4dDo6aGFuZGxlRGlydHlBdWRpb1N1bW1p
bmdKdW5jdGlvbnMoKQoreworICAgIEFTU0VSVChpc0dyYXBoT3duZXIoKSk7CisKKyAgICBmb3Ig
KGF1dG8mIGp1bmN0aW9uIDogbV9kaXJ0eVN1bW1pbmdKdW5jdGlvbnMpCisgICAgICAgIGp1bmN0
aW9uLT51cGRhdGVSZW5kZXJpbmdTdGF0ZSgpOworCisgICAgbV9kaXJ0eVN1bW1pbmdKdW5jdGlv
bnMuY2xlYXIoKTsKK30KKwordm9pZCBXZWJLaXRBdWRpb0NvbnRleHQ6OmhhbmRsZURpcnR5QXVk
aW9Ob2RlT3V0cHV0cygpCit7CisgICAgQVNTRVJUKGlzR3JhcGhPd25lcigpKTsKKworICAgIGZv
ciAoYXV0byYgb3V0cHV0IDogbV9kaXJ0eUF1ZGlvTm9kZU91dHB1dHMpCisgICAgICAgIG91dHB1
dC0+dXBkYXRlUmVuZGVyaW5nU3RhdGUoKTsKKworICAgIG1fZGlydHlBdWRpb05vZGVPdXRwdXRz
LmNsZWFyKCk7Cit9CisKK3ZvaWQgV2ViS2l0QXVkaW9Db250ZXh0OjphZGRBdXRvbWF0aWNQdWxs
Tm9kZShBdWRpb05vZGUmIG5vZGUpCit7CisgICAgQVNTRVJUKGlzR3JhcGhPd25lcigpKTsKKwor
ICAgIGlmIChtX2F1dG9tYXRpY1B1bGxOb2Rlcy5hZGQoJm5vZGUpLmlzTmV3RW50cnkpCisgICAg
ICAgIG1fYXV0b21hdGljUHVsbE5vZGVzTmVlZFVwZGF0aW5nID0gdHJ1ZTsKK30KKwordm9pZCBX
ZWJLaXRBdWRpb0NvbnRleHQ6OnJlbW92ZUF1dG9tYXRpY1B1bGxOb2RlKEF1ZGlvTm9kZSYgbm9k
ZSkKK3sKKyAgICBBU1NFUlQoaXNHcmFwaE93bmVyKCkpOworCisgICAgaWYgKG1fYXV0b21hdGlj
UHVsbE5vZGVzLnJlbW92ZSgmbm9kZSkpCisgICAgICAgIG1fYXV0b21hdGljUHVsbE5vZGVzTmVl
ZFVwZGF0aW5nID0gdHJ1ZTsKK30KKwordm9pZCBXZWJLaXRBdWRpb0NvbnRleHQ6OnVwZGF0ZUF1
dG9tYXRpY1B1bGxOb2RlcygpCit7CisgICAgQVNTRVJUKGlzR3JhcGhPd25lcigpKTsKKworICAg
IGlmIChtX2F1dG9tYXRpY1B1bGxOb2Rlc05lZWRVcGRhdGluZykgeworICAgICAgICAvLyBDb3B5
IGZyb20gbV9hdXRvbWF0aWNQdWxsTm9kZXMgdG8gbV9yZW5kZXJpbmdBdXRvbWF0aWNQdWxsTm9k
ZXMuCisgICAgICAgIG1fcmVuZGVyaW5nQXV0b21hdGljUHVsbE5vZGVzLnJlc2l6ZShtX2F1dG9t
YXRpY1B1bGxOb2Rlcy5zaXplKCkpOworCisgICAgICAgIHVuc2lnbmVkIGkgPSAwOworICAgICAg
ICBmb3IgKGF1dG8mIG91dHB1dCA6IG1fYXV0b21hdGljUHVsbE5vZGVzKQorICAgICAgICAgICAg
bV9yZW5kZXJpbmdBdXRvbWF0aWNQdWxsTm9kZXNbaSsrXSA9IG91dHB1dDsKKworICAgICAgICBt
X2F1dG9tYXRpY1B1bGxOb2Rlc05lZWRVcGRhdGluZyA9IGZhbHNlOworICAgIH0KK30KKwordm9p
ZCBXZWJLaXRBdWRpb0NvbnRleHQ6OnByb2Nlc3NBdXRvbWF0aWNQdWxsTm9kZXMoc2l6ZV90IGZy
YW1lc1RvUHJvY2VzcykKK3sKKyAgICBBU1NFUlQoaXNBdWRpb1RocmVhZCgpKTsKKworICAgIGZv
ciAoYXV0byYgbm9kZSA6IG1fcmVuZGVyaW5nQXV0b21hdGljUHVsbE5vZGVzKQorICAgICAgICBu
b2RlLT5wcm9jZXNzSWZOZWNlc3NhcnkoZnJhbWVzVG9Qcm9jZXNzKTsKK30KKwordm9pZCBXZWJL
aXRBdWRpb0NvbnRleHQ6Om5vZGVXaWxsQmVnaW5QbGF5YmFjaygpCit7CisgICAgLy8gQ2FsbGVk
IGJ5IHNjaGVkdWxlZCBBdWRpb05vZGVzIHdoZW4gY2xpZW50cyBzY2hlZHVsZSB0aGVpciBzdGFy
dCB0aW1lcy4KKyAgICAvLyBQcmlvciB0byB0aGUgaW50cm9kdWN0aW9uIG9mIHN1c3BlbmQoKSwg
cmVzdW1lKCksIGFuZCBzdG9wKCksIHN0YXJ0aW5nCisgICAgLy8gYSBzY2hlZHVsZWQgQXVkaW9O
b2RlIHdvdWxkIHJlbW92ZSB0aGUgdXNlci1nZXN0dXJlIHJlc3RyaWN0aW9uLCBpZiBwcmVzZW50
LAorICAgIC8vIGFuZCB3b3VsZCB0aHVzIHVubXV0ZSB0aGUgY29udGV4dC4gTm93IHRoYXQgQXVk
aW9Db250ZXh0IHN0YXlzIGluIHRoZQorICAgIC8vICJzdXNwZW5kZWQiIHN0YXRlIGlmIGEgdXNl
ci1nZXN0dXJlIHJlc3RyaWN0aW9uIGlzIHByZXNlbnQsIHN0YXJ0aW5nIGEKKyAgICAvLyBzY2hl
ZHVsZSBBdWRpb05vZGUgc2hvdWxkIHNldCB0aGUgc3RhdGUgdG8gInJ1bm5pbmciLCBidXQgb25s
eSBpZiB0aGUKKyAgICAvLyB1c2VyLWdlc3R1cmUgcmVzdHJpY3Rpb24gaXMgc2V0LgorICAgIGlm
ICh1c2VyR2VzdHVyZVJlcXVpcmVkRm9yQXVkaW9TdGFydCgpKQorICAgICAgICBzdGFydFJlbmRl
cmluZygpOworfQorCitzdGF0aWMgYm9vbCBzaG91bGREb2N1bWVudEFsbG93V2ViQXVkaW9Ub0F1
dG9QbGF5KGNvbnN0IERvY3VtZW50JiBkb2N1bWVudCkKK3sKKyAgICBpZiAoZG9jdW1lbnQucHJv
Y2Vzc2luZ1VzZXJHZXN0dXJlRm9yTWVkaWEoKSB8fCBkb2N1bWVudC5pc0NhcHR1cmluZygpKQor
ICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICByZXR1cm4gZG9jdW1lbnQucXVpcmtzKCkuc2hvdWxk
QXV0b3BsYXlXZWJBdWRpb0ZvckFyYml0cmFyeVVzZXJHZXN0dXJlKCkgJiYgZG9jdW1lbnQudG9w
RG9jdW1lbnQoKS5oYXNIYWRVc2VySW50ZXJhY3Rpb24oKTsKK30KKworYm9vbCBXZWJLaXRBdWRp
b0NvbnRleHQ6OndpbGxCZWdpblBsYXliYWNrKCkKK3sKKyAgICBhdXRvKiBkb2N1bWVudCA9IHRo
aXMtPmRvY3VtZW50KCk7CisgICAgaWYgKCFkb2N1bWVudCkKKyAgICAgICAgcmV0dXJuIGZhbHNl
OworCisgICAgaWYgKHVzZXJHZXN0dXJlUmVxdWlyZWRGb3JBdWRpb1N0YXJ0KCkpIHsKKyAgICAg
ICAgaWYgKCFzaG91bGREb2N1bWVudEFsbG93V2ViQXVkaW9Ub0F1dG9QbGF5KCpkb2N1bWVudCkp
IHsKKyAgICAgICAgICAgIEFMV0FZU19MT0coTE9HSURFTlRJRklFUiwgInJldHVybmluZyBmYWxz
ZSwgbm90IHByb2Nlc3NpbmcgdXNlciBnZXN0dXJlIG9yIGNhcHR1cmluZyIpOworICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisgICAgICAgIHJlbW92ZUJlaGF2aW9yUmVzdHJp
Y3Rpb24oV2ViS2l0QXVkaW9Db250ZXh0OjpSZXF1aXJlVXNlckdlc3R1cmVGb3JBdWRpb1N0YXJ0
UmVzdHJpY3Rpb24pOworICAgIH0KKworICAgIGlmIChwYWdlQ29uc2VudFJlcXVpcmVkRm9yQXVk
aW9TdGFydCgpKSB7CisgICAgICAgIGF1dG8qIHBhZ2UgPSBkb2N1bWVudC0+cGFnZSgpOworICAg
ICAgICBpZiAocGFnZSAmJiAhcGFnZS0+Y2FuU3RhcnRNZWRpYSgpKSB7CisgICAgICAgICAgICBk
b2N1bWVudC0+YWRkTWVkaWFDYW5TdGFydExpc3RlbmVyKCp0aGlzKTsKKyAgICAgICAgICAgIEFM
V0FZU19MT0coTE9HSURFTlRJRklFUiwgInJldHVybmluZyBmYWxzZSwgcGFnZSBkb2Vzbid0IGFs
bG93IG1lZGlhIHRvIHN0YXJ0Iik7CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAg
IH0KKyAgICAgICAgcmVtb3ZlQmVoYXZpb3JSZXN0cmljdGlvbihXZWJLaXRBdWRpb0NvbnRleHQ6
OlJlcXVpcmVQYWdlQ29uc2VudEZvckF1ZGlvU3RhcnRSZXN0cmljdGlvbik7CisgICAgfQorCisg
ICAgYXV0byB3aWxsQmVnaW4gPSBtX21lZGlhU2Vzc2lvbi0+Y2xpZW50V2lsbEJlZ2luUGxheWJh
Y2soKTsKKyAgICBBTFdBWVNfTE9HKExPR0lERU5USUZJRVIsICJyZXR1cm5pbmcgIiwgd2lsbEJl
Z2luKTsKKworICAgIHJldHVybiB3aWxsQmVnaW47Cit9CisKK2Jvb2wgV2ViS2l0QXVkaW9Db250
ZXh0Ojp3aWxsUGF1c2VQbGF5YmFjaygpCit7CisgICAgYXV0byogZG9jdW1lbnQgPSB0aGlzLT5k
b2N1bWVudCgpOworICAgIGlmICghZG9jdW1lbnQpCisgICAgICAgIHJldHVybiBmYWxzZTsKKwor
ICAgIGlmICh1c2VyR2VzdHVyZVJlcXVpcmVkRm9yQXVkaW9TdGFydCgpKSB7CisgICAgICAgIGlm
ICghZG9jdW1lbnQtPnByb2Nlc3NpbmdVc2VyR2VzdHVyZUZvck1lZGlhKCkpCisgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgICAgIHJlbW92ZUJlaGF2aW9yUmVzdHJpY3Rpb24oV2ViS2l0
QXVkaW9Db250ZXh0OjpSZXF1aXJlVXNlckdlc3R1cmVGb3JBdWRpb1N0YXJ0UmVzdHJpY3Rpb24p
OworICAgIH0KKworICAgIGlmIChwYWdlQ29uc2VudFJlcXVpcmVkRm9yQXVkaW9TdGFydCgpKSB7
CisgICAgICAgIGF1dG8qIHBhZ2UgPSBkb2N1bWVudC0+cGFnZSgpOworICAgICAgICBpZiAocGFn
ZSAmJiAhcGFnZS0+Y2FuU3RhcnRNZWRpYSgpKSB7CisgICAgICAgICAgICBkb2N1bWVudC0+YWRk
TWVkaWFDYW5TdGFydExpc3RlbmVyKCp0aGlzKTsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
KyAgICAgICAgfQorICAgICAgICByZW1vdmVCZWhhdmlvclJlc3RyaWN0aW9uKFdlYktpdEF1ZGlv
Q29udGV4dDo6UmVxdWlyZVBhZ2VDb25zZW50Rm9yQXVkaW9TdGFydFJlc3RyaWN0aW9uKTsKKyAg
ICB9CisKKyAgICByZXR1cm4gbV9tZWRpYVNlc3Npb24tPmNsaWVudFdpbGxQYXVzZVBsYXliYWNr
KCk7Cit9CisKK3ZvaWQgV2ViS2l0QXVkaW9Db250ZXh0OjpzdGFydFJlbmRlcmluZygpCit7Cisg
ICAgQUxXQVlTX0xPRyhMT0dJREVOVElGSUVSKTsKKyAgICBpZiAobV9pc1N0b3BTY2hlZHVsZWQg
fHwgIXdpbGxCZWdpblBsYXliYWNrKCkpCisgICAgICAgIHJldHVybjsKKworICAgIG1ha2VQZW5k
aW5nQWN0aXZpdHkoKTsKKworICAgIGRlc3RpbmF0aW9uKCktPnN0YXJ0UmVuZGVyaW5nKCk7Cisg
ICAgc2V0U3RhdGUoU3RhdGU6OlJ1bm5pbmcpOworfQorCit2b2lkIFdlYktpdEF1ZGlvQ29udGV4
dDo6bWVkaWFDYW5TdGFydChEb2N1bWVudCYgZG9jdW1lbnQpCit7CisgICAgQVNTRVJUX1VOVVNF
RChkb2N1bWVudCwgJmRvY3VtZW50ID09IHRoaXMtPmRvY3VtZW50KCkpOworICAgIHJlbW92ZUJl
aGF2aW9yUmVzdHJpY3Rpb24oV2ViS2l0QXVkaW9Db250ZXh0OjpSZXF1aXJlUGFnZUNvbnNlbnRG
b3JBdWRpb1N0YXJ0UmVzdHJpY3Rpb24pOworICAgIG1heVJlc3VtZVBsYXliYWNrKHRydWUpOwor
fQorCitNZWRpYVByb2R1Y2VyOjpNZWRpYVN0YXRlRmxhZ3MgV2ViS2l0QXVkaW9Db250ZXh0Ojpt
ZWRpYVN0YXRlKCkgY29uc3QKK3sKKyAgICBpZiAoIW1faXNTdG9wU2NoZWR1bGVkICYmIG1fZGVz
dGluYXRpb25Ob2RlICYmIG1fZGVzdGluYXRpb25Ob2RlLT5pc1BsYXlpbmdBdWRpbygpKQorICAg
ICAgICByZXR1cm4gTWVkaWFQcm9kdWNlcjo6SXNQbGF5aW5nQXVkaW87CisKKyAgICByZXR1cm4g
TWVkaWFQcm9kdWNlcjo6SXNOb3RQbGF5aW5nOworfQorCit2b2lkIFdlYktpdEF1ZGlvQ29udGV4
dDo6cGFnZU11dGVkU3RhdGVEaWRDaGFuZ2UoKQoreworICAgIGlmIChtX2Rlc3RpbmF0aW9uTm9k
ZSAmJiBkb2N1bWVudCgpICYmIGRvY3VtZW50KCktPnBhZ2UoKSkKKyAgICAgICAgbV9kZXN0aW5h
dGlvbk5vZGUtPnNldE11dGVkKGRvY3VtZW50KCktPnBhZ2UoKS0+aXNBdWRpb011dGVkKCkpOwor
fQorCit2b2lkIFdlYktpdEF1ZGlvQ29udGV4dDo6aXNQbGF5aW5nQXVkaW9EaWRDaGFuZ2UoKQor
eworICAgIC8vIE1ha2Ugc3VyZSB0byBjYWxsIERvY3VtZW50Ojp1cGRhdGVJc1BsYXlpbmdNZWRp
YSgpIG9uIHRoZSBtYWluIHRocmVhZCwgc2luY2UKKyAgICAvLyB3ZSBjb3VsZCBiZSBvbiB0aGUg
YXVkaW8gSS9PIHRocmVhZCBoZXJlIGFuZCB0aGUgY2FsbCBpbnRvIFdlYkNvcmUgY291bGQgYmxv
Y2suCisgICAgY2FsbE9uTWFpblRocmVhZChbcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMp
XSB7CisgICAgICAgIGlmIChwcm90ZWN0ZWRUaGlzLT5kb2N1bWVudCgpKQorICAgICAgICAgICAg
cHJvdGVjdGVkVGhpcy0+ZG9jdW1lbnQoKS0+dXBkYXRlSXNQbGF5aW5nTWVkaWEoKTsKKyAgICB9
KTsKK30KKwordm9pZCBXZWJLaXRBdWRpb0NvbnRleHQ6OmZpbmlzaGVkUmVuZGVyaW5nKGJvb2wg
ZGlkUmVuZGVyaW5nKQoreworICAgIEFTU0VSVChpc09mZmxpbmVDb250ZXh0KCkpOworICAgIEFT
U0VSVChpc01haW5UaHJlYWQoKSk7CisgICAgaWYgKCFpc01haW5UaHJlYWQoKSkKKyAgICAgICAg
cmV0dXJuOworCisgICAgYXV0byBjbGVhclBlbmRpbmdBY3Rpdml0eUlmRXhpdEVhcmx5ID0gV1RG
OjptYWtlU2NvcGVFeGl0KFt0aGlzXSB7CisgICAgICAgIGNsZWFyUGVuZGluZ0FjdGl2aXR5KCk7
CisgICAgfSk7CisKKworICAgIEFMV0FZU19MT0coTE9HSURFTlRJRklFUik7CisKKyAgICBpZiAo
IWRpZFJlbmRlcmluZykKKyAgICAgICAgcmV0dXJuOworCisgICAgQXVkaW9CdWZmZXIqIHJlbmRl
cmVkQnVmZmVyID0gbV9yZW5kZXJUYXJnZXQuZ2V0KCk7CisgICAgc2V0U3RhdGUoU3RhdGU6OkNs
b3NlZCk7CisKKyAgICBBU1NFUlQocmVuZGVyZWRCdWZmZXIpOworICAgIGlmICghcmVuZGVyZWRC
dWZmZXIpCisgICAgICAgIHJldHVybjsKKworICAgIC8vIEF2b2lkIGZpcmluZyB0aGUgZXZlbnQg
aWYgdGhlIGRvY3VtZW50IGhhcyBhbHJlYWR5IGdvbmUgYXdheS4KKyAgICBpZiAobV9pc1N0b3BT
Y2hlZHVsZWQpCisgICAgICAgIHJldHVybjsKKworICAgIGNsZWFyUGVuZGluZ0FjdGl2aXR5SWZF
eGl0RWFybHkucmVsZWFzZSgpOworICAgIG1fZXZlbnRRdWV1ZS0+ZW5xdWV1ZUV2ZW50KE9mZmxp
bmVBdWRpb0NvbXBsZXRpb25FdmVudDo6Y3JlYXRlKHJlbmRlcmVkQnVmZmVyKSk7Cit9CisKK3Zv
aWQgV2ViS2l0QXVkaW9Db250ZXh0OjpkaXNwYXRjaEV2ZW50KEV2ZW50JiBldmVudCkKK3sKKyAg
ICBFdmVudFRhcmdldDo6ZGlzcGF0Y2hFdmVudChldmVudCk7CisgICAgaWYgKGV2ZW50LmV2ZW50
SW50ZXJmYWNlKCkgPT0gT2ZmbGluZUF1ZGlvQ29tcGxldGlvbkV2ZW50SW50ZXJmYWNlVHlwZSkK
KyAgICAgICAgY2xlYXJQZW5kaW5nQWN0aXZpdHkoKTsKK30KKwordm9pZCBXZWJLaXRBdWRpb0Nv
bnRleHQ6OmluY3JlbWVudEFjdGl2ZVNvdXJjZUNvdW50KCkKK3sKKyAgICArK21fYWN0aXZlU291
cmNlQ291bnQ7Cit9CisKK3ZvaWQgV2ViS2l0QXVkaW9Db250ZXh0OjpkZWNyZW1lbnRBY3RpdmVT
b3VyY2VDb3VudCgpCit7CisgICAgLS1tX2FjdGl2ZVNvdXJjZUNvdW50OworfQorCit2b2lkIFdl
YktpdEF1ZGlvQ29udGV4dDo6c3VzcGVuZFJlbmRlcmluZyhET01Qcm9taXNlRGVmZXJyZWQ8dm9p
ZD4mJiBwcm9taXNlKQoreworICAgIGlmIChpc09mZmxpbmVDb250ZXh0KCkgfHwgbV9pc1N0b3BT
Y2hlZHVsZWQpIHsKKyAgICAgICAgcHJvbWlzZS5yZWplY3QoSW52YWxpZFN0YXRlRXJyb3IpOwor
ICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgaWYgKG1fc3RhdGUgPT0gU3RhdGU6OlN1c3Bl
bmRlZCkgeworICAgICAgICBwcm9taXNlLnJlc29sdmUoKTsKKyAgICAgICAgcmV0dXJuOworICAg
IH0KKworICAgIGlmIChtX3N0YXRlID09IFN0YXRlOjpDbG9zZWQgfHwgbV9zdGF0ZSA9PSBTdGF0
ZTo6SW50ZXJydXB0ZWQgfHwgIW1fZGVzdGluYXRpb25Ob2RlKSB7CisgICAgICAgIHByb21pc2Uu
cmVqZWN0KCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBhZGRSZWFjdGlvbihTdGF0
ZTo6U3VzcGVuZGVkLCBXVEZNb3ZlKHByb21pc2UpKTsKKworICAgIGlmICghd2lsbFBhdXNlUGxh
eWJhY2soKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgbGF6eUluaXRpYWxpemUoKTsKKworICAg
IG1fZGVzdGluYXRpb25Ob2RlLT5zdXNwZW5kKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJl
ZigqdGhpcyldIHsKKyAgICAgICAgc2V0U3RhdGUoU3RhdGU6OlN1c3BlbmRlZCk7CisgICAgfSk7
Cit9CisKK3ZvaWQgV2ViS2l0QXVkaW9Db250ZXh0OjpyZXN1bWVSZW5kZXJpbmcoRE9NUHJvbWlz
ZURlZmVycmVkPHZvaWQ+JiYgcHJvbWlzZSkKK3sKKyAgICBpZiAoaXNPZmZsaW5lQ29udGV4dCgp
IHx8IG1faXNTdG9wU2NoZWR1bGVkKSB7CisgICAgICAgIHByb21pc2UucmVqZWN0KEludmFsaWRT
dGF0ZUVycm9yKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlmIChtX3N0YXRlID09
IFN0YXRlOjpSdW5uaW5nKSB7CisgICAgICAgIHByb21pc2UucmVzb2x2ZSgpOworICAgICAgICBy
ZXR1cm47CisgICAgfQorCisgICAgaWYgKG1fc3RhdGUgPT0gU3RhdGU6OkNsb3NlZCB8fCAhbV9k
ZXN0aW5hdGlvbk5vZGUpIHsKKyAgICAgICAgcHJvbWlzZS5yZWplY3QoKTsKKyAgICAgICAgcmV0
dXJuOworICAgIH0KKworICAgIGFkZFJlYWN0aW9uKFN0YXRlOjpSdW5uaW5nLCBXVEZNb3ZlKHBy
b21pc2UpKTsKKworICAgIGlmICghd2lsbEJlZ2luUGxheWJhY2soKSkKKyAgICAgICAgcmV0dXJu
OworCisgICAgbGF6eUluaXRpYWxpemUoKTsKKworICAgIG1fZGVzdGluYXRpb25Ob2RlLT5yZXN1
bWUoW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKV0geworICAgICAgICBzZXRT
dGF0ZShTdGF0ZTo6UnVubmluZyk7CisgICAgfSk7Cit9CisKK3ZvaWQgV2ViS2l0QXVkaW9Db250
ZXh0OjpjbG9zZShET01Qcm9taXNlRGVmZXJyZWQ8dm9pZD4mJiBwcm9taXNlKQoreworICAgIGlm
IChpc09mZmxpbmVDb250ZXh0KCkgfHwgbV9pc1N0b3BTY2hlZHVsZWQpIHsKKyAgICAgICAgcHJv
bWlzZS5yZWplY3QoSW52YWxpZFN0YXRlRXJyb3IpOworICAgICAgICByZXR1cm47CisgICAgfQor
CisgICAgaWYgKG1fc3RhdGUgPT0gU3RhdGU6OkNsb3NlZCB8fCAhbV9kZXN0aW5hdGlvbk5vZGUp
IHsKKyAgICAgICAgcHJvbWlzZS5yZXNvbHZlKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisK
KyAgICBhZGRSZWFjdGlvbihTdGF0ZTo6Q2xvc2VkLCBXVEZNb3ZlKHByb21pc2UpKTsKKworICAg
IGxhenlJbml0aWFsaXplKCk7CisKKyAgICBtX2Rlc3RpbmF0aW9uTm9kZS0+Y2xvc2UoW3RoaXMs
IHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKV0geworICAgICAgICBzZXRTdGF0ZShTdGF0
ZTo6Q2xvc2VkKTsKKyAgICAgICAgdW5pbml0aWFsaXplKCk7CisgICAgfSk7Cit9CisKKwordm9p
ZCBXZWJLaXRBdWRpb0NvbnRleHQ6OnN1c3BlbmRQbGF5YmFjaygpCit7CisgICAgaWYgKCFtX2Rl
c3RpbmF0aW9uTm9kZSB8fCBtX3N0YXRlID09IFN0YXRlOjpDbG9zZWQpCisgICAgICAgIHJldHVy
bjsKKworICAgIGlmIChtX3N0YXRlID09IFN0YXRlOjpTdXNwZW5kZWQpIHsKKyAgICAgICAgaWYg
KG1fbWVkaWFTZXNzaW9uLT5zdGF0ZSgpID09IFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpJbnRlcnJ1
cHRlZCkKKyAgICAgICAgICAgIHNldFN0YXRlKFN0YXRlOjpJbnRlcnJ1cHRlZCk7CisgICAgICAg
IHJldHVybjsKKyAgICB9CisKKyAgICBsYXp5SW5pdGlhbGl6ZSgpOworCisgICAgbV9kZXN0aW5h
dGlvbk5vZGUtPnN1c3BlbmQoW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKV0g
eworICAgICAgICBib29sIGludGVycnVwdGVkID0gbV9tZWRpYVNlc3Npb24tPnN0YXRlKCkgPT0g
UGxhdGZvcm1NZWRpYVNlc3Npb246OkludGVycnVwdGVkOworICAgICAgICBzZXRTdGF0ZShpbnRl
cnJ1cHRlZCA/IFN0YXRlOjpJbnRlcnJ1cHRlZCA6IFN0YXRlOjpTdXNwZW5kZWQpOworICAgIH0p
OworfQorCit2b2lkIFdlYktpdEF1ZGlvQ29udGV4dDo6bWF5UmVzdW1lUGxheWJhY2soYm9vbCBz
aG91bGRSZXN1bWUpCit7CisgICAgaWYgKCFtX2Rlc3RpbmF0aW9uTm9kZSB8fCBtX3N0YXRlID09
IFN0YXRlOjpDbG9zZWQgfHwgbV9zdGF0ZSA9PSBTdGF0ZTo6UnVubmluZykKKyAgICAgICAgcmV0
dXJuOworCisgICAgaWYgKCFzaG91bGRSZXN1bWUpIHsKKyAgICAgICAgc2V0U3RhdGUoU3RhdGU6
OlN1c3BlbmRlZCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpZiAoIXdpbGxCZWdp
blBsYXliYWNrKCkpCisgICAgICAgIHJldHVybjsKKworICAgIGxhenlJbml0aWFsaXplKCk7CisK
KyAgICBtX2Rlc3RpbmF0aW9uTm9kZS0+cmVzdW1lKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFr
ZVJlZigqdGhpcyldIHsKKyAgICAgICAgc2V0U3RhdGUoU3RhdGU6OlJ1bm5pbmcpOworICAgIH0p
OworfQorCit2b2lkIFdlYktpdEF1ZGlvQ29udGV4dDo6cG9zdFRhc2soV1RGOjpGdW5jdGlvbjx2
b2lkKCk+JiYgdGFzaykKK3sKKyAgICBpZiAobV9pc1N0b3BTY2hlZHVsZWQpCisgICAgICAgIHJl
dHVybjsKKworICAgIG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+cG9zdFRhc2soV1RGTW92ZSh0
YXNrKSk7Cit9CisKK2NvbnN0IFNlY3VyaXR5T3JpZ2luKiBXZWJLaXRBdWRpb0NvbnRleHQ6Om9y
aWdpbigpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dCA/IG1f
c2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+c2VjdXJpdHlPcmlnaW4oKSA6IG51bGxwdHI7Cit9CisK
K3ZvaWQgV2ViS2l0QXVkaW9Db250ZXh0OjphZGRDb25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNl
IHNvdXJjZSwgTWVzc2FnZUxldmVsIGxldmVsLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCit7Cisg
ICAgaWYgKG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dCkKKyAgICAgICAgbV9zY3JpcHRFeGVjdXRp
b25Db250ZXh0LT5hZGRDb25zb2xlTWVzc2FnZShzb3VyY2UsIGxldmVsLCBtZXNzYWdlKTsKK30K
Kwordm9pZCBXZWJLaXRBdWRpb0NvbnRleHQ6OmNsZWFyUGVuZGluZ0FjdGl2aXR5KCkKK3sKKyAg
ICBpZiAoIW1fcGVuZGluZ0FjdGl2aXR5KQorICAgICAgICByZXR1cm47CisgICAgbV9wZW5kaW5n
QWN0aXZpdHkgPSBudWxscHRyOworICAgIC8vIEZJWE1FOiBSZW1vdmUgdGhpcyBzcGVjaWZpYyBk
ZXJlZigpIGFuZCByZWYoKSBjYWxsIGluIG1ha2VQZW5kaW5nQWN0aXZpdHkoKS4KKyAgICBkZXJl
ZigpOworfQorCit2b2lkIFdlYktpdEF1ZGlvQ29udGV4dDo6bWFrZVBlbmRpbmdBY3Rpdml0eSgp
Cit7CisgICAgaWYgKG1fcGVuZGluZ0FjdGl2aXR5KQorICAgICAgICByZXR1cm47CisgICAgbV9w
ZW5kaW5nQWN0aXZpdHkgPSBBY3RpdmVET01PYmplY3Q6Om1ha2VQZW5kaW5nQWN0aXZpdHkoKnRo
aXMpOworICAgIHJlZigpOworfQorCisjaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECitXVEZMb2dD
aGFubmVsJiBXZWJLaXRBdWRpb0NvbnRleHQ6OmxvZ0NoYW5uZWwoKSBjb25zdAoreworICAgIHJl
dHVybiBMb2dNZWRpYTsKK30KKyNlbmRpZgorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNl
bmRpZiAvLyBFTkFCTEUoV0VCX0FVRElPKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJhdWRpby9XZWJLaXRBdWRpb0NvbnRleHQuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViYXVkaW8vV2ViS2l0QXVkaW9Db250ZXh0LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAuLjdlYjUzNzI1ZTU0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJhdWRpby9XZWJLaXRBdWRpb0NvbnRleHQuaApAQCAtMCwwICsxLDQy
MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE2LTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04KKyAqIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUworICogU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJBY3RpdmVET01P
YmplY3QuaCIKKyNpbmNsdWRlICJBc3luY0F1ZGlvRGVjb2Rlci5oIgorI2luY2x1ZGUgIkF1ZGlv
QnVzLmgiCisjaW5jbHVkZSAiQXVkaW9Db250ZXh0LmgiCisjaW5jbHVkZSAiQXVkaW9Db250ZXh0
U3RhdGUuaCIKKyNpbmNsdWRlICJBdWRpb0Rlc3RpbmF0aW9uTm9kZS5oIgorI2luY2x1ZGUgIkV2
ZW50VGFyZ2V0LmgiCisjaW5jbHVkZSAiTWVkaWFDYW5TdGFydExpc3RlbmVyLmgiCisjaW5jbHVk
ZSAiTWVkaWFQcm9kdWNlci5oIgorI2luY2x1ZGUgIlBsYXRmb3JtTWVkaWFTZXNzaW9uLmgiCisj
aW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgorI2luY2x1ZGUgIlZpc2liaWxpdHlD
aGFuZ2VDbGllbnQuaCIKKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9Db25zb2xlVHlwZXMuaD4K
KyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9GbG9hdDMyQXJyYXkuaD4KKyNpbmNsdWRlIDxhdG9t
aWM+CisjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KKyNpbmNsdWRlIDx3dGYvTG9nZ2VySGVscGVy
Lmg+CisjaW5jbHVkZSA8d3RmL01haW5UaHJlYWQuaD4KKyNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+
CisjaW5jbHVkZSA8d3RmL1RocmVhZFNhZmVSZWZDb3VudGVkLmg+CisjaW5jbHVkZSA8d3RmL1Ro
cmVhZGluZy5oPgorI2luY2x1ZGUgPHd0Zi9VbmlxdWVSZWYuaD4KKyNpbmNsdWRlIDx3dGYvVmVj
dG9yLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvQXRvbVN0cmluZ0hhc2guaD4KKworbmFtZXNwYWNl
IFdlYkNvcmUgeworCitjbGFzcyBBbmFseXNlck5vZGU7CitjbGFzcyBBdWRpb0J1ZmZlcjsKK2Ns
YXNzIEF1ZGlvQnVmZmVyQ2FsbGJhY2s7CitjbGFzcyBBdWRpb0J1ZmZlclNvdXJjZU5vZGU7Citj
bGFzcyBBdWRpb0xpc3RlbmVyOworY2xhc3MgQXVkaW9TdW1taW5nSnVuY3Rpb247CitjbGFzcyBC
aXF1YWRGaWx0ZXJOb2RlOworY2xhc3MgQ2hhbm5lbE1lcmdlck5vZGU7CitjbGFzcyBDaGFubmVs
U3BsaXR0ZXJOb2RlOworY2xhc3MgQ29udm9sdmVyTm9kZTsKK2NsYXNzIERlbGF5Tm9kZTsKK2Ns
YXNzIERvY3VtZW50OworY2xhc3MgRHluYW1pY3NDb21wcmVzc29yTm9kZTsKK2NsYXNzIEdhaW5O
b2RlOworY2xhc3MgSFRNTE1lZGlhRWxlbWVudDsKK2NsYXNzIE1haW5UaHJlYWRHZW5lcmljRXZl
bnRRdWV1ZTsKK2NsYXNzIE1lZGlhRWxlbWVudEF1ZGlvU291cmNlTm9kZTsKK2NsYXNzIE1lZGlh
U3RyZWFtOworY2xhc3MgTWVkaWFTdHJlYW1BdWRpb0Rlc3RpbmF0aW9uTm9kZTsKK2NsYXNzIE1l
ZGlhU3RyZWFtQXVkaW9Tb3VyY2VOb2RlOworY2xhc3MgT3NjaWxsYXRvck5vZGU7CitjbGFzcyBQ
ZXJpb2RpY1dhdmU7CitjbGFzcyBTY3JpcHRQcm9jZXNzb3JOb2RlOworY2xhc3MgU2VjdXJpdHlP
cmlnaW47CitjbGFzcyBXYXZlU2hhcGVyTm9kZTsKK2NsYXNzIFdlYktpdEF1ZGlvUGFubmVyTm9k
ZTsKKwordGVtcGxhdGU8dHlwZW5hbWUgSURMVHlwZT4gY2xhc3MgRE9NUHJvbWlzZURlZmVycmVk
OworCisvLyBBdWRpb0NvbnRleHQgaXMgdGhlIGNvcm5lcnN0b25lIG9mIHRoZSB3ZWIgYXVkaW8g
QVBJIGFuZCBhbGwgQXVkaW9Ob2RlcyBhcmUgY3JlYXRlZCBmcm9tIGl0LgorLy8gRm9yIHRocmVh
ZCBzYWZldHkgYmV0d2VlbiB0aGUgYXVkaW8gdGhyZWFkIGFuZCB0aGUgbWFpbiB0aHJlYWQsIGl0
IGhhcyBhIHJlbmRlcmluZyBncmFwaCBsb2NraW5nIG1lY2hhbmlzbS4KKworY2xhc3MgV2ViS2l0
QXVkaW9Db250ZXh0CisgICAgOiBwdWJsaWMgQXVkaW9Db250ZXh0QmFzZQorICAgICwgcHJpdmF0
ZSBQbGF0Zm9ybU1lZGlhU2Vzc2lvbkNsaWVudAorICAgICwgcHJpdmF0ZSBWaXNpYmlsaXR5Q2hh
bmdlQ2xpZW50Cit7CitwdWJsaWM6CisgICAgLy8gQ3JlYXRlIGFuIFdlYktpdEF1ZGlvQ29udGV4
dCBmb3IgcmVuZGVyaW5nIHRvIHRoZSBhdWRpbyBoYXJkd2FyZS4KKyAgICBzdGF0aWMgRXhjZXB0
aW9uT3I8UmVmPFdlYktpdEF1ZGlvQ29udGV4dD4+IGNyZWF0ZShEb2N1bWVudCYpOworCisgICAg
dmlydHVhbCB+V2ViS2l0QXVkaW9Db250ZXh0KCk7CisKKyAgICBib29sIGlzSW5pdGlhbGl6ZWQo
KSBjb25zdCBmaW5hbDsKKworICAgIGJvb2wgaXNPZmZsaW5lQ29udGV4dCgpIGNvbnN0IGZpbmFs
IHsgcmV0dXJuIG1faXNPZmZsaW5lQ29udGV4dDsgfQorCisgICAgRG9jdW1lbnRJZGVudGlmaWVy
IGhvc3RpbmdEb2N1bWVudElkZW50aWZpZXIoKSBjb25zdCBmaW5hbDsKKworICAgIEF1ZGlvRGVz
dGluYXRpb25Ob2RlKiBkZXN0aW5hdGlvbigpIHsgcmV0dXJuIG1fZGVzdGluYXRpb25Ob2RlLmdl
dCgpOyB9CisgICAgc2l6ZV90IGN1cnJlbnRTYW1wbGVGcmFtZSgpIGNvbnN0IGZpbmFsIHsgcmV0
dXJuIG1fZGVzdGluYXRpb25Ob2RlID8gbV9kZXN0aW5hdGlvbk5vZGUtPmN1cnJlbnRTYW1wbGVG
cmFtZSgpIDogMDsgfQorICAgIGRvdWJsZSBjdXJyZW50VGltZSgpIGNvbnN0IGZpbmFsIHsgcmV0
dXJuIG1fZGVzdGluYXRpb25Ob2RlID8gbV9kZXN0aW5hdGlvbk5vZGUtPmN1cnJlbnRUaW1lKCkg
OiAwLjsgfQorICAgIGZsb2F0IHNhbXBsZVJhdGUoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2Rl
c3RpbmF0aW9uTm9kZSA/IG1fZGVzdGluYXRpb25Ob2RlLT5zYW1wbGVSYXRlKCkgOiAwLmY7IH0K
KyAgICB1bnNpZ25lZCBsb25nIGFjdGl2ZVNvdXJjZUNvdW50KCkgY29uc3QgeyByZXR1cm4gc3Rh
dGljX2Nhc3Q8dW5zaWduZWQgbG9uZz4obV9hY3RpdmVTb3VyY2VDb3VudCk7IH0KKworICAgIHZv
aWQgaW5jcmVtZW50QWN0aXZlU291cmNlQ291bnQoKSBmaW5hbDsKKyAgICB2b2lkIGRlY3JlbWVu
dEFjdGl2ZVNvdXJjZUNvdW50KCkgZmluYWw7CisKKyAgICBFeGNlcHRpb25PcjxSZWY8QXVkaW9C
dWZmZXI+PiBjcmVhdGVCdWZmZXIodW5zaWduZWQgbnVtYmVyT2ZDaGFubmVscywgc2l6ZV90IG51
bWJlck9mRnJhbWVzLCBmbG9hdCBzYW1wbGVSYXRlKTsKKyAgICBFeGNlcHRpb25PcjxSZWY8QXVk
aW9CdWZmZXI+PiBjcmVhdGVCdWZmZXIoQXJyYXlCdWZmZXImLCBib29sIG1peFRvTW9ubyk7CisK
KyAgICAvLyBBc3luY2hyb25vdXMgYXVkaW8gZmlsZSBkYXRhIGRlY29kaW5nLgorICAgIHZvaWQg
ZGVjb2RlQXVkaW9EYXRhKFJlZjxBcnJheUJ1ZmZlcj4mJiwgUmVmUHRyPEF1ZGlvQnVmZmVyQ2Fs
bGJhY2s+JiYsIFJlZlB0cjxBdWRpb0J1ZmZlckNhbGxiYWNrPiYmKTsKKworICAgIEF1ZGlvTGlz
dGVuZXIqIGxpc3RlbmVyKCkgeyByZXR1cm4gbV9saXN0ZW5lci5nZXQoKTsgfQorCisgICAgdm9p
ZCBzdXNwZW5kUmVuZGVyaW5nKERPTVByb21pc2VEZWZlcnJlZDx2b2lkPiYmKTsKKyAgICB2b2lk
IHJlc3VtZVJlbmRlcmluZyhET01Qcm9taXNlRGVmZXJyZWQ8dm9pZD4mJik7CisgICAgdm9pZCBj
bG9zZShET01Qcm9taXNlRGVmZXJyZWQ8dm9pZD4mJik7CisKKyAgICB1c2luZyBTdGF0ZSA9IEF1
ZGlvQ29udGV4dFN0YXRlOworICAgIFN0YXRlIHN0YXRlKCkgY29uc3Q7CisgICAgYm9vbCBpc0Ns
b3NlZCgpIGNvbnN0IHsgcmV0dXJuIG1fc3RhdGUgPT0gU3RhdGU6OkNsb3NlZDsgfQorCisgICAg
Ym9vbCB3b3VsZFRhaW50T3JpZ2luKGNvbnN0IFVSTCYpIGNvbnN0OworCisgICAgLy8gVGhlIEF1
ZGlvTm9kZSBjcmVhdGUgbWV0aG9kcyBhcmUgY2FsbGVkIG9uIHRoZSBtYWluIHRocmVhZCAoZnJv
bSBKYXZhU2NyaXB0KS4KKyAgICBFeGNlcHRpb25PcjxSZWY8QXVkaW9CdWZmZXJTb3VyY2VOb2Rl
Pj4gY3JlYXRlQnVmZmVyU291cmNlKCk7CisjaWYgRU5BQkxFKFZJREVPKQorICAgIEV4Y2VwdGlv
bk9yPFJlZjxNZWRpYUVsZW1lbnRBdWRpb1NvdXJjZU5vZGU+PiBjcmVhdGVNZWRpYUVsZW1lbnRT
b3VyY2UoSFRNTE1lZGlhRWxlbWVudCYpOworI2VuZGlmCisjaWYgRU5BQkxFKE1FRElBX1NUUkVB
TSkKKyAgICBFeGNlcHRpb25PcjxSZWY8TWVkaWFTdHJlYW1BdWRpb1NvdXJjZU5vZGU+PiBjcmVh
dGVNZWRpYVN0cmVhbVNvdXJjZShNZWRpYVN0cmVhbSYpOworICAgIEV4Y2VwdGlvbk9yPFJlZjxN
ZWRpYVN0cmVhbUF1ZGlvRGVzdGluYXRpb25Ob2RlPj4gY3JlYXRlTWVkaWFTdHJlYW1EZXN0aW5h
dGlvbigpOworI2VuZGlmCisgICAgRXhjZXB0aW9uT3I8UmVmPEdhaW5Ob2RlPj4gY3JlYXRlR2Fp
bigpOworICAgIEV4Y2VwdGlvbk9yPFJlZjxCaXF1YWRGaWx0ZXJOb2RlPj4gY3JlYXRlQmlxdWFk
RmlsdGVyKCk7CisgICAgRXhjZXB0aW9uT3I8UmVmPFdhdmVTaGFwZXJOb2RlPj4gY3JlYXRlV2F2
ZVNoYXBlcigpOworICAgIEV4Y2VwdGlvbk9yPFJlZjxEZWxheU5vZGU+PiBjcmVhdGVEZWxheShk
b3VibGUgbWF4RGVsYXlUaW1lKTsKKyAgICBFeGNlcHRpb25PcjxSZWY8V2ViS2l0QXVkaW9QYW5u
ZXJOb2RlPj4gY3JlYXRlUGFubmVyKCk7CisgICAgRXhjZXB0aW9uT3I8UmVmPENvbnZvbHZlck5v
ZGU+PiBjcmVhdGVDb252b2x2ZXIoKTsKKyAgICBFeGNlcHRpb25PcjxSZWY8RHluYW1pY3NDb21w
cmVzc29yTm9kZT4+IGNyZWF0ZUR5bmFtaWNzQ29tcHJlc3NvcigpOworICAgIEV4Y2VwdGlvbk9y
PFJlZjxBbmFseXNlck5vZGU+PiBjcmVhdGVBbmFseXNlcigpOworICAgIEV4Y2VwdGlvbk9yPFJl
ZjxTY3JpcHRQcm9jZXNzb3JOb2RlPj4gY3JlYXRlU2NyaXB0UHJvY2Vzc29yKHNpemVfdCBidWZm
ZXJTaXplLCBzaXplX3QgbnVtYmVyT2ZJbnB1dENoYW5uZWxzLCBzaXplX3QgbnVtYmVyT2ZPdXRw
dXRDaGFubmVscyk7CisgICAgRXhjZXB0aW9uT3I8UmVmPENoYW5uZWxTcGxpdHRlck5vZGU+PiBj
cmVhdGVDaGFubmVsU3BsaXR0ZXIoc2l6ZV90IG51bWJlck9mT3V0cHV0cyk7CisgICAgRXhjZXB0
aW9uT3I8UmVmPENoYW5uZWxNZXJnZXJOb2RlPj4gY3JlYXRlQ2hhbm5lbE1lcmdlcihzaXplX3Qg
bnVtYmVyT2ZJbnB1dHMpOworICAgIEV4Y2VwdGlvbk9yPFJlZjxPc2NpbGxhdG9yTm9kZT4+IGNy
ZWF0ZU9zY2lsbGF0b3IoKTsKKyAgICBFeGNlcHRpb25PcjxSZWY8UGVyaW9kaWNXYXZlPj4gY3Jl
YXRlUGVyaW9kaWNXYXZlKEZsb2F0MzJBcnJheSYgcmVhbCwgRmxvYXQzMkFycmF5JiBpbWFnaW5h
cnkpOworCisgICAgLy8gV2hlbiBhIHNvdXJjZSBub2RlIGhhcyBubyBtb3JlIHByb2Nlc3Npbmcg
dG8gZG8gKGhhcyBmaW5pc2hlZCBwbGF5aW5nKSwgdGhlbiBpdCB0ZWxscyB0aGUgY29udGV4dCB0
byBkZXJlZmVyZW5jZSBpdC4KKyAgICB2b2lkIG5vdGlmeU5vZGVGaW5pc2hlZFByb2Nlc3Npbmco
QXVkaW9Ob2RlKikgZmluYWw7CisKKyAgICAvLyBDYWxsZWQgYXQgdGhlIHN0YXJ0IG9mIGVhY2gg
cmVuZGVyIHF1YW50dW0uCisgICAgdm9pZCBoYW5kbGVQcmVSZW5kZXJUYXNrcygpIGZpbmFsOwor
CisgICAgLy8gQ2FsbGVkIGF0IHRoZSBlbmQgb2YgZWFjaCByZW5kZXIgcXVhbnR1bS4KKyAgICB2
b2lkIGhhbmRsZVBvc3RSZW5kZXJUYXNrcygpIGZpbmFsOworCisgICAgLy8gQ2FsbGVkIHBlcmlv
ZGljYWxseSBhdCB0aGUgZW5kIG9mIGVhY2ggcmVuZGVyIHF1YW50dW0gdG8gZGVyZWZlcmVuY2Ug
ZmluaXNoZWQgc291cmNlIG5vZGVzLgorICAgIHZvaWQgZGVyZWZGaW5pc2hlZFNvdXJjZU5vZGVz
KCk7CisKKyAgICAvLyBXZSBzY2hlZHVsZSBkZWxldGlvbiBvZiBhbGwgbWFya2VkIG5vZGVzIGF0
IHRoZSBlbmQgb2YgZWFjaCByZWFsdGltZSByZW5kZXIgcXVhbnR1bS4KKyAgICB2b2lkIG1hcmtG
b3JEZWxldGlvbihBdWRpb05vZGUmKSBmaW5hbDsKKyAgICB2b2lkIGRlbGV0ZU1hcmtlZE5vZGVz
KCkgZmluYWw7CisKKyAgICAvLyBBdWRpb0NvbnRleHQgY2FuIHB1bGwgbm9kZShzKSBhdCB0aGUg
ZW5kIG9mIGVhY2ggcmVuZGVyIHF1YW50dW0gZXZlbiB3aGVuIHRoZXkgYXJlIG5vdCBjb25uZWN0
ZWQgdG8gYW55IGRvd25zdHJlYW0gbm9kZXMuCisgICAgLy8gVGhlc2UgdHdvIG1ldGhvZHMgYXJl
IGNhbGxlZCBieSB0aGUgbm9kZXMgd2hvIHdhbnQgdG8gYWRkL3JlbW92ZSB0aGVtc2VsdmVzIGlu
dG8vZnJvbSB0aGUgYXV0b21hdGljIHB1bGwgbGlzdHMuCisgICAgdm9pZCBhZGRBdXRvbWF0aWNQ
dWxsTm9kZShBdWRpb05vZGUmKSBmaW5hbDsKKyAgICB2b2lkIHJlbW92ZUF1dG9tYXRpY1B1bGxO
b2RlKEF1ZGlvTm9kZSYpIGZpbmFsOworCisgICAgLy8gQ2FsbGVkIHJpZ2h0IGJlZm9yZSBoYW5k
bGVQb3N0UmVuZGVyVGFza3MoKSB0byBoYW5kbGUgbm9kZXMgd2hpY2ggbmVlZCB0byBiZSBwdWxs
ZWQgZXZlbiB3aGVuIHRoZXkgYXJlIG5vdCBjb25uZWN0ZWQgdG8gYW55dGhpbmcuCisgICAgdm9p
ZCBwcm9jZXNzQXV0b21hdGljUHVsbE5vZGVzKHNpemVfdCBmcmFtZXNUb1Byb2Nlc3MpIGZpbmFs
OworCisgICAgLy8gS2VlcHMgdHJhY2sgb2YgdGhlIG51bWJlciBvZiBjb25uZWN0aW9ucyBtYWRl
LgorICAgIHZvaWQgaW5jcmVtZW50Q29ubmVjdGlvbkNvdW50KCkgZmluYWwKKyAgICB7CisgICAg
ICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisgICAgICAgIG1fY29ubmVjdGlvbkNvdW50Kys7
CisgICAgfQorCisgICAgdW5zaWduZWQgY29ubmVjdGlvbkNvdW50KCkgY29uc3QgeyByZXR1cm4g
bV9jb25uZWN0aW9uQ291bnQ7IH0KKworICAgIC8vCisgICAgLy8gVGhyZWFkIFNhZmV0eSBhbmQg
R3JhcGggTG9ja2luZzoKKyAgICAvLworCisgICAgdm9pZCBzZXRBdWRpb1RocmVhZChUaHJlYWQm
IHRocmVhZCkgZmluYWwgeyBtX2F1ZGlvVGhyZWFkID0gJnRocmVhZDsgfSAvLyBGSVhNRTogY2hl
Y2sgZWl0aGVyIG5vdCBpbml0aWFsaXplZCBvciB0aGUgc2FtZQorICAgIFRocmVhZCogYXVkaW9U
aHJlYWQoKSBjb25zdCB7IHJldHVybiBtX2F1ZGlvVGhyZWFkOyB9CisgICAgYm9vbCBpc0F1ZGlv
VGhyZWFkKCkgY29uc3QgZmluYWw7CisKKyAgICAvLyBSZXR1cm5zIHRydWUgb25seSBhZnRlciB0
aGUgYXVkaW8gdGhyZWFkIGhhcyBiZWVuIHN0YXJ0ZWQgYW5kIHRoZW4gc2h1dGRvd24uCisgICAg
Ym9vbCBpc0F1ZGlvVGhyZWFkRmluaXNoZWQoKSBmaW5hbCB7IHJldHVybiBtX2lzQXVkaW9UaHJl
YWRGaW5pc2hlZDsgfQorCisgICAgLy8gbXVzdFJlbGVhc2VMb2NrIGlzIHNldCB0byB0cnVlIGlm
IHdlIGFjcXVpcmVkIHRoZSBsb2NrIGluIHRoaXMgbWV0aG9kIGNhbGwgYW5kIGNhbGxlciBtdXN0
IHVubG9jaygpLCBmYWxzZSBpZiBpdCB3YXMgcHJldmlvdXNseSBhY3F1aXJlZC4KKyAgICB2b2lk
IGxvY2soYm9vbCYgbXVzdFJlbGVhc2VMb2NrKSBmaW5hbDsKKworICAgIC8vIFJldHVybnMgdHJ1
ZSBpZiB3ZSBvd24gdGhlIGxvY2suCisgICAgLy8gbXVzdFJlbGVhc2VMb2NrIGlzIHNldCB0byB0
cnVlIGlmIHdlIGFjcXVpcmVkIHRoZSBsb2NrIGluIHRoaXMgbWV0aG9kIGNhbGwgYW5kIGNhbGxl
ciBtdXN0IHVubG9jaygpLCBmYWxzZSBpZiBpdCB3YXMgcHJldmlvdXNseSBhY3F1aXJlZC4KKyAg
ICBib29sIHRyeUxvY2soYm9vbCYgbXVzdFJlbGVhc2VMb2NrKSBmaW5hbDsKKworICAgIHZvaWQg
dW5sb2NrKCkgZmluYWw7CisKKyAgICAvLyBSZXR1cm5zIHRydWUgaWYgdGhpcyB0aHJlYWQgb3du
cyB0aGUgY29udGV4dCdzIGxvY2suCisgICAgYm9vbCBpc0dyYXBoT3duZXIoKSBjb25zdCBmaW5h
bDsKKworICAgIC8vIFJldHVybnMgdGhlIG1heGltdW0gbnVtYmVyIG9mIGNoYW5uZWxzIHdlIGNh
biBzdXBwb3J0LgorICAgIHN0YXRpYyB1bnNpZ25lZCBtYXhOdW1iZXJPZkNoYW5uZWxzKCkgeyBy
ZXR1cm4gTWF4TnVtYmVyT2ZDaGFubmVsczsgfQorCisgICAgLy8gSW4gQXVkaW9Ob2RlOjpkZXJl
ZigpIGEgdHJ5TG9jaygpIGlzIHVzZWQgZm9yIGNhbGxpbmcgZmluaXNoRGVyZWYoKSwgYnV0IGlm
IGl0IGZhaWxzIGtlZXAgdHJhY2sgaGVyZS4KKyAgICB2b2lkIGFkZERlZmVycmVkRmluaXNoRGVy
ZWYoQXVkaW9Ob2RlKikgZmluYWw7CisKKyAgICAvLyBJbiB0aGUgYXVkaW8gdGhyZWFkIGF0IHRo
ZSBzdGFydCBvZiBlYWNoIHJlbmRlciBjeWNsZSwgd2UnbGwgY2FsbCBoYW5kbGVEZWZlcnJlZEZp
bmlzaERlcmVmcygpLgorICAgIHZvaWQgaGFuZGxlRGVmZXJyZWRGaW5pc2hEZXJlZnMoKTsKKwor
ICAgIC8vIE9ubHkgYWNjZXNzZWQgd2hlbiB0aGUgZ3JhcGggbG9jayBpcyBoZWxkLgorICAgIHZv
aWQgbWFya1N1bW1pbmdKdW5jdGlvbkRpcnR5KEF1ZGlvU3VtbWluZ0p1bmN0aW9uKikgZmluYWw7
CisgICAgdm9pZCBtYXJrQXVkaW9Ob2RlT3V0cHV0RGlydHkoQXVkaW9Ob2RlT3V0cHV0KikgZmlu
YWw7CisKKyAgICAvLyBNdXN0IGJlIGNhbGxlZCBvbiBtYWluIHRocmVhZC4KKyAgICB2b2lkIHJl
bW92ZU1hcmtlZFN1bW1pbmdKdW5jdGlvbihBdWRpb1N1bW1pbmdKdW5jdGlvbiopIGZpbmFsOwor
CisgICAgLy8gRXZlbnRUYXJnZXQKKyAgICBFdmVudFRhcmdldEludGVyZmFjZSBldmVudFRhcmdl
dEludGVyZmFjZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIFdlYktpdEF1ZGlvQ29udGV4dEV2ZW50
VGFyZ2V0SW50ZXJmYWNlVHlwZTsgfQorCisgICAgdm9pZCBzdGFydFJlbmRlcmluZygpOworICAg
IHZvaWQgZmluaXNoZWRSZW5kZXJpbmcoYm9vbCBkaWRSZW5kZXJpbmcpIGZpbmFsOworCisgICAg
c3RhdGljIHVuc2lnbmVkIHNfaGFyZHdhcmVDb250ZXh0Q291bnQ7CisKKyAgICAvLyBSZXN0cmlj
dGlvbnMgdG8gY2hhbmdlIGRlZmF1bHQgYmVoYXZpb3JzLgorICAgIGVudW0gQmVoYXZpb3JSZXN0
cmljdGlvbkZsYWdzIHsKKyAgICAgICAgTm9SZXN0cmljdGlvbnMgPSAwLAorICAgICAgICBSZXF1
aXJlVXNlckdlc3R1cmVGb3JBdWRpb1N0YXJ0UmVzdHJpY3Rpb24gPSAxIDw8IDAsCisgICAgICAg
IFJlcXVpcmVQYWdlQ29uc2VudEZvckF1ZGlvU3RhcnRSZXN0cmljdGlvbiA9IDEgPDwgMSwKKyAg
ICB9OworICAgIHR5cGVkZWYgdW5zaWduZWQgQmVoYXZpb3JSZXN0cmljdGlvbnM7CisKKyAgICBC
ZWhhdmlvclJlc3RyaWN0aW9ucyBiZWhhdmlvclJlc3RyaWN0aW9ucygpIGNvbnN0IHsgcmV0dXJu
IG1fcmVzdHJpY3Rpb25zOyB9CisgICAgdm9pZCBhZGRCZWhhdmlvclJlc3RyaWN0aW9uKEJlaGF2
aW9yUmVzdHJpY3Rpb25zIHJlc3RyaWN0aW9uKSB7IG1fcmVzdHJpY3Rpb25zIHw9IHJlc3RyaWN0
aW9uOyB9CisgICAgdm9pZCByZW1vdmVCZWhhdmlvclJlc3RyaWN0aW9uKEJlaGF2aW9yUmVzdHJp
Y3Rpb25zIHJlc3RyaWN0aW9uKSB7IG1fcmVzdHJpY3Rpb25zICY9IH5yZXN0cmljdGlvbjsgfQor
CisgICAgdm9pZCBpc1BsYXlpbmdBdWRpb0RpZENoYW5nZSgpIGZpbmFsOworCisgICAgdm9pZCBu
b2RlV2lsbEJlZ2luUGxheWJhY2soKSBmaW5hbDsKKworI2lmICFSRUxFQVNFX0xPR19ESVNBQkxF
RAorICAgIGNvbnN0IExvZ2dlciYgbG9nZ2VyKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9sb2dn
ZXIuZ2V0KCk7IH0KKyAgICBjb25zdCB2b2lkKiBsb2dJZGVudGlmaWVyKCkgY29uc3QgZmluYWwg
eyByZXR1cm4gbV9sb2dJZGVudGlmaWVyOyB9CisgICAgV1RGTG9nQ2hhbm5lbCYgbG9nQ2hhbm5l
bCgpIGNvbnN0IGZpbmFsOworICAgIGNvbnN0IHZvaWQqIG5leHRBdWRpb05vZGVMb2dJZGVudGlm
aWVyKCkgZmluYWwgeyByZXR1cm4gY2hpbGRMb2dJZGVudGlmaWVyKG1fbG9nSWRlbnRpZmllciwg
KyttX25leHRBdWRpb05vZGVJZGVudGlmaWVyKTsgfQorICAgIGNvbnN0IHZvaWQqIG5leHRBdWRp
b1BhcmFtZXRlckxvZ0lkZW50aWZpZXIoKSBmaW5hbCB7IHJldHVybiBjaGlsZExvZ0lkZW50aWZp
ZXIobV9sb2dJZGVudGlmaWVyLCArK21fbmV4dEF1ZGlvUGFyYW1ldGVySWRlbnRpZmllcik7IH0K
KyNlbmRpZgorCisgICAgdm9pZCBwb3N0VGFzayhXVEY6OkZ1bmN0aW9uPHZvaWQoKT4mJikgZmlu
YWw7CisgICAgYm9vbCBpc1N0b3BwZWQoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2lzU3RvcFNj
aGVkdWxlZDsgfQorICAgIGNvbnN0IFNlY3VyaXR5T3JpZ2luKiBvcmlnaW4oKSBjb25zdCBmaW5h
bDsKKyAgICB2b2lkIGFkZENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VTb3VyY2UsIE1lc3NhZ2VMZXZl
bCwgY29uc3QgU3RyaW5nJiBtZXNzYWdlKSBmaW5hbDsKKworcHJvdGVjdGVkOgorICAgIGV4cGxp
Y2l0IFdlYktpdEF1ZGlvQ29udGV4dChEb2N1bWVudCYpOworICAgIFdlYktpdEF1ZGlvQ29udGV4
dChEb2N1bWVudCYsIEF1ZGlvQnVmZmVyKiByZW5kZXJUYXJnZXQpOworCisgICAgc3RhdGljIGJv
b2wgaXNTYW1wbGVSYXRlUmFuZ2VHb29kKGZsb2F0IHNhbXBsZVJhdGUpOworICAgIHZvaWQgY2xl
YXJQZW5kaW5nQWN0aXZpdHkoKTsKKyAgICB2b2lkIG1ha2VQZW5kaW5nQWN0aXZpdHkoKTsKKwor
cHJpdmF0ZToKKyAgICB2b2lkIGNvbnN0cnVjdENvbW1vbigpOworCisgICAgdm9pZCBsYXp5SW5p
dGlhbGl6ZSgpOworICAgIHZvaWQgdW5pbml0aWFsaXplKCk7CisKKyAgICBib29sIHdpbGxCZWdp
blBsYXliYWNrKCk7CisgICAgYm9vbCB3aWxsUGF1c2VQbGF5YmFjaygpOworCisgICAgYm9vbCB1
c2VyR2VzdHVyZVJlcXVpcmVkRm9yQXVkaW9TdGFydCgpIGNvbnN0IHsgcmV0dXJuICFpc09mZmxp
bmVDb250ZXh0KCkgJiYgbV9yZXN0cmljdGlvbnMgJiBSZXF1aXJlVXNlckdlc3R1cmVGb3JBdWRp
b1N0YXJ0UmVzdHJpY3Rpb247IH0KKyAgICBib29sIHBhZ2VDb25zZW50UmVxdWlyZWRGb3JBdWRp
b1N0YXJ0KCkgY29uc3QgeyByZXR1cm4gIWlzT2ZmbGluZUNvbnRleHQoKSAmJiBtX3Jlc3RyaWN0
aW9ucyAmIFJlcXVpcmVQYWdlQ29uc2VudEZvckF1ZGlvU3RhcnRSZXN0cmljdGlvbjsgfQorCisg
ICAgdm9pZCBzZXRTdGF0ZShTdGF0ZSk7CisKKyAgICB2b2lkIGNsZWFyKCk7CisKKyAgICB2b2lk
IHNjaGVkdWxlTm9kZURlbGV0aW9uKCk7CisKKyAgICB2b2lkIG1lZGlhQ2FuU3RhcnQoRG9jdW1l
bnQmKSBvdmVycmlkZTsKKworICAgIC8vIEV2ZW50VGFyZ2V0CisgICAgdm9pZCBkaXNwYXRjaEV2
ZW50KEV2ZW50JikgZmluYWw7CisKKyAgICAvLyBNZWRpYVByb2R1Y2VyCisgICAgTWVkaWFQcm9k
dWNlcjo6TWVkaWFTdGF0ZUZsYWdzIG1lZGlhU3RhdGUoKSBjb25zdCBvdmVycmlkZTsKKyAgICB2
b2lkIHBhZ2VNdXRlZFN0YXRlRGlkQ2hhbmdlKCkgb3ZlcnJpZGU7CisKKyAgICAvLyBUaGUgY29u
dGV4dCBpdHNlbGYga2VlcHMgYSByZWZlcmVuY2UgdG8gYWxsIHNvdXJjZSBub2Rlcy4gIFRoZSBz
b3VyY2Ugbm9kZXMsIHRoZW4gcmVmZXJlbmNlIGFsbCBub2RlcyB0aGV5J3JlIGNvbm5lY3RlZCB0
by4KKyAgICAvLyBJbiB0dXJuLCB0aGVzZSBub2RlcyByZWZlcmVuY2UgYWxsIG5vZGVzIHRoZXkn
cmUgY29ubmVjdGVkIHRvLiAgQWxsIG5vZGVzIGFyZSB1bHRpbWF0ZWx5IGNvbm5lY3RlZCB0byB0
aGUgQXVkaW9EZXN0aW5hdGlvbk5vZGUuCisgICAgLy8gV2hlbiB0aGUgY29udGV4dCBkZXJlZmVy
ZW5jZXMgYSBzb3VyY2Ugbm9kZSwgaXQgd2lsbCBiZSBkZWFjdGl2YXRlZCBmcm9tIHRoZSByZW5k
ZXJpbmcgZ3JhcGggYWxvbmcgd2l0aCBhbGwgb3RoZXIgbm9kZXMgaXQgaXMKKyAgICAvLyB1bmlx
dWVseSBjb25uZWN0ZWQgdG8uICBTZWUgdGhlIEF1ZGlvTm9kZTo6cmVmKCkgYW5kIEF1ZGlvTm9k
ZTo6ZGVyZWYoKSBtZXRob2RzIGZvciBtb3JlIGRldGFpbHMuCisgICAgdm9pZCByZWZOb2RlKEF1
ZGlvTm9kZSYpOworICAgIHZvaWQgZGVyZWZOb2RlKEF1ZGlvTm9kZSYpOworCisgICAgLy8gQWN0
aXZlRE9NT2JqZWN0IEFQSS4KKyAgICB2b2lkIHN1c3BlbmQoUmVhc29uRm9yU3VzcGVuc2lvbikg
ZmluYWw7CisgICAgdm9pZCByZXN1bWUoKSBmaW5hbDsKKyAgICB2b2lkIHN0b3AoKSBvdmVycmlk
ZTsKKyAgICBjb25zdCBjaGFyKiBhY3RpdmVET01PYmplY3ROYW1lKCkgY29uc3Qgb3ZlcnJpZGU7
CisKKyAgICAvLyBXaGVuIHRoZSBjb250ZXh0IGdvZXMgYXdheSwgdGhlcmUgbWlnaHQgc3RpbGwg
YmUgc29tZSBzb3VyY2VzIHdoaWNoIGhhdmVuJ3QgZmluaXNoZWQgcGxheWluZy4KKyAgICAvLyBN
YWtlIHN1cmUgdG8gZGVyZWZlcmVuY2UgdGhlbSBoZXJlLgorICAgIHZvaWQgZGVyZWZVbmZpbmlz
aGVkU291cmNlTm9kZXMoKTsKKworICAgIC8vIFBsYXRmb3JtTWVkaWFTZXNzaW9uQ2xpZW50Cisg
ICAgUGxhdGZvcm1NZWRpYVNlc3Npb246Ok1lZGlhVHlwZSBtZWRpYVR5cGUoKSBjb25zdCBvdmVy
cmlkZSB7IHJldHVybiBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6TWVkaWFUeXBlOjpXZWJBdWRpbzsg
fQorICAgIFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpNZWRpYVR5cGUgcHJlc2VudGF0aW9uVHlwZSgp
IGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpNZWRpYVR5cGU6
OldlYkF1ZGlvOyB9CisgICAgdm9pZCBtYXlSZXN1bWVQbGF5YmFjayhib29sIHNob3VsZFJlc3Vt
ZSkgb3ZlcnJpZGU7CisgICAgdm9pZCBzdXNwZW5kUGxheWJhY2soKSBvdmVycmlkZTsKKyAgICBi
b29sIGNhblJlY2VpdmVSZW1vdGVDb250cm9sQ29tbWFuZHMoKSBjb25zdCBvdmVycmlkZSB7IHJl
dHVybiBmYWxzZTsgfQorICAgIHZvaWQgZGlkUmVjZWl2ZVJlbW90ZUNvbnRyb2xDb21tYW5kKFBs
YXRmb3JtTWVkaWFTZXNzaW9uOjpSZW1vdGVDb250cm9sQ29tbWFuZFR5cGUsIGNvbnN0IFBsYXRm
b3JtTWVkaWFTZXNzaW9uOjpSZW1vdGVDb21tYW5kQXJndW1lbnQqKSBvdmVycmlkZSB7IH0KKyAg
ICBib29sIHN1cHBvcnRzU2Vla2luZygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9
CisgICAgYm9vbCBzaG91bGRPdmVycmlkZUJhY2tncm91bmRQbGF5YmFja1Jlc3RyaWN0aW9uKFBs
YXRmb3JtTWVkaWFTZXNzaW9uOjpJbnRlcnJ1cHRpb25UeXBlKSBjb25zdCBvdmVycmlkZSB7IHJl
dHVybiBmYWxzZTsgfQorICAgIGJvb2wgY2FuUHJvZHVjZUF1ZGlvKCkgY29uc3QgZmluYWwgeyBy
ZXR1cm4gdHJ1ZTsgfQorICAgIGJvb2wgaXNTdXNwZW5kZWQoKSBjb25zdCBmaW5hbDsKKworICAg
IHZvaWQgdmlzaWJpbGl0eVN0YXRlQ2hhbmdlZCgpIGZpbmFsOworCisgICAgYm9vbCBpc0F1ZGlv
Q29udGV4dCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgYm9vbCBpc1dlYktp
dEF1ZGlvQ29udGV4dCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIHRydWU7IH0KKworICAgIHZvaWQg
aGFuZGxlRGlydHlBdWRpb1N1bW1pbmdKdW5jdGlvbnMoKTsKKyAgICB2b2lkIGhhbmRsZURpcnR5
QXVkaW9Ob2RlT3V0cHV0cygpOworCisgICAgdm9pZCBhZGRSZWFjdGlvbihTdGF0ZSwgRE9NUHJv
bWlzZURlZmVycmVkPHZvaWQ+JiYpOworICAgIHZvaWQgdXBkYXRlQXV0b21hdGljUHVsbE5vZGVz
KCk7CisKKyNpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKKyAgICBjb25zdCBjaGFyKiBsb2dDbGFz
c05hbWUoKSBjb25zdCBmaW5hbCB7IHJldHVybiAiV2ViS2l0QXVkaW9Db250ZXh0IjsgfQorCisg
ICAgUmVmPExvZ2dlcj4gbV9sb2dnZXI7CisgICAgY29uc3Qgdm9pZCogbV9sb2dJZGVudGlmaWVy
OworICAgIHVpbnQ2NF90IG1fbmV4dEF1ZGlvTm9kZUlkZW50aWZpZXIgeyAwIH07CisgICAgdWlu
dDY0X3QgbV9uZXh0QXVkaW9QYXJhbWV0ZXJJZGVudGlmaWVyIHsgMCB9OworI2VuZGlmCisKKyAg
ICAvLyBPbmx5IGFjY2Vzc2VkIGluIHRoZSBhdWRpbyB0aHJlYWQuCisgICAgVmVjdG9yPEF1ZGlv
Tm9kZSo+IG1fZmluaXNoZWROb2RlczsKKworICAgIC8vIFdlIGRvbid0IHVzZSBSZWZQdHI8QXVk
aW9Ob2RlPiBoZXJlIGJlY2F1c2UgQXVkaW9Ob2RlIGhhcyBhIG1vcmUgY29tcGxleCByZWYoKSAv
IGRlcmVmKCkgaW1wbGVtZW50YXRpb24KKyAgICAvLyB3aXRoIGFuIG9wdGlvbmFsIGFyZ3VtZW50
IGZvciByZWZUeXBlLiAgV2UgbmVlZCB0byB1c2UgdGhlIHNwZWNpYWwgcmVmVHlwZTogUmVmVHlw
ZUNvbm5lY3Rpb24KKyAgICAvLyBFaXRoZXIgYWNjZXNzZWQgd2hlbiB0aGUgZ3JhcGggbG9jayBp
cyBoZWxkLCBvciBvbiB0aGUgbWFpbiB0aHJlYWQgd2hlbiB0aGUgYXVkaW8gdGhyZWFkIGhhcyBm
aW5pc2hlZC4KKyAgICBWZWN0b3I8QXVkaW9Ob2RlKj4gbV9yZWZlcmVuY2VkTm9kZXM7CisKKyAg
ICAvLyBBY2N1bXVsYXRlIG5vZGVzIHdoaWNoIG5lZWQgdG8gYmUgZGVsZXRlZCBoZXJlLgorICAg
IC8vIFRoaXMgaXMgY29waWVkIHRvIG1fbm9kZXNUb0RlbGV0ZSBhdCB0aGUgZW5kIG9mIGEgcmVu
ZGVyIGN5Y2xlIGluIGhhbmRsZVBvc3RSZW5kZXJUYXNrcygpLCB3aGVyZSB3ZSdyZSBhc3N1cmVk
IG9mIGEgc3RhYmxlIGdyYXBoCisgICAgLy8gc3RhdGUgd2hpY2ggd2lsbCBoYXZlIG5vIHJlZmVy
ZW5jZXMgdG8gYW55IG9mIHRoZSBub2RlcyBpbiBtX25vZGVzVG9EZWxldGUgb25jZSB0aGUgY29u
dGV4dCBsb2NrIGlzIHJlbGVhc2VkCisgICAgLy8gKHdoZW4gaGFuZGxlUG9zdFJlbmRlclRhc2tz
KCkgaGFzIGNvbXBsZXRlZCkuCisgICAgVmVjdG9yPEF1ZGlvTm9kZSo+IG1fbm9kZXNNYXJrZWRG
b3JEZWxldGlvbjsKKworICAgIC8vIFRoZXkgd2lsbCBiZSBzY2hlZHVsZWQgZm9yIGRlbGV0aW9u
IChvbiB0aGUgbWFpbiB0aHJlYWQpIGF0IHRoZSBlbmQgb2YgYSByZW5kZXIgY3ljbGUgKGluIHJl
YWx0aW1lIHRocmVhZCkuCisgICAgVmVjdG9yPEF1ZGlvTm9kZSo+IG1fbm9kZXNUb0RlbGV0ZTsK
KworICAgIGJvb2wgbV9pc0RlbGV0aW9uU2NoZWR1bGVkIHsgZmFsc2UgfTsKKyAgICBib29sIG1f
aXNTdG9wU2NoZWR1bGVkIHsgZmFsc2UgfTsKKyAgICBib29sIG1faXNJbml0aWFsaXplZCB7IGZh
bHNlIH07CisgICAgYm9vbCBtX2lzQXVkaW9UaHJlYWRGaW5pc2hlZCB7IGZhbHNlIH07CisgICAg
Ym9vbCBtX2F1dG9tYXRpY1B1bGxOb2Rlc05lZWRVcGRhdGluZyB7IGZhbHNlIH07CisgICAgYm9v
bCBtX2lzT2ZmbGluZUNvbnRleHQgeyBmYWxzZSB9OworCisgICAgLy8gT25seSBhY2Nlc3NlZCB3
aGVuIHRoZSBncmFwaCBsb2NrIGlzIGhlbGQuCisgICAgSGFzaFNldDxBdWRpb1N1bW1pbmdKdW5j
dGlvbio+IG1fZGlydHlTdW1taW5nSnVuY3Rpb25zOworICAgIEhhc2hTZXQ8QXVkaW9Ob2RlT3V0
cHV0Kj4gbV9kaXJ0eUF1ZGlvTm9kZU91dHB1dHM7CisKKyAgICAvLyBGb3IgdGhlIHNha2Ugb2Yg
dGhyZWFkIHNhZmV0eSwgd2UgbWFpbnRhaW4gYSBzZXBlcmF0ZSBWZWN0b3Igb2YgYXV0b21hdGlj
IHB1bGwgbm9kZXMgZm9yIHJlbmRlcmluZyBpbiBtX3JlbmRlcmluZ0F1dG9tYXRpY1B1bGxOb2Rl
cy4KKyAgICAvLyBJdCB3aWxsIGJlIGNvcGllZCBmcm9tIG1fYXV0b21hdGljUHVsbE5vZGVzIGJ5
IHVwZGF0ZUF1dG9tYXRpY1B1bGxOb2RlcygpIGF0IHRoZSB2ZXJ5IHN0YXJ0IG9yIGVuZCBvZiB0
aGUgcmVuZGVyaW5nIHF1YW50dW0uCisgICAgSGFzaFNldDxBdWRpb05vZGUqPiBtX2F1dG9tYXRp
Y1B1bGxOb2RlczsKKyAgICBWZWN0b3I8QXVkaW9Ob2RlKj4gbV9yZW5kZXJpbmdBdXRvbWF0aWNQ
dWxsTm9kZXM7CisgICAgLy8gT25seSBhY2Nlc3NlZCBpbiB0aGUgYXVkaW8gdGhyZWFkLgorICAg
IFZlY3RvcjxBdWRpb05vZGUqPiBtX2RlZmVycmVkRmluaXNoRGVyZWZMaXN0OworICAgIFZlY3Rv
cjxWZWN0b3I8RE9NUHJvbWlzZURlZmVycmVkPHZvaWQ+Pj4gbV9zdGF0ZVJlYWN0aW9uczsKKwor
ICAgIHN0ZDo6dW5pcXVlX3B0cjxQbGF0Zm9ybU1lZGlhU2Vzc2lvbj4gbV9tZWRpYVNlc3Npb247
CisgICAgVW5pcXVlUmVmPE1haW5UaHJlYWRHZW5lcmljRXZlbnRRdWV1ZT4gbV9ldmVudFF1ZXVl
OworCisgICAgUmVmUHRyPEF1ZGlvQnVmZmVyPiBtX3JlbmRlclRhcmdldDsKKyAgICBSZWZQdHI8
QXVkaW9EZXN0aW5hdGlvbk5vZGU+IG1fZGVzdGluYXRpb25Ob2RlOworICAgIFJlZlB0cjxBdWRp
b0xpc3RlbmVyPiBtX2xpc3RlbmVyOworCisgICAgdW5zaWduZWQgbV9jb25uZWN0aW9uQ291bnQg
eyAwIH07CisKKyAgICAvLyBHcmFwaCBsb2NraW5nLgorICAgIExvY2sgbV9jb250ZXh0R3JhcGhN
dXRleDsKKyAgICAvLyBGSVhNRTogVXNpbmcgdm9sYXRpbGUgc2VlbXMgaW5jb3JyZWN0LgorICAg
IC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODAzMzIKKyAgICBU
aHJlYWQqIHZvbGF0aWxlIG1fYXVkaW9UaHJlYWQgeyBudWxscHRyIH07CisgICAgVGhyZWFkKiB2
b2xhdGlsZSBtX2dyYXBoT3duZXJUaHJlYWQgeyBudWxscHRyIH07IC8vIGlmIHRoZSBsb2NrIGlz
IGhlbGQgdGhlbiB0aGlzIGlzIHRoZSB0aHJlYWQgd2hpY2ggb3ducyBpdCwgb3RoZXJ3aXNlID09
IG51bGxwdHIuCisKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8QXN5bmNBdWRpb0RlY29kZXI+IG1fYXVk
aW9EZWNvZGVyOworCisgICAgLy8gVGhpcyBpcyBjb25zaWRlcmluZyAzMiBpcyBsYXJnZSBlbm91
Z2ggZm9yIG11bHRpcGxlIGNoYW5uZWxzIGF1ZGlvLgorICAgIC8vIEl0IGlzIHNvbWV3aGF0IGFy
Yml0cmFyeSBhbmQgY291bGQgYmUgaW5jcmVhc2VkIGlmIG5lY2Vzc2FyeS4KKyAgICBlbnVtIHsg
TWF4TnVtYmVyT2ZDaGFubmVscyA9IDMyIH07CisKKyAgICAvLyBOdW1iZXIgb2YgQXVkaW9CdWZm
ZXJTb3VyY2VOb2RlcyB0aGF0IGFyZSBhY3RpdmUgKHBsYXlpbmcpLgorICAgIHN0ZDo6YXRvbWlj
PGludD4gbV9hY3RpdmVTb3VyY2VDb3VudCB7IDAgfTsKKworICAgIEJlaGF2aW9yUmVzdHJpY3Rp
b25zIG1fcmVzdHJpY3Rpb25zIHsgTm9SZXN0cmljdGlvbnMgfTsKKworICAgIFN0YXRlIG1fc3Rh
dGUgeyBTdGF0ZTo6U3VzcGVuZGVkIH07CisgICAgUmVmUHRyPFBlbmRpbmdBY3Rpdml0eTxXZWJL
aXRBdWRpb0NvbnRleHQ+PiBtX3BlbmRpbmdBY3Rpdml0eTsKK307CisKK2lubGluZSBBdWRpb0Nv
bnRleHRTdGF0ZSBXZWJLaXRBdWRpb0NvbnRleHQ6OnN0YXRlKCkgY29uc3QKK3sKKyAgICByZXR1
cm4gbV9zdGF0ZTsKK30KKworfSAvLyBXZWJDb3JlCisKK1NQRUNJQUxJWkVfVFlQRV9UUkFJVFNf
QkVHSU4oV2ViQ29yZTo6V2ViS2l0QXVkaW9Db250ZXh0KQorICAgIHN0YXRpYyBib29sIGlzVHlw
ZShjb25zdCBXZWJDb3JlOjpBdWRpb0NvbnRleHRCYXNlJiBjb250ZXh0KSB7IHJldHVybiBjb250
ZXh0LmlzV2ViS2l0QXVkaW9Db250ZXh0KCk7IH0KK1NQRUNJQUxJWkVfVFlQRV9UUkFJVFNfRU5E
KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vV2ViS2l0QXVk
aW9Db250ZXh0LmlkbCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vV2ViS2l0QXVk
aW9Db250ZXh0LmlkbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uNTY5
NWM3MzY2OTgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1
ZGlvL1dlYktpdEF1ZGlvQ29udGV4dC5pZGwKQEAgLTAsMCArMSw5MyBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxMCwgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHly
aWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiAgUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIg
UFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTgorICog
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTCisgKiBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCitb
CisgICAgQWN0aXZlRE9NT2JqZWN0LAorICAgIENvbmRpdGlvbmFsPVdFQl9BVURJTywKKyAgICBF
bmFibGVkQnlTZXR0aW5nPVdlYkF1ZGlvLAorICAgIEV4cG9ydE1hY3JvPVdFQkNPUkVfRVhQT1JU
LAorICAgIEludGVyZmFjZU5hbWU9d2Via2l0QXVkaW9Db250ZXh0LAorXSBpbnRlcmZhY2UgV2Vi
S2l0QXVkaW9Db250ZXh0IDogRXZlbnRUYXJnZXQgeworICAgIFtDYWxsV2l0aD1Eb2N1bWVudCwg
TWF5VGhyb3dFeGNlcHRpb25dIGNvbnN0cnVjdG9yKCk7CisKKyAgICAvLyBBbGwgcmVuZGVyZWQg
YXVkaW8gdWx0aW1hdGVseSBjb25uZWN0cyB0byBkZXN0aW5hdGlvbiwgd2hpY2ggcmVwcmVzZW50
cyB0aGUgYXVkaW8gaGFyZHdhcmUuCisgICAgcmVhZG9ubHkgYXR0cmlidXRlIEF1ZGlvRGVzdGlu
YXRpb25Ob2RlIGRlc3RpbmF0aW9uOworCisgICAgLy8gQWxsIHNjaGVkdWxlZCB0aW1lcyBhcmUg
cmVsYXRpdmUgdG8gdGhpcyB0aW1lIGluIHNlY29uZHMuCisgICAgcmVhZG9ubHkgYXR0cmlidXRl
IHVucmVzdHJpY3RlZCBkb3VibGUgY3VycmVudFRpbWU7CisKKyAgICAvLyBBbGwgQXVkaW9Ob2Rl
cyBpbiB0aGUgY29udGV4dCBydW4gYXQgdGhpcyBzYW1wbGUtcmF0ZSAoc2FtcGxlLWZyYW1lcyBw
ZXIgc2Vjb25kKS4KKyAgICByZWFkb25seSBhdHRyaWJ1dGUgdW5yZXN0cmljdGVkIGZsb2F0IHNh
bXBsZVJhdGU7CisKKyAgICAvLyBBbGwgcGFubmluZyBpcyByZWxhdGl2ZSB0byB0aGlzIGxpc3Rl
bmVyLgorICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBBdWRpb0xpc3RlbmVyIGxpc3RlbmVyOworCisg
ICAgW0ltcGxlbWVudGVkQXM9c3VzcGVuZFJlbmRlcmluZ10gUHJvbWlzZTx2b2lkPiBzdXNwZW5k
KCk7CisgICAgW0ltcGxlbWVudGVkQXM9cmVzdW1lUmVuZGVyaW5nXSBQcm9taXNlPHZvaWQ+IHJl
c3VtZSgpOworICAgIFByb21pc2U8dm9pZD4gY2xvc2UoKTsKKworICAgIHJlYWRvbmx5IGF0dHJp
YnV0ZSBBdWRpb0NvbnRleHRTdGF0ZSBzdGF0ZTsKKyAgICBhdHRyaWJ1dGUgRXZlbnRIYW5kbGVy
IG9uc3RhdGVjaGFuZ2U7CisKKyAgICAvLyBOdW1iZXIgb2YgQXVkaW9CdWZmZXJTb3VyY2VOb2Rl
cyB0aGF0IGFyZSBjdXJyZW50bHkgcGxheWluZy4KKyAgICByZWFkb25seSBhdHRyaWJ1dGUgdW5z
aWduZWQgbG9uZyBhY3RpdmVTb3VyY2VDb3VudDsKKworICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0g
QXVkaW9CdWZmZXIgY3JlYXRlQnVmZmVyKHVuc2lnbmVkIGxvbmcgbnVtYmVyT2ZDaGFubmVscywg
dW5zaWduZWQgbG9uZyBudW1iZXJPZkZyYW1lcywgdW5yZXN0cmljdGVkIGZsb2F0IHNhbXBsZVJh
dGUpOworICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gQXVkaW9CdWZmZXIgY3JlYXRlQnVmZmVyKEFy
cmF5QnVmZmVyIGJ1ZmZlciwgYm9vbGVhbiBtaXhUb01vbm8pOworCisgICAgLy8gQXN5bmNocm9u
b3VzIGF1ZGlvIGZpbGUgZGF0YSBkZWNvZGluZy4KKyAgICAvLyBGSVhNRTogc3VjY2Vzc0NhbGxi
YWNrIHNob3VsZCBiZSBvcHRpb25hbCBhbmQgdGhlIGNhbGxiYWNrcyBzaG91bGQgbm90IGJlIG51
bGxhYmxlLiBUaGlzIHNob3VsZCBhbHNvIHJldHVybiBhIFByb21pc2UuCisgICAgdm9pZCBkZWNv
ZGVBdWRpb0RhdGEoQXJyYXlCdWZmZXIgYXVkaW9EYXRhLCBBdWRpb0J1ZmZlckNhbGxiYWNrPyBz
dWNjZXNzQ2FsbGJhY2ssIG9wdGlvbmFsIEF1ZGlvQnVmZmVyQ2FsbGJhY2s/IGVycm9yQ2FsbGJh
Y2spOworCisgICAgLy8gU291cmNlcworICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gQXVkaW9CdWZm
ZXJTb3VyY2VOb2RlIGNyZWF0ZUJ1ZmZlclNvdXJjZSgpOworCisgICAgW0NvbmRpdGlvbmFsPVZJ
REVPLCBNYXlUaHJvd0V4Y2VwdGlvbl0gTWVkaWFFbGVtZW50QXVkaW9Tb3VyY2VOb2RlIGNyZWF0
ZU1lZGlhRWxlbWVudFNvdXJjZShIVE1MTWVkaWFFbGVtZW50IG1lZGlhRWxlbWVudCk7CisKKyAg
ICBbQ29uZGl0aW9uYWw9TUVESUFfU1RSRUFNLCBNYXlUaHJvd0V4Y2VwdGlvbl0gTWVkaWFTdHJl
YW1BdWRpb1NvdXJjZU5vZGUgY3JlYXRlTWVkaWFTdHJlYW1Tb3VyY2UoTWVkaWFTdHJlYW0gbWVk
aWFTdHJlYW0pOworICAgIFtDb25kaXRpb25hbD1NRURJQV9TVFJFQU0sIE1heVRocm93RXhjZXB0
aW9uXSBNZWRpYVN0cmVhbUF1ZGlvRGVzdGluYXRpb25Ob2RlIGNyZWF0ZU1lZGlhU3RyZWFtRGVz
dGluYXRpb24oKTsKKworICAgIC8vIFByb2Nlc3Npbmcgbm9kZXMKKyAgICBbTWF5VGhyb3dFeGNl
cHRpb25dIEdhaW5Ob2RlIGNyZWF0ZUdhaW4oKTsKKyAgICBbTWF5VGhyb3dFeGNlcHRpb25dIERl
bGF5Tm9kZSBjcmVhdGVEZWxheShvcHRpb25hbCB1bnJlc3RyaWN0ZWQgZG91YmxlIG1heERlbGF5
VGltZSA9IDEpOworICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gQmlxdWFkRmlsdGVyTm9kZSBjcmVh
dGVCaXF1YWRGaWx0ZXIoKTsKKyAgICBbTWF5VGhyb3dFeGNlcHRpb25dIFdhdmVTaGFwZXJOb2Rl
IGNyZWF0ZVdhdmVTaGFwZXIoKTsKKyAgICBbTWF5VGhyb3dFeGNlcHRpb25dIFdlYktpdEF1ZGlv
UGFubmVyTm9kZSBjcmVhdGVQYW5uZXIoKTsKKyAgICBbTWF5VGhyb3dFeGNlcHRpb25dIENvbnZv
bHZlck5vZGUgY3JlYXRlQ29udm9sdmVyKCk7CisgICAgW01heVRocm93RXhjZXB0aW9uXSBEeW5h
bWljc0NvbXByZXNzb3JOb2RlIGNyZWF0ZUR5bmFtaWNzQ29tcHJlc3NvcigpOworICAgIFtNYXlU
aHJvd0V4Y2VwdGlvbl0gQW5hbHlzZXJOb2RlIGNyZWF0ZUFuYWx5c2VyKCk7CisgICAgW01heVRo
cm93RXhjZXB0aW9uXSBTY3JpcHRQcm9jZXNzb3JOb2RlIGNyZWF0ZVNjcmlwdFByb2Nlc3Nvcihv
cHRpb25hbCB1bnNpZ25lZCBsb25nIGJ1ZmZlclNpemUgPSAwLCBvcHRpb25hbCB1bnNpZ25lZCBs
b25nIG51bWJlck9mSW5wdXRDaGFubmVscyA9IDIsIG9wdGlvbmFsIHVuc2lnbmVkIGxvbmcgbnVt
YmVyT2ZPdXRwdXRDaGFubmVscyA9IDIpOworICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gT3NjaWxs
YXRvck5vZGUgY3JlYXRlT3NjaWxsYXRvcigpOworICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gUGVy
aW9kaWNXYXZlIGNyZWF0ZVBlcmlvZGljV2F2ZShGbG9hdDMyQXJyYXkgcmVhbCwgRmxvYXQzMkFy
cmF5IGltYWcpOworCisgICAgLy8gQ2hhbm5lbCBzcGxpdHRpbmcgYW5kIG1lcmdpbmcKKyAgICBb
TWF5VGhyb3dFeGNlcHRpb25dIENoYW5uZWxTcGxpdHRlck5vZGUgY3JlYXRlQ2hhbm5lbFNwbGl0
dGVyKG9wdGlvbmFsIHVuc2lnbmVkIGxvbmcgbnVtYmVyT2ZPdXRwdXRzID0gNik7CisgICAgW01h
eVRocm93RXhjZXB0aW9uXSBDaGFubmVsTWVyZ2VyTm9kZSBjcmVhdGVDaGFubmVsTWVyZ2VyKG9w
dGlvbmFsIHVuc2lnbmVkIGxvbmcgbnVtYmVyT2ZJbnB1dHMgPSA2KTsKKworICAgIC8vIE9mZmxp
bmUgcmVuZGVyaW5nCisgICAgLy8gdm9pZCBwcmVwYXJlT2ZmbGluZUJ1ZmZlclJlbmRlcmluZyh1
bnNpZ25lZCBsb25nIG51bWJlck9mQ2hhbm5lbHMsIHVuc2lnbmVkIGxvbmcgbnVtYmVyT2ZGcmFt
ZXMsIHVucmVzdHJpY3RlZCBmbG9hdCBzYW1wbGVSYXRlKTsKKyAgICBhdHRyaWJ1dGUgRXZlbnRI
YW5kbGVyIG9uY29tcGxldGU7CisgICAgdm9pZCBzdGFydFJlbmRlcmluZygpOworfTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vV2ViS2l0QXVkaW9QYW5uZXJO
b2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vV2ViS2l0QXVkaW9QYW5u
ZXJOb2RlLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uMjU4ZjQ1
ZTdjZmQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlv
L1dlYktpdEF1ZGlvUGFubmVyTm9kZS5jcHAKQEAgLTAsMCArMSwzNjMgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTAsIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiAgUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAq
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTgor
ICogQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTCisgKiBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiV2ViS2l0QXVkaW9QYW5uZXJOb2RlLmgi
CisKKyNpZiBFTkFCTEUoV0VCX0FVRElPKQorCisjaW5jbHVkZSAiQXVkaW9CdWZmZXJTb3VyY2VO
b2RlLmgiCisjaW5jbHVkZSAiQXVkaW9CdXMuaCIKKyNpbmNsdWRlICJBdWRpb0NvbnRleHQuaCIK
KyNpbmNsdWRlICJBdWRpb05vZGVJbnB1dC5oIgorI2luY2x1ZGUgIkF1ZGlvTm9kZU91dHB1dC5o
IgorI2luY2x1ZGUgIkhSVEZEYXRhYmFzZUxvYWRlci5oIgorI2luY2x1ZGUgIkhSVEZQYW5uZXIu
aCIKKyNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCisjaW5jbHVkZSA8d3RmL0lz
b01hbGxvY0lubGluZXMuaD4KKyNpbmNsdWRlIDx3dGYvTWF0aEV4dHJhcy5oPgorCituYW1lc3Bh
Y2UgV2ViQ29yZSB7CisKK1dURl9NQUtFX0lTT19BTExPQ0FURURfSU1QTChXZWJLaXRBdWRpb1Bh
bm5lck5vZGUpOworCitzdGF0aWMgdm9pZCBmaXhOQU5zKGRvdWJsZSAmeCkKK3sKKyAgICBpZiAo
c3RkOjppc25hbih4KSB8fCBzdGQ6OmlzaW5mKHgpKQorICAgICAgICB4ID0gMC4wOworfQorCitX
ZWJLaXRBdWRpb1Bhbm5lck5vZGU6OldlYktpdEF1ZGlvUGFubmVyTm9kZShXZWJLaXRBdWRpb0Nv
bnRleHQmIGNvbnRleHQsIGZsb2F0IHNhbXBsZVJhdGUpCisgICAgOiBQYW5uZXJOb2RlQmFzZShj
b250ZXh0LCBzYW1wbGVSYXRlKQorICAgICwgbV9wYW5uaW5nTW9kZWwoUGFubmluZ01vZGVsVHlw
ZTo6SFJURikKKyAgICAsIG1fbGFzdEdhaW4oLTEuMCkKKyAgICAsIG1fY29ubmVjdGlvbkNvdW50
KDApCit7CisgICAgc2V0Tm9kZVR5cGUoTm9kZVR5cGVQYW5uZXIpOworCisgICAgLy8gTG9hZCB0
aGUgSFJURiBkYXRhYmFzZSBhc3luY2hyb25vdXNseSBzbyB3ZSBkb24ndCBibG9jayB0aGUgSmF2
YXNjcmlwdCB0aHJlYWQgd2hpbGUgY3JlYXRpbmcgdGhlIEhSVEYgZGF0YWJhc2UuCisgICAgbV9o
cnRmRGF0YWJhc2VMb2FkZXIgPSBIUlRGRGF0YWJhc2VMb2FkZXI6OmNyZWF0ZUFuZExvYWRBc3lu
Y2hyb25vdXNseUlmTmVjZXNzYXJ5KGNvbnRleHQuc2FtcGxlUmF0ZSgpKTsKKworICAgIGFkZElu
cHV0KG1ha2VVbmlxdWU8QXVkaW9Ob2RlSW5wdXQ+KHRoaXMpKTsKKyAgICBhZGRPdXRwdXQobWFr
ZVVuaXF1ZTxBdWRpb05vZGVPdXRwdXQ+KHRoaXMsIDIpKTsKKworICAgIC8vIE5vZGUtc3BlY2lm
aWMgZGVmYXVsdCBtaXhpbmcgcnVsZXMuCisgICAgbV9jaGFubmVsQ291bnQgPSAyOworICAgIG1f
Y2hhbm5lbENvdW50TW9kZSA9IENsYW1wZWRNYXg7CisgICAgbV9jaGFubmVsSW50ZXJwcmV0YXRp
b24gPSBBdWRpb0J1czo6U3BlYWtlcnM7CisKKyAgICBtX2Rpc3RhbmNlR2FpbiA9IEF1ZGlvUGFy
YW06OmNyZWF0ZShjb250ZXh0LCAiZGlzdGFuY2VHYWluIiwgMS4wLCAwLjAsIDEuMCk7CisgICAg
bV9jb25lR2FpbiA9IEF1ZGlvUGFyYW06OmNyZWF0ZShjb250ZXh0LCAiY29uZUdhaW4iLCAxLjAs
IDAuMCwgMS4wKTsKKworICAgIG1fcG9zaXRpb24gPSBGbG9hdFBvaW50M0QoMCwgMCwgMCk7Cisg
ICAgbV9vcmllbnRhdGlvbiA9IEZsb2F0UG9pbnQzRCgxLCAwLCAwKTsKKyAgICBtX3ZlbG9jaXR5
ID0gRmxvYXRQb2ludDNEKDAsIDAsIDApOworCisgICAgaW5pdGlhbGl6ZSgpOworfQorCitXZWJL
aXRBdWRpb1Bhbm5lck5vZGU6On5XZWJLaXRBdWRpb1Bhbm5lck5vZGUoKQoreworICAgIHVuaW5p
dGlhbGl6ZSgpOworfQorCit2b2lkIFdlYktpdEF1ZGlvUGFubmVyTm9kZTo6cHVsbElucHV0cyhz
aXplX3QgZnJhbWVzVG9Qcm9jZXNzKQoreworICAgIC8vIFdlIG92ZXJyaWRlIHB1bGxJbnB1dHMo
KSwgc28gd2UgY2FuIGRldGVjdCBuZXcgQXVkaW9Tb3VyY2VOb2RlcyB3aGljaCBoYXZlIGNvbm5l
Y3RlZCB0byB1cyB3aGVuIG5ldyBjb25uZWN0aW9ucyBhcmUgbWFkZS4KKyAgICAvLyBUaGVzZSBB
dWRpb1NvdXJjZU5vZGVzIG5lZWQgdG8gYmUgbWFkZSBhd2FyZSBvZiBvdXIgZXhpc3RlbmNlIGlu
IG9yZGVyIHRvIGhhbmRsZSBkb3BwbGVyIHNoaWZ0IHBpdGNoIGNoYW5nZXMuCisgICAgaWYgKG1f
Y29ubmVjdGlvbkNvdW50ICE9IGNvbnRleHQoKS5jb25uZWN0aW9uQ291bnQoKSkgeworICAgICAg
ICBtX2Nvbm5lY3Rpb25Db3VudCA9IGNvbnRleHQoKS5jb25uZWN0aW9uQ291bnQoKTsKKworICAg
ICAgICAvLyBSZWN1cnNpdmVseSBnbyB0aHJvdWdoIGFsbCBub2RlcyBjb25uZWN0ZWQgdG8gdXMu
CisgICAgICAgIEhhc2hTZXQ8QXVkaW9Ob2RlKj4gdmlzaXRlZE5vZGVzOworICAgICAgICBub3Rp
ZnlBdWRpb1NvdXJjZXNDb25uZWN0ZWRUb05vZGUodGhpcywgdmlzaXRlZE5vZGVzKTsKKyAgICB9
CisKKyAgICBBdWRpb05vZGU6OnB1bGxJbnB1dHMoZnJhbWVzVG9Qcm9jZXNzKTsKK30KKwordm9p
ZCBXZWJLaXRBdWRpb1Bhbm5lck5vZGU6OnByb2Nlc3Moc2l6ZV90IGZyYW1lc1RvUHJvY2VzcykK
K3sKKyAgICBBdWRpb0J1cyogZGVzdGluYXRpb24gPSBvdXRwdXQoMCktPmJ1cygpOworCisgICAg
aWYgKCFpc0luaXRpYWxpemVkKCkgfHwgIWlucHV0KDApLT5pc0Nvbm5lY3RlZCgpIHx8ICFtX3Bh
bm5lci5nZXQoKSkgeworICAgICAgICBkZXN0aW5hdGlvbi0+emVybygpOworICAgICAgICByZXR1
cm47CisgICAgfQorCisgICAgQXVkaW9CdXMqIHNvdXJjZSA9IGlucHV0KDApLT5idXMoKTsKKyAg
ICBpZiAoIXNvdXJjZSkgeworICAgICAgICBkZXN0aW5hdGlvbi0+emVybygpOworICAgICAgICBy
ZXR1cm47CisgICAgfQorCisgICAgLy8gSFJURkRhdGFiYXNlIHNob3VsZCBiZSBsb2FkZWQgYmVm
b3JlIHByb2NlZWRpbmcgZm9yIG9mZmxpbmUgYXVkaW8gY29udGV4dCB3aGVuIHBhbm5pbmdNb2Rl
bCgpIGlzICJIUlRGIi4KKyAgICBpZiAocGFubmluZ01vZGVsKCkgPT0gUGFubmluZ01vZGVsVHlw
ZTo6SFJURiAmJiAhbV9ocnRmRGF0YWJhc2VMb2FkZXItPmlzTG9hZGVkKCkpIHsKKyAgICAgICAg
aWYgKGNvbnRleHQoKS5pc09mZmxpbmVDb250ZXh0KCkpCisgICAgICAgICAgICBtX2hydGZEYXRh
YmFzZUxvYWRlci0+d2FpdEZvckxvYWRlclRocmVhZENvbXBsZXRpb24oKTsKKyAgICAgICAgZWxz
ZSB7CisgICAgICAgICAgICBkZXN0aW5hdGlvbi0+emVybygpOworICAgICAgICAgICAgcmV0dXJu
OworICAgICAgICB9CisgICAgfQorCisgICAgLy8gVGhlIGF1ZGlvIHRocmVhZCBjYW4ndCBibG9j
ayBvbiB0aGlzIGxvY2ssIHNvIHdlIHVzZSBzdGQ6OnRyeV90b19sb2NrIGluc3RlYWQuCisgICAg
c3RkOjp1bmlxdWVfbG9jazxMb2NrPiBsb2NrKG1fcGFubmVyTXV0ZXgsIHN0ZDo6dHJ5X3RvX2xv
Y2spOworICAgIGlmICghbG9jay5vd25zX2xvY2soKSkgeworICAgICAgICAvLyBUb28gYmFkIC0g
VGhlIHRyeV9sb2NrKCkgZmFpbGVkLiBXZSBtdXN0IGJlIGluIHRoZSBtaWRkbGUgb2YgY2hhbmdp
bmcgdGhlIHBhbm5lci4KKyAgICAgICAgZGVzdGluYXRpb24tPnplcm8oKTsKKyAgICAgICAgcmV0
dXJuOworICAgIH0KKworICAgIC8vIEFwcGx5IHRoZSBwYW5uaW5nIGVmZmVjdC4KKyAgICBkb3Vi
bGUgYXppbXV0aDsKKyAgICBkb3VibGUgZWxldmF0aW9uOworICAgIGdldEF6aW11dGhFbGV2YXRp
b24oJmF6aW11dGgsICZlbGV2YXRpb24pOworICAgIG1fcGFubmVyLT5wYW4oYXppbXV0aCwgZWxl
dmF0aW9uLCBzb3VyY2UsIGRlc3RpbmF0aW9uLCBmcmFtZXNUb1Byb2Nlc3MpOworCisgICAgLy8g
R2V0IHRoZSBkaXN0YW5jZSBhbmQgY29uZSBnYWluLgorICAgIGRvdWJsZSB0b3RhbEdhaW4gPSBk
aXN0YW5jZUNvbmVHYWluKCk7CisKKyAgICAvLyBTbmFwIHRvIGRlc2lyZWQgZ2FpbiBhdCB0aGUg
YmVnaW5uaW5nLgorICAgIGlmIChtX2xhc3RHYWluID09IC0xLjApCisgICAgICAgIG1fbGFzdEdh
aW4gPSB0b3RhbEdhaW47CisKKyAgICAvLyBBcHBseSBnYWluIGluLXBsYWNlIHdpdGggZGUtemlw
cGVyaW5nLgorICAgIGRlc3RpbmF0aW9uLT5jb3B5V2l0aEdhaW5Gcm9tKCpkZXN0aW5hdGlvbiwg
Jm1fbGFzdEdhaW4sIHRvdGFsR2Fpbik7Cit9CisKK3ZvaWQgV2ViS2l0QXVkaW9QYW5uZXJOb2Rl
OjpyZXNldCgpCit7CisgICAgbV9sYXN0R2FpbiA9IC0xLjA7IC8vIGZvcmNlIHRvIHNuYXAgdG8g
aW5pdGlhbCBnYWluCisgICAgaWYgKG1fcGFubmVyLmdldCgpKQorICAgICAgICBtX3Bhbm5lci0+
cmVzZXQoKTsKK30KKwordm9pZCBXZWJLaXRBdWRpb1Bhbm5lck5vZGU6OmluaXRpYWxpemUoKQor
eworICAgIGlmIChpc0luaXRpYWxpemVkKCkpCisgICAgICAgIHJldHVybjsKKworICAgIG1fcGFu
bmVyID0gUGFubmVyOjpjcmVhdGUobV9wYW5uaW5nTW9kZWwsIHNhbXBsZVJhdGUoKSwgbV9ocnRm
RGF0YWJhc2VMb2FkZXIuZ2V0KCkpOworCisgICAgQXVkaW9Ob2RlOjppbml0aWFsaXplKCk7Cit9
CisKK3ZvaWQgV2ViS2l0QXVkaW9QYW5uZXJOb2RlOjp1bmluaXRpYWxpemUoKQoreworICAgIGlm
ICghaXNJbml0aWFsaXplZCgpKQorICAgICAgICByZXR1cm47CisKKyAgICBtX3Bhbm5lciA9IG51
bGxwdHI7CisgICAgQXVkaW9Ob2RlOjp1bmluaXRpYWxpemUoKTsKK30KKworQXVkaW9MaXN0ZW5l
ciogV2ViS2l0QXVkaW9QYW5uZXJOb2RlOjpsaXN0ZW5lcigpCit7CisgICAgcmV0dXJuIGNvbnRl
eHQoKS5saXN0ZW5lcigpOworfQorCit2b2lkIFdlYktpdEF1ZGlvUGFubmVyTm9kZTo6c2V0UGFu
bmluZ01vZGVsKFBhbm5pbmdNb2RlbFR5cGUgbW9kZWwpCit7CisgICAgaWYgKCFtX3Bhbm5lci5n
ZXQoKSB8fCBtb2RlbCAhPSBtX3Bhbm5pbmdNb2RlbCkgeworICAgICAgICAvLyBUaGlzIHN5bmNo
cm9uaXplcyB3aXRoIHByb2Nlc3MoKS4KKyAgICAgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayht
X3Bhbm5lck11dGV4KTsKKworICAgICAgICBtX3Bhbm5lciA9IFBhbm5lcjo6Y3JlYXRlKG1vZGVs
LCBzYW1wbGVSYXRlKCksIG1faHJ0ZkRhdGFiYXNlTG9hZGVyLmdldCgpKTsKKyAgICAgICAgbV9w
YW5uaW5nTW9kZWwgPSBtb2RlbDsKKyAgICB9Cit9CisKK0Rpc3RhbmNlTW9kZWxUeXBlIFdlYktp
dEF1ZGlvUGFubmVyTm9kZTo6ZGlzdGFuY2VNb2RlbCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIGNv
bnN0X2Nhc3Q8V2ViS2l0QXVkaW9QYW5uZXJOb2RlKj4odGhpcyktPm1fZGlzdGFuY2VFZmZlY3Qu
bW9kZWwoKTsKK30KKwordm9pZCBXZWJLaXRBdWRpb1Bhbm5lck5vZGU6OnNldERpc3RhbmNlTW9k
ZWwoRGlzdGFuY2VNb2RlbFR5cGUgbW9kZWwpCit7CisgICAgbV9kaXN0YW5jZUVmZmVjdC5zZXRN
b2RlbChtb2RlbCwgdHJ1ZSk7Cit9CisKK3ZvaWQgV2ViS2l0QXVkaW9QYW5uZXJOb2RlOjpnZXRB
emltdXRoRWxldmF0aW9uKGRvdWJsZSogb3V0QXppbXV0aCwgZG91YmxlKiBvdXRFbGV2YXRpb24p
Cit7CisgICAgLy8gRklYTUU6IHdlIHNob3VsZCBjYWNoZSBhemltdXRoIGFuZCBlbGV2YXRpb24g
KGlmIHBvc3NpYmxlKSwgc28gd2Ugb25seSByZS1jYWxjdWxhdGUgaWYgYSBjaGFuZ2UgaGFzIGJl
ZW4gbWFkZS4KKworICAgIGRvdWJsZSBhemltdXRoID0gMC4wOworCisgICAgLy8gQ2FsY3VsYXRl
IHRoZSBzb3VyY2UtbGlzdGVuZXIgdmVjdG9yCisgICAgRmxvYXRQb2ludDNEIGxpc3RlbmVyUG9z
aXRpb24gPSBsaXN0ZW5lcigpLT5wb3NpdGlvbigpOworICAgIEZsb2F0UG9pbnQzRCBzb3VyY2VM
aXN0ZW5lciA9IHBvc2l0aW9uKCkgLSBsaXN0ZW5lclBvc2l0aW9uOworCisgICAgaWYgKHNvdXJj
ZUxpc3RlbmVyLmlzWmVybygpKSB7CisgICAgICAgIC8vIGRlZ2VuZXJhdGUgY2FzZSBpZiBzb3Vy
Y2UgYW5kIGxpc3RlbmVyIGFyZSBhdCB0aGUgc2FtZSBwb2ludAorICAgICAgICAqb3V0QXppbXV0
aCA9IDAuMDsKKyAgICAgICAgKm91dEVsZXZhdGlvbiA9IDAuMDsKKyAgICAgICAgcmV0dXJuOwor
ICAgIH0KKworICAgIHNvdXJjZUxpc3RlbmVyLm5vcm1hbGl6ZSgpOworCisgICAgLy8gQWxpZ24g
YXhlcworICAgIEZsb2F0UG9pbnQzRCBsaXN0ZW5lckZyb250ID0gbGlzdGVuZXIoKS0+b3JpZW50
YXRpb24oKTsKKyAgICBGbG9hdFBvaW50M0QgbGlzdGVuZXJVcCA9IGxpc3RlbmVyKCktPnVwVmVj
dG9yKCk7CisgICAgRmxvYXRQb2ludDNEIGxpc3RlbmVyUmlnaHQgPSBsaXN0ZW5lckZyb250LmNy
b3NzKGxpc3RlbmVyVXApOworICAgIGxpc3RlbmVyUmlnaHQubm9ybWFsaXplKCk7CisKKyAgICBG
bG9hdFBvaW50M0QgbGlzdGVuZXJGcm9udE5vcm0gPSBsaXN0ZW5lckZyb250OworICAgIGxpc3Rl
bmVyRnJvbnROb3JtLm5vcm1hbGl6ZSgpOworCisgICAgRmxvYXRQb2ludDNEIHVwID0gbGlzdGVu
ZXJSaWdodC5jcm9zcyhsaXN0ZW5lckZyb250Tm9ybSk7CisKKyAgICBmbG9hdCB1cFByb2plY3Rp
b24gPSBzb3VyY2VMaXN0ZW5lci5kb3QodXApOworCisgICAgRmxvYXRQb2ludDNEIHByb2plY3Rl
ZFNvdXJjZSA9IHNvdXJjZUxpc3RlbmVyIC0gdXBQcm9qZWN0aW9uICogdXA7CisgICAgcHJvamVj
dGVkU291cmNlLm5vcm1hbGl6ZSgpOworCisgICAgYXppbXV0aCA9IDE4MC4wICogYWNvcyhwcm9q
ZWN0ZWRTb3VyY2UuZG90KGxpc3RlbmVyUmlnaHQpKSAvIHBpRG91YmxlOworICAgIGZpeE5BTnMo
YXppbXV0aCk7IC8vIGF2b2lkIGlsbGVnYWwgdmFsdWVzCisKKyAgICAvLyBTb3VyY2UgIGluIGZy
b250IG9yIGJlaGluZCB0aGUgbGlzdGVuZXIKKyAgICBkb3VibGUgZnJvbnRCYWNrID0gcHJvamVj
dGVkU291cmNlLmRvdChsaXN0ZW5lckZyb250Tm9ybSk7CisgICAgaWYgKGZyb250QmFjayA8IDAu
MCkKKyAgICAgICAgYXppbXV0aCA9IDM2MC4wIC0gYXppbXV0aDsKKworICAgIC8vIE1ha2UgYXpp
bXV0aCByZWxhdGl2ZSB0byAiZnJvbnQiIGFuZCBub3QgInJpZ2h0IiBsaXN0ZW5lciB2ZWN0b3IK
KyAgICBpZiAoKGF6aW11dGggPj0gMC4wKSAmJiAoYXppbXV0aCA8PSAyNzAuMCkpCisgICAgICAg
IGF6aW11dGggPSA5MC4wIC0gYXppbXV0aDsKKyAgICBlbHNlCisgICAgICAgIGF6aW11dGggPSA0
NTAuMCAtIGF6aW11dGg7CisKKyAgICAvLyBFbGV2YXRpb24KKyAgICBkb3VibGUgZWxldmF0aW9u
ID0gOTAuMCAtIDE4MC4wICogYWNvcyhzb3VyY2VMaXN0ZW5lci5kb3QodXApKSAvIHBpRG91Ymxl
OworICAgIGZpeE5BTnMoZWxldmF0aW9uKTsgLy8gYXZvaWQgaWxsZWdhbCB2YWx1ZXMKKworICAg
IGlmIChlbGV2YXRpb24gPiA5MC4wKQorICAgICAgICBlbGV2YXRpb24gPSAxODAuMCAtIGVsZXZh
dGlvbjsKKyAgICBlbHNlIGlmIChlbGV2YXRpb24gPCAtOTAuMCkKKyAgICAgICAgZWxldmF0aW9u
ID0gLTE4MC4wIC0gZWxldmF0aW9uOworCisgICAgaWYgKG91dEF6aW11dGgpCisgICAgICAgICpv
dXRBemltdXRoID0gYXppbXV0aDsKKyAgICBpZiAob3V0RWxldmF0aW9uKQorICAgICAgICAqb3V0
RWxldmF0aW9uID0gZWxldmF0aW9uOworfQorCitmbG9hdCBXZWJLaXRBdWRpb1Bhbm5lck5vZGU6
OmRvcHBsZXJSYXRlKCkKK3sKKyAgICBkb3VibGUgZG9wcGxlclNoaWZ0ID0gMS4wOworCisgICAg
Ly8gRklYTUU6IG9wdGltaXplIGZvciBjYXNlIHdoZW4gbmVpdGhlciBzb3VyY2Ugbm9yIGxpc3Rl
bmVyIGhhcyBjaGFuZ2VkLi4uCisgICAgZG91YmxlIGRvcHBsZXJGYWN0b3IgPSBsaXN0ZW5lcigp
LT5kb3BwbGVyRmFjdG9yKCk7CisKKyAgICBpZiAoZG9wcGxlckZhY3RvciA+IDAuMCkgeworICAg
ICAgICBkb3VibGUgc3BlZWRPZlNvdW5kID0gbGlzdGVuZXIoKS0+c3BlZWRPZlNvdW5kKCk7CisK
KyAgICAgICAgY29uc3QgRmxvYXRQb2ludDNEICZzb3VyY2VWZWxvY2l0eSA9IG1fdmVsb2NpdHk7
CisgICAgICAgIGNvbnN0IEZsb2F0UG9pbnQzRCAmbGlzdGVuZXJWZWxvY2l0eSA9IGxpc3RlbmVy
KCktPnZlbG9jaXR5KCk7CisKKyAgICAgICAgLy8gRG9uJ3QgYm90aGVyIGlmIGJvdGggc291cmNl
IGFuZCBsaXN0ZW5lciBoYXZlIG5vIHZlbG9jaXR5CisgICAgICAgIGJvb2wgc291cmNlSGFzVmVs
b2NpdHkgPSAhc291cmNlVmVsb2NpdHkuaXNaZXJvKCk7CisgICAgICAgIGJvb2wgbGlzdGVuZXJI
YXNWZWxvY2l0eSA9ICFsaXN0ZW5lclZlbG9jaXR5LmlzWmVybygpOworCisgICAgICAgIGlmIChz
b3VyY2VIYXNWZWxvY2l0eSB8fCBsaXN0ZW5lckhhc1ZlbG9jaXR5KSB7CisgICAgICAgICAgICAv
LyBDYWxjdWxhdGUgdGhlIHNvdXJjZSB0byBsaXN0ZW5lciB2ZWN0b3IKKyAgICAgICAgICAgIEZs
b2F0UG9pbnQzRCBsaXN0ZW5lclBvc2l0aW9uID0gbGlzdGVuZXIoKS0+cG9zaXRpb24oKTsKKyAg
ICAgICAgICAgIEZsb2F0UG9pbnQzRCBzb3VyY2VUb0xpc3RlbmVyID0gcG9zaXRpb24oKSAtIGxp
c3RlbmVyUG9zaXRpb247CisKKyAgICAgICAgICAgIGRvdWJsZSBzb3VyY2VMaXN0ZW5lck1hZ25p
dHVkZSA9IHNvdXJjZVRvTGlzdGVuZXIubGVuZ3RoKCk7CisKKyAgICAgICAgICAgIGRvdWJsZSBs
aXN0ZW5lclByb2plY3Rpb24gPSBzb3VyY2VUb0xpc3RlbmVyLmRvdChsaXN0ZW5lclZlbG9jaXR5
KSAvIHNvdXJjZUxpc3RlbmVyTWFnbml0dWRlOworICAgICAgICAgICAgZG91YmxlIHNvdXJjZVBy
b2plY3Rpb24gPSBzb3VyY2VUb0xpc3RlbmVyLmRvdChzb3VyY2VWZWxvY2l0eSkgLyBzb3VyY2VM
aXN0ZW5lck1hZ25pdHVkZTsKKworICAgICAgICAgICAgbGlzdGVuZXJQcm9qZWN0aW9uID0gLWxp
c3RlbmVyUHJvamVjdGlvbjsKKyAgICAgICAgICAgIHNvdXJjZVByb2plY3Rpb24gPSAtc291cmNl
UHJvamVjdGlvbjsKKworICAgICAgICAgICAgZG91YmxlIHNjYWxlZFNwZWVkT2ZTb3VuZCA9IHNw
ZWVkT2ZTb3VuZCAvIGRvcHBsZXJGYWN0b3I7CisgICAgICAgICAgICBsaXN0ZW5lclByb2plY3Rp
b24gPSBzdGQ6Om1pbihsaXN0ZW5lclByb2plY3Rpb24sIHNjYWxlZFNwZWVkT2ZTb3VuZCk7Cisg
ICAgICAgICAgICBzb3VyY2VQcm9qZWN0aW9uID0gc3RkOjptaW4oc291cmNlUHJvamVjdGlvbiwg
c2NhbGVkU3BlZWRPZlNvdW5kKTsKKworICAgICAgICAgICAgZG9wcGxlclNoaWZ0ID0gKChzcGVl
ZE9mU291bmQgLSBkb3BwbGVyRmFjdG9yICogbGlzdGVuZXJQcm9qZWN0aW9uKSAvIChzcGVlZE9m
U291bmQgLSBkb3BwbGVyRmFjdG9yICogc291cmNlUHJvamVjdGlvbikpOworICAgICAgICAgICAg
Zml4TkFOcyhkb3BwbGVyU2hpZnQpOyAvLyBhdm9pZCBpbGxlZ2FsIHZhbHVlcworCisgICAgICAg
ICAgICAvLyBMaW1pdCB0aGUgcGl0Y2ggc2hpZnRpbmcgdG8gNCBvY3RhdmVzIHVwIGFuZCAzIG9j
dGF2ZXMgZG93bi4KKyAgICAgICAgICAgIGlmIChkb3BwbGVyU2hpZnQgPiAxNi4wKQorICAgICAg
ICAgICAgICAgIGRvcHBsZXJTaGlmdCA9IDE2LjA7CisgICAgICAgICAgICBlbHNlIGlmIChkb3Bw
bGVyU2hpZnQgPCAwLjEyNSkKKyAgICAgICAgICAgICAgICBkb3BwbGVyU2hpZnQgPSAwLjEyNTsK
KyAgICAgICAgfQorICAgIH0KKworICAgIHJldHVybiBzdGF0aWNfY2FzdDxmbG9hdD4oZG9wcGxl
clNoaWZ0KTsKK30KKworZmxvYXQgV2ViS2l0QXVkaW9QYW5uZXJOb2RlOjpkaXN0YW5jZUNvbmVH
YWluKCkKK3sKKyAgICBGbG9hdFBvaW50M0QgbGlzdGVuZXJQb3NpdGlvbiA9IGxpc3RlbmVyKCkt
PnBvc2l0aW9uKCk7CisgICAgRmxvYXRQb2ludDNEIHNvdXJjZVBvc2l0aW9uID0gcG9zaXRpb24o
KTsKKworICAgIGRvdWJsZSBsaXN0ZW5lckRpc3RhbmNlID0gc291cmNlUG9zaXRpb24uZGlzdGFu
Y2VUbyhsaXN0ZW5lclBvc2l0aW9uKTsKKyAgICBkb3VibGUgZGlzdGFuY2VHYWluID0gbV9kaXN0
YW5jZUVmZmVjdC5nYWluKGxpc3RlbmVyRGlzdGFuY2UpOworCisgICAgbV9kaXN0YW5jZUdhaW4t
PnNldFZhbHVlKHN0YXRpY19jYXN0PGZsb2F0PihkaXN0YW5jZUdhaW4pKTsKKworICAgIC8vIEZJ
WE1FOiBjb3VsZCBvcHRpbWl6ZSBieSBjYWNoaW5nIGNvbmVHYWluCisgICAgZG91YmxlIGNvbmVH
YWluID0gbV9jb25lRWZmZWN0LmdhaW4oc291cmNlUG9zaXRpb24sIG1fb3JpZW50YXRpb24sIGxp
c3RlbmVyUG9zaXRpb24pOworCisgICAgbV9jb25lR2Fpbi0+c2V0VmFsdWUoc3RhdGljX2Nhc3Q8
ZmxvYXQ+KGNvbmVHYWluKSk7CisKKyAgICByZXR1cm4gZmxvYXQoZGlzdGFuY2VHYWluICogY29u
ZUdhaW4pOworfQorCit2b2lkIFdlYktpdEF1ZGlvUGFubmVyTm9kZTo6bm90aWZ5QXVkaW9Tb3Vy
Y2VzQ29ubmVjdGVkVG9Ob2RlKEF1ZGlvTm9kZSogbm9kZSwgSGFzaFNldDxBdWRpb05vZGUqPiYg
dmlzaXRlZE5vZGVzKQoreworICAgIEFTU0VSVChub2RlKTsKKyAgICBpZiAoIW5vZGUpCisgICAg
ICAgIHJldHVybjsKKworICAgIC8vIEZpcnN0IGNoZWNrIGlmIHRoaXMgbm9kZSBpcyBhbiBBdWRp
b0J1ZmZlclNvdXJjZU5vZGUuIElmIHNvLCBsZXQgaXQga25vdyBhYm91dCB1cyBzbyB0aGF0IGRv
cHBsZXIgc2hpZnQgcGl0Y2ggY2FuIGJlIHRha2VuIGludG8gYWNjb3VudC4KKyAgICBpZiAobm9k
ZS0+bm9kZVR5cGUoKSA9PSBOb2RlVHlwZUF1ZGlvQnVmZmVyU291cmNlKSB7CisgICAgICAgIEF1
ZGlvQnVmZmVyU291cmNlTm9kZSogYnVmZmVyU291cmNlTm9kZSA9IHJlaW50ZXJwcmV0X2Nhc3Q8
QXVkaW9CdWZmZXJTb3VyY2VOb2RlKj4obm9kZSk7CisgICAgICAgIGJ1ZmZlclNvdXJjZU5vZGUt
PnNldFBhbm5lck5vZGUodGhpcyk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgLy8gR28gdGhyb3Vn
aCBhbGwgaW5wdXRzIHRvIHRoaXMgbm9kZS4KKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsg
aSA8IG5vZGUtPm51bWJlck9mSW5wdXRzKCk7ICsraSkgeworICAgICAgICAgICAgQXVkaW9Ob2Rl
SW5wdXQqIGlucHV0ID0gbm9kZS0+aW5wdXQoaSk7CisKKyAgICAgICAgICAgIC8vIEZvciBlYWNo
IGlucHV0LCBnbyB0aHJvdWdoIGFsbCBvZiBpdHMgY29ubmVjdGlvbnMsIGxvb2tpbmcgZm9yIEF1
ZGlvQnVmZmVyU291cmNlTm9kZXMuCisgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGogPSAwOyBq
IDwgaW5wdXQtPm51bWJlck9mUmVuZGVyaW5nQ29ubmVjdGlvbnMoKTsgKytqKSB7CisgICAgICAg
ICAgICAgICAgQXVkaW9Ob2RlT3V0cHV0KiBjb25uZWN0ZWRPdXRwdXQgPSBpbnB1dC0+cmVuZGVy
aW5nT3V0cHV0KGopOworICAgICAgICAgICAgICAgIEF1ZGlvTm9kZSogY29ubmVjdGVkTm9kZSA9
IGNvbm5lY3RlZE91dHB1dC0+bm9kZSgpOworICAgICAgICAgICAgICAgIGlmICh2aXNpdGVkTm9k
ZXMuY29udGFpbnMoY29ubmVjdGVkTm9kZSkpCisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVl
OworCisgICAgICAgICAgICAgICAgdmlzaXRlZE5vZGVzLmFkZChjb25uZWN0ZWROb2RlKTsKKyAg
ICAgICAgICAgICAgICBub3RpZnlBdWRpb1NvdXJjZXNDb25uZWN0ZWRUb05vZGUoY29ubmVjdGVk
Tm9kZSwgdmlzaXRlZE5vZGVzKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KK30K
KworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKFdFQl9BVURJTykK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vV2ViS2l0QXVkaW9Q
YW5uZXJOb2RlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1dlYktpdEF1ZGlv
UGFubmVyTm9kZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi44OTc5
N2MzYzRjNQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVk
aW8vV2ViS2l0QXVkaW9QYW5uZXJOb2RlLmgKQEAgLTAsMCArMSwxNjAgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTAsIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiAgUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAq
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTgor
ICogQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTCisgKiBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShXRUJfQVVESU8pCisKKyNpbmNsdWRlICJBdWRp
b0xpc3RlbmVyLmgiCisjaW5jbHVkZSAiQXVkaW9Ob2RlLmgiCisjaW5jbHVkZSAiQXVkaW9QYXJh
bS5oIgorI2luY2x1ZGUgIkNvbmUuaCIKKyNpbmNsdWRlICJEaXN0YW5jZS5oIgorI2luY2x1ZGUg
IkZsb2F0UG9pbnQzRC5oIgorI2luY2x1ZGUgIlBhbm5lci5oIgorI2luY2x1ZGUgIlBhbm5lck5v
ZGUuaCIKKyNpbmNsdWRlICJXZWJLaXRBdWRpb0NvbnRleHQuaCIKKyNpbmNsdWRlIDxtZW1vcnk+
CisjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KKyNpbmNsdWRlIDx3dGYvTG9jay5oPgorCituYW1l
c3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIEhSVEZEYXRhYmFzZUxvYWRlcjsKKworLy8gUGFubmVy
Tm9kZSBpcyBhbiBBdWRpb05vZGUgd2l0aCBvbmUgaW5wdXQgYW5kIG9uZSBvdXRwdXQuCisvLyBJ
dCBwb3NpdGlvbnMgYSBzb3VuZCBpbiAzRCBzcGFjZSwgd2l0aCB0aGUgZXhhY3QgZWZmZWN0IGRl
cGVuZGVudCBvbiB0aGUgcGFubmluZyBtb2RlbC4KKy8vIEl0IGhhcyBhIHBvc2l0aW9uIGFuZCBh
biBvcmllbnRhdGlvbiBpbiAzRCBzcGFjZSB3aGljaCBpcyByZWxhdGl2ZSB0byB0aGUgcG9zaXRp
b24gYW5kIG9yaWVudGF0aW9uIG9mIHRoZSBjb250ZXh0J3MgQXVkaW9MaXN0ZW5lci4KKy8vIEEg
ZGlzdGFuY2UgZWZmZWN0IHdpbGwgYXR0ZW51YXRlIHRoZSBnYWluIGFzIHRoZSBwb3NpdGlvbiBt
b3ZlcyBhd2F5IGZyb20gdGhlIGxpc3RlbmVyLgorLy8gQSBjb25lIGVmZmVjdCB3aWxsIGF0dGVu
dWF0ZSB0aGUgZ2FpbiBhcyB0aGUgb3JpZW50YXRpb24gbW92ZXMgYXdheSBmcm9tIHRoZSBsaXN0
ZW5lci4KKy8vIEFsbCBvZiB0aGVzZSBlZmZlY3RzIGZvbGxvdyB0aGUgT3BlbkFMIHNwZWNpZmlj
YXRpb24gdmVyeSBjbG9zZWx5LgorCitjbGFzcyBXZWJLaXRBdWRpb1Bhbm5lck5vZGUgZmluYWwg
OiBwdWJsaWMgUGFubmVyTm9kZUJhc2UgeworICAgIFdURl9NQUtFX0lTT19BTExPQ0FURUQoV2Vi
S2l0QXVkaW9QYW5uZXJOb2RlKTsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUmVmPFdlYktpdEF1ZGlv
UGFubmVyTm9kZT4gY3JlYXRlKFdlYktpdEF1ZGlvQ29udGV4dCYgY29udGV4dCwgZmxvYXQgc2Ft
cGxlUmF0ZSkKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFdlYktpdEF1ZGlv
UGFubmVyTm9kZShjb250ZXh0LCBzYW1wbGVSYXRlKSk7CisgICAgfQorCisgICAgdmlydHVhbCB+
V2ViS2l0QXVkaW9QYW5uZXJOb2RlKCk7CisKKyAgICBXZWJLaXRBdWRpb0NvbnRleHQmIGNvbnRl
eHQoKSB7IHJldHVybiBkb3duY2FzdDxXZWJLaXRBdWRpb0NvbnRleHQ+KEF1ZGlvTm9kZTo6Y29u
dGV4dCgpKTsgfQorICAgIGNvbnN0IFdlYktpdEF1ZGlvQ29udGV4dCYgY29udGV4dCgpIGNvbnN0
IHsgcmV0dXJuIGRvd25jYXN0PFdlYktpdEF1ZGlvQ29udGV4dD4oQXVkaW9Ob2RlOjpjb250ZXh0
KCkpOyB9CisKKyAgICAvLyBBdWRpb05vZGUKKyAgICB2b2lkIHByb2Nlc3Moc2l6ZV90IGZyYW1l
c1RvUHJvY2Vzcykgb3ZlcnJpZGU7CisgICAgdm9pZCBwdWxsSW5wdXRzKHNpemVfdCBmcmFtZXNU
b1Byb2Nlc3MpIG92ZXJyaWRlOworICAgIHZvaWQgcmVzZXQoKSBvdmVycmlkZTsKKyAgICB2b2lk
IGluaXRpYWxpemUoKSBvdmVycmlkZTsKKyAgICB2b2lkIHVuaW5pdGlhbGl6ZSgpIG92ZXJyaWRl
OworCisgICAgLy8gTGlzdGVuZXIKKyAgICBBdWRpb0xpc3RlbmVyKiBsaXN0ZW5lcigpOworCisg
ICAgLy8gUGFubmluZyBtb2RlbAorICAgIFBhbm5pbmdNb2RlbFR5cGUgcGFubmluZ01vZGVsKCkg
Y29uc3QgeyByZXR1cm4gbV9wYW5uaW5nTW9kZWw7IH0KKyAgICB2b2lkIHNldFBhbm5pbmdNb2Rl
bChQYW5uaW5nTW9kZWxUeXBlKTsKKworICAgIC8vIFBvc2l0aW9uCisgICAgRmxvYXRQb2ludDNE
IHBvc2l0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9wb3NpdGlvbjsgfQorICAgIHZvaWQgc2V0UG9z
aXRpb24oZmxvYXQgeCwgZmxvYXQgeSwgZmxvYXQgeikgeyBtX3Bvc2l0aW9uID0gRmxvYXRQb2lu
dDNEKHgsIHksIHopOyB9CisKKyAgICAvLyBPcmllbnRhdGlvbgorICAgIEZsb2F0UG9pbnQzRCBv
cmllbnRhdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fb3JpZW50YXRpb247IH0KKyAgICB2b2lkIHNl
dE9yaWVudGF0aW9uKGZsb2F0IHgsIGZsb2F0IHksIGZsb2F0IHopIHsgbV9vcmllbnRhdGlvbiA9
IEZsb2F0UG9pbnQzRCh4LCB5LCB6KTsgfQorCisgICAgLy8gVmVsb2NpdHkKKyAgICBGbG9hdFBv
aW50M0QgdmVsb2NpdHkoKSBjb25zdCB7IHJldHVybiBtX3ZlbG9jaXR5OyB9CisgICAgdm9pZCBz
ZXRWZWxvY2l0eShmbG9hdCB4LCBmbG9hdCB5LCBmbG9hdCB6KSB7IG1fdmVsb2NpdHkgPSBGbG9h
dFBvaW50M0QoeCwgeSwgeik7IH0KKworICAgIC8vIERpc3RhbmNlIHBhcmFtZXRlcnMKKyAgICBE
aXN0YW5jZU1vZGVsVHlwZSBkaXN0YW5jZU1vZGVsKCkgY29uc3Q7CisgICAgdm9pZCBzZXREaXN0
YW5jZU1vZGVsKERpc3RhbmNlTW9kZWxUeXBlKTsKKworICAgIGRvdWJsZSByZWZEaXN0YW5jZSgp
IHsgcmV0dXJuIG1fZGlzdGFuY2VFZmZlY3QucmVmRGlzdGFuY2UoKTsgfQorICAgIHZvaWQgc2V0
UmVmRGlzdGFuY2UoZG91YmxlIHJlZkRpc3RhbmNlKSB7IG1fZGlzdGFuY2VFZmZlY3Quc2V0UmVm
RGlzdGFuY2UocmVmRGlzdGFuY2UpOyB9CisKKyAgICBkb3VibGUgbWF4RGlzdGFuY2UoKSB7IHJl
dHVybiBtX2Rpc3RhbmNlRWZmZWN0Lm1heERpc3RhbmNlKCk7IH0KKyAgICB2b2lkIHNldE1heERp
c3RhbmNlKGRvdWJsZSBtYXhEaXN0YW5jZSkgeyBtX2Rpc3RhbmNlRWZmZWN0LnNldE1heERpc3Rh
bmNlKG1heERpc3RhbmNlKTsgfQorCisgICAgZG91YmxlIHJvbGxvZmZGYWN0b3IoKSB7IHJldHVy
biBtX2Rpc3RhbmNlRWZmZWN0LnJvbGxvZmZGYWN0b3IoKTsgfQorICAgIHZvaWQgc2V0Um9sbG9m
ZkZhY3Rvcihkb3VibGUgcm9sbG9mZkZhY3RvcikgeyBtX2Rpc3RhbmNlRWZmZWN0LnNldFJvbGxv
ZmZGYWN0b3Iocm9sbG9mZkZhY3Rvcik7IH0KKworICAgIC8vIFNvdW5kIGNvbmVzIC0gYW5nbGVz
IGluIGRlZ3JlZXMKKyAgICBkb3VibGUgY29uZUlubmVyQW5nbGUoKSBjb25zdCB7IHJldHVybiBt
X2NvbmVFZmZlY3QuaW5uZXJBbmdsZSgpOyB9CisgICAgdm9pZCBzZXRDb25lSW5uZXJBbmdsZShk
b3VibGUgYW5nbGUpIHsgbV9jb25lRWZmZWN0LnNldElubmVyQW5nbGUoYW5nbGUpOyB9CisKKyAg
ICBkb3VibGUgY29uZU91dGVyQW5nbGUoKSBjb25zdCB7IHJldHVybiBtX2NvbmVFZmZlY3Qub3V0
ZXJBbmdsZSgpOyB9CisgICAgdm9pZCBzZXRDb25lT3V0ZXJBbmdsZShkb3VibGUgYW5nbGUpIHsg
bV9jb25lRWZmZWN0LnNldE91dGVyQW5nbGUoYW5nbGUpOyB9CisKKyAgICBkb3VibGUgY29uZU91
dGVyR2FpbigpIGNvbnN0IHsgcmV0dXJuIG1fY29uZUVmZmVjdC5vdXRlckdhaW4oKTsgfQorICAg
IHZvaWQgc2V0Q29uZU91dGVyR2Fpbihkb3VibGUgYW5nbGUpIHsgbV9jb25lRWZmZWN0LnNldE91
dGVyR2FpbihhbmdsZSk7IH0KKworICAgIHZvaWQgZ2V0QXppbXV0aEVsZXZhdGlvbihkb3VibGUq
IG91dEF6aW11dGgsIGRvdWJsZSogb3V0RWxldmF0aW9uKTsKKyAgICBmbG9hdCBkb3BwbGVyUmF0
ZSgpIGZpbmFsOworCisgICAgLy8gQWNjZXNzb3JzIGZvciBkeW5hbWljYWxseSBjYWxjdWxhdGVk
IGdhaW4gdmFsdWVzLgorICAgIEF1ZGlvUGFyYW0qIGRpc3RhbmNlR2FpbigpIHsgcmV0dXJuIG1f
ZGlzdGFuY2VHYWluLmdldCgpOyB9CisgICAgQXVkaW9QYXJhbSogY29uZUdhaW4oKSB7IHJldHVy
biBtX2NvbmVHYWluLmdldCgpOyB9CisKKyAgICBkb3VibGUgdGFpbFRpbWUoKSBjb25zdCBvdmVy
cmlkZSB7IHJldHVybiBtX3Bhbm5lciA/IG1fcGFubmVyLT50YWlsVGltZSgpIDogMDsgfQorICAg
IGRvdWJsZSBsYXRlbmN5VGltZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fcGFubmVyID8g
bV9wYW5uZXItPmxhdGVuY3lUaW1lKCkgOiAwOyB9CisKK3ByaXZhdGU6CisgICAgV2ViS2l0QXVk
aW9QYW5uZXJOb2RlKFdlYktpdEF1ZGlvQ29udGV4dCYsIGZsb2F0IHNhbXBsZVJhdGUpOworCisg
ICAgLy8gUmV0dXJucyB0aGUgY29tYmluZWQgZGlzdGFuY2UgYW5kIGNvbmUgZ2FpbiBhdHRlbnVh
dGlvbi4KKyAgICBmbG9hdCBkaXN0YW5jZUNvbmVHYWluKCk7CisKKyAgICAvLyBOb3RpZmllcyBh
bnkgQXVkaW9CdWZmZXJTb3VyY2VOb2RlcyBjb25uZWN0ZWQgdG8gdXMgZWl0aGVyIGRpcmVjdGx5
IG9yIGluZGlyZWN0bHkgYWJvdXQgb3VyIGV4aXN0ZW5jZS4KKyAgICAvLyBUaGlzIGlzIGluIG9y
ZGVyIHRvIGhhbmRsZSB0aGUgcGl0Y2ggY2hhbmdlIG5lY2Vzc2FyeSBmb3IgdGhlIGRvcHBsZXIg
c2hpZnQuCisgICAgdm9pZCBub3RpZnlBdWRpb1NvdXJjZXNDb25uZWN0ZWRUb05vZGUoQXVkaW9O
b2RlKiwgSGFzaFNldDxBdWRpb05vZGUqPiYgdmlzaXRlZE5vZGVzKTsKKworICAgIHN0ZDo6dW5p
cXVlX3B0cjxQYW5uZXI+IG1fcGFubmVyOworICAgIFBhbm5pbmdNb2RlbFR5cGUgbV9wYW5uaW5n
TW9kZWw7CisKKyAgICBGbG9hdFBvaW50M0QgbV9wb3NpdGlvbjsKKyAgICBGbG9hdFBvaW50M0Qg
bV9vcmllbnRhdGlvbjsKKyAgICBGbG9hdFBvaW50M0QgbV92ZWxvY2l0eTsKKworICAgIC8vIEdh
aW4KKyAgICBSZWZQdHI8QXVkaW9QYXJhbT4gbV9kaXN0YW5jZUdhaW47CisgICAgUmVmUHRyPEF1
ZGlvUGFyYW0+IG1fY29uZUdhaW47CisgICAgRGlzdGFuY2VFZmZlY3QgbV9kaXN0YW5jZUVmZmVj
dDsKKyAgICBDb25lRWZmZWN0IG1fY29uZUVmZmVjdDsKKyAgICBmbG9hdCBtX2xhc3RHYWluOwor
CisgICAgLy8gSFJURiBEYXRhYmFzZSBsb2FkZXIKKyAgICBSZWZQdHI8SFJURkRhdGFiYXNlTG9h
ZGVyPiBtX2hydGZEYXRhYmFzZUxvYWRlcjsKKworICAgIHVuc2lnbmVkIG1fY29ubmVjdGlvbkNv
dW50OworCisgICAgLy8gU3luY2hyb25pemUgcHJvY2VzcygpIGFuZCBzZXRQYW5uaW5nTW9kZWwo
KSB3aGljaCBjYW4gY2hhbmdlIHRoZSBwYW5uZXIuCisgICAgbXV0YWJsZSBMb2NrIG1fcGFubmVy
TXV0ZXg7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9XZWJLaXRBdWRpb1Bhbm5lck5vZGUu
aWRsIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9XZWJLaXRBdWRpb1Bhbm5lck5v
ZGUuaWRsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi44OGQyNjkxMGFl
MQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vV2Vi
S2l0QXVkaW9QYW5uZXJOb2RlLmlkbApAQCAtMCwwICsxLDQ5IEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDEwLCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBV
UlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
CisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04KKyAqIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUworICogU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworWwor
ICAgIENvbmRpdGlvbmFsPVdFQl9BVURJTywKKyAgICBKU0dlbmVyYXRlVG9KU09iamVjdCwKKyAg
ICBJbnRlcmZhY2VOYW1lPXdlYmtpdEF1ZGlvUGFubmVyTm9kZSwKK10gaW50ZXJmYWNlIFdlYktp
dEF1ZGlvUGFubmVyTm9kZSA6IEF1ZGlvTm9kZSB7CisgICAgLy8gRGVmYXVsdCBtb2RlbCBmb3Ig
c3RlcmVvIGlzIEhSVEYKKyAgICBhdHRyaWJ1dGUgUGFubmluZ01vZGVsVHlwZSBwYW5uaW5nTW9k
ZWw7CisKKyAgICAvLyBVc2VzIGEgM0QgY2FydGVzaWFuIGNvb3JkaW5hdGUgc3lzdGVtCisgICAg
dm9pZCBzZXRQb3NpdGlvbih1bnJlc3RyaWN0ZWQgZmxvYXQgeCwgdW5yZXN0cmljdGVkIGZsb2F0
IHksIHVucmVzdHJpY3RlZCBmbG9hdCB6KTsKKyAgICB2b2lkIHNldE9yaWVudGF0aW9uKHVucmVz
dHJpY3RlZCBmbG9hdCB4LCB1bnJlc3RyaWN0ZWQgZmxvYXQgeSwgdW5yZXN0cmljdGVkIGZsb2F0
IHopOworICAgIHZvaWQgc2V0VmVsb2NpdHkodW5yZXN0cmljdGVkIGZsb2F0IHgsIHVucmVzdHJp
Y3RlZCBmbG9hdCB5LCB1bnJlc3RyaWN0ZWQgZmxvYXQgeik7CisKKyAgICAvLyBEaXN0YW5jZSBt
b2RlbAorICAgIGF0dHJpYnV0ZSBEaXN0YW5jZU1vZGVsVHlwZSBkaXN0YW5jZU1vZGVsOworCisg
ICAgYXR0cmlidXRlIHVucmVzdHJpY3RlZCBkb3VibGUgcmVmRGlzdGFuY2U7CisgICAgYXR0cmli
dXRlIHVucmVzdHJpY3RlZCBkb3VibGUgbWF4RGlzdGFuY2U7CisgICAgYXR0cmlidXRlIHVucmVz
dHJpY3RlZCBkb3VibGUgcm9sbG9mZkZhY3RvcjsKKworICAgIC8vIERpcmVjdGlvbmFsIHNvdW5k
IGNvbmUKKyAgICBhdHRyaWJ1dGUgdW5yZXN0cmljdGVkIGRvdWJsZSBjb25lSW5uZXJBbmdsZTsK
KyAgICBhdHRyaWJ1dGUgdW5yZXN0cmljdGVkIGRvdWJsZSBjb25lT3V0ZXJBbmdsZTsKKyAgICBh
dHRyaWJ1dGUgdW5yZXN0cmljdGVkIGRvdWJsZSBjb25lT3V0ZXJHYWluOworfTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vV2ViS2l0T2ZmbGluZUF1ZGlvQ29u
dGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1dlYktpdE9mZmxpbmVB
dWRpb0NvbnRleHQuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi5k
OGUzOTlhMTRhMwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
YXVkaW8vV2ViS2l0T2ZmbGluZUF1ZGlvQ29udGV4dC5jcHAKQEAgLTAsMCArMSw2MiBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxMiwgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuICBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1Q
TElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OCisgKiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKKyAqIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2lmIEVOQUJMRShXRUJfQVVESU8pCisK
KyNpbmNsdWRlICJXZWJLaXRPZmZsaW5lQXVkaW9Db250ZXh0LmgiCisKKyNpbmNsdWRlICJBdWRp
b0J1ZmZlci5oIgorI2luY2x1ZGUgIkRvY3VtZW50LmgiCisjaW5jbHVkZSA8d3RmL0lzb01hbGxv
Y0lubGluZXMuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitXVEZfTUFLRV9JU09fQUxMT0NB
VEVEX0lNUEwoV2ViS2l0T2ZmbGluZUF1ZGlvQ29udGV4dCk7CisKK2lubGluZSBXZWJLaXRPZmZs
aW5lQXVkaW9Db250ZXh0OjpXZWJLaXRPZmZsaW5lQXVkaW9Db250ZXh0KERvY3VtZW50JiBkb2N1
bWVudCwgQXVkaW9CdWZmZXIqIHJlbmRlclRhcmdldCkKKyAgICA6IFdlYktpdEF1ZGlvQ29udGV4
dChkb2N1bWVudCwgcmVuZGVyVGFyZ2V0KQoreworfQorCitFeGNlcHRpb25PcjxSZWY8V2ViS2l0
T2ZmbGluZUF1ZGlvQ29udGV4dD4+IFdlYktpdE9mZmxpbmVBdWRpb0NvbnRleHQ6OmNyZWF0ZShT
Y3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCB1bnNpZ25lZCBudW1iZXJPZkNoYW5uZWxz
LCBzaXplX3QgbnVtYmVyT2ZGcmFtZXMsIGZsb2F0IHNhbXBsZVJhdGUpCit7CisgICAgLy8gRklY
TUU6IEFkZCBzdXBwb3J0IGZvciB3b3JrZXJzLgorICAgIGlmICghaXM8RG9jdW1lbnQ+KGNvbnRl
eHQpKQorICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgTm90U3VwcG9ydGVkRXJyb3IgfTsKKyAg
ICBpZiAoIW51bWJlck9mQ2hhbm5lbHMgfHwgbnVtYmVyT2ZDaGFubmVscyA+IDEwIHx8ICFudW1i
ZXJPZkZyYW1lcyB8fCAhaXNTYW1wbGVSYXRlUmFuZ2VHb29kKHNhbXBsZVJhdGUpKQorICAgICAg
ICByZXR1cm4gRXhjZXB0aW9uIHsgU3ludGF4RXJyb3IgfTsKKyAgICBhdXRvIHJlbmRlclRhcmdl
dCA9IEF1ZGlvQnVmZmVyOjpjcmVhdGUobnVtYmVyT2ZDaGFubmVscywgbnVtYmVyT2ZGcmFtZXMs
IHNhbXBsZVJhdGUpOworICAgIGlmICghcmVuZGVyVGFyZ2V0KQorICAgICAgICByZXR1cm4gRXhj
ZXB0aW9uIHsgU3ludGF4RXJyb3IgfTsKKworICAgIGF1dG8gYXVkaW9Db250ZXh0ID0gYWRvcHRS
ZWYoKm5ldyBXZWJLaXRPZmZsaW5lQXVkaW9Db250ZXh0KGRvd25jYXN0PERvY3VtZW50Pihjb250
ZXh0KSwgcmVuZGVyVGFyZ2V0LmdldCgpKSk7CisgICAgYXVkaW9Db250ZXh0LT5zdXNwZW5kSWZO
ZWVkZWQoKTsKKyAgICByZXR1cm4gYXVkaW9Db250ZXh0OworfQorCit9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoV0VCX0FVRElPKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9XZWJLaXRPZmZsaW5lQXVkaW9Db250ZXh0LmggYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1dlYktpdE9mZmxpbmVBdWRpb0NvbnRleHQu
aApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uYzI1NGVkNDFmZTAKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1dlYktpdE9m
ZmxpbmVBdWRpb0NvbnRleHQuaApAQCAtMCwwICsxLDQwIEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDEyLCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBP
U0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisg
KiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04KKyAqIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUworICogU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdt
YSBvbmNlCisKKyNpbmNsdWRlICJXZWJLaXRBdWRpb0NvbnRleHQuaCIKKworbmFtZXNwYWNlIFdl
YkNvcmUgeworCitjbGFzcyBXZWJLaXRPZmZsaW5lQXVkaW9Db250ZXh0IGZpbmFsIDogcHVibGlj
IFdlYktpdEF1ZGlvQ29udGV4dCB7CisgICAgV1RGX01BS0VfSVNPX0FMTE9DQVRFRChXZWJLaXRP
ZmZsaW5lQXVkaW9Db250ZXh0KTsKK3B1YmxpYzoKKyAgICBzdGF0aWMgRXhjZXB0aW9uT3I8UmVm
PFdlYktpdE9mZmxpbmVBdWRpb0NvbnRleHQ+PiBjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCYsIHVuc2lnbmVkIG51bWJlck9mQ2hhbm5lbHMsIHNpemVfdCBudW1iZXJPZkZyYW1lcywgZmxv
YXQgc2FtcGxlUmF0ZSk7CisKK3ByaXZhdGU6CisgICAgV2ViS2l0T2ZmbGluZUF1ZGlvQ29udGV4
dChEb2N1bWVudCYsIEF1ZGlvQnVmZmVyKiByZW5kZXJUYXJnZXQpOworfTsKKworfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRp
by9XZWJLaXRPZmZsaW5lQXVkaW9Db250ZXh0LmlkbCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViYXVkaW8vV2ViS2l0T2ZmbGluZUF1ZGlvQ29udGV4dC5pZGwKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAuLjU2YTY0OGJjMmE1Ci0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9XZWJLaXRPZmZsaW5lQXVkaW9Db250ZXh0Lmlk
bApAQCAtMCwwICsxLDMxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyLCBHb29nbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBB
TkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04KKyAqIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUworICogU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworWworICAgIENvbmRpdGlvbmFsPVdFQl9B
VURJTywKKyAgICBJbnRlcmZhY2VOYW1lPXdlYmtpdE9mZmxpbmVBdWRpb0NvbnRleHQsCisgICAg
SlNHZW5lcmF0ZVRvSlNPYmplY3QsCitdIGludGVyZmFjZSBXZWJLaXRPZmZsaW5lQXVkaW9Db250
ZXh0IDogV2ViS2l0QXVkaW9Db250ZXh0IHsKKyAgICBbQ2FsbFdpdGg9U2NyaXB0RXhlY3V0aW9u
Q29udGV4dCwgTWF5VGhyb3dFeGNlcHRpb25dIGNvbnN0cnVjdG9yKHVuc2lnbmVkIGxvbmcgbnVt
YmVyT2ZDaGFubmVscywgdW5zaWduZWQgbG9uZyBudW1iZXJPZkZyYW1lcywgdW5yZXN0cmljdGVk
IGZsb2F0IHNhbXBsZVJhdGUpOworfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1NvdXJj
ZXMudHh0IGIvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKaW5kZXggMmM1NmVkNTEzOWQuLjE0
OTU5YzM4MTUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dApAQCAtMjY5LDYgKzI2OSw5IEBAIE1vZHVsZXMvd2Vi
YXVkaW8vU2NyaXB0UHJvY2Vzc29yTm9kZS5jcHAKIE1vZHVsZXMvd2ViYXVkaW8vV2F2ZVNoYXBl
ckRTUEtlcm5lbC5jcHAKIE1vZHVsZXMvd2ViYXVkaW8vV2F2ZVNoYXBlck5vZGUuY3BwCiBNb2R1
bGVzL3dlYmF1ZGlvL1dhdmVTaGFwZXJQcm9jZXNzb3IuY3BwCitNb2R1bGVzL3dlYmF1ZGlvL1dl
YktpdEF1ZGlvQ29udGV4dC5jcHAKK01vZHVsZXMvd2ViYXVkaW8vV2ViS2l0QXVkaW9QYW5uZXJO
b2RlLmNwcAorTW9kdWxlcy93ZWJhdWRpby9XZWJLaXRPZmZsaW5lQXVkaW9Db250ZXh0LmNwcAog
CiBNb2R1bGVzL3dlYmF1dGhuL0F1dGhlbnRpY2F0b3JDb29yZGluYXRvci5jcHAKIE1vZHVsZXMv
d2ViYXV0aG4vQXV0aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNlLmNwcApAQCAtMjc0NCw2ICsy
NzQ3LDcgQEAgSlNBdWRpb0J1ZmZlckNhbGxiYWNrLmNwcAogSlNBdWRpb0J1ZmZlclNvdXJjZU5v
ZGUuY3BwCiBKU0F1ZGlvQ29uZmlndXJhdGlvbi5jcHAKIEpTQXVkaW9Db250ZXh0LmNwcAorSlNB
dWRpb0NvbnRleHRTdGF0ZS5jcHAKIEpTQXVkaW9EZXN0aW5hdGlvbk5vZGUuY3BwCiBKU0F1ZGlv
TGlzdGVuZXIuY3BwCiBKU0F1ZGlvTm9kZS5jcHAKQEAgLTI5MTQsNiArMjkxOCw3IEBAIEpTRGV2
aWNlTW90aW9uRXZlbnQuY3BwCiBKU0RldmljZU9yaWVudGF0aW9uRXZlbnQuY3BwCiBKU0Rldmlj
ZU9yaWVudGF0aW9uT3JNb3Rpb25QZXJtaXNzaW9uU3RhdGUuY3BwCiBKU0RldmljZU9yaWVudGF0
aW9uT3JNb3Rpb25FdmVudC5jcHAKK0pTRGlzdGFuY2VNb2RlbFR5cGUuY3BwCiBKU0RvY3VtZW50
LmNwcAogSlNEb2N1bWVudEFuZEVsZW1lbnRFdmVudEhhbmRsZXJzLmNwcAogSlNEb2N1bWVudEZy
YWdtZW50LmNwcApAQCAtMzIxMSw2ICszMjE2LDcgQEAgSlNPdmVyZmxvd0V2ZW50LmNwcAogSlNQ
YWdlVHJhbnNpdGlvbkV2ZW50LmNwcAogSlNQYWludFJlbmRlcmluZ0NvbnRleHQyRC5jcHAKIEpT
UGFubmVyTm9kZS5jcHAKK0pTUGFubmluZ01vZGVsVHlwZS5jcHAKIEpTUGFyZW50Tm9kZS5jcHAK
IEpTUGF0aDJELmNwcAogSlNQYXllckVycm9yRmllbGRzLmNwcApAQCAtMzU2Nyw3ICszNTczLDEw
IEBAIEpTV2ViR1BVU3dhcENoYWluLmNwcAogSlNXZWJHUFVUZXh0dXJlLmNwcAogSlNXZWJHUFVU
ZXh0dXJlVmlldy5jcHAKIEpTV2ViS2l0QW5pbWF0aW9uRXZlbnQuY3BwCitKU1dlYktpdEF1ZGlv
Q29udGV4dC5jcHAKK0pTV2ViS2l0QXVkaW9QYW5uZXJOb2RlLmNwcAogSlNXZWJLaXRDU1NNYXRy
aXguY3BwCitKU1dlYktpdE9mZmxpbmVBdWRpb0NvbnRleHQuY3BwCiBKU1dlYktpdFBsYXliYWNr
VGFyZ2V0QXZhaWxhYmlsaXR5RXZlbnQuY3BwCiBKU1dlYktpdFBvaW50LmNwcAogSlNXZWJLaXRU
cmFuc2l0aW9uRXZlbnQuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKaW5kZXggYzdhYWM4NTk2NzYuLjUxYjc4NDlhOTNlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysr
IGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0y
NDA3LDEyICsyNDA3LDE2IEBACiAJCTgzMDAzMEY4MUI3RDNCNzgwMEVEM0FBQyAvKiBDYWNoZWRI
VE1MQ29sbGVjdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gODMwMDMwRjcxQjdEMzk4ODAwRUQzQUFDIC8qIENhY2hlZEhUTUxDb2xsZWN0aW9uLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJODMwMzM1
MDIxRjU0OTA1NzAwNERGNzA3IC8qIEZpbGVTeXN0ZW1EaXJlY3RvcnlSZWFkZXIuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgzMDMzNEZDMUY1NDkwNTIw
MDRERjcwNyAvKiBGaWxlU3lzdGVtRGlyZWN0b3J5UmVhZGVyLmggKi87IH07CiAJCTgzMDMzNTAz
MUY1NDkwNUEwMDRERjcwNyAvKiBGaWxlU3lzdGVtRW50cmllc0NhbGxiYWNrLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4MzAzMzRGRTFGNTQ5MDUyMDA0
REY3MDcgLyogRmlsZVN5c3RlbUVudHJpZXNDYWxsYmFjay5oICovOyB9OworCQk4MzA0MDI4MjI0
OUE3QTVGMDBBOTBEOEQgLyogUGFubmluZ01vZGVsVHlwZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODMwNDAyODAyNDlBN0E1QzAwQTkwRDhEIC8qIFBh
bm5pbmdNb2RlbFR5cGUuaCAqLzsgfTsKKwkJODMwNDAyODMyNDlBN0E2MjAwQTkwRDhEIC8qIERp
c3RhbmNlTW9kZWxUeXBlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA4MzA0MDI3RDI0OUE3QTVCMDBBOTBEOEQgLyogRGlzdGFuY2VNb2RlbFR5cGUuaCAq
LzsgfTsKIAkJODMwNTE5OTYxQkIwRjExMDAwRjM3NzJFIC8qIEhUTUxUaW1lRWxlbWVudC5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODMwNTE5OTMxQkIw
RjBFNzAwRjM3NzJFIC8qIEhUTUxUaW1lRWxlbWVudC5oICovOyB9OwogCQk4MzA3ODRCMjFDNTJF
RTJDMDAxMDREMUQgLyogWE1MRG9jdW1lbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDgzMDc4NEIxMUM1MkVFMTkwMDEwNEQxRCAvKiBYTUxEb2N1bWVu
dC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTgz
MEEzNkJEMURBQzVGQUQwMDZEN0QwOSAvKiBKU01vdXNlRXZlbnRJbml0LmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4MzBBMzZCQjFEQUM1RkE3MDA2RDdE
MDkgLyogSlNNb3VzZUV2ZW50SW5pdC5oICovOyB9OwogCQk4MzEwMkIyNzFGOUVBREQ5MDBFNDA0
QjkgLyogSlNFeHRlbmRhYmxlTWVzc2FnZUV2ZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4MzEwMkIyMzFGOUVBREMyMDBFNDA0QjkgLyogSlNFeHRl
bmRhYmxlTWVzc2FnZUV2ZW50LmggKi87IH07CiAJCTgzMTFDMDAzMUZBQTJFOTUwMEUzQzhFNSAv
KiBTV1NlcnZlckpvYlF1ZXVlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA4MzExQzAwMjFGQUEyRTg5MDBFM0M4RTUgLyogU1dTZXJ2ZXJKb2JRdWV1ZS5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTgzMTIw
QzcxMUM1NkYzRkIwMDFDQjExMiAvKiBIVE1MRGF0YUVsZW1lbnQuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgzNEI4NkE3MUM1NkU4M0EwMEYzRjBFMyAv
KiBIVE1MRGF0YUVsZW1lbnQuaCAqLzsgfTsKKwkJODMxQjYxNzYyNDk5QTVCQjAwQzA3Qzc5IC8q
IFdlYktpdEF1ZGlvUGFubmVyTm9kZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gODMxQjYxNzQyNDk5QTU5QzAwQzA3Qzc5IC8qIFdlYktpdEF1ZGlvUGFu
bmVyTm9kZS5oICovOyB9OworCQk4MzFCNjE3NzI0OTlBNUJGMDBDMDdDNzkgLyogV2ViS2l0T2Zm
bGluZUF1ZGlvQ29udGV4dC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gODMxQjYxNzUyNDk5QTU5RDAwQzA3Qzc5IC8qIFdlYktpdE9mZmxpbmVBdWRpb0Nv
bnRleHQuaCAqLzsgfTsKIAkJODMyMTUwN0UxRjI3RUExQjAwOTVCMTM2IC8qIE5hdmlnYXRvckJl
YWNvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODMy
MTUwN0IxRjI3RUExNTAwOTVCMTM2IC8qIE5hdmlnYXRvckJlYWNvbi5oICovOyB9OwogCQk4MzJC
ODQzNDE5RDhFNTUxMDBCMjYwNTUgLyogU1ZHQW5pbWF0ZUVsZW1lbnRCYXNlLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4MzJCODQzMzE5RDhFNTUxMDBC
MjYwNTUgLyogU1ZHQW5pbWF0ZUVsZW1lbnRCYXNlLmggKi87IH07CiAJCTgzM0I5RTMyMUY1MDhE
ODUwMEUwRTQyOCAvKiBKU0ZpbGVTeXN0ZW1EaXJlY3RvcnlFbnRyeS5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODMzQjlFMkYxRjUwOEQ4MDAwRTBFNDI4
IC8qIEpTRmlsZVN5c3RlbURpcmVjdG9yeUVudHJ5LmggKi87IH07CkBAIC0yNDY4LDEwICsyNDcy
LDEyIEBACiAJCTgzOUEyRjJFMUUyMDRBNzEwMDM5MDU3RSAvKiBXZWJHTFN0YXRlVHJhY2tlci5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODM5QTJGMkMx
RTIwNEE2RDAwMzkwNTdFIC8qIFdlYkdMU3RhdGVUcmFja2VyLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJODM5QUFGRUQxQTBDMEM4RDAwNjA1Rjk5
IC8qIEhUTUxXQlJFbGVtZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA4MzlBQUZFQjFBMEMwQzhEMDA2MDVGOTkgLyogSFRNTFdCUkVsZW1lbnQuaCAq
LzsgfTsKIAkJODNBOEFDNDAxRkFCQkZFNTAwMjA2NEFDIC8qIFNlcnZpY2VXb3JrZXJJZGVudGlm
aWVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4M0E4
QUMzRTFGQUJCRkQxMDAyMDY0QUMgLyogU2VydmljZVdvcmtlcklkZW50aWZpZXIuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk4M0IxQTcwMjI0OTk4
NUYwMDBGRTU5NjEgLyogV2ViS2l0QXVkaW9Db250ZXh0LmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4M0IxQTZGRjI0OTk4NUQwMDBGRTU5NjEgLyogV2Vi
S2l0QXVkaW9Db250ZXh0LmggKi87IH07CiAJCTgzQjJEMTc1MUI4QkNENkEwMEEwMkU0NyAvKiBO
YXRpdmVOb2RlRmlsdGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA4M0U5NTlFMTFCOEJDMjJCMDA0RDkzODUgLyogTmF0aXZlTm9kZUZpbHRlci5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTgzQjc0RUY2
MUYzRTBCRjIwMDk5NkJDNyAvKiBLZWVwYWxpdmVSZXF1ZXN0VHJhY2tlci5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODNCNzRFRjMxRjNFMEJENzAwOTk2
QkM3IC8qIEtlZXBhbGl2ZVJlcXVlc3RUcmFja2VyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJODNCOTY4N0IxOUY4QUI4MzAwNEVGN0FGIC8qIFN0
eWxlQnVpbGRlckNvbnZlcnRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gODNCOTY4NzkxOUY4QUI4MzAwNEVGN0FGIC8qIFN0eWxlQnVpbGRlckNvbnZl
cnRlci5oICovOyB9OwogCQk4M0JCNUM4ODFENUQ2RjQ1MDA1QTcxRjQgLyogQWxsRGVzY2VuZGFu
dHNDb2xsZWN0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA4M0JCNUM4NzFENUQ2RjNBMDA1QTcxRjQgLyogQWxsRGVzY2VuZGFudHNDb2xsZWN0aW9u
LmggKi87IH07CisJCTgzQkQzQ0VFMjQ5OThFMDEwMEJBM0U2NyAvKiBBdWRpb0NvbnRleHRTdGF0
ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODNCRDND
RUQyNDk5OERGNjAwQkEzRTY3IC8qIEF1ZGlvQ29udGV4dFN0YXRlLmggKi87IH07CiAJCTgzQzA1
QTVCMUE2ODYyMTIwMDdFNURFQSAvKiBTdHlsZVByb3BlcnR5U2hvcnRoYW5kRnVuY3Rpb25zLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4M0MwNUE1OTFB
Njg2MjEyMDA3RTVERUEgLyogU3R5bGVQcm9wZXJ0eVNob3J0aGFuZEZ1bmN0aW9ucy5oICovOyB9
OwogCQk4M0MxRjU5NDFFREY2OUQzMDA0MTBEMjcgLyogUXVhbGlmaWVkTmFtZUNhY2hlLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4M0MxRjU5MjFFREY2
OUQzMDA0MTBEMjcgLyogUXVhbGlmaWVkTmFtZUNhY2hlLmggKi87IH07CiAJCTgzQzQ1QjhFMURD
MkI2OEEwMDg4NzFCQSAvKiBWYWxpZGF0aW9uQnViYmxlLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4M0M0NUI4RDFEQzJCNjdDMDA4ODcxQkEgLyogVmFs
aWRhdGlvbkJ1YmJsZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CkBAIC0xMDI5NywxMSArMTAzMDMsMTYgQEAKIAkJODMwMDMwRjMxQjdEMzNBNjAwRUQz
QUFDIC8qIEdlbmVyaWNDYWNoZWRIVE1MQ29sbGVjdGlvbi5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBHZW5lcmljQ2FjaGVkSFRNTENvbGxlY3Rpb24uY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4MzAwMzBGNDFCN0QzM0E2MDBFRDNBQUMgLyogR2Vu
ZXJpY0NhY2hlZEhUTUxDb2xsZWN0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IEdlbmVyaWNDYWNoZWRIVE1MQ29sbGVjdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk4MzAwMzBGNzFCN0QzOTg4MDBFRDNBQUMgLyogQ2FjaGVkSFRNTENvbGxlY3Rpb24u
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ2FjaGVkSFRNTENvbGxlY3Rpb24u
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJODMwMDNFMkIyNDk5OTdBODAwNjBBRjk0
IC8qIFdlYktpdEF1ZGlvQ29udGV4dC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBXZWJLaXRBdWRpb0NvbnRleHQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk4MzAzMzRGQjFGNTQ5MDUyMDA0REY3MDcgLyogRmlsZVN5c3RlbURpcmVjdG9yeVJlYWRl
ci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBGaWxlU3lzdGVtRGly
ZWN0b3J5UmVhZGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODMwMzM0RkMx
RjU0OTA1MjAwNERGNzA3IC8qIEZpbGVTeXN0ZW1EaXJlY3RvcnlSZWFkZXIuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRmlsZVN5c3RlbURpcmVjdG9yeVJlYWRlci5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4MzAzMzRGRDFGNTQ5MDUyMDA0REY3MDcgLyogRmls
ZVN5c3RlbUVudHJpZXNDYWxsYmFjay5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gRmlsZVN5
c3RlbUVudHJpZXNDYWxsYmFjay5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTgz
MDMzNEZFMUY1NDkwNTIwMDRERjcwNyAvKiBGaWxlU3lzdGVtRW50cmllc0NhbGxiYWNrLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEZpbGVTeXN0ZW1FbnRyaWVzQ2FsbGJhY2su
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODMwMzM0RkYxRjU0OTA1MjAwNERGNzA3
IC8qIEZpbGVTeXN0ZW1EaXJlY3RvcnlSZWFkZXIuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9
IEZpbGVTeXN0ZW1EaXJlY3RvcnlSZWFkZXIuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQk4MzA0MDI3RDI0OUE3QTVCMDBBOTBEOEQgLyogRGlzdGFuY2VNb2RlbFR5cGUuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRGlzdGFuY2VNb2RlbFR5cGUuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJODMwNDAyN0YyNDlBN0E1QzAwQTkwRDhEIC8qIERpc3Rh
bmNlTW9kZWxUeXBlLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBEaXN0YW5jZU1vZGVsVHlw
ZS5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTgzMDQwMjgwMjQ5QTdBNUMwMEE5
MEQ4RCAvKiBQYW5uaW5nTW9kZWxUeXBlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFBhbm5pbmdNb2RlbFR5cGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJODMw
NDAyODEyNDlBN0E1RDAwQTkwRDhEIC8qIFBhbm5pbmdNb2RlbFR5cGUuaWRsICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
dGV4dDsgcGF0aCA9IFBhbm5pbmdNb2RlbFR5cGUuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk4MzA1MTk5MjFCQjBGMEU3MDBGMzc3MkUgLyogSFRNTFRpbWVFbGVtZW50LmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEhUTUxUaW1lRWxlbWVudC5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTgzMDUxOTkzMUJCMEYwRTcwMEYzNzcyRSAv
KiBIVE1MVGltZUVsZW1lbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSFRN
TFRpbWVFbGVtZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTgzMDUxOTk0MUJC
MEYwRTcwMEYzNzcyRSAvKiBIVE1MVGltZUVsZW1lbnQuaWRsICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0
aCA9IEhUTUxUaW1lRWxlbWVudC5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0x
MDMxNCw2ICsxMDMyNSwxMiBAQAogCQk4MzEwMkIyNTFGOUVBREMyMDBFNDA0QjkgLyogSlNFeHRl
bmRhYmxlTWVzc2FnZUV2ZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IEpTRXh0ZW5kYWJsZU1lc3NhZ2VFdmVudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTgzMTFDMDAwMUZBQTJFODkwMEUzQzhFNSAvKiBTV1NlcnZlckpvYlF1ZXVlLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNXU2VydmVySm9iUXVldWUuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4MzExQzAwMjFGQUEyRTg5MDBFM0M4RTUg
LyogU1dTZXJ2ZXJKb2JRdWV1ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBT
V1NlcnZlckpvYlF1ZXVlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTgzMUI2MTZG
MjQ5OUE1OTgwMEMwN0M3OSAvKiBXZWJLaXRBdWRpb1Bhbm5lck5vZGUuaWRsICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
dGV4dDsgcGF0aCA9IFdlYktpdEF1ZGlvUGFubmVyTm9kZS5pZGw7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTgzMUI2MTcxMjQ5OUE1OTkwMEMwN0M3OSAvKiBXZWJLaXRBdWRpb1Bhbm5l
ck5vZGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2ViS2l0QXVk
aW9QYW5uZXJOb2RlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJODMxQjYxNzIy
NDk5QTU5QTAwQzA3Qzc5IC8qIFdlYktpdE9mZmxpbmVBdWRpb0NvbnRleHQuaWRsICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gdGV4dDsgcGF0aCA9IFdlYktpdE9mZmxpbmVBdWRpb0NvbnRleHQuaWRsOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQk4MzFCNjE3MzI0OTlBNTlCMDBDMDdDNzkgLyogV2ViS2l0T2Zm
bGluZUF1ZGlvQ29udGV4dC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBXZWJLaXRPZmZsaW5lQXVkaW9Db250ZXh0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJODMxQjYxNzQyNDk5QTU5QzAwQzA3Qzc5IC8qIFdlYktpdEF1ZGlvUGFubmVyTm9kZS5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJLaXRBdWRpb1Bhbm5lck5vZGUu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJODMxQjYxNzUyNDk5QTU5RDAwQzA3Qzc5
IC8qIFdlYktpdE9mZmxpbmVBdWRpb0NvbnRleHQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gV2ViS2l0T2ZmbGluZUF1ZGlvQ29udGV4dC5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk4MzFDNDZDMzFGOUVFNUUwMDBFQkQ0NTAgLyogSlNFeHRlbmRhYmxlTWVzc2Fn
ZUV2ZW50Q3VzdG9tLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpT
RXh0ZW5kYWJsZU1lc3NhZ2VFdmVudEN1c3RvbS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTgzMUQxRjI5MUM1NkVDQTAwMEY1RjZDMCAvKiBIVE1MRGF0YUVsZW1lbnQuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSFRNTERhdGFFbGVtZW50LmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODMyMTUwN0ExRjI3RUExNTAwOTVCMTM2IC8q
IE5hdmlnYXRvckJlYWNvbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBOYXZpZ2F0b3JCZWFjb24u
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTA0NDEsNiArMTA0NTgsOCBAQAog
CQk4MzlBQUZFQjFBMEMwQzhEMDA2MDVGOTkgLyogSFRNTFdCUkVsZW1lbnQuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSFRNTFdCUkVsZW1lbnQuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJODNBNEE5RjgxQ0U3RkQ3RTAwNzA5QjAwIC8qIEpTWE1MRG9jdW1lbnRD
dXN0b20uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNYTUxEb2N1
bWVudEN1c3RvbS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTgzQThBQzNFMUZB
QkJGRDEwMDIwNjRBQyAvKiBTZXJ2aWNlV29ya2VySWRlbnRpZmllci5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBTZXJ2aWNlV29ya2VySWRlbnRpZmllci5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQk4M0IxQTZGRjI0OTk4NUQwMDBGRTU5NjEgLyogV2ViS2l0QXVk
aW9Db250ZXh0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYktpdEF1ZGlv
Q29udGV4dC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk4M0IxQTcwMTI0OTk4NUQw
MDBGRTU5NjEgLyogV2ViS2l0QXVkaW9Db250ZXh0LmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGgg
PSBXZWJLaXRBdWRpb0NvbnRleHQuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4
M0IyNTAwOTFGQTExODFDMDBCQzAyRDkgLyogSlNTZXJ2aWNlV29ya2VyQ2xpZW50VHlwZS5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU1NlcnZpY2VXb3JrZXJDbGllbnRUeXBl
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTgzQjI1MDBCMUZBMTE4MUQwMEJDMDJE
OSAvKiBKU1NlcnZpY2VXb3JrZXJDbGllbnRUeXBlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IEpTU2VydmljZVdvcmtlckNsaWVudFR5cGUuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk4M0I1REE0NTFGQTkwNzkzMDBCNTlERjQgLyogSlNOYXZpZ2F0
b3JDdXN0b20uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNOYXZp
Z2F0b3JDdXN0b20uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTA0NDgsNiAr
MTA0NjcsOCBAQAogCQk4M0I3NEVGMzFGM0UwQkQ3MDA5OTZCQzcgLyogS2VlcGFsaXZlUmVxdWVz
dFRyYWNrZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gS2VlcGFsaXZlUmVx
dWVzdFRyYWNrZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODNCOTY4NzkxOUY4
QUI4MzAwNEVGN0FGIC8qIFN0eWxlQnVpbGRlckNvbnZlcnRlci5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBTdHlsZUJ1aWxkZXJDb252ZXJ0ZXIuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJODNCQjVDODcxRDVENkYzQTAwNUE3MUY0IC8qIEFsbERlc2NlbmRhbnRz
Q29sbGVjdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBbGxEZXNjZW5k
YW50c0NvbGxlY3Rpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJODNCRDNDRUIy
NDk5OENDNTAwQkEzRTY3IC8qIEF1ZGlvQ29udGV4dFN0YXRlLmlkbCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7
IHBhdGggPSBBdWRpb0NvbnRleHRTdGF0ZS5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCTgzQkQzQ0VEMjQ5OThERjYwMEJBM0U2NyAvKiBBdWRpb0NvbnRleHRTdGF0ZS5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBdWRpb0NvbnRleHRTdGF0ZS5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk4M0MwNUE1ODFBNjg2MjEyMDA3RTVERUEgLyogU3R5bGVQ
cm9wZXJ0eVNob3J0aGFuZEZ1bmN0aW9ucy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IG5hbWUgPSBTdHlsZVByb3BlcnR5U2hvcnRoYW5kRnVuY3Rpb25zLmNwcDsgcGF0aCA9IERl
cml2ZWRTb3VyY2VzL1dlYkNvcmUvU3R5bGVQcm9wZXJ0eVNob3J0aGFuZEZ1bmN0aW9ucy5jcHA7
IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19ESVI7IH07CiAJCTgzQzA1QTU5MUE2ODYyMTIw
MDdFNURFQSAvKiBTdHlsZVByb3BlcnR5U2hvcnRoYW5kRnVuY3Rpb25zLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFN0eWxlUHJvcGVydHlTaG9ydGhhbmRGdW5jdGlvbnMuaDsg
cGF0aCA9IERlcml2ZWRTb3VyY2VzL1dlYkNvcmUvU3R5bGVQcm9wZXJ0eVNob3J0aGFuZEZ1bmN0
aW9ucy5oOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9OwogCQk4M0MxRjU5MTFF
REY2OUQzMDA0MTBEMjcgLyogUXVhbGlmaWVkTmFtZUNhY2hlLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFF1YWxpZmllZE5hbWVDYWNoZS5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CkBAIC0yOTIzOSw2ICsyOTI2MCw4IEBACiAJCQkJRkQzMTVGQkExMkIw
MjY3NTAwQzFBMzU5IC8qIEF1ZGlvQ29udGV4dC5jcHAgKi8sCiAJCQkJRkQzMTVGQkIxMkIwMjY3
NTAwQzFBMzU5IC8qIEF1ZGlvQ29udGV4dC5oICovLAogCQkJCUZEMzE1RkJDMTJCMDI2NzUwMEMx
QTM1OSAvKiBBdWRpb0NvbnRleHQuaWRsICovLAorCQkJCTgzQkQzQ0VEMjQ5OThERjYwMEJBM0U2
NyAvKiBBdWRpb0NvbnRleHRTdGF0ZS5oICovLAorCQkJCTgzQkQzQ0VCMjQ5OThDQzUwMEJBM0U2
NyAvKiBBdWRpb0NvbnRleHRTdGF0ZS5pZGwgKi8sCiAJCQkJRkQzMTVGQkQxMkIwMjY3NTAwQzFB
MzU5IC8qIEF1ZGlvRGVzdGluYXRpb25Ob2RlLmNwcCAqLywKIAkJCQlGRDMxNUZCRTEyQjAyNjc1
MDBDMUEzNTkgLyogQXVkaW9EZXN0aW5hdGlvbk5vZGUuaCAqLywKIAkJCQlGRDMxNUZCRjEyQjAy
Njc1MDBDMUEzNTkgLyogQXVkaW9EZXN0aW5hdGlvbk5vZGUuaWRsICovLApAQCAtMjkyODksNiAr
MjkzMTIsOCBAQAogCQkJCUZEMzE1RkU1MTJCMDI2NzYwMEMxQTM1OSAvKiBEZWxheU5vZGUuaWRs
ICovLAogCQkJCUZEMzE1RkU2MTJCMDI2NzYwMEMxQTM1OSAvKiBEZWxheVByb2Nlc3Nvci5jcHAg
Ki8sCiAJCQkJRkQzMTVGRTcxMkIwMjY3NjAwQzFBMzU5IC8qIERlbGF5UHJvY2Vzc29yLmggKi8s
CisJCQkJODMwNDAyN0QyNDlBN0E1QjAwQTkwRDhEIC8qIERpc3RhbmNlTW9kZWxUeXBlLmggKi8s
CisJCQkJODMwNDAyN0YyNDlBN0E1QzAwQTkwRDhEIC8qIERpc3RhbmNlTW9kZWxUeXBlLmlkbCAq
LywKIAkJCQlGRDZFRDJDMTEzNkI4RTQyMDAzQ0YwNzIgLyogRHluYW1pY3NDb21wcmVzc29yTm9k
ZS5jcHAgKi8sCiAJCQkJRkQ2RUQyQzIxMzZCOEU0MjAwM0NGMDcyIC8qIER5bmFtaWNzQ29tcHJl
c3Nvck5vZGUuaCAqLywKIAkJCQlGRDZFRDJDOTEzNkI4RTlEMDAzQ0YwNzIgLyogRHluYW1pY3ND
b21wcmVzc29yTm9kZS5pZGwgKi8sCkBAIC0yOTMyMSw2ICsyOTM0Niw4IEBACiAJCQkJRkQzMTVG
Q0YxMkIwMjY3NTAwQzFBMzU5IC8qIFBhbm5lck5vZGUuY3BwICovLAogCQkJCUZEMzE1RkQwMTJC
MDI2NzUwMEMxQTM1OSAvKiBQYW5uZXJOb2RlLmggKi8sCiAJCQkJRkQzMTVGRDExMkIwMjY3NTAw
QzFBMzU5IC8qIFBhbm5lck5vZGUuaWRsICovLAorCQkJCTgzMDQwMjgwMjQ5QTdBNUMwMEE5MEQ4
RCAvKiBQYW5uaW5nTW9kZWxUeXBlLmggKi8sCisJCQkJODMwNDAyODEyNDlBN0E1RDAwQTkwRDhE
IC8qIFBhbm5pbmdNb2RlbFR5cGUuaWRsICovLAogCQkJCUZENTgxRkIxMTUyMEY5M0IwMDNBN0E3
NSAvKiBQZXJpb2RpY1dhdmUuY3BwICovLAogCQkJCUZENTgxRkIyMTUyMEY5M0IwMDNBN0E3NSAv
KiBQZXJpb2RpY1dhdmUuaCAqLywKIAkJCQlGRDU4MUZCMzE1MjBGOTNCMDAzQTdBNzUgLyogUGVy
aW9kaWNXYXZlLmlkbCAqLywKQEAgLTI5MzM2LDYgKzI5MzYzLDE1IEBACiAJCQkJRkQ3RjI5OEUx
M0Q0QzBDQjAwQUQ5NTM1IC8qIFdhdmVTaGFwZXJOb2RlLmlkbCAqLywKIAkJCQlGRDdGMjk4RjEz
RDRDMENCMDBBRDk1MzUgLyogV2F2ZVNoYXBlclByb2Nlc3Nvci5jcHAgKi8sCiAJCQkJRkQ3RjI5
OTAxM0Q0QzBDQjAwQUQ5NTM1IC8qIFdhdmVTaGFwZXJQcm9jZXNzb3IuaCAqLywKKwkJCQk4MzAw
M0UyQjI0OTk5N0E4MDA2MEFGOTQgLyogV2ViS2l0QXVkaW9Db250ZXh0LmNwcCAqLywKKwkJCQk4
M0IxQTZGRjI0OTk4NUQwMDBGRTU5NjEgLyogV2ViS2l0QXVkaW9Db250ZXh0LmggKi8sCisJCQkJ
ODNCMUE3MDEyNDk5ODVEMDAwRkU1OTYxIC8qIFdlYktpdEF1ZGlvQ29udGV4dC5pZGwgKi8sCisJ
CQkJODMxQjYxNzEyNDk5QTU5OTAwQzA3Qzc5IC8qIFdlYktpdEF1ZGlvUGFubmVyTm9kZS5jcHAg
Ki8sCisJCQkJODMxQjYxNzQyNDk5QTU5QzAwQzA3Qzc5IC8qIFdlYktpdEF1ZGlvUGFubmVyTm9k
ZS5oICovLAorCQkJCTgzMUI2MTZGMjQ5OUE1OTgwMEMwN0M3OSAvKiBXZWJLaXRBdWRpb1Bhbm5l
ck5vZGUuaWRsICovLAorCQkJCTgzMUI2MTczMjQ5OUE1OUIwMEMwN0M3OSAvKiBXZWJLaXRPZmZs
aW5lQXVkaW9Db250ZXh0LmNwcCAqLywKKwkJCQk4MzFCNjE3NTI0OTlBNTlEMDBDMDdDNzkgLyog
V2ViS2l0T2ZmbGluZUF1ZGlvQ29udGV4dC5oICovLAorCQkJCTgzMUI2MTcyMjQ5OUE1OUEwMEMw
N0M3OSAvKiBXZWJLaXRPZmZsaW5lQXVkaW9Db250ZXh0LmlkbCAqLywKIAkJCSk7CiAJCQlwYXRo
ID0gd2ViYXVkaW87CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwpAQCAtMjk3MTIsNiArMjk3
NDgsNyBAQAogCQkJCTlCNDE3MDY0MTI1NjYyQjMwMDZCMjhGQyAvKiBBcHBseUJsb2NrRWxlbWVu
dENvbW1hbmQuaCBpbiBIZWFkZXJzICovLAogCQkJCTkzMzA5REQ5MDk5RTY0OTIwMDU2RTU4MSAv
KiBBcHBseVN0eWxlQ29tbWFuZC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTEyREQ4RjYwRDkxRTZB
RjAwMEY4OUVFIC8qIEFyY2hpdmUuaCBpbiBIZWFkZXJzICovLAorCQkJCTgzQkQzQ0VFMjQ5OThF
MDEwMEJBM0U2NyAvKiBBdWRpb0NvbnRleHRTdGF0ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTEy
REQ4RkQwRDkxRTZBRjAwMEY4OUVFIC8qIEFyY2hpdmVGYWN0b3J5LmggaW4gSGVhZGVycyAqLywK
IAkJCQk1MTJERDhGQzBEOTFFNkFGMDAwRjg5RUUgLyogQXJjaGl2ZVJlc291cmNlLmggaW4gSGVh
ZGVycyAqLywKIAkJCQk1MTJERDhGODBEOTFFNkFGMDAwRjg5RUUgLyogQXJjaGl2ZVJlc291cmNl
Q29sbGVjdGlvbi5oIGluIEhlYWRlcnMgKi8sCkBAIC0zMDA5Miw2ICszMDEyOSw3IEBACiAJCQkJ
NzdENTEwMTcxRUQ2MDIyMjAwREE0Qzg3IC8qIENyZWRlbnRpYWxzQ29udGFpbmVyLmggaW4gSGVh
ZGVycyAqLywKIAkJCQk1MUEwNTIzMzEwNTg3NzRGMDBDQzlFOTUgLyogQ3JlZGVudGlhbFN0b3Jh
Z2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTJENDgxRjAyMTQ2QjVDNTUwMEFBNzgzNCAvKiBDcm9z
c2ZhZGVHZW5lcmF0ZWRJbWFnZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJODMwNDAyODIyNDlBN0E1
RjAwQTkwRDhEIC8qIFBhbm5pbmdNb2RlbFR5cGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUUxQzQx
NjEyMEY2NTYyRkQwMDkyRDJGQiAvKiBDcm9zc09yaWdpbkFjY2Vzc0NvbnRyb2wuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTQxQUJFNjdCMUQwNTgwREIwMDZEODYyRCAvKiBDcm9zc09yaWdpblByZWZs
aWdodENoZWNrZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUUxQzQxNURBMEY2NTVENkYwMDkyRDJG
QiAvKiBDcm9zc09yaWdpblByZWZsaWdodFJlc3VsdENhY2hlLmggaW4gSGVhZGVycyAqLywKQEAg
LTMwODc3LDYgKzMwOTE1LDcgQEAKIAkJCQlBNDNCRjU5OTExNDkyOTBBMDBDNjQzQ0EgLyogSFRN
TFByb2dyZXNzRWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQThDRkY3QTMwQTE1Njk3ODAw
MEE0MjM0IC8qIEhUTUxRdW90ZUVsZW1lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUE4RDIyM0ZF
MTZCNTJFNEUwMDE1NzI4OCAvKiBIVE1MUmVzb3VyY2VQcmVsb2FkZXIuaCBpbiBIZWFkZXJzICov
LAorCQkJCTgzQjFBNzAyMjQ5OTg1RjAwMEZFNTk2MSAvKiBXZWJLaXRBdWRpb0NvbnRleHQuaCBp
biBIZWFkZXJzICovLAogCQkJCUE4NzFEQzI1MEExNTIwNTcwMEIxMkE2OCAvKiBIVE1MU2NyaXB0
RWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTc3QjM4NzUxMjI4ODNFOTAwQjgxRkY4IC8q
IEhUTUxTY3JpcHRSdW5uZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTk3N0IzODc2MTIyODgzRTkw
MEI4MUZGOCAvKiBIVE1MU2NyaXB0UnVubmVySG9zdC5oIGluIEhlYWRlcnMgKi8sCkBAIC0zMTcy
MSw2ICszMTc2MCw3IEBACiAJCQkJQkM4MjQzMjkwRDBDRThBMjAwNDYwQzhGIC8qIEpTU1FMRXJy
b3IuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBRTgyRkVEMENBQjA3RUUwMDIyMzdBRSAvKiBKU1NR
TFJlc3VsdFNldC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUFGRTExOUEwQ0JGRkNDNDAwMzAxN0ZB
IC8qIEpTU1FMUmVzdWx0U2V0Um93TGlzdC5oIGluIEhlYWRlcnMgKi8sCisJCQkJODMxQjYxNzYy
NDk5QTVCQjAwQzA3Qzc5IC8qIFdlYktpdEF1ZGlvUGFubmVyTm9kZS5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJQjU5REQ2QTUxMTkwMkE2MjAwN0U5Njg0IC8qIEpTU1FMU3RhdGVtZW50Q2FsbGJhY2su
aCBpbiBIZWFkZXJzICovLAogCQkJCUI1OURENkE5MTE5MDJBNzEwMDdFOTY4NCAvKiBKU1NRTFN0
YXRlbWVudEVycm9yQ2FsbGJhY2suaCBpbiBIZWFkZXJzICovLAogCQkJCUJDODI0MzJBMEQwQ0U4
QTIwMDQ2MEM4RiAvKiBKU1NRTFRyYW5zYWN0aW9uLmggaW4gSGVhZGVycyAqLywKQEAgLTMyMTk5
LDYgKzMyMjM5LDcgQEAKIAkJCQkwNzYzOEE5OTE4ODQ0ODcyMDBFMTVBMUIgLyogTWVkaWFTZXNz
aW9uTWFuYWdlcklPUy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQzlEODUxRjAxQjM5REM3ODAwODUw
NjJFIC8qIE1lZGlhU2Vzc2lvbk1ldGFkYXRhLmggaW4gSGVhZGVycyAqLywKIAkJCQlDRDNBNDk1
RjE3QTlEMDFCMDAyNzRFNDIgLyogTWVkaWFTb3VyY2UuaCBpbiBIZWFkZXJzICovLAorCQkJCTgz
MDQwMjgzMjQ5QTdBNjIwMEE5MEQ4RCAvKiBEaXN0YW5jZU1vZGVsVHlwZS5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJQ0Q2NDFFQjMxODE4RjVFRDAwRUU0QzQxIC8qIE1lZGlhU291cmNlUHJpdmF0ZS5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJQ0RDOEI1QTcxODA0NzRGNzAwMTZFNjg1IC8qIE1lZGlhU291
cmNlUHJpdmF0ZUFWRk9iakMuaCBpbiBIZWFkZXJzICovLAogCQkJCUNEREMxRTdBMThBOTUyRjMw
MDI3QTlENCAvKiBNZWRpYVNvdXJjZVByaXZhdGVDbGllbnQuaCBpbiBIZWFkZXJzICovLApAQCAt
MzI4MTUsNiArMzI4NTYsNyBAQAogCQkJCTUxRUU3QjM4MUFBNTBCMDUwMEY5MkIyMSAvKiBSZXNv
dXJjZUxvYWRJbmZvLmggaW4gSGVhZGVycyAqLywKIAkJCQk5NzNFMzI1NzEwODgzQjdDMDA1QkM0
OTMgLyogUmVzb3VyY2VMb2FkTm90aWZpZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTZCNjkzQTJF
MUM1MUE4MkUwMEIwM0JFRiAvKiBSZXNvdXJjZUxvYWRPYnNlcnZlci5oIGluIEhlYWRlcnMgKi8s
CisJCQkJODMxQjYxNzcyNDk5QTVCRjAwQzA3Qzc5IC8qIFdlYktpdE9mZmxpbmVBdWRpb0NvbnRl
eHQuaCBpbiBIZWFkZXJzICovLAogCQkJCUU0Mjk1RkE0MTJCMDYxNEUwMEQxQUNFMCAvKiBSZXNv
dXJjZUxvYWRQcmlvcml0eS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJN0E5MjlDQTcxQzU5OEFBOTAw
NERGMjI2IC8qIFJlc291cmNlTG9hZFN0YXRpc3RpY3MuaCBpbiBIZWFkZXJzICovLAogCQkJCTdF
RTY4NDZEMTJEMjZFMzgwMEU3OTQxNSAvKiBSZXNvdXJjZVJlcXVlc3QuaCBpbiBIZWFkZXJzICov
LApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvV2ViQ29yZUJ1aWx0aW5O
YW1lcy5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvV2ViQ29yZUJ1aWx0aW5OYW1lcy5o
CmluZGV4IDQ5OTdhYjk5M2NiLi5mOTE5N2MyNmFlOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvV2ViQ29yZUJ1aWx0aW5OYW1lcy5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL1dlYkNvcmVCdWlsdGluTmFtZXMuaApAQCAtNDksNiArNDksNyBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAgICAgbWFjcm8oQXBwbGVQYXlTZXR1cEZlYXR1cmUpIFwKICAgICBt
YWNybyhBdHRhY2htZW50RWxlbWVudCkgXAogICAgIG1hY3JvKEF1ZGlvKSBcCisgICAgbWFjcm8o
QXVkaW9Db250ZXh0KSBcCiAgICAgbWFjcm8oQXV0aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNl
KSBcCiAgICAgbWFjcm8oQXV0aGVudGljYXRvckF0dGVzdGF0aW9uUmVzcG9uc2UpIFwKICAgICBt
YWNybyhBdXRoZW50aWNhdG9yUmVzcG9uc2UpIFwKQEAgLTE2NSw5ICsxNjYsMTEgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogICAgIG1hY3JvKE5hdmlnYXRvckNyZWRlbnRpYWxzKSBcCiAgICAgbWFj
cm8oTmF2aWdhdG9yTWVkaWFEZXZpY2VzKSBcCiAgICAgbWFjcm8oTmF2aWdhdG9yVXNlck1lZGlh
KSBcCisgICAgbWFjcm8oT2ZmbGluZUF1ZGlvQ29udGV4dCkgXAogICAgIG1hY3JvKE9mZnNjcmVl
bkNhbnZhcykgXAogICAgIG1hY3JvKE9mZnNjcmVlbkNhbnZhc1JlbmRlcmluZ0NvbnRleHQyRCkg
XAogICAgIG1hY3JvKFBhaW50UmVuZGVyaW5nQ29udGV4dDJEKSBcCisgICAgbWFjcm8oUGFubmVy
Tm9kZSkgXAogICAgIG1hY3JvKFBheW1lbnRBZGRyZXNzKSBcCiAgICAgbWFjcm8oUGF5bWVudE1l
dGhvZENoYW5nZUV2ZW50KSBcCiAgICAgbWFjcm8oUGF5bWVudFJlcXVlc3QpIFwKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudFRhcmdldEZhY3RvcnkuaW4gYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vRXZlbnRUYXJnZXRGYWN0b3J5LmluCmluZGV4IGZjMWRiMmNlMGUwLi5hMTU0YjQ0
NWExMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50VGFyZ2V0RmFjdG9yeS5p
bgorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRUYXJnZXRGYWN0b3J5LmluCkBAIC01Myw2
ICs1Myw3IEBAIFZpZGVvVHJhY2tMaXN0IGNvbmRpdGlvbmFsPVZJREVPCiBWaXN1YWxWaWV3cG9y
dAogV2ViQW5pbWF0aW9uCiBXZWJHUFVEZXZpY2UgY29uZGl0aW9uYWw9V0VCR1BVCitXZWJLaXRB
dWRpb0NvbnRleHQgY29uZGl0aW9uYWw9V0VCX0FVRElPCiBXZWJLaXRNZWRpYUtleVNlc3Npb24g
Y29uZGl0aW9uYWw9TEVHQUNZX0VOQ1JZUFRFRF9NRURJQQogV2ViU29ja2V0CiBXb3JrZXIKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3MueWFtbCBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvU2V0dGluZ3MueWFtbAppbmRleCAyZDZiYzZmZjJlZi4uNTgzZmM2Zjc5NWUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3MueWFtbAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL1NldHRpbmdzLnlhbWwKQEAgLTI1NSw2ICsyNTUsOCBAQCBsb2FkRGVmZXJy
aW5nRW5hYmxlZDoKICAgaW5pdGlhbDogdHJ1ZQogd2ViQXVkaW9FbmFibGVkOgogICBpbml0aWFs
OiBmYWxzZQorbW9kZXJuVW5wcmVmaXhlZFdlYkF1ZGlvRW5hYmxlZDoKKyAgaW5pdGlhbDogZmFs
c2UKIHBhZ2luYXRlRHVyaW5nTGF5b3V0RW5hYmxlZDoKICAgaW5pdGlhbDogZmFsc2UKIGZ1bGxT
Y3JlZW5FbmFibGVkOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUHJlZmVy
ZW5jZXMueWFtbCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlByZWZlcmVuY2VzLnlhbWwKaW5k
ZXggZmFkMWE5ZjU4ODYuLjUyMzVjZTcxZmY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9XZWJQcmVmZXJlbmNlcy55YW1sCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlBy
ZWZlcmVuY2VzLnlhbWwKQEAgLTMzNCw2ICszMzQsMTQgQEAgV2ViQXVkaW9FbmFibGVkOgogICBk
ZWZhdWx0VmFsdWU6IHRydWUKICAgY29uZGl0aW9uOiBFTkFCTEUoV0VCX0FVRElPKQogCitNb2Rl
cm5VbnByZWZpeGVkV2ViQXVkaW9FbmFibGVkOgorICB0eXBlOiBib29sCisgIGRlZmF1bHRWYWx1
ZTogZmFsc2UKKyAgY29uZGl0aW9uOiBFTkFCTEUoV0VCX0FVRElPKQorICBodW1hblJlYWRhYmxl
TmFtZTogIk1vZGVybiBXZWJBdWRpbyBBUEkiCisgIGh1bWFuUmVhZGFibGVEZXNjcmlwdGlvbjog
Ik1vZGVybiBhbmQgdW5wcmVmaXhlZCBXZWJBdWRpbyBBUEkiCisgIGNhdGVnb3J5OiBleHBlcmlt
ZW50YWwKKwogQXR0YWNobWVudEVsZW1lbnRFbmFibGVkOgogICB0eXBlOiBib29sCiAgIGRlZmF1
bHRWYWx1ZTogZmFsc2UK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>402129</attachid>
            <date>2020-06-17 10:33:36 -0700</date>
            <delta_ts>2020-06-17 11:31:13 -0700</delta_ts>
            <desc>WIP Patch</desc>
            <filename>213268_wip.patch</filename>
            <type>text/plain</type>
            <size>220201</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dlYkNv
cmUvQ01ha2VMaXN0cy50eHQKaW5kZXggOTc1OTQ4OTVkOGMuLjM5OWE2YmQzZmQwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9D
TWFrZUxpc3RzLnR4dApAQCAtNDMzLDYgKzQzMyw3IEBAIHNldChXZWJDb3JlX05PTl9TVkdfSURM
X0ZJTEVTCiAgICAgTW9kdWxlcy93ZWJhdWRpby9BdWRpb0J1ZmZlckNhbGxiYWNrLmlkbAogICAg
IE1vZHVsZXMvd2ViYXVkaW8vQXVkaW9CdWZmZXJTb3VyY2VOb2RlLmlkbAogICAgIE1vZHVsZXMv
d2ViYXVkaW8vQXVkaW9Db250ZXh0LmlkbAorICAgIE1vZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250
ZXh0U3RhdGUuaWRsCiAgICAgTW9kdWxlcy93ZWJhdWRpby9BdWRpb0Rlc3RpbmF0aW9uTm9kZS5p
ZGwKICAgICBNb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvTGlzdGVuZXIuaWRsCiAgICAgTW9kdWxlcy93
ZWJhdWRpby9BdWRpb05vZGUuaWRsCkBAIC00NDMsNiArNDQ0LDcgQEAgc2V0KFdlYkNvcmVfTk9O
X1NWR19JRExfRklMRVMKICAgICBNb2R1bGVzL3dlYmF1ZGlvL0NoYW5uZWxTcGxpdHRlck5vZGUu
aWRsCiAgICAgTW9kdWxlcy93ZWJhdWRpby9Db252b2x2ZXJOb2RlLmlkbAogICAgIE1vZHVsZXMv
d2ViYXVkaW8vRGVsYXlOb2RlLmlkbAorICAgIE1vZHVsZXMvd2ViYXVkaW8vRGlzdGFuY2VNb2Rl
bFR5cGUuaWRsCiAgICAgTW9kdWxlcy93ZWJhdWRpby9EeW5hbWljc0NvbXByZXNzb3JOb2RlLmlk
bAogICAgIE1vZHVsZXMvd2ViYXVkaW8vR2Fpbk5vZGUuaWRsCiAgICAgTW9kdWxlcy93ZWJhdWRp
by9NZWRpYUVsZW1lbnRBdWRpb1NvdXJjZU5vZGUuaWRsCkBAIC00NTIsOSArNDU0LDEzIEBAIHNl
dChXZWJDb3JlX05PTl9TVkdfSURMX0ZJTEVTCiAgICAgTW9kdWxlcy93ZWJhdWRpby9PZmZsaW5l
QXVkaW9Db250ZXh0LmlkbAogICAgIE1vZHVsZXMvd2ViYXVkaW8vT3NjaWxsYXRvck5vZGUuaWRs
CiAgICAgTW9kdWxlcy93ZWJhdWRpby9QYW5uZXJOb2RlLmlkbAorICAgIE1vZHVsZXMvd2ViYXVk
aW8vUGFubmluZ01vZGVsVHlwZS5pZGwKICAgICBNb2R1bGVzL3dlYmF1ZGlvL1BlcmlvZGljV2F2
ZS5pZGwKICAgICBNb2R1bGVzL3dlYmF1ZGlvL1NjcmlwdFByb2Nlc3Nvck5vZGUuaWRsCiAgICAg
TW9kdWxlcy93ZWJhdWRpby9XYXZlU2hhcGVyTm9kZS5pZGwKKyAgICBNb2R1bGVzL3dlYmF1ZGlv
L1dlYktpdEF1ZGlvQ29udGV4dC5pZGwKKyAgICBNb2R1bGVzL3dlYmF1ZGlvL1dlYktpdEF1ZGlv
UGFubmVyTm9kZS5pZGwKKyAgICBNb2R1bGVzL3dlYmF1ZGlvL1dlYktpdE9mZmxpbmVBdWRpb0Nv
bnRleHQuaWRsCiAKICAgICBNb2R1bGVzL3dlYmF1dGhuL0F0dGVzdGF0aW9uQ29udmV5YW5jZVBy
ZWZlcmVuY2UuaWRsCiAgICAgTW9kdWxlcy93ZWJhdXRobi9BdXRoZW50aWNhdGlvbkV4dGVuc2lv
bnNDbGllbnRJbnB1dHMuaWRsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291
cmNlcy1pbnB1dC54Y2ZpbGVsaXN0IGIvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMtaW5w
dXQueGNmaWxlbGlzdAppbmRleCA2YTdhYTdkMTRlYi4uZjdkNjRjMTkzZDAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLWlucHV0LnhjZmlsZWxpc3QKKysrIGIvU291
cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMtaW5wdXQueGNmaWxlbGlzdApAQCAtMzAwLDYgKzMw
MCw3IEBAICQoUFJPSkVDVF9ESVIpL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9CdWZmZXIuaWRsCiAk
KFBST0pFQ1RfRElSKS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQnVmZmVyQ2FsbGJhY2suaWRsCiAk
KFBST0pFQ1RfRElSKS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQnVmZmVyU291cmNlTm9kZS5pZGwK
ICQoUFJPSkVDVF9ESVIpL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0LmlkbAorJChQUk9K
RUNUX0RJUikvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0NvbnRleHRTdGF0ZS5pZGwKICQoUFJPSkVD
VF9ESVIpL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9EZXN0aW5hdGlvbk5vZGUuaWRsCiAkKFBST0pF
Q1RfRElSKS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvTGlzdGVuZXIuaWRsCiAkKFBST0pFQ1RfRElS
KS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvTm9kZS5pZGwKQEAgLTMxMCw2ICszMTEsNyBAQCAkKFBS
T0pFQ1RfRElSKS9Nb2R1bGVzL3dlYmF1ZGlvL0NoYW5uZWxNZXJnZXJOb2RlLmlkbAogJChQUk9K
RUNUX0RJUikvTW9kdWxlcy93ZWJhdWRpby9DaGFubmVsU3BsaXR0ZXJOb2RlLmlkbAogJChQUk9K
RUNUX0RJUikvTW9kdWxlcy93ZWJhdWRpby9Db252b2x2ZXJOb2RlLmlkbAogJChQUk9KRUNUX0RJ
UikvTW9kdWxlcy93ZWJhdWRpby9EZWxheU5vZGUuaWRsCiskKFBST0pFQ1RfRElSKS9Nb2R1bGVz
L3dlYmF1ZGlvL0Rpc3RhbmNlTW9kZWxUeXBlLmlkbAogJChQUk9KRUNUX0RJUikvTW9kdWxlcy93
ZWJhdWRpby9EeW5hbWljc0NvbXByZXNzb3JOb2RlLmlkbAogJChQUk9KRUNUX0RJUikvTW9kdWxl
cy93ZWJhdWRpby9HYWluTm9kZS5pZGwKICQoUFJPSkVDVF9ESVIpL01vZHVsZXMvd2ViYXVkaW8v
TWVkaWFFbGVtZW50QXVkaW9Tb3VyY2VOb2RlLmlkbApAQCAtMzE5LDkgKzMyMSwxMyBAQCAkKFBS
T0pFQ1RfRElSKS9Nb2R1bGVzL3dlYmF1ZGlvL09mZmxpbmVBdWRpb0NvbXBsZXRpb25FdmVudC5p
ZGwKICQoUFJPSkVDVF9ESVIpL01vZHVsZXMvd2ViYXVkaW8vT2ZmbGluZUF1ZGlvQ29udGV4dC5p
ZGwKICQoUFJPSkVDVF9ESVIpL01vZHVsZXMvd2ViYXVkaW8vT3NjaWxsYXRvck5vZGUuaWRsCiAk
KFBST0pFQ1RfRElSKS9Nb2R1bGVzL3dlYmF1ZGlvL1Bhbm5lck5vZGUuaWRsCiskKFBST0pFQ1Rf
RElSKS9Nb2R1bGVzL3dlYmF1ZGlvL1Bhbm5pbmdNb2RlbFR5cGUuaWRsCiAkKFBST0pFQ1RfRElS
KS9Nb2R1bGVzL3dlYmF1ZGlvL1BlcmlvZGljV2F2ZS5pZGwKICQoUFJPSkVDVF9ESVIpL01vZHVs
ZXMvd2ViYXVkaW8vU2NyaXB0UHJvY2Vzc29yTm9kZS5pZGwKICQoUFJPSkVDVF9ESVIpL01vZHVs
ZXMvd2ViYXVkaW8vV2F2ZVNoYXBlck5vZGUuaWRsCiskKFBST0pFQ1RfRElSKS9Nb2R1bGVzL3dl
YmF1ZGlvL1dlYktpdEF1ZGlvQ29udGV4dC5pZGwKKyQoUFJPSkVDVF9ESVIpL01vZHVsZXMvd2Vi
YXVkaW8vV2ViS2l0QXVkaW9QYW5uZXJOb2RlLmlkbAorJChQUk9KRUNUX0RJUikvTW9kdWxlcy93
ZWJhdWRpby9XZWJLaXRPZmZsaW5lQXVkaW9Db250ZXh0LmlkbAogJChQUk9KRUNUX0RJUikvTW9k
dWxlcy93ZWJhdXRobi9BdHRlc3RhdGlvbkNvbnZleWFuY2VQcmVmZXJlbmNlLmlkbAogJChQUk9K
RUNUX0RJUikvTW9kdWxlcy93ZWJhdXRobi9BdXRoZW50aWNhdGlvbkV4dGVuc2lvbnNDbGllbnRJ
bnB1dHMuaWRsCiAkKFBST0pFQ1RfRElSKS9Nb2R1bGVzL3dlYmF1dGhuL0F1dGhlbnRpY2F0aW9u
RXh0ZW5zaW9uc0NsaWVudE91dHB1dHMuaWRsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9E
ZXJpdmVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlzdCBiL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRT
b3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0CmluZGV4IGExNDMzNjI1MTQwLi5jYmM2NDhhZmY4NyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxp
c3QKKysrIGIvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxpc3QK
QEAgLTE1NSw2ICsxNTUsOCBAQCAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMv
V2ViQ29yZS9KU0F1ZGlvQ29uZmlndXJhdGlvbi5jcHAKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9E
ZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTQXVkaW9Db25maWd1cmF0aW9uLmgKICQoQlVJTFRfUFJP
RFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTQXVkaW9Db250ZXh0LmNwcAogJChC
VUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNBdWRpb0NvbnRleHQu
aAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNBdWRpb0Nv
bnRleHRTdGF0ZS5jcHAKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJD
b3JlL0pTQXVkaW9Db250ZXh0U3RhdGUuaAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRT
b3VyY2VzL1dlYkNvcmUvSlNBdWRpb0Rlc3RpbmF0aW9uTm9kZS5jcHAKICQoQlVJTFRfUFJPRFVD
VFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTQXVkaW9EZXN0aW5hdGlvbk5vZGUuaAog
JChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNBdWRpb0xpc3Rl
bmVyLmNwcApAQCAtNDg2LDYgKzQ4OCw4IEBAICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVk
U291cmNlcy9XZWJDb3JlL0pTRGV2aWNlT3JpZW50YXRpb25Pck1vdGlvbkV2ZW50LmNwCiAkKEJV
SUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0RldmljZU9yaWVudGF0
aW9uT3JNb3Rpb25FdmVudC5oCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMv
V2ViQ29yZS9KU0RldmljZU9yaWVudGF0aW9uT3JNb3Rpb25QZXJtaXNzaW9uU3RhdGUuY3BwCiAk
KEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0RldmljZU9yaWVu
dGF0aW9uT3JNb3Rpb25QZXJtaXNzaW9uU3RhdGUuaAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rl
cml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNEaXN0YW5jZU1vZGVsVHlwZS5jcHAKKyQoQlVJTFRfUFJP
RFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTRGlzdGFuY2VNb2RlbFR5cGUuaAog
JChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNEb2N1bWVudC5j
cHAKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTRG9jdW1l
bnQuaAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNEb2N1
bWVudEFuZEVsZW1lbnRFdmVudEhhbmRsZXJzLmNwcApAQCAtMTIyNCw2ICsxMjI4LDggQEAgJChC
VUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNQYWludFdvcmtsZXRH
bG9iYWxTY29wZS5jcHAKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJD
b3JlL0pTUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUuaAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rl
cml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNQYW5uZXJOb2RlLmNwcAogJChCVUlMVF9QUk9EVUNUU19E
SVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNQYW5uZXJOb2RlLmgKKyQoQlVJTFRfUFJPRFVD
VFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTUGFubmluZ01vZGVsVHlwZS5jcHAKKyQo
QlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTUGFubmluZ01vZGVs
VHlwZS5oCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU1Bh
cmVudE5vZGUuY3BwCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29y
ZS9KU1BhcmVudE5vZGUuaAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dl
YkNvcmUvSlNQYXRoMkQuY3BwCkBAIC0yMDc4LDYgKzIwODQsMTAgQEAgJChCVUlMVF9QUk9EVUNU
U19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNXZWJHUFVUZXh0dXJlVmlldy5jcHAKICQo
QlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTV2ViR1BVVGV4dHVy
ZVZpZXcuaAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNX
ZWJLaXRBbmltYXRpb25FdmVudC5jcHAKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291
cmNlcy9XZWJDb3JlL0pTV2ViS2l0QW5pbWF0aW9uRXZlbnQuaAorJChCVUlMVF9QUk9EVUNUU19E
SVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNXZWJLaXRBdWRpb0NvbnRleHQuY3BwCiskKEJV
SUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU1dlYktpdEF1ZGlvQ29u
dGV4dC5oCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU1dl
YktpdEF1ZGlvUGFubmVyTm9kZS5jcHAKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291
cmNlcy9XZWJDb3JlL0pTV2ViS2l0QXVkaW9QYW5uZXJOb2RlLmgKICQoQlVJTFRfUFJPRFVDVFNf
RElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTV2ViS2l0Q1NTTWF0cml4LmNwcAogJChCVUlM
VF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNXZWJLaXRDU1NNYXRyaXgu
aAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNXZWJLaXRD
U1NWaWV3cG9ydFJ1bGUuY3BwCkBAIC0yMDk0LDYgKzIxMDQsOCBAQCAkKEJVSUxUX1BST0RVQ1RT
X0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU1dlYktpdE1lZGlhS2V5cy5jcHAKICQoQlVJ
TFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTV2ViS2l0TWVkaWFLZXlz
LmgKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTV2ViS2l0
TmFtZXNwYWNlLmNwcAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNv
cmUvSlNXZWJLaXROYW1lc3BhY2UuaAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3Vy
Y2VzL1dlYkNvcmUvSlNXZWJLaXRPZmZsaW5lQXVkaW9Db250ZXh0LmNwcAorJChCVUlMVF9QUk9E
VUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNXZWJLaXRPZmZsaW5lQXVkaW9Db250
ZXh0LmgKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTV2Vi
S2l0UGxheWJhY2tUYXJnZXRBdmFpbGFiaWxpdHlFdmVudC5jcHAKICQoQlVJTFRfUFJPRFVDVFNf
RElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTV2ViS2l0UGxheWJhY2tUYXJnZXRBdmFpbGFi
aWxpdHlFdmVudC5oCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29y
ZS9KU1dlYktpdFBvaW50LmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNv
dXJjZXMubWFrZSBiL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UKaW5kZXggZDI2
NzA4OWUzODcuLmIyN2M3OWNlNjYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVk
U291cmNlcy5tYWtlCisrKyBiL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UKQEAg
LTM4Myw2ICszODMsNyBAQCBKU19CSU5ESU5HX0lETFMgPSBcCiAgICAgJChXZWJDb3JlKS9Nb2R1
bGVzL3dlYmF1ZGlvL0F1ZGlvQnVmZmVyQ2FsbGJhY2suaWRsIFwKICAgICAkKFdlYkNvcmUpL01v
ZHVsZXMvd2ViYXVkaW8vQXVkaW9CdWZmZXJTb3VyY2VOb2RlLmlkbCBcCiAgICAgJChXZWJDb3Jl
KS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQ29udGV4dC5pZGwgXAorICAgICQoV2ViQ29yZSkvTW9k
dWxlcy93ZWJhdWRpby9BdWRpb0NvbnRleHRTdGF0ZS5pZGwgXAogICAgICQoV2ViQ29yZSkvTW9k
dWxlcy93ZWJhdWRpby9BdWRpb0Rlc3RpbmF0aW9uTm9kZS5pZGwgXAogICAgICQoV2ViQ29yZSkv
TW9kdWxlcy93ZWJhdWRpby9BdWRpb0xpc3RlbmVyLmlkbCBcCiAgICAgJChXZWJDb3JlKS9Nb2R1
bGVzL3dlYmF1ZGlvL0F1ZGlvTm9kZS5pZGwgXApAQCAtMzkzLDYgKzM5NCw3IEBAIEpTX0JJTkRJ
TkdfSURMUyA9IFwKICAgICAkKFdlYkNvcmUpL01vZHVsZXMvd2ViYXVkaW8vQ2hhbm5lbFNwbGl0
dGVyTm9kZS5pZGwgXAogICAgICQoV2ViQ29yZSkvTW9kdWxlcy93ZWJhdWRpby9Db252b2x2ZXJO
b2RlLmlkbCBcCiAgICAgJChXZWJDb3JlKS9Nb2R1bGVzL3dlYmF1ZGlvL0RlbGF5Tm9kZS5pZGwg
XAorICAgICQoV2ViQ29yZSkvTW9kdWxlcy93ZWJhdWRpby9EaXN0YW5jZU1vZGVsVHlwZS5pZGwg
XAogICAgICQoV2ViQ29yZSkvTW9kdWxlcy93ZWJhdWRpby9EeW5hbWljc0NvbXByZXNzb3JOb2Rl
LmlkbCBcCiAgICAgJChXZWJDb3JlKS9Nb2R1bGVzL3dlYmF1ZGlvL0dhaW5Ob2RlLmlkbCBcCiAg
ICAgJChXZWJDb3JlKS9Nb2R1bGVzL3dlYmF1ZGlvL01lZGlhRWxlbWVudEF1ZGlvU291cmNlTm9k
ZS5pZGwgXApAQCAtNDAyLDkgKzQwNCwxMyBAQCBKU19CSU5ESU5HX0lETFMgPSBcCiAgICAgJChX
ZWJDb3JlKS9Nb2R1bGVzL3dlYmF1ZGlvL09mZmxpbmVBdWRpb0NvbnRleHQuaWRsIFwKICAgICAk
KFdlYkNvcmUpL01vZHVsZXMvd2ViYXVkaW8vT3NjaWxsYXRvck5vZGUuaWRsIFwKICAgICAkKFdl
YkNvcmUpL01vZHVsZXMvd2ViYXVkaW8vUGFubmVyTm9kZS5pZGwgXAorICAgICQoV2ViQ29yZSkv
TW9kdWxlcy93ZWJhdWRpby9QYW5uaW5nTW9kZWxUeXBlLmlkbCBcCiAgICAgJChXZWJDb3JlKS9N
b2R1bGVzL3dlYmF1ZGlvL1BlcmlvZGljV2F2ZS5pZGwgXAogICAgICQoV2ViQ29yZSkvTW9kdWxl
cy93ZWJhdWRpby9TY3JpcHRQcm9jZXNzb3JOb2RlLmlkbCBcCiAgICAgJChXZWJDb3JlKS9Nb2R1
bGVzL3dlYmF1ZGlvL1dhdmVTaGFwZXJOb2RlLmlkbCBcCisgICAgJChXZWJDb3JlKS9Nb2R1bGVz
L3dlYmF1ZGlvL1dlYktpdEF1ZGlvQ29udGV4dC5pZGwgXAorICAgICQoV2ViQ29yZSkvTW9kdWxl
cy93ZWJhdWRpby9XZWJLaXRBdWRpb1Bhbm5lck5vZGUuaWRsIFwKKyAgICAkKFdlYkNvcmUpL01v
ZHVsZXMvd2ViYXVkaW8vV2ViS2l0T2ZmbGluZUF1ZGlvQ29udGV4dC5pZGwgXAogICAgICQoV2Vi
Q29yZSkvTW9kdWxlcy93ZWJhdXRobi9BdHRlc3RhdGlvbkNvbnZleWFuY2VQcmVmZXJlbmNlLmlk
bCBcCiAgICAgJChXZWJDb3JlKS9Nb2R1bGVzL3dlYmF1dGhuL0F1dGhlbnRpY2F0aW9uRXh0ZW5z
aW9uc0NsaWVudElucHV0cy5pZGwgXAogICAgICQoV2ViQ29yZSkvTW9kdWxlcy93ZWJhdXRobi9B
dXRoZW50aWNhdGlvbkV4dGVuc2lvbnNDbGllbnRPdXRwdXRzLmlkbCBcCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0FuYWx5c2VyTm9kZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0FuYWx5c2VyTm9kZS5jcHAKaW5kZXggMTc5ODcwNzAx
ZjguLjIxNWRlMzIxZTlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1
ZGlvL0FuYWx5c2VyTm9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRp
by9BbmFseXNlck5vZGUuY3BwCkBAIC0zNiw3ICszNiw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAogV1RGX01BS0VfSVNPX0FMTE9DQVRFRF9JTVBMKEFuYWx5c2VyTm9kZSk7CiAKLUFuYWx5c2Vy
Tm9kZTo6QW5hbHlzZXJOb2RlKEF1ZGlvQ29udGV4dCYgY29udGV4dCwgZmxvYXQgc2FtcGxlUmF0
ZSkKK0FuYWx5c2VyTm9kZTo6QW5hbHlzZXJOb2RlKEF1ZGlvQ29udGV4dEJhc2UmIGNvbnRleHQs
IGZsb2F0IHNhbXBsZVJhdGUpCiAgICAgOiBBdWRpb0Jhc2ljSW5zcGVjdG9yTm9kZShjb250ZXh0
LCBzYW1wbGVSYXRlLCAyKQogewogICAgIHNldE5vZGVUeXBlKE5vZGVUeXBlQW5hbHlzZXIpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BbmFseXNlck5vZGUu
aCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQW5hbHlzZXJOb2RlLmgKaW5kZXgg
ZGExYjVlODljYTIuLmE0MDIzYTMwZGVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmF1ZGlvL0FuYWx5c2VyTm9kZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViYXVkaW8vQW5hbHlzZXJOb2RlLmgKQEAgLTMyLDcgKzMyLDcgQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogY2xhc3MgQW5hbHlzZXJOb2RlIGZpbmFsIDogcHVibGljIEF1ZGlvQmFzaWNJbnNwZWN0
b3JOb2RlIHsKICAgICBXVEZfTUFLRV9JU09fQUxMT0NBVEVEKEFuYWx5c2VyTm9kZSk7CiBwdWJs
aWM6Ci0gICAgc3RhdGljIFJlZjxBbmFseXNlck5vZGU+IGNyZWF0ZShBdWRpb0NvbnRleHQmIGNv
bnRleHQsIGZsb2F0IHNhbXBsZVJhdGUpCisgICAgc3RhdGljIFJlZjxBbmFseXNlck5vZGU+IGNy
ZWF0ZShBdWRpb0NvbnRleHRCYXNlJiBjb250ZXh0LCBmbG9hdCBzYW1wbGVSYXRlKQogICAgIHsK
ICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQW5hbHlzZXJOb2RlKGNvbnRleHQsIHNhbXBs
ZVJhdGUpKTsKICAgICB9CkBAIC01OCw3ICs1OCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGdldEJ5
dGVUaW1lRG9tYWluRGF0YShjb25zdCBSZWZQdHI8SlNDOjpVaW50OEFycmF5PiYgYXJyYXkpIHsg
bV9hbmFseXNlci5nZXRCeXRlVGltZURvbWFpbkRhdGEoYXJyYXkuZ2V0KCkpOyB9CiAKIHByaXZh
dGU6Ci0gICAgQW5hbHlzZXJOb2RlKEF1ZGlvQ29udGV4dCYsIGZsb2F0IHNhbXBsZVJhdGUpOwor
ICAgIEFuYWx5c2VyTm9kZShBdWRpb0NvbnRleHRCYXNlJiwgZmxvYXQgc2FtcGxlUmF0ZSk7CiAK
ICAgICB2b2lkIHByb2Nlc3Moc2l6ZV90IGZyYW1lc1RvUHJvY2VzcykgZmluYWw7CiAgICAgdm9p
ZCByZXNldCgpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJh
dWRpby9BdWRpb0Jhc2ljSW5zcGVjdG9yTm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmF1ZGlvL0F1ZGlvQmFzaWNJbnNwZWN0b3JOb2RlLmNwcAppbmRleCAwZmI1NWIwOGYwYy4u
MTQ1M2RhY2FmZGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8v
QXVkaW9CYXNpY0luc3BlY3Rvck5vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViYXVkaW8vQXVkaW9CYXNpY0luc3BlY3Rvck5vZGUuY3BwCkBAIC0zNiw3ICszNiw3IEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAogV1RGX01BS0VfSVNPX0FMTE9DQVRFRF9JTVBMKEF1ZGlvQmFz
aWNJbnNwZWN0b3JOb2RlKTsKIAotQXVkaW9CYXNpY0luc3BlY3Rvck5vZGU6OkF1ZGlvQmFzaWNJ
bnNwZWN0b3JOb2RlKEF1ZGlvQ29udGV4dCYgY29udGV4dCwgZmxvYXQgc2FtcGxlUmF0ZSwgdW5z
aWduZWQgb3V0cHV0Q2hhbm5lbENvdW50KQorQXVkaW9CYXNpY0luc3BlY3Rvck5vZGU6OkF1ZGlv
QmFzaWNJbnNwZWN0b3JOb2RlKEF1ZGlvQ29udGV4dEJhc2UmIGNvbnRleHQsIGZsb2F0IHNhbXBs
ZVJhdGUsIHVuc2lnbmVkIG91dHB1dENoYW5uZWxDb3VudCkKICAgICA6IEF1ZGlvTm9kZShjb250
ZXh0LCBzYW1wbGVSYXRlKQogewogICAgIHNldE5vZGVUeXBlKE5vZGVUeXBlQmFzaWNJbnNwZWN0
b3IpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0Jh
c2ljSW5zcGVjdG9yTm9kZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRp
b0Jhc2ljSW5zcGVjdG9yTm9kZS5oCmluZGV4IDgwZTA4ZDI5NjE3Li5lNzY5ZTQ2YWUyMSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0Jhc2ljSW5zcGVj
dG9yTm9kZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9CYXNp
Y0luc3BlY3Rvck5vZGUuaApAQCAtMzQsNyArMzQsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBj
bGFzcyBBdWRpb0Jhc2ljSW5zcGVjdG9yTm9kZSA6IHB1YmxpYyBBdWRpb05vZGUgewogICAgIFdU
Rl9NQUtFX0lTT19BTExPQ0FURUQoQXVkaW9CYXNpY0luc3BlY3Rvck5vZGUpOwogcHVibGljOgot
ICAgIEF1ZGlvQmFzaWNJbnNwZWN0b3JOb2RlKEF1ZGlvQ29udGV4dCYsIGZsb2F0IHNhbXBsZVJh
dGUsIHVuc2lnbmVkIG91dHB1dENoYW5uZWxDb3VudCk7CisgICAgQXVkaW9CYXNpY0luc3BlY3Rv
ck5vZGUoQXVkaW9Db250ZXh0QmFzZSYsIGZsb2F0IHNhbXBsZVJhdGUsIHVuc2lnbmVkIG91dHB1
dENoYW5uZWxDb3VudCk7CiAKIHByaXZhdGU6CiAgICAgdm9pZCBwdWxsSW5wdXRzKHNpemVfdCBm
cmFtZXNUb1Byb2Nlc3MpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJhdWRpby9BdWRpb0Jhc2ljUHJvY2Vzc29yTm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQmFzaWNQcm9jZXNzb3JOb2RlLmNwcAppbmRleCAwYjlm
MWNlZDg3NC4uZjdiNzk2YmU1NTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViYXVkaW8vQXVkaW9CYXNpY1Byb2Nlc3Nvck5vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViYXVkaW8vQXVkaW9CYXNpY1Byb2Nlc3Nvck5vZGUuY3BwCkBAIC0zOSw3ICsz
OSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogV1RGX01BS0VfSVNPX0FMTE9DQVRFRF9JTVBM
KEF1ZGlvQmFzaWNQcm9jZXNzb3JOb2RlKTsKIAotQXVkaW9CYXNpY1Byb2Nlc3Nvck5vZGU6OkF1
ZGlvQmFzaWNQcm9jZXNzb3JOb2RlKEF1ZGlvQ29udGV4dCYgY29udGV4dCwgZmxvYXQgc2FtcGxl
UmF0ZSkKK0F1ZGlvQmFzaWNQcm9jZXNzb3JOb2RlOjpBdWRpb0Jhc2ljUHJvY2Vzc29yTm9kZShB
dWRpb0NvbnRleHRCYXNlJiBjb250ZXh0LCBmbG9hdCBzYW1wbGVSYXRlKQogICAgIDogQXVkaW9O
b2RlKGNvbnRleHQsIHNhbXBsZVJhdGUpCiB7CiAgICAgYWRkSW5wdXQobWFrZVVuaXF1ZTxBdWRp
b05vZGVJbnB1dD4odGhpcykpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJhdWRpby9BdWRpb0Jhc2ljUHJvY2Vzc29yTm9kZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJhdWRpby9BdWRpb0Jhc2ljUHJvY2Vzc29yTm9kZS5oCmluZGV4IDgyY2ZmZGE1OWYyLi5l
MTYzNzNiZjAyOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9B
dWRpb0Jhc2ljUHJvY2Vzc29yTm9kZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
YXVkaW8vQXVkaW9CYXNpY1Byb2Nlc3Nvck5vZGUuaApAQCAtMzcsNyArMzcsNyBAQCBjbGFzcyBB
dWRpb1Byb2Nlc3NvcjsKIGNsYXNzIEF1ZGlvQmFzaWNQcm9jZXNzb3JOb2RlIDogcHVibGljIEF1
ZGlvTm9kZSB7CiAgICAgV1RGX01BS0VfSVNPX0FMTE9DQVRFRChBdWRpb0Jhc2ljUHJvY2Vzc29y
Tm9kZSk7CiBwdWJsaWM6Ci0gICAgQXVkaW9CYXNpY1Byb2Nlc3Nvck5vZGUoQXVkaW9Db250ZXh0
JiwgZmxvYXQgc2FtcGxlUmF0ZSk7CisgICAgQXVkaW9CYXNpY1Byb2Nlc3Nvck5vZGUoQXVkaW9D
b250ZXh0QmFzZSYsIGZsb2F0IHNhbXBsZVJhdGUpOwogCiAgICAgLy8gQXVkaW9Ob2RlCiAgICAg
dm9pZCBwcm9jZXNzKHNpemVfdCBmcmFtZXNUb1Byb2Nlc3MpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0J1ZmZlclNvdXJjZU5vZGUu
Y3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0J1ZmZlclNvdXJjZU5v
ZGUuY3BwCmluZGV4IGMzNjYxZGU1N2Q3Li4wYzFiYTRlOTRhOSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0J1ZmZlclNvdXJjZU5vZGUuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9CdWZmZXJTb3VyY2VOb2RlLmNw
cApAQCAtNDksMTIgKzQ5LDEyIEBAIGNvbnN0IGRvdWJsZSBEZWZhdWx0R3JhaW5EdXJhdGlvbiA9
IDAuMDIwOyAvLyAyMG1zCiAvLyB0byBtaW5pbWl6ZSBsaW5lYXIgaW50ZXJwb2xhdGlvbiBhbGlh
c2luZy4KIGNvbnN0IGRvdWJsZSBNYXhSYXRlID0gMTAyNDsKIAotUmVmPEF1ZGlvQnVmZmVyU291
cmNlTm9kZT4gQXVkaW9CdWZmZXJTb3VyY2VOb2RlOjpjcmVhdGUoQXVkaW9Db250ZXh0JiBjb250
ZXh0LCBmbG9hdCBzYW1wbGVSYXRlKQorUmVmPEF1ZGlvQnVmZmVyU291cmNlTm9kZT4gQXVkaW9C
dWZmZXJTb3VyY2VOb2RlOjpjcmVhdGUoQXVkaW9Db250ZXh0QmFzZSYgY29udGV4dCwgZmxvYXQg
c2FtcGxlUmF0ZSkKIHsKICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBBdWRpb0J1ZmZlclNvdXJj
ZU5vZGUoY29udGV4dCwgc2FtcGxlUmF0ZSkpOwogfQogCi1BdWRpb0J1ZmZlclNvdXJjZU5vZGU6
OkF1ZGlvQnVmZmVyU291cmNlTm9kZShBdWRpb0NvbnRleHQmIGNvbnRleHQsIGZsb2F0IHNhbXBs
ZVJhdGUpCitBdWRpb0J1ZmZlclNvdXJjZU5vZGU6OkF1ZGlvQnVmZmVyU291cmNlTm9kZShBdWRp
b0NvbnRleHRCYXNlJiBjb250ZXh0LCBmbG9hdCBzYW1wbGVSYXRlKQogICAgIDogQXVkaW9TY2hl
ZHVsZWRTb3VyY2VOb2RlKGNvbnRleHQsIHNhbXBsZVJhdGUpCiAgICAgLCBtX2J1ZmZlcihudWxs
cHRyKQogICAgICwgbV9pc0xvb3BpbmcoZmFsc2UpCkBAIC00MTMsNyArNDEzLDcgQEAgdm9pZCBB
dWRpb0J1ZmZlclNvdXJjZU5vZGU6OnNldEJ1ZmZlcihSZWZQdHI8QXVkaW9CdWZmZXI+JiYgYnVm
ZmVyKQogICAgIERFQlVHX0xPRyhMT0dJREVOVElGSUVSKTsKIAogICAgIC8vIFRoZSBjb250ZXh0
IG11c3QgYmUgbG9ja2VkIHNpbmNlIGNoYW5naW5nIHRoZSBidWZmZXIgY2FuIHJlLWNvbmZpZ3Vy
ZSB0aGUgbnVtYmVyIG9mIGNoYW5uZWxzIHRoYXQgYXJlIG91dHB1dC4KLSAgICBBdWRpb0NvbnRl
eHQ6OkF1dG9Mb2NrZXIgY29udGV4dExvY2tlcihjb250ZXh0KCkpOworICAgIEF1ZGlvQ29udGV4
dEJhc2U6OkF1dG9Mb2NrZXIgY29udGV4dExvY2tlcihjb250ZXh0KCkpOwogICAgIAogICAgIC8v
IFRoaXMgc3luY2hyb25pemVzIHdpdGggcHJvY2VzcygpLgogICAgIGF1dG8gbG9ja2VyID0gaG9s
ZExvY2sobV9wcm9jZXNzTXV0ZXgpOwpAQCAtNTU3LDcgKzU1Nyw3IEBAIGJvb2wgQXVkaW9CdWZm
ZXJTb3VyY2VOb2RlOjpwcm9wYWdhdGVzU2lsZW5jZSgpIGNvbnN0CiAgICAgcmV0dXJuICFpc1Bs
YXlpbmdPclNjaGVkdWxlZCgpIHx8IGhhc0ZpbmlzaGVkKCkgfHwgIW1fYnVmZmVyOwogfQogCi12
b2lkIEF1ZGlvQnVmZmVyU291cmNlTm9kZTo6c2V0UGFubmVyTm9kZShQYW5uZXJOb2RlKiBwYW5u
ZXJOb2RlKQordm9pZCBBdWRpb0J1ZmZlclNvdXJjZU5vZGU6OnNldFBhbm5lck5vZGUoUGFubmVy
Tm9kZUJhc2UqIHBhbm5lck5vZGUpCiB7CiAgICAgaWYgKG1fcGFubmVyTm9kZSAhPSBwYW5uZXJO
b2RlICYmICFoYXNGaW5pc2hlZCgpKSB7CiAgICAgICAgIGlmIChwYW5uZXJOb2RlKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0J1ZmZlclNvdXJjZU5v
ZGUuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9CdWZmZXJTb3VyY2VO
b2RlLmgKaW5kZXggNTQ4YjI2ZTdmYTcuLjYwMTEzMTE5OWE0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQnVmZmVyU291cmNlTm9kZS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9CdWZmZXJTb3VyY2VOb2RlLmgKQEAg
LTMxLDcgKzMxLDcgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQXVkaW9CdWZmZXI7
Ci1jbGFzcyBQYW5uZXJOb2RlOworY2xhc3MgUGFubmVyTm9kZUJhc2U7CiAKIC8vIEF1ZGlvQnVm
ZmVyU291cmNlTm9kZSBpcyBhbiBBdWRpb05vZGUgcmVwcmVzZW50aW5nIGFuIGF1ZGlvIHNvdXJj
ZSBmcm9tIGFuIGluLW1lbW9yeSBhdWRpbyBhc3NldCByZXByZXNlbnRlZCBieSBhbiBBdWRpb0J1
ZmZlci4KIC8vIEl0IGdlbmVyYWxseSB3aWxsIGJlIHVzZWQgZm9yIHNob3J0IHNvdW5kcyB3aGlj
aCByZXF1aXJlIGEgaGlnaCBkZWdyZWUgb2Ygc2NoZWR1bGluZyBmbGV4aWJpbGl0eSAoY2FuIHBs
YXliYWNrIGluIHJoeXRobWljYWxseSBwZXJmZWN0IHdheXMpLgpAQCAtMzksNyArMzksNyBAQCBj
bGFzcyBQYW5uZXJOb2RlOwogY2xhc3MgQXVkaW9CdWZmZXJTb3VyY2VOb2RlIGZpbmFsIDogcHVi
bGljIEF1ZGlvU2NoZWR1bGVkU291cmNlTm9kZSB7CiAgICAgV1RGX01BS0VfSVNPX0FMTE9DQVRF
RChBdWRpb0J1ZmZlclNvdXJjZU5vZGUpOwogcHVibGljOgotICAgIHN0YXRpYyBSZWY8QXVkaW9C
dWZmZXJTb3VyY2VOb2RlPiBjcmVhdGUoQXVkaW9Db250ZXh0JiwgZmxvYXQgc2FtcGxlUmF0ZSk7
CisgICAgc3RhdGljIFJlZjxBdWRpb0J1ZmZlclNvdXJjZU5vZGU+IGNyZWF0ZShBdWRpb0NvbnRl
eHRCYXNlJiwgZmxvYXQgc2FtcGxlUmF0ZSk7CiAKICAgICB2aXJ0dWFsIH5BdWRpb0J1ZmZlclNv
dXJjZU5vZGUoKTsKIApAQCAtNzksNyArNzksNyBAQCBwdWJsaWM6CiAgICAgQXVkaW9QYXJhbSog
cGxheWJhY2tSYXRlKCkgeyByZXR1cm4gbV9wbGF5YmFja1JhdGUuZ2V0KCk7IH0KIAogICAgIC8v
IElmIGEgcGFubmVyIG5vZGUgaXMgc2V0LCB0aGVuIHdlIGNhbiBpbmNvcnBvcmF0ZSBkb3BwbGVy
IHNoaWZ0IGludG8gdGhlIHBsYXliYWNrIHBpdGNoIHJhdGUuCi0gICAgdm9pZCBzZXRQYW5uZXJO
b2RlKFBhbm5lck5vZGUqKTsKKyAgICB2b2lkIHNldFBhbm5lck5vZGUoUGFubmVyTm9kZUJhc2Uq
KTsKICAgICB2b2lkIGNsZWFyUGFubmVyTm9kZSgpOwogCiAgICAgLy8gSWYgd2UgYXJlIG5vIGxv
bmdlciBwbGF5aW5nLCBwcm9wb2dhdGUgc2lsZW5jZSBhaGVhZCB0byBkb3duc3RyZWFtIG5vZGVz
LgpAQCAtOTEsNyArOTEsNyBAQCBwdWJsaWM6CiAgICAgY29uc3QgY2hhciogYWN0aXZlRE9NT2Jq
ZWN0TmFtZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuICJBdWRpb0J1ZmZlclNvdXJjZU5vZGUi
OyB9CiAKIHByaXZhdGU6Ci0gICAgQXVkaW9CdWZmZXJTb3VyY2VOb2RlKEF1ZGlvQ29udGV4dCYs
IGZsb2F0IHNhbXBsZVJhdGUpOworICAgIEF1ZGlvQnVmZmVyU291cmNlTm9kZShBdWRpb0NvbnRl
eHRCYXNlJiwgZmxvYXQgc2FtcGxlUmF0ZSk7CiAKICAgICBkb3VibGUgdGFpbFRpbWUoKSBjb25z
dCBmaW5hbCB7IHJldHVybiAwOyB9CiAgICAgZG91YmxlIGxhdGVuY3lUaW1lKCkgY29uc3QgZmlu
YWwgeyByZXR1cm4gMDsgfQpAQCAtMTQ1LDcgKzE0NSw3IEBAIHByaXZhdGU6CiAKICAgICAvLyBX
ZSBvcHRpb25hbGx5IGtlZXAgdHJhY2sgb2YgYSBwYW5uZXIgbm9kZSB3aGljaCBoYXMgYSBkb3Bw
bGVyIHNoaWZ0IHRoYXQgaXMgaW5jb3Jwb3JhdGVkIGludG8KICAgICAvLyB0aGUgcGl0Y2ggcmF0
ZS4gV2UgbWFudWFsbHkgbWFuYWdlIHJlZi1jb3VudGluZyBiZWNhdXNlIHdlIHdhbnQgdG8gdXNl
IFJlZlR5cGVDb25uZWN0aW9uLgotICAgIFBhbm5lck5vZGUqIG1fcGFubmVyTm9kZTsKKyAgICBQ
YW5uZXJOb2RlQmFzZSogbV9wYW5uZXJOb2RlOwogCiAgICAgLy8gVGhpcyBzeW5jaHJvbml6ZXMg
cHJvY2VzcygpIHdpdGggc2V0QnVmZmVyKCkgd2hpY2ggY2FuIGNhdXNlIGR5bmFtaWMgY2hhbm5l
bCBjb3VudCBjaGFuZ2VzLgogICAgIG11dGFibGUgTG9jayBtX3Byb2Nlc3NNdXRleDsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0LmNwcAppbmRleCAz
ODJkYzdjZjBjZC4uOGM0ZjNlZmI4YTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmF1ZGlvL0F1ZGlvQ29udGV4dC5jcHAKQEAgLTEwNyw2ICsxMDcsNyBAQCBjb25zdCB1bnNp
Z25lZCBNYXhQZXJpb2RpY1dhdmVMZW5ndGggPSA0MDk2OwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKK1dURl9NQUtFX0lTT19BTExPQ0FURURfSU1QTChBdWRpb0NvbnRleHRCYXNlKTsKIFdURl9N
QUtFX0lTT19BTExPQ0FURURfSU1QTChBdWRpb0NvbnRleHQpOwogCiAjZGVmaW5lIFJFTEVBU0Vf
TE9HX0lGX0FMTE9XRUQoZm10LCAuLi4pIFJFTEVBU0VfTE9HX0lGKGRvY3VtZW50KCkgJiYgZG9j
dW1lbnQoKS0+cGFnZSgpICYmIGRvY3VtZW50KCktPnBhZ2UoKS0+aXNBbHdheXNPbkxvZ2dpbmdB
bGxvd2VkKCksIE1lZGlhLCAiJXAgLSBBdWRpb0NvbnRleHQ6OiIgZm10LCB0aGlzLCAjI19fVkFf
QVJHU19fKQpAQCAtMTM3LDkgKzEzOCwxNCBAQCBFeGNlcHRpb25PcjxSZWY8QXVkaW9Db250ZXh0
Pj4gQXVkaW9Db250ZXh0OjpjcmVhdGUoRG9jdW1lbnQmIGRvY3VtZW50KQogICAgIHJldHVybiBh
dWRpb0NvbnRleHQ7CiB9CiAKK0F1ZGlvQ29udGV4dEJhc2U6OkF1ZGlvQ29udGV4dEJhc2UoRG9j
dW1lbnQmIGRvY3VtZW50KQorICAgIDogQWN0aXZlRE9NT2JqZWN0KGRvY3VtZW50KQoreworfQor
CiAvLyBDb25zdHJ1Y3RvciBmb3IgcmVuZGVyaW5nIHRvIHRoZSBhdWRpbyBoYXJkd2FyZS4KIEF1
ZGlvQ29udGV4dDo6QXVkaW9Db250ZXh0KERvY3VtZW50JiBkb2N1bWVudCkKLSAgICA6IEFjdGl2
ZURPTU9iamVjdChkb2N1bWVudCkKKyAgICA6IEF1ZGlvQ29udGV4dEJhc2UoZG9jdW1lbnQpCiAj
aWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECiAgICAgLCBtX2xvZ2dlcihkb2N1bWVudC5sb2dnZXIo
KSkKICAgICAsIG1fbG9nSWRlbnRpZmllcih1bmlxdWVMb2dJZGVudGlmaWVyKCkpCkBAIC0xNjQs
NyArMTcwLDcgQEAgQXVkaW9Db250ZXh0OjpBdWRpb0NvbnRleHQoRG9jdW1lbnQmIGRvY3VtZW50
KQogCiAvLyBDb25zdHJ1Y3RvciBmb3Igb2ZmbGluZSAobm9uLXJlYWx0aW1lKSByZW5kZXJpbmcu
CiBBdWRpb0NvbnRleHQ6OkF1ZGlvQ29udGV4dChEb2N1bWVudCYgZG9jdW1lbnQsIEF1ZGlvQnVm
ZmVyKiByZW5kZXJUYXJnZXQpCi0gICAgOiBBY3RpdmVET01PYmplY3QoZG9jdW1lbnQpCisgICAg
OiBBdWRpb0NvbnRleHRCYXNlKGRvY3VtZW50KQogI2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRAog
ICAgICwgbV9sb2dnZXIoZG9jdW1lbnQubG9nZ2VyKCkpCiAgICAgLCBtX2xvZ0lkZW50aWZpZXIo
dW5pcXVlTG9nSWRlbnRpZmllcigpKQpAQCAtMzY2LDcgKzM3Miw3IEBAIGNvbnN0IGNoYXIqIEF1
ZGlvQ29udGV4dDo6YWN0aXZlRE9NT2JqZWN0TmFtZSgpIGNvbnN0CiAgICAgcmV0dXJuICJBdWRp
b0NvbnRleHQiOwogfQogCi1Eb2N1bWVudCogQXVkaW9Db250ZXh0Ojpkb2N1bWVudCgpIGNvbnN0
CitEb2N1bWVudCogQXVkaW9Db250ZXh0QmFzZTo6ZG9jdW1lbnQoKSBjb25zdAogewogICAgIHJl
dHVybiBkb3duY2FzdDxEb2N1bWVudD4obV9zY3JpcHRFeGVjdXRpb25Db250ZXh0KTsKIH0KQEAg
LTEwNjgsNyArMTA3NCw3IEBAIHZvaWQgQXVkaW9Db250ZXh0Ojpwcm9jZXNzQXV0b21hdGljUHVs
bE5vZGVzKHNpemVfdCBmcmFtZXNUb1Byb2Nlc3MpCiAgICAgICAgIG5vZGUtPnByb2Nlc3NJZk5l
Y2Vzc2FyeShmcmFtZXNUb1Byb2Nlc3MpOwogfQogCi1TY3JpcHRFeGVjdXRpb25Db250ZXh0KiBB
dWRpb0NvbnRleHQ6OnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSBjb25zdAorU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCogQXVkaW9Db250ZXh0QmFzZTo6c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpIGNv
bnN0CiB7CiAgICAgcmV0dXJuIEFjdGl2ZURPTU9iamVjdDo6c2NyaXB0RXhlY3V0aW9uQ29udGV4
dCgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRp
b0NvbnRleHQuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0
LmgKaW5kZXggOGUwOTQzOTRjZmYuLmE5NmFiMjM5NWZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQ29udGV4dC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0LmgKQEAgLTI4LDYgKzI4LDcgQEAKICNpbmNs
dWRlICJBY3RpdmVET01PYmplY3QuaCIKICNpbmNsdWRlICJBc3luY0F1ZGlvRGVjb2Rlci5oIgog
I2luY2x1ZGUgIkF1ZGlvQnVzLmgiCisjaW5jbHVkZSAiQXVkaW9Db250ZXh0U3RhdGUuaCIKICNp
bmNsdWRlICJBdWRpb0Rlc3RpbmF0aW9uTm9kZS5oIgogI2luY2x1ZGUgIkV2ZW50VGFyZ2V0Lmgi
CiAjaW5jbHVkZSAiTWVkaWFDYW5TdGFydExpc3RlbmVyLmgiCkBAIC03OSwyMCArODAsMTE3IEBA
IGNsYXNzIFdhdmVTaGFwZXJOb2RlOwogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBJRExUeXBlPiBjbGFz
cyBET01Qcm9taXNlRGVmZXJyZWQ7CiAKLS8vIEF1ZGlvQ29udGV4dCBpcyB0aGUgY29ybmVyc3Rv
bmUgb2YgdGhlIHdlYiBhdWRpbyBBUEkgYW5kIGFsbCBBdWRpb05vZGVzIGFyZSBjcmVhdGVkIGZy
b20gaXQuCi0vLyBGb3IgdGhyZWFkIHNhZmV0eSBiZXR3ZWVuIHRoZSBhdWRpbyB0aHJlYWQgYW5k
IHRoZSBtYWluIHRocmVhZCwgaXQgaGFzIGEgcmVuZGVyaW5nIGdyYXBoIGxvY2tpbmcgbWVjaGFu
aXNtLiAKLQotY2xhc3MgQXVkaW9Db250ZXh0CitjbGFzcyBBdWRpb0NvbnRleHRCYXNlCiAgICAg
OiBwdWJsaWMgQWN0aXZlRE9NT2JqZWN0CiAgICAgLCBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50
ZWQ8QXVkaW9Db250ZXh0PgogICAgICwgcHVibGljIEV2ZW50VGFyZ2V0V2l0aElubGluZURhdGEK
ICAgICAsIHB1YmxpYyBNZWRpYUNhblN0YXJ0TGlzdGVuZXIKICAgICAsIHB1YmxpYyBNZWRpYVBy
b2R1Y2VyCi0gICAgLCBwcml2YXRlIFBsYXRmb3JtTWVkaWFTZXNzaW9uQ2xpZW50Ci0gICAgLCBw
cml2YXRlIFZpc2liaWxpdHlDaGFuZ2VDbGllbnQKICNpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQK
LSAgICAsIHByaXZhdGUgTG9nZ2VySGVscGVyCisgICAgLCBwdWJsaWMgTG9nZ2VySGVscGVyCiAj
ZW5kaWYKK3sKKyAgICBXVEZfTUFLRV9JU09fQUxMT0NBVEVEKEF1ZGlvQ29udGV4dEJhc2UpOwor
cHVibGljOgorICAgIHZpcnR1YWwgfkF1ZGlvQ29udGV4dEJhc2UoKSA9IGRlZmF1bHQ7CisKKyAg
ICAvLyBSZWNvbmNpbGUgcmVmL2RlcmVmIHdoaWNoIGFyZSBkZWZpbmVkIGJvdGggaW4gVGhyZWFk
U2FmZVJlZkNvdW50ZWQgYW5kIEV2ZW50VGFyZ2V0LgorICAgIHVzaW5nIFRocmVhZFNhZmVSZWZD
b3VudGVkOjpyZWY7CisgICAgdXNpbmcgVGhyZWFkU2FmZVJlZkNvdW50ZWQ6OmRlcmVmOworCisg
ICAgRG9jdW1lbnQqIGRvY3VtZW50KCkgY29uc3Q7CisKKyAgICB2aXJ0dWFsIGJvb2wgaXNJbml0
aWFsaXplZCgpIGNvbnN0ID0gMDsKKworICAgIHZpcnR1YWwgc2l6ZV90IGN1cnJlbnRTYW1wbGVG
cmFtZSgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGZsb2F0IHNhbXBsZVJhdGUoKSBjb25zdCA9
IDA7CisgICAgdmlydHVhbCBkb3VibGUgY3VycmVudFRpbWUoKSBjb25zdCA9IDA7CisgICAgdmly
dHVhbCBib29sIGlzR3JhcGhPd25lcigpIGNvbnN0ID0gMDsKKworICAgIHZpcnR1YWwgdm9pZCBz
ZXRBdWRpb1RocmVhZChUaHJlYWQmKSA9IDA7CisgICAgdmlydHVhbCBib29sIGlzQXVkaW9UaHJl
YWQoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBib29sIGlzQXVkaW9UaHJlYWRGaW5pc2hlZCgp
ID0gMDsKKworICAgIHZpcnR1YWwgdm9pZCBpc1BsYXlpbmdBdWRpb0RpZENoYW5nZSgpID0gMDsK
KyAgICB2aXJ0dWFsIHZvaWQgbm9kZVdpbGxCZWdpblBsYXliYWNrKCkgPSAwOworCisgICAgdmly
dHVhbCB2b2lkIHBvc3RUYXNrKFdURjo6RnVuY3Rpb248dm9pZCgpPiYmKSA9IDA7CisgICAgdmly
dHVhbCBib29sIGlzU3RvcHBlZCgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGNvbnN0IFNlY3Vy
aXR5T3JpZ2luKiBvcmlnaW4oKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCB2b2lkIGFkZENvbnNv
bGVNZXNzYWdlKE1lc3NhZ2VTb3VyY2UsIE1lc3NhZ2VMZXZlbCwgY29uc3QgU3RyaW5nJiBtZXNz
YWdlKSA9IDA7CisKKyAgICB2aXJ0dWFsIHZvaWQgbWFya0ZvckRlbGV0aW9uKEF1ZGlvTm9kZSYp
ID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZGVsZXRlTWFya2VkTm9kZXMoKSA9IDA7CisKKyAgICB2
aXJ0dWFsIHZvaWQgaGFuZGxlUHJlUmVuZGVyVGFza3MoKSA9IDA7CisgICAgdmlydHVhbCB2b2lk
IGhhbmRsZVBvc3RSZW5kZXJUYXNrcygpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgcHJvY2Vzc0F1
dG9tYXRpY1B1bGxOb2RlcyhzaXplX3QgZnJhbWVzVG9Qcm9jZXNzKSA9IDA7CisgICAgdmlydHVh
bCB2b2lkIGFkZERlZmVycmVkRmluaXNoRGVyZWYoQXVkaW9Ob2RlKikgPSAwOworCisgICAgdmly
dHVhbCB2b2lkIHJlbW92ZU1hcmtlZFN1bW1pbmdKdW5jdGlvbihBdWRpb1N1bW1pbmdKdW5jdGlv
biopID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgbWFya1N1bW1pbmdKdW5jdGlvbkRpcnR5KEF1ZGlv
U3VtbWluZ0p1bmN0aW9uKikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBtYXJrQXVkaW9Ob2RlT3V0
cHV0RGlydHkoQXVkaW9Ob2RlT3V0cHV0KikgPSAwOworCisjaWYgIVJFTEVBU0VfTE9HX0RJU0FC
TEVECisgICAgdmlydHVhbCBjb25zdCB2b2lkKiBuZXh0QXVkaW9Ob2RlTG9nSWRlbnRpZmllcigp
ID0gMDsKKyAgICB2aXJ0dWFsIGNvbnN0IHZvaWQqIG5leHRBdWRpb1BhcmFtZXRlckxvZ0lkZW50
aWZpZXIoKSA9IDA7CisjZW5kaWYKKworICAgIHZpcnR1YWwgdm9pZCBhZGRBdXRvbWF0aWNQdWxs
Tm9kZShBdWRpb05vZGUmKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHJlbW92ZUF1dG9tYXRpY1B1
bGxOb2RlKEF1ZGlvTm9kZSYpID0gMDsKKworICAgIHZpcnR1YWwgdm9pZCBub3RpZnlOb2RlRmlu
aXNoZWRQcm9jZXNzaW5nKEF1ZGlvTm9kZSopID0gMDsKKworICAgIHZpcnR1YWwgdm9pZCBmaW5p
c2hlZFJlbmRlcmluZyhib29sIGRpZFJlbmRlcmluZykgPSAwOworCisgICAgdmlydHVhbCB2b2lk
IGluY3JlbWVudENvbm5lY3Rpb25Db3VudCgpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgaW5jcmVt
ZW50QWN0aXZlU291cmNlQ291bnQoKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGRlY3JlbWVudEFj
dGl2ZVNvdXJjZUNvdW50KCkgPSAwOworCisgICAgdmlydHVhbCBib29sIGlzT2ZmbGluZUNvbnRl
eHQoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBib29sIGlzQXVkaW9Db250ZXh0KCkgY29uc3Qg
PSAwOworICAgIHZpcnR1YWwgYm9vbCBpc1dlYktpdEF1ZGlvQ29udGV4dCgpIGNvbnN0ID0gMDsK
KworICAgIC8vIG11c3RSZWxlYXNlTG9jayBpcyBzZXQgdG8gdHJ1ZSBpZiB3ZSBhY3F1aXJlZCB0
aGUgbG9jayBpbiB0aGlzIG1ldGhvZCBjYWxsIGFuZCBjYWxsZXIgbXVzdCB1bmxvY2soKSwgZmFs
c2UgaWYgaXQgd2FzIHByZXZpb3VzbHkgYWNxdWlyZWQuCisgICAgdmlydHVhbCB2b2lkIGxvY2so
Ym9vbCYgbXVzdFJlbGVhc2VMb2NrKSA9IDA7CisgICAgdmlydHVhbCBib29sIHRyeUxvY2soYm9v
bCYgbXVzdFJlbGVhc2VMb2NrKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHVubG9jaygpID0gMDsK
KworICAgIGNsYXNzIEF1dG9Mb2NrZXIgeworICAgIHB1YmxpYzoKKyAgICAgICAgZXhwbGljaXQg
QXV0b0xvY2tlcihBdWRpb0NvbnRleHRCYXNlJiBjb250ZXh0KQorICAgICAgICAgICAgOiBtX2Nv
bnRleHQoY29udGV4dCkKKyAgICAgICAgeworICAgICAgICAgICAgbV9jb250ZXh0LmxvY2sobV9t
dXN0UmVsZWFzZUxvY2spOworICAgICAgICB9CisKKyAgICAgICAgfkF1dG9Mb2NrZXIoKQorICAg
ICAgICB7CisgICAgICAgICAgICBpZiAobV9tdXN0UmVsZWFzZUxvY2spCisgICAgICAgICAgICAg
ICAgbV9jb250ZXh0LnVubG9jaygpOworICAgICAgICB9CisKKyAgICBwcml2YXRlOgorICAgICAg
ICBBdWRpb0NvbnRleHRCYXNlJiBtX2NvbnRleHQ7CisgICAgICAgIGJvb2wgbV9tdXN0UmVsZWFz
ZUxvY2s7CisgICAgfTsKKworICAgIC8vIEV2ZW50VGFyZ2V0CisgICAgU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpIGNvbnN0IGZpbmFsOworICAgIHZvaWQg
cmVmRXZlbnRUYXJnZXQoKSBvdmVycmlkZSB7IHJlZigpOyB9CisgICAgdm9pZCBkZXJlZkV2ZW50
VGFyZ2V0KCkgb3ZlcnJpZGUgeyBkZXJlZigpOyB9CisKK3Byb3RlY3RlZDoKKyAgICBleHBsaWNp
dCBBdWRpb0NvbnRleHRCYXNlKERvY3VtZW50Jik7Cit9OworCisvLyBBdWRpb0NvbnRleHQgaXMg
dGhlIGNvcm5lcnN0b25lIG9mIHRoZSB3ZWIgYXVkaW8gQVBJIGFuZCBhbGwgQXVkaW9Ob2RlcyBh
cmUgY3JlYXRlZCBmcm9tIGl0LgorLy8gRm9yIHRocmVhZCBzYWZldHkgYmV0d2VlbiB0aGUgYXVk
aW8gdGhyZWFkIGFuZCB0aGUgbWFpbiB0aHJlYWQsIGl0IGhhcyBhIHJlbmRlcmluZyBncmFwaCBs
b2NraW5nIG1lY2hhbmlzbS4gCisKK2NsYXNzIEF1ZGlvQ29udGV4dAorICAgIDogcHVibGljIEF1
ZGlvQ29udGV4dEJhc2UKKyAgICAsIHByaXZhdGUgUGxhdGZvcm1NZWRpYVNlc3Npb25DbGllbnQK
KyAgICAsIHByaXZhdGUgVmlzaWJpbGl0eUNoYW5nZUNsaWVudAogewogICAgIFdURl9NQUtFX0lT
T19BTExPQ0FURUQoQXVkaW9Db250ZXh0KTsKIHB1YmxpYzoKQEAgLTEwMSwyMiArMTk5LDIwIEBA
IHB1YmxpYzoKIAogICAgIHZpcnR1YWwgfkF1ZGlvQ29udGV4dCgpOwogCi0gICAgYm9vbCBpc0lu
aXRpYWxpemVkKCkgY29uc3Q7CisgICAgYm9vbCBpc0luaXRpYWxpemVkKCkgY29uc3QgZmluYWw7
CiAgICAgCi0gICAgYm9vbCBpc09mZmxpbmVDb250ZXh0KCkgY29uc3QgeyByZXR1cm4gbV9pc09m
ZmxpbmVDb250ZXh0OyB9Ci0KLSAgICBEb2N1bWVudCogZG9jdW1lbnQoKSBjb25zdDsgLy8gQVNT
RVJUcyBpZiBkb2N1bWVudCBubyBsb25nZXIgZXhpc3RzLgorICAgIGJvb2wgaXNPZmZsaW5lQ29u
dGV4dCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1faXNPZmZsaW5lQ29udGV4dDsgfQogCiAgICAg
RG9jdW1lbnRJZGVudGlmaWVyIGhvc3RpbmdEb2N1bWVudElkZW50aWZpZXIoKSBjb25zdCBmaW5h
bDsKIAogICAgIEF1ZGlvRGVzdGluYXRpb25Ob2RlKiBkZXN0aW5hdGlvbigpIHsgcmV0dXJuIG1f
ZGVzdGluYXRpb25Ob2RlLmdldCgpOyB9Ci0gICAgc2l6ZV90IGN1cnJlbnRTYW1wbGVGcmFtZSgp
IGNvbnN0IHsgcmV0dXJuIG1fZGVzdGluYXRpb25Ob2RlID8gbV9kZXN0aW5hdGlvbk5vZGUtPmN1
cnJlbnRTYW1wbGVGcmFtZSgpIDogMDsgfQotICAgIGRvdWJsZSBjdXJyZW50VGltZSgpIGNvbnN0
IHsgcmV0dXJuIG1fZGVzdGluYXRpb25Ob2RlID8gbV9kZXN0aW5hdGlvbk5vZGUtPmN1cnJlbnRU
aW1lKCkgOiAwLjsgfQotICAgIGZsb2F0IHNhbXBsZVJhdGUoKSBjb25zdCB7IHJldHVybiBtX2Rl
c3RpbmF0aW9uTm9kZSA/IG1fZGVzdGluYXRpb25Ob2RlLT5zYW1wbGVSYXRlKCkgOiAwLmY7IH0K
KyAgICBzaXplX3QgY3VycmVudFNhbXBsZUZyYW1lKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9k
ZXN0aW5hdGlvbk5vZGUgPyBtX2Rlc3RpbmF0aW9uTm9kZS0+Y3VycmVudFNhbXBsZUZyYW1lKCkg
OiAwOyB9CisgICAgZG91YmxlIGN1cnJlbnRUaW1lKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9k
ZXN0aW5hdGlvbk5vZGUgPyBtX2Rlc3RpbmF0aW9uTm9kZS0+Y3VycmVudFRpbWUoKSA6IDAuOyB9
CisgICAgZmxvYXQgc2FtcGxlUmF0ZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fZGVzdGluYXRp
b25Ob2RlID8gbV9kZXN0aW5hdGlvbk5vZGUtPnNhbXBsZVJhdGUoKSA6IDAuZjsgfQogICAgIHVu
c2lnbmVkIGxvbmcgYWN0aXZlU291cmNlQ291bnQoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2Fz
dDx1bnNpZ25lZCBsb25nPihtX2FjdGl2ZVNvdXJjZUNvdW50KTsgfQogCi0gICAgdm9pZCBpbmNy
ZW1lbnRBY3RpdmVTb3VyY2VDb3VudCgpOwotICAgIHZvaWQgZGVjcmVtZW50QWN0aXZlU291cmNl
Q291bnQoKTsKKyAgICB2b2lkIGluY3JlbWVudEFjdGl2ZVNvdXJjZUNvdW50KCkgZmluYWw7Cisg
ICAgdm9pZCBkZWNyZW1lbnRBY3RpdmVTb3VyY2VDb3VudCgpIGZpbmFsOwogICAgIAogICAgIEV4
Y2VwdGlvbk9yPFJlZjxBdWRpb0J1ZmZlcj4+IGNyZWF0ZUJ1ZmZlcih1bnNpZ25lZCBudW1iZXJP
ZkNoYW5uZWxzLCBzaXplX3QgbnVtYmVyT2ZGcmFtZXMsIGZsb2F0IHNhbXBsZVJhdGUpOwogICAg
IEV4Y2VwdGlvbk9yPFJlZjxBdWRpb0J1ZmZlcj4+IGNyZWF0ZUJ1ZmZlcihBcnJheUJ1ZmZlciYs
IGJvb2wgbWl4VG9Nb25vKTsKQEAgLTEzMCw3ICsyMjYsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBy
ZXN1bWVSZW5kZXJpbmcoRE9NUHJvbWlzZURlZmVycmVkPHZvaWQ+JiYpOwogICAgIHZvaWQgY2xv
c2UoRE9NUHJvbWlzZURlZmVycmVkPHZvaWQ+JiYpOwogCi0gICAgZW51bSBjbGFzcyBTdGF0ZSB7
IFN1c3BlbmRlZCwgUnVubmluZywgSW50ZXJydXB0ZWQsIENsb3NlZCB9OworICAgIHVzaW5nIFN0
YXRlID0gQXVkaW9Db250ZXh0U3RhdGU7CiAgICAgU3RhdGUgc3RhdGUoKSBjb25zdDsKICAgICBi
b29sIGlzQ2xvc2VkKCkgY29uc3QgeyByZXR1cm4gbV9zdGF0ZSA9PSBTdGF0ZTo6Q2xvc2VkOyB9
CiAKQEAgLTE2MCwzMSArMjU2LDMxIEBAIHB1YmxpYzoKICAgICBFeGNlcHRpb25PcjxSZWY8UGVy
aW9kaWNXYXZlPj4gY3JlYXRlUGVyaW9kaWNXYXZlKEZsb2F0MzJBcnJheSYgcmVhbCwgRmxvYXQz
MkFycmF5JiBpbWFnaW5hcnkpOwogCiAgICAgLy8gV2hlbiBhIHNvdXJjZSBub2RlIGhhcyBubyBt
b3JlIHByb2Nlc3NpbmcgdG8gZG8gKGhhcyBmaW5pc2hlZCBwbGF5aW5nKSwgdGhlbiBpdCB0ZWxs
cyB0aGUgY29udGV4dCB0byBkZXJlZmVyZW5jZSBpdC4KLSAgICB2b2lkIG5vdGlmeU5vZGVGaW5p
c2hlZFByb2Nlc3NpbmcoQXVkaW9Ob2RlKik7CisgICAgdm9pZCBub3RpZnlOb2RlRmluaXNoZWRQ
cm9jZXNzaW5nKEF1ZGlvTm9kZSopIGZpbmFsOwogCiAgICAgLy8gQ2FsbGVkIGF0IHRoZSBzdGFy
dCBvZiBlYWNoIHJlbmRlciBxdWFudHVtLgotICAgIHZvaWQgaGFuZGxlUHJlUmVuZGVyVGFza3Mo
KTsKKyAgICB2b2lkIGhhbmRsZVByZVJlbmRlclRhc2tzKCkgZmluYWw7CiAKICAgICAvLyBDYWxs
ZWQgYXQgdGhlIGVuZCBvZiBlYWNoIHJlbmRlciBxdWFudHVtLgotICAgIHZvaWQgaGFuZGxlUG9z
dFJlbmRlclRhc2tzKCk7CisgICAgdm9pZCBoYW5kbGVQb3N0UmVuZGVyVGFza3MoKSBmaW5hbDsK
IAogICAgIC8vIENhbGxlZCBwZXJpb2RpY2FsbHkgYXQgdGhlIGVuZCBvZiBlYWNoIHJlbmRlciBx
dWFudHVtIHRvIGRlcmVmZXJlbmNlIGZpbmlzaGVkIHNvdXJjZSBub2Rlcy4KICAgICB2b2lkIGRl
cmVmRmluaXNoZWRTb3VyY2VOb2RlcygpOwogCiAgICAgLy8gV2Ugc2NoZWR1bGUgZGVsZXRpb24g
b2YgYWxsIG1hcmtlZCBub2RlcyBhdCB0aGUgZW5kIG9mIGVhY2ggcmVhbHRpbWUgcmVuZGVyIHF1
YW50dW0uCi0gICAgdm9pZCBtYXJrRm9yRGVsZXRpb24oQXVkaW9Ob2RlJik7Ci0gICAgdm9pZCBk
ZWxldGVNYXJrZWROb2RlcygpOworICAgIHZvaWQgbWFya0ZvckRlbGV0aW9uKEF1ZGlvTm9kZSYp
IGZpbmFsOworICAgIHZvaWQgZGVsZXRlTWFya2VkTm9kZXMoKSBmaW5hbDsKIAogICAgIC8vIEF1
ZGlvQ29udGV4dCBjYW4gcHVsbCBub2RlKHMpIGF0IHRoZSBlbmQgb2YgZWFjaCByZW5kZXIgcXVh
bnR1bSBldmVuIHdoZW4gdGhleSBhcmUgbm90IGNvbm5lY3RlZCB0byBhbnkgZG93bnN0cmVhbSBu
b2Rlcy4KICAgICAvLyBUaGVzZSB0d28gbWV0aG9kcyBhcmUgY2FsbGVkIGJ5IHRoZSBub2RlcyB3
aG8gd2FudCB0byBhZGQvcmVtb3ZlIHRoZW1zZWx2ZXMgaW50by9mcm9tIHRoZSBhdXRvbWF0aWMg
cHVsbCBsaXN0cy4KLSAgICB2b2lkIGFkZEF1dG9tYXRpY1B1bGxOb2RlKEF1ZGlvTm9kZSYpOwot
ICAgIHZvaWQgcmVtb3ZlQXV0b21hdGljUHVsbE5vZGUoQXVkaW9Ob2RlJik7CisgICAgdm9pZCBh
ZGRBdXRvbWF0aWNQdWxsTm9kZShBdWRpb05vZGUmKSBmaW5hbDsKKyAgICB2b2lkIHJlbW92ZUF1
dG9tYXRpY1B1bGxOb2RlKEF1ZGlvTm9kZSYpIGZpbmFsOwogCiAgICAgLy8gQ2FsbGVkIHJpZ2h0
IGJlZm9yZSBoYW5kbGVQb3N0UmVuZGVyVGFza3MoKSB0byBoYW5kbGUgbm9kZXMgd2hpY2ggbmVl
ZCB0byBiZSBwdWxsZWQgZXZlbiB3aGVuIHRoZXkgYXJlIG5vdCBjb25uZWN0ZWQgdG8gYW55dGhp
bmcuCi0gICAgdm9pZCBwcm9jZXNzQXV0b21hdGljUHVsbE5vZGVzKHNpemVfdCBmcmFtZXNUb1By
b2Nlc3MpOworICAgIHZvaWQgcHJvY2Vzc0F1dG9tYXRpY1B1bGxOb2RlcyhzaXplX3QgZnJhbWVz
VG9Qcm9jZXNzKSBmaW5hbDsKIAogICAgIC8vIEtlZXBzIHRyYWNrIG9mIHRoZSBudW1iZXIgb2Yg
Y29ubmVjdGlvbnMgbWFkZS4KLSAgICB2b2lkIGluY3JlbWVudENvbm5lY3Rpb25Db3VudCgpCisg
ICAgdm9pZCBpbmNyZW1lbnRDb25uZWN0aW9uQ291bnQoKSBmaW5hbAogICAgIHsKICAgICAgICAg
QVNTRVJUKGlzTWFpblRocmVhZCgpKTsKICAgICAgICAgbV9jb25uZWN0aW9uQ291bnQrKzsKQEAg
LTE5Niw2OSArMjkyLDQ2IEBAIHB1YmxpYzoKICAgICAvLyBUaHJlYWQgU2FmZXR5IGFuZCBHcmFw
aCBMb2NraW5nOgogICAgIC8vCiAgICAgCi0gICAgdm9pZCBzZXRBdWRpb1RocmVhZChUaHJlYWQm
IHRocmVhZCkgeyBtX2F1ZGlvVGhyZWFkID0gJnRocmVhZDsgfSAvLyBGSVhNRTogY2hlY2sgZWl0
aGVyIG5vdCBpbml0aWFsaXplZCBvciB0aGUgc2FtZQorICAgIHZvaWQgc2V0QXVkaW9UaHJlYWQo
VGhyZWFkJiB0aHJlYWQpIGZpbmFsIHsgbV9hdWRpb1RocmVhZCA9ICZ0aHJlYWQ7IH0gLy8gRklY
TUU6IGNoZWNrIGVpdGhlciBub3QgaW5pdGlhbGl6ZWQgb3IgdGhlIHNhbWUKICAgICBUaHJlYWQq
IGF1ZGlvVGhyZWFkKCkgY29uc3QgeyByZXR1cm4gbV9hdWRpb1RocmVhZDsgfQotICAgIGJvb2wg
aXNBdWRpb1RocmVhZCgpIGNvbnN0OworICAgIGJvb2wgaXNBdWRpb1RocmVhZCgpIGNvbnN0IGZp
bmFsOwogCiAgICAgLy8gUmV0dXJucyB0cnVlIG9ubHkgYWZ0ZXIgdGhlIGF1ZGlvIHRocmVhZCBo
YXMgYmVlbiBzdGFydGVkIGFuZCB0aGVuIHNodXRkb3duLgotICAgIGJvb2wgaXNBdWRpb1RocmVh
ZEZpbmlzaGVkKCkgeyByZXR1cm4gbV9pc0F1ZGlvVGhyZWFkRmluaXNoZWQ7IH0KKyAgICBib29s
IGlzQXVkaW9UaHJlYWRGaW5pc2hlZCgpIGZpbmFsIHsgcmV0dXJuIG1faXNBdWRpb1RocmVhZEZp
bmlzaGVkOyB9CiAgICAgCiAgICAgLy8gbXVzdFJlbGVhc2VMb2NrIGlzIHNldCB0byB0cnVlIGlm
IHdlIGFjcXVpcmVkIHRoZSBsb2NrIGluIHRoaXMgbWV0aG9kIGNhbGwgYW5kIGNhbGxlciBtdXN0
IHVubG9jaygpLCBmYWxzZSBpZiBpdCB3YXMgcHJldmlvdXNseSBhY3F1aXJlZC4KLSAgICB2b2lk
IGxvY2soYm9vbCYgbXVzdFJlbGVhc2VMb2NrKTsKKyAgICB2b2lkIGxvY2soYm9vbCYgbXVzdFJl
bGVhc2VMb2NrKSBmaW5hbDsKIAogICAgIC8vIFJldHVybnMgdHJ1ZSBpZiB3ZSBvd24gdGhlIGxv
Y2suCiAgICAgLy8gbXVzdFJlbGVhc2VMb2NrIGlzIHNldCB0byB0cnVlIGlmIHdlIGFjcXVpcmVk
IHRoZSBsb2NrIGluIHRoaXMgbWV0aG9kIGNhbGwgYW5kIGNhbGxlciBtdXN0IHVubG9jaygpLCBm
YWxzZSBpZiBpdCB3YXMgcHJldmlvdXNseSBhY3F1aXJlZC4KLSAgICBib29sIHRyeUxvY2soYm9v
bCYgbXVzdFJlbGVhc2VMb2NrKTsKKyAgICBib29sIHRyeUxvY2soYm9vbCYgbXVzdFJlbGVhc2VM
b2NrKSBmaW5hbDsKIAotICAgIHZvaWQgdW5sb2NrKCk7CisgICAgdm9pZCB1bmxvY2soKSBmaW5h
bDsKIAogICAgIC8vIFJldHVybnMgdHJ1ZSBpZiB0aGlzIHRocmVhZCBvd25zIHRoZSBjb250ZXh0
J3MgbG9jay4KLSAgICBib29sIGlzR3JhcGhPd25lcigpIGNvbnN0OworICAgIGJvb2wgaXNHcmFw
aE93bmVyKCkgY29uc3QgZmluYWw7CiAKICAgICAvLyBSZXR1cm5zIHRoZSBtYXhpbXVtIG51bWJl
ciBvZiBjaGFubmVscyB3ZSBjYW4gc3VwcG9ydC4KICAgICBzdGF0aWMgdW5zaWduZWQgbWF4TnVt
YmVyT2ZDaGFubmVscygpIHsgcmV0dXJuIE1heE51bWJlck9mQ2hhbm5lbHM7IH0KLQotICAgIGNs
YXNzIEF1dG9Mb2NrZXIgewotICAgIHB1YmxpYzoKLSAgICAgICAgZXhwbGljaXQgQXV0b0xvY2tl
cihBdWRpb0NvbnRleHQmIGNvbnRleHQpCi0gICAgICAgICAgICA6IG1fY29udGV4dChjb250ZXh0
KQotICAgICAgICB7Ci0gICAgICAgICAgICBtX2NvbnRleHQubG9jayhtX211c3RSZWxlYXNlTG9j
ayk7Ci0gICAgICAgIH0KLSAgICAgICAgCi0gICAgICAgIH5BdXRvTG9ja2VyKCkKLSAgICAgICAg
ewotICAgICAgICAgICAgaWYgKG1fbXVzdFJlbGVhc2VMb2NrKQotICAgICAgICAgICAgICAgIG1f
Y29udGV4dC51bmxvY2soKTsKLSAgICAgICAgfQotCi0gICAgcHJpdmF0ZToKLSAgICAgICAgQXVk
aW9Db250ZXh0JiBtX2NvbnRleHQ7Ci0gICAgICAgIGJvb2wgbV9tdXN0UmVsZWFzZUxvY2s7Ci0g
ICAgfTsKICAgICAKICAgICAvLyBJbiBBdWRpb05vZGU6OmRlcmVmKCkgYSB0cnlMb2NrKCkgaXMg
dXNlZCBmb3IgY2FsbGluZyBmaW5pc2hEZXJlZigpLCBidXQgaWYgaXQgZmFpbHMga2VlcCB0cmFj
ayBoZXJlLgotICAgIHZvaWQgYWRkRGVmZXJyZWRGaW5pc2hEZXJlZihBdWRpb05vZGUqKTsKKyAg
ICB2b2lkIGFkZERlZmVycmVkRmluaXNoRGVyZWYoQXVkaW9Ob2RlKikgZmluYWw7CiAKICAgICAv
LyBJbiB0aGUgYXVkaW8gdGhyZWFkIGF0IHRoZSBzdGFydCBvZiBlYWNoIHJlbmRlciBjeWNsZSwg
d2UnbGwgY2FsbCBoYW5kbGVEZWZlcnJlZEZpbmlzaERlcmVmcygpLgogICAgIHZvaWQgaGFuZGxl
RGVmZXJyZWRGaW5pc2hEZXJlZnMoKTsKIAogICAgIC8vIE9ubHkgYWNjZXNzZWQgd2hlbiB0aGUg
Z3JhcGggbG9jayBpcyBoZWxkLgotICAgIHZvaWQgbWFya1N1bW1pbmdKdW5jdGlvbkRpcnR5KEF1
ZGlvU3VtbWluZ0p1bmN0aW9uKik7Ci0gICAgdm9pZCBtYXJrQXVkaW9Ob2RlT3V0cHV0RGlydHko
QXVkaW9Ob2RlT3V0cHV0Kik7CisgICAgdm9pZCBtYXJrU3VtbWluZ0p1bmN0aW9uRGlydHkoQXVk
aW9TdW1taW5nSnVuY3Rpb24qKSBmaW5hbDsKKyAgICB2b2lkIG1hcmtBdWRpb05vZGVPdXRwdXRE
aXJ0eShBdWRpb05vZGVPdXRwdXQqKSBmaW5hbDsKIAogICAgIC8vIE11c3QgYmUgY2FsbGVkIG9u
IG1haW4gdGhyZWFkLgotICAgIHZvaWQgcmVtb3ZlTWFya2VkU3VtbWluZ0p1bmN0aW9uKEF1ZGlv
U3VtbWluZ0p1bmN0aW9uKik7CisgICAgdm9pZCByZW1vdmVNYXJrZWRTdW1taW5nSnVuY3Rpb24o
QXVkaW9TdW1taW5nSnVuY3Rpb24qKSBmaW5hbDsKIAogICAgIC8vIEV2ZW50VGFyZ2V0CiAgICAg
RXZlbnRUYXJnZXRJbnRlcmZhY2UgZXZlbnRUYXJnZXRJbnRlcmZhY2UoKSBjb25zdCBmaW5hbCB7
IHJldHVybiBBdWRpb0NvbnRleHRFdmVudFRhcmdldEludGVyZmFjZVR5cGU7IH0KIAotICAgIC8v
IFJlY29uY2lsZSByZWYvZGVyZWYgd2hpY2ggYXJlIGRlZmluZWQgYm90aCBpbiBUaHJlYWRTYWZl
UmVmQ291bnRlZCBhbmQgRXZlbnRUYXJnZXQuCi0gICAgdXNpbmcgVGhyZWFkU2FmZVJlZkNvdW50
ZWQ6OnJlZjsKLSAgICB1c2luZyBUaHJlYWRTYWZlUmVmQ291bnRlZDo6ZGVyZWY7Ci0KICAgICB2
b2lkIHN0YXJ0UmVuZGVyaW5nKCk7Ci0gICAgdm9pZCBmaW5pc2hlZFJlbmRlcmluZyhib29sIGRp
ZFJlbmRlcmluZyk7CisgICAgdm9pZCBmaW5pc2hlZFJlbmRlcmluZyhib29sIGRpZFJlbmRlcmlu
ZykgZmluYWw7CiAKICAgICBzdGF0aWMgdW5zaWduZWQgc19oYXJkd2FyZUNvbnRleHRDb3VudDsK
IApAQCAtMjc0LDI1ICszNDcsMjIgQEAgcHVibGljOgogICAgIHZvaWQgYWRkQmVoYXZpb3JSZXN0
cmljdGlvbihCZWhhdmlvclJlc3RyaWN0aW9ucyByZXN0cmljdGlvbikgeyBtX3Jlc3RyaWN0aW9u
cyB8PSByZXN0cmljdGlvbjsgfQogICAgIHZvaWQgcmVtb3ZlQmVoYXZpb3JSZXN0cmljdGlvbihC
ZWhhdmlvclJlc3RyaWN0aW9ucyByZXN0cmljdGlvbikgeyBtX3Jlc3RyaWN0aW9ucyAmPSB+cmVz
dHJpY3Rpb247IH0KIAotICAgIHZvaWQgaXNQbGF5aW5nQXVkaW9EaWRDaGFuZ2UoKTsKKyAgICB2
b2lkIGlzUGxheWluZ0F1ZGlvRGlkQ2hhbmdlKCkgZmluYWw7CiAKLSAgICB2b2lkIG5vZGVXaWxs
QmVnaW5QbGF5YmFjaygpOworICAgIHZvaWQgbm9kZVdpbGxCZWdpblBsYXliYWNrKCkgZmluYWw7
CiAKICNpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKICAgICBjb25zdCBMb2dnZXImIGxvZ2dlcigp
IGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fbG9nZ2VyLmdldCgpOyB9CiAgICAgY29uc3Qgdm9pZCog
bG9nSWRlbnRpZmllcigpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fbG9nSWRlbnRpZmllcjsgfQog
ICAgIFdURkxvZ0NoYW5uZWwmIGxvZ0NoYW5uZWwoKSBjb25zdCBmaW5hbDsKLSAgICBjb25zdCB2
b2lkKiBuZXh0QXVkaW9Ob2RlTG9nSWRlbnRpZmllcigpIHsgcmV0dXJuIGNoaWxkTG9nSWRlbnRp
ZmllcihtX2xvZ0lkZW50aWZpZXIsICsrbV9uZXh0QXVkaW9Ob2RlSWRlbnRpZmllcik7IH0KLSAg
ICBjb25zdCB2b2lkKiBuZXh0QXVkaW9QYXJhbWV0ZXJMb2dJZGVudGlmaWVyKCkgeyByZXR1cm4g
Y2hpbGRMb2dJZGVudGlmaWVyKG1fbG9nSWRlbnRpZmllciwgKyttX25leHRBdWRpb1BhcmFtZXRl
cklkZW50aWZpZXIpOyB9CisgICAgY29uc3Qgdm9pZCogbmV4dEF1ZGlvTm9kZUxvZ0lkZW50aWZp
ZXIoKSBmaW5hbCB7IHJldHVybiBjaGlsZExvZ0lkZW50aWZpZXIobV9sb2dJZGVudGlmaWVyLCAr
K21fbmV4dEF1ZGlvTm9kZUlkZW50aWZpZXIpOyB9CisgICAgY29uc3Qgdm9pZCogbmV4dEF1ZGlv
UGFyYW1ldGVyTG9nSWRlbnRpZmllcigpIGZpbmFsIHsgcmV0dXJuIGNoaWxkTG9nSWRlbnRpZmll
cihtX2xvZ0lkZW50aWZpZXIsICsrbV9uZXh0QXVkaW9QYXJhbWV0ZXJJZGVudGlmaWVyKTsgfQog
I2VuZGlmCiAKLSAgICB2b2lkIHBvc3RUYXNrKFdURjo6RnVuY3Rpb248dm9pZCgpPiYmKTsKLSAg
ICBib29sIGlzU3RvcHBlZCgpIGNvbnN0IHsgcmV0dXJuIG1faXNTdG9wU2NoZWR1bGVkOyB9Ci0g
ICAgY29uc3QgU2VjdXJpdHlPcmlnaW4qIG9yaWdpbigpIGNvbnN0OwotICAgIHZvaWQgYWRkQ29u
c29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZSwgTWVzc2FnZUxldmVsLCBjb25zdCBTdHJpbmcmIG1l
c3NhZ2UpOwotCi0gICAgLy8gRXZlbnRUYXJnZXQKLSAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0
KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkgY29uc3QgZmluYWw7CisgICAgdm9pZCBwb3N0VGFz
ayhXVEY6OkZ1bmN0aW9uPHZvaWQoKT4mJikgZmluYWw7CisgICAgYm9vbCBpc1N0b3BwZWQoKSBj
b25zdCBmaW5hbCB7IHJldHVybiBtX2lzU3RvcFNjaGVkdWxlZDsgfQorICAgIGNvbnN0IFNlY3Vy
aXR5T3JpZ2luKiBvcmlnaW4oKSBjb25zdCBmaW5hbDsKKyAgICB2b2lkIGFkZENvbnNvbGVNZXNz
YWdlKE1lc3NhZ2VTb3VyY2UsIE1lc3NhZ2VMZXZlbCwgY29uc3QgU3RyaW5nJiBtZXNzYWdlKSBm
aW5hbDsKIAogcHJvdGVjdGVkOgogICAgIGV4cGxpY2l0IEF1ZGlvQ29udGV4dChEb2N1bWVudCYp
OwpAQCAtMzYwLDkgKzQzMCw4IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIHZpc2liaWxpdHlTdGF0
ZUNoYW5nZWQoKSBmaW5hbDsKIAotICAgIC8vIEV2ZW50VGFyZ2V0Ci0gICAgdm9pZCByZWZFdmVu
dFRhcmdldCgpIG92ZXJyaWRlIHsgcmVmKCk7IH0KLSAgICB2b2lkIGRlcmVmRXZlbnRUYXJnZXQo
KSBvdmVycmlkZSB7IGRlcmVmKCk7IH0KKyAgICBib29sIGlzQXVkaW9Db250ZXh0KCkgY29uc3Qg
ZmluYWwgeyByZXR1cm4gdHJ1ZTsgfQorICAgIGJvb2wgaXNXZWJLaXRBdWRpb0NvbnRleHQoKSBj
b25zdCBmaW5hbCB7IHJldHVybiBmYWxzZTsgfQogCiAgICAgdm9pZCBoYW5kbGVEaXJ0eUF1ZGlv
U3VtbWluZ0p1bmN0aW9ucygpOwogICAgIHZvaWQgaGFuZGxlRGlydHlBdWRpb05vZGVPdXRwdXRz
KCk7CkBAIC00NDYsMjEgKzUxNSwxMyBAQCBwcml2YXRlOgogICAgIFJlZlB0cjxQZW5kaW5nQWN0
aXZpdHk8QXVkaW9Db250ZXh0Pj4gbV9wZW5kaW5nQWN0aXZpdHk7CiB9OwogCi0vLyBGSVhNRTog
RmluZCBvdXQgd2h5IHRoZXNlID09LyE9IGZ1bmN0aW9ucyBhcmUgbmVlZGVkIGFuZCByZW1vdmUg
dGhlbSBpZiBwb3NzaWJsZS4KLQotaW5saW5lIGJvb2wgb3BlcmF0b3I9PShjb25zdCBBdWRpb0Nv
bnRleHQmIGxocywgY29uc3QgQXVkaW9Db250ZXh0JiByaHMpCi17Ci0gICAgcmV0dXJuICZsaHMg
PT0gJnJoczsKLX0KLQotaW5saW5lIGJvb2wgb3BlcmF0b3IhPShjb25zdCBBdWRpb0NvbnRleHQm
IGxocywgY29uc3QgQXVkaW9Db250ZXh0JiByaHMpCi17Ci0gICAgcmV0dXJuICZsaHMgIT0gJnJo
czsKLX0KLQogaW5saW5lIEF1ZGlvQ29udGV4dDo6U3RhdGUgQXVkaW9Db250ZXh0OjpzdGF0ZSgp
IGNvbnN0CiB7CiAgICAgcmV0dXJuIG1fc3RhdGU7CiB9CiAKIH0gLy8gV2ViQ29yZQorCitTUEVD
SUFMSVpFX1RZUEVfVFJBSVRTX0JFR0lOKFdlYkNvcmU6OkF1ZGlvQ29udGV4dCkKKyAgICBzdGF0
aWMgYm9vbCBpc1R5cGUoY29uc3QgV2ViQ29yZTo6QXVkaW9Db250ZXh0QmFzZSYgY29udGV4dCkg
eyByZXR1cm4gY29udGV4dC5pc0F1ZGlvQ29udGV4dCgpOyB9CitTUEVDSUFMSVpFX1RZUEVfVFJB
SVRTX0VORCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1
ZGlvQ29udGV4dC5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQ29u
dGV4dC5pZGwKaW5kZXggZTcxMTgzOWIzMzMuLmYxZDQ5Y2EzNjhkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQ29udGV4dC5pZGwKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0NvbnRleHQuaWRsCkBAIC0yMywxOSArMjMs
MTEgQEAKICAqIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgogICovCiAKLWVudW0gQXVkaW9Db250ZXh0U3RhdGUgewotICAgICJzdXNw
ZW5kZWQiLAotICAgICJydW5uaW5nIiwKLSAgICAiaW50ZXJydXB0ZWQiLAotICAgICJjbG9zZWQi
Ci19OwotCiBbCiAgICAgQWN0aXZlRE9NT2JqZWN0LAogICAgIENvbmRpdGlvbmFsPVdFQl9BVURJ
TywKLSAgICBFbmFibGVkQnlTZXR0aW5nPVdlYkF1ZGlvLAorICAgIEVuYWJsZWRCeVNldHRpbmc9
TW9kZXJuVW5wcmVmaXhlZFdlYkF1ZGlvLAogICAgIEV4cG9ydE1hY3JvPVdFQkNPUkVfRVhQT1JU
LAotICAgIEludGVyZmFjZU5hbWU9d2Via2l0QXVkaW9Db250ZXh0LAogXSBpbnRlcmZhY2UgQXVk
aW9Db250ZXh0IDogRXZlbnRUYXJnZXQgewogICAgIFtDYWxsV2l0aD1Eb2N1bWVudCwgTWF5VGhy
b3dFeGNlcHRpb25dIGNvbnN0cnVjdG9yKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0U3RhdGUuaCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0U3RhdGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMC4uMTYwMTMxMTA4ZmEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQ29udGV4dFN0YXRlLmgKQEAgLTAsMCArMSwz
MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE2LTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04KKyAqIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUworICogU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKK25hbWVzcGFjZSBXZWJDb3JlIHsK
KworZW51bSBjbGFzcyBBdWRpb0NvbnRleHRTdGF0ZSB7IFN1c3BlbmRlZCwgUnVubmluZywgSW50
ZXJydXB0ZWQsIENsb3NlZCB9OworCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmF1ZGlvL0F1ZGlvQ29udGV4dFN0YXRlLmlkbCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0U3RhdGUuaWRsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwLi5jOGQwOGJkMmI1NgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0U3RhdGUuaWRsCkBAIC0wLDAgKzEs
MzEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAsIEdvb2dsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkK
KyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04KKyAqIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UworICogU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworZW51bSBBdWRpb0NvbnRleHRTdGF0ZSB7CisgICAgInN1c3BlbmRl
ZCIsCisgICAgInJ1bm5pbmciLAorICAgICJpbnRlcnJ1cHRlZCIsCisgICAgImNsb3NlZCIKK307
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvRGVzdGlu
YXRpb25Ob2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9EZXN0
aW5hdGlvbk5vZGUuY3BwCmluZGV4IGQ5YWJiOTc3N2E5Li42Nzc2MTdlY2IzMyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0Rlc3RpbmF0aW9uTm9kZS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0Rlc3RpbmF0aW9u
Tm9kZS5jcHAKQEAgLTM5LDcgKzM5LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIAogV1RG
X01BS0VfSVNPX0FMTE9DQVRFRF9JTVBMKEF1ZGlvRGVzdGluYXRpb25Ob2RlKTsKIAotQXVkaW9E
ZXN0aW5hdGlvbk5vZGU6OkF1ZGlvRGVzdGluYXRpb25Ob2RlKEF1ZGlvQ29udGV4dCYgY29udGV4
dCwgZmxvYXQgc2FtcGxlUmF0ZSkKK0F1ZGlvRGVzdGluYXRpb25Ob2RlOjpBdWRpb0Rlc3RpbmF0
aW9uTm9kZShBdWRpb0NvbnRleHRCYXNlJiBjb250ZXh0LCBmbG9hdCBzYW1wbGVSYXRlKQogICAg
IDogQXVkaW9Ob2RlKGNvbnRleHQsIHNhbXBsZVJhdGUpCiAgICAgLCBtX2N1cnJlbnRTYW1wbGVG
cmFtZSgwKQogICAgICwgbV9pc1NpbGVudCh0cnVlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0Rlc3RpbmF0aW9uTm9kZS5oIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0Rlc3RpbmF0aW9uTm9kZS5oCmluZGV4IDg5NDhmNGVl
NzBhLi4zNzZmNDYyNzEyZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJh
dWRpby9BdWRpb0Rlc3RpbmF0aW9uTm9kZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViYXVkaW8vQXVkaW9EZXN0aW5hdGlvbk5vZGUuaApAQCAtMzYsNyArMzYsNyBAQCBjbGFzcyBB
dWRpb0NvbnRleHQ7CiBjbGFzcyBBdWRpb0Rlc3RpbmF0aW9uTm9kZSA6IHB1YmxpYyBBdWRpb05v
ZGUsIHB1YmxpYyBBdWRpb0lPQ2FsbGJhY2sgewogICAgIFdURl9NQUtFX0lTT19BTExPQ0FURUQo
QXVkaW9EZXN0aW5hdGlvbk5vZGUpOwogcHVibGljOgotICAgIEF1ZGlvRGVzdGluYXRpb25Ob2Rl
KEF1ZGlvQ29udGV4dCYsIGZsb2F0IHNhbXBsZVJhdGUpOworICAgIEF1ZGlvRGVzdGluYXRpb25O
b2RlKEF1ZGlvQ29udGV4dEJhc2UmLCBmbG9hdCBzYW1wbGVSYXRlKTsKICAgICB2aXJ0dWFsIH5B
dWRpb0Rlc3RpbmF0aW9uTm9kZSgpOwogICAgIAogICAgIC8vIEF1ZGlvTm9kZSAgIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb05vZGUuY3BwIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb05vZGUuY3BwCmluZGV4IDc2NWVjZTMz
MmY2Li5lNTU0Mzc3OWQ1MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJh
dWRpby9BdWRpb05vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8v
QXVkaW9Ob2RlLmNwcApAQCAtMzMsNiArMzMsNyBAQAogI2luY2x1ZGUgIkF1ZGlvTm9kZU91dHB1
dC5oIgogI2luY2x1ZGUgIkF1ZGlvUGFyYW0uaCIKICNpbmNsdWRlICJMb2dnaW5nLmgiCisjaW5j
bHVkZSAiV2ViS2l0QXVkaW9Db250ZXh0LmgiCiAjaW5jbHVkZSA8d3RmL0F0b21pY3MuaD4KICNp
bmNsdWRlIDx3dGYvSXNvTWFsbG9jSW5saW5lcy5oPgogI2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFk
Lmg+CkBAIC05NSw3ICs5Niw3IEBAIFN0cmluZyBjb252ZXJ0RW51bWVyYXRpb25Ub1N0cmluZyhB
dWRpb05vZGU6Ok5vZGVUeXBlIGVudW1lcmF0aW9uVmFsdWUpCiAgICAgcmV0dXJuIHZhbHVlc1tz
dGF0aWNfY2FzdDxzaXplX3Q+KGVudW1lcmF0aW9uVmFsdWUpXTsKIH0KIAotQXVkaW9Ob2RlOjpB
dWRpb05vZGUoQXVkaW9Db250ZXh0JiBjb250ZXh0LCBmbG9hdCBzYW1wbGVSYXRlKQorQXVkaW9O
b2RlOjpBdWRpb05vZGUoQXVkaW9Db250ZXh0QmFzZSYgY29udGV4dCwgZmxvYXQgc2FtcGxlUmF0
ZSkKICAgICA6IG1faXNJbml0aWFsaXplZChmYWxzZSkKICAgICAsIG1fbm9kZVR5cGUoTm9kZVR5
cGVVbmtub3duKQogICAgICwgbV9jb250ZXh0KGNvbnRleHQpCkBAIC0xOTQsNyArMTk1LDcgQEAg
QXVkaW9Ob2RlT3V0cHV0KiBBdWRpb05vZGU6Om91dHB1dCh1bnNpZ25lZCBpKQogRXhjZXB0aW9u
T3I8dm9pZD4gQXVkaW9Ob2RlOjpjb25uZWN0KEF1ZGlvTm9kZSYgZGVzdGluYXRpb24sIHVuc2ln
bmVkIG91dHB1dEluZGV4LCB1bnNpZ25lZCBpbnB1dEluZGV4KQogewogICAgIEFTU0VSVChpc01h
aW5UaHJlYWQoKSk7Ci0gICAgQXVkaW9Db250ZXh0OjpBdXRvTG9ja2VyIGxvY2tlcihjb250ZXh0
KCkpOworICAgIEF1ZGlvQ29udGV4dEJhc2U6OkF1dG9Mb2NrZXIgbG9ja2VyKGNvbnRleHQoKSk7
CiAKICAgICBBTFdBWVNfTE9HKExPR0lERU5USUZJRVIsIGRlc3RpbmF0aW9uLm5vZGVUeXBlKCks
ICIsIG91dHB1dCA9ICIsIG91dHB1dEluZGV4LCAiLCBpbnB1dCA9ICIsIGlucHV0SW5kZXgpOwog
ICAgIApAQCAtMjA1LDcgKzIwNiw3IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IEF1ZGlvTm9kZTo6Y29u
bmVjdChBdWRpb05vZGUmIGRlc3RpbmF0aW9uLCB1bnNpZ25lZCBvdXRwdXRJbmRlCiAgICAgaWYg
KGlucHV0SW5kZXggPj0gZGVzdGluYXRpb24ubnVtYmVyT2ZJbnB1dHMoKSkKICAgICAgICAgcmV0
dXJuIEV4Y2VwdGlvbiB7IEluZGV4U2l6ZUVycm9yIH07CiAKLSAgICBpZiAoY29udGV4dCgpICE9
IGRlc3RpbmF0aW9uLmNvbnRleHQoKSkKKyAgICBpZiAoJmNvbnRleHQoKSAhPSAmZGVzdGluYXRp
b24uY29udGV4dCgpKQogICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgU3ludGF4RXJyb3IgfTsK
IAogICAgIGF1dG8qIGlucHV0ID0gZGVzdGluYXRpb24uaW5wdXQoaW5wdXRJbmRleCk7CkBAIC0y
MjAsNyArMjIxLDcgQEAgRXhjZXB0aW9uT3I8dm9pZD4gQXVkaW9Ob2RlOjpjb25uZWN0KEF1ZGlv
Tm9kZSYgZGVzdGluYXRpb24sIHVuc2lnbmVkIG91dHB1dEluZGUKIAogRXhjZXB0aW9uT3I8dm9p
ZD4gQXVkaW9Ob2RlOjpjb25uZWN0KEF1ZGlvUGFyYW0mIHBhcmFtLCB1bnNpZ25lZCBvdXRwdXRJ
bmRleCkKIHsKLSAgICBBdWRpb0NvbnRleHQ6OkF1dG9Mb2NrZXIgbG9ja2VyKGNvbnRleHQoKSk7
CisgICAgQXVkaW9Db250ZXh0QmFzZTo6QXV0b0xvY2tlciBsb2NrZXIoY29udGV4dCgpKTsKIAog
ICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAKQEAgLTIyOSw3ICsyMzAsNyBAQCBFeGNlcHRp
b25Pcjx2b2lkPiBBdWRpb05vZGU6OmNvbm5lY3QoQXVkaW9QYXJhbSYgcGFyYW0sIHVuc2lnbmVk
IG91dHB1dEluZGV4KQogICAgIGlmIChvdXRwdXRJbmRleCA+PSBudW1iZXJPZk91dHB1dHMoKSkK
ICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IEluZGV4U2l6ZUVycm9yIH07CiAKLSAgICBpZiAo
Y29udGV4dCgpICE9IHBhcmFtLmNvbnRleHQoKSkKKyAgICBpZiAoJmNvbnRleHQoKSAhPSAmcGFy
YW0uY29udGV4dCgpKQogICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgU3ludGF4RXJyb3IgfTsK
IAogICAgIGF1dG8qIG91dHB1dCA9IHRoaXMtPm91dHB1dChvdXRwdXRJbmRleCk7CkBAIC0yNDEs
NyArMjQyLDcgQEAgRXhjZXB0aW9uT3I8dm9pZD4gQXVkaW9Ob2RlOjpjb25uZWN0KEF1ZGlvUGFy
YW0mIHBhcmFtLCB1bnNpZ25lZCBvdXRwdXRJbmRleCkKIEV4Y2VwdGlvbk9yPHZvaWQ+IEF1ZGlv
Tm9kZTo6ZGlzY29ubmVjdCh1bnNpZ25lZCBvdXRwdXRJbmRleCkKIHsKICAgICBBU1NFUlQoaXNN
YWluVGhyZWFkKCkpOwotICAgIEF1ZGlvQ29udGV4dDo6QXV0b0xvY2tlciBsb2NrZXIoY29udGV4
dCgpKTsKKyAgICBBdWRpb0NvbnRleHRCYXNlOjpBdXRvTG9ja2VyIGxvY2tlcihjb250ZXh0KCkp
OwogCiAgICAgLy8gU2FuaXR5IGNoZWNrIGlucHV0IGFuZCBvdXRwdXQgaW5kaWNlcy4KICAgICBp
ZiAob3V0cHV0SW5kZXggPj0gbnVtYmVyT2ZPdXRwdXRzKCkpCkBAIC0yNjMsNyArMjY0LDcgQEAg
dW5zaWduZWQgQXVkaW9Ob2RlOjpjaGFubmVsQ291bnQoKQogRXhjZXB0aW9uT3I8dm9pZD4gQXVk
aW9Ob2RlOjpzZXRDaGFubmVsQ291bnQodW5zaWduZWQgY2hhbm5lbENvdW50KQogewogICAgIEFT
U0VSVChpc01haW5UaHJlYWQoKSk7Ci0gICAgQXVkaW9Db250ZXh0OjpBdXRvTG9ja2VyIGxvY2tl
cihjb250ZXh0KCkpOworICAgIEF1ZGlvQ29udGV4dEJhc2U6OkF1dG9Mb2NrZXIgbG9ja2VyKGNv
bnRleHQoKSk7CiAKICAgICBBTFdBWVNfTE9HKExPR0lERU5USUZJRVIsIGNoYW5uZWxDb3VudCk7
CiAgICAgCkBAIC0yOTYsNyArMjk3LDcgQEAgU3RyaW5nIEF1ZGlvTm9kZTo6Y2hhbm5lbENvdW50
TW9kZSgpCiBFeGNlcHRpb25Pcjx2b2lkPiBBdWRpb05vZGU6OnNldENoYW5uZWxDb3VudE1vZGUo
Y29uc3QgU3RyaW5nJiBtb2RlKQogewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7Ci0gICAg
QXVkaW9Db250ZXh0OjpBdXRvTG9ja2VyIGxvY2tlcihjb250ZXh0KCkpOworICAgIEF1ZGlvQ29u
dGV4dEJhc2U6OkF1dG9Mb2NrZXIgbG9ja2VyKGNvbnRleHQoKSk7CiAKICAgICBBTFdBWVNfTE9H
KExPR0lERU5USUZJRVIsIG1vZGUpOwogICAgIApAQCAtMzMyLDcgKzMzMyw3IEBAIFN0cmluZyBB
dWRpb05vZGU6OmNoYW5uZWxJbnRlcnByZXRhdGlvbigpCiBFeGNlcHRpb25Pcjx2b2lkPiBBdWRp
b05vZGU6OnNldENoYW5uZWxJbnRlcnByZXRhdGlvbihjb25zdCBTdHJpbmcmIGludGVycHJldGF0
aW9uKQogewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7Ci0gICAgQXVkaW9Db250ZXh0OjpB
dXRvTG9ja2VyIGxvY2tlcihjb250ZXh0KCkpOworICAgIEF1ZGlvQ29udGV4dEJhc2U6OkF1dG9M
b2NrZXIgbG9ja2VyKGNvbnRleHQoKSk7CiAKICAgICBBTFdBWVNfTE9HKExPR0lERU5USUZJRVIs
IGludGVycHJldGF0aW9uKTsKICAgICAKQEAgLTQzNyw3ICs0MzgsNyBAQCB2b2lkIEF1ZGlvTm9k
ZTo6ZW5hYmxlT3V0cHV0c0lmTmVjZXNzYXJ5KCkKIHsKICAgICBpZiAobV9pc0Rpc2FibGVkICYm
IG1fY29ubmVjdGlvblJlZkNvdW50ID4gMCkgewogICAgICAgICBBU1NFUlQoaXNNYWluVGhyZWFk
KCkpOwotICAgICAgICBBdWRpb0NvbnRleHQ6OkF1dG9Mb2NrZXIgbG9ja2VyKGNvbnRleHQoKSk7
CisgICAgICAgIEF1ZGlvQ29udGV4dEJhc2U6OkF1dG9Mb2NrZXIgbG9ja2VyKGNvbnRleHQoKSk7
CiAKICAgICAgICAgbV9pc0Rpc2FibGVkID0gZmFsc2U7CiAgICAgICAgIGZvciAoYXV0byYgb3V0
cHV0IDogbV9vdXRwdXRzKQpAQCAtNTAxLDcgKzUwMiw3IEBAIHZvaWQgQXVkaW9Ob2RlOjpkZXJl
ZihSZWZUeXBlIHJlZlR5cGUpCiAgICAgLy8gSW4gdGhlIGNhc2Ugb2YgdGhlIGF1ZGlvIHRocmVh
ZCwgd2UgbXVzdCB1c2UgYSB0cnlMb2NrIHRvIGF2b2lkIGdsaXRjaGVzLgogICAgIGJvb2wgaGFz
TG9jayA9IGZhbHNlOwogICAgIGJvb2wgbXVzdFJlbGVhc2VMb2NrID0gZmFsc2U7Ci0gICAgCisK
ICAgICBpZiAoY29udGV4dCgpLmlzQXVkaW9UaHJlYWQoKSkgewogICAgICAgICAvLyBSZWFsLXRp
bWUgYXVkaW8gdGhyZWFkIG11c3Qgbm90IGNvbnRlbmQgbG9jayAodG8gYXZvaWQgZ2xpdGNoZXMp
LgogICAgICAgICBoYXNMb2NrID0gY29udGV4dCgpLnRyeUxvY2sobXVzdFJlbGVhc2VMb2NrKTsK
QEAgLTUzMCw2ICs1MzEsMTMgQEAgdm9pZCBBdWRpb05vZGU6OmRlcmVmKFJlZlR5cGUgcmVmVHlw
ZSkKICAgICAgICAgY29udGV4dCgpLmRlbGV0ZU1hcmtlZE5vZGVzKCk7CiB9CiAKK1ZhcmlhbnQ8
UmVmUHRyPEF1ZGlvQ29udGV4dD4sIFJlZlB0cjxXZWJLaXRBdWRpb0NvbnRleHQ+PiBBdWRpb05v
ZGU6OmNvbnRleHRGb3JCaW5kaW5ncygpIGNvbnN0Cit7CisgICAgaWYgKG1fY29udGV4dC0+aXNX
ZWJLaXRBdWRpb0NvbnRleHQoKSkKKyAgICAgICAgcmV0dXJuIG1ha2VSZWZQdHIoc3RhdGljX2Nh
c3Q8V2ViS2l0QXVkaW9Db250ZXh0Jj4obV9jb250ZXh0LmdldCgpKSk7CisgICAgcmV0dXJuIG1h
a2VSZWZQdHIoc3RhdGljX2Nhc3Q8QXVkaW9Db250ZXh0Jj4obV9jb250ZXh0LmdldCgpKSk7Cit9
CisKIHZvaWQgQXVkaW9Ob2RlOjpmaW5pc2hEZXJlZihSZWZUeXBlIHJlZlR5cGUpCiB7CiAgICAg
QVNTRVJUKGNvbnRleHQoKS5pc0dyYXBoT3duZXIoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvTm9kZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJhdWRpby9BdWRpb05vZGUuaAppbmRleCA0MjEwMTAwNmNjNy4uYTk4ODFiZDRiOGQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Ob2RlLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb05vZGUuaApAQCAtMjksMTUg
KzI5LDE4IEBACiAjaW5jbHVkZSAiRXhjZXB0aW9uT3IuaCIKICNpbmNsdWRlIDx3dGYvRm9yd2Fy
ZC5oPgogI2luY2x1ZGUgPHd0Zi9Mb2dnZXJIZWxwZXIuaD4KKyNpbmNsdWRlIDx3dGYvVmFyaWFu
dC5oPgogCiAjZGVmaW5lIERFQlVHX0FVRElPTk9ERV9SRUZFUkVOQ0VTIDAKIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCiBjbGFzcyBBdWRpb0NvbnRleHQ7CitjbGFzcyBBdWRpb0NvbnRleHRCYXNl
OwogY2xhc3MgQXVkaW9Ob2RlSW5wdXQ7CiBjbGFzcyBBdWRpb05vZGVPdXRwdXQ7CiBjbGFzcyBB
dWRpb1BhcmFtOworY2xhc3MgV2ViS2l0QXVkaW9Db250ZXh0OwogCiAvLyBBbiBBdWRpb05vZGUg
aXMgdGhlIGJhc2ljIGJ1aWxkaW5nIGJsb2NrIGZvciBoYW5kbGluZyBhdWRpbyB3aXRoaW4gYW4g
QXVkaW9Db250ZXh0LgogLy8gSXQgbWF5IGJlIGFuIGF1ZGlvIHNvdXJjZSwgYW4gaW50ZXJtZWRp
YXRlIHByb2Nlc3NpbmcgbW9kdWxlLCBvciBhbiBhdWRpbyBkZXN0aW5hdGlvbi4KQEAgLTU2LDEx
ICs1OSwxMyBAQCBjbGFzcyBBdWRpb05vZGUKIHB1YmxpYzoKICAgICBlbnVtIHsgUHJvY2Vzc2lu
Z1NpemVJbkZyYW1lcyA9IDEyOCB9OwogCi0gICAgQXVkaW9Ob2RlKEF1ZGlvQ29udGV4dCYsIGZs
b2F0IHNhbXBsZVJhdGUpOworICAgIEF1ZGlvTm9kZShBdWRpb0NvbnRleHRCYXNlJiwgZmxvYXQg
c2FtcGxlUmF0ZSk7CiAgICAgdmlydHVhbCB+QXVkaW9Ob2RlKCk7CiAKLSAgICBBdWRpb0NvbnRl
eHQmIGNvbnRleHQoKSB7IHJldHVybiBtX2NvbnRleHQuZ2V0KCk7IH0KLSAgICBjb25zdCBBdWRp
b0NvbnRleHQmIGNvbnRleHQoKSBjb25zdCB7IHJldHVybiBtX2NvbnRleHQuZ2V0KCk7IH0KKyAg
ICBBdWRpb0NvbnRleHRCYXNlJiBjb250ZXh0KCkgeyByZXR1cm4gbV9jb250ZXh0LmdldCgpOyB9
CisgICAgY29uc3QgQXVkaW9Db250ZXh0QmFzZSYgY29udGV4dCgpIGNvbnN0IHsgcmV0dXJuIG1f
Y29udGV4dC5nZXQoKTsgfQorCisgICAgVmFyaWFudDxSZWZQdHI8QXVkaW9Db250ZXh0PiwgUmVm
UHRyPFdlYktpdEF1ZGlvQ29udGV4dD4+IGNvbnRleHRGb3JCaW5kaW5ncygpIGNvbnN0OwogCiAg
ICAgZW51bSBOb2RlVHlwZSB7CiAgICAgICAgIE5vZGVUeXBlVW5rbm93biwKQEAgLTIwOSw3ICsy
MTQsNyBAQCBwcml2YXRlOgogCiAgICAgdm9sYXRpbGUgYm9vbCBtX2lzSW5pdGlhbGl6ZWQ7CiAg
ICAgTm9kZVR5cGUgbV9ub2RlVHlwZTsKLSAgICBSZWY8QXVkaW9Db250ZXh0PiBtX2NvbnRleHQ7
CisgICAgUmVmPEF1ZGlvQ29udGV4dEJhc2U+IG1fY29udGV4dDsKICAgICBmbG9hdCBtX3NhbXBs
ZVJhdGU7CiAgICAgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxBdWRpb05vZGVJbnB1dD4+IG1faW5w
dXRzOwogICAgIFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8QXVkaW9Ob2RlT3V0cHV0Pj4gbV9vdXRw
dXRzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb05v
ZGUuaWRsIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb05vZGUuaWRsCmlu
ZGV4IDcwZmVjOGM4MTQ1Li43MTkzOWM4MzE3MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJhdWRpby9BdWRpb05vZGUuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViYXVkaW8vQXVkaW9Ob2RlLmlkbApAQCAtMjUsNyArMjUsNyBAQAogWwogICAgIENvbmRp
dGlvbmFsPVdFQl9BVURJTywKIF0gaW50ZXJmYWNlIEF1ZGlvTm9kZSA6IEV2ZW50VGFyZ2V0IHsK
LSAgICByZWFkb25seSBhdHRyaWJ1dGUgQXVkaW9Db250ZXh0IGNvbnRleHQ7CisgICAgW0ltcGxl
bWVudGVkQXM9Y29udGV4dEZvckJpbmRpbmdzXSByZWFkb25seSBhdHRyaWJ1dGUgKEF1ZGlvQ29u
dGV4dCBvciBXZWJLaXRBdWRpb0NvbnRleHQpIGNvbnRleHQ7CiAgICAgcmVhZG9ubHkgYXR0cmli
dXRlIHVuc2lnbmVkIGxvbmcgbnVtYmVyT2ZJbnB1dHM7CiAgICAgcmVhZG9ubHkgYXR0cmlidXRl
IHVuc2lnbmVkIGxvbmcgbnVtYmVyT2ZPdXRwdXRzOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvTm9kZU91dHB1dC5oIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJhdWRpby9BdWRpb05vZGVPdXRwdXQuaAppbmRleCA1MGE5NWVlMjA1Yy4uZjA4
OTgzNjM1ZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVk
aW9Ob2RlT3V0cHV0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRp
b05vZGVPdXRwdXQuaApAQCAtNDcsNyArNDcsNyBAQCBwdWJsaWM6CiAKICAgICAvLyBDYW4gYmUg
Y2FsbGVkIGZyb20gYW55IHRocmVhZC4KICAgICBBdWRpb05vZGUqIG5vZGUoKSBjb25zdCB7IHJl
dHVybiBtX25vZGU7IH0KLSAgICBBdWRpb0NvbnRleHQmIGNvbnRleHQoKSB7IHJldHVybiBtX25v
ZGUtPmNvbnRleHQoKTsgfQorICAgIEF1ZGlvQ29udGV4dEJhc2UmIGNvbnRleHQoKSB7IHJldHVy
biBtX25vZGUtPmNvbnRleHQoKTsgfQogICAgIAogICAgIC8vIENhdXNlcyBvdXIgQXVkaW9Ob2Rl
IHRvIHByb2Nlc3MgaWYgaXQgaGFzbid0IGFscmVhZHkgZm9yIHRoaXMgcmVuZGVyIHF1YW50dW0u
CiAgICAgLy8gSXQgcmV0dXJucyB0aGUgYnVzIGNvbnRhaW5pbmcgdGhlIHByb2Nlc3NlZCBhdWRp
byBmb3IgdGhpcyBvdXRwdXQsIHJldHVybmluZyBpblBsYWNlQnVzIGlmIGluLXBsYWNlIHByb2Nl
c3Npbmcgd2FzIHBvc3NpYmxlLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJhdWRpby9BdWRpb1BhcmFtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8v
QXVkaW9QYXJhbS5jcHAKaW5kZXggMjkzNDU2NDQ1Y2MuLmQ0NzBiZjc0NmVmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvUGFyYW0uY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9QYXJhbS5jcHAKQEAgLTQxLDcgKzQx
LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY29uc3QgZG91YmxlIEF1ZGlvUGFyYW06OkRlZmF1
bHRTbW9vdGhpbmdDb25zdGFudCA9IDAuMDU7CiBjb25zdCBkb3VibGUgQXVkaW9QYXJhbTo6U25h
cFRocmVzaG9sZCA9IDAuMDAxOwogCi1BdWRpb1BhcmFtOjpBdWRpb1BhcmFtKEF1ZGlvQ29udGV4
dCYgY29udGV4dCwgY29uc3QgU3RyaW5nJiBuYW1lLCBkb3VibGUgZGVmYXVsdFZhbHVlLCBkb3Vi
bGUgbWluVmFsdWUsIGRvdWJsZSBtYXhWYWx1ZSwgdW5zaWduZWQgdW5pdHMpCitBdWRpb1BhcmFt
OjpBdWRpb1BhcmFtKEF1ZGlvQ29udGV4dEJhc2UmIGNvbnRleHQsIGNvbnN0IFN0cmluZyYgbmFt
ZSwgZG91YmxlIGRlZmF1bHRWYWx1ZSwgZG91YmxlIG1pblZhbHVlLCBkb3VibGUgbWF4VmFsdWUs
IHVuc2lnbmVkIHVuaXRzKQogICAgIDogQXVkaW9TdW1taW5nSnVuY3Rpb24oY29udGV4dCkKICAg
ICAsIG1fbmFtZShuYW1lKQogICAgICwgbV92YWx1ZShkZWZhdWx0VmFsdWUpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvUGFyYW0uaCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9QYXJhbS5oCmluZGV4IDIyNmM5NTdlNzA2Li4x
NmEyMTA5NTA0NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9B
dWRpb1BhcmFtLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1Bh
cmFtLmgKQEAgLTMxLDYgKzMxLDcgQEAKICNpbmNsdWRlICJBdWRpb0NvbnRleHQuaCIKICNpbmNs
dWRlICJBdWRpb1BhcmFtVGltZWxpbmUuaCIKICNpbmNsdWRlICJBdWRpb1N1bW1pbmdKdW5jdGlv
bi5oIgorI2luY2x1ZGUgIldlYktpdEF1ZGlvQ29udGV4dC5oIgogI2luY2x1ZGUgPEphdmFTY3Jp
cHRDb3JlL0Zsb2F0MzJBcnJheS5oPgogI2luY2x1ZGUgPHN5cy90eXBlcy5oPgogI2luY2x1ZGUg
PHd0Zi9Mb2dnZXJIZWxwZXIuaD4KQEAgLTUyLDcgKzUzLDcgQEAgcHVibGljOgogICAgIHN0YXRp
YyBjb25zdCBkb3VibGUgRGVmYXVsdFNtb290aGluZ0NvbnN0YW50OwogICAgIHN0YXRpYyBjb25z
dCBkb3VibGUgU25hcFRocmVzaG9sZDsKIAotICAgIHN0YXRpYyBSZWY8QXVkaW9QYXJhbT4gY3Jl
YXRlKEF1ZGlvQ29udGV4dCYgY29udGV4dCwgY29uc3QgU3RyaW5nJiBuYW1lLCBkb3VibGUgZGVm
YXVsdFZhbHVlLCBkb3VibGUgbWluVmFsdWUsIGRvdWJsZSBtYXhWYWx1ZSwgdW5zaWduZWQgdW5p
dHMgPSAwKQorICAgIHN0YXRpYyBSZWY8QXVkaW9QYXJhbT4gY3JlYXRlKEF1ZGlvQ29udGV4dEJh
c2UmIGNvbnRleHQsIGNvbnN0IFN0cmluZyYgbmFtZSwgZG91YmxlIGRlZmF1bHRWYWx1ZSwgZG91
YmxlIG1pblZhbHVlLCBkb3VibGUgbWF4VmFsdWUsIHVuc2lnbmVkIHVuaXRzID0gMCkKICAgICB7
CiAgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEF1ZGlvUGFyYW0oY29udGV4dCwgbmFtZSwg
ZGVmYXVsdFZhbHVlLCBtaW5WYWx1ZSwgbWF4VmFsdWUsIHVuaXRzKSk7CiAgICAgfQpAQCAtMTA4
LDcgKzEwOSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGRpc2Nvbm5lY3QoQXVkaW9Ob2RlT3V0cHV0
Kik7CiAKIHByb3RlY3RlZDoKLSAgICBBdWRpb1BhcmFtKEF1ZGlvQ29udGV4dCYsIGNvbnN0IFN0
cmluZyYsIGRvdWJsZSBkZWZhdWx0VmFsdWUsIGRvdWJsZSBtaW5WYWx1ZSwgZG91YmxlIG1heFZh
bHVlLCB1bnNpZ25lZCB1bml0cyA9IDApOworICAgIEF1ZGlvUGFyYW0oQXVkaW9Db250ZXh0QmFz
ZSYsIGNvbnN0IFN0cmluZyYsIGRvdWJsZSBkZWZhdWx0VmFsdWUsIGRvdWJsZSBtaW5WYWx1ZSwg
ZG91YmxlIG1heFZhbHVlLCB1bnNpZ25lZCB1bml0cyA9IDApOwogCiBwcml2YXRlOgogICAgIC8v
IHNhbXBsZUFjY3VyYXRlIGNvcnJlc3BvbmRzIHRvIGEtcmF0ZSAoYXVkaW8gcmF0ZSkgdnMuIGst
cmF0ZSBpbiB0aGUgV2ViIEF1ZGlvIHNwZWNpZmljYXRpb24uCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvUGFyYW1UaW1lbGluZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvUGFyYW1UaW1lbGluZS5jcHAKaW5kZXggMmI1
OTU3MGJmNmUuLjZjNDEzMDFkOGFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmF1ZGlvL0F1ZGlvUGFyYW1UaW1lbGluZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJhdWRpby9BdWRpb1BhcmFtVGltZWxpbmUuY3BwCkBAIC0xMTMsNyArMTEzLDcgQEAg
dm9pZCBBdWRpb1BhcmFtVGltZWxpbmU6OmNhbmNlbFNjaGVkdWxlZFZhbHVlcyhmbG9hdCBzdGFy
dFRpbWUpCiAgICAgfQogfQogCi1mbG9hdCBBdWRpb1BhcmFtVGltZWxpbmU6OnZhbHVlRm9yQ29u
dGV4dFRpbWUoQXVkaW9Db250ZXh0JiBjb250ZXh0LCBmbG9hdCBkZWZhdWx0VmFsdWUsIGJvb2wm
IGhhc1ZhbHVlKQorZmxvYXQgQXVkaW9QYXJhbVRpbWVsaW5lOjp2YWx1ZUZvckNvbnRleHRUaW1l
KEF1ZGlvQ29udGV4dEJhc2UmIGNvbnRleHQsIGZsb2F0IGRlZmF1bHRWYWx1ZSwgYm9vbCYgaGFz
VmFsdWUpCiB7CiAgICAgewogICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPExvY2s+IGxvY2sobV9l
dmVudHNNdXRleCwgc3RkOjp0cnlfdG9fbG9jayk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvUGFyYW1UaW1lbGluZS5oIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJhdWRpby9BdWRpb1BhcmFtVGltZWxpbmUuaAppbmRleCA3YzEwOTk5NTZjZS4u
YTU4NjhiZGVlMTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8v
QXVkaW9QYXJhbVRpbWVsaW5lLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRp
by9BdWRpb1BhcmFtVGltZWxpbmUuaApAQCAtNTIsNyArNTIsNyBAQCBwdWJsaWM6CiAKICAgICAv
LyBoYXNWYWx1ZSBpcyBzZXQgdG8gdHJ1ZSBpZiBhIHZhbGlkIHRpbWVsaW5lIHZhbHVlIGlzIHJl
dHVybmVkLgogICAgIC8vIG90aGVyd2lzZSBkZWZhdWx0VmFsdWUgaXMgcmV0dXJuZWQuCi0gICAg
ZmxvYXQgdmFsdWVGb3JDb250ZXh0VGltZShBdWRpb0NvbnRleHQmLCBmbG9hdCBkZWZhdWx0VmFs
dWUsIGJvb2wmIGhhc1ZhbHVlKTsKKyAgICBmbG9hdCB2YWx1ZUZvckNvbnRleHRUaW1lKEF1ZGlv
Q29udGV4dEJhc2UmLCBmbG9hdCBkZWZhdWx0VmFsdWUsIGJvb2wmIGhhc1ZhbHVlKTsKIAogICAg
IC8vIEdpdmVuIHRoZSB0aW1lIHJhbmdlLCBjYWxjdWxhdGVzIHBhcmFtZXRlciB2YWx1ZXMgaW50
byB0aGUgdmFsdWVzIGJ1ZmZlcgogICAgIC8vIGFuZCByZXR1cm5zIHRoZSBsYXN0IHBhcmFtZXRl
ciB2YWx1ZSBjYWxjdWxhdGVkIGZvciAidmFsdWVzIiBvciB0aGUgZGVmYXVsdFZhbHVlIGlmIG5v
bmUgd2VyZSBjYWxjdWxhdGVkLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJhdWRpby9BdWRpb1NjaGVkdWxlZFNvdXJjZU5vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJhdWRpby9BdWRpb1NjaGVkdWxlZFNvdXJjZU5vZGUuY3BwCmluZGV4IDBmNzI2NzZm
Yzc0Li43YzI4MjM3YTBiZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJh
dWRpby9BdWRpb1NjaGVkdWxlZFNvdXJjZU5vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViYXVkaW8vQXVkaW9TY2hlZHVsZWRTb3VyY2VOb2RlLmNwcApAQCAtNDksNyArNDks
NyBAQCBXVEZfTUFLRV9JU09fQUxMT0NBVEVEX0lNUEwoQXVkaW9TY2hlZHVsZWRTb3VyY2VOb2Rl
KTsKIAogY29uc3QgZG91YmxlIEF1ZGlvU2NoZWR1bGVkU291cmNlTm9kZTo6VW5rbm93blRpbWUg
PSAtMTsKIAotQXVkaW9TY2hlZHVsZWRTb3VyY2VOb2RlOjpBdWRpb1NjaGVkdWxlZFNvdXJjZU5v
ZGUoQXVkaW9Db250ZXh0JiBjb250ZXh0LCBmbG9hdCBzYW1wbGVSYXRlKQorQXVkaW9TY2hlZHVs
ZWRTb3VyY2VOb2RlOjpBdWRpb1NjaGVkdWxlZFNvdXJjZU5vZGUoQXVkaW9Db250ZXh0QmFzZSYg
Y29udGV4dCwgZmxvYXQgc2FtcGxlUmF0ZSkKICAgICA6IEF1ZGlvTm9kZShjb250ZXh0LCBzYW1w
bGVSYXRlKQogICAgICwgQWN0aXZlRE9NT2JqZWN0KGNvbnRleHQuc2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCgpKQogICAgICwgbV9lbmRUaW1lKFVua25vd25UaW1lKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1NjaGVkdWxlZFNvdXJjZU5vZGUuaCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9TY2hlZHVsZWRTb3VyY2VOb2RlLmgK
aW5kZXggOGNhZGJlMTBhZmQuLmI0ZDk1ODgwYzFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvU2NoZWR1bGVkU291cmNlTm9kZS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9TY2hlZHVsZWRTb3VyY2VOb2RlLmgKQEAg
LTUzLDcgKzUzLDcgQEAgcHVibGljOgogICAgICAgICBGSU5JU0hFRF9TVEFURSA9IDMKICAgICB9
OwogICAgIAotICAgIEF1ZGlvU2NoZWR1bGVkU291cmNlTm9kZShBdWRpb0NvbnRleHQmLCBmbG9h
dCBzYW1wbGVSYXRlKTsKKyAgICBBdWRpb1NjaGVkdWxlZFNvdXJjZU5vZGUoQXVkaW9Db250ZXh0
QmFzZSYsIGZsb2F0IHNhbXBsZVJhdGUpOwogCiAgICAgRXhjZXB0aW9uT3I8dm9pZD4gc3RhcnRM
YXRlcihkb3VibGUgd2hlbik7CiAgICAgRXhjZXB0aW9uT3I8dm9pZD4gc3RvcExhdGVyKGRvdWJs
ZSB3aGVuKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVk
aW9TdW1taW5nSnVuY3Rpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9B
dWRpb1N1bW1pbmdKdW5jdGlvbi5jcHAKaW5kZXggZWU2MDBhNjI5YTEuLmRkNjRmZDNlYTgxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvU3VtbWluZ0p1
bmN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvU3Vt
bWluZ0p1bmN0aW9uLmNwcApAQCAtMzQsNyArMzQsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKLUF1ZGlvU3VtbWluZ0p1bmN0aW9uOjpBdWRpb1N1bW1pbmdKdW5jdGlvbihBdWRpb0NvbnRl
eHQmIGNvbnRleHQpCitBdWRpb1N1bW1pbmdKdW5jdGlvbjo6QXVkaW9TdW1taW5nSnVuY3Rpb24o
QXVkaW9Db250ZXh0QmFzZSYgY29udGV4dCkKICAgICA6IG1fY29udGV4dChjb250ZXh0KQogICAg
ICwgbV9yZW5kZXJpbmdTdGF0ZU5lZWRVcGRhdGluZyhmYWxzZSkKIHsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9TdW1taW5nSnVuY3Rpb24uaCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9TdW1taW5nSnVuY3Rpb24uaAppbmRl
eCBjOTRmZjZkNmE1YS4uNGNiZjhhZTlmYjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViYXVkaW8vQXVkaW9TdW1taW5nSnVuY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvU3VtbWluZ0p1bmN0aW9uLmgKQEAgLTMwLDE4ICszMCwx
OCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIEF1ZGlvQ29udGV4dDsKK2NsYXNz
IEF1ZGlvQ29udGV4dEJhc2U7CiBjbGFzcyBBdWRpb05vZGVPdXRwdXQ7CiAKIC8vIEFuIEF1ZGlv
U3VtbWluZ0p1bmN0aW9uIHJlcHJlc2VudHMgYSBwb2ludCB3aGVyZSB6ZXJvLCBvbmUsIG9yIG1v
cmUgQXVkaW9Ob2RlT3V0cHV0cyBjb25uZWN0LgogCiBjbGFzcyBBdWRpb1N1bW1pbmdKdW5jdGlv
biB7CiBwdWJsaWM6Ci0gICAgZXhwbGljaXQgQXVkaW9TdW1taW5nSnVuY3Rpb24oQXVkaW9Db250
ZXh0Jik7CisgICAgZXhwbGljaXQgQXVkaW9TdW1taW5nSnVuY3Rpb24oQXVkaW9Db250ZXh0QmFz
ZSYpOwogICAgIHZpcnR1YWwgfkF1ZGlvU3VtbWluZ0p1bmN0aW9uKCk7CiAKICAgICAvLyBDYW4g
YmUgY2FsbGVkIGZyb20gYW55IHRocmVhZC4KLSAgICBBdWRpb0NvbnRleHQmIGNvbnRleHQoKSB7
IHJldHVybiBtX2NvbnRleHQuZ2V0KCk7IH0KKyAgICBBdWRpb0NvbnRleHRCYXNlJiBjb250ZXh0
KCkgeyByZXR1cm4gbV9jb250ZXh0OyB9CiAKICAgICAvLyBUaGlzIG11c3QgYmUgY2FsbGVkIHdo
ZW5ldmVyIHdlIG1vZGlmeSBtX291dHB1dHMuCiAgICAgdm9pZCBjaGFuZ2VkT3V0cHV0cygpOwpA
QCAtNjAsNyArNjAsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGRpZFVwZGF0ZSgpID0g
MDsKIAogcHJvdGVjdGVkOgotICAgIFJlZjxBdWRpb0NvbnRleHQ+IG1fY29udGV4dDsKKyAgICBS
ZWY8QXVkaW9Db250ZXh0QmFzZT4gbV9jb250ZXh0OwogCiAgICAgLy8gbV9vdXRwdXRzIGNvbnRh
aW5zIHRoZSBBdWRpb05vZGVPdXRwdXRzIHJlcHJlc2VudGluZyBjdXJyZW50IGNvbm5lY3Rpb25z
IHdoaWNoIGFyZSBub3QgZGlzYWJsZWQuCiAgICAgLy8gVGhlIHJlbmRlcmluZyBjb2RlIHNob3Vs
ZCBuZXZlciB1c2UgdGhpcyBkaXJlY3RseSwgYnV0IGluc3RlYWQgdXNlcyBtX3JlbmRlcmluZ091
dHB1dHMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0JpcXVh
ZEZpbHRlck5vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9CaXF1YWRG
aWx0ZXJOb2RlLmNwcAppbmRleCA0YTgyNTVlNmYwYS4uZGRlMDc3M2Q0NzMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQmlxdWFkRmlsdGVyTm9kZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9CaXF1YWRGaWx0ZXJOb2RlLmNwcApA
QCAtMzMsNyArMzMsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFdURl9NQUtFX0lTT19BTExP
Q0FURURfSU1QTChCaXF1YWRGaWx0ZXJOb2RlKTsKIAotQmlxdWFkRmlsdGVyTm9kZTo6QmlxdWFk
RmlsdGVyTm9kZShBdWRpb0NvbnRleHQmIGNvbnRleHQsIGZsb2F0IHNhbXBsZVJhdGUpCitCaXF1
YWRGaWx0ZXJOb2RlOjpCaXF1YWRGaWx0ZXJOb2RlKEF1ZGlvQ29udGV4dEJhc2UmIGNvbnRleHQs
IGZsb2F0IHNhbXBsZVJhdGUpCiAgICAgOiBBdWRpb0Jhc2ljUHJvY2Vzc29yTm9kZShjb250ZXh0
LCBzYW1wbGVSYXRlKQogewogICAgIHNldE5vZGVUeXBlKE5vZGVUeXBlQmlxdWFkRmlsdGVyKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQmlxdWFkRmlsdGVy
Tm9kZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9CaXF1YWRGaWx0ZXJOb2Rl
LmgKaW5kZXggODA5NGQ5MWVhYjMuLmFjOGQ5NDdhMTBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0JpcXVhZEZpbHRlck5vZGUuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0JpcXVhZEZpbHRlck5vZGUuaApAQCAtMzQsNyArMzQsNyBA
QCBjbGFzcyBBdWRpb1BhcmFtOwogY2xhc3MgQmlxdWFkRmlsdGVyTm9kZSBmaW5hbCA6IHB1Ymxp
YyBBdWRpb0Jhc2ljUHJvY2Vzc29yTm9kZSB7CiAgICAgV1RGX01BS0VfSVNPX0FMTE9DQVRFRChC
aXF1YWRGaWx0ZXJOb2RlKTsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPEJpcXVhZEZpbHRlck5v
ZGU+IGNyZWF0ZShBdWRpb0NvbnRleHQmIGNvbnRleHQsIGZsb2F0IHNhbXBsZVJhdGUpCisgICAg
c3RhdGljIFJlZjxCaXF1YWRGaWx0ZXJOb2RlPiBjcmVhdGUoQXVkaW9Db250ZXh0QmFzZSYgY29u
dGV4dCwgZmxvYXQgc2FtcGxlUmF0ZSkKICAgICB7CiAgICAgICAgIHJldHVybiBhZG9wdFJlZigq
bmV3IEJpcXVhZEZpbHRlck5vZGUoY29udGV4dCwgc2FtcGxlUmF0ZSkpOwogICAgIH0KQEAgLTUy
LDcgKzUyLDcgQEAgcHVibGljOgogICAgIHZvaWQgZ2V0RnJlcXVlbmN5UmVzcG9uc2UoY29uc3Qg
UmVmUHRyPEZsb2F0MzJBcnJheT4mIGZyZXF1ZW5jeUh6LCBjb25zdCBSZWZQdHI8RmxvYXQzMkFy
cmF5PiYgbWFnUmVzcG9uc2UsIGNvbnN0IFJlZlB0cjxGbG9hdDMyQXJyYXk+JiBwaGFzZVJlc3Bv
bnNlKTsKIAogcHJpdmF0ZToKLSAgICBCaXF1YWRGaWx0ZXJOb2RlKEF1ZGlvQ29udGV4dCYsIGZs
b2F0IHNhbXBsZVJhdGUpOworICAgIEJpcXVhZEZpbHRlck5vZGUoQXVkaW9Db250ZXh0QmFzZSYs
IGZsb2F0IHNhbXBsZVJhdGUpOwogCiAgICAgQmlxdWFkUHJvY2Vzc29yKiBiaXF1YWRQcm9jZXNz
b3IoKSB7IHJldHVybiBzdGF0aWNfY2FzdDxCaXF1YWRQcm9jZXNzb3IqPihwcm9jZXNzb3IoKSk7
IH0KIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0JpcXVh
ZFByb2Nlc3Nvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0JpcXVhZFBy
b2Nlc3Nvci5jcHAKaW5kZXggZTg0Yjk4MDM1NjcuLjJmNjA2N2E3MmRjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0JpcXVhZFByb2Nlc3Nvci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9CaXF1YWRQcm9jZXNzb3IuY3BwCkBAIC0z
Miw3ICszMiw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAKLUJpcXVhZFByb2Nlc3Nv
cjo6QmlxdWFkUHJvY2Vzc29yKEF1ZGlvQ29udGV4dCYgY29udGV4dCwgZmxvYXQgc2FtcGxlUmF0
ZSwgc2l6ZV90IG51bWJlck9mQ2hhbm5lbHMsIGJvb2wgYXV0b0luaXRpYWxpemUpCitCaXF1YWRQ
cm9jZXNzb3I6OkJpcXVhZFByb2Nlc3NvcihBdWRpb0NvbnRleHRCYXNlJiBjb250ZXh0LCBmbG9h
dCBzYW1wbGVSYXRlLCBzaXplX3QgbnVtYmVyT2ZDaGFubmVscywgYm9vbCBhdXRvSW5pdGlhbGl6
ZSkKICAgICA6IEF1ZGlvRFNQS2VybmVsUHJvY2Vzc29yKHNhbXBsZVJhdGUsIG51bWJlck9mQ2hh
bm5lbHMpCiAgICAgLCBtX3R5cGUoQmlxdWFkRmlsdGVyVHlwZTo6TG93cGFzcykKICAgICAsIG1f
cGFyYW1ldGVyMSgwKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRp
by9CaXF1YWRQcm9jZXNzb3IuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQmlx
dWFkUHJvY2Vzc29yLmgKaW5kZXggYWRiZWVjNDMwMjUuLmRjMzA2YWI1MTdiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0JpcXVhZFByb2Nlc3Nvci5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQmlxdWFkUHJvY2Vzc29yLmgKQEAgLTUw
LDcgKzUwLDcgQEAgZW51bSBjbGFzcyBCaXF1YWRGaWx0ZXJUeXBlIHsKIGNsYXNzIEJpcXVhZFBy
b2Nlc3NvciBmaW5hbCA6IHB1YmxpYyBBdWRpb0RTUEtlcm5lbFByb2Nlc3NvciB7CiAgICAgV1RG
X01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6Ci0gICAgQmlxdWFkUHJvY2Vzc29yKEF1ZGlv
Q29udGV4dCYsIGZsb2F0IHNhbXBsZVJhdGUsIHNpemVfdCBudW1iZXJPZkNoYW5uZWxzLCBib29s
IGF1dG9Jbml0aWFsaXplKTsKKyAgICBCaXF1YWRQcm9jZXNzb3IoQXVkaW9Db250ZXh0QmFzZSYs
IGZsb2F0IHNhbXBsZVJhdGUsIHNpemVfdCBudW1iZXJPZkNoYW5uZWxzLCBib29sIGF1dG9Jbml0
aWFsaXplKTsKIAogICAgIHZpcnR1YWwgfkJpcXVhZFByb2Nlc3NvcigpOwogICAgIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9DaGFubmVsTWVyZ2VyTm9kZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0NoYW5uZWxNZXJnZXJOb2RlLmNw
cAppbmRleCBkZjUwZjI2ODczNi4uZGUyOGFlYTdkMmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViYXVkaW8vQ2hhbm5lbE1lcmdlck5vZGUuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQ2hhbm5lbE1lcmdlck5vZGUuY3BwCkBAIC00Myw3ICs0
Myw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogV1RGX01BS0VfSVNPX0FMTE9DQVRFRF9JTVBM
KENoYW5uZWxNZXJnZXJOb2RlKTsKIAotUmVmUHRyPENoYW5uZWxNZXJnZXJOb2RlPiBDaGFubmVs
TWVyZ2VyTm9kZTo6Y3JlYXRlKEF1ZGlvQ29udGV4dCYgY29udGV4dCwgZmxvYXQgc2FtcGxlUmF0
ZSwgdW5zaWduZWQgbnVtYmVyT2ZJbnB1dHMpCitSZWZQdHI8Q2hhbm5lbE1lcmdlck5vZGU+IENo
YW5uZWxNZXJnZXJOb2RlOjpjcmVhdGUoQXVkaW9Db250ZXh0QmFzZSYgY29udGV4dCwgZmxvYXQg
c2FtcGxlUmF0ZSwgdW5zaWduZWQgbnVtYmVyT2ZJbnB1dHMpCiB7CiAgICAgaWYgKCFudW1iZXJP
ZklucHV0cyB8fCBudW1iZXJPZklucHV0cyA+IEF1ZGlvQ29udGV4dDo6bWF4TnVtYmVyT2ZDaGFu
bmVscygpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTUxLDcgKzUxLDcgQEAgUmVmUHRy
PENoYW5uZWxNZXJnZXJOb2RlPiBDaGFubmVsTWVyZ2VyTm9kZTo6Y3JlYXRlKEF1ZGlvQ29udGV4
dCYgY29udGV4dCwgZmxvYXQKICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBDaGFubmVsTWVyZ2Vy
Tm9kZShjb250ZXh0LCBzYW1wbGVSYXRlLCBudW1iZXJPZklucHV0cykpOyAgICAgIAogfQogCi1D
aGFubmVsTWVyZ2VyTm9kZTo6Q2hhbm5lbE1lcmdlck5vZGUoQXVkaW9Db250ZXh0JiBjb250ZXh0
LCBmbG9hdCBzYW1wbGVSYXRlLCB1bnNpZ25lZCBudW1iZXJPZklucHV0cykKK0NoYW5uZWxNZXJn
ZXJOb2RlOjpDaGFubmVsTWVyZ2VyTm9kZShBdWRpb0NvbnRleHRCYXNlJiBjb250ZXh0LCBmbG9h
dCBzYW1wbGVSYXRlLCB1bnNpZ25lZCBudW1iZXJPZklucHV0cykKICAgICA6IEF1ZGlvTm9kZShj
b250ZXh0LCBzYW1wbGVSYXRlKQogICAgICwgbV9kZXNpcmVkTnVtYmVyT2ZPdXRwdXRDaGFubmVs
cyhEZWZhdWx0TnVtYmVyT2ZPdXRwdXRDaGFubmVscykKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQ2hhbm5lbE1lcmdlck5vZGUuaCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViYXVkaW8vQ2hhbm5lbE1lcmdlck5vZGUuaAppbmRleCA2NjYzNmVlZDZm
Ny4uNjI5NzZlMDUwNzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVk
aW8vQ2hhbm5lbE1lcmdlck5vZGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1
ZGlvL0NoYW5uZWxNZXJnZXJOb2RlLmgKQEAgLTM3LDcgKzM3LDcgQEAgY2xhc3MgQXVkaW9Db250
ZXh0OwogY2xhc3MgQ2hhbm5lbE1lcmdlck5vZGUgZmluYWwgOiBwdWJsaWMgQXVkaW9Ob2RlIHsK
ICAgICBXVEZfTUFLRV9JU09fQUxMT0NBVEVEKENoYW5uZWxNZXJnZXJOb2RlKTsKIHB1YmxpYzoK
LSAgICBzdGF0aWMgUmVmUHRyPENoYW5uZWxNZXJnZXJOb2RlPiBjcmVhdGUoQXVkaW9Db250ZXh0
JiwgZmxvYXQgc2FtcGxlUmF0ZSwgdW5zaWduZWQgbnVtYmVyT2ZJbnB1dHMpOworICAgIHN0YXRp
YyBSZWZQdHI8Q2hhbm5lbE1lcmdlck5vZGU+IGNyZWF0ZShBdWRpb0NvbnRleHRCYXNlJiwgZmxv
YXQgc2FtcGxlUmF0ZSwgdW5zaWduZWQgbnVtYmVyT2ZJbnB1dHMpOwogCiAgICAgLy8gQXVkaW9O
b2RlCiAgICAgdm9pZCBwcm9jZXNzKHNpemVfdCBmcmFtZXNUb1Byb2Nlc3MpIG92ZXJyaWRlOwpA
QCAtNTIsNyArNTIsNyBAQCBwcml2YXRlOgogICAgIGRvdWJsZSB0YWlsVGltZSgpIGNvbnN0IG92
ZXJyaWRlIHsgcmV0dXJuIDA7IH0KICAgICBkb3VibGUgbGF0ZW5jeVRpbWUoKSBjb25zdCBvdmVy
cmlkZSB7IHJldHVybiAwOyB9CiAKLSAgICBDaGFubmVsTWVyZ2VyTm9kZShBdWRpb0NvbnRleHQm
LCBmbG9hdCBzYW1wbGVSYXRlLCB1bnNpZ25lZCBudW1iZXJPZklucHV0cyk7CisgICAgQ2hhbm5l
bE1lcmdlck5vZGUoQXVkaW9Db250ZXh0QmFzZSYsIGZsb2F0IHNhbXBsZVJhdGUsIHVuc2lnbmVk
IG51bWJlck9mSW5wdXRzKTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQ2hhbm5lbFNwbGl0dGVyTm9kZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0NoYW5uZWxTcGxpdHRlck5vZGUu
Y3BwCmluZGV4IDgyZjY5YTA0Zjk5Li5mNTU1M2QwYzgzNSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJhdWRpby9DaGFubmVsU3BsaXR0ZXJOb2RlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0NoYW5uZWxTcGxpdHRlck5vZGUuY3BwCkBAIC0z
Nyw3ICszNyw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogV1RGX01BS0VfSVNPX0FMTE9DQVRF
RF9JTVBMKENoYW5uZWxTcGxpdHRlck5vZGUpOwogICAgIAotUmVmUHRyPENoYW5uZWxTcGxpdHRl
ck5vZGU+IENoYW5uZWxTcGxpdHRlck5vZGU6OmNyZWF0ZShBdWRpb0NvbnRleHQmIGNvbnRleHQs
IGZsb2F0IHNhbXBsZVJhdGUsIHVuc2lnbmVkIG51bWJlck9mT3V0cHV0cykKK1JlZlB0cjxDaGFu
bmVsU3BsaXR0ZXJOb2RlPiBDaGFubmVsU3BsaXR0ZXJOb2RlOjpjcmVhdGUoQXVkaW9Db250ZXh0
QmFzZSYgY29udGV4dCwgZmxvYXQgc2FtcGxlUmF0ZSwgdW5zaWduZWQgbnVtYmVyT2ZPdXRwdXRz
KQogewogICAgIGlmICghbnVtYmVyT2ZPdXRwdXRzIHx8IG51bWJlck9mT3V0cHV0cyA+IEF1ZGlv
Q29udGV4dDo6bWF4TnVtYmVyT2ZDaGFubmVscygpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsK
QEAgLTQ1LDcgKzQ1LDcgQEAgUmVmUHRyPENoYW5uZWxTcGxpdHRlck5vZGU+IENoYW5uZWxTcGxp
dHRlck5vZGU6OmNyZWF0ZShBdWRpb0NvbnRleHQmIGNvbnRleHQsIGYKICAgICByZXR1cm4gYWRv
cHRSZWYoKm5ldyBDaGFubmVsU3BsaXR0ZXJOb2RlKGNvbnRleHQsIHNhbXBsZVJhdGUsIG51bWJl
ck9mT3V0cHV0cykpOyAgICAgIAogfQogCi1DaGFubmVsU3BsaXR0ZXJOb2RlOjpDaGFubmVsU3Bs
aXR0ZXJOb2RlKEF1ZGlvQ29udGV4dCYgY29udGV4dCwgZmxvYXQgc2FtcGxlUmF0ZSwgdW5zaWdu
ZWQgbnVtYmVyT2ZPdXRwdXRzKQorQ2hhbm5lbFNwbGl0dGVyTm9kZTo6Q2hhbm5lbFNwbGl0dGVy
Tm9kZShBdWRpb0NvbnRleHRCYXNlJiBjb250ZXh0LCBmbG9hdCBzYW1wbGVSYXRlLCB1bnNpZ25l
ZCBudW1iZXJPZk91dHB1dHMpCiAgICAgOiBBdWRpb05vZGUoY29udGV4dCwgc2FtcGxlUmF0ZSkK
IHsKICAgICBzZXROb2RlVHlwZShOb2RlVHlwZUNoYW5uZWxTcGxpdHRlcik7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0NoYW5uZWxTcGxpdHRlck5vZGUuaCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQ2hhbm5lbFNwbGl0dGVyTm9kZS5oCmlu
ZGV4IDhkOTgzMjgxMjM3Li4xM2Q4ZDk4MGRhYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJhdWRpby9DaGFubmVsU3BsaXR0ZXJOb2RlLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJhdWRpby9DaGFubmVsU3BsaXR0ZXJOb2RlLmgKQEAgLTMzLDcgKzMzLDcg
QEAgY2xhc3MgQXVkaW9Db250ZXh0OwogY2xhc3MgQ2hhbm5lbFNwbGl0dGVyTm9kZSBmaW5hbCA6
IHB1YmxpYyBBdWRpb05vZGUgewogICAgIFdURl9NQUtFX0lTT19BTExPQ0FURUQoQ2hhbm5lbFNw
bGl0dGVyTm9kZSk7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZlB0cjxDaGFubmVsU3BsaXR0ZXJO
b2RlPiBjcmVhdGUoQXVkaW9Db250ZXh0JiwgZmxvYXQgc2FtcGxlUmF0ZSwgdW5zaWduZWQgbnVt
YmVyT2ZPdXRwdXRzKTsKKyAgICBzdGF0aWMgUmVmUHRyPENoYW5uZWxTcGxpdHRlck5vZGU+IGNy
ZWF0ZShBdWRpb0NvbnRleHRCYXNlJiwgZmxvYXQgc2FtcGxlUmF0ZSwgdW5zaWduZWQgbnVtYmVy
T2ZPdXRwdXRzKTsKIAogICAgIC8vIEF1ZGlvTm9kZQogICAgIHZvaWQgcHJvY2VzcyhzaXplX3Qg
ZnJhbWVzVG9Qcm9jZXNzKSBvdmVycmlkZTsKQEAgLTQzLDcgKzQzLDcgQEAgcHJpdmF0ZToKICAg
ICBkb3VibGUgdGFpbFRpbWUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiAwOyB9CiAgICAgZG91
YmxlIGxhdGVuY3lUaW1lKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gMDsgfQogCi0gICAgQ2hh
bm5lbFNwbGl0dGVyTm9kZShBdWRpb0NvbnRleHQmLCBmbG9hdCBzYW1wbGVSYXRlLCB1bnNpZ25l
ZCBudW1iZXJPZk91dHB1dHMpOworICAgIENoYW5uZWxTcGxpdHRlck5vZGUoQXVkaW9Db250ZXh0
QmFzZSYsIGZsb2F0IHNhbXBsZVJhdGUsIHVuc2lnbmVkIG51bWJlck9mT3V0cHV0cyk7CiB9Owog
CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmF1ZGlvL0NvbnZvbHZlck5vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJhdWRpby9Db252b2x2ZXJOb2RlLmNwcAppbmRleCBjYzk3MmYxMGRiZC4uZTFmNWViODE1NjAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQ29udm9sdmVyTm9k
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9Db252b2x2ZXJOb2Rl
LmNwcApAQCAtNDcsNyArNDcsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFdURl9NQUtFX0lT
T19BTExPQ0FURURfSU1QTChDb252b2x2ZXJOb2RlKTsKIAotQ29udm9sdmVyTm9kZTo6Q29udm9s
dmVyTm9kZShBdWRpb0NvbnRleHQmIGNvbnRleHQsIGZsb2F0IHNhbXBsZVJhdGUpCitDb252b2x2
ZXJOb2RlOjpDb252b2x2ZXJOb2RlKEF1ZGlvQ29udGV4dEJhc2UmIGNvbnRleHQsIGZsb2F0IHNh
bXBsZVJhdGUpCiAgICAgOiBBdWRpb05vZGUoY29udGV4dCwgc2FtcGxlUmF0ZSkKIHsKICAgICBz
ZXROb2RlVHlwZShOb2RlVHlwZUNvbnZvbHZlcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmF1ZGlvL0NvbnZvbHZlck5vZGUuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViYXVkaW8vQ29udm9sdmVyTm9kZS5oCmluZGV4IDY0YmZlYmVkMmQ4Li4zMWNlYzFlY2M3
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9Db252b2x2ZXJO
b2RlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9Db252b2x2ZXJOb2Rl
LmgKQEAgLTM1LDcgKzM1LDcgQEAgY2xhc3MgUmV2ZXJiOwogY2xhc3MgQ29udm9sdmVyTm9kZSBm
aW5hbCA6IHB1YmxpYyBBdWRpb05vZGUgewogICAgIFdURl9NQUtFX0lTT19BTExPQ0FURUQoQ29u
dm9sdmVyTm9kZSk7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxDb252b2x2ZXJOb2RlPiBjcmVh
dGUoQXVkaW9Db250ZXh0JiBjb250ZXh0LCBmbG9hdCBzYW1wbGVSYXRlKQorICAgIHN0YXRpYyBS
ZWY8Q29udm9sdmVyTm9kZT4gY3JlYXRlKEF1ZGlvQ29udGV4dEJhc2UmIGNvbnRleHQsIGZsb2F0
IHNhbXBsZVJhdGUpCiAgICAgewogICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBDb252b2x2
ZXJOb2RlKGNvbnRleHQsIHNhbXBsZVJhdGUpKTsKICAgICB9CkBAIC00OSw3ICs0OSw3IEBAIHB1
YmxpYzoKICAgICB2b2lkIHNldE5vcm1hbGl6ZShib29sIG5vcm1hbGl6ZSkgeyBtX25vcm1hbGl6
ZSA9IG5vcm1hbGl6ZTsgfQogCiBwcml2YXRlOgotICAgIENvbnZvbHZlck5vZGUoQXVkaW9Db250
ZXh0JiwgZmxvYXQgc2FtcGxlUmF0ZSk7CisgICAgQ29udm9sdmVyTm9kZShBdWRpb0NvbnRleHRC
YXNlJiwgZmxvYXQgc2FtcGxlUmF0ZSk7CiAKICAgICBkb3VibGUgdGFpbFRpbWUoKSBjb25zdCBm
aW5hbDsKICAgICBkb3VibGUgbGF0ZW5jeVRpbWUoKSBjb25zdCBmaW5hbDsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vRGVmYXVsdEF1ZGlvRGVzdGluYXRpb25O
b2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vRGVmYXVsdEF1ZGlvRGVz
dGluYXRpb25Ob2RlLmNwcAppbmRleCAxNzU5YWU0YTVhNi4uMDdlYjlhNDFiNWMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vRGVmYXVsdEF1ZGlvRGVzdGluYXRp
b25Ob2RlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0RlZmF1bHRB
dWRpb0Rlc3RpbmF0aW9uTm9kZS5jcHAKQEAgLTQzLDcgKzQzLDcgQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogCiBXVEZfTUFLRV9JU09fQUxMT0NBVEVEX0lNUEwoRGVmYXVsdEF1ZGlvRGVzdGluYXRp
b25Ob2RlKTsKICAgICAKLURlZmF1bHRBdWRpb0Rlc3RpbmF0aW9uTm9kZTo6RGVmYXVsdEF1ZGlv
RGVzdGluYXRpb25Ob2RlKEF1ZGlvQ29udGV4dCYgY29udGV4dCkKK0RlZmF1bHRBdWRpb0Rlc3Rp
bmF0aW9uTm9kZTo6RGVmYXVsdEF1ZGlvRGVzdGluYXRpb25Ob2RlKEF1ZGlvQ29udGV4dEJhc2Um
IGNvbnRleHQpCiAgICAgOiBBdWRpb0Rlc3RpbmF0aW9uTm9kZShjb250ZXh0LCBBdWRpb0Rlc3Rp
bmF0aW9uOjpoYXJkd2FyZVNhbXBsZVJhdGUoKSkKIHsKICAgICAvLyBOb2RlLXNwZWNpZmljIGRl
ZmF1bHQgbWl4aW5nIHJ1bGVzLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJhdWRpby9EZWZhdWx0QXVkaW9EZXN0aW5hdGlvbk5vZGUuaCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViYXVkaW8vRGVmYXVsdEF1ZGlvRGVzdGluYXRpb25Ob2RlLmgKaW5kZXggNmZkOTVj
MGYzMDEuLjk2YzgzN2M5OTM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmF1ZGlvL0RlZmF1bHRBdWRpb0Rlc3RpbmF0aW9uTm9kZS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViYXVkaW8vRGVmYXVsdEF1ZGlvRGVzdGluYXRpb25Ob2RlLmgKQEAgLTMzLDcg
KzMzLDcgQEAgY2xhc3MgQXVkaW9EZXN0aW5hdGlvbjsKIGNsYXNzIERlZmF1bHRBdWRpb0Rlc3Rp
bmF0aW9uTm9kZSBmaW5hbCA6IHB1YmxpYyBBdWRpb0Rlc3RpbmF0aW9uTm9kZSB7CiAgICAgV1RG
X01BS0VfSVNPX0FMTE9DQVRFRChEZWZhdWx0QXVkaW9EZXN0aW5hdGlvbk5vZGUpOwogcHVibGlj
OgotICAgIHN0YXRpYyBSZWY8RGVmYXVsdEF1ZGlvRGVzdGluYXRpb25Ob2RlPiBjcmVhdGUoQXVk
aW9Db250ZXh0JiBjb250ZXh0KQorICAgIHN0YXRpYyBSZWY8RGVmYXVsdEF1ZGlvRGVzdGluYXRp
b25Ob2RlPiBjcmVhdGUoQXVkaW9Db250ZXh0QmFzZSYgY29udGV4dCkKICAgICB7CiAgICAgICAg
IHJldHVybiBhZG9wdFJlZigqbmV3IERlZmF1bHRBdWRpb0Rlc3RpbmF0aW9uTm9kZShjb250ZXh0
KSk7ICAgICAKICAgICB9CkBAIC00MSw3ICs0MSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5E
ZWZhdWx0QXVkaW9EZXN0aW5hdGlvbk5vZGUoKTsKICAgICAKIHByaXZhdGU6Ci0gICAgZXhwbGlj
aXQgRGVmYXVsdEF1ZGlvRGVzdGluYXRpb25Ob2RlKEF1ZGlvQ29udGV4dCYpOworICAgIGV4cGxp
Y2l0IERlZmF1bHRBdWRpb0Rlc3RpbmF0aW9uTm9kZShBdWRpb0NvbnRleHRCYXNlJik7CiAgICAg
dm9pZCBjcmVhdGVEZXN0aW5hdGlvbigpOwogCiAgICAgdm9pZCBpbml0aWFsaXplKCkgZmluYWw7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0RlbGF5Tm9kZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0RlbGF5Tm9kZS5jcHAKaW5kZXgg
ODFiZDdkMTliMjcuLjQwNTI3YzgxZjlmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmF1ZGlvL0RlbGF5Tm9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJhdWRpby9EZWxheU5vZGUuY3BwCkBAIC0zNywxNCArMzcsMTQgQEAgV1RGX01BS0VfSVNPX0FM
TE9DQVRFRF9JTVBMKERlbGF5Tm9kZSk7CiAKIGNvbnN0IGRvdWJsZSBtYXhpbXVtQWxsb3dlZERl
bGF5VGltZSA9IDE4MDsKIAotaW5saW5lIERlbGF5Tm9kZTo6RGVsYXlOb2RlKEF1ZGlvQ29udGV4
dCYgY29udGV4dCwgZmxvYXQgc2FtcGxlUmF0ZSwgZG91YmxlIG1heERlbGF5VGltZSkKK2lubGlu
ZSBEZWxheU5vZGU6OkRlbGF5Tm9kZShBdWRpb0NvbnRleHRCYXNlJiBjb250ZXh0LCBmbG9hdCBz
YW1wbGVSYXRlLCBkb3VibGUgbWF4RGVsYXlUaW1lKQogICAgIDogQXVkaW9CYXNpY1Byb2Nlc3Nv
ck5vZGUoY29udGV4dCwgc2FtcGxlUmF0ZSkKIHsKICAgICBzZXROb2RlVHlwZShOb2RlVHlwZURl
bGF5KTsKICAgICBtX3Byb2Nlc3NvciA9IG1ha2VVbmlxdWU8RGVsYXlQcm9jZXNzb3I+KGNvbnRl
eHQsIHNhbXBsZVJhdGUsIDEsIG1heERlbGF5VGltZSk7CiB9CiAKLUV4Y2VwdGlvbk9yPFJlZjxE
ZWxheU5vZGU+PiBEZWxheU5vZGU6OmNyZWF0ZShBdWRpb0NvbnRleHQmIGNvbnRleHQsIGZsb2F0
IHNhbXBsZVJhdGUsIGRvdWJsZSBtYXhEZWxheVRpbWUpCitFeGNlcHRpb25PcjxSZWY8RGVsYXlO
b2RlPj4gRGVsYXlOb2RlOjpjcmVhdGUoQXVkaW9Db250ZXh0QmFzZSYgY29udGV4dCwgZmxvYXQg
c2FtcGxlUmF0ZSwgZG91YmxlIG1heERlbGF5VGltZSkKIHsKICAgICBpZiAobWF4RGVsYXlUaW1l
IDw9IDAgfHwgbWF4RGVsYXlUaW1lID49IG1heGltdW1BbGxvd2VkRGVsYXlUaW1lKQogICAgICAg
ICByZXR1cm4gRXhjZXB0aW9uIHsgTm90U3VwcG9ydGVkRXJyb3IgfTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vRGVsYXlOb2RlLmggYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmF1ZGlvL0RlbGF5Tm9kZS5oCmluZGV4IGM5ZWNhZDlmOWZkLi5iNmFmZGQw
ZjkzMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9EZWxheU5v
ZGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0RlbGF5Tm9kZS5oCkBA
IC0zMSwxMiArMzEsMTIgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgRGVsYXlOb2RlIGZp
bmFsIDogcHVibGljIEF1ZGlvQmFzaWNQcm9jZXNzb3JOb2RlIHsKICAgICBXVEZfTUFLRV9JU09f
QUxMT0NBVEVEKERlbGF5Tm9kZSk7CiBwdWJsaWM6Ci0gICAgc3RhdGljIEV4Y2VwdGlvbk9yPFJl
ZjxEZWxheU5vZGU+PiBjcmVhdGUoQXVkaW9Db250ZXh0JiwgZmxvYXQgc2FtcGxlUmF0ZSwgZG91
YmxlIG1heERlbGF5VGltZSk7CisgICAgc3RhdGljIEV4Y2VwdGlvbk9yPFJlZjxEZWxheU5vZGU+
PiBjcmVhdGUoQXVkaW9Db250ZXh0QmFzZSYsIGZsb2F0IHNhbXBsZVJhdGUsIGRvdWJsZSBtYXhE
ZWxheVRpbWUpOwogCiAgICAgQXVkaW9QYXJhbSogZGVsYXlUaW1lKCk7CiAKIHByaXZhdGU6Ci0g
ICAgRGVsYXlOb2RlKEF1ZGlvQ29udGV4dCYsIGZsb2F0IHNhbXBsZVJhdGUsIGRvdWJsZSBtYXhE
ZWxheVRpbWUpOworICAgIERlbGF5Tm9kZShBdWRpb0NvbnRleHRCYXNlJiwgZmxvYXQgc2FtcGxl
UmF0ZSwgZG91YmxlIG1heERlbGF5VGltZSk7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0RlbGF5UHJvY2Vz
c29yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vRGVsYXlQcm9jZXNzb3Iu
Y3BwCmluZGV4IDEwMzY2ZWY2ZWFmLi5jYmJmZDlmYTJmYSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJhdWRpby9EZWxheVByb2Nlc3Nvci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJhdWRpby9EZWxheVByb2Nlc3Nvci5jcHAKQEAgLTMyLDcgKzMyLDcg
QEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1EZWxheVByb2Nlc3Nvcjo6RGVsYXlQcm9jZXNz
b3IoQXVkaW9Db250ZXh0JiBjb250ZXh0LCBmbG9hdCBzYW1wbGVSYXRlLCB1bnNpZ25lZCBudW1i
ZXJPZkNoYW5uZWxzLCBkb3VibGUgbWF4RGVsYXlUaW1lKQorRGVsYXlQcm9jZXNzb3I6OkRlbGF5
UHJvY2Vzc29yKEF1ZGlvQ29udGV4dEJhc2UmIGNvbnRleHQsIGZsb2F0IHNhbXBsZVJhdGUsIHVu
c2lnbmVkIG51bWJlck9mQ2hhbm5lbHMsIGRvdWJsZSBtYXhEZWxheVRpbWUpCiAgICAgOiBBdWRp
b0RTUEtlcm5lbFByb2Nlc3NvcihzYW1wbGVSYXRlLCBudW1iZXJPZkNoYW5uZWxzKQogICAgICwg
bV9tYXhEZWxheVRpbWUobWF4RGVsYXlUaW1lKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJhdWRpby9EZWxheVByb2Nlc3Nvci5oIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJhdWRpby9EZWxheVByb2Nlc3Nvci5oCmluZGV4IDg1ZDljYzZkN2ZkLi5jYmFjNzll
Y2YwZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9EZWxheVBy
b2Nlc3Nvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vRGVsYXlQcm9j
ZXNzb3IuaApAQCAtMzYsNyArMzYsNyBAQCBjbGFzcyBBdWRpb0RTUEtlcm5lbDsKIGNsYXNzIERl
bGF5UHJvY2Vzc29yIGZpbmFsIDogcHVibGljIEF1ZGlvRFNQS2VybmVsUHJvY2Vzc29yIHsKICAg
ICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKLSAgICBEZWxheVByb2Nlc3NvcihB
dWRpb0NvbnRleHQmLCBmbG9hdCBzYW1wbGVSYXRlLCB1bnNpZ25lZCBudW1iZXJPZkNoYW5uZWxz
LCBkb3VibGUgbWF4RGVsYXlUaW1lKTsKKyAgICBEZWxheVByb2Nlc3NvcihBdWRpb0NvbnRleHRC
YXNlJiwgZmxvYXQgc2FtcGxlUmF0ZSwgdW5zaWduZWQgbnVtYmVyT2ZDaGFubmVscywgZG91Ymxl
IG1heERlbGF5VGltZSk7CiAgICAgdmlydHVhbCB+RGVsYXlQcm9jZXNzb3IoKTsKICAgICAKICAg
ICBzdGQ6OnVuaXF1ZV9wdHI8QXVkaW9EU1BLZXJuZWw+IGNyZWF0ZUtlcm5lbCgpIG92ZXJyaWRl
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9EaXN0YW5jZU1v
ZGVsVHlwZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9EaXN0YW5jZU1vZGVs
VHlwZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi5kZmUxMzE4MmNj
MAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vRGlz
dGFuY2VNb2RlbFR5cGUuaApAQCAtMCwwICsxLDI3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDIwLCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
ICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBB
UkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTgorICogQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTCisgKiBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9u
Y2UKKworI2luY2x1ZGUgIkRpc3RhbmNlLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmF1ZGlvL0Rpc3RhbmNlTW9kZWxUeXBlLmlkbCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViYXVkaW8vRGlzdGFuY2VNb2RlbFR5cGUuaWRsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwLi5mOGZmY2ZlZDIyYwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vRGlzdGFuY2VNb2RlbFR5cGUuaWRsCkBAIC0wLDAg
KzEsMzEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAsIEdvb2dsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORCBBTlkKKyAq
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTgorICogQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTCisgKiBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCitbCisgICAgQ29uZGl0aW9uYWw9V0VCX0FVRElPLAorXSBl
bnVtIERpc3RhbmNlTW9kZWxUeXBlIHsKKyAgICAibGluZWFyIiwKKyAgICAiaW52ZXJzZSIsCisg
ICAgImV4cG9uZW50aWFsIgorfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViYXVkaW8vRHluYW1pY3NDb21wcmVzc29yTm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmF1ZGlvL0R5bmFtaWNzQ29tcHJlc3Nvck5vZGUuY3BwCmluZGV4IDE0MDk2ZDhmMGM1
Li5jMzNkMWRlNzJkYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRp
by9EeW5hbWljc0NvbXByZXNzb3JOb2RlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmF1ZGlvL0R5bmFtaWNzQ29tcHJlc3Nvck5vZGUuY3BwCkBAIC00MSw3ICs0MSw3IEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAogV1RGX01BS0VfSVNPX0FMTE9DQVRFRF9JTVBMKER5bmFtaWNz
Q29tcHJlc3Nvck5vZGUpOwogCi1EeW5hbWljc0NvbXByZXNzb3JOb2RlOjpEeW5hbWljc0NvbXBy
ZXNzb3JOb2RlKEF1ZGlvQ29udGV4dCYgY29udGV4dCwgZmxvYXQgc2FtcGxlUmF0ZSkKK0R5bmFt
aWNzQ29tcHJlc3Nvck5vZGU6OkR5bmFtaWNzQ29tcHJlc3Nvck5vZGUoQXVkaW9Db250ZXh0QmFz
ZSYgY29udGV4dCwgZmxvYXQgc2FtcGxlUmF0ZSkKICAgICA6IEF1ZGlvTm9kZShjb250ZXh0LCBz
YW1wbGVSYXRlKQogewogICAgIHNldE5vZGVUeXBlKE5vZGVUeXBlRHluYW1pY3NDb21wcmVzc29y
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vRHluYW1pY3ND
b21wcmVzc29yTm9kZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9EeW5hbWlj
c0NvbXByZXNzb3JOb2RlLmgKaW5kZXggNDRjYmZiYWEwNTkuLmI3MDUzYjIyMTczIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0R5bmFtaWNzQ29tcHJlc3Nvck5v
ZGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0R5bmFtaWNzQ29tcHJl
c3Nvck5vZGUuaApAQCAtMzUsNyArMzUsNyBAQCBjbGFzcyBEeW5hbWljc0NvbXByZXNzb3I7CiBj
bGFzcyBEeW5hbWljc0NvbXByZXNzb3JOb2RlIGZpbmFsIDogcHVibGljIEF1ZGlvTm9kZSB7CiAg
ICAgV1RGX01BS0VfSVNPX0FMTE9DQVRFRChEeW5hbWljc0NvbXByZXNzb3JOb2RlKTsKIHB1Ymxp
YzoKLSAgICBzdGF0aWMgUmVmPER5bmFtaWNzQ29tcHJlc3Nvck5vZGU+IGNyZWF0ZShBdWRpb0Nv
bnRleHQmIGNvbnRleHQsIGZsb2F0IHNhbXBsZVJhdGUpCisgICAgc3RhdGljIFJlZjxEeW5hbWlj
c0NvbXByZXNzb3JOb2RlPiBjcmVhdGUoQXVkaW9Db250ZXh0QmFzZSYgY29udGV4dCwgZmxvYXQg
c2FtcGxlUmF0ZSkKICAgICB7CiAgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IER5bmFtaWNz
Q29tcHJlc3Nvck5vZGUoY29udGV4dCwgc2FtcGxlUmF0ZSkpOwogICAgIH0KQEAgLTYyLDcgKzYy
LDcgQEAgcHJpdmF0ZToKICAgICBkb3VibGUgdGFpbFRpbWUoKSBjb25zdCBvdmVycmlkZTsKICAg
ICBkb3VibGUgbGF0ZW5jeVRpbWUoKSBjb25zdCBvdmVycmlkZTsKIAotICAgIER5bmFtaWNzQ29t
cHJlc3Nvck5vZGUoQXVkaW9Db250ZXh0JiwgZmxvYXQgc2FtcGxlUmF0ZSk7CisgICAgRHluYW1p
Y3NDb21wcmVzc29yTm9kZShBdWRpb0NvbnRleHRCYXNlJiwgZmxvYXQgc2FtcGxlUmF0ZSk7CiAK
ICAgICBzdGQ6OnVuaXF1ZV9wdHI8RHluYW1pY3NDb21wcmVzc29yPiBtX2R5bmFtaWNzQ29tcHJl
c3NvcjsKICAgICBSZWZQdHI8QXVkaW9QYXJhbT4gbV90aHJlc2hvbGQ7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0dhaW5Ob2RlLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViYXVkaW8vR2Fpbk5vZGUuY3BwCmluZGV4IDI1N2RmMmVjZTIzLi45ODRk
MTE5NGJkZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9HYWlu
Tm9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9HYWluTm9kZS5j
cHAKQEAgLTM3LDcgKzM3LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBXVEZfTUFLRV9JU09f
QUxMT0NBVEVEX0lNUEwoR2Fpbk5vZGUpOwogCi1HYWluTm9kZTo6R2Fpbk5vZGUoQXVkaW9Db250
ZXh0JiBjb250ZXh0LCBmbG9hdCBzYW1wbGVSYXRlKQorR2Fpbk5vZGU6OkdhaW5Ob2RlKEF1ZGlv
Q29udGV4dEJhc2UmIGNvbnRleHQsIGZsb2F0IHNhbXBsZVJhdGUpCiAgICAgOiBBdWRpb05vZGUo
Y29udGV4dCwgc2FtcGxlUmF0ZSkKICAgICAsIG1fbGFzdEdhaW4oMS4wKQogICAgICwgbV9zYW1w
bGVBY2N1cmF0ZUdhaW5WYWx1ZXMoQXVkaW9Ob2RlOjpQcm9jZXNzaW5nU2l6ZUluRnJhbWVzKSAv
LyBGSVhNRTogY2FuIHByb2JhYmx5IHNoYXJlIHRlbXAgYnVmZmVyIGluIGNvbnRleHQKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vR2Fpbk5vZGUuaCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vR2Fpbk5vZGUuaAppbmRleCBmYTg1YjBiOWZmNS4u
ZGNmODU1YTkxYzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8v
R2Fpbk5vZGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0dhaW5Ob2Rl
LmgKQEAgLTM4LDcgKzM4LDcgQEAgY2xhc3MgQXVkaW9Db250ZXh0OwogY2xhc3MgR2Fpbk5vZGUg
ZmluYWwgOiBwdWJsaWMgQXVkaW9Ob2RlIHsKICAgICBXVEZfTUFLRV9JU09fQUxMT0NBVEVEKEdh
aW5Ob2RlKTsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPEdhaW5Ob2RlPiBjcmVhdGUoQXVkaW9D
b250ZXh0JiBjb250ZXh0LCBmbG9hdCBzYW1wbGVSYXRlKQorICAgIHN0YXRpYyBSZWY8R2Fpbk5v
ZGU+IGNyZWF0ZShBdWRpb0NvbnRleHRCYXNlJiBjb250ZXh0LCBmbG9hdCBzYW1wbGVSYXRlKQog
ICAgIHsKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgR2Fpbk5vZGUoY29udGV4dCwgc2Ft
cGxlUmF0ZSkpOwogICAgIH0KQEAgLTU3LDcgKzU3LDcgQEAgcHJpdmF0ZToKICAgICBkb3VibGUg
dGFpbFRpbWUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiAwOyB9CiAgICAgZG91YmxlIGxhdGVu
Y3lUaW1lKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gMDsgfQogCi0gICAgR2Fpbk5vZGUoQXVk
aW9Db250ZXh0JiwgZmxvYXQgc2FtcGxlUmF0ZSk7CisgICAgR2Fpbk5vZGUoQXVkaW9Db250ZXh0
QmFzZSYsIGZsb2F0IHNhbXBsZVJhdGUpOwogCiAgICAgZmxvYXQgbV9sYXN0R2FpbjsgLy8gZm9y
IGRlLXppcHBlcmluZwogICAgIFJlZlB0cjxBdWRpb1BhcmFtPiBtX2dhaW47CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL01lZGlhRWxlbWVudEF1ZGlvU291cmNl
Tm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL01lZGlhRWxlbWVudEF1
ZGlvU291cmNlTm9kZS5jcHAKaW5kZXggMGU1OTgxZmE2ODYuLmM2NzVkN2RlNzE2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL01lZGlhRWxlbWVudEF1ZGlvU291
cmNlTm9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9NZWRpYUVs
ZW1lbnRBdWRpb1NvdXJjZU5vZGUuY3BwCkBAIC00MywxMiArNDMsMTIgQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogCiBXVEZfTUFLRV9JU09fQUxMT0NBVEVEX0lNUEwoTWVkaWFFbGVtZW50QXVkaW9T
b3VyY2VOb2RlKTsKIAotUmVmPE1lZGlhRWxlbWVudEF1ZGlvU291cmNlTm9kZT4gTWVkaWFFbGVt
ZW50QXVkaW9Tb3VyY2VOb2RlOjpjcmVhdGUoQXVkaW9Db250ZXh0JiBjb250ZXh0LCBIVE1MTWVk
aWFFbGVtZW50JiBtZWRpYUVsZW1lbnQpCitSZWY8TWVkaWFFbGVtZW50QXVkaW9Tb3VyY2VOb2Rl
PiBNZWRpYUVsZW1lbnRBdWRpb1NvdXJjZU5vZGU6OmNyZWF0ZShBdWRpb0NvbnRleHRCYXNlJiBj
b250ZXh0LCBIVE1MTWVkaWFFbGVtZW50JiBtZWRpYUVsZW1lbnQpCiB7CiAgICAgcmV0dXJuIGFk
b3B0UmVmKCpuZXcgTWVkaWFFbGVtZW50QXVkaW9Tb3VyY2VOb2RlKGNvbnRleHQsIG1lZGlhRWxl
bWVudCkpOwogfQogCi1NZWRpYUVsZW1lbnRBdWRpb1NvdXJjZU5vZGU6Ok1lZGlhRWxlbWVudEF1
ZGlvU291cmNlTm9kZShBdWRpb0NvbnRleHQmIGNvbnRleHQsIEhUTUxNZWRpYUVsZW1lbnQmIG1l
ZGlhRWxlbWVudCkKK01lZGlhRWxlbWVudEF1ZGlvU291cmNlTm9kZTo6TWVkaWFFbGVtZW50QXVk
aW9Tb3VyY2VOb2RlKEF1ZGlvQ29udGV4dEJhc2UmIGNvbnRleHQsIEhUTUxNZWRpYUVsZW1lbnQm
IG1lZGlhRWxlbWVudCkKICAgICA6IEF1ZGlvTm9kZShjb250ZXh0LCBjb250ZXh0LnNhbXBsZVJh
dGUoKSkKICAgICAsIG1fbWVkaWFFbGVtZW50KG1lZGlhRWxlbWVudCkKICAgICAsIG1fc291cmNl
TnVtYmVyT2ZDaGFubmVscygwKQpAQCAtOTcsNyArOTcsNyBAQCB2b2lkIE1lZGlhRWxlbWVudEF1
ZGlvU291cmNlTm9kZTo6c2V0Rm9ybWF0KHNpemVfdCBudW1iZXJPZkNoYW5uZWxzLCBmbG9hdCBz
b3VyYwogCiAgICAgICAgIHsKICAgICAgICAgICAgIC8vIFRoZSBjb250ZXh0IG11c3QgYmUgbG9j
a2VkIHdoZW4gY2hhbmdpbmcgdGhlIG51bWJlciBvZiBvdXRwdXQgY2hhbm5lbHMuCi0gICAgICAg
ICAgICBBdWRpb0NvbnRleHQ6OkF1dG9Mb2NrZXIgY29udGV4dExvY2tlcihjb250ZXh0KCkpOwor
ICAgICAgICAgICAgQXVkaW9Db250ZXh0QmFzZTo6QXV0b0xvY2tlciBjb250ZXh0TG9ja2VyKGNv
bnRleHQoKSk7CiAKICAgICAgICAgICAgIC8vIERvIGFueSBuZWNlc3NzYXJ5IHJlLWNvbmZpZ3Vy
YXRpb24gdG8gdGhlIG91dHB1dCdzIG51bWJlciBvZiBjaGFubmVscy4KICAgICAgICAgICAgIG91
dHB1dCgwKS0+c2V0TnVtYmVyT2ZDaGFubmVscyhudW1iZXJPZkNoYW5uZWxzKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vTWVkaWFFbGVtZW50QXVkaW9Tb3Vy
Y2VOb2RlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL01lZGlhRWxlbWVudEF1
ZGlvU291cmNlTm9kZS5oCmluZGV4IDNhMTMxNTQxNWYxLi43MWQwZWQxMzhhNSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9NZWRpYUVsZW1lbnRBdWRpb1NvdXJj
ZU5vZGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL01lZGlhRWxlbWVu
dEF1ZGlvU291cmNlTm9kZS5oCkBAIC00MCw3ICs0MCw3IEBAIGNsYXNzIEF1ZGlvQ29udGV4dDsK
IGNsYXNzIE1lZGlhRWxlbWVudEF1ZGlvU291cmNlTm9kZSBmaW5hbCA6IHB1YmxpYyBBdWRpb05v
ZGUsIHB1YmxpYyBBdWRpb1NvdXJjZVByb3ZpZGVyQ2xpZW50IHsKICAgICBXVEZfTUFLRV9JU09f
QUxMT0NBVEVEKE1lZGlhRWxlbWVudEF1ZGlvU291cmNlTm9kZSk7CiBwdWJsaWM6Ci0gICAgc3Rh
dGljIFJlZjxNZWRpYUVsZW1lbnRBdWRpb1NvdXJjZU5vZGU+IGNyZWF0ZShBdWRpb0NvbnRleHQm
LCBIVE1MTWVkaWFFbGVtZW50Jik7CisgICAgc3RhdGljIFJlZjxNZWRpYUVsZW1lbnRBdWRpb1Nv
dXJjZU5vZGU+IGNyZWF0ZShBdWRpb0NvbnRleHRCYXNlJiwgSFRNTE1lZGlhRWxlbWVudCYpOwog
CiAgICAgdmlydHVhbCB+TWVkaWFFbGVtZW50QXVkaW9Tb3VyY2VOb2RlKCk7CiAKQEAgLTU3LDcg
KzU3LDcgQEAgcHVibGljOgogICAgIHZvaWQgdW5sb2NrKCk7CiAKIHByaXZhdGU6Ci0gICAgTWVk
aWFFbGVtZW50QXVkaW9Tb3VyY2VOb2RlKEF1ZGlvQ29udGV4dCYsIEhUTUxNZWRpYUVsZW1lbnQm
KTsKKyAgICBNZWRpYUVsZW1lbnRBdWRpb1NvdXJjZU5vZGUoQXVkaW9Db250ZXh0QmFzZSYsIEhU
TUxNZWRpYUVsZW1lbnQmKTsKIAogICAgIGRvdWJsZSB0YWlsVGltZSgpIGNvbnN0IG92ZXJyaWRl
IHsgcmV0dXJuIDA7IH0KICAgICBkb3VibGUgbGF0ZW5jeVRpbWUoKSBjb25zdCBvdmVycmlkZSB7
IHJldHVybiAwOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlv
L01lZGlhU3RyZWFtQXVkaW9EZXN0aW5hdGlvbk5vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJhdWRpby9NZWRpYVN0cmVhbUF1ZGlvRGVzdGluYXRpb25Ob2RlLmNwcAppbmRleCBk
NzY2MjkzMDMwOC4uMzBmMWEyMjJiZTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViYXVkaW8vTWVkaWFTdHJlYW1BdWRpb0Rlc3RpbmF0aW9uTm9kZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9NZWRpYVN0cmVhbUF1ZGlvRGVzdGluYXRpb25O
b2RlLmNwcApAQCAtMzksMTIgKzM5LDEyIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogV1RGX01B
S0VfSVNPX0FMTE9DQVRFRF9JTVBMKE1lZGlhU3RyZWFtQXVkaW9EZXN0aW5hdGlvbk5vZGUpOwog
Ci1SZWY8TWVkaWFTdHJlYW1BdWRpb0Rlc3RpbmF0aW9uTm9kZT4gTWVkaWFTdHJlYW1BdWRpb0Rl
c3RpbmF0aW9uTm9kZTo6Y3JlYXRlKEF1ZGlvQ29udGV4dCYgY29udGV4dCwgc2l6ZV90IG51bWJl
ck9mQ2hhbm5lbHMpCitSZWY8TWVkaWFTdHJlYW1BdWRpb0Rlc3RpbmF0aW9uTm9kZT4gTWVkaWFT
dHJlYW1BdWRpb0Rlc3RpbmF0aW9uTm9kZTo6Y3JlYXRlKEF1ZGlvQ29udGV4dEJhc2UmIGNvbnRl
eHQsIHNpemVfdCBudW1iZXJPZkNoYW5uZWxzKQogewogICAgIHJldHVybiBhZG9wdFJlZigqbmV3
IE1lZGlhU3RyZWFtQXVkaW9EZXN0aW5hdGlvbk5vZGUoY29udGV4dCwgbnVtYmVyT2ZDaGFubmVs
cykpOwogfQogCi1NZWRpYVN0cmVhbUF1ZGlvRGVzdGluYXRpb25Ob2RlOjpNZWRpYVN0cmVhbUF1
ZGlvRGVzdGluYXRpb25Ob2RlKEF1ZGlvQ29udGV4dCYgY29udGV4dCwgc2l6ZV90IG51bWJlck9m
Q2hhbm5lbHMpCitNZWRpYVN0cmVhbUF1ZGlvRGVzdGluYXRpb25Ob2RlOjpNZWRpYVN0cmVhbUF1
ZGlvRGVzdGluYXRpb25Ob2RlKEF1ZGlvQ29udGV4dEJhc2UmIGNvbnRleHQsIHNpemVfdCBudW1i
ZXJPZkNoYW5uZWxzKQogICAgIDogQXVkaW9CYXNpY0luc3BlY3Rvck5vZGUoY29udGV4dCwgY29u
dGV4dC5zYW1wbGVSYXRlKCksIG51bWJlck9mQ2hhbm5lbHMpCiAgICAgLCBtX3NvdXJjZShNZWRp
YVN0cmVhbUF1ZGlvU291cmNlOjpjcmVhdGUoY29udGV4dC5zYW1wbGVSYXRlKCkpKQogICAgICwg
bV9zdHJlYW0oTWVkaWFTdHJlYW06OmNyZWF0ZSgqY29udGV4dC5kb2N1bWVudCgpLCBNZWRpYVN0
cmVhbVByaXZhdGU6OmNyZWF0ZShjb250ZXh0LmRvY3VtZW50KCktPmxvZ2dlcigpLCBtX3NvdXJj
ZS5jb3B5UmVmKCkpKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVk
aW8vTWVkaWFTdHJlYW1BdWRpb0Rlc3RpbmF0aW9uTm9kZS5oIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJhdWRpby9NZWRpYVN0cmVhbUF1ZGlvRGVzdGluYXRpb25Ob2RlLmgKaW5kZXggZjVh
N2U4ZmVjNGEuLmRiYWQ5MjhkNzk2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmF1ZGlvL01lZGlhU3RyZWFtQXVkaW9EZXN0aW5hdGlvbk5vZGUuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL01lZGlhU3RyZWFtQXVkaW9EZXN0aW5hdGlvbk5vZGUu
aApAQCAtMzIsMTMgKzMyLDEzIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgQXVk
aW9Db250ZXh0OworY2xhc3MgQXVkaW9Db250ZXh0QmFzZTsKIGNsYXNzIE1lZGlhU3RyZWFtQXVk
aW9Tb3VyY2U7CiAKIGNsYXNzIE1lZGlhU3RyZWFtQXVkaW9EZXN0aW5hdGlvbk5vZGUgZmluYWwg
OiBwdWJsaWMgQXVkaW9CYXNpY0luc3BlY3Rvck5vZGUgewogICAgIFdURl9NQUtFX0lTT19BTExP
Q0FURUQoTWVkaWFTdHJlYW1BdWRpb0Rlc3RpbmF0aW9uTm9kZSk7CiBwdWJsaWM6Ci0gICAgc3Rh
dGljIFJlZjxNZWRpYVN0cmVhbUF1ZGlvRGVzdGluYXRpb25Ob2RlPiBjcmVhdGUoQXVkaW9Db250
ZXh0Jiwgc2l6ZV90IG51bWJlck9mQ2hhbm5lbHMpOworICAgIHN0YXRpYyBSZWY8TWVkaWFTdHJl
YW1BdWRpb0Rlc3RpbmF0aW9uTm9kZT4gY3JlYXRlKEF1ZGlvQ29udGV4dEJhc2UmLCBzaXplX3Qg
bnVtYmVyT2ZDaGFubmVscyk7CiAKICAgICB2aXJ0dWFsIH5NZWRpYVN0cmVhbUF1ZGlvRGVzdGlu
YXRpb25Ob2RlKCk7CiAKQEAgLTQ5LDcgKzQ5LDcgQEAgcHVibGljOgogICAgIHZvaWQgcmVzZXQo
KSBmaW5hbDsKICAgICAKIHByaXZhdGU6Ci0gICAgTWVkaWFTdHJlYW1BdWRpb0Rlc3RpbmF0aW9u
Tm9kZShBdWRpb0NvbnRleHQmLCBzaXplX3QgbnVtYmVyT2ZDaGFubmVscyk7CisgICAgTWVkaWFT
dHJlYW1BdWRpb0Rlc3RpbmF0aW9uTm9kZShBdWRpb0NvbnRleHRCYXNlJiwgc2l6ZV90IG51bWJl
ck9mQ2hhbm5lbHMpOwogCiAgICAgZG91YmxlIHRhaWxUaW1lKCkgY29uc3QgZmluYWwgeyByZXR1
cm4gMDsgfQogICAgIGRvdWJsZSBsYXRlbmN5VGltZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIDA7
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vTWVkaWFTdHJl
YW1BdWRpb1NvdXJjZU5vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9N
ZWRpYVN0cmVhbUF1ZGlvU291cmNlTm9kZS5jcHAKaW5kZXggMWI0ZmI2ZDE5MjIuLjM1ZTU1YTky
MDJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL01lZGlhU3Ry
ZWFtQXVkaW9Tb3VyY2VOb2RlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1
ZGlvL01lZGlhU3RyZWFtQXVkaW9Tb3VyY2VOb2RlLmNwcApAQCAtMzgsMTIgKzM4LDEyIEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAogV1RGX01BS0VfSVNPX0FMTE9DQVRFRF9JTVBMKE1lZGlhU3Ry
ZWFtQXVkaW9Tb3VyY2VOb2RlKTsKIAotUmVmPE1lZGlhU3RyZWFtQXVkaW9Tb3VyY2VOb2RlPiBN
ZWRpYVN0cmVhbUF1ZGlvU291cmNlTm9kZTo6Y3JlYXRlKEF1ZGlvQ29udGV4dCYgY29udGV4dCwg
TWVkaWFTdHJlYW0mIG1lZGlhU3RyZWFtLCBNZWRpYVN0cmVhbVRyYWNrJiBhdWRpb1RyYWNrKQor
UmVmPE1lZGlhU3RyZWFtQXVkaW9Tb3VyY2VOb2RlPiBNZWRpYVN0cmVhbUF1ZGlvU291cmNlTm9k
ZTo6Y3JlYXRlKEF1ZGlvQ29udGV4dEJhc2UmIGNvbnRleHQsIE1lZGlhU3RyZWFtJiBtZWRpYVN0
cmVhbSwgTWVkaWFTdHJlYW1UcmFjayYgYXVkaW9UcmFjaykKIHsKICAgICByZXR1cm4gYWRvcHRS
ZWYoKm5ldyBNZWRpYVN0cmVhbUF1ZGlvU291cmNlTm9kZShjb250ZXh0LCBtZWRpYVN0cmVhbSwg
YXVkaW9UcmFjaykpOwogfQogCi1NZWRpYVN0cmVhbUF1ZGlvU291cmNlTm9kZTo6TWVkaWFTdHJl
YW1BdWRpb1NvdXJjZU5vZGUoQXVkaW9Db250ZXh0JiBjb250ZXh0LCBNZWRpYVN0cmVhbSYgbWVk
aWFTdHJlYW0sIE1lZGlhU3RyZWFtVHJhY2smIGF1ZGlvVHJhY2spCitNZWRpYVN0cmVhbUF1ZGlv
U291cmNlTm9kZTo6TWVkaWFTdHJlYW1BdWRpb1NvdXJjZU5vZGUoQXVkaW9Db250ZXh0QmFzZSYg
Y29udGV4dCwgTWVkaWFTdHJlYW0mIG1lZGlhU3RyZWFtLCBNZWRpYVN0cmVhbVRyYWNrJiBhdWRp
b1RyYWNrKQogICAgIDogQXVkaW9Ob2RlKGNvbnRleHQsIGNvbnRleHQuc2FtcGxlUmF0ZSgpKQog
ICAgICwgbV9tZWRpYVN0cmVhbShtZWRpYVN0cmVhbSkKICAgICAsIG1fYXVkaW9UcmFjayhhdWRp
b1RyYWNrKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9NZWRp
YVN0cmVhbUF1ZGlvU291cmNlTm9kZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRp
by9NZWRpYVN0cmVhbUF1ZGlvU291cmNlTm9kZS5oCmluZGV4IGUzZWRlZmUxYmQ1Li5jNzJkMzEy
MjMzZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9NZWRpYVN0
cmVhbUF1ZGlvU291cmNlTm9kZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVk
aW8vTWVkaWFTdHJlYW1BdWRpb1NvdXJjZU5vZGUuaApAQCAtNDAsNyArNDAsNyBAQCBjbGFzcyBN
dWx0aUNoYW5uZWxSZXNhbXBsZXI7CiBjbGFzcyBNZWRpYVN0cmVhbUF1ZGlvU291cmNlTm9kZSBm
aW5hbCA6IHB1YmxpYyBBdWRpb05vZGUsIHB1YmxpYyBBdWRpb1NvdXJjZVByb3ZpZGVyQ2xpZW50
IHsKICAgICBXVEZfTUFLRV9JU09fQUxMT0NBVEVEKE1lZGlhU3RyZWFtQXVkaW9Tb3VyY2VOb2Rl
KTsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPE1lZGlhU3RyZWFtQXVkaW9Tb3VyY2VOb2RlPiBj
cmVhdGUoQXVkaW9Db250ZXh0JiwgTWVkaWFTdHJlYW0mLCBNZWRpYVN0cmVhbVRyYWNrJik7Cisg
ICAgc3RhdGljIFJlZjxNZWRpYVN0cmVhbUF1ZGlvU291cmNlTm9kZT4gY3JlYXRlKEF1ZGlvQ29u
dGV4dEJhc2UmLCBNZWRpYVN0cmVhbSYsIE1lZGlhU3RyZWFtVHJhY2smKTsKIAogICAgIHZpcnR1
YWwgfk1lZGlhU3RyZWFtQXVkaW9Tb3VyY2VOb2RlKCk7CiAKQEAgLTU0LDcgKzU0LDcgQEAgcHVi
bGljOgogICAgIHZvaWQgc2V0Rm9ybWF0KHNpemVfdCBudW1iZXJPZkNoYW5uZWxzLCBmbG9hdCBz
YW1wbGVSYXRlKSBvdmVycmlkZTsKIAogcHJpdmF0ZToKLSAgICBNZWRpYVN0cmVhbUF1ZGlvU291
cmNlTm9kZShBdWRpb0NvbnRleHQmLCBNZWRpYVN0cmVhbSYsIE1lZGlhU3RyZWFtVHJhY2smKTsK
KyAgICBNZWRpYVN0cmVhbUF1ZGlvU291cmNlTm9kZShBdWRpb0NvbnRleHRCYXNlJiwgTWVkaWFT
dHJlYW0mLCBNZWRpYVN0cmVhbVRyYWNrJik7CiAKICAgICBkb3VibGUgdGFpbFRpbWUoKSBjb25z
dCBvdmVycmlkZSB7IHJldHVybiAwOyB9CiAgICAgZG91YmxlIGxhdGVuY3lUaW1lKCkgY29uc3Qg
b3ZlcnJpZGUgeyByZXR1cm4gMDsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJhdWRpby9PZmZsaW5lQXVkaW9Db250ZXh0LmlkbCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViYXVkaW8vT2ZmbGluZUF1ZGlvQ29udGV4dC5pZGwKaW5kZXggZjZlY2IxYTY4NTguLjBl
NzFhMDZiYzNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL09m
ZmxpbmVBdWRpb0NvbnRleHQuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVk
aW8vT2ZmbGluZUF1ZGlvQ29udGV4dC5pZGwKQEAgLTI0LDggKzI0LDggQEAKIAogWwogICAgIENv
bmRpdGlvbmFsPVdFQl9BVURJTywKKyAgICBFbmFibGVkQnlTZXR0aW5nPU1vZGVyblVucHJlZml4
ZWRXZWJBdWRpbywKICAgICBKU0dlbmVyYXRlVG9KU09iamVjdCwKLSAgICBJbnRlcmZhY2VOYW1l
PXdlYmtpdE9mZmxpbmVBdWRpb0NvbnRleHQKIF0gaW50ZXJmYWNlIE9mZmxpbmVBdWRpb0NvbnRl
eHQgOiBBdWRpb0NvbnRleHQgewogICAgIFtDYWxsV2l0aD1TY3JpcHRFeGVjdXRpb25Db250ZXh0
LCBNYXlUaHJvd0V4Y2VwdGlvbl0gY29uc3RydWN0b3IodW5zaWduZWQgbG9uZyBudW1iZXJPZkNo
YW5uZWxzLCB1bnNpZ25lZCBsb25nIG51bWJlck9mRnJhbWVzLCB1bnJlc3RyaWN0ZWQgZmxvYXQg
c2FtcGxlUmF0ZSk7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJh
dWRpby9PZmZsaW5lQXVkaW9EZXN0aW5hdGlvbk5vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJhdWRpby9PZmZsaW5lQXVkaW9EZXN0aW5hdGlvbk5vZGUuY3BwCmluZGV4IDZhMTk1
NTQ2Y2Y3Li5mZWM1MDhjYmZmMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJhdWRpby9PZmZsaW5lQXVkaW9EZXN0aW5hdGlvbk5vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViYXVkaW8vT2ZmbGluZUF1ZGlvRGVzdGluYXRpb25Ob2RlLmNwcApAQCAt
NDEsNyArNDEsNyBAQCBXVEZfTUFLRV9JU09fQUxMT0NBVEVEX0lNUEwoT2ZmbGluZUF1ZGlvRGVz
dGluYXRpb25Ob2RlKTsKICAgICAKIGNvbnN0IHNpemVfdCByZW5kZXJRdWFudHVtU2l6ZSA9IDEy
ODsgICAgCiAKLU9mZmxpbmVBdWRpb0Rlc3RpbmF0aW9uTm9kZTo6T2ZmbGluZUF1ZGlvRGVzdGlu
YXRpb25Ob2RlKEF1ZGlvQ29udGV4dCYgY29udGV4dCwgQXVkaW9CdWZmZXIqIHJlbmRlclRhcmdl
dCkKK09mZmxpbmVBdWRpb0Rlc3RpbmF0aW9uTm9kZTo6T2ZmbGluZUF1ZGlvRGVzdGluYXRpb25O
b2RlKEF1ZGlvQ29udGV4dEJhc2UmIGNvbnRleHQsIEF1ZGlvQnVmZmVyKiByZW5kZXJUYXJnZXQp
CiAgICAgOiBBdWRpb0Rlc3RpbmF0aW9uTm9kZShjb250ZXh0LCByZW5kZXJUYXJnZXQtPnNhbXBs
ZVJhdGUoKSkKICAgICAsIG1fcmVuZGVyVGFyZ2V0KHJlbmRlclRhcmdldCkKICAgICAsIG1fc3Rh
cnRlZFJlbmRlcmluZyhmYWxzZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViYXVkaW8vT2ZmbGluZUF1ZGlvRGVzdGluYXRpb25Ob2RlLmggYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmF1ZGlvL09mZmxpbmVBdWRpb0Rlc3RpbmF0aW9uTm9kZS5oCmluZGV4IGRhMjQ5
NTc0ZDQ4Li5mODcxMGZkZTEwZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJhdWRpby9PZmZsaW5lQXVkaW9EZXN0aW5hdGlvbk5vZGUuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmF1ZGlvL09mZmxpbmVBdWRpb0Rlc3RpbmF0aW9uTm9kZS5oCkBAIC0zNyw5
ICszNyw5IEBAIGNsYXNzIEF1ZGlvQ29udGV4dDsKIGNsYXNzIE9mZmxpbmVBdWRpb0Rlc3RpbmF0
aW9uTm9kZSBmaW5hbCA6IHB1YmxpYyBBdWRpb0Rlc3RpbmF0aW9uTm9kZSB7CiAgICAgV1RGX01B
S0VfSVNPX0FMTE9DQVRFRChPZmZsaW5lQXVkaW9EZXN0aW5hdGlvbk5vZGUpOwogcHVibGljOgot
ICAgIHN0YXRpYyBSZWY8T2ZmbGluZUF1ZGlvRGVzdGluYXRpb25Ob2RlPiBjcmVhdGUoQXVkaW9D
b250ZXh0JiBjb250ZXh0LCBBdWRpb0J1ZmZlciogcmVuZGVyVGFyZ2V0KQorICAgIHN0YXRpYyBS
ZWY8T2ZmbGluZUF1ZGlvRGVzdGluYXRpb25Ob2RlPiBjcmVhdGUoQXVkaW9Db250ZXh0QmFzZSYg
Y29udGV4dCwgQXVkaW9CdWZmZXIqIHJlbmRlclRhcmdldCkKICAgICB7Ci0gICAgICAgIHJldHVy
biBhZG9wdFJlZigqbmV3IE9mZmxpbmVBdWRpb0Rlc3RpbmF0aW9uTm9kZShjb250ZXh0LCByZW5k
ZXJUYXJnZXQpKTsgICAgIAorICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBPZmZsaW5lQXVk
aW9EZXN0aW5hdGlvbk5vZGUoY29udGV4dCwgcmVuZGVyVGFyZ2V0KSk7CiAgICAgfQogCiAgICAg
dmlydHVhbCB+T2ZmbGluZUF1ZGlvRGVzdGluYXRpb25Ob2RlKCk7CkBAIC01NSw3ICs1NSw3IEBA
IHB1YmxpYzoKICAgICBmbG9hdCBzYW1wbGVSYXRlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4g
bV9yZW5kZXJUYXJnZXQtPnNhbXBsZVJhdGUoKTsgfQogCiBwcml2YXRlOgotICAgIE9mZmxpbmVB
dWRpb0Rlc3RpbmF0aW9uTm9kZShBdWRpb0NvbnRleHQmLCBBdWRpb0J1ZmZlciogcmVuZGVyVGFy
Z2V0KTsKKyAgICBPZmZsaW5lQXVkaW9EZXN0aW5hdGlvbk5vZGUoQXVkaW9Db250ZXh0QmFzZSYs
IEF1ZGlvQnVmZmVyKiByZW5kZXJUYXJnZXQpOwogCiAgICAgLy8gVGhpcyBBdWRpb05vZGUgcmVu
ZGVycyBpbnRvIHRoaXMgQXVkaW9CdWZmZXIuCiAgICAgUmVmUHRyPEF1ZGlvQnVmZmVyPiBtX3Jl
bmRlclRhcmdldDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8v
T3NjaWxsYXRvck5vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9Pc2Np
bGxhdG9yTm9kZS5jcHAKaW5kZXggOTU2MDA1M2E0ODAuLmU4ZjMxYzcyMjBlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL09zY2lsbGF0b3JOb2RlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL09zY2lsbGF0b3JOb2RlLmNwcApAQCAt
NDUsMTIgKzQ1LDEyIEBAIFBlcmlvZGljV2F2ZSogT3NjaWxsYXRvck5vZGU6OnNfcGVyaW9kaWNX
YXZlU3F1YXJlID0gbnVsbHB0cjsKIFBlcmlvZGljV2F2ZSogT3NjaWxsYXRvck5vZGU6OnNfcGVy
aW9kaWNXYXZlU2F3dG9vdGggPSBudWxscHRyOwogUGVyaW9kaWNXYXZlKiBPc2NpbGxhdG9yTm9k
ZTo6c19wZXJpb2RpY1dhdmVUcmlhbmdsZSA9IG51bGxwdHI7CiAKLVJlZjxPc2NpbGxhdG9yTm9k
ZT4gT3NjaWxsYXRvck5vZGU6OmNyZWF0ZShBdWRpb0NvbnRleHQmIGNvbnRleHQsIGZsb2F0IHNh
bXBsZVJhdGUpCitSZWY8T3NjaWxsYXRvck5vZGU+IE9zY2lsbGF0b3JOb2RlOjpjcmVhdGUoQXVk
aW9Db250ZXh0QmFzZSYgY29udGV4dCwgZmxvYXQgc2FtcGxlUmF0ZSkKIHsKICAgICByZXR1cm4g
YWRvcHRSZWYoKm5ldyBPc2NpbGxhdG9yTm9kZShjb250ZXh0LCBzYW1wbGVSYXRlKSk7CiB9CiAK
LU9zY2lsbGF0b3JOb2RlOjpPc2NpbGxhdG9yTm9kZShBdWRpb0NvbnRleHQmIGNvbnRleHQsIGZs
b2F0IHNhbXBsZVJhdGUpCitPc2NpbGxhdG9yTm9kZTo6T3NjaWxsYXRvck5vZGUoQXVkaW9Db250
ZXh0QmFzZSYgY29udGV4dCwgZmxvYXQgc2FtcGxlUmF0ZSkKICAgICA6IEF1ZGlvU2NoZWR1bGVk
U291cmNlTm9kZShjb250ZXh0LCBzYW1wbGVSYXRlKQogICAgICwgbV9maXJzdFJlbmRlcih0cnVl
KQogICAgICwgbV92aXJ0dWFsUmVhZEluZGV4KDApCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmF1ZGlvL09zY2lsbGF0b3JOb2RlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmF1ZGlvL09zY2lsbGF0b3JOb2RlLmgKaW5kZXggNDJmZjBjMTkyNGIuLjA4OTViY2Uz
ZGRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL09zY2lsbGF0
b3JOb2RlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9Pc2NpbGxhdG9y
Tm9kZS5oCkBAIC00NSw3ICs0NSw3IEBAIHB1YmxpYzoKICAgICAgICAgQ3VzdG9tCiAgICAgfTsK
IAotICAgIHN0YXRpYyBSZWY8T3NjaWxsYXRvck5vZGU+IGNyZWF0ZShBdWRpb0NvbnRleHQmLCBm
bG9hdCBzYW1wbGVSYXRlKTsKKyAgICBzdGF0aWMgUmVmPE9zY2lsbGF0b3JOb2RlPiBjcmVhdGUo
QXVkaW9Db250ZXh0QmFzZSYsIGZsb2F0IHNhbXBsZVJhdGUpOwogCiAgICAgdmlydHVhbCB+T3Nj
aWxsYXRvck5vZGUoKTsKIApAQCAtNjAsNyArNjAsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRQ
ZXJpb2RpY1dhdmUoUGVyaW9kaWNXYXZlKik7CiAKIHByaXZhdGU6Ci0gICAgT3NjaWxsYXRvck5v
ZGUoQXVkaW9Db250ZXh0JiwgZmxvYXQgc2FtcGxlUmF0ZSk7CisgICAgT3NjaWxsYXRvck5vZGUo
QXVkaW9Db250ZXh0QmFzZSYsIGZsb2F0IHNhbXBsZVJhdGUpOwogCiAgICAgdm9pZCBwcm9jZXNz
KHNpemVfdCBmcmFtZXNUb1Byb2Nlc3MpIGZpbmFsOwogICAgIHZvaWQgcmVzZXQoKSBmaW5hbDsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vUGFubmVyTm9kZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1Bhbm5lck5vZGUuY3BwCmluZGV4
IGVjODBlNjlkMmFiLi5hZTQyZjExNGJiYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJhdWRpby9QYW5uZXJOb2RlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmF1ZGlvL1Bhbm5lck5vZGUuY3BwCkBAIC00OCw4ICs0OCwxMyBAQCBzdGF0aWMgdm9pZCBm
aXhOQU5zKGRvdWJsZSAmeCkKICAgICAgICAgeCA9IDAuMDsKIH0KIAotUGFubmVyTm9kZTo6UGFu
bmVyTm9kZShBdWRpb0NvbnRleHQmIGNvbnRleHQsIGZsb2F0IHNhbXBsZVJhdGUpCitQYW5uZXJO
b2RlQmFzZTo6UGFubmVyTm9kZUJhc2UoQXVkaW9Db250ZXh0QmFzZSYgY29udGV4dCwgZmxvYXQg
c2FtcGxlUmF0ZSkKICAgICA6IEF1ZGlvTm9kZShjb250ZXh0LCBzYW1wbGVSYXRlKQoreworfQor
CitQYW5uZXJOb2RlOjpQYW5uZXJOb2RlKEF1ZGlvQ29udGV4dCYgY29udGV4dCwgZmxvYXQgc2Ft
cGxlUmF0ZSkKKyAgICA6IFBhbm5lck5vZGVCYXNlKGNvbnRleHQsIHNhbXBsZVJhdGUpCiAgICAg
LCBtX3Bhbm5pbmdNb2RlbChQYW5uaW5nTW9kZWxUeXBlOjpIUlRGKQogICAgICwgbV9sYXN0R2Fp
bigtMS4wKQogICAgICwgbV9wb3NpdGlvblgoQXVkaW9QYXJhbTo6Y3JlYXRlKGNvbnRleHQsICJw
b3NpdGlvblgiX3MsIDAsIC1GTFRfTUFYLCBGTFRfTUFYKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vUGFubmVyTm9kZS5oIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJhdWRpby9QYW5uZXJOb2RlLmgKaW5kZXggODQ4MGMyMzMyODAuLjI5YjY0OGQwNjA3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1Bhbm5lck5vZGUu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1Bhbm5lck5vZGUuaApAQCAt
MjYsNiArMjYsNyBAQAogCiAjaWYgRU5BQkxFKFdFQl9BVURJTykKIAorI2luY2x1ZGUgIkF1ZGlv
Q29udGV4dC5oIgogI2luY2x1ZGUgIkF1ZGlvTGlzdGVuZXIuaCIKICNpbmNsdWRlICJBdWRpb05v
ZGUuaCIKICNpbmNsdWRlICJBdWRpb1BhcmFtLmgiCkBAIC00MSw2ICs0MiwxNiBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKIGNsYXNzIEhSVEZEYXRhYmFzZUxvYWRlcjsKIAorY2xhc3MgUGFubmVy
Tm9kZUJhc2UgOiBwdWJsaWMgQXVkaW9Ob2RlIHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIH5QYW5u
ZXJOb2RlQmFzZSgpID0gZGVmYXVsdDsKKworICAgIHZpcnR1YWwgZmxvYXQgZG9wcGxlclJhdGUo
KSA9IDA7CisKK3Byb3RlY3RlZDoKKyAgICBQYW5uZXJOb2RlQmFzZShBdWRpb0NvbnRleHRCYXNl
JiwgZmxvYXQgc2FtcGxlUmF0ZSk7Cit9OworCiAvLyBQYW5uZXJOb2RlIGlzIGFuIEF1ZGlvTm9k
ZSB3aXRoIG9uZSBpbnB1dCBhbmQgb25lIG91dHB1dC4KIC8vIEl0IHBvc2l0aW9ucyBhIHNvdW5k
IGluIDNEIHNwYWNlLCB3aXRoIHRoZSBleGFjdCBlZmZlY3QgZGVwZW5kZW50IG9uIHRoZSBwYW5u
aW5nIG1vZGVsLgogLy8gSXQgaGFzIGEgcG9zaXRpb24gYW5kIGFuIG9yaWVudGF0aW9uIGluIDNE
IHNwYWNlIHdoaWNoIGlzIHJlbGF0aXZlIHRvIHRoZSBwb3NpdGlvbiBhbmQgb3JpZW50YXRpb24g
b2YgdGhlIGNvbnRleHQncyBBdWRpb0xpc3RlbmVyLgpAQCAtNDgsNyArNTksNyBAQCBjbGFzcyBI
UlRGRGF0YWJhc2VMb2FkZXI7CiAvLyBBIGNvbmUgZWZmZWN0IHdpbGwgYXR0ZW51YXRlIHRoZSBn
YWluIGFzIHRoZSBvcmllbnRhdGlvbiBtb3ZlcyBhd2F5IGZyb20gdGhlIGxpc3RlbmVyLgogLy8g
QWxsIG9mIHRoZXNlIGVmZmVjdHMgZm9sbG93IHRoZSBPcGVuQUwgc3BlY2lmaWNhdGlvbiB2ZXJ5
IGNsb3NlbHkuCiAKLWNsYXNzIFBhbm5lck5vZGUgZmluYWwgOiBwdWJsaWMgQXVkaW9Ob2RlIHsK
K2NsYXNzIFBhbm5lck5vZGUgZmluYWwgOiBwdWJsaWMgUGFubmVyTm9kZUJhc2UgewogICAgIFdU
Rl9NQUtFX0lTT19BTExPQ0FURUQoUGFubmVyTm9kZSk7CiBwdWJsaWM6CiAgICAgc3RhdGljIFJl
ZjxQYW5uZXJOb2RlPiBjcmVhdGUoQXVkaW9Db250ZXh0JiBjb250ZXh0LCBmbG9hdCBzYW1wbGVS
YXRlKQpAQCAtNTgsNiArNjksOSBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIH5QYW5uZXJOb2Rl
KCk7CiAKKyAgICBBdWRpb0NvbnRleHQmIGNvbnRleHQoKSB7IHJldHVybiBkb3duY2FzdDxBdWRp
b0NvbnRleHQ+KEF1ZGlvTm9kZTo6Y29udGV4dCgpKTsgfQorICAgIGNvbnN0IEF1ZGlvQ29udGV4
dCYgY29udGV4dCgpIGNvbnN0IHsgcmV0dXJuIGRvd25jYXN0PEF1ZGlvQ29udGV4dD4oQXVkaW9O
b2RlOjpjb250ZXh0KCkpOyB9CisKICAgICAvLyBBdWRpb05vZGUKICAgICB2b2lkIHByb2Nlc3Mo
c2l6ZV90IGZyYW1lc1RvUHJvY2Vzcykgb3ZlcnJpZGU7CiAgICAgdm9pZCBwdWxsSW5wdXRzKHNp
emVfdCBmcmFtZXNUb1Byb2Nlc3MpIG92ZXJyaWRlOwpAQCAtMTExLDcgKzEyNSw3IEBAIHB1Ymxp
YzoKICAgICB2b2lkIHNldENvbmVPdXRlckdhaW4oZG91YmxlIGFuZ2xlKSB7IG1fY29uZUVmZmVj
dC5zZXRPdXRlckdhaW4oYW5nbGUpOyB9CiAKICAgICB2b2lkIGdldEF6aW11dGhFbGV2YXRpb24o
ZG91YmxlKiBvdXRBemltdXRoLCBkb3VibGUqIG91dEVsZXZhdGlvbik7Ci0gICAgZmxvYXQgZG9w
cGxlclJhdGUoKTsKKyAgICBmbG9hdCBkb3BwbGVyUmF0ZSgpIGZpbmFsOwogCiAgICAgLy8gQWNj
ZXNzb3JzIGZvciBkeW5hbWljYWxseSBjYWxjdWxhdGVkIGdhaW4gdmFsdWVzLgogICAgIEF1ZGlv
UGFyYW0qIGRpc3RhbmNlR2FpbigpIHsgcmV0dXJuIG1fZGlzdGFuY2VHYWluLmdldCgpOyB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1Bhbm5lck5vZGUuaWRs
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9QYW5uZXJOb2RlLmlkbAppbmRleCAw
MzI5ODM3ZDJmNS4uN2JiOTJjNGY4ZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViYXVkaW8vUGFubmVyTm9kZS5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJhdWRpby9QYW5uZXJOb2RlLmlkbApAQCAtMjIsMjcgKzIyLDEwIEBACiAgKiBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwog
Ci1bCi0gICAgQ29uZGl0aW9uYWw9V0VCX0FVRElPLAotICAgIEltcGxlbWVudGVkQXM9UGFubmlu
Z01vZGVsVHlwZQotXSBlbnVtIFBhbm5pbmdNb2RlbFR5cGUgewotICAgICJlcXVhbHBvd2VyIiwK
LSAgICAiSFJURiIKLX07Ci0KLVsKLSAgICBDb25kaXRpb25hbD1XRUJfQVVESU8sCi0gICAgSW1w
bGVtZW50ZWRBcz1EaXN0YW5jZU1vZGVsVHlwZQotXSBlbnVtIERpc3RhbmNlTW9kZWxUeXBlIHsK
LSAgICAibGluZWFyIiwKLSAgICAiaW52ZXJzZSIsCi0gICAgImV4cG9uZW50aWFsIgotfTsKLQog
WwogICAgIENvbmRpdGlvbmFsPVdFQl9BVURJTywKICAgICBKU0dlbmVyYXRlVG9KU09iamVjdCwK
LSAgICBJbnRlcmZhY2VOYW1lPXdlYmtpdEF1ZGlvUGFubmVyTm9kZSwKKyAgICBFbmFibGVkQnlT
ZXR0aW5nPU1vZGVyblVucHJlZml4ZWRXZWJBdWRpbywKIF0gaW50ZXJmYWNlIFBhbm5lck5vZGUg
OiBBdWRpb05vZGUgewogICAgIC8vIERlZmF1bHQgbW9kZWwgZm9yIHN0ZXJlbyBpcyBIUlRGIAog
ICAgIGF0dHJpYnV0ZSBQYW5uaW5nTW9kZWxUeXBlIHBhbm5pbmdNb2RlbDsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vUGFubmluZ01vZGVsVHlwZS5oIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9QYW5uaW5nTW9kZWxUeXBlLmgKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLmFiMGIyMjcxMmExCi0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9QYW5uaW5nTW9kZWxUeXBlLmgK
QEAgLTAsMCArMSwyNyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCwgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQg
QU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04KKyAqIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUworICogU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJQ
YW5uZXIuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vUGFu
bmluZ01vZGVsVHlwZS5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1Bhbm5p
bmdNb2RlbFR5cGUuaWRsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi5i
ZjdkZjhmNTU0MgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
YXVkaW8vUGFubmluZ01vZGVsVHlwZS5pZGwKQEAgLTAsMCArMSwzMCBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxMCwgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuICBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICog
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OCisg
KiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKKyAqIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
K1sKKyAgICBDb25kaXRpb25hbD1XRUJfQVVESU8sCitdIGVudW0gUGFubmluZ01vZGVsVHlwZSB7
CisgICAgImVxdWFscG93ZXIiLAorICAgICJIUlRGIgorfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vU2NyaXB0UHJvY2Vzc29yTm9kZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1NjcmlwdFByb2Nlc3Nvck5vZGUuY3BwCmluZGV4IDkx
Yzc1MzdlMTVlLi43NjEwYjE1MDI0OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJhdWRpby9TY3JpcHRQcm9jZXNzb3JOb2RlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmF1ZGlvL1NjcmlwdFByb2Nlc3Nvck5vZGUuY3BwCkBAIC00NCwxMiArNDQsMTIg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBXVEZfTUFLRV9JU09fQUxMT0NBVEVEX0lNUEwoU2Ny
aXB0UHJvY2Vzc29yTm9kZSk7CiAKLVJlZjxTY3JpcHRQcm9jZXNzb3JOb2RlPiBTY3JpcHRQcm9j
ZXNzb3JOb2RlOjpjcmVhdGUoQXVkaW9Db250ZXh0JiBjb250ZXh0LCBmbG9hdCBzYW1wbGVSYXRl
LCBzaXplX3QgYnVmZmVyU2l6ZSwgdW5zaWduZWQgbnVtYmVyT2ZJbnB1dENoYW5uZWxzLCB1bnNp
Z25lZCBudW1iZXJPZk91dHB1dENoYW5uZWxzKQorUmVmPFNjcmlwdFByb2Nlc3Nvck5vZGU+IFNj
cmlwdFByb2Nlc3Nvck5vZGU6OmNyZWF0ZShBdWRpb0NvbnRleHRCYXNlJiBjb250ZXh0LCBmbG9h
dCBzYW1wbGVSYXRlLCBzaXplX3QgYnVmZmVyU2l6ZSwgdW5zaWduZWQgbnVtYmVyT2ZJbnB1dENo
YW5uZWxzLCB1bnNpZ25lZCBudW1iZXJPZk91dHB1dENoYW5uZWxzKQogewogICAgIHJldHVybiBh
ZG9wdFJlZigqbmV3IFNjcmlwdFByb2Nlc3Nvck5vZGUoY29udGV4dCwgc2FtcGxlUmF0ZSwgYnVm
ZmVyU2l6ZSwgbnVtYmVyT2ZJbnB1dENoYW5uZWxzLCBudW1iZXJPZk91dHB1dENoYW5uZWxzKSk7
CiB9CiAKLVNjcmlwdFByb2Nlc3Nvck5vZGU6OlNjcmlwdFByb2Nlc3Nvck5vZGUoQXVkaW9Db250
ZXh0JiBjb250ZXh0LCBmbG9hdCBzYW1wbGVSYXRlLCBzaXplX3QgYnVmZmVyU2l6ZSwgdW5zaWdu
ZWQgbnVtYmVyT2ZJbnB1dENoYW5uZWxzLCB1bnNpZ25lZCBudW1iZXJPZk91dHB1dENoYW5uZWxz
KQorU2NyaXB0UHJvY2Vzc29yTm9kZTo6U2NyaXB0UHJvY2Vzc29yTm9kZShBdWRpb0NvbnRleHRC
YXNlJiBjb250ZXh0LCBmbG9hdCBzYW1wbGVSYXRlLCBzaXplX3QgYnVmZmVyU2l6ZSwgdW5zaWdu
ZWQgbnVtYmVyT2ZJbnB1dENoYW5uZWxzLCB1bnNpZ25lZCBudW1iZXJPZk91dHB1dENoYW5uZWxz
KQogICAgIDogQXVkaW9Ob2RlKGNvbnRleHQsIHNhbXBsZVJhdGUpCiAgICAgLCBBY3RpdmVET01P
YmplY3QoY29udGV4dC5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpCiAgICAgLCBtX2RvdWJsZUJ1
ZmZlckluZGV4KDApCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlv
L1NjcmlwdFByb2Nlc3Nvck5vZGUuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8v
U2NyaXB0UHJvY2Vzc29yTm9kZS5oCmluZGV4IDVhNGU3Y2U0NzUyLi40YzE0YTA3NTdkZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9TY3JpcHRQcm9jZXNzb3JO
b2RlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9TY3JpcHRQcm9jZXNz
b3JOb2RlLmgKQEAgLTUyLDcgKzUyLDcgQEAgcHVibGljOgogICAgIC8vIFRoaXMgdmFsdWUgY29u
dHJvbHMgaG93IGZyZXF1ZW50bHkgdGhlIG9uYXVkaW9wcm9jZXNzIGV2ZW50IGhhbmRsZXIgaXMg
Y2FsbGVkIGFuZCBob3cgbWFueSBzYW1wbGUtZnJhbWVzIG5lZWQgdG8gYmUgcHJvY2Vzc2VkIGVh
Y2ggY2FsbC4KICAgICAvLyBMb3dlciBudW1iZXJzIGZvciBidWZmZXJTaXplIHdpbGwgcmVzdWx0
IGluIGEgbG93ZXIgKGJldHRlcikgbGF0ZW5jeS4gSGlnaGVyIG51bWJlcnMgd2lsbCBiZSBuZWNl
c3NhcnkgdG8gYXZvaWQgYXVkaW8gYnJlYWt1cCBhbmQgZ2xpdGNoZXMuCiAgICAgLy8gVGhlIHZh
bHVlIGNob3NlbiBtdXN0IGNhcmVmdWxseSBiYWxhbmNlIGJldHdlZW4gbGF0ZW5jeSBhbmQgYXVk
aW8gcXVhbGl0eS4KLSAgICBzdGF0aWMgUmVmPFNjcmlwdFByb2Nlc3Nvck5vZGU+IGNyZWF0ZShB
dWRpb0NvbnRleHQmLCBmbG9hdCBzYW1wbGVSYXRlLCBzaXplX3QgYnVmZmVyU2l6ZSwgdW5zaWdu
ZWQgbnVtYmVyT2ZJbnB1dENoYW5uZWxzLCB1bnNpZ25lZCBudW1iZXJPZk91dHB1dENoYW5uZWxz
KTsKKyAgICBzdGF0aWMgUmVmPFNjcmlwdFByb2Nlc3Nvck5vZGU+IGNyZWF0ZShBdWRpb0NvbnRl
eHRCYXNlJiwgZmxvYXQgc2FtcGxlUmF0ZSwgc2l6ZV90IGJ1ZmZlclNpemUsIHVuc2lnbmVkIG51
bWJlck9mSW5wdXRDaGFubmVscywgdW5zaWduZWQgbnVtYmVyT2ZPdXRwdXRDaGFubmVscyk7CiAK
ICAgICB2aXJ0dWFsIH5TY3JpcHRQcm9jZXNzb3JOb2RlKCk7CiAKQEAgLTcxLDcgKzcxLDcgQEAg
cHJpdmF0ZToKICAgICBkb3VibGUgdGFpbFRpbWUoKSBjb25zdCBvdmVycmlkZTsKICAgICBkb3Vi
bGUgbGF0ZW5jeVRpbWUoKSBjb25zdCBvdmVycmlkZTsKIAotICAgIFNjcmlwdFByb2Nlc3Nvck5v
ZGUoQXVkaW9Db250ZXh0JiwgZmxvYXQgc2FtcGxlUmF0ZSwgc2l6ZV90IGJ1ZmZlclNpemUsIHVu
c2lnbmVkIG51bWJlck9mSW5wdXRDaGFubmVscywgdW5zaWduZWQgbnVtYmVyT2ZPdXRwdXRDaGFu
bmVscyk7CisgICAgU2NyaXB0UHJvY2Vzc29yTm9kZShBdWRpb0NvbnRleHRCYXNlJiwgZmxvYXQg
c2FtcGxlUmF0ZSwgc2l6ZV90IGJ1ZmZlclNpemUsIHVuc2lnbmVkIG51bWJlck9mSW5wdXRDaGFu
bmVscywgdW5zaWduZWQgbnVtYmVyT2ZPdXRwdXRDaGFubmVscyk7CiAKICAgICB2b2lkIGZpcmVQ
cm9jZXNzRXZlbnQoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJh
dWRpby9XYXZlU2hhcGVyTm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlv
L1dhdmVTaGFwZXJOb2RlLmNwcAppbmRleCA2ZTdlOGRkMWM5Yy4uYWU0YWY5ZjIzMmYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vV2F2ZVNoYXBlck5vZGUuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vV2F2ZVNoYXBlck5vZGUuY3Bw
CkBAIC0zNSw3ICszNSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogV1RGX01BS0VfSVNPX0FM
TE9DQVRFRF9JTVBMKFdhdmVTaGFwZXJOb2RlKTsKIAotV2F2ZVNoYXBlck5vZGU6OldhdmVTaGFw
ZXJOb2RlKEF1ZGlvQ29udGV4dCYgY29udGV4dCkKK1dhdmVTaGFwZXJOb2RlOjpXYXZlU2hhcGVy
Tm9kZShBdWRpb0NvbnRleHRCYXNlJiBjb250ZXh0KQogICAgIDogQXVkaW9CYXNpY1Byb2Nlc3Nv
ck5vZGUoY29udGV4dCwgY29udGV4dC5zYW1wbGVSYXRlKCkpCiB7CiAgICAgc2V0Tm9kZVR5cGUo
Tm9kZVR5cGVXYXZlU2hhcGVyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViYXVkaW8vV2F2ZVNoYXBlck5vZGUuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVk
aW8vV2F2ZVNoYXBlck5vZGUuaAppbmRleCBmNDllMzQ5YmMzZC4uNWY0OTMyOGIyMmQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vV2F2ZVNoYXBlck5vZGUuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1dhdmVTaGFwZXJOb2RlLmgKQEAg
LTMzLDcgKzMzLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgV2F2ZVNoYXBlck5vZGUg
ZmluYWwgOiBwdWJsaWMgQXVkaW9CYXNpY1Byb2Nlc3Nvck5vZGUgewogICAgIFdURl9NQUtFX0lT
T19BTExPQ0FURUQoV2F2ZVNoYXBlck5vZGUpOwogcHVibGljOgotICAgIHN0YXRpYyBSZWY8V2F2
ZVNoYXBlck5vZGU+IGNyZWF0ZShBdWRpb0NvbnRleHQmIGNvbnRleHQpCisgICAgc3RhdGljIFJl
ZjxXYXZlU2hhcGVyTm9kZT4gY3JlYXRlKEF1ZGlvQ29udGV4dEJhc2UmIGNvbnRleHQpCiAgICAg
ewogICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBXYXZlU2hhcGVyTm9kZShjb250ZXh0KSk7
CiAgICAgfQpAQCAtNDksNyArNDksNyBAQCBwdWJsaWM6CiAgICAgZG91YmxlIGxhdGVuY3koKSBj
b25zdCB7IHJldHVybiBsYXRlbmN5VGltZSgpOyB9CiAKIHByaXZhdGU6ICAgIAotICAgIGV4cGxp
Y2l0IFdhdmVTaGFwZXJOb2RlKEF1ZGlvQ29udGV4dCYpOyAgICAKKyAgICBleHBsaWNpdCBXYXZl
U2hhcGVyTm9kZShBdWRpb0NvbnRleHRCYXNlJik7CiAKICAgICBXYXZlU2hhcGVyUHJvY2Vzc29y
KiB3YXZlU2hhcGVyUHJvY2Vzc29yKCkgeyByZXR1cm4gc3RhdGljX2Nhc3Q8V2F2ZVNoYXBlclBy
b2Nlc3Nvcio+KHByb2Nlc3NvcigpKTsgfQogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViYXVkaW8vV2ViS2l0QXVkaW9Db250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViYXVkaW8vV2ViS2l0QXVkaW9Db250ZXh0LmNwcApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMC4uNDFkMWMxNWQ0MGUKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1dlYktpdEF1ZGlvQ29udGV4dC5jcHAKQEAg
LTAsMCArMSwxMzk3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQgQU5Z
CisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7Cisg
KiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04KKyAqIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUworICogU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaWYgRU5B
QkxFKFdFQl9BVURJTykKKworI2luY2x1ZGUgIldlYktpdEF1ZGlvQ29udGV4dC5oIgorCisjaW5j
bHVkZSAiQW5hbHlzZXJOb2RlLmgiCisjaW5jbHVkZSAiQXN5bmNBdWRpb0RlY29kZXIuaCIKKyNp
bmNsdWRlICJBdWRpb0J1ZmZlci5oIgorI2luY2x1ZGUgIkF1ZGlvQnVmZmVyQ2FsbGJhY2suaCIK
KyNpbmNsdWRlICJBdWRpb0J1ZmZlclNvdXJjZU5vZGUuaCIKKyNpbmNsdWRlICJBdWRpb0xpc3Rl
bmVyLmgiCisjaW5jbHVkZSAiQXVkaW9Ob2RlSW5wdXQuaCIKKyNpbmNsdWRlICJBdWRpb05vZGVP
dXRwdXQuaCIKKyNpbmNsdWRlICJBdWRpb1Nlc3Npb24uaCIKKyNpbmNsdWRlICJCaXF1YWRGaWx0
ZXJOb2RlLmgiCisjaW5jbHVkZSAiQ2hhbm5lbE1lcmdlck5vZGUuaCIKKyNpbmNsdWRlICJDaGFu
bmVsU3BsaXR0ZXJOb2RlLmgiCisjaW5jbHVkZSAiQ29udm9sdmVyTm9kZS5oIgorI2luY2x1ZGUg
IkRlZmF1bHRBdWRpb0Rlc3RpbmF0aW9uTm9kZS5oIgorI2luY2x1ZGUgIkRlbGF5Tm9kZS5oIgor
I2luY2x1ZGUgIkRvY3VtZW50LmgiCisjaW5jbHVkZSAiRHluYW1pY3NDb21wcmVzc29yTm9kZS5o
IgorI2luY2x1ZGUgIkV2ZW50TmFtZXMuaCIKKyNpbmNsdWRlICJGRlRGcmFtZS5oIgorI2luY2x1
ZGUgIkZyYW1lLmgiCisjaW5jbHVkZSAiRnJhbWVMb2FkZXIuaCIKKyNpbmNsdWRlICJHYWluTm9k
ZS5oIgorI2luY2x1ZGUgIkdlbmVyaWNFdmVudFF1ZXVlLmgiCisjaW5jbHVkZSAiSFJURkRhdGFi
YXNlTG9hZGVyLmgiCisjaW5jbHVkZSAiSFJURlBhbm5lci5oIgorI2luY2x1ZGUgIkpTRE9NUHJv
bWlzZURlZmVycmVkLmgiCisjaW5jbHVkZSAiTG9nZ2luZy5oIgorI2luY2x1ZGUgIk5ldHdvcmtp
bmdDb250ZXh0LmgiCisjaW5jbHVkZSAiT2ZmbGluZUF1ZGlvQ29tcGxldGlvbkV2ZW50LmgiCisj
aW5jbHVkZSAiT2ZmbGluZUF1ZGlvRGVzdGluYXRpb25Ob2RlLmgiCisjaW5jbHVkZSAiT3NjaWxs
YXRvck5vZGUuaCIKKyNpbmNsdWRlICJQYWdlLmgiCisjaW5jbHVkZSAiUGVyaW9kaWNXYXZlLmgi
CisjaW5jbHVkZSAiUGxhdGZvcm1NZWRpYVNlc3Npb25NYW5hZ2VyLmgiCisjaW5jbHVkZSAiU2Ny
aXB0Q29udHJvbGxlci5oIgorI2luY2x1ZGUgIlNjcmlwdFByb2Nlc3Nvck5vZGUuaCIKKyNpbmNs
dWRlICJXYXZlU2hhcGVyTm9kZS5oIgorI2luY2x1ZGUgIldlYktpdEF1ZGlvUGFubmVyTm9kZS5o
IgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1NjcmlwdENhbGxTdGFjay5oPgorCisjaWYgRU5B
QkxFKE1FRElBX1NUUkVBTSkKKyNpbmNsdWRlICJNZWRpYVN0cmVhbS5oIgorI2luY2x1ZGUgIk1l
ZGlhU3RyZWFtQXVkaW9EZXN0aW5hdGlvbk5vZGUuaCIKKyNpbmNsdWRlICJNZWRpYVN0cmVhbUF1
ZGlvU291cmNlLmgiCisjaW5jbHVkZSAiTWVkaWFTdHJlYW1BdWRpb1NvdXJjZU5vZGUuaCIKKyNl
bmRpZgorCisjaWYgRU5BQkxFKFZJREVPKQorI2luY2x1ZGUgIkhUTUxNZWRpYUVsZW1lbnQuaCIK
KyNpbmNsdWRlICJNZWRpYUVsZW1lbnRBdWRpb1NvdXJjZU5vZGUuaCIKKyNlbmRpZgorCisjaWYg
REVCVUdfQVVESU9OT0RFX1JFRkVSRU5DRVMKKyNpbmNsdWRlIDxzdGRpby5oPgorI2VuZGlmCisK
KyNpZiBVU0UoR1NUUkVBTUVSKQorI2luY2x1ZGUgIkdTdHJlYW1lckNvbW1vbi5oIgorI2VuZGlm
CisKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQorI2luY2x1ZGUgIlNjcmlwdENvbnRyb2xsZXIu
aCIKKyNpbmNsdWRlICJTZXR0aW5ncy5oIgorI2VuZGlmCisKKyNpbmNsdWRlIDxKYXZhU2NyaXB0
Q29yZS9BcnJheUJ1ZmZlci5oPgorI2luY2x1ZGUgPHd0Zi9BdG9taWNzLmg+CisjaW5jbHVkZSA8
d3RmL0lzb01hbGxvY0lubGluZXMuaD4KKyNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgorI2lu
Y2x1ZGUgPHd0Zi9SZWYuaD4KKyNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgorI2luY2x1ZGUg
PHd0Zi9TY29wZS5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgorCitjb25zdCB1
bnNpZ25lZCBNYXhQZXJpb2RpY1dhdmVMZW5ndGggPSA0MDk2OworCituYW1lc3BhY2UgV2ViQ29y
ZSB7CisKK1dURl9NQUtFX0lTT19BTExPQ0FURURfSU1QTChXZWJLaXRBdWRpb0NvbnRleHQpOwor
CisjZGVmaW5lIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoZm10LCAuLi4pIFJFTEVBU0VfTE9HX0lG
KGRvY3VtZW50KCkgJiYgZG9jdW1lbnQoKS0+cGFnZSgpICYmIGRvY3VtZW50KCktPnBhZ2UoKS0+
aXNBbHdheXNPbkxvZ2dpbmdBbGxvd2VkKCksIE1lZGlhLCAiJXAgLSBXZWJLaXRBdWRpb0NvbnRl
eHQ6OiIgZm10LCB0aGlzLCAjI19fVkFfQVJHU19fKQorCitib29sIFdlYktpdEF1ZGlvQ29udGV4
dDo6aXNTYW1wbGVSYXRlUmFuZ2VHb29kKGZsb2F0IHNhbXBsZVJhdGUpCit7CisgICAgLy8gRklY
TUU6IEl0IHdvdWxkIGJlIG5pY2UgaWYgdGhlIG1pbmltdW0gc2FtcGxlLXJhdGUgY291bGQgYmUg
bGVzcyB0aGFuIDQ0LjFLSHosCisgICAgLy8gYnV0IHRoYXQgd2lsbCByZXF1aXJlIHNvbWUgZml4
ZXMgaW4gSFJURlBhbm5lcjo6ZmZ0U2l6ZUZvclNhbXBsZVJhdGUoKSwgYW5kIHNvbWUgdGVzdGlu
ZyB0aGVyZS4KKyAgICByZXR1cm4gc2FtcGxlUmF0ZSA+PSA0NDEwMCAmJiBzYW1wbGVSYXRlIDw9
IDk2MDAwOworfQorCisjaWYgT1MoV0lORE9XUykKKy8vIERvbid0IGFsbG93IG1vcmUgdGhhbiB0
aGlzIG51bWJlciBvZiBzaW11bHRhbmVvdXMgQXVkaW9Db250ZXh0cyB0YWxraW5nIHRvIGhhcmR3
YXJlLgorY29uc3RleHByIHVuc2lnbmVkIG1heEhhcmR3YXJlQ29udGV4dHMgPSA0OworI2VuZGlm
Cit1bnNpZ25lZCBXZWJLaXRBdWRpb0NvbnRleHQ6OnNfaGFyZHdhcmVDb250ZXh0Q291bnQgPSAw
OworCitFeGNlcHRpb25PcjxSZWY8V2ViS2l0QXVkaW9Db250ZXh0Pj4gV2ViS2l0QXVkaW9Db250
ZXh0OjpjcmVhdGUoRG9jdW1lbnQmIGRvY3VtZW50KQoreworICAgIEFTU0VSVChpc01haW5UaHJl
YWQoKSk7CisjaWYgT1MoV0lORE9XUykKKyAgICBpZiAoc19oYXJkd2FyZUNvbnRleHRDb3VudCA+
PSBtYXhIYXJkd2FyZUNvbnRleHRzKQorICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgUXVvdGFF
eGNlZWRlZEVycm9yIH07CisjZW5kaWYKKworICAgIGF1dG8gYXVkaW9Db250ZXh0ID0gYWRvcHRS
ZWYoKm5ldyBXZWJLaXRBdWRpb0NvbnRleHQoZG9jdW1lbnQpKTsKKyAgICBhdWRpb0NvbnRleHQt
PnN1c3BlbmRJZk5lZWRlZCgpOworICAgIHJldHVybiBhdWRpb0NvbnRleHQ7Cit9CisKKy8vIENv
bnN0cnVjdG9yIGZvciByZW5kZXJpbmcgdG8gdGhlIGF1ZGlvIGhhcmR3YXJlLgorV2ViS2l0QXVk
aW9Db250ZXh0OjpXZWJLaXRBdWRpb0NvbnRleHQoRG9jdW1lbnQmIGRvY3VtZW50KQorICAgIDog
QXVkaW9Db250ZXh0QmFzZShkb2N1bWVudCkKKyNpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKKyAg
ICAsIG1fbG9nZ2VyKGRvY3VtZW50LmxvZ2dlcigpKQorICAgICwgbV9sb2dJZGVudGlmaWVyKHVu
aXF1ZUxvZ0lkZW50aWZpZXIoKSkKKyNlbmRpZgorICAgICwgbV9tZWRpYVNlc3Npb24oUGxhdGZv
cm1NZWRpYVNlc3Npb246OmNyZWF0ZShQbGF0Zm9ybU1lZGlhU2Vzc2lvbk1hbmFnZXI6OnNoYXJl
ZE1hbmFnZXIoKSwgKnRoaXMpKQorICAgICwgbV9ldmVudFF1ZXVlKE1haW5UaHJlYWRHZW5lcmlj
RXZlbnRRdWV1ZTo6Y3JlYXRlKCp0aGlzKSkKK3sKKyAgICAvLyBBY2NvcmRpbmcgdG8gc3BlYyBB
dWRpb0NvbnRleHQgbXVzdCBkaWUgb25seSBhZnRlciBwYWdlIG5hdmlnYXRlLgorICAgIC8vIExl
dHMgbWFyayBpdCBhcyBBY3RpdmVET01PYmplY3Qgd2l0aCBwZW5kaW5nIGFjdGl2aXR5IGFuZCB1
bm1hcmsgaXQgaW4gY2xlYXIgbWV0aG9kLgorICAgIG1ha2VQZW5kaW5nQWN0aXZpdHkoKTsKKwor
ICAgIGNvbnN0cnVjdENvbW1vbigpOworCisgICAgbV9kZXN0aW5hdGlvbk5vZGUgPSBEZWZhdWx0
QXVkaW9EZXN0aW5hdGlvbk5vZGU6OmNyZWF0ZSgqdGhpcyk7CisKKyAgICAvLyBJbml0aWFsaXpl
IHRoZSBkZXN0aW5hdGlvbiBub2RlJ3MgbXV0ZWQgc3RhdGUgdG8gbWF0Y2ggdGhlIHBhZ2UncyBj
dXJyZW50IG11dGVkIHN0YXRlLgorICAgIHBhZ2VNdXRlZFN0YXRlRGlkQ2hhbmdlKCk7CisKKyAg
ICBkb2N1bWVudC5hZGRBdWRpb1Byb2R1Y2VyKCp0aGlzKTsKKyAgICBkb2N1bWVudC5yZWdpc3Rl
ckZvclZpc2liaWxpdHlTdGF0ZUNoYW5nZWRDYWxsYmFja3MoKnRoaXMpOworfQorCisvLyBDb25z
dHJ1Y3RvciBmb3Igb2ZmbGluZSAobm9uLXJlYWx0aW1lKSByZW5kZXJpbmcuCitXZWJLaXRBdWRp
b0NvbnRleHQ6OldlYktpdEF1ZGlvQ29udGV4dChEb2N1bWVudCYgZG9jdW1lbnQsIEF1ZGlvQnVm
ZmVyKiByZW5kZXJUYXJnZXQpCisgICAgOiBBdWRpb0NvbnRleHRCYXNlKGRvY3VtZW50KQorI2lm
ICFSRUxFQVNFX0xPR19ESVNBQkxFRAorICAgICwgbV9sb2dnZXIoZG9jdW1lbnQubG9nZ2VyKCkp
CisgICAgLCBtX2xvZ0lkZW50aWZpZXIodW5pcXVlTG9nSWRlbnRpZmllcigpKQorI2VuZGlmCisg
ICAgLCBtX2lzT2ZmbGluZUNvbnRleHQodHJ1ZSkKKyAgICAsIG1fbWVkaWFTZXNzaW9uKFBsYXRm
b3JtTWVkaWFTZXNzaW9uOjpjcmVhdGUoUGxhdGZvcm1NZWRpYVNlc3Npb25NYW5hZ2VyOjpzaGFy
ZWRNYW5hZ2VyKCksICp0aGlzKSkKKyAgICAsIG1fZXZlbnRRdWV1ZShNYWluVGhyZWFkR2VuZXJp
Y0V2ZW50UXVldWU6OmNyZWF0ZSgqdGhpcykpCisgICAgLCBtX3JlbmRlclRhcmdldChyZW5kZXJU
YXJnZXQpCit7CisgICAgY29uc3RydWN0Q29tbW9uKCk7CisKKyAgICAvLyBDcmVhdGUgYSBuZXcg
ZGVzdGluYXRpb24gZm9yIG9mZmxpbmUgcmVuZGVyaW5nLgorICAgIG1fZGVzdGluYXRpb25Ob2Rl
ID0gT2ZmbGluZUF1ZGlvRGVzdGluYXRpb25Ob2RlOjpjcmVhdGUoKnRoaXMsIG1fcmVuZGVyVGFy
Z2V0LmdldCgpKTsKK30KKwordm9pZCBXZWJLaXRBdWRpb0NvbnRleHQ6OmNvbnN0cnVjdENvbW1v
bigpCit7CisgICAgRkZURnJhbWU6OmluaXRpYWxpemUoKTsKKworICAgIG1fbGlzdGVuZXIgPSBB
dWRpb0xpc3RlbmVyOjpjcmVhdGUoKTsKKworICAgIEFTU0VSVChkb2N1bWVudCgpKTsKKyAgICBp
ZiAoZG9jdW1lbnQoKS0+YXVkaW9QbGF5YmFja1JlcXVpcmVzVXNlckdlc3R1cmUoKSkKKyAgICAg
ICAgYWRkQmVoYXZpb3JSZXN0cmljdGlvbihSZXF1aXJlVXNlckdlc3R1cmVGb3JBdWRpb1N0YXJ0
UmVzdHJpY3Rpb24pOworICAgIGVsc2UKKyAgICAgICAgbV9yZXN0cmljdGlvbnMgPSBOb1Jlc3Ry
aWN0aW9uczsKKworI2lmIFBMQVRGT1JNKENPQ09BKQorICAgIGFkZEJlaGF2aW9yUmVzdHJpY3Rp
b24oUmVxdWlyZVBhZ2VDb25zZW50Rm9yQXVkaW9TdGFydFJlc3RyaWN0aW9uKTsKKyNlbmRpZgor
fQorCitXZWJLaXRBdWRpb0NvbnRleHQ6On5XZWJLaXRBdWRpb0NvbnRleHQoKQoreworI2lmIERF
QlVHX0FVRElPTk9ERV9SRUZFUkVOQ0VTCisgICAgZnByaW50ZihzdGRlcnIsICIlcDogV2ViS2l0
QXVkaW9Db250ZXh0Ojp+V2ViS2l0QXVkaW9Db250ZXh0KClcbiIsIHRoaXMpOworI2VuZGlmCisg
ICAgQVNTRVJUKCFtX2lzSW5pdGlhbGl6ZWQpOworICAgIEFTU0VSVChtX2lzU3RvcFNjaGVkdWxl
ZCk7CisgICAgQVNTRVJUKG1fbm9kZXNUb0RlbGV0ZS5pc0VtcHR5KCkpOworICAgIEFTU0VSVCht
X3JlZmVyZW5jZWROb2Rlcy5pc0VtcHR5KCkpOworICAgIEFTU0VSVChtX2ZpbmlzaGVkTm9kZXMu
aXNFbXB0eSgpKTsgLy8gRklYTUUgKGJ1ZyAxMDU4NzApOiBUaGlzIGFzc2VydGlvbiBmYWlscyBv
biB0ZXN0cyBzb21ldGltZXMuCisgICAgQVNTRVJUKG1fYXV0b21hdGljUHVsbE5vZGVzLmlzRW1w
dHkoKSk7CisgICAgaWYgKG1fYXV0b21hdGljUHVsbE5vZGVzTmVlZFVwZGF0aW5nKQorICAgICAg
ICBtX3JlbmRlcmluZ0F1dG9tYXRpY1B1bGxOb2Rlcy5yZXNpemUobV9hdXRvbWF0aWNQdWxsTm9k
ZXMuc2l6ZSgpKTsKKyAgICBBU1NFUlQobV9yZW5kZXJpbmdBdXRvbWF0aWNQdWxsTm9kZXMuaXNF
bXB0eSgpKTsKKyAgICAvLyBGSVhNRTogQ2FuIHdlIGFzc2VydCB0aGF0IG1fZGVmZXJyZWRGaW5p
c2hEZXJlZkxpc3QgaXMgZW1wdHk/CisKKyAgICBpZiAoIWlzT2ZmbGluZUNvbnRleHQoKSAmJiBz
Y3JpcHRFeGVjdXRpb25Db250ZXh0KCkpIHsKKyAgICAgICAgZG9jdW1lbnQoKS0+cmVtb3ZlQXVk
aW9Qcm9kdWNlcigqdGhpcyk7CisgICAgICAgIGRvY3VtZW50KCktPnVucmVnaXN0ZXJGb3JWaXNp
YmlsaXR5U3RhdGVDaGFuZ2VkQ2FsbGJhY2tzKCp0aGlzKTsKKyAgICB9Cit9CisKK3ZvaWQgV2Vi
S2l0QXVkaW9Db250ZXh0OjpsYXp5SW5pdGlhbGl6ZSgpCit7CisgICAgQVNTRVJUKCFtX2lzU3Rv
cFNjaGVkdWxlZCk7CisKKyAgICBpZiAobV9pc0luaXRpYWxpemVkKQorICAgICAgICByZXR1cm47
CisKKyAgICAvLyBEb24ndCBhbGxvdyB0aGUgY29udGV4dCB0byBpbml0aWFsaXplIGEgc2Vjb25k
IHRpbWUgYWZ0ZXIgaXQncyBhbHJlYWR5IGJlZW4gZXhwbGljaXRseSB1bmluaXRpYWxpemVkLgor
ICAgIEFTU0VSVCghbV9pc0F1ZGlvVGhyZWFkRmluaXNoZWQpOworICAgIGlmIChtX2lzQXVkaW9U
aHJlYWRGaW5pc2hlZCkKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKG1fZGVzdGluYXRpb25O
b2RlKSB7CisgICAgICAgIG1fZGVzdGluYXRpb25Ob2RlLT5pbml0aWFsaXplKCk7CisKKyAgICAg
ICAgaWYgKCFpc09mZmxpbmVDb250ZXh0KCkpIHsKKyAgICAgICAgICAgIC8vIFRoaXMgc3RhcnRz
IHRoZSBhdWRpbyB0aHJlYWQuIFRoZSBkZXN0aW5hdGlvbiBub2RlJ3MgcHJvdmlkZUlucHV0KCkg
bWV0aG9kIHdpbGwgbm93IGJlIGNhbGxlZCByZXBlYXRlZGx5IHRvIHJlbmRlciBhdWRpby4KKyAg
ICAgICAgICAgIC8vIEVhY2ggdGltZSBwcm92aWRlSW5wdXQoKSBpcyBjYWxsZWQsIGEgcG9ydGlv
biBvZiB0aGUgYXVkaW8gc3RyZWFtIGlzIHJlbmRlcmVkLiBMZXQncyBjYWxsIHRoaXMgdGltZSBw
ZXJpb2QgYSAicmVuZGVyIHF1YW50dW0iLgorICAgICAgICAgICAgLy8gTk9URTogZm9yIG5vdyBk
ZWZhdWx0IEF1ZGlvQ29udGV4dCBkb2VzIG5vdCBuZWVkIGFuIGV4cGxpY2l0IHN0YXJ0UmVuZGVy
aW5nKCkgY2FsbCBmcm9tIEphdmFTY3JpcHQuCisgICAgICAgICAgICAvLyBXZSBtYXkgd2FudCB0
byBjb25zaWRlciByZXF1aXJpbmcgaXQgZm9yIHN5bW1ldHJ5IHdpdGggT2ZmbGluZUF1ZGlvQ29u
dGV4dC4KKyAgICAgICAgICAgIHN0YXJ0UmVuZGVyaW5nKCk7CisgICAgICAgICAgICArK3NfaGFy
ZHdhcmVDb250ZXh0Q291bnQ7CisgICAgICAgIH0KKyAgICB9CisgICAgbV9pc0luaXRpYWxpemVk
ID0gdHJ1ZTsKK30KKwordm9pZCBXZWJLaXRBdWRpb0NvbnRleHQ6OmNsZWFyKCkKK3sKKyAgICBS
ZWY8V2ViS2l0QXVkaW9Db250ZXh0PiBwcm90ZWN0ZWRUaGlzKCp0aGlzKTsKKworICAgIC8vIFdl
IGhhdmUgdG8gcmVsZWFzZSBvdXIgcmVmZXJlbmNlIHRvIHRoZSBkZXN0aW5hdGlvbiBub2RlIGJl
Zm9yZSB0aGUgY29udGV4dCB3aWxsIGV2ZXIgYmUgZGVsZXRlZCBzaW5jZSB0aGUgZGVzdGluYXRp
b24gbm9kZSBob2xkcyBhIHJlZmVyZW5jZSB0byB0aGUgY29udGV4dC4KKyAgICBpZiAobV9kZXN0
aW5hdGlvbk5vZGUpCisgICAgICAgIG1fZGVzdGluYXRpb25Ob2RlID0gbnVsbHB0cjsKKworICAg
IC8vIEF1ZGlvIHRocmVhZCBpcyBkZWFkLiBOb2JvZHkgd2lsbCBzY2hlZHVsZSBub2RlIGRlbGV0
aW9uIGFjdGlvbi4gTGV0J3MgZG8gaXQgb3Vyc2VsdmVzLgorICAgIGRvIHsKKyAgICAgICAgZGVs
ZXRlTWFya2VkTm9kZXMoKTsKKyAgICAgICAgbV9ub2Rlc1RvRGVsZXRlLmFwcGVuZFZlY3Rvciht
X25vZGVzTWFya2VkRm9yRGVsZXRpb24pOworICAgICAgICBtX25vZGVzTWFya2VkRm9yRGVsZXRp
b24uY2xlYXIoKTsKKyAgICB9IHdoaWxlIChtX25vZGVzVG9EZWxldGUuc2l6ZSgpKTsKKworICAg
IGNsZWFyUGVuZGluZ0FjdGl2aXR5KCk7Cit9CisKK3ZvaWQgV2ViS2l0QXVkaW9Db250ZXh0Ojp1
bmluaXRpYWxpemUoKQoreworICAgIEFMV0FZU19MT0coTE9HSURFTlRJRklFUik7CisKKyAgICBB
U1NFUlQoaXNNYWluVGhyZWFkKCkpOworCisgICAgaWYgKCFtX2lzSW5pdGlhbGl6ZWQpCisgICAg
ICAgIHJldHVybjsKKworICAgIC8vIFRoaXMgc3RvcHMgdGhlIGF1ZGlvIHRocmVhZCBhbmQgYWxs
IGF1ZGlvIHJlbmRlcmluZy4KKyAgICBpZiAobV9kZXN0aW5hdGlvbk5vZGUpCisgICAgICAgIG1f
ZGVzdGluYXRpb25Ob2RlLT51bmluaXRpYWxpemUoKTsKKworICAgIC8vIERvbid0IGFsbG93IHRo
ZSBjb250ZXh0IHRvIGluaXRpYWxpemUgYSBzZWNvbmQgdGltZSBhZnRlciBpdCdzIGFscmVhZHkg
YmVlbiBleHBsaWNpdGx5IHVuaW5pdGlhbGl6ZWQuCisgICAgbV9pc0F1ZGlvVGhyZWFkRmluaXNo
ZWQgPSB0cnVlOworCisgICAgaWYgKCFpc09mZmxpbmVDb250ZXh0KCkpIHsKKyAgICAgICAgQVNT
RVJUKHNfaGFyZHdhcmVDb250ZXh0Q291bnQpOworICAgICAgICAtLXNfaGFyZHdhcmVDb250ZXh0
Q291bnQ7CisKKyAgICAgICAgLy8gT2ZmbGluZSBjb250ZXh0cyBtb3ZlIHRvICdDbG9zZWQnIHN0
YXRlIHdoZW4gZGlzcGF0Y2hpbmcgdGhlIGNvbXBsZXRpb24gZXZlbnQuCisgICAgICAgIHNldFN0
YXRlKFN0YXRlOjpDbG9zZWQpOworICAgIH0KKworICAgIC8vIEdldCByaWQgb2YgdGhlIHNvdXJj
ZXMgd2hpY2ggbWF5IHN0aWxsIGJlIHBsYXlpbmcuCisgICAgZGVyZWZVbmZpbmlzaGVkU291cmNl
Tm9kZXMoKTsKKworICAgIG1faXNJbml0aWFsaXplZCA9IGZhbHNlOworfQorCitib29sIFdlYktp
dEF1ZGlvQ29udGV4dDo6aXNJbml0aWFsaXplZCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1faXNJ
bml0aWFsaXplZDsKK30KKwordm9pZCBXZWJLaXRBdWRpb0NvbnRleHQ6OmFkZFJlYWN0aW9uKFN0
YXRlIHN0YXRlLCBET01Qcm9taXNlRGVmZXJyZWQ8dm9pZD4mJiBwcm9taXNlKQoreworICAgIHNp
emVfdCBzdGF0ZUluZGV4ID0gc3RhdGljX2Nhc3Q8c2l6ZV90PihzdGF0ZSk7CisgICAgaWYgKHN0
YXRlSW5kZXggPj0gbV9zdGF0ZVJlYWN0aW9ucy5zaXplKCkpCisgICAgICAgIG1fc3RhdGVSZWFj
dGlvbnMuZ3JvdyhzdGF0ZUluZGV4ICsgMSk7CisKKyAgICBtX3N0YXRlUmVhY3Rpb25zW3N0YXRl
SW5kZXhdLmFwcGVuZChXVEZNb3ZlKHByb21pc2UpKTsKK30KKwordm9pZCBXZWJLaXRBdWRpb0Nv
bnRleHQ6OnNldFN0YXRlKFN0YXRlIHN0YXRlKQoreworICAgIGlmIChtX3N0YXRlID09IHN0YXRl
KQorICAgICAgICByZXR1cm47CisKKyAgICBtX3N0YXRlID0gc3RhdGU7CisgICAgbV9ldmVudFF1
ZXVlLT5lbnF1ZXVlRXZlbnQoRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkuc3RhdGVjaGFuZ2VF
dmVudCwgRXZlbnQ6OkNhbkJ1YmJsZTo6WWVzLCBFdmVudDo6SXNDYW5jZWxhYmxlOjpObykpOwor
CisgICAgc2l6ZV90IHN0YXRlSW5kZXggPSBzdGF0aWNfY2FzdDxzaXplX3Q+KHN0YXRlKTsKKyAg
ICBpZiAoc3RhdGVJbmRleCA+PSBtX3N0YXRlUmVhY3Rpb25zLnNpemUoKSkKKyAgICAgICAgcmV0
dXJuOworCisgICAgVmVjdG9yPERPTVByb21pc2VEZWZlcnJlZDx2b2lkPj4gcmVhY3Rpb25zOwor
ICAgIG1fc3RhdGVSZWFjdGlvbnNbc3RhdGVJbmRleF0uc3dhcChyZWFjdGlvbnMpOworCisgICAg
Zm9yIChhdXRvJiBwcm9taXNlIDogcmVhY3Rpb25zKQorICAgICAgICBwcm9taXNlLnJlc29sdmUo
KTsKK30KKwordm9pZCBXZWJLaXRBdWRpb0NvbnRleHQ6OnN0b3AoKQoreworICAgIEFMV0FZU19M
T0coTE9HSURFTlRJRklFUik7CisKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworCisgICAg
Ly8gVXN1YWxseSBTY3JpcHRFeGVjdXRpb25Db250ZXh0IGNhbGxzIHN0b3AgdHdpY2UuCisgICAg
aWYgKG1faXNTdG9wU2NoZWR1bGVkKQorICAgICAgICByZXR1cm47CisgICAgbV9pc1N0b3BTY2hl
ZHVsZWQgPSB0cnVlOworCisgICAgQVNTRVJUKGRvY3VtZW50KCkpOworICAgIGRvY3VtZW50KCkt
PnVwZGF0ZUlzUGxheWluZ01lZGlhKCk7CisKKyAgICB1bmluaXRpYWxpemUoKTsKKyAgICBjbGVh
cigpOworfQorCit2b2lkIFdlYktpdEF1ZGlvQ29udGV4dDo6c3VzcGVuZChSZWFzb25Gb3JTdXNw
ZW5zaW9uKQoreworICAgIGlmIChzdGF0ZSgpID09IFN0YXRlOjpSdW5uaW5nKSB7CisgICAgICAg
IG1fbWVkaWFTZXNzaW9uLT5iZWdpbkludGVycnVwdGlvbihQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6
UGxheWJhY2tTdXNwZW5kZWQpOworICAgICAgICBkb2N1bWVudCgpLT51cGRhdGVJc1BsYXlpbmdN
ZWRpYSgpOworICAgIH0KK30KKwordm9pZCBXZWJLaXRBdWRpb0NvbnRleHQ6OnJlc3VtZSgpCit7
CisgICAgaWYgKHN0YXRlKCkgPT0gU3RhdGU6OkludGVycnVwdGVkKSB7CisgICAgICAgIG1fbWVk
aWFTZXNzaW9uLT5lbmRJbnRlcnJ1cHRpb24oUGxhdGZvcm1NZWRpYVNlc3Npb246Ok1heVJlc3Vt
ZVBsYXlpbmcpOworICAgICAgICBkb2N1bWVudCgpLT51cGRhdGVJc1BsYXlpbmdNZWRpYSgpOwor
ICAgIH0KK30KKworY29uc3QgY2hhciogV2ViS2l0QXVkaW9Db250ZXh0OjphY3RpdmVET01PYmpl
Y3ROYW1lKCkgY29uc3QKK3sKKyAgICByZXR1cm4gIldlYktpdEF1ZGlvQ29udGV4dCI7Cit9CisK
K0RvY3VtZW50SWRlbnRpZmllciBXZWJLaXRBdWRpb0NvbnRleHQ6Omhvc3RpbmdEb2N1bWVudElk
ZW50aWZpZXIoKSBjb25zdAoreworICAgIGF1dG8qIGRvY3VtZW50ID0gZG93bmNhc3Q8RG9jdW1l
bnQ+KG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dCk7CisgICAgcmV0dXJuIGRvY3VtZW50ID8gZG9j
dW1lbnQtPmlkZW50aWZpZXIoKSA6IERvY3VtZW50SWRlbnRpZmllciB7IH07Cit9CisKK2Jvb2wg
V2ViS2l0QXVkaW9Db250ZXh0Ojppc1N1c3BlbmRlZCgpIGNvbnN0Cit7CisgICAgcmV0dXJuICFk
b2N1bWVudCgpIHx8IGRvY3VtZW50KCktPmFjdGl2ZURPTU9iamVjdHNBcmVTdXNwZW5kZWQoKSB8
fCBkb2N1bWVudCgpLT5hY3RpdmVET01PYmplY3RzQXJlU3RvcHBlZCgpOworfQorCit2b2lkIFdl
YktpdEF1ZGlvQ29udGV4dDo6dmlzaWJpbGl0eVN0YXRlQ2hhbmdlZCgpCit7CisgICAgLy8gRG8g
bm90IHN1c3BlbmQgaWYgYXVkaW8gaXMgYXVkaWJsZS4KKyAgICBpZiAoIWRvY3VtZW50KCkgfHwg
bWVkaWFTdGF0ZSgpID09IE1lZGlhUHJvZHVjZXI6OklzUGxheWluZ0F1ZGlvIHx8IG1faXNTdG9w
U2NoZWR1bGVkKQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAoZG9jdW1lbnQoKS0+aGlkZGVu
KCkpIHsKKyAgICAgICAgaWYgKHN0YXRlKCkgPT0gU3RhdGU6OlJ1bm5pbmcpIHsKKyAgICAgICAg
ICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoInZpc2liaWxpdHlTdGF0ZUNoYW5nZWQoKSBTdXNw
ZW5kaW5nIHBsYXliYWNrIGFmdGVyIGdvaW5nIHRvIHRoZSBiYWNrZ3JvdW5kIik7CisgICAgICAg
ICAgICBtX21lZGlhU2Vzc2lvbi0+YmVnaW5JbnRlcnJ1cHRpb24oUGxhdGZvcm1NZWRpYVNlc3Np
b246OkVudGVyaW5nQmFja2dyb3VuZCk7CisgICAgICAgIH0KKyAgICB9IGVsc2UgeworICAgICAg
ICBpZiAoc3RhdGUoKSA9PSBTdGF0ZTo6SW50ZXJydXB0ZWQpIHsKKyAgICAgICAgICAgIFJFTEVB
U0VfTE9HX0lGX0FMTE9XRUQoInZpc2liaWxpdHlTdGF0ZUNoYW5nZWQoKSBSZXN1bWluZyBwbGF5
YmFjayBhZnRlciBlbnRlcmluZyBmb3JlZ3JvdW5kIik7CisgICAgICAgICAgICBtX21lZGlhU2Vz
c2lvbi0+ZW5kSW50ZXJydXB0aW9uKFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpNYXlSZXN1bWVQbGF5
aW5nKTsKKyAgICAgICAgfQorICAgIH0KK30KKworYm9vbCBXZWJLaXRBdWRpb0NvbnRleHQ6Ondv
dWxkVGFpbnRPcmlnaW4oY29uc3QgVVJMJiB1cmwpIGNvbnN0Cit7CisgICAgaWYgKHVybC5wcm90
b2NvbElzRGF0YSgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBpZiAoYXV0byogZG9j
dW1lbnQgPSB0aGlzLT5kb2N1bWVudCgpKQorICAgICAgICByZXR1cm4gIWRvY3VtZW50LT5zZWN1
cml0eU9yaWdpbigpLmNhblJlcXVlc3QodXJsKTsKKworICAgIHJldHVybiBmYWxzZTsKK30KKwor
RXhjZXB0aW9uT3I8UmVmPEF1ZGlvQnVmZmVyPj4gV2ViS2l0QXVkaW9Db250ZXh0OjpjcmVhdGVC
dWZmZXIodW5zaWduZWQgbnVtYmVyT2ZDaGFubmVscywgc2l6ZV90IG51bWJlck9mRnJhbWVzLCBm
bG9hdCBzYW1wbGVSYXRlKQoreworICAgIGF1dG8gYXVkaW9CdWZmZXIgPSBBdWRpb0J1ZmZlcjo6
Y3JlYXRlKG51bWJlck9mQ2hhbm5lbHMsIG51bWJlck9mRnJhbWVzLCBzYW1wbGVSYXRlKTsKKyAg
ICBpZiAoIWF1ZGlvQnVmZmVyKQorICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgTm90U3VwcG9y
dGVkRXJyb3IgfTsKKyAgICByZXR1cm4gYXVkaW9CdWZmZXIucmVsZWFzZU5vbk51bGwoKTsKK30K
KworRXhjZXB0aW9uT3I8UmVmPEF1ZGlvQnVmZmVyPj4gV2ViS2l0QXVkaW9Db250ZXh0OjpjcmVh
dGVCdWZmZXIoQXJyYXlCdWZmZXImIGFycmF5QnVmZmVyLCBib29sIG1peFRvTW9ubykKK3sKKyAg
ICBhdXRvIGF1ZGlvQnVmZmVyID0gQXVkaW9CdWZmZXI6OmNyZWF0ZUZyb21BdWRpb0ZpbGVEYXRh
KGFycmF5QnVmZmVyLmRhdGEoKSwgYXJyYXlCdWZmZXIuYnl0ZUxlbmd0aCgpLCBtaXhUb01vbm8s
IHNhbXBsZVJhdGUoKSk7CisgICAgaWYgKCFhdWRpb0J1ZmZlcikKKyAgICAgICAgcmV0dXJuIEV4
Y2VwdGlvbiB7IFN5bnRheEVycm9yIH07CisgICAgcmV0dXJuIGF1ZGlvQnVmZmVyLnJlbGVhc2VO
b25OdWxsKCk7Cit9CisKK3ZvaWQgV2ViS2l0QXVkaW9Db250ZXh0OjpkZWNvZGVBdWRpb0RhdGEo
UmVmPEFycmF5QnVmZmVyPiYmIGF1ZGlvRGF0YSwgUmVmUHRyPEF1ZGlvQnVmZmVyQ2FsbGJhY2s+
JiYgc3VjY2Vzc0NhbGxiYWNrLCBSZWZQdHI8QXVkaW9CdWZmZXJDYWxsYmFjaz4mJiBlcnJvckNh
bGxiYWNrKQoreworICAgIGlmICghbV9hdWRpb0RlY29kZXIpCisgICAgICAgIG1fYXVkaW9EZWNv
ZGVyID0gbWFrZVVuaXF1ZTxBc3luY0F1ZGlvRGVjb2Rlcj4oKTsKKyAgICBtX2F1ZGlvRGVjb2Rl
ci0+ZGVjb2RlQXN5bmMoV1RGTW92ZShhdWRpb0RhdGEpLCBzYW1wbGVSYXRlKCksIFdURk1vdmUo
c3VjY2Vzc0NhbGxiYWNrKSwgV1RGTW92ZShlcnJvckNhbGxiYWNrKSk7Cit9CisKK0V4Y2VwdGlv
bk9yPFJlZjxBdWRpb0J1ZmZlclNvdXJjZU5vZGU+PiBXZWJLaXRBdWRpb0NvbnRleHQ6OmNyZWF0
ZUJ1ZmZlclNvdXJjZSgpCit7CisgICAgQUxXQVlTX0xPRyhMT0dJREVOVElGSUVSKTsKKworICAg
IEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisKKyAgICBpZiAobV9pc1N0b3BTY2hlZHVsZWQpCisg
ICAgICAgIHJldHVybiBFeGNlcHRpb24geyBJbnZhbGlkU3RhdGVFcnJvciB9OworCisgICAgbGF6
eUluaXRpYWxpemUoKTsKKyAgICBSZWY8QXVkaW9CdWZmZXJTb3VyY2VOb2RlPiBub2RlID0gQXVk
aW9CdWZmZXJTb3VyY2VOb2RlOjpjcmVhdGUoKnRoaXMsIHNhbXBsZVJhdGUoKSk7CisKKyAgICAv
LyBCZWNhdXNlIHRoaXMgaXMgYW4gQXVkaW9TY2hlZHVsZWRTb3VyY2VOb2RlLCB0aGUgY29udGV4
dCBrZWVwcyBhIHJlZmVyZW5jZSB1bnRpbCBpdCBoYXMgZmluaXNoZWQgcGxheWluZy4KKyAgICAv
LyBXaGVuIHRoaXMgaGFwcGVucywgQXVkaW9TY2hlZHVsZWRTb3VyY2VOb2RlOjpmaW5pc2goKSBj
YWxscyBXZWJLaXRBdWRpb0NvbnRleHQ6Om5vdGlmeU5vZGVGaW5pc2hlZFByb2Nlc3NpbmcoKS4K
KyAgICByZWZOb2RlKG5vZGUpOworCisgICAgcmV0dXJuIG5vZGU7Cit9CisKKyNpZiBFTkFCTEUo
VklERU8pCisKK0V4Y2VwdGlvbk9yPFJlZjxNZWRpYUVsZW1lbnRBdWRpb1NvdXJjZU5vZGU+PiBX
ZWJLaXRBdWRpb0NvbnRleHQ6OmNyZWF0ZU1lZGlhRWxlbWVudFNvdXJjZShIVE1MTWVkaWFFbGVt
ZW50JiBtZWRpYUVsZW1lbnQpCit7CisgICAgQUxXQVlTX0xPRyhMT0dJREVOVElGSUVSKTsKKwor
ICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisKKyAgICBpZiAobV9pc1N0b3BTY2hlZHVsZWQg
fHwgbWVkaWFFbGVtZW50LmF1ZGlvU291cmNlTm9kZSgpKQorICAgICAgICByZXR1cm4gRXhjZXB0
aW9uIHsgSW52YWxpZFN0YXRlRXJyb3IgfTsKKworICAgIGxhenlJbml0aWFsaXplKCk7CisKKyAg
ICBhdXRvIG5vZGUgPSBNZWRpYUVsZW1lbnRBdWRpb1NvdXJjZU5vZGU6OmNyZWF0ZSgqdGhpcywg
bWVkaWFFbGVtZW50KTsKKworICAgIG1lZGlhRWxlbWVudC5zZXRBdWRpb1NvdXJjZU5vZGUobm9k
ZS5wdHIoKSk7CisKKyAgICByZWZOb2RlKG5vZGUuZ2V0KCkpOyAvLyBjb250ZXh0IGtlZXBzIHJl
ZmVyZW5jZSB1bnRpbCBub2RlIGlzIGRpc2Nvbm5lY3RlZAorICAgIHJldHVybiBub2RlOworfQor
CisjZW5kaWYKKworI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCisKK0V4Y2VwdGlvbk9yPFJlZjxN
ZWRpYVN0cmVhbUF1ZGlvU291cmNlTm9kZT4+IFdlYktpdEF1ZGlvQ29udGV4dDo6Y3JlYXRlTWVk
aWFTdHJlYW1Tb3VyY2UoTWVkaWFTdHJlYW0mIG1lZGlhU3RyZWFtKQoreworICAgIEFMV0FZU19M
T0coTE9HSURFTlRJRklFUik7CisKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworCisgICAg
aWYgKG1faXNTdG9wU2NoZWR1bGVkKQorICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgSW52YWxp
ZFN0YXRlRXJyb3IgfTsKKworICAgIGF1dG8gYXVkaW9UcmFja3MgPSBtZWRpYVN0cmVhbS5nZXRB
dWRpb1RyYWNrcygpOworICAgIGlmIChhdWRpb1RyYWNrcy5pc0VtcHR5KCkpCisgICAgICAgIHJl
dHVybiBFeGNlcHRpb24geyBJbnZhbGlkU3RhdGVFcnJvciB9OworCisgICAgTWVkaWFTdHJlYW1U
cmFjayogcHJvdmlkZXJUcmFjayA9IG51bGxwdHI7CisgICAgZm9yIChhdXRvJiB0cmFjayA6IGF1
ZGlvVHJhY2tzKSB7CisgICAgICAgIGlmICh0cmFjay0+YXVkaW9Tb3VyY2VQcm92aWRlcigpKSB7
CisgICAgICAgICAgICBwcm92aWRlclRyYWNrID0gdHJhY2suZ2V0KCk7CisgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgfQorICAgIH0KKyAgICBpZiAoIXByb3ZpZGVyVHJhY2spCisgICAgICAg
IHJldHVybiBFeGNlcHRpb24geyBJbnZhbGlkU3RhdGVFcnJvciB9OworCisgICAgbGF6eUluaXRp
YWxpemUoKTsKKworICAgIGF1dG8gbm9kZSA9IE1lZGlhU3RyZWFtQXVkaW9Tb3VyY2VOb2RlOjpj
cmVhdGUoKnRoaXMsIG1lZGlhU3RyZWFtLCAqcHJvdmlkZXJUcmFjayk7CisgICAgbm9kZS0+c2V0
Rm9ybWF0KDIsIHNhbXBsZVJhdGUoKSk7CisKKyAgICByZWZOb2RlKG5vZGUpOyAvLyBjb250ZXh0
IGtlZXBzIHJlZmVyZW5jZSB1bnRpbCBub2RlIGlzIGRpc2Nvbm5lY3RlZAorICAgIHJldHVybiBu
b2RlOworfQorCitFeGNlcHRpb25PcjxSZWY8TWVkaWFTdHJlYW1BdWRpb0Rlc3RpbmF0aW9uTm9k
ZT4+IFdlYktpdEF1ZGlvQ29udGV4dDo6Y3JlYXRlTWVkaWFTdHJlYW1EZXN0aW5hdGlvbigpCit7
CisgICAgaWYgKG1faXNTdG9wU2NoZWR1bGVkKQorICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsg
SW52YWxpZFN0YXRlRXJyb3IgfTsKKworICAgIC8vIEZJWE1FOiBBZGQgc3VwcG9ydCBmb3IgYW4g
b3B0aW9uYWwgYXJndW1lbnQgd2hpY2ggc3BlY2lmaWVzIHRoZSBudW1iZXIgb2YgY2hhbm5lbHMu
CisgICAgLy8gRklYTUU6IFRoZSBkZWZhdWx0IHNob3VsZCBwcm9iYWJseSBiZSBzdGVyZW8gaW5z
dGVhZCBvZiBtb25vLgorICAgIHJldHVybiBNZWRpYVN0cmVhbUF1ZGlvRGVzdGluYXRpb25Ob2Rl
OjpjcmVhdGUoKnRoaXMsIDEpOworfQorCisjZW5kaWYKKworRXhjZXB0aW9uT3I8UmVmPFNjcmlw
dFByb2Nlc3Nvck5vZGU+PiBXZWJLaXRBdWRpb0NvbnRleHQ6OmNyZWF0ZVNjcmlwdFByb2Nlc3Nv
cihzaXplX3QgYnVmZmVyU2l6ZSwgc2l6ZV90IG51bWJlck9mSW5wdXRDaGFubmVscywgc2l6ZV90
IG51bWJlck9mT3V0cHV0Q2hhbm5lbHMpCit7CisgICAgQUxXQVlTX0xPRyhMT0dJREVOVElGSUVS
KTsKKworICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisKKyAgICBpZiAobV9pc1N0b3BTY2hl
ZHVsZWQpCisgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBJbnZhbGlkU3RhdGVFcnJvciB9Owor
CisgICAgbGF6eUluaXRpYWxpemUoKTsKKworICAgIC8vIFczQyBFZGl0b3IncyBEcmFmdCAwNiBK
dW5lIDIwMTcKKyAgICAvLyAgaHR0cHM6Ly93ZWJhdWRpby5naXRodWIuaW8vd2ViLWF1ZGlvLWFw
aS8jd2lkbC1CYXNlQXVkaW9Db250ZXh0LWNyZWF0ZVNjcmlwdFByb2Nlc3Nvci1TY3JpcHRQcm9j
ZXNzb3JOb2RlLXVuc2lnbmVkLWxvbmctYnVmZmVyU2l6ZS11bnNpZ25lZC1sb25nLW51bWJlck9m
SW5wdXRDaGFubmVscy11bnNpZ25lZC1sb25nLW51bWJlck9mT3V0cHV0Q2hhbm5lbHMKKworICAg
IC8vIFRoZSBidWZmZXJTaXplIHBhcmFtZXRlciBkZXRlcm1pbmVzIHRoZSBidWZmZXIgc2l6ZSBp
biB1bml0cyBvZiBzYW1wbGUtZnJhbWVzLiBJZiBpdCdzIG5vdCBwYXNzZWQgaW4sCisgICAgLy8g
b3IgaWYgdGhlIHZhbHVlIGlzIDAsIHRoZW4gdGhlIGltcGxlbWVudGF0aW9uIHdpbGwgY2hvb3Nl
IHRoZSBiZXN0IGJ1ZmZlciBzaXplIGZvciB0aGUgZ2l2ZW4gZW52aXJvbm1lbnQsCisgICAgLy8g
d2hpY2ggd2lsbCBiZSBjb25zdGFudCBwb3dlciBvZiAyIHRocm91Z2hvdXQgdGhlIGxpZmV0aW1l
IG9mIHRoZSBub2RlLiAuLi4gSWYgdGhlIHZhbHVlIG9mIHRoaXMgcGFyYW1ldGVyCisgICAgLy8g
aXMgbm90IG9uZSBvZiB0aGUgYWxsb3dlZCBwb3dlci1vZi0yIHZhbHVlcyBsaXN0ZWQgYWJvdmUs
IGFuIEluZGV4U2l6ZUVycm9yIG11c3QgYmUgdGhyb3duLgorICAgIHN3aXRjaCAoYnVmZmVyU2l6
ZSkgeworICAgIGNhc2UgMDoKKyNpZiBVU0UoQVVESU9fU0VTU0lPTikKKyAgICAgICAgLy8gUGlj
ayBhIHZhbHVlIGJldHdlZW4gMjU2ICgyXjgpIGFuZCAxNjM4NCAoMl4xNCksIGJhc2VkIG9uIHRo
ZSBidWZmZXIgc2l6ZSBvZiB0aGUgY3VycmVudCBBdWRpb1Nlc3Npb246CisgICAgICAgIGJ1ZmZl
clNpemUgPSAxIDw8IHN0ZDo6bWF4PHNpemVfdD4oOCwgc3RkOjptaW48c2l6ZV90PigxNCwgc3Rk
Ojpsb2cyKEF1ZGlvU2Vzc2lvbjo6c2hhcmVkU2Vzc2lvbigpLmJ1ZmZlclNpemUoKSkpKTsKKyNl
bHNlCisgICAgICAgIGJ1ZmZlclNpemUgPSAyMDQ4OworI2VuZGlmCisgICAgICAgIGJyZWFrOwor
ICAgIGNhc2UgMjU2OgorICAgIGNhc2UgNTEyOgorICAgIGNhc2UgMTAyNDoKKyAgICBjYXNlIDIw
NDg6CisgICAgY2FzZSA0MDk2OgorICAgIGNhc2UgODE5MjoKKyAgICBjYXNlIDE2Mzg0OgorICAg
ICAgICBicmVhazsKKyAgICBkZWZhdWx0OgorICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgSW5k
ZXhTaXplRXJyb3IgfTsKKyAgICB9CisKKyAgICAvLyBBbiBJbmRleFNpemVFcnJvciBleGNlcHRp
b24gbXVzdCBiZSB0aHJvd24gaWYgYnVmZmVyU2l6ZSBvciBudW1iZXJPZklucHV0Q2hhbm5lbHMg
b3IgbnVtYmVyT2ZPdXRwdXRDaGFubmVscworICAgIC8vIGFyZSBvdXRzaWRlIHRoZSB2YWxpZCBy
YW5nZS4gSXQgaXMgaW52YWxpZCBmb3IgYm90aCBudW1iZXJPZklucHV0Q2hhbm5lbHMgYW5kIG51
bWJlck9mT3V0cHV0Q2hhbm5lbHMgdG8gYmUgemVyby4KKyAgICAvLyBJbiB0aGlzIGNhc2UgYW4g
SW5kZXhTaXplRXJyb3IgbXVzdCBiZSB0aHJvd24uCisKKyAgICBpZiAoIW51bWJlck9mSW5wdXRD
aGFubmVscyAmJiAhbnVtYmVyT2ZPdXRwdXRDaGFubmVscykKKyAgICAgICAgcmV0dXJuIEV4Y2Vw
dGlvbiB7IE5vdFN1cHBvcnRlZEVycm9yIH07CisKKyAgICAvLyBUaGlzIHBhcmFtZXRlciBbbnVt
YmVyT2ZJbnB1dENoYW5uZWxzXSBkZXRlcm1pbmVzIHRoZSBudW1iZXIgb2YgY2hhbm5lbHMgZm9y
IHRoaXMgbm9kZSdzIGlucHV0LiBWYWx1ZXMgb2YKKyAgICAvLyB1cCB0byAzMiBtdXN0IGJlIHN1
cHBvcnRlZC4gQSBOb3RTdXBwb3J0ZWRFcnJvciBtdXN0IGJlIHRocm93biBpZiB0aGUgbnVtYmVy
IG9mIGNoYW5uZWxzIGlzIG5vdCBzdXBwb3J0ZWQuCisKKyAgICBpZiAobnVtYmVyT2ZJbnB1dENo
YW5uZWxzID4gbWF4TnVtYmVyT2ZDaGFubmVscygpKQorICAgICAgICByZXR1cm4gRXhjZXB0aW9u
IHsgTm90U3VwcG9ydGVkRXJyb3IgfTsKKworICAgIC8vIFRoaXMgcGFyYW1ldGVyIFtudW1iZXJP
Zk91dHB1dENoYW5uZWxzXSBkZXRlcm1pbmVzIHRoZSBudW1iZXIgb2YgY2hhbm5lbHMgZm9yIHRo
aXMgbm9kZSdzIG91dHB1dC4gVmFsdWVzIG9mCisgICAgLy8gdXAgdG8gMzIgbXVzdCBiZSBzdXBw
b3J0ZWQuIEEgTm90U3VwcG9ydGVkRXJyb3IgbXVzdCBiZSB0aHJvd24gaWYgdGhlIG51bWJlciBv
ZiBjaGFubmVscyBpcyBub3Qgc3VwcG9ydGVkLgorCisgICAgaWYgKG51bWJlck9mT3V0cHV0Q2hh
bm5lbHMgPiBtYXhOdW1iZXJPZkNoYW5uZWxzKCkpCisgICAgICAgIHJldHVybiBFeGNlcHRpb24g
eyBOb3RTdXBwb3J0ZWRFcnJvciB9OworCisgICAgYXV0byBub2RlID0gU2NyaXB0UHJvY2Vzc29y
Tm9kZTo6Y3JlYXRlKCp0aGlzLCBzYW1wbGVSYXRlKCksIGJ1ZmZlclNpemUsIG51bWJlck9mSW5w
dXRDaGFubmVscywgbnVtYmVyT2ZPdXRwdXRDaGFubmVscyk7CisKKyAgICByZWZOb2RlKG5vZGUp
OyAvLyBjb250ZXh0IGtlZXBzIHJlZmVyZW5jZSB1bnRpbCB3ZSBzdG9wIG1ha2luZyBqYXZhc2Ny
aXB0IHJlbmRlcmluZyBjYWxsYmFja3MKKyAgICByZXR1cm4gbm9kZTsKK30KKworRXhjZXB0aW9u
T3I8UmVmPEJpcXVhZEZpbHRlck5vZGU+PiBXZWJLaXRBdWRpb0NvbnRleHQ6OmNyZWF0ZUJpcXVh
ZEZpbHRlcigpCit7CisgICAgQUxXQVlTX0xPRyhMT0dJREVOVElGSUVSKTsKKworICAgIEFTU0VS
VChpc01haW5UaHJlYWQoKSk7CisgICAgaWYgKG1faXNTdG9wU2NoZWR1bGVkKQorICAgICAgICBy
ZXR1cm4gRXhjZXB0aW9uIHsgSW52YWxpZFN0YXRlRXJyb3IgfTsKKworICAgIGxhenlJbml0aWFs
aXplKCk7CisKKyAgICByZXR1cm4gQmlxdWFkRmlsdGVyTm9kZTo6Y3JlYXRlKCp0aGlzLCBzYW1w
bGVSYXRlKCkpOworfQorCitFeGNlcHRpb25PcjxSZWY8V2F2ZVNoYXBlck5vZGU+PiBXZWJLaXRB
dWRpb0NvbnRleHQ6OmNyZWF0ZVdhdmVTaGFwZXIoKQoreworICAgIEFMV0FZU19MT0coTE9HSURF
TlRJRklFUik7CisKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAgIGlmIChtX2lzU3Rv
cFNjaGVkdWxlZCkKKyAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IEludmFsaWRTdGF0ZUVycm9y
IH07CisKKyAgICBsYXp5SW5pdGlhbGl6ZSgpOworICAgIHJldHVybiBXYXZlU2hhcGVyTm9kZTo6
Y3JlYXRlKCp0aGlzKTsKK30KKworRXhjZXB0aW9uT3I8UmVmPFdlYktpdEF1ZGlvUGFubmVyTm9k
ZT4+IFdlYktpdEF1ZGlvQ29udGV4dDo6Y3JlYXRlUGFubmVyKCkKK3sKKyAgICBBTFdBWVNfTE9H
KExPR0lERU5USUZJRVIpOworCisgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKyAgICBpZiAo
bV9pc1N0b3BTY2hlZHVsZWQpCisgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBJbnZhbGlkU3Rh
dGVFcnJvciB9OworCisgICAgbGF6eUluaXRpYWxpemUoKTsKKyAgICByZXR1cm4gV2ViS2l0QXVk
aW9QYW5uZXJOb2RlOjpjcmVhdGUoKnRoaXMsIHNhbXBsZVJhdGUoKSk7Cit9CisKK0V4Y2VwdGlv
bk9yPFJlZjxDb252b2x2ZXJOb2RlPj4gV2ViS2l0QXVkaW9Db250ZXh0OjpjcmVhdGVDb252b2x2
ZXIoKQoreworICAgIEFMV0FZU19MT0coTE9HSURFTlRJRklFUik7CisKKyAgICBBU1NFUlQoaXNN
YWluVGhyZWFkKCkpOworICAgIGlmIChtX2lzU3RvcFNjaGVkdWxlZCkKKyAgICAgICAgcmV0dXJu
IEV4Y2VwdGlvbiB7IEludmFsaWRTdGF0ZUVycm9yIH07CisKKyAgICBsYXp5SW5pdGlhbGl6ZSgp
OworICAgIHJldHVybiBDb252b2x2ZXJOb2RlOjpjcmVhdGUoKnRoaXMsIHNhbXBsZVJhdGUoKSk7
Cit9CisKK0V4Y2VwdGlvbk9yPFJlZjxEeW5hbWljc0NvbXByZXNzb3JOb2RlPj4gV2ViS2l0QXVk
aW9Db250ZXh0OjpjcmVhdGVEeW5hbWljc0NvbXByZXNzb3IoKQoreworICAgIEFMV0FZU19MT0co
TE9HSURFTlRJRklFUik7CisKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAgIGlmICht
X2lzU3RvcFNjaGVkdWxlZCkKKyAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IEludmFsaWRTdGF0
ZUVycm9yIH07CisKKyAgICBsYXp5SW5pdGlhbGl6ZSgpOworICAgIHJldHVybiBEeW5hbWljc0Nv
bXByZXNzb3JOb2RlOjpjcmVhdGUoKnRoaXMsIHNhbXBsZVJhdGUoKSk7Cit9CisKK0V4Y2VwdGlv
bk9yPFJlZjxBbmFseXNlck5vZGU+PiBXZWJLaXRBdWRpb0NvbnRleHQ6OmNyZWF0ZUFuYWx5c2Vy
KCkKK3sKKyAgICBBTFdBWVNfTE9HKExPR0lERU5USUZJRVIpOworCisgICAgQVNTRVJUKGlzTWFp
blRocmVhZCgpKTsKKyAgICBpZiAobV9pc1N0b3BTY2hlZHVsZWQpCisgICAgICAgIHJldHVybiBF
eGNlcHRpb24geyBJbnZhbGlkU3RhdGVFcnJvciB9OworCisgICAgbGF6eUluaXRpYWxpemUoKTsK
KyAgICByZXR1cm4gQW5hbHlzZXJOb2RlOjpjcmVhdGUoKnRoaXMsIHNhbXBsZVJhdGUoKSk7Cit9
CisKK0V4Y2VwdGlvbk9yPFJlZjxHYWluTm9kZT4+IFdlYktpdEF1ZGlvQ29udGV4dDo6Y3JlYXRl
R2FpbigpCit7CisgICAgQUxXQVlTX0xPRyhMT0dJREVOVElGSUVSKTsKKworICAgIEFTU0VSVChp
c01haW5UaHJlYWQoKSk7CisgICAgaWYgKG1faXNTdG9wU2NoZWR1bGVkKQorICAgICAgICByZXR1
cm4gRXhjZXB0aW9uIHsgSW52YWxpZFN0YXRlRXJyb3IgfTsKKworICAgIGxhenlJbml0aWFsaXpl
KCk7CisgICAgcmV0dXJuIEdhaW5Ob2RlOjpjcmVhdGUoKnRoaXMsIHNhbXBsZVJhdGUoKSk7Cit9
CisKK0V4Y2VwdGlvbk9yPFJlZjxEZWxheU5vZGU+PiBXZWJLaXRBdWRpb0NvbnRleHQ6OmNyZWF0
ZURlbGF5KGRvdWJsZSBtYXhEZWxheVRpbWUpCit7CisgICAgQUxXQVlTX0xPRyhMT0dJREVOVElG
SUVSKTsKKworICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisgICAgaWYgKG1faXNTdG9wU2No
ZWR1bGVkKQorICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgSW52YWxpZFN0YXRlRXJyb3IgfTsK
KworICAgIGxhenlJbml0aWFsaXplKCk7CisgICAgcmV0dXJuIERlbGF5Tm9kZTo6Y3JlYXRlKCp0
aGlzLCBzYW1wbGVSYXRlKCksIG1heERlbGF5VGltZSk7Cit9CisKK0V4Y2VwdGlvbk9yPFJlZjxD
aGFubmVsU3BsaXR0ZXJOb2RlPj4gV2ViS2l0QXVkaW9Db250ZXh0OjpjcmVhdGVDaGFubmVsU3Bs
aXR0ZXIoc2l6ZV90IG51bWJlck9mT3V0cHV0cykKK3sKKyAgICBBTFdBWVNfTE9HKExPR0lERU5U
SUZJRVIpOworCisgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKyAgICBpZiAobV9pc1N0b3BT
Y2hlZHVsZWQpCisgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBJbnZhbGlkU3RhdGVFcnJvciB9
OworCisgICAgbGF6eUluaXRpYWxpemUoKTsKKyAgICBhdXRvIG5vZGUgPSBDaGFubmVsU3BsaXR0
ZXJOb2RlOjpjcmVhdGUoKnRoaXMsIHNhbXBsZVJhdGUoKSwgbnVtYmVyT2ZPdXRwdXRzKTsKKyAg
ICBpZiAoIW5vZGUpCisgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBJbmRleFNpemVFcnJvciB9
OworICAgIHJldHVybiBub2RlLnJlbGVhc2VOb25OdWxsKCk7Cit9CisKK0V4Y2VwdGlvbk9yPFJl
ZjxDaGFubmVsTWVyZ2VyTm9kZT4+IFdlYktpdEF1ZGlvQ29udGV4dDo6Y3JlYXRlQ2hhbm5lbE1l
cmdlcihzaXplX3QgbnVtYmVyT2ZJbnB1dHMpCit7CisgICAgQUxXQVlTX0xPRyhMT0dJREVOVElG
SUVSKTsKKworICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisgICAgaWYgKG1faXNTdG9wU2No
ZWR1bGVkKQorICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgSW52YWxpZFN0YXRlRXJyb3IgfTsK
KworICAgIGxhenlJbml0aWFsaXplKCk7CisgICAgYXV0byBub2RlID0gQ2hhbm5lbE1lcmdlck5v
ZGU6OmNyZWF0ZSgqdGhpcywgc2FtcGxlUmF0ZSgpLCBudW1iZXJPZklucHV0cyk7CisgICAgaWYg
KCFub2RlKQorICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgSW5kZXhTaXplRXJyb3IgfTsKKyAg
ICByZXR1cm4gbm9kZS5yZWxlYXNlTm9uTnVsbCgpOworfQorCitFeGNlcHRpb25PcjxSZWY8T3Nj
aWxsYXRvck5vZGU+PiBXZWJLaXRBdWRpb0NvbnRleHQ6OmNyZWF0ZU9zY2lsbGF0b3IoKQorewor
ICAgIEFMV0FZU19MT0coTE9HSURFTlRJRklFUik7CisKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFk
KCkpOworICAgIGlmIChtX2lzU3RvcFNjaGVkdWxlZCkKKyAgICAgICAgcmV0dXJuIEV4Y2VwdGlv
biB7IEludmFsaWRTdGF0ZUVycm9yIH07CisKKyAgICBsYXp5SW5pdGlhbGl6ZSgpOworCisgICAg
UmVmPE9zY2lsbGF0b3JOb2RlPiBub2RlID0gT3NjaWxsYXRvck5vZGU6OmNyZWF0ZSgqdGhpcywg
c2FtcGxlUmF0ZSgpKTsKKworICAgIC8vIEJlY2F1c2UgdGhpcyBpcyBhbiBBdWRpb1NjaGVkdWxl
ZFNvdXJjZU5vZGUsIHRoZSBjb250ZXh0IGtlZXBzIGEgcmVmZXJlbmNlIHVudGlsIGl0IGhhcyBm
aW5pc2hlZCBwbGF5aW5nLgorICAgIC8vIFdoZW4gdGhpcyBoYXBwZW5zLCBBdWRpb1NjaGVkdWxl
ZFNvdXJjZU5vZGU6OmZpbmlzaCgpIGNhbGxzIFdlYktpdEF1ZGlvQ29udGV4dDo6bm90aWZ5Tm9k
ZUZpbmlzaGVkUHJvY2Vzc2luZygpLgorICAgIHJlZk5vZGUobm9kZSk7CisKKyAgICByZXR1cm4g
bm9kZTsKK30KKworRXhjZXB0aW9uT3I8UmVmPFBlcmlvZGljV2F2ZT4+IFdlYktpdEF1ZGlvQ29u
dGV4dDo6Y3JlYXRlUGVyaW9kaWNXYXZlKEZsb2F0MzJBcnJheSYgcmVhbCwgRmxvYXQzMkFycmF5
JiBpbWFnaW5hcnkpCit7CisgICAgQUxXQVlTX0xPRyhMT0dJREVOVElGSUVSKTsKKworICAgIEFT
U0VSVChpc01haW5UaHJlYWQoKSk7CisgICAgaWYgKG1faXNTdG9wU2NoZWR1bGVkKQorICAgICAg
ICByZXR1cm4gRXhjZXB0aW9uIHsgSW52YWxpZFN0YXRlRXJyb3IgfTsKKworICAgIGlmIChyZWFs
Lmxlbmd0aCgpICE9IGltYWdpbmFyeS5sZW5ndGgoKSB8fCAocmVhbC5sZW5ndGgoKSA+IE1heFBl
cmlvZGljV2F2ZUxlbmd0aCkgfHwgIXJlYWwubGVuZ3RoKCkpCisgICAgICAgIHJldHVybiBFeGNl
cHRpb24geyBJbmRleFNpemVFcnJvciB9OworICAgIGxhenlJbml0aWFsaXplKCk7CisgICAgcmV0
dXJuIFBlcmlvZGljV2F2ZTo6Y3JlYXRlKHNhbXBsZVJhdGUoKSwgcmVhbCwgaW1hZ2luYXJ5KTsK
K30KKwordm9pZCBXZWJLaXRBdWRpb0NvbnRleHQ6Om5vdGlmeU5vZGVGaW5pc2hlZFByb2Nlc3Np
bmcoQXVkaW9Ob2RlKiBub2RlKQoreworICAgIEFTU0VSVChpc0F1ZGlvVGhyZWFkKCkpOworICAg
IG1fZmluaXNoZWROb2Rlcy5hcHBlbmQobm9kZSk7Cit9CisKK3ZvaWQgV2ViS2l0QXVkaW9Db250
ZXh0OjpkZXJlZkZpbmlzaGVkU291cmNlTm9kZXMoKQoreworICAgIEFTU0VSVChpc0dyYXBoT3du
ZXIoKSk7CisgICAgQVNTRVJUKGlzQXVkaW9UaHJlYWQoKSB8fCBpc0F1ZGlvVGhyZWFkRmluaXNo
ZWQoKSk7CisgICAgZm9yIChhdXRvJiBub2RlIDogbV9maW5pc2hlZE5vZGVzKQorICAgICAgICBk
ZXJlZk5vZGUoKm5vZGUpOworCisgICAgbV9maW5pc2hlZE5vZGVzLmNsZWFyKCk7Cit9CisKK3Zv
aWQgV2ViS2l0QXVkaW9Db250ZXh0OjpyZWZOb2RlKEF1ZGlvTm9kZSYgbm9kZSkKK3sKKyAgICBB
U1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAgIEF1dG9Mb2NrZXIgbG9ja2VyKCp0aGlzKTsKKwor
ICAgIG5vZGUucmVmKEF1ZGlvTm9kZTo6UmVmVHlwZUNvbm5lY3Rpb24pOworICAgIG1fcmVmZXJl
bmNlZE5vZGVzLmFwcGVuZCgmbm9kZSk7Cit9CisKK3ZvaWQgV2ViS2l0QXVkaW9Db250ZXh0Ojpk
ZXJlZk5vZGUoQXVkaW9Ob2RlJiBub2RlKQoreworICAgIEFTU0VSVChpc0dyYXBoT3duZXIoKSk7
CisKKyAgICBub2RlLmRlcmVmKEF1ZGlvTm9kZTo6UmVmVHlwZUNvbm5lY3Rpb24pOworCisgICAg
QVNTRVJUKG1fcmVmZXJlbmNlZE5vZGVzLmNvbnRhaW5zKCZub2RlKSk7CisgICAgbV9yZWZlcmVu
Y2VkTm9kZXMucmVtb3ZlRmlyc3QoJm5vZGUpOworfQorCit2b2lkIFdlYktpdEF1ZGlvQ29udGV4
dDo6ZGVyZWZVbmZpbmlzaGVkU291cmNlTm9kZXMoKQoreworICAgIEFTU0VSVChpc01haW5UaHJl
YWQoKSAmJiBpc0F1ZGlvVGhyZWFkRmluaXNoZWQoKSk7CisgICAgZm9yIChhdXRvJiBub2RlIDog
bV9yZWZlcmVuY2VkTm9kZXMpCisgICAgICAgIG5vZGUtPmRlcmVmKEF1ZGlvTm9kZTo6UmVmVHlw
ZUNvbm5lY3Rpb24pOworCisgICAgbV9yZWZlcmVuY2VkTm9kZXMuY2xlYXIoKTsKK30KKwordm9p
ZCBXZWJLaXRBdWRpb0NvbnRleHQ6OmxvY2soYm9vbCYgbXVzdFJlbGVhc2VMb2NrKQoreworICAg
IC8vIERvbid0IGFsbG93IHJlZ3VsYXIgbG9jayBpbiByZWFsLXRpbWUgYXVkaW8gdGhyZWFkLgor
ICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisKKyAgICBUaHJlYWQmIHRoaXNUaHJlYWQgPSBU
aHJlYWQ6OmN1cnJlbnQoKTsKKworICAgIGlmICgmdGhpc1RocmVhZCA9PSBtX2dyYXBoT3duZXJU
aHJlYWQpIHsKKyAgICAgICAgLy8gV2UgYWxyZWFkeSBoYXZlIHRoZSBsb2NrLgorICAgICAgICBt
dXN0UmVsZWFzZUxvY2sgPSBmYWxzZTsKKyAgICB9IGVsc2UgeworICAgICAgICAvLyBBY3F1aXJl
IHRoZSBsb2NrLgorICAgICAgICBtX2NvbnRleHRHcmFwaE11dGV4LmxvY2soKTsKKyAgICAgICAg
bV9ncmFwaE93bmVyVGhyZWFkID0gJnRoaXNUaHJlYWQ7CisgICAgICAgIG11c3RSZWxlYXNlTG9j
ayA9IHRydWU7CisgICAgfQorfQorCitib29sIFdlYktpdEF1ZGlvQ29udGV4dDo6dHJ5TG9jayhi
b29sJiBtdXN0UmVsZWFzZUxvY2spCit7CisgICAgVGhyZWFkJiB0aGlzVGhyZWFkID0gVGhyZWFk
OjpjdXJyZW50KCk7CisgICAgYm9vbCBpc0F1ZGlvVGhyZWFkID0gJnRoaXNUaHJlYWQgPT0gYXVk
aW9UaHJlYWQoKTsKKworICAgIC8vIFRyeSB0byBjYXRjaCBjYXNlcyBvZiB1c2luZyB0cnkgbG9j
ayBvbiBtYWluIHRocmVhZCAtIGl0IHNob3VsZCB1c2UgcmVndWxhciBsb2NrLgorICAgIEFTU0VS
VChpc0F1ZGlvVGhyZWFkIHx8IGlzQXVkaW9UaHJlYWRGaW5pc2hlZCgpKTsKKworICAgIGlmICgh
aXNBdWRpb1RocmVhZCkgeworICAgICAgICAvLyBJbiByZWxlYXNlIGJ1aWxkIHRyZWF0IHRyeUxv
Y2soKSBhcyBsb2NrKCkgKHNpbmNlIGFib3ZlIEFTU0VSVChpc0F1ZGlvVGhyZWFkKSBuZXZlciBm
aXJlcykgLSB0aGlzIGlzIHRoZSBiZXN0IHdlIGNhbiBkby4KKyAgICAgICAgbG9jayhtdXN0UmVs
ZWFzZUxvY2spOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisKKyAgICBib29sIGhhc0xv
Y2s7CisKKyAgICBpZiAoJnRoaXNUaHJlYWQgPT0gbV9ncmFwaE93bmVyVGhyZWFkKSB7CisgICAg
ICAgIC8vIFRocmVhZCBhbHJlYWR5IGhhcyB0aGUgbG9jay4KKyAgICAgICAgaGFzTG9jayA9IHRy
dWU7CisgICAgICAgIG11c3RSZWxlYXNlTG9jayA9IGZhbHNlOworICAgIH0gZWxzZSB7CisgICAg
ICAgIC8vIERvbid0IGFscmVhZHkgaGF2ZSB0aGUgbG9jayAtIHRyeSB0byBhY3F1aXJlIGl0Lgor
ICAgICAgICBoYXNMb2NrID0gbV9jb250ZXh0R3JhcGhNdXRleC50cnlMb2NrKCk7CisKKyAgICAg
ICAgaWYgKGhhc0xvY2spCisgICAgICAgICAgICBtX2dyYXBoT3duZXJUaHJlYWQgPSAmdGhpc1Ro
cmVhZDsKKworICAgICAgICBtdXN0UmVsZWFzZUxvY2sgPSBoYXNMb2NrOworICAgIH0KKworICAg
IHJldHVybiBoYXNMb2NrOworfQorCit2b2lkIFdlYktpdEF1ZGlvQ29udGV4dDo6dW5sb2NrKCkK
K3sKKyAgICBBU1NFUlQobV9ncmFwaE93bmVyVGhyZWFkID09ICZUaHJlYWQ6OmN1cnJlbnQoKSk7
CisKKyAgICBtX2dyYXBoT3duZXJUaHJlYWQgPSBudWxscHRyOworICAgIG1fY29udGV4dEdyYXBo
TXV0ZXgudW5sb2NrKCk7Cit9CisKK2Jvb2wgV2ViS2l0QXVkaW9Db250ZXh0Ojppc0F1ZGlvVGhy
ZWFkKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9hdWRpb1RocmVhZCA9PSAmVGhyZWFkOjpjdXJy
ZW50KCk7Cit9CisKK2Jvb2wgV2ViS2l0QXVkaW9Db250ZXh0Ojppc0dyYXBoT3duZXIoKSBjb25z
dAoreworICAgIHJldHVybiBtX2dyYXBoT3duZXJUaHJlYWQgPT0gJlRocmVhZDo6Y3VycmVudCgp
OworfQorCit2b2lkIFdlYktpdEF1ZGlvQ29udGV4dDo6YWRkRGVmZXJyZWRGaW5pc2hEZXJlZihB
dWRpb05vZGUqIG5vZGUpCit7CisgICAgQVNTRVJUKGlzQXVkaW9UaHJlYWQoKSk7CisgICAgbV9k
ZWZlcnJlZEZpbmlzaERlcmVmTGlzdC5hcHBlbmQobm9kZSk7Cit9CisKK3ZvaWQgV2ViS2l0QXVk
aW9Db250ZXh0OjpoYW5kbGVQcmVSZW5kZXJUYXNrcygpCit7CisgICAgQVNTRVJUKGlzQXVkaW9U
aHJlYWQoKSk7CisKKyAgICAvLyBBdCB0aGUgYmVnaW5uaW5nIG9mIGV2ZXJ5IHJlbmRlciBxdWFu
dHVtLCB0cnkgdG8gdXBkYXRlIHRoZSBpbnRlcm5hbCByZW5kZXJpbmcgZ3JhcGggc3RhdGUgKGZy
b20gbWFpbiB0aHJlYWQgY2hhbmdlcykuCisgICAgLy8gSXQncyBPSyBpZiB0aGUgdHJ5TG9jaygp
IGZhaWxzLCB3ZSdsbCBqdXN0IHRha2Ugc2xpZ2h0bHkgbG9uZ2VyIHRvIHBpY2sgdXAgdGhlIGNo
YW5nZXMuCisgICAgYm9vbCBtdXN0UmVsZWFzZUxvY2s7CisgICAgaWYgKHRyeUxvY2sobXVzdFJl
bGVhc2VMb2NrKSkgeworICAgICAgICAvLyBGaXh1cCB0aGUgc3RhdGUgb2YgYW55IGRpcnR5IEF1
ZGlvU3VtbWluZ0p1bmN0aW9ucyBhbmQgQXVkaW9Ob2RlT3V0cHV0cy4KKyAgICAgICAgaGFuZGxl
RGlydHlBdWRpb1N1bW1pbmdKdW5jdGlvbnMoKTsKKyAgICAgICAgaGFuZGxlRGlydHlBdWRpb05v
ZGVPdXRwdXRzKCk7CisKKyAgICAgICAgdXBkYXRlQXV0b21hdGljUHVsbE5vZGVzKCk7CisKKyAg
ICAgICAgaWYgKG11c3RSZWxlYXNlTG9jaykKKyAgICAgICAgICAgIHVubG9jaygpOworICAgIH0K
K30KKwordm9pZCBXZWJLaXRBdWRpb0NvbnRleHQ6OmhhbmRsZVBvc3RSZW5kZXJUYXNrcygpCit7
CisgICAgQVNTRVJUKGlzQXVkaW9UaHJlYWQoKSk7CisKKyAgICAvLyBNdXN0IHVzZSBhIHRyeUxv
Y2soKSBoZXJlIHRvby4gRG9uJ3Qgd29ycnksIHRoZSBsb2NrIHdpbGwgdmVyeSByYXJlbHkgYmUg
Y29udGVuZGVkIGFuZCB0aGlzIG1ldGhvZCBpcyBjYWxsZWQgZnJlcXVlbnRseS4KKyAgICAvLyBU
aGUgd29yc3QgdGhhdCBjYW4gaGFwcGVuIGlzIHRoYXQgdGhlcmUgd2lsbCBiZSBzb21lIG5vZGVz
IHdoaWNoIHdpbGwgdGFrZSBzbGlnaHRseSBsb25nZXIgdGhhbiB1c3VhbCB0byBiZSBkZWxldGVk
IG9yIHJlbW92ZWQKKyAgICAvLyBmcm9tIHRoZSByZW5kZXIgZ3JhcGggKGluIHdoaWNoIGNhc2Ug
dGhleSdsbCByZW5kZXIgc2lsZW5jZSkuCisgICAgYm9vbCBtdXN0UmVsZWFzZUxvY2s7CisgICAg
aWYgKHRyeUxvY2sobXVzdFJlbGVhc2VMb2NrKSkgeworICAgICAgICAvLyBUYWtlIGNhcmUgb2Yg
ZmluaXNoaW5nIGFueSBkZXJlZnMgd2hlcmUgdGhlIHRyeUxvY2soKSBmYWlsZWQgcHJldmlvdXNs
eS4KKyAgICAgICAgaGFuZGxlRGVmZXJyZWRGaW5pc2hEZXJlZnMoKTsKKworICAgICAgICAvLyBE
eW5hbWljYWxseSBjbGVhbiB1cCBub2RlcyB3aGljaCBhcmUgbm8gbG9uZ2VyIG5lZWRlZC4KKyAg
ICAgICAgZGVyZWZGaW5pc2hlZFNvdXJjZU5vZGVzKCk7CisKKyAgICAgICAgLy8gRG9uJ3QgZGVs
ZXRlIGluIHRoZSByZWFsLXRpbWUgdGhyZWFkLiBMZXQgdGhlIG1haW4gdGhyZWFkIGRvIGl0Lgor
ICAgICAgICAvLyBSZWYtY291bnRlZCBvYmplY3RzIGhlbGQgYnkgY2VydGFpbiBBdWRpb05vZGVz
IG1heSBub3QgYmUgdGhyZWFkLXNhZmUuCisgICAgICAgIHNjaGVkdWxlTm9kZURlbGV0aW9uKCk7
CisKKyAgICAgICAgLy8gRml4dXAgdGhlIHN0YXRlIG9mIGFueSBkaXJ0eSBBdWRpb1N1bW1pbmdK
dW5jdGlvbnMgYW5kIEF1ZGlvTm9kZU91dHB1dHMuCisgICAgICAgIGhhbmRsZURpcnR5QXVkaW9T
dW1taW5nSnVuY3Rpb25zKCk7CisgICAgICAgIGhhbmRsZURpcnR5QXVkaW9Ob2RlT3V0cHV0cygp
OworCisgICAgICAgIHVwZGF0ZUF1dG9tYXRpY1B1bGxOb2RlcygpOworCisgICAgICAgIGlmICht
dXN0UmVsZWFzZUxvY2spCisgICAgICAgICAgICB1bmxvY2soKTsKKyAgICB9Cit9CisKK3ZvaWQg
V2ViS2l0QXVkaW9Db250ZXh0OjpoYW5kbGVEZWZlcnJlZEZpbmlzaERlcmVmcygpCit7CisgICAg
QVNTRVJUKGlzQXVkaW9UaHJlYWQoKSAmJiBpc0dyYXBoT3duZXIoKSk7CisgICAgZm9yIChhdXRv
JiBub2RlIDogbV9kZWZlcnJlZEZpbmlzaERlcmVmTGlzdCkKKyAgICAgICAgbm9kZS0+ZmluaXNo
RGVyZWYoQXVkaW9Ob2RlOjpSZWZUeXBlQ29ubmVjdGlvbik7CisKKyAgICBtX2RlZmVycmVkRmlu
aXNoRGVyZWZMaXN0LmNsZWFyKCk7Cit9CisKK3ZvaWQgV2ViS2l0QXVkaW9Db250ZXh0OjptYXJr
Rm9yRGVsZXRpb24oQXVkaW9Ob2RlJiBub2RlKQoreworICAgIEFTU0VSVChpc0dyYXBoT3duZXIo
KSk7CisKKyAgICBpZiAoaXNBdWRpb1RocmVhZEZpbmlzaGVkKCkpCisgICAgICAgIG1fbm9kZXNU
b0RlbGV0ZS5hcHBlbmQoJm5vZGUpOworICAgIGVsc2UKKyAgICAgICAgbV9ub2Rlc01hcmtlZEZv
ckRlbGV0aW9uLmFwcGVuZCgmbm9kZSk7CisKKyAgICAvLyBUaGlzIGlzIHByb2JhYmx5IHRoZSBi
ZXN0IHRpbWUgZm9yIHVzIHRvIHJlbW92ZSB0aGUgbm9kZSBmcm9tIGF1dG9tYXRpYyBwdWxsIGxp
c3QsCisgICAgLy8gc2luY2UgYWxsIGNvbm5lY3Rpb25zIGFyZSBnb25lIGFuZCB3ZSBob2xkIHRo
ZSBncmFwaCBsb2NrLiBUaGVuIHdoZW4gaGFuZGxlUG9zdFJlbmRlclRhc2tzKCkKKyAgICAvLyBn
ZXRzIGEgY2hhbmNlIHRvIHNjaGVkdWxlIHRoZSBkZWxldGlvbiB3b3JrLCB1cGRhdGVBdXRvbWF0
aWNQdWxsTm9kZXMoKSBhbHNvIGdldHMgYSBjaGFuY2UgdG8KKyAgICAvLyBtb2RpZnkgbV9yZW5k
ZXJpbmdBdXRvbWF0aWNQdWxsTm9kZXMuCisgICAgcmVtb3ZlQXV0b21hdGljUHVsbE5vZGUobm9k
ZSk7Cit9CisKK3ZvaWQgV2ViS2l0QXVkaW9Db250ZXh0OjpzY2hlZHVsZU5vZGVEZWxldGlvbigp
Cit7CisgICAgYm9vbCBpc0dvb2QgPSBtX2lzSW5pdGlhbGl6ZWQgJiYgaXNHcmFwaE93bmVyKCk7
CisgICAgQVNTRVJUKGlzR29vZCk7CisgICAgaWYgKCFpc0dvb2QpCisgICAgICAgIHJldHVybjsK
KworICAgIC8vIE1ha2Ugc3VyZSB0byBjYWxsIGRlbGV0ZU1hcmtlZE5vZGVzKCkgb24gbWFpbiB0
aHJlYWQuCisgICAgaWYgKG1fbm9kZXNNYXJrZWRGb3JEZWxldGlvbi5zaXplKCkgJiYgIW1faXNE
ZWxldGlvblNjaGVkdWxlZCkgeworICAgICAgICBtX25vZGVzVG9EZWxldGUuYXBwZW5kVmVjdG9y
KG1fbm9kZXNNYXJrZWRGb3JEZWxldGlvbik7CisgICAgICAgIG1fbm9kZXNNYXJrZWRGb3JEZWxl
dGlvbi5jbGVhcigpOworCisgICAgICAgIG1faXNEZWxldGlvblNjaGVkdWxlZCA9IHRydWU7CisK
KyAgICAgICAgY2FsbE9uTWFpblRocmVhZChbcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMp
XSgpIG11dGFibGUgeworICAgICAgICAgICAgcHJvdGVjdGVkVGhpcy0+ZGVsZXRlTWFya2VkTm9k
ZXMoKTsKKyAgICAgICAgfSk7CisgICAgfQorfQorCit2b2lkIFdlYktpdEF1ZGlvQ29udGV4dDo6
ZGVsZXRlTWFya2VkTm9kZXMoKQoreworICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisKKyAg
ICAvLyBQcm90ZWN0IHRoaXMgb2JqZWN0IGZyb20gYmVpbmcgZGVsZXRlZCBiZWZvcmUgd2UgcmVs
ZWFzZSB0aGUgbXV0ZXggbG9ja2VkIGJ5IEF1dG9Mb2NrZXIuCisgICAgUmVmPFdlYktpdEF1ZGlv
Q29udGV4dD4gcHJvdGVjdGVkVGhpcygqdGhpcyk7CisgICAgeworICAgICAgICBBdXRvTG9ja2Vy
IGxvY2tlcigqdGhpcyk7CisKKyAgICAgICAgd2hpbGUgKG1fbm9kZXNUb0RlbGV0ZS5zaXplKCkp
IHsKKyAgICAgICAgICAgIEF1ZGlvTm9kZSogbm9kZSA9IG1fbm9kZXNUb0RlbGV0ZS50YWtlTGFz
dCgpOworCisgICAgICAgICAgICAvLyBCZWZvcmUgZGVsZXRpbmcgdGhlIG5vZGUsIGNsZWFyIG91
dCBhbnkgQXVkaW9Ob2RlSW5wdXRzIGZyb20gbV9kaXJ0eVN1bW1pbmdKdW5jdGlvbnMuCisgICAg
ICAgICAgICB1bnNpZ25lZCBudW1iZXJPZklucHV0cyA9IG5vZGUtPm51bWJlck9mSW5wdXRzKCk7
CisgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbnVtYmVyT2ZJbnB1dHM7ICsr
aSkKKyAgICAgICAgICAgICAgICBtX2RpcnR5U3VtbWluZ0p1bmN0aW9ucy5yZW1vdmUobm9kZS0+
aW5wdXQoaSkpOworCisgICAgICAgICAgICAvLyBCZWZvcmUgZGVsZXRpbmcgdGhlIG5vZGUsIGNs
ZWFyIG91dCBhbnkgQXVkaW9Ob2RlT3V0cHV0cyBmcm9tIG1fZGlydHlBdWRpb05vZGVPdXRwdXRz
LgorICAgICAgICAgICAgdW5zaWduZWQgbnVtYmVyT2ZPdXRwdXRzID0gbm9kZS0+bnVtYmVyT2ZP
dXRwdXRzKCk7CisgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbnVtYmVyT2ZP
dXRwdXRzOyArK2kpCisgICAgICAgICAgICAgICAgbV9kaXJ0eUF1ZGlvTm9kZU91dHB1dHMucmVt
b3ZlKG5vZGUtPm91dHB1dChpKSk7CisKKyAgICAgICAgICAgIC8vIEZpbmFsbHksIGRlbGV0ZSBp
dC4KKyAgICAgICAgICAgIGRlbGV0ZSBub2RlOworICAgICAgICB9CisgICAgICAgIG1faXNEZWxl
dGlvblNjaGVkdWxlZCA9IGZhbHNlOworICAgIH0KK30KKwordm9pZCBXZWJLaXRBdWRpb0NvbnRl
eHQ6Om1hcmtTdW1taW5nSnVuY3Rpb25EaXJ0eShBdWRpb1N1bW1pbmdKdW5jdGlvbiogc3VtbWlu
Z0p1bmN0aW9uKQoreworICAgIEFTU0VSVChpc0dyYXBoT3duZXIoKSk7CisgICAgbV9kaXJ0eVN1
bW1pbmdKdW5jdGlvbnMuYWRkKHN1bW1pbmdKdW5jdGlvbik7Cit9CisKK3ZvaWQgV2ViS2l0QXVk
aW9Db250ZXh0OjpyZW1vdmVNYXJrZWRTdW1taW5nSnVuY3Rpb24oQXVkaW9TdW1taW5nSnVuY3Rp
b24qIHN1bW1pbmdKdW5jdGlvbikKK3sKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAg
IEF1dG9Mb2NrZXIgbG9ja2VyKCp0aGlzKTsKKyAgICBtX2RpcnR5U3VtbWluZ0p1bmN0aW9ucy5y
ZW1vdmUoc3VtbWluZ0p1bmN0aW9uKTsKK30KKwordm9pZCBXZWJLaXRBdWRpb0NvbnRleHQ6Om1h
cmtBdWRpb05vZGVPdXRwdXREaXJ0eShBdWRpb05vZGVPdXRwdXQqIG91dHB1dCkKK3sKKyAgICBB
U1NFUlQoaXNHcmFwaE93bmVyKCkpOworICAgIG1fZGlydHlBdWRpb05vZGVPdXRwdXRzLmFkZChv
dXRwdXQpOworfQorCit2b2lkIFdlYktpdEF1ZGlvQ29udGV4dDo6aGFuZGxlRGlydHlBdWRpb1N1
bW1pbmdKdW5jdGlvbnMoKQoreworICAgIEFTU0VSVChpc0dyYXBoT3duZXIoKSk7CisKKyAgICBm
b3IgKGF1dG8mIGp1bmN0aW9uIDogbV9kaXJ0eVN1bW1pbmdKdW5jdGlvbnMpCisgICAgICAgIGp1
bmN0aW9uLT51cGRhdGVSZW5kZXJpbmdTdGF0ZSgpOworCisgICAgbV9kaXJ0eVN1bW1pbmdKdW5j
dGlvbnMuY2xlYXIoKTsKK30KKwordm9pZCBXZWJLaXRBdWRpb0NvbnRleHQ6OmhhbmRsZURpcnR5
QXVkaW9Ob2RlT3V0cHV0cygpCit7CisgICAgQVNTRVJUKGlzR3JhcGhPd25lcigpKTsKKworICAg
IGZvciAoYXV0byYgb3V0cHV0IDogbV9kaXJ0eUF1ZGlvTm9kZU91dHB1dHMpCisgICAgICAgIG91
dHB1dC0+dXBkYXRlUmVuZGVyaW5nU3RhdGUoKTsKKworICAgIG1fZGlydHlBdWRpb05vZGVPdXRw
dXRzLmNsZWFyKCk7Cit9CisKK3ZvaWQgV2ViS2l0QXVkaW9Db250ZXh0OjphZGRBdXRvbWF0aWNQ
dWxsTm9kZShBdWRpb05vZGUmIG5vZGUpCit7CisgICAgQVNTRVJUKGlzR3JhcGhPd25lcigpKTsK
KworICAgIGlmIChtX2F1dG9tYXRpY1B1bGxOb2Rlcy5hZGQoJm5vZGUpLmlzTmV3RW50cnkpCisg
ICAgICAgIG1fYXV0b21hdGljUHVsbE5vZGVzTmVlZFVwZGF0aW5nID0gdHJ1ZTsKK30KKwordm9p
ZCBXZWJLaXRBdWRpb0NvbnRleHQ6OnJlbW92ZUF1dG9tYXRpY1B1bGxOb2RlKEF1ZGlvTm9kZSYg
bm9kZSkKK3sKKyAgICBBU1NFUlQoaXNHcmFwaE93bmVyKCkpOworCisgICAgaWYgKG1fYXV0b21h
dGljUHVsbE5vZGVzLnJlbW92ZSgmbm9kZSkpCisgICAgICAgIG1fYXV0b21hdGljUHVsbE5vZGVz
TmVlZFVwZGF0aW5nID0gdHJ1ZTsKK30KKwordm9pZCBXZWJLaXRBdWRpb0NvbnRleHQ6OnVwZGF0
ZUF1dG9tYXRpY1B1bGxOb2RlcygpCit7CisgICAgQVNTRVJUKGlzR3JhcGhPd25lcigpKTsKKwor
ICAgIGlmIChtX2F1dG9tYXRpY1B1bGxOb2Rlc05lZWRVcGRhdGluZykgeworICAgICAgICAvLyBD
b3B5IGZyb20gbV9hdXRvbWF0aWNQdWxsTm9kZXMgdG8gbV9yZW5kZXJpbmdBdXRvbWF0aWNQdWxs
Tm9kZXMuCisgICAgICAgIG1fcmVuZGVyaW5nQXV0b21hdGljUHVsbE5vZGVzLnJlc2l6ZShtX2F1
dG9tYXRpY1B1bGxOb2Rlcy5zaXplKCkpOworCisgICAgICAgIHVuc2lnbmVkIGkgPSAwOworICAg
ICAgICBmb3IgKGF1dG8mIG91dHB1dCA6IG1fYXV0b21hdGljUHVsbE5vZGVzKQorICAgICAgICAg
ICAgbV9yZW5kZXJpbmdBdXRvbWF0aWNQdWxsTm9kZXNbaSsrXSA9IG91dHB1dDsKKworICAgICAg
ICBtX2F1dG9tYXRpY1B1bGxOb2Rlc05lZWRVcGRhdGluZyA9IGZhbHNlOworICAgIH0KK30KKwor
dm9pZCBXZWJLaXRBdWRpb0NvbnRleHQ6OnByb2Nlc3NBdXRvbWF0aWNQdWxsTm9kZXMoc2l6ZV90
IGZyYW1lc1RvUHJvY2VzcykKK3sKKyAgICBBU1NFUlQoaXNBdWRpb1RocmVhZCgpKTsKKworICAg
IGZvciAoYXV0byYgbm9kZSA6IG1fcmVuZGVyaW5nQXV0b21hdGljUHVsbE5vZGVzKQorICAgICAg
ICBub2RlLT5wcm9jZXNzSWZOZWNlc3NhcnkoZnJhbWVzVG9Qcm9jZXNzKTsKK30KKwordm9pZCBX
ZWJLaXRBdWRpb0NvbnRleHQ6Om5vZGVXaWxsQmVnaW5QbGF5YmFjaygpCit7CisgICAgLy8gQ2Fs
bGVkIGJ5IHNjaGVkdWxlZCBBdWRpb05vZGVzIHdoZW4gY2xpZW50cyBzY2hlZHVsZSB0aGVpciBz
dGFydCB0aW1lcy4KKyAgICAvLyBQcmlvciB0byB0aGUgaW50cm9kdWN0aW9uIG9mIHN1c3BlbmQo
KSwgcmVzdW1lKCksIGFuZCBzdG9wKCksIHN0YXJ0aW5nCisgICAgLy8gYSBzY2hlZHVsZWQgQXVk
aW9Ob2RlIHdvdWxkIHJlbW92ZSB0aGUgdXNlci1nZXN0dXJlIHJlc3RyaWN0aW9uLCBpZiBwcmVz
ZW50LAorICAgIC8vIGFuZCB3b3VsZCB0aHVzIHVubXV0ZSB0aGUgY29udGV4dC4gTm93IHRoYXQg
QXVkaW9Db250ZXh0IHN0YXlzIGluIHRoZQorICAgIC8vICJzdXNwZW5kZWQiIHN0YXRlIGlmIGEg
dXNlci1nZXN0dXJlIHJlc3RyaWN0aW9uIGlzIHByZXNlbnQsIHN0YXJ0aW5nIGEKKyAgICAvLyBz
Y2hlZHVsZSBBdWRpb05vZGUgc2hvdWxkIHNldCB0aGUgc3RhdGUgdG8gInJ1bm5pbmciLCBidXQg
b25seSBpZiB0aGUKKyAgICAvLyB1c2VyLWdlc3R1cmUgcmVzdHJpY3Rpb24gaXMgc2V0LgorICAg
IGlmICh1c2VyR2VzdHVyZVJlcXVpcmVkRm9yQXVkaW9TdGFydCgpKQorICAgICAgICBzdGFydFJl
bmRlcmluZygpOworfQorCitzdGF0aWMgYm9vbCBzaG91bGREb2N1bWVudEFsbG93V2ViQXVkaW9U
b0F1dG9QbGF5KGNvbnN0IERvY3VtZW50JiBkb2N1bWVudCkKK3sKKyAgICBpZiAoZG9jdW1lbnQu
cHJvY2Vzc2luZ1VzZXJHZXN0dXJlRm9yTWVkaWEoKSB8fCBkb2N1bWVudC5pc0NhcHR1cmluZygp
KQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICByZXR1cm4gZG9jdW1lbnQucXVpcmtzKCkuc2hv
dWxkQXV0b3BsYXlXZWJBdWRpb0ZvckFyYml0cmFyeVVzZXJHZXN0dXJlKCkgJiYgZG9jdW1lbnQu
dG9wRG9jdW1lbnQoKS5oYXNIYWRVc2VySW50ZXJhY3Rpb24oKTsKK30KKworYm9vbCBXZWJLaXRB
dWRpb0NvbnRleHQ6OndpbGxCZWdpblBsYXliYWNrKCkKK3sKKyAgICBhdXRvKiBkb2N1bWVudCA9
IHRoaXMtPmRvY3VtZW50KCk7CisgICAgaWYgKCFkb2N1bWVudCkKKyAgICAgICAgcmV0dXJuIGZh
bHNlOworCisgICAgaWYgKHVzZXJHZXN0dXJlUmVxdWlyZWRGb3JBdWRpb1N0YXJ0KCkpIHsKKyAg
ICAgICAgaWYgKCFzaG91bGREb2N1bWVudEFsbG93V2ViQXVkaW9Ub0F1dG9QbGF5KCpkb2N1bWVu
dCkpIHsKKyAgICAgICAgICAgIEFMV0FZU19MT0coTE9HSURFTlRJRklFUiwgInJldHVybmluZyBm
YWxzZSwgbm90IHByb2Nlc3NpbmcgdXNlciBnZXN0dXJlIG9yIGNhcHR1cmluZyIpOworICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisgICAgICAgIHJlbW92ZUJlaGF2aW9yUmVz
dHJpY3Rpb24oV2ViS2l0QXVkaW9Db250ZXh0OjpSZXF1aXJlVXNlckdlc3R1cmVGb3JBdWRpb1N0
YXJ0UmVzdHJpY3Rpb24pOworICAgIH0KKworICAgIGlmIChwYWdlQ29uc2VudFJlcXVpcmVkRm9y
QXVkaW9TdGFydCgpKSB7CisgICAgICAgIGF1dG8qIHBhZ2UgPSBkb2N1bWVudC0+cGFnZSgpOwor
ICAgICAgICBpZiAocGFnZSAmJiAhcGFnZS0+Y2FuU3RhcnRNZWRpYSgpKSB7CisgICAgICAgICAg
ICBkb2N1bWVudC0+YWRkTWVkaWFDYW5TdGFydExpc3RlbmVyKCp0aGlzKTsKKyAgICAgICAgICAg
IEFMV0FZU19MT0coTE9HSURFTlRJRklFUiwgInJldHVybmluZyBmYWxzZSwgcGFnZSBkb2Vzbid0
IGFsbG93IG1lZGlhIHRvIHN0YXJ0Iik7CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
ICAgIH0KKyAgICAgICAgcmVtb3ZlQmVoYXZpb3JSZXN0cmljdGlvbihXZWJLaXRBdWRpb0NvbnRl
eHQ6OlJlcXVpcmVQYWdlQ29uc2VudEZvckF1ZGlvU3RhcnRSZXN0cmljdGlvbik7CisgICAgfQor
CisgICAgYXV0byB3aWxsQmVnaW4gPSBtX21lZGlhU2Vzc2lvbi0+Y2xpZW50V2lsbEJlZ2luUGxh
eWJhY2soKTsKKyAgICBBTFdBWVNfTE9HKExPR0lERU5USUZJRVIsICJyZXR1cm5pbmcgIiwgd2ls
bEJlZ2luKTsKKworICAgIHJldHVybiB3aWxsQmVnaW47Cit9CisKK2Jvb2wgV2ViS2l0QXVkaW9D
b250ZXh0Ojp3aWxsUGF1c2VQbGF5YmFjaygpCit7CisgICAgYXV0byogZG9jdW1lbnQgPSB0aGlz
LT5kb2N1bWVudCgpOworICAgIGlmICghZG9jdW1lbnQpCisgICAgICAgIHJldHVybiBmYWxzZTsK
KworICAgIGlmICh1c2VyR2VzdHVyZVJlcXVpcmVkRm9yQXVkaW9TdGFydCgpKSB7CisgICAgICAg
IGlmICghZG9jdW1lbnQtPnByb2Nlc3NpbmdVc2VyR2VzdHVyZUZvck1lZGlhKCkpCisgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIHJlbW92ZUJlaGF2aW9yUmVzdHJpY3Rpb24oV2Vi
S2l0QXVkaW9Db250ZXh0OjpSZXF1aXJlVXNlckdlc3R1cmVGb3JBdWRpb1N0YXJ0UmVzdHJpY3Rp
b24pOworICAgIH0KKworICAgIGlmIChwYWdlQ29uc2VudFJlcXVpcmVkRm9yQXVkaW9TdGFydCgp
KSB7CisgICAgICAgIGF1dG8qIHBhZ2UgPSBkb2N1bWVudC0+cGFnZSgpOworICAgICAgICBpZiAo
cGFnZSAmJiAhcGFnZS0+Y2FuU3RhcnRNZWRpYSgpKSB7CisgICAgICAgICAgICBkb2N1bWVudC0+
YWRkTWVkaWFDYW5TdGFydExpc3RlbmVyKCp0aGlzKTsKKyAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICAgICAgfQorICAgICAgICByZW1vdmVCZWhhdmlvclJlc3RyaWN0aW9uKFdlYktpdEF1
ZGlvQ29udGV4dDo6UmVxdWlyZVBhZ2VDb25zZW50Rm9yQXVkaW9TdGFydFJlc3RyaWN0aW9uKTsK
KyAgICB9CisKKyAgICByZXR1cm4gbV9tZWRpYVNlc3Npb24tPmNsaWVudFdpbGxQYXVzZVBsYXli
YWNrKCk7Cit9CisKK3ZvaWQgV2ViS2l0QXVkaW9Db250ZXh0OjpzdGFydFJlbmRlcmluZygpCit7
CisgICAgQUxXQVlTX0xPRyhMT0dJREVOVElGSUVSKTsKKyAgICBpZiAobV9pc1N0b3BTY2hlZHVs
ZWQgfHwgIXdpbGxCZWdpblBsYXliYWNrKCkpCisgICAgICAgIHJldHVybjsKKworICAgIG1ha2VQ
ZW5kaW5nQWN0aXZpdHkoKTsKKworICAgIGRlc3RpbmF0aW9uKCktPnN0YXJ0UmVuZGVyaW5nKCk7
CisgICAgc2V0U3RhdGUoU3RhdGU6OlJ1bm5pbmcpOworfQorCit2b2lkIFdlYktpdEF1ZGlvQ29u
dGV4dDo6bWVkaWFDYW5TdGFydChEb2N1bWVudCYgZG9jdW1lbnQpCit7CisgICAgQVNTRVJUX1VO
VVNFRChkb2N1bWVudCwgJmRvY3VtZW50ID09IHRoaXMtPmRvY3VtZW50KCkpOworICAgIHJlbW92
ZUJlaGF2aW9yUmVzdHJpY3Rpb24oV2ViS2l0QXVkaW9Db250ZXh0OjpSZXF1aXJlUGFnZUNvbnNl
bnRGb3JBdWRpb1N0YXJ0UmVzdHJpY3Rpb24pOworICAgIG1heVJlc3VtZVBsYXliYWNrKHRydWUp
OworfQorCitNZWRpYVByb2R1Y2VyOjpNZWRpYVN0YXRlRmxhZ3MgV2ViS2l0QXVkaW9Db250ZXh0
OjptZWRpYVN0YXRlKCkgY29uc3QKK3sKKyAgICBpZiAoIW1faXNTdG9wU2NoZWR1bGVkICYmIG1f
ZGVzdGluYXRpb25Ob2RlICYmIG1fZGVzdGluYXRpb25Ob2RlLT5pc1BsYXlpbmdBdWRpbygpKQor
ICAgICAgICByZXR1cm4gTWVkaWFQcm9kdWNlcjo6SXNQbGF5aW5nQXVkaW87CisKKyAgICByZXR1
cm4gTWVkaWFQcm9kdWNlcjo6SXNOb3RQbGF5aW5nOworfQorCit2b2lkIFdlYktpdEF1ZGlvQ29u
dGV4dDo6cGFnZU11dGVkU3RhdGVEaWRDaGFuZ2UoKQoreworICAgIGlmIChtX2Rlc3RpbmF0aW9u
Tm9kZSAmJiBkb2N1bWVudCgpICYmIGRvY3VtZW50KCktPnBhZ2UoKSkKKyAgICAgICAgbV9kZXN0
aW5hdGlvbk5vZGUtPnNldE11dGVkKGRvY3VtZW50KCktPnBhZ2UoKS0+aXNBdWRpb011dGVkKCkp
OworfQorCit2b2lkIFdlYktpdEF1ZGlvQ29udGV4dDo6aXNQbGF5aW5nQXVkaW9EaWRDaGFuZ2Uo
KQoreworICAgIC8vIE1ha2Ugc3VyZSB0byBjYWxsIERvY3VtZW50Ojp1cGRhdGVJc1BsYXlpbmdN
ZWRpYSgpIG9uIHRoZSBtYWluIHRocmVhZCwgc2luY2UKKyAgICAvLyB3ZSBjb3VsZCBiZSBvbiB0
aGUgYXVkaW8gSS9PIHRocmVhZCBoZXJlIGFuZCB0aGUgY2FsbCBpbnRvIFdlYkNvcmUgY291bGQg
YmxvY2suCisgICAgY2FsbE9uTWFpblRocmVhZChbcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRo
aXMpXSB7CisgICAgICAgIGlmIChwcm90ZWN0ZWRUaGlzLT5kb2N1bWVudCgpKQorICAgICAgICAg
ICAgcHJvdGVjdGVkVGhpcy0+ZG9jdW1lbnQoKS0+dXBkYXRlSXNQbGF5aW5nTWVkaWEoKTsKKyAg
ICB9KTsKK30KKwordm9pZCBXZWJLaXRBdWRpb0NvbnRleHQ6OmZpbmlzaGVkUmVuZGVyaW5nKGJv
b2wgZGlkUmVuZGVyaW5nKQoreworICAgIEFTU0VSVChpc09mZmxpbmVDb250ZXh0KCkpOworICAg
IEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisgICAgaWYgKCFpc01haW5UaHJlYWQoKSkKKyAgICAg
ICAgcmV0dXJuOworCisgICAgYXV0byBjbGVhclBlbmRpbmdBY3Rpdml0eUlmRXhpdEVhcmx5ID0g
V1RGOjptYWtlU2NvcGVFeGl0KFt0aGlzXSB7CisgICAgICAgIGNsZWFyUGVuZGluZ0FjdGl2aXR5
KCk7CisgICAgfSk7CisKKworICAgIEFMV0FZU19MT0coTE9HSURFTlRJRklFUik7CisKKyAgICBp
ZiAoIWRpZFJlbmRlcmluZykKKyAgICAgICAgcmV0dXJuOworCisgICAgQXVkaW9CdWZmZXIqIHJl
bmRlcmVkQnVmZmVyID0gbV9yZW5kZXJUYXJnZXQuZ2V0KCk7CisgICAgc2V0U3RhdGUoU3RhdGU6
OkNsb3NlZCk7CisKKyAgICBBU1NFUlQocmVuZGVyZWRCdWZmZXIpOworICAgIGlmICghcmVuZGVy
ZWRCdWZmZXIpCisgICAgICAgIHJldHVybjsKKworICAgIC8vIEF2b2lkIGZpcmluZyB0aGUgZXZl
bnQgaWYgdGhlIGRvY3VtZW50IGhhcyBhbHJlYWR5IGdvbmUgYXdheS4KKyAgICBpZiAobV9pc1N0
b3BTY2hlZHVsZWQpCisgICAgICAgIHJldHVybjsKKworICAgIGNsZWFyUGVuZGluZ0FjdGl2aXR5
SWZFeGl0RWFybHkucmVsZWFzZSgpOworICAgIG1fZXZlbnRRdWV1ZS0+ZW5xdWV1ZUV2ZW50KE9m
ZmxpbmVBdWRpb0NvbXBsZXRpb25FdmVudDo6Y3JlYXRlKHJlbmRlcmVkQnVmZmVyKSk7Cit9CisK
K3ZvaWQgV2ViS2l0QXVkaW9Db250ZXh0OjpkaXNwYXRjaEV2ZW50KEV2ZW50JiBldmVudCkKK3sK
KyAgICBFdmVudFRhcmdldDo6ZGlzcGF0Y2hFdmVudChldmVudCk7CisgICAgaWYgKGV2ZW50LmV2
ZW50SW50ZXJmYWNlKCkgPT0gT2ZmbGluZUF1ZGlvQ29tcGxldGlvbkV2ZW50SW50ZXJmYWNlVHlw
ZSkKKyAgICAgICAgY2xlYXJQZW5kaW5nQWN0aXZpdHkoKTsKK30KKwordm9pZCBXZWJLaXRBdWRp
b0NvbnRleHQ6OmluY3JlbWVudEFjdGl2ZVNvdXJjZUNvdW50KCkKK3sKKyAgICArK21fYWN0aXZl
U291cmNlQ291bnQ7Cit9CisKK3ZvaWQgV2ViS2l0QXVkaW9Db250ZXh0OjpkZWNyZW1lbnRBY3Rp
dmVTb3VyY2VDb3VudCgpCit7CisgICAgLS1tX2FjdGl2ZVNvdXJjZUNvdW50OworfQorCit2b2lk
IFdlYktpdEF1ZGlvQ29udGV4dDo6c3VzcGVuZFJlbmRlcmluZyhET01Qcm9taXNlRGVmZXJyZWQ8
dm9pZD4mJiBwcm9taXNlKQoreworICAgIGlmIChpc09mZmxpbmVDb250ZXh0KCkgfHwgbV9pc1N0
b3BTY2hlZHVsZWQpIHsKKyAgICAgICAgcHJvbWlzZS5yZWplY3QoSW52YWxpZFN0YXRlRXJyb3Ip
OworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgaWYgKG1fc3RhdGUgPT0gU3RhdGU6OlN1
c3BlbmRlZCkgeworICAgICAgICBwcm9taXNlLnJlc29sdmUoKTsKKyAgICAgICAgcmV0dXJuOwor
ICAgIH0KKworICAgIGlmIChtX3N0YXRlID09IFN0YXRlOjpDbG9zZWQgfHwgbV9zdGF0ZSA9PSBT
dGF0ZTo6SW50ZXJydXB0ZWQgfHwgIW1fZGVzdGluYXRpb25Ob2RlKSB7CisgICAgICAgIHByb21p
c2UucmVqZWN0KCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBhZGRSZWFjdGlvbihT
dGF0ZTo6U3VzcGVuZGVkLCBXVEZNb3ZlKHByb21pc2UpKTsKKworICAgIGlmICghd2lsbFBhdXNl
UGxheWJhY2soKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgbGF6eUluaXRpYWxpemUoKTsKKwor
ICAgIG1fZGVzdGluYXRpb25Ob2RlLT5zdXNwZW5kKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFr
ZVJlZigqdGhpcyldIHsKKyAgICAgICAgc2V0U3RhdGUoU3RhdGU6OlN1c3BlbmRlZCk7CisgICAg
fSk7Cit9CisKK3ZvaWQgV2ViS2l0QXVkaW9Db250ZXh0OjpyZXN1bWVSZW5kZXJpbmcoRE9NUHJv
bWlzZURlZmVycmVkPHZvaWQ+JiYgcHJvbWlzZSkKK3sKKyAgICBpZiAoaXNPZmZsaW5lQ29udGV4
dCgpIHx8IG1faXNTdG9wU2NoZWR1bGVkKSB7CisgICAgICAgIHByb21pc2UucmVqZWN0KEludmFs
aWRTdGF0ZUVycm9yKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlmIChtX3N0YXRl
ID09IFN0YXRlOjpSdW5uaW5nKSB7CisgICAgICAgIHByb21pc2UucmVzb2x2ZSgpOworICAgICAg
ICByZXR1cm47CisgICAgfQorCisgICAgaWYgKG1fc3RhdGUgPT0gU3RhdGU6OkNsb3NlZCB8fCAh
bV9kZXN0aW5hdGlvbk5vZGUpIHsKKyAgICAgICAgcHJvbWlzZS5yZWplY3QoKTsKKyAgICAgICAg
cmV0dXJuOworICAgIH0KKworICAgIGFkZFJlYWN0aW9uKFN0YXRlOjpSdW5uaW5nLCBXVEZNb3Zl
KHByb21pc2UpKTsKKworICAgIGlmICghd2lsbEJlZ2luUGxheWJhY2soKSkKKyAgICAgICAgcmV0
dXJuOworCisgICAgbGF6eUluaXRpYWxpemUoKTsKKworICAgIG1fZGVzdGluYXRpb25Ob2RlLT5y
ZXN1bWUoW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKV0geworICAgICAgICBz
ZXRTdGF0ZShTdGF0ZTo6UnVubmluZyk7CisgICAgfSk7Cit9CisKK3ZvaWQgV2ViS2l0QXVkaW9D
b250ZXh0OjpjbG9zZShET01Qcm9taXNlRGVmZXJyZWQ8dm9pZD4mJiBwcm9taXNlKQoreworICAg
IGlmIChpc09mZmxpbmVDb250ZXh0KCkgfHwgbV9pc1N0b3BTY2hlZHVsZWQpIHsKKyAgICAgICAg
cHJvbWlzZS5yZWplY3QoSW52YWxpZFN0YXRlRXJyb3IpOworICAgICAgICByZXR1cm47CisgICAg
fQorCisgICAgaWYgKG1fc3RhdGUgPT0gU3RhdGU6OkNsb3NlZCB8fCAhbV9kZXN0aW5hdGlvbk5v
ZGUpIHsKKyAgICAgICAgcHJvbWlzZS5yZXNvbHZlKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9
CisKKyAgICBhZGRSZWFjdGlvbihTdGF0ZTo6Q2xvc2VkLCBXVEZNb3ZlKHByb21pc2UpKTsKKwor
ICAgIGxhenlJbml0aWFsaXplKCk7CisKKyAgICBtX2Rlc3RpbmF0aW9uTm9kZS0+Y2xvc2UoW3Ro
aXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKV0geworICAgICAgICBzZXRTdGF0ZShT
dGF0ZTo6Q2xvc2VkKTsKKyAgICAgICAgdW5pbml0aWFsaXplKCk7CisgICAgfSk7Cit9CisKKwor
dm9pZCBXZWJLaXRBdWRpb0NvbnRleHQ6OnN1c3BlbmRQbGF5YmFjaygpCit7CisgICAgaWYgKCFt
X2Rlc3RpbmF0aW9uTm9kZSB8fCBtX3N0YXRlID09IFN0YXRlOjpDbG9zZWQpCisgICAgICAgIHJl
dHVybjsKKworICAgIGlmIChtX3N0YXRlID09IFN0YXRlOjpTdXNwZW5kZWQpIHsKKyAgICAgICAg
aWYgKG1fbWVkaWFTZXNzaW9uLT5zdGF0ZSgpID09IFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpJbnRl
cnJ1cHRlZCkKKyAgICAgICAgICAgIHNldFN0YXRlKFN0YXRlOjpJbnRlcnJ1cHRlZCk7CisgICAg
ICAgIHJldHVybjsKKyAgICB9CisKKyAgICBsYXp5SW5pdGlhbGl6ZSgpOworCisgICAgbV9kZXN0
aW5hdGlvbk5vZGUtPnN1c3BlbmQoW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlz
KV0geworICAgICAgICBib29sIGludGVycnVwdGVkID0gbV9tZWRpYVNlc3Npb24tPnN0YXRlKCkg
PT0gUGxhdGZvcm1NZWRpYVNlc3Npb246OkludGVycnVwdGVkOworICAgICAgICBzZXRTdGF0ZShp
bnRlcnJ1cHRlZCA/IFN0YXRlOjpJbnRlcnJ1cHRlZCA6IFN0YXRlOjpTdXNwZW5kZWQpOworICAg
IH0pOworfQorCit2b2lkIFdlYktpdEF1ZGlvQ29udGV4dDo6bWF5UmVzdW1lUGxheWJhY2soYm9v
bCBzaG91bGRSZXN1bWUpCit7CisgICAgaWYgKCFtX2Rlc3RpbmF0aW9uTm9kZSB8fCBtX3N0YXRl
ID09IFN0YXRlOjpDbG9zZWQgfHwgbV9zdGF0ZSA9PSBTdGF0ZTo6UnVubmluZykKKyAgICAgICAg
cmV0dXJuOworCisgICAgaWYgKCFzaG91bGRSZXN1bWUpIHsKKyAgICAgICAgc2V0U3RhdGUoU3Rh
dGU6OlN1c3BlbmRlZCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpZiAoIXdpbGxC
ZWdpblBsYXliYWNrKCkpCisgICAgICAgIHJldHVybjsKKworICAgIGxhenlJbml0aWFsaXplKCk7
CisKKyAgICBtX2Rlc3RpbmF0aW9uTm9kZS0+cmVzdW1lKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0g
bWFrZVJlZigqdGhpcyldIHsKKyAgICAgICAgc2V0U3RhdGUoU3RhdGU6OlJ1bm5pbmcpOworICAg
IH0pOworfQorCit2b2lkIFdlYktpdEF1ZGlvQ29udGV4dDo6cG9zdFRhc2soV1RGOjpGdW5jdGlv
bjx2b2lkKCk+JiYgdGFzaykKK3sKKyAgICBpZiAobV9pc1N0b3BTY2hlZHVsZWQpCisgICAgICAg
IHJldHVybjsKKworICAgIG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+cG9zdFRhc2soV1RGTW92
ZSh0YXNrKSk7Cit9CisKK2NvbnN0IFNlY3VyaXR5T3JpZ2luKiBXZWJLaXRBdWRpb0NvbnRleHQ6
Om9yaWdpbigpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dCA/
IG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+c2VjdXJpdHlPcmlnaW4oKSA6IG51bGxwdHI7Cit9
CisKK3ZvaWQgV2ViS2l0QXVkaW9Db250ZXh0OjphZGRDb25zb2xlTWVzc2FnZShNZXNzYWdlU291
cmNlIHNvdXJjZSwgTWVzc2FnZUxldmVsIGxldmVsLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCit7
CisgICAgaWYgKG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dCkKKyAgICAgICAgbV9zY3JpcHRFeGVj
dXRpb25Db250ZXh0LT5hZGRDb25zb2xlTWVzc2FnZShzb3VyY2UsIGxldmVsLCBtZXNzYWdlKTsK
K30KKwordm9pZCBXZWJLaXRBdWRpb0NvbnRleHQ6OmNsZWFyUGVuZGluZ0FjdGl2aXR5KCkKK3sK
KyAgICBpZiAoIW1fcGVuZGluZ0FjdGl2aXR5KQorICAgICAgICByZXR1cm47CisgICAgbV9wZW5k
aW5nQWN0aXZpdHkgPSBudWxscHRyOworICAgIC8vIEZJWE1FOiBSZW1vdmUgdGhpcyBzcGVjaWZp
YyBkZXJlZigpIGFuZCByZWYoKSBjYWxsIGluIG1ha2VQZW5kaW5nQWN0aXZpdHkoKS4KKyAgICBk
ZXJlZigpOworfQorCit2b2lkIFdlYktpdEF1ZGlvQ29udGV4dDo6bWFrZVBlbmRpbmdBY3Rpdml0
eSgpCit7CisgICAgaWYgKG1fcGVuZGluZ0FjdGl2aXR5KQorICAgICAgICByZXR1cm47CisgICAg
bV9wZW5kaW5nQWN0aXZpdHkgPSBBY3RpdmVET01PYmplY3Q6Om1ha2VQZW5kaW5nQWN0aXZpdHko
KnRoaXMpOworICAgIHJlZigpOworfQorCisjaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECitXVEZM
b2dDaGFubmVsJiBXZWJLaXRBdWRpb0NvbnRleHQ6OmxvZ0NoYW5uZWwoKSBjb25zdAoreworICAg
IHJldHVybiBMb2dNZWRpYTsKK30KKyNlbmRpZgorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisK
KyNlbmRpZiAvLyBFTkFCTEUoV0VCX0FVRElPKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJhdWRpby9XZWJLaXRBdWRpb0NvbnRleHQuaCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViYXVkaW8vV2ViS2l0QXVkaW9Db250ZXh0LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAuLjBlYzQ1OTdlOTg0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9XZWJLaXRBdWRpb0NvbnRleHQuaApAQCAtMCwwICsx
LDQyNCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE2LTIwMjAgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQgQU5ZCisg
KiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04KKyAqIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUworICogU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJBY3RpdmVE
T01PYmplY3QuaCIKKyNpbmNsdWRlICJBc3luY0F1ZGlvRGVjb2Rlci5oIgorI2luY2x1ZGUgIkF1
ZGlvQnVzLmgiCisjaW5jbHVkZSAiQXVkaW9Db250ZXh0LmgiCisjaW5jbHVkZSAiQXVkaW9Db250
ZXh0U3RhdGUuaCIKKyNpbmNsdWRlICJBdWRpb0Rlc3RpbmF0aW9uTm9kZS5oIgorI2luY2x1ZGUg
IkV2ZW50VGFyZ2V0LmgiCisjaW5jbHVkZSAiTWVkaWFDYW5TdGFydExpc3RlbmVyLmgiCisjaW5j
bHVkZSAiTWVkaWFQcm9kdWNlci5oIgorI2luY2x1ZGUgIlBsYXRmb3JtTWVkaWFTZXNzaW9uLmgi
CisjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgorI2luY2x1ZGUgIlZpc2liaWxp
dHlDaGFuZ2VDbGllbnQuaCIKKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9Db25zb2xlVHlwZXMu
aD4KKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9GbG9hdDMyQXJyYXkuaD4KKyNpbmNsdWRlIDxh
dG9taWM+CisjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KKyNpbmNsdWRlIDx3dGYvTG9nZ2VySGVs
cGVyLmg+CisjaW5jbHVkZSA8d3RmL01haW5UaHJlYWQuaD4KKyNpbmNsdWRlIDx3dGYvUmVmUHRy
Lmg+CisjaW5jbHVkZSA8d3RmL1RocmVhZFNhZmVSZWZDb3VudGVkLmg+CisjaW5jbHVkZSA8d3Rm
L1RocmVhZGluZy5oPgorI2luY2x1ZGUgPHd0Zi9VbmlxdWVSZWYuaD4KKyNpbmNsdWRlIDx3dGYv
VmVjdG9yLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvQXRvbVN0cmluZ0hhc2guaD4KKworbmFtZXNw
YWNlIFdlYkNvcmUgeworCitjbGFzcyBBbmFseXNlck5vZGU7CitjbGFzcyBBdWRpb0J1ZmZlcjsK
K2NsYXNzIEF1ZGlvQnVmZmVyQ2FsbGJhY2s7CitjbGFzcyBBdWRpb0J1ZmZlclNvdXJjZU5vZGU7
CitjbGFzcyBBdWRpb0xpc3RlbmVyOworY2xhc3MgQXVkaW9TdW1taW5nSnVuY3Rpb247CitjbGFz
cyBCaXF1YWRGaWx0ZXJOb2RlOworY2xhc3MgQ2hhbm5lbE1lcmdlck5vZGU7CitjbGFzcyBDaGFu
bmVsU3BsaXR0ZXJOb2RlOworY2xhc3MgQ29udm9sdmVyTm9kZTsKK2NsYXNzIERlbGF5Tm9kZTsK
K2NsYXNzIERvY3VtZW50OworY2xhc3MgRHluYW1pY3NDb21wcmVzc29yTm9kZTsKK2NsYXNzIEdh
aW5Ob2RlOworY2xhc3MgSFRNTE1lZGlhRWxlbWVudDsKK2NsYXNzIE1haW5UaHJlYWRHZW5lcmlj
RXZlbnRRdWV1ZTsKK2NsYXNzIE1lZGlhRWxlbWVudEF1ZGlvU291cmNlTm9kZTsKK2NsYXNzIE1l
ZGlhU3RyZWFtOworY2xhc3MgTWVkaWFTdHJlYW1BdWRpb0Rlc3RpbmF0aW9uTm9kZTsKK2NsYXNz
IE1lZGlhU3RyZWFtQXVkaW9Tb3VyY2VOb2RlOworY2xhc3MgT3NjaWxsYXRvck5vZGU7CitjbGFz
cyBQZXJpb2RpY1dhdmU7CitjbGFzcyBTY3JpcHRQcm9jZXNzb3JOb2RlOworY2xhc3MgU2VjdXJp
dHlPcmlnaW47CitjbGFzcyBXYXZlU2hhcGVyTm9kZTsKK2NsYXNzIFdlYktpdEF1ZGlvUGFubmVy
Tm9kZTsKKwordGVtcGxhdGU8dHlwZW5hbWUgSURMVHlwZT4gY2xhc3MgRE9NUHJvbWlzZURlZmVy
cmVkOworCisvLyBBdWRpb0NvbnRleHQgaXMgdGhlIGNvcm5lcnN0b25lIG9mIHRoZSB3ZWIgYXVk
aW8gQVBJIGFuZCBhbGwgQXVkaW9Ob2RlcyBhcmUgY3JlYXRlZCBmcm9tIGl0LgorLy8gRm9yIHRo
cmVhZCBzYWZldHkgYmV0d2VlbiB0aGUgYXVkaW8gdGhyZWFkIGFuZCB0aGUgbWFpbiB0aHJlYWQs
IGl0IGhhcyBhIHJlbmRlcmluZyBncmFwaCBsb2NraW5nIG1lY2hhbmlzbS4KKworY2xhc3MgV2Vi
S2l0QXVkaW9Db250ZXh0CisgICAgOiBwdWJsaWMgQXVkaW9Db250ZXh0QmFzZQorICAgICwgcHJp
dmF0ZSBQbGF0Zm9ybU1lZGlhU2Vzc2lvbkNsaWVudAorICAgICwgcHJpdmF0ZSBWaXNpYmlsaXR5
Q2hhbmdlQ2xpZW50Cit7CisgICAgV1RGX01BS0VfSVNPX0FMTE9DQVRFRChXZWJLaXRBdWRpb0Nv
bnRleHQpOworcHVibGljOgorICAgIC8vIENyZWF0ZSBhbiBXZWJLaXRBdWRpb0NvbnRleHQgZm9y
IHJlbmRlcmluZyB0byB0aGUgYXVkaW8gaGFyZHdhcmUuCisgICAgc3RhdGljIEV4Y2VwdGlvbk9y
PFJlZjxXZWJLaXRBdWRpb0NvbnRleHQ+PiBjcmVhdGUoRG9jdW1lbnQmKTsKKworICAgIHZpcnR1
YWwgfldlYktpdEF1ZGlvQ29udGV4dCgpOworCisgICAgYm9vbCBpc0luaXRpYWxpemVkKCkgY29u
c3QgZmluYWw7CisKKyAgICBib29sIGlzT2ZmbGluZUNvbnRleHQoKSBjb25zdCBmaW5hbCB7IHJl
dHVybiBtX2lzT2ZmbGluZUNvbnRleHQ7IH0KKworICAgIERvY3VtZW50SWRlbnRpZmllciBob3N0
aW5nRG9jdW1lbnRJZGVudGlmaWVyKCkgY29uc3QgZmluYWw7CisKKyAgICBBdWRpb0Rlc3RpbmF0
aW9uTm9kZSogZGVzdGluYXRpb24oKSB7IHJldHVybiBtX2Rlc3RpbmF0aW9uTm9kZS5nZXQoKTsg
fQorICAgIHNpemVfdCBjdXJyZW50U2FtcGxlRnJhbWUoKSBjb25zdCBmaW5hbCB7IHJldHVybiBt
X2Rlc3RpbmF0aW9uTm9kZSA/IG1fZGVzdGluYXRpb25Ob2RlLT5jdXJyZW50U2FtcGxlRnJhbWUo
KSA6IDA7IH0KKyAgICBkb3VibGUgY3VycmVudFRpbWUoKSBjb25zdCBmaW5hbCB7IHJldHVybiBt
X2Rlc3RpbmF0aW9uTm9kZSA/IG1fZGVzdGluYXRpb25Ob2RlLT5jdXJyZW50VGltZSgpIDogMC47
IH0KKyAgICBmbG9hdCBzYW1wbGVSYXRlKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9kZXN0aW5h
dGlvbk5vZGUgPyBtX2Rlc3RpbmF0aW9uTm9kZS0+c2FtcGxlUmF0ZSgpIDogMC5mOyB9CisgICAg
dW5zaWduZWQgbG9uZyBhY3RpdmVTb3VyY2VDb3VudCgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19j
YXN0PHVuc2lnbmVkIGxvbmc+KG1fYWN0aXZlU291cmNlQ291bnQpOyB9CisKKyAgICB2b2lkIGlu
Y3JlbWVudEFjdGl2ZVNvdXJjZUNvdW50KCkgZmluYWw7CisgICAgdm9pZCBkZWNyZW1lbnRBY3Rp
dmVTb3VyY2VDb3VudCgpIGZpbmFsOworCisgICAgRXhjZXB0aW9uT3I8UmVmPEF1ZGlvQnVmZmVy
Pj4gY3JlYXRlQnVmZmVyKHVuc2lnbmVkIG51bWJlck9mQ2hhbm5lbHMsIHNpemVfdCBudW1iZXJP
ZkZyYW1lcywgZmxvYXQgc2FtcGxlUmF0ZSk7CisgICAgRXhjZXB0aW9uT3I8UmVmPEF1ZGlvQnVm
ZmVyPj4gY3JlYXRlQnVmZmVyKEFycmF5QnVmZmVyJiwgYm9vbCBtaXhUb01vbm8pOworCisgICAg
Ly8gQXN5bmNocm9ub3VzIGF1ZGlvIGZpbGUgZGF0YSBkZWNvZGluZy4KKyAgICB2b2lkIGRlY29k
ZUF1ZGlvRGF0YShSZWY8QXJyYXlCdWZmZXI+JiYsIFJlZlB0cjxBdWRpb0J1ZmZlckNhbGxiYWNr
PiYmLCBSZWZQdHI8QXVkaW9CdWZmZXJDYWxsYmFjaz4mJik7CisKKyAgICBBdWRpb0xpc3RlbmVy
KiBsaXN0ZW5lcigpIHsgcmV0dXJuIG1fbGlzdGVuZXIuZ2V0KCk7IH0KKworICAgIHZvaWQgc3Vz
cGVuZFJlbmRlcmluZyhET01Qcm9taXNlRGVmZXJyZWQ8dm9pZD4mJik7CisgICAgdm9pZCByZXN1
bWVSZW5kZXJpbmcoRE9NUHJvbWlzZURlZmVycmVkPHZvaWQ+JiYpOworICAgIHZvaWQgY2xvc2Uo
RE9NUHJvbWlzZURlZmVycmVkPHZvaWQ+JiYpOworCisgICAgdXNpbmcgU3RhdGUgPSBBdWRpb0Nv
bnRleHRTdGF0ZTsKKyAgICBTdGF0ZSBzdGF0ZSgpIGNvbnN0OworICAgIGJvb2wgaXNDbG9zZWQo
KSBjb25zdCB7IHJldHVybiBtX3N0YXRlID09IFN0YXRlOjpDbG9zZWQ7IH0KKworICAgIGJvb2wg
d291bGRUYWludE9yaWdpbihjb25zdCBVUkwmKSBjb25zdDsKKworICAgIC8vIFRoZSBBdWRpb05v
ZGUgY3JlYXRlIG1ldGhvZHMgYXJlIGNhbGxlZCBvbiB0aGUgbWFpbiB0aHJlYWQgKGZyb20gSmF2
YVNjcmlwdCkuCisgICAgRXhjZXB0aW9uT3I8UmVmPEF1ZGlvQnVmZmVyU291cmNlTm9kZT4+IGNy
ZWF0ZUJ1ZmZlclNvdXJjZSgpOworI2lmIEVOQUJMRShWSURFTykKKyAgICBFeGNlcHRpb25PcjxS
ZWY8TWVkaWFFbGVtZW50QXVkaW9Tb3VyY2VOb2RlPj4gY3JlYXRlTWVkaWFFbGVtZW50U291cmNl
KEhUTUxNZWRpYUVsZW1lbnQmKTsKKyNlbmRpZgorI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCisg
ICAgRXhjZXB0aW9uT3I8UmVmPE1lZGlhU3RyZWFtQXVkaW9Tb3VyY2VOb2RlPj4gY3JlYXRlTWVk
aWFTdHJlYW1Tb3VyY2UoTWVkaWFTdHJlYW0mKTsKKyAgICBFeGNlcHRpb25PcjxSZWY8TWVkaWFT
dHJlYW1BdWRpb0Rlc3RpbmF0aW9uTm9kZT4+IGNyZWF0ZU1lZGlhU3RyZWFtRGVzdGluYXRpb24o
KTsKKyNlbmRpZgorICAgIEV4Y2VwdGlvbk9yPFJlZjxHYWluTm9kZT4+IGNyZWF0ZUdhaW4oKTsK
KyAgICBFeGNlcHRpb25PcjxSZWY8QmlxdWFkRmlsdGVyTm9kZT4+IGNyZWF0ZUJpcXVhZEZpbHRl
cigpOworICAgIEV4Y2VwdGlvbk9yPFJlZjxXYXZlU2hhcGVyTm9kZT4+IGNyZWF0ZVdhdmVTaGFw
ZXIoKTsKKyAgICBFeGNlcHRpb25PcjxSZWY8RGVsYXlOb2RlPj4gY3JlYXRlRGVsYXkoZG91Ymxl
IG1heERlbGF5VGltZSk7CisgICAgRXhjZXB0aW9uT3I8UmVmPFdlYktpdEF1ZGlvUGFubmVyTm9k
ZT4+IGNyZWF0ZVBhbm5lcigpOworICAgIEV4Y2VwdGlvbk9yPFJlZjxDb252b2x2ZXJOb2RlPj4g
Y3JlYXRlQ29udm9sdmVyKCk7CisgICAgRXhjZXB0aW9uT3I8UmVmPER5bmFtaWNzQ29tcHJlc3Nv
ck5vZGU+PiBjcmVhdGVEeW5hbWljc0NvbXByZXNzb3IoKTsKKyAgICBFeGNlcHRpb25PcjxSZWY8
QW5hbHlzZXJOb2RlPj4gY3JlYXRlQW5hbHlzZXIoKTsKKyAgICBFeGNlcHRpb25PcjxSZWY8U2Ny
aXB0UHJvY2Vzc29yTm9kZT4+IGNyZWF0ZVNjcmlwdFByb2Nlc3NvcihzaXplX3QgYnVmZmVyU2l6
ZSwgc2l6ZV90IG51bWJlck9mSW5wdXRDaGFubmVscywgc2l6ZV90IG51bWJlck9mT3V0cHV0Q2hh
bm5lbHMpOworICAgIEV4Y2VwdGlvbk9yPFJlZjxDaGFubmVsU3BsaXR0ZXJOb2RlPj4gY3JlYXRl
Q2hhbm5lbFNwbGl0dGVyKHNpemVfdCBudW1iZXJPZk91dHB1dHMpOworICAgIEV4Y2VwdGlvbk9y
PFJlZjxDaGFubmVsTWVyZ2VyTm9kZT4+IGNyZWF0ZUNoYW5uZWxNZXJnZXIoc2l6ZV90IG51bWJl
ck9mSW5wdXRzKTsKKyAgICBFeGNlcHRpb25PcjxSZWY8T3NjaWxsYXRvck5vZGU+PiBjcmVhdGVP
c2NpbGxhdG9yKCk7CisgICAgRXhjZXB0aW9uT3I8UmVmPFBlcmlvZGljV2F2ZT4+IGNyZWF0ZVBl
cmlvZGljV2F2ZShGbG9hdDMyQXJyYXkmIHJlYWwsIEZsb2F0MzJBcnJheSYgaW1hZ2luYXJ5KTsK
KworICAgIC8vIFdoZW4gYSBzb3VyY2Ugbm9kZSBoYXMgbm8gbW9yZSBwcm9jZXNzaW5nIHRvIGRv
IChoYXMgZmluaXNoZWQgcGxheWluZyksIHRoZW4gaXQgdGVsbHMgdGhlIGNvbnRleHQgdG8gZGVy
ZWZlcmVuY2UgaXQuCisgICAgdm9pZCBub3RpZnlOb2RlRmluaXNoZWRQcm9jZXNzaW5nKEF1ZGlv
Tm9kZSopIGZpbmFsOworCisgICAgLy8gQ2FsbGVkIGF0IHRoZSBzdGFydCBvZiBlYWNoIHJlbmRl
ciBxdWFudHVtLgorICAgIHZvaWQgaGFuZGxlUHJlUmVuZGVyVGFza3MoKSBmaW5hbDsKKworICAg
IC8vIENhbGxlZCBhdCB0aGUgZW5kIG9mIGVhY2ggcmVuZGVyIHF1YW50dW0uCisgICAgdm9pZCBo
YW5kbGVQb3N0UmVuZGVyVGFza3MoKSBmaW5hbDsKKworICAgIC8vIENhbGxlZCBwZXJpb2RpY2Fs
bHkgYXQgdGhlIGVuZCBvZiBlYWNoIHJlbmRlciBxdWFudHVtIHRvIGRlcmVmZXJlbmNlIGZpbmlz
aGVkIHNvdXJjZSBub2Rlcy4KKyAgICB2b2lkIGRlcmVmRmluaXNoZWRTb3VyY2VOb2RlcygpOwor
CisgICAgLy8gV2Ugc2NoZWR1bGUgZGVsZXRpb24gb2YgYWxsIG1hcmtlZCBub2RlcyBhdCB0aGUg
ZW5kIG9mIGVhY2ggcmVhbHRpbWUgcmVuZGVyIHF1YW50dW0uCisgICAgdm9pZCBtYXJrRm9yRGVs
ZXRpb24oQXVkaW9Ob2RlJikgZmluYWw7CisgICAgdm9pZCBkZWxldGVNYXJrZWROb2RlcygpIGZp
bmFsOworCisgICAgLy8gQXVkaW9Db250ZXh0IGNhbiBwdWxsIG5vZGUocykgYXQgdGhlIGVuZCBv
ZiBlYWNoIHJlbmRlciBxdWFudHVtIGV2ZW4gd2hlbiB0aGV5IGFyZSBub3QgY29ubmVjdGVkIHRv
IGFueSBkb3duc3RyZWFtIG5vZGVzLgorICAgIC8vIFRoZXNlIHR3byBtZXRob2RzIGFyZSBjYWxs
ZWQgYnkgdGhlIG5vZGVzIHdobyB3YW50IHRvIGFkZC9yZW1vdmUgdGhlbXNlbHZlcyBpbnRvL2Zy
b20gdGhlIGF1dG9tYXRpYyBwdWxsIGxpc3RzLgorICAgIHZvaWQgYWRkQXV0b21hdGljUHVsbE5v
ZGUoQXVkaW9Ob2RlJikgZmluYWw7CisgICAgdm9pZCByZW1vdmVBdXRvbWF0aWNQdWxsTm9kZShB
dWRpb05vZGUmKSBmaW5hbDsKKworICAgIC8vIENhbGxlZCByaWdodCBiZWZvcmUgaGFuZGxlUG9z
dFJlbmRlclRhc2tzKCkgdG8gaGFuZGxlIG5vZGVzIHdoaWNoIG5lZWQgdG8gYmUgcHVsbGVkIGV2
ZW4gd2hlbiB0aGV5IGFyZSBub3QgY29ubmVjdGVkIHRvIGFueXRoaW5nLgorICAgIHZvaWQgcHJv
Y2Vzc0F1dG9tYXRpY1B1bGxOb2RlcyhzaXplX3QgZnJhbWVzVG9Qcm9jZXNzKSBmaW5hbDsKKwor
ICAgIC8vIEtlZXBzIHRyYWNrIG9mIHRoZSBudW1iZXIgb2YgY29ubmVjdGlvbnMgbWFkZS4KKyAg
ICB2b2lkIGluY3JlbWVudENvbm5lY3Rpb25Db3VudCgpIGZpbmFsCisgICAgeworICAgICAgICBB
U1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAgICAgICBtX2Nvbm5lY3Rpb25Db3VudCsrOworICAg
IH0KKworICAgIHVuc2lnbmVkIGNvbm5lY3Rpb25Db3VudCgpIGNvbnN0IHsgcmV0dXJuIG1fY29u
bmVjdGlvbkNvdW50OyB9CisKKyAgICAvLworICAgIC8vIFRocmVhZCBTYWZldHkgYW5kIEdyYXBo
IExvY2tpbmc6CisgICAgLy8KKworICAgIHZvaWQgc2V0QXVkaW9UaHJlYWQoVGhyZWFkJiB0aHJl
YWQpIGZpbmFsIHsgbV9hdWRpb1RocmVhZCA9ICZ0aHJlYWQ7IH0gLy8gRklYTUU6IGNoZWNrIGVp
dGhlciBub3QgaW5pdGlhbGl6ZWQgb3IgdGhlIHNhbWUKKyAgICBUaHJlYWQqIGF1ZGlvVGhyZWFk
KCkgY29uc3QgeyByZXR1cm4gbV9hdWRpb1RocmVhZDsgfQorICAgIGJvb2wgaXNBdWRpb1RocmVh
ZCgpIGNvbnN0IGZpbmFsOworCisgICAgLy8gUmV0dXJucyB0cnVlIG9ubHkgYWZ0ZXIgdGhlIGF1
ZGlvIHRocmVhZCBoYXMgYmVlbiBzdGFydGVkIGFuZCB0aGVuIHNodXRkb3duLgorICAgIGJvb2wg
aXNBdWRpb1RocmVhZEZpbmlzaGVkKCkgZmluYWwgeyByZXR1cm4gbV9pc0F1ZGlvVGhyZWFkRmlu
aXNoZWQ7IH0KKworICAgIC8vIG11c3RSZWxlYXNlTG9jayBpcyBzZXQgdG8gdHJ1ZSBpZiB3ZSBh
Y3F1aXJlZCB0aGUgbG9jayBpbiB0aGlzIG1ldGhvZCBjYWxsIGFuZCBjYWxsZXIgbXVzdCB1bmxv
Y2soKSwgZmFsc2UgaWYgaXQgd2FzIHByZXZpb3VzbHkgYWNxdWlyZWQuCisgICAgdm9pZCBsb2Nr
KGJvb2wmIG11c3RSZWxlYXNlTG9jaykgZmluYWw7CisKKyAgICAvLyBSZXR1cm5zIHRydWUgaWYg
d2Ugb3duIHRoZSBsb2NrLgorICAgIC8vIG11c3RSZWxlYXNlTG9jayBpcyBzZXQgdG8gdHJ1ZSBp
ZiB3ZSBhY3F1aXJlZCB0aGUgbG9jayBpbiB0aGlzIG1ldGhvZCBjYWxsIGFuZCBjYWxsZXIgbXVz
dCB1bmxvY2soKSwgZmFsc2UgaWYgaXQgd2FzIHByZXZpb3VzbHkgYWNxdWlyZWQuCisgICAgYm9v
bCB0cnlMb2NrKGJvb2wmIG11c3RSZWxlYXNlTG9jaykgZmluYWw7CisKKyAgICB2b2lkIHVubG9j
aygpIGZpbmFsOworCisgICAgLy8gUmV0dXJucyB0cnVlIGlmIHRoaXMgdGhyZWFkIG93bnMgdGhl
IGNvbnRleHQncyBsb2NrLgorICAgIGJvb2wgaXNHcmFwaE93bmVyKCkgY29uc3QgZmluYWw7CisK
KyAgICAvLyBSZXR1cm5zIHRoZSBtYXhpbXVtIG51bWJlciBvZiBjaGFubmVscyB3ZSBjYW4gc3Vw
cG9ydC4KKyAgICBzdGF0aWMgdW5zaWduZWQgbWF4TnVtYmVyT2ZDaGFubmVscygpIHsgcmV0dXJu
IE1heE51bWJlck9mQ2hhbm5lbHM7IH0KKworICAgIC8vIEluIEF1ZGlvTm9kZTo6ZGVyZWYoKSBh
IHRyeUxvY2soKSBpcyB1c2VkIGZvciBjYWxsaW5nIGZpbmlzaERlcmVmKCksIGJ1dCBpZiBpdCBm
YWlscyBrZWVwIHRyYWNrIGhlcmUuCisgICAgdm9pZCBhZGREZWZlcnJlZEZpbmlzaERlcmVmKEF1
ZGlvTm9kZSopIGZpbmFsOworCisgICAgLy8gSW4gdGhlIGF1ZGlvIHRocmVhZCBhdCB0aGUgc3Rh
cnQgb2YgZWFjaCByZW5kZXIgY3ljbGUsIHdlJ2xsIGNhbGwgaGFuZGxlRGVmZXJyZWRGaW5pc2hE
ZXJlZnMoKS4KKyAgICB2b2lkIGhhbmRsZURlZmVycmVkRmluaXNoRGVyZWZzKCk7CisKKyAgICAv
LyBPbmx5IGFjY2Vzc2VkIHdoZW4gdGhlIGdyYXBoIGxvY2sgaXMgaGVsZC4KKyAgICB2b2lkIG1h
cmtTdW1taW5nSnVuY3Rpb25EaXJ0eShBdWRpb1N1bW1pbmdKdW5jdGlvbiopIGZpbmFsOworICAg
IHZvaWQgbWFya0F1ZGlvTm9kZU91dHB1dERpcnR5KEF1ZGlvTm9kZU91dHB1dCopIGZpbmFsOwor
CisgICAgLy8gTXVzdCBiZSBjYWxsZWQgb24gbWFpbiB0aHJlYWQuCisgICAgdm9pZCByZW1vdmVN
YXJrZWRTdW1taW5nSnVuY3Rpb24oQXVkaW9TdW1taW5nSnVuY3Rpb24qKSBmaW5hbDsKKworICAg
IC8vIEV2ZW50VGFyZ2V0CisgICAgRXZlbnRUYXJnZXRJbnRlcmZhY2UgZXZlbnRUYXJnZXRJbnRl
cmZhY2UoKSBjb25zdCBmaW5hbCB7IHJldHVybiBXZWJLaXRBdWRpb0NvbnRleHRFdmVudFRhcmdl
dEludGVyZmFjZVR5cGU7IH0KKworICAgIHZvaWQgc3RhcnRSZW5kZXJpbmcoKTsKKyAgICB2b2lk
IGZpbmlzaGVkUmVuZGVyaW5nKGJvb2wgZGlkUmVuZGVyaW5nKSBmaW5hbDsKKworICAgIHN0YXRp
YyB1bnNpZ25lZCBzX2hhcmR3YXJlQ29udGV4dENvdW50OworCisgICAgLy8gUmVzdHJpY3Rpb25z
IHRvIGNoYW5nZSBkZWZhdWx0IGJlaGF2aW9ycy4KKyAgICBlbnVtIEJlaGF2aW9yUmVzdHJpY3Rp
b25GbGFncyB7CisgICAgICAgIE5vUmVzdHJpY3Rpb25zID0gMCwKKyAgICAgICAgUmVxdWlyZVVz
ZXJHZXN0dXJlRm9yQXVkaW9TdGFydFJlc3RyaWN0aW9uID0gMSA8PCAwLAorICAgICAgICBSZXF1
aXJlUGFnZUNvbnNlbnRGb3JBdWRpb1N0YXJ0UmVzdHJpY3Rpb24gPSAxIDw8IDEsCisgICAgfTsK
KyAgICB0eXBlZGVmIHVuc2lnbmVkIEJlaGF2aW9yUmVzdHJpY3Rpb25zOworCisgICAgQmVoYXZp
b3JSZXN0cmljdGlvbnMgYmVoYXZpb3JSZXN0cmljdGlvbnMoKSBjb25zdCB7IHJldHVybiBtX3Jl
c3RyaWN0aW9uczsgfQorICAgIHZvaWQgYWRkQmVoYXZpb3JSZXN0cmljdGlvbihCZWhhdmlvclJl
c3RyaWN0aW9ucyByZXN0cmljdGlvbikgeyBtX3Jlc3RyaWN0aW9ucyB8PSByZXN0cmljdGlvbjsg
fQorICAgIHZvaWQgcmVtb3ZlQmVoYXZpb3JSZXN0cmljdGlvbihCZWhhdmlvclJlc3RyaWN0aW9u
cyByZXN0cmljdGlvbikgeyBtX3Jlc3RyaWN0aW9ucyAmPSB+cmVzdHJpY3Rpb247IH0KKworICAg
IHZvaWQgaXNQbGF5aW5nQXVkaW9EaWRDaGFuZ2UoKSBmaW5hbDsKKworICAgIHZvaWQgbm9kZVdp
bGxCZWdpblBsYXliYWNrKCkgZmluYWw7CisKKyNpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKKyAg
ICBjb25zdCBMb2dnZXImIGxvZ2dlcigpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fbG9nZ2VyLmdl
dCgpOyB9CisgICAgY29uc3Qgdm9pZCogbG9nSWRlbnRpZmllcigpIGNvbnN0IGZpbmFsIHsgcmV0
dXJuIG1fbG9nSWRlbnRpZmllcjsgfQorICAgIFdURkxvZ0NoYW5uZWwmIGxvZ0NoYW5uZWwoKSBj
b25zdCBmaW5hbDsKKyAgICBjb25zdCB2b2lkKiBuZXh0QXVkaW9Ob2RlTG9nSWRlbnRpZmllcigp
IGZpbmFsIHsgcmV0dXJuIGNoaWxkTG9nSWRlbnRpZmllcihtX2xvZ0lkZW50aWZpZXIsICsrbV9u
ZXh0QXVkaW9Ob2RlSWRlbnRpZmllcik7IH0KKyAgICBjb25zdCB2b2lkKiBuZXh0QXVkaW9QYXJh
bWV0ZXJMb2dJZGVudGlmaWVyKCkgZmluYWwgeyByZXR1cm4gY2hpbGRMb2dJZGVudGlmaWVyKG1f
bG9nSWRlbnRpZmllciwgKyttX25leHRBdWRpb1BhcmFtZXRlcklkZW50aWZpZXIpOyB9CisjZW5k
aWYKKworICAgIHZvaWQgcG9zdFRhc2soV1RGOjpGdW5jdGlvbjx2b2lkKCk+JiYpIGZpbmFsOwor
ICAgIGJvb2wgaXNTdG9wcGVkKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9pc1N0b3BTY2hlZHVs
ZWQ7IH0KKyAgICBjb25zdCBTZWN1cml0eU9yaWdpbiogb3JpZ2luKCkgY29uc3QgZmluYWw7Cisg
ICAgdm9pZCBhZGRDb25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNlLCBNZXNzYWdlTGV2ZWwsIGNv
bnN0IFN0cmluZyYgbWVzc2FnZSkgZmluYWw7CisKK3Byb3RlY3RlZDoKKyAgICBleHBsaWNpdCBX
ZWJLaXRBdWRpb0NvbnRleHQoRG9jdW1lbnQmKTsKKyAgICBXZWJLaXRBdWRpb0NvbnRleHQoRG9j
dW1lbnQmLCBBdWRpb0J1ZmZlciogcmVuZGVyVGFyZ2V0KTsKKworICAgIHN0YXRpYyBib29sIGlz
U2FtcGxlUmF0ZVJhbmdlR29vZChmbG9hdCBzYW1wbGVSYXRlKTsKKyAgICB2b2lkIGNsZWFyUGVu
ZGluZ0FjdGl2aXR5KCk7CisgICAgdm9pZCBtYWtlUGVuZGluZ0FjdGl2aXR5KCk7CisKK3ByaXZh
dGU6CisgICAgdm9pZCBjb25zdHJ1Y3RDb21tb24oKTsKKworICAgIHZvaWQgbGF6eUluaXRpYWxp
emUoKTsKKyAgICB2b2lkIHVuaW5pdGlhbGl6ZSgpOworCisgICAgYm9vbCB3aWxsQmVnaW5QbGF5
YmFjaygpOworICAgIGJvb2wgd2lsbFBhdXNlUGxheWJhY2soKTsKKworICAgIGJvb2wgdXNlckdl
c3R1cmVSZXF1aXJlZEZvckF1ZGlvU3RhcnQoKSBjb25zdCB7IHJldHVybiAhaXNPZmZsaW5lQ29u
dGV4dCgpICYmIG1fcmVzdHJpY3Rpb25zICYgUmVxdWlyZVVzZXJHZXN0dXJlRm9yQXVkaW9TdGFy
dFJlc3RyaWN0aW9uOyB9CisgICAgYm9vbCBwYWdlQ29uc2VudFJlcXVpcmVkRm9yQXVkaW9TdGFy
dCgpIGNvbnN0IHsgcmV0dXJuICFpc09mZmxpbmVDb250ZXh0KCkgJiYgbV9yZXN0cmljdGlvbnMg
JiBSZXF1aXJlUGFnZUNvbnNlbnRGb3JBdWRpb1N0YXJ0UmVzdHJpY3Rpb247IH0KKworICAgIHZv
aWQgc2V0U3RhdGUoU3RhdGUpOworCisgICAgdm9pZCBjbGVhcigpOworCisgICAgdm9pZCBzY2hl
ZHVsZU5vZGVEZWxldGlvbigpOworCisgICAgdm9pZCBtZWRpYUNhblN0YXJ0KERvY3VtZW50Jikg
b3ZlcnJpZGU7CisKKyAgICAvLyBFdmVudFRhcmdldAorICAgIHZvaWQgZGlzcGF0Y2hFdmVudChF
dmVudCYpIGZpbmFsOworCisgICAgLy8gTWVkaWFQcm9kdWNlcgorICAgIE1lZGlhUHJvZHVjZXI6
Ok1lZGlhU3RhdGVGbGFncyBtZWRpYVN0YXRlKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgdm9pZCBw
YWdlTXV0ZWRTdGF0ZURpZENoYW5nZSgpIG92ZXJyaWRlOworCisgICAgLy8gVGhlIGNvbnRleHQg
aXRzZWxmIGtlZXBzIGEgcmVmZXJlbmNlIHRvIGFsbCBzb3VyY2Ugbm9kZXMuICBUaGUgc291cmNl
IG5vZGVzLCB0aGVuIHJlZmVyZW5jZSBhbGwgbm9kZXMgdGhleSdyZSBjb25uZWN0ZWQgdG8uCisg
ICAgLy8gSW4gdHVybiwgdGhlc2Ugbm9kZXMgcmVmZXJlbmNlIGFsbCBub2RlcyB0aGV5J3JlIGNv
bm5lY3RlZCB0by4gIEFsbCBub2RlcyBhcmUgdWx0aW1hdGVseSBjb25uZWN0ZWQgdG8gdGhlIEF1
ZGlvRGVzdGluYXRpb25Ob2RlLgorICAgIC8vIFdoZW4gdGhlIGNvbnRleHQgZGVyZWZlcmVuY2Vz
IGEgc291cmNlIG5vZGUsIGl0IHdpbGwgYmUgZGVhY3RpdmF0ZWQgZnJvbSB0aGUgcmVuZGVyaW5n
IGdyYXBoIGFsb25nIHdpdGggYWxsIG90aGVyIG5vZGVzIGl0IGlzCisgICAgLy8gdW5pcXVlbHkg
Y29ubmVjdGVkIHRvLiAgU2VlIHRoZSBBdWRpb05vZGU6OnJlZigpIGFuZCBBdWRpb05vZGU6OmRl
cmVmKCkgbWV0aG9kcyBmb3IgbW9yZSBkZXRhaWxzLgorICAgIHZvaWQgcmVmTm9kZShBdWRpb05v
ZGUmKTsKKyAgICB2b2lkIGRlcmVmTm9kZShBdWRpb05vZGUmKTsKKworICAgIC8vIEFjdGl2ZURP
TU9iamVjdCBBUEkuCisgICAgdm9pZCBzdXNwZW5kKFJlYXNvbkZvclN1c3BlbnNpb24pIGZpbmFs
OworICAgIHZvaWQgcmVzdW1lKCkgZmluYWw7CisgICAgdm9pZCBzdG9wKCkgb3ZlcnJpZGU7Cisg
ICAgY29uc3QgY2hhciogYWN0aXZlRE9NT2JqZWN0TmFtZSgpIGNvbnN0IG92ZXJyaWRlOworCisg
ICAgLy8gV2hlbiB0aGUgY29udGV4dCBnb2VzIGF3YXksIHRoZXJlIG1pZ2h0IHN0aWxsIGJlIHNv
bWUgc291cmNlcyB3aGljaCBoYXZlbid0IGZpbmlzaGVkIHBsYXlpbmcuCisgICAgLy8gTWFrZSBz
dXJlIHRvIGRlcmVmZXJlbmNlIHRoZW0gaGVyZS4KKyAgICB2b2lkIGRlcmVmVW5maW5pc2hlZFNv
dXJjZU5vZGVzKCk7CisKKyAgICAvLyBQbGF0Zm9ybU1lZGlhU2Vzc2lvbkNsaWVudAorICAgIFBs
YXRmb3JtTWVkaWFTZXNzaW9uOjpNZWRpYVR5cGUgbWVkaWFUeXBlKCkgY29uc3Qgb3ZlcnJpZGUg
eyByZXR1cm4gUGxhdGZvcm1NZWRpYVNlc3Npb246Ok1lZGlhVHlwZTo6V2ViQXVkaW87IH0KKyAg
ICBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6TWVkaWFUeXBlIHByZXNlbnRhdGlvblR5cGUoKSBjb25z
dCBvdmVycmlkZSB7IHJldHVybiBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6TWVkaWFUeXBlOjpXZWJB
dWRpbzsgfQorICAgIHZvaWQgbWF5UmVzdW1lUGxheWJhY2soYm9vbCBzaG91bGRSZXN1bWUpIG92
ZXJyaWRlOworICAgIHZvaWQgc3VzcGVuZFBsYXliYWNrKCkgb3ZlcnJpZGU7CisgICAgYm9vbCBj
YW5SZWNlaXZlUmVtb3RlQ29udHJvbENvbW1hbmRzKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4g
ZmFsc2U7IH0KKyAgICB2b2lkIGRpZFJlY2VpdmVSZW1vdGVDb250cm9sQ29tbWFuZChQbGF0Zm9y
bU1lZGlhU2Vzc2lvbjo6UmVtb3RlQ29udHJvbENvbW1hbmRUeXBlLCBjb25zdCBQbGF0Zm9ybU1l
ZGlhU2Vzc2lvbjo6UmVtb3RlQ29tbWFuZEFyZ3VtZW50Kikgb3ZlcnJpZGUgeyB9CisgICAgYm9v
bCBzdXBwb3J0c1NlZWtpbmcoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQorICAg
IGJvb2wgc2hvdWxkT3ZlcnJpZGVCYWNrZ3JvdW5kUGxheWJhY2tSZXN0cmljdGlvbihQbGF0Zm9y
bU1lZGlhU2Vzc2lvbjo6SW50ZXJydXB0aW9uVHlwZSkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4g
ZmFsc2U7IH0KKyAgICBib29sIGNhblByb2R1Y2VBdWRpbygpIGNvbnN0IGZpbmFsIHsgcmV0dXJu
IHRydWU7IH0KKyAgICBib29sIGlzU3VzcGVuZGVkKCkgY29uc3QgZmluYWw7CisKKyAgICB2b2lk
IHZpc2liaWxpdHlTdGF0ZUNoYW5nZWQoKSBmaW5hbDsKKworICAgIGJvb2wgaXNBdWRpb0NvbnRl
eHQoKSBjb25zdCBmaW5hbCB7IHJldHVybiBmYWxzZTsgfQorICAgIGJvb2wgaXNXZWJLaXRBdWRp
b0NvbnRleHQoKSBjb25zdCBmaW5hbCB7IHJldHVybiB0cnVlOyB9CisKKyAgICB2b2lkIGhhbmRs
ZURpcnR5QXVkaW9TdW1taW5nSnVuY3Rpb25zKCk7CisgICAgdm9pZCBoYW5kbGVEaXJ0eUF1ZGlv
Tm9kZU91dHB1dHMoKTsKKworICAgIHZvaWQgYWRkUmVhY3Rpb24oU3RhdGUsIERPTVByb21pc2VE
ZWZlcnJlZDx2b2lkPiYmKTsKKyAgICB2b2lkIHVwZGF0ZUF1dG9tYXRpY1B1bGxOb2RlcygpOwor
CisjaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECisgICAgY29uc3QgY2hhciogbG9nQ2xhc3NOYW1l
KCkgY29uc3QgZmluYWwgeyByZXR1cm4gIldlYktpdEF1ZGlvQ29udGV4dCI7IH0KKworICAgIFJl
ZjxMb2dnZXI+IG1fbG9nZ2VyOworICAgIGNvbnN0IHZvaWQqIG1fbG9nSWRlbnRpZmllcjsKKyAg
ICB1aW50NjRfdCBtX25leHRBdWRpb05vZGVJZGVudGlmaWVyIHsgMCB9OworICAgIHVpbnQ2NF90
IG1fbmV4dEF1ZGlvUGFyYW1ldGVySWRlbnRpZmllciB7IDAgfTsKKyNlbmRpZgorCisgICAgLy8g
T25seSBhY2Nlc3NlZCBpbiB0aGUgYXVkaW8gdGhyZWFkLgorICAgIFZlY3RvcjxBdWRpb05vZGUq
PiBtX2ZpbmlzaGVkTm9kZXM7CisKKyAgICAvLyBXZSBkb24ndCB1c2UgUmVmUHRyPEF1ZGlvTm9k
ZT4gaGVyZSBiZWNhdXNlIEF1ZGlvTm9kZSBoYXMgYSBtb3JlIGNvbXBsZXggcmVmKCkgLyBkZXJl
ZigpIGltcGxlbWVudGF0aW9uCisgICAgLy8gd2l0aCBhbiBvcHRpb25hbCBhcmd1bWVudCBmb3Ig
cmVmVHlwZS4gIFdlIG5lZWQgdG8gdXNlIHRoZSBzcGVjaWFsIHJlZlR5cGU6IFJlZlR5cGVDb25u
ZWN0aW9uCisgICAgLy8gRWl0aGVyIGFjY2Vzc2VkIHdoZW4gdGhlIGdyYXBoIGxvY2sgaXMgaGVs
ZCwgb3Igb24gdGhlIG1haW4gdGhyZWFkIHdoZW4gdGhlIGF1ZGlvIHRocmVhZCBoYXMgZmluaXNo
ZWQuCisgICAgVmVjdG9yPEF1ZGlvTm9kZSo+IG1fcmVmZXJlbmNlZE5vZGVzOworCisgICAgLy8g
QWNjdW11bGF0ZSBub2RlcyB3aGljaCBuZWVkIHRvIGJlIGRlbGV0ZWQgaGVyZS4KKyAgICAvLyBU
aGlzIGlzIGNvcGllZCB0byBtX25vZGVzVG9EZWxldGUgYXQgdGhlIGVuZCBvZiBhIHJlbmRlciBj
eWNsZSBpbiBoYW5kbGVQb3N0UmVuZGVyVGFza3MoKSwgd2hlcmUgd2UncmUgYXNzdXJlZCBvZiBh
IHN0YWJsZSBncmFwaAorICAgIC8vIHN0YXRlIHdoaWNoIHdpbGwgaGF2ZSBubyByZWZlcmVuY2Vz
IHRvIGFueSBvZiB0aGUgbm9kZXMgaW4gbV9ub2Rlc1RvRGVsZXRlIG9uY2UgdGhlIGNvbnRleHQg
bG9jayBpcyByZWxlYXNlZAorICAgIC8vICh3aGVuIGhhbmRsZVBvc3RSZW5kZXJUYXNrcygpIGhh
cyBjb21wbGV0ZWQpLgorICAgIFZlY3RvcjxBdWRpb05vZGUqPiBtX25vZGVzTWFya2VkRm9yRGVs
ZXRpb247CisKKyAgICAvLyBUaGV5IHdpbGwgYmUgc2NoZWR1bGVkIGZvciBkZWxldGlvbiAob24g
dGhlIG1haW4gdGhyZWFkKSBhdCB0aGUgZW5kIG9mIGEgcmVuZGVyIGN5Y2xlIChpbiByZWFsdGlt
ZSB0aHJlYWQpLgorICAgIFZlY3RvcjxBdWRpb05vZGUqPiBtX25vZGVzVG9EZWxldGU7CisKKyAg
ICBib29sIG1faXNEZWxldGlvblNjaGVkdWxlZCB7IGZhbHNlIH07CisgICAgYm9vbCBtX2lzU3Rv
cFNjaGVkdWxlZCB7IGZhbHNlIH07CisgICAgYm9vbCBtX2lzSW5pdGlhbGl6ZWQgeyBmYWxzZSB9
OworICAgIGJvb2wgbV9pc0F1ZGlvVGhyZWFkRmluaXNoZWQgeyBmYWxzZSB9OworICAgIGJvb2wg
bV9hdXRvbWF0aWNQdWxsTm9kZXNOZWVkVXBkYXRpbmcgeyBmYWxzZSB9OworICAgIGJvb2wgbV9p
c09mZmxpbmVDb250ZXh0IHsgZmFsc2UgfTsKKworICAgIC8vIE9ubHkgYWNjZXNzZWQgd2hlbiB0
aGUgZ3JhcGggbG9jayBpcyBoZWxkLgorICAgIEhhc2hTZXQ8QXVkaW9TdW1taW5nSnVuY3Rpb24q
PiBtX2RpcnR5U3VtbWluZ0p1bmN0aW9uczsKKyAgICBIYXNoU2V0PEF1ZGlvTm9kZU91dHB1dCo+
IG1fZGlydHlBdWRpb05vZGVPdXRwdXRzOworCisgICAgLy8gRm9yIHRoZSBzYWtlIG9mIHRocmVh
ZCBzYWZldHksIHdlIG1haW50YWluIGEgc2VwZXJhdGUgVmVjdG9yIG9mIGF1dG9tYXRpYyBwdWxs
IG5vZGVzIGZvciByZW5kZXJpbmcgaW4gbV9yZW5kZXJpbmdBdXRvbWF0aWNQdWxsTm9kZXMuCisg
ICAgLy8gSXQgd2lsbCBiZSBjb3BpZWQgZnJvbSBtX2F1dG9tYXRpY1B1bGxOb2RlcyBieSB1cGRh
dGVBdXRvbWF0aWNQdWxsTm9kZXMoKSBhdCB0aGUgdmVyeSBzdGFydCBvciBlbmQgb2YgdGhlIHJl
bmRlcmluZyBxdWFudHVtLgorICAgIEhhc2hTZXQ8QXVkaW9Ob2RlKj4gbV9hdXRvbWF0aWNQdWxs
Tm9kZXM7CisgICAgVmVjdG9yPEF1ZGlvTm9kZSo+IG1fcmVuZGVyaW5nQXV0b21hdGljUHVsbE5v
ZGVzOworICAgIC8vIE9ubHkgYWNjZXNzZWQgaW4gdGhlIGF1ZGlvIHRocmVhZC4KKyAgICBWZWN0
b3I8QXVkaW9Ob2RlKj4gbV9kZWZlcnJlZEZpbmlzaERlcmVmTGlzdDsKKyAgICBWZWN0b3I8VmVj
dG9yPERPTVByb21pc2VEZWZlcnJlZDx2b2lkPj4+IG1fc3RhdGVSZWFjdGlvbnM7CisKKyAgICBz
dGQ6OnVuaXF1ZV9wdHI8UGxhdGZvcm1NZWRpYVNlc3Npb24+IG1fbWVkaWFTZXNzaW9uOworICAg
IFVuaXF1ZVJlZjxNYWluVGhyZWFkR2VuZXJpY0V2ZW50UXVldWU+IG1fZXZlbnRRdWV1ZTsKKwor
ICAgIFJlZlB0cjxBdWRpb0J1ZmZlcj4gbV9yZW5kZXJUYXJnZXQ7CisgICAgUmVmUHRyPEF1ZGlv
RGVzdGluYXRpb25Ob2RlPiBtX2Rlc3RpbmF0aW9uTm9kZTsKKyAgICBSZWZQdHI8QXVkaW9MaXN0
ZW5lcj4gbV9saXN0ZW5lcjsKKworICAgIHVuc2lnbmVkIG1fY29ubmVjdGlvbkNvdW50IHsgMCB9
OworCisgICAgLy8gR3JhcGggbG9ja2luZy4KKyAgICBMb2NrIG1fY29udGV4dEdyYXBoTXV0ZXg7
CisgICAgLy8gRklYTUU6IFVzaW5nIHZvbGF0aWxlIHNlZW1zIGluY29ycmVjdC4KKyAgICAvLyBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTgwMzMyCisgICAgVGhyZWFk
KiB2b2xhdGlsZSBtX2F1ZGlvVGhyZWFkIHsgbnVsbHB0ciB9OworICAgIFRocmVhZCogdm9sYXRp
bGUgbV9ncmFwaE93bmVyVGhyZWFkIHsgbnVsbHB0ciB9OyAvLyBpZiB0aGUgbG9jayBpcyBoZWxk
IHRoZW4gdGhpcyBpcyB0aGUgdGhyZWFkIHdoaWNoIG93bnMgaXQsIG90aGVyd2lzZSA9PSBudWxs
cHRyLgorCisgICAgc3RkOjp1bmlxdWVfcHRyPEFzeW5jQXVkaW9EZWNvZGVyPiBtX2F1ZGlvRGVj
b2RlcjsKKworICAgIC8vIFRoaXMgaXMgY29uc2lkZXJpbmcgMzIgaXMgbGFyZ2UgZW5vdWdoIGZv
ciBtdWx0aXBsZSBjaGFubmVscyBhdWRpby4KKyAgICAvLyBJdCBpcyBzb21ld2hhdCBhcmJpdHJh
cnkgYW5kIGNvdWxkIGJlIGluY3JlYXNlZCBpZiBuZWNlc3NhcnkuCisgICAgZW51bSB7IE1heE51
bWJlck9mQ2hhbm5lbHMgPSAzMiB9OworCisgICAgLy8gTnVtYmVyIG9mIEF1ZGlvQnVmZmVyU291
cmNlTm9kZXMgdGhhdCBhcmUgYWN0aXZlIChwbGF5aW5nKS4KKyAgICBzdGQ6OmF0b21pYzxpbnQ+
IG1fYWN0aXZlU291cmNlQ291bnQgeyAwIH07CisKKyAgICBCZWhhdmlvclJlc3RyaWN0aW9ucyBt
X3Jlc3RyaWN0aW9ucyB7IE5vUmVzdHJpY3Rpb25zIH07CisKKyAgICBTdGF0ZSBtX3N0YXRlIHsg
U3RhdGU6OlN1c3BlbmRlZCB9OworICAgIFJlZlB0cjxQZW5kaW5nQWN0aXZpdHk8V2ViS2l0QXVk
aW9Db250ZXh0Pj4gbV9wZW5kaW5nQWN0aXZpdHk7Cit9OworCitpbmxpbmUgQXVkaW9Db250ZXh0
U3RhdGUgV2ViS2l0QXVkaW9Db250ZXh0OjpzdGF0ZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1f
c3RhdGU7Cit9CisKK30gLy8gV2ViQ29yZQorCitTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0JFR0lO
KFdlYkNvcmU6OldlYktpdEF1ZGlvQ29udGV4dCkKKyAgICBzdGF0aWMgYm9vbCBpc1R5cGUoY29u
c3QgV2ViQ29yZTo6QXVkaW9Db250ZXh0QmFzZSYgY29udGV4dCkgeyByZXR1cm4gY29udGV4dC5p
c1dlYktpdEF1ZGlvQ29udGV4dCgpOyB9CitTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0VORCgpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1dlYktpdEF1ZGlvQ29u
dGV4dC5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1dlYktpdEF1ZGlvQ29u
dGV4dC5pZGwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjU2OTVjNzM2
Njk4Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9X
ZWJLaXRBdWRpb0NvbnRleHQuaWRsCkBAIC0wLDAgKzEsOTMgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTAsIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBP
U0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisg
KiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04KKyAqIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUworICogU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworWworICAg
IEFjdGl2ZURPTU9iamVjdCwKKyAgICBDb25kaXRpb25hbD1XRUJfQVVESU8sCisgICAgRW5hYmxl
ZEJ5U2V0dGluZz1XZWJBdWRpbywKKyAgICBFeHBvcnRNYWNybz1XRUJDT1JFX0VYUE9SVCwKKyAg
ICBJbnRlcmZhY2VOYW1lPXdlYmtpdEF1ZGlvQ29udGV4dCwKK10gaW50ZXJmYWNlIFdlYktpdEF1
ZGlvQ29udGV4dCA6IEV2ZW50VGFyZ2V0IHsKKyAgICBbQ2FsbFdpdGg9RG9jdW1lbnQsIE1heVRo
cm93RXhjZXB0aW9uXSBjb25zdHJ1Y3RvcigpOworCisgICAgLy8gQWxsIHJlbmRlcmVkIGF1ZGlv
IHVsdGltYXRlbHkgY29ubmVjdHMgdG8gZGVzdGluYXRpb24sIHdoaWNoIHJlcHJlc2VudHMgdGhl
IGF1ZGlvIGhhcmR3YXJlLgorICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBBdWRpb0Rlc3RpbmF0aW9u
Tm9kZSBkZXN0aW5hdGlvbjsKKworICAgIC8vIEFsbCBzY2hlZHVsZWQgdGltZXMgYXJlIHJlbGF0
aXZlIHRvIHRoaXMgdGltZSBpbiBzZWNvbmRzLgorICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSB1bnJl
c3RyaWN0ZWQgZG91YmxlIGN1cnJlbnRUaW1lOworCisgICAgLy8gQWxsIEF1ZGlvTm9kZXMgaW4g
dGhlIGNvbnRleHQgcnVuIGF0IHRoaXMgc2FtcGxlLXJhdGUgKHNhbXBsZS1mcmFtZXMgcGVyIHNl
Y29uZCkuCisgICAgcmVhZG9ubHkgYXR0cmlidXRlIHVucmVzdHJpY3RlZCBmbG9hdCBzYW1wbGVS
YXRlOworCisgICAgLy8gQWxsIHBhbm5pbmcgaXMgcmVsYXRpdmUgdG8gdGhpcyBsaXN0ZW5lci4K
KyAgICByZWFkb25seSBhdHRyaWJ1dGUgQXVkaW9MaXN0ZW5lciBsaXN0ZW5lcjsKKworICAgIFtJ
bXBsZW1lbnRlZEFzPXN1c3BlbmRSZW5kZXJpbmddIFByb21pc2U8dm9pZD4gc3VzcGVuZCgpOwor
ICAgIFtJbXBsZW1lbnRlZEFzPXJlc3VtZVJlbmRlcmluZ10gUHJvbWlzZTx2b2lkPiByZXN1bWUo
KTsKKyAgICBQcm9taXNlPHZvaWQ+IGNsb3NlKCk7CisKKyAgICByZWFkb25seSBhdHRyaWJ1dGUg
QXVkaW9Db250ZXh0U3RhdGUgc3RhdGU7CisgICAgYXR0cmlidXRlIEV2ZW50SGFuZGxlciBvbnN0
YXRlY2hhbmdlOworCisgICAgLy8gTnVtYmVyIG9mIEF1ZGlvQnVmZmVyU291cmNlTm9kZXMgdGhh
dCBhcmUgY3VycmVudGx5IHBsYXlpbmcuCisgICAgcmVhZG9ubHkgYXR0cmlidXRlIHVuc2lnbmVk
IGxvbmcgYWN0aXZlU291cmNlQ291bnQ7CisKKyAgICBbTWF5VGhyb3dFeGNlcHRpb25dIEF1ZGlv
QnVmZmVyIGNyZWF0ZUJ1ZmZlcih1bnNpZ25lZCBsb25nIG51bWJlck9mQ2hhbm5lbHMsIHVuc2ln
bmVkIGxvbmcgbnVtYmVyT2ZGcmFtZXMsIHVucmVzdHJpY3RlZCBmbG9hdCBzYW1wbGVSYXRlKTsK
KyAgICBbTWF5VGhyb3dFeGNlcHRpb25dIEF1ZGlvQnVmZmVyIGNyZWF0ZUJ1ZmZlcihBcnJheUJ1
ZmZlciBidWZmZXIsIGJvb2xlYW4gbWl4VG9Nb25vKTsKKworICAgIC8vIEFzeW5jaHJvbm91cyBh
dWRpbyBmaWxlIGRhdGEgZGVjb2RpbmcuCisgICAgLy8gRklYTUU6IHN1Y2Nlc3NDYWxsYmFjayBz
aG91bGQgYmUgb3B0aW9uYWwgYW5kIHRoZSBjYWxsYmFja3Mgc2hvdWxkIG5vdCBiZSBudWxsYWJs
ZS4gVGhpcyBzaG91bGQgYWxzbyByZXR1cm4gYSBQcm9taXNlLgorICAgIHZvaWQgZGVjb2RlQXVk
aW9EYXRhKEFycmF5QnVmZmVyIGF1ZGlvRGF0YSwgQXVkaW9CdWZmZXJDYWxsYmFjaz8gc3VjY2Vz
c0NhbGxiYWNrLCBvcHRpb25hbCBBdWRpb0J1ZmZlckNhbGxiYWNrPyBlcnJvckNhbGxiYWNrKTsK
KworICAgIC8vIFNvdXJjZXMKKyAgICBbTWF5VGhyb3dFeGNlcHRpb25dIEF1ZGlvQnVmZmVyU291
cmNlTm9kZSBjcmVhdGVCdWZmZXJTb3VyY2UoKTsKKworICAgIFtDb25kaXRpb25hbD1WSURFTywg
TWF5VGhyb3dFeGNlcHRpb25dIE1lZGlhRWxlbWVudEF1ZGlvU291cmNlTm9kZSBjcmVhdGVNZWRp
YUVsZW1lbnRTb3VyY2UoSFRNTE1lZGlhRWxlbWVudCBtZWRpYUVsZW1lbnQpOworCisgICAgW0Nv
bmRpdGlvbmFsPU1FRElBX1NUUkVBTSwgTWF5VGhyb3dFeGNlcHRpb25dIE1lZGlhU3RyZWFtQXVk
aW9Tb3VyY2VOb2RlIGNyZWF0ZU1lZGlhU3RyZWFtU291cmNlKE1lZGlhU3RyZWFtIG1lZGlhU3Ry
ZWFtKTsKKyAgICBbQ29uZGl0aW9uYWw9TUVESUFfU1RSRUFNLCBNYXlUaHJvd0V4Y2VwdGlvbl0g
TWVkaWFTdHJlYW1BdWRpb0Rlc3RpbmF0aW9uTm9kZSBjcmVhdGVNZWRpYVN0cmVhbURlc3RpbmF0
aW9uKCk7CisKKyAgICAvLyBQcm9jZXNzaW5nIG5vZGVzCisgICAgW01heVRocm93RXhjZXB0aW9u
XSBHYWluTm9kZSBjcmVhdGVHYWluKCk7CisgICAgW01heVRocm93RXhjZXB0aW9uXSBEZWxheU5v
ZGUgY3JlYXRlRGVsYXkob3B0aW9uYWwgdW5yZXN0cmljdGVkIGRvdWJsZSBtYXhEZWxheVRpbWUg
PSAxKTsKKyAgICBbTWF5VGhyb3dFeGNlcHRpb25dIEJpcXVhZEZpbHRlck5vZGUgY3JlYXRlQmlx
dWFkRmlsdGVyKCk7CisgICAgW01heVRocm93RXhjZXB0aW9uXSBXYXZlU2hhcGVyTm9kZSBjcmVh
dGVXYXZlU2hhcGVyKCk7CisgICAgW01heVRocm93RXhjZXB0aW9uXSBXZWJLaXRBdWRpb1Bhbm5l
ck5vZGUgY3JlYXRlUGFubmVyKCk7CisgICAgW01heVRocm93RXhjZXB0aW9uXSBDb252b2x2ZXJO
b2RlIGNyZWF0ZUNvbnZvbHZlcigpOworICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gRHluYW1pY3ND
b21wcmVzc29yTm9kZSBjcmVhdGVEeW5hbWljc0NvbXByZXNzb3IoKTsKKyAgICBbTWF5VGhyb3dF
eGNlcHRpb25dIEFuYWx5c2VyTm9kZSBjcmVhdGVBbmFseXNlcigpOworICAgIFtNYXlUaHJvd0V4
Y2VwdGlvbl0gU2NyaXB0UHJvY2Vzc29yTm9kZSBjcmVhdGVTY3JpcHRQcm9jZXNzb3Iob3B0aW9u
YWwgdW5zaWduZWQgbG9uZyBidWZmZXJTaXplID0gMCwgb3B0aW9uYWwgdW5zaWduZWQgbG9uZyBu
dW1iZXJPZklucHV0Q2hhbm5lbHMgPSAyLCBvcHRpb25hbCB1bnNpZ25lZCBsb25nIG51bWJlck9m
T3V0cHV0Q2hhbm5lbHMgPSAyKTsKKyAgICBbTWF5VGhyb3dFeGNlcHRpb25dIE9zY2lsbGF0b3JO
b2RlIGNyZWF0ZU9zY2lsbGF0b3IoKTsKKyAgICBbTWF5VGhyb3dFeGNlcHRpb25dIFBlcmlvZGlj
V2F2ZSBjcmVhdGVQZXJpb2RpY1dhdmUoRmxvYXQzMkFycmF5IHJlYWwsIEZsb2F0MzJBcnJheSBp
bWFnKTsKKworICAgIC8vIENoYW5uZWwgc3BsaXR0aW5nIGFuZCBtZXJnaW5nCisgICAgW01heVRo
cm93RXhjZXB0aW9uXSBDaGFubmVsU3BsaXR0ZXJOb2RlIGNyZWF0ZUNoYW5uZWxTcGxpdHRlcihv
cHRpb25hbCB1bnNpZ25lZCBsb25nIG51bWJlck9mT3V0cHV0cyA9IDYpOworICAgIFtNYXlUaHJv
d0V4Y2VwdGlvbl0gQ2hhbm5lbE1lcmdlck5vZGUgY3JlYXRlQ2hhbm5lbE1lcmdlcihvcHRpb25h
bCB1bnNpZ25lZCBsb25nIG51bWJlck9mSW5wdXRzID0gNik7CisKKyAgICAvLyBPZmZsaW5lIHJl
bmRlcmluZworICAgIC8vIHZvaWQgcHJlcGFyZU9mZmxpbmVCdWZmZXJSZW5kZXJpbmcodW5zaWdu
ZWQgbG9uZyBudW1iZXJPZkNoYW5uZWxzLCB1bnNpZ25lZCBsb25nIG51bWJlck9mRnJhbWVzLCB1
bnJlc3RyaWN0ZWQgZmxvYXQgc2FtcGxlUmF0ZSk7CisgICAgYXR0cmlidXRlIEV2ZW50SGFuZGxl
ciBvbmNvbXBsZXRlOworICAgIHZvaWQgc3RhcnRSZW5kZXJpbmcoKTsKK307CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1dlYktpdEF1ZGlvUGFubmVyTm9kZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1dlYktpdEF1ZGlvUGFubmVyTm9k
ZS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjI1OGY0NWU3Y2Zk
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9XZWJL
aXRBdWRpb1Bhbm5lck5vZGUuY3BwCkBAIC0wLDAgKzEsMzYzIEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDEwLCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBV
UlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
CisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04KKyAqIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUworICogU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lu
Y2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIldlYktpdEF1ZGlvUGFubmVyTm9kZS5oIgorCisj
aWYgRU5BQkxFKFdFQl9BVURJTykKKworI2luY2x1ZGUgIkF1ZGlvQnVmZmVyU291cmNlTm9kZS5o
IgorI2luY2x1ZGUgIkF1ZGlvQnVzLmgiCisjaW5jbHVkZSAiQXVkaW9Db250ZXh0LmgiCisjaW5j
bHVkZSAiQXVkaW9Ob2RlSW5wdXQuaCIKKyNpbmNsdWRlICJBdWRpb05vZGVPdXRwdXQuaCIKKyNp
bmNsdWRlICJIUlRGRGF0YWJhc2VMb2FkZXIuaCIKKyNpbmNsdWRlICJIUlRGUGFubmVyLmgiCisj
aW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgorI2luY2x1ZGUgPHd0Zi9Jc29NYWxs
b2NJbmxpbmVzLmg+CisjaW5jbHVkZSA8d3RmL01hdGhFeHRyYXMuaD4KKworbmFtZXNwYWNlIFdl
YkNvcmUgeworCitXVEZfTUFLRV9JU09fQUxMT0NBVEVEX0lNUEwoV2ViS2l0QXVkaW9QYW5uZXJO
b2RlKTsKKworc3RhdGljIHZvaWQgZml4TkFOcyhkb3VibGUgJngpCit7CisgICAgaWYgKHN0ZDo6
aXNuYW4oeCkgfHwgc3RkOjppc2luZih4KSkKKyAgICAgICAgeCA9IDAuMDsKK30KKworV2ViS2l0
QXVkaW9QYW5uZXJOb2RlOjpXZWJLaXRBdWRpb1Bhbm5lck5vZGUoV2ViS2l0QXVkaW9Db250ZXh0
JiBjb250ZXh0LCBmbG9hdCBzYW1wbGVSYXRlKQorICAgIDogUGFubmVyTm9kZUJhc2UoY29udGV4
dCwgc2FtcGxlUmF0ZSkKKyAgICAsIG1fcGFubmluZ01vZGVsKFBhbm5pbmdNb2RlbFR5cGU6OkhS
VEYpCisgICAgLCBtX2xhc3RHYWluKC0xLjApCisgICAgLCBtX2Nvbm5lY3Rpb25Db3VudCgwKQor
eworICAgIHNldE5vZGVUeXBlKE5vZGVUeXBlUGFubmVyKTsKKworICAgIC8vIExvYWQgdGhlIEhS
VEYgZGF0YWJhc2UgYXN5bmNocm9ub3VzbHkgc28gd2UgZG9uJ3QgYmxvY2sgdGhlIEphdmFzY3Jp
cHQgdGhyZWFkIHdoaWxlIGNyZWF0aW5nIHRoZSBIUlRGIGRhdGFiYXNlLgorICAgIG1faHJ0ZkRh
dGFiYXNlTG9hZGVyID0gSFJURkRhdGFiYXNlTG9hZGVyOjpjcmVhdGVBbmRMb2FkQXN5bmNocm9u
b3VzbHlJZk5lY2Vzc2FyeShjb250ZXh0LnNhbXBsZVJhdGUoKSk7CisKKyAgICBhZGRJbnB1dCht
YWtlVW5pcXVlPEF1ZGlvTm9kZUlucHV0Pih0aGlzKSk7CisgICAgYWRkT3V0cHV0KG1ha2VVbmlx
dWU8QXVkaW9Ob2RlT3V0cHV0Pih0aGlzLCAyKSk7CisKKyAgICAvLyBOb2RlLXNwZWNpZmljIGRl
ZmF1bHQgbWl4aW5nIHJ1bGVzLgorICAgIG1fY2hhbm5lbENvdW50ID0gMjsKKyAgICBtX2NoYW5u
ZWxDb3VudE1vZGUgPSBDbGFtcGVkTWF4OworICAgIG1fY2hhbm5lbEludGVycHJldGF0aW9uID0g
QXVkaW9CdXM6OlNwZWFrZXJzOworCisgICAgbV9kaXN0YW5jZUdhaW4gPSBBdWRpb1BhcmFtOjpj
cmVhdGUoY29udGV4dCwgImRpc3RhbmNlR2FpbiIsIDEuMCwgMC4wLCAxLjApOworICAgIG1fY29u
ZUdhaW4gPSBBdWRpb1BhcmFtOjpjcmVhdGUoY29udGV4dCwgImNvbmVHYWluIiwgMS4wLCAwLjAs
IDEuMCk7CisKKyAgICBtX3Bvc2l0aW9uID0gRmxvYXRQb2ludDNEKDAsIDAsIDApOworICAgIG1f
b3JpZW50YXRpb24gPSBGbG9hdFBvaW50M0QoMSwgMCwgMCk7CisgICAgbV92ZWxvY2l0eSA9IEZs
b2F0UG9pbnQzRCgwLCAwLCAwKTsKKworICAgIGluaXRpYWxpemUoKTsKK30KKworV2ViS2l0QXVk
aW9QYW5uZXJOb2RlOjp+V2ViS2l0QXVkaW9QYW5uZXJOb2RlKCkKK3sKKyAgICB1bmluaXRpYWxp
emUoKTsKK30KKwordm9pZCBXZWJLaXRBdWRpb1Bhbm5lck5vZGU6OnB1bGxJbnB1dHMoc2l6ZV90
IGZyYW1lc1RvUHJvY2VzcykKK3sKKyAgICAvLyBXZSBvdmVycmlkZSBwdWxsSW5wdXRzKCksIHNv
IHdlIGNhbiBkZXRlY3QgbmV3IEF1ZGlvU291cmNlTm9kZXMgd2hpY2ggaGF2ZSBjb25uZWN0ZWQg
dG8gdXMgd2hlbiBuZXcgY29ubmVjdGlvbnMgYXJlIG1hZGUuCisgICAgLy8gVGhlc2UgQXVkaW9T
b3VyY2VOb2RlcyBuZWVkIHRvIGJlIG1hZGUgYXdhcmUgb2Ygb3VyIGV4aXN0ZW5jZSBpbiBvcmRl
ciB0byBoYW5kbGUgZG9wcGxlciBzaGlmdCBwaXRjaCBjaGFuZ2VzLgorICAgIGlmIChtX2Nvbm5l
Y3Rpb25Db3VudCAhPSBjb250ZXh0KCkuY29ubmVjdGlvbkNvdW50KCkpIHsKKyAgICAgICAgbV9j
b25uZWN0aW9uQ291bnQgPSBjb250ZXh0KCkuY29ubmVjdGlvbkNvdW50KCk7CisKKyAgICAgICAg
Ly8gUmVjdXJzaXZlbHkgZ28gdGhyb3VnaCBhbGwgbm9kZXMgY29ubmVjdGVkIHRvIHVzLgorICAg
ICAgICBIYXNoU2V0PEF1ZGlvTm9kZSo+IHZpc2l0ZWROb2RlczsKKyAgICAgICAgbm90aWZ5QXVk
aW9Tb3VyY2VzQ29ubmVjdGVkVG9Ob2RlKHRoaXMsIHZpc2l0ZWROb2Rlcyk7CisgICAgfQorCisg
ICAgQXVkaW9Ob2RlOjpwdWxsSW5wdXRzKGZyYW1lc1RvUHJvY2Vzcyk7Cit9CisKK3ZvaWQgV2Vi
S2l0QXVkaW9QYW5uZXJOb2RlOjpwcm9jZXNzKHNpemVfdCBmcmFtZXNUb1Byb2Nlc3MpCit7Cisg
ICAgQXVkaW9CdXMqIGRlc3RpbmF0aW9uID0gb3V0cHV0KDApLT5idXMoKTsKKworICAgIGlmICgh
aXNJbml0aWFsaXplZCgpIHx8ICFpbnB1dCgwKS0+aXNDb25uZWN0ZWQoKSB8fCAhbV9wYW5uZXIu
Z2V0KCkpIHsKKyAgICAgICAgZGVzdGluYXRpb24tPnplcm8oKTsKKyAgICAgICAgcmV0dXJuOwor
ICAgIH0KKworICAgIEF1ZGlvQnVzKiBzb3VyY2UgPSBpbnB1dCgwKS0+YnVzKCk7CisgICAgaWYg
KCFzb3VyY2UpIHsKKyAgICAgICAgZGVzdGluYXRpb24tPnplcm8oKTsKKyAgICAgICAgcmV0dXJu
OworICAgIH0KKworICAgIC8vIEhSVEZEYXRhYmFzZSBzaG91bGQgYmUgbG9hZGVkIGJlZm9yZSBw
cm9jZWVkaW5nIGZvciBvZmZsaW5lIGF1ZGlvIGNvbnRleHQgd2hlbiBwYW5uaW5nTW9kZWwoKSBp
cyAiSFJURiIuCisgICAgaWYgKHBhbm5pbmdNb2RlbCgpID09IFBhbm5pbmdNb2RlbFR5cGU6OkhS
VEYgJiYgIW1faHJ0ZkRhdGFiYXNlTG9hZGVyLT5pc0xvYWRlZCgpKSB7CisgICAgICAgIGlmIChj
b250ZXh0KCkuaXNPZmZsaW5lQ29udGV4dCgpKQorICAgICAgICAgICAgbV9ocnRmRGF0YWJhc2VM
b2FkZXItPndhaXRGb3JMb2FkZXJUaHJlYWRDb21wbGV0aW9uKCk7CisgICAgICAgIGVsc2Ugewor
ICAgICAgICAgICAgZGVzdGluYXRpb24tPnplcm8oKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAg
ICAgICAgfQorICAgIH0KKworICAgIC8vIFRoZSBhdWRpbyB0aHJlYWQgY2FuJ3QgYmxvY2sgb24g
dGhpcyBsb2NrLCBzbyB3ZSB1c2Ugc3RkOjp0cnlfdG9fbG9jayBpbnN0ZWFkLgorICAgIHN0ZDo6
dW5pcXVlX2xvY2s8TG9jaz4gbG9jayhtX3Bhbm5lck11dGV4LCBzdGQ6OnRyeV90b19sb2NrKTsK
KyAgICBpZiAoIWxvY2sub3duc19sb2NrKCkpIHsKKyAgICAgICAgLy8gVG9vIGJhZCAtIFRoZSB0
cnlfbG9jaygpIGZhaWxlZC4gV2UgbXVzdCBiZSBpbiB0aGUgbWlkZGxlIG9mIGNoYW5naW5nIHRo
ZSBwYW5uZXIuCisgICAgICAgIGRlc3RpbmF0aW9uLT56ZXJvKCk7CisgICAgICAgIHJldHVybjsK
KyAgICB9CisKKyAgICAvLyBBcHBseSB0aGUgcGFubmluZyBlZmZlY3QuCisgICAgZG91YmxlIGF6
aW11dGg7CisgICAgZG91YmxlIGVsZXZhdGlvbjsKKyAgICBnZXRBemltdXRoRWxldmF0aW9uKCZh
emltdXRoLCAmZWxldmF0aW9uKTsKKyAgICBtX3Bhbm5lci0+cGFuKGF6aW11dGgsIGVsZXZhdGlv
biwgc291cmNlLCBkZXN0aW5hdGlvbiwgZnJhbWVzVG9Qcm9jZXNzKTsKKworICAgIC8vIEdldCB0
aGUgZGlzdGFuY2UgYW5kIGNvbmUgZ2Fpbi4KKyAgICBkb3VibGUgdG90YWxHYWluID0gZGlzdGFu
Y2VDb25lR2FpbigpOworCisgICAgLy8gU25hcCB0byBkZXNpcmVkIGdhaW4gYXQgdGhlIGJlZ2lu
bmluZy4KKyAgICBpZiAobV9sYXN0R2FpbiA9PSAtMS4wKQorICAgICAgICBtX2xhc3RHYWluID0g
dG90YWxHYWluOworCisgICAgLy8gQXBwbHkgZ2FpbiBpbi1wbGFjZSB3aXRoIGRlLXppcHBlcmlu
Zy4KKyAgICBkZXN0aW5hdGlvbi0+Y29weVdpdGhHYWluRnJvbSgqZGVzdGluYXRpb24sICZtX2xh
c3RHYWluLCB0b3RhbEdhaW4pOworfQorCit2b2lkIFdlYktpdEF1ZGlvUGFubmVyTm9kZTo6cmVz
ZXQoKQoreworICAgIG1fbGFzdEdhaW4gPSAtMS4wOyAvLyBmb3JjZSB0byBzbmFwIHRvIGluaXRp
YWwgZ2FpbgorICAgIGlmIChtX3Bhbm5lci5nZXQoKSkKKyAgICAgICAgbV9wYW5uZXItPnJlc2V0
KCk7Cit9CisKK3ZvaWQgV2ViS2l0QXVkaW9QYW5uZXJOb2RlOjppbml0aWFsaXplKCkKK3sKKyAg
ICBpZiAoaXNJbml0aWFsaXplZCgpKQorICAgICAgICByZXR1cm47CisKKyAgICBtX3Bhbm5lciA9
IFBhbm5lcjo6Y3JlYXRlKG1fcGFubmluZ01vZGVsLCBzYW1wbGVSYXRlKCksIG1faHJ0ZkRhdGFi
YXNlTG9hZGVyLmdldCgpKTsKKworICAgIEF1ZGlvTm9kZTo6aW5pdGlhbGl6ZSgpOworfQorCit2
b2lkIFdlYktpdEF1ZGlvUGFubmVyTm9kZTo6dW5pbml0aWFsaXplKCkKK3sKKyAgICBpZiAoIWlz
SW5pdGlhbGl6ZWQoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9wYW5uZXIgPSBudWxscHRy
OworICAgIEF1ZGlvTm9kZTo6dW5pbml0aWFsaXplKCk7Cit9CisKK0F1ZGlvTGlzdGVuZXIqIFdl
YktpdEF1ZGlvUGFubmVyTm9kZTo6bGlzdGVuZXIoKQoreworICAgIHJldHVybiBjb250ZXh0KCku
bGlzdGVuZXIoKTsKK30KKwordm9pZCBXZWJLaXRBdWRpb1Bhbm5lck5vZGU6OnNldFBhbm5pbmdN
b2RlbChQYW5uaW5nTW9kZWxUeXBlIG1vZGVsKQoreworICAgIGlmICghbV9wYW5uZXIuZ2V0KCkg
fHwgbW9kZWwgIT0gbV9wYW5uaW5nTW9kZWwpIHsKKyAgICAgICAgLy8gVGhpcyBzeW5jaHJvbml6
ZXMgd2l0aCBwcm9jZXNzKCkuCisgICAgICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sobV9wYW5u
ZXJNdXRleCk7CisKKyAgICAgICAgbV9wYW5uZXIgPSBQYW5uZXI6OmNyZWF0ZShtb2RlbCwgc2Ft
cGxlUmF0ZSgpLCBtX2hydGZEYXRhYmFzZUxvYWRlci5nZXQoKSk7CisgICAgICAgIG1fcGFubmlu
Z01vZGVsID0gbW9kZWw7CisgICAgfQorfQorCitEaXN0YW5jZU1vZGVsVHlwZSBXZWJLaXRBdWRp
b1Bhbm5lck5vZGU6OmRpc3RhbmNlTW9kZWwoKSBjb25zdAoreworICAgIHJldHVybiBjb25zdF9j
YXN0PFdlYktpdEF1ZGlvUGFubmVyTm9kZSo+KHRoaXMpLT5tX2Rpc3RhbmNlRWZmZWN0Lm1vZGVs
KCk7Cit9CisKK3ZvaWQgV2ViS2l0QXVkaW9QYW5uZXJOb2RlOjpzZXREaXN0YW5jZU1vZGVsKERp
c3RhbmNlTW9kZWxUeXBlIG1vZGVsKQoreworICAgIG1fZGlzdGFuY2VFZmZlY3Quc2V0TW9kZWwo
bW9kZWwsIHRydWUpOworfQorCit2b2lkIFdlYktpdEF1ZGlvUGFubmVyTm9kZTo6Z2V0QXppbXV0
aEVsZXZhdGlvbihkb3VibGUqIG91dEF6aW11dGgsIGRvdWJsZSogb3V0RWxldmF0aW9uKQorewor
ICAgIC8vIEZJWE1FOiB3ZSBzaG91bGQgY2FjaGUgYXppbXV0aCBhbmQgZWxldmF0aW9uIChpZiBw
b3NzaWJsZSksIHNvIHdlIG9ubHkgcmUtY2FsY3VsYXRlIGlmIGEgY2hhbmdlIGhhcyBiZWVuIG1h
ZGUuCisKKyAgICBkb3VibGUgYXppbXV0aCA9IDAuMDsKKworICAgIC8vIENhbGN1bGF0ZSB0aGUg
c291cmNlLWxpc3RlbmVyIHZlY3RvcgorICAgIEZsb2F0UG9pbnQzRCBsaXN0ZW5lclBvc2l0aW9u
ID0gbGlzdGVuZXIoKS0+cG9zaXRpb24oKTsKKyAgICBGbG9hdFBvaW50M0Qgc291cmNlTGlzdGVu
ZXIgPSBwb3NpdGlvbigpIC0gbGlzdGVuZXJQb3NpdGlvbjsKKworICAgIGlmIChzb3VyY2VMaXN0
ZW5lci5pc1plcm8oKSkgeworICAgICAgICAvLyBkZWdlbmVyYXRlIGNhc2UgaWYgc291cmNlIGFu
ZCBsaXN0ZW5lciBhcmUgYXQgdGhlIHNhbWUgcG9pbnQKKyAgICAgICAgKm91dEF6aW11dGggPSAw
LjA7CisgICAgICAgICpvdXRFbGV2YXRpb24gPSAwLjA7CisgICAgICAgIHJldHVybjsKKyAgICB9
CisKKyAgICBzb3VyY2VMaXN0ZW5lci5ub3JtYWxpemUoKTsKKworICAgIC8vIEFsaWduIGF4ZXMK
KyAgICBGbG9hdFBvaW50M0QgbGlzdGVuZXJGcm9udCA9IGxpc3RlbmVyKCktPm9yaWVudGF0aW9u
KCk7CisgICAgRmxvYXRQb2ludDNEIGxpc3RlbmVyVXAgPSBsaXN0ZW5lcigpLT51cFZlY3Rvcigp
OworICAgIEZsb2F0UG9pbnQzRCBsaXN0ZW5lclJpZ2h0ID0gbGlzdGVuZXJGcm9udC5jcm9zcyhs
aXN0ZW5lclVwKTsKKyAgICBsaXN0ZW5lclJpZ2h0Lm5vcm1hbGl6ZSgpOworCisgICAgRmxvYXRQ
b2ludDNEIGxpc3RlbmVyRnJvbnROb3JtID0gbGlzdGVuZXJGcm9udDsKKyAgICBsaXN0ZW5lckZy
b250Tm9ybS5ub3JtYWxpemUoKTsKKworICAgIEZsb2F0UG9pbnQzRCB1cCA9IGxpc3RlbmVyUmln
aHQuY3Jvc3MobGlzdGVuZXJGcm9udE5vcm0pOworCisgICAgZmxvYXQgdXBQcm9qZWN0aW9uID0g
c291cmNlTGlzdGVuZXIuZG90KHVwKTsKKworICAgIEZsb2F0UG9pbnQzRCBwcm9qZWN0ZWRTb3Vy
Y2UgPSBzb3VyY2VMaXN0ZW5lciAtIHVwUHJvamVjdGlvbiAqIHVwOworICAgIHByb2plY3RlZFNv
dXJjZS5ub3JtYWxpemUoKTsKKworICAgIGF6aW11dGggPSAxODAuMCAqIGFjb3MocHJvamVjdGVk
U291cmNlLmRvdChsaXN0ZW5lclJpZ2h0KSkgLyBwaURvdWJsZTsKKyAgICBmaXhOQU5zKGF6aW11
dGgpOyAvLyBhdm9pZCBpbGxlZ2FsIHZhbHVlcworCisgICAgLy8gU291cmNlICBpbiBmcm9udCBv
ciBiZWhpbmQgdGhlIGxpc3RlbmVyCisgICAgZG91YmxlIGZyb250QmFjayA9IHByb2plY3RlZFNv
dXJjZS5kb3QobGlzdGVuZXJGcm9udE5vcm0pOworICAgIGlmIChmcm9udEJhY2sgPCAwLjApCisg
ICAgICAgIGF6aW11dGggPSAzNjAuMCAtIGF6aW11dGg7CisKKyAgICAvLyBNYWtlIGF6aW11dGgg
cmVsYXRpdmUgdG8gImZyb250IiBhbmQgbm90ICJyaWdodCIgbGlzdGVuZXIgdmVjdG9yCisgICAg
aWYgKChhemltdXRoID49IDAuMCkgJiYgKGF6aW11dGggPD0gMjcwLjApKQorICAgICAgICBhemlt
dXRoID0gOTAuMCAtIGF6aW11dGg7CisgICAgZWxzZQorICAgICAgICBhemltdXRoID0gNDUwLjAg
LSBhemltdXRoOworCisgICAgLy8gRWxldmF0aW9uCisgICAgZG91YmxlIGVsZXZhdGlvbiA9IDkw
LjAgLSAxODAuMCAqIGFjb3Moc291cmNlTGlzdGVuZXIuZG90KHVwKSkgLyBwaURvdWJsZTsKKyAg
ICBmaXhOQU5zKGVsZXZhdGlvbik7IC8vIGF2b2lkIGlsbGVnYWwgdmFsdWVzCisKKyAgICBpZiAo
ZWxldmF0aW9uID4gOTAuMCkKKyAgICAgICAgZWxldmF0aW9uID0gMTgwLjAgLSBlbGV2YXRpb247
CisgICAgZWxzZSBpZiAoZWxldmF0aW9uIDwgLTkwLjApCisgICAgICAgIGVsZXZhdGlvbiA9IC0x
ODAuMCAtIGVsZXZhdGlvbjsKKworICAgIGlmIChvdXRBemltdXRoKQorICAgICAgICAqb3V0QXpp
bXV0aCA9IGF6aW11dGg7CisgICAgaWYgKG91dEVsZXZhdGlvbikKKyAgICAgICAgKm91dEVsZXZh
dGlvbiA9IGVsZXZhdGlvbjsKK30KKworZmxvYXQgV2ViS2l0QXVkaW9QYW5uZXJOb2RlOjpkb3Bw
bGVyUmF0ZSgpCit7CisgICAgZG91YmxlIGRvcHBsZXJTaGlmdCA9IDEuMDsKKworICAgIC8vIEZJ
WE1FOiBvcHRpbWl6ZSBmb3IgY2FzZSB3aGVuIG5laXRoZXIgc291cmNlIG5vciBsaXN0ZW5lciBo
YXMgY2hhbmdlZC4uLgorICAgIGRvdWJsZSBkb3BwbGVyRmFjdG9yID0gbGlzdGVuZXIoKS0+ZG9w
cGxlckZhY3RvcigpOworCisgICAgaWYgKGRvcHBsZXJGYWN0b3IgPiAwLjApIHsKKyAgICAgICAg
ZG91YmxlIHNwZWVkT2ZTb3VuZCA9IGxpc3RlbmVyKCktPnNwZWVkT2ZTb3VuZCgpOworCisgICAg
ICAgIGNvbnN0IEZsb2F0UG9pbnQzRCAmc291cmNlVmVsb2NpdHkgPSBtX3ZlbG9jaXR5OworICAg
ICAgICBjb25zdCBGbG9hdFBvaW50M0QgJmxpc3RlbmVyVmVsb2NpdHkgPSBsaXN0ZW5lcigpLT52
ZWxvY2l0eSgpOworCisgICAgICAgIC8vIERvbid0IGJvdGhlciBpZiBib3RoIHNvdXJjZSBhbmQg
bGlzdGVuZXIgaGF2ZSBubyB2ZWxvY2l0eQorICAgICAgICBib29sIHNvdXJjZUhhc1ZlbG9jaXR5
ID0gIXNvdXJjZVZlbG9jaXR5LmlzWmVybygpOworICAgICAgICBib29sIGxpc3RlbmVySGFzVmVs
b2NpdHkgPSAhbGlzdGVuZXJWZWxvY2l0eS5pc1plcm8oKTsKKworICAgICAgICBpZiAoc291cmNl
SGFzVmVsb2NpdHkgfHwgbGlzdGVuZXJIYXNWZWxvY2l0eSkgeworICAgICAgICAgICAgLy8gQ2Fs
Y3VsYXRlIHRoZSBzb3VyY2UgdG8gbGlzdGVuZXIgdmVjdG9yCisgICAgICAgICAgICBGbG9hdFBv
aW50M0QgbGlzdGVuZXJQb3NpdGlvbiA9IGxpc3RlbmVyKCktPnBvc2l0aW9uKCk7CisgICAgICAg
ICAgICBGbG9hdFBvaW50M0Qgc291cmNlVG9MaXN0ZW5lciA9IHBvc2l0aW9uKCkgLSBsaXN0ZW5l
clBvc2l0aW9uOworCisgICAgICAgICAgICBkb3VibGUgc291cmNlTGlzdGVuZXJNYWduaXR1ZGUg
PSBzb3VyY2VUb0xpc3RlbmVyLmxlbmd0aCgpOworCisgICAgICAgICAgICBkb3VibGUgbGlzdGVu
ZXJQcm9qZWN0aW9uID0gc291cmNlVG9MaXN0ZW5lci5kb3QobGlzdGVuZXJWZWxvY2l0eSkgLyBz
b3VyY2VMaXN0ZW5lck1hZ25pdHVkZTsKKyAgICAgICAgICAgIGRvdWJsZSBzb3VyY2VQcm9qZWN0
aW9uID0gc291cmNlVG9MaXN0ZW5lci5kb3Qoc291cmNlVmVsb2NpdHkpIC8gc291cmNlTGlzdGVu
ZXJNYWduaXR1ZGU7CisKKyAgICAgICAgICAgIGxpc3RlbmVyUHJvamVjdGlvbiA9IC1saXN0ZW5l
clByb2plY3Rpb247CisgICAgICAgICAgICBzb3VyY2VQcm9qZWN0aW9uID0gLXNvdXJjZVByb2pl
Y3Rpb247CisKKyAgICAgICAgICAgIGRvdWJsZSBzY2FsZWRTcGVlZE9mU291bmQgPSBzcGVlZE9m
U291bmQgLyBkb3BwbGVyRmFjdG9yOworICAgICAgICAgICAgbGlzdGVuZXJQcm9qZWN0aW9uID0g
c3RkOjptaW4obGlzdGVuZXJQcm9qZWN0aW9uLCBzY2FsZWRTcGVlZE9mU291bmQpOworICAgICAg
ICAgICAgc291cmNlUHJvamVjdGlvbiA9IHN0ZDo6bWluKHNvdXJjZVByb2plY3Rpb24sIHNjYWxl
ZFNwZWVkT2ZTb3VuZCk7CisKKyAgICAgICAgICAgIGRvcHBsZXJTaGlmdCA9ICgoc3BlZWRPZlNv
dW5kIC0gZG9wcGxlckZhY3RvciAqIGxpc3RlbmVyUHJvamVjdGlvbikgLyAoc3BlZWRPZlNvdW5k
IC0gZG9wcGxlckZhY3RvciAqIHNvdXJjZVByb2plY3Rpb24pKTsKKyAgICAgICAgICAgIGZpeE5B
TnMoZG9wcGxlclNoaWZ0KTsgLy8gYXZvaWQgaWxsZWdhbCB2YWx1ZXMKKworICAgICAgICAgICAg
Ly8gTGltaXQgdGhlIHBpdGNoIHNoaWZ0aW5nIHRvIDQgb2N0YXZlcyB1cCBhbmQgMyBvY3RhdmVz
IGRvd24uCisgICAgICAgICAgICBpZiAoZG9wcGxlclNoaWZ0ID4gMTYuMCkKKyAgICAgICAgICAg
ICAgICBkb3BwbGVyU2hpZnQgPSAxNi4wOworICAgICAgICAgICAgZWxzZSBpZiAoZG9wcGxlclNo
aWZ0IDwgMC4xMjUpCisgICAgICAgICAgICAgICAgZG9wcGxlclNoaWZ0ID0gMC4xMjU7CisgICAg
ICAgIH0KKyAgICB9CisKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8ZmxvYXQ+KGRvcHBsZXJTaGlm
dCk7Cit9CisKK2Zsb2F0IFdlYktpdEF1ZGlvUGFubmVyTm9kZTo6ZGlzdGFuY2VDb25lR2Fpbigp
Cit7CisgICAgRmxvYXRQb2ludDNEIGxpc3RlbmVyUG9zaXRpb24gPSBsaXN0ZW5lcigpLT5wb3Np
dGlvbigpOworICAgIEZsb2F0UG9pbnQzRCBzb3VyY2VQb3NpdGlvbiA9IHBvc2l0aW9uKCk7CisK
KyAgICBkb3VibGUgbGlzdGVuZXJEaXN0YW5jZSA9IHNvdXJjZVBvc2l0aW9uLmRpc3RhbmNlVG8o
bGlzdGVuZXJQb3NpdGlvbik7CisgICAgZG91YmxlIGRpc3RhbmNlR2FpbiA9IG1fZGlzdGFuY2VF
ZmZlY3QuZ2FpbihsaXN0ZW5lckRpc3RhbmNlKTsKKworICAgIG1fZGlzdGFuY2VHYWluLT5zZXRW
YWx1ZShzdGF0aWNfY2FzdDxmbG9hdD4oZGlzdGFuY2VHYWluKSk7CisKKyAgICAvLyBGSVhNRTog
Y291bGQgb3B0aW1pemUgYnkgY2FjaGluZyBjb25lR2FpbgorICAgIGRvdWJsZSBjb25lR2FpbiA9
IG1fY29uZUVmZmVjdC5nYWluKHNvdXJjZVBvc2l0aW9uLCBtX29yaWVudGF0aW9uLCBsaXN0ZW5l
clBvc2l0aW9uKTsKKworICAgIG1fY29uZUdhaW4tPnNldFZhbHVlKHN0YXRpY19jYXN0PGZsb2F0
Pihjb25lR2FpbikpOworCisgICAgcmV0dXJuIGZsb2F0KGRpc3RhbmNlR2FpbiAqIGNvbmVHYWlu
KTsKK30KKwordm9pZCBXZWJLaXRBdWRpb1Bhbm5lck5vZGU6Om5vdGlmeUF1ZGlvU291cmNlc0Nv
bm5lY3RlZFRvTm9kZShBdWRpb05vZGUqIG5vZGUsIEhhc2hTZXQ8QXVkaW9Ob2RlKj4mIHZpc2l0
ZWROb2RlcykKK3sKKyAgICBBU1NFUlQobm9kZSk7CisgICAgaWYgKCFub2RlKQorICAgICAgICBy
ZXR1cm47CisKKyAgICAvLyBGaXJzdCBjaGVjayBpZiB0aGlzIG5vZGUgaXMgYW4gQXVkaW9CdWZm
ZXJTb3VyY2VOb2RlLiBJZiBzbywgbGV0IGl0IGtub3cgYWJvdXQgdXMgc28gdGhhdCBkb3BwbGVy
IHNoaWZ0IHBpdGNoIGNhbiBiZSB0YWtlbiBpbnRvIGFjY291bnQuCisgICAgaWYgKG5vZGUtPm5v
ZGVUeXBlKCkgPT0gTm9kZVR5cGVBdWRpb0J1ZmZlclNvdXJjZSkgeworICAgICAgICBBdWRpb0J1
ZmZlclNvdXJjZU5vZGUqIGJ1ZmZlclNvdXJjZU5vZGUgPSByZWludGVycHJldF9jYXN0PEF1ZGlv
QnVmZmVyU291cmNlTm9kZSo+KG5vZGUpOworICAgICAgICBidWZmZXJTb3VyY2VOb2RlLT5zZXRQ
YW5uZXJOb2RlKHRoaXMpOworICAgIH0gZWxzZSB7CisgICAgICAgIC8vIEdvIHRocm91Z2ggYWxs
IGlucHV0cyB0byB0aGlzIG5vZGUuCisgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBu
b2RlLT5udW1iZXJPZklucHV0cygpOyArK2kpIHsKKyAgICAgICAgICAgIEF1ZGlvTm9kZUlucHV0
KiBpbnB1dCA9IG5vZGUtPmlucHV0KGkpOworCisgICAgICAgICAgICAvLyBGb3IgZWFjaCBpbnB1
dCwgZ28gdGhyb3VnaCBhbGwgb2YgaXRzIGNvbm5lY3Rpb25zLCBsb29raW5nIGZvciBBdWRpb0J1
ZmZlclNvdXJjZU5vZGVzLgorICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBqID0gMDsgaiA8IGlu
cHV0LT5udW1iZXJPZlJlbmRlcmluZ0Nvbm5lY3Rpb25zKCk7ICsraikgeworICAgICAgICAgICAg
ICAgIEF1ZGlvTm9kZU91dHB1dCogY29ubmVjdGVkT3V0cHV0ID0gaW5wdXQtPnJlbmRlcmluZ091
dHB1dChqKTsKKyAgICAgICAgICAgICAgICBBdWRpb05vZGUqIGNvbm5lY3RlZE5vZGUgPSBjb25u
ZWN0ZWRPdXRwdXQtPm5vZGUoKTsKKyAgICAgICAgICAgICAgICBpZiAodmlzaXRlZE5vZGVzLmNv
bnRhaW5zKGNvbm5lY3RlZE5vZGUpKQorICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKKwor
ICAgICAgICAgICAgICAgIHZpc2l0ZWROb2Rlcy5hZGQoY29ubmVjdGVkTm9kZSk7CisgICAgICAg
ICAgICAgICAgbm90aWZ5QXVkaW9Tb3VyY2VzQ29ubmVjdGVkVG9Ob2RlKGNvbm5lY3RlZE5vZGUs
IHZpc2l0ZWROb2Rlcyk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9Cit9CisKK30g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShXRUJfQVVESU8pCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1dlYktpdEF1ZGlvUGFubmVy
Tm9kZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9XZWJLaXRBdWRpb1Bhbm5l
ck5vZGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uODk3OTdjM2M0
YzUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1dl
YktpdEF1ZGlvUGFubmVyTm9kZS5oCkBAIC0wLDAgKzEsMTYwIEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDEwLCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBV
UlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
CisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04KKyAqIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUworICogU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3By
YWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoV0VCX0FVRElPKQorCisjaW5jbHVkZSAiQXVkaW9MaXN0
ZW5lci5oIgorI2luY2x1ZGUgIkF1ZGlvTm9kZS5oIgorI2luY2x1ZGUgIkF1ZGlvUGFyYW0uaCIK
KyNpbmNsdWRlICJDb25lLmgiCisjaW5jbHVkZSAiRGlzdGFuY2UuaCIKKyNpbmNsdWRlICJGbG9h
dFBvaW50M0QuaCIKKyNpbmNsdWRlICJQYW5uZXIuaCIKKyNpbmNsdWRlICJQYW5uZXJOb2RlLmgi
CisjaW5jbHVkZSAiV2ViS2l0QXVkaW9Db250ZXh0LmgiCisjaW5jbHVkZSA8bWVtb3J5PgorI2lu
Y2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CisjaW5jbHVkZSA8d3RmL0xvY2suaD4KKworbmFtZXNwYWNl
IFdlYkNvcmUgeworCitjbGFzcyBIUlRGRGF0YWJhc2VMb2FkZXI7CisKKy8vIFBhbm5lck5vZGUg
aXMgYW4gQXVkaW9Ob2RlIHdpdGggb25lIGlucHV0IGFuZCBvbmUgb3V0cHV0LgorLy8gSXQgcG9z
aXRpb25zIGEgc291bmQgaW4gM0Qgc3BhY2UsIHdpdGggdGhlIGV4YWN0IGVmZmVjdCBkZXBlbmRl
bnQgb24gdGhlIHBhbm5pbmcgbW9kZWwuCisvLyBJdCBoYXMgYSBwb3NpdGlvbiBhbmQgYW4gb3Jp
ZW50YXRpb24gaW4gM0Qgc3BhY2Ugd2hpY2ggaXMgcmVsYXRpdmUgdG8gdGhlIHBvc2l0aW9uIGFu
ZCBvcmllbnRhdGlvbiBvZiB0aGUgY29udGV4dCdzIEF1ZGlvTGlzdGVuZXIuCisvLyBBIGRpc3Rh
bmNlIGVmZmVjdCB3aWxsIGF0dGVudWF0ZSB0aGUgZ2FpbiBhcyB0aGUgcG9zaXRpb24gbW92ZXMg
YXdheSBmcm9tIHRoZSBsaXN0ZW5lci4KKy8vIEEgY29uZSBlZmZlY3Qgd2lsbCBhdHRlbnVhdGUg
dGhlIGdhaW4gYXMgdGhlIG9yaWVudGF0aW9uIG1vdmVzIGF3YXkgZnJvbSB0aGUgbGlzdGVuZXIu
CisvLyBBbGwgb2YgdGhlc2UgZWZmZWN0cyBmb2xsb3cgdGhlIE9wZW5BTCBzcGVjaWZpY2F0aW9u
IHZlcnkgY2xvc2VseS4KKworY2xhc3MgV2ViS2l0QXVkaW9QYW5uZXJOb2RlIGZpbmFsIDogcHVi
bGljIFBhbm5lck5vZGVCYXNlIHsKKyAgICBXVEZfTUFLRV9JU09fQUxMT0NBVEVEKFdlYktpdEF1
ZGlvUGFubmVyTm9kZSk7CitwdWJsaWM6CisgICAgc3RhdGljIFJlZjxXZWJLaXRBdWRpb1Bhbm5l
ck5vZGU+IGNyZWF0ZShXZWJLaXRBdWRpb0NvbnRleHQmIGNvbnRleHQsIGZsb2F0IHNhbXBsZVJh
dGUpCisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBXZWJLaXRBdWRpb1Bhbm5l
ck5vZGUoY29udGV4dCwgc2FtcGxlUmF0ZSkpOworICAgIH0KKworICAgIHZpcnR1YWwgfldlYktp
dEF1ZGlvUGFubmVyTm9kZSgpOworCisgICAgV2ViS2l0QXVkaW9Db250ZXh0JiBjb250ZXh0KCkg
eyByZXR1cm4gZG93bmNhc3Q8V2ViS2l0QXVkaW9Db250ZXh0PihBdWRpb05vZGU6OmNvbnRleHQo
KSk7IH0KKyAgICBjb25zdCBXZWJLaXRBdWRpb0NvbnRleHQmIGNvbnRleHQoKSBjb25zdCB7IHJl
dHVybiBkb3duY2FzdDxXZWJLaXRBdWRpb0NvbnRleHQ+KEF1ZGlvTm9kZTo6Y29udGV4dCgpKTsg
fQorCisgICAgLy8gQXVkaW9Ob2RlCisgICAgdm9pZCBwcm9jZXNzKHNpemVfdCBmcmFtZXNUb1By
b2Nlc3MpIG92ZXJyaWRlOworICAgIHZvaWQgcHVsbElucHV0cyhzaXplX3QgZnJhbWVzVG9Qcm9j
ZXNzKSBvdmVycmlkZTsKKyAgICB2b2lkIHJlc2V0KCkgb3ZlcnJpZGU7CisgICAgdm9pZCBpbml0
aWFsaXplKCkgb3ZlcnJpZGU7CisgICAgdm9pZCB1bmluaXRpYWxpemUoKSBvdmVycmlkZTsKKwor
ICAgIC8vIExpc3RlbmVyCisgICAgQXVkaW9MaXN0ZW5lciogbGlzdGVuZXIoKTsKKworICAgIC8v
IFBhbm5pbmcgbW9kZWwKKyAgICBQYW5uaW5nTW9kZWxUeXBlIHBhbm5pbmdNb2RlbCgpIGNvbnN0
IHsgcmV0dXJuIG1fcGFubmluZ01vZGVsOyB9CisgICAgdm9pZCBzZXRQYW5uaW5nTW9kZWwoUGFu
bmluZ01vZGVsVHlwZSk7CisKKyAgICAvLyBQb3NpdGlvbgorICAgIEZsb2F0UG9pbnQzRCBwb3Np
dGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fcG9zaXRpb247IH0KKyAgICB2b2lkIHNldFBvc2l0aW9u
KGZsb2F0IHgsIGZsb2F0IHksIGZsb2F0IHopIHsgbV9wb3NpdGlvbiA9IEZsb2F0UG9pbnQzRCh4
LCB5LCB6KTsgfQorCisgICAgLy8gT3JpZW50YXRpb24KKyAgICBGbG9hdFBvaW50M0Qgb3JpZW50
YXRpb24oKSBjb25zdCB7IHJldHVybiBtX29yaWVudGF0aW9uOyB9CisgICAgdm9pZCBzZXRPcmll
bnRhdGlvbihmbG9hdCB4LCBmbG9hdCB5LCBmbG9hdCB6KSB7IG1fb3JpZW50YXRpb24gPSBGbG9h
dFBvaW50M0QoeCwgeSwgeik7IH0KKworICAgIC8vIFZlbG9jaXR5CisgICAgRmxvYXRQb2ludDNE
IHZlbG9jaXR5KCkgY29uc3QgeyByZXR1cm4gbV92ZWxvY2l0eTsgfQorICAgIHZvaWQgc2V0VmVs
b2NpdHkoZmxvYXQgeCwgZmxvYXQgeSwgZmxvYXQgeikgeyBtX3ZlbG9jaXR5ID0gRmxvYXRQb2lu
dDNEKHgsIHksIHopOyB9CisKKyAgICAvLyBEaXN0YW5jZSBwYXJhbWV0ZXJzCisgICAgRGlzdGFu
Y2VNb2RlbFR5cGUgZGlzdGFuY2VNb2RlbCgpIGNvbnN0OworICAgIHZvaWQgc2V0RGlzdGFuY2VN
b2RlbChEaXN0YW5jZU1vZGVsVHlwZSk7CisKKyAgICBkb3VibGUgcmVmRGlzdGFuY2UoKSB7IHJl
dHVybiBtX2Rpc3RhbmNlRWZmZWN0LnJlZkRpc3RhbmNlKCk7IH0KKyAgICB2b2lkIHNldFJlZkRp
c3RhbmNlKGRvdWJsZSByZWZEaXN0YW5jZSkgeyBtX2Rpc3RhbmNlRWZmZWN0LnNldFJlZkRpc3Rh
bmNlKHJlZkRpc3RhbmNlKTsgfQorCisgICAgZG91YmxlIG1heERpc3RhbmNlKCkgeyByZXR1cm4g
bV9kaXN0YW5jZUVmZmVjdC5tYXhEaXN0YW5jZSgpOyB9CisgICAgdm9pZCBzZXRNYXhEaXN0YW5j
ZShkb3VibGUgbWF4RGlzdGFuY2UpIHsgbV9kaXN0YW5jZUVmZmVjdC5zZXRNYXhEaXN0YW5jZSht
YXhEaXN0YW5jZSk7IH0KKworICAgIGRvdWJsZSByb2xsb2ZmRmFjdG9yKCkgeyByZXR1cm4gbV9k
aXN0YW5jZUVmZmVjdC5yb2xsb2ZmRmFjdG9yKCk7IH0KKyAgICB2b2lkIHNldFJvbGxvZmZGYWN0
b3IoZG91YmxlIHJvbGxvZmZGYWN0b3IpIHsgbV9kaXN0YW5jZUVmZmVjdC5zZXRSb2xsb2ZmRmFj
dG9yKHJvbGxvZmZGYWN0b3IpOyB9CisKKyAgICAvLyBTb3VuZCBjb25lcyAtIGFuZ2xlcyBpbiBk
ZWdyZWVzCisgICAgZG91YmxlIGNvbmVJbm5lckFuZ2xlKCkgY29uc3QgeyByZXR1cm4gbV9jb25l
RWZmZWN0LmlubmVyQW5nbGUoKTsgfQorICAgIHZvaWQgc2V0Q29uZUlubmVyQW5nbGUoZG91Ymxl
IGFuZ2xlKSB7IG1fY29uZUVmZmVjdC5zZXRJbm5lckFuZ2xlKGFuZ2xlKTsgfQorCisgICAgZG91
YmxlIGNvbmVPdXRlckFuZ2xlKCkgY29uc3QgeyByZXR1cm4gbV9jb25lRWZmZWN0Lm91dGVyQW5n
bGUoKTsgfQorICAgIHZvaWQgc2V0Q29uZU91dGVyQW5nbGUoZG91YmxlIGFuZ2xlKSB7IG1fY29u
ZUVmZmVjdC5zZXRPdXRlckFuZ2xlKGFuZ2xlKTsgfQorCisgICAgZG91YmxlIGNvbmVPdXRlckdh
aW4oKSBjb25zdCB7IHJldHVybiBtX2NvbmVFZmZlY3Qub3V0ZXJHYWluKCk7IH0KKyAgICB2b2lk
IHNldENvbmVPdXRlckdhaW4oZG91YmxlIGFuZ2xlKSB7IG1fY29uZUVmZmVjdC5zZXRPdXRlckdh
aW4oYW5nbGUpOyB9CisKKyAgICB2b2lkIGdldEF6aW11dGhFbGV2YXRpb24oZG91YmxlKiBvdXRB
emltdXRoLCBkb3VibGUqIG91dEVsZXZhdGlvbik7CisgICAgZmxvYXQgZG9wcGxlclJhdGUoKSBm
aW5hbDsKKworICAgIC8vIEFjY2Vzc29ycyBmb3IgZHluYW1pY2FsbHkgY2FsY3VsYXRlZCBnYWlu
IHZhbHVlcy4KKyAgICBBdWRpb1BhcmFtKiBkaXN0YW5jZUdhaW4oKSB7IHJldHVybiBtX2Rpc3Rh
bmNlR2Fpbi5nZXQoKTsgfQorICAgIEF1ZGlvUGFyYW0qIGNvbmVHYWluKCkgeyByZXR1cm4gbV9j
b25lR2Fpbi5nZXQoKTsgfQorCisgICAgZG91YmxlIHRhaWxUaW1lKCkgY29uc3Qgb3ZlcnJpZGUg
eyByZXR1cm4gbV9wYW5uZXIgPyBtX3Bhbm5lci0+dGFpbFRpbWUoKSA6IDA7IH0KKyAgICBkb3Vi
bGUgbGF0ZW5jeVRpbWUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX3Bhbm5lciA/IG1fcGFu
bmVyLT5sYXRlbmN5VGltZSgpIDogMDsgfQorCitwcml2YXRlOgorICAgIFdlYktpdEF1ZGlvUGFu
bmVyTm9kZShXZWJLaXRBdWRpb0NvbnRleHQmLCBmbG9hdCBzYW1wbGVSYXRlKTsKKworICAgIC8v
IFJldHVybnMgdGhlIGNvbWJpbmVkIGRpc3RhbmNlIGFuZCBjb25lIGdhaW4gYXR0ZW51YXRpb24u
CisgICAgZmxvYXQgZGlzdGFuY2VDb25lR2FpbigpOworCisgICAgLy8gTm90aWZpZXMgYW55IEF1
ZGlvQnVmZmVyU291cmNlTm9kZXMgY29ubmVjdGVkIHRvIHVzIGVpdGhlciBkaXJlY3RseSBvciBp
bmRpcmVjdGx5IGFib3V0IG91ciBleGlzdGVuY2UuCisgICAgLy8gVGhpcyBpcyBpbiBvcmRlciB0
byBoYW5kbGUgdGhlIHBpdGNoIGNoYW5nZSBuZWNlc3NhcnkgZm9yIHRoZSBkb3BwbGVyIHNoaWZ0
LgorICAgIHZvaWQgbm90aWZ5QXVkaW9Tb3VyY2VzQ29ubmVjdGVkVG9Ob2RlKEF1ZGlvTm9kZSos
IEhhc2hTZXQ8QXVkaW9Ob2RlKj4mIHZpc2l0ZWROb2Rlcyk7CisKKyAgICBzdGQ6OnVuaXF1ZV9w
dHI8UGFubmVyPiBtX3Bhbm5lcjsKKyAgICBQYW5uaW5nTW9kZWxUeXBlIG1fcGFubmluZ01vZGVs
OworCisgICAgRmxvYXRQb2ludDNEIG1fcG9zaXRpb247CisgICAgRmxvYXRQb2ludDNEIG1fb3Jp
ZW50YXRpb247CisgICAgRmxvYXRQb2ludDNEIG1fdmVsb2NpdHk7CisKKyAgICAvLyBHYWluCisg
ICAgUmVmUHRyPEF1ZGlvUGFyYW0+IG1fZGlzdGFuY2VHYWluOworICAgIFJlZlB0cjxBdWRpb1Bh
cmFtPiBtX2NvbmVHYWluOworICAgIERpc3RhbmNlRWZmZWN0IG1fZGlzdGFuY2VFZmZlY3Q7Cisg
ICAgQ29uZUVmZmVjdCBtX2NvbmVFZmZlY3Q7CisgICAgZmxvYXQgbV9sYXN0R2FpbjsKKworICAg
IC8vIEhSVEYgRGF0YWJhc2UgbG9hZGVyCisgICAgUmVmUHRyPEhSVEZEYXRhYmFzZUxvYWRlcj4g
bV9ocnRmRGF0YWJhc2VMb2FkZXI7CisKKyAgICB1bnNpZ25lZCBtX2Nvbm5lY3Rpb25Db3VudDsK
KworICAgIC8vIFN5bmNocm9uaXplIHByb2Nlc3MoKSBhbmQgc2V0UGFubmluZ01vZGVsKCkgd2hp
Y2ggY2FuIGNoYW5nZSB0aGUgcGFubmVyLgorICAgIG11dGFibGUgTG9jayBtX3Bhbm5lck11dGV4
OworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vV2ViS2l0QXVkaW9QYW5uZXJOb2RlLmlkbCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vV2ViS2l0QXVkaW9QYW5uZXJOb2RlLmlk
bApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uODhkMjY5MTBhZTEKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1dlYktpdEF1
ZGlvUGFubmVyTm9kZS5pZGwKQEAgLTAsMCArMSw0OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxMCwgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NF
IEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICog
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OCisgKiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKKyAqIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKK1sKKyAgICBD
b25kaXRpb25hbD1XRUJfQVVESU8sCisgICAgSlNHZW5lcmF0ZVRvSlNPYmplY3QsCisgICAgSW50
ZXJmYWNlTmFtZT13ZWJraXRBdWRpb1Bhbm5lck5vZGUsCitdIGludGVyZmFjZSBXZWJLaXRBdWRp
b1Bhbm5lck5vZGUgOiBBdWRpb05vZGUgeworICAgIC8vIERlZmF1bHQgbW9kZWwgZm9yIHN0ZXJl
byBpcyBIUlRGCisgICAgYXR0cmlidXRlIFBhbm5pbmdNb2RlbFR5cGUgcGFubmluZ01vZGVsOwor
CisgICAgLy8gVXNlcyBhIDNEIGNhcnRlc2lhbiBjb29yZGluYXRlIHN5c3RlbQorICAgIHZvaWQg
c2V0UG9zaXRpb24odW5yZXN0cmljdGVkIGZsb2F0IHgsIHVucmVzdHJpY3RlZCBmbG9hdCB5LCB1
bnJlc3RyaWN0ZWQgZmxvYXQgeik7CisgICAgdm9pZCBzZXRPcmllbnRhdGlvbih1bnJlc3RyaWN0
ZWQgZmxvYXQgeCwgdW5yZXN0cmljdGVkIGZsb2F0IHksIHVucmVzdHJpY3RlZCBmbG9hdCB6KTsK
KyAgICB2b2lkIHNldFZlbG9jaXR5KHVucmVzdHJpY3RlZCBmbG9hdCB4LCB1bnJlc3RyaWN0ZWQg
ZmxvYXQgeSwgdW5yZXN0cmljdGVkIGZsb2F0IHopOworCisgICAgLy8gRGlzdGFuY2UgbW9kZWwK
KyAgICBhdHRyaWJ1dGUgRGlzdGFuY2VNb2RlbFR5cGUgZGlzdGFuY2VNb2RlbDsKKworICAgIGF0
dHJpYnV0ZSB1bnJlc3RyaWN0ZWQgZG91YmxlIHJlZkRpc3RhbmNlOworICAgIGF0dHJpYnV0ZSB1
bnJlc3RyaWN0ZWQgZG91YmxlIG1heERpc3RhbmNlOworICAgIGF0dHJpYnV0ZSB1bnJlc3RyaWN0
ZWQgZG91YmxlIHJvbGxvZmZGYWN0b3I7CisKKyAgICAvLyBEaXJlY3Rpb25hbCBzb3VuZCBjb25l
CisgICAgYXR0cmlidXRlIHVucmVzdHJpY3RlZCBkb3VibGUgY29uZUlubmVyQW5nbGU7CisgICAg
YXR0cmlidXRlIHVucmVzdHJpY3RlZCBkb3VibGUgY29uZU91dGVyQW5nbGU7CisgICAgYXR0cmli
dXRlIHVucmVzdHJpY3RlZCBkb3VibGUgY29uZU91dGVyR2FpbjsKK307CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1dlYktpdE9mZmxpbmVBdWRpb0NvbnRleHQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9XZWJLaXRPZmZsaW5lQXVkaW9D
b250ZXh0LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uZDhlMzk5
YTE0YTMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlv
L1dlYktpdE9mZmxpbmVBdWRpb0NvbnRleHQuY3BwCkBAIC0wLDAgKzEsNjIgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTIsIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiAgUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQK
KyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TgorICogQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTCisgKiBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpZiBFTkFCTEUoV0VCX0FVRElPKQorCisjaW5j
bHVkZSAiV2ViS2l0T2ZmbGluZUF1ZGlvQ29udGV4dC5oIgorCisjaW5jbHVkZSAiQXVkaW9CdWZm
ZXIuaCIKKyNpbmNsdWRlICJEb2N1bWVudC5oIgorI2luY2x1ZGUgPHd0Zi9Jc29NYWxsb2NJbmxp
bmVzLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworV1RGX01BS0VfSVNPX0FMTE9DQVRFRF9J
TVBMKFdlYktpdE9mZmxpbmVBdWRpb0NvbnRleHQpOworCitpbmxpbmUgV2ViS2l0T2ZmbGluZUF1
ZGlvQ29udGV4dDo6V2ViS2l0T2ZmbGluZUF1ZGlvQ29udGV4dChEb2N1bWVudCYgZG9jdW1lbnQs
IEF1ZGlvQnVmZmVyKiByZW5kZXJUYXJnZXQpCisgICAgOiBXZWJLaXRBdWRpb0NvbnRleHQoZG9j
dW1lbnQsIHJlbmRlclRhcmdldCkKK3sKK30KKworRXhjZXB0aW9uT3I8UmVmPFdlYktpdE9mZmxp
bmVBdWRpb0NvbnRleHQ+PiBXZWJLaXRPZmZsaW5lQXVkaW9Db250ZXh0OjpjcmVhdGUoU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgdW5zaWduZWQgbnVtYmVyT2ZDaGFubmVscywgc2l6
ZV90IG51bWJlck9mRnJhbWVzLCBmbG9hdCBzYW1wbGVSYXRlKQoreworICAgIC8vIEZJWE1FOiBB
ZGQgc3VwcG9ydCBmb3Igd29ya2Vycy4KKyAgICBpZiAoIWlzPERvY3VtZW50Pihjb250ZXh0KSkK
KyAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IE5vdFN1cHBvcnRlZEVycm9yIH07CisgICAgaWYg
KCFudW1iZXJPZkNoYW5uZWxzIHx8IG51bWJlck9mQ2hhbm5lbHMgPiAxMCB8fCAhbnVtYmVyT2ZG
cmFtZXMgfHwgIWlzU2FtcGxlUmF0ZVJhbmdlR29vZChzYW1wbGVSYXRlKSkKKyAgICAgICAgcmV0
dXJuIEV4Y2VwdGlvbiB7IFN5bnRheEVycm9yIH07CisgICAgYXV0byByZW5kZXJUYXJnZXQgPSBB
dWRpb0J1ZmZlcjo6Y3JlYXRlKG51bWJlck9mQ2hhbm5lbHMsIG51bWJlck9mRnJhbWVzLCBzYW1w
bGVSYXRlKTsKKyAgICBpZiAoIXJlbmRlclRhcmdldCkKKyAgICAgICAgcmV0dXJuIEV4Y2VwdGlv
biB7IFN5bnRheEVycm9yIH07CisKKyAgICBhdXRvIGF1ZGlvQ29udGV4dCA9IGFkb3B0UmVmKCpu
ZXcgV2ViS2l0T2ZmbGluZUF1ZGlvQ29udGV4dChkb3duY2FzdDxEb2N1bWVudD4oY29udGV4dCks
IHJlbmRlclRhcmdldC5nZXQoKSkpOworICAgIGF1ZGlvQ29udGV4dC0+c3VzcGVuZElmTmVlZGVk
KCk7CisgICAgcmV0dXJuIGF1ZGlvQ29udGV4dDsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQorCisjZW5kaWYgLy8gRU5BQkxFKFdFQl9BVURJTykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViYXVkaW8vV2ViS2l0T2ZmbGluZUF1ZGlvQ29udGV4dC5oIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9XZWJLaXRPZmZsaW5lQXVkaW9Db250ZXh0LmgKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLmMyNTRlZDQxZmUwCi0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9XZWJLaXRPZmZsaW5l
QXVkaW9Db250ZXh0LmgKQEAgLTAsMCArMSw0MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
MiwgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFS
RQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OCisgKiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKKyAqIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25j
ZQorCisjaW5jbHVkZSAiV2ViS2l0QXVkaW9Db250ZXh0LmgiCisKK25hbWVzcGFjZSBXZWJDb3Jl
IHsKKworY2xhc3MgV2ViS2l0T2ZmbGluZUF1ZGlvQ29udGV4dCBmaW5hbCA6IHB1YmxpYyBXZWJL
aXRBdWRpb0NvbnRleHQgeworICAgIFdURl9NQUtFX0lTT19BTExPQ0FURUQoV2ViS2l0T2ZmbGlu
ZUF1ZGlvQ29udGV4dCk7CitwdWJsaWM6CisgICAgc3RhdGljIEV4Y2VwdGlvbk9yPFJlZjxXZWJL
aXRPZmZsaW5lQXVkaW9Db250ZXh0Pj4gY3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCB1
bnNpZ25lZCBudW1iZXJPZkNoYW5uZWxzLCBzaXplX3QgbnVtYmVyT2ZGcmFtZXMsIGZsb2F0IHNh
bXBsZVJhdGUpOworCitwcml2YXRlOgorICAgIFdlYktpdE9mZmxpbmVBdWRpb0NvbnRleHQoRG9j
dW1lbnQmLCBBdWRpb0J1ZmZlciogcmVuZGVyVGFyZ2V0KTsKK307CisKK30gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vV2Vi
S2l0T2ZmbGluZUF1ZGlvQ29udGV4dC5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1
ZGlvL1dlYktpdE9mZmxpbmVBdWRpb0NvbnRleHQuaWRsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwLi41NmE2NDhiYzJhNQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vV2ViS2l0T2ZmbGluZUF1ZGlvQ29udGV4dC5pZGwKQEAg
LTAsMCArMSwzMSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiwgR29vZ2xlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5EIEFO
WQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOwor
ICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OCisgKiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMKKyAqIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKK1sKKyAgICBDb25kaXRpb25hbD1XRUJfQVVESU8s
CisgICAgSW50ZXJmYWNlTmFtZT13ZWJraXRPZmZsaW5lQXVkaW9Db250ZXh0LAorICAgIEpTR2Vu
ZXJhdGVUb0pTT2JqZWN0LAorXSBpbnRlcmZhY2UgV2ViS2l0T2ZmbGluZUF1ZGlvQ29udGV4dCA6
IFdlYktpdEF1ZGlvQ29udGV4dCB7CisgICAgW0NhbGxXaXRoPVNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQsIE1heVRocm93RXhjZXB0aW9uXSBjb25zdHJ1Y3Rvcih1bnNpZ25lZCBsb25nIG51bWJlck9m
Q2hhbm5lbHMsIHVuc2lnbmVkIGxvbmcgbnVtYmVyT2ZGcmFtZXMsIHVucmVzdHJpY3RlZCBmbG9h
dCBzYW1wbGVSYXRlKTsKK307CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4
dCBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CmluZGV4IDJjNTZlZDUxMzlkLi4xNDk1OWMz
ODE1MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKKysrIGIvU291cmNl
L1dlYkNvcmUvU291cmNlcy50eHQKQEAgLTI2OSw2ICsyNjksOSBAQCBNb2R1bGVzL3dlYmF1ZGlv
L1NjcmlwdFByb2Nlc3Nvck5vZGUuY3BwCiBNb2R1bGVzL3dlYmF1ZGlvL1dhdmVTaGFwZXJEU1BL
ZXJuZWwuY3BwCiBNb2R1bGVzL3dlYmF1ZGlvL1dhdmVTaGFwZXJOb2RlLmNwcAogTW9kdWxlcy93
ZWJhdWRpby9XYXZlU2hhcGVyUHJvY2Vzc29yLmNwcAorTW9kdWxlcy93ZWJhdWRpby9XZWJLaXRB
dWRpb0NvbnRleHQuY3BwCitNb2R1bGVzL3dlYmF1ZGlvL1dlYktpdEF1ZGlvUGFubmVyTm9kZS5j
cHAKK01vZHVsZXMvd2ViYXVkaW8vV2ViS2l0T2ZmbGluZUF1ZGlvQ29udGV4dC5jcHAKIAogTW9k
dWxlcy93ZWJhdXRobi9BdXRoZW50aWNhdG9yQ29vcmRpbmF0b3IuY3BwCiBNb2R1bGVzL3dlYmF1
dGhuL0F1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZS5jcHAKQEAgLTI3NDQsNiArMjc0Nyw3
IEBAIEpTQXVkaW9CdWZmZXJDYWxsYmFjay5jcHAKIEpTQXVkaW9CdWZmZXJTb3VyY2VOb2RlLmNw
cAogSlNBdWRpb0NvbmZpZ3VyYXRpb24uY3BwCiBKU0F1ZGlvQ29udGV4dC5jcHAKK0pTQXVkaW9D
b250ZXh0U3RhdGUuY3BwCiBKU0F1ZGlvRGVzdGluYXRpb25Ob2RlLmNwcAogSlNBdWRpb0xpc3Rl
bmVyLmNwcAogSlNBdWRpb05vZGUuY3BwCkBAIC0yOTE0LDYgKzI5MTgsNyBAQCBKU0RldmljZU1v
dGlvbkV2ZW50LmNwcAogSlNEZXZpY2VPcmllbnRhdGlvbkV2ZW50LmNwcAogSlNEZXZpY2VPcmll
bnRhdGlvbk9yTW90aW9uUGVybWlzc2lvblN0YXRlLmNwcAogSlNEZXZpY2VPcmllbnRhdGlvbk9y
TW90aW9uRXZlbnQuY3BwCitKU0Rpc3RhbmNlTW9kZWxUeXBlLmNwcAogSlNEb2N1bWVudC5jcHAK
IEpTRG9jdW1lbnRBbmRFbGVtZW50RXZlbnRIYW5kbGVycy5jcHAKIEpTRG9jdW1lbnRGcmFnbWVu
dC5jcHAKQEAgLTMyMTEsNiArMzIxNiw3IEBAIEpTT3ZlcmZsb3dFdmVudC5jcHAKIEpTUGFnZVRy
YW5zaXRpb25FdmVudC5jcHAKIEpTUGFpbnRSZW5kZXJpbmdDb250ZXh0MkQuY3BwCiBKU1Bhbm5l
ck5vZGUuY3BwCitKU1Bhbm5pbmdNb2RlbFR5cGUuY3BwCiBKU1BhcmVudE5vZGUuY3BwCiBKU1Bh
dGgyRC5jcHAKIEpTUGF5ZXJFcnJvckZpZWxkcy5jcHAKQEAgLTM1NjcsNyArMzU3MywxMCBAQCBK
U1dlYkdQVVN3YXBDaGFpbi5jcHAKIEpTV2ViR1BVVGV4dHVyZS5jcHAKIEpTV2ViR1BVVGV4dHVy
ZVZpZXcuY3BwCiBKU1dlYktpdEFuaW1hdGlvbkV2ZW50LmNwcAorSlNXZWJLaXRBdWRpb0NvbnRl
eHQuY3BwCitKU1dlYktpdEF1ZGlvUGFubmVyTm9kZS5jcHAKIEpTV2ViS2l0Q1NTTWF0cml4LmNw
cAorSlNXZWJLaXRPZmZsaW5lQXVkaW9Db250ZXh0LmNwcAogSlNXZWJLaXRQbGF5YmFja1Rhcmdl
dEF2YWlsYWJpbGl0eUV2ZW50LmNwcAogSlNXZWJLaXRQb2ludC5jcHAKIEpTV2ViS2l0VHJhbnNp
dGlvbkV2ZW50LmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCmluZGV4IGM3YWFjODU5Njc2Li41MWI3ODQ5YTkzZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMjQwNywx
MiArMjQwNywxNiBAQAogCQk4MzAwMzBGODFCN0QzQjc4MDBFRDNBQUMgLyogQ2FjaGVkSFRNTENv
bGxlY3Rpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDgzMDAzMEY3MUI3RDM5ODgwMEVEM0FBQyAvKiBDYWNoZWRIVE1MQ29sbGVjdGlvbi5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTgzMDMzNTAyMUY1
NDkwNTcwMDRERjcwNyAvKiBGaWxlU3lzdGVtRGlyZWN0b3J5UmVhZGVyLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4MzAzMzRGQzFGNTQ5MDUyMDA0REY3
MDcgLyogRmlsZVN5c3RlbURpcmVjdG9yeVJlYWRlci5oICovOyB9OwogCQk4MzAzMzUwMzFGNTQ5
MDVBMDA0REY3MDcgLyogRmlsZVN5c3RlbUVudHJpZXNDYWxsYmFjay5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODMwMzM0RkUxRjU0OTA1MjAwNERGNzA3
IC8qIEZpbGVTeXN0ZW1FbnRyaWVzQ2FsbGJhY2suaCAqLzsgfTsKKwkJODMwNDAyODIyNDlBN0E1
RjAwQTkwRDhEIC8qIFBhbm5pbmdNb2RlbFR5cGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgzMDQwMjgwMjQ5QTdBNUMwMEE5MEQ4RCAvKiBQYW5uaW5n
TW9kZWxUeXBlLmggKi87IH07CisJCTgzMDQwMjgzMjQ5QTdBNjIwMEE5MEQ4RCAvKiBEaXN0YW5j
ZU1vZGVsVHlwZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gODMwNDAyN0QyNDlBN0E1QjAwQTkwRDhEIC8qIERpc3RhbmNlTW9kZWxUeXBlLmggKi87IH07
CiAJCTgzMDUxOTk2MUJCMEYxMTAwMEYzNzcyRSAvKiBIVE1MVGltZUVsZW1lbnQuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgzMDUxOTkzMUJCMEYwRTcw
MEYzNzcyRSAvKiBIVE1MVGltZUVsZW1lbnQuaCAqLzsgfTsKIAkJODMwNzg0QjIxQzUyRUUyQzAw
MTA0RDFEIC8qIFhNTERvY3VtZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA4MzA3ODRCMTFDNTJFRTE5MDAxMDREMUQgLyogWE1MRG9jdW1lbnQuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk4MzBBMzZC
RDFEQUM1RkFEMDA2RDdEMDkgLyogSlNNb3VzZUV2ZW50SW5pdC5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODMwQTM2QkIxREFDNUZBNzAwNkQ3RDA5IC8q
IEpTTW91c2VFdmVudEluaXQuaCAqLzsgfTsKIAkJODMxMDJCMjcxRjlFQUREOTAwRTQwNEI5IC8q
IEpTRXh0ZW5kYWJsZU1lc3NhZ2VFdmVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gODMxMDJCMjMxRjlFQURDMjAwRTQwNEI5IC8qIEpTRXh0ZW5kYWJs
ZU1lc3NhZ2VFdmVudC5oICovOyB9OwogCQk4MzExQzAwMzFGQUEyRTk1MDBFM0M4RTUgLyogU1dT
ZXJ2ZXJKb2JRdWV1ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gODMxMUMwMDIxRkFBMkU4OTAwRTNDOEU1IC8qIFNXU2VydmVySm9iUXVldWUuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk4MzEyMEM3MTFD
NTZGM0ZCMDAxQ0IxMTIgLyogSFRNTERhdGFFbGVtZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4MzRCODZBNzFDNTZFODNBMDBGM0YwRTMgLyogSFRN
TERhdGFFbGVtZW50LmggKi87IH07CisJCTgzMUI2MTc2MjQ5OUE1QkIwMEMwN0M3OSAvKiBXZWJL
aXRBdWRpb1Bhbm5lck5vZGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDgzMUI2MTc0MjQ5OUE1OUMwMEMwN0M3OSAvKiBXZWJLaXRBdWRpb1Bhbm5lck5v
ZGUuaCAqLzsgfTsKKwkJODMxQjYxNzcyNDk5QTVCRjAwQzA3Qzc5IC8qIFdlYktpdE9mZmxpbmVB
dWRpb0NvbnRleHQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDgzMUI2MTc1MjQ5OUE1OUQwMEMwN0M3OSAvKiBXZWJLaXRPZmZsaW5lQXVkaW9Db250ZXh0
LmggKi87IH07CiAJCTgzMjE1MDdFMUYyN0VBMUIwMDk1QjEzNiAvKiBOYXZpZ2F0b3JCZWFjb24u
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgzMjE1MDdC
MUYyN0VBMTUwMDk1QjEzNiAvKiBOYXZpZ2F0b3JCZWFjb24uaCAqLzsgfTsKIAkJODMyQjg0MzQx
OUQ4RTU1MTAwQjI2MDU1IC8qIFNWR0FuaW1hdGVFbGVtZW50QmFzZS5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODMyQjg0MzMxOUQ4RTU1MTAwQjI2MDU1
IC8qIFNWR0FuaW1hdGVFbGVtZW50QmFzZS5oICovOyB9OwogCQk4MzNCOUUzMjFGNTA4RDg1MDBF
MEU0MjggLyogSlNGaWxlU3lzdGVtRGlyZWN0b3J5RW50cnkuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgzM0I5RTJGMUY1MDhEODAwMEUwRTQyOCAvKiBK
U0ZpbGVTeXN0ZW1EaXJlY3RvcnlFbnRyeS5oICovOyB9OwpAQCAtMjQ2OCwxMCArMjQ3MiwxMiBA
QAogCQk4MzlBMkYyRTFFMjA0QTcxMDAzOTA1N0UgLyogV2ViR0xTdGF0ZVRyYWNrZXIuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgzOUEyRjJDMUUyMDRB
NkQwMDM5MDU3RSAvKiBXZWJHTFN0YXRlVHJhY2tlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTgzOUFBRkVEMUEwQzBDOEQwMDYwNUY5OSAvKiBI
VE1MV0JSRWxlbWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gODM5QUFGRUIxQTBDMEM4RDAwNjA1Rjk5IC8qIEhUTUxXQlJFbGVtZW50LmggKi87IH07
CiAJCTgzQThBQzQwMUZBQkJGRTUwMDIwNjRBQyAvKiBTZXJ2aWNlV29ya2VySWRlbnRpZmllci5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODNBOEFDM0Ux
RkFCQkZEMTAwMjA2NEFDIC8qIFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJODNCMUE3MDIyNDk5ODVGMDAw
RkU1OTYxIC8qIFdlYktpdEF1ZGlvQ29udGV4dC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gODNCMUE2RkYyNDk5ODVEMDAwRkU1OTYxIC8qIFdlYktpdEF1
ZGlvQ29udGV4dC5oICovOyB9OwogCQk4M0IyRDE3NTFCOEJDRDZBMDBBMDJFNDcgLyogTmF0aXZl
Tm9kZUZpbHRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gODNFOTU5RTExQjhCQzIyQjAwNEQ5Mzg1IC8qIE5hdGl2ZU5vZGVGaWx0ZXIuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk4M0I3NEVGNjFGM0Uw
QkYyMDA5OTZCQzcgLyogS2VlcGFsaXZlUmVxdWVzdFRyYWNrZXIuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgzQjc0RUYzMUYzRTBCRDcwMDk5NkJDNyAv
KiBLZWVwYWxpdmVSZXF1ZXN0VHJhY2tlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CiAJCTgzQjk2ODdCMTlGOEFCODMwMDRFRjdBRiAvKiBTdHlsZUJ1
aWxkZXJDb252ZXJ0ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDgzQjk2ODc5MTlGOEFCODMwMDRFRjdBRiAvKiBTdHlsZUJ1aWxkZXJDb252ZXJ0ZXIu
aCAqLzsgfTsKIAkJODNCQjVDODgxRDVENkY0NTAwNUE3MUY0IC8qIEFsbERlc2NlbmRhbnRzQ29s
bGVjdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
ODNCQjVDODcxRDVENkYzQTAwNUE3MUY0IC8qIEFsbERlc2NlbmRhbnRzQ29sbGVjdGlvbi5oICov
OyB9OworCQk4M0JEM0NFRTI0OTk4RTAxMDBCQTNFNjcgLyogQXVkaW9Db250ZXh0U3RhdGUuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgzQkQzQ0VEMjQ5
OThERjYwMEJBM0U2NyAvKiBBdWRpb0NvbnRleHRTdGF0ZS5oICovOyB9OwogCQk4M0MwNUE1QjFB
Njg2MjEyMDA3RTVERUEgLyogU3R5bGVQcm9wZXJ0eVNob3J0aGFuZEZ1bmN0aW9ucy5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODNDMDVBNTkxQTY4NjIx
MjAwN0U1REVBIC8qIFN0eWxlUHJvcGVydHlTaG9ydGhhbmRGdW5jdGlvbnMuaCAqLzsgfTsKIAkJ
ODNDMUY1OTQxRURGNjlEMzAwNDEwRDI3IC8qIFF1YWxpZmllZE5hbWVDYWNoZS5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODNDMUY1OTIxRURGNjlEMzAw
NDEwRDI3IC8qIFF1YWxpZmllZE5hbWVDYWNoZS5oICovOyB9OwogCQk4M0M0NUI4RTFEQzJCNjhB
MDA4ODcxQkEgLyogVmFsaWRhdGlvbkJ1YmJsZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gODNDNDVCOEQxREMyQjY3QzAwODg3MUJBIC8qIFZhbGlkYXRp
b25CdWJibGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwpAQCAtMTAyOTcsMTEgKzEwMzAzLDE2IEBACiAJCTgzMDAzMEYzMUI3RDMzQTYwMEVEM0FBQyAv
KiBHZW5lcmljQ2FjaGVkSFRNTENvbGxlY3Rpb24uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gR2VuZXJpY0NhY2hlZEhUTUxDb2xsZWN0aW9uLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODMwMDMwRjQxQjdEMzNBNjAwRUQzQUFDIC8qIEdlbmVyaWND
YWNoZWRIVE1MQ29sbGVjdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBH
ZW5lcmljQ2FjaGVkSFRNTENvbGxlY3Rpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJODMwMDMwRjcxQjdEMzk4ODAwRUQzQUFDIC8qIENhY2hlZEhUTUxDb2xsZWN0aW9uLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENhY2hlZEhUTUxDb2xsZWN0aW9uLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTgzMDAzRTJCMjQ5OTk3QTgwMDYwQUY5NCAvKiBX
ZWJLaXRBdWRpb0NvbnRleHQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gV2ViS2l0QXVkaW9Db250ZXh0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
ODMwMzM0RkIxRjU0OTA1MjAwNERGNzA3IC8qIEZpbGVTeXN0ZW1EaXJlY3RvcnlSZWFkZXIuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRmlsZVN5c3RlbURpcmVjdG9y
eVJlYWRlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTgzMDMzNEZDMUY1NDkw
NTIwMDRERjcwNyAvKiBGaWxlU3lzdGVtRGlyZWN0b3J5UmVhZGVyLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IEZpbGVTeXN0ZW1EaXJlY3RvcnlSZWFkZXIuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODMwMzM0RkQxRjU0OTA1MjAwNERGNzA3IC8qIEZpbGVTeXN0
ZW1FbnRyaWVzQ2FsbGJhY2suaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IEZpbGVTeXN0ZW1F
bnRyaWVzQ2FsbGJhY2suaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4MzAzMzRG
RTFGNTQ5MDUyMDA0REY3MDcgLyogRmlsZVN5c3RlbUVudHJpZXNDYWxsYmFjay5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBGaWxlU3lzdGVtRW50cmllc0NhbGxiYWNrLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTgzMDMzNEZGMUY1NDkwNTIwMDRERjcwNyAvKiBG
aWxlU3lzdGVtRGlyZWN0b3J5UmVhZGVyLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBGaWxl
U3lzdGVtRGlyZWN0b3J5UmVhZGVyLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
ODMwNDAyN0QyNDlBN0E1QjAwQTkwRDhEIC8qIERpc3RhbmNlTW9kZWxUeXBlLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERpc3RhbmNlTW9kZWxUeXBlLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTgzMDQwMjdGMjQ5QTdBNUMwMEE5MEQ4RCAvKiBEaXN0YW5jZU1v
ZGVsVHlwZS5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gRGlzdGFuY2VNb2RlbFR5cGUuaWRs
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk4MzA0MDI4MDI0OUE3QTVDMDBBOTBEOEQg
LyogUGFubmluZ01vZGVsVHlwZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQ
YW5uaW5nTW9kZWxUeXBlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTgzMDQwMjgx
MjQ5QTdBNUQwMEE5MEQ4RCAvKiBQYW5uaW5nTW9kZWxUeXBlLmlkbCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7
IHBhdGggPSBQYW5uaW5nTW9kZWxUeXBlLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJODMwNTE5OTIxQkIwRjBFNzAwRjM3NzJFIC8qIEhUTUxUaW1lRWxlbWVudC5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBIVE1MVGltZUVsZW1lbnQuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4MzA1MTk5MzFCQjBGMEU3MDBGMzc3MkUgLyogSFRN
TFRpbWVFbGVtZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEhUTUxUaW1l
RWxlbWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4MzA1MTk5NDFCQjBGMEU3
MDBGMzc3MkUgLyogSFRNTFRpbWVFbGVtZW50LmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBI
VE1MVGltZUVsZW1lbnQuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTAzMTQs
NiArMTAzMjUsMTIgQEAKIAkJODMxMDJCMjUxRjlFQURDMjAwRTQwNEI5IC8qIEpTRXh0ZW5kYWJs
ZU1lc3NhZ2VFdmVudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBK
U0V4dGVuZGFibGVNZXNzYWdlRXZlbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk4MzExQzAwMDFGQUEyRTg5MDBFM0M4RTUgLyogU1dTZXJ2ZXJKb2JRdWV1ZS5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTV1NlcnZlckpvYlF1ZXVlLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODMxMUMwMDIxRkFBMkU4OTAwRTNDOEU1IC8qIFNX
U2VydmVySm9iUXVldWUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU1dTZXJ2
ZXJKb2JRdWV1ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk4MzFCNjE2RjI0OTlB
NTk4MDBDMDdDNzkgLyogV2ViS2l0QXVkaW9QYW5uZXJOb2RlLmlkbCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7
IHBhdGggPSBXZWJLaXRBdWRpb1Bhbm5lck5vZGUuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQk4MzFCNjE3MTI0OTlBNTk5MDBDMDdDNzkgLyogV2ViS2l0QXVkaW9QYW5uZXJOb2Rl
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYktpdEF1ZGlvUGFu
bmVyTm9kZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTgzMUI2MTcyMjQ5OUE1
OUEwMEMwN0M3OSAvKiBXZWJLaXRPZmZsaW5lQXVkaW9Db250ZXh0LmlkbCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRl
eHQ7IHBhdGggPSBXZWJLaXRPZmZsaW5lQXVkaW9Db250ZXh0LmlkbDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJODMxQjYxNzMyNDk5QTU5QjAwQzA3Qzc5IC8qIFdlYktpdE9mZmxpbmVB
dWRpb0NvbnRleHQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2Vi
S2l0T2ZmbGluZUF1ZGlvQ29udGV4dC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTgzMUI2MTc0MjQ5OUE1OUMwMEMwN0M3OSAvKiBXZWJLaXRBdWRpb1Bhbm5lck5vZGUuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViS2l0QXVkaW9QYW5uZXJOb2RlLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTgzMUI2MTc1MjQ5OUE1OUQwMEMwN0M3OSAvKiBX
ZWJLaXRPZmZsaW5lQXVkaW9Db250ZXh0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFdlYktpdE9mZmxpbmVBdWRpb0NvbnRleHQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJODMxQzQ2QzMxRjlFRTVFMDAwRUJENDUwIC8qIEpTRXh0ZW5kYWJsZU1lc3NhZ2VFdmVu
dEN1c3RvbS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0V4dGVu
ZGFibGVNZXNzYWdlRXZlbnRDdXN0b20uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk4MzFEMUYyOTFDNTZFQ0EwMDBGNUY2QzAgLyogSFRNTERhdGFFbGVtZW50LmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEhUTUxEYXRhRWxlbWVudC5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTgzMjE1MDdBMUYyN0VBMTUwMDk1QjEzNiAvKiBOYXZp
Z2F0b3JCZWFjb24uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTmF2aWdhdG9yQmVhY29uLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTEwNDQxLDYgKzEwNDU4LDggQEAKIAkJODM5
QUFGRUIxQTBDMEM4RDAwNjA1Rjk5IC8qIEhUTUxXQlJFbGVtZW50LmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IEhUTUxXQlJFbGVtZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTgzQTRBOUY4MUNFN0ZEN0UwMDcwOUIwMCAvKiBKU1hNTERvY3VtZW50Q3VzdG9t
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTWE1MRG9jdW1lbnRD
dXN0b20uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4M0E4QUMzRTFGQUJCRkQx
MDAyMDY0QUMgLyogU2VydmljZVdvcmtlcklkZW50aWZpZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gU2VydmljZVdvcmtlcklkZW50aWZpZXIuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJODNCMUE2RkYyNDk5ODVEMDAwRkU1OTYxIC8qIFdlYktpdEF1ZGlvQ29u
dGV4dC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJLaXRBdWRpb0NvbnRl
eHQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJODNCMUE3MDEyNDk5ODVEMDAwRkU1
OTYxIC8qIFdlYktpdEF1ZGlvQ29udGV4dC5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gV2Vi
S2l0QXVkaW9Db250ZXh0LmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODNCMjUw
MDkxRkExMTgxQzAwQkMwMkQ5IC8qIEpTU2VydmljZVdvcmtlckNsaWVudFR5cGUuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNTZXJ2aWNlV29ya2VyQ2xpZW50VHlwZS5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4M0IyNTAwQjFGQTExODFEMDBCQzAyRDkgLyog
SlNTZXJ2aWNlV29ya2VyQ2xpZW50VHlwZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBKU1NlcnZpY2VXb3JrZXJDbGllbnRUeXBlLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJODNCNURBNDUxRkE5MDc5MzAwQjU5REY0IC8qIEpTTmF2aWdhdG9yQ3Vz
dG9tLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTTmF2aWdhdG9y
Q3VzdG9tLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTEwNDQ4LDYgKzEwNDY3
LDggQEAKIAkJODNCNzRFRjMxRjNFMEJENzAwOTk2QkM3IC8qIEtlZXBhbGl2ZVJlcXVlc3RUcmFj
a2VyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEtlZXBhbGl2ZVJlcXVlc3RU
cmFja2VyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTgzQjk2ODc5MTlGOEFCODMw
MDRFRjdBRiAvKiBTdHlsZUJ1aWxkZXJDb252ZXJ0ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gU3R5bGVCdWlsZGVyQ29udmVydGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTgzQkI1Qzg3MUQ1RDZGM0EwMDVBNzFGNCAvKiBBbGxEZXNjZW5kYW50c0NvbGxl
Y3Rpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQWxsRGVzY2VuZGFudHND
b2xsZWN0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTgzQkQzQ0VCMjQ5OThD
QzUwMEJBM0U2NyAvKiBBdWRpb0NvbnRleHRTdGF0ZS5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRo
ID0gQXVkaW9Db250ZXh0U3RhdGUuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk4
M0JEM0NFRDI0OTk4REY2MDBCQTNFNjcgLyogQXVkaW9Db250ZXh0U3RhdGUuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQXVkaW9Db250ZXh0U3RhdGUuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJODNDMDVBNTgxQTY4NjIxMjAwN0U1REVBIC8qIFN0eWxlUHJvcGVy
dHlTaG9ydGhhbmRGdW5jdGlvbnMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBu
YW1lID0gU3R5bGVQcm9wZXJ0eVNob3J0aGFuZEZ1bmN0aW9ucy5jcHA7IHBhdGggPSBEZXJpdmVk
U291cmNlcy9XZWJDb3JlL1N0eWxlUHJvcGVydHlTaG9ydGhhbmRGdW5jdGlvbnMuY3BwOyBzb3Vy
Y2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9OwogCQk4M0MwNUE1OTFBNjg2MjEyMDA3RTVE
RUEgLyogU3R5bGVQcm9wZXJ0eVNob3J0aGFuZEZ1bmN0aW9ucy5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IG5hbWUgPSBTdHlsZVByb3BlcnR5U2hvcnRoYW5kRnVuY3Rpb25zLmg7IHBhdGgg
PSBEZXJpdmVkU291cmNlcy9XZWJDb3JlL1N0eWxlUHJvcGVydHlTaG9ydGhhbmRGdW5jdGlvbnMu
aDsgc291cmNlVHJlZSA9IEJVSUxUX1BST0RVQ1RTX0RJUjsgfTsKIAkJODNDMUY1OTExRURGNjlE
MzAwNDEwRDI3IC8qIFF1YWxpZmllZE5hbWVDYWNoZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBRdWFsaWZpZWROYW1lQ2FjaGUuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwpAQCAtMjkyMzksNiArMjkyNjAsOCBAQAogCQkJCUZEMzE1RkJBMTJCMDI2NzUw
MEMxQTM1OSAvKiBBdWRpb0NvbnRleHQuY3BwICovLAogCQkJCUZEMzE1RkJCMTJCMDI2NzUwMEMx
QTM1OSAvKiBBdWRpb0NvbnRleHQuaCAqLywKIAkJCQlGRDMxNUZCQzEyQjAyNjc1MDBDMUEzNTkg
LyogQXVkaW9Db250ZXh0LmlkbCAqLywKKwkJCQk4M0JEM0NFRDI0OTk4REY2MDBCQTNFNjcgLyog
QXVkaW9Db250ZXh0U3RhdGUuaCAqLywKKwkJCQk4M0JEM0NFQjI0OTk4Q0M1MDBCQTNFNjcgLyog
QXVkaW9Db250ZXh0U3RhdGUuaWRsICovLAogCQkJCUZEMzE1RkJEMTJCMDI2NzUwMEMxQTM1OSAv
KiBBdWRpb0Rlc3RpbmF0aW9uTm9kZS5jcHAgKi8sCiAJCQkJRkQzMTVGQkUxMkIwMjY3NTAwQzFB
MzU5IC8qIEF1ZGlvRGVzdGluYXRpb25Ob2RlLmggKi8sCiAJCQkJRkQzMTVGQkYxMkIwMjY3NTAw
QzFBMzU5IC8qIEF1ZGlvRGVzdGluYXRpb25Ob2RlLmlkbCAqLywKQEAgLTI5Mjg5LDYgKzI5MzEy
LDggQEAKIAkJCQlGRDMxNUZFNTEyQjAyNjc2MDBDMUEzNTkgLyogRGVsYXlOb2RlLmlkbCAqLywK
IAkJCQlGRDMxNUZFNjEyQjAyNjc2MDBDMUEzNTkgLyogRGVsYXlQcm9jZXNzb3IuY3BwICovLAog
CQkJCUZEMzE1RkU3MTJCMDI2NzYwMEMxQTM1OSAvKiBEZWxheVByb2Nlc3Nvci5oICovLAorCQkJ
CTgzMDQwMjdEMjQ5QTdBNUIwMEE5MEQ4RCAvKiBEaXN0YW5jZU1vZGVsVHlwZS5oICovLAorCQkJ
CTgzMDQwMjdGMjQ5QTdBNUMwMEE5MEQ4RCAvKiBEaXN0YW5jZU1vZGVsVHlwZS5pZGwgKi8sCiAJ
CQkJRkQ2RUQyQzExMzZCOEU0MjAwM0NGMDcyIC8qIER5bmFtaWNzQ29tcHJlc3Nvck5vZGUuY3Bw
ICovLAogCQkJCUZENkVEMkMyMTM2QjhFNDIwMDNDRjA3MiAvKiBEeW5hbWljc0NvbXByZXNzb3JO
b2RlLmggKi8sCiAJCQkJRkQ2RUQyQzkxMzZCOEU5RDAwM0NGMDcyIC8qIER5bmFtaWNzQ29tcHJl
c3Nvck5vZGUuaWRsICovLApAQCAtMjkzMjEsNiArMjkzNDYsOCBAQAogCQkJCUZEMzE1RkNGMTJC
MDI2NzUwMEMxQTM1OSAvKiBQYW5uZXJOb2RlLmNwcCAqLywKIAkJCQlGRDMxNUZEMDEyQjAyNjc1
MDBDMUEzNTkgLyogUGFubmVyTm9kZS5oICovLAogCQkJCUZEMzE1RkQxMTJCMDI2NzUwMEMxQTM1
OSAvKiBQYW5uZXJOb2RlLmlkbCAqLywKKwkJCQk4MzA0MDI4MDI0OUE3QTVDMDBBOTBEOEQgLyog
UGFubmluZ01vZGVsVHlwZS5oICovLAorCQkJCTgzMDQwMjgxMjQ5QTdBNUQwMEE5MEQ4RCAvKiBQ
YW5uaW5nTW9kZWxUeXBlLmlkbCAqLywKIAkJCQlGRDU4MUZCMTE1MjBGOTNCMDAzQTdBNzUgLyog
UGVyaW9kaWNXYXZlLmNwcCAqLywKIAkJCQlGRDU4MUZCMjE1MjBGOTNCMDAzQTdBNzUgLyogUGVy
aW9kaWNXYXZlLmggKi8sCiAJCQkJRkQ1ODFGQjMxNTIwRjkzQjAwM0E3QTc1IC8qIFBlcmlvZGlj
V2F2ZS5pZGwgKi8sCkBAIC0yOTMzNiw2ICsyOTM2MywxNSBAQAogCQkJCUZEN0YyOThFMTNENEMw
Q0IwMEFEOTUzNSAvKiBXYXZlU2hhcGVyTm9kZS5pZGwgKi8sCiAJCQkJRkQ3RjI5OEYxM0Q0QzBD
QjAwQUQ5NTM1IC8qIFdhdmVTaGFwZXJQcm9jZXNzb3IuY3BwICovLAogCQkJCUZEN0YyOTkwMTNE
NEMwQ0IwMEFEOTUzNSAvKiBXYXZlU2hhcGVyUHJvY2Vzc29yLmggKi8sCisJCQkJODMwMDNFMkIy
NDk5OTdBODAwNjBBRjk0IC8qIFdlYktpdEF1ZGlvQ29udGV4dC5jcHAgKi8sCisJCQkJODNCMUE2
RkYyNDk5ODVEMDAwRkU1OTYxIC8qIFdlYktpdEF1ZGlvQ29udGV4dC5oICovLAorCQkJCTgzQjFB
NzAxMjQ5OTg1RDAwMEZFNTk2MSAvKiBXZWJLaXRBdWRpb0NvbnRleHQuaWRsICovLAorCQkJCTgz
MUI2MTcxMjQ5OUE1OTkwMEMwN0M3OSAvKiBXZWJLaXRBdWRpb1Bhbm5lck5vZGUuY3BwICovLAor
CQkJCTgzMUI2MTc0MjQ5OUE1OUMwMEMwN0M3OSAvKiBXZWJLaXRBdWRpb1Bhbm5lck5vZGUuaCAq
LywKKwkJCQk4MzFCNjE2RjI0OTlBNTk4MDBDMDdDNzkgLyogV2ViS2l0QXVkaW9QYW5uZXJOb2Rl
LmlkbCAqLywKKwkJCQk4MzFCNjE3MzI0OTlBNTlCMDBDMDdDNzkgLyogV2ViS2l0T2ZmbGluZUF1
ZGlvQ29udGV4dC5jcHAgKi8sCisJCQkJODMxQjYxNzUyNDk5QTU5RDAwQzA3Qzc5IC8qIFdlYktp
dE9mZmxpbmVBdWRpb0NvbnRleHQuaCAqLywKKwkJCQk4MzFCNjE3MjI0OTlBNTlBMDBDMDdDNzkg
LyogV2ViS2l0T2ZmbGluZUF1ZGlvQ29udGV4dC5pZGwgKi8sCiAJCQkpOwogCQkJcGF0aCA9IHdl
YmF1ZGlvOwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKQEAgLTI5NzEyLDYgKzI5NzQ4LDcg
QEAKIAkJCQk5QjQxNzA2NDEyNTY2MkIzMDA2QjI4RkMgLyogQXBwbHlCbG9ja0VsZW1lbnRDb21t
YW5kLmggaW4gSGVhZGVycyAqLywKIAkJCQk5MzMwOUREOTA5OUU2NDkyMDA1NkU1ODEgLyogQXBw
bHlTdHlsZUNvbW1hbmQuaCBpbiBIZWFkZXJzICovLAogCQkJCTUxMkREOEY2MEQ5MUU2QUYwMDBG
ODlFRSAvKiBBcmNoaXZlLmggaW4gSGVhZGVycyAqLywKKwkJCQk4M0JEM0NFRTI0OTk4RTAxMDBC
QTNFNjcgLyogQXVkaW9Db250ZXh0U3RhdGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTUxMkREOEZE
MEQ5MUU2QUYwMDBGODlFRSAvKiBBcmNoaXZlRmFjdG9yeS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
NTEyREQ4RkMwRDkxRTZBRjAwMEY4OUVFIC8qIEFyY2hpdmVSZXNvdXJjZS5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJNTEyREQ4RjgwRDkxRTZBRjAwMEY4OUVFIC8qIEFyY2hpdmVSZXNvdXJjZUNvbGxl
Y3Rpb24uaCBpbiBIZWFkZXJzICovLApAQCAtMzAwOTIsNiArMzAxMjksNyBAQAogCQkJCTc3RDUx
MDE3MUVENjAyMjIwMERBNEM4NyAvKiBDcmVkZW50aWFsc0NvbnRhaW5lci5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJNTFBMDUyMzMxMDU4Nzc0RjAwQ0M5RTk1IC8qIENyZWRlbnRpYWxTdG9yYWdlLmgg
aW4gSGVhZGVycyAqLywKIAkJCQkyRDQ4MUYwMjE0NkI1QzU1MDBBQTc4MzQgLyogQ3Jvc3NmYWRl
R2VuZXJhdGVkSW1hZ2UuaCBpbiBIZWFkZXJzICovLAorCQkJCTgzMDQwMjgyMjQ5QTdBNUYwMEE5
MEQ4RCAvKiBQYW5uaW5nTW9kZWxUeXBlLmggaW4gSGVhZGVycyAqLywKIAkJCQlFMUM0MTYxMjBG
NjU2MkZEMDA5MkQyRkIgLyogQ3Jvc3NPcmlnaW5BY2Nlc3NDb250cm9sLmggaW4gSGVhZGVycyAq
LywKIAkJCQk0MUFCRTY3QjFEMDU4MERCMDA2RDg2MkQgLyogQ3Jvc3NPcmlnaW5QcmVmbGlnaHRD
aGVja2VyLmggaW4gSGVhZGVycyAqLywKIAkJCQlFMUM0MTVEQTBGNjU1RDZGMDA5MkQyRkIgLyog
Q3Jvc3NPcmlnaW5QcmVmbGlnaHRSZXN1bHRDYWNoZS5oIGluIEhlYWRlcnMgKi8sCkBAIC0zMDg3
Nyw2ICszMDkxNSw3IEBACiAJCQkJQTQzQkY1OTkxMTQ5MjkwQTAwQzY0M0NBIC8qIEhUTUxQcm9n
cmVzc0VsZW1lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUE4Q0ZGN0EzMEExNTY5NzgwMDBBNDIz
NCAvKiBIVE1MUXVvdGVFbGVtZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlBOEQyMjNGRTE2QjUy
RTRFMDAxNTcyODggLyogSFRNTFJlc291cmNlUHJlbG9hZGVyLmggaW4gSGVhZGVycyAqLywKKwkJ
CQk4M0IxQTcwMjI0OTk4NUYwMDBGRTU5NjEgLyogV2ViS2l0QXVkaW9Db250ZXh0LmggaW4gSGVh
ZGVycyAqLywKIAkJCQlBODcxREMyNTBBMTUyMDU3MDBCMTJBNjggLyogSFRNTFNjcmlwdEVsZW1l
bnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTk3N0IzODc1MTIyODgzRTkwMEI4MUZGOCAvKiBIVE1M
U2NyaXB0UnVubmVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk5NzdCMzg3NjEyMjg4M0U5MDBCODFG
RjggLyogSFRNTFNjcmlwdFJ1bm5lckhvc3QuaCBpbiBIZWFkZXJzICovLApAQCAtMzE3MjEsNiAr
MzE3NjAsNyBAQAogCQkJCUJDODI0MzI5MEQwQ0U4QTIwMDQ2MEM4RiAvKiBKU1NRTEVycm9yLmgg
aW4gSGVhZGVycyAqLywKIAkJCQkxQUU4MkZFRDBDQUIwN0VFMDAyMjM3QUUgLyogSlNTUUxSZXN1
bHRTZXQuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBRkUxMTlBMENCRkZDQzQwMDMwMTdGQSAvKiBK
U1NRTFJlc3VsdFNldFJvd0xpc3QuaCBpbiBIZWFkZXJzICovLAorCQkJCTgzMUI2MTc2MjQ5OUE1
QkIwMEMwN0M3OSAvKiBXZWJLaXRBdWRpb1Bhbm5lck5vZGUuaCBpbiBIZWFkZXJzICovLAogCQkJ
CUI1OURENkE1MTE5MDJBNjIwMDdFOTY4NCAvKiBKU1NRTFN0YXRlbWVudENhbGxiYWNrLmggaW4g
SGVhZGVycyAqLywKIAkJCQlCNTlERDZBOTExOTAyQTcxMDA3RTk2ODQgLyogSlNTUUxTdGF0ZW1l
bnRFcnJvckNhbGxiYWNrLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzgyNDMyQTBEMENFOEEyMDA0
NjBDOEYgLyogSlNTUUxUcmFuc2FjdGlvbi5oIGluIEhlYWRlcnMgKi8sCkBAIC0zMjE5OSw2ICsz
MjIzOSw3IEBACiAJCQkJMDc2MzhBOTkxODg0NDg3MjAwRTE1QTFCIC8qIE1lZGlhU2Vzc2lvbk1h
bmFnZXJJT1MuaCBpbiBIZWFkZXJzICovLAogCQkJCUM5RDg1MUYwMUIzOURDNzgwMDg1MDYyRSAv
KiBNZWRpYVNlc3Npb25NZXRhZGF0YS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQ0QzQTQ5NUYxN0E5
RDAxQjAwMjc0RTQyIC8qIE1lZGlhU291cmNlLmggaW4gSGVhZGVycyAqLywKKwkJCQk4MzA0MDI4
MzI0OUE3QTYyMDBBOTBEOEQgLyogRGlzdGFuY2VNb2RlbFR5cGUuaCBpbiBIZWFkZXJzICovLAog
CQkJCUNENjQxRUIzMTgxOEY1RUQwMEVFNEM0MSAvKiBNZWRpYVNvdXJjZVByaXZhdGUuaCBpbiBI
ZWFkZXJzICovLAogCQkJCUNEQzhCNUE3MTgwNDc0RjcwMDE2RTY4NSAvKiBNZWRpYVNvdXJjZVBy
aXZhdGVBVkZPYmpDLmggaW4gSGVhZGVycyAqLywKIAkJCQlDRERDMUU3QTE4QTk1MkYzMDAyN0E5
RDQgLyogTWVkaWFTb3VyY2VQcml2YXRlQ2xpZW50LmggaW4gSGVhZGVycyAqLywKQEAgLTMyODE1
LDYgKzMyODU2LDcgQEAKIAkJCQk1MUVFN0IzODFBQTUwQjA1MDBGOTJCMjEgLyogUmVzb3VyY2VM
b2FkSW5mby5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTczRTMyNTcxMDg4M0I3QzAwNUJDNDkzIC8q
IFJlc291cmNlTG9hZE5vdGlmaWVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk2QjY5M0EyRTFDNTFB
ODJFMDBCMDNCRUYgLyogUmVzb3VyY2VMb2FkT2JzZXJ2ZXIuaCBpbiBIZWFkZXJzICovLAorCQkJ
CTgzMUI2MTc3MjQ5OUE1QkYwMEMwN0M3OSAvKiBXZWJLaXRPZmZsaW5lQXVkaW9Db250ZXh0Lmgg
aW4gSGVhZGVycyAqLywKIAkJCQlFNDI5NUZBNDEyQjA2MTRFMDBEMUFDRTAgLyogUmVzb3VyY2VM
b2FkUHJpb3JpdHkuaCBpbiBIZWFkZXJzICovLAogCQkJCTdBOTI5Q0E3MUM1OThBQTkwMDRERjIy
NiAvKiBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzLmggaW4gSGVhZGVycyAqLywKIAkJCQk3RUU2ODQ2
RDEyRDI2RTM4MDBFNzk0MTUgLyogUmVzb3VyY2VSZXF1ZXN0LmggaW4gSGVhZGVycyAqLywKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1dlYkNvcmVCdWlsdGluTmFtZXMu
aCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1dlYkNvcmVCdWlsdGluTmFtZXMuaAppbmRl
eCA0OTk3YWI5OTNjYi4uZjkxOTdjMjZhZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL1dlYkNvcmVCdWlsdGluTmFtZXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9XZWJDb3JlQnVpbHRpbk5hbWVzLmgKQEAgLTQ5LDYgKzQ5LDcgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogICAgIG1hY3JvKEFwcGxlUGF5U2V0dXBGZWF0dXJlKSBcCiAgICAgbWFjcm8o
QXR0YWNobWVudEVsZW1lbnQpIFwKICAgICBtYWNybyhBdWRpbykgXAorICAgIG1hY3JvKEF1ZGlv
Q29udGV4dCkgXAogICAgIG1hY3JvKEF1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZSkgXAog
ICAgIG1hY3JvKEF1dGhlbnRpY2F0b3JBdHRlc3RhdGlvblJlc3BvbnNlKSBcCiAgICAgbWFjcm8o
QXV0aGVudGljYXRvclJlc3BvbnNlKSBcCkBAIC0xNjUsOSArMTY2LDExIEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKICAgICBtYWNybyhOYXZpZ2F0b3JDcmVkZW50aWFscykgXAogICAgIG1hY3JvKE5h
dmlnYXRvck1lZGlhRGV2aWNlcykgXAogICAgIG1hY3JvKE5hdmlnYXRvclVzZXJNZWRpYSkgXAor
ICAgIG1hY3JvKE9mZmxpbmVBdWRpb0NvbnRleHQpIFwKICAgICBtYWNybyhPZmZzY3JlZW5DYW52
YXMpIFwKICAgICBtYWNybyhPZmZzY3JlZW5DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQpIFwKICAg
ICBtYWNybyhQYWludFJlbmRlcmluZ0NvbnRleHQyRCkgXAorICAgIG1hY3JvKFBhbm5lck5vZGUp
IFwKICAgICBtYWNybyhQYXltZW50QWRkcmVzcykgXAogICAgIG1hY3JvKFBheW1lbnRNZXRob2RD
aGFuZ2VFdmVudCkgXAogICAgIG1hY3JvKFBheW1lbnRSZXF1ZXN0KSBcCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9kb20vRXZlbnRUYXJnZXRGYWN0b3J5LmluIGIvU291cmNlL1dlYkNvcmUv
ZG9tL0V2ZW50VGFyZ2V0RmFjdG9yeS5pbgppbmRleCBmYzFkYjJjZTBlMC4uYTE1NGI0NDVhMTMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudFRhcmdldEZhY3RvcnkuaW4KKysr
IGIvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50VGFyZ2V0RmFjdG9yeS5pbgpAQCAtNTMsNiArNTMs
NyBAQCBWaWRlb1RyYWNrTGlzdCBjb25kaXRpb25hbD1WSURFTwogVmlzdWFsVmlld3BvcnQKIFdl
YkFuaW1hdGlvbgogV2ViR1BVRGV2aWNlIGNvbmRpdGlvbmFsPVdFQkdQVQorV2ViS2l0QXVkaW9D
b250ZXh0IGNvbmRpdGlvbmFsPVdFQl9BVURJTwogV2ViS2l0TWVkaWFLZXlTZXNzaW9uIGNvbmRp
dGlvbmFsPUxFR0FDWV9FTkNSWVBURURfTUVESUEKIFdlYlNvY2tldAogV29ya2VyCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdzLnlhbWwgYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL1NldHRpbmdzLnlhbWwKaW5kZXggMmQ2YmM2ZmYyZWYuLjU4M2ZjNmY3OTVlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdzLnlhbWwKKysrIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9TZXR0aW5ncy55YW1sCkBAIC0yNTUsNiArMjU1LDggQEAgbG9hZERlZmVycmluZ0Vu
YWJsZWQ6CiAgIGluaXRpYWw6IHRydWUKIHdlYkF1ZGlvRW5hYmxlZDoKICAgaW5pdGlhbDogZmFs
c2UKK21vZGVyblVucHJlZml4ZWRXZWJBdWRpb0VuYWJsZWQ6CisgIGluaXRpYWw6IGZhbHNlCiBw
YWdpbmF0ZUR1cmluZ0xheW91dEVuYWJsZWQ6CiAgIGluaXRpYWw6IGZhbHNlCiBmdWxsU2NyZWVu
RW5hYmxlZDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlByZWZlcmVuY2Vz
LnlhbWwgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQcmVmZXJlbmNlcy55YW1sCmluZGV4IGZh
ZDFhOWY1ODg2Li41MjM1Y2U3MWZmNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQv
V2ViUHJlZmVyZW5jZXMueWFtbAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQcmVmZXJl
bmNlcy55YW1sCkBAIC0zMzQsNiArMzM0LDE0IEBAIFdlYkF1ZGlvRW5hYmxlZDoKICAgZGVmYXVs
dFZhbHVlOiB0cnVlCiAgIGNvbmRpdGlvbjogRU5BQkxFKFdFQl9BVURJTykKIAorTW9kZXJuVW5w
cmVmaXhlZFdlYkF1ZGlvRW5hYmxlZDoKKyAgdHlwZTogYm9vbAorICBkZWZhdWx0VmFsdWU6IGZh
bHNlCisgIGNvbmRpdGlvbjogRU5BQkxFKFdFQl9BVURJTykKKyAgaHVtYW5SZWFkYWJsZU5hbWU6
ICJNb2Rlcm4gV2ViQXVkaW8gQVBJIgorICBodW1hblJlYWRhYmxlRGVzY3JpcHRpb246ICJNb2Rl
cm4gYW5kIHVucHJlZml4ZWQgV2ViQXVkaW8gQVBJIgorICBjYXRlZ29yeTogZXhwZXJpbWVudGFs
CisKIEF0dGFjaG1lbnRFbGVtZW50RW5hYmxlZDoKICAgdHlwZTogYm9vbAogICBkZWZhdWx0VmFs
dWU6IGZhbHNlCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>402136</attachid>
            <date>2020-06-17 11:31:15 -0700</date>
            <delta_ts>2020-06-17 12:24:45 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-213268-20200617113114.patch</filename>
            <type>text/plain</type>
            <size>261288</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYzMTYzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzYwNDdkMTUxZDZmMDhm
ZTlmY2ZjYzZiNTNmNDY1YTgzNGMyOGIyZS4uMzY5Nzg5MzRkYjk1NWYzM2RjMjM0MGNlYTc2YTY5
NmY1MjNlNjgxZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI5NiBAQAorMjAyMC0wNi0xNyAgQ2hy
aXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBleHBlcmltZW50YWwg
ZmVhdHVyZSBmbGFnIGZvciBtb2Rlcm4gJiB1bnByZWZpeGVkIFdlYkF1ZGlvIEFQSQorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjEzMjY4CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIGV4cGVyaW1lbnRh
bCBmZWF0dXJlIGZsYWcgZm9yIG1vZGVybiAmIHVucHJlZml4ZWQgV2ViQXVkaW8gQVBJLAorICAg
ICAgICBvZmYgYnkgZGVmYXVsdC4KKworICAgICAgICBUaGlzIHBhdGNoIHNwbGl0IHRoZSBBdWRp
b0NvbnRleHQsIE9mZmxpbmVBdWRpb0NvbnRleHQgYW5kIFBhbm5lck5vZGUKKyAgICAgICAgSURM
IGludGVyZmFjZXMgaW50byB0aGVpciBwcmVmaXhlZCBhbmQgdW5wcmVmaXhlZCB2ZXJzaW9ucy4g
VGhlCisgICAgICAgIHVucHJlZml4ZWQgdmVyc2lvbnMgYXJlIGJlaGluZCB0aGUgbmV3IGV4cGVy
aW1lbnRhbCBmZWF0dXJlIGZsYWcgdGhhdAorICAgICAgICBpcyBjdXJyZW50bHkgb2ZmIGJ5IGRl
ZmF1bHQgYnV0IGF1dG9tYXRpY2FsbHkgZ2V0cyB0dXJuZWQgb24gaW4gdGhlCisgICAgICAgIGNv
bnRleHQgb2YgbGF5b3V0IHRlc3RzLgorCisgICAgICAgIFRoaXMgd2lsbCBnaXZlIHVzIG1vcmUg
ZmxleGliaWxpdHkgd2hlbiB3b3JraW5nIG9uIHRoZSBtb2Rlcm4gYW5kCisgICAgICAgIHVucHJl
Zml4ZWQgV2ViQXVkaW8gQVBJIGFzIHdlIHdpbGwgbm90IGhhdmUgdG8gd29ycnkgYWJvdXQgYmFj
a3dhcmQKKyAgICAgICAgY29tcGF0aWJpbGl0eS4gVGhpcyBhbHNvIGFsbG93cyB1cyB0byBlYXNp
bHkgdHVybiBpdCBvbiBvciBvZmYgdmlhCisgICAgICAgIHRoZSBleHBlcmltZW50YWwgZmVhdHVy
ZXMgbWVudSBpbiBTYWZhcmkuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLCByZWJhc2VsaW5lZCBl
eGlzdGluZyB0ZXN0cy4KKworICAgICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIERl
cml2ZWRTb3VyY2VzLWlucHV0LnhjZmlsZWxpc3Q6CisgICAgICAgICogRGVyaXZlZFNvdXJjZXMt
b3V0cHV0LnhjZmlsZWxpc3Q6CisgICAgICAgICogRGVyaXZlZFNvdXJjZXMubWFrZToKKyAgICAg
ICAgKiBNb2R1bGVzL3dlYmF1ZGlvL0FuYWx5c2VyTm9kZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpBbmFseXNlck5vZGU6OkFuYWx5c2VyTm9kZSk6CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRp
by9BbmFseXNlck5vZGUuaDoKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQmFzaWNJ
bnNwZWN0b3JOb2RlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvQmFzaWNJbnNwZWN0b3JO
b2RlOjpBdWRpb0Jhc2ljSW5zcGVjdG9yTm9kZSk6CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRp
by9BdWRpb0Jhc2ljSW5zcGVjdG9yTm9kZS5oOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8v
QXVkaW9CYXNpY1Byb2Nlc3Nvck5vZGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9CYXNp
Y1Byb2Nlc3Nvck5vZGU6OkF1ZGlvQmFzaWNQcm9jZXNzb3JOb2RlKToKKyAgICAgICAgKiBNb2R1
bGVzL3dlYmF1ZGlvL0F1ZGlvQmFzaWNQcm9jZXNzb3JOb2RlLmg6CisgICAgICAgICogTW9kdWxl
cy93ZWJhdWRpby9BdWRpb0J1ZmZlclNvdXJjZU5vZGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
QXVkaW9CdWZmZXJTb3VyY2VOb2RlOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9C
dWZmZXJTb3VyY2VOb2RlOjpBdWRpb0J1ZmZlclNvdXJjZU5vZGUpOgorICAgICAgICAoV2ViQ29y
ZTo6QXVkaW9CdWZmZXJTb3VyY2VOb2RlOjpzZXRCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6
QXVkaW9CdWZmZXJTb3VyY2VOb2RlOjpzZXRQYW5uZXJOb2RlKToKKyAgICAgICAgKiBNb2R1bGVz
L3dlYmF1ZGlvL0F1ZGlvQnVmZmVyU291cmNlTm9kZS5oOgorICAgICAgICAqIE1vZHVsZXMvd2Vi
YXVkaW8vQXVkaW9Db250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvQ29udGV4dEJh
c2U6OkF1ZGlvQ29udGV4dEJhc2UpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9Db250ZXh0OjpB
dWRpb0NvbnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9Db250ZXh0QmFzZTo6ZG9jdW1l
bnQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9Db250ZXh0QmFzZTo6c2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCBjb25zdCk6CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9BdWRpb0Nv
bnRleHQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvQ29udGV4dEJhc2U6OkF1dG9Mb2NrZXI6
OkF1dG9Mb2NrZXIpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9Db250ZXh0QmFzZTo6QXV0b0xv
Y2tlcjo6fkF1dG9Mb2NrZXIpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9Db250ZXh0OjptYXhO
dW1iZXJPZkNoYW5uZWxzKToKKyAgICAgICAgKGlzVHlwZSk6CisgICAgICAgICogTW9kdWxlcy93
ZWJhdWRpby9BdWRpb0NvbnRleHQuaWRsOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vQXVk
aW9Db250ZXh0U3RhdGUuaDogQ29waWVkIGZyb20gU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJh
dWRpby9PZmZsaW5lQXVkaW9Db250ZXh0LmlkbC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlv
L0F1ZGlvQ29udGV4dFN0YXRlLmlkbDogQ29waWVkIGZyb20gU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJhdWRpby9PZmZsaW5lQXVkaW9Db250ZXh0LmlkbC4KKyAgICAgICAgKiBNb2R1bGVzL3dl
YmF1ZGlvL0F1ZGlvRGVzdGluYXRpb25Ob2RlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlv
RGVzdGluYXRpb25Ob2RlOjpBdWRpb0Rlc3RpbmF0aW9uTm9kZSk6CisgICAgICAgICogTW9kdWxl
cy93ZWJhdWRpby9BdWRpb0Rlc3RpbmF0aW9uTm9kZS5oOgorICAgICAgICAqIE1vZHVsZXMvd2Vi
YXVkaW8vQXVkaW9Ob2RlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvTm9kZTo6QXVkaW9O
b2RlKToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvTm9kZTo6Y29ubmVjdCk6CisgICAgICAgIChX
ZWJDb3JlOjpBdWRpb05vZGU6OmRpc2Nvbm5lY3QpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9O
b2RlOjpzZXRDaGFubmVsQ291bnQpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9Ob2RlOjpzZXRD
aGFubmVsQ291bnRNb2RlKToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvTm9kZTo6c2V0Q2hhbm5l
bEludGVycHJldGF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvTm9kZTo6ZW5hYmxlT3V0
cHV0c0lmTmVjZXNzYXJ5KToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvTm9kZTo6ZGVyZWYpOgor
ICAgICAgICAoV2ViQ29yZTo6QXVkaW9Ob2RlOjpjb250ZXh0Rm9yQmluZGluZ3MgY29uc3QpOgor
ICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vQXVkaW9Ob2RlLmg6CisgICAgICAgIChXZWJDb3Jl
OjpBdWRpb05vZGU6OmNvbnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9Ob2RlOjpjb250
ZXh0IGNvbnN0KToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvTm9kZS5pZGw6Cisg
ICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9BdWRpb05vZGVPdXRwdXQuaDoKKyAgICAgICAgKFdl
YkNvcmU6OkF1ZGlvTm9kZU91dHB1dDo6Y29udGV4dCk6CisgICAgICAgICogTW9kdWxlcy93ZWJh
dWRpby9BdWRpb1BhcmFtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvUGFyYW06OkF1ZGlv
UGFyYW0pOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vQXVkaW9QYXJhbS5oOgorICAgICAg
ICAqIE1vZHVsZXMvd2ViYXVkaW8vQXVkaW9QYXJhbVRpbWVsaW5lLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkF1ZGlvUGFyYW1UaW1lbGluZTo6dmFsdWVGb3JDb250ZXh0VGltZSk6CisgICAgICAg
ICogTW9kdWxlcy93ZWJhdWRpby9BdWRpb1BhcmFtVGltZWxpbmUuaDoKKyAgICAgICAgKiBNb2R1
bGVzL3dlYmF1ZGlvL0F1ZGlvU2NoZWR1bGVkU291cmNlTm9kZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpBdWRpb1NjaGVkdWxlZFNvdXJjZU5vZGU6OkF1ZGlvU2NoZWR1bGVkU291cmNlTm9kZSk6
CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9BdWRpb1NjaGVkdWxlZFNvdXJjZU5vZGUuaDoK
KyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvU3VtbWluZ0p1bmN0aW9uLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkF1ZGlvU3VtbWluZ0p1bmN0aW9uOjpBdWRpb1N1bW1pbmdKdW5jdGlv
bik6CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9BdWRpb1N1bW1pbmdKdW5jdGlvbi5oOgor
ICAgICAgICAoV2ViQ29yZTo6QXVkaW9TdW1taW5nSnVuY3Rpb246OmNvbnRleHQpOgorICAgICAg
ICAqIE1vZHVsZXMvd2ViYXVkaW8vQmlxdWFkRmlsdGVyTm9kZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpCaXF1YWRGaWx0ZXJOb2RlOjpCaXF1YWRGaWx0ZXJOb2RlKToKKyAgICAgICAgKiBNb2R1
bGVzL3dlYmF1ZGlvL0JpcXVhZEZpbHRlck5vZGUuaDoKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1
ZGlvL0JpcXVhZFByb2Nlc3Nvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpCaXF1YWRQcm9jZXNz
b3I6OkJpcXVhZFByb2Nlc3Nvcik6CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9CaXF1YWRQ
cm9jZXNzb3IuaDoKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL0NoYW5uZWxNZXJnZXJOb2Rl
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNoYW5uZWxNZXJnZXJOb2RlOjpjcmVhdGUpOgorICAg
ICAgICAoV2ViQ29yZTo6Q2hhbm5lbE1lcmdlck5vZGU6OkNoYW5uZWxNZXJnZXJOb2RlKToKKyAg
ICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL0NoYW5uZWxNZXJnZXJOb2RlLmg6CisgICAgICAgICog
TW9kdWxlcy93ZWJhdWRpby9DaGFubmVsU3BsaXR0ZXJOb2RlLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkNoYW5uZWxTcGxpdHRlck5vZGU6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpDaGFu
bmVsU3BsaXR0ZXJOb2RlOjpDaGFubmVsU3BsaXR0ZXJOb2RlKToKKyAgICAgICAgKiBNb2R1bGVz
L3dlYmF1ZGlvL0NoYW5uZWxTcGxpdHRlck5vZGUuaDoKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1
ZGlvL0NvbnZvbHZlck5vZGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29udm9sdmVyTm9kZTo6
Q29udm9sdmVyTm9kZSk6CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9Db252b2x2ZXJOb2Rl
Lmg6CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9EZWZhdWx0QXVkaW9EZXN0aW5hdGlvbk5v
ZGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGVmYXVsdEF1ZGlvRGVzdGluYXRpb25Ob2RlOjpE
ZWZhdWx0QXVkaW9EZXN0aW5hdGlvbk5vZGUpOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8v
RGVmYXVsdEF1ZGlvRGVzdGluYXRpb25Ob2RlLmg6CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRp
by9EZWxheU5vZGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGVsYXlOb2RlOjpEZWxheU5vZGUp
OgorICAgICAgICAoV2ViQ29yZTo6RGVsYXlOb2RlOjpjcmVhdGUpOgorICAgICAgICAqIE1vZHVs
ZXMvd2ViYXVkaW8vRGVsYXlOb2RlLmg6CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9EZWxh
eVByb2Nlc3Nvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEZWxheVByb2Nlc3Nvcjo6RGVsYXlQ
cm9jZXNzb3IpOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vRGVsYXlQcm9jZXNzb3IuaDoK
KyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL0Rpc3RhbmNlTW9kZWxUeXBlLmg6IENvcGllZCBm
cm9tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vT2ZmbGluZUF1ZGlvQ29udGV4dC5p
ZGwuCisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9EaXN0YW5jZU1vZGVsVHlwZS5pZGw6IENv
cGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vT2ZmbGluZUF1ZGlvQ29u
dGV4dC5pZGwuCisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9EeW5hbWljc0NvbXByZXNzb3JO
b2RlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkR5bmFtaWNzQ29tcHJlc3Nvck5vZGU6OkR5bmFt
aWNzQ29tcHJlc3Nvck5vZGUpOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vRHluYW1pY3ND
b21wcmVzc29yTm9kZS5oOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vR2Fpbk5vZGUuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6R2Fpbk5vZGU6OkdhaW5Ob2RlKToKKyAgICAgICAgKiBNb2R1
bGVzL3dlYmF1ZGlvL0dhaW5Ob2RlLmg6CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9NZWRp
YUVsZW1lbnRBdWRpb1NvdXJjZU5vZGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFFbGVt
ZW50QXVkaW9Tb3VyY2VOb2RlOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFFbGVt
ZW50QXVkaW9Tb3VyY2VOb2RlOjpNZWRpYUVsZW1lbnRBdWRpb1NvdXJjZU5vZGUpOgorICAgICAg
ICAoV2ViQ29yZTo6TWVkaWFFbGVtZW50QXVkaW9Tb3VyY2VOb2RlOjpzZXRGb3JtYXQpOgorICAg
ICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vTWVkaWFFbGVtZW50QXVkaW9Tb3VyY2VOb2RlLmg6Cisg
ICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9NZWRpYVN0cmVhbUF1ZGlvRGVzdGluYXRpb25Ob2Rl
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFtQXVkaW9EZXN0aW5hdGlvbk5vZGU6
OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbUF1ZGlvRGVzdGluYXRpb25O
b2RlOjpNZWRpYVN0cmVhbUF1ZGlvRGVzdGluYXRpb25Ob2RlKToKKyAgICAgICAgKiBNb2R1bGVz
L3dlYmF1ZGlvL01lZGlhU3RyZWFtQXVkaW9EZXN0aW5hdGlvbk5vZGUuaDoKKyAgICAgICAgKiBN
b2R1bGVzL3dlYmF1ZGlvL01lZGlhU3RyZWFtQXVkaW9Tb3VyY2VOb2RlLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6Ok1lZGlhU3RyZWFtQXVkaW9Tb3VyY2VOb2RlOjpjcmVhdGUpOgorICAgICAgICAo
V2ViQ29yZTo6TWVkaWFTdHJlYW1BdWRpb1NvdXJjZU5vZGU6Ok1lZGlhU3RyZWFtQXVkaW9Tb3Vy
Y2VOb2RlKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL01lZGlhU3RyZWFtQXVkaW9Tb3Vy
Y2VOb2RlLmg6CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9PZmZsaW5lQXVkaW9Db250ZXh0
LmlkbDoKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL09mZmxpbmVBdWRpb0Rlc3RpbmF0aW9u
Tm9kZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpPZmZsaW5lQXVkaW9EZXN0aW5hdGlvbk5vZGU6
Ok9mZmxpbmVBdWRpb0Rlc3RpbmF0aW9uTm9kZSk6CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRp
by9PZmZsaW5lQXVkaW9EZXN0aW5hdGlvbk5vZGUuaDoKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1
ZGlvL09zY2lsbGF0b3JOb2RlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok9zY2lsbGF0b3JOb2Rl
OjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6T3NjaWxsYXRvck5vZGU6Ok9zY2lsbGF0b3JO
b2RlKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL09zY2lsbGF0b3JOb2RlLmg6CisgICAg
ICAgICogTW9kdWxlcy93ZWJhdWRpby9QYW5uZXJOb2RlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlBhbm5lck5vZGVCYXNlOjpQYW5uZXJOb2RlQmFzZSk6CisgICAgICAgIChXZWJDb3JlOjpQYW5u
ZXJOb2RlOjpQYW5uZXJOb2RlKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL1Bhbm5lck5v
ZGUuaDoKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL1Bhbm5lck5vZGUuaWRsOgorICAgICAg
ICAqIE1vZHVsZXMvd2ViYXVkaW8vUGFubmluZ01vZGVsVHlwZS5oOiBDb3BpZWQgZnJvbSBTb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL09mZmxpbmVBdWRpb0NvbnRleHQuaWRsLgorICAg
ICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vUGFubmluZ01vZGVsVHlwZS5pZGw6IENvcGllZCBmcm9t
IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vT2ZmbGluZUF1ZGlvQ29udGV4dC5pZGwu
CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9TY3JpcHRQcm9jZXNzb3JOb2RlLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlNjcmlwdFByb2Nlc3Nvck5vZGU6OmNyZWF0ZSk6CisgICAgICAgIChX
ZWJDb3JlOjpTY3JpcHRQcm9jZXNzb3JOb2RlOjpTY3JpcHRQcm9jZXNzb3JOb2RlKToKKyAgICAg
ICAgKiBNb2R1bGVzL3dlYmF1ZGlvL1NjcmlwdFByb2Nlc3Nvck5vZGUuaDoKKyAgICAgICAgKiBN
b2R1bGVzL3dlYmF1ZGlvL1dhdmVTaGFwZXJOb2RlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Oldh
dmVTaGFwZXJOb2RlOjpXYXZlU2hhcGVyTm9kZSk6CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRp
by9XYXZlU2hhcGVyTm9kZS5oOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vV2ViS2l0QXVk
aW9Db250ZXh0LmNwcDogQ29waWVkIGZyb20gU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRp
by9BdWRpb0NvbnRleHQuY3BwLgorICAgICAgICAoV2ViQ29yZTo6V2ViS2l0QXVkaW9Db250ZXh0
Ojppc1NhbXBsZVJhdGVSYW5nZUdvb2QpOgorICAgICAgICAoV2ViQ29yZTo6V2ViS2l0QXVkaW9D
b250ZXh0OjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6V2ViS2l0QXVkaW9Db250ZXh0OjpX
ZWJLaXRBdWRpb0NvbnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6V2ViS2l0QXVkaW9Db250ZXh0
Ojpjb25zdHJ1Y3RDb21tb24pOgorICAgICAgICAoV2ViQ29yZTo6V2ViS2l0QXVkaW9Db250ZXh0
Ojp+V2ViS2l0QXVkaW9Db250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OldlYktpdEF1ZGlvQ29u
dGV4dDo6bGF6eUluaXRpYWxpemUpOgorICAgICAgICAoV2ViQ29yZTo6V2ViS2l0QXVkaW9Db250
ZXh0OjpjbGVhcik6CisgICAgICAgIChXZWJDb3JlOjpXZWJLaXRBdWRpb0NvbnRleHQ6OnVuaW5p
dGlhbGl6ZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJLaXRBdWRpb0NvbnRleHQ6OmlzSW5pdGlh
bGl6ZWQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6V2ViS2l0QXVkaW9Db250ZXh0OjphZGRS
ZWFjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpXZWJLaXRBdWRpb0NvbnRleHQ6OnNldFN0YXRl
KToKKyAgICAgICAgKFdlYkNvcmU6OldlYktpdEF1ZGlvQ29udGV4dDo6c3RvcCk6CisgICAgICAg
IChXZWJDb3JlOjpXZWJLaXRBdWRpb0NvbnRleHQ6OnN1c3BlbmQpOgorICAgICAgICAoV2ViQ29y
ZTo6V2ViS2l0QXVkaW9Db250ZXh0OjpyZXN1bWUpOgorICAgICAgICAoV2ViQ29yZTo6V2ViS2l0
QXVkaW9Db250ZXh0OjphY3RpdmVET01PYmplY3ROYW1lIGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6OldlYktpdEF1ZGlvQ29udGV4dDo6aG9zdGluZ0RvY3VtZW50SWRlbnRpZmllciBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpXZWJLaXRBdWRpb0NvbnRleHQ6OmlzU3VzcGVuZGVkIGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6OldlYktpdEF1ZGlvQ29udGV4dDo6dmlzaWJpbGl0eVN0YXRl
Q2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJLaXRBdWRpb0NvbnRleHQ6OndvdWxkVGFp
bnRPcmlnaW4gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6V2ViS2l0QXVkaW9Db250ZXh0Ojpj
cmVhdGVCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6V2ViS2l0QXVkaW9Db250ZXh0OjpkZWNv
ZGVBdWRpb0RhdGEpOgorICAgICAgICAoV2ViQ29yZTo6V2ViS2l0QXVkaW9Db250ZXh0OjpjcmVh
dGVCdWZmZXJTb3VyY2UpOgorICAgICAgICAoV2ViQ29yZTo6V2ViS2l0QXVkaW9Db250ZXh0Ojpj
cmVhdGVNZWRpYUVsZW1lbnRTb3VyY2UpOgorICAgICAgICAoV2ViQ29yZTo6V2ViS2l0QXVkaW9D
b250ZXh0OjpjcmVhdGVNZWRpYVN0cmVhbVNvdXJjZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJL
aXRBdWRpb0NvbnRleHQ6OmNyZWF0ZU1lZGlhU3RyZWFtRGVzdGluYXRpb24pOgorICAgICAgICAo
V2ViQ29yZTo6V2ViS2l0QXVkaW9Db250ZXh0OjpjcmVhdGVTY3JpcHRQcm9jZXNzb3IpOgorICAg
ICAgICAoV2ViQ29yZTo6V2ViS2l0QXVkaW9Db250ZXh0OjpjcmVhdGVCaXF1YWRGaWx0ZXIpOgor
ICAgICAgICAoV2ViQ29yZTo6V2ViS2l0QXVkaW9Db250ZXh0OjpjcmVhdGVXYXZlU2hhcGVyKToK
KyAgICAgICAgKFdlYkNvcmU6OldlYktpdEF1ZGlvQ29udGV4dDo6Y3JlYXRlUGFubmVyKToKKyAg
ICAgICAgKFdlYkNvcmU6OldlYktpdEF1ZGlvQ29udGV4dDo6Y3JlYXRlQ29udm9sdmVyKToKKyAg
ICAgICAgKFdlYkNvcmU6OldlYktpdEF1ZGlvQ29udGV4dDo6Y3JlYXRlRHluYW1pY3NDb21wcmVz
c29yKToKKyAgICAgICAgKFdlYkNvcmU6OldlYktpdEF1ZGlvQ29udGV4dDo6Y3JlYXRlQW5hbHlz
ZXIpOgorICAgICAgICAoV2ViQ29yZTo6V2ViS2l0QXVkaW9Db250ZXh0OjpjcmVhdGVHYWluKToK
KyAgICAgICAgKFdlYkNvcmU6OldlYktpdEF1ZGlvQ29udGV4dDo6Y3JlYXRlRGVsYXkpOgorICAg
ICAgICAoV2ViQ29yZTo6V2ViS2l0QXVkaW9Db250ZXh0OjpjcmVhdGVDaGFubmVsU3BsaXR0ZXIp
OgorICAgICAgICAoV2ViQ29yZTo6V2ViS2l0QXVkaW9Db250ZXh0OjpjcmVhdGVDaGFubmVsTWVy
Z2VyKToKKyAgICAgICAgKFdlYkNvcmU6OldlYktpdEF1ZGlvQ29udGV4dDo6Y3JlYXRlT3NjaWxs
YXRvcik6CisgICAgICAgIChXZWJDb3JlOjpXZWJLaXRBdWRpb0NvbnRleHQ6OmNyZWF0ZVBlcmlv
ZGljV2F2ZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJLaXRBdWRpb0NvbnRleHQ6Om5vdGlmeU5v
ZGVGaW5pc2hlZFByb2Nlc3NpbmcpOgorICAgICAgICAoV2ViQ29yZTo6V2ViS2l0QXVkaW9Db250
ZXh0OjpkZXJlZkZpbmlzaGVkU291cmNlTm9kZXMpOgorICAgICAgICAoV2ViQ29yZTo6V2ViS2l0
QXVkaW9Db250ZXh0OjpyZWZOb2RlKToKKyAgICAgICAgKFdlYkNvcmU6OldlYktpdEF1ZGlvQ29u
dGV4dDo6ZGVyZWZOb2RlKToKKyAgICAgICAgKFdlYkNvcmU6OldlYktpdEF1ZGlvQ29udGV4dDo6
ZGVyZWZVbmZpbmlzaGVkU291cmNlTm9kZXMpOgorICAgICAgICAoV2ViQ29yZTo6V2ViS2l0QXVk
aW9Db250ZXh0Ojpsb2NrKToKKyAgICAgICAgKFdlYkNvcmU6OldlYktpdEF1ZGlvQ29udGV4dDo6
dHJ5TG9jayk6CisgICAgICAgIChXZWJDb3JlOjpXZWJLaXRBdWRpb0NvbnRleHQ6OnVubG9jayk6
CisgICAgICAgIChXZWJDb3JlOjpXZWJLaXRBdWRpb0NvbnRleHQ6OmlzQXVkaW9UaHJlYWQgY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6V2ViS2l0QXVkaW9Db250ZXh0Ojppc0dyYXBoT3duZXIg
Y29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6V2ViS2l0QXVkaW9Db250ZXh0OjphZGREZWZlcnJl
ZEZpbmlzaERlcmVmKToKKyAgICAgICAgKFdlYkNvcmU6OldlYktpdEF1ZGlvQ29udGV4dDo6aGFu
ZGxlUHJlUmVuZGVyVGFza3MpOgorICAgICAgICAoV2ViQ29yZTo6V2ViS2l0QXVkaW9Db250ZXh0
OjpoYW5kbGVQb3N0UmVuZGVyVGFza3MpOgorICAgICAgICAoV2ViQ29yZTo6V2ViS2l0QXVkaW9D
b250ZXh0OjpoYW5kbGVEZWZlcnJlZEZpbmlzaERlcmVmcyk6CisgICAgICAgIChXZWJDb3JlOjpX
ZWJLaXRBdWRpb0NvbnRleHQ6Om1hcmtGb3JEZWxldGlvbik6CisgICAgICAgIChXZWJDb3JlOjpX
ZWJLaXRBdWRpb0NvbnRleHQ6OnNjaGVkdWxlTm9kZURlbGV0aW9uKToKKyAgICAgICAgKFdlYkNv
cmU6OldlYktpdEF1ZGlvQ29udGV4dDo6ZGVsZXRlTWFya2VkTm9kZXMpOgorICAgICAgICAoV2Vi
Q29yZTo6V2ViS2l0QXVkaW9Db250ZXh0OjptYXJrU3VtbWluZ0p1bmN0aW9uRGlydHkpOgorICAg
ICAgICAoV2ViQ29yZTo6V2ViS2l0QXVkaW9Db250ZXh0OjpyZW1vdmVNYXJrZWRTdW1taW5nSnVu
Y3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6V2ViS2l0QXVkaW9Db250ZXh0OjptYXJrQXVkaW9O
b2RlT3V0cHV0RGlydHkpOgorICAgICAgICAoV2ViQ29yZTo6V2ViS2l0QXVkaW9Db250ZXh0Ojpo
YW5kbGVEaXJ0eUF1ZGlvU3VtbWluZ0p1bmN0aW9ucyk6CisgICAgICAgIChXZWJDb3JlOjpXZWJL
aXRBdWRpb0NvbnRleHQ6OmhhbmRsZURpcnR5QXVkaW9Ob2RlT3V0cHV0cyk6CisgICAgICAgIChX
ZWJDb3JlOjpXZWJLaXRBdWRpb0NvbnRleHQ6OmFkZEF1dG9tYXRpY1B1bGxOb2RlKToKKyAgICAg
ICAgKFdlYkNvcmU6OldlYktpdEF1ZGlvQ29udGV4dDo6cmVtb3ZlQXV0b21hdGljUHVsbE5vZGUp
OgorICAgICAgICAoV2ViQ29yZTo6V2ViS2l0QXVkaW9Db250ZXh0Ojp1cGRhdGVBdXRvbWF0aWNQ
dWxsTm9kZXMpOgorICAgICAgICAoV2ViQ29yZTo6V2ViS2l0QXVkaW9Db250ZXh0Ojpwcm9jZXNz
QXV0b21hdGljUHVsbE5vZGVzKToKKyAgICAgICAgKFdlYkNvcmU6OldlYktpdEF1ZGlvQ29udGV4
dDo6bm9kZVdpbGxCZWdpblBsYXliYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OnNob3VsZERvY3Vt
ZW50QWxsb3dXZWJBdWRpb1RvQXV0b1BsYXkpOgorICAgICAgICAoV2ViQ29yZTo6V2ViS2l0QXVk
aW9Db250ZXh0Ojp3aWxsQmVnaW5QbGF5YmFjayk6CisgICAgICAgIChXZWJDb3JlOjpXZWJLaXRB
dWRpb0NvbnRleHQ6OndpbGxQYXVzZVBsYXliYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OldlYktp
dEF1ZGlvQ29udGV4dDo6c3RhcnRSZW5kZXJpbmcpOgorICAgICAgICAoV2ViQ29yZTo6V2ViS2l0
QXVkaW9Db250ZXh0OjptZWRpYUNhblN0YXJ0KToKKyAgICAgICAgKFdlYkNvcmU6OldlYktpdEF1
ZGlvQ29udGV4dDo6bWVkaWFTdGF0ZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJLaXRB
dWRpb0NvbnRleHQ6OnBhZ2VNdXRlZFN0YXRlRGlkQ2hhbmdlKToKKyAgICAgICAgKFdlYkNvcmU6
OldlYktpdEF1ZGlvQ29udGV4dDo6aXNQbGF5aW5nQXVkaW9EaWRDaGFuZ2UpOgorICAgICAgICAo
V2ViQ29yZTo6V2ViS2l0QXVkaW9Db250ZXh0OjpmaW5pc2hlZFJlbmRlcmluZyk6CisgICAgICAg
IChXZWJDb3JlOjpXZWJLaXRBdWRpb0NvbnRleHQ6OmRpc3BhdGNoRXZlbnQpOgorICAgICAgICAo
V2ViQ29yZTo6V2ViS2l0QXVkaW9Db250ZXh0OjppbmNyZW1lbnRBY3RpdmVTb3VyY2VDb3VudCk6
CisgICAgICAgIChXZWJDb3JlOjpXZWJLaXRBdWRpb0NvbnRleHQ6OmRlY3JlbWVudEFjdGl2ZVNv
dXJjZUNvdW50KToKKyAgICAgICAgKFdlYkNvcmU6OldlYktpdEF1ZGlvQ29udGV4dDo6c3VzcGVu
ZFJlbmRlcmluZyk6CisgICAgICAgIChXZWJDb3JlOjpXZWJLaXRBdWRpb0NvbnRleHQ6OnJlc3Vt
ZVJlbmRlcmluZyk6CisgICAgICAgIChXZWJDb3JlOjpXZWJLaXRBdWRpb0NvbnRleHQ6OmNsb3Nl
KToKKyAgICAgICAgKFdlYkNvcmU6OldlYktpdEF1ZGlvQ29udGV4dDo6c3VzcGVuZFBsYXliYWNr
KToKKyAgICAgICAgKFdlYkNvcmU6OldlYktpdEF1ZGlvQ29udGV4dDo6bWF5UmVzdW1lUGxheWJh
Y2spOgorICAgICAgICAoV2ViQ29yZTo6V2ViS2l0QXVkaW9Db250ZXh0Ojpwb3N0VGFzayk6Cisg
ICAgICAgIChXZWJDb3JlOjpXZWJLaXRBdWRpb0NvbnRleHQ6Om9yaWdpbiBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpXZWJLaXRBdWRpb0NvbnRleHQ6OmFkZENvbnNvbGVNZXNzYWdlKToKKyAg
ICAgICAgKFdlYkNvcmU6OldlYktpdEF1ZGlvQ29udGV4dDo6Y2xlYXJQZW5kaW5nQWN0aXZpdHkp
OgorICAgICAgICAoV2ViQ29yZTo6V2ViS2l0QXVkaW9Db250ZXh0OjptYWtlUGVuZGluZ0FjdGl2
aXR5KToKKyAgICAgICAgKFdlYkNvcmU6OldlYktpdEF1ZGlvQ29udGV4dDo6bG9nQ2hhbm5lbCBj
b25zdCk6CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9XZWJLaXRBdWRpb0NvbnRleHQuaDog
Q29waWVkIGZyb20gU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0NvbnRleHQu
aC4KKyAgICAgICAgKFdlYkNvcmU6OldlYktpdEF1ZGlvQ29udGV4dDo6ZGVzdGluYXRpb24pOgor
ICAgICAgICAoV2ViQ29yZTo6V2ViS2l0QXVkaW9Db250ZXh0OjphY3RpdmVTb3VyY2VDb3VudCBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJLaXRBdWRpb0NvbnRleHQ6Omxpc3RlbmVyKToK
KyAgICAgICAgKFdlYkNvcmU6OldlYktpdEF1ZGlvQ29udGV4dDo6aXNDbG9zZWQgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6V2ViS2l0QXVkaW9Db250ZXh0Ojpjb25uZWN0aW9uQ291bnQgY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6V2ViS2l0QXVkaW9Db250ZXh0OjphdWRpb1RocmVhZCBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJLaXRBdWRpb0NvbnRleHQ6Om1heE51bWJlck9m
Q2hhbm5lbHMpOgorICAgICAgICAoV2ViQ29yZTo6V2ViS2l0QXVkaW9Db250ZXh0Ojp1c2VyR2Vz
dHVyZVJlcXVpcmVkRm9yQXVkaW9TdGFydCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJL
aXRBdWRpb0NvbnRleHQ6OnBhZ2VDb25zZW50UmVxdWlyZWRGb3JBdWRpb1N0YXJ0IGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6OldlYktpdEF1ZGlvQ29udGV4dDo6c3RhdGUgY29uc3QpOgorICAg
ICAgICAoaXNUeXBlKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL1dlYktpdEF1ZGlvQ29u
dGV4dC5pZGw6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVk
aW9Db250ZXh0LmlkbC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL1dlYktpdEF1ZGlvUGFu
bmVyTm9kZS5jcHA6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8v
UGFubmVyTm9kZS5jcHAuCisgICAgICAgIChXZWJDb3JlOjpmaXhOQU5zKToKKyAgICAgICAgKFdl
YkNvcmU6OldlYktpdEF1ZGlvUGFubmVyTm9kZTo6V2ViS2l0QXVkaW9QYW5uZXJOb2RlKToKKyAg
ICAgICAgKFdlYkNvcmU6OldlYktpdEF1ZGlvUGFubmVyTm9kZTo6fldlYktpdEF1ZGlvUGFubmVy
Tm9kZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJLaXRBdWRpb1Bhbm5lck5vZGU6OnB1bGxJbnB1
dHMpOgorICAgICAgICAoV2ViQ29yZTo6V2ViS2l0QXVkaW9QYW5uZXJOb2RlOjpwcm9jZXNzKToK
KyAgICAgICAgKFdlYkNvcmU6OldlYktpdEF1ZGlvUGFubmVyTm9kZTo6cmVzZXQpOgorICAgICAg
ICAoV2ViQ29yZTo6V2ViS2l0QXVkaW9QYW5uZXJOb2RlOjppbml0aWFsaXplKToKKyAgICAgICAg
KFdlYkNvcmU6OldlYktpdEF1ZGlvUGFubmVyTm9kZTo6dW5pbml0aWFsaXplKToKKyAgICAgICAg
KFdlYkNvcmU6OldlYktpdEF1ZGlvUGFubmVyTm9kZTo6bGlzdGVuZXIpOgorICAgICAgICAoV2Vi
Q29yZTo6V2ViS2l0QXVkaW9QYW5uZXJOb2RlOjpzZXRQYW5uaW5nTW9kZWwpOgorICAgICAgICAo
V2ViQ29yZTo6V2ViS2l0QXVkaW9QYW5uZXJOb2RlOjpkaXN0YW5jZU1vZGVsIGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OldlYktpdEF1ZGlvUGFubmVyTm9kZTo6c2V0RGlzdGFuY2VNb2RlbCk6
CisgICAgICAgIChXZWJDb3JlOjpXZWJLaXRBdWRpb1Bhbm5lck5vZGU6OmdldEF6aW11dGhFbGV2
YXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6V2ViS2l0QXVkaW9QYW5uZXJOb2RlOjpkb3BwbGVy
UmF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJLaXRBdWRpb1Bhbm5lck5vZGU6OmRpc3RhbmNl
Q29uZUdhaW4pOgorICAgICAgICAoV2ViQ29yZTo6V2ViS2l0QXVkaW9QYW5uZXJOb2RlOjpub3Rp
ZnlBdWRpb1NvdXJjZXNDb25uZWN0ZWRUb05vZGUpOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVk
aW8vV2ViS2l0QXVkaW9QYW5uZXJOb2RlLmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViYXVkaW8vUGFubmVyTm9kZS5oLgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8v
V2ViS2l0QXVkaW9QYW5uZXJOb2RlLmlkbDogQ29waWVkIGZyb20gU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJhdWRpby9QYW5uZXJOb2RlLmlkbC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlv
L1dlYktpdE9mZmxpbmVBdWRpb0NvbnRleHQuY3BwOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmF1ZGlvL0RlbGF5Tm9kZS5jcHAuCisgICAgICAgIChXZWJDb3JlOjpXZWJL
aXRPZmZsaW5lQXVkaW9Db250ZXh0OjpXZWJLaXRPZmZsaW5lQXVkaW9Db250ZXh0KToKKyAgICAg
ICAgKFdlYkNvcmU6OldlYktpdE9mZmxpbmVBdWRpb0NvbnRleHQ6OmNyZWF0ZSk6CisgICAgICAg
ICogTW9kdWxlcy93ZWJhdWRpby9XZWJLaXRPZmZsaW5lQXVkaW9Db250ZXh0Lmg6IENvcGllZCBm
cm9tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vRGVsYXlOb2RlLmguCisgICAgICAg
ICogTW9kdWxlcy93ZWJhdWRpby9XZWJLaXRPZmZsaW5lQXVkaW9Db250ZXh0LmlkbDogQ29waWVk
IGZyb20gU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9PZmZsaW5lQXVkaW9Db250ZXh0
LmlkbC4KKyAgICAgICAgKiBTb3VyY2VzLnR4dDoKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogYmluZGluZ3MvanMvV2ViQ29yZUJ1aWx0aW5O
YW1lcy5oOgorICAgICAgICAqIGRvbS9FdmVudFRhcmdldEZhY3RvcnkuaW46CisgICAgICAgICog
cGFnZS9TZXR0aW5ncy55YW1sOgorICAgICAgICAqIHRlc3RpbmcvSW50ZXJuYWxzLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkludGVybmFsczo6c2V0QXVkaW9Db250ZXh0UmVzdHJpY3Rpb25zKToK
KyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFscy5oOgorICAgICAgICAqIHRlc3RpbmcvSW50ZXJu
YWxzLmlkbDoKKwogMjAyMC0wNi0xNyAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgog
CiAgICAgICAgIFVucmV2aWV3ZWQgYXR0ZW1wdCB0byBmaXggaW50ZXJuYWwgbWFjT1MgYnVpbGQg
YWZ0ZXIgcjI2MzE1Ny4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291
cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggOTg4NzM4MTc0OWM4Y2I0MDE2M2U2N2RhMDQwODgx
YWU2ZjYzZDg2MS4uZDM3MDFjZGFkOTFiNzlkODRiNjJkNDY2YzYzZWM1YjEwZjgxOTVmMiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAyMC0wNi0xNyAgQ2hyaXMgRHVtZXogIDxjZHVtZXpA
YXBwbGUuY29tPgorCisgICAgICAgIEFkZCBleHBlcmltZW50YWwgZmVhdHVyZSBmbGFnIGZvciBt
b2Rlcm4gJiB1bnByZWZpeGVkIFdlYkF1ZGlvIEFQSQorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjEzMjY4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIGV4cGVyaW1lbnRhbCBmZWF0dXJlIGZsYWcgZm9y
IG1vZGVybiAmIHVucHJlZml4ZWQgV2ViQXVkaW8gQVBJLAorICAgICAgICBvZmYgYnkgZGVmYXVs
dC4KKworICAgICAgICAqIFNoYXJlZC9XZWJQcmVmZXJlbmNlcy55YW1sOgorCiAyMDIwLTA2LTE3
ICBEYXJyeWwgUG9ndWUgIDxkYXJyeWxAZHBvZ3VlLmNhPgogCiAgICAgICAgIEluZGV4ZWREQjog
U3VwcG9ydCBJREJGYWN0b3J5IGRhdGFiYXNlcyBtZXRob2QKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKaW5k
ZXggOTc1OTQ4OTVkOGM3YWMyODExOGM5N2M0ZjE5YWU1YjZhYjg5MWM5ZS4uMzk5YTZiZDNmZDA5
NmM1MTE3ODgxYzkyNTc2OTE1MDUxMzNjMzAxMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
Q01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKQEAgLTQz
Myw2ICs0MzMsNyBAQCBzZXQoV2ViQ29yZV9OT05fU1ZHX0lETF9GSUxFUwogICAgIE1vZHVsZXMv
d2ViYXVkaW8vQXVkaW9CdWZmZXJDYWxsYmFjay5pZGwKICAgICBNb2R1bGVzL3dlYmF1ZGlvL0F1
ZGlvQnVmZmVyU291cmNlTm9kZS5pZGwKICAgICBNb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQ29udGV4
dC5pZGwKKyAgICBNb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQ29udGV4dFN0YXRlLmlkbAogICAgIE1v
ZHVsZXMvd2ViYXVkaW8vQXVkaW9EZXN0aW5hdGlvbk5vZGUuaWRsCiAgICAgTW9kdWxlcy93ZWJh
dWRpby9BdWRpb0xpc3RlbmVyLmlkbAogICAgIE1vZHVsZXMvd2ViYXVkaW8vQXVkaW9Ob2RlLmlk
bApAQCAtNDQzLDYgKzQ0NCw3IEBAIHNldChXZWJDb3JlX05PTl9TVkdfSURMX0ZJTEVTCiAgICAg
TW9kdWxlcy93ZWJhdWRpby9DaGFubmVsU3BsaXR0ZXJOb2RlLmlkbAogICAgIE1vZHVsZXMvd2Vi
YXVkaW8vQ29udm9sdmVyTm9kZS5pZGwKICAgICBNb2R1bGVzL3dlYmF1ZGlvL0RlbGF5Tm9kZS5p
ZGwKKyAgICBNb2R1bGVzL3dlYmF1ZGlvL0Rpc3RhbmNlTW9kZWxUeXBlLmlkbAogICAgIE1vZHVs
ZXMvd2ViYXVkaW8vRHluYW1pY3NDb21wcmVzc29yTm9kZS5pZGwKICAgICBNb2R1bGVzL3dlYmF1
ZGlvL0dhaW5Ob2RlLmlkbAogICAgIE1vZHVsZXMvd2ViYXVkaW8vTWVkaWFFbGVtZW50QXVkaW9T
b3VyY2VOb2RlLmlkbApAQCAtNDUyLDkgKzQ1NCwxMyBAQCBzZXQoV2ViQ29yZV9OT05fU1ZHX0lE
TF9GSUxFUwogICAgIE1vZHVsZXMvd2ViYXVkaW8vT2ZmbGluZUF1ZGlvQ29udGV4dC5pZGwKICAg
ICBNb2R1bGVzL3dlYmF1ZGlvL09zY2lsbGF0b3JOb2RlLmlkbAogICAgIE1vZHVsZXMvd2ViYXVk
aW8vUGFubmVyTm9kZS5pZGwKKyAgICBNb2R1bGVzL3dlYmF1ZGlvL1Bhbm5pbmdNb2RlbFR5cGUu
aWRsCiAgICAgTW9kdWxlcy93ZWJhdWRpby9QZXJpb2RpY1dhdmUuaWRsCiAgICAgTW9kdWxlcy93
ZWJhdWRpby9TY3JpcHRQcm9jZXNzb3JOb2RlLmlkbAogICAgIE1vZHVsZXMvd2ViYXVkaW8vV2F2
ZVNoYXBlck5vZGUuaWRsCisgICAgTW9kdWxlcy93ZWJhdWRpby9XZWJLaXRBdWRpb0NvbnRleHQu
aWRsCisgICAgTW9kdWxlcy93ZWJhdWRpby9XZWJLaXRBdWRpb1Bhbm5lck5vZGUuaWRsCisgICAg
TW9kdWxlcy93ZWJhdWRpby9XZWJLaXRPZmZsaW5lQXVkaW9Db250ZXh0LmlkbAogCiAgICAgTW9k
dWxlcy93ZWJhdXRobi9BdHRlc3RhdGlvbkNvbnZleWFuY2VQcmVmZXJlbmNlLmlkbAogICAgIE1v
ZHVsZXMvd2ViYXV0aG4vQXV0aGVudGljYXRpb25FeHRlbnNpb25zQ2xpZW50SW5wdXRzLmlkbApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMtaW5wdXQueGNmaWxlbGlz
dCBiL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLWlucHV0LnhjZmlsZWxpc3QKaW5kZXgg
NmE3YWE3ZDE0ZWJiNDM3ZDc0MWVjMmVmODUzMzc3NWQzNDRkNDY1NC4uZjdkNjRjMTkzZDBlN2Rm
MjgxNjViZGQ3NGE0MGQzZjkwZTZhODIxMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvRGVy
aXZlZFNvdXJjZXMtaW5wdXQueGNmaWxlbGlzdAorKysgYi9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVk
U291cmNlcy1pbnB1dC54Y2ZpbGVsaXN0CkBAIC0zMDAsNiArMzAwLDcgQEAgJChQUk9KRUNUX0RJ
UikvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0J1ZmZlci5pZGwKICQoUFJPSkVDVF9ESVIpL01vZHVs
ZXMvd2ViYXVkaW8vQXVkaW9CdWZmZXJDYWxsYmFjay5pZGwKICQoUFJPSkVDVF9ESVIpL01vZHVs
ZXMvd2ViYXVkaW8vQXVkaW9CdWZmZXJTb3VyY2VOb2RlLmlkbAogJChQUk9KRUNUX0RJUikvTW9k
dWxlcy93ZWJhdWRpby9BdWRpb0NvbnRleHQuaWRsCiskKFBST0pFQ1RfRElSKS9Nb2R1bGVzL3dl
YmF1ZGlvL0F1ZGlvQ29udGV4dFN0YXRlLmlkbAogJChQUk9KRUNUX0RJUikvTW9kdWxlcy93ZWJh
dWRpby9BdWRpb0Rlc3RpbmF0aW9uTm9kZS5pZGwKICQoUFJPSkVDVF9ESVIpL01vZHVsZXMvd2Vi
YXVkaW8vQXVkaW9MaXN0ZW5lci5pZGwKICQoUFJPSkVDVF9ESVIpL01vZHVsZXMvd2ViYXVkaW8v
QXVkaW9Ob2RlLmlkbApAQCAtMzEwLDYgKzMxMSw3IEBAICQoUFJPSkVDVF9ESVIpL01vZHVsZXMv
d2ViYXVkaW8vQ2hhbm5lbE1lcmdlck5vZGUuaWRsCiAkKFBST0pFQ1RfRElSKS9Nb2R1bGVzL3dl
YmF1ZGlvL0NoYW5uZWxTcGxpdHRlck5vZGUuaWRsCiAkKFBST0pFQ1RfRElSKS9Nb2R1bGVzL3dl
YmF1ZGlvL0NvbnZvbHZlck5vZGUuaWRsCiAkKFBST0pFQ1RfRElSKS9Nb2R1bGVzL3dlYmF1ZGlv
L0RlbGF5Tm9kZS5pZGwKKyQoUFJPSkVDVF9ESVIpL01vZHVsZXMvd2ViYXVkaW8vRGlzdGFuY2VN
b2RlbFR5cGUuaWRsCiAkKFBST0pFQ1RfRElSKS9Nb2R1bGVzL3dlYmF1ZGlvL0R5bmFtaWNzQ29t
cHJlc3Nvck5vZGUuaWRsCiAkKFBST0pFQ1RfRElSKS9Nb2R1bGVzL3dlYmF1ZGlvL0dhaW5Ob2Rl
LmlkbAogJChQUk9KRUNUX0RJUikvTW9kdWxlcy93ZWJhdWRpby9NZWRpYUVsZW1lbnRBdWRpb1Nv
dXJjZU5vZGUuaWRsCkBAIC0zMTksOSArMzIxLDEzIEBAICQoUFJPSkVDVF9ESVIpL01vZHVsZXMv
d2ViYXVkaW8vT2ZmbGluZUF1ZGlvQ29tcGxldGlvbkV2ZW50LmlkbAogJChQUk9KRUNUX0RJUikv
TW9kdWxlcy93ZWJhdWRpby9PZmZsaW5lQXVkaW9Db250ZXh0LmlkbAogJChQUk9KRUNUX0RJUikv
TW9kdWxlcy93ZWJhdWRpby9Pc2NpbGxhdG9yTm9kZS5pZGwKICQoUFJPSkVDVF9ESVIpL01vZHVs
ZXMvd2ViYXVkaW8vUGFubmVyTm9kZS5pZGwKKyQoUFJPSkVDVF9ESVIpL01vZHVsZXMvd2ViYXVk
aW8vUGFubmluZ01vZGVsVHlwZS5pZGwKICQoUFJPSkVDVF9ESVIpL01vZHVsZXMvd2ViYXVkaW8v
UGVyaW9kaWNXYXZlLmlkbAogJChQUk9KRUNUX0RJUikvTW9kdWxlcy93ZWJhdWRpby9TY3JpcHRQ
cm9jZXNzb3JOb2RlLmlkbAogJChQUk9KRUNUX0RJUikvTW9kdWxlcy93ZWJhdWRpby9XYXZlU2hh
cGVyTm9kZS5pZGwKKyQoUFJPSkVDVF9ESVIpL01vZHVsZXMvd2ViYXVkaW8vV2ViS2l0QXVkaW9D
b250ZXh0LmlkbAorJChQUk9KRUNUX0RJUikvTW9kdWxlcy93ZWJhdWRpby9XZWJLaXRBdWRpb1Bh
bm5lck5vZGUuaWRsCiskKFBST0pFQ1RfRElSKS9Nb2R1bGVzL3dlYmF1ZGlvL1dlYktpdE9mZmxp
bmVBdWRpb0NvbnRleHQuaWRsCiAkKFBST0pFQ1RfRElSKS9Nb2R1bGVzL3dlYmF1dGhuL0F0dGVz
dGF0aW9uQ29udmV5YW5jZVByZWZlcmVuY2UuaWRsCiAkKFBST0pFQ1RfRElSKS9Nb2R1bGVzL3dl
YmF1dGhuL0F1dGhlbnRpY2F0aW9uRXh0ZW5zaW9uc0NsaWVudElucHV0cy5pZGwKICQoUFJPSkVD
VF9ESVIpL01vZHVsZXMvd2ViYXV0aG4vQXV0aGVudGljYXRpb25FeHRlbnNpb25zQ2xpZW50T3V0
cHV0cy5pZGwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLW91dHB1
dC54Y2ZpbGVsaXN0IGIvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMtb3V0cHV0LnhjZmls
ZWxpc3QKaW5kZXggYTE0MzM2MjUxNDAyZjY4MzZlYzg4MDQ4ZjNlMGNiZDkxNDI2YjAxNy4uY2Jj
NjQ4YWZmODcyZTE3YzhhZWIyZjNkYzZlOWJjNmI3OGMwNDQ5MyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxpc3QKKysrIGIvU291cmNlL1dl
YkNvcmUvRGVyaXZlZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxpc3QKQEAgLTE1NSw2ICsxNTUsOCBA
QCAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0F1ZGlvQ29u
ZmlndXJhdGlvbi5jcHAKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJD
b3JlL0pTQXVkaW9Db25maWd1cmF0aW9uLmgKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVk
U291cmNlcy9XZWJDb3JlL0pTQXVkaW9Db250ZXh0LmNwcAogJChCVUlMVF9QUk9EVUNUU19ESVIp
L0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNBdWRpb0NvbnRleHQuaAorJChCVUlMVF9QUk9EVUNU
U19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNBdWRpb0NvbnRleHRTdGF0ZS5jcHAKKyQo
QlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTQXVkaW9Db250ZXh0
U3RhdGUuaAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNB
dWRpb0Rlc3RpbmF0aW9uTm9kZS5jcHAKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291
cmNlcy9XZWJDb3JlL0pTQXVkaW9EZXN0aW5hdGlvbk5vZGUuaAogJChCVUlMVF9QUk9EVUNUU19E
SVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNBdWRpb0xpc3RlbmVyLmNwcApAQCAtNDg2LDYg
KzQ4OCw4IEBAICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pT
RGV2aWNlT3JpZW50YXRpb25Pck1vdGlvbkV2ZW50LmNwCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikv
RGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0RldmljZU9yaWVudGF0aW9uT3JNb3Rpb25FdmVudC5o
CiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0RldmljZU9y
aWVudGF0aW9uT3JNb3Rpb25QZXJtaXNzaW9uU3RhdGUuY3BwCiAkKEJVSUxUX1BST0RVQ1RTX0RJ
UikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0RldmljZU9yaWVudGF0aW9uT3JNb3Rpb25QZXJt
aXNzaW9uU3RhdGUuaAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNv
cmUvSlNEaXN0YW5jZU1vZGVsVHlwZS5jcHAKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVk
U291cmNlcy9XZWJDb3JlL0pTRGlzdGFuY2VNb2RlbFR5cGUuaAogJChCVUlMVF9QUk9EVUNUU19E
SVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNEb2N1bWVudC5jcHAKICQoQlVJTFRfUFJPRFVD
VFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTRG9jdW1lbnQuaAogJChCVUlMVF9QUk9E
VUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNEb2N1bWVudEFuZEVsZW1lbnRFdmVu
dEhhbmRsZXJzLmNwcApAQCAtMTIyNCw2ICsxMjI4LDggQEAgJChCVUlMVF9QUk9EVUNUU19ESVIp
L0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNQYWludFdvcmtsZXRHbG9iYWxTY29wZS5jcHAKICQo
QlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTUGFpbnRXb3JrbGV0
R2xvYmFsU2NvcGUuaAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNv
cmUvSlNQYW5uZXJOb2RlLmNwcAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2Vz
L1dlYkNvcmUvSlNQYW5uZXJOb2RlLmgKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291
cmNlcy9XZWJDb3JlL0pTUGFubmluZ01vZGVsVHlwZS5jcHAKKyQoQlVJTFRfUFJPRFVDVFNfRElS
KS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTUGFubmluZ01vZGVsVHlwZS5oCiAkKEJVSUxUX1BS
T0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU1BhcmVudE5vZGUuY3BwCiAkKEJV
SUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU1BhcmVudE5vZGUuaAog
JChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNQYXRoMkQuY3Bw
CkBAIC0yMDc4LDYgKzIwODQsMTAgQEAgJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3Vy
Y2VzL1dlYkNvcmUvSlNXZWJHUFVUZXh0dXJlVmlldy5jcHAKICQoQlVJTFRfUFJPRFVDVFNfRElS
KS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTV2ViR1BVVGV4dHVyZVZpZXcuaAogJChCVUlMVF9Q
Uk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNXZWJLaXRBbmltYXRpb25FdmVu
dC5jcHAKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTV2Vi
S2l0QW5pbWF0aW9uRXZlbnQuaAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2Vz
L1dlYkNvcmUvSlNXZWJLaXRBdWRpb0NvbnRleHQuY3BwCiskKEJVSUxUX1BST0RVQ1RTX0RJUikv
RGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU1dlYktpdEF1ZGlvQ29udGV4dC5oCiskKEJVSUxUX1BS
T0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU1dlYktpdEF1ZGlvUGFubmVyTm9k
ZS5jcHAKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTV2Vi
S2l0QXVkaW9QYW5uZXJOb2RlLmgKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNl
cy9XZWJDb3JlL0pTV2ViS2l0Q1NTTWF0cml4LmNwcAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rl
cml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNXZWJLaXRDU1NNYXRyaXguaAogJChCVUlMVF9QUk9EVUNU
U19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNXZWJLaXRDU1NWaWV3cG9ydFJ1bGUuY3Bw
CkBAIC0yMDk0LDYgKzIxMDQsOCBAQCAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJj
ZXMvV2ViQ29yZS9KU1dlYktpdE1lZGlhS2V5cy5jcHAKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9E
ZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTV2ViS2l0TWVkaWFLZXlzLmgKICQoQlVJTFRfUFJPRFVD
VFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTV2ViS2l0TmFtZXNwYWNlLmNwcAogJChC
VUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNXZWJLaXROYW1lc3Bh
Y2UuaAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNXZWJL
aXRPZmZsaW5lQXVkaW9Db250ZXh0LmNwcAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRT
b3VyY2VzL1dlYkNvcmUvSlNXZWJLaXRPZmZsaW5lQXVkaW9Db250ZXh0LmgKICQoQlVJTFRfUFJP
RFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTV2ViS2l0UGxheWJhY2tUYXJnZXRB
dmFpbGFiaWxpdHlFdmVudC5jcHAKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNl
cy9XZWJDb3JlL0pTV2ViS2l0UGxheWJhY2tUYXJnZXRBdmFpbGFiaWxpdHlFdmVudC5oCiAkKEJV
SUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU1dlYktpdFBvaW50LmNw
cApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMubWFrZSBiL1NvdXJj
ZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UKaW5kZXggZDI2NzA4OWUzODczN2Q5MjRmOTQ2
NTI5OTBjYWI5MjEzYzk4YmQyOC4uYjI3Yzc5Y2U2NjNlMmM4YjhlYTQ2MGFlMDgxZWJmMWRkZTcw
MzNiYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtlCkBAIC0zODMsNiArMzgzLDcgQEAg
SlNfQklORElOR19JRExTID0gXAogICAgICQoV2ViQ29yZSkvTW9kdWxlcy93ZWJhdWRpby9BdWRp
b0J1ZmZlckNhbGxiYWNrLmlkbCBcCiAgICAgJChXZWJDb3JlKS9Nb2R1bGVzL3dlYmF1ZGlvL0F1
ZGlvQnVmZmVyU291cmNlTm9kZS5pZGwgXAogICAgICQoV2ViQ29yZSkvTW9kdWxlcy93ZWJhdWRp
by9BdWRpb0NvbnRleHQuaWRsIFwKKyAgICAkKFdlYkNvcmUpL01vZHVsZXMvd2ViYXVkaW8vQXVk
aW9Db250ZXh0U3RhdGUuaWRsIFwKICAgICAkKFdlYkNvcmUpL01vZHVsZXMvd2ViYXVkaW8vQXVk
aW9EZXN0aW5hdGlvbk5vZGUuaWRsIFwKICAgICAkKFdlYkNvcmUpL01vZHVsZXMvd2ViYXVkaW8v
QXVkaW9MaXN0ZW5lci5pZGwgXAogICAgICQoV2ViQ29yZSkvTW9kdWxlcy93ZWJhdWRpby9BdWRp
b05vZGUuaWRsIFwKQEAgLTM5Myw2ICszOTQsNyBAQCBKU19CSU5ESU5HX0lETFMgPSBcCiAgICAg
JChXZWJDb3JlKS9Nb2R1bGVzL3dlYmF1ZGlvL0NoYW5uZWxTcGxpdHRlck5vZGUuaWRsIFwKICAg
ICAkKFdlYkNvcmUpL01vZHVsZXMvd2ViYXVkaW8vQ29udm9sdmVyTm9kZS5pZGwgXAogICAgICQo
V2ViQ29yZSkvTW9kdWxlcy93ZWJhdWRpby9EZWxheU5vZGUuaWRsIFwKKyAgICAkKFdlYkNvcmUp
L01vZHVsZXMvd2ViYXVkaW8vRGlzdGFuY2VNb2RlbFR5cGUuaWRsIFwKICAgICAkKFdlYkNvcmUp
L01vZHVsZXMvd2ViYXVkaW8vRHluYW1pY3NDb21wcmVzc29yTm9kZS5pZGwgXAogICAgICQoV2Vi
Q29yZSkvTW9kdWxlcy93ZWJhdWRpby9HYWluTm9kZS5pZGwgXAogICAgICQoV2ViQ29yZSkvTW9k
dWxlcy93ZWJhdWRpby9NZWRpYUVsZW1lbnRBdWRpb1NvdXJjZU5vZGUuaWRsIFwKQEAgLTQwMiw5
ICs0MDQsMTMgQEAgSlNfQklORElOR19JRExTID0gXAogICAgICQoV2ViQ29yZSkvTW9kdWxlcy93
ZWJhdWRpby9PZmZsaW5lQXVkaW9Db250ZXh0LmlkbCBcCiAgICAgJChXZWJDb3JlKS9Nb2R1bGVz
L3dlYmF1ZGlvL09zY2lsbGF0b3JOb2RlLmlkbCBcCiAgICAgJChXZWJDb3JlKS9Nb2R1bGVzL3dl
YmF1ZGlvL1Bhbm5lck5vZGUuaWRsIFwKKyAgICAkKFdlYkNvcmUpL01vZHVsZXMvd2ViYXVkaW8v
UGFubmluZ01vZGVsVHlwZS5pZGwgXAogICAgICQoV2ViQ29yZSkvTW9kdWxlcy93ZWJhdWRpby9Q
ZXJpb2RpY1dhdmUuaWRsIFwKICAgICAkKFdlYkNvcmUpL01vZHVsZXMvd2ViYXVkaW8vU2NyaXB0
UHJvY2Vzc29yTm9kZS5pZGwgXAogICAgICQoV2ViQ29yZSkvTW9kdWxlcy93ZWJhdWRpby9XYXZl
U2hhcGVyTm9kZS5pZGwgXAorICAgICQoV2ViQ29yZSkvTW9kdWxlcy93ZWJhdWRpby9XZWJLaXRB
dWRpb0NvbnRleHQuaWRsIFwKKyAgICAkKFdlYkNvcmUpL01vZHVsZXMvd2ViYXVkaW8vV2ViS2l0
QXVkaW9QYW5uZXJOb2RlLmlkbCBcCisgICAgJChXZWJDb3JlKS9Nb2R1bGVzL3dlYmF1ZGlvL1dl
YktpdE9mZmxpbmVBdWRpb0NvbnRleHQuaWRsIFwKICAgICAkKFdlYkNvcmUpL01vZHVsZXMvd2Vi
YXV0aG4vQXR0ZXN0YXRpb25Db252ZXlhbmNlUHJlZmVyZW5jZS5pZGwgXAogICAgICQoV2ViQ29y
ZSkvTW9kdWxlcy93ZWJhdXRobi9BdXRoZW50aWNhdGlvbkV4dGVuc2lvbnNDbGllbnRJbnB1dHMu
aWRsIFwKICAgICAkKFdlYkNvcmUpL01vZHVsZXMvd2ViYXV0aG4vQXV0aGVudGljYXRpb25FeHRl
bnNpb25zQ2xpZW50T3V0cHV0cy5pZGwgXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJhdWRpby9BbmFseXNlck5vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJhdWRpby9BbmFseXNlck5vZGUuY3BwCmluZGV4IDE3OTg3MDcwMWY4NTMzODQ4YjhhNDlhNzVk
M2FmMTM2MTU0YjA4ZDIuLjIxNWRlMzIxZTlhMTZjMzI0NmNhNDk0NzRkOWVhZTI1MjI1MzgyMDEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQW5hbHlzZXJOb2Rl
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0FuYWx5c2VyTm9kZS5j
cHAKQEAgLTM2LDcgKzM2LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBXVEZfTUFLRV9JU09f
QUxMT0NBVEVEX0lNUEwoQW5hbHlzZXJOb2RlKTsKIAotQW5hbHlzZXJOb2RlOjpBbmFseXNlck5v
ZGUoQXVkaW9Db250ZXh0JiBjb250ZXh0LCBmbG9hdCBzYW1wbGVSYXRlKQorQW5hbHlzZXJOb2Rl
OjpBbmFseXNlck5vZGUoQXVkaW9Db250ZXh0QmFzZSYgY29udGV4dCwgZmxvYXQgc2FtcGxlUmF0
ZSkKICAgICA6IEF1ZGlvQmFzaWNJbnNwZWN0b3JOb2RlKGNvbnRleHQsIHNhbXBsZVJhdGUsIDIp
CiB7CiAgICAgc2V0Tm9kZVR5cGUoTm9kZVR5cGVBbmFseXNlcik7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0FuYWx5c2VyTm9kZS5oIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJhdWRpby9BbmFseXNlck5vZGUuaAppbmRleCBkYTFiNWU4OWNhMjhkZWVj
YzM5YzJmMzY2OTdmZDkwYTBiM2UwZjdlLi5hNDAyM2EzMGRlYTBkZjJiYzlhN2JiMDRiZWRhZDhh
MzBkYjlkY2U1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0Fu
YWx5c2VyTm9kZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQW5hbHlz
ZXJOb2RlLmgKQEAgLTMyLDcgKzMyLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgQW5h
bHlzZXJOb2RlIGZpbmFsIDogcHVibGljIEF1ZGlvQmFzaWNJbnNwZWN0b3JOb2RlIHsKICAgICBX
VEZfTUFLRV9JU09fQUxMT0NBVEVEKEFuYWx5c2VyTm9kZSk7CiBwdWJsaWM6Ci0gICAgc3RhdGlj
IFJlZjxBbmFseXNlck5vZGU+IGNyZWF0ZShBdWRpb0NvbnRleHQmIGNvbnRleHQsIGZsb2F0IHNh
bXBsZVJhdGUpCisgICAgc3RhdGljIFJlZjxBbmFseXNlck5vZGU+IGNyZWF0ZShBdWRpb0NvbnRl
eHRCYXNlJiBjb250ZXh0LCBmbG9hdCBzYW1wbGVSYXRlKQogICAgIHsKICAgICAgICAgcmV0dXJu
IGFkb3B0UmVmKCpuZXcgQW5hbHlzZXJOb2RlKGNvbnRleHQsIHNhbXBsZVJhdGUpKTsKICAgICB9
CkBAIC01OCw3ICs1OCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGdldEJ5dGVUaW1lRG9tYWluRGF0
YShjb25zdCBSZWZQdHI8SlNDOjpVaW50OEFycmF5PiYgYXJyYXkpIHsgbV9hbmFseXNlci5nZXRC
eXRlVGltZURvbWFpbkRhdGEoYXJyYXkuZ2V0KCkpOyB9CiAKIHByaXZhdGU6Ci0gICAgQW5hbHlz
ZXJOb2RlKEF1ZGlvQ29udGV4dCYsIGZsb2F0IHNhbXBsZVJhdGUpOworICAgIEFuYWx5c2VyTm9k
ZShBdWRpb0NvbnRleHRCYXNlJiwgZmxvYXQgc2FtcGxlUmF0ZSk7CiAKICAgICB2b2lkIHByb2Nl
c3Moc2l6ZV90IGZyYW1lc1RvUHJvY2VzcykgZmluYWw7CiAgICAgdm9pZCByZXNldCgpIGZpbmFs
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0Jhc2lj
SW5zcGVjdG9yTm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlv
QmFzaWNJbnNwZWN0b3JOb2RlLmNwcAppbmRleCAwZmI1NWIwOGYwYzFhMmJlMmQwNzBjNGUwZDhk
OGY0NjdlMzQ2YTcyLi4xNDUzZGFjYWZkYTFkMzhhMzRjZmQxYjZiOTNjYjc4MzMyMzVkOTg4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQmFzaWNJbnNw
ZWN0b3JOb2RlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlv
QmFzaWNJbnNwZWN0b3JOb2RlLmNwcApAQCAtMzYsNyArMzYsNyBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKIFdURl9NQUtFX0lTT19BTExPQ0FURURfSU1QTChBdWRpb0Jhc2ljSW5zcGVjdG9yTm9k
ZSk7CiAKLUF1ZGlvQmFzaWNJbnNwZWN0b3JOb2RlOjpBdWRpb0Jhc2ljSW5zcGVjdG9yTm9kZShB
dWRpb0NvbnRleHQmIGNvbnRleHQsIGZsb2F0IHNhbXBsZVJhdGUsIHVuc2lnbmVkIG91dHB1dENo
YW5uZWxDb3VudCkKK0F1ZGlvQmFzaWNJbnNwZWN0b3JOb2RlOjpBdWRpb0Jhc2ljSW5zcGVjdG9y
Tm9kZShBdWRpb0NvbnRleHRCYXNlJiBjb250ZXh0LCBmbG9hdCBzYW1wbGVSYXRlLCB1bnNpZ25l
ZCBvdXRwdXRDaGFubmVsQ291bnQpCiAgICAgOiBBdWRpb05vZGUoY29udGV4dCwgc2FtcGxlUmF0
ZSkKIHsKICAgICBzZXROb2RlVHlwZShOb2RlVHlwZUJhc2ljSW5zcGVjdG9yKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9CYXNpY0luc3BlY3Rvck5v
ZGUuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9CYXNpY0luc3BlY3Rv
ck5vZGUuaAppbmRleCA4MGUwOGQyOTYxN2IxNzc0YzYwZGQxODc5M2QxNjMwZWYyYWQwM2RiLi5l
NzY5ZTQ2YWUyMWY0NzM0MWMyNzNjODg0NWNiZTAyOWU4MTI4ZDY2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQmFzaWNJbnNwZWN0b3JOb2RlLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0Jhc2ljSW5zcGVjdG9yTm9k
ZS5oCkBAIC0zNCw3ICszNCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIEF1ZGlvQmFz
aWNJbnNwZWN0b3JOb2RlIDogcHVibGljIEF1ZGlvTm9kZSB7CiAgICAgV1RGX01BS0VfSVNPX0FM
TE9DQVRFRChBdWRpb0Jhc2ljSW5zcGVjdG9yTm9kZSk7CiBwdWJsaWM6Ci0gICAgQXVkaW9CYXNp
Y0luc3BlY3Rvck5vZGUoQXVkaW9Db250ZXh0JiwgZmxvYXQgc2FtcGxlUmF0ZSwgdW5zaWduZWQg
b3V0cHV0Q2hhbm5lbENvdW50KTsKKyAgICBBdWRpb0Jhc2ljSW5zcGVjdG9yTm9kZShBdWRpb0Nv
bnRleHRCYXNlJiwgZmxvYXQgc2FtcGxlUmF0ZSwgdW5zaWduZWQgb3V0cHV0Q2hhbm5lbENvdW50
KTsKIAogcHJpdmF0ZToKICAgICB2b2lkIHB1bGxJbnB1dHMoc2l6ZV90IGZyYW1lc1RvUHJvY2Vz
cykgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlv
L0F1ZGlvQmFzaWNQcm9jZXNzb3JOb2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
YXVkaW8vQXVkaW9CYXNpY1Byb2Nlc3Nvck5vZGUuY3BwCmluZGV4IDBiOWYxY2VkODc0NWI1ZDk5
OGRjMzhkNjM2ZTc5MGFiZmJlNmU5ODMuLmY3Yjc5NmJlNTU1NDUzNmE2YTU0MmM3NWUzNjA1NTI1
Zjk0NjhhMjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVk
aW9CYXNpY1Byb2Nlc3Nvck5vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
YXVkaW8vQXVkaW9CYXNpY1Byb2Nlc3Nvck5vZGUuY3BwCkBAIC0zOSw3ICszOSw3IEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAogV1RGX01BS0VfSVNPX0FMTE9DQVRFRF9JTVBMKEF1ZGlvQmFzaWNQ
cm9jZXNzb3JOb2RlKTsKIAotQXVkaW9CYXNpY1Byb2Nlc3Nvck5vZGU6OkF1ZGlvQmFzaWNQcm9j
ZXNzb3JOb2RlKEF1ZGlvQ29udGV4dCYgY29udGV4dCwgZmxvYXQgc2FtcGxlUmF0ZSkKK0F1ZGlv
QmFzaWNQcm9jZXNzb3JOb2RlOjpBdWRpb0Jhc2ljUHJvY2Vzc29yTm9kZShBdWRpb0NvbnRleHRC
YXNlJiBjb250ZXh0LCBmbG9hdCBzYW1wbGVSYXRlKQogICAgIDogQXVkaW9Ob2RlKGNvbnRleHQs
IHNhbXBsZVJhdGUpCiB7CiAgICAgYWRkSW5wdXQobWFrZVVuaXF1ZTxBdWRpb05vZGVJbnB1dD4o
dGhpcykpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRp
b0Jhc2ljUHJvY2Vzc29yTm9kZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9B
dWRpb0Jhc2ljUHJvY2Vzc29yTm9kZS5oCmluZGV4IDgyY2ZmZGE1OWYyNzgyMGRiMGQzZDU0NjAx
ZDZhY2M0YWM3NmYxNjEuLmUxNjM3M2JmMDI5NzZhNDVhZDgyNWUyZTYzYTgzN2FmZjRmOTIxOWEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9CYXNpY1By
b2Nlc3Nvck5vZGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlv
QmFzaWNQcm9jZXNzb3JOb2RlLmgKQEAgLTM3LDcgKzM3LDcgQEAgY2xhc3MgQXVkaW9Qcm9jZXNz
b3I7CiBjbGFzcyBBdWRpb0Jhc2ljUHJvY2Vzc29yTm9kZSA6IHB1YmxpYyBBdWRpb05vZGUgewog
ICAgIFdURl9NQUtFX0lTT19BTExPQ0FURUQoQXVkaW9CYXNpY1Byb2Nlc3Nvck5vZGUpOwogcHVi
bGljOgotICAgIEF1ZGlvQmFzaWNQcm9jZXNzb3JOb2RlKEF1ZGlvQ29udGV4dCYsIGZsb2F0IHNh
bXBsZVJhdGUpOworICAgIEF1ZGlvQmFzaWNQcm9jZXNzb3JOb2RlKEF1ZGlvQ29udGV4dEJhc2Um
LCBmbG9hdCBzYW1wbGVSYXRlKTsKIAogICAgIC8vIEF1ZGlvTm9kZQogICAgIHZvaWQgcHJvY2Vz
cyhzaXplX3QgZnJhbWVzVG9Qcm9jZXNzKSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9CdWZmZXJTb3VyY2VOb2RlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9CdWZmZXJTb3VyY2VOb2RlLmNwcAppbmRl
eCBjMzY2MWRlNTdkNzM5ZWM0NzBkNmZhZDlmNTQxZTQ5NWVjOTc2ZGVmLi4wYzFiYTRlOTRhOThj
YmY3ZDE5YmRjM2IyM2E2MmZhOTQ2ZjA5NTMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQnVmZmVyU291cmNlTm9kZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0J1ZmZlclNvdXJjZU5vZGUuY3BwCkBAIC00OSwx
MiArNDksMTIgQEAgY29uc3QgZG91YmxlIERlZmF1bHRHcmFpbkR1cmF0aW9uID0gMC4wMjA7IC8v
IDIwbXMKIC8vIHRvIG1pbmltaXplIGxpbmVhciBpbnRlcnBvbGF0aW9uIGFsaWFzaW5nLgogY29u
c3QgZG91YmxlIE1heFJhdGUgPSAxMDI0OwogCi1SZWY8QXVkaW9CdWZmZXJTb3VyY2VOb2RlPiBB
dWRpb0J1ZmZlclNvdXJjZU5vZGU6OmNyZWF0ZShBdWRpb0NvbnRleHQmIGNvbnRleHQsIGZsb2F0
IHNhbXBsZVJhdGUpCitSZWY8QXVkaW9CdWZmZXJTb3VyY2VOb2RlPiBBdWRpb0J1ZmZlclNvdXJj
ZU5vZGU6OmNyZWF0ZShBdWRpb0NvbnRleHRCYXNlJiBjb250ZXh0LCBmbG9hdCBzYW1wbGVSYXRl
KQogewogICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEF1ZGlvQnVmZmVyU291cmNlTm9kZShjb250
ZXh0LCBzYW1wbGVSYXRlKSk7CiB9CiAKLUF1ZGlvQnVmZmVyU291cmNlTm9kZTo6QXVkaW9CdWZm
ZXJTb3VyY2VOb2RlKEF1ZGlvQ29udGV4dCYgY29udGV4dCwgZmxvYXQgc2FtcGxlUmF0ZSkKK0F1
ZGlvQnVmZmVyU291cmNlTm9kZTo6QXVkaW9CdWZmZXJTb3VyY2VOb2RlKEF1ZGlvQ29udGV4dEJh
c2UmIGNvbnRleHQsIGZsb2F0IHNhbXBsZVJhdGUpCiAgICAgOiBBdWRpb1NjaGVkdWxlZFNvdXJj
ZU5vZGUoY29udGV4dCwgc2FtcGxlUmF0ZSkKICAgICAsIG1fYnVmZmVyKG51bGxwdHIpCiAgICAg
LCBtX2lzTG9vcGluZyhmYWxzZSkKQEAgLTQxMyw3ICs0MTMsNyBAQCB2b2lkIEF1ZGlvQnVmZmVy
U291cmNlTm9kZTo6c2V0QnVmZmVyKFJlZlB0cjxBdWRpb0J1ZmZlcj4mJiBidWZmZXIpCiAgICAg
REVCVUdfTE9HKExPR0lERU5USUZJRVIpOwogCiAgICAgLy8gVGhlIGNvbnRleHQgbXVzdCBiZSBs
b2NrZWQgc2luY2UgY2hhbmdpbmcgdGhlIGJ1ZmZlciBjYW4gcmUtY29uZmlndXJlIHRoZSBudW1i
ZXIgb2YgY2hhbm5lbHMgdGhhdCBhcmUgb3V0cHV0LgotICAgIEF1ZGlvQ29udGV4dDo6QXV0b0xv
Y2tlciBjb250ZXh0TG9ja2VyKGNvbnRleHQoKSk7CisgICAgQXVkaW9Db250ZXh0QmFzZTo6QXV0
b0xvY2tlciBjb250ZXh0TG9ja2VyKGNvbnRleHQoKSk7CiAgICAgCiAgICAgLy8gVGhpcyBzeW5j
aHJvbml6ZXMgd2l0aCBwcm9jZXNzKCkuCiAgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhtX3By
b2Nlc3NNdXRleCk7CkBAIC01NTcsNyArNTU3LDcgQEAgYm9vbCBBdWRpb0J1ZmZlclNvdXJjZU5v
ZGU6OnByb3BhZ2F0ZXNTaWxlbmNlKCkgY29uc3QKICAgICByZXR1cm4gIWlzUGxheWluZ09yU2No
ZWR1bGVkKCkgfHwgaGFzRmluaXNoZWQoKSB8fCAhbV9idWZmZXI7CiB9CiAKLXZvaWQgQXVkaW9C
dWZmZXJTb3VyY2VOb2RlOjpzZXRQYW5uZXJOb2RlKFBhbm5lck5vZGUqIHBhbm5lck5vZGUpCit2
b2lkIEF1ZGlvQnVmZmVyU291cmNlTm9kZTo6c2V0UGFubmVyTm9kZShQYW5uZXJOb2RlQmFzZSog
cGFubmVyTm9kZSkKIHsKICAgICBpZiAobV9wYW5uZXJOb2RlICE9IHBhbm5lck5vZGUgJiYgIWhh
c0ZpbmlzaGVkKCkpIHsKICAgICAgICAgaWYgKHBhbm5lck5vZGUpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQnVmZmVyU291cmNlTm9kZS5oIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0J1ZmZlclNvdXJjZU5vZGUuaAppbmRl
eCA1NDhiMjZlN2ZhNzUxNGRlOWFkNjRkM2UzNTM2YjlmMzRiZWRhOWZiLi42MDExMzExOTlhNGZh
OTJkNzMwYzUwZDVhYTI2MDAzOGY2ZmQ5NmVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQnVmZmVyU291cmNlTm9kZS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9CdWZmZXJTb3VyY2VOb2RlLmgKQEAgLTMxLDcgKzMx
LDcgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQXVkaW9CdWZmZXI7Ci1jbGFzcyBQ
YW5uZXJOb2RlOworY2xhc3MgUGFubmVyTm9kZUJhc2U7CiAKIC8vIEF1ZGlvQnVmZmVyU291cmNl
Tm9kZSBpcyBhbiBBdWRpb05vZGUgcmVwcmVzZW50aW5nIGFuIGF1ZGlvIHNvdXJjZSBmcm9tIGFu
IGluLW1lbW9yeSBhdWRpbyBhc3NldCByZXByZXNlbnRlZCBieSBhbiBBdWRpb0J1ZmZlci4KIC8v
IEl0IGdlbmVyYWxseSB3aWxsIGJlIHVzZWQgZm9yIHNob3J0IHNvdW5kcyB3aGljaCByZXF1aXJl
IGEgaGlnaCBkZWdyZWUgb2Ygc2NoZWR1bGluZyBmbGV4aWJpbGl0eSAoY2FuIHBsYXliYWNrIGlu
IHJoeXRobWljYWxseSBwZXJmZWN0IHdheXMpLgpAQCAtMzksNyArMzksNyBAQCBjbGFzcyBQYW5u
ZXJOb2RlOwogY2xhc3MgQXVkaW9CdWZmZXJTb3VyY2VOb2RlIGZpbmFsIDogcHVibGljIEF1ZGlv
U2NoZWR1bGVkU291cmNlTm9kZSB7CiAgICAgV1RGX01BS0VfSVNPX0FMTE9DQVRFRChBdWRpb0J1
ZmZlclNvdXJjZU5vZGUpOwogcHVibGljOgotICAgIHN0YXRpYyBSZWY8QXVkaW9CdWZmZXJTb3Vy
Y2VOb2RlPiBjcmVhdGUoQXVkaW9Db250ZXh0JiwgZmxvYXQgc2FtcGxlUmF0ZSk7CisgICAgc3Rh
dGljIFJlZjxBdWRpb0J1ZmZlclNvdXJjZU5vZGU+IGNyZWF0ZShBdWRpb0NvbnRleHRCYXNlJiwg
ZmxvYXQgc2FtcGxlUmF0ZSk7CiAKICAgICB2aXJ0dWFsIH5BdWRpb0J1ZmZlclNvdXJjZU5vZGUo
KTsKIApAQCAtNzksNyArNzksNyBAQCBwdWJsaWM6CiAgICAgQXVkaW9QYXJhbSogcGxheWJhY2tS
YXRlKCkgeyByZXR1cm4gbV9wbGF5YmFja1JhdGUuZ2V0KCk7IH0KIAogICAgIC8vIElmIGEgcGFu
bmVyIG5vZGUgaXMgc2V0LCB0aGVuIHdlIGNhbiBpbmNvcnBvcmF0ZSBkb3BwbGVyIHNoaWZ0IGlu
dG8gdGhlIHBsYXliYWNrIHBpdGNoIHJhdGUuCi0gICAgdm9pZCBzZXRQYW5uZXJOb2RlKFBhbm5l
ck5vZGUqKTsKKyAgICB2b2lkIHNldFBhbm5lck5vZGUoUGFubmVyTm9kZUJhc2UqKTsKICAgICB2
b2lkIGNsZWFyUGFubmVyTm9kZSgpOwogCiAgICAgLy8gSWYgd2UgYXJlIG5vIGxvbmdlciBwbGF5
aW5nLCBwcm9wb2dhdGUgc2lsZW5jZSBhaGVhZCB0byBkb3duc3RyZWFtIG5vZGVzLgpAQCAtOTEs
NyArOTEsNyBAQCBwdWJsaWM6CiAgICAgY29uc3QgY2hhciogYWN0aXZlRE9NT2JqZWN0TmFtZSgp
IGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuICJBdWRpb0J1ZmZlclNvdXJjZU5vZGUiOyB9CiAKIHBy
aXZhdGU6Ci0gICAgQXVkaW9CdWZmZXJTb3VyY2VOb2RlKEF1ZGlvQ29udGV4dCYsIGZsb2F0IHNh
bXBsZVJhdGUpOworICAgIEF1ZGlvQnVmZmVyU291cmNlTm9kZShBdWRpb0NvbnRleHRCYXNlJiwg
ZmxvYXQgc2FtcGxlUmF0ZSk7CiAKICAgICBkb3VibGUgdGFpbFRpbWUoKSBjb25zdCBmaW5hbCB7
IHJldHVybiAwOyB9CiAgICAgZG91YmxlIGxhdGVuY3lUaW1lKCkgY29uc3QgZmluYWwgeyByZXR1
cm4gMDsgfQpAQCAtMTQ1LDcgKzE0NSw3IEBAIHByaXZhdGU6CiAKICAgICAvLyBXZSBvcHRpb25h
bGx5IGtlZXAgdHJhY2sgb2YgYSBwYW5uZXIgbm9kZSB3aGljaCBoYXMgYSBkb3BwbGVyIHNoaWZ0
IHRoYXQgaXMgaW5jb3Jwb3JhdGVkIGludG8KICAgICAvLyB0aGUgcGl0Y2ggcmF0ZS4gV2UgbWFu
dWFsbHkgbWFuYWdlIHJlZi1jb3VudGluZyBiZWNhdXNlIHdlIHdhbnQgdG8gdXNlIFJlZlR5cGVD
b25uZWN0aW9uLgotICAgIFBhbm5lck5vZGUqIG1fcGFubmVyTm9kZTsKKyAgICBQYW5uZXJOb2Rl
QmFzZSogbV9wYW5uZXJOb2RlOwogCiAgICAgLy8gVGhpcyBzeW5jaHJvbml6ZXMgcHJvY2Vzcygp
IHdpdGggc2V0QnVmZmVyKCkgd2hpY2ggY2FuIGNhdXNlIGR5bmFtaWMgY2hhbm5lbCBjb3VudCBj
aGFuZ2VzLgogICAgIG11dGFibGUgTG9jayBtX3Byb2Nlc3NNdXRleDsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0LmNwcAppbmRleCAzODJkYzdjZjBj
ZDBmNWQ1ZDMwMjc2ZTYzZDkyZGJlMGI1MzdlYTU5Li44YzRmM2VmYjhhOWNhODBlNzBiNjU1MDA4
YjhmNTc2NGRlMjcxMzdmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1
ZGlvL0F1ZGlvQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRp
by9BdWRpb0NvbnRleHQuY3BwCkBAIC0xMDcsNiArMTA3LDcgQEAgY29uc3QgdW5zaWduZWQgTWF4
UGVyaW9kaWNXYXZlTGVuZ3RoID0gNDA5NjsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitXVEZf
TUFLRV9JU09fQUxMT0NBVEVEX0lNUEwoQXVkaW9Db250ZXh0QmFzZSk7CiBXVEZfTUFLRV9JU09f
QUxMT0NBVEVEX0lNUEwoQXVkaW9Db250ZXh0KTsKIAogI2RlZmluZSBSRUxFQVNFX0xPR19JRl9B
TExPV0VEKGZtdCwgLi4uKSBSRUxFQVNFX0xPR19JRihkb2N1bWVudCgpICYmIGRvY3VtZW50KCkt
PnBhZ2UoKSAmJiBkb2N1bWVudCgpLT5wYWdlKCktPmlzQWx3YXlzT25Mb2dnaW5nQWxsb3dlZCgp
LCBNZWRpYSwgIiVwIC0gQXVkaW9Db250ZXh0OjoiIGZtdCwgdGhpcywgIyNfX1ZBX0FSR1NfXykK
QEAgLTEzNyw5ICsxMzgsMTQgQEAgRXhjZXB0aW9uT3I8UmVmPEF1ZGlvQ29udGV4dD4+IEF1ZGlv
Q29udGV4dDo6Y3JlYXRlKERvY3VtZW50JiBkb2N1bWVudCkKICAgICByZXR1cm4gYXVkaW9Db250
ZXh0OwogfQogCitBdWRpb0NvbnRleHRCYXNlOjpBdWRpb0NvbnRleHRCYXNlKERvY3VtZW50JiBk
b2N1bWVudCkKKyAgICA6IEFjdGl2ZURPTU9iamVjdChkb2N1bWVudCkKK3sKK30KKwogLy8gQ29u
c3RydWN0b3IgZm9yIHJlbmRlcmluZyB0byB0aGUgYXVkaW8gaGFyZHdhcmUuCiBBdWRpb0NvbnRl
eHQ6OkF1ZGlvQ29udGV4dChEb2N1bWVudCYgZG9jdW1lbnQpCi0gICAgOiBBY3RpdmVET01PYmpl
Y3QoZG9jdW1lbnQpCisgICAgOiBBdWRpb0NvbnRleHRCYXNlKGRvY3VtZW50KQogI2lmICFSRUxF
QVNFX0xPR19ESVNBQkxFRAogICAgICwgbV9sb2dnZXIoZG9jdW1lbnQubG9nZ2VyKCkpCiAgICAg
LCBtX2xvZ0lkZW50aWZpZXIodW5pcXVlTG9nSWRlbnRpZmllcigpKQpAQCAtMTY0LDcgKzE3MCw3
IEBAIEF1ZGlvQ29udGV4dDo6QXVkaW9Db250ZXh0KERvY3VtZW50JiBkb2N1bWVudCkKIAogLy8g
Q29uc3RydWN0b3IgZm9yIG9mZmxpbmUgKG5vbi1yZWFsdGltZSkgcmVuZGVyaW5nLgogQXVkaW9D
b250ZXh0OjpBdWRpb0NvbnRleHQoRG9jdW1lbnQmIGRvY3VtZW50LCBBdWRpb0J1ZmZlciogcmVu
ZGVyVGFyZ2V0KQotICAgIDogQWN0aXZlRE9NT2JqZWN0KGRvY3VtZW50KQorICAgIDogQXVkaW9D
b250ZXh0QmFzZShkb2N1bWVudCkKICNpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKICAgICAsIG1f
bG9nZ2VyKGRvY3VtZW50LmxvZ2dlcigpKQogICAgICwgbV9sb2dJZGVudGlmaWVyKHVuaXF1ZUxv
Z0lkZW50aWZpZXIoKSkKQEAgLTM2Niw3ICszNzIsNyBAQCBjb25zdCBjaGFyKiBBdWRpb0NvbnRl
eHQ6OmFjdGl2ZURPTU9iamVjdE5hbWUoKSBjb25zdAogICAgIHJldHVybiAiQXVkaW9Db250ZXh0
IjsKIH0KIAotRG9jdW1lbnQqIEF1ZGlvQ29udGV4dDo6ZG9jdW1lbnQoKSBjb25zdAorRG9jdW1l
bnQqIEF1ZGlvQ29udGV4dEJhc2U6OmRvY3VtZW50KCkgY29uc3QKIHsKICAgICByZXR1cm4gZG93
bmNhc3Q8RG9jdW1lbnQ+KG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dCk7CiB9CkBAIC0xMDY4LDcg
KzEwNzQsNyBAQCB2b2lkIEF1ZGlvQ29udGV4dDo6cHJvY2Vzc0F1dG9tYXRpY1B1bGxOb2Rlcyhz
aXplX3QgZnJhbWVzVG9Qcm9jZXNzKQogICAgICAgICBub2RlLT5wcm9jZXNzSWZOZWNlc3Nhcnko
ZnJhbWVzVG9Qcm9jZXNzKTsKIH0KIAotU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogQXVkaW9Db250
ZXh0OjpzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkgY29uc3QKK1NjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQqIEF1ZGlvQ29udGV4dEJhc2U6OnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSBjb25zdAogewog
ICAgIHJldHVybiBBY3RpdmVET01PYmplY3Q6OnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0
LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQ29udGV4dC5oCmluZGV4
IDhlMDk0Mzk0Y2ZmY2M1ZGFhOGIwZTRkYzU4OTEyMTk0NDJlNmUxMmUuLmZkZjk5NGE1YTUxNWQx
MTY2NTQyOTE5NzkxOThlYTA1NzFmOWEyNjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJhdWRpby9BdWRpb0NvbnRleHQuaApAQCAtMjgsNiArMjgsNyBAQAogI2luY2x1ZGUgIkFj
dGl2ZURPTU9iamVjdC5oIgogI2luY2x1ZGUgIkFzeW5jQXVkaW9EZWNvZGVyLmgiCiAjaW5jbHVk
ZSAiQXVkaW9CdXMuaCIKKyNpbmNsdWRlICJBdWRpb0NvbnRleHRTdGF0ZS5oIgogI2luY2x1ZGUg
IkF1ZGlvRGVzdGluYXRpb25Ob2RlLmgiCiAjaW5jbHVkZSAiRXZlbnRUYXJnZXQuaCIKICNpbmNs
dWRlICJNZWRpYUNhblN0YXJ0TGlzdGVuZXIuaCIKQEAgLTc5LDIwICs4MCwxMjcgQEAgY2xhc3Mg
V2F2ZVNoYXBlck5vZGU7CiAKIHRlbXBsYXRlPHR5cGVuYW1lIElETFR5cGU+IGNsYXNzIERPTVBy
b21pc2VEZWZlcnJlZDsKIAotLy8gQXVkaW9Db250ZXh0IGlzIHRoZSBjb3JuZXJzdG9uZSBvZiB0
aGUgd2ViIGF1ZGlvIEFQSSBhbmQgYWxsIEF1ZGlvTm9kZXMgYXJlIGNyZWF0ZWQgZnJvbSBpdC4K
LS8vIEZvciB0aHJlYWQgc2FmZXR5IGJldHdlZW4gdGhlIGF1ZGlvIHRocmVhZCBhbmQgdGhlIG1h
aW4gdGhyZWFkLCBpdCBoYXMgYSByZW5kZXJpbmcgZ3JhcGggbG9ja2luZyBtZWNoYW5pc20uIAot
Ci1jbGFzcyBBdWRpb0NvbnRleHQKK2NsYXNzIEF1ZGlvQ29udGV4dEJhc2UKICAgICA6IHB1Ymxp
YyBBY3RpdmVET01PYmplY3QKICAgICAsIHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxBdWRp
b0NvbnRleHQ+CiAgICAgLCBwdWJsaWMgRXZlbnRUYXJnZXRXaXRoSW5saW5lRGF0YQogICAgICwg
cHVibGljIE1lZGlhQ2FuU3RhcnRMaXN0ZW5lcgogICAgICwgcHVibGljIE1lZGlhUHJvZHVjZXIK
LSAgICAsIHByaXZhdGUgUGxhdGZvcm1NZWRpYVNlc3Npb25DbGllbnQKLSAgICAsIHByaXZhdGUg
VmlzaWJpbGl0eUNoYW5nZUNsaWVudAogI2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRAotICAgICwg
cHJpdmF0ZSBMb2dnZXJIZWxwZXIKKyAgICAsIHB1YmxpYyBMb2dnZXJIZWxwZXIKKyNlbmRpZgor
eworICAgIFdURl9NQUtFX0lTT19BTExPQ0FURUQoQXVkaW9Db250ZXh0QmFzZSk7CitwdWJsaWM6
CisgICAgdmlydHVhbCB+QXVkaW9Db250ZXh0QmFzZSgpID0gZGVmYXVsdDsKKworICAgIC8vIFJl
Y29uY2lsZSByZWYvZGVyZWYgd2hpY2ggYXJlIGRlZmluZWQgYm90aCBpbiBUaHJlYWRTYWZlUmVm
Q291bnRlZCBhbmQgRXZlbnRUYXJnZXQuCisgICAgdXNpbmcgVGhyZWFkU2FmZVJlZkNvdW50ZWQ6
OnJlZjsKKyAgICB1c2luZyBUaHJlYWRTYWZlUmVmQ291bnRlZDo6ZGVyZWY7CisKKyAgICBEb2N1
bWVudCogZG9jdW1lbnQoKSBjb25zdDsKKworICAgIHZpcnR1YWwgYm9vbCBpc0luaXRpYWxpemVk
KCkgY29uc3QgPSAwOworCisgICAgdmlydHVhbCBzaXplX3QgY3VycmVudFNhbXBsZUZyYW1lKCkg
Y29uc3QgPSAwOworICAgIHZpcnR1YWwgZmxvYXQgc2FtcGxlUmF0ZSgpIGNvbnN0ID0gMDsKKyAg
ICB2aXJ0dWFsIGRvdWJsZSBjdXJyZW50VGltZSgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJv
b2wgaXNHcmFwaE93bmVyKCkgY29uc3QgPSAwOworCisgICAgdmlydHVhbCB2b2lkIHNldEF1ZGlv
VGhyZWFkKFRocmVhZCYpID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgaXNBdWRpb1RocmVhZCgpIGNv
bnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgaXNBdWRpb1RocmVhZEZpbmlzaGVkKCkgPSAwOwor
CisgICAgdmlydHVhbCB2b2lkIGlzUGxheWluZ0F1ZGlvRGlkQ2hhbmdlKCkgPSAwOworICAgIHZp
cnR1YWwgdm9pZCBub2RlV2lsbEJlZ2luUGxheWJhY2soKSA9IDA7CisKKyAgICB2aXJ0dWFsIHZv
aWQgcG9zdFRhc2soV1RGOjpGdW5jdGlvbjx2b2lkKCk+JiYpID0gMDsKKyAgICB2aXJ0dWFsIGJv
b2wgaXNTdG9wcGVkKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgY29uc3QgU2VjdXJpdHlPcmln
aW4qIG9yaWdpbigpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgYWRkQ29uc29sZU1lc3Nh
Z2UoTWVzc2FnZVNvdXJjZSwgTWVzc2FnZUxldmVsLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UpID0g
MDsKKworICAgIHZpcnR1YWwgdm9pZCBtYXJrRm9yRGVsZXRpb24oQXVkaW9Ob2RlJikgPSAwOwor
ICAgIHZpcnR1YWwgdm9pZCBkZWxldGVNYXJrZWROb2RlcygpID0gMDsKKworICAgIHZpcnR1YWwg
dm9pZCBoYW5kbGVQcmVSZW5kZXJUYXNrcygpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgaGFuZGxl
UG9zdFJlbmRlclRhc2tzKCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBwcm9jZXNzQXV0b21hdGlj
UHVsbE5vZGVzKHNpemVfdCBmcmFtZXNUb1Byb2Nlc3MpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQg
YWRkRGVmZXJyZWRGaW5pc2hEZXJlZihBdWRpb05vZGUqKSA9IDA7CisKKyAgICB2aXJ0dWFsIHZv
aWQgcmVtb3ZlTWFya2VkU3VtbWluZ0p1bmN0aW9uKEF1ZGlvU3VtbWluZ0p1bmN0aW9uKikgPSAw
OworICAgIHZpcnR1YWwgdm9pZCBtYXJrU3VtbWluZ0p1bmN0aW9uRGlydHkoQXVkaW9TdW1taW5n
SnVuY3Rpb24qKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIG1hcmtBdWRpb05vZGVPdXRwdXREaXJ0
eShBdWRpb05vZGVPdXRwdXQqKSA9IDA7CisKKyAgICBlbnVtIEJlaGF2aW9yUmVzdHJpY3Rpb25G
bGFncyB7CisgICAgICAgIE5vUmVzdHJpY3Rpb25zID0gMCwKKyAgICAgICAgUmVxdWlyZVVzZXJH
ZXN0dXJlRm9yQXVkaW9TdGFydFJlc3RyaWN0aW9uID0gMSA8PCAwLAorICAgICAgICBSZXF1aXJl
UGFnZUNvbnNlbnRGb3JBdWRpb1N0YXJ0UmVzdHJpY3Rpb24gPSAxIDw8IDEsCisgICAgfTsKKyAg
ICB0eXBlZGVmIHVuc2lnbmVkIEJlaGF2aW9yUmVzdHJpY3Rpb25zOworICAgIHZpcnR1YWwgQmVo
YXZpb3JSZXN0cmljdGlvbnMgYmVoYXZpb3JSZXN0cmljdGlvbnMoKSBjb25zdCA9IDA7CisgICAg
dmlydHVhbCB2b2lkIGFkZEJlaGF2aW9yUmVzdHJpY3Rpb24oQmVoYXZpb3JSZXN0cmljdGlvbnMp
ID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlQmVoYXZpb3JSZXN0cmljdGlvbihCZWhhdmlv
clJlc3RyaWN0aW9ucykgPSAwOworCisjaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECisgICAgdmly
dHVhbCBjb25zdCB2b2lkKiBuZXh0QXVkaW9Ob2RlTG9nSWRlbnRpZmllcigpID0gMDsKKyAgICB2
aXJ0dWFsIGNvbnN0IHZvaWQqIG5leHRBdWRpb1BhcmFtZXRlckxvZ0lkZW50aWZpZXIoKSA9IDA7
CiAjZW5kaWYKKworICAgIHZpcnR1YWwgdm9pZCBhZGRBdXRvbWF0aWNQdWxsTm9kZShBdWRpb05v
ZGUmKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHJlbW92ZUF1dG9tYXRpY1B1bGxOb2RlKEF1ZGlv
Tm9kZSYpID0gMDsKKworICAgIHZpcnR1YWwgdm9pZCBub3RpZnlOb2RlRmluaXNoZWRQcm9jZXNz
aW5nKEF1ZGlvTm9kZSopID0gMDsKKworICAgIHZpcnR1YWwgdm9pZCBmaW5pc2hlZFJlbmRlcmlu
Zyhib29sIGRpZFJlbmRlcmluZykgPSAwOworCisgICAgdmlydHVhbCB2b2lkIGluY3JlbWVudENv
bm5lY3Rpb25Db3VudCgpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgaW5jcmVtZW50QWN0aXZlU291
cmNlQ291bnQoKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGRlY3JlbWVudEFjdGl2ZVNvdXJjZUNv
dW50KCkgPSAwOworCisgICAgdmlydHVhbCBib29sIGlzT2ZmbGluZUNvbnRleHQoKSBjb25zdCA9
IDA7CisgICAgdmlydHVhbCBib29sIGlzQXVkaW9Db250ZXh0KCkgY29uc3QgPSAwOworICAgIHZp
cnR1YWwgYm9vbCBpc1dlYktpdEF1ZGlvQ29udGV4dCgpIGNvbnN0ID0gMDsKKworICAgIC8vIG11
c3RSZWxlYXNlTG9jayBpcyBzZXQgdG8gdHJ1ZSBpZiB3ZSBhY3F1aXJlZCB0aGUgbG9jayBpbiB0
aGlzIG1ldGhvZCBjYWxsIGFuZCBjYWxsZXIgbXVzdCB1bmxvY2soKSwgZmFsc2UgaWYgaXQgd2Fz
IHByZXZpb3VzbHkgYWNxdWlyZWQuCisgICAgdmlydHVhbCB2b2lkIGxvY2soYm9vbCYgbXVzdFJl
bGVhc2VMb2NrKSA9IDA7CisgICAgdmlydHVhbCBib29sIHRyeUxvY2soYm9vbCYgbXVzdFJlbGVh
c2VMb2NrKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHVubG9jaygpID0gMDsKKworICAgIGNsYXNz
IEF1dG9Mb2NrZXIgeworICAgIHB1YmxpYzoKKyAgICAgICAgZXhwbGljaXQgQXV0b0xvY2tlcihB
dWRpb0NvbnRleHRCYXNlJiBjb250ZXh0KQorICAgICAgICAgICAgOiBtX2NvbnRleHQoY29udGV4
dCkKKyAgICAgICAgeworICAgICAgICAgICAgbV9jb250ZXh0LmxvY2sobV9tdXN0UmVsZWFzZUxv
Y2spOworICAgICAgICB9CisKKyAgICAgICAgfkF1dG9Mb2NrZXIoKQorICAgICAgICB7CisgICAg
ICAgICAgICBpZiAobV9tdXN0UmVsZWFzZUxvY2spCisgICAgICAgICAgICAgICAgbV9jb250ZXh0
LnVubG9jaygpOworICAgICAgICB9CisKKyAgICBwcml2YXRlOgorICAgICAgICBBdWRpb0NvbnRl
eHRCYXNlJiBtX2NvbnRleHQ7CisgICAgICAgIGJvb2wgbV9tdXN0UmVsZWFzZUxvY2s7CisgICAg
fTsKKworICAgIC8vIEV2ZW50VGFyZ2V0CisgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCgpIGNvbnN0IGZpbmFsOworICAgIHZvaWQgcmVmRXZlbnRUYXJn
ZXQoKSBvdmVycmlkZSB7IHJlZigpOyB9CisgICAgdm9pZCBkZXJlZkV2ZW50VGFyZ2V0KCkgb3Zl
cnJpZGUgeyBkZXJlZigpOyB9CisKK3Byb3RlY3RlZDoKKyAgICBleHBsaWNpdCBBdWRpb0NvbnRl
eHRCYXNlKERvY3VtZW50Jik7Cit9OworCisvLyBBdWRpb0NvbnRleHQgaXMgdGhlIGNvcm5lcnN0
b25lIG9mIHRoZSB3ZWIgYXVkaW8gQVBJIGFuZCBhbGwgQXVkaW9Ob2RlcyBhcmUgY3JlYXRlZCBm
cm9tIGl0LgorLy8gRm9yIHRocmVhZCBzYWZldHkgYmV0d2VlbiB0aGUgYXVkaW8gdGhyZWFkIGFu
ZCB0aGUgbWFpbiB0aHJlYWQsIGl0IGhhcyBhIHJlbmRlcmluZyBncmFwaCBsb2NraW5nIG1lY2hh
bmlzbS4gCisKK2NsYXNzIEF1ZGlvQ29udGV4dAorICAgIDogcHVibGljIEF1ZGlvQ29udGV4dEJh
c2UKKyAgICAsIHByaXZhdGUgUGxhdGZvcm1NZWRpYVNlc3Npb25DbGllbnQKKyAgICAsIHByaXZh
dGUgVmlzaWJpbGl0eUNoYW5nZUNsaWVudAogewogICAgIFdURl9NQUtFX0lTT19BTExPQ0FURUQo
QXVkaW9Db250ZXh0KTsKIHB1YmxpYzoKQEAgLTEwMSwyMiArMjA5LDIwIEBAIHB1YmxpYzoKIAog
ICAgIHZpcnR1YWwgfkF1ZGlvQ29udGV4dCgpOwogCi0gICAgYm9vbCBpc0luaXRpYWxpemVkKCkg
Y29uc3Q7CisgICAgYm9vbCBpc0luaXRpYWxpemVkKCkgY29uc3QgZmluYWw7CiAgICAgCi0gICAg
Ym9vbCBpc09mZmxpbmVDb250ZXh0KCkgY29uc3QgeyByZXR1cm4gbV9pc09mZmxpbmVDb250ZXh0
OyB9Ci0KLSAgICBEb2N1bWVudCogZG9jdW1lbnQoKSBjb25zdDsgLy8gQVNTRVJUcyBpZiBkb2N1
bWVudCBubyBsb25nZXIgZXhpc3RzLgorICAgIGJvb2wgaXNPZmZsaW5lQ29udGV4dCgpIGNvbnN0
IGZpbmFsIHsgcmV0dXJuIG1faXNPZmZsaW5lQ29udGV4dDsgfQogCiAgICAgRG9jdW1lbnRJZGVu
dGlmaWVyIGhvc3RpbmdEb2N1bWVudElkZW50aWZpZXIoKSBjb25zdCBmaW5hbDsKIAogICAgIEF1
ZGlvRGVzdGluYXRpb25Ob2RlKiBkZXN0aW5hdGlvbigpIHsgcmV0dXJuIG1fZGVzdGluYXRpb25O
b2RlLmdldCgpOyB9Ci0gICAgc2l6ZV90IGN1cnJlbnRTYW1wbGVGcmFtZSgpIGNvbnN0IHsgcmV0
dXJuIG1fZGVzdGluYXRpb25Ob2RlID8gbV9kZXN0aW5hdGlvbk5vZGUtPmN1cnJlbnRTYW1wbGVG
cmFtZSgpIDogMDsgfQotICAgIGRvdWJsZSBjdXJyZW50VGltZSgpIGNvbnN0IHsgcmV0dXJuIG1f
ZGVzdGluYXRpb25Ob2RlID8gbV9kZXN0aW5hdGlvbk5vZGUtPmN1cnJlbnRUaW1lKCkgOiAwLjsg
fQotICAgIGZsb2F0IHNhbXBsZVJhdGUoKSBjb25zdCB7IHJldHVybiBtX2Rlc3RpbmF0aW9uTm9k
ZSA/IG1fZGVzdGluYXRpb25Ob2RlLT5zYW1wbGVSYXRlKCkgOiAwLmY7IH0KKyAgICBzaXplX3Qg
Y3VycmVudFNhbXBsZUZyYW1lKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9kZXN0aW5hdGlvbk5v
ZGUgPyBtX2Rlc3RpbmF0aW9uTm9kZS0+Y3VycmVudFNhbXBsZUZyYW1lKCkgOiAwOyB9CisgICAg
ZG91YmxlIGN1cnJlbnRUaW1lKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9kZXN0aW5hdGlvbk5v
ZGUgPyBtX2Rlc3RpbmF0aW9uTm9kZS0+Y3VycmVudFRpbWUoKSA6IDAuOyB9CisgICAgZmxvYXQg
c2FtcGxlUmF0ZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fZGVzdGluYXRpb25Ob2RlID8gbV9k
ZXN0aW5hdGlvbk5vZGUtPnNhbXBsZVJhdGUoKSA6IDAuZjsgfQogICAgIHVuc2lnbmVkIGxvbmcg
YWN0aXZlU291cmNlQ291bnQoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDx1bnNpZ25lZCBs
b25nPihtX2FjdGl2ZVNvdXJjZUNvdW50KTsgfQogCi0gICAgdm9pZCBpbmNyZW1lbnRBY3RpdmVT
b3VyY2VDb3VudCgpOwotICAgIHZvaWQgZGVjcmVtZW50QWN0aXZlU291cmNlQ291bnQoKTsKKyAg
ICB2b2lkIGluY3JlbWVudEFjdGl2ZVNvdXJjZUNvdW50KCkgZmluYWw7CisgICAgdm9pZCBkZWNy
ZW1lbnRBY3RpdmVTb3VyY2VDb3VudCgpIGZpbmFsOwogICAgIAogICAgIEV4Y2VwdGlvbk9yPFJl
ZjxBdWRpb0J1ZmZlcj4+IGNyZWF0ZUJ1ZmZlcih1bnNpZ25lZCBudW1iZXJPZkNoYW5uZWxzLCBz
aXplX3QgbnVtYmVyT2ZGcmFtZXMsIGZsb2F0IHNhbXBsZVJhdGUpOwogICAgIEV4Y2VwdGlvbk9y
PFJlZjxBdWRpb0J1ZmZlcj4+IGNyZWF0ZUJ1ZmZlcihBcnJheUJ1ZmZlciYsIGJvb2wgbWl4VG9N
b25vKTsKQEAgLTEzMCw3ICsyMzYsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCByZXN1bWVSZW5kZXJp
bmcoRE9NUHJvbWlzZURlZmVycmVkPHZvaWQ+JiYpOwogICAgIHZvaWQgY2xvc2UoRE9NUHJvbWlz
ZURlZmVycmVkPHZvaWQ+JiYpOwogCi0gICAgZW51bSBjbGFzcyBTdGF0ZSB7IFN1c3BlbmRlZCwg
UnVubmluZywgSW50ZXJydXB0ZWQsIENsb3NlZCB9OworICAgIHVzaW5nIFN0YXRlID0gQXVkaW9D
b250ZXh0U3RhdGU7CiAgICAgU3RhdGUgc3RhdGUoKSBjb25zdDsKICAgICBib29sIGlzQ2xvc2Vk
KCkgY29uc3QgeyByZXR1cm4gbV9zdGF0ZSA9PSBTdGF0ZTo6Q2xvc2VkOyB9CiAKQEAgLTE2MCwz
MSArMjY2LDMxIEBAIHB1YmxpYzoKICAgICBFeGNlcHRpb25PcjxSZWY8UGVyaW9kaWNXYXZlPj4g
Y3JlYXRlUGVyaW9kaWNXYXZlKEZsb2F0MzJBcnJheSYgcmVhbCwgRmxvYXQzMkFycmF5JiBpbWFn
aW5hcnkpOwogCiAgICAgLy8gV2hlbiBhIHNvdXJjZSBub2RlIGhhcyBubyBtb3JlIHByb2Nlc3Np
bmcgdG8gZG8gKGhhcyBmaW5pc2hlZCBwbGF5aW5nKSwgdGhlbiBpdCB0ZWxscyB0aGUgY29udGV4
dCB0byBkZXJlZmVyZW5jZSBpdC4KLSAgICB2b2lkIG5vdGlmeU5vZGVGaW5pc2hlZFByb2Nlc3Np
bmcoQXVkaW9Ob2RlKik7CisgICAgdm9pZCBub3RpZnlOb2RlRmluaXNoZWRQcm9jZXNzaW5nKEF1
ZGlvTm9kZSopIGZpbmFsOwogCiAgICAgLy8gQ2FsbGVkIGF0IHRoZSBzdGFydCBvZiBlYWNoIHJl
bmRlciBxdWFudHVtLgotICAgIHZvaWQgaGFuZGxlUHJlUmVuZGVyVGFza3MoKTsKKyAgICB2b2lk
IGhhbmRsZVByZVJlbmRlclRhc2tzKCkgZmluYWw7CiAKICAgICAvLyBDYWxsZWQgYXQgdGhlIGVu
ZCBvZiBlYWNoIHJlbmRlciBxdWFudHVtLgotICAgIHZvaWQgaGFuZGxlUG9zdFJlbmRlclRhc2tz
KCk7CisgICAgdm9pZCBoYW5kbGVQb3N0UmVuZGVyVGFza3MoKSBmaW5hbDsKIAogICAgIC8vIENh
bGxlZCBwZXJpb2RpY2FsbHkgYXQgdGhlIGVuZCBvZiBlYWNoIHJlbmRlciBxdWFudHVtIHRvIGRl
cmVmZXJlbmNlIGZpbmlzaGVkIHNvdXJjZSBub2Rlcy4KICAgICB2b2lkIGRlcmVmRmluaXNoZWRT
b3VyY2VOb2RlcygpOwogCiAgICAgLy8gV2Ugc2NoZWR1bGUgZGVsZXRpb24gb2YgYWxsIG1hcmtl
ZCBub2RlcyBhdCB0aGUgZW5kIG9mIGVhY2ggcmVhbHRpbWUgcmVuZGVyIHF1YW50dW0uCi0gICAg
dm9pZCBtYXJrRm9yRGVsZXRpb24oQXVkaW9Ob2RlJik7Ci0gICAgdm9pZCBkZWxldGVNYXJrZWRO
b2RlcygpOworICAgIHZvaWQgbWFya0ZvckRlbGV0aW9uKEF1ZGlvTm9kZSYpIGZpbmFsOworICAg
IHZvaWQgZGVsZXRlTWFya2VkTm9kZXMoKSBmaW5hbDsKIAogICAgIC8vIEF1ZGlvQ29udGV4dCBj
YW4gcHVsbCBub2RlKHMpIGF0IHRoZSBlbmQgb2YgZWFjaCByZW5kZXIgcXVhbnR1bSBldmVuIHdo
ZW4gdGhleSBhcmUgbm90IGNvbm5lY3RlZCB0byBhbnkgZG93bnN0cmVhbSBub2Rlcy4KICAgICAv
LyBUaGVzZSB0d28gbWV0aG9kcyBhcmUgY2FsbGVkIGJ5IHRoZSBub2RlcyB3aG8gd2FudCB0byBh
ZGQvcmVtb3ZlIHRoZW1zZWx2ZXMgaW50by9mcm9tIHRoZSBhdXRvbWF0aWMgcHVsbCBsaXN0cy4K
LSAgICB2b2lkIGFkZEF1dG9tYXRpY1B1bGxOb2RlKEF1ZGlvTm9kZSYpOwotICAgIHZvaWQgcmVt
b3ZlQXV0b21hdGljUHVsbE5vZGUoQXVkaW9Ob2RlJik7CisgICAgdm9pZCBhZGRBdXRvbWF0aWNQ
dWxsTm9kZShBdWRpb05vZGUmKSBmaW5hbDsKKyAgICB2b2lkIHJlbW92ZUF1dG9tYXRpY1B1bGxO
b2RlKEF1ZGlvTm9kZSYpIGZpbmFsOwogCiAgICAgLy8gQ2FsbGVkIHJpZ2h0IGJlZm9yZSBoYW5k
bGVQb3N0UmVuZGVyVGFza3MoKSB0byBoYW5kbGUgbm9kZXMgd2hpY2ggbmVlZCB0byBiZSBwdWxs
ZWQgZXZlbiB3aGVuIHRoZXkgYXJlIG5vdCBjb25uZWN0ZWQgdG8gYW55dGhpbmcuCi0gICAgdm9p
ZCBwcm9jZXNzQXV0b21hdGljUHVsbE5vZGVzKHNpemVfdCBmcmFtZXNUb1Byb2Nlc3MpOworICAg
IHZvaWQgcHJvY2Vzc0F1dG9tYXRpY1B1bGxOb2RlcyhzaXplX3QgZnJhbWVzVG9Qcm9jZXNzKSBm
aW5hbDsKIAogICAgIC8vIEtlZXBzIHRyYWNrIG9mIHRoZSBudW1iZXIgb2YgY29ubmVjdGlvbnMg
bWFkZS4KLSAgICB2b2lkIGluY3JlbWVudENvbm5lY3Rpb25Db3VudCgpCisgICAgdm9pZCBpbmNy
ZW1lbnRDb25uZWN0aW9uQ291bnQoKSBmaW5hbAogICAgIHsKICAgICAgICAgQVNTRVJUKGlzTWFp
blRocmVhZCgpKTsKICAgICAgICAgbV9jb25uZWN0aW9uQ291bnQrKzsKQEAgLTE5NiwxMDMgKzMw
Miw3MCBAQCBwdWJsaWM6CiAgICAgLy8gVGhyZWFkIFNhZmV0eSBhbmQgR3JhcGggTG9ja2luZzoK
ICAgICAvLwogICAgIAotICAgIHZvaWQgc2V0QXVkaW9UaHJlYWQoVGhyZWFkJiB0aHJlYWQpIHsg
bV9hdWRpb1RocmVhZCA9ICZ0aHJlYWQ7IH0gLy8gRklYTUU6IGNoZWNrIGVpdGhlciBub3QgaW5p
dGlhbGl6ZWQgb3IgdGhlIHNhbWUKKyAgICB2b2lkIHNldEF1ZGlvVGhyZWFkKFRocmVhZCYgdGhy
ZWFkKSBmaW5hbCB7IG1fYXVkaW9UaHJlYWQgPSAmdGhyZWFkOyB9IC8vIEZJWE1FOiBjaGVjayBl
aXRoZXIgbm90IGluaXRpYWxpemVkIG9yIHRoZSBzYW1lCiAgICAgVGhyZWFkKiBhdWRpb1RocmVh
ZCgpIGNvbnN0IHsgcmV0dXJuIG1fYXVkaW9UaHJlYWQ7IH0KLSAgICBib29sIGlzQXVkaW9UaHJl
YWQoKSBjb25zdDsKKyAgICBib29sIGlzQXVkaW9UaHJlYWQoKSBjb25zdCBmaW5hbDsKIAogICAg
IC8vIFJldHVybnMgdHJ1ZSBvbmx5IGFmdGVyIHRoZSBhdWRpbyB0aHJlYWQgaGFzIGJlZW4gc3Rh
cnRlZCBhbmQgdGhlbiBzaHV0ZG93bi4KLSAgICBib29sIGlzQXVkaW9UaHJlYWRGaW5pc2hlZCgp
IHsgcmV0dXJuIG1faXNBdWRpb1RocmVhZEZpbmlzaGVkOyB9CisgICAgYm9vbCBpc0F1ZGlvVGhy
ZWFkRmluaXNoZWQoKSBmaW5hbCB7IHJldHVybiBtX2lzQXVkaW9UaHJlYWRGaW5pc2hlZDsgfQog
ICAgIAogICAgIC8vIG11c3RSZWxlYXNlTG9jayBpcyBzZXQgdG8gdHJ1ZSBpZiB3ZSBhY3F1aXJl
ZCB0aGUgbG9jayBpbiB0aGlzIG1ldGhvZCBjYWxsIGFuZCBjYWxsZXIgbXVzdCB1bmxvY2soKSwg
ZmFsc2UgaWYgaXQgd2FzIHByZXZpb3VzbHkgYWNxdWlyZWQuCi0gICAgdm9pZCBsb2NrKGJvb2wm
IG11c3RSZWxlYXNlTG9jayk7CisgICAgdm9pZCBsb2NrKGJvb2wmIG11c3RSZWxlYXNlTG9jaykg
ZmluYWw7CiAKICAgICAvLyBSZXR1cm5zIHRydWUgaWYgd2Ugb3duIHRoZSBsb2NrLgogICAgIC8v
IG11c3RSZWxlYXNlTG9jayBpcyBzZXQgdG8gdHJ1ZSBpZiB3ZSBhY3F1aXJlZCB0aGUgbG9jayBp
biB0aGlzIG1ldGhvZCBjYWxsIGFuZCBjYWxsZXIgbXVzdCB1bmxvY2soKSwgZmFsc2UgaWYgaXQg
d2FzIHByZXZpb3VzbHkgYWNxdWlyZWQuCi0gICAgYm9vbCB0cnlMb2NrKGJvb2wmIG11c3RSZWxl
YXNlTG9jayk7CisgICAgYm9vbCB0cnlMb2NrKGJvb2wmIG11c3RSZWxlYXNlTG9jaykgZmluYWw7
CiAKLSAgICB2b2lkIHVubG9jaygpOworICAgIHZvaWQgdW5sb2NrKCkgZmluYWw7CiAKICAgICAv
LyBSZXR1cm5zIHRydWUgaWYgdGhpcyB0aHJlYWQgb3ducyB0aGUgY29udGV4dCdzIGxvY2suCi0g
ICAgYm9vbCBpc0dyYXBoT3duZXIoKSBjb25zdDsKKyAgICBib29sIGlzR3JhcGhPd25lcigpIGNv
bnN0IGZpbmFsOwogCiAgICAgLy8gUmV0dXJucyB0aGUgbWF4aW11bSBudW1iZXIgb2YgY2hhbm5l
bHMgd2UgY2FuIHN1cHBvcnQuCiAgICAgc3RhdGljIHVuc2lnbmVkIG1heE51bWJlck9mQ2hhbm5l
bHMoKSB7IHJldHVybiBNYXhOdW1iZXJPZkNoYW5uZWxzOyB9Ci0KLSAgICBjbGFzcyBBdXRvTG9j
a2VyIHsKLSAgICBwdWJsaWM6Ci0gICAgICAgIGV4cGxpY2l0IEF1dG9Mb2NrZXIoQXVkaW9Db250
ZXh0JiBjb250ZXh0KQotICAgICAgICAgICAgOiBtX2NvbnRleHQoY29udGV4dCkKLSAgICAgICAg
ewotICAgICAgICAgICAgbV9jb250ZXh0LmxvY2sobV9tdXN0UmVsZWFzZUxvY2spOwotICAgICAg
ICB9Ci0gICAgICAgIAotICAgICAgICB+QXV0b0xvY2tlcigpCi0gICAgICAgIHsKLSAgICAgICAg
ICAgIGlmIChtX211c3RSZWxlYXNlTG9jaykKLSAgICAgICAgICAgICAgICBtX2NvbnRleHQudW5s
b2NrKCk7Ci0gICAgICAgIH0KLQotICAgIHByaXZhdGU6Ci0gICAgICAgIEF1ZGlvQ29udGV4dCYg
bV9jb250ZXh0OwotICAgICAgICBib29sIG1fbXVzdFJlbGVhc2VMb2NrOwotICAgIH07CiAgICAg
CiAgICAgLy8gSW4gQXVkaW9Ob2RlOjpkZXJlZigpIGEgdHJ5TG9jaygpIGlzIHVzZWQgZm9yIGNh
bGxpbmcgZmluaXNoRGVyZWYoKSwgYnV0IGlmIGl0IGZhaWxzIGtlZXAgdHJhY2sgaGVyZS4KLSAg
ICB2b2lkIGFkZERlZmVycmVkRmluaXNoRGVyZWYoQXVkaW9Ob2RlKik7CisgICAgdm9pZCBhZGRE
ZWZlcnJlZEZpbmlzaERlcmVmKEF1ZGlvTm9kZSopIGZpbmFsOwogCiAgICAgLy8gSW4gdGhlIGF1
ZGlvIHRocmVhZCBhdCB0aGUgc3RhcnQgb2YgZWFjaCByZW5kZXIgY3ljbGUsIHdlJ2xsIGNhbGwg
aGFuZGxlRGVmZXJyZWRGaW5pc2hEZXJlZnMoKS4KICAgICB2b2lkIGhhbmRsZURlZmVycmVkRmlu
aXNoRGVyZWZzKCk7CiAKICAgICAvLyBPbmx5IGFjY2Vzc2VkIHdoZW4gdGhlIGdyYXBoIGxvY2sg
aXMgaGVsZC4KLSAgICB2b2lkIG1hcmtTdW1taW5nSnVuY3Rpb25EaXJ0eShBdWRpb1N1bW1pbmdK
dW5jdGlvbiopOwotICAgIHZvaWQgbWFya0F1ZGlvTm9kZU91dHB1dERpcnR5KEF1ZGlvTm9kZU91
dHB1dCopOworICAgIHZvaWQgbWFya1N1bW1pbmdKdW5jdGlvbkRpcnR5KEF1ZGlvU3VtbWluZ0p1
bmN0aW9uKikgZmluYWw7CisgICAgdm9pZCBtYXJrQXVkaW9Ob2RlT3V0cHV0RGlydHkoQXVkaW9O
b2RlT3V0cHV0KikgZmluYWw7CiAKICAgICAvLyBNdXN0IGJlIGNhbGxlZCBvbiBtYWluIHRocmVh
ZC4KLSAgICB2b2lkIHJlbW92ZU1hcmtlZFN1bW1pbmdKdW5jdGlvbihBdWRpb1N1bW1pbmdKdW5j
dGlvbiopOworICAgIHZvaWQgcmVtb3ZlTWFya2VkU3VtbWluZ0p1bmN0aW9uKEF1ZGlvU3VtbWlu
Z0p1bmN0aW9uKikgZmluYWw7CiAKICAgICAvLyBFdmVudFRhcmdldAogICAgIEV2ZW50VGFyZ2V0
SW50ZXJmYWNlIGV2ZW50VGFyZ2V0SW50ZXJmYWNlKCkgY29uc3QgZmluYWwgeyByZXR1cm4gQXVk
aW9Db250ZXh0RXZlbnRUYXJnZXRJbnRlcmZhY2VUeXBlOyB9CiAKLSAgICAvLyBSZWNvbmNpbGUg
cmVmL2RlcmVmIHdoaWNoIGFyZSBkZWZpbmVkIGJvdGggaW4gVGhyZWFkU2FmZVJlZkNvdW50ZWQg
YW5kIEV2ZW50VGFyZ2V0LgotICAgIHVzaW5nIFRocmVhZFNhZmVSZWZDb3VudGVkOjpyZWY7Ci0g
ICAgdXNpbmcgVGhyZWFkU2FmZVJlZkNvdW50ZWQ6OmRlcmVmOwotCiAgICAgdm9pZCBzdGFydFJl
bmRlcmluZygpOwotICAgIHZvaWQgZmluaXNoZWRSZW5kZXJpbmcoYm9vbCBkaWRSZW5kZXJpbmcp
OworICAgIHZvaWQgZmluaXNoZWRSZW5kZXJpbmcoYm9vbCBkaWRSZW5kZXJpbmcpIGZpbmFsOwog
CiAgICAgc3RhdGljIHVuc2lnbmVkIHNfaGFyZHdhcmVDb250ZXh0Q291bnQ7CiAKICAgICAvLyBS
ZXN0cmljdGlvbnMgdG8gY2hhbmdlIGRlZmF1bHQgYmVoYXZpb3JzLgotICAgIGVudW0gQmVoYXZp
b3JSZXN0cmljdGlvbkZsYWdzIHsKLSAgICAgICAgTm9SZXN0cmljdGlvbnMgPSAwLAotICAgICAg
ICBSZXF1aXJlVXNlckdlc3R1cmVGb3JBdWRpb1N0YXJ0UmVzdHJpY3Rpb24gPSAxIDw8IDAsCi0g
ICAgICAgIFJlcXVpcmVQYWdlQ29uc2VudEZvckF1ZGlvU3RhcnRSZXN0cmljdGlvbiA9IDEgPDwg
MSwKLSAgICB9OwotICAgIHR5cGVkZWYgdW5zaWduZWQgQmVoYXZpb3JSZXN0cmljdGlvbnM7Ci0K
LSAgICBCZWhhdmlvclJlc3RyaWN0aW9ucyBiZWhhdmlvclJlc3RyaWN0aW9ucygpIGNvbnN0IHsg
cmV0dXJuIG1fcmVzdHJpY3Rpb25zOyB9Ci0gICAgdm9pZCBhZGRCZWhhdmlvclJlc3RyaWN0aW9u
KEJlaGF2aW9yUmVzdHJpY3Rpb25zIHJlc3RyaWN0aW9uKSB7IG1fcmVzdHJpY3Rpb25zIHw9IHJl
c3RyaWN0aW9uOyB9Ci0gICAgdm9pZCByZW1vdmVCZWhhdmlvclJlc3RyaWN0aW9uKEJlaGF2aW9y
UmVzdHJpY3Rpb25zIHJlc3RyaWN0aW9uKSB7IG1fcmVzdHJpY3Rpb25zICY9IH5yZXN0cmljdGlv
bjsgfQorICAgIEJlaGF2aW9yUmVzdHJpY3Rpb25zIGJlaGF2aW9yUmVzdHJpY3Rpb25zKCkgY29u
c3QgZmluYWwgeyByZXR1cm4gbV9yZXN0cmljdGlvbnM7IH0KKyAgICB2b2lkIGFkZEJlaGF2aW9y
UmVzdHJpY3Rpb24oQmVoYXZpb3JSZXN0cmljdGlvbnMgcmVzdHJpY3Rpb24pIGZpbmFsIHsgbV9y
ZXN0cmljdGlvbnMgfD0gcmVzdHJpY3Rpb247IH0KKyAgICB2b2lkIHJlbW92ZUJlaGF2aW9yUmVz
dHJpY3Rpb24oQmVoYXZpb3JSZXN0cmljdGlvbnMgcmVzdHJpY3Rpb24pIGZpbmFsIHsgbV9yZXN0
cmljdGlvbnMgJj0gfnJlc3RyaWN0aW9uOyB9CiAKLSAgICB2b2lkIGlzUGxheWluZ0F1ZGlvRGlk
Q2hhbmdlKCk7CisgICAgdm9pZCBpc1BsYXlpbmdBdWRpb0RpZENoYW5nZSgpIGZpbmFsOwogCi0g
ICAgdm9pZCBub2RlV2lsbEJlZ2luUGxheWJhY2soKTsKKyAgICB2b2lkIG5vZGVXaWxsQmVnaW5Q
bGF5YmFjaygpIGZpbmFsOwogCiAjaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECiAgICAgY29uc3Qg
TG9nZ2VyJiBsb2dnZXIoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2xvZ2dlci5nZXQoKTsgfQog
ICAgIGNvbnN0IHZvaWQqIGxvZ0lkZW50aWZpZXIoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2xv
Z0lkZW50aWZpZXI7IH0KICAgICBXVEZMb2dDaGFubmVsJiBsb2dDaGFubmVsKCkgY29uc3QgZmlu
YWw7Ci0gICAgY29uc3Qgdm9pZCogbmV4dEF1ZGlvTm9kZUxvZ0lkZW50aWZpZXIoKSB7IHJldHVy
biBjaGlsZExvZ0lkZW50aWZpZXIobV9sb2dJZGVudGlmaWVyLCArK21fbmV4dEF1ZGlvTm9kZUlk
ZW50aWZpZXIpOyB9Ci0gICAgY29uc3Qgdm9pZCogbmV4dEF1ZGlvUGFyYW1ldGVyTG9nSWRlbnRp
ZmllcigpIHsgcmV0dXJuIGNoaWxkTG9nSWRlbnRpZmllcihtX2xvZ0lkZW50aWZpZXIsICsrbV9u
ZXh0QXVkaW9QYXJhbWV0ZXJJZGVudGlmaWVyKTsgfQorICAgIGNvbnN0IHZvaWQqIG5leHRBdWRp
b05vZGVMb2dJZGVudGlmaWVyKCkgZmluYWwgeyByZXR1cm4gY2hpbGRMb2dJZGVudGlmaWVyKG1f
bG9nSWRlbnRpZmllciwgKyttX25leHRBdWRpb05vZGVJZGVudGlmaWVyKTsgfQorICAgIGNvbnN0
IHZvaWQqIG5leHRBdWRpb1BhcmFtZXRlckxvZ0lkZW50aWZpZXIoKSBmaW5hbCB7IHJldHVybiBj
aGlsZExvZ0lkZW50aWZpZXIobV9sb2dJZGVudGlmaWVyLCArK21fbmV4dEF1ZGlvUGFyYW1ldGVy
SWRlbnRpZmllcik7IH0KICNlbmRpZgogCi0gICAgdm9pZCBwb3N0VGFzayhXVEY6OkZ1bmN0aW9u
PHZvaWQoKT4mJik7Ci0gICAgYm9vbCBpc1N0b3BwZWQoKSBjb25zdCB7IHJldHVybiBtX2lzU3Rv
cFNjaGVkdWxlZDsgfQotICAgIGNvbnN0IFNlY3VyaXR5T3JpZ2luKiBvcmlnaW4oKSBjb25zdDsK
LSAgICB2b2lkIGFkZENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VTb3VyY2UsIE1lc3NhZ2VMZXZlbCwg
Y29uc3QgU3RyaW5nJiBtZXNzYWdlKTsKLQotICAgIC8vIEV2ZW50VGFyZ2V0Ci0gICAgU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpIGNvbnN0IGZpbmFsOwor
ICAgIHZvaWQgcG9zdFRhc2soV1RGOjpGdW5jdGlvbjx2b2lkKCk+JiYpIGZpbmFsOworICAgIGJv
b2wgaXNTdG9wcGVkKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9pc1N0b3BTY2hlZHVsZWQ7IH0K
KyAgICBjb25zdCBTZWN1cml0eU9yaWdpbiogb3JpZ2luKCkgY29uc3QgZmluYWw7CisgICAgdm9p
ZCBhZGRDb25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNlLCBNZXNzYWdlTGV2ZWwsIGNvbnN0IFN0
cmluZyYgbWVzc2FnZSkgZmluYWw7CiAKIHByb3RlY3RlZDoKICAgICBleHBsaWNpdCBBdWRpb0Nv
bnRleHQoRG9jdW1lbnQmKTsKQEAgLTM2MCw5ICs0MzMsOCBAQCBwcml2YXRlOgogCiAgICAgdm9p
ZCB2aXNpYmlsaXR5U3RhdGVDaGFuZ2VkKCkgZmluYWw7CiAKLSAgICAvLyBFdmVudFRhcmdldAot
ICAgIHZvaWQgcmVmRXZlbnRUYXJnZXQoKSBvdmVycmlkZSB7IHJlZigpOyB9Ci0gICAgdm9pZCBk
ZXJlZkV2ZW50VGFyZ2V0KCkgb3ZlcnJpZGUgeyBkZXJlZigpOyB9CisgICAgYm9vbCBpc0F1ZGlv
Q29udGV4dCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIHRydWU7IH0KKyAgICBib29sIGlzV2ViS2l0
QXVkaW9Db250ZXh0KCkgY29uc3QgZmluYWwgeyByZXR1cm4gZmFsc2U7IH0KIAogICAgIHZvaWQg
aGFuZGxlRGlydHlBdWRpb1N1bW1pbmdKdW5jdGlvbnMoKTsKICAgICB2b2lkIGhhbmRsZURpcnR5
QXVkaW9Ob2RlT3V0cHV0cygpOwpAQCAtNDQ2LDIxICs1MTgsMTMgQEAgcHJpdmF0ZToKICAgICBS
ZWZQdHI8UGVuZGluZ0FjdGl2aXR5PEF1ZGlvQ29udGV4dD4+IG1fcGVuZGluZ0FjdGl2aXR5Owog
fTsKIAotLy8gRklYTUU6IEZpbmQgb3V0IHdoeSB0aGVzZSA9PS8hPSBmdW5jdGlvbnMgYXJlIG5l
ZWRlZCBhbmQgcmVtb3ZlIHRoZW0gaWYgcG9zc2libGUuCi0KLWlubGluZSBib29sIG9wZXJhdG9y
PT0oY29uc3QgQXVkaW9Db250ZXh0JiBsaHMsIGNvbnN0IEF1ZGlvQ29udGV4dCYgcmhzKQotewot
ICAgIHJldHVybiAmbGhzID09ICZyaHM7Ci19Ci0KLWlubGluZSBib29sIG9wZXJhdG9yIT0oY29u
c3QgQXVkaW9Db250ZXh0JiBsaHMsIGNvbnN0IEF1ZGlvQ29udGV4dCYgcmhzKQotewotICAgIHJl
dHVybiAmbGhzICE9ICZyaHM7Ci19Ci0KIGlubGluZSBBdWRpb0NvbnRleHQ6OlN0YXRlIEF1ZGlv
Q29udGV4dDo6c3RhdGUoKSBjb25zdAogewogICAgIHJldHVybiBtX3N0YXRlOwogfQogCiB9IC8v
IFdlYkNvcmUKKworU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19CRUdJTihXZWJDb3JlOjpBdWRpb0Nv
bnRleHQpCisgICAgc3RhdGljIGJvb2wgaXNUeXBlKGNvbnN0IFdlYkNvcmU6OkF1ZGlvQ29udGV4
dEJhc2UmIGNvbnRleHQpIHsgcmV0dXJuIGNvbnRleHQuaXNBdWRpb0NvbnRleHQoKTsgfQorU1BF
Q0lBTElaRV9UWVBFX1RSQUlUU19FTkQoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJhdWRpby9BdWRpb0NvbnRleHQuaWRsIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJhdWRpby9BdWRpb0NvbnRleHQuaWRsCmluZGV4IGU3MTE4MzliMzMzMDBkZTM0MWMyMzFjNGNj
OTZlOWU1NzYzMjQxMzUuLmYxZDQ5Y2EzNjhkNjQ1MDZhYmFiNTY5NzkwOWVlMDk3MjFiNWQ4Y2Yg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0
LmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQ29udGV4dC5p
ZGwKQEAgLTIzLDE5ICsyMywxMSBAQAogICogU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotZW51bSBBdWRpb0NvbnRleHRT
dGF0ZSB7Ci0gICAgInN1c3BlbmRlZCIsCi0gICAgInJ1bm5pbmciLAotICAgICJpbnRlcnJ1cHRl
ZCIsCi0gICAgImNsb3NlZCIKLX07Ci0KIFsKICAgICBBY3RpdmVET01PYmplY3QsCiAgICAgQ29u
ZGl0aW9uYWw9V0VCX0FVRElPLAotICAgIEVuYWJsZWRCeVNldHRpbmc9V2ViQXVkaW8sCisgICAg
RW5hYmxlZEJ5U2V0dGluZz1Nb2Rlcm5VbnByZWZpeGVkV2ViQXVkaW8sCiAgICAgRXhwb3J0TWFj
cm89V0VCQ09SRV9FWFBPUlQsCi0gICAgSW50ZXJmYWNlTmFtZT13ZWJraXRBdWRpb0NvbnRleHQs
CiBdIGludGVyZmFjZSBBdWRpb0NvbnRleHQgOiBFdmVudFRhcmdldCB7CiAgICAgW0NhbGxXaXRo
PURvY3VtZW50LCBNYXlUaHJvd0V4Y2VwdGlvbl0gY29uc3RydWN0b3IoKTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0NvbnRleHRTdGF0ZS5oIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0NvbnRleHRTdGF0ZS5oCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjE2MDEzMTEwOGZhNmE0YzE0YTlhZDYxN2I5MmNhMjE0NzQ0ODc4MGIKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQ29udGV4dFN0
YXRlLmgKQEAgLTAsMCArMSwzMiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE2LTIwMjAgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04KKyAqIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisg
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUworICogU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKK25h
bWVzcGFjZSBXZWJDb3JlIHsKKworZW51bSBjbGFzcyBBdWRpb0NvbnRleHRTdGF0ZSB7IFN1c3Bl
bmRlZCwgUnVubmluZywgSW50ZXJydXB0ZWQsIENsb3NlZCB9OworCit9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQ29udGV4dFN0YXRlLmlkbCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0U3RhdGUuaWRsCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLmM4ZDA4YmQyYjU2M2NkODI2ZWNjYTdmOTc5NDRjNzEzYThhN2VmNGIKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQ29udGV4dFN0
YXRlLmlkbApAQCAtMCwwICsxLDMxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwLCBHb29n
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDExIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OCisgKiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMKKyAqIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKK2VudW0gQXVkaW9Db250ZXh0U3Rh
dGUgeworICAgICJzdXNwZW5kZWQiLAorICAgICJydW5uaW5nIiwKKyAgICAiaW50ZXJydXB0ZWQi
LAorICAgICJjbG9zZWQiCit9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJhdWRpby9BdWRpb0Rlc3RpbmF0aW9uTm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmF1ZGlvL0F1ZGlvRGVzdGluYXRpb25Ob2RlLmNwcAppbmRleCBkOWFiYjk3NzdhOWQyNWVl
YWYyNDJmZjRmZmZjNWVjNWVmNDg2YzRlLi42Nzc2MTdlY2IzMzhkYTg5MWE3MTNhZTg4YTNmNWY2
NGY2ZmQ4NDlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1
ZGlvRGVzdGluYXRpb25Ob2RlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1
ZGlvL0F1ZGlvRGVzdGluYXRpb25Ob2RlLmNwcApAQCAtMzksNyArMzksNyBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAgICAgCiBXVEZfTUFLRV9JU09fQUxMT0NBVEVEX0lNUEwoQXVkaW9EZXN0aW5h
dGlvbk5vZGUpOwogCi1BdWRpb0Rlc3RpbmF0aW9uTm9kZTo6QXVkaW9EZXN0aW5hdGlvbk5vZGUo
QXVkaW9Db250ZXh0JiBjb250ZXh0LCBmbG9hdCBzYW1wbGVSYXRlKQorQXVkaW9EZXN0aW5hdGlv
bk5vZGU6OkF1ZGlvRGVzdGluYXRpb25Ob2RlKEF1ZGlvQ29udGV4dEJhc2UmIGNvbnRleHQsIGZs
b2F0IHNhbXBsZVJhdGUpCiAgICAgOiBBdWRpb05vZGUoY29udGV4dCwgc2FtcGxlUmF0ZSkKICAg
ICAsIG1fY3VycmVudFNhbXBsZUZyYW1lKDApCiAgICAgLCBtX2lzU2lsZW50KHRydWUpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvRGVzdGluYXRpb25O
b2RlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvRGVzdGluYXRpb25O
b2RlLmgKaW5kZXggODk0OGY0ZWU3MGE1YzBlODFhOGU4M2MxZjBjZDVmY2Y0NTFhY2M2MC4uMzc2
ZjQ2MjcxMmQ3ZjFjMmFlOGQ1MjAxMWZhMmExNWY2ZTE4YWVjNyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0Rlc3RpbmF0aW9uTm9kZS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9EZXN0aW5hdGlvbk5vZGUuaApAQCAt
MzYsNyArMzYsNyBAQCBjbGFzcyBBdWRpb0NvbnRleHQ7CiBjbGFzcyBBdWRpb0Rlc3RpbmF0aW9u
Tm9kZSA6IHB1YmxpYyBBdWRpb05vZGUsIHB1YmxpYyBBdWRpb0lPQ2FsbGJhY2sgewogICAgIFdU
Rl9NQUtFX0lTT19BTExPQ0FURUQoQXVkaW9EZXN0aW5hdGlvbk5vZGUpOwogcHVibGljOgotICAg
IEF1ZGlvRGVzdGluYXRpb25Ob2RlKEF1ZGlvQ29udGV4dCYsIGZsb2F0IHNhbXBsZVJhdGUpOwor
ICAgIEF1ZGlvRGVzdGluYXRpb25Ob2RlKEF1ZGlvQ29udGV4dEJhc2UmLCBmbG9hdCBzYW1wbGVS
YXRlKTsKICAgICB2aXJ0dWFsIH5BdWRpb0Rlc3RpbmF0aW9uTm9kZSgpOwogICAgIAogICAgIC8v
IEF1ZGlvTm9kZSAgIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRp
by9BdWRpb05vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb05v
ZGUuY3BwCmluZGV4IDc2NWVjZTMzMmY2MzY5YzQxOThmZTU3ZGQzYWU3Y2M1MTkzYjJhY2EuLmU1
NTQzNzc5ZDUxYTUwOGNlNjFhNmEwODMxMTJlOGQyZDBhODdkMGQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Ob2RlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvTm9kZS5jcHAKQEAgLTMzLDYgKzMzLDcgQEAKICNp
bmNsdWRlICJBdWRpb05vZGVPdXRwdXQuaCIKICNpbmNsdWRlICJBdWRpb1BhcmFtLmgiCiAjaW5j
bHVkZSAiTG9nZ2luZy5oIgorI2luY2x1ZGUgIldlYktpdEF1ZGlvQ29udGV4dC5oIgogI2luY2x1
ZGUgPHd0Zi9BdG9taWNzLmg+CiAjaW5jbHVkZSA8d3RmL0lzb01hbGxvY0lubGluZXMuaD4KICNp
bmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgpAQCAtOTUsNyArOTYsNyBAQCBTdHJpbmcgY29udmVy
dEVudW1lcmF0aW9uVG9TdHJpbmcoQXVkaW9Ob2RlOjpOb2RlVHlwZSBlbnVtZXJhdGlvblZhbHVl
KQogICAgIHJldHVybiB2YWx1ZXNbc3RhdGljX2Nhc3Q8c2l6ZV90PihlbnVtZXJhdGlvblZhbHVl
KV07CiB9CiAKLUF1ZGlvTm9kZTo6QXVkaW9Ob2RlKEF1ZGlvQ29udGV4dCYgY29udGV4dCwgZmxv
YXQgc2FtcGxlUmF0ZSkKK0F1ZGlvTm9kZTo6QXVkaW9Ob2RlKEF1ZGlvQ29udGV4dEJhc2UmIGNv
bnRleHQsIGZsb2F0IHNhbXBsZVJhdGUpCiAgICAgOiBtX2lzSW5pdGlhbGl6ZWQoZmFsc2UpCiAg
ICAgLCBtX25vZGVUeXBlKE5vZGVUeXBlVW5rbm93bikKICAgICAsIG1fY29udGV4dChjb250ZXh0
KQpAQCAtMTk0LDcgKzE5NSw3IEBAIEF1ZGlvTm9kZU91dHB1dCogQXVkaW9Ob2RlOjpvdXRwdXQo
dW5zaWduZWQgaSkKIEV4Y2VwdGlvbk9yPHZvaWQ+IEF1ZGlvTm9kZTo6Y29ubmVjdChBdWRpb05v
ZGUmIGRlc3RpbmF0aW9uLCB1bnNpZ25lZCBvdXRwdXRJbmRleCwgdW5zaWduZWQgaW5wdXRJbmRl
eCkKIHsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwotICAgIEF1ZGlvQ29udGV4dDo6QXV0
b0xvY2tlciBsb2NrZXIoY29udGV4dCgpKTsKKyAgICBBdWRpb0NvbnRleHRCYXNlOjpBdXRvTG9j
a2VyIGxvY2tlcihjb250ZXh0KCkpOwogCiAgICAgQUxXQVlTX0xPRyhMT0dJREVOVElGSUVSLCBk
ZXN0aW5hdGlvbi5ub2RlVHlwZSgpLCAiLCBvdXRwdXQgPSAiLCBvdXRwdXRJbmRleCwgIiwgaW5w
dXQgPSAiLCBpbnB1dEluZGV4KTsKICAgICAKQEAgLTIwNSw3ICsyMDYsNyBAQCBFeGNlcHRpb25P
cjx2b2lkPiBBdWRpb05vZGU6OmNvbm5lY3QoQXVkaW9Ob2RlJiBkZXN0aW5hdGlvbiwgdW5zaWdu
ZWQgb3V0cHV0SW5kZQogICAgIGlmIChpbnB1dEluZGV4ID49IGRlc3RpbmF0aW9uLm51bWJlck9m
SW5wdXRzKCkpCiAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBJbmRleFNpemVFcnJvciB9Owog
Ci0gICAgaWYgKGNvbnRleHQoKSAhPSBkZXN0aW5hdGlvbi5jb250ZXh0KCkpCisgICAgaWYgKCZj
b250ZXh0KCkgIT0gJmRlc3RpbmF0aW9uLmNvbnRleHQoKSkKICAgICAgICAgcmV0dXJuIEV4Y2Vw
dGlvbiB7IFN5bnRheEVycm9yIH07CiAKICAgICBhdXRvKiBpbnB1dCA9IGRlc3RpbmF0aW9uLmlu
cHV0KGlucHV0SW5kZXgpOwpAQCAtMjIwLDcgKzIyMSw3IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IEF1
ZGlvTm9kZTo6Y29ubmVjdChBdWRpb05vZGUmIGRlc3RpbmF0aW9uLCB1bnNpZ25lZCBvdXRwdXRJ
bmRlCiAKIEV4Y2VwdGlvbk9yPHZvaWQ+IEF1ZGlvTm9kZTo6Y29ubmVjdChBdWRpb1BhcmFtJiBw
YXJhbSwgdW5zaWduZWQgb3V0cHV0SW5kZXgpCiB7Ci0gICAgQXVkaW9Db250ZXh0OjpBdXRvTG9j
a2VyIGxvY2tlcihjb250ZXh0KCkpOworICAgIEF1ZGlvQ29udGV4dEJhc2U6OkF1dG9Mb2NrZXIg
bG9ja2VyKGNvbnRleHQoKSk7CiAKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogCkBAIC0y
MjksNyArMjMwLDcgQEAgRXhjZXB0aW9uT3I8dm9pZD4gQXVkaW9Ob2RlOjpjb25uZWN0KEF1ZGlv
UGFyYW0mIHBhcmFtLCB1bnNpZ25lZCBvdXRwdXRJbmRleCkKICAgICBpZiAob3V0cHV0SW5kZXgg
Pj0gbnVtYmVyT2ZPdXRwdXRzKCkpCiAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBJbmRleFNp
emVFcnJvciB9OwogCi0gICAgaWYgKGNvbnRleHQoKSAhPSBwYXJhbS5jb250ZXh0KCkpCisgICAg
aWYgKCZjb250ZXh0KCkgIT0gJnBhcmFtLmNvbnRleHQoKSkKICAgICAgICAgcmV0dXJuIEV4Y2Vw
dGlvbiB7IFN5bnRheEVycm9yIH07CiAKICAgICBhdXRvKiBvdXRwdXQgPSB0aGlzLT5vdXRwdXQo
b3V0cHV0SW5kZXgpOwpAQCAtMjQxLDcgKzI0Miw3IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IEF1ZGlv
Tm9kZTo6Y29ubmVjdChBdWRpb1BhcmFtJiBwYXJhbSwgdW5zaWduZWQgb3V0cHV0SW5kZXgpCiBF
eGNlcHRpb25Pcjx2b2lkPiBBdWRpb05vZGU6OmRpc2Nvbm5lY3QodW5zaWduZWQgb3V0cHV0SW5k
ZXgpCiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKLSAgICBBdWRpb0NvbnRleHQ6OkF1
dG9Mb2NrZXIgbG9ja2VyKGNvbnRleHQoKSk7CisgICAgQXVkaW9Db250ZXh0QmFzZTo6QXV0b0xv
Y2tlciBsb2NrZXIoY29udGV4dCgpKTsKIAogICAgIC8vIFNhbml0eSBjaGVjayBpbnB1dCBhbmQg
b3V0cHV0IGluZGljZXMuCiAgICAgaWYgKG91dHB1dEluZGV4ID49IG51bWJlck9mT3V0cHV0cygp
KQpAQCAtMjYzLDcgKzI2NCw3IEBAIHVuc2lnbmVkIEF1ZGlvTm9kZTo6Y2hhbm5lbENvdW50KCkK
IEV4Y2VwdGlvbk9yPHZvaWQ+IEF1ZGlvTm9kZTo6c2V0Q2hhbm5lbENvdW50KHVuc2lnbmVkIGNo
YW5uZWxDb3VudCkKIHsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwotICAgIEF1ZGlvQ29u
dGV4dDo6QXV0b0xvY2tlciBsb2NrZXIoY29udGV4dCgpKTsKKyAgICBBdWRpb0NvbnRleHRCYXNl
OjpBdXRvTG9ja2VyIGxvY2tlcihjb250ZXh0KCkpOwogCiAgICAgQUxXQVlTX0xPRyhMT0dJREVO
VElGSUVSLCBjaGFubmVsQ291bnQpOwogICAgIApAQCAtMjk2LDcgKzI5Nyw3IEBAIFN0cmluZyBB
dWRpb05vZGU6OmNoYW5uZWxDb3VudE1vZGUoKQogRXhjZXB0aW9uT3I8dm9pZD4gQXVkaW9Ob2Rl
OjpzZXRDaGFubmVsQ291bnRNb2RlKGNvbnN0IFN0cmluZyYgbW9kZSkKIHsKICAgICBBU1NFUlQo
aXNNYWluVGhyZWFkKCkpOwotICAgIEF1ZGlvQ29udGV4dDo6QXV0b0xvY2tlciBsb2NrZXIoY29u
dGV4dCgpKTsKKyAgICBBdWRpb0NvbnRleHRCYXNlOjpBdXRvTG9ja2VyIGxvY2tlcihjb250ZXh0
KCkpOwogCiAgICAgQUxXQVlTX0xPRyhMT0dJREVOVElGSUVSLCBtb2RlKTsKICAgICAKQEAgLTMz
Miw3ICszMzMsNyBAQCBTdHJpbmcgQXVkaW9Ob2RlOjpjaGFubmVsSW50ZXJwcmV0YXRpb24oKQog
RXhjZXB0aW9uT3I8dm9pZD4gQXVkaW9Ob2RlOjpzZXRDaGFubmVsSW50ZXJwcmV0YXRpb24oY29u
c3QgU3RyaW5nJiBpbnRlcnByZXRhdGlvbikKIHsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkp
OwotICAgIEF1ZGlvQ29udGV4dDo6QXV0b0xvY2tlciBsb2NrZXIoY29udGV4dCgpKTsKKyAgICBB
dWRpb0NvbnRleHRCYXNlOjpBdXRvTG9ja2VyIGxvY2tlcihjb250ZXh0KCkpOwogCiAgICAgQUxX
QVlTX0xPRyhMT0dJREVOVElGSUVSLCBpbnRlcnByZXRhdGlvbik7CiAgICAgCkBAIC00MzcsNyAr
NDM4LDcgQEAgdm9pZCBBdWRpb05vZGU6OmVuYWJsZU91dHB1dHNJZk5lY2Vzc2FyeSgpCiB7CiAg
ICAgaWYgKG1faXNEaXNhYmxlZCAmJiBtX2Nvbm5lY3Rpb25SZWZDb3VudCA+IDApIHsKICAgICAg
ICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKLSAgICAgICAgQXVkaW9Db250ZXh0OjpBdXRvTG9j
a2VyIGxvY2tlcihjb250ZXh0KCkpOworICAgICAgICBBdWRpb0NvbnRleHRCYXNlOjpBdXRvTG9j
a2VyIGxvY2tlcihjb250ZXh0KCkpOwogCiAgICAgICAgIG1faXNEaXNhYmxlZCA9IGZhbHNlOwog
ICAgICAgICBmb3IgKGF1dG8mIG91dHB1dCA6IG1fb3V0cHV0cykKQEAgLTUwMSw3ICs1MDIsNyBA
QCB2b2lkIEF1ZGlvTm9kZTo6ZGVyZWYoUmVmVHlwZSByZWZUeXBlKQogICAgIC8vIEluIHRoZSBj
YXNlIG9mIHRoZSBhdWRpbyB0aHJlYWQsIHdlIG11c3QgdXNlIGEgdHJ5TG9jayB0byBhdm9pZCBn
bGl0Y2hlcy4KICAgICBib29sIGhhc0xvY2sgPSBmYWxzZTsKICAgICBib29sIG11c3RSZWxlYXNl
TG9jayA9IGZhbHNlOwotICAgIAorCiAgICAgaWYgKGNvbnRleHQoKS5pc0F1ZGlvVGhyZWFkKCkp
IHsKICAgICAgICAgLy8gUmVhbC10aW1lIGF1ZGlvIHRocmVhZCBtdXN0IG5vdCBjb250ZW5kIGxv
Y2sgKHRvIGF2b2lkIGdsaXRjaGVzKS4KICAgICAgICAgaGFzTG9jayA9IGNvbnRleHQoKS50cnlM
b2NrKG11c3RSZWxlYXNlTG9jayk7CkBAIC01MzAsNiArNTMxLDEzIEBAIHZvaWQgQXVkaW9Ob2Rl
OjpkZXJlZihSZWZUeXBlIHJlZlR5cGUpCiAgICAgICAgIGNvbnRleHQoKS5kZWxldGVNYXJrZWRO
b2RlcygpOwogfQogCitWYXJpYW50PFJlZlB0cjxBdWRpb0NvbnRleHQ+LCBSZWZQdHI8V2ViS2l0
QXVkaW9Db250ZXh0Pj4gQXVkaW9Ob2RlOjpjb250ZXh0Rm9yQmluZGluZ3MoKSBjb25zdAorewor
ICAgIGlmIChtX2NvbnRleHQtPmlzV2ViS2l0QXVkaW9Db250ZXh0KCkpCisgICAgICAgIHJldHVy
biBtYWtlUmVmUHRyKHN0YXRpY19jYXN0PFdlYktpdEF1ZGlvQ29udGV4dCY+KG1fY29udGV4dC5n
ZXQoKSkpOworICAgIHJldHVybiBtYWtlUmVmUHRyKHN0YXRpY19jYXN0PEF1ZGlvQ29udGV4dCY+
KG1fY29udGV4dC5nZXQoKSkpOworfQorCiB2b2lkIEF1ZGlvTm9kZTo6ZmluaXNoRGVyZWYoUmVm
VHlwZSByZWZUeXBlKQogewogICAgIEFTU0VSVChjb250ZXh0KCkuaXNHcmFwaE93bmVyKCkpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb05vZGUuaCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Ob2RlLmgKaW5kZXggNDIxMDEw
MDZjYzdmNTRlZTc1YWRmNzA3MmVmYmU2NGJhYzU4ZDM2ZC4uYTk4ODFiZDRiOGRiNGMzYjEwZjlk
NzcxMTY1NjI2MDBjMTgwZmM5MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJhdWRpby9BdWRpb05vZGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlv
L0F1ZGlvTm9kZS5oCkBAIC0yOSwxNSArMjksMTggQEAKICNpbmNsdWRlICJFeGNlcHRpb25Pci5o
IgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8d3RmL0xvZ2dlckhlbHBlci5o
PgorI2luY2x1ZGUgPHd0Zi9WYXJpYW50Lmg+CiAKICNkZWZpbmUgREVCVUdfQVVESU9OT0RFX1JF
RkVSRU5DRVMgMAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEF1ZGlvQ29udGV4dDsK
K2NsYXNzIEF1ZGlvQ29udGV4dEJhc2U7CiBjbGFzcyBBdWRpb05vZGVJbnB1dDsKIGNsYXNzIEF1
ZGlvTm9kZU91dHB1dDsKIGNsYXNzIEF1ZGlvUGFyYW07CitjbGFzcyBXZWJLaXRBdWRpb0NvbnRl
eHQ7CiAKIC8vIEFuIEF1ZGlvTm9kZSBpcyB0aGUgYmFzaWMgYnVpbGRpbmcgYmxvY2sgZm9yIGhh
bmRsaW5nIGF1ZGlvIHdpdGhpbiBhbiBBdWRpb0NvbnRleHQuCiAvLyBJdCBtYXkgYmUgYW4gYXVk
aW8gc291cmNlLCBhbiBpbnRlcm1lZGlhdGUgcHJvY2Vzc2luZyBtb2R1bGUsIG9yIGFuIGF1ZGlv
IGRlc3RpbmF0aW9uLgpAQCAtNTYsMTEgKzU5LDEzIEBAIGNsYXNzIEF1ZGlvTm9kZQogcHVibGlj
OgogICAgIGVudW0geyBQcm9jZXNzaW5nU2l6ZUluRnJhbWVzID0gMTI4IH07CiAKLSAgICBBdWRp
b05vZGUoQXVkaW9Db250ZXh0JiwgZmxvYXQgc2FtcGxlUmF0ZSk7CisgICAgQXVkaW9Ob2RlKEF1
ZGlvQ29udGV4dEJhc2UmLCBmbG9hdCBzYW1wbGVSYXRlKTsKICAgICB2aXJ0dWFsIH5BdWRpb05v
ZGUoKTsKIAotICAgIEF1ZGlvQ29udGV4dCYgY29udGV4dCgpIHsgcmV0dXJuIG1fY29udGV4dC5n
ZXQoKTsgfQotICAgIGNvbnN0IEF1ZGlvQ29udGV4dCYgY29udGV4dCgpIGNvbnN0IHsgcmV0dXJu
IG1fY29udGV4dC5nZXQoKTsgfQorICAgIEF1ZGlvQ29udGV4dEJhc2UmIGNvbnRleHQoKSB7IHJl
dHVybiBtX2NvbnRleHQuZ2V0KCk7IH0KKyAgICBjb25zdCBBdWRpb0NvbnRleHRCYXNlJiBjb250
ZXh0KCkgY29uc3QgeyByZXR1cm4gbV9jb250ZXh0LmdldCgpOyB9CisKKyAgICBWYXJpYW50PFJl
ZlB0cjxBdWRpb0NvbnRleHQ+LCBSZWZQdHI8V2ViS2l0QXVkaW9Db250ZXh0Pj4gY29udGV4dEZv
ckJpbmRpbmdzKCkgY29uc3Q7CiAKICAgICBlbnVtIE5vZGVUeXBlIHsKICAgICAgICAgTm9kZVR5
cGVVbmtub3duLApAQCAtMjA5LDcgKzIxNCw3IEBAIHByaXZhdGU6CiAKICAgICB2b2xhdGlsZSBi
b29sIG1faXNJbml0aWFsaXplZDsKICAgICBOb2RlVHlwZSBtX25vZGVUeXBlOwotICAgIFJlZjxB
dWRpb0NvbnRleHQ+IG1fY29udGV4dDsKKyAgICBSZWY8QXVkaW9Db250ZXh0QmFzZT4gbV9jb250
ZXh0OwogICAgIGZsb2F0IG1fc2FtcGxlUmF0ZTsKICAgICBWZWN0b3I8c3RkOjp1bmlxdWVfcHRy
PEF1ZGlvTm9kZUlucHV0Pj4gbV9pbnB1dHM7CiAgICAgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxB
dWRpb05vZGVPdXRwdXQ+PiBtX291dHB1dHM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmF1ZGlvL0F1ZGlvTm9kZS5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmF1ZGlvL0F1ZGlvTm9kZS5pZGwKaW5kZXggNzBmZWM4YzgxNDUwNTk5MWUyMGFkOGMxYzkyY2Mx
MWVlZTk2ODQyZi4uNzE5MzljODMxNzE0YmZiZjM2ZGZiYWU1MmZiYzNkM2QyMDJmNjYyMSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb05vZGUuaWRsCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Ob2RlLmlkbApAQCAtMjUs
NyArMjUsNyBAQAogWwogICAgIENvbmRpdGlvbmFsPVdFQl9BVURJTywKIF0gaW50ZXJmYWNlIEF1
ZGlvTm9kZSA6IEV2ZW50VGFyZ2V0IHsKLSAgICByZWFkb25seSBhdHRyaWJ1dGUgQXVkaW9Db250
ZXh0IGNvbnRleHQ7CisgICAgW0ltcGxlbWVudGVkQXM9Y29udGV4dEZvckJpbmRpbmdzXSByZWFk
b25seSBhdHRyaWJ1dGUgKEF1ZGlvQ29udGV4dCBvciBXZWJLaXRBdWRpb0NvbnRleHQpIGNvbnRl
eHQ7CiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIHVuc2lnbmVkIGxvbmcgbnVtYmVyT2ZJbnB1dHM7
CiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIHVuc2lnbmVkIGxvbmcgbnVtYmVyT2ZPdXRwdXRzOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvTm9kZU91
dHB1dC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb05vZGVPdXRwdXQu
aAppbmRleCA1MGE5NWVlMjA1YzEyMDMwOTNjYTVmYzMwNzE3OTkxMzUzMmQ3M2E0Li5mMDg5ODM2
MzVmM2M1NTljNzk4MWYwYmE0YTVjMTIyYjE1OWMyY2I1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvTm9kZU91dHB1dC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Ob2RlT3V0cHV0LmgKQEAgLTQ3LDcgKzQ3LDcgQEAg
cHVibGljOgogCiAgICAgLy8gQ2FuIGJlIGNhbGxlZCBmcm9tIGFueSB0aHJlYWQuCiAgICAgQXVk
aW9Ob2RlKiBub2RlKCkgY29uc3QgeyByZXR1cm4gbV9ub2RlOyB9Ci0gICAgQXVkaW9Db250ZXh0
JiBjb250ZXh0KCkgeyByZXR1cm4gbV9ub2RlLT5jb250ZXh0KCk7IH0KKyAgICBBdWRpb0NvbnRl
eHRCYXNlJiBjb250ZXh0KCkgeyByZXR1cm4gbV9ub2RlLT5jb250ZXh0KCk7IH0KICAgICAKICAg
ICAvLyBDYXVzZXMgb3VyIEF1ZGlvTm9kZSB0byBwcm9jZXNzIGlmIGl0IGhhc24ndCBhbHJlYWR5
IGZvciB0aGlzIHJlbmRlciBxdWFudHVtLgogICAgIC8vIEl0IHJldHVybnMgdGhlIGJ1cyBjb250
YWluaW5nIHRoZSBwcm9jZXNzZWQgYXVkaW8gZm9yIHRoaXMgb3V0cHV0LCByZXR1cm5pbmcgaW5Q
bGFjZUJ1cyBpZiBpbi1wbGFjZSBwcm9jZXNzaW5nIHdhcyBwb3NzaWJsZS4KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9QYXJhbS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvUGFyYW0uY3BwCmluZGV4IDI5MzQ1NjQ0NWNj
MGUxYmRhOWQwMGQyYmQ5YTJjMGQxMTEwM2RjYzkuLmQ0NzBiZjc0NmVmYjVhYjIzY2EzNTJkN2Jk
OTUzMzhjMzgxNGZlN2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVk
aW8vQXVkaW9QYXJhbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9B
dWRpb1BhcmFtLmNwcApAQCAtNDEsNyArNDEsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjb25z
dCBkb3VibGUgQXVkaW9QYXJhbTo6RGVmYXVsdFNtb290aGluZ0NvbnN0YW50ID0gMC4wNTsKIGNv
bnN0IGRvdWJsZSBBdWRpb1BhcmFtOjpTbmFwVGhyZXNob2xkID0gMC4wMDE7CiAKLUF1ZGlvUGFy
YW06OkF1ZGlvUGFyYW0oQXVkaW9Db250ZXh0JiBjb250ZXh0LCBjb25zdCBTdHJpbmcmIG5hbWUs
IGRvdWJsZSBkZWZhdWx0VmFsdWUsIGRvdWJsZSBtaW5WYWx1ZSwgZG91YmxlIG1heFZhbHVlLCB1
bnNpZ25lZCB1bml0cykKK0F1ZGlvUGFyYW06OkF1ZGlvUGFyYW0oQXVkaW9Db250ZXh0QmFzZSYg
Y29udGV4dCwgY29uc3QgU3RyaW5nJiBuYW1lLCBkb3VibGUgZGVmYXVsdFZhbHVlLCBkb3VibGUg
bWluVmFsdWUsIGRvdWJsZSBtYXhWYWx1ZSwgdW5zaWduZWQgdW5pdHMpCiAgICAgOiBBdWRpb1N1
bW1pbmdKdW5jdGlvbihjb250ZXh0KQogICAgICwgbV9uYW1lKG5hbWUpCiAgICAgLCBtX3ZhbHVl
KGRlZmF1bHRWYWx1ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVk
aW8vQXVkaW9QYXJhbS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1Bh
cmFtLmgKaW5kZXggMjI2Yzk1N2U3MDZmZTYxZDJmMjMzYzBkNWJmOTZmMjA2ODczMWM0Mi4uMTZh
MjEwOTUwNDRmNjAxZWQyN2I4OTAxYTA3NjhmMmZhOWViMTZlNiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1BhcmFtLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1BhcmFtLmgKQEAgLTMxLDYgKzMxLDcgQEAKICNpbmNs
dWRlICJBdWRpb0NvbnRleHQuaCIKICNpbmNsdWRlICJBdWRpb1BhcmFtVGltZWxpbmUuaCIKICNp
bmNsdWRlICJBdWRpb1N1bW1pbmdKdW5jdGlvbi5oIgorI2luY2x1ZGUgIldlYktpdEF1ZGlvQ29u
dGV4dC5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0Zsb2F0MzJBcnJheS5oPgogI2luY2x1
ZGUgPHN5cy90eXBlcy5oPgogI2luY2x1ZGUgPHd0Zi9Mb2dnZXJIZWxwZXIuaD4KQEAgLTUyLDcg
KzUzLDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBjb25zdCBkb3VibGUgRGVmYXVsdFNtb290aGlu
Z0NvbnN0YW50OwogICAgIHN0YXRpYyBjb25zdCBkb3VibGUgU25hcFRocmVzaG9sZDsKIAotICAg
IHN0YXRpYyBSZWY8QXVkaW9QYXJhbT4gY3JlYXRlKEF1ZGlvQ29udGV4dCYgY29udGV4dCwgY29u
c3QgU3RyaW5nJiBuYW1lLCBkb3VibGUgZGVmYXVsdFZhbHVlLCBkb3VibGUgbWluVmFsdWUsIGRv
dWJsZSBtYXhWYWx1ZSwgdW5zaWduZWQgdW5pdHMgPSAwKQorICAgIHN0YXRpYyBSZWY8QXVkaW9Q
YXJhbT4gY3JlYXRlKEF1ZGlvQ29udGV4dEJhc2UmIGNvbnRleHQsIGNvbnN0IFN0cmluZyYgbmFt
ZSwgZG91YmxlIGRlZmF1bHRWYWx1ZSwgZG91YmxlIG1pblZhbHVlLCBkb3VibGUgbWF4VmFsdWUs
IHVuc2lnbmVkIHVuaXRzID0gMCkKICAgICB7CiAgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3
IEF1ZGlvUGFyYW0oY29udGV4dCwgbmFtZSwgZGVmYXVsdFZhbHVlLCBtaW5WYWx1ZSwgbWF4VmFs
dWUsIHVuaXRzKSk7CiAgICAgfQpAQCAtMTA4LDcgKzEwOSw3IEBAIHB1YmxpYzoKICAgICB2b2lk
IGRpc2Nvbm5lY3QoQXVkaW9Ob2RlT3V0cHV0Kik7CiAKIHByb3RlY3RlZDoKLSAgICBBdWRpb1Bh
cmFtKEF1ZGlvQ29udGV4dCYsIGNvbnN0IFN0cmluZyYsIGRvdWJsZSBkZWZhdWx0VmFsdWUsIGRv
dWJsZSBtaW5WYWx1ZSwgZG91YmxlIG1heFZhbHVlLCB1bnNpZ25lZCB1bml0cyA9IDApOworICAg
IEF1ZGlvUGFyYW0oQXVkaW9Db250ZXh0QmFzZSYsIGNvbnN0IFN0cmluZyYsIGRvdWJsZSBkZWZh
dWx0VmFsdWUsIGRvdWJsZSBtaW5WYWx1ZSwgZG91YmxlIG1heFZhbHVlLCB1bnNpZ25lZCB1bml0
cyA9IDApOwogCiBwcml2YXRlOgogICAgIC8vIHNhbXBsZUFjY3VyYXRlIGNvcnJlc3BvbmRzIHRv
IGEtcmF0ZSAoYXVkaW8gcmF0ZSkgdnMuIGstcmF0ZSBpbiB0aGUgV2ViIEF1ZGlvIHNwZWNpZmlj
YXRpb24uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlv
UGFyYW1UaW1lbGluZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlv
UGFyYW1UaW1lbGluZS5jcHAKaW5kZXggMmI1OTU3MGJmNmU2MWI1NDgzZWQxYjkwN2U2NzZmNjli
ZTliMzc0Mi4uNmM0MTMwMWQ4YWQ1YTdhYmJlOGRiMGRiYTE3Y2Y4NDRiZmVmZmI2MCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1BhcmFtVGltZWxpbmUu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9QYXJhbVRpbWVs
aW5lLmNwcApAQCAtMTEzLDcgKzExMyw3IEBAIHZvaWQgQXVkaW9QYXJhbVRpbWVsaW5lOjpjYW5j
ZWxTY2hlZHVsZWRWYWx1ZXMoZmxvYXQgc3RhcnRUaW1lKQogICAgIH0KIH0KIAotZmxvYXQgQXVk
aW9QYXJhbVRpbWVsaW5lOjp2YWx1ZUZvckNvbnRleHRUaW1lKEF1ZGlvQ29udGV4dCYgY29udGV4
dCwgZmxvYXQgZGVmYXVsdFZhbHVlLCBib29sJiBoYXNWYWx1ZSkKK2Zsb2F0IEF1ZGlvUGFyYW1U
aW1lbGluZTo6dmFsdWVGb3JDb250ZXh0VGltZShBdWRpb0NvbnRleHRCYXNlJiBjb250ZXh0LCBm
bG9hdCBkZWZhdWx0VmFsdWUsIGJvb2wmIGhhc1ZhbHVlKQogewogICAgIHsKICAgICAgICAgc3Rk
Ojp1bmlxdWVfbG9jazxMb2NrPiBsb2NrKG1fZXZlbnRzTXV0ZXgsIHN0ZDo6dHJ5X3RvX2xvY2sp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1BhcmFt
VGltZWxpbmUuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9QYXJhbVRp
bWVsaW5lLmgKaW5kZXggN2MxMDk5OTU2Y2VlYmM4ZDhmNmQ1MGUwZmIwZmM5YTFlZWZkYTM0ZC4u
YTU4NjhiZGVlMTgzZmRlMmE3MDhkNDY0Y2U2MzViMjQwMGU3NjFhMiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1BhcmFtVGltZWxpbmUuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvUGFyYW1UaW1lbGluZS5oCkBAIC01
Miw3ICs1Miw3IEBAIHB1YmxpYzoKIAogICAgIC8vIGhhc1ZhbHVlIGlzIHNldCB0byB0cnVlIGlm
IGEgdmFsaWQgdGltZWxpbmUgdmFsdWUgaXMgcmV0dXJuZWQuCiAgICAgLy8gb3RoZXJ3aXNlIGRl
ZmF1bHRWYWx1ZSBpcyByZXR1cm5lZC4KLSAgICBmbG9hdCB2YWx1ZUZvckNvbnRleHRUaW1lKEF1
ZGlvQ29udGV4dCYsIGZsb2F0IGRlZmF1bHRWYWx1ZSwgYm9vbCYgaGFzVmFsdWUpOworICAgIGZs
b2F0IHZhbHVlRm9yQ29udGV4dFRpbWUoQXVkaW9Db250ZXh0QmFzZSYsIGZsb2F0IGRlZmF1bHRW
YWx1ZSwgYm9vbCYgaGFzVmFsdWUpOwogCiAgICAgLy8gR2l2ZW4gdGhlIHRpbWUgcmFuZ2UsIGNh
bGN1bGF0ZXMgcGFyYW1ldGVyIHZhbHVlcyBpbnRvIHRoZSB2YWx1ZXMgYnVmZmVyCiAgICAgLy8g
YW5kIHJldHVybnMgdGhlIGxhc3QgcGFyYW1ldGVyIHZhbHVlIGNhbGN1bGF0ZWQgZm9yICJ2YWx1
ZXMiIG9yIHRoZSBkZWZhdWx0VmFsdWUgaWYgbm9uZSB3ZXJlIGNhbGN1bGF0ZWQuCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvU2NoZWR1bGVkU291cmNl
Tm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvU2NoZWR1bGVk
U291cmNlTm9kZS5jcHAKaW5kZXggMGY3MjY3NmZjNzQzYzRjZTI0MWFlZTNjOTBkMDI4ZjZhOTUy
NzAyMy4uN2MyODIzN2EwYmQwMzVlNGMzYWI3YmE1MTM3NTMzYmQ5MTVhN2U2MSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1NjaGVkdWxlZFNvdXJjZU5v
ZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9TY2hlZHVs
ZWRTb3VyY2VOb2RlLmNwcApAQCAtNDksNyArNDksNyBAQCBXVEZfTUFLRV9JU09fQUxMT0NBVEVE
X0lNUEwoQXVkaW9TY2hlZHVsZWRTb3VyY2VOb2RlKTsKIAogY29uc3QgZG91YmxlIEF1ZGlvU2No
ZWR1bGVkU291cmNlTm9kZTo6VW5rbm93blRpbWUgPSAtMTsKIAotQXVkaW9TY2hlZHVsZWRTb3Vy
Y2VOb2RlOjpBdWRpb1NjaGVkdWxlZFNvdXJjZU5vZGUoQXVkaW9Db250ZXh0JiBjb250ZXh0LCBm
bG9hdCBzYW1wbGVSYXRlKQorQXVkaW9TY2hlZHVsZWRTb3VyY2VOb2RlOjpBdWRpb1NjaGVkdWxl
ZFNvdXJjZU5vZGUoQXVkaW9Db250ZXh0QmFzZSYgY29udGV4dCwgZmxvYXQgc2FtcGxlUmF0ZSkK
ICAgICA6IEF1ZGlvTm9kZShjb250ZXh0LCBzYW1wbGVSYXRlKQogICAgICwgQWN0aXZlRE9NT2Jq
ZWN0KGNvbnRleHQuc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKQogICAgICwgbV9lbmRUaW1lKFVu
a25vd25UaW1lKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9B
dWRpb1NjaGVkdWxlZFNvdXJjZU5vZGUuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVk
aW8vQXVkaW9TY2hlZHVsZWRTb3VyY2VOb2RlLmgKaW5kZXggOGNhZGJlMTBhZmQzYTRkN2VjZTIw
MjIwMjQ0Mzg3ZjRjZTE0YzJlNC4uYjRkOTU4ODBjMWRmMzY2ZjgyMWUxYWJmY2ZjYTc3ZDc2MTEw
ZWEzZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1Nj
aGVkdWxlZFNvdXJjZU5vZGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlv
L0F1ZGlvU2NoZWR1bGVkU291cmNlTm9kZS5oCkBAIC01Myw3ICs1Myw3IEBAIHB1YmxpYzoKICAg
ICAgICAgRklOSVNIRURfU1RBVEUgPSAzCiAgICAgfTsKICAgICAKLSAgICBBdWRpb1NjaGVkdWxl
ZFNvdXJjZU5vZGUoQXVkaW9Db250ZXh0JiwgZmxvYXQgc2FtcGxlUmF0ZSk7CisgICAgQXVkaW9T
Y2hlZHVsZWRTb3VyY2VOb2RlKEF1ZGlvQ29udGV4dEJhc2UmLCBmbG9hdCBzYW1wbGVSYXRlKTsK
IAogICAgIEV4Y2VwdGlvbk9yPHZvaWQ+IHN0YXJ0TGF0ZXIoZG91YmxlIHdoZW4pOwogICAgIEV4
Y2VwdGlvbk9yPHZvaWQ+IHN0b3BMYXRlcihkb3VibGUgd2hlbik7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvU3VtbWluZ0p1bmN0aW9uLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9TdW1taW5nSnVuY3Rpb24uY3BwCmlu
ZGV4IGVlNjAwYTYyOWExYjg2OWNkOWE1YjNkMzcyYWU0NzZhM2UxMjdmYjAuLmRkNjRmZDNlYTgx
MzExZjAwZTA4YzNjYTQxZDc0MjhmMWYxZjM4NzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViYXVkaW8vQXVkaW9TdW1taW5nSnVuY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9TdW1taW5nSnVuY3Rpb24uY3BwCkBAIC0zNCw3
ICszNCw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotQXVkaW9TdW1taW5nSnVuY3Rpb246
OkF1ZGlvU3VtbWluZ0p1bmN0aW9uKEF1ZGlvQ29udGV4dCYgY29udGV4dCkKK0F1ZGlvU3VtbWlu
Z0p1bmN0aW9uOjpBdWRpb1N1bW1pbmdKdW5jdGlvbihBdWRpb0NvbnRleHRCYXNlJiBjb250ZXh0
KQogICAgIDogbV9jb250ZXh0KGNvbnRleHQpCiAgICAgLCBtX3JlbmRlcmluZ1N0YXRlTmVlZFVw
ZGF0aW5nKGZhbHNlKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJh
dWRpby9BdWRpb1N1bW1pbmdKdW5jdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJh
dWRpby9BdWRpb1N1bW1pbmdKdW5jdGlvbi5oCmluZGV4IGM5NGZmNmQ2YTVhZWQxMTEwMjA4YzQ3
NjQzODNkN2U1NmZkODQ2M2IuLjRjYmY4YWU5ZmI5NTFiNzgyMDc2YjBjYjUyNjExNmMxOWQ0YWVj
OWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9TdW1t
aW5nSnVuY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlv
U3VtbWluZ0p1bmN0aW9uLmgKQEAgLTMwLDE4ICszMCwxOCBAQAogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKLWNsYXNzIEF1ZGlvQ29udGV4dDsKK2NsYXNzIEF1ZGlvQ29udGV4dEJhc2U7CiBjbGFz
cyBBdWRpb05vZGVPdXRwdXQ7CiAKIC8vIEFuIEF1ZGlvU3VtbWluZ0p1bmN0aW9uIHJlcHJlc2Vu
dHMgYSBwb2ludCB3aGVyZSB6ZXJvLCBvbmUsIG9yIG1vcmUgQXVkaW9Ob2RlT3V0cHV0cyBjb25u
ZWN0LgogCiBjbGFzcyBBdWRpb1N1bW1pbmdKdW5jdGlvbiB7CiBwdWJsaWM6Ci0gICAgZXhwbGlj
aXQgQXVkaW9TdW1taW5nSnVuY3Rpb24oQXVkaW9Db250ZXh0Jik7CisgICAgZXhwbGljaXQgQXVk
aW9TdW1taW5nSnVuY3Rpb24oQXVkaW9Db250ZXh0QmFzZSYpOwogICAgIHZpcnR1YWwgfkF1ZGlv
U3VtbWluZ0p1bmN0aW9uKCk7CiAKICAgICAvLyBDYW4gYmUgY2FsbGVkIGZyb20gYW55IHRocmVh
ZC4KLSAgICBBdWRpb0NvbnRleHQmIGNvbnRleHQoKSB7IHJldHVybiBtX2NvbnRleHQuZ2V0KCk7
IH0KKyAgICBBdWRpb0NvbnRleHRCYXNlJiBjb250ZXh0KCkgeyByZXR1cm4gbV9jb250ZXh0OyB9
CiAKICAgICAvLyBUaGlzIG11c3QgYmUgY2FsbGVkIHdoZW5ldmVyIHdlIG1vZGlmeSBtX291dHB1
dHMuCiAgICAgdm9pZCBjaGFuZ2VkT3V0cHV0cygpOwpAQCAtNjAsNyArNjAsNyBAQCBwdWJsaWM6
CiAgICAgdmlydHVhbCB2b2lkIGRpZFVwZGF0ZSgpID0gMDsKIAogcHJvdGVjdGVkOgotICAgIFJl
ZjxBdWRpb0NvbnRleHQ+IG1fY29udGV4dDsKKyAgICBSZWY8QXVkaW9Db250ZXh0QmFzZT4gbV9j
b250ZXh0OwogCiAgICAgLy8gbV9vdXRwdXRzIGNvbnRhaW5zIHRoZSBBdWRpb05vZGVPdXRwdXRz
IHJlcHJlc2VudGluZyBjdXJyZW50IGNvbm5lY3Rpb25zIHdoaWNoIGFyZSBub3QgZGlzYWJsZWQu
CiAgICAgLy8gVGhlIHJlbmRlcmluZyBjb2RlIHNob3VsZCBuZXZlciB1c2UgdGhpcyBkaXJlY3Rs
eSwgYnV0IGluc3RlYWQgdXNlcyBtX3JlbmRlcmluZ091dHB1dHMuCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0JpcXVhZEZpbHRlck5vZGUuY3BwIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9CaXF1YWRGaWx0ZXJOb2RlLmNwcAppbmRleCA0YTgy
NTVlNmYwYWYwNzY3MTM4ZTQ2ODk4ZjhiNjM2YWIyZDc1NmU1Li5kZGUwNzczZDQ3M2QyNzIyYTVi
NTNkYzg2OTA2ZDM5MzcwY2JmZjQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmF1ZGlvL0JpcXVhZEZpbHRlck5vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViYXVkaW8vQmlxdWFkRmlsdGVyTm9kZS5jcHAKQEAgLTMzLDcgKzMzLDcgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogCiBXVEZfTUFLRV9JU09fQUxMT0NBVEVEX0lNUEwoQmlxdWFkRmlsdGVy
Tm9kZSk7CiAKLUJpcXVhZEZpbHRlck5vZGU6OkJpcXVhZEZpbHRlck5vZGUoQXVkaW9Db250ZXh0
JiBjb250ZXh0LCBmbG9hdCBzYW1wbGVSYXRlKQorQmlxdWFkRmlsdGVyTm9kZTo6QmlxdWFkRmls
dGVyTm9kZShBdWRpb0NvbnRleHRCYXNlJiBjb250ZXh0LCBmbG9hdCBzYW1wbGVSYXRlKQogICAg
IDogQXVkaW9CYXNpY1Byb2Nlc3Nvck5vZGUoY29udGV4dCwgc2FtcGxlUmF0ZSkKIHsKICAgICBz
ZXROb2RlVHlwZShOb2RlVHlwZUJpcXVhZEZpbHRlcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0JpcXVhZEZpbHRlck5vZGUuaCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViYXVkaW8vQmlxdWFkRmlsdGVyTm9kZS5oCmluZGV4IDgwOTRkOTFlYWIzYjky
YjE0OGE4NjI0MDkzMjZmNjVlZDliOTAxM2MuLmFjOGQ5NDdhMTBmN2FlNmEzM2YwM2EyZDA5ODQw
YzhlNmMxZTU0Y2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8v
QmlxdWFkRmlsdGVyTm9kZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8v
QmlxdWFkRmlsdGVyTm9kZS5oCkBAIC0zNCw3ICszNCw3IEBAIGNsYXNzIEF1ZGlvUGFyYW07CiBj
bGFzcyBCaXF1YWRGaWx0ZXJOb2RlIGZpbmFsIDogcHVibGljIEF1ZGlvQmFzaWNQcm9jZXNzb3JO
b2RlIHsKICAgICBXVEZfTUFLRV9JU09fQUxMT0NBVEVEKEJpcXVhZEZpbHRlck5vZGUpOwogcHVi
bGljOgotICAgIHN0YXRpYyBSZWY8QmlxdWFkRmlsdGVyTm9kZT4gY3JlYXRlKEF1ZGlvQ29udGV4
dCYgY29udGV4dCwgZmxvYXQgc2FtcGxlUmF0ZSkKKyAgICBzdGF0aWMgUmVmPEJpcXVhZEZpbHRl
ck5vZGU+IGNyZWF0ZShBdWRpb0NvbnRleHRCYXNlJiBjb250ZXh0LCBmbG9hdCBzYW1wbGVSYXRl
KQogICAgIHsKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQmlxdWFkRmlsdGVyTm9kZShj
b250ZXh0LCBzYW1wbGVSYXRlKSk7CiAgICAgfQpAQCAtNTIsNyArNTIsNyBAQCBwdWJsaWM6CiAg
ICAgdm9pZCBnZXRGcmVxdWVuY3lSZXNwb25zZShjb25zdCBSZWZQdHI8RmxvYXQzMkFycmF5PiYg
ZnJlcXVlbmN5SHosIGNvbnN0IFJlZlB0cjxGbG9hdDMyQXJyYXk+JiBtYWdSZXNwb25zZSwgY29u
c3QgUmVmUHRyPEZsb2F0MzJBcnJheT4mIHBoYXNlUmVzcG9uc2UpOwogCiBwcml2YXRlOgotICAg
IEJpcXVhZEZpbHRlck5vZGUoQXVkaW9Db250ZXh0JiwgZmxvYXQgc2FtcGxlUmF0ZSk7CisgICAg
QmlxdWFkRmlsdGVyTm9kZShBdWRpb0NvbnRleHRCYXNlJiwgZmxvYXQgc2FtcGxlUmF0ZSk7CiAK
ICAgICBCaXF1YWRQcm9jZXNzb3IqIGJpcXVhZFByb2Nlc3NvcigpIHsgcmV0dXJuIHN0YXRpY19j
YXN0PEJpcXVhZFByb2Nlc3Nvcio+KHByb2Nlc3NvcigpKTsgfQogfTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQmlxdWFkUHJvY2Vzc29yLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQmlxdWFkUHJvY2Vzc29yLmNwcAppbmRleCBlODRi
OTgwMzU2NzBmYjFkY2MzMjcwOTY2M2QyYjM5MDU1MmU2NWViLi4yZjYwNjdhNzJkY2VjMzNjM2Yw
ZDBkZTlkOTdlNGI2OTc2OTYyNmE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmF1ZGlvL0JpcXVhZFByb2Nlc3Nvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJhdWRpby9CaXF1YWRQcm9jZXNzb3IuY3BwCkBAIC0zMiw3ICszMiw3IEBACiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKICAgICAKLUJpcXVhZFByb2Nlc3Nvcjo6QmlxdWFkUHJvY2Vzc29yKEF1
ZGlvQ29udGV4dCYgY29udGV4dCwgZmxvYXQgc2FtcGxlUmF0ZSwgc2l6ZV90IG51bWJlck9mQ2hh
bm5lbHMsIGJvb2wgYXV0b0luaXRpYWxpemUpCitCaXF1YWRQcm9jZXNzb3I6OkJpcXVhZFByb2Nl
c3NvcihBdWRpb0NvbnRleHRCYXNlJiBjb250ZXh0LCBmbG9hdCBzYW1wbGVSYXRlLCBzaXplX3Qg
bnVtYmVyT2ZDaGFubmVscywgYm9vbCBhdXRvSW5pdGlhbGl6ZSkKICAgICA6IEF1ZGlvRFNQS2Vy
bmVsUHJvY2Vzc29yKHNhbXBsZVJhdGUsIG51bWJlck9mQ2hhbm5lbHMpCiAgICAgLCBtX3R5cGUo
QmlxdWFkRmlsdGVyVHlwZTo6TG93cGFzcykKICAgICAsIG1fcGFyYW1ldGVyMSgwKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9CaXF1YWRQcm9jZXNzb3IuaCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQmlxdWFkUHJvY2Vzc29yLmgKaW5kZXgg
YWRiZWVjNDMwMjVhZjAzYWYxN2UxMTUxYWJiZWZmZWVlZTc3ZjYzMi4uZGMzMDZhYjUxN2IzMjRi
YjFjYzU2YTI4OGQwZTQ5ZjFhOGU0ZTkwNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJhdWRpby9CaXF1YWRQcm9jZXNzb3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmF1ZGlvL0JpcXVhZFByb2Nlc3Nvci5oCkBAIC01MCw3ICs1MCw3IEBAIGVudW0gY2xh
c3MgQmlxdWFkRmlsdGVyVHlwZSB7CiBjbGFzcyBCaXF1YWRQcm9jZXNzb3IgZmluYWwgOiBwdWJs
aWMgQXVkaW9EU1BLZXJuZWxQcm9jZXNzb3IgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVE
OwogcHVibGljOgotICAgIEJpcXVhZFByb2Nlc3NvcihBdWRpb0NvbnRleHQmLCBmbG9hdCBzYW1w
bGVSYXRlLCBzaXplX3QgbnVtYmVyT2ZDaGFubmVscywgYm9vbCBhdXRvSW5pdGlhbGl6ZSk7Cisg
ICAgQmlxdWFkUHJvY2Vzc29yKEF1ZGlvQ29udGV4dEJhc2UmLCBmbG9hdCBzYW1wbGVSYXRlLCBz
aXplX3QgbnVtYmVyT2ZDaGFubmVscywgYm9vbCBhdXRvSW5pdGlhbGl6ZSk7CiAKICAgICB2aXJ0
dWFsIH5CaXF1YWRQcm9jZXNzb3IoKTsKICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViYXVkaW8vQ2hhbm5lbE1lcmdlck5vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJhdWRpby9DaGFubmVsTWVyZ2VyTm9kZS5jcHAKaW5kZXggZGY1MGYyNjg3MzY4
YWE1YzMyOTU0MTQ4MTUwNzc3YTAyOTE3MzJkOC4uZGUyOGFlYTdkMmM0MzQyODk2YjEwNGJhODk0
MWZkZWI3OThhZGMzZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRp
by9DaGFubmVsTWVyZ2VyTm9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJh
dWRpby9DaGFubmVsTWVyZ2VyTm9kZS5jcHAKQEAgLTQzLDcgKzQzLDcgQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogCiBXVEZfTUFLRV9JU09fQUxMT0NBVEVEX0lNUEwoQ2hhbm5lbE1lcmdlck5vZGUp
OwogCi1SZWZQdHI8Q2hhbm5lbE1lcmdlck5vZGU+IENoYW5uZWxNZXJnZXJOb2RlOjpjcmVhdGUo
QXVkaW9Db250ZXh0JiBjb250ZXh0LCBmbG9hdCBzYW1wbGVSYXRlLCB1bnNpZ25lZCBudW1iZXJP
ZklucHV0cykKK1JlZlB0cjxDaGFubmVsTWVyZ2VyTm9kZT4gQ2hhbm5lbE1lcmdlck5vZGU6OmNy
ZWF0ZShBdWRpb0NvbnRleHRCYXNlJiBjb250ZXh0LCBmbG9hdCBzYW1wbGVSYXRlLCB1bnNpZ25l
ZCBudW1iZXJPZklucHV0cykKIHsKICAgICBpZiAoIW51bWJlck9mSW5wdXRzIHx8IG51bWJlck9m
SW5wdXRzID4gQXVkaW9Db250ZXh0OjptYXhOdW1iZXJPZkNoYW5uZWxzKCkpCiAgICAgICAgIHJl
dHVybiBudWxscHRyOwpAQCAtNTEsNyArNTEsNyBAQCBSZWZQdHI8Q2hhbm5lbE1lcmdlck5vZGU+
IENoYW5uZWxNZXJnZXJOb2RlOjpjcmVhdGUoQXVkaW9Db250ZXh0JiBjb250ZXh0LCBmbG9hdAog
ICAgIHJldHVybiBhZG9wdFJlZigqbmV3IENoYW5uZWxNZXJnZXJOb2RlKGNvbnRleHQsIHNhbXBs
ZVJhdGUsIG51bWJlck9mSW5wdXRzKSk7ICAgICAgCiB9CiAKLUNoYW5uZWxNZXJnZXJOb2RlOjpD
aGFubmVsTWVyZ2VyTm9kZShBdWRpb0NvbnRleHQmIGNvbnRleHQsIGZsb2F0IHNhbXBsZVJhdGUs
IHVuc2lnbmVkIG51bWJlck9mSW5wdXRzKQorQ2hhbm5lbE1lcmdlck5vZGU6OkNoYW5uZWxNZXJn
ZXJOb2RlKEF1ZGlvQ29udGV4dEJhc2UmIGNvbnRleHQsIGZsb2F0IHNhbXBsZVJhdGUsIHVuc2ln
bmVkIG51bWJlck9mSW5wdXRzKQogICAgIDogQXVkaW9Ob2RlKGNvbnRleHQsIHNhbXBsZVJhdGUp
CiAgICAgLCBtX2Rlc2lyZWROdW1iZXJPZk91dHB1dENoYW5uZWxzKERlZmF1bHROdW1iZXJPZk91
dHB1dENoYW5uZWxzKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJh
dWRpby9DaGFubmVsTWVyZ2VyTm9kZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRp
by9DaGFubmVsTWVyZ2VyTm9kZS5oCmluZGV4IDY2NjM2ZWVkNmY3ZWU4NTUxZTkyY2M4NzdhMDRj
NWNjM2U1ZmRmMWQuLjYyOTc2ZTA1MDczNDFmZjkyNjYwYTZhZjBkYjU4YWViYTU1NzY4MWEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQ2hhbm5lbE1lcmdlck5v
ZGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0NoYW5uZWxNZXJnZXJO
b2RlLmgKQEAgLTM3LDcgKzM3LDcgQEAgY2xhc3MgQXVkaW9Db250ZXh0OwogY2xhc3MgQ2hhbm5l
bE1lcmdlck5vZGUgZmluYWwgOiBwdWJsaWMgQXVkaW9Ob2RlIHsKICAgICBXVEZfTUFLRV9JU09f
QUxMT0NBVEVEKENoYW5uZWxNZXJnZXJOb2RlKTsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmUHRy
PENoYW5uZWxNZXJnZXJOb2RlPiBjcmVhdGUoQXVkaW9Db250ZXh0JiwgZmxvYXQgc2FtcGxlUmF0
ZSwgdW5zaWduZWQgbnVtYmVyT2ZJbnB1dHMpOworICAgIHN0YXRpYyBSZWZQdHI8Q2hhbm5lbE1l
cmdlck5vZGU+IGNyZWF0ZShBdWRpb0NvbnRleHRCYXNlJiwgZmxvYXQgc2FtcGxlUmF0ZSwgdW5z
aWduZWQgbnVtYmVyT2ZJbnB1dHMpOwogCiAgICAgLy8gQXVkaW9Ob2RlCiAgICAgdm9pZCBwcm9j
ZXNzKHNpemVfdCBmcmFtZXNUb1Byb2Nlc3MpIG92ZXJyaWRlOwpAQCAtNTIsNyArNTIsNyBAQCBw
cml2YXRlOgogICAgIGRvdWJsZSB0YWlsVGltZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIDA7
IH0KICAgICBkb3VibGUgbGF0ZW5jeVRpbWUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiAwOyB9
CiAKLSAgICBDaGFubmVsTWVyZ2VyTm9kZShBdWRpb0NvbnRleHQmLCBmbG9hdCBzYW1wbGVSYXRl
LCB1bnNpZ25lZCBudW1iZXJPZklucHV0cyk7CisgICAgQ2hhbm5lbE1lcmdlck5vZGUoQXVkaW9D
b250ZXh0QmFzZSYsIGZsb2F0IHNhbXBsZVJhdGUsIHVuc2lnbmVkIG51bWJlck9mSW5wdXRzKTsK
IH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViYXVkaW8vQ2hhbm5lbFNwbGl0dGVyTm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmF1ZGlvL0NoYW5uZWxTcGxpdHRlck5vZGUuY3BwCmluZGV4IDgyZjY5YTA0
Zjk5OTI2MWQ1OGMxNTJiZmM2MDJhMzY2MDk2MDkxYjkuLmY1NTUzZDBjODM1YTM5MmQzY2VlZGU5
MmVlNWY4YjhjOTI4ZjlkYjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
YXVkaW8vQ2hhbm5lbFNwbGl0dGVyTm9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJhdWRpby9DaGFubmVsU3BsaXR0ZXJOb2RlLmNwcApAQCAtMzcsNyArMzcsNyBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKIFdURl9NQUtFX0lTT19BTExPQ0FURURfSU1QTChDaGFubmVsU3Bs
aXR0ZXJOb2RlKTsKICAgICAKLVJlZlB0cjxDaGFubmVsU3BsaXR0ZXJOb2RlPiBDaGFubmVsU3Bs
aXR0ZXJOb2RlOjpjcmVhdGUoQXVkaW9Db250ZXh0JiBjb250ZXh0LCBmbG9hdCBzYW1wbGVSYXRl
LCB1bnNpZ25lZCBudW1iZXJPZk91dHB1dHMpCitSZWZQdHI8Q2hhbm5lbFNwbGl0dGVyTm9kZT4g
Q2hhbm5lbFNwbGl0dGVyTm9kZTo6Y3JlYXRlKEF1ZGlvQ29udGV4dEJhc2UmIGNvbnRleHQsIGZs
b2F0IHNhbXBsZVJhdGUsIHVuc2lnbmVkIG51bWJlck9mT3V0cHV0cykKIHsKICAgICBpZiAoIW51
bWJlck9mT3V0cHV0cyB8fCBudW1iZXJPZk91dHB1dHMgPiBBdWRpb0NvbnRleHQ6Om1heE51bWJl
ck9mQ2hhbm5lbHMoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC00NSw3ICs0NSw3IEBA
IFJlZlB0cjxDaGFubmVsU3BsaXR0ZXJOb2RlPiBDaGFubmVsU3BsaXR0ZXJOb2RlOjpjcmVhdGUo
QXVkaW9Db250ZXh0JiBjb250ZXh0LCBmCiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQ2hhbm5l
bFNwbGl0dGVyTm9kZShjb250ZXh0LCBzYW1wbGVSYXRlLCBudW1iZXJPZk91dHB1dHMpKTsgICAg
ICAKIH0KIAotQ2hhbm5lbFNwbGl0dGVyTm9kZTo6Q2hhbm5lbFNwbGl0dGVyTm9kZShBdWRpb0Nv
bnRleHQmIGNvbnRleHQsIGZsb2F0IHNhbXBsZVJhdGUsIHVuc2lnbmVkIG51bWJlck9mT3V0cHV0
cykKK0NoYW5uZWxTcGxpdHRlck5vZGU6OkNoYW5uZWxTcGxpdHRlck5vZGUoQXVkaW9Db250ZXh0
QmFzZSYgY29udGV4dCwgZmxvYXQgc2FtcGxlUmF0ZSwgdW5zaWduZWQgbnVtYmVyT2ZPdXRwdXRz
KQogICAgIDogQXVkaW9Ob2RlKGNvbnRleHQsIHNhbXBsZVJhdGUpCiB7CiAgICAgc2V0Tm9kZVR5
cGUoTm9kZVR5cGVDaGFubmVsU3BsaXR0ZXIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJhdWRpby9DaGFubmVsU3BsaXR0ZXJOb2RlLmggYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmF1ZGlvL0NoYW5uZWxTcGxpdHRlck5vZGUuaAppbmRleCA4ZDk4MzI4MTIzN2Rk
MWQwZmNmMTQ3MGEzOGIwMDNmZTQyNjZiNTFlLi4xM2Q4ZDk4MGRhYTc3MzMwNGYxNjkwNWU5NTQ4
YTQyMGFlM2VlNDVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlv
L0NoYW5uZWxTcGxpdHRlck5vZGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1
ZGlvL0NoYW5uZWxTcGxpdHRlck5vZGUuaApAQCAtMzMsNyArMzMsNyBAQCBjbGFzcyBBdWRpb0Nv
bnRleHQ7CiBjbGFzcyBDaGFubmVsU3BsaXR0ZXJOb2RlIGZpbmFsIDogcHVibGljIEF1ZGlvTm9k
ZSB7CiAgICAgV1RGX01BS0VfSVNPX0FMTE9DQVRFRChDaGFubmVsU3BsaXR0ZXJOb2RlKTsKIHB1
YmxpYzoKLSAgICBzdGF0aWMgUmVmUHRyPENoYW5uZWxTcGxpdHRlck5vZGU+IGNyZWF0ZShBdWRp
b0NvbnRleHQmLCBmbG9hdCBzYW1wbGVSYXRlLCB1bnNpZ25lZCBudW1iZXJPZk91dHB1dHMpOwor
ICAgIHN0YXRpYyBSZWZQdHI8Q2hhbm5lbFNwbGl0dGVyTm9kZT4gY3JlYXRlKEF1ZGlvQ29udGV4
dEJhc2UmLCBmbG9hdCBzYW1wbGVSYXRlLCB1bnNpZ25lZCBudW1iZXJPZk91dHB1dHMpOwogCiAg
ICAgLy8gQXVkaW9Ob2RlCiAgICAgdm9pZCBwcm9jZXNzKHNpemVfdCBmcmFtZXNUb1Byb2Nlc3Mp
IG92ZXJyaWRlOwpAQCAtNDMsNyArNDMsNyBAQCBwcml2YXRlOgogICAgIGRvdWJsZSB0YWlsVGlt
ZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIDA7IH0KICAgICBkb3VibGUgbGF0ZW5jeVRpbWUo
KSBjb25zdCBvdmVycmlkZSB7IHJldHVybiAwOyB9CiAKLSAgICBDaGFubmVsU3BsaXR0ZXJOb2Rl
KEF1ZGlvQ29udGV4dCYsIGZsb2F0IHNhbXBsZVJhdGUsIHVuc2lnbmVkIG51bWJlck9mT3V0cHV0
cyk7CisgICAgQ2hhbm5lbFNwbGl0dGVyTm9kZShBdWRpb0NvbnRleHRCYXNlJiwgZmxvYXQgc2Ft
cGxlUmF0ZSwgdW5zaWduZWQgbnVtYmVyT2ZPdXRwdXRzKTsKIH07CiAKIH0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQ29u
dm9sdmVyTm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0NvbnZvbHZl
ck5vZGUuY3BwCmluZGV4IGNjOTcyZjEwZGJkN2FiZmY3M2Y3OTNjZmFjYzdjNDAwOGE3MjM0NDcu
LmUxZjVlYjgxNTYwZWMyZTkyYjgzNTgzNmM4NGIxODE5NDMzYWZhNGYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQ29udm9sdmVyTm9kZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9Db252b2x2ZXJOb2RlLmNwcApAQCAtNDcsNyAr
NDcsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFdURl9NQUtFX0lTT19BTExPQ0FURURfSU1Q
TChDb252b2x2ZXJOb2RlKTsKIAotQ29udm9sdmVyTm9kZTo6Q29udm9sdmVyTm9kZShBdWRpb0Nv
bnRleHQmIGNvbnRleHQsIGZsb2F0IHNhbXBsZVJhdGUpCitDb252b2x2ZXJOb2RlOjpDb252b2x2
ZXJOb2RlKEF1ZGlvQ29udGV4dEJhc2UmIGNvbnRleHQsIGZsb2F0IHNhbXBsZVJhdGUpCiAgICAg
OiBBdWRpb05vZGUoY29udGV4dCwgc2FtcGxlUmF0ZSkKIHsKICAgICBzZXROb2RlVHlwZShOb2Rl
VHlwZUNvbnZvbHZlcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1
ZGlvL0NvbnZvbHZlck5vZGUuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQ29u
dm9sdmVyTm9kZS5oCmluZGV4IDY0YmZlYmVkMmQ4N2U3NGMzM2FkZmFjOTM0OWQxYjkyNmUwZjY2
YzMuLjMxY2VjMWVjYzdmMGUwMDQ1ZWZhNzRmYmVmMzYwNjhkZGJiMWZkZmMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQ29udm9sdmVyTm9kZS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQ29udm9sdmVyTm9kZS5oCkBAIC0zNSw3ICsz
NSw3IEBAIGNsYXNzIFJldmVyYjsKIGNsYXNzIENvbnZvbHZlck5vZGUgZmluYWwgOiBwdWJsaWMg
QXVkaW9Ob2RlIHsKICAgICBXVEZfTUFLRV9JU09fQUxMT0NBVEVEKENvbnZvbHZlck5vZGUpOwog
cHVibGljOgotICAgIHN0YXRpYyBSZWY8Q29udm9sdmVyTm9kZT4gY3JlYXRlKEF1ZGlvQ29udGV4
dCYgY29udGV4dCwgZmxvYXQgc2FtcGxlUmF0ZSkKKyAgICBzdGF0aWMgUmVmPENvbnZvbHZlck5v
ZGU+IGNyZWF0ZShBdWRpb0NvbnRleHRCYXNlJiBjb250ZXh0LCBmbG9hdCBzYW1wbGVSYXRlKQog
ICAgIHsKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQ29udm9sdmVyTm9kZShjb250ZXh0
LCBzYW1wbGVSYXRlKSk7CiAgICAgfQpAQCAtNDksNyArNDksNyBAQCBwdWJsaWM6CiAgICAgdm9p
ZCBzZXROb3JtYWxpemUoYm9vbCBub3JtYWxpemUpIHsgbV9ub3JtYWxpemUgPSBub3JtYWxpemU7
IH0KIAogcHJpdmF0ZToKLSAgICBDb252b2x2ZXJOb2RlKEF1ZGlvQ29udGV4dCYsIGZsb2F0IHNh
bXBsZVJhdGUpOworICAgIENvbnZvbHZlck5vZGUoQXVkaW9Db250ZXh0QmFzZSYsIGZsb2F0IHNh
bXBsZVJhdGUpOwogCiAgICAgZG91YmxlIHRhaWxUaW1lKCkgY29uc3QgZmluYWw7CiAgICAgZG91
YmxlIGxhdGVuY3lUaW1lKCkgY29uc3QgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmF1ZGlvL0RlZmF1bHRBdWRpb0Rlc3RpbmF0aW9uTm9kZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0RlZmF1bHRBdWRpb0Rlc3RpbmF0aW9uTm9kZS5j
cHAKaW5kZXggMTc1OWFlNGE1YTYzNWJjMDU4ZTMwYzM2NWMxMzQ0ZmJiMzk3OWUxNS4uMDdlYjlh
NDFiNWNjOGU4MzkwOWFlNGI2ZTYzNGUzY2E5YmY1MzdlYSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJhdWRpby9EZWZhdWx0QXVkaW9EZXN0aW5hdGlvbk5vZGUuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vRGVmYXVsdEF1ZGlvRGVzdGluYXRp
b25Ob2RlLmNwcApAQCAtNDMsNyArNDMsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFdURl9N
QUtFX0lTT19BTExPQ0FURURfSU1QTChEZWZhdWx0QXVkaW9EZXN0aW5hdGlvbk5vZGUpOwogICAg
IAotRGVmYXVsdEF1ZGlvRGVzdGluYXRpb25Ob2RlOjpEZWZhdWx0QXVkaW9EZXN0aW5hdGlvbk5v
ZGUoQXVkaW9Db250ZXh0JiBjb250ZXh0KQorRGVmYXVsdEF1ZGlvRGVzdGluYXRpb25Ob2RlOjpE
ZWZhdWx0QXVkaW9EZXN0aW5hdGlvbk5vZGUoQXVkaW9Db250ZXh0QmFzZSYgY29udGV4dCkKICAg
ICA6IEF1ZGlvRGVzdGluYXRpb25Ob2RlKGNvbnRleHQsIEF1ZGlvRGVzdGluYXRpb246OmhhcmR3
YXJlU2FtcGxlUmF0ZSgpKQogewogICAgIC8vIE5vZGUtc3BlY2lmaWMgZGVmYXVsdCBtaXhpbmcg
cnVsZXMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0RlZmF1
bHRBdWRpb0Rlc3RpbmF0aW9uTm9kZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRp
by9EZWZhdWx0QXVkaW9EZXN0aW5hdGlvbk5vZGUuaAppbmRleCA2ZmQ5NWMwZjMwMTE0Y2RlMzJj
MjdmYTE4YTYxYWUyY2RlNTEyOGZjLi45NmM4MzdjOTkzNGViMDNiZjA0YjRkZTM5YmM0MmVmZmRm
ZGVlOGUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0RlZmF1
bHRBdWRpb0Rlc3RpbmF0aW9uTm9kZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
YXVkaW8vRGVmYXVsdEF1ZGlvRGVzdGluYXRpb25Ob2RlLmgKQEAgLTMzLDcgKzMzLDcgQEAgY2xh
c3MgQXVkaW9EZXN0aW5hdGlvbjsKIGNsYXNzIERlZmF1bHRBdWRpb0Rlc3RpbmF0aW9uTm9kZSBm
aW5hbCA6IHB1YmxpYyBBdWRpb0Rlc3RpbmF0aW9uTm9kZSB7CiAgICAgV1RGX01BS0VfSVNPX0FM
TE9DQVRFRChEZWZhdWx0QXVkaW9EZXN0aW5hdGlvbk5vZGUpOwogcHVibGljOgotICAgIHN0YXRp
YyBSZWY8RGVmYXVsdEF1ZGlvRGVzdGluYXRpb25Ob2RlPiBjcmVhdGUoQXVkaW9Db250ZXh0JiBj
b250ZXh0KQorICAgIHN0YXRpYyBSZWY8RGVmYXVsdEF1ZGlvRGVzdGluYXRpb25Ob2RlPiBjcmVh
dGUoQXVkaW9Db250ZXh0QmFzZSYgY29udGV4dCkKICAgICB7CiAgICAgICAgIHJldHVybiBhZG9w
dFJlZigqbmV3IERlZmF1bHRBdWRpb0Rlc3RpbmF0aW9uTm9kZShjb250ZXh0KSk7ICAgICAKICAg
ICB9CkBAIC00MSw3ICs0MSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5EZWZhdWx0QXVkaW9E
ZXN0aW5hdGlvbk5vZGUoKTsKICAgICAKIHByaXZhdGU6Ci0gICAgZXhwbGljaXQgRGVmYXVsdEF1
ZGlvRGVzdGluYXRpb25Ob2RlKEF1ZGlvQ29udGV4dCYpOworICAgIGV4cGxpY2l0IERlZmF1bHRB
dWRpb0Rlc3RpbmF0aW9uTm9kZShBdWRpb0NvbnRleHRCYXNlJik7CiAgICAgdm9pZCBjcmVhdGVE
ZXN0aW5hdGlvbigpOwogCiAgICAgdm9pZCBpbml0aWFsaXplKCkgZmluYWw7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0RlbGF5Tm9kZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0RlbGF5Tm9kZS5jcHAKaW5kZXggODFiZDdkMTliMjdl
NzQxYjUwZjZmODRlNTFmN2NlMjU1NzgwMmI5My4uNDA1MjdjODFmOWY1YmM1NmJjZjRlNzBjNTE2
Y2JjMTllNWJlMWU4YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRp
by9EZWxheU5vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vRGVs
YXlOb2RlLmNwcApAQCAtMzcsMTQgKzM3LDE0IEBAIFdURl9NQUtFX0lTT19BTExPQ0FURURfSU1Q
TChEZWxheU5vZGUpOwogCiBjb25zdCBkb3VibGUgbWF4aW11bUFsbG93ZWREZWxheVRpbWUgPSAx
ODA7CiAKLWlubGluZSBEZWxheU5vZGU6OkRlbGF5Tm9kZShBdWRpb0NvbnRleHQmIGNvbnRleHQs
IGZsb2F0IHNhbXBsZVJhdGUsIGRvdWJsZSBtYXhEZWxheVRpbWUpCitpbmxpbmUgRGVsYXlOb2Rl
OjpEZWxheU5vZGUoQXVkaW9Db250ZXh0QmFzZSYgY29udGV4dCwgZmxvYXQgc2FtcGxlUmF0ZSwg
ZG91YmxlIG1heERlbGF5VGltZSkKICAgICA6IEF1ZGlvQmFzaWNQcm9jZXNzb3JOb2RlKGNvbnRl
eHQsIHNhbXBsZVJhdGUpCiB7CiAgICAgc2V0Tm9kZVR5cGUoTm9kZVR5cGVEZWxheSk7CiAgICAg
bV9wcm9jZXNzb3IgPSBtYWtlVW5pcXVlPERlbGF5UHJvY2Vzc29yPihjb250ZXh0LCBzYW1wbGVS
YXRlLCAxLCBtYXhEZWxheVRpbWUpOwogfQogCi1FeGNlcHRpb25PcjxSZWY8RGVsYXlOb2RlPj4g
RGVsYXlOb2RlOjpjcmVhdGUoQXVkaW9Db250ZXh0JiBjb250ZXh0LCBmbG9hdCBzYW1wbGVSYXRl
LCBkb3VibGUgbWF4RGVsYXlUaW1lKQorRXhjZXB0aW9uT3I8UmVmPERlbGF5Tm9kZT4+IERlbGF5
Tm9kZTo6Y3JlYXRlKEF1ZGlvQ29udGV4dEJhc2UmIGNvbnRleHQsIGZsb2F0IHNhbXBsZVJhdGUs
IGRvdWJsZSBtYXhEZWxheVRpbWUpCiB7CiAgICAgaWYgKG1heERlbGF5VGltZSA8PSAwIHx8IG1h
eERlbGF5VGltZSA+PSBtYXhpbXVtQWxsb3dlZERlbGF5VGltZSkKICAgICAgICAgcmV0dXJuIEV4
Y2VwdGlvbiB7IE5vdFN1cHBvcnRlZEVycm9yIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmF1ZGlvL0RlbGF5Tm9kZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJhdWRpby9EZWxheU5vZGUuaAppbmRleCBjOWVjYWQ5ZjlmZGM1MWM0N2M1MmMzY2I4Njg3MGZk
ODQxMWI5ZmZhLi5iNmFmZGQwZjkzMDcxOGI0MjMyMzFmMmY2Y2Y5MDA1OTkxOTk3MDFiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0RlbGF5Tm9kZS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vRGVsYXlOb2RlLmgKQEAgLTMxLDEyICsz
MSwxMiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBEZWxheU5vZGUgZmluYWwgOiBwdWJs
aWMgQXVkaW9CYXNpY1Byb2Nlc3Nvck5vZGUgewogICAgIFdURl9NQUtFX0lTT19BTExPQ0FURUQo
RGVsYXlOb2RlKTsKIHB1YmxpYzoKLSAgICBzdGF0aWMgRXhjZXB0aW9uT3I8UmVmPERlbGF5Tm9k
ZT4+IGNyZWF0ZShBdWRpb0NvbnRleHQmLCBmbG9hdCBzYW1wbGVSYXRlLCBkb3VibGUgbWF4RGVs
YXlUaW1lKTsKKyAgICBzdGF0aWMgRXhjZXB0aW9uT3I8UmVmPERlbGF5Tm9kZT4+IGNyZWF0ZShB
dWRpb0NvbnRleHRCYXNlJiwgZmxvYXQgc2FtcGxlUmF0ZSwgZG91YmxlIG1heERlbGF5VGltZSk7
CiAKICAgICBBdWRpb1BhcmFtKiBkZWxheVRpbWUoKTsKIAogcHJpdmF0ZToKLSAgICBEZWxheU5v
ZGUoQXVkaW9Db250ZXh0JiwgZmxvYXQgc2FtcGxlUmF0ZSwgZG91YmxlIG1heERlbGF5VGltZSk7
CisgICAgRGVsYXlOb2RlKEF1ZGlvQ29udGV4dEJhc2UmLCBmbG9hdCBzYW1wbGVSYXRlLCBkb3Vi
bGUgbWF4RGVsYXlUaW1lKTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vRGVsYXlQcm9jZXNzb3IuY3BwIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9EZWxheVByb2Nlc3Nvci5jcHAKaW5kZXgg
MTAzNjZlZjZlYWZiNmM0NGRiMTkxMjcxYTk5NWQ5ZTZkMmFjYmE2OS4uY2JiZmQ5ZmEyZmFhNGNm
N2VhZTAxYjMyNmM0NmRjZjU4N2JmZTNjNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJhdWRpby9EZWxheVByb2Nlc3Nvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJhdWRpby9EZWxheVByb2Nlc3Nvci5jcHAKQEAgLTMyLDcgKzMyLDcgQEAKIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCi1EZWxheVByb2Nlc3Nvcjo6RGVsYXlQcm9jZXNzb3IoQXVkaW9D
b250ZXh0JiBjb250ZXh0LCBmbG9hdCBzYW1wbGVSYXRlLCB1bnNpZ25lZCBudW1iZXJPZkNoYW5u
ZWxzLCBkb3VibGUgbWF4RGVsYXlUaW1lKQorRGVsYXlQcm9jZXNzb3I6OkRlbGF5UHJvY2Vzc29y
KEF1ZGlvQ29udGV4dEJhc2UmIGNvbnRleHQsIGZsb2F0IHNhbXBsZVJhdGUsIHVuc2lnbmVkIG51
bWJlck9mQ2hhbm5lbHMsIGRvdWJsZSBtYXhEZWxheVRpbWUpCiAgICAgOiBBdWRpb0RTUEtlcm5l
bFByb2Nlc3NvcihzYW1wbGVSYXRlLCBudW1iZXJPZkNoYW5uZWxzKQogICAgICwgbV9tYXhEZWxh
eVRpbWUobWF4RGVsYXlUaW1lKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJhdWRpby9EZWxheVByb2Nlc3Nvci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJh
dWRpby9EZWxheVByb2Nlc3Nvci5oCmluZGV4IDg1ZDljYzZkN2ZkZTE2Y2VmZDc4ZDQ3OTQyMTBk
ZGQwODIzNGRmM2YuLmNiYWM3OWVjZjBmZTMzOWNmMTJmOTNkNGRiMjVhZjA1MTUyZmNlZmQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vRGVsYXlQcm9jZXNzb3Iu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0RlbGF5UHJvY2Vzc29yLmgK
QEAgLTM2LDcgKzM2LDcgQEAgY2xhc3MgQXVkaW9EU1BLZXJuZWw7CiBjbGFzcyBEZWxheVByb2Nl
c3NvciBmaW5hbCA6IHB1YmxpYyBBdWRpb0RTUEtlcm5lbFByb2Nlc3NvciB7CiAgICAgV1RGX01B
S0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6Ci0gICAgRGVsYXlQcm9jZXNzb3IoQXVkaW9Db250
ZXh0JiwgZmxvYXQgc2FtcGxlUmF0ZSwgdW5zaWduZWQgbnVtYmVyT2ZDaGFubmVscywgZG91Ymxl
IG1heERlbGF5VGltZSk7CisgICAgRGVsYXlQcm9jZXNzb3IoQXVkaW9Db250ZXh0QmFzZSYsIGZs
b2F0IHNhbXBsZVJhdGUsIHVuc2lnbmVkIG51bWJlck9mQ2hhbm5lbHMsIGRvdWJsZSBtYXhEZWxh
eVRpbWUpOwogICAgIHZpcnR1YWwgfkRlbGF5UHJvY2Vzc29yKCk7CiAgICAgCiAgICAgc3RkOjp1
bmlxdWVfcHRyPEF1ZGlvRFNQS2VybmVsPiBjcmVhdGVLZXJuZWwoKSBvdmVycmlkZTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vRGlzdGFuY2VNb2RlbFR5cGUu
aCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vRGlzdGFuY2VNb2RlbFR5cGUuaApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi5kZmUxMzE4MmNjMGE0NGJkZDA0ODBiNzJhZmZkN2I1NTcwODUyM2RiCi0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9EaXN0YW5jZU1v
ZGVsVHlwZS5oCkBAIC0wLDAgKzEsMjcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAsIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICog
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OCisgKiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAor
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKKyAqIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisj
aW5jbHVkZSAiRGlzdGFuY2UuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViYXVkaW8vRGlzdGFuY2VNb2RlbFR5cGUuaWRsIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJhdWRpby9EaXN0YW5jZU1vZGVsVHlwZS5pZGwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjhmZmNmZWQyMmM4Zjk2
MGQwNGYzZTg1YmUzZGE1OGI3MjA3MzdmZQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViYXVkaW8vRGlzdGFuY2VNb2RlbFR5cGUuaWRsCkBAIC0wLDAgKzEsMzEg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAsIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQor
ICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTgorICogQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
CisgKiBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCitbCisgICAgQ29uZGl0aW9uYWw9V0VCX0FVRElPLAorXSBlbnVtIERp
c3RhbmNlTW9kZWxUeXBlIHsKKyAgICAibGluZWFyIiwKKyAgICAiaW52ZXJzZSIsCisgICAgImV4
cG9uZW50aWFsIgorfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVk
aW8vRHluYW1pY3NDb21wcmVzc29yTm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmF1ZGlvL0R5bmFtaWNzQ29tcHJlc3Nvck5vZGUuY3BwCmluZGV4IDE0MDk2ZDhmMGM1OTZhNTI5
NzE2NjZlZjgyNjdhMDIzZmRiNDRiMjkuLmMzM2QxZGU3MmRjOTFmZThkNzRlNzU0N2EyMzU5OWNh
MDFmYzQ4NWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vRHlu
YW1pY3NDb21wcmVzc29yTm9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJh
dWRpby9EeW5hbWljc0NvbXByZXNzb3JOb2RlLmNwcApAQCAtNDEsNyArNDEsNyBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKIFdURl9NQUtFX0lTT19BTExPQ0FURURfSU1QTChEeW5hbWljc0NvbXBy
ZXNzb3JOb2RlKTsKIAotRHluYW1pY3NDb21wcmVzc29yTm9kZTo6RHluYW1pY3NDb21wcmVzc29y
Tm9kZShBdWRpb0NvbnRleHQmIGNvbnRleHQsIGZsb2F0IHNhbXBsZVJhdGUpCitEeW5hbWljc0Nv
bXByZXNzb3JOb2RlOjpEeW5hbWljc0NvbXByZXNzb3JOb2RlKEF1ZGlvQ29udGV4dEJhc2UmIGNv
bnRleHQsIGZsb2F0IHNhbXBsZVJhdGUpCiAgICAgOiBBdWRpb05vZGUoY29udGV4dCwgc2FtcGxl
UmF0ZSkKIHsKICAgICBzZXROb2RlVHlwZShOb2RlVHlwZUR5bmFtaWNzQ29tcHJlc3Nvcik7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0R5bmFtaWNzQ29tcHJl
c3Nvck5vZGUuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vRHluYW1pY3NDb21w
cmVzc29yTm9kZS5oCmluZGV4IDQ0Y2JmYmFhMDU5NzE3ZjZjMzUwMzIyYTI4MDRlNWQ4NjNhNjY4
NTcuLmI3MDUzYjIyMTczYzAyY2EwZDI2ZWNlNjFhMThjNzdlZTA3NTJkZmUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vRHluYW1pY3NDb21wcmVzc29yTm9kZS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vRHluYW1pY3NDb21wcmVzc29y
Tm9kZS5oCkBAIC0zNSw3ICszNSw3IEBAIGNsYXNzIER5bmFtaWNzQ29tcHJlc3NvcjsKIGNsYXNz
IER5bmFtaWNzQ29tcHJlc3Nvck5vZGUgZmluYWwgOiBwdWJsaWMgQXVkaW9Ob2RlIHsKICAgICBX
VEZfTUFLRV9JU09fQUxMT0NBVEVEKER5bmFtaWNzQ29tcHJlc3Nvck5vZGUpOwogcHVibGljOgot
ICAgIHN0YXRpYyBSZWY8RHluYW1pY3NDb21wcmVzc29yTm9kZT4gY3JlYXRlKEF1ZGlvQ29udGV4
dCYgY29udGV4dCwgZmxvYXQgc2FtcGxlUmF0ZSkKKyAgICBzdGF0aWMgUmVmPER5bmFtaWNzQ29t
cHJlc3Nvck5vZGU+IGNyZWF0ZShBdWRpb0NvbnRleHRCYXNlJiBjb250ZXh0LCBmbG9hdCBzYW1w
bGVSYXRlKQogICAgIHsKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRHluYW1pY3NDb21w
cmVzc29yTm9kZShjb250ZXh0LCBzYW1wbGVSYXRlKSk7CiAgICAgfQpAQCAtNjIsNyArNjIsNyBA
QCBwcml2YXRlOgogICAgIGRvdWJsZSB0YWlsVGltZSgpIGNvbnN0IG92ZXJyaWRlOwogICAgIGRv
dWJsZSBsYXRlbmN5VGltZSgpIGNvbnN0IG92ZXJyaWRlOwogCi0gICAgRHluYW1pY3NDb21wcmVz
c29yTm9kZShBdWRpb0NvbnRleHQmLCBmbG9hdCBzYW1wbGVSYXRlKTsKKyAgICBEeW5hbWljc0Nv
bXByZXNzb3JOb2RlKEF1ZGlvQ29udGV4dEJhc2UmLCBmbG9hdCBzYW1wbGVSYXRlKTsKIAogICAg
IHN0ZDo6dW5pcXVlX3B0cjxEeW5hbWljc0NvbXByZXNzb3I+IG1fZHluYW1pY3NDb21wcmVzc29y
OwogICAgIFJlZlB0cjxBdWRpb1BhcmFtPiBtX3RocmVzaG9sZDsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vR2Fpbk5vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJhdWRpby9HYWluTm9kZS5jcHAKaW5kZXggMjU3ZGYyZWNlMjMzOGNiY2JhYjll
ZDA1MTIzM2M2NGIxYzU3ZjI1ZC4uOTg0ZDExOTRiZGQ1NTJmMzg0YjBkNmQ5YmNlYmY3ZGE0MmZk
ODY5YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9HYWluTm9k
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9HYWluTm9kZS5jcHAK
QEAgLTM3LDcgKzM3LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBXVEZfTUFLRV9JU09fQUxM
T0NBVEVEX0lNUEwoR2Fpbk5vZGUpOwogCi1HYWluTm9kZTo6R2Fpbk5vZGUoQXVkaW9Db250ZXh0
JiBjb250ZXh0LCBmbG9hdCBzYW1wbGVSYXRlKQorR2Fpbk5vZGU6OkdhaW5Ob2RlKEF1ZGlvQ29u
dGV4dEJhc2UmIGNvbnRleHQsIGZsb2F0IHNhbXBsZVJhdGUpCiAgICAgOiBBdWRpb05vZGUoY29u
dGV4dCwgc2FtcGxlUmF0ZSkKICAgICAsIG1fbGFzdEdhaW4oMS4wKQogICAgICwgbV9zYW1wbGVB
Y2N1cmF0ZUdhaW5WYWx1ZXMoQXVkaW9Ob2RlOjpQcm9jZXNzaW5nU2l6ZUluRnJhbWVzKSAvLyBG
SVhNRTogY2FuIHByb2JhYmx5IHNoYXJlIHRlbXAgYnVmZmVyIGluIGNvbnRleHQKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vR2Fpbk5vZGUuaCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vR2Fpbk5vZGUuaAppbmRleCBmYTg1YjBiOWZmNTQ3ZjMy
OWY1NjY1YjJhMDU1Nzc0YmUwZjdjYWI4Li5kY2Y4NTVhOTFjOTU3YTkwMDBiYWY4Yjk5NDM2YWU3
NzM3OWZiYjUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0dh
aW5Ob2RlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9HYWluTm9kZS5o
CkBAIC0zOCw3ICszOCw3IEBAIGNsYXNzIEF1ZGlvQ29udGV4dDsKIGNsYXNzIEdhaW5Ob2RlIGZp
bmFsIDogcHVibGljIEF1ZGlvTm9kZSB7CiAgICAgV1RGX01BS0VfSVNPX0FMTE9DQVRFRChHYWlu
Tm9kZSk7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxHYWluTm9kZT4gY3JlYXRlKEF1ZGlvQ29u
dGV4dCYgY29udGV4dCwgZmxvYXQgc2FtcGxlUmF0ZSkKKyAgICBzdGF0aWMgUmVmPEdhaW5Ob2Rl
PiBjcmVhdGUoQXVkaW9Db250ZXh0QmFzZSYgY29udGV4dCwgZmxvYXQgc2FtcGxlUmF0ZSkKICAg
ICB7CiAgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEdhaW5Ob2RlKGNvbnRleHQsIHNhbXBs
ZVJhdGUpKTsKICAgICB9CkBAIC01Nyw3ICs1Nyw3IEBAIHByaXZhdGU6CiAgICAgZG91YmxlIHRh
aWxUaW1lKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gMDsgfQogICAgIGRvdWJsZSBsYXRlbmN5
VGltZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIDA7IH0KIAotICAgIEdhaW5Ob2RlKEF1ZGlv
Q29udGV4dCYsIGZsb2F0IHNhbXBsZVJhdGUpOworICAgIEdhaW5Ob2RlKEF1ZGlvQ29udGV4dEJh
c2UmLCBmbG9hdCBzYW1wbGVSYXRlKTsKIAogICAgIGZsb2F0IG1fbGFzdEdhaW47IC8vIGZvciBk
ZS16aXBwZXJpbmcKICAgICBSZWZQdHI8QXVkaW9QYXJhbT4gbV9nYWluOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9NZWRpYUVsZW1lbnRBdWRpb1NvdXJjZU5v
ZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9NZWRpYUVsZW1lbnRBdWRp
b1NvdXJjZU5vZGUuY3BwCmluZGV4IDBlNTk4MWZhNjg2ZGI5MjEyZmZhMGY4M2U5YmRjZDAzYWY5
YWFhYzMuLmM2NzVkN2RlNzE2ODM5MmU4N2RmOWY0M2RmYTY1OTk3YjU0ZmY4ZjQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vTWVkaWFFbGVtZW50QXVkaW9Tb3Vy
Y2VOb2RlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL01lZGlhRWxl
bWVudEF1ZGlvU291cmNlTm9kZS5jcHAKQEAgLTQzLDEyICs0MywxMiBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKIFdURl9NQUtFX0lTT19BTExPQ0FURURfSU1QTChNZWRpYUVsZW1lbnRBdWRpb1Nv
dXJjZU5vZGUpOwogCi1SZWY8TWVkaWFFbGVtZW50QXVkaW9Tb3VyY2VOb2RlPiBNZWRpYUVsZW1l
bnRBdWRpb1NvdXJjZU5vZGU6OmNyZWF0ZShBdWRpb0NvbnRleHQmIGNvbnRleHQsIEhUTUxNZWRp
YUVsZW1lbnQmIG1lZGlhRWxlbWVudCkKK1JlZjxNZWRpYUVsZW1lbnRBdWRpb1NvdXJjZU5vZGU+
IE1lZGlhRWxlbWVudEF1ZGlvU291cmNlTm9kZTo6Y3JlYXRlKEF1ZGlvQ29udGV4dEJhc2UmIGNv
bnRleHQsIEhUTUxNZWRpYUVsZW1lbnQmIG1lZGlhRWxlbWVudCkKIHsKICAgICByZXR1cm4gYWRv
cHRSZWYoKm5ldyBNZWRpYUVsZW1lbnRBdWRpb1NvdXJjZU5vZGUoY29udGV4dCwgbWVkaWFFbGVt
ZW50KSk7CiB9CiAKLU1lZGlhRWxlbWVudEF1ZGlvU291cmNlTm9kZTo6TWVkaWFFbGVtZW50QXVk
aW9Tb3VyY2VOb2RlKEF1ZGlvQ29udGV4dCYgY29udGV4dCwgSFRNTE1lZGlhRWxlbWVudCYgbWVk
aWFFbGVtZW50KQorTWVkaWFFbGVtZW50QXVkaW9Tb3VyY2VOb2RlOjpNZWRpYUVsZW1lbnRBdWRp
b1NvdXJjZU5vZGUoQXVkaW9Db250ZXh0QmFzZSYgY29udGV4dCwgSFRNTE1lZGlhRWxlbWVudCYg
bWVkaWFFbGVtZW50KQogICAgIDogQXVkaW9Ob2RlKGNvbnRleHQsIGNvbnRleHQuc2FtcGxlUmF0
ZSgpKQogICAgICwgbV9tZWRpYUVsZW1lbnQobWVkaWFFbGVtZW50KQogICAgICwgbV9zb3VyY2VO
dW1iZXJPZkNoYW5uZWxzKDApCkBAIC05Nyw3ICs5Nyw3IEBAIHZvaWQgTWVkaWFFbGVtZW50QXVk
aW9Tb3VyY2VOb2RlOjpzZXRGb3JtYXQoc2l6ZV90IG51bWJlck9mQ2hhbm5lbHMsIGZsb2F0IHNv
dXJjCiAKICAgICAgICAgewogICAgICAgICAgICAgLy8gVGhlIGNvbnRleHQgbXVzdCBiZSBsb2Nr
ZWQgd2hlbiBjaGFuZ2luZyB0aGUgbnVtYmVyIG9mIG91dHB1dCBjaGFubmVscy4KLSAgICAgICAg
ICAgIEF1ZGlvQ29udGV4dDo6QXV0b0xvY2tlciBjb250ZXh0TG9ja2VyKGNvbnRleHQoKSk7Cisg
ICAgICAgICAgICBBdWRpb0NvbnRleHRCYXNlOjpBdXRvTG9ja2VyIGNvbnRleHRMb2NrZXIoY29u
dGV4dCgpKTsKIAogICAgICAgICAgICAgLy8gRG8gYW55IG5lY2Vzc3NhcnkgcmUtY29uZmlndXJh
dGlvbiB0byB0aGUgb3V0cHV0J3MgbnVtYmVyIG9mIGNoYW5uZWxzLgogICAgICAgICAgICAgb3V0
cHV0KDApLT5zZXROdW1iZXJPZkNoYW5uZWxzKG51bWJlck9mQ2hhbm5lbHMpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9NZWRpYUVsZW1lbnRBdWRpb1NvdXJj
ZU5vZGUuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vTWVkaWFFbGVtZW50QXVk
aW9Tb3VyY2VOb2RlLmgKaW5kZXggM2ExMzE1NDE1ZjE4ZjliMzRhZGNlNDI0ZjI2YzI2MTJkM2M0
OGY1OS4uNzFkMGVkMTM4YTVmOWZkMzczMDUwMjA1NDFlZDVkNDdjM2FlYzBjYyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9NZWRpYUVsZW1lbnRBdWRpb1NvdXJj
ZU5vZGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL01lZGlhRWxlbWVu
dEF1ZGlvU291cmNlTm9kZS5oCkBAIC00MCw3ICs0MCw3IEBAIGNsYXNzIEF1ZGlvQ29udGV4dDsK
IGNsYXNzIE1lZGlhRWxlbWVudEF1ZGlvU291cmNlTm9kZSBmaW5hbCA6IHB1YmxpYyBBdWRpb05v
ZGUsIHB1YmxpYyBBdWRpb1NvdXJjZVByb3ZpZGVyQ2xpZW50IHsKICAgICBXVEZfTUFLRV9JU09f
QUxMT0NBVEVEKE1lZGlhRWxlbWVudEF1ZGlvU291cmNlTm9kZSk7CiBwdWJsaWM6Ci0gICAgc3Rh
dGljIFJlZjxNZWRpYUVsZW1lbnRBdWRpb1NvdXJjZU5vZGU+IGNyZWF0ZShBdWRpb0NvbnRleHQm
LCBIVE1MTWVkaWFFbGVtZW50Jik7CisgICAgc3RhdGljIFJlZjxNZWRpYUVsZW1lbnRBdWRpb1Nv
dXJjZU5vZGU+IGNyZWF0ZShBdWRpb0NvbnRleHRCYXNlJiwgSFRNTE1lZGlhRWxlbWVudCYpOwog
CiAgICAgdmlydHVhbCB+TWVkaWFFbGVtZW50QXVkaW9Tb3VyY2VOb2RlKCk7CiAKQEAgLTU3LDcg
KzU3LDcgQEAgcHVibGljOgogICAgIHZvaWQgdW5sb2NrKCk7CiAKIHByaXZhdGU6Ci0gICAgTWVk
aWFFbGVtZW50QXVkaW9Tb3VyY2VOb2RlKEF1ZGlvQ29udGV4dCYsIEhUTUxNZWRpYUVsZW1lbnQm
KTsKKyAgICBNZWRpYUVsZW1lbnRBdWRpb1NvdXJjZU5vZGUoQXVkaW9Db250ZXh0QmFzZSYsIEhU
TUxNZWRpYUVsZW1lbnQmKTsKIAogICAgIGRvdWJsZSB0YWlsVGltZSgpIGNvbnN0IG92ZXJyaWRl
IHsgcmV0dXJuIDA7IH0KICAgICBkb3VibGUgbGF0ZW5jeVRpbWUoKSBjb25zdCBvdmVycmlkZSB7
IHJldHVybiAwOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlv
L01lZGlhU3RyZWFtQXVkaW9EZXN0aW5hdGlvbk5vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJhdWRpby9NZWRpYVN0cmVhbUF1ZGlvRGVzdGluYXRpb25Ob2RlLmNwcAppbmRleCBk
NzY2MjkzMDMwOGE3NDZhNDZhZTAwODY4YTVkNjM0MWI4MmZmNzNiLi4zMGYxYTIyMmJlMjMwMGUx
MmRhZTc2NmJkZWU0MmIwYmIxY2YxZTg5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmF1ZGlvL01lZGlhU3RyZWFtQXVkaW9EZXN0aW5hdGlvbk5vZGUuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vTWVkaWFTdHJlYW1BdWRpb0Rlc3RpbmF0aW9u
Tm9kZS5jcHAKQEAgLTM5LDEyICszOSwxMiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFdURl9N
QUtFX0lTT19BTExPQ0FURURfSU1QTChNZWRpYVN0cmVhbUF1ZGlvRGVzdGluYXRpb25Ob2RlKTsK
IAotUmVmPE1lZGlhU3RyZWFtQXVkaW9EZXN0aW5hdGlvbk5vZGU+IE1lZGlhU3RyZWFtQXVkaW9E
ZXN0aW5hdGlvbk5vZGU6OmNyZWF0ZShBdWRpb0NvbnRleHQmIGNvbnRleHQsIHNpemVfdCBudW1i
ZXJPZkNoYW5uZWxzKQorUmVmPE1lZGlhU3RyZWFtQXVkaW9EZXN0aW5hdGlvbk5vZGU+IE1lZGlh
U3RyZWFtQXVkaW9EZXN0aW5hdGlvbk5vZGU6OmNyZWF0ZShBdWRpb0NvbnRleHRCYXNlJiBjb250
ZXh0LCBzaXplX3QgbnVtYmVyT2ZDaGFubmVscykKIHsKICAgICByZXR1cm4gYWRvcHRSZWYoKm5l
dyBNZWRpYVN0cmVhbUF1ZGlvRGVzdGluYXRpb25Ob2RlKGNvbnRleHQsIG51bWJlck9mQ2hhbm5l
bHMpKTsKIH0KIAotTWVkaWFTdHJlYW1BdWRpb0Rlc3RpbmF0aW9uTm9kZTo6TWVkaWFTdHJlYW1B
dWRpb0Rlc3RpbmF0aW9uTm9kZShBdWRpb0NvbnRleHQmIGNvbnRleHQsIHNpemVfdCBudW1iZXJP
ZkNoYW5uZWxzKQorTWVkaWFTdHJlYW1BdWRpb0Rlc3RpbmF0aW9uTm9kZTo6TWVkaWFTdHJlYW1B
dWRpb0Rlc3RpbmF0aW9uTm9kZShBdWRpb0NvbnRleHRCYXNlJiBjb250ZXh0LCBzaXplX3QgbnVt
YmVyT2ZDaGFubmVscykKICAgICA6IEF1ZGlvQmFzaWNJbnNwZWN0b3JOb2RlKGNvbnRleHQsIGNv
bnRleHQuc2FtcGxlUmF0ZSgpLCBudW1iZXJPZkNoYW5uZWxzKQogICAgICwgbV9zb3VyY2UoTWVk
aWFTdHJlYW1BdWRpb1NvdXJjZTo6Y3JlYXRlKGNvbnRleHQuc2FtcGxlUmF0ZSgpKSkKICAgICAs
IG1fc3RyZWFtKE1lZGlhU3RyZWFtOjpjcmVhdGUoKmNvbnRleHQuZG9jdW1lbnQoKSwgTWVkaWFT
dHJlYW1Qcml2YXRlOjpjcmVhdGUoY29udGV4dC5kb2N1bWVudCgpLT5sb2dnZXIoKSwgbV9zb3Vy
Y2UuY29weVJlZigpKSkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1
ZGlvL01lZGlhU3RyZWFtQXVkaW9EZXN0aW5hdGlvbk5vZGUuaCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViYXVkaW8vTWVkaWFTdHJlYW1BdWRpb0Rlc3RpbmF0aW9uTm9kZS5oCmluZGV4IGY1
YTdlOGZlYzRhOTAyYzkwYmRjZjljNWM3YjQ2N2M5ODBmOTdlM2EuLmRiYWQ5MjhkNzk2YTJkOGY0
MTBmNDM2ZmJlMzNlZjcyYWE4NDE3M2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViYXVkaW8vTWVkaWFTdHJlYW1BdWRpb0Rlc3RpbmF0aW9uTm9kZS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vTWVkaWFTdHJlYW1BdWRpb0Rlc3RpbmF0aW9uTm9k
ZS5oCkBAIC0zMiwxMyArMzIsMTMgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBB
dWRpb0NvbnRleHQ7CitjbGFzcyBBdWRpb0NvbnRleHRCYXNlOwogY2xhc3MgTWVkaWFTdHJlYW1B
dWRpb1NvdXJjZTsKIAogY2xhc3MgTWVkaWFTdHJlYW1BdWRpb0Rlc3RpbmF0aW9uTm9kZSBmaW5h
bCA6IHB1YmxpYyBBdWRpb0Jhc2ljSW5zcGVjdG9yTm9kZSB7CiAgICAgV1RGX01BS0VfSVNPX0FM
TE9DQVRFRChNZWRpYVN0cmVhbUF1ZGlvRGVzdGluYXRpb25Ob2RlKTsKIHB1YmxpYzoKLSAgICBz
dGF0aWMgUmVmPE1lZGlhU3RyZWFtQXVkaW9EZXN0aW5hdGlvbk5vZGU+IGNyZWF0ZShBdWRpb0Nv
bnRleHQmLCBzaXplX3QgbnVtYmVyT2ZDaGFubmVscyk7CisgICAgc3RhdGljIFJlZjxNZWRpYVN0
cmVhbUF1ZGlvRGVzdGluYXRpb25Ob2RlPiBjcmVhdGUoQXVkaW9Db250ZXh0QmFzZSYsIHNpemVf
dCBudW1iZXJPZkNoYW5uZWxzKTsKIAogICAgIHZpcnR1YWwgfk1lZGlhU3RyZWFtQXVkaW9EZXN0
aW5hdGlvbk5vZGUoKTsKIApAQCAtNDksNyArNDksNyBAQCBwdWJsaWM6CiAgICAgdm9pZCByZXNl
dCgpIGZpbmFsOwogICAgIAogcHJpdmF0ZToKLSAgICBNZWRpYVN0cmVhbUF1ZGlvRGVzdGluYXRp
b25Ob2RlKEF1ZGlvQ29udGV4dCYsIHNpemVfdCBudW1iZXJPZkNoYW5uZWxzKTsKKyAgICBNZWRp
YVN0cmVhbUF1ZGlvRGVzdGluYXRpb25Ob2RlKEF1ZGlvQ29udGV4dEJhc2UmLCBzaXplX3QgbnVt
YmVyT2ZDaGFubmVscyk7CiAKICAgICBkb3VibGUgdGFpbFRpbWUoKSBjb25zdCBmaW5hbCB7IHJl
dHVybiAwOyB9CiAgICAgZG91YmxlIGxhdGVuY3lUaW1lKCkgY29uc3QgZmluYWwgeyByZXR1cm4g
MDsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9NZWRpYVN0
cmVhbUF1ZGlvU291cmNlTm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlv
L01lZGlhU3RyZWFtQXVkaW9Tb3VyY2VOb2RlLmNwcAppbmRleCAxYjRmYjZkMTkyMmFkMWM0YjA0
MWNiOTEyOWM1NWMxMzg3MDdmN2NlLi4zNWU1NWE5MjAyYzNmMzA1NWJmMTg3YmFhNmY2NmZiNmJk
NTFmNjkwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL01lZGlh
U3RyZWFtQXVkaW9Tb3VyY2VOb2RlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmF1ZGlvL01lZGlhU3RyZWFtQXVkaW9Tb3VyY2VOb2RlLmNwcApAQCAtMzgsMTIgKzM4LDEyIEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogV1RGX01BS0VfSVNPX0FMTE9DQVRFRF9JTVBMKE1lZGlh
U3RyZWFtQXVkaW9Tb3VyY2VOb2RlKTsKIAotUmVmPE1lZGlhU3RyZWFtQXVkaW9Tb3VyY2VOb2Rl
PiBNZWRpYVN0cmVhbUF1ZGlvU291cmNlTm9kZTo6Y3JlYXRlKEF1ZGlvQ29udGV4dCYgY29udGV4
dCwgTWVkaWFTdHJlYW0mIG1lZGlhU3RyZWFtLCBNZWRpYVN0cmVhbVRyYWNrJiBhdWRpb1RyYWNr
KQorUmVmPE1lZGlhU3RyZWFtQXVkaW9Tb3VyY2VOb2RlPiBNZWRpYVN0cmVhbUF1ZGlvU291cmNl
Tm9kZTo6Y3JlYXRlKEF1ZGlvQ29udGV4dEJhc2UmIGNvbnRleHQsIE1lZGlhU3RyZWFtJiBtZWRp
YVN0cmVhbSwgTWVkaWFTdHJlYW1UcmFjayYgYXVkaW9UcmFjaykKIHsKICAgICByZXR1cm4gYWRv
cHRSZWYoKm5ldyBNZWRpYVN0cmVhbUF1ZGlvU291cmNlTm9kZShjb250ZXh0LCBtZWRpYVN0cmVh
bSwgYXVkaW9UcmFjaykpOwogfQogCi1NZWRpYVN0cmVhbUF1ZGlvU291cmNlTm9kZTo6TWVkaWFT
dHJlYW1BdWRpb1NvdXJjZU5vZGUoQXVkaW9Db250ZXh0JiBjb250ZXh0LCBNZWRpYVN0cmVhbSYg
bWVkaWFTdHJlYW0sIE1lZGlhU3RyZWFtVHJhY2smIGF1ZGlvVHJhY2spCitNZWRpYVN0cmVhbUF1
ZGlvU291cmNlTm9kZTo6TWVkaWFTdHJlYW1BdWRpb1NvdXJjZU5vZGUoQXVkaW9Db250ZXh0QmFz
ZSYgY29udGV4dCwgTWVkaWFTdHJlYW0mIG1lZGlhU3RyZWFtLCBNZWRpYVN0cmVhbVRyYWNrJiBh
dWRpb1RyYWNrKQogICAgIDogQXVkaW9Ob2RlKGNvbnRleHQsIGNvbnRleHQuc2FtcGxlUmF0ZSgp
KQogICAgICwgbV9tZWRpYVN0cmVhbShtZWRpYVN0cmVhbSkKICAgICAsIG1fYXVkaW9UcmFjayhh
dWRpb1RyYWNrKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9N
ZWRpYVN0cmVhbUF1ZGlvU291cmNlTm9kZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJh
dWRpby9NZWRpYVN0cmVhbUF1ZGlvU291cmNlTm9kZS5oCmluZGV4IGUzZWRlZmUxYmQ1NzAyYTcz
YTIyZjRhODM5ZDIzY2ZjMTljMjlhMDUuLmM3MmQzMTIyMzNkNTA2ZGQ1NGNlMjcwZmM5MjI3YjU0
NTc1ZWUyZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vTWVk
aWFTdHJlYW1BdWRpb1NvdXJjZU5vZGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmF1ZGlvL01lZGlhU3RyZWFtQXVkaW9Tb3VyY2VOb2RlLmgKQEAgLTQwLDcgKzQwLDcgQEAgY2xh
c3MgTXVsdGlDaGFubmVsUmVzYW1wbGVyOwogY2xhc3MgTWVkaWFTdHJlYW1BdWRpb1NvdXJjZU5v
ZGUgZmluYWwgOiBwdWJsaWMgQXVkaW9Ob2RlLCBwdWJsaWMgQXVkaW9Tb3VyY2VQcm92aWRlckNs
aWVudCB7CiAgICAgV1RGX01BS0VfSVNPX0FMTE9DQVRFRChNZWRpYVN0cmVhbUF1ZGlvU291cmNl
Tm9kZSk7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxNZWRpYVN0cmVhbUF1ZGlvU291cmNlTm9k
ZT4gY3JlYXRlKEF1ZGlvQ29udGV4dCYsIE1lZGlhU3RyZWFtJiwgTWVkaWFTdHJlYW1UcmFjayYp
OworICAgIHN0YXRpYyBSZWY8TWVkaWFTdHJlYW1BdWRpb1NvdXJjZU5vZGU+IGNyZWF0ZShBdWRp
b0NvbnRleHRCYXNlJiwgTWVkaWFTdHJlYW0mLCBNZWRpYVN0cmVhbVRyYWNrJik7CiAKICAgICB2
aXJ0dWFsIH5NZWRpYVN0cmVhbUF1ZGlvU291cmNlTm9kZSgpOwogCkBAIC01NCw3ICs1NCw3IEBA
IHB1YmxpYzoKICAgICB2b2lkIHNldEZvcm1hdChzaXplX3QgbnVtYmVyT2ZDaGFubmVscywgZmxv
YXQgc2FtcGxlUmF0ZSkgb3ZlcnJpZGU7CiAKIHByaXZhdGU6Ci0gICAgTWVkaWFTdHJlYW1BdWRp
b1NvdXJjZU5vZGUoQXVkaW9Db250ZXh0JiwgTWVkaWFTdHJlYW0mLCBNZWRpYVN0cmVhbVRyYWNr
Jik7CisgICAgTWVkaWFTdHJlYW1BdWRpb1NvdXJjZU5vZGUoQXVkaW9Db250ZXh0QmFzZSYsIE1l
ZGlhU3RyZWFtJiwgTWVkaWFTdHJlYW1UcmFjayYpOwogCiAgICAgZG91YmxlIHRhaWxUaW1lKCkg
Y29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gMDsgfQogICAgIGRvdWJsZSBsYXRlbmN5VGltZSgpIGNv
bnN0IG92ZXJyaWRlIHsgcmV0dXJuIDA7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViYXVkaW8vT2ZmbGluZUF1ZGlvQ29udGV4dC5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmF1ZGlvL09mZmxpbmVBdWRpb0NvbnRleHQuaWRsCmluZGV4IGY2ZWNiMWE2ODU4
MWNjOTQ2Njc5ZDkyNGY4ZTNlMTU0ZDAzNDNhYzYuLjBlNzFhMDZiYzNmYTJmOGU4NjI5OWYzYzI0
NTg3ZTZjYmE5YzQxMTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVk
aW8vT2ZmbGluZUF1ZGlvQ29udGV4dC5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJhdWRpby9PZmZsaW5lQXVkaW9Db250ZXh0LmlkbApAQCAtMjQsOCArMjQsOCBAQAogCiBbCiAg
ICAgQ29uZGl0aW9uYWw9V0VCX0FVRElPLAorICAgIEVuYWJsZWRCeVNldHRpbmc9TW9kZXJuVW5w
cmVmaXhlZFdlYkF1ZGlvLAogICAgIEpTR2VuZXJhdGVUb0pTT2JqZWN0LAotICAgIEludGVyZmFj
ZU5hbWU9d2Via2l0T2ZmbGluZUF1ZGlvQ29udGV4dAogXSBpbnRlcmZhY2UgT2ZmbGluZUF1ZGlv
Q29udGV4dCA6IEF1ZGlvQ29udGV4dCB7CiAgICAgW0NhbGxXaXRoPVNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQsIE1heVRocm93RXhjZXB0aW9uXSBjb25zdHJ1Y3Rvcih1bnNpZ25lZCBsb25nIG51bWJl
ck9mQ2hhbm5lbHMsIHVuc2lnbmVkIGxvbmcgbnVtYmVyT2ZGcmFtZXMsIHVucmVzdHJpY3RlZCBm
bG9hdCBzYW1wbGVSYXRlKTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmF1ZGlvL09mZmxpbmVBdWRpb0Rlc3RpbmF0aW9uTm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmF1ZGlvL09mZmxpbmVBdWRpb0Rlc3RpbmF0aW9uTm9kZS5jcHAKaW5kZXgg
NmExOTU1NDZjZjcxMzk0ZmU1YzQxNGI3NjViNmM5N2UwNWVkYzA0OS4uZmVjNTA4Y2JmZjFjNzFk
MzNiYzRiMTNlYTk4MmY5MmZjMGFmYjk5YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJhdWRpby9PZmZsaW5lQXVkaW9EZXN0aW5hdGlvbk5vZGUuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vT2ZmbGluZUF1ZGlvRGVzdGluYXRpb25Ob2RlLmNw
cApAQCAtNDEsNyArNDEsNyBAQCBXVEZfTUFLRV9JU09fQUxMT0NBVEVEX0lNUEwoT2ZmbGluZUF1
ZGlvRGVzdGluYXRpb25Ob2RlKTsKICAgICAKIGNvbnN0IHNpemVfdCByZW5kZXJRdWFudHVtU2l6
ZSA9IDEyODsgICAgCiAKLU9mZmxpbmVBdWRpb0Rlc3RpbmF0aW9uTm9kZTo6T2ZmbGluZUF1ZGlv
RGVzdGluYXRpb25Ob2RlKEF1ZGlvQ29udGV4dCYgY29udGV4dCwgQXVkaW9CdWZmZXIqIHJlbmRl
clRhcmdldCkKK09mZmxpbmVBdWRpb0Rlc3RpbmF0aW9uTm9kZTo6T2ZmbGluZUF1ZGlvRGVzdGlu
YXRpb25Ob2RlKEF1ZGlvQ29udGV4dEJhc2UmIGNvbnRleHQsIEF1ZGlvQnVmZmVyKiByZW5kZXJU
YXJnZXQpCiAgICAgOiBBdWRpb0Rlc3RpbmF0aW9uTm9kZShjb250ZXh0LCByZW5kZXJUYXJnZXQt
PnNhbXBsZVJhdGUoKSkKICAgICAsIG1fcmVuZGVyVGFyZ2V0KHJlbmRlclRhcmdldCkKICAgICAs
IG1fc3RhcnRlZFJlbmRlcmluZyhmYWxzZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViYXVkaW8vT2ZmbGluZUF1ZGlvRGVzdGluYXRpb25Ob2RlLmggYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmF1ZGlvL09mZmxpbmVBdWRpb0Rlc3RpbmF0aW9uTm9kZS5oCmluZGV4
IGRhMjQ5NTc0ZDQ4NGZmODEyYWE0OTM3YWMzYTE2NWVlOTU4Mjg0Y2MuLmY4NzEwZmRlMTBkZmZm
ZTQ5MDIzNGYxOTM2YmQ1OGJhYTNjYjJlOTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViYXVkaW8vT2ZmbGluZUF1ZGlvRGVzdGluYXRpb25Ob2RlLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9PZmZsaW5lQXVkaW9EZXN0aW5hdGlvbk5vZGUuaApA
QCAtMzcsOSArMzcsOSBAQCBjbGFzcyBBdWRpb0NvbnRleHQ7CiBjbGFzcyBPZmZsaW5lQXVkaW9E
ZXN0aW5hdGlvbk5vZGUgZmluYWwgOiBwdWJsaWMgQXVkaW9EZXN0aW5hdGlvbk5vZGUgewogICAg
IFdURl9NQUtFX0lTT19BTExPQ0FURUQoT2ZmbGluZUF1ZGlvRGVzdGluYXRpb25Ob2RlKTsKIHB1
YmxpYzoKLSAgICBzdGF0aWMgUmVmPE9mZmxpbmVBdWRpb0Rlc3RpbmF0aW9uTm9kZT4gY3JlYXRl
KEF1ZGlvQ29udGV4dCYgY29udGV4dCwgQXVkaW9CdWZmZXIqIHJlbmRlclRhcmdldCkKKyAgICBz
dGF0aWMgUmVmPE9mZmxpbmVBdWRpb0Rlc3RpbmF0aW9uTm9kZT4gY3JlYXRlKEF1ZGlvQ29udGV4
dEJhc2UmIGNvbnRleHQsIEF1ZGlvQnVmZmVyKiByZW5kZXJUYXJnZXQpCiAgICAgewotICAgICAg
ICByZXR1cm4gYWRvcHRSZWYoKm5ldyBPZmZsaW5lQXVkaW9EZXN0aW5hdGlvbk5vZGUoY29udGV4
dCwgcmVuZGVyVGFyZ2V0KSk7ICAgICAKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgT2Zm
bGluZUF1ZGlvRGVzdGluYXRpb25Ob2RlKGNvbnRleHQsIHJlbmRlclRhcmdldCkpOwogICAgIH0K
IAogICAgIHZpcnR1YWwgfk9mZmxpbmVBdWRpb0Rlc3RpbmF0aW9uTm9kZSgpOwpAQCAtNTUsNyAr
NTUsNyBAQCBwdWJsaWM6CiAgICAgZmxvYXQgc2FtcGxlUmF0ZSgpIGNvbnN0IG92ZXJyaWRlIHsg
cmV0dXJuIG1fcmVuZGVyVGFyZ2V0LT5zYW1wbGVSYXRlKCk7IH0KIAogcHJpdmF0ZToKLSAgICBP
ZmZsaW5lQXVkaW9EZXN0aW5hdGlvbk5vZGUoQXVkaW9Db250ZXh0JiwgQXVkaW9CdWZmZXIqIHJl
bmRlclRhcmdldCk7CisgICAgT2ZmbGluZUF1ZGlvRGVzdGluYXRpb25Ob2RlKEF1ZGlvQ29udGV4
dEJhc2UmLCBBdWRpb0J1ZmZlciogcmVuZGVyVGFyZ2V0KTsKIAogICAgIC8vIFRoaXMgQXVkaW9O
b2RlIHJlbmRlcnMgaW50byB0aGlzIEF1ZGlvQnVmZmVyLgogICAgIFJlZlB0cjxBdWRpb0J1ZmZl
cj4gbV9yZW5kZXJUYXJnZXQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmF1ZGlvL09zY2lsbGF0b3JOb2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVk
aW8vT3NjaWxsYXRvck5vZGUuY3BwCmluZGV4IDk1NjAwNTNhNDgwNWI5ZDRiZjU1OTllNzNhMTlh
ODFlMjViMGM5NmYuLmU4ZjMxYzcyMjBlNTA2NTY4ZTNhY2YwNThmNmNhYjQ3M2IwOTFlZDcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vT3NjaWxsYXRvck5vZGUu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vT3NjaWxsYXRvck5vZGUu
Y3BwCkBAIC00NSwxMiArNDUsMTIgQEAgUGVyaW9kaWNXYXZlKiBPc2NpbGxhdG9yTm9kZTo6c19w
ZXJpb2RpY1dhdmVTcXVhcmUgPSBudWxscHRyOwogUGVyaW9kaWNXYXZlKiBPc2NpbGxhdG9yTm9k
ZTo6c19wZXJpb2RpY1dhdmVTYXd0b290aCA9IG51bGxwdHI7CiBQZXJpb2RpY1dhdmUqIE9zY2ls
bGF0b3JOb2RlOjpzX3BlcmlvZGljV2F2ZVRyaWFuZ2xlID0gbnVsbHB0cjsKIAotUmVmPE9zY2ls
bGF0b3JOb2RlPiBPc2NpbGxhdG9yTm9kZTo6Y3JlYXRlKEF1ZGlvQ29udGV4dCYgY29udGV4dCwg
ZmxvYXQgc2FtcGxlUmF0ZSkKK1JlZjxPc2NpbGxhdG9yTm9kZT4gT3NjaWxsYXRvck5vZGU6OmNy
ZWF0ZShBdWRpb0NvbnRleHRCYXNlJiBjb250ZXh0LCBmbG9hdCBzYW1wbGVSYXRlKQogewogICAg
IHJldHVybiBhZG9wdFJlZigqbmV3IE9zY2lsbGF0b3JOb2RlKGNvbnRleHQsIHNhbXBsZVJhdGUp
KTsKIH0KIAotT3NjaWxsYXRvck5vZGU6Ok9zY2lsbGF0b3JOb2RlKEF1ZGlvQ29udGV4dCYgY29u
dGV4dCwgZmxvYXQgc2FtcGxlUmF0ZSkKK09zY2lsbGF0b3JOb2RlOjpPc2NpbGxhdG9yTm9kZShB
dWRpb0NvbnRleHRCYXNlJiBjb250ZXh0LCBmbG9hdCBzYW1wbGVSYXRlKQogICAgIDogQXVkaW9T
Y2hlZHVsZWRTb3VyY2VOb2RlKGNvbnRleHQsIHNhbXBsZVJhdGUpCiAgICAgLCBtX2ZpcnN0UmVu
ZGVyKHRydWUpCiAgICAgLCBtX3ZpcnR1YWxSZWFkSW5kZXgoMCkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vT3NjaWxsYXRvck5vZGUuaCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViYXVkaW8vT3NjaWxsYXRvck5vZGUuaAppbmRleCA0MmZmMGMxOTI0YjYy
ZWQwY2YwMDE3ZmZiOTdkZTYwMzI2YzczOTIyLi4wODk1YmNlM2RkZGY1OWQ2OWM1YzZhZjljZmQy
YjljZmJlOWViNGE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlv
L09zY2lsbGF0b3JOb2RlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9P
c2NpbGxhdG9yTm9kZS5oCkBAIC00NSw3ICs0NSw3IEBAIHB1YmxpYzoKICAgICAgICAgQ3VzdG9t
CiAgICAgfTsKIAotICAgIHN0YXRpYyBSZWY8T3NjaWxsYXRvck5vZGU+IGNyZWF0ZShBdWRpb0Nv
bnRleHQmLCBmbG9hdCBzYW1wbGVSYXRlKTsKKyAgICBzdGF0aWMgUmVmPE9zY2lsbGF0b3JOb2Rl
PiBjcmVhdGUoQXVkaW9Db250ZXh0QmFzZSYsIGZsb2F0IHNhbXBsZVJhdGUpOwogCiAgICAgdmly
dHVhbCB+T3NjaWxsYXRvck5vZGUoKTsKIApAQCAtNjAsNyArNjAsNyBAQCBwdWJsaWM6CiAgICAg
dm9pZCBzZXRQZXJpb2RpY1dhdmUoUGVyaW9kaWNXYXZlKik7CiAKIHByaXZhdGU6Ci0gICAgT3Nj
aWxsYXRvck5vZGUoQXVkaW9Db250ZXh0JiwgZmxvYXQgc2FtcGxlUmF0ZSk7CisgICAgT3NjaWxs
YXRvck5vZGUoQXVkaW9Db250ZXh0QmFzZSYsIGZsb2F0IHNhbXBsZVJhdGUpOwogCiAgICAgdm9p
ZCBwcm9jZXNzKHNpemVfdCBmcmFtZXNUb1Byb2Nlc3MpIGZpbmFsOwogICAgIHZvaWQgcmVzZXQo
KSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vUGFu
bmVyTm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1Bhbm5lck5vZGUu
Y3BwCmluZGV4IGVjODBlNjlkMmFiODcxMDI4YmM2YTZlNDQ3ZWFiZDE5ZTlmY2M3MjEuLmFlNDJm
MTE0YmJjMzkwNGRiN2MyY2MxNTZkMGIyY2JlNDIwMDY5OGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vUGFubmVyTm9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJhdWRpby9QYW5uZXJOb2RlLmNwcApAQCAtNDgsOCArNDgsMTMgQEAgc3Rh
dGljIHZvaWQgZml4TkFOcyhkb3VibGUgJngpCiAgICAgICAgIHggPSAwLjA7CiB9CiAKLVBhbm5l
ck5vZGU6OlBhbm5lck5vZGUoQXVkaW9Db250ZXh0JiBjb250ZXh0LCBmbG9hdCBzYW1wbGVSYXRl
KQorUGFubmVyTm9kZUJhc2U6OlBhbm5lck5vZGVCYXNlKEF1ZGlvQ29udGV4dEJhc2UmIGNvbnRl
eHQsIGZsb2F0IHNhbXBsZVJhdGUpCiAgICAgOiBBdWRpb05vZGUoY29udGV4dCwgc2FtcGxlUmF0
ZSkKK3sKK30KKworUGFubmVyTm9kZTo6UGFubmVyTm9kZShBdWRpb0NvbnRleHQmIGNvbnRleHQs
IGZsb2F0IHNhbXBsZVJhdGUpCisgICAgOiBQYW5uZXJOb2RlQmFzZShjb250ZXh0LCBzYW1wbGVS
YXRlKQogICAgICwgbV9wYW5uaW5nTW9kZWwoUGFubmluZ01vZGVsVHlwZTo6SFJURikKICAgICAs
IG1fbGFzdEdhaW4oLTEuMCkKICAgICAsIG1fcG9zaXRpb25YKEF1ZGlvUGFyYW06OmNyZWF0ZShj
b250ZXh0LCAicG9zaXRpb25YIl9zLCAwLCAtRkxUX01BWCwgRkxUX01BWCkpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1Bhbm5lck5vZGUuaCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vUGFubmVyTm9kZS5oCmluZGV4IDg0ODBjMjMzMjgwMGRj
ZjQ4ODUxNThkNjk0NTkyZGQ5ZWU1MjkyYjYuLjI5YjY0OGQwNjA3NjI5Mzg3YTFiMGMwNzAzN2M1
MGMyMmNmMDEwNTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8v
UGFubmVyTm9kZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vUGFubmVy
Tm9kZS5oCkBAIC0yNiw2ICsyNiw3IEBACiAKICNpZiBFTkFCTEUoV0VCX0FVRElPKQogCisjaW5j
bHVkZSAiQXVkaW9Db250ZXh0LmgiCiAjaW5jbHVkZSAiQXVkaW9MaXN0ZW5lci5oIgogI2luY2x1
ZGUgIkF1ZGlvTm9kZS5oIgogI2luY2x1ZGUgIkF1ZGlvUGFyYW0uaCIKQEAgLTQxLDYgKzQyLDE2
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgSFJURkRhdGFiYXNlTG9hZGVyOwogCitj
bGFzcyBQYW5uZXJOb2RlQmFzZSA6IHB1YmxpYyBBdWRpb05vZGUgeworcHVibGljOgorICAgIHZp
cnR1YWwgflBhbm5lck5vZGVCYXNlKCkgPSBkZWZhdWx0OworCisgICAgdmlydHVhbCBmbG9hdCBk
b3BwbGVyUmF0ZSgpID0gMDsKKworcHJvdGVjdGVkOgorICAgIFBhbm5lck5vZGVCYXNlKEF1ZGlv
Q29udGV4dEJhc2UmLCBmbG9hdCBzYW1wbGVSYXRlKTsKK307CisKIC8vIFBhbm5lck5vZGUgaXMg
YW4gQXVkaW9Ob2RlIHdpdGggb25lIGlucHV0IGFuZCBvbmUgb3V0cHV0LgogLy8gSXQgcG9zaXRp
b25zIGEgc291bmQgaW4gM0Qgc3BhY2UsIHdpdGggdGhlIGV4YWN0IGVmZmVjdCBkZXBlbmRlbnQg
b24gdGhlIHBhbm5pbmcgbW9kZWwuCiAvLyBJdCBoYXMgYSBwb3NpdGlvbiBhbmQgYW4gb3JpZW50
YXRpb24gaW4gM0Qgc3BhY2Ugd2hpY2ggaXMgcmVsYXRpdmUgdG8gdGhlIHBvc2l0aW9uIGFuZCBv
cmllbnRhdGlvbiBvZiB0aGUgY29udGV4dCdzIEF1ZGlvTGlzdGVuZXIuCkBAIC00OCw3ICs1OSw3
IEBAIGNsYXNzIEhSVEZEYXRhYmFzZUxvYWRlcjsKIC8vIEEgY29uZSBlZmZlY3Qgd2lsbCBhdHRl
bnVhdGUgdGhlIGdhaW4gYXMgdGhlIG9yaWVudGF0aW9uIG1vdmVzIGF3YXkgZnJvbSB0aGUgbGlz
dGVuZXIuCiAvLyBBbGwgb2YgdGhlc2UgZWZmZWN0cyBmb2xsb3cgdGhlIE9wZW5BTCBzcGVjaWZp
Y2F0aW9uIHZlcnkgY2xvc2VseS4KIAotY2xhc3MgUGFubmVyTm9kZSBmaW5hbCA6IHB1YmxpYyBB
dWRpb05vZGUgeworY2xhc3MgUGFubmVyTm9kZSBmaW5hbCA6IHB1YmxpYyBQYW5uZXJOb2RlQmFz
ZSB7CiAgICAgV1RGX01BS0VfSVNPX0FMTE9DQVRFRChQYW5uZXJOb2RlKTsKIHB1YmxpYzoKICAg
ICBzdGF0aWMgUmVmPFBhbm5lck5vZGU+IGNyZWF0ZShBdWRpb0NvbnRleHQmIGNvbnRleHQsIGZs
b2F0IHNhbXBsZVJhdGUpCkBAIC01OCw2ICs2OSw5IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwg
flBhbm5lck5vZGUoKTsKIAorICAgIEF1ZGlvQ29udGV4dCYgY29udGV4dCgpIHsgcmV0dXJuIGRv
d25jYXN0PEF1ZGlvQ29udGV4dD4oQXVkaW9Ob2RlOjpjb250ZXh0KCkpOyB9CisgICAgY29uc3Qg
QXVkaW9Db250ZXh0JiBjb250ZXh0KCkgY29uc3QgeyByZXR1cm4gZG93bmNhc3Q8QXVkaW9Db250
ZXh0PihBdWRpb05vZGU6OmNvbnRleHQoKSk7IH0KKwogICAgIC8vIEF1ZGlvTm9kZQogICAgIHZv
aWQgcHJvY2VzcyhzaXplX3QgZnJhbWVzVG9Qcm9jZXNzKSBvdmVycmlkZTsKICAgICB2b2lkIHB1
bGxJbnB1dHMoc2l6ZV90IGZyYW1lc1RvUHJvY2Vzcykgb3ZlcnJpZGU7CkBAIC0xMTEsNyArMTI1
LDcgQEAgcHVibGljOgogICAgIHZvaWQgc2V0Q29uZU91dGVyR2Fpbihkb3VibGUgYW5nbGUpIHsg
bV9jb25lRWZmZWN0LnNldE91dGVyR2FpbihhbmdsZSk7IH0KIAogICAgIHZvaWQgZ2V0QXppbXV0
aEVsZXZhdGlvbihkb3VibGUqIG91dEF6aW11dGgsIGRvdWJsZSogb3V0RWxldmF0aW9uKTsKLSAg
ICBmbG9hdCBkb3BwbGVyUmF0ZSgpOworICAgIGZsb2F0IGRvcHBsZXJSYXRlKCkgZmluYWw7CiAK
ICAgICAvLyBBY2Nlc3NvcnMgZm9yIGR5bmFtaWNhbGx5IGNhbGN1bGF0ZWQgZ2FpbiB2YWx1ZXMu
CiAgICAgQXVkaW9QYXJhbSogZGlzdGFuY2VHYWluKCkgeyByZXR1cm4gbV9kaXN0YW5jZUdhaW4u
Z2V0KCk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vUGFu
bmVyTm9kZS5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1Bhbm5lck5vZGUu
aWRsCmluZGV4IDAzMjk4MzdkMmY1YTI1YzdmNmE2ZjBkMDRlMzE4N2ExZjZhZDhiNDEuLjdiYjky
YzRmOGZiNDVkYjI5M2ZmZTNhMTdhOTcxMDNjMGI5MmU2ZTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vUGFubmVyTm9kZS5pZGwKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJhdWRpby9QYW5uZXJOb2RlLmlkbApAQCAtMjIsMjcgKzIyLDEwIEBACiAg
KiBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KICAqLwogCi1bCi0gICAgQ29uZGl0aW9uYWw9V0VCX0FVRElPLAotICAgIEltcGxlbWVu
dGVkQXM9UGFubmluZ01vZGVsVHlwZQotXSBlbnVtIFBhbm5pbmdNb2RlbFR5cGUgewotICAgICJl
cXVhbHBvd2VyIiwKLSAgICAiSFJURiIKLX07Ci0KLVsKLSAgICBDb25kaXRpb25hbD1XRUJfQVVE
SU8sCi0gICAgSW1wbGVtZW50ZWRBcz1EaXN0YW5jZU1vZGVsVHlwZQotXSBlbnVtIERpc3RhbmNl
TW9kZWxUeXBlIHsKLSAgICAibGluZWFyIiwKLSAgICAiaW52ZXJzZSIsCi0gICAgImV4cG9uZW50
aWFsIgotfTsKLQogWwogICAgIENvbmRpdGlvbmFsPVdFQl9BVURJTywKICAgICBKU0dlbmVyYXRl
VG9KU09iamVjdCwKLSAgICBJbnRlcmZhY2VOYW1lPXdlYmtpdEF1ZGlvUGFubmVyTm9kZSwKKyAg
ICBFbmFibGVkQnlTZXR0aW5nPU1vZGVyblVucHJlZml4ZWRXZWJBdWRpbywKIF0gaW50ZXJmYWNl
IFBhbm5lck5vZGUgOiBBdWRpb05vZGUgewogICAgIC8vIERlZmF1bHQgbW9kZWwgZm9yIHN0ZXJl
byBpcyBIUlRGIAogICAgIGF0dHJpYnV0ZSBQYW5uaW5nTW9kZWxUeXBlIHBhbm5pbmdNb2RlbDsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vUGFubmluZ01vZGVs
VHlwZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9QYW5uaW5nTW9kZWxUeXBl
LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uYWIwYjIyNzEyYTE3MGIxZmVmYWUxNmU2ZWYzZGY5NGQyMzhhMWE5Zgot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vUGFubmlu
Z01vZGVsVHlwZS5oCkBAIC0wLDAgKzEsMjcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAs
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQor
ICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OCisgKiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKKyAqIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQor
CisjaW5jbHVkZSAiUGFubmVyLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmF1ZGlvL1Bhbm5pbmdNb2RlbFR5cGUuaWRsIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJhdWRpby9QYW5uaW5nTW9kZWxUeXBlLmlkbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iZjdkZjhmNTU0MmZhYTQ1
MjYwN2JlMWYwOTllOTk3NGJkYWMzN2U2Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJhdWRpby9QYW5uaW5nTW9kZWxUeXBlLmlkbApAQCAtMCwwICsxLDMwIEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwLCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAq
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04KKyAqIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUwor
ICogU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworWworICAgIENvbmRpdGlvbmFsPVdFQl9BVURJTywKK10gZW51bSBQYW5u
aW5nTW9kZWxUeXBlIHsKKyAgICAiZXF1YWxwb3dlciIsCisgICAgIkhSVEYiCit9OwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9TY3JpcHRQcm9jZXNzb3JOb2Rl
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vU2NyaXB0UHJvY2Vzc29yTm9k
ZS5jcHAKaW5kZXggOTFjNzUzN2UxNWU4YjU1MjQxMWVhOWY2MTMwMWVjMWMzMjVhZDI1Ni4uNzYx
MGIxNTAyNDg3OGI2MDZlNWNkZDhjNGY1YWIwZmIxMWRjMDM0NiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9TY3JpcHRQcm9jZXNzb3JOb2RlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1NjcmlwdFByb2Nlc3Nvck5vZGUuY3BwCkBA
IC00NCwxMiArNDQsMTIgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBXVEZfTUFLRV9JU09fQUxM
T0NBVEVEX0lNUEwoU2NyaXB0UHJvY2Vzc29yTm9kZSk7CiAKLVJlZjxTY3JpcHRQcm9jZXNzb3JO
b2RlPiBTY3JpcHRQcm9jZXNzb3JOb2RlOjpjcmVhdGUoQXVkaW9Db250ZXh0JiBjb250ZXh0LCBm
bG9hdCBzYW1wbGVSYXRlLCBzaXplX3QgYnVmZmVyU2l6ZSwgdW5zaWduZWQgbnVtYmVyT2ZJbnB1
dENoYW5uZWxzLCB1bnNpZ25lZCBudW1iZXJPZk91dHB1dENoYW5uZWxzKQorUmVmPFNjcmlwdFBy
b2Nlc3Nvck5vZGU+IFNjcmlwdFByb2Nlc3Nvck5vZGU6OmNyZWF0ZShBdWRpb0NvbnRleHRCYXNl
JiBjb250ZXh0LCBmbG9hdCBzYW1wbGVSYXRlLCBzaXplX3QgYnVmZmVyU2l6ZSwgdW5zaWduZWQg
bnVtYmVyT2ZJbnB1dENoYW5uZWxzLCB1bnNpZ25lZCBudW1iZXJPZk91dHB1dENoYW5uZWxzKQog
ewogICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFNjcmlwdFByb2Nlc3Nvck5vZGUoY29udGV4dCwg
c2FtcGxlUmF0ZSwgYnVmZmVyU2l6ZSwgbnVtYmVyT2ZJbnB1dENoYW5uZWxzLCBudW1iZXJPZk91
dHB1dENoYW5uZWxzKSk7CiB9CiAKLVNjcmlwdFByb2Nlc3Nvck5vZGU6OlNjcmlwdFByb2Nlc3Nv
ck5vZGUoQXVkaW9Db250ZXh0JiBjb250ZXh0LCBmbG9hdCBzYW1wbGVSYXRlLCBzaXplX3QgYnVm
ZmVyU2l6ZSwgdW5zaWduZWQgbnVtYmVyT2ZJbnB1dENoYW5uZWxzLCB1bnNpZ25lZCBudW1iZXJP
Zk91dHB1dENoYW5uZWxzKQorU2NyaXB0UHJvY2Vzc29yTm9kZTo6U2NyaXB0UHJvY2Vzc29yTm9k
ZShBdWRpb0NvbnRleHRCYXNlJiBjb250ZXh0LCBmbG9hdCBzYW1wbGVSYXRlLCBzaXplX3QgYnVm
ZmVyU2l6ZSwgdW5zaWduZWQgbnVtYmVyT2ZJbnB1dENoYW5uZWxzLCB1bnNpZ25lZCBudW1iZXJP
Zk91dHB1dENoYW5uZWxzKQogICAgIDogQXVkaW9Ob2RlKGNvbnRleHQsIHNhbXBsZVJhdGUpCiAg
ICAgLCBBY3RpdmVET01PYmplY3QoY29udGV4dC5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpCiAg
ICAgLCBtX2RvdWJsZUJ1ZmZlckluZGV4KDApCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmF1ZGlvL1NjcmlwdFByb2Nlc3Nvck5vZGUuaCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViYXVkaW8vU2NyaXB0UHJvY2Vzc29yTm9kZS5oCmluZGV4IDVhNGU3Y2U0NzUyMmVm
MjhlYmYyZmQxNzk2YWY1ODRiYTc1YjQxMzMuLjRjMTRhMDc1N2RmNWM1ZTYyZGZlOTZhODhlYjQy
YjQ3ZjE1ZTcyNTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8v
U2NyaXB0UHJvY2Vzc29yTm9kZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVk
aW8vU2NyaXB0UHJvY2Vzc29yTm9kZS5oCkBAIC01Miw3ICs1Miw3IEBAIHB1YmxpYzoKICAgICAv
LyBUaGlzIHZhbHVlIGNvbnRyb2xzIGhvdyBmcmVxdWVudGx5IHRoZSBvbmF1ZGlvcHJvY2VzcyBl
dmVudCBoYW5kbGVyIGlzIGNhbGxlZCBhbmQgaG93IG1hbnkgc2FtcGxlLWZyYW1lcyBuZWVkIHRv
IGJlIHByb2Nlc3NlZCBlYWNoIGNhbGwuCiAgICAgLy8gTG93ZXIgbnVtYmVycyBmb3IgYnVmZmVy
U2l6ZSB3aWxsIHJlc3VsdCBpbiBhIGxvd2VyIChiZXR0ZXIpIGxhdGVuY3kuIEhpZ2hlciBudW1i
ZXJzIHdpbGwgYmUgbmVjZXNzYXJ5IHRvIGF2b2lkIGF1ZGlvIGJyZWFrdXAgYW5kIGdsaXRjaGVz
LgogICAgIC8vIFRoZSB2YWx1ZSBjaG9zZW4gbXVzdCBjYXJlZnVsbHkgYmFsYW5jZSBiZXR3ZWVu
IGxhdGVuY3kgYW5kIGF1ZGlvIHF1YWxpdHkuCi0gICAgc3RhdGljIFJlZjxTY3JpcHRQcm9jZXNz
b3JOb2RlPiBjcmVhdGUoQXVkaW9Db250ZXh0JiwgZmxvYXQgc2FtcGxlUmF0ZSwgc2l6ZV90IGJ1
ZmZlclNpemUsIHVuc2lnbmVkIG51bWJlck9mSW5wdXRDaGFubmVscywgdW5zaWduZWQgbnVtYmVy
T2ZPdXRwdXRDaGFubmVscyk7CisgICAgc3RhdGljIFJlZjxTY3JpcHRQcm9jZXNzb3JOb2RlPiBj
cmVhdGUoQXVkaW9Db250ZXh0QmFzZSYsIGZsb2F0IHNhbXBsZVJhdGUsIHNpemVfdCBidWZmZXJT
aXplLCB1bnNpZ25lZCBudW1iZXJPZklucHV0Q2hhbm5lbHMsIHVuc2lnbmVkIG51bWJlck9mT3V0
cHV0Q2hhbm5lbHMpOwogCiAgICAgdmlydHVhbCB+U2NyaXB0UHJvY2Vzc29yTm9kZSgpOwogCkBA
IC03MSw3ICs3MSw3IEBAIHByaXZhdGU6CiAgICAgZG91YmxlIHRhaWxUaW1lKCkgY29uc3Qgb3Zl
cnJpZGU7CiAgICAgZG91YmxlIGxhdGVuY3lUaW1lKCkgY29uc3Qgb3ZlcnJpZGU7CiAKLSAgICBT
Y3JpcHRQcm9jZXNzb3JOb2RlKEF1ZGlvQ29udGV4dCYsIGZsb2F0IHNhbXBsZVJhdGUsIHNpemVf
dCBidWZmZXJTaXplLCB1bnNpZ25lZCBudW1iZXJPZklucHV0Q2hhbm5lbHMsIHVuc2lnbmVkIG51
bWJlck9mT3V0cHV0Q2hhbm5lbHMpOworICAgIFNjcmlwdFByb2Nlc3Nvck5vZGUoQXVkaW9Db250
ZXh0QmFzZSYsIGZsb2F0IHNhbXBsZVJhdGUsIHNpemVfdCBidWZmZXJTaXplLCB1bnNpZ25lZCBu
dW1iZXJPZklucHV0Q2hhbm5lbHMsIHVuc2lnbmVkIG51bWJlck9mT3V0cHV0Q2hhbm5lbHMpOwog
CiAgICAgdm9pZCBmaXJlUHJvY2Vzc0V2ZW50KCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViYXVkaW8vV2F2ZVNoYXBlck5vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJhdWRpby9XYXZlU2hhcGVyTm9kZS5jcHAKaW5kZXggNmU3ZThkZDFjOWMxOWZh
M2M4NWUzZDlkODU1YWI5ZjQ1Nzg1Yjc5MC4uYWU0YWY5ZjIzMmY3NTEzNmMwODFhZmUxNGJkN2E3
OTU2YzA1Mjk2ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9X
YXZlU2hhcGVyTm9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9X
YXZlU2hhcGVyTm9kZS5jcHAKQEAgLTM1LDcgKzM1LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
CiBXVEZfTUFLRV9JU09fQUxMT0NBVEVEX0lNUEwoV2F2ZVNoYXBlck5vZGUpOwogCi1XYXZlU2hh
cGVyTm9kZTo6V2F2ZVNoYXBlck5vZGUoQXVkaW9Db250ZXh0JiBjb250ZXh0KQorV2F2ZVNoYXBl
ck5vZGU6OldhdmVTaGFwZXJOb2RlKEF1ZGlvQ29udGV4dEJhc2UmIGNvbnRleHQpCiAgICAgOiBB
dWRpb0Jhc2ljUHJvY2Vzc29yTm9kZShjb250ZXh0LCBjb250ZXh0LnNhbXBsZVJhdGUoKSkKIHsK
ICAgICBzZXROb2RlVHlwZShOb2RlVHlwZVdhdmVTaGFwZXIpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9XYXZlU2hhcGVyTm9kZS5oIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJhdWRpby9XYXZlU2hhcGVyTm9kZS5oCmluZGV4IGY0OWUzNDliYzNkYzhj
MjliNGE2ZTYzZGZkYmY5ODY0Yjk2Zjg2ODAuLjVmNDkzMjhiMjJkMGViZTVkNmVmNmQwM2M2YWU2
ZDZmZmMxYTExMGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8v
V2F2ZVNoYXBlck5vZGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1dh
dmVTaGFwZXJOb2RlLmgKQEAgLTMzLDcgKzMzLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xh
c3MgV2F2ZVNoYXBlck5vZGUgZmluYWwgOiBwdWJsaWMgQXVkaW9CYXNpY1Byb2Nlc3Nvck5vZGUg
ewogICAgIFdURl9NQUtFX0lTT19BTExPQ0FURUQoV2F2ZVNoYXBlck5vZGUpOwogcHVibGljOgot
ICAgIHN0YXRpYyBSZWY8V2F2ZVNoYXBlck5vZGU+IGNyZWF0ZShBdWRpb0NvbnRleHQmIGNvbnRl
eHQpCisgICAgc3RhdGljIFJlZjxXYXZlU2hhcGVyTm9kZT4gY3JlYXRlKEF1ZGlvQ29udGV4dEJh
c2UmIGNvbnRleHQpCiAgICAgewogICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBXYXZlU2hh
cGVyTm9kZShjb250ZXh0KSk7CiAgICAgfQpAQCAtNDksNyArNDksNyBAQCBwdWJsaWM6CiAgICAg
ZG91YmxlIGxhdGVuY3koKSBjb25zdCB7IHJldHVybiBsYXRlbmN5VGltZSgpOyB9CiAKIHByaXZh
dGU6ICAgIAotICAgIGV4cGxpY2l0IFdhdmVTaGFwZXJOb2RlKEF1ZGlvQ29udGV4dCYpOyAgICAK
KyAgICBleHBsaWNpdCBXYXZlU2hhcGVyTm9kZShBdWRpb0NvbnRleHRCYXNlJik7CiAKICAgICBX
YXZlU2hhcGVyUHJvY2Vzc29yKiB3YXZlU2hhcGVyUHJvY2Vzc29yKCkgeyByZXR1cm4gc3RhdGlj
X2Nhc3Q8V2F2ZVNoYXBlclByb2Nlc3Nvcio+KHByb2Nlc3NvcigpKTsgfQogfTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vV2ViS2l0QXVkaW9Db250ZXh0LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vV2ViS2l0QXVkaW9Db250ZXh0LmNw
cApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi40MWQxYzE1ZDQwZWJiNTdhMjE5NzZmN2Y3M2IwNWQzODYwZjMwYTZkCi0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9XZWJLaXRB
dWRpb0NvbnRleHQuY3BwCkBAIC0wLDAgKzEsMTM5NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAy
MDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFS
RQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OCisgKiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKKyAqIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJj
b25maWcuaCIKKworI2lmIEVOQUJMRShXRUJfQVVESU8pCisKKyNpbmNsdWRlICJXZWJLaXRBdWRp
b0NvbnRleHQuaCIKKworI2luY2x1ZGUgIkFuYWx5c2VyTm9kZS5oIgorI2luY2x1ZGUgIkFzeW5j
QXVkaW9EZWNvZGVyLmgiCisjaW5jbHVkZSAiQXVkaW9CdWZmZXIuaCIKKyNpbmNsdWRlICJBdWRp
b0J1ZmZlckNhbGxiYWNrLmgiCisjaW5jbHVkZSAiQXVkaW9CdWZmZXJTb3VyY2VOb2RlLmgiCisj
aW5jbHVkZSAiQXVkaW9MaXN0ZW5lci5oIgorI2luY2x1ZGUgIkF1ZGlvTm9kZUlucHV0LmgiCisj
aW5jbHVkZSAiQXVkaW9Ob2RlT3V0cHV0LmgiCisjaW5jbHVkZSAiQXVkaW9TZXNzaW9uLmgiCisj
aW5jbHVkZSAiQmlxdWFkRmlsdGVyTm9kZS5oIgorI2luY2x1ZGUgIkNoYW5uZWxNZXJnZXJOb2Rl
LmgiCisjaW5jbHVkZSAiQ2hhbm5lbFNwbGl0dGVyTm9kZS5oIgorI2luY2x1ZGUgIkNvbnZvbHZl
ck5vZGUuaCIKKyNpbmNsdWRlICJEZWZhdWx0QXVkaW9EZXN0aW5hdGlvbk5vZGUuaCIKKyNpbmNs
dWRlICJEZWxheU5vZGUuaCIKKyNpbmNsdWRlICJEb2N1bWVudC5oIgorI2luY2x1ZGUgIkR5bmFt
aWNzQ29tcHJlc3Nvck5vZGUuaCIKKyNpbmNsdWRlICJFdmVudE5hbWVzLmgiCisjaW5jbHVkZSAi
RkZURnJhbWUuaCIKKyNpbmNsdWRlICJGcmFtZS5oIgorI2luY2x1ZGUgIkZyYW1lTG9hZGVyLmgi
CisjaW5jbHVkZSAiR2Fpbk5vZGUuaCIKKyNpbmNsdWRlICJHZW5lcmljRXZlbnRRdWV1ZS5oIgor
I2luY2x1ZGUgIkhSVEZEYXRhYmFzZUxvYWRlci5oIgorI2luY2x1ZGUgIkhSVEZQYW5uZXIuaCIK
KyNpbmNsdWRlICJKU0RPTVByb21pc2VEZWZlcnJlZC5oIgorI2luY2x1ZGUgIkxvZ2dpbmcuaCIK
KyNpbmNsdWRlICJOZXR3b3JraW5nQ29udGV4dC5oIgorI2luY2x1ZGUgIk9mZmxpbmVBdWRpb0Nv
bXBsZXRpb25FdmVudC5oIgorI2luY2x1ZGUgIk9mZmxpbmVBdWRpb0Rlc3RpbmF0aW9uTm9kZS5o
IgorI2luY2x1ZGUgIk9zY2lsbGF0b3JOb2RlLmgiCisjaW5jbHVkZSAiUGFnZS5oIgorI2luY2x1
ZGUgIlBlcmlvZGljV2F2ZS5oIgorI2luY2x1ZGUgIlBsYXRmb3JtTWVkaWFTZXNzaW9uTWFuYWdl
ci5oIgorI2luY2x1ZGUgIlNjcmlwdENvbnRyb2xsZXIuaCIKKyNpbmNsdWRlICJTY3JpcHRQcm9j
ZXNzb3JOb2RlLmgiCisjaW5jbHVkZSAiV2F2ZVNoYXBlck5vZGUuaCIKKyNpbmNsdWRlICJXZWJL
aXRBdWRpb1Bhbm5lck5vZGUuaCIKKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9TY3JpcHRDYWxs
U3RhY2suaD4KKworI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCisjaW5jbHVkZSAiTWVkaWFTdHJl
YW0uaCIKKyNpbmNsdWRlICJNZWRpYVN0cmVhbUF1ZGlvRGVzdGluYXRpb25Ob2RlLmgiCisjaW5j
bHVkZSAiTWVkaWFTdHJlYW1BdWRpb1NvdXJjZS5oIgorI2luY2x1ZGUgIk1lZGlhU3RyZWFtQXVk
aW9Tb3VyY2VOb2RlLmgiCisjZW5kaWYKKworI2lmIEVOQUJMRShWSURFTykKKyNpbmNsdWRlICJI
VE1MTWVkaWFFbGVtZW50LmgiCisjaW5jbHVkZSAiTWVkaWFFbGVtZW50QXVkaW9Tb3VyY2VOb2Rl
LmgiCisjZW5kaWYKKworI2lmIERFQlVHX0FVRElPTk9ERV9SRUZFUkVOQ0VTCisjaW5jbHVkZSA8
c3RkaW8uaD4KKyNlbmRpZgorCisjaWYgVVNFKEdTVFJFQU1FUikKKyNpbmNsdWRlICJHU3RyZWFt
ZXJDb21tb24uaCIKKyNlbmRpZgorCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKKyNpbmNsdWRl
ICJTY3JpcHRDb250cm9sbGVyLmgiCisjaW5jbHVkZSAiU2V0dGluZ3MuaCIKKyNlbmRpZgorCisj
aW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvQXJyYXlCdWZmZXIuaD4KKyNpbmNsdWRlIDx3dGYvQXRv
bWljcy5oPgorI2luY2x1ZGUgPHd0Zi9Jc29NYWxsb2NJbmxpbmVzLmg+CisjaW5jbHVkZSA8d3Rm
L01haW5UaHJlYWQuaD4KKyNpbmNsdWRlIDx3dGYvUmVmLmg+CisjaW5jbHVkZSA8d3RmL1JlZkNv
dW50ZWQuaD4KKyNpbmNsdWRlIDx3dGYvU2NvcGUuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZT
dHJpbmcuaD4KKworY29uc3QgdW5zaWduZWQgTWF4UGVyaW9kaWNXYXZlTGVuZ3RoID0gNDA5NjsK
KworbmFtZXNwYWNlIFdlYkNvcmUgeworCitXVEZfTUFLRV9JU09fQUxMT0NBVEVEX0lNUEwoV2Vi
S2l0QXVkaW9Db250ZXh0KTsKKworI2RlZmluZSBSRUxFQVNFX0xPR19JRl9BTExPV0VEKGZtdCwg
Li4uKSBSRUxFQVNFX0xPR19JRihkb2N1bWVudCgpICYmIGRvY3VtZW50KCktPnBhZ2UoKSAmJiBk
b2N1bWVudCgpLT5wYWdlKCktPmlzQWx3YXlzT25Mb2dnaW5nQWxsb3dlZCgpLCBNZWRpYSwgIiVw
IC0gV2ViS2l0QXVkaW9Db250ZXh0OjoiIGZtdCwgdGhpcywgIyNfX1ZBX0FSR1NfXykKKworYm9v
bCBXZWJLaXRBdWRpb0NvbnRleHQ6OmlzU2FtcGxlUmF0ZVJhbmdlR29vZChmbG9hdCBzYW1wbGVS
YXRlKQoreworICAgIC8vIEZJWE1FOiBJdCB3b3VsZCBiZSBuaWNlIGlmIHRoZSBtaW5pbXVtIHNh
bXBsZS1yYXRlIGNvdWxkIGJlIGxlc3MgdGhhbiA0NC4xS0h6LAorICAgIC8vIGJ1dCB0aGF0IHdp
bGwgcmVxdWlyZSBzb21lIGZpeGVzIGluIEhSVEZQYW5uZXI6OmZmdFNpemVGb3JTYW1wbGVSYXRl
KCksIGFuZCBzb21lIHRlc3RpbmcgdGhlcmUuCisgICAgcmV0dXJuIHNhbXBsZVJhdGUgPj0gNDQx
MDAgJiYgc2FtcGxlUmF0ZSA8PSA5NjAwMDsKK30KKworI2lmIE9TKFdJTkRPV1MpCisvLyBEb24n
dCBhbGxvdyBtb3JlIHRoYW4gdGhpcyBudW1iZXIgb2Ygc2ltdWx0YW5lb3VzIEF1ZGlvQ29udGV4
dHMgdGFsa2luZyB0byBoYXJkd2FyZS4KK2NvbnN0ZXhwciB1bnNpZ25lZCBtYXhIYXJkd2FyZUNv
bnRleHRzID0gNDsKKyNlbmRpZgordW5zaWduZWQgV2ViS2l0QXVkaW9Db250ZXh0OjpzX2hhcmR3
YXJlQ29udGV4dENvdW50ID0gMDsKKworRXhjZXB0aW9uT3I8UmVmPFdlYktpdEF1ZGlvQ29udGV4
dD4+IFdlYktpdEF1ZGlvQ29udGV4dDo6Y3JlYXRlKERvY3VtZW50JiBkb2N1bWVudCkKK3sKKyAg
ICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworI2lmIE9TKFdJTkRPV1MpCisgICAgaWYgKHNfaGFy
ZHdhcmVDb250ZXh0Q291bnQgPj0gbWF4SGFyZHdhcmVDb250ZXh0cykKKyAgICAgICAgcmV0dXJu
IEV4Y2VwdGlvbiB7IFF1b3RhRXhjZWVkZWRFcnJvciB9OworI2VuZGlmCisKKyAgICBhdXRvIGF1
ZGlvQ29udGV4dCA9IGFkb3B0UmVmKCpuZXcgV2ViS2l0QXVkaW9Db250ZXh0KGRvY3VtZW50KSk7
CisgICAgYXVkaW9Db250ZXh0LT5zdXNwZW5kSWZOZWVkZWQoKTsKKyAgICByZXR1cm4gYXVkaW9D
b250ZXh0OworfQorCisvLyBDb25zdHJ1Y3RvciBmb3IgcmVuZGVyaW5nIHRvIHRoZSBhdWRpbyBo
YXJkd2FyZS4KK1dlYktpdEF1ZGlvQ29udGV4dDo6V2ViS2l0QXVkaW9Db250ZXh0KERvY3VtZW50
JiBkb2N1bWVudCkKKyAgICA6IEF1ZGlvQ29udGV4dEJhc2UoZG9jdW1lbnQpCisjaWYgIVJFTEVB
U0VfTE9HX0RJU0FCTEVECisgICAgLCBtX2xvZ2dlcihkb2N1bWVudC5sb2dnZXIoKSkKKyAgICAs
IG1fbG9nSWRlbnRpZmllcih1bmlxdWVMb2dJZGVudGlmaWVyKCkpCisjZW5kaWYKKyAgICAsIG1f
bWVkaWFTZXNzaW9uKFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpjcmVhdGUoUGxhdGZvcm1NZWRpYVNl
c3Npb25NYW5hZ2VyOjpzaGFyZWRNYW5hZ2VyKCksICp0aGlzKSkKKyAgICAsIG1fZXZlbnRRdWV1
ZShNYWluVGhyZWFkR2VuZXJpY0V2ZW50UXVldWU6OmNyZWF0ZSgqdGhpcykpCit7CisgICAgLy8g
QWNjb3JkaW5nIHRvIHNwZWMgQXVkaW9Db250ZXh0IG11c3QgZGllIG9ubHkgYWZ0ZXIgcGFnZSBu
YXZpZ2F0ZS4KKyAgICAvLyBMZXRzIG1hcmsgaXQgYXMgQWN0aXZlRE9NT2JqZWN0IHdpdGggcGVu
ZGluZyBhY3Rpdml0eSBhbmQgdW5tYXJrIGl0IGluIGNsZWFyIG1ldGhvZC4KKyAgICBtYWtlUGVu
ZGluZ0FjdGl2aXR5KCk7CisKKyAgICBjb25zdHJ1Y3RDb21tb24oKTsKKworICAgIG1fZGVzdGlu
YXRpb25Ob2RlID0gRGVmYXVsdEF1ZGlvRGVzdGluYXRpb25Ob2RlOjpjcmVhdGUoKnRoaXMpOwor
CisgICAgLy8gSW5pdGlhbGl6ZSB0aGUgZGVzdGluYXRpb24gbm9kZSdzIG11dGVkIHN0YXRlIHRv
IG1hdGNoIHRoZSBwYWdlJ3MgY3VycmVudCBtdXRlZCBzdGF0ZS4KKyAgICBwYWdlTXV0ZWRTdGF0
ZURpZENoYW5nZSgpOworCisgICAgZG9jdW1lbnQuYWRkQXVkaW9Qcm9kdWNlcigqdGhpcyk7Cisg
ICAgZG9jdW1lbnQucmVnaXN0ZXJGb3JWaXNpYmlsaXR5U3RhdGVDaGFuZ2VkQ2FsbGJhY2tzKCp0
aGlzKTsKK30KKworLy8gQ29uc3RydWN0b3IgZm9yIG9mZmxpbmUgKG5vbi1yZWFsdGltZSkgcmVu
ZGVyaW5nLgorV2ViS2l0QXVkaW9Db250ZXh0OjpXZWJLaXRBdWRpb0NvbnRleHQoRG9jdW1lbnQm
IGRvY3VtZW50LCBBdWRpb0J1ZmZlciogcmVuZGVyVGFyZ2V0KQorICAgIDogQXVkaW9Db250ZXh0
QmFzZShkb2N1bWVudCkKKyNpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKKyAgICAsIG1fbG9nZ2Vy
KGRvY3VtZW50LmxvZ2dlcigpKQorICAgICwgbV9sb2dJZGVudGlmaWVyKHVuaXF1ZUxvZ0lkZW50
aWZpZXIoKSkKKyNlbmRpZgorICAgICwgbV9pc09mZmxpbmVDb250ZXh0KHRydWUpCisgICAgLCBt
X21lZGlhU2Vzc2lvbihQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6Y3JlYXRlKFBsYXRmb3JtTWVkaWFT
ZXNzaW9uTWFuYWdlcjo6c2hhcmVkTWFuYWdlcigpLCAqdGhpcykpCisgICAgLCBtX2V2ZW50UXVl
dWUoTWFpblRocmVhZEdlbmVyaWNFdmVudFF1ZXVlOjpjcmVhdGUoKnRoaXMpKQorICAgICwgbV9y
ZW5kZXJUYXJnZXQocmVuZGVyVGFyZ2V0KQoreworICAgIGNvbnN0cnVjdENvbW1vbigpOworCisg
ICAgLy8gQ3JlYXRlIGEgbmV3IGRlc3RpbmF0aW9uIGZvciBvZmZsaW5lIHJlbmRlcmluZy4KKyAg
ICBtX2Rlc3RpbmF0aW9uTm9kZSA9IE9mZmxpbmVBdWRpb0Rlc3RpbmF0aW9uTm9kZTo6Y3JlYXRl
KCp0aGlzLCBtX3JlbmRlclRhcmdldC5nZXQoKSk7Cit9CisKK3ZvaWQgV2ViS2l0QXVkaW9Db250
ZXh0Ojpjb25zdHJ1Y3RDb21tb24oKQoreworICAgIEZGVEZyYW1lOjppbml0aWFsaXplKCk7CisK
KyAgICBtX2xpc3RlbmVyID0gQXVkaW9MaXN0ZW5lcjo6Y3JlYXRlKCk7CisKKyAgICBBU1NFUlQo
ZG9jdW1lbnQoKSk7CisgICAgaWYgKGRvY3VtZW50KCktPmF1ZGlvUGxheWJhY2tSZXF1aXJlc1Vz
ZXJHZXN0dXJlKCkpCisgICAgICAgIGFkZEJlaGF2aW9yUmVzdHJpY3Rpb24oUmVxdWlyZVVzZXJH
ZXN0dXJlRm9yQXVkaW9TdGFydFJlc3RyaWN0aW9uKTsKKyAgICBlbHNlCisgICAgICAgIG1fcmVz
dHJpY3Rpb25zID0gTm9SZXN0cmljdGlvbnM7CisKKyNpZiBQTEFURk9STShDT0NPQSkKKyAgICBh
ZGRCZWhhdmlvclJlc3RyaWN0aW9uKFJlcXVpcmVQYWdlQ29uc2VudEZvckF1ZGlvU3RhcnRSZXN0
cmljdGlvbik7CisjZW5kaWYKK30KKworV2ViS2l0QXVkaW9Db250ZXh0Ojp+V2ViS2l0QXVkaW9D
b250ZXh0KCkKK3sKKyNpZiBERUJVR19BVURJT05PREVfUkVGRVJFTkNFUworICAgIGZwcmludGYo
c3RkZXJyLCAiJXA6IFdlYktpdEF1ZGlvQ29udGV4dDo6fldlYktpdEF1ZGlvQ29udGV4dCgpXG4i
LCB0aGlzKTsKKyNlbmRpZgorICAgIEFTU0VSVCghbV9pc0luaXRpYWxpemVkKTsKKyAgICBBU1NF
UlQobV9pc1N0b3BTY2hlZHVsZWQpOworICAgIEFTU0VSVChtX25vZGVzVG9EZWxldGUuaXNFbXB0
eSgpKTsKKyAgICBBU1NFUlQobV9yZWZlcmVuY2VkTm9kZXMuaXNFbXB0eSgpKTsKKyAgICBBU1NF
UlQobV9maW5pc2hlZE5vZGVzLmlzRW1wdHkoKSk7IC8vIEZJWE1FIChidWcgMTA1ODcwKTogVGhp
cyBhc3NlcnRpb24gZmFpbHMgb24gdGVzdHMgc29tZXRpbWVzLgorICAgIEFTU0VSVChtX2F1dG9t
YXRpY1B1bGxOb2Rlcy5pc0VtcHR5KCkpOworICAgIGlmIChtX2F1dG9tYXRpY1B1bGxOb2Rlc05l
ZWRVcGRhdGluZykKKyAgICAgICAgbV9yZW5kZXJpbmdBdXRvbWF0aWNQdWxsTm9kZXMucmVzaXpl
KG1fYXV0b21hdGljUHVsbE5vZGVzLnNpemUoKSk7CisgICAgQVNTRVJUKG1fcmVuZGVyaW5nQXV0
b21hdGljUHVsbE5vZGVzLmlzRW1wdHkoKSk7CisgICAgLy8gRklYTUU6IENhbiB3ZSBhc3NlcnQg
dGhhdCBtX2RlZmVycmVkRmluaXNoRGVyZWZMaXN0IGlzIGVtcHR5PworCisgICAgaWYgKCFpc09m
ZmxpbmVDb250ZXh0KCkgJiYgc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKSB7CisgICAgICAgIGRv
Y3VtZW50KCktPnJlbW92ZUF1ZGlvUHJvZHVjZXIoKnRoaXMpOworICAgICAgICBkb2N1bWVudCgp
LT51bnJlZ2lzdGVyRm9yVmlzaWJpbGl0eVN0YXRlQ2hhbmdlZENhbGxiYWNrcygqdGhpcyk7Cisg
ICAgfQorfQorCit2b2lkIFdlYktpdEF1ZGlvQ29udGV4dDo6bGF6eUluaXRpYWxpemUoKQorewor
ICAgIEFTU0VSVCghbV9pc1N0b3BTY2hlZHVsZWQpOworCisgICAgaWYgKG1faXNJbml0aWFsaXpl
ZCkKKyAgICAgICAgcmV0dXJuOworCisgICAgLy8gRG9uJ3QgYWxsb3cgdGhlIGNvbnRleHQgdG8g
aW5pdGlhbGl6ZSBhIHNlY29uZCB0aW1lIGFmdGVyIGl0J3MgYWxyZWFkeSBiZWVuIGV4cGxpY2l0
bHkgdW5pbml0aWFsaXplZC4KKyAgICBBU1NFUlQoIW1faXNBdWRpb1RocmVhZEZpbmlzaGVkKTsK
KyAgICBpZiAobV9pc0F1ZGlvVGhyZWFkRmluaXNoZWQpCisgICAgICAgIHJldHVybjsKKworICAg
IGlmIChtX2Rlc3RpbmF0aW9uTm9kZSkgeworICAgICAgICBtX2Rlc3RpbmF0aW9uTm9kZS0+aW5p
dGlhbGl6ZSgpOworCisgICAgICAgIGlmICghaXNPZmZsaW5lQ29udGV4dCgpKSB7CisgICAgICAg
ICAgICAvLyBUaGlzIHN0YXJ0cyB0aGUgYXVkaW8gdGhyZWFkLiBUaGUgZGVzdGluYXRpb24gbm9k
ZSdzIHByb3ZpZGVJbnB1dCgpIG1ldGhvZCB3aWxsIG5vdyBiZSBjYWxsZWQgcmVwZWF0ZWRseSB0
byByZW5kZXIgYXVkaW8uCisgICAgICAgICAgICAvLyBFYWNoIHRpbWUgcHJvdmlkZUlucHV0KCkg
aXMgY2FsbGVkLCBhIHBvcnRpb24gb2YgdGhlIGF1ZGlvIHN0cmVhbSBpcyByZW5kZXJlZC4gTGV0
J3MgY2FsbCB0aGlzIHRpbWUgcGVyaW9kIGEgInJlbmRlciBxdWFudHVtIi4KKyAgICAgICAgICAg
IC8vIE5PVEU6IGZvciBub3cgZGVmYXVsdCBBdWRpb0NvbnRleHQgZG9lcyBub3QgbmVlZCBhbiBl
eHBsaWNpdCBzdGFydFJlbmRlcmluZygpIGNhbGwgZnJvbSBKYXZhU2NyaXB0LgorICAgICAgICAg
ICAgLy8gV2UgbWF5IHdhbnQgdG8gY29uc2lkZXIgcmVxdWlyaW5nIGl0IGZvciBzeW1tZXRyeSB3
aXRoIE9mZmxpbmVBdWRpb0NvbnRleHQuCisgICAgICAgICAgICBzdGFydFJlbmRlcmluZygpOwor
ICAgICAgICAgICAgKytzX2hhcmR3YXJlQ29udGV4dENvdW50OworICAgICAgICB9CisgICAgfQor
ICAgIG1faXNJbml0aWFsaXplZCA9IHRydWU7Cit9CisKK3ZvaWQgV2ViS2l0QXVkaW9Db250ZXh0
OjpjbGVhcigpCit7CisgICAgUmVmPFdlYktpdEF1ZGlvQ29udGV4dD4gcHJvdGVjdGVkVGhpcygq
dGhpcyk7CisKKyAgICAvLyBXZSBoYXZlIHRvIHJlbGVhc2Ugb3VyIHJlZmVyZW5jZSB0byB0aGUg
ZGVzdGluYXRpb24gbm9kZSBiZWZvcmUgdGhlIGNvbnRleHQgd2lsbCBldmVyIGJlIGRlbGV0ZWQg
c2luY2UgdGhlIGRlc3RpbmF0aW9uIG5vZGUgaG9sZHMgYSByZWZlcmVuY2UgdG8gdGhlIGNvbnRl
eHQuCisgICAgaWYgKG1fZGVzdGluYXRpb25Ob2RlKQorICAgICAgICBtX2Rlc3RpbmF0aW9uTm9k
ZSA9IG51bGxwdHI7CisKKyAgICAvLyBBdWRpbyB0aHJlYWQgaXMgZGVhZC4gTm9ib2R5IHdpbGwg
c2NoZWR1bGUgbm9kZSBkZWxldGlvbiBhY3Rpb24uIExldCdzIGRvIGl0IG91cnNlbHZlcy4KKyAg
ICBkbyB7CisgICAgICAgIGRlbGV0ZU1hcmtlZE5vZGVzKCk7CisgICAgICAgIG1fbm9kZXNUb0Rl
bGV0ZS5hcHBlbmRWZWN0b3IobV9ub2Rlc01hcmtlZEZvckRlbGV0aW9uKTsKKyAgICAgICAgbV9u
b2Rlc01hcmtlZEZvckRlbGV0aW9uLmNsZWFyKCk7CisgICAgfSB3aGlsZSAobV9ub2Rlc1RvRGVs
ZXRlLnNpemUoKSk7CisKKyAgICBjbGVhclBlbmRpbmdBY3Rpdml0eSgpOworfQorCit2b2lkIFdl
YktpdEF1ZGlvQ29udGV4dDo6dW5pbml0aWFsaXplKCkKK3sKKyAgICBBTFdBWVNfTE9HKExPR0lE
RU5USUZJRVIpOworCisgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKworICAgIGlmICghbV9p
c0luaXRpYWxpemVkKQorICAgICAgICByZXR1cm47CisKKyAgICAvLyBUaGlzIHN0b3BzIHRoZSBh
dWRpbyB0aHJlYWQgYW5kIGFsbCBhdWRpbyByZW5kZXJpbmcuCisgICAgaWYgKG1fZGVzdGluYXRp
b25Ob2RlKQorICAgICAgICBtX2Rlc3RpbmF0aW9uTm9kZS0+dW5pbml0aWFsaXplKCk7CisKKyAg
ICAvLyBEb24ndCBhbGxvdyB0aGUgY29udGV4dCB0byBpbml0aWFsaXplIGEgc2Vjb25kIHRpbWUg
YWZ0ZXIgaXQncyBhbHJlYWR5IGJlZW4gZXhwbGljaXRseSB1bmluaXRpYWxpemVkLgorICAgIG1f
aXNBdWRpb1RocmVhZEZpbmlzaGVkID0gdHJ1ZTsKKworICAgIGlmICghaXNPZmZsaW5lQ29udGV4
dCgpKSB7CisgICAgICAgIEFTU0VSVChzX2hhcmR3YXJlQ29udGV4dENvdW50KTsKKyAgICAgICAg
LS1zX2hhcmR3YXJlQ29udGV4dENvdW50OworCisgICAgICAgIC8vIE9mZmxpbmUgY29udGV4dHMg
bW92ZSB0byAnQ2xvc2VkJyBzdGF0ZSB3aGVuIGRpc3BhdGNoaW5nIHRoZSBjb21wbGV0aW9uIGV2
ZW50LgorICAgICAgICBzZXRTdGF0ZShTdGF0ZTo6Q2xvc2VkKTsKKyAgICB9CisKKyAgICAvLyBH
ZXQgcmlkIG9mIHRoZSBzb3VyY2VzIHdoaWNoIG1heSBzdGlsbCBiZSBwbGF5aW5nLgorICAgIGRl
cmVmVW5maW5pc2hlZFNvdXJjZU5vZGVzKCk7CisKKyAgICBtX2lzSW5pdGlhbGl6ZWQgPSBmYWxz
ZTsKK30KKworYm9vbCBXZWJLaXRBdWRpb0NvbnRleHQ6OmlzSW5pdGlhbGl6ZWQoKSBjb25zdAor
eworICAgIHJldHVybiBtX2lzSW5pdGlhbGl6ZWQ7Cit9CisKK3ZvaWQgV2ViS2l0QXVkaW9Db250
ZXh0OjphZGRSZWFjdGlvbihTdGF0ZSBzdGF0ZSwgRE9NUHJvbWlzZURlZmVycmVkPHZvaWQ+JiYg
cHJvbWlzZSkKK3sKKyAgICBzaXplX3Qgc3RhdGVJbmRleCA9IHN0YXRpY19jYXN0PHNpemVfdD4o
c3RhdGUpOworICAgIGlmIChzdGF0ZUluZGV4ID49IG1fc3RhdGVSZWFjdGlvbnMuc2l6ZSgpKQor
ICAgICAgICBtX3N0YXRlUmVhY3Rpb25zLmdyb3coc3RhdGVJbmRleCArIDEpOworCisgICAgbV9z
dGF0ZVJlYWN0aW9uc1tzdGF0ZUluZGV4XS5hcHBlbmQoV1RGTW92ZShwcm9taXNlKSk7Cit9CisK
K3ZvaWQgV2ViS2l0QXVkaW9Db250ZXh0OjpzZXRTdGF0ZShTdGF0ZSBzdGF0ZSkKK3sKKyAgICBp
ZiAobV9zdGF0ZSA9PSBzdGF0ZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9zdGF0ZSA9IHN0
YXRlOworICAgIG1fZXZlbnRRdWV1ZS0+ZW5xdWV1ZUV2ZW50KEV2ZW50OjpjcmVhdGUoZXZlbnRO
YW1lcygpLnN0YXRlY2hhbmdlRXZlbnQsIEV2ZW50OjpDYW5CdWJibGU6OlllcywgRXZlbnQ6Oklz
Q2FuY2VsYWJsZTo6Tm8pKTsKKworICAgIHNpemVfdCBzdGF0ZUluZGV4ID0gc3RhdGljX2Nhc3Q8
c2l6ZV90PihzdGF0ZSk7CisgICAgaWYgKHN0YXRlSW5kZXggPj0gbV9zdGF0ZVJlYWN0aW9ucy5z
aXplKCkpCisgICAgICAgIHJldHVybjsKKworICAgIFZlY3RvcjxET01Qcm9taXNlRGVmZXJyZWQ8
dm9pZD4+IHJlYWN0aW9uczsKKyAgICBtX3N0YXRlUmVhY3Rpb25zW3N0YXRlSW5kZXhdLnN3YXAo
cmVhY3Rpb25zKTsKKworICAgIGZvciAoYXV0byYgcHJvbWlzZSA6IHJlYWN0aW9ucykKKyAgICAg
ICAgcHJvbWlzZS5yZXNvbHZlKCk7Cit9CisKK3ZvaWQgV2ViS2l0QXVkaW9Db250ZXh0OjpzdG9w
KCkKK3sKKyAgICBBTFdBWVNfTE9HKExPR0lERU5USUZJRVIpOworCisgICAgQVNTRVJUKGlzTWFp
blRocmVhZCgpKTsKKworICAgIC8vIFVzdWFsbHkgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCBjYWxs
cyBzdG9wIHR3aWNlLgorICAgIGlmIChtX2lzU3RvcFNjaGVkdWxlZCkKKyAgICAgICAgcmV0dXJu
OworICAgIG1faXNTdG9wU2NoZWR1bGVkID0gdHJ1ZTsKKworICAgIEFTU0VSVChkb2N1bWVudCgp
KTsKKyAgICBkb2N1bWVudCgpLT51cGRhdGVJc1BsYXlpbmdNZWRpYSgpOworCisgICAgdW5pbml0
aWFsaXplKCk7CisgICAgY2xlYXIoKTsKK30KKwordm9pZCBXZWJLaXRBdWRpb0NvbnRleHQ6OnN1
c3BlbmQoUmVhc29uRm9yU3VzcGVuc2lvbikKK3sKKyAgICBpZiAoc3RhdGUoKSA9PSBTdGF0ZTo6
UnVubmluZykgeworICAgICAgICBtX21lZGlhU2Vzc2lvbi0+YmVnaW5JbnRlcnJ1cHRpb24oUGxh
dGZvcm1NZWRpYVNlc3Npb246OlBsYXliYWNrU3VzcGVuZGVkKTsKKyAgICAgICAgZG9jdW1lbnQo
KS0+dXBkYXRlSXNQbGF5aW5nTWVkaWEoKTsKKyAgICB9Cit9CisKK3ZvaWQgV2ViS2l0QXVkaW9D
b250ZXh0OjpyZXN1bWUoKQoreworICAgIGlmIChzdGF0ZSgpID09IFN0YXRlOjpJbnRlcnJ1cHRl
ZCkgeworICAgICAgICBtX21lZGlhU2Vzc2lvbi0+ZW5kSW50ZXJydXB0aW9uKFBsYXRmb3JtTWVk
aWFTZXNzaW9uOjpNYXlSZXN1bWVQbGF5aW5nKTsKKyAgICAgICAgZG9jdW1lbnQoKS0+dXBkYXRl
SXNQbGF5aW5nTWVkaWEoKTsKKyAgICB9Cit9CisKK2NvbnN0IGNoYXIqIFdlYktpdEF1ZGlvQ29u
dGV4dDo6YWN0aXZlRE9NT2JqZWN0TmFtZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuICJXZWJLaXRB
dWRpb0NvbnRleHQiOworfQorCitEb2N1bWVudElkZW50aWZpZXIgV2ViS2l0QXVkaW9Db250ZXh0
Ojpob3N0aW5nRG9jdW1lbnRJZGVudGlmaWVyKCkgY29uc3QKK3sKKyAgICBhdXRvKiBkb2N1bWVu
dCA9IGRvd25jYXN0PERvY3VtZW50PihtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQpOworICAgIHJl
dHVybiBkb2N1bWVudCA/IGRvY3VtZW50LT5pZGVudGlmaWVyKCkgOiBEb2N1bWVudElkZW50aWZp
ZXIgeyB9OworfQorCitib29sIFdlYktpdEF1ZGlvQ29udGV4dDo6aXNTdXNwZW5kZWQoKSBjb25z
dAoreworICAgIHJldHVybiAhZG9jdW1lbnQoKSB8fCBkb2N1bWVudCgpLT5hY3RpdmVET01PYmpl
Y3RzQXJlU3VzcGVuZGVkKCkgfHwgZG9jdW1lbnQoKS0+YWN0aXZlRE9NT2JqZWN0c0FyZVN0b3Bw
ZWQoKTsKK30KKwordm9pZCBXZWJLaXRBdWRpb0NvbnRleHQ6OnZpc2liaWxpdHlTdGF0ZUNoYW5n
ZWQoKQoreworICAgIC8vIERvIG5vdCBzdXNwZW5kIGlmIGF1ZGlvIGlzIGF1ZGlibGUuCisgICAg
aWYgKCFkb2N1bWVudCgpIHx8IG1lZGlhU3RhdGUoKSA9PSBNZWRpYVByb2R1Y2VyOjpJc1BsYXlp
bmdBdWRpbyB8fCBtX2lzU3RvcFNjaGVkdWxlZCkKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYg
KGRvY3VtZW50KCktPmhpZGRlbigpKSB7CisgICAgICAgIGlmIChzdGF0ZSgpID09IFN0YXRlOjpS
dW5uaW5nKSB7CisgICAgICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJ2aXNpYmlsaXR5
U3RhdGVDaGFuZ2VkKCkgU3VzcGVuZGluZyBwbGF5YmFjayBhZnRlciBnb2luZyB0byB0aGUgYmFj
a2dyb3VuZCIpOworICAgICAgICAgICAgbV9tZWRpYVNlc3Npb24tPmJlZ2luSW50ZXJydXB0aW9u
KFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpFbnRlcmluZ0JhY2tncm91bmQpOworICAgICAgICB9Cisg
ICAgfSBlbHNlIHsKKyAgICAgICAgaWYgKHN0YXRlKCkgPT0gU3RhdGU6OkludGVycnVwdGVkKSB7
CisgICAgICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJ2aXNpYmlsaXR5U3RhdGVDaGFu
Z2VkKCkgUmVzdW1pbmcgcGxheWJhY2sgYWZ0ZXIgZW50ZXJpbmcgZm9yZWdyb3VuZCIpOworICAg
ICAgICAgICAgbV9tZWRpYVNlc3Npb24tPmVuZEludGVycnVwdGlvbihQbGF0Zm9ybU1lZGlhU2Vz
c2lvbjo6TWF5UmVzdW1lUGxheWluZyk7CisgICAgICAgIH0KKyAgICB9Cit9CisKK2Jvb2wgV2Vi
S2l0QXVkaW9Db250ZXh0Ojp3b3VsZFRhaW50T3JpZ2luKGNvbnN0IFVSTCYgdXJsKSBjb25zdAor
eworICAgIGlmICh1cmwucHJvdG9jb2xJc0RhdGEoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOwor
CisgICAgaWYgKGF1dG8qIGRvY3VtZW50ID0gdGhpcy0+ZG9jdW1lbnQoKSkKKyAgICAgICAgcmV0
dXJuICFkb2N1bWVudC0+c2VjdXJpdHlPcmlnaW4oKS5jYW5SZXF1ZXN0KHVybCk7CisKKyAgICBy
ZXR1cm4gZmFsc2U7Cit9CisKK0V4Y2VwdGlvbk9yPFJlZjxBdWRpb0J1ZmZlcj4+IFdlYktpdEF1
ZGlvQ29udGV4dDo6Y3JlYXRlQnVmZmVyKHVuc2lnbmVkIG51bWJlck9mQ2hhbm5lbHMsIHNpemVf
dCBudW1iZXJPZkZyYW1lcywgZmxvYXQgc2FtcGxlUmF0ZSkKK3sKKyAgICBhdXRvIGF1ZGlvQnVm
ZmVyID0gQXVkaW9CdWZmZXI6OmNyZWF0ZShudW1iZXJPZkNoYW5uZWxzLCBudW1iZXJPZkZyYW1l
cywgc2FtcGxlUmF0ZSk7CisgICAgaWYgKCFhdWRpb0J1ZmZlcikKKyAgICAgICAgcmV0dXJuIEV4
Y2VwdGlvbiB7IE5vdFN1cHBvcnRlZEVycm9yIH07CisgICAgcmV0dXJuIGF1ZGlvQnVmZmVyLnJl
bGVhc2VOb25OdWxsKCk7Cit9CisKK0V4Y2VwdGlvbk9yPFJlZjxBdWRpb0J1ZmZlcj4+IFdlYktp
dEF1ZGlvQ29udGV4dDo6Y3JlYXRlQnVmZmVyKEFycmF5QnVmZmVyJiBhcnJheUJ1ZmZlciwgYm9v
bCBtaXhUb01vbm8pCit7CisgICAgYXV0byBhdWRpb0J1ZmZlciA9IEF1ZGlvQnVmZmVyOjpjcmVh
dGVGcm9tQXVkaW9GaWxlRGF0YShhcnJheUJ1ZmZlci5kYXRhKCksIGFycmF5QnVmZmVyLmJ5dGVM
ZW5ndGgoKSwgbWl4VG9Nb25vLCBzYW1wbGVSYXRlKCkpOworICAgIGlmICghYXVkaW9CdWZmZXIp
CisgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBTeW50YXhFcnJvciB9OworICAgIHJldHVybiBh
dWRpb0J1ZmZlci5yZWxlYXNlTm9uTnVsbCgpOworfQorCit2b2lkIFdlYktpdEF1ZGlvQ29udGV4
dDo6ZGVjb2RlQXVkaW9EYXRhKFJlZjxBcnJheUJ1ZmZlcj4mJiBhdWRpb0RhdGEsIFJlZlB0cjxB
dWRpb0J1ZmZlckNhbGxiYWNrPiYmIHN1Y2Nlc3NDYWxsYmFjaywgUmVmUHRyPEF1ZGlvQnVmZmVy
Q2FsbGJhY2s+JiYgZXJyb3JDYWxsYmFjaykKK3sKKyAgICBpZiAoIW1fYXVkaW9EZWNvZGVyKQor
ICAgICAgICBtX2F1ZGlvRGVjb2RlciA9IG1ha2VVbmlxdWU8QXN5bmNBdWRpb0RlY29kZXI+KCk7
CisgICAgbV9hdWRpb0RlY29kZXItPmRlY29kZUFzeW5jKFdURk1vdmUoYXVkaW9EYXRhKSwgc2Ft
cGxlUmF0ZSgpLCBXVEZNb3ZlKHN1Y2Nlc3NDYWxsYmFjayksIFdURk1vdmUoZXJyb3JDYWxsYmFj
aykpOworfQorCitFeGNlcHRpb25PcjxSZWY8QXVkaW9CdWZmZXJTb3VyY2VOb2RlPj4gV2ViS2l0
QXVkaW9Db250ZXh0OjpjcmVhdGVCdWZmZXJTb3VyY2UoKQoreworICAgIEFMV0FZU19MT0coTE9H
SURFTlRJRklFUik7CisKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworCisgICAgaWYgKG1f
aXNTdG9wU2NoZWR1bGVkKQorICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgSW52YWxpZFN0YXRl
RXJyb3IgfTsKKworICAgIGxhenlJbml0aWFsaXplKCk7CisgICAgUmVmPEF1ZGlvQnVmZmVyU291
cmNlTm9kZT4gbm9kZSA9IEF1ZGlvQnVmZmVyU291cmNlTm9kZTo6Y3JlYXRlKCp0aGlzLCBzYW1w
bGVSYXRlKCkpOworCisgICAgLy8gQmVjYXVzZSB0aGlzIGlzIGFuIEF1ZGlvU2NoZWR1bGVkU291
cmNlTm9kZSwgdGhlIGNvbnRleHQga2VlcHMgYSByZWZlcmVuY2UgdW50aWwgaXQgaGFzIGZpbmlz
aGVkIHBsYXlpbmcuCisgICAgLy8gV2hlbiB0aGlzIGhhcHBlbnMsIEF1ZGlvU2NoZWR1bGVkU291
cmNlTm9kZTo6ZmluaXNoKCkgY2FsbHMgV2ViS2l0QXVkaW9Db250ZXh0Ojpub3RpZnlOb2RlRmlu
aXNoZWRQcm9jZXNzaW5nKCkuCisgICAgcmVmTm9kZShub2RlKTsKKworICAgIHJldHVybiBub2Rl
OworfQorCisjaWYgRU5BQkxFKFZJREVPKQorCitFeGNlcHRpb25PcjxSZWY8TWVkaWFFbGVtZW50
QXVkaW9Tb3VyY2VOb2RlPj4gV2ViS2l0QXVkaW9Db250ZXh0OjpjcmVhdGVNZWRpYUVsZW1lbnRT
b3VyY2UoSFRNTE1lZGlhRWxlbWVudCYgbWVkaWFFbGVtZW50KQoreworICAgIEFMV0FZU19MT0co
TE9HSURFTlRJRklFUik7CisKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworCisgICAgaWYg
KG1faXNTdG9wU2NoZWR1bGVkIHx8IG1lZGlhRWxlbWVudC5hdWRpb1NvdXJjZU5vZGUoKSkKKyAg
ICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IEludmFsaWRTdGF0ZUVycm9yIH07CisKKyAgICBsYXp5
SW5pdGlhbGl6ZSgpOworCisgICAgYXV0byBub2RlID0gTWVkaWFFbGVtZW50QXVkaW9Tb3VyY2VO
b2RlOjpjcmVhdGUoKnRoaXMsIG1lZGlhRWxlbWVudCk7CisKKyAgICBtZWRpYUVsZW1lbnQuc2V0
QXVkaW9Tb3VyY2VOb2RlKG5vZGUucHRyKCkpOworCisgICAgcmVmTm9kZShub2RlLmdldCgpKTsg
Ly8gY29udGV4dCBrZWVwcyByZWZlcmVuY2UgdW50aWwgbm9kZSBpcyBkaXNjb25uZWN0ZWQKKyAg
ICByZXR1cm4gbm9kZTsKK30KKworI2VuZGlmCisKKyNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQor
CitFeGNlcHRpb25PcjxSZWY8TWVkaWFTdHJlYW1BdWRpb1NvdXJjZU5vZGU+PiBXZWJLaXRBdWRp
b0NvbnRleHQ6OmNyZWF0ZU1lZGlhU3RyZWFtU291cmNlKE1lZGlhU3RyZWFtJiBtZWRpYVN0cmVh
bSkKK3sKKyAgICBBTFdBWVNfTE9HKExPR0lERU5USUZJRVIpOworCisgICAgQVNTRVJUKGlzTWFp
blRocmVhZCgpKTsKKworICAgIGlmIChtX2lzU3RvcFNjaGVkdWxlZCkKKyAgICAgICAgcmV0dXJu
IEV4Y2VwdGlvbiB7IEludmFsaWRTdGF0ZUVycm9yIH07CisKKyAgICBhdXRvIGF1ZGlvVHJhY2tz
ID0gbWVkaWFTdHJlYW0uZ2V0QXVkaW9UcmFja3MoKTsKKyAgICBpZiAoYXVkaW9UcmFja3MuaXNF
bXB0eSgpKQorICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgSW52YWxpZFN0YXRlRXJyb3IgfTsK
KworICAgIE1lZGlhU3RyZWFtVHJhY2sqIHByb3ZpZGVyVHJhY2sgPSBudWxscHRyOworICAgIGZv
ciAoYXV0byYgdHJhY2sgOiBhdWRpb1RyYWNrcykgeworICAgICAgICBpZiAodHJhY2stPmF1ZGlv
U291cmNlUHJvdmlkZXIoKSkgeworICAgICAgICAgICAgcHJvdmlkZXJUcmFjayA9IHRyYWNrLmdl
dCgpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICB9CisgICAgaWYgKCFwcm92
aWRlclRyYWNrKQorICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgSW52YWxpZFN0YXRlRXJyb3Ig
fTsKKworICAgIGxhenlJbml0aWFsaXplKCk7CisKKyAgICBhdXRvIG5vZGUgPSBNZWRpYVN0cmVh
bUF1ZGlvU291cmNlTm9kZTo6Y3JlYXRlKCp0aGlzLCBtZWRpYVN0cmVhbSwgKnByb3ZpZGVyVHJh
Y2spOworICAgIG5vZGUtPnNldEZvcm1hdCgyLCBzYW1wbGVSYXRlKCkpOworCisgICAgcmVmTm9k
ZShub2RlKTsgLy8gY29udGV4dCBrZWVwcyByZWZlcmVuY2UgdW50aWwgbm9kZSBpcyBkaXNjb25u
ZWN0ZWQKKyAgICByZXR1cm4gbm9kZTsKK30KKworRXhjZXB0aW9uT3I8UmVmPE1lZGlhU3RyZWFt
QXVkaW9EZXN0aW5hdGlvbk5vZGU+PiBXZWJLaXRBdWRpb0NvbnRleHQ6OmNyZWF0ZU1lZGlhU3Ry
ZWFtRGVzdGluYXRpb24oKQoreworICAgIGlmIChtX2lzU3RvcFNjaGVkdWxlZCkKKyAgICAgICAg
cmV0dXJuIEV4Y2VwdGlvbiB7IEludmFsaWRTdGF0ZUVycm9yIH07CisKKyAgICAvLyBGSVhNRTog
QWRkIHN1cHBvcnQgZm9yIGFuIG9wdGlvbmFsIGFyZ3VtZW50IHdoaWNoIHNwZWNpZmllcyB0aGUg
bnVtYmVyIG9mIGNoYW5uZWxzLgorICAgIC8vIEZJWE1FOiBUaGUgZGVmYXVsdCBzaG91bGQgcHJv
YmFibHkgYmUgc3RlcmVvIGluc3RlYWQgb2YgbW9uby4KKyAgICByZXR1cm4gTWVkaWFTdHJlYW1B
dWRpb0Rlc3RpbmF0aW9uTm9kZTo6Y3JlYXRlKCp0aGlzLCAxKTsKK30KKworI2VuZGlmCisKK0V4
Y2VwdGlvbk9yPFJlZjxTY3JpcHRQcm9jZXNzb3JOb2RlPj4gV2ViS2l0QXVkaW9Db250ZXh0Ojpj
cmVhdGVTY3JpcHRQcm9jZXNzb3Ioc2l6ZV90IGJ1ZmZlclNpemUsIHNpemVfdCBudW1iZXJPZklu
cHV0Q2hhbm5lbHMsIHNpemVfdCBudW1iZXJPZk91dHB1dENoYW5uZWxzKQoreworICAgIEFMV0FZ
U19MT0coTE9HSURFTlRJRklFUik7CisKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworCisg
ICAgaWYgKG1faXNTdG9wU2NoZWR1bGVkKQorICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgSW52
YWxpZFN0YXRlRXJyb3IgfTsKKworICAgIGxhenlJbml0aWFsaXplKCk7CisKKyAgICAvLyBXM0Mg
RWRpdG9yJ3MgRHJhZnQgMDYgSnVuZSAyMDE3CisgICAgLy8gIGh0dHBzOi8vd2ViYXVkaW8uZ2l0
aHViLmlvL3dlYi1hdWRpby1hcGkvI3dpZGwtQmFzZUF1ZGlvQ29udGV4dC1jcmVhdGVTY3JpcHRQ
cm9jZXNzb3ItU2NyaXB0UHJvY2Vzc29yTm9kZS11bnNpZ25lZC1sb25nLWJ1ZmZlclNpemUtdW5z
aWduZWQtbG9uZy1udW1iZXJPZklucHV0Q2hhbm5lbHMtdW5zaWduZWQtbG9uZy1udW1iZXJPZk91
dHB1dENoYW5uZWxzCisKKyAgICAvLyBUaGUgYnVmZmVyU2l6ZSBwYXJhbWV0ZXIgZGV0ZXJtaW5l
cyB0aGUgYnVmZmVyIHNpemUgaW4gdW5pdHMgb2Ygc2FtcGxlLWZyYW1lcy4gSWYgaXQncyBub3Qg
cGFzc2VkIGluLAorICAgIC8vIG9yIGlmIHRoZSB2YWx1ZSBpcyAwLCB0aGVuIHRoZSBpbXBsZW1l
bnRhdGlvbiB3aWxsIGNob29zZSB0aGUgYmVzdCBidWZmZXIgc2l6ZSBmb3IgdGhlIGdpdmVuIGVu
dmlyb25tZW50LAorICAgIC8vIHdoaWNoIHdpbGwgYmUgY29uc3RhbnQgcG93ZXIgb2YgMiB0aHJv
dWdob3V0IHRoZSBsaWZldGltZSBvZiB0aGUgbm9kZS4gLi4uIElmIHRoZSB2YWx1ZSBvZiB0aGlz
IHBhcmFtZXRlcgorICAgIC8vIGlzIG5vdCBvbmUgb2YgdGhlIGFsbG93ZWQgcG93ZXItb2YtMiB2
YWx1ZXMgbGlzdGVkIGFib3ZlLCBhbiBJbmRleFNpemVFcnJvciBtdXN0IGJlIHRocm93bi4KKyAg
ICBzd2l0Y2ggKGJ1ZmZlclNpemUpIHsKKyAgICBjYXNlIDA6CisjaWYgVVNFKEFVRElPX1NFU1NJ
T04pCisgICAgICAgIC8vIFBpY2sgYSB2YWx1ZSBiZXR3ZWVuIDI1NiAoMl44KSBhbmQgMTYzODQg
KDJeMTQpLCBiYXNlZCBvbiB0aGUgYnVmZmVyIHNpemUgb2YgdGhlIGN1cnJlbnQgQXVkaW9TZXNz
aW9uOgorICAgICAgICBidWZmZXJTaXplID0gMSA8PCBzdGQ6Om1heDxzaXplX3Q+KDgsIHN0ZDo6
bWluPHNpemVfdD4oMTQsIHN0ZDo6bG9nMihBdWRpb1Nlc3Npb246OnNoYXJlZFNlc3Npb24oKS5i
dWZmZXJTaXplKCkpKSk7CisjZWxzZQorICAgICAgICBidWZmZXJTaXplID0gMjA0ODsKKyNlbmRp
ZgorICAgICAgICBicmVhazsKKyAgICBjYXNlIDI1NjoKKyAgICBjYXNlIDUxMjoKKyAgICBjYXNl
IDEwMjQ6CisgICAgY2FzZSAyMDQ4OgorICAgIGNhc2UgNDA5NjoKKyAgICBjYXNlIDgxOTI6Cisg
ICAgY2FzZSAxNjM4NDoKKyAgICAgICAgYnJlYWs7CisgICAgZGVmYXVsdDoKKyAgICAgICAgcmV0
dXJuIEV4Y2VwdGlvbiB7IEluZGV4U2l6ZUVycm9yIH07CisgICAgfQorCisgICAgLy8gQW4gSW5k
ZXhTaXplRXJyb3IgZXhjZXB0aW9uIG11c3QgYmUgdGhyb3duIGlmIGJ1ZmZlclNpemUgb3IgbnVt
YmVyT2ZJbnB1dENoYW5uZWxzIG9yIG51bWJlck9mT3V0cHV0Q2hhbm5lbHMKKyAgICAvLyBhcmUg
b3V0c2lkZSB0aGUgdmFsaWQgcmFuZ2UuIEl0IGlzIGludmFsaWQgZm9yIGJvdGggbnVtYmVyT2ZJ
bnB1dENoYW5uZWxzIGFuZCBudW1iZXJPZk91dHB1dENoYW5uZWxzIHRvIGJlIHplcm8uCisgICAg
Ly8gSW4gdGhpcyBjYXNlIGFuIEluZGV4U2l6ZUVycm9yIG11c3QgYmUgdGhyb3duLgorCisgICAg
aWYgKCFudW1iZXJPZklucHV0Q2hhbm5lbHMgJiYgIW51bWJlck9mT3V0cHV0Q2hhbm5lbHMpCisg
ICAgICAgIHJldHVybiBFeGNlcHRpb24geyBOb3RTdXBwb3J0ZWRFcnJvciB9OworCisgICAgLy8g
VGhpcyBwYXJhbWV0ZXIgW251bWJlck9mSW5wdXRDaGFubmVsc10gZGV0ZXJtaW5lcyB0aGUgbnVt
YmVyIG9mIGNoYW5uZWxzIGZvciB0aGlzIG5vZGUncyBpbnB1dC4gVmFsdWVzIG9mCisgICAgLy8g
dXAgdG8gMzIgbXVzdCBiZSBzdXBwb3J0ZWQuIEEgTm90U3VwcG9ydGVkRXJyb3IgbXVzdCBiZSB0
aHJvd24gaWYgdGhlIG51bWJlciBvZiBjaGFubmVscyBpcyBub3Qgc3VwcG9ydGVkLgorCisgICAg
aWYgKG51bWJlck9mSW5wdXRDaGFubmVscyA+IG1heE51bWJlck9mQ2hhbm5lbHMoKSkKKyAgICAg
ICAgcmV0dXJuIEV4Y2VwdGlvbiB7IE5vdFN1cHBvcnRlZEVycm9yIH07CisKKyAgICAvLyBUaGlz
IHBhcmFtZXRlciBbbnVtYmVyT2ZPdXRwdXRDaGFubmVsc10gZGV0ZXJtaW5lcyB0aGUgbnVtYmVy
IG9mIGNoYW5uZWxzIGZvciB0aGlzIG5vZGUncyBvdXRwdXQuIFZhbHVlcyBvZgorICAgIC8vIHVw
IHRvIDMyIG11c3QgYmUgc3VwcG9ydGVkLiBBIE5vdFN1cHBvcnRlZEVycm9yIG11c3QgYmUgdGhy
b3duIGlmIHRoZSBudW1iZXIgb2YgY2hhbm5lbHMgaXMgbm90IHN1cHBvcnRlZC4KKworICAgIGlm
IChudW1iZXJPZk91dHB1dENoYW5uZWxzID4gbWF4TnVtYmVyT2ZDaGFubmVscygpKQorICAgICAg
ICByZXR1cm4gRXhjZXB0aW9uIHsgTm90U3VwcG9ydGVkRXJyb3IgfTsKKworICAgIGF1dG8gbm9k
ZSA9IFNjcmlwdFByb2Nlc3Nvck5vZGU6OmNyZWF0ZSgqdGhpcywgc2FtcGxlUmF0ZSgpLCBidWZm
ZXJTaXplLCBudW1iZXJPZklucHV0Q2hhbm5lbHMsIG51bWJlck9mT3V0cHV0Q2hhbm5lbHMpOwor
CisgICAgcmVmTm9kZShub2RlKTsgLy8gY29udGV4dCBrZWVwcyByZWZlcmVuY2UgdW50aWwgd2Ug
c3RvcCBtYWtpbmcgamF2YXNjcmlwdCByZW5kZXJpbmcgY2FsbGJhY2tzCisgICAgcmV0dXJuIG5v
ZGU7Cit9CisKK0V4Y2VwdGlvbk9yPFJlZjxCaXF1YWRGaWx0ZXJOb2RlPj4gV2ViS2l0QXVkaW9D
b250ZXh0OjpjcmVhdGVCaXF1YWRGaWx0ZXIoKQoreworICAgIEFMV0FZU19MT0coTE9HSURFTlRJ
RklFUik7CisKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAgIGlmIChtX2lzU3RvcFNj
aGVkdWxlZCkKKyAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IEludmFsaWRTdGF0ZUVycm9yIH07
CisKKyAgICBsYXp5SW5pdGlhbGl6ZSgpOworCisgICAgcmV0dXJuIEJpcXVhZEZpbHRlck5vZGU6
OmNyZWF0ZSgqdGhpcywgc2FtcGxlUmF0ZSgpKTsKK30KKworRXhjZXB0aW9uT3I8UmVmPFdhdmVT
aGFwZXJOb2RlPj4gV2ViS2l0QXVkaW9Db250ZXh0OjpjcmVhdGVXYXZlU2hhcGVyKCkKK3sKKyAg
ICBBTFdBWVNfTE9HKExPR0lERU5USUZJRVIpOworCisgICAgQVNTRVJUKGlzTWFpblRocmVhZCgp
KTsKKyAgICBpZiAobV9pc1N0b3BTY2hlZHVsZWQpCisgICAgICAgIHJldHVybiBFeGNlcHRpb24g
eyBJbnZhbGlkU3RhdGVFcnJvciB9OworCisgICAgbGF6eUluaXRpYWxpemUoKTsKKyAgICByZXR1
cm4gV2F2ZVNoYXBlck5vZGU6OmNyZWF0ZSgqdGhpcyk7Cit9CisKK0V4Y2VwdGlvbk9yPFJlZjxX
ZWJLaXRBdWRpb1Bhbm5lck5vZGU+PiBXZWJLaXRBdWRpb0NvbnRleHQ6OmNyZWF0ZVBhbm5lcigp
Cit7CisgICAgQUxXQVlTX0xPRyhMT0dJREVOVElGSUVSKTsKKworICAgIEFTU0VSVChpc01haW5U
aHJlYWQoKSk7CisgICAgaWYgKG1faXNTdG9wU2NoZWR1bGVkKQorICAgICAgICByZXR1cm4gRXhj
ZXB0aW9uIHsgSW52YWxpZFN0YXRlRXJyb3IgfTsKKworICAgIGxhenlJbml0aWFsaXplKCk7Cisg
ICAgcmV0dXJuIFdlYktpdEF1ZGlvUGFubmVyTm9kZTo6Y3JlYXRlKCp0aGlzLCBzYW1wbGVSYXRl
KCkpOworfQorCitFeGNlcHRpb25PcjxSZWY8Q29udm9sdmVyTm9kZT4+IFdlYktpdEF1ZGlvQ29u
dGV4dDo6Y3JlYXRlQ29udm9sdmVyKCkKK3sKKyAgICBBTFdBWVNfTE9HKExPR0lERU5USUZJRVIp
OworCisgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKyAgICBpZiAobV9pc1N0b3BTY2hlZHVs
ZWQpCisgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBJbnZhbGlkU3RhdGVFcnJvciB9OworCisg
ICAgbGF6eUluaXRpYWxpemUoKTsKKyAgICByZXR1cm4gQ29udm9sdmVyTm9kZTo6Y3JlYXRlKCp0
aGlzLCBzYW1wbGVSYXRlKCkpOworfQorCitFeGNlcHRpb25PcjxSZWY8RHluYW1pY3NDb21wcmVz
c29yTm9kZT4+IFdlYktpdEF1ZGlvQ29udGV4dDo6Y3JlYXRlRHluYW1pY3NDb21wcmVzc29yKCkK
K3sKKyAgICBBTFdBWVNfTE9HKExPR0lERU5USUZJRVIpOworCisgICAgQVNTRVJUKGlzTWFpblRo
cmVhZCgpKTsKKyAgICBpZiAobV9pc1N0b3BTY2hlZHVsZWQpCisgICAgICAgIHJldHVybiBFeGNl
cHRpb24geyBJbnZhbGlkU3RhdGVFcnJvciB9OworCisgICAgbGF6eUluaXRpYWxpemUoKTsKKyAg
ICByZXR1cm4gRHluYW1pY3NDb21wcmVzc29yTm9kZTo6Y3JlYXRlKCp0aGlzLCBzYW1wbGVSYXRl
KCkpOworfQorCitFeGNlcHRpb25PcjxSZWY8QW5hbHlzZXJOb2RlPj4gV2ViS2l0QXVkaW9Db250
ZXh0OjpjcmVhdGVBbmFseXNlcigpCit7CisgICAgQUxXQVlTX0xPRyhMT0dJREVOVElGSUVSKTsK
KworICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisgICAgaWYgKG1faXNTdG9wU2NoZWR1bGVk
KQorICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgSW52YWxpZFN0YXRlRXJyb3IgfTsKKworICAg
IGxhenlJbml0aWFsaXplKCk7CisgICAgcmV0dXJuIEFuYWx5c2VyTm9kZTo6Y3JlYXRlKCp0aGlz
LCBzYW1wbGVSYXRlKCkpOworfQorCitFeGNlcHRpb25PcjxSZWY8R2Fpbk5vZGU+PiBXZWJLaXRB
dWRpb0NvbnRleHQ6OmNyZWF0ZUdhaW4oKQoreworICAgIEFMV0FZU19MT0coTE9HSURFTlRJRklF
Uik7CisKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAgIGlmIChtX2lzU3RvcFNjaGVk
dWxlZCkKKyAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IEludmFsaWRTdGF0ZUVycm9yIH07CisK
KyAgICBsYXp5SW5pdGlhbGl6ZSgpOworICAgIHJldHVybiBHYWluTm9kZTo6Y3JlYXRlKCp0aGlz
LCBzYW1wbGVSYXRlKCkpOworfQorCitFeGNlcHRpb25PcjxSZWY8RGVsYXlOb2RlPj4gV2ViS2l0
QXVkaW9Db250ZXh0OjpjcmVhdGVEZWxheShkb3VibGUgbWF4RGVsYXlUaW1lKQoreworICAgIEFM
V0FZU19MT0coTE9HSURFTlRJRklFUik7CisKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwor
ICAgIGlmIChtX2lzU3RvcFNjaGVkdWxlZCkKKyAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IElu
dmFsaWRTdGF0ZUVycm9yIH07CisKKyAgICBsYXp5SW5pdGlhbGl6ZSgpOworICAgIHJldHVybiBE
ZWxheU5vZGU6OmNyZWF0ZSgqdGhpcywgc2FtcGxlUmF0ZSgpLCBtYXhEZWxheVRpbWUpOworfQor
CitFeGNlcHRpb25PcjxSZWY8Q2hhbm5lbFNwbGl0dGVyTm9kZT4+IFdlYktpdEF1ZGlvQ29udGV4
dDo6Y3JlYXRlQ2hhbm5lbFNwbGl0dGVyKHNpemVfdCBudW1iZXJPZk91dHB1dHMpCit7CisgICAg
QUxXQVlTX0xPRyhMT0dJREVOVElGSUVSKTsKKworICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7
CisgICAgaWYgKG1faXNTdG9wU2NoZWR1bGVkKQorICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsg
SW52YWxpZFN0YXRlRXJyb3IgfTsKKworICAgIGxhenlJbml0aWFsaXplKCk7CisgICAgYXV0byBu
b2RlID0gQ2hhbm5lbFNwbGl0dGVyTm9kZTo6Y3JlYXRlKCp0aGlzLCBzYW1wbGVSYXRlKCksIG51
bWJlck9mT3V0cHV0cyk7CisgICAgaWYgKCFub2RlKQorICAgICAgICByZXR1cm4gRXhjZXB0aW9u
IHsgSW5kZXhTaXplRXJyb3IgfTsKKyAgICByZXR1cm4gbm9kZS5yZWxlYXNlTm9uTnVsbCgpOwor
fQorCitFeGNlcHRpb25PcjxSZWY8Q2hhbm5lbE1lcmdlck5vZGU+PiBXZWJLaXRBdWRpb0NvbnRl
eHQ6OmNyZWF0ZUNoYW5uZWxNZXJnZXIoc2l6ZV90IG51bWJlck9mSW5wdXRzKQoreworICAgIEFM
V0FZU19MT0coTE9HSURFTlRJRklFUik7CisKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwor
ICAgIGlmIChtX2lzU3RvcFNjaGVkdWxlZCkKKyAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IElu
dmFsaWRTdGF0ZUVycm9yIH07CisKKyAgICBsYXp5SW5pdGlhbGl6ZSgpOworICAgIGF1dG8gbm9k
ZSA9IENoYW5uZWxNZXJnZXJOb2RlOjpjcmVhdGUoKnRoaXMsIHNhbXBsZVJhdGUoKSwgbnVtYmVy
T2ZJbnB1dHMpOworICAgIGlmICghbm9kZSkKKyAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IElu
ZGV4U2l6ZUVycm9yIH07CisgICAgcmV0dXJuIG5vZGUucmVsZWFzZU5vbk51bGwoKTsKK30KKwor
RXhjZXB0aW9uT3I8UmVmPE9zY2lsbGF0b3JOb2RlPj4gV2ViS2l0QXVkaW9Db250ZXh0OjpjcmVh
dGVPc2NpbGxhdG9yKCkKK3sKKyAgICBBTFdBWVNfTE9HKExPR0lERU5USUZJRVIpOworCisgICAg
QVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKyAgICBpZiAobV9pc1N0b3BTY2hlZHVsZWQpCisgICAg
ICAgIHJldHVybiBFeGNlcHRpb24geyBJbnZhbGlkU3RhdGVFcnJvciB9OworCisgICAgbGF6eUlu
aXRpYWxpemUoKTsKKworICAgIFJlZjxPc2NpbGxhdG9yTm9kZT4gbm9kZSA9IE9zY2lsbGF0b3JO
b2RlOjpjcmVhdGUoKnRoaXMsIHNhbXBsZVJhdGUoKSk7CisKKyAgICAvLyBCZWNhdXNlIHRoaXMg
aXMgYW4gQXVkaW9TY2hlZHVsZWRTb3VyY2VOb2RlLCB0aGUgY29udGV4dCBrZWVwcyBhIHJlZmVy
ZW5jZSB1bnRpbCBpdCBoYXMgZmluaXNoZWQgcGxheWluZy4KKyAgICAvLyBXaGVuIHRoaXMgaGFw
cGVucywgQXVkaW9TY2hlZHVsZWRTb3VyY2VOb2RlOjpmaW5pc2goKSBjYWxscyBXZWJLaXRBdWRp
b0NvbnRleHQ6Om5vdGlmeU5vZGVGaW5pc2hlZFByb2Nlc3NpbmcoKS4KKyAgICByZWZOb2RlKG5v
ZGUpOworCisgICAgcmV0dXJuIG5vZGU7Cit9CisKK0V4Y2VwdGlvbk9yPFJlZjxQZXJpb2RpY1dh
dmU+PiBXZWJLaXRBdWRpb0NvbnRleHQ6OmNyZWF0ZVBlcmlvZGljV2F2ZShGbG9hdDMyQXJyYXkm
IHJlYWwsIEZsb2F0MzJBcnJheSYgaW1hZ2luYXJ5KQoreworICAgIEFMV0FZU19MT0coTE9HSURF
TlRJRklFUik7CisKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAgIGlmIChtX2lzU3Rv
cFNjaGVkdWxlZCkKKyAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IEludmFsaWRTdGF0ZUVycm9y
IH07CisKKyAgICBpZiAocmVhbC5sZW5ndGgoKSAhPSBpbWFnaW5hcnkubGVuZ3RoKCkgfHwgKHJl
YWwubGVuZ3RoKCkgPiBNYXhQZXJpb2RpY1dhdmVMZW5ndGgpIHx8ICFyZWFsLmxlbmd0aCgpKQor
ICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgSW5kZXhTaXplRXJyb3IgfTsKKyAgICBsYXp5SW5p
dGlhbGl6ZSgpOworICAgIHJldHVybiBQZXJpb2RpY1dhdmU6OmNyZWF0ZShzYW1wbGVSYXRlKCks
IHJlYWwsIGltYWdpbmFyeSk7Cit9CisKK3ZvaWQgV2ViS2l0QXVkaW9Db250ZXh0Ojpub3RpZnlO
b2RlRmluaXNoZWRQcm9jZXNzaW5nKEF1ZGlvTm9kZSogbm9kZSkKK3sKKyAgICBBU1NFUlQoaXNB
dWRpb1RocmVhZCgpKTsKKyAgICBtX2ZpbmlzaGVkTm9kZXMuYXBwZW5kKG5vZGUpOworfQorCit2
b2lkIFdlYktpdEF1ZGlvQ29udGV4dDo6ZGVyZWZGaW5pc2hlZFNvdXJjZU5vZGVzKCkKK3sKKyAg
ICBBU1NFUlQoaXNHcmFwaE93bmVyKCkpOworICAgIEFTU0VSVChpc0F1ZGlvVGhyZWFkKCkgfHwg
aXNBdWRpb1RocmVhZEZpbmlzaGVkKCkpOworICAgIGZvciAoYXV0byYgbm9kZSA6IG1fZmluaXNo
ZWROb2RlcykKKyAgICAgICAgZGVyZWZOb2RlKCpub2RlKTsKKworICAgIG1fZmluaXNoZWROb2Rl
cy5jbGVhcigpOworfQorCit2b2lkIFdlYktpdEF1ZGlvQ29udGV4dDo6cmVmTm9kZShBdWRpb05v
ZGUmIG5vZGUpCit7CisgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKyAgICBBdXRvTG9ja2Vy
IGxvY2tlcigqdGhpcyk7CisKKyAgICBub2RlLnJlZihBdWRpb05vZGU6OlJlZlR5cGVDb25uZWN0
aW9uKTsKKyAgICBtX3JlZmVyZW5jZWROb2Rlcy5hcHBlbmQoJm5vZGUpOworfQorCit2b2lkIFdl
YktpdEF1ZGlvQ29udGV4dDo6ZGVyZWZOb2RlKEF1ZGlvTm9kZSYgbm9kZSkKK3sKKyAgICBBU1NF
UlQoaXNHcmFwaE93bmVyKCkpOworCisgICAgbm9kZS5kZXJlZihBdWRpb05vZGU6OlJlZlR5cGVD
b25uZWN0aW9uKTsKKworICAgIEFTU0VSVChtX3JlZmVyZW5jZWROb2Rlcy5jb250YWlucygmbm9k
ZSkpOworICAgIG1fcmVmZXJlbmNlZE5vZGVzLnJlbW92ZUZpcnN0KCZub2RlKTsKK30KKwordm9p
ZCBXZWJLaXRBdWRpb0NvbnRleHQ6OmRlcmVmVW5maW5pc2hlZFNvdXJjZU5vZGVzKCkKK3sKKyAg
ICBBU1NFUlQoaXNNYWluVGhyZWFkKCkgJiYgaXNBdWRpb1RocmVhZEZpbmlzaGVkKCkpOworICAg
IGZvciAoYXV0byYgbm9kZSA6IG1fcmVmZXJlbmNlZE5vZGVzKQorICAgICAgICBub2RlLT5kZXJl
ZihBdWRpb05vZGU6OlJlZlR5cGVDb25uZWN0aW9uKTsKKworICAgIG1fcmVmZXJlbmNlZE5vZGVz
LmNsZWFyKCk7Cit9CisKK3ZvaWQgV2ViS2l0QXVkaW9Db250ZXh0Ojpsb2NrKGJvb2wmIG11c3RS
ZWxlYXNlTG9jaykKK3sKKyAgICAvLyBEb24ndCBhbGxvdyByZWd1bGFyIGxvY2sgaW4gcmVhbC10
aW1lIGF1ZGlvIHRocmVhZC4KKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworCisgICAgVGhy
ZWFkJiB0aGlzVGhyZWFkID0gVGhyZWFkOjpjdXJyZW50KCk7CisKKyAgICBpZiAoJnRoaXNUaHJl
YWQgPT0gbV9ncmFwaE93bmVyVGhyZWFkKSB7CisgICAgICAgIC8vIFdlIGFscmVhZHkgaGF2ZSB0
aGUgbG9jay4KKyAgICAgICAgbXVzdFJlbGVhc2VMb2NrID0gZmFsc2U7CisgICAgfSBlbHNlIHsK
KyAgICAgICAgLy8gQWNxdWlyZSB0aGUgbG9jay4KKyAgICAgICAgbV9jb250ZXh0R3JhcGhNdXRl
eC5sb2NrKCk7CisgICAgICAgIG1fZ3JhcGhPd25lclRocmVhZCA9ICZ0aGlzVGhyZWFkOworICAg
ICAgICBtdXN0UmVsZWFzZUxvY2sgPSB0cnVlOworICAgIH0KK30KKworYm9vbCBXZWJLaXRBdWRp
b0NvbnRleHQ6OnRyeUxvY2soYm9vbCYgbXVzdFJlbGVhc2VMb2NrKQoreworICAgIFRocmVhZCYg
dGhpc1RocmVhZCA9IFRocmVhZDo6Y3VycmVudCgpOworICAgIGJvb2wgaXNBdWRpb1RocmVhZCA9
ICZ0aGlzVGhyZWFkID09IGF1ZGlvVGhyZWFkKCk7CisKKyAgICAvLyBUcnkgdG8gY2F0Y2ggY2Fz
ZXMgb2YgdXNpbmcgdHJ5IGxvY2sgb24gbWFpbiB0aHJlYWQgLSBpdCBzaG91bGQgdXNlIHJlZ3Vs
YXIgbG9jay4KKyAgICBBU1NFUlQoaXNBdWRpb1RocmVhZCB8fCBpc0F1ZGlvVGhyZWFkRmluaXNo
ZWQoKSk7CisKKyAgICBpZiAoIWlzQXVkaW9UaHJlYWQpIHsKKyAgICAgICAgLy8gSW4gcmVsZWFz
ZSBidWlsZCB0cmVhdCB0cnlMb2NrKCkgYXMgbG9jaygpIChzaW5jZSBhYm92ZSBBU1NFUlQoaXNB
dWRpb1RocmVhZCkgbmV2ZXIgZmlyZXMpIC0gdGhpcyBpcyB0aGUgYmVzdCB3ZSBjYW4gZG8uCisg
ICAgICAgIGxvY2sobXVzdFJlbGVhc2VMb2NrKTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAg
fQorCisgICAgYm9vbCBoYXNMb2NrOworCisgICAgaWYgKCZ0aGlzVGhyZWFkID09IG1fZ3JhcGhP
d25lclRocmVhZCkgeworICAgICAgICAvLyBUaHJlYWQgYWxyZWFkeSBoYXMgdGhlIGxvY2suCisg
ICAgICAgIGhhc0xvY2sgPSB0cnVlOworICAgICAgICBtdXN0UmVsZWFzZUxvY2sgPSBmYWxzZTsK
KyAgICB9IGVsc2UgeworICAgICAgICAvLyBEb24ndCBhbHJlYWR5IGhhdmUgdGhlIGxvY2sgLSB0
cnkgdG8gYWNxdWlyZSBpdC4KKyAgICAgICAgaGFzTG9jayA9IG1fY29udGV4dEdyYXBoTXV0ZXgu
dHJ5TG9jaygpOworCisgICAgICAgIGlmIChoYXNMb2NrKQorICAgICAgICAgICAgbV9ncmFwaE93
bmVyVGhyZWFkID0gJnRoaXNUaHJlYWQ7CisKKyAgICAgICAgbXVzdFJlbGVhc2VMb2NrID0gaGFz
TG9jazsKKyAgICB9CisKKyAgICByZXR1cm4gaGFzTG9jazsKK30KKwordm9pZCBXZWJLaXRBdWRp
b0NvbnRleHQ6OnVubG9jaygpCit7CisgICAgQVNTRVJUKG1fZ3JhcGhPd25lclRocmVhZCA9PSAm
VGhyZWFkOjpjdXJyZW50KCkpOworCisgICAgbV9ncmFwaE93bmVyVGhyZWFkID0gbnVsbHB0cjsK
KyAgICBtX2NvbnRleHRHcmFwaE11dGV4LnVubG9jaygpOworfQorCitib29sIFdlYktpdEF1ZGlv
Q29udGV4dDo6aXNBdWRpb1RocmVhZCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fYXVkaW9UaHJl
YWQgPT0gJlRocmVhZDo6Y3VycmVudCgpOworfQorCitib29sIFdlYktpdEF1ZGlvQ29udGV4dDo6
aXNHcmFwaE93bmVyKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9ncmFwaE93bmVyVGhyZWFkID09
ICZUaHJlYWQ6OmN1cnJlbnQoKTsKK30KKwordm9pZCBXZWJLaXRBdWRpb0NvbnRleHQ6OmFkZERl
ZmVycmVkRmluaXNoRGVyZWYoQXVkaW9Ob2RlKiBub2RlKQoreworICAgIEFTU0VSVChpc0F1ZGlv
VGhyZWFkKCkpOworICAgIG1fZGVmZXJyZWRGaW5pc2hEZXJlZkxpc3QuYXBwZW5kKG5vZGUpOwor
fQorCit2b2lkIFdlYktpdEF1ZGlvQ29udGV4dDo6aGFuZGxlUHJlUmVuZGVyVGFza3MoKQorewor
ICAgIEFTU0VSVChpc0F1ZGlvVGhyZWFkKCkpOworCisgICAgLy8gQXQgdGhlIGJlZ2lubmluZyBv
ZiBldmVyeSByZW5kZXIgcXVhbnR1bSwgdHJ5IHRvIHVwZGF0ZSB0aGUgaW50ZXJuYWwgcmVuZGVy
aW5nIGdyYXBoIHN0YXRlIChmcm9tIG1haW4gdGhyZWFkIGNoYW5nZXMpLgorICAgIC8vIEl0J3Mg
T0sgaWYgdGhlIHRyeUxvY2soKSBmYWlscywgd2UnbGwganVzdCB0YWtlIHNsaWdodGx5IGxvbmdl
ciB0byBwaWNrIHVwIHRoZSBjaGFuZ2VzLgorICAgIGJvb2wgbXVzdFJlbGVhc2VMb2NrOworICAg
IGlmICh0cnlMb2NrKG11c3RSZWxlYXNlTG9jaykpIHsKKyAgICAgICAgLy8gRml4dXAgdGhlIHN0
YXRlIG9mIGFueSBkaXJ0eSBBdWRpb1N1bW1pbmdKdW5jdGlvbnMgYW5kIEF1ZGlvTm9kZU91dHB1
dHMuCisgICAgICAgIGhhbmRsZURpcnR5QXVkaW9TdW1taW5nSnVuY3Rpb25zKCk7CisgICAgICAg
IGhhbmRsZURpcnR5QXVkaW9Ob2RlT3V0cHV0cygpOworCisgICAgICAgIHVwZGF0ZUF1dG9tYXRp
Y1B1bGxOb2RlcygpOworCisgICAgICAgIGlmIChtdXN0UmVsZWFzZUxvY2spCisgICAgICAgICAg
ICB1bmxvY2soKTsKKyAgICB9Cit9CisKK3ZvaWQgV2ViS2l0QXVkaW9Db250ZXh0OjpoYW5kbGVQ
b3N0UmVuZGVyVGFza3MoKQoreworICAgIEFTU0VSVChpc0F1ZGlvVGhyZWFkKCkpOworCisgICAg
Ly8gTXVzdCB1c2UgYSB0cnlMb2NrKCkgaGVyZSB0b28uIERvbid0IHdvcnJ5LCB0aGUgbG9jayB3
aWxsIHZlcnkgcmFyZWx5IGJlIGNvbnRlbmRlZCBhbmQgdGhpcyBtZXRob2QgaXMgY2FsbGVkIGZy
ZXF1ZW50bHkuCisgICAgLy8gVGhlIHdvcnN0IHRoYXQgY2FuIGhhcHBlbiBpcyB0aGF0IHRoZXJl
IHdpbGwgYmUgc29tZSBub2RlcyB3aGljaCB3aWxsIHRha2Ugc2xpZ2h0bHkgbG9uZ2VyIHRoYW4g
dXN1YWwgdG8gYmUgZGVsZXRlZCBvciByZW1vdmVkCisgICAgLy8gZnJvbSB0aGUgcmVuZGVyIGdy
YXBoIChpbiB3aGljaCBjYXNlIHRoZXknbGwgcmVuZGVyIHNpbGVuY2UpLgorICAgIGJvb2wgbXVz
dFJlbGVhc2VMb2NrOworICAgIGlmICh0cnlMb2NrKG11c3RSZWxlYXNlTG9jaykpIHsKKyAgICAg
ICAgLy8gVGFrZSBjYXJlIG9mIGZpbmlzaGluZyBhbnkgZGVyZWZzIHdoZXJlIHRoZSB0cnlMb2Nr
KCkgZmFpbGVkIHByZXZpb3VzbHkuCisgICAgICAgIGhhbmRsZURlZmVycmVkRmluaXNoRGVyZWZz
KCk7CisKKyAgICAgICAgLy8gRHluYW1pY2FsbHkgY2xlYW4gdXAgbm9kZXMgd2hpY2ggYXJlIG5v
IGxvbmdlciBuZWVkZWQuCisgICAgICAgIGRlcmVmRmluaXNoZWRTb3VyY2VOb2RlcygpOworCisg
ICAgICAgIC8vIERvbid0IGRlbGV0ZSBpbiB0aGUgcmVhbC10aW1lIHRocmVhZC4gTGV0IHRoZSBt
YWluIHRocmVhZCBkbyBpdC4KKyAgICAgICAgLy8gUmVmLWNvdW50ZWQgb2JqZWN0cyBoZWxkIGJ5
IGNlcnRhaW4gQXVkaW9Ob2RlcyBtYXkgbm90IGJlIHRocmVhZC1zYWZlLgorICAgICAgICBzY2hl
ZHVsZU5vZGVEZWxldGlvbigpOworCisgICAgICAgIC8vIEZpeHVwIHRoZSBzdGF0ZSBvZiBhbnkg
ZGlydHkgQXVkaW9TdW1taW5nSnVuY3Rpb25zIGFuZCBBdWRpb05vZGVPdXRwdXRzLgorICAgICAg
ICBoYW5kbGVEaXJ0eUF1ZGlvU3VtbWluZ0p1bmN0aW9ucygpOworICAgICAgICBoYW5kbGVEaXJ0
eUF1ZGlvTm9kZU91dHB1dHMoKTsKKworICAgICAgICB1cGRhdGVBdXRvbWF0aWNQdWxsTm9kZXMo
KTsKKworICAgICAgICBpZiAobXVzdFJlbGVhc2VMb2NrKQorICAgICAgICAgICAgdW5sb2NrKCk7
CisgICAgfQorfQorCit2b2lkIFdlYktpdEF1ZGlvQ29udGV4dDo6aGFuZGxlRGVmZXJyZWRGaW5p
c2hEZXJlZnMoKQoreworICAgIEFTU0VSVChpc0F1ZGlvVGhyZWFkKCkgJiYgaXNHcmFwaE93bmVy
KCkpOworICAgIGZvciAoYXV0byYgbm9kZSA6IG1fZGVmZXJyZWRGaW5pc2hEZXJlZkxpc3QpCisg
ICAgICAgIG5vZGUtPmZpbmlzaERlcmVmKEF1ZGlvTm9kZTo6UmVmVHlwZUNvbm5lY3Rpb24pOwor
CisgICAgbV9kZWZlcnJlZEZpbmlzaERlcmVmTGlzdC5jbGVhcigpOworfQorCit2b2lkIFdlYktp
dEF1ZGlvQ29udGV4dDo6bWFya0ZvckRlbGV0aW9uKEF1ZGlvTm9kZSYgbm9kZSkKK3sKKyAgICBB
U1NFUlQoaXNHcmFwaE93bmVyKCkpOworCisgICAgaWYgKGlzQXVkaW9UaHJlYWRGaW5pc2hlZCgp
KQorICAgICAgICBtX25vZGVzVG9EZWxldGUuYXBwZW5kKCZub2RlKTsKKyAgICBlbHNlCisgICAg
ICAgIG1fbm9kZXNNYXJrZWRGb3JEZWxldGlvbi5hcHBlbmQoJm5vZGUpOworCisgICAgLy8gVGhp
cyBpcyBwcm9iYWJseSB0aGUgYmVzdCB0aW1lIGZvciB1cyB0byByZW1vdmUgdGhlIG5vZGUgZnJv
bSBhdXRvbWF0aWMgcHVsbCBsaXN0LAorICAgIC8vIHNpbmNlIGFsbCBjb25uZWN0aW9ucyBhcmUg
Z29uZSBhbmQgd2UgaG9sZCB0aGUgZ3JhcGggbG9jay4gVGhlbiB3aGVuIGhhbmRsZVBvc3RSZW5k
ZXJUYXNrcygpCisgICAgLy8gZ2V0cyBhIGNoYW5jZSB0byBzY2hlZHVsZSB0aGUgZGVsZXRpb24g
d29yaywgdXBkYXRlQXV0b21hdGljUHVsbE5vZGVzKCkgYWxzbyBnZXRzIGEgY2hhbmNlIHRvCisg
ICAgLy8gbW9kaWZ5IG1fcmVuZGVyaW5nQXV0b21hdGljUHVsbE5vZGVzLgorICAgIHJlbW92ZUF1
dG9tYXRpY1B1bGxOb2RlKG5vZGUpOworfQorCit2b2lkIFdlYktpdEF1ZGlvQ29udGV4dDo6c2No
ZWR1bGVOb2RlRGVsZXRpb24oKQoreworICAgIGJvb2wgaXNHb29kID0gbV9pc0luaXRpYWxpemVk
ICYmIGlzR3JhcGhPd25lcigpOworICAgIEFTU0VSVChpc0dvb2QpOworICAgIGlmICghaXNHb29k
KQorICAgICAgICByZXR1cm47CisKKyAgICAvLyBNYWtlIHN1cmUgdG8gY2FsbCBkZWxldGVNYXJr
ZWROb2RlcygpIG9uIG1haW4gdGhyZWFkLgorICAgIGlmIChtX25vZGVzTWFya2VkRm9yRGVsZXRp
b24uc2l6ZSgpICYmICFtX2lzRGVsZXRpb25TY2hlZHVsZWQpIHsKKyAgICAgICAgbV9ub2Rlc1Rv
RGVsZXRlLmFwcGVuZFZlY3RvcihtX25vZGVzTWFya2VkRm9yRGVsZXRpb24pOworICAgICAgICBt
X25vZGVzTWFya2VkRm9yRGVsZXRpb24uY2xlYXIoKTsKKworICAgICAgICBtX2lzRGVsZXRpb25T
Y2hlZHVsZWQgPSB0cnVlOworCisgICAgICAgIGNhbGxPbk1haW5UaHJlYWQoW3Byb3RlY3RlZFRo
aXMgPSBtYWtlUmVmKCp0aGlzKV0oKSBtdXRhYmxlIHsKKyAgICAgICAgICAgIHByb3RlY3RlZFRo
aXMtPmRlbGV0ZU1hcmtlZE5vZGVzKCk7CisgICAgICAgIH0pOworICAgIH0KK30KKwordm9pZCBX
ZWJLaXRBdWRpb0NvbnRleHQ6OmRlbGV0ZU1hcmtlZE5vZGVzKCkKK3sKKyAgICBBU1NFUlQoaXNN
YWluVGhyZWFkKCkpOworCisgICAgLy8gUHJvdGVjdCB0aGlzIG9iamVjdCBmcm9tIGJlaW5nIGRl
bGV0ZWQgYmVmb3JlIHdlIHJlbGVhc2UgdGhlIG11dGV4IGxvY2tlZCBieSBBdXRvTG9ja2VyLgor
ICAgIFJlZjxXZWJLaXRBdWRpb0NvbnRleHQ+IHByb3RlY3RlZFRoaXMoKnRoaXMpOworICAgIHsK
KyAgICAgICAgQXV0b0xvY2tlciBsb2NrZXIoKnRoaXMpOworCisgICAgICAgIHdoaWxlIChtX25v
ZGVzVG9EZWxldGUuc2l6ZSgpKSB7CisgICAgICAgICAgICBBdWRpb05vZGUqIG5vZGUgPSBtX25v
ZGVzVG9EZWxldGUudGFrZUxhc3QoKTsKKworICAgICAgICAgICAgLy8gQmVmb3JlIGRlbGV0aW5n
IHRoZSBub2RlLCBjbGVhciBvdXQgYW55IEF1ZGlvTm9kZUlucHV0cyBmcm9tIG1fZGlydHlTdW1t
aW5nSnVuY3Rpb25zLgorICAgICAgICAgICAgdW5zaWduZWQgbnVtYmVyT2ZJbnB1dHMgPSBub2Rl
LT5udW1iZXJPZklucHV0cygpOworICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8
IG51bWJlck9mSW5wdXRzOyArK2kpCisgICAgICAgICAgICAgICAgbV9kaXJ0eVN1bW1pbmdKdW5j
dGlvbnMucmVtb3ZlKG5vZGUtPmlucHV0KGkpKTsKKworICAgICAgICAgICAgLy8gQmVmb3JlIGRl
bGV0aW5nIHRoZSBub2RlLCBjbGVhciBvdXQgYW55IEF1ZGlvTm9kZU91dHB1dHMgZnJvbSBtX2Rp
cnR5QXVkaW9Ob2RlT3V0cHV0cy4KKyAgICAgICAgICAgIHVuc2lnbmVkIG51bWJlck9mT3V0cHV0
cyA9IG5vZGUtPm51bWJlck9mT3V0cHV0cygpOworICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBp
ID0gMDsgaSA8IG51bWJlck9mT3V0cHV0czsgKytpKQorICAgICAgICAgICAgICAgIG1fZGlydHlB
dWRpb05vZGVPdXRwdXRzLnJlbW92ZShub2RlLT5vdXRwdXQoaSkpOworCisgICAgICAgICAgICAv
LyBGaW5hbGx5LCBkZWxldGUgaXQuCisgICAgICAgICAgICBkZWxldGUgbm9kZTsKKyAgICAgICAg
fQorICAgICAgICBtX2lzRGVsZXRpb25TY2hlZHVsZWQgPSBmYWxzZTsKKyAgICB9Cit9CisKK3Zv
aWQgV2ViS2l0QXVkaW9Db250ZXh0OjptYXJrU3VtbWluZ0p1bmN0aW9uRGlydHkoQXVkaW9TdW1t
aW5nSnVuY3Rpb24qIHN1bW1pbmdKdW5jdGlvbikKK3sKKyAgICBBU1NFUlQoaXNHcmFwaE93bmVy
KCkpOworICAgIG1fZGlydHlTdW1taW5nSnVuY3Rpb25zLmFkZChzdW1taW5nSnVuY3Rpb24pOwor
fQorCit2b2lkIFdlYktpdEF1ZGlvQ29udGV4dDo6cmVtb3ZlTWFya2VkU3VtbWluZ0p1bmN0aW9u
KEF1ZGlvU3VtbWluZ0p1bmN0aW9uKiBzdW1taW5nSnVuY3Rpb24pCit7CisgICAgQVNTRVJUKGlz
TWFpblRocmVhZCgpKTsKKyAgICBBdXRvTG9ja2VyIGxvY2tlcigqdGhpcyk7CisgICAgbV9kaXJ0
eVN1bW1pbmdKdW5jdGlvbnMucmVtb3ZlKHN1bW1pbmdKdW5jdGlvbik7Cit9CisKK3ZvaWQgV2Vi
S2l0QXVkaW9Db250ZXh0OjptYXJrQXVkaW9Ob2RlT3V0cHV0RGlydHkoQXVkaW9Ob2RlT3V0cHV0
KiBvdXRwdXQpCit7CisgICAgQVNTRVJUKGlzR3JhcGhPd25lcigpKTsKKyAgICBtX2RpcnR5QXVk
aW9Ob2RlT3V0cHV0cy5hZGQob3V0cHV0KTsKK30KKwordm9pZCBXZWJLaXRBdWRpb0NvbnRleHQ6
OmhhbmRsZURpcnR5QXVkaW9TdW1taW5nSnVuY3Rpb25zKCkKK3sKKyAgICBBU1NFUlQoaXNHcmFw
aE93bmVyKCkpOworCisgICAgZm9yIChhdXRvJiBqdW5jdGlvbiA6IG1fZGlydHlTdW1taW5nSnVu
Y3Rpb25zKQorICAgICAgICBqdW5jdGlvbi0+dXBkYXRlUmVuZGVyaW5nU3RhdGUoKTsKKworICAg
IG1fZGlydHlTdW1taW5nSnVuY3Rpb25zLmNsZWFyKCk7Cit9CisKK3ZvaWQgV2ViS2l0QXVkaW9D
b250ZXh0OjpoYW5kbGVEaXJ0eUF1ZGlvTm9kZU91dHB1dHMoKQoreworICAgIEFTU0VSVChpc0dy
YXBoT3duZXIoKSk7CisKKyAgICBmb3IgKGF1dG8mIG91dHB1dCA6IG1fZGlydHlBdWRpb05vZGVP
dXRwdXRzKQorICAgICAgICBvdXRwdXQtPnVwZGF0ZVJlbmRlcmluZ1N0YXRlKCk7CisKKyAgICBt
X2RpcnR5QXVkaW9Ob2RlT3V0cHV0cy5jbGVhcigpOworfQorCit2b2lkIFdlYktpdEF1ZGlvQ29u
dGV4dDo6YWRkQXV0b21hdGljUHVsbE5vZGUoQXVkaW9Ob2RlJiBub2RlKQoreworICAgIEFTU0VS
VChpc0dyYXBoT3duZXIoKSk7CisKKyAgICBpZiAobV9hdXRvbWF0aWNQdWxsTm9kZXMuYWRkKCZu
b2RlKS5pc05ld0VudHJ5KQorICAgICAgICBtX2F1dG9tYXRpY1B1bGxOb2Rlc05lZWRVcGRhdGlu
ZyA9IHRydWU7Cit9CisKK3ZvaWQgV2ViS2l0QXVkaW9Db250ZXh0OjpyZW1vdmVBdXRvbWF0aWNQ
dWxsTm9kZShBdWRpb05vZGUmIG5vZGUpCit7CisgICAgQVNTRVJUKGlzR3JhcGhPd25lcigpKTsK
KworICAgIGlmIChtX2F1dG9tYXRpY1B1bGxOb2Rlcy5yZW1vdmUoJm5vZGUpKQorICAgICAgICBt
X2F1dG9tYXRpY1B1bGxOb2Rlc05lZWRVcGRhdGluZyA9IHRydWU7Cit9CisKK3ZvaWQgV2ViS2l0
QXVkaW9Db250ZXh0Ojp1cGRhdGVBdXRvbWF0aWNQdWxsTm9kZXMoKQoreworICAgIEFTU0VSVChp
c0dyYXBoT3duZXIoKSk7CisKKyAgICBpZiAobV9hdXRvbWF0aWNQdWxsTm9kZXNOZWVkVXBkYXRp
bmcpIHsKKyAgICAgICAgLy8gQ29weSBmcm9tIG1fYXV0b21hdGljUHVsbE5vZGVzIHRvIG1fcmVu
ZGVyaW5nQXV0b21hdGljUHVsbE5vZGVzLgorICAgICAgICBtX3JlbmRlcmluZ0F1dG9tYXRpY1B1
bGxOb2Rlcy5yZXNpemUobV9hdXRvbWF0aWNQdWxsTm9kZXMuc2l6ZSgpKTsKKworICAgICAgICB1
bnNpZ25lZCBpID0gMDsKKyAgICAgICAgZm9yIChhdXRvJiBvdXRwdXQgOiBtX2F1dG9tYXRpY1B1
bGxOb2RlcykKKyAgICAgICAgICAgIG1fcmVuZGVyaW5nQXV0b21hdGljUHVsbE5vZGVzW2krK10g
PSBvdXRwdXQ7CisKKyAgICAgICAgbV9hdXRvbWF0aWNQdWxsTm9kZXNOZWVkVXBkYXRpbmcgPSBm
YWxzZTsKKyAgICB9Cit9CisKK3ZvaWQgV2ViS2l0QXVkaW9Db250ZXh0Ojpwcm9jZXNzQXV0b21h
dGljUHVsbE5vZGVzKHNpemVfdCBmcmFtZXNUb1Byb2Nlc3MpCit7CisgICAgQVNTRVJUKGlzQXVk
aW9UaHJlYWQoKSk7CisKKyAgICBmb3IgKGF1dG8mIG5vZGUgOiBtX3JlbmRlcmluZ0F1dG9tYXRp
Y1B1bGxOb2RlcykKKyAgICAgICAgbm9kZS0+cHJvY2Vzc0lmTmVjZXNzYXJ5KGZyYW1lc1RvUHJv
Y2Vzcyk7Cit9CisKK3ZvaWQgV2ViS2l0QXVkaW9Db250ZXh0Ojpub2RlV2lsbEJlZ2luUGxheWJh
Y2soKQoreworICAgIC8vIENhbGxlZCBieSBzY2hlZHVsZWQgQXVkaW9Ob2RlcyB3aGVuIGNsaWVu
dHMgc2NoZWR1bGUgdGhlaXIgc3RhcnQgdGltZXMuCisgICAgLy8gUHJpb3IgdG8gdGhlIGludHJv
ZHVjdGlvbiBvZiBzdXNwZW5kKCksIHJlc3VtZSgpLCBhbmQgc3RvcCgpLCBzdGFydGluZworICAg
IC8vIGEgc2NoZWR1bGVkIEF1ZGlvTm9kZSB3b3VsZCByZW1vdmUgdGhlIHVzZXItZ2VzdHVyZSBy
ZXN0cmljdGlvbiwgaWYgcHJlc2VudCwKKyAgICAvLyBhbmQgd291bGQgdGh1cyB1bm11dGUgdGhl
IGNvbnRleHQuIE5vdyB0aGF0IEF1ZGlvQ29udGV4dCBzdGF5cyBpbiB0aGUKKyAgICAvLyAic3Vz
cGVuZGVkIiBzdGF0ZSBpZiBhIHVzZXItZ2VzdHVyZSByZXN0cmljdGlvbiBpcyBwcmVzZW50LCBz
dGFydGluZyBhCisgICAgLy8gc2NoZWR1bGUgQXVkaW9Ob2RlIHNob3VsZCBzZXQgdGhlIHN0YXRl
IHRvICJydW5uaW5nIiwgYnV0IG9ubHkgaWYgdGhlCisgICAgLy8gdXNlci1nZXN0dXJlIHJlc3Ry
aWN0aW9uIGlzIHNldC4KKyAgICBpZiAodXNlckdlc3R1cmVSZXF1aXJlZEZvckF1ZGlvU3RhcnQo
KSkKKyAgICAgICAgc3RhcnRSZW5kZXJpbmcoKTsKK30KKworc3RhdGljIGJvb2wgc2hvdWxkRG9j
dW1lbnRBbGxvd1dlYkF1ZGlvVG9BdXRvUGxheShjb25zdCBEb2N1bWVudCYgZG9jdW1lbnQpCit7
CisgICAgaWYgKGRvY3VtZW50LnByb2Nlc3NpbmdVc2VyR2VzdHVyZUZvck1lZGlhKCkgfHwgZG9j
dW1lbnQuaXNDYXB0dXJpbmcoKSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgcmV0dXJuIGRv
Y3VtZW50LnF1aXJrcygpLnNob3VsZEF1dG9wbGF5V2ViQXVkaW9Gb3JBcmJpdHJhcnlVc2VyR2Vz
dHVyZSgpICYmIGRvY3VtZW50LnRvcERvY3VtZW50KCkuaGFzSGFkVXNlckludGVyYWN0aW9uKCk7
Cit9CisKK2Jvb2wgV2ViS2l0QXVkaW9Db250ZXh0Ojp3aWxsQmVnaW5QbGF5YmFjaygpCit7Cisg
ICAgYXV0byogZG9jdW1lbnQgPSB0aGlzLT5kb2N1bWVudCgpOworICAgIGlmICghZG9jdW1lbnQp
CisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGlmICh1c2VyR2VzdHVyZVJlcXVpcmVkRm9y
QXVkaW9TdGFydCgpKSB7CisgICAgICAgIGlmICghc2hvdWxkRG9jdW1lbnRBbGxvd1dlYkF1ZGlv
VG9BdXRvUGxheSgqZG9jdW1lbnQpKSB7CisgICAgICAgICAgICBBTFdBWVNfTE9HKExPR0lERU5U
SUZJRVIsICJyZXR1cm5pbmcgZmFsc2UsIG5vdCBwcm9jZXNzaW5nIHVzZXIgZ2VzdHVyZSBvciBj
YXB0dXJpbmciKTsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorICAgICAg
ICByZW1vdmVCZWhhdmlvclJlc3RyaWN0aW9uKFdlYktpdEF1ZGlvQ29udGV4dDo6UmVxdWlyZVVz
ZXJHZXN0dXJlRm9yQXVkaW9TdGFydFJlc3RyaWN0aW9uKTsKKyAgICB9CisKKyAgICBpZiAocGFn
ZUNvbnNlbnRSZXF1aXJlZEZvckF1ZGlvU3RhcnQoKSkgeworICAgICAgICBhdXRvKiBwYWdlID0g
ZG9jdW1lbnQtPnBhZ2UoKTsKKyAgICAgICAgaWYgKHBhZ2UgJiYgIXBhZ2UtPmNhblN0YXJ0TWVk
aWEoKSkgeworICAgICAgICAgICAgZG9jdW1lbnQtPmFkZE1lZGlhQ2FuU3RhcnRMaXN0ZW5lcigq
dGhpcyk7CisgICAgICAgICAgICBBTFdBWVNfTE9HKExPR0lERU5USUZJRVIsICJyZXR1cm5pbmcg
ZmFsc2UsIHBhZ2UgZG9lc24ndCBhbGxvdyBtZWRpYSB0byBzdGFydCIpOworICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOworICAgICAgICB9CisgICAgICAgIHJlbW92ZUJlaGF2aW9yUmVzdHJpY3Rp
b24oV2ViS2l0QXVkaW9Db250ZXh0OjpSZXF1aXJlUGFnZUNvbnNlbnRGb3JBdWRpb1N0YXJ0UmVz
dHJpY3Rpb24pOworICAgIH0KKworICAgIGF1dG8gd2lsbEJlZ2luID0gbV9tZWRpYVNlc3Npb24t
PmNsaWVudFdpbGxCZWdpblBsYXliYWNrKCk7CisgICAgQUxXQVlTX0xPRyhMT0dJREVOVElGSUVS
LCAicmV0dXJuaW5nICIsIHdpbGxCZWdpbik7CisKKyAgICByZXR1cm4gd2lsbEJlZ2luOworfQor
Citib29sIFdlYktpdEF1ZGlvQ29udGV4dDo6d2lsbFBhdXNlUGxheWJhY2soKQoreworICAgIGF1
dG8qIGRvY3VtZW50ID0gdGhpcy0+ZG9jdW1lbnQoKTsKKyAgICBpZiAoIWRvY3VtZW50KQorICAg
ICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBpZiAodXNlckdlc3R1cmVSZXF1aXJlZEZvckF1ZGlv
U3RhcnQoKSkgeworICAgICAgICBpZiAoIWRvY3VtZW50LT5wcm9jZXNzaW5nVXNlckdlc3R1cmVG
b3JNZWRpYSgpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICByZW1vdmVCZWhh
dmlvclJlc3RyaWN0aW9uKFdlYktpdEF1ZGlvQ29udGV4dDo6UmVxdWlyZVVzZXJHZXN0dXJlRm9y
QXVkaW9TdGFydFJlc3RyaWN0aW9uKTsKKyAgICB9CisKKyAgICBpZiAocGFnZUNvbnNlbnRSZXF1
aXJlZEZvckF1ZGlvU3RhcnQoKSkgeworICAgICAgICBhdXRvKiBwYWdlID0gZG9jdW1lbnQtPnBh
Z2UoKTsKKyAgICAgICAgaWYgKHBhZ2UgJiYgIXBhZ2UtPmNhblN0YXJ0TWVkaWEoKSkgeworICAg
ICAgICAgICAgZG9jdW1lbnQtPmFkZE1lZGlhQ2FuU3RhcnRMaXN0ZW5lcigqdGhpcyk7CisgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKyAgICAgICAgcmVtb3ZlQmVoYXZpb3JS
ZXN0cmljdGlvbihXZWJLaXRBdWRpb0NvbnRleHQ6OlJlcXVpcmVQYWdlQ29uc2VudEZvckF1ZGlv
U3RhcnRSZXN0cmljdGlvbik7CisgICAgfQorCisgICAgcmV0dXJuIG1fbWVkaWFTZXNzaW9uLT5j
bGllbnRXaWxsUGF1c2VQbGF5YmFjaygpOworfQorCit2b2lkIFdlYktpdEF1ZGlvQ29udGV4dDo6
c3RhcnRSZW5kZXJpbmcoKQoreworICAgIEFMV0FZU19MT0coTE9HSURFTlRJRklFUik7CisgICAg
aWYgKG1faXNTdG9wU2NoZWR1bGVkIHx8ICF3aWxsQmVnaW5QbGF5YmFjaygpKQorICAgICAgICBy
ZXR1cm47CisKKyAgICBtYWtlUGVuZGluZ0FjdGl2aXR5KCk7CisKKyAgICBkZXN0aW5hdGlvbigp
LT5zdGFydFJlbmRlcmluZygpOworICAgIHNldFN0YXRlKFN0YXRlOjpSdW5uaW5nKTsKK30KKwor
dm9pZCBXZWJLaXRBdWRpb0NvbnRleHQ6Om1lZGlhQ2FuU3RhcnQoRG9jdW1lbnQmIGRvY3VtZW50
KQoreworICAgIEFTU0VSVF9VTlVTRUQoZG9jdW1lbnQsICZkb2N1bWVudCA9PSB0aGlzLT5kb2N1
bWVudCgpKTsKKyAgICByZW1vdmVCZWhhdmlvclJlc3RyaWN0aW9uKFdlYktpdEF1ZGlvQ29udGV4
dDo6UmVxdWlyZVBhZ2VDb25zZW50Rm9yQXVkaW9TdGFydFJlc3RyaWN0aW9uKTsKKyAgICBtYXlS
ZXN1bWVQbGF5YmFjayh0cnVlKTsKK30KKworTWVkaWFQcm9kdWNlcjo6TWVkaWFTdGF0ZUZsYWdz
IFdlYktpdEF1ZGlvQ29udGV4dDo6bWVkaWFTdGF0ZSgpIGNvbnN0Cit7CisgICAgaWYgKCFtX2lz
U3RvcFNjaGVkdWxlZCAmJiBtX2Rlc3RpbmF0aW9uTm9kZSAmJiBtX2Rlc3RpbmF0aW9uTm9kZS0+
aXNQbGF5aW5nQXVkaW8oKSkKKyAgICAgICAgcmV0dXJuIE1lZGlhUHJvZHVjZXI6OklzUGxheWlu
Z0F1ZGlvOworCisgICAgcmV0dXJuIE1lZGlhUHJvZHVjZXI6OklzTm90UGxheWluZzsKK30KKwor
dm9pZCBXZWJLaXRBdWRpb0NvbnRleHQ6OnBhZ2VNdXRlZFN0YXRlRGlkQ2hhbmdlKCkKK3sKKyAg
ICBpZiAobV9kZXN0aW5hdGlvbk5vZGUgJiYgZG9jdW1lbnQoKSAmJiBkb2N1bWVudCgpLT5wYWdl
KCkpCisgICAgICAgIG1fZGVzdGluYXRpb25Ob2RlLT5zZXRNdXRlZChkb2N1bWVudCgpLT5wYWdl
KCktPmlzQXVkaW9NdXRlZCgpKTsKK30KKwordm9pZCBXZWJLaXRBdWRpb0NvbnRleHQ6OmlzUGxh
eWluZ0F1ZGlvRGlkQ2hhbmdlKCkKK3sKKyAgICAvLyBNYWtlIHN1cmUgdG8gY2FsbCBEb2N1bWVu
dDo6dXBkYXRlSXNQbGF5aW5nTWVkaWEoKSBvbiB0aGUgbWFpbiB0aHJlYWQsIHNpbmNlCisgICAg
Ly8gd2UgY291bGQgYmUgb24gdGhlIGF1ZGlvIEkvTyB0aHJlYWQgaGVyZSBhbmQgdGhlIGNhbGwg
aW50byBXZWJDb3JlIGNvdWxkIGJsb2NrLgorICAgIGNhbGxPbk1haW5UaHJlYWQoW3Byb3RlY3Rl
ZFRoaXMgPSBtYWtlUmVmKCp0aGlzKV0geworICAgICAgICBpZiAocHJvdGVjdGVkVGhpcy0+ZG9j
dW1lbnQoKSkKKyAgICAgICAgICAgIHByb3RlY3RlZFRoaXMtPmRvY3VtZW50KCktPnVwZGF0ZUlz
UGxheWluZ01lZGlhKCk7CisgICAgfSk7Cit9CisKK3ZvaWQgV2ViS2l0QXVkaW9Db250ZXh0Ojpm
aW5pc2hlZFJlbmRlcmluZyhib29sIGRpZFJlbmRlcmluZykKK3sKKyAgICBBU1NFUlQoaXNPZmZs
aW5lQ29udGV4dCgpKTsKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAgIGlmICghaXNN
YWluVGhyZWFkKCkpCisgICAgICAgIHJldHVybjsKKworICAgIGF1dG8gY2xlYXJQZW5kaW5nQWN0
aXZpdHlJZkV4aXRFYXJseSA9IFdURjo6bWFrZVNjb3BlRXhpdChbdGhpc10geworICAgICAgICBj
bGVhclBlbmRpbmdBY3Rpdml0eSgpOworICAgIH0pOworCisKKyAgICBBTFdBWVNfTE9HKExPR0lE
RU5USUZJRVIpOworCisgICAgaWYgKCFkaWRSZW5kZXJpbmcpCisgICAgICAgIHJldHVybjsKKwor
ICAgIEF1ZGlvQnVmZmVyKiByZW5kZXJlZEJ1ZmZlciA9IG1fcmVuZGVyVGFyZ2V0LmdldCgpOwor
ICAgIHNldFN0YXRlKFN0YXRlOjpDbG9zZWQpOworCisgICAgQVNTRVJUKHJlbmRlcmVkQnVmZmVy
KTsKKyAgICBpZiAoIXJlbmRlcmVkQnVmZmVyKQorICAgICAgICByZXR1cm47CisKKyAgICAvLyBB
dm9pZCBmaXJpbmcgdGhlIGV2ZW50IGlmIHRoZSBkb2N1bWVudCBoYXMgYWxyZWFkeSBnb25lIGF3
YXkuCisgICAgaWYgKG1faXNTdG9wU2NoZWR1bGVkKQorICAgICAgICByZXR1cm47CisKKyAgICBj
bGVhclBlbmRpbmdBY3Rpdml0eUlmRXhpdEVhcmx5LnJlbGVhc2UoKTsKKyAgICBtX2V2ZW50UXVl
dWUtPmVucXVldWVFdmVudChPZmZsaW5lQXVkaW9Db21wbGV0aW9uRXZlbnQ6OmNyZWF0ZShyZW5k
ZXJlZEJ1ZmZlcikpOworfQorCit2b2lkIFdlYktpdEF1ZGlvQ29udGV4dDo6ZGlzcGF0Y2hFdmVu
dChFdmVudCYgZXZlbnQpCit7CisgICAgRXZlbnRUYXJnZXQ6OmRpc3BhdGNoRXZlbnQoZXZlbnQp
OworICAgIGlmIChldmVudC5ldmVudEludGVyZmFjZSgpID09IE9mZmxpbmVBdWRpb0NvbXBsZXRp
b25FdmVudEludGVyZmFjZVR5cGUpCisgICAgICAgIGNsZWFyUGVuZGluZ0FjdGl2aXR5KCk7Cit9
CisKK3ZvaWQgV2ViS2l0QXVkaW9Db250ZXh0OjppbmNyZW1lbnRBY3RpdmVTb3VyY2VDb3VudCgp
Cit7CisgICAgKyttX2FjdGl2ZVNvdXJjZUNvdW50OworfQorCit2b2lkIFdlYktpdEF1ZGlvQ29u
dGV4dDo6ZGVjcmVtZW50QWN0aXZlU291cmNlQ291bnQoKQoreworICAgIC0tbV9hY3RpdmVTb3Vy
Y2VDb3VudDsKK30KKwordm9pZCBXZWJLaXRBdWRpb0NvbnRleHQ6OnN1c3BlbmRSZW5kZXJpbmco
RE9NUHJvbWlzZURlZmVycmVkPHZvaWQ+JiYgcHJvbWlzZSkKK3sKKyAgICBpZiAoaXNPZmZsaW5l
Q29udGV4dCgpIHx8IG1faXNTdG9wU2NoZWR1bGVkKSB7CisgICAgICAgIHByb21pc2UucmVqZWN0
KEludmFsaWRTdGF0ZUVycm9yKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlmICht
X3N0YXRlID09IFN0YXRlOjpTdXNwZW5kZWQpIHsKKyAgICAgICAgcHJvbWlzZS5yZXNvbHZlKCk7
CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpZiAobV9zdGF0ZSA9PSBTdGF0ZTo6Q2xv
c2VkIHx8IG1fc3RhdGUgPT0gU3RhdGU6OkludGVycnVwdGVkIHx8ICFtX2Rlc3RpbmF0aW9uTm9k
ZSkgeworICAgICAgICBwcm9taXNlLnJlamVjdCgpOworICAgICAgICByZXR1cm47CisgICAgfQor
CisgICAgYWRkUmVhY3Rpb24oU3RhdGU6OlN1c3BlbmRlZCwgV1RGTW92ZShwcm9taXNlKSk7CisK
KyAgICBpZiAoIXdpbGxQYXVzZVBsYXliYWNrKCkpCisgICAgICAgIHJldHVybjsKKworICAgIGxh
enlJbml0aWFsaXplKCk7CisKKyAgICBtX2Rlc3RpbmF0aW9uTm9kZS0+c3VzcGVuZChbdGhpcywg
cHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpXSB7CisgICAgICAgIHNldFN0YXRlKFN0YXRl
OjpTdXNwZW5kZWQpOworICAgIH0pOworfQorCit2b2lkIFdlYktpdEF1ZGlvQ29udGV4dDo6cmVz
dW1lUmVuZGVyaW5nKERPTVByb21pc2VEZWZlcnJlZDx2b2lkPiYmIHByb21pc2UpCit7CisgICAg
aWYgKGlzT2ZmbGluZUNvbnRleHQoKSB8fCBtX2lzU3RvcFNjaGVkdWxlZCkgeworICAgICAgICBw
cm9taXNlLnJlamVjdChJbnZhbGlkU3RhdGVFcnJvcik7CisgICAgICAgIHJldHVybjsKKyAgICB9
CisKKyAgICBpZiAobV9zdGF0ZSA9PSBTdGF0ZTo6UnVubmluZykgeworICAgICAgICBwcm9taXNl
LnJlc29sdmUoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlmIChtX3N0YXRlID09
IFN0YXRlOjpDbG9zZWQgfHwgIW1fZGVzdGluYXRpb25Ob2RlKSB7CisgICAgICAgIHByb21pc2Uu
cmVqZWN0KCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBhZGRSZWFjdGlvbihTdGF0
ZTo6UnVubmluZywgV1RGTW92ZShwcm9taXNlKSk7CisKKyAgICBpZiAoIXdpbGxCZWdpblBsYXli
YWNrKCkpCisgICAgICAgIHJldHVybjsKKworICAgIGxhenlJbml0aWFsaXplKCk7CisKKyAgICBt
X2Rlc3RpbmF0aW9uTm9kZS0+cmVzdW1lKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigq
dGhpcyldIHsKKyAgICAgICAgc2V0U3RhdGUoU3RhdGU6OlJ1bm5pbmcpOworICAgIH0pOworfQor
Cit2b2lkIFdlYktpdEF1ZGlvQ29udGV4dDo6Y2xvc2UoRE9NUHJvbWlzZURlZmVycmVkPHZvaWQ+
JiYgcHJvbWlzZSkKK3sKKyAgICBpZiAoaXNPZmZsaW5lQ29udGV4dCgpIHx8IG1faXNTdG9wU2No
ZWR1bGVkKSB7CisgICAgICAgIHByb21pc2UucmVqZWN0KEludmFsaWRTdGF0ZUVycm9yKTsKKyAg
ICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlmIChtX3N0YXRlID09IFN0YXRlOjpDbG9zZWQg
fHwgIW1fZGVzdGluYXRpb25Ob2RlKSB7CisgICAgICAgIHByb21pc2UucmVzb2x2ZSgpOworICAg
ICAgICByZXR1cm47CisgICAgfQorCisgICAgYWRkUmVhY3Rpb24oU3RhdGU6OkNsb3NlZCwgV1RG
TW92ZShwcm9taXNlKSk7CisKKyAgICBsYXp5SW5pdGlhbGl6ZSgpOworCisgICAgbV9kZXN0aW5h
dGlvbk5vZGUtPmNsb3NlKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyldIHsK
KyAgICAgICAgc2V0U3RhdGUoU3RhdGU6OkNsb3NlZCk7CisgICAgICAgIHVuaW5pdGlhbGl6ZSgp
OworICAgIH0pOworfQorCisKK3ZvaWQgV2ViS2l0QXVkaW9Db250ZXh0OjpzdXNwZW5kUGxheWJh
Y2soKQoreworICAgIGlmICghbV9kZXN0aW5hdGlvbk5vZGUgfHwgbV9zdGF0ZSA9PSBTdGF0ZTo6
Q2xvc2VkKQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAobV9zdGF0ZSA9PSBTdGF0ZTo6U3Vz
cGVuZGVkKSB7CisgICAgICAgIGlmIChtX21lZGlhU2Vzc2lvbi0+c3RhdGUoKSA9PSBQbGF0Zm9y
bU1lZGlhU2Vzc2lvbjo6SW50ZXJydXB0ZWQpCisgICAgICAgICAgICBzZXRTdGF0ZShTdGF0ZTo6
SW50ZXJydXB0ZWQpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgbGF6eUluaXRpYWxp
emUoKTsKKworICAgIG1fZGVzdGluYXRpb25Ob2RlLT5zdXNwZW5kKFt0aGlzLCBwcm90ZWN0ZWRU
aGlzID0gbWFrZVJlZigqdGhpcyldIHsKKyAgICAgICAgYm9vbCBpbnRlcnJ1cHRlZCA9IG1fbWVk
aWFTZXNzaW9uLT5zdGF0ZSgpID09IFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpJbnRlcnJ1cHRlZDsK
KyAgICAgICAgc2V0U3RhdGUoaW50ZXJydXB0ZWQgPyBTdGF0ZTo6SW50ZXJydXB0ZWQgOiBTdGF0
ZTo6U3VzcGVuZGVkKTsKKyAgICB9KTsKK30KKwordm9pZCBXZWJLaXRBdWRpb0NvbnRleHQ6Om1h
eVJlc3VtZVBsYXliYWNrKGJvb2wgc2hvdWxkUmVzdW1lKQoreworICAgIGlmICghbV9kZXN0aW5h
dGlvbk5vZGUgfHwgbV9zdGF0ZSA9PSBTdGF0ZTo6Q2xvc2VkIHx8IG1fc3RhdGUgPT0gU3RhdGU6
OlJ1bm5pbmcpCisgICAgICAgIHJldHVybjsKKworICAgIGlmICghc2hvdWxkUmVzdW1lKSB7Cisg
ICAgICAgIHNldFN0YXRlKFN0YXRlOjpTdXNwZW5kZWQpOworICAgICAgICByZXR1cm47CisgICAg
fQorCisgICAgaWYgKCF3aWxsQmVnaW5QbGF5YmFjaygpKQorICAgICAgICByZXR1cm47CisKKyAg
ICBsYXp5SW5pdGlhbGl6ZSgpOworCisgICAgbV9kZXN0aW5hdGlvbk5vZGUtPnJlc3VtZShbdGhp
cywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpXSB7CisgICAgICAgIHNldFN0YXRlKFN0
YXRlOjpSdW5uaW5nKTsKKyAgICB9KTsKK30KKwordm9pZCBXZWJLaXRBdWRpb0NvbnRleHQ6OnBv
c3RUYXNrKFdURjo6RnVuY3Rpb248dm9pZCgpPiYmIHRhc2spCit7CisgICAgaWYgKG1faXNTdG9w
U2NoZWR1bGVkKQorICAgICAgICByZXR1cm47CisKKyAgICBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQtPnBvc3RUYXNrKFdURk1vdmUodGFzaykpOworfQorCitjb25zdCBTZWN1cml0eU9yaWdpbiog
V2ViS2l0QXVkaW9Db250ZXh0OjpvcmlnaW4oKSBjb25zdAoreworICAgIHJldHVybiBtX3Njcmlw
dEV4ZWN1dGlvbkNvbnRleHQgPyBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPnNlY3VyaXR5T3Jp
Z2luKCkgOiBudWxscHRyOworfQorCit2b2lkIFdlYktpdEF1ZGlvQ29udGV4dDo6YWRkQ29uc29s
ZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZSBzb3VyY2UsIE1lc3NhZ2VMZXZlbCBsZXZlbCwgY29uc3Qg
U3RyaW5nJiBtZXNzYWdlKQoreworICAgIGlmIChtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQpCisg
ICAgICAgIG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+YWRkQ29uc29sZU1lc3NhZ2Uoc291cmNl
LCBsZXZlbCwgbWVzc2FnZSk7Cit9CisKK3ZvaWQgV2ViS2l0QXVkaW9Db250ZXh0OjpjbGVhclBl
bmRpbmdBY3Rpdml0eSgpCit7CisgICAgaWYgKCFtX3BlbmRpbmdBY3Rpdml0eSkKKyAgICAgICAg
cmV0dXJuOworICAgIG1fcGVuZGluZ0FjdGl2aXR5ID0gbnVsbHB0cjsKKyAgICAvLyBGSVhNRTog
UmVtb3ZlIHRoaXMgc3BlY2lmaWMgZGVyZWYoKSBhbmQgcmVmKCkgY2FsbCBpbiBtYWtlUGVuZGlu
Z0FjdGl2aXR5KCkuCisgICAgZGVyZWYoKTsKK30KKwordm9pZCBXZWJLaXRBdWRpb0NvbnRleHQ6
Om1ha2VQZW5kaW5nQWN0aXZpdHkoKQoreworICAgIGlmIChtX3BlbmRpbmdBY3Rpdml0eSkKKyAg
ICAgICAgcmV0dXJuOworICAgIG1fcGVuZGluZ0FjdGl2aXR5ID0gQWN0aXZlRE9NT2JqZWN0Ojpt
YWtlUGVuZGluZ0FjdGl2aXR5KCp0aGlzKTsKKyAgICByZWYoKTsKK30KKworI2lmICFSRUxFQVNF
X0xPR19ESVNBQkxFRAorV1RGTG9nQ2hhbm5lbCYgV2ViS2l0QXVkaW9Db250ZXh0Ojpsb2dDaGFu
bmVsKCkgY29uc3QKK3sKKyAgICByZXR1cm4gTG9nTWVkaWE7Cit9CisjZW5kaWYKKworfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKFdFQl9BVURJTykKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vV2ViS2l0QXVkaW9Db250ZXh0Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1dlYktpdEF1ZGlvQ29udGV4dC5oCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjQ5MDUyMDUxOTIwYmM4ZDZiMzQ0NWNjYjQ1ODljODdhY2Y3MTU2YTYKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1dlYktpdEF1ZGlv
Q29udGV4dC5oCkBAIC0wLDAgKzEsNDE3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIEdv
b2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYtMjAy
MCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUK
KyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTgorICogQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTCisgKiBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UK
KworI2luY2x1ZGUgIkFjdGl2ZURPTU9iamVjdC5oIgorI2luY2x1ZGUgIkFzeW5jQXVkaW9EZWNv
ZGVyLmgiCisjaW5jbHVkZSAiQXVkaW9CdXMuaCIKKyNpbmNsdWRlICJBdWRpb0NvbnRleHQuaCIK
KyNpbmNsdWRlICJBdWRpb0NvbnRleHRTdGF0ZS5oIgorI2luY2x1ZGUgIkF1ZGlvRGVzdGluYXRp
b25Ob2RlLmgiCisjaW5jbHVkZSAiRXZlbnRUYXJnZXQuaCIKKyNpbmNsdWRlICJNZWRpYUNhblN0
YXJ0TGlzdGVuZXIuaCIKKyNpbmNsdWRlICJNZWRpYVByb2R1Y2VyLmgiCisjaW5jbHVkZSAiUGxh
dGZvcm1NZWRpYVNlc3Npb24uaCIKKyNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0Lmgi
CisjaW5jbHVkZSAiVmlzaWJpbGl0eUNoYW5nZUNsaWVudC5oIgorI2luY2x1ZGUgPEphdmFTY3Jp
cHRDb3JlL0NvbnNvbGVUeXBlcy5oPgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0Zsb2F0MzJB
cnJheS5oPgorI2luY2x1ZGUgPGF0b21pYz4KKyNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgorI2lu
Y2x1ZGUgPHd0Zi9Mb2dnZXJIZWxwZXIuaD4KKyNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgor
I2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYvVGhyZWFkU2FmZVJlZkNvdW50
ZWQuaD4KKyNpbmNsdWRlIDx3dGYvVGhyZWFkaW5nLmg+CisjaW5jbHVkZSA8d3RmL1VuaXF1ZVJl
Zi5oPgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9BdG9tU3Ry
aW5nSGFzaC5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIEFuYWx5c2VyTm9kZTsK
K2NsYXNzIEF1ZGlvQnVmZmVyOworY2xhc3MgQXVkaW9CdWZmZXJDYWxsYmFjazsKK2NsYXNzIEF1
ZGlvQnVmZmVyU291cmNlTm9kZTsKK2NsYXNzIEF1ZGlvTGlzdGVuZXI7CitjbGFzcyBBdWRpb1N1
bW1pbmdKdW5jdGlvbjsKK2NsYXNzIEJpcXVhZEZpbHRlck5vZGU7CitjbGFzcyBDaGFubmVsTWVy
Z2VyTm9kZTsKK2NsYXNzIENoYW5uZWxTcGxpdHRlck5vZGU7CitjbGFzcyBDb252b2x2ZXJOb2Rl
OworY2xhc3MgRGVsYXlOb2RlOworY2xhc3MgRG9jdW1lbnQ7CitjbGFzcyBEeW5hbWljc0NvbXBy
ZXNzb3JOb2RlOworY2xhc3MgR2Fpbk5vZGU7CitjbGFzcyBIVE1MTWVkaWFFbGVtZW50OworY2xh
c3MgTWFpblRocmVhZEdlbmVyaWNFdmVudFF1ZXVlOworY2xhc3MgTWVkaWFFbGVtZW50QXVkaW9T
b3VyY2VOb2RlOworY2xhc3MgTWVkaWFTdHJlYW07CitjbGFzcyBNZWRpYVN0cmVhbUF1ZGlvRGVz
dGluYXRpb25Ob2RlOworY2xhc3MgTWVkaWFTdHJlYW1BdWRpb1NvdXJjZU5vZGU7CitjbGFzcyBP
c2NpbGxhdG9yTm9kZTsKK2NsYXNzIFBlcmlvZGljV2F2ZTsKK2NsYXNzIFNjcmlwdFByb2Nlc3Nv
ck5vZGU7CitjbGFzcyBTZWN1cml0eU9yaWdpbjsKK2NsYXNzIFdhdmVTaGFwZXJOb2RlOworY2xh
c3MgV2ViS2l0QXVkaW9QYW5uZXJOb2RlOworCit0ZW1wbGF0ZTx0eXBlbmFtZSBJRExUeXBlPiBj
bGFzcyBET01Qcm9taXNlRGVmZXJyZWQ7CisKKy8vIEF1ZGlvQ29udGV4dCBpcyB0aGUgY29ybmVy
c3RvbmUgb2YgdGhlIHdlYiBhdWRpbyBBUEkgYW5kIGFsbCBBdWRpb05vZGVzIGFyZSBjcmVhdGVk
IGZyb20gaXQuCisvLyBGb3IgdGhyZWFkIHNhZmV0eSBiZXR3ZWVuIHRoZSBhdWRpbyB0aHJlYWQg
YW5kIHRoZSBtYWluIHRocmVhZCwgaXQgaGFzIGEgcmVuZGVyaW5nIGdyYXBoIGxvY2tpbmcgbWVj
aGFuaXNtLgorCitjbGFzcyBXZWJLaXRBdWRpb0NvbnRleHQKKyAgICA6IHB1YmxpYyBBdWRpb0Nv
bnRleHRCYXNlCisgICAgLCBwcml2YXRlIFBsYXRmb3JtTWVkaWFTZXNzaW9uQ2xpZW50CisgICAg
LCBwcml2YXRlIFZpc2liaWxpdHlDaGFuZ2VDbGllbnQKK3sKKyAgICBXVEZfTUFLRV9JU09fQUxM
T0NBVEVEKFdlYktpdEF1ZGlvQ29udGV4dCk7CitwdWJsaWM6CisgICAgLy8gQ3JlYXRlIGFuIFdl
YktpdEF1ZGlvQ29udGV4dCBmb3IgcmVuZGVyaW5nIHRvIHRoZSBhdWRpbyBoYXJkd2FyZS4KKyAg
ICBzdGF0aWMgRXhjZXB0aW9uT3I8UmVmPFdlYktpdEF1ZGlvQ29udGV4dD4+IGNyZWF0ZShEb2N1
bWVudCYpOworCisgICAgdmlydHVhbCB+V2ViS2l0QXVkaW9Db250ZXh0KCk7CisKKyAgICBib29s
IGlzSW5pdGlhbGl6ZWQoKSBjb25zdCBmaW5hbDsKKworICAgIGJvb2wgaXNPZmZsaW5lQ29udGV4
dCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1faXNPZmZsaW5lQ29udGV4dDsgfQorCisgICAgRG9j
dW1lbnRJZGVudGlmaWVyIGhvc3RpbmdEb2N1bWVudElkZW50aWZpZXIoKSBjb25zdCBmaW5hbDsK
KworICAgIEF1ZGlvRGVzdGluYXRpb25Ob2RlKiBkZXN0aW5hdGlvbigpIHsgcmV0dXJuIG1fZGVz
dGluYXRpb25Ob2RlLmdldCgpOyB9CisgICAgc2l6ZV90IGN1cnJlbnRTYW1wbGVGcmFtZSgpIGNv
bnN0IGZpbmFsIHsgcmV0dXJuIG1fZGVzdGluYXRpb25Ob2RlID8gbV9kZXN0aW5hdGlvbk5vZGUt
PmN1cnJlbnRTYW1wbGVGcmFtZSgpIDogMDsgfQorICAgIGRvdWJsZSBjdXJyZW50VGltZSgpIGNv
bnN0IGZpbmFsIHsgcmV0dXJuIG1fZGVzdGluYXRpb25Ob2RlID8gbV9kZXN0aW5hdGlvbk5vZGUt
PmN1cnJlbnRUaW1lKCkgOiAwLjsgfQorICAgIGZsb2F0IHNhbXBsZVJhdGUoKSBjb25zdCBmaW5h
bCB7IHJldHVybiBtX2Rlc3RpbmF0aW9uTm9kZSA/IG1fZGVzdGluYXRpb25Ob2RlLT5zYW1wbGVS
YXRlKCkgOiAwLmY7IH0KKyAgICB1bnNpZ25lZCBsb25nIGFjdGl2ZVNvdXJjZUNvdW50KCkgY29u
c3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8dW5zaWduZWQgbG9uZz4obV9hY3RpdmVTb3VyY2VDb3Vu
dCk7IH0KKworICAgIHZvaWQgaW5jcmVtZW50QWN0aXZlU291cmNlQ291bnQoKSBmaW5hbDsKKyAg
ICB2b2lkIGRlY3JlbWVudEFjdGl2ZVNvdXJjZUNvdW50KCkgZmluYWw7CisKKyAgICBFeGNlcHRp
b25PcjxSZWY8QXVkaW9CdWZmZXI+PiBjcmVhdGVCdWZmZXIodW5zaWduZWQgbnVtYmVyT2ZDaGFu
bmVscywgc2l6ZV90IG51bWJlck9mRnJhbWVzLCBmbG9hdCBzYW1wbGVSYXRlKTsKKyAgICBFeGNl
cHRpb25PcjxSZWY8QXVkaW9CdWZmZXI+PiBjcmVhdGVCdWZmZXIoQXJyYXlCdWZmZXImLCBib29s
IG1peFRvTW9ubyk7CisKKyAgICAvLyBBc3luY2hyb25vdXMgYXVkaW8gZmlsZSBkYXRhIGRlY29k
aW5nLgorICAgIHZvaWQgZGVjb2RlQXVkaW9EYXRhKFJlZjxBcnJheUJ1ZmZlcj4mJiwgUmVmUHRy
PEF1ZGlvQnVmZmVyQ2FsbGJhY2s+JiYsIFJlZlB0cjxBdWRpb0J1ZmZlckNhbGxiYWNrPiYmKTsK
KworICAgIEF1ZGlvTGlzdGVuZXIqIGxpc3RlbmVyKCkgeyByZXR1cm4gbV9saXN0ZW5lci5nZXQo
KTsgfQorCisgICAgdm9pZCBzdXNwZW5kUmVuZGVyaW5nKERPTVByb21pc2VEZWZlcnJlZDx2b2lk
PiYmKTsKKyAgICB2b2lkIHJlc3VtZVJlbmRlcmluZyhET01Qcm9taXNlRGVmZXJyZWQ8dm9pZD4m
Jik7CisgICAgdm9pZCBjbG9zZShET01Qcm9taXNlRGVmZXJyZWQ8dm9pZD4mJik7CisKKyAgICB1
c2luZyBTdGF0ZSA9IEF1ZGlvQ29udGV4dFN0YXRlOworICAgIFN0YXRlIHN0YXRlKCkgY29uc3Q7
CisgICAgYm9vbCBpc0Nsb3NlZCgpIGNvbnN0IHsgcmV0dXJuIG1fc3RhdGUgPT0gU3RhdGU6OkNs
b3NlZDsgfQorCisgICAgYm9vbCB3b3VsZFRhaW50T3JpZ2luKGNvbnN0IFVSTCYpIGNvbnN0Owor
CisgICAgLy8gVGhlIEF1ZGlvTm9kZSBjcmVhdGUgbWV0aG9kcyBhcmUgY2FsbGVkIG9uIHRoZSBt
YWluIHRocmVhZCAoZnJvbSBKYXZhU2NyaXB0KS4KKyAgICBFeGNlcHRpb25PcjxSZWY8QXVkaW9C
dWZmZXJTb3VyY2VOb2RlPj4gY3JlYXRlQnVmZmVyU291cmNlKCk7CisjaWYgRU5BQkxFKFZJREVP
KQorICAgIEV4Y2VwdGlvbk9yPFJlZjxNZWRpYUVsZW1lbnRBdWRpb1NvdXJjZU5vZGU+PiBjcmVh
dGVNZWRpYUVsZW1lbnRTb3VyY2UoSFRNTE1lZGlhRWxlbWVudCYpOworI2VuZGlmCisjaWYgRU5B
QkxFKE1FRElBX1NUUkVBTSkKKyAgICBFeGNlcHRpb25PcjxSZWY8TWVkaWFTdHJlYW1BdWRpb1Nv
dXJjZU5vZGU+PiBjcmVhdGVNZWRpYVN0cmVhbVNvdXJjZShNZWRpYVN0cmVhbSYpOworICAgIEV4
Y2VwdGlvbk9yPFJlZjxNZWRpYVN0cmVhbUF1ZGlvRGVzdGluYXRpb25Ob2RlPj4gY3JlYXRlTWVk
aWFTdHJlYW1EZXN0aW5hdGlvbigpOworI2VuZGlmCisgICAgRXhjZXB0aW9uT3I8UmVmPEdhaW5O
b2RlPj4gY3JlYXRlR2FpbigpOworICAgIEV4Y2VwdGlvbk9yPFJlZjxCaXF1YWRGaWx0ZXJOb2Rl
Pj4gY3JlYXRlQmlxdWFkRmlsdGVyKCk7CisgICAgRXhjZXB0aW9uT3I8UmVmPFdhdmVTaGFwZXJO
b2RlPj4gY3JlYXRlV2F2ZVNoYXBlcigpOworICAgIEV4Y2VwdGlvbk9yPFJlZjxEZWxheU5vZGU+
PiBjcmVhdGVEZWxheShkb3VibGUgbWF4RGVsYXlUaW1lKTsKKyAgICBFeGNlcHRpb25PcjxSZWY8
V2ViS2l0QXVkaW9QYW5uZXJOb2RlPj4gY3JlYXRlUGFubmVyKCk7CisgICAgRXhjZXB0aW9uT3I8
UmVmPENvbnZvbHZlck5vZGU+PiBjcmVhdGVDb252b2x2ZXIoKTsKKyAgICBFeGNlcHRpb25PcjxS
ZWY8RHluYW1pY3NDb21wcmVzc29yTm9kZT4+IGNyZWF0ZUR5bmFtaWNzQ29tcHJlc3NvcigpOwor
ICAgIEV4Y2VwdGlvbk9yPFJlZjxBbmFseXNlck5vZGU+PiBjcmVhdGVBbmFseXNlcigpOworICAg
IEV4Y2VwdGlvbk9yPFJlZjxTY3JpcHRQcm9jZXNzb3JOb2RlPj4gY3JlYXRlU2NyaXB0UHJvY2Vz
c29yKHNpemVfdCBidWZmZXJTaXplLCBzaXplX3QgbnVtYmVyT2ZJbnB1dENoYW5uZWxzLCBzaXpl
X3QgbnVtYmVyT2ZPdXRwdXRDaGFubmVscyk7CisgICAgRXhjZXB0aW9uT3I8UmVmPENoYW5uZWxT
cGxpdHRlck5vZGU+PiBjcmVhdGVDaGFubmVsU3BsaXR0ZXIoc2l6ZV90IG51bWJlck9mT3V0cHV0
cyk7CisgICAgRXhjZXB0aW9uT3I8UmVmPENoYW5uZWxNZXJnZXJOb2RlPj4gY3JlYXRlQ2hhbm5l
bE1lcmdlcihzaXplX3QgbnVtYmVyT2ZJbnB1dHMpOworICAgIEV4Y2VwdGlvbk9yPFJlZjxPc2Np
bGxhdG9yTm9kZT4+IGNyZWF0ZU9zY2lsbGF0b3IoKTsKKyAgICBFeGNlcHRpb25PcjxSZWY8UGVy
aW9kaWNXYXZlPj4gY3JlYXRlUGVyaW9kaWNXYXZlKEZsb2F0MzJBcnJheSYgcmVhbCwgRmxvYXQz
MkFycmF5JiBpbWFnaW5hcnkpOworCisgICAgLy8gV2hlbiBhIHNvdXJjZSBub2RlIGhhcyBubyBt
b3JlIHByb2Nlc3NpbmcgdG8gZG8gKGhhcyBmaW5pc2hlZCBwbGF5aW5nKSwgdGhlbiBpdCB0ZWxs
cyB0aGUgY29udGV4dCB0byBkZXJlZmVyZW5jZSBpdC4KKyAgICB2b2lkIG5vdGlmeU5vZGVGaW5p
c2hlZFByb2Nlc3NpbmcoQXVkaW9Ob2RlKikgZmluYWw7CisKKyAgICAvLyBDYWxsZWQgYXQgdGhl
IHN0YXJ0IG9mIGVhY2ggcmVuZGVyIHF1YW50dW0uCisgICAgdm9pZCBoYW5kbGVQcmVSZW5kZXJU
YXNrcygpIGZpbmFsOworCisgICAgLy8gQ2FsbGVkIGF0IHRoZSBlbmQgb2YgZWFjaCByZW5kZXIg
cXVhbnR1bS4KKyAgICB2b2lkIGhhbmRsZVBvc3RSZW5kZXJUYXNrcygpIGZpbmFsOworCisgICAg
Ly8gQ2FsbGVkIHBlcmlvZGljYWxseSBhdCB0aGUgZW5kIG9mIGVhY2ggcmVuZGVyIHF1YW50dW0g
dG8gZGVyZWZlcmVuY2UgZmluaXNoZWQgc291cmNlIG5vZGVzLgorICAgIHZvaWQgZGVyZWZGaW5p
c2hlZFNvdXJjZU5vZGVzKCk7CisKKyAgICAvLyBXZSBzY2hlZHVsZSBkZWxldGlvbiBvZiBhbGwg
bWFya2VkIG5vZGVzIGF0IHRoZSBlbmQgb2YgZWFjaCByZWFsdGltZSByZW5kZXIgcXVhbnR1bS4K
KyAgICB2b2lkIG1hcmtGb3JEZWxldGlvbihBdWRpb05vZGUmKSBmaW5hbDsKKyAgICB2b2lkIGRl
bGV0ZU1hcmtlZE5vZGVzKCkgZmluYWw7CisKKyAgICAvLyBBdWRpb0NvbnRleHQgY2FuIHB1bGwg
bm9kZShzKSBhdCB0aGUgZW5kIG9mIGVhY2ggcmVuZGVyIHF1YW50dW0gZXZlbiB3aGVuIHRoZXkg
YXJlIG5vdCBjb25uZWN0ZWQgdG8gYW55IGRvd25zdHJlYW0gbm9kZXMuCisgICAgLy8gVGhlc2Ug
dHdvIG1ldGhvZHMgYXJlIGNhbGxlZCBieSB0aGUgbm9kZXMgd2hvIHdhbnQgdG8gYWRkL3JlbW92
ZSB0aGVtc2VsdmVzIGludG8vZnJvbSB0aGUgYXV0b21hdGljIHB1bGwgbGlzdHMuCisgICAgdm9p
ZCBhZGRBdXRvbWF0aWNQdWxsTm9kZShBdWRpb05vZGUmKSBmaW5hbDsKKyAgICB2b2lkIHJlbW92
ZUF1dG9tYXRpY1B1bGxOb2RlKEF1ZGlvTm9kZSYpIGZpbmFsOworCisgICAgLy8gQ2FsbGVkIHJp
Z2h0IGJlZm9yZSBoYW5kbGVQb3N0UmVuZGVyVGFza3MoKSB0byBoYW5kbGUgbm9kZXMgd2hpY2gg
bmVlZCB0byBiZSBwdWxsZWQgZXZlbiB3aGVuIHRoZXkgYXJlIG5vdCBjb25uZWN0ZWQgdG8gYW55
dGhpbmcuCisgICAgdm9pZCBwcm9jZXNzQXV0b21hdGljUHVsbE5vZGVzKHNpemVfdCBmcmFtZXNU
b1Byb2Nlc3MpIGZpbmFsOworCisgICAgLy8gS2VlcHMgdHJhY2sgb2YgdGhlIG51bWJlciBvZiBj
b25uZWN0aW9ucyBtYWRlLgorICAgIHZvaWQgaW5jcmVtZW50Q29ubmVjdGlvbkNvdW50KCkgZmlu
YWwKKyAgICB7CisgICAgICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisgICAgICAgIG1fY29u
bmVjdGlvbkNvdW50Kys7CisgICAgfQorCisgICAgdW5zaWduZWQgY29ubmVjdGlvbkNvdW50KCkg
Y29uc3QgeyByZXR1cm4gbV9jb25uZWN0aW9uQ291bnQ7IH0KKworICAgIC8vCisgICAgLy8gVGhy
ZWFkIFNhZmV0eSBhbmQgR3JhcGggTG9ja2luZzoKKyAgICAvLworCisgICAgdm9pZCBzZXRBdWRp
b1RocmVhZChUaHJlYWQmIHRocmVhZCkgZmluYWwgeyBtX2F1ZGlvVGhyZWFkID0gJnRocmVhZDsg
fSAvLyBGSVhNRTogY2hlY2sgZWl0aGVyIG5vdCBpbml0aWFsaXplZCBvciB0aGUgc2FtZQorICAg
IFRocmVhZCogYXVkaW9UaHJlYWQoKSBjb25zdCB7IHJldHVybiBtX2F1ZGlvVGhyZWFkOyB9Cisg
ICAgYm9vbCBpc0F1ZGlvVGhyZWFkKCkgY29uc3QgZmluYWw7CisKKyAgICAvLyBSZXR1cm5zIHRy
dWUgb25seSBhZnRlciB0aGUgYXVkaW8gdGhyZWFkIGhhcyBiZWVuIHN0YXJ0ZWQgYW5kIHRoZW4g
c2h1dGRvd24uCisgICAgYm9vbCBpc0F1ZGlvVGhyZWFkRmluaXNoZWQoKSBmaW5hbCB7IHJldHVy
biBtX2lzQXVkaW9UaHJlYWRGaW5pc2hlZDsgfQorCisgICAgLy8gbXVzdFJlbGVhc2VMb2NrIGlz
IHNldCB0byB0cnVlIGlmIHdlIGFjcXVpcmVkIHRoZSBsb2NrIGluIHRoaXMgbWV0aG9kIGNhbGwg
YW5kIGNhbGxlciBtdXN0IHVubG9jaygpLCBmYWxzZSBpZiBpdCB3YXMgcHJldmlvdXNseSBhY3F1
aXJlZC4KKyAgICB2b2lkIGxvY2soYm9vbCYgbXVzdFJlbGVhc2VMb2NrKSBmaW5hbDsKKworICAg
IC8vIFJldHVybnMgdHJ1ZSBpZiB3ZSBvd24gdGhlIGxvY2suCisgICAgLy8gbXVzdFJlbGVhc2VM
b2NrIGlzIHNldCB0byB0cnVlIGlmIHdlIGFjcXVpcmVkIHRoZSBsb2NrIGluIHRoaXMgbWV0aG9k
IGNhbGwgYW5kIGNhbGxlciBtdXN0IHVubG9jaygpLCBmYWxzZSBpZiBpdCB3YXMgcHJldmlvdXNs
eSBhY3F1aXJlZC4KKyAgICBib29sIHRyeUxvY2soYm9vbCYgbXVzdFJlbGVhc2VMb2NrKSBmaW5h
bDsKKworICAgIHZvaWQgdW5sb2NrKCkgZmluYWw7CisKKyAgICAvLyBSZXR1cm5zIHRydWUgaWYg
dGhpcyB0aHJlYWQgb3ducyB0aGUgY29udGV4dCdzIGxvY2suCisgICAgYm9vbCBpc0dyYXBoT3du
ZXIoKSBjb25zdCBmaW5hbDsKKworICAgIC8vIFJldHVybnMgdGhlIG1heGltdW0gbnVtYmVyIG9m
IGNoYW5uZWxzIHdlIGNhbiBzdXBwb3J0LgorICAgIHN0YXRpYyB1bnNpZ25lZCBtYXhOdW1iZXJP
ZkNoYW5uZWxzKCkgeyByZXR1cm4gTWF4TnVtYmVyT2ZDaGFubmVsczsgfQorCisgICAgLy8gSW4g
QXVkaW9Ob2RlOjpkZXJlZigpIGEgdHJ5TG9jaygpIGlzIHVzZWQgZm9yIGNhbGxpbmcgZmluaXNo
RGVyZWYoKSwgYnV0IGlmIGl0IGZhaWxzIGtlZXAgdHJhY2sgaGVyZS4KKyAgICB2b2lkIGFkZERl
ZmVycmVkRmluaXNoRGVyZWYoQXVkaW9Ob2RlKikgZmluYWw7CisKKyAgICAvLyBJbiB0aGUgYXVk
aW8gdGhyZWFkIGF0IHRoZSBzdGFydCBvZiBlYWNoIHJlbmRlciBjeWNsZSwgd2UnbGwgY2FsbCBo
YW5kbGVEZWZlcnJlZEZpbmlzaERlcmVmcygpLgorICAgIHZvaWQgaGFuZGxlRGVmZXJyZWRGaW5p
c2hEZXJlZnMoKTsKKworICAgIC8vIE9ubHkgYWNjZXNzZWQgd2hlbiB0aGUgZ3JhcGggbG9jayBp
cyBoZWxkLgorICAgIHZvaWQgbWFya1N1bW1pbmdKdW5jdGlvbkRpcnR5KEF1ZGlvU3VtbWluZ0p1
bmN0aW9uKikgZmluYWw7CisgICAgdm9pZCBtYXJrQXVkaW9Ob2RlT3V0cHV0RGlydHkoQXVkaW9O
b2RlT3V0cHV0KikgZmluYWw7CisKKyAgICAvLyBNdXN0IGJlIGNhbGxlZCBvbiBtYWluIHRocmVh
ZC4KKyAgICB2b2lkIHJlbW92ZU1hcmtlZFN1bW1pbmdKdW5jdGlvbihBdWRpb1N1bW1pbmdKdW5j
dGlvbiopIGZpbmFsOworCisgICAgLy8gRXZlbnRUYXJnZXQKKyAgICBFdmVudFRhcmdldEludGVy
ZmFjZSBldmVudFRhcmdldEludGVyZmFjZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIFdlYktpdEF1
ZGlvQ29udGV4dEV2ZW50VGFyZ2V0SW50ZXJmYWNlVHlwZTsgfQorCisgICAgdm9pZCBzdGFydFJl
bmRlcmluZygpOworICAgIHZvaWQgZmluaXNoZWRSZW5kZXJpbmcoYm9vbCBkaWRSZW5kZXJpbmcp
IGZpbmFsOworCisgICAgc3RhdGljIHVuc2lnbmVkIHNfaGFyZHdhcmVDb250ZXh0Q291bnQ7CisK
KyAgICAvLyBSZXN0cmljdGlvbnMgdG8gY2hhbmdlIGRlZmF1bHQgYmVoYXZpb3JzLgorICAgIEJl
aGF2aW9yUmVzdHJpY3Rpb25zIGJlaGF2aW9yUmVzdHJpY3Rpb25zKCkgY29uc3QgZmluYWwgeyBy
ZXR1cm4gbV9yZXN0cmljdGlvbnM7IH0KKyAgICB2b2lkIGFkZEJlaGF2aW9yUmVzdHJpY3Rpb24o
QmVoYXZpb3JSZXN0cmljdGlvbnMgcmVzdHJpY3Rpb24pIGZpbmFsIHsgbV9yZXN0cmljdGlvbnMg
fD0gcmVzdHJpY3Rpb247IH0KKyAgICB2b2lkIHJlbW92ZUJlaGF2aW9yUmVzdHJpY3Rpb24oQmVo
YXZpb3JSZXN0cmljdGlvbnMgcmVzdHJpY3Rpb24pIGZpbmFsIHsgbV9yZXN0cmljdGlvbnMgJj0g
fnJlc3RyaWN0aW9uOyB9CisKKyAgICB2b2lkIGlzUGxheWluZ0F1ZGlvRGlkQ2hhbmdlKCkgZmlu
YWw7CisKKyAgICB2b2lkIG5vZGVXaWxsQmVnaW5QbGF5YmFjaygpIGZpbmFsOworCisjaWYgIVJF
TEVBU0VfTE9HX0RJU0FCTEVECisgICAgY29uc3QgTG9nZ2VyJiBsb2dnZXIoKSBjb25zdCBmaW5h
bCB7IHJldHVybiBtX2xvZ2dlci5nZXQoKTsgfQorICAgIGNvbnN0IHZvaWQqIGxvZ0lkZW50aWZp
ZXIoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2xvZ0lkZW50aWZpZXI7IH0KKyAgICBXVEZMb2dD
aGFubmVsJiBsb2dDaGFubmVsKCkgY29uc3QgZmluYWw7CisgICAgY29uc3Qgdm9pZCogbmV4dEF1
ZGlvTm9kZUxvZ0lkZW50aWZpZXIoKSBmaW5hbCB7IHJldHVybiBjaGlsZExvZ0lkZW50aWZpZXIo
bV9sb2dJZGVudGlmaWVyLCArK21fbmV4dEF1ZGlvTm9kZUlkZW50aWZpZXIpOyB9CisgICAgY29u
c3Qgdm9pZCogbmV4dEF1ZGlvUGFyYW1ldGVyTG9nSWRlbnRpZmllcigpIGZpbmFsIHsgcmV0dXJu
IGNoaWxkTG9nSWRlbnRpZmllcihtX2xvZ0lkZW50aWZpZXIsICsrbV9uZXh0QXVkaW9QYXJhbWV0
ZXJJZGVudGlmaWVyKTsgfQorI2VuZGlmCisKKyAgICB2b2lkIHBvc3RUYXNrKFdURjo6RnVuY3Rp
b248dm9pZCgpPiYmKSBmaW5hbDsKKyAgICBib29sIGlzU3RvcHBlZCgpIGNvbnN0IGZpbmFsIHsg
cmV0dXJuIG1faXNTdG9wU2NoZWR1bGVkOyB9CisgICAgY29uc3QgU2VjdXJpdHlPcmlnaW4qIG9y
aWdpbigpIGNvbnN0IGZpbmFsOworICAgIHZvaWQgYWRkQ29uc29sZU1lc3NhZ2UoTWVzc2FnZVNv
dXJjZSwgTWVzc2FnZUxldmVsLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UpIGZpbmFsOworCitwcm90
ZWN0ZWQ6CisgICAgZXhwbGljaXQgV2ViS2l0QXVkaW9Db250ZXh0KERvY3VtZW50Jik7CisgICAg
V2ViS2l0QXVkaW9Db250ZXh0KERvY3VtZW50JiwgQXVkaW9CdWZmZXIqIHJlbmRlclRhcmdldCk7
CisKKyAgICBzdGF0aWMgYm9vbCBpc1NhbXBsZVJhdGVSYW5nZUdvb2QoZmxvYXQgc2FtcGxlUmF0
ZSk7CisgICAgdm9pZCBjbGVhclBlbmRpbmdBY3Rpdml0eSgpOworICAgIHZvaWQgbWFrZVBlbmRp
bmdBY3Rpdml0eSgpOworCitwcml2YXRlOgorICAgIHZvaWQgY29uc3RydWN0Q29tbW9uKCk7CisK
KyAgICB2b2lkIGxhenlJbml0aWFsaXplKCk7CisgICAgdm9pZCB1bmluaXRpYWxpemUoKTsKKwor
ICAgIGJvb2wgd2lsbEJlZ2luUGxheWJhY2soKTsKKyAgICBib29sIHdpbGxQYXVzZVBsYXliYWNr
KCk7CisKKyAgICBib29sIHVzZXJHZXN0dXJlUmVxdWlyZWRGb3JBdWRpb1N0YXJ0KCkgY29uc3Qg
eyByZXR1cm4gIWlzT2ZmbGluZUNvbnRleHQoKSAmJiBtX3Jlc3RyaWN0aW9ucyAmIFJlcXVpcmVV
c2VyR2VzdHVyZUZvckF1ZGlvU3RhcnRSZXN0cmljdGlvbjsgfQorICAgIGJvb2wgcGFnZUNvbnNl
bnRSZXF1aXJlZEZvckF1ZGlvU3RhcnQoKSBjb25zdCB7IHJldHVybiAhaXNPZmZsaW5lQ29udGV4
dCgpICYmIG1fcmVzdHJpY3Rpb25zICYgUmVxdWlyZVBhZ2VDb25zZW50Rm9yQXVkaW9TdGFydFJl
c3RyaWN0aW9uOyB9CisKKyAgICB2b2lkIHNldFN0YXRlKFN0YXRlKTsKKworICAgIHZvaWQgY2xl
YXIoKTsKKworICAgIHZvaWQgc2NoZWR1bGVOb2RlRGVsZXRpb24oKTsKKworICAgIHZvaWQgbWVk
aWFDYW5TdGFydChEb2N1bWVudCYpIG92ZXJyaWRlOworCisgICAgLy8gRXZlbnRUYXJnZXQKKyAg
ICB2b2lkIGRpc3BhdGNoRXZlbnQoRXZlbnQmKSBmaW5hbDsKKworICAgIC8vIE1lZGlhUHJvZHVj
ZXIKKyAgICBNZWRpYVByb2R1Y2VyOjpNZWRpYVN0YXRlRmxhZ3MgbWVkaWFTdGF0ZSgpIGNvbnN0
IG92ZXJyaWRlOworICAgIHZvaWQgcGFnZU11dGVkU3RhdGVEaWRDaGFuZ2UoKSBvdmVycmlkZTsK
KworICAgIC8vIFRoZSBjb250ZXh0IGl0c2VsZiBrZWVwcyBhIHJlZmVyZW5jZSB0byBhbGwgc291
cmNlIG5vZGVzLiAgVGhlIHNvdXJjZSBub2RlcywgdGhlbiByZWZlcmVuY2UgYWxsIG5vZGVzIHRo
ZXkncmUgY29ubmVjdGVkIHRvLgorICAgIC8vIEluIHR1cm4sIHRoZXNlIG5vZGVzIHJlZmVyZW5j
ZSBhbGwgbm9kZXMgdGhleSdyZSBjb25uZWN0ZWQgdG8uICBBbGwgbm9kZXMgYXJlIHVsdGltYXRl
bHkgY29ubmVjdGVkIHRvIHRoZSBBdWRpb0Rlc3RpbmF0aW9uTm9kZS4KKyAgICAvLyBXaGVuIHRo
ZSBjb250ZXh0IGRlcmVmZXJlbmNlcyBhIHNvdXJjZSBub2RlLCBpdCB3aWxsIGJlIGRlYWN0aXZh
dGVkIGZyb20gdGhlIHJlbmRlcmluZyBncmFwaCBhbG9uZyB3aXRoIGFsbCBvdGhlciBub2RlcyBp
dCBpcworICAgIC8vIHVuaXF1ZWx5IGNvbm5lY3RlZCB0by4gIFNlZSB0aGUgQXVkaW9Ob2RlOjpy
ZWYoKSBhbmQgQXVkaW9Ob2RlOjpkZXJlZigpIG1ldGhvZHMgZm9yIG1vcmUgZGV0YWlscy4KKyAg
ICB2b2lkIHJlZk5vZGUoQXVkaW9Ob2RlJik7CisgICAgdm9pZCBkZXJlZk5vZGUoQXVkaW9Ob2Rl
Jik7CisKKyAgICAvLyBBY3RpdmVET01PYmplY3QgQVBJLgorICAgIHZvaWQgc3VzcGVuZChSZWFz
b25Gb3JTdXNwZW5zaW9uKSBmaW5hbDsKKyAgICB2b2lkIHJlc3VtZSgpIGZpbmFsOworICAgIHZv
aWQgc3RvcCgpIG92ZXJyaWRlOworICAgIGNvbnN0IGNoYXIqIGFjdGl2ZURPTU9iamVjdE5hbWUo
KSBjb25zdCBvdmVycmlkZTsKKworICAgIC8vIFdoZW4gdGhlIGNvbnRleHQgZ29lcyBhd2F5LCB0
aGVyZSBtaWdodCBzdGlsbCBiZSBzb21lIHNvdXJjZXMgd2hpY2ggaGF2ZW4ndCBmaW5pc2hlZCBw
bGF5aW5nLgorICAgIC8vIE1ha2Ugc3VyZSB0byBkZXJlZmVyZW5jZSB0aGVtIGhlcmUuCisgICAg
dm9pZCBkZXJlZlVuZmluaXNoZWRTb3VyY2VOb2RlcygpOworCisgICAgLy8gUGxhdGZvcm1NZWRp
YVNlc3Npb25DbGllbnQKKyAgICBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6TWVkaWFUeXBlIG1lZGlh
VHlwZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpNZWRp
YVR5cGU6OldlYkF1ZGlvOyB9CisgICAgUGxhdGZvcm1NZWRpYVNlc3Npb246Ok1lZGlhVHlwZSBw
cmVzZW50YXRpb25UeXBlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gUGxhdGZvcm1NZWRpYVNl
c3Npb246Ok1lZGlhVHlwZTo6V2ViQXVkaW87IH0KKyAgICB2b2lkIG1heVJlc3VtZVBsYXliYWNr
KGJvb2wgc2hvdWxkUmVzdW1lKSBvdmVycmlkZTsKKyAgICB2b2lkIHN1c3BlbmRQbGF5YmFjaygp
IG92ZXJyaWRlOworICAgIGJvb2wgY2FuUmVjZWl2ZVJlbW90ZUNvbnRyb2xDb21tYW5kcygpIGNv
bnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdm9pZCBkaWRSZWNlaXZlUmVtb3Rl
Q29udHJvbENvbW1hbmQoUGxhdGZvcm1NZWRpYVNlc3Npb246OlJlbW90ZUNvbnRyb2xDb21tYW5k
VHlwZSwgY29uc3QgUGxhdGZvcm1NZWRpYVNlc3Npb246OlJlbW90ZUNvbW1hbmRBcmd1bWVudCop
IG92ZXJyaWRlIHsgfQorICAgIGJvb2wgc3VwcG9ydHNTZWVraW5nKCkgY29uc3Qgb3ZlcnJpZGUg
eyByZXR1cm4gZmFsc2U7IH0KKyAgICBib29sIHNob3VsZE92ZXJyaWRlQmFja2dyb3VuZFBsYXli
YWNrUmVzdHJpY3Rpb24oUGxhdGZvcm1NZWRpYVNlc3Npb246OkludGVycnVwdGlvblR5cGUpIGNv
bnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgYm9vbCBjYW5Qcm9kdWNlQXVkaW8o
KSBjb25zdCBmaW5hbCB7IHJldHVybiB0cnVlOyB9CisgICAgYm9vbCBpc1N1c3BlbmRlZCgpIGNv
bnN0IGZpbmFsOworCisgICAgdm9pZCB2aXNpYmlsaXR5U3RhdGVDaGFuZ2VkKCkgZmluYWw7CisK
KyAgICBib29sIGlzQXVkaW9Db250ZXh0KCkgY29uc3QgZmluYWwgeyByZXR1cm4gZmFsc2U7IH0K
KyAgICBib29sIGlzV2ViS2l0QXVkaW9Db250ZXh0KCkgY29uc3QgZmluYWwgeyByZXR1cm4gdHJ1
ZTsgfQorCisgICAgdm9pZCBoYW5kbGVEaXJ0eUF1ZGlvU3VtbWluZ0p1bmN0aW9ucygpOworICAg
IHZvaWQgaGFuZGxlRGlydHlBdWRpb05vZGVPdXRwdXRzKCk7CisKKyAgICB2b2lkIGFkZFJlYWN0
aW9uKFN0YXRlLCBET01Qcm9taXNlRGVmZXJyZWQ8dm9pZD4mJik7CisgICAgdm9pZCB1cGRhdGVB
dXRvbWF0aWNQdWxsTm9kZXMoKTsKKworI2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRAorICAgIGNv
bnN0IGNoYXIqIGxvZ0NsYXNzTmFtZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuICJXZWJLaXRBdWRp
b0NvbnRleHQiOyB9CisKKyAgICBSZWY8TG9nZ2VyPiBtX2xvZ2dlcjsKKyAgICBjb25zdCB2b2lk
KiBtX2xvZ0lkZW50aWZpZXI7CisgICAgdWludDY0X3QgbV9uZXh0QXVkaW9Ob2RlSWRlbnRpZmll
ciB7IDAgfTsKKyAgICB1aW50NjRfdCBtX25leHRBdWRpb1BhcmFtZXRlcklkZW50aWZpZXIgeyAw
IH07CisjZW5kaWYKKworICAgIC8vIE9ubHkgYWNjZXNzZWQgaW4gdGhlIGF1ZGlvIHRocmVhZC4K
KyAgICBWZWN0b3I8QXVkaW9Ob2RlKj4gbV9maW5pc2hlZE5vZGVzOworCisgICAgLy8gV2UgZG9u
J3QgdXNlIFJlZlB0cjxBdWRpb05vZGU+IGhlcmUgYmVjYXVzZSBBdWRpb05vZGUgaGFzIGEgbW9y
ZSBjb21wbGV4IHJlZigpIC8gZGVyZWYoKSBpbXBsZW1lbnRhdGlvbgorICAgIC8vIHdpdGggYW4g
b3B0aW9uYWwgYXJndW1lbnQgZm9yIHJlZlR5cGUuICBXZSBuZWVkIHRvIHVzZSB0aGUgc3BlY2lh
bCByZWZUeXBlOiBSZWZUeXBlQ29ubmVjdGlvbgorICAgIC8vIEVpdGhlciBhY2Nlc3NlZCB3aGVu
IHRoZSBncmFwaCBsb2NrIGlzIGhlbGQsIG9yIG9uIHRoZSBtYWluIHRocmVhZCB3aGVuIHRoZSBh
dWRpbyB0aHJlYWQgaGFzIGZpbmlzaGVkLgorICAgIFZlY3RvcjxBdWRpb05vZGUqPiBtX3JlZmVy
ZW5jZWROb2RlczsKKworICAgIC8vIEFjY3VtdWxhdGUgbm9kZXMgd2hpY2ggbmVlZCB0byBiZSBk
ZWxldGVkIGhlcmUuCisgICAgLy8gVGhpcyBpcyBjb3BpZWQgdG8gbV9ub2Rlc1RvRGVsZXRlIGF0
IHRoZSBlbmQgb2YgYSByZW5kZXIgY3ljbGUgaW4gaGFuZGxlUG9zdFJlbmRlclRhc2tzKCksIHdo
ZXJlIHdlJ3JlIGFzc3VyZWQgb2YgYSBzdGFibGUgZ3JhcGgKKyAgICAvLyBzdGF0ZSB3aGljaCB3
aWxsIGhhdmUgbm8gcmVmZXJlbmNlcyB0byBhbnkgb2YgdGhlIG5vZGVzIGluIG1fbm9kZXNUb0Rl
bGV0ZSBvbmNlIHRoZSBjb250ZXh0IGxvY2sgaXMgcmVsZWFzZWQKKyAgICAvLyAod2hlbiBoYW5k
bGVQb3N0UmVuZGVyVGFza3MoKSBoYXMgY29tcGxldGVkKS4KKyAgICBWZWN0b3I8QXVkaW9Ob2Rl
Kj4gbV9ub2Rlc01hcmtlZEZvckRlbGV0aW9uOworCisgICAgLy8gVGhleSB3aWxsIGJlIHNjaGVk
dWxlZCBmb3IgZGVsZXRpb24gKG9uIHRoZSBtYWluIHRocmVhZCkgYXQgdGhlIGVuZCBvZiBhIHJl
bmRlciBjeWNsZSAoaW4gcmVhbHRpbWUgdGhyZWFkKS4KKyAgICBWZWN0b3I8QXVkaW9Ob2RlKj4g
bV9ub2Rlc1RvRGVsZXRlOworCisgICAgYm9vbCBtX2lzRGVsZXRpb25TY2hlZHVsZWQgeyBmYWxz
ZSB9OworICAgIGJvb2wgbV9pc1N0b3BTY2hlZHVsZWQgeyBmYWxzZSB9OworICAgIGJvb2wgbV9p
c0luaXRpYWxpemVkIHsgZmFsc2UgfTsKKyAgICBib29sIG1faXNBdWRpb1RocmVhZEZpbmlzaGVk
IHsgZmFsc2UgfTsKKyAgICBib29sIG1fYXV0b21hdGljUHVsbE5vZGVzTmVlZFVwZGF0aW5nIHsg
ZmFsc2UgfTsKKyAgICBib29sIG1faXNPZmZsaW5lQ29udGV4dCB7IGZhbHNlIH07CisKKyAgICAv
LyBPbmx5IGFjY2Vzc2VkIHdoZW4gdGhlIGdyYXBoIGxvY2sgaXMgaGVsZC4KKyAgICBIYXNoU2V0
PEF1ZGlvU3VtbWluZ0p1bmN0aW9uKj4gbV9kaXJ0eVN1bW1pbmdKdW5jdGlvbnM7CisgICAgSGFz
aFNldDxBdWRpb05vZGVPdXRwdXQqPiBtX2RpcnR5QXVkaW9Ob2RlT3V0cHV0czsKKworICAgIC8v
IEZvciB0aGUgc2FrZSBvZiB0aHJlYWQgc2FmZXR5LCB3ZSBtYWludGFpbiBhIHNlcGVyYXRlIFZl
Y3RvciBvZiBhdXRvbWF0aWMgcHVsbCBub2RlcyBmb3IgcmVuZGVyaW5nIGluIG1fcmVuZGVyaW5n
QXV0b21hdGljUHVsbE5vZGVzLgorICAgIC8vIEl0IHdpbGwgYmUgY29waWVkIGZyb20gbV9hdXRv
bWF0aWNQdWxsTm9kZXMgYnkgdXBkYXRlQXV0b21hdGljUHVsbE5vZGVzKCkgYXQgdGhlIHZlcnkg
c3RhcnQgb3IgZW5kIG9mIHRoZSByZW5kZXJpbmcgcXVhbnR1bS4KKyAgICBIYXNoU2V0PEF1ZGlv
Tm9kZSo+IG1fYXV0b21hdGljUHVsbE5vZGVzOworICAgIFZlY3RvcjxBdWRpb05vZGUqPiBtX3Jl
bmRlcmluZ0F1dG9tYXRpY1B1bGxOb2RlczsKKyAgICAvLyBPbmx5IGFjY2Vzc2VkIGluIHRoZSBh
dWRpbyB0aHJlYWQuCisgICAgVmVjdG9yPEF1ZGlvTm9kZSo+IG1fZGVmZXJyZWRGaW5pc2hEZXJl
Zkxpc3Q7CisgICAgVmVjdG9yPFZlY3RvcjxET01Qcm9taXNlRGVmZXJyZWQ8dm9pZD4+PiBtX3N0
YXRlUmVhY3Rpb25zOworCisgICAgc3RkOjp1bmlxdWVfcHRyPFBsYXRmb3JtTWVkaWFTZXNzaW9u
PiBtX21lZGlhU2Vzc2lvbjsKKyAgICBVbmlxdWVSZWY8TWFpblRocmVhZEdlbmVyaWNFdmVudFF1
ZXVlPiBtX2V2ZW50UXVldWU7CisKKyAgICBSZWZQdHI8QXVkaW9CdWZmZXI+IG1fcmVuZGVyVGFy
Z2V0OworICAgIFJlZlB0cjxBdWRpb0Rlc3RpbmF0aW9uTm9kZT4gbV9kZXN0aW5hdGlvbk5vZGU7
CisgICAgUmVmUHRyPEF1ZGlvTGlzdGVuZXI+IG1fbGlzdGVuZXI7CisKKyAgICB1bnNpZ25lZCBt
X2Nvbm5lY3Rpb25Db3VudCB7IDAgfTsKKworICAgIC8vIEdyYXBoIGxvY2tpbmcuCisgICAgTG9j
ayBtX2NvbnRleHRHcmFwaE11dGV4OworICAgIC8vIEZJWE1FOiBVc2luZyB2b2xhdGlsZSBzZWVt
cyBpbmNvcnJlY3QuCisgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE4MDMzMgorICAgIFRocmVhZCogdm9sYXRpbGUgbV9hdWRpb1RocmVhZCB7IG51bGxwdHIg
fTsKKyAgICBUaHJlYWQqIHZvbGF0aWxlIG1fZ3JhcGhPd25lclRocmVhZCB7IG51bGxwdHIgfTsg
Ly8gaWYgdGhlIGxvY2sgaXMgaGVsZCB0aGVuIHRoaXMgaXMgdGhlIHRocmVhZCB3aGljaCBvd25z
IGl0LCBvdGhlcndpc2UgPT0gbnVsbHB0ci4KKworICAgIHN0ZDo6dW5pcXVlX3B0cjxBc3luY0F1
ZGlvRGVjb2Rlcj4gbV9hdWRpb0RlY29kZXI7CisKKyAgICAvLyBUaGlzIGlzIGNvbnNpZGVyaW5n
IDMyIGlzIGxhcmdlIGVub3VnaCBmb3IgbXVsdGlwbGUgY2hhbm5lbHMgYXVkaW8uCisgICAgLy8g
SXQgaXMgc29tZXdoYXQgYXJiaXRyYXJ5IGFuZCBjb3VsZCBiZSBpbmNyZWFzZWQgaWYgbmVjZXNz
YXJ5LgorICAgIGVudW0geyBNYXhOdW1iZXJPZkNoYW5uZWxzID0gMzIgfTsKKworICAgIC8vIE51
bWJlciBvZiBBdWRpb0J1ZmZlclNvdXJjZU5vZGVzIHRoYXQgYXJlIGFjdGl2ZSAocGxheWluZyku
CisgICAgc3RkOjphdG9taWM8aW50PiBtX2FjdGl2ZVNvdXJjZUNvdW50IHsgMCB9OworCisgICAg
QmVoYXZpb3JSZXN0cmljdGlvbnMgbV9yZXN0cmljdGlvbnMgeyBOb1Jlc3RyaWN0aW9ucyB9Owor
CisgICAgU3RhdGUgbV9zdGF0ZSB7IFN0YXRlOjpTdXNwZW5kZWQgfTsKKyAgICBSZWZQdHI8UGVu
ZGluZ0FjdGl2aXR5PFdlYktpdEF1ZGlvQ29udGV4dD4+IG1fcGVuZGluZ0FjdGl2aXR5OworfTsK
KworaW5saW5lIEF1ZGlvQ29udGV4dFN0YXRlIFdlYktpdEF1ZGlvQ29udGV4dDo6c3RhdGUoKSBj
b25zdAoreworICAgIHJldHVybiBtX3N0YXRlOworfQorCit9IC8vIFdlYkNvcmUKKworU1BFQ0lB
TElaRV9UWVBFX1RSQUlUU19CRUdJTihXZWJDb3JlOjpXZWJLaXRBdWRpb0NvbnRleHQpCisgICAg
c3RhdGljIGJvb2wgaXNUeXBlKGNvbnN0IFdlYkNvcmU6OkF1ZGlvQ29udGV4dEJhc2UmIGNvbnRl
eHQpIHsgcmV0dXJuIGNvbnRleHQuaXNXZWJLaXRBdWRpb0NvbnRleHQoKTsgfQorU1BFQ0lBTEla
RV9UWVBFX1RSQUlUU19FTkQoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJhdWRpby9XZWJLaXRBdWRpb0NvbnRleHQuaWRsIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJhdWRpby9XZWJLaXRBdWRpb0NvbnRleHQuaWRsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjU2OTVjNzM2Njk4Njc4
ZWIzNmVkNjQ4OTNiZDAyYjRjZDhiZGUwMGIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1dlYktpdEF1ZGlvQ29udGV4dC5pZGwKQEAgLTAsMCArMSw5
MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCwgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQor
ICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTgorICogQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
CisgKiBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCitbCisgICAgQWN0aXZlRE9NT2JqZWN0LAorICAgIENvbmRpdGlvbmFs
PVdFQl9BVURJTywKKyAgICBFbmFibGVkQnlTZXR0aW5nPVdlYkF1ZGlvLAorICAgIEV4cG9ydE1h
Y3JvPVdFQkNPUkVfRVhQT1JULAorICAgIEludGVyZmFjZU5hbWU9d2Via2l0QXVkaW9Db250ZXh0
LAorXSBpbnRlcmZhY2UgV2ViS2l0QXVkaW9Db250ZXh0IDogRXZlbnRUYXJnZXQgeworICAgIFtD
YWxsV2l0aD1Eb2N1bWVudCwgTWF5VGhyb3dFeGNlcHRpb25dIGNvbnN0cnVjdG9yKCk7CisKKyAg
ICAvLyBBbGwgcmVuZGVyZWQgYXVkaW8gdWx0aW1hdGVseSBjb25uZWN0cyB0byBkZXN0aW5hdGlv
biwgd2hpY2ggcmVwcmVzZW50cyB0aGUgYXVkaW8gaGFyZHdhcmUuCisgICAgcmVhZG9ubHkgYXR0
cmlidXRlIEF1ZGlvRGVzdGluYXRpb25Ob2RlIGRlc3RpbmF0aW9uOworCisgICAgLy8gQWxsIHNj
aGVkdWxlZCB0aW1lcyBhcmUgcmVsYXRpdmUgdG8gdGhpcyB0aW1lIGluIHNlY29uZHMuCisgICAg
cmVhZG9ubHkgYXR0cmlidXRlIHVucmVzdHJpY3RlZCBkb3VibGUgY3VycmVudFRpbWU7CisKKyAg
ICAvLyBBbGwgQXVkaW9Ob2RlcyBpbiB0aGUgY29udGV4dCBydW4gYXQgdGhpcyBzYW1wbGUtcmF0
ZSAoc2FtcGxlLWZyYW1lcyBwZXIgc2Vjb25kKS4KKyAgICByZWFkb25seSBhdHRyaWJ1dGUgdW5y
ZXN0cmljdGVkIGZsb2F0IHNhbXBsZVJhdGU7CisKKyAgICAvLyBBbGwgcGFubmluZyBpcyByZWxh
dGl2ZSB0byB0aGlzIGxpc3RlbmVyLgorICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBBdWRpb0xpc3Rl
bmVyIGxpc3RlbmVyOworCisgICAgW0ltcGxlbWVudGVkQXM9c3VzcGVuZFJlbmRlcmluZ10gUHJv
bWlzZTx2b2lkPiBzdXNwZW5kKCk7CisgICAgW0ltcGxlbWVudGVkQXM9cmVzdW1lUmVuZGVyaW5n
XSBQcm9taXNlPHZvaWQ+IHJlc3VtZSgpOworICAgIFByb21pc2U8dm9pZD4gY2xvc2UoKTsKKwor
ICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBBdWRpb0NvbnRleHRTdGF0ZSBzdGF0ZTsKKyAgICBhdHRy
aWJ1dGUgRXZlbnRIYW5kbGVyIG9uc3RhdGVjaGFuZ2U7CisKKyAgICAvLyBOdW1iZXIgb2YgQXVk
aW9CdWZmZXJTb3VyY2VOb2RlcyB0aGF0IGFyZSBjdXJyZW50bHkgcGxheWluZy4KKyAgICByZWFk
b25seSBhdHRyaWJ1dGUgdW5zaWduZWQgbG9uZyBhY3RpdmVTb3VyY2VDb3VudDsKKworICAgIFtN
YXlUaHJvd0V4Y2VwdGlvbl0gQXVkaW9CdWZmZXIgY3JlYXRlQnVmZmVyKHVuc2lnbmVkIGxvbmcg
bnVtYmVyT2ZDaGFubmVscywgdW5zaWduZWQgbG9uZyBudW1iZXJPZkZyYW1lcywgdW5yZXN0cmlj
dGVkIGZsb2F0IHNhbXBsZVJhdGUpOworICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gQXVkaW9CdWZm
ZXIgY3JlYXRlQnVmZmVyKEFycmF5QnVmZmVyIGJ1ZmZlciwgYm9vbGVhbiBtaXhUb01vbm8pOwor
CisgICAgLy8gQXN5bmNocm9ub3VzIGF1ZGlvIGZpbGUgZGF0YSBkZWNvZGluZy4KKyAgICAvLyBG
SVhNRTogc3VjY2Vzc0NhbGxiYWNrIHNob3VsZCBiZSBvcHRpb25hbCBhbmQgdGhlIGNhbGxiYWNr
cyBzaG91bGQgbm90IGJlIG51bGxhYmxlLiBUaGlzIHNob3VsZCBhbHNvIHJldHVybiBhIFByb21p
c2UuCisgICAgdm9pZCBkZWNvZGVBdWRpb0RhdGEoQXJyYXlCdWZmZXIgYXVkaW9EYXRhLCBBdWRp
b0J1ZmZlckNhbGxiYWNrPyBzdWNjZXNzQ2FsbGJhY2ssIG9wdGlvbmFsIEF1ZGlvQnVmZmVyQ2Fs
bGJhY2s/IGVycm9yQ2FsbGJhY2spOworCisgICAgLy8gU291cmNlcworICAgIFtNYXlUaHJvd0V4
Y2VwdGlvbl0gQXVkaW9CdWZmZXJTb3VyY2VOb2RlIGNyZWF0ZUJ1ZmZlclNvdXJjZSgpOworCisg
ICAgW0NvbmRpdGlvbmFsPVZJREVPLCBNYXlUaHJvd0V4Y2VwdGlvbl0gTWVkaWFFbGVtZW50QXVk
aW9Tb3VyY2VOb2RlIGNyZWF0ZU1lZGlhRWxlbWVudFNvdXJjZShIVE1MTWVkaWFFbGVtZW50IG1l
ZGlhRWxlbWVudCk7CisKKyAgICBbQ29uZGl0aW9uYWw9TUVESUFfU1RSRUFNLCBNYXlUaHJvd0V4
Y2VwdGlvbl0gTWVkaWFTdHJlYW1BdWRpb1NvdXJjZU5vZGUgY3JlYXRlTWVkaWFTdHJlYW1Tb3Vy
Y2UoTWVkaWFTdHJlYW0gbWVkaWFTdHJlYW0pOworICAgIFtDb25kaXRpb25hbD1NRURJQV9TVFJF
QU0sIE1heVRocm93RXhjZXB0aW9uXSBNZWRpYVN0cmVhbUF1ZGlvRGVzdGluYXRpb25Ob2RlIGNy
ZWF0ZU1lZGlhU3RyZWFtRGVzdGluYXRpb24oKTsKKworICAgIC8vIFByb2Nlc3Npbmcgbm9kZXMK
KyAgICBbTWF5VGhyb3dFeGNlcHRpb25dIEdhaW5Ob2RlIGNyZWF0ZUdhaW4oKTsKKyAgICBbTWF5
VGhyb3dFeGNlcHRpb25dIERlbGF5Tm9kZSBjcmVhdGVEZWxheShvcHRpb25hbCB1bnJlc3RyaWN0
ZWQgZG91YmxlIG1heERlbGF5VGltZSA9IDEpOworICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gQmlx
dWFkRmlsdGVyTm9kZSBjcmVhdGVCaXF1YWRGaWx0ZXIoKTsKKyAgICBbTWF5VGhyb3dFeGNlcHRp
b25dIFdhdmVTaGFwZXJOb2RlIGNyZWF0ZVdhdmVTaGFwZXIoKTsKKyAgICBbTWF5VGhyb3dFeGNl
cHRpb25dIFdlYktpdEF1ZGlvUGFubmVyTm9kZSBjcmVhdGVQYW5uZXIoKTsKKyAgICBbTWF5VGhy
b3dFeGNlcHRpb25dIENvbnZvbHZlck5vZGUgY3JlYXRlQ29udm9sdmVyKCk7CisgICAgW01heVRo
cm93RXhjZXB0aW9uXSBEeW5hbWljc0NvbXByZXNzb3JOb2RlIGNyZWF0ZUR5bmFtaWNzQ29tcHJl
c3NvcigpOworICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gQW5hbHlzZXJOb2RlIGNyZWF0ZUFuYWx5
c2VyKCk7CisgICAgW01heVRocm93RXhjZXB0aW9uXSBTY3JpcHRQcm9jZXNzb3JOb2RlIGNyZWF0
ZVNjcmlwdFByb2Nlc3NvcihvcHRpb25hbCB1bnNpZ25lZCBsb25nIGJ1ZmZlclNpemUgPSAwLCBv
cHRpb25hbCB1bnNpZ25lZCBsb25nIG51bWJlck9mSW5wdXRDaGFubmVscyA9IDIsIG9wdGlvbmFs
IHVuc2lnbmVkIGxvbmcgbnVtYmVyT2ZPdXRwdXRDaGFubmVscyA9IDIpOworICAgIFtNYXlUaHJv
d0V4Y2VwdGlvbl0gT3NjaWxsYXRvck5vZGUgY3JlYXRlT3NjaWxsYXRvcigpOworICAgIFtNYXlU
aHJvd0V4Y2VwdGlvbl0gUGVyaW9kaWNXYXZlIGNyZWF0ZVBlcmlvZGljV2F2ZShGbG9hdDMyQXJy
YXkgcmVhbCwgRmxvYXQzMkFycmF5IGltYWcpOworCisgICAgLy8gQ2hhbm5lbCBzcGxpdHRpbmcg
YW5kIG1lcmdpbmcKKyAgICBbTWF5VGhyb3dFeGNlcHRpb25dIENoYW5uZWxTcGxpdHRlck5vZGUg
Y3JlYXRlQ2hhbm5lbFNwbGl0dGVyKG9wdGlvbmFsIHVuc2lnbmVkIGxvbmcgbnVtYmVyT2ZPdXRw
dXRzID0gNik7CisgICAgW01heVRocm93RXhjZXB0aW9uXSBDaGFubmVsTWVyZ2VyTm9kZSBjcmVh
dGVDaGFubmVsTWVyZ2VyKG9wdGlvbmFsIHVuc2lnbmVkIGxvbmcgbnVtYmVyT2ZJbnB1dHMgPSA2
KTsKKworICAgIC8vIE9mZmxpbmUgcmVuZGVyaW5nCisgICAgLy8gdm9pZCBwcmVwYXJlT2ZmbGlu
ZUJ1ZmZlclJlbmRlcmluZyh1bnNpZ25lZCBsb25nIG51bWJlck9mQ2hhbm5lbHMsIHVuc2lnbmVk
IGxvbmcgbnVtYmVyT2ZGcmFtZXMsIHVucmVzdHJpY3RlZCBmbG9hdCBzYW1wbGVSYXRlKTsKKyAg
ICBhdHRyaWJ1dGUgRXZlbnRIYW5kbGVyIG9uY29tcGxldGU7CisgICAgdm9pZCBzdGFydFJlbmRl
cmluZygpOworfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8v
V2ViS2l0QXVkaW9QYW5uZXJOb2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVk
aW8vV2ViS2l0QXVkaW9QYW5uZXJOb2RlLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yNThmNDVlN2NmZDkxYzgy
MmM2OTkyZTc1OGRhYTc1OGFkNzkwMmUyCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJhdWRpby9XZWJLaXRBdWRpb1Bhbm5lck5vZGUuY3BwCkBAIC0wLDAgKzEs
MzYzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwLCBHb29nbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04KKyAqIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUworICogU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIldlYktp
dEF1ZGlvUGFubmVyTm9kZS5oIgorCisjaWYgRU5BQkxFKFdFQl9BVURJTykKKworI2luY2x1ZGUg
IkF1ZGlvQnVmZmVyU291cmNlTm9kZS5oIgorI2luY2x1ZGUgIkF1ZGlvQnVzLmgiCisjaW5jbHVk
ZSAiQXVkaW9Db250ZXh0LmgiCisjaW5jbHVkZSAiQXVkaW9Ob2RlSW5wdXQuaCIKKyNpbmNsdWRl
ICJBdWRpb05vZGVPdXRwdXQuaCIKKyNpbmNsdWRlICJIUlRGRGF0YWJhc2VMb2FkZXIuaCIKKyNp
bmNsdWRlICJIUlRGUGFubmVyLmgiCisjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5o
IgorI2luY2x1ZGUgPHd0Zi9Jc29NYWxsb2NJbmxpbmVzLmg+CisjaW5jbHVkZSA8d3RmL01hdGhF
eHRyYXMuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitXVEZfTUFLRV9JU09fQUxMT0NBVEVE
X0lNUEwoV2ViS2l0QXVkaW9QYW5uZXJOb2RlKTsKKworc3RhdGljIHZvaWQgZml4TkFOcyhkb3Vi
bGUgJngpCit7CisgICAgaWYgKHN0ZDo6aXNuYW4oeCkgfHwgc3RkOjppc2luZih4KSkKKyAgICAg
ICAgeCA9IDAuMDsKK30KKworV2ViS2l0QXVkaW9QYW5uZXJOb2RlOjpXZWJLaXRBdWRpb1Bhbm5l
ck5vZGUoV2ViS2l0QXVkaW9Db250ZXh0JiBjb250ZXh0LCBmbG9hdCBzYW1wbGVSYXRlKQorICAg
IDogUGFubmVyTm9kZUJhc2UoY29udGV4dCwgc2FtcGxlUmF0ZSkKKyAgICAsIG1fcGFubmluZ01v
ZGVsKFBhbm5pbmdNb2RlbFR5cGU6OkhSVEYpCisgICAgLCBtX2xhc3RHYWluKC0xLjApCisgICAg
LCBtX2Nvbm5lY3Rpb25Db3VudCgwKQoreworICAgIHNldE5vZGVUeXBlKE5vZGVUeXBlUGFubmVy
KTsKKworICAgIC8vIExvYWQgdGhlIEhSVEYgZGF0YWJhc2UgYXN5bmNocm9ub3VzbHkgc28gd2Ug
ZG9uJ3QgYmxvY2sgdGhlIEphdmFzY3JpcHQgdGhyZWFkIHdoaWxlIGNyZWF0aW5nIHRoZSBIUlRG
IGRhdGFiYXNlLgorICAgIG1faHJ0ZkRhdGFiYXNlTG9hZGVyID0gSFJURkRhdGFiYXNlTG9hZGVy
OjpjcmVhdGVBbmRMb2FkQXN5bmNocm9ub3VzbHlJZk5lY2Vzc2FyeShjb250ZXh0LnNhbXBsZVJh
dGUoKSk7CisKKyAgICBhZGRJbnB1dChtYWtlVW5pcXVlPEF1ZGlvTm9kZUlucHV0Pih0aGlzKSk7
CisgICAgYWRkT3V0cHV0KG1ha2VVbmlxdWU8QXVkaW9Ob2RlT3V0cHV0Pih0aGlzLCAyKSk7CisK
KyAgICAvLyBOb2RlLXNwZWNpZmljIGRlZmF1bHQgbWl4aW5nIHJ1bGVzLgorICAgIG1fY2hhbm5l
bENvdW50ID0gMjsKKyAgICBtX2NoYW5uZWxDb3VudE1vZGUgPSBDbGFtcGVkTWF4OworICAgIG1f
Y2hhbm5lbEludGVycHJldGF0aW9uID0gQXVkaW9CdXM6OlNwZWFrZXJzOworCisgICAgbV9kaXN0
YW5jZUdhaW4gPSBBdWRpb1BhcmFtOjpjcmVhdGUoY29udGV4dCwgImRpc3RhbmNlR2FpbiIsIDEu
MCwgMC4wLCAxLjApOworICAgIG1fY29uZUdhaW4gPSBBdWRpb1BhcmFtOjpjcmVhdGUoY29udGV4
dCwgImNvbmVHYWluIiwgMS4wLCAwLjAsIDEuMCk7CisKKyAgICBtX3Bvc2l0aW9uID0gRmxvYXRQ
b2ludDNEKDAsIDAsIDApOworICAgIG1fb3JpZW50YXRpb24gPSBGbG9hdFBvaW50M0QoMSwgMCwg
MCk7CisgICAgbV92ZWxvY2l0eSA9IEZsb2F0UG9pbnQzRCgwLCAwLCAwKTsKKworICAgIGluaXRp
YWxpemUoKTsKK30KKworV2ViS2l0QXVkaW9QYW5uZXJOb2RlOjp+V2ViS2l0QXVkaW9QYW5uZXJO
b2RlKCkKK3sKKyAgICB1bmluaXRpYWxpemUoKTsKK30KKwordm9pZCBXZWJLaXRBdWRpb1Bhbm5l
ck5vZGU6OnB1bGxJbnB1dHMoc2l6ZV90IGZyYW1lc1RvUHJvY2VzcykKK3sKKyAgICAvLyBXZSBv
dmVycmlkZSBwdWxsSW5wdXRzKCksIHNvIHdlIGNhbiBkZXRlY3QgbmV3IEF1ZGlvU291cmNlTm9k
ZXMgd2hpY2ggaGF2ZSBjb25uZWN0ZWQgdG8gdXMgd2hlbiBuZXcgY29ubmVjdGlvbnMgYXJlIG1h
ZGUuCisgICAgLy8gVGhlc2UgQXVkaW9Tb3VyY2VOb2RlcyBuZWVkIHRvIGJlIG1hZGUgYXdhcmUg
b2Ygb3VyIGV4aXN0ZW5jZSBpbiBvcmRlciB0byBoYW5kbGUgZG9wcGxlciBzaGlmdCBwaXRjaCBj
aGFuZ2VzLgorICAgIGlmIChtX2Nvbm5lY3Rpb25Db3VudCAhPSBjb250ZXh0KCkuY29ubmVjdGlv
bkNvdW50KCkpIHsKKyAgICAgICAgbV9jb25uZWN0aW9uQ291bnQgPSBjb250ZXh0KCkuY29ubmVj
dGlvbkNvdW50KCk7CisKKyAgICAgICAgLy8gUmVjdXJzaXZlbHkgZ28gdGhyb3VnaCBhbGwgbm9k
ZXMgY29ubmVjdGVkIHRvIHVzLgorICAgICAgICBIYXNoU2V0PEF1ZGlvTm9kZSo+IHZpc2l0ZWRO
b2RlczsKKyAgICAgICAgbm90aWZ5QXVkaW9Tb3VyY2VzQ29ubmVjdGVkVG9Ob2RlKHRoaXMsIHZp
c2l0ZWROb2Rlcyk7CisgICAgfQorCisgICAgQXVkaW9Ob2RlOjpwdWxsSW5wdXRzKGZyYW1lc1Rv
UHJvY2Vzcyk7Cit9CisKK3ZvaWQgV2ViS2l0QXVkaW9QYW5uZXJOb2RlOjpwcm9jZXNzKHNpemVf
dCBmcmFtZXNUb1Byb2Nlc3MpCit7CisgICAgQXVkaW9CdXMqIGRlc3RpbmF0aW9uID0gb3V0cHV0
KDApLT5idXMoKTsKKworICAgIGlmICghaXNJbml0aWFsaXplZCgpIHx8ICFpbnB1dCgwKS0+aXND
b25uZWN0ZWQoKSB8fCAhbV9wYW5uZXIuZ2V0KCkpIHsKKyAgICAgICAgZGVzdGluYXRpb24tPnpl
cm8oKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIEF1ZGlvQnVzKiBzb3VyY2UgPSBp
bnB1dCgwKS0+YnVzKCk7CisgICAgaWYgKCFzb3VyY2UpIHsKKyAgICAgICAgZGVzdGluYXRpb24t
Pnplcm8oKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIC8vIEhSVEZEYXRhYmFzZSBz
aG91bGQgYmUgbG9hZGVkIGJlZm9yZSBwcm9jZWVkaW5nIGZvciBvZmZsaW5lIGF1ZGlvIGNvbnRl
eHQgd2hlbiBwYW5uaW5nTW9kZWwoKSBpcyAiSFJURiIuCisgICAgaWYgKHBhbm5pbmdNb2RlbCgp
ID09IFBhbm5pbmdNb2RlbFR5cGU6OkhSVEYgJiYgIW1faHJ0ZkRhdGFiYXNlTG9hZGVyLT5pc0xv
YWRlZCgpKSB7CisgICAgICAgIGlmIChjb250ZXh0KCkuaXNPZmZsaW5lQ29udGV4dCgpKQorICAg
ICAgICAgICAgbV9ocnRmRGF0YWJhc2VMb2FkZXItPndhaXRGb3JMb2FkZXJUaHJlYWRDb21wbGV0
aW9uKCk7CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgZGVzdGluYXRpb24tPnplcm8oKTsK
KyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgIH0KKworICAgIC8vIFRoZSBhdWRp
byB0aHJlYWQgY2FuJ3QgYmxvY2sgb24gdGhpcyBsb2NrLCBzbyB3ZSB1c2Ugc3RkOjp0cnlfdG9f
bG9jayBpbnN0ZWFkLgorICAgIHN0ZDo6dW5pcXVlX2xvY2s8TG9jaz4gbG9jayhtX3Bhbm5lck11
dGV4LCBzdGQ6OnRyeV90b19sb2NrKTsKKyAgICBpZiAoIWxvY2sub3duc19sb2NrKCkpIHsKKyAg
ICAgICAgLy8gVG9vIGJhZCAtIFRoZSB0cnlfbG9jaygpIGZhaWxlZC4gV2UgbXVzdCBiZSBpbiB0
aGUgbWlkZGxlIG9mIGNoYW5naW5nIHRoZSBwYW5uZXIuCisgICAgICAgIGRlc3RpbmF0aW9uLT56
ZXJvKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICAvLyBBcHBseSB0aGUgcGFubmlu
ZyBlZmZlY3QuCisgICAgZG91YmxlIGF6aW11dGg7CisgICAgZG91YmxlIGVsZXZhdGlvbjsKKyAg
ICBnZXRBemltdXRoRWxldmF0aW9uKCZhemltdXRoLCAmZWxldmF0aW9uKTsKKyAgICBtX3Bhbm5l
ci0+cGFuKGF6aW11dGgsIGVsZXZhdGlvbiwgc291cmNlLCBkZXN0aW5hdGlvbiwgZnJhbWVzVG9Q
cm9jZXNzKTsKKworICAgIC8vIEdldCB0aGUgZGlzdGFuY2UgYW5kIGNvbmUgZ2Fpbi4KKyAgICBk
b3VibGUgdG90YWxHYWluID0gZGlzdGFuY2VDb25lR2FpbigpOworCisgICAgLy8gU25hcCB0byBk
ZXNpcmVkIGdhaW4gYXQgdGhlIGJlZ2lubmluZy4KKyAgICBpZiAobV9sYXN0R2FpbiA9PSAtMS4w
KQorICAgICAgICBtX2xhc3RHYWluID0gdG90YWxHYWluOworCisgICAgLy8gQXBwbHkgZ2FpbiBp
bi1wbGFjZSB3aXRoIGRlLXppcHBlcmluZy4KKyAgICBkZXN0aW5hdGlvbi0+Y29weVdpdGhHYWlu
RnJvbSgqZGVzdGluYXRpb24sICZtX2xhc3RHYWluLCB0b3RhbEdhaW4pOworfQorCit2b2lkIFdl
YktpdEF1ZGlvUGFubmVyTm9kZTo6cmVzZXQoKQoreworICAgIG1fbGFzdEdhaW4gPSAtMS4wOyAv
LyBmb3JjZSB0byBzbmFwIHRvIGluaXRpYWwgZ2FpbgorICAgIGlmIChtX3Bhbm5lci5nZXQoKSkK
KyAgICAgICAgbV9wYW5uZXItPnJlc2V0KCk7Cit9CisKK3ZvaWQgV2ViS2l0QXVkaW9QYW5uZXJO
b2RlOjppbml0aWFsaXplKCkKK3sKKyAgICBpZiAoaXNJbml0aWFsaXplZCgpKQorICAgICAgICBy
ZXR1cm47CisKKyAgICBtX3Bhbm5lciA9IFBhbm5lcjo6Y3JlYXRlKG1fcGFubmluZ01vZGVsLCBz
YW1wbGVSYXRlKCksIG1faHJ0ZkRhdGFiYXNlTG9hZGVyLmdldCgpKTsKKworICAgIEF1ZGlvTm9k
ZTo6aW5pdGlhbGl6ZSgpOworfQorCit2b2lkIFdlYktpdEF1ZGlvUGFubmVyTm9kZTo6dW5pbml0
aWFsaXplKCkKK3sKKyAgICBpZiAoIWlzSW5pdGlhbGl6ZWQoKSkKKyAgICAgICAgcmV0dXJuOwor
CisgICAgbV9wYW5uZXIgPSBudWxscHRyOworICAgIEF1ZGlvTm9kZTo6dW5pbml0aWFsaXplKCk7
Cit9CisKK0F1ZGlvTGlzdGVuZXIqIFdlYktpdEF1ZGlvUGFubmVyTm9kZTo6bGlzdGVuZXIoKQor
eworICAgIHJldHVybiBjb250ZXh0KCkubGlzdGVuZXIoKTsKK30KKwordm9pZCBXZWJLaXRBdWRp
b1Bhbm5lck5vZGU6OnNldFBhbm5pbmdNb2RlbChQYW5uaW5nTW9kZWxUeXBlIG1vZGVsKQorewor
ICAgIGlmICghbV9wYW5uZXIuZ2V0KCkgfHwgbW9kZWwgIT0gbV9wYW5uaW5nTW9kZWwpIHsKKyAg
ICAgICAgLy8gVGhpcyBzeW5jaHJvbml6ZXMgd2l0aCBwcm9jZXNzKCkuCisgICAgICAgIGF1dG8g
bG9ja2VyID0gaG9sZExvY2sobV9wYW5uZXJNdXRleCk7CisKKyAgICAgICAgbV9wYW5uZXIgPSBQ
YW5uZXI6OmNyZWF0ZShtb2RlbCwgc2FtcGxlUmF0ZSgpLCBtX2hydGZEYXRhYmFzZUxvYWRlci5n
ZXQoKSk7CisgICAgICAgIG1fcGFubmluZ01vZGVsID0gbW9kZWw7CisgICAgfQorfQorCitEaXN0
YW5jZU1vZGVsVHlwZSBXZWJLaXRBdWRpb1Bhbm5lck5vZGU6OmRpc3RhbmNlTW9kZWwoKSBjb25z
dAoreworICAgIHJldHVybiBjb25zdF9jYXN0PFdlYktpdEF1ZGlvUGFubmVyTm9kZSo+KHRoaXMp
LT5tX2Rpc3RhbmNlRWZmZWN0Lm1vZGVsKCk7Cit9CisKK3ZvaWQgV2ViS2l0QXVkaW9QYW5uZXJO
b2RlOjpzZXREaXN0YW5jZU1vZGVsKERpc3RhbmNlTW9kZWxUeXBlIG1vZGVsKQoreworICAgIG1f
ZGlzdGFuY2VFZmZlY3Quc2V0TW9kZWwobW9kZWwsIHRydWUpOworfQorCit2b2lkIFdlYktpdEF1
ZGlvUGFubmVyTm9kZTo6Z2V0QXppbXV0aEVsZXZhdGlvbihkb3VibGUqIG91dEF6aW11dGgsIGRv
dWJsZSogb3V0RWxldmF0aW9uKQoreworICAgIC8vIEZJWE1FOiB3ZSBzaG91bGQgY2FjaGUgYXpp
bXV0aCBhbmQgZWxldmF0aW9uIChpZiBwb3NzaWJsZSksIHNvIHdlIG9ubHkgcmUtY2FsY3VsYXRl
IGlmIGEgY2hhbmdlIGhhcyBiZWVuIG1hZGUuCisKKyAgICBkb3VibGUgYXppbXV0aCA9IDAuMDsK
KworICAgIC8vIENhbGN1bGF0ZSB0aGUgc291cmNlLWxpc3RlbmVyIHZlY3RvcgorICAgIEZsb2F0
UG9pbnQzRCBsaXN0ZW5lclBvc2l0aW9uID0gbGlzdGVuZXIoKS0+cG9zaXRpb24oKTsKKyAgICBG
bG9hdFBvaW50M0Qgc291cmNlTGlzdGVuZXIgPSBwb3NpdGlvbigpIC0gbGlzdGVuZXJQb3NpdGlv
bjsKKworICAgIGlmIChzb3VyY2VMaXN0ZW5lci5pc1plcm8oKSkgeworICAgICAgICAvLyBkZWdl
bmVyYXRlIGNhc2UgaWYgc291cmNlIGFuZCBsaXN0ZW5lciBhcmUgYXQgdGhlIHNhbWUgcG9pbnQK
KyAgICAgICAgKm91dEF6aW11dGggPSAwLjA7CisgICAgICAgICpvdXRFbGV2YXRpb24gPSAwLjA7
CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBzb3VyY2VMaXN0ZW5lci5ub3JtYWxpemUo
KTsKKworICAgIC8vIEFsaWduIGF4ZXMKKyAgICBGbG9hdFBvaW50M0QgbGlzdGVuZXJGcm9udCA9
IGxpc3RlbmVyKCktPm9yaWVudGF0aW9uKCk7CisgICAgRmxvYXRQb2ludDNEIGxpc3RlbmVyVXAg
PSBsaXN0ZW5lcigpLT51cFZlY3RvcigpOworICAgIEZsb2F0UG9pbnQzRCBsaXN0ZW5lclJpZ2h0
ID0gbGlzdGVuZXJGcm9udC5jcm9zcyhsaXN0ZW5lclVwKTsKKyAgICBsaXN0ZW5lclJpZ2h0Lm5v
cm1hbGl6ZSgpOworCisgICAgRmxvYXRQb2ludDNEIGxpc3RlbmVyRnJvbnROb3JtID0gbGlzdGVu
ZXJGcm9udDsKKyAgICBsaXN0ZW5lckZyb250Tm9ybS5ub3JtYWxpemUoKTsKKworICAgIEZsb2F0
UG9pbnQzRCB1cCA9IGxpc3RlbmVyUmlnaHQuY3Jvc3MobGlzdGVuZXJGcm9udE5vcm0pOworCisg
ICAgZmxvYXQgdXBQcm9qZWN0aW9uID0gc291cmNlTGlzdGVuZXIuZG90KHVwKTsKKworICAgIEZs
b2F0UG9pbnQzRCBwcm9qZWN0ZWRTb3VyY2UgPSBzb3VyY2VMaXN0ZW5lciAtIHVwUHJvamVjdGlv
biAqIHVwOworICAgIHByb2plY3RlZFNvdXJjZS5ub3JtYWxpemUoKTsKKworICAgIGF6aW11dGgg
PSAxODAuMCAqIGFjb3MocHJvamVjdGVkU291cmNlLmRvdChsaXN0ZW5lclJpZ2h0KSkgLyBwaURv
dWJsZTsKKyAgICBmaXhOQU5zKGF6aW11dGgpOyAvLyBhdm9pZCBpbGxlZ2FsIHZhbHVlcworCisg
ICAgLy8gU291cmNlICBpbiBmcm9udCBvciBiZWhpbmQgdGhlIGxpc3RlbmVyCisgICAgZG91Ymxl
IGZyb250QmFjayA9IHByb2plY3RlZFNvdXJjZS5kb3QobGlzdGVuZXJGcm9udE5vcm0pOworICAg
IGlmIChmcm9udEJhY2sgPCAwLjApCisgICAgICAgIGF6aW11dGggPSAzNjAuMCAtIGF6aW11dGg7
CisKKyAgICAvLyBNYWtlIGF6aW11dGggcmVsYXRpdmUgdG8gImZyb250IiBhbmQgbm90ICJyaWdo
dCIgbGlzdGVuZXIgdmVjdG9yCisgICAgaWYgKChhemltdXRoID49IDAuMCkgJiYgKGF6aW11dGgg
PD0gMjcwLjApKQorICAgICAgICBhemltdXRoID0gOTAuMCAtIGF6aW11dGg7CisgICAgZWxzZQor
ICAgICAgICBhemltdXRoID0gNDUwLjAgLSBhemltdXRoOworCisgICAgLy8gRWxldmF0aW9uCisg
ICAgZG91YmxlIGVsZXZhdGlvbiA9IDkwLjAgLSAxODAuMCAqIGFjb3Moc291cmNlTGlzdGVuZXIu
ZG90KHVwKSkgLyBwaURvdWJsZTsKKyAgICBmaXhOQU5zKGVsZXZhdGlvbik7IC8vIGF2b2lkIGls
bGVnYWwgdmFsdWVzCisKKyAgICBpZiAoZWxldmF0aW9uID4gOTAuMCkKKyAgICAgICAgZWxldmF0
aW9uID0gMTgwLjAgLSBlbGV2YXRpb247CisgICAgZWxzZSBpZiAoZWxldmF0aW9uIDwgLTkwLjAp
CisgICAgICAgIGVsZXZhdGlvbiA9IC0xODAuMCAtIGVsZXZhdGlvbjsKKworICAgIGlmIChvdXRB
emltdXRoKQorICAgICAgICAqb3V0QXppbXV0aCA9IGF6aW11dGg7CisgICAgaWYgKG91dEVsZXZh
dGlvbikKKyAgICAgICAgKm91dEVsZXZhdGlvbiA9IGVsZXZhdGlvbjsKK30KKworZmxvYXQgV2Vi
S2l0QXVkaW9QYW5uZXJOb2RlOjpkb3BwbGVyUmF0ZSgpCit7CisgICAgZG91YmxlIGRvcHBsZXJT
aGlmdCA9IDEuMDsKKworICAgIC8vIEZJWE1FOiBvcHRpbWl6ZSBmb3IgY2FzZSB3aGVuIG5laXRo
ZXIgc291cmNlIG5vciBsaXN0ZW5lciBoYXMgY2hhbmdlZC4uLgorICAgIGRvdWJsZSBkb3BwbGVy
RmFjdG9yID0gbGlzdGVuZXIoKS0+ZG9wcGxlckZhY3RvcigpOworCisgICAgaWYgKGRvcHBsZXJG
YWN0b3IgPiAwLjApIHsKKyAgICAgICAgZG91YmxlIHNwZWVkT2ZTb3VuZCA9IGxpc3RlbmVyKCkt
PnNwZWVkT2ZTb3VuZCgpOworCisgICAgICAgIGNvbnN0IEZsb2F0UG9pbnQzRCAmc291cmNlVmVs
b2NpdHkgPSBtX3ZlbG9jaXR5OworICAgICAgICBjb25zdCBGbG9hdFBvaW50M0QgJmxpc3RlbmVy
VmVsb2NpdHkgPSBsaXN0ZW5lcigpLT52ZWxvY2l0eSgpOworCisgICAgICAgIC8vIERvbid0IGJv
dGhlciBpZiBib3RoIHNvdXJjZSBhbmQgbGlzdGVuZXIgaGF2ZSBubyB2ZWxvY2l0eQorICAgICAg
ICBib29sIHNvdXJjZUhhc1ZlbG9jaXR5ID0gIXNvdXJjZVZlbG9jaXR5LmlzWmVybygpOworICAg
ICAgICBib29sIGxpc3RlbmVySGFzVmVsb2NpdHkgPSAhbGlzdGVuZXJWZWxvY2l0eS5pc1plcm8o
KTsKKworICAgICAgICBpZiAoc291cmNlSGFzVmVsb2NpdHkgfHwgbGlzdGVuZXJIYXNWZWxvY2l0
eSkgeworICAgICAgICAgICAgLy8gQ2FsY3VsYXRlIHRoZSBzb3VyY2UgdG8gbGlzdGVuZXIgdmVj
dG9yCisgICAgICAgICAgICBGbG9hdFBvaW50M0QgbGlzdGVuZXJQb3NpdGlvbiA9IGxpc3RlbmVy
KCktPnBvc2l0aW9uKCk7CisgICAgICAgICAgICBGbG9hdFBvaW50M0Qgc291cmNlVG9MaXN0ZW5l
ciA9IHBvc2l0aW9uKCkgLSBsaXN0ZW5lclBvc2l0aW9uOworCisgICAgICAgICAgICBkb3VibGUg
c291cmNlTGlzdGVuZXJNYWduaXR1ZGUgPSBzb3VyY2VUb0xpc3RlbmVyLmxlbmd0aCgpOworCisg
ICAgICAgICAgICBkb3VibGUgbGlzdGVuZXJQcm9qZWN0aW9uID0gc291cmNlVG9MaXN0ZW5lci5k
b3QobGlzdGVuZXJWZWxvY2l0eSkgLyBzb3VyY2VMaXN0ZW5lck1hZ25pdHVkZTsKKyAgICAgICAg
ICAgIGRvdWJsZSBzb3VyY2VQcm9qZWN0aW9uID0gc291cmNlVG9MaXN0ZW5lci5kb3Qoc291cmNl
VmVsb2NpdHkpIC8gc291cmNlTGlzdGVuZXJNYWduaXR1ZGU7CisKKyAgICAgICAgICAgIGxpc3Rl
bmVyUHJvamVjdGlvbiA9IC1saXN0ZW5lclByb2plY3Rpb247CisgICAgICAgICAgICBzb3VyY2VQ
cm9qZWN0aW9uID0gLXNvdXJjZVByb2plY3Rpb247CisKKyAgICAgICAgICAgIGRvdWJsZSBzY2Fs
ZWRTcGVlZE9mU291bmQgPSBzcGVlZE9mU291bmQgLyBkb3BwbGVyRmFjdG9yOworICAgICAgICAg
ICAgbGlzdGVuZXJQcm9qZWN0aW9uID0gc3RkOjptaW4obGlzdGVuZXJQcm9qZWN0aW9uLCBzY2Fs
ZWRTcGVlZE9mU291bmQpOworICAgICAgICAgICAgc291cmNlUHJvamVjdGlvbiA9IHN0ZDo6bWlu
KHNvdXJjZVByb2plY3Rpb24sIHNjYWxlZFNwZWVkT2ZTb3VuZCk7CisKKyAgICAgICAgICAgIGRv
cHBsZXJTaGlmdCA9ICgoc3BlZWRPZlNvdW5kIC0gZG9wcGxlckZhY3RvciAqIGxpc3RlbmVyUHJv
amVjdGlvbikgLyAoc3BlZWRPZlNvdW5kIC0gZG9wcGxlckZhY3RvciAqIHNvdXJjZVByb2plY3Rp
b24pKTsKKyAgICAgICAgICAgIGZpeE5BTnMoZG9wcGxlclNoaWZ0KTsgLy8gYXZvaWQgaWxsZWdh
bCB2YWx1ZXMKKworICAgICAgICAgICAgLy8gTGltaXQgdGhlIHBpdGNoIHNoaWZ0aW5nIHRvIDQg
b2N0YXZlcyB1cCBhbmQgMyBvY3RhdmVzIGRvd24uCisgICAgICAgICAgICBpZiAoZG9wcGxlclNo
aWZ0ID4gMTYuMCkKKyAgICAgICAgICAgICAgICBkb3BwbGVyU2hpZnQgPSAxNi4wOworICAgICAg
ICAgICAgZWxzZSBpZiAoZG9wcGxlclNoaWZ0IDwgMC4xMjUpCisgICAgICAgICAgICAgICAgZG9w
cGxlclNoaWZ0ID0gMC4xMjU7CisgICAgICAgIH0KKyAgICB9CisKKyAgICByZXR1cm4gc3RhdGlj
X2Nhc3Q8ZmxvYXQ+KGRvcHBsZXJTaGlmdCk7Cit9CisKK2Zsb2F0IFdlYktpdEF1ZGlvUGFubmVy
Tm9kZTo6ZGlzdGFuY2VDb25lR2FpbigpCit7CisgICAgRmxvYXRQb2ludDNEIGxpc3RlbmVyUG9z
aXRpb24gPSBsaXN0ZW5lcigpLT5wb3NpdGlvbigpOworICAgIEZsb2F0UG9pbnQzRCBzb3VyY2VQ
b3NpdGlvbiA9IHBvc2l0aW9uKCk7CisKKyAgICBkb3VibGUgbGlzdGVuZXJEaXN0YW5jZSA9IHNv
dXJjZVBvc2l0aW9uLmRpc3RhbmNlVG8obGlzdGVuZXJQb3NpdGlvbik7CisgICAgZG91YmxlIGRp
c3RhbmNlR2FpbiA9IG1fZGlzdGFuY2VFZmZlY3QuZ2FpbihsaXN0ZW5lckRpc3RhbmNlKTsKKwor
ICAgIG1fZGlzdGFuY2VHYWluLT5zZXRWYWx1ZShzdGF0aWNfY2FzdDxmbG9hdD4oZGlzdGFuY2VH
YWluKSk7CisKKyAgICAvLyBGSVhNRTogY291bGQgb3B0aW1pemUgYnkgY2FjaGluZyBjb25lR2Fp
bgorICAgIGRvdWJsZSBjb25lR2FpbiA9IG1fY29uZUVmZmVjdC5nYWluKHNvdXJjZVBvc2l0aW9u
LCBtX29yaWVudGF0aW9uLCBsaXN0ZW5lclBvc2l0aW9uKTsKKworICAgIG1fY29uZUdhaW4tPnNl
dFZhbHVlKHN0YXRpY19jYXN0PGZsb2F0Pihjb25lR2FpbikpOworCisgICAgcmV0dXJuIGZsb2F0
KGRpc3RhbmNlR2FpbiAqIGNvbmVHYWluKTsKK30KKwordm9pZCBXZWJLaXRBdWRpb1Bhbm5lck5v
ZGU6Om5vdGlmeUF1ZGlvU291cmNlc0Nvbm5lY3RlZFRvTm9kZShBdWRpb05vZGUqIG5vZGUsIEhh
c2hTZXQ8QXVkaW9Ob2RlKj4mIHZpc2l0ZWROb2RlcykKK3sKKyAgICBBU1NFUlQobm9kZSk7Cisg
ICAgaWYgKCFub2RlKQorICAgICAgICByZXR1cm47CisKKyAgICAvLyBGaXJzdCBjaGVjayBpZiB0
aGlzIG5vZGUgaXMgYW4gQXVkaW9CdWZmZXJTb3VyY2VOb2RlLiBJZiBzbywgbGV0IGl0IGtub3cg
YWJvdXQgdXMgc28gdGhhdCBkb3BwbGVyIHNoaWZ0IHBpdGNoIGNhbiBiZSB0YWtlbiBpbnRvIGFj
Y291bnQuCisgICAgaWYgKG5vZGUtPm5vZGVUeXBlKCkgPT0gTm9kZVR5cGVBdWRpb0J1ZmZlclNv
dXJjZSkgeworICAgICAgICBBdWRpb0J1ZmZlclNvdXJjZU5vZGUqIGJ1ZmZlclNvdXJjZU5vZGUg
PSByZWludGVycHJldF9jYXN0PEF1ZGlvQnVmZmVyU291cmNlTm9kZSo+KG5vZGUpOworICAgICAg
ICBidWZmZXJTb3VyY2VOb2RlLT5zZXRQYW5uZXJOb2RlKHRoaXMpOworICAgIH0gZWxzZSB7Cisg
ICAgICAgIC8vIEdvIHRocm91Z2ggYWxsIGlucHV0cyB0byB0aGlzIG5vZGUuCisgICAgICAgIGZv
ciAodW5zaWduZWQgaSA9IDA7IGkgPCBub2RlLT5udW1iZXJPZklucHV0cygpOyArK2kpIHsKKyAg
ICAgICAgICAgIEF1ZGlvTm9kZUlucHV0KiBpbnB1dCA9IG5vZGUtPmlucHV0KGkpOworCisgICAg
ICAgICAgICAvLyBGb3IgZWFjaCBpbnB1dCwgZ28gdGhyb3VnaCBhbGwgb2YgaXRzIGNvbm5lY3Rp
b25zLCBsb29raW5nIGZvciBBdWRpb0J1ZmZlclNvdXJjZU5vZGVzLgorICAgICAgICAgICAgZm9y
ICh1bnNpZ25lZCBqID0gMDsgaiA8IGlucHV0LT5udW1iZXJPZlJlbmRlcmluZ0Nvbm5lY3Rpb25z
KCk7ICsraikgeworICAgICAgICAgICAgICAgIEF1ZGlvTm9kZU91dHB1dCogY29ubmVjdGVkT3V0
cHV0ID0gaW5wdXQtPnJlbmRlcmluZ091dHB1dChqKTsKKyAgICAgICAgICAgICAgICBBdWRpb05v
ZGUqIGNvbm5lY3RlZE5vZGUgPSBjb25uZWN0ZWRPdXRwdXQtPm5vZGUoKTsKKyAgICAgICAgICAg
ICAgICBpZiAodmlzaXRlZE5vZGVzLmNvbnRhaW5zKGNvbm5lY3RlZE5vZGUpKQorICAgICAgICAg
ICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICAgICAgICAgIHZpc2l0ZWROb2Rlcy5hZGQo
Y29ubmVjdGVkTm9kZSk7CisgICAgICAgICAgICAgICAgbm90aWZ5QXVkaW9Tb3VyY2VzQ29ubmVj
dGVkVG9Ob2RlKGNvbm5lY3RlZE5vZGUsIHZpc2l0ZWROb2Rlcyk7CisgICAgICAgICAgICB9Cisg
ICAgICAgIH0KKyAgICB9Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8v
IEVOQUJMRShXRUJfQVVESU8pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmF1ZGlvL1dlYktpdEF1ZGlvUGFubmVyTm9kZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJhdWRpby9XZWJLaXRBdWRpb1Bhbm5lck5vZGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44OTc5N2MzYzRjNTBi
MzY4OTIwNTgwNmMxOTdmMTBiZDljNTY3NmJlCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJhdWRpby9XZWJLaXRBdWRpb1Bhbm5lck5vZGUuaApAQCAtMCwwICsx
LDE2MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCwgR29vZ2xlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5EIEFOWQorICog
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OCisgKiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMKKyAqIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKFdFQl9BVURJ
TykKKworI2luY2x1ZGUgIkF1ZGlvTGlzdGVuZXIuaCIKKyNpbmNsdWRlICJBdWRpb05vZGUuaCIK
KyNpbmNsdWRlICJBdWRpb1BhcmFtLmgiCisjaW5jbHVkZSAiQ29uZS5oIgorI2luY2x1ZGUgIkRp
c3RhbmNlLmgiCisjaW5jbHVkZSAiRmxvYXRQb2ludDNELmgiCisjaW5jbHVkZSAiUGFubmVyLmgi
CisjaW5jbHVkZSAiUGFubmVyTm9kZS5oIgorI2luY2x1ZGUgIldlYktpdEF1ZGlvQ29udGV4dC5o
IgorI2luY2x1ZGUgPG1lbW9yeT4KKyNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgorI2luY2x1ZGUg
PHd0Zi9Mb2NrLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgSFJURkRhdGFiYXNl
TG9hZGVyOworCisvLyBQYW5uZXJOb2RlIGlzIGFuIEF1ZGlvTm9kZSB3aXRoIG9uZSBpbnB1dCBh
bmQgb25lIG91dHB1dC4KKy8vIEl0IHBvc2l0aW9ucyBhIHNvdW5kIGluIDNEIHNwYWNlLCB3aXRo
IHRoZSBleGFjdCBlZmZlY3QgZGVwZW5kZW50IG9uIHRoZSBwYW5uaW5nIG1vZGVsLgorLy8gSXQg
aGFzIGEgcG9zaXRpb24gYW5kIGFuIG9yaWVudGF0aW9uIGluIDNEIHNwYWNlIHdoaWNoIGlzIHJl
bGF0aXZlIHRvIHRoZSBwb3NpdGlvbiBhbmQgb3JpZW50YXRpb24gb2YgdGhlIGNvbnRleHQncyBB
dWRpb0xpc3RlbmVyLgorLy8gQSBkaXN0YW5jZSBlZmZlY3Qgd2lsbCBhdHRlbnVhdGUgdGhlIGdh
aW4gYXMgdGhlIHBvc2l0aW9uIG1vdmVzIGF3YXkgZnJvbSB0aGUgbGlzdGVuZXIuCisvLyBBIGNv
bmUgZWZmZWN0IHdpbGwgYXR0ZW51YXRlIHRoZSBnYWluIGFzIHRoZSBvcmllbnRhdGlvbiBtb3Zl
cyBhd2F5IGZyb20gdGhlIGxpc3RlbmVyLgorLy8gQWxsIG9mIHRoZXNlIGVmZmVjdHMgZm9sbG93
IHRoZSBPcGVuQUwgc3BlY2lmaWNhdGlvbiB2ZXJ5IGNsb3NlbHkuCisKK2NsYXNzIFdlYktpdEF1
ZGlvUGFubmVyTm9kZSBmaW5hbCA6IHB1YmxpYyBQYW5uZXJOb2RlQmFzZSB7CisgICAgV1RGX01B
S0VfSVNPX0FMTE9DQVRFRChXZWJLaXRBdWRpb1Bhbm5lck5vZGUpOworcHVibGljOgorICAgIHN0
YXRpYyBSZWY8V2ViS2l0QXVkaW9QYW5uZXJOb2RlPiBjcmVhdGUoV2ViS2l0QXVkaW9Db250ZXh0
JiBjb250ZXh0LCBmbG9hdCBzYW1wbGVSYXRlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0
UmVmKCpuZXcgV2ViS2l0QXVkaW9QYW5uZXJOb2RlKGNvbnRleHQsIHNhbXBsZVJhdGUpKTsKKyAg
ICB9CisKKyAgICB2aXJ0dWFsIH5XZWJLaXRBdWRpb1Bhbm5lck5vZGUoKTsKKworICAgIFdlYktp
dEF1ZGlvQ29udGV4dCYgY29udGV4dCgpIHsgcmV0dXJuIGRvd25jYXN0PFdlYktpdEF1ZGlvQ29u
dGV4dD4oQXVkaW9Ob2RlOjpjb250ZXh0KCkpOyB9CisgICAgY29uc3QgV2ViS2l0QXVkaW9Db250
ZXh0JiBjb250ZXh0KCkgY29uc3QgeyByZXR1cm4gZG93bmNhc3Q8V2ViS2l0QXVkaW9Db250ZXh0
PihBdWRpb05vZGU6OmNvbnRleHQoKSk7IH0KKworICAgIC8vIEF1ZGlvTm9kZQorICAgIHZvaWQg
cHJvY2VzcyhzaXplX3QgZnJhbWVzVG9Qcm9jZXNzKSBvdmVycmlkZTsKKyAgICB2b2lkIHB1bGxJ
bnB1dHMoc2l6ZV90IGZyYW1lc1RvUHJvY2Vzcykgb3ZlcnJpZGU7CisgICAgdm9pZCByZXNldCgp
IG92ZXJyaWRlOworICAgIHZvaWQgaW5pdGlhbGl6ZSgpIG92ZXJyaWRlOworICAgIHZvaWQgdW5p
bml0aWFsaXplKCkgb3ZlcnJpZGU7CisKKyAgICAvLyBMaXN0ZW5lcgorICAgIEF1ZGlvTGlzdGVu
ZXIqIGxpc3RlbmVyKCk7CisKKyAgICAvLyBQYW5uaW5nIG1vZGVsCisgICAgUGFubmluZ01vZGVs
VHlwZSBwYW5uaW5nTW9kZWwoKSBjb25zdCB7IHJldHVybiBtX3Bhbm5pbmdNb2RlbDsgfQorICAg
IHZvaWQgc2V0UGFubmluZ01vZGVsKFBhbm5pbmdNb2RlbFR5cGUpOworCisgICAgLy8gUG9zaXRp
b24KKyAgICBGbG9hdFBvaW50M0QgcG9zaXRpb24oKSBjb25zdCB7IHJldHVybiBtX3Bvc2l0aW9u
OyB9CisgICAgdm9pZCBzZXRQb3NpdGlvbihmbG9hdCB4LCBmbG9hdCB5LCBmbG9hdCB6KSB7IG1f
cG9zaXRpb24gPSBGbG9hdFBvaW50M0QoeCwgeSwgeik7IH0KKworICAgIC8vIE9yaWVudGF0aW9u
CisgICAgRmxvYXRQb2ludDNEIG9yaWVudGF0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9vcmllbnRh
dGlvbjsgfQorICAgIHZvaWQgc2V0T3JpZW50YXRpb24oZmxvYXQgeCwgZmxvYXQgeSwgZmxvYXQg
eikgeyBtX29yaWVudGF0aW9uID0gRmxvYXRQb2ludDNEKHgsIHksIHopOyB9CisKKyAgICAvLyBW
ZWxvY2l0eQorICAgIEZsb2F0UG9pbnQzRCB2ZWxvY2l0eSgpIGNvbnN0IHsgcmV0dXJuIG1fdmVs
b2NpdHk7IH0KKyAgICB2b2lkIHNldFZlbG9jaXR5KGZsb2F0IHgsIGZsb2F0IHksIGZsb2F0IHop
IHsgbV92ZWxvY2l0eSA9IEZsb2F0UG9pbnQzRCh4LCB5LCB6KTsgfQorCisgICAgLy8gRGlzdGFu
Y2UgcGFyYW1ldGVycworICAgIERpc3RhbmNlTW9kZWxUeXBlIGRpc3RhbmNlTW9kZWwoKSBjb25z
dDsKKyAgICB2b2lkIHNldERpc3RhbmNlTW9kZWwoRGlzdGFuY2VNb2RlbFR5cGUpOworCisgICAg
ZG91YmxlIHJlZkRpc3RhbmNlKCkgeyByZXR1cm4gbV9kaXN0YW5jZUVmZmVjdC5yZWZEaXN0YW5j
ZSgpOyB9CisgICAgdm9pZCBzZXRSZWZEaXN0YW5jZShkb3VibGUgcmVmRGlzdGFuY2UpIHsgbV9k
aXN0YW5jZUVmZmVjdC5zZXRSZWZEaXN0YW5jZShyZWZEaXN0YW5jZSk7IH0KKworICAgIGRvdWJs
ZSBtYXhEaXN0YW5jZSgpIHsgcmV0dXJuIG1fZGlzdGFuY2VFZmZlY3QubWF4RGlzdGFuY2UoKTsg
fQorICAgIHZvaWQgc2V0TWF4RGlzdGFuY2UoZG91YmxlIG1heERpc3RhbmNlKSB7IG1fZGlzdGFu
Y2VFZmZlY3Quc2V0TWF4RGlzdGFuY2UobWF4RGlzdGFuY2UpOyB9CisKKyAgICBkb3VibGUgcm9s
bG9mZkZhY3RvcigpIHsgcmV0dXJuIG1fZGlzdGFuY2VFZmZlY3Qucm9sbG9mZkZhY3RvcigpOyB9
CisgICAgdm9pZCBzZXRSb2xsb2ZmRmFjdG9yKGRvdWJsZSByb2xsb2ZmRmFjdG9yKSB7IG1fZGlz
dGFuY2VFZmZlY3Quc2V0Um9sbG9mZkZhY3Rvcihyb2xsb2ZmRmFjdG9yKTsgfQorCisgICAgLy8g
U291bmQgY29uZXMgLSBhbmdsZXMgaW4gZGVncmVlcworICAgIGRvdWJsZSBjb25lSW5uZXJBbmds
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fY29uZUVmZmVjdC5pbm5lckFuZ2xlKCk7IH0KKyAgICB2b2lk
IHNldENvbmVJbm5lckFuZ2xlKGRvdWJsZSBhbmdsZSkgeyBtX2NvbmVFZmZlY3Quc2V0SW5uZXJB
bmdsZShhbmdsZSk7IH0KKworICAgIGRvdWJsZSBjb25lT3V0ZXJBbmdsZSgpIGNvbnN0IHsgcmV0
dXJuIG1fY29uZUVmZmVjdC5vdXRlckFuZ2xlKCk7IH0KKyAgICB2b2lkIHNldENvbmVPdXRlckFu
Z2xlKGRvdWJsZSBhbmdsZSkgeyBtX2NvbmVFZmZlY3Quc2V0T3V0ZXJBbmdsZShhbmdsZSk7IH0K
KworICAgIGRvdWJsZSBjb25lT3V0ZXJHYWluKCkgY29uc3QgeyByZXR1cm4gbV9jb25lRWZmZWN0
Lm91dGVyR2FpbigpOyB9CisgICAgdm9pZCBzZXRDb25lT3V0ZXJHYWluKGRvdWJsZSBhbmdsZSkg
eyBtX2NvbmVFZmZlY3Quc2V0T3V0ZXJHYWluKGFuZ2xlKTsgfQorCisgICAgdm9pZCBnZXRBemlt
dXRoRWxldmF0aW9uKGRvdWJsZSogb3V0QXppbXV0aCwgZG91YmxlKiBvdXRFbGV2YXRpb24pOwor
ICAgIGZsb2F0IGRvcHBsZXJSYXRlKCkgZmluYWw7CisKKyAgICAvLyBBY2Nlc3NvcnMgZm9yIGR5
bmFtaWNhbGx5IGNhbGN1bGF0ZWQgZ2FpbiB2YWx1ZXMuCisgICAgQXVkaW9QYXJhbSogZGlzdGFu
Y2VHYWluKCkgeyByZXR1cm4gbV9kaXN0YW5jZUdhaW4uZ2V0KCk7IH0KKyAgICBBdWRpb1BhcmFt
KiBjb25lR2FpbigpIHsgcmV0dXJuIG1fY29uZUdhaW4uZ2V0KCk7IH0KKworICAgIGRvdWJsZSB0
YWlsVGltZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fcGFubmVyID8gbV9wYW5uZXItPnRh
aWxUaW1lKCkgOiAwOyB9CisgICAgZG91YmxlIGxhdGVuY3lUaW1lKCkgY29uc3Qgb3ZlcnJpZGUg
eyByZXR1cm4gbV9wYW5uZXIgPyBtX3Bhbm5lci0+bGF0ZW5jeVRpbWUoKSA6IDA7IH0KKworcHJp
dmF0ZToKKyAgICBXZWJLaXRBdWRpb1Bhbm5lck5vZGUoV2ViS2l0QXVkaW9Db250ZXh0JiwgZmxv
YXQgc2FtcGxlUmF0ZSk7CisKKyAgICAvLyBSZXR1cm5zIHRoZSBjb21iaW5lZCBkaXN0YW5jZSBh
bmQgY29uZSBnYWluIGF0dGVudWF0aW9uLgorICAgIGZsb2F0IGRpc3RhbmNlQ29uZUdhaW4oKTsK
KworICAgIC8vIE5vdGlmaWVzIGFueSBBdWRpb0J1ZmZlclNvdXJjZU5vZGVzIGNvbm5lY3RlZCB0
byB1cyBlaXRoZXIgZGlyZWN0bHkgb3IgaW5kaXJlY3RseSBhYm91dCBvdXIgZXhpc3RlbmNlLgor
ICAgIC8vIFRoaXMgaXMgaW4gb3JkZXIgdG8gaGFuZGxlIHRoZSBwaXRjaCBjaGFuZ2UgbmVjZXNz
YXJ5IGZvciB0aGUgZG9wcGxlciBzaGlmdC4KKyAgICB2b2lkIG5vdGlmeUF1ZGlvU291cmNlc0Nv
bm5lY3RlZFRvTm9kZShBdWRpb05vZGUqLCBIYXNoU2V0PEF1ZGlvTm9kZSo+JiB2aXNpdGVkTm9k
ZXMpOworCisgICAgc3RkOjp1bmlxdWVfcHRyPFBhbm5lcj4gbV9wYW5uZXI7CisgICAgUGFubmlu
Z01vZGVsVHlwZSBtX3Bhbm5pbmdNb2RlbDsKKworICAgIEZsb2F0UG9pbnQzRCBtX3Bvc2l0aW9u
OworICAgIEZsb2F0UG9pbnQzRCBtX29yaWVudGF0aW9uOworICAgIEZsb2F0UG9pbnQzRCBtX3Zl
bG9jaXR5OworCisgICAgLy8gR2FpbgorICAgIFJlZlB0cjxBdWRpb1BhcmFtPiBtX2Rpc3RhbmNl
R2FpbjsKKyAgICBSZWZQdHI8QXVkaW9QYXJhbT4gbV9jb25lR2FpbjsKKyAgICBEaXN0YW5jZUVm
ZmVjdCBtX2Rpc3RhbmNlRWZmZWN0OworICAgIENvbmVFZmZlY3QgbV9jb25lRWZmZWN0OworICAg
IGZsb2F0IG1fbGFzdEdhaW47CisKKyAgICAvLyBIUlRGIERhdGFiYXNlIGxvYWRlcgorICAgIFJl
ZlB0cjxIUlRGRGF0YWJhc2VMb2FkZXI+IG1faHJ0ZkRhdGFiYXNlTG9hZGVyOworCisgICAgdW5z
aWduZWQgbV9jb25uZWN0aW9uQ291bnQ7CisKKyAgICAvLyBTeW5jaHJvbml6ZSBwcm9jZXNzKCkg
YW5kIHNldFBhbm5pbmdNb2RlbCgpIHdoaWNoIGNhbiBjaGFuZ2UgdGhlIHBhbm5lci4KKyAgICBt
dXRhYmxlIExvY2sgbV9wYW5uZXJNdXRleDsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
KworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1dl
YktpdEF1ZGlvUGFubmVyTm9kZS5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlv
L1dlYktpdEF1ZGlvUGFubmVyTm9kZS5pZGwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODhkMjY5MTBhZTE3NTA0MjEz
NmE1ZTYyZmFjODEzY2M1ZmMzNjcyZgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViYXVkaW8vV2ViS2l0QXVkaW9QYW5uZXJOb2RlLmlkbApAQCAtMCwwICsxLDQ5
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwLCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkK
KyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04KKyAqIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UworICogU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworWworICAgIENvbmRpdGlvbmFsPVdFQl9BVURJTywKKyAgICBKU0dl
bmVyYXRlVG9KU09iamVjdCwKKyAgICBJbnRlcmZhY2VOYW1lPXdlYmtpdEF1ZGlvUGFubmVyTm9k
ZSwKK10gaW50ZXJmYWNlIFdlYktpdEF1ZGlvUGFubmVyTm9kZSA6IEF1ZGlvTm9kZSB7CisgICAg
Ly8gRGVmYXVsdCBtb2RlbCBmb3Igc3RlcmVvIGlzIEhSVEYKKyAgICBhdHRyaWJ1dGUgUGFubmlu
Z01vZGVsVHlwZSBwYW5uaW5nTW9kZWw7CisKKyAgICAvLyBVc2VzIGEgM0QgY2FydGVzaWFuIGNv
b3JkaW5hdGUgc3lzdGVtCisgICAgdm9pZCBzZXRQb3NpdGlvbih1bnJlc3RyaWN0ZWQgZmxvYXQg
eCwgdW5yZXN0cmljdGVkIGZsb2F0IHksIHVucmVzdHJpY3RlZCBmbG9hdCB6KTsKKyAgICB2b2lk
IHNldE9yaWVudGF0aW9uKHVucmVzdHJpY3RlZCBmbG9hdCB4LCB1bnJlc3RyaWN0ZWQgZmxvYXQg
eSwgdW5yZXN0cmljdGVkIGZsb2F0IHopOworICAgIHZvaWQgc2V0VmVsb2NpdHkodW5yZXN0cmlj
dGVkIGZsb2F0IHgsIHVucmVzdHJpY3RlZCBmbG9hdCB5LCB1bnJlc3RyaWN0ZWQgZmxvYXQgeik7
CisKKyAgICAvLyBEaXN0YW5jZSBtb2RlbAorICAgIGF0dHJpYnV0ZSBEaXN0YW5jZU1vZGVsVHlw
ZSBkaXN0YW5jZU1vZGVsOworCisgICAgYXR0cmlidXRlIHVucmVzdHJpY3RlZCBkb3VibGUgcmVm
RGlzdGFuY2U7CisgICAgYXR0cmlidXRlIHVucmVzdHJpY3RlZCBkb3VibGUgbWF4RGlzdGFuY2U7
CisgICAgYXR0cmlidXRlIHVucmVzdHJpY3RlZCBkb3VibGUgcm9sbG9mZkZhY3RvcjsKKworICAg
IC8vIERpcmVjdGlvbmFsIHNvdW5kIGNvbmUKKyAgICBhdHRyaWJ1dGUgdW5yZXN0cmljdGVkIGRv
dWJsZSBjb25lSW5uZXJBbmdsZTsKKyAgICBhdHRyaWJ1dGUgdW5yZXN0cmljdGVkIGRvdWJsZSBj
b25lT3V0ZXJBbmdsZTsKKyAgICBhdHRyaWJ1dGUgdW5yZXN0cmljdGVkIGRvdWJsZSBjb25lT3V0
ZXJHYWluOworfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8v
V2ViS2l0T2ZmbGluZUF1ZGlvQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmF1ZGlvL1dlYktpdE9mZmxpbmVBdWRpb0NvbnRleHQuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQ4ZTM5OWEx
NGEzZDVkMzE2NzViYTlhMDZmODE0MDMxMjM1MmI0YTEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1dlYktpdE9mZmxpbmVBdWRpb0NvbnRleHQuY3Bw
CkBAIC0wLDAgKzEsNjIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIsIEdvb2dsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFO
RCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTgorICogQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTCisgKiBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNp
ZiBFTkFCTEUoV0VCX0FVRElPKQorCisjaW5jbHVkZSAiV2ViS2l0T2ZmbGluZUF1ZGlvQ29udGV4
dC5oIgorCisjaW5jbHVkZSAiQXVkaW9CdWZmZXIuaCIKKyNpbmNsdWRlICJEb2N1bWVudC5oIgor
I2luY2x1ZGUgPHd0Zi9Jc29NYWxsb2NJbmxpbmVzLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsK
KworV1RGX01BS0VfSVNPX0FMTE9DQVRFRF9JTVBMKFdlYktpdE9mZmxpbmVBdWRpb0NvbnRleHQp
OworCitpbmxpbmUgV2ViS2l0T2ZmbGluZUF1ZGlvQ29udGV4dDo6V2ViS2l0T2ZmbGluZUF1ZGlv
Q29udGV4dChEb2N1bWVudCYgZG9jdW1lbnQsIEF1ZGlvQnVmZmVyKiByZW5kZXJUYXJnZXQpCisg
ICAgOiBXZWJLaXRBdWRpb0NvbnRleHQoZG9jdW1lbnQsIHJlbmRlclRhcmdldCkKK3sKK30KKwor
RXhjZXB0aW9uT3I8UmVmPFdlYktpdE9mZmxpbmVBdWRpb0NvbnRleHQ+PiBXZWJLaXRPZmZsaW5l
QXVkaW9Db250ZXh0OjpjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgdW5z
aWduZWQgbnVtYmVyT2ZDaGFubmVscywgc2l6ZV90IG51bWJlck9mRnJhbWVzLCBmbG9hdCBzYW1w
bGVSYXRlKQoreworICAgIC8vIEZJWE1FOiBBZGQgc3VwcG9ydCBmb3Igd29ya2Vycy4KKyAgICBp
ZiAoIWlzPERvY3VtZW50Pihjb250ZXh0KSkKKyAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IE5v
dFN1cHBvcnRlZEVycm9yIH07CisgICAgaWYgKCFudW1iZXJPZkNoYW5uZWxzIHx8IG51bWJlck9m
Q2hhbm5lbHMgPiAxMCB8fCAhbnVtYmVyT2ZGcmFtZXMgfHwgIWlzU2FtcGxlUmF0ZVJhbmdlR29v
ZChzYW1wbGVSYXRlKSkKKyAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IFN5bnRheEVycm9yIH07
CisgICAgYXV0byByZW5kZXJUYXJnZXQgPSBBdWRpb0J1ZmZlcjo6Y3JlYXRlKG51bWJlck9mQ2hh
bm5lbHMsIG51bWJlck9mRnJhbWVzLCBzYW1wbGVSYXRlKTsKKyAgICBpZiAoIXJlbmRlclRhcmdl
dCkKKyAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IFN5bnRheEVycm9yIH07CisKKyAgICBhdXRv
IGF1ZGlvQ29udGV4dCA9IGFkb3B0UmVmKCpuZXcgV2ViS2l0T2ZmbGluZUF1ZGlvQ29udGV4dChk
b3duY2FzdDxEb2N1bWVudD4oY29udGV4dCksIHJlbmRlclRhcmdldC5nZXQoKSkpOworICAgIGF1
ZGlvQ29udGV4dC0+c3VzcGVuZElmTmVlZGVkKCk7CisgICAgcmV0dXJuIGF1ZGlvQ29udGV4dDsK
K30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKFdFQl9BVURJ
TykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vV2ViS2l0T2Zm
bGluZUF1ZGlvQ29udGV4dC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9XZWJL
aXRPZmZsaW5lQXVkaW9Db250ZXh0LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzI1NGVkNDFmZTAzZDYxZTdlY2I1
NDg3ZTJjNzljNDc0NjE4MmY5NAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViYXVkaW8vV2ViS2l0T2ZmbGluZUF1ZGlvQ29udGV4dC5oCkBAIC0wLDAgKzEsNDAg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIsIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQor
ICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTgorICogQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
CisgKiBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIldlYktpdEF1ZGlvQ29u
dGV4dC5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIFdlYktpdE9mZmxpbmVBdWRp
b0NvbnRleHQgZmluYWwgOiBwdWJsaWMgV2ViS2l0QXVkaW9Db250ZXh0IHsKKyAgICBXVEZfTUFL
RV9JU09fQUxMT0NBVEVEKFdlYktpdE9mZmxpbmVBdWRpb0NvbnRleHQpOworcHVibGljOgorICAg
IHN0YXRpYyBFeGNlcHRpb25PcjxSZWY8V2ViS2l0T2ZmbGluZUF1ZGlvQ29udGV4dD4+IGNyZWF0
ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiwgdW5zaWduZWQgbnVtYmVyT2ZDaGFubmVscywgc2l6
ZV90IG51bWJlck9mRnJhbWVzLCBmbG9hdCBzYW1wbGVSYXRlKTsKKworcHJpdmF0ZToKKyAgICBX
ZWJLaXRPZmZsaW5lQXVkaW9Db250ZXh0KERvY3VtZW50JiwgQXVkaW9CdWZmZXIqIHJlbmRlclRh
cmdldCk7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1dlYktpdE9mZmxpbmVBdWRpb0NvbnRleHQuaWRsIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9XZWJLaXRPZmZsaW5lQXVkaW9Db250ZXh0
LmlkbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi41NmE2NDhiYzJhNWYyMWMzMDVkZDQ4MGM0MWEwMDUyMzEyNGRjYmYx
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9XZWJL
aXRPZmZsaW5lQXVkaW9Db250ZXh0LmlkbApAQCAtMCwwICsxLDMxIEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDEyLCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
IFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04KKyAq
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUworICogU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
WworICAgIENvbmRpdGlvbmFsPVdFQl9BVURJTywKKyAgICBJbnRlcmZhY2VOYW1lPXdlYmtpdE9m
ZmxpbmVBdWRpb0NvbnRleHQsCisgICAgSlNHZW5lcmF0ZVRvSlNPYmplY3QsCitdIGludGVyZmFj
ZSBXZWJLaXRPZmZsaW5lQXVkaW9Db250ZXh0IDogV2ViS2l0QXVkaW9Db250ZXh0IHsKKyAgICBb
Q2FsbFdpdGg9U2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgTWF5VGhyb3dFeGNlcHRpb25dIGNvbnN0
cnVjdG9yKHVuc2lnbmVkIGxvbmcgbnVtYmVyT2ZDaGFubmVscywgdW5zaWduZWQgbG9uZyBudW1i
ZXJPZkZyYW1lcywgdW5yZXN0cmljdGVkIGZsb2F0IHNhbXBsZVJhdGUpOworfTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0IGIvU291cmNlL1dlYkNvcmUvU291cmNlcy50
eHQKaW5kZXggMmM1NmVkNTEzOWRiMDc5YTg2Yzc3NTFhOTU2MzhjYjI0OGJmZTZjNy4uMTQ5NTlj
MzgxNTAzNTZhODdkZWVlMzJlZmIzN2IyNjI1NjVmMjZlOSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvU291cmNlcy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKQEAgLTI2
OSw2ICsyNjksOSBAQCBNb2R1bGVzL3dlYmF1ZGlvL1NjcmlwdFByb2Nlc3Nvck5vZGUuY3BwCiBN
b2R1bGVzL3dlYmF1ZGlvL1dhdmVTaGFwZXJEU1BLZXJuZWwuY3BwCiBNb2R1bGVzL3dlYmF1ZGlv
L1dhdmVTaGFwZXJOb2RlLmNwcAogTW9kdWxlcy93ZWJhdWRpby9XYXZlU2hhcGVyUHJvY2Vzc29y
LmNwcAorTW9kdWxlcy93ZWJhdWRpby9XZWJLaXRBdWRpb0NvbnRleHQuY3BwCitNb2R1bGVzL3dl
YmF1ZGlvL1dlYktpdEF1ZGlvUGFubmVyTm9kZS5jcHAKK01vZHVsZXMvd2ViYXVkaW8vV2ViS2l0
T2ZmbGluZUF1ZGlvQ29udGV4dC5jcHAKIAogTW9kdWxlcy93ZWJhdXRobi9BdXRoZW50aWNhdG9y
Q29vcmRpbmF0b3IuY3BwCiBNb2R1bGVzL3dlYmF1dGhuL0F1dGhlbnRpY2F0b3JBc3NlcnRpb25S
ZXNwb25zZS5jcHAKQEAgLTI3NDQsNiArMjc0Nyw3IEBAIEpTQXVkaW9CdWZmZXJDYWxsYmFjay5j
cHAKIEpTQXVkaW9CdWZmZXJTb3VyY2VOb2RlLmNwcAogSlNBdWRpb0NvbmZpZ3VyYXRpb24uY3Bw
CiBKU0F1ZGlvQ29udGV4dC5jcHAKK0pTQXVkaW9Db250ZXh0U3RhdGUuY3BwCiBKU0F1ZGlvRGVz
dGluYXRpb25Ob2RlLmNwcAogSlNBdWRpb0xpc3RlbmVyLmNwcAogSlNBdWRpb05vZGUuY3BwCkBA
IC0yOTE0LDYgKzI5MTgsNyBAQCBKU0RldmljZU1vdGlvbkV2ZW50LmNwcAogSlNEZXZpY2VPcmll
bnRhdGlvbkV2ZW50LmNwcAogSlNEZXZpY2VPcmllbnRhdGlvbk9yTW90aW9uUGVybWlzc2lvblN0
YXRlLmNwcAogSlNEZXZpY2VPcmllbnRhdGlvbk9yTW90aW9uRXZlbnQuY3BwCitKU0Rpc3RhbmNl
TW9kZWxUeXBlLmNwcAogSlNEb2N1bWVudC5jcHAKIEpTRG9jdW1lbnRBbmRFbGVtZW50RXZlbnRI
YW5kbGVycy5jcHAKIEpTRG9jdW1lbnRGcmFnbWVudC5jcHAKQEAgLTMyMTEsNiArMzIxNiw3IEBA
IEpTT3ZlcmZsb3dFdmVudC5jcHAKIEpTUGFnZVRyYW5zaXRpb25FdmVudC5jcHAKIEpTUGFpbnRS
ZW5kZXJpbmdDb250ZXh0MkQuY3BwCiBKU1Bhbm5lck5vZGUuY3BwCitKU1Bhbm5pbmdNb2RlbFR5
cGUuY3BwCiBKU1BhcmVudE5vZGUuY3BwCiBKU1BhdGgyRC5jcHAKIEpTUGF5ZXJFcnJvckZpZWxk
cy5jcHAKQEAgLTM1NjcsNyArMzU3MywxMCBAQCBKU1dlYkdQVVN3YXBDaGFpbi5jcHAKIEpTV2Vi
R1BVVGV4dHVyZS5jcHAKIEpTV2ViR1BVVGV4dHVyZVZpZXcuY3BwCiBKU1dlYktpdEFuaW1hdGlv
bkV2ZW50LmNwcAorSlNXZWJLaXRBdWRpb0NvbnRleHQuY3BwCitKU1dlYktpdEF1ZGlvUGFubmVy
Tm9kZS5jcHAKIEpTV2ViS2l0Q1NTTWF0cml4LmNwcAorSlNXZWJLaXRPZmZsaW5lQXVkaW9Db250
ZXh0LmNwcAogSlNXZWJLaXRQbGF5YmFja1RhcmdldEF2YWlsYWJpbGl0eUV2ZW50LmNwcAogSlNX
ZWJLaXRQb2ludC5jcHAKIEpTV2ViS2l0VHJhbnNpdGlvbkV2ZW50LmNwcApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGM3YWFjODU5
Njc2NzgxOGI2OWQzNThlM2FkODA0ODRlMTI2NGI4NjAuLjUxYjc4NDlhOTNlNjg5Yjg4ZjY2ZjA0
ZjAzNmUyOGRkN2IxZDlkZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTI0MDcsMTIgKzI0MDcsMTYgQEAKIAkJODMwMDMwRjgx
QjdEM0I3ODAwRUQzQUFDIC8qIENhY2hlZEhUTUxDb2xsZWN0aW9uLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4MzAwMzBGNzFCN0QzOTg4MDBFRDNBQUMg
LyogQ2FjaGVkSFRNTENvbGxlY3Rpb24uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwogCQk4MzAzMzUwMjFGNTQ5MDU3MDA0REY3MDcgLyogRmlsZVN5c3Rl
bURpcmVjdG9yeVJlYWRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gODMwMzM0RkMxRjU0OTA1MjAwNERGNzA3IC8qIEZpbGVTeXN0ZW1EaXJlY3RvcnlS
ZWFkZXIuaCAqLzsgfTsKIAkJODMwMzM1MDMxRjU0OTA1QTAwNERGNzA3IC8qIEZpbGVTeXN0ZW1F
bnRyaWVzQ2FsbGJhY2suaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDgzMDMzNEZFMUY1NDkwNTIwMDRERjcwNyAvKiBGaWxlU3lzdGVtRW50cmllc0NhbGxi
YWNrLmggKi87IH07CisJCTgzMDQwMjgyMjQ5QTdBNUYwMEE5MEQ4RCAvKiBQYW5uaW5nTW9kZWxU
eXBlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4MzA0
MDI4MDI0OUE3QTVDMDBBOTBEOEQgLyogUGFubmluZ01vZGVsVHlwZS5oICovOyB9OworCQk4MzA0
MDI4MzI0OUE3QTYyMDBBOTBEOEQgLyogRGlzdGFuY2VNb2RlbFR5cGUuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgzMDQwMjdEMjQ5QTdBNUIwMEE5MEQ4
RCAvKiBEaXN0YW5jZU1vZGVsVHlwZS5oICovOyB9OwogCQk4MzA1MTk5NjFCQjBGMTEwMDBGMzc3
MkUgLyogSFRNTFRpbWVFbGVtZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA4MzA1MTk5MzFCQjBGMEU3MDBGMzc3MkUgLyogSFRNTFRpbWVFbGVtZW50
LmggKi87IH07CiAJCTgzMDc4NEIyMUM1MkVFMkMwMDEwNEQxRCAvKiBYTUxEb2N1bWVudC5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODMwNzg0QjExQzUy
RUUxOTAwMTA0RDFEIC8qIFhNTERvY3VtZW50LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJODMwQTM2QkQxREFDNUZBRDAwNkQ3RDA5IC8qIEpTTW91
c2VFdmVudEluaXQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDgzMEEzNkJCMURBQzVGQTcwMDZEN0QwOSAvKiBKU01vdXNlRXZlbnRJbml0LmggKi87IH07
CiAJCTgzMTAyQjI3MUY5RUFERDkwMEU0MDRCOSAvKiBKU0V4dGVuZGFibGVNZXNzYWdlRXZlbnQu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgzMTAyQjIz
MUY5RUFEQzIwMEU0MDRCOSAvKiBKU0V4dGVuZGFibGVNZXNzYWdlRXZlbnQuaCAqLzsgfTsKIAkJ
ODMxMUMwMDMxRkFBMkU5NTAwRTNDOEU1IC8qIFNXU2VydmVySm9iUXVldWUuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgzMTFDMDAyMUZBQTJFODkwMEUz
QzhFNSAvKiBTV1NlcnZlckpvYlF1ZXVlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKIAkJODMxMjBDNzExQzU2RjNGQjAwMUNCMTEyIC8qIEhUTUxEYXRh
RWxlbWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
ODM0Qjg2QTcxQzU2RTgzQTAwRjNGMEUzIC8qIEhUTUxEYXRhRWxlbWVudC5oICovOyB9OworCQk4
MzFCNjE3NjI0OTlBNUJCMDBDMDdDNzkgLyogV2ViS2l0QXVkaW9QYW5uZXJOb2RlLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4MzFCNjE3NDI0OTlBNTlD
MDBDMDdDNzkgLyogV2ViS2l0QXVkaW9QYW5uZXJOb2RlLmggKi87IH07CisJCTgzMUI2MTc3MjQ5
OUE1QkYwMEMwN0M3OSAvKiBXZWJLaXRPZmZsaW5lQXVkaW9Db250ZXh0LmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4MzFCNjE3NTI0OTlBNTlEMDBDMDdD
NzkgLyogV2ViS2l0T2ZmbGluZUF1ZGlvQ29udGV4dC5oICovOyB9OwogCQk4MzIxNTA3RTFGMjdF
QTFCMDA5NUIxMzYgLyogTmF2aWdhdG9yQmVhY29uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4MzIxNTA3QjFGMjdFQTE1MDA5NUIxMzYgLyogTmF2aWdh
dG9yQmVhY29uLmggKi87IH07CiAJCTgzMkI4NDM0MTlEOEU1NTEwMEIyNjA1NSAvKiBTVkdBbmlt
YXRlRWxlbWVudEJhc2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDgzMkI4NDMzMTlEOEU1NTEwMEIyNjA1NSAvKiBTVkdBbmltYXRlRWxlbWVudEJhc2Uu
aCAqLzsgfTsKIAkJODMzQjlFMzIxRjUwOEQ4NTAwRTBFNDI4IC8qIEpTRmlsZVN5c3RlbURpcmVj
dG9yeUVudHJ5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA4MzNCOUUyRjFGNTA4RDgwMDBFMEU0MjggLyogSlNGaWxlU3lzdGVtRGlyZWN0b3J5RW50cnku
aCAqLzsgfTsKQEAgLTI0NjgsMTAgKzI0NzIsMTIgQEAKIAkJODM5QTJGMkUxRTIwNEE3MTAwMzkw
NTdFIC8qIFdlYkdMU3RhdGVUcmFja2VyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA4MzlBMkYyQzFFMjA0QTZEMDAzOTA1N0UgLyogV2ViR0xTdGF0ZVRy
YWNrZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owog
CQk4MzlBQUZFRDFBMEMwQzhEMDA2MDVGOTkgLyogSFRNTFdCUkVsZW1lbnQuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgzOUFBRkVCMUEwQzBDOEQwMDYw
NUY5OSAvKiBIVE1MV0JSRWxlbWVudC5oICovOyB9OwogCQk4M0E4QUM0MDFGQUJCRkU1MDAyMDY0
QUMgLyogU2VydmljZVdvcmtlcklkZW50aWZpZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgzQThBQzNFMUZBQkJGRDEwMDIwNjRBQyAvKiBTZXJ2aWNl
V29ya2VySWRlbnRpZmllci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CisJCTgzQjFBNzAyMjQ5OTg1RjAwMEZFNTk2MSAvKiBXZWJLaXRBdWRpb0NvbnRl
eHQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgzQjFB
NkZGMjQ5OTg1RDAwMEZFNTk2MSAvKiBXZWJLaXRBdWRpb0NvbnRleHQuaCAqLzsgfTsKIAkJODNC
MkQxNzUxQjhCQ0Q2QTAwQTAyRTQ3IC8qIE5hdGl2ZU5vZGVGaWx0ZXIuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgzRTk1OUUxMUI4QkMyMkIwMDREOTM4
NSAvKiBOYXRpdmVOb2RlRmlsdGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKIAkJODNCNzRFRjYxRjNFMEJGMjAwOTk2QkM3IC8qIEtlZXBhbGl2ZVJl
cXVlc3RUcmFja2VyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA4M0I3NEVGMzFGM0UwQkQ3MDA5OTZCQzcgLyogS2VlcGFsaXZlUmVxdWVzdFRyYWNrZXIu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk4M0I5
Njg3QjE5RjhBQjgzMDA0RUY3QUYgLyogU3R5bGVCdWlsZGVyQ29udmVydGVyLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4M0I5Njg3OTE5RjhBQjgzMDA0
RUY3QUYgLyogU3R5bGVCdWlsZGVyQ29udmVydGVyLmggKi87IH07CiAJCTgzQkI1Qzg4MUQ1RDZG
NDUwMDVBNzFGNCAvKiBBbGxEZXNjZW5kYW50c0NvbGxlY3Rpb24uaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgzQkI1Qzg3MUQ1RDZGM0EwMDVBNzFGNCAv
KiBBbGxEZXNjZW5kYW50c0NvbGxlY3Rpb24uaCAqLzsgfTsKKwkJODNCRDNDRUUyNDk5OEUwMTAw
QkEzRTY3IC8qIEF1ZGlvQ29udGV4dFN0YXRlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA4M0JEM0NFRDI0OTk4REY2MDBCQTNFNjcgLyogQXVkaW9Db250
ZXh0U3RhdGUuaCAqLzsgfTsKIAkJODNDMDVBNUIxQTY4NjIxMjAwN0U1REVBIC8qIFN0eWxlUHJv
cGVydHlTaG9ydGhhbmRGdW5jdGlvbnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDgzQzA1QTU5MUE2ODYyMTIwMDdFNURFQSAvKiBTdHlsZVByb3BlcnR5
U2hvcnRoYW5kRnVuY3Rpb25zLmggKi87IH07CiAJCTgzQzFGNTk0MUVERjY5RDMwMDQxMEQyNyAv
KiBRdWFsaWZpZWROYW1lQ2FjaGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDgzQzFGNTkyMUVERjY5RDMwMDQxMEQyNyAvKiBRdWFsaWZpZWROYW1lQ2Fj
aGUuaCAqLzsgfTsKIAkJODNDNDVCOEUxREMyQjY4QTAwODg3MUJBIC8qIFZhbGlkYXRpb25CdWJi
bGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgzQzQ1
QjhEMURDMkI2N0MwMDg4NzFCQSAvKiBWYWxpZGF0aW9uQnViYmxlLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTEwMjk3LDExICsxMDMwMywxNiBA
QAogCQk4MzAwMzBGMzFCN0QzM0E2MDBFRDNBQUMgLyogR2VuZXJpY0NhY2hlZEhUTUxDb2xsZWN0
aW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEdlbmVyaWNDYWNo
ZWRIVE1MQ29sbGVjdGlvbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTgzMDAz
MEY0MUI3RDMzQTYwMEVEM0FBQyAvKiBHZW5lcmljQ2FjaGVkSFRNTENvbGxlY3Rpb24uaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gR2VuZXJpY0NhY2hlZEhUTUxDb2xsZWN0aW9u
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTgzMDAzMEY3MUI3RDM5ODgwMEVEM0FB
QyAvKiBDYWNoZWRIVE1MQ29sbGVjdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBDYWNoZWRIVE1MQ29sbGVjdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQk4MzAwM0UyQjI0OTk5N0E4MDA2MEFGOTQgLyogV2ViS2l0QXVkaW9Db250ZXh0LmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYktpdEF1ZGlvQ29udGV4dC5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTgzMDMzNEZCMUY1NDkwNTIwMDRERjcwNyAv
KiBGaWxlU3lzdGVtRGlyZWN0b3J5UmVhZGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IEZpbGVTeXN0ZW1EaXJlY3RvcnlSZWFkZXIuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk4MzAzMzRGQzFGNTQ5MDUyMDA0REY3MDcgLyogRmlsZVN5c3RlbURp
cmVjdG9yeVJlYWRlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBGaWxlU3lz
dGVtRGlyZWN0b3J5UmVhZGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTgzMDMz
NEZEMUY1NDkwNTIwMDRERjcwNyAvKiBGaWxlU3lzdGVtRW50cmllc0NhbGxiYWNrLmlkbCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHRleHQ7IHBhdGggPSBGaWxlU3lzdGVtRW50cmllc0NhbGxiYWNrLmlkbDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODMwMzM0RkUxRjU0OTA1MjAwNERGNzA3IC8qIEZpbGVT
eXN0ZW1FbnRyaWVzQ2FsbGJhY2suaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
RmlsZVN5c3RlbUVudHJpZXNDYWxsYmFjay5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk4MzAzMzRGRjFGNTQ5MDUyMDA0REY3MDcgLyogRmlsZVN5c3RlbURpcmVjdG9yeVJlYWRlci5p
ZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gRmlsZVN5c3RlbURpcmVjdG9yeVJlYWRlci5pZGw7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTgzMDQwMjdEMjQ5QTdBNUIwMEE5MEQ4RCAv
KiBEaXN0YW5jZU1vZGVsVHlwZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBE
aXN0YW5jZU1vZGVsVHlwZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk4MzA0MDI3
RjI0OUE3QTVDMDBBOTBEOEQgLyogRGlzdGFuY2VNb2RlbFR5cGUuaWRsICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4
dDsgcGF0aCA9IERpc3RhbmNlTW9kZWxUeXBlLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJODMwNDAyODAyNDlBN0E1QzAwQTkwRDhEIC8qIFBhbm5pbmdNb2RlbFR5cGUuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUGFubmluZ01vZGVsVHlwZS5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQk4MzA0MDI4MTI0OUE3QTVEMDBBOTBEOEQgLyogUGFubmlu
Z01vZGVsVHlwZS5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gUGFubmluZ01vZGVsVHlwZS5p
ZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTgzMDUxOTkyMUJCMEYwRTcwMEYzNzcy
RSAvKiBIVE1MVGltZUVsZW1lbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gSFRNTFRpbWVFbGVtZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
ODMwNTE5OTMxQkIwRjBFNzAwRjM3NzJFIC8qIEhUTUxUaW1lRWxlbWVudC5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBIVE1MVGltZUVsZW1lbnQuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJODMwNTE5OTQxQkIwRjBFNzAwRjM3NzJFIC8qIEhUTUxUaW1lRWxlbWVu
dC5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gSFRNTFRpbWVFbGVtZW50LmlkbDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTEwMzE0LDYgKzEwMzI1LDEyIEBACiAJCTgzMTAyQjI1
MUY5RUFEQzIwMEU0MDRCOSAvKiBKU0V4dGVuZGFibGVNZXNzYWdlRXZlbnQuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNFeHRlbmRhYmxlTWVzc2FnZUV2ZW50LmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODMxMUMwMDAxRkFBMkU4OTAwRTNDOEU1
IC8qIFNXU2VydmVySm9iUXVldWUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gU1dTZXJ2ZXJKb2JRdWV1ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTgzMTFDMDAyMUZBQTJFODkwMEUzQzhFNSAvKiBTV1NlcnZlckpvYlF1ZXVlLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNXU2VydmVySm9iUXVldWUuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJODMxQjYxNkYyNDk5QTU5ODAwQzA3Qzc5IC8qIFdlYktpdEF1ZGlv
UGFubmVyTm9kZS5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gV2ViS2l0QXVkaW9QYW5uZXJO
b2RlLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJODMxQjYxNzEyNDk5QTU5OTAw
QzA3Qzc5IC8qIFdlYktpdEF1ZGlvUGFubmVyTm9kZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBXZWJLaXRBdWRpb1Bhbm5lck5vZGUuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQk4MzFCNjE3MjI0OTlBNTlBMDBDMDdDNzkgLyogV2ViS2l0T2ZmbGlu
ZUF1ZGlvQ29udGV4dC5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gV2ViS2l0T2ZmbGluZUF1
ZGlvQ29udGV4dC5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTgzMUI2MTczMjQ5
OUE1OUIwMEMwN0M3OSAvKiBXZWJLaXRPZmZsaW5lQXVkaW9Db250ZXh0LmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYktpdE9mZmxpbmVBdWRpb0NvbnRleHQuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk4MzFCNjE3NDI0OTlBNTlDMDBDMDdDNzkg
LyogV2ViS2l0QXVkaW9QYW5uZXJOb2RlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFdlYktpdEF1ZGlvUGFubmVyTm9kZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQk4MzFCNjE3NTI0OTlBNTlEMDBDMDdDNzkgLyogV2ViS2l0T2ZmbGluZUF1ZGlvQ29udGV4dC5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJLaXRPZmZsaW5lQXVkaW9Db250
ZXh0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTgzMUM0NkMzMUY5RUU1RTAwMEVC
RDQ1MCAvKiBKU0V4dGVuZGFibGVNZXNzYWdlRXZlbnRDdXN0b20uY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNFeHRlbmRhYmxlTWVzc2FnZUV2ZW50Q3VzdG9tLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODMxRDFGMjkxQzU2RUNBMDAwRjVGNkMw
IC8qIEhUTUxEYXRhRWxlbWVudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBIVE1MRGF0YUVsZW1lbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4
MzIxNTA3QTFGMjdFQTE1MDA5NUIxMzYgLyogTmF2aWdhdG9yQmVhY29uLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IE5hdmlnYXRvckJlYWNvbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CkBAIC0xMDQ0MSw2ICsxMDQ1OCw4IEBACiAJCTgzOUFBRkVCMUEwQzBDOEQwMDYwNUY5OSAvKiBI
VE1MV0JSRWxlbWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBIVE1MV0JS
RWxlbWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4M0E0QTlGODFDRTdGRDdF
MDA3MDlCMDAgLyogSlNYTUxEb2N1bWVudEN1c3RvbS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBKU1hNTERvY3VtZW50Q3VzdG9tLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJODNBOEFDM0UxRkFCQkZEMTAwMjA2NEFDIC8qIFNlcnZpY2VXb3JrZXJJ
ZGVudGlmaWVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNlcnZpY2VXb3Jr
ZXJJZGVudGlmaWVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTgzQjFBNkZGMjQ5
OTg1RDAwMEZFNTk2MSAvKiBXZWJLaXRBdWRpb0NvbnRleHQuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gV2ViS2l0QXVkaW9Db250ZXh0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTgzQjFBNzAxMjQ5OTg1RDAwMEZFNTk2MSAvKiBXZWJLaXRBdWRpb0NvbnRleHQu
aWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFdlYktpdEF1ZGlvQ29udGV4dC5pZGw7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTgzQjI1MDA5MUZBMTE4MUMwMEJDMDJEOSAvKiBKU1Nl
cnZpY2VXb3JrZXJDbGllbnRUeXBlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IEpTU2VydmljZVdvcmtlckNsaWVudFR5cGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJODNCMjUwMEIxRkExMTgxRDAwQkMwMkQ5IC8qIEpTU2VydmljZVdvcmtlckNsaWVudFR5cGUu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNTZXJ2aWNlV29ya2Vy
Q2xpZW50VHlwZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTgzQjVEQTQ1MUZB
OTA3OTMwMEI1OURGNCAvKiBKU05hdmlnYXRvckN1c3RvbS5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBKU05hdmlnYXRvckN1c3RvbS5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CkBAIC0xMDQ0OCw2ICsxMDQ2Nyw4IEBACiAJCTgzQjc0RUYzMUYzRTBCRDcw
MDk5NkJDNyAvKiBLZWVwYWxpdmVSZXF1ZXN0VHJhY2tlci5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBLZWVwYWxpdmVSZXF1ZXN0VHJhY2tlci5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk4M0I5Njg3OTE5RjhBQjgzMDA0RUY3QUYgLyogU3R5bGVCdWlsZGVyQ29u
dmVydGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFN0eWxlQnVpbGRlckNv
bnZlcnRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4M0JCNUM4NzFENUQ2RjNB
MDA1QTcxRjQgLyogQWxsRGVzY2VuZGFudHNDb2xsZWN0aW9uLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IEFsbERlc2NlbmRhbnRzQ29sbGVjdGlvbi5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQk4M0JEM0NFQjI0OTk4Q0M1MDBCQTNFNjcgLyogQXVkaW9Db250ZXh0
U3RhdGUuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IEF1ZGlvQ29udGV4dFN0YXRlLmlkbDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJODNCRDNDRUQyNDk5OERGNjAwQkEzRTY3IC8q
IEF1ZGlvQ29udGV4dFN0YXRlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEF1
ZGlvQ29udGV4dFN0YXRlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTgzQzA1QTU4
MUE2ODYyMTIwMDdFNURFQSAvKiBTdHlsZVByb3BlcnR5U2hvcnRoYW5kRnVuY3Rpb25zLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IFN0eWxlUHJvcGVydHlTaG9ydGhh
bmRGdW5jdGlvbnMuY3BwOyBwYXRoID0gRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9TdHlsZVByb3Bl
cnR5U2hvcnRoYW5kRnVuY3Rpb25zLmNwcDsgc291cmNlVHJlZSA9IEJVSUxUX1BST0RVQ1RTX0RJ
UjsgfTsKIAkJODNDMDVBNTkxQTY4NjIxMjAwN0U1REVBIC8qIFN0eWxlUHJvcGVydHlTaG9ydGhh
bmRGdW5jdGlvbnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gU3R5bGVQcm9w
ZXJ0eVNob3J0aGFuZEZ1bmN0aW9ucy5oOyBwYXRoID0gRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9T
dHlsZVByb3BlcnR5U2hvcnRoYW5kRnVuY3Rpb25zLmg7IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9E
VUNUU19ESVI7IH07CiAJCTgzQzFGNTkxMUVERjY5RDMwMDQxMEQyNyAvKiBRdWFsaWZpZWROYW1l
Q2FjaGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUXVhbGlmaWVk
TmFtZUNhY2hlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTI5MjM5LDYgKzI5
MjYwLDggQEAKIAkJCQlGRDMxNUZCQTEyQjAyNjc1MDBDMUEzNTkgLyogQXVkaW9Db250ZXh0LmNw
cCAqLywKIAkJCQlGRDMxNUZCQjEyQjAyNjc1MDBDMUEzNTkgLyogQXVkaW9Db250ZXh0LmggKi8s
CiAJCQkJRkQzMTVGQkMxMkIwMjY3NTAwQzFBMzU5IC8qIEF1ZGlvQ29udGV4dC5pZGwgKi8sCisJ
CQkJODNCRDNDRUQyNDk5OERGNjAwQkEzRTY3IC8qIEF1ZGlvQ29udGV4dFN0YXRlLmggKi8sCisJ
CQkJODNCRDNDRUIyNDk5OENDNTAwQkEzRTY3IC8qIEF1ZGlvQ29udGV4dFN0YXRlLmlkbCAqLywK
IAkJCQlGRDMxNUZCRDEyQjAyNjc1MDBDMUEzNTkgLyogQXVkaW9EZXN0aW5hdGlvbk5vZGUuY3Bw
ICovLAogCQkJCUZEMzE1RkJFMTJCMDI2NzUwMEMxQTM1OSAvKiBBdWRpb0Rlc3RpbmF0aW9uTm9k
ZS5oICovLAogCQkJCUZEMzE1RkJGMTJCMDI2NzUwMEMxQTM1OSAvKiBBdWRpb0Rlc3RpbmF0aW9u
Tm9kZS5pZGwgKi8sCkBAIC0yOTI4OSw2ICsyOTMxMiw4IEBACiAJCQkJRkQzMTVGRTUxMkIwMjY3
NjAwQzFBMzU5IC8qIERlbGF5Tm9kZS5pZGwgKi8sCiAJCQkJRkQzMTVGRTYxMkIwMjY3NjAwQzFB
MzU5IC8qIERlbGF5UHJvY2Vzc29yLmNwcCAqLywKIAkJCQlGRDMxNUZFNzEyQjAyNjc2MDBDMUEz
NTkgLyogRGVsYXlQcm9jZXNzb3IuaCAqLywKKwkJCQk4MzA0MDI3RDI0OUE3QTVCMDBBOTBEOEQg
LyogRGlzdGFuY2VNb2RlbFR5cGUuaCAqLywKKwkJCQk4MzA0MDI3RjI0OUE3QTVDMDBBOTBEOEQg
LyogRGlzdGFuY2VNb2RlbFR5cGUuaWRsICovLAogCQkJCUZENkVEMkMxMTM2QjhFNDIwMDNDRjA3
MiAvKiBEeW5hbWljc0NvbXByZXNzb3JOb2RlLmNwcCAqLywKIAkJCQlGRDZFRDJDMjEzNkI4RTQy
MDAzQ0YwNzIgLyogRHluYW1pY3NDb21wcmVzc29yTm9kZS5oICovLAogCQkJCUZENkVEMkM5MTM2
QjhFOUQwMDNDRjA3MiAvKiBEeW5hbWljc0NvbXByZXNzb3JOb2RlLmlkbCAqLywKQEAgLTI5MzIx
LDYgKzI5MzQ2LDggQEAKIAkJCQlGRDMxNUZDRjEyQjAyNjc1MDBDMUEzNTkgLyogUGFubmVyTm9k
ZS5jcHAgKi8sCiAJCQkJRkQzMTVGRDAxMkIwMjY3NTAwQzFBMzU5IC8qIFBhbm5lck5vZGUuaCAq
LywKIAkJCQlGRDMxNUZEMTEyQjAyNjc1MDBDMUEzNTkgLyogUGFubmVyTm9kZS5pZGwgKi8sCisJ
CQkJODMwNDAyODAyNDlBN0E1QzAwQTkwRDhEIC8qIFBhbm5pbmdNb2RlbFR5cGUuaCAqLywKKwkJ
CQk4MzA0MDI4MTI0OUE3QTVEMDBBOTBEOEQgLyogUGFubmluZ01vZGVsVHlwZS5pZGwgKi8sCiAJ
CQkJRkQ1ODFGQjExNTIwRjkzQjAwM0E3QTc1IC8qIFBlcmlvZGljV2F2ZS5jcHAgKi8sCiAJCQkJ
RkQ1ODFGQjIxNTIwRjkzQjAwM0E3QTc1IC8qIFBlcmlvZGljV2F2ZS5oICovLAogCQkJCUZENTgx
RkIzMTUyMEY5M0IwMDNBN0E3NSAvKiBQZXJpb2RpY1dhdmUuaWRsICovLApAQCAtMjkzMzYsNiAr
MjkzNjMsMTUgQEAKIAkJCQlGRDdGMjk4RTEzRDRDMENCMDBBRDk1MzUgLyogV2F2ZVNoYXBlck5v
ZGUuaWRsICovLAogCQkJCUZEN0YyOThGMTNENEMwQ0IwMEFEOTUzNSAvKiBXYXZlU2hhcGVyUHJv
Y2Vzc29yLmNwcCAqLywKIAkJCQlGRDdGMjk5MDEzRDRDMENCMDBBRDk1MzUgLyogV2F2ZVNoYXBl
clByb2Nlc3Nvci5oICovLAorCQkJCTgzMDAzRTJCMjQ5OTk3QTgwMDYwQUY5NCAvKiBXZWJLaXRB
dWRpb0NvbnRleHQuY3BwICovLAorCQkJCTgzQjFBNkZGMjQ5OTg1RDAwMEZFNTk2MSAvKiBXZWJL
aXRBdWRpb0NvbnRleHQuaCAqLywKKwkJCQk4M0IxQTcwMTI0OTk4NUQwMDBGRTU5NjEgLyogV2Vi
S2l0QXVkaW9Db250ZXh0LmlkbCAqLywKKwkJCQk4MzFCNjE3MTI0OTlBNTk5MDBDMDdDNzkgLyog
V2ViS2l0QXVkaW9QYW5uZXJOb2RlLmNwcCAqLywKKwkJCQk4MzFCNjE3NDI0OTlBNTlDMDBDMDdD
NzkgLyogV2ViS2l0QXVkaW9QYW5uZXJOb2RlLmggKi8sCisJCQkJODMxQjYxNkYyNDk5QTU5ODAw
QzA3Qzc5IC8qIFdlYktpdEF1ZGlvUGFubmVyTm9kZS5pZGwgKi8sCisJCQkJODMxQjYxNzMyNDk5
QTU5QjAwQzA3Qzc5IC8qIFdlYktpdE9mZmxpbmVBdWRpb0NvbnRleHQuY3BwICovLAorCQkJCTgz
MUI2MTc1MjQ5OUE1OUQwMEMwN0M3OSAvKiBXZWJLaXRPZmZsaW5lQXVkaW9Db250ZXh0LmggKi8s
CisJCQkJODMxQjYxNzIyNDk5QTU5QTAwQzA3Qzc5IC8qIFdlYktpdE9mZmxpbmVBdWRpb0NvbnRl
eHQuaWRsICovLAogCQkJKTsKIAkJCXBhdGggPSB3ZWJhdWRpbzsKIAkJCXNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7CkBAIC0yOTcxMiw2ICsyOTc0OCw3IEBACiAJCQkJOUI0MTcwNjQxMjU2NjJCMzAw
NkIyOEZDIC8qIEFwcGx5QmxvY2tFbGVtZW50Q29tbWFuZC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
OTMzMDlERDkwOTlFNjQ5MjAwNTZFNTgxIC8qIEFwcGx5U3R5bGVDb21tYW5kLmggaW4gSGVhZGVy
cyAqLywKIAkJCQk1MTJERDhGNjBEOTFFNkFGMDAwRjg5RUUgLyogQXJjaGl2ZS5oIGluIEhlYWRl
cnMgKi8sCisJCQkJODNCRDNDRUUyNDk5OEUwMTAwQkEzRTY3IC8qIEF1ZGlvQ29udGV4dFN0YXRl
LmggaW4gSGVhZGVycyAqLywKIAkJCQk1MTJERDhGRDBEOTFFNkFGMDAwRjg5RUUgLyogQXJjaGl2
ZUZhY3RvcnkuaCBpbiBIZWFkZXJzICovLAogCQkJCTUxMkREOEZDMEQ5MUU2QUYwMDBGODlFRSAv
KiBBcmNoaXZlUmVzb3VyY2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTUxMkREOEY4MEQ5MUU2QUYw
MDBGODlFRSAvKiBBcmNoaXZlUmVzb3VyY2VDb2xsZWN0aW9uLmggaW4gSGVhZGVycyAqLywKQEAg
LTMwMDkyLDYgKzMwMTI5LDcgQEAKIAkJCQk3N0Q1MTAxNzFFRDYwMjIyMDBEQTRDODcgLyogQ3Jl
ZGVudGlhbHNDb250YWluZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTUxQTA1MjMzMTA1ODc3NEYw
MENDOUU5NSAvKiBDcmVkZW50aWFsU3RvcmFnZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMkQ0ODFG
MDIxNDZCNUM1NTAwQUE3ODM0IC8qIENyb3NzZmFkZUdlbmVyYXRlZEltYWdlLmggaW4gSGVhZGVy
cyAqLywKKwkJCQk4MzA0MDI4MjI0OUE3QTVGMDBBOTBEOEQgLyogUGFubmluZ01vZGVsVHlwZS5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJRTFDNDE2MTIwRjY1NjJGRDAwOTJEMkZCIC8qIENyb3NzT3Jp
Z2luQWNjZXNzQ29udHJvbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDFBQkU2N0IxRDA1ODBEQjAw
NkQ4NjJEIC8qIENyb3NzT3JpZ2luUHJlZmxpZ2h0Q2hlY2tlci5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJRTFDNDE1REEwRjY1NUQ2RjAwOTJEMkZCIC8qIENyb3NzT3JpZ2luUHJlZmxpZ2h0UmVzdWx0
Q2FjaGUuaCBpbiBIZWFkZXJzICovLApAQCAtMzA4NzcsNiArMzA5MTUsNyBAQAogCQkJCUE0M0JG
NTk5MTE0OTI5MEEwMEM2NDNDQSAvKiBIVE1MUHJvZ3Jlc3NFbGVtZW50LmggaW4gSGVhZGVycyAq
LywKIAkJCQlBOENGRjdBMzBBMTU2OTc4MDAwQTQyMzQgLyogSFRNTFF1b3RlRWxlbWVudC5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJQThEMjIzRkUxNkI1MkU0RTAwMTU3Mjg4IC8qIEhUTUxSZXNvdXJj
ZVByZWxvYWRlci5oIGluIEhlYWRlcnMgKi8sCisJCQkJODNCMUE3MDIyNDk5ODVGMDAwRkU1OTYx
IC8qIFdlYktpdEF1ZGlvQ29udGV4dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTg3MURDMjUwQTE1
MjA1NzAwQjEyQTY4IC8qIEhUTUxTY3JpcHRFbGVtZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQk5
NzdCMzg3NTEyMjg4M0U5MDBCODFGRjggLyogSFRNTFNjcmlwdFJ1bm5lci5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJOTc3QjM4NzYxMjI4ODNFOTAwQjgxRkY4IC8qIEhUTUxTY3JpcHRSdW5uZXJIb3N0
LmggaW4gSGVhZGVycyAqLywKQEAgLTMxNzIxLDYgKzMxNzYwLDcgQEAKIAkJCQlCQzgyNDMyOTBE
MENFOEEyMDA0NjBDOEYgLyogSlNTUUxFcnJvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUFFODJG
RUQwQ0FCMDdFRTAwMjIzN0FFIC8qIEpTU1FMUmVzdWx0U2V0LmggaW4gSGVhZGVycyAqLywKIAkJ
CQkxQUZFMTE5QTBDQkZGQ0M0MDAzMDE3RkEgLyogSlNTUUxSZXN1bHRTZXRSb3dMaXN0LmggaW4g
SGVhZGVycyAqLywKKwkJCQk4MzFCNjE3NjI0OTlBNUJCMDBDMDdDNzkgLyogV2ViS2l0QXVkaW9Q
YW5uZXJOb2RlLmggaW4gSGVhZGVycyAqLywKIAkJCQlCNTlERDZBNTExOTAyQTYyMDA3RTk2ODQg
LyogSlNTUUxTdGF0ZW1lbnRDYWxsYmFjay5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjU5REQ2QTkx
MTkwMkE3MTAwN0U5Njg0IC8qIEpTU1FMU3RhdGVtZW50RXJyb3JDYWxsYmFjay5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJQkM4MjQzMkEwRDBDRThBMjAwNDYwQzhGIC8qIEpTU1FMVHJhbnNhY3Rpb24u
aCBpbiBIZWFkZXJzICovLApAQCAtMzIxOTksNiArMzIyMzksNyBAQAogCQkJCTA3NjM4QTk5MTg4
NDQ4NzIwMEUxNUExQiAvKiBNZWRpYVNlc3Npb25NYW5hZ2VySU9TLmggaW4gSGVhZGVycyAqLywK
IAkJCQlDOUQ4NTFGMDFCMzlEQzc4MDA4NTA2MkUgLyogTWVkaWFTZXNzaW9uTWV0YWRhdGEuaCBp
biBIZWFkZXJzICovLAogCQkJCUNEM0E0OTVGMTdBOUQwMUIwMDI3NEU0MiAvKiBNZWRpYVNvdXJj
ZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJODMwNDAyODMyNDlBN0E2MjAwQTkwRDhEIC8qIERpc3Rh
bmNlTW9kZWxUeXBlLmggaW4gSGVhZGVycyAqLywKIAkJCQlDRDY0MUVCMzE4MThGNUVEMDBFRTRD
NDEgLyogTWVkaWFTb3VyY2VQcml2YXRlLmggaW4gSGVhZGVycyAqLywKIAkJCQlDREM4QjVBNzE4
MDQ3NEY3MDAxNkU2ODUgLyogTWVkaWFTb3VyY2VQcml2YXRlQVZGT2JqQy5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJQ0REQzFFN0ExOEE5NTJGMzAwMjdBOUQ0IC8qIE1lZGlhU291cmNlUHJpdmF0ZUNs
aWVudC5oIGluIEhlYWRlcnMgKi8sCkBAIC0zMjgxNSw2ICszMjg1Niw3IEBACiAJCQkJNTFFRTdC
MzgxQUE1MEIwNTAwRjkyQjIxIC8qIFJlc291cmNlTG9hZEluZm8uaCBpbiBIZWFkZXJzICovLAog
CQkJCTk3M0UzMjU3MTA4ODNCN0MwMDVCQzQ5MyAvKiBSZXNvdXJjZUxvYWROb3RpZmllci5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJNkI2OTNBMkUxQzUxQTgyRTAwQjAzQkVGIC8qIFJlc291cmNlTG9h
ZE9ic2VydmVyLmggaW4gSGVhZGVycyAqLywKKwkJCQk4MzFCNjE3NzI0OTlBNUJGMDBDMDdDNzkg
LyogV2ViS2l0T2ZmbGluZUF1ZGlvQ29udGV4dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTQyOTVG
QTQxMkIwNjE0RTAwRDFBQ0UwIC8qIFJlc291cmNlTG9hZFByaW9yaXR5LmggaW4gSGVhZGVycyAq
LywKIAkJCQk3QTkyOUNBNzFDNTk4QUE5MDA0REYyMjYgLyogUmVzb3VyY2VMb2FkU3RhdGlzdGlj
cy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJN0VFNjg0NkQxMkQyNkUzODAwRTc5NDE1IC8qIFJlc291
cmNlUmVxdWVzdC5oIGluIEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9XZWJDb3JlQnVpbHRpbk5hbWVzLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9XZWJDb3JlQnVpbHRpbk5hbWVzLmgKaW5kZXggNDk5N2FiOTkzY2I3OTU0NTc1YTg0MzE3
ZDY5YzIwY2NlYzZhN2QwOS4uZjkxOTdjMjZhZTlhNGMzOWM5MjIzYjU0MWQ1OWZiYzBhODIwZTk5
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvV2ViQ29yZUJ1aWx0aW5O
YW1lcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1dlYkNvcmVCdWlsdGluTmFt
ZXMuaApAQCAtNDksNiArNDksNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgbWFjcm8oQXBw
bGVQYXlTZXR1cEZlYXR1cmUpIFwKICAgICBtYWNybyhBdHRhY2htZW50RWxlbWVudCkgXAogICAg
IG1hY3JvKEF1ZGlvKSBcCisgICAgbWFjcm8oQXVkaW9Db250ZXh0KSBcCiAgICAgbWFjcm8oQXV0
aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNlKSBcCiAgICAgbWFjcm8oQXV0aGVudGljYXRvckF0
dGVzdGF0aW9uUmVzcG9uc2UpIFwKICAgICBtYWNybyhBdXRoZW50aWNhdG9yUmVzcG9uc2UpIFwK
QEAgLTE2NSw5ICsxNjYsMTEgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIG1hY3JvKE5hdmln
YXRvckNyZWRlbnRpYWxzKSBcCiAgICAgbWFjcm8oTmF2aWdhdG9yTWVkaWFEZXZpY2VzKSBcCiAg
ICAgbWFjcm8oTmF2aWdhdG9yVXNlck1lZGlhKSBcCisgICAgbWFjcm8oT2ZmbGluZUF1ZGlvQ29u
dGV4dCkgXAogICAgIG1hY3JvKE9mZnNjcmVlbkNhbnZhcykgXAogICAgIG1hY3JvKE9mZnNjcmVl
bkNhbnZhc1JlbmRlcmluZ0NvbnRleHQyRCkgXAogICAgIG1hY3JvKFBhaW50UmVuZGVyaW5nQ29u
dGV4dDJEKSBcCisgICAgbWFjcm8oUGFubmVyTm9kZSkgXAogICAgIG1hY3JvKFBheW1lbnRBZGRy
ZXNzKSBcCiAgICAgbWFjcm8oUGF5bWVudE1ldGhvZENoYW5nZUV2ZW50KSBcCiAgICAgbWFjcm8o
UGF5bWVudFJlcXVlc3QpIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudFRh
cmdldEZhY3RvcnkuaW4gYi9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRUYXJnZXRGYWN0b3J5Lmlu
CmluZGV4IGZjMWRiMmNlMGUwNjUwMDI4Y2Q0Y2JjZTQ5ZWJkMzI5NDRiMzJiMzQuLmExNTRiNDQ1
YTEzYWQ0NzY5NjI5ZDlmN2Q5Mzc3YTlkZjE1MGY3YWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9FdmVudFRhcmdldEZhY3RvcnkuaW4KKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0V2
ZW50VGFyZ2V0RmFjdG9yeS5pbgpAQCAtNTMsNiArNTMsNyBAQCBWaWRlb1RyYWNrTGlzdCBjb25k
aXRpb25hbD1WSURFTwogVmlzdWFsVmlld3BvcnQKIFdlYkFuaW1hdGlvbgogV2ViR1BVRGV2aWNl
IGNvbmRpdGlvbmFsPVdFQkdQVQorV2ViS2l0QXVkaW9Db250ZXh0IGNvbmRpdGlvbmFsPVdFQl9B
VURJTwogV2ViS2l0TWVkaWFLZXlTZXNzaW9uIGNvbmRpdGlvbmFsPUxFR0FDWV9FTkNSWVBURURf
TUVESUEKIFdlYlNvY2tldAogV29ya2VyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L1NldHRpbmdzLnlhbWwgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdzLnlhbWwKaW5kZXgg
MmQ2YmM2ZmYyZWYwYjAwMGRkNGU5ODA2Y2VkNmM0OGZiNDcwYmUzYS4uNTgzZmM2Zjc5NWVmYzA3
MDJmYjM4NDBkYjRlODExYjg4NjA5ZmEzZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFn
ZS9TZXR0aW5ncy55YW1sCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3MueWFtbApA
QCAtMjU1LDYgKzI1NSw4IEBAIGxvYWREZWZlcnJpbmdFbmFibGVkOgogICBpbml0aWFsOiB0cnVl
CiB3ZWJBdWRpb0VuYWJsZWQ6CiAgIGluaXRpYWw6IGZhbHNlCittb2Rlcm5VbnByZWZpeGVkV2Vi
QXVkaW9FbmFibGVkOgorICBpbml0aWFsOiBmYWxzZQogcGFnaW5hdGVEdXJpbmdMYXlvdXRFbmFi
bGVkOgogICBpbml0aWFsOiBmYWxzZQogZnVsbFNjcmVlbkVuYWJsZWQ6CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0
aW5nL0ludGVybmFscy5jcHAKaW5kZXggMGY1YzE5N2EyOTgwN2U3NjNjYWViZjA5MDJhNGNmOWE2
MjA4Yjk3Yy4uYjMwMzhhMzQwYzY3ZGI2OTI0MzZlYzIzZGE0M2Q4NmU0NDRiZTMyNCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcApAQCAtMTk5LDYgKzE5OSw3IEBACiAjaW5jbHVk
ZSAiV2ViQW5pbWF0aW9uLmgiCiAjaW5jbHVkZSAiV2ViQW5pbWF0aW9uVXRpbGl0aWVzLmgiCiAj
aW5jbHVkZSAiV2ViQ29yZUpTQ2xpZW50RGF0YS5oIgorI2luY2x1ZGUgIldlYktpdEF1ZGlvQ29u
dGV4dC5oIgogI2luY2x1ZGUgIldpbmRvd1Byb3h5LmgiCiAjaW5jbHVkZSAiV29ya2VyVGhyZWFk
LmgiCiAjaW5jbHVkZSAiV29ya2xldEdsb2JhbFNjb3BlLmgiCkBAIC00MjkwLDIyICs0MjkxLDI5
IEBAIHZvaWQgSW50ZXJuYWxzOjpzZW5kTWVkaWFDb250cm9sRXZlbnQoTWVkaWFDb250cm9sRXZl
bnQgZXZlbnQpCiAjZW5kaWYgLy8gRU5BQkxFKE1FRElBX1NFU1NJT04pCiAKICNpZiBFTkFCTEUo
V0VCX0FVRElPKQotdm9pZCBJbnRlcm5hbHM6OnNldEF1ZGlvQ29udGV4dFJlc3RyaWN0aW9ucyhB
dWRpb0NvbnRleHQmIGNvbnRleHQsIFN0cmluZ1ZpZXcgcmVzdHJpY3Rpb25zU3RyaW5nKQordm9p
ZCBJbnRlcm5hbHM6OnNldEF1ZGlvQ29udGV4dFJlc3RyaWN0aW9ucyhjb25zdCBWYXJpYW50PFJl
ZlB0cjxBdWRpb0NvbnRleHQ+LCBSZWZQdHI8V2ViS2l0QXVkaW9Db250ZXh0Pj4mIGNvbnRleHRW
YXJpYW50LCBTdHJpbmdWaWV3IHJlc3RyaWN0aW9uc1N0cmluZykKIHsKLSAgICBBdWRpb0NvbnRl
eHQ6OkJlaGF2aW9yUmVzdHJpY3Rpb25zIHJlc3RyaWN0aW9ucyA9IGNvbnRleHQuYmVoYXZpb3JS
ZXN0cmljdGlvbnMoKTsKLSAgICBjb250ZXh0LnJlbW92ZUJlaGF2aW9yUmVzdHJpY3Rpb24ocmVz
dHJpY3Rpb25zKTsKKyAgICBSZWZQdHI8QXVkaW9Db250ZXh0QmFzZT4gY29udGV4dDsKKyAgICBz
d2l0Y2hPbihjb250ZXh0VmFyaWFudCwgWyZdKFJlZlB0cjxBdWRpb0NvbnRleHQ+IGVudHJ5KSB7
CisgICAgICAgIGNvbnRleHQgPSBlbnRyeTsKKyAgICB9LCBbJl0oUmVmUHRyPFdlYktpdEF1ZGlv
Q29udGV4dD4gZW50cnkpIHsKKyAgICAgICAgY29udGV4dCA9IGVudHJ5OworICAgIH0pOworCisg
ICAgYXV0byByZXN0cmljdGlvbnMgPSBjb250ZXh0LT5iZWhhdmlvclJlc3RyaWN0aW9ucygpOwor
ICAgIGNvbnRleHQtPnJlbW92ZUJlaGF2aW9yUmVzdHJpY3Rpb24ocmVzdHJpY3Rpb25zKTsKIAot
ICAgIHJlc3RyaWN0aW9ucyA9IEF1ZGlvQ29udGV4dDo6Tm9SZXN0cmljdGlvbnM7CisgICAgcmVz
dHJpY3Rpb25zID0gQXVkaW9Db250ZXh0QmFzZTo6Tm9SZXN0cmljdGlvbnM7CiAKICAgICBmb3Ig
KFN0cmluZ1ZpZXcgcmVzdHJpY3Rpb25TdHJpbmcgOiByZXN0cmljdGlvbnNTdHJpbmcuc3BsaXQo
JywnKSkgewogICAgICAgICBpZiAoZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UocmVzdHJp
Y3Rpb25TdHJpbmcsICJub3Jlc3RyaWN0aW9ucyIpKQotICAgICAgICAgICAgcmVzdHJpY3Rpb25z
IHw9IEF1ZGlvQ29udGV4dDo6Tm9SZXN0cmljdGlvbnM7CisgICAgICAgICAgICByZXN0cmljdGlv
bnMgfD0gQXVkaW9Db250ZXh0QmFzZTo6Tm9SZXN0cmljdGlvbnM7CiAgICAgICAgIGlmIChlcXVh
bExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShyZXN0cmljdGlvblN0cmluZywgInJlcXVpcmV1c2Vy
Z2VzdHVyZWZvcmF1ZGlvc3RhcnQiKSkKLSAgICAgICAgICAgIHJlc3RyaWN0aW9ucyB8PSBBdWRp
b0NvbnRleHQ6OlJlcXVpcmVVc2VyR2VzdHVyZUZvckF1ZGlvU3RhcnRSZXN0cmljdGlvbjsKKyAg
ICAgICAgICAgIHJlc3RyaWN0aW9ucyB8PSBBdWRpb0NvbnRleHRCYXNlOjpSZXF1aXJlVXNlckdl
c3R1cmVGb3JBdWRpb1N0YXJ0UmVzdHJpY3Rpb247CiAgICAgICAgIGlmIChlcXVhbExldHRlcnNJ
Z25vcmluZ0FTQ0lJQ2FzZShyZXN0cmljdGlvblN0cmluZywgInJlcXVpcmVwYWdlY29uc2VudGZv
cmF1ZGlvc3RhcnQiKSkKLSAgICAgICAgICAgIHJlc3RyaWN0aW9ucyB8PSBBdWRpb0NvbnRleHQ6
OlJlcXVpcmVQYWdlQ29uc2VudEZvckF1ZGlvU3RhcnRSZXN0cmljdGlvbjsKKyAgICAgICAgICAg
IHJlc3RyaWN0aW9ucyB8PSBBdWRpb0NvbnRleHRCYXNlOjpSZXF1aXJlUGFnZUNvbnNlbnRGb3JB
dWRpb1N0YXJ0UmVzdHJpY3Rpb247CiAgICAgfQotICAgIGNvbnRleHQuYWRkQmVoYXZpb3JSZXN0
cmljdGlvbihyZXN0cmljdGlvbnMpOworICAgIGNvbnRleHQtPmFkZEJlaGF2aW9yUmVzdHJpY3Rp
b24ocmVzdHJpY3Rpb25zKTsKIH0KIAogdm9pZCBJbnRlcm5hbHM6OnVzZU1vY2tBdWRpb0Rlc3Rp
bmF0aW9uQ29jb2EoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5h
bHMuaCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmgKaW5kZXggMzQyMjc5OTRk
NjRmYWQ2ZjYyOWQzODI2MGE3MWIwYTU2OTg5MmJkYS4uYzFmYWQ5YmYyOTVjOTZjYWRiYjgyZTFk
NmI1MDczNjRjMzFiZDAxNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRl
cm5hbHMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5oCkBAIC0xMDgs
NiArMTA4LDcgQEAgY2xhc3MgVW5zdXNwZW5kYWJsZUFjdGl2ZURPTU9iamVjdDsKIGNsYXNzIFZv
aWRDYWxsYmFjazsKIGNsYXNzIFdlYkFuaW1hdGlvbjsKIGNsYXNzIFdlYkdMUmVuZGVyaW5nQ29u
dGV4dDsKK2NsYXNzIFdlYktpdEF1ZGlvQ29udGV4dDsKIGNsYXNzIFdpbmRvd1Byb3h5OwogY2xh
c3MgWE1MSHR0cFJlcXVlc3Q7CiAKQEAgLTY3NCw3ICs2NzUsNyBAQCBwdWJsaWM6CiAjZW5kaWYK
IAogI2lmIEVOQUJMRShXRUJfQVVESU8pCi0gICAgdm9pZCBzZXRBdWRpb0NvbnRleHRSZXN0cmlj
dGlvbnMoQXVkaW9Db250ZXh0JiwgU3RyaW5nVmlldyByZXN0cmljdGlvbnNTdHJpbmcpOworICAg
IHZvaWQgc2V0QXVkaW9Db250ZXh0UmVzdHJpY3Rpb25zKGNvbnN0IFZhcmlhbnQ8UmVmUHRyPEF1
ZGlvQ29udGV4dD4sIFJlZlB0cjxXZWJLaXRBdWRpb0NvbnRleHQ+PiYsIFN0cmluZ1ZpZXcgcmVz
dHJpY3Rpb25zU3RyaW5nKTsKICAgICB2b2lkIHVzZU1vY2tBdWRpb0Rlc3RpbmF0aW9uQ29jb2Eo
KTsKICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFs
cy5pZGwgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5pZGwKaW5kZXggODdhNzRi
NWY5YWRlOTk4YjUyM2ExNGU5ZmE1MTM2NTVlODg4MTcyYi4uMmEzM2M5YWE1MWVhYjViNzY2OGY2
MDk2ODRhMjExYTdiN2Q1YzNlNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9J
bnRlcm5hbHMuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlkbApA
QCAtNjc2LDcgKzY3Niw3IEBAIGVudW0gQ29tcG9zaXRpbmdQb2xpY3kgewogICAgIFtDb25kaXRp
b25hbD1WSURFTywgTWF5VGhyb3dFeGNlcHRpb25dIHZvaWQgc2V0TWVkaWFTZXNzaW9uUmVzdHJp
Y3Rpb25zKERPTVN0cmluZyBtZWRpYVR5cGUsIERPTVN0cmluZyByZXN0cmljdGlvbnMpOwogICAg
IFtDb25kaXRpb25hbD1WSURFTywgTWF5VGhyb3dFeGNlcHRpb25dIERPTVN0cmluZyBtZWRpYVNl
c3Npb25SZXN0cmljdGlvbnMoRE9NU3RyaW5nIG1lZGlhVHlwZSk7CiAgICAgW0NvbmRpdGlvbmFs
PVZJREVPXSB2b2lkIHNldE1lZGlhRWxlbWVudFJlc3RyaWN0aW9ucyhIVE1MTWVkaWFFbGVtZW50
IGVsZW1lbnQsIERPTVN0cmluZyByZXN0cmljdGlvbnMpOwotICAgIFtDb25kaXRpb25hbD1XRUJf
QVVESU9dIHZvaWQgc2V0QXVkaW9Db250ZXh0UmVzdHJpY3Rpb25zKEF1ZGlvQ29udGV4dCBjb250
ZXh0LCBET01TdHJpbmcgcmVzdHJpY3Rpb25zKTsKKyAgICBbQ29uZGl0aW9uYWw9V0VCX0FVRElP
XSB2b2lkIHNldEF1ZGlvQ29udGV4dFJlc3RyaWN0aW9ucygoQXVkaW9Db250ZXh0IG9yIFdlYktp
dEF1ZGlvQ29udGV4dCkgY29udGV4dCwgRE9NU3RyaW5nIHJlc3RyaWN0aW9ucyk7CiAgICAgW0Nv
bmRpdGlvbmFsPVZJREVPLCBNYXlUaHJvd0V4Y2VwdGlvbl0gdm9pZCBwb3N0UmVtb3RlQ29udHJv
bENvbW1hbmQoRE9NU3RyaW5nIGNvbW1hbmQsIG9wdGlvbmFsIHVucmVzdHJpY3RlZCBmbG9hdCBh
cmd1bWVudCA9IDApOwogICAgIFtDb25kaXRpb25hbD1XSVJFTEVTU19QTEFZQkFDS19UQVJHRVRd
IHZvaWQgc2V0TW9ja01lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJFbmFibGVkKGJvb2xlYW4gZW5h
YmxlZCk7CiAgICAgW0NvbmRpdGlvbmFsPVdJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVCwgTWF5VGhy
b3dFeGNlcHRpb25dIHZvaWQgc2V0TW9ja01lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJTdGF0ZShE
T01TdHJpbmcgZGV2aWNlTmFtZSwgRE9NU3RyaW5nIGRldmljZVN0YXRlKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlByZWZlcmVuY2VzLnlhbWwgYi9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9XZWJQcmVmZXJlbmNlcy55YW1sCmluZGV4IGZhZDFhOWY1ODg2MjFlOTVlMTliMWE0
ZmU3NGVhMzAyMzY0MjQxM2QuLjUyMzVjZTcxZmY3YTkzMmUxMjM4YzY0MDE5ZGEzMTJjNTkxNmRi
NmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlByZWZlcmVuY2VzLnlhbWwK
KysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUHJlZmVyZW5jZXMueWFtbApAQCAtMzM0LDYg
KzMzNCwxNCBAQCBXZWJBdWRpb0VuYWJsZWQ6CiAgIGRlZmF1bHRWYWx1ZTogdHJ1ZQogICBjb25k
aXRpb246IEVOQUJMRShXRUJfQVVESU8pCiAKK01vZGVyblVucHJlZml4ZWRXZWJBdWRpb0VuYWJs
ZWQ6CisgIHR5cGU6IGJvb2wKKyAgZGVmYXVsdFZhbHVlOiBmYWxzZQorICBjb25kaXRpb246IEVO
QUJMRShXRUJfQVVESU8pCisgIGh1bWFuUmVhZGFibGVOYW1lOiAiTW9kZXJuIFdlYkF1ZGlvIEFQ
SSIKKyAgaHVtYW5SZWFkYWJsZURlc2NyaXB0aW9uOiAiTW9kZXJuIGFuZCB1bnByZWZpeGVkIFdl
YkF1ZGlvIEFQSSIKKyAgY2F0ZWdvcnk6IGV4cGVyaW1lbnRhbAorCiBBdHRhY2htZW50RWxlbWVu
dEVuYWJsZWQ6CiAgIHR5cGU6IGJvb2wKICAgZGVmYXVsdFZhbHVlOiBmYWxzZQpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy9DaGFuZ2VMb2cKaW5kZXggNjNhMWI3OTIxZTAwZWMxZTRiOGU2NDg0Nzc1OWViYjlj
NTcyNzhmZC4uOWM5NTQ0YzYyYWJlMGM2YmFmM2NjZTIwYmY3ZTk1OTM4YmE0ZDViOCAxMDA2NDQK
LS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2MvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTggQEAKKzIwMjAtMDYtMTcgIENo
cmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgZXhwZXJpbWVudGFs
IGZlYXR1cmUgZmxhZyBmb3IgbW9kZXJuICYgdW5wcmVmaXhlZCBXZWJBdWRpbyBBUEkKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxMzI2OAorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJlYmFzZWxpbmUgYSBm
ZXcgd2ViLXBsYXRmb3JtLXRlc3RzIG5vdyB0aGF0IHRoZXkgYXJlIHBhc3Npbmcgb3IgZmFpbGlu
ZyBhdCBhIGxhdGVyIHN0YWdlLgorICAgICAgICBUaGlzIGlzIGR1ZSB0byBvdXIgV2ViQXVkaW8g
Z2V0dGluZyBwcm9wZXJseSB1bnByZWZpeGVkIGluIHRoZSBjb250ZXh0IG9mIGxheW91dCB0ZXN0
cy4KKworICAgICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy93ZWJhdWRpby9pZGxoYXJuZXNzLmh0
dHBzLndpbmRvdy1leHBlY3RlZC50eHQ6CisgICAgICAgICogd2ViLXBsYXRmb3JtLXRlc3RzL3dl
YmF1ZGlvL3RoZS1hdWRpby1hcGkvdGhlLWF1ZGlvY29udGV4dC1pbnRlcmZhY2UvYXVkaW9jb250
ZXh0LWRldGFjaGVkLWV4ZWN1dGlvbi1jb250ZXh0LnRlbnRhdGl2ZS1leHBlY3RlZC50eHQ6Cisg
ICAgICAgICogd2ViLXBsYXRmb3JtLXRlc3RzL3dlYmF1ZGlvL3RoZS1hdWRpby1hcGkvdGhlLWF1
ZGlvbm9kZS1pbnRlcmZhY2UvYXVkaW9ub2RlLWNvbm5lY3QtbWV0aG9kLWNoYWluaW5nLWV4cGVj
dGVkLnR4dDoKKyAgICAgICAgKiB3ZWItcGxhdGZvcm0tdGVzdHMvd2ViYXVkaW8vdGhlLWF1ZGlv
LWFwaS90aGUtb2ZmbGluZWF1ZGlvY29udGV4dC1pbnRlcmZhY2Uvb2ZmbGluZWF1ZGlvY29udGV4
dC1kZXRhY2hlZC1leGVjdXRpb24tY29udGV4dC50ZW50YXRpdmUtZXhwZWN0ZWQudHh0OgorCiAy
MDIwLTA2LTE3ICBEYXJyeWwgUG9ndWUgIDxkYXJyeWxAZHBvZ3VlLmNhPgogCiAgICAgICAgIElu
ZGV4ZWREQjogU3VwcG9ydCBJREJGYWN0b3J5IGRhdGFiYXNlcyBtZXRob2QKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2ViYXVkaW8vaWRs
aGFybmVzcy5odHRwcy53aW5kb3ctZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJhdWRpby9pZGxoYXJuZXNzLmh0dHBzLndpbmRvdy1l
eHBlY3RlZC50eHQKaW5kZXggY2NjN2U5ZThmNzFiZjFkNDEyNGRiY2RlODkzNjE2YzI2NDBiYzNh
ZC4uODU5OGRkYWZlMDgwMWY4NjNjN2M5MDNkMjEwMjRlNjhjYjFiODc2MSAxMDA2NDQKLS0tIGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJhdWRpby9pZGxo
YXJuZXNzLmh0dHBzLndpbmRvdy1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJhdWRpby9pZGxoYXJuZXNzLmh0dHBzLndpbmRv
dy1leHBlY3RlZC50eHQKQEAgLTQzLDcgKzQzLDcgQEAgRkFJTCBCYXNlQXVkaW9Db250ZXh0IGlu
dGVyZmFjZTogb3BlcmF0aW9uIGNyZWF0ZVdhdmVTaGFwZXIoKSBhc3NlcnRfb3duX3Byb3BlcnQK
IEZBSUwgQmFzZUF1ZGlvQ29udGV4dCBpbnRlcmZhY2U6IG9wZXJhdGlvbiBkZWNvZGVBdWRpb0Rh
dGEoQXJyYXlCdWZmZXIsIG9wdGlvbmFsIERlY29kZVN1Y2Nlc3NDYWxsYmFjaz8sIG9wdGlvbmFs
IERlY29kZUVycm9yQ2FsbGJhY2s/KSBhc3NlcnRfb3duX3Byb3BlcnR5OiBzZWxmIGRvZXMgbm90
IGhhdmUgb3duIHByb3BlcnR5ICJCYXNlQXVkaW9Db250ZXh0IiBleHBlY3RlZCBwcm9wZXJ0eSAi
QmFzZUF1ZGlvQ29udGV4dCIgbWlzc2luZwogRkFJTCBBdWRpb0NvbnRleHQgaW50ZXJmYWNlOiBl
eGlzdGVuY2UgYW5kIHByb3BlcnRpZXMgb2YgaW50ZXJmYWNlIG9iamVjdCBhc3NlcnRfb3duX3By
b3BlcnR5OiBzZWxmIGRvZXMgbm90IGhhdmUgb3duIHByb3BlcnR5ICJCYXNlQXVkaW9Db250ZXh0
IiBleHBlY3RlZCBwcm9wZXJ0eSAiQmFzZUF1ZGlvQ29udGV4dCIgbWlzc2luZwogUEFTUyBBdWRp
b0NvbnRleHQgaW50ZXJmYWNlIG9iamVjdCBsZW5ndGggCi1GQUlMIEF1ZGlvQ29udGV4dCBpbnRl
cmZhY2Ugb2JqZWN0IG5hbWUgYXNzZXJ0X2VxdWFsczogd3JvbmcgdmFsdWUgZm9yIEF1ZGlvQ29u
dGV4dC5uYW1lIGV4cGVjdGVkICJBdWRpb0NvbnRleHQiIGJ1dCBnb3QgIndlYmtpdEF1ZGlvQ29u
dGV4dCIKK1BBU1MgQXVkaW9Db250ZXh0IGludGVyZmFjZSBvYmplY3QgbmFtZSAKIEZBSUwgQXVk
aW9Db250ZXh0IGludGVyZmFjZTogZXhpc3RlbmNlIGFuZCBwcm9wZXJ0aWVzIG9mIGludGVyZmFj
ZSBwcm90b3R5cGUgb2JqZWN0IGFzc2VydF9vd25fcHJvcGVydHk6IHNlbGYgZG9lcyBub3QgaGF2
ZSBvd24gcHJvcGVydHkgIkJhc2VBdWRpb0NvbnRleHQiIGV4cGVjdGVkIHByb3BlcnR5ICJCYXNl
QXVkaW9Db250ZXh0IiBtaXNzaW5nCiBQQVNTIEF1ZGlvQ29udGV4dCBpbnRlcmZhY2U6IGV4aXN0
ZW5jZSBhbmQgcHJvcGVydGllcyBvZiBpbnRlcmZhY2UgcHJvdG90eXBlIG9iamVjdCdzICJjb25z
dHJ1Y3RvciIgcHJvcGVydHkgCiBQQVNTIEF1ZGlvQ29udGV4dCBpbnRlcmZhY2U6IGV4aXN0ZW5j
ZSBhbmQgcHJvcGVydGllcyBvZiBpbnRlcmZhY2UgcHJvdG90eXBlIG9iamVjdCdzIEBAdW5zY29w
YWJsZXMgcHJvcGVydHkgCkBAIC01OCw3ICs1OCw3IEBAIFBBU1MgQXVkaW9Db250ZXh0IGludGVy
ZmFjZTogb3BlcmF0aW9uIGNyZWF0ZU1lZGlhU3RyZWFtU291cmNlKE1lZGlhU3RyZWFtKQogRkFJ
TCBBdWRpb0NvbnRleHQgaW50ZXJmYWNlOiBvcGVyYXRpb24gY3JlYXRlTWVkaWFTdHJlYW1UcmFj
a1NvdXJjZShNZWRpYVN0cmVhbVRyYWNrKSBhc3NlcnRfb3duX3Byb3BlcnR5OiBpbnRlcmZhY2Ug
cHJvdG90eXBlIG9iamVjdCBtaXNzaW5nIG5vbi1zdGF0aWMgb3BlcmF0aW9uIGV4cGVjdGVkIHBy
b3BlcnR5ICJjcmVhdGVNZWRpYVN0cmVhbVRyYWNrU291cmNlIiBtaXNzaW5nCiBQQVNTIEF1ZGlv
Q29udGV4dCBpbnRlcmZhY2U6IG9wZXJhdGlvbiBjcmVhdGVNZWRpYVN0cmVhbURlc3RpbmF0aW9u
KCkgCiBQQVNTIEF1ZGlvQ29udGV4dCBtdXN0IGJlIHByaW1hcnkgaW50ZXJmYWNlIG9mIGNvbnRl
eHQgCi1GQUlMIFN0cmluZ2lmaWNhdGlvbiBvZiBjb250ZXh0IGFzc2VydF9jbGFzc19zdHJpbmc6
IGNsYXNzIHN0cmluZyBvZiBjb250ZXh0IGV4cGVjdGVkICJbb2JqZWN0IEF1ZGlvQ29udGV4dF0i
IGJ1dCBnb3QgIltvYmplY3Qgd2Via2l0QXVkaW9Db250ZXh0XSIKK1BBU1MgU3RyaW5naWZpY2F0
aW9uIG9mIGNvbnRleHQgCiBGQUlMIEF1ZGlvQ29udGV4dCBpbnRlcmZhY2U6IGNvbnRleHQgbXVz
dCBpbmhlcml0IHByb3BlcnR5ICJiYXNlTGF0ZW5jeSIgd2l0aCB0aGUgcHJvcGVyIHR5cGUgYXNz
ZXJ0X2luaGVyaXRzOiBwcm9wZXJ0eSAiYmFzZUxhdGVuY3kiIG5vdCBmb3VuZCBpbiBwcm90b3R5
cGUgY2hhaW4KIEZBSUwgQXVkaW9Db250ZXh0IGludGVyZmFjZTogY29udGV4dCBtdXN0IGluaGVy
aXQgcHJvcGVydHkgIm91dHB1dExhdGVuY3kiIHdpdGggdGhlIHByb3BlciB0eXBlIGFzc2VydF9p
bmhlcml0czogcHJvcGVydHkgIm91dHB1dExhdGVuY3kiIG5vdCBmb3VuZCBpbiBwcm90b3R5cGUg
Y2hhaW4KIEZBSUwgQXVkaW9Db250ZXh0IGludGVyZmFjZTogY29udGV4dCBtdXN0IGluaGVyaXQg
cHJvcGVydHkgImdldE91dHB1dFRpbWVzdGFtcCgpIiB3aXRoIHRoZSBwcm9wZXIgdHlwZSBhc3Nl
cnRfaW5oZXJpdHM6IHByb3BlcnR5ICJnZXRPdXRwdXRUaW1lc3RhbXAiIG5vdCBmb3VuZCBpbiBw
cm90b3R5cGUgY2hhaW4KQEAgLTEwOCw3ICsxMDgsNyBAQCBQQVNTIEJhc2VBdWRpb0NvbnRleHQg
aW50ZXJmYWNlOiBjb250ZXh0IG11c3QgaW5oZXJpdCBwcm9wZXJ0eSAiZGVjb2RlQXVkaW9EYXRh
KAogRkFJTCBCYXNlQXVkaW9Db250ZXh0IGludGVyZmFjZTogY2FsbGluZyBkZWNvZGVBdWRpb0Rh
dGEoQXJyYXlCdWZmZXIsIG9wdGlvbmFsIERlY29kZVN1Y2Nlc3NDYWxsYmFjaz8sIG9wdGlvbmFs
IERlY29kZUVycm9yQ2FsbGJhY2s/KSBvbiBjb250ZXh0IHdpdGggdG9vIGZldyBhcmd1bWVudHMg
bXVzdCB0aHJvdyBUeXBlRXJyb3IgYXNzZXJ0X3VucmVhY2hlZDogVGhyb3dzICJUeXBlRXJyb3I6
IE5vdCBlbm91Z2ggYXJndW1lbnRzIiBpbnN0ZWFkIG9mIHJlamVjdGluZyBwcm9taXNlIFJlYWNo
ZWQgdW5yZWFjaGFibGUgY29kZQogRkFJTCBPZmZsaW5lQXVkaW9Db250ZXh0IGludGVyZmFjZTog
ZXhpc3RlbmNlIGFuZCBwcm9wZXJ0aWVzIG9mIGludGVyZmFjZSBvYmplY3QgYXNzZXJ0X293bl9w
cm9wZXJ0eTogc2VsZiBkb2VzIG5vdCBoYXZlIG93biBwcm9wZXJ0eSAiQmFzZUF1ZGlvQ29udGV4
dCIgZXhwZWN0ZWQgcHJvcGVydHkgIkJhc2VBdWRpb0NvbnRleHQiIG1pc3NpbmcKIEZBSUwgT2Zm
bGluZUF1ZGlvQ29udGV4dCBpbnRlcmZhY2Ugb2JqZWN0IGxlbmd0aCBhc3NlcnRfZXF1YWxzOiB3
cm9uZyB2YWx1ZSBmb3IgT2ZmbGluZUF1ZGlvQ29udGV4dC5sZW5ndGggZXhwZWN0ZWQgMSBidXQg
Z290IDMKLUZBSUwgT2ZmbGluZUF1ZGlvQ29udGV4dCBpbnRlcmZhY2Ugb2JqZWN0IG5hbWUgYXNz
ZXJ0X2VxdWFsczogd3JvbmcgdmFsdWUgZm9yIE9mZmxpbmVBdWRpb0NvbnRleHQubmFtZSBleHBl
Y3RlZCAiT2ZmbGluZUF1ZGlvQ29udGV4dCIgYnV0IGdvdCAid2Via2l0T2ZmbGluZUF1ZGlvQ29u
dGV4dCIKK1BBU1MgT2ZmbGluZUF1ZGlvQ29udGV4dCBpbnRlcmZhY2Ugb2JqZWN0IG5hbWUgCiBG
QUlMIE9mZmxpbmVBdWRpb0NvbnRleHQgaW50ZXJmYWNlOiBleGlzdGVuY2UgYW5kIHByb3BlcnRp
ZXMgb2YgaW50ZXJmYWNlIHByb3RvdHlwZSBvYmplY3QgYXNzZXJ0X293bl9wcm9wZXJ0eTogc2Vs
ZiBkb2VzIG5vdCBoYXZlIG93biBwcm9wZXJ0eSAiQmFzZUF1ZGlvQ29udGV4dCIgZXhwZWN0ZWQg
cHJvcGVydHkgIkJhc2VBdWRpb0NvbnRleHQiIG1pc3NpbmcKIFBBU1MgT2ZmbGluZUF1ZGlvQ29u
dGV4dCBpbnRlcmZhY2U6IGV4aXN0ZW5jZSBhbmQgcHJvcGVydGllcyBvZiBpbnRlcmZhY2UgcHJv
dG90eXBlIG9iamVjdCdzICJjb25zdHJ1Y3RvciIgcHJvcGVydHkgCiBQQVNTIE9mZmxpbmVBdWRp
b0NvbnRleHQgaW50ZXJmYWNlOiBleGlzdGVuY2UgYW5kIHByb3BlcnRpZXMgb2YgaW50ZXJmYWNl
IHByb3RvdHlwZSBvYmplY3QncyBAQHVuc2NvcGFibGVzIHByb3BlcnR5IApAQCAtMTE4LDcgKzEx
OCw3IEBAIEZBSUwgT2ZmbGluZUF1ZGlvQ29udGV4dCBpbnRlcmZhY2U6IG9wZXJhdGlvbiBzdXNw
ZW5kKGRvdWJsZSkgYXNzZXJ0X293bl9wcm9wZXJ0CiBGQUlMIE9mZmxpbmVBdWRpb0NvbnRleHQg
aW50ZXJmYWNlOiBhdHRyaWJ1dGUgbGVuZ3RoIGFzc2VydF90cnVlOiBUaGUgcHJvdG90eXBlIG9i
amVjdCBtdXN0IGhhdmUgYSBwcm9wZXJ0eSAibGVuZ3RoIiBleHBlY3RlZCB0cnVlIGdvdCBmYWxz
ZQogRkFJTCBPZmZsaW5lQXVkaW9Db250ZXh0IGludGVyZmFjZTogYXR0cmlidXRlIG9uY29tcGxl
dGUgYXNzZXJ0X293bl9wcm9wZXJ0eTogZXhwZWN0ZWQgcHJvcGVydHkgIm9uY29tcGxldGUiIG1p
c3NpbmcKIFBBU1MgT2ZmbGluZUF1ZGlvQ29udGV4dCBtdXN0IGJlIHByaW1hcnkgaW50ZXJmYWNl
IG9mIG5ldyBPZmZsaW5lQXVkaW9Db250ZXh0KDEsIDEsIHNhbXBsZV9yYXRlKSAKLUZBSUwgU3Ry
aW5naWZpY2F0aW9uIG9mIG5ldyBPZmZsaW5lQXVkaW9Db250ZXh0KDEsIDEsIHNhbXBsZV9yYXRl
KSBhc3NlcnRfY2xhc3Nfc3RyaW5nOiBjbGFzcyBzdHJpbmcgb2YgbmV3IE9mZmxpbmVBdWRpb0Nv
bnRleHQoMSwgMSwgc2FtcGxlX3JhdGUpIGV4cGVjdGVkICJbb2JqZWN0IE9mZmxpbmVBdWRpb0Nv
bnRleHRdIiBidXQgZ290ICJbb2JqZWN0IHdlYmtpdE9mZmxpbmVBdWRpb0NvbnRleHRdIgorUEFT
UyBTdHJpbmdpZmljYXRpb24gb2YgbmV3IE9mZmxpbmVBdWRpb0NvbnRleHQoMSwgMSwgc2FtcGxl
X3JhdGUpIAogUEFTUyBPZmZsaW5lQXVkaW9Db250ZXh0IGludGVyZmFjZTogbmV3IE9mZmxpbmVB
dWRpb0NvbnRleHQoMSwgMSwgc2FtcGxlX3JhdGUpIG11c3QgaW5oZXJpdCBwcm9wZXJ0eSAic3Rh
cnRSZW5kZXJpbmcoKSIgd2l0aCB0aGUgcHJvcGVyIHR5cGUgCiBQQVNTIE9mZmxpbmVBdWRpb0Nv
bnRleHQgaW50ZXJmYWNlOiBuZXcgT2ZmbGluZUF1ZGlvQ29udGV4dCgxLCAxLCBzYW1wbGVfcmF0
ZSkgbXVzdCBpbmhlcml0IHByb3BlcnR5ICJyZXN1bWUoKSIgd2l0aCB0aGUgcHJvcGVyIHR5cGUg
CiBQQVNTIE9mZmxpbmVBdWRpb0NvbnRleHQgaW50ZXJmYWNlOiBuZXcgT2ZmbGluZUF1ZGlvQ29u
dGV4dCgxLCAxLCBzYW1wbGVfcmF0ZSkgbXVzdCBpbmhlcml0IHByb3BlcnR5ICJzdXNwZW5kKGRv
dWJsZSkiIHdpdGggdGhlIHByb3BlciB0eXBlIApAQCAtOTA0LDcgKzkwNCw3IEBAIEZBSUwgQXVk
aW9Ob2RlIGludGVyZmFjZTogbmV3IE9zY2lsbGF0b3JOb2RlKGNvbnRleHQpIG11c3QgaW5oZXJp
dCBwcm9wZXJ0eSAiY2hhCiBGQUlMIEF1ZGlvTm9kZSBpbnRlcmZhY2U6IG5ldyBPc2NpbGxhdG9y
Tm9kZShjb250ZXh0KSBtdXN0IGluaGVyaXQgcHJvcGVydHkgImNoYW5uZWxJbnRlcnByZXRhdGlv
biIgd2l0aCB0aGUgcHJvcGVyIHR5cGUgYXNzZXJ0X2VxdWFsczogVW5leHBlY3RlZCBleGNlcHRp
b24gd2hlbiBldmFsdWF0aW5nIG9iamVjdCBleHBlY3RlZCBudWxsIGJ1dCBnb3Qgb2JqZWN0ICJU
eXBlRXJyb3I6IGZ1bmN0aW9uIGlzIG5vdCBhIGNvbnN0cnVjdG9yIChldmFsdWF0aW5nICduZXcg
T3NjaWxsYXRvck5vZGUoY29udGV4dCknKSIKIFBBU1MgUGFubmVyTm9kZSBpbnRlcmZhY2U6IGV4
aXN0ZW5jZSBhbmQgcHJvcGVydGllcyBvZiBpbnRlcmZhY2Ugb2JqZWN0IAogRkFJTCBQYW5uZXJO
b2RlIGludGVyZmFjZSBvYmplY3QgbGVuZ3RoIGFzc2VydF9lcXVhbHM6IHdyb25nIHZhbHVlIGZv
ciBQYW5uZXJOb2RlLmxlbmd0aCBleHBlY3RlZCAxIGJ1dCBnb3QgMAotRkFJTCBQYW5uZXJOb2Rl
IGludGVyZmFjZSBvYmplY3QgbmFtZSBhc3NlcnRfZXF1YWxzOiB3cm9uZyB2YWx1ZSBmb3IgUGFu
bmVyTm9kZS5uYW1lIGV4cGVjdGVkICJQYW5uZXJOb2RlIiBidXQgZ290ICJ3ZWJraXRBdWRpb1Bh
bm5lck5vZGUiCitQQVNTIFBhbm5lck5vZGUgaW50ZXJmYWNlIG9iamVjdCBuYW1lIAogUEFTUyBQ
YW5uZXJOb2RlIGludGVyZmFjZTogZXhpc3RlbmNlIGFuZCBwcm9wZXJ0aWVzIG9mIGludGVyZmFj
ZSBwcm90b3R5cGUgb2JqZWN0IAogUEFTUyBQYW5uZXJOb2RlIGludGVyZmFjZTogZXhpc3RlbmNl
IGFuZCBwcm9wZXJ0aWVzIG9mIGludGVyZmFjZSBwcm90b3R5cGUgb2JqZWN0J3MgImNvbnN0cnVj
dG9yIiBwcm9wZXJ0eSAKIFBBU1MgUGFubmVyTm9kZSBpbnRlcmZhY2U6IGV4aXN0ZW5jZSBhbmQg
cHJvcGVydGllcyBvZiBpbnRlcmZhY2UgcHJvdG90eXBlIG9iamVjdCdzIEBAdW5zY29wYWJsZXMg
cHJvcGVydHkgCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3dlYmF1ZGlvL3RoZS1hdWRpby1hcGkvdGhlLWF1ZGlvY29udGV4dC1pbnRlcmZh
Y2UvYXVkaW9jb250ZXh0LWRldGFjaGVkLWV4ZWN1dGlvbi1jb250ZXh0LnRlbnRhdGl2ZS1leHBl
Y3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dl
YmF1ZGlvL3RoZS1hdWRpby1hcGkvdGhlLWF1ZGlvY29udGV4dC1pbnRlcmZhY2UvYXVkaW9jb250
ZXh0LWRldGFjaGVkLWV4ZWN1dGlvbi1jb250ZXh0LnRlbnRhdGl2ZS1leHBlY3RlZC50eHQKaW5k
ZXggMzQ0ZmNkOWM5NDA1YmVkZmE5YjM0N2RlYjczMTJiN2Q0NGIyODc2Zi4uOGI4ZGU5MGZjYmI1
NGZkOWJjOTY2M2ZhNDkzNDU1MzhjYTBmZTExMCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJhdWRpby90aGUtYXVkaW8tYXBpL3RoZS1h
dWRpb2NvbnRleHQtaW50ZXJmYWNlL2F1ZGlvY29udGV4dC1kZXRhY2hlZC1leGVjdXRpb24tY29u
dGV4dC50ZW50YXRpdmUtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvd2ViYXVkaW8vdGhlLWF1ZGlvLWFwaS90aGUtYXVkaW9jb250
ZXh0LWludGVyZmFjZS9hdWRpb2NvbnRleHQtZGV0YWNoZWQtZXhlY3V0aW9uLWNvbnRleHQudGVu
dGF0aXZlLWV4cGVjdGVkLnR4dApAQCAtMSw3ICsxLDYgQEAKIAotCiBQQVNTICMgQVVESVQgVEFT
SyBSVU5ORVIgU1RBUlRFRC4gCi1GQUlMIEV4ZWN1dGluZyAiZGVjb2Rpbmctb24tZGV0YWNoZWQt
aWZyYW1lIiBwcm9taXNlX3Rlc3Q6IFVuaGFuZGxlZCByZWplY3Rpb24gd2l0aCB2YWx1ZTogb2Jq
ZWN0ICJUeXBlRXJyb3I6IHVuZGVmaW5lZCBpcyBub3QgYSBjb25zdHJ1Y3RvciAoZXZhbHVhdGlu
ZyAnbmV3IGlmcmFtZS5jb250ZW50V2luZG93LkF1ZGlvQ29udGV4dCgpJykiCitGQUlMIEV4ZWN1
dGluZyAiZGVjb2Rpbmctb24tZGV0YWNoZWQtaWZyYW1lIiBwcm9taXNlX3Rlc3Q6IFVuaGFuZGxl
ZCByZWplY3Rpb24gd2l0aCB2YWx1ZTogb2JqZWN0ICJUeXBlRXJyb3I6IE5vdCBlbm91Z2ggYXJn
dW1lbnRzIgogUEFTUyBBdWRpdCByZXBvcnQgCiBQQVNTID4gW2RlY29kaW5nLW9uLWRldGFjaGVk
LWlmcmFtZV0gIAogUEFTUyAjIEFVRElUIFRBU0sgUlVOTkVSIEZJTklTSEVEOiAxIHRhc2tzIHJh
biBzdWNjZXNzZnVsbHkuIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy93ZWJhdWRpby90aGUtYXVkaW8tYXBpL3RoZS1hdWRpb25vZGUtaW50
ZXJmYWNlL2F1ZGlvbm9kZS1jb25uZWN0LW1ldGhvZC1jaGFpbmluZy1leHBlY3RlZC50eHQgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYmF1ZGlvL3RoZS1h
dWRpby1hcGkvdGhlLWF1ZGlvbm9kZS1pbnRlcmZhY2UvYXVkaW9ub2RlLWNvbm5lY3QtbWV0aG9k
LWNoYWluaW5nLWV4cGVjdGVkLnR4dAppbmRleCA3M2Y3N2U1NWNjODkxNjU2YzJiZGE2OGUzYTll
MzcxNjk1ODJmODRjLi42YTY1OWI1NjI1OGQ1NDM3OTc1YjU1OGRkN2QzYjk5ZmU4MDdkMjZiIDEw
MDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dl
YmF1ZGlvL3RoZS1hdWRpby1hcGkvdGhlLWF1ZGlvbm9kZS1pbnRlcmZhY2UvYXVkaW9ub2RlLWNv
bm5lY3QtbWV0aG9kLWNoYWluaW5nLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYmF1ZGlvL3RoZS1hdWRpby1hcGkvdGhlLWF1
ZGlvbm9kZS1pbnRlcmZhY2UvYXVkaW9ub2RlLWNvbm5lY3QtbWV0aG9kLWNoYWluaW5nLWV4cGVj
dGVkLnR4dApAQCAtMzYsOSArMzYsOSBAQCBQQVNTICAgVGhlIHJldHVybiB2YWx1ZSBvZiBHYWlu
Tm9kZS5jb25uZWN0KENoYW5uZWxNZXJnZXJOb2RlLCAwLCAxKSBtYXRjaGVzIHRoZQogUEFTUyAg
IFRoZSByZXR1cm4gdmFsdWUgb2YgT3NjaWxsYXRvck5vZGUuY29ubmVjdChHYWluTm9kZSkgbWF0
Y2hlcyB0aGUgZGVzdGluYXRpb24gR2Fpbk5vZGUgaXMgZXF1YWwgdG8gdHJ1ZS4gCiBQQVNTICAg
VGhlIHJldHVybiB2YWx1ZSBvZiBPc2NpbGxhdG9yTm9kZS5jb25uZWN0KEJpcXVhZEZpbHRlck5v
ZGUsIDApIG1hdGNoZXMgdGhlIGRlc3RpbmF0aW9uIEJpcXVhZEZpbHRlck5vZGUgaXMgZXF1YWwg
dG8gdHJ1ZS4gCiBQQVNTICAgVGhlIHJldHVybiB2YWx1ZSBvZiBPc2NpbGxhdG9yTm9kZS5jb25u
ZWN0KENoYW5uZWxNZXJnZXJOb2RlLCAwLCAxKSBtYXRjaGVzIHRoZSBkZXN0aW5hdGlvbiBDaGFu
bmVsTWVyZ2VyTm9kZSBpcyBlcXVhbCB0byB0cnVlLiAKLVBBU1MgICBUaGUgcmV0dXJuIHZhbHVl
IG9mIHdlYmtpdEF1ZGlvUGFubmVyTm9kZS5jb25uZWN0KEdhaW5Ob2RlKSBtYXRjaGVzIHRoZSBk
ZXN0aW5hdGlvbiBHYWluTm9kZSBpcyBlcXVhbCB0byB0cnVlLiAKLVBBU1MgICBUaGUgcmV0dXJu
IHZhbHVlIG9mIHdlYmtpdEF1ZGlvUGFubmVyTm9kZS5jb25uZWN0KEJpcXVhZEZpbHRlck5vZGUs
IDApIG1hdGNoZXMgdGhlIGRlc3RpbmF0aW9uIEJpcXVhZEZpbHRlck5vZGUgaXMgZXF1YWwgdG8g
dHJ1ZS4gCi1QQVNTICAgVGhlIHJldHVybiB2YWx1ZSBvZiB3ZWJraXRBdWRpb1Bhbm5lck5vZGUu
Y29ubmVjdChDaGFubmVsTWVyZ2VyTm9kZSwgMCwgMSkgbWF0Y2hlcyB0aGUgZGVzdGluYXRpb24g
Q2hhbm5lbE1lcmdlck5vZGUgaXMgZXF1YWwgdG8gdHJ1ZS4gCitQQVNTICAgVGhlIHJldHVybiB2
YWx1ZSBvZiBQYW5uZXJOb2RlLmNvbm5lY3QoR2Fpbk5vZGUpIG1hdGNoZXMgdGhlIGRlc3RpbmF0
aW9uIEdhaW5Ob2RlIGlzIGVxdWFsIHRvIHRydWUuIAorUEFTUyAgIFRoZSByZXR1cm4gdmFsdWUg
b2YgUGFubmVyTm9kZS5jb25uZWN0KEJpcXVhZEZpbHRlck5vZGUsIDApIG1hdGNoZXMgdGhlIGRl
c3RpbmF0aW9uIEJpcXVhZEZpbHRlck5vZGUgaXMgZXF1YWwgdG8gdHJ1ZS4gCitQQVNTICAgVGhl
IHJldHVybiB2YWx1ZSBvZiBQYW5uZXJOb2RlLmNvbm5lY3QoQ2hhbm5lbE1lcmdlck5vZGUsIDAs
IDEpIG1hdGNoZXMgdGhlIGRlc3RpbmF0aW9uIENoYW5uZWxNZXJnZXJOb2RlIGlzIGVxdWFsIHRv
IHRydWUuIAogUEFTUyAgIFRoZSByZXR1cm4gdmFsdWUgb2YgU2NyaXB0UHJvY2Vzc29yTm9kZS5j
b25uZWN0KEdhaW5Ob2RlKSBtYXRjaGVzIHRoZSBkZXN0aW5hdGlvbiBHYWluTm9kZSBpcyBlcXVh
bCB0byB0cnVlLiAKIFBBU1MgICBUaGUgcmV0dXJuIHZhbHVlIG9mIFNjcmlwdFByb2Nlc3Nvck5v
ZGUuY29ubmVjdChCaXF1YWRGaWx0ZXJOb2RlLCAwKSBtYXRjaGVzIHRoZSBkZXN0aW5hdGlvbiBC
aXF1YWRGaWx0ZXJOb2RlIGlzIGVxdWFsIHRvIHRydWUuIAogUEFTUyAgIFRoZSByZXR1cm4gdmFs
dWUgb2YgU2NyaXB0UHJvY2Vzc29yTm9kZS5jb25uZWN0KENoYW5uZWxNZXJnZXJOb2RlLCAwLCAx
KSBtYXRjaGVzIHRoZSBkZXN0aW5hdGlvbiBDaGFubmVsTWVyZ2VyTm9kZSBpcyBlcXVhbCB0byB0
cnVlLiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvd2ViYXVkaW8vdGhlLWF1ZGlvLWFwaS90aGUtb2ZmbGluZWF1ZGlvY29udGV4dC1pbnRl
cmZhY2Uvb2ZmbGluZWF1ZGlvY29udGV4dC1kZXRhY2hlZC1leGVjdXRpb24tY29udGV4dC50ZW50
YXRpdmUtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy93ZWJhdWRpby90aGUtYXVkaW8tYXBpL3RoZS1vZmZsaW5lYXVkaW9jb250ZXh0LWlu
dGVyZmFjZS9vZmZsaW5lYXVkaW9jb250ZXh0LWRldGFjaGVkLWV4ZWN1dGlvbi1jb250ZXh0LnRl
bnRhdGl2ZS1leHBlY3RlZC50eHQKaW5kZXggZDNmMGZhMDEyODQ3YWUzMDA3MjQxMWI2ZTlhM2E0
YWI4NDU1MmRjMS4uYjJkYTA3MDQ1MDQwOGU5NmM0YjExMTZkOTQzZDAyMWU2NDdjMDUxNyAxMDA2
NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJh
dWRpby90aGUtYXVkaW8tYXBpL3RoZS1vZmZsaW5lYXVkaW9jb250ZXh0LWludGVyZmFjZS9vZmZs
aW5lYXVkaW9jb250ZXh0LWRldGFjaGVkLWV4ZWN1dGlvbi1jb250ZXh0LnRlbnRhdGl2ZS1leHBl
Y3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy93ZWJhdWRpby90aGUtYXVkaW8tYXBpL3RoZS1vZmZsaW5lYXVkaW9jb250ZXh0LWludGVyZmFj
ZS9vZmZsaW5lYXVkaW9jb250ZXh0LWRldGFjaGVkLWV4ZWN1dGlvbi1jb250ZXh0LnRlbnRhdGl2
ZS1leHBlY3RlZC50eHQKQEAgLTEsNyArMSw3IEBACiAKIAogUEFTUyAjIEFVRElUIFRBU0sgUlVO
TkVSIFNUQVJURUQuIAotRkFJTCBFeGVjdXRpbmcgImRlY29kaW5nLW9uLWRldGFjaGVkLWlmcmFt
ZSIgcHJvbWlzZV90ZXN0OiBVbmhhbmRsZWQgcmVqZWN0aW9uIHdpdGggdmFsdWU6IG9iamVjdCAi
VHlwZUVycm9yOiB1bmRlZmluZWQgaXMgbm90IGEgY29uc3RydWN0b3IgKGV2YWx1YXRpbmcgJ25l
dyBpZnJhbWUuY29udGVudFdpbmRvdy5PZmZsaW5lQXVkaW9Db250ZXh0KDEsIDEsIDMwMDApJyki
CitGQUlMIEV4ZWN1dGluZyAiZGVjb2Rpbmctb24tZGV0YWNoZWQtaWZyYW1lIiBwcm9taXNlX3Rl
c3Q6IFVuaGFuZGxlZCByZWplY3Rpb24gd2l0aCB2YWx1ZTogb2JqZWN0ICJTeW50YXhFcnJvcjog
VGhlIHN0cmluZyBkaWQgbm90IG1hdGNoIHRoZSBleHBlY3RlZCBwYXR0ZXJuLiIKIFBBU1MgQXVk
aXQgcmVwb3J0IAogUEFTUyA+IFtkZWNvZGluZy1vbi1kZXRhY2hlZC1pZnJhbWVdICAKIFBBU1Mg
IyBBVURJVCBUQVNLIFJVTk5FUiBGSU5JU0hFRDogMSB0YXNrcyByYW4gc3VjY2Vzc2Z1bGx5LiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>402143</attachid>
            <date>2020-06-17 12:24:47 -0700</date>
            <delta_ts>2020-06-17 13:00:08 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-213268-20200617122447.patch</filename>
            <type>text/plain</type>
            <size>269522</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYzMTYzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzYwNDdkMTUxZDZmMDhm
ZTlmY2ZjYzZiNTNmNDY1YTgzNGMyOGIyZS4uZjY5MGYzYjNkMTMzNDVlMzFmNmFmYTNmOTgzZGFl
NjkyN2NhMzk1NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI5NiBAQAorMjAyMC0wNi0xNyAgQ2hy
aXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBleHBlcmltZW50YWwg
ZmVhdHVyZSBmbGFnIGZvciBtb2Rlcm4gJiB1bnByZWZpeGVkIFdlYkF1ZGlvIEFQSQorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjEzMjY4CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgSmVyIE5vYmxlLgorCisgICAgICAgIEFkZCBleHBlcmltZW50YWwgZmVh
dHVyZSBmbGFnIGZvciBtb2Rlcm4gJiB1bnByZWZpeGVkIFdlYkF1ZGlvIEFQSSwKKyAgICAgICAg
b2ZmIGJ5IGRlZmF1bHQuCisKKyAgICAgICAgVGhpcyBwYXRjaCBzcGxpdCB0aGUgQXVkaW9Db250
ZXh0LCBPZmZsaW5lQXVkaW9Db250ZXh0IGFuZCBQYW5uZXJOb2RlCisgICAgICAgIElETCBpbnRl
cmZhY2VzIGludG8gdGhlaXIgcHJlZml4ZWQgYW5kIHVucHJlZml4ZWQgdmVyc2lvbnMuIFRoZQor
ICAgICAgICB1bnByZWZpeGVkIHZlcnNpb25zIGFyZSBiZWhpbmQgdGhlIG5ldyBleHBlcmltZW50
YWwgZmVhdHVyZSBmbGFnIHRoYXQKKyAgICAgICAgaXMgY3VycmVudGx5IG9mZiBieSBkZWZhdWx0
IGJ1dCBhdXRvbWF0aWNhbGx5IGdldHMgdHVybmVkIG9uIGluIHRoZQorICAgICAgICBjb250ZXh0
IG9mIGxheW91dCB0ZXN0cy4KKworICAgICAgICBUaGlzIHdpbGwgZ2l2ZSB1cyBtb3JlIGZsZXhp
YmlsaXR5IHdoZW4gd29ya2luZyBvbiB0aGUgbW9kZXJuIGFuZAorICAgICAgICB1bnByZWZpeGVk
IFdlYkF1ZGlvIEFQSSBhcyB3ZSB3aWxsIG5vdCBoYXZlIHRvIHdvcnJ5IGFib3V0IGJhY2t3YXJk
CisgICAgICAgIGNvbXBhdGliaWxpdHkuIFRoaXMgYWxzbyBhbGxvd3MgdXMgdG8gZWFzaWx5IHR1
cm4gaXQgb24gb3Igb2ZmIHZpYQorICAgICAgICB0aGUgZXhwZXJpbWVudGFsIGZlYXR1cmVzIG1l
bnUgaW4gU2FmYXJpLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cywgcmViYXNlbGluZWQgZXhpc3Rp
bmcgdGVzdHMuCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBEZXJpdmVk
U291cmNlcy1pbnB1dC54Y2ZpbGVsaXN0OgorICAgICAgICAqIERlcml2ZWRTb3VyY2VzLW91dHB1
dC54Y2ZpbGVsaXN0OgorICAgICAgICAqIERlcml2ZWRTb3VyY2VzLm1ha2U6CisgICAgICAgICog
TW9kdWxlcy93ZWJhdWRpby9BbmFseXNlck5vZGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QW5h
bHlzZXJOb2RlOjpBbmFseXNlck5vZGUpOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vQW5h
bHlzZXJOb2RlLmg6CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9BdWRpb0Jhc2ljSW5zcGVj
dG9yTm9kZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb0Jhc2ljSW5zcGVjdG9yTm9kZTo6
QXVkaW9CYXNpY0luc3BlY3Rvck5vZGUpOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vQXVk
aW9CYXNpY0luc3BlY3Rvck5vZGUuaDoKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL0F1ZGlv
QmFzaWNQcm9jZXNzb3JOb2RlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvQmFzaWNQcm9j
ZXNzb3JOb2RlOjpBdWRpb0Jhc2ljUHJvY2Vzc29yTm9kZSk6CisgICAgICAgICogTW9kdWxlcy93
ZWJhdWRpby9BdWRpb0Jhc2ljUHJvY2Vzc29yTm9kZS5oOgorICAgICAgICAqIE1vZHVsZXMvd2Vi
YXVkaW8vQXVkaW9CdWZmZXJTb3VyY2VOb2RlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlv
QnVmZmVyU291cmNlTm9kZTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvQnVmZmVy
U291cmNlTm9kZTo6QXVkaW9CdWZmZXJTb3VyY2VOb2RlKToKKyAgICAgICAgKFdlYkNvcmU6OkF1
ZGlvQnVmZmVyU291cmNlTm9kZTo6c2V0QnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlv
QnVmZmVyU291cmNlTm9kZTo6c2V0UGFubmVyTm9kZSk6CisgICAgICAgICogTW9kdWxlcy93ZWJh
dWRpby9BdWRpb0J1ZmZlclNvdXJjZU5vZGUuaDoKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlv
L0F1ZGlvQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb0NvbnRleHRCYXNlOjpB
dWRpb0NvbnRleHRCYXNlKToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvQ29udGV4dDo6QXVkaW9D
b250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvQ29udGV4dEJhc2U6OmRvY3VtZW50IGNv
bnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvQ29udGV4dEJhc2U6OnNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQgY29uc3QpOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0
Lmg6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb0NvbnRleHRCYXNlOjpBdXRvTG9ja2VyOjpBdXRv
TG9ja2VyKToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvQ29udGV4dEJhc2U6OkF1dG9Mb2NrZXI6
On5BdXRvTG9ja2VyKToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvQ29udGV4dDo6bWF4TnVtYmVy
T2ZDaGFubmVscyk6CisgICAgICAgIChpc1R5cGUpOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVk
aW8vQXVkaW9Db250ZXh0LmlkbDoKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQ29u
dGV4dFN0YXRlLmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8v
T2ZmbGluZUF1ZGlvQ29udGV4dC5pZGwuCisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9BdWRp
b0NvbnRleHRTdGF0ZS5pZGw6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
YXVkaW8vT2ZmbGluZUF1ZGlvQ29udGV4dC5pZGwuCisgICAgICAgICogTW9kdWxlcy93ZWJhdWRp
by9BdWRpb0Rlc3RpbmF0aW9uTm9kZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb0Rlc3Rp
bmF0aW9uTm9kZTo6QXVkaW9EZXN0aW5hdGlvbk5vZGUpOgorICAgICAgICAqIE1vZHVsZXMvd2Vi
YXVkaW8vQXVkaW9EZXN0aW5hdGlvbk5vZGUuaDoKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlv
L0F1ZGlvTm9kZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb05vZGU6OkF1ZGlvTm9kZSk6
CisgICAgICAgIChXZWJDb3JlOjpBdWRpb05vZGU6OmNvbm5lY3QpOgorICAgICAgICAoV2ViQ29y
ZTo6QXVkaW9Ob2RlOjpkaXNjb25uZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvTm9kZTo6
c2V0Q2hhbm5lbENvdW50KToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvTm9kZTo6c2V0Q2hhbm5l
bENvdW50TW9kZSk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb05vZGU6OnNldENoYW5uZWxJbnRl
cnByZXRhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb05vZGU6OmVuYWJsZU91dHB1dHNJ
Zk5lY2Vzc2FyeSk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb05vZGU6OmRlcmVmKToKKyAgICAg
ICAgKFdlYkNvcmU6OkF1ZGlvTm9kZTo6Y29udGV4dEZvckJpbmRpbmdzIGNvbnN0KToKKyAgICAg
ICAgKiBNb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvTm9kZS5oOgorICAgICAgICAoV2ViQ29yZTo6QXVk
aW9Ob2RlOjpjb250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvTm9kZTo6Y29udGV4dCBj
b25zdCk6CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9BdWRpb05vZGUuaWRsOgorICAgICAg
ICAqIE1vZHVsZXMvd2ViYXVkaW8vQXVkaW9Ob2RlT3V0cHV0Lmg6CisgICAgICAgIChXZWJDb3Jl
OjpBdWRpb05vZGVPdXRwdXQ6OmNvbnRleHQpOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8v
QXVkaW9QYXJhbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb1BhcmFtOjpBdWRpb1BhcmFt
KToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvUGFyYW0uaDoKKyAgICAgICAgKiBN
b2R1bGVzL3dlYmF1ZGlvL0F1ZGlvUGFyYW1UaW1lbGluZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpBdWRpb1BhcmFtVGltZWxpbmU6OnZhbHVlRm9yQ29udGV4dFRpbWUpOgorICAgICAgICAqIE1v
ZHVsZXMvd2ViYXVkaW8vQXVkaW9QYXJhbVRpbWVsaW5lLmg6CisgICAgICAgICogTW9kdWxlcy93
ZWJhdWRpby9BdWRpb1NjaGVkdWxlZFNvdXJjZU5vZGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
QXVkaW9TY2hlZHVsZWRTb3VyY2VOb2RlOjpBdWRpb1NjaGVkdWxlZFNvdXJjZU5vZGUpOgorICAg
ICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vQXVkaW9TY2hlZHVsZWRTb3VyY2VOb2RlLmg6CisgICAg
ICAgICogTW9kdWxlcy93ZWJhdWRpby9BdWRpb1N1bW1pbmdKdW5jdGlvbi5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpBdWRpb1N1bW1pbmdKdW5jdGlvbjo6QXVkaW9TdW1taW5nSnVuY3Rpb24pOgor
ICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vQXVkaW9TdW1taW5nSnVuY3Rpb24uaDoKKyAgICAg
ICAgKFdlYkNvcmU6OkF1ZGlvU3VtbWluZ0p1bmN0aW9uOjpjb250ZXh0KToKKyAgICAgICAgKiBN
b2R1bGVzL3dlYmF1ZGlvL0JpcXVhZEZpbHRlck5vZGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
QmlxdWFkRmlsdGVyTm9kZTo6QmlxdWFkRmlsdGVyTm9kZSk6CisgICAgICAgICogTW9kdWxlcy93
ZWJhdWRpby9CaXF1YWRGaWx0ZXJOb2RlLmg6CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9C
aXF1YWRQcm9jZXNzb3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QmlxdWFkUHJvY2Vzc29yOjpC
aXF1YWRQcm9jZXNzb3IpOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vQmlxdWFkUHJvY2Vz
c29yLmg6CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9DaGFubmVsTWVyZ2VyTm9kZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpDaGFubmVsTWVyZ2VyTm9kZTo6Y3JlYXRlKToKKyAgICAgICAg
KFdlYkNvcmU6OkNoYW5uZWxNZXJnZXJOb2RlOjpDaGFubmVsTWVyZ2VyTm9kZSk6CisgICAgICAg
ICogTW9kdWxlcy93ZWJhdWRpby9DaGFubmVsTWVyZ2VyTm9kZS5oOgorICAgICAgICAqIE1vZHVs
ZXMvd2ViYXVkaW8vQ2hhbm5lbFNwbGl0dGVyTm9kZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpD
aGFubmVsU3BsaXR0ZXJOb2RlOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6Q2hhbm5lbFNw
bGl0dGVyTm9kZTo6Q2hhbm5lbFNwbGl0dGVyTm9kZSk6CisgICAgICAgICogTW9kdWxlcy93ZWJh
dWRpby9DaGFubmVsU3BsaXR0ZXJOb2RlLmg6CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9D
b252b2x2ZXJOb2RlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbnZvbHZlck5vZGU6OkNvbnZv
bHZlck5vZGUpOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vQ29udm9sdmVyTm9kZS5oOgor
ICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vRGVmYXVsdEF1ZGlvRGVzdGluYXRpb25Ob2RlLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkRlZmF1bHRBdWRpb0Rlc3RpbmF0aW9uTm9kZTo6RGVmYXVs
dEF1ZGlvRGVzdGluYXRpb25Ob2RlKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL0RlZmF1
bHRBdWRpb0Rlc3RpbmF0aW9uTm9kZS5oOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vRGVs
YXlOb2RlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRlbGF5Tm9kZTo6RGVsYXlOb2RlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkRlbGF5Tm9kZTo6Y3JlYXRlKToKKyAgICAgICAgKiBNb2R1bGVzL3dl
YmF1ZGlvL0RlbGF5Tm9kZS5oOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vRGVsYXlQcm9j
ZXNzb3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGVsYXlQcm9jZXNzb3I6OkRlbGF5UHJvY2Vz
c29yKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL0RlbGF5UHJvY2Vzc29yLmg6CisgICAg
ICAgICogTW9kdWxlcy93ZWJhdWRpby9EaXN0YW5jZU1vZGVsVHlwZS5oOiBDb3BpZWQgZnJvbSBT
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL09mZmxpbmVBdWRpb0NvbnRleHQuaWRsLgor
ICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vRGlzdGFuY2VNb2RlbFR5cGUuaWRsOiBDb3BpZWQg
ZnJvbSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL09mZmxpbmVBdWRpb0NvbnRleHQu
aWRsLgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vRHluYW1pY3NDb21wcmVzc29yTm9kZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpEeW5hbWljc0NvbXByZXNzb3JOb2RlOjpEeW5hbWljc0Nv
bXByZXNzb3JOb2RlKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL0R5bmFtaWNzQ29tcHJl
c3Nvck5vZGUuaDoKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL0dhaW5Ob2RlLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkdhaW5Ob2RlOjpHYWluTm9kZSk6CisgICAgICAgICogTW9kdWxlcy93
ZWJhdWRpby9HYWluTm9kZS5oOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vTWVkaWFFbGVt
ZW50QXVkaW9Tb3VyY2VOb2RlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhRWxlbWVudEF1
ZGlvU291cmNlTm9kZTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhRWxlbWVudEF1
ZGlvU291cmNlTm9kZTo6TWVkaWFFbGVtZW50QXVkaW9Tb3VyY2VOb2RlKToKKyAgICAgICAgKFdl
YkNvcmU6Ok1lZGlhRWxlbWVudEF1ZGlvU291cmNlTm9kZTo6c2V0Rm9ybWF0KToKKyAgICAgICAg
KiBNb2R1bGVzL3dlYmF1ZGlvL01lZGlhRWxlbWVudEF1ZGlvU291cmNlTm9kZS5oOgorICAgICAg
ICAqIE1vZHVsZXMvd2ViYXVkaW8vTWVkaWFTdHJlYW1BdWRpb0Rlc3RpbmF0aW9uTm9kZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbUF1ZGlvRGVzdGluYXRpb25Ob2RlOjpjcmVh
dGUpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTdHJlYW1BdWRpb0Rlc3RpbmF0aW9uTm9kZTo6
TWVkaWFTdHJlYW1BdWRpb0Rlc3RpbmF0aW9uTm9kZSk6CisgICAgICAgICogTW9kdWxlcy93ZWJh
dWRpby9NZWRpYVN0cmVhbUF1ZGlvRGVzdGluYXRpb25Ob2RlLmg6CisgICAgICAgICogTW9kdWxl
cy93ZWJhdWRpby9NZWRpYVN0cmVhbUF1ZGlvU291cmNlTm9kZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpNZWRpYVN0cmVhbUF1ZGlvU291cmNlTm9kZTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNv
cmU6Ok1lZGlhU3RyZWFtQXVkaW9Tb3VyY2VOb2RlOjpNZWRpYVN0cmVhbUF1ZGlvU291cmNlTm9k
ZSk6CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9NZWRpYVN0cmVhbUF1ZGlvU291cmNlTm9k
ZS5oOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vT2ZmbGluZUF1ZGlvQ29udGV4dC5pZGw6
CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9PZmZsaW5lQXVkaW9EZXN0aW5hdGlvbk5vZGUu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6T2ZmbGluZUF1ZGlvRGVzdGluYXRpb25Ob2RlOjpPZmZs
aW5lQXVkaW9EZXN0aW5hdGlvbk5vZGUpOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vT2Zm
bGluZUF1ZGlvRGVzdGluYXRpb25Ob2RlLmg6CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9P
c2NpbGxhdG9yTm9kZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpPc2NpbGxhdG9yTm9kZTo6Y3Jl
YXRlKToKKyAgICAgICAgKFdlYkNvcmU6Ok9zY2lsbGF0b3JOb2RlOjpPc2NpbGxhdG9yTm9kZSk6
CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9Pc2NpbGxhdG9yTm9kZS5oOgorICAgICAgICAq
IE1vZHVsZXMvd2ViYXVkaW8vUGFubmVyTm9kZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQYW5u
ZXJOb2RlQmFzZTo6UGFubmVyTm9kZUJhc2UpOgorICAgICAgICAoV2ViQ29yZTo6UGFubmVyTm9k
ZTo6UGFubmVyTm9kZSk6CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9QYW5uZXJOb2RlLmg6
CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9QYW5uZXJOb2RlLmlkbDoKKyAgICAgICAgKiBN
b2R1bGVzL3dlYmF1ZGlvL1Bhbm5pbmdNb2RlbFR5cGUuaDogQ29waWVkIGZyb20gU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJhdWRpby9PZmZsaW5lQXVkaW9Db250ZXh0LmlkbC4KKyAgICAgICAg
KiBNb2R1bGVzL3dlYmF1ZGlvL1Bhbm5pbmdNb2RlbFR5cGUuaWRsOiBDb3BpZWQgZnJvbSBTb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL09mZmxpbmVBdWRpb0NvbnRleHQuaWRsLgorICAg
ICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vU2NyaXB0UHJvY2Vzc29yTm9kZS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpTY3JpcHRQcm9jZXNzb3JOb2RlOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29y
ZTo6U2NyaXB0UHJvY2Vzc29yTm9kZTo6U2NyaXB0UHJvY2Vzc29yTm9kZSk6CisgICAgICAgICog
TW9kdWxlcy93ZWJhdWRpby9TY3JpcHRQcm9jZXNzb3JOb2RlLmg6CisgICAgICAgICogTW9kdWxl
cy93ZWJhdWRpby9XYXZlU2hhcGVyTm9kZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXYXZlU2hh
cGVyTm9kZTo6V2F2ZVNoYXBlck5vZGUpOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vV2F2
ZVNoYXBlck5vZGUuaDoKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL1dlYktpdEF1ZGlvQ29u
dGV4dC5jcHA6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVk
aW9Db250ZXh0LmNwcC4KKyAgICAgICAgKFdlYkNvcmU6OldlYktpdEF1ZGlvQ29udGV4dDo6aXNT
YW1wbGVSYXRlUmFuZ2VHb29kKToKKyAgICAgICAgKFdlYkNvcmU6OldlYktpdEF1ZGlvQ29udGV4
dDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OldlYktpdEF1ZGlvQ29udGV4dDo6V2ViS2l0
QXVkaW9Db250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OldlYktpdEF1ZGlvQ29udGV4dDo6Y29u
c3RydWN0Q29tbW9uKToKKyAgICAgICAgKFdlYkNvcmU6OldlYktpdEF1ZGlvQ29udGV4dDo6fldl
YktpdEF1ZGlvQ29udGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJLaXRBdWRpb0NvbnRleHQ6
OmxhenlJbml0aWFsaXplKToKKyAgICAgICAgKFdlYkNvcmU6OldlYktpdEF1ZGlvQ29udGV4dDo6
Y2xlYXIpOgorICAgICAgICAoV2ViQ29yZTo6V2ViS2l0QXVkaW9Db250ZXh0Ojp1bmluaXRpYWxp
emUpOgorICAgICAgICAoV2ViQ29yZTo6V2ViS2l0QXVkaW9Db250ZXh0Ojppc0luaXRpYWxpemVk
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OldlYktpdEF1ZGlvQ29udGV4dDo6YWRkUmVhY3Rp
b24pOgorICAgICAgICAoV2ViQ29yZTo6V2ViS2l0QXVkaW9Db250ZXh0OjpzZXRTdGF0ZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpXZWJLaXRBdWRpb0NvbnRleHQ6OnN0b3ApOgorICAgICAgICAoV2Vi
Q29yZTo6V2ViS2l0QXVkaW9Db250ZXh0OjpzdXNwZW5kKToKKyAgICAgICAgKFdlYkNvcmU6Oldl
YktpdEF1ZGlvQ29udGV4dDo6cmVzdW1lKToKKyAgICAgICAgKFdlYkNvcmU6OldlYktpdEF1ZGlv
Q29udGV4dDo6YWN0aXZlRE9NT2JqZWN0TmFtZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpX
ZWJLaXRBdWRpb0NvbnRleHQ6Omhvc3RpbmdEb2N1bWVudElkZW50aWZpZXIgY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6V2ViS2l0QXVkaW9Db250ZXh0Ojppc1N1c3BlbmRlZCBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpXZWJLaXRBdWRpb0NvbnRleHQ6OnZpc2liaWxpdHlTdGF0ZUNoYW5n
ZWQpOgorICAgICAgICAoV2ViQ29yZTo6V2ViS2l0QXVkaW9Db250ZXh0Ojp3b3VsZFRhaW50T3Jp
Z2luIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OldlYktpdEF1ZGlvQ29udGV4dDo6Y3JlYXRl
QnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OldlYktpdEF1ZGlvQ29udGV4dDo6ZGVjb2RlQXVk
aW9EYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OldlYktpdEF1ZGlvQ29udGV4dDo6Y3JlYXRlQnVm
ZmVyU291cmNlKToKKyAgICAgICAgKFdlYkNvcmU6OldlYktpdEF1ZGlvQ29udGV4dDo6Y3JlYXRl
TWVkaWFFbGVtZW50U291cmNlKToKKyAgICAgICAgKFdlYkNvcmU6OldlYktpdEF1ZGlvQ29udGV4
dDo6Y3JlYXRlTWVkaWFTdHJlYW1Tb3VyY2UpOgorICAgICAgICAoV2ViQ29yZTo6V2ViS2l0QXVk
aW9Db250ZXh0OjpjcmVhdGVNZWRpYVN0cmVhbURlc3RpbmF0aW9uKToKKyAgICAgICAgKFdlYkNv
cmU6OldlYktpdEF1ZGlvQ29udGV4dDo6Y3JlYXRlU2NyaXB0UHJvY2Vzc29yKToKKyAgICAgICAg
KFdlYkNvcmU6OldlYktpdEF1ZGlvQ29udGV4dDo6Y3JlYXRlQmlxdWFkRmlsdGVyKToKKyAgICAg
ICAgKFdlYkNvcmU6OldlYktpdEF1ZGlvQ29udGV4dDo6Y3JlYXRlV2F2ZVNoYXBlcik6CisgICAg
ICAgIChXZWJDb3JlOjpXZWJLaXRBdWRpb0NvbnRleHQ6OmNyZWF0ZVBhbm5lcik6CisgICAgICAg
IChXZWJDb3JlOjpXZWJLaXRBdWRpb0NvbnRleHQ6OmNyZWF0ZUNvbnZvbHZlcik6CisgICAgICAg
IChXZWJDb3JlOjpXZWJLaXRBdWRpb0NvbnRleHQ6OmNyZWF0ZUR5bmFtaWNzQ29tcHJlc3Nvcik6
CisgICAgICAgIChXZWJDb3JlOjpXZWJLaXRBdWRpb0NvbnRleHQ6OmNyZWF0ZUFuYWx5c2VyKToK
KyAgICAgICAgKFdlYkNvcmU6OldlYktpdEF1ZGlvQ29udGV4dDo6Y3JlYXRlR2Fpbik6CisgICAg
ICAgIChXZWJDb3JlOjpXZWJLaXRBdWRpb0NvbnRleHQ6OmNyZWF0ZURlbGF5KToKKyAgICAgICAg
KFdlYkNvcmU6OldlYktpdEF1ZGlvQ29udGV4dDo6Y3JlYXRlQ2hhbm5lbFNwbGl0dGVyKToKKyAg
ICAgICAgKFdlYkNvcmU6OldlYktpdEF1ZGlvQ29udGV4dDo6Y3JlYXRlQ2hhbm5lbE1lcmdlcik6
CisgICAgICAgIChXZWJDb3JlOjpXZWJLaXRBdWRpb0NvbnRleHQ6OmNyZWF0ZU9zY2lsbGF0b3Ip
OgorICAgICAgICAoV2ViQ29yZTo6V2ViS2l0QXVkaW9Db250ZXh0OjpjcmVhdGVQZXJpb2RpY1dh
dmUpOgorICAgICAgICAoV2ViQ29yZTo6V2ViS2l0QXVkaW9Db250ZXh0Ojpub3RpZnlOb2RlRmlu
aXNoZWRQcm9jZXNzaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OldlYktpdEF1ZGlvQ29udGV4dDo6
ZGVyZWZGaW5pc2hlZFNvdXJjZU5vZGVzKToKKyAgICAgICAgKFdlYkNvcmU6OldlYktpdEF1ZGlv
Q29udGV4dDo6cmVmTm9kZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJLaXRBdWRpb0NvbnRleHQ6
OmRlcmVmTm9kZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJLaXRBdWRpb0NvbnRleHQ6OmRlcmVm
VW5maW5pc2hlZFNvdXJjZU5vZGVzKToKKyAgICAgICAgKFdlYkNvcmU6OldlYktpdEF1ZGlvQ29u
dGV4dDo6bG9jayk6CisgICAgICAgIChXZWJDb3JlOjpXZWJLaXRBdWRpb0NvbnRleHQ6OnRyeUxv
Y2spOgorICAgICAgICAoV2ViQ29yZTo6V2ViS2l0QXVkaW9Db250ZXh0Ojp1bmxvY2spOgorICAg
ICAgICAoV2ViQ29yZTo6V2ViS2l0QXVkaW9Db250ZXh0Ojppc0F1ZGlvVGhyZWFkIGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6OldlYktpdEF1ZGlvQ29udGV4dDo6aXNHcmFwaE93bmVyIGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6OldlYktpdEF1ZGlvQ29udGV4dDo6YWRkRGVmZXJyZWRGaW5p
c2hEZXJlZik6CisgICAgICAgIChXZWJDb3JlOjpXZWJLaXRBdWRpb0NvbnRleHQ6OmhhbmRsZVBy
ZVJlbmRlclRhc2tzKToKKyAgICAgICAgKFdlYkNvcmU6OldlYktpdEF1ZGlvQ29udGV4dDo6aGFu
ZGxlUG9zdFJlbmRlclRhc2tzKToKKyAgICAgICAgKFdlYkNvcmU6OldlYktpdEF1ZGlvQ29udGV4
dDo6aGFuZGxlRGVmZXJyZWRGaW5pc2hEZXJlZnMpOgorICAgICAgICAoV2ViQ29yZTo6V2ViS2l0
QXVkaW9Db250ZXh0OjptYXJrRm9yRGVsZXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6V2ViS2l0
QXVkaW9Db250ZXh0OjpzY2hlZHVsZU5vZGVEZWxldGlvbik6CisgICAgICAgIChXZWJDb3JlOjpX
ZWJLaXRBdWRpb0NvbnRleHQ6OmRlbGV0ZU1hcmtlZE5vZGVzKToKKyAgICAgICAgKFdlYkNvcmU6
OldlYktpdEF1ZGlvQ29udGV4dDo6bWFya1N1bW1pbmdKdW5jdGlvbkRpcnR5KToKKyAgICAgICAg
KFdlYkNvcmU6OldlYktpdEF1ZGlvQ29udGV4dDo6cmVtb3ZlTWFya2VkU3VtbWluZ0p1bmN0aW9u
KToKKyAgICAgICAgKFdlYkNvcmU6OldlYktpdEF1ZGlvQ29udGV4dDo6bWFya0F1ZGlvTm9kZU91
dHB1dERpcnR5KToKKyAgICAgICAgKFdlYkNvcmU6OldlYktpdEF1ZGlvQ29udGV4dDo6aGFuZGxl
RGlydHlBdWRpb1N1bW1pbmdKdW5jdGlvbnMpOgorICAgICAgICAoV2ViQ29yZTo6V2ViS2l0QXVk
aW9Db250ZXh0OjpoYW5kbGVEaXJ0eUF1ZGlvTm9kZU91dHB1dHMpOgorICAgICAgICAoV2ViQ29y
ZTo6V2ViS2l0QXVkaW9Db250ZXh0OjphZGRBdXRvbWF0aWNQdWxsTm9kZSk6CisgICAgICAgIChX
ZWJDb3JlOjpXZWJLaXRBdWRpb0NvbnRleHQ6OnJlbW92ZUF1dG9tYXRpY1B1bGxOb2RlKToKKyAg
ICAgICAgKFdlYkNvcmU6OldlYktpdEF1ZGlvQ29udGV4dDo6dXBkYXRlQXV0b21hdGljUHVsbE5v
ZGVzKToKKyAgICAgICAgKFdlYkNvcmU6OldlYktpdEF1ZGlvQ29udGV4dDo6cHJvY2Vzc0F1dG9t
YXRpY1B1bGxOb2Rlcyk6CisgICAgICAgIChXZWJDb3JlOjpXZWJLaXRBdWRpb0NvbnRleHQ6Om5v
ZGVXaWxsQmVnaW5QbGF5YmFjayk6CisgICAgICAgIChXZWJDb3JlOjpzaG91bGREb2N1bWVudEFs
bG93V2ViQXVkaW9Ub0F1dG9QbGF5KToKKyAgICAgICAgKFdlYkNvcmU6OldlYktpdEF1ZGlvQ29u
dGV4dDo6d2lsbEJlZ2luUGxheWJhY2spOgorICAgICAgICAoV2ViQ29yZTo6V2ViS2l0QXVkaW9D
b250ZXh0Ojp3aWxsUGF1c2VQbGF5YmFjayk6CisgICAgICAgIChXZWJDb3JlOjpXZWJLaXRBdWRp
b0NvbnRleHQ6OnN0YXJ0UmVuZGVyaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OldlYktpdEF1ZGlv
Q29udGV4dDo6bWVkaWFDYW5TdGFydCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJLaXRBdWRpb0Nv
bnRleHQ6Om1lZGlhU3RhdGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6V2ViS2l0QXVkaW9D
b250ZXh0OjpwYWdlTXV0ZWRTdGF0ZURpZENoYW5nZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJL
aXRBdWRpb0NvbnRleHQ6OmlzUGxheWluZ0F1ZGlvRGlkQ2hhbmdlKToKKyAgICAgICAgKFdlYkNv
cmU6OldlYktpdEF1ZGlvQ29udGV4dDo6ZmluaXNoZWRSZW5kZXJpbmcpOgorICAgICAgICAoV2Vi
Q29yZTo6V2ViS2l0QXVkaW9Db250ZXh0OjpkaXNwYXRjaEV2ZW50KToKKyAgICAgICAgKFdlYkNv
cmU6OldlYktpdEF1ZGlvQ29udGV4dDo6aW5jcmVtZW50QWN0aXZlU291cmNlQ291bnQpOgorICAg
ICAgICAoV2ViQ29yZTo6V2ViS2l0QXVkaW9Db250ZXh0OjpkZWNyZW1lbnRBY3RpdmVTb3VyY2VD
b3VudCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJLaXRBdWRpb0NvbnRleHQ6OnN1c3BlbmRSZW5k
ZXJpbmcpOgorICAgICAgICAoV2ViQ29yZTo6V2ViS2l0QXVkaW9Db250ZXh0OjpyZXN1bWVSZW5k
ZXJpbmcpOgorICAgICAgICAoV2ViQ29yZTo6V2ViS2l0QXVkaW9Db250ZXh0OjpjbG9zZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpXZWJLaXRBdWRpb0NvbnRleHQ6OnN1c3BlbmRQbGF5YmFjayk6Cisg
ICAgICAgIChXZWJDb3JlOjpXZWJLaXRBdWRpb0NvbnRleHQ6Om1heVJlc3VtZVBsYXliYWNrKToK
KyAgICAgICAgKFdlYkNvcmU6OldlYktpdEF1ZGlvQ29udGV4dDo6cG9zdFRhc2spOgorICAgICAg
ICAoV2ViQ29yZTo6V2ViS2l0QXVkaW9Db250ZXh0OjpvcmlnaW4gY29uc3QpOgorICAgICAgICAo
V2ViQ29yZTo6V2ViS2l0QXVkaW9Db250ZXh0OjphZGRDb25zb2xlTWVzc2FnZSk6CisgICAgICAg
IChXZWJDb3JlOjpXZWJLaXRBdWRpb0NvbnRleHQ6OmNsZWFyUGVuZGluZ0FjdGl2aXR5KToKKyAg
ICAgICAgKFdlYkNvcmU6OldlYktpdEF1ZGlvQ29udGV4dDo6bWFrZVBlbmRpbmdBY3Rpdml0eSk6
CisgICAgICAgIChXZWJDb3JlOjpXZWJLaXRBdWRpb0NvbnRleHQ6OmxvZ0NoYW5uZWwgY29uc3Qp
OgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vV2ViS2l0QXVkaW9Db250ZXh0Lmg6IENvcGll
ZCBmcm9tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0LmguCisg
ICAgICAgIChXZWJDb3JlOjpXZWJLaXRBdWRpb0NvbnRleHQ6OmRlc3RpbmF0aW9uKToKKyAgICAg
ICAgKFdlYkNvcmU6OldlYktpdEF1ZGlvQ29udGV4dDo6YWN0aXZlU291cmNlQ291bnQgY29uc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6V2ViS2l0QXVkaW9Db250ZXh0OjpsaXN0ZW5lcik6CisgICAg
ICAgIChXZWJDb3JlOjpXZWJLaXRBdWRpb0NvbnRleHQ6OmlzQ2xvc2VkIGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OldlYktpdEF1ZGlvQ29udGV4dDo6Y29ubmVjdGlvbkNvdW50IGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6OldlYktpdEF1ZGlvQ29udGV4dDo6YXVkaW9UaHJlYWQgY29uc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6V2ViS2l0QXVkaW9Db250ZXh0OjptYXhOdW1iZXJPZkNoYW5u
ZWxzKToKKyAgICAgICAgKFdlYkNvcmU6OldlYktpdEF1ZGlvQ29udGV4dDo6dXNlckdlc3R1cmVS
ZXF1aXJlZEZvckF1ZGlvU3RhcnQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6V2ViS2l0QXVk
aW9Db250ZXh0OjpwYWdlQ29uc2VudFJlcXVpcmVkRm9yQXVkaW9TdGFydCBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpXZWJLaXRBdWRpb0NvbnRleHQ6OnN0YXRlIGNvbnN0KToKKyAgICAgICAg
KGlzVHlwZSk6CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9XZWJLaXRBdWRpb0NvbnRleHQu
aWRsOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQ29u
dGV4dC5pZGwuCisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9XZWJLaXRBdWRpb1Bhbm5lck5v
ZGUuY3BwOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1Bhbm5l
ck5vZGUuY3BwLgorICAgICAgICAoV2ViQ29yZTo6Zml4TkFOcyk6CisgICAgICAgIChXZWJDb3Jl
OjpXZWJLaXRBdWRpb1Bhbm5lck5vZGU6OldlYktpdEF1ZGlvUGFubmVyTm9kZSk6CisgICAgICAg
IChXZWJDb3JlOjpXZWJLaXRBdWRpb1Bhbm5lck5vZGU6On5XZWJLaXRBdWRpb1Bhbm5lck5vZGUp
OgorICAgICAgICAoV2ViQ29yZTo6V2ViS2l0QXVkaW9QYW5uZXJOb2RlOjpwdWxsSW5wdXRzKToK
KyAgICAgICAgKFdlYkNvcmU6OldlYktpdEF1ZGlvUGFubmVyTm9kZTo6cHJvY2Vzcyk6CisgICAg
ICAgIChXZWJDb3JlOjpXZWJLaXRBdWRpb1Bhbm5lck5vZGU6OnJlc2V0KToKKyAgICAgICAgKFdl
YkNvcmU6OldlYktpdEF1ZGlvUGFubmVyTm9kZTo6aW5pdGlhbGl6ZSk6CisgICAgICAgIChXZWJD
b3JlOjpXZWJLaXRBdWRpb1Bhbm5lck5vZGU6OnVuaW5pdGlhbGl6ZSk6CisgICAgICAgIChXZWJD
b3JlOjpXZWJLaXRBdWRpb1Bhbm5lck5vZGU6Omxpc3RlbmVyKToKKyAgICAgICAgKFdlYkNvcmU6
OldlYktpdEF1ZGlvUGFubmVyTm9kZTo6c2V0UGFubmluZ01vZGVsKToKKyAgICAgICAgKFdlYkNv
cmU6OldlYktpdEF1ZGlvUGFubmVyTm9kZTo6ZGlzdGFuY2VNb2RlbCBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpXZWJLaXRBdWRpb1Bhbm5lck5vZGU6OnNldERpc3RhbmNlTW9kZWwpOgorICAg
ICAgICAoV2ViQ29yZTo6V2ViS2l0QXVkaW9QYW5uZXJOb2RlOjpnZXRBemltdXRoRWxldmF0aW9u
KToKKyAgICAgICAgKFdlYkNvcmU6OldlYktpdEF1ZGlvUGFubmVyTm9kZTo6ZG9wcGxlclJhdGUp
OgorICAgICAgICAoV2ViQ29yZTo6V2ViS2l0QXVkaW9QYW5uZXJOb2RlOjpkaXN0YW5jZUNvbmVH
YWluKToKKyAgICAgICAgKFdlYkNvcmU6OldlYktpdEF1ZGlvUGFubmVyTm9kZTo6bm90aWZ5QXVk
aW9Tb3VyY2VzQ29ubmVjdGVkVG9Ob2RlKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL1dl
YktpdEF1ZGlvUGFubmVyTm9kZS5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmF1ZGlvL1Bhbm5lck5vZGUuaC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL1dlYktp
dEF1ZGlvUGFubmVyTm9kZS5pZGw6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViYXVkaW8vUGFubmVyTm9kZS5pZGwuCisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9XZWJL
aXRPZmZsaW5lQXVkaW9Db250ZXh0LmNwcDogQ29waWVkIGZyb20gU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJhdWRpby9EZWxheU5vZGUuY3BwLgorICAgICAgICAoV2ViQ29yZTo6V2ViS2l0T2Zm
bGluZUF1ZGlvQ29udGV4dDo6V2ViS2l0T2ZmbGluZUF1ZGlvQ29udGV4dCk6CisgICAgICAgIChX
ZWJDb3JlOjpXZWJLaXRPZmZsaW5lQXVkaW9Db250ZXh0OjpjcmVhdGUpOgorICAgICAgICAqIE1v
ZHVsZXMvd2ViYXVkaW8vV2ViS2l0T2ZmbGluZUF1ZGlvQ29udGV4dC5oOiBDb3BpZWQgZnJvbSBT
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0RlbGF5Tm9kZS5oLgorICAgICAgICAqIE1v
ZHVsZXMvd2ViYXVkaW8vV2ViS2l0T2ZmbGluZUF1ZGlvQ29udGV4dC5pZGw6IENvcGllZCBmcm9t
IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vT2ZmbGluZUF1ZGlvQ29udGV4dC5pZGwu
CisgICAgICAgICogU291cmNlcy50eHQ6CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qOgorICAgICAgICAqIGJpbmRpbmdzL2pzL1dlYkNvcmVCdWlsdGluTmFtZXMu
aDoKKyAgICAgICAgKiBkb20vRXZlbnRUYXJnZXRGYWN0b3J5LmluOgorICAgICAgICAqIHBhZ2Uv
U2V0dGluZ3MueWFtbDoKKyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFscy5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpJbnRlcm5hbHM6OnNldEF1ZGlvQ29udGV4dFJlc3RyaWN0aW9ucyk6CisgICAg
ICAgICogdGVzdGluZy9JbnRlcm5hbHMuaDoKKyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFscy5p
ZGw6CisKIDIwMjAtMDYtMTcgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAg
ICAgICBVbnJldmlld2VkIGF0dGVtcHQgdG8gZml4IGludGVybmFsIG1hY09TIGJ1aWxkIGFmdGVy
IHIyNjMxNTcuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9X
ZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDk4ODczODE3NDljOGNiNDAxNjNlNjdkYTA0MDg4MWFlNmY2
M2Q4NjEuLmUyMjNkYWE3Njc4ZTc4YmVmZjE4ZDQ3MjdlZWMzOGFhYWFjY2E0NmEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMTUgQEAKKzIwMjAtMDYtMTcgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxl
LmNvbT4KKworICAgICAgICBBZGQgZXhwZXJpbWVudGFsIGZlYXR1cmUgZmxhZyBmb3IgbW9kZXJu
ICYgdW5wcmVmaXhlZCBXZWJBdWRpbyBBUEkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTIxMzI2OAorCisgICAgICAgIFJldmlld2VkIGJ5IEplciBOb2Js
ZS4KKworICAgICAgICBBZGQgZXhwZXJpbWVudGFsIGZlYXR1cmUgZmxhZyBmb3IgbW9kZXJuICYg
dW5wcmVmaXhlZCBXZWJBdWRpbyBBUEksCisgICAgICAgIG9mZiBieSBkZWZhdWx0LgorCisgICAg
ICAgICogU2hhcmVkL1dlYlByZWZlcmVuY2VzLnlhbWw6CisKIDIwMjAtMDYtMTcgIERhcnJ5bCBQ
b2d1ZSAgPGRhcnJ5bEBkcG9ndWUuY2E+CiAKICAgICAgICAgSW5kZXhlZERCOiBTdXBwb3J0IElE
QkZhY3RvcnkgZGF0YWJhc2VzIG1ldGhvZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ01h
a2VMaXN0cy50eHQgYi9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAppbmRleCA5NzU5NDg5
NWQ4YzdhYzI4MTE4Yzk3YzRmMTlhZTViNmFiODkxYzllLi4zOTlhNmJkM2ZkMDk2YzUxMTc4ODFj
OTI1NzY5MTUwNTEzM2MzMDExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3Rz
LnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dApAQCAtNDMzLDYgKzQzMyw3
IEBAIHNldChXZWJDb3JlX05PTl9TVkdfSURMX0ZJTEVTCiAgICAgTW9kdWxlcy93ZWJhdWRpby9B
dWRpb0J1ZmZlckNhbGxiYWNrLmlkbAogICAgIE1vZHVsZXMvd2ViYXVkaW8vQXVkaW9CdWZmZXJT
b3VyY2VOb2RlLmlkbAogICAgIE1vZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0LmlkbAorICAg
IE1vZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0U3RhdGUuaWRsCiAgICAgTW9kdWxlcy93ZWJh
dWRpby9BdWRpb0Rlc3RpbmF0aW9uTm9kZS5pZGwKICAgICBNb2R1bGVzL3dlYmF1ZGlvL0F1ZGlv
TGlzdGVuZXIuaWRsCiAgICAgTW9kdWxlcy93ZWJhdWRpby9BdWRpb05vZGUuaWRsCkBAIC00NDMs
NiArNDQ0LDcgQEAgc2V0KFdlYkNvcmVfTk9OX1NWR19JRExfRklMRVMKICAgICBNb2R1bGVzL3dl
YmF1ZGlvL0NoYW5uZWxTcGxpdHRlck5vZGUuaWRsCiAgICAgTW9kdWxlcy93ZWJhdWRpby9Db252
b2x2ZXJOb2RlLmlkbAogICAgIE1vZHVsZXMvd2ViYXVkaW8vRGVsYXlOb2RlLmlkbAorICAgIE1v
ZHVsZXMvd2ViYXVkaW8vRGlzdGFuY2VNb2RlbFR5cGUuaWRsCiAgICAgTW9kdWxlcy93ZWJhdWRp
by9EeW5hbWljc0NvbXByZXNzb3JOb2RlLmlkbAogICAgIE1vZHVsZXMvd2ViYXVkaW8vR2Fpbk5v
ZGUuaWRsCiAgICAgTW9kdWxlcy93ZWJhdWRpby9NZWRpYUVsZW1lbnRBdWRpb1NvdXJjZU5vZGUu
aWRsCkBAIC00NTIsOSArNDU0LDEzIEBAIHNldChXZWJDb3JlX05PTl9TVkdfSURMX0ZJTEVTCiAg
ICAgTW9kdWxlcy93ZWJhdWRpby9PZmZsaW5lQXVkaW9Db250ZXh0LmlkbAogICAgIE1vZHVsZXMv
d2ViYXVkaW8vT3NjaWxsYXRvck5vZGUuaWRsCiAgICAgTW9kdWxlcy93ZWJhdWRpby9QYW5uZXJO
b2RlLmlkbAorICAgIE1vZHVsZXMvd2ViYXVkaW8vUGFubmluZ01vZGVsVHlwZS5pZGwKICAgICBN
b2R1bGVzL3dlYmF1ZGlvL1BlcmlvZGljV2F2ZS5pZGwKICAgICBNb2R1bGVzL3dlYmF1ZGlvL1Nj
cmlwdFByb2Nlc3Nvck5vZGUuaWRsCiAgICAgTW9kdWxlcy93ZWJhdWRpby9XYXZlU2hhcGVyTm9k
ZS5pZGwKKyAgICBNb2R1bGVzL3dlYmF1ZGlvL1dlYktpdEF1ZGlvQ29udGV4dC5pZGwKKyAgICBN
b2R1bGVzL3dlYmF1ZGlvL1dlYktpdEF1ZGlvUGFubmVyTm9kZS5pZGwKKyAgICBNb2R1bGVzL3dl
YmF1ZGlvL1dlYktpdE9mZmxpbmVBdWRpb0NvbnRleHQuaWRsCiAKICAgICBNb2R1bGVzL3dlYmF1
dGhuL0F0dGVzdGF0aW9uQ29udmV5YW5jZVByZWZlcmVuY2UuaWRsCiAgICAgTW9kdWxlcy93ZWJh
dXRobi9BdXRoZW50aWNhdGlvbkV4dGVuc2lvbnNDbGllbnRJbnB1dHMuaWRsCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy1pbnB1dC54Y2ZpbGVsaXN0IGIvU291cmNl
L1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMtaW5wdXQueGNmaWxlbGlzdAppbmRleCA2YTdhYTdkMTRl
YmI0MzdkNzQxZWMyZWY4NTMzNzc1ZDM0NGQ0NjU0Li5mN2Q2NGMxOTNkMGU3ZGYyODE2NWJkZDc0
YTQwZDNmOTBlNmE4MjEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNl
cy1pbnB1dC54Y2ZpbGVsaXN0CisrKyBiL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLWlu
cHV0LnhjZmlsZWxpc3QKQEAgLTMwMCw2ICszMDAsNyBAQCAkKFBST0pFQ1RfRElSKS9Nb2R1bGVz
L3dlYmF1ZGlvL0F1ZGlvQnVmZmVyLmlkbAogJChQUk9KRUNUX0RJUikvTW9kdWxlcy93ZWJhdWRp
by9BdWRpb0J1ZmZlckNhbGxiYWNrLmlkbAogJChQUk9KRUNUX0RJUikvTW9kdWxlcy93ZWJhdWRp
by9BdWRpb0J1ZmZlclNvdXJjZU5vZGUuaWRsCiAkKFBST0pFQ1RfRElSKS9Nb2R1bGVzL3dlYmF1
ZGlvL0F1ZGlvQ29udGV4dC5pZGwKKyQoUFJPSkVDVF9ESVIpL01vZHVsZXMvd2ViYXVkaW8vQXVk
aW9Db250ZXh0U3RhdGUuaWRsCiAkKFBST0pFQ1RfRElSKS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlv
RGVzdGluYXRpb25Ob2RlLmlkbAogJChQUk9KRUNUX0RJUikvTW9kdWxlcy93ZWJhdWRpby9BdWRp
b0xpc3RlbmVyLmlkbAogJChQUk9KRUNUX0RJUikvTW9kdWxlcy93ZWJhdWRpby9BdWRpb05vZGUu
aWRsCkBAIC0zMTAsNiArMzExLDcgQEAgJChQUk9KRUNUX0RJUikvTW9kdWxlcy93ZWJhdWRpby9D
aGFubmVsTWVyZ2VyTm9kZS5pZGwKICQoUFJPSkVDVF9ESVIpL01vZHVsZXMvd2ViYXVkaW8vQ2hh
bm5lbFNwbGl0dGVyTm9kZS5pZGwKICQoUFJPSkVDVF9ESVIpL01vZHVsZXMvd2ViYXVkaW8vQ29u
dm9sdmVyTm9kZS5pZGwKICQoUFJPSkVDVF9ESVIpL01vZHVsZXMvd2ViYXVkaW8vRGVsYXlOb2Rl
LmlkbAorJChQUk9KRUNUX0RJUikvTW9kdWxlcy93ZWJhdWRpby9EaXN0YW5jZU1vZGVsVHlwZS5p
ZGwKICQoUFJPSkVDVF9ESVIpL01vZHVsZXMvd2ViYXVkaW8vRHluYW1pY3NDb21wcmVzc29yTm9k
ZS5pZGwKICQoUFJPSkVDVF9ESVIpL01vZHVsZXMvd2ViYXVkaW8vR2Fpbk5vZGUuaWRsCiAkKFBS
T0pFQ1RfRElSKS9Nb2R1bGVzL3dlYmF1ZGlvL01lZGlhRWxlbWVudEF1ZGlvU291cmNlTm9kZS5p
ZGwKQEAgLTMxOSw5ICszMjEsMTMgQEAgJChQUk9KRUNUX0RJUikvTW9kdWxlcy93ZWJhdWRpby9P
ZmZsaW5lQXVkaW9Db21wbGV0aW9uRXZlbnQuaWRsCiAkKFBST0pFQ1RfRElSKS9Nb2R1bGVzL3dl
YmF1ZGlvL09mZmxpbmVBdWRpb0NvbnRleHQuaWRsCiAkKFBST0pFQ1RfRElSKS9Nb2R1bGVzL3dl
YmF1ZGlvL09zY2lsbGF0b3JOb2RlLmlkbAogJChQUk9KRUNUX0RJUikvTW9kdWxlcy93ZWJhdWRp
by9QYW5uZXJOb2RlLmlkbAorJChQUk9KRUNUX0RJUikvTW9kdWxlcy93ZWJhdWRpby9QYW5uaW5n
TW9kZWxUeXBlLmlkbAogJChQUk9KRUNUX0RJUikvTW9kdWxlcy93ZWJhdWRpby9QZXJpb2RpY1dh
dmUuaWRsCiAkKFBST0pFQ1RfRElSKS9Nb2R1bGVzL3dlYmF1ZGlvL1NjcmlwdFByb2Nlc3Nvck5v
ZGUuaWRsCiAkKFBST0pFQ1RfRElSKS9Nb2R1bGVzL3dlYmF1ZGlvL1dhdmVTaGFwZXJOb2RlLmlk
bAorJChQUk9KRUNUX0RJUikvTW9kdWxlcy93ZWJhdWRpby9XZWJLaXRBdWRpb0NvbnRleHQuaWRs
CiskKFBST0pFQ1RfRElSKS9Nb2R1bGVzL3dlYmF1ZGlvL1dlYktpdEF1ZGlvUGFubmVyTm9kZS5p
ZGwKKyQoUFJPSkVDVF9ESVIpL01vZHVsZXMvd2ViYXVkaW8vV2ViS2l0T2ZmbGluZUF1ZGlvQ29u
dGV4dC5pZGwKICQoUFJPSkVDVF9ESVIpL01vZHVsZXMvd2ViYXV0aG4vQXR0ZXN0YXRpb25Db252
ZXlhbmNlUHJlZmVyZW5jZS5pZGwKICQoUFJPSkVDVF9ESVIpL01vZHVsZXMvd2ViYXV0aG4vQXV0
aGVudGljYXRpb25FeHRlbnNpb25zQ2xpZW50SW5wdXRzLmlkbAogJChQUk9KRUNUX0RJUikvTW9k
dWxlcy93ZWJhdXRobi9BdXRoZW50aWNhdGlvbkV4dGVuc2lvbnNDbGllbnRPdXRwdXRzLmlkbApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxp
c3QgYi9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlzdAppbmRl
eCBhMTQzMzYyNTE0MDJmNjgzNmVjODgwNDhmM2UwY2JkOTE0MjZiMDE3Li5jYmM2NDhhZmY4NzJl
MTdjOGFlYjJmM2RjNmU5YmM2Yjc4YzA0NDkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9E
ZXJpdmVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlzdAorKysgYi9Tb3VyY2UvV2ViQ29yZS9EZXJp
dmVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlzdApAQCAtMTU1LDYgKzE1NSw4IEBAICQoQlVJTFRf
UFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTQXVkaW9Db25maWd1cmF0aW9u
LmNwcAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNBdWRp
b0NvbmZpZ3VyYXRpb24uaAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dl
YkNvcmUvSlNBdWRpb0NvbnRleHQuY3BwCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNv
dXJjZXMvV2ViQ29yZS9KU0F1ZGlvQ29udGV4dC5oCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVy
aXZlZFNvdXJjZXMvV2ViQ29yZS9KU0F1ZGlvQ29udGV4dFN0YXRlLmNwcAorJChCVUlMVF9QUk9E
VUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNBdWRpb0NvbnRleHRTdGF0ZS5oCiAk
KEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0F1ZGlvRGVzdGlu
YXRpb25Ob2RlLmNwcAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNv
cmUvSlNBdWRpb0Rlc3RpbmF0aW9uTm9kZS5oCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZl
ZFNvdXJjZXMvV2ViQ29yZS9KU0F1ZGlvTGlzdGVuZXIuY3BwCkBAIC00ODYsNiArNDg4LDggQEAg
JChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNEZXZpY2VPcmll
bnRhdGlvbk9yTW90aW9uRXZlbnQuY3AKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291
cmNlcy9XZWJDb3JlL0pTRGV2aWNlT3JpZW50YXRpb25Pck1vdGlvbkV2ZW50LmgKICQoQlVJTFRf
UFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTRGV2aWNlT3JpZW50YXRpb25P
ck1vdGlvblBlcm1pc3Npb25TdGF0ZS5jcHAKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVk
U291cmNlcy9XZWJDb3JlL0pTRGV2aWNlT3JpZW50YXRpb25Pck1vdGlvblBlcm1pc3Npb25TdGF0
ZS5oCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0Rpc3Rh
bmNlTW9kZWxUeXBlLmNwcAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dl
YkNvcmUvSlNEaXN0YW5jZU1vZGVsVHlwZS5oCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZl
ZFNvdXJjZXMvV2ViQ29yZS9KU0RvY3VtZW50LmNwcAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rl
cml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNEb2N1bWVudC5oCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikv
RGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0RvY3VtZW50QW5kRWxlbWVudEV2ZW50SGFuZGxlcnMu
Y3BwCkBAIC0xMjI0LDYgKzEyMjgsOCBAQCAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNv
dXJjZXMvV2ViQ29yZS9KU1BhaW50V29ya2xldEdsb2JhbFNjb3BlLmNwcAogJChCVUlMVF9QUk9E
VUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNQYWludFdvcmtsZXRHbG9iYWxTY29w
ZS5oCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU1Bhbm5l
ck5vZGUuY3BwCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9K
U1Bhbm5lck5vZGUuaAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNv
cmUvSlNQYW5uaW5nTW9kZWxUeXBlLmNwcAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRT
b3VyY2VzL1dlYkNvcmUvSlNQYW5uaW5nTW9kZWxUeXBlLmgKICQoQlVJTFRfUFJPRFVDVFNfRElS
KS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTUGFyZW50Tm9kZS5jcHAKICQoQlVJTFRfUFJPRFVD
VFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTUGFyZW50Tm9kZS5oCiAkKEJVSUxUX1BS
T0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU1BhdGgyRC5jcHAKQEAgLTIwNzgs
NiArMjA4NCwxMCBAQCAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29y
ZS9KU1dlYkdQVVRleHR1cmVWaWV3LmNwcAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRT
b3VyY2VzL1dlYkNvcmUvSlNXZWJHUFVUZXh0dXJlVmlldy5oCiAkKEJVSUxUX1BST0RVQ1RTX0RJ
UikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU1dlYktpdEFuaW1hdGlvbkV2ZW50LmNwcAogJChC
VUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNXZWJLaXRBbmltYXRp
b25FdmVudC5oCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9K
U1dlYktpdEF1ZGlvQ29udGV4dC5jcHAKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291
cmNlcy9XZWJDb3JlL0pTV2ViS2l0QXVkaW9Db250ZXh0LmgKKyQoQlVJTFRfUFJPRFVDVFNfRElS
KS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTV2ViS2l0QXVkaW9QYW5uZXJOb2RlLmNwcAorJChC
VUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNXZWJLaXRBdWRpb1Bh
bm5lck5vZGUuaAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUv
SlNXZWJLaXRDU1NNYXRyaXguY3BwCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJj
ZXMvV2ViQ29yZS9KU1dlYktpdENTU01hdHJpeC5oCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVy
aXZlZFNvdXJjZXMvV2ViQ29yZS9KU1dlYktpdENTU1ZpZXdwb3J0UnVsZS5jcHAKQEAgLTIwOTQs
NiArMjEwNCw4IEBAICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3Jl
L0pTV2ViS2l0TWVkaWFLZXlzLmNwcAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3Vy
Y2VzL1dlYkNvcmUvSlNXZWJLaXRNZWRpYUtleXMuaAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rl
cml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNXZWJLaXROYW1lc3BhY2UuY3BwCiAkKEJVSUxUX1BST0RV
Q1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU1dlYktpdE5hbWVzcGFjZS5oCiskKEJV
SUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU1dlYktpdE9mZmxpbmVB
dWRpb0NvbnRleHQuY3BwCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2Vi
Q29yZS9KU1dlYktpdE9mZmxpbmVBdWRpb0NvbnRleHQuaAogJChCVUlMVF9QUk9EVUNUU19ESVIp
L0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNXZWJLaXRQbGF5YmFja1RhcmdldEF2YWlsYWJpbGl0
eUV2ZW50LmNwcAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUv
SlNXZWJLaXRQbGF5YmFja1RhcmdldEF2YWlsYWJpbGl0eUV2ZW50LmgKICQoQlVJTFRfUFJPRFVD
VFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTV2ViS2l0UG9pbnQuY3BwCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtlIGIvU291cmNlL1dlYkNvcmUv
RGVyaXZlZFNvdXJjZXMubWFrZQppbmRleCBkMjY3MDg5ZTM4NzM3ZDkyNGY5NDY1Mjk5MGNhYjky
MTNjOThiZDI4Li5iMjdjNzljZTY2M2UyYzhiOGVhNDYwYWUwODFlYmYxZGRlNzAzM2JhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtlCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UKQEAgLTM4Myw2ICszODMsNyBAQCBKU19CSU5ESU5H
X0lETFMgPSBcCiAgICAgJChXZWJDb3JlKS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQnVmZmVyQ2Fs
bGJhY2suaWRsIFwKICAgICAkKFdlYkNvcmUpL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9CdWZmZXJT
b3VyY2VOb2RlLmlkbCBcCiAgICAgJChXZWJDb3JlKS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQ29u
dGV4dC5pZGwgXAorICAgICQoV2ViQ29yZSkvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0NvbnRleHRT
dGF0ZS5pZGwgXAogICAgICQoV2ViQ29yZSkvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0Rlc3RpbmF0
aW9uTm9kZS5pZGwgXAogICAgICQoV2ViQ29yZSkvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0xpc3Rl
bmVyLmlkbCBcCiAgICAgJChXZWJDb3JlKS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvTm9kZS5pZGwg
XApAQCAtMzkzLDYgKzM5NCw3IEBAIEpTX0JJTkRJTkdfSURMUyA9IFwKICAgICAkKFdlYkNvcmUp
L01vZHVsZXMvd2ViYXVkaW8vQ2hhbm5lbFNwbGl0dGVyTm9kZS5pZGwgXAogICAgICQoV2ViQ29y
ZSkvTW9kdWxlcy93ZWJhdWRpby9Db252b2x2ZXJOb2RlLmlkbCBcCiAgICAgJChXZWJDb3JlKS9N
b2R1bGVzL3dlYmF1ZGlvL0RlbGF5Tm9kZS5pZGwgXAorICAgICQoV2ViQ29yZSkvTW9kdWxlcy93
ZWJhdWRpby9EaXN0YW5jZU1vZGVsVHlwZS5pZGwgXAogICAgICQoV2ViQ29yZSkvTW9kdWxlcy93
ZWJhdWRpby9EeW5hbWljc0NvbXByZXNzb3JOb2RlLmlkbCBcCiAgICAgJChXZWJDb3JlKS9Nb2R1
bGVzL3dlYmF1ZGlvL0dhaW5Ob2RlLmlkbCBcCiAgICAgJChXZWJDb3JlKS9Nb2R1bGVzL3dlYmF1
ZGlvL01lZGlhRWxlbWVudEF1ZGlvU291cmNlTm9kZS5pZGwgXApAQCAtNDAyLDkgKzQwNCwxMyBA
QCBKU19CSU5ESU5HX0lETFMgPSBcCiAgICAgJChXZWJDb3JlKS9Nb2R1bGVzL3dlYmF1ZGlvL09m
ZmxpbmVBdWRpb0NvbnRleHQuaWRsIFwKICAgICAkKFdlYkNvcmUpL01vZHVsZXMvd2ViYXVkaW8v
T3NjaWxsYXRvck5vZGUuaWRsIFwKICAgICAkKFdlYkNvcmUpL01vZHVsZXMvd2ViYXVkaW8vUGFu
bmVyTm9kZS5pZGwgXAorICAgICQoV2ViQ29yZSkvTW9kdWxlcy93ZWJhdWRpby9QYW5uaW5nTW9k
ZWxUeXBlLmlkbCBcCiAgICAgJChXZWJDb3JlKS9Nb2R1bGVzL3dlYmF1ZGlvL1BlcmlvZGljV2F2
ZS5pZGwgXAogICAgICQoV2ViQ29yZSkvTW9kdWxlcy93ZWJhdWRpby9TY3JpcHRQcm9jZXNzb3JO
b2RlLmlkbCBcCiAgICAgJChXZWJDb3JlKS9Nb2R1bGVzL3dlYmF1ZGlvL1dhdmVTaGFwZXJOb2Rl
LmlkbCBcCisgICAgJChXZWJDb3JlKS9Nb2R1bGVzL3dlYmF1ZGlvL1dlYktpdEF1ZGlvQ29udGV4
dC5pZGwgXAorICAgICQoV2ViQ29yZSkvTW9kdWxlcy93ZWJhdWRpby9XZWJLaXRBdWRpb1Bhbm5l
ck5vZGUuaWRsIFwKKyAgICAkKFdlYkNvcmUpL01vZHVsZXMvd2ViYXVkaW8vV2ViS2l0T2ZmbGlu
ZUF1ZGlvQ29udGV4dC5pZGwgXAogICAgICQoV2ViQ29yZSkvTW9kdWxlcy93ZWJhdXRobi9BdHRl
c3RhdGlvbkNvbnZleWFuY2VQcmVmZXJlbmNlLmlkbCBcCiAgICAgJChXZWJDb3JlKS9Nb2R1bGVz
L3dlYmF1dGhuL0F1dGhlbnRpY2F0aW9uRXh0ZW5zaW9uc0NsaWVudElucHV0cy5pZGwgXAogICAg
ICQoV2ViQ29yZSkvTW9kdWxlcy93ZWJhdXRobi9BdXRoZW50aWNhdGlvbkV4dGVuc2lvbnNDbGll
bnRPdXRwdXRzLmlkbCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1
ZGlvL0FuYWx5c2VyTm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0Fu
YWx5c2VyTm9kZS5jcHAKaW5kZXggMTc5ODcwNzAxZjg1MzM4NDhiOGE0OWE3NWQzYWYxMzYxNTRi
MDhkMi4uMjE1ZGUzMjFlOWExNmMzMjQ2Y2E0OTQ3NGQ5ZWFlMjUyMjUzODIwMSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BbmFseXNlck5vZGUuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQW5hbHlzZXJOb2RlLmNwcApAQCAtMzYs
NyArMzYsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFdURl9NQUtFX0lTT19BTExPQ0FURURf
SU1QTChBbmFseXNlck5vZGUpOwogCi1BbmFseXNlck5vZGU6OkFuYWx5c2VyTm9kZShBdWRpb0Nv
bnRleHQmIGNvbnRleHQsIGZsb2F0IHNhbXBsZVJhdGUpCitBbmFseXNlck5vZGU6OkFuYWx5c2Vy
Tm9kZShBdWRpb0NvbnRleHRCYXNlJiBjb250ZXh0LCBmbG9hdCBzYW1wbGVSYXRlKQogICAgIDog
QXVkaW9CYXNpY0luc3BlY3Rvck5vZGUoY29udGV4dCwgc2FtcGxlUmF0ZSwgMikKIHsKICAgICBz
ZXROb2RlVHlwZShOb2RlVHlwZUFuYWx5c2VyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViYXVkaW8vQW5hbHlzZXJOb2RlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmF1ZGlvL0FuYWx5c2VyTm9kZS5oCmluZGV4IGRhMWI1ZTg5Y2EyOGRlZWNjMzljMmYzNjY5
N2ZkOTBhMGIzZTBmN2UuLmE0MDIzYTMwZGVhMGRmMmJjOWE3YmIwNGJlZGFkOGEzMGRiOWRjZTUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQW5hbHlzZXJOb2Rl
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BbmFseXNlck5vZGUuaApA
QCAtMzIsNyArMzIsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBBbmFseXNlck5vZGUg
ZmluYWwgOiBwdWJsaWMgQXVkaW9CYXNpY0luc3BlY3Rvck5vZGUgewogICAgIFdURl9NQUtFX0lT
T19BTExPQ0FURUQoQW5hbHlzZXJOb2RlKTsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPEFuYWx5
c2VyTm9kZT4gY3JlYXRlKEF1ZGlvQ29udGV4dCYgY29udGV4dCwgZmxvYXQgc2FtcGxlUmF0ZSkK
KyAgICBzdGF0aWMgUmVmPEFuYWx5c2VyTm9kZT4gY3JlYXRlKEF1ZGlvQ29udGV4dEJhc2UmIGNv
bnRleHQsIGZsb2F0IHNhbXBsZVJhdGUpCiAgICAgewogICAgICAgICByZXR1cm4gYWRvcHRSZWYo
Km5ldyBBbmFseXNlck5vZGUoY29udGV4dCwgc2FtcGxlUmF0ZSkpOwogICAgIH0KQEAgLTU4LDcg
KzU4LDcgQEAgcHVibGljOgogICAgIHZvaWQgZ2V0Qnl0ZVRpbWVEb21haW5EYXRhKGNvbnN0IFJl
ZlB0cjxKU0M6OlVpbnQ4QXJyYXk+JiBhcnJheSkgeyBtX2FuYWx5c2VyLmdldEJ5dGVUaW1lRG9t
YWluRGF0YShhcnJheS5nZXQoKSk7IH0KIAogcHJpdmF0ZToKLSAgICBBbmFseXNlck5vZGUoQXVk
aW9Db250ZXh0JiwgZmxvYXQgc2FtcGxlUmF0ZSk7CisgICAgQW5hbHlzZXJOb2RlKEF1ZGlvQ29u
dGV4dEJhc2UmLCBmbG9hdCBzYW1wbGVSYXRlKTsKIAogICAgIHZvaWQgcHJvY2VzcyhzaXplX3Qg
ZnJhbWVzVG9Qcm9jZXNzKSBmaW5hbDsKICAgICB2b2lkIHJlc2V0KCkgZmluYWw7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQmFzaWNJbnNwZWN0b3JO
b2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9CYXNpY0luc3Bl
Y3Rvck5vZGUuY3BwCmluZGV4IDBmYjU1YjA4ZjBjMWEyYmUyZDA3MGM0ZTBkOGQ4ZjQ2N2UzNDZh
NzIuLjE0NTNkYWNhZmRhMWQzOGEzNGNmZDFiNmI5M2NiNzgzMzIzNWQ5ODggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9CYXNpY0luc3BlY3Rvck5vZGUu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9CYXNpY0luc3Bl
Y3Rvck5vZGUuY3BwCkBAIC0zNiw3ICszNiw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogV1RG
X01BS0VfSVNPX0FMTE9DQVRFRF9JTVBMKEF1ZGlvQmFzaWNJbnNwZWN0b3JOb2RlKTsKIAotQXVk
aW9CYXNpY0luc3BlY3Rvck5vZGU6OkF1ZGlvQmFzaWNJbnNwZWN0b3JOb2RlKEF1ZGlvQ29udGV4
dCYgY29udGV4dCwgZmxvYXQgc2FtcGxlUmF0ZSwgdW5zaWduZWQgb3V0cHV0Q2hhbm5lbENvdW50
KQorQXVkaW9CYXNpY0luc3BlY3Rvck5vZGU6OkF1ZGlvQmFzaWNJbnNwZWN0b3JOb2RlKEF1ZGlv
Q29udGV4dEJhc2UmIGNvbnRleHQsIGZsb2F0IHNhbXBsZVJhdGUsIHVuc2lnbmVkIG91dHB1dENo
YW5uZWxDb3VudCkKICAgICA6IEF1ZGlvTm9kZShjb250ZXh0LCBzYW1wbGVSYXRlKQogewogICAg
IHNldE5vZGVUeXBlKE5vZGVUeXBlQmFzaWNJbnNwZWN0b3IpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0Jhc2ljSW5zcGVjdG9yTm9kZS5oIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0Jhc2ljSW5zcGVjdG9yTm9kZS5oCmlu
ZGV4IDgwZTA4ZDI5NjE3YjE3NzRjNjBkZDE4NzkzZDE2MzBlZjJhZDAzZGIuLmU3NjllNDZhZTIx
ZjQ3MzQxYzI3M2M4ODQ1Y2JlMDI5ZTgxMjhkNjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViYXVkaW8vQXVkaW9CYXNpY0luc3BlY3Rvck5vZGUuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQmFzaWNJbnNwZWN0b3JOb2RlLmgKQEAgLTM0
LDcgKzM0LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgQXVkaW9CYXNpY0luc3BlY3Rv
ck5vZGUgOiBwdWJsaWMgQXVkaW9Ob2RlIHsKICAgICBXVEZfTUFLRV9JU09fQUxMT0NBVEVEKEF1
ZGlvQmFzaWNJbnNwZWN0b3JOb2RlKTsKIHB1YmxpYzoKLSAgICBBdWRpb0Jhc2ljSW5zcGVjdG9y
Tm9kZShBdWRpb0NvbnRleHQmLCBmbG9hdCBzYW1wbGVSYXRlLCB1bnNpZ25lZCBvdXRwdXRDaGFu
bmVsQ291bnQpOworICAgIEF1ZGlvQmFzaWNJbnNwZWN0b3JOb2RlKEF1ZGlvQ29udGV4dEJhc2Um
LCBmbG9hdCBzYW1wbGVSYXRlLCB1bnNpZ25lZCBvdXRwdXRDaGFubmVsQ291bnQpOwogCiBwcml2
YXRlOgogICAgIHZvaWQgcHVsbElucHV0cyhzaXplX3QgZnJhbWVzVG9Qcm9jZXNzKSBvdmVycmlk
ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9CYXNp
Y1Byb2Nlc3Nvck5vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRp
b0Jhc2ljUHJvY2Vzc29yTm9kZS5jcHAKaW5kZXggMGI5ZjFjZWQ4NzQ1YjVkOTk4ZGMzOGQ2MzZl
NzkwYWJmYmU2ZTk4My4uZjdiNzk2YmU1NTU0NTM2YTZhNTQyYzc1ZTM2MDU1MjVmOTQ2OGEyOSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0Jhc2ljUHJv
Y2Vzc29yTm9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRp
b0Jhc2ljUHJvY2Vzc29yTm9kZS5jcHAKQEAgLTM5LDcgKzM5LDcgQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogCiBXVEZfTUFLRV9JU09fQUxMT0NBVEVEX0lNUEwoQXVkaW9CYXNpY1Byb2Nlc3Nvck5v
ZGUpOwogCi1BdWRpb0Jhc2ljUHJvY2Vzc29yTm9kZTo6QXVkaW9CYXNpY1Byb2Nlc3Nvck5vZGUo
QXVkaW9Db250ZXh0JiBjb250ZXh0LCBmbG9hdCBzYW1wbGVSYXRlKQorQXVkaW9CYXNpY1Byb2Nl
c3Nvck5vZGU6OkF1ZGlvQmFzaWNQcm9jZXNzb3JOb2RlKEF1ZGlvQ29udGV4dEJhc2UmIGNvbnRl
eHQsIGZsb2F0IHNhbXBsZVJhdGUpCiAgICAgOiBBdWRpb05vZGUoY29udGV4dCwgc2FtcGxlUmF0
ZSkKIHsKICAgICBhZGRJbnB1dChtYWtlVW5pcXVlPEF1ZGlvTm9kZUlucHV0Pih0aGlzKSk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQmFzaWNQcm9j
ZXNzb3JOb2RlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQmFzaWNQ
cm9jZXNzb3JOb2RlLmgKaW5kZXggODJjZmZkYTU5ZjI3ODIwZGIwZDNkNTQ2MDFkNmFjYzRhYzc2
ZjE2MS4uZTE2MzczYmYwMjk3NmE0NWFkODI1ZTJlNjNhODM3YWZmNGY5MjE5YSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0Jhc2ljUHJvY2Vzc29yTm9k
ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9CYXNpY1Byb2Nl
c3Nvck5vZGUuaApAQCAtMzcsNyArMzcsNyBAQCBjbGFzcyBBdWRpb1Byb2Nlc3NvcjsKIGNsYXNz
IEF1ZGlvQmFzaWNQcm9jZXNzb3JOb2RlIDogcHVibGljIEF1ZGlvTm9kZSB7CiAgICAgV1RGX01B
S0VfSVNPX0FMTE9DQVRFRChBdWRpb0Jhc2ljUHJvY2Vzc29yTm9kZSk7CiBwdWJsaWM6Ci0gICAg
QXVkaW9CYXNpY1Byb2Nlc3Nvck5vZGUoQXVkaW9Db250ZXh0JiwgZmxvYXQgc2FtcGxlUmF0ZSk7
CisgICAgQXVkaW9CYXNpY1Byb2Nlc3Nvck5vZGUoQXVkaW9Db250ZXh0QmFzZSYsIGZsb2F0IHNh
bXBsZVJhdGUpOwogCiAgICAgLy8gQXVkaW9Ob2RlCiAgICAgdm9pZCBwcm9jZXNzKHNpemVfdCBm
cmFtZXNUb1Byb2Nlc3MpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJhdWRpby9BdWRpb0J1ZmZlclNvdXJjZU5vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJhdWRpby9BdWRpb0J1ZmZlclNvdXJjZU5vZGUuY3BwCmluZGV4IGMzNjYxZGU1
N2Q3MzllYzQ3MGQ2ZmFkOWY1NDFlNDk1ZWM5NzZkZWYuLjBjMWJhNGU5NGE5OGNiZjdkMTliZGMz
YjIzYTYyZmE5NDZmMDk1MzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
YXVkaW8vQXVkaW9CdWZmZXJTb3VyY2VOb2RlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmF1ZGlvL0F1ZGlvQnVmZmVyU291cmNlTm9kZS5jcHAKQEAgLTQ5LDEyICs0OSwxMiBA
QCBjb25zdCBkb3VibGUgRGVmYXVsdEdyYWluRHVyYXRpb24gPSAwLjAyMDsgLy8gMjBtcwogLy8g
dG8gbWluaW1pemUgbGluZWFyIGludGVycG9sYXRpb24gYWxpYXNpbmcuCiBjb25zdCBkb3VibGUg
TWF4UmF0ZSA9IDEwMjQ7CiAKLVJlZjxBdWRpb0J1ZmZlclNvdXJjZU5vZGU+IEF1ZGlvQnVmZmVy
U291cmNlTm9kZTo6Y3JlYXRlKEF1ZGlvQ29udGV4dCYgY29udGV4dCwgZmxvYXQgc2FtcGxlUmF0
ZSkKK1JlZjxBdWRpb0J1ZmZlclNvdXJjZU5vZGU+IEF1ZGlvQnVmZmVyU291cmNlTm9kZTo6Y3Jl
YXRlKEF1ZGlvQ29udGV4dEJhc2UmIGNvbnRleHQsIGZsb2F0IHNhbXBsZVJhdGUpCiB7CiAgICAg
cmV0dXJuIGFkb3B0UmVmKCpuZXcgQXVkaW9CdWZmZXJTb3VyY2VOb2RlKGNvbnRleHQsIHNhbXBs
ZVJhdGUpKTsKIH0KIAotQXVkaW9CdWZmZXJTb3VyY2VOb2RlOjpBdWRpb0J1ZmZlclNvdXJjZU5v
ZGUoQXVkaW9Db250ZXh0JiBjb250ZXh0LCBmbG9hdCBzYW1wbGVSYXRlKQorQXVkaW9CdWZmZXJT
b3VyY2VOb2RlOjpBdWRpb0J1ZmZlclNvdXJjZU5vZGUoQXVkaW9Db250ZXh0QmFzZSYgY29udGV4
dCwgZmxvYXQgc2FtcGxlUmF0ZSkKICAgICA6IEF1ZGlvU2NoZWR1bGVkU291cmNlTm9kZShjb250
ZXh0LCBzYW1wbGVSYXRlKQogICAgICwgbV9idWZmZXIobnVsbHB0cikKICAgICAsIG1faXNMb29w
aW5nKGZhbHNlKQpAQCAtNDEzLDcgKzQxMyw3IEBAIHZvaWQgQXVkaW9CdWZmZXJTb3VyY2VOb2Rl
OjpzZXRCdWZmZXIoUmVmUHRyPEF1ZGlvQnVmZmVyPiYmIGJ1ZmZlcikKICAgICBERUJVR19MT0co
TE9HSURFTlRJRklFUik7CiAKICAgICAvLyBUaGUgY29udGV4dCBtdXN0IGJlIGxvY2tlZCBzaW5j
ZSBjaGFuZ2luZyB0aGUgYnVmZmVyIGNhbiByZS1jb25maWd1cmUgdGhlIG51bWJlciBvZiBjaGFu
bmVscyB0aGF0IGFyZSBvdXRwdXQuCi0gICAgQXVkaW9Db250ZXh0OjpBdXRvTG9ja2VyIGNvbnRl
eHRMb2NrZXIoY29udGV4dCgpKTsKKyAgICBBdWRpb0NvbnRleHRCYXNlOjpBdXRvTG9ja2VyIGNv
bnRleHRMb2NrZXIoY29udGV4dCgpKTsKICAgICAKICAgICAvLyBUaGlzIHN5bmNocm9uaXplcyB3
aXRoIHByb2Nlc3MoKS4KICAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG1fcHJvY2Vzc011dGV4
KTsKQEAgLTU1Nyw3ICs1NTcsNyBAQCBib29sIEF1ZGlvQnVmZmVyU291cmNlTm9kZTo6cHJvcGFn
YXRlc1NpbGVuY2UoKSBjb25zdAogICAgIHJldHVybiAhaXNQbGF5aW5nT3JTY2hlZHVsZWQoKSB8
fCBoYXNGaW5pc2hlZCgpIHx8ICFtX2J1ZmZlcjsKIH0KIAotdm9pZCBBdWRpb0J1ZmZlclNvdXJj
ZU5vZGU6OnNldFBhbm5lck5vZGUoUGFubmVyTm9kZSogcGFubmVyTm9kZSkKK3ZvaWQgQXVkaW9C
dWZmZXJTb3VyY2VOb2RlOjpzZXRQYW5uZXJOb2RlKFBhbm5lck5vZGVCYXNlKiBwYW5uZXJOb2Rl
KQogewogICAgIGlmIChtX3Bhbm5lck5vZGUgIT0gcGFubmVyTm9kZSAmJiAhaGFzRmluaXNoZWQo
KSkgewogICAgICAgICBpZiAocGFubmVyTm9kZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViYXVkaW8vQXVkaW9CdWZmZXJTb3VyY2VOb2RlLmggYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQnVmZmVyU291cmNlTm9kZS5oCmluZGV4IDU0OGIyNmU3
ZmE3NTE0ZGU5YWQ2NGQzZTM1MzZiOWYzNGJlZGE5ZmIuLjYwMTEzMTE5OWE0ZmE5MmQ3MzBjNTBk
NWFhMjYwMDM4ZjZmZDk2ZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
YXVkaW8vQXVkaW9CdWZmZXJTb3VyY2VOb2RlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJhdWRpby9BdWRpb0J1ZmZlclNvdXJjZU5vZGUuaApAQCAtMzEsNyArMzEsNyBAQAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBBdWRpb0J1ZmZlcjsKLWNsYXNzIFBhbm5lck5vZGU7
CitjbGFzcyBQYW5uZXJOb2RlQmFzZTsKIAogLy8gQXVkaW9CdWZmZXJTb3VyY2VOb2RlIGlzIGFu
IEF1ZGlvTm9kZSByZXByZXNlbnRpbmcgYW4gYXVkaW8gc291cmNlIGZyb20gYW4gaW4tbWVtb3J5
IGF1ZGlvIGFzc2V0IHJlcHJlc2VudGVkIGJ5IGFuIEF1ZGlvQnVmZmVyLgogLy8gSXQgZ2VuZXJh
bGx5IHdpbGwgYmUgdXNlZCBmb3Igc2hvcnQgc291bmRzIHdoaWNoIHJlcXVpcmUgYSBoaWdoIGRl
Z3JlZSBvZiBzY2hlZHVsaW5nIGZsZXhpYmlsaXR5IChjYW4gcGxheWJhY2sgaW4gcmh5dGhtaWNh
bGx5IHBlcmZlY3Qgd2F5cykuCkBAIC0zOSw3ICszOSw3IEBAIGNsYXNzIFBhbm5lck5vZGU7CiBj
bGFzcyBBdWRpb0J1ZmZlclNvdXJjZU5vZGUgZmluYWwgOiBwdWJsaWMgQXVkaW9TY2hlZHVsZWRT
b3VyY2VOb2RlIHsKICAgICBXVEZfTUFLRV9JU09fQUxMT0NBVEVEKEF1ZGlvQnVmZmVyU291cmNl
Tm9kZSk7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxBdWRpb0J1ZmZlclNvdXJjZU5vZGU+IGNy
ZWF0ZShBdWRpb0NvbnRleHQmLCBmbG9hdCBzYW1wbGVSYXRlKTsKKyAgICBzdGF0aWMgUmVmPEF1
ZGlvQnVmZmVyU291cmNlTm9kZT4gY3JlYXRlKEF1ZGlvQ29udGV4dEJhc2UmLCBmbG9hdCBzYW1w
bGVSYXRlKTsKIAogICAgIHZpcnR1YWwgfkF1ZGlvQnVmZmVyU291cmNlTm9kZSgpOwogCkBAIC03
OSw3ICs3OSw3IEBAIHB1YmxpYzoKICAgICBBdWRpb1BhcmFtKiBwbGF5YmFja1JhdGUoKSB7IHJl
dHVybiBtX3BsYXliYWNrUmF0ZS5nZXQoKTsgfQogCiAgICAgLy8gSWYgYSBwYW5uZXIgbm9kZSBp
cyBzZXQsIHRoZW4gd2UgY2FuIGluY29ycG9yYXRlIGRvcHBsZXIgc2hpZnQgaW50byB0aGUgcGxh
eWJhY2sgcGl0Y2ggcmF0ZS4KLSAgICB2b2lkIHNldFBhbm5lck5vZGUoUGFubmVyTm9kZSopOwor
ICAgIHZvaWQgc2V0UGFubmVyTm9kZShQYW5uZXJOb2RlQmFzZSopOwogICAgIHZvaWQgY2xlYXJQ
YW5uZXJOb2RlKCk7CiAKICAgICAvLyBJZiB3ZSBhcmUgbm8gbG9uZ2VyIHBsYXlpbmcsIHByb3Bv
Z2F0ZSBzaWxlbmNlIGFoZWFkIHRvIGRvd25zdHJlYW0gbm9kZXMuCkBAIC05MSw3ICs5MSw3IEBA
IHB1YmxpYzoKICAgICBjb25zdCBjaGFyKiBhY3RpdmVET01PYmplY3ROYW1lKCkgY29uc3Qgb3Zl
cnJpZGUgeyByZXR1cm4gIkF1ZGlvQnVmZmVyU291cmNlTm9kZSI7IH0KIAogcHJpdmF0ZToKLSAg
ICBBdWRpb0J1ZmZlclNvdXJjZU5vZGUoQXVkaW9Db250ZXh0JiwgZmxvYXQgc2FtcGxlUmF0ZSk7
CisgICAgQXVkaW9CdWZmZXJTb3VyY2VOb2RlKEF1ZGlvQ29udGV4dEJhc2UmLCBmbG9hdCBzYW1w
bGVSYXRlKTsKIAogICAgIGRvdWJsZSB0YWlsVGltZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIDA7
IH0KICAgICBkb3VibGUgbGF0ZW5jeVRpbWUoKSBjb25zdCBmaW5hbCB7IHJldHVybiAwOyB9CkBA
IC0xNDUsNyArMTQ1LDcgQEAgcHJpdmF0ZToKIAogICAgIC8vIFdlIG9wdGlvbmFsbHkga2VlcCB0
cmFjayBvZiBhIHBhbm5lciBub2RlIHdoaWNoIGhhcyBhIGRvcHBsZXIgc2hpZnQgdGhhdCBpcyBp
bmNvcnBvcmF0ZWQgaW50bwogICAgIC8vIHRoZSBwaXRjaCByYXRlLiBXZSBtYW51YWxseSBtYW5h
Z2UgcmVmLWNvdW50aW5nIGJlY2F1c2Ugd2Ugd2FudCB0byB1c2UgUmVmVHlwZUNvbm5lY3Rpb24u
Ci0gICAgUGFubmVyTm9kZSogbV9wYW5uZXJOb2RlOworICAgIFBhbm5lck5vZGVCYXNlKiBtX3Bh
bm5lck5vZGU7CiAKICAgICAvLyBUaGlzIHN5bmNocm9uaXplcyBwcm9jZXNzKCkgd2l0aCBzZXRC
dWZmZXIoKSB3aGljaCBjYW4gY2F1c2UgZHluYW1pYyBjaGFubmVsIGNvdW50IGNoYW5nZXMuCiAg
ICAgbXV0YWJsZSBMb2NrIG1fcHJvY2Vzc011dGV4OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0NvbnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJhdWRpby9BdWRpb0NvbnRleHQuY3BwCmluZGV4IDM4MmRjN2NmMGNkMGY1ZDVkMzAy
NzZlNjNkOTJkYmUwYjUzN2VhNTkuLjhjNGYzZWZiOGE5Y2E4MGU3MGI2NTUwMDhiOGY1NzY0ZGUy
NzEzN2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9D
b250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQ29u
dGV4dC5jcHAKQEAgLTEwNyw2ICsxMDcsNyBAQCBjb25zdCB1bnNpZ25lZCBNYXhQZXJpb2RpY1dh
dmVMZW5ndGggPSA0MDk2OwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK1dURl9NQUtFX0lTT19B
TExPQ0FURURfSU1QTChBdWRpb0NvbnRleHRCYXNlKTsKIFdURl9NQUtFX0lTT19BTExPQ0FURURf
SU1QTChBdWRpb0NvbnRleHQpOwogCiAjZGVmaW5lIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoZm10
LCAuLi4pIFJFTEVBU0VfTE9HX0lGKGRvY3VtZW50KCkgJiYgZG9jdW1lbnQoKS0+cGFnZSgpICYm
IGRvY3VtZW50KCktPnBhZ2UoKS0+aXNBbHdheXNPbkxvZ2dpbmdBbGxvd2VkKCksIE1lZGlhLCAi
JXAgLSBBdWRpb0NvbnRleHQ6OiIgZm10LCB0aGlzLCAjI19fVkFfQVJHU19fKQpAQCAtMTM3LDkg
KzEzOCwxNCBAQCBFeGNlcHRpb25PcjxSZWY8QXVkaW9Db250ZXh0Pj4gQXVkaW9Db250ZXh0Ojpj
cmVhdGUoRG9jdW1lbnQmIGRvY3VtZW50KQogICAgIHJldHVybiBhdWRpb0NvbnRleHQ7CiB9CiAK
K0F1ZGlvQ29udGV4dEJhc2U6OkF1ZGlvQ29udGV4dEJhc2UoRG9jdW1lbnQmIGRvY3VtZW50KQor
ICAgIDogQWN0aXZlRE9NT2JqZWN0KGRvY3VtZW50KQoreworfQorCiAvLyBDb25zdHJ1Y3RvciBm
b3IgcmVuZGVyaW5nIHRvIHRoZSBhdWRpbyBoYXJkd2FyZS4KIEF1ZGlvQ29udGV4dDo6QXVkaW9D
b250ZXh0KERvY3VtZW50JiBkb2N1bWVudCkKLSAgICA6IEFjdGl2ZURPTU9iamVjdChkb2N1bWVu
dCkKKyAgICA6IEF1ZGlvQ29udGV4dEJhc2UoZG9jdW1lbnQpCiAjaWYgIVJFTEVBU0VfTE9HX0RJ
U0FCTEVECiAgICAgLCBtX2xvZ2dlcihkb2N1bWVudC5sb2dnZXIoKSkKICAgICAsIG1fbG9nSWRl
bnRpZmllcih1bmlxdWVMb2dJZGVudGlmaWVyKCkpCkBAIC0xNjQsNyArMTcwLDcgQEAgQXVkaW9D
b250ZXh0OjpBdWRpb0NvbnRleHQoRG9jdW1lbnQmIGRvY3VtZW50KQogCiAvLyBDb25zdHJ1Y3Rv
ciBmb3Igb2ZmbGluZSAobm9uLXJlYWx0aW1lKSByZW5kZXJpbmcuCiBBdWRpb0NvbnRleHQ6OkF1
ZGlvQ29udGV4dChEb2N1bWVudCYgZG9jdW1lbnQsIEF1ZGlvQnVmZmVyKiByZW5kZXJUYXJnZXQp
Ci0gICAgOiBBY3RpdmVET01PYmplY3QoZG9jdW1lbnQpCisgICAgOiBBdWRpb0NvbnRleHRCYXNl
KGRvY3VtZW50KQogI2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRAogICAgICwgbV9sb2dnZXIoZG9j
dW1lbnQubG9nZ2VyKCkpCiAgICAgLCBtX2xvZ0lkZW50aWZpZXIodW5pcXVlTG9nSWRlbnRpZmll
cigpKQpAQCAtMzY2LDcgKzM3Miw3IEBAIGNvbnN0IGNoYXIqIEF1ZGlvQ29udGV4dDo6YWN0aXZl
RE9NT2JqZWN0TmFtZSgpIGNvbnN0CiAgICAgcmV0dXJuICJBdWRpb0NvbnRleHQiOwogfQogCi1E
b2N1bWVudCogQXVkaW9Db250ZXh0Ojpkb2N1bWVudCgpIGNvbnN0CitEb2N1bWVudCogQXVkaW9D
b250ZXh0QmFzZTo6ZG9jdW1lbnQoKSBjb25zdAogewogICAgIHJldHVybiBkb3duY2FzdDxEb2N1
bWVudD4obV9zY3JpcHRFeGVjdXRpb25Db250ZXh0KTsKIH0KQEAgLTEwNjgsNyArMTA3NCw3IEBA
IHZvaWQgQXVkaW9Db250ZXh0Ojpwcm9jZXNzQXV0b21hdGljUHVsbE5vZGVzKHNpemVfdCBmcmFt
ZXNUb1Byb2Nlc3MpCiAgICAgICAgIG5vZGUtPnByb2Nlc3NJZk5lY2Vzc2FyeShmcmFtZXNUb1By
b2Nlc3MpOwogfQogCi1TY3JpcHRFeGVjdXRpb25Db250ZXh0KiBBdWRpb0NvbnRleHQ6OnNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQoKSBjb25zdAorU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogQXVkaW9D
b250ZXh0QmFzZTo6c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpIGNvbnN0CiB7CiAgICAgcmV0dXJu
IEFjdGl2ZURPTU9iamVjdDo6c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOwogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0NvbnRleHQuaCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0LmgKaW5kZXggOGUwOTQzOTRj
ZmZjYzVkYWE4YjBlNGRjNTg5MTIxOTQ0MmU2ZTEyZS4uZmRmOTk0YTVhNTE1ZDExNjY1NDI5MTk3
OTE5OGVhMDU3MWY5YTI2MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJh
dWRpby9BdWRpb0NvbnRleHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlv
L0F1ZGlvQ29udGV4dC5oCkBAIC0yOCw2ICsyOCw3IEBACiAjaW5jbHVkZSAiQWN0aXZlRE9NT2Jq
ZWN0LmgiCiAjaW5jbHVkZSAiQXN5bmNBdWRpb0RlY29kZXIuaCIKICNpbmNsdWRlICJBdWRpb0J1
cy5oIgorI2luY2x1ZGUgIkF1ZGlvQ29udGV4dFN0YXRlLmgiCiAjaW5jbHVkZSAiQXVkaW9EZXN0
aW5hdGlvbk5vZGUuaCIKICNpbmNsdWRlICJFdmVudFRhcmdldC5oIgogI2luY2x1ZGUgIk1lZGlh
Q2FuU3RhcnRMaXN0ZW5lci5oIgpAQCAtNzksMjAgKzgwLDEyNyBAQCBjbGFzcyBXYXZlU2hhcGVy
Tm9kZTsKIAogdGVtcGxhdGU8dHlwZW5hbWUgSURMVHlwZT4gY2xhc3MgRE9NUHJvbWlzZURlZmVy
cmVkOwogCi0vLyBBdWRpb0NvbnRleHQgaXMgdGhlIGNvcm5lcnN0b25lIG9mIHRoZSB3ZWIgYXVk
aW8gQVBJIGFuZCBhbGwgQXVkaW9Ob2RlcyBhcmUgY3JlYXRlZCBmcm9tIGl0LgotLy8gRm9yIHRo
cmVhZCBzYWZldHkgYmV0d2VlbiB0aGUgYXVkaW8gdGhyZWFkIGFuZCB0aGUgbWFpbiB0aHJlYWQs
IGl0IGhhcyBhIHJlbmRlcmluZyBncmFwaCBsb2NraW5nIG1lY2hhbmlzbS4gCi0KLWNsYXNzIEF1
ZGlvQ29udGV4dAorY2xhc3MgQXVkaW9Db250ZXh0QmFzZQogICAgIDogcHVibGljIEFjdGl2ZURP
TU9iamVjdAogICAgICwgcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPEF1ZGlvQ29udGV4dD4K
ICAgICAsIHB1YmxpYyBFdmVudFRhcmdldFdpdGhJbmxpbmVEYXRhCiAgICAgLCBwdWJsaWMgTWVk
aWFDYW5TdGFydExpc3RlbmVyCiAgICAgLCBwdWJsaWMgTWVkaWFQcm9kdWNlcgotICAgICwgcHJp
dmF0ZSBQbGF0Zm9ybU1lZGlhU2Vzc2lvbkNsaWVudAotICAgICwgcHJpdmF0ZSBWaXNpYmlsaXR5
Q2hhbmdlQ2xpZW50CiAjaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECi0gICAgLCBwcml2YXRlIExv
Z2dlckhlbHBlcgorICAgICwgcHVibGljIExvZ2dlckhlbHBlcgorI2VuZGlmCit7CisgICAgV1RG
X01BS0VfSVNPX0FMTE9DQVRFRChBdWRpb0NvbnRleHRCYXNlKTsKK3B1YmxpYzoKKyAgICB2aXJ0
dWFsIH5BdWRpb0NvbnRleHRCYXNlKCkgPSBkZWZhdWx0OworCisgICAgLy8gUmVjb25jaWxlIHJl
Zi9kZXJlZiB3aGljaCBhcmUgZGVmaW5lZCBib3RoIGluIFRocmVhZFNhZmVSZWZDb3VudGVkIGFu
ZCBFdmVudFRhcmdldC4KKyAgICB1c2luZyBUaHJlYWRTYWZlUmVmQ291bnRlZDo6cmVmOworICAg
IHVzaW5nIFRocmVhZFNhZmVSZWZDb3VudGVkOjpkZXJlZjsKKworICAgIERvY3VtZW50KiBkb2N1
bWVudCgpIGNvbnN0OworCisgICAgdmlydHVhbCBib29sIGlzSW5pdGlhbGl6ZWQoKSBjb25zdCA9
IDA7CisKKyAgICB2aXJ0dWFsIHNpemVfdCBjdXJyZW50U2FtcGxlRnJhbWUoKSBjb25zdCA9IDA7
CisgICAgdmlydHVhbCBmbG9hdCBzYW1wbGVSYXRlKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwg
ZG91YmxlIGN1cnJlbnRUaW1lKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgYm9vbCBpc0dyYXBo
T3duZXIoKSBjb25zdCA9IDA7CisKKyAgICB2aXJ0dWFsIHZvaWQgc2V0QXVkaW9UaHJlYWQoVGhy
ZWFkJikgPSAwOworICAgIHZpcnR1YWwgYm9vbCBpc0F1ZGlvVGhyZWFkKCkgY29uc3QgPSAwOwor
ICAgIHZpcnR1YWwgYm9vbCBpc0F1ZGlvVGhyZWFkRmluaXNoZWQoKSA9IDA7CisKKyAgICB2aXJ0
dWFsIHZvaWQgaXNQbGF5aW5nQXVkaW9EaWRDaGFuZ2UoKSA9IDA7CisgICAgdmlydHVhbCB2b2lk
IG5vZGVXaWxsQmVnaW5QbGF5YmFjaygpID0gMDsKKworICAgIHZpcnR1YWwgdm9pZCBwb3N0VGFz
ayhXVEY6OkZ1bmN0aW9uPHZvaWQoKT4mJikgPSAwOworICAgIHZpcnR1YWwgYm9vbCBpc1N0b3Bw
ZWQoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBjb25zdCBTZWN1cml0eU9yaWdpbiogb3JpZ2lu
KCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgdm9pZCBhZGRDb25zb2xlTWVzc2FnZShNZXNzYWdl
U291cmNlLCBNZXNzYWdlTGV2ZWwsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSkgPSAwOworCisgICAg
dmlydHVhbCB2b2lkIG1hcmtGb3JEZWxldGlvbihBdWRpb05vZGUmKSA9IDA7CisgICAgdmlydHVh
bCB2b2lkIGRlbGV0ZU1hcmtlZE5vZGVzKCkgPSAwOworCisgICAgdmlydHVhbCB2b2lkIGhhbmRs
ZVByZVJlbmRlclRhc2tzKCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBoYW5kbGVQb3N0UmVuZGVy
VGFza3MoKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHByb2Nlc3NBdXRvbWF0aWNQdWxsTm9kZXMo
c2l6ZV90IGZyYW1lc1RvUHJvY2VzcykgPSAwOworICAgIHZpcnR1YWwgdm9pZCBhZGREZWZlcnJl
ZEZpbmlzaERlcmVmKEF1ZGlvTm9kZSopID0gMDsKKworICAgIHZpcnR1YWwgdm9pZCByZW1vdmVN
YXJrZWRTdW1taW5nSnVuY3Rpb24oQXVkaW9TdW1taW5nSnVuY3Rpb24qKSA9IDA7CisgICAgdmly
dHVhbCB2b2lkIG1hcmtTdW1taW5nSnVuY3Rpb25EaXJ0eShBdWRpb1N1bW1pbmdKdW5jdGlvbiop
ID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgbWFya0F1ZGlvTm9kZU91dHB1dERpcnR5KEF1ZGlvTm9k
ZU91dHB1dCopID0gMDsKKworICAgIGVudW0gQmVoYXZpb3JSZXN0cmljdGlvbkZsYWdzIHsKKyAg
ICAgICAgTm9SZXN0cmljdGlvbnMgPSAwLAorICAgICAgICBSZXF1aXJlVXNlckdlc3R1cmVGb3JB
dWRpb1N0YXJ0UmVzdHJpY3Rpb24gPSAxIDw8IDAsCisgICAgICAgIFJlcXVpcmVQYWdlQ29uc2Vu
dEZvckF1ZGlvU3RhcnRSZXN0cmljdGlvbiA9IDEgPDwgMSwKKyAgICB9OworICAgIHR5cGVkZWYg
dW5zaWduZWQgQmVoYXZpb3JSZXN0cmljdGlvbnM7CisgICAgdmlydHVhbCBCZWhhdmlvclJlc3Ry
aWN0aW9ucyBiZWhhdmlvclJlc3RyaWN0aW9ucygpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIHZv
aWQgYWRkQmVoYXZpb3JSZXN0cmljdGlvbihCZWhhdmlvclJlc3RyaWN0aW9ucykgPSAwOworICAg
IHZpcnR1YWwgdm9pZCByZW1vdmVCZWhhdmlvclJlc3RyaWN0aW9uKEJlaGF2aW9yUmVzdHJpY3Rp
b25zKSA9IDA7CisKKyNpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKKyAgICB2aXJ0dWFsIGNvbnN0
IHZvaWQqIG5leHRBdWRpb05vZGVMb2dJZGVudGlmaWVyKCkgPSAwOworICAgIHZpcnR1YWwgY29u
c3Qgdm9pZCogbmV4dEF1ZGlvUGFyYW1ldGVyTG9nSWRlbnRpZmllcigpID0gMDsKICNlbmRpZgor
CisgICAgdmlydHVhbCB2b2lkIGFkZEF1dG9tYXRpY1B1bGxOb2RlKEF1ZGlvTm9kZSYpID0gMDsK
KyAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlQXV0b21hdGljUHVsbE5vZGUoQXVkaW9Ob2RlJikgPSAw
OworCisgICAgdmlydHVhbCB2b2lkIG5vdGlmeU5vZGVGaW5pc2hlZFByb2Nlc3NpbmcoQXVkaW9O
b2RlKikgPSAwOworCisgICAgdmlydHVhbCB2b2lkIGZpbmlzaGVkUmVuZGVyaW5nKGJvb2wgZGlk
UmVuZGVyaW5nKSA9IDA7CisKKyAgICB2aXJ0dWFsIHZvaWQgaW5jcmVtZW50Q29ubmVjdGlvbkNv
dW50KCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBpbmNyZW1lbnRBY3RpdmVTb3VyY2VDb3VudCgp
ID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZGVjcmVtZW50QWN0aXZlU291cmNlQ291bnQoKSA9IDA7
CisKKyAgICB2aXJ0dWFsIGJvb2wgaXNPZmZsaW5lQ29udGV4dCgpIGNvbnN0ID0gMDsKKyAgICB2
aXJ0dWFsIGJvb2wgaXNBdWRpb0NvbnRleHQoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBib29s
IGlzV2ViS2l0QXVkaW9Db250ZXh0KCkgY29uc3QgPSAwOworCisgICAgLy8gbXVzdFJlbGVhc2VM
b2NrIGlzIHNldCB0byB0cnVlIGlmIHdlIGFjcXVpcmVkIHRoZSBsb2NrIGluIHRoaXMgbWV0aG9k
IGNhbGwgYW5kIGNhbGxlciBtdXN0IHVubG9jaygpLCBmYWxzZSBpZiBpdCB3YXMgcHJldmlvdXNs
eSBhY3F1aXJlZC4KKyAgICB2aXJ0dWFsIHZvaWQgbG9jayhib29sJiBtdXN0UmVsZWFzZUxvY2sp
ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgdHJ5TG9jayhib29sJiBtdXN0UmVsZWFzZUxvY2spID0g
MDsKKyAgICB2aXJ0dWFsIHZvaWQgdW5sb2NrKCkgPSAwOworCisgICAgY2xhc3MgQXV0b0xvY2tl
ciB7CisgICAgcHVibGljOgorICAgICAgICBleHBsaWNpdCBBdXRvTG9ja2VyKEF1ZGlvQ29udGV4
dEJhc2UmIGNvbnRleHQpCisgICAgICAgICAgICA6IG1fY29udGV4dChjb250ZXh0KQorICAgICAg
ICB7CisgICAgICAgICAgICBtX2NvbnRleHQubG9jayhtX211c3RSZWxlYXNlTG9jayk7CisgICAg
ICAgIH0KKworICAgICAgICB+QXV0b0xvY2tlcigpCisgICAgICAgIHsKKyAgICAgICAgICAgIGlm
IChtX211c3RSZWxlYXNlTG9jaykKKyAgICAgICAgICAgICAgICBtX2NvbnRleHQudW5sb2NrKCk7
CisgICAgICAgIH0KKworICAgIHByaXZhdGU6CisgICAgICAgIEF1ZGlvQ29udGV4dEJhc2UmIG1f
Y29udGV4dDsKKyAgICAgICAgYm9vbCBtX211c3RSZWxlYXNlTG9jazsKKyAgICB9OworCisgICAg
Ly8gRXZlbnRUYXJnZXQKKyAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRp
b25Db250ZXh0KCkgY29uc3QgZmluYWw7CisgICAgdm9pZCByZWZFdmVudFRhcmdldCgpIG92ZXJy
aWRlIHsgcmVmKCk7IH0KKyAgICB2b2lkIGRlcmVmRXZlbnRUYXJnZXQoKSBvdmVycmlkZSB7IGRl
cmVmKCk7IH0KKworcHJvdGVjdGVkOgorICAgIGV4cGxpY2l0IEF1ZGlvQ29udGV4dEJhc2UoRG9j
dW1lbnQmKTsKK307CisKKy8vIEF1ZGlvQ29udGV4dCBpcyB0aGUgY29ybmVyc3RvbmUgb2YgdGhl
IHdlYiBhdWRpbyBBUEkgYW5kIGFsbCBBdWRpb05vZGVzIGFyZSBjcmVhdGVkIGZyb20gaXQuCisv
LyBGb3IgdGhyZWFkIHNhZmV0eSBiZXR3ZWVuIHRoZSBhdWRpbyB0aHJlYWQgYW5kIHRoZSBtYWlu
IHRocmVhZCwgaXQgaGFzIGEgcmVuZGVyaW5nIGdyYXBoIGxvY2tpbmcgbWVjaGFuaXNtLiAKKwor
Y2xhc3MgQXVkaW9Db250ZXh0CisgICAgOiBwdWJsaWMgQXVkaW9Db250ZXh0QmFzZQorICAgICwg
cHJpdmF0ZSBQbGF0Zm9ybU1lZGlhU2Vzc2lvbkNsaWVudAorICAgICwgcHJpdmF0ZSBWaXNpYmls
aXR5Q2hhbmdlQ2xpZW50CiB7CiAgICAgV1RGX01BS0VfSVNPX0FMTE9DQVRFRChBdWRpb0NvbnRl
eHQpOwogcHVibGljOgpAQCAtMTAxLDIyICsyMDksMjAgQEAgcHVibGljOgogCiAgICAgdmlydHVh
bCB+QXVkaW9Db250ZXh0KCk7CiAKLSAgICBib29sIGlzSW5pdGlhbGl6ZWQoKSBjb25zdDsKKyAg
ICBib29sIGlzSW5pdGlhbGl6ZWQoKSBjb25zdCBmaW5hbDsKICAgICAKLSAgICBib29sIGlzT2Zm
bGluZUNvbnRleHQoKSBjb25zdCB7IHJldHVybiBtX2lzT2ZmbGluZUNvbnRleHQ7IH0KLQotICAg
IERvY3VtZW50KiBkb2N1bWVudCgpIGNvbnN0OyAvLyBBU1NFUlRzIGlmIGRvY3VtZW50IG5vIGxv
bmdlciBleGlzdHMuCisgICAgYm9vbCBpc09mZmxpbmVDb250ZXh0KCkgY29uc3QgZmluYWwgeyBy
ZXR1cm4gbV9pc09mZmxpbmVDb250ZXh0OyB9CiAKICAgICBEb2N1bWVudElkZW50aWZpZXIgaG9z
dGluZ0RvY3VtZW50SWRlbnRpZmllcigpIGNvbnN0IGZpbmFsOwogCiAgICAgQXVkaW9EZXN0aW5h
dGlvbk5vZGUqIGRlc3RpbmF0aW9uKCkgeyByZXR1cm4gbV9kZXN0aW5hdGlvbk5vZGUuZ2V0KCk7
IH0KLSAgICBzaXplX3QgY3VycmVudFNhbXBsZUZyYW1lKCkgY29uc3QgeyByZXR1cm4gbV9kZXN0
aW5hdGlvbk5vZGUgPyBtX2Rlc3RpbmF0aW9uTm9kZS0+Y3VycmVudFNhbXBsZUZyYW1lKCkgOiAw
OyB9Ci0gICAgZG91YmxlIGN1cnJlbnRUaW1lKCkgY29uc3QgeyByZXR1cm4gbV9kZXN0aW5hdGlv
bk5vZGUgPyBtX2Rlc3RpbmF0aW9uTm9kZS0+Y3VycmVudFRpbWUoKSA6IDAuOyB9Ci0gICAgZmxv
YXQgc2FtcGxlUmF0ZSgpIGNvbnN0IHsgcmV0dXJuIG1fZGVzdGluYXRpb25Ob2RlID8gbV9kZXN0
aW5hdGlvbk5vZGUtPnNhbXBsZVJhdGUoKSA6IDAuZjsgfQorICAgIHNpemVfdCBjdXJyZW50U2Ft
cGxlRnJhbWUoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2Rlc3RpbmF0aW9uTm9kZSA/IG1fZGVz
dGluYXRpb25Ob2RlLT5jdXJyZW50U2FtcGxlRnJhbWUoKSA6IDA7IH0KKyAgICBkb3VibGUgY3Vy
cmVudFRpbWUoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2Rlc3RpbmF0aW9uTm9kZSA/IG1fZGVz
dGluYXRpb25Ob2RlLT5jdXJyZW50VGltZSgpIDogMC47IH0KKyAgICBmbG9hdCBzYW1wbGVSYXRl
KCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9kZXN0aW5hdGlvbk5vZGUgPyBtX2Rlc3RpbmF0aW9u
Tm9kZS0+c2FtcGxlUmF0ZSgpIDogMC5mOyB9CiAgICAgdW5zaWduZWQgbG9uZyBhY3RpdmVTb3Vy
Y2VDb3VudCgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PHVuc2lnbmVkIGxvbmc+KG1fYWN0
aXZlU291cmNlQ291bnQpOyB9CiAKLSAgICB2b2lkIGluY3JlbWVudEFjdGl2ZVNvdXJjZUNvdW50
KCk7Ci0gICAgdm9pZCBkZWNyZW1lbnRBY3RpdmVTb3VyY2VDb3VudCgpOworICAgIHZvaWQgaW5j
cmVtZW50QWN0aXZlU291cmNlQ291bnQoKSBmaW5hbDsKKyAgICB2b2lkIGRlY3JlbWVudEFjdGl2
ZVNvdXJjZUNvdW50KCkgZmluYWw7CiAgICAgCiAgICAgRXhjZXB0aW9uT3I8UmVmPEF1ZGlvQnVm
ZmVyPj4gY3JlYXRlQnVmZmVyKHVuc2lnbmVkIG51bWJlck9mQ2hhbm5lbHMsIHNpemVfdCBudW1i
ZXJPZkZyYW1lcywgZmxvYXQgc2FtcGxlUmF0ZSk7CiAgICAgRXhjZXB0aW9uT3I8UmVmPEF1ZGlv
QnVmZmVyPj4gY3JlYXRlQnVmZmVyKEFycmF5QnVmZmVyJiwgYm9vbCBtaXhUb01vbm8pOwpAQCAt
MTMwLDcgKzIzNiw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHJlc3VtZVJlbmRlcmluZyhET01Qcm9t
aXNlRGVmZXJyZWQ8dm9pZD4mJik7CiAgICAgdm9pZCBjbG9zZShET01Qcm9taXNlRGVmZXJyZWQ8
dm9pZD4mJik7CiAKLSAgICBlbnVtIGNsYXNzIFN0YXRlIHsgU3VzcGVuZGVkLCBSdW5uaW5nLCBJ
bnRlcnJ1cHRlZCwgQ2xvc2VkIH07CisgICAgdXNpbmcgU3RhdGUgPSBBdWRpb0NvbnRleHRTdGF0
ZTsKICAgICBTdGF0ZSBzdGF0ZSgpIGNvbnN0OwogICAgIGJvb2wgaXNDbG9zZWQoKSBjb25zdCB7
IHJldHVybiBtX3N0YXRlID09IFN0YXRlOjpDbG9zZWQ7IH0KIApAQCAtMTYwLDMxICsyNjYsMzEg
QEAgcHVibGljOgogICAgIEV4Y2VwdGlvbk9yPFJlZjxQZXJpb2RpY1dhdmU+PiBjcmVhdGVQZXJp
b2RpY1dhdmUoRmxvYXQzMkFycmF5JiByZWFsLCBGbG9hdDMyQXJyYXkmIGltYWdpbmFyeSk7CiAK
ICAgICAvLyBXaGVuIGEgc291cmNlIG5vZGUgaGFzIG5vIG1vcmUgcHJvY2Vzc2luZyB0byBkbyAo
aGFzIGZpbmlzaGVkIHBsYXlpbmcpLCB0aGVuIGl0IHRlbGxzIHRoZSBjb250ZXh0IHRvIGRlcmVm
ZXJlbmNlIGl0LgotICAgIHZvaWQgbm90aWZ5Tm9kZUZpbmlzaGVkUHJvY2Vzc2luZyhBdWRpb05v
ZGUqKTsKKyAgICB2b2lkIG5vdGlmeU5vZGVGaW5pc2hlZFByb2Nlc3NpbmcoQXVkaW9Ob2RlKikg
ZmluYWw7CiAKICAgICAvLyBDYWxsZWQgYXQgdGhlIHN0YXJ0IG9mIGVhY2ggcmVuZGVyIHF1YW50
dW0uCi0gICAgdm9pZCBoYW5kbGVQcmVSZW5kZXJUYXNrcygpOworICAgIHZvaWQgaGFuZGxlUHJl
UmVuZGVyVGFza3MoKSBmaW5hbDsKIAogICAgIC8vIENhbGxlZCBhdCB0aGUgZW5kIG9mIGVhY2gg
cmVuZGVyIHF1YW50dW0uCi0gICAgdm9pZCBoYW5kbGVQb3N0UmVuZGVyVGFza3MoKTsKKyAgICB2
b2lkIGhhbmRsZVBvc3RSZW5kZXJUYXNrcygpIGZpbmFsOwogCiAgICAgLy8gQ2FsbGVkIHBlcmlv
ZGljYWxseSBhdCB0aGUgZW5kIG9mIGVhY2ggcmVuZGVyIHF1YW50dW0gdG8gZGVyZWZlcmVuY2Ug
ZmluaXNoZWQgc291cmNlIG5vZGVzLgogICAgIHZvaWQgZGVyZWZGaW5pc2hlZFNvdXJjZU5vZGVz
KCk7CiAKICAgICAvLyBXZSBzY2hlZHVsZSBkZWxldGlvbiBvZiBhbGwgbWFya2VkIG5vZGVzIGF0
IHRoZSBlbmQgb2YgZWFjaCByZWFsdGltZSByZW5kZXIgcXVhbnR1bS4KLSAgICB2b2lkIG1hcmtG
b3JEZWxldGlvbihBdWRpb05vZGUmKTsKLSAgICB2b2lkIGRlbGV0ZU1hcmtlZE5vZGVzKCk7Cisg
ICAgdm9pZCBtYXJrRm9yRGVsZXRpb24oQXVkaW9Ob2RlJikgZmluYWw7CisgICAgdm9pZCBkZWxl
dGVNYXJrZWROb2RlcygpIGZpbmFsOwogCiAgICAgLy8gQXVkaW9Db250ZXh0IGNhbiBwdWxsIG5v
ZGUocykgYXQgdGhlIGVuZCBvZiBlYWNoIHJlbmRlciBxdWFudHVtIGV2ZW4gd2hlbiB0aGV5IGFy
ZSBub3QgY29ubmVjdGVkIHRvIGFueSBkb3duc3RyZWFtIG5vZGVzLgogICAgIC8vIFRoZXNlIHR3
byBtZXRob2RzIGFyZSBjYWxsZWQgYnkgdGhlIG5vZGVzIHdobyB3YW50IHRvIGFkZC9yZW1vdmUg
dGhlbXNlbHZlcyBpbnRvL2Zyb20gdGhlIGF1dG9tYXRpYyBwdWxsIGxpc3RzLgotICAgIHZvaWQg
YWRkQXV0b21hdGljUHVsbE5vZGUoQXVkaW9Ob2RlJik7Ci0gICAgdm9pZCByZW1vdmVBdXRvbWF0
aWNQdWxsTm9kZShBdWRpb05vZGUmKTsKKyAgICB2b2lkIGFkZEF1dG9tYXRpY1B1bGxOb2RlKEF1
ZGlvTm9kZSYpIGZpbmFsOworICAgIHZvaWQgcmVtb3ZlQXV0b21hdGljUHVsbE5vZGUoQXVkaW9O
b2RlJikgZmluYWw7CiAKICAgICAvLyBDYWxsZWQgcmlnaHQgYmVmb3JlIGhhbmRsZVBvc3RSZW5k
ZXJUYXNrcygpIHRvIGhhbmRsZSBub2RlcyB3aGljaCBuZWVkIHRvIGJlIHB1bGxlZCBldmVuIHdo
ZW4gdGhleSBhcmUgbm90IGNvbm5lY3RlZCB0byBhbnl0aGluZy4KLSAgICB2b2lkIHByb2Nlc3NB
dXRvbWF0aWNQdWxsTm9kZXMoc2l6ZV90IGZyYW1lc1RvUHJvY2Vzcyk7CisgICAgdm9pZCBwcm9j
ZXNzQXV0b21hdGljUHVsbE5vZGVzKHNpemVfdCBmcmFtZXNUb1Byb2Nlc3MpIGZpbmFsOwogCiAg
ICAgLy8gS2VlcHMgdHJhY2sgb2YgdGhlIG51bWJlciBvZiBjb25uZWN0aW9ucyBtYWRlLgotICAg
IHZvaWQgaW5jcmVtZW50Q29ubmVjdGlvbkNvdW50KCkKKyAgICB2b2lkIGluY3JlbWVudENvbm5l
Y3Rpb25Db3VudCgpIGZpbmFsCiAgICAgewogICAgICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkp
OwogICAgICAgICBtX2Nvbm5lY3Rpb25Db3VudCsrOwpAQCAtMTk2LDEwMyArMzAyLDcwIEBAIHB1
YmxpYzoKICAgICAvLyBUaHJlYWQgU2FmZXR5IGFuZCBHcmFwaCBMb2NraW5nOgogICAgIC8vCiAg
ICAgCi0gICAgdm9pZCBzZXRBdWRpb1RocmVhZChUaHJlYWQmIHRocmVhZCkgeyBtX2F1ZGlvVGhy
ZWFkID0gJnRocmVhZDsgfSAvLyBGSVhNRTogY2hlY2sgZWl0aGVyIG5vdCBpbml0aWFsaXplZCBv
ciB0aGUgc2FtZQorICAgIHZvaWQgc2V0QXVkaW9UaHJlYWQoVGhyZWFkJiB0aHJlYWQpIGZpbmFs
IHsgbV9hdWRpb1RocmVhZCA9ICZ0aHJlYWQ7IH0gLy8gRklYTUU6IGNoZWNrIGVpdGhlciBub3Qg
aW5pdGlhbGl6ZWQgb3IgdGhlIHNhbWUKICAgICBUaHJlYWQqIGF1ZGlvVGhyZWFkKCkgY29uc3Qg
eyByZXR1cm4gbV9hdWRpb1RocmVhZDsgfQotICAgIGJvb2wgaXNBdWRpb1RocmVhZCgpIGNvbnN0
OworICAgIGJvb2wgaXNBdWRpb1RocmVhZCgpIGNvbnN0IGZpbmFsOwogCiAgICAgLy8gUmV0dXJu
cyB0cnVlIG9ubHkgYWZ0ZXIgdGhlIGF1ZGlvIHRocmVhZCBoYXMgYmVlbiBzdGFydGVkIGFuZCB0
aGVuIHNodXRkb3duLgotICAgIGJvb2wgaXNBdWRpb1RocmVhZEZpbmlzaGVkKCkgeyByZXR1cm4g
bV9pc0F1ZGlvVGhyZWFkRmluaXNoZWQ7IH0KKyAgICBib29sIGlzQXVkaW9UaHJlYWRGaW5pc2hl
ZCgpIGZpbmFsIHsgcmV0dXJuIG1faXNBdWRpb1RocmVhZEZpbmlzaGVkOyB9CiAgICAgCiAgICAg
Ly8gbXVzdFJlbGVhc2VMb2NrIGlzIHNldCB0byB0cnVlIGlmIHdlIGFjcXVpcmVkIHRoZSBsb2Nr
IGluIHRoaXMgbWV0aG9kIGNhbGwgYW5kIGNhbGxlciBtdXN0IHVubG9jaygpLCBmYWxzZSBpZiBp
dCB3YXMgcHJldmlvdXNseSBhY3F1aXJlZC4KLSAgICB2b2lkIGxvY2soYm9vbCYgbXVzdFJlbGVh
c2VMb2NrKTsKKyAgICB2b2lkIGxvY2soYm9vbCYgbXVzdFJlbGVhc2VMb2NrKSBmaW5hbDsKIAog
ICAgIC8vIFJldHVybnMgdHJ1ZSBpZiB3ZSBvd24gdGhlIGxvY2suCiAgICAgLy8gbXVzdFJlbGVh
c2VMb2NrIGlzIHNldCB0byB0cnVlIGlmIHdlIGFjcXVpcmVkIHRoZSBsb2NrIGluIHRoaXMgbWV0
aG9kIGNhbGwgYW5kIGNhbGxlciBtdXN0IHVubG9jaygpLCBmYWxzZSBpZiBpdCB3YXMgcHJldmlv
dXNseSBhY3F1aXJlZC4KLSAgICBib29sIHRyeUxvY2soYm9vbCYgbXVzdFJlbGVhc2VMb2NrKTsK
KyAgICBib29sIHRyeUxvY2soYm9vbCYgbXVzdFJlbGVhc2VMb2NrKSBmaW5hbDsKIAotICAgIHZv
aWQgdW5sb2NrKCk7CisgICAgdm9pZCB1bmxvY2soKSBmaW5hbDsKIAogICAgIC8vIFJldHVybnMg
dHJ1ZSBpZiB0aGlzIHRocmVhZCBvd25zIHRoZSBjb250ZXh0J3MgbG9jay4KLSAgICBib29sIGlz
R3JhcGhPd25lcigpIGNvbnN0OworICAgIGJvb2wgaXNHcmFwaE93bmVyKCkgY29uc3QgZmluYWw7
CiAKICAgICAvLyBSZXR1cm5zIHRoZSBtYXhpbXVtIG51bWJlciBvZiBjaGFubmVscyB3ZSBjYW4g
c3VwcG9ydC4KICAgICBzdGF0aWMgdW5zaWduZWQgbWF4TnVtYmVyT2ZDaGFubmVscygpIHsgcmV0
dXJuIE1heE51bWJlck9mQ2hhbm5lbHM7IH0KLQotICAgIGNsYXNzIEF1dG9Mb2NrZXIgewotICAg
IHB1YmxpYzoKLSAgICAgICAgZXhwbGljaXQgQXV0b0xvY2tlcihBdWRpb0NvbnRleHQmIGNvbnRl
eHQpCi0gICAgICAgICAgICA6IG1fY29udGV4dChjb250ZXh0KQotICAgICAgICB7Ci0gICAgICAg
ICAgICBtX2NvbnRleHQubG9jayhtX211c3RSZWxlYXNlTG9jayk7Ci0gICAgICAgIH0KLSAgICAg
ICAgCi0gICAgICAgIH5BdXRvTG9ja2VyKCkKLSAgICAgICAgewotICAgICAgICAgICAgaWYgKG1f
bXVzdFJlbGVhc2VMb2NrKQotICAgICAgICAgICAgICAgIG1fY29udGV4dC51bmxvY2soKTsKLSAg
ICAgICAgfQotCi0gICAgcHJpdmF0ZToKLSAgICAgICAgQXVkaW9Db250ZXh0JiBtX2NvbnRleHQ7
Ci0gICAgICAgIGJvb2wgbV9tdXN0UmVsZWFzZUxvY2s7Ci0gICAgfTsKICAgICAKICAgICAvLyBJ
biBBdWRpb05vZGU6OmRlcmVmKCkgYSB0cnlMb2NrKCkgaXMgdXNlZCBmb3IgY2FsbGluZyBmaW5p
c2hEZXJlZigpLCBidXQgaWYgaXQgZmFpbHMga2VlcCB0cmFjayBoZXJlLgotICAgIHZvaWQgYWRk
RGVmZXJyZWRGaW5pc2hEZXJlZihBdWRpb05vZGUqKTsKKyAgICB2b2lkIGFkZERlZmVycmVkRmlu
aXNoRGVyZWYoQXVkaW9Ob2RlKikgZmluYWw7CiAKICAgICAvLyBJbiB0aGUgYXVkaW8gdGhyZWFk
IGF0IHRoZSBzdGFydCBvZiBlYWNoIHJlbmRlciBjeWNsZSwgd2UnbGwgY2FsbCBoYW5kbGVEZWZl
cnJlZEZpbmlzaERlcmVmcygpLgogICAgIHZvaWQgaGFuZGxlRGVmZXJyZWRGaW5pc2hEZXJlZnMo
KTsKIAogICAgIC8vIE9ubHkgYWNjZXNzZWQgd2hlbiB0aGUgZ3JhcGggbG9jayBpcyBoZWxkLgot
ICAgIHZvaWQgbWFya1N1bW1pbmdKdW5jdGlvbkRpcnR5KEF1ZGlvU3VtbWluZ0p1bmN0aW9uKik7
Ci0gICAgdm9pZCBtYXJrQXVkaW9Ob2RlT3V0cHV0RGlydHkoQXVkaW9Ob2RlT3V0cHV0Kik7Cisg
ICAgdm9pZCBtYXJrU3VtbWluZ0p1bmN0aW9uRGlydHkoQXVkaW9TdW1taW5nSnVuY3Rpb24qKSBm
aW5hbDsKKyAgICB2b2lkIG1hcmtBdWRpb05vZGVPdXRwdXREaXJ0eShBdWRpb05vZGVPdXRwdXQq
KSBmaW5hbDsKIAogICAgIC8vIE11c3QgYmUgY2FsbGVkIG9uIG1haW4gdGhyZWFkLgotICAgIHZv
aWQgcmVtb3ZlTWFya2VkU3VtbWluZ0p1bmN0aW9uKEF1ZGlvU3VtbWluZ0p1bmN0aW9uKik7Cisg
ICAgdm9pZCByZW1vdmVNYXJrZWRTdW1taW5nSnVuY3Rpb24oQXVkaW9TdW1taW5nSnVuY3Rpb24q
KSBmaW5hbDsKIAogICAgIC8vIEV2ZW50VGFyZ2V0CiAgICAgRXZlbnRUYXJnZXRJbnRlcmZhY2Ug
ZXZlbnRUYXJnZXRJbnRlcmZhY2UoKSBjb25zdCBmaW5hbCB7IHJldHVybiBBdWRpb0NvbnRleHRF
dmVudFRhcmdldEludGVyZmFjZVR5cGU7IH0KIAotICAgIC8vIFJlY29uY2lsZSByZWYvZGVyZWYg
d2hpY2ggYXJlIGRlZmluZWQgYm90aCBpbiBUaHJlYWRTYWZlUmVmQ291bnRlZCBhbmQgRXZlbnRU
YXJnZXQuCi0gICAgdXNpbmcgVGhyZWFkU2FmZVJlZkNvdW50ZWQ6OnJlZjsKLSAgICB1c2luZyBU
aHJlYWRTYWZlUmVmQ291bnRlZDo6ZGVyZWY7Ci0KICAgICB2b2lkIHN0YXJ0UmVuZGVyaW5nKCk7
Ci0gICAgdm9pZCBmaW5pc2hlZFJlbmRlcmluZyhib29sIGRpZFJlbmRlcmluZyk7CisgICAgdm9p
ZCBmaW5pc2hlZFJlbmRlcmluZyhib29sIGRpZFJlbmRlcmluZykgZmluYWw7CiAKICAgICBzdGF0
aWMgdW5zaWduZWQgc19oYXJkd2FyZUNvbnRleHRDb3VudDsKIAogICAgIC8vIFJlc3RyaWN0aW9u
cyB0byBjaGFuZ2UgZGVmYXVsdCBiZWhhdmlvcnMuCi0gICAgZW51bSBCZWhhdmlvclJlc3RyaWN0
aW9uRmxhZ3MgewotICAgICAgICBOb1Jlc3RyaWN0aW9ucyA9IDAsCi0gICAgICAgIFJlcXVpcmVV
c2VyR2VzdHVyZUZvckF1ZGlvU3RhcnRSZXN0cmljdGlvbiA9IDEgPDwgMCwKLSAgICAgICAgUmVx
dWlyZVBhZ2VDb25zZW50Rm9yQXVkaW9TdGFydFJlc3RyaWN0aW9uID0gMSA8PCAxLAotICAgIH07
Ci0gICAgdHlwZWRlZiB1bnNpZ25lZCBCZWhhdmlvclJlc3RyaWN0aW9uczsKLQotICAgIEJlaGF2
aW9yUmVzdHJpY3Rpb25zIGJlaGF2aW9yUmVzdHJpY3Rpb25zKCkgY29uc3QgeyByZXR1cm4gbV9y
ZXN0cmljdGlvbnM7IH0KLSAgICB2b2lkIGFkZEJlaGF2aW9yUmVzdHJpY3Rpb24oQmVoYXZpb3JS
ZXN0cmljdGlvbnMgcmVzdHJpY3Rpb24pIHsgbV9yZXN0cmljdGlvbnMgfD0gcmVzdHJpY3Rpb247
IH0KLSAgICB2b2lkIHJlbW92ZUJlaGF2aW9yUmVzdHJpY3Rpb24oQmVoYXZpb3JSZXN0cmljdGlv
bnMgcmVzdHJpY3Rpb24pIHsgbV9yZXN0cmljdGlvbnMgJj0gfnJlc3RyaWN0aW9uOyB9CisgICAg
QmVoYXZpb3JSZXN0cmljdGlvbnMgYmVoYXZpb3JSZXN0cmljdGlvbnMoKSBjb25zdCBmaW5hbCB7
IHJldHVybiBtX3Jlc3RyaWN0aW9uczsgfQorICAgIHZvaWQgYWRkQmVoYXZpb3JSZXN0cmljdGlv
bihCZWhhdmlvclJlc3RyaWN0aW9ucyByZXN0cmljdGlvbikgZmluYWwgeyBtX3Jlc3RyaWN0aW9u
cyB8PSByZXN0cmljdGlvbjsgfQorICAgIHZvaWQgcmVtb3ZlQmVoYXZpb3JSZXN0cmljdGlvbihC
ZWhhdmlvclJlc3RyaWN0aW9ucyByZXN0cmljdGlvbikgZmluYWwgeyBtX3Jlc3RyaWN0aW9ucyAm
PSB+cmVzdHJpY3Rpb247IH0KIAotICAgIHZvaWQgaXNQbGF5aW5nQXVkaW9EaWRDaGFuZ2UoKTsK
KyAgICB2b2lkIGlzUGxheWluZ0F1ZGlvRGlkQ2hhbmdlKCkgZmluYWw7CiAKLSAgICB2b2lkIG5v
ZGVXaWxsQmVnaW5QbGF5YmFjaygpOworICAgIHZvaWQgbm9kZVdpbGxCZWdpblBsYXliYWNrKCkg
ZmluYWw7CiAKICNpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKICAgICBjb25zdCBMb2dnZXImIGxv
Z2dlcigpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fbG9nZ2VyLmdldCgpOyB9CiAgICAgY29uc3Qg
dm9pZCogbG9nSWRlbnRpZmllcigpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fbG9nSWRlbnRpZmll
cjsgfQogICAgIFdURkxvZ0NoYW5uZWwmIGxvZ0NoYW5uZWwoKSBjb25zdCBmaW5hbDsKLSAgICBj
b25zdCB2b2lkKiBuZXh0QXVkaW9Ob2RlTG9nSWRlbnRpZmllcigpIHsgcmV0dXJuIGNoaWxkTG9n
SWRlbnRpZmllcihtX2xvZ0lkZW50aWZpZXIsICsrbV9uZXh0QXVkaW9Ob2RlSWRlbnRpZmllcik7
IH0KLSAgICBjb25zdCB2b2lkKiBuZXh0QXVkaW9QYXJhbWV0ZXJMb2dJZGVudGlmaWVyKCkgeyBy
ZXR1cm4gY2hpbGRMb2dJZGVudGlmaWVyKG1fbG9nSWRlbnRpZmllciwgKyttX25leHRBdWRpb1Bh
cmFtZXRlcklkZW50aWZpZXIpOyB9CisgICAgY29uc3Qgdm9pZCogbmV4dEF1ZGlvTm9kZUxvZ0lk
ZW50aWZpZXIoKSBmaW5hbCB7IHJldHVybiBjaGlsZExvZ0lkZW50aWZpZXIobV9sb2dJZGVudGlm
aWVyLCArK21fbmV4dEF1ZGlvTm9kZUlkZW50aWZpZXIpOyB9CisgICAgY29uc3Qgdm9pZCogbmV4
dEF1ZGlvUGFyYW1ldGVyTG9nSWRlbnRpZmllcigpIGZpbmFsIHsgcmV0dXJuIGNoaWxkTG9nSWRl
bnRpZmllcihtX2xvZ0lkZW50aWZpZXIsICsrbV9uZXh0QXVkaW9QYXJhbWV0ZXJJZGVudGlmaWVy
KTsgfQogI2VuZGlmCiAKLSAgICB2b2lkIHBvc3RUYXNrKFdURjo6RnVuY3Rpb248dm9pZCgpPiYm
KTsKLSAgICBib29sIGlzU3RvcHBlZCgpIGNvbnN0IHsgcmV0dXJuIG1faXNTdG9wU2NoZWR1bGVk
OyB9Ci0gICAgY29uc3QgU2VjdXJpdHlPcmlnaW4qIG9yaWdpbigpIGNvbnN0OwotICAgIHZvaWQg
YWRkQ29uc29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZSwgTWVzc2FnZUxldmVsLCBjb25zdCBTdHJp
bmcmIG1lc3NhZ2UpOwotCi0gICAgLy8gRXZlbnRUYXJnZXQKLSAgICBTY3JpcHRFeGVjdXRpb25D
b250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkgY29uc3QgZmluYWw7CisgICAgdm9pZCBw
b3N0VGFzayhXVEY6OkZ1bmN0aW9uPHZvaWQoKT4mJikgZmluYWw7CisgICAgYm9vbCBpc1N0b3Bw
ZWQoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2lzU3RvcFNjaGVkdWxlZDsgfQorICAgIGNvbnN0
IFNlY3VyaXR5T3JpZ2luKiBvcmlnaW4oKSBjb25zdCBmaW5hbDsKKyAgICB2b2lkIGFkZENvbnNv
bGVNZXNzYWdlKE1lc3NhZ2VTb3VyY2UsIE1lc3NhZ2VMZXZlbCwgY29uc3QgU3RyaW5nJiBtZXNz
YWdlKSBmaW5hbDsKIAogcHJvdGVjdGVkOgogICAgIGV4cGxpY2l0IEF1ZGlvQ29udGV4dChEb2N1
bWVudCYpOwpAQCAtMzYwLDkgKzQzMyw4IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIHZpc2liaWxp
dHlTdGF0ZUNoYW5nZWQoKSBmaW5hbDsKIAotICAgIC8vIEV2ZW50VGFyZ2V0Ci0gICAgdm9pZCBy
ZWZFdmVudFRhcmdldCgpIG92ZXJyaWRlIHsgcmVmKCk7IH0KLSAgICB2b2lkIGRlcmVmRXZlbnRU
YXJnZXQoKSBvdmVycmlkZSB7IGRlcmVmKCk7IH0KKyAgICBib29sIGlzQXVkaW9Db250ZXh0KCkg
Y29uc3QgZmluYWwgeyByZXR1cm4gdHJ1ZTsgfQorICAgIGJvb2wgaXNXZWJLaXRBdWRpb0NvbnRl
eHQoKSBjb25zdCBmaW5hbCB7IHJldHVybiBmYWxzZTsgfQogCiAgICAgdm9pZCBoYW5kbGVEaXJ0
eUF1ZGlvU3VtbWluZ0p1bmN0aW9ucygpOwogICAgIHZvaWQgaGFuZGxlRGlydHlBdWRpb05vZGVP
dXRwdXRzKCk7CkBAIC00NDYsMjEgKzUxOCwxMyBAQCBwcml2YXRlOgogICAgIFJlZlB0cjxQZW5k
aW5nQWN0aXZpdHk8QXVkaW9Db250ZXh0Pj4gbV9wZW5kaW5nQWN0aXZpdHk7CiB9OwogCi0vLyBG
SVhNRTogRmluZCBvdXQgd2h5IHRoZXNlID09LyE9IGZ1bmN0aW9ucyBhcmUgbmVlZGVkIGFuZCBy
ZW1vdmUgdGhlbSBpZiBwb3NzaWJsZS4KLQotaW5saW5lIGJvb2wgb3BlcmF0b3I9PShjb25zdCBB
dWRpb0NvbnRleHQmIGxocywgY29uc3QgQXVkaW9Db250ZXh0JiByaHMpCi17Ci0gICAgcmV0dXJu
ICZsaHMgPT0gJnJoczsKLX0KLQotaW5saW5lIGJvb2wgb3BlcmF0b3IhPShjb25zdCBBdWRpb0Nv
bnRleHQmIGxocywgY29uc3QgQXVkaW9Db250ZXh0JiByaHMpCi17Ci0gICAgcmV0dXJuICZsaHMg
IT0gJnJoczsKLX0KLQogaW5saW5lIEF1ZGlvQ29udGV4dDo6U3RhdGUgQXVkaW9Db250ZXh0Ojpz
dGF0ZSgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1fc3RhdGU7CiB9CiAKIH0gLy8gV2ViQ29yZQor
CitTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0JFR0lOKFdlYkNvcmU6OkF1ZGlvQ29udGV4dCkKKyAg
ICBzdGF0aWMgYm9vbCBpc1R5cGUoY29uc3QgV2ViQ29yZTo6QXVkaW9Db250ZXh0QmFzZSYgY29u
dGV4dCkgeyByZXR1cm4gY29udGV4dC5pc0F1ZGlvQ29udGV4dCgpOyB9CitTUEVDSUFMSVpFX1RZ
UEVfVFJBSVRTX0VORCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1
ZGlvL0F1ZGlvQ29udGV4dC5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1
ZGlvQ29udGV4dC5pZGwKaW5kZXggZTcxMTgzOWIzMzMwMGRlMzQxYzIzMWM0Y2M5NmU5ZTU3NjMy
NDEzNS4uZjFkNDljYTM2OGQ2NDUwNmFiYWI1Njk3OTA5ZWUwOTcyMWI1ZDhjZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0NvbnRleHQuaWRsCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0LmlkbApAQCAtMjMs
MTkgKzIzLDExIEBACiAgKiBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi1lbnVtIEF1ZGlvQ29udGV4dFN0YXRlIHsKLSAg
ICAic3VzcGVuZGVkIiwKLSAgICAicnVubmluZyIsCi0gICAgImludGVycnVwdGVkIiwKLSAgICAi
Y2xvc2VkIgotfTsKLQogWwogICAgIEFjdGl2ZURPTU9iamVjdCwKICAgICBDb25kaXRpb25hbD1X
RUJfQVVESU8sCi0gICAgRW5hYmxlZEJ5U2V0dGluZz1XZWJBdWRpbywKKyAgICBFbmFibGVkQnlT
ZXR0aW5nPU1vZGVyblVucHJlZml4ZWRXZWJBdWRpbywKICAgICBFeHBvcnRNYWNybz1XRUJDT1JF
X0VYUE9SVCwKLSAgICBJbnRlcmZhY2VOYW1lPXdlYmtpdEF1ZGlvQ29udGV4dCwKIF0gaW50ZXJm
YWNlIEF1ZGlvQ29udGV4dCA6IEV2ZW50VGFyZ2V0IHsKICAgICBbQ2FsbFdpdGg9RG9jdW1lbnQs
IE1heVRocm93RXhjZXB0aW9uXSBjb25zdHJ1Y3RvcigpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQ29udGV4dFN0YXRlLmggYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQ29udGV4dFN0YXRlLmgKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTYw
MTMxMTA4ZmE2YTRjMTRhOWFkNjE3YjkyY2EyMTQ3NDQ4NzgwYgotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0U3RhdGUuaApAQCAt
MCwwICsxLDMyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYtMjAyMCBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORCBB
TlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsK
KyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTgorICogQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTCisgKiBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworbmFtZXNwYWNlIFdl
YkNvcmUgeworCitlbnVtIGNsYXNzIEF1ZGlvQ29udGV4dFN0YXRlIHsgU3VzcGVuZGVkLCBSdW5u
aW5nLCBJbnRlcnJ1cHRlZCwgQ2xvc2VkIH07CisKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0U3RhdGUuaWRsIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0NvbnRleHRTdGF0ZS5pZGwKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzhk
MDhiZDJiNTYzY2Q4MjZlY2NhN2Y5Nzk0NGM3MTNhOGE3ZWY0YgotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0U3RhdGUuaWRsCkBA
IC0wLDAgKzEsMzEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAsIEdvb2dsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQgQU5Z
CisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7Cisg
KiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04KKyAqIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUworICogU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworZW51bSBBdWRpb0NvbnRleHRTdGF0ZSB7CisgICAg
InN1c3BlbmRlZCIsCisgICAgInJ1bm5pbmciLAorICAgICJpbnRlcnJ1cHRlZCIsCisgICAgImNs
b3NlZCIKK307CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1
ZGlvRGVzdGluYXRpb25Ob2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8v
QXVkaW9EZXN0aW5hdGlvbk5vZGUuY3BwCmluZGV4IGQ5YWJiOTc3N2E5ZDI1ZWVhZjI0MmZmNGZm
ZmM1ZWM1ZWY0ODZjNGUuLjY3NzYxN2VjYjMzOGRhODkxYTcxM2FlODhhM2Y1ZjY0ZjZmZDg0OWEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9EZXN0aW5h
dGlvbk5vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9E
ZXN0aW5hdGlvbk5vZGUuY3BwCkBAIC0zOSw3ICszOSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
ICAgICAKIFdURl9NQUtFX0lTT19BTExPQ0FURURfSU1QTChBdWRpb0Rlc3RpbmF0aW9uTm9kZSk7
CiAKLUF1ZGlvRGVzdGluYXRpb25Ob2RlOjpBdWRpb0Rlc3RpbmF0aW9uTm9kZShBdWRpb0NvbnRl
eHQmIGNvbnRleHQsIGZsb2F0IHNhbXBsZVJhdGUpCitBdWRpb0Rlc3RpbmF0aW9uTm9kZTo6QXVk
aW9EZXN0aW5hdGlvbk5vZGUoQXVkaW9Db250ZXh0QmFzZSYgY29udGV4dCwgZmxvYXQgc2FtcGxl
UmF0ZSkKICAgICA6IEF1ZGlvTm9kZShjb250ZXh0LCBzYW1wbGVSYXRlKQogICAgICwgbV9jdXJy
ZW50U2FtcGxlRnJhbWUoMCkKICAgICAsIG1faXNTaWxlbnQodHJ1ZSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9EZXN0aW5hdGlvbk5vZGUuaCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9EZXN0aW5hdGlvbk5vZGUuaAppbmRl
eCA4OTQ4ZjRlZTcwYTVjMGU4MWE4ZTgzYzFmMGNkNWZjZjQ1MWFjYzYwLi4zNzZmNDYyNzEyZDdm
MWMyYWU4ZDUyMDExZmEyYTE1ZjZlMThhZWM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmF1ZGlvL0F1ZGlvRGVzdGluYXRpb25Ob2RlLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0Rlc3RpbmF0aW9uTm9kZS5oCkBAIC0zNiw3ICszNiw3
IEBAIGNsYXNzIEF1ZGlvQ29udGV4dDsKIGNsYXNzIEF1ZGlvRGVzdGluYXRpb25Ob2RlIDogcHVi
bGljIEF1ZGlvTm9kZSwgcHVibGljIEF1ZGlvSU9DYWxsYmFjayB7CiAgICAgV1RGX01BS0VfSVNP
X0FMTE9DQVRFRChBdWRpb0Rlc3RpbmF0aW9uTm9kZSk7CiBwdWJsaWM6Ci0gICAgQXVkaW9EZXN0
aW5hdGlvbk5vZGUoQXVkaW9Db250ZXh0JiwgZmxvYXQgc2FtcGxlUmF0ZSk7CisgICAgQXVkaW9E
ZXN0aW5hdGlvbk5vZGUoQXVkaW9Db250ZXh0QmFzZSYsIGZsb2F0IHNhbXBsZVJhdGUpOwogICAg
IHZpcnR1YWwgfkF1ZGlvRGVzdGluYXRpb25Ob2RlKCk7CiAgICAgCiAgICAgLy8gQXVkaW9Ob2Rl
ICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvTm9k
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvTm9kZS5jcHAKaW5k
ZXggNzY1ZWNlMzMyZjYzNjljNDE5OGZlNTdkZDNhZTdjYzUxOTNiMmFjYS4uZTU1NDM3NzlkNTFh
NTA4Y2U2MWE2YTA4MzExMmU4ZDJkMGE4N2QwZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJhdWRpby9BdWRpb05vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViYXVkaW8vQXVkaW9Ob2RlLmNwcApAQCAtMzMsNiArMzMsNyBAQAogI2luY2x1ZGUgIkF1
ZGlvTm9kZU91dHB1dC5oIgogI2luY2x1ZGUgIkF1ZGlvUGFyYW0uaCIKICNpbmNsdWRlICJMb2dn
aW5nLmgiCisjaW5jbHVkZSAiV2ViS2l0QXVkaW9Db250ZXh0LmgiCiAjaW5jbHVkZSA8d3RmL0F0
b21pY3MuaD4KICNpbmNsdWRlIDx3dGYvSXNvTWFsbG9jSW5saW5lcy5oPgogI2luY2x1ZGUgPHd0
Zi9NYWluVGhyZWFkLmg+CkBAIC05NSw3ICs5Niw3IEBAIFN0cmluZyBjb252ZXJ0RW51bWVyYXRp
b25Ub1N0cmluZyhBdWRpb05vZGU6Ok5vZGVUeXBlIGVudW1lcmF0aW9uVmFsdWUpCiAgICAgcmV0
dXJuIHZhbHVlc1tzdGF0aWNfY2FzdDxzaXplX3Q+KGVudW1lcmF0aW9uVmFsdWUpXTsKIH0KIAot
QXVkaW9Ob2RlOjpBdWRpb05vZGUoQXVkaW9Db250ZXh0JiBjb250ZXh0LCBmbG9hdCBzYW1wbGVS
YXRlKQorQXVkaW9Ob2RlOjpBdWRpb05vZGUoQXVkaW9Db250ZXh0QmFzZSYgY29udGV4dCwgZmxv
YXQgc2FtcGxlUmF0ZSkKICAgICA6IG1faXNJbml0aWFsaXplZChmYWxzZSkKICAgICAsIG1fbm9k
ZVR5cGUoTm9kZVR5cGVVbmtub3duKQogICAgICwgbV9jb250ZXh0KGNvbnRleHQpCkBAIC0xOTQs
NyArMTk1LDcgQEAgQXVkaW9Ob2RlT3V0cHV0KiBBdWRpb05vZGU6Om91dHB1dCh1bnNpZ25lZCBp
KQogRXhjZXB0aW9uT3I8dm9pZD4gQXVkaW9Ob2RlOjpjb25uZWN0KEF1ZGlvTm9kZSYgZGVzdGlu
YXRpb24sIHVuc2lnbmVkIG91dHB1dEluZGV4LCB1bnNpZ25lZCBpbnB1dEluZGV4KQogewogICAg
IEFTU0VSVChpc01haW5UaHJlYWQoKSk7Ci0gICAgQXVkaW9Db250ZXh0OjpBdXRvTG9ja2VyIGxv
Y2tlcihjb250ZXh0KCkpOworICAgIEF1ZGlvQ29udGV4dEJhc2U6OkF1dG9Mb2NrZXIgbG9ja2Vy
KGNvbnRleHQoKSk7CiAKICAgICBBTFdBWVNfTE9HKExPR0lERU5USUZJRVIsIGRlc3RpbmF0aW9u
Lm5vZGVUeXBlKCksICIsIG91dHB1dCA9ICIsIG91dHB1dEluZGV4LCAiLCBpbnB1dCA9ICIsIGlu
cHV0SW5kZXgpOwogICAgIApAQCAtMjA1LDcgKzIwNiw3IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IEF1
ZGlvTm9kZTo6Y29ubmVjdChBdWRpb05vZGUmIGRlc3RpbmF0aW9uLCB1bnNpZ25lZCBvdXRwdXRJ
bmRlCiAgICAgaWYgKGlucHV0SW5kZXggPj0gZGVzdGluYXRpb24ubnVtYmVyT2ZJbnB1dHMoKSkK
ICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IEluZGV4U2l6ZUVycm9yIH07CiAKLSAgICBpZiAo
Y29udGV4dCgpICE9IGRlc3RpbmF0aW9uLmNvbnRleHQoKSkKKyAgICBpZiAoJmNvbnRleHQoKSAh
PSAmZGVzdGluYXRpb24uY29udGV4dCgpKQogICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgU3lu
dGF4RXJyb3IgfTsKIAogICAgIGF1dG8qIGlucHV0ID0gZGVzdGluYXRpb24uaW5wdXQoaW5wdXRJ
bmRleCk7CkBAIC0yMjAsNyArMjIxLDcgQEAgRXhjZXB0aW9uT3I8dm9pZD4gQXVkaW9Ob2RlOjpj
b25uZWN0KEF1ZGlvTm9kZSYgZGVzdGluYXRpb24sIHVuc2lnbmVkIG91dHB1dEluZGUKIAogRXhj
ZXB0aW9uT3I8dm9pZD4gQXVkaW9Ob2RlOjpjb25uZWN0KEF1ZGlvUGFyYW0mIHBhcmFtLCB1bnNp
Z25lZCBvdXRwdXRJbmRleCkKIHsKLSAgICBBdWRpb0NvbnRleHQ6OkF1dG9Mb2NrZXIgbG9ja2Vy
KGNvbnRleHQoKSk7CisgICAgQXVkaW9Db250ZXh0QmFzZTo6QXV0b0xvY2tlciBsb2NrZXIoY29u
dGV4dCgpKTsKIAogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAKQEAgLTIyOSw3ICsyMzAs
NyBAQCBFeGNlcHRpb25Pcjx2b2lkPiBBdWRpb05vZGU6OmNvbm5lY3QoQXVkaW9QYXJhbSYgcGFy
YW0sIHVuc2lnbmVkIG91dHB1dEluZGV4KQogICAgIGlmIChvdXRwdXRJbmRleCA+PSBudW1iZXJP
Zk91dHB1dHMoKSkKICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IEluZGV4U2l6ZUVycm9yIH07
CiAKLSAgICBpZiAoY29udGV4dCgpICE9IHBhcmFtLmNvbnRleHQoKSkKKyAgICBpZiAoJmNvbnRl
eHQoKSAhPSAmcGFyYW0uY29udGV4dCgpKQogICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgU3lu
dGF4RXJyb3IgfTsKIAogICAgIGF1dG8qIG91dHB1dCA9IHRoaXMtPm91dHB1dChvdXRwdXRJbmRl
eCk7CkBAIC0yNDEsNyArMjQyLDcgQEAgRXhjZXB0aW9uT3I8dm9pZD4gQXVkaW9Ob2RlOjpjb25u
ZWN0KEF1ZGlvUGFyYW0mIHBhcmFtLCB1bnNpZ25lZCBvdXRwdXRJbmRleCkKIEV4Y2VwdGlvbk9y
PHZvaWQ+IEF1ZGlvTm9kZTo6ZGlzY29ubmVjdCh1bnNpZ25lZCBvdXRwdXRJbmRleCkKIHsKICAg
ICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwotICAgIEF1ZGlvQ29udGV4dDo6QXV0b0xvY2tlciBs
b2NrZXIoY29udGV4dCgpKTsKKyAgICBBdWRpb0NvbnRleHRCYXNlOjpBdXRvTG9ja2VyIGxvY2tl
cihjb250ZXh0KCkpOwogCiAgICAgLy8gU2FuaXR5IGNoZWNrIGlucHV0IGFuZCBvdXRwdXQgaW5k
aWNlcy4KICAgICBpZiAob3V0cHV0SW5kZXggPj0gbnVtYmVyT2ZPdXRwdXRzKCkpCkBAIC0yNjMs
NyArMjY0LDcgQEAgdW5zaWduZWQgQXVkaW9Ob2RlOjpjaGFubmVsQ291bnQoKQogRXhjZXB0aW9u
T3I8dm9pZD4gQXVkaW9Ob2RlOjpzZXRDaGFubmVsQ291bnQodW5zaWduZWQgY2hhbm5lbENvdW50
KQogewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7Ci0gICAgQXVkaW9Db250ZXh0OjpBdXRv
TG9ja2VyIGxvY2tlcihjb250ZXh0KCkpOworICAgIEF1ZGlvQ29udGV4dEJhc2U6OkF1dG9Mb2Nr
ZXIgbG9ja2VyKGNvbnRleHQoKSk7CiAKICAgICBBTFdBWVNfTE9HKExPR0lERU5USUZJRVIsIGNo
YW5uZWxDb3VudCk7CiAgICAgCkBAIC0yOTYsNyArMjk3LDcgQEAgU3RyaW5nIEF1ZGlvTm9kZTo6
Y2hhbm5lbENvdW50TW9kZSgpCiBFeGNlcHRpb25Pcjx2b2lkPiBBdWRpb05vZGU6OnNldENoYW5u
ZWxDb3VudE1vZGUoY29uc3QgU3RyaW5nJiBtb2RlKQogewogICAgIEFTU0VSVChpc01haW5UaHJl
YWQoKSk7Ci0gICAgQXVkaW9Db250ZXh0OjpBdXRvTG9ja2VyIGxvY2tlcihjb250ZXh0KCkpOwor
ICAgIEF1ZGlvQ29udGV4dEJhc2U6OkF1dG9Mb2NrZXIgbG9ja2VyKGNvbnRleHQoKSk7CiAKICAg
ICBBTFdBWVNfTE9HKExPR0lERU5USUZJRVIsIG1vZGUpOwogICAgIApAQCAtMzMyLDcgKzMzMyw3
IEBAIFN0cmluZyBBdWRpb05vZGU6OmNoYW5uZWxJbnRlcnByZXRhdGlvbigpCiBFeGNlcHRpb25P
cjx2b2lkPiBBdWRpb05vZGU6OnNldENoYW5uZWxJbnRlcnByZXRhdGlvbihjb25zdCBTdHJpbmcm
IGludGVycHJldGF0aW9uKQogewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7Ci0gICAgQXVk
aW9Db250ZXh0OjpBdXRvTG9ja2VyIGxvY2tlcihjb250ZXh0KCkpOworICAgIEF1ZGlvQ29udGV4
dEJhc2U6OkF1dG9Mb2NrZXIgbG9ja2VyKGNvbnRleHQoKSk7CiAKICAgICBBTFdBWVNfTE9HKExP
R0lERU5USUZJRVIsIGludGVycHJldGF0aW9uKTsKICAgICAKQEAgLTQzNyw3ICs0MzgsNyBAQCB2
b2lkIEF1ZGlvTm9kZTo6ZW5hYmxlT3V0cHV0c0lmTmVjZXNzYXJ5KCkKIHsKICAgICBpZiAobV9p
c0Rpc2FibGVkICYmIG1fY29ubmVjdGlvblJlZkNvdW50ID4gMCkgewogICAgICAgICBBU1NFUlQo
aXNNYWluVGhyZWFkKCkpOwotICAgICAgICBBdWRpb0NvbnRleHQ6OkF1dG9Mb2NrZXIgbG9ja2Vy
KGNvbnRleHQoKSk7CisgICAgICAgIEF1ZGlvQ29udGV4dEJhc2U6OkF1dG9Mb2NrZXIgbG9ja2Vy
KGNvbnRleHQoKSk7CiAKICAgICAgICAgbV9pc0Rpc2FibGVkID0gZmFsc2U7CiAgICAgICAgIGZv
ciAoYXV0byYgb3V0cHV0IDogbV9vdXRwdXRzKQpAQCAtNTAxLDcgKzUwMiw3IEBAIHZvaWQgQXVk
aW9Ob2RlOjpkZXJlZihSZWZUeXBlIHJlZlR5cGUpCiAgICAgLy8gSW4gdGhlIGNhc2Ugb2YgdGhl
IGF1ZGlvIHRocmVhZCwgd2UgbXVzdCB1c2UgYSB0cnlMb2NrIHRvIGF2b2lkIGdsaXRjaGVzLgog
ICAgIGJvb2wgaGFzTG9jayA9IGZhbHNlOwogICAgIGJvb2wgbXVzdFJlbGVhc2VMb2NrID0gZmFs
c2U7Ci0gICAgCisKICAgICBpZiAoY29udGV4dCgpLmlzQXVkaW9UaHJlYWQoKSkgewogICAgICAg
ICAvLyBSZWFsLXRpbWUgYXVkaW8gdGhyZWFkIG11c3Qgbm90IGNvbnRlbmQgbG9jayAodG8gYXZv
aWQgZ2xpdGNoZXMpLgogICAgICAgICBoYXNMb2NrID0gY29udGV4dCgpLnRyeUxvY2sobXVzdFJl
bGVhc2VMb2NrKTsKQEAgLTUzMCw2ICs1MzEsMTMgQEAgdm9pZCBBdWRpb05vZGU6OmRlcmVmKFJl
ZlR5cGUgcmVmVHlwZSkKICAgICAgICAgY29udGV4dCgpLmRlbGV0ZU1hcmtlZE5vZGVzKCk7CiB9
CiAKK1ZhcmlhbnQ8UmVmUHRyPEF1ZGlvQ29udGV4dD4sIFJlZlB0cjxXZWJLaXRBdWRpb0NvbnRl
eHQ+PiBBdWRpb05vZGU6OmNvbnRleHRGb3JCaW5kaW5ncygpIGNvbnN0Cit7CisgICAgaWYgKG1f
Y29udGV4dC0+aXNXZWJLaXRBdWRpb0NvbnRleHQoKSkKKyAgICAgICAgcmV0dXJuIG1ha2VSZWZQ
dHIoc3RhdGljX2Nhc3Q8V2ViS2l0QXVkaW9Db250ZXh0Jj4obV9jb250ZXh0LmdldCgpKSk7Cisg
ICAgcmV0dXJuIG1ha2VSZWZQdHIoc3RhdGljX2Nhc3Q8QXVkaW9Db250ZXh0Jj4obV9jb250ZXh0
LmdldCgpKSk7Cit9CisKIHZvaWQgQXVkaW9Ob2RlOjpmaW5pc2hEZXJlZihSZWZUeXBlIHJlZlR5
cGUpCiB7CiAgICAgQVNTRVJUKGNvbnRleHQoKS5pc0dyYXBoT3duZXIoKSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvTm9kZS5oIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb05vZGUuaAppbmRleCA0MjEwMTAwNmNjN2Y1NGVl
NzVhZGY3MDcyZWZiZTY0YmFjNThkMzZkLi5hOTg4MWJkNGI4ZGI0YzNiMTBmOWQ3NzExNjU2MjYw
MGMxODBmYzkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1
ZGlvTm9kZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Ob2Rl
LmgKQEAgLTI5LDE1ICsyOSwxOCBAQAogI2luY2x1ZGUgIkV4Y2VwdGlvbk9yLmgiCiAjaW5jbHVk
ZSA8d3RmL0ZvcndhcmQuaD4KICNpbmNsdWRlIDx3dGYvTG9nZ2VySGVscGVyLmg+CisjaW5jbHVk
ZSA8d3RmL1ZhcmlhbnQuaD4KIAogI2RlZmluZSBERUJVR19BVURJT05PREVfUkVGRVJFTkNFUyAw
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQXVkaW9Db250ZXh0OworY2xhc3MgQXVk
aW9Db250ZXh0QmFzZTsKIGNsYXNzIEF1ZGlvTm9kZUlucHV0OwogY2xhc3MgQXVkaW9Ob2RlT3V0
cHV0OwogY2xhc3MgQXVkaW9QYXJhbTsKK2NsYXNzIFdlYktpdEF1ZGlvQ29udGV4dDsKIAogLy8g
QW4gQXVkaW9Ob2RlIGlzIHRoZSBiYXNpYyBidWlsZGluZyBibG9jayBmb3IgaGFuZGxpbmcgYXVk
aW8gd2l0aGluIGFuIEF1ZGlvQ29udGV4dC4KIC8vIEl0IG1heSBiZSBhbiBhdWRpbyBzb3VyY2Us
IGFuIGludGVybWVkaWF0ZSBwcm9jZXNzaW5nIG1vZHVsZSwgb3IgYW4gYXVkaW8gZGVzdGluYXRp
b24uCkBAIC01NiwxMSArNTksMTMgQEAgY2xhc3MgQXVkaW9Ob2RlCiBwdWJsaWM6CiAgICAgZW51
bSB7IFByb2Nlc3NpbmdTaXplSW5GcmFtZXMgPSAxMjggfTsKIAotICAgIEF1ZGlvTm9kZShBdWRp
b0NvbnRleHQmLCBmbG9hdCBzYW1wbGVSYXRlKTsKKyAgICBBdWRpb05vZGUoQXVkaW9Db250ZXh0
QmFzZSYsIGZsb2F0IHNhbXBsZVJhdGUpOwogICAgIHZpcnR1YWwgfkF1ZGlvTm9kZSgpOwogCi0g
ICAgQXVkaW9Db250ZXh0JiBjb250ZXh0KCkgeyByZXR1cm4gbV9jb250ZXh0LmdldCgpOyB9Ci0g
ICAgY29uc3QgQXVkaW9Db250ZXh0JiBjb250ZXh0KCkgY29uc3QgeyByZXR1cm4gbV9jb250ZXh0
LmdldCgpOyB9CisgICAgQXVkaW9Db250ZXh0QmFzZSYgY29udGV4dCgpIHsgcmV0dXJuIG1fY29u
dGV4dC5nZXQoKTsgfQorICAgIGNvbnN0IEF1ZGlvQ29udGV4dEJhc2UmIGNvbnRleHQoKSBjb25z
dCB7IHJldHVybiBtX2NvbnRleHQuZ2V0KCk7IH0KKworICAgIFZhcmlhbnQ8UmVmUHRyPEF1ZGlv
Q29udGV4dD4sIFJlZlB0cjxXZWJLaXRBdWRpb0NvbnRleHQ+PiBjb250ZXh0Rm9yQmluZGluZ3Mo
KSBjb25zdDsKIAogICAgIGVudW0gTm9kZVR5cGUgewogICAgICAgICBOb2RlVHlwZVVua25vd24s
CkBAIC0yMDksNyArMjE0LDcgQEAgcHJpdmF0ZToKIAogICAgIHZvbGF0aWxlIGJvb2wgbV9pc0lu
aXRpYWxpemVkOwogICAgIE5vZGVUeXBlIG1fbm9kZVR5cGU7Ci0gICAgUmVmPEF1ZGlvQ29udGV4
dD4gbV9jb250ZXh0OworICAgIFJlZjxBdWRpb0NvbnRleHRCYXNlPiBtX2NvbnRleHQ7CiAgICAg
ZmxvYXQgbV9zYW1wbGVSYXRlOwogICAgIFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8QXVkaW9Ob2Rl
SW5wdXQ+PiBtX2lucHV0czsKICAgICBWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPEF1ZGlvTm9kZU91
dHB1dD4+IG1fb3V0cHV0czsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
YXVkaW8vQXVkaW9Ob2RlLmlkbCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVk
aW9Ob2RlLmlkbAppbmRleCA3MGZlYzhjODE0NTA1OTkxZTIwYWQ4YzFjOTJjYzExZWVlOTY4NDJm
Li43MTkzOWM4MzE3MTRiZmJmMzZkZmJhZTUyZmJjM2QzZDIwMmY2NjIxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvTm9kZS5pZGwKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb05vZGUuaWRsCkBAIC0yNSw3ICsyNSw3IEBA
CiBbCiAgICAgQ29uZGl0aW9uYWw9V0VCX0FVRElPLAogXSBpbnRlcmZhY2UgQXVkaW9Ob2RlIDog
RXZlbnRUYXJnZXQgewotICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBBdWRpb0NvbnRleHQgY29udGV4
dDsKKyAgICBbSW1wbGVtZW50ZWRBcz1jb250ZXh0Rm9yQmluZGluZ3NdIHJlYWRvbmx5IGF0dHJp
YnV0ZSAoQXVkaW9Db250ZXh0IG9yIFdlYktpdEF1ZGlvQ29udGV4dCkgY29udGV4dDsKICAgICBy
ZWFkb25seSBhdHRyaWJ1dGUgdW5zaWduZWQgbG9uZyBudW1iZXJPZklucHV0czsKICAgICByZWFk
b25seSBhdHRyaWJ1dGUgdW5zaWduZWQgbG9uZyBudW1iZXJPZk91dHB1dHM7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Ob2RlT3V0cHV0LmggYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvTm9kZU91dHB1dC5oCmluZGV4IDUw
YTk1ZWUyMDVjMTIwMzA5M2NhNWZjMzA3MTc5OTEzNTMyZDczYTQuLmYwODk4MzYzNWYzYzU1OWM3
OTgxZjBiYTRhNWMxMjJiMTU5YzJjYjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViYXVkaW8vQXVkaW9Ob2RlT3V0cHV0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJhdWRpby9BdWRpb05vZGVPdXRwdXQuaApAQCAtNDcsNyArNDcsNyBAQCBwdWJsaWM6CiAK
ICAgICAvLyBDYW4gYmUgY2FsbGVkIGZyb20gYW55IHRocmVhZC4KICAgICBBdWRpb05vZGUqIG5v
ZGUoKSBjb25zdCB7IHJldHVybiBtX25vZGU7IH0KLSAgICBBdWRpb0NvbnRleHQmIGNvbnRleHQo
KSB7IHJldHVybiBtX25vZGUtPmNvbnRleHQoKTsgfQorICAgIEF1ZGlvQ29udGV4dEJhc2UmIGNv
bnRleHQoKSB7IHJldHVybiBtX25vZGUtPmNvbnRleHQoKTsgfQogICAgIAogICAgIC8vIENhdXNl
cyBvdXIgQXVkaW9Ob2RlIHRvIHByb2Nlc3MgaWYgaXQgaGFzbid0IGFscmVhZHkgZm9yIHRoaXMg
cmVuZGVyIHF1YW50dW0uCiAgICAgLy8gSXQgcmV0dXJucyB0aGUgYnVzIGNvbnRhaW5pbmcgdGhl
IHByb2Nlc3NlZCBhdWRpbyBmb3IgdGhpcyBvdXRwdXQsIHJldHVybmluZyBpblBsYWNlQnVzIGlm
IGluLXBsYWNlIHByb2Nlc3Npbmcgd2FzIHBvc3NpYmxlLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1BhcmFtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViYXVkaW8vQXVkaW9QYXJhbS5jcHAKaW5kZXggMjkzNDU2NDQ1Y2MwZTFiZGE5ZDAw
ZDJiZDlhMmMwZDExMTAzZGNjOS4uZDQ3MGJmNzQ2ZWZiNWFiMjNjYTM1MmQ3YmQ5NTMzOGMzODE0
ZmU3YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1Bh
cmFtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvUGFyYW0u
Y3BwCkBAIC00MSw3ICs0MSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNvbnN0IGRvdWJsZSBB
dWRpb1BhcmFtOjpEZWZhdWx0U21vb3RoaW5nQ29uc3RhbnQgPSAwLjA1OwogY29uc3QgZG91Ymxl
IEF1ZGlvUGFyYW06OlNuYXBUaHJlc2hvbGQgPSAwLjAwMTsKIAotQXVkaW9QYXJhbTo6QXVkaW9Q
YXJhbShBdWRpb0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IFN0cmluZyYgbmFtZSwgZG91YmxlIGRl
ZmF1bHRWYWx1ZSwgZG91YmxlIG1pblZhbHVlLCBkb3VibGUgbWF4VmFsdWUsIHVuc2lnbmVkIHVu
aXRzKQorQXVkaW9QYXJhbTo6QXVkaW9QYXJhbShBdWRpb0NvbnRleHRCYXNlJiBjb250ZXh0LCBj
b25zdCBTdHJpbmcmIG5hbWUsIGRvdWJsZSBkZWZhdWx0VmFsdWUsIGRvdWJsZSBtaW5WYWx1ZSwg
ZG91YmxlIG1heFZhbHVlLCB1bnNpZ25lZCB1bml0cykKICAgICA6IEF1ZGlvU3VtbWluZ0p1bmN0
aW9uKGNvbnRleHQpCiAgICAgLCBtX25hbWUobmFtZSkKICAgICAsIG1fdmFsdWUoZGVmYXVsdFZh
bHVlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1Bh
cmFtLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvUGFyYW0uaAppbmRl
eCAyMjZjOTU3ZTcwNmZlNjFkMmYyMzNjMGQ1YmY5NmYyMDY4NzMxYzQyLi4xNmEyMTA5NTA0NGY2
MDFlZDI3Yjg5MDFhMDc2OGYyZmE5ZWIxNmU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmF1ZGlvL0F1ZGlvUGFyYW0uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmF1ZGlvL0F1ZGlvUGFyYW0uaApAQCAtMzEsNiArMzEsNyBAQAogI2luY2x1ZGUgIkF1ZGlv
Q29udGV4dC5oIgogI2luY2x1ZGUgIkF1ZGlvUGFyYW1UaW1lbGluZS5oIgogI2luY2x1ZGUgIkF1
ZGlvU3VtbWluZ0p1bmN0aW9uLmgiCisjaW5jbHVkZSAiV2ViS2l0QXVkaW9Db250ZXh0LmgiCiAj
aW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvRmxvYXQzMkFycmF5Lmg+CiAjaW5jbHVkZSA8c3lzL3R5
cGVzLmg+CiAjaW5jbHVkZSA8d3RmL0xvZ2dlckhlbHBlci5oPgpAQCAtNTIsNyArNTMsNyBAQCBw
dWJsaWM6CiAgICAgc3RhdGljIGNvbnN0IGRvdWJsZSBEZWZhdWx0U21vb3RoaW5nQ29uc3RhbnQ7
CiAgICAgc3RhdGljIGNvbnN0IGRvdWJsZSBTbmFwVGhyZXNob2xkOwogCi0gICAgc3RhdGljIFJl
ZjxBdWRpb1BhcmFtPiBjcmVhdGUoQXVkaW9Db250ZXh0JiBjb250ZXh0LCBjb25zdCBTdHJpbmcm
IG5hbWUsIGRvdWJsZSBkZWZhdWx0VmFsdWUsIGRvdWJsZSBtaW5WYWx1ZSwgZG91YmxlIG1heFZh
bHVlLCB1bnNpZ25lZCB1bml0cyA9IDApCisgICAgc3RhdGljIFJlZjxBdWRpb1BhcmFtPiBjcmVh
dGUoQXVkaW9Db250ZXh0QmFzZSYgY29udGV4dCwgY29uc3QgU3RyaW5nJiBuYW1lLCBkb3VibGUg
ZGVmYXVsdFZhbHVlLCBkb3VibGUgbWluVmFsdWUsIGRvdWJsZSBtYXhWYWx1ZSwgdW5zaWduZWQg
dW5pdHMgPSAwKQogICAgIHsKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQXVkaW9QYXJh
bShjb250ZXh0LCBuYW1lLCBkZWZhdWx0VmFsdWUsIG1pblZhbHVlLCBtYXhWYWx1ZSwgdW5pdHMp
KTsKICAgICB9CkBAIC0xMDgsNyArMTA5LDcgQEAgcHVibGljOgogICAgIHZvaWQgZGlzY29ubmVj
dChBdWRpb05vZGVPdXRwdXQqKTsKIAogcHJvdGVjdGVkOgotICAgIEF1ZGlvUGFyYW0oQXVkaW9D
b250ZXh0JiwgY29uc3QgU3RyaW5nJiwgZG91YmxlIGRlZmF1bHRWYWx1ZSwgZG91YmxlIG1pblZh
bHVlLCBkb3VibGUgbWF4VmFsdWUsIHVuc2lnbmVkIHVuaXRzID0gMCk7CisgICAgQXVkaW9QYXJh
bShBdWRpb0NvbnRleHRCYXNlJiwgY29uc3QgU3RyaW5nJiwgZG91YmxlIGRlZmF1bHRWYWx1ZSwg
ZG91YmxlIG1pblZhbHVlLCBkb3VibGUgbWF4VmFsdWUsIHVuc2lnbmVkIHVuaXRzID0gMCk7CiAK
IHByaXZhdGU6CiAgICAgLy8gc2FtcGxlQWNjdXJhdGUgY29ycmVzcG9uZHMgdG8gYS1yYXRlIChh
dWRpbyByYXRlKSB2cy4gay1yYXRlIGluIHRoZSBXZWIgQXVkaW8gc3BlY2lmaWNhdGlvbi4KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9QYXJhbVRpbWVs
aW5lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9QYXJhbVRpbWVs
aW5lLmNwcAppbmRleCAyYjU5NTcwYmY2ZTYxYjU0ODNlZDFiOTA3ZTY3NmY2OWJlOWIzNzQyLi42
YzQxMzAxZDhhZDVhN2FiYmU4ZGIwZGJhMTdjZjg0NGJmZWZmYjYwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvUGFyYW1UaW1lbGluZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1BhcmFtVGltZWxpbmUuY3BwCkBA
IC0xMTMsNyArMTEzLDcgQEAgdm9pZCBBdWRpb1BhcmFtVGltZWxpbmU6OmNhbmNlbFNjaGVkdWxl
ZFZhbHVlcyhmbG9hdCBzdGFydFRpbWUpCiAgICAgfQogfQogCi1mbG9hdCBBdWRpb1BhcmFtVGlt
ZWxpbmU6OnZhbHVlRm9yQ29udGV4dFRpbWUoQXVkaW9Db250ZXh0JiBjb250ZXh0LCBmbG9hdCBk
ZWZhdWx0VmFsdWUsIGJvb2wmIGhhc1ZhbHVlKQorZmxvYXQgQXVkaW9QYXJhbVRpbWVsaW5lOjp2
YWx1ZUZvckNvbnRleHRUaW1lKEF1ZGlvQ29udGV4dEJhc2UmIGNvbnRleHQsIGZsb2F0IGRlZmF1
bHRWYWx1ZSwgYm9vbCYgaGFzVmFsdWUpCiB7CiAgICAgewogICAgICAgICBzdGQ6OnVuaXF1ZV9s
b2NrPExvY2s+IGxvY2sobV9ldmVudHNNdXRleCwgc3RkOjp0cnlfdG9fbG9jayk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvUGFyYW1UaW1lbGluZS5o
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1BhcmFtVGltZWxpbmUuaApp
bmRleCA3YzEwOTk5NTZjZWViYzhkOGY2ZDUwZTBmYjBmYzlhMWVlZmRhMzRkLi5hNTg2OGJkZWUx
ODNmZGUyYTcwOGQ0NjRjZTYzNWIyNDAwZTc2MWEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvUGFyYW1UaW1lbGluZS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9QYXJhbVRpbWVsaW5lLmgKQEAgLTUyLDcgKzUyLDcg
QEAgcHVibGljOgogCiAgICAgLy8gaGFzVmFsdWUgaXMgc2V0IHRvIHRydWUgaWYgYSB2YWxpZCB0
aW1lbGluZSB2YWx1ZSBpcyByZXR1cm5lZC4KICAgICAvLyBvdGhlcndpc2UgZGVmYXVsdFZhbHVl
IGlzIHJldHVybmVkLgotICAgIGZsb2F0IHZhbHVlRm9yQ29udGV4dFRpbWUoQXVkaW9Db250ZXh0
JiwgZmxvYXQgZGVmYXVsdFZhbHVlLCBib29sJiBoYXNWYWx1ZSk7CisgICAgZmxvYXQgdmFsdWVG
b3JDb250ZXh0VGltZShBdWRpb0NvbnRleHRCYXNlJiwgZmxvYXQgZGVmYXVsdFZhbHVlLCBib29s
JiBoYXNWYWx1ZSk7CiAKICAgICAvLyBHaXZlbiB0aGUgdGltZSByYW5nZSwgY2FsY3VsYXRlcyBw
YXJhbWV0ZXIgdmFsdWVzIGludG8gdGhlIHZhbHVlcyBidWZmZXIKICAgICAvLyBhbmQgcmV0dXJu
cyB0aGUgbGFzdCBwYXJhbWV0ZXIgdmFsdWUgY2FsY3VsYXRlZCBmb3IgInZhbHVlcyIgb3IgdGhl
IGRlZmF1bHRWYWx1ZSBpZiBub25lIHdlcmUgY2FsY3VsYXRlZC4KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9TY2hlZHVsZWRTb3VyY2VOb2RlLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9TY2hlZHVsZWRTb3VyY2VOb2Rl
LmNwcAppbmRleCAwZjcyNjc2ZmM3NDNjNGNlMjQxYWVlM2M5MGQwMjhmNmE5NTI3MDIzLi43YzI4
MjM3YTBiZDAzNWU0YzNhYjdiYTUxMzc1MzNiZDkxNWE3ZTYxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvU2NoZWR1bGVkU291cmNlTm9kZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1NjaGVkdWxlZFNvdXJjZU5v
ZGUuY3BwCkBAIC00OSw3ICs0OSw3IEBAIFdURl9NQUtFX0lTT19BTExPQ0FURURfSU1QTChBdWRp
b1NjaGVkdWxlZFNvdXJjZU5vZGUpOwogCiBjb25zdCBkb3VibGUgQXVkaW9TY2hlZHVsZWRTb3Vy
Y2VOb2RlOjpVbmtub3duVGltZSA9IC0xOwogCi1BdWRpb1NjaGVkdWxlZFNvdXJjZU5vZGU6OkF1
ZGlvU2NoZWR1bGVkU291cmNlTm9kZShBdWRpb0NvbnRleHQmIGNvbnRleHQsIGZsb2F0IHNhbXBs
ZVJhdGUpCitBdWRpb1NjaGVkdWxlZFNvdXJjZU5vZGU6OkF1ZGlvU2NoZWR1bGVkU291cmNlTm9k
ZShBdWRpb0NvbnRleHRCYXNlJiBjb250ZXh0LCBmbG9hdCBzYW1wbGVSYXRlKQogICAgIDogQXVk
aW9Ob2RlKGNvbnRleHQsIHNhbXBsZVJhdGUpCiAgICAgLCBBY3RpdmVET01PYmplY3QoY29udGV4
dC5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpCiAgICAgLCBtX2VuZFRpbWUoVW5rbm93blRpbWUp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvU2NoZWR1
bGVkU291cmNlTm9kZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1Nj
aGVkdWxlZFNvdXJjZU5vZGUuaAppbmRleCA4Y2FkYmUxMGFmZDNhNGQ3ZWNlMjAyMjAyNDQzODdm
NGNlMTRjMmU0Li5iNGQ5NTg4MGMxZGYzNjZmODIxZTFhYmZjZmNhNzdkNzYxMTBlYTNmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvU2NoZWR1bGVkU291
cmNlTm9kZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9TY2hl
ZHVsZWRTb3VyY2VOb2RlLmgKQEAgLTUzLDcgKzUzLDcgQEAgcHVibGljOgogICAgICAgICBGSU5J
U0hFRF9TVEFURSA9IDMKICAgICB9OwogICAgIAotICAgIEF1ZGlvU2NoZWR1bGVkU291cmNlTm9k
ZShBdWRpb0NvbnRleHQmLCBmbG9hdCBzYW1wbGVSYXRlKTsKKyAgICBBdWRpb1NjaGVkdWxlZFNv
dXJjZU5vZGUoQXVkaW9Db250ZXh0QmFzZSYsIGZsb2F0IHNhbXBsZVJhdGUpOwogCiAgICAgRXhj
ZXB0aW9uT3I8dm9pZD4gc3RhcnRMYXRlcihkb3VibGUgd2hlbik7CiAgICAgRXhjZXB0aW9uT3I8
dm9pZD4gc3RvcExhdGVyKGRvdWJsZSB3aGVuKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViYXVkaW8vQXVkaW9TdW1taW5nSnVuY3Rpb24uY3BwIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1N1bW1pbmdKdW5jdGlvbi5jcHAKaW5kZXggZWU2MDBh
NjI5YTFiODY5Y2Q5YTViM2QzNzJhZTQ3NmEzZTEyN2ZiMC4uZGQ2NGZkM2VhODEzMTFmMDBlMDhj
M2NhNDFkNzQyOGYxZjFmMzg3OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJhdWRpby9BdWRpb1N1bW1pbmdKdW5jdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJhdWRpby9BdWRpb1N1bW1pbmdKdW5jdGlvbi5jcHAKQEAgLTM0LDcgKzM0LDcgQEAK
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1BdWRpb1N1bW1pbmdKdW5jdGlvbjo6QXVkaW9TdW1t
aW5nSnVuY3Rpb24oQXVkaW9Db250ZXh0JiBjb250ZXh0KQorQXVkaW9TdW1taW5nSnVuY3Rpb246
OkF1ZGlvU3VtbWluZ0p1bmN0aW9uKEF1ZGlvQ29udGV4dEJhc2UmIGNvbnRleHQpCiAgICAgOiBt
X2NvbnRleHQoY29udGV4dCkKICAgICAsIG1fcmVuZGVyaW5nU3RhdGVOZWVkVXBkYXRpbmcoZmFs
c2UpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlv
U3VtbWluZ0p1bmN0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlv
U3VtbWluZ0p1bmN0aW9uLmgKaW5kZXggYzk0ZmY2ZDZhNWFlZDExMTAyMDhjNDc2NDM4M2Q3ZTU2
ZmQ4NDYzYi4uNGNiZjhhZTlmYjk1MWI3ODIwNzZiMGNiNTI2MTE2YzE5ZDRhZWM5YiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1N1bW1pbmdKdW5jdGlv
bi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9TdW1taW5nSnVu
Y3Rpb24uaApAQCAtMzAsMTggKzMwLDE4IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xh
c3MgQXVkaW9Db250ZXh0OworY2xhc3MgQXVkaW9Db250ZXh0QmFzZTsKIGNsYXNzIEF1ZGlvTm9k
ZU91dHB1dDsKIAogLy8gQW4gQXVkaW9TdW1taW5nSnVuY3Rpb24gcmVwcmVzZW50cyBhIHBvaW50
IHdoZXJlIHplcm8sIG9uZSwgb3IgbW9yZSBBdWRpb05vZGVPdXRwdXRzIGNvbm5lY3QuCiAKIGNs
YXNzIEF1ZGlvU3VtbWluZ0p1bmN0aW9uIHsKIHB1YmxpYzoKLSAgICBleHBsaWNpdCBBdWRpb1N1
bW1pbmdKdW5jdGlvbihBdWRpb0NvbnRleHQmKTsKKyAgICBleHBsaWNpdCBBdWRpb1N1bW1pbmdK
dW5jdGlvbihBdWRpb0NvbnRleHRCYXNlJik7CiAgICAgdmlydHVhbCB+QXVkaW9TdW1taW5nSnVu
Y3Rpb24oKTsKIAogICAgIC8vIENhbiBiZSBjYWxsZWQgZnJvbSBhbnkgdGhyZWFkLgotICAgIEF1
ZGlvQ29udGV4dCYgY29udGV4dCgpIHsgcmV0dXJuIG1fY29udGV4dC5nZXQoKTsgfQorICAgIEF1
ZGlvQ29udGV4dEJhc2UmIGNvbnRleHQoKSB7IHJldHVybiBtX2NvbnRleHQ7IH0KIAogICAgIC8v
IFRoaXMgbXVzdCBiZSBjYWxsZWQgd2hlbmV2ZXIgd2UgbW9kaWZ5IG1fb3V0cHV0cy4KICAgICB2
b2lkIGNoYW5nZWRPdXRwdXRzKCk7CkBAIC02MCw3ICs2MCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0
dWFsIHZvaWQgZGlkVXBkYXRlKCkgPSAwOwogCiBwcm90ZWN0ZWQ6Ci0gICAgUmVmPEF1ZGlvQ29u
dGV4dD4gbV9jb250ZXh0OworICAgIFJlZjxBdWRpb0NvbnRleHRCYXNlPiBtX2NvbnRleHQ7CiAK
ICAgICAvLyBtX291dHB1dHMgY29udGFpbnMgdGhlIEF1ZGlvTm9kZU91dHB1dHMgcmVwcmVzZW50
aW5nIGN1cnJlbnQgY29ubmVjdGlvbnMgd2hpY2ggYXJlIG5vdCBkaXNhYmxlZC4KICAgICAvLyBU
aGUgcmVuZGVyaW5nIGNvZGUgc2hvdWxkIG5ldmVyIHVzZSB0aGlzIGRpcmVjdGx5LCBidXQgaW5z
dGVhZCB1c2VzIG1fcmVuZGVyaW5nT3V0cHV0cy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViYXVkaW8vQmlxdWFkRmlsdGVyTm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmF1ZGlvL0JpcXVhZEZpbHRlck5vZGUuY3BwCmluZGV4IDRhODI1NWU2ZjBhZjA3
NjcxMzhlNDY4OThmOGI2MzZhYjJkNzU2ZTUuLmRkZTA3NzNkNDczZDI3MjJhNWI1M2RjODY5MDZk
MzkzNzBjYmZmNDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8v
QmlxdWFkRmlsdGVyTm9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRp
by9CaXF1YWRGaWx0ZXJOb2RlLmNwcApAQCAtMzMsNyArMzMsNyBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKIFdURl9NQUtFX0lTT19BTExPQ0FURURfSU1QTChCaXF1YWRGaWx0ZXJOb2RlKTsKIAot
QmlxdWFkRmlsdGVyTm9kZTo6QmlxdWFkRmlsdGVyTm9kZShBdWRpb0NvbnRleHQmIGNvbnRleHQs
IGZsb2F0IHNhbXBsZVJhdGUpCitCaXF1YWRGaWx0ZXJOb2RlOjpCaXF1YWRGaWx0ZXJOb2RlKEF1
ZGlvQ29udGV4dEJhc2UmIGNvbnRleHQsIGZsb2F0IHNhbXBsZVJhdGUpCiAgICAgOiBBdWRpb0Jh
c2ljUHJvY2Vzc29yTm9kZShjb250ZXh0LCBzYW1wbGVSYXRlKQogewogICAgIHNldE5vZGVUeXBl
KE5vZGVUeXBlQmlxdWFkRmlsdGVyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViYXVkaW8vQmlxdWFkRmlsdGVyTm9kZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJhdWRpby9CaXF1YWRGaWx0ZXJOb2RlLmgKaW5kZXggODA5NGQ5MWVhYjNiOTJiMTQ4YTg2MjQw
OTMyNmY2NWVkOWI5MDEzYy4uYWM4ZDk0N2ExMGY3YWU2YTMzZjAzYTJkMDk4NDBjOGU2YzFlNTRj
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9CaXF1YWRGaWx0
ZXJOb2RlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9CaXF1YWRGaWx0
ZXJOb2RlLmgKQEAgLTM0LDcgKzM0LDcgQEAgY2xhc3MgQXVkaW9QYXJhbTsKIGNsYXNzIEJpcXVh
ZEZpbHRlck5vZGUgZmluYWwgOiBwdWJsaWMgQXVkaW9CYXNpY1Byb2Nlc3Nvck5vZGUgewogICAg
IFdURl9NQUtFX0lTT19BTExPQ0FURUQoQmlxdWFkRmlsdGVyTm9kZSk7CiBwdWJsaWM6Ci0gICAg
c3RhdGljIFJlZjxCaXF1YWRGaWx0ZXJOb2RlPiBjcmVhdGUoQXVkaW9Db250ZXh0JiBjb250ZXh0
LCBmbG9hdCBzYW1wbGVSYXRlKQorICAgIHN0YXRpYyBSZWY8QmlxdWFkRmlsdGVyTm9kZT4gY3Jl
YXRlKEF1ZGlvQ29udGV4dEJhc2UmIGNvbnRleHQsIGZsb2F0IHNhbXBsZVJhdGUpCiAgICAgewog
ICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBCaXF1YWRGaWx0ZXJOb2RlKGNvbnRleHQsIHNh
bXBsZVJhdGUpKTsKICAgICB9CkBAIC01Miw3ICs1Miw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGdl
dEZyZXF1ZW5jeVJlc3BvbnNlKGNvbnN0IFJlZlB0cjxGbG9hdDMyQXJyYXk+JiBmcmVxdWVuY3lI
eiwgY29uc3QgUmVmUHRyPEZsb2F0MzJBcnJheT4mIG1hZ1Jlc3BvbnNlLCBjb25zdCBSZWZQdHI8
RmxvYXQzMkFycmF5PiYgcGhhc2VSZXNwb25zZSk7CiAKIHByaXZhdGU6Ci0gICAgQmlxdWFkRmls
dGVyTm9kZShBdWRpb0NvbnRleHQmLCBmbG9hdCBzYW1wbGVSYXRlKTsKKyAgICBCaXF1YWRGaWx0
ZXJOb2RlKEF1ZGlvQ29udGV4dEJhc2UmLCBmbG9hdCBzYW1wbGVSYXRlKTsKIAogICAgIEJpcXVh
ZFByb2Nlc3NvciogYmlxdWFkUHJvY2Vzc29yKCkgeyByZXR1cm4gc3RhdGljX2Nhc3Q8QmlxdWFk
UHJvY2Vzc29yKj4ocHJvY2Vzc29yKCkpOyB9CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJhdWRpby9CaXF1YWRQcm9jZXNzb3IuY3BwIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJhdWRpby9CaXF1YWRQcm9jZXNzb3IuY3BwCmluZGV4IGU4NGI5ODAzNTY3MGZi
MWRjYzMyNzA5NjYzZDJiMzkwNTUyZTY1ZWIuLjJmNjA2N2E3MmRjZWMzM2MzZjBkMGRlOWQ5N2U0
YjY5NzY5NjI2YTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8v
QmlxdWFkUHJvY2Vzc29yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlv
L0JpcXVhZFByb2Nlc3Nvci5jcHAKQEAgLTMyLDcgKzMyLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogICAgIAotQmlxdWFkUHJvY2Vzc29yOjpCaXF1YWRQcm9jZXNzb3IoQXVkaW9Db250ZXh0
JiBjb250ZXh0LCBmbG9hdCBzYW1wbGVSYXRlLCBzaXplX3QgbnVtYmVyT2ZDaGFubmVscywgYm9v
bCBhdXRvSW5pdGlhbGl6ZSkKK0JpcXVhZFByb2Nlc3Nvcjo6QmlxdWFkUHJvY2Vzc29yKEF1ZGlv
Q29udGV4dEJhc2UmIGNvbnRleHQsIGZsb2F0IHNhbXBsZVJhdGUsIHNpemVfdCBudW1iZXJPZkNo
YW5uZWxzLCBib29sIGF1dG9Jbml0aWFsaXplKQogICAgIDogQXVkaW9EU1BLZXJuZWxQcm9jZXNz
b3Ioc2FtcGxlUmF0ZSwgbnVtYmVyT2ZDaGFubmVscykKICAgICAsIG1fdHlwZShCaXF1YWRGaWx0
ZXJUeXBlOjpMb3dwYXNzKQogICAgICwgbV9wYXJhbWV0ZXIxKDApCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0JpcXVhZFByb2Nlc3Nvci5oIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJhdWRpby9CaXF1YWRQcm9jZXNzb3IuaAppbmRleCBhZGJlZWM0MzAy
NWFmMDNhZjE3ZTExNTFhYmJlZmZlZWVlNzdmNjMyLi5kYzMwNmFiNTE3YjMyNGJiMWNjNTZhMjg4
ZDBlNDlmMWE4ZTRlOTA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1
ZGlvL0JpcXVhZFByb2Nlc3Nvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVk
aW8vQmlxdWFkUHJvY2Vzc29yLmgKQEAgLTUwLDcgKzUwLDcgQEAgZW51bSBjbGFzcyBCaXF1YWRG
aWx0ZXJUeXBlIHsKIGNsYXNzIEJpcXVhZFByb2Nlc3NvciBmaW5hbCA6IHB1YmxpYyBBdWRpb0RT
UEtlcm5lbFByb2Nlc3NvciB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6
Ci0gICAgQmlxdWFkUHJvY2Vzc29yKEF1ZGlvQ29udGV4dCYsIGZsb2F0IHNhbXBsZVJhdGUsIHNp
emVfdCBudW1iZXJPZkNoYW5uZWxzLCBib29sIGF1dG9Jbml0aWFsaXplKTsKKyAgICBCaXF1YWRQ
cm9jZXNzb3IoQXVkaW9Db250ZXh0QmFzZSYsIGZsb2F0IHNhbXBsZVJhdGUsIHNpemVfdCBudW1i
ZXJPZkNoYW5uZWxzLCBib29sIGF1dG9Jbml0aWFsaXplKTsKIAogICAgIHZpcnR1YWwgfkJpcXVh
ZFByb2Nlc3NvcigpOwogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJhdWRpby9DaGFubmVsTWVyZ2VyTm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmF1ZGlvL0NoYW5uZWxNZXJnZXJOb2RlLmNwcAppbmRleCBkZjUwZjI2ODczNjhhYTVjMzI5NTQx
NDgxNTA3NzdhMDI5MTczMmQ4Li5kZTI4YWVhN2QyYzQzNDI4OTZiMTA0YmE4OTQxZmRlYjc5OGFk
YzNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0NoYW5uZWxN
ZXJnZXJOb2RlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0NoYW5u
ZWxNZXJnZXJOb2RlLmNwcApAQCAtNDMsNyArNDMsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
IFdURl9NQUtFX0lTT19BTExPQ0FURURfSU1QTChDaGFubmVsTWVyZ2VyTm9kZSk7CiAKLVJlZlB0
cjxDaGFubmVsTWVyZ2VyTm9kZT4gQ2hhbm5lbE1lcmdlck5vZGU6OmNyZWF0ZShBdWRpb0NvbnRl
eHQmIGNvbnRleHQsIGZsb2F0IHNhbXBsZVJhdGUsIHVuc2lnbmVkIG51bWJlck9mSW5wdXRzKQor
UmVmUHRyPENoYW5uZWxNZXJnZXJOb2RlPiBDaGFubmVsTWVyZ2VyTm9kZTo6Y3JlYXRlKEF1ZGlv
Q29udGV4dEJhc2UmIGNvbnRleHQsIGZsb2F0IHNhbXBsZVJhdGUsIHVuc2lnbmVkIG51bWJlck9m
SW5wdXRzKQogewogICAgIGlmICghbnVtYmVyT2ZJbnB1dHMgfHwgbnVtYmVyT2ZJbnB1dHMgPiBB
dWRpb0NvbnRleHQ6Om1heE51bWJlck9mQ2hhbm5lbHMoKSkKICAgICAgICAgcmV0dXJuIG51bGxw
dHI7CkBAIC01MSw3ICs1MSw3IEBAIFJlZlB0cjxDaGFubmVsTWVyZ2VyTm9kZT4gQ2hhbm5lbE1l
cmdlck5vZGU6OmNyZWF0ZShBdWRpb0NvbnRleHQmIGNvbnRleHQsIGZsb2F0CiAgICAgcmV0dXJu
IGFkb3B0UmVmKCpuZXcgQ2hhbm5lbE1lcmdlck5vZGUoY29udGV4dCwgc2FtcGxlUmF0ZSwgbnVt
YmVyT2ZJbnB1dHMpKTsgICAgICAKIH0KIAotQ2hhbm5lbE1lcmdlck5vZGU6OkNoYW5uZWxNZXJn
ZXJOb2RlKEF1ZGlvQ29udGV4dCYgY29udGV4dCwgZmxvYXQgc2FtcGxlUmF0ZSwgdW5zaWduZWQg
bnVtYmVyT2ZJbnB1dHMpCitDaGFubmVsTWVyZ2VyTm9kZTo6Q2hhbm5lbE1lcmdlck5vZGUoQXVk
aW9Db250ZXh0QmFzZSYgY29udGV4dCwgZmxvYXQgc2FtcGxlUmF0ZSwgdW5zaWduZWQgbnVtYmVy
T2ZJbnB1dHMpCiAgICAgOiBBdWRpb05vZGUoY29udGV4dCwgc2FtcGxlUmF0ZSkKICAgICAsIG1f
ZGVzaXJlZE51bWJlck9mT3V0cHV0Q2hhbm5lbHMoRGVmYXVsdE51bWJlck9mT3V0cHV0Q2hhbm5l
bHMpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0NoYW5u
ZWxNZXJnZXJOb2RlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0NoYW5uZWxN
ZXJnZXJOb2RlLmgKaW5kZXggNjY2MzZlZWQ2ZjdlZTg1NTFlOTJjYzg3N2EwNGM1Y2MzZTVmZGYx
ZC4uNjI5NzZlMDUwNzM0MWZmOTI2NjBhNmFmMGRiNThhZWJhNTU3NjgxYSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9DaGFubmVsTWVyZ2VyTm9kZS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQ2hhbm5lbE1lcmdlck5vZGUuaApAQCAt
MzcsNyArMzcsNyBAQCBjbGFzcyBBdWRpb0NvbnRleHQ7CiBjbGFzcyBDaGFubmVsTWVyZ2VyTm9k
ZSBmaW5hbCA6IHB1YmxpYyBBdWRpb05vZGUgewogICAgIFdURl9NQUtFX0lTT19BTExPQ0FURUQo
Q2hhbm5lbE1lcmdlck5vZGUpOwogcHVibGljOgotICAgIHN0YXRpYyBSZWZQdHI8Q2hhbm5lbE1l
cmdlck5vZGU+IGNyZWF0ZShBdWRpb0NvbnRleHQmLCBmbG9hdCBzYW1wbGVSYXRlLCB1bnNpZ25l
ZCBudW1iZXJPZklucHV0cyk7CisgICAgc3RhdGljIFJlZlB0cjxDaGFubmVsTWVyZ2VyTm9kZT4g
Y3JlYXRlKEF1ZGlvQ29udGV4dEJhc2UmLCBmbG9hdCBzYW1wbGVSYXRlLCB1bnNpZ25lZCBudW1i
ZXJPZklucHV0cyk7CiAKICAgICAvLyBBdWRpb05vZGUKICAgICB2b2lkIHByb2Nlc3Moc2l6ZV90
IGZyYW1lc1RvUHJvY2Vzcykgb3ZlcnJpZGU7CkBAIC01Miw3ICs1Miw3IEBAIHByaXZhdGU6CiAg
ICAgZG91YmxlIHRhaWxUaW1lKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gMDsgfQogICAgIGRv
dWJsZSBsYXRlbmN5VGltZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIDA7IH0KIAotICAgIENo
YW5uZWxNZXJnZXJOb2RlKEF1ZGlvQ29udGV4dCYsIGZsb2F0IHNhbXBsZVJhdGUsIHVuc2lnbmVk
IG51bWJlck9mSW5wdXRzKTsKKyAgICBDaGFubmVsTWVyZ2VyTm9kZShBdWRpb0NvbnRleHRCYXNl
JiwgZmxvYXQgc2FtcGxlUmF0ZSwgdW5zaWduZWQgbnVtYmVyT2ZJbnB1dHMpOwogfTsKIAogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJhdWRpby9DaGFubmVsU3BsaXR0ZXJOb2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViYXVkaW8vQ2hhbm5lbFNwbGl0dGVyTm9kZS5jcHAKaW5kZXggODJmNjlhMDRmOTk5MjYxZDU4
YzE1MmJmYzYwMmEzNjYwOTYwOTFiOS4uZjU1NTNkMGM4MzVhMzkyZDNjZWVkZTkyZWU1ZjhiOGM5
MjhmOWRiMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9DaGFu
bmVsU3BsaXR0ZXJOb2RlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlv
L0NoYW5uZWxTcGxpdHRlck5vZGUuY3BwCkBAIC0zNyw3ICszNyw3IEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAogV1RGX01BS0VfSVNPX0FMTE9DQVRFRF9JTVBMKENoYW5uZWxTcGxpdHRlck5vZGUp
OwogICAgIAotUmVmUHRyPENoYW5uZWxTcGxpdHRlck5vZGU+IENoYW5uZWxTcGxpdHRlck5vZGU6
OmNyZWF0ZShBdWRpb0NvbnRleHQmIGNvbnRleHQsIGZsb2F0IHNhbXBsZVJhdGUsIHVuc2lnbmVk
IG51bWJlck9mT3V0cHV0cykKK1JlZlB0cjxDaGFubmVsU3BsaXR0ZXJOb2RlPiBDaGFubmVsU3Bs
aXR0ZXJOb2RlOjpjcmVhdGUoQXVkaW9Db250ZXh0QmFzZSYgY29udGV4dCwgZmxvYXQgc2FtcGxl
UmF0ZSwgdW5zaWduZWQgbnVtYmVyT2ZPdXRwdXRzKQogewogICAgIGlmICghbnVtYmVyT2ZPdXRw
dXRzIHx8IG51bWJlck9mT3V0cHV0cyA+IEF1ZGlvQ29udGV4dDo6bWF4TnVtYmVyT2ZDaGFubmVs
cygpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTQ1LDcgKzQ1LDcgQEAgUmVmUHRyPENo
YW5uZWxTcGxpdHRlck5vZGU+IENoYW5uZWxTcGxpdHRlck5vZGU6OmNyZWF0ZShBdWRpb0NvbnRl
eHQmIGNvbnRleHQsIGYKICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBDaGFubmVsU3BsaXR0ZXJO
b2RlKGNvbnRleHQsIHNhbXBsZVJhdGUsIG51bWJlck9mT3V0cHV0cykpOyAgICAgIAogfQogCi1D
aGFubmVsU3BsaXR0ZXJOb2RlOjpDaGFubmVsU3BsaXR0ZXJOb2RlKEF1ZGlvQ29udGV4dCYgY29u
dGV4dCwgZmxvYXQgc2FtcGxlUmF0ZSwgdW5zaWduZWQgbnVtYmVyT2ZPdXRwdXRzKQorQ2hhbm5l
bFNwbGl0dGVyTm9kZTo6Q2hhbm5lbFNwbGl0dGVyTm9kZShBdWRpb0NvbnRleHRCYXNlJiBjb250
ZXh0LCBmbG9hdCBzYW1wbGVSYXRlLCB1bnNpZ25lZCBudW1iZXJPZk91dHB1dHMpCiAgICAgOiBB
dWRpb05vZGUoY29udGV4dCwgc2FtcGxlUmF0ZSkKIHsKICAgICBzZXROb2RlVHlwZShOb2RlVHlw
ZUNoYW5uZWxTcGxpdHRlcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmF1ZGlvL0NoYW5uZWxTcGxpdHRlck5vZGUuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
YXVkaW8vQ2hhbm5lbFNwbGl0dGVyTm9kZS5oCmluZGV4IDhkOTgzMjgxMjM3ZGQxZDBmY2YxNDcw
YTM4YjAwM2ZlNDI2NmI1MWUuLjEzZDhkOTgwZGFhNzczMzA0ZjE2OTA1ZTk1NDhhNDIwYWUzZWU0
NWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQ2hhbm5lbFNw
bGl0dGVyTm9kZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQ2hhbm5l
bFNwbGl0dGVyTm9kZS5oCkBAIC0zMyw3ICszMyw3IEBAIGNsYXNzIEF1ZGlvQ29udGV4dDsKIGNs
YXNzIENoYW5uZWxTcGxpdHRlck5vZGUgZmluYWwgOiBwdWJsaWMgQXVkaW9Ob2RlIHsKICAgICBX
VEZfTUFLRV9JU09fQUxMT0NBVEVEKENoYW5uZWxTcGxpdHRlck5vZGUpOwogcHVibGljOgotICAg
IHN0YXRpYyBSZWZQdHI8Q2hhbm5lbFNwbGl0dGVyTm9kZT4gY3JlYXRlKEF1ZGlvQ29udGV4dCYs
IGZsb2F0IHNhbXBsZVJhdGUsIHVuc2lnbmVkIG51bWJlck9mT3V0cHV0cyk7CisgICAgc3RhdGlj
IFJlZlB0cjxDaGFubmVsU3BsaXR0ZXJOb2RlPiBjcmVhdGUoQXVkaW9Db250ZXh0QmFzZSYsIGZs
b2F0IHNhbXBsZVJhdGUsIHVuc2lnbmVkIG51bWJlck9mT3V0cHV0cyk7CiAKICAgICAvLyBBdWRp
b05vZGUKICAgICB2b2lkIHByb2Nlc3Moc2l6ZV90IGZyYW1lc1RvUHJvY2Vzcykgb3ZlcnJpZGU7
CkBAIC00Myw3ICs0Myw3IEBAIHByaXZhdGU6CiAgICAgZG91YmxlIHRhaWxUaW1lKCkgY29uc3Qg
b3ZlcnJpZGUgeyByZXR1cm4gMDsgfQogICAgIGRvdWJsZSBsYXRlbmN5VGltZSgpIGNvbnN0IG92
ZXJyaWRlIHsgcmV0dXJuIDA7IH0KIAotICAgIENoYW5uZWxTcGxpdHRlck5vZGUoQXVkaW9Db250
ZXh0JiwgZmxvYXQgc2FtcGxlUmF0ZSwgdW5zaWduZWQgbnVtYmVyT2ZPdXRwdXRzKTsKKyAgICBD
aGFubmVsU3BsaXR0ZXJOb2RlKEF1ZGlvQ29udGV4dEJhc2UmLCBmbG9hdCBzYW1wbGVSYXRlLCB1
bnNpZ25lZCBudW1iZXJPZk91dHB1dHMpOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9Db252b2x2ZXJOb2Rl
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQ29udm9sdmVyTm9kZS5jcHAK
aW5kZXggY2M5NzJmMTBkYmQ3YWJmZjczZjc5M2NmYWNjN2M0MDA4YTcyMzQ0Ny4uZTFmNWViODE1
NjBlYzJlOTJiODM1ODM2Yzg0YjE4MTk0MzNhZmE0ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJhdWRpby9Db252b2x2ZXJOb2RlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmF1ZGlvL0NvbnZvbHZlck5vZGUuY3BwCkBAIC00Nyw3ICs0Nyw3IEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAogV1RGX01BS0VfSVNPX0FMTE9DQVRFRF9JTVBMKENvbnZvbHZl
ck5vZGUpOwogCi1Db252b2x2ZXJOb2RlOjpDb252b2x2ZXJOb2RlKEF1ZGlvQ29udGV4dCYgY29u
dGV4dCwgZmxvYXQgc2FtcGxlUmF0ZSkKK0NvbnZvbHZlck5vZGU6OkNvbnZvbHZlck5vZGUoQXVk
aW9Db250ZXh0QmFzZSYgY29udGV4dCwgZmxvYXQgc2FtcGxlUmF0ZSkKICAgICA6IEF1ZGlvTm9k
ZShjb250ZXh0LCBzYW1wbGVSYXRlKQogewogICAgIHNldE5vZGVUeXBlKE5vZGVUeXBlQ29udm9s
dmVyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQ29udm9s
dmVyTm9kZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9Db252b2x2ZXJOb2Rl
LmgKaW5kZXggNjRiZmViZWQyZDg3ZTc0YzMzYWRmYWM5MzQ5ZDFiOTI2ZTBmNjZjMy4uMzFjZWMx
ZWNjN2YwZTAwNDVlZmE3NGZiZWYzNjA2OGRkYmIxZmRmYyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJhdWRpby9Db252b2x2ZXJOb2RlLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJhdWRpby9Db252b2x2ZXJOb2RlLmgKQEAgLTM1LDcgKzM1LDcgQEAgY2xh
c3MgUmV2ZXJiOwogY2xhc3MgQ29udm9sdmVyTm9kZSBmaW5hbCA6IHB1YmxpYyBBdWRpb05vZGUg
ewogICAgIFdURl9NQUtFX0lTT19BTExPQ0FURUQoQ29udm9sdmVyTm9kZSk7CiBwdWJsaWM6Ci0g
ICAgc3RhdGljIFJlZjxDb252b2x2ZXJOb2RlPiBjcmVhdGUoQXVkaW9Db250ZXh0JiBjb250ZXh0
LCBmbG9hdCBzYW1wbGVSYXRlKQorICAgIHN0YXRpYyBSZWY8Q29udm9sdmVyTm9kZT4gY3JlYXRl
KEF1ZGlvQ29udGV4dEJhc2UmIGNvbnRleHQsIGZsb2F0IHNhbXBsZVJhdGUpCiAgICAgewogICAg
ICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBDb252b2x2ZXJOb2RlKGNvbnRleHQsIHNhbXBsZVJh
dGUpKTsKICAgICB9CkBAIC00OSw3ICs0OSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldE5vcm1h
bGl6ZShib29sIG5vcm1hbGl6ZSkgeyBtX25vcm1hbGl6ZSA9IG5vcm1hbGl6ZTsgfQogCiBwcml2
YXRlOgotICAgIENvbnZvbHZlck5vZGUoQXVkaW9Db250ZXh0JiwgZmxvYXQgc2FtcGxlUmF0ZSk7
CisgICAgQ29udm9sdmVyTm9kZShBdWRpb0NvbnRleHRCYXNlJiwgZmxvYXQgc2FtcGxlUmF0ZSk7
CiAKICAgICBkb3VibGUgdGFpbFRpbWUoKSBjb25zdCBmaW5hbDsKICAgICBkb3VibGUgbGF0ZW5j
eVRpbWUoKSBjb25zdCBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViYXVkaW8vRGVmYXVsdEF1ZGlvRGVzdGluYXRpb25Ob2RlLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViYXVkaW8vRGVmYXVsdEF1ZGlvRGVzdGluYXRpb25Ob2RlLmNwcAppbmRleCAx
NzU5YWU0YTVhNjM1YmMwNThlMzBjMzY1YzEzNDRmYmIzOTc5ZTE1Li4wN2ViOWE0MWI1Y2M4ZTgz
OTA5YWU0YjZlNjM0ZTNjYTliZjUzN2VhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmF1ZGlvL0RlZmF1bHRBdWRpb0Rlc3RpbmF0aW9uTm9kZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9EZWZhdWx0QXVkaW9EZXN0aW5hdGlvbk5vZGUuY3Bw
CkBAIC00Myw3ICs0Myw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogV1RGX01BS0VfSVNPX0FM
TE9DQVRFRF9JTVBMKERlZmF1bHRBdWRpb0Rlc3RpbmF0aW9uTm9kZSk7CiAgICAgCi1EZWZhdWx0
QXVkaW9EZXN0aW5hdGlvbk5vZGU6OkRlZmF1bHRBdWRpb0Rlc3RpbmF0aW9uTm9kZShBdWRpb0Nv
bnRleHQmIGNvbnRleHQpCitEZWZhdWx0QXVkaW9EZXN0aW5hdGlvbk5vZGU6OkRlZmF1bHRBdWRp
b0Rlc3RpbmF0aW9uTm9kZShBdWRpb0NvbnRleHRCYXNlJiBjb250ZXh0KQogICAgIDogQXVkaW9E
ZXN0aW5hdGlvbk5vZGUoY29udGV4dCwgQXVkaW9EZXN0aW5hdGlvbjo6aGFyZHdhcmVTYW1wbGVS
YXRlKCkpCiB7CiAgICAgLy8gTm9kZS1zcGVjaWZpYyBkZWZhdWx0IG1peGluZyBydWxlcy4KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vRGVmYXVsdEF1ZGlvRGVz
dGluYXRpb25Ob2RlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0RlZmF1bHRB
dWRpb0Rlc3RpbmF0aW9uTm9kZS5oCmluZGV4IDZmZDk1YzBmMzAxMTRjZGUzMmMyN2ZhMThhNjFh
ZTJjZGU1MTI4ZmMuLjk2YzgzN2M5OTM0ZWIwM2JmMDRiNGRlMzliYzQyZWZmZGZkZWU4ZTEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vRGVmYXVsdEF1ZGlvRGVz
dGluYXRpb25Ob2RlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9EZWZh
dWx0QXVkaW9EZXN0aW5hdGlvbk5vZGUuaApAQCAtMzMsNyArMzMsNyBAQCBjbGFzcyBBdWRpb0Rl
c3RpbmF0aW9uOwogY2xhc3MgRGVmYXVsdEF1ZGlvRGVzdGluYXRpb25Ob2RlIGZpbmFsIDogcHVi
bGljIEF1ZGlvRGVzdGluYXRpb25Ob2RlIHsKICAgICBXVEZfTUFLRV9JU09fQUxMT0NBVEVEKERl
ZmF1bHRBdWRpb0Rlc3RpbmF0aW9uTm9kZSk7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxEZWZh
dWx0QXVkaW9EZXN0aW5hdGlvbk5vZGU+IGNyZWF0ZShBdWRpb0NvbnRleHQmIGNvbnRleHQpCisg
ICAgc3RhdGljIFJlZjxEZWZhdWx0QXVkaW9EZXN0aW5hdGlvbk5vZGU+IGNyZWF0ZShBdWRpb0Nv
bnRleHRCYXNlJiBjb250ZXh0KQogICAgIHsKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcg
RGVmYXVsdEF1ZGlvRGVzdGluYXRpb25Ob2RlKGNvbnRleHQpKTsgICAgIAogICAgIH0KQEAgLTQx
LDcgKzQxLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgfkRlZmF1bHRBdWRpb0Rlc3RpbmF0aW9u
Tm9kZSgpOwogICAgIAogcHJpdmF0ZToKLSAgICBleHBsaWNpdCBEZWZhdWx0QXVkaW9EZXN0aW5h
dGlvbk5vZGUoQXVkaW9Db250ZXh0Jik7CisgICAgZXhwbGljaXQgRGVmYXVsdEF1ZGlvRGVzdGlu
YXRpb25Ob2RlKEF1ZGlvQ29udGV4dEJhc2UmKTsKICAgICB2b2lkIGNyZWF0ZURlc3RpbmF0aW9u
KCk7CiAKICAgICB2b2lkIGluaXRpYWxpemUoKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vRGVsYXlOb2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViYXVkaW8vRGVsYXlOb2RlLmNwcAppbmRleCA4MWJkN2QxOWIyN2U3NDFiNTBmNmY4
NGU1MWY3Y2UyNTU3ODAyYjkzLi40MDUyN2M4MWY5ZjViYzU2YmNmNGU3MGM1MTZjYmMxOWU1YmUx
ZThhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0RlbGF5Tm9k
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9EZWxheU5vZGUuY3Bw
CkBAIC0zNywxNCArMzcsMTQgQEAgV1RGX01BS0VfSVNPX0FMTE9DQVRFRF9JTVBMKERlbGF5Tm9k
ZSk7CiAKIGNvbnN0IGRvdWJsZSBtYXhpbXVtQWxsb3dlZERlbGF5VGltZSA9IDE4MDsKIAotaW5s
aW5lIERlbGF5Tm9kZTo6RGVsYXlOb2RlKEF1ZGlvQ29udGV4dCYgY29udGV4dCwgZmxvYXQgc2Ft
cGxlUmF0ZSwgZG91YmxlIG1heERlbGF5VGltZSkKK2lubGluZSBEZWxheU5vZGU6OkRlbGF5Tm9k
ZShBdWRpb0NvbnRleHRCYXNlJiBjb250ZXh0LCBmbG9hdCBzYW1wbGVSYXRlLCBkb3VibGUgbWF4
RGVsYXlUaW1lKQogICAgIDogQXVkaW9CYXNpY1Byb2Nlc3Nvck5vZGUoY29udGV4dCwgc2FtcGxl
UmF0ZSkKIHsKICAgICBzZXROb2RlVHlwZShOb2RlVHlwZURlbGF5KTsKICAgICBtX3Byb2Nlc3Nv
ciA9IG1ha2VVbmlxdWU8RGVsYXlQcm9jZXNzb3I+KGNvbnRleHQsIHNhbXBsZVJhdGUsIDEsIG1h
eERlbGF5VGltZSk7CiB9CiAKLUV4Y2VwdGlvbk9yPFJlZjxEZWxheU5vZGU+PiBEZWxheU5vZGU6
OmNyZWF0ZShBdWRpb0NvbnRleHQmIGNvbnRleHQsIGZsb2F0IHNhbXBsZVJhdGUsIGRvdWJsZSBt
YXhEZWxheVRpbWUpCitFeGNlcHRpb25PcjxSZWY8RGVsYXlOb2RlPj4gRGVsYXlOb2RlOjpjcmVh
dGUoQXVkaW9Db250ZXh0QmFzZSYgY29udGV4dCwgZmxvYXQgc2FtcGxlUmF0ZSwgZG91YmxlIG1h
eERlbGF5VGltZSkKIHsKICAgICBpZiAobWF4RGVsYXlUaW1lIDw9IDAgfHwgbWF4RGVsYXlUaW1l
ID49IG1heGltdW1BbGxvd2VkRGVsYXlUaW1lKQogICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsg
Tm90U3VwcG9ydGVkRXJyb3IgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViYXVkaW8vRGVsYXlOb2RlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0Rl
bGF5Tm9kZS5oCmluZGV4IGM5ZWNhZDlmOWZkYzUxYzQ3YzUyYzNjYjg2ODcwZmQ4NDExYjlmZmEu
LmI2YWZkZDBmOTMwNzE4YjQyMzIzMWYyZjZjZjkwMDU5OTE5OTcwMWIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vRGVsYXlOb2RlLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJhdWRpby9EZWxheU5vZGUuaApAQCAtMzEsMTIgKzMxLDEyIEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIERlbGF5Tm9kZSBmaW5hbCA6IHB1YmxpYyBBdWRpb0Jh
c2ljUHJvY2Vzc29yTm9kZSB7CiAgICAgV1RGX01BS0VfSVNPX0FMTE9DQVRFRChEZWxheU5vZGUp
OwogcHVibGljOgotICAgIHN0YXRpYyBFeGNlcHRpb25PcjxSZWY8RGVsYXlOb2RlPj4gY3JlYXRl
KEF1ZGlvQ29udGV4dCYsIGZsb2F0IHNhbXBsZVJhdGUsIGRvdWJsZSBtYXhEZWxheVRpbWUpOwor
ICAgIHN0YXRpYyBFeGNlcHRpb25PcjxSZWY8RGVsYXlOb2RlPj4gY3JlYXRlKEF1ZGlvQ29udGV4
dEJhc2UmLCBmbG9hdCBzYW1wbGVSYXRlLCBkb3VibGUgbWF4RGVsYXlUaW1lKTsKIAogICAgIEF1
ZGlvUGFyYW0qIGRlbGF5VGltZSgpOwogCiBwcml2YXRlOgotICAgIERlbGF5Tm9kZShBdWRpb0Nv
bnRleHQmLCBmbG9hdCBzYW1wbGVSYXRlLCBkb3VibGUgbWF4RGVsYXlUaW1lKTsKKyAgICBEZWxh
eU5vZGUoQXVkaW9Db250ZXh0QmFzZSYsIGZsb2F0IHNhbXBsZVJhdGUsIGRvdWJsZSBtYXhEZWxh
eVRpbWUpOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9EZWxheVByb2Nlc3Nvci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0RlbGF5UHJvY2Vzc29yLmNwcAppbmRleCAxMDM2NmVmNmVh
ZmI2YzQ0ZGIxOTEyNzFhOTk1ZDllNmQyYWNiYTY5Li5jYmJmZDlmYTJmYWE0Y2Y3ZWFlMDFiMzI2
YzQ2ZGNmNTg3YmZlM2M1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1
ZGlvL0RlbGF5UHJvY2Vzc29yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1
ZGlvL0RlbGF5UHJvY2Vzc29yLmNwcApAQCAtMzIsNyArMzIsNyBAQAogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKLURlbGF5UHJvY2Vzc29yOjpEZWxheVByb2Nlc3NvcihBdWRpb0NvbnRleHQmIGNv
bnRleHQsIGZsb2F0IHNhbXBsZVJhdGUsIHVuc2lnbmVkIG51bWJlck9mQ2hhbm5lbHMsIGRvdWJs
ZSBtYXhEZWxheVRpbWUpCitEZWxheVByb2Nlc3Nvcjo6RGVsYXlQcm9jZXNzb3IoQXVkaW9Db250
ZXh0QmFzZSYgY29udGV4dCwgZmxvYXQgc2FtcGxlUmF0ZSwgdW5zaWduZWQgbnVtYmVyT2ZDaGFu
bmVscywgZG91YmxlIG1heERlbGF5VGltZSkKICAgICA6IEF1ZGlvRFNQS2VybmVsUHJvY2Vzc29y
KHNhbXBsZVJhdGUsIG51bWJlck9mQ2hhbm5lbHMpCiAgICAgLCBtX21heERlbGF5VGltZShtYXhE
ZWxheVRpbWUpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlv
L0RlbGF5UHJvY2Vzc29yLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0RlbGF5
UHJvY2Vzc29yLmgKaW5kZXggODVkOWNjNmQ3ZmRlMTZjZWZkNzhkNDc5NDIxMGRkZDA4MjM0ZGYz
Zi4uY2JhYzc5ZWNmMGZlMzM5Y2YxMmY5M2Q0ZGIyNWFmMDUxNTJmY2VmZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9EZWxheVByb2Nlc3Nvci5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vRGVsYXlQcm9jZXNzb3IuaApAQCAtMzYsNyAr
MzYsNyBAQCBjbGFzcyBBdWRpb0RTUEtlcm5lbDsKIGNsYXNzIERlbGF5UHJvY2Vzc29yIGZpbmFs
IDogcHVibGljIEF1ZGlvRFNQS2VybmVsUHJvY2Vzc29yIHsKICAgICBXVEZfTUFLRV9GQVNUX0FM
TE9DQVRFRDsKIHB1YmxpYzoKLSAgICBEZWxheVByb2Nlc3NvcihBdWRpb0NvbnRleHQmLCBmbG9h
dCBzYW1wbGVSYXRlLCB1bnNpZ25lZCBudW1iZXJPZkNoYW5uZWxzLCBkb3VibGUgbWF4RGVsYXlU
aW1lKTsKKyAgICBEZWxheVByb2Nlc3NvcihBdWRpb0NvbnRleHRCYXNlJiwgZmxvYXQgc2FtcGxl
UmF0ZSwgdW5zaWduZWQgbnVtYmVyT2ZDaGFubmVscywgZG91YmxlIG1heERlbGF5VGltZSk7CiAg
ICAgdmlydHVhbCB+RGVsYXlQcm9jZXNzb3IoKTsKICAgICAKICAgICBzdGQ6OnVuaXF1ZV9wdHI8
QXVkaW9EU1BLZXJuZWw+IGNyZWF0ZUtlcm5lbCgpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9EaXN0YW5jZU1vZGVsVHlwZS5oIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9EaXN0YW5jZU1vZGVsVHlwZS5oCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LmRmZTEzMTgyY2MwYTQ0YmRkMDQ4MGI3MmFmZmQ3YjU1NzA4NTIzZGIKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0Rpc3RhbmNlTW9kZWxUeXBlLmgK
QEAgLTAsMCArMSwyNyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCwgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQg
QU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04KKyAqIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUworICogU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJE
aXN0YW5jZS5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9E
aXN0YW5jZU1vZGVsVHlwZS5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0Rp
c3RhbmNlTW9kZWxUeXBlLmlkbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mOGZmY2ZlZDIyYzhmOTYwZDA0ZjNlODVi
ZTNkYTU4YjcyMDczN2ZlCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJhdWRpby9EaXN0YW5jZU1vZGVsVHlwZS5pZGwKQEAgLTAsMCArMSwzMSBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxMCwgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuICBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElF
RAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OCisgKiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKKyAqIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKK1sKKyAgICBDb25kaXRpb25hbD1XRUJfQVVESU8sCitdIGVudW0gRGlzdGFuY2VNb2Rl
bFR5cGUgeworICAgICJsaW5lYXIiLAorICAgICJpbnZlcnNlIiwKKyAgICAiZXhwb25lbnRpYWwi
Cit9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9EeW5hbWlj
c0NvbXByZXNzb3JOb2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vRHlu
YW1pY3NDb21wcmVzc29yTm9kZS5jcHAKaW5kZXggMTQwOTZkOGYwYzU5NmE1Mjk3MTY2NmVmODI2
N2EwMjNmZGI0NGIyOS4uYzMzZDFkZTcyZGM5MWZlOGQ3NGU3NTQ3YTIzNTk5Y2EwMWZjNDg1YiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9EeW5hbWljc0NvbXBy
ZXNzb3JOb2RlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0R5bmFt
aWNzQ29tcHJlc3Nvck5vZGUuY3BwCkBAIC00MSw3ICs0MSw3IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAogV1RGX01BS0VfSVNPX0FMTE9DQVRFRF9JTVBMKER5bmFtaWNzQ29tcHJlc3Nvck5vZGUp
OwogCi1EeW5hbWljc0NvbXByZXNzb3JOb2RlOjpEeW5hbWljc0NvbXByZXNzb3JOb2RlKEF1ZGlv
Q29udGV4dCYgY29udGV4dCwgZmxvYXQgc2FtcGxlUmF0ZSkKK0R5bmFtaWNzQ29tcHJlc3Nvck5v
ZGU6OkR5bmFtaWNzQ29tcHJlc3Nvck5vZGUoQXVkaW9Db250ZXh0QmFzZSYgY29udGV4dCwgZmxv
YXQgc2FtcGxlUmF0ZSkKICAgICA6IEF1ZGlvTm9kZShjb250ZXh0LCBzYW1wbGVSYXRlKQogewog
ICAgIHNldE5vZGVUeXBlKE5vZGVUeXBlRHluYW1pY3NDb21wcmVzc29yKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vRHluYW1pY3NDb21wcmVzc29yTm9kZS5o
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9EeW5hbWljc0NvbXByZXNzb3JOb2Rl
LmgKaW5kZXggNDRjYmZiYWEwNTk3MTdmNmMzNTAzMjJhMjgwNGU1ZDg2M2E2Njg1Ny4uYjcwNTNi
MjIxNzNjMDJjYTBkMjZlY2U2MWExOGM3N2VlMDc1MmRmZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJhdWRpby9EeW5hbWljc0NvbXByZXNzb3JOb2RlLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9EeW5hbWljc0NvbXByZXNzb3JOb2RlLmgKQEAg
LTM1LDcgKzM1LDcgQEAgY2xhc3MgRHluYW1pY3NDb21wcmVzc29yOwogY2xhc3MgRHluYW1pY3ND
b21wcmVzc29yTm9kZSBmaW5hbCA6IHB1YmxpYyBBdWRpb05vZGUgewogICAgIFdURl9NQUtFX0lT
T19BTExPQ0FURUQoRHluYW1pY3NDb21wcmVzc29yTm9kZSk7CiBwdWJsaWM6Ci0gICAgc3RhdGlj
IFJlZjxEeW5hbWljc0NvbXByZXNzb3JOb2RlPiBjcmVhdGUoQXVkaW9Db250ZXh0JiBjb250ZXh0
LCBmbG9hdCBzYW1wbGVSYXRlKQorICAgIHN0YXRpYyBSZWY8RHluYW1pY3NDb21wcmVzc29yTm9k
ZT4gY3JlYXRlKEF1ZGlvQ29udGV4dEJhc2UmIGNvbnRleHQsIGZsb2F0IHNhbXBsZVJhdGUpCiAg
ICAgewogICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBEeW5hbWljc0NvbXByZXNzb3JOb2Rl
KGNvbnRleHQsIHNhbXBsZVJhdGUpKTsKICAgICB9CkBAIC02Miw3ICs2Miw3IEBAIHByaXZhdGU6
CiAgICAgZG91YmxlIHRhaWxUaW1lKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgZG91YmxlIGxhdGVu
Y3lUaW1lKCkgY29uc3Qgb3ZlcnJpZGU7CiAKLSAgICBEeW5hbWljc0NvbXByZXNzb3JOb2RlKEF1
ZGlvQ29udGV4dCYsIGZsb2F0IHNhbXBsZVJhdGUpOworICAgIER5bmFtaWNzQ29tcHJlc3Nvck5v
ZGUoQXVkaW9Db250ZXh0QmFzZSYsIGZsb2F0IHNhbXBsZVJhdGUpOwogCiAgICAgc3RkOjp1bmlx
dWVfcHRyPER5bmFtaWNzQ29tcHJlc3Nvcj4gbV9keW5hbWljc0NvbXByZXNzb3I7CiAgICAgUmVm
UHRyPEF1ZGlvUGFyYW0+IG1fdGhyZXNob2xkOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJhdWRpby9HYWluTm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmF1ZGlvL0dhaW5Ob2RlLmNwcAppbmRleCAyNTdkZjJlY2UyMzM4Y2JjYmFiOWVkMDUxMjMzYzY0
YjFjNTdmMjVkLi45ODRkMTE5NGJkZDU1MmYzODRiMGQ2ZDliY2ViZjdkYTQyZmQ4NjljIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0dhaW5Ob2RlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0dhaW5Ob2RlLmNwcApAQCAtMzcsNyAr
MzcsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFdURl9NQUtFX0lTT19BTExPQ0FURURfSU1Q
TChHYWluTm9kZSk7CiAKLUdhaW5Ob2RlOjpHYWluTm9kZShBdWRpb0NvbnRleHQmIGNvbnRleHQs
IGZsb2F0IHNhbXBsZVJhdGUpCitHYWluTm9kZTo6R2Fpbk5vZGUoQXVkaW9Db250ZXh0QmFzZSYg
Y29udGV4dCwgZmxvYXQgc2FtcGxlUmF0ZSkKICAgICA6IEF1ZGlvTm9kZShjb250ZXh0LCBzYW1w
bGVSYXRlKQogICAgICwgbV9sYXN0R2FpbigxLjApCiAgICAgLCBtX3NhbXBsZUFjY3VyYXRlR2Fp
blZhbHVlcyhBdWRpb05vZGU6OlByb2Nlc3NpbmdTaXplSW5GcmFtZXMpIC8vIEZJWE1FOiBjYW4g
cHJvYmFibHkgc2hhcmUgdGVtcCBidWZmZXIgaW4gY29udGV4dApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9HYWluTm9kZS5oIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJhdWRpby9HYWluTm9kZS5oCmluZGV4IGZhODViMGI5ZmY1NDdmMzI5ZjU2NjViMmEw
NTU3NzRiZTBmN2NhYjguLmRjZjg1NWE5MWM5NTdhOTAwMGJhZjhiOTk0MzZhZTc3Mzc5ZmJiNTAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vR2Fpbk5vZGUuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0dhaW5Ob2RlLmgKQEAgLTM4LDcg
KzM4LDcgQEAgY2xhc3MgQXVkaW9Db250ZXh0OwogY2xhc3MgR2Fpbk5vZGUgZmluYWwgOiBwdWJs
aWMgQXVkaW9Ob2RlIHsKICAgICBXVEZfTUFLRV9JU09fQUxMT0NBVEVEKEdhaW5Ob2RlKTsKIHB1
YmxpYzoKLSAgICBzdGF0aWMgUmVmPEdhaW5Ob2RlPiBjcmVhdGUoQXVkaW9Db250ZXh0JiBjb250
ZXh0LCBmbG9hdCBzYW1wbGVSYXRlKQorICAgIHN0YXRpYyBSZWY8R2Fpbk5vZGU+IGNyZWF0ZShB
dWRpb0NvbnRleHRCYXNlJiBjb250ZXh0LCBmbG9hdCBzYW1wbGVSYXRlKQogICAgIHsKICAgICAg
ICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgR2Fpbk5vZGUoY29udGV4dCwgc2FtcGxlUmF0ZSkpOwog
ICAgIH0KQEAgLTU3LDcgKzU3LDcgQEAgcHJpdmF0ZToKICAgICBkb3VibGUgdGFpbFRpbWUoKSBj
b25zdCBvdmVycmlkZSB7IHJldHVybiAwOyB9CiAgICAgZG91YmxlIGxhdGVuY3lUaW1lKCkgY29u
c3Qgb3ZlcnJpZGUgeyByZXR1cm4gMDsgfQogCi0gICAgR2Fpbk5vZGUoQXVkaW9Db250ZXh0Jiwg
ZmxvYXQgc2FtcGxlUmF0ZSk7CisgICAgR2Fpbk5vZGUoQXVkaW9Db250ZXh0QmFzZSYsIGZsb2F0
IHNhbXBsZVJhdGUpOwogCiAgICAgZmxvYXQgbV9sYXN0R2FpbjsgLy8gZm9yIGRlLXppcHBlcmlu
ZwogICAgIFJlZlB0cjxBdWRpb1BhcmFtPiBtX2dhaW47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmF1ZGlvL01lZGlhRWxlbWVudEF1ZGlvU291cmNlTm9kZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL01lZGlhRWxlbWVudEF1ZGlvU291cmNlTm9k
ZS5jcHAKaW5kZXggMGU1OTgxZmE2ODZkYjkyMTJmZmEwZjgzZTliZGNkMDNhZjlhYWFjMy4uYzY3
NWQ3ZGU3MTY4MzkyZTg3ZGY5ZjQzZGZhNjU5OTdiNTRmZjhmNCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9NZWRpYUVsZW1lbnRBdWRpb1NvdXJjZU5vZGUuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vTWVkaWFFbGVtZW50QXVkaW9T
b3VyY2VOb2RlLmNwcApAQCAtNDMsMTIgKzQzLDEyIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAog
V1RGX01BS0VfSVNPX0FMTE9DQVRFRF9JTVBMKE1lZGlhRWxlbWVudEF1ZGlvU291cmNlTm9kZSk7
CiAKLVJlZjxNZWRpYUVsZW1lbnRBdWRpb1NvdXJjZU5vZGU+IE1lZGlhRWxlbWVudEF1ZGlvU291
cmNlTm9kZTo6Y3JlYXRlKEF1ZGlvQ29udGV4dCYgY29udGV4dCwgSFRNTE1lZGlhRWxlbWVudCYg
bWVkaWFFbGVtZW50KQorUmVmPE1lZGlhRWxlbWVudEF1ZGlvU291cmNlTm9kZT4gTWVkaWFFbGVt
ZW50QXVkaW9Tb3VyY2VOb2RlOjpjcmVhdGUoQXVkaW9Db250ZXh0QmFzZSYgY29udGV4dCwgSFRN
TE1lZGlhRWxlbWVudCYgbWVkaWFFbGVtZW50KQogewogICAgIHJldHVybiBhZG9wdFJlZigqbmV3
IE1lZGlhRWxlbWVudEF1ZGlvU291cmNlTm9kZShjb250ZXh0LCBtZWRpYUVsZW1lbnQpKTsKIH0K
IAotTWVkaWFFbGVtZW50QXVkaW9Tb3VyY2VOb2RlOjpNZWRpYUVsZW1lbnRBdWRpb1NvdXJjZU5v
ZGUoQXVkaW9Db250ZXh0JiBjb250ZXh0LCBIVE1MTWVkaWFFbGVtZW50JiBtZWRpYUVsZW1lbnQp
CitNZWRpYUVsZW1lbnRBdWRpb1NvdXJjZU5vZGU6Ok1lZGlhRWxlbWVudEF1ZGlvU291cmNlTm9k
ZShBdWRpb0NvbnRleHRCYXNlJiBjb250ZXh0LCBIVE1MTWVkaWFFbGVtZW50JiBtZWRpYUVsZW1l
bnQpCiAgICAgOiBBdWRpb05vZGUoY29udGV4dCwgY29udGV4dC5zYW1wbGVSYXRlKCkpCiAgICAg
LCBtX21lZGlhRWxlbWVudChtZWRpYUVsZW1lbnQpCiAgICAgLCBtX3NvdXJjZU51bWJlck9mQ2hh
bm5lbHMoMCkKQEAgLTk3LDcgKzk3LDcgQEAgdm9pZCBNZWRpYUVsZW1lbnRBdWRpb1NvdXJjZU5v
ZGU6OnNldEZvcm1hdChzaXplX3QgbnVtYmVyT2ZDaGFubmVscywgZmxvYXQgc291cmMKIAogICAg
ICAgICB7CiAgICAgICAgICAgICAvLyBUaGUgY29udGV4dCBtdXN0IGJlIGxvY2tlZCB3aGVuIGNo
YW5naW5nIHRoZSBudW1iZXIgb2Ygb3V0cHV0IGNoYW5uZWxzLgotICAgICAgICAgICAgQXVkaW9D
b250ZXh0OjpBdXRvTG9ja2VyIGNvbnRleHRMb2NrZXIoY29udGV4dCgpKTsKKyAgICAgICAgICAg
IEF1ZGlvQ29udGV4dEJhc2U6OkF1dG9Mb2NrZXIgY29udGV4dExvY2tlcihjb250ZXh0KCkpOwog
CiAgICAgICAgICAgICAvLyBEbyBhbnkgbmVjZXNzc2FyeSByZS1jb25maWd1cmF0aW9uIHRvIHRo
ZSBvdXRwdXQncyBudW1iZXIgb2YgY2hhbm5lbHMuCiAgICAgICAgICAgICBvdXRwdXQoMCktPnNl
dE51bWJlck9mQ2hhbm5lbHMobnVtYmVyT2ZDaGFubmVscyk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL01lZGlhRWxlbWVudEF1ZGlvU291cmNlTm9kZS5oIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9NZWRpYUVsZW1lbnRBdWRpb1NvdXJjZU5v
ZGUuaAppbmRleCAzYTEzMTU0MTVmMThmOWIzNGFkY2U0MjRmMjZjMjYxMmQzYzQ4ZjU5Li43MWQw
ZWQxMzhhNWY5ZmQzNzMwNTAyMDU0MWVkNWQ0N2MzYWVjMGNjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL01lZGlhRWxlbWVudEF1ZGlvU291cmNlTm9kZS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vTWVkaWFFbGVtZW50QXVkaW9Tb3Vy
Y2VOb2RlLmgKQEAgLTQwLDcgKzQwLDcgQEAgY2xhc3MgQXVkaW9Db250ZXh0OwogY2xhc3MgTWVk
aWFFbGVtZW50QXVkaW9Tb3VyY2VOb2RlIGZpbmFsIDogcHVibGljIEF1ZGlvTm9kZSwgcHVibGlj
IEF1ZGlvU291cmNlUHJvdmlkZXJDbGllbnQgewogICAgIFdURl9NQUtFX0lTT19BTExPQ0FURUQo
TWVkaWFFbGVtZW50QXVkaW9Tb3VyY2VOb2RlKTsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPE1l
ZGlhRWxlbWVudEF1ZGlvU291cmNlTm9kZT4gY3JlYXRlKEF1ZGlvQ29udGV4dCYsIEhUTUxNZWRp
YUVsZW1lbnQmKTsKKyAgICBzdGF0aWMgUmVmPE1lZGlhRWxlbWVudEF1ZGlvU291cmNlTm9kZT4g
Y3JlYXRlKEF1ZGlvQ29udGV4dEJhc2UmLCBIVE1MTWVkaWFFbGVtZW50Jik7CiAKICAgICB2aXJ0
dWFsIH5NZWRpYUVsZW1lbnRBdWRpb1NvdXJjZU5vZGUoKTsKIApAQCAtNTcsNyArNTcsNyBAQCBw
dWJsaWM6CiAgICAgdm9pZCB1bmxvY2soKTsKIAogcHJpdmF0ZToKLSAgICBNZWRpYUVsZW1lbnRB
dWRpb1NvdXJjZU5vZGUoQXVkaW9Db250ZXh0JiwgSFRNTE1lZGlhRWxlbWVudCYpOworICAgIE1l
ZGlhRWxlbWVudEF1ZGlvU291cmNlTm9kZShBdWRpb0NvbnRleHRCYXNlJiwgSFRNTE1lZGlhRWxl
bWVudCYpOwogCiAgICAgZG91YmxlIHRhaWxUaW1lKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4g
MDsgfQogICAgIGRvdWJsZSBsYXRlbmN5VGltZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIDA7
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vTWVkaWFTdHJl
YW1BdWRpb0Rlc3RpbmF0aW9uTm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1
ZGlvL01lZGlhU3RyZWFtQXVkaW9EZXN0aW5hdGlvbk5vZGUuY3BwCmluZGV4IGQ3NjYyOTMwMzA4
YTc0NmE0NmFlMDA4NjhhNWQ2MzQxYjgyZmY3M2IuLjMwZjFhMjIyYmUyMzAwZTEyZGFlNzY2YmRl
ZTQyYjBiYjFjZjFlODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVk
aW8vTWVkaWFTdHJlYW1BdWRpb0Rlc3RpbmF0aW9uTm9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJhdWRpby9NZWRpYVN0cmVhbUF1ZGlvRGVzdGluYXRpb25Ob2RlLmNwcApA
QCAtMzksMTIgKzM5LDEyIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogV1RGX01BS0VfSVNPX0FM
TE9DQVRFRF9JTVBMKE1lZGlhU3RyZWFtQXVkaW9EZXN0aW5hdGlvbk5vZGUpOwogCi1SZWY8TWVk
aWFTdHJlYW1BdWRpb0Rlc3RpbmF0aW9uTm9kZT4gTWVkaWFTdHJlYW1BdWRpb0Rlc3RpbmF0aW9u
Tm9kZTo6Y3JlYXRlKEF1ZGlvQ29udGV4dCYgY29udGV4dCwgc2l6ZV90IG51bWJlck9mQ2hhbm5l
bHMpCitSZWY8TWVkaWFTdHJlYW1BdWRpb0Rlc3RpbmF0aW9uTm9kZT4gTWVkaWFTdHJlYW1BdWRp
b0Rlc3RpbmF0aW9uTm9kZTo6Y3JlYXRlKEF1ZGlvQ29udGV4dEJhc2UmIGNvbnRleHQsIHNpemVf
dCBudW1iZXJPZkNoYW5uZWxzKQogewogICAgIHJldHVybiBhZG9wdFJlZigqbmV3IE1lZGlhU3Ry
ZWFtQXVkaW9EZXN0aW5hdGlvbk5vZGUoY29udGV4dCwgbnVtYmVyT2ZDaGFubmVscykpOwogfQog
Ci1NZWRpYVN0cmVhbUF1ZGlvRGVzdGluYXRpb25Ob2RlOjpNZWRpYVN0cmVhbUF1ZGlvRGVzdGlu
YXRpb25Ob2RlKEF1ZGlvQ29udGV4dCYgY29udGV4dCwgc2l6ZV90IG51bWJlck9mQ2hhbm5lbHMp
CitNZWRpYVN0cmVhbUF1ZGlvRGVzdGluYXRpb25Ob2RlOjpNZWRpYVN0cmVhbUF1ZGlvRGVzdGlu
YXRpb25Ob2RlKEF1ZGlvQ29udGV4dEJhc2UmIGNvbnRleHQsIHNpemVfdCBudW1iZXJPZkNoYW5u
ZWxzKQogICAgIDogQXVkaW9CYXNpY0luc3BlY3Rvck5vZGUoY29udGV4dCwgY29udGV4dC5zYW1w
bGVSYXRlKCksIG51bWJlck9mQ2hhbm5lbHMpCiAgICAgLCBtX3NvdXJjZShNZWRpYVN0cmVhbUF1
ZGlvU291cmNlOjpjcmVhdGUoY29udGV4dC5zYW1wbGVSYXRlKCkpKQogICAgICwgbV9zdHJlYW0o
TWVkaWFTdHJlYW06OmNyZWF0ZSgqY29udGV4dC5kb2N1bWVudCgpLCBNZWRpYVN0cmVhbVByaXZh
dGU6OmNyZWF0ZShjb250ZXh0LmRvY3VtZW50KCktPmxvZ2dlcigpLCBtX3NvdXJjZS5jb3B5UmVm
KCkpKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vTWVkaWFT
dHJlYW1BdWRpb0Rlc3RpbmF0aW9uTm9kZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJh
dWRpby9NZWRpYVN0cmVhbUF1ZGlvRGVzdGluYXRpb25Ob2RlLmgKaW5kZXggZjVhN2U4ZmVjNGE5
MDJjOTBiZGNmOWM1YzdiNDY3Yzk4MGY5N2UzYS4uZGJhZDkyOGQ3OTZhMmQ4ZjQxMGY0MzZmYmUz
M2VmNzJhYTg0MTczYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRp
by9NZWRpYVN0cmVhbUF1ZGlvRGVzdGluYXRpb25Ob2RlLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJhdWRpby9NZWRpYVN0cmVhbUF1ZGlvRGVzdGluYXRpb25Ob2RlLmgKQEAgLTMy
LDEzICszMiwxMyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIEF1ZGlvQ29udGV4
dDsKK2NsYXNzIEF1ZGlvQ29udGV4dEJhc2U7CiBjbGFzcyBNZWRpYVN0cmVhbUF1ZGlvU291cmNl
OwogCiBjbGFzcyBNZWRpYVN0cmVhbUF1ZGlvRGVzdGluYXRpb25Ob2RlIGZpbmFsIDogcHVibGlj
IEF1ZGlvQmFzaWNJbnNwZWN0b3JOb2RlIHsKICAgICBXVEZfTUFLRV9JU09fQUxMT0NBVEVEKE1l
ZGlhU3RyZWFtQXVkaW9EZXN0aW5hdGlvbk5vZGUpOwogcHVibGljOgotICAgIHN0YXRpYyBSZWY8
TWVkaWFTdHJlYW1BdWRpb0Rlc3RpbmF0aW9uTm9kZT4gY3JlYXRlKEF1ZGlvQ29udGV4dCYsIHNp
emVfdCBudW1iZXJPZkNoYW5uZWxzKTsKKyAgICBzdGF0aWMgUmVmPE1lZGlhU3RyZWFtQXVkaW9E
ZXN0aW5hdGlvbk5vZGU+IGNyZWF0ZShBdWRpb0NvbnRleHRCYXNlJiwgc2l6ZV90IG51bWJlck9m
Q2hhbm5lbHMpOwogCiAgICAgdmlydHVhbCB+TWVkaWFTdHJlYW1BdWRpb0Rlc3RpbmF0aW9uTm9k
ZSgpOwogCkBAIC00OSw3ICs0OSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHJlc2V0KCkgZmluYWw7
CiAgICAgCiBwcml2YXRlOgotICAgIE1lZGlhU3RyZWFtQXVkaW9EZXN0aW5hdGlvbk5vZGUoQXVk
aW9Db250ZXh0Jiwgc2l6ZV90IG51bWJlck9mQ2hhbm5lbHMpOworICAgIE1lZGlhU3RyZWFtQXVk
aW9EZXN0aW5hdGlvbk5vZGUoQXVkaW9Db250ZXh0QmFzZSYsIHNpemVfdCBudW1iZXJPZkNoYW5u
ZWxzKTsKIAogICAgIGRvdWJsZSB0YWlsVGltZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIDA7IH0K
ICAgICBkb3VibGUgbGF0ZW5jeVRpbWUoKSBjb25zdCBmaW5hbCB7IHJldHVybiAwOyB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL01lZGlhU3RyZWFtQXVkaW9T
b3VyY2VOb2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vTWVkaWFTdHJl
YW1BdWRpb1NvdXJjZU5vZGUuY3BwCmluZGV4IDFiNGZiNmQxOTIyYWQxYzRiMDQxY2I5MTI5YzU1
YzEzODcwN2Y3Y2UuLjM1ZTU1YTkyMDJjM2YzMDU1YmYxODdiYWE2ZjY2ZmI2YmQ1MWY2OTAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vTWVkaWFTdHJlYW1BdWRp
b1NvdXJjZU5vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vTWVk
aWFTdHJlYW1BdWRpb1NvdXJjZU5vZGUuY3BwCkBAIC0zOCwxMiArMzgsMTIgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogCiBXVEZfTUFLRV9JU09fQUxMT0NBVEVEX0lNUEwoTWVkaWFTdHJlYW1BdWRp
b1NvdXJjZU5vZGUpOwogCi1SZWY8TWVkaWFTdHJlYW1BdWRpb1NvdXJjZU5vZGU+IE1lZGlhU3Ry
ZWFtQXVkaW9Tb3VyY2VOb2RlOjpjcmVhdGUoQXVkaW9Db250ZXh0JiBjb250ZXh0LCBNZWRpYVN0
cmVhbSYgbWVkaWFTdHJlYW0sIE1lZGlhU3RyZWFtVHJhY2smIGF1ZGlvVHJhY2spCitSZWY8TWVk
aWFTdHJlYW1BdWRpb1NvdXJjZU5vZGU+IE1lZGlhU3RyZWFtQXVkaW9Tb3VyY2VOb2RlOjpjcmVh
dGUoQXVkaW9Db250ZXh0QmFzZSYgY29udGV4dCwgTWVkaWFTdHJlYW0mIG1lZGlhU3RyZWFtLCBN
ZWRpYVN0cmVhbVRyYWNrJiBhdWRpb1RyYWNrKQogewogICAgIHJldHVybiBhZG9wdFJlZigqbmV3
IE1lZGlhU3RyZWFtQXVkaW9Tb3VyY2VOb2RlKGNvbnRleHQsIG1lZGlhU3RyZWFtLCBhdWRpb1Ry
YWNrKSk7CiB9CiAKLU1lZGlhU3RyZWFtQXVkaW9Tb3VyY2VOb2RlOjpNZWRpYVN0cmVhbUF1ZGlv
U291cmNlTm9kZShBdWRpb0NvbnRleHQmIGNvbnRleHQsIE1lZGlhU3RyZWFtJiBtZWRpYVN0cmVh
bSwgTWVkaWFTdHJlYW1UcmFjayYgYXVkaW9UcmFjaykKK01lZGlhU3RyZWFtQXVkaW9Tb3VyY2VO
b2RlOjpNZWRpYVN0cmVhbUF1ZGlvU291cmNlTm9kZShBdWRpb0NvbnRleHRCYXNlJiBjb250ZXh0
LCBNZWRpYVN0cmVhbSYgbWVkaWFTdHJlYW0sIE1lZGlhU3RyZWFtVHJhY2smIGF1ZGlvVHJhY2sp
CiAgICAgOiBBdWRpb05vZGUoY29udGV4dCwgY29udGV4dC5zYW1wbGVSYXRlKCkpCiAgICAgLCBt
X21lZGlhU3RyZWFtKG1lZGlhU3RyZWFtKQogICAgICwgbV9hdWRpb1RyYWNrKGF1ZGlvVHJhY2sp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL01lZGlhU3RyZWFt
QXVkaW9Tb3VyY2VOb2RlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL01lZGlh
U3RyZWFtQXVkaW9Tb3VyY2VOb2RlLmgKaW5kZXggZTNlZGVmZTFiZDU3MDJhNzNhMjJmNGE4Mzlk
MjNjZmMxOWMyOWEwNS4uYzcyZDMxMjIzM2Q1MDZkZDU0Y2UyNzBmYzkyMjdiNTQ1NzVlZTJlMyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9NZWRpYVN0cmVhbUF1
ZGlvU291cmNlTm9kZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vTWVk
aWFTdHJlYW1BdWRpb1NvdXJjZU5vZGUuaApAQCAtNDAsNyArNDAsNyBAQCBjbGFzcyBNdWx0aUNo
YW5uZWxSZXNhbXBsZXI7CiBjbGFzcyBNZWRpYVN0cmVhbUF1ZGlvU291cmNlTm9kZSBmaW5hbCA6
IHB1YmxpYyBBdWRpb05vZGUsIHB1YmxpYyBBdWRpb1NvdXJjZVByb3ZpZGVyQ2xpZW50IHsKICAg
ICBXVEZfTUFLRV9JU09fQUxMT0NBVEVEKE1lZGlhU3RyZWFtQXVkaW9Tb3VyY2VOb2RlKTsKIHB1
YmxpYzoKLSAgICBzdGF0aWMgUmVmPE1lZGlhU3RyZWFtQXVkaW9Tb3VyY2VOb2RlPiBjcmVhdGUo
QXVkaW9Db250ZXh0JiwgTWVkaWFTdHJlYW0mLCBNZWRpYVN0cmVhbVRyYWNrJik7CisgICAgc3Rh
dGljIFJlZjxNZWRpYVN0cmVhbUF1ZGlvU291cmNlTm9kZT4gY3JlYXRlKEF1ZGlvQ29udGV4dEJh
c2UmLCBNZWRpYVN0cmVhbSYsIE1lZGlhU3RyZWFtVHJhY2smKTsKIAogICAgIHZpcnR1YWwgfk1l
ZGlhU3RyZWFtQXVkaW9Tb3VyY2VOb2RlKCk7CiAKQEAgLTU0LDcgKzU0LDcgQEAgcHVibGljOgog
ICAgIHZvaWQgc2V0Rm9ybWF0KHNpemVfdCBudW1iZXJPZkNoYW5uZWxzLCBmbG9hdCBzYW1wbGVS
YXRlKSBvdmVycmlkZTsKIAogcHJpdmF0ZToKLSAgICBNZWRpYVN0cmVhbUF1ZGlvU291cmNlTm9k
ZShBdWRpb0NvbnRleHQmLCBNZWRpYVN0cmVhbSYsIE1lZGlhU3RyZWFtVHJhY2smKTsKKyAgICBN
ZWRpYVN0cmVhbUF1ZGlvU291cmNlTm9kZShBdWRpb0NvbnRleHRCYXNlJiwgTWVkaWFTdHJlYW0m
LCBNZWRpYVN0cmVhbVRyYWNrJik7CiAKICAgICBkb3VibGUgdGFpbFRpbWUoKSBjb25zdCBvdmVy
cmlkZSB7IHJldHVybiAwOyB9CiAgICAgZG91YmxlIGxhdGVuY3lUaW1lKCkgY29uc3Qgb3ZlcnJp
ZGUgeyByZXR1cm4gMDsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJh
dWRpby9PZmZsaW5lQXVkaW9Db250ZXh0LmlkbCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
YXVkaW8vT2ZmbGluZUF1ZGlvQ29udGV4dC5pZGwKaW5kZXggZjZlY2IxYTY4NTgxY2M5NDY2Nzlk
OTI0ZjhlM2UxNTRkMDM0M2FjNi4uMGU3MWEwNmJjM2ZhMmY4ZTg2Mjk5ZjNjMjQ1ODdlNmNiYTlj
NDExMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9PZmZsaW5l
QXVkaW9Db250ZXh0LmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL09m
ZmxpbmVBdWRpb0NvbnRleHQuaWRsCkBAIC0yNCw4ICsyNCw4IEBACiAKIFsKICAgICBDb25kaXRp
b25hbD1XRUJfQVVESU8sCisgICAgRW5hYmxlZEJ5U2V0dGluZz1Nb2Rlcm5VbnByZWZpeGVkV2Vi
QXVkaW8sCiAgICAgSlNHZW5lcmF0ZVRvSlNPYmplY3QsCi0gICAgSW50ZXJmYWNlTmFtZT13ZWJr
aXRPZmZsaW5lQXVkaW9Db250ZXh0CiBdIGludGVyZmFjZSBPZmZsaW5lQXVkaW9Db250ZXh0IDog
QXVkaW9Db250ZXh0IHsKICAgICBbQ2FsbFdpdGg9U2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgTWF5
VGhyb3dFeGNlcHRpb25dIGNvbnN0cnVjdG9yKHVuc2lnbmVkIGxvbmcgbnVtYmVyT2ZDaGFubmVs
cywgdW5zaWduZWQgbG9uZyBudW1iZXJPZkZyYW1lcywgdW5yZXN0cmljdGVkIGZsb2F0IHNhbXBs
ZVJhdGUpOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8v
T2ZmbGluZUF1ZGlvRGVzdGluYXRpb25Ob2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViYXVkaW8vT2ZmbGluZUF1ZGlvRGVzdGluYXRpb25Ob2RlLmNwcAppbmRleCA2YTE5NTU0NmNm
NzEzOTRmZTVjNDE0Yjc2NWI2Yzk3ZTA1ZWRjMDQ5Li5mZWM1MDhjYmZmMWM3MWQzM2JjNGIxM2Vh
OTgyZjkyZmMwYWZiOTliIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1
ZGlvL09mZmxpbmVBdWRpb0Rlc3RpbmF0aW9uTm9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJhdWRpby9PZmZsaW5lQXVkaW9EZXN0aW5hdGlvbk5vZGUuY3BwCkBAIC00MSw3
ICs0MSw3IEBAIFdURl9NQUtFX0lTT19BTExPQ0FURURfSU1QTChPZmZsaW5lQXVkaW9EZXN0aW5h
dGlvbk5vZGUpOwogICAgIAogY29uc3Qgc2l6ZV90IHJlbmRlclF1YW50dW1TaXplID0gMTI4OyAg
ICAKIAotT2ZmbGluZUF1ZGlvRGVzdGluYXRpb25Ob2RlOjpPZmZsaW5lQXVkaW9EZXN0aW5hdGlv
bk5vZGUoQXVkaW9Db250ZXh0JiBjb250ZXh0LCBBdWRpb0J1ZmZlciogcmVuZGVyVGFyZ2V0KQor
T2ZmbGluZUF1ZGlvRGVzdGluYXRpb25Ob2RlOjpPZmZsaW5lQXVkaW9EZXN0aW5hdGlvbk5vZGUo
QXVkaW9Db250ZXh0QmFzZSYgY29udGV4dCwgQXVkaW9CdWZmZXIqIHJlbmRlclRhcmdldCkKICAg
ICA6IEF1ZGlvRGVzdGluYXRpb25Ob2RlKGNvbnRleHQsIHJlbmRlclRhcmdldC0+c2FtcGxlUmF0
ZSgpKQogICAgICwgbV9yZW5kZXJUYXJnZXQocmVuZGVyVGFyZ2V0KQogICAgICwgbV9zdGFydGVk
UmVuZGVyaW5nKGZhbHNlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJh
dWRpby9PZmZsaW5lQXVkaW9EZXN0aW5hdGlvbk5vZGUuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViYXVkaW8vT2ZmbGluZUF1ZGlvRGVzdGluYXRpb25Ob2RlLmgKaW5kZXggZGEyNDk1NzRk
NDg0ZmY4MTJhYTQ5MzdhYzNhMTY1ZWU5NTgyODRjYy4uZjg3MTBmZGUxMGRmZmZlNDkwMjM0ZjE5
MzZiZDU4YmFhM2NiMmU5OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJh
dWRpby9PZmZsaW5lQXVkaW9EZXN0aW5hdGlvbk5vZGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmF1ZGlvL09mZmxpbmVBdWRpb0Rlc3RpbmF0aW9uTm9kZS5oCkBAIC0zNyw5ICsz
Nyw5IEBAIGNsYXNzIEF1ZGlvQ29udGV4dDsKIGNsYXNzIE9mZmxpbmVBdWRpb0Rlc3RpbmF0aW9u
Tm9kZSBmaW5hbCA6IHB1YmxpYyBBdWRpb0Rlc3RpbmF0aW9uTm9kZSB7CiAgICAgV1RGX01BS0Vf
SVNPX0FMTE9DQVRFRChPZmZsaW5lQXVkaW9EZXN0aW5hdGlvbk5vZGUpOwogcHVibGljOgotICAg
IHN0YXRpYyBSZWY8T2ZmbGluZUF1ZGlvRGVzdGluYXRpb25Ob2RlPiBjcmVhdGUoQXVkaW9Db250
ZXh0JiBjb250ZXh0LCBBdWRpb0J1ZmZlciogcmVuZGVyVGFyZ2V0KQorICAgIHN0YXRpYyBSZWY8
T2ZmbGluZUF1ZGlvRGVzdGluYXRpb25Ob2RlPiBjcmVhdGUoQXVkaW9Db250ZXh0QmFzZSYgY29u
dGV4dCwgQXVkaW9CdWZmZXIqIHJlbmRlclRhcmdldCkKICAgICB7Ci0gICAgICAgIHJldHVybiBh
ZG9wdFJlZigqbmV3IE9mZmxpbmVBdWRpb0Rlc3RpbmF0aW9uTm9kZShjb250ZXh0LCByZW5kZXJU
YXJnZXQpKTsgICAgIAorICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBPZmZsaW5lQXVkaW9E
ZXN0aW5hdGlvbk5vZGUoY29udGV4dCwgcmVuZGVyVGFyZ2V0KSk7CiAgICAgfQogCiAgICAgdmly
dHVhbCB+T2ZmbGluZUF1ZGlvRGVzdGluYXRpb25Ob2RlKCk7CkBAIC01NSw3ICs1NSw3IEBAIHB1
YmxpYzoKICAgICBmbG9hdCBzYW1wbGVSYXRlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9y
ZW5kZXJUYXJnZXQtPnNhbXBsZVJhdGUoKTsgfQogCiBwcml2YXRlOgotICAgIE9mZmxpbmVBdWRp
b0Rlc3RpbmF0aW9uTm9kZShBdWRpb0NvbnRleHQmLCBBdWRpb0J1ZmZlciogcmVuZGVyVGFyZ2V0
KTsKKyAgICBPZmZsaW5lQXVkaW9EZXN0aW5hdGlvbk5vZGUoQXVkaW9Db250ZXh0QmFzZSYsIEF1
ZGlvQnVmZmVyKiByZW5kZXJUYXJnZXQpOwogCiAgICAgLy8gVGhpcyBBdWRpb05vZGUgcmVuZGVy
cyBpbnRvIHRoaXMgQXVkaW9CdWZmZXIuCiAgICAgUmVmUHRyPEF1ZGlvQnVmZmVyPiBtX3JlbmRl
clRhcmdldDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vT3Nj
aWxsYXRvck5vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9Pc2NpbGxh
dG9yTm9kZS5jcHAKaW5kZXggOTU2MDA1M2E0ODA1YjlkNGJmNTU5OWU3M2ExOWE4MWUyNWIwYzk2
Zi4uZThmMzFjNzIyMGU1MDY1NjhlM2FjZjA1OGY2Y2FiNDczYjA5MWVkNyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9Pc2NpbGxhdG9yTm9kZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9Pc2NpbGxhdG9yTm9kZS5jcHAKQEAgLTQ1
LDEyICs0NSwxMiBAQCBQZXJpb2RpY1dhdmUqIE9zY2lsbGF0b3JOb2RlOjpzX3BlcmlvZGljV2F2
ZVNxdWFyZSA9IG51bGxwdHI7CiBQZXJpb2RpY1dhdmUqIE9zY2lsbGF0b3JOb2RlOjpzX3Blcmlv
ZGljV2F2ZVNhd3Rvb3RoID0gbnVsbHB0cjsKIFBlcmlvZGljV2F2ZSogT3NjaWxsYXRvck5vZGU6
OnNfcGVyaW9kaWNXYXZlVHJpYW5nbGUgPSBudWxscHRyOwogCi1SZWY8T3NjaWxsYXRvck5vZGU+
IE9zY2lsbGF0b3JOb2RlOjpjcmVhdGUoQXVkaW9Db250ZXh0JiBjb250ZXh0LCBmbG9hdCBzYW1w
bGVSYXRlKQorUmVmPE9zY2lsbGF0b3JOb2RlPiBPc2NpbGxhdG9yTm9kZTo6Y3JlYXRlKEF1ZGlv
Q29udGV4dEJhc2UmIGNvbnRleHQsIGZsb2F0IHNhbXBsZVJhdGUpCiB7CiAgICAgcmV0dXJuIGFk
b3B0UmVmKCpuZXcgT3NjaWxsYXRvck5vZGUoY29udGV4dCwgc2FtcGxlUmF0ZSkpOwogfQogCi1P
c2NpbGxhdG9yTm9kZTo6T3NjaWxsYXRvck5vZGUoQXVkaW9Db250ZXh0JiBjb250ZXh0LCBmbG9h
dCBzYW1wbGVSYXRlKQorT3NjaWxsYXRvck5vZGU6Ok9zY2lsbGF0b3JOb2RlKEF1ZGlvQ29udGV4
dEJhc2UmIGNvbnRleHQsIGZsb2F0IHNhbXBsZVJhdGUpCiAgICAgOiBBdWRpb1NjaGVkdWxlZFNv
dXJjZU5vZGUoY29udGV4dCwgc2FtcGxlUmF0ZSkKICAgICAsIG1fZmlyc3RSZW5kZXIodHJ1ZSkK
ICAgICAsIG1fdmlydHVhbFJlYWRJbmRleCgwKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJhdWRpby9Pc2NpbGxhdG9yTm9kZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJhdWRpby9Pc2NpbGxhdG9yTm9kZS5oCmluZGV4IDQyZmYwYzE5MjRiNjJlZDBjZjAwMTdm
ZmI5N2RlNjAzMjZjNzM5MjIuLjA4OTViY2UzZGRkZjU5ZDY5YzVjNmFmOWNmZDJiOWNmYmU5ZWI0
YTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vT3NjaWxsYXRv
ck5vZGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL09zY2lsbGF0b3JO
b2RlLmgKQEAgLTQ1LDcgKzQ1LDcgQEAgcHVibGljOgogICAgICAgICBDdXN0b20KICAgICB9Owog
Ci0gICAgc3RhdGljIFJlZjxPc2NpbGxhdG9yTm9kZT4gY3JlYXRlKEF1ZGlvQ29udGV4dCYsIGZs
b2F0IHNhbXBsZVJhdGUpOworICAgIHN0YXRpYyBSZWY8T3NjaWxsYXRvck5vZGU+IGNyZWF0ZShB
dWRpb0NvbnRleHRCYXNlJiwgZmxvYXQgc2FtcGxlUmF0ZSk7CiAKICAgICB2aXJ0dWFsIH5Pc2Np
bGxhdG9yTm9kZSgpOwogCkBAIC02MCw3ICs2MCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldFBl
cmlvZGljV2F2ZShQZXJpb2RpY1dhdmUqKTsKIAogcHJpdmF0ZToKLSAgICBPc2NpbGxhdG9yTm9k
ZShBdWRpb0NvbnRleHQmLCBmbG9hdCBzYW1wbGVSYXRlKTsKKyAgICBPc2NpbGxhdG9yTm9kZShB
dWRpb0NvbnRleHRCYXNlJiwgZmxvYXQgc2FtcGxlUmF0ZSk7CiAKICAgICB2b2lkIHByb2Nlc3Mo
c2l6ZV90IGZyYW1lc1RvUHJvY2VzcykgZmluYWw7CiAgICAgdm9pZCByZXNldCgpIGZpbmFsOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9QYW5uZXJOb2RlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vUGFubmVyTm9kZS5jcHAKaW5kZXgg
ZWM4MGU2OWQyYWI4NzEwMjhiYzZhNmU0NDdlYWJkMTllOWZjYzcyMS4uYWU0MmYxMTRiYmMzOTA0
ZGI3YzJjYzE1NmQwYjJjYmU0MjAwNjk4ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJhdWRpby9QYW5uZXJOb2RlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmF1ZGlvL1Bhbm5lck5vZGUuY3BwCkBAIC00OCw4ICs0OCwxMyBAQCBzdGF0aWMgdm9pZCBm
aXhOQU5zKGRvdWJsZSAmeCkKICAgICAgICAgeCA9IDAuMDsKIH0KIAotUGFubmVyTm9kZTo6UGFu
bmVyTm9kZShBdWRpb0NvbnRleHQmIGNvbnRleHQsIGZsb2F0IHNhbXBsZVJhdGUpCitQYW5uZXJO
b2RlQmFzZTo6UGFubmVyTm9kZUJhc2UoQXVkaW9Db250ZXh0QmFzZSYgY29udGV4dCwgZmxvYXQg
c2FtcGxlUmF0ZSkKICAgICA6IEF1ZGlvTm9kZShjb250ZXh0LCBzYW1wbGVSYXRlKQoreworfQor
CitQYW5uZXJOb2RlOjpQYW5uZXJOb2RlKEF1ZGlvQ29udGV4dCYgY29udGV4dCwgZmxvYXQgc2Ft
cGxlUmF0ZSkKKyAgICA6IFBhbm5lck5vZGVCYXNlKGNvbnRleHQsIHNhbXBsZVJhdGUpCiAgICAg
LCBtX3Bhbm5pbmdNb2RlbChQYW5uaW5nTW9kZWxUeXBlOjpIUlRGKQogICAgICwgbV9sYXN0R2Fp
bigtMS4wKQogICAgICwgbV9wb3NpdGlvblgoQXVkaW9QYXJhbTo6Y3JlYXRlKGNvbnRleHQsICJw
b3NpdGlvblgiX3MsIDAsIC1GTFRfTUFYLCBGTFRfTUFYKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vUGFubmVyTm9kZS5oIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJhdWRpby9QYW5uZXJOb2RlLmgKaW5kZXggODQ4MGMyMzMyODAwZGNmNDg4NTE1OGQ2
OTQ1OTJkZDllZTUyOTJiNi4uMjliNjQ4ZDA2MDc2MjkzODdhMWIwYzA3MDM3YzUwYzIyY2YwMTA1
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9QYW5uZXJOb2Rl
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9QYW5uZXJOb2RlLmgKQEAg
LTI2LDYgKzI2LDcgQEAKIAogI2lmIEVOQUJMRShXRUJfQVVESU8pCiAKKyNpbmNsdWRlICJBdWRp
b0NvbnRleHQuaCIKICNpbmNsdWRlICJBdWRpb0xpc3RlbmVyLmgiCiAjaW5jbHVkZSAiQXVkaW9O
b2RlLmgiCiAjaW5jbHVkZSAiQXVkaW9QYXJhbS5oIgpAQCAtNDEsNiArNDIsMTYgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogCiBjbGFzcyBIUlRGRGF0YWJhc2VMb2FkZXI7CiAKK2NsYXNzIFBhbm5l
ck5vZGVCYXNlIDogcHVibGljIEF1ZGlvTm9kZSB7CitwdWJsaWM6CisgICAgdmlydHVhbCB+UGFu
bmVyTm9kZUJhc2UoKSA9IGRlZmF1bHQ7CisKKyAgICB2aXJ0dWFsIGZsb2F0IGRvcHBsZXJSYXRl
KCkgPSAwOworCitwcm90ZWN0ZWQ6CisgICAgUGFubmVyTm9kZUJhc2UoQXVkaW9Db250ZXh0QmFz
ZSYsIGZsb2F0IHNhbXBsZVJhdGUpOworfTsKKwogLy8gUGFubmVyTm9kZSBpcyBhbiBBdWRpb05v
ZGUgd2l0aCBvbmUgaW5wdXQgYW5kIG9uZSBvdXRwdXQuCiAvLyBJdCBwb3NpdGlvbnMgYSBzb3Vu
ZCBpbiAzRCBzcGFjZSwgd2l0aCB0aGUgZXhhY3QgZWZmZWN0IGRlcGVuZGVudCBvbiB0aGUgcGFu
bmluZyBtb2RlbC4KIC8vIEl0IGhhcyBhIHBvc2l0aW9uIGFuZCBhbiBvcmllbnRhdGlvbiBpbiAz
RCBzcGFjZSB3aGljaCBpcyByZWxhdGl2ZSB0byB0aGUgcG9zaXRpb24gYW5kIG9yaWVudGF0aW9u
IG9mIHRoZSBjb250ZXh0J3MgQXVkaW9MaXN0ZW5lci4KQEAgLTQ4LDcgKzU5LDcgQEAgY2xhc3Mg
SFJURkRhdGFiYXNlTG9hZGVyOwogLy8gQSBjb25lIGVmZmVjdCB3aWxsIGF0dGVudWF0ZSB0aGUg
Z2FpbiBhcyB0aGUgb3JpZW50YXRpb24gbW92ZXMgYXdheSBmcm9tIHRoZSBsaXN0ZW5lci4KIC8v
IEFsbCBvZiB0aGVzZSBlZmZlY3RzIGZvbGxvdyB0aGUgT3BlbkFMIHNwZWNpZmljYXRpb24gdmVy
eSBjbG9zZWx5LgogCi1jbGFzcyBQYW5uZXJOb2RlIGZpbmFsIDogcHVibGljIEF1ZGlvTm9kZSB7
CitjbGFzcyBQYW5uZXJOb2RlIGZpbmFsIDogcHVibGljIFBhbm5lck5vZGVCYXNlIHsKICAgICBX
VEZfTUFLRV9JU09fQUxMT0NBVEVEKFBhbm5lck5vZGUpOwogcHVibGljOgogICAgIHN0YXRpYyBS
ZWY8UGFubmVyTm9kZT4gY3JlYXRlKEF1ZGlvQ29udGV4dCYgY29udGV4dCwgZmxvYXQgc2FtcGxl
UmF0ZSkKQEAgLTU4LDYgKzY5LDkgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCB+UGFubmVyTm9k
ZSgpOwogCisgICAgQXVkaW9Db250ZXh0JiBjb250ZXh0KCkgeyByZXR1cm4gZG93bmNhc3Q8QXVk
aW9Db250ZXh0PihBdWRpb05vZGU6OmNvbnRleHQoKSk7IH0KKyAgICBjb25zdCBBdWRpb0NvbnRl
eHQmIGNvbnRleHQoKSBjb25zdCB7IHJldHVybiBkb3duY2FzdDxBdWRpb0NvbnRleHQ+KEF1ZGlv
Tm9kZTo6Y29udGV4dCgpKTsgfQorCiAgICAgLy8gQXVkaW9Ob2RlCiAgICAgdm9pZCBwcm9jZXNz
KHNpemVfdCBmcmFtZXNUb1Byb2Nlc3MpIG92ZXJyaWRlOwogICAgIHZvaWQgcHVsbElucHV0cyhz
aXplX3QgZnJhbWVzVG9Qcm9jZXNzKSBvdmVycmlkZTsKQEAgLTExMSw3ICsxMjUsNyBAQCBwdWJs
aWM6CiAgICAgdm9pZCBzZXRDb25lT3V0ZXJHYWluKGRvdWJsZSBhbmdsZSkgeyBtX2NvbmVFZmZl
Y3Quc2V0T3V0ZXJHYWluKGFuZ2xlKTsgfQogCiAgICAgdm9pZCBnZXRBemltdXRoRWxldmF0aW9u
KGRvdWJsZSogb3V0QXppbXV0aCwgZG91YmxlKiBvdXRFbGV2YXRpb24pOwotICAgIGZsb2F0IGRv
cHBsZXJSYXRlKCk7CisgICAgZmxvYXQgZG9wcGxlclJhdGUoKSBmaW5hbDsKIAogICAgIC8vIEFj
Y2Vzc29ycyBmb3IgZHluYW1pY2FsbHkgY2FsY3VsYXRlZCBnYWluIHZhbHVlcy4KICAgICBBdWRp
b1BhcmFtKiBkaXN0YW5jZUdhaW4oKSB7IHJldHVybiBtX2Rpc3RhbmNlR2Fpbi5nZXQoKTsgfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9QYW5uZXJOb2RlLmlk
bCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vUGFubmVyTm9kZS5pZGwKaW5kZXgg
MDMyOTgzN2QyZjVhMjVjN2Y2YTZmMGQwNGUzMTg3YTFmNmFkOGI0MS4uN2JiOTJjNGY4ZmI0NWRi
MjkzZmZlM2ExN2E5NzEwM2MwYjkyZTZlMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJhdWRpby9QYW5uZXJOb2RlLmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmF1ZGlvL1Bhbm5lck5vZGUuaWRsCkBAIC0yMiwyNyArMjIsMTAgQEAKICAqIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICov
CiAKLVsKLSAgICBDb25kaXRpb25hbD1XRUJfQVVESU8sCi0gICAgSW1wbGVtZW50ZWRBcz1QYW5u
aW5nTW9kZWxUeXBlCi1dIGVudW0gUGFubmluZ01vZGVsVHlwZSB7Ci0gICAgImVxdWFscG93ZXIi
LAotICAgICJIUlRGIgotfTsKLQotWwotICAgIENvbmRpdGlvbmFsPVdFQl9BVURJTywKLSAgICBJ
bXBsZW1lbnRlZEFzPURpc3RhbmNlTW9kZWxUeXBlCi1dIGVudW0gRGlzdGFuY2VNb2RlbFR5cGUg
ewotICAgICJsaW5lYXIiLAotICAgICJpbnZlcnNlIiwKLSAgICAiZXhwb25lbnRpYWwiCi19Owot
CiBbCiAgICAgQ29uZGl0aW9uYWw9V0VCX0FVRElPLAogICAgIEpTR2VuZXJhdGVUb0pTT2JqZWN0
LAotICAgIEludGVyZmFjZU5hbWU9d2Via2l0QXVkaW9QYW5uZXJOb2RlLAorICAgIEVuYWJsZWRC
eVNldHRpbmc9TW9kZXJuVW5wcmVmaXhlZFdlYkF1ZGlvLAogXSBpbnRlcmZhY2UgUGFubmVyTm9k
ZSA6IEF1ZGlvTm9kZSB7CiAgICAgLy8gRGVmYXVsdCBtb2RlbCBmb3Igc3RlcmVvIGlzIEhSVEYg
CiAgICAgYXR0cmlidXRlIFBhbm5pbmdNb2RlbFR5cGUgcGFubmluZ01vZGVsOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9QYW5uaW5nTW9kZWxUeXBlLmggYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1Bhbm5pbmdNb2RlbFR5cGUuaApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi5hYjBiMjI3MTJhMTcwYjFmZWZhZTE2ZTZlZjNkZjk0ZDIzOGExYTlmCi0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9QYW5uaW5nTW9kZWxUeXBl
LmgKQEAgLTAsMCArMSwyNyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCwgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBB
TkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04KKyAqIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUworICogU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRl
ICJQYW5uZXIuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8v
UGFubmluZ01vZGVsVHlwZS5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1Bh
bm5pbmdNb2RlbFR5cGUuaWRsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmJmN2RmOGY1NTQyZmFhNDUyNjA3YmUxZjA5
OWU5OTc0YmRhYzM3ZTYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmF1ZGlvL1Bhbm5pbmdNb2RlbFR5cGUuaWRsCkBAIC0wLDAgKzEsMzAgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTAsIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiAgUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQK
KyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TgorICogQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTCisgKiBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCitbCisgICAgQ29uZGl0aW9uYWw9V0VCX0FVRElPLAorXSBlbnVtIFBhbm5pbmdNb2RlbFR5
cGUgeworICAgICJlcXVhbHBvd2VyIiwKKyAgICAiSFJURiIKK307CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1NjcmlwdFByb2Nlc3Nvck5vZGUuY3BwIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9TY3JpcHRQcm9jZXNzb3JOb2RlLmNwcAppbmRl
eCA5MWM3NTM3ZTE1ZThiNTUyNDExZWE5ZjYxMzAxZWMxYzMyNWFkMjU2Li43NjEwYjE1MDI0ODc4
YjYwNmU1Y2RkOGM0ZjVhYjBmYjExZGMwMzQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmF1ZGlvL1NjcmlwdFByb2Nlc3Nvck5vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViYXVkaW8vU2NyaXB0UHJvY2Vzc29yTm9kZS5jcHAKQEAgLTQ0LDEyICs0
NCwxMiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFdURl9NQUtFX0lTT19BTExPQ0FURURfSU1Q
TChTY3JpcHRQcm9jZXNzb3JOb2RlKTsKIAotUmVmPFNjcmlwdFByb2Nlc3Nvck5vZGU+IFNjcmlw
dFByb2Nlc3Nvck5vZGU6OmNyZWF0ZShBdWRpb0NvbnRleHQmIGNvbnRleHQsIGZsb2F0IHNhbXBs
ZVJhdGUsIHNpemVfdCBidWZmZXJTaXplLCB1bnNpZ25lZCBudW1iZXJPZklucHV0Q2hhbm5lbHMs
IHVuc2lnbmVkIG51bWJlck9mT3V0cHV0Q2hhbm5lbHMpCitSZWY8U2NyaXB0UHJvY2Vzc29yTm9k
ZT4gU2NyaXB0UHJvY2Vzc29yTm9kZTo6Y3JlYXRlKEF1ZGlvQ29udGV4dEJhc2UmIGNvbnRleHQs
IGZsb2F0IHNhbXBsZVJhdGUsIHNpemVfdCBidWZmZXJTaXplLCB1bnNpZ25lZCBudW1iZXJPZklu
cHV0Q2hhbm5lbHMsIHVuc2lnbmVkIG51bWJlck9mT3V0cHV0Q2hhbm5lbHMpCiB7CiAgICAgcmV0
dXJuIGFkb3B0UmVmKCpuZXcgU2NyaXB0UHJvY2Vzc29yTm9kZShjb250ZXh0LCBzYW1wbGVSYXRl
LCBidWZmZXJTaXplLCBudW1iZXJPZklucHV0Q2hhbm5lbHMsIG51bWJlck9mT3V0cHV0Q2hhbm5l
bHMpKTsKIH0KIAotU2NyaXB0UHJvY2Vzc29yTm9kZTo6U2NyaXB0UHJvY2Vzc29yTm9kZShBdWRp
b0NvbnRleHQmIGNvbnRleHQsIGZsb2F0IHNhbXBsZVJhdGUsIHNpemVfdCBidWZmZXJTaXplLCB1
bnNpZ25lZCBudW1iZXJPZklucHV0Q2hhbm5lbHMsIHVuc2lnbmVkIG51bWJlck9mT3V0cHV0Q2hh
bm5lbHMpCitTY3JpcHRQcm9jZXNzb3JOb2RlOjpTY3JpcHRQcm9jZXNzb3JOb2RlKEF1ZGlvQ29u
dGV4dEJhc2UmIGNvbnRleHQsIGZsb2F0IHNhbXBsZVJhdGUsIHNpemVfdCBidWZmZXJTaXplLCB1
bnNpZ25lZCBudW1iZXJPZklucHV0Q2hhbm5lbHMsIHVuc2lnbmVkIG51bWJlck9mT3V0cHV0Q2hh
bm5lbHMpCiAgICAgOiBBdWRpb05vZGUoY29udGV4dCwgc2FtcGxlUmF0ZSkKICAgICAsIEFjdGl2
ZURPTU9iamVjdChjb250ZXh0LnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSkKICAgICAsIG1fZG91
YmxlQnVmZmVySW5kZXgoMCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
YXVkaW8vU2NyaXB0UHJvY2Vzc29yTm9kZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJh
dWRpby9TY3JpcHRQcm9jZXNzb3JOb2RlLmgKaW5kZXggNWE0ZTdjZTQ3NTIyZWYyOGViZjJmZDE3
OTZhZjU4NGJhNzViNDEzMy4uNGMxNGEwNzU3ZGY1YzVlNjJkZmU5NmE4OGViNDJiNDdmMTVlNzI1
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9TY3JpcHRQcm9j
ZXNzb3JOb2RlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9TY3JpcHRQ
cm9jZXNzb3JOb2RlLmgKQEAgLTUyLDcgKzUyLDcgQEAgcHVibGljOgogICAgIC8vIFRoaXMgdmFs
dWUgY29udHJvbHMgaG93IGZyZXF1ZW50bHkgdGhlIG9uYXVkaW9wcm9jZXNzIGV2ZW50IGhhbmRs
ZXIgaXMgY2FsbGVkIGFuZCBob3cgbWFueSBzYW1wbGUtZnJhbWVzIG5lZWQgdG8gYmUgcHJvY2Vz
c2VkIGVhY2ggY2FsbC4KICAgICAvLyBMb3dlciBudW1iZXJzIGZvciBidWZmZXJTaXplIHdpbGwg
cmVzdWx0IGluIGEgbG93ZXIgKGJldHRlcikgbGF0ZW5jeS4gSGlnaGVyIG51bWJlcnMgd2lsbCBi
ZSBuZWNlc3NhcnkgdG8gYXZvaWQgYXVkaW8gYnJlYWt1cCBhbmQgZ2xpdGNoZXMuCiAgICAgLy8g
VGhlIHZhbHVlIGNob3NlbiBtdXN0IGNhcmVmdWxseSBiYWxhbmNlIGJldHdlZW4gbGF0ZW5jeSBh
bmQgYXVkaW8gcXVhbGl0eS4KLSAgICBzdGF0aWMgUmVmPFNjcmlwdFByb2Nlc3Nvck5vZGU+IGNy
ZWF0ZShBdWRpb0NvbnRleHQmLCBmbG9hdCBzYW1wbGVSYXRlLCBzaXplX3QgYnVmZmVyU2l6ZSwg
dW5zaWduZWQgbnVtYmVyT2ZJbnB1dENoYW5uZWxzLCB1bnNpZ25lZCBudW1iZXJPZk91dHB1dENo
YW5uZWxzKTsKKyAgICBzdGF0aWMgUmVmPFNjcmlwdFByb2Nlc3Nvck5vZGU+IGNyZWF0ZShBdWRp
b0NvbnRleHRCYXNlJiwgZmxvYXQgc2FtcGxlUmF0ZSwgc2l6ZV90IGJ1ZmZlclNpemUsIHVuc2ln
bmVkIG51bWJlck9mSW5wdXRDaGFubmVscywgdW5zaWduZWQgbnVtYmVyT2ZPdXRwdXRDaGFubmVs
cyk7CiAKICAgICB2aXJ0dWFsIH5TY3JpcHRQcm9jZXNzb3JOb2RlKCk7CiAKQEAgLTcxLDcgKzcx
LDcgQEAgcHJpdmF0ZToKICAgICBkb3VibGUgdGFpbFRpbWUoKSBjb25zdCBvdmVycmlkZTsKICAg
ICBkb3VibGUgbGF0ZW5jeVRpbWUoKSBjb25zdCBvdmVycmlkZTsKIAotICAgIFNjcmlwdFByb2Nl
c3Nvck5vZGUoQXVkaW9Db250ZXh0JiwgZmxvYXQgc2FtcGxlUmF0ZSwgc2l6ZV90IGJ1ZmZlclNp
emUsIHVuc2lnbmVkIG51bWJlck9mSW5wdXRDaGFubmVscywgdW5zaWduZWQgbnVtYmVyT2ZPdXRw
dXRDaGFubmVscyk7CisgICAgU2NyaXB0UHJvY2Vzc29yTm9kZShBdWRpb0NvbnRleHRCYXNlJiwg
ZmxvYXQgc2FtcGxlUmF0ZSwgc2l6ZV90IGJ1ZmZlclNpemUsIHVuc2lnbmVkIG51bWJlck9mSW5w
dXRDaGFubmVscywgdW5zaWduZWQgbnVtYmVyT2ZPdXRwdXRDaGFubmVscyk7CiAKICAgICB2b2lk
IGZpcmVQcm9jZXNzRXZlbnQoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJhdWRpby9XYXZlU2hhcGVyTm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmF1ZGlvL1dhdmVTaGFwZXJOb2RlLmNwcAppbmRleCA2ZTdlOGRkMWM5YzE5ZmEzYzg1ZTNkOWQ4
NTVhYjlmNDU3ODViNzkwLi5hZTRhZjlmMjMyZjc1MTM2YzA4MWFmZTE0YmQ3YTc5NTZjMDUyOTZl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1dhdmVTaGFwZXJO
b2RlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1dhdmVTaGFwZXJO
b2RlLmNwcApAQCAtMzUsNyArMzUsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFdURl9NQUtF
X0lTT19BTExPQ0FURURfSU1QTChXYXZlU2hhcGVyTm9kZSk7CiAKLVdhdmVTaGFwZXJOb2RlOjpX
YXZlU2hhcGVyTm9kZShBdWRpb0NvbnRleHQmIGNvbnRleHQpCitXYXZlU2hhcGVyTm9kZTo6V2F2
ZVNoYXBlck5vZGUoQXVkaW9Db250ZXh0QmFzZSYgY29udGV4dCkKICAgICA6IEF1ZGlvQmFzaWNQ
cm9jZXNzb3JOb2RlKGNvbnRleHQsIGNvbnRleHQuc2FtcGxlUmF0ZSgpKQogewogICAgIHNldE5v
ZGVUeXBlKE5vZGVUeXBlV2F2ZVNoYXBlcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmF1ZGlvL1dhdmVTaGFwZXJOb2RlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmF1ZGlvL1dhdmVTaGFwZXJOb2RlLmgKaW5kZXggZjQ5ZTM0OWJjM2RjOGMyOWI0YTZlNjNk
ZmRiZjk4NjRiOTZmODY4MC4uNWY0OTMyOGIyMmQwZWJlNWQ2ZWY2ZDAzYzZhZTZkNmZmYzFhMTEw
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9XYXZlU2hhcGVy
Tm9kZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vV2F2ZVNoYXBlck5v
ZGUuaApAQCAtMzMsNyArMzMsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBXYXZlU2hh
cGVyTm9kZSBmaW5hbCA6IHB1YmxpYyBBdWRpb0Jhc2ljUHJvY2Vzc29yTm9kZSB7CiAgICAgV1RG
X01BS0VfSVNPX0FMTE9DQVRFRChXYXZlU2hhcGVyTm9kZSk7CiBwdWJsaWM6Ci0gICAgc3RhdGlj
IFJlZjxXYXZlU2hhcGVyTm9kZT4gY3JlYXRlKEF1ZGlvQ29udGV4dCYgY29udGV4dCkKKyAgICBz
dGF0aWMgUmVmPFdhdmVTaGFwZXJOb2RlPiBjcmVhdGUoQXVkaW9Db250ZXh0QmFzZSYgY29udGV4
dCkKICAgICB7CiAgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFdhdmVTaGFwZXJOb2RlKGNv
bnRleHQpKTsKICAgICB9CkBAIC00OSw3ICs0OSw3IEBAIHB1YmxpYzoKICAgICBkb3VibGUgbGF0
ZW5jeSgpIGNvbnN0IHsgcmV0dXJuIGxhdGVuY3lUaW1lKCk7IH0KIAogcHJpdmF0ZTogICAgCi0g
ICAgZXhwbGljaXQgV2F2ZVNoYXBlck5vZGUoQXVkaW9Db250ZXh0Jik7ICAgIAorICAgIGV4cGxp
Y2l0IFdhdmVTaGFwZXJOb2RlKEF1ZGlvQ29udGV4dEJhc2UmKTsKIAogICAgIFdhdmVTaGFwZXJQ
cm9jZXNzb3IqIHdhdmVTaGFwZXJQcm9jZXNzb3IoKSB7IHJldHVybiBzdGF0aWNfY2FzdDxXYXZl
U2hhcGVyUHJvY2Vzc29yKj4ocHJvY2Vzc29yKCkpOyB9CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9XZWJLaXRBdWRpb0NvbnRleHQuY3BwIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9XZWJLaXRBdWRpb0NvbnRleHQuY3BwCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjQxZDFjMTVkNDBlYmI1N2EyMTk3NmY3ZjczYjA1ZDM4NjBmMzBhNmQKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1dlYktpdEF1ZGlvQ29udGV4
dC5jcHAKQEAgLTAsMCArMSwxMzk3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2ds
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04KKyAqIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUworICogU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgor
CisjaWYgRU5BQkxFKFdFQl9BVURJTykKKworI2luY2x1ZGUgIldlYktpdEF1ZGlvQ29udGV4dC5o
IgorCisjaW5jbHVkZSAiQW5hbHlzZXJOb2RlLmgiCisjaW5jbHVkZSAiQXN5bmNBdWRpb0RlY29k
ZXIuaCIKKyNpbmNsdWRlICJBdWRpb0J1ZmZlci5oIgorI2luY2x1ZGUgIkF1ZGlvQnVmZmVyQ2Fs
bGJhY2suaCIKKyNpbmNsdWRlICJBdWRpb0J1ZmZlclNvdXJjZU5vZGUuaCIKKyNpbmNsdWRlICJB
dWRpb0xpc3RlbmVyLmgiCisjaW5jbHVkZSAiQXVkaW9Ob2RlSW5wdXQuaCIKKyNpbmNsdWRlICJB
dWRpb05vZGVPdXRwdXQuaCIKKyNpbmNsdWRlICJBdWRpb1Nlc3Npb24uaCIKKyNpbmNsdWRlICJC
aXF1YWRGaWx0ZXJOb2RlLmgiCisjaW5jbHVkZSAiQ2hhbm5lbE1lcmdlck5vZGUuaCIKKyNpbmNs
dWRlICJDaGFubmVsU3BsaXR0ZXJOb2RlLmgiCisjaW5jbHVkZSAiQ29udm9sdmVyTm9kZS5oIgor
I2luY2x1ZGUgIkRlZmF1bHRBdWRpb0Rlc3RpbmF0aW9uTm9kZS5oIgorI2luY2x1ZGUgIkRlbGF5
Tm9kZS5oIgorI2luY2x1ZGUgIkRvY3VtZW50LmgiCisjaW5jbHVkZSAiRHluYW1pY3NDb21wcmVz
c29yTm9kZS5oIgorI2luY2x1ZGUgIkV2ZW50TmFtZXMuaCIKKyNpbmNsdWRlICJGRlRGcmFtZS5o
IgorI2luY2x1ZGUgIkZyYW1lLmgiCisjaW5jbHVkZSAiRnJhbWVMb2FkZXIuaCIKKyNpbmNsdWRl
ICJHYWluTm9kZS5oIgorI2luY2x1ZGUgIkdlbmVyaWNFdmVudFF1ZXVlLmgiCisjaW5jbHVkZSAi
SFJURkRhdGFiYXNlTG9hZGVyLmgiCisjaW5jbHVkZSAiSFJURlBhbm5lci5oIgorI2luY2x1ZGUg
IkpTRE9NUHJvbWlzZURlZmVycmVkLmgiCisjaW5jbHVkZSAiTG9nZ2luZy5oIgorI2luY2x1ZGUg
Ik5ldHdvcmtpbmdDb250ZXh0LmgiCisjaW5jbHVkZSAiT2ZmbGluZUF1ZGlvQ29tcGxldGlvbkV2
ZW50LmgiCisjaW5jbHVkZSAiT2ZmbGluZUF1ZGlvRGVzdGluYXRpb25Ob2RlLmgiCisjaW5jbHVk
ZSAiT3NjaWxsYXRvck5vZGUuaCIKKyNpbmNsdWRlICJQYWdlLmgiCisjaW5jbHVkZSAiUGVyaW9k
aWNXYXZlLmgiCisjaW5jbHVkZSAiUGxhdGZvcm1NZWRpYVNlc3Npb25NYW5hZ2VyLmgiCisjaW5j
bHVkZSAiU2NyaXB0Q29udHJvbGxlci5oIgorI2luY2x1ZGUgIlNjcmlwdFByb2Nlc3Nvck5vZGUu
aCIKKyNpbmNsdWRlICJXYXZlU2hhcGVyTm9kZS5oIgorI2luY2x1ZGUgIldlYktpdEF1ZGlvUGFu
bmVyTm9kZS5oIgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1NjcmlwdENhbGxTdGFjay5oPgor
CisjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKKyNpbmNsdWRlICJNZWRpYVN0cmVhbS5oIgorI2lu
Y2x1ZGUgIk1lZGlhU3RyZWFtQXVkaW9EZXN0aW5hdGlvbk5vZGUuaCIKKyNpbmNsdWRlICJNZWRp
YVN0cmVhbUF1ZGlvU291cmNlLmgiCisjaW5jbHVkZSAiTWVkaWFTdHJlYW1BdWRpb1NvdXJjZU5v
ZGUuaCIKKyNlbmRpZgorCisjaWYgRU5BQkxFKFZJREVPKQorI2luY2x1ZGUgIkhUTUxNZWRpYUVs
ZW1lbnQuaCIKKyNpbmNsdWRlICJNZWRpYUVsZW1lbnRBdWRpb1NvdXJjZU5vZGUuaCIKKyNlbmRp
ZgorCisjaWYgREVCVUdfQVVESU9OT0RFX1JFRkVSRU5DRVMKKyNpbmNsdWRlIDxzdGRpby5oPgor
I2VuZGlmCisKKyNpZiBVU0UoR1NUUkVBTUVSKQorI2luY2x1ZGUgIkdTdHJlYW1lckNvbW1vbi5o
IgorI2VuZGlmCisKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQorI2luY2x1ZGUgIlNjcmlwdENv
bnRyb2xsZXIuaCIKKyNpbmNsdWRlICJTZXR0aW5ncy5oIgorI2VuZGlmCisKKyNpbmNsdWRlIDxK
YXZhU2NyaXB0Q29yZS9BcnJheUJ1ZmZlci5oPgorI2luY2x1ZGUgPHd0Zi9BdG9taWNzLmg+Cisj
aW5jbHVkZSA8d3RmL0lzb01hbGxvY0lubGluZXMuaD4KKyNpbmNsdWRlIDx3dGYvTWFpblRocmVh
ZC5oPgorI2luY2x1ZGUgPHd0Zi9SZWYuaD4KKyNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgor
I2luY2x1ZGUgPHd0Zi9TY29wZS5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgor
Citjb25zdCB1bnNpZ25lZCBNYXhQZXJpb2RpY1dhdmVMZW5ndGggPSA0MDk2OworCituYW1lc3Bh
Y2UgV2ViQ29yZSB7CisKK1dURl9NQUtFX0lTT19BTExPQ0FURURfSU1QTChXZWJLaXRBdWRpb0Nv
bnRleHQpOworCisjZGVmaW5lIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoZm10LCAuLi4pIFJFTEVB
U0VfTE9HX0lGKGRvY3VtZW50KCkgJiYgZG9jdW1lbnQoKS0+cGFnZSgpICYmIGRvY3VtZW50KCkt
PnBhZ2UoKS0+aXNBbHdheXNPbkxvZ2dpbmdBbGxvd2VkKCksIE1lZGlhLCAiJXAgLSBXZWJLaXRB
dWRpb0NvbnRleHQ6OiIgZm10LCB0aGlzLCAjI19fVkFfQVJHU19fKQorCitib29sIFdlYktpdEF1
ZGlvQ29udGV4dDo6aXNTYW1wbGVSYXRlUmFuZ2VHb29kKGZsb2F0IHNhbXBsZVJhdGUpCit7Cisg
ICAgLy8gRklYTUU6IEl0IHdvdWxkIGJlIG5pY2UgaWYgdGhlIG1pbmltdW0gc2FtcGxlLXJhdGUg
Y291bGQgYmUgbGVzcyB0aGFuIDQ0LjFLSHosCisgICAgLy8gYnV0IHRoYXQgd2lsbCByZXF1aXJl
IHNvbWUgZml4ZXMgaW4gSFJURlBhbm5lcjo6ZmZ0U2l6ZUZvclNhbXBsZVJhdGUoKSwgYW5kIHNv
bWUgdGVzdGluZyB0aGVyZS4KKyAgICByZXR1cm4gc2FtcGxlUmF0ZSA+PSA0NDEwMCAmJiBzYW1w
bGVSYXRlIDw9IDk2MDAwOworfQorCisjaWYgT1MoV0lORE9XUykKKy8vIERvbid0IGFsbG93IG1v
cmUgdGhhbiB0aGlzIG51bWJlciBvZiBzaW11bHRhbmVvdXMgQXVkaW9Db250ZXh0cyB0YWxraW5n
IHRvIGhhcmR3YXJlLgorY29uc3RleHByIHVuc2lnbmVkIG1heEhhcmR3YXJlQ29udGV4dHMgPSA0
OworI2VuZGlmCit1bnNpZ25lZCBXZWJLaXRBdWRpb0NvbnRleHQ6OnNfaGFyZHdhcmVDb250ZXh0
Q291bnQgPSAwOworCitFeGNlcHRpb25PcjxSZWY8V2ViS2l0QXVkaW9Db250ZXh0Pj4gV2ViS2l0
QXVkaW9Db250ZXh0OjpjcmVhdGUoRG9jdW1lbnQmIGRvY3VtZW50KQoreworICAgIEFTU0VSVChp
c01haW5UaHJlYWQoKSk7CisjaWYgT1MoV0lORE9XUykKKyAgICBpZiAoc19oYXJkd2FyZUNvbnRl
eHRDb3VudCA+PSBtYXhIYXJkd2FyZUNvbnRleHRzKQorICAgICAgICByZXR1cm4gRXhjZXB0aW9u
IHsgUXVvdGFFeGNlZWRlZEVycm9yIH07CisjZW5kaWYKKworICAgIGF1dG8gYXVkaW9Db250ZXh0
ID0gYWRvcHRSZWYoKm5ldyBXZWJLaXRBdWRpb0NvbnRleHQoZG9jdW1lbnQpKTsKKyAgICBhdWRp
b0NvbnRleHQtPnN1c3BlbmRJZk5lZWRlZCgpOworICAgIHJldHVybiBhdWRpb0NvbnRleHQ7Cit9
CisKKy8vIENvbnN0cnVjdG9yIGZvciByZW5kZXJpbmcgdG8gdGhlIGF1ZGlvIGhhcmR3YXJlLgor
V2ViS2l0QXVkaW9Db250ZXh0OjpXZWJLaXRBdWRpb0NvbnRleHQoRG9jdW1lbnQmIGRvY3VtZW50
KQorICAgIDogQXVkaW9Db250ZXh0QmFzZShkb2N1bWVudCkKKyNpZiAhUkVMRUFTRV9MT0dfRElT
QUJMRUQKKyAgICAsIG1fbG9nZ2VyKGRvY3VtZW50LmxvZ2dlcigpKQorICAgICwgbV9sb2dJZGVu
dGlmaWVyKHVuaXF1ZUxvZ0lkZW50aWZpZXIoKSkKKyNlbmRpZgorICAgICwgbV9tZWRpYVNlc3Np
b24oUGxhdGZvcm1NZWRpYVNlc3Npb246OmNyZWF0ZShQbGF0Zm9ybU1lZGlhU2Vzc2lvbk1hbmFn
ZXI6OnNoYXJlZE1hbmFnZXIoKSwgKnRoaXMpKQorICAgICwgbV9ldmVudFF1ZXVlKE1haW5UaHJl
YWRHZW5lcmljRXZlbnRRdWV1ZTo6Y3JlYXRlKCp0aGlzKSkKK3sKKyAgICAvLyBBY2NvcmRpbmcg
dG8gc3BlYyBBdWRpb0NvbnRleHQgbXVzdCBkaWUgb25seSBhZnRlciBwYWdlIG5hdmlnYXRlLgor
ICAgIC8vIExldHMgbWFyayBpdCBhcyBBY3RpdmVET01PYmplY3Qgd2l0aCBwZW5kaW5nIGFjdGl2
aXR5IGFuZCB1bm1hcmsgaXQgaW4gY2xlYXIgbWV0aG9kLgorICAgIG1ha2VQZW5kaW5nQWN0aXZp
dHkoKTsKKworICAgIGNvbnN0cnVjdENvbW1vbigpOworCisgICAgbV9kZXN0aW5hdGlvbk5vZGUg
PSBEZWZhdWx0QXVkaW9EZXN0aW5hdGlvbk5vZGU6OmNyZWF0ZSgqdGhpcyk7CisKKyAgICAvLyBJ
bml0aWFsaXplIHRoZSBkZXN0aW5hdGlvbiBub2RlJ3MgbXV0ZWQgc3RhdGUgdG8gbWF0Y2ggdGhl
IHBhZ2UncyBjdXJyZW50IG11dGVkIHN0YXRlLgorICAgIHBhZ2VNdXRlZFN0YXRlRGlkQ2hhbmdl
KCk7CisKKyAgICBkb2N1bWVudC5hZGRBdWRpb1Byb2R1Y2VyKCp0aGlzKTsKKyAgICBkb2N1bWVu
dC5yZWdpc3RlckZvclZpc2liaWxpdHlTdGF0ZUNoYW5nZWRDYWxsYmFja3MoKnRoaXMpOworfQor
CisvLyBDb25zdHJ1Y3RvciBmb3Igb2ZmbGluZSAobm9uLXJlYWx0aW1lKSByZW5kZXJpbmcuCitX
ZWJLaXRBdWRpb0NvbnRleHQ6OldlYktpdEF1ZGlvQ29udGV4dChEb2N1bWVudCYgZG9jdW1lbnQs
IEF1ZGlvQnVmZmVyKiByZW5kZXJUYXJnZXQpCisgICAgOiBBdWRpb0NvbnRleHRCYXNlKGRvY3Vt
ZW50KQorI2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRAorICAgICwgbV9sb2dnZXIoZG9jdW1lbnQu
bG9nZ2VyKCkpCisgICAgLCBtX2xvZ0lkZW50aWZpZXIodW5pcXVlTG9nSWRlbnRpZmllcigpKQor
I2VuZGlmCisgICAgLCBtX2lzT2ZmbGluZUNvbnRleHQodHJ1ZSkKKyAgICAsIG1fbWVkaWFTZXNz
aW9uKFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpjcmVhdGUoUGxhdGZvcm1NZWRpYVNlc3Npb25NYW5h
Z2VyOjpzaGFyZWRNYW5hZ2VyKCksICp0aGlzKSkKKyAgICAsIG1fZXZlbnRRdWV1ZShNYWluVGhy
ZWFkR2VuZXJpY0V2ZW50UXVldWU6OmNyZWF0ZSgqdGhpcykpCisgICAgLCBtX3JlbmRlclRhcmdl
dChyZW5kZXJUYXJnZXQpCit7CisgICAgY29uc3RydWN0Q29tbW9uKCk7CisKKyAgICAvLyBDcmVh
dGUgYSBuZXcgZGVzdGluYXRpb24gZm9yIG9mZmxpbmUgcmVuZGVyaW5nLgorICAgIG1fZGVzdGlu
YXRpb25Ob2RlID0gT2ZmbGluZUF1ZGlvRGVzdGluYXRpb25Ob2RlOjpjcmVhdGUoKnRoaXMsIG1f
cmVuZGVyVGFyZ2V0LmdldCgpKTsKK30KKwordm9pZCBXZWJLaXRBdWRpb0NvbnRleHQ6OmNvbnN0
cnVjdENvbW1vbigpCit7CisgICAgRkZURnJhbWU6OmluaXRpYWxpemUoKTsKKworICAgIG1fbGlz
dGVuZXIgPSBBdWRpb0xpc3RlbmVyOjpjcmVhdGUoKTsKKworICAgIEFTU0VSVChkb2N1bWVudCgp
KTsKKyAgICBpZiAoZG9jdW1lbnQoKS0+YXVkaW9QbGF5YmFja1JlcXVpcmVzVXNlckdlc3R1cmUo
KSkKKyAgICAgICAgYWRkQmVoYXZpb3JSZXN0cmljdGlvbihSZXF1aXJlVXNlckdlc3R1cmVGb3JB
dWRpb1N0YXJ0UmVzdHJpY3Rpb24pOworICAgIGVsc2UKKyAgICAgICAgbV9yZXN0cmljdGlvbnMg
PSBOb1Jlc3RyaWN0aW9uczsKKworI2lmIFBMQVRGT1JNKENPQ09BKQorICAgIGFkZEJlaGF2aW9y
UmVzdHJpY3Rpb24oUmVxdWlyZVBhZ2VDb25zZW50Rm9yQXVkaW9TdGFydFJlc3RyaWN0aW9uKTsK
KyNlbmRpZgorfQorCitXZWJLaXRBdWRpb0NvbnRleHQ6On5XZWJLaXRBdWRpb0NvbnRleHQoKQor
eworI2lmIERFQlVHX0FVRElPTk9ERV9SRUZFUkVOQ0VTCisgICAgZnByaW50ZihzdGRlcnIsICIl
cDogV2ViS2l0QXVkaW9Db250ZXh0Ojp+V2ViS2l0QXVkaW9Db250ZXh0KClcbiIsIHRoaXMpOwor
I2VuZGlmCisgICAgQVNTRVJUKCFtX2lzSW5pdGlhbGl6ZWQpOworICAgIEFTU0VSVChtX2lzU3Rv
cFNjaGVkdWxlZCk7CisgICAgQVNTRVJUKG1fbm9kZXNUb0RlbGV0ZS5pc0VtcHR5KCkpOworICAg
IEFTU0VSVChtX3JlZmVyZW5jZWROb2Rlcy5pc0VtcHR5KCkpOworICAgIEFTU0VSVChtX2Zpbmlz
aGVkTm9kZXMuaXNFbXB0eSgpKTsgLy8gRklYTUUgKGJ1ZyAxMDU4NzApOiBUaGlzIGFzc2VydGlv
biBmYWlscyBvbiB0ZXN0cyBzb21ldGltZXMuCisgICAgQVNTRVJUKG1fYXV0b21hdGljUHVsbE5v
ZGVzLmlzRW1wdHkoKSk7CisgICAgaWYgKG1fYXV0b21hdGljUHVsbE5vZGVzTmVlZFVwZGF0aW5n
KQorICAgICAgICBtX3JlbmRlcmluZ0F1dG9tYXRpY1B1bGxOb2Rlcy5yZXNpemUobV9hdXRvbWF0
aWNQdWxsTm9kZXMuc2l6ZSgpKTsKKyAgICBBU1NFUlQobV9yZW5kZXJpbmdBdXRvbWF0aWNQdWxs
Tm9kZXMuaXNFbXB0eSgpKTsKKyAgICAvLyBGSVhNRTogQ2FuIHdlIGFzc2VydCB0aGF0IG1fZGVm
ZXJyZWRGaW5pc2hEZXJlZkxpc3QgaXMgZW1wdHk/CisKKyAgICBpZiAoIWlzT2ZmbGluZUNvbnRl
eHQoKSAmJiBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpIHsKKyAgICAgICAgZG9jdW1lbnQoKS0+
cmVtb3ZlQXVkaW9Qcm9kdWNlcigqdGhpcyk7CisgICAgICAgIGRvY3VtZW50KCktPnVucmVnaXN0
ZXJGb3JWaXNpYmlsaXR5U3RhdGVDaGFuZ2VkQ2FsbGJhY2tzKCp0aGlzKTsKKyAgICB9Cit9CisK
K3ZvaWQgV2ViS2l0QXVkaW9Db250ZXh0OjpsYXp5SW5pdGlhbGl6ZSgpCit7CisgICAgQVNTRVJU
KCFtX2lzU3RvcFNjaGVkdWxlZCk7CisKKyAgICBpZiAobV9pc0luaXRpYWxpemVkKQorICAgICAg
ICByZXR1cm47CisKKyAgICAvLyBEb24ndCBhbGxvdyB0aGUgY29udGV4dCB0byBpbml0aWFsaXpl
IGEgc2Vjb25kIHRpbWUgYWZ0ZXIgaXQncyBhbHJlYWR5IGJlZW4gZXhwbGljaXRseSB1bmluaXRp
YWxpemVkLgorICAgIEFTU0VSVCghbV9pc0F1ZGlvVGhyZWFkRmluaXNoZWQpOworICAgIGlmICht
X2lzQXVkaW9UaHJlYWRGaW5pc2hlZCkKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKG1fZGVz
dGluYXRpb25Ob2RlKSB7CisgICAgICAgIG1fZGVzdGluYXRpb25Ob2RlLT5pbml0aWFsaXplKCk7
CisKKyAgICAgICAgaWYgKCFpc09mZmxpbmVDb250ZXh0KCkpIHsKKyAgICAgICAgICAgIC8vIFRo
aXMgc3RhcnRzIHRoZSBhdWRpbyB0aHJlYWQuIFRoZSBkZXN0aW5hdGlvbiBub2RlJ3MgcHJvdmlk
ZUlucHV0KCkgbWV0aG9kIHdpbGwgbm93IGJlIGNhbGxlZCByZXBlYXRlZGx5IHRvIHJlbmRlciBh
dWRpby4KKyAgICAgICAgICAgIC8vIEVhY2ggdGltZSBwcm92aWRlSW5wdXQoKSBpcyBjYWxsZWQs
IGEgcG9ydGlvbiBvZiB0aGUgYXVkaW8gc3RyZWFtIGlzIHJlbmRlcmVkLiBMZXQncyBjYWxsIHRo
aXMgdGltZSBwZXJpb2QgYSAicmVuZGVyIHF1YW50dW0iLgorICAgICAgICAgICAgLy8gTk9URTog
Zm9yIG5vdyBkZWZhdWx0IEF1ZGlvQ29udGV4dCBkb2VzIG5vdCBuZWVkIGFuIGV4cGxpY2l0IHN0
YXJ0UmVuZGVyaW5nKCkgY2FsbCBmcm9tIEphdmFTY3JpcHQuCisgICAgICAgICAgICAvLyBXZSBt
YXkgd2FudCB0byBjb25zaWRlciByZXF1aXJpbmcgaXQgZm9yIHN5bW1ldHJ5IHdpdGggT2ZmbGlu
ZUF1ZGlvQ29udGV4dC4KKyAgICAgICAgICAgIHN0YXJ0UmVuZGVyaW5nKCk7CisgICAgICAgICAg
ICArK3NfaGFyZHdhcmVDb250ZXh0Q291bnQ7CisgICAgICAgIH0KKyAgICB9CisgICAgbV9pc0lu
aXRpYWxpemVkID0gdHJ1ZTsKK30KKwordm9pZCBXZWJLaXRBdWRpb0NvbnRleHQ6OmNsZWFyKCkK
K3sKKyAgICBSZWY8V2ViS2l0QXVkaW9Db250ZXh0PiBwcm90ZWN0ZWRUaGlzKCp0aGlzKTsKKwor
ICAgIC8vIFdlIGhhdmUgdG8gcmVsZWFzZSBvdXIgcmVmZXJlbmNlIHRvIHRoZSBkZXN0aW5hdGlv
biBub2RlIGJlZm9yZSB0aGUgY29udGV4dCB3aWxsIGV2ZXIgYmUgZGVsZXRlZCBzaW5jZSB0aGUg
ZGVzdGluYXRpb24gbm9kZSBob2xkcyBhIHJlZmVyZW5jZSB0byB0aGUgY29udGV4dC4KKyAgICBp
ZiAobV9kZXN0aW5hdGlvbk5vZGUpCisgICAgICAgIG1fZGVzdGluYXRpb25Ob2RlID0gbnVsbHB0
cjsKKworICAgIC8vIEF1ZGlvIHRocmVhZCBpcyBkZWFkLiBOb2JvZHkgd2lsbCBzY2hlZHVsZSBu
b2RlIGRlbGV0aW9uIGFjdGlvbi4gTGV0J3MgZG8gaXQgb3Vyc2VsdmVzLgorICAgIGRvIHsKKyAg
ICAgICAgZGVsZXRlTWFya2VkTm9kZXMoKTsKKyAgICAgICAgbV9ub2Rlc1RvRGVsZXRlLmFwcGVu
ZFZlY3RvcihtX25vZGVzTWFya2VkRm9yRGVsZXRpb24pOworICAgICAgICBtX25vZGVzTWFya2Vk
Rm9yRGVsZXRpb24uY2xlYXIoKTsKKyAgICB9IHdoaWxlIChtX25vZGVzVG9EZWxldGUuc2l6ZSgp
KTsKKworICAgIGNsZWFyUGVuZGluZ0FjdGl2aXR5KCk7Cit9CisKK3ZvaWQgV2ViS2l0QXVkaW9D
b250ZXh0Ojp1bmluaXRpYWxpemUoKQoreworICAgIEFMV0FZU19MT0coTE9HSURFTlRJRklFUik7
CisKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworCisgICAgaWYgKCFtX2lzSW5pdGlhbGl6
ZWQpCisgICAgICAgIHJldHVybjsKKworICAgIC8vIFRoaXMgc3RvcHMgdGhlIGF1ZGlvIHRocmVh
ZCBhbmQgYWxsIGF1ZGlvIHJlbmRlcmluZy4KKyAgICBpZiAobV9kZXN0aW5hdGlvbk5vZGUpCisg
ICAgICAgIG1fZGVzdGluYXRpb25Ob2RlLT51bmluaXRpYWxpemUoKTsKKworICAgIC8vIERvbid0
IGFsbG93IHRoZSBjb250ZXh0IHRvIGluaXRpYWxpemUgYSBzZWNvbmQgdGltZSBhZnRlciBpdCdz
IGFscmVhZHkgYmVlbiBleHBsaWNpdGx5IHVuaW5pdGlhbGl6ZWQuCisgICAgbV9pc0F1ZGlvVGhy
ZWFkRmluaXNoZWQgPSB0cnVlOworCisgICAgaWYgKCFpc09mZmxpbmVDb250ZXh0KCkpIHsKKyAg
ICAgICAgQVNTRVJUKHNfaGFyZHdhcmVDb250ZXh0Q291bnQpOworICAgICAgICAtLXNfaGFyZHdh
cmVDb250ZXh0Q291bnQ7CisKKyAgICAgICAgLy8gT2ZmbGluZSBjb250ZXh0cyBtb3ZlIHRvICdD
bG9zZWQnIHN0YXRlIHdoZW4gZGlzcGF0Y2hpbmcgdGhlIGNvbXBsZXRpb24gZXZlbnQuCisgICAg
ICAgIHNldFN0YXRlKFN0YXRlOjpDbG9zZWQpOworICAgIH0KKworICAgIC8vIEdldCByaWQgb2Yg
dGhlIHNvdXJjZXMgd2hpY2ggbWF5IHN0aWxsIGJlIHBsYXlpbmcuCisgICAgZGVyZWZVbmZpbmlz
aGVkU291cmNlTm9kZXMoKTsKKworICAgIG1faXNJbml0aWFsaXplZCA9IGZhbHNlOworfQorCiti
b29sIFdlYktpdEF1ZGlvQ29udGV4dDo6aXNJbml0aWFsaXplZCgpIGNvbnN0Cit7CisgICAgcmV0
dXJuIG1faXNJbml0aWFsaXplZDsKK30KKwordm9pZCBXZWJLaXRBdWRpb0NvbnRleHQ6OmFkZFJl
YWN0aW9uKFN0YXRlIHN0YXRlLCBET01Qcm9taXNlRGVmZXJyZWQ8dm9pZD4mJiBwcm9taXNlKQor
eworICAgIHNpemVfdCBzdGF0ZUluZGV4ID0gc3RhdGljX2Nhc3Q8c2l6ZV90PihzdGF0ZSk7Cisg
ICAgaWYgKHN0YXRlSW5kZXggPj0gbV9zdGF0ZVJlYWN0aW9ucy5zaXplKCkpCisgICAgICAgIG1f
c3RhdGVSZWFjdGlvbnMuZ3JvdyhzdGF0ZUluZGV4ICsgMSk7CisKKyAgICBtX3N0YXRlUmVhY3Rp
b25zW3N0YXRlSW5kZXhdLmFwcGVuZChXVEZNb3ZlKHByb21pc2UpKTsKK30KKwordm9pZCBXZWJL
aXRBdWRpb0NvbnRleHQ6OnNldFN0YXRlKFN0YXRlIHN0YXRlKQoreworICAgIGlmIChtX3N0YXRl
ID09IHN0YXRlKQorICAgICAgICByZXR1cm47CisKKyAgICBtX3N0YXRlID0gc3RhdGU7CisgICAg
bV9ldmVudFF1ZXVlLT5lbnF1ZXVlRXZlbnQoRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkuc3Rh
dGVjaGFuZ2VFdmVudCwgRXZlbnQ6OkNhbkJ1YmJsZTo6WWVzLCBFdmVudDo6SXNDYW5jZWxhYmxl
OjpObykpOworCisgICAgc2l6ZV90IHN0YXRlSW5kZXggPSBzdGF0aWNfY2FzdDxzaXplX3Q+KHN0
YXRlKTsKKyAgICBpZiAoc3RhdGVJbmRleCA+PSBtX3N0YXRlUmVhY3Rpb25zLnNpemUoKSkKKyAg
ICAgICAgcmV0dXJuOworCisgICAgVmVjdG9yPERPTVByb21pc2VEZWZlcnJlZDx2b2lkPj4gcmVh
Y3Rpb25zOworICAgIG1fc3RhdGVSZWFjdGlvbnNbc3RhdGVJbmRleF0uc3dhcChyZWFjdGlvbnMp
OworCisgICAgZm9yIChhdXRvJiBwcm9taXNlIDogcmVhY3Rpb25zKQorICAgICAgICBwcm9taXNl
LnJlc29sdmUoKTsKK30KKwordm9pZCBXZWJLaXRBdWRpb0NvbnRleHQ6OnN0b3AoKQoreworICAg
IEFMV0FZU19MT0coTE9HSURFTlRJRklFUik7CisKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkp
OworCisgICAgLy8gVXN1YWxseSBTY3JpcHRFeGVjdXRpb25Db250ZXh0IGNhbGxzIHN0b3AgdHdp
Y2UuCisgICAgaWYgKG1faXNTdG9wU2NoZWR1bGVkKQorICAgICAgICByZXR1cm47CisgICAgbV9p
c1N0b3BTY2hlZHVsZWQgPSB0cnVlOworCisgICAgQVNTRVJUKGRvY3VtZW50KCkpOworICAgIGRv
Y3VtZW50KCktPnVwZGF0ZUlzUGxheWluZ01lZGlhKCk7CisKKyAgICB1bmluaXRpYWxpemUoKTsK
KyAgICBjbGVhcigpOworfQorCit2b2lkIFdlYktpdEF1ZGlvQ29udGV4dDo6c3VzcGVuZChSZWFz
b25Gb3JTdXNwZW5zaW9uKQoreworICAgIGlmIChzdGF0ZSgpID09IFN0YXRlOjpSdW5uaW5nKSB7
CisgICAgICAgIG1fbWVkaWFTZXNzaW9uLT5iZWdpbkludGVycnVwdGlvbihQbGF0Zm9ybU1lZGlh
U2Vzc2lvbjo6UGxheWJhY2tTdXNwZW5kZWQpOworICAgICAgICBkb2N1bWVudCgpLT51cGRhdGVJ
c1BsYXlpbmdNZWRpYSgpOworICAgIH0KK30KKwordm9pZCBXZWJLaXRBdWRpb0NvbnRleHQ6OnJl
c3VtZSgpCit7CisgICAgaWYgKHN0YXRlKCkgPT0gU3RhdGU6OkludGVycnVwdGVkKSB7CisgICAg
ICAgIG1fbWVkaWFTZXNzaW9uLT5lbmRJbnRlcnJ1cHRpb24oUGxhdGZvcm1NZWRpYVNlc3Npb246
Ok1heVJlc3VtZVBsYXlpbmcpOworICAgICAgICBkb2N1bWVudCgpLT51cGRhdGVJc1BsYXlpbmdN
ZWRpYSgpOworICAgIH0KK30KKworY29uc3QgY2hhciogV2ViS2l0QXVkaW9Db250ZXh0OjphY3Rp
dmVET01PYmplY3ROYW1lKCkgY29uc3QKK3sKKyAgICByZXR1cm4gIldlYktpdEF1ZGlvQ29udGV4
dCI7Cit9CisKK0RvY3VtZW50SWRlbnRpZmllciBXZWJLaXRBdWRpb0NvbnRleHQ6Omhvc3RpbmdE
b2N1bWVudElkZW50aWZpZXIoKSBjb25zdAoreworICAgIGF1dG8qIGRvY3VtZW50ID0gZG93bmNh
c3Q8RG9jdW1lbnQ+KG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dCk7CisgICAgcmV0dXJuIGRvY3Vt
ZW50ID8gZG9jdW1lbnQtPmlkZW50aWZpZXIoKSA6IERvY3VtZW50SWRlbnRpZmllciB7IH07Cit9
CisKK2Jvb2wgV2ViS2l0QXVkaW9Db250ZXh0Ojppc1N1c3BlbmRlZCgpIGNvbnN0Cit7CisgICAg
cmV0dXJuICFkb2N1bWVudCgpIHx8IGRvY3VtZW50KCktPmFjdGl2ZURPTU9iamVjdHNBcmVTdXNw
ZW5kZWQoKSB8fCBkb2N1bWVudCgpLT5hY3RpdmVET01PYmplY3RzQXJlU3RvcHBlZCgpOworfQor
Cit2b2lkIFdlYktpdEF1ZGlvQ29udGV4dDo6dmlzaWJpbGl0eVN0YXRlQ2hhbmdlZCgpCit7Cisg
ICAgLy8gRG8gbm90IHN1c3BlbmQgaWYgYXVkaW8gaXMgYXVkaWJsZS4KKyAgICBpZiAoIWRvY3Vt
ZW50KCkgfHwgbWVkaWFTdGF0ZSgpID09IE1lZGlhUHJvZHVjZXI6OklzUGxheWluZ0F1ZGlvIHx8
IG1faXNTdG9wU2NoZWR1bGVkKQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAoZG9jdW1lbnQo
KS0+aGlkZGVuKCkpIHsKKyAgICAgICAgaWYgKHN0YXRlKCkgPT0gU3RhdGU6OlJ1bm5pbmcpIHsK
KyAgICAgICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoInZpc2liaWxpdHlTdGF0ZUNoYW5n
ZWQoKSBTdXNwZW5kaW5nIHBsYXliYWNrIGFmdGVyIGdvaW5nIHRvIHRoZSBiYWNrZ3JvdW5kIik7
CisgICAgICAgICAgICBtX21lZGlhU2Vzc2lvbi0+YmVnaW5JbnRlcnJ1cHRpb24oUGxhdGZvcm1N
ZWRpYVNlc3Npb246OkVudGVyaW5nQmFja2dyb3VuZCk7CisgICAgICAgIH0KKyAgICB9IGVsc2Ug
eworICAgICAgICBpZiAoc3RhdGUoKSA9PSBTdGF0ZTo6SW50ZXJydXB0ZWQpIHsKKyAgICAgICAg
ICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoInZpc2liaWxpdHlTdGF0ZUNoYW5nZWQoKSBSZXN1
bWluZyBwbGF5YmFjayBhZnRlciBlbnRlcmluZyBmb3JlZ3JvdW5kIik7CisgICAgICAgICAgICBt
X21lZGlhU2Vzc2lvbi0+ZW5kSW50ZXJydXB0aW9uKFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpNYXlS
ZXN1bWVQbGF5aW5nKTsKKyAgICAgICAgfQorICAgIH0KK30KKworYm9vbCBXZWJLaXRBdWRpb0Nv
bnRleHQ6OndvdWxkVGFpbnRPcmlnaW4oY29uc3QgVVJMJiB1cmwpIGNvbnN0Cit7CisgICAgaWYg
KHVybC5wcm90b2NvbElzRGF0YSgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBpZiAo
YXV0byogZG9jdW1lbnQgPSB0aGlzLT5kb2N1bWVudCgpKQorICAgICAgICByZXR1cm4gIWRvY3Vt
ZW50LT5zZWN1cml0eU9yaWdpbigpLmNhblJlcXVlc3QodXJsKTsKKworICAgIHJldHVybiBmYWxz
ZTsKK30KKworRXhjZXB0aW9uT3I8UmVmPEF1ZGlvQnVmZmVyPj4gV2ViS2l0QXVkaW9Db250ZXh0
OjpjcmVhdGVCdWZmZXIodW5zaWduZWQgbnVtYmVyT2ZDaGFubmVscywgc2l6ZV90IG51bWJlck9m
RnJhbWVzLCBmbG9hdCBzYW1wbGVSYXRlKQoreworICAgIGF1dG8gYXVkaW9CdWZmZXIgPSBBdWRp
b0J1ZmZlcjo6Y3JlYXRlKG51bWJlck9mQ2hhbm5lbHMsIG51bWJlck9mRnJhbWVzLCBzYW1wbGVS
YXRlKTsKKyAgICBpZiAoIWF1ZGlvQnVmZmVyKQorICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsg
Tm90U3VwcG9ydGVkRXJyb3IgfTsKKyAgICByZXR1cm4gYXVkaW9CdWZmZXIucmVsZWFzZU5vbk51
bGwoKTsKK30KKworRXhjZXB0aW9uT3I8UmVmPEF1ZGlvQnVmZmVyPj4gV2ViS2l0QXVkaW9Db250
ZXh0OjpjcmVhdGVCdWZmZXIoQXJyYXlCdWZmZXImIGFycmF5QnVmZmVyLCBib29sIG1peFRvTW9u
bykKK3sKKyAgICBhdXRvIGF1ZGlvQnVmZmVyID0gQXVkaW9CdWZmZXI6OmNyZWF0ZUZyb21BdWRp
b0ZpbGVEYXRhKGFycmF5QnVmZmVyLmRhdGEoKSwgYXJyYXlCdWZmZXIuYnl0ZUxlbmd0aCgpLCBt
aXhUb01vbm8sIHNhbXBsZVJhdGUoKSk7CisgICAgaWYgKCFhdWRpb0J1ZmZlcikKKyAgICAgICAg
cmV0dXJuIEV4Y2VwdGlvbiB7IFN5bnRheEVycm9yIH07CisgICAgcmV0dXJuIGF1ZGlvQnVmZmVy
LnJlbGVhc2VOb25OdWxsKCk7Cit9CisKK3ZvaWQgV2ViS2l0QXVkaW9Db250ZXh0OjpkZWNvZGVB
dWRpb0RhdGEoUmVmPEFycmF5QnVmZmVyPiYmIGF1ZGlvRGF0YSwgUmVmUHRyPEF1ZGlvQnVmZmVy
Q2FsbGJhY2s+JiYgc3VjY2Vzc0NhbGxiYWNrLCBSZWZQdHI8QXVkaW9CdWZmZXJDYWxsYmFjaz4m
JiBlcnJvckNhbGxiYWNrKQoreworICAgIGlmICghbV9hdWRpb0RlY29kZXIpCisgICAgICAgIG1f
YXVkaW9EZWNvZGVyID0gbWFrZVVuaXF1ZTxBc3luY0F1ZGlvRGVjb2Rlcj4oKTsKKyAgICBtX2F1
ZGlvRGVjb2Rlci0+ZGVjb2RlQXN5bmMoV1RGTW92ZShhdWRpb0RhdGEpLCBzYW1wbGVSYXRlKCks
IFdURk1vdmUoc3VjY2Vzc0NhbGxiYWNrKSwgV1RGTW92ZShlcnJvckNhbGxiYWNrKSk7Cit9CisK
K0V4Y2VwdGlvbk9yPFJlZjxBdWRpb0J1ZmZlclNvdXJjZU5vZGU+PiBXZWJLaXRBdWRpb0NvbnRl
eHQ6OmNyZWF0ZUJ1ZmZlclNvdXJjZSgpCit7CisgICAgQUxXQVlTX0xPRyhMT0dJREVOVElGSUVS
KTsKKworICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisKKyAgICBpZiAobV9pc1N0b3BTY2hl
ZHVsZWQpCisgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBJbnZhbGlkU3RhdGVFcnJvciB9Owor
CisgICAgbGF6eUluaXRpYWxpemUoKTsKKyAgICBSZWY8QXVkaW9CdWZmZXJTb3VyY2VOb2RlPiBu
b2RlID0gQXVkaW9CdWZmZXJTb3VyY2VOb2RlOjpjcmVhdGUoKnRoaXMsIHNhbXBsZVJhdGUoKSk7
CisKKyAgICAvLyBCZWNhdXNlIHRoaXMgaXMgYW4gQXVkaW9TY2hlZHVsZWRTb3VyY2VOb2RlLCB0
aGUgY29udGV4dCBrZWVwcyBhIHJlZmVyZW5jZSB1bnRpbCBpdCBoYXMgZmluaXNoZWQgcGxheWlu
Zy4KKyAgICAvLyBXaGVuIHRoaXMgaGFwcGVucywgQXVkaW9TY2hlZHVsZWRTb3VyY2VOb2RlOjpm
aW5pc2goKSBjYWxscyBXZWJLaXRBdWRpb0NvbnRleHQ6Om5vdGlmeU5vZGVGaW5pc2hlZFByb2Nl
c3NpbmcoKS4KKyAgICByZWZOb2RlKG5vZGUpOworCisgICAgcmV0dXJuIG5vZGU7Cit9CisKKyNp
ZiBFTkFCTEUoVklERU8pCisKK0V4Y2VwdGlvbk9yPFJlZjxNZWRpYUVsZW1lbnRBdWRpb1NvdXJj
ZU5vZGU+PiBXZWJLaXRBdWRpb0NvbnRleHQ6OmNyZWF0ZU1lZGlhRWxlbWVudFNvdXJjZShIVE1M
TWVkaWFFbGVtZW50JiBtZWRpYUVsZW1lbnQpCit7CisgICAgQUxXQVlTX0xPRyhMT0dJREVOVElG
SUVSKTsKKworICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisKKyAgICBpZiAobV9pc1N0b3BT
Y2hlZHVsZWQgfHwgbWVkaWFFbGVtZW50LmF1ZGlvU291cmNlTm9kZSgpKQorICAgICAgICByZXR1
cm4gRXhjZXB0aW9uIHsgSW52YWxpZFN0YXRlRXJyb3IgfTsKKworICAgIGxhenlJbml0aWFsaXpl
KCk7CisKKyAgICBhdXRvIG5vZGUgPSBNZWRpYUVsZW1lbnRBdWRpb1NvdXJjZU5vZGU6OmNyZWF0
ZSgqdGhpcywgbWVkaWFFbGVtZW50KTsKKworICAgIG1lZGlhRWxlbWVudC5zZXRBdWRpb1NvdXJj
ZU5vZGUobm9kZS5wdHIoKSk7CisKKyAgICByZWZOb2RlKG5vZGUuZ2V0KCkpOyAvLyBjb250ZXh0
IGtlZXBzIHJlZmVyZW5jZSB1bnRpbCBub2RlIGlzIGRpc2Nvbm5lY3RlZAorICAgIHJldHVybiBu
b2RlOworfQorCisjZW5kaWYKKworI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCisKK0V4Y2VwdGlv
bk9yPFJlZjxNZWRpYVN0cmVhbUF1ZGlvU291cmNlTm9kZT4+IFdlYktpdEF1ZGlvQ29udGV4dDo6
Y3JlYXRlTWVkaWFTdHJlYW1Tb3VyY2UoTWVkaWFTdHJlYW0mIG1lZGlhU3RyZWFtKQoreworICAg
IEFMV0FZU19MT0coTE9HSURFTlRJRklFUik7CisKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkp
OworCisgICAgaWYgKG1faXNTdG9wU2NoZWR1bGVkKQorICAgICAgICByZXR1cm4gRXhjZXB0aW9u
IHsgSW52YWxpZFN0YXRlRXJyb3IgfTsKKworICAgIGF1dG8gYXVkaW9UcmFja3MgPSBtZWRpYVN0
cmVhbS5nZXRBdWRpb1RyYWNrcygpOworICAgIGlmIChhdWRpb1RyYWNrcy5pc0VtcHR5KCkpCisg
ICAgICAgIHJldHVybiBFeGNlcHRpb24geyBJbnZhbGlkU3RhdGVFcnJvciB9OworCisgICAgTWVk
aWFTdHJlYW1UcmFjayogcHJvdmlkZXJUcmFjayA9IG51bGxwdHI7CisgICAgZm9yIChhdXRvJiB0
cmFjayA6IGF1ZGlvVHJhY2tzKSB7CisgICAgICAgIGlmICh0cmFjay0+YXVkaW9Tb3VyY2VQcm92
aWRlcigpKSB7CisgICAgICAgICAgICBwcm92aWRlclRyYWNrID0gdHJhY2suZ2V0KCk7CisgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgIH0KKyAgICBpZiAoIXByb3ZpZGVyVHJhY2sp
CisgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBJbnZhbGlkU3RhdGVFcnJvciB9OworCisgICAg
bGF6eUluaXRpYWxpemUoKTsKKworICAgIGF1dG8gbm9kZSA9IE1lZGlhU3RyZWFtQXVkaW9Tb3Vy
Y2VOb2RlOjpjcmVhdGUoKnRoaXMsIG1lZGlhU3RyZWFtLCAqcHJvdmlkZXJUcmFjayk7CisgICAg
bm9kZS0+c2V0Rm9ybWF0KDIsIHNhbXBsZVJhdGUoKSk7CisKKyAgICByZWZOb2RlKG5vZGUpOyAv
LyBjb250ZXh0IGtlZXBzIHJlZmVyZW5jZSB1bnRpbCBub2RlIGlzIGRpc2Nvbm5lY3RlZAorICAg
IHJldHVybiBub2RlOworfQorCitFeGNlcHRpb25PcjxSZWY8TWVkaWFTdHJlYW1BdWRpb0Rlc3Rp
bmF0aW9uTm9kZT4+IFdlYktpdEF1ZGlvQ29udGV4dDo6Y3JlYXRlTWVkaWFTdHJlYW1EZXN0aW5h
dGlvbigpCit7CisgICAgaWYgKG1faXNTdG9wU2NoZWR1bGVkKQorICAgICAgICByZXR1cm4gRXhj
ZXB0aW9uIHsgSW52YWxpZFN0YXRlRXJyb3IgfTsKKworICAgIC8vIEZJWE1FOiBBZGQgc3VwcG9y
dCBmb3IgYW4gb3B0aW9uYWwgYXJndW1lbnQgd2hpY2ggc3BlY2lmaWVzIHRoZSBudW1iZXIgb2Yg
Y2hhbm5lbHMuCisgICAgLy8gRklYTUU6IFRoZSBkZWZhdWx0IHNob3VsZCBwcm9iYWJseSBiZSBz
dGVyZW8gaW5zdGVhZCBvZiBtb25vLgorICAgIHJldHVybiBNZWRpYVN0cmVhbUF1ZGlvRGVzdGlu
YXRpb25Ob2RlOjpjcmVhdGUoKnRoaXMsIDEpOworfQorCisjZW5kaWYKKworRXhjZXB0aW9uT3I8
UmVmPFNjcmlwdFByb2Nlc3Nvck5vZGU+PiBXZWJLaXRBdWRpb0NvbnRleHQ6OmNyZWF0ZVNjcmlw
dFByb2Nlc3NvcihzaXplX3QgYnVmZmVyU2l6ZSwgc2l6ZV90IG51bWJlck9mSW5wdXRDaGFubmVs
cywgc2l6ZV90IG51bWJlck9mT3V0cHV0Q2hhbm5lbHMpCit7CisgICAgQUxXQVlTX0xPRyhMT0dJ
REVOVElGSUVSKTsKKworICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisKKyAgICBpZiAobV9p
c1N0b3BTY2hlZHVsZWQpCisgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBJbnZhbGlkU3RhdGVF
cnJvciB9OworCisgICAgbGF6eUluaXRpYWxpemUoKTsKKworICAgIC8vIFczQyBFZGl0b3IncyBE
cmFmdCAwNiBKdW5lIDIwMTcKKyAgICAvLyAgaHR0cHM6Ly93ZWJhdWRpby5naXRodWIuaW8vd2Vi
LWF1ZGlvLWFwaS8jd2lkbC1CYXNlQXVkaW9Db250ZXh0LWNyZWF0ZVNjcmlwdFByb2Nlc3Nvci1T
Y3JpcHRQcm9jZXNzb3JOb2RlLXVuc2lnbmVkLWxvbmctYnVmZmVyU2l6ZS11bnNpZ25lZC1sb25n
LW51bWJlck9mSW5wdXRDaGFubmVscy11bnNpZ25lZC1sb25nLW51bWJlck9mT3V0cHV0Q2hhbm5l
bHMKKworICAgIC8vIFRoZSBidWZmZXJTaXplIHBhcmFtZXRlciBkZXRlcm1pbmVzIHRoZSBidWZm
ZXIgc2l6ZSBpbiB1bml0cyBvZiBzYW1wbGUtZnJhbWVzLiBJZiBpdCdzIG5vdCBwYXNzZWQgaW4s
CisgICAgLy8gb3IgaWYgdGhlIHZhbHVlIGlzIDAsIHRoZW4gdGhlIGltcGxlbWVudGF0aW9uIHdp
bGwgY2hvb3NlIHRoZSBiZXN0IGJ1ZmZlciBzaXplIGZvciB0aGUgZ2l2ZW4gZW52aXJvbm1lbnQs
CisgICAgLy8gd2hpY2ggd2lsbCBiZSBjb25zdGFudCBwb3dlciBvZiAyIHRocm91Z2hvdXQgdGhl
IGxpZmV0aW1lIG9mIHRoZSBub2RlLiAuLi4gSWYgdGhlIHZhbHVlIG9mIHRoaXMgcGFyYW1ldGVy
CisgICAgLy8gaXMgbm90IG9uZSBvZiB0aGUgYWxsb3dlZCBwb3dlci1vZi0yIHZhbHVlcyBsaXN0
ZWQgYWJvdmUsIGFuIEluZGV4U2l6ZUVycm9yIG11c3QgYmUgdGhyb3duLgorICAgIHN3aXRjaCAo
YnVmZmVyU2l6ZSkgeworICAgIGNhc2UgMDoKKyNpZiBVU0UoQVVESU9fU0VTU0lPTikKKyAgICAg
ICAgLy8gUGljayBhIHZhbHVlIGJldHdlZW4gMjU2ICgyXjgpIGFuZCAxNjM4NCAoMl4xNCksIGJh
c2VkIG9uIHRoZSBidWZmZXIgc2l6ZSBvZiB0aGUgY3VycmVudCBBdWRpb1Nlc3Npb246CisgICAg
ICAgIGJ1ZmZlclNpemUgPSAxIDw8IHN0ZDo6bWF4PHNpemVfdD4oOCwgc3RkOjptaW48c2l6ZV90
PigxNCwgc3RkOjpsb2cyKEF1ZGlvU2Vzc2lvbjo6c2hhcmVkU2Vzc2lvbigpLmJ1ZmZlclNpemUo
KSkpKTsKKyNlbHNlCisgICAgICAgIGJ1ZmZlclNpemUgPSAyMDQ4OworI2VuZGlmCisgICAgICAg
IGJyZWFrOworICAgIGNhc2UgMjU2OgorICAgIGNhc2UgNTEyOgorICAgIGNhc2UgMTAyNDoKKyAg
ICBjYXNlIDIwNDg6CisgICAgY2FzZSA0MDk2OgorICAgIGNhc2UgODE5MjoKKyAgICBjYXNlIDE2
Mzg0OgorICAgICAgICBicmVhazsKKyAgICBkZWZhdWx0OgorICAgICAgICByZXR1cm4gRXhjZXB0
aW9uIHsgSW5kZXhTaXplRXJyb3IgfTsKKyAgICB9CisKKyAgICAvLyBBbiBJbmRleFNpemVFcnJv
ciBleGNlcHRpb24gbXVzdCBiZSB0aHJvd24gaWYgYnVmZmVyU2l6ZSBvciBudW1iZXJPZklucHV0
Q2hhbm5lbHMgb3IgbnVtYmVyT2ZPdXRwdXRDaGFubmVscworICAgIC8vIGFyZSBvdXRzaWRlIHRo
ZSB2YWxpZCByYW5nZS4gSXQgaXMgaW52YWxpZCBmb3IgYm90aCBudW1iZXJPZklucHV0Q2hhbm5l
bHMgYW5kIG51bWJlck9mT3V0cHV0Q2hhbm5lbHMgdG8gYmUgemVyby4KKyAgICAvLyBJbiB0aGlz
IGNhc2UgYW4gSW5kZXhTaXplRXJyb3IgbXVzdCBiZSB0aHJvd24uCisKKyAgICBpZiAoIW51bWJl
ck9mSW5wdXRDaGFubmVscyAmJiAhbnVtYmVyT2ZPdXRwdXRDaGFubmVscykKKyAgICAgICAgcmV0
dXJuIEV4Y2VwdGlvbiB7IE5vdFN1cHBvcnRlZEVycm9yIH07CisKKyAgICAvLyBUaGlzIHBhcmFt
ZXRlciBbbnVtYmVyT2ZJbnB1dENoYW5uZWxzXSBkZXRlcm1pbmVzIHRoZSBudW1iZXIgb2YgY2hh
bm5lbHMgZm9yIHRoaXMgbm9kZSdzIGlucHV0LiBWYWx1ZXMgb2YKKyAgICAvLyB1cCB0byAzMiBt
dXN0IGJlIHN1cHBvcnRlZC4gQSBOb3RTdXBwb3J0ZWRFcnJvciBtdXN0IGJlIHRocm93biBpZiB0
aGUgbnVtYmVyIG9mIGNoYW5uZWxzIGlzIG5vdCBzdXBwb3J0ZWQuCisKKyAgICBpZiAobnVtYmVy
T2ZJbnB1dENoYW5uZWxzID4gbWF4TnVtYmVyT2ZDaGFubmVscygpKQorICAgICAgICByZXR1cm4g
RXhjZXB0aW9uIHsgTm90U3VwcG9ydGVkRXJyb3IgfTsKKworICAgIC8vIFRoaXMgcGFyYW1ldGVy
IFtudW1iZXJPZk91dHB1dENoYW5uZWxzXSBkZXRlcm1pbmVzIHRoZSBudW1iZXIgb2YgY2hhbm5l
bHMgZm9yIHRoaXMgbm9kZSdzIG91dHB1dC4gVmFsdWVzIG9mCisgICAgLy8gdXAgdG8gMzIgbXVz
dCBiZSBzdXBwb3J0ZWQuIEEgTm90U3VwcG9ydGVkRXJyb3IgbXVzdCBiZSB0aHJvd24gaWYgdGhl
IG51bWJlciBvZiBjaGFubmVscyBpcyBub3Qgc3VwcG9ydGVkLgorCisgICAgaWYgKG51bWJlck9m
T3V0cHV0Q2hhbm5lbHMgPiBtYXhOdW1iZXJPZkNoYW5uZWxzKCkpCisgICAgICAgIHJldHVybiBF
eGNlcHRpb24geyBOb3RTdXBwb3J0ZWRFcnJvciB9OworCisgICAgYXV0byBub2RlID0gU2NyaXB0
UHJvY2Vzc29yTm9kZTo6Y3JlYXRlKCp0aGlzLCBzYW1wbGVSYXRlKCksIGJ1ZmZlclNpemUsIG51
bWJlck9mSW5wdXRDaGFubmVscywgbnVtYmVyT2ZPdXRwdXRDaGFubmVscyk7CisKKyAgICByZWZO
b2RlKG5vZGUpOyAvLyBjb250ZXh0IGtlZXBzIHJlZmVyZW5jZSB1bnRpbCB3ZSBzdG9wIG1ha2lu
ZyBqYXZhc2NyaXB0IHJlbmRlcmluZyBjYWxsYmFja3MKKyAgICByZXR1cm4gbm9kZTsKK30KKwor
RXhjZXB0aW9uT3I8UmVmPEJpcXVhZEZpbHRlck5vZGU+PiBXZWJLaXRBdWRpb0NvbnRleHQ6OmNy
ZWF0ZUJpcXVhZEZpbHRlcigpCit7CisgICAgQUxXQVlTX0xPRyhMT0dJREVOVElGSUVSKTsKKwor
ICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisgICAgaWYgKG1faXNTdG9wU2NoZWR1bGVkKQor
ICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgSW52YWxpZFN0YXRlRXJyb3IgfTsKKworICAgIGxh
enlJbml0aWFsaXplKCk7CisKKyAgICByZXR1cm4gQmlxdWFkRmlsdGVyTm9kZTo6Y3JlYXRlKCp0
aGlzLCBzYW1wbGVSYXRlKCkpOworfQorCitFeGNlcHRpb25PcjxSZWY8V2F2ZVNoYXBlck5vZGU+
PiBXZWJLaXRBdWRpb0NvbnRleHQ6OmNyZWF0ZVdhdmVTaGFwZXIoKQoreworICAgIEFMV0FZU19M
T0coTE9HSURFTlRJRklFUik7CisKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAgIGlm
IChtX2lzU3RvcFNjaGVkdWxlZCkKKyAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IEludmFsaWRT
dGF0ZUVycm9yIH07CisKKyAgICBsYXp5SW5pdGlhbGl6ZSgpOworICAgIHJldHVybiBXYXZlU2hh
cGVyTm9kZTo6Y3JlYXRlKCp0aGlzKTsKK30KKworRXhjZXB0aW9uT3I8UmVmPFdlYktpdEF1ZGlv
UGFubmVyTm9kZT4+IFdlYktpdEF1ZGlvQ29udGV4dDo6Y3JlYXRlUGFubmVyKCkKK3sKKyAgICBB
TFdBWVNfTE9HKExPR0lERU5USUZJRVIpOworCisgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsK
KyAgICBpZiAobV9pc1N0b3BTY2hlZHVsZWQpCisgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBJ
bnZhbGlkU3RhdGVFcnJvciB9OworCisgICAgbGF6eUluaXRpYWxpemUoKTsKKyAgICByZXR1cm4g
V2ViS2l0QXVkaW9QYW5uZXJOb2RlOjpjcmVhdGUoKnRoaXMsIHNhbXBsZVJhdGUoKSk7Cit9CisK
K0V4Y2VwdGlvbk9yPFJlZjxDb252b2x2ZXJOb2RlPj4gV2ViS2l0QXVkaW9Db250ZXh0OjpjcmVh
dGVDb252b2x2ZXIoKQoreworICAgIEFMV0FZU19MT0coTE9HSURFTlRJRklFUik7CisKKyAgICBB
U1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAgIGlmIChtX2lzU3RvcFNjaGVkdWxlZCkKKyAgICAg
ICAgcmV0dXJuIEV4Y2VwdGlvbiB7IEludmFsaWRTdGF0ZUVycm9yIH07CisKKyAgICBsYXp5SW5p
dGlhbGl6ZSgpOworICAgIHJldHVybiBDb252b2x2ZXJOb2RlOjpjcmVhdGUoKnRoaXMsIHNhbXBs
ZVJhdGUoKSk7Cit9CisKK0V4Y2VwdGlvbk9yPFJlZjxEeW5hbWljc0NvbXByZXNzb3JOb2RlPj4g
V2ViS2l0QXVkaW9Db250ZXh0OjpjcmVhdGVEeW5hbWljc0NvbXByZXNzb3IoKQoreworICAgIEFM
V0FZU19MT0coTE9HSURFTlRJRklFUik7CisKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwor
ICAgIGlmIChtX2lzU3RvcFNjaGVkdWxlZCkKKyAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IElu
dmFsaWRTdGF0ZUVycm9yIH07CisKKyAgICBsYXp5SW5pdGlhbGl6ZSgpOworICAgIHJldHVybiBE
eW5hbWljc0NvbXByZXNzb3JOb2RlOjpjcmVhdGUoKnRoaXMsIHNhbXBsZVJhdGUoKSk7Cit9CisK
K0V4Y2VwdGlvbk9yPFJlZjxBbmFseXNlck5vZGU+PiBXZWJLaXRBdWRpb0NvbnRleHQ6OmNyZWF0
ZUFuYWx5c2VyKCkKK3sKKyAgICBBTFdBWVNfTE9HKExPR0lERU5USUZJRVIpOworCisgICAgQVNT
RVJUKGlzTWFpblRocmVhZCgpKTsKKyAgICBpZiAobV9pc1N0b3BTY2hlZHVsZWQpCisgICAgICAg
IHJldHVybiBFeGNlcHRpb24geyBJbnZhbGlkU3RhdGVFcnJvciB9OworCisgICAgbGF6eUluaXRp
YWxpemUoKTsKKyAgICByZXR1cm4gQW5hbHlzZXJOb2RlOjpjcmVhdGUoKnRoaXMsIHNhbXBsZVJh
dGUoKSk7Cit9CisKK0V4Y2VwdGlvbk9yPFJlZjxHYWluTm9kZT4+IFdlYktpdEF1ZGlvQ29udGV4
dDo6Y3JlYXRlR2FpbigpCit7CisgICAgQUxXQVlTX0xPRyhMT0dJREVOVElGSUVSKTsKKworICAg
IEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisgICAgaWYgKG1faXNTdG9wU2NoZWR1bGVkKQorICAg
ICAgICByZXR1cm4gRXhjZXB0aW9uIHsgSW52YWxpZFN0YXRlRXJyb3IgfTsKKworICAgIGxhenlJ
bml0aWFsaXplKCk7CisgICAgcmV0dXJuIEdhaW5Ob2RlOjpjcmVhdGUoKnRoaXMsIHNhbXBsZVJh
dGUoKSk7Cit9CisKK0V4Y2VwdGlvbk9yPFJlZjxEZWxheU5vZGU+PiBXZWJLaXRBdWRpb0NvbnRl
eHQ6OmNyZWF0ZURlbGF5KGRvdWJsZSBtYXhEZWxheVRpbWUpCit7CisgICAgQUxXQVlTX0xPRyhM
T0dJREVOVElGSUVSKTsKKworICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisgICAgaWYgKG1f
aXNTdG9wU2NoZWR1bGVkKQorICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgSW52YWxpZFN0YXRl
RXJyb3IgfTsKKworICAgIGxhenlJbml0aWFsaXplKCk7CisgICAgcmV0dXJuIERlbGF5Tm9kZTo6
Y3JlYXRlKCp0aGlzLCBzYW1wbGVSYXRlKCksIG1heERlbGF5VGltZSk7Cit9CisKK0V4Y2VwdGlv
bk9yPFJlZjxDaGFubmVsU3BsaXR0ZXJOb2RlPj4gV2ViS2l0QXVkaW9Db250ZXh0OjpjcmVhdGVD
aGFubmVsU3BsaXR0ZXIoc2l6ZV90IG51bWJlck9mT3V0cHV0cykKK3sKKyAgICBBTFdBWVNfTE9H
KExPR0lERU5USUZJRVIpOworCisgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKyAgICBpZiAo
bV9pc1N0b3BTY2hlZHVsZWQpCisgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBJbnZhbGlkU3Rh
dGVFcnJvciB9OworCisgICAgbGF6eUluaXRpYWxpemUoKTsKKyAgICBhdXRvIG5vZGUgPSBDaGFu
bmVsU3BsaXR0ZXJOb2RlOjpjcmVhdGUoKnRoaXMsIHNhbXBsZVJhdGUoKSwgbnVtYmVyT2ZPdXRw
dXRzKTsKKyAgICBpZiAoIW5vZGUpCisgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBJbmRleFNp
emVFcnJvciB9OworICAgIHJldHVybiBub2RlLnJlbGVhc2VOb25OdWxsKCk7Cit9CisKK0V4Y2Vw
dGlvbk9yPFJlZjxDaGFubmVsTWVyZ2VyTm9kZT4+IFdlYktpdEF1ZGlvQ29udGV4dDo6Y3JlYXRl
Q2hhbm5lbE1lcmdlcihzaXplX3QgbnVtYmVyT2ZJbnB1dHMpCit7CisgICAgQUxXQVlTX0xPRyhM
T0dJREVOVElGSUVSKTsKKworICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisgICAgaWYgKG1f
aXNTdG9wU2NoZWR1bGVkKQorICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgSW52YWxpZFN0YXRl
RXJyb3IgfTsKKworICAgIGxhenlJbml0aWFsaXplKCk7CisgICAgYXV0byBub2RlID0gQ2hhbm5l
bE1lcmdlck5vZGU6OmNyZWF0ZSgqdGhpcywgc2FtcGxlUmF0ZSgpLCBudW1iZXJPZklucHV0cyk7
CisgICAgaWYgKCFub2RlKQorICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgSW5kZXhTaXplRXJy
b3IgfTsKKyAgICByZXR1cm4gbm9kZS5yZWxlYXNlTm9uTnVsbCgpOworfQorCitFeGNlcHRpb25P
cjxSZWY8T3NjaWxsYXRvck5vZGU+PiBXZWJLaXRBdWRpb0NvbnRleHQ6OmNyZWF0ZU9zY2lsbGF0
b3IoKQoreworICAgIEFMV0FZU19MT0coTE9HSURFTlRJRklFUik7CisKKyAgICBBU1NFUlQoaXNN
YWluVGhyZWFkKCkpOworICAgIGlmIChtX2lzU3RvcFNjaGVkdWxlZCkKKyAgICAgICAgcmV0dXJu
IEV4Y2VwdGlvbiB7IEludmFsaWRTdGF0ZUVycm9yIH07CisKKyAgICBsYXp5SW5pdGlhbGl6ZSgp
OworCisgICAgUmVmPE9zY2lsbGF0b3JOb2RlPiBub2RlID0gT3NjaWxsYXRvck5vZGU6OmNyZWF0
ZSgqdGhpcywgc2FtcGxlUmF0ZSgpKTsKKworICAgIC8vIEJlY2F1c2UgdGhpcyBpcyBhbiBBdWRp
b1NjaGVkdWxlZFNvdXJjZU5vZGUsIHRoZSBjb250ZXh0IGtlZXBzIGEgcmVmZXJlbmNlIHVudGls
IGl0IGhhcyBmaW5pc2hlZCBwbGF5aW5nLgorICAgIC8vIFdoZW4gdGhpcyBoYXBwZW5zLCBBdWRp
b1NjaGVkdWxlZFNvdXJjZU5vZGU6OmZpbmlzaCgpIGNhbGxzIFdlYktpdEF1ZGlvQ29udGV4dDo6
bm90aWZ5Tm9kZUZpbmlzaGVkUHJvY2Vzc2luZygpLgorICAgIHJlZk5vZGUobm9kZSk7CisKKyAg
ICByZXR1cm4gbm9kZTsKK30KKworRXhjZXB0aW9uT3I8UmVmPFBlcmlvZGljV2F2ZT4+IFdlYktp
dEF1ZGlvQ29udGV4dDo6Y3JlYXRlUGVyaW9kaWNXYXZlKEZsb2F0MzJBcnJheSYgcmVhbCwgRmxv
YXQzMkFycmF5JiBpbWFnaW5hcnkpCit7CisgICAgQUxXQVlTX0xPRyhMT0dJREVOVElGSUVSKTsK
KworICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisgICAgaWYgKG1faXNTdG9wU2NoZWR1bGVk
KQorICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgSW52YWxpZFN0YXRlRXJyb3IgfTsKKworICAg
IGlmIChyZWFsLmxlbmd0aCgpICE9IGltYWdpbmFyeS5sZW5ndGgoKSB8fCAocmVhbC5sZW5ndGgo
KSA+IE1heFBlcmlvZGljV2F2ZUxlbmd0aCkgfHwgIXJlYWwubGVuZ3RoKCkpCisgICAgICAgIHJl
dHVybiBFeGNlcHRpb24geyBJbmRleFNpemVFcnJvciB9OworICAgIGxhenlJbml0aWFsaXplKCk7
CisgICAgcmV0dXJuIFBlcmlvZGljV2F2ZTo6Y3JlYXRlKHNhbXBsZVJhdGUoKSwgcmVhbCwgaW1h
Z2luYXJ5KTsKK30KKwordm9pZCBXZWJLaXRBdWRpb0NvbnRleHQ6Om5vdGlmeU5vZGVGaW5pc2hl
ZFByb2Nlc3NpbmcoQXVkaW9Ob2RlKiBub2RlKQoreworICAgIEFTU0VSVChpc0F1ZGlvVGhyZWFk
KCkpOworICAgIG1fZmluaXNoZWROb2Rlcy5hcHBlbmQobm9kZSk7Cit9CisKK3ZvaWQgV2ViS2l0
QXVkaW9Db250ZXh0OjpkZXJlZkZpbmlzaGVkU291cmNlTm9kZXMoKQoreworICAgIEFTU0VSVChp
c0dyYXBoT3duZXIoKSk7CisgICAgQVNTRVJUKGlzQXVkaW9UaHJlYWQoKSB8fCBpc0F1ZGlvVGhy
ZWFkRmluaXNoZWQoKSk7CisgICAgZm9yIChhdXRvJiBub2RlIDogbV9maW5pc2hlZE5vZGVzKQor
ICAgICAgICBkZXJlZk5vZGUoKm5vZGUpOworCisgICAgbV9maW5pc2hlZE5vZGVzLmNsZWFyKCk7
Cit9CisKK3ZvaWQgV2ViS2l0QXVkaW9Db250ZXh0OjpyZWZOb2RlKEF1ZGlvTm9kZSYgbm9kZSkK
K3sKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAgIEF1dG9Mb2NrZXIgbG9ja2VyKCp0
aGlzKTsKKworICAgIG5vZGUucmVmKEF1ZGlvTm9kZTo6UmVmVHlwZUNvbm5lY3Rpb24pOworICAg
IG1fcmVmZXJlbmNlZE5vZGVzLmFwcGVuZCgmbm9kZSk7Cit9CisKK3ZvaWQgV2ViS2l0QXVkaW9D
b250ZXh0OjpkZXJlZk5vZGUoQXVkaW9Ob2RlJiBub2RlKQoreworICAgIEFTU0VSVChpc0dyYXBo
T3duZXIoKSk7CisKKyAgICBub2RlLmRlcmVmKEF1ZGlvTm9kZTo6UmVmVHlwZUNvbm5lY3Rpb24p
OworCisgICAgQVNTRVJUKG1fcmVmZXJlbmNlZE5vZGVzLmNvbnRhaW5zKCZub2RlKSk7CisgICAg
bV9yZWZlcmVuY2VkTm9kZXMucmVtb3ZlRmlyc3QoJm5vZGUpOworfQorCit2b2lkIFdlYktpdEF1
ZGlvQ29udGV4dDo6ZGVyZWZVbmZpbmlzaGVkU291cmNlTm9kZXMoKQoreworICAgIEFTU0VSVChp
c01haW5UaHJlYWQoKSAmJiBpc0F1ZGlvVGhyZWFkRmluaXNoZWQoKSk7CisgICAgZm9yIChhdXRv
JiBub2RlIDogbV9yZWZlcmVuY2VkTm9kZXMpCisgICAgICAgIG5vZGUtPmRlcmVmKEF1ZGlvTm9k
ZTo6UmVmVHlwZUNvbm5lY3Rpb24pOworCisgICAgbV9yZWZlcmVuY2VkTm9kZXMuY2xlYXIoKTsK
K30KKwordm9pZCBXZWJLaXRBdWRpb0NvbnRleHQ6OmxvY2soYm9vbCYgbXVzdFJlbGVhc2VMb2Nr
KQoreworICAgIC8vIERvbid0IGFsbG93IHJlZ3VsYXIgbG9jayBpbiByZWFsLXRpbWUgYXVkaW8g
dGhyZWFkLgorICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisKKyAgICBUaHJlYWQmIHRoaXNU
aHJlYWQgPSBUaHJlYWQ6OmN1cnJlbnQoKTsKKworICAgIGlmICgmdGhpc1RocmVhZCA9PSBtX2dy
YXBoT3duZXJUaHJlYWQpIHsKKyAgICAgICAgLy8gV2UgYWxyZWFkeSBoYXZlIHRoZSBsb2NrLgor
ICAgICAgICBtdXN0UmVsZWFzZUxvY2sgPSBmYWxzZTsKKyAgICB9IGVsc2UgeworICAgICAgICAv
LyBBY3F1aXJlIHRoZSBsb2NrLgorICAgICAgICBtX2NvbnRleHRHcmFwaE11dGV4LmxvY2soKTsK
KyAgICAgICAgbV9ncmFwaE93bmVyVGhyZWFkID0gJnRoaXNUaHJlYWQ7CisgICAgICAgIG11c3RS
ZWxlYXNlTG9jayA9IHRydWU7CisgICAgfQorfQorCitib29sIFdlYktpdEF1ZGlvQ29udGV4dDo6
dHJ5TG9jayhib29sJiBtdXN0UmVsZWFzZUxvY2spCit7CisgICAgVGhyZWFkJiB0aGlzVGhyZWFk
ID0gVGhyZWFkOjpjdXJyZW50KCk7CisgICAgYm9vbCBpc0F1ZGlvVGhyZWFkID0gJnRoaXNUaHJl
YWQgPT0gYXVkaW9UaHJlYWQoKTsKKworICAgIC8vIFRyeSB0byBjYXRjaCBjYXNlcyBvZiB1c2lu
ZyB0cnkgbG9jayBvbiBtYWluIHRocmVhZCAtIGl0IHNob3VsZCB1c2UgcmVndWxhciBsb2NrLgor
ICAgIEFTU0VSVChpc0F1ZGlvVGhyZWFkIHx8IGlzQXVkaW9UaHJlYWRGaW5pc2hlZCgpKTsKKwor
ICAgIGlmICghaXNBdWRpb1RocmVhZCkgeworICAgICAgICAvLyBJbiByZWxlYXNlIGJ1aWxkIHRy
ZWF0IHRyeUxvY2soKSBhcyBsb2NrKCkgKHNpbmNlIGFib3ZlIEFTU0VSVChpc0F1ZGlvVGhyZWFk
KSBuZXZlciBmaXJlcykgLSB0aGlzIGlzIHRoZSBiZXN0IHdlIGNhbiBkby4KKyAgICAgICAgbG9j
ayhtdXN0UmVsZWFzZUxvY2spOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisKKyAgICBi
b29sIGhhc0xvY2s7CisKKyAgICBpZiAoJnRoaXNUaHJlYWQgPT0gbV9ncmFwaE93bmVyVGhyZWFk
KSB7CisgICAgICAgIC8vIFRocmVhZCBhbHJlYWR5IGhhcyB0aGUgbG9jay4KKyAgICAgICAgaGFz
TG9jayA9IHRydWU7CisgICAgICAgIG11c3RSZWxlYXNlTG9jayA9IGZhbHNlOworICAgIH0gZWxz
ZSB7CisgICAgICAgIC8vIERvbid0IGFscmVhZHkgaGF2ZSB0aGUgbG9jayAtIHRyeSB0byBhY3F1
aXJlIGl0LgorICAgICAgICBoYXNMb2NrID0gbV9jb250ZXh0R3JhcGhNdXRleC50cnlMb2NrKCk7
CisKKyAgICAgICAgaWYgKGhhc0xvY2spCisgICAgICAgICAgICBtX2dyYXBoT3duZXJUaHJlYWQg
PSAmdGhpc1RocmVhZDsKKworICAgICAgICBtdXN0UmVsZWFzZUxvY2sgPSBoYXNMb2NrOworICAg
IH0KKworICAgIHJldHVybiBoYXNMb2NrOworfQorCit2b2lkIFdlYktpdEF1ZGlvQ29udGV4dDo6
dW5sb2NrKCkKK3sKKyAgICBBU1NFUlQobV9ncmFwaE93bmVyVGhyZWFkID09ICZUaHJlYWQ6OmN1
cnJlbnQoKSk7CisKKyAgICBtX2dyYXBoT3duZXJUaHJlYWQgPSBudWxscHRyOworICAgIG1fY29u
dGV4dEdyYXBoTXV0ZXgudW5sb2NrKCk7Cit9CisKK2Jvb2wgV2ViS2l0QXVkaW9Db250ZXh0Ojpp
c0F1ZGlvVGhyZWFkKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9hdWRpb1RocmVhZCA9PSAmVGhy
ZWFkOjpjdXJyZW50KCk7Cit9CisKK2Jvb2wgV2ViS2l0QXVkaW9Db250ZXh0Ojppc0dyYXBoT3du
ZXIoKSBjb25zdAoreworICAgIHJldHVybiBtX2dyYXBoT3duZXJUaHJlYWQgPT0gJlRocmVhZDo6
Y3VycmVudCgpOworfQorCit2b2lkIFdlYktpdEF1ZGlvQ29udGV4dDo6YWRkRGVmZXJyZWRGaW5p
c2hEZXJlZihBdWRpb05vZGUqIG5vZGUpCit7CisgICAgQVNTRVJUKGlzQXVkaW9UaHJlYWQoKSk7
CisgICAgbV9kZWZlcnJlZEZpbmlzaERlcmVmTGlzdC5hcHBlbmQobm9kZSk7Cit9CisKK3ZvaWQg
V2ViS2l0QXVkaW9Db250ZXh0OjpoYW5kbGVQcmVSZW5kZXJUYXNrcygpCit7CisgICAgQVNTRVJU
KGlzQXVkaW9UaHJlYWQoKSk7CisKKyAgICAvLyBBdCB0aGUgYmVnaW5uaW5nIG9mIGV2ZXJ5IHJl
bmRlciBxdWFudHVtLCB0cnkgdG8gdXBkYXRlIHRoZSBpbnRlcm5hbCByZW5kZXJpbmcgZ3JhcGgg
c3RhdGUgKGZyb20gbWFpbiB0aHJlYWQgY2hhbmdlcykuCisgICAgLy8gSXQncyBPSyBpZiB0aGUg
dHJ5TG9jaygpIGZhaWxzLCB3ZSdsbCBqdXN0IHRha2Ugc2xpZ2h0bHkgbG9uZ2VyIHRvIHBpY2sg
dXAgdGhlIGNoYW5nZXMuCisgICAgYm9vbCBtdXN0UmVsZWFzZUxvY2s7CisgICAgaWYgKHRyeUxv
Y2sobXVzdFJlbGVhc2VMb2NrKSkgeworICAgICAgICAvLyBGaXh1cCB0aGUgc3RhdGUgb2YgYW55
IGRpcnR5IEF1ZGlvU3VtbWluZ0p1bmN0aW9ucyBhbmQgQXVkaW9Ob2RlT3V0cHV0cy4KKyAgICAg
ICAgaGFuZGxlRGlydHlBdWRpb1N1bW1pbmdKdW5jdGlvbnMoKTsKKyAgICAgICAgaGFuZGxlRGly
dHlBdWRpb05vZGVPdXRwdXRzKCk7CisKKyAgICAgICAgdXBkYXRlQXV0b21hdGljUHVsbE5vZGVz
KCk7CisKKyAgICAgICAgaWYgKG11c3RSZWxlYXNlTG9jaykKKyAgICAgICAgICAgIHVubG9jaygp
OworICAgIH0KK30KKwordm9pZCBXZWJLaXRBdWRpb0NvbnRleHQ6OmhhbmRsZVBvc3RSZW5kZXJU
YXNrcygpCit7CisgICAgQVNTRVJUKGlzQXVkaW9UaHJlYWQoKSk7CisKKyAgICAvLyBNdXN0IHVz
ZSBhIHRyeUxvY2soKSBoZXJlIHRvby4gRG9uJ3Qgd29ycnksIHRoZSBsb2NrIHdpbGwgdmVyeSBy
YXJlbHkgYmUgY29udGVuZGVkIGFuZCB0aGlzIG1ldGhvZCBpcyBjYWxsZWQgZnJlcXVlbnRseS4K
KyAgICAvLyBUaGUgd29yc3QgdGhhdCBjYW4gaGFwcGVuIGlzIHRoYXQgdGhlcmUgd2lsbCBiZSBz
b21lIG5vZGVzIHdoaWNoIHdpbGwgdGFrZSBzbGlnaHRseSBsb25nZXIgdGhhbiB1c3VhbCB0byBi
ZSBkZWxldGVkIG9yIHJlbW92ZWQKKyAgICAvLyBmcm9tIHRoZSByZW5kZXIgZ3JhcGggKGluIHdo
aWNoIGNhc2UgdGhleSdsbCByZW5kZXIgc2lsZW5jZSkuCisgICAgYm9vbCBtdXN0UmVsZWFzZUxv
Y2s7CisgICAgaWYgKHRyeUxvY2sobXVzdFJlbGVhc2VMb2NrKSkgeworICAgICAgICAvLyBUYWtl
IGNhcmUgb2YgZmluaXNoaW5nIGFueSBkZXJlZnMgd2hlcmUgdGhlIHRyeUxvY2soKSBmYWlsZWQg
cHJldmlvdXNseS4KKyAgICAgICAgaGFuZGxlRGVmZXJyZWRGaW5pc2hEZXJlZnMoKTsKKworICAg
ICAgICAvLyBEeW5hbWljYWxseSBjbGVhbiB1cCBub2RlcyB3aGljaCBhcmUgbm8gbG9uZ2VyIG5l
ZWRlZC4KKyAgICAgICAgZGVyZWZGaW5pc2hlZFNvdXJjZU5vZGVzKCk7CisKKyAgICAgICAgLy8g
RG9uJ3QgZGVsZXRlIGluIHRoZSByZWFsLXRpbWUgdGhyZWFkLiBMZXQgdGhlIG1haW4gdGhyZWFk
IGRvIGl0LgorICAgICAgICAvLyBSZWYtY291bnRlZCBvYmplY3RzIGhlbGQgYnkgY2VydGFpbiBB
dWRpb05vZGVzIG1heSBub3QgYmUgdGhyZWFkLXNhZmUuCisgICAgICAgIHNjaGVkdWxlTm9kZURl
bGV0aW9uKCk7CisKKyAgICAgICAgLy8gRml4dXAgdGhlIHN0YXRlIG9mIGFueSBkaXJ0eSBBdWRp
b1N1bW1pbmdKdW5jdGlvbnMgYW5kIEF1ZGlvTm9kZU91dHB1dHMuCisgICAgICAgIGhhbmRsZURp
cnR5QXVkaW9TdW1taW5nSnVuY3Rpb25zKCk7CisgICAgICAgIGhhbmRsZURpcnR5QXVkaW9Ob2Rl
T3V0cHV0cygpOworCisgICAgICAgIHVwZGF0ZUF1dG9tYXRpY1B1bGxOb2RlcygpOworCisgICAg
ICAgIGlmIChtdXN0UmVsZWFzZUxvY2spCisgICAgICAgICAgICB1bmxvY2soKTsKKyAgICB9Cit9
CisKK3ZvaWQgV2ViS2l0QXVkaW9Db250ZXh0OjpoYW5kbGVEZWZlcnJlZEZpbmlzaERlcmVmcygp
Cit7CisgICAgQVNTRVJUKGlzQXVkaW9UaHJlYWQoKSAmJiBpc0dyYXBoT3duZXIoKSk7CisgICAg
Zm9yIChhdXRvJiBub2RlIDogbV9kZWZlcnJlZEZpbmlzaERlcmVmTGlzdCkKKyAgICAgICAgbm9k
ZS0+ZmluaXNoRGVyZWYoQXVkaW9Ob2RlOjpSZWZUeXBlQ29ubmVjdGlvbik7CisKKyAgICBtX2Rl
ZmVycmVkRmluaXNoRGVyZWZMaXN0LmNsZWFyKCk7Cit9CisKK3ZvaWQgV2ViS2l0QXVkaW9Db250
ZXh0OjptYXJrRm9yRGVsZXRpb24oQXVkaW9Ob2RlJiBub2RlKQoreworICAgIEFTU0VSVChpc0dy
YXBoT3duZXIoKSk7CisKKyAgICBpZiAoaXNBdWRpb1RocmVhZEZpbmlzaGVkKCkpCisgICAgICAg
IG1fbm9kZXNUb0RlbGV0ZS5hcHBlbmQoJm5vZGUpOworICAgIGVsc2UKKyAgICAgICAgbV9ub2Rl
c01hcmtlZEZvckRlbGV0aW9uLmFwcGVuZCgmbm9kZSk7CisKKyAgICAvLyBUaGlzIGlzIHByb2Jh
Ymx5IHRoZSBiZXN0IHRpbWUgZm9yIHVzIHRvIHJlbW92ZSB0aGUgbm9kZSBmcm9tIGF1dG9tYXRp
YyBwdWxsIGxpc3QsCisgICAgLy8gc2luY2UgYWxsIGNvbm5lY3Rpb25zIGFyZSBnb25lIGFuZCB3
ZSBob2xkIHRoZSBncmFwaCBsb2NrLiBUaGVuIHdoZW4gaGFuZGxlUG9zdFJlbmRlclRhc2tzKCkK
KyAgICAvLyBnZXRzIGEgY2hhbmNlIHRvIHNjaGVkdWxlIHRoZSBkZWxldGlvbiB3b3JrLCB1cGRh
dGVBdXRvbWF0aWNQdWxsTm9kZXMoKSBhbHNvIGdldHMgYSBjaGFuY2UgdG8KKyAgICAvLyBtb2Rp
ZnkgbV9yZW5kZXJpbmdBdXRvbWF0aWNQdWxsTm9kZXMuCisgICAgcmVtb3ZlQXV0b21hdGljUHVs
bE5vZGUobm9kZSk7Cit9CisKK3ZvaWQgV2ViS2l0QXVkaW9Db250ZXh0OjpzY2hlZHVsZU5vZGVE
ZWxldGlvbigpCit7CisgICAgYm9vbCBpc0dvb2QgPSBtX2lzSW5pdGlhbGl6ZWQgJiYgaXNHcmFw
aE93bmVyKCk7CisgICAgQVNTRVJUKGlzR29vZCk7CisgICAgaWYgKCFpc0dvb2QpCisgICAgICAg
IHJldHVybjsKKworICAgIC8vIE1ha2Ugc3VyZSB0byBjYWxsIGRlbGV0ZU1hcmtlZE5vZGVzKCkg
b24gbWFpbiB0aHJlYWQuCisgICAgaWYgKG1fbm9kZXNNYXJrZWRGb3JEZWxldGlvbi5zaXplKCkg
JiYgIW1faXNEZWxldGlvblNjaGVkdWxlZCkgeworICAgICAgICBtX25vZGVzVG9EZWxldGUuYXBw
ZW5kVmVjdG9yKG1fbm9kZXNNYXJrZWRGb3JEZWxldGlvbik7CisgICAgICAgIG1fbm9kZXNNYXJr
ZWRGb3JEZWxldGlvbi5jbGVhcigpOworCisgICAgICAgIG1faXNEZWxldGlvblNjaGVkdWxlZCA9
IHRydWU7CisKKyAgICAgICAgY2FsbE9uTWFpblRocmVhZChbcHJvdGVjdGVkVGhpcyA9IG1ha2VS
ZWYoKnRoaXMpXSgpIG11dGFibGUgeworICAgICAgICAgICAgcHJvdGVjdGVkVGhpcy0+ZGVsZXRl
TWFya2VkTm9kZXMoKTsKKyAgICAgICAgfSk7CisgICAgfQorfQorCit2b2lkIFdlYktpdEF1ZGlv
Q29udGV4dDo6ZGVsZXRlTWFya2VkTm9kZXMoKQoreworICAgIEFTU0VSVChpc01haW5UaHJlYWQo
KSk7CisKKyAgICAvLyBQcm90ZWN0IHRoaXMgb2JqZWN0IGZyb20gYmVpbmcgZGVsZXRlZCBiZWZv
cmUgd2UgcmVsZWFzZSB0aGUgbXV0ZXggbG9ja2VkIGJ5IEF1dG9Mb2NrZXIuCisgICAgUmVmPFdl
YktpdEF1ZGlvQ29udGV4dD4gcHJvdGVjdGVkVGhpcygqdGhpcyk7CisgICAgeworICAgICAgICBB
dXRvTG9ja2VyIGxvY2tlcigqdGhpcyk7CisKKyAgICAgICAgd2hpbGUgKG1fbm9kZXNUb0RlbGV0
ZS5zaXplKCkpIHsKKyAgICAgICAgICAgIEF1ZGlvTm9kZSogbm9kZSA9IG1fbm9kZXNUb0RlbGV0
ZS50YWtlTGFzdCgpOworCisgICAgICAgICAgICAvLyBCZWZvcmUgZGVsZXRpbmcgdGhlIG5vZGUs
IGNsZWFyIG91dCBhbnkgQXVkaW9Ob2RlSW5wdXRzIGZyb20gbV9kaXJ0eVN1bW1pbmdKdW5jdGlv
bnMuCisgICAgICAgICAgICB1bnNpZ25lZCBudW1iZXJPZklucHV0cyA9IG5vZGUtPm51bWJlck9m
SW5wdXRzKCk7CisgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbnVtYmVyT2ZJ
bnB1dHM7ICsraSkKKyAgICAgICAgICAgICAgICBtX2RpcnR5U3VtbWluZ0p1bmN0aW9ucy5yZW1v
dmUobm9kZS0+aW5wdXQoaSkpOworCisgICAgICAgICAgICAvLyBCZWZvcmUgZGVsZXRpbmcgdGhl
IG5vZGUsIGNsZWFyIG91dCBhbnkgQXVkaW9Ob2RlT3V0cHV0cyBmcm9tIG1fZGlydHlBdWRpb05v
ZGVPdXRwdXRzLgorICAgICAgICAgICAgdW5zaWduZWQgbnVtYmVyT2ZPdXRwdXRzID0gbm9kZS0+
bnVtYmVyT2ZPdXRwdXRzKCk7CisgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwg
bnVtYmVyT2ZPdXRwdXRzOyArK2kpCisgICAgICAgICAgICAgICAgbV9kaXJ0eUF1ZGlvTm9kZU91
dHB1dHMucmVtb3ZlKG5vZGUtPm91dHB1dChpKSk7CisKKyAgICAgICAgICAgIC8vIEZpbmFsbHks
IGRlbGV0ZSBpdC4KKyAgICAgICAgICAgIGRlbGV0ZSBub2RlOworICAgICAgICB9CisgICAgICAg
IG1faXNEZWxldGlvblNjaGVkdWxlZCA9IGZhbHNlOworICAgIH0KK30KKwordm9pZCBXZWJLaXRB
dWRpb0NvbnRleHQ6Om1hcmtTdW1taW5nSnVuY3Rpb25EaXJ0eShBdWRpb1N1bW1pbmdKdW5jdGlv
biogc3VtbWluZ0p1bmN0aW9uKQoreworICAgIEFTU0VSVChpc0dyYXBoT3duZXIoKSk7CisgICAg
bV9kaXJ0eVN1bW1pbmdKdW5jdGlvbnMuYWRkKHN1bW1pbmdKdW5jdGlvbik7Cit9CisKK3ZvaWQg
V2ViS2l0QXVkaW9Db250ZXh0OjpyZW1vdmVNYXJrZWRTdW1taW5nSnVuY3Rpb24oQXVkaW9TdW1t
aW5nSnVuY3Rpb24qIHN1bW1pbmdKdW5jdGlvbikKK3sKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFk
KCkpOworICAgIEF1dG9Mb2NrZXIgbG9ja2VyKCp0aGlzKTsKKyAgICBtX2RpcnR5U3VtbWluZ0p1
bmN0aW9ucy5yZW1vdmUoc3VtbWluZ0p1bmN0aW9uKTsKK30KKwordm9pZCBXZWJLaXRBdWRpb0Nv
bnRleHQ6Om1hcmtBdWRpb05vZGVPdXRwdXREaXJ0eShBdWRpb05vZGVPdXRwdXQqIG91dHB1dCkK
K3sKKyAgICBBU1NFUlQoaXNHcmFwaE93bmVyKCkpOworICAgIG1fZGlydHlBdWRpb05vZGVPdXRw
dXRzLmFkZChvdXRwdXQpOworfQorCit2b2lkIFdlYktpdEF1ZGlvQ29udGV4dDo6aGFuZGxlRGly
dHlBdWRpb1N1bW1pbmdKdW5jdGlvbnMoKQoreworICAgIEFTU0VSVChpc0dyYXBoT3duZXIoKSk7
CisKKyAgICBmb3IgKGF1dG8mIGp1bmN0aW9uIDogbV9kaXJ0eVN1bW1pbmdKdW5jdGlvbnMpCisg
ICAgICAgIGp1bmN0aW9uLT51cGRhdGVSZW5kZXJpbmdTdGF0ZSgpOworCisgICAgbV9kaXJ0eVN1
bW1pbmdKdW5jdGlvbnMuY2xlYXIoKTsKK30KKwordm9pZCBXZWJLaXRBdWRpb0NvbnRleHQ6Omhh
bmRsZURpcnR5QXVkaW9Ob2RlT3V0cHV0cygpCit7CisgICAgQVNTRVJUKGlzR3JhcGhPd25lcigp
KTsKKworICAgIGZvciAoYXV0byYgb3V0cHV0IDogbV9kaXJ0eUF1ZGlvTm9kZU91dHB1dHMpCisg
ICAgICAgIG91dHB1dC0+dXBkYXRlUmVuZGVyaW5nU3RhdGUoKTsKKworICAgIG1fZGlydHlBdWRp
b05vZGVPdXRwdXRzLmNsZWFyKCk7Cit9CisKK3ZvaWQgV2ViS2l0QXVkaW9Db250ZXh0OjphZGRB
dXRvbWF0aWNQdWxsTm9kZShBdWRpb05vZGUmIG5vZGUpCit7CisgICAgQVNTRVJUKGlzR3JhcGhP
d25lcigpKTsKKworICAgIGlmIChtX2F1dG9tYXRpY1B1bGxOb2Rlcy5hZGQoJm5vZGUpLmlzTmV3
RW50cnkpCisgICAgICAgIG1fYXV0b21hdGljUHVsbE5vZGVzTmVlZFVwZGF0aW5nID0gdHJ1ZTsK
K30KKwordm9pZCBXZWJLaXRBdWRpb0NvbnRleHQ6OnJlbW92ZUF1dG9tYXRpY1B1bGxOb2RlKEF1
ZGlvTm9kZSYgbm9kZSkKK3sKKyAgICBBU1NFUlQoaXNHcmFwaE93bmVyKCkpOworCisgICAgaWYg
KG1fYXV0b21hdGljUHVsbE5vZGVzLnJlbW92ZSgmbm9kZSkpCisgICAgICAgIG1fYXV0b21hdGlj
UHVsbE5vZGVzTmVlZFVwZGF0aW5nID0gdHJ1ZTsKK30KKwordm9pZCBXZWJLaXRBdWRpb0NvbnRl
eHQ6OnVwZGF0ZUF1dG9tYXRpY1B1bGxOb2RlcygpCit7CisgICAgQVNTRVJUKGlzR3JhcGhPd25l
cigpKTsKKworICAgIGlmIChtX2F1dG9tYXRpY1B1bGxOb2Rlc05lZWRVcGRhdGluZykgeworICAg
ICAgICAvLyBDb3B5IGZyb20gbV9hdXRvbWF0aWNQdWxsTm9kZXMgdG8gbV9yZW5kZXJpbmdBdXRv
bWF0aWNQdWxsTm9kZXMuCisgICAgICAgIG1fcmVuZGVyaW5nQXV0b21hdGljUHVsbE5vZGVzLnJl
c2l6ZShtX2F1dG9tYXRpY1B1bGxOb2Rlcy5zaXplKCkpOworCisgICAgICAgIHVuc2lnbmVkIGkg
PSAwOworICAgICAgICBmb3IgKGF1dG8mIG91dHB1dCA6IG1fYXV0b21hdGljUHVsbE5vZGVzKQor
ICAgICAgICAgICAgbV9yZW5kZXJpbmdBdXRvbWF0aWNQdWxsTm9kZXNbaSsrXSA9IG91dHB1dDsK
KworICAgICAgICBtX2F1dG9tYXRpY1B1bGxOb2Rlc05lZWRVcGRhdGluZyA9IGZhbHNlOworICAg
IH0KK30KKwordm9pZCBXZWJLaXRBdWRpb0NvbnRleHQ6OnByb2Nlc3NBdXRvbWF0aWNQdWxsTm9k
ZXMoc2l6ZV90IGZyYW1lc1RvUHJvY2VzcykKK3sKKyAgICBBU1NFUlQoaXNBdWRpb1RocmVhZCgp
KTsKKworICAgIGZvciAoYXV0byYgbm9kZSA6IG1fcmVuZGVyaW5nQXV0b21hdGljUHVsbE5vZGVz
KQorICAgICAgICBub2RlLT5wcm9jZXNzSWZOZWNlc3NhcnkoZnJhbWVzVG9Qcm9jZXNzKTsKK30K
Kwordm9pZCBXZWJLaXRBdWRpb0NvbnRleHQ6Om5vZGVXaWxsQmVnaW5QbGF5YmFjaygpCit7Cisg
ICAgLy8gQ2FsbGVkIGJ5IHNjaGVkdWxlZCBBdWRpb05vZGVzIHdoZW4gY2xpZW50cyBzY2hlZHVs
ZSB0aGVpciBzdGFydCB0aW1lcy4KKyAgICAvLyBQcmlvciB0byB0aGUgaW50cm9kdWN0aW9uIG9m
IHN1c3BlbmQoKSwgcmVzdW1lKCksIGFuZCBzdG9wKCksIHN0YXJ0aW5nCisgICAgLy8gYSBzY2hl
ZHVsZWQgQXVkaW9Ob2RlIHdvdWxkIHJlbW92ZSB0aGUgdXNlci1nZXN0dXJlIHJlc3RyaWN0aW9u
LCBpZiBwcmVzZW50LAorICAgIC8vIGFuZCB3b3VsZCB0aHVzIHVubXV0ZSB0aGUgY29udGV4dC4g
Tm93IHRoYXQgQXVkaW9Db250ZXh0IHN0YXlzIGluIHRoZQorICAgIC8vICJzdXNwZW5kZWQiIHN0
YXRlIGlmIGEgdXNlci1nZXN0dXJlIHJlc3RyaWN0aW9uIGlzIHByZXNlbnQsIHN0YXJ0aW5nIGEK
KyAgICAvLyBzY2hlZHVsZSBBdWRpb05vZGUgc2hvdWxkIHNldCB0aGUgc3RhdGUgdG8gInJ1bm5p
bmciLCBidXQgb25seSBpZiB0aGUKKyAgICAvLyB1c2VyLWdlc3R1cmUgcmVzdHJpY3Rpb24gaXMg
c2V0LgorICAgIGlmICh1c2VyR2VzdHVyZVJlcXVpcmVkRm9yQXVkaW9TdGFydCgpKQorICAgICAg
ICBzdGFydFJlbmRlcmluZygpOworfQorCitzdGF0aWMgYm9vbCBzaG91bGREb2N1bWVudEFsbG93
V2ViQXVkaW9Ub0F1dG9QbGF5KGNvbnN0IERvY3VtZW50JiBkb2N1bWVudCkKK3sKKyAgICBpZiAo
ZG9jdW1lbnQucHJvY2Vzc2luZ1VzZXJHZXN0dXJlRm9yTWVkaWEoKSB8fCBkb2N1bWVudC5pc0Nh
cHR1cmluZygpKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICByZXR1cm4gZG9jdW1lbnQucXVp
cmtzKCkuc2hvdWxkQXV0b3BsYXlXZWJBdWRpb0ZvckFyYml0cmFyeVVzZXJHZXN0dXJlKCkgJiYg
ZG9jdW1lbnQudG9wRG9jdW1lbnQoKS5oYXNIYWRVc2VySW50ZXJhY3Rpb24oKTsKK30KKworYm9v
bCBXZWJLaXRBdWRpb0NvbnRleHQ6OndpbGxCZWdpblBsYXliYWNrKCkKK3sKKyAgICBhdXRvKiBk
b2N1bWVudCA9IHRoaXMtPmRvY3VtZW50KCk7CisgICAgaWYgKCFkb2N1bWVudCkKKyAgICAgICAg
cmV0dXJuIGZhbHNlOworCisgICAgaWYgKHVzZXJHZXN0dXJlUmVxdWlyZWRGb3JBdWRpb1N0YXJ0
KCkpIHsKKyAgICAgICAgaWYgKCFzaG91bGREb2N1bWVudEFsbG93V2ViQXVkaW9Ub0F1dG9QbGF5
KCpkb2N1bWVudCkpIHsKKyAgICAgICAgICAgIEFMV0FZU19MT0coTE9HSURFTlRJRklFUiwgInJl
dHVybmluZyBmYWxzZSwgbm90IHByb2Nlc3NpbmcgdXNlciBnZXN0dXJlIG9yIGNhcHR1cmluZyIp
OworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisgICAgICAgIHJlbW92ZUJl
aGF2aW9yUmVzdHJpY3Rpb24oV2ViS2l0QXVkaW9Db250ZXh0OjpSZXF1aXJlVXNlckdlc3R1cmVG
b3JBdWRpb1N0YXJ0UmVzdHJpY3Rpb24pOworICAgIH0KKworICAgIGlmIChwYWdlQ29uc2VudFJl
cXVpcmVkRm9yQXVkaW9TdGFydCgpKSB7CisgICAgICAgIGF1dG8qIHBhZ2UgPSBkb2N1bWVudC0+
cGFnZSgpOworICAgICAgICBpZiAocGFnZSAmJiAhcGFnZS0+Y2FuU3RhcnRNZWRpYSgpKSB7Cisg
ICAgICAgICAgICBkb2N1bWVudC0+YWRkTWVkaWFDYW5TdGFydExpc3RlbmVyKCp0aGlzKTsKKyAg
ICAgICAgICAgIEFMV0FZU19MT0coTE9HSURFTlRJRklFUiwgInJldHVybmluZyBmYWxzZSwgcGFn
ZSBkb2Vzbid0IGFsbG93IG1lZGlhIHRvIHN0YXJ0Iik7CisgICAgICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgICAgIH0KKyAgICAgICAgcmVtb3ZlQmVoYXZpb3JSZXN0cmljdGlvbihXZWJLaXRB
dWRpb0NvbnRleHQ6OlJlcXVpcmVQYWdlQ29uc2VudEZvckF1ZGlvU3RhcnRSZXN0cmljdGlvbik7
CisgICAgfQorCisgICAgYXV0byB3aWxsQmVnaW4gPSBtX21lZGlhU2Vzc2lvbi0+Y2xpZW50V2ls
bEJlZ2luUGxheWJhY2soKTsKKyAgICBBTFdBWVNfTE9HKExPR0lERU5USUZJRVIsICJyZXR1cm5p
bmcgIiwgd2lsbEJlZ2luKTsKKworICAgIHJldHVybiB3aWxsQmVnaW47Cit9CisKK2Jvb2wgV2Vi
S2l0QXVkaW9Db250ZXh0Ojp3aWxsUGF1c2VQbGF5YmFjaygpCit7CisgICAgYXV0byogZG9jdW1l
bnQgPSB0aGlzLT5kb2N1bWVudCgpOworICAgIGlmICghZG9jdW1lbnQpCisgICAgICAgIHJldHVy
biBmYWxzZTsKKworICAgIGlmICh1c2VyR2VzdHVyZVJlcXVpcmVkRm9yQXVkaW9TdGFydCgpKSB7
CisgICAgICAgIGlmICghZG9jdW1lbnQtPnByb2Nlc3NpbmdVc2VyR2VzdHVyZUZvck1lZGlhKCkp
CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIHJlbW92ZUJlaGF2aW9yUmVzdHJp
Y3Rpb24oV2ViS2l0QXVkaW9Db250ZXh0OjpSZXF1aXJlVXNlckdlc3R1cmVGb3JBdWRpb1N0YXJ0
UmVzdHJpY3Rpb24pOworICAgIH0KKworICAgIGlmIChwYWdlQ29uc2VudFJlcXVpcmVkRm9yQXVk
aW9TdGFydCgpKSB7CisgICAgICAgIGF1dG8qIHBhZ2UgPSBkb2N1bWVudC0+cGFnZSgpOworICAg
ICAgICBpZiAocGFnZSAmJiAhcGFnZS0+Y2FuU3RhcnRNZWRpYSgpKSB7CisgICAgICAgICAgICBk
b2N1bWVudC0+YWRkTWVkaWFDYW5TdGFydExpc3RlbmVyKCp0aGlzKTsKKyAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICAgICAgfQorICAgICAgICByZW1vdmVCZWhhdmlvclJlc3RyaWN0aW9u
KFdlYktpdEF1ZGlvQ29udGV4dDo6UmVxdWlyZVBhZ2VDb25zZW50Rm9yQXVkaW9TdGFydFJlc3Ry
aWN0aW9uKTsKKyAgICB9CisKKyAgICByZXR1cm4gbV9tZWRpYVNlc3Npb24tPmNsaWVudFdpbGxQ
YXVzZVBsYXliYWNrKCk7Cit9CisKK3ZvaWQgV2ViS2l0QXVkaW9Db250ZXh0OjpzdGFydFJlbmRl
cmluZygpCit7CisgICAgQUxXQVlTX0xPRyhMT0dJREVOVElGSUVSKTsKKyAgICBpZiAobV9pc1N0
b3BTY2hlZHVsZWQgfHwgIXdpbGxCZWdpblBsYXliYWNrKCkpCisgICAgICAgIHJldHVybjsKKwor
ICAgIG1ha2VQZW5kaW5nQWN0aXZpdHkoKTsKKworICAgIGRlc3RpbmF0aW9uKCktPnN0YXJ0UmVu
ZGVyaW5nKCk7CisgICAgc2V0U3RhdGUoU3RhdGU6OlJ1bm5pbmcpOworfQorCit2b2lkIFdlYktp
dEF1ZGlvQ29udGV4dDo6bWVkaWFDYW5TdGFydChEb2N1bWVudCYgZG9jdW1lbnQpCit7CisgICAg
QVNTRVJUX1VOVVNFRChkb2N1bWVudCwgJmRvY3VtZW50ID09IHRoaXMtPmRvY3VtZW50KCkpOwor
ICAgIHJlbW92ZUJlaGF2aW9yUmVzdHJpY3Rpb24oV2ViS2l0QXVkaW9Db250ZXh0OjpSZXF1aXJl
UGFnZUNvbnNlbnRGb3JBdWRpb1N0YXJ0UmVzdHJpY3Rpb24pOworICAgIG1heVJlc3VtZVBsYXli
YWNrKHRydWUpOworfQorCitNZWRpYVByb2R1Y2VyOjpNZWRpYVN0YXRlRmxhZ3MgV2ViS2l0QXVk
aW9Db250ZXh0OjptZWRpYVN0YXRlKCkgY29uc3QKK3sKKyAgICBpZiAoIW1faXNTdG9wU2NoZWR1
bGVkICYmIG1fZGVzdGluYXRpb25Ob2RlICYmIG1fZGVzdGluYXRpb25Ob2RlLT5pc1BsYXlpbmdB
dWRpbygpKQorICAgICAgICByZXR1cm4gTWVkaWFQcm9kdWNlcjo6SXNQbGF5aW5nQXVkaW87CisK
KyAgICByZXR1cm4gTWVkaWFQcm9kdWNlcjo6SXNOb3RQbGF5aW5nOworfQorCit2b2lkIFdlYktp
dEF1ZGlvQ29udGV4dDo6cGFnZU11dGVkU3RhdGVEaWRDaGFuZ2UoKQoreworICAgIGlmIChtX2Rl
c3RpbmF0aW9uTm9kZSAmJiBkb2N1bWVudCgpICYmIGRvY3VtZW50KCktPnBhZ2UoKSkKKyAgICAg
ICAgbV9kZXN0aW5hdGlvbk5vZGUtPnNldE11dGVkKGRvY3VtZW50KCktPnBhZ2UoKS0+aXNBdWRp
b011dGVkKCkpOworfQorCit2b2lkIFdlYktpdEF1ZGlvQ29udGV4dDo6aXNQbGF5aW5nQXVkaW9E
aWRDaGFuZ2UoKQoreworICAgIC8vIE1ha2Ugc3VyZSB0byBjYWxsIERvY3VtZW50Ojp1cGRhdGVJ
c1BsYXlpbmdNZWRpYSgpIG9uIHRoZSBtYWluIHRocmVhZCwgc2luY2UKKyAgICAvLyB3ZSBjb3Vs
ZCBiZSBvbiB0aGUgYXVkaW8gSS9PIHRocmVhZCBoZXJlIGFuZCB0aGUgY2FsbCBpbnRvIFdlYkNv
cmUgY291bGQgYmxvY2suCisgICAgY2FsbE9uTWFpblRocmVhZChbcHJvdGVjdGVkVGhpcyA9IG1h
a2VSZWYoKnRoaXMpXSB7CisgICAgICAgIGlmIChwcm90ZWN0ZWRUaGlzLT5kb2N1bWVudCgpKQor
ICAgICAgICAgICAgcHJvdGVjdGVkVGhpcy0+ZG9jdW1lbnQoKS0+dXBkYXRlSXNQbGF5aW5nTWVk
aWEoKTsKKyAgICB9KTsKK30KKwordm9pZCBXZWJLaXRBdWRpb0NvbnRleHQ6OmZpbmlzaGVkUmVu
ZGVyaW5nKGJvb2wgZGlkUmVuZGVyaW5nKQoreworICAgIEFTU0VSVChpc09mZmxpbmVDb250ZXh0
KCkpOworICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisgICAgaWYgKCFpc01haW5UaHJlYWQo
KSkKKyAgICAgICAgcmV0dXJuOworCisgICAgYXV0byBjbGVhclBlbmRpbmdBY3Rpdml0eUlmRXhp
dEVhcmx5ID0gV1RGOjptYWtlU2NvcGVFeGl0KFt0aGlzXSB7CisgICAgICAgIGNsZWFyUGVuZGlu
Z0FjdGl2aXR5KCk7CisgICAgfSk7CisKKworICAgIEFMV0FZU19MT0coTE9HSURFTlRJRklFUik7
CisKKyAgICBpZiAoIWRpZFJlbmRlcmluZykKKyAgICAgICAgcmV0dXJuOworCisgICAgQXVkaW9C
dWZmZXIqIHJlbmRlcmVkQnVmZmVyID0gbV9yZW5kZXJUYXJnZXQuZ2V0KCk7CisgICAgc2V0U3Rh
dGUoU3RhdGU6OkNsb3NlZCk7CisKKyAgICBBU1NFUlQocmVuZGVyZWRCdWZmZXIpOworICAgIGlm
ICghcmVuZGVyZWRCdWZmZXIpCisgICAgICAgIHJldHVybjsKKworICAgIC8vIEF2b2lkIGZpcmlu
ZyB0aGUgZXZlbnQgaWYgdGhlIGRvY3VtZW50IGhhcyBhbHJlYWR5IGdvbmUgYXdheS4KKyAgICBp
ZiAobV9pc1N0b3BTY2hlZHVsZWQpCisgICAgICAgIHJldHVybjsKKworICAgIGNsZWFyUGVuZGlu
Z0FjdGl2aXR5SWZFeGl0RWFybHkucmVsZWFzZSgpOworICAgIG1fZXZlbnRRdWV1ZS0+ZW5xdWV1
ZUV2ZW50KE9mZmxpbmVBdWRpb0NvbXBsZXRpb25FdmVudDo6Y3JlYXRlKHJlbmRlcmVkQnVmZmVy
KSk7Cit9CisKK3ZvaWQgV2ViS2l0QXVkaW9Db250ZXh0OjpkaXNwYXRjaEV2ZW50KEV2ZW50JiBl
dmVudCkKK3sKKyAgICBFdmVudFRhcmdldDo6ZGlzcGF0Y2hFdmVudChldmVudCk7CisgICAgaWYg
KGV2ZW50LmV2ZW50SW50ZXJmYWNlKCkgPT0gT2ZmbGluZUF1ZGlvQ29tcGxldGlvbkV2ZW50SW50
ZXJmYWNlVHlwZSkKKyAgICAgICAgY2xlYXJQZW5kaW5nQWN0aXZpdHkoKTsKK30KKwordm9pZCBX
ZWJLaXRBdWRpb0NvbnRleHQ6OmluY3JlbWVudEFjdGl2ZVNvdXJjZUNvdW50KCkKK3sKKyAgICAr
K21fYWN0aXZlU291cmNlQ291bnQ7Cit9CisKK3ZvaWQgV2ViS2l0QXVkaW9Db250ZXh0OjpkZWNy
ZW1lbnRBY3RpdmVTb3VyY2VDb3VudCgpCit7CisgICAgLS1tX2FjdGl2ZVNvdXJjZUNvdW50Owor
fQorCit2b2lkIFdlYktpdEF1ZGlvQ29udGV4dDo6c3VzcGVuZFJlbmRlcmluZyhET01Qcm9taXNl
RGVmZXJyZWQ8dm9pZD4mJiBwcm9taXNlKQoreworICAgIGlmIChpc09mZmxpbmVDb250ZXh0KCkg
fHwgbV9pc1N0b3BTY2hlZHVsZWQpIHsKKyAgICAgICAgcHJvbWlzZS5yZWplY3QoSW52YWxpZFN0
YXRlRXJyb3IpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgaWYgKG1fc3RhdGUgPT0g
U3RhdGU6OlN1c3BlbmRlZCkgeworICAgICAgICBwcm9taXNlLnJlc29sdmUoKTsKKyAgICAgICAg
cmV0dXJuOworICAgIH0KKworICAgIGlmIChtX3N0YXRlID09IFN0YXRlOjpDbG9zZWQgfHwgbV9z
dGF0ZSA9PSBTdGF0ZTo6SW50ZXJydXB0ZWQgfHwgIW1fZGVzdGluYXRpb25Ob2RlKSB7CisgICAg
ICAgIHByb21pc2UucmVqZWN0KCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBhZGRS
ZWFjdGlvbihTdGF0ZTo6U3VzcGVuZGVkLCBXVEZNb3ZlKHByb21pc2UpKTsKKworICAgIGlmICgh
d2lsbFBhdXNlUGxheWJhY2soKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgbGF6eUluaXRpYWxp
emUoKTsKKworICAgIG1fZGVzdGluYXRpb25Ob2RlLT5zdXNwZW5kKFt0aGlzLCBwcm90ZWN0ZWRU
aGlzID0gbWFrZVJlZigqdGhpcyldIHsKKyAgICAgICAgc2V0U3RhdGUoU3RhdGU6OlN1c3BlbmRl
ZCk7CisgICAgfSk7Cit9CisKK3ZvaWQgV2ViS2l0QXVkaW9Db250ZXh0OjpyZXN1bWVSZW5kZXJp
bmcoRE9NUHJvbWlzZURlZmVycmVkPHZvaWQ+JiYgcHJvbWlzZSkKK3sKKyAgICBpZiAoaXNPZmZs
aW5lQ29udGV4dCgpIHx8IG1faXNTdG9wU2NoZWR1bGVkKSB7CisgICAgICAgIHByb21pc2UucmVq
ZWN0KEludmFsaWRTdGF0ZUVycm9yKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlm
IChtX3N0YXRlID09IFN0YXRlOjpSdW5uaW5nKSB7CisgICAgICAgIHByb21pc2UucmVzb2x2ZSgp
OworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgaWYgKG1fc3RhdGUgPT0gU3RhdGU6OkNs
b3NlZCB8fCAhbV9kZXN0aW5hdGlvbk5vZGUpIHsKKyAgICAgICAgcHJvbWlzZS5yZWplY3QoKTsK
KyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGFkZFJlYWN0aW9uKFN0YXRlOjpSdW5uaW5n
LCBXVEZNb3ZlKHByb21pc2UpKTsKKworICAgIGlmICghd2lsbEJlZ2luUGxheWJhY2soKSkKKyAg
ICAgICAgcmV0dXJuOworCisgICAgbGF6eUluaXRpYWxpemUoKTsKKworICAgIG1fZGVzdGluYXRp
b25Ob2RlLT5yZXN1bWUoW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKV0gewor
ICAgICAgICBzZXRTdGF0ZShTdGF0ZTo6UnVubmluZyk7CisgICAgfSk7Cit9CisKK3ZvaWQgV2Vi
S2l0QXVkaW9Db250ZXh0OjpjbG9zZShET01Qcm9taXNlRGVmZXJyZWQ8dm9pZD4mJiBwcm9taXNl
KQoreworICAgIGlmIChpc09mZmxpbmVDb250ZXh0KCkgfHwgbV9pc1N0b3BTY2hlZHVsZWQpIHsK
KyAgICAgICAgcHJvbWlzZS5yZWplY3QoSW52YWxpZFN0YXRlRXJyb3IpOworICAgICAgICByZXR1
cm47CisgICAgfQorCisgICAgaWYgKG1fc3RhdGUgPT0gU3RhdGU6OkNsb3NlZCB8fCAhbV9kZXN0
aW5hdGlvbk5vZGUpIHsKKyAgICAgICAgcHJvbWlzZS5yZXNvbHZlKCk7CisgICAgICAgIHJldHVy
bjsKKyAgICB9CisKKyAgICBhZGRSZWFjdGlvbihTdGF0ZTo6Q2xvc2VkLCBXVEZNb3ZlKHByb21p
c2UpKTsKKworICAgIGxhenlJbml0aWFsaXplKCk7CisKKyAgICBtX2Rlc3RpbmF0aW9uTm9kZS0+
Y2xvc2UoW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKV0geworICAgICAgICBz
ZXRTdGF0ZShTdGF0ZTo6Q2xvc2VkKTsKKyAgICAgICAgdW5pbml0aWFsaXplKCk7CisgICAgfSk7
Cit9CisKKwordm9pZCBXZWJLaXRBdWRpb0NvbnRleHQ6OnN1c3BlbmRQbGF5YmFjaygpCit7Cisg
ICAgaWYgKCFtX2Rlc3RpbmF0aW9uTm9kZSB8fCBtX3N0YXRlID09IFN0YXRlOjpDbG9zZWQpCisg
ICAgICAgIHJldHVybjsKKworICAgIGlmIChtX3N0YXRlID09IFN0YXRlOjpTdXNwZW5kZWQpIHsK
KyAgICAgICAgaWYgKG1fbWVkaWFTZXNzaW9uLT5zdGF0ZSgpID09IFBsYXRmb3JtTWVkaWFTZXNz
aW9uOjpJbnRlcnJ1cHRlZCkKKyAgICAgICAgICAgIHNldFN0YXRlKFN0YXRlOjpJbnRlcnJ1cHRl
ZCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBsYXp5SW5pdGlhbGl6ZSgpOworCisg
ICAgbV9kZXN0aW5hdGlvbk5vZGUtPnN1c3BlbmQoW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtl
UmVmKCp0aGlzKV0geworICAgICAgICBib29sIGludGVycnVwdGVkID0gbV9tZWRpYVNlc3Npb24t
PnN0YXRlKCkgPT0gUGxhdGZvcm1NZWRpYVNlc3Npb246OkludGVycnVwdGVkOworICAgICAgICBz
ZXRTdGF0ZShpbnRlcnJ1cHRlZCA/IFN0YXRlOjpJbnRlcnJ1cHRlZCA6IFN0YXRlOjpTdXNwZW5k
ZWQpOworICAgIH0pOworfQorCit2b2lkIFdlYktpdEF1ZGlvQ29udGV4dDo6bWF5UmVzdW1lUGxh
eWJhY2soYm9vbCBzaG91bGRSZXN1bWUpCit7CisgICAgaWYgKCFtX2Rlc3RpbmF0aW9uTm9kZSB8
fCBtX3N0YXRlID09IFN0YXRlOjpDbG9zZWQgfHwgbV9zdGF0ZSA9PSBTdGF0ZTo6UnVubmluZykK
KyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKCFzaG91bGRSZXN1bWUpIHsKKyAgICAgICAgc2V0
U3RhdGUoU3RhdGU6OlN1c3BlbmRlZCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBp
ZiAoIXdpbGxCZWdpblBsYXliYWNrKCkpCisgICAgICAgIHJldHVybjsKKworICAgIGxhenlJbml0
aWFsaXplKCk7CisKKyAgICBtX2Rlc3RpbmF0aW9uTm9kZS0+cmVzdW1lKFt0aGlzLCBwcm90ZWN0
ZWRUaGlzID0gbWFrZVJlZigqdGhpcyldIHsKKyAgICAgICAgc2V0U3RhdGUoU3RhdGU6OlJ1bm5p
bmcpOworICAgIH0pOworfQorCit2b2lkIFdlYktpdEF1ZGlvQ29udGV4dDo6cG9zdFRhc2soV1RG
OjpGdW5jdGlvbjx2b2lkKCk+JiYgdGFzaykKK3sKKyAgICBpZiAobV9pc1N0b3BTY2hlZHVsZWQp
CisgICAgICAgIHJldHVybjsKKworICAgIG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+cG9zdFRh
c2soV1RGTW92ZSh0YXNrKSk7Cit9CisKK2NvbnN0IFNlY3VyaXR5T3JpZ2luKiBXZWJLaXRBdWRp
b0NvbnRleHQ6Om9yaWdpbigpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fc2NyaXB0RXhlY3V0aW9u
Q29udGV4dCA/IG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+c2VjdXJpdHlPcmlnaW4oKSA6IG51
bGxwdHI7Cit9CisKK3ZvaWQgV2ViS2l0QXVkaW9Db250ZXh0OjphZGRDb25zb2xlTWVzc2FnZShN
ZXNzYWdlU291cmNlIHNvdXJjZSwgTWVzc2FnZUxldmVsIGxldmVsLCBjb25zdCBTdHJpbmcmIG1l
c3NhZ2UpCit7CisgICAgaWYgKG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dCkKKyAgICAgICAgbV9z
Y3JpcHRFeGVjdXRpb25Db250ZXh0LT5hZGRDb25zb2xlTWVzc2FnZShzb3VyY2UsIGxldmVsLCBt
ZXNzYWdlKTsKK30KKwordm9pZCBXZWJLaXRBdWRpb0NvbnRleHQ6OmNsZWFyUGVuZGluZ0FjdGl2
aXR5KCkKK3sKKyAgICBpZiAoIW1fcGVuZGluZ0FjdGl2aXR5KQorICAgICAgICByZXR1cm47Cisg
ICAgbV9wZW5kaW5nQWN0aXZpdHkgPSBudWxscHRyOworICAgIC8vIEZJWE1FOiBSZW1vdmUgdGhp
cyBzcGVjaWZpYyBkZXJlZigpIGFuZCByZWYoKSBjYWxsIGluIG1ha2VQZW5kaW5nQWN0aXZpdHko
KS4KKyAgICBkZXJlZigpOworfQorCit2b2lkIFdlYktpdEF1ZGlvQ29udGV4dDo6bWFrZVBlbmRp
bmdBY3Rpdml0eSgpCit7CisgICAgaWYgKG1fcGVuZGluZ0FjdGl2aXR5KQorICAgICAgICByZXR1
cm47CisgICAgbV9wZW5kaW5nQWN0aXZpdHkgPSBBY3RpdmVET01PYmplY3Q6Om1ha2VQZW5kaW5n
QWN0aXZpdHkoKnRoaXMpOworICAgIHJlZigpOworfQorCisjaWYgIVJFTEVBU0VfTE9HX0RJU0FC
TEVECitXVEZMb2dDaGFubmVsJiBXZWJLaXRBdWRpb0NvbnRleHQ6OmxvZ0NoYW5uZWwoKSBjb25z
dAoreworICAgIHJldHVybiBMb2dNZWRpYTsKK30KKyNlbmRpZgorCit9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoV0VCX0FVRElPKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9XZWJLaXRBdWRpb0NvbnRleHQuaCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vV2ViS2l0QXVkaW9Db250ZXh0LmgKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NDkwNTIwNTE5MjBiYzhkNmIzNDQ1Y2NiNDU4OWM4N2FjZjcxNTZhNgotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vV2ViS2l0QXVkaW9Db250ZXh0LmgK
QEAgLTAsMCArMSw0MTcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNi0yMDIwIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycg
QU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OCisgKiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMKKyAqIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVk
ZSAiQWN0aXZlRE9NT2JqZWN0LmgiCisjaW5jbHVkZSAiQXN5bmNBdWRpb0RlY29kZXIuaCIKKyNp
bmNsdWRlICJBdWRpb0J1cy5oIgorI2luY2x1ZGUgIkF1ZGlvQ29udGV4dC5oIgorI2luY2x1ZGUg
IkF1ZGlvQ29udGV4dFN0YXRlLmgiCisjaW5jbHVkZSAiQXVkaW9EZXN0aW5hdGlvbk5vZGUuaCIK
KyNpbmNsdWRlICJFdmVudFRhcmdldC5oIgorI2luY2x1ZGUgIk1lZGlhQ2FuU3RhcnRMaXN0ZW5l
ci5oIgorI2luY2x1ZGUgIk1lZGlhUHJvZHVjZXIuaCIKKyNpbmNsdWRlICJQbGF0Zm9ybU1lZGlh
U2Vzc2lvbi5oIgorI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKKyNpbmNsdWRl
ICJWaXNpYmlsaXR5Q2hhbmdlQ2xpZW50LmgiCisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvQ29u
c29sZVR5cGVzLmg+CisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvRmxvYXQzMkFycmF5Lmg+Cisj
aW5jbHVkZSA8YXRvbWljPgorI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CisjaW5jbHVkZSA8d3Rm
L0xvZ2dlckhlbHBlci5oPgorI2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+CisjaW5jbHVkZSA8
d3RmL1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi9UaHJlYWRTYWZlUmVmQ291bnRlZC5oPgorI2lu
Y2x1ZGUgPHd0Zi9UaHJlYWRpbmcuaD4KKyNpbmNsdWRlIDx3dGYvVW5pcXVlUmVmLmg+CisjaW5j
bHVkZSA8d3RmL1ZlY3Rvci5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L0F0b21TdHJpbmdIYXNoLmg+
CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgQW5hbHlzZXJOb2RlOworY2xhc3MgQXVk
aW9CdWZmZXI7CitjbGFzcyBBdWRpb0J1ZmZlckNhbGxiYWNrOworY2xhc3MgQXVkaW9CdWZmZXJT
b3VyY2VOb2RlOworY2xhc3MgQXVkaW9MaXN0ZW5lcjsKK2NsYXNzIEF1ZGlvU3VtbWluZ0p1bmN0
aW9uOworY2xhc3MgQmlxdWFkRmlsdGVyTm9kZTsKK2NsYXNzIENoYW5uZWxNZXJnZXJOb2RlOwor
Y2xhc3MgQ2hhbm5lbFNwbGl0dGVyTm9kZTsKK2NsYXNzIENvbnZvbHZlck5vZGU7CitjbGFzcyBE
ZWxheU5vZGU7CitjbGFzcyBEb2N1bWVudDsKK2NsYXNzIER5bmFtaWNzQ29tcHJlc3Nvck5vZGU7
CitjbGFzcyBHYWluTm9kZTsKK2NsYXNzIEhUTUxNZWRpYUVsZW1lbnQ7CitjbGFzcyBNYWluVGhy
ZWFkR2VuZXJpY0V2ZW50UXVldWU7CitjbGFzcyBNZWRpYUVsZW1lbnRBdWRpb1NvdXJjZU5vZGU7
CitjbGFzcyBNZWRpYVN0cmVhbTsKK2NsYXNzIE1lZGlhU3RyZWFtQXVkaW9EZXN0aW5hdGlvbk5v
ZGU7CitjbGFzcyBNZWRpYVN0cmVhbUF1ZGlvU291cmNlTm9kZTsKK2NsYXNzIE9zY2lsbGF0b3JO
b2RlOworY2xhc3MgUGVyaW9kaWNXYXZlOworY2xhc3MgU2NyaXB0UHJvY2Vzc29yTm9kZTsKK2Ns
YXNzIFNlY3VyaXR5T3JpZ2luOworY2xhc3MgV2F2ZVNoYXBlck5vZGU7CitjbGFzcyBXZWJLaXRB
dWRpb1Bhbm5lck5vZGU7CisKK3RlbXBsYXRlPHR5cGVuYW1lIElETFR5cGU+IGNsYXNzIERPTVBy
b21pc2VEZWZlcnJlZDsKKworLy8gQXVkaW9Db250ZXh0IGlzIHRoZSBjb3JuZXJzdG9uZSBvZiB0
aGUgd2ViIGF1ZGlvIEFQSSBhbmQgYWxsIEF1ZGlvTm9kZXMgYXJlIGNyZWF0ZWQgZnJvbSBpdC4K
Ky8vIEZvciB0aHJlYWQgc2FmZXR5IGJldHdlZW4gdGhlIGF1ZGlvIHRocmVhZCBhbmQgdGhlIG1h
aW4gdGhyZWFkLCBpdCBoYXMgYSByZW5kZXJpbmcgZ3JhcGggbG9ja2luZyBtZWNoYW5pc20uCisK
K2NsYXNzIFdlYktpdEF1ZGlvQ29udGV4dAorICAgIDogcHVibGljIEF1ZGlvQ29udGV4dEJhc2UK
KyAgICAsIHByaXZhdGUgUGxhdGZvcm1NZWRpYVNlc3Npb25DbGllbnQKKyAgICAsIHByaXZhdGUg
VmlzaWJpbGl0eUNoYW5nZUNsaWVudAoreworICAgIFdURl9NQUtFX0lTT19BTExPQ0FURUQoV2Vi
S2l0QXVkaW9Db250ZXh0KTsKK3B1YmxpYzoKKyAgICAvLyBDcmVhdGUgYW4gV2ViS2l0QXVkaW9D
b250ZXh0IGZvciByZW5kZXJpbmcgdG8gdGhlIGF1ZGlvIGhhcmR3YXJlLgorICAgIHN0YXRpYyBF
eGNlcHRpb25PcjxSZWY8V2ViS2l0QXVkaW9Db250ZXh0Pj4gY3JlYXRlKERvY3VtZW50Jik7CisK
KyAgICB2aXJ0dWFsIH5XZWJLaXRBdWRpb0NvbnRleHQoKTsKKworICAgIGJvb2wgaXNJbml0aWFs
aXplZCgpIGNvbnN0IGZpbmFsOworCisgICAgYm9vbCBpc09mZmxpbmVDb250ZXh0KCkgY29uc3Qg
ZmluYWwgeyByZXR1cm4gbV9pc09mZmxpbmVDb250ZXh0OyB9CisKKyAgICBEb2N1bWVudElkZW50
aWZpZXIgaG9zdGluZ0RvY3VtZW50SWRlbnRpZmllcigpIGNvbnN0IGZpbmFsOworCisgICAgQXVk
aW9EZXN0aW5hdGlvbk5vZGUqIGRlc3RpbmF0aW9uKCkgeyByZXR1cm4gbV9kZXN0aW5hdGlvbk5v
ZGUuZ2V0KCk7IH0KKyAgICBzaXplX3QgY3VycmVudFNhbXBsZUZyYW1lKCkgY29uc3QgZmluYWwg
eyByZXR1cm4gbV9kZXN0aW5hdGlvbk5vZGUgPyBtX2Rlc3RpbmF0aW9uTm9kZS0+Y3VycmVudFNh
bXBsZUZyYW1lKCkgOiAwOyB9CisgICAgZG91YmxlIGN1cnJlbnRUaW1lKCkgY29uc3QgZmluYWwg
eyByZXR1cm4gbV9kZXN0aW5hdGlvbk5vZGUgPyBtX2Rlc3RpbmF0aW9uTm9kZS0+Y3VycmVudFRp
bWUoKSA6IDAuOyB9CisgICAgZmxvYXQgc2FtcGxlUmF0ZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJu
IG1fZGVzdGluYXRpb25Ob2RlID8gbV9kZXN0aW5hdGlvbk5vZGUtPnNhbXBsZVJhdGUoKSA6IDAu
ZjsgfQorICAgIHVuc2lnbmVkIGxvbmcgYWN0aXZlU291cmNlQ291bnQoKSBjb25zdCB7IHJldHVy
biBzdGF0aWNfY2FzdDx1bnNpZ25lZCBsb25nPihtX2FjdGl2ZVNvdXJjZUNvdW50KTsgfQorCisg
ICAgdm9pZCBpbmNyZW1lbnRBY3RpdmVTb3VyY2VDb3VudCgpIGZpbmFsOworICAgIHZvaWQgZGVj
cmVtZW50QWN0aXZlU291cmNlQ291bnQoKSBmaW5hbDsKKworICAgIEV4Y2VwdGlvbk9yPFJlZjxB
dWRpb0J1ZmZlcj4+IGNyZWF0ZUJ1ZmZlcih1bnNpZ25lZCBudW1iZXJPZkNoYW5uZWxzLCBzaXpl
X3QgbnVtYmVyT2ZGcmFtZXMsIGZsb2F0IHNhbXBsZVJhdGUpOworICAgIEV4Y2VwdGlvbk9yPFJl
ZjxBdWRpb0J1ZmZlcj4+IGNyZWF0ZUJ1ZmZlcihBcnJheUJ1ZmZlciYsIGJvb2wgbWl4VG9Nb25v
KTsKKworICAgIC8vIEFzeW5jaHJvbm91cyBhdWRpbyBmaWxlIGRhdGEgZGVjb2RpbmcuCisgICAg
dm9pZCBkZWNvZGVBdWRpb0RhdGEoUmVmPEFycmF5QnVmZmVyPiYmLCBSZWZQdHI8QXVkaW9CdWZm
ZXJDYWxsYmFjaz4mJiwgUmVmUHRyPEF1ZGlvQnVmZmVyQ2FsbGJhY2s+JiYpOworCisgICAgQXVk
aW9MaXN0ZW5lciogbGlzdGVuZXIoKSB7IHJldHVybiBtX2xpc3RlbmVyLmdldCgpOyB9CisKKyAg
ICB2b2lkIHN1c3BlbmRSZW5kZXJpbmcoRE9NUHJvbWlzZURlZmVycmVkPHZvaWQ+JiYpOworICAg
IHZvaWQgcmVzdW1lUmVuZGVyaW5nKERPTVByb21pc2VEZWZlcnJlZDx2b2lkPiYmKTsKKyAgICB2
b2lkIGNsb3NlKERPTVByb21pc2VEZWZlcnJlZDx2b2lkPiYmKTsKKworICAgIHVzaW5nIFN0YXRl
ID0gQXVkaW9Db250ZXh0U3RhdGU7CisgICAgU3RhdGUgc3RhdGUoKSBjb25zdDsKKyAgICBib29s
IGlzQ2xvc2VkKCkgY29uc3QgeyByZXR1cm4gbV9zdGF0ZSA9PSBTdGF0ZTo6Q2xvc2VkOyB9CisK
KyAgICBib29sIHdvdWxkVGFpbnRPcmlnaW4oY29uc3QgVVJMJikgY29uc3Q7CisKKyAgICAvLyBU
aGUgQXVkaW9Ob2RlIGNyZWF0ZSBtZXRob2RzIGFyZSBjYWxsZWQgb24gdGhlIG1haW4gdGhyZWFk
IChmcm9tIEphdmFTY3JpcHQpLgorICAgIEV4Y2VwdGlvbk9yPFJlZjxBdWRpb0J1ZmZlclNvdXJj
ZU5vZGU+PiBjcmVhdGVCdWZmZXJTb3VyY2UoKTsKKyNpZiBFTkFCTEUoVklERU8pCisgICAgRXhj
ZXB0aW9uT3I8UmVmPE1lZGlhRWxlbWVudEF1ZGlvU291cmNlTm9kZT4+IGNyZWF0ZU1lZGlhRWxl
bWVudFNvdXJjZShIVE1MTWVkaWFFbGVtZW50Jik7CisjZW5kaWYKKyNpZiBFTkFCTEUoTUVESUFf
U1RSRUFNKQorICAgIEV4Y2VwdGlvbk9yPFJlZjxNZWRpYVN0cmVhbUF1ZGlvU291cmNlTm9kZT4+
IGNyZWF0ZU1lZGlhU3RyZWFtU291cmNlKE1lZGlhU3RyZWFtJik7CisgICAgRXhjZXB0aW9uT3I8
UmVmPE1lZGlhU3RyZWFtQXVkaW9EZXN0aW5hdGlvbk5vZGU+PiBjcmVhdGVNZWRpYVN0cmVhbURl
c3RpbmF0aW9uKCk7CisjZW5kaWYKKyAgICBFeGNlcHRpb25PcjxSZWY8R2Fpbk5vZGU+PiBjcmVh
dGVHYWluKCk7CisgICAgRXhjZXB0aW9uT3I8UmVmPEJpcXVhZEZpbHRlck5vZGU+PiBjcmVhdGVC
aXF1YWRGaWx0ZXIoKTsKKyAgICBFeGNlcHRpb25PcjxSZWY8V2F2ZVNoYXBlck5vZGU+PiBjcmVh
dGVXYXZlU2hhcGVyKCk7CisgICAgRXhjZXB0aW9uT3I8UmVmPERlbGF5Tm9kZT4+IGNyZWF0ZURl
bGF5KGRvdWJsZSBtYXhEZWxheVRpbWUpOworICAgIEV4Y2VwdGlvbk9yPFJlZjxXZWJLaXRBdWRp
b1Bhbm5lck5vZGU+PiBjcmVhdGVQYW5uZXIoKTsKKyAgICBFeGNlcHRpb25PcjxSZWY8Q29udm9s
dmVyTm9kZT4+IGNyZWF0ZUNvbnZvbHZlcigpOworICAgIEV4Y2VwdGlvbk9yPFJlZjxEeW5hbWlj
c0NvbXByZXNzb3JOb2RlPj4gY3JlYXRlRHluYW1pY3NDb21wcmVzc29yKCk7CisgICAgRXhjZXB0
aW9uT3I8UmVmPEFuYWx5c2VyTm9kZT4+IGNyZWF0ZUFuYWx5c2VyKCk7CisgICAgRXhjZXB0aW9u
T3I8UmVmPFNjcmlwdFByb2Nlc3Nvck5vZGU+PiBjcmVhdGVTY3JpcHRQcm9jZXNzb3Ioc2l6ZV90
IGJ1ZmZlclNpemUsIHNpemVfdCBudW1iZXJPZklucHV0Q2hhbm5lbHMsIHNpemVfdCBudW1iZXJP
Zk91dHB1dENoYW5uZWxzKTsKKyAgICBFeGNlcHRpb25PcjxSZWY8Q2hhbm5lbFNwbGl0dGVyTm9k
ZT4+IGNyZWF0ZUNoYW5uZWxTcGxpdHRlcihzaXplX3QgbnVtYmVyT2ZPdXRwdXRzKTsKKyAgICBF
eGNlcHRpb25PcjxSZWY8Q2hhbm5lbE1lcmdlck5vZGU+PiBjcmVhdGVDaGFubmVsTWVyZ2VyKHNp
emVfdCBudW1iZXJPZklucHV0cyk7CisgICAgRXhjZXB0aW9uT3I8UmVmPE9zY2lsbGF0b3JOb2Rl
Pj4gY3JlYXRlT3NjaWxsYXRvcigpOworICAgIEV4Y2VwdGlvbk9yPFJlZjxQZXJpb2RpY1dhdmU+
PiBjcmVhdGVQZXJpb2RpY1dhdmUoRmxvYXQzMkFycmF5JiByZWFsLCBGbG9hdDMyQXJyYXkmIGlt
YWdpbmFyeSk7CisKKyAgICAvLyBXaGVuIGEgc291cmNlIG5vZGUgaGFzIG5vIG1vcmUgcHJvY2Vz
c2luZyB0byBkbyAoaGFzIGZpbmlzaGVkIHBsYXlpbmcpLCB0aGVuIGl0IHRlbGxzIHRoZSBjb250
ZXh0IHRvIGRlcmVmZXJlbmNlIGl0LgorICAgIHZvaWQgbm90aWZ5Tm9kZUZpbmlzaGVkUHJvY2Vz
c2luZyhBdWRpb05vZGUqKSBmaW5hbDsKKworICAgIC8vIENhbGxlZCBhdCB0aGUgc3RhcnQgb2Yg
ZWFjaCByZW5kZXIgcXVhbnR1bS4KKyAgICB2b2lkIGhhbmRsZVByZVJlbmRlclRhc2tzKCkgZmlu
YWw7CisKKyAgICAvLyBDYWxsZWQgYXQgdGhlIGVuZCBvZiBlYWNoIHJlbmRlciBxdWFudHVtLgor
ICAgIHZvaWQgaGFuZGxlUG9zdFJlbmRlclRhc2tzKCkgZmluYWw7CisKKyAgICAvLyBDYWxsZWQg
cGVyaW9kaWNhbGx5IGF0IHRoZSBlbmQgb2YgZWFjaCByZW5kZXIgcXVhbnR1bSB0byBkZXJlZmVy
ZW5jZSBmaW5pc2hlZCBzb3VyY2Ugbm9kZXMuCisgICAgdm9pZCBkZXJlZkZpbmlzaGVkU291cmNl
Tm9kZXMoKTsKKworICAgIC8vIFdlIHNjaGVkdWxlIGRlbGV0aW9uIG9mIGFsbCBtYXJrZWQgbm9k
ZXMgYXQgdGhlIGVuZCBvZiBlYWNoIHJlYWx0aW1lIHJlbmRlciBxdWFudHVtLgorICAgIHZvaWQg
bWFya0ZvckRlbGV0aW9uKEF1ZGlvTm9kZSYpIGZpbmFsOworICAgIHZvaWQgZGVsZXRlTWFya2Vk
Tm9kZXMoKSBmaW5hbDsKKworICAgIC8vIEF1ZGlvQ29udGV4dCBjYW4gcHVsbCBub2RlKHMpIGF0
IHRoZSBlbmQgb2YgZWFjaCByZW5kZXIgcXVhbnR1bSBldmVuIHdoZW4gdGhleSBhcmUgbm90IGNv
bm5lY3RlZCB0byBhbnkgZG93bnN0cmVhbSBub2Rlcy4KKyAgICAvLyBUaGVzZSB0d28gbWV0aG9k
cyBhcmUgY2FsbGVkIGJ5IHRoZSBub2RlcyB3aG8gd2FudCB0byBhZGQvcmVtb3ZlIHRoZW1zZWx2
ZXMgaW50by9mcm9tIHRoZSBhdXRvbWF0aWMgcHVsbCBsaXN0cy4KKyAgICB2b2lkIGFkZEF1dG9t
YXRpY1B1bGxOb2RlKEF1ZGlvTm9kZSYpIGZpbmFsOworICAgIHZvaWQgcmVtb3ZlQXV0b21hdGlj
UHVsbE5vZGUoQXVkaW9Ob2RlJikgZmluYWw7CisKKyAgICAvLyBDYWxsZWQgcmlnaHQgYmVmb3Jl
IGhhbmRsZVBvc3RSZW5kZXJUYXNrcygpIHRvIGhhbmRsZSBub2RlcyB3aGljaCBuZWVkIHRvIGJl
IHB1bGxlZCBldmVuIHdoZW4gdGhleSBhcmUgbm90IGNvbm5lY3RlZCB0byBhbnl0aGluZy4KKyAg
ICB2b2lkIHByb2Nlc3NBdXRvbWF0aWNQdWxsTm9kZXMoc2l6ZV90IGZyYW1lc1RvUHJvY2Vzcykg
ZmluYWw7CisKKyAgICAvLyBLZWVwcyB0cmFjayBvZiB0aGUgbnVtYmVyIG9mIGNvbm5lY3Rpb25z
IG1hZGUuCisgICAgdm9pZCBpbmNyZW1lbnRDb25uZWN0aW9uQ291bnQoKSBmaW5hbAorICAgIHsK
KyAgICAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKyAgICAgICAgbV9jb25uZWN0aW9uQ291
bnQrKzsKKyAgICB9CisKKyAgICB1bnNpZ25lZCBjb25uZWN0aW9uQ291bnQoKSBjb25zdCB7IHJl
dHVybiBtX2Nvbm5lY3Rpb25Db3VudDsgfQorCisgICAgLy8KKyAgICAvLyBUaHJlYWQgU2FmZXR5
IGFuZCBHcmFwaCBMb2NraW5nOgorICAgIC8vCisKKyAgICB2b2lkIHNldEF1ZGlvVGhyZWFkKFRo
cmVhZCYgdGhyZWFkKSBmaW5hbCB7IG1fYXVkaW9UaHJlYWQgPSAmdGhyZWFkOyB9IC8vIEZJWE1F
OiBjaGVjayBlaXRoZXIgbm90IGluaXRpYWxpemVkIG9yIHRoZSBzYW1lCisgICAgVGhyZWFkKiBh
dWRpb1RocmVhZCgpIGNvbnN0IHsgcmV0dXJuIG1fYXVkaW9UaHJlYWQ7IH0KKyAgICBib29sIGlz
QXVkaW9UaHJlYWQoKSBjb25zdCBmaW5hbDsKKworICAgIC8vIFJldHVybnMgdHJ1ZSBvbmx5IGFm
dGVyIHRoZSBhdWRpbyB0aHJlYWQgaGFzIGJlZW4gc3RhcnRlZCBhbmQgdGhlbiBzaHV0ZG93bi4K
KyAgICBib29sIGlzQXVkaW9UaHJlYWRGaW5pc2hlZCgpIGZpbmFsIHsgcmV0dXJuIG1faXNBdWRp
b1RocmVhZEZpbmlzaGVkOyB9CisKKyAgICAvLyBtdXN0UmVsZWFzZUxvY2sgaXMgc2V0IHRvIHRy
dWUgaWYgd2UgYWNxdWlyZWQgdGhlIGxvY2sgaW4gdGhpcyBtZXRob2QgY2FsbCBhbmQgY2FsbGVy
IG11c3QgdW5sb2NrKCksIGZhbHNlIGlmIGl0IHdhcyBwcmV2aW91c2x5IGFjcXVpcmVkLgorICAg
IHZvaWQgbG9jayhib29sJiBtdXN0UmVsZWFzZUxvY2spIGZpbmFsOworCisgICAgLy8gUmV0dXJu
cyB0cnVlIGlmIHdlIG93biB0aGUgbG9jay4KKyAgICAvLyBtdXN0UmVsZWFzZUxvY2sgaXMgc2V0
IHRvIHRydWUgaWYgd2UgYWNxdWlyZWQgdGhlIGxvY2sgaW4gdGhpcyBtZXRob2QgY2FsbCBhbmQg
Y2FsbGVyIG11c3QgdW5sb2NrKCksIGZhbHNlIGlmIGl0IHdhcyBwcmV2aW91c2x5IGFjcXVpcmVk
LgorICAgIGJvb2wgdHJ5TG9jayhib29sJiBtdXN0UmVsZWFzZUxvY2spIGZpbmFsOworCisgICAg
dm9pZCB1bmxvY2soKSBmaW5hbDsKKworICAgIC8vIFJldHVybnMgdHJ1ZSBpZiB0aGlzIHRocmVh
ZCBvd25zIHRoZSBjb250ZXh0J3MgbG9jay4KKyAgICBib29sIGlzR3JhcGhPd25lcigpIGNvbnN0
IGZpbmFsOworCisgICAgLy8gUmV0dXJucyB0aGUgbWF4aW11bSBudW1iZXIgb2YgY2hhbm5lbHMg
d2UgY2FuIHN1cHBvcnQuCisgICAgc3RhdGljIHVuc2lnbmVkIG1heE51bWJlck9mQ2hhbm5lbHMo
KSB7IHJldHVybiBNYXhOdW1iZXJPZkNoYW5uZWxzOyB9CisKKyAgICAvLyBJbiBBdWRpb05vZGU6
OmRlcmVmKCkgYSB0cnlMb2NrKCkgaXMgdXNlZCBmb3IgY2FsbGluZyBmaW5pc2hEZXJlZigpLCBi
dXQgaWYgaXQgZmFpbHMga2VlcCB0cmFjayBoZXJlLgorICAgIHZvaWQgYWRkRGVmZXJyZWRGaW5p
c2hEZXJlZihBdWRpb05vZGUqKSBmaW5hbDsKKworICAgIC8vIEluIHRoZSBhdWRpbyB0aHJlYWQg
YXQgdGhlIHN0YXJ0IG9mIGVhY2ggcmVuZGVyIGN5Y2xlLCB3ZSdsbCBjYWxsIGhhbmRsZURlZmVy
cmVkRmluaXNoRGVyZWZzKCkuCisgICAgdm9pZCBoYW5kbGVEZWZlcnJlZEZpbmlzaERlcmVmcygp
OworCisgICAgLy8gT25seSBhY2Nlc3NlZCB3aGVuIHRoZSBncmFwaCBsb2NrIGlzIGhlbGQuCisg
ICAgdm9pZCBtYXJrU3VtbWluZ0p1bmN0aW9uRGlydHkoQXVkaW9TdW1taW5nSnVuY3Rpb24qKSBm
aW5hbDsKKyAgICB2b2lkIG1hcmtBdWRpb05vZGVPdXRwdXREaXJ0eShBdWRpb05vZGVPdXRwdXQq
KSBmaW5hbDsKKworICAgIC8vIE11c3QgYmUgY2FsbGVkIG9uIG1haW4gdGhyZWFkLgorICAgIHZv
aWQgcmVtb3ZlTWFya2VkU3VtbWluZ0p1bmN0aW9uKEF1ZGlvU3VtbWluZ0p1bmN0aW9uKikgZmlu
YWw7CisKKyAgICAvLyBFdmVudFRhcmdldAorICAgIEV2ZW50VGFyZ2V0SW50ZXJmYWNlIGV2ZW50
VGFyZ2V0SW50ZXJmYWNlKCkgY29uc3QgZmluYWwgeyByZXR1cm4gV2ViS2l0QXVkaW9Db250ZXh0
RXZlbnRUYXJnZXRJbnRlcmZhY2VUeXBlOyB9CisKKyAgICB2b2lkIHN0YXJ0UmVuZGVyaW5nKCk7
CisgICAgdm9pZCBmaW5pc2hlZFJlbmRlcmluZyhib29sIGRpZFJlbmRlcmluZykgZmluYWw7CisK
KyAgICBzdGF0aWMgdW5zaWduZWQgc19oYXJkd2FyZUNvbnRleHRDb3VudDsKKworICAgIC8vIFJl
c3RyaWN0aW9ucyB0byBjaGFuZ2UgZGVmYXVsdCBiZWhhdmlvcnMuCisgICAgQmVoYXZpb3JSZXN0
cmljdGlvbnMgYmVoYXZpb3JSZXN0cmljdGlvbnMoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX3Jl
c3RyaWN0aW9uczsgfQorICAgIHZvaWQgYWRkQmVoYXZpb3JSZXN0cmljdGlvbihCZWhhdmlvclJl
c3RyaWN0aW9ucyByZXN0cmljdGlvbikgZmluYWwgeyBtX3Jlc3RyaWN0aW9ucyB8PSByZXN0cmlj
dGlvbjsgfQorICAgIHZvaWQgcmVtb3ZlQmVoYXZpb3JSZXN0cmljdGlvbihCZWhhdmlvclJlc3Ry
aWN0aW9ucyByZXN0cmljdGlvbikgZmluYWwgeyBtX3Jlc3RyaWN0aW9ucyAmPSB+cmVzdHJpY3Rp
b247IH0KKworICAgIHZvaWQgaXNQbGF5aW5nQXVkaW9EaWRDaGFuZ2UoKSBmaW5hbDsKKworICAg
IHZvaWQgbm9kZVdpbGxCZWdpblBsYXliYWNrKCkgZmluYWw7CisKKyNpZiAhUkVMRUFTRV9MT0df
RElTQUJMRUQKKyAgICBjb25zdCBMb2dnZXImIGxvZ2dlcigpIGNvbnN0IGZpbmFsIHsgcmV0dXJu
IG1fbG9nZ2VyLmdldCgpOyB9CisgICAgY29uc3Qgdm9pZCogbG9nSWRlbnRpZmllcigpIGNvbnN0
IGZpbmFsIHsgcmV0dXJuIG1fbG9nSWRlbnRpZmllcjsgfQorICAgIFdURkxvZ0NoYW5uZWwmIGxv
Z0NoYW5uZWwoKSBjb25zdCBmaW5hbDsKKyAgICBjb25zdCB2b2lkKiBuZXh0QXVkaW9Ob2RlTG9n
SWRlbnRpZmllcigpIGZpbmFsIHsgcmV0dXJuIGNoaWxkTG9nSWRlbnRpZmllcihtX2xvZ0lkZW50
aWZpZXIsICsrbV9uZXh0QXVkaW9Ob2RlSWRlbnRpZmllcik7IH0KKyAgICBjb25zdCB2b2lkKiBu
ZXh0QXVkaW9QYXJhbWV0ZXJMb2dJZGVudGlmaWVyKCkgZmluYWwgeyByZXR1cm4gY2hpbGRMb2dJ
ZGVudGlmaWVyKG1fbG9nSWRlbnRpZmllciwgKyttX25leHRBdWRpb1BhcmFtZXRlcklkZW50aWZp
ZXIpOyB9CisjZW5kaWYKKworICAgIHZvaWQgcG9zdFRhc2soV1RGOjpGdW5jdGlvbjx2b2lkKCk+
JiYpIGZpbmFsOworICAgIGJvb2wgaXNTdG9wcGVkKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9p
c1N0b3BTY2hlZHVsZWQ7IH0KKyAgICBjb25zdCBTZWN1cml0eU9yaWdpbiogb3JpZ2luKCkgY29u
c3QgZmluYWw7CisgICAgdm9pZCBhZGRDb25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNlLCBNZXNz
YWdlTGV2ZWwsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSkgZmluYWw7CisKK3Byb3RlY3RlZDoKKyAg
ICBleHBsaWNpdCBXZWJLaXRBdWRpb0NvbnRleHQoRG9jdW1lbnQmKTsKKyAgICBXZWJLaXRBdWRp
b0NvbnRleHQoRG9jdW1lbnQmLCBBdWRpb0J1ZmZlciogcmVuZGVyVGFyZ2V0KTsKKworICAgIHN0
YXRpYyBib29sIGlzU2FtcGxlUmF0ZVJhbmdlR29vZChmbG9hdCBzYW1wbGVSYXRlKTsKKyAgICB2
b2lkIGNsZWFyUGVuZGluZ0FjdGl2aXR5KCk7CisgICAgdm9pZCBtYWtlUGVuZGluZ0FjdGl2aXR5
KCk7CisKK3ByaXZhdGU6CisgICAgdm9pZCBjb25zdHJ1Y3RDb21tb24oKTsKKworICAgIHZvaWQg
bGF6eUluaXRpYWxpemUoKTsKKyAgICB2b2lkIHVuaW5pdGlhbGl6ZSgpOworCisgICAgYm9vbCB3
aWxsQmVnaW5QbGF5YmFjaygpOworICAgIGJvb2wgd2lsbFBhdXNlUGxheWJhY2soKTsKKworICAg
IGJvb2wgdXNlckdlc3R1cmVSZXF1aXJlZEZvckF1ZGlvU3RhcnQoKSBjb25zdCB7IHJldHVybiAh
aXNPZmZsaW5lQ29udGV4dCgpICYmIG1fcmVzdHJpY3Rpb25zICYgUmVxdWlyZVVzZXJHZXN0dXJl
Rm9yQXVkaW9TdGFydFJlc3RyaWN0aW9uOyB9CisgICAgYm9vbCBwYWdlQ29uc2VudFJlcXVpcmVk
Rm9yQXVkaW9TdGFydCgpIGNvbnN0IHsgcmV0dXJuICFpc09mZmxpbmVDb250ZXh0KCkgJiYgbV9y
ZXN0cmljdGlvbnMgJiBSZXF1aXJlUGFnZUNvbnNlbnRGb3JBdWRpb1N0YXJ0UmVzdHJpY3Rpb247
IH0KKworICAgIHZvaWQgc2V0U3RhdGUoU3RhdGUpOworCisgICAgdm9pZCBjbGVhcigpOworCisg
ICAgdm9pZCBzY2hlZHVsZU5vZGVEZWxldGlvbigpOworCisgICAgdm9pZCBtZWRpYUNhblN0YXJ0
KERvY3VtZW50Jikgb3ZlcnJpZGU7CisKKyAgICAvLyBFdmVudFRhcmdldAorICAgIHZvaWQgZGlz
cGF0Y2hFdmVudChFdmVudCYpIGZpbmFsOworCisgICAgLy8gTWVkaWFQcm9kdWNlcgorICAgIE1l
ZGlhUHJvZHVjZXI6Ok1lZGlhU3RhdGVGbGFncyBtZWRpYVN0YXRlKCkgY29uc3Qgb3ZlcnJpZGU7
CisgICAgdm9pZCBwYWdlTXV0ZWRTdGF0ZURpZENoYW5nZSgpIG92ZXJyaWRlOworCisgICAgLy8g
VGhlIGNvbnRleHQgaXRzZWxmIGtlZXBzIGEgcmVmZXJlbmNlIHRvIGFsbCBzb3VyY2Ugbm9kZXMu
ICBUaGUgc291cmNlIG5vZGVzLCB0aGVuIHJlZmVyZW5jZSBhbGwgbm9kZXMgdGhleSdyZSBjb25u
ZWN0ZWQgdG8uCisgICAgLy8gSW4gdHVybiwgdGhlc2Ugbm9kZXMgcmVmZXJlbmNlIGFsbCBub2Rl
cyB0aGV5J3JlIGNvbm5lY3RlZCB0by4gIEFsbCBub2RlcyBhcmUgdWx0aW1hdGVseSBjb25uZWN0
ZWQgdG8gdGhlIEF1ZGlvRGVzdGluYXRpb25Ob2RlLgorICAgIC8vIFdoZW4gdGhlIGNvbnRleHQg
ZGVyZWZlcmVuY2VzIGEgc291cmNlIG5vZGUsIGl0IHdpbGwgYmUgZGVhY3RpdmF0ZWQgZnJvbSB0
aGUgcmVuZGVyaW5nIGdyYXBoIGFsb25nIHdpdGggYWxsIG90aGVyIG5vZGVzIGl0IGlzCisgICAg
Ly8gdW5pcXVlbHkgY29ubmVjdGVkIHRvLiAgU2VlIHRoZSBBdWRpb05vZGU6OnJlZigpIGFuZCBB
dWRpb05vZGU6OmRlcmVmKCkgbWV0aG9kcyBmb3IgbW9yZSBkZXRhaWxzLgorICAgIHZvaWQgcmVm
Tm9kZShBdWRpb05vZGUmKTsKKyAgICB2b2lkIGRlcmVmTm9kZShBdWRpb05vZGUmKTsKKworICAg
IC8vIEFjdGl2ZURPTU9iamVjdCBBUEkuCisgICAgdm9pZCBzdXNwZW5kKFJlYXNvbkZvclN1c3Bl
bnNpb24pIGZpbmFsOworICAgIHZvaWQgcmVzdW1lKCkgZmluYWw7CisgICAgdm9pZCBzdG9wKCkg
b3ZlcnJpZGU7CisgICAgY29uc3QgY2hhciogYWN0aXZlRE9NT2JqZWN0TmFtZSgpIGNvbnN0IG92
ZXJyaWRlOworCisgICAgLy8gV2hlbiB0aGUgY29udGV4dCBnb2VzIGF3YXksIHRoZXJlIG1pZ2h0
IHN0aWxsIGJlIHNvbWUgc291cmNlcyB3aGljaCBoYXZlbid0IGZpbmlzaGVkIHBsYXlpbmcuCisg
ICAgLy8gTWFrZSBzdXJlIHRvIGRlcmVmZXJlbmNlIHRoZW0gaGVyZS4KKyAgICB2b2lkIGRlcmVm
VW5maW5pc2hlZFNvdXJjZU5vZGVzKCk7CisKKyAgICAvLyBQbGF0Zm9ybU1lZGlhU2Vzc2lvbkNs
aWVudAorICAgIFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpNZWRpYVR5cGUgbWVkaWFUeXBlKCkgY29u
c3Qgb3ZlcnJpZGUgeyByZXR1cm4gUGxhdGZvcm1NZWRpYVNlc3Npb246Ok1lZGlhVHlwZTo6V2Vi
QXVkaW87IH0KKyAgICBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6TWVkaWFUeXBlIHByZXNlbnRhdGlv
blR5cGUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6TWVk
aWFUeXBlOjpXZWJBdWRpbzsgfQorICAgIHZvaWQgbWF5UmVzdW1lUGxheWJhY2soYm9vbCBzaG91
bGRSZXN1bWUpIG92ZXJyaWRlOworICAgIHZvaWQgc3VzcGVuZFBsYXliYWNrKCkgb3ZlcnJpZGU7
CisgICAgYm9vbCBjYW5SZWNlaXZlUmVtb3RlQ29udHJvbENvbW1hbmRzKCkgY29uc3Qgb3ZlcnJp
ZGUgeyByZXR1cm4gZmFsc2U7IH0KKyAgICB2b2lkIGRpZFJlY2VpdmVSZW1vdGVDb250cm9sQ29t
bWFuZChQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6UmVtb3RlQ29udHJvbENvbW1hbmRUeXBlLCBjb25z
dCBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6UmVtb3RlQ29tbWFuZEFyZ3VtZW50Kikgb3ZlcnJpZGUg
eyB9CisgICAgYm9vbCBzdXBwb3J0c1NlZWtpbmcoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBm
YWxzZTsgfQorICAgIGJvb2wgc2hvdWxkT3ZlcnJpZGVCYWNrZ3JvdW5kUGxheWJhY2tSZXN0cmlj
dGlvbihQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6SW50ZXJydXB0aW9uVHlwZSkgY29uc3Qgb3ZlcnJp
ZGUgeyByZXR1cm4gZmFsc2U7IH0KKyAgICBib29sIGNhblByb2R1Y2VBdWRpbygpIGNvbnN0IGZp
bmFsIHsgcmV0dXJuIHRydWU7IH0KKyAgICBib29sIGlzU3VzcGVuZGVkKCkgY29uc3QgZmluYWw7
CisKKyAgICB2b2lkIHZpc2liaWxpdHlTdGF0ZUNoYW5nZWQoKSBmaW5hbDsKKworICAgIGJvb2wg
aXNBdWRpb0NvbnRleHQoKSBjb25zdCBmaW5hbCB7IHJldHVybiBmYWxzZTsgfQorICAgIGJvb2wg
aXNXZWJLaXRBdWRpb0NvbnRleHQoKSBjb25zdCBmaW5hbCB7IHJldHVybiB0cnVlOyB9CisKKyAg
ICB2b2lkIGhhbmRsZURpcnR5QXVkaW9TdW1taW5nSnVuY3Rpb25zKCk7CisgICAgdm9pZCBoYW5k
bGVEaXJ0eUF1ZGlvTm9kZU91dHB1dHMoKTsKKworICAgIHZvaWQgYWRkUmVhY3Rpb24oU3RhdGUs
IERPTVByb21pc2VEZWZlcnJlZDx2b2lkPiYmKTsKKyAgICB2b2lkIHVwZGF0ZUF1dG9tYXRpY1B1
bGxOb2RlcygpOworCisjaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECisgICAgY29uc3QgY2hhciog
bG9nQ2xhc3NOYW1lKCkgY29uc3QgZmluYWwgeyByZXR1cm4gIldlYktpdEF1ZGlvQ29udGV4dCI7
IH0KKworICAgIFJlZjxMb2dnZXI+IG1fbG9nZ2VyOworICAgIGNvbnN0IHZvaWQqIG1fbG9nSWRl
bnRpZmllcjsKKyAgICB1aW50NjRfdCBtX25leHRBdWRpb05vZGVJZGVudGlmaWVyIHsgMCB9Owor
ICAgIHVpbnQ2NF90IG1fbmV4dEF1ZGlvUGFyYW1ldGVySWRlbnRpZmllciB7IDAgfTsKKyNlbmRp
ZgorCisgICAgLy8gT25seSBhY2Nlc3NlZCBpbiB0aGUgYXVkaW8gdGhyZWFkLgorICAgIFZlY3Rv
cjxBdWRpb05vZGUqPiBtX2ZpbmlzaGVkTm9kZXM7CisKKyAgICAvLyBXZSBkb24ndCB1c2UgUmVm
UHRyPEF1ZGlvTm9kZT4gaGVyZSBiZWNhdXNlIEF1ZGlvTm9kZSBoYXMgYSBtb3JlIGNvbXBsZXgg
cmVmKCkgLyBkZXJlZigpIGltcGxlbWVudGF0aW9uCisgICAgLy8gd2l0aCBhbiBvcHRpb25hbCBh
cmd1bWVudCBmb3IgcmVmVHlwZS4gIFdlIG5lZWQgdG8gdXNlIHRoZSBzcGVjaWFsIHJlZlR5cGU6
IFJlZlR5cGVDb25uZWN0aW9uCisgICAgLy8gRWl0aGVyIGFjY2Vzc2VkIHdoZW4gdGhlIGdyYXBo
IGxvY2sgaXMgaGVsZCwgb3Igb24gdGhlIG1haW4gdGhyZWFkIHdoZW4gdGhlIGF1ZGlvIHRocmVh
ZCBoYXMgZmluaXNoZWQuCisgICAgVmVjdG9yPEF1ZGlvTm9kZSo+IG1fcmVmZXJlbmNlZE5vZGVz
OworCisgICAgLy8gQWNjdW11bGF0ZSBub2RlcyB3aGljaCBuZWVkIHRvIGJlIGRlbGV0ZWQgaGVy
ZS4KKyAgICAvLyBUaGlzIGlzIGNvcGllZCB0byBtX25vZGVzVG9EZWxldGUgYXQgdGhlIGVuZCBv
ZiBhIHJlbmRlciBjeWNsZSBpbiBoYW5kbGVQb3N0UmVuZGVyVGFza3MoKSwgd2hlcmUgd2UncmUg
YXNzdXJlZCBvZiBhIHN0YWJsZSBncmFwaAorICAgIC8vIHN0YXRlIHdoaWNoIHdpbGwgaGF2ZSBu
byByZWZlcmVuY2VzIHRvIGFueSBvZiB0aGUgbm9kZXMgaW4gbV9ub2Rlc1RvRGVsZXRlIG9uY2Ug
dGhlIGNvbnRleHQgbG9jayBpcyByZWxlYXNlZAorICAgIC8vICh3aGVuIGhhbmRsZVBvc3RSZW5k
ZXJUYXNrcygpIGhhcyBjb21wbGV0ZWQpLgorICAgIFZlY3RvcjxBdWRpb05vZGUqPiBtX25vZGVz
TWFya2VkRm9yRGVsZXRpb247CisKKyAgICAvLyBUaGV5IHdpbGwgYmUgc2NoZWR1bGVkIGZvciBk
ZWxldGlvbiAob24gdGhlIG1haW4gdGhyZWFkKSBhdCB0aGUgZW5kIG9mIGEgcmVuZGVyIGN5Y2xl
IChpbiByZWFsdGltZSB0aHJlYWQpLgorICAgIFZlY3RvcjxBdWRpb05vZGUqPiBtX25vZGVzVG9E
ZWxldGU7CisKKyAgICBib29sIG1faXNEZWxldGlvblNjaGVkdWxlZCB7IGZhbHNlIH07CisgICAg
Ym9vbCBtX2lzU3RvcFNjaGVkdWxlZCB7IGZhbHNlIH07CisgICAgYm9vbCBtX2lzSW5pdGlhbGl6
ZWQgeyBmYWxzZSB9OworICAgIGJvb2wgbV9pc0F1ZGlvVGhyZWFkRmluaXNoZWQgeyBmYWxzZSB9
OworICAgIGJvb2wgbV9hdXRvbWF0aWNQdWxsTm9kZXNOZWVkVXBkYXRpbmcgeyBmYWxzZSB9Owor
ICAgIGJvb2wgbV9pc09mZmxpbmVDb250ZXh0IHsgZmFsc2UgfTsKKworICAgIC8vIE9ubHkgYWNj
ZXNzZWQgd2hlbiB0aGUgZ3JhcGggbG9jayBpcyBoZWxkLgorICAgIEhhc2hTZXQ8QXVkaW9TdW1t
aW5nSnVuY3Rpb24qPiBtX2RpcnR5U3VtbWluZ0p1bmN0aW9uczsKKyAgICBIYXNoU2V0PEF1ZGlv
Tm9kZU91dHB1dCo+IG1fZGlydHlBdWRpb05vZGVPdXRwdXRzOworCisgICAgLy8gRm9yIHRoZSBz
YWtlIG9mIHRocmVhZCBzYWZldHksIHdlIG1haW50YWluIGEgc2VwZXJhdGUgVmVjdG9yIG9mIGF1
dG9tYXRpYyBwdWxsIG5vZGVzIGZvciByZW5kZXJpbmcgaW4gbV9yZW5kZXJpbmdBdXRvbWF0aWNQ
dWxsTm9kZXMuCisgICAgLy8gSXQgd2lsbCBiZSBjb3BpZWQgZnJvbSBtX2F1dG9tYXRpY1B1bGxO
b2RlcyBieSB1cGRhdGVBdXRvbWF0aWNQdWxsTm9kZXMoKSBhdCB0aGUgdmVyeSBzdGFydCBvciBl
bmQgb2YgdGhlIHJlbmRlcmluZyBxdWFudHVtLgorICAgIEhhc2hTZXQ8QXVkaW9Ob2RlKj4gbV9h
dXRvbWF0aWNQdWxsTm9kZXM7CisgICAgVmVjdG9yPEF1ZGlvTm9kZSo+IG1fcmVuZGVyaW5nQXV0
b21hdGljUHVsbE5vZGVzOworICAgIC8vIE9ubHkgYWNjZXNzZWQgaW4gdGhlIGF1ZGlvIHRocmVh
ZC4KKyAgICBWZWN0b3I8QXVkaW9Ob2RlKj4gbV9kZWZlcnJlZEZpbmlzaERlcmVmTGlzdDsKKyAg
ICBWZWN0b3I8VmVjdG9yPERPTVByb21pc2VEZWZlcnJlZDx2b2lkPj4+IG1fc3RhdGVSZWFjdGlv
bnM7CisKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8UGxhdGZvcm1NZWRpYVNlc3Npb24+IG1fbWVkaWFT
ZXNzaW9uOworICAgIFVuaXF1ZVJlZjxNYWluVGhyZWFkR2VuZXJpY0V2ZW50UXVldWU+IG1fZXZl
bnRRdWV1ZTsKKworICAgIFJlZlB0cjxBdWRpb0J1ZmZlcj4gbV9yZW5kZXJUYXJnZXQ7CisgICAg
UmVmUHRyPEF1ZGlvRGVzdGluYXRpb25Ob2RlPiBtX2Rlc3RpbmF0aW9uTm9kZTsKKyAgICBSZWZQ
dHI8QXVkaW9MaXN0ZW5lcj4gbV9saXN0ZW5lcjsKKworICAgIHVuc2lnbmVkIG1fY29ubmVjdGlv
bkNvdW50IHsgMCB9OworCisgICAgLy8gR3JhcGggbG9ja2luZy4KKyAgICBMb2NrIG1fY29udGV4
dEdyYXBoTXV0ZXg7CisgICAgLy8gRklYTUU6IFVzaW5nIHZvbGF0aWxlIHNlZW1zIGluY29ycmVj
dC4KKyAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTgwMzMy
CisgICAgVGhyZWFkKiB2b2xhdGlsZSBtX2F1ZGlvVGhyZWFkIHsgbnVsbHB0ciB9OworICAgIFRo
cmVhZCogdm9sYXRpbGUgbV9ncmFwaE93bmVyVGhyZWFkIHsgbnVsbHB0ciB9OyAvLyBpZiB0aGUg
bG9jayBpcyBoZWxkIHRoZW4gdGhpcyBpcyB0aGUgdGhyZWFkIHdoaWNoIG93bnMgaXQsIG90aGVy
d2lzZSA9PSBudWxscHRyLgorCisgICAgc3RkOjp1bmlxdWVfcHRyPEFzeW5jQXVkaW9EZWNvZGVy
PiBtX2F1ZGlvRGVjb2RlcjsKKworICAgIC8vIFRoaXMgaXMgY29uc2lkZXJpbmcgMzIgaXMgbGFy
Z2UgZW5vdWdoIGZvciBtdWx0aXBsZSBjaGFubmVscyBhdWRpby4KKyAgICAvLyBJdCBpcyBzb21l
d2hhdCBhcmJpdHJhcnkgYW5kIGNvdWxkIGJlIGluY3JlYXNlZCBpZiBuZWNlc3NhcnkuCisgICAg
ZW51bSB7IE1heE51bWJlck9mQ2hhbm5lbHMgPSAzMiB9OworCisgICAgLy8gTnVtYmVyIG9mIEF1
ZGlvQnVmZmVyU291cmNlTm9kZXMgdGhhdCBhcmUgYWN0aXZlIChwbGF5aW5nKS4KKyAgICBzdGQ6
OmF0b21pYzxpbnQ+IG1fYWN0aXZlU291cmNlQ291bnQgeyAwIH07CisKKyAgICBCZWhhdmlvclJl
c3RyaWN0aW9ucyBtX3Jlc3RyaWN0aW9ucyB7IE5vUmVzdHJpY3Rpb25zIH07CisKKyAgICBTdGF0
ZSBtX3N0YXRlIHsgU3RhdGU6OlN1c3BlbmRlZCB9OworICAgIFJlZlB0cjxQZW5kaW5nQWN0aXZp
dHk8V2ViS2l0QXVkaW9Db250ZXh0Pj4gbV9wZW5kaW5nQWN0aXZpdHk7Cit9OworCitpbmxpbmUg
QXVkaW9Db250ZXh0U3RhdGUgV2ViS2l0QXVkaW9Db250ZXh0OjpzdGF0ZSgpIGNvbnN0Cit7Cisg
ICAgcmV0dXJuIG1fc3RhdGU7Cit9CisKK30gLy8gV2ViQ29yZQorCitTUEVDSUFMSVpFX1RZUEVf
VFJBSVRTX0JFR0lOKFdlYkNvcmU6OldlYktpdEF1ZGlvQ29udGV4dCkKKyAgICBzdGF0aWMgYm9v
bCBpc1R5cGUoY29uc3QgV2ViQ29yZTo6QXVkaW9Db250ZXh0QmFzZSYgY29udGV4dCkgeyByZXR1
cm4gY29udGV4dC5pc1dlYktpdEF1ZGlvQ29udGV4dCgpOyB9CitTUEVDSUFMSVpFX1RZUEVfVFJB
SVRTX0VORCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1dl
YktpdEF1ZGlvQ29udGV4dC5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1dl
YktpdEF1ZGlvQ29udGV4dC5pZGwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNTY5NWM3MzY2OTg2NzhlYjM2ZWQ2NDg5
M2JkMDJiNGNkOGJkZTAwYgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViYXVkaW8vV2ViS2l0QXVkaW9Db250ZXh0LmlkbApAQCAtMCwwICsxLDkzIEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDEwLCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICogQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuICBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElF
RAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OCisgKiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKKyAqIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKK1sKKyAgICBBY3RpdmVET01PYmplY3QsCisgICAgQ29uZGl0aW9uYWw9V0VCX0FVRElP
LAorICAgIEVuYWJsZWRCeVNldHRpbmc9V2ViQXVkaW8sCisgICAgRXhwb3J0TWFjcm89V0VCQ09S
RV9FWFBPUlQsCisgICAgSW50ZXJmYWNlTmFtZT13ZWJraXRBdWRpb0NvbnRleHQsCitdIGludGVy
ZmFjZSBXZWJLaXRBdWRpb0NvbnRleHQgOiBFdmVudFRhcmdldCB7CisgICAgW0NhbGxXaXRoPURv
Y3VtZW50LCBNYXlUaHJvd0V4Y2VwdGlvbl0gY29uc3RydWN0b3IoKTsKKworICAgIC8vIEFsbCBy
ZW5kZXJlZCBhdWRpbyB1bHRpbWF0ZWx5IGNvbm5lY3RzIHRvIGRlc3RpbmF0aW9uLCB3aGljaCBy
ZXByZXNlbnRzIHRoZSBhdWRpbyBoYXJkd2FyZS4KKyAgICByZWFkb25seSBhdHRyaWJ1dGUgQXVk
aW9EZXN0aW5hdGlvbk5vZGUgZGVzdGluYXRpb247CisKKyAgICAvLyBBbGwgc2NoZWR1bGVkIHRp
bWVzIGFyZSByZWxhdGl2ZSB0byB0aGlzIHRpbWUgaW4gc2Vjb25kcy4KKyAgICByZWFkb25seSBh
dHRyaWJ1dGUgdW5yZXN0cmljdGVkIGRvdWJsZSBjdXJyZW50VGltZTsKKworICAgIC8vIEFsbCBB
dWRpb05vZGVzIGluIHRoZSBjb250ZXh0IHJ1biBhdCB0aGlzIHNhbXBsZS1yYXRlIChzYW1wbGUt
ZnJhbWVzIHBlciBzZWNvbmQpLgorICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSB1bnJlc3RyaWN0ZWQg
ZmxvYXQgc2FtcGxlUmF0ZTsKKworICAgIC8vIEFsbCBwYW5uaW5nIGlzIHJlbGF0aXZlIHRvIHRo
aXMgbGlzdGVuZXIuCisgICAgcmVhZG9ubHkgYXR0cmlidXRlIEF1ZGlvTGlzdGVuZXIgbGlzdGVu
ZXI7CisKKyAgICBbSW1wbGVtZW50ZWRBcz1zdXNwZW5kUmVuZGVyaW5nXSBQcm9taXNlPHZvaWQ+
IHN1c3BlbmQoKTsKKyAgICBbSW1wbGVtZW50ZWRBcz1yZXN1bWVSZW5kZXJpbmddIFByb21pc2U8
dm9pZD4gcmVzdW1lKCk7CisgICAgUHJvbWlzZTx2b2lkPiBjbG9zZSgpOworCisgICAgcmVhZG9u
bHkgYXR0cmlidXRlIEF1ZGlvQ29udGV4dFN0YXRlIHN0YXRlOworICAgIGF0dHJpYnV0ZSBFdmVu
dEhhbmRsZXIgb25zdGF0ZWNoYW5nZTsKKworICAgIC8vIE51bWJlciBvZiBBdWRpb0J1ZmZlclNv
dXJjZU5vZGVzIHRoYXQgYXJlIGN1cnJlbnRseSBwbGF5aW5nLgorICAgIHJlYWRvbmx5IGF0dHJp
YnV0ZSB1bnNpZ25lZCBsb25nIGFjdGl2ZVNvdXJjZUNvdW50OworCisgICAgW01heVRocm93RXhj
ZXB0aW9uXSBBdWRpb0J1ZmZlciBjcmVhdGVCdWZmZXIodW5zaWduZWQgbG9uZyBudW1iZXJPZkNo
YW5uZWxzLCB1bnNpZ25lZCBsb25nIG51bWJlck9mRnJhbWVzLCB1bnJlc3RyaWN0ZWQgZmxvYXQg
c2FtcGxlUmF0ZSk7CisgICAgW01heVRocm93RXhjZXB0aW9uXSBBdWRpb0J1ZmZlciBjcmVhdGVC
dWZmZXIoQXJyYXlCdWZmZXIgYnVmZmVyLCBib29sZWFuIG1peFRvTW9ubyk7CisKKyAgICAvLyBB
c3luY2hyb25vdXMgYXVkaW8gZmlsZSBkYXRhIGRlY29kaW5nLgorICAgIC8vIEZJWE1FOiBzdWNj
ZXNzQ2FsbGJhY2sgc2hvdWxkIGJlIG9wdGlvbmFsIGFuZCB0aGUgY2FsbGJhY2tzIHNob3VsZCBu
b3QgYmUgbnVsbGFibGUuIFRoaXMgc2hvdWxkIGFsc28gcmV0dXJuIGEgUHJvbWlzZS4KKyAgICB2
b2lkIGRlY29kZUF1ZGlvRGF0YShBcnJheUJ1ZmZlciBhdWRpb0RhdGEsIEF1ZGlvQnVmZmVyQ2Fs
bGJhY2s/IHN1Y2Nlc3NDYWxsYmFjaywgb3B0aW9uYWwgQXVkaW9CdWZmZXJDYWxsYmFjaz8gZXJy
b3JDYWxsYmFjayk7CisKKyAgICAvLyBTb3VyY2VzCisgICAgW01heVRocm93RXhjZXB0aW9uXSBB
dWRpb0J1ZmZlclNvdXJjZU5vZGUgY3JlYXRlQnVmZmVyU291cmNlKCk7CisKKyAgICBbQ29uZGl0
aW9uYWw9VklERU8sIE1heVRocm93RXhjZXB0aW9uXSBNZWRpYUVsZW1lbnRBdWRpb1NvdXJjZU5v
ZGUgY3JlYXRlTWVkaWFFbGVtZW50U291cmNlKEhUTUxNZWRpYUVsZW1lbnQgbWVkaWFFbGVtZW50
KTsKKworICAgIFtDb25kaXRpb25hbD1NRURJQV9TVFJFQU0sIE1heVRocm93RXhjZXB0aW9uXSBN
ZWRpYVN0cmVhbUF1ZGlvU291cmNlTm9kZSBjcmVhdGVNZWRpYVN0cmVhbVNvdXJjZShNZWRpYVN0
cmVhbSBtZWRpYVN0cmVhbSk7CisgICAgW0NvbmRpdGlvbmFsPU1FRElBX1NUUkVBTSwgTWF5VGhy
b3dFeGNlcHRpb25dIE1lZGlhU3RyZWFtQXVkaW9EZXN0aW5hdGlvbk5vZGUgY3JlYXRlTWVkaWFT
dHJlYW1EZXN0aW5hdGlvbigpOworCisgICAgLy8gUHJvY2Vzc2luZyBub2RlcworICAgIFtNYXlU
aHJvd0V4Y2VwdGlvbl0gR2Fpbk5vZGUgY3JlYXRlR2FpbigpOworICAgIFtNYXlUaHJvd0V4Y2Vw
dGlvbl0gRGVsYXlOb2RlIGNyZWF0ZURlbGF5KG9wdGlvbmFsIHVucmVzdHJpY3RlZCBkb3VibGUg
bWF4RGVsYXlUaW1lID0gMSk7CisgICAgW01heVRocm93RXhjZXB0aW9uXSBCaXF1YWRGaWx0ZXJO
b2RlIGNyZWF0ZUJpcXVhZEZpbHRlcigpOworICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gV2F2ZVNo
YXBlck5vZGUgY3JlYXRlV2F2ZVNoYXBlcigpOworICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gV2Vi
S2l0QXVkaW9QYW5uZXJOb2RlIGNyZWF0ZVBhbm5lcigpOworICAgIFtNYXlUaHJvd0V4Y2VwdGlv
bl0gQ29udm9sdmVyTm9kZSBjcmVhdGVDb252b2x2ZXIoKTsKKyAgICBbTWF5VGhyb3dFeGNlcHRp
b25dIER5bmFtaWNzQ29tcHJlc3Nvck5vZGUgY3JlYXRlRHluYW1pY3NDb21wcmVzc29yKCk7Cisg
ICAgW01heVRocm93RXhjZXB0aW9uXSBBbmFseXNlck5vZGUgY3JlYXRlQW5hbHlzZXIoKTsKKyAg
ICBbTWF5VGhyb3dFeGNlcHRpb25dIFNjcmlwdFByb2Nlc3Nvck5vZGUgY3JlYXRlU2NyaXB0UHJv
Y2Vzc29yKG9wdGlvbmFsIHVuc2lnbmVkIGxvbmcgYnVmZmVyU2l6ZSA9IDAsIG9wdGlvbmFsIHVu
c2lnbmVkIGxvbmcgbnVtYmVyT2ZJbnB1dENoYW5uZWxzID0gMiwgb3B0aW9uYWwgdW5zaWduZWQg
bG9uZyBudW1iZXJPZk91dHB1dENoYW5uZWxzID0gMik7CisgICAgW01heVRocm93RXhjZXB0aW9u
XSBPc2NpbGxhdG9yTm9kZSBjcmVhdGVPc2NpbGxhdG9yKCk7CisgICAgW01heVRocm93RXhjZXB0
aW9uXSBQZXJpb2RpY1dhdmUgY3JlYXRlUGVyaW9kaWNXYXZlKEZsb2F0MzJBcnJheSByZWFsLCBG
bG9hdDMyQXJyYXkgaW1hZyk7CisKKyAgICAvLyBDaGFubmVsIHNwbGl0dGluZyBhbmQgbWVyZ2lu
ZworICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gQ2hhbm5lbFNwbGl0dGVyTm9kZSBjcmVhdGVDaGFu
bmVsU3BsaXR0ZXIob3B0aW9uYWwgdW5zaWduZWQgbG9uZyBudW1iZXJPZk91dHB1dHMgPSA2KTsK
KyAgICBbTWF5VGhyb3dFeGNlcHRpb25dIENoYW5uZWxNZXJnZXJOb2RlIGNyZWF0ZUNoYW5uZWxN
ZXJnZXIob3B0aW9uYWwgdW5zaWduZWQgbG9uZyBudW1iZXJPZklucHV0cyA9IDYpOworCisgICAg
Ly8gT2ZmbGluZSByZW5kZXJpbmcKKyAgICAvLyB2b2lkIHByZXBhcmVPZmZsaW5lQnVmZmVyUmVu
ZGVyaW5nKHVuc2lnbmVkIGxvbmcgbnVtYmVyT2ZDaGFubmVscywgdW5zaWduZWQgbG9uZyBudW1i
ZXJPZkZyYW1lcywgdW5yZXN0cmljdGVkIGZsb2F0IHNhbXBsZVJhdGUpOworICAgIGF0dHJpYnV0
ZSBFdmVudEhhbmRsZXIgb25jb21wbGV0ZTsKKyAgICB2b2lkIHN0YXJ0UmVuZGVyaW5nKCk7Cit9
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9XZWJLaXRBdWRp
b1Bhbm5lck5vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9XZWJLaXRB
dWRpb1Bhbm5lck5vZGUuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjI1OGY0NWU3Y2ZkOTFjODIyYzY5OTJlNzU4
ZGFhNzU4YWQ3OTAyZTIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmF1ZGlvL1dlYktpdEF1ZGlvUGFubmVyTm9kZS5jcHAKQEAgLTAsMCArMSwzNjMgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTAsIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiAgUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElN
UExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTgorICogQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTCisgKiBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiV2ViS2l0QXVkaW9QYW5u
ZXJOb2RlLmgiCisKKyNpZiBFTkFCTEUoV0VCX0FVRElPKQorCisjaW5jbHVkZSAiQXVkaW9CdWZm
ZXJTb3VyY2VOb2RlLmgiCisjaW5jbHVkZSAiQXVkaW9CdXMuaCIKKyNpbmNsdWRlICJBdWRpb0Nv
bnRleHQuaCIKKyNpbmNsdWRlICJBdWRpb05vZGVJbnB1dC5oIgorI2luY2x1ZGUgIkF1ZGlvTm9k
ZU91dHB1dC5oIgorI2luY2x1ZGUgIkhSVEZEYXRhYmFzZUxvYWRlci5oIgorI2luY2x1ZGUgIkhS
VEZQYW5uZXIuaCIKKyNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCisjaW5jbHVk
ZSA8d3RmL0lzb01hbGxvY0lubGluZXMuaD4KKyNpbmNsdWRlIDx3dGYvTWF0aEV4dHJhcy5oPgor
CituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1dURl9NQUtFX0lTT19BTExPQ0FURURfSU1QTChXZWJL
aXRBdWRpb1Bhbm5lck5vZGUpOworCitzdGF0aWMgdm9pZCBmaXhOQU5zKGRvdWJsZSAmeCkKK3sK
KyAgICBpZiAoc3RkOjppc25hbih4KSB8fCBzdGQ6OmlzaW5mKHgpKQorICAgICAgICB4ID0gMC4w
OworfQorCitXZWJLaXRBdWRpb1Bhbm5lck5vZGU6OldlYktpdEF1ZGlvUGFubmVyTm9kZShXZWJL
aXRBdWRpb0NvbnRleHQmIGNvbnRleHQsIGZsb2F0IHNhbXBsZVJhdGUpCisgICAgOiBQYW5uZXJO
b2RlQmFzZShjb250ZXh0LCBzYW1wbGVSYXRlKQorICAgICwgbV9wYW5uaW5nTW9kZWwoUGFubmlu
Z01vZGVsVHlwZTo6SFJURikKKyAgICAsIG1fbGFzdEdhaW4oLTEuMCkKKyAgICAsIG1fY29ubmVj
dGlvbkNvdW50KDApCit7CisgICAgc2V0Tm9kZVR5cGUoTm9kZVR5cGVQYW5uZXIpOworCisgICAg
Ly8gTG9hZCB0aGUgSFJURiBkYXRhYmFzZSBhc3luY2hyb25vdXNseSBzbyB3ZSBkb24ndCBibG9j
ayB0aGUgSmF2YXNjcmlwdCB0aHJlYWQgd2hpbGUgY3JlYXRpbmcgdGhlIEhSVEYgZGF0YWJhc2Uu
CisgICAgbV9ocnRmRGF0YWJhc2VMb2FkZXIgPSBIUlRGRGF0YWJhc2VMb2FkZXI6OmNyZWF0ZUFu
ZExvYWRBc3luY2hyb25vdXNseUlmTmVjZXNzYXJ5KGNvbnRleHQuc2FtcGxlUmF0ZSgpKTsKKwor
ICAgIGFkZElucHV0KG1ha2VVbmlxdWU8QXVkaW9Ob2RlSW5wdXQ+KHRoaXMpKTsKKyAgICBhZGRP
dXRwdXQobWFrZVVuaXF1ZTxBdWRpb05vZGVPdXRwdXQ+KHRoaXMsIDIpKTsKKworICAgIC8vIE5v
ZGUtc3BlY2lmaWMgZGVmYXVsdCBtaXhpbmcgcnVsZXMuCisgICAgbV9jaGFubmVsQ291bnQgPSAy
OworICAgIG1fY2hhbm5lbENvdW50TW9kZSA9IENsYW1wZWRNYXg7CisgICAgbV9jaGFubmVsSW50
ZXJwcmV0YXRpb24gPSBBdWRpb0J1czo6U3BlYWtlcnM7CisKKyAgICBtX2Rpc3RhbmNlR2FpbiA9
IEF1ZGlvUGFyYW06OmNyZWF0ZShjb250ZXh0LCAiZGlzdGFuY2VHYWluIiwgMS4wLCAwLjAsIDEu
MCk7CisgICAgbV9jb25lR2FpbiA9IEF1ZGlvUGFyYW06OmNyZWF0ZShjb250ZXh0LCAiY29uZUdh
aW4iLCAxLjAsIDAuMCwgMS4wKTsKKworICAgIG1fcG9zaXRpb24gPSBGbG9hdFBvaW50M0QoMCwg
MCwgMCk7CisgICAgbV9vcmllbnRhdGlvbiA9IEZsb2F0UG9pbnQzRCgxLCAwLCAwKTsKKyAgICBt
X3ZlbG9jaXR5ID0gRmxvYXRQb2ludDNEKDAsIDAsIDApOworCisgICAgaW5pdGlhbGl6ZSgpOwor
fQorCitXZWJLaXRBdWRpb1Bhbm5lck5vZGU6On5XZWJLaXRBdWRpb1Bhbm5lck5vZGUoKQorewor
ICAgIHVuaW5pdGlhbGl6ZSgpOworfQorCit2b2lkIFdlYktpdEF1ZGlvUGFubmVyTm9kZTo6cHVs
bElucHV0cyhzaXplX3QgZnJhbWVzVG9Qcm9jZXNzKQoreworICAgIC8vIFdlIG92ZXJyaWRlIHB1
bGxJbnB1dHMoKSwgc28gd2UgY2FuIGRldGVjdCBuZXcgQXVkaW9Tb3VyY2VOb2RlcyB3aGljaCBo
YXZlIGNvbm5lY3RlZCB0byB1cyB3aGVuIG5ldyBjb25uZWN0aW9ucyBhcmUgbWFkZS4KKyAgICAv
LyBUaGVzZSBBdWRpb1NvdXJjZU5vZGVzIG5lZWQgdG8gYmUgbWFkZSBhd2FyZSBvZiBvdXIgZXhp
c3RlbmNlIGluIG9yZGVyIHRvIGhhbmRsZSBkb3BwbGVyIHNoaWZ0IHBpdGNoIGNoYW5nZXMuCisg
ICAgaWYgKG1fY29ubmVjdGlvbkNvdW50ICE9IGNvbnRleHQoKS5jb25uZWN0aW9uQ291bnQoKSkg
eworICAgICAgICBtX2Nvbm5lY3Rpb25Db3VudCA9IGNvbnRleHQoKS5jb25uZWN0aW9uQ291bnQo
KTsKKworICAgICAgICAvLyBSZWN1cnNpdmVseSBnbyB0aHJvdWdoIGFsbCBub2RlcyBjb25uZWN0
ZWQgdG8gdXMuCisgICAgICAgIEhhc2hTZXQ8QXVkaW9Ob2RlKj4gdmlzaXRlZE5vZGVzOworICAg
ICAgICBub3RpZnlBdWRpb1NvdXJjZXNDb25uZWN0ZWRUb05vZGUodGhpcywgdmlzaXRlZE5vZGVz
KTsKKyAgICB9CisKKyAgICBBdWRpb05vZGU6OnB1bGxJbnB1dHMoZnJhbWVzVG9Qcm9jZXNzKTsK
K30KKwordm9pZCBXZWJLaXRBdWRpb1Bhbm5lck5vZGU6OnByb2Nlc3Moc2l6ZV90IGZyYW1lc1Rv
UHJvY2VzcykKK3sKKyAgICBBdWRpb0J1cyogZGVzdGluYXRpb24gPSBvdXRwdXQoMCktPmJ1cygp
OworCisgICAgaWYgKCFpc0luaXRpYWxpemVkKCkgfHwgIWlucHV0KDApLT5pc0Nvbm5lY3RlZCgp
IHx8ICFtX3Bhbm5lci5nZXQoKSkgeworICAgICAgICBkZXN0aW5hdGlvbi0+emVybygpOworICAg
ICAgICByZXR1cm47CisgICAgfQorCisgICAgQXVkaW9CdXMqIHNvdXJjZSA9IGlucHV0KDApLT5i
dXMoKTsKKyAgICBpZiAoIXNvdXJjZSkgeworICAgICAgICBkZXN0aW5hdGlvbi0+emVybygpOwor
ICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgLy8gSFJURkRhdGFiYXNlIHNob3VsZCBiZSBs
b2FkZWQgYmVmb3JlIHByb2NlZWRpbmcgZm9yIG9mZmxpbmUgYXVkaW8gY29udGV4dCB3aGVuIHBh
bm5pbmdNb2RlbCgpIGlzICJIUlRGIi4KKyAgICBpZiAocGFubmluZ01vZGVsKCkgPT0gUGFubmlu
Z01vZGVsVHlwZTo6SFJURiAmJiAhbV9ocnRmRGF0YWJhc2VMb2FkZXItPmlzTG9hZGVkKCkpIHsK
KyAgICAgICAgaWYgKGNvbnRleHQoKS5pc09mZmxpbmVDb250ZXh0KCkpCisgICAgICAgICAgICBt
X2hydGZEYXRhYmFzZUxvYWRlci0+d2FpdEZvckxvYWRlclRocmVhZENvbXBsZXRpb24oKTsKKyAg
ICAgICAgZWxzZSB7CisgICAgICAgICAgICBkZXN0aW5hdGlvbi0+emVybygpOworICAgICAgICAg
ICAgcmV0dXJuOworICAgICAgICB9CisgICAgfQorCisgICAgLy8gVGhlIGF1ZGlvIHRocmVhZCBj
YW4ndCBibG9jayBvbiB0aGlzIGxvY2ssIHNvIHdlIHVzZSBzdGQ6OnRyeV90b19sb2NrIGluc3Rl
YWQuCisgICAgc3RkOjp1bmlxdWVfbG9jazxMb2NrPiBsb2NrKG1fcGFubmVyTXV0ZXgsIHN0ZDo6
dHJ5X3RvX2xvY2spOworICAgIGlmICghbG9jay5vd25zX2xvY2soKSkgeworICAgICAgICAvLyBU
b28gYmFkIC0gVGhlIHRyeV9sb2NrKCkgZmFpbGVkLiBXZSBtdXN0IGJlIGluIHRoZSBtaWRkbGUg
b2YgY2hhbmdpbmcgdGhlIHBhbm5lci4KKyAgICAgICAgZGVzdGluYXRpb24tPnplcm8oKTsKKyAg
ICAgICAgcmV0dXJuOworICAgIH0KKworICAgIC8vIEFwcGx5IHRoZSBwYW5uaW5nIGVmZmVjdC4K
KyAgICBkb3VibGUgYXppbXV0aDsKKyAgICBkb3VibGUgZWxldmF0aW9uOworICAgIGdldEF6aW11
dGhFbGV2YXRpb24oJmF6aW11dGgsICZlbGV2YXRpb24pOworICAgIG1fcGFubmVyLT5wYW4oYXpp
bXV0aCwgZWxldmF0aW9uLCBzb3VyY2UsIGRlc3RpbmF0aW9uLCBmcmFtZXNUb1Byb2Nlc3MpOwor
CisgICAgLy8gR2V0IHRoZSBkaXN0YW5jZSBhbmQgY29uZSBnYWluLgorICAgIGRvdWJsZSB0b3Rh
bEdhaW4gPSBkaXN0YW5jZUNvbmVHYWluKCk7CisKKyAgICAvLyBTbmFwIHRvIGRlc2lyZWQgZ2Fp
biBhdCB0aGUgYmVnaW5uaW5nLgorICAgIGlmIChtX2xhc3RHYWluID09IC0xLjApCisgICAgICAg
IG1fbGFzdEdhaW4gPSB0b3RhbEdhaW47CisKKyAgICAvLyBBcHBseSBnYWluIGluLXBsYWNlIHdp
dGggZGUtemlwcGVyaW5nLgorICAgIGRlc3RpbmF0aW9uLT5jb3B5V2l0aEdhaW5Gcm9tKCpkZXN0
aW5hdGlvbiwgJm1fbGFzdEdhaW4sIHRvdGFsR2Fpbik7Cit9CisKK3ZvaWQgV2ViS2l0QXVkaW9Q
YW5uZXJOb2RlOjpyZXNldCgpCit7CisgICAgbV9sYXN0R2FpbiA9IC0xLjA7IC8vIGZvcmNlIHRv
IHNuYXAgdG8gaW5pdGlhbCBnYWluCisgICAgaWYgKG1fcGFubmVyLmdldCgpKQorICAgICAgICBt
X3Bhbm5lci0+cmVzZXQoKTsKK30KKwordm9pZCBXZWJLaXRBdWRpb1Bhbm5lck5vZGU6OmluaXRp
YWxpemUoKQoreworICAgIGlmIChpc0luaXRpYWxpemVkKCkpCisgICAgICAgIHJldHVybjsKKwor
ICAgIG1fcGFubmVyID0gUGFubmVyOjpjcmVhdGUobV9wYW5uaW5nTW9kZWwsIHNhbXBsZVJhdGUo
KSwgbV9ocnRmRGF0YWJhc2VMb2FkZXIuZ2V0KCkpOworCisgICAgQXVkaW9Ob2RlOjppbml0aWFs
aXplKCk7Cit9CisKK3ZvaWQgV2ViS2l0QXVkaW9QYW5uZXJOb2RlOjp1bmluaXRpYWxpemUoKQor
eworICAgIGlmICghaXNJbml0aWFsaXplZCgpKQorICAgICAgICByZXR1cm47CisKKyAgICBtX3Bh
bm5lciA9IG51bGxwdHI7CisgICAgQXVkaW9Ob2RlOjp1bmluaXRpYWxpemUoKTsKK30KKworQXVk
aW9MaXN0ZW5lciogV2ViS2l0QXVkaW9QYW5uZXJOb2RlOjpsaXN0ZW5lcigpCit7CisgICAgcmV0
dXJuIGNvbnRleHQoKS5saXN0ZW5lcigpOworfQorCit2b2lkIFdlYktpdEF1ZGlvUGFubmVyTm9k
ZTo6c2V0UGFubmluZ01vZGVsKFBhbm5pbmdNb2RlbFR5cGUgbW9kZWwpCit7CisgICAgaWYgKCFt
X3Bhbm5lci5nZXQoKSB8fCBtb2RlbCAhPSBtX3Bhbm5pbmdNb2RlbCkgeworICAgICAgICAvLyBU
aGlzIHN5bmNocm9uaXplcyB3aXRoIHByb2Nlc3MoKS4KKyAgICAgICAgYXV0byBsb2NrZXIgPSBo
b2xkTG9jayhtX3Bhbm5lck11dGV4KTsKKworICAgICAgICBtX3Bhbm5lciA9IFBhbm5lcjo6Y3Jl
YXRlKG1vZGVsLCBzYW1wbGVSYXRlKCksIG1faHJ0ZkRhdGFiYXNlTG9hZGVyLmdldCgpKTsKKyAg
ICAgICAgbV9wYW5uaW5nTW9kZWwgPSBtb2RlbDsKKyAgICB9Cit9CisKK0Rpc3RhbmNlTW9kZWxU
eXBlIFdlYktpdEF1ZGlvUGFubmVyTm9kZTo6ZGlzdGFuY2VNb2RlbCgpIGNvbnN0Cit7CisgICAg
cmV0dXJuIGNvbnN0X2Nhc3Q8V2ViS2l0QXVkaW9QYW5uZXJOb2RlKj4odGhpcyktPm1fZGlzdGFu
Y2VFZmZlY3QubW9kZWwoKTsKK30KKwordm9pZCBXZWJLaXRBdWRpb1Bhbm5lck5vZGU6OnNldERp
c3RhbmNlTW9kZWwoRGlzdGFuY2VNb2RlbFR5cGUgbW9kZWwpCit7CisgICAgbV9kaXN0YW5jZUVm
ZmVjdC5zZXRNb2RlbChtb2RlbCwgdHJ1ZSk7Cit9CisKK3ZvaWQgV2ViS2l0QXVkaW9QYW5uZXJO
b2RlOjpnZXRBemltdXRoRWxldmF0aW9uKGRvdWJsZSogb3V0QXppbXV0aCwgZG91YmxlKiBvdXRF
bGV2YXRpb24pCit7CisgICAgLy8gRklYTUU6IHdlIHNob3VsZCBjYWNoZSBhemltdXRoIGFuZCBl
bGV2YXRpb24gKGlmIHBvc3NpYmxlKSwgc28gd2Ugb25seSByZS1jYWxjdWxhdGUgaWYgYSBjaGFu
Z2UgaGFzIGJlZW4gbWFkZS4KKworICAgIGRvdWJsZSBhemltdXRoID0gMC4wOworCisgICAgLy8g
Q2FsY3VsYXRlIHRoZSBzb3VyY2UtbGlzdGVuZXIgdmVjdG9yCisgICAgRmxvYXRQb2ludDNEIGxp
c3RlbmVyUG9zaXRpb24gPSBsaXN0ZW5lcigpLT5wb3NpdGlvbigpOworICAgIEZsb2F0UG9pbnQz
RCBzb3VyY2VMaXN0ZW5lciA9IHBvc2l0aW9uKCkgLSBsaXN0ZW5lclBvc2l0aW9uOworCisgICAg
aWYgKHNvdXJjZUxpc3RlbmVyLmlzWmVybygpKSB7CisgICAgICAgIC8vIGRlZ2VuZXJhdGUgY2Fz
ZSBpZiBzb3VyY2UgYW5kIGxpc3RlbmVyIGFyZSBhdCB0aGUgc2FtZSBwb2ludAorICAgICAgICAq
b3V0QXppbXV0aCA9IDAuMDsKKyAgICAgICAgKm91dEVsZXZhdGlvbiA9IDAuMDsKKyAgICAgICAg
cmV0dXJuOworICAgIH0KKworICAgIHNvdXJjZUxpc3RlbmVyLm5vcm1hbGl6ZSgpOworCisgICAg
Ly8gQWxpZ24gYXhlcworICAgIEZsb2F0UG9pbnQzRCBsaXN0ZW5lckZyb250ID0gbGlzdGVuZXIo
KS0+b3JpZW50YXRpb24oKTsKKyAgICBGbG9hdFBvaW50M0QgbGlzdGVuZXJVcCA9IGxpc3RlbmVy
KCktPnVwVmVjdG9yKCk7CisgICAgRmxvYXRQb2ludDNEIGxpc3RlbmVyUmlnaHQgPSBsaXN0ZW5l
ckZyb250LmNyb3NzKGxpc3RlbmVyVXApOworICAgIGxpc3RlbmVyUmlnaHQubm9ybWFsaXplKCk7
CisKKyAgICBGbG9hdFBvaW50M0QgbGlzdGVuZXJGcm9udE5vcm0gPSBsaXN0ZW5lckZyb250Owor
ICAgIGxpc3RlbmVyRnJvbnROb3JtLm5vcm1hbGl6ZSgpOworCisgICAgRmxvYXRQb2ludDNEIHVw
ID0gbGlzdGVuZXJSaWdodC5jcm9zcyhsaXN0ZW5lckZyb250Tm9ybSk7CisKKyAgICBmbG9hdCB1
cFByb2plY3Rpb24gPSBzb3VyY2VMaXN0ZW5lci5kb3QodXApOworCisgICAgRmxvYXRQb2ludDNE
IHByb2plY3RlZFNvdXJjZSA9IHNvdXJjZUxpc3RlbmVyIC0gdXBQcm9qZWN0aW9uICogdXA7Cisg
ICAgcHJvamVjdGVkU291cmNlLm5vcm1hbGl6ZSgpOworCisgICAgYXppbXV0aCA9IDE4MC4wICog
YWNvcyhwcm9qZWN0ZWRTb3VyY2UuZG90KGxpc3RlbmVyUmlnaHQpKSAvIHBpRG91YmxlOworICAg
IGZpeE5BTnMoYXppbXV0aCk7IC8vIGF2b2lkIGlsbGVnYWwgdmFsdWVzCisKKyAgICAvLyBTb3Vy
Y2UgIGluIGZyb250IG9yIGJlaGluZCB0aGUgbGlzdGVuZXIKKyAgICBkb3VibGUgZnJvbnRCYWNr
ID0gcHJvamVjdGVkU291cmNlLmRvdChsaXN0ZW5lckZyb250Tm9ybSk7CisgICAgaWYgKGZyb250
QmFjayA8IDAuMCkKKyAgICAgICAgYXppbXV0aCA9IDM2MC4wIC0gYXppbXV0aDsKKworICAgIC8v
IE1ha2UgYXppbXV0aCByZWxhdGl2ZSB0byAiZnJvbnQiIGFuZCBub3QgInJpZ2h0IiBsaXN0ZW5l
ciB2ZWN0b3IKKyAgICBpZiAoKGF6aW11dGggPj0gMC4wKSAmJiAoYXppbXV0aCA8PSAyNzAuMCkp
CisgICAgICAgIGF6aW11dGggPSA5MC4wIC0gYXppbXV0aDsKKyAgICBlbHNlCisgICAgICAgIGF6
aW11dGggPSA0NTAuMCAtIGF6aW11dGg7CisKKyAgICAvLyBFbGV2YXRpb24KKyAgICBkb3VibGUg
ZWxldmF0aW9uID0gOTAuMCAtIDE4MC4wICogYWNvcyhzb3VyY2VMaXN0ZW5lci5kb3QodXApKSAv
IHBpRG91YmxlOworICAgIGZpeE5BTnMoZWxldmF0aW9uKTsgLy8gYXZvaWQgaWxsZWdhbCB2YWx1
ZXMKKworICAgIGlmIChlbGV2YXRpb24gPiA5MC4wKQorICAgICAgICBlbGV2YXRpb24gPSAxODAu
MCAtIGVsZXZhdGlvbjsKKyAgICBlbHNlIGlmIChlbGV2YXRpb24gPCAtOTAuMCkKKyAgICAgICAg
ZWxldmF0aW9uID0gLTE4MC4wIC0gZWxldmF0aW9uOworCisgICAgaWYgKG91dEF6aW11dGgpCisg
ICAgICAgICpvdXRBemltdXRoID0gYXppbXV0aDsKKyAgICBpZiAob3V0RWxldmF0aW9uKQorICAg
ICAgICAqb3V0RWxldmF0aW9uID0gZWxldmF0aW9uOworfQorCitmbG9hdCBXZWJLaXRBdWRpb1Bh
bm5lck5vZGU6OmRvcHBsZXJSYXRlKCkKK3sKKyAgICBkb3VibGUgZG9wcGxlclNoaWZ0ID0gMS4w
OworCisgICAgLy8gRklYTUU6IG9wdGltaXplIGZvciBjYXNlIHdoZW4gbmVpdGhlciBzb3VyY2Ug
bm9yIGxpc3RlbmVyIGhhcyBjaGFuZ2VkLi4uCisgICAgZG91YmxlIGRvcHBsZXJGYWN0b3IgPSBs
aXN0ZW5lcigpLT5kb3BwbGVyRmFjdG9yKCk7CisKKyAgICBpZiAoZG9wcGxlckZhY3RvciA+IDAu
MCkgeworICAgICAgICBkb3VibGUgc3BlZWRPZlNvdW5kID0gbGlzdGVuZXIoKS0+c3BlZWRPZlNv
dW5kKCk7CisKKyAgICAgICAgY29uc3QgRmxvYXRQb2ludDNEICZzb3VyY2VWZWxvY2l0eSA9IG1f
dmVsb2NpdHk7CisgICAgICAgIGNvbnN0IEZsb2F0UG9pbnQzRCAmbGlzdGVuZXJWZWxvY2l0eSA9
IGxpc3RlbmVyKCktPnZlbG9jaXR5KCk7CisKKyAgICAgICAgLy8gRG9uJ3QgYm90aGVyIGlmIGJv
dGggc291cmNlIGFuZCBsaXN0ZW5lciBoYXZlIG5vIHZlbG9jaXR5CisgICAgICAgIGJvb2wgc291
cmNlSGFzVmVsb2NpdHkgPSAhc291cmNlVmVsb2NpdHkuaXNaZXJvKCk7CisgICAgICAgIGJvb2wg
bGlzdGVuZXJIYXNWZWxvY2l0eSA9ICFsaXN0ZW5lclZlbG9jaXR5LmlzWmVybygpOworCisgICAg
ICAgIGlmIChzb3VyY2VIYXNWZWxvY2l0eSB8fCBsaXN0ZW5lckhhc1ZlbG9jaXR5KSB7CisgICAg
ICAgICAgICAvLyBDYWxjdWxhdGUgdGhlIHNvdXJjZSB0byBsaXN0ZW5lciB2ZWN0b3IKKyAgICAg
ICAgICAgIEZsb2F0UG9pbnQzRCBsaXN0ZW5lclBvc2l0aW9uID0gbGlzdGVuZXIoKS0+cG9zaXRp
b24oKTsKKyAgICAgICAgICAgIEZsb2F0UG9pbnQzRCBzb3VyY2VUb0xpc3RlbmVyID0gcG9zaXRp
b24oKSAtIGxpc3RlbmVyUG9zaXRpb247CisKKyAgICAgICAgICAgIGRvdWJsZSBzb3VyY2VMaXN0
ZW5lck1hZ25pdHVkZSA9IHNvdXJjZVRvTGlzdGVuZXIubGVuZ3RoKCk7CisKKyAgICAgICAgICAg
IGRvdWJsZSBsaXN0ZW5lclByb2plY3Rpb24gPSBzb3VyY2VUb0xpc3RlbmVyLmRvdChsaXN0ZW5l
clZlbG9jaXR5KSAvIHNvdXJjZUxpc3RlbmVyTWFnbml0dWRlOworICAgICAgICAgICAgZG91Ymxl
IHNvdXJjZVByb2plY3Rpb24gPSBzb3VyY2VUb0xpc3RlbmVyLmRvdChzb3VyY2VWZWxvY2l0eSkg
LyBzb3VyY2VMaXN0ZW5lck1hZ25pdHVkZTsKKworICAgICAgICAgICAgbGlzdGVuZXJQcm9qZWN0
aW9uID0gLWxpc3RlbmVyUHJvamVjdGlvbjsKKyAgICAgICAgICAgIHNvdXJjZVByb2plY3Rpb24g
PSAtc291cmNlUHJvamVjdGlvbjsKKworICAgICAgICAgICAgZG91YmxlIHNjYWxlZFNwZWVkT2ZT
b3VuZCA9IHNwZWVkT2ZTb3VuZCAvIGRvcHBsZXJGYWN0b3I7CisgICAgICAgICAgICBsaXN0ZW5l
clByb2plY3Rpb24gPSBzdGQ6Om1pbihsaXN0ZW5lclByb2plY3Rpb24sIHNjYWxlZFNwZWVkT2ZT
b3VuZCk7CisgICAgICAgICAgICBzb3VyY2VQcm9qZWN0aW9uID0gc3RkOjptaW4oc291cmNlUHJv
amVjdGlvbiwgc2NhbGVkU3BlZWRPZlNvdW5kKTsKKworICAgICAgICAgICAgZG9wcGxlclNoaWZ0
ID0gKChzcGVlZE9mU291bmQgLSBkb3BwbGVyRmFjdG9yICogbGlzdGVuZXJQcm9qZWN0aW9uKSAv
IChzcGVlZE9mU291bmQgLSBkb3BwbGVyRmFjdG9yICogc291cmNlUHJvamVjdGlvbikpOworICAg
ICAgICAgICAgZml4TkFOcyhkb3BwbGVyU2hpZnQpOyAvLyBhdm9pZCBpbGxlZ2FsIHZhbHVlcwor
CisgICAgICAgICAgICAvLyBMaW1pdCB0aGUgcGl0Y2ggc2hpZnRpbmcgdG8gNCBvY3RhdmVzIHVw
IGFuZCAzIG9jdGF2ZXMgZG93bi4KKyAgICAgICAgICAgIGlmIChkb3BwbGVyU2hpZnQgPiAxNi4w
KQorICAgICAgICAgICAgICAgIGRvcHBsZXJTaGlmdCA9IDE2LjA7CisgICAgICAgICAgICBlbHNl
IGlmIChkb3BwbGVyU2hpZnQgPCAwLjEyNSkKKyAgICAgICAgICAgICAgICBkb3BwbGVyU2hpZnQg
PSAwLjEyNTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHJldHVybiBzdGF0aWNfY2FzdDxmbG9h
dD4oZG9wcGxlclNoaWZ0KTsKK30KKworZmxvYXQgV2ViS2l0QXVkaW9QYW5uZXJOb2RlOjpkaXN0
YW5jZUNvbmVHYWluKCkKK3sKKyAgICBGbG9hdFBvaW50M0QgbGlzdGVuZXJQb3NpdGlvbiA9IGxp
c3RlbmVyKCktPnBvc2l0aW9uKCk7CisgICAgRmxvYXRQb2ludDNEIHNvdXJjZVBvc2l0aW9uID0g
cG9zaXRpb24oKTsKKworICAgIGRvdWJsZSBsaXN0ZW5lckRpc3RhbmNlID0gc291cmNlUG9zaXRp
b24uZGlzdGFuY2VUbyhsaXN0ZW5lclBvc2l0aW9uKTsKKyAgICBkb3VibGUgZGlzdGFuY2VHYWlu
ID0gbV9kaXN0YW5jZUVmZmVjdC5nYWluKGxpc3RlbmVyRGlzdGFuY2UpOworCisgICAgbV9kaXN0
YW5jZUdhaW4tPnNldFZhbHVlKHN0YXRpY19jYXN0PGZsb2F0PihkaXN0YW5jZUdhaW4pKTsKKwor
ICAgIC8vIEZJWE1FOiBjb3VsZCBvcHRpbWl6ZSBieSBjYWNoaW5nIGNvbmVHYWluCisgICAgZG91
YmxlIGNvbmVHYWluID0gbV9jb25lRWZmZWN0LmdhaW4oc291cmNlUG9zaXRpb24sIG1fb3JpZW50
YXRpb24sIGxpc3RlbmVyUG9zaXRpb24pOworCisgICAgbV9jb25lR2Fpbi0+c2V0VmFsdWUoc3Rh
dGljX2Nhc3Q8ZmxvYXQ+KGNvbmVHYWluKSk7CisKKyAgICByZXR1cm4gZmxvYXQoZGlzdGFuY2VH
YWluICogY29uZUdhaW4pOworfQorCit2b2lkIFdlYktpdEF1ZGlvUGFubmVyTm9kZTo6bm90aWZ5
QXVkaW9Tb3VyY2VzQ29ubmVjdGVkVG9Ob2RlKEF1ZGlvTm9kZSogbm9kZSwgSGFzaFNldDxBdWRp
b05vZGUqPiYgdmlzaXRlZE5vZGVzKQoreworICAgIEFTU0VSVChub2RlKTsKKyAgICBpZiAoIW5v
ZGUpCisgICAgICAgIHJldHVybjsKKworICAgIC8vIEZpcnN0IGNoZWNrIGlmIHRoaXMgbm9kZSBp
cyBhbiBBdWRpb0J1ZmZlclNvdXJjZU5vZGUuIElmIHNvLCBsZXQgaXQga25vdyBhYm91dCB1cyBz
byB0aGF0IGRvcHBsZXIgc2hpZnQgcGl0Y2ggY2FuIGJlIHRha2VuIGludG8gYWNjb3VudC4KKyAg
ICBpZiAobm9kZS0+bm9kZVR5cGUoKSA9PSBOb2RlVHlwZUF1ZGlvQnVmZmVyU291cmNlKSB7Cisg
ICAgICAgIEF1ZGlvQnVmZmVyU291cmNlTm9kZSogYnVmZmVyU291cmNlTm9kZSA9IHJlaW50ZXJw
cmV0X2Nhc3Q8QXVkaW9CdWZmZXJTb3VyY2VOb2RlKj4obm9kZSk7CisgICAgICAgIGJ1ZmZlclNv
dXJjZU5vZGUtPnNldFBhbm5lck5vZGUodGhpcyk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgLy8g
R28gdGhyb3VnaCBhbGwgaW5wdXRzIHRvIHRoaXMgbm9kZS4KKyAgICAgICAgZm9yICh1bnNpZ25l
ZCBpID0gMDsgaSA8IG5vZGUtPm51bWJlck9mSW5wdXRzKCk7ICsraSkgeworICAgICAgICAgICAg
QXVkaW9Ob2RlSW5wdXQqIGlucHV0ID0gbm9kZS0+aW5wdXQoaSk7CisKKyAgICAgICAgICAgIC8v
IEZvciBlYWNoIGlucHV0LCBnbyB0aHJvdWdoIGFsbCBvZiBpdHMgY29ubmVjdGlvbnMsIGxvb2tp
bmcgZm9yIEF1ZGlvQnVmZmVyU291cmNlTm9kZXMuCisgICAgICAgICAgICBmb3IgKHVuc2lnbmVk
IGogPSAwOyBqIDwgaW5wdXQtPm51bWJlck9mUmVuZGVyaW5nQ29ubmVjdGlvbnMoKTsgKytqKSB7
CisgICAgICAgICAgICAgICAgQXVkaW9Ob2RlT3V0cHV0KiBjb25uZWN0ZWRPdXRwdXQgPSBpbnB1
dC0+cmVuZGVyaW5nT3V0cHV0KGopOworICAgICAgICAgICAgICAgIEF1ZGlvTm9kZSogY29ubmVj
dGVkTm9kZSA9IGNvbm5lY3RlZE91dHB1dC0+bm9kZSgpOworICAgICAgICAgICAgICAgIGlmICh2
aXNpdGVkTm9kZXMuY29udGFpbnMoY29ubmVjdGVkTm9kZSkpCisgICAgICAgICAgICAgICAgICAg
IGNvbnRpbnVlOworCisgICAgICAgICAgICAgICAgdmlzaXRlZE5vZGVzLmFkZChjb25uZWN0ZWRO
b2RlKTsKKyAgICAgICAgICAgICAgICBub3RpZnlBdWRpb1NvdXJjZXNDb25uZWN0ZWRUb05vZGUo
Y29ubmVjdGVkTm9kZSwgdmlzaXRlZE5vZGVzKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQor
ICAgIH0KK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKFdF
Ql9BVURJTykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vV2Vi
S2l0QXVkaW9QYW5uZXJOb2RlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1dl
YktpdEF1ZGlvUGFubmVyTm9kZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjg5Nzk3YzNjNGM1MGIzNjg5MjA1ODA2
YzE5N2YxMGJkOWM1Njc2YmUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmF1ZGlvL1dlYktpdEF1ZGlvUGFubmVyTm9kZS5oCkBAIC0wLDAgKzEsMTYwIEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDEwLCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJ
TVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04KKyAqIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUworICog
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoV0VCX0FVRElPKQorCisjaW5j
bHVkZSAiQXVkaW9MaXN0ZW5lci5oIgorI2luY2x1ZGUgIkF1ZGlvTm9kZS5oIgorI2luY2x1ZGUg
IkF1ZGlvUGFyYW0uaCIKKyNpbmNsdWRlICJDb25lLmgiCisjaW5jbHVkZSAiRGlzdGFuY2UuaCIK
KyNpbmNsdWRlICJGbG9hdFBvaW50M0QuaCIKKyNpbmNsdWRlICJQYW5uZXIuaCIKKyNpbmNsdWRl
ICJQYW5uZXJOb2RlLmgiCisjaW5jbHVkZSAiV2ViS2l0QXVkaW9Db250ZXh0LmgiCisjaW5jbHVk
ZSA8bWVtb3J5PgorI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CisjaW5jbHVkZSA8d3RmL0xvY2su
aD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBIUlRGRGF0YWJhc2VMb2FkZXI7CisK
Ky8vIFBhbm5lck5vZGUgaXMgYW4gQXVkaW9Ob2RlIHdpdGggb25lIGlucHV0IGFuZCBvbmUgb3V0
cHV0LgorLy8gSXQgcG9zaXRpb25zIGEgc291bmQgaW4gM0Qgc3BhY2UsIHdpdGggdGhlIGV4YWN0
IGVmZmVjdCBkZXBlbmRlbnQgb24gdGhlIHBhbm5pbmcgbW9kZWwuCisvLyBJdCBoYXMgYSBwb3Np
dGlvbiBhbmQgYW4gb3JpZW50YXRpb24gaW4gM0Qgc3BhY2Ugd2hpY2ggaXMgcmVsYXRpdmUgdG8g
dGhlIHBvc2l0aW9uIGFuZCBvcmllbnRhdGlvbiBvZiB0aGUgY29udGV4dCdzIEF1ZGlvTGlzdGVu
ZXIuCisvLyBBIGRpc3RhbmNlIGVmZmVjdCB3aWxsIGF0dGVudWF0ZSB0aGUgZ2FpbiBhcyB0aGUg
cG9zaXRpb24gbW92ZXMgYXdheSBmcm9tIHRoZSBsaXN0ZW5lci4KKy8vIEEgY29uZSBlZmZlY3Qg
d2lsbCBhdHRlbnVhdGUgdGhlIGdhaW4gYXMgdGhlIG9yaWVudGF0aW9uIG1vdmVzIGF3YXkgZnJv
bSB0aGUgbGlzdGVuZXIuCisvLyBBbGwgb2YgdGhlc2UgZWZmZWN0cyBmb2xsb3cgdGhlIE9wZW5B
TCBzcGVjaWZpY2F0aW9uIHZlcnkgY2xvc2VseS4KKworY2xhc3MgV2ViS2l0QXVkaW9QYW5uZXJO
b2RlIGZpbmFsIDogcHVibGljIFBhbm5lck5vZGVCYXNlIHsKKyAgICBXVEZfTUFLRV9JU09fQUxM
T0NBVEVEKFdlYktpdEF1ZGlvUGFubmVyTm9kZSk7CitwdWJsaWM6CisgICAgc3RhdGljIFJlZjxX
ZWJLaXRBdWRpb1Bhbm5lck5vZGU+IGNyZWF0ZShXZWJLaXRBdWRpb0NvbnRleHQmIGNvbnRleHQs
IGZsb2F0IHNhbXBsZVJhdGUpCisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBX
ZWJLaXRBdWRpb1Bhbm5lck5vZGUoY29udGV4dCwgc2FtcGxlUmF0ZSkpOworICAgIH0KKworICAg
IHZpcnR1YWwgfldlYktpdEF1ZGlvUGFubmVyTm9kZSgpOworCisgICAgV2ViS2l0QXVkaW9Db250
ZXh0JiBjb250ZXh0KCkgeyByZXR1cm4gZG93bmNhc3Q8V2ViS2l0QXVkaW9Db250ZXh0PihBdWRp
b05vZGU6OmNvbnRleHQoKSk7IH0KKyAgICBjb25zdCBXZWJLaXRBdWRpb0NvbnRleHQmIGNvbnRl
eHQoKSBjb25zdCB7IHJldHVybiBkb3duY2FzdDxXZWJLaXRBdWRpb0NvbnRleHQ+KEF1ZGlvTm9k
ZTo6Y29udGV4dCgpKTsgfQorCisgICAgLy8gQXVkaW9Ob2RlCisgICAgdm9pZCBwcm9jZXNzKHNp
emVfdCBmcmFtZXNUb1Byb2Nlc3MpIG92ZXJyaWRlOworICAgIHZvaWQgcHVsbElucHV0cyhzaXpl
X3QgZnJhbWVzVG9Qcm9jZXNzKSBvdmVycmlkZTsKKyAgICB2b2lkIHJlc2V0KCkgb3ZlcnJpZGU7
CisgICAgdm9pZCBpbml0aWFsaXplKCkgb3ZlcnJpZGU7CisgICAgdm9pZCB1bmluaXRpYWxpemUo
KSBvdmVycmlkZTsKKworICAgIC8vIExpc3RlbmVyCisgICAgQXVkaW9MaXN0ZW5lciogbGlzdGVu
ZXIoKTsKKworICAgIC8vIFBhbm5pbmcgbW9kZWwKKyAgICBQYW5uaW5nTW9kZWxUeXBlIHBhbm5p
bmdNb2RlbCgpIGNvbnN0IHsgcmV0dXJuIG1fcGFubmluZ01vZGVsOyB9CisgICAgdm9pZCBzZXRQ
YW5uaW5nTW9kZWwoUGFubmluZ01vZGVsVHlwZSk7CisKKyAgICAvLyBQb3NpdGlvbgorICAgIEZs
b2F0UG9pbnQzRCBwb3NpdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fcG9zaXRpb247IH0KKyAgICB2
b2lkIHNldFBvc2l0aW9uKGZsb2F0IHgsIGZsb2F0IHksIGZsb2F0IHopIHsgbV9wb3NpdGlvbiA9
IEZsb2F0UG9pbnQzRCh4LCB5LCB6KTsgfQorCisgICAgLy8gT3JpZW50YXRpb24KKyAgICBGbG9h
dFBvaW50M0Qgb3JpZW50YXRpb24oKSBjb25zdCB7IHJldHVybiBtX29yaWVudGF0aW9uOyB9Cisg
ICAgdm9pZCBzZXRPcmllbnRhdGlvbihmbG9hdCB4LCBmbG9hdCB5LCBmbG9hdCB6KSB7IG1fb3Jp
ZW50YXRpb24gPSBGbG9hdFBvaW50M0QoeCwgeSwgeik7IH0KKworICAgIC8vIFZlbG9jaXR5Cisg
ICAgRmxvYXRQb2ludDNEIHZlbG9jaXR5KCkgY29uc3QgeyByZXR1cm4gbV92ZWxvY2l0eTsgfQor
ICAgIHZvaWQgc2V0VmVsb2NpdHkoZmxvYXQgeCwgZmxvYXQgeSwgZmxvYXQgeikgeyBtX3ZlbG9j
aXR5ID0gRmxvYXRQb2ludDNEKHgsIHksIHopOyB9CisKKyAgICAvLyBEaXN0YW5jZSBwYXJhbWV0
ZXJzCisgICAgRGlzdGFuY2VNb2RlbFR5cGUgZGlzdGFuY2VNb2RlbCgpIGNvbnN0OworICAgIHZv
aWQgc2V0RGlzdGFuY2VNb2RlbChEaXN0YW5jZU1vZGVsVHlwZSk7CisKKyAgICBkb3VibGUgcmVm
RGlzdGFuY2UoKSB7IHJldHVybiBtX2Rpc3RhbmNlRWZmZWN0LnJlZkRpc3RhbmNlKCk7IH0KKyAg
ICB2b2lkIHNldFJlZkRpc3RhbmNlKGRvdWJsZSByZWZEaXN0YW5jZSkgeyBtX2Rpc3RhbmNlRWZm
ZWN0LnNldFJlZkRpc3RhbmNlKHJlZkRpc3RhbmNlKTsgfQorCisgICAgZG91YmxlIG1heERpc3Rh
bmNlKCkgeyByZXR1cm4gbV9kaXN0YW5jZUVmZmVjdC5tYXhEaXN0YW5jZSgpOyB9CisgICAgdm9p
ZCBzZXRNYXhEaXN0YW5jZShkb3VibGUgbWF4RGlzdGFuY2UpIHsgbV9kaXN0YW5jZUVmZmVjdC5z
ZXRNYXhEaXN0YW5jZShtYXhEaXN0YW5jZSk7IH0KKworICAgIGRvdWJsZSByb2xsb2ZmRmFjdG9y
KCkgeyByZXR1cm4gbV9kaXN0YW5jZUVmZmVjdC5yb2xsb2ZmRmFjdG9yKCk7IH0KKyAgICB2b2lk
IHNldFJvbGxvZmZGYWN0b3IoZG91YmxlIHJvbGxvZmZGYWN0b3IpIHsgbV9kaXN0YW5jZUVmZmVj
dC5zZXRSb2xsb2ZmRmFjdG9yKHJvbGxvZmZGYWN0b3IpOyB9CisKKyAgICAvLyBTb3VuZCBjb25l
cyAtIGFuZ2xlcyBpbiBkZWdyZWVzCisgICAgZG91YmxlIGNvbmVJbm5lckFuZ2xlKCkgY29uc3Qg
eyByZXR1cm4gbV9jb25lRWZmZWN0LmlubmVyQW5nbGUoKTsgfQorICAgIHZvaWQgc2V0Q29uZUlu
bmVyQW5nbGUoZG91YmxlIGFuZ2xlKSB7IG1fY29uZUVmZmVjdC5zZXRJbm5lckFuZ2xlKGFuZ2xl
KTsgfQorCisgICAgZG91YmxlIGNvbmVPdXRlckFuZ2xlKCkgY29uc3QgeyByZXR1cm4gbV9jb25l
RWZmZWN0Lm91dGVyQW5nbGUoKTsgfQorICAgIHZvaWQgc2V0Q29uZU91dGVyQW5nbGUoZG91Ymxl
IGFuZ2xlKSB7IG1fY29uZUVmZmVjdC5zZXRPdXRlckFuZ2xlKGFuZ2xlKTsgfQorCisgICAgZG91
YmxlIGNvbmVPdXRlckdhaW4oKSBjb25zdCB7IHJldHVybiBtX2NvbmVFZmZlY3Qub3V0ZXJHYWlu
KCk7IH0KKyAgICB2b2lkIHNldENvbmVPdXRlckdhaW4oZG91YmxlIGFuZ2xlKSB7IG1fY29uZUVm
ZmVjdC5zZXRPdXRlckdhaW4oYW5nbGUpOyB9CisKKyAgICB2b2lkIGdldEF6aW11dGhFbGV2YXRp
b24oZG91YmxlKiBvdXRBemltdXRoLCBkb3VibGUqIG91dEVsZXZhdGlvbik7CisgICAgZmxvYXQg
ZG9wcGxlclJhdGUoKSBmaW5hbDsKKworICAgIC8vIEFjY2Vzc29ycyBmb3IgZHluYW1pY2FsbHkg
Y2FsY3VsYXRlZCBnYWluIHZhbHVlcy4KKyAgICBBdWRpb1BhcmFtKiBkaXN0YW5jZUdhaW4oKSB7
IHJldHVybiBtX2Rpc3RhbmNlR2Fpbi5nZXQoKTsgfQorICAgIEF1ZGlvUGFyYW0qIGNvbmVHYWlu
KCkgeyByZXR1cm4gbV9jb25lR2Fpbi5nZXQoKTsgfQorCisgICAgZG91YmxlIHRhaWxUaW1lKCkg
Y29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9wYW5uZXIgPyBtX3Bhbm5lci0+dGFpbFRpbWUoKSA6
IDA7IH0KKyAgICBkb3VibGUgbGF0ZW5jeVRpbWUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBt
X3Bhbm5lciA/IG1fcGFubmVyLT5sYXRlbmN5VGltZSgpIDogMDsgfQorCitwcml2YXRlOgorICAg
IFdlYktpdEF1ZGlvUGFubmVyTm9kZShXZWJLaXRBdWRpb0NvbnRleHQmLCBmbG9hdCBzYW1wbGVS
YXRlKTsKKworICAgIC8vIFJldHVybnMgdGhlIGNvbWJpbmVkIGRpc3RhbmNlIGFuZCBjb25lIGdh
aW4gYXR0ZW51YXRpb24uCisgICAgZmxvYXQgZGlzdGFuY2VDb25lR2FpbigpOworCisgICAgLy8g
Tm90aWZpZXMgYW55IEF1ZGlvQnVmZmVyU291cmNlTm9kZXMgY29ubmVjdGVkIHRvIHVzIGVpdGhl
ciBkaXJlY3RseSBvciBpbmRpcmVjdGx5IGFib3V0IG91ciBleGlzdGVuY2UuCisgICAgLy8gVGhp
cyBpcyBpbiBvcmRlciB0byBoYW5kbGUgdGhlIHBpdGNoIGNoYW5nZSBuZWNlc3NhcnkgZm9yIHRo
ZSBkb3BwbGVyIHNoaWZ0LgorICAgIHZvaWQgbm90aWZ5QXVkaW9Tb3VyY2VzQ29ubmVjdGVkVG9O
b2RlKEF1ZGlvTm9kZSosIEhhc2hTZXQ8QXVkaW9Ob2RlKj4mIHZpc2l0ZWROb2Rlcyk7CisKKyAg
ICBzdGQ6OnVuaXF1ZV9wdHI8UGFubmVyPiBtX3Bhbm5lcjsKKyAgICBQYW5uaW5nTW9kZWxUeXBl
IG1fcGFubmluZ01vZGVsOworCisgICAgRmxvYXRQb2ludDNEIG1fcG9zaXRpb247CisgICAgRmxv
YXRQb2ludDNEIG1fb3JpZW50YXRpb247CisgICAgRmxvYXRQb2ludDNEIG1fdmVsb2NpdHk7CisK
KyAgICAvLyBHYWluCisgICAgUmVmUHRyPEF1ZGlvUGFyYW0+IG1fZGlzdGFuY2VHYWluOworICAg
IFJlZlB0cjxBdWRpb1BhcmFtPiBtX2NvbmVHYWluOworICAgIERpc3RhbmNlRWZmZWN0IG1fZGlz
dGFuY2VFZmZlY3Q7CisgICAgQ29uZUVmZmVjdCBtX2NvbmVFZmZlY3Q7CisgICAgZmxvYXQgbV9s
YXN0R2FpbjsKKworICAgIC8vIEhSVEYgRGF0YWJhc2UgbG9hZGVyCisgICAgUmVmUHRyPEhSVEZE
YXRhYmFzZUxvYWRlcj4gbV9ocnRmRGF0YWJhc2VMb2FkZXI7CisKKyAgICB1bnNpZ25lZCBtX2Nv
bm5lY3Rpb25Db3VudDsKKworICAgIC8vIFN5bmNocm9uaXplIHByb2Nlc3MoKSBhbmQgc2V0UGFu
bmluZ01vZGVsKCkgd2hpY2ggY2FuIGNoYW5nZSB0aGUgcGFubmVyLgorICAgIG11dGFibGUgTG9j
ayBtX3Bhbm5lck11dGV4OworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vV2ViS2l0QXVkaW9Q
YW5uZXJOb2RlLmlkbCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vV2ViS2l0QXVk
aW9QYW5uZXJOb2RlLmlkbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44OGQyNjkxMGFlMTc1MDQyMTM2YTVlNjJmYWM4
MTNjYzVmYzM2NzJmCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJhdWRpby9XZWJLaXRBdWRpb1Bhbm5lck5vZGUuaWRsCkBAIC0wLDAgKzEsNDkgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTAsIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiAgUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJ
RUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTgorICogQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTCisgKiBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCitbCisgICAgQ29uZGl0aW9uYWw9V0VCX0FVRElPLAorICAgIEpTR2VuZXJhdGVUb0pT
T2JqZWN0LAorICAgIEludGVyZmFjZU5hbWU9d2Via2l0QXVkaW9QYW5uZXJOb2RlLAorXSBpbnRl
cmZhY2UgV2ViS2l0QXVkaW9QYW5uZXJOb2RlIDogQXVkaW9Ob2RlIHsKKyAgICAvLyBEZWZhdWx0
IG1vZGVsIGZvciBzdGVyZW8gaXMgSFJURgorICAgIGF0dHJpYnV0ZSBQYW5uaW5nTW9kZWxUeXBl
IHBhbm5pbmdNb2RlbDsKKworICAgIC8vIFVzZXMgYSAzRCBjYXJ0ZXNpYW4gY29vcmRpbmF0ZSBz
eXN0ZW0KKyAgICB2b2lkIHNldFBvc2l0aW9uKHVucmVzdHJpY3RlZCBmbG9hdCB4LCB1bnJlc3Ry
aWN0ZWQgZmxvYXQgeSwgdW5yZXN0cmljdGVkIGZsb2F0IHopOworICAgIHZvaWQgc2V0T3JpZW50
YXRpb24odW5yZXN0cmljdGVkIGZsb2F0IHgsIHVucmVzdHJpY3RlZCBmbG9hdCB5LCB1bnJlc3Ry
aWN0ZWQgZmxvYXQgeik7CisgICAgdm9pZCBzZXRWZWxvY2l0eSh1bnJlc3RyaWN0ZWQgZmxvYXQg
eCwgdW5yZXN0cmljdGVkIGZsb2F0IHksIHVucmVzdHJpY3RlZCBmbG9hdCB6KTsKKworICAgIC8v
IERpc3RhbmNlIG1vZGVsCisgICAgYXR0cmlidXRlIERpc3RhbmNlTW9kZWxUeXBlIGRpc3RhbmNl
TW9kZWw7CisKKyAgICBhdHRyaWJ1dGUgdW5yZXN0cmljdGVkIGRvdWJsZSByZWZEaXN0YW5jZTsK
KyAgICBhdHRyaWJ1dGUgdW5yZXN0cmljdGVkIGRvdWJsZSBtYXhEaXN0YW5jZTsKKyAgICBhdHRy
aWJ1dGUgdW5yZXN0cmljdGVkIGRvdWJsZSByb2xsb2ZmRmFjdG9yOworCisgICAgLy8gRGlyZWN0
aW9uYWwgc291bmQgY29uZQorICAgIGF0dHJpYnV0ZSB1bnJlc3RyaWN0ZWQgZG91YmxlIGNvbmVJ
bm5lckFuZ2xlOworICAgIGF0dHJpYnV0ZSB1bnJlc3RyaWN0ZWQgZG91YmxlIGNvbmVPdXRlckFu
Z2xlOworICAgIGF0dHJpYnV0ZSB1bnJlc3RyaWN0ZWQgZG91YmxlIGNvbmVPdXRlckdhaW47Cit9
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9XZWJLaXRPZmZs
aW5lQXVkaW9Db250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vV2Vi
S2l0T2ZmbGluZUF1ZGlvQ29udGV4dC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDhlMzk5YTE0YTNkNWQzMTY3
NWJhOWEwNmY4MTQwMzEyMzUyYjRhMQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViYXVkaW8vV2ViS2l0T2ZmbGluZUF1ZGlvQ29udGV4dC5jcHAKQEAgLTAsMCAr
MSw2MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiwgR29vZ2xlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5EIEFOWQorICog
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OCisgKiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMKKyAqIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2lmIEVOQUJMRShX
RUJfQVVESU8pCisKKyNpbmNsdWRlICJXZWJLaXRPZmZsaW5lQXVkaW9Db250ZXh0LmgiCisKKyNp
bmNsdWRlICJBdWRpb0J1ZmZlci5oIgorI2luY2x1ZGUgIkRvY3VtZW50LmgiCisjaW5jbHVkZSA8
d3RmL0lzb01hbGxvY0lubGluZXMuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitXVEZfTUFL
RV9JU09fQUxMT0NBVEVEX0lNUEwoV2ViS2l0T2ZmbGluZUF1ZGlvQ29udGV4dCk7CisKK2lubGlu
ZSBXZWJLaXRPZmZsaW5lQXVkaW9Db250ZXh0OjpXZWJLaXRPZmZsaW5lQXVkaW9Db250ZXh0KERv
Y3VtZW50JiBkb2N1bWVudCwgQXVkaW9CdWZmZXIqIHJlbmRlclRhcmdldCkKKyAgICA6IFdlYktp
dEF1ZGlvQ29udGV4dChkb2N1bWVudCwgcmVuZGVyVGFyZ2V0KQoreworfQorCitFeGNlcHRpb25P
cjxSZWY8V2ViS2l0T2ZmbGluZUF1ZGlvQ29udGV4dD4+IFdlYktpdE9mZmxpbmVBdWRpb0NvbnRl
eHQ6OmNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCB1bnNpZ25lZCBudW1i
ZXJPZkNoYW5uZWxzLCBzaXplX3QgbnVtYmVyT2ZGcmFtZXMsIGZsb2F0IHNhbXBsZVJhdGUpCit7
CisgICAgLy8gRklYTUU6IEFkZCBzdXBwb3J0IGZvciB3b3JrZXJzLgorICAgIGlmICghaXM8RG9j
dW1lbnQ+KGNvbnRleHQpKQorICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgTm90U3VwcG9ydGVk
RXJyb3IgfTsKKyAgICBpZiAoIW51bWJlck9mQ2hhbm5lbHMgfHwgbnVtYmVyT2ZDaGFubmVscyA+
IDEwIHx8ICFudW1iZXJPZkZyYW1lcyB8fCAhaXNTYW1wbGVSYXRlUmFuZ2VHb29kKHNhbXBsZVJh
dGUpKQorICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgU3ludGF4RXJyb3IgfTsKKyAgICBhdXRv
IHJlbmRlclRhcmdldCA9IEF1ZGlvQnVmZmVyOjpjcmVhdGUobnVtYmVyT2ZDaGFubmVscywgbnVt
YmVyT2ZGcmFtZXMsIHNhbXBsZVJhdGUpOworICAgIGlmICghcmVuZGVyVGFyZ2V0KQorICAgICAg
ICByZXR1cm4gRXhjZXB0aW9uIHsgU3ludGF4RXJyb3IgfTsKKworICAgIGF1dG8gYXVkaW9Db250
ZXh0ID0gYWRvcHRSZWYoKm5ldyBXZWJLaXRPZmZsaW5lQXVkaW9Db250ZXh0KGRvd25jYXN0PERv
Y3VtZW50Pihjb250ZXh0KSwgcmVuZGVyVGFyZ2V0LmdldCgpKSk7CisgICAgYXVkaW9Db250ZXh0
LT5zdXNwZW5kSWZOZWVkZWQoKTsKKyAgICByZXR1cm4gYXVkaW9Db250ZXh0OworfQorCit9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoV0VCX0FVRElPKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9XZWJLaXRPZmZsaW5lQXVkaW9D
b250ZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1dlYktpdE9mZmxpbmVB
dWRpb0NvbnRleHQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jMjU0ZWQ0MWZlMDNkNjFlN2VjYjU0ODdlMmM3OWM0
NzQ2MTgyZjk0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJh
dWRpby9XZWJLaXRPZmZsaW5lQXVkaW9Db250ZXh0LmgKQEAgLTAsMCArMSw0MCBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxMiwgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuICBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElF
RAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OCisgKiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKKyAqIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiV2ViS2l0QXVkaW9Db250ZXh0LmgiCisK
K25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgV2ViS2l0T2ZmbGluZUF1ZGlvQ29udGV4dCBm
aW5hbCA6IHB1YmxpYyBXZWJLaXRBdWRpb0NvbnRleHQgeworICAgIFdURl9NQUtFX0lTT19BTExP
Q0FURUQoV2ViS2l0T2ZmbGluZUF1ZGlvQ29udGV4dCk7CitwdWJsaWM6CisgICAgc3RhdGljIEV4
Y2VwdGlvbk9yPFJlZjxXZWJLaXRPZmZsaW5lQXVkaW9Db250ZXh0Pj4gY3JlYXRlKFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQmLCB1bnNpZ25lZCBudW1iZXJPZkNoYW5uZWxzLCBzaXplX3QgbnVtYmVy
T2ZGcmFtZXMsIGZsb2F0IHNhbXBsZVJhdGUpOworCitwcml2YXRlOgorICAgIFdlYktpdE9mZmxp
bmVBdWRpb0NvbnRleHQoRG9jdW1lbnQmLCBBdWRpb0J1ZmZlciogcmVuZGVyVGFyZ2V0KTsKK307
CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViYXVkaW8vV2ViS2l0T2ZmbGluZUF1ZGlvQ29udGV4dC5pZGwgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1dlYktpdE9mZmxpbmVBdWRpb0NvbnRleHQuaWRsCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjU2YTY0OGJjMmE1ZjIxYzMwNWRkNDgwYzQxYTAwNTIzMTI0ZGNiZjEKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1dlYktpdE9mZmxpbmVB
dWRpb0NvbnRleHQuaWRsCkBAIC0wLDAgKzEsMzEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTIsIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
ICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBB
UkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTgorICogQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTCisgKiBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCitbCisgICAgQ29u
ZGl0aW9uYWw9V0VCX0FVRElPLAorICAgIEludGVyZmFjZU5hbWU9d2Via2l0T2ZmbGluZUF1ZGlv
Q29udGV4dCwKKyAgICBKU0dlbmVyYXRlVG9KU09iamVjdCwKK10gaW50ZXJmYWNlIFdlYktpdE9m
ZmxpbmVBdWRpb0NvbnRleHQgOiBXZWJLaXRBdWRpb0NvbnRleHQgeworICAgIFtDYWxsV2l0aD1T
Y3JpcHRFeGVjdXRpb25Db250ZXh0LCBNYXlUaHJvd0V4Y2VwdGlvbl0gY29uc3RydWN0b3IodW5z
aWduZWQgbG9uZyBudW1iZXJPZkNoYW5uZWxzLCB1bnNpZ25lZCBsb25nIG51bWJlck9mRnJhbWVz
LCB1bnJlc3RyaWN0ZWQgZmxvYXQgc2FtcGxlUmF0ZSk7Cit9OwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvU291cmNlcy50eHQgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAppbmRleCAy
YzU2ZWQ1MTM5ZGIwNzlhODZjNzc1MWE5NTYzOGNiMjQ4YmZlNmM3Li4xNDk1OWMzODE1MDM1NmE4
N2RlZWUzMmVmYjM3YjI2MjU2NWYyNmU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Tb3Vy
Y2VzLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dApAQCAtMjY5LDYgKzI2OSw5
IEBAIE1vZHVsZXMvd2ViYXVkaW8vU2NyaXB0UHJvY2Vzc29yTm9kZS5jcHAKIE1vZHVsZXMvd2Vi
YXVkaW8vV2F2ZVNoYXBlckRTUEtlcm5lbC5jcHAKIE1vZHVsZXMvd2ViYXVkaW8vV2F2ZVNoYXBl
ck5vZGUuY3BwCiBNb2R1bGVzL3dlYmF1ZGlvL1dhdmVTaGFwZXJQcm9jZXNzb3IuY3BwCitNb2R1
bGVzL3dlYmF1ZGlvL1dlYktpdEF1ZGlvQ29udGV4dC5jcHAKK01vZHVsZXMvd2ViYXVkaW8vV2Vi
S2l0QXVkaW9QYW5uZXJOb2RlLmNwcAorTW9kdWxlcy93ZWJhdWRpby9XZWJLaXRPZmZsaW5lQXVk
aW9Db250ZXh0LmNwcAogCiBNb2R1bGVzL3dlYmF1dGhuL0F1dGhlbnRpY2F0b3JDb29yZGluYXRv
ci5jcHAKIE1vZHVsZXMvd2ViYXV0aG4vQXV0aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNlLmNw
cApAQCAtMjc0NCw2ICsyNzQ3LDcgQEAgSlNBdWRpb0J1ZmZlckNhbGxiYWNrLmNwcAogSlNBdWRp
b0J1ZmZlclNvdXJjZU5vZGUuY3BwCiBKU0F1ZGlvQ29uZmlndXJhdGlvbi5jcHAKIEpTQXVkaW9D
b250ZXh0LmNwcAorSlNBdWRpb0NvbnRleHRTdGF0ZS5jcHAKIEpTQXVkaW9EZXN0aW5hdGlvbk5v
ZGUuY3BwCiBKU0F1ZGlvTGlzdGVuZXIuY3BwCiBKU0F1ZGlvTm9kZS5jcHAKQEAgLTI5MTQsNiAr
MjkxOCw3IEBAIEpTRGV2aWNlTW90aW9uRXZlbnQuY3BwCiBKU0RldmljZU9yaWVudGF0aW9uRXZl
bnQuY3BwCiBKU0RldmljZU9yaWVudGF0aW9uT3JNb3Rpb25QZXJtaXNzaW9uU3RhdGUuY3BwCiBK
U0RldmljZU9yaWVudGF0aW9uT3JNb3Rpb25FdmVudC5jcHAKK0pTRGlzdGFuY2VNb2RlbFR5cGUu
Y3BwCiBKU0RvY3VtZW50LmNwcAogSlNEb2N1bWVudEFuZEVsZW1lbnRFdmVudEhhbmRsZXJzLmNw
cAogSlNEb2N1bWVudEZyYWdtZW50LmNwcApAQCAtMzIxMSw2ICszMjE2LDcgQEAgSlNPdmVyZmxv
d0V2ZW50LmNwcAogSlNQYWdlVHJhbnNpdGlvbkV2ZW50LmNwcAogSlNQYWludFJlbmRlcmluZ0Nv
bnRleHQyRC5jcHAKIEpTUGFubmVyTm9kZS5jcHAKK0pTUGFubmluZ01vZGVsVHlwZS5jcHAKIEpT
UGFyZW50Tm9kZS5jcHAKIEpTUGF0aDJELmNwcAogSlNQYXllckVycm9yRmllbGRzLmNwcApAQCAt
MzU2Nyw3ICszNTczLDEwIEBAIEpTV2ViR1BVU3dhcENoYWluLmNwcAogSlNXZWJHUFVUZXh0dXJl
LmNwcAogSlNXZWJHUFVUZXh0dXJlVmlldy5jcHAKIEpTV2ViS2l0QW5pbWF0aW9uRXZlbnQuY3Bw
CitKU1dlYktpdEF1ZGlvQ29udGV4dC5jcHAKK0pTV2ViS2l0QXVkaW9QYW5uZXJOb2RlLmNwcAog
SlNXZWJLaXRDU1NNYXRyaXguY3BwCitKU1dlYktpdE9mZmxpbmVBdWRpb0NvbnRleHQuY3BwCiBK
U1dlYktpdFBsYXliYWNrVGFyZ2V0QXZhaWxhYmlsaXR5RXZlbnQuY3BwCiBKU1dlYktpdFBvaW50
LmNwcAogSlNXZWJLaXRUcmFuc2l0aW9uRXZlbnQuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggYzdhYWM4NTk2NzY3ODE4YjY5
ZDM1OGUzYWQ4MDQ4NGUxMjY0Yjg2MC4uNDZmOTZkMTUwY2JmMWI3ZmJkODY1OTI0YjZiMTRkMmY2
Yzg3MmVkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagpAQCAtMjQwNywxMiArMjQwNywxNiBAQAogCQk4MzAwMzBGODFCN0QzQjc4MDBF
RDNBQUMgLyogQ2FjaGVkSFRNTENvbGxlY3Rpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgzMDAzMEY3MUI3RDM5ODgwMEVEM0FBQyAvKiBDYWNoZWRI
VE1MQ29sbGVjdGlvbi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CiAJCTgzMDMzNTAyMUY1NDkwNTcwMDRERjcwNyAvKiBGaWxlU3lzdGVtRGlyZWN0b3J5
UmVhZGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4
MzAzMzRGQzFGNTQ5MDUyMDA0REY3MDcgLyogRmlsZVN5c3RlbURpcmVjdG9yeVJlYWRlci5oICov
OyB9OwogCQk4MzAzMzUwMzFGNTQ5MDVBMDA0REY3MDcgLyogRmlsZVN5c3RlbUVudHJpZXNDYWxs
YmFjay5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODMw
MzM0RkUxRjU0OTA1MjAwNERGNzA3IC8qIEZpbGVTeXN0ZW1FbnRyaWVzQ2FsbGJhY2suaCAqLzsg
fTsKKwkJODMwNDAyODIyNDlBN0E1RjAwQTkwRDhEIC8qIFBhbm5pbmdNb2RlbFR5cGUuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgzMDQwMjgwMjQ5QTdB
NUMwMEE5MEQ4RCAvKiBQYW5uaW5nTW9kZWxUeXBlLmggKi87IH07CisJCTgzMDQwMjgzMjQ5QTdB
NjIwMEE5MEQ4RCAvKiBEaXN0YW5jZU1vZGVsVHlwZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODMwNDAyN0QyNDlBN0E1QjAwQTkwRDhEIC8qIERpc3Rh
bmNlTW9kZWxUeXBlLmggKi87IH07CiAJCTgzMDUxOTk2MUJCMEYxMTAwMEYzNzcyRSAvKiBIVE1M
VGltZUVsZW1lbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDgzMDUxOTkzMUJCMEYwRTcwMEYzNzcyRSAvKiBIVE1MVGltZUVsZW1lbnQuaCAqLzsgfTsK
IAkJODMwNzg0QjIxQzUyRUUyQzAwMTA0RDFEIC8qIFhNTERvY3VtZW50LmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4MzA3ODRCMTFDNTJFRTE5MDAxMDRE
MUQgLyogWE1MRG9jdW1lbnQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwogCQk4MzBBMzZCRDFEQUM1RkFEMDA2RDdEMDkgLyogSlNNb3VzZUV2ZW50SW5p
dC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODMwQTM2
QkIxREFDNUZBNzAwNkQ3RDA5IC8qIEpTTW91c2VFdmVudEluaXQuaCAqLzsgfTsKIAkJODMxMDJC
MjcxRjlFQUREOTAwRTQwNEI5IC8qIEpTRXh0ZW5kYWJsZU1lc3NhZ2VFdmVudC5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODMxMDJCMjMxRjlFQURDMjAw
RTQwNEI5IC8qIEpTRXh0ZW5kYWJsZU1lc3NhZ2VFdmVudC5oICovOyB9OwogCQk4MzExQzAwMzFG
QUEyRTk1MDBFM0M4RTUgLyogU1dTZXJ2ZXJKb2JRdWV1ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODMxMUMwMDIxRkFBMkU4OTAwRTNDOEU1IC8qIFNX
U2VydmVySm9iUXVldWUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwogCQk4MzEyMEM3MTFDNTZGM0ZCMDAxQ0IxMTIgLyogSFRNTERhdGFFbGVtZW50Lmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4MzRCODZBNzFD
NTZFODNBMDBGM0YwRTMgLyogSFRNTERhdGFFbGVtZW50LmggKi87IH07CisJCTgzMUI2MTc2MjQ5
OUE1QkIwMEMwN0M3OSAvKiBXZWJLaXRBdWRpb1Bhbm5lck5vZGUuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgzMUI2MTc0MjQ5OUE1OUMwMEMwN0M3OSAv
KiBXZWJLaXRBdWRpb1Bhbm5lck5vZGUuaCAqLzsgfTsKKwkJODMxQjYxNzcyNDk5QTVCRjAwQzA3
Qzc5IC8qIFdlYktpdE9mZmxpbmVBdWRpb0NvbnRleHQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgzMUI2MTc1MjQ5OUE1OUQwMEMwN0M3OSAvKiBXZWJL
aXRPZmZsaW5lQXVkaW9Db250ZXh0LmggKi87IH07CiAJCTgzMjE1MDdFMUYyN0VBMUIwMDk1QjEz
NiAvKiBOYXZpZ2F0b3JCZWFjb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDgzMjE1MDdCMUYyN0VBMTUwMDk1QjEzNiAvKiBOYXZpZ2F0b3JCZWFjb24u
aCAqLzsgfTsKIAkJODMyQjg0MzQxOUQ4RTU1MTAwQjI2MDU1IC8qIFNWR0FuaW1hdGVFbGVtZW50
QmFzZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODMy
Qjg0MzMxOUQ4RTU1MTAwQjI2MDU1IC8qIFNWR0FuaW1hdGVFbGVtZW50QmFzZS5oICovOyB9Owog
CQk4MzNCOUUzMjFGNTA4RDg1MDBFMEU0MjggLyogSlNGaWxlU3lzdGVtRGlyZWN0b3J5RW50cnku
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgzM0I5RTJG
MUY1MDhEODAwMEUwRTQyOCAvKiBKU0ZpbGVTeXN0ZW1EaXJlY3RvcnlFbnRyeS5oICovOyB9OwpA
QCAtMjQ2OCwxMCArMjQ3MiwxMiBAQAogCQk4MzlBMkYyRTFFMjA0QTcxMDAzOTA1N0UgLyogV2Vi
R0xTdGF0ZVRyYWNrZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDgzOUEyRjJDMUUyMDRBNkQwMDM5MDU3RSAvKiBXZWJHTFN0YXRlVHJhY2tlci5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTgzOUFBRkVE
MUEwQzBDOEQwMDYwNUY5OSAvKiBIVE1MV0JSRWxlbWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODM5QUFGRUIxQTBDMEM4RDAwNjA1Rjk5IC8qIEhU
TUxXQlJFbGVtZW50LmggKi87IH07CiAJCTgzQThBQzQwMUZBQkJGRTUwMDIwNjRBQyAvKiBTZXJ2
aWNlV29ya2VySWRlbnRpZmllci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gODNBOEFDM0UxRkFCQkZEMTAwMjA2NEFDIC8qIFNlcnZpY2VXb3JrZXJJZGVu
dGlmaWVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
KwkJODNCMUE3MDIyNDk5ODVGMDAwRkU1OTYxIC8qIFdlYktpdEF1ZGlvQ29udGV4dC5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODNCMUE2RkYyNDk5ODVE
MDAwRkU1OTYxIC8qIFdlYktpdEF1ZGlvQ29udGV4dC5oICovOyB9OwogCQk4M0IyRDE3NTFCOEJD
RDZBMDBBMDJFNDcgLyogTmF0aXZlTm9kZUZpbHRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODNFOTU5RTExQjhCQzIyQjAwNEQ5Mzg1IC8qIE5hdGl2
ZU5vZGVGaWx0ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwogCQk4M0I3NEVGNjFGM0UwQkYyMDA5OTZCQzcgLyogS2VlcGFsaXZlUmVxdWVzdFRyYWNr
ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgzQjc0
RUYzMUYzRTBCRDcwMDk5NkJDNyAvKiBLZWVwYWxpdmVSZXF1ZXN0VHJhY2tlci5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTgzQjk2ODdCMTlGOEFC
ODMwMDRFRjdBRiAvKiBTdHlsZUJ1aWxkZXJDb252ZXJ0ZXIuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgzQjk2ODc5MTlGOEFCODMwMDRFRjdBRiAvKiBT
dHlsZUJ1aWxkZXJDb252ZXJ0ZXIuaCAqLzsgfTsKIAkJODNCQjVDODgxRDVENkY0NTAwNUE3MUY0
IC8qIEFsbERlc2NlbmRhbnRzQ29sbGVjdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gODNCQjVDODcxRDVENkYzQTAwNUE3MUY0IC8qIEFsbERlc2Nl
bmRhbnRzQ29sbGVjdGlvbi5oICovOyB9OworCQk4M0JEM0NFRTI0OTk4RTAxMDBCQTNFNjcgLyog
QXVkaW9Db250ZXh0U3RhdGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDgzQkQzQ0VEMjQ5OThERjYwMEJBM0U2NyAvKiBBdWRpb0NvbnRleHRTdGF0ZS5o
ICovOyB9OwogCQk4M0MwNUE1QjFBNjg2MjEyMDA3RTVERUEgLyogU3R5bGVQcm9wZXJ0eVNob3J0
aGFuZEZ1bmN0aW9ucy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gODNDMDVBNTkxQTY4NjIxMjAwN0U1REVBIC8qIFN0eWxlUHJvcGVydHlTaG9ydGhhbmRG
dW5jdGlvbnMuaCAqLzsgfTsKIAkJODNDMUY1OTQxRURGNjlEMzAwNDEwRDI3IC8qIFF1YWxpZmll
ZE5hbWVDYWNoZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gODNDMUY1OTIxRURGNjlEMzAwNDEwRDI3IC8qIFF1YWxpZmllZE5hbWVDYWNoZS5oICovOyB9
OwogCQk4M0M0NUI4RTFEQzJCNjhBMDA4ODcxQkEgLyogVmFsaWRhdGlvbkJ1YmJsZS5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODNDNDVCOEQxREMyQjY3
QzAwODg3MUJBIC8qIFZhbGlkYXRpb25CdWJibGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtMTAyOTcsMTEgKzEwMzAzLDE2IEBACiAJCTgzMDAz
MEYzMUI3RDMzQTYwMEVEM0FBQyAvKiBHZW5lcmljQ2FjaGVkSFRNTENvbGxlY3Rpb24uY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gR2VuZXJpY0NhY2hlZEhUTUxDb2xs
ZWN0aW9uLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODMwMDMwRjQxQjdEMzNB
NjAwRUQzQUFDIC8qIEdlbmVyaWNDYWNoZWRIVE1MQ29sbGVjdGlvbi5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBHZW5lcmljQ2FjaGVkSFRNTENvbGxlY3Rpb24uaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODMwMDMwRjcxQjdEMzk4ODAwRUQzQUFDIC8qIENhY2hl
ZEhUTUxDb2xsZWN0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENhY2hl
ZEhUTUxDb2xsZWN0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTgzMDAzRTJC
MjQ5OTk3QTgwMDYwQUY5NCAvKiBXZWJLaXRBdWRpb0NvbnRleHQuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2ViS2l0QXVkaW9Db250ZXh0LmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODMwMzM0RkIxRjU0OTA1MjAwNERGNzA3IC8qIEZpbGVTeXN0
ZW1EaXJlY3RvcnlSZWFkZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gRmlsZVN5c3RlbURpcmVjdG9yeVJlYWRlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTgzMDMzNEZDMUY1NDkwNTIwMDRERjcwNyAvKiBGaWxlU3lzdGVtRGlyZWN0b3J5UmVh
ZGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEZpbGVTeXN0ZW1EaXJlY3Rv
cnlSZWFkZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODMwMzM0RkQxRjU0OTA1
MjAwNERGNzA3IC8qIEZpbGVTeXN0ZW1FbnRyaWVzQ2FsbGJhY2suaWRsICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4
dDsgcGF0aCA9IEZpbGVTeXN0ZW1FbnRyaWVzQ2FsbGJhY2suaWRsOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk4MzAzMzRGRTFGNTQ5MDUyMDA0REY3MDcgLyogRmlsZVN5c3RlbUVudHJp
ZXNDYWxsYmFjay5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBGaWxlU3lzdGVt
RW50cmllc0NhbGxiYWNrLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTgzMDMzNEZG
MUY1NDkwNTIwMDRERjcwNyAvKiBGaWxlU3lzdGVtRGlyZWN0b3J5UmVhZGVyLmlkbCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHRleHQ7IHBhdGggPSBGaWxlU3lzdGVtRGlyZWN0b3J5UmVhZGVyLmlkbDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJODMwNDAyN0QyNDlBN0E1QjAwQTkwRDhEIC8qIERpc3RhbmNl
TW9kZWxUeXBlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERpc3RhbmNlTW9k
ZWxUeXBlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTgzMDQwMjdGMjQ5QTdBNUMw
MEE5MEQ4RCAvKiBEaXN0YW5jZU1vZGVsVHlwZS5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0g
RGlzdGFuY2VNb2RlbFR5cGUuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk4MzA0
MDI4MDI0OUE3QTVDMDBBOTBEOEQgLyogUGFubmluZ01vZGVsVHlwZS5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBQYW5uaW5nTW9kZWxUeXBlLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTgzMDQwMjgxMjQ5QTdBNUQwMEE5MEQ4RCAvKiBQYW5uaW5nTW9kZWxUeXBl
LmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBQYW5uaW5nTW9kZWxUeXBlLmlkbDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODMwNTE5OTIxQkIwRjBFNzAwRjM3NzJFIC8qIEhUTUxU
aW1lRWxlbWVudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBIVE1M
VGltZUVsZW1lbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4MzA1MTk5MzFC
QjBGMEU3MDBGMzc3MkUgLyogSFRNTFRpbWVFbGVtZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IEhUTUxUaW1lRWxlbWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk4MzA1MTk5NDFCQjBGMEU3MDBGMzc3MkUgLyogSFRNTFRpbWVFbGVtZW50LmlkbCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHRleHQ7IHBhdGggPSBIVE1MVGltZUVsZW1lbnQuaWRsOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwpAQCAtMTAzMTQsNiArMTAzMjUsMTIgQEAKIAkJODMxMDJCMjUxRjlFQURDMjAw
RTQwNEI5IC8qIEpTRXh0ZW5kYWJsZU1lc3NhZ2VFdmVudC5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBKU0V4dGVuZGFibGVNZXNzYWdlRXZlbnQuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk4MzExQzAwMDFGQUEyRTg5MDBFM0M4RTUgLyogU1dTZXJ2
ZXJKb2JRdWV1ZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTV1Nl
cnZlckpvYlF1ZXVlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODMxMUMwMDIx
RkFBMkU4OTAwRTNDOEU1IC8qIFNXU2VydmVySm9iUXVldWUuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gU1dTZXJ2ZXJKb2JRdWV1ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQk4MzFCNjE2RjI0OTlBNTk4MDBDMDdDNzkgLyogV2ViS2l0QXVkaW9QYW5uZXJOb2Rl
LmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBXZWJLaXRBdWRpb1Bhbm5lck5vZGUuaWRsOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk4MzFCNjE3MTI0OTlBNTk5MDBDMDdDNzkgLyog
V2ViS2l0QXVkaW9QYW5uZXJOb2RlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IFdlYktpdEF1ZGlvUGFubmVyTm9kZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTgzMUI2MTcyMjQ5OUE1OUEwMEMwN0M3OSAvKiBXZWJLaXRPZmZsaW5lQXVkaW9Db250
ZXh0LmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBXZWJLaXRPZmZsaW5lQXVkaW9Db250ZXh0
LmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJODMxQjYxNzMyNDk5QTU5QjAwQzA3
Qzc5IC8qIFdlYktpdE9mZmxpbmVBdWRpb0NvbnRleHQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gV2ViS2l0T2ZmbGluZUF1ZGlvQ29udGV4dC5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTgzMUI2MTc0MjQ5OUE1OUMwMEMwN0M3OSAvKiBXZWJLaXRB
dWRpb1Bhbm5lck5vZGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViS2l0
QXVkaW9QYW5uZXJOb2RlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTgzMUI2MTc1
MjQ5OUE1OUQwMEMwN0M3OSAvKiBXZWJLaXRPZmZsaW5lQXVkaW9Db250ZXh0LmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYktpdE9mZmxpbmVBdWRpb0NvbnRleHQuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODMxQzQ2QzMxRjlFRTVFMDAwRUJENDUwIC8qIEpT
RXh0ZW5kYWJsZU1lc3NhZ2VFdmVudEN1c3RvbS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBKU0V4dGVuZGFibGVNZXNzYWdlRXZlbnRDdXN0b20uY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk4MzFEMUYyOTFDNTZFQ0EwMDBGNUY2QzAgLyogSFRNTERh
dGFFbGVtZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEhUTUxE
YXRhRWxlbWVudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTgzMjE1MDdBMUYy
N0VBMTUwMDk1QjEzNiAvKiBOYXZpZ2F0b3JCZWFjb24uY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
TmF2aWdhdG9yQmVhY29uLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTEwNDQx
LDYgKzEwNDU4LDggQEAKIAkJODM5QUFGRUIxQTBDMEM4RDAwNjA1Rjk5IC8qIEhUTUxXQlJFbGVt
ZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEhUTUxXQlJFbGVtZW50Lmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTgzQTRBOUY4MUNFN0ZEN0UwMDcwOUIwMCAv
KiBKU1hNTERvY3VtZW50Q3VzdG9tLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IEpTWE1MRG9jdW1lbnRDdXN0b20uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk4M0E4QUMzRTFGQUJCRkQxMDAyMDY0QUMgLyogU2VydmljZVdvcmtlcklkZW50aWZpZXIu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2VydmljZVdvcmtlcklkZW50aWZp
ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJODNCMUE2RkYyNDk5ODVEMDAwRkU1
OTYxIC8qIFdlYktpdEF1ZGlvQ29udGV4dC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBXZWJLaXRBdWRpb0NvbnRleHQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
ODNCMUE3MDEyNDk5ODVEMDAwRkU1OTYxIC8qIFdlYktpdEF1ZGlvQ29udGV4dC5pZGwgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSB0ZXh0OyBwYXRoID0gV2ViS2l0QXVkaW9Db250ZXh0LmlkbDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJODNCMjUwMDkxRkExMTgxQzAwQkMwMkQ5IC8qIEpTU2VydmljZVdvcmtl
ckNsaWVudFR5cGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNTZXJ2aWNl
V29ya2VyQ2xpZW50VHlwZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4M0IyNTAw
QjFGQTExODFEMDBCQzAyRDkgLyogSlNTZXJ2aWNlV29ya2VyQ2xpZW50VHlwZS5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU1NlcnZpY2VXb3JrZXJDbGllbnRUeXBl
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODNCNURBNDUxRkE5MDc5MzAwQjU5
REY0IC8qIEpTTmF2aWdhdG9yQ3VzdG9tLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IEpTTmF2aWdhdG9yQ3VzdG9tLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKQEAgLTEwNDQ4LDYgKzEwNDY3LDggQEAKIAkJODNCNzRFRjMxRjNFMEJENzAwOTk2QkM3IC8q
IEtlZXBhbGl2ZVJlcXVlc3RUcmFja2VyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IEtlZXBhbGl2ZVJlcXVlc3RUcmFja2VyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTgzQjk2ODc5MTlGOEFCODMwMDRFRjdBRiAvKiBTdHlsZUJ1aWxkZXJDb252ZXJ0ZXIuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU3R5bGVCdWlsZGVyQ29udmVydGVyLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTgzQkI1Qzg3MUQ1RDZGM0EwMDVBNzFGNCAv
KiBBbGxEZXNjZW5kYW50c0NvbGxlY3Rpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gQWxsRGVzY2VuZGFudHNDb2xsZWN0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTgzQkQzQ0VCMjQ5OThDQzUwMEJBM0U2NyAvKiBBdWRpb0NvbnRleHRTdGF0ZS5pZGwg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gQXVkaW9Db250ZXh0U3RhdGUuaWRsOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQk4M0JEM0NFRDI0OTk4REY2MDBCQTNFNjcgLyogQXVkaW9Db250
ZXh0U3RhdGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQXVkaW9Db250ZXh0
U3RhdGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODNDMDVBNTgxQTY4NjIxMjAw
N0U1REVBIC8qIFN0eWxlUHJvcGVydHlTaG9ydGhhbmRGdW5jdGlvbnMuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gU3R5bGVQcm9wZXJ0eVNob3J0aGFuZEZ1bmN0aW9u
cy5jcHA7IHBhdGggPSBEZXJpdmVkU291cmNlcy9XZWJDb3JlL1N0eWxlUHJvcGVydHlTaG9ydGhh
bmRGdW5jdGlvbnMuY3BwOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9OwogCQk4
M0MwNUE1OTFBNjg2MjEyMDA3RTVERUEgLyogU3R5bGVQcm9wZXJ0eVNob3J0aGFuZEZ1bmN0aW9u
cy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBTdHlsZVByb3BlcnR5U2hvcnRo
YW5kRnVuY3Rpb25zLmg7IHBhdGggPSBEZXJpdmVkU291cmNlcy9XZWJDb3JlL1N0eWxlUHJvcGVy
dHlTaG9ydGhhbmRGdW5jdGlvbnMuaDsgc291cmNlVHJlZSA9IEJVSUxUX1BST0RVQ1RTX0RJUjsg
fTsKIAkJODNDMUY1OTExRURGNjlEMzAwNDEwRDI3IC8qIFF1YWxpZmllZE5hbWVDYWNoZS5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBRdWFsaWZpZWROYW1lQ2FjaGUu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjkyMzksNiArMjkyNjAsOCBAQAog
CQkJCUZEMzE1RkJBMTJCMDI2NzUwMEMxQTM1OSAvKiBBdWRpb0NvbnRleHQuY3BwICovLAogCQkJ
CUZEMzE1RkJCMTJCMDI2NzUwMEMxQTM1OSAvKiBBdWRpb0NvbnRleHQuaCAqLywKIAkJCQlGRDMx
NUZCQzEyQjAyNjc1MDBDMUEzNTkgLyogQXVkaW9Db250ZXh0LmlkbCAqLywKKwkJCQk4M0JEM0NF
RDI0OTk4REY2MDBCQTNFNjcgLyogQXVkaW9Db250ZXh0U3RhdGUuaCAqLywKKwkJCQk4M0JEM0NF
QjI0OTk4Q0M1MDBCQTNFNjcgLyogQXVkaW9Db250ZXh0U3RhdGUuaWRsICovLAogCQkJCUZEMzE1
RkJEMTJCMDI2NzUwMEMxQTM1OSAvKiBBdWRpb0Rlc3RpbmF0aW9uTm9kZS5jcHAgKi8sCiAJCQkJ
RkQzMTVGQkUxMkIwMjY3NTAwQzFBMzU5IC8qIEF1ZGlvRGVzdGluYXRpb25Ob2RlLmggKi8sCiAJ
CQkJRkQzMTVGQkYxMkIwMjY3NTAwQzFBMzU5IC8qIEF1ZGlvRGVzdGluYXRpb25Ob2RlLmlkbCAq
LywKQEAgLTI5Mjg5LDYgKzI5MzEyLDggQEAKIAkJCQlGRDMxNUZFNTEyQjAyNjc2MDBDMUEzNTkg
LyogRGVsYXlOb2RlLmlkbCAqLywKIAkJCQlGRDMxNUZFNjEyQjAyNjc2MDBDMUEzNTkgLyogRGVs
YXlQcm9jZXNzb3IuY3BwICovLAogCQkJCUZEMzE1RkU3MTJCMDI2NzYwMEMxQTM1OSAvKiBEZWxh
eVByb2Nlc3Nvci5oICovLAorCQkJCTgzMDQwMjdEMjQ5QTdBNUIwMEE5MEQ4RCAvKiBEaXN0YW5j
ZU1vZGVsVHlwZS5oICovLAorCQkJCTgzMDQwMjdGMjQ5QTdBNUMwMEE5MEQ4RCAvKiBEaXN0YW5j
ZU1vZGVsVHlwZS5pZGwgKi8sCiAJCQkJRkQ2RUQyQzExMzZCOEU0MjAwM0NGMDcyIC8qIER5bmFt
aWNzQ29tcHJlc3Nvck5vZGUuY3BwICovLAogCQkJCUZENkVEMkMyMTM2QjhFNDIwMDNDRjA3MiAv
KiBEeW5hbWljc0NvbXByZXNzb3JOb2RlLmggKi8sCiAJCQkJRkQ2RUQyQzkxMzZCOEU5RDAwM0NG
MDcyIC8qIER5bmFtaWNzQ29tcHJlc3Nvck5vZGUuaWRsICovLApAQCAtMjkzMjEsNiArMjkzNDYs
OCBAQAogCQkJCUZEMzE1RkNGMTJCMDI2NzUwMEMxQTM1OSAvKiBQYW5uZXJOb2RlLmNwcCAqLywK
IAkJCQlGRDMxNUZEMDEyQjAyNjc1MDBDMUEzNTkgLyogUGFubmVyTm9kZS5oICovLAogCQkJCUZE
MzE1RkQxMTJCMDI2NzUwMEMxQTM1OSAvKiBQYW5uZXJOb2RlLmlkbCAqLywKKwkJCQk4MzA0MDI4
MDI0OUE3QTVDMDBBOTBEOEQgLyogUGFubmluZ01vZGVsVHlwZS5oICovLAorCQkJCTgzMDQwMjgx
MjQ5QTdBNUQwMEE5MEQ4RCAvKiBQYW5uaW5nTW9kZWxUeXBlLmlkbCAqLywKIAkJCQlGRDU4MUZC
MTE1MjBGOTNCMDAzQTdBNzUgLyogUGVyaW9kaWNXYXZlLmNwcCAqLywKIAkJCQlGRDU4MUZCMjE1
MjBGOTNCMDAzQTdBNzUgLyogUGVyaW9kaWNXYXZlLmggKi8sCiAJCQkJRkQ1ODFGQjMxNTIwRjkz
QjAwM0E3QTc1IC8qIFBlcmlvZGljV2F2ZS5pZGwgKi8sCkBAIC0yOTMzNiw2ICsyOTM2MywxNSBA
QAogCQkJCUZEN0YyOThFMTNENEMwQ0IwMEFEOTUzNSAvKiBXYXZlU2hhcGVyTm9kZS5pZGwgKi8s
CiAJCQkJRkQ3RjI5OEYxM0Q0QzBDQjAwQUQ5NTM1IC8qIFdhdmVTaGFwZXJQcm9jZXNzb3IuY3Bw
ICovLAogCQkJCUZEN0YyOTkwMTNENEMwQ0IwMEFEOTUzNSAvKiBXYXZlU2hhcGVyUHJvY2Vzc29y
LmggKi8sCisJCQkJODMwMDNFMkIyNDk5OTdBODAwNjBBRjk0IC8qIFdlYktpdEF1ZGlvQ29udGV4
dC5jcHAgKi8sCisJCQkJODNCMUE2RkYyNDk5ODVEMDAwRkU1OTYxIC8qIFdlYktpdEF1ZGlvQ29u
dGV4dC5oICovLAorCQkJCTgzQjFBNzAxMjQ5OTg1RDAwMEZFNTk2MSAvKiBXZWJLaXRBdWRpb0Nv
bnRleHQuaWRsICovLAorCQkJCTgzMUI2MTcxMjQ5OUE1OTkwMEMwN0M3OSAvKiBXZWJLaXRBdWRp
b1Bhbm5lck5vZGUuY3BwICovLAorCQkJCTgzMUI2MTc0MjQ5OUE1OUMwMEMwN0M3OSAvKiBXZWJL
aXRBdWRpb1Bhbm5lck5vZGUuaCAqLywKKwkJCQk4MzFCNjE2RjI0OTlBNTk4MDBDMDdDNzkgLyog
V2ViS2l0QXVkaW9QYW5uZXJOb2RlLmlkbCAqLywKKwkJCQk4MzFCNjE3MzI0OTlBNTlCMDBDMDdD
NzkgLyogV2ViS2l0T2ZmbGluZUF1ZGlvQ29udGV4dC5jcHAgKi8sCisJCQkJODMxQjYxNzUyNDk5
QTU5RDAwQzA3Qzc5IC8qIFdlYktpdE9mZmxpbmVBdWRpb0NvbnRleHQuaCAqLywKKwkJCQk4MzFC
NjE3MjI0OTlBNTlBMDBDMDdDNzkgLyogV2ViS2l0T2ZmbGluZUF1ZGlvQ29udGV4dC5pZGwgKi8s
CiAJCQkpOwogCQkJcGF0aCA9IHdlYmF1ZGlvOwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsK
QEAgLTI5NzMyLDYgKzI5NzY4LDcgQEAKIAkJCQlGRDMxNjA3QzEyQjAyNkY3MDBDMUEzNTkgLyog
QXVkaW9CdXMuaCBpbiBIZWFkZXJzICovLAogCQkJCUZEMzE2MDdFMTJCMDI2RjcwMEMxQTM1OSAv
KiBBdWRpb0NoYW5uZWwuaCBpbiBIZWFkZXJzICovLAogCQkJCUZEMzE2MDA1MTJCMDI2NzYwMEMx
QTM1OSAvKiBBdWRpb0NvbnRleHQuaCBpbiBIZWFkZXJzICovLAorCQkJCTgzQkQzQ0VFMjQ5OThF
MDEwMEJBM0U2NyAvKiBBdWRpb0NvbnRleHRTdGF0ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRkQz
MTYwN0YxMkIwMjZGNzAwQzFBMzU5IC8qIEF1ZGlvRGVzdGluYXRpb24uaCBpbiBIZWFkZXJzICov
LAogCQkJCTlCMTIyOUM0MjNGRTRCRDIwMDhDQTc1MSAvKiBBdWRpb0Rlc3RpbmF0aW9uQ29jb2Eu
aCBpbiBIZWFkZXJzICovLAogCQkJCUZEMzE2MEJEMTJCMDI3MkEwMEMxQTM1OSAvKiBBdWRpb0Rl
c3RpbmF0aW9uTWFjLmggaW4gSGVhZGVycyAqLywKQEAgLTMwMzg3LDYgKzMwNDI0LDcgQEAKIAkJ
CQkyRDI5RUNDODE5MkVDQzgzMDA5ODRCNzggLyogRGlzcGxheVJlZnJlc2hNb25pdG9yTWFuYWdl
ci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNkZDRTFBMUEyMjYxOEFCRDAwNEYwMzQzIC8qIERpc3Bs
YXlSdW4uaCBpbiBIZWFkZXJzICovLAogCQkJCUZEMzE2MDkxMTJCMDI2RjcwMEMxQTM1OSAvKiBE
aXN0YW5jZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJODMwNDAyODMyNDlBN0E2MjAwQTkwRDhEIC8q
IERpc3RhbmNlTW9kZWxUeXBlLmggaW4gSGVhZGVycyAqLywKIAkJCQk4NDczMEQ3NzEyNDhGMEIz
MDBEM0E5QzkgLyogRGlzdGFudExpZ2h0U291cmNlLmggaW4gSGVhZGVycyAqLywKIAkJCQlCMkYz
NEZFNjBFODJGODE0MDBGNjI3Q0QgLyogRE5TLmggaW4gSGVhZGVycyAqLywKIAkJCQk3RUU2ODQ2
RjEyRDI2RTM4MDBFNzMyMTUgLyogRE5TUmVzb2x2ZVF1ZXVlQ0ZOZXQuaCBpbiBIZWFkZXJzICov
LApAQCAtMzI0MDAsNiArMzI0MzgsNyBAQAogCQkJCUE4MEU2Q0ZCMEExOTg5Q0EwMDdGQjhDNSAv
KiBQYWlyLmggaW4gSGVhZGVycyAqLywKIAkJCQlGRDMxNjBBMzEyQjAyNkY3MDBDMUEzNTkgLyog
UGFubmVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlGRDMxNjAxQTEyQjAyNjc2MDBDMUEzNTkgLyog
UGFubmVyTm9kZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJODMwNDAyODIyNDlBN0E1RjAwQTkwRDhE
IC8qIFBhbm5pbmdNb2RlbFR5cGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUExODg5MEFGMUFBMTNG
MjUwMDI2QzMwMSAvKiBQYXJlbnRhbENvbnRyb2xzQ29udGVudEZpbHRlci5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJQ0RDRDQxRTgxQzNEREIwQTAwOTY1RDk5IC8qIFBhcnNlZENvbnRlbnRSYW5nZS5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJNDQ3OTU4MDQxNjQzQjQ5QTAwMUUwQTdGIC8qIFBhcnNlZENv
bnRlbnRUeXBlLmggaW4gSGVhZGVycyAqLywKQEAgLTMzNzI4LDYgKzMzNzY3LDggQEAKIAkJCQlB
NTg0RkUzMDE4NjRDQjg0MDA4NDNCMTAgLyogV2ViSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmggaW4g
SGVhZGVycyAqLywKIAkJCQlGNDgyMjMxMTFFMzg2OUI4MDA2NkZDNzkgLyogV2ViSXRlbVByb3Zp
ZGVyUGFzdGVib2FyZC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMzFDMEZGMjIwRTRDRUI2RTAwN0Q2
RkU1IC8qIFdlYktpdEFuaW1hdGlvbkV2ZW50LmggaW4gSGVhZGVycyAqLywKKwkJCQk4M0IxQTcw
MjI0OTk4NUYwMDBGRTU5NjEgLyogV2ViS2l0QXVkaW9Db250ZXh0LmggaW4gSGVhZGVycyAqLywK
KwkJCQk4MzFCNjE3NjI0OTlBNUJCMDBDMDdDNzkgLyogV2ViS2l0QXVkaW9QYW5uZXJOb2RlLmgg
aW4gSGVhZGVycyAqLywKIAkJCQk1REZFQkFCNzE4NTkyQjZEMDBDNzVCRUIgLyogV2ViS2l0QXZh
aWxhYmlsaXR5LmggaW4gSGVhZGVycyAqLywKIAkJCQk0OTgzOTE1OTBGMUU3NzY5MDBDMjM3ODIg
LyogV2ViS2l0Q1NTTWF0cml4LmggaW4gSGVhZGVycyAqLywKIAkJCQkyRDA2MjE0NTFEQTYzOUJB
MDBBN0ZCMjYgLyogV2ViS2l0TWVkaWFLZXlNZXNzYWdlRXZlbnQuaCBpbiBIZWFkZXJzICovLApA
QCAtMzM3MzYsNiArMzM3NzcsNyBAQAogCQkJCTJEMDYyMTUwMURBNjNBOTQwMEE3RkIyNiAvKiBX
ZWJLaXRNZWRpYUtleVNlc3Npb24uaCBpbiBIZWFkZXJzICovLAogCQkJCTdDNDhBNkQxMTkxQzlE
NjUwMDAyNjY3NCAvKiBXZWJLaXROYW1lc3BhY2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTdBMjI3
MzIxMjBDOUZBRkUwMERCMURFRiAvKiBXZWJLaXROU0ltYWdlRXh0cmFzLmggaW4gSGVhZGVycyAq
LywKKwkJCQk4MzFCNjE3NzI0OTlBNUJGMDBDMDdDNzkgLyogV2ViS2l0T2ZmbGluZUF1ZGlvQ29u
dGV4dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTVERUJEQTQxNkZCOTA4NzAwODM2RkUwIC8qIFdl
YktpdFBsYXliYWNrVGFyZ2V0QXZhaWxhYmlsaXR5RXZlbnQuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTQ5NEJENzk1MEY1NUM4RUUwMDc0NzgyOCAvKiBXZWJLaXRQb2ludC5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJMzFDMEZGMjUwRTRDRUI2RTAwN0Q2RkU1IC8qIFdlYktpdFRyYW5zaXRpb25FdmVudC5o
IGluIEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9X
ZWJDb3JlQnVpbHRpbk5hbWVzLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9XZWJDb3Jl
QnVpbHRpbk5hbWVzLmgKaW5kZXggNDk5N2FiOTkzY2I3OTU0NTc1YTg0MzE3ZDY5YzIwY2NlYzZh
N2QwOS4uZjkxOTdjMjZhZTlhNGMzOWM5MjIzYjU0MWQ1OWZiYzBhODIwZTk5YyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvV2ViQ29yZUJ1aWx0aW5OYW1lcy5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1dlYkNvcmVCdWlsdGluTmFtZXMuaApAQCAtNDks
NiArNDksNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgbWFjcm8oQXBwbGVQYXlTZXR1cEZl
YXR1cmUpIFwKICAgICBtYWNybyhBdHRhY2htZW50RWxlbWVudCkgXAogICAgIG1hY3JvKEF1ZGlv
KSBcCisgICAgbWFjcm8oQXVkaW9Db250ZXh0KSBcCiAgICAgbWFjcm8oQXV0aGVudGljYXRvckFz
c2VydGlvblJlc3BvbnNlKSBcCiAgICAgbWFjcm8oQXV0aGVudGljYXRvckF0dGVzdGF0aW9uUmVz
cG9uc2UpIFwKICAgICBtYWNybyhBdXRoZW50aWNhdG9yUmVzcG9uc2UpIFwKQEAgLTE2NSw5ICsx
NjYsMTEgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIG1hY3JvKE5hdmlnYXRvckNyZWRlbnRp
YWxzKSBcCiAgICAgbWFjcm8oTmF2aWdhdG9yTWVkaWFEZXZpY2VzKSBcCiAgICAgbWFjcm8oTmF2
aWdhdG9yVXNlck1lZGlhKSBcCisgICAgbWFjcm8oT2ZmbGluZUF1ZGlvQ29udGV4dCkgXAogICAg
IG1hY3JvKE9mZnNjcmVlbkNhbnZhcykgXAogICAgIG1hY3JvKE9mZnNjcmVlbkNhbnZhc1JlbmRl
cmluZ0NvbnRleHQyRCkgXAogICAgIG1hY3JvKFBhaW50UmVuZGVyaW5nQ29udGV4dDJEKSBcCisg
ICAgbWFjcm8oUGFubmVyTm9kZSkgXAogICAgIG1hY3JvKFBheW1lbnRBZGRyZXNzKSBcCiAgICAg
bWFjcm8oUGF5bWVudE1ldGhvZENoYW5nZUV2ZW50KSBcCiAgICAgbWFjcm8oUGF5bWVudFJlcXVl
c3QpIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudFRhcmdldEZhY3Rvcnku
aW4gYi9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRUYXJnZXRGYWN0b3J5LmluCmluZGV4IGZjMWRi
MmNlMGUwNjUwMDI4Y2Q0Y2JjZTQ5ZWJkMzI5NDRiMzJiMzQuLmExNTRiNDQ1YTEzYWQ0NzY5NjI5
ZDlmN2Q5Mzc3YTlkZjE1MGY3YWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVu
dFRhcmdldEZhY3RvcnkuaW4KKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50VGFyZ2V0RmFj
dG9yeS5pbgpAQCAtNTMsNiArNTMsNyBAQCBWaWRlb1RyYWNrTGlzdCBjb25kaXRpb25hbD1WSURF
TwogVmlzdWFsVmlld3BvcnQKIFdlYkFuaW1hdGlvbgogV2ViR1BVRGV2aWNlIGNvbmRpdGlvbmFs
PVdFQkdQVQorV2ViS2l0QXVkaW9Db250ZXh0IGNvbmRpdGlvbmFsPVdFQl9BVURJTwogV2ViS2l0
TWVkaWFLZXlTZXNzaW9uIGNvbmRpdGlvbmFsPUxFR0FDWV9FTkNSWVBURURfTUVESUEKIFdlYlNv
Y2tldAogV29ya2VyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdzLnlh
bWwgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdzLnlhbWwKaW5kZXggMmQ2YmM2ZmYyZWYw
YjAwMGRkNGU5ODA2Y2VkNmM0OGZiNDcwYmUzYS4uNTgzZmM2Zjc5NWVmYzA3MDJmYjM4NDBkYjRl
ODExYjg4NjA5ZmEzZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9TZXR0aW5ncy55
YW1sCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3MueWFtbApAQCAtMjU1LDYgKzI1
NSw4IEBAIGxvYWREZWZlcnJpbmdFbmFibGVkOgogICBpbml0aWFsOiB0cnVlCiB3ZWJBdWRpb0Vu
YWJsZWQ6CiAgIGluaXRpYWw6IGZhbHNlCittb2Rlcm5VbnByZWZpeGVkV2ViQXVkaW9FbmFibGVk
OgorICBpbml0aWFsOiBmYWxzZQogcGFnaW5hdGVEdXJpbmdMYXlvdXRFbmFibGVkOgogICBpbml0
aWFsOiBmYWxzZQogZnVsbFNjcmVlbkVuYWJsZWQ6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS90ZXN0aW5nL0ludGVybmFscy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFs
cy5jcHAKaW5kZXggMGY1YzE5N2EyOTgwN2U3NjNjYWViZjA5MDJhNGNmOWE2MjA4Yjk3Yy4uYjMw
MzhhMzQwYzY3ZGI2OTI0MzZlYzIzZGE0M2Q4NmU0NDRiZTMyNCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3Rp
bmcvSW50ZXJuYWxzLmNwcApAQCAtMTk5LDYgKzE5OSw3IEBACiAjaW5jbHVkZSAiV2ViQW5pbWF0
aW9uLmgiCiAjaW5jbHVkZSAiV2ViQW5pbWF0aW9uVXRpbGl0aWVzLmgiCiAjaW5jbHVkZSAiV2Vi
Q29yZUpTQ2xpZW50RGF0YS5oIgorI2luY2x1ZGUgIldlYktpdEF1ZGlvQ29udGV4dC5oIgogI2lu
Y2x1ZGUgIldpbmRvd1Byb3h5LmgiCiAjaW5jbHVkZSAiV29ya2VyVGhyZWFkLmgiCiAjaW5jbHVk
ZSAiV29ya2xldEdsb2JhbFNjb3BlLmgiCkBAIC00MjkwLDIyICs0MjkxLDI5IEBAIHZvaWQgSW50
ZXJuYWxzOjpzZW5kTWVkaWFDb250cm9sRXZlbnQoTWVkaWFDb250cm9sRXZlbnQgZXZlbnQpCiAj
ZW5kaWYgLy8gRU5BQkxFKE1FRElBX1NFU1NJT04pCiAKICNpZiBFTkFCTEUoV0VCX0FVRElPKQot
dm9pZCBJbnRlcm5hbHM6OnNldEF1ZGlvQ29udGV4dFJlc3RyaWN0aW9ucyhBdWRpb0NvbnRleHQm
IGNvbnRleHQsIFN0cmluZ1ZpZXcgcmVzdHJpY3Rpb25zU3RyaW5nKQordm9pZCBJbnRlcm5hbHM6
OnNldEF1ZGlvQ29udGV4dFJlc3RyaWN0aW9ucyhjb25zdCBWYXJpYW50PFJlZlB0cjxBdWRpb0Nv
bnRleHQ+LCBSZWZQdHI8V2ViS2l0QXVkaW9Db250ZXh0Pj4mIGNvbnRleHRWYXJpYW50LCBTdHJp
bmdWaWV3IHJlc3RyaWN0aW9uc1N0cmluZykKIHsKLSAgICBBdWRpb0NvbnRleHQ6OkJlaGF2aW9y
UmVzdHJpY3Rpb25zIHJlc3RyaWN0aW9ucyA9IGNvbnRleHQuYmVoYXZpb3JSZXN0cmljdGlvbnMo
KTsKLSAgICBjb250ZXh0LnJlbW92ZUJlaGF2aW9yUmVzdHJpY3Rpb24ocmVzdHJpY3Rpb25zKTsK
KyAgICBSZWZQdHI8QXVkaW9Db250ZXh0QmFzZT4gY29udGV4dDsKKyAgICBzd2l0Y2hPbihjb250
ZXh0VmFyaWFudCwgWyZdKFJlZlB0cjxBdWRpb0NvbnRleHQ+IGVudHJ5KSB7CisgICAgICAgIGNv
bnRleHQgPSBlbnRyeTsKKyAgICB9LCBbJl0oUmVmUHRyPFdlYktpdEF1ZGlvQ29udGV4dD4gZW50
cnkpIHsKKyAgICAgICAgY29udGV4dCA9IGVudHJ5OworICAgIH0pOworCisgICAgYXV0byByZXN0
cmljdGlvbnMgPSBjb250ZXh0LT5iZWhhdmlvclJlc3RyaWN0aW9ucygpOworICAgIGNvbnRleHQt
PnJlbW92ZUJlaGF2aW9yUmVzdHJpY3Rpb24ocmVzdHJpY3Rpb25zKTsKIAotICAgIHJlc3RyaWN0
aW9ucyA9IEF1ZGlvQ29udGV4dDo6Tm9SZXN0cmljdGlvbnM7CisgICAgcmVzdHJpY3Rpb25zID0g
QXVkaW9Db250ZXh0QmFzZTo6Tm9SZXN0cmljdGlvbnM7CiAKICAgICBmb3IgKFN0cmluZ1ZpZXcg
cmVzdHJpY3Rpb25TdHJpbmcgOiByZXN0cmljdGlvbnNTdHJpbmcuc3BsaXQoJywnKSkgewogICAg
ICAgICBpZiAoZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UocmVzdHJpY3Rpb25TdHJpbmcs
ICJub3Jlc3RyaWN0aW9ucyIpKQotICAgICAgICAgICAgcmVzdHJpY3Rpb25zIHw9IEF1ZGlvQ29u
dGV4dDo6Tm9SZXN0cmljdGlvbnM7CisgICAgICAgICAgICByZXN0cmljdGlvbnMgfD0gQXVkaW9D
b250ZXh0QmFzZTo6Tm9SZXN0cmljdGlvbnM7CiAgICAgICAgIGlmIChlcXVhbExldHRlcnNJZ25v
cmluZ0FTQ0lJQ2FzZShyZXN0cmljdGlvblN0cmluZywgInJlcXVpcmV1c2VyZ2VzdHVyZWZvcmF1
ZGlvc3RhcnQiKSkKLSAgICAgICAgICAgIHJlc3RyaWN0aW9ucyB8PSBBdWRpb0NvbnRleHQ6OlJl
cXVpcmVVc2VyR2VzdHVyZUZvckF1ZGlvU3RhcnRSZXN0cmljdGlvbjsKKyAgICAgICAgICAgIHJl
c3RyaWN0aW9ucyB8PSBBdWRpb0NvbnRleHRCYXNlOjpSZXF1aXJlVXNlckdlc3R1cmVGb3JBdWRp
b1N0YXJ0UmVzdHJpY3Rpb247CiAgICAgICAgIGlmIChlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJ
Q2FzZShyZXN0cmljdGlvblN0cmluZywgInJlcXVpcmVwYWdlY29uc2VudGZvcmF1ZGlvc3RhcnQi
KSkKLSAgICAgICAgICAgIHJlc3RyaWN0aW9ucyB8PSBBdWRpb0NvbnRleHQ6OlJlcXVpcmVQYWdl
Q29uc2VudEZvckF1ZGlvU3RhcnRSZXN0cmljdGlvbjsKKyAgICAgICAgICAgIHJlc3RyaWN0aW9u
cyB8PSBBdWRpb0NvbnRleHRCYXNlOjpSZXF1aXJlUGFnZUNvbnNlbnRGb3JBdWRpb1N0YXJ0UmVz
dHJpY3Rpb247CiAgICAgfQotICAgIGNvbnRleHQuYWRkQmVoYXZpb3JSZXN0cmljdGlvbihyZXN0
cmljdGlvbnMpOworICAgIGNvbnRleHQtPmFkZEJlaGF2aW9yUmVzdHJpY3Rpb24ocmVzdHJpY3Rp
b25zKTsKIH0KIAogdm9pZCBJbnRlcm5hbHM6OnVzZU1vY2tBdWRpb0Rlc3RpbmF0aW9uQ29jb2Eo
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaCBiL1NvdXJj
ZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmgKaW5kZXggMzQyMjc5OTRkNjRmYWQ2ZjYyOWQz
ODI2MGE3MWIwYTU2OTg5MmJkYS4uYzFmYWQ5YmYyOTVjOTZjYWRiYjgyZTFkNmI1MDczNjRjMzFi
ZDAxNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5oCkBAIC0xMDgsNiArMTA4LDcgQEAg
Y2xhc3MgVW5zdXNwZW5kYWJsZUFjdGl2ZURPTU9iamVjdDsKIGNsYXNzIFZvaWRDYWxsYmFjazsK
IGNsYXNzIFdlYkFuaW1hdGlvbjsKIGNsYXNzIFdlYkdMUmVuZGVyaW5nQ29udGV4dDsKK2NsYXNz
IFdlYktpdEF1ZGlvQ29udGV4dDsKIGNsYXNzIFdpbmRvd1Byb3h5OwogY2xhc3MgWE1MSHR0cFJl
cXVlc3Q7CiAKQEAgLTY3NCw3ICs2NzUsNyBAQCBwdWJsaWM6CiAjZW5kaWYKIAogI2lmIEVOQUJM
RShXRUJfQVVESU8pCi0gICAgdm9pZCBzZXRBdWRpb0NvbnRleHRSZXN0cmljdGlvbnMoQXVkaW9D
b250ZXh0JiwgU3RyaW5nVmlldyByZXN0cmljdGlvbnNTdHJpbmcpOworICAgIHZvaWQgc2V0QXVk
aW9Db250ZXh0UmVzdHJpY3Rpb25zKGNvbnN0IFZhcmlhbnQ8UmVmUHRyPEF1ZGlvQ29udGV4dD4s
IFJlZlB0cjxXZWJLaXRBdWRpb0NvbnRleHQ+PiYsIFN0cmluZ1ZpZXcgcmVzdHJpY3Rpb25zU3Ry
aW5nKTsKICAgICB2b2lkIHVzZU1vY2tBdWRpb0Rlc3RpbmF0aW9uQ29jb2EoKTsKICNlbmRpZgog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5pZGwgYi9Tb3Vy
Y2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5pZGwKaW5kZXggODdhNzRiNWY5YWRlOTk4YjUy
M2ExNGU5ZmE1MTM2NTVlODg4MTcyYi4uMmEzM2M5YWE1MWVhYjViNzY2OGY2MDk2ODRhMjExYTdi
N2Q1YzNlNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaWRs
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlkbApAQCAtNjc2LDcgKzY3
Niw3IEBAIGVudW0gQ29tcG9zaXRpbmdQb2xpY3kgewogICAgIFtDb25kaXRpb25hbD1WSURFTywg
TWF5VGhyb3dFeGNlcHRpb25dIHZvaWQgc2V0TWVkaWFTZXNzaW9uUmVzdHJpY3Rpb25zKERPTVN0
cmluZyBtZWRpYVR5cGUsIERPTVN0cmluZyByZXN0cmljdGlvbnMpOwogICAgIFtDb25kaXRpb25h
bD1WSURFTywgTWF5VGhyb3dFeGNlcHRpb25dIERPTVN0cmluZyBtZWRpYVNlc3Npb25SZXN0cmlj
dGlvbnMoRE9NU3RyaW5nIG1lZGlhVHlwZSk7CiAgICAgW0NvbmRpdGlvbmFsPVZJREVPXSB2b2lk
IHNldE1lZGlhRWxlbWVudFJlc3RyaWN0aW9ucyhIVE1MTWVkaWFFbGVtZW50IGVsZW1lbnQsIERP
TVN0cmluZyByZXN0cmljdGlvbnMpOwotICAgIFtDb25kaXRpb25hbD1XRUJfQVVESU9dIHZvaWQg
c2V0QXVkaW9Db250ZXh0UmVzdHJpY3Rpb25zKEF1ZGlvQ29udGV4dCBjb250ZXh0LCBET01TdHJp
bmcgcmVzdHJpY3Rpb25zKTsKKyAgICBbQ29uZGl0aW9uYWw9V0VCX0FVRElPXSB2b2lkIHNldEF1
ZGlvQ29udGV4dFJlc3RyaWN0aW9ucygoQXVkaW9Db250ZXh0IG9yIFdlYktpdEF1ZGlvQ29udGV4
dCkgY29udGV4dCwgRE9NU3RyaW5nIHJlc3RyaWN0aW9ucyk7CiAgICAgW0NvbmRpdGlvbmFsPVZJ
REVPLCBNYXlUaHJvd0V4Y2VwdGlvbl0gdm9pZCBwb3N0UmVtb3RlQ29udHJvbENvbW1hbmQoRE9N
U3RyaW5nIGNvbW1hbmQsIG9wdGlvbmFsIHVucmVzdHJpY3RlZCBmbG9hdCBhcmd1bWVudCA9IDAp
OwogICAgIFtDb25kaXRpb25hbD1XSVJFTEVTU19QTEFZQkFDS19UQVJHRVRdIHZvaWQgc2V0TW9j
a01lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJFbmFibGVkKGJvb2xlYW4gZW5hYmxlZCk7CiAgICAg
W0NvbmRpdGlvbmFsPVdJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVCwgTWF5VGhyb3dFeGNlcHRpb25d
IHZvaWQgc2V0TW9ja01lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJTdGF0ZShET01TdHJpbmcgZGV2
aWNlTmFtZSwgRE9NU3RyaW5nIGRldmljZVN0YXRlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL1dlYlByZWZlcmVuY2VzLnlhbWwgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQ
cmVmZXJlbmNlcy55YW1sCmluZGV4IGZhZDFhOWY1ODg2MjFlOTVlMTliMWE0ZmU3NGVhMzAyMzY0
MjQxM2QuLjUyMzVjZTcxZmY3YTkzMmUxMjM4YzY0MDE5ZGEzMTJjNTkxNmRiNmYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlByZWZlcmVuY2VzLnlhbWwKKysrIGIvU291cmNl
L1dlYktpdC9TaGFyZWQvV2ViUHJlZmVyZW5jZXMueWFtbApAQCAtMzM0LDYgKzMzNCwxNCBAQCBX
ZWJBdWRpb0VuYWJsZWQ6CiAgIGRlZmF1bHRWYWx1ZTogdHJ1ZQogICBjb25kaXRpb246IEVOQUJM
RShXRUJfQVVESU8pCiAKK01vZGVyblVucHJlZml4ZWRXZWJBdWRpb0VuYWJsZWQ6CisgIHR5cGU6
IGJvb2wKKyAgZGVmYXVsdFZhbHVlOiBmYWxzZQorICBjb25kaXRpb246IEVOQUJMRShXRUJfQVVE
SU8pCisgIGh1bWFuUmVhZGFibGVOYW1lOiAiTW9kZXJuIFdlYkF1ZGlvIEFQSSIKKyAgaHVtYW5S
ZWFkYWJsZURlc2NyaXB0aW9uOiAiTW9kZXJuIGFuZCB1bnByZWZpeGVkIFdlYkF1ZGlvIEFQSSIK
KyAgY2F0ZWdvcnk6IGV4cGVyaW1lbnRhbAorCiBBdHRhY2htZW50RWxlbWVudEVuYWJsZWQ6CiAg
IHR5cGU6IGJvb2wKICAgZGVmYXVsdFZhbHVlOiBmYWxzZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJQcmVmZXJlbmNlS2V5c1ByaXZhdGUuaCBiL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViUHJlZmVyZW5jZUtleXNQcml2YXRlLmgKaW5k
ZXggMTU2NDQxZTcyODljMGQzZGUyNDk4MDU4NDc0ODQ0NzQ5Mjg4ZTYyMy4uOGEyM2UxMzQ1MGZi
YmFhZmYxZjMyMjM5ZjMzZjgzZDY4ZjI2MjU5NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvV2ViVmlldy9XZWJQcmVmZXJlbmNlS2V5c1ByaXZhdGUuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlByZWZlcmVuY2VLZXlzUHJpdmF0ZS5oCkBAIC0x
MTgsNiArMTE4LDcgQEAKICNkZWZpbmUgV2ViS2l0Q29udGVudENoYW5nZU9ic2VydmVyRW5hYmxl
ZFByZWZlcmVuY2VLZXkgQCJXZWJLaXRDb250ZW50Q2hhbmdlT2JzZXJ2ZXJFbmFibGVkIgogI2Rl
ZmluZSBXZWJLaXRTaG93UmVwYWludENvdW50ZXJQcmVmZXJlbmNlS2V5IEAiV2ViS2l0U2hvd1Jl
cGFpbnRDb3VudGVyIgogI2RlZmluZSBXZWJLaXRXZWJBdWRpb0VuYWJsZWRQcmVmZXJlbmNlS2V5
IEAiV2ViS2l0V2ViQXVkaW9FbmFibGVkIgorI2RlZmluZSBXZWJLaXRNb2Rlcm5VbnByZWZpeGVk
V2ViQXVkaW9FbmFibGVkUHJlZmVyZW5jZUtleSBAIldlYktpdE1vZGVyblVucHJlZml4ZWRXZWJB
dWRpb0VuYWJsZWQiCiAjZGVmaW5lIFdlYktpdFdlYkdMRW5hYmxlZFByZWZlcmVuY2VLZXkgQCJX
ZWJLaXRXZWJHTEVuYWJsZWQiCiAjZGVmaW5lIFdlYktpdFdlYkdMMkVuYWJsZWRQcmVmZXJlbmNl
S2V5IEAiV2ViS2l0V2ViR0wyRW5hYmxlZCIKICNkZWZpbmUgV2ViS2l0V2ViR1BVRW5hYmxlZFBy
ZWZlcmVuY2VLZXkgQCJXZWJLaXRXZWJHUFVFbmFibGVkIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJQcmVmZXJlbmNlcy5tbSBiL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL1dlYlZpZXcvV2ViUHJlZmVyZW5jZXMubW0KaW5kZXggYjg1MjhkMmUwN2I5YzY3
MDJiMGU1NmM0NGExZGE0OTBlZTc0Y2NjZi4uNWM4ZDNjZmY4ZmQyN2FjNTQ4MzY5ZDUzZDFjZTNj
OTIzYzk2MWI1MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9X
ZWJQcmVmZXJlbmNlcy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dl
YlByZWZlcmVuY2VzLm1tCkBAIC01NzQsNiArNTc0LDcgQEAgKyAodm9pZClpbml0aWFsaXplCiAg
ICAgICAgIEBOTywgV2ViS2l0RGlhZ25vc3RpY0xvZ2dpbmdFbmFibGVkS2V5LAogICAgICAgICBA
KFdlYkFsbG93QWxsU3RvcmFnZSksIFdlYktpdFN0b3JhZ2VCbG9ja2luZ1BvbGljeUtleSwKICAg
ICAgICAgQE5PLCBXZWJLaXRQbHVnSW5TbmFwc2hvdHRpbmdFbmFibGVkUHJlZmVyZW5jZUtleSwK
KyAgICAgICAgQE5PLCBXZWJLaXRNb2Rlcm5VbnByZWZpeGVkV2ViQXVkaW9FbmFibGVkUHJlZmVy
ZW5jZUtleSwKIAogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgICAgIEBZRVMsIFdlYktp
dENvbnRlbnRDaGFuZ2VPYnNlcnZlckVuYWJsZWRQcmVmZXJlbmNlS2V5LApAQCAtMjE0OCw2ICsy
MTQ5LDE2IEBAIC0gKHZvaWQpc2V0V2ViQXVkaW9FbmFibGVkOihCT09MKWVuYWJsZWQKICAgICBb
c2VsZiBfc2V0Qm9vbFZhbHVlOmVuYWJsZWQgZm9yS2V5OldlYktpdFdlYkF1ZGlvRW5hYmxlZFBy
ZWZlcmVuY2VLZXldOwogfQogCistIChCT09MKW1vZGVyblVucHJlZml4ZWRXZWJBdWRpb0VuYWJs
ZWQKK3sKKyAgICByZXR1cm4gW3NlbGYgX2Jvb2xWYWx1ZUZvcktleTpXZWJLaXRNb2Rlcm5VbnBy
ZWZpeGVkV2ViQXVkaW9FbmFibGVkUHJlZmVyZW5jZUtleV07Cit9CisKKy0gKHZvaWQpc2V0TW9k
ZXJuVW5wcmVmaXhlZFdlYkF1ZGlvRW5hYmxlZDooQk9PTCllbmFibGVkCit7CisgICAgW3NlbGYg
X3NldEJvb2xWYWx1ZTplbmFibGVkIGZvcktleTpXZWJLaXRNb2Rlcm5VbnByZWZpeGVkV2ViQXVk
aW9FbmFibGVkUHJlZmVyZW5jZUtleV07Cit9CisKIC0gKEJPT0wpc3VicGl4ZWxDU1NPTUVsZW1l
bnRNZXRyaWNzRW5hYmxlZAogewogICAgIHJldHVybiBbc2VsZiBfYm9vbFZhbHVlRm9yS2V5Oldl
YktpdFN1YnBpeGVsQ1NTT01FbGVtZW50TWV0cmljc0VuYWJsZWRQcmVmZXJlbmNlS2V5XTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViUHJlZmVyZW5jZXNQ
cml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlByZWZlcmVuY2Vz
UHJpdmF0ZS5oCmluZGV4IDhjODY2ZWI4YTg5ZDdiODg1NzQ0ODVhNjE3NTZhY2ZiZmZiZGEzYWQu
LmE0NTA5NDcxYTAwMzQ1YzRkNDdlN2Q1Y2MyZGQwZDRmM2M3ZmRjNWUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViUHJlZmVyZW5jZXNQcml2YXRlLmgKKysr
IGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJQcmVmZXJlbmNlc1ByaXZhdGUu
aApAQCAtMjY5LDYgKzI2OSw5IEBAIGV4dGVybiBOU1N0cmluZyAqV2ViUHJlZmVyZW5jZXNDYWNo
ZU1vZGVsQ2hhbmdlZEludGVybmFsTm90aWZpY2F0aW9uIFdFQktJVF9ERVBSCiAtIChCT09MKXdl
YkF1ZGlvRW5hYmxlZDsKIC0gKHZvaWQpc2V0V2ViQXVkaW9FbmFibGVkOihCT09MKWVuYWJsZWQ7
CiAKKy0gKEJPT0wpbW9kZXJuVW5wcmVmaXhlZFdlYkF1ZGlvRW5hYmxlZDsKKy0gKHZvaWQpc2V0
TW9kZXJuVW5wcmVmaXhlZFdlYkF1ZGlvRW5hYmxlZDooQk9PTCllbmFibGVkOworCiAtIChCT09M
KXN1YnBpeGVsQ1NTT01FbGVtZW50TWV0cmljc0VuYWJsZWQ7CiAtICh2b2lkKXNldFN1YnBpeGVs
Q1NTT01FbGVtZW50TWV0cmljc0VuYWJsZWQ6KEJPT0wpZW5hYmxlZDsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tIGIvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCmluZGV4IDI5OWNiMWNhNzkzNGJhOGFhYTNk
NjIwY2Y2MTU5NGJlNjQwYjAzOWEuLjg1MTIxMzI1MjA4YjhlZGE0YjI5OThjMmE5MTI1YmJiMWEz
NjlmMzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmll
dy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZpZXcubW0KQEAg
LTMyNjcsNiArMzI2Nyw3IEBAIC0gKHZvaWQpX3ByZWZlcmVuY2VzQ2hhbmdlZDooV2ViUHJlZmVy
ZW5jZXMgKilwcmVmZXJlbmNlcwogCiAjaWYgRU5BQkxFKFdFQl9BVURJTykKICAgICBzZXR0aW5n
cy5zZXRXZWJBdWRpb0VuYWJsZWQoW3ByZWZlcmVuY2VzIHdlYkF1ZGlvRW5hYmxlZF0pOworICAg
IHNldHRpbmdzLnNldE1vZGVyblVucHJlZml4ZWRXZWJBdWRpb0VuYWJsZWQoW3ByZWZlcmVuY2Vz
IG1vZGVyblVucHJlZml4ZWRXZWJBdWRpb0VuYWJsZWRdKTsKICNlbmRpZgogCiAjaWYgRU5BQkxF
KEZVTExTQ1JFRU5fQVBJKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2Vi
UHJlZmVyZW5jZUtleXNQcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJQcmVm
ZXJlbmNlS2V5c1ByaXZhdGUuaAppbmRleCA4MDQ1MzFhNDZiZmI1NzIzZjZlZDFjYWMzMmY5NThm
MTMzZmVjMjgzLi4yYTIxMjFhZGI5Njg2OTg0MTIxYzBlNGJhOGRhZmZjYTdiY2M2Y2FiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJQcmVmZXJlbmNlS2V5c1ByaXZhdGUu
aAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJQcmVmZXJlbmNlS2V5c1ByaXZhdGUu
aApAQCAtNzUsNiArNzUsNyBAQAogI2RlZmluZSBXZWJLaXRMb2NhbFN0b3JhZ2VEYXRhYmFzZVBh
dGhQcmVmZXJlbmNlS2V5ICJXZWJLaXRMb2NhbFN0b3JhZ2VEYXRhYmFzZVBhdGgiCiAjZGVmaW5l
IFdlYktpdEh5cGVybGlua0F1ZGl0aW5nRW5hYmxlZFByZWZlcmVuY2VLZXkgIldlYktpdEh5cGVy
bGlua0F1ZGl0aW5nRW5hYmxlZCIKICNkZWZpbmUgV2ViS2l0V2ViQXVkaW9FbmFibGVkUHJlZmVy
ZW5jZUtleSAiV2ViS2l0V2ViQXVkaW9FbmFibGVkIgorI2RlZmluZSBXZWJLaXRNb2Rlcm5VbnBy
ZWZpeGVkV2ViQXVkaW9FbmFibGVkUHJlZmVyZW5jZUtleSAiV2ViS2l0V2ViQXVkaW9FbmFibGVk
IgogI2RlZmluZSBXZWJLaXRTaG91bGREaXNwbGF5U3VidGl0bGVzUHJlZmVyZW5jZUtleSAiV2Vi
S2l0U2hvdWxkRGlzcGxheVN1YnRpdGxlcyIKICNkZWZpbmUgV2ViS2l0U2hvdWxkRGlzcGxheUNh
cHRpb25zUHJlZmVyZW5jZUtleSAiV2ViS2l0U2hvdWxkRGlzcGxheUNhcHRpb25zIgogI2RlZmlu
ZSBXZWJLaXRTaG91bGREaXNwbGF5VGV4dERlc2NyaXB0aW9uc1ByZWZlcmVuY2VLZXkgIldlYktp
dFNob3VsZERpc3BsYXlUZXh0RGVzY3JpcHRpb25zIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dExlZ2FjeS93aW4vV2ViUHJlZmVyZW5jZXMuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4v
V2ViUHJlZmVyZW5jZXMuY3BwCmluZGV4IDU4MjZlNDE5NThjMDMzODg5MjNjZjM4OWViN2QyYTg2
NWYzN2YxNTMuLjkzZGU4YTMyMGFhMTU4MzQ5YTA3MjA1ZDA0ZTJlYTRjNDE0OWYyOTQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlByZWZlcmVuY2VzLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJQcmVmZXJlbmNlcy5jcHAKQEAgLTIzMiw2ICsyMzIs
NyBAQCB2b2lkIFdlYlByZWZlcmVuY2VzOjppbml0aWFsaXplRGVmYXVsdFNldHRpbmdzKCkKICAg
ICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShkZWZhdWx0cywgQ0ZTVFIoV2ViS2l0SmF2YVNjcmlwdFJ1
bnRpbWVGbGFnc1ByZWZlcmVuY2VLZXkpLCBDRlNUUigiMCIpKTsKICAgICBDRkRpY3Rpb25hcnlB
ZGRWYWx1ZShkZWZhdWx0cywgQ0ZTVFIoV2ViS2l0V2ViU2VjdXJpdHlFbmFibGVkUHJlZmVyZW5j
ZUtleSksIGtDRkJvb2xlYW5UcnVlKTsKICAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShkZWZhdWx0
cywgQ0ZTVFIoV2ViS2l0QWxsb3dUb3BOYXZpZ2F0aW9uVG9EYXRhVVJMc1ByZWZlcmVuY2VLZXkp
LCBrQ0ZCb29sZWFuRmFsc2UpOworICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKGRlZmF1bHRzLCBD
RlNUUihXZWJLaXRXZWJBdWRpb0VuYWJsZWRQcmVmZXJlbmNlS2V5KSwga0NGQm9vbGVhbkZhbHNl
KTsKICAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShkZWZhdWx0cywgQ0ZTVFIoV2ViS2l0QWxsb3dV
bml2ZXJzYWxBY2Nlc3NGcm9tRmlsZVVSTHNQcmVmZXJlbmNlS2V5KSwga0NGQm9vbGVhbkZhbHNl
KTsKICAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShkZWZhdWx0cywgQ0ZTVFIoV2ViS2l0QWxsb3dG
aWxlQWNjZXNzRnJvbUZpbGVVUkxzUHJlZmVyZW5jZUtleSksIGtDRkJvb2xlYW5UcnVlKTsKICAg
ICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShkZWZhdWx0cywgQ0ZTVFIoV2ViS2l0SmF2YVNjcmlwdENh
bkFjY2Vzc0NsaXBib2FyZFByZWZlcmVuY2VLZXkpLCBrQ0ZCb29sZWFuRmFsc2UpOwpAQCAtMjQ5
OSwzICsyNTAwLDE3IEBAIEhSRVNVTFQgV2ViUHJlZmVyZW5jZXM6OnNldEFsbG93VG9wTmF2aWdh
dGlvblRvRGF0YVVSTHMoQk9PTCBhbGxvd0FjY2VzcykKICAgICBzZXRCb29sVmFsdWUoV2ViS2l0
QWxsb3dUb3BOYXZpZ2F0aW9uVG9EYXRhVVJMc1ByZWZlcmVuY2VLZXksIGFsbG93QWNjZXNzKTsK
ICAgICByZXR1cm4gU19PSzsKIH0KKworSFJFU1VMVCBXZWJQcmVmZXJlbmNlczo6bW9kZXJuVW5w
cmVmaXhlZFdlYkF1ZGlvRW5hYmxlZChfT3V0XyBCT09MKiBlbmFibGVkKQoreworICAgIGlmICgh
ZW5hYmxlZCkKKyAgICAgICAgcmV0dXJuIEVfUE9JTlRFUjsKKyAgICAqZW5hYmxlZCA9IGJvb2xW
YWx1ZUZvcktleShXZWJLaXRXZWJBdWRpb0VuYWJsZWRQcmVmZXJlbmNlS2V5KTsKKyAgICByZXR1
cm4gU19PSzsKK30KKworSFJFU1VMVCBXZWJQcmVmZXJlbmNlczo6c2V0TW9kZXJuVW5wcmVmaXhl
ZFdlYkF1ZGlvRW5hYmxlZChCT09MIGVuYWJsZWQpCit7CisgICAgc2V0Qm9vbFZhbHVlKFdlYktp
dFdlYkF1ZGlvRW5hYmxlZFByZWZlcmVuY2VLZXksIGVuYWJsZWQpOworICAgIHJldHVybiBTX09L
OworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViUHJlZmVyZW5jZXMu
aCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlByZWZlcmVuY2VzLmgKaW5kZXggZjdmZTc2
ODQyYjRkZDIzMjk4MWVmZmY3MjFjMWZhNGIxMDk3OWU5OC4uMTQ1NDFlNWI5OGRhZTliNDcxZGY5
MjYxNGQ2OTc3MTlmZWVmNDQzZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4v
V2ViUHJlZmVyZW5jZXMuaAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJQcmVmZXJl
bmNlcy5oCkBAIC0zMDUsNiArMzA1LDggQEAgcHVibGljOgogICAgIC8vIElXZWJQcmVmZXJlbmNl
c1ByaXZhdGU4CiAgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGFsbG93VG9w
TmF2aWdhdGlvblRvRGF0YVVSTHMoX091dF8gQk9PTCopOwogICAgIHZpcnR1YWwgSFJFU1VMVCBT
VERNRVRIT0RDQUxMVFlQRSBzZXRBbGxvd1RvcE5hdmlnYXRpb25Ub0RhdGFVUkxzKEJPT0wpOwor
ICAgIHZpcnR1YWwgTlJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBtb2Rlcm5VbnByZWZpeGVkV2Vi
QXVkaW9FbmFibGVkKF9PdXRfIEJPT0wqKTsKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9E
Q0FMTFRZUEUgc2V0TW9kZXJuVW5wcmVmaXhlZFdlYkF1ZGlvRW5hYmxlZChCT09MKTsKIAogICAg
IC8vIFdlYlByZWZlcmVuY2VzCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2lu
L1dlYlZpZXcuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVmlldy5jcHAKaW5kZXgg
MjhmMjkzZDhjN2Y3ZGE2OWI4ZTE4MTNhZjg4ZDE3OWU4ZmFmYjJmNi4uZGIyOTExNmJmYzI1OTk1
MmNlNmRmMzNmMzczNjYyOWE2N2I5YmEzMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2Fj
eS93aW4vV2ViVmlldy5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVmlldy5j
cHAKQEAgLTU1NTYsNiArNTU1NiwxMSBAQCBIUkVTVUxUIFdlYlZpZXc6Om5vdGlmeVByZWZlcmVu
Y2VzQ2hhbmdlZChJV2ViTm90aWZpY2F0aW9uKiBub3RpZmljYXRpb24pCiAKICNpZiBFTkFCTEUo
V0VCX0FVRElPKQogICAgIHNldHRpbmdzLnNldFdlYkF1ZGlvRW5hYmxlZCh0cnVlKTsKKworICAg
IGhyID0gcHJlZnNQcml2YXRlLT5tb2Rlcm5VbnByZWZpeGVkV2ViQXVkaW9FbmFibGVkKCZlbmFi
bGVkKTsKKyAgICBpZiAoRkFJTEVEKGhyKSkKKyAgICAgICAgcmV0dXJuIGhyOworICAgIHNldHRp
bmdzLnNldE1vZGVyblVucHJlZml4ZWRXZWJBdWRpb0VuYWJsZWQoISFlbmFibGVkKTsKICNlbmRp
ZiAvLyBFTkFCTEUoV0VCX0FVRElPKQogCiAjaWYgRU5BQkxFKFdFQkdMKQpkaWZmIC0tZ2l0IGEv
VG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0R1bXBSZW5kZXJUcmVlLm1tIGIvVG9vbHMvRHVtcFJl
bmRlclRyZWUvbWFjL0R1bXBSZW5kZXJUcmVlLm1tCmluZGV4IGI4MWExYzNjMzUzNzliZDA5MDFl
ZTkxMDdkOWRlZTc3NTdkZGFlMzQuLjg3YzA0ZDkyZmE0Y2U0NzIyMTZlOGMzOGZiZWU5YmJmNzFh
MzJkOTkgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9EdW1wUmVuZGVyVHJl
ZS5tbQorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvRHVtcFJlbmRlclRyZWUubW0KQEAg
LTk3OSw2ICs5NzksNyBAQCBzdGF0aWMgdm9pZCByZXNldFdlYlByZWZlcmVuY2VzVG9Db25zaXN0
ZW50VmFsdWVzKCkKICNlbmRpZgogCiAgICAgW3ByZWZlcmVuY2VzIHNldFdlYkF1ZGlvRW5hYmxl
ZDpZRVNdOworICAgIFtwcmVmZXJlbmNlcyBzZXRNb2Rlcm5VbnByZWZpeGVkV2ViQXVkaW9FbmFi
bGVkOllFU107CiAgICAgW3ByZWZlcmVuY2VzIHNldE1lZGlhU291cmNlRW5hYmxlZDpZRVNdOwog
ICAgIFtwcmVmZXJlbmNlcyBzZXRTb3VyY2VCdWZmZXJDaGFuZ2VUeXBlRW5hYmxlZDpZRVNdOwog
CmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS93aW4vRHVtcFJlbmRlclRyZWUuY3Bw
IGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL0R1bXBSZW5kZXJUcmVlLmNwcAppbmRleCAwYjM3
YWQ0NWZlMThiMmE5NDY1YWMzNTcyM2JjZGNlNjk1NmY2MzYyLi5kMGI5ZDhjN2U3MjBmZDgzMGM2
YjZmMGNjMDVkMDViOTkzNWRmMDQ4IDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS93
aW4vRHVtcFJlbmRlclRyZWUuY3BwCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9EdW1w
UmVuZGVyVHJlZS5jcHAKQEAgLTgzNiw2ICs4MzYsNyBAQCBzdGF0aWMgdm9pZCByZXNldFdlYlBy
ZWZlcmVuY2VzVG9Db25zaXN0ZW50VmFsdWVzKElXZWJQcmVmZXJlbmNlcyogcHJlZmVyZW5jZXMp
CiAjZW5kaWYKIAogICAgIHByZWZzUHJpdmF0ZS0+c2V0QWxsb3dUb3BOYXZpZ2F0aW9uVG9EYXRh
VVJMcyhUUlVFKTsKKyAgICBwcmVmc1ByaXZhdGUtPnNldE1vZGVyblVucHJlZml4ZWRXZWJBdWRp
b0VuYWJsZWQoVFJVRSk7CiAgICAgcHJlZnNQcml2YXRlLT5zZXRBbGxvd1VuaXZlcnNhbEFjY2Vz
c0Zyb21GaWxlVVJMcyhUUlVFKTsKICAgICBwcmVmc1ByaXZhdGUtPnNldEFsbG93RmlsZUFjY2Vz
c0Zyb21GaWxlVVJMcyhUUlVFKTsKICAgICBwcmVmZXJlbmNlcy0+c2V0U3RhbmRhcmRGb250RmFt
aWx5KHN0YW5kYXJkRmFtaWx5KTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvQ2hhbmdlTG9nCmluZGV4IDYz
YTFiNzkyMWUwMGVjMWU0YjhlNjQ4NDc3NTllYmI5YzU3Mjc4ZmQuLmZlNGRmYjlkMDA2OTMzMTE2
NWQxYTI3MWRjODRlZjgyNjgzMzQ0MGIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0NoYW5nZUxvZwpA
QCAtMSwzICsxLDE4IEBACisyMDIwLTA2LTE3ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5j
b20+CisKKyAgICAgICAgQWRkIGV4cGVyaW1lbnRhbCBmZWF0dXJlIGZsYWcgZm9yIG1vZGVybiAm
IHVucHJlZml4ZWQgV2ViQXVkaW8gQVBJCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yMTMyNjgKKworICAgICAgICBSZXZpZXdlZCBieSBKZXIgTm9ibGUu
CisKKyAgICAgICAgUmViYXNlbGluZSBhIGZldyB3ZWItcGxhdGZvcm0tdGVzdHMgbm93IHRoYXQg
dGhleSBhcmUgcGFzc2luZyBvciBmYWlsaW5nIGF0IGEgbGF0ZXIgc3RhZ2UuCisgICAgICAgIFRo
aXMgaXMgZHVlIHRvIG91ciBXZWJBdWRpbyBnZXR0aW5nIHByb3Blcmx5IHVucHJlZml4ZWQgaW4g
dGhlIGNvbnRleHQgb2YgbGF5b3V0IHRlc3RzLgorCisgICAgICAgICogd2ViLXBsYXRmb3JtLXRl
c3RzL3dlYmF1ZGlvL2lkbGhhcm5lc3MuaHR0cHMud2luZG93LWV4cGVjdGVkLnR4dDoKKyAgICAg
ICAgKiB3ZWItcGxhdGZvcm0tdGVzdHMvd2ViYXVkaW8vdGhlLWF1ZGlvLWFwaS90aGUtYXVkaW9j
b250ZXh0LWludGVyZmFjZS9hdWRpb2NvbnRleHQtZGV0YWNoZWQtZXhlY3V0aW9uLWNvbnRleHQu
dGVudGF0aXZlLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiB3ZWItcGxhdGZvcm0tdGVzdHMvd2Vi
YXVkaW8vdGhlLWF1ZGlvLWFwaS90aGUtYXVkaW9ub2RlLWludGVyZmFjZS9hdWRpb25vZGUtY29u
bmVjdC1tZXRob2QtY2hhaW5pbmctZXhwZWN0ZWQudHh0OgorICAgICAgICAqIHdlYi1wbGF0Zm9y
bS10ZXN0cy93ZWJhdWRpby90aGUtYXVkaW8tYXBpL3RoZS1vZmZsaW5lYXVkaW9jb250ZXh0LWlu
dGVyZmFjZS9vZmZsaW5lYXVkaW9jb250ZXh0LWRldGFjaGVkLWV4ZWN1dGlvbi1jb250ZXh0LnRl
bnRhdGl2ZS1leHBlY3RlZC50eHQ6CisKIDIwMjAtMDYtMTcgIERhcnJ5bCBQb2d1ZSAgPGRhcnJ5
bEBkcG9ndWUuY2E+CiAKICAgICAgICAgSW5kZXhlZERCOiBTdXBwb3J0IElEQkZhY3RvcnkgZGF0
YWJhc2VzIG1ldGhvZApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy93ZWJhdWRpby9pZGxoYXJuZXNzLmh0dHBzLndpbmRvdy1leHBlY3RlZC50
eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYmF1ZGlv
L2lkbGhhcm5lc3MuaHR0cHMud2luZG93LWV4cGVjdGVkLnR4dAppbmRleCBjY2M3ZTllOGY3MWJm
MWQ0MTI0ZGJjZGU4OTM2MTZjMjY0MGJjM2FkLi44NTk4ZGRhZmUwODAxZjg2M2M3YzkwM2QyMTAy
NGU2OGNiMWI4NzYxIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3dlYmF1ZGlvL2lkbGhhcm5lc3MuaHR0cHMud2luZG93LWV4cGVjdGVkLnR4
dAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYmF1
ZGlvL2lkbGhhcm5lc3MuaHR0cHMud2luZG93LWV4cGVjdGVkLnR4dApAQCAtNDMsNyArNDMsNyBA
QCBGQUlMIEJhc2VBdWRpb0NvbnRleHQgaW50ZXJmYWNlOiBvcGVyYXRpb24gY3JlYXRlV2F2ZVNo
YXBlcigpIGFzc2VydF9vd25fcHJvcGVydAogRkFJTCBCYXNlQXVkaW9Db250ZXh0IGludGVyZmFj
ZTogb3BlcmF0aW9uIGRlY29kZUF1ZGlvRGF0YShBcnJheUJ1ZmZlciwgb3B0aW9uYWwgRGVjb2Rl
U3VjY2Vzc0NhbGxiYWNrPywgb3B0aW9uYWwgRGVjb2RlRXJyb3JDYWxsYmFjaz8pIGFzc2VydF9v
d25fcHJvcGVydHk6IHNlbGYgZG9lcyBub3QgaGF2ZSBvd24gcHJvcGVydHkgIkJhc2VBdWRpb0Nv
bnRleHQiIGV4cGVjdGVkIHByb3BlcnR5ICJCYXNlQXVkaW9Db250ZXh0IiBtaXNzaW5nCiBGQUlM
IEF1ZGlvQ29udGV4dCBpbnRlcmZhY2U6IGV4aXN0ZW5jZSBhbmQgcHJvcGVydGllcyBvZiBpbnRl
cmZhY2Ugb2JqZWN0IGFzc2VydF9vd25fcHJvcGVydHk6IHNlbGYgZG9lcyBub3QgaGF2ZSBvd24g
cHJvcGVydHkgIkJhc2VBdWRpb0NvbnRleHQiIGV4cGVjdGVkIHByb3BlcnR5ICJCYXNlQXVkaW9D
b250ZXh0IiBtaXNzaW5nCiBQQVNTIEF1ZGlvQ29udGV4dCBpbnRlcmZhY2Ugb2JqZWN0IGxlbmd0
aCAKLUZBSUwgQXVkaW9Db250ZXh0IGludGVyZmFjZSBvYmplY3QgbmFtZSBhc3NlcnRfZXF1YWxz
OiB3cm9uZyB2YWx1ZSBmb3IgQXVkaW9Db250ZXh0Lm5hbWUgZXhwZWN0ZWQgIkF1ZGlvQ29udGV4
dCIgYnV0IGdvdCAid2Via2l0QXVkaW9Db250ZXh0IgorUEFTUyBBdWRpb0NvbnRleHQgaW50ZXJm
YWNlIG9iamVjdCBuYW1lIAogRkFJTCBBdWRpb0NvbnRleHQgaW50ZXJmYWNlOiBleGlzdGVuY2Ug
YW5kIHByb3BlcnRpZXMgb2YgaW50ZXJmYWNlIHByb3RvdHlwZSBvYmplY3QgYXNzZXJ0X293bl9w
cm9wZXJ0eTogc2VsZiBkb2VzIG5vdCBoYXZlIG93biBwcm9wZXJ0eSAiQmFzZUF1ZGlvQ29udGV4
dCIgZXhwZWN0ZWQgcHJvcGVydHkgIkJhc2VBdWRpb0NvbnRleHQiIG1pc3NpbmcKIFBBU1MgQXVk
aW9Db250ZXh0IGludGVyZmFjZTogZXhpc3RlbmNlIGFuZCBwcm9wZXJ0aWVzIG9mIGludGVyZmFj
ZSBwcm90b3R5cGUgb2JqZWN0J3MgImNvbnN0cnVjdG9yIiBwcm9wZXJ0eSAKIFBBU1MgQXVkaW9D
b250ZXh0IGludGVyZmFjZTogZXhpc3RlbmNlIGFuZCBwcm9wZXJ0aWVzIG9mIGludGVyZmFjZSBw
cm90b3R5cGUgb2JqZWN0J3MgQEB1bnNjb3BhYmxlcyBwcm9wZXJ0eSAKQEAgLTU4LDcgKzU4LDcg
QEAgUEFTUyBBdWRpb0NvbnRleHQgaW50ZXJmYWNlOiBvcGVyYXRpb24gY3JlYXRlTWVkaWFTdHJl
YW1Tb3VyY2UoTWVkaWFTdHJlYW0pCiBGQUlMIEF1ZGlvQ29udGV4dCBpbnRlcmZhY2U6IG9wZXJh
dGlvbiBjcmVhdGVNZWRpYVN0cmVhbVRyYWNrU291cmNlKE1lZGlhU3RyZWFtVHJhY2spIGFzc2Vy
dF9vd25fcHJvcGVydHk6IGludGVyZmFjZSBwcm90b3R5cGUgb2JqZWN0IG1pc3Npbmcgbm9uLXN0
YXRpYyBvcGVyYXRpb24gZXhwZWN0ZWQgcHJvcGVydHkgImNyZWF0ZU1lZGlhU3RyZWFtVHJhY2tT
b3VyY2UiIG1pc3NpbmcKIFBBU1MgQXVkaW9Db250ZXh0IGludGVyZmFjZTogb3BlcmF0aW9uIGNy
ZWF0ZU1lZGlhU3RyZWFtRGVzdGluYXRpb24oKSAKIFBBU1MgQXVkaW9Db250ZXh0IG11c3QgYmUg
cHJpbWFyeSBpbnRlcmZhY2Ugb2YgY29udGV4dCAKLUZBSUwgU3RyaW5naWZpY2F0aW9uIG9mIGNv
bnRleHQgYXNzZXJ0X2NsYXNzX3N0cmluZzogY2xhc3Mgc3RyaW5nIG9mIGNvbnRleHQgZXhwZWN0
ZWQgIltvYmplY3QgQXVkaW9Db250ZXh0XSIgYnV0IGdvdCAiW29iamVjdCB3ZWJraXRBdWRpb0Nv
bnRleHRdIgorUEFTUyBTdHJpbmdpZmljYXRpb24gb2YgY29udGV4dCAKIEZBSUwgQXVkaW9Db250
ZXh0IGludGVyZmFjZTogY29udGV4dCBtdXN0IGluaGVyaXQgcHJvcGVydHkgImJhc2VMYXRlbmN5
IiB3aXRoIHRoZSBwcm9wZXIgdHlwZSBhc3NlcnRfaW5oZXJpdHM6IHByb3BlcnR5ICJiYXNlTGF0
ZW5jeSIgbm90IGZvdW5kIGluIHByb3RvdHlwZSBjaGFpbgogRkFJTCBBdWRpb0NvbnRleHQgaW50
ZXJmYWNlOiBjb250ZXh0IG11c3QgaW5oZXJpdCBwcm9wZXJ0eSAib3V0cHV0TGF0ZW5jeSIgd2l0
aCB0aGUgcHJvcGVyIHR5cGUgYXNzZXJ0X2luaGVyaXRzOiBwcm9wZXJ0eSAib3V0cHV0TGF0ZW5j
eSIgbm90IGZvdW5kIGluIHByb3RvdHlwZSBjaGFpbgogRkFJTCBBdWRpb0NvbnRleHQgaW50ZXJm
YWNlOiBjb250ZXh0IG11c3QgaW5oZXJpdCBwcm9wZXJ0eSAiZ2V0T3V0cHV0VGltZXN0YW1wKCki
IHdpdGggdGhlIHByb3BlciB0eXBlIGFzc2VydF9pbmhlcml0czogcHJvcGVydHkgImdldE91dHB1
dFRpbWVzdGFtcCIgbm90IGZvdW5kIGluIHByb3RvdHlwZSBjaGFpbgpAQCAtMTA4LDcgKzEwOCw3
IEBAIFBBU1MgQmFzZUF1ZGlvQ29udGV4dCBpbnRlcmZhY2U6IGNvbnRleHQgbXVzdCBpbmhlcml0
IHByb3BlcnR5ICJkZWNvZGVBdWRpb0RhdGEoCiBGQUlMIEJhc2VBdWRpb0NvbnRleHQgaW50ZXJm
YWNlOiBjYWxsaW5nIGRlY29kZUF1ZGlvRGF0YShBcnJheUJ1ZmZlciwgb3B0aW9uYWwgRGVjb2Rl
U3VjY2Vzc0NhbGxiYWNrPywgb3B0aW9uYWwgRGVjb2RlRXJyb3JDYWxsYmFjaz8pIG9uIGNvbnRl
eHQgd2l0aCB0b28gZmV3IGFyZ3VtZW50cyBtdXN0IHRocm93IFR5cGVFcnJvciBhc3NlcnRfdW5y
ZWFjaGVkOiBUaHJvd3MgIlR5cGVFcnJvcjogTm90IGVub3VnaCBhcmd1bWVudHMiIGluc3RlYWQg
b2YgcmVqZWN0aW5nIHByb21pc2UgUmVhY2hlZCB1bnJlYWNoYWJsZSBjb2RlCiBGQUlMIE9mZmxp
bmVBdWRpb0NvbnRleHQgaW50ZXJmYWNlOiBleGlzdGVuY2UgYW5kIHByb3BlcnRpZXMgb2YgaW50
ZXJmYWNlIG9iamVjdCBhc3NlcnRfb3duX3Byb3BlcnR5OiBzZWxmIGRvZXMgbm90IGhhdmUgb3du
IHByb3BlcnR5ICJCYXNlQXVkaW9Db250ZXh0IiBleHBlY3RlZCBwcm9wZXJ0eSAiQmFzZUF1ZGlv
Q29udGV4dCIgbWlzc2luZwogRkFJTCBPZmZsaW5lQXVkaW9Db250ZXh0IGludGVyZmFjZSBvYmpl
Y3QgbGVuZ3RoIGFzc2VydF9lcXVhbHM6IHdyb25nIHZhbHVlIGZvciBPZmZsaW5lQXVkaW9Db250
ZXh0Lmxlbmd0aCBleHBlY3RlZCAxIGJ1dCBnb3QgMwotRkFJTCBPZmZsaW5lQXVkaW9Db250ZXh0
IGludGVyZmFjZSBvYmplY3QgbmFtZSBhc3NlcnRfZXF1YWxzOiB3cm9uZyB2YWx1ZSBmb3IgT2Zm
bGluZUF1ZGlvQ29udGV4dC5uYW1lIGV4cGVjdGVkICJPZmZsaW5lQXVkaW9Db250ZXh0IiBidXQg
Z290ICJ3ZWJraXRPZmZsaW5lQXVkaW9Db250ZXh0IgorUEFTUyBPZmZsaW5lQXVkaW9Db250ZXh0
IGludGVyZmFjZSBvYmplY3QgbmFtZSAKIEZBSUwgT2ZmbGluZUF1ZGlvQ29udGV4dCBpbnRlcmZh
Y2U6IGV4aXN0ZW5jZSBhbmQgcHJvcGVydGllcyBvZiBpbnRlcmZhY2UgcHJvdG90eXBlIG9iamVj
dCBhc3NlcnRfb3duX3Byb3BlcnR5OiBzZWxmIGRvZXMgbm90IGhhdmUgb3duIHByb3BlcnR5ICJC
YXNlQXVkaW9Db250ZXh0IiBleHBlY3RlZCBwcm9wZXJ0eSAiQmFzZUF1ZGlvQ29udGV4dCIgbWlz
c2luZwogUEFTUyBPZmZsaW5lQXVkaW9Db250ZXh0IGludGVyZmFjZTogZXhpc3RlbmNlIGFuZCBw
cm9wZXJ0aWVzIG9mIGludGVyZmFjZSBwcm90b3R5cGUgb2JqZWN0J3MgImNvbnN0cnVjdG9yIiBw
cm9wZXJ0eSAKIFBBU1MgT2ZmbGluZUF1ZGlvQ29udGV4dCBpbnRlcmZhY2U6IGV4aXN0ZW5jZSBh
bmQgcHJvcGVydGllcyBvZiBpbnRlcmZhY2UgcHJvdG90eXBlIG9iamVjdCdzIEBAdW5zY29wYWJs
ZXMgcHJvcGVydHkgCkBAIC0xMTgsNyArMTE4LDcgQEAgRkFJTCBPZmZsaW5lQXVkaW9Db250ZXh0
IGludGVyZmFjZTogb3BlcmF0aW9uIHN1c3BlbmQoZG91YmxlKSBhc3NlcnRfb3duX3Byb3BlcnQK
IEZBSUwgT2ZmbGluZUF1ZGlvQ29udGV4dCBpbnRlcmZhY2U6IGF0dHJpYnV0ZSBsZW5ndGggYXNz
ZXJ0X3RydWU6IFRoZSBwcm90b3R5cGUgb2JqZWN0IG11c3QgaGF2ZSBhIHByb3BlcnR5ICJsZW5n
dGgiIGV4cGVjdGVkIHRydWUgZ290IGZhbHNlCiBGQUlMIE9mZmxpbmVBdWRpb0NvbnRleHQgaW50
ZXJmYWNlOiBhdHRyaWJ1dGUgb25jb21wbGV0ZSBhc3NlcnRfb3duX3Byb3BlcnR5OiBleHBlY3Rl
ZCBwcm9wZXJ0eSAib25jb21wbGV0ZSIgbWlzc2luZwogUEFTUyBPZmZsaW5lQXVkaW9Db250ZXh0
IG11c3QgYmUgcHJpbWFyeSBpbnRlcmZhY2Ugb2YgbmV3IE9mZmxpbmVBdWRpb0NvbnRleHQoMSwg
MSwgc2FtcGxlX3JhdGUpIAotRkFJTCBTdHJpbmdpZmljYXRpb24gb2YgbmV3IE9mZmxpbmVBdWRp
b0NvbnRleHQoMSwgMSwgc2FtcGxlX3JhdGUpIGFzc2VydF9jbGFzc19zdHJpbmc6IGNsYXNzIHN0
cmluZyBvZiBuZXcgT2ZmbGluZUF1ZGlvQ29udGV4dCgxLCAxLCBzYW1wbGVfcmF0ZSkgZXhwZWN0
ZWQgIltvYmplY3QgT2ZmbGluZUF1ZGlvQ29udGV4dF0iIGJ1dCBnb3QgIltvYmplY3Qgd2Via2l0
T2ZmbGluZUF1ZGlvQ29udGV4dF0iCitQQVNTIFN0cmluZ2lmaWNhdGlvbiBvZiBuZXcgT2ZmbGlu
ZUF1ZGlvQ29udGV4dCgxLCAxLCBzYW1wbGVfcmF0ZSkgCiBQQVNTIE9mZmxpbmVBdWRpb0NvbnRl
eHQgaW50ZXJmYWNlOiBuZXcgT2ZmbGluZUF1ZGlvQ29udGV4dCgxLCAxLCBzYW1wbGVfcmF0ZSkg
bXVzdCBpbmhlcml0IHByb3BlcnR5ICJzdGFydFJlbmRlcmluZygpIiB3aXRoIHRoZSBwcm9wZXIg
dHlwZSAKIFBBU1MgT2ZmbGluZUF1ZGlvQ29udGV4dCBpbnRlcmZhY2U6IG5ldyBPZmZsaW5lQXVk
aW9Db250ZXh0KDEsIDEsIHNhbXBsZV9yYXRlKSBtdXN0IGluaGVyaXQgcHJvcGVydHkgInJlc3Vt
ZSgpIiB3aXRoIHRoZSBwcm9wZXIgdHlwZSAKIFBBU1MgT2ZmbGluZUF1ZGlvQ29udGV4dCBpbnRl
cmZhY2U6IG5ldyBPZmZsaW5lQXVkaW9Db250ZXh0KDEsIDEsIHNhbXBsZV9yYXRlKSBtdXN0IGlu
aGVyaXQgcHJvcGVydHkgInN1c3BlbmQoZG91YmxlKSIgd2l0aCB0aGUgcHJvcGVyIHR5cGUgCkBA
IC05MDQsNyArOTA0LDcgQEAgRkFJTCBBdWRpb05vZGUgaW50ZXJmYWNlOiBuZXcgT3NjaWxsYXRv
ck5vZGUoY29udGV4dCkgbXVzdCBpbmhlcml0IHByb3BlcnR5ICJjaGEKIEZBSUwgQXVkaW9Ob2Rl
IGludGVyZmFjZTogbmV3IE9zY2lsbGF0b3JOb2RlKGNvbnRleHQpIG11c3QgaW5oZXJpdCBwcm9w
ZXJ0eSAiY2hhbm5lbEludGVycHJldGF0aW9uIiB3aXRoIHRoZSBwcm9wZXIgdHlwZSBhc3NlcnRf
ZXF1YWxzOiBVbmV4cGVjdGVkIGV4Y2VwdGlvbiB3aGVuIGV2YWx1YXRpbmcgb2JqZWN0IGV4cGVj
dGVkIG51bGwgYnV0IGdvdCBvYmplY3QgIlR5cGVFcnJvcjogZnVuY3Rpb24gaXMgbm90IGEgY29u
c3RydWN0b3IgKGV2YWx1YXRpbmcgJ25ldyBPc2NpbGxhdG9yTm9kZShjb250ZXh0KScpIgogUEFT
UyBQYW5uZXJOb2RlIGludGVyZmFjZTogZXhpc3RlbmNlIGFuZCBwcm9wZXJ0aWVzIG9mIGludGVy
ZmFjZSBvYmplY3QgCiBGQUlMIFBhbm5lck5vZGUgaW50ZXJmYWNlIG9iamVjdCBsZW5ndGggYXNz
ZXJ0X2VxdWFsczogd3JvbmcgdmFsdWUgZm9yIFBhbm5lck5vZGUubGVuZ3RoIGV4cGVjdGVkIDEg
YnV0IGdvdCAwCi1GQUlMIFBhbm5lck5vZGUgaW50ZXJmYWNlIG9iamVjdCBuYW1lIGFzc2VydF9l
cXVhbHM6IHdyb25nIHZhbHVlIGZvciBQYW5uZXJOb2RlLm5hbWUgZXhwZWN0ZWQgIlBhbm5lck5v
ZGUiIGJ1dCBnb3QgIndlYmtpdEF1ZGlvUGFubmVyTm9kZSIKK1BBU1MgUGFubmVyTm9kZSBpbnRl
cmZhY2Ugb2JqZWN0IG5hbWUgCiBQQVNTIFBhbm5lck5vZGUgaW50ZXJmYWNlOiBleGlzdGVuY2Ug
YW5kIHByb3BlcnRpZXMgb2YgaW50ZXJmYWNlIHByb3RvdHlwZSBvYmplY3QgCiBQQVNTIFBhbm5l
ck5vZGUgaW50ZXJmYWNlOiBleGlzdGVuY2UgYW5kIHByb3BlcnRpZXMgb2YgaW50ZXJmYWNlIHBy
b3RvdHlwZSBvYmplY3QncyAiY29uc3RydWN0b3IiIHByb3BlcnR5IAogUEFTUyBQYW5uZXJOb2Rl
IGludGVyZmFjZTogZXhpc3RlbmNlIGFuZCBwcm9wZXJ0aWVzIG9mIGludGVyZmFjZSBwcm90b3R5
cGUgb2JqZWN0J3MgQEB1bnNjb3BhYmxlcyBwcm9wZXJ0eSAKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2ViYXVkaW8vdGhlLWF1ZGlvLWFw
aS90aGUtYXVkaW9jb250ZXh0LWludGVyZmFjZS9hdWRpb2NvbnRleHQtZGV0YWNoZWQtZXhlY3V0
aW9uLWNvbnRleHQudGVudGF0aXZlLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2ViYXVkaW8vdGhlLWF1ZGlvLWFwaS90aGUtYXVkaW9j
b250ZXh0LWludGVyZmFjZS9hdWRpb2NvbnRleHQtZGV0YWNoZWQtZXhlY3V0aW9uLWNvbnRleHQu
dGVudGF0aXZlLWV4cGVjdGVkLnR4dAppbmRleCAzNDRmY2Q5Yzk0MDViZWRmYTliMzQ3ZGViNzMx
MmI3ZDQ0YjI4NzZmLi44YjhkZTkwZmNiYjU0ZmQ5YmM5NjYzZmE0OTM0NTUzOGNhMGZlMTEwIDEw
MDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dl
YmF1ZGlvL3RoZS1hdWRpby1hcGkvdGhlLWF1ZGlvY29udGV4dC1pbnRlcmZhY2UvYXVkaW9jb250
ZXh0LWRldGFjaGVkLWV4ZWN1dGlvbi1jb250ZXh0LnRlbnRhdGl2ZS1leHBlY3RlZC50eHQKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJhdWRpby90
aGUtYXVkaW8tYXBpL3RoZS1hdWRpb2NvbnRleHQtaW50ZXJmYWNlL2F1ZGlvY29udGV4dC1kZXRh
Y2hlZC1leGVjdXRpb24tY29udGV4dC50ZW50YXRpdmUtZXhwZWN0ZWQudHh0CkBAIC0xLDcgKzEs
NiBAQAogCi0KIFBBU1MgIyBBVURJVCBUQVNLIFJVTk5FUiBTVEFSVEVELiAKLUZBSUwgRXhlY3V0
aW5nICJkZWNvZGluZy1vbi1kZXRhY2hlZC1pZnJhbWUiIHByb21pc2VfdGVzdDogVW5oYW5kbGVk
IHJlamVjdGlvbiB3aXRoIHZhbHVlOiBvYmplY3QgIlR5cGVFcnJvcjogdW5kZWZpbmVkIGlzIG5v
dCBhIGNvbnN0cnVjdG9yIChldmFsdWF0aW5nICduZXcgaWZyYW1lLmNvbnRlbnRXaW5kb3cuQXVk
aW9Db250ZXh0KCknKSIKK0ZBSUwgRXhlY3V0aW5nICJkZWNvZGluZy1vbi1kZXRhY2hlZC1pZnJh
bWUiIHByb21pc2VfdGVzdDogVW5oYW5kbGVkIHJlamVjdGlvbiB3aXRoIHZhbHVlOiBvYmplY3Qg
IlR5cGVFcnJvcjogTm90IGVub3VnaCBhcmd1bWVudHMiCiBQQVNTIEF1ZGl0IHJlcG9ydCAKIFBB
U1MgPiBbZGVjb2Rpbmctb24tZGV0YWNoZWQtaWZyYW1lXSAgCiBQQVNTICMgQVVESVQgVEFTSyBS
VU5ORVIgRklOSVNIRUQ6IDEgdGFza3MgcmFuIHN1Y2Nlc3NmdWxseS4gCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYmF1ZGlvL3RoZS1h
dWRpby1hcGkvdGhlLWF1ZGlvbm9kZS1pbnRlcmZhY2UvYXVkaW9ub2RlLWNvbm5lY3QtbWV0aG9k
LWNoYWluaW5nLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvd2ViYXVkaW8vdGhlLWF1ZGlvLWFwaS90aGUtYXVkaW9ub2RlLWludGVyZmFj
ZS9hdWRpb25vZGUtY29ubmVjdC1tZXRob2QtY2hhaW5pbmctZXhwZWN0ZWQudHh0CmluZGV4IDcz
Zjc3ZTU1Y2M4OTE2NTZjMmJkYTY4ZTNhOWUzNzE2OTU4MmY4NGMuLjZhNjU5YjU2MjU4ZDU0Mzc5
NzViNTU4ZGQ3ZDNiOTlmZTgwN2QyNmIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2ViYXVkaW8vdGhlLWF1ZGlvLWFwaS90aGUtYXVkaW9u
b2RlLWludGVyZmFjZS9hdWRpb25vZGUtY29ubmVjdC1tZXRob2QtY2hhaW5pbmctZXhwZWN0ZWQu
dHh0CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2Vi
YXVkaW8vdGhlLWF1ZGlvLWFwaS90aGUtYXVkaW9ub2RlLWludGVyZmFjZS9hdWRpb25vZGUtY29u
bmVjdC1tZXRob2QtY2hhaW5pbmctZXhwZWN0ZWQudHh0CkBAIC0zNiw5ICszNiw5IEBAIFBBU1Mg
ICBUaGUgcmV0dXJuIHZhbHVlIG9mIEdhaW5Ob2RlLmNvbm5lY3QoQ2hhbm5lbE1lcmdlck5vZGUs
IDAsIDEpIG1hdGNoZXMgdGhlCiBQQVNTICAgVGhlIHJldHVybiB2YWx1ZSBvZiBPc2NpbGxhdG9y
Tm9kZS5jb25uZWN0KEdhaW5Ob2RlKSBtYXRjaGVzIHRoZSBkZXN0aW5hdGlvbiBHYWluTm9kZSBp
cyBlcXVhbCB0byB0cnVlLiAKIFBBU1MgICBUaGUgcmV0dXJuIHZhbHVlIG9mIE9zY2lsbGF0b3JO
b2RlLmNvbm5lY3QoQmlxdWFkRmlsdGVyTm9kZSwgMCkgbWF0Y2hlcyB0aGUgZGVzdGluYXRpb24g
QmlxdWFkRmlsdGVyTm9kZSBpcyBlcXVhbCB0byB0cnVlLiAKIFBBU1MgICBUaGUgcmV0dXJuIHZh
bHVlIG9mIE9zY2lsbGF0b3JOb2RlLmNvbm5lY3QoQ2hhbm5lbE1lcmdlck5vZGUsIDAsIDEpIG1h
dGNoZXMgdGhlIGRlc3RpbmF0aW9uIENoYW5uZWxNZXJnZXJOb2RlIGlzIGVxdWFsIHRvIHRydWUu
IAotUEFTUyAgIFRoZSByZXR1cm4gdmFsdWUgb2Ygd2Via2l0QXVkaW9QYW5uZXJOb2RlLmNvbm5l
Y3QoR2Fpbk5vZGUpIG1hdGNoZXMgdGhlIGRlc3RpbmF0aW9uIEdhaW5Ob2RlIGlzIGVxdWFsIHRv
IHRydWUuIAotUEFTUyAgIFRoZSByZXR1cm4gdmFsdWUgb2Ygd2Via2l0QXVkaW9QYW5uZXJOb2Rl
LmNvbm5lY3QoQmlxdWFkRmlsdGVyTm9kZSwgMCkgbWF0Y2hlcyB0aGUgZGVzdGluYXRpb24gQmlx
dWFkRmlsdGVyTm9kZSBpcyBlcXVhbCB0byB0cnVlLiAKLVBBU1MgICBUaGUgcmV0dXJuIHZhbHVl
IG9mIHdlYmtpdEF1ZGlvUGFubmVyTm9kZS5jb25uZWN0KENoYW5uZWxNZXJnZXJOb2RlLCAwLCAx
KSBtYXRjaGVzIHRoZSBkZXN0aW5hdGlvbiBDaGFubmVsTWVyZ2VyTm9kZSBpcyBlcXVhbCB0byB0
cnVlLiAKK1BBU1MgICBUaGUgcmV0dXJuIHZhbHVlIG9mIFBhbm5lck5vZGUuY29ubmVjdChHYWlu
Tm9kZSkgbWF0Y2hlcyB0aGUgZGVzdGluYXRpb24gR2Fpbk5vZGUgaXMgZXF1YWwgdG8gdHJ1ZS4g
CitQQVNTICAgVGhlIHJldHVybiB2YWx1ZSBvZiBQYW5uZXJOb2RlLmNvbm5lY3QoQmlxdWFkRmls
dGVyTm9kZSwgMCkgbWF0Y2hlcyB0aGUgZGVzdGluYXRpb24gQmlxdWFkRmlsdGVyTm9kZSBpcyBl
cXVhbCB0byB0cnVlLiAKK1BBU1MgICBUaGUgcmV0dXJuIHZhbHVlIG9mIFBhbm5lck5vZGUuY29u
bmVjdChDaGFubmVsTWVyZ2VyTm9kZSwgMCwgMSkgbWF0Y2hlcyB0aGUgZGVzdGluYXRpb24gQ2hh
bm5lbE1lcmdlck5vZGUgaXMgZXF1YWwgdG8gdHJ1ZS4gCiBQQVNTICAgVGhlIHJldHVybiB2YWx1
ZSBvZiBTY3JpcHRQcm9jZXNzb3JOb2RlLmNvbm5lY3QoR2Fpbk5vZGUpIG1hdGNoZXMgdGhlIGRl
c3RpbmF0aW9uIEdhaW5Ob2RlIGlzIGVxdWFsIHRvIHRydWUuIAogUEFTUyAgIFRoZSByZXR1cm4g
dmFsdWUgb2YgU2NyaXB0UHJvY2Vzc29yTm9kZS5jb25uZWN0KEJpcXVhZEZpbHRlck5vZGUsIDAp
IG1hdGNoZXMgdGhlIGRlc3RpbmF0aW9uIEJpcXVhZEZpbHRlck5vZGUgaXMgZXF1YWwgdG8gdHJ1
ZS4gCiBQQVNTICAgVGhlIHJldHVybiB2YWx1ZSBvZiBTY3JpcHRQcm9jZXNzb3JOb2RlLmNvbm5l
Y3QoQ2hhbm5lbE1lcmdlck5vZGUsIDAsIDEpIG1hdGNoZXMgdGhlIGRlc3RpbmF0aW9uIENoYW5u
ZWxNZXJnZXJOb2RlIGlzIGVxdWFsIHRvIHRydWUuIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJhdWRpby90aGUtYXVkaW8tYXBpL3Ro
ZS1vZmZsaW5lYXVkaW9jb250ZXh0LWludGVyZmFjZS9vZmZsaW5lYXVkaW9jb250ZXh0LWRldGFj
aGVkLWV4ZWN1dGlvbi1jb250ZXh0LnRlbnRhdGl2ZS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYmF1ZGlvL3RoZS1hdWRpby1hcGkv
dGhlLW9mZmxpbmVhdWRpb2NvbnRleHQtaW50ZXJmYWNlL29mZmxpbmVhdWRpb2NvbnRleHQtZGV0
YWNoZWQtZXhlY3V0aW9uLWNvbnRleHQudGVudGF0aXZlLWV4cGVjdGVkLnR4dAppbmRleCBkM2Yw
ZmEwMTI4NDdhZTMwMDcyNDExYjZlOWEzYTRhYjg0NTUyZGMxLi5iMmRhMDcwNDUwNDA4ZTk2YzRi
MTExNmQ5NDNkMDIxZTY0N2MwNTE3IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYmF1ZGlvL3RoZS1hdWRpby1hcGkvdGhlLW9mZmxpbmVh
dWRpb2NvbnRleHQtaW50ZXJmYWNlL29mZmxpbmVhdWRpb2NvbnRleHQtZGV0YWNoZWQtZXhlY3V0
aW9uLWNvbnRleHQudGVudGF0aXZlLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYmF1ZGlvL3RoZS1hdWRpby1hcGkvdGhlLW9m
ZmxpbmVhdWRpb2NvbnRleHQtaW50ZXJmYWNlL29mZmxpbmVhdWRpb2NvbnRleHQtZGV0YWNoZWQt
ZXhlY3V0aW9uLWNvbnRleHQudGVudGF0aXZlLWV4cGVjdGVkLnR4dApAQCAtMSw3ICsxLDcgQEAK
IAogCiBQQVNTICMgQVVESVQgVEFTSyBSVU5ORVIgU1RBUlRFRC4gCi1GQUlMIEV4ZWN1dGluZyAi
ZGVjb2Rpbmctb24tZGV0YWNoZWQtaWZyYW1lIiBwcm9taXNlX3Rlc3Q6IFVuaGFuZGxlZCByZWpl
Y3Rpb24gd2l0aCB2YWx1ZTogb2JqZWN0ICJUeXBlRXJyb3I6IHVuZGVmaW5lZCBpcyBub3QgYSBj
b25zdHJ1Y3RvciAoZXZhbHVhdGluZyAnbmV3IGlmcmFtZS5jb250ZW50V2luZG93Lk9mZmxpbmVB
dWRpb0NvbnRleHQoMSwgMSwgMzAwMCknKSIKK0ZBSUwgRXhlY3V0aW5nICJkZWNvZGluZy1vbi1k
ZXRhY2hlZC1pZnJhbWUiIHByb21pc2VfdGVzdDogVW5oYW5kbGVkIHJlamVjdGlvbiB3aXRoIHZh
bHVlOiBvYmplY3QgIlN5bnRheEVycm9yOiBUaGUgc3RyaW5nIGRpZCBub3QgbWF0Y2ggdGhlIGV4
cGVjdGVkIHBhdHRlcm4uIgogUEFTUyBBdWRpdCByZXBvcnQgCiBQQVNTID4gW2RlY29kaW5nLW9u
LWRldGFjaGVkLWlmcmFtZV0gIAogUEFTUyAjIEFVRElUIFRBU0sgUlVOTkVSIEZJTklTSEVEOiAx
IHRhc2tzIHJhbiBzdWNjZXNzZnVsbHkuIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>402146</attachid>
            <date>2020-06-17 13:00:10 -0700</date>
            <delta_ts>2020-06-17 13:06:50 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-213268-20200617130009.patch</filename>
            <type>text/plain</type>
            <size>272950</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYzMTYzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzYwNDdkMTUxZDZmMDhm
ZTlmY2ZjYzZiNTNmNDY1YTgzNGMyOGIyZS4uZjY5MGYzYjNkMTMzNDVlMzFmNmFmYTNmOTgzZGFl
NjkyN2NhMzk1NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI5NiBAQAorMjAyMC0wNi0xNyAgQ2hy
aXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBleHBlcmltZW50YWwg
ZmVhdHVyZSBmbGFnIGZvciBtb2Rlcm4gJiB1bnByZWZpeGVkIFdlYkF1ZGlvIEFQSQorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjEzMjY4CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgSmVyIE5vYmxlLgorCisgICAgICAgIEFkZCBleHBlcmltZW50YWwgZmVh
dHVyZSBmbGFnIGZvciBtb2Rlcm4gJiB1bnByZWZpeGVkIFdlYkF1ZGlvIEFQSSwKKyAgICAgICAg
b2ZmIGJ5IGRlZmF1bHQuCisKKyAgICAgICAgVGhpcyBwYXRjaCBzcGxpdCB0aGUgQXVkaW9Db250
ZXh0LCBPZmZsaW5lQXVkaW9Db250ZXh0IGFuZCBQYW5uZXJOb2RlCisgICAgICAgIElETCBpbnRl
cmZhY2VzIGludG8gdGhlaXIgcHJlZml4ZWQgYW5kIHVucHJlZml4ZWQgdmVyc2lvbnMuIFRoZQor
ICAgICAgICB1bnByZWZpeGVkIHZlcnNpb25zIGFyZSBiZWhpbmQgdGhlIG5ldyBleHBlcmltZW50
YWwgZmVhdHVyZSBmbGFnIHRoYXQKKyAgICAgICAgaXMgY3VycmVudGx5IG9mZiBieSBkZWZhdWx0
IGJ1dCBhdXRvbWF0aWNhbGx5IGdldHMgdHVybmVkIG9uIGluIHRoZQorICAgICAgICBjb250ZXh0
IG9mIGxheW91dCB0ZXN0cy4KKworICAgICAgICBUaGlzIHdpbGwgZ2l2ZSB1cyBtb3JlIGZsZXhp
YmlsaXR5IHdoZW4gd29ya2luZyBvbiB0aGUgbW9kZXJuIGFuZAorICAgICAgICB1bnByZWZpeGVk
IFdlYkF1ZGlvIEFQSSBhcyB3ZSB3aWxsIG5vdCBoYXZlIHRvIHdvcnJ5IGFib3V0IGJhY2t3YXJk
CisgICAgICAgIGNvbXBhdGliaWxpdHkuIFRoaXMgYWxzbyBhbGxvd3MgdXMgdG8gZWFzaWx5IHR1
cm4gaXQgb24gb3Igb2ZmIHZpYQorICAgICAgICB0aGUgZXhwZXJpbWVudGFsIGZlYXR1cmVzIG1l
bnUgaW4gU2FmYXJpLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cywgcmViYXNlbGluZWQgZXhpc3Rp
bmcgdGVzdHMuCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBEZXJpdmVk
U291cmNlcy1pbnB1dC54Y2ZpbGVsaXN0OgorICAgICAgICAqIERlcml2ZWRTb3VyY2VzLW91dHB1
dC54Y2ZpbGVsaXN0OgorICAgICAgICAqIERlcml2ZWRTb3VyY2VzLm1ha2U6CisgICAgICAgICog
TW9kdWxlcy93ZWJhdWRpby9BbmFseXNlck5vZGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QW5h
bHlzZXJOb2RlOjpBbmFseXNlck5vZGUpOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vQW5h
bHlzZXJOb2RlLmg6CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9BdWRpb0Jhc2ljSW5zcGVj
dG9yTm9kZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb0Jhc2ljSW5zcGVjdG9yTm9kZTo6
QXVkaW9CYXNpY0luc3BlY3Rvck5vZGUpOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vQXVk
aW9CYXNpY0luc3BlY3Rvck5vZGUuaDoKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL0F1ZGlv
QmFzaWNQcm9jZXNzb3JOb2RlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvQmFzaWNQcm9j
ZXNzb3JOb2RlOjpBdWRpb0Jhc2ljUHJvY2Vzc29yTm9kZSk6CisgICAgICAgICogTW9kdWxlcy93
ZWJhdWRpby9BdWRpb0Jhc2ljUHJvY2Vzc29yTm9kZS5oOgorICAgICAgICAqIE1vZHVsZXMvd2Vi
YXVkaW8vQXVkaW9CdWZmZXJTb3VyY2VOb2RlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlv
QnVmZmVyU291cmNlTm9kZTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvQnVmZmVy
U291cmNlTm9kZTo6QXVkaW9CdWZmZXJTb3VyY2VOb2RlKToKKyAgICAgICAgKFdlYkNvcmU6OkF1
ZGlvQnVmZmVyU291cmNlTm9kZTo6c2V0QnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlv
QnVmZmVyU291cmNlTm9kZTo6c2V0UGFubmVyTm9kZSk6CisgICAgICAgICogTW9kdWxlcy93ZWJh
dWRpby9BdWRpb0J1ZmZlclNvdXJjZU5vZGUuaDoKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlv
L0F1ZGlvQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb0NvbnRleHRCYXNlOjpB
dWRpb0NvbnRleHRCYXNlKToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvQ29udGV4dDo6QXVkaW9D
b250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvQ29udGV4dEJhc2U6OmRvY3VtZW50IGNv
bnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvQ29udGV4dEJhc2U6OnNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQgY29uc3QpOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0
Lmg6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb0NvbnRleHRCYXNlOjpBdXRvTG9ja2VyOjpBdXRv
TG9ja2VyKToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvQ29udGV4dEJhc2U6OkF1dG9Mb2NrZXI6
On5BdXRvTG9ja2VyKToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvQ29udGV4dDo6bWF4TnVtYmVy
T2ZDaGFubmVscyk6CisgICAgICAgIChpc1R5cGUpOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVk
aW8vQXVkaW9Db250ZXh0LmlkbDoKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQ29u
dGV4dFN0YXRlLmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8v
T2ZmbGluZUF1ZGlvQ29udGV4dC5pZGwuCisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9BdWRp
b0NvbnRleHRTdGF0ZS5pZGw6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
YXVkaW8vT2ZmbGluZUF1ZGlvQ29udGV4dC5pZGwuCisgICAgICAgICogTW9kdWxlcy93ZWJhdWRp
by9BdWRpb0Rlc3RpbmF0aW9uTm9kZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb0Rlc3Rp
bmF0aW9uTm9kZTo6QXVkaW9EZXN0aW5hdGlvbk5vZGUpOgorICAgICAgICAqIE1vZHVsZXMvd2Vi
YXVkaW8vQXVkaW9EZXN0aW5hdGlvbk5vZGUuaDoKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlv
L0F1ZGlvTm9kZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb05vZGU6OkF1ZGlvTm9kZSk6
CisgICAgICAgIChXZWJDb3JlOjpBdWRpb05vZGU6OmNvbm5lY3QpOgorICAgICAgICAoV2ViQ29y
ZTo6QXVkaW9Ob2RlOjpkaXNjb25uZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvTm9kZTo6
c2V0Q2hhbm5lbENvdW50KToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvTm9kZTo6c2V0Q2hhbm5l
bENvdW50TW9kZSk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb05vZGU6OnNldENoYW5uZWxJbnRl
cnByZXRhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb05vZGU6OmVuYWJsZU91dHB1dHNJ
Zk5lY2Vzc2FyeSk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb05vZGU6OmRlcmVmKToKKyAgICAg
ICAgKFdlYkNvcmU6OkF1ZGlvTm9kZTo6Y29udGV4dEZvckJpbmRpbmdzIGNvbnN0KToKKyAgICAg
ICAgKiBNb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvTm9kZS5oOgorICAgICAgICAoV2ViQ29yZTo6QXVk
aW9Ob2RlOjpjb250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvTm9kZTo6Y29udGV4dCBj
b25zdCk6CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9BdWRpb05vZGUuaWRsOgorICAgICAg
ICAqIE1vZHVsZXMvd2ViYXVkaW8vQXVkaW9Ob2RlT3V0cHV0Lmg6CisgICAgICAgIChXZWJDb3Jl
OjpBdWRpb05vZGVPdXRwdXQ6OmNvbnRleHQpOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8v
QXVkaW9QYXJhbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb1BhcmFtOjpBdWRpb1BhcmFt
KToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvUGFyYW0uaDoKKyAgICAgICAgKiBN
b2R1bGVzL3dlYmF1ZGlvL0F1ZGlvUGFyYW1UaW1lbGluZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpBdWRpb1BhcmFtVGltZWxpbmU6OnZhbHVlRm9yQ29udGV4dFRpbWUpOgorICAgICAgICAqIE1v
ZHVsZXMvd2ViYXVkaW8vQXVkaW9QYXJhbVRpbWVsaW5lLmg6CisgICAgICAgICogTW9kdWxlcy93
ZWJhdWRpby9BdWRpb1NjaGVkdWxlZFNvdXJjZU5vZGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
QXVkaW9TY2hlZHVsZWRTb3VyY2VOb2RlOjpBdWRpb1NjaGVkdWxlZFNvdXJjZU5vZGUpOgorICAg
ICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vQXVkaW9TY2hlZHVsZWRTb3VyY2VOb2RlLmg6CisgICAg
ICAgICogTW9kdWxlcy93ZWJhdWRpby9BdWRpb1N1bW1pbmdKdW5jdGlvbi5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpBdWRpb1N1bW1pbmdKdW5jdGlvbjo6QXVkaW9TdW1taW5nSnVuY3Rpb24pOgor
ICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vQXVkaW9TdW1taW5nSnVuY3Rpb24uaDoKKyAgICAg
ICAgKFdlYkNvcmU6OkF1ZGlvU3VtbWluZ0p1bmN0aW9uOjpjb250ZXh0KToKKyAgICAgICAgKiBN
b2R1bGVzL3dlYmF1ZGlvL0JpcXVhZEZpbHRlck5vZGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
QmlxdWFkRmlsdGVyTm9kZTo6QmlxdWFkRmlsdGVyTm9kZSk6CisgICAgICAgICogTW9kdWxlcy93
ZWJhdWRpby9CaXF1YWRGaWx0ZXJOb2RlLmg6CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9C
aXF1YWRQcm9jZXNzb3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QmlxdWFkUHJvY2Vzc29yOjpC
aXF1YWRQcm9jZXNzb3IpOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vQmlxdWFkUHJvY2Vz
c29yLmg6CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9DaGFubmVsTWVyZ2VyTm9kZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpDaGFubmVsTWVyZ2VyTm9kZTo6Y3JlYXRlKToKKyAgICAgICAg
KFdlYkNvcmU6OkNoYW5uZWxNZXJnZXJOb2RlOjpDaGFubmVsTWVyZ2VyTm9kZSk6CisgICAgICAg
ICogTW9kdWxlcy93ZWJhdWRpby9DaGFubmVsTWVyZ2VyTm9kZS5oOgorICAgICAgICAqIE1vZHVs
ZXMvd2ViYXVkaW8vQ2hhbm5lbFNwbGl0dGVyTm9kZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpD
aGFubmVsU3BsaXR0ZXJOb2RlOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6Q2hhbm5lbFNw
bGl0dGVyTm9kZTo6Q2hhbm5lbFNwbGl0dGVyTm9kZSk6CisgICAgICAgICogTW9kdWxlcy93ZWJh
dWRpby9DaGFubmVsU3BsaXR0ZXJOb2RlLmg6CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9D
b252b2x2ZXJOb2RlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbnZvbHZlck5vZGU6OkNvbnZv
bHZlck5vZGUpOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vQ29udm9sdmVyTm9kZS5oOgor
ICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vRGVmYXVsdEF1ZGlvRGVzdGluYXRpb25Ob2RlLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkRlZmF1bHRBdWRpb0Rlc3RpbmF0aW9uTm9kZTo6RGVmYXVs
dEF1ZGlvRGVzdGluYXRpb25Ob2RlKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL0RlZmF1
bHRBdWRpb0Rlc3RpbmF0aW9uTm9kZS5oOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vRGVs
YXlOb2RlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRlbGF5Tm9kZTo6RGVsYXlOb2RlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkRlbGF5Tm9kZTo6Y3JlYXRlKToKKyAgICAgICAgKiBNb2R1bGVzL3dl
YmF1ZGlvL0RlbGF5Tm9kZS5oOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vRGVsYXlQcm9j
ZXNzb3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGVsYXlQcm9jZXNzb3I6OkRlbGF5UHJvY2Vz
c29yKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL0RlbGF5UHJvY2Vzc29yLmg6CisgICAg
ICAgICogTW9kdWxlcy93ZWJhdWRpby9EaXN0YW5jZU1vZGVsVHlwZS5oOiBDb3BpZWQgZnJvbSBT
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL09mZmxpbmVBdWRpb0NvbnRleHQuaWRsLgor
ICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vRGlzdGFuY2VNb2RlbFR5cGUuaWRsOiBDb3BpZWQg
ZnJvbSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL09mZmxpbmVBdWRpb0NvbnRleHQu
aWRsLgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vRHluYW1pY3NDb21wcmVzc29yTm9kZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpEeW5hbWljc0NvbXByZXNzb3JOb2RlOjpEeW5hbWljc0Nv
bXByZXNzb3JOb2RlKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL0R5bmFtaWNzQ29tcHJl
c3Nvck5vZGUuaDoKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL0dhaW5Ob2RlLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkdhaW5Ob2RlOjpHYWluTm9kZSk6CisgICAgICAgICogTW9kdWxlcy93
ZWJhdWRpby9HYWluTm9kZS5oOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vTWVkaWFFbGVt
ZW50QXVkaW9Tb3VyY2VOb2RlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhRWxlbWVudEF1
ZGlvU291cmNlTm9kZTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhRWxlbWVudEF1
ZGlvU291cmNlTm9kZTo6TWVkaWFFbGVtZW50QXVkaW9Tb3VyY2VOb2RlKToKKyAgICAgICAgKFdl
YkNvcmU6Ok1lZGlhRWxlbWVudEF1ZGlvU291cmNlTm9kZTo6c2V0Rm9ybWF0KToKKyAgICAgICAg
KiBNb2R1bGVzL3dlYmF1ZGlvL01lZGlhRWxlbWVudEF1ZGlvU291cmNlTm9kZS5oOgorICAgICAg
ICAqIE1vZHVsZXMvd2ViYXVkaW8vTWVkaWFTdHJlYW1BdWRpb0Rlc3RpbmF0aW9uTm9kZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbUF1ZGlvRGVzdGluYXRpb25Ob2RlOjpjcmVh
dGUpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTdHJlYW1BdWRpb0Rlc3RpbmF0aW9uTm9kZTo6
TWVkaWFTdHJlYW1BdWRpb0Rlc3RpbmF0aW9uTm9kZSk6CisgICAgICAgICogTW9kdWxlcy93ZWJh
dWRpby9NZWRpYVN0cmVhbUF1ZGlvRGVzdGluYXRpb25Ob2RlLmg6CisgICAgICAgICogTW9kdWxl
cy93ZWJhdWRpby9NZWRpYVN0cmVhbUF1ZGlvU291cmNlTm9kZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpNZWRpYVN0cmVhbUF1ZGlvU291cmNlTm9kZTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNv
cmU6Ok1lZGlhU3RyZWFtQXVkaW9Tb3VyY2VOb2RlOjpNZWRpYVN0cmVhbUF1ZGlvU291cmNlTm9k
ZSk6CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9NZWRpYVN0cmVhbUF1ZGlvU291cmNlTm9k
ZS5oOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vT2ZmbGluZUF1ZGlvQ29udGV4dC5pZGw6
CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9PZmZsaW5lQXVkaW9EZXN0aW5hdGlvbk5vZGUu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6T2ZmbGluZUF1ZGlvRGVzdGluYXRpb25Ob2RlOjpPZmZs
aW5lQXVkaW9EZXN0aW5hdGlvbk5vZGUpOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vT2Zm
bGluZUF1ZGlvRGVzdGluYXRpb25Ob2RlLmg6CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9P
c2NpbGxhdG9yTm9kZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpPc2NpbGxhdG9yTm9kZTo6Y3Jl
YXRlKToKKyAgICAgICAgKFdlYkNvcmU6Ok9zY2lsbGF0b3JOb2RlOjpPc2NpbGxhdG9yTm9kZSk6
CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9Pc2NpbGxhdG9yTm9kZS5oOgorICAgICAgICAq
IE1vZHVsZXMvd2ViYXVkaW8vUGFubmVyTm9kZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQYW5u
ZXJOb2RlQmFzZTo6UGFubmVyTm9kZUJhc2UpOgorICAgICAgICAoV2ViQ29yZTo6UGFubmVyTm9k
ZTo6UGFubmVyTm9kZSk6CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9QYW5uZXJOb2RlLmg6
CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9QYW5uZXJOb2RlLmlkbDoKKyAgICAgICAgKiBN
b2R1bGVzL3dlYmF1ZGlvL1Bhbm5pbmdNb2RlbFR5cGUuaDogQ29waWVkIGZyb20gU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJhdWRpby9PZmZsaW5lQXVkaW9Db250ZXh0LmlkbC4KKyAgICAgICAg
KiBNb2R1bGVzL3dlYmF1ZGlvL1Bhbm5pbmdNb2RlbFR5cGUuaWRsOiBDb3BpZWQgZnJvbSBTb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL09mZmxpbmVBdWRpb0NvbnRleHQuaWRsLgorICAg
ICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vU2NyaXB0UHJvY2Vzc29yTm9kZS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpTY3JpcHRQcm9jZXNzb3JOb2RlOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29y
ZTo6U2NyaXB0UHJvY2Vzc29yTm9kZTo6U2NyaXB0UHJvY2Vzc29yTm9kZSk6CisgICAgICAgICog
TW9kdWxlcy93ZWJhdWRpby9TY3JpcHRQcm9jZXNzb3JOb2RlLmg6CisgICAgICAgICogTW9kdWxl
cy93ZWJhdWRpby9XYXZlU2hhcGVyTm9kZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXYXZlU2hh
cGVyTm9kZTo6V2F2ZVNoYXBlck5vZGUpOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vV2F2
ZVNoYXBlck5vZGUuaDoKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL1dlYktpdEF1ZGlvQ29u
dGV4dC5jcHA6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVk
aW9Db250ZXh0LmNwcC4KKyAgICAgICAgKFdlYkNvcmU6OldlYktpdEF1ZGlvQ29udGV4dDo6aXNT
YW1wbGVSYXRlUmFuZ2VHb29kKToKKyAgICAgICAgKFdlYkNvcmU6OldlYktpdEF1ZGlvQ29udGV4
dDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OldlYktpdEF1ZGlvQ29udGV4dDo6V2ViS2l0
QXVkaW9Db250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OldlYktpdEF1ZGlvQ29udGV4dDo6Y29u
c3RydWN0Q29tbW9uKToKKyAgICAgICAgKFdlYkNvcmU6OldlYktpdEF1ZGlvQ29udGV4dDo6fldl
YktpdEF1ZGlvQ29udGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJLaXRBdWRpb0NvbnRleHQ6
OmxhenlJbml0aWFsaXplKToKKyAgICAgICAgKFdlYkNvcmU6OldlYktpdEF1ZGlvQ29udGV4dDo6
Y2xlYXIpOgorICAgICAgICAoV2ViQ29yZTo6V2ViS2l0QXVkaW9Db250ZXh0Ojp1bmluaXRpYWxp
emUpOgorICAgICAgICAoV2ViQ29yZTo6V2ViS2l0QXVkaW9Db250ZXh0Ojppc0luaXRpYWxpemVk
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OldlYktpdEF1ZGlvQ29udGV4dDo6YWRkUmVhY3Rp
b24pOgorICAgICAgICAoV2ViQ29yZTo6V2ViS2l0QXVkaW9Db250ZXh0OjpzZXRTdGF0ZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpXZWJLaXRBdWRpb0NvbnRleHQ6OnN0b3ApOgorICAgICAgICAoV2Vi
Q29yZTo6V2ViS2l0QXVkaW9Db250ZXh0OjpzdXNwZW5kKToKKyAgICAgICAgKFdlYkNvcmU6Oldl
YktpdEF1ZGlvQ29udGV4dDo6cmVzdW1lKToKKyAgICAgICAgKFdlYkNvcmU6OldlYktpdEF1ZGlv
Q29udGV4dDo6YWN0aXZlRE9NT2JqZWN0TmFtZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpX
ZWJLaXRBdWRpb0NvbnRleHQ6Omhvc3RpbmdEb2N1bWVudElkZW50aWZpZXIgY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6V2ViS2l0QXVkaW9Db250ZXh0Ojppc1N1c3BlbmRlZCBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpXZWJLaXRBdWRpb0NvbnRleHQ6OnZpc2liaWxpdHlTdGF0ZUNoYW5n
ZWQpOgorICAgICAgICAoV2ViQ29yZTo6V2ViS2l0QXVkaW9Db250ZXh0Ojp3b3VsZFRhaW50T3Jp
Z2luIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OldlYktpdEF1ZGlvQ29udGV4dDo6Y3JlYXRl
QnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OldlYktpdEF1ZGlvQ29udGV4dDo6ZGVjb2RlQXVk
aW9EYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OldlYktpdEF1ZGlvQ29udGV4dDo6Y3JlYXRlQnVm
ZmVyU291cmNlKToKKyAgICAgICAgKFdlYkNvcmU6OldlYktpdEF1ZGlvQ29udGV4dDo6Y3JlYXRl
TWVkaWFFbGVtZW50U291cmNlKToKKyAgICAgICAgKFdlYkNvcmU6OldlYktpdEF1ZGlvQ29udGV4
dDo6Y3JlYXRlTWVkaWFTdHJlYW1Tb3VyY2UpOgorICAgICAgICAoV2ViQ29yZTo6V2ViS2l0QXVk
aW9Db250ZXh0OjpjcmVhdGVNZWRpYVN0cmVhbURlc3RpbmF0aW9uKToKKyAgICAgICAgKFdlYkNv
cmU6OldlYktpdEF1ZGlvQ29udGV4dDo6Y3JlYXRlU2NyaXB0UHJvY2Vzc29yKToKKyAgICAgICAg
KFdlYkNvcmU6OldlYktpdEF1ZGlvQ29udGV4dDo6Y3JlYXRlQmlxdWFkRmlsdGVyKToKKyAgICAg
ICAgKFdlYkNvcmU6OldlYktpdEF1ZGlvQ29udGV4dDo6Y3JlYXRlV2F2ZVNoYXBlcik6CisgICAg
ICAgIChXZWJDb3JlOjpXZWJLaXRBdWRpb0NvbnRleHQ6OmNyZWF0ZVBhbm5lcik6CisgICAgICAg
IChXZWJDb3JlOjpXZWJLaXRBdWRpb0NvbnRleHQ6OmNyZWF0ZUNvbnZvbHZlcik6CisgICAgICAg
IChXZWJDb3JlOjpXZWJLaXRBdWRpb0NvbnRleHQ6OmNyZWF0ZUR5bmFtaWNzQ29tcHJlc3Nvcik6
CisgICAgICAgIChXZWJDb3JlOjpXZWJLaXRBdWRpb0NvbnRleHQ6OmNyZWF0ZUFuYWx5c2VyKToK
KyAgICAgICAgKFdlYkNvcmU6OldlYktpdEF1ZGlvQ29udGV4dDo6Y3JlYXRlR2Fpbik6CisgICAg
ICAgIChXZWJDb3JlOjpXZWJLaXRBdWRpb0NvbnRleHQ6OmNyZWF0ZURlbGF5KToKKyAgICAgICAg
KFdlYkNvcmU6OldlYktpdEF1ZGlvQ29udGV4dDo6Y3JlYXRlQ2hhbm5lbFNwbGl0dGVyKToKKyAg
ICAgICAgKFdlYkNvcmU6OldlYktpdEF1ZGlvQ29udGV4dDo6Y3JlYXRlQ2hhbm5lbE1lcmdlcik6
CisgICAgICAgIChXZWJDb3JlOjpXZWJLaXRBdWRpb0NvbnRleHQ6OmNyZWF0ZU9zY2lsbGF0b3Ip
OgorICAgICAgICAoV2ViQ29yZTo6V2ViS2l0QXVkaW9Db250ZXh0OjpjcmVhdGVQZXJpb2RpY1dh
dmUpOgorICAgICAgICAoV2ViQ29yZTo6V2ViS2l0QXVkaW9Db250ZXh0Ojpub3RpZnlOb2RlRmlu
aXNoZWRQcm9jZXNzaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OldlYktpdEF1ZGlvQ29udGV4dDo6
ZGVyZWZGaW5pc2hlZFNvdXJjZU5vZGVzKToKKyAgICAgICAgKFdlYkNvcmU6OldlYktpdEF1ZGlv
Q29udGV4dDo6cmVmTm9kZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJLaXRBdWRpb0NvbnRleHQ6
OmRlcmVmTm9kZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJLaXRBdWRpb0NvbnRleHQ6OmRlcmVm
VW5maW5pc2hlZFNvdXJjZU5vZGVzKToKKyAgICAgICAgKFdlYkNvcmU6OldlYktpdEF1ZGlvQ29u
dGV4dDo6bG9jayk6CisgICAgICAgIChXZWJDb3JlOjpXZWJLaXRBdWRpb0NvbnRleHQ6OnRyeUxv
Y2spOgorICAgICAgICAoV2ViQ29yZTo6V2ViS2l0QXVkaW9Db250ZXh0Ojp1bmxvY2spOgorICAg
ICAgICAoV2ViQ29yZTo6V2ViS2l0QXVkaW9Db250ZXh0Ojppc0F1ZGlvVGhyZWFkIGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6OldlYktpdEF1ZGlvQ29udGV4dDo6aXNHcmFwaE93bmVyIGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6OldlYktpdEF1ZGlvQ29udGV4dDo6YWRkRGVmZXJyZWRGaW5p
c2hEZXJlZik6CisgICAgICAgIChXZWJDb3JlOjpXZWJLaXRBdWRpb0NvbnRleHQ6OmhhbmRsZVBy
ZVJlbmRlclRhc2tzKToKKyAgICAgICAgKFdlYkNvcmU6OldlYktpdEF1ZGlvQ29udGV4dDo6aGFu
ZGxlUG9zdFJlbmRlclRhc2tzKToKKyAgICAgICAgKFdlYkNvcmU6OldlYktpdEF1ZGlvQ29udGV4
dDo6aGFuZGxlRGVmZXJyZWRGaW5pc2hEZXJlZnMpOgorICAgICAgICAoV2ViQ29yZTo6V2ViS2l0
QXVkaW9Db250ZXh0OjptYXJrRm9yRGVsZXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6V2ViS2l0
QXVkaW9Db250ZXh0OjpzY2hlZHVsZU5vZGVEZWxldGlvbik6CisgICAgICAgIChXZWJDb3JlOjpX
ZWJLaXRBdWRpb0NvbnRleHQ6OmRlbGV0ZU1hcmtlZE5vZGVzKToKKyAgICAgICAgKFdlYkNvcmU6
OldlYktpdEF1ZGlvQ29udGV4dDo6bWFya1N1bW1pbmdKdW5jdGlvbkRpcnR5KToKKyAgICAgICAg
KFdlYkNvcmU6OldlYktpdEF1ZGlvQ29udGV4dDo6cmVtb3ZlTWFya2VkU3VtbWluZ0p1bmN0aW9u
KToKKyAgICAgICAgKFdlYkNvcmU6OldlYktpdEF1ZGlvQ29udGV4dDo6bWFya0F1ZGlvTm9kZU91
dHB1dERpcnR5KToKKyAgICAgICAgKFdlYkNvcmU6OldlYktpdEF1ZGlvQ29udGV4dDo6aGFuZGxl
RGlydHlBdWRpb1N1bW1pbmdKdW5jdGlvbnMpOgorICAgICAgICAoV2ViQ29yZTo6V2ViS2l0QXVk
aW9Db250ZXh0OjpoYW5kbGVEaXJ0eUF1ZGlvTm9kZU91dHB1dHMpOgorICAgICAgICAoV2ViQ29y
ZTo6V2ViS2l0QXVkaW9Db250ZXh0OjphZGRBdXRvbWF0aWNQdWxsTm9kZSk6CisgICAgICAgIChX
ZWJDb3JlOjpXZWJLaXRBdWRpb0NvbnRleHQ6OnJlbW92ZUF1dG9tYXRpY1B1bGxOb2RlKToKKyAg
ICAgICAgKFdlYkNvcmU6OldlYktpdEF1ZGlvQ29udGV4dDo6dXBkYXRlQXV0b21hdGljUHVsbE5v
ZGVzKToKKyAgICAgICAgKFdlYkNvcmU6OldlYktpdEF1ZGlvQ29udGV4dDo6cHJvY2Vzc0F1dG9t
YXRpY1B1bGxOb2Rlcyk6CisgICAgICAgIChXZWJDb3JlOjpXZWJLaXRBdWRpb0NvbnRleHQ6Om5v
ZGVXaWxsQmVnaW5QbGF5YmFjayk6CisgICAgICAgIChXZWJDb3JlOjpzaG91bGREb2N1bWVudEFs
bG93V2ViQXVkaW9Ub0F1dG9QbGF5KToKKyAgICAgICAgKFdlYkNvcmU6OldlYktpdEF1ZGlvQ29u
dGV4dDo6d2lsbEJlZ2luUGxheWJhY2spOgorICAgICAgICAoV2ViQ29yZTo6V2ViS2l0QXVkaW9D
b250ZXh0Ojp3aWxsUGF1c2VQbGF5YmFjayk6CisgICAgICAgIChXZWJDb3JlOjpXZWJLaXRBdWRp
b0NvbnRleHQ6OnN0YXJ0UmVuZGVyaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OldlYktpdEF1ZGlv
Q29udGV4dDo6bWVkaWFDYW5TdGFydCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJLaXRBdWRpb0Nv
bnRleHQ6Om1lZGlhU3RhdGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6V2ViS2l0QXVkaW9D
b250ZXh0OjpwYWdlTXV0ZWRTdGF0ZURpZENoYW5nZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJL
aXRBdWRpb0NvbnRleHQ6OmlzUGxheWluZ0F1ZGlvRGlkQ2hhbmdlKToKKyAgICAgICAgKFdlYkNv
cmU6OldlYktpdEF1ZGlvQ29udGV4dDo6ZmluaXNoZWRSZW5kZXJpbmcpOgorICAgICAgICAoV2Vi
Q29yZTo6V2ViS2l0QXVkaW9Db250ZXh0OjpkaXNwYXRjaEV2ZW50KToKKyAgICAgICAgKFdlYkNv
cmU6OldlYktpdEF1ZGlvQ29udGV4dDo6aW5jcmVtZW50QWN0aXZlU291cmNlQ291bnQpOgorICAg
ICAgICAoV2ViQ29yZTo6V2ViS2l0QXVkaW9Db250ZXh0OjpkZWNyZW1lbnRBY3RpdmVTb3VyY2VD
b3VudCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJLaXRBdWRpb0NvbnRleHQ6OnN1c3BlbmRSZW5k
ZXJpbmcpOgorICAgICAgICAoV2ViQ29yZTo6V2ViS2l0QXVkaW9Db250ZXh0OjpyZXN1bWVSZW5k
ZXJpbmcpOgorICAgICAgICAoV2ViQ29yZTo6V2ViS2l0QXVkaW9Db250ZXh0OjpjbG9zZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpXZWJLaXRBdWRpb0NvbnRleHQ6OnN1c3BlbmRQbGF5YmFjayk6Cisg
ICAgICAgIChXZWJDb3JlOjpXZWJLaXRBdWRpb0NvbnRleHQ6Om1heVJlc3VtZVBsYXliYWNrKToK
KyAgICAgICAgKFdlYkNvcmU6OldlYktpdEF1ZGlvQ29udGV4dDo6cG9zdFRhc2spOgorICAgICAg
ICAoV2ViQ29yZTo6V2ViS2l0QXVkaW9Db250ZXh0OjpvcmlnaW4gY29uc3QpOgorICAgICAgICAo
V2ViQ29yZTo6V2ViS2l0QXVkaW9Db250ZXh0OjphZGRDb25zb2xlTWVzc2FnZSk6CisgICAgICAg
IChXZWJDb3JlOjpXZWJLaXRBdWRpb0NvbnRleHQ6OmNsZWFyUGVuZGluZ0FjdGl2aXR5KToKKyAg
ICAgICAgKFdlYkNvcmU6OldlYktpdEF1ZGlvQ29udGV4dDo6bWFrZVBlbmRpbmdBY3Rpdml0eSk6
CisgICAgICAgIChXZWJDb3JlOjpXZWJLaXRBdWRpb0NvbnRleHQ6OmxvZ0NoYW5uZWwgY29uc3Qp
OgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vV2ViS2l0QXVkaW9Db250ZXh0Lmg6IENvcGll
ZCBmcm9tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0LmguCisg
ICAgICAgIChXZWJDb3JlOjpXZWJLaXRBdWRpb0NvbnRleHQ6OmRlc3RpbmF0aW9uKToKKyAgICAg
ICAgKFdlYkNvcmU6OldlYktpdEF1ZGlvQ29udGV4dDo6YWN0aXZlU291cmNlQ291bnQgY29uc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6V2ViS2l0QXVkaW9Db250ZXh0OjpsaXN0ZW5lcik6CisgICAg
ICAgIChXZWJDb3JlOjpXZWJLaXRBdWRpb0NvbnRleHQ6OmlzQ2xvc2VkIGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OldlYktpdEF1ZGlvQ29udGV4dDo6Y29ubmVjdGlvbkNvdW50IGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6OldlYktpdEF1ZGlvQ29udGV4dDo6YXVkaW9UaHJlYWQgY29uc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6V2ViS2l0QXVkaW9Db250ZXh0OjptYXhOdW1iZXJPZkNoYW5u
ZWxzKToKKyAgICAgICAgKFdlYkNvcmU6OldlYktpdEF1ZGlvQ29udGV4dDo6dXNlckdlc3R1cmVS
ZXF1aXJlZEZvckF1ZGlvU3RhcnQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6V2ViS2l0QXVk
aW9Db250ZXh0OjpwYWdlQ29uc2VudFJlcXVpcmVkRm9yQXVkaW9TdGFydCBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpXZWJLaXRBdWRpb0NvbnRleHQ6OnN0YXRlIGNvbnN0KToKKyAgICAgICAg
KGlzVHlwZSk6CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9XZWJLaXRBdWRpb0NvbnRleHQu
aWRsOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQ29u
dGV4dC5pZGwuCisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9XZWJLaXRBdWRpb1Bhbm5lck5v
ZGUuY3BwOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1Bhbm5l
ck5vZGUuY3BwLgorICAgICAgICAoV2ViQ29yZTo6Zml4TkFOcyk6CisgICAgICAgIChXZWJDb3Jl
OjpXZWJLaXRBdWRpb1Bhbm5lck5vZGU6OldlYktpdEF1ZGlvUGFubmVyTm9kZSk6CisgICAgICAg
IChXZWJDb3JlOjpXZWJLaXRBdWRpb1Bhbm5lck5vZGU6On5XZWJLaXRBdWRpb1Bhbm5lck5vZGUp
OgorICAgICAgICAoV2ViQ29yZTo6V2ViS2l0QXVkaW9QYW5uZXJOb2RlOjpwdWxsSW5wdXRzKToK
KyAgICAgICAgKFdlYkNvcmU6OldlYktpdEF1ZGlvUGFubmVyTm9kZTo6cHJvY2Vzcyk6CisgICAg
ICAgIChXZWJDb3JlOjpXZWJLaXRBdWRpb1Bhbm5lck5vZGU6OnJlc2V0KToKKyAgICAgICAgKFdl
YkNvcmU6OldlYktpdEF1ZGlvUGFubmVyTm9kZTo6aW5pdGlhbGl6ZSk6CisgICAgICAgIChXZWJD
b3JlOjpXZWJLaXRBdWRpb1Bhbm5lck5vZGU6OnVuaW5pdGlhbGl6ZSk6CisgICAgICAgIChXZWJD
b3JlOjpXZWJLaXRBdWRpb1Bhbm5lck5vZGU6Omxpc3RlbmVyKToKKyAgICAgICAgKFdlYkNvcmU6
OldlYktpdEF1ZGlvUGFubmVyTm9kZTo6c2V0UGFubmluZ01vZGVsKToKKyAgICAgICAgKFdlYkNv
cmU6OldlYktpdEF1ZGlvUGFubmVyTm9kZTo6ZGlzdGFuY2VNb2RlbCBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpXZWJLaXRBdWRpb1Bhbm5lck5vZGU6OnNldERpc3RhbmNlTW9kZWwpOgorICAg
ICAgICAoV2ViQ29yZTo6V2ViS2l0QXVkaW9QYW5uZXJOb2RlOjpnZXRBemltdXRoRWxldmF0aW9u
KToKKyAgICAgICAgKFdlYkNvcmU6OldlYktpdEF1ZGlvUGFubmVyTm9kZTo6ZG9wcGxlclJhdGUp
OgorICAgICAgICAoV2ViQ29yZTo6V2ViS2l0QXVkaW9QYW5uZXJOb2RlOjpkaXN0YW5jZUNvbmVH
YWluKToKKyAgICAgICAgKFdlYkNvcmU6OldlYktpdEF1ZGlvUGFubmVyTm9kZTo6bm90aWZ5QXVk
aW9Tb3VyY2VzQ29ubmVjdGVkVG9Ob2RlKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL1dl
YktpdEF1ZGlvUGFubmVyTm9kZS5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmF1ZGlvL1Bhbm5lck5vZGUuaC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL1dlYktp
dEF1ZGlvUGFubmVyTm9kZS5pZGw6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViYXVkaW8vUGFubmVyTm9kZS5pZGwuCisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9XZWJL
aXRPZmZsaW5lQXVkaW9Db250ZXh0LmNwcDogQ29waWVkIGZyb20gU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJhdWRpby9EZWxheU5vZGUuY3BwLgorICAgICAgICAoV2ViQ29yZTo6V2ViS2l0T2Zm
bGluZUF1ZGlvQ29udGV4dDo6V2ViS2l0T2ZmbGluZUF1ZGlvQ29udGV4dCk6CisgICAgICAgIChX
ZWJDb3JlOjpXZWJLaXRPZmZsaW5lQXVkaW9Db250ZXh0OjpjcmVhdGUpOgorICAgICAgICAqIE1v
ZHVsZXMvd2ViYXVkaW8vV2ViS2l0T2ZmbGluZUF1ZGlvQ29udGV4dC5oOiBDb3BpZWQgZnJvbSBT
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0RlbGF5Tm9kZS5oLgorICAgICAgICAqIE1v
ZHVsZXMvd2ViYXVkaW8vV2ViS2l0T2ZmbGluZUF1ZGlvQ29udGV4dC5pZGw6IENvcGllZCBmcm9t
IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vT2ZmbGluZUF1ZGlvQ29udGV4dC5pZGwu
CisgICAgICAgICogU291cmNlcy50eHQ6CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qOgorICAgICAgICAqIGJpbmRpbmdzL2pzL1dlYkNvcmVCdWlsdGluTmFtZXMu
aDoKKyAgICAgICAgKiBkb20vRXZlbnRUYXJnZXRGYWN0b3J5LmluOgorICAgICAgICAqIHBhZ2Uv
U2V0dGluZ3MueWFtbDoKKyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFscy5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpJbnRlcm5hbHM6OnNldEF1ZGlvQ29udGV4dFJlc3RyaWN0aW9ucyk6CisgICAg
ICAgICogdGVzdGluZy9JbnRlcm5hbHMuaDoKKyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFscy5p
ZGw6CisKIDIwMjAtMDYtMTcgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAg
ICAgICBVbnJldmlld2VkIGF0dGVtcHQgdG8gZml4IGludGVybmFsIG1hY09TIGJ1aWxkIGFmdGVy
IHIyNjMxNTcuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9X
ZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDk4ODczODE3NDljOGNiNDAxNjNlNjdkYTA0MDg4MWFlNmY2
M2Q4NjEuLmUyMjNkYWE3Njc4ZTc4YmVmZjE4ZDQ3MjdlZWMzOGFhYWFjY2E0NmEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMTUgQEAKKzIwMjAtMDYtMTcgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxl
LmNvbT4KKworICAgICAgICBBZGQgZXhwZXJpbWVudGFsIGZlYXR1cmUgZmxhZyBmb3IgbW9kZXJu
ICYgdW5wcmVmaXhlZCBXZWJBdWRpbyBBUEkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTIxMzI2OAorCisgICAgICAgIFJldmlld2VkIGJ5IEplciBOb2Js
ZS4KKworICAgICAgICBBZGQgZXhwZXJpbWVudGFsIGZlYXR1cmUgZmxhZyBmb3IgbW9kZXJuICYg
dW5wcmVmaXhlZCBXZWJBdWRpbyBBUEksCisgICAgICAgIG9mZiBieSBkZWZhdWx0LgorCisgICAg
ICAgICogU2hhcmVkL1dlYlByZWZlcmVuY2VzLnlhbWw6CisKIDIwMjAtMDYtMTcgIERhcnJ5bCBQ
b2d1ZSAgPGRhcnJ5bEBkcG9ndWUuY2E+CiAKICAgICAgICAgSW5kZXhlZERCOiBTdXBwb3J0IElE
QkZhY3RvcnkgZGF0YWJhc2VzIG1ldGhvZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ01h
a2VMaXN0cy50eHQgYi9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAppbmRleCA5NzU5NDg5
NWQ4YzdhYzI4MTE4Yzk3YzRmMTlhZTViNmFiODkxYzllLi4zOTlhNmJkM2ZkMDk2YzUxMTc4ODFj
OTI1NzY5MTUwNTEzM2MzMDExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3Rz
LnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dApAQCAtNDMzLDYgKzQzMyw3
IEBAIHNldChXZWJDb3JlX05PTl9TVkdfSURMX0ZJTEVTCiAgICAgTW9kdWxlcy93ZWJhdWRpby9B
dWRpb0J1ZmZlckNhbGxiYWNrLmlkbAogICAgIE1vZHVsZXMvd2ViYXVkaW8vQXVkaW9CdWZmZXJT
b3VyY2VOb2RlLmlkbAogICAgIE1vZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0LmlkbAorICAg
IE1vZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0U3RhdGUuaWRsCiAgICAgTW9kdWxlcy93ZWJh
dWRpby9BdWRpb0Rlc3RpbmF0aW9uTm9kZS5pZGwKICAgICBNb2R1bGVzL3dlYmF1ZGlvL0F1ZGlv
TGlzdGVuZXIuaWRsCiAgICAgTW9kdWxlcy93ZWJhdWRpby9BdWRpb05vZGUuaWRsCkBAIC00NDMs
NiArNDQ0LDcgQEAgc2V0KFdlYkNvcmVfTk9OX1NWR19JRExfRklMRVMKICAgICBNb2R1bGVzL3dl
YmF1ZGlvL0NoYW5uZWxTcGxpdHRlck5vZGUuaWRsCiAgICAgTW9kdWxlcy93ZWJhdWRpby9Db252
b2x2ZXJOb2RlLmlkbAogICAgIE1vZHVsZXMvd2ViYXVkaW8vRGVsYXlOb2RlLmlkbAorICAgIE1v
ZHVsZXMvd2ViYXVkaW8vRGlzdGFuY2VNb2RlbFR5cGUuaWRsCiAgICAgTW9kdWxlcy93ZWJhdWRp
by9EeW5hbWljc0NvbXByZXNzb3JOb2RlLmlkbAogICAgIE1vZHVsZXMvd2ViYXVkaW8vR2Fpbk5v
ZGUuaWRsCiAgICAgTW9kdWxlcy93ZWJhdWRpby9NZWRpYUVsZW1lbnRBdWRpb1NvdXJjZU5vZGUu
aWRsCkBAIC00NTIsOSArNDU0LDEzIEBAIHNldChXZWJDb3JlX05PTl9TVkdfSURMX0ZJTEVTCiAg
ICAgTW9kdWxlcy93ZWJhdWRpby9PZmZsaW5lQXVkaW9Db250ZXh0LmlkbAogICAgIE1vZHVsZXMv
d2ViYXVkaW8vT3NjaWxsYXRvck5vZGUuaWRsCiAgICAgTW9kdWxlcy93ZWJhdWRpby9QYW5uZXJO
b2RlLmlkbAorICAgIE1vZHVsZXMvd2ViYXVkaW8vUGFubmluZ01vZGVsVHlwZS5pZGwKICAgICBN
b2R1bGVzL3dlYmF1ZGlvL1BlcmlvZGljV2F2ZS5pZGwKICAgICBNb2R1bGVzL3dlYmF1ZGlvL1Nj
cmlwdFByb2Nlc3Nvck5vZGUuaWRsCiAgICAgTW9kdWxlcy93ZWJhdWRpby9XYXZlU2hhcGVyTm9k
ZS5pZGwKKyAgICBNb2R1bGVzL3dlYmF1ZGlvL1dlYktpdEF1ZGlvQ29udGV4dC5pZGwKKyAgICBN
b2R1bGVzL3dlYmF1ZGlvL1dlYktpdEF1ZGlvUGFubmVyTm9kZS5pZGwKKyAgICBNb2R1bGVzL3dl
YmF1ZGlvL1dlYktpdE9mZmxpbmVBdWRpb0NvbnRleHQuaWRsCiAKICAgICBNb2R1bGVzL3dlYmF1
dGhuL0F0dGVzdGF0aW9uQ29udmV5YW5jZVByZWZlcmVuY2UuaWRsCiAgICAgTW9kdWxlcy93ZWJh
dXRobi9BdXRoZW50aWNhdGlvbkV4dGVuc2lvbnNDbGllbnRJbnB1dHMuaWRsCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy1pbnB1dC54Y2ZpbGVsaXN0IGIvU291cmNl
L1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMtaW5wdXQueGNmaWxlbGlzdAppbmRleCA2YTdhYTdkMTRl
YmI0MzdkNzQxZWMyZWY4NTMzNzc1ZDM0NGQ0NjU0Li5mN2Q2NGMxOTNkMGU3ZGYyODE2NWJkZDc0
YTQwZDNmOTBlNmE4MjEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNl
cy1pbnB1dC54Y2ZpbGVsaXN0CisrKyBiL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLWlu
cHV0LnhjZmlsZWxpc3QKQEAgLTMwMCw2ICszMDAsNyBAQCAkKFBST0pFQ1RfRElSKS9Nb2R1bGVz
L3dlYmF1ZGlvL0F1ZGlvQnVmZmVyLmlkbAogJChQUk9KRUNUX0RJUikvTW9kdWxlcy93ZWJhdWRp
by9BdWRpb0J1ZmZlckNhbGxiYWNrLmlkbAogJChQUk9KRUNUX0RJUikvTW9kdWxlcy93ZWJhdWRp
by9BdWRpb0J1ZmZlclNvdXJjZU5vZGUuaWRsCiAkKFBST0pFQ1RfRElSKS9Nb2R1bGVzL3dlYmF1
ZGlvL0F1ZGlvQ29udGV4dC5pZGwKKyQoUFJPSkVDVF9ESVIpL01vZHVsZXMvd2ViYXVkaW8vQXVk
aW9Db250ZXh0U3RhdGUuaWRsCiAkKFBST0pFQ1RfRElSKS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlv
RGVzdGluYXRpb25Ob2RlLmlkbAogJChQUk9KRUNUX0RJUikvTW9kdWxlcy93ZWJhdWRpby9BdWRp
b0xpc3RlbmVyLmlkbAogJChQUk9KRUNUX0RJUikvTW9kdWxlcy93ZWJhdWRpby9BdWRpb05vZGUu
aWRsCkBAIC0zMTAsNiArMzExLDcgQEAgJChQUk9KRUNUX0RJUikvTW9kdWxlcy93ZWJhdWRpby9D
aGFubmVsTWVyZ2VyTm9kZS5pZGwKICQoUFJPSkVDVF9ESVIpL01vZHVsZXMvd2ViYXVkaW8vQ2hh
bm5lbFNwbGl0dGVyTm9kZS5pZGwKICQoUFJPSkVDVF9ESVIpL01vZHVsZXMvd2ViYXVkaW8vQ29u
dm9sdmVyTm9kZS5pZGwKICQoUFJPSkVDVF9ESVIpL01vZHVsZXMvd2ViYXVkaW8vRGVsYXlOb2Rl
LmlkbAorJChQUk9KRUNUX0RJUikvTW9kdWxlcy93ZWJhdWRpby9EaXN0YW5jZU1vZGVsVHlwZS5p
ZGwKICQoUFJPSkVDVF9ESVIpL01vZHVsZXMvd2ViYXVkaW8vRHluYW1pY3NDb21wcmVzc29yTm9k
ZS5pZGwKICQoUFJPSkVDVF9ESVIpL01vZHVsZXMvd2ViYXVkaW8vR2Fpbk5vZGUuaWRsCiAkKFBS
T0pFQ1RfRElSKS9Nb2R1bGVzL3dlYmF1ZGlvL01lZGlhRWxlbWVudEF1ZGlvU291cmNlTm9kZS5p
ZGwKQEAgLTMxOSw5ICszMjEsMTMgQEAgJChQUk9KRUNUX0RJUikvTW9kdWxlcy93ZWJhdWRpby9P
ZmZsaW5lQXVkaW9Db21wbGV0aW9uRXZlbnQuaWRsCiAkKFBST0pFQ1RfRElSKS9Nb2R1bGVzL3dl
YmF1ZGlvL09mZmxpbmVBdWRpb0NvbnRleHQuaWRsCiAkKFBST0pFQ1RfRElSKS9Nb2R1bGVzL3dl
YmF1ZGlvL09zY2lsbGF0b3JOb2RlLmlkbAogJChQUk9KRUNUX0RJUikvTW9kdWxlcy93ZWJhdWRp
by9QYW5uZXJOb2RlLmlkbAorJChQUk9KRUNUX0RJUikvTW9kdWxlcy93ZWJhdWRpby9QYW5uaW5n
TW9kZWxUeXBlLmlkbAogJChQUk9KRUNUX0RJUikvTW9kdWxlcy93ZWJhdWRpby9QZXJpb2RpY1dh
dmUuaWRsCiAkKFBST0pFQ1RfRElSKS9Nb2R1bGVzL3dlYmF1ZGlvL1NjcmlwdFByb2Nlc3Nvck5v
ZGUuaWRsCiAkKFBST0pFQ1RfRElSKS9Nb2R1bGVzL3dlYmF1ZGlvL1dhdmVTaGFwZXJOb2RlLmlk
bAorJChQUk9KRUNUX0RJUikvTW9kdWxlcy93ZWJhdWRpby9XZWJLaXRBdWRpb0NvbnRleHQuaWRs
CiskKFBST0pFQ1RfRElSKS9Nb2R1bGVzL3dlYmF1ZGlvL1dlYktpdEF1ZGlvUGFubmVyTm9kZS5p
ZGwKKyQoUFJPSkVDVF9ESVIpL01vZHVsZXMvd2ViYXVkaW8vV2ViS2l0T2ZmbGluZUF1ZGlvQ29u
dGV4dC5pZGwKICQoUFJPSkVDVF9ESVIpL01vZHVsZXMvd2ViYXV0aG4vQXR0ZXN0YXRpb25Db252
ZXlhbmNlUHJlZmVyZW5jZS5pZGwKICQoUFJPSkVDVF9ESVIpL01vZHVsZXMvd2ViYXV0aG4vQXV0
aGVudGljYXRpb25FeHRlbnNpb25zQ2xpZW50SW5wdXRzLmlkbAogJChQUk9KRUNUX0RJUikvTW9k
dWxlcy93ZWJhdXRobi9BdXRoZW50aWNhdGlvbkV4dGVuc2lvbnNDbGllbnRPdXRwdXRzLmlkbApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxp
c3QgYi9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlzdAppbmRl
eCBhMTQzMzYyNTE0MDJmNjgzNmVjODgwNDhmM2UwY2JkOTE0MjZiMDE3Li5jYmM2NDhhZmY4NzJl
MTdjOGFlYjJmM2RjNmU5YmM2Yjc4YzA0NDkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9E
ZXJpdmVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlzdAorKysgYi9Tb3VyY2UvV2ViQ29yZS9EZXJp
dmVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlzdApAQCAtMTU1LDYgKzE1NSw4IEBAICQoQlVJTFRf
UFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTQXVkaW9Db25maWd1cmF0aW9u
LmNwcAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNBdWRp
b0NvbmZpZ3VyYXRpb24uaAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dl
YkNvcmUvSlNBdWRpb0NvbnRleHQuY3BwCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNv
dXJjZXMvV2ViQ29yZS9KU0F1ZGlvQ29udGV4dC5oCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVy
aXZlZFNvdXJjZXMvV2ViQ29yZS9KU0F1ZGlvQ29udGV4dFN0YXRlLmNwcAorJChCVUlMVF9QUk9E
VUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNBdWRpb0NvbnRleHRTdGF0ZS5oCiAk
KEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0F1ZGlvRGVzdGlu
YXRpb25Ob2RlLmNwcAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNv
cmUvSlNBdWRpb0Rlc3RpbmF0aW9uTm9kZS5oCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZl
ZFNvdXJjZXMvV2ViQ29yZS9KU0F1ZGlvTGlzdGVuZXIuY3BwCkBAIC00ODYsNiArNDg4LDggQEAg
JChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNEZXZpY2VPcmll
bnRhdGlvbk9yTW90aW9uRXZlbnQuY3AKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291
cmNlcy9XZWJDb3JlL0pTRGV2aWNlT3JpZW50YXRpb25Pck1vdGlvbkV2ZW50LmgKICQoQlVJTFRf
UFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTRGV2aWNlT3JpZW50YXRpb25P
ck1vdGlvblBlcm1pc3Npb25TdGF0ZS5jcHAKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVk
U291cmNlcy9XZWJDb3JlL0pTRGV2aWNlT3JpZW50YXRpb25Pck1vdGlvblBlcm1pc3Npb25TdGF0
ZS5oCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0Rpc3Rh
bmNlTW9kZWxUeXBlLmNwcAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dl
YkNvcmUvSlNEaXN0YW5jZU1vZGVsVHlwZS5oCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZl
ZFNvdXJjZXMvV2ViQ29yZS9KU0RvY3VtZW50LmNwcAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rl
cml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNEb2N1bWVudC5oCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikv
RGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0RvY3VtZW50QW5kRWxlbWVudEV2ZW50SGFuZGxlcnMu
Y3BwCkBAIC0xMjI0LDYgKzEyMjgsOCBAQCAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNv
dXJjZXMvV2ViQ29yZS9KU1BhaW50V29ya2xldEdsb2JhbFNjb3BlLmNwcAogJChCVUlMVF9QUk9E
VUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNQYWludFdvcmtsZXRHbG9iYWxTY29w
ZS5oCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU1Bhbm5l
ck5vZGUuY3BwCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9K
U1Bhbm5lck5vZGUuaAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNv
cmUvSlNQYW5uaW5nTW9kZWxUeXBlLmNwcAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRT
b3VyY2VzL1dlYkNvcmUvSlNQYW5uaW5nTW9kZWxUeXBlLmgKICQoQlVJTFRfUFJPRFVDVFNfRElS
KS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTUGFyZW50Tm9kZS5jcHAKICQoQlVJTFRfUFJPRFVD
VFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTUGFyZW50Tm9kZS5oCiAkKEJVSUxUX1BS
T0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU1BhdGgyRC5jcHAKQEAgLTIwNzgs
NiArMjA4NCwxMCBAQCAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29y
ZS9KU1dlYkdQVVRleHR1cmVWaWV3LmNwcAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRT
b3VyY2VzL1dlYkNvcmUvSlNXZWJHUFVUZXh0dXJlVmlldy5oCiAkKEJVSUxUX1BST0RVQ1RTX0RJ
UikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU1dlYktpdEFuaW1hdGlvbkV2ZW50LmNwcAogJChC
VUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNXZWJLaXRBbmltYXRp
b25FdmVudC5oCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9K
U1dlYktpdEF1ZGlvQ29udGV4dC5jcHAKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291
cmNlcy9XZWJDb3JlL0pTV2ViS2l0QXVkaW9Db250ZXh0LmgKKyQoQlVJTFRfUFJPRFVDVFNfRElS
KS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTV2ViS2l0QXVkaW9QYW5uZXJOb2RlLmNwcAorJChC
VUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNXZWJLaXRBdWRpb1Bh
bm5lck5vZGUuaAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUv
SlNXZWJLaXRDU1NNYXRyaXguY3BwCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJj
ZXMvV2ViQ29yZS9KU1dlYktpdENTU01hdHJpeC5oCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVy
aXZlZFNvdXJjZXMvV2ViQ29yZS9KU1dlYktpdENTU1ZpZXdwb3J0UnVsZS5jcHAKQEAgLTIwOTQs
NiArMjEwNCw4IEBAICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3Jl
L0pTV2ViS2l0TWVkaWFLZXlzLmNwcAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3Vy
Y2VzL1dlYkNvcmUvSlNXZWJLaXRNZWRpYUtleXMuaAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rl
cml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNXZWJLaXROYW1lc3BhY2UuY3BwCiAkKEJVSUxUX1BST0RV
Q1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU1dlYktpdE5hbWVzcGFjZS5oCiskKEJV
SUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU1dlYktpdE9mZmxpbmVB
dWRpb0NvbnRleHQuY3BwCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2Vi
Q29yZS9KU1dlYktpdE9mZmxpbmVBdWRpb0NvbnRleHQuaAogJChCVUlMVF9QUk9EVUNUU19ESVIp
L0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNXZWJLaXRQbGF5YmFja1RhcmdldEF2YWlsYWJpbGl0
eUV2ZW50LmNwcAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUv
SlNXZWJLaXRQbGF5YmFja1RhcmdldEF2YWlsYWJpbGl0eUV2ZW50LmgKICQoQlVJTFRfUFJPRFVD
VFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTV2ViS2l0UG9pbnQuY3BwCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtlIGIvU291cmNlL1dlYkNvcmUv
RGVyaXZlZFNvdXJjZXMubWFrZQppbmRleCBkMjY3MDg5ZTM4NzM3ZDkyNGY5NDY1Mjk5MGNhYjky
MTNjOThiZDI4Li5iMjdjNzljZTY2M2UyYzhiOGVhNDYwYWUwODFlYmYxZGRlNzAzM2JhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtlCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UKQEAgLTM4Myw2ICszODMsNyBAQCBKU19CSU5ESU5H
X0lETFMgPSBcCiAgICAgJChXZWJDb3JlKS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQnVmZmVyQ2Fs
bGJhY2suaWRsIFwKICAgICAkKFdlYkNvcmUpL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9CdWZmZXJT
b3VyY2VOb2RlLmlkbCBcCiAgICAgJChXZWJDb3JlKS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQ29u
dGV4dC5pZGwgXAorICAgICQoV2ViQ29yZSkvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0NvbnRleHRT
dGF0ZS5pZGwgXAogICAgICQoV2ViQ29yZSkvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0Rlc3RpbmF0
aW9uTm9kZS5pZGwgXAogICAgICQoV2ViQ29yZSkvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0xpc3Rl
bmVyLmlkbCBcCiAgICAgJChXZWJDb3JlKS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvTm9kZS5pZGwg
XApAQCAtMzkzLDYgKzM5NCw3IEBAIEpTX0JJTkRJTkdfSURMUyA9IFwKICAgICAkKFdlYkNvcmUp
L01vZHVsZXMvd2ViYXVkaW8vQ2hhbm5lbFNwbGl0dGVyTm9kZS5pZGwgXAogICAgICQoV2ViQ29y
ZSkvTW9kdWxlcy93ZWJhdWRpby9Db252b2x2ZXJOb2RlLmlkbCBcCiAgICAgJChXZWJDb3JlKS9N
b2R1bGVzL3dlYmF1ZGlvL0RlbGF5Tm9kZS5pZGwgXAorICAgICQoV2ViQ29yZSkvTW9kdWxlcy93
ZWJhdWRpby9EaXN0YW5jZU1vZGVsVHlwZS5pZGwgXAogICAgICQoV2ViQ29yZSkvTW9kdWxlcy93
ZWJhdWRpby9EeW5hbWljc0NvbXByZXNzb3JOb2RlLmlkbCBcCiAgICAgJChXZWJDb3JlKS9Nb2R1
bGVzL3dlYmF1ZGlvL0dhaW5Ob2RlLmlkbCBcCiAgICAgJChXZWJDb3JlKS9Nb2R1bGVzL3dlYmF1
ZGlvL01lZGlhRWxlbWVudEF1ZGlvU291cmNlTm9kZS5pZGwgXApAQCAtNDAyLDkgKzQwNCwxMyBA
QCBKU19CSU5ESU5HX0lETFMgPSBcCiAgICAgJChXZWJDb3JlKS9Nb2R1bGVzL3dlYmF1ZGlvL09m
ZmxpbmVBdWRpb0NvbnRleHQuaWRsIFwKICAgICAkKFdlYkNvcmUpL01vZHVsZXMvd2ViYXVkaW8v
T3NjaWxsYXRvck5vZGUuaWRsIFwKICAgICAkKFdlYkNvcmUpL01vZHVsZXMvd2ViYXVkaW8vUGFu
bmVyTm9kZS5pZGwgXAorICAgICQoV2ViQ29yZSkvTW9kdWxlcy93ZWJhdWRpby9QYW5uaW5nTW9k
ZWxUeXBlLmlkbCBcCiAgICAgJChXZWJDb3JlKS9Nb2R1bGVzL3dlYmF1ZGlvL1BlcmlvZGljV2F2
ZS5pZGwgXAogICAgICQoV2ViQ29yZSkvTW9kdWxlcy93ZWJhdWRpby9TY3JpcHRQcm9jZXNzb3JO
b2RlLmlkbCBcCiAgICAgJChXZWJDb3JlKS9Nb2R1bGVzL3dlYmF1ZGlvL1dhdmVTaGFwZXJOb2Rl
LmlkbCBcCisgICAgJChXZWJDb3JlKS9Nb2R1bGVzL3dlYmF1ZGlvL1dlYktpdEF1ZGlvQ29udGV4
dC5pZGwgXAorICAgICQoV2ViQ29yZSkvTW9kdWxlcy93ZWJhdWRpby9XZWJLaXRBdWRpb1Bhbm5l
ck5vZGUuaWRsIFwKKyAgICAkKFdlYkNvcmUpL01vZHVsZXMvd2ViYXVkaW8vV2ViS2l0T2ZmbGlu
ZUF1ZGlvQ29udGV4dC5pZGwgXAogICAgICQoV2ViQ29yZSkvTW9kdWxlcy93ZWJhdXRobi9BdHRl
c3RhdGlvbkNvbnZleWFuY2VQcmVmZXJlbmNlLmlkbCBcCiAgICAgJChXZWJDb3JlKS9Nb2R1bGVz
L3dlYmF1dGhuL0F1dGhlbnRpY2F0aW9uRXh0ZW5zaW9uc0NsaWVudElucHV0cy5pZGwgXAogICAg
ICQoV2ViQ29yZSkvTW9kdWxlcy93ZWJhdXRobi9BdXRoZW50aWNhdGlvbkV4dGVuc2lvbnNDbGll
bnRPdXRwdXRzLmlkbCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1
ZGlvL0FuYWx5c2VyTm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0Fu
YWx5c2VyTm9kZS5jcHAKaW5kZXggMTc5ODcwNzAxZjg1MzM4NDhiOGE0OWE3NWQzYWYxMzYxNTRi
MDhkMi4uMjE1ZGUzMjFlOWExNmMzMjQ2Y2E0OTQ3NGQ5ZWFlMjUyMjUzODIwMSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BbmFseXNlck5vZGUuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQW5hbHlzZXJOb2RlLmNwcApAQCAtMzYs
NyArMzYsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFdURl9NQUtFX0lTT19BTExPQ0FURURf
SU1QTChBbmFseXNlck5vZGUpOwogCi1BbmFseXNlck5vZGU6OkFuYWx5c2VyTm9kZShBdWRpb0Nv
bnRleHQmIGNvbnRleHQsIGZsb2F0IHNhbXBsZVJhdGUpCitBbmFseXNlck5vZGU6OkFuYWx5c2Vy
Tm9kZShBdWRpb0NvbnRleHRCYXNlJiBjb250ZXh0LCBmbG9hdCBzYW1wbGVSYXRlKQogICAgIDog
QXVkaW9CYXNpY0luc3BlY3Rvck5vZGUoY29udGV4dCwgc2FtcGxlUmF0ZSwgMikKIHsKICAgICBz
ZXROb2RlVHlwZShOb2RlVHlwZUFuYWx5c2VyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViYXVkaW8vQW5hbHlzZXJOb2RlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmF1ZGlvL0FuYWx5c2VyTm9kZS5oCmluZGV4IGRhMWI1ZTg5Y2EyOGRlZWNjMzljMmYzNjY5
N2ZkOTBhMGIzZTBmN2UuLmE0MDIzYTMwZGVhMGRmMmJjOWE3YmIwNGJlZGFkOGEzMGRiOWRjZTUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQW5hbHlzZXJOb2Rl
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BbmFseXNlck5vZGUuaApA
QCAtMzIsNyArMzIsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBBbmFseXNlck5vZGUg
ZmluYWwgOiBwdWJsaWMgQXVkaW9CYXNpY0luc3BlY3Rvck5vZGUgewogICAgIFdURl9NQUtFX0lT
T19BTExPQ0FURUQoQW5hbHlzZXJOb2RlKTsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPEFuYWx5
c2VyTm9kZT4gY3JlYXRlKEF1ZGlvQ29udGV4dCYgY29udGV4dCwgZmxvYXQgc2FtcGxlUmF0ZSkK
KyAgICBzdGF0aWMgUmVmPEFuYWx5c2VyTm9kZT4gY3JlYXRlKEF1ZGlvQ29udGV4dEJhc2UmIGNv
bnRleHQsIGZsb2F0IHNhbXBsZVJhdGUpCiAgICAgewogICAgICAgICByZXR1cm4gYWRvcHRSZWYo
Km5ldyBBbmFseXNlck5vZGUoY29udGV4dCwgc2FtcGxlUmF0ZSkpOwogICAgIH0KQEAgLTU4LDcg
KzU4LDcgQEAgcHVibGljOgogICAgIHZvaWQgZ2V0Qnl0ZVRpbWVEb21haW5EYXRhKGNvbnN0IFJl
ZlB0cjxKU0M6OlVpbnQ4QXJyYXk+JiBhcnJheSkgeyBtX2FuYWx5c2VyLmdldEJ5dGVUaW1lRG9t
YWluRGF0YShhcnJheS5nZXQoKSk7IH0KIAogcHJpdmF0ZToKLSAgICBBbmFseXNlck5vZGUoQXVk
aW9Db250ZXh0JiwgZmxvYXQgc2FtcGxlUmF0ZSk7CisgICAgQW5hbHlzZXJOb2RlKEF1ZGlvQ29u
dGV4dEJhc2UmLCBmbG9hdCBzYW1wbGVSYXRlKTsKIAogICAgIHZvaWQgcHJvY2VzcyhzaXplX3Qg
ZnJhbWVzVG9Qcm9jZXNzKSBmaW5hbDsKICAgICB2b2lkIHJlc2V0KCkgZmluYWw7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQmFzaWNJbnNwZWN0b3JO
b2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9CYXNpY0luc3Bl
Y3Rvck5vZGUuY3BwCmluZGV4IDBmYjU1YjA4ZjBjMWEyYmUyZDA3MGM0ZTBkOGQ4ZjQ2N2UzNDZh
NzIuLjE0NTNkYWNhZmRhMWQzOGEzNGNmZDFiNmI5M2NiNzgzMzIzNWQ5ODggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9CYXNpY0luc3BlY3Rvck5vZGUu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9CYXNpY0luc3Bl
Y3Rvck5vZGUuY3BwCkBAIC0zNiw3ICszNiw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogV1RG
X01BS0VfSVNPX0FMTE9DQVRFRF9JTVBMKEF1ZGlvQmFzaWNJbnNwZWN0b3JOb2RlKTsKIAotQXVk
aW9CYXNpY0luc3BlY3Rvck5vZGU6OkF1ZGlvQmFzaWNJbnNwZWN0b3JOb2RlKEF1ZGlvQ29udGV4
dCYgY29udGV4dCwgZmxvYXQgc2FtcGxlUmF0ZSwgdW5zaWduZWQgb3V0cHV0Q2hhbm5lbENvdW50
KQorQXVkaW9CYXNpY0luc3BlY3Rvck5vZGU6OkF1ZGlvQmFzaWNJbnNwZWN0b3JOb2RlKEF1ZGlv
Q29udGV4dEJhc2UmIGNvbnRleHQsIGZsb2F0IHNhbXBsZVJhdGUsIHVuc2lnbmVkIG91dHB1dENo
YW5uZWxDb3VudCkKICAgICA6IEF1ZGlvTm9kZShjb250ZXh0LCBzYW1wbGVSYXRlKQogewogICAg
IHNldE5vZGVUeXBlKE5vZGVUeXBlQmFzaWNJbnNwZWN0b3IpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0Jhc2ljSW5zcGVjdG9yTm9kZS5oIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0Jhc2ljSW5zcGVjdG9yTm9kZS5oCmlu
ZGV4IDgwZTA4ZDI5NjE3YjE3NzRjNjBkZDE4NzkzZDE2MzBlZjJhZDAzZGIuLmU3NjllNDZhZTIx
ZjQ3MzQxYzI3M2M4ODQ1Y2JlMDI5ZTgxMjhkNjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViYXVkaW8vQXVkaW9CYXNpY0luc3BlY3Rvck5vZGUuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQmFzaWNJbnNwZWN0b3JOb2RlLmgKQEAgLTM0
LDcgKzM0LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgQXVkaW9CYXNpY0luc3BlY3Rv
ck5vZGUgOiBwdWJsaWMgQXVkaW9Ob2RlIHsKICAgICBXVEZfTUFLRV9JU09fQUxMT0NBVEVEKEF1
ZGlvQmFzaWNJbnNwZWN0b3JOb2RlKTsKIHB1YmxpYzoKLSAgICBBdWRpb0Jhc2ljSW5zcGVjdG9y
Tm9kZShBdWRpb0NvbnRleHQmLCBmbG9hdCBzYW1wbGVSYXRlLCB1bnNpZ25lZCBvdXRwdXRDaGFu
bmVsQ291bnQpOworICAgIEF1ZGlvQmFzaWNJbnNwZWN0b3JOb2RlKEF1ZGlvQ29udGV4dEJhc2Um
LCBmbG9hdCBzYW1wbGVSYXRlLCB1bnNpZ25lZCBvdXRwdXRDaGFubmVsQ291bnQpOwogCiBwcml2
YXRlOgogICAgIHZvaWQgcHVsbElucHV0cyhzaXplX3QgZnJhbWVzVG9Qcm9jZXNzKSBvdmVycmlk
ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9CYXNp
Y1Byb2Nlc3Nvck5vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRp
b0Jhc2ljUHJvY2Vzc29yTm9kZS5jcHAKaW5kZXggMGI5ZjFjZWQ4NzQ1YjVkOTk4ZGMzOGQ2MzZl
NzkwYWJmYmU2ZTk4My4uZjdiNzk2YmU1NTU0NTM2YTZhNTQyYzc1ZTM2MDU1MjVmOTQ2OGEyOSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0Jhc2ljUHJv
Y2Vzc29yTm9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRp
b0Jhc2ljUHJvY2Vzc29yTm9kZS5jcHAKQEAgLTM5LDcgKzM5LDcgQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogCiBXVEZfTUFLRV9JU09fQUxMT0NBVEVEX0lNUEwoQXVkaW9CYXNpY1Byb2Nlc3Nvck5v
ZGUpOwogCi1BdWRpb0Jhc2ljUHJvY2Vzc29yTm9kZTo6QXVkaW9CYXNpY1Byb2Nlc3Nvck5vZGUo
QXVkaW9Db250ZXh0JiBjb250ZXh0LCBmbG9hdCBzYW1wbGVSYXRlKQorQXVkaW9CYXNpY1Byb2Nl
c3Nvck5vZGU6OkF1ZGlvQmFzaWNQcm9jZXNzb3JOb2RlKEF1ZGlvQ29udGV4dEJhc2UmIGNvbnRl
eHQsIGZsb2F0IHNhbXBsZVJhdGUpCiAgICAgOiBBdWRpb05vZGUoY29udGV4dCwgc2FtcGxlUmF0
ZSkKIHsKICAgICBhZGRJbnB1dChtYWtlVW5pcXVlPEF1ZGlvTm9kZUlucHV0Pih0aGlzKSk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQmFzaWNQcm9j
ZXNzb3JOb2RlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQmFzaWNQ
cm9jZXNzb3JOb2RlLmgKaW5kZXggODJjZmZkYTU5ZjI3ODIwZGIwZDNkNTQ2MDFkNmFjYzRhYzc2
ZjE2MS4uZTE2MzczYmYwMjk3NmE0NWFkODI1ZTJlNjNhODM3YWZmNGY5MjE5YSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0Jhc2ljUHJvY2Vzc29yTm9k
ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9CYXNpY1Byb2Nl
c3Nvck5vZGUuaApAQCAtMzcsNyArMzcsNyBAQCBjbGFzcyBBdWRpb1Byb2Nlc3NvcjsKIGNsYXNz
IEF1ZGlvQmFzaWNQcm9jZXNzb3JOb2RlIDogcHVibGljIEF1ZGlvTm9kZSB7CiAgICAgV1RGX01B
S0VfSVNPX0FMTE9DQVRFRChBdWRpb0Jhc2ljUHJvY2Vzc29yTm9kZSk7CiBwdWJsaWM6Ci0gICAg
QXVkaW9CYXNpY1Byb2Nlc3Nvck5vZGUoQXVkaW9Db250ZXh0JiwgZmxvYXQgc2FtcGxlUmF0ZSk7
CisgICAgQXVkaW9CYXNpY1Byb2Nlc3Nvck5vZGUoQXVkaW9Db250ZXh0QmFzZSYsIGZsb2F0IHNh
bXBsZVJhdGUpOwogCiAgICAgLy8gQXVkaW9Ob2RlCiAgICAgdm9pZCBwcm9jZXNzKHNpemVfdCBm
cmFtZXNUb1Byb2Nlc3MpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJhdWRpby9BdWRpb0J1ZmZlclNvdXJjZU5vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJhdWRpby9BdWRpb0J1ZmZlclNvdXJjZU5vZGUuY3BwCmluZGV4IGMzNjYxZGU1
N2Q3MzllYzQ3MGQ2ZmFkOWY1NDFlNDk1ZWM5NzZkZWYuLjBjMWJhNGU5NGE5OGNiZjdkMTliZGMz
YjIzYTYyZmE5NDZmMDk1MzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
YXVkaW8vQXVkaW9CdWZmZXJTb3VyY2VOb2RlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmF1ZGlvL0F1ZGlvQnVmZmVyU291cmNlTm9kZS5jcHAKQEAgLTQ5LDEyICs0OSwxMiBA
QCBjb25zdCBkb3VibGUgRGVmYXVsdEdyYWluRHVyYXRpb24gPSAwLjAyMDsgLy8gMjBtcwogLy8g
dG8gbWluaW1pemUgbGluZWFyIGludGVycG9sYXRpb24gYWxpYXNpbmcuCiBjb25zdCBkb3VibGUg
TWF4UmF0ZSA9IDEwMjQ7CiAKLVJlZjxBdWRpb0J1ZmZlclNvdXJjZU5vZGU+IEF1ZGlvQnVmZmVy
U291cmNlTm9kZTo6Y3JlYXRlKEF1ZGlvQ29udGV4dCYgY29udGV4dCwgZmxvYXQgc2FtcGxlUmF0
ZSkKK1JlZjxBdWRpb0J1ZmZlclNvdXJjZU5vZGU+IEF1ZGlvQnVmZmVyU291cmNlTm9kZTo6Y3Jl
YXRlKEF1ZGlvQ29udGV4dEJhc2UmIGNvbnRleHQsIGZsb2F0IHNhbXBsZVJhdGUpCiB7CiAgICAg
cmV0dXJuIGFkb3B0UmVmKCpuZXcgQXVkaW9CdWZmZXJTb3VyY2VOb2RlKGNvbnRleHQsIHNhbXBs
ZVJhdGUpKTsKIH0KIAotQXVkaW9CdWZmZXJTb3VyY2VOb2RlOjpBdWRpb0J1ZmZlclNvdXJjZU5v
ZGUoQXVkaW9Db250ZXh0JiBjb250ZXh0LCBmbG9hdCBzYW1wbGVSYXRlKQorQXVkaW9CdWZmZXJT
b3VyY2VOb2RlOjpBdWRpb0J1ZmZlclNvdXJjZU5vZGUoQXVkaW9Db250ZXh0QmFzZSYgY29udGV4
dCwgZmxvYXQgc2FtcGxlUmF0ZSkKICAgICA6IEF1ZGlvU2NoZWR1bGVkU291cmNlTm9kZShjb250
ZXh0LCBzYW1wbGVSYXRlKQogICAgICwgbV9idWZmZXIobnVsbHB0cikKICAgICAsIG1faXNMb29w
aW5nKGZhbHNlKQpAQCAtNDEzLDcgKzQxMyw3IEBAIHZvaWQgQXVkaW9CdWZmZXJTb3VyY2VOb2Rl
OjpzZXRCdWZmZXIoUmVmUHRyPEF1ZGlvQnVmZmVyPiYmIGJ1ZmZlcikKICAgICBERUJVR19MT0co
TE9HSURFTlRJRklFUik7CiAKICAgICAvLyBUaGUgY29udGV4dCBtdXN0IGJlIGxvY2tlZCBzaW5j
ZSBjaGFuZ2luZyB0aGUgYnVmZmVyIGNhbiByZS1jb25maWd1cmUgdGhlIG51bWJlciBvZiBjaGFu
bmVscyB0aGF0IGFyZSBvdXRwdXQuCi0gICAgQXVkaW9Db250ZXh0OjpBdXRvTG9ja2VyIGNvbnRl
eHRMb2NrZXIoY29udGV4dCgpKTsKKyAgICBBdWRpb0NvbnRleHRCYXNlOjpBdXRvTG9ja2VyIGNv
bnRleHRMb2NrZXIoY29udGV4dCgpKTsKICAgICAKICAgICAvLyBUaGlzIHN5bmNocm9uaXplcyB3
aXRoIHByb2Nlc3MoKS4KICAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG1fcHJvY2Vzc011dGV4
KTsKQEAgLTU1Nyw3ICs1NTcsNyBAQCBib29sIEF1ZGlvQnVmZmVyU291cmNlTm9kZTo6cHJvcGFn
YXRlc1NpbGVuY2UoKSBjb25zdAogICAgIHJldHVybiAhaXNQbGF5aW5nT3JTY2hlZHVsZWQoKSB8
fCBoYXNGaW5pc2hlZCgpIHx8ICFtX2J1ZmZlcjsKIH0KIAotdm9pZCBBdWRpb0J1ZmZlclNvdXJj
ZU5vZGU6OnNldFBhbm5lck5vZGUoUGFubmVyTm9kZSogcGFubmVyTm9kZSkKK3ZvaWQgQXVkaW9C
dWZmZXJTb3VyY2VOb2RlOjpzZXRQYW5uZXJOb2RlKFBhbm5lck5vZGVCYXNlKiBwYW5uZXJOb2Rl
KQogewogICAgIGlmIChtX3Bhbm5lck5vZGUgIT0gcGFubmVyTm9kZSAmJiAhaGFzRmluaXNoZWQo
KSkgewogICAgICAgICBpZiAocGFubmVyTm9kZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViYXVkaW8vQXVkaW9CdWZmZXJTb3VyY2VOb2RlLmggYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQnVmZmVyU291cmNlTm9kZS5oCmluZGV4IDU0OGIyNmU3
ZmE3NTE0ZGU5YWQ2NGQzZTM1MzZiOWYzNGJlZGE5ZmIuLjYwMTEzMTE5OWE0ZmE5MmQ3MzBjNTBk
NWFhMjYwMDM4ZjZmZDk2ZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
YXVkaW8vQXVkaW9CdWZmZXJTb3VyY2VOb2RlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJhdWRpby9BdWRpb0J1ZmZlclNvdXJjZU5vZGUuaApAQCAtMzEsNyArMzEsNyBAQAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBBdWRpb0J1ZmZlcjsKLWNsYXNzIFBhbm5lck5vZGU7
CitjbGFzcyBQYW5uZXJOb2RlQmFzZTsKIAogLy8gQXVkaW9CdWZmZXJTb3VyY2VOb2RlIGlzIGFu
IEF1ZGlvTm9kZSByZXByZXNlbnRpbmcgYW4gYXVkaW8gc291cmNlIGZyb20gYW4gaW4tbWVtb3J5
IGF1ZGlvIGFzc2V0IHJlcHJlc2VudGVkIGJ5IGFuIEF1ZGlvQnVmZmVyLgogLy8gSXQgZ2VuZXJh
bGx5IHdpbGwgYmUgdXNlZCBmb3Igc2hvcnQgc291bmRzIHdoaWNoIHJlcXVpcmUgYSBoaWdoIGRl
Z3JlZSBvZiBzY2hlZHVsaW5nIGZsZXhpYmlsaXR5IChjYW4gcGxheWJhY2sgaW4gcmh5dGhtaWNh
bGx5IHBlcmZlY3Qgd2F5cykuCkBAIC0zOSw3ICszOSw3IEBAIGNsYXNzIFBhbm5lck5vZGU7CiBj
bGFzcyBBdWRpb0J1ZmZlclNvdXJjZU5vZGUgZmluYWwgOiBwdWJsaWMgQXVkaW9TY2hlZHVsZWRT
b3VyY2VOb2RlIHsKICAgICBXVEZfTUFLRV9JU09fQUxMT0NBVEVEKEF1ZGlvQnVmZmVyU291cmNl
Tm9kZSk7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxBdWRpb0J1ZmZlclNvdXJjZU5vZGU+IGNy
ZWF0ZShBdWRpb0NvbnRleHQmLCBmbG9hdCBzYW1wbGVSYXRlKTsKKyAgICBzdGF0aWMgUmVmPEF1
ZGlvQnVmZmVyU291cmNlTm9kZT4gY3JlYXRlKEF1ZGlvQ29udGV4dEJhc2UmLCBmbG9hdCBzYW1w
bGVSYXRlKTsKIAogICAgIHZpcnR1YWwgfkF1ZGlvQnVmZmVyU291cmNlTm9kZSgpOwogCkBAIC03
OSw3ICs3OSw3IEBAIHB1YmxpYzoKICAgICBBdWRpb1BhcmFtKiBwbGF5YmFja1JhdGUoKSB7IHJl
dHVybiBtX3BsYXliYWNrUmF0ZS5nZXQoKTsgfQogCiAgICAgLy8gSWYgYSBwYW5uZXIgbm9kZSBp
cyBzZXQsIHRoZW4gd2UgY2FuIGluY29ycG9yYXRlIGRvcHBsZXIgc2hpZnQgaW50byB0aGUgcGxh
eWJhY2sgcGl0Y2ggcmF0ZS4KLSAgICB2b2lkIHNldFBhbm5lck5vZGUoUGFubmVyTm9kZSopOwor
ICAgIHZvaWQgc2V0UGFubmVyTm9kZShQYW5uZXJOb2RlQmFzZSopOwogICAgIHZvaWQgY2xlYXJQ
YW5uZXJOb2RlKCk7CiAKICAgICAvLyBJZiB3ZSBhcmUgbm8gbG9uZ2VyIHBsYXlpbmcsIHByb3Bv
Z2F0ZSBzaWxlbmNlIGFoZWFkIHRvIGRvd25zdHJlYW0gbm9kZXMuCkBAIC05MSw3ICs5MSw3IEBA
IHB1YmxpYzoKICAgICBjb25zdCBjaGFyKiBhY3RpdmVET01PYmplY3ROYW1lKCkgY29uc3Qgb3Zl
cnJpZGUgeyByZXR1cm4gIkF1ZGlvQnVmZmVyU291cmNlTm9kZSI7IH0KIAogcHJpdmF0ZToKLSAg
ICBBdWRpb0J1ZmZlclNvdXJjZU5vZGUoQXVkaW9Db250ZXh0JiwgZmxvYXQgc2FtcGxlUmF0ZSk7
CisgICAgQXVkaW9CdWZmZXJTb3VyY2VOb2RlKEF1ZGlvQ29udGV4dEJhc2UmLCBmbG9hdCBzYW1w
bGVSYXRlKTsKIAogICAgIGRvdWJsZSB0YWlsVGltZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIDA7
IH0KICAgICBkb3VibGUgbGF0ZW5jeVRpbWUoKSBjb25zdCBmaW5hbCB7IHJldHVybiAwOyB9CkBA
IC0xNDUsNyArMTQ1LDcgQEAgcHJpdmF0ZToKIAogICAgIC8vIFdlIG9wdGlvbmFsbHkga2VlcCB0
cmFjayBvZiBhIHBhbm5lciBub2RlIHdoaWNoIGhhcyBhIGRvcHBsZXIgc2hpZnQgdGhhdCBpcyBp
bmNvcnBvcmF0ZWQgaW50bwogICAgIC8vIHRoZSBwaXRjaCByYXRlLiBXZSBtYW51YWxseSBtYW5h
Z2UgcmVmLWNvdW50aW5nIGJlY2F1c2Ugd2Ugd2FudCB0byB1c2UgUmVmVHlwZUNvbm5lY3Rpb24u
Ci0gICAgUGFubmVyTm9kZSogbV9wYW5uZXJOb2RlOworICAgIFBhbm5lck5vZGVCYXNlKiBtX3Bh
bm5lck5vZGU7CiAKICAgICAvLyBUaGlzIHN5bmNocm9uaXplcyBwcm9jZXNzKCkgd2l0aCBzZXRC
dWZmZXIoKSB3aGljaCBjYW4gY2F1c2UgZHluYW1pYyBjaGFubmVsIGNvdW50IGNoYW5nZXMuCiAg
ICAgbXV0YWJsZSBMb2NrIG1fcHJvY2Vzc011dGV4OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0NvbnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJhdWRpby9BdWRpb0NvbnRleHQuY3BwCmluZGV4IDM4MmRjN2NmMGNkMGY1ZDVkMzAy
NzZlNjNkOTJkYmUwYjUzN2VhNTkuLjhjNGYzZWZiOGE5Y2E4MGU3MGI2NTUwMDhiOGY1NzY0ZGUy
NzEzN2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9D
b250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQ29u
dGV4dC5jcHAKQEAgLTEwNyw2ICsxMDcsNyBAQCBjb25zdCB1bnNpZ25lZCBNYXhQZXJpb2RpY1dh
dmVMZW5ndGggPSA0MDk2OwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK1dURl9NQUtFX0lTT19B
TExPQ0FURURfSU1QTChBdWRpb0NvbnRleHRCYXNlKTsKIFdURl9NQUtFX0lTT19BTExPQ0FURURf
SU1QTChBdWRpb0NvbnRleHQpOwogCiAjZGVmaW5lIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoZm10
LCAuLi4pIFJFTEVBU0VfTE9HX0lGKGRvY3VtZW50KCkgJiYgZG9jdW1lbnQoKS0+cGFnZSgpICYm
IGRvY3VtZW50KCktPnBhZ2UoKS0+aXNBbHdheXNPbkxvZ2dpbmdBbGxvd2VkKCksIE1lZGlhLCAi
JXAgLSBBdWRpb0NvbnRleHQ6OiIgZm10LCB0aGlzLCAjI19fVkFfQVJHU19fKQpAQCAtMTM3LDkg
KzEzOCwxNCBAQCBFeGNlcHRpb25PcjxSZWY8QXVkaW9Db250ZXh0Pj4gQXVkaW9Db250ZXh0Ojpj
cmVhdGUoRG9jdW1lbnQmIGRvY3VtZW50KQogICAgIHJldHVybiBhdWRpb0NvbnRleHQ7CiB9CiAK
K0F1ZGlvQ29udGV4dEJhc2U6OkF1ZGlvQ29udGV4dEJhc2UoRG9jdW1lbnQmIGRvY3VtZW50KQor
ICAgIDogQWN0aXZlRE9NT2JqZWN0KGRvY3VtZW50KQoreworfQorCiAvLyBDb25zdHJ1Y3RvciBm
b3IgcmVuZGVyaW5nIHRvIHRoZSBhdWRpbyBoYXJkd2FyZS4KIEF1ZGlvQ29udGV4dDo6QXVkaW9D
b250ZXh0KERvY3VtZW50JiBkb2N1bWVudCkKLSAgICA6IEFjdGl2ZURPTU9iamVjdChkb2N1bWVu
dCkKKyAgICA6IEF1ZGlvQ29udGV4dEJhc2UoZG9jdW1lbnQpCiAjaWYgIVJFTEVBU0VfTE9HX0RJ
U0FCTEVECiAgICAgLCBtX2xvZ2dlcihkb2N1bWVudC5sb2dnZXIoKSkKICAgICAsIG1fbG9nSWRl
bnRpZmllcih1bmlxdWVMb2dJZGVudGlmaWVyKCkpCkBAIC0xNjQsNyArMTcwLDcgQEAgQXVkaW9D
b250ZXh0OjpBdWRpb0NvbnRleHQoRG9jdW1lbnQmIGRvY3VtZW50KQogCiAvLyBDb25zdHJ1Y3Rv
ciBmb3Igb2ZmbGluZSAobm9uLXJlYWx0aW1lKSByZW5kZXJpbmcuCiBBdWRpb0NvbnRleHQ6OkF1
ZGlvQ29udGV4dChEb2N1bWVudCYgZG9jdW1lbnQsIEF1ZGlvQnVmZmVyKiByZW5kZXJUYXJnZXQp
Ci0gICAgOiBBY3RpdmVET01PYmplY3QoZG9jdW1lbnQpCisgICAgOiBBdWRpb0NvbnRleHRCYXNl
KGRvY3VtZW50KQogI2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRAogICAgICwgbV9sb2dnZXIoZG9j
dW1lbnQubG9nZ2VyKCkpCiAgICAgLCBtX2xvZ0lkZW50aWZpZXIodW5pcXVlTG9nSWRlbnRpZmll
cigpKQpAQCAtMzY2LDcgKzM3Miw3IEBAIGNvbnN0IGNoYXIqIEF1ZGlvQ29udGV4dDo6YWN0aXZl
RE9NT2JqZWN0TmFtZSgpIGNvbnN0CiAgICAgcmV0dXJuICJBdWRpb0NvbnRleHQiOwogfQogCi1E
b2N1bWVudCogQXVkaW9Db250ZXh0Ojpkb2N1bWVudCgpIGNvbnN0CitEb2N1bWVudCogQXVkaW9D
b250ZXh0QmFzZTo6ZG9jdW1lbnQoKSBjb25zdAogewogICAgIHJldHVybiBkb3duY2FzdDxEb2N1
bWVudD4obV9zY3JpcHRFeGVjdXRpb25Db250ZXh0KTsKIH0KQEAgLTEwNjgsNyArMTA3NCw3IEBA
IHZvaWQgQXVkaW9Db250ZXh0Ojpwcm9jZXNzQXV0b21hdGljUHVsbE5vZGVzKHNpemVfdCBmcmFt
ZXNUb1Byb2Nlc3MpCiAgICAgICAgIG5vZGUtPnByb2Nlc3NJZk5lY2Vzc2FyeShmcmFtZXNUb1By
b2Nlc3MpOwogfQogCi1TY3JpcHRFeGVjdXRpb25Db250ZXh0KiBBdWRpb0NvbnRleHQ6OnNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQoKSBjb25zdAorU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogQXVkaW9D
b250ZXh0QmFzZTo6c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpIGNvbnN0CiB7CiAgICAgcmV0dXJu
IEFjdGl2ZURPTU9iamVjdDo6c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOwogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0NvbnRleHQuaCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0LmgKaW5kZXggOGUwOTQzOTRj
ZmZjYzVkYWE4YjBlNGRjNTg5MTIxOTQ0MmU2ZTEyZS4uZmRmOTk0YTVhNTE1ZDExNjY1NDI5MTk3
OTE5OGVhMDU3MWY5YTI2MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJh
dWRpby9BdWRpb0NvbnRleHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlv
L0F1ZGlvQ29udGV4dC5oCkBAIC0yOCw2ICsyOCw3IEBACiAjaW5jbHVkZSAiQWN0aXZlRE9NT2Jq
ZWN0LmgiCiAjaW5jbHVkZSAiQXN5bmNBdWRpb0RlY29kZXIuaCIKICNpbmNsdWRlICJBdWRpb0J1
cy5oIgorI2luY2x1ZGUgIkF1ZGlvQ29udGV4dFN0YXRlLmgiCiAjaW5jbHVkZSAiQXVkaW9EZXN0
aW5hdGlvbk5vZGUuaCIKICNpbmNsdWRlICJFdmVudFRhcmdldC5oIgogI2luY2x1ZGUgIk1lZGlh
Q2FuU3RhcnRMaXN0ZW5lci5oIgpAQCAtNzksMjAgKzgwLDEyNyBAQCBjbGFzcyBXYXZlU2hhcGVy
Tm9kZTsKIAogdGVtcGxhdGU8dHlwZW5hbWUgSURMVHlwZT4gY2xhc3MgRE9NUHJvbWlzZURlZmVy
cmVkOwogCi0vLyBBdWRpb0NvbnRleHQgaXMgdGhlIGNvcm5lcnN0b25lIG9mIHRoZSB3ZWIgYXVk
aW8gQVBJIGFuZCBhbGwgQXVkaW9Ob2RlcyBhcmUgY3JlYXRlZCBmcm9tIGl0LgotLy8gRm9yIHRo
cmVhZCBzYWZldHkgYmV0d2VlbiB0aGUgYXVkaW8gdGhyZWFkIGFuZCB0aGUgbWFpbiB0aHJlYWQs
IGl0IGhhcyBhIHJlbmRlcmluZyBncmFwaCBsb2NraW5nIG1lY2hhbmlzbS4gCi0KLWNsYXNzIEF1
ZGlvQ29udGV4dAorY2xhc3MgQXVkaW9Db250ZXh0QmFzZQogICAgIDogcHVibGljIEFjdGl2ZURP
TU9iamVjdAogICAgICwgcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPEF1ZGlvQ29udGV4dD4K
ICAgICAsIHB1YmxpYyBFdmVudFRhcmdldFdpdGhJbmxpbmVEYXRhCiAgICAgLCBwdWJsaWMgTWVk
aWFDYW5TdGFydExpc3RlbmVyCiAgICAgLCBwdWJsaWMgTWVkaWFQcm9kdWNlcgotICAgICwgcHJp
dmF0ZSBQbGF0Zm9ybU1lZGlhU2Vzc2lvbkNsaWVudAotICAgICwgcHJpdmF0ZSBWaXNpYmlsaXR5
Q2hhbmdlQ2xpZW50CiAjaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECi0gICAgLCBwcml2YXRlIExv
Z2dlckhlbHBlcgorICAgICwgcHVibGljIExvZ2dlckhlbHBlcgorI2VuZGlmCit7CisgICAgV1RG
X01BS0VfSVNPX0FMTE9DQVRFRChBdWRpb0NvbnRleHRCYXNlKTsKK3B1YmxpYzoKKyAgICB2aXJ0
dWFsIH5BdWRpb0NvbnRleHRCYXNlKCkgPSBkZWZhdWx0OworCisgICAgLy8gUmVjb25jaWxlIHJl
Zi9kZXJlZiB3aGljaCBhcmUgZGVmaW5lZCBib3RoIGluIFRocmVhZFNhZmVSZWZDb3VudGVkIGFu
ZCBFdmVudFRhcmdldC4KKyAgICB1c2luZyBUaHJlYWRTYWZlUmVmQ291bnRlZDo6cmVmOworICAg
IHVzaW5nIFRocmVhZFNhZmVSZWZDb3VudGVkOjpkZXJlZjsKKworICAgIERvY3VtZW50KiBkb2N1
bWVudCgpIGNvbnN0OworCisgICAgdmlydHVhbCBib29sIGlzSW5pdGlhbGl6ZWQoKSBjb25zdCA9
IDA7CisKKyAgICB2aXJ0dWFsIHNpemVfdCBjdXJyZW50U2FtcGxlRnJhbWUoKSBjb25zdCA9IDA7
CisgICAgdmlydHVhbCBmbG9hdCBzYW1wbGVSYXRlKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwg
ZG91YmxlIGN1cnJlbnRUaW1lKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgYm9vbCBpc0dyYXBo
T3duZXIoKSBjb25zdCA9IDA7CisKKyAgICB2aXJ0dWFsIHZvaWQgc2V0QXVkaW9UaHJlYWQoVGhy
ZWFkJikgPSAwOworICAgIHZpcnR1YWwgYm9vbCBpc0F1ZGlvVGhyZWFkKCkgY29uc3QgPSAwOwor
ICAgIHZpcnR1YWwgYm9vbCBpc0F1ZGlvVGhyZWFkRmluaXNoZWQoKSA9IDA7CisKKyAgICB2aXJ0
dWFsIHZvaWQgaXNQbGF5aW5nQXVkaW9EaWRDaGFuZ2UoKSA9IDA7CisgICAgdmlydHVhbCB2b2lk
IG5vZGVXaWxsQmVnaW5QbGF5YmFjaygpID0gMDsKKworICAgIHZpcnR1YWwgdm9pZCBwb3N0VGFz
ayhXVEY6OkZ1bmN0aW9uPHZvaWQoKT4mJikgPSAwOworICAgIHZpcnR1YWwgYm9vbCBpc1N0b3Bw
ZWQoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBjb25zdCBTZWN1cml0eU9yaWdpbiogb3JpZ2lu
KCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgdm9pZCBhZGRDb25zb2xlTWVzc2FnZShNZXNzYWdl
U291cmNlLCBNZXNzYWdlTGV2ZWwsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSkgPSAwOworCisgICAg
dmlydHVhbCB2b2lkIG1hcmtGb3JEZWxldGlvbihBdWRpb05vZGUmKSA9IDA7CisgICAgdmlydHVh
bCB2b2lkIGRlbGV0ZU1hcmtlZE5vZGVzKCkgPSAwOworCisgICAgdmlydHVhbCB2b2lkIGhhbmRs
ZVByZVJlbmRlclRhc2tzKCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBoYW5kbGVQb3N0UmVuZGVy
VGFza3MoKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHByb2Nlc3NBdXRvbWF0aWNQdWxsTm9kZXMo
c2l6ZV90IGZyYW1lc1RvUHJvY2VzcykgPSAwOworICAgIHZpcnR1YWwgdm9pZCBhZGREZWZlcnJl
ZEZpbmlzaERlcmVmKEF1ZGlvTm9kZSopID0gMDsKKworICAgIHZpcnR1YWwgdm9pZCByZW1vdmVN
YXJrZWRTdW1taW5nSnVuY3Rpb24oQXVkaW9TdW1taW5nSnVuY3Rpb24qKSA9IDA7CisgICAgdmly
dHVhbCB2b2lkIG1hcmtTdW1taW5nSnVuY3Rpb25EaXJ0eShBdWRpb1N1bW1pbmdKdW5jdGlvbiop
ID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgbWFya0F1ZGlvTm9kZU91dHB1dERpcnR5KEF1ZGlvTm9k
ZU91dHB1dCopID0gMDsKKworICAgIGVudW0gQmVoYXZpb3JSZXN0cmljdGlvbkZsYWdzIHsKKyAg
ICAgICAgTm9SZXN0cmljdGlvbnMgPSAwLAorICAgICAgICBSZXF1aXJlVXNlckdlc3R1cmVGb3JB
dWRpb1N0YXJ0UmVzdHJpY3Rpb24gPSAxIDw8IDAsCisgICAgICAgIFJlcXVpcmVQYWdlQ29uc2Vu
dEZvckF1ZGlvU3RhcnRSZXN0cmljdGlvbiA9IDEgPDwgMSwKKyAgICB9OworICAgIHR5cGVkZWYg
dW5zaWduZWQgQmVoYXZpb3JSZXN0cmljdGlvbnM7CisgICAgdmlydHVhbCBCZWhhdmlvclJlc3Ry
aWN0aW9ucyBiZWhhdmlvclJlc3RyaWN0aW9ucygpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIHZv
aWQgYWRkQmVoYXZpb3JSZXN0cmljdGlvbihCZWhhdmlvclJlc3RyaWN0aW9ucykgPSAwOworICAg
IHZpcnR1YWwgdm9pZCByZW1vdmVCZWhhdmlvclJlc3RyaWN0aW9uKEJlaGF2aW9yUmVzdHJpY3Rp
b25zKSA9IDA7CisKKyNpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKKyAgICB2aXJ0dWFsIGNvbnN0
IHZvaWQqIG5leHRBdWRpb05vZGVMb2dJZGVudGlmaWVyKCkgPSAwOworICAgIHZpcnR1YWwgY29u
c3Qgdm9pZCogbmV4dEF1ZGlvUGFyYW1ldGVyTG9nSWRlbnRpZmllcigpID0gMDsKICNlbmRpZgor
CisgICAgdmlydHVhbCB2b2lkIGFkZEF1dG9tYXRpY1B1bGxOb2RlKEF1ZGlvTm9kZSYpID0gMDsK
KyAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlQXV0b21hdGljUHVsbE5vZGUoQXVkaW9Ob2RlJikgPSAw
OworCisgICAgdmlydHVhbCB2b2lkIG5vdGlmeU5vZGVGaW5pc2hlZFByb2Nlc3NpbmcoQXVkaW9O
b2RlKikgPSAwOworCisgICAgdmlydHVhbCB2b2lkIGZpbmlzaGVkUmVuZGVyaW5nKGJvb2wgZGlk
UmVuZGVyaW5nKSA9IDA7CisKKyAgICB2aXJ0dWFsIHZvaWQgaW5jcmVtZW50Q29ubmVjdGlvbkNv
dW50KCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBpbmNyZW1lbnRBY3RpdmVTb3VyY2VDb3VudCgp
ID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZGVjcmVtZW50QWN0aXZlU291cmNlQ291bnQoKSA9IDA7
CisKKyAgICB2aXJ0dWFsIGJvb2wgaXNPZmZsaW5lQ29udGV4dCgpIGNvbnN0ID0gMDsKKyAgICB2
aXJ0dWFsIGJvb2wgaXNBdWRpb0NvbnRleHQoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBib29s
IGlzV2ViS2l0QXVkaW9Db250ZXh0KCkgY29uc3QgPSAwOworCisgICAgLy8gbXVzdFJlbGVhc2VM
b2NrIGlzIHNldCB0byB0cnVlIGlmIHdlIGFjcXVpcmVkIHRoZSBsb2NrIGluIHRoaXMgbWV0aG9k
IGNhbGwgYW5kIGNhbGxlciBtdXN0IHVubG9jaygpLCBmYWxzZSBpZiBpdCB3YXMgcHJldmlvdXNs
eSBhY3F1aXJlZC4KKyAgICB2aXJ0dWFsIHZvaWQgbG9jayhib29sJiBtdXN0UmVsZWFzZUxvY2sp
ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgdHJ5TG9jayhib29sJiBtdXN0UmVsZWFzZUxvY2spID0g
MDsKKyAgICB2aXJ0dWFsIHZvaWQgdW5sb2NrKCkgPSAwOworCisgICAgY2xhc3MgQXV0b0xvY2tl
ciB7CisgICAgcHVibGljOgorICAgICAgICBleHBsaWNpdCBBdXRvTG9ja2VyKEF1ZGlvQ29udGV4
dEJhc2UmIGNvbnRleHQpCisgICAgICAgICAgICA6IG1fY29udGV4dChjb250ZXh0KQorICAgICAg
ICB7CisgICAgICAgICAgICBtX2NvbnRleHQubG9jayhtX211c3RSZWxlYXNlTG9jayk7CisgICAg
ICAgIH0KKworICAgICAgICB+QXV0b0xvY2tlcigpCisgICAgICAgIHsKKyAgICAgICAgICAgIGlm
IChtX211c3RSZWxlYXNlTG9jaykKKyAgICAgICAgICAgICAgICBtX2NvbnRleHQudW5sb2NrKCk7
CisgICAgICAgIH0KKworICAgIHByaXZhdGU6CisgICAgICAgIEF1ZGlvQ29udGV4dEJhc2UmIG1f
Y29udGV4dDsKKyAgICAgICAgYm9vbCBtX211c3RSZWxlYXNlTG9jazsKKyAgICB9OworCisgICAg
Ly8gRXZlbnRUYXJnZXQKKyAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRp
b25Db250ZXh0KCkgY29uc3QgZmluYWw7CisgICAgdm9pZCByZWZFdmVudFRhcmdldCgpIG92ZXJy
aWRlIHsgcmVmKCk7IH0KKyAgICB2b2lkIGRlcmVmRXZlbnRUYXJnZXQoKSBvdmVycmlkZSB7IGRl
cmVmKCk7IH0KKworcHJvdGVjdGVkOgorICAgIGV4cGxpY2l0IEF1ZGlvQ29udGV4dEJhc2UoRG9j
dW1lbnQmKTsKK307CisKKy8vIEF1ZGlvQ29udGV4dCBpcyB0aGUgY29ybmVyc3RvbmUgb2YgdGhl
IHdlYiBhdWRpbyBBUEkgYW5kIGFsbCBBdWRpb05vZGVzIGFyZSBjcmVhdGVkIGZyb20gaXQuCisv
LyBGb3IgdGhyZWFkIHNhZmV0eSBiZXR3ZWVuIHRoZSBhdWRpbyB0aHJlYWQgYW5kIHRoZSBtYWlu
IHRocmVhZCwgaXQgaGFzIGEgcmVuZGVyaW5nIGdyYXBoIGxvY2tpbmcgbWVjaGFuaXNtLiAKKwor
Y2xhc3MgQXVkaW9Db250ZXh0CisgICAgOiBwdWJsaWMgQXVkaW9Db250ZXh0QmFzZQorICAgICwg
cHJpdmF0ZSBQbGF0Zm9ybU1lZGlhU2Vzc2lvbkNsaWVudAorICAgICwgcHJpdmF0ZSBWaXNpYmls
aXR5Q2hhbmdlQ2xpZW50CiB7CiAgICAgV1RGX01BS0VfSVNPX0FMTE9DQVRFRChBdWRpb0NvbnRl
eHQpOwogcHVibGljOgpAQCAtMTAxLDIyICsyMDksMjAgQEAgcHVibGljOgogCiAgICAgdmlydHVh
bCB+QXVkaW9Db250ZXh0KCk7CiAKLSAgICBib29sIGlzSW5pdGlhbGl6ZWQoKSBjb25zdDsKKyAg
ICBib29sIGlzSW5pdGlhbGl6ZWQoKSBjb25zdCBmaW5hbDsKICAgICAKLSAgICBib29sIGlzT2Zm
bGluZUNvbnRleHQoKSBjb25zdCB7IHJldHVybiBtX2lzT2ZmbGluZUNvbnRleHQ7IH0KLQotICAg
IERvY3VtZW50KiBkb2N1bWVudCgpIGNvbnN0OyAvLyBBU1NFUlRzIGlmIGRvY3VtZW50IG5vIGxv
bmdlciBleGlzdHMuCisgICAgYm9vbCBpc09mZmxpbmVDb250ZXh0KCkgY29uc3QgZmluYWwgeyBy
ZXR1cm4gbV9pc09mZmxpbmVDb250ZXh0OyB9CiAKICAgICBEb2N1bWVudElkZW50aWZpZXIgaG9z
dGluZ0RvY3VtZW50SWRlbnRpZmllcigpIGNvbnN0IGZpbmFsOwogCiAgICAgQXVkaW9EZXN0aW5h
dGlvbk5vZGUqIGRlc3RpbmF0aW9uKCkgeyByZXR1cm4gbV9kZXN0aW5hdGlvbk5vZGUuZ2V0KCk7
IH0KLSAgICBzaXplX3QgY3VycmVudFNhbXBsZUZyYW1lKCkgY29uc3QgeyByZXR1cm4gbV9kZXN0
aW5hdGlvbk5vZGUgPyBtX2Rlc3RpbmF0aW9uTm9kZS0+Y3VycmVudFNhbXBsZUZyYW1lKCkgOiAw
OyB9Ci0gICAgZG91YmxlIGN1cnJlbnRUaW1lKCkgY29uc3QgeyByZXR1cm4gbV9kZXN0aW5hdGlv
bk5vZGUgPyBtX2Rlc3RpbmF0aW9uTm9kZS0+Y3VycmVudFRpbWUoKSA6IDAuOyB9Ci0gICAgZmxv
YXQgc2FtcGxlUmF0ZSgpIGNvbnN0IHsgcmV0dXJuIG1fZGVzdGluYXRpb25Ob2RlID8gbV9kZXN0
aW5hdGlvbk5vZGUtPnNhbXBsZVJhdGUoKSA6IDAuZjsgfQorICAgIHNpemVfdCBjdXJyZW50U2Ft
cGxlRnJhbWUoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2Rlc3RpbmF0aW9uTm9kZSA/IG1fZGVz
dGluYXRpb25Ob2RlLT5jdXJyZW50U2FtcGxlRnJhbWUoKSA6IDA7IH0KKyAgICBkb3VibGUgY3Vy
cmVudFRpbWUoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2Rlc3RpbmF0aW9uTm9kZSA/IG1fZGVz
dGluYXRpb25Ob2RlLT5jdXJyZW50VGltZSgpIDogMC47IH0KKyAgICBmbG9hdCBzYW1wbGVSYXRl
KCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9kZXN0aW5hdGlvbk5vZGUgPyBtX2Rlc3RpbmF0aW9u
Tm9kZS0+c2FtcGxlUmF0ZSgpIDogMC5mOyB9CiAgICAgdW5zaWduZWQgbG9uZyBhY3RpdmVTb3Vy
Y2VDb3VudCgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PHVuc2lnbmVkIGxvbmc+KG1fYWN0
aXZlU291cmNlQ291bnQpOyB9CiAKLSAgICB2b2lkIGluY3JlbWVudEFjdGl2ZVNvdXJjZUNvdW50
KCk7Ci0gICAgdm9pZCBkZWNyZW1lbnRBY3RpdmVTb3VyY2VDb3VudCgpOworICAgIHZvaWQgaW5j
cmVtZW50QWN0aXZlU291cmNlQ291bnQoKSBmaW5hbDsKKyAgICB2b2lkIGRlY3JlbWVudEFjdGl2
ZVNvdXJjZUNvdW50KCkgZmluYWw7CiAgICAgCiAgICAgRXhjZXB0aW9uT3I8UmVmPEF1ZGlvQnVm
ZmVyPj4gY3JlYXRlQnVmZmVyKHVuc2lnbmVkIG51bWJlck9mQ2hhbm5lbHMsIHNpemVfdCBudW1i
ZXJPZkZyYW1lcywgZmxvYXQgc2FtcGxlUmF0ZSk7CiAgICAgRXhjZXB0aW9uT3I8UmVmPEF1ZGlv
QnVmZmVyPj4gY3JlYXRlQnVmZmVyKEFycmF5QnVmZmVyJiwgYm9vbCBtaXhUb01vbm8pOwpAQCAt
MTMwLDcgKzIzNiw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHJlc3VtZVJlbmRlcmluZyhET01Qcm9t
aXNlRGVmZXJyZWQ8dm9pZD4mJik7CiAgICAgdm9pZCBjbG9zZShET01Qcm9taXNlRGVmZXJyZWQ8
dm9pZD4mJik7CiAKLSAgICBlbnVtIGNsYXNzIFN0YXRlIHsgU3VzcGVuZGVkLCBSdW5uaW5nLCBJ
bnRlcnJ1cHRlZCwgQ2xvc2VkIH07CisgICAgdXNpbmcgU3RhdGUgPSBBdWRpb0NvbnRleHRTdGF0
ZTsKICAgICBTdGF0ZSBzdGF0ZSgpIGNvbnN0OwogICAgIGJvb2wgaXNDbG9zZWQoKSBjb25zdCB7
IHJldHVybiBtX3N0YXRlID09IFN0YXRlOjpDbG9zZWQ7IH0KIApAQCAtMTYwLDMxICsyNjYsMzEg
QEAgcHVibGljOgogICAgIEV4Y2VwdGlvbk9yPFJlZjxQZXJpb2RpY1dhdmU+PiBjcmVhdGVQZXJp
b2RpY1dhdmUoRmxvYXQzMkFycmF5JiByZWFsLCBGbG9hdDMyQXJyYXkmIGltYWdpbmFyeSk7CiAK
ICAgICAvLyBXaGVuIGEgc291cmNlIG5vZGUgaGFzIG5vIG1vcmUgcHJvY2Vzc2luZyB0byBkbyAo
aGFzIGZpbmlzaGVkIHBsYXlpbmcpLCB0aGVuIGl0IHRlbGxzIHRoZSBjb250ZXh0IHRvIGRlcmVm
ZXJlbmNlIGl0LgotICAgIHZvaWQgbm90aWZ5Tm9kZUZpbmlzaGVkUHJvY2Vzc2luZyhBdWRpb05v
ZGUqKTsKKyAgICB2b2lkIG5vdGlmeU5vZGVGaW5pc2hlZFByb2Nlc3NpbmcoQXVkaW9Ob2RlKikg
ZmluYWw7CiAKICAgICAvLyBDYWxsZWQgYXQgdGhlIHN0YXJ0IG9mIGVhY2ggcmVuZGVyIHF1YW50
dW0uCi0gICAgdm9pZCBoYW5kbGVQcmVSZW5kZXJUYXNrcygpOworICAgIHZvaWQgaGFuZGxlUHJl
UmVuZGVyVGFza3MoKSBmaW5hbDsKIAogICAgIC8vIENhbGxlZCBhdCB0aGUgZW5kIG9mIGVhY2gg
cmVuZGVyIHF1YW50dW0uCi0gICAgdm9pZCBoYW5kbGVQb3N0UmVuZGVyVGFza3MoKTsKKyAgICB2
b2lkIGhhbmRsZVBvc3RSZW5kZXJUYXNrcygpIGZpbmFsOwogCiAgICAgLy8gQ2FsbGVkIHBlcmlv
ZGljYWxseSBhdCB0aGUgZW5kIG9mIGVhY2ggcmVuZGVyIHF1YW50dW0gdG8gZGVyZWZlcmVuY2Ug
ZmluaXNoZWQgc291cmNlIG5vZGVzLgogICAgIHZvaWQgZGVyZWZGaW5pc2hlZFNvdXJjZU5vZGVz
KCk7CiAKICAgICAvLyBXZSBzY2hlZHVsZSBkZWxldGlvbiBvZiBhbGwgbWFya2VkIG5vZGVzIGF0
IHRoZSBlbmQgb2YgZWFjaCByZWFsdGltZSByZW5kZXIgcXVhbnR1bS4KLSAgICB2b2lkIG1hcmtG
b3JEZWxldGlvbihBdWRpb05vZGUmKTsKLSAgICB2b2lkIGRlbGV0ZU1hcmtlZE5vZGVzKCk7Cisg
ICAgdm9pZCBtYXJrRm9yRGVsZXRpb24oQXVkaW9Ob2RlJikgZmluYWw7CisgICAgdm9pZCBkZWxl
dGVNYXJrZWROb2RlcygpIGZpbmFsOwogCiAgICAgLy8gQXVkaW9Db250ZXh0IGNhbiBwdWxsIG5v
ZGUocykgYXQgdGhlIGVuZCBvZiBlYWNoIHJlbmRlciBxdWFudHVtIGV2ZW4gd2hlbiB0aGV5IGFy
ZSBub3QgY29ubmVjdGVkIHRvIGFueSBkb3duc3RyZWFtIG5vZGVzLgogICAgIC8vIFRoZXNlIHR3
byBtZXRob2RzIGFyZSBjYWxsZWQgYnkgdGhlIG5vZGVzIHdobyB3YW50IHRvIGFkZC9yZW1vdmUg
dGhlbXNlbHZlcyBpbnRvL2Zyb20gdGhlIGF1dG9tYXRpYyBwdWxsIGxpc3RzLgotICAgIHZvaWQg
YWRkQXV0b21hdGljUHVsbE5vZGUoQXVkaW9Ob2RlJik7Ci0gICAgdm9pZCByZW1vdmVBdXRvbWF0
aWNQdWxsTm9kZShBdWRpb05vZGUmKTsKKyAgICB2b2lkIGFkZEF1dG9tYXRpY1B1bGxOb2RlKEF1
ZGlvTm9kZSYpIGZpbmFsOworICAgIHZvaWQgcmVtb3ZlQXV0b21hdGljUHVsbE5vZGUoQXVkaW9O
b2RlJikgZmluYWw7CiAKICAgICAvLyBDYWxsZWQgcmlnaHQgYmVmb3JlIGhhbmRsZVBvc3RSZW5k
ZXJUYXNrcygpIHRvIGhhbmRsZSBub2RlcyB3aGljaCBuZWVkIHRvIGJlIHB1bGxlZCBldmVuIHdo
ZW4gdGhleSBhcmUgbm90IGNvbm5lY3RlZCB0byBhbnl0aGluZy4KLSAgICB2b2lkIHByb2Nlc3NB
dXRvbWF0aWNQdWxsTm9kZXMoc2l6ZV90IGZyYW1lc1RvUHJvY2Vzcyk7CisgICAgdm9pZCBwcm9j
ZXNzQXV0b21hdGljUHVsbE5vZGVzKHNpemVfdCBmcmFtZXNUb1Byb2Nlc3MpIGZpbmFsOwogCiAg
ICAgLy8gS2VlcHMgdHJhY2sgb2YgdGhlIG51bWJlciBvZiBjb25uZWN0aW9ucyBtYWRlLgotICAg
IHZvaWQgaW5jcmVtZW50Q29ubmVjdGlvbkNvdW50KCkKKyAgICB2b2lkIGluY3JlbWVudENvbm5l
Y3Rpb25Db3VudCgpIGZpbmFsCiAgICAgewogICAgICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkp
OwogICAgICAgICBtX2Nvbm5lY3Rpb25Db3VudCsrOwpAQCAtMTk2LDEwMyArMzAyLDcwIEBAIHB1
YmxpYzoKICAgICAvLyBUaHJlYWQgU2FmZXR5IGFuZCBHcmFwaCBMb2NraW5nOgogICAgIC8vCiAg
ICAgCi0gICAgdm9pZCBzZXRBdWRpb1RocmVhZChUaHJlYWQmIHRocmVhZCkgeyBtX2F1ZGlvVGhy
ZWFkID0gJnRocmVhZDsgfSAvLyBGSVhNRTogY2hlY2sgZWl0aGVyIG5vdCBpbml0aWFsaXplZCBv
ciB0aGUgc2FtZQorICAgIHZvaWQgc2V0QXVkaW9UaHJlYWQoVGhyZWFkJiB0aHJlYWQpIGZpbmFs
IHsgbV9hdWRpb1RocmVhZCA9ICZ0aHJlYWQ7IH0gLy8gRklYTUU6IGNoZWNrIGVpdGhlciBub3Qg
aW5pdGlhbGl6ZWQgb3IgdGhlIHNhbWUKICAgICBUaHJlYWQqIGF1ZGlvVGhyZWFkKCkgY29uc3Qg
eyByZXR1cm4gbV9hdWRpb1RocmVhZDsgfQotICAgIGJvb2wgaXNBdWRpb1RocmVhZCgpIGNvbnN0
OworICAgIGJvb2wgaXNBdWRpb1RocmVhZCgpIGNvbnN0IGZpbmFsOwogCiAgICAgLy8gUmV0dXJu
cyB0cnVlIG9ubHkgYWZ0ZXIgdGhlIGF1ZGlvIHRocmVhZCBoYXMgYmVlbiBzdGFydGVkIGFuZCB0
aGVuIHNodXRkb3duLgotICAgIGJvb2wgaXNBdWRpb1RocmVhZEZpbmlzaGVkKCkgeyByZXR1cm4g
bV9pc0F1ZGlvVGhyZWFkRmluaXNoZWQ7IH0KKyAgICBib29sIGlzQXVkaW9UaHJlYWRGaW5pc2hl
ZCgpIGZpbmFsIHsgcmV0dXJuIG1faXNBdWRpb1RocmVhZEZpbmlzaGVkOyB9CiAgICAgCiAgICAg
Ly8gbXVzdFJlbGVhc2VMb2NrIGlzIHNldCB0byB0cnVlIGlmIHdlIGFjcXVpcmVkIHRoZSBsb2Nr
IGluIHRoaXMgbWV0aG9kIGNhbGwgYW5kIGNhbGxlciBtdXN0IHVubG9jaygpLCBmYWxzZSBpZiBp
dCB3YXMgcHJldmlvdXNseSBhY3F1aXJlZC4KLSAgICB2b2lkIGxvY2soYm9vbCYgbXVzdFJlbGVh
c2VMb2NrKTsKKyAgICB2b2lkIGxvY2soYm9vbCYgbXVzdFJlbGVhc2VMb2NrKSBmaW5hbDsKIAog
ICAgIC8vIFJldHVybnMgdHJ1ZSBpZiB3ZSBvd24gdGhlIGxvY2suCiAgICAgLy8gbXVzdFJlbGVh
c2VMb2NrIGlzIHNldCB0byB0cnVlIGlmIHdlIGFjcXVpcmVkIHRoZSBsb2NrIGluIHRoaXMgbWV0
aG9kIGNhbGwgYW5kIGNhbGxlciBtdXN0IHVubG9jaygpLCBmYWxzZSBpZiBpdCB3YXMgcHJldmlv
dXNseSBhY3F1aXJlZC4KLSAgICBib29sIHRyeUxvY2soYm9vbCYgbXVzdFJlbGVhc2VMb2NrKTsK
KyAgICBib29sIHRyeUxvY2soYm9vbCYgbXVzdFJlbGVhc2VMb2NrKSBmaW5hbDsKIAotICAgIHZv
aWQgdW5sb2NrKCk7CisgICAgdm9pZCB1bmxvY2soKSBmaW5hbDsKIAogICAgIC8vIFJldHVybnMg
dHJ1ZSBpZiB0aGlzIHRocmVhZCBvd25zIHRoZSBjb250ZXh0J3MgbG9jay4KLSAgICBib29sIGlz
R3JhcGhPd25lcigpIGNvbnN0OworICAgIGJvb2wgaXNHcmFwaE93bmVyKCkgY29uc3QgZmluYWw7
CiAKICAgICAvLyBSZXR1cm5zIHRoZSBtYXhpbXVtIG51bWJlciBvZiBjaGFubmVscyB3ZSBjYW4g
c3VwcG9ydC4KICAgICBzdGF0aWMgdW5zaWduZWQgbWF4TnVtYmVyT2ZDaGFubmVscygpIHsgcmV0
dXJuIE1heE51bWJlck9mQ2hhbm5lbHM7IH0KLQotICAgIGNsYXNzIEF1dG9Mb2NrZXIgewotICAg
IHB1YmxpYzoKLSAgICAgICAgZXhwbGljaXQgQXV0b0xvY2tlcihBdWRpb0NvbnRleHQmIGNvbnRl
eHQpCi0gICAgICAgICAgICA6IG1fY29udGV4dChjb250ZXh0KQotICAgICAgICB7Ci0gICAgICAg
ICAgICBtX2NvbnRleHQubG9jayhtX211c3RSZWxlYXNlTG9jayk7Ci0gICAgICAgIH0KLSAgICAg
ICAgCi0gICAgICAgIH5BdXRvTG9ja2VyKCkKLSAgICAgICAgewotICAgICAgICAgICAgaWYgKG1f
bXVzdFJlbGVhc2VMb2NrKQotICAgICAgICAgICAgICAgIG1fY29udGV4dC51bmxvY2soKTsKLSAg
ICAgICAgfQotCi0gICAgcHJpdmF0ZToKLSAgICAgICAgQXVkaW9Db250ZXh0JiBtX2NvbnRleHQ7
Ci0gICAgICAgIGJvb2wgbV9tdXN0UmVsZWFzZUxvY2s7Ci0gICAgfTsKICAgICAKICAgICAvLyBJ
biBBdWRpb05vZGU6OmRlcmVmKCkgYSB0cnlMb2NrKCkgaXMgdXNlZCBmb3IgY2FsbGluZyBmaW5p
c2hEZXJlZigpLCBidXQgaWYgaXQgZmFpbHMga2VlcCB0cmFjayBoZXJlLgotICAgIHZvaWQgYWRk
RGVmZXJyZWRGaW5pc2hEZXJlZihBdWRpb05vZGUqKTsKKyAgICB2b2lkIGFkZERlZmVycmVkRmlu
aXNoRGVyZWYoQXVkaW9Ob2RlKikgZmluYWw7CiAKICAgICAvLyBJbiB0aGUgYXVkaW8gdGhyZWFk
IGF0IHRoZSBzdGFydCBvZiBlYWNoIHJlbmRlciBjeWNsZSwgd2UnbGwgY2FsbCBoYW5kbGVEZWZl
cnJlZEZpbmlzaERlcmVmcygpLgogICAgIHZvaWQgaGFuZGxlRGVmZXJyZWRGaW5pc2hEZXJlZnMo
KTsKIAogICAgIC8vIE9ubHkgYWNjZXNzZWQgd2hlbiB0aGUgZ3JhcGggbG9jayBpcyBoZWxkLgot
ICAgIHZvaWQgbWFya1N1bW1pbmdKdW5jdGlvbkRpcnR5KEF1ZGlvU3VtbWluZ0p1bmN0aW9uKik7
Ci0gICAgdm9pZCBtYXJrQXVkaW9Ob2RlT3V0cHV0RGlydHkoQXVkaW9Ob2RlT3V0cHV0Kik7Cisg
ICAgdm9pZCBtYXJrU3VtbWluZ0p1bmN0aW9uRGlydHkoQXVkaW9TdW1taW5nSnVuY3Rpb24qKSBm
aW5hbDsKKyAgICB2b2lkIG1hcmtBdWRpb05vZGVPdXRwdXREaXJ0eShBdWRpb05vZGVPdXRwdXQq
KSBmaW5hbDsKIAogICAgIC8vIE11c3QgYmUgY2FsbGVkIG9uIG1haW4gdGhyZWFkLgotICAgIHZv
aWQgcmVtb3ZlTWFya2VkU3VtbWluZ0p1bmN0aW9uKEF1ZGlvU3VtbWluZ0p1bmN0aW9uKik7Cisg
ICAgdm9pZCByZW1vdmVNYXJrZWRTdW1taW5nSnVuY3Rpb24oQXVkaW9TdW1taW5nSnVuY3Rpb24q
KSBmaW5hbDsKIAogICAgIC8vIEV2ZW50VGFyZ2V0CiAgICAgRXZlbnRUYXJnZXRJbnRlcmZhY2Ug
ZXZlbnRUYXJnZXRJbnRlcmZhY2UoKSBjb25zdCBmaW5hbCB7IHJldHVybiBBdWRpb0NvbnRleHRF
dmVudFRhcmdldEludGVyZmFjZVR5cGU7IH0KIAotICAgIC8vIFJlY29uY2lsZSByZWYvZGVyZWYg
d2hpY2ggYXJlIGRlZmluZWQgYm90aCBpbiBUaHJlYWRTYWZlUmVmQ291bnRlZCBhbmQgRXZlbnRU
YXJnZXQuCi0gICAgdXNpbmcgVGhyZWFkU2FmZVJlZkNvdW50ZWQ6OnJlZjsKLSAgICB1c2luZyBU
aHJlYWRTYWZlUmVmQ291bnRlZDo6ZGVyZWY7Ci0KICAgICB2b2lkIHN0YXJ0UmVuZGVyaW5nKCk7
Ci0gICAgdm9pZCBmaW5pc2hlZFJlbmRlcmluZyhib29sIGRpZFJlbmRlcmluZyk7CisgICAgdm9p
ZCBmaW5pc2hlZFJlbmRlcmluZyhib29sIGRpZFJlbmRlcmluZykgZmluYWw7CiAKICAgICBzdGF0
aWMgdW5zaWduZWQgc19oYXJkd2FyZUNvbnRleHRDb3VudDsKIAogICAgIC8vIFJlc3RyaWN0aW9u
cyB0byBjaGFuZ2UgZGVmYXVsdCBiZWhhdmlvcnMuCi0gICAgZW51bSBCZWhhdmlvclJlc3RyaWN0
aW9uRmxhZ3MgewotICAgICAgICBOb1Jlc3RyaWN0aW9ucyA9IDAsCi0gICAgICAgIFJlcXVpcmVV
c2VyR2VzdHVyZUZvckF1ZGlvU3RhcnRSZXN0cmljdGlvbiA9IDEgPDwgMCwKLSAgICAgICAgUmVx
dWlyZVBhZ2VDb25zZW50Rm9yQXVkaW9TdGFydFJlc3RyaWN0aW9uID0gMSA8PCAxLAotICAgIH07
Ci0gICAgdHlwZWRlZiB1bnNpZ25lZCBCZWhhdmlvclJlc3RyaWN0aW9uczsKLQotICAgIEJlaGF2
aW9yUmVzdHJpY3Rpb25zIGJlaGF2aW9yUmVzdHJpY3Rpb25zKCkgY29uc3QgeyByZXR1cm4gbV9y
ZXN0cmljdGlvbnM7IH0KLSAgICB2b2lkIGFkZEJlaGF2aW9yUmVzdHJpY3Rpb24oQmVoYXZpb3JS
ZXN0cmljdGlvbnMgcmVzdHJpY3Rpb24pIHsgbV9yZXN0cmljdGlvbnMgfD0gcmVzdHJpY3Rpb247
IH0KLSAgICB2b2lkIHJlbW92ZUJlaGF2aW9yUmVzdHJpY3Rpb24oQmVoYXZpb3JSZXN0cmljdGlv
bnMgcmVzdHJpY3Rpb24pIHsgbV9yZXN0cmljdGlvbnMgJj0gfnJlc3RyaWN0aW9uOyB9CisgICAg
QmVoYXZpb3JSZXN0cmljdGlvbnMgYmVoYXZpb3JSZXN0cmljdGlvbnMoKSBjb25zdCBmaW5hbCB7
IHJldHVybiBtX3Jlc3RyaWN0aW9uczsgfQorICAgIHZvaWQgYWRkQmVoYXZpb3JSZXN0cmljdGlv
bihCZWhhdmlvclJlc3RyaWN0aW9ucyByZXN0cmljdGlvbikgZmluYWwgeyBtX3Jlc3RyaWN0aW9u
cyB8PSByZXN0cmljdGlvbjsgfQorICAgIHZvaWQgcmVtb3ZlQmVoYXZpb3JSZXN0cmljdGlvbihC
ZWhhdmlvclJlc3RyaWN0aW9ucyByZXN0cmljdGlvbikgZmluYWwgeyBtX3Jlc3RyaWN0aW9ucyAm
PSB+cmVzdHJpY3Rpb247IH0KIAotICAgIHZvaWQgaXNQbGF5aW5nQXVkaW9EaWRDaGFuZ2UoKTsK
KyAgICB2b2lkIGlzUGxheWluZ0F1ZGlvRGlkQ2hhbmdlKCkgZmluYWw7CiAKLSAgICB2b2lkIG5v
ZGVXaWxsQmVnaW5QbGF5YmFjaygpOworICAgIHZvaWQgbm9kZVdpbGxCZWdpblBsYXliYWNrKCkg
ZmluYWw7CiAKICNpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKICAgICBjb25zdCBMb2dnZXImIGxv
Z2dlcigpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fbG9nZ2VyLmdldCgpOyB9CiAgICAgY29uc3Qg
dm9pZCogbG9nSWRlbnRpZmllcigpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fbG9nSWRlbnRpZmll
cjsgfQogICAgIFdURkxvZ0NoYW5uZWwmIGxvZ0NoYW5uZWwoKSBjb25zdCBmaW5hbDsKLSAgICBj
b25zdCB2b2lkKiBuZXh0QXVkaW9Ob2RlTG9nSWRlbnRpZmllcigpIHsgcmV0dXJuIGNoaWxkTG9n
SWRlbnRpZmllcihtX2xvZ0lkZW50aWZpZXIsICsrbV9uZXh0QXVkaW9Ob2RlSWRlbnRpZmllcik7
IH0KLSAgICBjb25zdCB2b2lkKiBuZXh0QXVkaW9QYXJhbWV0ZXJMb2dJZGVudGlmaWVyKCkgeyBy
ZXR1cm4gY2hpbGRMb2dJZGVudGlmaWVyKG1fbG9nSWRlbnRpZmllciwgKyttX25leHRBdWRpb1Bh
cmFtZXRlcklkZW50aWZpZXIpOyB9CisgICAgY29uc3Qgdm9pZCogbmV4dEF1ZGlvTm9kZUxvZ0lk
ZW50aWZpZXIoKSBmaW5hbCB7IHJldHVybiBjaGlsZExvZ0lkZW50aWZpZXIobV9sb2dJZGVudGlm
aWVyLCArK21fbmV4dEF1ZGlvTm9kZUlkZW50aWZpZXIpOyB9CisgICAgY29uc3Qgdm9pZCogbmV4
dEF1ZGlvUGFyYW1ldGVyTG9nSWRlbnRpZmllcigpIGZpbmFsIHsgcmV0dXJuIGNoaWxkTG9nSWRl
bnRpZmllcihtX2xvZ0lkZW50aWZpZXIsICsrbV9uZXh0QXVkaW9QYXJhbWV0ZXJJZGVudGlmaWVy
KTsgfQogI2VuZGlmCiAKLSAgICB2b2lkIHBvc3RUYXNrKFdURjo6RnVuY3Rpb248dm9pZCgpPiYm
KTsKLSAgICBib29sIGlzU3RvcHBlZCgpIGNvbnN0IHsgcmV0dXJuIG1faXNTdG9wU2NoZWR1bGVk
OyB9Ci0gICAgY29uc3QgU2VjdXJpdHlPcmlnaW4qIG9yaWdpbigpIGNvbnN0OwotICAgIHZvaWQg
YWRkQ29uc29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZSwgTWVzc2FnZUxldmVsLCBjb25zdCBTdHJp
bmcmIG1lc3NhZ2UpOwotCi0gICAgLy8gRXZlbnRUYXJnZXQKLSAgICBTY3JpcHRFeGVjdXRpb25D
b250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkgY29uc3QgZmluYWw7CisgICAgdm9pZCBw
b3N0VGFzayhXVEY6OkZ1bmN0aW9uPHZvaWQoKT4mJikgZmluYWw7CisgICAgYm9vbCBpc1N0b3Bw
ZWQoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2lzU3RvcFNjaGVkdWxlZDsgfQorICAgIGNvbnN0
IFNlY3VyaXR5T3JpZ2luKiBvcmlnaW4oKSBjb25zdCBmaW5hbDsKKyAgICB2b2lkIGFkZENvbnNv
bGVNZXNzYWdlKE1lc3NhZ2VTb3VyY2UsIE1lc3NhZ2VMZXZlbCwgY29uc3QgU3RyaW5nJiBtZXNz
YWdlKSBmaW5hbDsKIAogcHJvdGVjdGVkOgogICAgIGV4cGxpY2l0IEF1ZGlvQ29udGV4dChEb2N1
bWVudCYpOwpAQCAtMzYwLDkgKzQzMyw4IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIHZpc2liaWxp
dHlTdGF0ZUNoYW5nZWQoKSBmaW5hbDsKIAotICAgIC8vIEV2ZW50VGFyZ2V0Ci0gICAgdm9pZCBy
ZWZFdmVudFRhcmdldCgpIG92ZXJyaWRlIHsgcmVmKCk7IH0KLSAgICB2b2lkIGRlcmVmRXZlbnRU
YXJnZXQoKSBvdmVycmlkZSB7IGRlcmVmKCk7IH0KKyAgICBib29sIGlzQXVkaW9Db250ZXh0KCkg
Y29uc3QgZmluYWwgeyByZXR1cm4gdHJ1ZTsgfQorICAgIGJvb2wgaXNXZWJLaXRBdWRpb0NvbnRl
eHQoKSBjb25zdCBmaW5hbCB7IHJldHVybiBmYWxzZTsgfQogCiAgICAgdm9pZCBoYW5kbGVEaXJ0
eUF1ZGlvU3VtbWluZ0p1bmN0aW9ucygpOwogICAgIHZvaWQgaGFuZGxlRGlydHlBdWRpb05vZGVP
dXRwdXRzKCk7CkBAIC00NDYsMjEgKzUxOCwxMyBAQCBwcml2YXRlOgogICAgIFJlZlB0cjxQZW5k
aW5nQWN0aXZpdHk8QXVkaW9Db250ZXh0Pj4gbV9wZW5kaW5nQWN0aXZpdHk7CiB9OwogCi0vLyBG
SVhNRTogRmluZCBvdXQgd2h5IHRoZXNlID09LyE9IGZ1bmN0aW9ucyBhcmUgbmVlZGVkIGFuZCBy
ZW1vdmUgdGhlbSBpZiBwb3NzaWJsZS4KLQotaW5saW5lIGJvb2wgb3BlcmF0b3I9PShjb25zdCBB
dWRpb0NvbnRleHQmIGxocywgY29uc3QgQXVkaW9Db250ZXh0JiByaHMpCi17Ci0gICAgcmV0dXJu
ICZsaHMgPT0gJnJoczsKLX0KLQotaW5saW5lIGJvb2wgb3BlcmF0b3IhPShjb25zdCBBdWRpb0Nv
bnRleHQmIGxocywgY29uc3QgQXVkaW9Db250ZXh0JiByaHMpCi17Ci0gICAgcmV0dXJuICZsaHMg
IT0gJnJoczsKLX0KLQogaW5saW5lIEF1ZGlvQ29udGV4dDo6U3RhdGUgQXVkaW9Db250ZXh0Ojpz
dGF0ZSgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1fc3RhdGU7CiB9CiAKIH0gLy8gV2ViQ29yZQor
CitTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0JFR0lOKFdlYkNvcmU6OkF1ZGlvQ29udGV4dCkKKyAg
ICBzdGF0aWMgYm9vbCBpc1R5cGUoY29uc3QgV2ViQ29yZTo6QXVkaW9Db250ZXh0QmFzZSYgY29u
dGV4dCkgeyByZXR1cm4gY29udGV4dC5pc0F1ZGlvQ29udGV4dCgpOyB9CitTUEVDSUFMSVpFX1RZ
UEVfVFJBSVRTX0VORCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1
ZGlvL0F1ZGlvQ29udGV4dC5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1
ZGlvQ29udGV4dC5pZGwKaW5kZXggZTcxMTgzOWIzMzMwMGRlMzQxYzIzMWM0Y2M5NmU5ZTU3NjMy
NDEzNS4uZjFkNDljYTM2OGQ2NDUwNmFiYWI1Njk3OTA5ZWUwOTcyMWI1ZDhjZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0NvbnRleHQuaWRsCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0LmlkbApAQCAtMjMs
MTkgKzIzLDExIEBACiAgKiBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi1lbnVtIEF1ZGlvQ29udGV4dFN0YXRlIHsKLSAg
ICAic3VzcGVuZGVkIiwKLSAgICAicnVubmluZyIsCi0gICAgImludGVycnVwdGVkIiwKLSAgICAi
Y2xvc2VkIgotfTsKLQogWwogICAgIEFjdGl2ZURPTU9iamVjdCwKICAgICBDb25kaXRpb25hbD1X
RUJfQVVESU8sCi0gICAgRW5hYmxlZEJ5U2V0dGluZz1XZWJBdWRpbywKKyAgICBFbmFibGVkQnlT
ZXR0aW5nPU1vZGVyblVucHJlZml4ZWRXZWJBdWRpbywKICAgICBFeHBvcnRNYWNybz1XRUJDT1JF
X0VYUE9SVCwKLSAgICBJbnRlcmZhY2VOYW1lPXdlYmtpdEF1ZGlvQ29udGV4dCwKIF0gaW50ZXJm
YWNlIEF1ZGlvQ29udGV4dCA6IEV2ZW50VGFyZ2V0IHsKICAgICBbQ2FsbFdpdGg9RG9jdW1lbnQs
IE1heVRocm93RXhjZXB0aW9uXSBjb25zdHJ1Y3RvcigpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQ29udGV4dFN0YXRlLmggYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQ29udGV4dFN0YXRlLmgKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTYw
MTMxMTA4ZmE2YTRjMTRhOWFkNjE3YjkyY2EyMTQ3NDQ4NzgwYgotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0U3RhdGUuaApAQCAt
MCwwICsxLDMyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYtMjAyMCBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORCBB
TlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsK
KyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTgorICogQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTCisgKiBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworbmFtZXNwYWNlIFdl
YkNvcmUgeworCitlbnVtIGNsYXNzIEF1ZGlvQ29udGV4dFN0YXRlIHsgU3VzcGVuZGVkLCBSdW5u
aW5nLCBJbnRlcnJ1cHRlZCwgQ2xvc2VkIH07CisKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0U3RhdGUuaWRsIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0NvbnRleHRTdGF0ZS5pZGwKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzhk
MDhiZDJiNTYzY2Q4MjZlY2NhN2Y5Nzk0NGM3MTNhOGE3ZWY0YgotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0U3RhdGUuaWRsCkBA
IC0wLDAgKzEsMzEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAsIEdvb2dsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQgQU5Z
CisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7Cisg
KiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04KKyAqIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUworICogU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworZW51bSBBdWRpb0NvbnRleHRTdGF0ZSB7CisgICAg
InN1c3BlbmRlZCIsCisgICAgInJ1bm5pbmciLAorICAgICJpbnRlcnJ1cHRlZCIsCisgICAgImNs
b3NlZCIKK307CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1
ZGlvRGVzdGluYXRpb25Ob2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8v
QXVkaW9EZXN0aW5hdGlvbk5vZGUuY3BwCmluZGV4IGQ5YWJiOTc3N2E5ZDI1ZWVhZjI0MmZmNGZm
ZmM1ZWM1ZWY0ODZjNGUuLjY3NzYxN2VjYjMzOGRhODkxYTcxM2FlODhhM2Y1ZjY0ZjZmZDg0OWEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9EZXN0aW5h
dGlvbk5vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9E
ZXN0aW5hdGlvbk5vZGUuY3BwCkBAIC0zOSw3ICszOSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
ICAgICAKIFdURl9NQUtFX0lTT19BTExPQ0FURURfSU1QTChBdWRpb0Rlc3RpbmF0aW9uTm9kZSk7
CiAKLUF1ZGlvRGVzdGluYXRpb25Ob2RlOjpBdWRpb0Rlc3RpbmF0aW9uTm9kZShBdWRpb0NvbnRl
eHQmIGNvbnRleHQsIGZsb2F0IHNhbXBsZVJhdGUpCitBdWRpb0Rlc3RpbmF0aW9uTm9kZTo6QXVk
aW9EZXN0aW5hdGlvbk5vZGUoQXVkaW9Db250ZXh0QmFzZSYgY29udGV4dCwgZmxvYXQgc2FtcGxl
UmF0ZSkKICAgICA6IEF1ZGlvTm9kZShjb250ZXh0LCBzYW1wbGVSYXRlKQogICAgICwgbV9jdXJy
ZW50U2FtcGxlRnJhbWUoMCkKICAgICAsIG1faXNTaWxlbnQodHJ1ZSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9EZXN0aW5hdGlvbk5vZGUuaCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9EZXN0aW5hdGlvbk5vZGUuaAppbmRl
eCA4OTQ4ZjRlZTcwYTVjMGU4MWE4ZTgzYzFmMGNkNWZjZjQ1MWFjYzYwLi4zNzZmNDYyNzEyZDdm
MWMyYWU4ZDUyMDExZmEyYTE1ZjZlMThhZWM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmF1ZGlvL0F1ZGlvRGVzdGluYXRpb25Ob2RlLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0Rlc3RpbmF0aW9uTm9kZS5oCkBAIC0zNiw3ICszNiw3
IEBAIGNsYXNzIEF1ZGlvQ29udGV4dDsKIGNsYXNzIEF1ZGlvRGVzdGluYXRpb25Ob2RlIDogcHVi
bGljIEF1ZGlvTm9kZSwgcHVibGljIEF1ZGlvSU9DYWxsYmFjayB7CiAgICAgV1RGX01BS0VfSVNP
X0FMTE9DQVRFRChBdWRpb0Rlc3RpbmF0aW9uTm9kZSk7CiBwdWJsaWM6Ci0gICAgQXVkaW9EZXN0
aW5hdGlvbk5vZGUoQXVkaW9Db250ZXh0JiwgZmxvYXQgc2FtcGxlUmF0ZSk7CisgICAgQXVkaW9E
ZXN0aW5hdGlvbk5vZGUoQXVkaW9Db250ZXh0QmFzZSYsIGZsb2F0IHNhbXBsZVJhdGUpOwogICAg
IHZpcnR1YWwgfkF1ZGlvRGVzdGluYXRpb25Ob2RlKCk7CiAgICAgCiAgICAgLy8gQXVkaW9Ob2Rl
ICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvTm9k
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvTm9kZS5jcHAKaW5k
ZXggNzY1ZWNlMzMyZjYzNjljNDE5OGZlNTdkZDNhZTdjYzUxOTNiMmFjYS4uZTU1NDM3NzlkNTFh
NTA4Y2U2MWE2YTA4MzExMmU4ZDJkMGE4N2QwZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJhdWRpby9BdWRpb05vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViYXVkaW8vQXVkaW9Ob2RlLmNwcApAQCAtMzMsNiArMzMsNyBAQAogI2luY2x1ZGUgIkF1
ZGlvTm9kZU91dHB1dC5oIgogI2luY2x1ZGUgIkF1ZGlvUGFyYW0uaCIKICNpbmNsdWRlICJMb2dn
aW5nLmgiCisjaW5jbHVkZSAiV2ViS2l0QXVkaW9Db250ZXh0LmgiCiAjaW5jbHVkZSA8d3RmL0F0
b21pY3MuaD4KICNpbmNsdWRlIDx3dGYvSXNvTWFsbG9jSW5saW5lcy5oPgogI2luY2x1ZGUgPHd0
Zi9NYWluVGhyZWFkLmg+CkBAIC05NSw3ICs5Niw3IEBAIFN0cmluZyBjb252ZXJ0RW51bWVyYXRp
b25Ub1N0cmluZyhBdWRpb05vZGU6Ok5vZGVUeXBlIGVudW1lcmF0aW9uVmFsdWUpCiAgICAgcmV0
dXJuIHZhbHVlc1tzdGF0aWNfY2FzdDxzaXplX3Q+KGVudW1lcmF0aW9uVmFsdWUpXTsKIH0KIAot
QXVkaW9Ob2RlOjpBdWRpb05vZGUoQXVkaW9Db250ZXh0JiBjb250ZXh0LCBmbG9hdCBzYW1wbGVS
YXRlKQorQXVkaW9Ob2RlOjpBdWRpb05vZGUoQXVkaW9Db250ZXh0QmFzZSYgY29udGV4dCwgZmxv
YXQgc2FtcGxlUmF0ZSkKICAgICA6IG1faXNJbml0aWFsaXplZChmYWxzZSkKICAgICAsIG1fbm9k
ZVR5cGUoTm9kZVR5cGVVbmtub3duKQogICAgICwgbV9jb250ZXh0KGNvbnRleHQpCkBAIC0xOTQs
NyArMTk1LDcgQEAgQXVkaW9Ob2RlT3V0cHV0KiBBdWRpb05vZGU6Om91dHB1dCh1bnNpZ25lZCBp
KQogRXhjZXB0aW9uT3I8dm9pZD4gQXVkaW9Ob2RlOjpjb25uZWN0KEF1ZGlvTm9kZSYgZGVzdGlu
YXRpb24sIHVuc2lnbmVkIG91dHB1dEluZGV4LCB1bnNpZ25lZCBpbnB1dEluZGV4KQogewogICAg
IEFTU0VSVChpc01haW5UaHJlYWQoKSk7Ci0gICAgQXVkaW9Db250ZXh0OjpBdXRvTG9ja2VyIGxv
Y2tlcihjb250ZXh0KCkpOworICAgIEF1ZGlvQ29udGV4dEJhc2U6OkF1dG9Mb2NrZXIgbG9ja2Vy
KGNvbnRleHQoKSk7CiAKICAgICBBTFdBWVNfTE9HKExPR0lERU5USUZJRVIsIGRlc3RpbmF0aW9u
Lm5vZGVUeXBlKCksICIsIG91dHB1dCA9ICIsIG91dHB1dEluZGV4LCAiLCBpbnB1dCA9ICIsIGlu
cHV0SW5kZXgpOwogICAgIApAQCAtMjA1LDcgKzIwNiw3IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IEF1
ZGlvTm9kZTo6Y29ubmVjdChBdWRpb05vZGUmIGRlc3RpbmF0aW9uLCB1bnNpZ25lZCBvdXRwdXRJ
bmRlCiAgICAgaWYgKGlucHV0SW5kZXggPj0gZGVzdGluYXRpb24ubnVtYmVyT2ZJbnB1dHMoKSkK
ICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IEluZGV4U2l6ZUVycm9yIH07CiAKLSAgICBpZiAo
Y29udGV4dCgpICE9IGRlc3RpbmF0aW9uLmNvbnRleHQoKSkKKyAgICBpZiAoJmNvbnRleHQoKSAh
PSAmZGVzdGluYXRpb24uY29udGV4dCgpKQogICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgU3lu
dGF4RXJyb3IgfTsKIAogICAgIGF1dG8qIGlucHV0ID0gZGVzdGluYXRpb24uaW5wdXQoaW5wdXRJ
bmRleCk7CkBAIC0yMjAsNyArMjIxLDcgQEAgRXhjZXB0aW9uT3I8dm9pZD4gQXVkaW9Ob2RlOjpj
b25uZWN0KEF1ZGlvTm9kZSYgZGVzdGluYXRpb24sIHVuc2lnbmVkIG91dHB1dEluZGUKIAogRXhj
ZXB0aW9uT3I8dm9pZD4gQXVkaW9Ob2RlOjpjb25uZWN0KEF1ZGlvUGFyYW0mIHBhcmFtLCB1bnNp
Z25lZCBvdXRwdXRJbmRleCkKIHsKLSAgICBBdWRpb0NvbnRleHQ6OkF1dG9Mb2NrZXIgbG9ja2Vy
KGNvbnRleHQoKSk7CisgICAgQXVkaW9Db250ZXh0QmFzZTo6QXV0b0xvY2tlciBsb2NrZXIoY29u
dGV4dCgpKTsKIAogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAKQEAgLTIyOSw3ICsyMzAs
NyBAQCBFeGNlcHRpb25Pcjx2b2lkPiBBdWRpb05vZGU6OmNvbm5lY3QoQXVkaW9QYXJhbSYgcGFy
YW0sIHVuc2lnbmVkIG91dHB1dEluZGV4KQogICAgIGlmIChvdXRwdXRJbmRleCA+PSBudW1iZXJP
Zk91dHB1dHMoKSkKICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IEluZGV4U2l6ZUVycm9yIH07
CiAKLSAgICBpZiAoY29udGV4dCgpICE9IHBhcmFtLmNvbnRleHQoKSkKKyAgICBpZiAoJmNvbnRl
eHQoKSAhPSAmcGFyYW0uY29udGV4dCgpKQogICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgU3lu
dGF4RXJyb3IgfTsKIAogICAgIGF1dG8qIG91dHB1dCA9IHRoaXMtPm91dHB1dChvdXRwdXRJbmRl
eCk7CkBAIC0yNDEsNyArMjQyLDcgQEAgRXhjZXB0aW9uT3I8dm9pZD4gQXVkaW9Ob2RlOjpjb25u
ZWN0KEF1ZGlvUGFyYW0mIHBhcmFtLCB1bnNpZ25lZCBvdXRwdXRJbmRleCkKIEV4Y2VwdGlvbk9y
PHZvaWQ+IEF1ZGlvTm9kZTo6ZGlzY29ubmVjdCh1bnNpZ25lZCBvdXRwdXRJbmRleCkKIHsKICAg
ICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwotICAgIEF1ZGlvQ29udGV4dDo6QXV0b0xvY2tlciBs
b2NrZXIoY29udGV4dCgpKTsKKyAgICBBdWRpb0NvbnRleHRCYXNlOjpBdXRvTG9ja2VyIGxvY2tl
cihjb250ZXh0KCkpOwogCiAgICAgLy8gU2FuaXR5IGNoZWNrIGlucHV0IGFuZCBvdXRwdXQgaW5k
aWNlcy4KICAgICBpZiAob3V0cHV0SW5kZXggPj0gbnVtYmVyT2ZPdXRwdXRzKCkpCkBAIC0yNjMs
NyArMjY0LDcgQEAgdW5zaWduZWQgQXVkaW9Ob2RlOjpjaGFubmVsQ291bnQoKQogRXhjZXB0aW9u
T3I8dm9pZD4gQXVkaW9Ob2RlOjpzZXRDaGFubmVsQ291bnQodW5zaWduZWQgY2hhbm5lbENvdW50
KQogewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7Ci0gICAgQXVkaW9Db250ZXh0OjpBdXRv
TG9ja2VyIGxvY2tlcihjb250ZXh0KCkpOworICAgIEF1ZGlvQ29udGV4dEJhc2U6OkF1dG9Mb2Nr
ZXIgbG9ja2VyKGNvbnRleHQoKSk7CiAKICAgICBBTFdBWVNfTE9HKExPR0lERU5USUZJRVIsIGNo
YW5uZWxDb3VudCk7CiAgICAgCkBAIC0yOTYsNyArMjk3LDcgQEAgU3RyaW5nIEF1ZGlvTm9kZTo6
Y2hhbm5lbENvdW50TW9kZSgpCiBFeGNlcHRpb25Pcjx2b2lkPiBBdWRpb05vZGU6OnNldENoYW5u
ZWxDb3VudE1vZGUoY29uc3QgU3RyaW5nJiBtb2RlKQogewogICAgIEFTU0VSVChpc01haW5UaHJl
YWQoKSk7Ci0gICAgQXVkaW9Db250ZXh0OjpBdXRvTG9ja2VyIGxvY2tlcihjb250ZXh0KCkpOwor
ICAgIEF1ZGlvQ29udGV4dEJhc2U6OkF1dG9Mb2NrZXIgbG9ja2VyKGNvbnRleHQoKSk7CiAKICAg
ICBBTFdBWVNfTE9HKExPR0lERU5USUZJRVIsIG1vZGUpOwogICAgIApAQCAtMzMyLDcgKzMzMyw3
IEBAIFN0cmluZyBBdWRpb05vZGU6OmNoYW5uZWxJbnRlcnByZXRhdGlvbigpCiBFeGNlcHRpb25P
cjx2b2lkPiBBdWRpb05vZGU6OnNldENoYW5uZWxJbnRlcnByZXRhdGlvbihjb25zdCBTdHJpbmcm
IGludGVycHJldGF0aW9uKQogewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7Ci0gICAgQXVk
aW9Db250ZXh0OjpBdXRvTG9ja2VyIGxvY2tlcihjb250ZXh0KCkpOworICAgIEF1ZGlvQ29udGV4
dEJhc2U6OkF1dG9Mb2NrZXIgbG9ja2VyKGNvbnRleHQoKSk7CiAKICAgICBBTFdBWVNfTE9HKExP
R0lERU5USUZJRVIsIGludGVycHJldGF0aW9uKTsKICAgICAKQEAgLTQzNyw3ICs0MzgsNyBAQCB2
b2lkIEF1ZGlvTm9kZTo6ZW5hYmxlT3V0cHV0c0lmTmVjZXNzYXJ5KCkKIHsKICAgICBpZiAobV9p
c0Rpc2FibGVkICYmIG1fY29ubmVjdGlvblJlZkNvdW50ID4gMCkgewogICAgICAgICBBU1NFUlQo
aXNNYWluVGhyZWFkKCkpOwotICAgICAgICBBdWRpb0NvbnRleHQ6OkF1dG9Mb2NrZXIgbG9ja2Vy
KGNvbnRleHQoKSk7CisgICAgICAgIEF1ZGlvQ29udGV4dEJhc2U6OkF1dG9Mb2NrZXIgbG9ja2Vy
KGNvbnRleHQoKSk7CiAKICAgICAgICAgbV9pc0Rpc2FibGVkID0gZmFsc2U7CiAgICAgICAgIGZv
ciAoYXV0byYgb3V0cHV0IDogbV9vdXRwdXRzKQpAQCAtNTAxLDcgKzUwMiw3IEBAIHZvaWQgQXVk
aW9Ob2RlOjpkZXJlZihSZWZUeXBlIHJlZlR5cGUpCiAgICAgLy8gSW4gdGhlIGNhc2Ugb2YgdGhl
IGF1ZGlvIHRocmVhZCwgd2UgbXVzdCB1c2UgYSB0cnlMb2NrIHRvIGF2b2lkIGdsaXRjaGVzLgog
ICAgIGJvb2wgaGFzTG9jayA9IGZhbHNlOwogICAgIGJvb2wgbXVzdFJlbGVhc2VMb2NrID0gZmFs
c2U7Ci0gICAgCisKICAgICBpZiAoY29udGV4dCgpLmlzQXVkaW9UaHJlYWQoKSkgewogICAgICAg
ICAvLyBSZWFsLXRpbWUgYXVkaW8gdGhyZWFkIG11c3Qgbm90IGNvbnRlbmQgbG9jayAodG8gYXZv
aWQgZ2xpdGNoZXMpLgogICAgICAgICBoYXNMb2NrID0gY29udGV4dCgpLnRyeUxvY2sobXVzdFJl
bGVhc2VMb2NrKTsKQEAgLTUzMCw2ICs1MzEsMTMgQEAgdm9pZCBBdWRpb05vZGU6OmRlcmVmKFJl
ZlR5cGUgcmVmVHlwZSkKICAgICAgICAgY29udGV4dCgpLmRlbGV0ZU1hcmtlZE5vZGVzKCk7CiB9
CiAKK1ZhcmlhbnQ8UmVmUHRyPEF1ZGlvQ29udGV4dD4sIFJlZlB0cjxXZWJLaXRBdWRpb0NvbnRl
eHQ+PiBBdWRpb05vZGU6OmNvbnRleHRGb3JCaW5kaW5ncygpIGNvbnN0Cit7CisgICAgaWYgKG1f
Y29udGV4dC0+aXNXZWJLaXRBdWRpb0NvbnRleHQoKSkKKyAgICAgICAgcmV0dXJuIG1ha2VSZWZQ
dHIoc3RhdGljX2Nhc3Q8V2ViS2l0QXVkaW9Db250ZXh0Jj4obV9jb250ZXh0LmdldCgpKSk7Cisg
ICAgcmV0dXJuIG1ha2VSZWZQdHIoc3RhdGljX2Nhc3Q8QXVkaW9Db250ZXh0Jj4obV9jb250ZXh0
LmdldCgpKSk7Cit9CisKIHZvaWQgQXVkaW9Ob2RlOjpmaW5pc2hEZXJlZihSZWZUeXBlIHJlZlR5
cGUpCiB7CiAgICAgQVNTRVJUKGNvbnRleHQoKS5pc0dyYXBoT3duZXIoKSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvTm9kZS5oIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb05vZGUuaAppbmRleCA0MjEwMTAwNmNjN2Y1NGVl
NzVhZGY3MDcyZWZiZTY0YmFjNThkMzZkLi5hOTg4MWJkNGI4ZGI0YzNiMTBmOWQ3NzExNjU2MjYw
MGMxODBmYzkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1
ZGlvTm9kZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Ob2Rl
LmgKQEAgLTI5LDE1ICsyOSwxOCBAQAogI2luY2x1ZGUgIkV4Y2VwdGlvbk9yLmgiCiAjaW5jbHVk
ZSA8d3RmL0ZvcndhcmQuaD4KICNpbmNsdWRlIDx3dGYvTG9nZ2VySGVscGVyLmg+CisjaW5jbHVk
ZSA8d3RmL1ZhcmlhbnQuaD4KIAogI2RlZmluZSBERUJVR19BVURJT05PREVfUkVGRVJFTkNFUyAw
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQXVkaW9Db250ZXh0OworY2xhc3MgQXVk
aW9Db250ZXh0QmFzZTsKIGNsYXNzIEF1ZGlvTm9kZUlucHV0OwogY2xhc3MgQXVkaW9Ob2RlT3V0
cHV0OwogY2xhc3MgQXVkaW9QYXJhbTsKK2NsYXNzIFdlYktpdEF1ZGlvQ29udGV4dDsKIAogLy8g
QW4gQXVkaW9Ob2RlIGlzIHRoZSBiYXNpYyBidWlsZGluZyBibG9jayBmb3IgaGFuZGxpbmcgYXVk
aW8gd2l0aGluIGFuIEF1ZGlvQ29udGV4dC4KIC8vIEl0IG1heSBiZSBhbiBhdWRpbyBzb3VyY2Us
IGFuIGludGVybWVkaWF0ZSBwcm9jZXNzaW5nIG1vZHVsZSwgb3IgYW4gYXVkaW8gZGVzdGluYXRp
b24uCkBAIC01NiwxMSArNTksMTMgQEAgY2xhc3MgQXVkaW9Ob2RlCiBwdWJsaWM6CiAgICAgZW51
bSB7IFByb2Nlc3NpbmdTaXplSW5GcmFtZXMgPSAxMjggfTsKIAotICAgIEF1ZGlvTm9kZShBdWRp
b0NvbnRleHQmLCBmbG9hdCBzYW1wbGVSYXRlKTsKKyAgICBBdWRpb05vZGUoQXVkaW9Db250ZXh0
QmFzZSYsIGZsb2F0IHNhbXBsZVJhdGUpOwogICAgIHZpcnR1YWwgfkF1ZGlvTm9kZSgpOwogCi0g
ICAgQXVkaW9Db250ZXh0JiBjb250ZXh0KCkgeyByZXR1cm4gbV9jb250ZXh0LmdldCgpOyB9Ci0g
ICAgY29uc3QgQXVkaW9Db250ZXh0JiBjb250ZXh0KCkgY29uc3QgeyByZXR1cm4gbV9jb250ZXh0
LmdldCgpOyB9CisgICAgQXVkaW9Db250ZXh0QmFzZSYgY29udGV4dCgpIHsgcmV0dXJuIG1fY29u
dGV4dC5nZXQoKTsgfQorICAgIGNvbnN0IEF1ZGlvQ29udGV4dEJhc2UmIGNvbnRleHQoKSBjb25z
dCB7IHJldHVybiBtX2NvbnRleHQuZ2V0KCk7IH0KKworICAgIFZhcmlhbnQ8UmVmUHRyPEF1ZGlv
Q29udGV4dD4sIFJlZlB0cjxXZWJLaXRBdWRpb0NvbnRleHQ+PiBjb250ZXh0Rm9yQmluZGluZ3Mo
KSBjb25zdDsKIAogICAgIGVudW0gTm9kZVR5cGUgewogICAgICAgICBOb2RlVHlwZVVua25vd24s
CkBAIC0yMDksNyArMjE0LDcgQEAgcHJpdmF0ZToKIAogICAgIHZvbGF0aWxlIGJvb2wgbV9pc0lu
aXRpYWxpemVkOwogICAgIE5vZGVUeXBlIG1fbm9kZVR5cGU7Ci0gICAgUmVmPEF1ZGlvQ29udGV4
dD4gbV9jb250ZXh0OworICAgIFJlZjxBdWRpb0NvbnRleHRCYXNlPiBtX2NvbnRleHQ7CiAgICAg
ZmxvYXQgbV9zYW1wbGVSYXRlOwogICAgIFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8QXVkaW9Ob2Rl
SW5wdXQ+PiBtX2lucHV0czsKICAgICBWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPEF1ZGlvTm9kZU91
dHB1dD4+IG1fb3V0cHV0czsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
YXVkaW8vQXVkaW9Ob2RlLmlkbCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVk
aW9Ob2RlLmlkbAppbmRleCA3MGZlYzhjODE0NTA1OTkxZTIwYWQ4YzFjOTJjYzExZWVlOTY4NDJm
Li43MTkzOWM4MzE3MTRiZmJmMzZkZmJhZTUyZmJjM2QzZDIwMmY2NjIxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvTm9kZS5pZGwKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb05vZGUuaWRsCkBAIC0yNSw3ICsyNSw3IEBA
CiBbCiAgICAgQ29uZGl0aW9uYWw9V0VCX0FVRElPLAogXSBpbnRlcmZhY2UgQXVkaW9Ob2RlIDog
RXZlbnRUYXJnZXQgewotICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBBdWRpb0NvbnRleHQgY29udGV4
dDsKKyAgICBbSW1wbGVtZW50ZWRBcz1jb250ZXh0Rm9yQmluZGluZ3NdIHJlYWRvbmx5IGF0dHJp
YnV0ZSAoQXVkaW9Db250ZXh0IG9yIFdlYktpdEF1ZGlvQ29udGV4dCkgY29udGV4dDsKICAgICBy
ZWFkb25seSBhdHRyaWJ1dGUgdW5zaWduZWQgbG9uZyBudW1iZXJPZklucHV0czsKICAgICByZWFk
b25seSBhdHRyaWJ1dGUgdW5zaWduZWQgbG9uZyBudW1iZXJPZk91dHB1dHM7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Ob2RlT3V0cHV0LmggYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvTm9kZU91dHB1dC5oCmluZGV4IDUw
YTk1ZWUyMDVjMTIwMzA5M2NhNWZjMzA3MTc5OTEzNTMyZDczYTQuLmYwODk4MzYzNWYzYzU1OWM3
OTgxZjBiYTRhNWMxMjJiMTU5YzJjYjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViYXVkaW8vQXVkaW9Ob2RlT3V0cHV0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJhdWRpby9BdWRpb05vZGVPdXRwdXQuaApAQCAtNDcsNyArNDcsNyBAQCBwdWJsaWM6CiAK
ICAgICAvLyBDYW4gYmUgY2FsbGVkIGZyb20gYW55IHRocmVhZC4KICAgICBBdWRpb05vZGUqIG5v
ZGUoKSBjb25zdCB7IHJldHVybiBtX25vZGU7IH0KLSAgICBBdWRpb0NvbnRleHQmIGNvbnRleHQo
KSB7IHJldHVybiBtX25vZGUtPmNvbnRleHQoKTsgfQorICAgIEF1ZGlvQ29udGV4dEJhc2UmIGNv
bnRleHQoKSB7IHJldHVybiBtX25vZGUtPmNvbnRleHQoKTsgfQogICAgIAogICAgIC8vIENhdXNl
cyBvdXIgQXVkaW9Ob2RlIHRvIHByb2Nlc3MgaWYgaXQgaGFzbid0IGFscmVhZHkgZm9yIHRoaXMg
cmVuZGVyIHF1YW50dW0uCiAgICAgLy8gSXQgcmV0dXJucyB0aGUgYnVzIGNvbnRhaW5pbmcgdGhl
IHByb2Nlc3NlZCBhdWRpbyBmb3IgdGhpcyBvdXRwdXQsIHJldHVybmluZyBpblBsYWNlQnVzIGlm
IGluLXBsYWNlIHByb2Nlc3Npbmcgd2FzIHBvc3NpYmxlLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1BhcmFtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViYXVkaW8vQXVkaW9QYXJhbS5jcHAKaW5kZXggMjkzNDU2NDQ1Y2MwZTFiZGE5ZDAw
ZDJiZDlhMmMwZDExMTAzZGNjOS4uZDQ3MGJmNzQ2ZWZiNWFiMjNjYTM1MmQ3YmQ5NTMzOGMzODE0
ZmU3YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1Bh
cmFtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvUGFyYW0u
Y3BwCkBAIC00MSw3ICs0MSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNvbnN0IGRvdWJsZSBB
dWRpb1BhcmFtOjpEZWZhdWx0U21vb3RoaW5nQ29uc3RhbnQgPSAwLjA1OwogY29uc3QgZG91Ymxl
IEF1ZGlvUGFyYW06OlNuYXBUaHJlc2hvbGQgPSAwLjAwMTsKIAotQXVkaW9QYXJhbTo6QXVkaW9Q
YXJhbShBdWRpb0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IFN0cmluZyYgbmFtZSwgZG91YmxlIGRl
ZmF1bHRWYWx1ZSwgZG91YmxlIG1pblZhbHVlLCBkb3VibGUgbWF4VmFsdWUsIHVuc2lnbmVkIHVu
aXRzKQorQXVkaW9QYXJhbTo6QXVkaW9QYXJhbShBdWRpb0NvbnRleHRCYXNlJiBjb250ZXh0LCBj
b25zdCBTdHJpbmcmIG5hbWUsIGRvdWJsZSBkZWZhdWx0VmFsdWUsIGRvdWJsZSBtaW5WYWx1ZSwg
ZG91YmxlIG1heFZhbHVlLCB1bnNpZ25lZCB1bml0cykKICAgICA6IEF1ZGlvU3VtbWluZ0p1bmN0
aW9uKGNvbnRleHQpCiAgICAgLCBtX25hbWUobmFtZSkKICAgICAsIG1fdmFsdWUoZGVmYXVsdFZh
bHVlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1Bh
cmFtLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvUGFyYW0uaAppbmRl
eCAyMjZjOTU3ZTcwNmZlNjFkMmYyMzNjMGQ1YmY5NmYyMDY4NzMxYzQyLi4xNmEyMTA5NTA0NGY2
MDFlZDI3Yjg5MDFhMDc2OGYyZmE5ZWIxNmU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmF1ZGlvL0F1ZGlvUGFyYW0uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmF1ZGlvL0F1ZGlvUGFyYW0uaApAQCAtMzEsNiArMzEsNyBAQAogI2luY2x1ZGUgIkF1ZGlv
Q29udGV4dC5oIgogI2luY2x1ZGUgIkF1ZGlvUGFyYW1UaW1lbGluZS5oIgogI2luY2x1ZGUgIkF1
ZGlvU3VtbWluZ0p1bmN0aW9uLmgiCisjaW5jbHVkZSAiV2ViS2l0QXVkaW9Db250ZXh0LmgiCiAj
aW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvRmxvYXQzMkFycmF5Lmg+CiAjaW5jbHVkZSA8c3lzL3R5
cGVzLmg+CiAjaW5jbHVkZSA8d3RmL0xvZ2dlckhlbHBlci5oPgpAQCAtNTIsNyArNTMsNyBAQCBw
dWJsaWM6CiAgICAgc3RhdGljIGNvbnN0IGRvdWJsZSBEZWZhdWx0U21vb3RoaW5nQ29uc3RhbnQ7
CiAgICAgc3RhdGljIGNvbnN0IGRvdWJsZSBTbmFwVGhyZXNob2xkOwogCi0gICAgc3RhdGljIFJl
ZjxBdWRpb1BhcmFtPiBjcmVhdGUoQXVkaW9Db250ZXh0JiBjb250ZXh0LCBjb25zdCBTdHJpbmcm
IG5hbWUsIGRvdWJsZSBkZWZhdWx0VmFsdWUsIGRvdWJsZSBtaW5WYWx1ZSwgZG91YmxlIG1heFZh
bHVlLCB1bnNpZ25lZCB1bml0cyA9IDApCisgICAgc3RhdGljIFJlZjxBdWRpb1BhcmFtPiBjcmVh
dGUoQXVkaW9Db250ZXh0QmFzZSYgY29udGV4dCwgY29uc3QgU3RyaW5nJiBuYW1lLCBkb3VibGUg
ZGVmYXVsdFZhbHVlLCBkb3VibGUgbWluVmFsdWUsIGRvdWJsZSBtYXhWYWx1ZSwgdW5zaWduZWQg
dW5pdHMgPSAwKQogICAgIHsKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQXVkaW9QYXJh
bShjb250ZXh0LCBuYW1lLCBkZWZhdWx0VmFsdWUsIG1pblZhbHVlLCBtYXhWYWx1ZSwgdW5pdHMp
KTsKICAgICB9CkBAIC0xMDgsNyArMTA5LDcgQEAgcHVibGljOgogICAgIHZvaWQgZGlzY29ubmVj
dChBdWRpb05vZGVPdXRwdXQqKTsKIAogcHJvdGVjdGVkOgotICAgIEF1ZGlvUGFyYW0oQXVkaW9D
b250ZXh0JiwgY29uc3QgU3RyaW5nJiwgZG91YmxlIGRlZmF1bHRWYWx1ZSwgZG91YmxlIG1pblZh
bHVlLCBkb3VibGUgbWF4VmFsdWUsIHVuc2lnbmVkIHVuaXRzID0gMCk7CisgICAgQXVkaW9QYXJh
bShBdWRpb0NvbnRleHRCYXNlJiwgY29uc3QgU3RyaW5nJiwgZG91YmxlIGRlZmF1bHRWYWx1ZSwg
ZG91YmxlIG1pblZhbHVlLCBkb3VibGUgbWF4VmFsdWUsIHVuc2lnbmVkIHVuaXRzID0gMCk7CiAK
IHByaXZhdGU6CiAgICAgLy8gc2FtcGxlQWNjdXJhdGUgY29ycmVzcG9uZHMgdG8gYS1yYXRlIChh
dWRpbyByYXRlKSB2cy4gay1yYXRlIGluIHRoZSBXZWIgQXVkaW8gc3BlY2lmaWNhdGlvbi4KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9QYXJhbVRpbWVs
aW5lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9QYXJhbVRpbWVs
aW5lLmNwcAppbmRleCAyYjU5NTcwYmY2ZTYxYjU0ODNlZDFiOTA3ZTY3NmY2OWJlOWIzNzQyLi42
YzQxMzAxZDhhZDVhN2FiYmU4ZGIwZGJhMTdjZjg0NGJmZWZmYjYwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvUGFyYW1UaW1lbGluZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1BhcmFtVGltZWxpbmUuY3BwCkBA
IC0xMTMsNyArMTEzLDcgQEAgdm9pZCBBdWRpb1BhcmFtVGltZWxpbmU6OmNhbmNlbFNjaGVkdWxl
ZFZhbHVlcyhmbG9hdCBzdGFydFRpbWUpCiAgICAgfQogfQogCi1mbG9hdCBBdWRpb1BhcmFtVGlt
ZWxpbmU6OnZhbHVlRm9yQ29udGV4dFRpbWUoQXVkaW9Db250ZXh0JiBjb250ZXh0LCBmbG9hdCBk
ZWZhdWx0VmFsdWUsIGJvb2wmIGhhc1ZhbHVlKQorZmxvYXQgQXVkaW9QYXJhbVRpbWVsaW5lOjp2
YWx1ZUZvckNvbnRleHRUaW1lKEF1ZGlvQ29udGV4dEJhc2UmIGNvbnRleHQsIGZsb2F0IGRlZmF1
bHRWYWx1ZSwgYm9vbCYgaGFzVmFsdWUpCiB7CiAgICAgewogICAgICAgICBzdGQ6OnVuaXF1ZV9s
b2NrPExvY2s+IGxvY2sobV9ldmVudHNNdXRleCwgc3RkOjp0cnlfdG9fbG9jayk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvUGFyYW1UaW1lbGluZS5o
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1BhcmFtVGltZWxpbmUuaApp
bmRleCA3YzEwOTk5NTZjZWViYzhkOGY2ZDUwZTBmYjBmYzlhMWVlZmRhMzRkLi5hNTg2OGJkZWUx
ODNmZGUyYTcwOGQ0NjRjZTYzNWIyNDAwZTc2MWEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvUGFyYW1UaW1lbGluZS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9QYXJhbVRpbWVsaW5lLmgKQEAgLTUyLDcgKzUyLDcg
QEAgcHVibGljOgogCiAgICAgLy8gaGFzVmFsdWUgaXMgc2V0IHRvIHRydWUgaWYgYSB2YWxpZCB0
aW1lbGluZSB2YWx1ZSBpcyByZXR1cm5lZC4KICAgICAvLyBvdGhlcndpc2UgZGVmYXVsdFZhbHVl
IGlzIHJldHVybmVkLgotICAgIGZsb2F0IHZhbHVlRm9yQ29udGV4dFRpbWUoQXVkaW9Db250ZXh0
JiwgZmxvYXQgZGVmYXVsdFZhbHVlLCBib29sJiBoYXNWYWx1ZSk7CisgICAgZmxvYXQgdmFsdWVG
b3JDb250ZXh0VGltZShBdWRpb0NvbnRleHRCYXNlJiwgZmxvYXQgZGVmYXVsdFZhbHVlLCBib29s
JiBoYXNWYWx1ZSk7CiAKICAgICAvLyBHaXZlbiB0aGUgdGltZSByYW5nZSwgY2FsY3VsYXRlcyBw
YXJhbWV0ZXIgdmFsdWVzIGludG8gdGhlIHZhbHVlcyBidWZmZXIKICAgICAvLyBhbmQgcmV0dXJu
cyB0aGUgbGFzdCBwYXJhbWV0ZXIgdmFsdWUgY2FsY3VsYXRlZCBmb3IgInZhbHVlcyIgb3IgdGhl
IGRlZmF1bHRWYWx1ZSBpZiBub25lIHdlcmUgY2FsY3VsYXRlZC4KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9TY2hlZHVsZWRTb3VyY2VOb2RlLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9TY2hlZHVsZWRTb3VyY2VOb2Rl
LmNwcAppbmRleCAwZjcyNjc2ZmM3NDNjNGNlMjQxYWVlM2M5MGQwMjhmNmE5NTI3MDIzLi43YzI4
MjM3YTBiZDAzNWU0YzNhYjdiYTUxMzc1MzNiZDkxNWE3ZTYxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvU2NoZWR1bGVkU291cmNlTm9kZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1NjaGVkdWxlZFNvdXJjZU5v
ZGUuY3BwCkBAIC00OSw3ICs0OSw3IEBAIFdURl9NQUtFX0lTT19BTExPQ0FURURfSU1QTChBdWRp
b1NjaGVkdWxlZFNvdXJjZU5vZGUpOwogCiBjb25zdCBkb3VibGUgQXVkaW9TY2hlZHVsZWRTb3Vy
Y2VOb2RlOjpVbmtub3duVGltZSA9IC0xOwogCi1BdWRpb1NjaGVkdWxlZFNvdXJjZU5vZGU6OkF1
ZGlvU2NoZWR1bGVkU291cmNlTm9kZShBdWRpb0NvbnRleHQmIGNvbnRleHQsIGZsb2F0IHNhbXBs
ZVJhdGUpCitBdWRpb1NjaGVkdWxlZFNvdXJjZU5vZGU6OkF1ZGlvU2NoZWR1bGVkU291cmNlTm9k
ZShBdWRpb0NvbnRleHRCYXNlJiBjb250ZXh0LCBmbG9hdCBzYW1wbGVSYXRlKQogICAgIDogQXVk
aW9Ob2RlKGNvbnRleHQsIHNhbXBsZVJhdGUpCiAgICAgLCBBY3RpdmVET01PYmplY3QoY29udGV4
dC5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpCiAgICAgLCBtX2VuZFRpbWUoVW5rbm93blRpbWUp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvU2NoZWR1
bGVkU291cmNlTm9kZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1Nj
aGVkdWxlZFNvdXJjZU5vZGUuaAppbmRleCA4Y2FkYmUxMGFmZDNhNGQ3ZWNlMjAyMjAyNDQzODdm
NGNlMTRjMmU0Li5iNGQ5NTg4MGMxZGYzNjZmODIxZTFhYmZjZmNhNzdkNzYxMTBlYTNmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvU2NoZWR1bGVkU291
cmNlTm9kZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9TY2hl
ZHVsZWRTb3VyY2VOb2RlLmgKQEAgLTUzLDcgKzUzLDcgQEAgcHVibGljOgogICAgICAgICBGSU5J
U0hFRF9TVEFURSA9IDMKICAgICB9OwogICAgIAotICAgIEF1ZGlvU2NoZWR1bGVkU291cmNlTm9k
ZShBdWRpb0NvbnRleHQmLCBmbG9hdCBzYW1wbGVSYXRlKTsKKyAgICBBdWRpb1NjaGVkdWxlZFNv
dXJjZU5vZGUoQXVkaW9Db250ZXh0QmFzZSYsIGZsb2F0IHNhbXBsZVJhdGUpOwogCiAgICAgRXhj
ZXB0aW9uT3I8dm9pZD4gc3RhcnRMYXRlcihkb3VibGUgd2hlbik7CiAgICAgRXhjZXB0aW9uT3I8
dm9pZD4gc3RvcExhdGVyKGRvdWJsZSB3aGVuKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViYXVkaW8vQXVkaW9TdW1taW5nSnVuY3Rpb24uY3BwIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1N1bW1pbmdKdW5jdGlvbi5jcHAKaW5kZXggZWU2MDBh
NjI5YTFiODY5Y2Q5YTViM2QzNzJhZTQ3NmEzZTEyN2ZiMC4uZGQ2NGZkM2VhODEzMTFmMDBlMDhj
M2NhNDFkNzQyOGYxZjFmMzg3OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJhdWRpby9BdWRpb1N1bW1pbmdKdW5jdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJhdWRpby9BdWRpb1N1bW1pbmdKdW5jdGlvbi5jcHAKQEAgLTM0LDcgKzM0LDcgQEAK
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1BdWRpb1N1bW1pbmdKdW5jdGlvbjo6QXVkaW9TdW1t
aW5nSnVuY3Rpb24oQXVkaW9Db250ZXh0JiBjb250ZXh0KQorQXVkaW9TdW1taW5nSnVuY3Rpb246
OkF1ZGlvU3VtbWluZ0p1bmN0aW9uKEF1ZGlvQ29udGV4dEJhc2UmIGNvbnRleHQpCiAgICAgOiBt
X2NvbnRleHQoY29udGV4dCkKICAgICAsIG1fcmVuZGVyaW5nU3RhdGVOZWVkVXBkYXRpbmcoZmFs
c2UpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlv
U3VtbWluZ0p1bmN0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlv
U3VtbWluZ0p1bmN0aW9uLmgKaW5kZXggYzk0ZmY2ZDZhNWFlZDExMTAyMDhjNDc2NDM4M2Q3ZTU2
ZmQ4NDYzYi4uNGNiZjhhZTlmYjk1MWI3ODIwNzZiMGNiNTI2MTE2YzE5ZDRhZWM5YiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1N1bW1pbmdKdW5jdGlv
bi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9TdW1taW5nSnVu
Y3Rpb24uaApAQCAtMzAsMTggKzMwLDE4IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xh
c3MgQXVkaW9Db250ZXh0OworY2xhc3MgQXVkaW9Db250ZXh0QmFzZTsKIGNsYXNzIEF1ZGlvTm9k
ZU91dHB1dDsKIAogLy8gQW4gQXVkaW9TdW1taW5nSnVuY3Rpb24gcmVwcmVzZW50cyBhIHBvaW50
IHdoZXJlIHplcm8sIG9uZSwgb3IgbW9yZSBBdWRpb05vZGVPdXRwdXRzIGNvbm5lY3QuCiAKIGNs
YXNzIEF1ZGlvU3VtbWluZ0p1bmN0aW9uIHsKIHB1YmxpYzoKLSAgICBleHBsaWNpdCBBdWRpb1N1
bW1pbmdKdW5jdGlvbihBdWRpb0NvbnRleHQmKTsKKyAgICBleHBsaWNpdCBBdWRpb1N1bW1pbmdK
dW5jdGlvbihBdWRpb0NvbnRleHRCYXNlJik7CiAgICAgdmlydHVhbCB+QXVkaW9TdW1taW5nSnVu
Y3Rpb24oKTsKIAogICAgIC8vIENhbiBiZSBjYWxsZWQgZnJvbSBhbnkgdGhyZWFkLgotICAgIEF1
ZGlvQ29udGV4dCYgY29udGV4dCgpIHsgcmV0dXJuIG1fY29udGV4dC5nZXQoKTsgfQorICAgIEF1
ZGlvQ29udGV4dEJhc2UmIGNvbnRleHQoKSB7IHJldHVybiBtX2NvbnRleHQ7IH0KIAogICAgIC8v
IFRoaXMgbXVzdCBiZSBjYWxsZWQgd2hlbmV2ZXIgd2UgbW9kaWZ5IG1fb3V0cHV0cy4KICAgICB2
b2lkIGNoYW5nZWRPdXRwdXRzKCk7CkBAIC02MCw3ICs2MCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0
dWFsIHZvaWQgZGlkVXBkYXRlKCkgPSAwOwogCiBwcm90ZWN0ZWQ6Ci0gICAgUmVmPEF1ZGlvQ29u
dGV4dD4gbV9jb250ZXh0OworICAgIFJlZjxBdWRpb0NvbnRleHRCYXNlPiBtX2NvbnRleHQ7CiAK
ICAgICAvLyBtX291dHB1dHMgY29udGFpbnMgdGhlIEF1ZGlvTm9kZU91dHB1dHMgcmVwcmVzZW50
aW5nIGN1cnJlbnQgY29ubmVjdGlvbnMgd2hpY2ggYXJlIG5vdCBkaXNhYmxlZC4KICAgICAvLyBU
aGUgcmVuZGVyaW5nIGNvZGUgc2hvdWxkIG5ldmVyIHVzZSB0aGlzIGRpcmVjdGx5LCBidXQgaW5z
dGVhZCB1c2VzIG1fcmVuZGVyaW5nT3V0cHV0cy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViYXVkaW8vQmlxdWFkRmlsdGVyTm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmF1ZGlvL0JpcXVhZEZpbHRlck5vZGUuY3BwCmluZGV4IDRhODI1NWU2ZjBhZjA3
NjcxMzhlNDY4OThmOGI2MzZhYjJkNzU2ZTUuLmRkZTA3NzNkNDczZDI3MjJhNWI1M2RjODY5MDZk
MzkzNzBjYmZmNDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8v
QmlxdWFkRmlsdGVyTm9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRp
by9CaXF1YWRGaWx0ZXJOb2RlLmNwcApAQCAtMzMsNyArMzMsNyBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKIFdURl9NQUtFX0lTT19BTExPQ0FURURfSU1QTChCaXF1YWRGaWx0ZXJOb2RlKTsKIAot
QmlxdWFkRmlsdGVyTm9kZTo6QmlxdWFkRmlsdGVyTm9kZShBdWRpb0NvbnRleHQmIGNvbnRleHQs
IGZsb2F0IHNhbXBsZVJhdGUpCitCaXF1YWRGaWx0ZXJOb2RlOjpCaXF1YWRGaWx0ZXJOb2RlKEF1
ZGlvQ29udGV4dEJhc2UmIGNvbnRleHQsIGZsb2F0IHNhbXBsZVJhdGUpCiAgICAgOiBBdWRpb0Jh
c2ljUHJvY2Vzc29yTm9kZShjb250ZXh0LCBzYW1wbGVSYXRlKQogewogICAgIHNldE5vZGVUeXBl
KE5vZGVUeXBlQmlxdWFkRmlsdGVyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViYXVkaW8vQmlxdWFkRmlsdGVyTm9kZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJhdWRpby9CaXF1YWRGaWx0ZXJOb2RlLmgKaW5kZXggODA5NGQ5MWVhYjNiOTJiMTQ4YTg2MjQw
OTMyNmY2NWVkOWI5MDEzYy4uYWM4ZDk0N2ExMGY3YWU2YTMzZjAzYTJkMDk4NDBjOGU2YzFlNTRj
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9CaXF1YWRGaWx0
ZXJOb2RlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9CaXF1YWRGaWx0
ZXJOb2RlLmgKQEAgLTM0LDcgKzM0LDcgQEAgY2xhc3MgQXVkaW9QYXJhbTsKIGNsYXNzIEJpcXVh
ZEZpbHRlck5vZGUgZmluYWwgOiBwdWJsaWMgQXVkaW9CYXNpY1Byb2Nlc3Nvck5vZGUgewogICAg
IFdURl9NQUtFX0lTT19BTExPQ0FURUQoQmlxdWFkRmlsdGVyTm9kZSk7CiBwdWJsaWM6Ci0gICAg
c3RhdGljIFJlZjxCaXF1YWRGaWx0ZXJOb2RlPiBjcmVhdGUoQXVkaW9Db250ZXh0JiBjb250ZXh0
LCBmbG9hdCBzYW1wbGVSYXRlKQorICAgIHN0YXRpYyBSZWY8QmlxdWFkRmlsdGVyTm9kZT4gY3Jl
YXRlKEF1ZGlvQ29udGV4dEJhc2UmIGNvbnRleHQsIGZsb2F0IHNhbXBsZVJhdGUpCiAgICAgewog
ICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBCaXF1YWRGaWx0ZXJOb2RlKGNvbnRleHQsIHNh
bXBsZVJhdGUpKTsKICAgICB9CkBAIC01Miw3ICs1Miw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGdl
dEZyZXF1ZW5jeVJlc3BvbnNlKGNvbnN0IFJlZlB0cjxGbG9hdDMyQXJyYXk+JiBmcmVxdWVuY3lI
eiwgY29uc3QgUmVmUHRyPEZsb2F0MzJBcnJheT4mIG1hZ1Jlc3BvbnNlLCBjb25zdCBSZWZQdHI8
RmxvYXQzMkFycmF5PiYgcGhhc2VSZXNwb25zZSk7CiAKIHByaXZhdGU6Ci0gICAgQmlxdWFkRmls
dGVyTm9kZShBdWRpb0NvbnRleHQmLCBmbG9hdCBzYW1wbGVSYXRlKTsKKyAgICBCaXF1YWRGaWx0
ZXJOb2RlKEF1ZGlvQ29udGV4dEJhc2UmLCBmbG9hdCBzYW1wbGVSYXRlKTsKIAogICAgIEJpcXVh
ZFByb2Nlc3NvciogYmlxdWFkUHJvY2Vzc29yKCkgeyByZXR1cm4gc3RhdGljX2Nhc3Q8QmlxdWFk
UHJvY2Vzc29yKj4ocHJvY2Vzc29yKCkpOyB9CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJhdWRpby9CaXF1YWRQcm9jZXNzb3IuY3BwIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJhdWRpby9CaXF1YWRQcm9jZXNzb3IuY3BwCmluZGV4IGU4NGI5ODAzNTY3MGZi
MWRjYzMyNzA5NjYzZDJiMzkwNTUyZTY1ZWIuLjJmNjA2N2E3MmRjZWMzM2MzZjBkMGRlOWQ5N2U0
YjY5NzY5NjI2YTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8v
QmlxdWFkUHJvY2Vzc29yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlv
L0JpcXVhZFByb2Nlc3Nvci5jcHAKQEAgLTMyLDcgKzMyLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogICAgIAotQmlxdWFkUHJvY2Vzc29yOjpCaXF1YWRQcm9jZXNzb3IoQXVkaW9Db250ZXh0
JiBjb250ZXh0LCBmbG9hdCBzYW1wbGVSYXRlLCBzaXplX3QgbnVtYmVyT2ZDaGFubmVscywgYm9v
bCBhdXRvSW5pdGlhbGl6ZSkKK0JpcXVhZFByb2Nlc3Nvcjo6QmlxdWFkUHJvY2Vzc29yKEF1ZGlv
Q29udGV4dEJhc2UmIGNvbnRleHQsIGZsb2F0IHNhbXBsZVJhdGUsIHNpemVfdCBudW1iZXJPZkNo
YW5uZWxzLCBib29sIGF1dG9Jbml0aWFsaXplKQogICAgIDogQXVkaW9EU1BLZXJuZWxQcm9jZXNz
b3Ioc2FtcGxlUmF0ZSwgbnVtYmVyT2ZDaGFubmVscykKICAgICAsIG1fdHlwZShCaXF1YWRGaWx0
ZXJUeXBlOjpMb3dwYXNzKQogICAgICwgbV9wYXJhbWV0ZXIxKDApCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0JpcXVhZFByb2Nlc3Nvci5oIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJhdWRpby9CaXF1YWRQcm9jZXNzb3IuaAppbmRleCBhZGJlZWM0MzAy
NWFmMDNhZjE3ZTExNTFhYmJlZmZlZWVlNzdmNjMyLi5kYzMwNmFiNTE3YjMyNGJiMWNjNTZhMjg4
ZDBlNDlmMWE4ZTRlOTA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1
ZGlvL0JpcXVhZFByb2Nlc3Nvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVk
aW8vQmlxdWFkUHJvY2Vzc29yLmgKQEAgLTUwLDcgKzUwLDcgQEAgZW51bSBjbGFzcyBCaXF1YWRG
aWx0ZXJUeXBlIHsKIGNsYXNzIEJpcXVhZFByb2Nlc3NvciBmaW5hbCA6IHB1YmxpYyBBdWRpb0RT
UEtlcm5lbFByb2Nlc3NvciB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6
Ci0gICAgQmlxdWFkUHJvY2Vzc29yKEF1ZGlvQ29udGV4dCYsIGZsb2F0IHNhbXBsZVJhdGUsIHNp
emVfdCBudW1iZXJPZkNoYW5uZWxzLCBib29sIGF1dG9Jbml0aWFsaXplKTsKKyAgICBCaXF1YWRQ
cm9jZXNzb3IoQXVkaW9Db250ZXh0QmFzZSYsIGZsb2F0IHNhbXBsZVJhdGUsIHNpemVfdCBudW1i
ZXJPZkNoYW5uZWxzLCBib29sIGF1dG9Jbml0aWFsaXplKTsKIAogICAgIHZpcnR1YWwgfkJpcXVh
ZFByb2Nlc3NvcigpOwogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJhdWRpby9DaGFubmVsTWVyZ2VyTm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmF1ZGlvL0NoYW5uZWxNZXJnZXJOb2RlLmNwcAppbmRleCBkZjUwZjI2ODczNjhhYTVjMzI5NTQx
NDgxNTA3NzdhMDI5MTczMmQ4Li5kZTI4YWVhN2QyYzQzNDI4OTZiMTA0YmE4OTQxZmRlYjc5OGFk
YzNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0NoYW5uZWxN
ZXJnZXJOb2RlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0NoYW5u
ZWxNZXJnZXJOb2RlLmNwcApAQCAtNDMsNyArNDMsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
IFdURl9NQUtFX0lTT19BTExPQ0FURURfSU1QTChDaGFubmVsTWVyZ2VyTm9kZSk7CiAKLVJlZlB0
cjxDaGFubmVsTWVyZ2VyTm9kZT4gQ2hhbm5lbE1lcmdlck5vZGU6OmNyZWF0ZShBdWRpb0NvbnRl
eHQmIGNvbnRleHQsIGZsb2F0IHNhbXBsZVJhdGUsIHVuc2lnbmVkIG51bWJlck9mSW5wdXRzKQor
UmVmUHRyPENoYW5uZWxNZXJnZXJOb2RlPiBDaGFubmVsTWVyZ2VyTm9kZTo6Y3JlYXRlKEF1ZGlv
Q29udGV4dEJhc2UmIGNvbnRleHQsIGZsb2F0IHNhbXBsZVJhdGUsIHVuc2lnbmVkIG51bWJlck9m
SW5wdXRzKQogewogICAgIGlmICghbnVtYmVyT2ZJbnB1dHMgfHwgbnVtYmVyT2ZJbnB1dHMgPiBB
dWRpb0NvbnRleHQ6Om1heE51bWJlck9mQ2hhbm5lbHMoKSkKICAgICAgICAgcmV0dXJuIG51bGxw
dHI7CkBAIC01MSw3ICs1MSw3IEBAIFJlZlB0cjxDaGFubmVsTWVyZ2VyTm9kZT4gQ2hhbm5lbE1l
cmdlck5vZGU6OmNyZWF0ZShBdWRpb0NvbnRleHQmIGNvbnRleHQsIGZsb2F0CiAgICAgcmV0dXJu
IGFkb3B0UmVmKCpuZXcgQ2hhbm5lbE1lcmdlck5vZGUoY29udGV4dCwgc2FtcGxlUmF0ZSwgbnVt
YmVyT2ZJbnB1dHMpKTsgICAgICAKIH0KIAotQ2hhbm5lbE1lcmdlck5vZGU6OkNoYW5uZWxNZXJn
ZXJOb2RlKEF1ZGlvQ29udGV4dCYgY29udGV4dCwgZmxvYXQgc2FtcGxlUmF0ZSwgdW5zaWduZWQg
bnVtYmVyT2ZJbnB1dHMpCitDaGFubmVsTWVyZ2VyTm9kZTo6Q2hhbm5lbE1lcmdlck5vZGUoQXVk
aW9Db250ZXh0QmFzZSYgY29udGV4dCwgZmxvYXQgc2FtcGxlUmF0ZSwgdW5zaWduZWQgbnVtYmVy
T2ZJbnB1dHMpCiAgICAgOiBBdWRpb05vZGUoY29udGV4dCwgc2FtcGxlUmF0ZSkKICAgICAsIG1f
ZGVzaXJlZE51bWJlck9mT3V0cHV0Q2hhbm5lbHMoRGVmYXVsdE51bWJlck9mT3V0cHV0Q2hhbm5l
bHMpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0NoYW5u
ZWxNZXJnZXJOb2RlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0NoYW5uZWxN
ZXJnZXJOb2RlLmgKaW5kZXggNjY2MzZlZWQ2ZjdlZTg1NTFlOTJjYzg3N2EwNGM1Y2MzZTVmZGYx
ZC4uNjI5NzZlMDUwNzM0MWZmOTI2NjBhNmFmMGRiNThhZWJhNTU3NjgxYSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9DaGFubmVsTWVyZ2VyTm9kZS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQ2hhbm5lbE1lcmdlck5vZGUuaApAQCAt
MzcsNyArMzcsNyBAQCBjbGFzcyBBdWRpb0NvbnRleHQ7CiBjbGFzcyBDaGFubmVsTWVyZ2VyTm9k
ZSBmaW5hbCA6IHB1YmxpYyBBdWRpb05vZGUgewogICAgIFdURl9NQUtFX0lTT19BTExPQ0FURUQo
Q2hhbm5lbE1lcmdlck5vZGUpOwogcHVibGljOgotICAgIHN0YXRpYyBSZWZQdHI8Q2hhbm5lbE1l
cmdlck5vZGU+IGNyZWF0ZShBdWRpb0NvbnRleHQmLCBmbG9hdCBzYW1wbGVSYXRlLCB1bnNpZ25l
ZCBudW1iZXJPZklucHV0cyk7CisgICAgc3RhdGljIFJlZlB0cjxDaGFubmVsTWVyZ2VyTm9kZT4g
Y3JlYXRlKEF1ZGlvQ29udGV4dEJhc2UmLCBmbG9hdCBzYW1wbGVSYXRlLCB1bnNpZ25lZCBudW1i
ZXJPZklucHV0cyk7CiAKICAgICAvLyBBdWRpb05vZGUKICAgICB2b2lkIHByb2Nlc3Moc2l6ZV90
IGZyYW1lc1RvUHJvY2Vzcykgb3ZlcnJpZGU7CkBAIC01Miw3ICs1Miw3IEBAIHByaXZhdGU6CiAg
ICAgZG91YmxlIHRhaWxUaW1lKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gMDsgfQogICAgIGRv
dWJsZSBsYXRlbmN5VGltZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIDA7IH0KIAotICAgIENo
YW5uZWxNZXJnZXJOb2RlKEF1ZGlvQ29udGV4dCYsIGZsb2F0IHNhbXBsZVJhdGUsIHVuc2lnbmVk
IG51bWJlck9mSW5wdXRzKTsKKyAgICBDaGFubmVsTWVyZ2VyTm9kZShBdWRpb0NvbnRleHRCYXNl
JiwgZmxvYXQgc2FtcGxlUmF0ZSwgdW5zaWduZWQgbnVtYmVyT2ZJbnB1dHMpOwogfTsKIAogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJhdWRpby9DaGFubmVsU3BsaXR0ZXJOb2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViYXVkaW8vQ2hhbm5lbFNwbGl0dGVyTm9kZS5jcHAKaW5kZXggODJmNjlhMDRmOTk5MjYxZDU4
YzE1MmJmYzYwMmEzNjYwOTYwOTFiOS4uZjU1NTNkMGM4MzVhMzkyZDNjZWVkZTkyZWU1ZjhiOGM5
MjhmOWRiMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9DaGFu
bmVsU3BsaXR0ZXJOb2RlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlv
L0NoYW5uZWxTcGxpdHRlck5vZGUuY3BwCkBAIC0zNyw3ICszNyw3IEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAogV1RGX01BS0VfSVNPX0FMTE9DQVRFRF9JTVBMKENoYW5uZWxTcGxpdHRlck5vZGUp
OwogICAgIAotUmVmUHRyPENoYW5uZWxTcGxpdHRlck5vZGU+IENoYW5uZWxTcGxpdHRlck5vZGU6
OmNyZWF0ZShBdWRpb0NvbnRleHQmIGNvbnRleHQsIGZsb2F0IHNhbXBsZVJhdGUsIHVuc2lnbmVk
IG51bWJlck9mT3V0cHV0cykKK1JlZlB0cjxDaGFubmVsU3BsaXR0ZXJOb2RlPiBDaGFubmVsU3Bs
aXR0ZXJOb2RlOjpjcmVhdGUoQXVkaW9Db250ZXh0QmFzZSYgY29udGV4dCwgZmxvYXQgc2FtcGxl
UmF0ZSwgdW5zaWduZWQgbnVtYmVyT2ZPdXRwdXRzKQogewogICAgIGlmICghbnVtYmVyT2ZPdXRw
dXRzIHx8IG51bWJlck9mT3V0cHV0cyA+IEF1ZGlvQ29udGV4dDo6bWF4TnVtYmVyT2ZDaGFubmVs
cygpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTQ1LDcgKzQ1LDcgQEAgUmVmUHRyPENo
YW5uZWxTcGxpdHRlck5vZGU+IENoYW5uZWxTcGxpdHRlck5vZGU6OmNyZWF0ZShBdWRpb0NvbnRl
eHQmIGNvbnRleHQsIGYKICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBDaGFubmVsU3BsaXR0ZXJO
b2RlKGNvbnRleHQsIHNhbXBsZVJhdGUsIG51bWJlck9mT3V0cHV0cykpOyAgICAgIAogfQogCi1D
aGFubmVsU3BsaXR0ZXJOb2RlOjpDaGFubmVsU3BsaXR0ZXJOb2RlKEF1ZGlvQ29udGV4dCYgY29u
dGV4dCwgZmxvYXQgc2FtcGxlUmF0ZSwgdW5zaWduZWQgbnVtYmVyT2ZPdXRwdXRzKQorQ2hhbm5l
bFNwbGl0dGVyTm9kZTo6Q2hhbm5lbFNwbGl0dGVyTm9kZShBdWRpb0NvbnRleHRCYXNlJiBjb250
ZXh0LCBmbG9hdCBzYW1wbGVSYXRlLCB1bnNpZ25lZCBudW1iZXJPZk91dHB1dHMpCiAgICAgOiBB
dWRpb05vZGUoY29udGV4dCwgc2FtcGxlUmF0ZSkKIHsKICAgICBzZXROb2RlVHlwZShOb2RlVHlw
ZUNoYW5uZWxTcGxpdHRlcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmF1ZGlvL0NoYW5uZWxTcGxpdHRlck5vZGUuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
YXVkaW8vQ2hhbm5lbFNwbGl0dGVyTm9kZS5oCmluZGV4IDhkOTgzMjgxMjM3ZGQxZDBmY2YxNDcw
YTM4YjAwM2ZlNDI2NmI1MWUuLjEzZDhkOTgwZGFhNzczMzA0ZjE2OTA1ZTk1NDhhNDIwYWUzZWU0
NWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQ2hhbm5lbFNw
bGl0dGVyTm9kZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQ2hhbm5l
bFNwbGl0dGVyTm9kZS5oCkBAIC0zMyw3ICszMyw3IEBAIGNsYXNzIEF1ZGlvQ29udGV4dDsKIGNs
YXNzIENoYW5uZWxTcGxpdHRlck5vZGUgZmluYWwgOiBwdWJsaWMgQXVkaW9Ob2RlIHsKICAgICBX
VEZfTUFLRV9JU09fQUxMT0NBVEVEKENoYW5uZWxTcGxpdHRlck5vZGUpOwogcHVibGljOgotICAg
IHN0YXRpYyBSZWZQdHI8Q2hhbm5lbFNwbGl0dGVyTm9kZT4gY3JlYXRlKEF1ZGlvQ29udGV4dCYs
IGZsb2F0IHNhbXBsZVJhdGUsIHVuc2lnbmVkIG51bWJlck9mT3V0cHV0cyk7CisgICAgc3RhdGlj
IFJlZlB0cjxDaGFubmVsU3BsaXR0ZXJOb2RlPiBjcmVhdGUoQXVkaW9Db250ZXh0QmFzZSYsIGZs
b2F0IHNhbXBsZVJhdGUsIHVuc2lnbmVkIG51bWJlck9mT3V0cHV0cyk7CiAKICAgICAvLyBBdWRp
b05vZGUKICAgICB2b2lkIHByb2Nlc3Moc2l6ZV90IGZyYW1lc1RvUHJvY2Vzcykgb3ZlcnJpZGU7
CkBAIC00Myw3ICs0Myw3IEBAIHByaXZhdGU6CiAgICAgZG91YmxlIHRhaWxUaW1lKCkgY29uc3Qg
b3ZlcnJpZGUgeyByZXR1cm4gMDsgfQogICAgIGRvdWJsZSBsYXRlbmN5VGltZSgpIGNvbnN0IG92
ZXJyaWRlIHsgcmV0dXJuIDA7IH0KIAotICAgIENoYW5uZWxTcGxpdHRlck5vZGUoQXVkaW9Db250
ZXh0JiwgZmxvYXQgc2FtcGxlUmF0ZSwgdW5zaWduZWQgbnVtYmVyT2ZPdXRwdXRzKTsKKyAgICBD
aGFubmVsU3BsaXR0ZXJOb2RlKEF1ZGlvQ29udGV4dEJhc2UmLCBmbG9hdCBzYW1wbGVSYXRlLCB1
bnNpZ25lZCBudW1iZXJPZk91dHB1dHMpOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9Db252b2x2ZXJOb2Rl
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQ29udm9sdmVyTm9kZS5jcHAK
aW5kZXggY2M5NzJmMTBkYmQ3YWJmZjczZjc5M2NmYWNjN2M0MDA4YTcyMzQ0Ny4uZTFmNWViODE1
NjBlYzJlOTJiODM1ODM2Yzg0YjE4MTk0MzNhZmE0ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJhdWRpby9Db252b2x2ZXJOb2RlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmF1ZGlvL0NvbnZvbHZlck5vZGUuY3BwCkBAIC00Nyw3ICs0Nyw3IEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAogV1RGX01BS0VfSVNPX0FMTE9DQVRFRF9JTVBMKENvbnZvbHZl
ck5vZGUpOwogCi1Db252b2x2ZXJOb2RlOjpDb252b2x2ZXJOb2RlKEF1ZGlvQ29udGV4dCYgY29u
dGV4dCwgZmxvYXQgc2FtcGxlUmF0ZSkKK0NvbnZvbHZlck5vZGU6OkNvbnZvbHZlck5vZGUoQXVk
aW9Db250ZXh0QmFzZSYgY29udGV4dCwgZmxvYXQgc2FtcGxlUmF0ZSkKICAgICA6IEF1ZGlvTm9k
ZShjb250ZXh0LCBzYW1wbGVSYXRlKQogewogICAgIHNldE5vZGVUeXBlKE5vZGVUeXBlQ29udm9s
dmVyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQ29udm9s
dmVyTm9kZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9Db252b2x2ZXJOb2Rl
LmgKaW5kZXggNjRiZmViZWQyZDg3ZTc0YzMzYWRmYWM5MzQ5ZDFiOTI2ZTBmNjZjMy4uMzFjZWMx
ZWNjN2YwZTAwNDVlZmE3NGZiZWYzNjA2OGRkYmIxZmRmYyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJhdWRpby9Db252b2x2ZXJOb2RlLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJhdWRpby9Db252b2x2ZXJOb2RlLmgKQEAgLTM1LDcgKzM1LDcgQEAgY2xh
c3MgUmV2ZXJiOwogY2xhc3MgQ29udm9sdmVyTm9kZSBmaW5hbCA6IHB1YmxpYyBBdWRpb05vZGUg
ewogICAgIFdURl9NQUtFX0lTT19BTExPQ0FURUQoQ29udm9sdmVyTm9kZSk7CiBwdWJsaWM6Ci0g
ICAgc3RhdGljIFJlZjxDb252b2x2ZXJOb2RlPiBjcmVhdGUoQXVkaW9Db250ZXh0JiBjb250ZXh0
LCBmbG9hdCBzYW1wbGVSYXRlKQorICAgIHN0YXRpYyBSZWY8Q29udm9sdmVyTm9kZT4gY3JlYXRl
KEF1ZGlvQ29udGV4dEJhc2UmIGNvbnRleHQsIGZsb2F0IHNhbXBsZVJhdGUpCiAgICAgewogICAg
ICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBDb252b2x2ZXJOb2RlKGNvbnRleHQsIHNhbXBsZVJh
dGUpKTsKICAgICB9CkBAIC00OSw3ICs0OSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldE5vcm1h
bGl6ZShib29sIG5vcm1hbGl6ZSkgeyBtX25vcm1hbGl6ZSA9IG5vcm1hbGl6ZTsgfQogCiBwcml2
YXRlOgotICAgIENvbnZvbHZlck5vZGUoQXVkaW9Db250ZXh0JiwgZmxvYXQgc2FtcGxlUmF0ZSk7
CisgICAgQ29udm9sdmVyTm9kZShBdWRpb0NvbnRleHRCYXNlJiwgZmxvYXQgc2FtcGxlUmF0ZSk7
CiAKICAgICBkb3VibGUgdGFpbFRpbWUoKSBjb25zdCBmaW5hbDsKICAgICBkb3VibGUgbGF0ZW5j
eVRpbWUoKSBjb25zdCBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViYXVkaW8vRGVmYXVsdEF1ZGlvRGVzdGluYXRpb25Ob2RlLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViYXVkaW8vRGVmYXVsdEF1ZGlvRGVzdGluYXRpb25Ob2RlLmNwcAppbmRleCAx
NzU5YWU0YTVhNjM1YmMwNThlMzBjMzY1YzEzNDRmYmIzOTc5ZTE1Li4wN2ViOWE0MWI1Y2M4ZTgz
OTA5YWU0YjZlNjM0ZTNjYTliZjUzN2VhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmF1ZGlvL0RlZmF1bHRBdWRpb0Rlc3RpbmF0aW9uTm9kZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9EZWZhdWx0QXVkaW9EZXN0aW5hdGlvbk5vZGUuY3Bw
CkBAIC00Myw3ICs0Myw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogV1RGX01BS0VfSVNPX0FM
TE9DQVRFRF9JTVBMKERlZmF1bHRBdWRpb0Rlc3RpbmF0aW9uTm9kZSk7CiAgICAgCi1EZWZhdWx0
QXVkaW9EZXN0aW5hdGlvbk5vZGU6OkRlZmF1bHRBdWRpb0Rlc3RpbmF0aW9uTm9kZShBdWRpb0Nv
bnRleHQmIGNvbnRleHQpCitEZWZhdWx0QXVkaW9EZXN0aW5hdGlvbk5vZGU6OkRlZmF1bHRBdWRp
b0Rlc3RpbmF0aW9uTm9kZShBdWRpb0NvbnRleHRCYXNlJiBjb250ZXh0KQogICAgIDogQXVkaW9E
ZXN0aW5hdGlvbk5vZGUoY29udGV4dCwgQXVkaW9EZXN0aW5hdGlvbjo6aGFyZHdhcmVTYW1wbGVS
YXRlKCkpCiB7CiAgICAgLy8gTm9kZS1zcGVjaWZpYyBkZWZhdWx0IG1peGluZyBydWxlcy4KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vRGVmYXVsdEF1ZGlvRGVz
dGluYXRpb25Ob2RlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0RlZmF1bHRB
dWRpb0Rlc3RpbmF0aW9uTm9kZS5oCmluZGV4IDZmZDk1YzBmMzAxMTRjZGUzMmMyN2ZhMThhNjFh
ZTJjZGU1MTI4ZmMuLjk2YzgzN2M5OTM0ZWIwM2JmMDRiNGRlMzliYzQyZWZmZGZkZWU4ZTEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vRGVmYXVsdEF1ZGlvRGVz
dGluYXRpb25Ob2RlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9EZWZh
dWx0QXVkaW9EZXN0aW5hdGlvbk5vZGUuaApAQCAtMzMsNyArMzMsNyBAQCBjbGFzcyBBdWRpb0Rl
c3RpbmF0aW9uOwogY2xhc3MgRGVmYXVsdEF1ZGlvRGVzdGluYXRpb25Ob2RlIGZpbmFsIDogcHVi
bGljIEF1ZGlvRGVzdGluYXRpb25Ob2RlIHsKICAgICBXVEZfTUFLRV9JU09fQUxMT0NBVEVEKERl
ZmF1bHRBdWRpb0Rlc3RpbmF0aW9uTm9kZSk7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxEZWZh
dWx0QXVkaW9EZXN0aW5hdGlvbk5vZGU+IGNyZWF0ZShBdWRpb0NvbnRleHQmIGNvbnRleHQpCisg
ICAgc3RhdGljIFJlZjxEZWZhdWx0QXVkaW9EZXN0aW5hdGlvbk5vZGU+IGNyZWF0ZShBdWRpb0Nv
bnRleHRCYXNlJiBjb250ZXh0KQogICAgIHsKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcg
RGVmYXVsdEF1ZGlvRGVzdGluYXRpb25Ob2RlKGNvbnRleHQpKTsgICAgIAogICAgIH0KQEAgLTQx
LDcgKzQxLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgfkRlZmF1bHRBdWRpb0Rlc3RpbmF0aW9u
Tm9kZSgpOwogICAgIAogcHJpdmF0ZToKLSAgICBleHBsaWNpdCBEZWZhdWx0QXVkaW9EZXN0aW5h
dGlvbk5vZGUoQXVkaW9Db250ZXh0Jik7CisgICAgZXhwbGljaXQgRGVmYXVsdEF1ZGlvRGVzdGlu
YXRpb25Ob2RlKEF1ZGlvQ29udGV4dEJhc2UmKTsKICAgICB2b2lkIGNyZWF0ZURlc3RpbmF0aW9u
KCk7CiAKICAgICB2b2lkIGluaXRpYWxpemUoKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vRGVsYXlOb2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViYXVkaW8vRGVsYXlOb2RlLmNwcAppbmRleCA4MWJkN2QxOWIyN2U3NDFiNTBmNmY4
NGU1MWY3Y2UyNTU3ODAyYjkzLi40MDUyN2M4MWY5ZjViYzU2YmNmNGU3MGM1MTZjYmMxOWU1YmUx
ZThhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0RlbGF5Tm9k
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9EZWxheU5vZGUuY3Bw
CkBAIC0zNywxNCArMzcsMTQgQEAgV1RGX01BS0VfSVNPX0FMTE9DQVRFRF9JTVBMKERlbGF5Tm9k
ZSk7CiAKIGNvbnN0IGRvdWJsZSBtYXhpbXVtQWxsb3dlZERlbGF5VGltZSA9IDE4MDsKIAotaW5s
aW5lIERlbGF5Tm9kZTo6RGVsYXlOb2RlKEF1ZGlvQ29udGV4dCYgY29udGV4dCwgZmxvYXQgc2Ft
cGxlUmF0ZSwgZG91YmxlIG1heERlbGF5VGltZSkKK2lubGluZSBEZWxheU5vZGU6OkRlbGF5Tm9k
ZShBdWRpb0NvbnRleHRCYXNlJiBjb250ZXh0LCBmbG9hdCBzYW1wbGVSYXRlLCBkb3VibGUgbWF4
RGVsYXlUaW1lKQogICAgIDogQXVkaW9CYXNpY1Byb2Nlc3Nvck5vZGUoY29udGV4dCwgc2FtcGxl
UmF0ZSkKIHsKICAgICBzZXROb2RlVHlwZShOb2RlVHlwZURlbGF5KTsKICAgICBtX3Byb2Nlc3Nv
ciA9IG1ha2VVbmlxdWU8RGVsYXlQcm9jZXNzb3I+KGNvbnRleHQsIHNhbXBsZVJhdGUsIDEsIG1h
eERlbGF5VGltZSk7CiB9CiAKLUV4Y2VwdGlvbk9yPFJlZjxEZWxheU5vZGU+PiBEZWxheU5vZGU6
OmNyZWF0ZShBdWRpb0NvbnRleHQmIGNvbnRleHQsIGZsb2F0IHNhbXBsZVJhdGUsIGRvdWJsZSBt
YXhEZWxheVRpbWUpCitFeGNlcHRpb25PcjxSZWY8RGVsYXlOb2RlPj4gRGVsYXlOb2RlOjpjcmVh
dGUoQXVkaW9Db250ZXh0QmFzZSYgY29udGV4dCwgZmxvYXQgc2FtcGxlUmF0ZSwgZG91YmxlIG1h
eERlbGF5VGltZSkKIHsKICAgICBpZiAobWF4RGVsYXlUaW1lIDw9IDAgfHwgbWF4RGVsYXlUaW1l
ID49IG1heGltdW1BbGxvd2VkRGVsYXlUaW1lKQogICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsg
Tm90U3VwcG9ydGVkRXJyb3IgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViYXVkaW8vRGVsYXlOb2RlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0Rl
bGF5Tm9kZS5oCmluZGV4IGM5ZWNhZDlmOWZkYzUxYzQ3YzUyYzNjYjg2ODcwZmQ4NDExYjlmZmEu
LmI2YWZkZDBmOTMwNzE4YjQyMzIzMWYyZjZjZjkwMDU5OTE5OTcwMWIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vRGVsYXlOb2RlLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJhdWRpby9EZWxheU5vZGUuaApAQCAtMzEsMTIgKzMxLDEyIEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIERlbGF5Tm9kZSBmaW5hbCA6IHB1YmxpYyBBdWRpb0Jh
c2ljUHJvY2Vzc29yTm9kZSB7CiAgICAgV1RGX01BS0VfSVNPX0FMTE9DQVRFRChEZWxheU5vZGUp
OwogcHVibGljOgotICAgIHN0YXRpYyBFeGNlcHRpb25PcjxSZWY8RGVsYXlOb2RlPj4gY3JlYXRl
KEF1ZGlvQ29udGV4dCYsIGZsb2F0IHNhbXBsZVJhdGUsIGRvdWJsZSBtYXhEZWxheVRpbWUpOwor
ICAgIHN0YXRpYyBFeGNlcHRpb25PcjxSZWY8RGVsYXlOb2RlPj4gY3JlYXRlKEF1ZGlvQ29udGV4
dEJhc2UmLCBmbG9hdCBzYW1wbGVSYXRlLCBkb3VibGUgbWF4RGVsYXlUaW1lKTsKIAogICAgIEF1
ZGlvUGFyYW0qIGRlbGF5VGltZSgpOwogCiBwcml2YXRlOgotICAgIERlbGF5Tm9kZShBdWRpb0Nv
bnRleHQmLCBmbG9hdCBzYW1wbGVSYXRlLCBkb3VibGUgbWF4RGVsYXlUaW1lKTsKKyAgICBEZWxh
eU5vZGUoQXVkaW9Db250ZXh0QmFzZSYsIGZsb2F0IHNhbXBsZVJhdGUsIGRvdWJsZSBtYXhEZWxh
eVRpbWUpOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9EZWxheVByb2Nlc3Nvci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0RlbGF5UHJvY2Vzc29yLmNwcAppbmRleCAxMDM2NmVmNmVh
ZmI2YzQ0ZGIxOTEyNzFhOTk1ZDllNmQyYWNiYTY5Li5jYmJmZDlmYTJmYWE0Y2Y3ZWFlMDFiMzI2
YzQ2ZGNmNTg3YmZlM2M1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1
ZGlvL0RlbGF5UHJvY2Vzc29yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1
ZGlvL0RlbGF5UHJvY2Vzc29yLmNwcApAQCAtMzIsNyArMzIsNyBAQAogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKLURlbGF5UHJvY2Vzc29yOjpEZWxheVByb2Nlc3NvcihBdWRpb0NvbnRleHQmIGNv
bnRleHQsIGZsb2F0IHNhbXBsZVJhdGUsIHVuc2lnbmVkIG51bWJlck9mQ2hhbm5lbHMsIGRvdWJs
ZSBtYXhEZWxheVRpbWUpCitEZWxheVByb2Nlc3Nvcjo6RGVsYXlQcm9jZXNzb3IoQXVkaW9Db250
ZXh0QmFzZSYgY29udGV4dCwgZmxvYXQgc2FtcGxlUmF0ZSwgdW5zaWduZWQgbnVtYmVyT2ZDaGFu
bmVscywgZG91YmxlIG1heERlbGF5VGltZSkKICAgICA6IEF1ZGlvRFNQS2VybmVsUHJvY2Vzc29y
KHNhbXBsZVJhdGUsIG51bWJlck9mQ2hhbm5lbHMpCiAgICAgLCBtX21heERlbGF5VGltZShtYXhE
ZWxheVRpbWUpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlv
L0RlbGF5UHJvY2Vzc29yLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0RlbGF5
UHJvY2Vzc29yLmgKaW5kZXggODVkOWNjNmQ3ZmRlMTZjZWZkNzhkNDc5NDIxMGRkZDA4MjM0ZGYz
Zi4uY2JhYzc5ZWNmMGZlMzM5Y2YxMmY5M2Q0ZGIyNWFmMDUxNTJmY2VmZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9EZWxheVByb2Nlc3Nvci5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vRGVsYXlQcm9jZXNzb3IuaApAQCAtMzYsNyAr
MzYsNyBAQCBjbGFzcyBBdWRpb0RTUEtlcm5lbDsKIGNsYXNzIERlbGF5UHJvY2Vzc29yIGZpbmFs
IDogcHVibGljIEF1ZGlvRFNQS2VybmVsUHJvY2Vzc29yIHsKICAgICBXVEZfTUFLRV9GQVNUX0FM
TE9DQVRFRDsKIHB1YmxpYzoKLSAgICBEZWxheVByb2Nlc3NvcihBdWRpb0NvbnRleHQmLCBmbG9h
dCBzYW1wbGVSYXRlLCB1bnNpZ25lZCBudW1iZXJPZkNoYW5uZWxzLCBkb3VibGUgbWF4RGVsYXlU
aW1lKTsKKyAgICBEZWxheVByb2Nlc3NvcihBdWRpb0NvbnRleHRCYXNlJiwgZmxvYXQgc2FtcGxl
UmF0ZSwgdW5zaWduZWQgbnVtYmVyT2ZDaGFubmVscywgZG91YmxlIG1heERlbGF5VGltZSk7CiAg
ICAgdmlydHVhbCB+RGVsYXlQcm9jZXNzb3IoKTsKICAgICAKICAgICBzdGQ6OnVuaXF1ZV9wdHI8
QXVkaW9EU1BLZXJuZWw+IGNyZWF0ZUtlcm5lbCgpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9EaXN0YW5jZU1vZGVsVHlwZS5oIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9EaXN0YW5jZU1vZGVsVHlwZS5oCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LmRmZTEzMTgyY2MwYTQ0YmRkMDQ4MGI3MmFmZmQ3YjU1NzA4NTIzZGIKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0Rpc3RhbmNlTW9kZWxUeXBlLmgK
QEAgLTAsMCArMSwyNyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCwgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQg
QU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04KKyAqIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUworICogU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJE
aXN0YW5jZS5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9E
aXN0YW5jZU1vZGVsVHlwZS5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0Rp
c3RhbmNlTW9kZWxUeXBlLmlkbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mOGZmY2ZlZDIyYzhmOTYwZDA0ZjNlODVi
ZTNkYTU4YjcyMDczN2ZlCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJhdWRpby9EaXN0YW5jZU1vZGVsVHlwZS5pZGwKQEAgLTAsMCArMSwzMSBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxMCwgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuICBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElF
RAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OCisgKiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKKyAqIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKK1sKKyAgICBDb25kaXRpb25hbD1XRUJfQVVESU8sCitdIGVudW0gRGlzdGFuY2VNb2Rl
bFR5cGUgeworICAgICJsaW5lYXIiLAorICAgICJpbnZlcnNlIiwKKyAgICAiZXhwb25lbnRpYWwi
Cit9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9EeW5hbWlj
c0NvbXByZXNzb3JOb2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vRHlu
YW1pY3NDb21wcmVzc29yTm9kZS5jcHAKaW5kZXggMTQwOTZkOGYwYzU5NmE1Mjk3MTY2NmVmODI2
N2EwMjNmZGI0NGIyOS4uYzMzZDFkZTcyZGM5MWZlOGQ3NGU3NTQ3YTIzNTk5Y2EwMWZjNDg1YiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9EeW5hbWljc0NvbXBy
ZXNzb3JOb2RlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0R5bmFt
aWNzQ29tcHJlc3Nvck5vZGUuY3BwCkBAIC00MSw3ICs0MSw3IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAogV1RGX01BS0VfSVNPX0FMTE9DQVRFRF9JTVBMKER5bmFtaWNzQ29tcHJlc3Nvck5vZGUp
OwogCi1EeW5hbWljc0NvbXByZXNzb3JOb2RlOjpEeW5hbWljc0NvbXByZXNzb3JOb2RlKEF1ZGlv
Q29udGV4dCYgY29udGV4dCwgZmxvYXQgc2FtcGxlUmF0ZSkKK0R5bmFtaWNzQ29tcHJlc3Nvck5v
ZGU6OkR5bmFtaWNzQ29tcHJlc3Nvck5vZGUoQXVkaW9Db250ZXh0QmFzZSYgY29udGV4dCwgZmxv
YXQgc2FtcGxlUmF0ZSkKICAgICA6IEF1ZGlvTm9kZShjb250ZXh0LCBzYW1wbGVSYXRlKQogewog
ICAgIHNldE5vZGVUeXBlKE5vZGVUeXBlRHluYW1pY3NDb21wcmVzc29yKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vRHluYW1pY3NDb21wcmVzc29yTm9kZS5o
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9EeW5hbWljc0NvbXByZXNzb3JOb2Rl
LmgKaW5kZXggNDRjYmZiYWEwNTk3MTdmNmMzNTAzMjJhMjgwNGU1ZDg2M2E2Njg1Ny4uYjcwNTNi
MjIxNzNjMDJjYTBkMjZlY2U2MWExOGM3N2VlMDc1MmRmZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJhdWRpby9EeW5hbWljc0NvbXByZXNzb3JOb2RlLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9EeW5hbWljc0NvbXByZXNzb3JOb2RlLmgKQEAg
LTM1LDcgKzM1LDcgQEAgY2xhc3MgRHluYW1pY3NDb21wcmVzc29yOwogY2xhc3MgRHluYW1pY3ND
b21wcmVzc29yTm9kZSBmaW5hbCA6IHB1YmxpYyBBdWRpb05vZGUgewogICAgIFdURl9NQUtFX0lT
T19BTExPQ0FURUQoRHluYW1pY3NDb21wcmVzc29yTm9kZSk7CiBwdWJsaWM6Ci0gICAgc3RhdGlj
IFJlZjxEeW5hbWljc0NvbXByZXNzb3JOb2RlPiBjcmVhdGUoQXVkaW9Db250ZXh0JiBjb250ZXh0
LCBmbG9hdCBzYW1wbGVSYXRlKQorICAgIHN0YXRpYyBSZWY8RHluYW1pY3NDb21wcmVzc29yTm9k
ZT4gY3JlYXRlKEF1ZGlvQ29udGV4dEJhc2UmIGNvbnRleHQsIGZsb2F0IHNhbXBsZVJhdGUpCiAg
ICAgewogICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBEeW5hbWljc0NvbXByZXNzb3JOb2Rl
KGNvbnRleHQsIHNhbXBsZVJhdGUpKTsKICAgICB9CkBAIC02Miw3ICs2Miw3IEBAIHByaXZhdGU6
CiAgICAgZG91YmxlIHRhaWxUaW1lKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgZG91YmxlIGxhdGVu
Y3lUaW1lKCkgY29uc3Qgb3ZlcnJpZGU7CiAKLSAgICBEeW5hbWljc0NvbXByZXNzb3JOb2RlKEF1
ZGlvQ29udGV4dCYsIGZsb2F0IHNhbXBsZVJhdGUpOworICAgIER5bmFtaWNzQ29tcHJlc3Nvck5v
ZGUoQXVkaW9Db250ZXh0QmFzZSYsIGZsb2F0IHNhbXBsZVJhdGUpOwogCiAgICAgc3RkOjp1bmlx
dWVfcHRyPER5bmFtaWNzQ29tcHJlc3Nvcj4gbV9keW5hbWljc0NvbXByZXNzb3I7CiAgICAgUmVm
UHRyPEF1ZGlvUGFyYW0+IG1fdGhyZXNob2xkOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJhdWRpby9HYWluTm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmF1ZGlvL0dhaW5Ob2RlLmNwcAppbmRleCAyNTdkZjJlY2UyMzM4Y2JjYmFiOWVkMDUxMjMzYzY0
YjFjNTdmMjVkLi45ODRkMTE5NGJkZDU1MmYzODRiMGQ2ZDliY2ViZjdkYTQyZmQ4NjljIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0dhaW5Ob2RlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0dhaW5Ob2RlLmNwcApAQCAtMzcsNyAr
MzcsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFdURl9NQUtFX0lTT19BTExPQ0FURURfSU1Q
TChHYWluTm9kZSk7CiAKLUdhaW5Ob2RlOjpHYWluTm9kZShBdWRpb0NvbnRleHQmIGNvbnRleHQs
IGZsb2F0IHNhbXBsZVJhdGUpCitHYWluTm9kZTo6R2Fpbk5vZGUoQXVkaW9Db250ZXh0QmFzZSYg
Y29udGV4dCwgZmxvYXQgc2FtcGxlUmF0ZSkKICAgICA6IEF1ZGlvTm9kZShjb250ZXh0LCBzYW1w
bGVSYXRlKQogICAgICwgbV9sYXN0R2FpbigxLjApCiAgICAgLCBtX3NhbXBsZUFjY3VyYXRlR2Fp
blZhbHVlcyhBdWRpb05vZGU6OlByb2Nlc3NpbmdTaXplSW5GcmFtZXMpIC8vIEZJWE1FOiBjYW4g
cHJvYmFibHkgc2hhcmUgdGVtcCBidWZmZXIgaW4gY29udGV4dApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9HYWluTm9kZS5oIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJhdWRpby9HYWluTm9kZS5oCmluZGV4IGZhODViMGI5ZmY1NDdmMzI5ZjU2NjViMmEw
NTU3NzRiZTBmN2NhYjguLmRjZjg1NWE5MWM5NTdhOTAwMGJhZjhiOTk0MzZhZTc3Mzc5ZmJiNTAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vR2Fpbk5vZGUuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0dhaW5Ob2RlLmgKQEAgLTM4LDcg
KzM4LDcgQEAgY2xhc3MgQXVkaW9Db250ZXh0OwogY2xhc3MgR2Fpbk5vZGUgZmluYWwgOiBwdWJs
aWMgQXVkaW9Ob2RlIHsKICAgICBXVEZfTUFLRV9JU09fQUxMT0NBVEVEKEdhaW5Ob2RlKTsKIHB1
YmxpYzoKLSAgICBzdGF0aWMgUmVmPEdhaW5Ob2RlPiBjcmVhdGUoQXVkaW9Db250ZXh0JiBjb250
ZXh0LCBmbG9hdCBzYW1wbGVSYXRlKQorICAgIHN0YXRpYyBSZWY8R2Fpbk5vZGU+IGNyZWF0ZShB
dWRpb0NvbnRleHRCYXNlJiBjb250ZXh0LCBmbG9hdCBzYW1wbGVSYXRlKQogICAgIHsKICAgICAg
ICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgR2Fpbk5vZGUoY29udGV4dCwgc2FtcGxlUmF0ZSkpOwog
ICAgIH0KQEAgLTU3LDcgKzU3LDcgQEAgcHJpdmF0ZToKICAgICBkb3VibGUgdGFpbFRpbWUoKSBj
b25zdCBvdmVycmlkZSB7IHJldHVybiAwOyB9CiAgICAgZG91YmxlIGxhdGVuY3lUaW1lKCkgY29u
c3Qgb3ZlcnJpZGUgeyByZXR1cm4gMDsgfQogCi0gICAgR2Fpbk5vZGUoQXVkaW9Db250ZXh0Jiwg
ZmxvYXQgc2FtcGxlUmF0ZSk7CisgICAgR2Fpbk5vZGUoQXVkaW9Db250ZXh0QmFzZSYsIGZsb2F0
IHNhbXBsZVJhdGUpOwogCiAgICAgZmxvYXQgbV9sYXN0R2FpbjsgLy8gZm9yIGRlLXppcHBlcmlu
ZwogICAgIFJlZlB0cjxBdWRpb1BhcmFtPiBtX2dhaW47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmF1ZGlvL01lZGlhRWxlbWVudEF1ZGlvU291cmNlTm9kZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL01lZGlhRWxlbWVudEF1ZGlvU291cmNlTm9k
ZS5jcHAKaW5kZXggMGU1OTgxZmE2ODZkYjkyMTJmZmEwZjgzZTliZGNkMDNhZjlhYWFjMy4uYzY3
NWQ3ZGU3MTY4MzkyZTg3ZGY5ZjQzZGZhNjU5OTdiNTRmZjhmNCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9NZWRpYUVsZW1lbnRBdWRpb1NvdXJjZU5vZGUuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vTWVkaWFFbGVtZW50QXVkaW9T
b3VyY2VOb2RlLmNwcApAQCAtNDMsMTIgKzQzLDEyIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAog
V1RGX01BS0VfSVNPX0FMTE9DQVRFRF9JTVBMKE1lZGlhRWxlbWVudEF1ZGlvU291cmNlTm9kZSk7
CiAKLVJlZjxNZWRpYUVsZW1lbnRBdWRpb1NvdXJjZU5vZGU+IE1lZGlhRWxlbWVudEF1ZGlvU291
cmNlTm9kZTo6Y3JlYXRlKEF1ZGlvQ29udGV4dCYgY29udGV4dCwgSFRNTE1lZGlhRWxlbWVudCYg
bWVkaWFFbGVtZW50KQorUmVmPE1lZGlhRWxlbWVudEF1ZGlvU291cmNlTm9kZT4gTWVkaWFFbGVt
ZW50QXVkaW9Tb3VyY2VOb2RlOjpjcmVhdGUoQXVkaW9Db250ZXh0QmFzZSYgY29udGV4dCwgSFRN
TE1lZGlhRWxlbWVudCYgbWVkaWFFbGVtZW50KQogewogICAgIHJldHVybiBhZG9wdFJlZigqbmV3
IE1lZGlhRWxlbWVudEF1ZGlvU291cmNlTm9kZShjb250ZXh0LCBtZWRpYUVsZW1lbnQpKTsKIH0K
IAotTWVkaWFFbGVtZW50QXVkaW9Tb3VyY2VOb2RlOjpNZWRpYUVsZW1lbnRBdWRpb1NvdXJjZU5v
ZGUoQXVkaW9Db250ZXh0JiBjb250ZXh0LCBIVE1MTWVkaWFFbGVtZW50JiBtZWRpYUVsZW1lbnQp
CitNZWRpYUVsZW1lbnRBdWRpb1NvdXJjZU5vZGU6Ok1lZGlhRWxlbWVudEF1ZGlvU291cmNlTm9k
ZShBdWRpb0NvbnRleHRCYXNlJiBjb250ZXh0LCBIVE1MTWVkaWFFbGVtZW50JiBtZWRpYUVsZW1l
bnQpCiAgICAgOiBBdWRpb05vZGUoY29udGV4dCwgY29udGV4dC5zYW1wbGVSYXRlKCkpCiAgICAg
LCBtX21lZGlhRWxlbWVudChtZWRpYUVsZW1lbnQpCiAgICAgLCBtX3NvdXJjZU51bWJlck9mQ2hh
bm5lbHMoMCkKQEAgLTk3LDcgKzk3LDcgQEAgdm9pZCBNZWRpYUVsZW1lbnRBdWRpb1NvdXJjZU5v
ZGU6OnNldEZvcm1hdChzaXplX3QgbnVtYmVyT2ZDaGFubmVscywgZmxvYXQgc291cmMKIAogICAg
ICAgICB7CiAgICAgICAgICAgICAvLyBUaGUgY29udGV4dCBtdXN0IGJlIGxvY2tlZCB3aGVuIGNo
YW5naW5nIHRoZSBudW1iZXIgb2Ygb3V0cHV0IGNoYW5uZWxzLgotICAgICAgICAgICAgQXVkaW9D
b250ZXh0OjpBdXRvTG9ja2VyIGNvbnRleHRMb2NrZXIoY29udGV4dCgpKTsKKyAgICAgICAgICAg
IEF1ZGlvQ29udGV4dEJhc2U6OkF1dG9Mb2NrZXIgY29udGV4dExvY2tlcihjb250ZXh0KCkpOwog
CiAgICAgICAgICAgICAvLyBEbyBhbnkgbmVjZXNzc2FyeSByZS1jb25maWd1cmF0aW9uIHRvIHRo
ZSBvdXRwdXQncyBudW1iZXIgb2YgY2hhbm5lbHMuCiAgICAgICAgICAgICBvdXRwdXQoMCktPnNl
dE51bWJlck9mQ2hhbm5lbHMobnVtYmVyT2ZDaGFubmVscyk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL01lZGlhRWxlbWVudEF1ZGlvU291cmNlTm9kZS5oIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9NZWRpYUVsZW1lbnRBdWRpb1NvdXJjZU5v
ZGUuaAppbmRleCAzYTEzMTU0MTVmMThmOWIzNGFkY2U0MjRmMjZjMjYxMmQzYzQ4ZjU5Li43MWQw
ZWQxMzhhNWY5ZmQzNzMwNTAyMDU0MWVkNWQ0N2MzYWVjMGNjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL01lZGlhRWxlbWVudEF1ZGlvU291cmNlTm9kZS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vTWVkaWFFbGVtZW50QXVkaW9Tb3Vy
Y2VOb2RlLmgKQEAgLTQwLDcgKzQwLDcgQEAgY2xhc3MgQXVkaW9Db250ZXh0OwogY2xhc3MgTWVk
aWFFbGVtZW50QXVkaW9Tb3VyY2VOb2RlIGZpbmFsIDogcHVibGljIEF1ZGlvTm9kZSwgcHVibGlj
IEF1ZGlvU291cmNlUHJvdmlkZXJDbGllbnQgewogICAgIFdURl9NQUtFX0lTT19BTExPQ0FURUQo
TWVkaWFFbGVtZW50QXVkaW9Tb3VyY2VOb2RlKTsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPE1l
ZGlhRWxlbWVudEF1ZGlvU291cmNlTm9kZT4gY3JlYXRlKEF1ZGlvQ29udGV4dCYsIEhUTUxNZWRp
YUVsZW1lbnQmKTsKKyAgICBzdGF0aWMgUmVmPE1lZGlhRWxlbWVudEF1ZGlvU291cmNlTm9kZT4g
Y3JlYXRlKEF1ZGlvQ29udGV4dEJhc2UmLCBIVE1MTWVkaWFFbGVtZW50Jik7CiAKICAgICB2aXJ0
dWFsIH5NZWRpYUVsZW1lbnRBdWRpb1NvdXJjZU5vZGUoKTsKIApAQCAtNTcsNyArNTcsNyBAQCBw
dWJsaWM6CiAgICAgdm9pZCB1bmxvY2soKTsKIAogcHJpdmF0ZToKLSAgICBNZWRpYUVsZW1lbnRB
dWRpb1NvdXJjZU5vZGUoQXVkaW9Db250ZXh0JiwgSFRNTE1lZGlhRWxlbWVudCYpOworICAgIE1l
ZGlhRWxlbWVudEF1ZGlvU291cmNlTm9kZShBdWRpb0NvbnRleHRCYXNlJiwgSFRNTE1lZGlhRWxl
bWVudCYpOwogCiAgICAgZG91YmxlIHRhaWxUaW1lKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4g
MDsgfQogICAgIGRvdWJsZSBsYXRlbmN5VGltZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIDA7
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vTWVkaWFTdHJl
YW1BdWRpb0Rlc3RpbmF0aW9uTm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1
ZGlvL01lZGlhU3RyZWFtQXVkaW9EZXN0aW5hdGlvbk5vZGUuY3BwCmluZGV4IGQ3NjYyOTMwMzA4
YTc0NmE0NmFlMDA4NjhhNWQ2MzQxYjgyZmY3M2IuLjMwZjFhMjIyYmUyMzAwZTEyZGFlNzY2YmRl
ZTQyYjBiYjFjZjFlODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVk
aW8vTWVkaWFTdHJlYW1BdWRpb0Rlc3RpbmF0aW9uTm9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJhdWRpby9NZWRpYVN0cmVhbUF1ZGlvRGVzdGluYXRpb25Ob2RlLmNwcApA
QCAtMzksMTIgKzM5LDEyIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogV1RGX01BS0VfSVNPX0FM
TE9DQVRFRF9JTVBMKE1lZGlhU3RyZWFtQXVkaW9EZXN0aW5hdGlvbk5vZGUpOwogCi1SZWY8TWVk
aWFTdHJlYW1BdWRpb0Rlc3RpbmF0aW9uTm9kZT4gTWVkaWFTdHJlYW1BdWRpb0Rlc3RpbmF0aW9u
Tm9kZTo6Y3JlYXRlKEF1ZGlvQ29udGV4dCYgY29udGV4dCwgc2l6ZV90IG51bWJlck9mQ2hhbm5l
bHMpCitSZWY8TWVkaWFTdHJlYW1BdWRpb0Rlc3RpbmF0aW9uTm9kZT4gTWVkaWFTdHJlYW1BdWRp
b0Rlc3RpbmF0aW9uTm9kZTo6Y3JlYXRlKEF1ZGlvQ29udGV4dEJhc2UmIGNvbnRleHQsIHNpemVf
dCBudW1iZXJPZkNoYW5uZWxzKQogewogICAgIHJldHVybiBhZG9wdFJlZigqbmV3IE1lZGlhU3Ry
ZWFtQXVkaW9EZXN0aW5hdGlvbk5vZGUoY29udGV4dCwgbnVtYmVyT2ZDaGFubmVscykpOwogfQog
Ci1NZWRpYVN0cmVhbUF1ZGlvRGVzdGluYXRpb25Ob2RlOjpNZWRpYVN0cmVhbUF1ZGlvRGVzdGlu
YXRpb25Ob2RlKEF1ZGlvQ29udGV4dCYgY29udGV4dCwgc2l6ZV90IG51bWJlck9mQ2hhbm5lbHMp
CitNZWRpYVN0cmVhbUF1ZGlvRGVzdGluYXRpb25Ob2RlOjpNZWRpYVN0cmVhbUF1ZGlvRGVzdGlu
YXRpb25Ob2RlKEF1ZGlvQ29udGV4dEJhc2UmIGNvbnRleHQsIHNpemVfdCBudW1iZXJPZkNoYW5u
ZWxzKQogICAgIDogQXVkaW9CYXNpY0luc3BlY3Rvck5vZGUoY29udGV4dCwgY29udGV4dC5zYW1w
bGVSYXRlKCksIG51bWJlck9mQ2hhbm5lbHMpCiAgICAgLCBtX3NvdXJjZShNZWRpYVN0cmVhbUF1
ZGlvU291cmNlOjpjcmVhdGUoY29udGV4dC5zYW1wbGVSYXRlKCkpKQogICAgICwgbV9zdHJlYW0o
TWVkaWFTdHJlYW06OmNyZWF0ZSgqY29udGV4dC5kb2N1bWVudCgpLCBNZWRpYVN0cmVhbVByaXZh
dGU6OmNyZWF0ZShjb250ZXh0LmRvY3VtZW50KCktPmxvZ2dlcigpLCBtX3NvdXJjZS5jb3B5UmVm
KCkpKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vTWVkaWFT
dHJlYW1BdWRpb0Rlc3RpbmF0aW9uTm9kZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJh
dWRpby9NZWRpYVN0cmVhbUF1ZGlvRGVzdGluYXRpb25Ob2RlLmgKaW5kZXggZjVhN2U4ZmVjNGE5
MDJjOTBiZGNmOWM1YzdiNDY3Yzk4MGY5N2UzYS4uZGJhZDkyOGQ3OTZhMmQ4ZjQxMGY0MzZmYmUz
M2VmNzJhYTg0MTczYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRp
by9NZWRpYVN0cmVhbUF1ZGlvRGVzdGluYXRpb25Ob2RlLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJhdWRpby9NZWRpYVN0cmVhbUF1ZGlvRGVzdGluYXRpb25Ob2RlLmgKQEAgLTMy
LDEzICszMiwxMyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIEF1ZGlvQ29udGV4
dDsKK2NsYXNzIEF1ZGlvQ29udGV4dEJhc2U7CiBjbGFzcyBNZWRpYVN0cmVhbUF1ZGlvU291cmNl
OwogCiBjbGFzcyBNZWRpYVN0cmVhbUF1ZGlvRGVzdGluYXRpb25Ob2RlIGZpbmFsIDogcHVibGlj
IEF1ZGlvQmFzaWNJbnNwZWN0b3JOb2RlIHsKICAgICBXVEZfTUFLRV9JU09fQUxMT0NBVEVEKE1l
ZGlhU3RyZWFtQXVkaW9EZXN0aW5hdGlvbk5vZGUpOwogcHVibGljOgotICAgIHN0YXRpYyBSZWY8
TWVkaWFTdHJlYW1BdWRpb0Rlc3RpbmF0aW9uTm9kZT4gY3JlYXRlKEF1ZGlvQ29udGV4dCYsIHNp
emVfdCBudW1iZXJPZkNoYW5uZWxzKTsKKyAgICBzdGF0aWMgUmVmPE1lZGlhU3RyZWFtQXVkaW9E
ZXN0aW5hdGlvbk5vZGU+IGNyZWF0ZShBdWRpb0NvbnRleHRCYXNlJiwgc2l6ZV90IG51bWJlck9m
Q2hhbm5lbHMpOwogCiAgICAgdmlydHVhbCB+TWVkaWFTdHJlYW1BdWRpb0Rlc3RpbmF0aW9uTm9k
ZSgpOwogCkBAIC00OSw3ICs0OSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHJlc2V0KCkgZmluYWw7
CiAgICAgCiBwcml2YXRlOgotICAgIE1lZGlhU3RyZWFtQXVkaW9EZXN0aW5hdGlvbk5vZGUoQXVk
aW9Db250ZXh0Jiwgc2l6ZV90IG51bWJlck9mQ2hhbm5lbHMpOworICAgIE1lZGlhU3RyZWFtQXVk
aW9EZXN0aW5hdGlvbk5vZGUoQXVkaW9Db250ZXh0QmFzZSYsIHNpemVfdCBudW1iZXJPZkNoYW5u
ZWxzKTsKIAogICAgIGRvdWJsZSB0YWlsVGltZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIDA7IH0K
ICAgICBkb3VibGUgbGF0ZW5jeVRpbWUoKSBjb25zdCBmaW5hbCB7IHJldHVybiAwOyB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL01lZGlhU3RyZWFtQXVkaW9T
b3VyY2VOb2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vTWVkaWFTdHJl
YW1BdWRpb1NvdXJjZU5vZGUuY3BwCmluZGV4IDFiNGZiNmQxOTIyYWQxYzRiMDQxY2I5MTI5YzU1
YzEzODcwN2Y3Y2UuLjM1ZTU1YTkyMDJjM2YzMDU1YmYxODdiYWE2ZjY2ZmI2YmQ1MWY2OTAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vTWVkaWFTdHJlYW1BdWRp
b1NvdXJjZU5vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vTWVk
aWFTdHJlYW1BdWRpb1NvdXJjZU5vZGUuY3BwCkBAIC0zOCwxMiArMzgsMTIgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogCiBXVEZfTUFLRV9JU09fQUxMT0NBVEVEX0lNUEwoTWVkaWFTdHJlYW1BdWRp
b1NvdXJjZU5vZGUpOwogCi1SZWY8TWVkaWFTdHJlYW1BdWRpb1NvdXJjZU5vZGU+IE1lZGlhU3Ry
ZWFtQXVkaW9Tb3VyY2VOb2RlOjpjcmVhdGUoQXVkaW9Db250ZXh0JiBjb250ZXh0LCBNZWRpYVN0
cmVhbSYgbWVkaWFTdHJlYW0sIE1lZGlhU3RyZWFtVHJhY2smIGF1ZGlvVHJhY2spCitSZWY8TWVk
aWFTdHJlYW1BdWRpb1NvdXJjZU5vZGU+IE1lZGlhU3RyZWFtQXVkaW9Tb3VyY2VOb2RlOjpjcmVh
dGUoQXVkaW9Db250ZXh0QmFzZSYgY29udGV4dCwgTWVkaWFTdHJlYW0mIG1lZGlhU3RyZWFtLCBN
ZWRpYVN0cmVhbVRyYWNrJiBhdWRpb1RyYWNrKQogewogICAgIHJldHVybiBhZG9wdFJlZigqbmV3
IE1lZGlhU3RyZWFtQXVkaW9Tb3VyY2VOb2RlKGNvbnRleHQsIG1lZGlhU3RyZWFtLCBhdWRpb1Ry
YWNrKSk7CiB9CiAKLU1lZGlhU3RyZWFtQXVkaW9Tb3VyY2VOb2RlOjpNZWRpYVN0cmVhbUF1ZGlv
U291cmNlTm9kZShBdWRpb0NvbnRleHQmIGNvbnRleHQsIE1lZGlhU3RyZWFtJiBtZWRpYVN0cmVh
bSwgTWVkaWFTdHJlYW1UcmFjayYgYXVkaW9UcmFjaykKK01lZGlhU3RyZWFtQXVkaW9Tb3VyY2VO
b2RlOjpNZWRpYVN0cmVhbUF1ZGlvU291cmNlTm9kZShBdWRpb0NvbnRleHRCYXNlJiBjb250ZXh0
LCBNZWRpYVN0cmVhbSYgbWVkaWFTdHJlYW0sIE1lZGlhU3RyZWFtVHJhY2smIGF1ZGlvVHJhY2sp
CiAgICAgOiBBdWRpb05vZGUoY29udGV4dCwgY29udGV4dC5zYW1wbGVSYXRlKCkpCiAgICAgLCBt
X21lZGlhU3RyZWFtKG1lZGlhU3RyZWFtKQogICAgICwgbV9hdWRpb1RyYWNrKGF1ZGlvVHJhY2sp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL01lZGlhU3RyZWFt
QXVkaW9Tb3VyY2VOb2RlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL01lZGlh
U3RyZWFtQXVkaW9Tb3VyY2VOb2RlLmgKaW5kZXggZTNlZGVmZTFiZDU3MDJhNzNhMjJmNGE4Mzlk
MjNjZmMxOWMyOWEwNS4uYzcyZDMxMjIzM2Q1MDZkZDU0Y2UyNzBmYzkyMjdiNTQ1NzVlZTJlMyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9NZWRpYVN0cmVhbUF1
ZGlvU291cmNlTm9kZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vTWVk
aWFTdHJlYW1BdWRpb1NvdXJjZU5vZGUuaApAQCAtNDAsNyArNDAsNyBAQCBjbGFzcyBNdWx0aUNo
YW5uZWxSZXNhbXBsZXI7CiBjbGFzcyBNZWRpYVN0cmVhbUF1ZGlvU291cmNlTm9kZSBmaW5hbCA6
IHB1YmxpYyBBdWRpb05vZGUsIHB1YmxpYyBBdWRpb1NvdXJjZVByb3ZpZGVyQ2xpZW50IHsKICAg
ICBXVEZfTUFLRV9JU09fQUxMT0NBVEVEKE1lZGlhU3RyZWFtQXVkaW9Tb3VyY2VOb2RlKTsKIHB1
YmxpYzoKLSAgICBzdGF0aWMgUmVmPE1lZGlhU3RyZWFtQXVkaW9Tb3VyY2VOb2RlPiBjcmVhdGUo
QXVkaW9Db250ZXh0JiwgTWVkaWFTdHJlYW0mLCBNZWRpYVN0cmVhbVRyYWNrJik7CisgICAgc3Rh
dGljIFJlZjxNZWRpYVN0cmVhbUF1ZGlvU291cmNlTm9kZT4gY3JlYXRlKEF1ZGlvQ29udGV4dEJh
c2UmLCBNZWRpYVN0cmVhbSYsIE1lZGlhU3RyZWFtVHJhY2smKTsKIAogICAgIHZpcnR1YWwgfk1l
ZGlhU3RyZWFtQXVkaW9Tb3VyY2VOb2RlKCk7CiAKQEAgLTU0LDcgKzU0LDcgQEAgcHVibGljOgog
ICAgIHZvaWQgc2V0Rm9ybWF0KHNpemVfdCBudW1iZXJPZkNoYW5uZWxzLCBmbG9hdCBzYW1wbGVS
YXRlKSBvdmVycmlkZTsKIAogcHJpdmF0ZToKLSAgICBNZWRpYVN0cmVhbUF1ZGlvU291cmNlTm9k
ZShBdWRpb0NvbnRleHQmLCBNZWRpYVN0cmVhbSYsIE1lZGlhU3RyZWFtVHJhY2smKTsKKyAgICBN
ZWRpYVN0cmVhbUF1ZGlvU291cmNlTm9kZShBdWRpb0NvbnRleHRCYXNlJiwgTWVkaWFTdHJlYW0m
LCBNZWRpYVN0cmVhbVRyYWNrJik7CiAKICAgICBkb3VibGUgdGFpbFRpbWUoKSBjb25zdCBvdmVy
cmlkZSB7IHJldHVybiAwOyB9CiAgICAgZG91YmxlIGxhdGVuY3lUaW1lKCkgY29uc3Qgb3ZlcnJp
ZGUgeyByZXR1cm4gMDsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJh
dWRpby9PZmZsaW5lQXVkaW9Db250ZXh0LmlkbCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
YXVkaW8vT2ZmbGluZUF1ZGlvQ29udGV4dC5pZGwKaW5kZXggZjZlY2IxYTY4NTgxY2M5NDY2Nzlk
OTI0ZjhlM2UxNTRkMDM0M2FjNi4uMGU3MWEwNmJjM2ZhMmY4ZTg2Mjk5ZjNjMjQ1ODdlNmNiYTlj
NDExMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9PZmZsaW5l
QXVkaW9Db250ZXh0LmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL09m
ZmxpbmVBdWRpb0NvbnRleHQuaWRsCkBAIC0yNCw4ICsyNCw4IEBACiAKIFsKICAgICBDb25kaXRp
b25hbD1XRUJfQVVESU8sCisgICAgRW5hYmxlZEJ5U2V0dGluZz1Nb2Rlcm5VbnByZWZpeGVkV2Vi
QXVkaW8sCiAgICAgSlNHZW5lcmF0ZVRvSlNPYmplY3QsCi0gICAgSW50ZXJmYWNlTmFtZT13ZWJr
aXRPZmZsaW5lQXVkaW9Db250ZXh0CiBdIGludGVyZmFjZSBPZmZsaW5lQXVkaW9Db250ZXh0IDog
QXVkaW9Db250ZXh0IHsKICAgICBbQ2FsbFdpdGg9U2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgTWF5
VGhyb3dFeGNlcHRpb25dIGNvbnN0cnVjdG9yKHVuc2lnbmVkIGxvbmcgbnVtYmVyT2ZDaGFubmVs
cywgdW5zaWduZWQgbG9uZyBudW1iZXJPZkZyYW1lcywgdW5yZXN0cmljdGVkIGZsb2F0IHNhbXBs
ZVJhdGUpOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8v
T2ZmbGluZUF1ZGlvRGVzdGluYXRpb25Ob2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViYXVkaW8vT2ZmbGluZUF1ZGlvRGVzdGluYXRpb25Ob2RlLmNwcAppbmRleCA2YTE5NTU0NmNm
NzEzOTRmZTVjNDE0Yjc2NWI2Yzk3ZTA1ZWRjMDQ5Li5mZWM1MDhjYmZmMWM3MWQzM2JjNGIxM2Vh
OTgyZjkyZmMwYWZiOTliIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1
ZGlvL09mZmxpbmVBdWRpb0Rlc3RpbmF0aW9uTm9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJhdWRpby9PZmZsaW5lQXVkaW9EZXN0aW5hdGlvbk5vZGUuY3BwCkBAIC00MSw3
ICs0MSw3IEBAIFdURl9NQUtFX0lTT19BTExPQ0FURURfSU1QTChPZmZsaW5lQXVkaW9EZXN0aW5h
dGlvbk5vZGUpOwogICAgIAogY29uc3Qgc2l6ZV90IHJlbmRlclF1YW50dW1TaXplID0gMTI4OyAg
ICAKIAotT2ZmbGluZUF1ZGlvRGVzdGluYXRpb25Ob2RlOjpPZmZsaW5lQXVkaW9EZXN0aW5hdGlv
bk5vZGUoQXVkaW9Db250ZXh0JiBjb250ZXh0LCBBdWRpb0J1ZmZlciogcmVuZGVyVGFyZ2V0KQor
T2ZmbGluZUF1ZGlvRGVzdGluYXRpb25Ob2RlOjpPZmZsaW5lQXVkaW9EZXN0aW5hdGlvbk5vZGUo
QXVkaW9Db250ZXh0QmFzZSYgY29udGV4dCwgQXVkaW9CdWZmZXIqIHJlbmRlclRhcmdldCkKICAg
ICA6IEF1ZGlvRGVzdGluYXRpb25Ob2RlKGNvbnRleHQsIHJlbmRlclRhcmdldC0+c2FtcGxlUmF0
ZSgpKQogICAgICwgbV9yZW5kZXJUYXJnZXQocmVuZGVyVGFyZ2V0KQogICAgICwgbV9zdGFydGVk
UmVuZGVyaW5nKGZhbHNlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJh
dWRpby9PZmZsaW5lQXVkaW9EZXN0aW5hdGlvbk5vZGUuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViYXVkaW8vT2ZmbGluZUF1ZGlvRGVzdGluYXRpb25Ob2RlLmgKaW5kZXggZGEyNDk1NzRk
NDg0ZmY4MTJhYTQ5MzdhYzNhMTY1ZWU5NTgyODRjYy4uZjg3MTBmZGUxMGRmZmZlNDkwMjM0ZjE5
MzZiZDU4YmFhM2NiMmU5OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJh
dWRpby9PZmZsaW5lQXVkaW9EZXN0aW5hdGlvbk5vZGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmF1ZGlvL09mZmxpbmVBdWRpb0Rlc3RpbmF0aW9uTm9kZS5oCkBAIC0zNyw5ICsz
Nyw5IEBAIGNsYXNzIEF1ZGlvQ29udGV4dDsKIGNsYXNzIE9mZmxpbmVBdWRpb0Rlc3RpbmF0aW9u
Tm9kZSBmaW5hbCA6IHB1YmxpYyBBdWRpb0Rlc3RpbmF0aW9uTm9kZSB7CiAgICAgV1RGX01BS0Vf
SVNPX0FMTE9DQVRFRChPZmZsaW5lQXVkaW9EZXN0aW5hdGlvbk5vZGUpOwogcHVibGljOgotICAg
IHN0YXRpYyBSZWY8T2ZmbGluZUF1ZGlvRGVzdGluYXRpb25Ob2RlPiBjcmVhdGUoQXVkaW9Db250
ZXh0JiBjb250ZXh0LCBBdWRpb0J1ZmZlciogcmVuZGVyVGFyZ2V0KQorICAgIHN0YXRpYyBSZWY8
T2ZmbGluZUF1ZGlvRGVzdGluYXRpb25Ob2RlPiBjcmVhdGUoQXVkaW9Db250ZXh0QmFzZSYgY29u
dGV4dCwgQXVkaW9CdWZmZXIqIHJlbmRlclRhcmdldCkKICAgICB7Ci0gICAgICAgIHJldHVybiBh
ZG9wdFJlZigqbmV3IE9mZmxpbmVBdWRpb0Rlc3RpbmF0aW9uTm9kZShjb250ZXh0LCByZW5kZXJU
YXJnZXQpKTsgICAgIAorICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBPZmZsaW5lQXVkaW9E
ZXN0aW5hdGlvbk5vZGUoY29udGV4dCwgcmVuZGVyVGFyZ2V0KSk7CiAgICAgfQogCiAgICAgdmly
dHVhbCB+T2ZmbGluZUF1ZGlvRGVzdGluYXRpb25Ob2RlKCk7CkBAIC01NSw3ICs1NSw3IEBAIHB1
YmxpYzoKICAgICBmbG9hdCBzYW1wbGVSYXRlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9y
ZW5kZXJUYXJnZXQtPnNhbXBsZVJhdGUoKTsgfQogCiBwcml2YXRlOgotICAgIE9mZmxpbmVBdWRp
b0Rlc3RpbmF0aW9uTm9kZShBdWRpb0NvbnRleHQmLCBBdWRpb0J1ZmZlciogcmVuZGVyVGFyZ2V0
KTsKKyAgICBPZmZsaW5lQXVkaW9EZXN0aW5hdGlvbk5vZGUoQXVkaW9Db250ZXh0QmFzZSYsIEF1
ZGlvQnVmZmVyKiByZW5kZXJUYXJnZXQpOwogCiAgICAgLy8gVGhpcyBBdWRpb05vZGUgcmVuZGVy
cyBpbnRvIHRoaXMgQXVkaW9CdWZmZXIuCiAgICAgUmVmUHRyPEF1ZGlvQnVmZmVyPiBtX3JlbmRl
clRhcmdldDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vT3Nj
aWxsYXRvck5vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9Pc2NpbGxh
dG9yTm9kZS5jcHAKaW5kZXggOTU2MDA1M2E0ODA1YjlkNGJmNTU5OWU3M2ExOWE4MWUyNWIwYzk2
Zi4uZThmMzFjNzIyMGU1MDY1NjhlM2FjZjA1OGY2Y2FiNDczYjA5MWVkNyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9Pc2NpbGxhdG9yTm9kZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9Pc2NpbGxhdG9yTm9kZS5jcHAKQEAgLTQ1
LDEyICs0NSwxMiBAQCBQZXJpb2RpY1dhdmUqIE9zY2lsbGF0b3JOb2RlOjpzX3BlcmlvZGljV2F2
ZVNxdWFyZSA9IG51bGxwdHI7CiBQZXJpb2RpY1dhdmUqIE9zY2lsbGF0b3JOb2RlOjpzX3Blcmlv
ZGljV2F2ZVNhd3Rvb3RoID0gbnVsbHB0cjsKIFBlcmlvZGljV2F2ZSogT3NjaWxsYXRvck5vZGU6
OnNfcGVyaW9kaWNXYXZlVHJpYW5nbGUgPSBudWxscHRyOwogCi1SZWY8T3NjaWxsYXRvck5vZGU+
IE9zY2lsbGF0b3JOb2RlOjpjcmVhdGUoQXVkaW9Db250ZXh0JiBjb250ZXh0LCBmbG9hdCBzYW1w
bGVSYXRlKQorUmVmPE9zY2lsbGF0b3JOb2RlPiBPc2NpbGxhdG9yTm9kZTo6Y3JlYXRlKEF1ZGlv
Q29udGV4dEJhc2UmIGNvbnRleHQsIGZsb2F0IHNhbXBsZVJhdGUpCiB7CiAgICAgcmV0dXJuIGFk
b3B0UmVmKCpuZXcgT3NjaWxsYXRvck5vZGUoY29udGV4dCwgc2FtcGxlUmF0ZSkpOwogfQogCi1P
c2NpbGxhdG9yTm9kZTo6T3NjaWxsYXRvck5vZGUoQXVkaW9Db250ZXh0JiBjb250ZXh0LCBmbG9h
dCBzYW1wbGVSYXRlKQorT3NjaWxsYXRvck5vZGU6Ok9zY2lsbGF0b3JOb2RlKEF1ZGlvQ29udGV4
dEJhc2UmIGNvbnRleHQsIGZsb2F0IHNhbXBsZVJhdGUpCiAgICAgOiBBdWRpb1NjaGVkdWxlZFNv
dXJjZU5vZGUoY29udGV4dCwgc2FtcGxlUmF0ZSkKICAgICAsIG1fZmlyc3RSZW5kZXIodHJ1ZSkK
ICAgICAsIG1fdmlydHVhbFJlYWRJbmRleCgwKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJhdWRpby9Pc2NpbGxhdG9yTm9kZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJhdWRpby9Pc2NpbGxhdG9yTm9kZS5oCmluZGV4IDQyZmYwYzE5MjRiNjJlZDBjZjAwMTdm
ZmI5N2RlNjAzMjZjNzM5MjIuLjA4OTViY2UzZGRkZjU5ZDY5YzVjNmFmOWNmZDJiOWNmYmU5ZWI0
YTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vT3NjaWxsYXRv
ck5vZGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL09zY2lsbGF0b3JO
b2RlLmgKQEAgLTQ1LDcgKzQ1LDcgQEAgcHVibGljOgogICAgICAgICBDdXN0b20KICAgICB9Owog
Ci0gICAgc3RhdGljIFJlZjxPc2NpbGxhdG9yTm9kZT4gY3JlYXRlKEF1ZGlvQ29udGV4dCYsIGZs
b2F0IHNhbXBsZVJhdGUpOworICAgIHN0YXRpYyBSZWY8T3NjaWxsYXRvck5vZGU+IGNyZWF0ZShB
dWRpb0NvbnRleHRCYXNlJiwgZmxvYXQgc2FtcGxlUmF0ZSk7CiAKICAgICB2aXJ0dWFsIH5Pc2Np
bGxhdG9yTm9kZSgpOwogCkBAIC02MCw3ICs2MCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldFBl
cmlvZGljV2F2ZShQZXJpb2RpY1dhdmUqKTsKIAogcHJpdmF0ZToKLSAgICBPc2NpbGxhdG9yTm9k
ZShBdWRpb0NvbnRleHQmLCBmbG9hdCBzYW1wbGVSYXRlKTsKKyAgICBPc2NpbGxhdG9yTm9kZShB
dWRpb0NvbnRleHRCYXNlJiwgZmxvYXQgc2FtcGxlUmF0ZSk7CiAKICAgICB2b2lkIHByb2Nlc3Mo
c2l6ZV90IGZyYW1lc1RvUHJvY2VzcykgZmluYWw7CiAgICAgdm9pZCByZXNldCgpIGZpbmFsOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9QYW5uZXJOb2RlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vUGFubmVyTm9kZS5jcHAKaW5kZXgg
ZWM4MGU2OWQyYWI4NzEwMjhiYzZhNmU0NDdlYWJkMTllOWZjYzcyMS4uYWU0MmYxMTRiYmMzOTA0
ZGI3YzJjYzE1NmQwYjJjYmU0MjAwNjk4ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJhdWRpby9QYW5uZXJOb2RlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmF1ZGlvL1Bhbm5lck5vZGUuY3BwCkBAIC00OCw4ICs0OCwxMyBAQCBzdGF0aWMgdm9pZCBm
aXhOQU5zKGRvdWJsZSAmeCkKICAgICAgICAgeCA9IDAuMDsKIH0KIAotUGFubmVyTm9kZTo6UGFu
bmVyTm9kZShBdWRpb0NvbnRleHQmIGNvbnRleHQsIGZsb2F0IHNhbXBsZVJhdGUpCitQYW5uZXJO
b2RlQmFzZTo6UGFubmVyTm9kZUJhc2UoQXVkaW9Db250ZXh0QmFzZSYgY29udGV4dCwgZmxvYXQg
c2FtcGxlUmF0ZSkKICAgICA6IEF1ZGlvTm9kZShjb250ZXh0LCBzYW1wbGVSYXRlKQoreworfQor
CitQYW5uZXJOb2RlOjpQYW5uZXJOb2RlKEF1ZGlvQ29udGV4dCYgY29udGV4dCwgZmxvYXQgc2Ft
cGxlUmF0ZSkKKyAgICA6IFBhbm5lck5vZGVCYXNlKGNvbnRleHQsIHNhbXBsZVJhdGUpCiAgICAg
LCBtX3Bhbm5pbmdNb2RlbChQYW5uaW5nTW9kZWxUeXBlOjpIUlRGKQogICAgICwgbV9sYXN0R2Fp
bigtMS4wKQogICAgICwgbV9wb3NpdGlvblgoQXVkaW9QYXJhbTo6Y3JlYXRlKGNvbnRleHQsICJw
b3NpdGlvblgiX3MsIDAsIC1GTFRfTUFYLCBGTFRfTUFYKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vUGFubmVyTm9kZS5oIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJhdWRpby9QYW5uZXJOb2RlLmgKaW5kZXggODQ4MGMyMzMyODAwZGNmNDg4NTE1OGQ2
OTQ1OTJkZDllZTUyOTJiNi4uMjliNjQ4ZDA2MDc2MjkzODdhMWIwYzA3MDM3YzUwYzIyY2YwMTA1
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9QYW5uZXJOb2Rl
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9QYW5uZXJOb2RlLmgKQEAg
LTI2LDYgKzI2LDcgQEAKIAogI2lmIEVOQUJMRShXRUJfQVVESU8pCiAKKyNpbmNsdWRlICJBdWRp
b0NvbnRleHQuaCIKICNpbmNsdWRlICJBdWRpb0xpc3RlbmVyLmgiCiAjaW5jbHVkZSAiQXVkaW9O
b2RlLmgiCiAjaW5jbHVkZSAiQXVkaW9QYXJhbS5oIgpAQCAtNDEsNiArNDIsMTYgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogCiBjbGFzcyBIUlRGRGF0YWJhc2VMb2FkZXI7CiAKK2NsYXNzIFBhbm5l
ck5vZGVCYXNlIDogcHVibGljIEF1ZGlvTm9kZSB7CitwdWJsaWM6CisgICAgdmlydHVhbCB+UGFu
bmVyTm9kZUJhc2UoKSA9IGRlZmF1bHQ7CisKKyAgICB2aXJ0dWFsIGZsb2F0IGRvcHBsZXJSYXRl
KCkgPSAwOworCitwcm90ZWN0ZWQ6CisgICAgUGFubmVyTm9kZUJhc2UoQXVkaW9Db250ZXh0QmFz
ZSYsIGZsb2F0IHNhbXBsZVJhdGUpOworfTsKKwogLy8gUGFubmVyTm9kZSBpcyBhbiBBdWRpb05v
ZGUgd2l0aCBvbmUgaW5wdXQgYW5kIG9uZSBvdXRwdXQuCiAvLyBJdCBwb3NpdGlvbnMgYSBzb3Vu
ZCBpbiAzRCBzcGFjZSwgd2l0aCB0aGUgZXhhY3QgZWZmZWN0IGRlcGVuZGVudCBvbiB0aGUgcGFu
bmluZyBtb2RlbC4KIC8vIEl0IGhhcyBhIHBvc2l0aW9uIGFuZCBhbiBvcmllbnRhdGlvbiBpbiAz
RCBzcGFjZSB3aGljaCBpcyByZWxhdGl2ZSB0byB0aGUgcG9zaXRpb24gYW5kIG9yaWVudGF0aW9u
IG9mIHRoZSBjb250ZXh0J3MgQXVkaW9MaXN0ZW5lci4KQEAgLTQ4LDcgKzU5LDcgQEAgY2xhc3Mg
SFJURkRhdGFiYXNlTG9hZGVyOwogLy8gQSBjb25lIGVmZmVjdCB3aWxsIGF0dGVudWF0ZSB0aGUg
Z2FpbiBhcyB0aGUgb3JpZW50YXRpb24gbW92ZXMgYXdheSBmcm9tIHRoZSBsaXN0ZW5lci4KIC8v
IEFsbCBvZiB0aGVzZSBlZmZlY3RzIGZvbGxvdyB0aGUgT3BlbkFMIHNwZWNpZmljYXRpb24gdmVy
eSBjbG9zZWx5LgogCi1jbGFzcyBQYW5uZXJOb2RlIGZpbmFsIDogcHVibGljIEF1ZGlvTm9kZSB7
CitjbGFzcyBQYW5uZXJOb2RlIGZpbmFsIDogcHVibGljIFBhbm5lck5vZGVCYXNlIHsKICAgICBX
VEZfTUFLRV9JU09fQUxMT0NBVEVEKFBhbm5lck5vZGUpOwogcHVibGljOgogICAgIHN0YXRpYyBS
ZWY8UGFubmVyTm9kZT4gY3JlYXRlKEF1ZGlvQ29udGV4dCYgY29udGV4dCwgZmxvYXQgc2FtcGxl
UmF0ZSkKQEAgLTU4LDYgKzY5LDkgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCB+UGFubmVyTm9k
ZSgpOwogCisgICAgQXVkaW9Db250ZXh0JiBjb250ZXh0KCkgeyByZXR1cm4gZG93bmNhc3Q8QXVk
aW9Db250ZXh0PihBdWRpb05vZGU6OmNvbnRleHQoKSk7IH0KKyAgICBjb25zdCBBdWRpb0NvbnRl
eHQmIGNvbnRleHQoKSBjb25zdCB7IHJldHVybiBkb3duY2FzdDxBdWRpb0NvbnRleHQ+KEF1ZGlv
Tm9kZTo6Y29udGV4dCgpKTsgfQorCiAgICAgLy8gQXVkaW9Ob2RlCiAgICAgdm9pZCBwcm9jZXNz
KHNpemVfdCBmcmFtZXNUb1Byb2Nlc3MpIG92ZXJyaWRlOwogICAgIHZvaWQgcHVsbElucHV0cyhz
aXplX3QgZnJhbWVzVG9Qcm9jZXNzKSBvdmVycmlkZTsKQEAgLTExMSw3ICsxMjUsNyBAQCBwdWJs
aWM6CiAgICAgdm9pZCBzZXRDb25lT3V0ZXJHYWluKGRvdWJsZSBhbmdsZSkgeyBtX2NvbmVFZmZl
Y3Quc2V0T3V0ZXJHYWluKGFuZ2xlKTsgfQogCiAgICAgdm9pZCBnZXRBemltdXRoRWxldmF0aW9u
KGRvdWJsZSogb3V0QXppbXV0aCwgZG91YmxlKiBvdXRFbGV2YXRpb24pOwotICAgIGZsb2F0IGRv
cHBsZXJSYXRlKCk7CisgICAgZmxvYXQgZG9wcGxlclJhdGUoKSBmaW5hbDsKIAogICAgIC8vIEFj
Y2Vzc29ycyBmb3IgZHluYW1pY2FsbHkgY2FsY3VsYXRlZCBnYWluIHZhbHVlcy4KICAgICBBdWRp
b1BhcmFtKiBkaXN0YW5jZUdhaW4oKSB7IHJldHVybiBtX2Rpc3RhbmNlR2Fpbi5nZXQoKTsgfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9QYW5uZXJOb2RlLmlk
bCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vUGFubmVyTm9kZS5pZGwKaW5kZXgg
MDMyOTgzN2QyZjVhMjVjN2Y2YTZmMGQwNGUzMTg3YTFmNmFkOGI0MS4uN2JiOTJjNGY4ZmI0NWRi
MjkzZmZlM2ExN2E5NzEwM2MwYjkyZTZlMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJhdWRpby9QYW5uZXJOb2RlLmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmF1ZGlvL1Bhbm5lck5vZGUuaWRsCkBAIC0yMiwyNyArMjIsMTAgQEAKICAqIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICov
CiAKLVsKLSAgICBDb25kaXRpb25hbD1XRUJfQVVESU8sCi0gICAgSW1wbGVtZW50ZWRBcz1QYW5u
aW5nTW9kZWxUeXBlCi1dIGVudW0gUGFubmluZ01vZGVsVHlwZSB7Ci0gICAgImVxdWFscG93ZXIi
LAotICAgICJIUlRGIgotfTsKLQotWwotICAgIENvbmRpdGlvbmFsPVdFQl9BVURJTywKLSAgICBJ
bXBsZW1lbnRlZEFzPURpc3RhbmNlTW9kZWxUeXBlCi1dIGVudW0gRGlzdGFuY2VNb2RlbFR5cGUg
ewotICAgICJsaW5lYXIiLAotICAgICJpbnZlcnNlIiwKLSAgICAiZXhwb25lbnRpYWwiCi19Owot
CiBbCiAgICAgQ29uZGl0aW9uYWw9V0VCX0FVRElPLAogICAgIEpTR2VuZXJhdGVUb0pTT2JqZWN0
LAotICAgIEludGVyZmFjZU5hbWU9d2Via2l0QXVkaW9QYW5uZXJOb2RlLAorICAgIEVuYWJsZWRC
eVNldHRpbmc9TW9kZXJuVW5wcmVmaXhlZFdlYkF1ZGlvLAogXSBpbnRlcmZhY2UgUGFubmVyTm9k
ZSA6IEF1ZGlvTm9kZSB7CiAgICAgLy8gRGVmYXVsdCBtb2RlbCBmb3Igc3RlcmVvIGlzIEhSVEYg
CiAgICAgYXR0cmlidXRlIFBhbm5pbmdNb2RlbFR5cGUgcGFubmluZ01vZGVsOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9QYW5uaW5nTW9kZWxUeXBlLmggYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1Bhbm5pbmdNb2RlbFR5cGUuaApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi5hYjBiMjI3MTJhMTcwYjFmZWZhZTE2ZTZlZjNkZjk0ZDIzOGExYTlmCi0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9QYW5uaW5nTW9kZWxUeXBl
LmgKQEAgLTAsMCArMSwyNyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCwgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBB
TkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04KKyAqIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUworICogU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRl
ICJQYW5uZXIuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8v
UGFubmluZ01vZGVsVHlwZS5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1Bh
bm5pbmdNb2RlbFR5cGUuaWRsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmJmN2RmOGY1NTQyZmFhNDUyNjA3YmUxZjA5
OWU5OTc0YmRhYzM3ZTYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmF1ZGlvL1Bhbm5pbmdNb2RlbFR5cGUuaWRsCkBAIC0wLDAgKzEsMzAgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTAsIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiAgUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQK
KyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TgorICogQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTCisgKiBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCitbCisgICAgQ29uZGl0aW9uYWw9V0VCX0FVRElPLAorXSBlbnVtIFBhbm5pbmdNb2RlbFR5
cGUgeworICAgICJlcXVhbHBvd2VyIiwKKyAgICAiSFJURiIKK307CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1NjcmlwdFByb2Nlc3Nvck5vZGUuY3BwIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9TY3JpcHRQcm9jZXNzb3JOb2RlLmNwcAppbmRl
eCA5MWM3NTM3ZTE1ZThiNTUyNDExZWE5ZjYxMzAxZWMxYzMyNWFkMjU2Li43NjEwYjE1MDI0ODc4
YjYwNmU1Y2RkOGM0ZjVhYjBmYjExZGMwMzQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmF1ZGlvL1NjcmlwdFByb2Nlc3Nvck5vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViYXVkaW8vU2NyaXB0UHJvY2Vzc29yTm9kZS5jcHAKQEAgLTQ0LDEyICs0
NCwxMiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFdURl9NQUtFX0lTT19BTExPQ0FURURfSU1Q
TChTY3JpcHRQcm9jZXNzb3JOb2RlKTsKIAotUmVmPFNjcmlwdFByb2Nlc3Nvck5vZGU+IFNjcmlw
dFByb2Nlc3Nvck5vZGU6OmNyZWF0ZShBdWRpb0NvbnRleHQmIGNvbnRleHQsIGZsb2F0IHNhbXBs
ZVJhdGUsIHNpemVfdCBidWZmZXJTaXplLCB1bnNpZ25lZCBudW1iZXJPZklucHV0Q2hhbm5lbHMs
IHVuc2lnbmVkIG51bWJlck9mT3V0cHV0Q2hhbm5lbHMpCitSZWY8U2NyaXB0UHJvY2Vzc29yTm9k
ZT4gU2NyaXB0UHJvY2Vzc29yTm9kZTo6Y3JlYXRlKEF1ZGlvQ29udGV4dEJhc2UmIGNvbnRleHQs
IGZsb2F0IHNhbXBsZVJhdGUsIHNpemVfdCBidWZmZXJTaXplLCB1bnNpZ25lZCBudW1iZXJPZklu
cHV0Q2hhbm5lbHMsIHVuc2lnbmVkIG51bWJlck9mT3V0cHV0Q2hhbm5lbHMpCiB7CiAgICAgcmV0
dXJuIGFkb3B0UmVmKCpuZXcgU2NyaXB0UHJvY2Vzc29yTm9kZShjb250ZXh0LCBzYW1wbGVSYXRl
LCBidWZmZXJTaXplLCBudW1iZXJPZklucHV0Q2hhbm5lbHMsIG51bWJlck9mT3V0cHV0Q2hhbm5l
bHMpKTsKIH0KIAotU2NyaXB0UHJvY2Vzc29yTm9kZTo6U2NyaXB0UHJvY2Vzc29yTm9kZShBdWRp
b0NvbnRleHQmIGNvbnRleHQsIGZsb2F0IHNhbXBsZVJhdGUsIHNpemVfdCBidWZmZXJTaXplLCB1
bnNpZ25lZCBudW1iZXJPZklucHV0Q2hhbm5lbHMsIHVuc2lnbmVkIG51bWJlck9mT3V0cHV0Q2hh
bm5lbHMpCitTY3JpcHRQcm9jZXNzb3JOb2RlOjpTY3JpcHRQcm9jZXNzb3JOb2RlKEF1ZGlvQ29u
dGV4dEJhc2UmIGNvbnRleHQsIGZsb2F0IHNhbXBsZVJhdGUsIHNpemVfdCBidWZmZXJTaXplLCB1
bnNpZ25lZCBudW1iZXJPZklucHV0Q2hhbm5lbHMsIHVuc2lnbmVkIG51bWJlck9mT3V0cHV0Q2hh
bm5lbHMpCiAgICAgOiBBdWRpb05vZGUoY29udGV4dCwgc2FtcGxlUmF0ZSkKICAgICAsIEFjdGl2
ZURPTU9iamVjdChjb250ZXh0LnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSkKICAgICAsIG1fZG91
YmxlQnVmZmVySW5kZXgoMCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
YXVkaW8vU2NyaXB0UHJvY2Vzc29yTm9kZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJh
dWRpby9TY3JpcHRQcm9jZXNzb3JOb2RlLmgKaW5kZXggNWE0ZTdjZTQ3NTIyZWYyOGViZjJmZDE3
OTZhZjU4NGJhNzViNDEzMy4uNGMxNGEwNzU3ZGY1YzVlNjJkZmU5NmE4OGViNDJiNDdmMTVlNzI1
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9TY3JpcHRQcm9j
ZXNzb3JOb2RlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9TY3JpcHRQ
cm9jZXNzb3JOb2RlLmgKQEAgLTUyLDcgKzUyLDcgQEAgcHVibGljOgogICAgIC8vIFRoaXMgdmFs
dWUgY29udHJvbHMgaG93IGZyZXF1ZW50bHkgdGhlIG9uYXVkaW9wcm9jZXNzIGV2ZW50IGhhbmRs
ZXIgaXMgY2FsbGVkIGFuZCBob3cgbWFueSBzYW1wbGUtZnJhbWVzIG5lZWQgdG8gYmUgcHJvY2Vz
c2VkIGVhY2ggY2FsbC4KICAgICAvLyBMb3dlciBudW1iZXJzIGZvciBidWZmZXJTaXplIHdpbGwg
cmVzdWx0IGluIGEgbG93ZXIgKGJldHRlcikgbGF0ZW5jeS4gSGlnaGVyIG51bWJlcnMgd2lsbCBi
ZSBuZWNlc3NhcnkgdG8gYXZvaWQgYXVkaW8gYnJlYWt1cCBhbmQgZ2xpdGNoZXMuCiAgICAgLy8g
VGhlIHZhbHVlIGNob3NlbiBtdXN0IGNhcmVmdWxseSBiYWxhbmNlIGJldHdlZW4gbGF0ZW5jeSBh
bmQgYXVkaW8gcXVhbGl0eS4KLSAgICBzdGF0aWMgUmVmPFNjcmlwdFByb2Nlc3Nvck5vZGU+IGNy
ZWF0ZShBdWRpb0NvbnRleHQmLCBmbG9hdCBzYW1wbGVSYXRlLCBzaXplX3QgYnVmZmVyU2l6ZSwg
dW5zaWduZWQgbnVtYmVyT2ZJbnB1dENoYW5uZWxzLCB1bnNpZ25lZCBudW1iZXJPZk91dHB1dENo
YW5uZWxzKTsKKyAgICBzdGF0aWMgUmVmPFNjcmlwdFByb2Nlc3Nvck5vZGU+IGNyZWF0ZShBdWRp
b0NvbnRleHRCYXNlJiwgZmxvYXQgc2FtcGxlUmF0ZSwgc2l6ZV90IGJ1ZmZlclNpemUsIHVuc2ln
bmVkIG51bWJlck9mSW5wdXRDaGFubmVscywgdW5zaWduZWQgbnVtYmVyT2ZPdXRwdXRDaGFubmVs
cyk7CiAKICAgICB2aXJ0dWFsIH5TY3JpcHRQcm9jZXNzb3JOb2RlKCk7CiAKQEAgLTcxLDcgKzcx
LDcgQEAgcHJpdmF0ZToKICAgICBkb3VibGUgdGFpbFRpbWUoKSBjb25zdCBvdmVycmlkZTsKICAg
ICBkb3VibGUgbGF0ZW5jeVRpbWUoKSBjb25zdCBvdmVycmlkZTsKIAotICAgIFNjcmlwdFByb2Nl
c3Nvck5vZGUoQXVkaW9Db250ZXh0JiwgZmxvYXQgc2FtcGxlUmF0ZSwgc2l6ZV90IGJ1ZmZlclNp
emUsIHVuc2lnbmVkIG51bWJlck9mSW5wdXRDaGFubmVscywgdW5zaWduZWQgbnVtYmVyT2ZPdXRw
dXRDaGFubmVscyk7CisgICAgU2NyaXB0UHJvY2Vzc29yTm9kZShBdWRpb0NvbnRleHRCYXNlJiwg
ZmxvYXQgc2FtcGxlUmF0ZSwgc2l6ZV90IGJ1ZmZlclNpemUsIHVuc2lnbmVkIG51bWJlck9mSW5w
dXRDaGFubmVscywgdW5zaWduZWQgbnVtYmVyT2ZPdXRwdXRDaGFubmVscyk7CiAKICAgICB2b2lk
IGZpcmVQcm9jZXNzRXZlbnQoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJhdWRpby9XYXZlU2hhcGVyTm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmF1ZGlvL1dhdmVTaGFwZXJOb2RlLmNwcAppbmRleCA2ZTdlOGRkMWM5YzE5ZmEzYzg1ZTNkOWQ4
NTVhYjlmNDU3ODViNzkwLi5hZTRhZjlmMjMyZjc1MTM2YzA4MWFmZTE0YmQ3YTc5NTZjMDUyOTZl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1dhdmVTaGFwZXJO
b2RlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1dhdmVTaGFwZXJO
b2RlLmNwcApAQCAtMzUsNyArMzUsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFdURl9NQUtF
X0lTT19BTExPQ0FURURfSU1QTChXYXZlU2hhcGVyTm9kZSk7CiAKLVdhdmVTaGFwZXJOb2RlOjpX
YXZlU2hhcGVyTm9kZShBdWRpb0NvbnRleHQmIGNvbnRleHQpCitXYXZlU2hhcGVyTm9kZTo6V2F2
ZVNoYXBlck5vZGUoQXVkaW9Db250ZXh0QmFzZSYgY29udGV4dCkKICAgICA6IEF1ZGlvQmFzaWNQ
cm9jZXNzb3JOb2RlKGNvbnRleHQsIGNvbnRleHQuc2FtcGxlUmF0ZSgpKQogewogICAgIHNldE5v
ZGVUeXBlKE5vZGVUeXBlV2F2ZVNoYXBlcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmF1ZGlvL1dhdmVTaGFwZXJOb2RlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmF1ZGlvL1dhdmVTaGFwZXJOb2RlLmgKaW5kZXggZjQ5ZTM0OWJjM2RjOGMyOWI0YTZlNjNk
ZmRiZjk4NjRiOTZmODY4MC4uNWY0OTMyOGIyMmQwZWJlNWQ2ZWY2ZDAzYzZhZTZkNmZmYzFhMTEw
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9XYXZlU2hhcGVy
Tm9kZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vV2F2ZVNoYXBlck5v
ZGUuaApAQCAtMzMsNyArMzMsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBXYXZlU2hh
cGVyTm9kZSBmaW5hbCA6IHB1YmxpYyBBdWRpb0Jhc2ljUHJvY2Vzc29yTm9kZSB7CiAgICAgV1RG
X01BS0VfSVNPX0FMTE9DQVRFRChXYXZlU2hhcGVyTm9kZSk7CiBwdWJsaWM6Ci0gICAgc3RhdGlj
IFJlZjxXYXZlU2hhcGVyTm9kZT4gY3JlYXRlKEF1ZGlvQ29udGV4dCYgY29udGV4dCkKKyAgICBz
dGF0aWMgUmVmPFdhdmVTaGFwZXJOb2RlPiBjcmVhdGUoQXVkaW9Db250ZXh0QmFzZSYgY29udGV4
dCkKICAgICB7CiAgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFdhdmVTaGFwZXJOb2RlKGNv
bnRleHQpKTsKICAgICB9CkBAIC00OSw3ICs0OSw3IEBAIHB1YmxpYzoKICAgICBkb3VibGUgbGF0
ZW5jeSgpIGNvbnN0IHsgcmV0dXJuIGxhdGVuY3lUaW1lKCk7IH0KIAogcHJpdmF0ZTogICAgCi0g
ICAgZXhwbGljaXQgV2F2ZVNoYXBlck5vZGUoQXVkaW9Db250ZXh0Jik7ICAgIAorICAgIGV4cGxp
Y2l0IFdhdmVTaGFwZXJOb2RlKEF1ZGlvQ29udGV4dEJhc2UmKTsKIAogICAgIFdhdmVTaGFwZXJQ
cm9jZXNzb3IqIHdhdmVTaGFwZXJQcm9jZXNzb3IoKSB7IHJldHVybiBzdGF0aWNfY2FzdDxXYXZl
U2hhcGVyUHJvY2Vzc29yKj4ocHJvY2Vzc29yKCkpOyB9CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9XZWJLaXRBdWRpb0NvbnRleHQuY3BwIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9XZWJLaXRBdWRpb0NvbnRleHQuY3BwCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjQxZDFjMTVkNDBlYmI1N2EyMTk3NmY3ZjczYjA1ZDM4NjBmMzBhNmQKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1dlYktpdEF1ZGlvQ29udGV4
dC5jcHAKQEAgLTAsMCArMSwxMzk3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2ds
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04KKyAqIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUworICogU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgor
CisjaWYgRU5BQkxFKFdFQl9BVURJTykKKworI2luY2x1ZGUgIldlYktpdEF1ZGlvQ29udGV4dC5o
IgorCisjaW5jbHVkZSAiQW5hbHlzZXJOb2RlLmgiCisjaW5jbHVkZSAiQXN5bmNBdWRpb0RlY29k
ZXIuaCIKKyNpbmNsdWRlICJBdWRpb0J1ZmZlci5oIgorI2luY2x1ZGUgIkF1ZGlvQnVmZmVyQ2Fs
bGJhY2suaCIKKyNpbmNsdWRlICJBdWRpb0J1ZmZlclNvdXJjZU5vZGUuaCIKKyNpbmNsdWRlICJB
dWRpb0xpc3RlbmVyLmgiCisjaW5jbHVkZSAiQXVkaW9Ob2RlSW5wdXQuaCIKKyNpbmNsdWRlICJB
dWRpb05vZGVPdXRwdXQuaCIKKyNpbmNsdWRlICJBdWRpb1Nlc3Npb24uaCIKKyNpbmNsdWRlICJC
aXF1YWRGaWx0ZXJOb2RlLmgiCisjaW5jbHVkZSAiQ2hhbm5lbE1lcmdlck5vZGUuaCIKKyNpbmNs
dWRlICJDaGFubmVsU3BsaXR0ZXJOb2RlLmgiCisjaW5jbHVkZSAiQ29udm9sdmVyTm9kZS5oIgor
I2luY2x1ZGUgIkRlZmF1bHRBdWRpb0Rlc3RpbmF0aW9uTm9kZS5oIgorI2luY2x1ZGUgIkRlbGF5
Tm9kZS5oIgorI2luY2x1ZGUgIkRvY3VtZW50LmgiCisjaW5jbHVkZSAiRHluYW1pY3NDb21wcmVz
c29yTm9kZS5oIgorI2luY2x1ZGUgIkV2ZW50TmFtZXMuaCIKKyNpbmNsdWRlICJGRlRGcmFtZS5o
IgorI2luY2x1ZGUgIkZyYW1lLmgiCisjaW5jbHVkZSAiRnJhbWVMb2FkZXIuaCIKKyNpbmNsdWRl
ICJHYWluTm9kZS5oIgorI2luY2x1ZGUgIkdlbmVyaWNFdmVudFF1ZXVlLmgiCisjaW5jbHVkZSAi
SFJURkRhdGFiYXNlTG9hZGVyLmgiCisjaW5jbHVkZSAiSFJURlBhbm5lci5oIgorI2luY2x1ZGUg
IkpTRE9NUHJvbWlzZURlZmVycmVkLmgiCisjaW5jbHVkZSAiTG9nZ2luZy5oIgorI2luY2x1ZGUg
Ik5ldHdvcmtpbmdDb250ZXh0LmgiCisjaW5jbHVkZSAiT2ZmbGluZUF1ZGlvQ29tcGxldGlvbkV2
ZW50LmgiCisjaW5jbHVkZSAiT2ZmbGluZUF1ZGlvRGVzdGluYXRpb25Ob2RlLmgiCisjaW5jbHVk
ZSAiT3NjaWxsYXRvck5vZGUuaCIKKyNpbmNsdWRlICJQYWdlLmgiCisjaW5jbHVkZSAiUGVyaW9k
aWNXYXZlLmgiCisjaW5jbHVkZSAiUGxhdGZvcm1NZWRpYVNlc3Npb25NYW5hZ2VyLmgiCisjaW5j
bHVkZSAiU2NyaXB0Q29udHJvbGxlci5oIgorI2luY2x1ZGUgIlNjcmlwdFByb2Nlc3Nvck5vZGUu
aCIKKyNpbmNsdWRlICJXYXZlU2hhcGVyTm9kZS5oIgorI2luY2x1ZGUgIldlYktpdEF1ZGlvUGFu
bmVyTm9kZS5oIgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1NjcmlwdENhbGxTdGFjay5oPgor
CisjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKKyNpbmNsdWRlICJNZWRpYVN0cmVhbS5oIgorI2lu
Y2x1ZGUgIk1lZGlhU3RyZWFtQXVkaW9EZXN0aW5hdGlvbk5vZGUuaCIKKyNpbmNsdWRlICJNZWRp
YVN0cmVhbUF1ZGlvU291cmNlLmgiCisjaW5jbHVkZSAiTWVkaWFTdHJlYW1BdWRpb1NvdXJjZU5v
ZGUuaCIKKyNlbmRpZgorCisjaWYgRU5BQkxFKFZJREVPKQorI2luY2x1ZGUgIkhUTUxNZWRpYUVs
ZW1lbnQuaCIKKyNpbmNsdWRlICJNZWRpYUVsZW1lbnRBdWRpb1NvdXJjZU5vZGUuaCIKKyNlbmRp
ZgorCisjaWYgREVCVUdfQVVESU9OT0RFX1JFRkVSRU5DRVMKKyNpbmNsdWRlIDxzdGRpby5oPgor
I2VuZGlmCisKKyNpZiBVU0UoR1NUUkVBTUVSKQorI2luY2x1ZGUgIkdTdHJlYW1lckNvbW1vbi5o
IgorI2VuZGlmCisKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQorI2luY2x1ZGUgIlNjcmlwdENv
bnRyb2xsZXIuaCIKKyNpbmNsdWRlICJTZXR0aW5ncy5oIgorI2VuZGlmCisKKyNpbmNsdWRlIDxK
YXZhU2NyaXB0Q29yZS9BcnJheUJ1ZmZlci5oPgorI2luY2x1ZGUgPHd0Zi9BdG9taWNzLmg+Cisj
aW5jbHVkZSA8d3RmL0lzb01hbGxvY0lubGluZXMuaD4KKyNpbmNsdWRlIDx3dGYvTWFpblRocmVh
ZC5oPgorI2luY2x1ZGUgPHd0Zi9SZWYuaD4KKyNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgor
I2luY2x1ZGUgPHd0Zi9TY29wZS5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgor
Citjb25zdCB1bnNpZ25lZCBNYXhQZXJpb2RpY1dhdmVMZW5ndGggPSA0MDk2OworCituYW1lc3Bh
Y2UgV2ViQ29yZSB7CisKK1dURl9NQUtFX0lTT19BTExPQ0FURURfSU1QTChXZWJLaXRBdWRpb0Nv
bnRleHQpOworCisjZGVmaW5lIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoZm10LCAuLi4pIFJFTEVB
U0VfTE9HX0lGKGRvY3VtZW50KCkgJiYgZG9jdW1lbnQoKS0+cGFnZSgpICYmIGRvY3VtZW50KCkt
PnBhZ2UoKS0+aXNBbHdheXNPbkxvZ2dpbmdBbGxvd2VkKCksIE1lZGlhLCAiJXAgLSBXZWJLaXRB
dWRpb0NvbnRleHQ6OiIgZm10LCB0aGlzLCAjI19fVkFfQVJHU19fKQorCitib29sIFdlYktpdEF1
ZGlvQ29udGV4dDo6aXNTYW1wbGVSYXRlUmFuZ2VHb29kKGZsb2F0IHNhbXBsZVJhdGUpCit7Cisg
ICAgLy8gRklYTUU6IEl0IHdvdWxkIGJlIG5pY2UgaWYgdGhlIG1pbmltdW0gc2FtcGxlLXJhdGUg
Y291bGQgYmUgbGVzcyB0aGFuIDQ0LjFLSHosCisgICAgLy8gYnV0IHRoYXQgd2lsbCByZXF1aXJl
IHNvbWUgZml4ZXMgaW4gSFJURlBhbm5lcjo6ZmZ0U2l6ZUZvclNhbXBsZVJhdGUoKSwgYW5kIHNv
bWUgdGVzdGluZyB0aGVyZS4KKyAgICByZXR1cm4gc2FtcGxlUmF0ZSA+PSA0NDEwMCAmJiBzYW1w
bGVSYXRlIDw9IDk2MDAwOworfQorCisjaWYgT1MoV0lORE9XUykKKy8vIERvbid0IGFsbG93IG1v
cmUgdGhhbiB0aGlzIG51bWJlciBvZiBzaW11bHRhbmVvdXMgQXVkaW9Db250ZXh0cyB0YWxraW5n
IHRvIGhhcmR3YXJlLgorY29uc3RleHByIHVuc2lnbmVkIG1heEhhcmR3YXJlQ29udGV4dHMgPSA0
OworI2VuZGlmCit1bnNpZ25lZCBXZWJLaXRBdWRpb0NvbnRleHQ6OnNfaGFyZHdhcmVDb250ZXh0
Q291bnQgPSAwOworCitFeGNlcHRpb25PcjxSZWY8V2ViS2l0QXVkaW9Db250ZXh0Pj4gV2ViS2l0
QXVkaW9Db250ZXh0OjpjcmVhdGUoRG9jdW1lbnQmIGRvY3VtZW50KQoreworICAgIEFTU0VSVChp
c01haW5UaHJlYWQoKSk7CisjaWYgT1MoV0lORE9XUykKKyAgICBpZiAoc19oYXJkd2FyZUNvbnRl
eHRDb3VudCA+PSBtYXhIYXJkd2FyZUNvbnRleHRzKQorICAgICAgICByZXR1cm4gRXhjZXB0aW9u
IHsgUXVvdGFFeGNlZWRlZEVycm9yIH07CisjZW5kaWYKKworICAgIGF1dG8gYXVkaW9Db250ZXh0
ID0gYWRvcHRSZWYoKm5ldyBXZWJLaXRBdWRpb0NvbnRleHQoZG9jdW1lbnQpKTsKKyAgICBhdWRp
b0NvbnRleHQtPnN1c3BlbmRJZk5lZWRlZCgpOworICAgIHJldHVybiBhdWRpb0NvbnRleHQ7Cit9
CisKKy8vIENvbnN0cnVjdG9yIGZvciByZW5kZXJpbmcgdG8gdGhlIGF1ZGlvIGhhcmR3YXJlLgor
V2ViS2l0QXVkaW9Db250ZXh0OjpXZWJLaXRBdWRpb0NvbnRleHQoRG9jdW1lbnQmIGRvY3VtZW50
KQorICAgIDogQXVkaW9Db250ZXh0QmFzZShkb2N1bWVudCkKKyNpZiAhUkVMRUFTRV9MT0dfRElT
QUJMRUQKKyAgICAsIG1fbG9nZ2VyKGRvY3VtZW50LmxvZ2dlcigpKQorICAgICwgbV9sb2dJZGVu
dGlmaWVyKHVuaXF1ZUxvZ0lkZW50aWZpZXIoKSkKKyNlbmRpZgorICAgICwgbV9tZWRpYVNlc3Np
b24oUGxhdGZvcm1NZWRpYVNlc3Npb246OmNyZWF0ZShQbGF0Zm9ybU1lZGlhU2Vzc2lvbk1hbmFn
ZXI6OnNoYXJlZE1hbmFnZXIoKSwgKnRoaXMpKQorICAgICwgbV9ldmVudFF1ZXVlKE1haW5UaHJl
YWRHZW5lcmljRXZlbnRRdWV1ZTo6Y3JlYXRlKCp0aGlzKSkKK3sKKyAgICAvLyBBY2NvcmRpbmcg
dG8gc3BlYyBBdWRpb0NvbnRleHQgbXVzdCBkaWUgb25seSBhZnRlciBwYWdlIG5hdmlnYXRlLgor
ICAgIC8vIExldHMgbWFyayBpdCBhcyBBY3RpdmVET01PYmplY3Qgd2l0aCBwZW5kaW5nIGFjdGl2
aXR5IGFuZCB1bm1hcmsgaXQgaW4gY2xlYXIgbWV0aG9kLgorICAgIG1ha2VQZW5kaW5nQWN0aXZp
dHkoKTsKKworICAgIGNvbnN0cnVjdENvbW1vbigpOworCisgICAgbV9kZXN0aW5hdGlvbk5vZGUg
PSBEZWZhdWx0QXVkaW9EZXN0aW5hdGlvbk5vZGU6OmNyZWF0ZSgqdGhpcyk7CisKKyAgICAvLyBJ
bml0aWFsaXplIHRoZSBkZXN0aW5hdGlvbiBub2RlJ3MgbXV0ZWQgc3RhdGUgdG8gbWF0Y2ggdGhl
IHBhZ2UncyBjdXJyZW50IG11dGVkIHN0YXRlLgorICAgIHBhZ2VNdXRlZFN0YXRlRGlkQ2hhbmdl
KCk7CisKKyAgICBkb2N1bWVudC5hZGRBdWRpb1Byb2R1Y2VyKCp0aGlzKTsKKyAgICBkb2N1bWVu
dC5yZWdpc3RlckZvclZpc2liaWxpdHlTdGF0ZUNoYW5nZWRDYWxsYmFja3MoKnRoaXMpOworfQor
CisvLyBDb25zdHJ1Y3RvciBmb3Igb2ZmbGluZSAobm9uLXJlYWx0aW1lKSByZW5kZXJpbmcuCitX
ZWJLaXRBdWRpb0NvbnRleHQ6OldlYktpdEF1ZGlvQ29udGV4dChEb2N1bWVudCYgZG9jdW1lbnQs
IEF1ZGlvQnVmZmVyKiByZW5kZXJUYXJnZXQpCisgICAgOiBBdWRpb0NvbnRleHRCYXNlKGRvY3Vt
ZW50KQorI2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRAorICAgICwgbV9sb2dnZXIoZG9jdW1lbnQu
bG9nZ2VyKCkpCisgICAgLCBtX2xvZ0lkZW50aWZpZXIodW5pcXVlTG9nSWRlbnRpZmllcigpKQor
I2VuZGlmCisgICAgLCBtX2lzT2ZmbGluZUNvbnRleHQodHJ1ZSkKKyAgICAsIG1fbWVkaWFTZXNz
aW9uKFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpjcmVhdGUoUGxhdGZvcm1NZWRpYVNlc3Npb25NYW5h
Z2VyOjpzaGFyZWRNYW5hZ2VyKCksICp0aGlzKSkKKyAgICAsIG1fZXZlbnRRdWV1ZShNYWluVGhy
ZWFkR2VuZXJpY0V2ZW50UXVldWU6OmNyZWF0ZSgqdGhpcykpCisgICAgLCBtX3JlbmRlclRhcmdl
dChyZW5kZXJUYXJnZXQpCit7CisgICAgY29uc3RydWN0Q29tbW9uKCk7CisKKyAgICAvLyBDcmVh
dGUgYSBuZXcgZGVzdGluYXRpb24gZm9yIG9mZmxpbmUgcmVuZGVyaW5nLgorICAgIG1fZGVzdGlu
YXRpb25Ob2RlID0gT2ZmbGluZUF1ZGlvRGVzdGluYXRpb25Ob2RlOjpjcmVhdGUoKnRoaXMsIG1f
cmVuZGVyVGFyZ2V0LmdldCgpKTsKK30KKwordm9pZCBXZWJLaXRBdWRpb0NvbnRleHQ6OmNvbnN0
cnVjdENvbW1vbigpCit7CisgICAgRkZURnJhbWU6OmluaXRpYWxpemUoKTsKKworICAgIG1fbGlz
dGVuZXIgPSBBdWRpb0xpc3RlbmVyOjpjcmVhdGUoKTsKKworICAgIEFTU0VSVChkb2N1bWVudCgp
KTsKKyAgICBpZiAoZG9jdW1lbnQoKS0+YXVkaW9QbGF5YmFja1JlcXVpcmVzVXNlckdlc3R1cmUo
KSkKKyAgICAgICAgYWRkQmVoYXZpb3JSZXN0cmljdGlvbihSZXF1aXJlVXNlckdlc3R1cmVGb3JB
dWRpb1N0YXJ0UmVzdHJpY3Rpb24pOworICAgIGVsc2UKKyAgICAgICAgbV9yZXN0cmljdGlvbnMg
PSBOb1Jlc3RyaWN0aW9uczsKKworI2lmIFBMQVRGT1JNKENPQ09BKQorICAgIGFkZEJlaGF2aW9y
UmVzdHJpY3Rpb24oUmVxdWlyZVBhZ2VDb25zZW50Rm9yQXVkaW9TdGFydFJlc3RyaWN0aW9uKTsK
KyNlbmRpZgorfQorCitXZWJLaXRBdWRpb0NvbnRleHQ6On5XZWJLaXRBdWRpb0NvbnRleHQoKQor
eworI2lmIERFQlVHX0FVRElPTk9ERV9SRUZFUkVOQ0VTCisgICAgZnByaW50ZihzdGRlcnIsICIl
cDogV2ViS2l0QXVkaW9Db250ZXh0Ojp+V2ViS2l0QXVkaW9Db250ZXh0KClcbiIsIHRoaXMpOwor
I2VuZGlmCisgICAgQVNTRVJUKCFtX2lzSW5pdGlhbGl6ZWQpOworICAgIEFTU0VSVChtX2lzU3Rv
cFNjaGVkdWxlZCk7CisgICAgQVNTRVJUKG1fbm9kZXNUb0RlbGV0ZS5pc0VtcHR5KCkpOworICAg
IEFTU0VSVChtX3JlZmVyZW5jZWROb2Rlcy5pc0VtcHR5KCkpOworICAgIEFTU0VSVChtX2Zpbmlz
aGVkTm9kZXMuaXNFbXB0eSgpKTsgLy8gRklYTUUgKGJ1ZyAxMDU4NzApOiBUaGlzIGFzc2VydGlv
biBmYWlscyBvbiB0ZXN0cyBzb21ldGltZXMuCisgICAgQVNTRVJUKG1fYXV0b21hdGljUHVsbE5v
ZGVzLmlzRW1wdHkoKSk7CisgICAgaWYgKG1fYXV0b21hdGljUHVsbE5vZGVzTmVlZFVwZGF0aW5n
KQorICAgICAgICBtX3JlbmRlcmluZ0F1dG9tYXRpY1B1bGxOb2Rlcy5yZXNpemUobV9hdXRvbWF0
aWNQdWxsTm9kZXMuc2l6ZSgpKTsKKyAgICBBU1NFUlQobV9yZW5kZXJpbmdBdXRvbWF0aWNQdWxs
Tm9kZXMuaXNFbXB0eSgpKTsKKyAgICAvLyBGSVhNRTogQ2FuIHdlIGFzc2VydCB0aGF0IG1fZGVm
ZXJyZWRGaW5pc2hEZXJlZkxpc3QgaXMgZW1wdHk/CisKKyAgICBpZiAoIWlzT2ZmbGluZUNvbnRl
eHQoKSAmJiBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpIHsKKyAgICAgICAgZG9jdW1lbnQoKS0+
cmVtb3ZlQXVkaW9Qcm9kdWNlcigqdGhpcyk7CisgICAgICAgIGRvY3VtZW50KCktPnVucmVnaXN0
ZXJGb3JWaXNpYmlsaXR5U3RhdGVDaGFuZ2VkQ2FsbGJhY2tzKCp0aGlzKTsKKyAgICB9Cit9CisK
K3ZvaWQgV2ViS2l0QXVkaW9Db250ZXh0OjpsYXp5SW5pdGlhbGl6ZSgpCit7CisgICAgQVNTRVJU
KCFtX2lzU3RvcFNjaGVkdWxlZCk7CisKKyAgICBpZiAobV9pc0luaXRpYWxpemVkKQorICAgICAg
ICByZXR1cm47CisKKyAgICAvLyBEb24ndCBhbGxvdyB0aGUgY29udGV4dCB0byBpbml0aWFsaXpl
IGEgc2Vjb25kIHRpbWUgYWZ0ZXIgaXQncyBhbHJlYWR5IGJlZW4gZXhwbGljaXRseSB1bmluaXRp
YWxpemVkLgorICAgIEFTU0VSVCghbV9pc0F1ZGlvVGhyZWFkRmluaXNoZWQpOworICAgIGlmICht
X2lzQXVkaW9UaHJlYWRGaW5pc2hlZCkKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKG1fZGVz
dGluYXRpb25Ob2RlKSB7CisgICAgICAgIG1fZGVzdGluYXRpb25Ob2RlLT5pbml0aWFsaXplKCk7
CisKKyAgICAgICAgaWYgKCFpc09mZmxpbmVDb250ZXh0KCkpIHsKKyAgICAgICAgICAgIC8vIFRo
aXMgc3RhcnRzIHRoZSBhdWRpbyB0aHJlYWQuIFRoZSBkZXN0aW5hdGlvbiBub2RlJ3MgcHJvdmlk
ZUlucHV0KCkgbWV0aG9kIHdpbGwgbm93IGJlIGNhbGxlZCByZXBlYXRlZGx5IHRvIHJlbmRlciBh
dWRpby4KKyAgICAgICAgICAgIC8vIEVhY2ggdGltZSBwcm92aWRlSW5wdXQoKSBpcyBjYWxsZWQs
IGEgcG9ydGlvbiBvZiB0aGUgYXVkaW8gc3RyZWFtIGlzIHJlbmRlcmVkLiBMZXQncyBjYWxsIHRo
aXMgdGltZSBwZXJpb2QgYSAicmVuZGVyIHF1YW50dW0iLgorICAgICAgICAgICAgLy8gTk9URTog
Zm9yIG5vdyBkZWZhdWx0IEF1ZGlvQ29udGV4dCBkb2VzIG5vdCBuZWVkIGFuIGV4cGxpY2l0IHN0
YXJ0UmVuZGVyaW5nKCkgY2FsbCBmcm9tIEphdmFTY3JpcHQuCisgICAgICAgICAgICAvLyBXZSBt
YXkgd2FudCB0byBjb25zaWRlciByZXF1aXJpbmcgaXQgZm9yIHN5bW1ldHJ5IHdpdGggT2ZmbGlu
ZUF1ZGlvQ29udGV4dC4KKyAgICAgICAgICAgIHN0YXJ0UmVuZGVyaW5nKCk7CisgICAgICAgICAg
ICArK3NfaGFyZHdhcmVDb250ZXh0Q291bnQ7CisgICAgICAgIH0KKyAgICB9CisgICAgbV9pc0lu
aXRpYWxpemVkID0gdHJ1ZTsKK30KKwordm9pZCBXZWJLaXRBdWRpb0NvbnRleHQ6OmNsZWFyKCkK
K3sKKyAgICBSZWY8V2ViS2l0QXVkaW9Db250ZXh0PiBwcm90ZWN0ZWRUaGlzKCp0aGlzKTsKKwor
ICAgIC8vIFdlIGhhdmUgdG8gcmVsZWFzZSBvdXIgcmVmZXJlbmNlIHRvIHRoZSBkZXN0aW5hdGlv
biBub2RlIGJlZm9yZSB0aGUgY29udGV4dCB3aWxsIGV2ZXIgYmUgZGVsZXRlZCBzaW5jZSB0aGUg
ZGVzdGluYXRpb24gbm9kZSBob2xkcyBhIHJlZmVyZW5jZSB0byB0aGUgY29udGV4dC4KKyAgICBp
ZiAobV9kZXN0aW5hdGlvbk5vZGUpCisgICAgICAgIG1fZGVzdGluYXRpb25Ob2RlID0gbnVsbHB0
cjsKKworICAgIC8vIEF1ZGlvIHRocmVhZCBpcyBkZWFkLiBOb2JvZHkgd2lsbCBzY2hlZHVsZSBu
b2RlIGRlbGV0aW9uIGFjdGlvbi4gTGV0J3MgZG8gaXQgb3Vyc2VsdmVzLgorICAgIGRvIHsKKyAg
ICAgICAgZGVsZXRlTWFya2VkTm9kZXMoKTsKKyAgICAgICAgbV9ub2Rlc1RvRGVsZXRlLmFwcGVu
ZFZlY3RvcihtX25vZGVzTWFya2VkRm9yRGVsZXRpb24pOworICAgICAgICBtX25vZGVzTWFya2Vk
Rm9yRGVsZXRpb24uY2xlYXIoKTsKKyAgICB9IHdoaWxlIChtX25vZGVzVG9EZWxldGUuc2l6ZSgp
KTsKKworICAgIGNsZWFyUGVuZGluZ0FjdGl2aXR5KCk7Cit9CisKK3ZvaWQgV2ViS2l0QXVkaW9D
b250ZXh0Ojp1bmluaXRpYWxpemUoKQoreworICAgIEFMV0FZU19MT0coTE9HSURFTlRJRklFUik7
CisKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworCisgICAgaWYgKCFtX2lzSW5pdGlhbGl6
ZWQpCisgICAgICAgIHJldHVybjsKKworICAgIC8vIFRoaXMgc3RvcHMgdGhlIGF1ZGlvIHRocmVh
ZCBhbmQgYWxsIGF1ZGlvIHJlbmRlcmluZy4KKyAgICBpZiAobV9kZXN0aW5hdGlvbk5vZGUpCisg
ICAgICAgIG1fZGVzdGluYXRpb25Ob2RlLT51bmluaXRpYWxpemUoKTsKKworICAgIC8vIERvbid0
IGFsbG93IHRoZSBjb250ZXh0IHRvIGluaXRpYWxpemUgYSBzZWNvbmQgdGltZSBhZnRlciBpdCdz
IGFscmVhZHkgYmVlbiBleHBsaWNpdGx5IHVuaW5pdGlhbGl6ZWQuCisgICAgbV9pc0F1ZGlvVGhy
ZWFkRmluaXNoZWQgPSB0cnVlOworCisgICAgaWYgKCFpc09mZmxpbmVDb250ZXh0KCkpIHsKKyAg
ICAgICAgQVNTRVJUKHNfaGFyZHdhcmVDb250ZXh0Q291bnQpOworICAgICAgICAtLXNfaGFyZHdh
cmVDb250ZXh0Q291bnQ7CisKKyAgICAgICAgLy8gT2ZmbGluZSBjb250ZXh0cyBtb3ZlIHRvICdD
bG9zZWQnIHN0YXRlIHdoZW4gZGlzcGF0Y2hpbmcgdGhlIGNvbXBsZXRpb24gZXZlbnQuCisgICAg
ICAgIHNldFN0YXRlKFN0YXRlOjpDbG9zZWQpOworICAgIH0KKworICAgIC8vIEdldCByaWQgb2Yg
dGhlIHNvdXJjZXMgd2hpY2ggbWF5IHN0aWxsIGJlIHBsYXlpbmcuCisgICAgZGVyZWZVbmZpbmlz
aGVkU291cmNlTm9kZXMoKTsKKworICAgIG1faXNJbml0aWFsaXplZCA9IGZhbHNlOworfQorCiti
b29sIFdlYktpdEF1ZGlvQ29udGV4dDo6aXNJbml0aWFsaXplZCgpIGNvbnN0Cit7CisgICAgcmV0
dXJuIG1faXNJbml0aWFsaXplZDsKK30KKwordm9pZCBXZWJLaXRBdWRpb0NvbnRleHQ6OmFkZFJl
YWN0aW9uKFN0YXRlIHN0YXRlLCBET01Qcm9taXNlRGVmZXJyZWQ8dm9pZD4mJiBwcm9taXNlKQor
eworICAgIHNpemVfdCBzdGF0ZUluZGV4ID0gc3RhdGljX2Nhc3Q8c2l6ZV90PihzdGF0ZSk7Cisg
ICAgaWYgKHN0YXRlSW5kZXggPj0gbV9zdGF0ZVJlYWN0aW9ucy5zaXplKCkpCisgICAgICAgIG1f
c3RhdGVSZWFjdGlvbnMuZ3JvdyhzdGF0ZUluZGV4ICsgMSk7CisKKyAgICBtX3N0YXRlUmVhY3Rp
b25zW3N0YXRlSW5kZXhdLmFwcGVuZChXVEZNb3ZlKHByb21pc2UpKTsKK30KKwordm9pZCBXZWJL
aXRBdWRpb0NvbnRleHQ6OnNldFN0YXRlKFN0YXRlIHN0YXRlKQoreworICAgIGlmIChtX3N0YXRl
ID09IHN0YXRlKQorICAgICAgICByZXR1cm47CisKKyAgICBtX3N0YXRlID0gc3RhdGU7CisgICAg
bV9ldmVudFF1ZXVlLT5lbnF1ZXVlRXZlbnQoRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkuc3Rh
dGVjaGFuZ2VFdmVudCwgRXZlbnQ6OkNhbkJ1YmJsZTo6WWVzLCBFdmVudDo6SXNDYW5jZWxhYmxl
OjpObykpOworCisgICAgc2l6ZV90IHN0YXRlSW5kZXggPSBzdGF0aWNfY2FzdDxzaXplX3Q+KHN0
YXRlKTsKKyAgICBpZiAoc3RhdGVJbmRleCA+PSBtX3N0YXRlUmVhY3Rpb25zLnNpemUoKSkKKyAg
ICAgICAgcmV0dXJuOworCisgICAgVmVjdG9yPERPTVByb21pc2VEZWZlcnJlZDx2b2lkPj4gcmVh
Y3Rpb25zOworICAgIG1fc3RhdGVSZWFjdGlvbnNbc3RhdGVJbmRleF0uc3dhcChyZWFjdGlvbnMp
OworCisgICAgZm9yIChhdXRvJiBwcm9taXNlIDogcmVhY3Rpb25zKQorICAgICAgICBwcm9taXNl
LnJlc29sdmUoKTsKK30KKwordm9pZCBXZWJLaXRBdWRpb0NvbnRleHQ6OnN0b3AoKQoreworICAg
IEFMV0FZU19MT0coTE9HSURFTlRJRklFUik7CisKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkp
OworCisgICAgLy8gVXN1YWxseSBTY3JpcHRFeGVjdXRpb25Db250ZXh0IGNhbGxzIHN0b3AgdHdp
Y2UuCisgICAgaWYgKG1faXNTdG9wU2NoZWR1bGVkKQorICAgICAgICByZXR1cm47CisgICAgbV9p
c1N0b3BTY2hlZHVsZWQgPSB0cnVlOworCisgICAgQVNTRVJUKGRvY3VtZW50KCkpOworICAgIGRv
Y3VtZW50KCktPnVwZGF0ZUlzUGxheWluZ01lZGlhKCk7CisKKyAgICB1bmluaXRpYWxpemUoKTsK
KyAgICBjbGVhcigpOworfQorCit2b2lkIFdlYktpdEF1ZGlvQ29udGV4dDo6c3VzcGVuZChSZWFz
b25Gb3JTdXNwZW5zaW9uKQoreworICAgIGlmIChzdGF0ZSgpID09IFN0YXRlOjpSdW5uaW5nKSB7
CisgICAgICAgIG1fbWVkaWFTZXNzaW9uLT5iZWdpbkludGVycnVwdGlvbihQbGF0Zm9ybU1lZGlh
U2Vzc2lvbjo6UGxheWJhY2tTdXNwZW5kZWQpOworICAgICAgICBkb2N1bWVudCgpLT51cGRhdGVJ
c1BsYXlpbmdNZWRpYSgpOworICAgIH0KK30KKwordm9pZCBXZWJLaXRBdWRpb0NvbnRleHQ6OnJl
c3VtZSgpCit7CisgICAgaWYgKHN0YXRlKCkgPT0gU3RhdGU6OkludGVycnVwdGVkKSB7CisgICAg
ICAgIG1fbWVkaWFTZXNzaW9uLT5lbmRJbnRlcnJ1cHRpb24oUGxhdGZvcm1NZWRpYVNlc3Npb246
Ok1heVJlc3VtZVBsYXlpbmcpOworICAgICAgICBkb2N1bWVudCgpLT51cGRhdGVJc1BsYXlpbmdN
ZWRpYSgpOworICAgIH0KK30KKworY29uc3QgY2hhciogV2ViS2l0QXVkaW9Db250ZXh0OjphY3Rp
dmVET01PYmplY3ROYW1lKCkgY29uc3QKK3sKKyAgICByZXR1cm4gIldlYktpdEF1ZGlvQ29udGV4
dCI7Cit9CisKK0RvY3VtZW50SWRlbnRpZmllciBXZWJLaXRBdWRpb0NvbnRleHQ6Omhvc3RpbmdE
b2N1bWVudElkZW50aWZpZXIoKSBjb25zdAoreworICAgIGF1dG8qIGRvY3VtZW50ID0gZG93bmNh
c3Q8RG9jdW1lbnQ+KG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dCk7CisgICAgcmV0dXJuIGRvY3Vt
ZW50ID8gZG9jdW1lbnQtPmlkZW50aWZpZXIoKSA6IERvY3VtZW50SWRlbnRpZmllciB7IH07Cit9
CisKK2Jvb2wgV2ViS2l0QXVkaW9Db250ZXh0Ojppc1N1c3BlbmRlZCgpIGNvbnN0Cit7CisgICAg
cmV0dXJuICFkb2N1bWVudCgpIHx8IGRvY3VtZW50KCktPmFjdGl2ZURPTU9iamVjdHNBcmVTdXNw
ZW5kZWQoKSB8fCBkb2N1bWVudCgpLT5hY3RpdmVET01PYmplY3RzQXJlU3RvcHBlZCgpOworfQor
Cit2b2lkIFdlYktpdEF1ZGlvQ29udGV4dDo6dmlzaWJpbGl0eVN0YXRlQ2hhbmdlZCgpCit7Cisg
ICAgLy8gRG8gbm90IHN1c3BlbmQgaWYgYXVkaW8gaXMgYXVkaWJsZS4KKyAgICBpZiAoIWRvY3Vt
ZW50KCkgfHwgbWVkaWFTdGF0ZSgpID09IE1lZGlhUHJvZHVjZXI6OklzUGxheWluZ0F1ZGlvIHx8
IG1faXNTdG9wU2NoZWR1bGVkKQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAoZG9jdW1lbnQo
KS0+aGlkZGVuKCkpIHsKKyAgICAgICAgaWYgKHN0YXRlKCkgPT0gU3RhdGU6OlJ1bm5pbmcpIHsK
KyAgICAgICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoInZpc2liaWxpdHlTdGF0ZUNoYW5n
ZWQoKSBTdXNwZW5kaW5nIHBsYXliYWNrIGFmdGVyIGdvaW5nIHRvIHRoZSBiYWNrZ3JvdW5kIik7
CisgICAgICAgICAgICBtX21lZGlhU2Vzc2lvbi0+YmVnaW5JbnRlcnJ1cHRpb24oUGxhdGZvcm1N
ZWRpYVNlc3Npb246OkVudGVyaW5nQmFja2dyb3VuZCk7CisgICAgICAgIH0KKyAgICB9IGVsc2Ug
eworICAgICAgICBpZiAoc3RhdGUoKSA9PSBTdGF0ZTo6SW50ZXJydXB0ZWQpIHsKKyAgICAgICAg
ICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoInZpc2liaWxpdHlTdGF0ZUNoYW5nZWQoKSBSZXN1
bWluZyBwbGF5YmFjayBhZnRlciBlbnRlcmluZyBmb3JlZ3JvdW5kIik7CisgICAgICAgICAgICBt
X21lZGlhU2Vzc2lvbi0+ZW5kSW50ZXJydXB0aW9uKFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpNYXlS
ZXN1bWVQbGF5aW5nKTsKKyAgICAgICAgfQorICAgIH0KK30KKworYm9vbCBXZWJLaXRBdWRpb0Nv
bnRleHQ6OndvdWxkVGFpbnRPcmlnaW4oY29uc3QgVVJMJiB1cmwpIGNvbnN0Cit7CisgICAgaWYg
KHVybC5wcm90b2NvbElzRGF0YSgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBpZiAo
YXV0byogZG9jdW1lbnQgPSB0aGlzLT5kb2N1bWVudCgpKQorICAgICAgICByZXR1cm4gIWRvY3Vt
ZW50LT5zZWN1cml0eU9yaWdpbigpLmNhblJlcXVlc3QodXJsKTsKKworICAgIHJldHVybiBmYWxz
ZTsKK30KKworRXhjZXB0aW9uT3I8UmVmPEF1ZGlvQnVmZmVyPj4gV2ViS2l0QXVkaW9Db250ZXh0
OjpjcmVhdGVCdWZmZXIodW5zaWduZWQgbnVtYmVyT2ZDaGFubmVscywgc2l6ZV90IG51bWJlck9m
RnJhbWVzLCBmbG9hdCBzYW1wbGVSYXRlKQoreworICAgIGF1dG8gYXVkaW9CdWZmZXIgPSBBdWRp
b0J1ZmZlcjo6Y3JlYXRlKG51bWJlck9mQ2hhbm5lbHMsIG51bWJlck9mRnJhbWVzLCBzYW1wbGVS
YXRlKTsKKyAgICBpZiAoIWF1ZGlvQnVmZmVyKQorICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsg
Tm90U3VwcG9ydGVkRXJyb3IgfTsKKyAgICByZXR1cm4gYXVkaW9CdWZmZXIucmVsZWFzZU5vbk51
bGwoKTsKK30KKworRXhjZXB0aW9uT3I8UmVmPEF1ZGlvQnVmZmVyPj4gV2ViS2l0QXVkaW9Db250
ZXh0OjpjcmVhdGVCdWZmZXIoQXJyYXlCdWZmZXImIGFycmF5QnVmZmVyLCBib29sIG1peFRvTW9u
bykKK3sKKyAgICBhdXRvIGF1ZGlvQnVmZmVyID0gQXVkaW9CdWZmZXI6OmNyZWF0ZUZyb21BdWRp
b0ZpbGVEYXRhKGFycmF5QnVmZmVyLmRhdGEoKSwgYXJyYXlCdWZmZXIuYnl0ZUxlbmd0aCgpLCBt
aXhUb01vbm8sIHNhbXBsZVJhdGUoKSk7CisgICAgaWYgKCFhdWRpb0J1ZmZlcikKKyAgICAgICAg
cmV0dXJuIEV4Y2VwdGlvbiB7IFN5bnRheEVycm9yIH07CisgICAgcmV0dXJuIGF1ZGlvQnVmZmVy
LnJlbGVhc2VOb25OdWxsKCk7Cit9CisKK3ZvaWQgV2ViS2l0QXVkaW9Db250ZXh0OjpkZWNvZGVB
dWRpb0RhdGEoUmVmPEFycmF5QnVmZmVyPiYmIGF1ZGlvRGF0YSwgUmVmUHRyPEF1ZGlvQnVmZmVy
Q2FsbGJhY2s+JiYgc3VjY2Vzc0NhbGxiYWNrLCBSZWZQdHI8QXVkaW9CdWZmZXJDYWxsYmFjaz4m
JiBlcnJvckNhbGxiYWNrKQoreworICAgIGlmICghbV9hdWRpb0RlY29kZXIpCisgICAgICAgIG1f
YXVkaW9EZWNvZGVyID0gbWFrZVVuaXF1ZTxBc3luY0F1ZGlvRGVjb2Rlcj4oKTsKKyAgICBtX2F1
ZGlvRGVjb2Rlci0+ZGVjb2RlQXN5bmMoV1RGTW92ZShhdWRpb0RhdGEpLCBzYW1wbGVSYXRlKCks
IFdURk1vdmUoc3VjY2Vzc0NhbGxiYWNrKSwgV1RGTW92ZShlcnJvckNhbGxiYWNrKSk7Cit9CisK
K0V4Y2VwdGlvbk9yPFJlZjxBdWRpb0J1ZmZlclNvdXJjZU5vZGU+PiBXZWJLaXRBdWRpb0NvbnRl
eHQ6OmNyZWF0ZUJ1ZmZlclNvdXJjZSgpCit7CisgICAgQUxXQVlTX0xPRyhMT0dJREVOVElGSUVS
KTsKKworICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisKKyAgICBpZiAobV9pc1N0b3BTY2hl
ZHVsZWQpCisgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBJbnZhbGlkU3RhdGVFcnJvciB9Owor
CisgICAgbGF6eUluaXRpYWxpemUoKTsKKyAgICBSZWY8QXVkaW9CdWZmZXJTb3VyY2VOb2RlPiBu
b2RlID0gQXVkaW9CdWZmZXJTb3VyY2VOb2RlOjpjcmVhdGUoKnRoaXMsIHNhbXBsZVJhdGUoKSk7
CisKKyAgICAvLyBCZWNhdXNlIHRoaXMgaXMgYW4gQXVkaW9TY2hlZHVsZWRTb3VyY2VOb2RlLCB0
aGUgY29udGV4dCBrZWVwcyBhIHJlZmVyZW5jZSB1bnRpbCBpdCBoYXMgZmluaXNoZWQgcGxheWlu
Zy4KKyAgICAvLyBXaGVuIHRoaXMgaGFwcGVucywgQXVkaW9TY2hlZHVsZWRTb3VyY2VOb2RlOjpm
aW5pc2goKSBjYWxscyBXZWJLaXRBdWRpb0NvbnRleHQ6Om5vdGlmeU5vZGVGaW5pc2hlZFByb2Nl
c3NpbmcoKS4KKyAgICByZWZOb2RlKG5vZGUpOworCisgICAgcmV0dXJuIG5vZGU7Cit9CisKKyNp
ZiBFTkFCTEUoVklERU8pCisKK0V4Y2VwdGlvbk9yPFJlZjxNZWRpYUVsZW1lbnRBdWRpb1NvdXJj
ZU5vZGU+PiBXZWJLaXRBdWRpb0NvbnRleHQ6OmNyZWF0ZU1lZGlhRWxlbWVudFNvdXJjZShIVE1M
TWVkaWFFbGVtZW50JiBtZWRpYUVsZW1lbnQpCit7CisgICAgQUxXQVlTX0xPRyhMT0dJREVOVElG
SUVSKTsKKworICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisKKyAgICBpZiAobV9pc1N0b3BT
Y2hlZHVsZWQgfHwgbWVkaWFFbGVtZW50LmF1ZGlvU291cmNlTm9kZSgpKQorICAgICAgICByZXR1
cm4gRXhjZXB0aW9uIHsgSW52YWxpZFN0YXRlRXJyb3IgfTsKKworICAgIGxhenlJbml0aWFsaXpl
KCk7CisKKyAgICBhdXRvIG5vZGUgPSBNZWRpYUVsZW1lbnRBdWRpb1NvdXJjZU5vZGU6OmNyZWF0
ZSgqdGhpcywgbWVkaWFFbGVtZW50KTsKKworICAgIG1lZGlhRWxlbWVudC5zZXRBdWRpb1NvdXJj
ZU5vZGUobm9kZS5wdHIoKSk7CisKKyAgICByZWZOb2RlKG5vZGUuZ2V0KCkpOyAvLyBjb250ZXh0
IGtlZXBzIHJlZmVyZW5jZSB1bnRpbCBub2RlIGlzIGRpc2Nvbm5lY3RlZAorICAgIHJldHVybiBu
b2RlOworfQorCisjZW5kaWYKKworI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCisKK0V4Y2VwdGlv
bk9yPFJlZjxNZWRpYVN0cmVhbUF1ZGlvU291cmNlTm9kZT4+IFdlYktpdEF1ZGlvQ29udGV4dDo6
Y3JlYXRlTWVkaWFTdHJlYW1Tb3VyY2UoTWVkaWFTdHJlYW0mIG1lZGlhU3RyZWFtKQoreworICAg
IEFMV0FZU19MT0coTE9HSURFTlRJRklFUik7CisKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkp
OworCisgICAgaWYgKG1faXNTdG9wU2NoZWR1bGVkKQorICAgICAgICByZXR1cm4gRXhjZXB0aW9u
IHsgSW52YWxpZFN0YXRlRXJyb3IgfTsKKworICAgIGF1dG8gYXVkaW9UcmFja3MgPSBtZWRpYVN0
cmVhbS5nZXRBdWRpb1RyYWNrcygpOworICAgIGlmIChhdWRpb1RyYWNrcy5pc0VtcHR5KCkpCisg
ICAgICAgIHJldHVybiBFeGNlcHRpb24geyBJbnZhbGlkU3RhdGVFcnJvciB9OworCisgICAgTWVk
aWFTdHJlYW1UcmFjayogcHJvdmlkZXJUcmFjayA9IG51bGxwdHI7CisgICAgZm9yIChhdXRvJiB0
cmFjayA6IGF1ZGlvVHJhY2tzKSB7CisgICAgICAgIGlmICh0cmFjay0+YXVkaW9Tb3VyY2VQcm92
aWRlcigpKSB7CisgICAgICAgICAgICBwcm92aWRlclRyYWNrID0gdHJhY2suZ2V0KCk7CisgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgIH0KKyAgICBpZiAoIXByb3ZpZGVyVHJhY2sp
CisgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBJbnZhbGlkU3RhdGVFcnJvciB9OworCisgICAg
bGF6eUluaXRpYWxpemUoKTsKKworICAgIGF1dG8gbm9kZSA9IE1lZGlhU3RyZWFtQXVkaW9Tb3Vy
Y2VOb2RlOjpjcmVhdGUoKnRoaXMsIG1lZGlhU3RyZWFtLCAqcHJvdmlkZXJUcmFjayk7CisgICAg
bm9kZS0+c2V0Rm9ybWF0KDIsIHNhbXBsZVJhdGUoKSk7CisKKyAgICByZWZOb2RlKG5vZGUpOyAv
LyBjb250ZXh0IGtlZXBzIHJlZmVyZW5jZSB1bnRpbCBub2RlIGlzIGRpc2Nvbm5lY3RlZAorICAg
IHJldHVybiBub2RlOworfQorCitFeGNlcHRpb25PcjxSZWY8TWVkaWFTdHJlYW1BdWRpb0Rlc3Rp
bmF0aW9uTm9kZT4+IFdlYktpdEF1ZGlvQ29udGV4dDo6Y3JlYXRlTWVkaWFTdHJlYW1EZXN0aW5h
dGlvbigpCit7CisgICAgaWYgKG1faXNTdG9wU2NoZWR1bGVkKQorICAgICAgICByZXR1cm4gRXhj
ZXB0aW9uIHsgSW52YWxpZFN0YXRlRXJyb3IgfTsKKworICAgIC8vIEZJWE1FOiBBZGQgc3VwcG9y
dCBmb3IgYW4gb3B0aW9uYWwgYXJndW1lbnQgd2hpY2ggc3BlY2lmaWVzIHRoZSBudW1iZXIgb2Yg
Y2hhbm5lbHMuCisgICAgLy8gRklYTUU6IFRoZSBkZWZhdWx0IHNob3VsZCBwcm9iYWJseSBiZSBz
dGVyZW8gaW5zdGVhZCBvZiBtb25vLgorICAgIHJldHVybiBNZWRpYVN0cmVhbUF1ZGlvRGVzdGlu
YXRpb25Ob2RlOjpjcmVhdGUoKnRoaXMsIDEpOworfQorCisjZW5kaWYKKworRXhjZXB0aW9uT3I8
UmVmPFNjcmlwdFByb2Nlc3Nvck5vZGU+PiBXZWJLaXRBdWRpb0NvbnRleHQ6OmNyZWF0ZVNjcmlw
dFByb2Nlc3NvcihzaXplX3QgYnVmZmVyU2l6ZSwgc2l6ZV90IG51bWJlck9mSW5wdXRDaGFubmVs
cywgc2l6ZV90IG51bWJlck9mT3V0cHV0Q2hhbm5lbHMpCit7CisgICAgQUxXQVlTX0xPRyhMT0dJ
REVOVElGSUVSKTsKKworICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisKKyAgICBpZiAobV9p
c1N0b3BTY2hlZHVsZWQpCisgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBJbnZhbGlkU3RhdGVF
cnJvciB9OworCisgICAgbGF6eUluaXRpYWxpemUoKTsKKworICAgIC8vIFczQyBFZGl0b3IncyBE
cmFmdCAwNiBKdW5lIDIwMTcKKyAgICAvLyAgaHR0cHM6Ly93ZWJhdWRpby5naXRodWIuaW8vd2Vi
LWF1ZGlvLWFwaS8jd2lkbC1CYXNlQXVkaW9Db250ZXh0LWNyZWF0ZVNjcmlwdFByb2Nlc3Nvci1T
Y3JpcHRQcm9jZXNzb3JOb2RlLXVuc2lnbmVkLWxvbmctYnVmZmVyU2l6ZS11bnNpZ25lZC1sb25n
LW51bWJlck9mSW5wdXRDaGFubmVscy11bnNpZ25lZC1sb25nLW51bWJlck9mT3V0cHV0Q2hhbm5l
bHMKKworICAgIC8vIFRoZSBidWZmZXJTaXplIHBhcmFtZXRlciBkZXRlcm1pbmVzIHRoZSBidWZm
ZXIgc2l6ZSBpbiB1bml0cyBvZiBzYW1wbGUtZnJhbWVzLiBJZiBpdCdzIG5vdCBwYXNzZWQgaW4s
CisgICAgLy8gb3IgaWYgdGhlIHZhbHVlIGlzIDAsIHRoZW4gdGhlIGltcGxlbWVudGF0aW9uIHdp
bGwgY2hvb3NlIHRoZSBiZXN0IGJ1ZmZlciBzaXplIGZvciB0aGUgZ2l2ZW4gZW52aXJvbm1lbnQs
CisgICAgLy8gd2hpY2ggd2lsbCBiZSBjb25zdGFudCBwb3dlciBvZiAyIHRocm91Z2hvdXQgdGhl
IGxpZmV0aW1lIG9mIHRoZSBub2RlLiAuLi4gSWYgdGhlIHZhbHVlIG9mIHRoaXMgcGFyYW1ldGVy
CisgICAgLy8gaXMgbm90IG9uZSBvZiB0aGUgYWxsb3dlZCBwb3dlci1vZi0yIHZhbHVlcyBsaXN0
ZWQgYWJvdmUsIGFuIEluZGV4U2l6ZUVycm9yIG11c3QgYmUgdGhyb3duLgorICAgIHN3aXRjaCAo
YnVmZmVyU2l6ZSkgeworICAgIGNhc2UgMDoKKyNpZiBVU0UoQVVESU9fU0VTU0lPTikKKyAgICAg
ICAgLy8gUGljayBhIHZhbHVlIGJldHdlZW4gMjU2ICgyXjgpIGFuZCAxNjM4NCAoMl4xNCksIGJh
c2VkIG9uIHRoZSBidWZmZXIgc2l6ZSBvZiB0aGUgY3VycmVudCBBdWRpb1Nlc3Npb246CisgICAg
ICAgIGJ1ZmZlclNpemUgPSAxIDw8IHN0ZDo6bWF4PHNpemVfdD4oOCwgc3RkOjptaW48c2l6ZV90
PigxNCwgc3RkOjpsb2cyKEF1ZGlvU2Vzc2lvbjo6c2hhcmVkU2Vzc2lvbigpLmJ1ZmZlclNpemUo
KSkpKTsKKyNlbHNlCisgICAgICAgIGJ1ZmZlclNpemUgPSAyMDQ4OworI2VuZGlmCisgICAgICAg
IGJyZWFrOworICAgIGNhc2UgMjU2OgorICAgIGNhc2UgNTEyOgorICAgIGNhc2UgMTAyNDoKKyAg
ICBjYXNlIDIwNDg6CisgICAgY2FzZSA0MDk2OgorICAgIGNhc2UgODE5MjoKKyAgICBjYXNlIDE2
Mzg0OgorICAgICAgICBicmVhazsKKyAgICBkZWZhdWx0OgorICAgICAgICByZXR1cm4gRXhjZXB0
aW9uIHsgSW5kZXhTaXplRXJyb3IgfTsKKyAgICB9CisKKyAgICAvLyBBbiBJbmRleFNpemVFcnJv
ciBleGNlcHRpb24gbXVzdCBiZSB0aHJvd24gaWYgYnVmZmVyU2l6ZSBvciBudW1iZXJPZklucHV0
Q2hhbm5lbHMgb3IgbnVtYmVyT2ZPdXRwdXRDaGFubmVscworICAgIC8vIGFyZSBvdXRzaWRlIHRo
ZSB2YWxpZCByYW5nZS4gSXQgaXMgaW52YWxpZCBmb3IgYm90aCBudW1iZXJPZklucHV0Q2hhbm5l
bHMgYW5kIG51bWJlck9mT3V0cHV0Q2hhbm5lbHMgdG8gYmUgemVyby4KKyAgICAvLyBJbiB0aGlz
IGNhc2UgYW4gSW5kZXhTaXplRXJyb3IgbXVzdCBiZSB0aHJvd24uCisKKyAgICBpZiAoIW51bWJl
ck9mSW5wdXRDaGFubmVscyAmJiAhbnVtYmVyT2ZPdXRwdXRDaGFubmVscykKKyAgICAgICAgcmV0
dXJuIEV4Y2VwdGlvbiB7IE5vdFN1cHBvcnRlZEVycm9yIH07CisKKyAgICAvLyBUaGlzIHBhcmFt
ZXRlciBbbnVtYmVyT2ZJbnB1dENoYW5uZWxzXSBkZXRlcm1pbmVzIHRoZSBudW1iZXIgb2YgY2hh
bm5lbHMgZm9yIHRoaXMgbm9kZSdzIGlucHV0LiBWYWx1ZXMgb2YKKyAgICAvLyB1cCB0byAzMiBt
dXN0IGJlIHN1cHBvcnRlZC4gQSBOb3RTdXBwb3J0ZWRFcnJvciBtdXN0IGJlIHRocm93biBpZiB0
aGUgbnVtYmVyIG9mIGNoYW5uZWxzIGlzIG5vdCBzdXBwb3J0ZWQuCisKKyAgICBpZiAobnVtYmVy
T2ZJbnB1dENoYW5uZWxzID4gbWF4TnVtYmVyT2ZDaGFubmVscygpKQorICAgICAgICByZXR1cm4g
RXhjZXB0aW9uIHsgTm90U3VwcG9ydGVkRXJyb3IgfTsKKworICAgIC8vIFRoaXMgcGFyYW1ldGVy
IFtudW1iZXJPZk91dHB1dENoYW5uZWxzXSBkZXRlcm1pbmVzIHRoZSBudW1iZXIgb2YgY2hhbm5l
bHMgZm9yIHRoaXMgbm9kZSdzIG91dHB1dC4gVmFsdWVzIG9mCisgICAgLy8gdXAgdG8gMzIgbXVz
dCBiZSBzdXBwb3J0ZWQuIEEgTm90U3VwcG9ydGVkRXJyb3IgbXVzdCBiZSB0aHJvd24gaWYgdGhl
IG51bWJlciBvZiBjaGFubmVscyBpcyBub3Qgc3VwcG9ydGVkLgorCisgICAgaWYgKG51bWJlck9m
T3V0cHV0Q2hhbm5lbHMgPiBtYXhOdW1iZXJPZkNoYW5uZWxzKCkpCisgICAgICAgIHJldHVybiBF
eGNlcHRpb24geyBOb3RTdXBwb3J0ZWRFcnJvciB9OworCisgICAgYXV0byBub2RlID0gU2NyaXB0
UHJvY2Vzc29yTm9kZTo6Y3JlYXRlKCp0aGlzLCBzYW1wbGVSYXRlKCksIGJ1ZmZlclNpemUsIG51
bWJlck9mSW5wdXRDaGFubmVscywgbnVtYmVyT2ZPdXRwdXRDaGFubmVscyk7CisKKyAgICByZWZO
b2RlKG5vZGUpOyAvLyBjb250ZXh0IGtlZXBzIHJlZmVyZW5jZSB1bnRpbCB3ZSBzdG9wIG1ha2lu
ZyBqYXZhc2NyaXB0IHJlbmRlcmluZyBjYWxsYmFja3MKKyAgICByZXR1cm4gbm9kZTsKK30KKwor
RXhjZXB0aW9uT3I8UmVmPEJpcXVhZEZpbHRlck5vZGU+PiBXZWJLaXRBdWRpb0NvbnRleHQ6OmNy
ZWF0ZUJpcXVhZEZpbHRlcigpCit7CisgICAgQUxXQVlTX0xPRyhMT0dJREVOVElGSUVSKTsKKwor
ICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisgICAgaWYgKG1faXNTdG9wU2NoZWR1bGVkKQor
ICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgSW52YWxpZFN0YXRlRXJyb3IgfTsKKworICAgIGxh
enlJbml0aWFsaXplKCk7CisKKyAgICByZXR1cm4gQmlxdWFkRmlsdGVyTm9kZTo6Y3JlYXRlKCp0
aGlzLCBzYW1wbGVSYXRlKCkpOworfQorCitFeGNlcHRpb25PcjxSZWY8V2F2ZVNoYXBlck5vZGU+
PiBXZWJLaXRBdWRpb0NvbnRleHQ6OmNyZWF0ZVdhdmVTaGFwZXIoKQoreworICAgIEFMV0FZU19M
T0coTE9HSURFTlRJRklFUik7CisKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAgIGlm
IChtX2lzU3RvcFNjaGVkdWxlZCkKKyAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IEludmFsaWRT
dGF0ZUVycm9yIH07CisKKyAgICBsYXp5SW5pdGlhbGl6ZSgpOworICAgIHJldHVybiBXYXZlU2hh
cGVyTm9kZTo6Y3JlYXRlKCp0aGlzKTsKK30KKworRXhjZXB0aW9uT3I8UmVmPFdlYktpdEF1ZGlv
UGFubmVyTm9kZT4+IFdlYktpdEF1ZGlvQ29udGV4dDo6Y3JlYXRlUGFubmVyKCkKK3sKKyAgICBB
TFdBWVNfTE9HKExPR0lERU5USUZJRVIpOworCisgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsK
KyAgICBpZiAobV9pc1N0b3BTY2hlZHVsZWQpCisgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBJ
bnZhbGlkU3RhdGVFcnJvciB9OworCisgICAgbGF6eUluaXRpYWxpemUoKTsKKyAgICByZXR1cm4g
V2ViS2l0QXVkaW9QYW5uZXJOb2RlOjpjcmVhdGUoKnRoaXMsIHNhbXBsZVJhdGUoKSk7Cit9CisK
K0V4Y2VwdGlvbk9yPFJlZjxDb252b2x2ZXJOb2RlPj4gV2ViS2l0QXVkaW9Db250ZXh0OjpjcmVh
dGVDb252b2x2ZXIoKQoreworICAgIEFMV0FZU19MT0coTE9HSURFTlRJRklFUik7CisKKyAgICBB
U1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAgIGlmIChtX2lzU3RvcFNjaGVkdWxlZCkKKyAgICAg
ICAgcmV0dXJuIEV4Y2VwdGlvbiB7IEludmFsaWRTdGF0ZUVycm9yIH07CisKKyAgICBsYXp5SW5p
dGlhbGl6ZSgpOworICAgIHJldHVybiBDb252b2x2ZXJOb2RlOjpjcmVhdGUoKnRoaXMsIHNhbXBs
ZVJhdGUoKSk7Cit9CisKK0V4Y2VwdGlvbk9yPFJlZjxEeW5hbWljc0NvbXByZXNzb3JOb2RlPj4g
V2ViS2l0QXVkaW9Db250ZXh0OjpjcmVhdGVEeW5hbWljc0NvbXByZXNzb3IoKQoreworICAgIEFM
V0FZU19MT0coTE9HSURFTlRJRklFUik7CisKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwor
ICAgIGlmIChtX2lzU3RvcFNjaGVkdWxlZCkKKyAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IElu
dmFsaWRTdGF0ZUVycm9yIH07CisKKyAgICBsYXp5SW5pdGlhbGl6ZSgpOworICAgIHJldHVybiBE
eW5hbWljc0NvbXByZXNzb3JOb2RlOjpjcmVhdGUoKnRoaXMsIHNhbXBsZVJhdGUoKSk7Cit9CisK
K0V4Y2VwdGlvbk9yPFJlZjxBbmFseXNlck5vZGU+PiBXZWJLaXRBdWRpb0NvbnRleHQ6OmNyZWF0
ZUFuYWx5c2VyKCkKK3sKKyAgICBBTFdBWVNfTE9HKExPR0lERU5USUZJRVIpOworCisgICAgQVNT
RVJUKGlzTWFpblRocmVhZCgpKTsKKyAgICBpZiAobV9pc1N0b3BTY2hlZHVsZWQpCisgICAgICAg
IHJldHVybiBFeGNlcHRpb24geyBJbnZhbGlkU3RhdGVFcnJvciB9OworCisgICAgbGF6eUluaXRp
YWxpemUoKTsKKyAgICByZXR1cm4gQW5hbHlzZXJOb2RlOjpjcmVhdGUoKnRoaXMsIHNhbXBsZVJh
dGUoKSk7Cit9CisKK0V4Y2VwdGlvbk9yPFJlZjxHYWluTm9kZT4+IFdlYktpdEF1ZGlvQ29udGV4
dDo6Y3JlYXRlR2FpbigpCit7CisgICAgQUxXQVlTX0xPRyhMT0dJREVOVElGSUVSKTsKKworICAg
IEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisgICAgaWYgKG1faXNTdG9wU2NoZWR1bGVkKQorICAg
ICAgICByZXR1cm4gRXhjZXB0aW9uIHsgSW52YWxpZFN0YXRlRXJyb3IgfTsKKworICAgIGxhenlJ
bml0aWFsaXplKCk7CisgICAgcmV0dXJuIEdhaW5Ob2RlOjpjcmVhdGUoKnRoaXMsIHNhbXBsZVJh
dGUoKSk7Cit9CisKK0V4Y2VwdGlvbk9yPFJlZjxEZWxheU5vZGU+PiBXZWJLaXRBdWRpb0NvbnRl
eHQ6OmNyZWF0ZURlbGF5KGRvdWJsZSBtYXhEZWxheVRpbWUpCit7CisgICAgQUxXQVlTX0xPRyhM
T0dJREVOVElGSUVSKTsKKworICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisgICAgaWYgKG1f
aXNTdG9wU2NoZWR1bGVkKQorICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgSW52YWxpZFN0YXRl
RXJyb3IgfTsKKworICAgIGxhenlJbml0aWFsaXplKCk7CisgICAgcmV0dXJuIERlbGF5Tm9kZTo6
Y3JlYXRlKCp0aGlzLCBzYW1wbGVSYXRlKCksIG1heERlbGF5VGltZSk7Cit9CisKK0V4Y2VwdGlv
bk9yPFJlZjxDaGFubmVsU3BsaXR0ZXJOb2RlPj4gV2ViS2l0QXVkaW9Db250ZXh0OjpjcmVhdGVD
aGFubmVsU3BsaXR0ZXIoc2l6ZV90IG51bWJlck9mT3V0cHV0cykKK3sKKyAgICBBTFdBWVNfTE9H
KExPR0lERU5USUZJRVIpOworCisgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKyAgICBpZiAo
bV9pc1N0b3BTY2hlZHVsZWQpCisgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBJbnZhbGlkU3Rh
dGVFcnJvciB9OworCisgICAgbGF6eUluaXRpYWxpemUoKTsKKyAgICBhdXRvIG5vZGUgPSBDaGFu
bmVsU3BsaXR0ZXJOb2RlOjpjcmVhdGUoKnRoaXMsIHNhbXBsZVJhdGUoKSwgbnVtYmVyT2ZPdXRw
dXRzKTsKKyAgICBpZiAoIW5vZGUpCisgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBJbmRleFNp
emVFcnJvciB9OworICAgIHJldHVybiBub2RlLnJlbGVhc2VOb25OdWxsKCk7Cit9CisKK0V4Y2Vw
dGlvbk9yPFJlZjxDaGFubmVsTWVyZ2VyTm9kZT4+IFdlYktpdEF1ZGlvQ29udGV4dDo6Y3JlYXRl
Q2hhbm5lbE1lcmdlcihzaXplX3QgbnVtYmVyT2ZJbnB1dHMpCit7CisgICAgQUxXQVlTX0xPRyhM
T0dJREVOVElGSUVSKTsKKworICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisgICAgaWYgKG1f
aXNTdG9wU2NoZWR1bGVkKQorICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgSW52YWxpZFN0YXRl
RXJyb3IgfTsKKworICAgIGxhenlJbml0aWFsaXplKCk7CisgICAgYXV0byBub2RlID0gQ2hhbm5l
bE1lcmdlck5vZGU6OmNyZWF0ZSgqdGhpcywgc2FtcGxlUmF0ZSgpLCBudW1iZXJPZklucHV0cyk7
CisgICAgaWYgKCFub2RlKQorICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgSW5kZXhTaXplRXJy
b3IgfTsKKyAgICByZXR1cm4gbm9kZS5yZWxlYXNlTm9uTnVsbCgpOworfQorCitFeGNlcHRpb25P
cjxSZWY8T3NjaWxsYXRvck5vZGU+PiBXZWJLaXRBdWRpb0NvbnRleHQ6OmNyZWF0ZU9zY2lsbGF0
b3IoKQoreworICAgIEFMV0FZU19MT0coTE9HSURFTlRJRklFUik7CisKKyAgICBBU1NFUlQoaXNN
YWluVGhyZWFkKCkpOworICAgIGlmIChtX2lzU3RvcFNjaGVkdWxlZCkKKyAgICAgICAgcmV0dXJu
IEV4Y2VwdGlvbiB7IEludmFsaWRTdGF0ZUVycm9yIH07CisKKyAgICBsYXp5SW5pdGlhbGl6ZSgp
OworCisgICAgUmVmPE9zY2lsbGF0b3JOb2RlPiBub2RlID0gT3NjaWxsYXRvck5vZGU6OmNyZWF0
ZSgqdGhpcywgc2FtcGxlUmF0ZSgpKTsKKworICAgIC8vIEJlY2F1c2UgdGhpcyBpcyBhbiBBdWRp
b1NjaGVkdWxlZFNvdXJjZU5vZGUsIHRoZSBjb250ZXh0IGtlZXBzIGEgcmVmZXJlbmNlIHVudGls
IGl0IGhhcyBmaW5pc2hlZCBwbGF5aW5nLgorICAgIC8vIFdoZW4gdGhpcyBoYXBwZW5zLCBBdWRp
b1NjaGVkdWxlZFNvdXJjZU5vZGU6OmZpbmlzaCgpIGNhbGxzIFdlYktpdEF1ZGlvQ29udGV4dDo6
bm90aWZ5Tm9kZUZpbmlzaGVkUHJvY2Vzc2luZygpLgorICAgIHJlZk5vZGUobm9kZSk7CisKKyAg
ICByZXR1cm4gbm9kZTsKK30KKworRXhjZXB0aW9uT3I8UmVmPFBlcmlvZGljV2F2ZT4+IFdlYktp
dEF1ZGlvQ29udGV4dDo6Y3JlYXRlUGVyaW9kaWNXYXZlKEZsb2F0MzJBcnJheSYgcmVhbCwgRmxv
YXQzMkFycmF5JiBpbWFnaW5hcnkpCit7CisgICAgQUxXQVlTX0xPRyhMT0dJREVOVElGSUVSKTsK
KworICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisgICAgaWYgKG1faXNTdG9wU2NoZWR1bGVk
KQorICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgSW52YWxpZFN0YXRlRXJyb3IgfTsKKworICAg
IGlmIChyZWFsLmxlbmd0aCgpICE9IGltYWdpbmFyeS5sZW5ndGgoKSB8fCAocmVhbC5sZW5ndGgo
KSA+IE1heFBlcmlvZGljV2F2ZUxlbmd0aCkgfHwgIXJlYWwubGVuZ3RoKCkpCisgICAgICAgIHJl
dHVybiBFeGNlcHRpb24geyBJbmRleFNpemVFcnJvciB9OworICAgIGxhenlJbml0aWFsaXplKCk7
CisgICAgcmV0dXJuIFBlcmlvZGljV2F2ZTo6Y3JlYXRlKHNhbXBsZVJhdGUoKSwgcmVhbCwgaW1h
Z2luYXJ5KTsKK30KKwordm9pZCBXZWJLaXRBdWRpb0NvbnRleHQ6Om5vdGlmeU5vZGVGaW5pc2hl
ZFByb2Nlc3NpbmcoQXVkaW9Ob2RlKiBub2RlKQoreworICAgIEFTU0VSVChpc0F1ZGlvVGhyZWFk
KCkpOworICAgIG1fZmluaXNoZWROb2Rlcy5hcHBlbmQobm9kZSk7Cit9CisKK3ZvaWQgV2ViS2l0
QXVkaW9Db250ZXh0OjpkZXJlZkZpbmlzaGVkU291cmNlTm9kZXMoKQoreworICAgIEFTU0VSVChp
c0dyYXBoT3duZXIoKSk7CisgICAgQVNTRVJUKGlzQXVkaW9UaHJlYWQoKSB8fCBpc0F1ZGlvVGhy
ZWFkRmluaXNoZWQoKSk7CisgICAgZm9yIChhdXRvJiBub2RlIDogbV9maW5pc2hlZE5vZGVzKQor
ICAgICAgICBkZXJlZk5vZGUoKm5vZGUpOworCisgICAgbV9maW5pc2hlZE5vZGVzLmNsZWFyKCk7
Cit9CisKK3ZvaWQgV2ViS2l0QXVkaW9Db250ZXh0OjpyZWZOb2RlKEF1ZGlvTm9kZSYgbm9kZSkK
K3sKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAgIEF1dG9Mb2NrZXIgbG9ja2VyKCp0
aGlzKTsKKworICAgIG5vZGUucmVmKEF1ZGlvTm9kZTo6UmVmVHlwZUNvbm5lY3Rpb24pOworICAg
IG1fcmVmZXJlbmNlZE5vZGVzLmFwcGVuZCgmbm9kZSk7Cit9CisKK3ZvaWQgV2ViS2l0QXVkaW9D
b250ZXh0OjpkZXJlZk5vZGUoQXVkaW9Ob2RlJiBub2RlKQoreworICAgIEFTU0VSVChpc0dyYXBo
T3duZXIoKSk7CisKKyAgICBub2RlLmRlcmVmKEF1ZGlvTm9kZTo6UmVmVHlwZUNvbm5lY3Rpb24p
OworCisgICAgQVNTRVJUKG1fcmVmZXJlbmNlZE5vZGVzLmNvbnRhaW5zKCZub2RlKSk7CisgICAg
bV9yZWZlcmVuY2VkTm9kZXMucmVtb3ZlRmlyc3QoJm5vZGUpOworfQorCit2b2lkIFdlYktpdEF1
ZGlvQ29udGV4dDo6ZGVyZWZVbmZpbmlzaGVkU291cmNlTm9kZXMoKQoreworICAgIEFTU0VSVChp
c01haW5UaHJlYWQoKSAmJiBpc0F1ZGlvVGhyZWFkRmluaXNoZWQoKSk7CisgICAgZm9yIChhdXRv
JiBub2RlIDogbV9yZWZlcmVuY2VkTm9kZXMpCisgICAgICAgIG5vZGUtPmRlcmVmKEF1ZGlvTm9k
ZTo6UmVmVHlwZUNvbm5lY3Rpb24pOworCisgICAgbV9yZWZlcmVuY2VkTm9kZXMuY2xlYXIoKTsK
K30KKwordm9pZCBXZWJLaXRBdWRpb0NvbnRleHQ6OmxvY2soYm9vbCYgbXVzdFJlbGVhc2VMb2Nr
KQoreworICAgIC8vIERvbid0IGFsbG93IHJlZ3VsYXIgbG9jayBpbiByZWFsLXRpbWUgYXVkaW8g
dGhyZWFkLgorICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisKKyAgICBUaHJlYWQmIHRoaXNU
aHJlYWQgPSBUaHJlYWQ6OmN1cnJlbnQoKTsKKworICAgIGlmICgmdGhpc1RocmVhZCA9PSBtX2dy
YXBoT3duZXJUaHJlYWQpIHsKKyAgICAgICAgLy8gV2UgYWxyZWFkeSBoYXZlIHRoZSBsb2NrLgor
ICAgICAgICBtdXN0UmVsZWFzZUxvY2sgPSBmYWxzZTsKKyAgICB9IGVsc2UgeworICAgICAgICAv
LyBBY3F1aXJlIHRoZSBsb2NrLgorICAgICAgICBtX2NvbnRleHRHcmFwaE11dGV4LmxvY2soKTsK
KyAgICAgICAgbV9ncmFwaE93bmVyVGhyZWFkID0gJnRoaXNUaHJlYWQ7CisgICAgICAgIG11c3RS
ZWxlYXNlTG9jayA9IHRydWU7CisgICAgfQorfQorCitib29sIFdlYktpdEF1ZGlvQ29udGV4dDo6
dHJ5TG9jayhib29sJiBtdXN0UmVsZWFzZUxvY2spCit7CisgICAgVGhyZWFkJiB0aGlzVGhyZWFk
ID0gVGhyZWFkOjpjdXJyZW50KCk7CisgICAgYm9vbCBpc0F1ZGlvVGhyZWFkID0gJnRoaXNUaHJl
YWQgPT0gYXVkaW9UaHJlYWQoKTsKKworICAgIC8vIFRyeSB0byBjYXRjaCBjYXNlcyBvZiB1c2lu
ZyB0cnkgbG9jayBvbiBtYWluIHRocmVhZCAtIGl0IHNob3VsZCB1c2UgcmVndWxhciBsb2NrLgor
ICAgIEFTU0VSVChpc0F1ZGlvVGhyZWFkIHx8IGlzQXVkaW9UaHJlYWRGaW5pc2hlZCgpKTsKKwor
ICAgIGlmICghaXNBdWRpb1RocmVhZCkgeworICAgICAgICAvLyBJbiByZWxlYXNlIGJ1aWxkIHRy
ZWF0IHRyeUxvY2soKSBhcyBsb2NrKCkgKHNpbmNlIGFib3ZlIEFTU0VSVChpc0F1ZGlvVGhyZWFk
KSBuZXZlciBmaXJlcykgLSB0aGlzIGlzIHRoZSBiZXN0IHdlIGNhbiBkby4KKyAgICAgICAgbG9j
ayhtdXN0UmVsZWFzZUxvY2spOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisKKyAgICBi
b29sIGhhc0xvY2s7CisKKyAgICBpZiAoJnRoaXNUaHJlYWQgPT0gbV9ncmFwaE93bmVyVGhyZWFk
KSB7CisgICAgICAgIC8vIFRocmVhZCBhbHJlYWR5IGhhcyB0aGUgbG9jay4KKyAgICAgICAgaGFz
TG9jayA9IHRydWU7CisgICAgICAgIG11c3RSZWxlYXNlTG9jayA9IGZhbHNlOworICAgIH0gZWxz
ZSB7CisgICAgICAgIC8vIERvbid0IGFscmVhZHkgaGF2ZSB0aGUgbG9jayAtIHRyeSB0byBhY3F1
aXJlIGl0LgorICAgICAgICBoYXNMb2NrID0gbV9jb250ZXh0R3JhcGhNdXRleC50cnlMb2NrKCk7
CisKKyAgICAgICAgaWYgKGhhc0xvY2spCisgICAgICAgICAgICBtX2dyYXBoT3duZXJUaHJlYWQg
PSAmdGhpc1RocmVhZDsKKworICAgICAgICBtdXN0UmVsZWFzZUxvY2sgPSBoYXNMb2NrOworICAg
IH0KKworICAgIHJldHVybiBoYXNMb2NrOworfQorCit2b2lkIFdlYktpdEF1ZGlvQ29udGV4dDo6
dW5sb2NrKCkKK3sKKyAgICBBU1NFUlQobV9ncmFwaE93bmVyVGhyZWFkID09ICZUaHJlYWQ6OmN1
cnJlbnQoKSk7CisKKyAgICBtX2dyYXBoT3duZXJUaHJlYWQgPSBudWxscHRyOworICAgIG1fY29u
dGV4dEdyYXBoTXV0ZXgudW5sb2NrKCk7Cit9CisKK2Jvb2wgV2ViS2l0QXVkaW9Db250ZXh0Ojpp
c0F1ZGlvVGhyZWFkKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9hdWRpb1RocmVhZCA9PSAmVGhy
ZWFkOjpjdXJyZW50KCk7Cit9CisKK2Jvb2wgV2ViS2l0QXVkaW9Db250ZXh0Ojppc0dyYXBoT3du
ZXIoKSBjb25zdAoreworICAgIHJldHVybiBtX2dyYXBoT3duZXJUaHJlYWQgPT0gJlRocmVhZDo6
Y3VycmVudCgpOworfQorCit2b2lkIFdlYktpdEF1ZGlvQ29udGV4dDo6YWRkRGVmZXJyZWRGaW5p
c2hEZXJlZihBdWRpb05vZGUqIG5vZGUpCit7CisgICAgQVNTRVJUKGlzQXVkaW9UaHJlYWQoKSk7
CisgICAgbV9kZWZlcnJlZEZpbmlzaERlcmVmTGlzdC5hcHBlbmQobm9kZSk7Cit9CisKK3ZvaWQg
V2ViS2l0QXVkaW9Db250ZXh0OjpoYW5kbGVQcmVSZW5kZXJUYXNrcygpCit7CisgICAgQVNTRVJU
KGlzQXVkaW9UaHJlYWQoKSk7CisKKyAgICAvLyBBdCB0aGUgYmVnaW5uaW5nIG9mIGV2ZXJ5IHJl
bmRlciBxdWFudHVtLCB0cnkgdG8gdXBkYXRlIHRoZSBpbnRlcm5hbCByZW5kZXJpbmcgZ3JhcGgg
c3RhdGUgKGZyb20gbWFpbiB0aHJlYWQgY2hhbmdlcykuCisgICAgLy8gSXQncyBPSyBpZiB0aGUg
dHJ5TG9jaygpIGZhaWxzLCB3ZSdsbCBqdXN0IHRha2Ugc2xpZ2h0bHkgbG9uZ2VyIHRvIHBpY2sg
dXAgdGhlIGNoYW5nZXMuCisgICAgYm9vbCBtdXN0UmVsZWFzZUxvY2s7CisgICAgaWYgKHRyeUxv
Y2sobXVzdFJlbGVhc2VMb2NrKSkgeworICAgICAgICAvLyBGaXh1cCB0aGUgc3RhdGUgb2YgYW55
IGRpcnR5IEF1ZGlvU3VtbWluZ0p1bmN0aW9ucyBhbmQgQXVkaW9Ob2RlT3V0cHV0cy4KKyAgICAg
ICAgaGFuZGxlRGlydHlBdWRpb1N1bW1pbmdKdW5jdGlvbnMoKTsKKyAgICAgICAgaGFuZGxlRGly
dHlBdWRpb05vZGVPdXRwdXRzKCk7CisKKyAgICAgICAgdXBkYXRlQXV0b21hdGljUHVsbE5vZGVz
KCk7CisKKyAgICAgICAgaWYgKG11c3RSZWxlYXNlTG9jaykKKyAgICAgICAgICAgIHVubG9jaygp
OworICAgIH0KK30KKwordm9pZCBXZWJLaXRBdWRpb0NvbnRleHQ6OmhhbmRsZVBvc3RSZW5kZXJU
YXNrcygpCit7CisgICAgQVNTRVJUKGlzQXVkaW9UaHJlYWQoKSk7CisKKyAgICAvLyBNdXN0IHVz
ZSBhIHRyeUxvY2soKSBoZXJlIHRvby4gRG9uJ3Qgd29ycnksIHRoZSBsb2NrIHdpbGwgdmVyeSBy
YXJlbHkgYmUgY29udGVuZGVkIGFuZCB0aGlzIG1ldGhvZCBpcyBjYWxsZWQgZnJlcXVlbnRseS4K
KyAgICAvLyBUaGUgd29yc3QgdGhhdCBjYW4gaGFwcGVuIGlzIHRoYXQgdGhlcmUgd2lsbCBiZSBz
b21lIG5vZGVzIHdoaWNoIHdpbGwgdGFrZSBzbGlnaHRseSBsb25nZXIgdGhhbiB1c3VhbCB0byBi
ZSBkZWxldGVkIG9yIHJlbW92ZWQKKyAgICAvLyBmcm9tIHRoZSByZW5kZXIgZ3JhcGggKGluIHdo
aWNoIGNhc2UgdGhleSdsbCByZW5kZXIgc2lsZW5jZSkuCisgICAgYm9vbCBtdXN0UmVsZWFzZUxv
Y2s7CisgICAgaWYgKHRyeUxvY2sobXVzdFJlbGVhc2VMb2NrKSkgeworICAgICAgICAvLyBUYWtl
IGNhcmUgb2YgZmluaXNoaW5nIGFueSBkZXJlZnMgd2hlcmUgdGhlIHRyeUxvY2soKSBmYWlsZWQg
cHJldmlvdXNseS4KKyAgICAgICAgaGFuZGxlRGVmZXJyZWRGaW5pc2hEZXJlZnMoKTsKKworICAg
ICAgICAvLyBEeW5hbWljYWxseSBjbGVhbiB1cCBub2RlcyB3aGljaCBhcmUgbm8gbG9uZ2VyIG5l
ZWRlZC4KKyAgICAgICAgZGVyZWZGaW5pc2hlZFNvdXJjZU5vZGVzKCk7CisKKyAgICAgICAgLy8g
RG9uJ3QgZGVsZXRlIGluIHRoZSByZWFsLXRpbWUgdGhyZWFkLiBMZXQgdGhlIG1haW4gdGhyZWFk
IGRvIGl0LgorICAgICAgICAvLyBSZWYtY291bnRlZCBvYmplY3RzIGhlbGQgYnkgY2VydGFpbiBB
dWRpb05vZGVzIG1heSBub3QgYmUgdGhyZWFkLXNhZmUuCisgICAgICAgIHNjaGVkdWxlTm9kZURl
bGV0aW9uKCk7CisKKyAgICAgICAgLy8gRml4dXAgdGhlIHN0YXRlIG9mIGFueSBkaXJ0eSBBdWRp
b1N1bW1pbmdKdW5jdGlvbnMgYW5kIEF1ZGlvTm9kZU91dHB1dHMuCisgICAgICAgIGhhbmRsZURp
cnR5QXVkaW9TdW1taW5nSnVuY3Rpb25zKCk7CisgICAgICAgIGhhbmRsZURpcnR5QXVkaW9Ob2Rl
T3V0cHV0cygpOworCisgICAgICAgIHVwZGF0ZUF1dG9tYXRpY1B1bGxOb2RlcygpOworCisgICAg
ICAgIGlmIChtdXN0UmVsZWFzZUxvY2spCisgICAgICAgICAgICB1bmxvY2soKTsKKyAgICB9Cit9
CisKK3ZvaWQgV2ViS2l0QXVkaW9Db250ZXh0OjpoYW5kbGVEZWZlcnJlZEZpbmlzaERlcmVmcygp
Cit7CisgICAgQVNTRVJUKGlzQXVkaW9UaHJlYWQoKSAmJiBpc0dyYXBoT3duZXIoKSk7CisgICAg
Zm9yIChhdXRvJiBub2RlIDogbV9kZWZlcnJlZEZpbmlzaERlcmVmTGlzdCkKKyAgICAgICAgbm9k
ZS0+ZmluaXNoRGVyZWYoQXVkaW9Ob2RlOjpSZWZUeXBlQ29ubmVjdGlvbik7CisKKyAgICBtX2Rl
ZmVycmVkRmluaXNoRGVyZWZMaXN0LmNsZWFyKCk7Cit9CisKK3ZvaWQgV2ViS2l0QXVkaW9Db250
ZXh0OjptYXJrRm9yRGVsZXRpb24oQXVkaW9Ob2RlJiBub2RlKQoreworICAgIEFTU0VSVChpc0dy
YXBoT3duZXIoKSk7CisKKyAgICBpZiAoaXNBdWRpb1RocmVhZEZpbmlzaGVkKCkpCisgICAgICAg
IG1fbm9kZXNUb0RlbGV0ZS5hcHBlbmQoJm5vZGUpOworICAgIGVsc2UKKyAgICAgICAgbV9ub2Rl
c01hcmtlZEZvckRlbGV0aW9uLmFwcGVuZCgmbm9kZSk7CisKKyAgICAvLyBUaGlzIGlzIHByb2Jh
Ymx5IHRoZSBiZXN0IHRpbWUgZm9yIHVzIHRvIHJlbW92ZSB0aGUgbm9kZSBmcm9tIGF1dG9tYXRp
YyBwdWxsIGxpc3QsCisgICAgLy8gc2luY2UgYWxsIGNvbm5lY3Rpb25zIGFyZSBnb25lIGFuZCB3
ZSBob2xkIHRoZSBncmFwaCBsb2NrLiBUaGVuIHdoZW4gaGFuZGxlUG9zdFJlbmRlclRhc2tzKCkK
KyAgICAvLyBnZXRzIGEgY2hhbmNlIHRvIHNjaGVkdWxlIHRoZSBkZWxldGlvbiB3b3JrLCB1cGRh
dGVBdXRvbWF0aWNQdWxsTm9kZXMoKSBhbHNvIGdldHMgYSBjaGFuY2UgdG8KKyAgICAvLyBtb2Rp
ZnkgbV9yZW5kZXJpbmdBdXRvbWF0aWNQdWxsTm9kZXMuCisgICAgcmVtb3ZlQXV0b21hdGljUHVs
bE5vZGUobm9kZSk7Cit9CisKK3ZvaWQgV2ViS2l0QXVkaW9Db250ZXh0OjpzY2hlZHVsZU5vZGVE
ZWxldGlvbigpCit7CisgICAgYm9vbCBpc0dvb2QgPSBtX2lzSW5pdGlhbGl6ZWQgJiYgaXNHcmFw
aE93bmVyKCk7CisgICAgQVNTRVJUKGlzR29vZCk7CisgICAgaWYgKCFpc0dvb2QpCisgICAgICAg
IHJldHVybjsKKworICAgIC8vIE1ha2Ugc3VyZSB0byBjYWxsIGRlbGV0ZU1hcmtlZE5vZGVzKCkg
b24gbWFpbiB0aHJlYWQuCisgICAgaWYgKG1fbm9kZXNNYXJrZWRGb3JEZWxldGlvbi5zaXplKCkg
JiYgIW1faXNEZWxldGlvblNjaGVkdWxlZCkgeworICAgICAgICBtX25vZGVzVG9EZWxldGUuYXBw
ZW5kVmVjdG9yKG1fbm9kZXNNYXJrZWRGb3JEZWxldGlvbik7CisgICAgICAgIG1fbm9kZXNNYXJr
ZWRGb3JEZWxldGlvbi5jbGVhcigpOworCisgICAgICAgIG1faXNEZWxldGlvblNjaGVkdWxlZCA9
IHRydWU7CisKKyAgICAgICAgY2FsbE9uTWFpblRocmVhZChbcHJvdGVjdGVkVGhpcyA9IG1ha2VS
ZWYoKnRoaXMpXSgpIG11dGFibGUgeworICAgICAgICAgICAgcHJvdGVjdGVkVGhpcy0+ZGVsZXRl
TWFya2VkTm9kZXMoKTsKKyAgICAgICAgfSk7CisgICAgfQorfQorCit2b2lkIFdlYktpdEF1ZGlv
Q29udGV4dDo6ZGVsZXRlTWFya2VkTm9kZXMoKQoreworICAgIEFTU0VSVChpc01haW5UaHJlYWQo
KSk7CisKKyAgICAvLyBQcm90ZWN0IHRoaXMgb2JqZWN0IGZyb20gYmVpbmcgZGVsZXRlZCBiZWZv
cmUgd2UgcmVsZWFzZSB0aGUgbXV0ZXggbG9ja2VkIGJ5IEF1dG9Mb2NrZXIuCisgICAgUmVmPFdl
YktpdEF1ZGlvQ29udGV4dD4gcHJvdGVjdGVkVGhpcygqdGhpcyk7CisgICAgeworICAgICAgICBB
dXRvTG9ja2VyIGxvY2tlcigqdGhpcyk7CisKKyAgICAgICAgd2hpbGUgKG1fbm9kZXNUb0RlbGV0
ZS5zaXplKCkpIHsKKyAgICAgICAgICAgIEF1ZGlvTm9kZSogbm9kZSA9IG1fbm9kZXNUb0RlbGV0
ZS50YWtlTGFzdCgpOworCisgICAgICAgICAgICAvLyBCZWZvcmUgZGVsZXRpbmcgdGhlIG5vZGUs
IGNsZWFyIG91dCBhbnkgQXVkaW9Ob2RlSW5wdXRzIGZyb20gbV9kaXJ0eVN1bW1pbmdKdW5jdGlv
bnMuCisgICAgICAgICAgICB1bnNpZ25lZCBudW1iZXJPZklucHV0cyA9IG5vZGUtPm51bWJlck9m
SW5wdXRzKCk7CisgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbnVtYmVyT2ZJ
bnB1dHM7ICsraSkKKyAgICAgICAgICAgICAgICBtX2RpcnR5U3VtbWluZ0p1bmN0aW9ucy5yZW1v
dmUobm9kZS0+aW5wdXQoaSkpOworCisgICAgICAgICAgICAvLyBCZWZvcmUgZGVsZXRpbmcgdGhl
IG5vZGUsIGNsZWFyIG91dCBhbnkgQXVkaW9Ob2RlT3V0cHV0cyBmcm9tIG1fZGlydHlBdWRpb05v
ZGVPdXRwdXRzLgorICAgICAgICAgICAgdW5zaWduZWQgbnVtYmVyT2ZPdXRwdXRzID0gbm9kZS0+
bnVtYmVyT2ZPdXRwdXRzKCk7CisgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwg
bnVtYmVyT2ZPdXRwdXRzOyArK2kpCisgICAgICAgICAgICAgICAgbV9kaXJ0eUF1ZGlvTm9kZU91
dHB1dHMucmVtb3ZlKG5vZGUtPm91dHB1dChpKSk7CisKKyAgICAgICAgICAgIC8vIEZpbmFsbHks
IGRlbGV0ZSBpdC4KKyAgICAgICAgICAgIGRlbGV0ZSBub2RlOworICAgICAgICB9CisgICAgICAg
IG1faXNEZWxldGlvblNjaGVkdWxlZCA9IGZhbHNlOworICAgIH0KK30KKwordm9pZCBXZWJLaXRB
dWRpb0NvbnRleHQ6Om1hcmtTdW1taW5nSnVuY3Rpb25EaXJ0eShBdWRpb1N1bW1pbmdKdW5jdGlv
biogc3VtbWluZ0p1bmN0aW9uKQoreworICAgIEFTU0VSVChpc0dyYXBoT3duZXIoKSk7CisgICAg
bV9kaXJ0eVN1bW1pbmdKdW5jdGlvbnMuYWRkKHN1bW1pbmdKdW5jdGlvbik7Cit9CisKK3ZvaWQg
V2ViS2l0QXVkaW9Db250ZXh0OjpyZW1vdmVNYXJrZWRTdW1taW5nSnVuY3Rpb24oQXVkaW9TdW1t
aW5nSnVuY3Rpb24qIHN1bW1pbmdKdW5jdGlvbikKK3sKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFk
KCkpOworICAgIEF1dG9Mb2NrZXIgbG9ja2VyKCp0aGlzKTsKKyAgICBtX2RpcnR5U3VtbWluZ0p1
bmN0aW9ucy5yZW1vdmUoc3VtbWluZ0p1bmN0aW9uKTsKK30KKwordm9pZCBXZWJLaXRBdWRpb0Nv
bnRleHQ6Om1hcmtBdWRpb05vZGVPdXRwdXREaXJ0eShBdWRpb05vZGVPdXRwdXQqIG91dHB1dCkK
K3sKKyAgICBBU1NFUlQoaXNHcmFwaE93bmVyKCkpOworICAgIG1fZGlydHlBdWRpb05vZGVPdXRw
dXRzLmFkZChvdXRwdXQpOworfQorCit2b2lkIFdlYktpdEF1ZGlvQ29udGV4dDo6aGFuZGxlRGly
dHlBdWRpb1N1bW1pbmdKdW5jdGlvbnMoKQoreworICAgIEFTU0VSVChpc0dyYXBoT3duZXIoKSk7
CisKKyAgICBmb3IgKGF1dG8mIGp1bmN0aW9uIDogbV9kaXJ0eVN1bW1pbmdKdW5jdGlvbnMpCisg
ICAgICAgIGp1bmN0aW9uLT51cGRhdGVSZW5kZXJpbmdTdGF0ZSgpOworCisgICAgbV9kaXJ0eVN1
bW1pbmdKdW5jdGlvbnMuY2xlYXIoKTsKK30KKwordm9pZCBXZWJLaXRBdWRpb0NvbnRleHQ6Omhh
bmRsZURpcnR5QXVkaW9Ob2RlT3V0cHV0cygpCit7CisgICAgQVNTRVJUKGlzR3JhcGhPd25lcigp
KTsKKworICAgIGZvciAoYXV0byYgb3V0cHV0IDogbV9kaXJ0eUF1ZGlvTm9kZU91dHB1dHMpCisg
ICAgICAgIG91dHB1dC0+dXBkYXRlUmVuZGVyaW5nU3RhdGUoKTsKKworICAgIG1fZGlydHlBdWRp
b05vZGVPdXRwdXRzLmNsZWFyKCk7Cit9CisKK3ZvaWQgV2ViS2l0QXVkaW9Db250ZXh0OjphZGRB
dXRvbWF0aWNQdWxsTm9kZShBdWRpb05vZGUmIG5vZGUpCit7CisgICAgQVNTRVJUKGlzR3JhcGhP
d25lcigpKTsKKworICAgIGlmIChtX2F1dG9tYXRpY1B1bGxOb2Rlcy5hZGQoJm5vZGUpLmlzTmV3
RW50cnkpCisgICAgICAgIG1fYXV0b21hdGljUHVsbE5vZGVzTmVlZFVwZGF0aW5nID0gdHJ1ZTsK
K30KKwordm9pZCBXZWJLaXRBdWRpb0NvbnRleHQ6OnJlbW92ZUF1dG9tYXRpY1B1bGxOb2RlKEF1
ZGlvTm9kZSYgbm9kZSkKK3sKKyAgICBBU1NFUlQoaXNHcmFwaE93bmVyKCkpOworCisgICAgaWYg
KG1fYXV0b21hdGljUHVsbE5vZGVzLnJlbW92ZSgmbm9kZSkpCisgICAgICAgIG1fYXV0b21hdGlj
UHVsbE5vZGVzTmVlZFVwZGF0aW5nID0gdHJ1ZTsKK30KKwordm9pZCBXZWJLaXRBdWRpb0NvbnRl
eHQ6OnVwZGF0ZUF1dG9tYXRpY1B1bGxOb2RlcygpCit7CisgICAgQVNTRVJUKGlzR3JhcGhPd25l
cigpKTsKKworICAgIGlmIChtX2F1dG9tYXRpY1B1bGxOb2Rlc05lZWRVcGRhdGluZykgeworICAg
ICAgICAvLyBDb3B5IGZyb20gbV9hdXRvbWF0aWNQdWxsTm9kZXMgdG8gbV9yZW5kZXJpbmdBdXRv
bWF0aWNQdWxsTm9kZXMuCisgICAgICAgIG1fcmVuZGVyaW5nQXV0b21hdGljUHVsbE5vZGVzLnJl
c2l6ZShtX2F1dG9tYXRpY1B1bGxOb2Rlcy5zaXplKCkpOworCisgICAgICAgIHVuc2lnbmVkIGkg
PSAwOworICAgICAgICBmb3IgKGF1dG8mIG91dHB1dCA6IG1fYXV0b21hdGljUHVsbE5vZGVzKQor
ICAgICAgICAgICAgbV9yZW5kZXJpbmdBdXRvbWF0aWNQdWxsTm9kZXNbaSsrXSA9IG91dHB1dDsK
KworICAgICAgICBtX2F1dG9tYXRpY1B1bGxOb2Rlc05lZWRVcGRhdGluZyA9IGZhbHNlOworICAg
IH0KK30KKwordm9pZCBXZWJLaXRBdWRpb0NvbnRleHQ6OnByb2Nlc3NBdXRvbWF0aWNQdWxsTm9k
ZXMoc2l6ZV90IGZyYW1lc1RvUHJvY2VzcykKK3sKKyAgICBBU1NFUlQoaXNBdWRpb1RocmVhZCgp
KTsKKworICAgIGZvciAoYXV0byYgbm9kZSA6IG1fcmVuZGVyaW5nQXV0b21hdGljUHVsbE5vZGVz
KQorICAgICAgICBub2RlLT5wcm9jZXNzSWZOZWNlc3NhcnkoZnJhbWVzVG9Qcm9jZXNzKTsKK30K
Kwordm9pZCBXZWJLaXRBdWRpb0NvbnRleHQ6Om5vZGVXaWxsQmVnaW5QbGF5YmFjaygpCit7Cisg
ICAgLy8gQ2FsbGVkIGJ5IHNjaGVkdWxlZCBBdWRpb05vZGVzIHdoZW4gY2xpZW50cyBzY2hlZHVs
ZSB0aGVpciBzdGFydCB0aW1lcy4KKyAgICAvLyBQcmlvciB0byB0aGUgaW50cm9kdWN0aW9uIG9m
IHN1c3BlbmQoKSwgcmVzdW1lKCksIGFuZCBzdG9wKCksIHN0YXJ0aW5nCisgICAgLy8gYSBzY2hl
ZHVsZWQgQXVkaW9Ob2RlIHdvdWxkIHJlbW92ZSB0aGUgdXNlci1nZXN0dXJlIHJlc3RyaWN0aW9u
LCBpZiBwcmVzZW50LAorICAgIC8vIGFuZCB3b3VsZCB0aHVzIHVubXV0ZSB0aGUgY29udGV4dC4g
Tm93IHRoYXQgQXVkaW9Db250ZXh0IHN0YXlzIGluIHRoZQorICAgIC8vICJzdXNwZW5kZWQiIHN0
YXRlIGlmIGEgdXNlci1nZXN0dXJlIHJlc3RyaWN0aW9uIGlzIHByZXNlbnQsIHN0YXJ0aW5nIGEK
KyAgICAvLyBzY2hlZHVsZSBBdWRpb05vZGUgc2hvdWxkIHNldCB0aGUgc3RhdGUgdG8gInJ1bm5p
bmciLCBidXQgb25seSBpZiB0aGUKKyAgICAvLyB1c2VyLWdlc3R1cmUgcmVzdHJpY3Rpb24gaXMg
c2V0LgorICAgIGlmICh1c2VyR2VzdHVyZVJlcXVpcmVkRm9yQXVkaW9TdGFydCgpKQorICAgICAg
ICBzdGFydFJlbmRlcmluZygpOworfQorCitzdGF0aWMgYm9vbCBzaG91bGREb2N1bWVudEFsbG93
V2ViQXVkaW9Ub0F1dG9QbGF5KGNvbnN0IERvY3VtZW50JiBkb2N1bWVudCkKK3sKKyAgICBpZiAo
ZG9jdW1lbnQucHJvY2Vzc2luZ1VzZXJHZXN0dXJlRm9yTWVkaWEoKSB8fCBkb2N1bWVudC5pc0Nh
cHR1cmluZygpKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICByZXR1cm4gZG9jdW1lbnQucXVp
cmtzKCkuc2hvdWxkQXV0b3BsYXlXZWJBdWRpb0ZvckFyYml0cmFyeVVzZXJHZXN0dXJlKCkgJiYg
ZG9jdW1lbnQudG9wRG9jdW1lbnQoKS5oYXNIYWRVc2VySW50ZXJhY3Rpb24oKTsKK30KKworYm9v
bCBXZWJLaXRBdWRpb0NvbnRleHQ6OndpbGxCZWdpblBsYXliYWNrKCkKK3sKKyAgICBhdXRvKiBk
b2N1bWVudCA9IHRoaXMtPmRvY3VtZW50KCk7CisgICAgaWYgKCFkb2N1bWVudCkKKyAgICAgICAg
cmV0dXJuIGZhbHNlOworCisgICAgaWYgKHVzZXJHZXN0dXJlUmVxdWlyZWRGb3JBdWRpb1N0YXJ0
KCkpIHsKKyAgICAgICAgaWYgKCFzaG91bGREb2N1bWVudEFsbG93V2ViQXVkaW9Ub0F1dG9QbGF5
KCpkb2N1bWVudCkpIHsKKyAgICAgICAgICAgIEFMV0FZU19MT0coTE9HSURFTlRJRklFUiwgInJl
dHVybmluZyBmYWxzZSwgbm90IHByb2Nlc3NpbmcgdXNlciBnZXN0dXJlIG9yIGNhcHR1cmluZyIp
OworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisgICAgICAgIHJlbW92ZUJl
aGF2aW9yUmVzdHJpY3Rpb24oV2ViS2l0QXVkaW9Db250ZXh0OjpSZXF1aXJlVXNlckdlc3R1cmVG
b3JBdWRpb1N0YXJ0UmVzdHJpY3Rpb24pOworICAgIH0KKworICAgIGlmIChwYWdlQ29uc2VudFJl
cXVpcmVkRm9yQXVkaW9TdGFydCgpKSB7CisgICAgICAgIGF1dG8qIHBhZ2UgPSBkb2N1bWVudC0+
cGFnZSgpOworICAgICAgICBpZiAocGFnZSAmJiAhcGFnZS0+Y2FuU3RhcnRNZWRpYSgpKSB7Cisg
ICAgICAgICAgICBkb2N1bWVudC0+YWRkTWVkaWFDYW5TdGFydExpc3RlbmVyKCp0aGlzKTsKKyAg
ICAgICAgICAgIEFMV0FZU19MT0coTE9HSURFTlRJRklFUiwgInJldHVybmluZyBmYWxzZSwgcGFn
ZSBkb2Vzbid0IGFsbG93IG1lZGlhIHRvIHN0YXJ0Iik7CisgICAgICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgICAgIH0KKyAgICAgICAgcmVtb3ZlQmVoYXZpb3JSZXN0cmljdGlvbihXZWJLaXRB
dWRpb0NvbnRleHQ6OlJlcXVpcmVQYWdlQ29uc2VudEZvckF1ZGlvU3RhcnRSZXN0cmljdGlvbik7
CisgICAgfQorCisgICAgYXV0byB3aWxsQmVnaW4gPSBtX21lZGlhU2Vzc2lvbi0+Y2xpZW50V2ls
bEJlZ2luUGxheWJhY2soKTsKKyAgICBBTFdBWVNfTE9HKExPR0lERU5USUZJRVIsICJyZXR1cm5p
bmcgIiwgd2lsbEJlZ2luKTsKKworICAgIHJldHVybiB3aWxsQmVnaW47Cit9CisKK2Jvb2wgV2Vi
S2l0QXVkaW9Db250ZXh0Ojp3aWxsUGF1c2VQbGF5YmFjaygpCit7CisgICAgYXV0byogZG9jdW1l
bnQgPSB0aGlzLT5kb2N1bWVudCgpOworICAgIGlmICghZG9jdW1lbnQpCisgICAgICAgIHJldHVy
biBmYWxzZTsKKworICAgIGlmICh1c2VyR2VzdHVyZVJlcXVpcmVkRm9yQXVkaW9TdGFydCgpKSB7
CisgICAgICAgIGlmICghZG9jdW1lbnQtPnByb2Nlc3NpbmdVc2VyR2VzdHVyZUZvck1lZGlhKCkp
CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIHJlbW92ZUJlaGF2aW9yUmVzdHJp
Y3Rpb24oV2ViS2l0QXVkaW9Db250ZXh0OjpSZXF1aXJlVXNlckdlc3R1cmVGb3JBdWRpb1N0YXJ0
UmVzdHJpY3Rpb24pOworICAgIH0KKworICAgIGlmIChwYWdlQ29uc2VudFJlcXVpcmVkRm9yQXVk
aW9TdGFydCgpKSB7CisgICAgICAgIGF1dG8qIHBhZ2UgPSBkb2N1bWVudC0+cGFnZSgpOworICAg
ICAgICBpZiAocGFnZSAmJiAhcGFnZS0+Y2FuU3RhcnRNZWRpYSgpKSB7CisgICAgICAgICAgICBk
b2N1bWVudC0+YWRkTWVkaWFDYW5TdGFydExpc3RlbmVyKCp0aGlzKTsKKyAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICAgICAgfQorICAgICAgICByZW1vdmVCZWhhdmlvclJlc3RyaWN0aW9u
KFdlYktpdEF1ZGlvQ29udGV4dDo6UmVxdWlyZVBhZ2VDb25zZW50Rm9yQXVkaW9TdGFydFJlc3Ry
aWN0aW9uKTsKKyAgICB9CisKKyAgICByZXR1cm4gbV9tZWRpYVNlc3Npb24tPmNsaWVudFdpbGxQ
YXVzZVBsYXliYWNrKCk7Cit9CisKK3ZvaWQgV2ViS2l0QXVkaW9Db250ZXh0OjpzdGFydFJlbmRl
cmluZygpCit7CisgICAgQUxXQVlTX0xPRyhMT0dJREVOVElGSUVSKTsKKyAgICBpZiAobV9pc1N0
b3BTY2hlZHVsZWQgfHwgIXdpbGxCZWdpblBsYXliYWNrKCkpCisgICAgICAgIHJldHVybjsKKwor
ICAgIG1ha2VQZW5kaW5nQWN0aXZpdHkoKTsKKworICAgIGRlc3RpbmF0aW9uKCktPnN0YXJ0UmVu
ZGVyaW5nKCk7CisgICAgc2V0U3RhdGUoU3RhdGU6OlJ1bm5pbmcpOworfQorCit2b2lkIFdlYktp
dEF1ZGlvQ29udGV4dDo6bWVkaWFDYW5TdGFydChEb2N1bWVudCYgZG9jdW1lbnQpCit7CisgICAg
QVNTRVJUX1VOVVNFRChkb2N1bWVudCwgJmRvY3VtZW50ID09IHRoaXMtPmRvY3VtZW50KCkpOwor
ICAgIHJlbW92ZUJlaGF2aW9yUmVzdHJpY3Rpb24oV2ViS2l0QXVkaW9Db250ZXh0OjpSZXF1aXJl
UGFnZUNvbnNlbnRGb3JBdWRpb1N0YXJ0UmVzdHJpY3Rpb24pOworICAgIG1heVJlc3VtZVBsYXli
YWNrKHRydWUpOworfQorCitNZWRpYVByb2R1Y2VyOjpNZWRpYVN0YXRlRmxhZ3MgV2ViS2l0QXVk
aW9Db250ZXh0OjptZWRpYVN0YXRlKCkgY29uc3QKK3sKKyAgICBpZiAoIW1faXNTdG9wU2NoZWR1
bGVkICYmIG1fZGVzdGluYXRpb25Ob2RlICYmIG1fZGVzdGluYXRpb25Ob2RlLT5pc1BsYXlpbmdB
dWRpbygpKQorICAgICAgICByZXR1cm4gTWVkaWFQcm9kdWNlcjo6SXNQbGF5aW5nQXVkaW87CisK
KyAgICByZXR1cm4gTWVkaWFQcm9kdWNlcjo6SXNOb3RQbGF5aW5nOworfQorCit2b2lkIFdlYktp
dEF1ZGlvQ29udGV4dDo6cGFnZU11dGVkU3RhdGVEaWRDaGFuZ2UoKQoreworICAgIGlmIChtX2Rl
c3RpbmF0aW9uTm9kZSAmJiBkb2N1bWVudCgpICYmIGRvY3VtZW50KCktPnBhZ2UoKSkKKyAgICAg
ICAgbV9kZXN0aW5hdGlvbk5vZGUtPnNldE11dGVkKGRvY3VtZW50KCktPnBhZ2UoKS0+aXNBdWRp
b011dGVkKCkpOworfQorCit2b2lkIFdlYktpdEF1ZGlvQ29udGV4dDo6aXNQbGF5aW5nQXVkaW9E
aWRDaGFuZ2UoKQoreworICAgIC8vIE1ha2Ugc3VyZSB0byBjYWxsIERvY3VtZW50Ojp1cGRhdGVJ
c1BsYXlpbmdNZWRpYSgpIG9uIHRoZSBtYWluIHRocmVhZCwgc2luY2UKKyAgICAvLyB3ZSBjb3Vs
ZCBiZSBvbiB0aGUgYXVkaW8gSS9PIHRocmVhZCBoZXJlIGFuZCB0aGUgY2FsbCBpbnRvIFdlYkNv
cmUgY291bGQgYmxvY2suCisgICAgY2FsbE9uTWFpblRocmVhZChbcHJvdGVjdGVkVGhpcyA9IG1h
a2VSZWYoKnRoaXMpXSB7CisgICAgICAgIGlmIChwcm90ZWN0ZWRUaGlzLT5kb2N1bWVudCgpKQor
ICAgICAgICAgICAgcHJvdGVjdGVkVGhpcy0+ZG9jdW1lbnQoKS0+dXBkYXRlSXNQbGF5aW5nTWVk
aWEoKTsKKyAgICB9KTsKK30KKwordm9pZCBXZWJLaXRBdWRpb0NvbnRleHQ6OmZpbmlzaGVkUmVu
ZGVyaW5nKGJvb2wgZGlkUmVuZGVyaW5nKQoreworICAgIEFTU0VSVChpc09mZmxpbmVDb250ZXh0
KCkpOworICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisgICAgaWYgKCFpc01haW5UaHJlYWQo
KSkKKyAgICAgICAgcmV0dXJuOworCisgICAgYXV0byBjbGVhclBlbmRpbmdBY3Rpdml0eUlmRXhp
dEVhcmx5ID0gV1RGOjptYWtlU2NvcGVFeGl0KFt0aGlzXSB7CisgICAgICAgIGNsZWFyUGVuZGlu
Z0FjdGl2aXR5KCk7CisgICAgfSk7CisKKworICAgIEFMV0FZU19MT0coTE9HSURFTlRJRklFUik7
CisKKyAgICBpZiAoIWRpZFJlbmRlcmluZykKKyAgICAgICAgcmV0dXJuOworCisgICAgQXVkaW9C
dWZmZXIqIHJlbmRlcmVkQnVmZmVyID0gbV9yZW5kZXJUYXJnZXQuZ2V0KCk7CisgICAgc2V0U3Rh
dGUoU3RhdGU6OkNsb3NlZCk7CisKKyAgICBBU1NFUlQocmVuZGVyZWRCdWZmZXIpOworICAgIGlm
ICghcmVuZGVyZWRCdWZmZXIpCisgICAgICAgIHJldHVybjsKKworICAgIC8vIEF2b2lkIGZpcmlu
ZyB0aGUgZXZlbnQgaWYgdGhlIGRvY3VtZW50IGhhcyBhbHJlYWR5IGdvbmUgYXdheS4KKyAgICBp
ZiAobV9pc1N0b3BTY2hlZHVsZWQpCisgICAgICAgIHJldHVybjsKKworICAgIGNsZWFyUGVuZGlu
Z0FjdGl2aXR5SWZFeGl0RWFybHkucmVsZWFzZSgpOworICAgIG1fZXZlbnRRdWV1ZS0+ZW5xdWV1
ZUV2ZW50KE9mZmxpbmVBdWRpb0NvbXBsZXRpb25FdmVudDo6Y3JlYXRlKHJlbmRlcmVkQnVmZmVy
KSk7Cit9CisKK3ZvaWQgV2ViS2l0QXVkaW9Db250ZXh0OjpkaXNwYXRjaEV2ZW50KEV2ZW50JiBl
dmVudCkKK3sKKyAgICBFdmVudFRhcmdldDo6ZGlzcGF0Y2hFdmVudChldmVudCk7CisgICAgaWYg
KGV2ZW50LmV2ZW50SW50ZXJmYWNlKCkgPT0gT2ZmbGluZUF1ZGlvQ29tcGxldGlvbkV2ZW50SW50
ZXJmYWNlVHlwZSkKKyAgICAgICAgY2xlYXJQZW5kaW5nQWN0aXZpdHkoKTsKK30KKwordm9pZCBX
ZWJLaXRBdWRpb0NvbnRleHQ6OmluY3JlbWVudEFjdGl2ZVNvdXJjZUNvdW50KCkKK3sKKyAgICAr
K21fYWN0aXZlU291cmNlQ291bnQ7Cit9CisKK3ZvaWQgV2ViS2l0QXVkaW9Db250ZXh0OjpkZWNy
ZW1lbnRBY3RpdmVTb3VyY2VDb3VudCgpCit7CisgICAgLS1tX2FjdGl2ZVNvdXJjZUNvdW50Owor
fQorCit2b2lkIFdlYktpdEF1ZGlvQ29udGV4dDo6c3VzcGVuZFJlbmRlcmluZyhET01Qcm9taXNl
RGVmZXJyZWQ8dm9pZD4mJiBwcm9taXNlKQoreworICAgIGlmIChpc09mZmxpbmVDb250ZXh0KCkg
fHwgbV9pc1N0b3BTY2hlZHVsZWQpIHsKKyAgICAgICAgcHJvbWlzZS5yZWplY3QoSW52YWxpZFN0
YXRlRXJyb3IpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgaWYgKG1fc3RhdGUgPT0g
U3RhdGU6OlN1c3BlbmRlZCkgeworICAgICAgICBwcm9taXNlLnJlc29sdmUoKTsKKyAgICAgICAg
cmV0dXJuOworICAgIH0KKworICAgIGlmIChtX3N0YXRlID09IFN0YXRlOjpDbG9zZWQgfHwgbV9z
dGF0ZSA9PSBTdGF0ZTo6SW50ZXJydXB0ZWQgfHwgIW1fZGVzdGluYXRpb25Ob2RlKSB7CisgICAg
ICAgIHByb21pc2UucmVqZWN0KCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBhZGRS
ZWFjdGlvbihTdGF0ZTo6U3VzcGVuZGVkLCBXVEZNb3ZlKHByb21pc2UpKTsKKworICAgIGlmICgh
d2lsbFBhdXNlUGxheWJhY2soKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgbGF6eUluaXRpYWxp
emUoKTsKKworICAgIG1fZGVzdGluYXRpb25Ob2RlLT5zdXNwZW5kKFt0aGlzLCBwcm90ZWN0ZWRU
aGlzID0gbWFrZVJlZigqdGhpcyldIHsKKyAgICAgICAgc2V0U3RhdGUoU3RhdGU6OlN1c3BlbmRl
ZCk7CisgICAgfSk7Cit9CisKK3ZvaWQgV2ViS2l0QXVkaW9Db250ZXh0OjpyZXN1bWVSZW5kZXJp
bmcoRE9NUHJvbWlzZURlZmVycmVkPHZvaWQ+JiYgcHJvbWlzZSkKK3sKKyAgICBpZiAoaXNPZmZs
aW5lQ29udGV4dCgpIHx8IG1faXNTdG9wU2NoZWR1bGVkKSB7CisgICAgICAgIHByb21pc2UucmVq
ZWN0KEludmFsaWRTdGF0ZUVycm9yKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlm
IChtX3N0YXRlID09IFN0YXRlOjpSdW5uaW5nKSB7CisgICAgICAgIHByb21pc2UucmVzb2x2ZSgp
OworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgaWYgKG1fc3RhdGUgPT0gU3RhdGU6OkNs
b3NlZCB8fCAhbV9kZXN0aW5hdGlvbk5vZGUpIHsKKyAgICAgICAgcHJvbWlzZS5yZWplY3QoKTsK
KyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGFkZFJlYWN0aW9uKFN0YXRlOjpSdW5uaW5n
LCBXVEZNb3ZlKHByb21pc2UpKTsKKworICAgIGlmICghd2lsbEJlZ2luUGxheWJhY2soKSkKKyAg
ICAgICAgcmV0dXJuOworCisgICAgbGF6eUluaXRpYWxpemUoKTsKKworICAgIG1fZGVzdGluYXRp
b25Ob2RlLT5yZXN1bWUoW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKV0gewor
ICAgICAgICBzZXRTdGF0ZShTdGF0ZTo6UnVubmluZyk7CisgICAgfSk7Cit9CisKK3ZvaWQgV2Vi
S2l0QXVkaW9Db250ZXh0OjpjbG9zZShET01Qcm9taXNlRGVmZXJyZWQ8dm9pZD4mJiBwcm9taXNl
KQoreworICAgIGlmIChpc09mZmxpbmVDb250ZXh0KCkgfHwgbV9pc1N0b3BTY2hlZHVsZWQpIHsK
KyAgICAgICAgcHJvbWlzZS5yZWplY3QoSW52YWxpZFN0YXRlRXJyb3IpOworICAgICAgICByZXR1
cm47CisgICAgfQorCisgICAgaWYgKG1fc3RhdGUgPT0gU3RhdGU6OkNsb3NlZCB8fCAhbV9kZXN0
aW5hdGlvbk5vZGUpIHsKKyAgICAgICAgcHJvbWlzZS5yZXNvbHZlKCk7CisgICAgICAgIHJldHVy
bjsKKyAgICB9CisKKyAgICBhZGRSZWFjdGlvbihTdGF0ZTo6Q2xvc2VkLCBXVEZNb3ZlKHByb21p
c2UpKTsKKworICAgIGxhenlJbml0aWFsaXplKCk7CisKKyAgICBtX2Rlc3RpbmF0aW9uTm9kZS0+
Y2xvc2UoW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKV0geworICAgICAgICBz
ZXRTdGF0ZShTdGF0ZTo6Q2xvc2VkKTsKKyAgICAgICAgdW5pbml0aWFsaXplKCk7CisgICAgfSk7
Cit9CisKKwordm9pZCBXZWJLaXRBdWRpb0NvbnRleHQ6OnN1c3BlbmRQbGF5YmFjaygpCit7Cisg
ICAgaWYgKCFtX2Rlc3RpbmF0aW9uTm9kZSB8fCBtX3N0YXRlID09IFN0YXRlOjpDbG9zZWQpCisg
ICAgICAgIHJldHVybjsKKworICAgIGlmIChtX3N0YXRlID09IFN0YXRlOjpTdXNwZW5kZWQpIHsK
KyAgICAgICAgaWYgKG1fbWVkaWFTZXNzaW9uLT5zdGF0ZSgpID09IFBsYXRmb3JtTWVkaWFTZXNz
aW9uOjpJbnRlcnJ1cHRlZCkKKyAgICAgICAgICAgIHNldFN0YXRlKFN0YXRlOjpJbnRlcnJ1cHRl
ZCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBsYXp5SW5pdGlhbGl6ZSgpOworCisg
ICAgbV9kZXN0aW5hdGlvbk5vZGUtPnN1c3BlbmQoW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtl
UmVmKCp0aGlzKV0geworICAgICAgICBib29sIGludGVycnVwdGVkID0gbV9tZWRpYVNlc3Npb24t
PnN0YXRlKCkgPT0gUGxhdGZvcm1NZWRpYVNlc3Npb246OkludGVycnVwdGVkOworICAgICAgICBz
ZXRTdGF0ZShpbnRlcnJ1cHRlZCA/IFN0YXRlOjpJbnRlcnJ1cHRlZCA6IFN0YXRlOjpTdXNwZW5k
ZWQpOworICAgIH0pOworfQorCit2b2lkIFdlYktpdEF1ZGlvQ29udGV4dDo6bWF5UmVzdW1lUGxh
eWJhY2soYm9vbCBzaG91bGRSZXN1bWUpCit7CisgICAgaWYgKCFtX2Rlc3RpbmF0aW9uTm9kZSB8
fCBtX3N0YXRlID09IFN0YXRlOjpDbG9zZWQgfHwgbV9zdGF0ZSA9PSBTdGF0ZTo6UnVubmluZykK
KyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKCFzaG91bGRSZXN1bWUpIHsKKyAgICAgICAgc2V0
U3RhdGUoU3RhdGU6OlN1c3BlbmRlZCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBp
ZiAoIXdpbGxCZWdpblBsYXliYWNrKCkpCisgICAgICAgIHJldHVybjsKKworICAgIGxhenlJbml0
aWFsaXplKCk7CisKKyAgICBtX2Rlc3RpbmF0aW9uTm9kZS0+cmVzdW1lKFt0aGlzLCBwcm90ZWN0
ZWRUaGlzID0gbWFrZVJlZigqdGhpcyldIHsKKyAgICAgICAgc2V0U3RhdGUoU3RhdGU6OlJ1bm5p
bmcpOworICAgIH0pOworfQorCit2b2lkIFdlYktpdEF1ZGlvQ29udGV4dDo6cG9zdFRhc2soV1RG
OjpGdW5jdGlvbjx2b2lkKCk+JiYgdGFzaykKK3sKKyAgICBpZiAobV9pc1N0b3BTY2hlZHVsZWQp
CisgICAgICAgIHJldHVybjsKKworICAgIG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+cG9zdFRh
c2soV1RGTW92ZSh0YXNrKSk7Cit9CisKK2NvbnN0IFNlY3VyaXR5T3JpZ2luKiBXZWJLaXRBdWRp
b0NvbnRleHQ6Om9yaWdpbigpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fc2NyaXB0RXhlY3V0aW9u
Q29udGV4dCA/IG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+c2VjdXJpdHlPcmlnaW4oKSA6IG51
bGxwdHI7Cit9CisKK3ZvaWQgV2ViS2l0QXVkaW9Db250ZXh0OjphZGRDb25zb2xlTWVzc2FnZShN
ZXNzYWdlU291cmNlIHNvdXJjZSwgTWVzc2FnZUxldmVsIGxldmVsLCBjb25zdCBTdHJpbmcmIG1l
c3NhZ2UpCit7CisgICAgaWYgKG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dCkKKyAgICAgICAgbV9z
Y3JpcHRFeGVjdXRpb25Db250ZXh0LT5hZGRDb25zb2xlTWVzc2FnZShzb3VyY2UsIGxldmVsLCBt
ZXNzYWdlKTsKK30KKwordm9pZCBXZWJLaXRBdWRpb0NvbnRleHQ6OmNsZWFyUGVuZGluZ0FjdGl2
aXR5KCkKK3sKKyAgICBpZiAoIW1fcGVuZGluZ0FjdGl2aXR5KQorICAgICAgICByZXR1cm47Cisg
ICAgbV9wZW5kaW5nQWN0aXZpdHkgPSBudWxscHRyOworICAgIC8vIEZJWE1FOiBSZW1vdmUgdGhp
cyBzcGVjaWZpYyBkZXJlZigpIGFuZCByZWYoKSBjYWxsIGluIG1ha2VQZW5kaW5nQWN0aXZpdHko
KS4KKyAgICBkZXJlZigpOworfQorCit2b2lkIFdlYktpdEF1ZGlvQ29udGV4dDo6bWFrZVBlbmRp
bmdBY3Rpdml0eSgpCit7CisgICAgaWYgKG1fcGVuZGluZ0FjdGl2aXR5KQorICAgICAgICByZXR1
cm47CisgICAgbV9wZW5kaW5nQWN0aXZpdHkgPSBBY3RpdmVET01PYmplY3Q6Om1ha2VQZW5kaW5n
QWN0aXZpdHkoKnRoaXMpOworICAgIHJlZigpOworfQorCisjaWYgIVJFTEVBU0VfTE9HX0RJU0FC
TEVECitXVEZMb2dDaGFubmVsJiBXZWJLaXRBdWRpb0NvbnRleHQ6OmxvZ0NoYW5uZWwoKSBjb25z
dAoreworICAgIHJldHVybiBMb2dNZWRpYTsKK30KKyNlbmRpZgorCit9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoV0VCX0FVRElPKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9XZWJLaXRBdWRpb0NvbnRleHQuaCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vV2ViS2l0QXVkaW9Db250ZXh0LmgKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NDkwNTIwNTE5MjBiYzhkNmIzNDQ1Y2NiNDU4OWM4N2FjZjcxNTZhNgotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vV2ViS2l0QXVkaW9Db250ZXh0LmgK
QEAgLTAsMCArMSw0MTcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNi0yMDIwIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycg
QU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OCisgKiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMKKyAqIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVk
ZSAiQWN0aXZlRE9NT2JqZWN0LmgiCisjaW5jbHVkZSAiQXN5bmNBdWRpb0RlY29kZXIuaCIKKyNp
bmNsdWRlICJBdWRpb0J1cy5oIgorI2luY2x1ZGUgIkF1ZGlvQ29udGV4dC5oIgorI2luY2x1ZGUg
IkF1ZGlvQ29udGV4dFN0YXRlLmgiCisjaW5jbHVkZSAiQXVkaW9EZXN0aW5hdGlvbk5vZGUuaCIK
KyNpbmNsdWRlICJFdmVudFRhcmdldC5oIgorI2luY2x1ZGUgIk1lZGlhQ2FuU3RhcnRMaXN0ZW5l
ci5oIgorI2luY2x1ZGUgIk1lZGlhUHJvZHVjZXIuaCIKKyNpbmNsdWRlICJQbGF0Zm9ybU1lZGlh
U2Vzc2lvbi5oIgorI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKKyNpbmNsdWRl
ICJWaXNpYmlsaXR5Q2hhbmdlQ2xpZW50LmgiCisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvQ29u
c29sZVR5cGVzLmg+CisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvRmxvYXQzMkFycmF5Lmg+Cisj
aW5jbHVkZSA8YXRvbWljPgorI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CisjaW5jbHVkZSA8d3Rm
L0xvZ2dlckhlbHBlci5oPgorI2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+CisjaW5jbHVkZSA8
d3RmL1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi9UaHJlYWRTYWZlUmVmQ291bnRlZC5oPgorI2lu
Y2x1ZGUgPHd0Zi9UaHJlYWRpbmcuaD4KKyNpbmNsdWRlIDx3dGYvVW5pcXVlUmVmLmg+CisjaW5j
bHVkZSA8d3RmL1ZlY3Rvci5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L0F0b21TdHJpbmdIYXNoLmg+
CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgQW5hbHlzZXJOb2RlOworY2xhc3MgQXVk
aW9CdWZmZXI7CitjbGFzcyBBdWRpb0J1ZmZlckNhbGxiYWNrOworY2xhc3MgQXVkaW9CdWZmZXJT
b3VyY2VOb2RlOworY2xhc3MgQXVkaW9MaXN0ZW5lcjsKK2NsYXNzIEF1ZGlvU3VtbWluZ0p1bmN0
aW9uOworY2xhc3MgQmlxdWFkRmlsdGVyTm9kZTsKK2NsYXNzIENoYW5uZWxNZXJnZXJOb2RlOwor
Y2xhc3MgQ2hhbm5lbFNwbGl0dGVyTm9kZTsKK2NsYXNzIENvbnZvbHZlck5vZGU7CitjbGFzcyBE
ZWxheU5vZGU7CitjbGFzcyBEb2N1bWVudDsKK2NsYXNzIER5bmFtaWNzQ29tcHJlc3Nvck5vZGU7
CitjbGFzcyBHYWluTm9kZTsKK2NsYXNzIEhUTUxNZWRpYUVsZW1lbnQ7CitjbGFzcyBNYWluVGhy
ZWFkR2VuZXJpY0V2ZW50UXVldWU7CitjbGFzcyBNZWRpYUVsZW1lbnRBdWRpb1NvdXJjZU5vZGU7
CitjbGFzcyBNZWRpYVN0cmVhbTsKK2NsYXNzIE1lZGlhU3RyZWFtQXVkaW9EZXN0aW5hdGlvbk5v
ZGU7CitjbGFzcyBNZWRpYVN0cmVhbUF1ZGlvU291cmNlTm9kZTsKK2NsYXNzIE9zY2lsbGF0b3JO
b2RlOworY2xhc3MgUGVyaW9kaWNXYXZlOworY2xhc3MgU2NyaXB0UHJvY2Vzc29yTm9kZTsKK2Ns
YXNzIFNlY3VyaXR5T3JpZ2luOworY2xhc3MgV2F2ZVNoYXBlck5vZGU7CitjbGFzcyBXZWJLaXRB
dWRpb1Bhbm5lck5vZGU7CisKK3RlbXBsYXRlPHR5cGVuYW1lIElETFR5cGU+IGNsYXNzIERPTVBy
b21pc2VEZWZlcnJlZDsKKworLy8gQXVkaW9Db250ZXh0IGlzIHRoZSBjb3JuZXJzdG9uZSBvZiB0
aGUgd2ViIGF1ZGlvIEFQSSBhbmQgYWxsIEF1ZGlvTm9kZXMgYXJlIGNyZWF0ZWQgZnJvbSBpdC4K
Ky8vIEZvciB0aHJlYWQgc2FmZXR5IGJldHdlZW4gdGhlIGF1ZGlvIHRocmVhZCBhbmQgdGhlIG1h
aW4gdGhyZWFkLCBpdCBoYXMgYSByZW5kZXJpbmcgZ3JhcGggbG9ja2luZyBtZWNoYW5pc20uCisK
K2NsYXNzIFdlYktpdEF1ZGlvQ29udGV4dAorICAgIDogcHVibGljIEF1ZGlvQ29udGV4dEJhc2UK
KyAgICAsIHByaXZhdGUgUGxhdGZvcm1NZWRpYVNlc3Npb25DbGllbnQKKyAgICAsIHByaXZhdGUg
VmlzaWJpbGl0eUNoYW5nZUNsaWVudAoreworICAgIFdURl9NQUtFX0lTT19BTExPQ0FURUQoV2Vi
S2l0QXVkaW9Db250ZXh0KTsKK3B1YmxpYzoKKyAgICAvLyBDcmVhdGUgYW4gV2ViS2l0QXVkaW9D
b250ZXh0IGZvciByZW5kZXJpbmcgdG8gdGhlIGF1ZGlvIGhhcmR3YXJlLgorICAgIHN0YXRpYyBF
eGNlcHRpb25PcjxSZWY8V2ViS2l0QXVkaW9Db250ZXh0Pj4gY3JlYXRlKERvY3VtZW50Jik7CisK
KyAgICB2aXJ0dWFsIH5XZWJLaXRBdWRpb0NvbnRleHQoKTsKKworICAgIGJvb2wgaXNJbml0aWFs
aXplZCgpIGNvbnN0IGZpbmFsOworCisgICAgYm9vbCBpc09mZmxpbmVDb250ZXh0KCkgY29uc3Qg
ZmluYWwgeyByZXR1cm4gbV9pc09mZmxpbmVDb250ZXh0OyB9CisKKyAgICBEb2N1bWVudElkZW50
aWZpZXIgaG9zdGluZ0RvY3VtZW50SWRlbnRpZmllcigpIGNvbnN0IGZpbmFsOworCisgICAgQXVk
aW9EZXN0aW5hdGlvbk5vZGUqIGRlc3RpbmF0aW9uKCkgeyByZXR1cm4gbV9kZXN0aW5hdGlvbk5v
ZGUuZ2V0KCk7IH0KKyAgICBzaXplX3QgY3VycmVudFNhbXBsZUZyYW1lKCkgY29uc3QgZmluYWwg
eyByZXR1cm4gbV9kZXN0aW5hdGlvbk5vZGUgPyBtX2Rlc3RpbmF0aW9uTm9kZS0+Y3VycmVudFNh
bXBsZUZyYW1lKCkgOiAwOyB9CisgICAgZG91YmxlIGN1cnJlbnRUaW1lKCkgY29uc3QgZmluYWwg
eyByZXR1cm4gbV9kZXN0aW5hdGlvbk5vZGUgPyBtX2Rlc3RpbmF0aW9uTm9kZS0+Y3VycmVudFRp
bWUoKSA6IDAuOyB9CisgICAgZmxvYXQgc2FtcGxlUmF0ZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJu
IG1fZGVzdGluYXRpb25Ob2RlID8gbV9kZXN0aW5hdGlvbk5vZGUtPnNhbXBsZVJhdGUoKSA6IDAu
ZjsgfQorICAgIHVuc2lnbmVkIGxvbmcgYWN0aXZlU291cmNlQ291bnQoKSBjb25zdCB7IHJldHVy
biBzdGF0aWNfY2FzdDx1bnNpZ25lZCBsb25nPihtX2FjdGl2ZVNvdXJjZUNvdW50KTsgfQorCisg
ICAgdm9pZCBpbmNyZW1lbnRBY3RpdmVTb3VyY2VDb3VudCgpIGZpbmFsOworICAgIHZvaWQgZGVj
cmVtZW50QWN0aXZlU291cmNlQ291bnQoKSBmaW5hbDsKKworICAgIEV4Y2VwdGlvbk9yPFJlZjxB
dWRpb0J1ZmZlcj4+IGNyZWF0ZUJ1ZmZlcih1bnNpZ25lZCBudW1iZXJPZkNoYW5uZWxzLCBzaXpl
X3QgbnVtYmVyT2ZGcmFtZXMsIGZsb2F0IHNhbXBsZVJhdGUpOworICAgIEV4Y2VwdGlvbk9yPFJl
ZjxBdWRpb0J1ZmZlcj4+IGNyZWF0ZUJ1ZmZlcihBcnJheUJ1ZmZlciYsIGJvb2wgbWl4VG9Nb25v
KTsKKworICAgIC8vIEFzeW5jaHJvbm91cyBhdWRpbyBmaWxlIGRhdGEgZGVjb2RpbmcuCisgICAg
dm9pZCBkZWNvZGVBdWRpb0RhdGEoUmVmPEFycmF5QnVmZmVyPiYmLCBSZWZQdHI8QXVkaW9CdWZm
ZXJDYWxsYmFjaz4mJiwgUmVmUHRyPEF1ZGlvQnVmZmVyQ2FsbGJhY2s+JiYpOworCisgICAgQXVk
aW9MaXN0ZW5lciogbGlzdGVuZXIoKSB7IHJldHVybiBtX2xpc3RlbmVyLmdldCgpOyB9CisKKyAg
ICB2b2lkIHN1c3BlbmRSZW5kZXJpbmcoRE9NUHJvbWlzZURlZmVycmVkPHZvaWQ+JiYpOworICAg
IHZvaWQgcmVzdW1lUmVuZGVyaW5nKERPTVByb21pc2VEZWZlcnJlZDx2b2lkPiYmKTsKKyAgICB2
b2lkIGNsb3NlKERPTVByb21pc2VEZWZlcnJlZDx2b2lkPiYmKTsKKworICAgIHVzaW5nIFN0YXRl
ID0gQXVkaW9Db250ZXh0U3RhdGU7CisgICAgU3RhdGUgc3RhdGUoKSBjb25zdDsKKyAgICBib29s
IGlzQ2xvc2VkKCkgY29uc3QgeyByZXR1cm4gbV9zdGF0ZSA9PSBTdGF0ZTo6Q2xvc2VkOyB9CisK
KyAgICBib29sIHdvdWxkVGFpbnRPcmlnaW4oY29uc3QgVVJMJikgY29uc3Q7CisKKyAgICAvLyBU
aGUgQXVkaW9Ob2RlIGNyZWF0ZSBtZXRob2RzIGFyZSBjYWxsZWQgb24gdGhlIG1haW4gdGhyZWFk
IChmcm9tIEphdmFTY3JpcHQpLgorICAgIEV4Y2VwdGlvbk9yPFJlZjxBdWRpb0J1ZmZlclNvdXJj
ZU5vZGU+PiBjcmVhdGVCdWZmZXJTb3VyY2UoKTsKKyNpZiBFTkFCTEUoVklERU8pCisgICAgRXhj
ZXB0aW9uT3I8UmVmPE1lZGlhRWxlbWVudEF1ZGlvU291cmNlTm9kZT4+IGNyZWF0ZU1lZGlhRWxl
bWVudFNvdXJjZShIVE1MTWVkaWFFbGVtZW50Jik7CisjZW5kaWYKKyNpZiBFTkFCTEUoTUVESUFf
U1RSRUFNKQorICAgIEV4Y2VwdGlvbk9yPFJlZjxNZWRpYVN0cmVhbUF1ZGlvU291cmNlTm9kZT4+
IGNyZWF0ZU1lZGlhU3RyZWFtU291cmNlKE1lZGlhU3RyZWFtJik7CisgICAgRXhjZXB0aW9uT3I8
UmVmPE1lZGlhU3RyZWFtQXVkaW9EZXN0aW5hdGlvbk5vZGU+PiBjcmVhdGVNZWRpYVN0cmVhbURl
c3RpbmF0aW9uKCk7CisjZW5kaWYKKyAgICBFeGNlcHRpb25PcjxSZWY8R2Fpbk5vZGU+PiBjcmVh
dGVHYWluKCk7CisgICAgRXhjZXB0aW9uT3I8UmVmPEJpcXVhZEZpbHRlck5vZGU+PiBjcmVhdGVC
aXF1YWRGaWx0ZXIoKTsKKyAgICBFeGNlcHRpb25PcjxSZWY8V2F2ZVNoYXBlck5vZGU+PiBjcmVh
dGVXYXZlU2hhcGVyKCk7CisgICAgRXhjZXB0aW9uT3I8UmVmPERlbGF5Tm9kZT4+IGNyZWF0ZURl
bGF5KGRvdWJsZSBtYXhEZWxheVRpbWUpOworICAgIEV4Y2VwdGlvbk9yPFJlZjxXZWJLaXRBdWRp
b1Bhbm5lck5vZGU+PiBjcmVhdGVQYW5uZXIoKTsKKyAgICBFeGNlcHRpb25PcjxSZWY8Q29udm9s
dmVyTm9kZT4+IGNyZWF0ZUNvbnZvbHZlcigpOworICAgIEV4Y2VwdGlvbk9yPFJlZjxEeW5hbWlj
c0NvbXByZXNzb3JOb2RlPj4gY3JlYXRlRHluYW1pY3NDb21wcmVzc29yKCk7CisgICAgRXhjZXB0
aW9uT3I8UmVmPEFuYWx5c2VyTm9kZT4+IGNyZWF0ZUFuYWx5c2VyKCk7CisgICAgRXhjZXB0aW9u
T3I8UmVmPFNjcmlwdFByb2Nlc3Nvck5vZGU+PiBjcmVhdGVTY3JpcHRQcm9jZXNzb3Ioc2l6ZV90
IGJ1ZmZlclNpemUsIHNpemVfdCBudW1iZXJPZklucHV0Q2hhbm5lbHMsIHNpemVfdCBudW1iZXJP
Zk91dHB1dENoYW5uZWxzKTsKKyAgICBFeGNlcHRpb25PcjxSZWY8Q2hhbm5lbFNwbGl0dGVyTm9k
ZT4+IGNyZWF0ZUNoYW5uZWxTcGxpdHRlcihzaXplX3QgbnVtYmVyT2ZPdXRwdXRzKTsKKyAgICBF
eGNlcHRpb25PcjxSZWY8Q2hhbm5lbE1lcmdlck5vZGU+PiBjcmVhdGVDaGFubmVsTWVyZ2VyKHNp
emVfdCBudW1iZXJPZklucHV0cyk7CisgICAgRXhjZXB0aW9uT3I8UmVmPE9zY2lsbGF0b3JOb2Rl
Pj4gY3JlYXRlT3NjaWxsYXRvcigpOworICAgIEV4Y2VwdGlvbk9yPFJlZjxQZXJpb2RpY1dhdmU+
PiBjcmVhdGVQZXJpb2RpY1dhdmUoRmxvYXQzMkFycmF5JiByZWFsLCBGbG9hdDMyQXJyYXkmIGlt
YWdpbmFyeSk7CisKKyAgICAvLyBXaGVuIGEgc291cmNlIG5vZGUgaGFzIG5vIG1vcmUgcHJvY2Vz
c2luZyB0byBkbyAoaGFzIGZpbmlzaGVkIHBsYXlpbmcpLCB0aGVuIGl0IHRlbGxzIHRoZSBjb250
ZXh0IHRvIGRlcmVmZXJlbmNlIGl0LgorICAgIHZvaWQgbm90aWZ5Tm9kZUZpbmlzaGVkUHJvY2Vz
c2luZyhBdWRpb05vZGUqKSBmaW5hbDsKKworICAgIC8vIENhbGxlZCBhdCB0aGUgc3RhcnQgb2Yg
ZWFjaCByZW5kZXIgcXVhbnR1bS4KKyAgICB2b2lkIGhhbmRsZVByZVJlbmRlclRhc2tzKCkgZmlu
YWw7CisKKyAgICAvLyBDYWxsZWQgYXQgdGhlIGVuZCBvZiBlYWNoIHJlbmRlciBxdWFudHVtLgor
ICAgIHZvaWQgaGFuZGxlUG9zdFJlbmRlclRhc2tzKCkgZmluYWw7CisKKyAgICAvLyBDYWxsZWQg
cGVyaW9kaWNhbGx5IGF0IHRoZSBlbmQgb2YgZWFjaCByZW5kZXIgcXVhbnR1bSB0byBkZXJlZmVy
ZW5jZSBmaW5pc2hlZCBzb3VyY2Ugbm9kZXMuCisgICAgdm9pZCBkZXJlZkZpbmlzaGVkU291cmNl
Tm9kZXMoKTsKKworICAgIC8vIFdlIHNjaGVkdWxlIGRlbGV0aW9uIG9mIGFsbCBtYXJrZWQgbm9k
ZXMgYXQgdGhlIGVuZCBvZiBlYWNoIHJlYWx0aW1lIHJlbmRlciBxdWFudHVtLgorICAgIHZvaWQg
bWFya0ZvckRlbGV0aW9uKEF1ZGlvTm9kZSYpIGZpbmFsOworICAgIHZvaWQgZGVsZXRlTWFya2Vk
Tm9kZXMoKSBmaW5hbDsKKworICAgIC8vIEF1ZGlvQ29udGV4dCBjYW4gcHVsbCBub2RlKHMpIGF0
IHRoZSBlbmQgb2YgZWFjaCByZW5kZXIgcXVhbnR1bSBldmVuIHdoZW4gdGhleSBhcmUgbm90IGNv
bm5lY3RlZCB0byBhbnkgZG93bnN0cmVhbSBub2Rlcy4KKyAgICAvLyBUaGVzZSB0d28gbWV0aG9k
cyBhcmUgY2FsbGVkIGJ5IHRoZSBub2RlcyB3aG8gd2FudCB0byBhZGQvcmVtb3ZlIHRoZW1zZWx2
ZXMgaW50by9mcm9tIHRoZSBhdXRvbWF0aWMgcHVsbCBsaXN0cy4KKyAgICB2b2lkIGFkZEF1dG9t
YXRpY1B1bGxOb2RlKEF1ZGlvTm9kZSYpIGZpbmFsOworICAgIHZvaWQgcmVtb3ZlQXV0b21hdGlj
UHVsbE5vZGUoQXVkaW9Ob2RlJikgZmluYWw7CisKKyAgICAvLyBDYWxsZWQgcmlnaHQgYmVmb3Jl
IGhhbmRsZVBvc3RSZW5kZXJUYXNrcygpIHRvIGhhbmRsZSBub2RlcyB3aGljaCBuZWVkIHRvIGJl
IHB1bGxlZCBldmVuIHdoZW4gdGhleSBhcmUgbm90IGNvbm5lY3RlZCB0byBhbnl0aGluZy4KKyAg
ICB2b2lkIHByb2Nlc3NBdXRvbWF0aWNQdWxsTm9kZXMoc2l6ZV90IGZyYW1lc1RvUHJvY2Vzcykg
ZmluYWw7CisKKyAgICAvLyBLZWVwcyB0cmFjayBvZiB0aGUgbnVtYmVyIG9mIGNvbm5lY3Rpb25z
IG1hZGUuCisgICAgdm9pZCBpbmNyZW1lbnRDb25uZWN0aW9uQ291bnQoKSBmaW5hbAorICAgIHsK
KyAgICAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKyAgICAgICAgbV9jb25uZWN0aW9uQ291
bnQrKzsKKyAgICB9CisKKyAgICB1bnNpZ25lZCBjb25uZWN0aW9uQ291bnQoKSBjb25zdCB7IHJl
dHVybiBtX2Nvbm5lY3Rpb25Db3VudDsgfQorCisgICAgLy8KKyAgICAvLyBUaHJlYWQgU2FmZXR5
IGFuZCBHcmFwaCBMb2NraW5nOgorICAgIC8vCisKKyAgICB2b2lkIHNldEF1ZGlvVGhyZWFkKFRo
cmVhZCYgdGhyZWFkKSBmaW5hbCB7IG1fYXVkaW9UaHJlYWQgPSAmdGhyZWFkOyB9IC8vIEZJWE1F
OiBjaGVjayBlaXRoZXIgbm90IGluaXRpYWxpemVkIG9yIHRoZSBzYW1lCisgICAgVGhyZWFkKiBh
dWRpb1RocmVhZCgpIGNvbnN0IHsgcmV0dXJuIG1fYXVkaW9UaHJlYWQ7IH0KKyAgICBib29sIGlz
QXVkaW9UaHJlYWQoKSBjb25zdCBmaW5hbDsKKworICAgIC8vIFJldHVybnMgdHJ1ZSBvbmx5IGFm
dGVyIHRoZSBhdWRpbyB0aHJlYWQgaGFzIGJlZW4gc3RhcnRlZCBhbmQgdGhlbiBzaHV0ZG93bi4K
KyAgICBib29sIGlzQXVkaW9UaHJlYWRGaW5pc2hlZCgpIGZpbmFsIHsgcmV0dXJuIG1faXNBdWRp
b1RocmVhZEZpbmlzaGVkOyB9CisKKyAgICAvLyBtdXN0UmVsZWFzZUxvY2sgaXMgc2V0IHRvIHRy
dWUgaWYgd2UgYWNxdWlyZWQgdGhlIGxvY2sgaW4gdGhpcyBtZXRob2QgY2FsbCBhbmQgY2FsbGVy
IG11c3QgdW5sb2NrKCksIGZhbHNlIGlmIGl0IHdhcyBwcmV2aW91c2x5IGFjcXVpcmVkLgorICAg
IHZvaWQgbG9jayhib29sJiBtdXN0UmVsZWFzZUxvY2spIGZpbmFsOworCisgICAgLy8gUmV0dXJu
cyB0cnVlIGlmIHdlIG93biB0aGUgbG9jay4KKyAgICAvLyBtdXN0UmVsZWFzZUxvY2sgaXMgc2V0
IHRvIHRydWUgaWYgd2UgYWNxdWlyZWQgdGhlIGxvY2sgaW4gdGhpcyBtZXRob2QgY2FsbCBhbmQg
Y2FsbGVyIG11c3QgdW5sb2NrKCksIGZhbHNlIGlmIGl0IHdhcyBwcmV2aW91c2x5IGFjcXVpcmVk
LgorICAgIGJvb2wgdHJ5TG9jayhib29sJiBtdXN0UmVsZWFzZUxvY2spIGZpbmFsOworCisgICAg
dm9pZCB1bmxvY2soKSBmaW5hbDsKKworICAgIC8vIFJldHVybnMgdHJ1ZSBpZiB0aGlzIHRocmVh
ZCBvd25zIHRoZSBjb250ZXh0J3MgbG9jay4KKyAgICBib29sIGlzR3JhcGhPd25lcigpIGNvbnN0
IGZpbmFsOworCisgICAgLy8gUmV0dXJucyB0aGUgbWF4aW11bSBudW1iZXIgb2YgY2hhbm5lbHMg
d2UgY2FuIHN1cHBvcnQuCisgICAgc3RhdGljIHVuc2lnbmVkIG1heE51bWJlck9mQ2hhbm5lbHMo
KSB7IHJldHVybiBNYXhOdW1iZXJPZkNoYW5uZWxzOyB9CisKKyAgICAvLyBJbiBBdWRpb05vZGU6
OmRlcmVmKCkgYSB0cnlMb2NrKCkgaXMgdXNlZCBmb3IgY2FsbGluZyBmaW5pc2hEZXJlZigpLCBi
dXQgaWYgaXQgZmFpbHMga2VlcCB0cmFjayBoZXJlLgorICAgIHZvaWQgYWRkRGVmZXJyZWRGaW5p
c2hEZXJlZihBdWRpb05vZGUqKSBmaW5hbDsKKworICAgIC8vIEluIHRoZSBhdWRpbyB0aHJlYWQg
YXQgdGhlIHN0YXJ0IG9mIGVhY2ggcmVuZGVyIGN5Y2xlLCB3ZSdsbCBjYWxsIGhhbmRsZURlZmVy
cmVkRmluaXNoRGVyZWZzKCkuCisgICAgdm9pZCBoYW5kbGVEZWZlcnJlZEZpbmlzaERlcmVmcygp
OworCisgICAgLy8gT25seSBhY2Nlc3NlZCB3aGVuIHRoZSBncmFwaCBsb2NrIGlzIGhlbGQuCisg
ICAgdm9pZCBtYXJrU3VtbWluZ0p1bmN0aW9uRGlydHkoQXVkaW9TdW1taW5nSnVuY3Rpb24qKSBm
aW5hbDsKKyAgICB2b2lkIG1hcmtBdWRpb05vZGVPdXRwdXREaXJ0eShBdWRpb05vZGVPdXRwdXQq
KSBmaW5hbDsKKworICAgIC8vIE11c3QgYmUgY2FsbGVkIG9uIG1haW4gdGhyZWFkLgorICAgIHZv
aWQgcmVtb3ZlTWFya2VkU3VtbWluZ0p1bmN0aW9uKEF1ZGlvU3VtbWluZ0p1bmN0aW9uKikgZmlu
YWw7CisKKyAgICAvLyBFdmVudFRhcmdldAorICAgIEV2ZW50VGFyZ2V0SW50ZXJmYWNlIGV2ZW50
VGFyZ2V0SW50ZXJmYWNlKCkgY29uc3QgZmluYWwgeyByZXR1cm4gV2ViS2l0QXVkaW9Db250ZXh0
RXZlbnRUYXJnZXRJbnRlcmZhY2VUeXBlOyB9CisKKyAgICB2b2lkIHN0YXJ0UmVuZGVyaW5nKCk7
CisgICAgdm9pZCBmaW5pc2hlZFJlbmRlcmluZyhib29sIGRpZFJlbmRlcmluZykgZmluYWw7CisK
KyAgICBzdGF0aWMgdW5zaWduZWQgc19oYXJkd2FyZUNvbnRleHRDb3VudDsKKworICAgIC8vIFJl
c3RyaWN0aW9ucyB0byBjaGFuZ2UgZGVmYXVsdCBiZWhhdmlvcnMuCisgICAgQmVoYXZpb3JSZXN0
cmljdGlvbnMgYmVoYXZpb3JSZXN0cmljdGlvbnMoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX3Jl
c3RyaWN0aW9uczsgfQorICAgIHZvaWQgYWRkQmVoYXZpb3JSZXN0cmljdGlvbihCZWhhdmlvclJl
c3RyaWN0aW9ucyByZXN0cmljdGlvbikgZmluYWwgeyBtX3Jlc3RyaWN0aW9ucyB8PSByZXN0cmlj
dGlvbjsgfQorICAgIHZvaWQgcmVtb3ZlQmVoYXZpb3JSZXN0cmljdGlvbihCZWhhdmlvclJlc3Ry
aWN0aW9ucyByZXN0cmljdGlvbikgZmluYWwgeyBtX3Jlc3RyaWN0aW9ucyAmPSB+cmVzdHJpY3Rp
b247IH0KKworICAgIHZvaWQgaXNQbGF5aW5nQXVkaW9EaWRDaGFuZ2UoKSBmaW5hbDsKKworICAg
IHZvaWQgbm9kZVdpbGxCZWdpblBsYXliYWNrKCkgZmluYWw7CisKKyNpZiAhUkVMRUFTRV9MT0df
RElTQUJMRUQKKyAgICBjb25zdCBMb2dnZXImIGxvZ2dlcigpIGNvbnN0IGZpbmFsIHsgcmV0dXJu
IG1fbG9nZ2VyLmdldCgpOyB9CisgICAgY29uc3Qgdm9pZCogbG9nSWRlbnRpZmllcigpIGNvbnN0
IGZpbmFsIHsgcmV0dXJuIG1fbG9nSWRlbnRpZmllcjsgfQorICAgIFdURkxvZ0NoYW5uZWwmIGxv
Z0NoYW5uZWwoKSBjb25zdCBmaW5hbDsKKyAgICBjb25zdCB2b2lkKiBuZXh0QXVkaW9Ob2RlTG9n
SWRlbnRpZmllcigpIGZpbmFsIHsgcmV0dXJuIGNoaWxkTG9nSWRlbnRpZmllcihtX2xvZ0lkZW50
aWZpZXIsICsrbV9uZXh0QXVkaW9Ob2RlSWRlbnRpZmllcik7IH0KKyAgICBjb25zdCB2b2lkKiBu
ZXh0QXVkaW9QYXJhbWV0ZXJMb2dJZGVudGlmaWVyKCkgZmluYWwgeyByZXR1cm4gY2hpbGRMb2dJ
ZGVudGlmaWVyKG1fbG9nSWRlbnRpZmllciwgKyttX25leHRBdWRpb1BhcmFtZXRlcklkZW50aWZp
ZXIpOyB9CisjZW5kaWYKKworICAgIHZvaWQgcG9zdFRhc2soV1RGOjpGdW5jdGlvbjx2b2lkKCk+
JiYpIGZpbmFsOworICAgIGJvb2wgaXNTdG9wcGVkKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9p
c1N0b3BTY2hlZHVsZWQ7IH0KKyAgICBjb25zdCBTZWN1cml0eU9yaWdpbiogb3JpZ2luKCkgY29u
c3QgZmluYWw7CisgICAgdm9pZCBhZGRDb25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNlLCBNZXNz
YWdlTGV2ZWwsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSkgZmluYWw7CisKK3Byb3RlY3RlZDoKKyAg
ICBleHBsaWNpdCBXZWJLaXRBdWRpb0NvbnRleHQoRG9jdW1lbnQmKTsKKyAgICBXZWJLaXRBdWRp
b0NvbnRleHQoRG9jdW1lbnQmLCBBdWRpb0J1ZmZlciogcmVuZGVyVGFyZ2V0KTsKKworICAgIHN0
YXRpYyBib29sIGlzU2FtcGxlUmF0ZVJhbmdlR29vZChmbG9hdCBzYW1wbGVSYXRlKTsKKyAgICB2
b2lkIGNsZWFyUGVuZGluZ0FjdGl2aXR5KCk7CisgICAgdm9pZCBtYWtlUGVuZGluZ0FjdGl2aXR5
KCk7CisKK3ByaXZhdGU6CisgICAgdm9pZCBjb25zdHJ1Y3RDb21tb24oKTsKKworICAgIHZvaWQg
bGF6eUluaXRpYWxpemUoKTsKKyAgICB2b2lkIHVuaW5pdGlhbGl6ZSgpOworCisgICAgYm9vbCB3
aWxsQmVnaW5QbGF5YmFjaygpOworICAgIGJvb2wgd2lsbFBhdXNlUGxheWJhY2soKTsKKworICAg
IGJvb2wgdXNlckdlc3R1cmVSZXF1aXJlZEZvckF1ZGlvU3RhcnQoKSBjb25zdCB7IHJldHVybiAh
aXNPZmZsaW5lQ29udGV4dCgpICYmIG1fcmVzdHJpY3Rpb25zICYgUmVxdWlyZVVzZXJHZXN0dXJl
Rm9yQXVkaW9TdGFydFJlc3RyaWN0aW9uOyB9CisgICAgYm9vbCBwYWdlQ29uc2VudFJlcXVpcmVk
Rm9yQXVkaW9TdGFydCgpIGNvbnN0IHsgcmV0dXJuICFpc09mZmxpbmVDb250ZXh0KCkgJiYgbV9y
ZXN0cmljdGlvbnMgJiBSZXF1aXJlUGFnZUNvbnNlbnRGb3JBdWRpb1N0YXJ0UmVzdHJpY3Rpb247
IH0KKworICAgIHZvaWQgc2V0U3RhdGUoU3RhdGUpOworCisgICAgdm9pZCBjbGVhcigpOworCisg
ICAgdm9pZCBzY2hlZHVsZU5vZGVEZWxldGlvbigpOworCisgICAgdm9pZCBtZWRpYUNhblN0YXJ0
KERvY3VtZW50Jikgb3ZlcnJpZGU7CisKKyAgICAvLyBFdmVudFRhcmdldAorICAgIHZvaWQgZGlz
cGF0Y2hFdmVudChFdmVudCYpIGZpbmFsOworCisgICAgLy8gTWVkaWFQcm9kdWNlcgorICAgIE1l
ZGlhUHJvZHVjZXI6Ok1lZGlhU3RhdGVGbGFncyBtZWRpYVN0YXRlKCkgY29uc3Qgb3ZlcnJpZGU7
CisgICAgdm9pZCBwYWdlTXV0ZWRTdGF0ZURpZENoYW5nZSgpIG92ZXJyaWRlOworCisgICAgLy8g
VGhlIGNvbnRleHQgaXRzZWxmIGtlZXBzIGEgcmVmZXJlbmNlIHRvIGFsbCBzb3VyY2Ugbm9kZXMu
ICBUaGUgc291cmNlIG5vZGVzLCB0aGVuIHJlZmVyZW5jZSBhbGwgbm9kZXMgdGhleSdyZSBjb25u
ZWN0ZWQgdG8uCisgICAgLy8gSW4gdHVybiwgdGhlc2Ugbm9kZXMgcmVmZXJlbmNlIGFsbCBub2Rl
cyB0aGV5J3JlIGNvbm5lY3RlZCB0by4gIEFsbCBub2RlcyBhcmUgdWx0aW1hdGVseSBjb25uZWN0
ZWQgdG8gdGhlIEF1ZGlvRGVzdGluYXRpb25Ob2RlLgorICAgIC8vIFdoZW4gdGhlIGNvbnRleHQg
ZGVyZWZlcmVuY2VzIGEgc291cmNlIG5vZGUsIGl0IHdpbGwgYmUgZGVhY3RpdmF0ZWQgZnJvbSB0
aGUgcmVuZGVyaW5nIGdyYXBoIGFsb25nIHdpdGggYWxsIG90aGVyIG5vZGVzIGl0IGlzCisgICAg
Ly8gdW5pcXVlbHkgY29ubmVjdGVkIHRvLiAgU2VlIHRoZSBBdWRpb05vZGU6OnJlZigpIGFuZCBB
dWRpb05vZGU6OmRlcmVmKCkgbWV0aG9kcyBmb3IgbW9yZSBkZXRhaWxzLgorICAgIHZvaWQgcmVm
Tm9kZShBdWRpb05vZGUmKTsKKyAgICB2b2lkIGRlcmVmTm9kZShBdWRpb05vZGUmKTsKKworICAg
IC8vIEFjdGl2ZURPTU9iamVjdCBBUEkuCisgICAgdm9pZCBzdXNwZW5kKFJlYXNvbkZvclN1c3Bl
bnNpb24pIGZpbmFsOworICAgIHZvaWQgcmVzdW1lKCkgZmluYWw7CisgICAgdm9pZCBzdG9wKCkg
b3ZlcnJpZGU7CisgICAgY29uc3QgY2hhciogYWN0aXZlRE9NT2JqZWN0TmFtZSgpIGNvbnN0IG92
ZXJyaWRlOworCisgICAgLy8gV2hlbiB0aGUgY29udGV4dCBnb2VzIGF3YXksIHRoZXJlIG1pZ2h0
IHN0aWxsIGJlIHNvbWUgc291cmNlcyB3aGljaCBoYXZlbid0IGZpbmlzaGVkIHBsYXlpbmcuCisg
ICAgLy8gTWFrZSBzdXJlIHRvIGRlcmVmZXJlbmNlIHRoZW0gaGVyZS4KKyAgICB2b2lkIGRlcmVm
VW5maW5pc2hlZFNvdXJjZU5vZGVzKCk7CisKKyAgICAvLyBQbGF0Zm9ybU1lZGlhU2Vzc2lvbkNs
aWVudAorICAgIFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpNZWRpYVR5cGUgbWVkaWFUeXBlKCkgY29u
c3Qgb3ZlcnJpZGUgeyByZXR1cm4gUGxhdGZvcm1NZWRpYVNlc3Npb246Ok1lZGlhVHlwZTo6V2Vi
QXVkaW87IH0KKyAgICBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6TWVkaWFUeXBlIHByZXNlbnRhdGlv
blR5cGUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6TWVk
aWFUeXBlOjpXZWJBdWRpbzsgfQorICAgIHZvaWQgbWF5UmVzdW1lUGxheWJhY2soYm9vbCBzaG91
bGRSZXN1bWUpIG92ZXJyaWRlOworICAgIHZvaWQgc3VzcGVuZFBsYXliYWNrKCkgb3ZlcnJpZGU7
CisgICAgYm9vbCBjYW5SZWNlaXZlUmVtb3RlQ29udHJvbENvbW1hbmRzKCkgY29uc3Qgb3ZlcnJp
ZGUgeyByZXR1cm4gZmFsc2U7IH0KKyAgICB2b2lkIGRpZFJlY2VpdmVSZW1vdGVDb250cm9sQ29t
bWFuZChQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6UmVtb3RlQ29udHJvbENvbW1hbmRUeXBlLCBjb25z
dCBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6UmVtb3RlQ29tbWFuZEFyZ3VtZW50Kikgb3ZlcnJpZGUg
eyB9CisgICAgYm9vbCBzdXBwb3J0c1NlZWtpbmcoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBm
YWxzZTsgfQorICAgIGJvb2wgc2hvdWxkT3ZlcnJpZGVCYWNrZ3JvdW5kUGxheWJhY2tSZXN0cmlj
dGlvbihQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6SW50ZXJydXB0aW9uVHlwZSkgY29uc3Qgb3ZlcnJp
ZGUgeyByZXR1cm4gZmFsc2U7IH0KKyAgICBib29sIGNhblByb2R1Y2VBdWRpbygpIGNvbnN0IGZp
bmFsIHsgcmV0dXJuIHRydWU7IH0KKyAgICBib29sIGlzU3VzcGVuZGVkKCkgY29uc3QgZmluYWw7
CisKKyAgICB2b2lkIHZpc2liaWxpdHlTdGF0ZUNoYW5nZWQoKSBmaW5hbDsKKworICAgIGJvb2wg
aXNBdWRpb0NvbnRleHQoKSBjb25zdCBmaW5hbCB7IHJldHVybiBmYWxzZTsgfQorICAgIGJvb2wg
aXNXZWJLaXRBdWRpb0NvbnRleHQoKSBjb25zdCBmaW5hbCB7IHJldHVybiB0cnVlOyB9CisKKyAg
ICB2b2lkIGhhbmRsZURpcnR5QXVkaW9TdW1taW5nSnVuY3Rpb25zKCk7CisgICAgdm9pZCBoYW5k
bGVEaXJ0eUF1ZGlvTm9kZU91dHB1dHMoKTsKKworICAgIHZvaWQgYWRkUmVhY3Rpb24oU3RhdGUs
IERPTVByb21pc2VEZWZlcnJlZDx2b2lkPiYmKTsKKyAgICB2b2lkIHVwZGF0ZUF1dG9tYXRpY1B1
bGxOb2RlcygpOworCisjaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECisgICAgY29uc3QgY2hhciog
bG9nQ2xhc3NOYW1lKCkgY29uc3QgZmluYWwgeyByZXR1cm4gIldlYktpdEF1ZGlvQ29udGV4dCI7
IH0KKworICAgIFJlZjxMb2dnZXI+IG1fbG9nZ2VyOworICAgIGNvbnN0IHZvaWQqIG1fbG9nSWRl
bnRpZmllcjsKKyAgICB1aW50NjRfdCBtX25leHRBdWRpb05vZGVJZGVudGlmaWVyIHsgMCB9Owor
ICAgIHVpbnQ2NF90IG1fbmV4dEF1ZGlvUGFyYW1ldGVySWRlbnRpZmllciB7IDAgfTsKKyNlbmRp
ZgorCisgICAgLy8gT25seSBhY2Nlc3NlZCBpbiB0aGUgYXVkaW8gdGhyZWFkLgorICAgIFZlY3Rv
cjxBdWRpb05vZGUqPiBtX2ZpbmlzaGVkTm9kZXM7CisKKyAgICAvLyBXZSBkb24ndCB1c2UgUmVm
UHRyPEF1ZGlvTm9kZT4gaGVyZSBiZWNhdXNlIEF1ZGlvTm9kZSBoYXMgYSBtb3JlIGNvbXBsZXgg
cmVmKCkgLyBkZXJlZigpIGltcGxlbWVudGF0aW9uCisgICAgLy8gd2l0aCBhbiBvcHRpb25hbCBh
cmd1bWVudCBmb3IgcmVmVHlwZS4gIFdlIG5lZWQgdG8gdXNlIHRoZSBzcGVjaWFsIHJlZlR5cGU6
IFJlZlR5cGVDb25uZWN0aW9uCisgICAgLy8gRWl0aGVyIGFjY2Vzc2VkIHdoZW4gdGhlIGdyYXBo
IGxvY2sgaXMgaGVsZCwgb3Igb24gdGhlIG1haW4gdGhyZWFkIHdoZW4gdGhlIGF1ZGlvIHRocmVh
ZCBoYXMgZmluaXNoZWQuCisgICAgVmVjdG9yPEF1ZGlvTm9kZSo+IG1fcmVmZXJlbmNlZE5vZGVz
OworCisgICAgLy8gQWNjdW11bGF0ZSBub2RlcyB3aGljaCBuZWVkIHRvIGJlIGRlbGV0ZWQgaGVy
ZS4KKyAgICAvLyBUaGlzIGlzIGNvcGllZCB0byBtX25vZGVzVG9EZWxldGUgYXQgdGhlIGVuZCBv
ZiBhIHJlbmRlciBjeWNsZSBpbiBoYW5kbGVQb3N0UmVuZGVyVGFza3MoKSwgd2hlcmUgd2UncmUg
YXNzdXJlZCBvZiBhIHN0YWJsZSBncmFwaAorICAgIC8vIHN0YXRlIHdoaWNoIHdpbGwgaGF2ZSBu
byByZWZlcmVuY2VzIHRvIGFueSBvZiB0aGUgbm9kZXMgaW4gbV9ub2Rlc1RvRGVsZXRlIG9uY2Ug
dGhlIGNvbnRleHQgbG9jayBpcyByZWxlYXNlZAorICAgIC8vICh3aGVuIGhhbmRsZVBvc3RSZW5k
ZXJUYXNrcygpIGhhcyBjb21wbGV0ZWQpLgorICAgIFZlY3RvcjxBdWRpb05vZGUqPiBtX25vZGVz
TWFya2VkRm9yRGVsZXRpb247CisKKyAgICAvLyBUaGV5IHdpbGwgYmUgc2NoZWR1bGVkIGZvciBk
ZWxldGlvbiAob24gdGhlIG1haW4gdGhyZWFkKSBhdCB0aGUgZW5kIG9mIGEgcmVuZGVyIGN5Y2xl
IChpbiByZWFsdGltZSB0aHJlYWQpLgorICAgIFZlY3RvcjxBdWRpb05vZGUqPiBtX25vZGVzVG9E
ZWxldGU7CisKKyAgICBib29sIG1faXNEZWxldGlvblNjaGVkdWxlZCB7IGZhbHNlIH07CisgICAg
Ym9vbCBtX2lzU3RvcFNjaGVkdWxlZCB7IGZhbHNlIH07CisgICAgYm9vbCBtX2lzSW5pdGlhbGl6
ZWQgeyBmYWxzZSB9OworICAgIGJvb2wgbV9pc0F1ZGlvVGhyZWFkRmluaXNoZWQgeyBmYWxzZSB9
OworICAgIGJvb2wgbV9hdXRvbWF0aWNQdWxsTm9kZXNOZWVkVXBkYXRpbmcgeyBmYWxzZSB9Owor
ICAgIGJvb2wgbV9pc09mZmxpbmVDb250ZXh0IHsgZmFsc2UgfTsKKworICAgIC8vIE9ubHkgYWNj
ZXNzZWQgd2hlbiB0aGUgZ3JhcGggbG9jayBpcyBoZWxkLgorICAgIEhhc2hTZXQ8QXVkaW9TdW1t
aW5nSnVuY3Rpb24qPiBtX2RpcnR5U3VtbWluZ0p1bmN0aW9uczsKKyAgICBIYXNoU2V0PEF1ZGlv
Tm9kZU91dHB1dCo+IG1fZGlydHlBdWRpb05vZGVPdXRwdXRzOworCisgICAgLy8gRm9yIHRoZSBz
YWtlIG9mIHRocmVhZCBzYWZldHksIHdlIG1haW50YWluIGEgc2VwZXJhdGUgVmVjdG9yIG9mIGF1
dG9tYXRpYyBwdWxsIG5vZGVzIGZvciByZW5kZXJpbmcgaW4gbV9yZW5kZXJpbmdBdXRvbWF0aWNQ
dWxsTm9kZXMuCisgICAgLy8gSXQgd2lsbCBiZSBjb3BpZWQgZnJvbSBtX2F1dG9tYXRpY1B1bGxO
b2RlcyBieSB1cGRhdGVBdXRvbWF0aWNQdWxsTm9kZXMoKSBhdCB0aGUgdmVyeSBzdGFydCBvciBl
bmQgb2YgdGhlIHJlbmRlcmluZyBxdWFudHVtLgorICAgIEhhc2hTZXQ8QXVkaW9Ob2RlKj4gbV9h
dXRvbWF0aWNQdWxsTm9kZXM7CisgICAgVmVjdG9yPEF1ZGlvTm9kZSo+IG1fcmVuZGVyaW5nQXV0
b21hdGljUHVsbE5vZGVzOworICAgIC8vIE9ubHkgYWNjZXNzZWQgaW4gdGhlIGF1ZGlvIHRocmVh
ZC4KKyAgICBWZWN0b3I8QXVkaW9Ob2RlKj4gbV9kZWZlcnJlZEZpbmlzaERlcmVmTGlzdDsKKyAg
ICBWZWN0b3I8VmVjdG9yPERPTVByb21pc2VEZWZlcnJlZDx2b2lkPj4+IG1fc3RhdGVSZWFjdGlv
bnM7CisKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8UGxhdGZvcm1NZWRpYVNlc3Npb24+IG1fbWVkaWFT
ZXNzaW9uOworICAgIFVuaXF1ZVJlZjxNYWluVGhyZWFkR2VuZXJpY0V2ZW50UXVldWU+IG1fZXZl
bnRRdWV1ZTsKKworICAgIFJlZlB0cjxBdWRpb0J1ZmZlcj4gbV9yZW5kZXJUYXJnZXQ7CisgICAg
UmVmUHRyPEF1ZGlvRGVzdGluYXRpb25Ob2RlPiBtX2Rlc3RpbmF0aW9uTm9kZTsKKyAgICBSZWZQ
dHI8QXVkaW9MaXN0ZW5lcj4gbV9saXN0ZW5lcjsKKworICAgIHVuc2lnbmVkIG1fY29ubmVjdGlv
bkNvdW50IHsgMCB9OworCisgICAgLy8gR3JhcGggbG9ja2luZy4KKyAgICBMb2NrIG1fY29udGV4
dEdyYXBoTXV0ZXg7CisgICAgLy8gRklYTUU6IFVzaW5nIHZvbGF0aWxlIHNlZW1zIGluY29ycmVj
dC4KKyAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTgwMzMy
CisgICAgVGhyZWFkKiB2b2xhdGlsZSBtX2F1ZGlvVGhyZWFkIHsgbnVsbHB0ciB9OworICAgIFRo
cmVhZCogdm9sYXRpbGUgbV9ncmFwaE93bmVyVGhyZWFkIHsgbnVsbHB0ciB9OyAvLyBpZiB0aGUg
bG9jayBpcyBoZWxkIHRoZW4gdGhpcyBpcyB0aGUgdGhyZWFkIHdoaWNoIG93bnMgaXQsIG90aGVy
d2lzZSA9PSBudWxscHRyLgorCisgICAgc3RkOjp1bmlxdWVfcHRyPEFzeW5jQXVkaW9EZWNvZGVy
PiBtX2F1ZGlvRGVjb2RlcjsKKworICAgIC8vIFRoaXMgaXMgY29uc2lkZXJpbmcgMzIgaXMgbGFy
Z2UgZW5vdWdoIGZvciBtdWx0aXBsZSBjaGFubmVscyBhdWRpby4KKyAgICAvLyBJdCBpcyBzb21l
d2hhdCBhcmJpdHJhcnkgYW5kIGNvdWxkIGJlIGluY3JlYXNlZCBpZiBuZWNlc3NhcnkuCisgICAg
ZW51bSB7IE1heE51bWJlck9mQ2hhbm5lbHMgPSAzMiB9OworCisgICAgLy8gTnVtYmVyIG9mIEF1
ZGlvQnVmZmVyU291cmNlTm9kZXMgdGhhdCBhcmUgYWN0aXZlIChwbGF5aW5nKS4KKyAgICBzdGQ6
OmF0b21pYzxpbnQ+IG1fYWN0aXZlU291cmNlQ291bnQgeyAwIH07CisKKyAgICBCZWhhdmlvclJl
c3RyaWN0aW9ucyBtX3Jlc3RyaWN0aW9ucyB7IE5vUmVzdHJpY3Rpb25zIH07CisKKyAgICBTdGF0
ZSBtX3N0YXRlIHsgU3RhdGU6OlN1c3BlbmRlZCB9OworICAgIFJlZlB0cjxQZW5kaW5nQWN0aXZp
dHk8V2ViS2l0QXVkaW9Db250ZXh0Pj4gbV9wZW5kaW5nQWN0aXZpdHk7Cit9OworCitpbmxpbmUg
QXVkaW9Db250ZXh0U3RhdGUgV2ViS2l0QXVkaW9Db250ZXh0OjpzdGF0ZSgpIGNvbnN0Cit7Cisg
ICAgcmV0dXJuIG1fc3RhdGU7Cit9CisKK30gLy8gV2ViQ29yZQorCitTUEVDSUFMSVpFX1RZUEVf
VFJBSVRTX0JFR0lOKFdlYkNvcmU6OldlYktpdEF1ZGlvQ29udGV4dCkKKyAgICBzdGF0aWMgYm9v
bCBpc1R5cGUoY29uc3QgV2ViQ29yZTo6QXVkaW9Db250ZXh0QmFzZSYgY29udGV4dCkgeyByZXR1
cm4gY29udGV4dC5pc1dlYktpdEF1ZGlvQ29udGV4dCgpOyB9CitTUEVDSUFMSVpFX1RZUEVfVFJB
SVRTX0VORCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1dl
YktpdEF1ZGlvQ29udGV4dC5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1dl
YktpdEF1ZGlvQ29udGV4dC5pZGwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNTY5NWM3MzY2OTg2NzhlYjM2ZWQ2NDg5
M2JkMDJiNGNkOGJkZTAwYgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViYXVkaW8vV2ViS2l0QXVkaW9Db250ZXh0LmlkbApAQCAtMCwwICsxLDkzIEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDEwLCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICogQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuICBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElF
RAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OCisgKiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKKyAqIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKK1sKKyAgICBBY3RpdmVET01PYmplY3QsCisgICAgQ29uZGl0aW9uYWw9V0VCX0FVRElP
LAorICAgIEVuYWJsZWRCeVNldHRpbmc9V2ViQXVkaW8sCisgICAgRXhwb3J0TWFjcm89V0VCQ09S
RV9FWFBPUlQsCisgICAgSW50ZXJmYWNlTmFtZT13ZWJraXRBdWRpb0NvbnRleHQsCitdIGludGVy
ZmFjZSBXZWJLaXRBdWRpb0NvbnRleHQgOiBFdmVudFRhcmdldCB7CisgICAgW0NhbGxXaXRoPURv
Y3VtZW50LCBNYXlUaHJvd0V4Y2VwdGlvbl0gY29uc3RydWN0b3IoKTsKKworICAgIC8vIEFsbCBy
ZW5kZXJlZCBhdWRpbyB1bHRpbWF0ZWx5IGNvbm5lY3RzIHRvIGRlc3RpbmF0aW9uLCB3aGljaCBy
ZXByZXNlbnRzIHRoZSBhdWRpbyBoYXJkd2FyZS4KKyAgICByZWFkb25seSBhdHRyaWJ1dGUgQXVk
aW9EZXN0aW5hdGlvbk5vZGUgZGVzdGluYXRpb247CisKKyAgICAvLyBBbGwgc2NoZWR1bGVkIHRp
bWVzIGFyZSByZWxhdGl2ZSB0byB0aGlzIHRpbWUgaW4gc2Vjb25kcy4KKyAgICByZWFkb25seSBh
dHRyaWJ1dGUgdW5yZXN0cmljdGVkIGRvdWJsZSBjdXJyZW50VGltZTsKKworICAgIC8vIEFsbCBB
dWRpb05vZGVzIGluIHRoZSBjb250ZXh0IHJ1biBhdCB0aGlzIHNhbXBsZS1yYXRlIChzYW1wbGUt
ZnJhbWVzIHBlciBzZWNvbmQpLgorICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSB1bnJlc3RyaWN0ZWQg
ZmxvYXQgc2FtcGxlUmF0ZTsKKworICAgIC8vIEFsbCBwYW5uaW5nIGlzIHJlbGF0aXZlIHRvIHRo
aXMgbGlzdGVuZXIuCisgICAgcmVhZG9ubHkgYXR0cmlidXRlIEF1ZGlvTGlzdGVuZXIgbGlzdGVu
ZXI7CisKKyAgICBbSW1wbGVtZW50ZWRBcz1zdXNwZW5kUmVuZGVyaW5nXSBQcm9taXNlPHZvaWQ+
IHN1c3BlbmQoKTsKKyAgICBbSW1wbGVtZW50ZWRBcz1yZXN1bWVSZW5kZXJpbmddIFByb21pc2U8
dm9pZD4gcmVzdW1lKCk7CisgICAgUHJvbWlzZTx2b2lkPiBjbG9zZSgpOworCisgICAgcmVhZG9u
bHkgYXR0cmlidXRlIEF1ZGlvQ29udGV4dFN0YXRlIHN0YXRlOworICAgIGF0dHJpYnV0ZSBFdmVu
dEhhbmRsZXIgb25zdGF0ZWNoYW5nZTsKKworICAgIC8vIE51bWJlciBvZiBBdWRpb0J1ZmZlclNv
dXJjZU5vZGVzIHRoYXQgYXJlIGN1cnJlbnRseSBwbGF5aW5nLgorICAgIHJlYWRvbmx5IGF0dHJp
YnV0ZSB1bnNpZ25lZCBsb25nIGFjdGl2ZVNvdXJjZUNvdW50OworCisgICAgW01heVRocm93RXhj
ZXB0aW9uXSBBdWRpb0J1ZmZlciBjcmVhdGVCdWZmZXIodW5zaWduZWQgbG9uZyBudW1iZXJPZkNo
YW5uZWxzLCB1bnNpZ25lZCBsb25nIG51bWJlck9mRnJhbWVzLCB1bnJlc3RyaWN0ZWQgZmxvYXQg
c2FtcGxlUmF0ZSk7CisgICAgW01heVRocm93RXhjZXB0aW9uXSBBdWRpb0J1ZmZlciBjcmVhdGVC
dWZmZXIoQXJyYXlCdWZmZXIgYnVmZmVyLCBib29sZWFuIG1peFRvTW9ubyk7CisKKyAgICAvLyBB
c3luY2hyb25vdXMgYXVkaW8gZmlsZSBkYXRhIGRlY29kaW5nLgorICAgIC8vIEZJWE1FOiBzdWNj
ZXNzQ2FsbGJhY2sgc2hvdWxkIGJlIG9wdGlvbmFsIGFuZCB0aGUgY2FsbGJhY2tzIHNob3VsZCBu
b3QgYmUgbnVsbGFibGUuIFRoaXMgc2hvdWxkIGFsc28gcmV0dXJuIGEgUHJvbWlzZS4KKyAgICB2
b2lkIGRlY29kZUF1ZGlvRGF0YShBcnJheUJ1ZmZlciBhdWRpb0RhdGEsIEF1ZGlvQnVmZmVyQ2Fs
bGJhY2s/IHN1Y2Nlc3NDYWxsYmFjaywgb3B0aW9uYWwgQXVkaW9CdWZmZXJDYWxsYmFjaz8gZXJy
b3JDYWxsYmFjayk7CisKKyAgICAvLyBTb3VyY2VzCisgICAgW01heVRocm93RXhjZXB0aW9uXSBB
dWRpb0J1ZmZlclNvdXJjZU5vZGUgY3JlYXRlQnVmZmVyU291cmNlKCk7CisKKyAgICBbQ29uZGl0
aW9uYWw9VklERU8sIE1heVRocm93RXhjZXB0aW9uXSBNZWRpYUVsZW1lbnRBdWRpb1NvdXJjZU5v
ZGUgY3JlYXRlTWVkaWFFbGVtZW50U291cmNlKEhUTUxNZWRpYUVsZW1lbnQgbWVkaWFFbGVtZW50
KTsKKworICAgIFtDb25kaXRpb25hbD1NRURJQV9TVFJFQU0sIE1heVRocm93RXhjZXB0aW9uXSBN
ZWRpYVN0cmVhbUF1ZGlvU291cmNlTm9kZSBjcmVhdGVNZWRpYVN0cmVhbVNvdXJjZShNZWRpYVN0
cmVhbSBtZWRpYVN0cmVhbSk7CisgICAgW0NvbmRpdGlvbmFsPU1FRElBX1NUUkVBTSwgTWF5VGhy
b3dFeGNlcHRpb25dIE1lZGlhU3RyZWFtQXVkaW9EZXN0aW5hdGlvbk5vZGUgY3JlYXRlTWVkaWFT
dHJlYW1EZXN0aW5hdGlvbigpOworCisgICAgLy8gUHJvY2Vzc2luZyBub2RlcworICAgIFtNYXlU
aHJvd0V4Y2VwdGlvbl0gR2Fpbk5vZGUgY3JlYXRlR2FpbigpOworICAgIFtNYXlUaHJvd0V4Y2Vw
dGlvbl0gRGVsYXlOb2RlIGNyZWF0ZURlbGF5KG9wdGlvbmFsIHVucmVzdHJpY3RlZCBkb3VibGUg
bWF4RGVsYXlUaW1lID0gMSk7CisgICAgW01heVRocm93RXhjZXB0aW9uXSBCaXF1YWRGaWx0ZXJO
b2RlIGNyZWF0ZUJpcXVhZEZpbHRlcigpOworICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gV2F2ZVNo
YXBlck5vZGUgY3JlYXRlV2F2ZVNoYXBlcigpOworICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gV2Vi
S2l0QXVkaW9QYW5uZXJOb2RlIGNyZWF0ZVBhbm5lcigpOworICAgIFtNYXlUaHJvd0V4Y2VwdGlv
bl0gQ29udm9sdmVyTm9kZSBjcmVhdGVDb252b2x2ZXIoKTsKKyAgICBbTWF5VGhyb3dFeGNlcHRp
b25dIER5bmFtaWNzQ29tcHJlc3Nvck5vZGUgY3JlYXRlRHluYW1pY3NDb21wcmVzc29yKCk7Cisg
ICAgW01heVRocm93RXhjZXB0aW9uXSBBbmFseXNlck5vZGUgY3JlYXRlQW5hbHlzZXIoKTsKKyAg
ICBbTWF5VGhyb3dFeGNlcHRpb25dIFNjcmlwdFByb2Nlc3Nvck5vZGUgY3JlYXRlU2NyaXB0UHJv
Y2Vzc29yKG9wdGlvbmFsIHVuc2lnbmVkIGxvbmcgYnVmZmVyU2l6ZSA9IDAsIG9wdGlvbmFsIHVu
c2lnbmVkIGxvbmcgbnVtYmVyT2ZJbnB1dENoYW5uZWxzID0gMiwgb3B0aW9uYWwgdW5zaWduZWQg
bG9uZyBudW1iZXJPZk91dHB1dENoYW5uZWxzID0gMik7CisgICAgW01heVRocm93RXhjZXB0aW9u
XSBPc2NpbGxhdG9yTm9kZSBjcmVhdGVPc2NpbGxhdG9yKCk7CisgICAgW01heVRocm93RXhjZXB0
aW9uXSBQZXJpb2RpY1dhdmUgY3JlYXRlUGVyaW9kaWNXYXZlKEZsb2F0MzJBcnJheSByZWFsLCBG
bG9hdDMyQXJyYXkgaW1hZyk7CisKKyAgICAvLyBDaGFubmVsIHNwbGl0dGluZyBhbmQgbWVyZ2lu
ZworICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gQ2hhbm5lbFNwbGl0dGVyTm9kZSBjcmVhdGVDaGFu
bmVsU3BsaXR0ZXIob3B0aW9uYWwgdW5zaWduZWQgbG9uZyBudW1iZXJPZk91dHB1dHMgPSA2KTsK
KyAgICBbTWF5VGhyb3dFeGNlcHRpb25dIENoYW5uZWxNZXJnZXJOb2RlIGNyZWF0ZUNoYW5uZWxN
ZXJnZXIob3B0aW9uYWwgdW5zaWduZWQgbG9uZyBudW1iZXJPZklucHV0cyA9IDYpOworCisgICAg
Ly8gT2ZmbGluZSByZW5kZXJpbmcKKyAgICAvLyB2b2lkIHByZXBhcmVPZmZsaW5lQnVmZmVyUmVu
ZGVyaW5nKHVuc2lnbmVkIGxvbmcgbnVtYmVyT2ZDaGFubmVscywgdW5zaWduZWQgbG9uZyBudW1i
ZXJPZkZyYW1lcywgdW5yZXN0cmljdGVkIGZsb2F0IHNhbXBsZVJhdGUpOworICAgIGF0dHJpYnV0
ZSBFdmVudEhhbmRsZXIgb25jb21wbGV0ZTsKKyAgICB2b2lkIHN0YXJ0UmVuZGVyaW5nKCk7Cit9
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9XZWJLaXRBdWRp
b1Bhbm5lck5vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9XZWJLaXRB
dWRpb1Bhbm5lck5vZGUuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjI1OGY0NWU3Y2ZkOTFjODIyYzY5OTJlNzU4
ZGFhNzU4YWQ3OTAyZTIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmF1ZGlvL1dlYktpdEF1ZGlvUGFubmVyTm9kZS5jcHAKQEAgLTAsMCArMSwzNjMgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTAsIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiAgUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElN
UExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTgorICogQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTCisgKiBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiV2ViS2l0QXVkaW9QYW5u
ZXJOb2RlLmgiCisKKyNpZiBFTkFCTEUoV0VCX0FVRElPKQorCisjaW5jbHVkZSAiQXVkaW9CdWZm
ZXJTb3VyY2VOb2RlLmgiCisjaW5jbHVkZSAiQXVkaW9CdXMuaCIKKyNpbmNsdWRlICJBdWRpb0Nv
bnRleHQuaCIKKyNpbmNsdWRlICJBdWRpb05vZGVJbnB1dC5oIgorI2luY2x1ZGUgIkF1ZGlvTm9k
ZU91dHB1dC5oIgorI2luY2x1ZGUgIkhSVEZEYXRhYmFzZUxvYWRlci5oIgorI2luY2x1ZGUgIkhS
VEZQYW5uZXIuaCIKKyNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCisjaW5jbHVk
ZSA8d3RmL0lzb01hbGxvY0lubGluZXMuaD4KKyNpbmNsdWRlIDx3dGYvTWF0aEV4dHJhcy5oPgor
CituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1dURl9NQUtFX0lTT19BTExPQ0FURURfSU1QTChXZWJL
aXRBdWRpb1Bhbm5lck5vZGUpOworCitzdGF0aWMgdm9pZCBmaXhOQU5zKGRvdWJsZSAmeCkKK3sK
KyAgICBpZiAoc3RkOjppc25hbih4KSB8fCBzdGQ6OmlzaW5mKHgpKQorICAgICAgICB4ID0gMC4w
OworfQorCitXZWJLaXRBdWRpb1Bhbm5lck5vZGU6OldlYktpdEF1ZGlvUGFubmVyTm9kZShXZWJL
aXRBdWRpb0NvbnRleHQmIGNvbnRleHQsIGZsb2F0IHNhbXBsZVJhdGUpCisgICAgOiBQYW5uZXJO
b2RlQmFzZShjb250ZXh0LCBzYW1wbGVSYXRlKQorICAgICwgbV9wYW5uaW5nTW9kZWwoUGFubmlu
Z01vZGVsVHlwZTo6SFJURikKKyAgICAsIG1fbGFzdEdhaW4oLTEuMCkKKyAgICAsIG1fY29ubmVj
dGlvbkNvdW50KDApCit7CisgICAgc2V0Tm9kZVR5cGUoTm9kZVR5cGVQYW5uZXIpOworCisgICAg
Ly8gTG9hZCB0aGUgSFJURiBkYXRhYmFzZSBhc3luY2hyb25vdXNseSBzbyB3ZSBkb24ndCBibG9j
ayB0aGUgSmF2YXNjcmlwdCB0aHJlYWQgd2hpbGUgY3JlYXRpbmcgdGhlIEhSVEYgZGF0YWJhc2Uu
CisgICAgbV9ocnRmRGF0YWJhc2VMb2FkZXIgPSBIUlRGRGF0YWJhc2VMb2FkZXI6OmNyZWF0ZUFu
ZExvYWRBc3luY2hyb25vdXNseUlmTmVjZXNzYXJ5KGNvbnRleHQuc2FtcGxlUmF0ZSgpKTsKKwor
ICAgIGFkZElucHV0KG1ha2VVbmlxdWU8QXVkaW9Ob2RlSW5wdXQ+KHRoaXMpKTsKKyAgICBhZGRP
dXRwdXQobWFrZVVuaXF1ZTxBdWRpb05vZGVPdXRwdXQ+KHRoaXMsIDIpKTsKKworICAgIC8vIE5v
ZGUtc3BlY2lmaWMgZGVmYXVsdCBtaXhpbmcgcnVsZXMuCisgICAgbV9jaGFubmVsQ291bnQgPSAy
OworICAgIG1fY2hhbm5lbENvdW50TW9kZSA9IENsYW1wZWRNYXg7CisgICAgbV9jaGFubmVsSW50
ZXJwcmV0YXRpb24gPSBBdWRpb0J1czo6U3BlYWtlcnM7CisKKyAgICBtX2Rpc3RhbmNlR2FpbiA9
IEF1ZGlvUGFyYW06OmNyZWF0ZShjb250ZXh0LCAiZGlzdGFuY2VHYWluIiwgMS4wLCAwLjAsIDEu
MCk7CisgICAgbV9jb25lR2FpbiA9IEF1ZGlvUGFyYW06OmNyZWF0ZShjb250ZXh0LCAiY29uZUdh
aW4iLCAxLjAsIDAuMCwgMS4wKTsKKworICAgIG1fcG9zaXRpb24gPSBGbG9hdFBvaW50M0QoMCwg
MCwgMCk7CisgICAgbV9vcmllbnRhdGlvbiA9IEZsb2F0UG9pbnQzRCgxLCAwLCAwKTsKKyAgICBt
X3ZlbG9jaXR5ID0gRmxvYXRQb2ludDNEKDAsIDAsIDApOworCisgICAgaW5pdGlhbGl6ZSgpOwor
fQorCitXZWJLaXRBdWRpb1Bhbm5lck5vZGU6On5XZWJLaXRBdWRpb1Bhbm5lck5vZGUoKQorewor
ICAgIHVuaW5pdGlhbGl6ZSgpOworfQorCit2b2lkIFdlYktpdEF1ZGlvUGFubmVyTm9kZTo6cHVs
bElucHV0cyhzaXplX3QgZnJhbWVzVG9Qcm9jZXNzKQoreworICAgIC8vIFdlIG92ZXJyaWRlIHB1
bGxJbnB1dHMoKSwgc28gd2UgY2FuIGRldGVjdCBuZXcgQXVkaW9Tb3VyY2VOb2RlcyB3aGljaCBo
YXZlIGNvbm5lY3RlZCB0byB1cyB3aGVuIG5ldyBjb25uZWN0aW9ucyBhcmUgbWFkZS4KKyAgICAv
LyBUaGVzZSBBdWRpb1NvdXJjZU5vZGVzIG5lZWQgdG8gYmUgbWFkZSBhd2FyZSBvZiBvdXIgZXhp
c3RlbmNlIGluIG9yZGVyIHRvIGhhbmRsZSBkb3BwbGVyIHNoaWZ0IHBpdGNoIGNoYW5nZXMuCisg
ICAgaWYgKG1fY29ubmVjdGlvbkNvdW50ICE9IGNvbnRleHQoKS5jb25uZWN0aW9uQ291bnQoKSkg
eworICAgICAgICBtX2Nvbm5lY3Rpb25Db3VudCA9IGNvbnRleHQoKS5jb25uZWN0aW9uQ291bnQo
KTsKKworICAgICAgICAvLyBSZWN1cnNpdmVseSBnbyB0aHJvdWdoIGFsbCBub2RlcyBjb25uZWN0
ZWQgdG8gdXMuCisgICAgICAgIEhhc2hTZXQ8QXVkaW9Ob2RlKj4gdmlzaXRlZE5vZGVzOworICAg
ICAgICBub3RpZnlBdWRpb1NvdXJjZXNDb25uZWN0ZWRUb05vZGUodGhpcywgdmlzaXRlZE5vZGVz
KTsKKyAgICB9CisKKyAgICBBdWRpb05vZGU6OnB1bGxJbnB1dHMoZnJhbWVzVG9Qcm9jZXNzKTsK
K30KKwordm9pZCBXZWJLaXRBdWRpb1Bhbm5lck5vZGU6OnByb2Nlc3Moc2l6ZV90IGZyYW1lc1Rv
UHJvY2VzcykKK3sKKyAgICBBdWRpb0J1cyogZGVzdGluYXRpb24gPSBvdXRwdXQoMCktPmJ1cygp
OworCisgICAgaWYgKCFpc0luaXRpYWxpemVkKCkgfHwgIWlucHV0KDApLT5pc0Nvbm5lY3RlZCgp
IHx8ICFtX3Bhbm5lci5nZXQoKSkgeworICAgICAgICBkZXN0aW5hdGlvbi0+emVybygpOworICAg
ICAgICByZXR1cm47CisgICAgfQorCisgICAgQXVkaW9CdXMqIHNvdXJjZSA9IGlucHV0KDApLT5i
dXMoKTsKKyAgICBpZiAoIXNvdXJjZSkgeworICAgICAgICBkZXN0aW5hdGlvbi0+emVybygpOwor
ICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgLy8gSFJURkRhdGFiYXNlIHNob3VsZCBiZSBs
b2FkZWQgYmVmb3JlIHByb2NlZWRpbmcgZm9yIG9mZmxpbmUgYXVkaW8gY29udGV4dCB3aGVuIHBh
bm5pbmdNb2RlbCgpIGlzICJIUlRGIi4KKyAgICBpZiAocGFubmluZ01vZGVsKCkgPT0gUGFubmlu
Z01vZGVsVHlwZTo6SFJURiAmJiAhbV9ocnRmRGF0YWJhc2VMb2FkZXItPmlzTG9hZGVkKCkpIHsK
KyAgICAgICAgaWYgKGNvbnRleHQoKS5pc09mZmxpbmVDb250ZXh0KCkpCisgICAgICAgICAgICBt
X2hydGZEYXRhYmFzZUxvYWRlci0+d2FpdEZvckxvYWRlclRocmVhZENvbXBsZXRpb24oKTsKKyAg
ICAgICAgZWxzZSB7CisgICAgICAgICAgICBkZXN0aW5hdGlvbi0+emVybygpOworICAgICAgICAg
ICAgcmV0dXJuOworICAgICAgICB9CisgICAgfQorCisgICAgLy8gVGhlIGF1ZGlvIHRocmVhZCBj
YW4ndCBibG9jayBvbiB0aGlzIGxvY2ssIHNvIHdlIHVzZSBzdGQ6OnRyeV90b19sb2NrIGluc3Rl
YWQuCisgICAgc3RkOjp1bmlxdWVfbG9jazxMb2NrPiBsb2NrKG1fcGFubmVyTXV0ZXgsIHN0ZDo6
dHJ5X3RvX2xvY2spOworICAgIGlmICghbG9jay5vd25zX2xvY2soKSkgeworICAgICAgICAvLyBU
b28gYmFkIC0gVGhlIHRyeV9sb2NrKCkgZmFpbGVkLiBXZSBtdXN0IGJlIGluIHRoZSBtaWRkbGUg
b2YgY2hhbmdpbmcgdGhlIHBhbm5lci4KKyAgICAgICAgZGVzdGluYXRpb24tPnplcm8oKTsKKyAg
ICAgICAgcmV0dXJuOworICAgIH0KKworICAgIC8vIEFwcGx5IHRoZSBwYW5uaW5nIGVmZmVjdC4K
KyAgICBkb3VibGUgYXppbXV0aDsKKyAgICBkb3VibGUgZWxldmF0aW9uOworICAgIGdldEF6aW11
dGhFbGV2YXRpb24oJmF6aW11dGgsICZlbGV2YXRpb24pOworICAgIG1fcGFubmVyLT5wYW4oYXpp
bXV0aCwgZWxldmF0aW9uLCBzb3VyY2UsIGRlc3RpbmF0aW9uLCBmcmFtZXNUb1Byb2Nlc3MpOwor
CisgICAgLy8gR2V0IHRoZSBkaXN0YW5jZSBhbmQgY29uZSBnYWluLgorICAgIGRvdWJsZSB0b3Rh
bEdhaW4gPSBkaXN0YW5jZUNvbmVHYWluKCk7CisKKyAgICAvLyBTbmFwIHRvIGRlc2lyZWQgZ2Fp
biBhdCB0aGUgYmVnaW5uaW5nLgorICAgIGlmIChtX2xhc3RHYWluID09IC0xLjApCisgICAgICAg
IG1fbGFzdEdhaW4gPSB0b3RhbEdhaW47CisKKyAgICAvLyBBcHBseSBnYWluIGluLXBsYWNlIHdp
dGggZGUtemlwcGVyaW5nLgorICAgIGRlc3RpbmF0aW9uLT5jb3B5V2l0aEdhaW5Gcm9tKCpkZXN0
aW5hdGlvbiwgJm1fbGFzdEdhaW4sIHRvdGFsR2Fpbik7Cit9CisKK3ZvaWQgV2ViS2l0QXVkaW9Q
YW5uZXJOb2RlOjpyZXNldCgpCit7CisgICAgbV9sYXN0R2FpbiA9IC0xLjA7IC8vIGZvcmNlIHRv
IHNuYXAgdG8gaW5pdGlhbCBnYWluCisgICAgaWYgKG1fcGFubmVyLmdldCgpKQorICAgICAgICBt
X3Bhbm5lci0+cmVzZXQoKTsKK30KKwordm9pZCBXZWJLaXRBdWRpb1Bhbm5lck5vZGU6OmluaXRp
YWxpemUoKQoreworICAgIGlmIChpc0luaXRpYWxpemVkKCkpCisgICAgICAgIHJldHVybjsKKwor
ICAgIG1fcGFubmVyID0gUGFubmVyOjpjcmVhdGUobV9wYW5uaW5nTW9kZWwsIHNhbXBsZVJhdGUo
KSwgbV9ocnRmRGF0YWJhc2VMb2FkZXIuZ2V0KCkpOworCisgICAgQXVkaW9Ob2RlOjppbml0aWFs
aXplKCk7Cit9CisKK3ZvaWQgV2ViS2l0QXVkaW9QYW5uZXJOb2RlOjp1bmluaXRpYWxpemUoKQor
eworICAgIGlmICghaXNJbml0aWFsaXplZCgpKQorICAgICAgICByZXR1cm47CisKKyAgICBtX3Bh
bm5lciA9IG51bGxwdHI7CisgICAgQXVkaW9Ob2RlOjp1bmluaXRpYWxpemUoKTsKK30KKworQXVk
aW9MaXN0ZW5lciogV2ViS2l0QXVkaW9QYW5uZXJOb2RlOjpsaXN0ZW5lcigpCit7CisgICAgcmV0
dXJuIGNvbnRleHQoKS5saXN0ZW5lcigpOworfQorCit2b2lkIFdlYktpdEF1ZGlvUGFubmVyTm9k
ZTo6c2V0UGFubmluZ01vZGVsKFBhbm5pbmdNb2RlbFR5cGUgbW9kZWwpCit7CisgICAgaWYgKCFt
X3Bhbm5lci5nZXQoKSB8fCBtb2RlbCAhPSBtX3Bhbm5pbmdNb2RlbCkgeworICAgICAgICAvLyBU
aGlzIHN5bmNocm9uaXplcyB3aXRoIHByb2Nlc3MoKS4KKyAgICAgICAgYXV0byBsb2NrZXIgPSBo
b2xkTG9jayhtX3Bhbm5lck11dGV4KTsKKworICAgICAgICBtX3Bhbm5lciA9IFBhbm5lcjo6Y3Jl
YXRlKG1vZGVsLCBzYW1wbGVSYXRlKCksIG1faHJ0ZkRhdGFiYXNlTG9hZGVyLmdldCgpKTsKKyAg
ICAgICAgbV9wYW5uaW5nTW9kZWwgPSBtb2RlbDsKKyAgICB9Cit9CisKK0Rpc3RhbmNlTW9kZWxU
eXBlIFdlYktpdEF1ZGlvUGFubmVyTm9kZTo6ZGlzdGFuY2VNb2RlbCgpIGNvbnN0Cit7CisgICAg
cmV0dXJuIGNvbnN0X2Nhc3Q8V2ViS2l0QXVkaW9QYW5uZXJOb2RlKj4odGhpcyktPm1fZGlzdGFu
Y2VFZmZlY3QubW9kZWwoKTsKK30KKwordm9pZCBXZWJLaXRBdWRpb1Bhbm5lck5vZGU6OnNldERp
c3RhbmNlTW9kZWwoRGlzdGFuY2VNb2RlbFR5cGUgbW9kZWwpCit7CisgICAgbV9kaXN0YW5jZUVm
ZmVjdC5zZXRNb2RlbChtb2RlbCwgdHJ1ZSk7Cit9CisKK3ZvaWQgV2ViS2l0QXVkaW9QYW5uZXJO
b2RlOjpnZXRBemltdXRoRWxldmF0aW9uKGRvdWJsZSogb3V0QXppbXV0aCwgZG91YmxlKiBvdXRF
bGV2YXRpb24pCit7CisgICAgLy8gRklYTUU6IHdlIHNob3VsZCBjYWNoZSBhemltdXRoIGFuZCBl
bGV2YXRpb24gKGlmIHBvc3NpYmxlKSwgc28gd2Ugb25seSByZS1jYWxjdWxhdGUgaWYgYSBjaGFu
Z2UgaGFzIGJlZW4gbWFkZS4KKworICAgIGRvdWJsZSBhemltdXRoID0gMC4wOworCisgICAgLy8g
Q2FsY3VsYXRlIHRoZSBzb3VyY2UtbGlzdGVuZXIgdmVjdG9yCisgICAgRmxvYXRQb2ludDNEIGxp
c3RlbmVyUG9zaXRpb24gPSBsaXN0ZW5lcigpLT5wb3NpdGlvbigpOworICAgIEZsb2F0UG9pbnQz
RCBzb3VyY2VMaXN0ZW5lciA9IHBvc2l0aW9uKCkgLSBsaXN0ZW5lclBvc2l0aW9uOworCisgICAg
aWYgKHNvdXJjZUxpc3RlbmVyLmlzWmVybygpKSB7CisgICAgICAgIC8vIGRlZ2VuZXJhdGUgY2Fz
ZSBpZiBzb3VyY2UgYW5kIGxpc3RlbmVyIGFyZSBhdCB0aGUgc2FtZSBwb2ludAorICAgICAgICAq
b3V0QXppbXV0aCA9IDAuMDsKKyAgICAgICAgKm91dEVsZXZhdGlvbiA9IDAuMDsKKyAgICAgICAg
cmV0dXJuOworICAgIH0KKworICAgIHNvdXJjZUxpc3RlbmVyLm5vcm1hbGl6ZSgpOworCisgICAg
Ly8gQWxpZ24gYXhlcworICAgIEZsb2F0UG9pbnQzRCBsaXN0ZW5lckZyb250ID0gbGlzdGVuZXIo
KS0+b3JpZW50YXRpb24oKTsKKyAgICBGbG9hdFBvaW50M0QgbGlzdGVuZXJVcCA9IGxpc3RlbmVy
KCktPnVwVmVjdG9yKCk7CisgICAgRmxvYXRQb2ludDNEIGxpc3RlbmVyUmlnaHQgPSBsaXN0ZW5l
ckZyb250LmNyb3NzKGxpc3RlbmVyVXApOworICAgIGxpc3RlbmVyUmlnaHQubm9ybWFsaXplKCk7
CisKKyAgICBGbG9hdFBvaW50M0QgbGlzdGVuZXJGcm9udE5vcm0gPSBsaXN0ZW5lckZyb250Owor
ICAgIGxpc3RlbmVyRnJvbnROb3JtLm5vcm1hbGl6ZSgpOworCisgICAgRmxvYXRQb2ludDNEIHVw
ID0gbGlzdGVuZXJSaWdodC5jcm9zcyhsaXN0ZW5lckZyb250Tm9ybSk7CisKKyAgICBmbG9hdCB1
cFByb2plY3Rpb24gPSBzb3VyY2VMaXN0ZW5lci5kb3QodXApOworCisgICAgRmxvYXRQb2ludDNE
IHByb2plY3RlZFNvdXJjZSA9IHNvdXJjZUxpc3RlbmVyIC0gdXBQcm9qZWN0aW9uICogdXA7Cisg
ICAgcHJvamVjdGVkU291cmNlLm5vcm1hbGl6ZSgpOworCisgICAgYXppbXV0aCA9IDE4MC4wICog
YWNvcyhwcm9qZWN0ZWRTb3VyY2UuZG90KGxpc3RlbmVyUmlnaHQpKSAvIHBpRG91YmxlOworICAg
IGZpeE5BTnMoYXppbXV0aCk7IC8vIGF2b2lkIGlsbGVnYWwgdmFsdWVzCisKKyAgICAvLyBTb3Vy
Y2UgIGluIGZyb250IG9yIGJlaGluZCB0aGUgbGlzdGVuZXIKKyAgICBkb3VibGUgZnJvbnRCYWNr
ID0gcHJvamVjdGVkU291cmNlLmRvdChsaXN0ZW5lckZyb250Tm9ybSk7CisgICAgaWYgKGZyb250
QmFjayA8IDAuMCkKKyAgICAgICAgYXppbXV0aCA9IDM2MC4wIC0gYXppbXV0aDsKKworICAgIC8v
IE1ha2UgYXppbXV0aCByZWxhdGl2ZSB0byAiZnJvbnQiIGFuZCBub3QgInJpZ2h0IiBsaXN0ZW5l
ciB2ZWN0b3IKKyAgICBpZiAoKGF6aW11dGggPj0gMC4wKSAmJiAoYXppbXV0aCA8PSAyNzAuMCkp
CisgICAgICAgIGF6aW11dGggPSA5MC4wIC0gYXppbXV0aDsKKyAgICBlbHNlCisgICAgICAgIGF6
aW11dGggPSA0NTAuMCAtIGF6aW11dGg7CisKKyAgICAvLyBFbGV2YXRpb24KKyAgICBkb3VibGUg
ZWxldmF0aW9uID0gOTAuMCAtIDE4MC4wICogYWNvcyhzb3VyY2VMaXN0ZW5lci5kb3QodXApKSAv
IHBpRG91YmxlOworICAgIGZpeE5BTnMoZWxldmF0aW9uKTsgLy8gYXZvaWQgaWxsZWdhbCB2YWx1
ZXMKKworICAgIGlmIChlbGV2YXRpb24gPiA5MC4wKQorICAgICAgICBlbGV2YXRpb24gPSAxODAu
MCAtIGVsZXZhdGlvbjsKKyAgICBlbHNlIGlmIChlbGV2YXRpb24gPCAtOTAuMCkKKyAgICAgICAg
ZWxldmF0aW9uID0gLTE4MC4wIC0gZWxldmF0aW9uOworCisgICAgaWYgKG91dEF6aW11dGgpCisg
ICAgICAgICpvdXRBemltdXRoID0gYXppbXV0aDsKKyAgICBpZiAob3V0RWxldmF0aW9uKQorICAg
ICAgICAqb3V0RWxldmF0aW9uID0gZWxldmF0aW9uOworfQorCitmbG9hdCBXZWJLaXRBdWRpb1Bh
bm5lck5vZGU6OmRvcHBsZXJSYXRlKCkKK3sKKyAgICBkb3VibGUgZG9wcGxlclNoaWZ0ID0gMS4w
OworCisgICAgLy8gRklYTUU6IG9wdGltaXplIGZvciBjYXNlIHdoZW4gbmVpdGhlciBzb3VyY2Ug
bm9yIGxpc3RlbmVyIGhhcyBjaGFuZ2VkLi4uCisgICAgZG91YmxlIGRvcHBsZXJGYWN0b3IgPSBs
aXN0ZW5lcigpLT5kb3BwbGVyRmFjdG9yKCk7CisKKyAgICBpZiAoZG9wcGxlckZhY3RvciA+IDAu
MCkgeworICAgICAgICBkb3VibGUgc3BlZWRPZlNvdW5kID0gbGlzdGVuZXIoKS0+c3BlZWRPZlNv
dW5kKCk7CisKKyAgICAgICAgY29uc3QgRmxvYXRQb2ludDNEICZzb3VyY2VWZWxvY2l0eSA9IG1f
dmVsb2NpdHk7CisgICAgICAgIGNvbnN0IEZsb2F0UG9pbnQzRCAmbGlzdGVuZXJWZWxvY2l0eSA9
IGxpc3RlbmVyKCktPnZlbG9jaXR5KCk7CisKKyAgICAgICAgLy8gRG9uJ3QgYm90aGVyIGlmIGJv
dGggc291cmNlIGFuZCBsaXN0ZW5lciBoYXZlIG5vIHZlbG9jaXR5CisgICAgICAgIGJvb2wgc291
cmNlSGFzVmVsb2NpdHkgPSAhc291cmNlVmVsb2NpdHkuaXNaZXJvKCk7CisgICAgICAgIGJvb2wg
bGlzdGVuZXJIYXNWZWxvY2l0eSA9ICFsaXN0ZW5lclZlbG9jaXR5LmlzWmVybygpOworCisgICAg
ICAgIGlmIChzb3VyY2VIYXNWZWxvY2l0eSB8fCBsaXN0ZW5lckhhc1ZlbG9jaXR5KSB7CisgICAg
ICAgICAgICAvLyBDYWxjdWxhdGUgdGhlIHNvdXJjZSB0byBsaXN0ZW5lciB2ZWN0b3IKKyAgICAg
ICAgICAgIEZsb2F0UG9pbnQzRCBsaXN0ZW5lclBvc2l0aW9uID0gbGlzdGVuZXIoKS0+cG9zaXRp
b24oKTsKKyAgICAgICAgICAgIEZsb2F0UG9pbnQzRCBzb3VyY2VUb0xpc3RlbmVyID0gcG9zaXRp
b24oKSAtIGxpc3RlbmVyUG9zaXRpb247CisKKyAgICAgICAgICAgIGRvdWJsZSBzb3VyY2VMaXN0
ZW5lck1hZ25pdHVkZSA9IHNvdXJjZVRvTGlzdGVuZXIubGVuZ3RoKCk7CisKKyAgICAgICAgICAg
IGRvdWJsZSBsaXN0ZW5lclByb2plY3Rpb24gPSBzb3VyY2VUb0xpc3RlbmVyLmRvdChsaXN0ZW5l
clZlbG9jaXR5KSAvIHNvdXJjZUxpc3RlbmVyTWFnbml0dWRlOworICAgICAgICAgICAgZG91Ymxl
IHNvdXJjZVByb2plY3Rpb24gPSBzb3VyY2VUb0xpc3RlbmVyLmRvdChzb3VyY2VWZWxvY2l0eSkg
LyBzb3VyY2VMaXN0ZW5lck1hZ25pdHVkZTsKKworICAgICAgICAgICAgbGlzdGVuZXJQcm9qZWN0
aW9uID0gLWxpc3RlbmVyUHJvamVjdGlvbjsKKyAgICAgICAgICAgIHNvdXJjZVByb2plY3Rpb24g
PSAtc291cmNlUHJvamVjdGlvbjsKKworICAgICAgICAgICAgZG91YmxlIHNjYWxlZFNwZWVkT2ZT
b3VuZCA9IHNwZWVkT2ZTb3VuZCAvIGRvcHBsZXJGYWN0b3I7CisgICAgICAgICAgICBsaXN0ZW5l
clByb2plY3Rpb24gPSBzdGQ6Om1pbihsaXN0ZW5lclByb2plY3Rpb24sIHNjYWxlZFNwZWVkT2ZT
b3VuZCk7CisgICAgICAgICAgICBzb3VyY2VQcm9qZWN0aW9uID0gc3RkOjptaW4oc291cmNlUHJv
amVjdGlvbiwgc2NhbGVkU3BlZWRPZlNvdW5kKTsKKworICAgICAgICAgICAgZG9wcGxlclNoaWZ0
ID0gKChzcGVlZE9mU291bmQgLSBkb3BwbGVyRmFjdG9yICogbGlzdGVuZXJQcm9qZWN0aW9uKSAv
IChzcGVlZE9mU291bmQgLSBkb3BwbGVyRmFjdG9yICogc291cmNlUHJvamVjdGlvbikpOworICAg
ICAgICAgICAgZml4TkFOcyhkb3BwbGVyU2hpZnQpOyAvLyBhdm9pZCBpbGxlZ2FsIHZhbHVlcwor
CisgICAgICAgICAgICAvLyBMaW1pdCB0aGUgcGl0Y2ggc2hpZnRpbmcgdG8gNCBvY3RhdmVzIHVw
IGFuZCAzIG9jdGF2ZXMgZG93bi4KKyAgICAgICAgICAgIGlmIChkb3BwbGVyU2hpZnQgPiAxNi4w
KQorICAgICAgICAgICAgICAgIGRvcHBsZXJTaGlmdCA9IDE2LjA7CisgICAgICAgICAgICBlbHNl
IGlmIChkb3BwbGVyU2hpZnQgPCAwLjEyNSkKKyAgICAgICAgICAgICAgICBkb3BwbGVyU2hpZnQg
PSAwLjEyNTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHJldHVybiBzdGF0aWNfY2FzdDxmbG9h
dD4oZG9wcGxlclNoaWZ0KTsKK30KKworZmxvYXQgV2ViS2l0QXVkaW9QYW5uZXJOb2RlOjpkaXN0
YW5jZUNvbmVHYWluKCkKK3sKKyAgICBGbG9hdFBvaW50M0QgbGlzdGVuZXJQb3NpdGlvbiA9IGxp
c3RlbmVyKCktPnBvc2l0aW9uKCk7CisgICAgRmxvYXRQb2ludDNEIHNvdXJjZVBvc2l0aW9uID0g
cG9zaXRpb24oKTsKKworICAgIGRvdWJsZSBsaXN0ZW5lckRpc3RhbmNlID0gc291cmNlUG9zaXRp
b24uZGlzdGFuY2VUbyhsaXN0ZW5lclBvc2l0aW9uKTsKKyAgICBkb3VibGUgZGlzdGFuY2VHYWlu
ID0gbV9kaXN0YW5jZUVmZmVjdC5nYWluKGxpc3RlbmVyRGlzdGFuY2UpOworCisgICAgbV9kaXN0
YW5jZUdhaW4tPnNldFZhbHVlKHN0YXRpY19jYXN0PGZsb2F0PihkaXN0YW5jZUdhaW4pKTsKKwor
ICAgIC8vIEZJWE1FOiBjb3VsZCBvcHRpbWl6ZSBieSBjYWNoaW5nIGNvbmVHYWluCisgICAgZG91
YmxlIGNvbmVHYWluID0gbV9jb25lRWZmZWN0LmdhaW4oc291cmNlUG9zaXRpb24sIG1fb3JpZW50
YXRpb24sIGxpc3RlbmVyUG9zaXRpb24pOworCisgICAgbV9jb25lR2Fpbi0+c2V0VmFsdWUoc3Rh
dGljX2Nhc3Q8ZmxvYXQ+KGNvbmVHYWluKSk7CisKKyAgICByZXR1cm4gZmxvYXQoZGlzdGFuY2VH
YWluICogY29uZUdhaW4pOworfQorCit2b2lkIFdlYktpdEF1ZGlvUGFubmVyTm9kZTo6bm90aWZ5
QXVkaW9Tb3VyY2VzQ29ubmVjdGVkVG9Ob2RlKEF1ZGlvTm9kZSogbm9kZSwgSGFzaFNldDxBdWRp
b05vZGUqPiYgdmlzaXRlZE5vZGVzKQoreworICAgIEFTU0VSVChub2RlKTsKKyAgICBpZiAoIW5v
ZGUpCisgICAgICAgIHJldHVybjsKKworICAgIC8vIEZpcnN0IGNoZWNrIGlmIHRoaXMgbm9kZSBp
cyBhbiBBdWRpb0J1ZmZlclNvdXJjZU5vZGUuIElmIHNvLCBsZXQgaXQga25vdyBhYm91dCB1cyBz
byB0aGF0IGRvcHBsZXIgc2hpZnQgcGl0Y2ggY2FuIGJlIHRha2VuIGludG8gYWNjb3VudC4KKyAg
ICBpZiAobm9kZS0+bm9kZVR5cGUoKSA9PSBOb2RlVHlwZUF1ZGlvQnVmZmVyU291cmNlKSB7Cisg
ICAgICAgIEF1ZGlvQnVmZmVyU291cmNlTm9kZSogYnVmZmVyU291cmNlTm9kZSA9IHJlaW50ZXJw
cmV0X2Nhc3Q8QXVkaW9CdWZmZXJTb3VyY2VOb2RlKj4obm9kZSk7CisgICAgICAgIGJ1ZmZlclNv
dXJjZU5vZGUtPnNldFBhbm5lck5vZGUodGhpcyk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgLy8g
R28gdGhyb3VnaCBhbGwgaW5wdXRzIHRvIHRoaXMgbm9kZS4KKyAgICAgICAgZm9yICh1bnNpZ25l
ZCBpID0gMDsgaSA8IG5vZGUtPm51bWJlck9mSW5wdXRzKCk7ICsraSkgeworICAgICAgICAgICAg
QXVkaW9Ob2RlSW5wdXQqIGlucHV0ID0gbm9kZS0+aW5wdXQoaSk7CisKKyAgICAgICAgICAgIC8v
IEZvciBlYWNoIGlucHV0LCBnbyB0aHJvdWdoIGFsbCBvZiBpdHMgY29ubmVjdGlvbnMsIGxvb2tp
bmcgZm9yIEF1ZGlvQnVmZmVyU291cmNlTm9kZXMuCisgICAgICAgICAgICBmb3IgKHVuc2lnbmVk
IGogPSAwOyBqIDwgaW5wdXQtPm51bWJlck9mUmVuZGVyaW5nQ29ubmVjdGlvbnMoKTsgKytqKSB7
CisgICAgICAgICAgICAgICAgQXVkaW9Ob2RlT3V0cHV0KiBjb25uZWN0ZWRPdXRwdXQgPSBpbnB1
dC0+cmVuZGVyaW5nT3V0cHV0KGopOworICAgICAgICAgICAgICAgIEF1ZGlvTm9kZSogY29ubmVj
dGVkTm9kZSA9IGNvbm5lY3RlZE91dHB1dC0+bm9kZSgpOworICAgICAgICAgICAgICAgIGlmICh2
aXNpdGVkTm9kZXMuY29udGFpbnMoY29ubmVjdGVkTm9kZSkpCisgICAgICAgICAgICAgICAgICAg
IGNvbnRpbnVlOworCisgICAgICAgICAgICAgICAgdmlzaXRlZE5vZGVzLmFkZChjb25uZWN0ZWRO
b2RlKTsKKyAgICAgICAgICAgICAgICBub3RpZnlBdWRpb1NvdXJjZXNDb25uZWN0ZWRUb05vZGUo
Y29ubmVjdGVkTm9kZSwgdmlzaXRlZE5vZGVzKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQor
ICAgIH0KK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKFdF
Ql9BVURJTykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vV2Vi
S2l0QXVkaW9QYW5uZXJOb2RlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1dl
YktpdEF1ZGlvUGFubmVyTm9kZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjg5Nzk3YzNjNGM1MGIzNjg5MjA1ODA2
YzE5N2YxMGJkOWM1Njc2YmUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmF1ZGlvL1dlYktpdEF1ZGlvUGFubmVyTm9kZS5oCkBAIC0wLDAgKzEsMTYwIEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDEwLCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJ
TVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04KKyAqIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUworICog
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoV0VCX0FVRElPKQorCisjaW5j
bHVkZSAiQXVkaW9MaXN0ZW5lci5oIgorI2luY2x1ZGUgIkF1ZGlvTm9kZS5oIgorI2luY2x1ZGUg
IkF1ZGlvUGFyYW0uaCIKKyNpbmNsdWRlICJDb25lLmgiCisjaW5jbHVkZSAiRGlzdGFuY2UuaCIK
KyNpbmNsdWRlICJGbG9hdFBvaW50M0QuaCIKKyNpbmNsdWRlICJQYW5uZXIuaCIKKyNpbmNsdWRl
ICJQYW5uZXJOb2RlLmgiCisjaW5jbHVkZSAiV2ViS2l0QXVkaW9Db250ZXh0LmgiCisjaW5jbHVk
ZSA8bWVtb3J5PgorI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CisjaW5jbHVkZSA8d3RmL0xvY2su
aD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBIUlRGRGF0YWJhc2VMb2FkZXI7CisK
Ky8vIFBhbm5lck5vZGUgaXMgYW4gQXVkaW9Ob2RlIHdpdGggb25lIGlucHV0IGFuZCBvbmUgb3V0
cHV0LgorLy8gSXQgcG9zaXRpb25zIGEgc291bmQgaW4gM0Qgc3BhY2UsIHdpdGggdGhlIGV4YWN0
IGVmZmVjdCBkZXBlbmRlbnQgb24gdGhlIHBhbm5pbmcgbW9kZWwuCisvLyBJdCBoYXMgYSBwb3Np
dGlvbiBhbmQgYW4gb3JpZW50YXRpb24gaW4gM0Qgc3BhY2Ugd2hpY2ggaXMgcmVsYXRpdmUgdG8g
dGhlIHBvc2l0aW9uIGFuZCBvcmllbnRhdGlvbiBvZiB0aGUgY29udGV4dCdzIEF1ZGlvTGlzdGVu
ZXIuCisvLyBBIGRpc3RhbmNlIGVmZmVjdCB3aWxsIGF0dGVudWF0ZSB0aGUgZ2FpbiBhcyB0aGUg
cG9zaXRpb24gbW92ZXMgYXdheSBmcm9tIHRoZSBsaXN0ZW5lci4KKy8vIEEgY29uZSBlZmZlY3Qg
d2lsbCBhdHRlbnVhdGUgdGhlIGdhaW4gYXMgdGhlIG9yaWVudGF0aW9uIG1vdmVzIGF3YXkgZnJv
bSB0aGUgbGlzdGVuZXIuCisvLyBBbGwgb2YgdGhlc2UgZWZmZWN0cyBmb2xsb3cgdGhlIE9wZW5B
TCBzcGVjaWZpY2F0aW9uIHZlcnkgY2xvc2VseS4KKworY2xhc3MgV2ViS2l0QXVkaW9QYW5uZXJO
b2RlIGZpbmFsIDogcHVibGljIFBhbm5lck5vZGVCYXNlIHsKKyAgICBXVEZfTUFLRV9JU09fQUxM
T0NBVEVEKFdlYktpdEF1ZGlvUGFubmVyTm9kZSk7CitwdWJsaWM6CisgICAgc3RhdGljIFJlZjxX
ZWJLaXRBdWRpb1Bhbm5lck5vZGU+IGNyZWF0ZShXZWJLaXRBdWRpb0NvbnRleHQmIGNvbnRleHQs
IGZsb2F0IHNhbXBsZVJhdGUpCisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBX
ZWJLaXRBdWRpb1Bhbm5lck5vZGUoY29udGV4dCwgc2FtcGxlUmF0ZSkpOworICAgIH0KKworICAg
IHZpcnR1YWwgfldlYktpdEF1ZGlvUGFubmVyTm9kZSgpOworCisgICAgV2ViS2l0QXVkaW9Db250
ZXh0JiBjb250ZXh0KCkgeyByZXR1cm4gZG93bmNhc3Q8V2ViS2l0QXVkaW9Db250ZXh0PihBdWRp
b05vZGU6OmNvbnRleHQoKSk7IH0KKyAgICBjb25zdCBXZWJLaXRBdWRpb0NvbnRleHQmIGNvbnRl
eHQoKSBjb25zdCB7IHJldHVybiBkb3duY2FzdDxXZWJLaXRBdWRpb0NvbnRleHQ+KEF1ZGlvTm9k
ZTo6Y29udGV4dCgpKTsgfQorCisgICAgLy8gQXVkaW9Ob2RlCisgICAgdm9pZCBwcm9jZXNzKHNp
emVfdCBmcmFtZXNUb1Byb2Nlc3MpIG92ZXJyaWRlOworICAgIHZvaWQgcHVsbElucHV0cyhzaXpl
X3QgZnJhbWVzVG9Qcm9jZXNzKSBvdmVycmlkZTsKKyAgICB2b2lkIHJlc2V0KCkgb3ZlcnJpZGU7
CisgICAgdm9pZCBpbml0aWFsaXplKCkgb3ZlcnJpZGU7CisgICAgdm9pZCB1bmluaXRpYWxpemUo
KSBvdmVycmlkZTsKKworICAgIC8vIExpc3RlbmVyCisgICAgQXVkaW9MaXN0ZW5lciogbGlzdGVu
ZXIoKTsKKworICAgIC8vIFBhbm5pbmcgbW9kZWwKKyAgICBQYW5uaW5nTW9kZWxUeXBlIHBhbm5p
bmdNb2RlbCgpIGNvbnN0IHsgcmV0dXJuIG1fcGFubmluZ01vZGVsOyB9CisgICAgdm9pZCBzZXRQ
YW5uaW5nTW9kZWwoUGFubmluZ01vZGVsVHlwZSk7CisKKyAgICAvLyBQb3NpdGlvbgorICAgIEZs
b2F0UG9pbnQzRCBwb3NpdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fcG9zaXRpb247IH0KKyAgICB2
b2lkIHNldFBvc2l0aW9uKGZsb2F0IHgsIGZsb2F0IHksIGZsb2F0IHopIHsgbV9wb3NpdGlvbiA9
IEZsb2F0UG9pbnQzRCh4LCB5LCB6KTsgfQorCisgICAgLy8gT3JpZW50YXRpb24KKyAgICBGbG9h
dFBvaW50M0Qgb3JpZW50YXRpb24oKSBjb25zdCB7IHJldHVybiBtX29yaWVudGF0aW9uOyB9Cisg
ICAgdm9pZCBzZXRPcmllbnRhdGlvbihmbG9hdCB4LCBmbG9hdCB5LCBmbG9hdCB6KSB7IG1fb3Jp
ZW50YXRpb24gPSBGbG9hdFBvaW50M0QoeCwgeSwgeik7IH0KKworICAgIC8vIFZlbG9jaXR5Cisg
ICAgRmxvYXRQb2ludDNEIHZlbG9jaXR5KCkgY29uc3QgeyByZXR1cm4gbV92ZWxvY2l0eTsgfQor
ICAgIHZvaWQgc2V0VmVsb2NpdHkoZmxvYXQgeCwgZmxvYXQgeSwgZmxvYXQgeikgeyBtX3ZlbG9j
aXR5ID0gRmxvYXRQb2ludDNEKHgsIHksIHopOyB9CisKKyAgICAvLyBEaXN0YW5jZSBwYXJhbWV0
ZXJzCisgICAgRGlzdGFuY2VNb2RlbFR5cGUgZGlzdGFuY2VNb2RlbCgpIGNvbnN0OworICAgIHZv
aWQgc2V0RGlzdGFuY2VNb2RlbChEaXN0YW5jZU1vZGVsVHlwZSk7CisKKyAgICBkb3VibGUgcmVm
RGlzdGFuY2UoKSB7IHJldHVybiBtX2Rpc3RhbmNlRWZmZWN0LnJlZkRpc3RhbmNlKCk7IH0KKyAg
ICB2b2lkIHNldFJlZkRpc3RhbmNlKGRvdWJsZSByZWZEaXN0YW5jZSkgeyBtX2Rpc3RhbmNlRWZm
ZWN0LnNldFJlZkRpc3RhbmNlKHJlZkRpc3RhbmNlKTsgfQorCisgICAgZG91YmxlIG1heERpc3Rh
bmNlKCkgeyByZXR1cm4gbV9kaXN0YW5jZUVmZmVjdC5tYXhEaXN0YW5jZSgpOyB9CisgICAgdm9p
ZCBzZXRNYXhEaXN0YW5jZShkb3VibGUgbWF4RGlzdGFuY2UpIHsgbV9kaXN0YW5jZUVmZmVjdC5z
ZXRNYXhEaXN0YW5jZShtYXhEaXN0YW5jZSk7IH0KKworICAgIGRvdWJsZSByb2xsb2ZmRmFjdG9y
KCkgeyByZXR1cm4gbV9kaXN0YW5jZUVmZmVjdC5yb2xsb2ZmRmFjdG9yKCk7IH0KKyAgICB2b2lk
IHNldFJvbGxvZmZGYWN0b3IoZG91YmxlIHJvbGxvZmZGYWN0b3IpIHsgbV9kaXN0YW5jZUVmZmVj
dC5zZXRSb2xsb2ZmRmFjdG9yKHJvbGxvZmZGYWN0b3IpOyB9CisKKyAgICAvLyBTb3VuZCBjb25l
cyAtIGFuZ2xlcyBpbiBkZWdyZWVzCisgICAgZG91YmxlIGNvbmVJbm5lckFuZ2xlKCkgY29uc3Qg
eyByZXR1cm4gbV9jb25lRWZmZWN0LmlubmVyQW5nbGUoKTsgfQorICAgIHZvaWQgc2V0Q29uZUlu
bmVyQW5nbGUoZG91YmxlIGFuZ2xlKSB7IG1fY29uZUVmZmVjdC5zZXRJbm5lckFuZ2xlKGFuZ2xl
KTsgfQorCisgICAgZG91YmxlIGNvbmVPdXRlckFuZ2xlKCkgY29uc3QgeyByZXR1cm4gbV9jb25l
RWZmZWN0Lm91dGVyQW5nbGUoKTsgfQorICAgIHZvaWQgc2V0Q29uZU91dGVyQW5nbGUoZG91Ymxl
IGFuZ2xlKSB7IG1fY29uZUVmZmVjdC5zZXRPdXRlckFuZ2xlKGFuZ2xlKTsgfQorCisgICAgZG91
YmxlIGNvbmVPdXRlckdhaW4oKSBjb25zdCB7IHJldHVybiBtX2NvbmVFZmZlY3Qub3V0ZXJHYWlu
KCk7IH0KKyAgICB2b2lkIHNldENvbmVPdXRlckdhaW4oZG91YmxlIGFuZ2xlKSB7IG1fY29uZUVm
ZmVjdC5zZXRPdXRlckdhaW4oYW5nbGUpOyB9CisKKyAgICB2b2lkIGdldEF6aW11dGhFbGV2YXRp
b24oZG91YmxlKiBvdXRBemltdXRoLCBkb3VibGUqIG91dEVsZXZhdGlvbik7CisgICAgZmxvYXQg
ZG9wcGxlclJhdGUoKSBmaW5hbDsKKworICAgIC8vIEFjY2Vzc29ycyBmb3IgZHluYW1pY2FsbHkg
Y2FsY3VsYXRlZCBnYWluIHZhbHVlcy4KKyAgICBBdWRpb1BhcmFtKiBkaXN0YW5jZUdhaW4oKSB7
IHJldHVybiBtX2Rpc3RhbmNlR2Fpbi5nZXQoKTsgfQorICAgIEF1ZGlvUGFyYW0qIGNvbmVHYWlu
KCkgeyByZXR1cm4gbV9jb25lR2Fpbi5nZXQoKTsgfQorCisgICAgZG91YmxlIHRhaWxUaW1lKCkg
Y29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9wYW5uZXIgPyBtX3Bhbm5lci0+dGFpbFRpbWUoKSA6
IDA7IH0KKyAgICBkb3VibGUgbGF0ZW5jeVRpbWUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBt
X3Bhbm5lciA/IG1fcGFubmVyLT5sYXRlbmN5VGltZSgpIDogMDsgfQorCitwcml2YXRlOgorICAg
IFdlYktpdEF1ZGlvUGFubmVyTm9kZShXZWJLaXRBdWRpb0NvbnRleHQmLCBmbG9hdCBzYW1wbGVS
YXRlKTsKKworICAgIC8vIFJldHVybnMgdGhlIGNvbWJpbmVkIGRpc3RhbmNlIGFuZCBjb25lIGdh
aW4gYXR0ZW51YXRpb24uCisgICAgZmxvYXQgZGlzdGFuY2VDb25lR2FpbigpOworCisgICAgLy8g
Tm90aWZpZXMgYW55IEF1ZGlvQnVmZmVyU291cmNlTm9kZXMgY29ubmVjdGVkIHRvIHVzIGVpdGhl
ciBkaXJlY3RseSBvciBpbmRpcmVjdGx5IGFib3V0IG91ciBleGlzdGVuY2UuCisgICAgLy8gVGhp
cyBpcyBpbiBvcmRlciB0byBoYW5kbGUgdGhlIHBpdGNoIGNoYW5nZSBuZWNlc3NhcnkgZm9yIHRo
ZSBkb3BwbGVyIHNoaWZ0LgorICAgIHZvaWQgbm90aWZ5QXVkaW9Tb3VyY2VzQ29ubmVjdGVkVG9O
b2RlKEF1ZGlvTm9kZSosIEhhc2hTZXQ8QXVkaW9Ob2RlKj4mIHZpc2l0ZWROb2Rlcyk7CisKKyAg
ICBzdGQ6OnVuaXF1ZV9wdHI8UGFubmVyPiBtX3Bhbm5lcjsKKyAgICBQYW5uaW5nTW9kZWxUeXBl
IG1fcGFubmluZ01vZGVsOworCisgICAgRmxvYXRQb2ludDNEIG1fcG9zaXRpb247CisgICAgRmxv
YXRQb2ludDNEIG1fb3JpZW50YXRpb247CisgICAgRmxvYXRQb2ludDNEIG1fdmVsb2NpdHk7CisK
KyAgICAvLyBHYWluCisgICAgUmVmUHRyPEF1ZGlvUGFyYW0+IG1fZGlzdGFuY2VHYWluOworICAg
IFJlZlB0cjxBdWRpb1BhcmFtPiBtX2NvbmVHYWluOworICAgIERpc3RhbmNlRWZmZWN0IG1fZGlz
dGFuY2VFZmZlY3Q7CisgICAgQ29uZUVmZmVjdCBtX2NvbmVFZmZlY3Q7CisgICAgZmxvYXQgbV9s
YXN0R2FpbjsKKworICAgIC8vIEhSVEYgRGF0YWJhc2UgbG9hZGVyCisgICAgUmVmUHRyPEhSVEZE
YXRhYmFzZUxvYWRlcj4gbV9ocnRmRGF0YWJhc2VMb2FkZXI7CisKKyAgICB1bnNpZ25lZCBtX2Nv
bm5lY3Rpb25Db3VudDsKKworICAgIC8vIFN5bmNocm9uaXplIHByb2Nlc3MoKSBhbmQgc2V0UGFu
bmluZ01vZGVsKCkgd2hpY2ggY2FuIGNoYW5nZSB0aGUgcGFubmVyLgorICAgIG11dGFibGUgTG9j
ayBtX3Bhbm5lck11dGV4OworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vV2ViS2l0QXVkaW9Q
YW5uZXJOb2RlLmlkbCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vV2ViS2l0QXVk
aW9QYW5uZXJOb2RlLmlkbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44OGQyNjkxMGFlMTc1MDQyMTM2YTVlNjJmYWM4
MTNjYzVmYzM2NzJmCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJhdWRpby9XZWJLaXRBdWRpb1Bhbm5lck5vZGUuaWRsCkBAIC0wLDAgKzEsNDkgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTAsIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiAgUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJ
RUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTgorICogQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTCisgKiBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCitbCisgICAgQ29uZGl0aW9uYWw9V0VCX0FVRElPLAorICAgIEpTR2VuZXJhdGVUb0pT
T2JqZWN0LAorICAgIEludGVyZmFjZU5hbWU9d2Via2l0QXVkaW9QYW5uZXJOb2RlLAorXSBpbnRl
cmZhY2UgV2ViS2l0QXVkaW9QYW5uZXJOb2RlIDogQXVkaW9Ob2RlIHsKKyAgICAvLyBEZWZhdWx0
IG1vZGVsIGZvciBzdGVyZW8gaXMgSFJURgorICAgIGF0dHJpYnV0ZSBQYW5uaW5nTW9kZWxUeXBl
IHBhbm5pbmdNb2RlbDsKKworICAgIC8vIFVzZXMgYSAzRCBjYXJ0ZXNpYW4gY29vcmRpbmF0ZSBz
eXN0ZW0KKyAgICB2b2lkIHNldFBvc2l0aW9uKHVucmVzdHJpY3RlZCBmbG9hdCB4LCB1bnJlc3Ry
aWN0ZWQgZmxvYXQgeSwgdW5yZXN0cmljdGVkIGZsb2F0IHopOworICAgIHZvaWQgc2V0T3JpZW50
YXRpb24odW5yZXN0cmljdGVkIGZsb2F0IHgsIHVucmVzdHJpY3RlZCBmbG9hdCB5LCB1bnJlc3Ry
aWN0ZWQgZmxvYXQgeik7CisgICAgdm9pZCBzZXRWZWxvY2l0eSh1bnJlc3RyaWN0ZWQgZmxvYXQg
eCwgdW5yZXN0cmljdGVkIGZsb2F0IHksIHVucmVzdHJpY3RlZCBmbG9hdCB6KTsKKworICAgIC8v
IERpc3RhbmNlIG1vZGVsCisgICAgYXR0cmlidXRlIERpc3RhbmNlTW9kZWxUeXBlIGRpc3RhbmNl
TW9kZWw7CisKKyAgICBhdHRyaWJ1dGUgdW5yZXN0cmljdGVkIGRvdWJsZSByZWZEaXN0YW5jZTsK
KyAgICBhdHRyaWJ1dGUgdW5yZXN0cmljdGVkIGRvdWJsZSBtYXhEaXN0YW5jZTsKKyAgICBhdHRy
aWJ1dGUgdW5yZXN0cmljdGVkIGRvdWJsZSByb2xsb2ZmRmFjdG9yOworCisgICAgLy8gRGlyZWN0
aW9uYWwgc291bmQgY29uZQorICAgIGF0dHJpYnV0ZSB1bnJlc3RyaWN0ZWQgZG91YmxlIGNvbmVJ
bm5lckFuZ2xlOworICAgIGF0dHJpYnV0ZSB1bnJlc3RyaWN0ZWQgZG91YmxlIGNvbmVPdXRlckFu
Z2xlOworICAgIGF0dHJpYnV0ZSB1bnJlc3RyaWN0ZWQgZG91YmxlIGNvbmVPdXRlckdhaW47Cit9
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9XZWJLaXRPZmZs
aW5lQXVkaW9Db250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vV2Vi
S2l0T2ZmbGluZUF1ZGlvQ29udGV4dC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDhlMzk5YTE0YTNkNWQzMTY3
NWJhOWEwNmY4MTQwMzEyMzUyYjRhMQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViYXVkaW8vV2ViS2l0T2ZmbGluZUF1ZGlvQ29udGV4dC5jcHAKQEAgLTAsMCAr
MSw2MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiwgR29vZ2xlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5EIEFOWQorICog
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OCisgKiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMKKyAqIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2lmIEVOQUJMRShX
RUJfQVVESU8pCisKKyNpbmNsdWRlICJXZWJLaXRPZmZsaW5lQXVkaW9Db250ZXh0LmgiCisKKyNp
bmNsdWRlICJBdWRpb0J1ZmZlci5oIgorI2luY2x1ZGUgIkRvY3VtZW50LmgiCisjaW5jbHVkZSA8
d3RmL0lzb01hbGxvY0lubGluZXMuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitXVEZfTUFL
RV9JU09fQUxMT0NBVEVEX0lNUEwoV2ViS2l0T2ZmbGluZUF1ZGlvQ29udGV4dCk7CisKK2lubGlu
ZSBXZWJLaXRPZmZsaW5lQXVkaW9Db250ZXh0OjpXZWJLaXRPZmZsaW5lQXVkaW9Db250ZXh0KERv
Y3VtZW50JiBkb2N1bWVudCwgQXVkaW9CdWZmZXIqIHJlbmRlclRhcmdldCkKKyAgICA6IFdlYktp
dEF1ZGlvQ29udGV4dChkb2N1bWVudCwgcmVuZGVyVGFyZ2V0KQoreworfQorCitFeGNlcHRpb25P
cjxSZWY8V2ViS2l0T2ZmbGluZUF1ZGlvQ29udGV4dD4+IFdlYktpdE9mZmxpbmVBdWRpb0NvbnRl
eHQ6OmNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCB1bnNpZ25lZCBudW1i
ZXJPZkNoYW5uZWxzLCBzaXplX3QgbnVtYmVyT2ZGcmFtZXMsIGZsb2F0IHNhbXBsZVJhdGUpCit7
CisgICAgLy8gRklYTUU6IEFkZCBzdXBwb3J0IGZvciB3b3JrZXJzLgorICAgIGlmICghaXM8RG9j
dW1lbnQ+KGNvbnRleHQpKQorICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgTm90U3VwcG9ydGVk
RXJyb3IgfTsKKyAgICBpZiAoIW51bWJlck9mQ2hhbm5lbHMgfHwgbnVtYmVyT2ZDaGFubmVscyA+
IDEwIHx8ICFudW1iZXJPZkZyYW1lcyB8fCAhaXNTYW1wbGVSYXRlUmFuZ2VHb29kKHNhbXBsZVJh
dGUpKQorICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgU3ludGF4RXJyb3IgfTsKKyAgICBhdXRv
IHJlbmRlclRhcmdldCA9IEF1ZGlvQnVmZmVyOjpjcmVhdGUobnVtYmVyT2ZDaGFubmVscywgbnVt
YmVyT2ZGcmFtZXMsIHNhbXBsZVJhdGUpOworICAgIGlmICghcmVuZGVyVGFyZ2V0KQorICAgICAg
ICByZXR1cm4gRXhjZXB0aW9uIHsgU3ludGF4RXJyb3IgfTsKKworICAgIGF1dG8gYXVkaW9Db250
ZXh0ID0gYWRvcHRSZWYoKm5ldyBXZWJLaXRPZmZsaW5lQXVkaW9Db250ZXh0KGRvd25jYXN0PERv
Y3VtZW50Pihjb250ZXh0KSwgcmVuZGVyVGFyZ2V0LmdldCgpKSk7CisgICAgYXVkaW9Db250ZXh0
LT5zdXNwZW5kSWZOZWVkZWQoKTsKKyAgICByZXR1cm4gYXVkaW9Db250ZXh0OworfQorCit9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoV0VCX0FVRElPKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9XZWJLaXRPZmZsaW5lQXVkaW9D
b250ZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1dlYktpdE9mZmxpbmVB
dWRpb0NvbnRleHQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jMjU0ZWQ0MWZlMDNkNjFlN2VjYjU0ODdlMmM3OWM0
NzQ2MTgyZjk0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJh
dWRpby9XZWJLaXRPZmZsaW5lQXVkaW9Db250ZXh0LmgKQEAgLTAsMCArMSw0MCBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxMiwgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuICBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElF
RAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OCisgKiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKKyAqIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiV2ViS2l0QXVkaW9Db250ZXh0LmgiCisK
K25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgV2ViS2l0T2ZmbGluZUF1ZGlvQ29udGV4dCBm
aW5hbCA6IHB1YmxpYyBXZWJLaXRBdWRpb0NvbnRleHQgeworICAgIFdURl9NQUtFX0lTT19BTExP
Q0FURUQoV2ViS2l0T2ZmbGluZUF1ZGlvQ29udGV4dCk7CitwdWJsaWM6CisgICAgc3RhdGljIEV4
Y2VwdGlvbk9yPFJlZjxXZWJLaXRPZmZsaW5lQXVkaW9Db250ZXh0Pj4gY3JlYXRlKFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQmLCB1bnNpZ25lZCBudW1iZXJPZkNoYW5uZWxzLCBzaXplX3QgbnVtYmVy
T2ZGcmFtZXMsIGZsb2F0IHNhbXBsZVJhdGUpOworCitwcml2YXRlOgorICAgIFdlYktpdE9mZmxp
bmVBdWRpb0NvbnRleHQoRG9jdW1lbnQmLCBBdWRpb0J1ZmZlciogcmVuZGVyVGFyZ2V0KTsKK307
CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViYXVkaW8vV2ViS2l0T2ZmbGluZUF1ZGlvQ29udGV4dC5pZGwgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1dlYktpdE9mZmxpbmVBdWRpb0NvbnRleHQuaWRsCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjU2YTY0OGJjMmE1ZjIxYzMwNWRkNDgwYzQxYTAwNTIzMTI0ZGNiZjEKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1dlYktpdE9mZmxpbmVB
dWRpb0NvbnRleHQuaWRsCkBAIC0wLDAgKzEsMzEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTIsIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
ICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBB
UkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTgorICogQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTCisgKiBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCitbCisgICAgQ29u
ZGl0aW9uYWw9V0VCX0FVRElPLAorICAgIEludGVyZmFjZU5hbWU9d2Via2l0T2ZmbGluZUF1ZGlv
Q29udGV4dCwKKyAgICBKU0dlbmVyYXRlVG9KU09iamVjdCwKK10gaW50ZXJmYWNlIFdlYktpdE9m
ZmxpbmVBdWRpb0NvbnRleHQgOiBXZWJLaXRBdWRpb0NvbnRleHQgeworICAgIFtDYWxsV2l0aD1T
Y3JpcHRFeGVjdXRpb25Db250ZXh0LCBNYXlUaHJvd0V4Y2VwdGlvbl0gY29uc3RydWN0b3IodW5z
aWduZWQgbG9uZyBudW1iZXJPZkNoYW5uZWxzLCB1bnNpZ25lZCBsb25nIG51bWJlck9mRnJhbWVz
LCB1bnJlc3RyaWN0ZWQgZmxvYXQgc2FtcGxlUmF0ZSk7Cit9OwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvU291cmNlcy50eHQgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAppbmRleCAy
YzU2ZWQ1MTM5ZGIwNzlhODZjNzc1MWE5NTYzOGNiMjQ4YmZlNmM3Li4xNDk1OWMzODE1MDM1NmE4
N2RlZWUzMmVmYjM3YjI2MjU2NWYyNmU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Tb3Vy
Y2VzLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dApAQCAtMjY5LDYgKzI2OSw5
IEBAIE1vZHVsZXMvd2ViYXVkaW8vU2NyaXB0UHJvY2Vzc29yTm9kZS5jcHAKIE1vZHVsZXMvd2Vi
YXVkaW8vV2F2ZVNoYXBlckRTUEtlcm5lbC5jcHAKIE1vZHVsZXMvd2ViYXVkaW8vV2F2ZVNoYXBl
ck5vZGUuY3BwCiBNb2R1bGVzL3dlYmF1ZGlvL1dhdmVTaGFwZXJQcm9jZXNzb3IuY3BwCitNb2R1
bGVzL3dlYmF1ZGlvL1dlYktpdEF1ZGlvQ29udGV4dC5jcHAKK01vZHVsZXMvd2ViYXVkaW8vV2Vi
S2l0QXVkaW9QYW5uZXJOb2RlLmNwcAorTW9kdWxlcy93ZWJhdWRpby9XZWJLaXRPZmZsaW5lQXVk
aW9Db250ZXh0LmNwcAogCiBNb2R1bGVzL3dlYmF1dGhuL0F1dGhlbnRpY2F0b3JDb29yZGluYXRv
ci5jcHAKIE1vZHVsZXMvd2ViYXV0aG4vQXV0aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNlLmNw
cApAQCAtMjc0NCw2ICsyNzQ3LDcgQEAgSlNBdWRpb0J1ZmZlckNhbGxiYWNrLmNwcAogSlNBdWRp
b0J1ZmZlclNvdXJjZU5vZGUuY3BwCiBKU0F1ZGlvQ29uZmlndXJhdGlvbi5jcHAKIEpTQXVkaW9D
b250ZXh0LmNwcAorSlNBdWRpb0NvbnRleHRTdGF0ZS5jcHAKIEpTQXVkaW9EZXN0aW5hdGlvbk5v
ZGUuY3BwCiBKU0F1ZGlvTGlzdGVuZXIuY3BwCiBKU0F1ZGlvTm9kZS5jcHAKQEAgLTI5MTQsNiAr
MjkxOCw3IEBAIEpTRGV2aWNlTW90aW9uRXZlbnQuY3BwCiBKU0RldmljZU9yaWVudGF0aW9uRXZl
bnQuY3BwCiBKU0RldmljZU9yaWVudGF0aW9uT3JNb3Rpb25QZXJtaXNzaW9uU3RhdGUuY3BwCiBK
U0RldmljZU9yaWVudGF0aW9uT3JNb3Rpb25FdmVudC5jcHAKK0pTRGlzdGFuY2VNb2RlbFR5cGUu
Y3BwCiBKU0RvY3VtZW50LmNwcAogSlNEb2N1bWVudEFuZEVsZW1lbnRFdmVudEhhbmRsZXJzLmNw
cAogSlNEb2N1bWVudEZyYWdtZW50LmNwcApAQCAtMzIxMSw2ICszMjE2LDcgQEAgSlNPdmVyZmxv
d0V2ZW50LmNwcAogSlNQYWdlVHJhbnNpdGlvbkV2ZW50LmNwcAogSlNQYWludFJlbmRlcmluZ0Nv
bnRleHQyRC5jcHAKIEpTUGFubmVyTm9kZS5jcHAKK0pTUGFubmluZ01vZGVsVHlwZS5jcHAKIEpT
UGFyZW50Tm9kZS5jcHAKIEpTUGF0aDJELmNwcAogSlNQYXllckVycm9yRmllbGRzLmNwcApAQCAt
MzU2Nyw3ICszNTczLDEwIEBAIEpTV2ViR1BVU3dhcENoYWluLmNwcAogSlNXZWJHUFVUZXh0dXJl
LmNwcAogSlNXZWJHUFVUZXh0dXJlVmlldy5jcHAKIEpTV2ViS2l0QW5pbWF0aW9uRXZlbnQuY3Bw
CitKU1dlYktpdEF1ZGlvQ29udGV4dC5jcHAKK0pTV2ViS2l0QXVkaW9QYW5uZXJOb2RlLmNwcAog
SlNXZWJLaXRDU1NNYXRyaXguY3BwCitKU1dlYktpdE9mZmxpbmVBdWRpb0NvbnRleHQuY3BwCiBK
U1dlYktpdFBsYXliYWNrVGFyZ2V0QXZhaWxhYmlsaXR5RXZlbnQuY3BwCiBKU1dlYktpdFBvaW50
LmNwcAogSlNXZWJLaXRUcmFuc2l0aW9uRXZlbnQuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggYzdhYWM4NTk2NzY3ODE4YjY5
ZDM1OGUzYWQ4MDQ4NGUxMjY0Yjg2MC4uNDZmOTZkMTUwY2JmMWI3ZmJkODY1OTI0YjZiMTRkMmY2
Yzg3MmVkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagpAQCAtMjQwNywxMiArMjQwNywxNiBAQAogCQk4MzAwMzBGODFCN0QzQjc4MDBF
RDNBQUMgLyogQ2FjaGVkSFRNTENvbGxlY3Rpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgzMDAzMEY3MUI3RDM5ODgwMEVEM0FBQyAvKiBDYWNoZWRI
VE1MQ29sbGVjdGlvbi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CiAJCTgzMDMzNTAyMUY1NDkwNTcwMDRERjcwNyAvKiBGaWxlU3lzdGVtRGlyZWN0b3J5
UmVhZGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4
MzAzMzRGQzFGNTQ5MDUyMDA0REY3MDcgLyogRmlsZVN5c3RlbURpcmVjdG9yeVJlYWRlci5oICov
OyB9OwogCQk4MzAzMzUwMzFGNTQ5MDVBMDA0REY3MDcgLyogRmlsZVN5c3RlbUVudHJpZXNDYWxs
YmFjay5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODMw
MzM0RkUxRjU0OTA1MjAwNERGNzA3IC8qIEZpbGVTeXN0ZW1FbnRyaWVzQ2FsbGJhY2suaCAqLzsg
fTsKKwkJODMwNDAyODIyNDlBN0E1RjAwQTkwRDhEIC8qIFBhbm5pbmdNb2RlbFR5cGUuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgzMDQwMjgwMjQ5QTdB
NUMwMEE5MEQ4RCAvKiBQYW5uaW5nTW9kZWxUeXBlLmggKi87IH07CisJCTgzMDQwMjgzMjQ5QTdB
NjIwMEE5MEQ4RCAvKiBEaXN0YW5jZU1vZGVsVHlwZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODMwNDAyN0QyNDlBN0E1QjAwQTkwRDhEIC8qIERpc3Rh
bmNlTW9kZWxUeXBlLmggKi87IH07CiAJCTgzMDUxOTk2MUJCMEYxMTAwMEYzNzcyRSAvKiBIVE1M
VGltZUVsZW1lbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDgzMDUxOTkzMUJCMEYwRTcwMEYzNzcyRSAvKiBIVE1MVGltZUVsZW1lbnQuaCAqLzsgfTsK
IAkJODMwNzg0QjIxQzUyRUUyQzAwMTA0RDFEIC8qIFhNTERvY3VtZW50LmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4MzA3ODRCMTFDNTJFRTE5MDAxMDRE
MUQgLyogWE1MRG9jdW1lbnQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwogCQk4MzBBMzZCRDFEQUM1RkFEMDA2RDdEMDkgLyogSlNNb3VzZUV2ZW50SW5p
dC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODMwQTM2
QkIxREFDNUZBNzAwNkQ3RDA5IC8qIEpTTW91c2VFdmVudEluaXQuaCAqLzsgfTsKIAkJODMxMDJC
MjcxRjlFQUREOTAwRTQwNEI5IC8qIEpTRXh0ZW5kYWJsZU1lc3NhZ2VFdmVudC5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODMxMDJCMjMxRjlFQURDMjAw
RTQwNEI5IC8qIEpTRXh0ZW5kYWJsZU1lc3NhZ2VFdmVudC5oICovOyB9OwogCQk4MzExQzAwMzFG
QUEyRTk1MDBFM0M4RTUgLyogU1dTZXJ2ZXJKb2JRdWV1ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODMxMUMwMDIxRkFBMkU4OTAwRTNDOEU1IC8qIFNX
U2VydmVySm9iUXVldWUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwogCQk4MzEyMEM3MTFDNTZGM0ZCMDAxQ0IxMTIgLyogSFRNTERhdGFFbGVtZW50Lmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4MzRCODZBNzFD
NTZFODNBMDBGM0YwRTMgLyogSFRNTERhdGFFbGVtZW50LmggKi87IH07CisJCTgzMUI2MTc2MjQ5
OUE1QkIwMEMwN0M3OSAvKiBXZWJLaXRBdWRpb1Bhbm5lck5vZGUuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgzMUI2MTc0MjQ5OUE1OUMwMEMwN0M3OSAv
KiBXZWJLaXRBdWRpb1Bhbm5lck5vZGUuaCAqLzsgfTsKKwkJODMxQjYxNzcyNDk5QTVCRjAwQzA3
Qzc5IC8qIFdlYktpdE9mZmxpbmVBdWRpb0NvbnRleHQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgzMUI2MTc1MjQ5OUE1OUQwMEMwN0M3OSAvKiBXZWJL
aXRPZmZsaW5lQXVkaW9Db250ZXh0LmggKi87IH07CiAJCTgzMjE1MDdFMUYyN0VBMUIwMDk1QjEz
NiAvKiBOYXZpZ2F0b3JCZWFjb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDgzMjE1MDdCMUYyN0VBMTUwMDk1QjEzNiAvKiBOYXZpZ2F0b3JCZWFjb24u
aCAqLzsgfTsKIAkJODMyQjg0MzQxOUQ4RTU1MTAwQjI2MDU1IC8qIFNWR0FuaW1hdGVFbGVtZW50
QmFzZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODMy
Qjg0MzMxOUQ4RTU1MTAwQjI2MDU1IC8qIFNWR0FuaW1hdGVFbGVtZW50QmFzZS5oICovOyB9Owog
CQk4MzNCOUUzMjFGNTA4RDg1MDBFMEU0MjggLyogSlNGaWxlU3lzdGVtRGlyZWN0b3J5RW50cnku
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgzM0I5RTJG
MUY1MDhEODAwMEUwRTQyOCAvKiBKU0ZpbGVTeXN0ZW1EaXJlY3RvcnlFbnRyeS5oICovOyB9OwpA
QCAtMjQ2OCwxMCArMjQ3MiwxMiBAQAogCQk4MzlBMkYyRTFFMjA0QTcxMDAzOTA1N0UgLyogV2Vi
R0xTdGF0ZVRyYWNrZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDgzOUEyRjJDMUUyMDRBNkQwMDM5MDU3RSAvKiBXZWJHTFN0YXRlVHJhY2tlci5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTgzOUFBRkVE
MUEwQzBDOEQwMDYwNUY5OSAvKiBIVE1MV0JSRWxlbWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODM5QUFGRUIxQTBDMEM4RDAwNjA1Rjk5IC8qIEhU
TUxXQlJFbGVtZW50LmggKi87IH07CiAJCTgzQThBQzQwMUZBQkJGRTUwMDIwNjRBQyAvKiBTZXJ2
aWNlV29ya2VySWRlbnRpZmllci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gODNBOEFDM0UxRkFCQkZEMTAwMjA2NEFDIC8qIFNlcnZpY2VXb3JrZXJJZGVu
dGlmaWVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
KwkJODNCMUE3MDIyNDk5ODVGMDAwRkU1OTYxIC8qIFdlYktpdEF1ZGlvQ29udGV4dC5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODNCMUE2RkYyNDk5ODVE
MDAwRkU1OTYxIC8qIFdlYktpdEF1ZGlvQ29udGV4dC5oICovOyB9OwogCQk4M0IyRDE3NTFCOEJD
RDZBMDBBMDJFNDcgLyogTmF0aXZlTm9kZUZpbHRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODNFOTU5RTExQjhCQzIyQjAwNEQ5Mzg1IC8qIE5hdGl2
ZU5vZGVGaWx0ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwogCQk4M0I3NEVGNjFGM0UwQkYyMDA5OTZCQzcgLyogS2VlcGFsaXZlUmVxdWVzdFRyYWNr
ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgzQjc0
RUYzMUYzRTBCRDcwMDk5NkJDNyAvKiBLZWVwYWxpdmVSZXF1ZXN0VHJhY2tlci5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTgzQjk2ODdCMTlGOEFC
ODMwMDRFRjdBRiAvKiBTdHlsZUJ1aWxkZXJDb252ZXJ0ZXIuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgzQjk2ODc5MTlGOEFCODMwMDRFRjdBRiAvKiBT
dHlsZUJ1aWxkZXJDb252ZXJ0ZXIuaCAqLzsgfTsKIAkJODNCQjVDODgxRDVENkY0NTAwNUE3MUY0
IC8qIEFsbERlc2NlbmRhbnRzQ29sbGVjdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gODNCQjVDODcxRDVENkYzQTAwNUE3MUY0IC8qIEFsbERlc2Nl
bmRhbnRzQ29sbGVjdGlvbi5oICovOyB9OworCQk4M0JEM0NFRTI0OTk4RTAxMDBCQTNFNjcgLyog
QXVkaW9Db250ZXh0U3RhdGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDgzQkQzQ0VEMjQ5OThERjYwMEJBM0U2NyAvKiBBdWRpb0NvbnRleHRTdGF0ZS5o
ICovOyB9OwogCQk4M0MwNUE1QjFBNjg2MjEyMDA3RTVERUEgLyogU3R5bGVQcm9wZXJ0eVNob3J0
aGFuZEZ1bmN0aW9ucy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gODNDMDVBNTkxQTY4NjIxMjAwN0U1REVBIC8qIFN0eWxlUHJvcGVydHlTaG9ydGhhbmRG
dW5jdGlvbnMuaCAqLzsgfTsKIAkJODNDMUY1OTQxRURGNjlEMzAwNDEwRDI3IC8qIFF1YWxpZmll
ZE5hbWVDYWNoZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gODNDMUY1OTIxRURGNjlEMzAwNDEwRDI3IC8qIFF1YWxpZmllZE5hbWVDYWNoZS5oICovOyB9
OwogCQk4M0M0NUI4RTFEQzJCNjhBMDA4ODcxQkEgLyogVmFsaWRhdGlvbkJ1YmJsZS5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODNDNDVCOEQxREMyQjY3
QzAwODg3MUJBIC8qIFZhbGlkYXRpb25CdWJibGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtMTAyOTcsMTEgKzEwMzAzLDE2IEBACiAJCTgzMDAz
MEYzMUI3RDMzQTYwMEVEM0FBQyAvKiBHZW5lcmljQ2FjaGVkSFRNTENvbGxlY3Rpb24uY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gR2VuZXJpY0NhY2hlZEhUTUxDb2xs
ZWN0aW9uLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODMwMDMwRjQxQjdEMzNB
NjAwRUQzQUFDIC8qIEdlbmVyaWNDYWNoZWRIVE1MQ29sbGVjdGlvbi5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBHZW5lcmljQ2FjaGVkSFRNTENvbGxlY3Rpb24uaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODMwMDMwRjcxQjdEMzk4ODAwRUQzQUFDIC8qIENhY2hl
ZEhUTUxDb2xsZWN0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENhY2hl
ZEhUTUxDb2xsZWN0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTgzMDAzRTJC
MjQ5OTk3QTgwMDYwQUY5NCAvKiBXZWJLaXRBdWRpb0NvbnRleHQuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2ViS2l0QXVkaW9Db250ZXh0LmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODMwMzM0RkIxRjU0OTA1MjAwNERGNzA3IC8qIEZpbGVTeXN0
ZW1EaXJlY3RvcnlSZWFkZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gRmlsZVN5c3RlbURpcmVjdG9yeVJlYWRlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTgzMDMzNEZDMUY1NDkwNTIwMDRERjcwNyAvKiBGaWxlU3lzdGVtRGlyZWN0b3J5UmVh
ZGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEZpbGVTeXN0ZW1EaXJlY3Rv
cnlSZWFkZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODMwMzM0RkQxRjU0OTA1
MjAwNERGNzA3IC8qIEZpbGVTeXN0ZW1FbnRyaWVzQ2FsbGJhY2suaWRsICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4
dDsgcGF0aCA9IEZpbGVTeXN0ZW1FbnRyaWVzQ2FsbGJhY2suaWRsOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk4MzAzMzRGRTFGNTQ5MDUyMDA0REY3MDcgLyogRmlsZVN5c3RlbUVudHJp
ZXNDYWxsYmFjay5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBGaWxlU3lzdGVt
RW50cmllc0NhbGxiYWNrLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTgzMDMzNEZG
MUY1NDkwNTIwMDRERjcwNyAvKiBGaWxlU3lzdGVtRGlyZWN0b3J5UmVhZGVyLmlkbCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHRleHQ7IHBhdGggPSBGaWxlU3lzdGVtRGlyZWN0b3J5UmVhZGVyLmlkbDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJODMwNDAyN0QyNDlBN0E1QjAwQTkwRDhEIC8qIERpc3RhbmNl
TW9kZWxUeXBlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERpc3RhbmNlTW9k
ZWxUeXBlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTgzMDQwMjdGMjQ5QTdBNUMw
MEE5MEQ4RCAvKiBEaXN0YW5jZU1vZGVsVHlwZS5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0g
RGlzdGFuY2VNb2RlbFR5cGUuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk4MzA0
MDI4MDI0OUE3QTVDMDBBOTBEOEQgLyogUGFubmluZ01vZGVsVHlwZS5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBQYW5uaW5nTW9kZWxUeXBlLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTgzMDQwMjgxMjQ5QTdBNUQwMEE5MEQ4RCAvKiBQYW5uaW5nTW9kZWxUeXBl
LmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBQYW5uaW5nTW9kZWxUeXBlLmlkbDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODMwNTE5OTIxQkIwRjBFNzAwRjM3NzJFIC8qIEhUTUxU
aW1lRWxlbWVudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBIVE1M
VGltZUVsZW1lbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4MzA1MTk5MzFC
QjBGMEU3MDBGMzc3MkUgLyogSFRNTFRpbWVFbGVtZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IEhUTUxUaW1lRWxlbWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk4MzA1MTk5NDFCQjBGMEU3MDBGMzc3MkUgLyogSFRNTFRpbWVFbGVtZW50LmlkbCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHRleHQ7IHBhdGggPSBIVE1MVGltZUVsZW1lbnQuaWRsOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwpAQCAtMTAzMTQsNiArMTAzMjUsMTIgQEAKIAkJODMxMDJCMjUxRjlFQURDMjAw
RTQwNEI5IC8qIEpTRXh0ZW5kYWJsZU1lc3NhZ2VFdmVudC5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBKU0V4dGVuZGFibGVNZXNzYWdlRXZlbnQuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk4MzExQzAwMDFGQUEyRTg5MDBFM0M4RTUgLyogU1dTZXJ2
ZXJKb2JRdWV1ZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTV1Nl
cnZlckpvYlF1ZXVlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODMxMUMwMDIx
RkFBMkU4OTAwRTNDOEU1IC8qIFNXU2VydmVySm9iUXVldWUuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gU1dTZXJ2ZXJKb2JRdWV1ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQk4MzFCNjE2RjI0OTlBNTk4MDBDMDdDNzkgLyogV2ViS2l0QXVkaW9QYW5uZXJOb2Rl
LmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBXZWJLaXRBdWRpb1Bhbm5lck5vZGUuaWRsOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk4MzFCNjE3MTI0OTlBNTk5MDBDMDdDNzkgLyog
V2ViS2l0QXVkaW9QYW5uZXJOb2RlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IFdlYktpdEF1ZGlvUGFubmVyTm9kZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTgzMUI2MTcyMjQ5OUE1OUEwMEMwN0M3OSAvKiBXZWJLaXRPZmZsaW5lQXVkaW9Db250
ZXh0LmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBXZWJLaXRPZmZsaW5lQXVkaW9Db250ZXh0
LmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJODMxQjYxNzMyNDk5QTU5QjAwQzA3
Qzc5IC8qIFdlYktpdE9mZmxpbmVBdWRpb0NvbnRleHQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gV2ViS2l0T2ZmbGluZUF1ZGlvQ29udGV4dC5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTgzMUI2MTc0MjQ5OUE1OUMwMEMwN0M3OSAvKiBXZWJLaXRB
dWRpb1Bhbm5lck5vZGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViS2l0
QXVkaW9QYW5uZXJOb2RlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTgzMUI2MTc1
MjQ5OUE1OUQwMEMwN0M3OSAvKiBXZWJLaXRPZmZsaW5lQXVkaW9Db250ZXh0LmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYktpdE9mZmxpbmVBdWRpb0NvbnRleHQuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODMxQzQ2QzMxRjlFRTVFMDAwRUJENDUwIC8qIEpT
RXh0ZW5kYWJsZU1lc3NhZ2VFdmVudEN1c3RvbS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBKU0V4dGVuZGFibGVNZXNzYWdlRXZlbnRDdXN0b20uY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk4MzFEMUYyOTFDNTZFQ0EwMDBGNUY2QzAgLyogSFRNTERh
dGFFbGVtZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEhUTUxE
YXRhRWxlbWVudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTgzMjE1MDdBMUYy
N0VBMTUwMDk1QjEzNiAvKiBOYXZpZ2F0b3JCZWFjb24uY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
TmF2aWdhdG9yQmVhY29uLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTEwNDQx
LDYgKzEwNDU4LDggQEAKIAkJODM5QUFGRUIxQTBDMEM4RDAwNjA1Rjk5IC8qIEhUTUxXQlJFbGVt
ZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEhUTUxXQlJFbGVtZW50Lmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTgzQTRBOUY4MUNFN0ZEN0UwMDcwOUIwMCAv
KiBKU1hNTERvY3VtZW50Q3VzdG9tLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IEpTWE1MRG9jdW1lbnRDdXN0b20uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk4M0E4QUMzRTFGQUJCRkQxMDAyMDY0QUMgLyogU2VydmljZVdvcmtlcklkZW50aWZpZXIu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2VydmljZVdvcmtlcklkZW50aWZp
ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJODNCMUE2RkYyNDk5ODVEMDAwRkU1
OTYxIC8qIFdlYktpdEF1ZGlvQ29udGV4dC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBXZWJLaXRBdWRpb0NvbnRleHQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
ODNCMUE3MDEyNDk5ODVEMDAwRkU1OTYxIC8qIFdlYktpdEF1ZGlvQ29udGV4dC5pZGwgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSB0ZXh0OyBwYXRoID0gV2ViS2l0QXVkaW9Db250ZXh0LmlkbDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJODNCMjUwMDkxRkExMTgxQzAwQkMwMkQ5IC8qIEpTU2VydmljZVdvcmtl
ckNsaWVudFR5cGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNTZXJ2aWNl
V29ya2VyQ2xpZW50VHlwZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4M0IyNTAw
QjFGQTExODFEMDBCQzAyRDkgLyogSlNTZXJ2aWNlV29ya2VyQ2xpZW50VHlwZS5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU1NlcnZpY2VXb3JrZXJDbGllbnRUeXBl
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODNCNURBNDUxRkE5MDc5MzAwQjU5
REY0IC8qIEpTTmF2aWdhdG9yQ3VzdG9tLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IEpTTmF2aWdhdG9yQ3VzdG9tLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKQEAgLTEwNDQ4LDYgKzEwNDY3LDggQEAKIAkJODNCNzRFRjMxRjNFMEJENzAwOTk2QkM3IC8q
IEtlZXBhbGl2ZVJlcXVlc3RUcmFja2VyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IEtlZXBhbGl2ZVJlcXVlc3RUcmFja2VyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTgzQjk2ODc5MTlGOEFCODMwMDRFRjdBRiAvKiBTdHlsZUJ1aWxkZXJDb252ZXJ0ZXIuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU3R5bGVCdWlsZGVyQ29udmVydGVyLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTgzQkI1Qzg3MUQ1RDZGM0EwMDVBNzFGNCAv
KiBBbGxEZXNjZW5kYW50c0NvbGxlY3Rpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gQWxsRGVzY2VuZGFudHNDb2xsZWN0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTgzQkQzQ0VCMjQ5OThDQzUwMEJBM0U2NyAvKiBBdWRpb0NvbnRleHRTdGF0ZS5pZGwg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gQXVkaW9Db250ZXh0U3RhdGUuaWRsOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQk4M0JEM0NFRDI0OTk4REY2MDBCQTNFNjcgLyogQXVkaW9Db250
ZXh0U3RhdGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQXVkaW9Db250ZXh0
U3RhdGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODNDMDVBNTgxQTY4NjIxMjAw
N0U1REVBIC8qIFN0eWxlUHJvcGVydHlTaG9ydGhhbmRGdW5jdGlvbnMuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gU3R5bGVQcm9wZXJ0eVNob3J0aGFuZEZ1bmN0aW9u
cy5jcHA7IHBhdGggPSBEZXJpdmVkU291cmNlcy9XZWJDb3JlL1N0eWxlUHJvcGVydHlTaG9ydGhh
bmRGdW5jdGlvbnMuY3BwOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9OwogCQk4
M0MwNUE1OTFBNjg2MjEyMDA3RTVERUEgLyogU3R5bGVQcm9wZXJ0eVNob3J0aGFuZEZ1bmN0aW9u
cy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBTdHlsZVByb3BlcnR5U2hvcnRo
YW5kRnVuY3Rpb25zLmg7IHBhdGggPSBEZXJpdmVkU291cmNlcy9XZWJDb3JlL1N0eWxlUHJvcGVy
dHlTaG9ydGhhbmRGdW5jdGlvbnMuaDsgc291cmNlVHJlZSA9IEJVSUxUX1BST0RVQ1RTX0RJUjsg
fTsKIAkJODNDMUY1OTExRURGNjlEMzAwNDEwRDI3IC8qIFF1YWxpZmllZE5hbWVDYWNoZS5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBRdWFsaWZpZWROYW1lQ2FjaGUu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjkyMzksNiArMjkyNjAsOCBAQAog
CQkJCUZEMzE1RkJBMTJCMDI2NzUwMEMxQTM1OSAvKiBBdWRpb0NvbnRleHQuY3BwICovLAogCQkJ
CUZEMzE1RkJCMTJCMDI2NzUwMEMxQTM1OSAvKiBBdWRpb0NvbnRleHQuaCAqLywKIAkJCQlGRDMx
NUZCQzEyQjAyNjc1MDBDMUEzNTkgLyogQXVkaW9Db250ZXh0LmlkbCAqLywKKwkJCQk4M0JEM0NF
RDI0OTk4REY2MDBCQTNFNjcgLyogQXVkaW9Db250ZXh0U3RhdGUuaCAqLywKKwkJCQk4M0JEM0NF
QjI0OTk4Q0M1MDBCQTNFNjcgLyogQXVkaW9Db250ZXh0U3RhdGUuaWRsICovLAogCQkJCUZEMzE1
RkJEMTJCMDI2NzUwMEMxQTM1OSAvKiBBdWRpb0Rlc3RpbmF0aW9uTm9kZS5jcHAgKi8sCiAJCQkJ
RkQzMTVGQkUxMkIwMjY3NTAwQzFBMzU5IC8qIEF1ZGlvRGVzdGluYXRpb25Ob2RlLmggKi8sCiAJ
CQkJRkQzMTVGQkYxMkIwMjY3NTAwQzFBMzU5IC8qIEF1ZGlvRGVzdGluYXRpb25Ob2RlLmlkbCAq
LywKQEAgLTI5Mjg5LDYgKzI5MzEyLDggQEAKIAkJCQlGRDMxNUZFNTEyQjAyNjc2MDBDMUEzNTkg
LyogRGVsYXlOb2RlLmlkbCAqLywKIAkJCQlGRDMxNUZFNjEyQjAyNjc2MDBDMUEzNTkgLyogRGVs
YXlQcm9jZXNzb3IuY3BwICovLAogCQkJCUZEMzE1RkU3MTJCMDI2NzYwMEMxQTM1OSAvKiBEZWxh
eVByb2Nlc3Nvci5oICovLAorCQkJCTgzMDQwMjdEMjQ5QTdBNUIwMEE5MEQ4RCAvKiBEaXN0YW5j
ZU1vZGVsVHlwZS5oICovLAorCQkJCTgzMDQwMjdGMjQ5QTdBNUMwMEE5MEQ4RCAvKiBEaXN0YW5j
ZU1vZGVsVHlwZS5pZGwgKi8sCiAJCQkJRkQ2RUQyQzExMzZCOEU0MjAwM0NGMDcyIC8qIER5bmFt
aWNzQ29tcHJlc3Nvck5vZGUuY3BwICovLAogCQkJCUZENkVEMkMyMTM2QjhFNDIwMDNDRjA3MiAv
KiBEeW5hbWljc0NvbXByZXNzb3JOb2RlLmggKi8sCiAJCQkJRkQ2RUQyQzkxMzZCOEU5RDAwM0NG
MDcyIC8qIER5bmFtaWNzQ29tcHJlc3Nvck5vZGUuaWRsICovLApAQCAtMjkzMjEsNiArMjkzNDYs
OCBAQAogCQkJCUZEMzE1RkNGMTJCMDI2NzUwMEMxQTM1OSAvKiBQYW5uZXJOb2RlLmNwcCAqLywK
IAkJCQlGRDMxNUZEMDEyQjAyNjc1MDBDMUEzNTkgLyogUGFubmVyTm9kZS5oICovLAogCQkJCUZE
MzE1RkQxMTJCMDI2NzUwMEMxQTM1OSAvKiBQYW5uZXJOb2RlLmlkbCAqLywKKwkJCQk4MzA0MDI4
MDI0OUE3QTVDMDBBOTBEOEQgLyogUGFubmluZ01vZGVsVHlwZS5oICovLAorCQkJCTgzMDQwMjgx
MjQ5QTdBNUQwMEE5MEQ4RCAvKiBQYW5uaW5nTW9kZWxUeXBlLmlkbCAqLywKIAkJCQlGRDU4MUZC
MTE1MjBGOTNCMDAzQTdBNzUgLyogUGVyaW9kaWNXYXZlLmNwcCAqLywKIAkJCQlGRDU4MUZCMjE1
MjBGOTNCMDAzQTdBNzUgLyogUGVyaW9kaWNXYXZlLmggKi8sCiAJCQkJRkQ1ODFGQjMxNTIwRjkz
QjAwM0E3QTc1IC8qIFBlcmlvZGljV2F2ZS5pZGwgKi8sCkBAIC0yOTMzNiw2ICsyOTM2MywxNSBA
QAogCQkJCUZEN0YyOThFMTNENEMwQ0IwMEFEOTUzNSAvKiBXYXZlU2hhcGVyTm9kZS5pZGwgKi8s
CiAJCQkJRkQ3RjI5OEYxM0Q0QzBDQjAwQUQ5NTM1IC8qIFdhdmVTaGFwZXJQcm9jZXNzb3IuY3Bw
ICovLAogCQkJCUZEN0YyOTkwMTNENEMwQ0IwMEFEOTUzNSAvKiBXYXZlU2hhcGVyUHJvY2Vzc29y
LmggKi8sCisJCQkJODMwMDNFMkIyNDk5OTdBODAwNjBBRjk0IC8qIFdlYktpdEF1ZGlvQ29udGV4
dC5jcHAgKi8sCisJCQkJODNCMUE2RkYyNDk5ODVEMDAwRkU1OTYxIC8qIFdlYktpdEF1ZGlvQ29u
dGV4dC5oICovLAorCQkJCTgzQjFBNzAxMjQ5OTg1RDAwMEZFNTk2MSAvKiBXZWJLaXRBdWRpb0Nv
bnRleHQuaWRsICovLAorCQkJCTgzMUI2MTcxMjQ5OUE1OTkwMEMwN0M3OSAvKiBXZWJLaXRBdWRp
b1Bhbm5lck5vZGUuY3BwICovLAorCQkJCTgzMUI2MTc0MjQ5OUE1OUMwMEMwN0M3OSAvKiBXZWJL
aXRBdWRpb1Bhbm5lck5vZGUuaCAqLywKKwkJCQk4MzFCNjE2RjI0OTlBNTk4MDBDMDdDNzkgLyog
V2ViS2l0QXVkaW9QYW5uZXJOb2RlLmlkbCAqLywKKwkJCQk4MzFCNjE3MzI0OTlBNTlCMDBDMDdD
NzkgLyogV2ViS2l0T2ZmbGluZUF1ZGlvQ29udGV4dC5jcHAgKi8sCisJCQkJODMxQjYxNzUyNDk5
QTU5RDAwQzA3Qzc5IC8qIFdlYktpdE9mZmxpbmVBdWRpb0NvbnRleHQuaCAqLywKKwkJCQk4MzFC
NjE3MjI0OTlBNTlBMDBDMDdDNzkgLyogV2ViS2l0T2ZmbGluZUF1ZGlvQ29udGV4dC5pZGwgKi8s
CiAJCQkpOwogCQkJcGF0aCA9IHdlYmF1ZGlvOwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsK
QEAgLTI5NzMyLDYgKzI5NzY4LDcgQEAKIAkJCQlGRDMxNjA3QzEyQjAyNkY3MDBDMUEzNTkgLyog
QXVkaW9CdXMuaCBpbiBIZWFkZXJzICovLAogCQkJCUZEMzE2MDdFMTJCMDI2RjcwMEMxQTM1OSAv
KiBBdWRpb0NoYW5uZWwuaCBpbiBIZWFkZXJzICovLAogCQkJCUZEMzE2MDA1MTJCMDI2NzYwMEMx
QTM1OSAvKiBBdWRpb0NvbnRleHQuaCBpbiBIZWFkZXJzICovLAorCQkJCTgzQkQzQ0VFMjQ5OThF
MDEwMEJBM0U2NyAvKiBBdWRpb0NvbnRleHRTdGF0ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRkQz
MTYwN0YxMkIwMjZGNzAwQzFBMzU5IC8qIEF1ZGlvRGVzdGluYXRpb24uaCBpbiBIZWFkZXJzICov
LAogCQkJCTlCMTIyOUM0MjNGRTRCRDIwMDhDQTc1MSAvKiBBdWRpb0Rlc3RpbmF0aW9uQ29jb2Eu
aCBpbiBIZWFkZXJzICovLAogCQkJCUZEMzE2MEJEMTJCMDI3MkEwMEMxQTM1OSAvKiBBdWRpb0Rl
c3RpbmF0aW9uTWFjLmggaW4gSGVhZGVycyAqLywKQEAgLTMwMzg3LDYgKzMwNDI0LDcgQEAKIAkJ
CQkyRDI5RUNDODE5MkVDQzgzMDA5ODRCNzggLyogRGlzcGxheVJlZnJlc2hNb25pdG9yTWFuYWdl
ci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNkZDRTFBMUEyMjYxOEFCRDAwNEYwMzQzIC8qIERpc3Bs
YXlSdW4uaCBpbiBIZWFkZXJzICovLAogCQkJCUZEMzE2MDkxMTJCMDI2RjcwMEMxQTM1OSAvKiBE
aXN0YW5jZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJODMwNDAyODMyNDlBN0E2MjAwQTkwRDhEIC8q
IERpc3RhbmNlTW9kZWxUeXBlLmggaW4gSGVhZGVycyAqLywKIAkJCQk4NDczMEQ3NzEyNDhGMEIz
MDBEM0E5QzkgLyogRGlzdGFudExpZ2h0U291cmNlLmggaW4gSGVhZGVycyAqLywKIAkJCQlCMkYz
NEZFNjBFODJGODE0MDBGNjI3Q0QgLyogRE5TLmggaW4gSGVhZGVycyAqLywKIAkJCQk3RUU2ODQ2
RjEyRDI2RTM4MDBFNzMyMTUgLyogRE5TUmVzb2x2ZVF1ZXVlQ0ZOZXQuaCBpbiBIZWFkZXJzICov
LApAQCAtMzI0MDAsNiArMzI0MzgsNyBAQAogCQkJCUE4MEU2Q0ZCMEExOTg5Q0EwMDdGQjhDNSAv
KiBQYWlyLmggaW4gSGVhZGVycyAqLywKIAkJCQlGRDMxNjBBMzEyQjAyNkY3MDBDMUEzNTkgLyog
UGFubmVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlGRDMxNjAxQTEyQjAyNjc2MDBDMUEzNTkgLyog
UGFubmVyTm9kZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJODMwNDAyODIyNDlBN0E1RjAwQTkwRDhE
IC8qIFBhbm5pbmdNb2RlbFR5cGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUExODg5MEFGMUFBMTNG
MjUwMDI2QzMwMSAvKiBQYXJlbnRhbENvbnRyb2xzQ29udGVudEZpbHRlci5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJQ0RDRDQxRTgxQzNEREIwQTAwOTY1RDk5IC8qIFBhcnNlZENvbnRlbnRSYW5nZS5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJNDQ3OTU4MDQxNjQzQjQ5QTAwMUUwQTdGIC8qIFBhcnNlZENv
bnRlbnRUeXBlLmggaW4gSGVhZGVycyAqLywKQEAgLTMzNzI4LDYgKzMzNzY3LDggQEAKIAkJCQlB
NTg0RkUzMDE4NjRDQjg0MDA4NDNCMTAgLyogV2ViSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmggaW4g
SGVhZGVycyAqLywKIAkJCQlGNDgyMjMxMTFFMzg2OUI4MDA2NkZDNzkgLyogV2ViSXRlbVByb3Zp
ZGVyUGFzdGVib2FyZC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMzFDMEZGMjIwRTRDRUI2RTAwN0Q2
RkU1IC8qIFdlYktpdEFuaW1hdGlvbkV2ZW50LmggaW4gSGVhZGVycyAqLywKKwkJCQk4M0IxQTcw
MjI0OTk4NUYwMDBGRTU5NjEgLyogV2ViS2l0QXVkaW9Db250ZXh0LmggaW4gSGVhZGVycyAqLywK
KwkJCQk4MzFCNjE3NjI0OTlBNUJCMDBDMDdDNzkgLyogV2ViS2l0QXVkaW9QYW5uZXJOb2RlLmgg
aW4gSGVhZGVycyAqLywKIAkJCQk1REZFQkFCNzE4NTkyQjZEMDBDNzVCRUIgLyogV2ViS2l0QXZh
aWxhYmlsaXR5LmggaW4gSGVhZGVycyAqLywKIAkJCQk0OTgzOTE1OTBGMUU3NzY5MDBDMjM3ODIg
LyogV2ViS2l0Q1NTTWF0cml4LmggaW4gSGVhZGVycyAqLywKIAkJCQkyRDA2MjE0NTFEQTYzOUJB
MDBBN0ZCMjYgLyogV2ViS2l0TWVkaWFLZXlNZXNzYWdlRXZlbnQuaCBpbiBIZWFkZXJzICovLApA
QCAtMzM3MzYsNiArMzM3NzcsNyBAQAogCQkJCTJEMDYyMTUwMURBNjNBOTQwMEE3RkIyNiAvKiBX
ZWJLaXRNZWRpYUtleVNlc3Npb24uaCBpbiBIZWFkZXJzICovLAogCQkJCTdDNDhBNkQxMTkxQzlE
NjUwMDAyNjY3NCAvKiBXZWJLaXROYW1lc3BhY2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTdBMjI3
MzIxMjBDOUZBRkUwMERCMURFRiAvKiBXZWJLaXROU0ltYWdlRXh0cmFzLmggaW4gSGVhZGVycyAq
LywKKwkJCQk4MzFCNjE3NzI0OTlBNUJGMDBDMDdDNzkgLyogV2ViS2l0T2ZmbGluZUF1ZGlvQ29u
dGV4dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTVERUJEQTQxNkZCOTA4NzAwODM2RkUwIC8qIFdl
YktpdFBsYXliYWNrVGFyZ2V0QXZhaWxhYmlsaXR5RXZlbnQuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTQ5NEJENzk1MEY1NUM4RUUwMDc0NzgyOCAvKiBXZWJLaXRQb2ludC5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJMzFDMEZGMjUwRTRDRUI2RTAwN0Q2RkU1IC8qIFdlYktpdFRyYW5zaXRpb25FdmVudC5o
IGluIEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9X
ZWJDb3JlQnVpbHRpbk5hbWVzLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9XZWJDb3Jl
QnVpbHRpbk5hbWVzLmgKaW5kZXggNDk5N2FiOTkzY2I3OTU0NTc1YTg0MzE3ZDY5YzIwY2NlYzZh
N2QwOS4uZjkxOTdjMjZhZTlhNGMzOWM5MjIzYjU0MWQ1OWZiYzBhODIwZTk5YyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvV2ViQ29yZUJ1aWx0aW5OYW1lcy5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1dlYkNvcmVCdWlsdGluTmFtZXMuaApAQCAtNDks
NiArNDksNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgbWFjcm8oQXBwbGVQYXlTZXR1cEZl
YXR1cmUpIFwKICAgICBtYWNybyhBdHRhY2htZW50RWxlbWVudCkgXAogICAgIG1hY3JvKEF1ZGlv
KSBcCisgICAgbWFjcm8oQXVkaW9Db250ZXh0KSBcCiAgICAgbWFjcm8oQXV0aGVudGljYXRvckFz
c2VydGlvblJlc3BvbnNlKSBcCiAgICAgbWFjcm8oQXV0aGVudGljYXRvckF0dGVzdGF0aW9uUmVz
cG9uc2UpIFwKICAgICBtYWNybyhBdXRoZW50aWNhdG9yUmVzcG9uc2UpIFwKQEAgLTE2NSw5ICsx
NjYsMTEgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIG1hY3JvKE5hdmlnYXRvckNyZWRlbnRp
YWxzKSBcCiAgICAgbWFjcm8oTmF2aWdhdG9yTWVkaWFEZXZpY2VzKSBcCiAgICAgbWFjcm8oTmF2
aWdhdG9yVXNlck1lZGlhKSBcCisgICAgbWFjcm8oT2ZmbGluZUF1ZGlvQ29udGV4dCkgXAogICAg
IG1hY3JvKE9mZnNjcmVlbkNhbnZhcykgXAogICAgIG1hY3JvKE9mZnNjcmVlbkNhbnZhc1JlbmRl
cmluZ0NvbnRleHQyRCkgXAogICAgIG1hY3JvKFBhaW50UmVuZGVyaW5nQ29udGV4dDJEKSBcCisg
ICAgbWFjcm8oUGFubmVyTm9kZSkgXAogICAgIG1hY3JvKFBheW1lbnRBZGRyZXNzKSBcCiAgICAg
bWFjcm8oUGF5bWVudE1ldGhvZENoYW5nZUV2ZW50KSBcCiAgICAgbWFjcm8oUGF5bWVudFJlcXVl
c3QpIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudFRhcmdldEZhY3Rvcnku
aW4gYi9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRUYXJnZXRGYWN0b3J5LmluCmluZGV4IGZjMWRi
MmNlMGUwNjUwMDI4Y2Q0Y2JjZTQ5ZWJkMzI5NDRiMzJiMzQuLmExNTRiNDQ1YTEzYWQ0NzY5NjI5
ZDlmN2Q5Mzc3YTlkZjE1MGY3YWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVu
dFRhcmdldEZhY3RvcnkuaW4KKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50VGFyZ2V0RmFj
dG9yeS5pbgpAQCAtNTMsNiArNTMsNyBAQCBWaWRlb1RyYWNrTGlzdCBjb25kaXRpb25hbD1WSURF
TwogVmlzdWFsVmlld3BvcnQKIFdlYkFuaW1hdGlvbgogV2ViR1BVRGV2aWNlIGNvbmRpdGlvbmFs
PVdFQkdQVQorV2ViS2l0QXVkaW9Db250ZXh0IGNvbmRpdGlvbmFsPVdFQl9BVURJTwogV2ViS2l0
TWVkaWFLZXlTZXNzaW9uIGNvbmRpdGlvbmFsPUxFR0FDWV9FTkNSWVBURURfTUVESUEKIFdlYlNv
Y2tldAogV29ya2VyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdzLnlh
bWwgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdzLnlhbWwKaW5kZXggMmQ2YmM2ZmYyZWYw
YjAwMGRkNGU5ODA2Y2VkNmM0OGZiNDcwYmUzYS4uNTgzZmM2Zjc5NWVmYzA3MDJmYjM4NDBkYjRl
ODExYjg4NjA5ZmEzZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9TZXR0aW5ncy55
YW1sCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3MueWFtbApAQCAtMjU1LDYgKzI1
NSw4IEBAIGxvYWREZWZlcnJpbmdFbmFibGVkOgogICBpbml0aWFsOiB0cnVlCiB3ZWJBdWRpb0Vu
YWJsZWQ6CiAgIGluaXRpYWw6IGZhbHNlCittb2Rlcm5VbnByZWZpeGVkV2ViQXVkaW9FbmFibGVk
OgorICBpbml0aWFsOiBmYWxzZQogcGFnaW5hdGVEdXJpbmdMYXlvdXRFbmFibGVkOgogICBpbml0
aWFsOiBmYWxzZQogZnVsbFNjcmVlbkVuYWJsZWQ6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS90ZXN0aW5nL0ludGVybmFscy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFs
cy5jcHAKaW5kZXggMGY1YzE5N2EyOTgwN2U3NjNjYWViZjA5MDJhNGNmOWE2MjA4Yjk3Yy4uYjMw
MzhhMzQwYzY3ZGI2OTI0MzZlYzIzZGE0M2Q4NmU0NDRiZTMyNCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3Rp
bmcvSW50ZXJuYWxzLmNwcApAQCAtMTk5LDYgKzE5OSw3IEBACiAjaW5jbHVkZSAiV2ViQW5pbWF0
aW9uLmgiCiAjaW5jbHVkZSAiV2ViQW5pbWF0aW9uVXRpbGl0aWVzLmgiCiAjaW5jbHVkZSAiV2Vi
Q29yZUpTQ2xpZW50RGF0YS5oIgorI2luY2x1ZGUgIldlYktpdEF1ZGlvQ29udGV4dC5oIgogI2lu
Y2x1ZGUgIldpbmRvd1Byb3h5LmgiCiAjaW5jbHVkZSAiV29ya2VyVGhyZWFkLmgiCiAjaW5jbHVk
ZSAiV29ya2xldEdsb2JhbFNjb3BlLmgiCkBAIC00MjkwLDIyICs0MjkxLDI5IEBAIHZvaWQgSW50
ZXJuYWxzOjpzZW5kTWVkaWFDb250cm9sRXZlbnQoTWVkaWFDb250cm9sRXZlbnQgZXZlbnQpCiAj
ZW5kaWYgLy8gRU5BQkxFKE1FRElBX1NFU1NJT04pCiAKICNpZiBFTkFCTEUoV0VCX0FVRElPKQot
dm9pZCBJbnRlcm5hbHM6OnNldEF1ZGlvQ29udGV4dFJlc3RyaWN0aW9ucyhBdWRpb0NvbnRleHQm
IGNvbnRleHQsIFN0cmluZ1ZpZXcgcmVzdHJpY3Rpb25zU3RyaW5nKQordm9pZCBJbnRlcm5hbHM6
OnNldEF1ZGlvQ29udGV4dFJlc3RyaWN0aW9ucyhjb25zdCBWYXJpYW50PFJlZlB0cjxBdWRpb0Nv
bnRleHQ+LCBSZWZQdHI8V2ViS2l0QXVkaW9Db250ZXh0Pj4mIGNvbnRleHRWYXJpYW50LCBTdHJp
bmdWaWV3IHJlc3RyaWN0aW9uc1N0cmluZykKIHsKLSAgICBBdWRpb0NvbnRleHQ6OkJlaGF2aW9y
UmVzdHJpY3Rpb25zIHJlc3RyaWN0aW9ucyA9IGNvbnRleHQuYmVoYXZpb3JSZXN0cmljdGlvbnMo
KTsKLSAgICBjb250ZXh0LnJlbW92ZUJlaGF2aW9yUmVzdHJpY3Rpb24ocmVzdHJpY3Rpb25zKTsK
KyAgICBSZWZQdHI8QXVkaW9Db250ZXh0QmFzZT4gY29udGV4dDsKKyAgICBzd2l0Y2hPbihjb250
ZXh0VmFyaWFudCwgWyZdKFJlZlB0cjxBdWRpb0NvbnRleHQ+IGVudHJ5KSB7CisgICAgICAgIGNv
bnRleHQgPSBlbnRyeTsKKyAgICB9LCBbJl0oUmVmUHRyPFdlYktpdEF1ZGlvQ29udGV4dD4gZW50
cnkpIHsKKyAgICAgICAgY29udGV4dCA9IGVudHJ5OworICAgIH0pOworCisgICAgYXV0byByZXN0
cmljdGlvbnMgPSBjb250ZXh0LT5iZWhhdmlvclJlc3RyaWN0aW9ucygpOworICAgIGNvbnRleHQt
PnJlbW92ZUJlaGF2aW9yUmVzdHJpY3Rpb24ocmVzdHJpY3Rpb25zKTsKIAotICAgIHJlc3RyaWN0
aW9ucyA9IEF1ZGlvQ29udGV4dDo6Tm9SZXN0cmljdGlvbnM7CisgICAgcmVzdHJpY3Rpb25zID0g
QXVkaW9Db250ZXh0QmFzZTo6Tm9SZXN0cmljdGlvbnM7CiAKICAgICBmb3IgKFN0cmluZ1ZpZXcg
cmVzdHJpY3Rpb25TdHJpbmcgOiByZXN0cmljdGlvbnNTdHJpbmcuc3BsaXQoJywnKSkgewogICAg
ICAgICBpZiAoZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UocmVzdHJpY3Rpb25TdHJpbmcs
ICJub3Jlc3RyaWN0aW9ucyIpKQotICAgICAgICAgICAgcmVzdHJpY3Rpb25zIHw9IEF1ZGlvQ29u
dGV4dDo6Tm9SZXN0cmljdGlvbnM7CisgICAgICAgICAgICByZXN0cmljdGlvbnMgfD0gQXVkaW9D
b250ZXh0QmFzZTo6Tm9SZXN0cmljdGlvbnM7CiAgICAgICAgIGlmIChlcXVhbExldHRlcnNJZ25v
cmluZ0FTQ0lJQ2FzZShyZXN0cmljdGlvblN0cmluZywgInJlcXVpcmV1c2VyZ2VzdHVyZWZvcmF1
ZGlvc3RhcnQiKSkKLSAgICAgICAgICAgIHJlc3RyaWN0aW9ucyB8PSBBdWRpb0NvbnRleHQ6OlJl
cXVpcmVVc2VyR2VzdHVyZUZvckF1ZGlvU3RhcnRSZXN0cmljdGlvbjsKKyAgICAgICAgICAgIHJl
c3RyaWN0aW9ucyB8PSBBdWRpb0NvbnRleHRCYXNlOjpSZXF1aXJlVXNlckdlc3R1cmVGb3JBdWRp
b1N0YXJ0UmVzdHJpY3Rpb247CiAgICAgICAgIGlmIChlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJ
Q2FzZShyZXN0cmljdGlvblN0cmluZywgInJlcXVpcmVwYWdlY29uc2VudGZvcmF1ZGlvc3RhcnQi
KSkKLSAgICAgICAgICAgIHJlc3RyaWN0aW9ucyB8PSBBdWRpb0NvbnRleHQ6OlJlcXVpcmVQYWdl
Q29uc2VudEZvckF1ZGlvU3RhcnRSZXN0cmljdGlvbjsKKyAgICAgICAgICAgIHJlc3RyaWN0aW9u
cyB8PSBBdWRpb0NvbnRleHRCYXNlOjpSZXF1aXJlUGFnZUNvbnNlbnRGb3JBdWRpb1N0YXJ0UmVz
dHJpY3Rpb247CiAgICAgfQotICAgIGNvbnRleHQuYWRkQmVoYXZpb3JSZXN0cmljdGlvbihyZXN0
cmljdGlvbnMpOworICAgIGNvbnRleHQtPmFkZEJlaGF2aW9yUmVzdHJpY3Rpb24ocmVzdHJpY3Rp
b25zKTsKIH0KIAogdm9pZCBJbnRlcm5hbHM6OnVzZU1vY2tBdWRpb0Rlc3RpbmF0aW9uQ29jb2Eo
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaCBiL1NvdXJj
ZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmgKaW5kZXggMzQyMjc5OTRkNjRmYWQ2ZjYyOWQz
ODI2MGE3MWIwYTU2OTg5MmJkYS4uYzFmYWQ5YmYyOTVjOTZjYWRiYjgyZTFkNmI1MDczNjRjMzFi
ZDAxNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5oCkBAIC0xMDgsNiArMTA4LDcgQEAg
Y2xhc3MgVW5zdXNwZW5kYWJsZUFjdGl2ZURPTU9iamVjdDsKIGNsYXNzIFZvaWRDYWxsYmFjazsK
IGNsYXNzIFdlYkFuaW1hdGlvbjsKIGNsYXNzIFdlYkdMUmVuZGVyaW5nQ29udGV4dDsKK2NsYXNz
IFdlYktpdEF1ZGlvQ29udGV4dDsKIGNsYXNzIFdpbmRvd1Byb3h5OwogY2xhc3MgWE1MSHR0cFJl
cXVlc3Q7CiAKQEAgLTY3NCw3ICs2NzUsNyBAQCBwdWJsaWM6CiAjZW5kaWYKIAogI2lmIEVOQUJM
RShXRUJfQVVESU8pCi0gICAgdm9pZCBzZXRBdWRpb0NvbnRleHRSZXN0cmljdGlvbnMoQXVkaW9D
b250ZXh0JiwgU3RyaW5nVmlldyByZXN0cmljdGlvbnNTdHJpbmcpOworICAgIHZvaWQgc2V0QXVk
aW9Db250ZXh0UmVzdHJpY3Rpb25zKGNvbnN0IFZhcmlhbnQ8UmVmUHRyPEF1ZGlvQ29udGV4dD4s
IFJlZlB0cjxXZWJLaXRBdWRpb0NvbnRleHQ+PiYsIFN0cmluZ1ZpZXcgcmVzdHJpY3Rpb25zU3Ry
aW5nKTsKICAgICB2b2lkIHVzZU1vY2tBdWRpb0Rlc3RpbmF0aW9uQ29jb2EoKTsKICNlbmRpZgog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5pZGwgYi9Tb3Vy
Y2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5pZGwKaW5kZXggODdhNzRiNWY5YWRlOTk4YjUy
M2ExNGU5ZmE1MTM2NTVlODg4MTcyYi4uMmEzM2M5YWE1MWVhYjViNzY2OGY2MDk2ODRhMjExYTdi
N2Q1YzNlNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaWRs
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlkbApAQCAtNjc2LDcgKzY3
Niw3IEBAIGVudW0gQ29tcG9zaXRpbmdQb2xpY3kgewogICAgIFtDb25kaXRpb25hbD1WSURFTywg
TWF5VGhyb3dFeGNlcHRpb25dIHZvaWQgc2V0TWVkaWFTZXNzaW9uUmVzdHJpY3Rpb25zKERPTVN0
cmluZyBtZWRpYVR5cGUsIERPTVN0cmluZyByZXN0cmljdGlvbnMpOwogICAgIFtDb25kaXRpb25h
bD1WSURFTywgTWF5VGhyb3dFeGNlcHRpb25dIERPTVN0cmluZyBtZWRpYVNlc3Npb25SZXN0cmlj
dGlvbnMoRE9NU3RyaW5nIG1lZGlhVHlwZSk7CiAgICAgW0NvbmRpdGlvbmFsPVZJREVPXSB2b2lk
IHNldE1lZGlhRWxlbWVudFJlc3RyaWN0aW9ucyhIVE1MTWVkaWFFbGVtZW50IGVsZW1lbnQsIERP
TVN0cmluZyByZXN0cmljdGlvbnMpOwotICAgIFtDb25kaXRpb25hbD1XRUJfQVVESU9dIHZvaWQg
c2V0QXVkaW9Db250ZXh0UmVzdHJpY3Rpb25zKEF1ZGlvQ29udGV4dCBjb250ZXh0LCBET01TdHJp
bmcgcmVzdHJpY3Rpb25zKTsKKyAgICBbQ29uZGl0aW9uYWw9V0VCX0FVRElPXSB2b2lkIHNldEF1
ZGlvQ29udGV4dFJlc3RyaWN0aW9ucygoQXVkaW9Db250ZXh0IG9yIFdlYktpdEF1ZGlvQ29udGV4
dCkgY29udGV4dCwgRE9NU3RyaW5nIHJlc3RyaWN0aW9ucyk7CiAgICAgW0NvbmRpdGlvbmFsPVZJ
REVPLCBNYXlUaHJvd0V4Y2VwdGlvbl0gdm9pZCBwb3N0UmVtb3RlQ29udHJvbENvbW1hbmQoRE9N
U3RyaW5nIGNvbW1hbmQsIG9wdGlvbmFsIHVucmVzdHJpY3RlZCBmbG9hdCBhcmd1bWVudCA9IDAp
OwogICAgIFtDb25kaXRpb25hbD1XSVJFTEVTU19QTEFZQkFDS19UQVJHRVRdIHZvaWQgc2V0TW9j
a01lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJFbmFibGVkKGJvb2xlYW4gZW5hYmxlZCk7CiAgICAg
W0NvbmRpdGlvbmFsPVdJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVCwgTWF5VGhyb3dFeGNlcHRpb25d
IHZvaWQgc2V0TW9ja01lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJTdGF0ZShET01TdHJpbmcgZGV2
aWNlTmFtZSwgRE9NU3RyaW5nIGRldmljZVN0YXRlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL1dlYlByZWZlcmVuY2VzLnlhbWwgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQ
cmVmZXJlbmNlcy55YW1sCmluZGV4IGZhZDFhOWY1ODg2MjFlOTVlMTliMWE0ZmU3NGVhMzAyMzY0
MjQxM2QuLjUyMzVjZTcxZmY3YTkzMmUxMjM4YzY0MDE5ZGEzMTJjNTkxNmRiNmYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlByZWZlcmVuY2VzLnlhbWwKKysrIGIvU291cmNl
L1dlYktpdC9TaGFyZWQvV2ViUHJlZmVyZW5jZXMueWFtbApAQCAtMzM0LDYgKzMzNCwxNCBAQCBX
ZWJBdWRpb0VuYWJsZWQ6CiAgIGRlZmF1bHRWYWx1ZTogdHJ1ZQogICBjb25kaXRpb246IEVOQUJM
RShXRUJfQVVESU8pCiAKK01vZGVyblVucHJlZml4ZWRXZWJBdWRpb0VuYWJsZWQ6CisgIHR5cGU6
IGJvb2wKKyAgZGVmYXVsdFZhbHVlOiBmYWxzZQorICBjb25kaXRpb246IEVOQUJMRShXRUJfQVVE
SU8pCisgIGh1bWFuUmVhZGFibGVOYW1lOiAiTW9kZXJuIFdlYkF1ZGlvIEFQSSIKKyAgaHVtYW5S
ZWFkYWJsZURlc2NyaXB0aW9uOiAiTW9kZXJuIGFuZCB1bnByZWZpeGVkIFdlYkF1ZGlvIEFQSSIK
KyAgY2F0ZWdvcnk6IGV4cGVyaW1lbnRhbAorCiBBdHRhY2htZW50RWxlbWVudEVuYWJsZWQ6CiAg
IHR5cGU6IGJvb2wKICAgZGVmYXVsdFZhbHVlOiBmYWxzZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJQcmVmZXJlbmNlS2V5c1ByaXZhdGUuaCBiL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViUHJlZmVyZW5jZUtleXNQcml2YXRlLmgKaW5k
ZXggMTU2NDQxZTcyODljMGQzZGUyNDk4MDU4NDc0ODQ0NzQ5Mjg4ZTYyMy4uOGEyM2UxMzQ1MGZi
YmFhZmYxZjMyMjM5ZjMzZjgzZDY4ZjI2MjU5NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvV2ViVmlldy9XZWJQcmVmZXJlbmNlS2V5c1ByaXZhdGUuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlByZWZlcmVuY2VLZXlzUHJpdmF0ZS5oCkBAIC0x
MTgsNiArMTE4LDcgQEAKICNkZWZpbmUgV2ViS2l0Q29udGVudENoYW5nZU9ic2VydmVyRW5hYmxl
ZFByZWZlcmVuY2VLZXkgQCJXZWJLaXRDb250ZW50Q2hhbmdlT2JzZXJ2ZXJFbmFibGVkIgogI2Rl
ZmluZSBXZWJLaXRTaG93UmVwYWludENvdW50ZXJQcmVmZXJlbmNlS2V5IEAiV2ViS2l0U2hvd1Jl
cGFpbnRDb3VudGVyIgogI2RlZmluZSBXZWJLaXRXZWJBdWRpb0VuYWJsZWRQcmVmZXJlbmNlS2V5
IEAiV2ViS2l0V2ViQXVkaW9FbmFibGVkIgorI2RlZmluZSBXZWJLaXRNb2Rlcm5VbnByZWZpeGVk
V2ViQXVkaW9FbmFibGVkUHJlZmVyZW5jZUtleSBAIldlYktpdE1vZGVyblVucHJlZml4ZWRXZWJB
dWRpb0VuYWJsZWQiCiAjZGVmaW5lIFdlYktpdFdlYkdMRW5hYmxlZFByZWZlcmVuY2VLZXkgQCJX
ZWJLaXRXZWJHTEVuYWJsZWQiCiAjZGVmaW5lIFdlYktpdFdlYkdMMkVuYWJsZWRQcmVmZXJlbmNl
S2V5IEAiV2ViS2l0V2ViR0wyRW5hYmxlZCIKICNkZWZpbmUgV2ViS2l0V2ViR1BVRW5hYmxlZFBy
ZWZlcmVuY2VLZXkgQCJXZWJLaXRXZWJHUFVFbmFibGVkIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJQcmVmZXJlbmNlcy5tbSBiL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL1dlYlZpZXcvV2ViUHJlZmVyZW5jZXMubW0KaW5kZXggYjg1MjhkMmUwN2I5YzY3
MDJiMGU1NmM0NGExZGE0OTBlZTc0Y2NjZi4uNWM4ZDNjZmY4ZmQyN2FjNTQ4MzY5ZDUzZDFjZTNj
OTIzYzk2MWI1MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9X
ZWJQcmVmZXJlbmNlcy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dl
YlByZWZlcmVuY2VzLm1tCkBAIC01NzQsNiArNTc0LDcgQEAgKyAodm9pZClpbml0aWFsaXplCiAg
ICAgICAgIEBOTywgV2ViS2l0RGlhZ25vc3RpY0xvZ2dpbmdFbmFibGVkS2V5LAogICAgICAgICBA
KFdlYkFsbG93QWxsU3RvcmFnZSksIFdlYktpdFN0b3JhZ2VCbG9ja2luZ1BvbGljeUtleSwKICAg
ICAgICAgQE5PLCBXZWJLaXRQbHVnSW5TbmFwc2hvdHRpbmdFbmFibGVkUHJlZmVyZW5jZUtleSwK
KyAgICAgICAgQE5PLCBXZWJLaXRNb2Rlcm5VbnByZWZpeGVkV2ViQXVkaW9FbmFibGVkUHJlZmVy
ZW5jZUtleSwKIAogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgICAgIEBZRVMsIFdlYktp
dENvbnRlbnRDaGFuZ2VPYnNlcnZlckVuYWJsZWRQcmVmZXJlbmNlS2V5LApAQCAtMjE0OCw2ICsy
MTQ5LDE2IEBAIC0gKHZvaWQpc2V0V2ViQXVkaW9FbmFibGVkOihCT09MKWVuYWJsZWQKICAgICBb
c2VsZiBfc2V0Qm9vbFZhbHVlOmVuYWJsZWQgZm9yS2V5OldlYktpdFdlYkF1ZGlvRW5hYmxlZFBy
ZWZlcmVuY2VLZXldOwogfQogCistIChCT09MKW1vZGVyblVucHJlZml4ZWRXZWJBdWRpb0VuYWJs
ZWQKK3sKKyAgICByZXR1cm4gW3NlbGYgX2Jvb2xWYWx1ZUZvcktleTpXZWJLaXRNb2Rlcm5VbnBy
ZWZpeGVkV2ViQXVkaW9FbmFibGVkUHJlZmVyZW5jZUtleV07Cit9CisKKy0gKHZvaWQpc2V0TW9k
ZXJuVW5wcmVmaXhlZFdlYkF1ZGlvRW5hYmxlZDooQk9PTCllbmFibGVkCit7CisgICAgW3NlbGYg
X3NldEJvb2xWYWx1ZTplbmFibGVkIGZvcktleTpXZWJLaXRNb2Rlcm5VbnByZWZpeGVkV2ViQXVk
aW9FbmFibGVkUHJlZmVyZW5jZUtleV07Cit9CisKIC0gKEJPT0wpc3VicGl4ZWxDU1NPTUVsZW1l
bnRNZXRyaWNzRW5hYmxlZAogewogICAgIHJldHVybiBbc2VsZiBfYm9vbFZhbHVlRm9yS2V5Oldl
YktpdFN1YnBpeGVsQ1NTT01FbGVtZW50TWV0cmljc0VuYWJsZWRQcmVmZXJlbmNlS2V5XTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViUHJlZmVyZW5jZXNQ
cml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlByZWZlcmVuY2Vz
UHJpdmF0ZS5oCmluZGV4IDhjODY2ZWI4YTg5ZDdiODg1NzQ0ODVhNjE3NTZhY2ZiZmZiZGEzYWQu
LmE0NTA5NDcxYTAwMzQ1YzRkNDdlN2Q1Y2MyZGQwZDRmM2M3ZmRjNWUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViUHJlZmVyZW5jZXNQcml2YXRlLmgKKysr
IGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJQcmVmZXJlbmNlc1ByaXZhdGUu
aApAQCAtMjY5LDYgKzI2OSw5IEBAIGV4dGVybiBOU1N0cmluZyAqV2ViUHJlZmVyZW5jZXNDYWNo
ZU1vZGVsQ2hhbmdlZEludGVybmFsTm90aWZpY2F0aW9uIFdFQktJVF9ERVBSCiAtIChCT09MKXdl
YkF1ZGlvRW5hYmxlZDsKIC0gKHZvaWQpc2V0V2ViQXVkaW9FbmFibGVkOihCT09MKWVuYWJsZWQ7
CiAKKy0gKEJPT0wpbW9kZXJuVW5wcmVmaXhlZFdlYkF1ZGlvRW5hYmxlZDsKKy0gKHZvaWQpc2V0
TW9kZXJuVW5wcmVmaXhlZFdlYkF1ZGlvRW5hYmxlZDooQk9PTCllbmFibGVkOworCiAtIChCT09M
KXN1YnBpeGVsQ1NTT01FbGVtZW50TWV0cmljc0VuYWJsZWQ7CiAtICh2b2lkKXNldFN1YnBpeGVs
Q1NTT01FbGVtZW50TWV0cmljc0VuYWJsZWQ6KEJPT0wpZW5hYmxlZDsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tIGIvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCmluZGV4IDI5OWNiMWNhNzkzNGJhOGFhYTNk
NjIwY2Y2MTU5NGJlNjQwYjAzOWEuLjg1MTIxMzI1MjA4YjhlZGE0YjI5OThjMmE5MTI1YmJiMWEz
NjlmMzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmll
dy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZpZXcubW0KQEAg
LTMyNjcsNiArMzI2Nyw3IEBAIC0gKHZvaWQpX3ByZWZlcmVuY2VzQ2hhbmdlZDooV2ViUHJlZmVy
ZW5jZXMgKilwcmVmZXJlbmNlcwogCiAjaWYgRU5BQkxFKFdFQl9BVURJTykKICAgICBzZXR0aW5n
cy5zZXRXZWJBdWRpb0VuYWJsZWQoW3ByZWZlcmVuY2VzIHdlYkF1ZGlvRW5hYmxlZF0pOworICAg
IHNldHRpbmdzLnNldE1vZGVyblVucHJlZml4ZWRXZWJBdWRpb0VuYWJsZWQoW3ByZWZlcmVuY2Vz
IG1vZGVyblVucHJlZml4ZWRXZWJBdWRpb0VuYWJsZWRdKTsKICNlbmRpZgogCiAjaWYgRU5BQkxF
KEZVTExTQ1JFRU5fQVBJKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2Vi
UHJlZmVyZW5jZUtleXNQcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJQcmVm
ZXJlbmNlS2V5c1ByaXZhdGUuaAppbmRleCA4MDQ1MzFhNDZiZmI1NzIzZjZlZDFjYWMzMmY5NThm
MTMzZmVjMjgzLi4yYTIxMjFhZGI5Njg2OTg0MTIxYzBlNGJhOGRhZmZjYTdiY2M2Y2FiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJQcmVmZXJlbmNlS2V5c1ByaXZhdGUu
aAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJQcmVmZXJlbmNlS2V5c1ByaXZhdGUu
aApAQCAtNzUsNiArNzUsNyBAQAogI2RlZmluZSBXZWJLaXRMb2NhbFN0b3JhZ2VEYXRhYmFzZVBh
dGhQcmVmZXJlbmNlS2V5ICJXZWJLaXRMb2NhbFN0b3JhZ2VEYXRhYmFzZVBhdGgiCiAjZGVmaW5l
IFdlYktpdEh5cGVybGlua0F1ZGl0aW5nRW5hYmxlZFByZWZlcmVuY2VLZXkgIldlYktpdEh5cGVy
bGlua0F1ZGl0aW5nRW5hYmxlZCIKICNkZWZpbmUgV2ViS2l0V2ViQXVkaW9FbmFibGVkUHJlZmVy
ZW5jZUtleSAiV2ViS2l0V2ViQXVkaW9FbmFibGVkIgorI2RlZmluZSBXZWJLaXRNb2Rlcm5VbnBy
ZWZpeGVkV2ViQXVkaW9FbmFibGVkUHJlZmVyZW5jZUtleSAiV2ViS2l0V2ViQXVkaW9FbmFibGVk
IgogI2RlZmluZSBXZWJLaXRTaG91bGREaXNwbGF5U3VidGl0bGVzUHJlZmVyZW5jZUtleSAiV2Vi
S2l0U2hvdWxkRGlzcGxheVN1YnRpdGxlcyIKICNkZWZpbmUgV2ViS2l0U2hvdWxkRGlzcGxheUNh
cHRpb25zUHJlZmVyZW5jZUtleSAiV2ViS2l0U2hvdWxkRGlzcGxheUNhcHRpb25zIgogI2RlZmlu
ZSBXZWJLaXRTaG91bGREaXNwbGF5VGV4dERlc2NyaXB0aW9uc1ByZWZlcmVuY2VLZXkgIldlYktp
dFNob3VsZERpc3BsYXlUZXh0RGVzY3JpcHRpb25zIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dExlZ2FjeS93aW4vV2ViUHJlZmVyZW5jZXMuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4v
V2ViUHJlZmVyZW5jZXMuY3BwCmluZGV4IDU4MjZlNDE5NThjMDMzODg5MjNjZjM4OWViN2QyYTg2
NWYzN2YxNTMuLjkzZGU4YTMyMGFhMTU4MzQ5YTA3MjA1ZDA0ZTJlYTRjNDE0OWYyOTQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlByZWZlcmVuY2VzLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJQcmVmZXJlbmNlcy5jcHAKQEAgLTIzMiw2ICsyMzIs
NyBAQCB2b2lkIFdlYlByZWZlcmVuY2VzOjppbml0aWFsaXplRGVmYXVsdFNldHRpbmdzKCkKICAg
ICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShkZWZhdWx0cywgQ0ZTVFIoV2ViS2l0SmF2YVNjcmlwdFJ1
bnRpbWVGbGFnc1ByZWZlcmVuY2VLZXkpLCBDRlNUUigiMCIpKTsKICAgICBDRkRpY3Rpb25hcnlB
ZGRWYWx1ZShkZWZhdWx0cywgQ0ZTVFIoV2ViS2l0V2ViU2VjdXJpdHlFbmFibGVkUHJlZmVyZW5j
ZUtleSksIGtDRkJvb2xlYW5UcnVlKTsKICAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShkZWZhdWx0
cywgQ0ZTVFIoV2ViS2l0QWxsb3dUb3BOYXZpZ2F0aW9uVG9EYXRhVVJMc1ByZWZlcmVuY2VLZXkp
LCBrQ0ZCb29sZWFuRmFsc2UpOworICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKGRlZmF1bHRzLCBD
RlNUUihXZWJLaXRXZWJBdWRpb0VuYWJsZWRQcmVmZXJlbmNlS2V5KSwga0NGQm9vbGVhbkZhbHNl
KTsKICAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShkZWZhdWx0cywgQ0ZTVFIoV2ViS2l0QWxsb3dV
bml2ZXJzYWxBY2Nlc3NGcm9tRmlsZVVSTHNQcmVmZXJlbmNlS2V5KSwga0NGQm9vbGVhbkZhbHNl
KTsKICAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShkZWZhdWx0cywgQ0ZTVFIoV2ViS2l0QWxsb3dG
aWxlQWNjZXNzRnJvbUZpbGVVUkxzUHJlZmVyZW5jZUtleSksIGtDRkJvb2xlYW5UcnVlKTsKICAg
ICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShkZWZhdWx0cywgQ0ZTVFIoV2ViS2l0SmF2YVNjcmlwdENh
bkFjY2Vzc0NsaXBib2FyZFByZWZlcmVuY2VLZXkpLCBrQ0ZCb29sZWFuRmFsc2UpOwpAQCAtMjQ5
OSwzICsyNTAwLDE3IEBAIEhSRVNVTFQgV2ViUHJlZmVyZW5jZXM6OnNldEFsbG93VG9wTmF2aWdh
dGlvblRvRGF0YVVSTHMoQk9PTCBhbGxvd0FjY2VzcykKICAgICBzZXRCb29sVmFsdWUoV2ViS2l0
QWxsb3dUb3BOYXZpZ2F0aW9uVG9EYXRhVVJMc1ByZWZlcmVuY2VLZXksIGFsbG93QWNjZXNzKTsK
ICAgICByZXR1cm4gU19PSzsKIH0KKworSFJFU1VMVCBXZWJQcmVmZXJlbmNlczo6bW9kZXJuVW5w
cmVmaXhlZFdlYkF1ZGlvRW5hYmxlZChfT3V0XyBCT09MKiBlbmFibGVkKQoreworICAgIGlmICgh
ZW5hYmxlZCkKKyAgICAgICAgcmV0dXJuIEVfUE9JTlRFUjsKKyAgICAqZW5hYmxlZCA9IGJvb2xW
YWx1ZUZvcktleShXZWJLaXRXZWJBdWRpb0VuYWJsZWRQcmVmZXJlbmNlS2V5KTsKKyAgICByZXR1
cm4gU19PSzsKK30KKworSFJFU1VMVCBXZWJQcmVmZXJlbmNlczo6c2V0TW9kZXJuVW5wcmVmaXhl
ZFdlYkF1ZGlvRW5hYmxlZChCT09MIGVuYWJsZWQpCit7CisgICAgc2V0Qm9vbFZhbHVlKFdlYktp
dFdlYkF1ZGlvRW5hYmxlZFByZWZlcmVuY2VLZXksIGVuYWJsZWQpOworICAgIHJldHVybiBTX09L
OworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViUHJlZmVyZW5jZXMu
aCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlByZWZlcmVuY2VzLmgKaW5kZXggZjdmZTc2
ODQyYjRkZDIzMjk4MWVmZmY3MjFjMWZhNGIxMDk3OWU5OC4uMTQ1NDFlNWI5OGRhZTliNDcxZGY5
MjYxNGQ2OTc3MTlmZWVmNDQzZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4v
V2ViUHJlZmVyZW5jZXMuaAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJQcmVmZXJl
bmNlcy5oCkBAIC0zMDUsNiArMzA1LDggQEAgcHVibGljOgogICAgIC8vIElXZWJQcmVmZXJlbmNl
c1ByaXZhdGU4CiAgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGFsbG93VG9w
TmF2aWdhdGlvblRvRGF0YVVSTHMoX091dF8gQk9PTCopOwogICAgIHZpcnR1YWwgSFJFU1VMVCBT
VERNRVRIT0RDQUxMVFlQRSBzZXRBbGxvd1RvcE5hdmlnYXRpb25Ub0RhdGFVUkxzKEJPT0wpOwor
ICAgIHZpcnR1YWwgTlJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBtb2Rlcm5VbnByZWZpeGVkV2Vi
QXVkaW9FbmFibGVkKF9PdXRfIEJPT0wqKTsKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9E
Q0FMTFRZUEUgc2V0TW9kZXJuVW5wcmVmaXhlZFdlYkF1ZGlvRW5hYmxlZChCT09MKTsKIAogICAg
IC8vIFdlYlByZWZlcmVuY2VzCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2lu
L1dlYlZpZXcuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVmlldy5jcHAKaW5kZXgg
MjhmMjkzZDhjN2Y3ZGE2OWI4ZTE4MTNhZjg4ZDE3OWU4ZmFmYjJmNi4uZGIyOTExNmJmYzI1OTk1
MmNlNmRmMzNmMzczNjYyOWE2N2I5YmEzMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2Fj
eS93aW4vV2ViVmlldy5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVmlldy5j
cHAKQEAgLTU1NTYsNiArNTU1NiwxMSBAQCBIUkVTVUxUIFdlYlZpZXc6Om5vdGlmeVByZWZlcmVu
Y2VzQ2hhbmdlZChJV2ViTm90aWZpY2F0aW9uKiBub3RpZmljYXRpb24pCiAKICNpZiBFTkFCTEUo
V0VCX0FVRElPKQogICAgIHNldHRpbmdzLnNldFdlYkF1ZGlvRW5hYmxlZCh0cnVlKTsKKworICAg
IGhyID0gcHJlZnNQcml2YXRlLT5tb2Rlcm5VbnByZWZpeGVkV2ViQXVkaW9FbmFibGVkKCZlbmFi
bGVkKTsKKyAgICBpZiAoRkFJTEVEKGhyKSkKKyAgICAgICAgcmV0dXJuIGhyOworICAgIHNldHRp
bmdzLnNldE1vZGVyblVucHJlZml4ZWRXZWJBdWRpb0VuYWJsZWQoISFlbmFibGVkKTsKICNlbmRp
ZiAvLyBFTkFCTEUoV0VCX0FVRElPKQogCiAjaWYgRU5BQkxFKFdFQkdMKQpkaWZmIC0tZ2l0IGEv
VG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0R1bXBSZW5kZXJUcmVlLm1tIGIvVG9vbHMvRHVtcFJl
bmRlclRyZWUvbWFjL0R1bXBSZW5kZXJUcmVlLm1tCmluZGV4IGI4MWExYzNjMzUzNzliZDA5MDFl
ZTkxMDdkOWRlZTc3NTdkZGFlMzQuLjg3YzA0ZDkyZmE0Y2U0NzIyMTZlOGMzOGZiZWU5YmJmNzFh
MzJkOTkgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9EdW1wUmVuZGVyVHJl
ZS5tbQorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvRHVtcFJlbmRlclRyZWUubW0KQEAg
LTk3OSw2ICs5NzksNyBAQCBzdGF0aWMgdm9pZCByZXNldFdlYlByZWZlcmVuY2VzVG9Db25zaXN0
ZW50VmFsdWVzKCkKICNlbmRpZgogCiAgICAgW3ByZWZlcmVuY2VzIHNldFdlYkF1ZGlvRW5hYmxl
ZDpZRVNdOworICAgIFtwcmVmZXJlbmNlcyBzZXRNb2Rlcm5VbnByZWZpeGVkV2ViQXVkaW9FbmFi
bGVkOllFU107CiAgICAgW3ByZWZlcmVuY2VzIHNldE1lZGlhU291cmNlRW5hYmxlZDpZRVNdOwog
ICAgIFtwcmVmZXJlbmNlcyBzZXRTb3VyY2VCdWZmZXJDaGFuZ2VUeXBlRW5hYmxlZDpZRVNdOwog
CmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS93aW4vRHVtcFJlbmRlclRyZWUuY3Bw
IGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL0R1bXBSZW5kZXJUcmVlLmNwcAppbmRleCAwYjM3
YWQ0NWZlMThiMmE5NDY1YWMzNTcyM2JjZGNlNjk1NmY2MzYyLi5kMGI5ZDhjN2U3MjBmZDgzMGM2
YjZmMGNjMDVkMDViOTkzNWRmMDQ4IDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS93
aW4vRHVtcFJlbmRlclRyZWUuY3BwCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9EdW1w
UmVuZGVyVHJlZS5jcHAKQEAgLTgzNiw2ICs4MzYsNyBAQCBzdGF0aWMgdm9pZCByZXNldFdlYlBy
ZWZlcmVuY2VzVG9Db25zaXN0ZW50VmFsdWVzKElXZWJQcmVmZXJlbmNlcyogcHJlZmVyZW5jZXMp
CiAjZW5kaWYKIAogICAgIHByZWZzUHJpdmF0ZS0+c2V0QWxsb3dUb3BOYXZpZ2F0aW9uVG9EYXRh
VVJMcyhUUlVFKTsKKyAgICBwcmVmc1ByaXZhdGUtPnNldE1vZGVyblVucHJlZml4ZWRXZWJBdWRp
b0VuYWJsZWQoVFJVRSk7CiAgICAgcHJlZnNQcml2YXRlLT5zZXRBbGxvd1VuaXZlcnNhbEFjY2Vz
c0Zyb21GaWxlVVJMcyhUUlVFKTsKICAgICBwcmVmc1ByaXZhdGUtPnNldEFsbG93RmlsZUFjY2Vz
c0Zyb21GaWxlVVJMcyhUUlVFKTsKICAgICBwcmVmZXJlbmNlcy0+c2V0U3RhbmRhcmRGb250RmFt
aWx5KHN0YW5kYXJkRmFtaWx5KTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvQ2hhbmdlTG9nCmluZGV4IDYz
YTFiNzkyMWUwMGVjMWU0YjhlNjQ4NDc3NTllYmI5YzU3Mjc4ZmQuLmZlNGRmYjlkMDA2OTMzMTE2
NWQxYTI3MWRjODRlZjgyNjgzMzQ0MGIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0NoYW5nZUxvZwpA
QCAtMSwzICsxLDE4IEBACisyMDIwLTA2LTE3ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5j
b20+CisKKyAgICAgICAgQWRkIGV4cGVyaW1lbnRhbCBmZWF0dXJlIGZsYWcgZm9yIG1vZGVybiAm
IHVucHJlZml4ZWQgV2ViQXVkaW8gQVBJCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yMTMyNjgKKworICAgICAgICBSZXZpZXdlZCBieSBKZXIgTm9ibGUu
CisKKyAgICAgICAgUmViYXNlbGluZSBhIGZldyB3ZWItcGxhdGZvcm0tdGVzdHMgbm93IHRoYXQg
dGhleSBhcmUgcGFzc2luZyBvciBmYWlsaW5nIGF0IGEgbGF0ZXIgc3RhZ2UuCisgICAgICAgIFRo
aXMgaXMgZHVlIHRvIG91ciBXZWJBdWRpbyBnZXR0aW5nIHByb3Blcmx5IHVucHJlZml4ZWQgaW4g
dGhlIGNvbnRleHQgb2YgbGF5b3V0IHRlc3RzLgorCisgICAgICAgICogd2ViLXBsYXRmb3JtLXRl
c3RzL3dlYmF1ZGlvL2lkbGhhcm5lc3MuaHR0cHMud2luZG93LWV4cGVjdGVkLnR4dDoKKyAgICAg
ICAgKiB3ZWItcGxhdGZvcm0tdGVzdHMvd2ViYXVkaW8vdGhlLWF1ZGlvLWFwaS90aGUtYXVkaW9j
b250ZXh0LWludGVyZmFjZS9hdWRpb2NvbnRleHQtZGV0YWNoZWQtZXhlY3V0aW9uLWNvbnRleHQu
dGVudGF0aXZlLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiB3ZWItcGxhdGZvcm0tdGVzdHMvd2Vi
YXVkaW8vdGhlLWF1ZGlvLWFwaS90aGUtYXVkaW9ub2RlLWludGVyZmFjZS9hdWRpb25vZGUtY29u
bmVjdC1tZXRob2QtY2hhaW5pbmctZXhwZWN0ZWQudHh0OgorICAgICAgICAqIHdlYi1wbGF0Zm9y
bS10ZXN0cy93ZWJhdWRpby90aGUtYXVkaW8tYXBpL3RoZS1vZmZsaW5lYXVkaW9jb250ZXh0LWlu
dGVyZmFjZS9vZmZsaW5lYXVkaW9jb250ZXh0LWRldGFjaGVkLWV4ZWN1dGlvbi1jb250ZXh0LnRl
bnRhdGl2ZS1leHBlY3RlZC50eHQ6CisKIDIwMjAtMDYtMTcgIERhcnJ5bCBQb2d1ZSAgPGRhcnJ5
bEBkcG9ndWUuY2E+CiAKICAgICAgICAgSW5kZXhlZERCOiBTdXBwb3J0IElEQkZhY3RvcnkgZGF0
YWJhc2VzIG1ldGhvZApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vY2FsbC1hLWNv
bnN0cnVjdG9yLWFzLWEtZnVuY3Rpb24tZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9k
b20vY2FsbC1hLWNvbnN0cnVjdG9yLWFzLWEtZnVuY3Rpb24tZXhwZWN0ZWQudHh0CmluZGV4IDhh
MTgwMWNhMjJmYzY2ZWVkYTM5MmNkM2Y3YWYwZDYyMTVmMjkyZTAuLjI3NTRmNDhlNWYyNTYwYzQ2
ZTg1OGI4ZTYwZTA0MmViOGNlZDY2NmUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3QvZG9t
L2NhbGwtYS1jb25zdHJ1Y3Rvci1hcy1hLWZ1bmN0aW9uLWV4cGVjdGVkLnR4dAorKysgYi9MYXlv
dXRUZXN0cy9mYXN0L2RvbS9jYWxsLWEtY29uc3RydWN0b3ItYXMtYS1mdW5jdGlvbi1leHBlY3Rl
ZC50eHQKQEAgLTMsNyArMyw3IEBAIFRoaXMgdGVzdHMgaWYgVHlwZUVycm9yIGlzIHRocm93biBv
ciBub3Qgd2hlbiB3ZSBjYWxsIGEgY29uc3RydWN0b3IgYXMgYSBub3JtYWwKIE9uIHN1Y2Nlc3Ms
IHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJU
RVNUIENPTVBMRVRFIi4KIAogCi1TS0lQIEF1ZGlvQ29udGV4dCBpcyBub3QgaW1wbGVtZW50ZWQu
CitQQVNTIEF1ZGlvQ29udGV4dCgpIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IENvbnN0cnVj
dG9yIHJlcXVpcmVzICduZXcnIG9wZXJhdG9yLgogUEFTUyBGb3JtRGF0YSgpIHRocmV3IGV4Y2Vw
dGlvbiBUeXBlRXJyb3I6IENvbnN0cnVjdG9yIHJlcXVpcmVzICduZXcnIG9wZXJhdG9yLgogUEFT
UyBFdmVudFNvdXJjZSgpIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IENvbnN0cnVjdG9yIHJl
cXVpcmVzICduZXcnIG9wZXJhdG9yLgogUEFTUyBGaWxlUmVhZGVyKCkgdGhyZXcgZXhjZXB0aW9u
IFR5cGVFcnJvcjogQ29uc3RydWN0b3IgcmVxdWlyZXMgJ25ldycgb3BlcmF0b3IuCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYmF1ZGlv
L2lkbGhhcm5lc3MuaHR0cHMud2luZG93LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2ViYXVkaW8vaWRsaGFybmVzcy5odHRwcy53aW5k
b3ctZXhwZWN0ZWQudHh0CmluZGV4IGNjYzdlOWU4ZjcxYmYxZDQxMjRkYmNkZTg5MzYxNmMyNjQw
YmMzYWQuLjg1OThkZGFmZTA4MDFmODYzYzdjOTAzZDIxMDI0ZTY4Y2IxYjg3NjEgMTAwNjQ0Ci0t
LSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2ViYXVkaW8v
aWRsaGFybmVzcy5odHRwcy53aW5kb3ctZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2ViYXVkaW8vaWRsaGFybmVzcy5odHRwcy53
aW5kb3ctZXhwZWN0ZWQudHh0CkBAIC00Myw3ICs0Myw3IEBAIEZBSUwgQmFzZUF1ZGlvQ29udGV4
dCBpbnRlcmZhY2U6IG9wZXJhdGlvbiBjcmVhdGVXYXZlU2hhcGVyKCkgYXNzZXJ0X293bl9wcm9w
ZXJ0CiBGQUlMIEJhc2VBdWRpb0NvbnRleHQgaW50ZXJmYWNlOiBvcGVyYXRpb24gZGVjb2RlQXVk
aW9EYXRhKEFycmF5QnVmZmVyLCBvcHRpb25hbCBEZWNvZGVTdWNjZXNzQ2FsbGJhY2s/LCBvcHRp
b25hbCBEZWNvZGVFcnJvckNhbGxiYWNrPykgYXNzZXJ0X293bl9wcm9wZXJ0eTogc2VsZiBkb2Vz
IG5vdCBoYXZlIG93biBwcm9wZXJ0eSAiQmFzZUF1ZGlvQ29udGV4dCIgZXhwZWN0ZWQgcHJvcGVy
dHkgIkJhc2VBdWRpb0NvbnRleHQiIG1pc3NpbmcKIEZBSUwgQXVkaW9Db250ZXh0IGludGVyZmFj
ZTogZXhpc3RlbmNlIGFuZCBwcm9wZXJ0aWVzIG9mIGludGVyZmFjZSBvYmplY3QgYXNzZXJ0X293
bl9wcm9wZXJ0eTogc2VsZiBkb2VzIG5vdCBoYXZlIG93biBwcm9wZXJ0eSAiQmFzZUF1ZGlvQ29u
dGV4dCIgZXhwZWN0ZWQgcHJvcGVydHkgIkJhc2VBdWRpb0NvbnRleHQiIG1pc3NpbmcKIFBBU1Mg
QXVkaW9Db250ZXh0IGludGVyZmFjZSBvYmplY3QgbGVuZ3RoIAotRkFJTCBBdWRpb0NvbnRleHQg
aW50ZXJmYWNlIG9iamVjdCBuYW1lIGFzc2VydF9lcXVhbHM6IHdyb25nIHZhbHVlIGZvciBBdWRp
b0NvbnRleHQubmFtZSBleHBlY3RlZCAiQXVkaW9Db250ZXh0IiBidXQgZ290ICJ3ZWJraXRBdWRp
b0NvbnRleHQiCitQQVNTIEF1ZGlvQ29udGV4dCBpbnRlcmZhY2Ugb2JqZWN0IG5hbWUgCiBGQUlM
IEF1ZGlvQ29udGV4dCBpbnRlcmZhY2U6IGV4aXN0ZW5jZSBhbmQgcHJvcGVydGllcyBvZiBpbnRl
cmZhY2UgcHJvdG90eXBlIG9iamVjdCBhc3NlcnRfb3duX3Byb3BlcnR5OiBzZWxmIGRvZXMgbm90
IGhhdmUgb3duIHByb3BlcnR5ICJCYXNlQXVkaW9Db250ZXh0IiBleHBlY3RlZCBwcm9wZXJ0eSAi
QmFzZUF1ZGlvQ29udGV4dCIgbWlzc2luZwogUEFTUyBBdWRpb0NvbnRleHQgaW50ZXJmYWNlOiBl
eGlzdGVuY2UgYW5kIHByb3BlcnRpZXMgb2YgaW50ZXJmYWNlIHByb3RvdHlwZSBvYmplY3QncyAi
Y29uc3RydWN0b3IiIHByb3BlcnR5IAogUEFTUyBBdWRpb0NvbnRleHQgaW50ZXJmYWNlOiBleGlz
dGVuY2UgYW5kIHByb3BlcnRpZXMgb2YgaW50ZXJmYWNlIHByb3RvdHlwZSBvYmplY3QncyBAQHVu
c2NvcGFibGVzIHByb3BlcnR5IApAQCAtNTgsNyArNTgsNyBAQCBQQVNTIEF1ZGlvQ29udGV4dCBp
bnRlcmZhY2U6IG9wZXJhdGlvbiBjcmVhdGVNZWRpYVN0cmVhbVNvdXJjZShNZWRpYVN0cmVhbSkK
IEZBSUwgQXVkaW9Db250ZXh0IGludGVyZmFjZTogb3BlcmF0aW9uIGNyZWF0ZU1lZGlhU3RyZWFt
VHJhY2tTb3VyY2UoTWVkaWFTdHJlYW1UcmFjaykgYXNzZXJ0X293bl9wcm9wZXJ0eTogaW50ZXJm
YWNlIHByb3RvdHlwZSBvYmplY3QgbWlzc2luZyBub24tc3RhdGljIG9wZXJhdGlvbiBleHBlY3Rl
ZCBwcm9wZXJ0eSAiY3JlYXRlTWVkaWFTdHJlYW1UcmFja1NvdXJjZSIgbWlzc2luZwogUEFTUyBB
dWRpb0NvbnRleHQgaW50ZXJmYWNlOiBvcGVyYXRpb24gY3JlYXRlTWVkaWFTdHJlYW1EZXN0aW5h
dGlvbigpIAogUEFTUyBBdWRpb0NvbnRleHQgbXVzdCBiZSBwcmltYXJ5IGludGVyZmFjZSBvZiBj
b250ZXh0IAotRkFJTCBTdHJpbmdpZmljYXRpb24gb2YgY29udGV4dCBhc3NlcnRfY2xhc3Nfc3Ry
aW5nOiBjbGFzcyBzdHJpbmcgb2YgY29udGV4dCBleHBlY3RlZCAiW29iamVjdCBBdWRpb0NvbnRl
eHRdIiBidXQgZ290ICJbb2JqZWN0IHdlYmtpdEF1ZGlvQ29udGV4dF0iCitQQVNTIFN0cmluZ2lm
aWNhdGlvbiBvZiBjb250ZXh0IAogRkFJTCBBdWRpb0NvbnRleHQgaW50ZXJmYWNlOiBjb250ZXh0
IG11c3QgaW5oZXJpdCBwcm9wZXJ0eSAiYmFzZUxhdGVuY3kiIHdpdGggdGhlIHByb3BlciB0eXBl
IGFzc2VydF9pbmhlcml0czogcHJvcGVydHkgImJhc2VMYXRlbmN5IiBub3QgZm91bmQgaW4gcHJv
dG90eXBlIGNoYWluCiBGQUlMIEF1ZGlvQ29udGV4dCBpbnRlcmZhY2U6IGNvbnRleHQgbXVzdCBp
bmhlcml0IHByb3BlcnR5ICJvdXRwdXRMYXRlbmN5IiB3aXRoIHRoZSBwcm9wZXIgdHlwZSBhc3Nl
cnRfaW5oZXJpdHM6IHByb3BlcnR5ICJvdXRwdXRMYXRlbmN5IiBub3QgZm91bmQgaW4gcHJvdG90
eXBlIGNoYWluCiBGQUlMIEF1ZGlvQ29udGV4dCBpbnRlcmZhY2U6IGNvbnRleHQgbXVzdCBpbmhl
cml0IHByb3BlcnR5ICJnZXRPdXRwdXRUaW1lc3RhbXAoKSIgd2l0aCB0aGUgcHJvcGVyIHR5cGUg
YXNzZXJ0X2luaGVyaXRzOiBwcm9wZXJ0eSAiZ2V0T3V0cHV0VGltZXN0YW1wIiBub3QgZm91bmQg
aW4gcHJvdG90eXBlIGNoYWluCkBAIC0xMDgsNyArMTA4LDcgQEAgUEFTUyBCYXNlQXVkaW9Db250
ZXh0IGludGVyZmFjZTogY29udGV4dCBtdXN0IGluaGVyaXQgcHJvcGVydHkgImRlY29kZUF1ZGlv
RGF0YSgKIEZBSUwgQmFzZUF1ZGlvQ29udGV4dCBpbnRlcmZhY2U6IGNhbGxpbmcgZGVjb2RlQXVk
aW9EYXRhKEFycmF5QnVmZmVyLCBvcHRpb25hbCBEZWNvZGVTdWNjZXNzQ2FsbGJhY2s/LCBvcHRp
b25hbCBEZWNvZGVFcnJvckNhbGxiYWNrPykgb24gY29udGV4dCB3aXRoIHRvbyBmZXcgYXJndW1l
bnRzIG11c3QgdGhyb3cgVHlwZUVycm9yIGFzc2VydF91bnJlYWNoZWQ6IFRocm93cyAiVHlwZUVy
cm9yOiBOb3QgZW5vdWdoIGFyZ3VtZW50cyIgaW5zdGVhZCBvZiByZWplY3RpbmcgcHJvbWlzZSBS
ZWFjaGVkIHVucmVhY2hhYmxlIGNvZGUKIEZBSUwgT2ZmbGluZUF1ZGlvQ29udGV4dCBpbnRlcmZh
Y2U6IGV4aXN0ZW5jZSBhbmQgcHJvcGVydGllcyBvZiBpbnRlcmZhY2Ugb2JqZWN0IGFzc2VydF9v
d25fcHJvcGVydHk6IHNlbGYgZG9lcyBub3QgaGF2ZSBvd24gcHJvcGVydHkgIkJhc2VBdWRpb0Nv
bnRleHQiIGV4cGVjdGVkIHByb3BlcnR5ICJCYXNlQXVkaW9Db250ZXh0IiBtaXNzaW5nCiBGQUlM
IE9mZmxpbmVBdWRpb0NvbnRleHQgaW50ZXJmYWNlIG9iamVjdCBsZW5ndGggYXNzZXJ0X2VxdWFs
czogd3JvbmcgdmFsdWUgZm9yIE9mZmxpbmVBdWRpb0NvbnRleHQubGVuZ3RoIGV4cGVjdGVkIDEg
YnV0IGdvdCAzCi1GQUlMIE9mZmxpbmVBdWRpb0NvbnRleHQgaW50ZXJmYWNlIG9iamVjdCBuYW1l
IGFzc2VydF9lcXVhbHM6IHdyb25nIHZhbHVlIGZvciBPZmZsaW5lQXVkaW9Db250ZXh0Lm5hbWUg
ZXhwZWN0ZWQgIk9mZmxpbmVBdWRpb0NvbnRleHQiIGJ1dCBnb3QgIndlYmtpdE9mZmxpbmVBdWRp
b0NvbnRleHQiCitQQVNTIE9mZmxpbmVBdWRpb0NvbnRleHQgaW50ZXJmYWNlIG9iamVjdCBuYW1l
IAogRkFJTCBPZmZsaW5lQXVkaW9Db250ZXh0IGludGVyZmFjZTogZXhpc3RlbmNlIGFuZCBwcm9w
ZXJ0aWVzIG9mIGludGVyZmFjZSBwcm90b3R5cGUgb2JqZWN0IGFzc2VydF9vd25fcHJvcGVydHk6
IHNlbGYgZG9lcyBub3QgaGF2ZSBvd24gcHJvcGVydHkgIkJhc2VBdWRpb0NvbnRleHQiIGV4cGVj
dGVkIHByb3BlcnR5ICJCYXNlQXVkaW9Db250ZXh0IiBtaXNzaW5nCiBQQVNTIE9mZmxpbmVBdWRp
b0NvbnRleHQgaW50ZXJmYWNlOiBleGlzdGVuY2UgYW5kIHByb3BlcnRpZXMgb2YgaW50ZXJmYWNl
IHByb3RvdHlwZSBvYmplY3QncyAiY29uc3RydWN0b3IiIHByb3BlcnR5IAogUEFTUyBPZmZsaW5l
QXVkaW9Db250ZXh0IGludGVyZmFjZTogZXhpc3RlbmNlIGFuZCBwcm9wZXJ0aWVzIG9mIGludGVy
ZmFjZSBwcm90b3R5cGUgb2JqZWN0J3MgQEB1bnNjb3BhYmxlcyBwcm9wZXJ0eSAKQEAgLTExOCw3
ICsxMTgsNyBAQCBGQUlMIE9mZmxpbmVBdWRpb0NvbnRleHQgaW50ZXJmYWNlOiBvcGVyYXRpb24g
c3VzcGVuZChkb3VibGUpIGFzc2VydF9vd25fcHJvcGVydAogRkFJTCBPZmZsaW5lQXVkaW9Db250
ZXh0IGludGVyZmFjZTogYXR0cmlidXRlIGxlbmd0aCBhc3NlcnRfdHJ1ZTogVGhlIHByb3RvdHlw
ZSBvYmplY3QgbXVzdCBoYXZlIGEgcHJvcGVydHkgImxlbmd0aCIgZXhwZWN0ZWQgdHJ1ZSBnb3Qg
ZmFsc2UKIEZBSUwgT2ZmbGluZUF1ZGlvQ29udGV4dCBpbnRlcmZhY2U6IGF0dHJpYnV0ZSBvbmNv
bXBsZXRlIGFzc2VydF9vd25fcHJvcGVydHk6IGV4cGVjdGVkIHByb3BlcnR5ICJvbmNvbXBsZXRl
IiBtaXNzaW5nCiBQQVNTIE9mZmxpbmVBdWRpb0NvbnRleHQgbXVzdCBiZSBwcmltYXJ5IGludGVy
ZmFjZSBvZiBuZXcgT2ZmbGluZUF1ZGlvQ29udGV4dCgxLCAxLCBzYW1wbGVfcmF0ZSkgCi1GQUlM
IFN0cmluZ2lmaWNhdGlvbiBvZiBuZXcgT2ZmbGluZUF1ZGlvQ29udGV4dCgxLCAxLCBzYW1wbGVf
cmF0ZSkgYXNzZXJ0X2NsYXNzX3N0cmluZzogY2xhc3Mgc3RyaW5nIG9mIG5ldyBPZmZsaW5lQXVk
aW9Db250ZXh0KDEsIDEsIHNhbXBsZV9yYXRlKSBleHBlY3RlZCAiW29iamVjdCBPZmZsaW5lQXVk
aW9Db250ZXh0XSIgYnV0IGdvdCAiW29iamVjdCB3ZWJraXRPZmZsaW5lQXVkaW9Db250ZXh0XSIK
K1BBU1MgU3RyaW5naWZpY2F0aW9uIG9mIG5ldyBPZmZsaW5lQXVkaW9Db250ZXh0KDEsIDEsIHNh
bXBsZV9yYXRlKSAKIFBBU1MgT2ZmbGluZUF1ZGlvQ29udGV4dCBpbnRlcmZhY2U6IG5ldyBPZmZs
aW5lQXVkaW9Db250ZXh0KDEsIDEsIHNhbXBsZV9yYXRlKSBtdXN0IGluaGVyaXQgcHJvcGVydHkg
InN0YXJ0UmVuZGVyaW5nKCkiIHdpdGggdGhlIHByb3BlciB0eXBlIAogUEFTUyBPZmZsaW5lQXVk
aW9Db250ZXh0IGludGVyZmFjZTogbmV3IE9mZmxpbmVBdWRpb0NvbnRleHQoMSwgMSwgc2FtcGxl
X3JhdGUpIG11c3QgaW5oZXJpdCBwcm9wZXJ0eSAicmVzdW1lKCkiIHdpdGggdGhlIHByb3BlciB0
eXBlIAogUEFTUyBPZmZsaW5lQXVkaW9Db250ZXh0IGludGVyZmFjZTogbmV3IE9mZmxpbmVBdWRp
b0NvbnRleHQoMSwgMSwgc2FtcGxlX3JhdGUpIG11c3QgaW5oZXJpdCBwcm9wZXJ0eSAic3VzcGVu
ZChkb3VibGUpIiB3aXRoIHRoZSBwcm9wZXIgdHlwZSAKQEAgLTkwNCw3ICs5MDQsNyBAQCBGQUlM
IEF1ZGlvTm9kZSBpbnRlcmZhY2U6IG5ldyBPc2NpbGxhdG9yTm9kZShjb250ZXh0KSBtdXN0IGlu
aGVyaXQgcHJvcGVydHkgImNoYQogRkFJTCBBdWRpb05vZGUgaW50ZXJmYWNlOiBuZXcgT3NjaWxs
YXRvck5vZGUoY29udGV4dCkgbXVzdCBpbmhlcml0IHByb3BlcnR5ICJjaGFubmVsSW50ZXJwcmV0
YXRpb24iIHdpdGggdGhlIHByb3BlciB0eXBlIGFzc2VydF9lcXVhbHM6IFVuZXhwZWN0ZWQgZXhj
ZXB0aW9uIHdoZW4gZXZhbHVhdGluZyBvYmplY3QgZXhwZWN0ZWQgbnVsbCBidXQgZ290IG9iamVj
dCAiVHlwZUVycm9yOiBmdW5jdGlvbiBpcyBub3QgYSBjb25zdHJ1Y3RvciAoZXZhbHVhdGluZyAn
bmV3IE9zY2lsbGF0b3JOb2RlKGNvbnRleHQpJykiCiBQQVNTIFBhbm5lck5vZGUgaW50ZXJmYWNl
OiBleGlzdGVuY2UgYW5kIHByb3BlcnRpZXMgb2YgaW50ZXJmYWNlIG9iamVjdCAKIEZBSUwgUGFu
bmVyTm9kZSBpbnRlcmZhY2Ugb2JqZWN0IGxlbmd0aCBhc3NlcnRfZXF1YWxzOiB3cm9uZyB2YWx1
ZSBmb3IgUGFubmVyTm9kZS5sZW5ndGggZXhwZWN0ZWQgMSBidXQgZ290IDAKLUZBSUwgUGFubmVy
Tm9kZSBpbnRlcmZhY2Ugb2JqZWN0IG5hbWUgYXNzZXJ0X2VxdWFsczogd3JvbmcgdmFsdWUgZm9y
IFBhbm5lck5vZGUubmFtZSBleHBlY3RlZCAiUGFubmVyTm9kZSIgYnV0IGdvdCAid2Via2l0QXVk
aW9QYW5uZXJOb2RlIgorUEFTUyBQYW5uZXJOb2RlIGludGVyZmFjZSBvYmplY3QgbmFtZSAKIFBB
U1MgUGFubmVyTm9kZSBpbnRlcmZhY2U6IGV4aXN0ZW5jZSBhbmQgcHJvcGVydGllcyBvZiBpbnRl
cmZhY2UgcHJvdG90eXBlIG9iamVjdCAKIFBBU1MgUGFubmVyTm9kZSBpbnRlcmZhY2U6IGV4aXN0
ZW5jZSBhbmQgcHJvcGVydGllcyBvZiBpbnRlcmZhY2UgcHJvdG90eXBlIG9iamVjdCdzICJjb25z
dHJ1Y3RvciIgcHJvcGVydHkgCiBQQVNTIFBhbm5lck5vZGUgaW50ZXJmYWNlOiBleGlzdGVuY2Ug
YW5kIHByb3BlcnRpZXMgb2YgaW50ZXJmYWNlIHByb3RvdHlwZSBvYmplY3QncyBAQHVuc2NvcGFi
bGVzIHByb3BlcnR5IApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy93ZWJhdWRpby90aGUtYXVkaW8tYXBpL3RoZS1hdWRpb2NvbnRleHQtaW50
ZXJmYWNlL2F1ZGlvY29udGV4dC1kZXRhY2hlZC1leGVjdXRpb24tY29udGV4dC50ZW50YXRpdmUt
ZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy93ZWJhdWRpby90aGUtYXVkaW8tYXBpL3RoZS1hdWRpb2NvbnRleHQtaW50ZXJmYWNlL2F1ZGlv
Y29udGV4dC1kZXRhY2hlZC1leGVjdXRpb24tY29udGV4dC50ZW50YXRpdmUtZXhwZWN0ZWQudHh0
CmluZGV4IDM0NGZjZDljOTQwNWJlZGZhOWIzNDdkZWI3MzEyYjdkNDRiMjg3NmYuLjhiOGRlOTBm
Y2JiNTRmZDliYzk2NjNmYTQ5MzQ1NTM4Y2EwZmUxMTAgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2ViYXVkaW8vdGhlLWF1ZGlvLWFwaS90
aGUtYXVkaW9jb250ZXh0LWludGVyZmFjZS9hdWRpb2NvbnRleHQtZGV0YWNoZWQtZXhlY3V0aW9u
LWNvbnRleHQudGVudGF0aXZlLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYmF1ZGlvL3RoZS1hdWRpby1hcGkvdGhlLWF1ZGlv
Y29udGV4dC1pbnRlcmZhY2UvYXVkaW9jb250ZXh0LWRldGFjaGVkLWV4ZWN1dGlvbi1jb250ZXh0
LnRlbnRhdGl2ZS1leHBlY3RlZC50eHQKQEAgLTEsNyArMSw2IEBACiAKLQogUEFTUyAjIEFVRElU
IFRBU0sgUlVOTkVSIFNUQVJURUQuIAotRkFJTCBFeGVjdXRpbmcgImRlY29kaW5nLW9uLWRldGFj
aGVkLWlmcmFtZSIgcHJvbWlzZV90ZXN0OiBVbmhhbmRsZWQgcmVqZWN0aW9uIHdpdGggdmFsdWU6
IG9iamVjdCAiVHlwZUVycm9yOiB1bmRlZmluZWQgaXMgbm90IGEgY29uc3RydWN0b3IgKGV2YWx1
YXRpbmcgJ25ldyBpZnJhbWUuY29udGVudFdpbmRvdy5BdWRpb0NvbnRleHQoKScpIgorRkFJTCBF
eGVjdXRpbmcgImRlY29kaW5nLW9uLWRldGFjaGVkLWlmcmFtZSIgcHJvbWlzZV90ZXN0OiBVbmhh
bmRsZWQgcmVqZWN0aW9uIHdpdGggdmFsdWU6IG9iamVjdCAiVHlwZUVycm9yOiBOb3QgZW5vdWdo
IGFyZ3VtZW50cyIKIFBBU1MgQXVkaXQgcmVwb3J0IAogUEFTUyA+IFtkZWNvZGluZy1vbi1kZXRh
Y2hlZC1pZnJhbWVdICAKIFBBU1MgIyBBVURJVCBUQVNLIFJVTk5FUiBGSU5JU0hFRDogMSB0YXNr
cyByYW4gc3VjY2Vzc2Z1bGx5LiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvd2ViYXVkaW8vdGhlLWF1ZGlvLWFwaS90aGUtYXVkaW9ub2Rl
LWludGVyZmFjZS9hdWRpb25vZGUtY29ubmVjdC1tZXRob2QtY2hhaW5pbmctZXhwZWN0ZWQudHh0
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJhdWRpby90
aGUtYXVkaW8tYXBpL3RoZS1hdWRpb25vZGUtaW50ZXJmYWNlL2F1ZGlvbm9kZS1jb25uZWN0LW1l
dGhvZC1jaGFpbmluZy1leHBlY3RlZC50eHQKaW5kZXggNzNmNzdlNTVjYzg5MTY1NmMyYmRhNjhl
M2E5ZTM3MTY5NTgyZjg0Yy4uNmE2NTliNTYyNThkNTQzNzk3NWI1NThkZDdkM2I5OWZlODA3ZDI2
YiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy93ZWJhdWRpby90aGUtYXVkaW8tYXBpL3RoZS1hdWRpb25vZGUtaW50ZXJmYWNlL2F1ZGlvbm9k
ZS1jb25uZWN0LW1ldGhvZC1jaGFpbmluZy1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJhdWRpby90aGUtYXVkaW8tYXBpL3Ro
ZS1hdWRpb25vZGUtaW50ZXJmYWNlL2F1ZGlvbm9kZS1jb25uZWN0LW1ldGhvZC1jaGFpbmluZy1l
eHBlY3RlZC50eHQKQEAgLTM2LDkgKzM2LDkgQEAgUEFTUyAgIFRoZSByZXR1cm4gdmFsdWUgb2Yg
R2Fpbk5vZGUuY29ubmVjdChDaGFubmVsTWVyZ2VyTm9kZSwgMCwgMSkgbWF0Y2hlcyB0aGUKIFBB
U1MgICBUaGUgcmV0dXJuIHZhbHVlIG9mIE9zY2lsbGF0b3JOb2RlLmNvbm5lY3QoR2Fpbk5vZGUp
IG1hdGNoZXMgdGhlIGRlc3RpbmF0aW9uIEdhaW5Ob2RlIGlzIGVxdWFsIHRvIHRydWUuIAogUEFT
UyAgIFRoZSByZXR1cm4gdmFsdWUgb2YgT3NjaWxsYXRvck5vZGUuY29ubmVjdChCaXF1YWRGaWx0
ZXJOb2RlLCAwKSBtYXRjaGVzIHRoZSBkZXN0aW5hdGlvbiBCaXF1YWRGaWx0ZXJOb2RlIGlzIGVx
dWFsIHRvIHRydWUuIAogUEFTUyAgIFRoZSByZXR1cm4gdmFsdWUgb2YgT3NjaWxsYXRvck5vZGUu
Y29ubmVjdChDaGFubmVsTWVyZ2VyTm9kZSwgMCwgMSkgbWF0Y2hlcyB0aGUgZGVzdGluYXRpb24g
Q2hhbm5lbE1lcmdlck5vZGUgaXMgZXF1YWwgdG8gdHJ1ZS4gCi1QQVNTICAgVGhlIHJldHVybiB2
YWx1ZSBvZiB3ZWJraXRBdWRpb1Bhbm5lck5vZGUuY29ubmVjdChHYWluTm9kZSkgbWF0Y2hlcyB0
aGUgZGVzdGluYXRpb24gR2Fpbk5vZGUgaXMgZXF1YWwgdG8gdHJ1ZS4gCi1QQVNTICAgVGhlIHJl
dHVybiB2YWx1ZSBvZiB3ZWJraXRBdWRpb1Bhbm5lck5vZGUuY29ubmVjdChCaXF1YWRGaWx0ZXJO
b2RlLCAwKSBtYXRjaGVzIHRoZSBkZXN0aW5hdGlvbiBCaXF1YWRGaWx0ZXJOb2RlIGlzIGVxdWFs
IHRvIHRydWUuIAotUEFTUyAgIFRoZSByZXR1cm4gdmFsdWUgb2Ygd2Via2l0QXVkaW9QYW5uZXJO
b2RlLmNvbm5lY3QoQ2hhbm5lbE1lcmdlck5vZGUsIDAsIDEpIG1hdGNoZXMgdGhlIGRlc3RpbmF0
aW9uIENoYW5uZWxNZXJnZXJOb2RlIGlzIGVxdWFsIHRvIHRydWUuIAorUEFTUyAgIFRoZSByZXR1
cm4gdmFsdWUgb2YgUGFubmVyTm9kZS5jb25uZWN0KEdhaW5Ob2RlKSBtYXRjaGVzIHRoZSBkZXN0
aW5hdGlvbiBHYWluTm9kZSBpcyBlcXVhbCB0byB0cnVlLiAKK1BBU1MgICBUaGUgcmV0dXJuIHZh
bHVlIG9mIFBhbm5lck5vZGUuY29ubmVjdChCaXF1YWRGaWx0ZXJOb2RlLCAwKSBtYXRjaGVzIHRo
ZSBkZXN0aW5hdGlvbiBCaXF1YWRGaWx0ZXJOb2RlIGlzIGVxdWFsIHRvIHRydWUuIAorUEFTUyAg
IFRoZSByZXR1cm4gdmFsdWUgb2YgUGFubmVyTm9kZS5jb25uZWN0KENoYW5uZWxNZXJnZXJOb2Rl
LCAwLCAxKSBtYXRjaGVzIHRoZSBkZXN0aW5hdGlvbiBDaGFubmVsTWVyZ2VyTm9kZSBpcyBlcXVh
bCB0byB0cnVlLiAKIFBBU1MgICBUaGUgcmV0dXJuIHZhbHVlIG9mIFNjcmlwdFByb2Nlc3Nvck5v
ZGUuY29ubmVjdChHYWluTm9kZSkgbWF0Y2hlcyB0aGUgZGVzdGluYXRpb24gR2Fpbk5vZGUgaXMg
ZXF1YWwgdG8gdHJ1ZS4gCiBQQVNTICAgVGhlIHJldHVybiB2YWx1ZSBvZiBTY3JpcHRQcm9jZXNz
b3JOb2RlLmNvbm5lY3QoQmlxdWFkRmlsdGVyTm9kZSwgMCkgbWF0Y2hlcyB0aGUgZGVzdGluYXRp
b24gQmlxdWFkRmlsdGVyTm9kZSBpcyBlcXVhbCB0byB0cnVlLiAKIFBBU1MgICBUaGUgcmV0dXJu
IHZhbHVlIG9mIFNjcmlwdFByb2Nlc3Nvck5vZGUuY29ubmVjdChDaGFubmVsTWVyZ2VyTm9kZSwg
MCwgMSkgbWF0Y2hlcyB0aGUgZGVzdGluYXRpb24gQ2hhbm5lbE1lcmdlck5vZGUgaXMgZXF1YWwg
dG8gdHJ1ZS4gCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3dlYmF1ZGlvL3RoZS1hdWRpby1hcGkvdGhlLW9mZmxpbmVhdWRpb2NvbnRleHQt
aW50ZXJmYWNlL29mZmxpbmVhdWRpb2NvbnRleHQtZGV0YWNoZWQtZXhlY3V0aW9uLWNvbnRleHQu
dGVudGF0aXZlLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvd2ViYXVkaW8vdGhlLWF1ZGlvLWFwaS90aGUtb2ZmbGluZWF1ZGlvY29udGV4
dC1pbnRlcmZhY2Uvb2ZmbGluZWF1ZGlvY29udGV4dC1kZXRhY2hlZC1leGVjdXRpb24tY29udGV4
dC50ZW50YXRpdmUtZXhwZWN0ZWQudHh0CmluZGV4IGQzZjBmYTAxMjg0N2FlMzAwNzI0MTFiNmU5
YTNhNGFiODQ1NTJkYzEuLmIyZGEwNzA0NTA0MDhlOTZjNGIxMTE2ZDk0M2QwMjFlNjQ3YzA1MTcg
MTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
d2ViYXVkaW8vdGhlLWF1ZGlvLWFwaS90aGUtb2ZmbGluZWF1ZGlvY29udGV4dC1pbnRlcmZhY2Uv
b2ZmbGluZWF1ZGlvY29udGV4dC1kZXRhY2hlZC1leGVjdXRpb24tY29udGV4dC50ZW50YXRpdmUt
ZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvd2ViYXVkaW8vdGhlLWF1ZGlvLWFwaS90aGUtb2ZmbGluZWF1ZGlvY29udGV4dC1pbnRl
cmZhY2Uvb2ZmbGluZWF1ZGlvY29udGV4dC1kZXRhY2hlZC1leGVjdXRpb24tY29udGV4dC50ZW50
YXRpdmUtZXhwZWN0ZWQudHh0CkBAIC0xLDcgKzEsNyBAQAogCiAKIFBBU1MgIyBBVURJVCBUQVNL
IFJVTk5FUiBTVEFSVEVELiAKLUZBSUwgRXhlY3V0aW5nICJkZWNvZGluZy1vbi1kZXRhY2hlZC1p
ZnJhbWUiIHByb21pc2VfdGVzdDogVW5oYW5kbGVkIHJlamVjdGlvbiB3aXRoIHZhbHVlOiBvYmpl
Y3QgIlR5cGVFcnJvcjogdW5kZWZpbmVkIGlzIG5vdCBhIGNvbnN0cnVjdG9yIChldmFsdWF0aW5n
ICduZXcgaWZyYW1lLmNvbnRlbnRXaW5kb3cuT2ZmbGluZUF1ZGlvQ29udGV4dCgxLCAxLCAzMDAw
KScpIgorRkFJTCBFeGVjdXRpbmcgImRlY29kaW5nLW9uLWRldGFjaGVkLWlmcmFtZSIgcHJvbWlz
ZV90ZXN0OiBVbmhhbmRsZWQgcmVqZWN0aW9uIHdpdGggdmFsdWU6IG9iamVjdCAiU3ludGF4RXJy
b3I6IFRoZSBzdHJpbmcgZGlkIG5vdCBtYXRjaCB0aGUgZXhwZWN0ZWQgcGF0dGVybi4iCiBQQVNT
IEF1ZGl0IHJlcG9ydCAKIFBBU1MgPiBbZGVjb2Rpbmctb24tZGV0YWNoZWQtaWZyYW1lXSAgCiBQ
QVNTICMgQVVESVQgVEFTSyBSVU5ORVIgRklOSVNIRUQ6IDEgdGFza3MgcmFuIHN1Y2Nlc3NmdWxs
eS4gCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9pb3MvanMvZG9tL2NvbnN0cnVj
dG9yLWxlbmd0aC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9pb3MvanMvZG9t
L2NvbnN0cnVjdG9yLWxlbmd0aC1leHBlY3RlZC50eHQKaW5kZXggNTU1ZDIzYjMzZjhiNmU5ZGFj
MDI0ZDA4OGMzNTE2YjdiMmEyYzc3MC4uZGJjYmM3ODhiMjQzYWZhYjAyMDgwZTRkZDU1OTg4Yjli
YjYwZDEyNCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vaW9zL2pzL2RvbS9jb25z
dHJ1Y3Rvci1sZW5ndGgtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2lv
cy9qcy9kb20vY29uc3RydWN0b3ItbGVuZ3RoLWV4cGVjdGVkLnR4dApAQCAtNCw3ICs0LDcgQEAg
T24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9s
bG93ZWQgYnkgIlRFU1QgQ09NUExFVEUKIAogCiBQQVNTIEFycmF5QnVmZmVyLmxlbmd0aCBpcyAx
Ci1GQUlMIEF1ZGlvQ29udGV4dC5sZW5ndGggc2hvdWxkIGJlIDAuIFRocmV3IGV4Y2VwdGlvbiBS
ZWZlcmVuY2VFcnJvcjogQ2FuJ3QgZmluZCB2YXJpYWJsZTogQXVkaW9Db250ZXh0CitQQVNTIEF1
ZGlvQ29udGV4dC5sZW5ndGggaXMgMAogRkFJTCBBdXRvY29tcGxldGVFcnJvckV2ZW50Lmxlbmd0
aCBzaG91bGQgYmUgMS4gVGhyZXcgZXhjZXB0aW9uIFJlZmVyZW5jZUVycm9yOiBDYW4ndCBmaW5k
IHZhcmlhYmxlOiBBdXRvY29tcGxldGVFcnJvckV2ZW50CiBQQVNTIEFuaW1hdGlvbkV2ZW50Lmxl
bmd0aCBpcyAxCiBQQVNTIEJsb2IubGVuZ3RoIGlzIDAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L3BsYXRmb3JtL21hYy9qcy9kb20vY29uc3RydWN0b3ItbGVuZ3RoLWV4cGVjdGVkLnR4dCBiL0xh
eW91dFRlc3RzL3BsYXRmb3JtL21hYy9qcy9kb20vY29uc3RydWN0b3ItbGVuZ3RoLWV4cGVjdGVk
LnR4dAppbmRleCA1NTVkMjNiMzNmOGI2ZTlkYWMwMjRkMDg4YzM1MTZiN2IyYTJjNzcwLi5kYmNi
Yzc4OGIyNDNhZmFiMDIwODBlNGRkNTU5ODhiOWJiNjBkMTI0IDEwMDY0NAotLS0gYS9MYXlvdXRU
ZXN0cy9wbGF0Zm9ybS9tYWMvanMvZG9tL2NvbnN0cnVjdG9yLWxlbmd0aC1leHBlY3RlZC50eHQK
KysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2pzL2RvbS9jb25zdHJ1Y3Rvci1sZW5ndGgt
ZXhwZWN0ZWQudHh0CkBAIC00LDcgKzQsNyBAQCBPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBz
ZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURQogCiAK
IFBBU1MgQXJyYXlCdWZmZXIubGVuZ3RoIGlzIDEKLUZBSUwgQXVkaW9Db250ZXh0Lmxlbmd0aCBz
aG91bGQgYmUgMC4gVGhyZXcgZXhjZXB0aW9uIFJlZmVyZW5jZUVycm9yOiBDYW4ndCBmaW5kIHZh
cmlhYmxlOiBBdWRpb0NvbnRleHQKK1BBU1MgQXVkaW9Db250ZXh0Lmxlbmd0aCBpcyAwCiBGQUlM
IEF1dG9jb21wbGV0ZUVycm9yRXZlbnQubGVuZ3RoIHNob3VsZCBiZSAxLiBUaHJldyBleGNlcHRp
b24gUmVmZXJlbmNlRXJyb3I6IENhbid0IGZpbmQgdmFyaWFibGU6IEF1dG9jb21wbGV0ZUVycm9y
RXZlbnQKIFBBU1MgQW5pbWF0aW9uRXZlbnQubGVuZ3RoIGlzIDEKIFBBU1MgQmxvYi5sZW5ndGgg
aXMgMApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2luL2pzL2RvbS9jb25zdHJ1
Y3Rvci1sZW5ndGgtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2luL2pzL2Rv
bS9jb25zdHJ1Y3Rvci1sZW5ndGgtZXhwZWN0ZWQudHh0CmluZGV4IDlkZGRhZTQ5N2ZhNDliZWFh
MGZlN2M1NjdiNTYwOGQ3NDcxYzAxZTYuLmNiNmQ5OWY1NTRkOTBhMjkxYzAxMGZiYjViYWFkNDJm
ODQ2YmY1OWQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL3dpbi9qcy9kb20vY29u
c3RydWN0b3ItbGVuZ3RoLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93
aW4vanMvZG9tL2NvbnN0cnVjdG9yLWxlbmd0aC1leHBlY3RlZC50eHQKQEAgLTQsNyArNCw3IEBA
IE9uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZv
bGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFCiAKIAogUEFTUyBBcnJheUJ1ZmZlci5sZW5ndGggaXMg
MQotRkFJTCBBdWRpb0NvbnRleHQubGVuZ3RoIHNob3VsZCBiZSAwLiBUaHJldyBleGNlcHRpb24g
UmVmZXJlbmNlRXJyb3I6IENhbid0IGZpbmQgdmFyaWFibGU6IEF1ZGlvQ29udGV4dAorUEFTUyBB
dWRpb0NvbnRleHQubGVuZ3RoIGlzIDAKIEZBSUwgQXV0b2NvbXBsZXRlRXJyb3JFdmVudC5sZW5n
dGggc2hvdWxkIGJlIDEuIFRocmV3IGV4Y2VwdGlvbiBSZWZlcmVuY2VFcnJvcjogQ2FuJ3QgZmlu
ZCB2YXJpYWJsZTogQXV0b2NvbXBsZXRlRXJyb3JFdmVudAogUEFTUyBBbmltYXRpb25FdmVudC5s
ZW5ndGggaXMgMQogUEFTUyBCbG9iLmxlbmd0aCBpcyAwCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>402147</attachid>
            <date>2020-06-17 13:06:52 -0700</date>
            <delta_ts>2020-06-17 13:09:25 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-213268-20200617130651.patch</filename>
            <type>text/plain</type>
            <size>273615</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYzMTYzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzYwNDdkMTUxZDZmMDhm
ZTlmY2ZjYzZiNTNmNDY1YTgzNGMyOGIyZS4uZjY5MGYzYjNkMTMzNDVlMzFmNmFmYTNmOTgzZGFl
NjkyN2NhMzk1NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI5NiBAQAorMjAyMC0wNi0xNyAgQ2hy
aXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBleHBlcmltZW50YWwg
ZmVhdHVyZSBmbGFnIGZvciBtb2Rlcm4gJiB1bnByZWZpeGVkIFdlYkF1ZGlvIEFQSQorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjEzMjY4CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgSmVyIE5vYmxlLgorCisgICAgICAgIEFkZCBleHBlcmltZW50YWwgZmVh
dHVyZSBmbGFnIGZvciBtb2Rlcm4gJiB1bnByZWZpeGVkIFdlYkF1ZGlvIEFQSSwKKyAgICAgICAg
b2ZmIGJ5IGRlZmF1bHQuCisKKyAgICAgICAgVGhpcyBwYXRjaCBzcGxpdCB0aGUgQXVkaW9Db250
ZXh0LCBPZmZsaW5lQXVkaW9Db250ZXh0IGFuZCBQYW5uZXJOb2RlCisgICAgICAgIElETCBpbnRl
cmZhY2VzIGludG8gdGhlaXIgcHJlZml4ZWQgYW5kIHVucHJlZml4ZWQgdmVyc2lvbnMuIFRoZQor
ICAgICAgICB1bnByZWZpeGVkIHZlcnNpb25zIGFyZSBiZWhpbmQgdGhlIG5ldyBleHBlcmltZW50
YWwgZmVhdHVyZSBmbGFnIHRoYXQKKyAgICAgICAgaXMgY3VycmVudGx5IG9mZiBieSBkZWZhdWx0
IGJ1dCBhdXRvbWF0aWNhbGx5IGdldHMgdHVybmVkIG9uIGluIHRoZQorICAgICAgICBjb250ZXh0
IG9mIGxheW91dCB0ZXN0cy4KKworICAgICAgICBUaGlzIHdpbGwgZ2l2ZSB1cyBtb3JlIGZsZXhp
YmlsaXR5IHdoZW4gd29ya2luZyBvbiB0aGUgbW9kZXJuIGFuZAorICAgICAgICB1bnByZWZpeGVk
IFdlYkF1ZGlvIEFQSSBhcyB3ZSB3aWxsIG5vdCBoYXZlIHRvIHdvcnJ5IGFib3V0IGJhY2t3YXJk
CisgICAgICAgIGNvbXBhdGliaWxpdHkuIFRoaXMgYWxzbyBhbGxvd3MgdXMgdG8gZWFzaWx5IHR1
cm4gaXQgb24gb3Igb2ZmIHZpYQorICAgICAgICB0aGUgZXhwZXJpbWVudGFsIGZlYXR1cmVzIG1l
bnUgaW4gU2FmYXJpLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cywgcmViYXNlbGluZWQgZXhpc3Rp
bmcgdGVzdHMuCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBEZXJpdmVk
U291cmNlcy1pbnB1dC54Y2ZpbGVsaXN0OgorICAgICAgICAqIERlcml2ZWRTb3VyY2VzLW91dHB1
dC54Y2ZpbGVsaXN0OgorICAgICAgICAqIERlcml2ZWRTb3VyY2VzLm1ha2U6CisgICAgICAgICog
TW9kdWxlcy93ZWJhdWRpby9BbmFseXNlck5vZGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QW5h
bHlzZXJOb2RlOjpBbmFseXNlck5vZGUpOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vQW5h
bHlzZXJOb2RlLmg6CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9BdWRpb0Jhc2ljSW5zcGVj
dG9yTm9kZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb0Jhc2ljSW5zcGVjdG9yTm9kZTo6
QXVkaW9CYXNpY0luc3BlY3Rvck5vZGUpOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vQXVk
aW9CYXNpY0luc3BlY3Rvck5vZGUuaDoKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL0F1ZGlv
QmFzaWNQcm9jZXNzb3JOb2RlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvQmFzaWNQcm9j
ZXNzb3JOb2RlOjpBdWRpb0Jhc2ljUHJvY2Vzc29yTm9kZSk6CisgICAgICAgICogTW9kdWxlcy93
ZWJhdWRpby9BdWRpb0Jhc2ljUHJvY2Vzc29yTm9kZS5oOgorICAgICAgICAqIE1vZHVsZXMvd2Vi
YXVkaW8vQXVkaW9CdWZmZXJTb3VyY2VOb2RlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlv
QnVmZmVyU291cmNlTm9kZTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvQnVmZmVy
U291cmNlTm9kZTo6QXVkaW9CdWZmZXJTb3VyY2VOb2RlKToKKyAgICAgICAgKFdlYkNvcmU6OkF1
ZGlvQnVmZmVyU291cmNlTm9kZTo6c2V0QnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlv
QnVmZmVyU291cmNlTm9kZTo6c2V0UGFubmVyTm9kZSk6CisgICAgICAgICogTW9kdWxlcy93ZWJh
dWRpby9BdWRpb0J1ZmZlclNvdXJjZU5vZGUuaDoKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlv
L0F1ZGlvQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb0NvbnRleHRCYXNlOjpB
dWRpb0NvbnRleHRCYXNlKToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvQ29udGV4dDo6QXVkaW9D
b250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvQ29udGV4dEJhc2U6OmRvY3VtZW50IGNv
bnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvQ29udGV4dEJhc2U6OnNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQgY29uc3QpOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0
Lmg6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb0NvbnRleHRCYXNlOjpBdXRvTG9ja2VyOjpBdXRv
TG9ja2VyKToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvQ29udGV4dEJhc2U6OkF1dG9Mb2NrZXI6
On5BdXRvTG9ja2VyKToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvQ29udGV4dDo6bWF4TnVtYmVy
T2ZDaGFubmVscyk6CisgICAgICAgIChpc1R5cGUpOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVk
aW8vQXVkaW9Db250ZXh0LmlkbDoKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQ29u
dGV4dFN0YXRlLmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8v
T2ZmbGluZUF1ZGlvQ29udGV4dC5pZGwuCisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9BdWRp
b0NvbnRleHRTdGF0ZS5pZGw6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
YXVkaW8vT2ZmbGluZUF1ZGlvQ29udGV4dC5pZGwuCisgICAgICAgICogTW9kdWxlcy93ZWJhdWRp
by9BdWRpb0Rlc3RpbmF0aW9uTm9kZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb0Rlc3Rp
bmF0aW9uTm9kZTo6QXVkaW9EZXN0aW5hdGlvbk5vZGUpOgorICAgICAgICAqIE1vZHVsZXMvd2Vi
YXVkaW8vQXVkaW9EZXN0aW5hdGlvbk5vZGUuaDoKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlv
L0F1ZGlvTm9kZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb05vZGU6OkF1ZGlvTm9kZSk6
CisgICAgICAgIChXZWJDb3JlOjpBdWRpb05vZGU6OmNvbm5lY3QpOgorICAgICAgICAoV2ViQ29y
ZTo6QXVkaW9Ob2RlOjpkaXNjb25uZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvTm9kZTo6
c2V0Q2hhbm5lbENvdW50KToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvTm9kZTo6c2V0Q2hhbm5l
bENvdW50TW9kZSk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb05vZGU6OnNldENoYW5uZWxJbnRl
cnByZXRhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb05vZGU6OmVuYWJsZU91dHB1dHNJ
Zk5lY2Vzc2FyeSk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb05vZGU6OmRlcmVmKToKKyAgICAg
ICAgKFdlYkNvcmU6OkF1ZGlvTm9kZTo6Y29udGV4dEZvckJpbmRpbmdzIGNvbnN0KToKKyAgICAg
ICAgKiBNb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvTm9kZS5oOgorICAgICAgICAoV2ViQ29yZTo6QXVk
aW9Ob2RlOjpjb250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvTm9kZTo6Y29udGV4dCBj
b25zdCk6CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9BdWRpb05vZGUuaWRsOgorICAgICAg
ICAqIE1vZHVsZXMvd2ViYXVkaW8vQXVkaW9Ob2RlT3V0cHV0Lmg6CisgICAgICAgIChXZWJDb3Jl
OjpBdWRpb05vZGVPdXRwdXQ6OmNvbnRleHQpOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8v
QXVkaW9QYXJhbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb1BhcmFtOjpBdWRpb1BhcmFt
KToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvUGFyYW0uaDoKKyAgICAgICAgKiBN
b2R1bGVzL3dlYmF1ZGlvL0F1ZGlvUGFyYW1UaW1lbGluZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpBdWRpb1BhcmFtVGltZWxpbmU6OnZhbHVlRm9yQ29udGV4dFRpbWUpOgorICAgICAgICAqIE1v
ZHVsZXMvd2ViYXVkaW8vQXVkaW9QYXJhbVRpbWVsaW5lLmg6CisgICAgICAgICogTW9kdWxlcy93
ZWJhdWRpby9BdWRpb1NjaGVkdWxlZFNvdXJjZU5vZGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
QXVkaW9TY2hlZHVsZWRTb3VyY2VOb2RlOjpBdWRpb1NjaGVkdWxlZFNvdXJjZU5vZGUpOgorICAg
ICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vQXVkaW9TY2hlZHVsZWRTb3VyY2VOb2RlLmg6CisgICAg
ICAgICogTW9kdWxlcy93ZWJhdWRpby9BdWRpb1N1bW1pbmdKdW5jdGlvbi5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpBdWRpb1N1bW1pbmdKdW5jdGlvbjo6QXVkaW9TdW1taW5nSnVuY3Rpb24pOgor
ICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vQXVkaW9TdW1taW5nSnVuY3Rpb24uaDoKKyAgICAg
ICAgKFdlYkNvcmU6OkF1ZGlvU3VtbWluZ0p1bmN0aW9uOjpjb250ZXh0KToKKyAgICAgICAgKiBN
b2R1bGVzL3dlYmF1ZGlvL0JpcXVhZEZpbHRlck5vZGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
QmlxdWFkRmlsdGVyTm9kZTo6QmlxdWFkRmlsdGVyTm9kZSk6CisgICAgICAgICogTW9kdWxlcy93
ZWJhdWRpby9CaXF1YWRGaWx0ZXJOb2RlLmg6CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9C
aXF1YWRQcm9jZXNzb3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QmlxdWFkUHJvY2Vzc29yOjpC
aXF1YWRQcm9jZXNzb3IpOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vQmlxdWFkUHJvY2Vz
c29yLmg6CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9DaGFubmVsTWVyZ2VyTm9kZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpDaGFubmVsTWVyZ2VyTm9kZTo6Y3JlYXRlKToKKyAgICAgICAg
KFdlYkNvcmU6OkNoYW5uZWxNZXJnZXJOb2RlOjpDaGFubmVsTWVyZ2VyTm9kZSk6CisgICAgICAg
ICogTW9kdWxlcy93ZWJhdWRpby9DaGFubmVsTWVyZ2VyTm9kZS5oOgorICAgICAgICAqIE1vZHVs
ZXMvd2ViYXVkaW8vQ2hhbm5lbFNwbGl0dGVyTm9kZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpD
aGFubmVsU3BsaXR0ZXJOb2RlOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6Q2hhbm5lbFNw
bGl0dGVyTm9kZTo6Q2hhbm5lbFNwbGl0dGVyTm9kZSk6CisgICAgICAgICogTW9kdWxlcy93ZWJh
dWRpby9DaGFubmVsU3BsaXR0ZXJOb2RlLmg6CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9D
b252b2x2ZXJOb2RlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbnZvbHZlck5vZGU6OkNvbnZv
bHZlck5vZGUpOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vQ29udm9sdmVyTm9kZS5oOgor
ICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vRGVmYXVsdEF1ZGlvRGVzdGluYXRpb25Ob2RlLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkRlZmF1bHRBdWRpb0Rlc3RpbmF0aW9uTm9kZTo6RGVmYXVs
dEF1ZGlvRGVzdGluYXRpb25Ob2RlKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL0RlZmF1
bHRBdWRpb0Rlc3RpbmF0aW9uTm9kZS5oOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vRGVs
YXlOb2RlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRlbGF5Tm9kZTo6RGVsYXlOb2RlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkRlbGF5Tm9kZTo6Y3JlYXRlKToKKyAgICAgICAgKiBNb2R1bGVzL3dl
YmF1ZGlvL0RlbGF5Tm9kZS5oOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vRGVsYXlQcm9j
ZXNzb3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGVsYXlQcm9jZXNzb3I6OkRlbGF5UHJvY2Vz
c29yKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL0RlbGF5UHJvY2Vzc29yLmg6CisgICAg
ICAgICogTW9kdWxlcy93ZWJhdWRpby9EaXN0YW5jZU1vZGVsVHlwZS5oOiBDb3BpZWQgZnJvbSBT
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL09mZmxpbmVBdWRpb0NvbnRleHQuaWRsLgor
ICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vRGlzdGFuY2VNb2RlbFR5cGUuaWRsOiBDb3BpZWQg
ZnJvbSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL09mZmxpbmVBdWRpb0NvbnRleHQu
aWRsLgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vRHluYW1pY3NDb21wcmVzc29yTm9kZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpEeW5hbWljc0NvbXByZXNzb3JOb2RlOjpEeW5hbWljc0Nv
bXByZXNzb3JOb2RlKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL0R5bmFtaWNzQ29tcHJl
c3Nvck5vZGUuaDoKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL0dhaW5Ob2RlLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkdhaW5Ob2RlOjpHYWluTm9kZSk6CisgICAgICAgICogTW9kdWxlcy93
ZWJhdWRpby9HYWluTm9kZS5oOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vTWVkaWFFbGVt
ZW50QXVkaW9Tb3VyY2VOb2RlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhRWxlbWVudEF1
ZGlvU291cmNlTm9kZTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhRWxlbWVudEF1
ZGlvU291cmNlTm9kZTo6TWVkaWFFbGVtZW50QXVkaW9Tb3VyY2VOb2RlKToKKyAgICAgICAgKFdl
YkNvcmU6Ok1lZGlhRWxlbWVudEF1ZGlvU291cmNlTm9kZTo6c2V0Rm9ybWF0KToKKyAgICAgICAg
KiBNb2R1bGVzL3dlYmF1ZGlvL01lZGlhRWxlbWVudEF1ZGlvU291cmNlTm9kZS5oOgorICAgICAg
ICAqIE1vZHVsZXMvd2ViYXVkaW8vTWVkaWFTdHJlYW1BdWRpb0Rlc3RpbmF0aW9uTm9kZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbUF1ZGlvRGVzdGluYXRpb25Ob2RlOjpjcmVh
dGUpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTdHJlYW1BdWRpb0Rlc3RpbmF0aW9uTm9kZTo6
TWVkaWFTdHJlYW1BdWRpb0Rlc3RpbmF0aW9uTm9kZSk6CisgICAgICAgICogTW9kdWxlcy93ZWJh
dWRpby9NZWRpYVN0cmVhbUF1ZGlvRGVzdGluYXRpb25Ob2RlLmg6CisgICAgICAgICogTW9kdWxl
cy93ZWJhdWRpby9NZWRpYVN0cmVhbUF1ZGlvU291cmNlTm9kZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpNZWRpYVN0cmVhbUF1ZGlvU291cmNlTm9kZTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNv
cmU6Ok1lZGlhU3RyZWFtQXVkaW9Tb3VyY2VOb2RlOjpNZWRpYVN0cmVhbUF1ZGlvU291cmNlTm9k
ZSk6CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9NZWRpYVN0cmVhbUF1ZGlvU291cmNlTm9k
ZS5oOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vT2ZmbGluZUF1ZGlvQ29udGV4dC5pZGw6
CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9PZmZsaW5lQXVkaW9EZXN0aW5hdGlvbk5vZGUu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6T2ZmbGluZUF1ZGlvRGVzdGluYXRpb25Ob2RlOjpPZmZs
aW5lQXVkaW9EZXN0aW5hdGlvbk5vZGUpOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vT2Zm
bGluZUF1ZGlvRGVzdGluYXRpb25Ob2RlLmg6CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9P
c2NpbGxhdG9yTm9kZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpPc2NpbGxhdG9yTm9kZTo6Y3Jl
YXRlKToKKyAgICAgICAgKFdlYkNvcmU6Ok9zY2lsbGF0b3JOb2RlOjpPc2NpbGxhdG9yTm9kZSk6
CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9Pc2NpbGxhdG9yTm9kZS5oOgorICAgICAgICAq
IE1vZHVsZXMvd2ViYXVkaW8vUGFubmVyTm9kZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQYW5u
ZXJOb2RlQmFzZTo6UGFubmVyTm9kZUJhc2UpOgorICAgICAgICAoV2ViQ29yZTo6UGFubmVyTm9k
ZTo6UGFubmVyTm9kZSk6CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9QYW5uZXJOb2RlLmg6
CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9QYW5uZXJOb2RlLmlkbDoKKyAgICAgICAgKiBN
b2R1bGVzL3dlYmF1ZGlvL1Bhbm5pbmdNb2RlbFR5cGUuaDogQ29waWVkIGZyb20gU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJhdWRpby9PZmZsaW5lQXVkaW9Db250ZXh0LmlkbC4KKyAgICAgICAg
KiBNb2R1bGVzL3dlYmF1ZGlvL1Bhbm5pbmdNb2RlbFR5cGUuaWRsOiBDb3BpZWQgZnJvbSBTb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL09mZmxpbmVBdWRpb0NvbnRleHQuaWRsLgorICAg
ICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vU2NyaXB0UHJvY2Vzc29yTm9kZS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpTY3JpcHRQcm9jZXNzb3JOb2RlOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29y
ZTo6U2NyaXB0UHJvY2Vzc29yTm9kZTo6U2NyaXB0UHJvY2Vzc29yTm9kZSk6CisgICAgICAgICog
TW9kdWxlcy93ZWJhdWRpby9TY3JpcHRQcm9jZXNzb3JOb2RlLmg6CisgICAgICAgICogTW9kdWxl
cy93ZWJhdWRpby9XYXZlU2hhcGVyTm9kZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXYXZlU2hh
cGVyTm9kZTo6V2F2ZVNoYXBlck5vZGUpOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vV2F2
ZVNoYXBlck5vZGUuaDoKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL1dlYktpdEF1ZGlvQ29u
dGV4dC5jcHA6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVk
aW9Db250ZXh0LmNwcC4KKyAgICAgICAgKFdlYkNvcmU6OldlYktpdEF1ZGlvQ29udGV4dDo6aXNT
YW1wbGVSYXRlUmFuZ2VHb29kKToKKyAgICAgICAgKFdlYkNvcmU6OldlYktpdEF1ZGlvQ29udGV4
dDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OldlYktpdEF1ZGlvQ29udGV4dDo6V2ViS2l0
QXVkaW9Db250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OldlYktpdEF1ZGlvQ29udGV4dDo6Y29u
c3RydWN0Q29tbW9uKToKKyAgICAgICAgKFdlYkNvcmU6OldlYktpdEF1ZGlvQ29udGV4dDo6fldl
YktpdEF1ZGlvQ29udGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJLaXRBdWRpb0NvbnRleHQ6
OmxhenlJbml0aWFsaXplKToKKyAgICAgICAgKFdlYkNvcmU6OldlYktpdEF1ZGlvQ29udGV4dDo6
Y2xlYXIpOgorICAgICAgICAoV2ViQ29yZTo6V2ViS2l0QXVkaW9Db250ZXh0Ojp1bmluaXRpYWxp
emUpOgorICAgICAgICAoV2ViQ29yZTo6V2ViS2l0QXVkaW9Db250ZXh0Ojppc0luaXRpYWxpemVk
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OldlYktpdEF1ZGlvQ29udGV4dDo6YWRkUmVhY3Rp
b24pOgorICAgICAgICAoV2ViQ29yZTo6V2ViS2l0QXVkaW9Db250ZXh0OjpzZXRTdGF0ZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpXZWJLaXRBdWRpb0NvbnRleHQ6OnN0b3ApOgorICAgICAgICAoV2Vi
Q29yZTo6V2ViS2l0QXVkaW9Db250ZXh0OjpzdXNwZW5kKToKKyAgICAgICAgKFdlYkNvcmU6Oldl
YktpdEF1ZGlvQ29udGV4dDo6cmVzdW1lKToKKyAgICAgICAgKFdlYkNvcmU6OldlYktpdEF1ZGlv
Q29udGV4dDo6YWN0aXZlRE9NT2JqZWN0TmFtZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpX
ZWJLaXRBdWRpb0NvbnRleHQ6Omhvc3RpbmdEb2N1bWVudElkZW50aWZpZXIgY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6V2ViS2l0QXVkaW9Db250ZXh0Ojppc1N1c3BlbmRlZCBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpXZWJLaXRBdWRpb0NvbnRleHQ6OnZpc2liaWxpdHlTdGF0ZUNoYW5n
ZWQpOgorICAgICAgICAoV2ViQ29yZTo6V2ViS2l0QXVkaW9Db250ZXh0Ojp3b3VsZFRhaW50T3Jp
Z2luIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OldlYktpdEF1ZGlvQ29udGV4dDo6Y3JlYXRl
QnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OldlYktpdEF1ZGlvQ29udGV4dDo6ZGVjb2RlQXVk
aW9EYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OldlYktpdEF1ZGlvQ29udGV4dDo6Y3JlYXRlQnVm
ZmVyU291cmNlKToKKyAgICAgICAgKFdlYkNvcmU6OldlYktpdEF1ZGlvQ29udGV4dDo6Y3JlYXRl
TWVkaWFFbGVtZW50U291cmNlKToKKyAgICAgICAgKFdlYkNvcmU6OldlYktpdEF1ZGlvQ29udGV4
dDo6Y3JlYXRlTWVkaWFTdHJlYW1Tb3VyY2UpOgorICAgICAgICAoV2ViQ29yZTo6V2ViS2l0QXVk
aW9Db250ZXh0OjpjcmVhdGVNZWRpYVN0cmVhbURlc3RpbmF0aW9uKToKKyAgICAgICAgKFdlYkNv
cmU6OldlYktpdEF1ZGlvQ29udGV4dDo6Y3JlYXRlU2NyaXB0UHJvY2Vzc29yKToKKyAgICAgICAg
KFdlYkNvcmU6OldlYktpdEF1ZGlvQ29udGV4dDo6Y3JlYXRlQmlxdWFkRmlsdGVyKToKKyAgICAg
ICAgKFdlYkNvcmU6OldlYktpdEF1ZGlvQ29udGV4dDo6Y3JlYXRlV2F2ZVNoYXBlcik6CisgICAg
ICAgIChXZWJDb3JlOjpXZWJLaXRBdWRpb0NvbnRleHQ6OmNyZWF0ZVBhbm5lcik6CisgICAgICAg
IChXZWJDb3JlOjpXZWJLaXRBdWRpb0NvbnRleHQ6OmNyZWF0ZUNvbnZvbHZlcik6CisgICAgICAg
IChXZWJDb3JlOjpXZWJLaXRBdWRpb0NvbnRleHQ6OmNyZWF0ZUR5bmFtaWNzQ29tcHJlc3Nvcik6
CisgICAgICAgIChXZWJDb3JlOjpXZWJLaXRBdWRpb0NvbnRleHQ6OmNyZWF0ZUFuYWx5c2VyKToK
KyAgICAgICAgKFdlYkNvcmU6OldlYktpdEF1ZGlvQ29udGV4dDo6Y3JlYXRlR2Fpbik6CisgICAg
ICAgIChXZWJDb3JlOjpXZWJLaXRBdWRpb0NvbnRleHQ6OmNyZWF0ZURlbGF5KToKKyAgICAgICAg
KFdlYkNvcmU6OldlYktpdEF1ZGlvQ29udGV4dDo6Y3JlYXRlQ2hhbm5lbFNwbGl0dGVyKToKKyAg
ICAgICAgKFdlYkNvcmU6OldlYktpdEF1ZGlvQ29udGV4dDo6Y3JlYXRlQ2hhbm5lbE1lcmdlcik6
CisgICAgICAgIChXZWJDb3JlOjpXZWJLaXRBdWRpb0NvbnRleHQ6OmNyZWF0ZU9zY2lsbGF0b3Ip
OgorICAgICAgICAoV2ViQ29yZTo6V2ViS2l0QXVkaW9Db250ZXh0OjpjcmVhdGVQZXJpb2RpY1dh
dmUpOgorICAgICAgICAoV2ViQ29yZTo6V2ViS2l0QXVkaW9Db250ZXh0Ojpub3RpZnlOb2RlRmlu
aXNoZWRQcm9jZXNzaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OldlYktpdEF1ZGlvQ29udGV4dDo6
ZGVyZWZGaW5pc2hlZFNvdXJjZU5vZGVzKToKKyAgICAgICAgKFdlYkNvcmU6OldlYktpdEF1ZGlv
Q29udGV4dDo6cmVmTm9kZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJLaXRBdWRpb0NvbnRleHQ6
OmRlcmVmTm9kZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJLaXRBdWRpb0NvbnRleHQ6OmRlcmVm
VW5maW5pc2hlZFNvdXJjZU5vZGVzKToKKyAgICAgICAgKFdlYkNvcmU6OldlYktpdEF1ZGlvQ29u
dGV4dDo6bG9jayk6CisgICAgICAgIChXZWJDb3JlOjpXZWJLaXRBdWRpb0NvbnRleHQ6OnRyeUxv
Y2spOgorICAgICAgICAoV2ViQ29yZTo6V2ViS2l0QXVkaW9Db250ZXh0Ojp1bmxvY2spOgorICAg
ICAgICAoV2ViQ29yZTo6V2ViS2l0QXVkaW9Db250ZXh0Ojppc0F1ZGlvVGhyZWFkIGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6OldlYktpdEF1ZGlvQ29udGV4dDo6aXNHcmFwaE93bmVyIGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6OldlYktpdEF1ZGlvQ29udGV4dDo6YWRkRGVmZXJyZWRGaW5p
c2hEZXJlZik6CisgICAgICAgIChXZWJDb3JlOjpXZWJLaXRBdWRpb0NvbnRleHQ6OmhhbmRsZVBy
ZVJlbmRlclRhc2tzKToKKyAgICAgICAgKFdlYkNvcmU6OldlYktpdEF1ZGlvQ29udGV4dDo6aGFu
ZGxlUG9zdFJlbmRlclRhc2tzKToKKyAgICAgICAgKFdlYkNvcmU6OldlYktpdEF1ZGlvQ29udGV4
dDo6aGFuZGxlRGVmZXJyZWRGaW5pc2hEZXJlZnMpOgorICAgICAgICAoV2ViQ29yZTo6V2ViS2l0
QXVkaW9Db250ZXh0OjptYXJrRm9yRGVsZXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6V2ViS2l0
QXVkaW9Db250ZXh0OjpzY2hlZHVsZU5vZGVEZWxldGlvbik6CisgICAgICAgIChXZWJDb3JlOjpX
ZWJLaXRBdWRpb0NvbnRleHQ6OmRlbGV0ZU1hcmtlZE5vZGVzKToKKyAgICAgICAgKFdlYkNvcmU6
OldlYktpdEF1ZGlvQ29udGV4dDo6bWFya1N1bW1pbmdKdW5jdGlvbkRpcnR5KToKKyAgICAgICAg
KFdlYkNvcmU6OldlYktpdEF1ZGlvQ29udGV4dDo6cmVtb3ZlTWFya2VkU3VtbWluZ0p1bmN0aW9u
KToKKyAgICAgICAgKFdlYkNvcmU6OldlYktpdEF1ZGlvQ29udGV4dDo6bWFya0F1ZGlvTm9kZU91
dHB1dERpcnR5KToKKyAgICAgICAgKFdlYkNvcmU6OldlYktpdEF1ZGlvQ29udGV4dDo6aGFuZGxl
RGlydHlBdWRpb1N1bW1pbmdKdW5jdGlvbnMpOgorICAgICAgICAoV2ViQ29yZTo6V2ViS2l0QXVk
aW9Db250ZXh0OjpoYW5kbGVEaXJ0eUF1ZGlvTm9kZU91dHB1dHMpOgorICAgICAgICAoV2ViQ29y
ZTo6V2ViS2l0QXVkaW9Db250ZXh0OjphZGRBdXRvbWF0aWNQdWxsTm9kZSk6CisgICAgICAgIChX
ZWJDb3JlOjpXZWJLaXRBdWRpb0NvbnRleHQ6OnJlbW92ZUF1dG9tYXRpY1B1bGxOb2RlKToKKyAg
ICAgICAgKFdlYkNvcmU6OldlYktpdEF1ZGlvQ29udGV4dDo6dXBkYXRlQXV0b21hdGljUHVsbE5v
ZGVzKToKKyAgICAgICAgKFdlYkNvcmU6OldlYktpdEF1ZGlvQ29udGV4dDo6cHJvY2Vzc0F1dG9t
YXRpY1B1bGxOb2Rlcyk6CisgICAgICAgIChXZWJDb3JlOjpXZWJLaXRBdWRpb0NvbnRleHQ6Om5v
ZGVXaWxsQmVnaW5QbGF5YmFjayk6CisgICAgICAgIChXZWJDb3JlOjpzaG91bGREb2N1bWVudEFs
bG93V2ViQXVkaW9Ub0F1dG9QbGF5KToKKyAgICAgICAgKFdlYkNvcmU6OldlYktpdEF1ZGlvQ29u
dGV4dDo6d2lsbEJlZ2luUGxheWJhY2spOgorICAgICAgICAoV2ViQ29yZTo6V2ViS2l0QXVkaW9D
b250ZXh0Ojp3aWxsUGF1c2VQbGF5YmFjayk6CisgICAgICAgIChXZWJDb3JlOjpXZWJLaXRBdWRp
b0NvbnRleHQ6OnN0YXJ0UmVuZGVyaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OldlYktpdEF1ZGlv
Q29udGV4dDo6bWVkaWFDYW5TdGFydCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJLaXRBdWRpb0Nv
bnRleHQ6Om1lZGlhU3RhdGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6V2ViS2l0QXVkaW9D
b250ZXh0OjpwYWdlTXV0ZWRTdGF0ZURpZENoYW5nZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJL
aXRBdWRpb0NvbnRleHQ6OmlzUGxheWluZ0F1ZGlvRGlkQ2hhbmdlKToKKyAgICAgICAgKFdlYkNv
cmU6OldlYktpdEF1ZGlvQ29udGV4dDo6ZmluaXNoZWRSZW5kZXJpbmcpOgorICAgICAgICAoV2Vi
Q29yZTo6V2ViS2l0QXVkaW9Db250ZXh0OjpkaXNwYXRjaEV2ZW50KToKKyAgICAgICAgKFdlYkNv
cmU6OldlYktpdEF1ZGlvQ29udGV4dDo6aW5jcmVtZW50QWN0aXZlU291cmNlQ291bnQpOgorICAg
ICAgICAoV2ViQ29yZTo6V2ViS2l0QXVkaW9Db250ZXh0OjpkZWNyZW1lbnRBY3RpdmVTb3VyY2VD
b3VudCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJLaXRBdWRpb0NvbnRleHQ6OnN1c3BlbmRSZW5k
ZXJpbmcpOgorICAgICAgICAoV2ViQ29yZTo6V2ViS2l0QXVkaW9Db250ZXh0OjpyZXN1bWVSZW5k
ZXJpbmcpOgorICAgICAgICAoV2ViQ29yZTo6V2ViS2l0QXVkaW9Db250ZXh0OjpjbG9zZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpXZWJLaXRBdWRpb0NvbnRleHQ6OnN1c3BlbmRQbGF5YmFjayk6Cisg
ICAgICAgIChXZWJDb3JlOjpXZWJLaXRBdWRpb0NvbnRleHQ6Om1heVJlc3VtZVBsYXliYWNrKToK
KyAgICAgICAgKFdlYkNvcmU6OldlYktpdEF1ZGlvQ29udGV4dDo6cG9zdFRhc2spOgorICAgICAg
ICAoV2ViQ29yZTo6V2ViS2l0QXVkaW9Db250ZXh0OjpvcmlnaW4gY29uc3QpOgorICAgICAgICAo
V2ViQ29yZTo6V2ViS2l0QXVkaW9Db250ZXh0OjphZGRDb25zb2xlTWVzc2FnZSk6CisgICAgICAg
IChXZWJDb3JlOjpXZWJLaXRBdWRpb0NvbnRleHQ6OmNsZWFyUGVuZGluZ0FjdGl2aXR5KToKKyAg
ICAgICAgKFdlYkNvcmU6OldlYktpdEF1ZGlvQ29udGV4dDo6bWFrZVBlbmRpbmdBY3Rpdml0eSk6
CisgICAgICAgIChXZWJDb3JlOjpXZWJLaXRBdWRpb0NvbnRleHQ6OmxvZ0NoYW5uZWwgY29uc3Qp
OgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vV2ViS2l0QXVkaW9Db250ZXh0Lmg6IENvcGll
ZCBmcm9tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0LmguCisg
ICAgICAgIChXZWJDb3JlOjpXZWJLaXRBdWRpb0NvbnRleHQ6OmRlc3RpbmF0aW9uKToKKyAgICAg
ICAgKFdlYkNvcmU6OldlYktpdEF1ZGlvQ29udGV4dDo6YWN0aXZlU291cmNlQ291bnQgY29uc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6V2ViS2l0QXVkaW9Db250ZXh0OjpsaXN0ZW5lcik6CisgICAg
ICAgIChXZWJDb3JlOjpXZWJLaXRBdWRpb0NvbnRleHQ6OmlzQ2xvc2VkIGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OldlYktpdEF1ZGlvQ29udGV4dDo6Y29ubmVjdGlvbkNvdW50IGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6OldlYktpdEF1ZGlvQ29udGV4dDo6YXVkaW9UaHJlYWQgY29uc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6V2ViS2l0QXVkaW9Db250ZXh0OjptYXhOdW1iZXJPZkNoYW5u
ZWxzKToKKyAgICAgICAgKFdlYkNvcmU6OldlYktpdEF1ZGlvQ29udGV4dDo6dXNlckdlc3R1cmVS
ZXF1aXJlZEZvckF1ZGlvU3RhcnQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6V2ViS2l0QXVk
aW9Db250ZXh0OjpwYWdlQ29uc2VudFJlcXVpcmVkRm9yQXVkaW9TdGFydCBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpXZWJLaXRBdWRpb0NvbnRleHQ6OnN0YXRlIGNvbnN0KToKKyAgICAgICAg
KGlzVHlwZSk6CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9XZWJLaXRBdWRpb0NvbnRleHQu
aWRsOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQ29u
dGV4dC5pZGwuCisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9XZWJLaXRBdWRpb1Bhbm5lck5v
ZGUuY3BwOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1Bhbm5l
ck5vZGUuY3BwLgorICAgICAgICAoV2ViQ29yZTo6Zml4TkFOcyk6CisgICAgICAgIChXZWJDb3Jl
OjpXZWJLaXRBdWRpb1Bhbm5lck5vZGU6OldlYktpdEF1ZGlvUGFubmVyTm9kZSk6CisgICAgICAg
IChXZWJDb3JlOjpXZWJLaXRBdWRpb1Bhbm5lck5vZGU6On5XZWJLaXRBdWRpb1Bhbm5lck5vZGUp
OgorICAgICAgICAoV2ViQ29yZTo6V2ViS2l0QXVkaW9QYW5uZXJOb2RlOjpwdWxsSW5wdXRzKToK
KyAgICAgICAgKFdlYkNvcmU6OldlYktpdEF1ZGlvUGFubmVyTm9kZTo6cHJvY2Vzcyk6CisgICAg
ICAgIChXZWJDb3JlOjpXZWJLaXRBdWRpb1Bhbm5lck5vZGU6OnJlc2V0KToKKyAgICAgICAgKFdl
YkNvcmU6OldlYktpdEF1ZGlvUGFubmVyTm9kZTo6aW5pdGlhbGl6ZSk6CisgICAgICAgIChXZWJD
b3JlOjpXZWJLaXRBdWRpb1Bhbm5lck5vZGU6OnVuaW5pdGlhbGl6ZSk6CisgICAgICAgIChXZWJD
b3JlOjpXZWJLaXRBdWRpb1Bhbm5lck5vZGU6Omxpc3RlbmVyKToKKyAgICAgICAgKFdlYkNvcmU6
OldlYktpdEF1ZGlvUGFubmVyTm9kZTo6c2V0UGFubmluZ01vZGVsKToKKyAgICAgICAgKFdlYkNv
cmU6OldlYktpdEF1ZGlvUGFubmVyTm9kZTo6ZGlzdGFuY2VNb2RlbCBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpXZWJLaXRBdWRpb1Bhbm5lck5vZGU6OnNldERpc3RhbmNlTW9kZWwpOgorICAg
ICAgICAoV2ViQ29yZTo6V2ViS2l0QXVkaW9QYW5uZXJOb2RlOjpnZXRBemltdXRoRWxldmF0aW9u
KToKKyAgICAgICAgKFdlYkNvcmU6OldlYktpdEF1ZGlvUGFubmVyTm9kZTo6ZG9wcGxlclJhdGUp
OgorICAgICAgICAoV2ViQ29yZTo6V2ViS2l0QXVkaW9QYW5uZXJOb2RlOjpkaXN0YW5jZUNvbmVH
YWluKToKKyAgICAgICAgKFdlYkNvcmU6OldlYktpdEF1ZGlvUGFubmVyTm9kZTo6bm90aWZ5QXVk
aW9Tb3VyY2VzQ29ubmVjdGVkVG9Ob2RlKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL1dl
YktpdEF1ZGlvUGFubmVyTm9kZS5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmF1ZGlvL1Bhbm5lck5vZGUuaC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL1dlYktp
dEF1ZGlvUGFubmVyTm9kZS5pZGw6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViYXVkaW8vUGFubmVyTm9kZS5pZGwuCisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9XZWJL
aXRPZmZsaW5lQXVkaW9Db250ZXh0LmNwcDogQ29waWVkIGZyb20gU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJhdWRpby9EZWxheU5vZGUuY3BwLgorICAgICAgICAoV2ViQ29yZTo6V2ViS2l0T2Zm
bGluZUF1ZGlvQ29udGV4dDo6V2ViS2l0T2ZmbGluZUF1ZGlvQ29udGV4dCk6CisgICAgICAgIChX
ZWJDb3JlOjpXZWJLaXRPZmZsaW5lQXVkaW9Db250ZXh0OjpjcmVhdGUpOgorICAgICAgICAqIE1v
ZHVsZXMvd2ViYXVkaW8vV2ViS2l0T2ZmbGluZUF1ZGlvQ29udGV4dC5oOiBDb3BpZWQgZnJvbSBT
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0RlbGF5Tm9kZS5oLgorICAgICAgICAqIE1v
ZHVsZXMvd2ViYXVkaW8vV2ViS2l0T2ZmbGluZUF1ZGlvQ29udGV4dC5pZGw6IENvcGllZCBmcm9t
IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vT2ZmbGluZUF1ZGlvQ29udGV4dC5pZGwu
CisgICAgICAgICogU291cmNlcy50eHQ6CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qOgorICAgICAgICAqIGJpbmRpbmdzL2pzL1dlYkNvcmVCdWlsdGluTmFtZXMu
aDoKKyAgICAgICAgKiBkb20vRXZlbnRUYXJnZXRGYWN0b3J5LmluOgorICAgICAgICAqIHBhZ2Uv
U2V0dGluZ3MueWFtbDoKKyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFscy5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpJbnRlcm5hbHM6OnNldEF1ZGlvQ29udGV4dFJlc3RyaWN0aW9ucyk6CisgICAg
ICAgICogdGVzdGluZy9JbnRlcm5hbHMuaDoKKyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFscy5p
ZGw6CisKIDIwMjAtMDYtMTcgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAg
ICAgICBVbnJldmlld2VkIGF0dGVtcHQgdG8gZml4IGludGVybmFsIG1hY09TIGJ1aWxkIGFmdGVy
IHIyNjMxNTcuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9X
ZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDk4ODczODE3NDljOGNiNDAxNjNlNjdkYTA0MDg4MWFlNmY2
M2Q4NjEuLmUyMjNkYWE3Njc4ZTc4YmVmZjE4ZDQ3MjdlZWMzOGFhYWFjY2E0NmEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMTUgQEAKKzIwMjAtMDYtMTcgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxl
LmNvbT4KKworICAgICAgICBBZGQgZXhwZXJpbWVudGFsIGZlYXR1cmUgZmxhZyBmb3IgbW9kZXJu
ICYgdW5wcmVmaXhlZCBXZWJBdWRpbyBBUEkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTIxMzI2OAorCisgICAgICAgIFJldmlld2VkIGJ5IEplciBOb2Js
ZS4KKworICAgICAgICBBZGQgZXhwZXJpbWVudGFsIGZlYXR1cmUgZmxhZyBmb3IgbW9kZXJuICYg
dW5wcmVmaXhlZCBXZWJBdWRpbyBBUEksCisgICAgICAgIG9mZiBieSBkZWZhdWx0LgorCisgICAg
ICAgICogU2hhcmVkL1dlYlByZWZlcmVuY2VzLnlhbWw6CisKIDIwMjAtMDYtMTcgIERhcnJ5bCBQ
b2d1ZSAgPGRhcnJ5bEBkcG9ndWUuY2E+CiAKICAgICAgICAgSW5kZXhlZERCOiBTdXBwb3J0IElE
QkZhY3RvcnkgZGF0YWJhc2VzIG1ldGhvZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ01h
a2VMaXN0cy50eHQgYi9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAppbmRleCA5NzU5NDg5
NWQ4YzdhYzI4MTE4Yzk3YzRmMTlhZTViNmFiODkxYzllLi4zOTlhNmJkM2ZkMDk2YzUxMTc4ODFj
OTI1NzY5MTUwNTEzM2MzMDExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3Rz
LnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dApAQCAtNDMzLDYgKzQzMyw3
IEBAIHNldChXZWJDb3JlX05PTl9TVkdfSURMX0ZJTEVTCiAgICAgTW9kdWxlcy93ZWJhdWRpby9B
dWRpb0J1ZmZlckNhbGxiYWNrLmlkbAogICAgIE1vZHVsZXMvd2ViYXVkaW8vQXVkaW9CdWZmZXJT
b3VyY2VOb2RlLmlkbAogICAgIE1vZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0LmlkbAorICAg
IE1vZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0U3RhdGUuaWRsCiAgICAgTW9kdWxlcy93ZWJh
dWRpby9BdWRpb0Rlc3RpbmF0aW9uTm9kZS5pZGwKICAgICBNb2R1bGVzL3dlYmF1ZGlvL0F1ZGlv
TGlzdGVuZXIuaWRsCiAgICAgTW9kdWxlcy93ZWJhdWRpby9BdWRpb05vZGUuaWRsCkBAIC00NDMs
NiArNDQ0LDcgQEAgc2V0KFdlYkNvcmVfTk9OX1NWR19JRExfRklMRVMKICAgICBNb2R1bGVzL3dl
YmF1ZGlvL0NoYW5uZWxTcGxpdHRlck5vZGUuaWRsCiAgICAgTW9kdWxlcy93ZWJhdWRpby9Db252
b2x2ZXJOb2RlLmlkbAogICAgIE1vZHVsZXMvd2ViYXVkaW8vRGVsYXlOb2RlLmlkbAorICAgIE1v
ZHVsZXMvd2ViYXVkaW8vRGlzdGFuY2VNb2RlbFR5cGUuaWRsCiAgICAgTW9kdWxlcy93ZWJhdWRp
by9EeW5hbWljc0NvbXByZXNzb3JOb2RlLmlkbAogICAgIE1vZHVsZXMvd2ViYXVkaW8vR2Fpbk5v
ZGUuaWRsCiAgICAgTW9kdWxlcy93ZWJhdWRpby9NZWRpYUVsZW1lbnRBdWRpb1NvdXJjZU5vZGUu
aWRsCkBAIC00NTIsOSArNDU0LDEzIEBAIHNldChXZWJDb3JlX05PTl9TVkdfSURMX0ZJTEVTCiAg
ICAgTW9kdWxlcy93ZWJhdWRpby9PZmZsaW5lQXVkaW9Db250ZXh0LmlkbAogICAgIE1vZHVsZXMv
d2ViYXVkaW8vT3NjaWxsYXRvck5vZGUuaWRsCiAgICAgTW9kdWxlcy93ZWJhdWRpby9QYW5uZXJO
b2RlLmlkbAorICAgIE1vZHVsZXMvd2ViYXVkaW8vUGFubmluZ01vZGVsVHlwZS5pZGwKICAgICBN
b2R1bGVzL3dlYmF1ZGlvL1BlcmlvZGljV2F2ZS5pZGwKICAgICBNb2R1bGVzL3dlYmF1ZGlvL1Nj
cmlwdFByb2Nlc3Nvck5vZGUuaWRsCiAgICAgTW9kdWxlcy93ZWJhdWRpby9XYXZlU2hhcGVyTm9k
ZS5pZGwKKyAgICBNb2R1bGVzL3dlYmF1ZGlvL1dlYktpdEF1ZGlvQ29udGV4dC5pZGwKKyAgICBN
b2R1bGVzL3dlYmF1ZGlvL1dlYktpdEF1ZGlvUGFubmVyTm9kZS5pZGwKKyAgICBNb2R1bGVzL3dl
YmF1ZGlvL1dlYktpdE9mZmxpbmVBdWRpb0NvbnRleHQuaWRsCiAKICAgICBNb2R1bGVzL3dlYmF1
dGhuL0F0dGVzdGF0aW9uQ29udmV5YW5jZVByZWZlcmVuY2UuaWRsCiAgICAgTW9kdWxlcy93ZWJh
dXRobi9BdXRoZW50aWNhdGlvbkV4dGVuc2lvbnNDbGllbnRJbnB1dHMuaWRsCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy1pbnB1dC54Y2ZpbGVsaXN0IGIvU291cmNl
L1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMtaW5wdXQueGNmaWxlbGlzdAppbmRleCA2YTdhYTdkMTRl
YmI0MzdkNzQxZWMyZWY4NTMzNzc1ZDM0NGQ0NjU0Li5mN2Q2NGMxOTNkMGU3ZGYyODE2NWJkZDc0
YTQwZDNmOTBlNmE4MjEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNl
cy1pbnB1dC54Y2ZpbGVsaXN0CisrKyBiL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLWlu
cHV0LnhjZmlsZWxpc3QKQEAgLTMwMCw2ICszMDAsNyBAQCAkKFBST0pFQ1RfRElSKS9Nb2R1bGVz
L3dlYmF1ZGlvL0F1ZGlvQnVmZmVyLmlkbAogJChQUk9KRUNUX0RJUikvTW9kdWxlcy93ZWJhdWRp
by9BdWRpb0J1ZmZlckNhbGxiYWNrLmlkbAogJChQUk9KRUNUX0RJUikvTW9kdWxlcy93ZWJhdWRp
by9BdWRpb0J1ZmZlclNvdXJjZU5vZGUuaWRsCiAkKFBST0pFQ1RfRElSKS9Nb2R1bGVzL3dlYmF1
ZGlvL0F1ZGlvQ29udGV4dC5pZGwKKyQoUFJPSkVDVF9ESVIpL01vZHVsZXMvd2ViYXVkaW8vQXVk
aW9Db250ZXh0U3RhdGUuaWRsCiAkKFBST0pFQ1RfRElSKS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlv
RGVzdGluYXRpb25Ob2RlLmlkbAogJChQUk9KRUNUX0RJUikvTW9kdWxlcy93ZWJhdWRpby9BdWRp
b0xpc3RlbmVyLmlkbAogJChQUk9KRUNUX0RJUikvTW9kdWxlcy93ZWJhdWRpby9BdWRpb05vZGUu
aWRsCkBAIC0zMTAsNiArMzExLDcgQEAgJChQUk9KRUNUX0RJUikvTW9kdWxlcy93ZWJhdWRpby9D
aGFubmVsTWVyZ2VyTm9kZS5pZGwKICQoUFJPSkVDVF9ESVIpL01vZHVsZXMvd2ViYXVkaW8vQ2hh
bm5lbFNwbGl0dGVyTm9kZS5pZGwKICQoUFJPSkVDVF9ESVIpL01vZHVsZXMvd2ViYXVkaW8vQ29u
dm9sdmVyTm9kZS5pZGwKICQoUFJPSkVDVF9ESVIpL01vZHVsZXMvd2ViYXVkaW8vRGVsYXlOb2Rl
LmlkbAorJChQUk9KRUNUX0RJUikvTW9kdWxlcy93ZWJhdWRpby9EaXN0YW5jZU1vZGVsVHlwZS5p
ZGwKICQoUFJPSkVDVF9ESVIpL01vZHVsZXMvd2ViYXVkaW8vRHluYW1pY3NDb21wcmVzc29yTm9k
ZS5pZGwKICQoUFJPSkVDVF9ESVIpL01vZHVsZXMvd2ViYXVkaW8vR2Fpbk5vZGUuaWRsCiAkKFBS
T0pFQ1RfRElSKS9Nb2R1bGVzL3dlYmF1ZGlvL01lZGlhRWxlbWVudEF1ZGlvU291cmNlTm9kZS5p
ZGwKQEAgLTMxOSw5ICszMjEsMTMgQEAgJChQUk9KRUNUX0RJUikvTW9kdWxlcy93ZWJhdWRpby9P
ZmZsaW5lQXVkaW9Db21wbGV0aW9uRXZlbnQuaWRsCiAkKFBST0pFQ1RfRElSKS9Nb2R1bGVzL3dl
YmF1ZGlvL09mZmxpbmVBdWRpb0NvbnRleHQuaWRsCiAkKFBST0pFQ1RfRElSKS9Nb2R1bGVzL3dl
YmF1ZGlvL09zY2lsbGF0b3JOb2RlLmlkbAogJChQUk9KRUNUX0RJUikvTW9kdWxlcy93ZWJhdWRp
by9QYW5uZXJOb2RlLmlkbAorJChQUk9KRUNUX0RJUikvTW9kdWxlcy93ZWJhdWRpby9QYW5uaW5n
TW9kZWxUeXBlLmlkbAogJChQUk9KRUNUX0RJUikvTW9kdWxlcy93ZWJhdWRpby9QZXJpb2RpY1dh
dmUuaWRsCiAkKFBST0pFQ1RfRElSKS9Nb2R1bGVzL3dlYmF1ZGlvL1NjcmlwdFByb2Nlc3Nvck5v
ZGUuaWRsCiAkKFBST0pFQ1RfRElSKS9Nb2R1bGVzL3dlYmF1ZGlvL1dhdmVTaGFwZXJOb2RlLmlk
bAorJChQUk9KRUNUX0RJUikvTW9kdWxlcy93ZWJhdWRpby9XZWJLaXRBdWRpb0NvbnRleHQuaWRs
CiskKFBST0pFQ1RfRElSKS9Nb2R1bGVzL3dlYmF1ZGlvL1dlYktpdEF1ZGlvUGFubmVyTm9kZS5p
ZGwKKyQoUFJPSkVDVF9ESVIpL01vZHVsZXMvd2ViYXVkaW8vV2ViS2l0T2ZmbGluZUF1ZGlvQ29u
dGV4dC5pZGwKICQoUFJPSkVDVF9ESVIpL01vZHVsZXMvd2ViYXV0aG4vQXR0ZXN0YXRpb25Db252
ZXlhbmNlUHJlZmVyZW5jZS5pZGwKICQoUFJPSkVDVF9ESVIpL01vZHVsZXMvd2ViYXV0aG4vQXV0
aGVudGljYXRpb25FeHRlbnNpb25zQ2xpZW50SW5wdXRzLmlkbAogJChQUk9KRUNUX0RJUikvTW9k
dWxlcy93ZWJhdXRobi9BdXRoZW50aWNhdGlvbkV4dGVuc2lvbnNDbGllbnRPdXRwdXRzLmlkbApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxp
c3QgYi9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlzdAppbmRl
eCBhMTQzMzYyNTE0MDJmNjgzNmVjODgwNDhmM2UwY2JkOTE0MjZiMDE3Li5jYmM2NDhhZmY4NzJl
MTdjOGFlYjJmM2RjNmU5YmM2Yjc4YzA0NDkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9E
ZXJpdmVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlzdAorKysgYi9Tb3VyY2UvV2ViQ29yZS9EZXJp
dmVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlzdApAQCAtMTU1LDYgKzE1NSw4IEBAICQoQlVJTFRf
UFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTQXVkaW9Db25maWd1cmF0aW9u
LmNwcAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNBdWRp
b0NvbmZpZ3VyYXRpb24uaAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dl
YkNvcmUvSlNBdWRpb0NvbnRleHQuY3BwCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNv
dXJjZXMvV2ViQ29yZS9KU0F1ZGlvQ29udGV4dC5oCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVy
aXZlZFNvdXJjZXMvV2ViQ29yZS9KU0F1ZGlvQ29udGV4dFN0YXRlLmNwcAorJChCVUlMVF9QUk9E
VUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNBdWRpb0NvbnRleHRTdGF0ZS5oCiAk
KEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0F1ZGlvRGVzdGlu
YXRpb25Ob2RlLmNwcAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNv
cmUvSlNBdWRpb0Rlc3RpbmF0aW9uTm9kZS5oCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZl
ZFNvdXJjZXMvV2ViQ29yZS9KU0F1ZGlvTGlzdGVuZXIuY3BwCkBAIC00ODYsNiArNDg4LDggQEAg
JChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNEZXZpY2VPcmll
bnRhdGlvbk9yTW90aW9uRXZlbnQuY3AKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291
cmNlcy9XZWJDb3JlL0pTRGV2aWNlT3JpZW50YXRpb25Pck1vdGlvbkV2ZW50LmgKICQoQlVJTFRf
UFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTRGV2aWNlT3JpZW50YXRpb25P
ck1vdGlvblBlcm1pc3Npb25TdGF0ZS5jcHAKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVk
U291cmNlcy9XZWJDb3JlL0pTRGV2aWNlT3JpZW50YXRpb25Pck1vdGlvblBlcm1pc3Npb25TdGF0
ZS5oCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0Rpc3Rh
bmNlTW9kZWxUeXBlLmNwcAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dl
YkNvcmUvSlNEaXN0YW5jZU1vZGVsVHlwZS5oCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZl
ZFNvdXJjZXMvV2ViQ29yZS9KU0RvY3VtZW50LmNwcAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rl
cml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNEb2N1bWVudC5oCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikv
RGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0RvY3VtZW50QW5kRWxlbWVudEV2ZW50SGFuZGxlcnMu
Y3BwCkBAIC0xMjI0LDYgKzEyMjgsOCBAQCAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNv
dXJjZXMvV2ViQ29yZS9KU1BhaW50V29ya2xldEdsb2JhbFNjb3BlLmNwcAogJChCVUlMVF9QUk9E
VUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNQYWludFdvcmtsZXRHbG9iYWxTY29w
ZS5oCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU1Bhbm5l
ck5vZGUuY3BwCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9K
U1Bhbm5lck5vZGUuaAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNv
cmUvSlNQYW5uaW5nTW9kZWxUeXBlLmNwcAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRT
b3VyY2VzL1dlYkNvcmUvSlNQYW5uaW5nTW9kZWxUeXBlLmgKICQoQlVJTFRfUFJPRFVDVFNfRElS
KS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTUGFyZW50Tm9kZS5jcHAKICQoQlVJTFRfUFJPRFVD
VFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTUGFyZW50Tm9kZS5oCiAkKEJVSUxUX1BS
T0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU1BhdGgyRC5jcHAKQEAgLTIwNzgs
NiArMjA4NCwxMCBAQCAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29y
ZS9KU1dlYkdQVVRleHR1cmVWaWV3LmNwcAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRT
b3VyY2VzL1dlYkNvcmUvSlNXZWJHUFVUZXh0dXJlVmlldy5oCiAkKEJVSUxUX1BST0RVQ1RTX0RJ
UikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU1dlYktpdEFuaW1hdGlvbkV2ZW50LmNwcAogJChC
VUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNXZWJLaXRBbmltYXRp
b25FdmVudC5oCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9K
U1dlYktpdEF1ZGlvQ29udGV4dC5jcHAKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291
cmNlcy9XZWJDb3JlL0pTV2ViS2l0QXVkaW9Db250ZXh0LmgKKyQoQlVJTFRfUFJPRFVDVFNfRElS
KS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTV2ViS2l0QXVkaW9QYW5uZXJOb2RlLmNwcAorJChC
VUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNXZWJLaXRBdWRpb1Bh
bm5lck5vZGUuaAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUv
SlNXZWJLaXRDU1NNYXRyaXguY3BwCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJj
ZXMvV2ViQ29yZS9KU1dlYktpdENTU01hdHJpeC5oCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVy
aXZlZFNvdXJjZXMvV2ViQ29yZS9KU1dlYktpdENTU1ZpZXdwb3J0UnVsZS5jcHAKQEAgLTIwOTQs
NiArMjEwNCw4IEBAICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3Jl
L0pTV2ViS2l0TWVkaWFLZXlzLmNwcAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3Vy
Y2VzL1dlYkNvcmUvSlNXZWJLaXRNZWRpYUtleXMuaAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rl
cml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNXZWJLaXROYW1lc3BhY2UuY3BwCiAkKEJVSUxUX1BST0RV
Q1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU1dlYktpdE5hbWVzcGFjZS5oCiskKEJV
SUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU1dlYktpdE9mZmxpbmVB
dWRpb0NvbnRleHQuY3BwCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2Vi
Q29yZS9KU1dlYktpdE9mZmxpbmVBdWRpb0NvbnRleHQuaAogJChCVUlMVF9QUk9EVUNUU19ESVIp
L0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNXZWJLaXRQbGF5YmFja1RhcmdldEF2YWlsYWJpbGl0
eUV2ZW50LmNwcAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUv
SlNXZWJLaXRQbGF5YmFja1RhcmdldEF2YWlsYWJpbGl0eUV2ZW50LmgKICQoQlVJTFRfUFJPRFVD
VFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTV2ViS2l0UG9pbnQuY3BwCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtlIGIvU291cmNlL1dlYkNvcmUv
RGVyaXZlZFNvdXJjZXMubWFrZQppbmRleCBkMjY3MDg5ZTM4NzM3ZDkyNGY5NDY1Mjk5MGNhYjky
MTNjOThiZDI4Li5iMjdjNzljZTY2M2UyYzhiOGVhNDYwYWUwODFlYmYxZGRlNzAzM2JhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtlCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UKQEAgLTM4Myw2ICszODMsNyBAQCBKU19CSU5ESU5H
X0lETFMgPSBcCiAgICAgJChXZWJDb3JlKS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQnVmZmVyQ2Fs
bGJhY2suaWRsIFwKICAgICAkKFdlYkNvcmUpL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9CdWZmZXJT
b3VyY2VOb2RlLmlkbCBcCiAgICAgJChXZWJDb3JlKS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQ29u
dGV4dC5pZGwgXAorICAgICQoV2ViQ29yZSkvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0NvbnRleHRT
dGF0ZS5pZGwgXAogICAgICQoV2ViQ29yZSkvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0Rlc3RpbmF0
aW9uTm9kZS5pZGwgXAogICAgICQoV2ViQ29yZSkvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0xpc3Rl
bmVyLmlkbCBcCiAgICAgJChXZWJDb3JlKS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvTm9kZS5pZGwg
XApAQCAtMzkzLDYgKzM5NCw3IEBAIEpTX0JJTkRJTkdfSURMUyA9IFwKICAgICAkKFdlYkNvcmUp
L01vZHVsZXMvd2ViYXVkaW8vQ2hhbm5lbFNwbGl0dGVyTm9kZS5pZGwgXAogICAgICQoV2ViQ29y
ZSkvTW9kdWxlcy93ZWJhdWRpby9Db252b2x2ZXJOb2RlLmlkbCBcCiAgICAgJChXZWJDb3JlKS9N
b2R1bGVzL3dlYmF1ZGlvL0RlbGF5Tm9kZS5pZGwgXAorICAgICQoV2ViQ29yZSkvTW9kdWxlcy93
ZWJhdWRpby9EaXN0YW5jZU1vZGVsVHlwZS5pZGwgXAogICAgICQoV2ViQ29yZSkvTW9kdWxlcy93
ZWJhdWRpby9EeW5hbWljc0NvbXByZXNzb3JOb2RlLmlkbCBcCiAgICAgJChXZWJDb3JlKS9Nb2R1
bGVzL3dlYmF1ZGlvL0dhaW5Ob2RlLmlkbCBcCiAgICAgJChXZWJDb3JlKS9Nb2R1bGVzL3dlYmF1
ZGlvL01lZGlhRWxlbWVudEF1ZGlvU291cmNlTm9kZS5pZGwgXApAQCAtNDAyLDkgKzQwNCwxMyBA
QCBKU19CSU5ESU5HX0lETFMgPSBcCiAgICAgJChXZWJDb3JlKS9Nb2R1bGVzL3dlYmF1ZGlvL09m
ZmxpbmVBdWRpb0NvbnRleHQuaWRsIFwKICAgICAkKFdlYkNvcmUpL01vZHVsZXMvd2ViYXVkaW8v
T3NjaWxsYXRvck5vZGUuaWRsIFwKICAgICAkKFdlYkNvcmUpL01vZHVsZXMvd2ViYXVkaW8vUGFu
bmVyTm9kZS5pZGwgXAorICAgICQoV2ViQ29yZSkvTW9kdWxlcy93ZWJhdWRpby9QYW5uaW5nTW9k
ZWxUeXBlLmlkbCBcCiAgICAgJChXZWJDb3JlKS9Nb2R1bGVzL3dlYmF1ZGlvL1BlcmlvZGljV2F2
ZS5pZGwgXAogICAgICQoV2ViQ29yZSkvTW9kdWxlcy93ZWJhdWRpby9TY3JpcHRQcm9jZXNzb3JO
b2RlLmlkbCBcCiAgICAgJChXZWJDb3JlKS9Nb2R1bGVzL3dlYmF1ZGlvL1dhdmVTaGFwZXJOb2Rl
LmlkbCBcCisgICAgJChXZWJDb3JlKS9Nb2R1bGVzL3dlYmF1ZGlvL1dlYktpdEF1ZGlvQ29udGV4
dC5pZGwgXAorICAgICQoV2ViQ29yZSkvTW9kdWxlcy93ZWJhdWRpby9XZWJLaXRBdWRpb1Bhbm5l
ck5vZGUuaWRsIFwKKyAgICAkKFdlYkNvcmUpL01vZHVsZXMvd2ViYXVkaW8vV2ViS2l0T2ZmbGlu
ZUF1ZGlvQ29udGV4dC5pZGwgXAogICAgICQoV2ViQ29yZSkvTW9kdWxlcy93ZWJhdXRobi9BdHRl
c3RhdGlvbkNvbnZleWFuY2VQcmVmZXJlbmNlLmlkbCBcCiAgICAgJChXZWJDb3JlKS9Nb2R1bGVz
L3dlYmF1dGhuL0F1dGhlbnRpY2F0aW9uRXh0ZW5zaW9uc0NsaWVudElucHV0cy5pZGwgXAogICAg
ICQoV2ViQ29yZSkvTW9kdWxlcy93ZWJhdXRobi9BdXRoZW50aWNhdGlvbkV4dGVuc2lvbnNDbGll
bnRPdXRwdXRzLmlkbCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1
ZGlvL0FuYWx5c2VyTm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0Fu
YWx5c2VyTm9kZS5jcHAKaW5kZXggMTc5ODcwNzAxZjg1MzM4NDhiOGE0OWE3NWQzYWYxMzYxNTRi
MDhkMi4uMjE1ZGUzMjFlOWExNmMzMjQ2Y2E0OTQ3NGQ5ZWFlMjUyMjUzODIwMSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BbmFseXNlck5vZGUuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQW5hbHlzZXJOb2RlLmNwcApAQCAtMzYs
NyArMzYsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFdURl9NQUtFX0lTT19BTExPQ0FURURf
SU1QTChBbmFseXNlck5vZGUpOwogCi1BbmFseXNlck5vZGU6OkFuYWx5c2VyTm9kZShBdWRpb0Nv
bnRleHQmIGNvbnRleHQsIGZsb2F0IHNhbXBsZVJhdGUpCitBbmFseXNlck5vZGU6OkFuYWx5c2Vy
Tm9kZShBdWRpb0NvbnRleHRCYXNlJiBjb250ZXh0LCBmbG9hdCBzYW1wbGVSYXRlKQogICAgIDog
QXVkaW9CYXNpY0luc3BlY3Rvck5vZGUoY29udGV4dCwgc2FtcGxlUmF0ZSwgMikKIHsKICAgICBz
ZXROb2RlVHlwZShOb2RlVHlwZUFuYWx5c2VyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViYXVkaW8vQW5hbHlzZXJOb2RlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmF1ZGlvL0FuYWx5c2VyTm9kZS5oCmluZGV4IGRhMWI1ZTg5Y2EyOGRlZWNjMzljMmYzNjY5
N2ZkOTBhMGIzZTBmN2UuLmE0MDIzYTMwZGVhMGRmMmJjOWE3YmIwNGJlZGFkOGEzMGRiOWRjZTUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQW5hbHlzZXJOb2Rl
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BbmFseXNlck5vZGUuaApA
QCAtMzIsNyArMzIsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBBbmFseXNlck5vZGUg
ZmluYWwgOiBwdWJsaWMgQXVkaW9CYXNpY0luc3BlY3Rvck5vZGUgewogICAgIFdURl9NQUtFX0lT
T19BTExPQ0FURUQoQW5hbHlzZXJOb2RlKTsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPEFuYWx5
c2VyTm9kZT4gY3JlYXRlKEF1ZGlvQ29udGV4dCYgY29udGV4dCwgZmxvYXQgc2FtcGxlUmF0ZSkK
KyAgICBzdGF0aWMgUmVmPEFuYWx5c2VyTm9kZT4gY3JlYXRlKEF1ZGlvQ29udGV4dEJhc2UmIGNv
bnRleHQsIGZsb2F0IHNhbXBsZVJhdGUpCiAgICAgewogICAgICAgICByZXR1cm4gYWRvcHRSZWYo
Km5ldyBBbmFseXNlck5vZGUoY29udGV4dCwgc2FtcGxlUmF0ZSkpOwogICAgIH0KQEAgLTU4LDcg
KzU4LDcgQEAgcHVibGljOgogICAgIHZvaWQgZ2V0Qnl0ZVRpbWVEb21haW5EYXRhKGNvbnN0IFJl
ZlB0cjxKU0M6OlVpbnQ4QXJyYXk+JiBhcnJheSkgeyBtX2FuYWx5c2VyLmdldEJ5dGVUaW1lRG9t
YWluRGF0YShhcnJheS5nZXQoKSk7IH0KIAogcHJpdmF0ZToKLSAgICBBbmFseXNlck5vZGUoQXVk
aW9Db250ZXh0JiwgZmxvYXQgc2FtcGxlUmF0ZSk7CisgICAgQW5hbHlzZXJOb2RlKEF1ZGlvQ29u
dGV4dEJhc2UmLCBmbG9hdCBzYW1wbGVSYXRlKTsKIAogICAgIHZvaWQgcHJvY2VzcyhzaXplX3Qg
ZnJhbWVzVG9Qcm9jZXNzKSBmaW5hbDsKICAgICB2b2lkIHJlc2V0KCkgZmluYWw7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQmFzaWNJbnNwZWN0b3JO
b2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9CYXNpY0luc3Bl
Y3Rvck5vZGUuY3BwCmluZGV4IDBmYjU1YjA4ZjBjMWEyYmUyZDA3MGM0ZTBkOGQ4ZjQ2N2UzNDZh
NzIuLjE0NTNkYWNhZmRhMWQzOGEzNGNmZDFiNmI5M2NiNzgzMzIzNWQ5ODggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9CYXNpY0luc3BlY3Rvck5vZGUu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9CYXNpY0luc3Bl
Y3Rvck5vZGUuY3BwCkBAIC0zNiw3ICszNiw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogV1RG
X01BS0VfSVNPX0FMTE9DQVRFRF9JTVBMKEF1ZGlvQmFzaWNJbnNwZWN0b3JOb2RlKTsKIAotQXVk
aW9CYXNpY0luc3BlY3Rvck5vZGU6OkF1ZGlvQmFzaWNJbnNwZWN0b3JOb2RlKEF1ZGlvQ29udGV4
dCYgY29udGV4dCwgZmxvYXQgc2FtcGxlUmF0ZSwgdW5zaWduZWQgb3V0cHV0Q2hhbm5lbENvdW50
KQorQXVkaW9CYXNpY0luc3BlY3Rvck5vZGU6OkF1ZGlvQmFzaWNJbnNwZWN0b3JOb2RlKEF1ZGlv
Q29udGV4dEJhc2UmIGNvbnRleHQsIGZsb2F0IHNhbXBsZVJhdGUsIHVuc2lnbmVkIG91dHB1dENo
YW5uZWxDb3VudCkKICAgICA6IEF1ZGlvTm9kZShjb250ZXh0LCBzYW1wbGVSYXRlKQogewogICAg
IHNldE5vZGVUeXBlKE5vZGVUeXBlQmFzaWNJbnNwZWN0b3IpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0Jhc2ljSW5zcGVjdG9yTm9kZS5oIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0Jhc2ljSW5zcGVjdG9yTm9kZS5oCmlu
ZGV4IDgwZTA4ZDI5NjE3YjE3NzRjNjBkZDE4NzkzZDE2MzBlZjJhZDAzZGIuLmU3NjllNDZhZTIx
ZjQ3MzQxYzI3M2M4ODQ1Y2JlMDI5ZTgxMjhkNjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViYXVkaW8vQXVkaW9CYXNpY0luc3BlY3Rvck5vZGUuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQmFzaWNJbnNwZWN0b3JOb2RlLmgKQEAgLTM0
LDcgKzM0LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgQXVkaW9CYXNpY0luc3BlY3Rv
ck5vZGUgOiBwdWJsaWMgQXVkaW9Ob2RlIHsKICAgICBXVEZfTUFLRV9JU09fQUxMT0NBVEVEKEF1
ZGlvQmFzaWNJbnNwZWN0b3JOb2RlKTsKIHB1YmxpYzoKLSAgICBBdWRpb0Jhc2ljSW5zcGVjdG9y
Tm9kZShBdWRpb0NvbnRleHQmLCBmbG9hdCBzYW1wbGVSYXRlLCB1bnNpZ25lZCBvdXRwdXRDaGFu
bmVsQ291bnQpOworICAgIEF1ZGlvQmFzaWNJbnNwZWN0b3JOb2RlKEF1ZGlvQ29udGV4dEJhc2Um
LCBmbG9hdCBzYW1wbGVSYXRlLCB1bnNpZ25lZCBvdXRwdXRDaGFubmVsQ291bnQpOwogCiBwcml2
YXRlOgogICAgIHZvaWQgcHVsbElucHV0cyhzaXplX3QgZnJhbWVzVG9Qcm9jZXNzKSBvdmVycmlk
ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9CYXNp
Y1Byb2Nlc3Nvck5vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRp
b0Jhc2ljUHJvY2Vzc29yTm9kZS5jcHAKaW5kZXggMGI5ZjFjZWQ4NzQ1YjVkOTk4ZGMzOGQ2MzZl
NzkwYWJmYmU2ZTk4My4uZjdiNzk2YmU1NTU0NTM2YTZhNTQyYzc1ZTM2MDU1MjVmOTQ2OGEyOSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0Jhc2ljUHJv
Y2Vzc29yTm9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRp
b0Jhc2ljUHJvY2Vzc29yTm9kZS5jcHAKQEAgLTM5LDcgKzM5LDcgQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogCiBXVEZfTUFLRV9JU09fQUxMT0NBVEVEX0lNUEwoQXVkaW9CYXNpY1Byb2Nlc3Nvck5v
ZGUpOwogCi1BdWRpb0Jhc2ljUHJvY2Vzc29yTm9kZTo6QXVkaW9CYXNpY1Byb2Nlc3Nvck5vZGUo
QXVkaW9Db250ZXh0JiBjb250ZXh0LCBmbG9hdCBzYW1wbGVSYXRlKQorQXVkaW9CYXNpY1Byb2Nl
c3Nvck5vZGU6OkF1ZGlvQmFzaWNQcm9jZXNzb3JOb2RlKEF1ZGlvQ29udGV4dEJhc2UmIGNvbnRl
eHQsIGZsb2F0IHNhbXBsZVJhdGUpCiAgICAgOiBBdWRpb05vZGUoY29udGV4dCwgc2FtcGxlUmF0
ZSkKIHsKICAgICBhZGRJbnB1dChtYWtlVW5pcXVlPEF1ZGlvTm9kZUlucHV0Pih0aGlzKSk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQmFzaWNQcm9j
ZXNzb3JOb2RlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQmFzaWNQ
cm9jZXNzb3JOb2RlLmgKaW5kZXggODJjZmZkYTU5ZjI3ODIwZGIwZDNkNTQ2MDFkNmFjYzRhYzc2
ZjE2MS4uZTE2MzczYmYwMjk3NmE0NWFkODI1ZTJlNjNhODM3YWZmNGY5MjE5YSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0Jhc2ljUHJvY2Vzc29yTm9k
ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9CYXNpY1Byb2Nl
c3Nvck5vZGUuaApAQCAtMzcsNyArMzcsNyBAQCBjbGFzcyBBdWRpb1Byb2Nlc3NvcjsKIGNsYXNz
IEF1ZGlvQmFzaWNQcm9jZXNzb3JOb2RlIDogcHVibGljIEF1ZGlvTm9kZSB7CiAgICAgV1RGX01B
S0VfSVNPX0FMTE9DQVRFRChBdWRpb0Jhc2ljUHJvY2Vzc29yTm9kZSk7CiBwdWJsaWM6Ci0gICAg
QXVkaW9CYXNpY1Byb2Nlc3Nvck5vZGUoQXVkaW9Db250ZXh0JiwgZmxvYXQgc2FtcGxlUmF0ZSk7
CisgICAgQXVkaW9CYXNpY1Byb2Nlc3Nvck5vZGUoQXVkaW9Db250ZXh0QmFzZSYsIGZsb2F0IHNh
bXBsZVJhdGUpOwogCiAgICAgLy8gQXVkaW9Ob2RlCiAgICAgdm9pZCBwcm9jZXNzKHNpemVfdCBm
cmFtZXNUb1Byb2Nlc3MpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJhdWRpby9BdWRpb0J1ZmZlclNvdXJjZU5vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJhdWRpby9BdWRpb0J1ZmZlclNvdXJjZU5vZGUuY3BwCmluZGV4IGMzNjYxZGU1
N2Q3MzllYzQ3MGQ2ZmFkOWY1NDFlNDk1ZWM5NzZkZWYuLjBjMWJhNGU5NGE5OGNiZjdkMTliZGMz
YjIzYTYyZmE5NDZmMDk1MzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
YXVkaW8vQXVkaW9CdWZmZXJTb3VyY2VOb2RlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmF1ZGlvL0F1ZGlvQnVmZmVyU291cmNlTm9kZS5jcHAKQEAgLTQ5LDEyICs0OSwxMiBA
QCBjb25zdCBkb3VibGUgRGVmYXVsdEdyYWluRHVyYXRpb24gPSAwLjAyMDsgLy8gMjBtcwogLy8g
dG8gbWluaW1pemUgbGluZWFyIGludGVycG9sYXRpb24gYWxpYXNpbmcuCiBjb25zdCBkb3VibGUg
TWF4UmF0ZSA9IDEwMjQ7CiAKLVJlZjxBdWRpb0J1ZmZlclNvdXJjZU5vZGU+IEF1ZGlvQnVmZmVy
U291cmNlTm9kZTo6Y3JlYXRlKEF1ZGlvQ29udGV4dCYgY29udGV4dCwgZmxvYXQgc2FtcGxlUmF0
ZSkKK1JlZjxBdWRpb0J1ZmZlclNvdXJjZU5vZGU+IEF1ZGlvQnVmZmVyU291cmNlTm9kZTo6Y3Jl
YXRlKEF1ZGlvQ29udGV4dEJhc2UmIGNvbnRleHQsIGZsb2F0IHNhbXBsZVJhdGUpCiB7CiAgICAg
cmV0dXJuIGFkb3B0UmVmKCpuZXcgQXVkaW9CdWZmZXJTb3VyY2VOb2RlKGNvbnRleHQsIHNhbXBs
ZVJhdGUpKTsKIH0KIAotQXVkaW9CdWZmZXJTb3VyY2VOb2RlOjpBdWRpb0J1ZmZlclNvdXJjZU5v
ZGUoQXVkaW9Db250ZXh0JiBjb250ZXh0LCBmbG9hdCBzYW1wbGVSYXRlKQorQXVkaW9CdWZmZXJT
b3VyY2VOb2RlOjpBdWRpb0J1ZmZlclNvdXJjZU5vZGUoQXVkaW9Db250ZXh0QmFzZSYgY29udGV4
dCwgZmxvYXQgc2FtcGxlUmF0ZSkKICAgICA6IEF1ZGlvU2NoZWR1bGVkU291cmNlTm9kZShjb250
ZXh0LCBzYW1wbGVSYXRlKQogICAgICwgbV9idWZmZXIobnVsbHB0cikKICAgICAsIG1faXNMb29w
aW5nKGZhbHNlKQpAQCAtNDEzLDcgKzQxMyw3IEBAIHZvaWQgQXVkaW9CdWZmZXJTb3VyY2VOb2Rl
OjpzZXRCdWZmZXIoUmVmUHRyPEF1ZGlvQnVmZmVyPiYmIGJ1ZmZlcikKICAgICBERUJVR19MT0co
TE9HSURFTlRJRklFUik7CiAKICAgICAvLyBUaGUgY29udGV4dCBtdXN0IGJlIGxvY2tlZCBzaW5j
ZSBjaGFuZ2luZyB0aGUgYnVmZmVyIGNhbiByZS1jb25maWd1cmUgdGhlIG51bWJlciBvZiBjaGFu
bmVscyB0aGF0IGFyZSBvdXRwdXQuCi0gICAgQXVkaW9Db250ZXh0OjpBdXRvTG9ja2VyIGNvbnRl
eHRMb2NrZXIoY29udGV4dCgpKTsKKyAgICBBdWRpb0NvbnRleHRCYXNlOjpBdXRvTG9ja2VyIGNv
bnRleHRMb2NrZXIoY29udGV4dCgpKTsKICAgICAKICAgICAvLyBUaGlzIHN5bmNocm9uaXplcyB3
aXRoIHByb2Nlc3MoKS4KICAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG1fcHJvY2Vzc011dGV4
KTsKQEAgLTU1Nyw3ICs1NTcsNyBAQCBib29sIEF1ZGlvQnVmZmVyU291cmNlTm9kZTo6cHJvcGFn
YXRlc1NpbGVuY2UoKSBjb25zdAogICAgIHJldHVybiAhaXNQbGF5aW5nT3JTY2hlZHVsZWQoKSB8
fCBoYXNGaW5pc2hlZCgpIHx8ICFtX2J1ZmZlcjsKIH0KIAotdm9pZCBBdWRpb0J1ZmZlclNvdXJj
ZU5vZGU6OnNldFBhbm5lck5vZGUoUGFubmVyTm9kZSogcGFubmVyTm9kZSkKK3ZvaWQgQXVkaW9C
dWZmZXJTb3VyY2VOb2RlOjpzZXRQYW5uZXJOb2RlKFBhbm5lck5vZGVCYXNlKiBwYW5uZXJOb2Rl
KQogewogICAgIGlmIChtX3Bhbm5lck5vZGUgIT0gcGFubmVyTm9kZSAmJiAhaGFzRmluaXNoZWQo
KSkgewogICAgICAgICBpZiAocGFubmVyTm9kZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViYXVkaW8vQXVkaW9CdWZmZXJTb3VyY2VOb2RlLmggYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQnVmZmVyU291cmNlTm9kZS5oCmluZGV4IDU0OGIyNmU3
ZmE3NTE0ZGU5YWQ2NGQzZTM1MzZiOWYzNGJlZGE5ZmIuLjYwMTEzMTE5OWE0ZmE5MmQ3MzBjNTBk
NWFhMjYwMDM4ZjZmZDk2ZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
YXVkaW8vQXVkaW9CdWZmZXJTb3VyY2VOb2RlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJhdWRpby9BdWRpb0J1ZmZlclNvdXJjZU5vZGUuaApAQCAtMzEsNyArMzEsNyBAQAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBBdWRpb0J1ZmZlcjsKLWNsYXNzIFBhbm5lck5vZGU7
CitjbGFzcyBQYW5uZXJOb2RlQmFzZTsKIAogLy8gQXVkaW9CdWZmZXJTb3VyY2VOb2RlIGlzIGFu
IEF1ZGlvTm9kZSByZXByZXNlbnRpbmcgYW4gYXVkaW8gc291cmNlIGZyb20gYW4gaW4tbWVtb3J5
IGF1ZGlvIGFzc2V0IHJlcHJlc2VudGVkIGJ5IGFuIEF1ZGlvQnVmZmVyLgogLy8gSXQgZ2VuZXJh
bGx5IHdpbGwgYmUgdXNlZCBmb3Igc2hvcnQgc291bmRzIHdoaWNoIHJlcXVpcmUgYSBoaWdoIGRl
Z3JlZSBvZiBzY2hlZHVsaW5nIGZsZXhpYmlsaXR5IChjYW4gcGxheWJhY2sgaW4gcmh5dGhtaWNh
bGx5IHBlcmZlY3Qgd2F5cykuCkBAIC0zOSw3ICszOSw3IEBAIGNsYXNzIFBhbm5lck5vZGU7CiBj
bGFzcyBBdWRpb0J1ZmZlclNvdXJjZU5vZGUgZmluYWwgOiBwdWJsaWMgQXVkaW9TY2hlZHVsZWRT
b3VyY2VOb2RlIHsKICAgICBXVEZfTUFLRV9JU09fQUxMT0NBVEVEKEF1ZGlvQnVmZmVyU291cmNl
Tm9kZSk7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxBdWRpb0J1ZmZlclNvdXJjZU5vZGU+IGNy
ZWF0ZShBdWRpb0NvbnRleHQmLCBmbG9hdCBzYW1wbGVSYXRlKTsKKyAgICBzdGF0aWMgUmVmPEF1
ZGlvQnVmZmVyU291cmNlTm9kZT4gY3JlYXRlKEF1ZGlvQ29udGV4dEJhc2UmLCBmbG9hdCBzYW1w
bGVSYXRlKTsKIAogICAgIHZpcnR1YWwgfkF1ZGlvQnVmZmVyU291cmNlTm9kZSgpOwogCkBAIC03
OSw3ICs3OSw3IEBAIHB1YmxpYzoKICAgICBBdWRpb1BhcmFtKiBwbGF5YmFja1JhdGUoKSB7IHJl
dHVybiBtX3BsYXliYWNrUmF0ZS5nZXQoKTsgfQogCiAgICAgLy8gSWYgYSBwYW5uZXIgbm9kZSBp
cyBzZXQsIHRoZW4gd2UgY2FuIGluY29ycG9yYXRlIGRvcHBsZXIgc2hpZnQgaW50byB0aGUgcGxh
eWJhY2sgcGl0Y2ggcmF0ZS4KLSAgICB2b2lkIHNldFBhbm5lck5vZGUoUGFubmVyTm9kZSopOwor
ICAgIHZvaWQgc2V0UGFubmVyTm9kZShQYW5uZXJOb2RlQmFzZSopOwogICAgIHZvaWQgY2xlYXJQ
YW5uZXJOb2RlKCk7CiAKICAgICAvLyBJZiB3ZSBhcmUgbm8gbG9uZ2VyIHBsYXlpbmcsIHByb3Bv
Z2F0ZSBzaWxlbmNlIGFoZWFkIHRvIGRvd25zdHJlYW0gbm9kZXMuCkBAIC05MSw3ICs5MSw3IEBA
IHB1YmxpYzoKICAgICBjb25zdCBjaGFyKiBhY3RpdmVET01PYmplY3ROYW1lKCkgY29uc3Qgb3Zl
cnJpZGUgeyByZXR1cm4gIkF1ZGlvQnVmZmVyU291cmNlTm9kZSI7IH0KIAogcHJpdmF0ZToKLSAg
ICBBdWRpb0J1ZmZlclNvdXJjZU5vZGUoQXVkaW9Db250ZXh0JiwgZmxvYXQgc2FtcGxlUmF0ZSk7
CisgICAgQXVkaW9CdWZmZXJTb3VyY2VOb2RlKEF1ZGlvQ29udGV4dEJhc2UmLCBmbG9hdCBzYW1w
bGVSYXRlKTsKIAogICAgIGRvdWJsZSB0YWlsVGltZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIDA7
IH0KICAgICBkb3VibGUgbGF0ZW5jeVRpbWUoKSBjb25zdCBmaW5hbCB7IHJldHVybiAwOyB9CkBA
IC0xNDUsNyArMTQ1LDcgQEAgcHJpdmF0ZToKIAogICAgIC8vIFdlIG9wdGlvbmFsbHkga2VlcCB0
cmFjayBvZiBhIHBhbm5lciBub2RlIHdoaWNoIGhhcyBhIGRvcHBsZXIgc2hpZnQgdGhhdCBpcyBp
bmNvcnBvcmF0ZWQgaW50bwogICAgIC8vIHRoZSBwaXRjaCByYXRlLiBXZSBtYW51YWxseSBtYW5h
Z2UgcmVmLWNvdW50aW5nIGJlY2F1c2Ugd2Ugd2FudCB0byB1c2UgUmVmVHlwZUNvbm5lY3Rpb24u
Ci0gICAgUGFubmVyTm9kZSogbV9wYW5uZXJOb2RlOworICAgIFBhbm5lck5vZGVCYXNlKiBtX3Bh
bm5lck5vZGU7CiAKICAgICAvLyBUaGlzIHN5bmNocm9uaXplcyBwcm9jZXNzKCkgd2l0aCBzZXRC
dWZmZXIoKSB3aGljaCBjYW4gY2F1c2UgZHluYW1pYyBjaGFubmVsIGNvdW50IGNoYW5nZXMuCiAg
ICAgbXV0YWJsZSBMb2NrIG1fcHJvY2Vzc011dGV4OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0NvbnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJhdWRpby9BdWRpb0NvbnRleHQuY3BwCmluZGV4IDM4MmRjN2NmMGNkMGY1ZDVkMzAy
NzZlNjNkOTJkYmUwYjUzN2VhNTkuLjI2ZTFmYzdjY2FiMTQzNGQwNWFmMWFiYWExYzQ4ZTAwMmUy
YjMxYzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9D
b250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQ29u
dGV4dC5jcHAKQEAgLTEwNyw2ICsxMDcsNyBAQCBjb25zdCB1bnNpZ25lZCBNYXhQZXJpb2RpY1dh
dmVMZW5ndGggPSA0MDk2OwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK1dURl9NQUtFX0lTT19B
TExPQ0FURURfSU1QTChBdWRpb0NvbnRleHRCYXNlKTsKIFdURl9NQUtFX0lTT19BTExPQ0FURURf
SU1QTChBdWRpb0NvbnRleHQpOwogCiAjZGVmaW5lIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoZm10
LCAuLi4pIFJFTEVBU0VfTE9HX0lGKGRvY3VtZW50KCkgJiYgZG9jdW1lbnQoKS0+cGFnZSgpICYm
IGRvY3VtZW50KCktPnBhZ2UoKS0+aXNBbHdheXNPbkxvZ2dpbmdBbGxvd2VkKCksIE1lZGlhLCAi
JXAgLSBBdWRpb0NvbnRleHQ6OiIgZm10LCB0aGlzLCAjI19fVkFfQVJHU19fKQpAQCAtMTM3LDkg
KzEzOCwxNCBAQCBFeGNlcHRpb25PcjxSZWY8QXVkaW9Db250ZXh0Pj4gQXVkaW9Db250ZXh0Ojpj
cmVhdGUoRG9jdW1lbnQmIGRvY3VtZW50KQogICAgIHJldHVybiBhdWRpb0NvbnRleHQ7CiB9CiAK
K0F1ZGlvQ29udGV4dEJhc2U6OkF1ZGlvQ29udGV4dEJhc2UoRG9jdW1lbnQmIGRvY3VtZW50KQor
ICAgIDogQWN0aXZlRE9NT2JqZWN0KGRvY3VtZW50KQoreworfQorCiAvLyBDb25zdHJ1Y3RvciBm
b3IgcmVuZGVyaW5nIHRvIHRoZSBhdWRpbyBoYXJkd2FyZS4KIEF1ZGlvQ29udGV4dDo6QXVkaW9D
b250ZXh0KERvY3VtZW50JiBkb2N1bWVudCkKLSAgICA6IEFjdGl2ZURPTU9iamVjdChkb2N1bWVu
dCkKKyAgICA6IEF1ZGlvQ29udGV4dEJhc2UoZG9jdW1lbnQpCiAjaWYgIVJFTEVBU0VfTE9HX0RJ
U0FCTEVECiAgICAgLCBtX2xvZ2dlcihkb2N1bWVudC5sb2dnZXIoKSkKICAgICAsIG1fbG9nSWRl
bnRpZmllcih1bmlxdWVMb2dJZGVudGlmaWVyKCkpCkBAIC0xNjQsNyArMTcwLDcgQEAgQXVkaW9D
b250ZXh0OjpBdWRpb0NvbnRleHQoRG9jdW1lbnQmIGRvY3VtZW50KQogCiAvLyBDb25zdHJ1Y3Rv
ciBmb3Igb2ZmbGluZSAobm9uLXJlYWx0aW1lKSByZW5kZXJpbmcuCiBBdWRpb0NvbnRleHQ6OkF1
ZGlvQ29udGV4dChEb2N1bWVudCYgZG9jdW1lbnQsIEF1ZGlvQnVmZmVyKiByZW5kZXJUYXJnZXQp
Ci0gICAgOiBBY3RpdmVET01PYmplY3QoZG9jdW1lbnQpCisgICAgOiBBdWRpb0NvbnRleHRCYXNl
KGRvY3VtZW50KQogI2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRAogICAgICwgbV9sb2dnZXIoZG9j
dW1lbnQubG9nZ2VyKCkpCiAgICAgLCBtX2xvZ0lkZW50aWZpZXIodW5pcXVlTG9nSWRlbnRpZmll
cigpKQpAQCAtMzY2LDcgKzM3Miw3IEBAIGNvbnN0IGNoYXIqIEF1ZGlvQ29udGV4dDo6YWN0aXZl
RE9NT2JqZWN0TmFtZSgpIGNvbnN0CiAgICAgcmV0dXJuICJBdWRpb0NvbnRleHQiOwogfQogCi1E
b2N1bWVudCogQXVkaW9Db250ZXh0Ojpkb2N1bWVudCgpIGNvbnN0CitEb2N1bWVudCogQXVkaW9D
b250ZXh0QmFzZTo6ZG9jdW1lbnQoKSBjb25zdAogewogICAgIHJldHVybiBkb3duY2FzdDxEb2N1
bWVudD4obV9zY3JpcHRFeGVjdXRpb25Db250ZXh0KTsKIH0KQEAgLTEwMDIsOSArMTAwOCwxNCBA
QCB2b2lkIEF1ZGlvQ29udGV4dDo6cmVtb3ZlTWFya2VkU3VtbWluZ0p1bmN0aW9uKEF1ZGlvU3Vt
bWluZ0p1bmN0aW9uKiBzdW1taW5nSnVuYwogICAgIG1fZGlydHlTdW1taW5nSnVuY3Rpb25zLnJl
bW92ZShzdW1taW5nSnVuY3Rpb24pOwogfQogCitFdmVudFRhcmdldEludGVyZmFjZSBBdWRpb0Nv
bnRleHQ6OmV2ZW50VGFyZ2V0SW50ZXJmYWNlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gQXVkaW9D
b250ZXh0RXZlbnRUYXJnZXRJbnRlcmZhY2VUeXBlOworfQorCiB2b2lkIEF1ZGlvQ29udGV4dDo6
bWFya0F1ZGlvTm9kZU91dHB1dERpcnR5KEF1ZGlvTm9kZU91dHB1dCogb3V0cHV0KQogewotICAg
IEFTU0VSVChpc0dyYXBoT3duZXIoKSk7ICAgIAorICAgIEFTU0VSVChpc0dyYXBoT3duZXIoKSk7
CiAgICAgbV9kaXJ0eUF1ZGlvTm9kZU91dHB1dHMuYWRkKG91dHB1dCk7CiB9CiAKQEAgLTEwNjgs
NyArMTA3OSw3IEBAIHZvaWQgQXVkaW9Db250ZXh0Ojpwcm9jZXNzQXV0b21hdGljUHVsbE5vZGVz
KHNpemVfdCBmcmFtZXNUb1Byb2Nlc3MpCiAgICAgICAgIG5vZGUtPnByb2Nlc3NJZk5lY2Vzc2Fy
eShmcmFtZXNUb1Byb2Nlc3MpOwogfQogCi1TY3JpcHRFeGVjdXRpb25Db250ZXh0KiBBdWRpb0Nv
bnRleHQ6OnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSBjb25zdAorU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCogQXVkaW9Db250ZXh0QmFzZTo6c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpIGNvbnN0CiB7
CiAgICAgcmV0dXJuIEFjdGl2ZURPTU9iamVjdDo6c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOwog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0NvbnRl
eHQuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0LmgKaW5k
ZXggOGUwOTQzOTRjZmZjYzVkYWE4YjBlNGRjNTg5MTIxOTQ0MmU2ZTEyZS4uNTA1OTIxZmY1ZTM1
ZDI0OTUzMzgwMjAzYTQ3OTVmNjRjYWMyZDVkMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJhdWRpby9BdWRpb0NvbnRleHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmF1ZGlvL0F1ZGlvQ29udGV4dC5oCkBAIC0yOCw2ICsyOCw3IEBACiAjaW5jbHVkZSAi
QWN0aXZlRE9NT2JqZWN0LmgiCiAjaW5jbHVkZSAiQXN5bmNBdWRpb0RlY29kZXIuaCIKICNpbmNs
dWRlICJBdWRpb0J1cy5oIgorI2luY2x1ZGUgIkF1ZGlvQ29udGV4dFN0YXRlLmgiCiAjaW5jbHVk
ZSAiQXVkaW9EZXN0aW5hdGlvbk5vZGUuaCIKICNpbmNsdWRlICJFdmVudFRhcmdldC5oIgogI2lu
Y2x1ZGUgIk1lZGlhQ2FuU3RhcnRMaXN0ZW5lci5oIgpAQCAtNzksMjAgKzgwLDEyNyBAQCBjbGFz
cyBXYXZlU2hhcGVyTm9kZTsKIAogdGVtcGxhdGU8dHlwZW5hbWUgSURMVHlwZT4gY2xhc3MgRE9N
UHJvbWlzZURlZmVycmVkOwogCi0vLyBBdWRpb0NvbnRleHQgaXMgdGhlIGNvcm5lcnN0b25lIG9m
IHRoZSB3ZWIgYXVkaW8gQVBJIGFuZCBhbGwgQXVkaW9Ob2RlcyBhcmUgY3JlYXRlZCBmcm9tIGl0
LgotLy8gRm9yIHRocmVhZCBzYWZldHkgYmV0d2VlbiB0aGUgYXVkaW8gdGhyZWFkIGFuZCB0aGUg
bWFpbiB0aHJlYWQsIGl0IGhhcyBhIHJlbmRlcmluZyBncmFwaCBsb2NraW5nIG1lY2hhbmlzbS4g
Ci0KLWNsYXNzIEF1ZGlvQ29udGV4dAorY2xhc3MgQXVkaW9Db250ZXh0QmFzZQogICAgIDogcHVi
bGljIEFjdGl2ZURPTU9iamVjdAogICAgICwgcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPEF1
ZGlvQ29udGV4dD4KICAgICAsIHB1YmxpYyBFdmVudFRhcmdldFdpdGhJbmxpbmVEYXRhCiAgICAg
LCBwdWJsaWMgTWVkaWFDYW5TdGFydExpc3RlbmVyCiAgICAgLCBwdWJsaWMgTWVkaWFQcm9kdWNl
cgotICAgICwgcHJpdmF0ZSBQbGF0Zm9ybU1lZGlhU2Vzc2lvbkNsaWVudAotICAgICwgcHJpdmF0
ZSBWaXNpYmlsaXR5Q2hhbmdlQ2xpZW50CiAjaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECi0gICAg
LCBwcml2YXRlIExvZ2dlckhlbHBlcgorICAgICwgcHVibGljIExvZ2dlckhlbHBlcgorI2VuZGlm
Cit7CisgICAgV1RGX01BS0VfSVNPX0FMTE9DQVRFRChBdWRpb0NvbnRleHRCYXNlKTsKK3B1Ymxp
YzoKKyAgICB2aXJ0dWFsIH5BdWRpb0NvbnRleHRCYXNlKCkgPSBkZWZhdWx0OworCisgICAgLy8g
UmVjb25jaWxlIHJlZi9kZXJlZiB3aGljaCBhcmUgZGVmaW5lZCBib3RoIGluIFRocmVhZFNhZmVS
ZWZDb3VudGVkIGFuZCBFdmVudFRhcmdldC4KKyAgICB1c2luZyBUaHJlYWRTYWZlUmVmQ291bnRl
ZDo6cmVmOworICAgIHVzaW5nIFRocmVhZFNhZmVSZWZDb3VudGVkOjpkZXJlZjsKKworICAgIERv
Y3VtZW50KiBkb2N1bWVudCgpIGNvbnN0OworCisgICAgdmlydHVhbCBib29sIGlzSW5pdGlhbGl6
ZWQoKSBjb25zdCA9IDA7CisKKyAgICB2aXJ0dWFsIHNpemVfdCBjdXJyZW50U2FtcGxlRnJhbWUo
KSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBmbG9hdCBzYW1wbGVSYXRlKCkgY29uc3QgPSAwOwor
ICAgIHZpcnR1YWwgZG91YmxlIGN1cnJlbnRUaW1lKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwg
Ym9vbCBpc0dyYXBoT3duZXIoKSBjb25zdCA9IDA7CisKKyAgICB2aXJ0dWFsIHZvaWQgc2V0QXVk
aW9UaHJlYWQoVGhyZWFkJikgPSAwOworICAgIHZpcnR1YWwgYm9vbCBpc0F1ZGlvVGhyZWFkKCkg
Y29uc3QgPSAwOworICAgIHZpcnR1YWwgYm9vbCBpc0F1ZGlvVGhyZWFkRmluaXNoZWQoKSA9IDA7
CisKKyAgICB2aXJ0dWFsIHZvaWQgaXNQbGF5aW5nQXVkaW9EaWRDaGFuZ2UoKSA9IDA7CisgICAg
dmlydHVhbCB2b2lkIG5vZGVXaWxsQmVnaW5QbGF5YmFjaygpID0gMDsKKworICAgIHZpcnR1YWwg
dm9pZCBwb3N0VGFzayhXVEY6OkZ1bmN0aW9uPHZvaWQoKT4mJikgPSAwOworICAgIHZpcnR1YWwg
Ym9vbCBpc1N0b3BwZWQoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBjb25zdCBTZWN1cml0eU9y
aWdpbiogb3JpZ2luKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgdm9pZCBhZGRDb25zb2xlTWVz
c2FnZShNZXNzYWdlU291cmNlLCBNZXNzYWdlTGV2ZWwsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSkg
PSAwOworCisgICAgdmlydHVhbCB2b2lkIG1hcmtGb3JEZWxldGlvbihBdWRpb05vZGUmKSA9IDA7
CisgICAgdmlydHVhbCB2b2lkIGRlbGV0ZU1hcmtlZE5vZGVzKCkgPSAwOworCisgICAgdmlydHVh
bCB2b2lkIGhhbmRsZVByZVJlbmRlclRhc2tzKCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBoYW5k
bGVQb3N0UmVuZGVyVGFza3MoKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHByb2Nlc3NBdXRvbWF0
aWNQdWxsTm9kZXMoc2l6ZV90IGZyYW1lc1RvUHJvY2VzcykgPSAwOworICAgIHZpcnR1YWwgdm9p
ZCBhZGREZWZlcnJlZEZpbmlzaERlcmVmKEF1ZGlvTm9kZSopID0gMDsKKworICAgIHZpcnR1YWwg
dm9pZCByZW1vdmVNYXJrZWRTdW1taW5nSnVuY3Rpb24oQXVkaW9TdW1taW5nSnVuY3Rpb24qKSA9
IDA7CisgICAgdmlydHVhbCB2b2lkIG1hcmtTdW1taW5nSnVuY3Rpb25EaXJ0eShBdWRpb1N1bW1p
bmdKdW5jdGlvbiopID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgbWFya0F1ZGlvTm9kZU91dHB1dERp
cnR5KEF1ZGlvTm9kZU91dHB1dCopID0gMDsKKworICAgIGVudW0gQmVoYXZpb3JSZXN0cmljdGlv
bkZsYWdzIHsKKyAgICAgICAgTm9SZXN0cmljdGlvbnMgPSAwLAorICAgICAgICBSZXF1aXJlVXNl
ckdlc3R1cmVGb3JBdWRpb1N0YXJ0UmVzdHJpY3Rpb24gPSAxIDw8IDAsCisgICAgICAgIFJlcXVp
cmVQYWdlQ29uc2VudEZvckF1ZGlvU3RhcnRSZXN0cmljdGlvbiA9IDEgPDwgMSwKKyAgICB9Owor
ICAgIHR5cGVkZWYgdW5zaWduZWQgQmVoYXZpb3JSZXN0cmljdGlvbnM7CisgICAgdmlydHVhbCBC
ZWhhdmlvclJlc3RyaWN0aW9ucyBiZWhhdmlvclJlc3RyaWN0aW9ucygpIGNvbnN0ID0gMDsKKyAg
ICB2aXJ0dWFsIHZvaWQgYWRkQmVoYXZpb3JSZXN0cmljdGlvbihCZWhhdmlvclJlc3RyaWN0aW9u
cykgPSAwOworICAgIHZpcnR1YWwgdm9pZCByZW1vdmVCZWhhdmlvclJlc3RyaWN0aW9uKEJlaGF2
aW9yUmVzdHJpY3Rpb25zKSA9IDA7CisKKyNpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKKyAgICB2
aXJ0dWFsIGNvbnN0IHZvaWQqIG5leHRBdWRpb05vZGVMb2dJZGVudGlmaWVyKCkgPSAwOworICAg
IHZpcnR1YWwgY29uc3Qgdm9pZCogbmV4dEF1ZGlvUGFyYW1ldGVyTG9nSWRlbnRpZmllcigpID0g
MDsKICNlbmRpZgorCisgICAgdmlydHVhbCB2b2lkIGFkZEF1dG9tYXRpY1B1bGxOb2RlKEF1ZGlv
Tm9kZSYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlQXV0b21hdGljUHVsbE5vZGUoQXVk
aW9Ob2RlJikgPSAwOworCisgICAgdmlydHVhbCB2b2lkIG5vdGlmeU5vZGVGaW5pc2hlZFByb2Nl
c3NpbmcoQXVkaW9Ob2RlKikgPSAwOworCisgICAgdmlydHVhbCB2b2lkIGZpbmlzaGVkUmVuZGVy
aW5nKGJvb2wgZGlkUmVuZGVyaW5nKSA9IDA7CisKKyAgICB2aXJ0dWFsIHZvaWQgaW5jcmVtZW50
Q29ubmVjdGlvbkNvdW50KCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBpbmNyZW1lbnRBY3RpdmVT
b3VyY2VDb3VudCgpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZGVjcmVtZW50QWN0aXZlU291cmNl
Q291bnQoKSA9IDA7CisKKyAgICB2aXJ0dWFsIGJvb2wgaXNPZmZsaW5lQ29udGV4dCgpIGNvbnN0
ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgaXNBdWRpb0NvbnRleHQoKSBjb25zdCA9IDA7CisgICAg
dmlydHVhbCBib29sIGlzV2ViS2l0QXVkaW9Db250ZXh0KCkgY29uc3QgPSAwOworCisgICAgLy8g
bXVzdFJlbGVhc2VMb2NrIGlzIHNldCB0byB0cnVlIGlmIHdlIGFjcXVpcmVkIHRoZSBsb2NrIGlu
IHRoaXMgbWV0aG9kIGNhbGwgYW5kIGNhbGxlciBtdXN0IHVubG9jaygpLCBmYWxzZSBpZiBpdCB3
YXMgcHJldmlvdXNseSBhY3F1aXJlZC4KKyAgICB2aXJ0dWFsIHZvaWQgbG9jayhib29sJiBtdXN0
UmVsZWFzZUxvY2spID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgdHJ5TG9jayhib29sJiBtdXN0UmVs
ZWFzZUxvY2spID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgdW5sb2NrKCkgPSAwOworCisgICAgY2xh
c3MgQXV0b0xvY2tlciB7CisgICAgcHVibGljOgorICAgICAgICBleHBsaWNpdCBBdXRvTG9ja2Vy
KEF1ZGlvQ29udGV4dEJhc2UmIGNvbnRleHQpCisgICAgICAgICAgICA6IG1fY29udGV4dChjb250
ZXh0KQorICAgICAgICB7CisgICAgICAgICAgICBtX2NvbnRleHQubG9jayhtX211c3RSZWxlYXNl
TG9jayk7CisgICAgICAgIH0KKworICAgICAgICB+QXV0b0xvY2tlcigpCisgICAgICAgIHsKKyAg
ICAgICAgICAgIGlmIChtX211c3RSZWxlYXNlTG9jaykKKyAgICAgICAgICAgICAgICBtX2NvbnRl
eHQudW5sb2NrKCk7CisgICAgICAgIH0KKworICAgIHByaXZhdGU6CisgICAgICAgIEF1ZGlvQ29u
dGV4dEJhc2UmIG1fY29udGV4dDsKKyAgICAgICAgYm9vbCBtX211c3RSZWxlYXNlTG9jazsKKyAg
ICB9OworCisgICAgLy8gRXZlbnRUYXJnZXQKKyAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBz
Y3JpcHRFeGVjdXRpb25Db250ZXh0KCkgY29uc3QgZmluYWw7CisgICAgdm9pZCByZWZFdmVudFRh
cmdldCgpIG92ZXJyaWRlIHsgcmVmKCk7IH0KKyAgICB2b2lkIGRlcmVmRXZlbnRUYXJnZXQoKSBv
dmVycmlkZSB7IGRlcmVmKCk7IH0KKworcHJvdGVjdGVkOgorICAgIGV4cGxpY2l0IEF1ZGlvQ29u
dGV4dEJhc2UoRG9jdW1lbnQmKTsKK307CisKKy8vIEF1ZGlvQ29udGV4dCBpcyB0aGUgY29ybmVy
c3RvbmUgb2YgdGhlIHdlYiBhdWRpbyBBUEkgYW5kIGFsbCBBdWRpb05vZGVzIGFyZSBjcmVhdGVk
IGZyb20gaXQuCisvLyBGb3IgdGhyZWFkIHNhZmV0eSBiZXR3ZWVuIHRoZSBhdWRpbyB0aHJlYWQg
YW5kIHRoZSBtYWluIHRocmVhZCwgaXQgaGFzIGEgcmVuZGVyaW5nIGdyYXBoIGxvY2tpbmcgbWVj
aGFuaXNtLiAKKworY2xhc3MgQXVkaW9Db250ZXh0CisgICAgOiBwdWJsaWMgQXVkaW9Db250ZXh0
QmFzZQorICAgICwgcHJpdmF0ZSBQbGF0Zm9ybU1lZGlhU2Vzc2lvbkNsaWVudAorICAgICwgcHJp
dmF0ZSBWaXNpYmlsaXR5Q2hhbmdlQ2xpZW50CiB7CiAgICAgV1RGX01BS0VfSVNPX0FMTE9DQVRF
RChBdWRpb0NvbnRleHQpOwogcHVibGljOgpAQCAtMTAxLDIyICsyMDksMjAgQEAgcHVibGljOgog
CiAgICAgdmlydHVhbCB+QXVkaW9Db250ZXh0KCk7CiAKLSAgICBib29sIGlzSW5pdGlhbGl6ZWQo
KSBjb25zdDsKKyAgICBib29sIGlzSW5pdGlhbGl6ZWQoKSBjb25zdCBmaW5hbDsKICAgICAKLSAg
ICBib29sIGlzT2ZmbGluZUNvbnRleHQoKSBjb25zdCB7IHJldHVybiBtX2lzT2ZmbGluZUNvbnRl
eHQ7IH0KLQotICAgIERvY3VtZW50KiBkb2N1bWVudCgpIGNvbnN0OyAvLyBBU1NFUlRzIGlmIGRv
Y3VtZW50IG5vIGxvbmdlciBleGlzdHMuCisgICAgYm9vbCBpc09mZmxpbmVDb250ZXh0KCkgY29u
c3QgZmluYWwgeyByZXR1cm4gbV9pc09mZmxpbmVDb250ZXh0OyB9CiAKICAgICBEb2N1bWVudElk
ZW50aWZpZXIgaG9zdGluZ0RvY3VtZW50SWRlbnRpZmllcigpIGNvbnN0IGZpbmFsOwogCiAgICAg
QXVkaW9EZXN0aW5hdGlvbk5vZGUqIGRlc3RpbmF0aW9uKCkgeyByZXR1cm4gbV9kZXN0aW5hdGlv
bk5vZGUuZ2V0KCk7IH0KLSAgICBzaXplX3QgY3VycmVudFNhbXBsZUZyYW1lKCkgY29uc3QgeyBy
ZXR1cm4gbV9kZXN0aW5hdGlvbk5vZGUgPyBtX2Rlc3RpbmF0aW9uTm9kZS0+Y3VycmVudFNhbXBs
ZUZyYW1lKCkgOiAwOyB9Ci0gICAgZG91YmxlIGN1cnJlbnRUaW1lKCkgY29uc3QgeyByZXR1cm4g
bV9kZXN0aW5hdGlvbk5vZGUgPyBtX2Rlc3RpbmF0aW9uTm9kZS0+Y3VycmVudFRpbWUoKSA6IDAu
OyB9Ci0gICAgZmxvYXQgc2FtcGxlUmF0ZSgpIGNvbnN0IHsgcmV0dXJuIG1fZGVzdGluYXRpb25O
b2RlID8gbV9kZXN0aW5hdGlvbk5vZGUtPnNhbXBsZVJhdGUoKSA6IDAuZjsgfQorICAgIHNpemVf
dCBjdXJyZW50U2FtcGxlRnJhbWUoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2Rlc3RpbmF0aW9u
Tm9kZSA/IG1fZGVzdGluYXRpb25Ob2RlLT5jdXJyZW50U2FtcGxlRnJhbWUoKSA6IDA7IH0KKyAg
ICBkb3VibGUgY3VycmVudFRpbWUoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2Rlc3RpbmF0aW9u
Tm9kZSA/IG1fZGVzdGluYXRpb25Ob2RlLT5jdXJyZW50VGltZSgpIDogMC47IH0KKyAgICBmbG9h
dCBzYW1wbGVSYXRlKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9kZXN0aW5hdGlvbk5vZGUgPyBt
X2Rlc3RpbmF0aW9uTm9kZS0+c2FtcGxlUmF0ZSgpIDogMC5mOyB9CiAgICAgdW5zaWduZWQgbG9u
ZyBhY3RpdmVTb3VyY2VDb3VudCgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PHVuc2lnbmVk
IGxvbmc+KG1fYWN0aXZlU291cmNlQ291bnQpOyB9CiAKLSAgICB2b2lkIGluY3JlbWVudEFjdGl2
ZVNvdXJjZUNvdW50KCk7Ci0gICAgdm9pZCBkZWNyZW1lbnRBY3RpdmVTb3VyY2VDb3VudCgpOwor
ICAgIHZvaWQgaW5jcmVtZW50QWN0aXZlU291cmNlQ291bnQoKSBmaW5hbDsKKyAgICB2b2lkIGRl
Y3JlbWVudEFjdGl2ZVNvdXJjZUNvdW50KCkgZmluYWw7CiAgICAgCiAgICAgRXhjZXB0aW9uT3I8
UmVmPEF1ZGlvQnVmZmVyPj4gY3JlYXRlQnVmZmVyKHVuc2lnbmVkIG51bWJlck9mQ2hhbm5lbHMs
IHNpemVfdCBudW1iZXJPZkZyYW1lcywgZmxvYXQgc2FtcGxlUmF0ZSk7CiAgICAgRXhjZXB0aW9u
T3I8UmVmPEF1ZGlvQnVmZmVyPj4gY3JlYXRlQnVmZmVyKEFycmF5QnVmZmVyJiwgYm9vbCBtaXhU
b01vbm8pOwpAQCAtMTMwLDcgKzIzNiw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHJlc3VtZVJlbmRl
cmluZyhET01Qcm9taXNlRGVmZXJyZWQ8dm9pZD4mJik7CiAgICAgdm9pZCBjbG9zZShET01Qcm9t
aXNlRGVmZXJyZWQ8dm9pZD4mJik7CiAKLSAgICBlbnVtIGNsYXNzIFN0YXRlIHsgU3VzcGVuZGVk
LCBSdW5uaW5nLCBJbnRlcnJ1cHRlZCwgQ2xvc2VkIH07CisgICAgdXNpbmcgU3RhdGUgPSBBdWRp
b0NvbnRleHRTdGF0ZTsKICAgICBTdGF0ZSBzdGF0ZSgpIGNvbnN0OwogICAgIGJvb2wgaXNDbG9z
ZWQoKSBjb25zdCB7IHJldHVybiBtX3N0YXRlID09IFN0YXRlOjpDbG9zZWQ7IH0KIApAQCAtMTYw
LDMxICsyNjYsMzEgQEAgcHVibGljOgogICAgIEV4Y2VwdGlvbk9yPFJlZjxQZXJpb2RpY1dhdmU+
PiBjcmVhdGVQZXJpb2RpY1dhdmUoRmxvYXQzMkFycmF5JiByZWFsLCBGbG9hdDMyQXJyYXkmIGlt
YWdpbmFyeSk7CiAKICAgICAvLyBXaGVuIGEgc291cmNlIG5vZGUgaGFzIG5vIG1vcmUgcHJvY2Vz
c2luZyB0byBkbyAoaGFzIGZpbmlzaGVkIHBsYXlpbmcpLCB0aGVuIGl0IHRlbGxzIHRoZSBjb250
ZXh0IHRvIGRlcmVmZXJlbmNlIGl0LgotICAgIHZvaWQgbm90aWZ5Tm9kZUZpbmlzaGVkUHJvY2Vz
c2luZyhBdWRpb05vZGUqKTsKKyAgICB2b2lkIG5vdGlmeU5vZGVGaW5pc2hlZFByb2Nlc3Npbmco
QXVkaW9Ob2RlKikgZmluYWw7CiAKICAgICAvLyBDYWxsZWQgYXQgdGhlIHN0YXJ0IG9mIGVhY2gg
cmVuZGVyIHF1YW50dW0uCi0gICAgdm9pZCBoYW5kbGVQcmVSZW5kZXJUYXNrcygpOworICAgIHZv
aWQgaGFuZGxlUHJlUmVuZGVyVGFza3MoKSBmaW5hbDsKIAogICAgIC8vIENhbGxlZCBhdCB0aGUg
ZW5kIG9mIGVhY2ggcmVuZGVyIHF1YW50dW0uCi0gICAgdm9pZCBoYW5kbGVQb3N0UmVuZGVyVGFz
a3MoKTsKKyAgICB2b2lkIGhhbmRsZVBvc3RSZW5kZXJUYXNrcygpIGZpbmFsOwogCiAgICAgLy8g
Q2FsbGVkIHBlcmlvZGljYWxseSBhdCB0aGUgZW5kIG9mIGVhY2ggcmVuZGVyIHF1YW50dW0gdG8g
ZGVyZWZlcmVuY2UgZmluaXNoZWQgc291cmNlIG5vZGVzLgogICAgIHZvaWQgZGVyZWZGaW5pc2hl
ZFNvdXJjZU5vZGVzKCk7CiAKICAgICAvLyBXZSBzY2hlZHVsZSBkZWxldGlvbiBvZiBhbGwgbWFy
a2VkIG5vZGVzIGF0IHRoZSBlbmQgb2YgZWFjaCByZWFsdGltZSByZW5kZXIgcXVhbnR1bS4KLSAg
ICB2b2lkIG1hcmtGb3JEZWxldGlvbihBdWRpb05vZGUmKTsKLSAgICB2b2lkIGRlbGV0ZU1hcmtl
ZE5vZGVzKCk7CisgICAgdm9pZCBtYXJrRm9yRGVsZXRpb24oQXVkaW9Ob2RlJikgZmluYWw7Cisg
ICAgdm9pZCBkZWxldGVNYXJrZWROb2RlcygpIGZpbmFsOwogCiAgICAgLy8gQXVkaW9Db250ZXh0
IGNhbiBwdWxsIG5vZGUocykgYXQgdGhlIGVuZCBvZiBlYWNoIHJlbmRlciBxdWFudHVtIGV2ZW4g
d2hlbiB0aGV5IGFyZSBub3QgY29ubmVjdGVkIHRvIGFueSBkb3duc3RyZWFtIG5vZGVzLgogICAg
IC8vIFRoZXNlIHR3byBtZXRob2RzIGFyZSBjYWxsZWQgYnkgdGhlIG5vZGVzIHdobyB3YW50IHRv
IGFkZC9yZW1vdmUgdGhlbXNlbHZlcyBpbnRvL2Zyb20gdGhlIGF1dG9tYXRpYyBwdWxsIGxpc3Rz
LgotICAgIHZvaWQgYWRkQXV0b21hdGljUHVsbE5vZGUoQXVkaW9Ob2RlJik7Ci0gICAgdm9pZCBy
ZW1vdmVBdXRvbWF0aWNQdWxsTm9kZShBdWRpb05vZGUmKTsKKyAgICB2b2lkIGFkZEF1dG9tYXRp
Y1B1bGxOb2RlKEF1ZGlvTm9kZSYpIGZpbmFsOworICAgIHZvaWQgcmVtb3ZlQXV0b21hdGljUHVs
bE5vZGUoQXVkaW9Ob2RlJikgZmluYWw7CiAKICAgICAvLyBDYWxsZWQgcmlnaHQgYmVmb3JlIGhh
bmRsZVBvc3RSZW5kZXJUYXNrcygpIHRvIGhhbmRsZSBub2RlcyB3aGljaCBuZWVkIHRvIGJlIHB1
bGxlZCBldmVuIHdoZW4gdGhleSBhcmUgbm90IGNvbm5lY3RlZCB0byBhbnl0aGluZy4KLSAgICB2
b2lkIHByb2Nlc3NBdXRvbWF0aWNQdWxsTm9kZXMoc2l6ZV90IGZyYW1lc1RvUHJvY2Vzcyk7Cisg
ICAgdm9pZCBwcm9jZXNzQXV0b21hdGljUHVsbE5vZGVzKHNpemVfdCBmcmFtZXNUb1Byb2Nlc3Mp
IGZpbmFsOwogCiAgICAgLy8gS2VlcHMgdHJhY2sgb2YgdGhlIG51bWJlciBvZiBjb25uZWN0aW9u
cyBtYWRlLgotICAgIHZvaWQgaW5jcmVtZW50Q29ubmVjdGlvbkNvdW50KCkKKyAgICB2b2lkIGlu
Y3JlbWVudENvbm5lY3Rpb25Db3VudCgpIGZpbmFsCiAgICAgewogICAgICAgICBBU1NFUlQoaXNN
YWluVGhyZWFkKCkpOwogICAgICAgICBtX2Nvbm5lY3Rpb25Db3VudCsrOwpAQCAtMTk2LDEwMyAr
MzAyLDcwIEBAIHB1YmxpYzoKICAgICAvLyBUaHJlYWQgU2FmZXR5IGFuZCBHcmFwaCBMb2NraW5n
OgogICAgIC8vCiAgICAgCi0gICAgdm9pZCBzZXRBdWRpb1RocmVhZChUaHJlYWQmIHRocmVhZCkg
eyBtX2F1ZGlvVGhyZWFkID0gJnRocmVhZDsgfSAvLyBGSVhNRTogY2hlY2sgZWl0aGVyIG5vdCBp
bml0aWFsaXplZCBvciB0aGUgc2FtZQorICAgIHZvaWQgc2V0QXVkaW9UaHJlYWQoVGhyZWFkJiB0
aHJlYWQpIGZpbmFsIHsgbV9hdWRpb1RocmVhZCA9ICZ0aHJlYWQ7IH0gLy8gRklYTUU6IGNoZWNr
IGVpdGhlciBub3QgaW5pdGlhbGl6ZWQgb3IgdGhlIHNhbWUKICAgICBUaHJlYWQqIGF1ZGlvVGhy
ZWFkKCkgY29uc3QgeyByZXR1cm4gbV9hdWRpb1RocmVhZDsgfQotICAgIGJvb2wgaXNBdWRpb1Ro
cmVhZCgpIGNvbnN0OworICAgIGJvb2wgaXNBdWRpb1RocmVhZCgpIGNvbnN0IGZpbmFsOwogCiAg
ICAgLy8gUmV0dXJucyB0cnVlIG9ubHkgYWZ0ZXIgdGhlIGF1ZGlvIHRocmVhZCBoYXMgYmVlbiBz
dGFydGVkIGFuZCB0aGVuIHNodXRkb3duLgotICAgIGJvb2wgaXNBdWRpb1RocmVhZEZpbmlzaGVk
KCkgeyByZXR1cm4gbV9pc0F1ZGlvVGhyZWFkRmluaXNoZWQ7IH0KKyAgICBib29sIGlzQXVkaW9U
aHJlYWRGaW5pc2hlZCgpIGZpbmFsIHsgcmV0dXJuIG1faXNBdWRpb1RocmVhZEZpbmlzaGVkOyB9
CiAgICAgCiAgICAgLy8gbXVzdFJlbGVhc2VMb2NrIGlzIHNldCB0byB0cnVlIGlmIHdlIGFjcXVp
cmVkIHRoZSBsb2NrIGluIHRoaXMgbWV0aG9kIGNhbGwgYW5kIGNhbGxlciBtdXN0IHVubG9jaygp
LCBmYWxzZSBpZiBpdCB3YXMgcHJldmlvdXNseSBhY3F1aXJlZC4KLSAgICB2b2lkIGxvY2soYm9v
bCYgbXVzdFJlbGVhc2VMb2NrKTsKKyAgICB2b2lkIGxvY2soYm9vbCYgbXVzdFJlbGVhc2VMb2Nr
KSBmaW5hbDsKIAogICAgIC8vIFJldHVybnMgdHJ1ZSBpZiB3ZSBvd24gdGhlIGxvY2suCiAgICAg
Ly8gbXVzdFJlbGVhc2VMb2NrIGlzIHNldCB0byB0cnVlIGlmIHdlIGFjcXVpcmVkIHRoZSBsb2Nr
IGluIHRoaXMgbWV0aG9kIGNhbGwgYW5kIGNhbGxlciBtdXN0IHVubG9jaygpLCBmYWxzZSBpZiBp
dCB3YXMgcHJldmlvdXNseSBhY3F1aXJlZC4KLSAgICBib29sIHRyeUxvY2soYm9vbCYgbXVzdFJl
bGVhc2VMb2NrKTsKKyAgICBib29sIHRyeUxvY2soYm9vbCYgbXVzdFJlbGVhc2VMb2NrKSBmaW5h
bDsKIAotICAgIHZvaWQgdW5sb2NrKCk7CisgICAgdm9pZCB1bmxvY2soKSBmaW5hbDsKIAogICAg
IC8vIFJldHVybnMgdHJ1ZSBpZiB0aGlzIHRocmVhZCBvd25zIHRoZSBjb250ZXh0J3MgbG9jay4K
LSAgICBib29sIGlzR3JhcGhPd25lcigpIGNvbnN0OworICAgIGJvb2wgaXNHcmFwaE93bmVyKCkg
Y29uc3QgZmluYWw7CiAKICAgICAvLyBSZXR1cm5zIHRoZSBtYXhpbXVtIG51bWJlciBvZiBjaGFu
bmVscyB3ZSBjYW4gc3VwcG9ydC4KICAgICBzdGF0aWMgdW5zaWduZWQgbWF4TnVtYmVyT2ZDaGFu
bmVscygpIHsgcmV0dXJuIE1heE51bWJlck9mQ2hhbm5lbHM7IH0KLQotICAgIGNsYXNzIEF1dG9M
b2NrZXIgewotICAgIHB1YmxpYzoKLSAgICAgICAgZXhwbGljaXQgQXV0b0xvY2tlcihBdWRpb0Nv
bnRleHQmIGNvbnRleHQpCi0gICAgICAgICAgICA6IG1fY29udGV4dChjb250ZXh0KQotICAgICAg
ICB7Ci0gICAgICAgICAgICBtX2NvbnRleHQubG9jayhtX211c3RSZWxlYXNlTG9jayk7Ci0gICAg
ICAgIH0KLSAgICAgICAgCi0gICAgICAgIH5BdXRvTG9ja2VyKCkKLSAgICAgICAgewotICAgICAg
ICAgICAgaWYgKG1fbXVzdFJlbGVhc2VMb2NrKQotICAgICAgICAgICAgICAgIG1fY29udGV4dC51
bmxvY2soKTsKLSAgICAgICAgfQotCi0gICAgcHJpdmF0ZToKLSAgICAgICAgQXVkaW9Db250ZXh0
JiBtX2NvbnRleHQ7Ci0gICAgICAgIGJvb2wgbV9tdXN0UmVsZWFzZUxvY2s7Ci0gICAgfTsKICAg
ICAKICAgICAvLyBJbiBBdWRpb05vZGU6OmRlcmVmKCkgYSB0cnlMb2NrKCkgaXMgdXNlZCBmb3Ig
Y2FsbGluZyBmaW5pc2hEZXJlZigpLCBidXQgaWYgaXQgZmFpbHMga2VlcCB0cmFjayBoZXJlLgot
ICAgIHZvaWQgYWRkRGVmZXJyZWRGaW5pc2hEZXJlZihBdWRpb05vZGUqKTsKKyAgICB2b2lkIGFk
ZERlZmVycmVkRmluaXNoRGVyZWYoQXVkaW9Ob2RlKikgZmluYWw7CiAKICAgICAvLyBJbiB0aGUg
YXVkaW8gdGhyZWFkIGF0IHRoZSBzdGFydCBvZiBlYWNoIHJlbmRlciBjeWNsZSwgd2UnbGwgY2Fs
bCBoYW5kbGVEZWZlcnJlZEZpbmlzaERlcmVmcygpLgogICAgIHZvaWQgaGFuZGxlRGVmZXJyZWRG
aW5pc2hEZXJlZnMoKTsKIAogICAgIC8vIE9ubHkgYWNjZXNzZWQgd2hlbiB0aGUgZ3JhcGggbG9j
ayBpcyBoZWxkLgotICAgIHZvaWQgbWFya1N1bW1pbmdKdW5jdGlvbkRpcnR5KEF1ZGlvU3VtbWlu
Z0p1bmN0aW9uKik7Ci0gICAgdm9pZCBtYXJrQXVkaW9Ob2RlT3V0cHV0RGlydHkoQXVkaW9Ob2Rl
T3V0cHV0Kik7CisgICAgdm9pZCBtYXJrU3VtbWluZ0p1bmN0aW9uRGlydHkoQXVkaW9TdW1taW5n
SnVuY3Rpb24qKSBmaW5hbDsKKyAgICB2b2lkIG1hcmtBdWRpb05vZGVPdXRwdXREaXJ0eShBdWRp
b05vZGVPdXRwdXQqKSBmaW5hbDsKIAogICAgIC8vIE11c3QgYmUgY2FsbGVkIG9uIG1haW4gdGhy
ZWFkLgotICAgIHZvaWQgcmVtb3ZlTWFya2VkU3VtbWluZ0p1bmN0aW9uKEF1ZGlvU3VtbWluZ0p1
bmN0aW9uKik7CisgICAgdm9pZCByZW1vdmVNYXJrZWRTdW1taW5nSnVuY3Rpb24oQXVkaW9TdW1t
aW5nSnVuY3Rpb24qKSBmaW5hbDsKIAogICAgIC8vIEV2ZW50VGFyZ2V0Ci0gICAgRXZlbnRUYXJn
ZXRJbnRlcmZhY2UgZXZlbnRUYXJnZXRJbnRlcmZhY2UoKSBjb25zdCBmaW5hbCB7IHJldHVybiBB
dWRpb0NvbnRleHRFdmVudFRhcmdldEludGVyZmFjZVR5cGU7IH0KLQotICAgIC8vIFJlY29uY2ls
ZSByZWYvZGVyZWYgd2hpY2ggYXJlIGRlZmluZWQgYm90aCBpbiBUaHJlYWRTYWZlUmVmQ291bnRl
ZCBhbmQgRXZlbnRUYXJnZXQuCi0gICAgdXNpbmcgVGhyZWFkU2FmZVJlZkNvdW50ZWQ6OnJlZjsK
LSAgICB1c2luZyBUaHJlYWRTYWZlUmVmQ291bnRlZDo6ZGVyZWY7CisgICAgRXZlbnRUYXJnZXRJ
bnRlcmZhY2UgZXZlbnRUYXJnZXRJbnRlcmZhY2UoKSBjb25zdCBmaW5hbDsKIAogICAgIHZvaWQg
c3RhcnRSZW5kZXJpbmcoKTsKLSAgICB2b2lkIGZpbmlzaGVkUmVuZGVyaW5nKGJvb2wgZGlkUmVu
ZGVyaW5nKTsKKyAgICB2b2lkIGZpbmlzaGVkUmVuZGVyaW5nKGJvb2wgZGlkUmVuZGVyaW5nKSBm
aW5hbDsKIAogICAgIHN0YXRpYyB1bnNpZ25lZCBzX2hhcmR3YXJlQ29udGV4dENvdW50OwogCiAg
ICAgLy8gUmVzdHJpY3Rpb25zIHRvIGNoYW5nZSBkZWZhdWx0IGJlaGF2aW9ycy4KLSAgICBlbnVt
IEJlaGF2aW9yUmVzdHJpY3Rpb25GbGFncyB7Ci0gICAgICAgIE5vUmVzdHJpY3Rpb25zID0gMCwK
LSAgICAgICAgUmVxdWlyZVVzZXJHZXN0dXJlRm9yQXVkaW9TdGFydFJlc3RyaWN0aW9uID0gMSA8
PCAwLAotICAgICAgICBSZXF1aXJlUGFnZUNvbnNlbnRGb3JBdWRpb1N0YXJ0UmVzdHJpY3Rpb24g
PSAxIDw8IDEsCi0gICAgfTsKLSAgICB0eXBlZGVmIHVuc2lnbmVkIEJlaGF2aW9yUmVzdHJpY3Rp
b25zOwotCi0gICAgQmVoYXZpb3JSZXN0cmljdGlvbnMgYmVoYXZpb3JSZXN0cmljdGlvbnMoKSBj
b25zdCB7IHJldHVybiBtX3Jlc3RyaWN0aW9uczsgfQotICAgIHZvaWQgYWRkQmVoYXZpb3JSZXN0
cmljdGlvbihCZWhhdmlvclJlc3RyaWN0aW9ucyByZXN0cmljdGlvbikgeyBtX3Jlc3RyaWN0aW9u
cyB8PSByZXN0cmljdGlvbjsgfQotICAgIHZvaWQgcmVtb3ZlQmVoYXZpb3JSZXN0cmljdGlvbihC
ZWhhdmlvclJlc3RyaWN0aW9ucyByZXN0cmljdGlvbikgeyBtX3Jlc3RyaWN0aW9ucyAmPSB+cmVz
dHJpY3Rpb247IH0KKyAgICBCZWhhdmlvclJlc3RyaWN0aW9ucyBiZWhhdmlvclJlc3RyaWN0aW9u
cygpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fcmVzdHJpY3Rpb25zOyB9CisgICAgdm9pZCBhZGRC
ZWhhdmlvclJlc3RyaWN0aW9uKEJlaGF2aW9yUmVzdHJpY3Rpb25zIHJlc3RyaWN0aW9uKSBmaW5h
bCB7IG1fcmVzdHJpY3Rpb25zIHw9IHJlc3RyaWN0aW9uOyB9CisgICAgdm9pZCByZW1vdmVCZWhh
dmlvclJlc3RyaWN0aW9uKEJlaGF2aW9yUmVzdHJpY3Rpb25zIHJlc3RyaWN0aW9uKSBmaW5hbCB7
IG1fcmVzdHJpY3Rpb25zICY9IH5yZXN0cmljdGlvbjsgfQogCi0gICAgdm9pZCBpc1BsYXlpbmdB
dWRpb0RpZENoYW5nZSgpOworICAgIHZvaWQgaXNQbGF5aW5nQXVkaW9EaWRDaGFuZ2UoKSBmaW5h
bDsKIAotICAgIHZvaWQgbm9kZVdpbGxCZWdpblBsYXliYWNrKCk7CisgICAgdm9pZCBub2RlV2ls
bEJlZ2luUGxheWJhY2soKSBmaW5hbDsKIAogI2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRAogICAg
IGNvbnN0IExvZ2dlciYgbG9nZ2VyKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9sb2dnZXIuZ2V0
KCk7IH0KICAgICBjb25zdCB2b2lkKiBsb2dJZGVudGlmaWVyKCkgY29uc3QgZmluYWwgeyByZXR1
cm4gbV9sb2dJZGVudGlmaWVyOyB9CiAgICAgV1RGTG9nQ2hhbm5lbCYgbG9nQ2hhbm5lbCgpIGNv
bnN0IGZpbmFsOwotICAgIGNvbnN0IHZvaWQqIG5leHRBdWRpb05vZGVMb2dJZGVudGlmaWVyKCkg
eyByZXR1cm4gY2hpbGRMb2dJZGVudGlmaWVyKG1fbG9nSWRlbnRpZmllciwgKyttX25leHRBdWRp
b05vZGVJZGVudGlmaWVyKTsgfQotICAgIGNvbnN0IHZvaWQqIG5leHRBdWRpb1BhcmFtZXRlckxv
Z0lkZW50aWZpZXIoKSB7IHJldHVybiBjaGlsZExvZ0lkZW50aWZpZXIobV9sb2dJZGVudGlmaWVy
LCArK21fbmV4dEF1ZGlvUGFyYW1ldGVySWRlbnRpZmllcik7IH0KKyAgICBjb25zdCB2b2lkKiBu
ZXh0QXVkaW9Ob2RlTG9nSWRlbnRpZmllcigpIGZpbmFsIHsgcmV0dXJuIGNoaWxkTG9nSWRlbnRp
ZmllcihtX2xvZ0lkZW50aWZpZXIsICsrbV9uZXh0QXVkaW9Ob2RlSWRlbnRpZmllcik7IH0KKyAg
ICBjb25zdCB2b2lkKiBuZXh0QXVkaW9QYXJhbWV0ZXJMb2dJZGVudGlmaWVyKCkgZmluYWwgeyBy
ZXR1cm4gY2hpbGRMb2dJZGVudGlmaWVyKG1fbG9nSWRlbnRpZmllciwgKyttX25leHRBdWRpb1Bh
cmFtZXRlcklkZW50aWZpZXIpOyB9CiAjZW5kaWYKIAotICAgIHZvaWQgcG9zdFRhc2soV1RGOjpG
dW5jdGlvbjx2b2lkKCk+JiYpOwotICAgIGJvb2wgaXNTdG9wcGVkKCkgY29uc3QgeyByZXR1cm4g
bV9pc1N0b3BTY2hlZHVsZWQ7IH0KLSAgICBjb25zdCBTZWN1cml0eU9yaWdpbiogb3JpZ2luKCkg
Y29uc3Q7Ci0gICAgdm9pZCBhZGRDb25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNlLCBNZXNzYWdl
TGV2ZWwsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSk7Ci0KLSAgICAvLyBFdmVudFRhcmdldAotICAg
IFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSBjb25zdCBm
aW5hbDsKKyAgICB2b2lkIHBvc3RUYXNrKFdURjo6RnVuY3Rpb248dm9pZCgpPiYmKSBmaW5hbDsK
KyAgICBib29sIGlzU3RvcHBlZCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1faXNTdG9wU2NoZWR1
bGVkOyB9CisgICAgY29uc3QgU2VjdXJpdHlPcmlnaW4qIG9yaWdpbigpIGNvbnN0IGZpbmFsOwor
ICAgIHZvaWQgYWRkQ29uc29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZSwgTWVzc2FnZUxldmVsLCBj
b25zdCBTdHJpbmcmIG1lc3NhZ2UpIGZpbmFsOwogCiBwcm90ZWN0ZWQ6CiAgICAgZXhwbGljaXQg
QXVkaW9Db250ZXh0KERvY3VtZW50Jik7CkBAIC0zNjAsOSArNDMzLDggQEAgcHJpdmF0ZToKIAog
ICAgIHZvaWQgdmlzaWJpbGl0eVN0YXRlQ2hhbmdlZCgpIGZpbmFsOwogCi0gICAgLy8gRXZlbnRU
YXJnZXQKLSAgICB2b2lkIHJlZkV2ZW50VGFyZ2V0KCkgb3ZlcnJpZGUgeyByZWYoKTsgfQotICAg
IHZvaWQgZGVyZWZFdmVudFRhcmdldCgpIG92ZXJyaWRlIHsgZGVyZWYoKTsgfQorICAgIGJvb2wg
aXNBdWRpb0NvbnRleHQoKSBjb25zdCBmaW5hbCB7IHJldHVybiB0cnVlOyB9CisgICAgYm9vbCBp
c1dlYktpdEF1ZGlvQ29udGV4dCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIGZhbHNlOyB9CiAKICAg
ICB2b2lkIGhhbmRsZURpcnR5QXVkaW9TdW1taW5nSnVuY3Rpb25zKCk7CiAgICAgdm9pZCBoYW5k
bGVEaXJ0eUF1ZGlvTm9kZU91dHB1dHMoKTsKQEAgLTQ0NiwyMSArNTE4LDEzIEBAIHByaXZhdGU6
CiAgICAgUmVmUHRyPFBlbmRpbmdBY3Rpdml0eTxBdWRpb0NvbnRleHQ+PiBtX3BlbmRpbmdBY3Rp
dml0eTsKIH07CiAKLS8vIEZJWE1FOiBGaW5kIG91dCB3aHkgdGhlc2UgPT0vIT0gZnVuY3Rpb25z
IGFyZSBuZWVkZWQgYW5kIHJlbW92ZSB0aGVtIGlmIHBvc3NpYmxlLgotCi1pbmxpbmUgYm9vbCBv
cGVyYXRvcj09KGNvbnN0IEF1ZGlvQ29udGV4dCYgbGhzLCBjb25zdCBBdWRpb0NvbnRleHQmIHJo
cykKLXsKLSAgICByZXR1cm4gJmxocyA9PSAmcmhzOwotfQotCi1pbmxpbmUgYm9vbCBvcGVyYXRv
ciE9KGNvbnN0IEF1ZGlvQ29udGV4dCYgbGhzLCBjb25zdCBBdWRpb0NvbnRleHQmIHJocykKLXsK
LSAgICByZXR1cm4gJmxocyAhPSAmcmhzOwotfQotCiBpbmxpbmUgQXVkaW9Db250ZXh0OjpTdGF0
ZSBBdWRpb0NvbnRleHQ6OnN0YXRlKCkgY29uc3QKIHsKICAgICByZXR1cm4gbV9zdGF0ZTsKIH0K
IAogfSAvLyBXZWJDb3JlCisKK1NQRUNJQUxJWkVfVFlQRV9UUkFJVFNfQkVHSU4oV2ViQ29yZTo6
QXVkaW9Db250ZXh0KQorICAgIHN0YXRpYyBib29sIGlzVHlwZShjb25zdCBXZWJDb3JlOjpBdWRp
b0NvbnRleHRCYXNlJiBjb250ZXh0KSB7IHJldHVybiBjb250ZXh0LmlzQXVkaW9Db250ZXh0KCk7
IH0KK1NQRUNJQUxJWkVfVFlQRV9UUkFJVFNfRU5EKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0LmlkbCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0LmlkbAppbmRleCBlNzExODM5YjMzMzAwZGUzNDFj
MjMxYzRjYzk2ZTllNTc2MzI0MTM1Li5mMWQ0OWNhMzY4ZDY0NTA2YWJhYjU2OTc5MDllZTA5NzIx
YjVkOGNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlv
Q29udGV4dC5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0Nv
bnRleHQuaWRsCkBAIC0yMywxOSArMjMsMTEgQEAKICAqIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLWVudW0gQXVkaW9D
b250ZXh0U3RhdGUgewotICAgICJzdXNwZW5kZWQiLAotICAgICJydW5uaW5nIiwKLSAgICAiaW50
ZXJydXB0ZWQiLAotICAgICJjbG9zZWQiCi19OwotCiBbCiAgICAgQWN0aXZlRE9NT2JqZWN0LAog
ICAgIENvbmRpdGlvbmFsPVdFQl9BVURJTywKLSAgICBFbmFibGVkQnlTZXR0aW5nPVdlYkF1ZGlv
LAorICAgIEVuYWJsZWRCeVNldHRpbmc9TW9kZXJuVW5wcmVmaXhlZFdlYkF1ZGlvLAogICAgIEV4
cG9ydE1hY3JvPVdFQkNPUkVfRVhQT1JULAotICAgIEludGVyZmFjZU5hbWU9d2Via2l0QXVkaW9D
b250ZXh0LAogXSBpbnRlcmZhY2UgQXVkaW9Db250ZXh0IDogRXZlbnRUYXJnZXQgewogICAgIFtD
YWxsV2l0aD1Eb2N1bWVudCwgTWF5VGhyb3dFeGNlcHRpb25dIGNvbnN0cnVjdG9yKCk7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0U3Rh
dGUuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0U3RhdGUu
aApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi4xNjAxMzExMDhmYTZhNGMxNGE5YWQ2MTdiOTJjYTIxNDc0NDg3ODBiCi0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0Nv
bnRleHRTdGF0ZS5oCkBAIC0wLDAgKzEsMzIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAg
R29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNi0y
MDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFS
RQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OCisgKiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKKyAqIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25j
ZQorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2VudW0gY2xhc3MgQXVkaW9Db250ZXh0U3RhdGUg
eyBTdXNwZW5kZWQsIFJ1bm5pbmcsIEludGVycnVwdGVkLCBDbG9zZWQgfTsKKworfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0NvbnRleHRTdGF0ZS5p
ZGwgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQ29udGV4dFN0YXRlLmlk
bApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi5jOGQwOGJkMmI1NjNjZDgyNmVjY2E3Zjk3OTQ0YzcxM2E4YTdlZjRiCi0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0Nv
bnRleHRTdGF0ZS5pZGwKQEAgLTAsMCArMSwzMSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
MCwgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAx
MSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUK
KyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTgorICogQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTCisgKiBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCitlbnVtIEF1ZGlvQ29u
dGV4dFN0YXRlIHsKKyAgICAic3VzcGVuZGVkIiwKKyAgICAicnVubmluZyIsCisgICAgImludGVy
cnVwdGVkIiwKKyAgICAiY2xvc2VkIgorfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViYXVkaW8vQXVkaW9EZXN0aW5hdGlvbk5vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJhdWRpby9BdWRpb0Rlc3RpbmF0aW9uTm9kZS5jcHAKaW5kZXggZDlhYmI5Nzc3
YTlkMjVlZWFmMjQyZmY0ZmZmYzVlYzVlZjQ4NmM0ZS4uNjc3NjE3ZWNiMzM4ZGE4OTFhNzEzYWU4
OGEzZjVmNjRmNmZkODQ5YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJh
dWRpby9BdWRpb0Rlc3RpbmF0aW9uTm9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJhdWRpby9BdWRpb0Rlc3RpbmF0aW9uTm9kZS5jcHAKQEAgLTM5LDcgKzM5LDcgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogICAgIAogV1RGX01BS0VfSVNPX0FMTE9DQVRFRF9JTVBMKEF1ZGlv
RGVzdGluYXRpb25Ob2RlKTsKIAotQXVkaW9EZXN0aW5hdGlvbk5vZGU6OkF1ZGlvRGVzdGluYXRp
b25Ob2RlKEF1ZGlvQ29udGV4dCYgY29udGV4dCwgZmxvYXQgc2FtcGxlUmF0ZSkKK0F1ZGlvRGVz
dGluYXRpb25Ob2RlOjpBdWRpb0Rlc3RpbmF0aW9uTm9kZShBdWRpb0NvbnRleHRCYXNlJiBjb250
ZXh0LCBmbG9hdCBzYW1wbGVSYXRlKQogICAgIDogQXVkaW9Ob2RlKGNvbnRleHQsIHNhbXBsZVJh
dGUpCiAgICAgLCBtX2N1cnJlbnRTYW1wbGVGcmFtZSgwKQogICAgICwgbV9pc1NpbGVudCh0cnVl
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0Rlc3Rp
bmF0aW9uTm9kZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0Rlc3Rp
bmF0aW9uTm9kZS5oCmluZGV4IDg5NDhmNGVlNzBhNWMwZTgxYThlODNjMWYwY2Q1ZmNmNDUxYWNj
NjAuLjM3NmY0NjI3MTJkN2YxYzJhZThkNTIwMTFmYTJhMTVmNmUxOGFlYzcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9EZXN0aW5hdGlvbk5vZGUuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvRGVzdGluYXRpb25Ob2Rl
LmgKQEAgLTM2LDcgKzM2LDcgQEAgY2xhc3MgQXVkaW9Db250ZXh0OwogY2xhc3MgQXVkaW9EZXN0
aW5hdGlvbk5vZGUgOiBwdWJsaWMgQXVkaW9Ob2RlLCBwdWJsaWMgQXVkaW9JT0NhbGxiYWNrIHsK
ICAgICBXVEZfTUFLRV9JU09fQUxMT0NBVEVEKEF1ZGlvRGVzdGluYXRpb25Ob2RlKTsKIHB1Ymxp
YzoKLSAgICBBdWRpb0Rlc3RpbmF0aW9uTm9kZShBdWRpb0NvbnRleHQmLCBmbG9hdCBzYW1wbGVS
YXRlKTsKKyAgICBBdWRpb0Rlc3RpbmF0aW9uTm9kZShBdWRpb0NvbnRleHRCYXNlJiwgZmxvYXQg
c2FtcGxlUmF0ZSk7CiAgICAgdmlydHVhbCB+QXVkaW9EZXN0aW5hdGlvbk5vZGUoKTsKICAgICAK
ICAgICAvLyBBdWRpb05vZGUgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViYXVkaW8vQXVkaW9Ob2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8v
QXVkaW9Ob2RlLmNwcAppbmRleCA3NjVlY2UzMzJmNjM2OWM0MTk4ZmU1N2RkM2FlN2NjNTE5M2Iy
YWNhLi5lNTU0Mzc3OWQ1MWE1MDhjZTYxYTZhMDgzMTEyZThkMmQwYTg3ZDBkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvTm9kZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb05vZGUuY3BwCkBAIC0zMyw2ICszMyw3
IEBACiAjaW5jbHVkZSAiQXVkaW9Ob2RlT3V0cHV0LmgiCiAjaW5jbHVkZSAiQXVkaW9QYXJhbS5o
IgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKKyNpbmNsdWRlICJXZWJLaXRBdWRpb0NvbnRleHQuaCIK
ICNpbmNsdWRlIDx3dGYvQXRvbWljcy5oPgogI2luY2x1ZGUgPHd0Zi9Jc29NYWxsb2NJbmxpbmVz
Lmg+CiAjaW5jbHVkZSA8d3RmL01haW5UaHJlYWQuaD4KQEAgLTk1LDcgKzk2LDcgQEAgU3RyaW5n
IGNvbnZlcnRFbnVtZXJhdGlvblRvU3RyaW5nKEF1ZGlvTm9kZTo6Tm9kZVR5cGUgZW51bWVyYXRp
b25WYWx1ZSkKICAgICByZXR1cm4gdmFsdWVzW3N0YXRpY19jYXN0PHNpemVfdD4oZW51bWVyYXRp
b25WYWx1ZSldOwogfQogCi1BdWRpb05vZGU6OkF1ZGlvTm9kZShBdWRpb0NvbnRleHQmIGNvbnRl
eHQsIGZsb2F0IHNhbXBsZVJhdGUpCitBdWRpb05vZGU6OkF1ZGlvTm9kZShBdWRpb0NvbnRleHRC
YXNlJiBjb250ZXh0LCBmbG9hdCBzYW1wbGVSYXRlKQogICAgIDogbV9pc0luaXRpYWxpemVkKGZh
bHNlKQogICAgICwgbV9ub2RlVHlwZShOb2RlVHlwZVVua25vd24pCiAgICAgLCBtX2NvbnRleHQo
Y29udGV4dCkKQEAgLTE5NCw3ICsxOTUsNyBAQCBBdWRpb05vZGVPdXRwdXQqIEF1ZGlvTm9kZTo6
b3V0cHV0KHVuc2lnbmVkIGkpCiBFeGNlcHRpb25Pcjx2b2lkPiBBdWRpb05vZGU6OmNvbm5lY3Qo
QXVkaW9Ob2RlJiBkZXN0aW5hdGlvbiwgdW5zaWduZWQgb3V0cHV0SW5kZXgsIHVuc2lnbmVkIGlu
cHV0SW5kZXgpCiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKLSAgICBBdWRpb0NvbnRl
eHQ6OkF1dG9Mb2NrZXIgbG9ja2VyKGNvbnRleHQoKSk7CisgICAgQXVkaW9Db250ZXh0QmFzZTo6
QXV0b0xvY2tlciBsb2NrZXIoY29udGV4dCgpKTsKIAogICAgIEFMV0FZU19MT0coTE9HSURFTlRJ
RklFUiwgZGVzdGluYXRpb24ubm9kZVR5cGUoKSwgIiwgb3V0cHV0ID0gIiwgb3V0cHV0SW5kZXgs
ICIsIGlucHV0ID0gIiwgaW5wdXRJbmRleCk7CiAgICAgCkBAIC0yMDUsNyArMjA2LDcgQEAgRXhj
ZXB0aW9uT3I8dm9pZD4gQXVkaW9Ob2RlOjpjb25uZWN0KEF1ZGlvTm9kZSYgZGVzdGluYXRpb24s
IHVuc2lnbmVkIG91dHB1dEluZGUKICAgICBpZiAoaW5wdXRJbmRleCA+PSBkZXN0aW5hdGlvbi5u
dW1iZXJPZklucHV0cygpKQogICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgSW5kZXhTaXplRXJy
b3IgfTsKIAotICAgIGlmIChjb250ZXh0KCkgIT0gZGVzdGluYXRpb24uY29udGV4dCgpKQorICAg
IGlmICgmY29udGV4dCgpICE9ICZkZXN0aW5hdGlvbi5jb250ZXh0KCkpCiAgICAgICAgIHJldHVy
biBFeGNlcHRpb24geyBTeW50YXhFcnJvciB9OwogCiAgICAgYXV0byogaW5wdXQgPSBkZXN0aW5h
dGlvbi5pbnB1dChpbnB1dEluZGV4KTsKQEAgLTIyMCw3ICsyMjEsNyBAQCBFeGNlcHRpb25Pcjx2
b2lkPiBBdWRpb05vZGU6OmNvbm5lY3QoQXVkaW9Ob2RlJiBkZXN0aW5hdGlvbiwgdW5zaWduZWQg
b3V0cHV0SW5kZQogCiBFeGNlcHRpb25Pcjx2b2lkPiBBdWRpb05vZGU6OmNvbm5lY3QoQXVkaW9Q
YXJhbSYgcGFyYW0sIHVuc2lnbmVkIG91dHB1dEluZGV4KQogewotICAgIEF1ZGlvQ29udGV4dDo6
QXV0b0xvY2tlciBsb2NrZXIoY29udGV4dCgpKTsKKyAgICBBdWRpb0NvbnRleHRCYXNlOjpBdXRv
TG9ja2VyIGxvY2tlcihjb250ZXh0KCkpOwogCiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsK
IApAQCAtMjI5LDcgKzIzMCw3IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IEF1ZGlvTm9kZTo6Y29ubmVj
dChBdWRpb1BhcmFtJiBwYXJhbSwgdW5zaWduZWQgb3V0cHV0SW5kZXgpCiAgICAgaWYgKG91dHB1
dEluZGV4ID49IG51bWJlck9mT3V0cHV0cygpKQogICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsg
SW5kZXhTaXplRXJyb3IgfTsKIAotICAgIGlmIChjb250ZXh0KCkgIT0gcGFyYW0uY29udGV4dCgp
KQorICAgIGlmICgmY29udGV4dCgpICE9ICZwYXJhbS5jb250ZXh0KCkpCiAgICAgICAgIHJldHVy
biBFeGNlcHRpb24geyBTeW50YXhFcnJvciB9OwogCiAgICAgYXV0byogb3V0cHV0ID0gdGhpcy0+
b3V0cHV0KG91dHB1dEluZGV4KTsKQEAgLTI0MSw3ICsyNDIsNyBAQCBFeGNlcHRpb25Pcjx2b2lk
PiBBdWRpb05vZGU6OmNvbm5lY3QoQXVkaW9QYXJhbSYgcGFyYW0sIHVuc2lnbmVkIG91dHB1dElu
ZGV4KQogRXhjZXB0aW9uT3I8dm9pZD4gQXVkaW9Ob2RlOjpkaXNjb25uZWN0KHVuc2lnbmVkIG91
dHB1dEluZGV4KQogewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7Ci0gICAgQXVkaW9Db250
ZXh0OjpBdXRvTG9ja2VyIGxvY2tlcihjb250ZXh0KCkpOworICAgIEF1ZGlvQ29udGV4dEJhc2U6
OkF1dG9Mb2NrZXIgbG9ja2VyKGNvbnRleHQoKSk7CiAKICAgICAvLyBTYW5pdHkgY2hlY2sgaW5w
dXQgYW5kIG91dHB1dCBpbmRpY2VzLgogICAgIGlmIChvdXRwdXRJbmRleCA+PSBudW1iZXJPZk91
dHB1dHMoKSkKQEAgLTI2Myw3ICsyNjQsNyBAQCB1bnNpZ25lZCBBdWRpb05vZGU6OmNoYW5uZWxD
b3VudCgpCiBFeGNlcHRpb25Pcjx2b2lkPiBBdWRpb05vZGU6OnNldENoYW5uZWxDb3VudCh1bnNp
Z25lZCBjaGFubmVsQ291bnQpCiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKLSAgICBB
dWRpb0NvbnRleHQ6OkF1dG9Mb2NrZXIgbG9ja2VyKGNvbnRleHQoKSk7CisgICAgQXVkaW9Db250
ZXh0QmFzZTo6QXV0b0xvY2tlciBsb2NrZXIoY29udGV4dCgpKTsKIAogICAgIEFMV0FZU19MT0co
TE9HSURFTlRJRklFUiwgY2hhbm5lbENvdW50KTsKICAgICAKQEAgLTI5Niw3ICsyOTcsNyBAQCBT
dHJpbmcgQXVkaW9Ob2RlOjpjaGFubmVsQ291bnRNb2RlKCkKIEV4Y2VwdGlvbk9yPHZvaWQ+IEF1
ZGlvTm9kZTo6c2V0Q2hhbm5lbENvdW50TW9kZShjb25zdCBTdHJpbmcmIG1vZGUpCiB7CiAgICAg
QVNTRVJUKGlzTWFpblRocmVhZCgpKTsKLSAgICBBdWRpb0NvbnRleHQ6OkF1dG9Mb2NrZXIgbG9j
a2VyKGNvbnRleHQoKSk7CisgICAgQXVkaW9Db250ZXh0QmFzZTo6QXV0b0xvY2tlciBsb2NrZXIo
Y29udGV4dCgpKTsKIAogICAgIEFMV0FZU19MT0coTE9HSURFTlRJRklFUiwgbW9kZSk7CiAgICAg
CkBAIC0zMzIsNyArMzMzLDcgQEAgU3RyaW5nIEF1ZGlvTm9kZTo6Y2hhbm5lbEludGVycHJldGF0
aW9uKCkKIEV4Y2VwdGlvbk9yPHZvaWQ+IEF1ZGlvTm9kZTo6c2V0Q2hhbm5lbEludGVycHJldGF0
aW9uKGNvbnN0IFN0cmluZyYgaW50ZXJwcmV0YXRpb24pCiB7CiAgICAgQVNTRVJUKGlzTWFpblRo
cmVhZCgpKTsKLSAgICBBdWRpb0NvbnRleHQ6OkF1dG9Mb2NrZXIgbG9ja2VyKGNvbnRleHQoKSk7
CisgICAgQXVkaW9Db250ZXh0QmFzZTo6QXV0b0xvY2tlciBsb2NrZXIoY29udGV4dCgpKTsKIAog
ICAgIEFMV0FZU19MT0coTE9HSURFTlRJRklFUiwgaW50ZXJwcmV0YXRpb24pOwogICAgIApAQCAt
NDM3LDcgKzQzOCw3IEBAIHZvaWQgQXVkaW9Ob2RlOjplbmFibGVPdXRwdXRzSWZOZWNlc3Nhcnko
KQogewogICAgIGlmIChtX2lzRGlzYWJsZWQgJiYgbV9jb25uZWN0aW9uUmVmQ291bnQgPiAwKSB7
CiAgICAgICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7Ci0gICAgICAgIEF1ZGlvQ29udGV4dDo6
QXV0b0xvY2tlciBsb2NrZXIoY29udGV4dCgpKTsKKyAgICAgICAgQXVkaW9Db250ZXh0QmFzZTo6
QXV0b0xvY2tlciBsb2NrZXIoY29udGV4dCgpKTsKIAogICAgICAgICBtX2lzRGlzYWJsZWQgPSBm
YWxzZTsKICAgICAgICAgZm9yIChhdXRvJiBvdXRwdXQgOiBtX291dHB1dHMpCkBAIC01MDEsNyAr
NTAyLDcgQEAgdm9pZCBBdWRpb05vZGU6OmRlcmVmKFJlZlR5cGUgcmVmVHlwZSkKICAgICAvLyBJ
biB0aGUgY2FzZSBvZiB0aGUgYXVkaW8gdGhyZWFkLCB3ZSBtdXN0IHVzZSBhIHRyeUxvY2sgdG8g
YXZvaWQgZ2xpdGNoZXMuCiAgICAgYm9vbCBoYXNMb2NrID0gZmFsc2U7CiAgICAgYm9vbCBtdXN0
UmVsZWFzZUxvY2sgPSBmYWxzZTsKLSAgICAKKwogICAgIGlmIChjb250ZXh0KCkuaXNBdWRpb1Ro
cmVhZCgpKSB7CiAgICAgICAgIC8vIFJlYWwtdGltZSBhdWRpbyB0aHJlYWQgbXVzdCBub3QgY29u
dGVuZCBsb2NrICh0byBhdm9pZCBnbGl0Y2hlcykuCiAgICAgICAgIGhhc0xvY2sgPSBjb250ZXh0
KCkudHJ5TG9jayhtdXN0UmVsZWFzZUxvY2spOwpAQCAtNTMwLDYgKzUzMSwxMyBAQCB2b2lkIEF1
ZGlvTm9kZTo6ZGVyZWYoUmVmVHlwZSByZWZUeXBlKQogICAgICAgICBjb250ZXh0KCkuZGVsZXRl
TWFya2VkTm9kZXMoKTsKIH0KIAorVmFyaWFudDxSZWZQdHI8QXVkaW9Db250ZXh0PiwgUmVmUHRy
PFdlYktpdEF1ZGlvQ29udGV4dD4+IEF1ZGlvTm9kZTo6Y29udGV4dEZvckJpbmRpbmdzKCkgY29u
c3QKK3sKKyAgICBpZiAobV9jb250ZXh0LT5pc1dlYktpdEF1ZGlvQ29udGV4dCgpKQorICAgICAg
ICByZXR1cm4gbWFrZVJlZlB0cihzdGF0aWNfY2FzdDxXZWJLaXRBdWRpb0NvbnRleHQmPihtX2Nv
bnRleHQuZ2V0KCkpKTsKKyAgICByZXR1cm4gbWFrZVJlZlB0cihzdGF0aWNfY2FzdDxBdWRpb0Nv
bnRleHQmPihtX2NvbnRleHQuZ2V0KCkpKTsKK30KKwogdm9pZCBBdWRpb05vZGU6OmZpbmlzaERl
cmVmKFJlZlR5cGUgcmVmVHlwZSkKIHsKICAgICBBU1NFUlQoY29udGV4dCgpLmlzR3JhcGhPd25l
cigpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9O
b2RlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvTm9kZS5oCmluZGV4
IDQyMTAxMDA2Y2M3ZjU0ZWU3NWFkZjcwNzJlZmJlNjRiYWM1OGQzNmQuLmE5ODgxYmQ0YjhkYjRj
M2IxMGY5ZDc3MTE2NTYyNjAwYzE4MGZjOTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViYXVkaW8vQXVkaW9Ob2RlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJhdWRpby9BdWRpb05vZGUuaApAQCAtMjksMTUgKzI5LDE4IEBACiAjaW5jbHVkZSAiRXhjZXB0
aW9uT3IuaCIKICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9Mb2dnZXJI
ZWxwZXIuaD4KKyNpbmNsdWRlIDx3dGYvVmFyaWFudC5oPgogCiAjZGVmaW5lIERFQlVHX0FVRElP
Tk9ERV9SRUZFUkVOQ0VTIDAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBBdWRpb0Nv
bnRleHQ7CitjbGFzcyBBdWRpb0NvbnRleHRCYXNlOwogY2xhc3MgQXVkaW9Ob2RlSW5wdXQ7CiBj
bGFzcyBBdWRpb05vZGVPdXRwdXQ7CiBjbGFzcyBBdWRpb1BhcmFtOworY2xhc3MgV2ViS2l0QXVk
aW9Db250ZXh0OwogCiAvLyBBbiBBdWRpb05vZGUgaXMgdGhlIGJhc2ljIGJ1aWxkaW5nIGJsb2Nr
IGZvciBoYW5kbGluZyBhdWRpbyB3aXRoaW4gYW4gQXVkaW9Db250ZXh0LgogLy8gSXQgbWF5IGJl
IGFuIGF1ZGlvIHNvdXJjZSwgYW4gaW50ZXJtZWRpYXRlIHByb2Nlc3NpbmcgbW9kdWxlLCBvciBh
biBhdWRpbyBkZXN0aW5hdGlvbi4KQEAgLTU2LDExICs1OSwxMyBAQCBjbGFzcyBBdWRpb05vZGUK
IHB1YmxpYzoKICAgICBlbnVtIHsgUHJvY2Vzc2luZ1NpemVJbkZyYW1lcyA9IDEyOCB9OwogCi0g
ICAgQXVkaW9Ob2RlKEF1ZGlvQ29udGV4dCYsIGZsb2F0IHNhbXBsZVJhdGUpOworICAgIEF1ZGlv
Tm9kZShBdWRpb0NvbnRleHRCYXNlJiwgZmxvYXQgc2FtcGxlUmF0ZSk7CiAgICAgdmlydHVhbCB+
QXVkaW9Ob2RlKCk7CiAKLSAgICBBdWRpb0NvbnRleHQmIGNvbnRleHQoKSB7IHJldHVybiBtX2Nv
bnRleHQuZ2V0KCk7IH0KLSAgICBjb25zdCBBdWRpb0NvbnRleHQmIGNvbnRleHQoKSBjb25zdCB7
IHJldHVybiBtX2NvbnRleHQuZ2V0KCk7IH0KKyAgICBBdWRpb0NvbnRleHRCYXNlJiBjb250ZXh0
KCkgeyByZXR1cm4gbV9jb250ZXh0LmdldCgpOyB9CisgICAgY29uc3QgQXVkaW9Db250ZXh0QmFz
ZSYgY29udGV4dCgpIGNvbnN0IHsgcmV0dXJuIG1fY29udGV4dC5nZXQoKTsgfQorCisgICAgVmFy
aWFudDxSZWZQdHI8QXVkaW9Db250ZXh0PiwgUmVmUHRyPFdlYktpdEF1ZGlvQ29udGV4dD4+IGNv
bnRleHRGb3JCaW5kaW5ncygpIGNvbnN0OwogCiAgICAgZW51bSBOb2RlVHlwZSB7CiAgICAgICAg
IE5vZGVUeXBlVW5rbm93biwKQEAgLTIwOSw3ICsyMTQsNyBAQCBwcml2YXRlOgogCiAgICAgdm9s
YXRpbGUgYm9vbCBtX2lzSW5pdGlhbGl6ZWQ7CiAgICAgTm9kZVR5cGUgbV9ub2RlVHlwZTsKLSAg
ICBSZWY8QXVkaW9Db250ZXh0PiBtX2NvbnRleHQ7CisgICAgUmVmPEF1ZGlvQ29udGV4dEJhc2U+
IG1fY29udGV4dDsKICAgICBmbG9hdCBtX3NhbXBsZVJhdGU7CiAgICAgVmVjdG9yPHN0ZDo6dW5p
cXVlX3B0cjxBdWRpb05vZGVJbnB1dD4+IG1faW5wdXRzOwogICAgIFZlY3RvcjxzdGQ6OnVuaXF1
ZV9wdHI8QXVkaW9Ob2RlT3V0cHV0Pj4gbV9vdXRwdXRzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb05vZGUuaWRsIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJhdWRpby9BdWRpb05vZGUuaWRsCmluZGV4IDcwZmVjOGM4MTQ1MDU5OTFlMjBhZDhj
MWM5MmNjMTFlZWU5Njg0MmYuLjcxOTM5YzgzMTcxNGJmYmYzNmRmYmFlNTJmYmMzZDNkMjAyZjY2
MjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Ob2Rl
LmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvTm9kZS5pZGwK
QEAgLTI1LDcgKzI1LDcgQEAKIFsKICAgICBDb25kaXRpb25hbD1XRUJfQVVESU8sCiBdIGludGVy
ZmFjZSBBdWRpb05vZGUgOiBFdmVudFRhcmdldCB7Ci0gICAgcmVhZG9ubHkgYXR0cmlidXRlIEF1
ZGlvQ29udGV4dCBjb250ZXh0OworICAgIFtJbXBsZW1lbnRlZEFzPWNvbnRleHRGb3JCaW5kaW5n
c10gcmVhZG9ubHkgYXR0cmlidXRlIChBdWRpb0NvbnRleHQgb3IgV2ViS2l0QXVkaW9Db250ZXh0
KSBjb250ZXh0OwogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSB1bnNpZ25lZCBsb25nIG51bWJlck9m
SW5wdXRzOwogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSB1bnNpZ25lZCBsb25nIG51bWJlck9mT3V0
cHV0czsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRp
b05vZGVPdXRwdXQuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Ob2Rl
T3V0cHV0LmgKaW5kZXggNTBhOTVlZTIwNWMxMjAzMDkzY2E1ZmMzMDcxNzk5MTM1MzJkNzNhNC4u
ZjA4OTgzNjM1ZjNjNTU5Yzc5ODFmMGJhNGE1YzEyMmIxNTljMmNiNSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb05vZGVPdXRwdXQuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvTm9kZU91dHB1dC5oCkBAIC00Nyw3ICs0
Nyw3IEBAIHB1YmxpYzoKIAogICAgIC8vIENhbiBiZSBjYWxsZWQgZnJvbSBhbnkgdGhyZWFkLgog
ICAgIEF1ZGlvTm9kZSogbm9kZSgpIGNvbnN0IHsgcmV0dXJuIG1fbm9kZTsgfQotICAgIEF1ZGlv
Q29udGV4dCYgY29udGV4dCgpIHsgcmV0dXJuIG1fbm9kZS0+Y29udGV4dCgpOyB9CisgICAgQXVk
aW9Db250ZXh0QmFzZSYgY29udGV4dCgpIHsgcmV0dXJuIG1fbm9kZS0+Y29udGV4dCgpOyB9CiAg
ICAgCiAgICAgLy8gQ2F1c2VzIG91ciBBdWRpb05vZGUgdG8gcHJvY2VzcyBpZiBpdCBoYXNuJ3Qg
YWxyZWFkeSBmb3IgdGhpcyByZW5kZXIgcXVhbnR1bS4KICAgICAvLyBJdCByZXR1cm5zIHRoZSBi
dXMgY29udGFpbmluZyB0aGUgcHJvY2Vzc2VkIGF1ZGlvIGZvciB0aGlzIG91dHB1dCwgcmV0dXJu
aW5nIGluUGxhY2VCdXMgaWYgaW4tcGxhY2UgcHJvY2Vzc2luZyB3YXMgcG9zc2libGUuCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvUGFyYW0uY3BwIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1BhcmFtLmNwcAppbmRleCAyOTM0
NTY0NDVjYzBlMWJkYTlkMDBkMmJkOWEyYzBkMTExMDNkY2M5Li5kNDcwYmY3NDZlZmI1YWIyM2Nh
MzUyZDdiZDk1MzM4YzM4MTRmZTdjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmF1ZGlvL0F1ZGlvUGFyYW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
YXVkaW8vQXVkaW9QYXJhbS5jcHAKQEAgLTQxLDcgKzQxLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogY29uc3QgZG91YmxlIEF1ZGlvUGFyYW06OkRlZmF1bHRTbW9vdGhpbmdDb25zdGFudCA9IDAu
MDU7CiBjb25zdCBkb3VibGUgQXVkaW9QYXJhbTo6U25hcFRocmVzaG9sZCA9IDAuMDAxOwogCi1B
dWRpb1BhcmFtOjpBdWRpb1BhcmFtKEF1ZGlvQ29udGV4dCYgY29udGV4dCwgY29uc3QgU3RyaW5n
JiBuYW1lLCBkb3VibGUgZGVmYXVsdFZhbHVlLCBkb3VibGUgbWluVmFsdWUsIGRvdWJsZSBtYXhW
YWx1ZSwgdW5zaWduZWQgdW5pdHMpCitBdWRpb1BhcmFtOjpBdWRpb1BhcmFtKEF1ZGlvQ29udGV4
dEJhc2UmIGNvbnRleHQsIGNvbnN0IFN0cmluZyYgbmFtZSwgZG91YmxlIGRlZmF1bHRWYWx1ZSwg
ZG91YmxlIG1pblZhbHVlLCBkb3VibGUgbWF4VmFsdWUsIHVuc2lnbmVkIHVuaXRzKQogICAgIDog
QXVkaW9TdW1taW5nSnVuY3Rpb24oY29udGV4dCkKICAgICAsIG1fbmFtZShuYW1lKQogICAgICwg
bV92YWx1ZShkZWZhdWx0VmFsdWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmF1ZGlvL0F1ZGlvUGFyYW0uaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8v
QXVkaW9QYXJhbS5oCmluZGV4IDIyNmM5NTdlNzA2ZmU2MWQyZjIzM2MwZDViZjk2ZjIwNjg3MzFj
NDIuLjE2YTIxMDk1MDQ0ZjYwMWVkMjdiODkwMWEwNzY4ZjJmYTllYjE2ZTYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9QYXJhbS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9QYXJhbS5oCkBAIC0zMSw2ICszMSw3IEBA
CiAjaW5jbHVkZSAiQXVkaW9Db250ZXh0LmgiCiAjaW5jbHVkZSAiQXVkaW9QYXJhbVRpbWVsaW5l
LmgiCiAjaW5jbHVkZSAiQXVkaW9TdW1taW5nSnVuY3Rpb24uaCIKKyNpbmNsdWRlICJXZWJLaXRB
dWRpb0NvbnRleHQuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9GbG9hdDMyQXJyYXkuaD4K
ICNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KICNpbmNsdWRlIDx3dGYvTG9nZ2VySGVscGVyLmg+CkBA
IC01Miw3ICs1Myw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgY29uc3QgZG91YmxlIERlZmF1bHRT
bW9vdGhpbmdDb25zdGFudDsKICAgICBzdGF0aWMgY29uc3QgZG91YmxlIFNuYXBUaHJlc2hvbGQ7
CiAKLSAgICBzdGF0aWMgUmVmPEF1ZGlvUGFyYW0+IGNyZWF0ZShBdWRpb0NvbnRleHQmIGNvbnRl
eHQsIGNvbnN0IFN0cmluZyYgbmFtZSwgZG91YmxlIGRlZmF1bHRWYWx1ZSwgZG91YmxlIG1pblZh
bHVlLCBkb3VibGUgbWF4VmFsdWUsIHVuc2lnbmVkIHVuaXRzID0gMCkKKyAgICBzdGF0aWMgUmVm
PEF1ZGlvUGFyYW0+IGNyZWF0ZShBdWRpb0NvbnRleHRCYXNlJiBjb250ZXh0LCBjb25zdCBTdHJp
bmcmIG5hbWUsIGRvdWJsZSBkZWZhdWx0VmFsdWUsIGRvdWJsZSBtaW5WYWx1ZSwgZG91YmxlIG1h
eFZhbHVlLCB1bnNpZ25lZCB1bml0cyA9IDApCiAgICAgewogICAgICAgICByZXR1cm4gYWRvcHRS
ZWYoKm5ldyBBdWRpb1BhcmFtKGNvbnRleHQsIG5hbWUsIGRlZmF1bHRWYWx1ZSwgbWluVmFsdWUs
IG1heFZhbHVlLCB1bml0cykpOwogICAgIH0KQEAgLTEwOCw3ICsxMDksNyBAQCBwdWJsaWM6CiAg
ICAgdm9pZCBkaXNjb25uZWN0KEF1ZGlvTm9kZU91dHB1dCopOwogCiBwcm90ZWN0ZWQ6Ci0gICAg
QXVkaW9QYXJhbShBdWRpb0NvbnRleHQmLCBjb25zdCBTdHJpbmcmLCBkb3VibGUgZGVmYXVsdFZh
bHVlLCBkb3VibGUgbWluVmFsdWUsIGRvdWJsZSBtYXhWYWx1ZSwgdW5zaWduZWQgdW5pdHMgPSAw
KTsKKyAgICBBdWRpb1BhcmFtKEF1ZGlvQ29udGV4dEJhc2UmLCBjb25zdCBTdHJpbmcmLCBkb3Vi
bGUgZGVmYXVsdFZhbHVlLCBkb3VibGUgbWluVmFsdWUsIGRvdWJsZSBtYXhWYWx1ZSwgdW5zaWdu
ZWQgdW5pdHMgPSAwKTsKIAogcHJpdmF0ZToKICAgICAvLyBzYW1wbGVBY2N1cmF0ZSBjb3JyZXNw
b25kcyB0byBhLXJhdGUgKGF1ZGlvIHJhdGUpIHZzLiBrLXJhdGUgaW4gdGhlIFdlYiBBdWRpbyBz
cGVjaWZpY2F0aW9uLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRp
by9BdWRpb1BhcmFtVGltZWxpbmUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRp
by9BdWRpb1BhcmFtVGltZWxpbmUuY3BwCmluZGV4IDJiNTk1NzBiZjZlNjFiNTQ4M2VkMWI5MDdl
Njc2ZjY5YmU5YjM3NDIuLjZjNDEzMDFkOGFkNWE3YWJiZThkYjBkYmExN2NmODQ0YmZlZmZiNjAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9QYXJhbVRp
bWVsaW5lLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvUGFy
YW1UaW1lbGluZS5jcHAKQEAgLTExMyw3ICsxMTMsNyBAQCB2b2lkIEF1ZGlvUGFyYW1UaW1lbGlu
ZTo6Y2FuY2VsU2NoZWR1bGVkVmFsdWVzKGZsb2F0IHN0YXJ0VGltZSkKICAgICB9CiB9CiAKLWZs
b2F0IEF1ZGlvUGFyYW1UaW1lbGluZTo6dmFsdWVGb3JDb250ZXh0VGltZShBdWRpb0NvbnRleHQm
IGNvbnRleHQsIGZsb2F0IGRlZmF1bHRWYWx1ZSwgYm9vbCYgaGFzVmFsdWUpCitmbG9hdCBBdWRp
b1BhcmFtVGltZWxpbmU6OnZhbHVlRm9yQ29udGV4dFRpbWUoQXVkaW9Db250ZXh0QmFzZSYgY29u
dGV4dCwgZmxvYXQgZGVmYXVsdFZhbHVlLCBib29sJiBoYXNWYWx1ZSkKIHsKICAgICB7CiAgICAg
ICAgIHN0ZDo6dW5pcXVlX2xvY2s8TG9jaz4gbG9jayhtX2V2ZW50c011dGV4LCBzdGQ6OnRyeV90
b19sb2NrKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVk
aW9QYXJhbVRpbWVsaW5lLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlv
UGFyYW1UaW1lbGluZS5oCmluZGV4IDdjMTA5OTk1NmNlZWJjOGQ4ZjZkNTBlMGZiMGZjOWExZWVm
ZGEzNGQuLmE1ODY4YmRlZTE4M2ZkZTJhNzA4ZDQ2NGNlNjM1YjI0MDBlNzYxYTIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9QYXJhbVRpbWVsaW5lLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1BhcmFtVGltZWxpbmUu
aApAQCAtNTIsNyArNTIsNyBAQCBwdWJsaWM6CiAKICAgICAvLyBoYXNWYWx1ZSBpcyBzZXQgdG8g
dHJ1ZSBpZiBhIHZhbGlkIHRpbWVsaW5lIHZhbHVlIGlzIHJldHVybmVkLgogICAgIC8vIG90aGVy
d2lzZSBkZWZhdWx0VmFsdWUgaXMgcmV0dXJuZWQuCi0gICAgZmxvYXQgdmFsdWVGb3JDb250ZXh0
VGltZShBdWRpb0NvbnRleHQmLCBmbG9hdCBkZWZhdWx0VmFsdWUsIGJvb2wmIGhhc1ZhbHVlKTsK
KyAgICBmbG9hdCB2YWx1ZUZvckNvbnRleHRUaW1lKEF1ZGlvQ29udGV4dEJhc2UmLCBmbG9hdCBk
ZWZhdWx0VmFsdWUsIGJvb2wmIGhhc1ZhbHVlKTsKIAogICAgIC8vIEdpdmVuIHRoZSB0aW1lIHJh
bmdlLCBjYWxjdWxhdGVzIHBhcmFtZXRlciB2YWx1ZXMgaW50byB0aGUgdmFsdWVzIGJ1ZmZlcgog
ICAgIC8vIGFuZCByZXR1cm5zIHRoZSBsYXN0IHBhcmFtZXRlciB2YWx1ZSBjYWxjdWxhdGVkIGZv
ciAidmFsdWVzIiBvciB0aGUgZGVmYXVsdFZhbHVlIGlmIG5vbmUgd2VyZSBjYWxjdWxhdGVkLgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1NjaGVkdWxl
ZFNvdXJjZU5vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1Nj
aGVkdWxlZFNvdXJjZU5vZGUuY3BwCmluZGV4IDBmNzI2NzZmYzc0M2M0Y2UyNDFhZWUzYzkwZDAy
OGY2YTk1MjcwMjMuLjdjMjgyMzdhMGJkMDM1ZTRjM2FiN2JhNTEzNzUzM2JkOTE1YTdlNjEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9TY2hlZHVsZWRT
b3VyY2VOb2RlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlv
U2NoZWR1bGVkU291cmNlTm9kZS5jcHAKQEAgLTQ5LDcgKzQ5LDcgQEAgV1RGX01BS0VfSVNPX0FM
TE9DQVRFRF9JTVBMKEF1ZGlvU2NoZWR1bGVkU291cmNlTm9kZSk7CiAKIGNvbnN0IGRvdWJsZSBB
dWRpb1NjaGVkdWxlZFNvdXJjZU5vZGU6OlVua25vd25UaW1lID0gLTE7CiAKLUF1ZGlvU2NoZWR1
bGVkU291cmNlTm9kZTo6QXVkaW9TY2hlZHVsZWRTb3VyY2VOb2RlKEF1ZGlvQ29udGV4dCYgY29u
dGV4dCwgZmxvYXQgc2FtcGxlUmF0ZSkKK0F1ZGlvU2NoZWR1bGVkU291cmNlTm9kZTo6QXVkaW9T
Y2hlZHVsZWRTb3VyY2VOb2RlKEF1ZGlvQ29udGV4dEJhc2UmIGNvbnRleHQsIGZsb2F0IHNhbXBs
ZVJhdGUpCiAgICAgOiBBdWRpb05vZGUoY29udGV4dCwgc2FtcGxlUmF0ZSkKICAgICAsIEFjdGl2
ZURPTU9iamVjdChjb250ZXh0LnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSkKICAgICAsIG1fZW5k
VGltZShVbmtub3duVGltZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
YXVkaW8vQXVkaW9TY2hlZHVsZWRTb3VyY2VOb2RlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmF1ZGlvL0F1ZGlvU2NoZWR1bGVkU291cmNlTm9kZS5oCmluZGV4IDhjYWRiZTEwYWZkM2E0
ZDdlY2UyMDIyMDI0NDM4N2Y0Y2UxNGMyZTQuLmI0ZDk1ODgwYzFkZjM2NmY4MjFlMWFiZmNmY2E3
N2Q3NjExMGVhM2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8v
QXVkaW9TY2hlZHVsZWRTb3VyY2VOb2RlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJhdWRpby9BdWRpb1NjaGVkdWxlZFNvdXJjZU5vZGUuaApAQCAtNTMsNyArNTMsNyBAQCBwdWJs
aWM6CiAgICAgICAgIEZJTklTSEVEX1NUQVRFID0gMwogICAgIH07CiAgICAgCi0gICAgQXVkaW9T
Y2hlZHVsZWRTb3VyY2VOb2RlKEF1ZGlvQ29udGV4dCYsIGZsb2F0IHNhbXBsZVJhdGUpOworICAg
IEF1ZGlvU2NoZWR1bGVkU291cmNlTm9kZShBdWRpb0NvbnRleHRCYXNlJiwgZmxvYXQgc2FtcGxl
UmF0ZSk7CiAKICAgICBFeGNlcHRpb25Pcjx2b2lkPiBzdGFydExhdGVyKGRvdWJsZSB3aGVuKTsK
ICAgICBFeGNlcHRpb25Pcjx2b2lkPiBzdG9wTGF0ZXIoZG91YmxlIHdoZW4pOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1N1bW1pbmdKdW5jdGlvbi5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvU3VtbWluZ0p1bmN0aW9u
LmNwcAppbmRleCBlZTYwMGE2MjlhMWI4NjljZDlhNWIzZDM3MmFlNDc2YTNlMTI3ZmIwLi5kZDY0
ZmQzZWE4MTMxMWYwMGUwOGMzY2E0MWQ3NDI4ZjFmMWYzODc5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvU3VtbWluZ0p1bmN0aW9uLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvU3VtbWluZ0p1bmN0aW9uLmNwcApA
QCAtMzQsNyArMzQsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLUF1ZGlvU3VtbWluZ0p1
bmN0aW9uOjpBdWRpb1N1bW1pbmdKdW5jdGlvbihBdWRpb0NvbnRleHQmIGNvbnRleHQpCitBdWRp
b1N1bW1pbmdKdW5jdGlvbjo6QXVkaW9TdW1taW5nSnVuY3Rpb24oQXVkaW9Db250ZXh0QmFzZSYg
Y29udGV4dCkKICAgICA6IG1fY29udGV4dChjb250ZXh0KQogICAgICwgbV9yZW5kZXJpbmdTdGF0
ZU5lZWRVcGRhdGluZyhmYWxzZSkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViYXVkaW8vQXVkaW9TdW1taW5nSnVuY3Rpb24uaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViYXVkaW8vQXVkaW9TdW1taW5nSnVuY3Rpb24uaAppbmRleCBjOTRmZjZkNmE1YWVkMTEx
MDIwOGM0NzY0MzgzZDdlNTZmZDg0NjNiLi40Y2JmOGFlOWZiOTUxYjc4MjA3NmIwY2I1MjYxMTZj
MTlkNGFlYzliIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1
ZGlvU3VtbWluZ0p1bmN0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRp
by9BdWRpb1N1bW1pbmdKdW5jdGlvbi5oCkBAIC0zMCwxOCArMzAsMTggQEAKIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCi1jbGFzcyBBdWRpb0NvbnRleHQ7CitjbGFzcyBBdWRpb0NvbnRleHRCYXNl
OwogY2xhc3MgQXVkaW9Ob2RlT3V0cHV0OwogCiAvLyBBbiBBdWRpb1N1bW1pbmdKdW5jdGlvbiBy
ZXByZXNlbnRzIGEgcG9pbnQgd2hlcmUgemVybywgb25lLCBvciBtb3JlIEF1ZGlvTm9kZU91dHB1
dHMgY29ubmVjdC4KIAogY2xhc3MgQXVkaW9TdW1taW5nSnVuY3Rpb24gewogcHVibGljOgotICAg
IGV4cGxpY2l0IEF1ZGlvU3VtbWluZ0p1bmN0aW9uKEF1ZGlvQ29udGV4dCYpOworICAgIGV4cGxp
Y2l0IEF1ZGlvU3VtbWluZ0p1bmN0aW9uKEF1ZGlvQ29udGV4dEJhc2UmKTsKICAgICB2aXJ0dWFs
IH5BdWRpb1N1bW1pbmdKdW5jdGlvbigpOwogCiAgICAgLy8gQ2FuIGJlIGNhbGxlZCBmcm9tIGFu
eSB0aHJlYWQuCi0gICAgQXVkaW9Db250ZXh0JiBjb250ZXh0KCkgeyByZXR1cm4gbV9jb250ZXh0
LmdldCgpOyB9CisgICAgQXVkaW9Db250ZXh0QmFzZSYgY29udGV4dCgpIHsgcmV0dXJuIG1fY29u
dGV4dDsgfQogCiAgICAgLy8gVGhpcyBtdXN0IGJlIGNhbGxlZCB3aGVuZXZlciB3ZSBtb2RpZnkg
bV9vdXRwdXRzLgogICAgIHZvaWQgY2hhbmdlZE91dHB1dHMoKTsKQEAgLTYwLDcgKzYwLDcgQEAg
cHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBkaWRVcGRhdGUoKSA9IDA7CiAKIHByb3RlY3RlZDoK
LSAgICBSZWY8QXVkaW9Db250ZXh0PiBtX2NvbnRleHQ7CisgICAgUmVmPEF1ZGlvQ29udGV4dEJh
c2U+IG1fY29udGV4dDsKIAogICAgIC8vIG1fb3V0cHV0cyBjb250YWlucyB0aGUgQXVkaW9Ob2Rl
T3V0cHV0cyByZXByZXNlbnRpbmcgY3VycmVudCBjb25uZWN0aW9ucyB3aGljaCBhcmUgbm90IGRp
c2FibGVkLgogICAgIC8vIFRoZSByZW5kZXJpbmcgY29kZSBzaG91bGQgbmV2ZXIgdXNlIHRoaXMg
ZGlyZWN0bHksIGJ1dCBpbnN0ZWFkIHVzZXMgbV9yZW5kZXJpbmdPdXRwdXRzLgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9CaXF1YWRGaWx0ZXJOb2RlLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQmlxdWFkRmlsdGVyTm9kZS5jcHAKaW5k
ZXggNGE4MjU1ZTZmMGFmMDc2NzEzOGU0Njg5OGY4YjYzNmFiMmQ3NTZlNS4uZGRlMDc3M2Q0NzNk
MjcyMmE1YjUzZGM4NjkwNmQzOTM3MGNiZmY0MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJhdWRpby9CaXF1YWRGaWx0ZXJOb2RlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmF1ZGlvL0JpcXVhZEZpbHRlck5vZGUuY3BwCkBAIC0zMyw3ICszMyw3IEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogV1RGX01BS0VfSVNPX0FMTE9DQVRFRF9JTVBMKEJpcXVh
ZEZpbHRlck5vZGUpOwogCi1CaXF1YWRGaWx0ZXJOb2RlOjpCaXF1YWRGaWx0ZXJOb2RlKEF1ZGlv
Q29udGV4dCYgY29udGV4dCwgZmxvYXQgc2FtcGxlUmF0ZSkKK0JpcXVhZEZpbHRlck5vZGU6OkJp
cXVhZEZpbHRlck5vZGUoQXVkaW9Db250ZXh0QmFzZSYgY29udGV4dCwgZmxvYXQgc2FtcGxlUmF0
ZSkKICAgICA6IEF1ZGlvQmFzaWNQcm9jZXNzb3JOb2RlKGNvbnRleHQsIHNhbXBsZVJhdGUpCiB7
CiAgICAgc2V0Tm9kZVR5cGUoTm9kZVR5cGVCaXF1YWRGaWx0ZXIpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9CaXF1YWRGaWx0ZXJOb2RlLmggYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0JpcXVhZEZpbHRlck5vZGUuaAppbmRleCA4MDk0ZDkx
ZWFiM2I5MmIxNDhhODYyNDA5MzI2ZjY1ZWQ5YjkwMTNjLi5hYzhkOTQ3YTEwZjdhZTZhMzNmMDNh
MmQwOTg0MGM4ZTZjMWU1NGNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmF1ZGlvL0JpcXVhZEZpbHRlck5vZGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmF1ZGlvL0JpcXVhZEZpbHRlck5vZGUuaApAQCAtMzQsNyArMzQsNyBAQCBjbGFzcyBBdWRpb1Bh
cmFtOwogY2xhc3MgQmlxdWFkRmlsdGVyTm9kZSBmaW5hbCA6IHB1YmxpYyBBdWRpb0Jhc2ljUHJv
Y2Vzc29yTm9kZSB7CiAgICAgV1RGX01BS0VfSVNPX0FMTE9DQVRFRChCaXF1YWRGaWx0ZXJOb2Rl
KTsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPEJpcXVhZEZpbHRlck5vZGU+IGNyZWF0ZShBdWRp
b0NvbnRleHQmIGNvbnRleHQsIGZsb2F0IHNhbXBsZVJhdGUpCisgICAgc3RhdGljIFJlZjxCaXF1
YWRGaWx0ZXJOb2RlPiBjcmVhdGUoQXVkaW9Db250ZXh0QmFzZSYgY29udGV4dCwgZmxvYXQgc2Ft
cGxlUmF0ZSkKICAgICB7CiAgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEJpcXVhZEZpbHRl
ck5vZGUoY29udGV4dCwgc2FtcGxlUmF0ZSkpOwogICAgIH0KQEAgLTUyLDcgKzUyLDcgQEAgcHVi
bGljOgogICAgIHZvaWQgZ2V0RnJlcXVlbmN5UmVzcG9uc2UoY29uc3QgUmVmUHRyPEZsb2F0MzJB
cnJheT4mIGZyZXF1ZW5jeUh6LCBjb25zdCBSZWZQdHI8RmxvYXQzMkFycmF5PiYgbWFnUmVzcG9u
c2UsIGNvbnN0IFJlZlB0cjxGbG9hdDMyQXJyYXk+JiBwaGFzZVJlc3BvbnNlKTsKIAogcHJpdmF0
ZToKLSAgICBCaXF1YWRGaWx0ZXJOb2RlKEF1ZGlvQ29udGV4dCYsIGZsb2F0IHNhbXBsZVJhdGUp
OworICAgIEJpcXVhZEZpbHRlck5vZGUoQXVkaW9Db250ZXh0QmFzZSYsIGZsb2F0IHNhbXBsZVJh
dGUpOwogCiAgICAgQmlxdWFkUHJvY2Vzc29yKiBiaXF1YWRQcm9jZXNzb3IoKSB7IHJldHVybiBz
dGF0aWNfY2FzdDxCaXF1YWRQcm9jZXNzb3IqPihwcm9jZXNzb3IoKSk7IH0KIH07CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0JpcXVhZFByb2Nlc3Nvci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0JpcXVhZFByb2Nlc3Nvci5jcHAKaW5k
ZXggZTg0Yjk4MDM1NjcwZmIxZGNjMzI3MDk2NjNkMmIzOTA1NTJlNjVlYi4uMmY2MDY3YTcyZGNl
YzMzYzNmMGQwZGU5ZDk3ZTRiNjk3Njk2MjZhOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJhdWRpby9CaXF1YWRQcm9jZXNzb3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViYXVkaW8vQmlxdWFkUHJvY2Vzc29yLmNwcApAQCAtMzIsNyArMzIsNyBAQAog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgCi1CaXF1YWRQcm9jZXNzb3I6OkJpcXVhZFByb2Nl
c3NvcihBdWRpb0NvbnRleHQmIGNvbnRleHQsIGZsb2F0IHNhbXBsZVJhdGUsIHNpemVfdCBudW1i
ZXJPZkNoYW5uZWxzLCBib29sIGF1dG9Jbml0aWFsaXplKQorQmlxdWFkUHJvY2Vzc29yOjpCaXF1
YWRQcm9jZXNzb3IoQXVkaW9Db250ZXh0QmFzZSYgY29udGV4dCwgZmxvYXQgc2FtcGxlUmF0ZSwg
c2l6ZV90IG51bWJlck9mQ2hhbm5lbHMsIGJvb2wgYXV0b0luaXRpYWxpemUpCiAgICAgOiBBdWRp
b0RTUEtlcm5lbFByb2Nlc3NvcihzYW1wbGVSYXRlLCBudW1iZXJPZkNoYW5uZWxzKQogICAgICwg
bV90eXBlKEJpcXVhZEZpbHRlclR5cGU6Okxvd3Bhc3MpCiAgICAgLCBtX3BhcmFtZXRlcjEoMCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQmlxdWFkUHJvY2Vz
c29yLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0JpcXVhZFByb2Nlc3Nvci5o
CmluZGV4IGFkYmVlYzQzMDI1YWYwM2FmMTdlMTE1MWFiYmVmZmVlZWU3N2Y2MzIuLmRjMzA2YWI1
MTdiMzI0YmIxY2M1NmEyODhkMGU0OWYxYThlNGU5MDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViYXVkaW8vQmlxdWFkUHJvY2Vzc29yLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJhdWRpby9CaXF1YWRQcm9jZXNzb3IuaApAQCAtNTAsNyArNTAsNyBAQCBl
bnVtIGNsYXNzIEJpcXVhZEZpbHRlclR5cGUgewogY2xhc3MgQmlxdWFkUHJvY2Vzc29yIGZpbmFs
IDogcHVibGljIEF1ZGlvRFNQS2VybmVsUHJvY2Vzc29yIHsKICAgICBXVEZfTUFLRV9GQVNUX0FM
TE9DQVRFRDsKIHB1YmxpYzoKLSAgICBCaXF1YWRQcm9jZXNzb3IoQXVkaW9Db250ZXh0JiwgZmxv
YXQgc2FtcGxlUmF0ZSwgc2l6ZV90IG51bWJlck9mQ2hhbm5lbHMsIGJvb2wgYXV0b0luaXRpYWxp
emUpOworICAgIEJpcXVhZFByb2Nlc3NvcihBdWRpb0NvbnRleHRCYXNlJiwgZmxvYXQgc2FtcGxl
UmF0ZSwgc2l6ZV90IG51bWJlck9mQ2hhbm5lbHMsIGJvb2wgYXV0b0luaXRpYWxpemUpOwogCiAg
ICAgdmlydHVhbCB+QmlxdWFkUHJvY2Vzc29yKCk7CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0NoYW5uZWxNZXJnZXJOb2RlLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQ2hhbm5lbE1lcmdlck5vZGUuY3BwCmluZGV4IGRmNTBm
MjY4NzM2OGFhNWMzMjk1NDE0ODE1MDc3N2EwMjkxNzMyZDguLmRlMjhhZWE3ZDJjNDM0Mjg5NmIx
MDRiYTg5NDFmZGViNzk4YWRjM2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViYXVkaW8vQ2hhbm5lbE1lcmdlck5vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViYXVkaW8vQ2hhbm5lbE1lcmdlck5vZGUuY3BwCkBAIC00Myw3ICs0Myw3IEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAogV1RGX01BS0VfSVNPX0FMTE9DQVRFRF9JTVBMKENoYW5uZWxNZXJn
ZXJOb2RlKTsKIAotUmVmUHRyPENoYW5uZWxNZXJnZXJOb2RlPiBDaGFubmVsTWVyZ2VyTm9kZTo6
Y3JlYXRlKEF1ZGlvQ29udGV4dCYgY29udGV4dCwgZmxvYXQgc2FtcGxlUmF0ZSwgdW5zaWduZWQg
bnVtYmVyT2ZJbnB1dHMpCitSZWZQdHI8Q2hhbm5lbE1lcmdlck5vZGU+IENoYW5uZWxNZXJnZXJO
b2RlOjpjcmVhdGUoQXVkaW9Db250ZXh0QmFzZSYgY29udGV4dCwgZmxvYXQgc2FtcGxlUmF0ZSwg
dW5zaWduZWQgbnVtYmVyT2ZJbnB1dHMpCiB7CiAgICAgaWYgKCFudW1iZXJPZklucHV0cyB8fCBu
dW1iZXJPZklucHV0cyA+IEF1ZGlvQ29udGV4dDo6bWF4TnVtYmVyT2ZDaGFubmVscygpKQogICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTUxLDcgKzUxLDcgQEAgUmVmUHRyPENoYW5uZWxNZXJn
ZXJOb2RlPiBDaGFubmVsTWVyZ2VyTm9kZTo6Y3JlYXRlKEF1ZGlvQ29udGV4dCYgY29udGV4dCwg
ZmxvYXQKICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBDaGFubmVsTWVyZ2VyTm9kZShjb250ZXh0
LCBzYW1wbGVSYXRlLCBudW1iZXJPZklucHV0cykpOyAgICAgIAogfQogCi1DaGFubmVsTWVyZ2Vy
Tm9kZTo6Q2hhbm5lbE1lcmdlck5vZGUoQXVkaW9Db250ZXh0JiBjb250ZXh0LCBmbG9hdCBzYW1w
bGVSYXRlLCB1bnNpZ25lZCBudW1iZXJPZklucHV0cykKK0NoYW5uZWxNZXJnZXJOb2RlOjpDaGFu
bmVsTWVyZ2VyTm9kZShBdWRpb0NvbnRleHRCYXNlJiBjb250ZXh0LCBmbG9hdCBzYW1wbGVSYXRl
LCB1bnNpZ25lZCBudW1iZXJPZklucHV0cykKICAgICA6IEF1ZGlvTm9kZShjb250ZXh0LCBzYW1w
bGVSYXRlKQogICAgICwgbV9kZXNpcmVkTnVtYmVyT2ZPdXRwdXRDaGFubmVscyhEZWZhdWx0TnVt
YmVyT2ZPdXRwdXRDaGFubmVscykKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViYXVkaW8vQ2hhbm5lbE1lcmdlck5vZGUuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViYXVkaW8vQ2hhbm5lbE1lcmdlck5vZGUuaAppbmRleCA2NjYzNmVlZDZmN2VlODU1MWU5MmNj
ODc3YTA0YzVjYzNlNWZkZjFkLi42Mjk3NmUwNTA3MzQxZmY5MjY2MGE2YWYwZGI1OGFlYmE1NTc2
ODFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0NoYW5uZWxN
ZXJnZXJOb2RlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9DaGFubmVs
TWVyZ2VyTm9kZS5oCkBAIC0zNyw3ICszNyw3IEBAIGNsYXNzIEF1ZGlvQ29udGV4dDsKIGNsYXNz
IENoYW5uZWxNZXJnZXJOb2RlIGZpbmFsIDogcHVibGljIEF1ZGlvTm9kZSB7CiAgICAgV1RGX01B
S0VfSVNPX0FMTE9DQVRFRChDaGFubmVsTWVyZ2VyTm9kZSk7CiBwdWJsaWM6Ci0gICAgc3RhdGlj
IFJlZlB0cjxDaGFubmVsTWVyZ2VyTm9kZT4gY3JlYXRlKEF1ZGlvQ29udGV4dCYsIGZsb2F0IHNh
bXBsZVJhdGUsIHVuc2lnbmVkIG51bWJlck9mSW5wdXRzKTsKKyAgICBzdGF0aWMgUmVmUHRyPENo
YW5uZWxNZXJnZXJOb2RlPiBjcmVhdGUoQXVkaW9Db250ZXh0QmFzZSYsIGZsb2F0IHNhbXBsZVJh
dGUsIHVuc2lnbmVkIG51bWJlck9mSW5wdXRzKTsKIAogICAgIC8vIEF1ZGlvTm9kZQogICAgIHZv
aWQgcHJvY2VzcyhzaXplX3QgZnJhbWVzVG9Qcm9jZXNzKSBvdmVycmlkZTsKQEAgLTUyLDcgKzUy
LDcgQEAgcHJpdmF0ZToKICAgICBkb3VibGUgdGFpbFRpbWUoKSBjb25zdCBvdmVycmlkZSB7IHJl
dHVybiAwOyB9CiAgICAgZG91YmxlIGxhdGVuY3lUaW1lKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1
cm4gMDsgfQogCi0gICAgQ2hhbm5lbE1lcmdlck5vZGUoQXVkaW9Db250ZXh0JiwgZmxvYXQgc2Ft
cGxlUmF0ZSwgdW5zaWduZWQgbnVtYmVyT2ZJbnB1dHMpOworICAgIENoYW5uZWxNZXJnZXJOb2Rl
KEF1ZGlvQ29udGV4dEJhc2UmLCBmbG9hdCBzYW1wbGVSYXRlLCB1bnNpZ25lZCBudW1iZXJPZklu
cHV0cyk7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0NoYW5uZWxTcGxpdHRlck5vZGUuY3BwIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9DaGFubmVsU3BsaXR0ZXJOb2RlLmNwcAppbmRleCA4
MmY2OWEwNGY5OTkyNjFkNThjMTUyYmZjNjAyYTM2NjA5NjA5MWI5Li5mNTU1M2QwYzgzNWEzOTJk
M2NlZWRlOTJlZTVmOGI4YzkyOGY5ZGIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmF1ZGlvL0NoYW5uZWxTcGxpdHRlck5vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViYXVkaW8vQ2hhbm5lbFNwbGl0dGVyTm9kZS5jcHAKQEAgLTM3LDcgKzM3LDcg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBXVEZfTUFLRV9JU09fQUxMT0NBVEVEX0lNUEwoQ2hh
bm5lbFNwbGl0dGVyTm9kZSk7CiAgICAgCi1SZWZQdHI8Q2hhbm5lbFNwbGl0dGVyTm9kZT4gQ2hh
bm5lbFNwbGl0dGVyTm9kZTo6Y3JlYXRlKEF1ZGlvQ29udGV4dCYgY29udGV4dCwgZmxvYXQgc2Ft
cGxlUmF0ZSwgdW5zaWduZWQgbnVtYmVyT2ZPdXRwdXRzKQorUmVmUHRyPENoYW5uZWxTcGxpdHRl
ck5vZGU+IENoYW5uZWxTcGxpdHRlck5vZGU6OmNyZWF0ZShBdWRpb0NvbnRleHRCYXNlJiBjb250
ZXh0LCBmbG9hdCBzYW1wbGVSYXRlLCB1bnNpZ25lZCBudW1iZXJPZk91dHB1dHMpCiB7CiAgICAg
aWYgKCFudW1iZXJPZk91dHB1dHMgfHwgbnVtYmVyT2ZPdXRwdXRzID4gQXVkaW9Db250ZXh0Ojpt
YXhOdW1iZXJPZkNoYW5uZWxzKCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwpAQCAtNDUsNyAr
NDUsNyBAQCBSZWZQdHI8Q2hhbm5lbFNwbGl0dGVyTm9kZT4gQ2hhbm5lbFNwbGl0dGVyTm9kZTo6
Y3JlYXRlKEF1ZGlvQ29udGV4dCYgY29udGV4dCwgZgogICAgIHJldHVybiBhZG9wdFJlZigqbmV3
IENoYW5uZWxTcGxpdHRlck5vZGUoY29udGV4dCwgc2FtcGxlUmF0ZSwgbnVtYmVyT2ZPdXRwdXRz
KSk7ICAgICAgCiB9CiAKLUNoYW5uZWxTcGxpdHRlck5vZGU6OkNoYW5uZWxTcGxpdHRlck5vZGUo
QXVkaW9Db250ZXh0JiBjb250ZXh0LCBmbG9hdCBzYW1wbGVSYXRlLCB1bnNpZ25lZCBudW1iZXJP
Zk91dHB1dHMpCitDaGFubmVsU3BsaXR0ZXJOb2RlOjpDaGFubmVsU3BsaXR0ZXJOb2RlKEF1ZGlv
Q29udGV4dEJhc2UmIGNvbnRleHQsIGZsb2F0IHNhbXBsZVJhdGUsIHVuc2lnbmVkIG51bWJlck9m
T3V0cHV0cykKICAgICA6IEF1ZGlvTm9kZShjb250ZXh0LCBzYW1wbGVSYXRlKQogewogICAgIHNl
dE5vZGVUeXBlKE5vZGVUeXBlQ2hhbm5lbFNwbGl0dGVyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQ2hhbm5lbFNwbGl0dGVyTm9kZS5oIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJhdWRpby9DaGFubmVsU3BsaXR0ZXJOb2RlLmgKaW5kZXggOGQ5ODMy
ODEyMzdkZDFkMGZjZjE0NzBhMzhiMDAzZmU0MjY2YjUxZS4uMTNkOGQ5ODBkYWE3NzMzMDRmMTY5
MDVlOTU0OGE0MjBhZTNlZTQ1YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJhdWRpby9DaGFubmVsU3BsaXR0ZXJOb2RlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJhdWRpby9DaGFubmVsU3BsaXR0ZXJOb2RlLmgKQEAgLTMzLDcgKzMzLDcgQEAgY2xhc3Mg
QXVkaW9Db250ZXh0OwogY2xhc3MgQ2hhbm5lbFNwbGl0dGVyTm9kZSBmaW5hbCA6IHB1YmxpYyBB
dWRpb05vZGUgewogICAgIFdURl9NQUtFX0lTT19BTExPQ0FURUQoQ2hhbm5lbFNwbGl0dGVyTm9k
ZSk7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZlB0cjxDaGFubmVsU3BsaXR0ZXJOb2RlPiBjcmVh
dGUoQXVkaW9Db250ZXh0JiwgZmxvYXQgc2FtcGxlUmF0ZSwgdW5zaWduZWQgbnVtYmVyT2ZPdXRw
dXRzKTsKKyAgICBzdGF0aWMgUmVmUHRyPENoYW5uZWxTcGxpdHRlck5vZGU+IGNyZWF0ZShBdWRp
b0NvbnRleHRCYXNlJiwgZmxvYXQgc2FtcGxlUmF0ZSwgdW5zaWduZWQgbnVtYmVyT2ZPdXRwdXRz
KTsKIAogICAgIC8vIEF1ZGlvTm9kZQogICAgIHZvaWQgcHJvY2VzcyhzaXplX3QgZnJhbWVzVG9Q
cm9jZXNzKSBvdmVycmlkZTsKQEAgLTQzLDcgKzQzLDcgQEAgcHJpdmF0ZToKICAgICBkb3VibGUg
dGFpbFRpbWUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiAwOyB9CiAgICAgZG91YmxlIGxhdGVu
Y3lUaW1lKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gMDsgfQogCi0gICAgQ2hhbm5lbFNwbGl0
dGVyTm9kZShBdWRpb0NvbnRleHQmLCBmbG9hdCBzYW1wbGVSYXRlLCB1bnNpZ25lZCBudW1iZXJP
Zk91dHB1dHMpOworICAgIENoYW5uZWxTcGxpdHRlck5vZGUoQXVkaW9Db250ZXh0QmFzZSYsIGZs
b2F0IHNhbXBsZVJhdGUsIHVuc2lnbmVkIG51bWJlck9mT3V0cHV0cyk7CiB9OwogCiB9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1
ZGlvL0NvbnZvbHZlck5vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9D
b252b2x2ZXJOb2RlLmNwcAppbmRleCBjYzk3MmYxMGRiZDdhYmZmNzNmNzkzY2ZhY2M3YzQwMDhh
NzIzNDQ3Li5lMWY1ZWI4MTU2MGVjMmU5MmI4MzU4MzZjODRiMTgxOTQzM2FmYTRmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0NvbnZvbHZlck5vZGUuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQ29udm9sdmVyTm9kZS5jcHAKQEAg
LTQ3LDcgKzQ3LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBXVEZfTUFLRV9JU09fQUxMT0NB
VEVEX0lNUEwoQ29udm9sdmVyTm9kZSk7CiAKLUNvbnZvbHZlck5vZGU6OkNvbnZvbHZlck5vZGUo
QXVkaW9Db250ZXh0JiBjb250ZXh0LCBmbG9hdCBzYW1wbGVSYXRlKQorQ29udm9sdmVyTm9kZTo6
Q29udm9sdmVyTm9kZShBdWRpb0NvbnRleHRCYXNlJiBjb250ZXh0LCBmbG9hdCBzYW1wbGVSYXRl
KQogICAgIDogQXVkaW9Ob2RlKGNvbnRleHQsIHNhbXBsZVJhdGUpCiB7CiAgICAgc2V0Tm9kZVR5
cGUoTm9kZVR5cGVDb252b2x2ZXIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJhdWRpby9Db252b2x2ZXJOb2RlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1
ZGlvL0NvbnZvbHZlck5vZGUuaAppbmRleCA2NGJmZWJlZDJkODdlNzRjMzNhZGZhYzkzNDlkMWI5
MjZlMGY2NmMzLi4zMWNlYzFlY2M3ZjBlMDA0NWVmYTc0ZmJlZjM2MDY4ZGRiYjFmZGZjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0NvbnZvbHZlck5vZGUuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0NvbnZvbHZlck5vZGUuaApAQCAt
MzUsNyArMzUsNyBAQCBjbGFzcyBSZXZlcmI7CiBjbGFzcyBDb252b2x2ZXJOb2RlIGZpbmFsIDog
cHVibGljIEF1ZGlvTm9kZSB7CiAgICAgV1RGX01BS0VfSVNPX0FMTE9DQVRFRChDb252b2x2ZXJO
b2RlKTsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPENvbnZvbHZlck5vZGU+IGNyZWF0ZShBdWRp
b0NvbnRleHQmIGNvbnRleHQsIGZsb2F0IHNhbXBsZVJhdGUpCisgICAgc3RhdGljIFJlZjxDb252
b2x2ZXJOb2RlPiBjcmVhdGUoQXVkaW9Db250ZXh0QmFzZSYgY29udGV4dCwgZmxvYXQgc2FtcGxl
UmF0ZSkKICAgICB7CiAgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IENvbnZvbHZlck5vZGUo
Y29udGV4dCwgc2FtcGxlUmF0ZSkpOwogICAgIH0KQEAgLTQ5LDcgKzQ5LDcgQEAgcHVibGljOgog
ICAgIHZvaWQgc2V0Tm9ybWFsaXplKGJvb2wgbm9ybWFsaXplKSB7IG1fbm9ybWFsaXplID0gbm9y
bWFsaXplOyB9CiAKIHByaXZhdGU6Ci0gICAgQ29udm9sdmVyTm9kZShBdWRpb0NvbnRleHQmLCBm
bG9hdCBzYW1wbGVSYXRlKTsKKyAgICBDb252b2x2ZXJOb2RlKEF1ZGlvQ29udGV4dEJhc2UmLCBm
bG9hdCBzYW1wbGVSYXRlKTsKIAogICAgIGRvdWJsZSB0YWlsVGltZSgpIGNvbnN0IGZpbmFsOwog
ICAgIGRvdWJsZSBsYXRlbmN5VGltZSgpIGNvbnN0IGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9EZWZhdWx0QXVkaW9EZXN0aW5hdGlvbk5vZGUuY3Bw
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9EZWZhdWx0QXVkaW9EZXN0aW5hdGlv
bk5vZGUuY3BwCmluZGV4IDE3NTlhZTRhNWE2MzViYzA1OGUzMGMzNjVjMTM0NGZiYjM5NzllMTUu
LjA3ZWI5YTQxYjVjYzhlODM5MDlhZTRiNmU2MzRlM2NhOWJmNTM3ZWEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vRGVmYXVsdEF1ZGlvRGVzdGluYXRpb25Ob2Rl
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0RlZmF1bHRBdWRpb0Rl
c3RpbmF0aW9uTm9kZS5jcHAKQEAgLTQzLDcgKzQzLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
CiBXVEZfTUFLRV9JU09fQUxMT0NBVEVEX0lNUEwoRGVmYXVsdEF1ZGlvRGVzdGluYXRpb25Ob2Rl
KTsKICAgICAKLURlZmF1bHRBdWRpb0Rlc3RpbmF0aW9uTm9kZTo6RGVmYXVsdEF1ZGlvRGVzdGlu
YXRpb25Ob2RlKEF1ZGlvQ29udGV4dCYgY29udGV4dCkKK0RlZmF1bHRBdWRpb0Rlc3RpbmF0aW9u
Tm9kZTo6RGVmYXVsdEF1ZGlvRGVzdGluYXRpb25Ob2RlKEF1ZGlvQ29udGV4dEJhc2UmIGNvbnRl
eHQpCiAgICAgOiBBdWRpb0Rlc3RpbmF0aW9uTm9kZShjb250ZXh0LCBBdWRpb0Rlc3RpbmF0aW9u
OjpoYXJkd2FyZVNhbXBsZVJhdGUoKSkKIHsKICAgICAvLyBOb2RlLXNwZWNpZmljIGRlZmF1bHQg
bWl4aW5nIHJ1bGVzLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRp
by9EZWZhdWx0QXVkaW9EZXN0aW5hdGlvbk5vZGUuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViYXVkaW8vRGVmYXVsdEF1ZGlvRGVzdGluYXRpb25Ob2RlLmgKaW5kZXggNmZkOTVjMGYzMDEx
NGNkZTMyYzI3ZmExOGE2MWFlMmNkZTUxMjhmYy4uOTZjODM3Yzk5MzRlYjAzYmYwNGI0ZGUzOWJj
NDJlZmZkZmRlZThlMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRp
by9EZWZhdWx0QXVkaW9EZXN0aW5hdGlvbk5vZGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmF1ZGlvL0RlZmF1bHRBdWRpb0Rlc3RpbmF0aW9uTm9kZS5oCkBAIC0zMyw3ICszMyw3
IEBAIGNsYXNzIEF1ZGlvRGVzdGluYXRpb247CiBjbGFzcyBEZWZhdWx0QXVkaW9EZXN0aW5hdGlv
bk5vZGUgZmluYWwgOiBwdWJsaWMgQXVkaW9EZXN0aW5hdGlvbk5vZGUgewogICAgIFdURl9NQUtF
X0lTT19BTExPQ0FURUQoRGVmYXVsdEF1ZGlvRGVzdGluYXRpb25Ob2RlKTsKIHB1YmxpYzoKLSAg
ICBzdGF0aWMgUmVmPERlZmF1bHRBdWRpb0Rlc3RpbmF0aW9uTm9kZT4gY3JlYXRlKEF1ZGlvQ29u
dGV4dCYgY29udGV4dCkKKyAgICBzdGF0aWMgUmVmPERlZmF1bHRBdWRpb0Rlc3RpbmF0aW9uTm9k
ZT4gY3JlYXRlKEF1ZGlvQ29udGV4dEJhc2UmIGNvbnRleHQpCiAgICAgewogICAgICAgICByZXR1
cm4gYWRvcHRSZWYoKm5ldyBEZWZhdWx0QXVkaW9EZXN0aW5hdGlvbk5vZGUoY29udGV4dCkpOyAg
ICAgCiAgICAgfQpAQCAtNDEsNyArNDEsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB+RGVmYXVs
dEF1ZGlvRGVzdGluYXRpb25Ob2RlKCk7CiAgICAgCiBwcml2YXRlOgotICAgIGV4cGxpY2l0IERl
ZmF1bHRBdWRpb0Rlc3RpbmF0aW9uTm9kZShBdWRpb0NvbnRleHQmKTsKKyAgICBleHBsaWNpdCBE
ZWZhdWx0QXVkaW9EZXN0aW5hdGlvbk5vZGUoQXVkaW9Db250ZXh0QmFzZSYpOwogICAgIHZvaWQg
Y3JlYXRlRGVzdGluYXRpb24oKTsKIAogICAgIHZvaWQgaW5pdGlhbGl6ZSgpIGZpbmFsOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9EZWxheU5vZGUuY3BwIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9EZWxheU5vZGUuY3BwCmluZGV4IDgxYmQ3
ZDE5YjI3ZTc0MWI1MGY2Zjg0ZTUxZjdjZTI1NTc4MDJiOTMuLjQwNTI3YzgxZjlmNWJjNTZiY2Y0
ZTcwYzUxNmNiYzE5ZTViZTFlOGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViYXVkaW8vRGVsYXlOb2RlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1
ZGlvL0RlbGF5Tm9kZS5jcHAKQEAgLTM3LDE0ICszNywxNCBAQCBXVEZfTUFLRV9JU09fQUxMT0NB
VEVEX0lNUEwoRGVsYXlOb2RlKTsKIAogY29uc3QgZG91YmxlIG1heGltdW1BbGxvd2VkRGVsYXlU
aW1lID0gMTgwOwogCi1pbmxpbmUgRGVsYXlOb2RlOjpEZWxheU5vZGUoQXVkaW9Db250ZXh0JiBj
b250ZXh0LCBmbG9hdCBzYW1wbGVSYXRlLCBkb3VibGUgbWF4RGVsYXlUaW1lKQoraW5saW5lIERl
bGF5Tm9kZTo6RGVsYXlOb2RlKEF1ZGlvQ29udGV4dEJhc2UmIGNvbnRleHQsIGZsb2F0IHNhbXBs
ZVJhdGUsIGRvdWJsZSBtYXhEZWxheVRpbWUpCiAgICAgOiBBdWRpb0Jhc2ljUHJvY2Vzc29yTm9k
ZShjb250ZXh0LCBzYW1wbGVSYXRlKQogewogICAgIHNldE5vZGVUeXBlKE5vZGVUeXBlRGVsYXkp
OwogICAgIG1fcHJvY2Vzc29yID0gbWFrZVVuaXF1ZTxEZWxheVByb2Nlc3Nvcj4oY29udGV4dCwg
c2FtcGxlUmF0ZSwgMSwgbWF4RGVsYXlUaW1lKTsKIH0KIAotRXhjZXB0aW9uT3I8UmVmPERlbGF5
Tm9kZT4+IERlbGF5Tm9kZTo6Y3JlYXRlKEF1ZGlvQ29udGV4dCYgY29udGV4dCwgZmxvYXQgc2Ft
cGxlUmF0ZSwgZG91YmxlIG1heERlbGF5VGltZSkKK0V4Y2VwdGlvbk9yPFJlZjxEZWxheU5vZGU+
PiBEZWxheU5vZGU6OmNyZWF0ZShBdWRpb0NvbnRleHRCYXNlJiBjb250ZXh0LCBmbG9hdCBzYW1w
bGVSYXRlLCBkb3VibGUgbWF4RGVsYXlUaW1lKQogewogICAgIGlmIChtYXhEZWxheVRpbWUgPD0g
MCB8fCBtYXhEZWxheVRpbWUgPj0gbWF4aW11bUFsbG93ZWREZWxheVRpbWUpCiAgICAgICAgIHJl
dHVybiBFeGNlcHRpb24geyBOb3RTdXBwb3J0ZWRFcnJvciB9OwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9EZWxheU5vZGUuaCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViYXVkaW8vRGVsYXlOb2RlLmgKaW5kZXggYzllY2FkOWY5ZmRjNTFjNDdjNTJjM2Ni
ODY4NzBmZDg0MTFiOWZmYS4uYjZhZmRkMGY5MzA3MThiNDIzMjMxZjJmNmNmOTAwNTk5MTk5NzAx
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9EZWxheU5vZGUu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0RlbGF5Tm9kZS5oCkBAIC0z
MSwxMiArMzEsMTIgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgRGVsYXlOb2RlIGZpbmFs
IDogcHVibGljIEF1ZGlvQmFzaWNQcm9jZXNzb3JOb2RlIHsKICAgICBXVEZfTUFLRV9JU09fQUxM
T0NBVEVEKERlbGF5Tm9kZSk7CiBwdWJsaWM6Ci0gICAgc3RhdGljIEV4Y2VwdGlvbk9yPFJlZjxE
ZWxheU5vZGU+PiBjcmVhdGUoQXVkaW9Db250ZXh0JiwgZmxvYXQgc2FtcGxlUmF0ZSwgZG91Ymxl
IG1heERlbGF5VGltZSk7CisgICAgc3RhdGljIEV4Y2VwdGlvbk9yPFJlZjxEZWxheU5vZGU+PiBj
cmVhdGUoQXVkaW9Db250ZXh0QmFzZSYsIGZsb2F0IHNhbXBsZVJhdGUsIGRvdWJsZSBtYXhEZWxh
eVRpbWUpOwogCiAgICAgQXVkaW9QYXJhbSogZGVsYXlUaW1lKCk7CiAKIHByaXZhdGU6Ci0gICAg
RGVsYXlOb2RlKEF1ZGlvQ29udGV4dCYsIGZsb2F0IHNhbXBsZVJhdGUsIGRvdWJsZSBtYXhEZWxh
eVRpbWUpOworICAgIERlbGF5Tm9kZShBdWRpb0NvbnRleHRCYXNlJiwgZmxvYXQgc2FtcGxlUmF0
ZSwgZG91YmxlIG1heERlbGF5VGltZSk7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0RlbGF5UHJvY2Vzc29y
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vRGVsYXlQcm9jZXNzb3IuY3Bw
CmluZGV4IDEwMzY2ZWY2ZWFmYjZjNDRkYjE5MTI3MWE5OTVkOWU2ZDJhY2JhNjkuLmNiYmZkOWZh
MmZhYTRjZjdlYWUwMWIzMjZjNDZkY2Y1ODdiZmUzYzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViYXVkaW8vRGVsYXlQcm9jZXNzb3IuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViYXVkaW8vRGVsYXlQcm9jZXNzb3IuY3BwCkBAIC0zMiw3ICszMiw3IEBA
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotRGVsYXlQcm9jZXNzb3I6OkRlbGF5UHJvY2Vzc29y
KEF1ZGlvQ29udGV4dCYgY29udGV4dCwgZmxvYXQgc2FtcGxlUmF0ZSwgdW5zaWduZWQgbnVtYmVy
T2ZDaGFubmVscywgZG91YmxlIG1heERlbGF5VGltZSkKK0RlbGF5UHJvY2Vzc29yOjpEZWxheVBy
b2Nlc3NvcihBdWRpb0NvbnRleHRCYXNlJiBjb250ZXh0LCBmbG9hdCBzYW1wbGVSYXRlLCB1bnNp
Z25lZCBudW1iZXJPZkNoYW5uZWxzLCBkb3VibGUgbWF4RGVsYXlUaW1lKQogICAgIDogQXVkaW9E
U1BLZXJuZWxQcm9jZXNzb3Ioc2FtcGxlUmF0ZSwgbnVtYmVyT2ZDaGFubmVscykKICAgICAsIG1f
bWF4RGVsYXlUaW1lKG1heERlbGF5VGltZSkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViYXVkaW8vRGVsYXlQcm9jZXNzb3IuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViYXVkaW8vRGVsYXlQcm9jZXNzb3IuaAppbmRleCA4NWQ5Y2M2ZDdmZGUxNmNlZmQ3OGQ0
Nzk0MjEwZGRkMDgyMzRkZjNmLi5jYmFjNzllY2YwZmUzMzljZjEyZjkzZDRkYjI1YWYwNTE1MmZj
ZWZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0RlbGF5UHJv
Y2Vzc29yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9EZWxheVByb2Nl
c3Nvci5oCkBAIC0zNiw3ICszNiw3IEBAIGNsYXNzIEF1ZGlvRFNQS2VybmVsOwogY2xhc3MgRGVs
YXlQcm9jZXNzb3IgZmluYWwgOiBwdWJsaWMgQXVkaW9EU1BLZXJuZWxQcm9jZXNzb3IgewogICAg
IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgotICAgIERlbGF5UHJvY2Vzc29yKEF1
ZGlvQ29udGV4dCYsIGZsb2F0IHNhbXBsZVJhdGUsIHVuc2lnbmVkIG51bWJlck9mQ2hhbm5lbHMs
IGRvdWJsZSBtYXhEZWxheVRpbWUpOworICAgIERlbGF5UHJvY2Vzc29yKEF1ZGlvQ29udGV4dEJh
c2UmLCBmbG9hdCBzYW1wbGVSYXRlLCB1bnNpZ25lZCBudW1iZXJPZkNoYW5uZWxzLCBkb3VibGUg
bWF4RGVsYXlUaW1lKTsKICAgICB2aXJ0dWFsIH5EZWxheVByb2Nlc3NvcigpOwogICAgIAogICAg
IHN0ZDo6dW5pcXVlX3B0cjxBdWRpb0RTUEtlcm5lbD4gY3JlYXRlS2VybmVsKCkgb3ZlcnJpZGU7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0Rpc3RhbmNlTW9k
ZWxUeXBlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0Rpc3RhbmNlTW9kZWxU
eXBlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uZGZlMTMxODJjYzBhNDRiZGQwNDgwYjcyYWZmZDdiNTU3MDg1MjNk
YgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vRGlz
dGFuY2VNb2RlbFR5cGUuaApAQCAtMCwwICsxLDI3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDIwLCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
ICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBB
UkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTgorICogQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTCisgKiBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9u
Y2UKKworI2luY2x1ZGUgIkRpc3RhbmNlLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmF1ZGlvL0Rpc3RhbmNlTW9kZWxUeXBlLmlkbCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViYXVkaW8vRGlzdGFuY2VNb2RlbFR5cGUuaWRsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmY4ZmZjZmVk
MjJjOGY5NjBkMDRmM2U4NWJlM2RhNThiNzIwNzM3ZmUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0Rpc3RhbmNlTW9kZWxUeXBlLmlkbApAQCAtMCww
ICsxLDMxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwLCBHb29nbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQgQU5ZCisg
KiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04KKyAqIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUworICogU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworWworICAgIENvbmRpdGlvbmFsPVdFQl9BVURJTywKK10g
ZW51bSBEaXN0YW5jZU1vZGVsVHlwZSB7CisgICAgImxpbmVhciIsCisgICAgImludmVyc2UiLAor
ICAgICJleHBvbmVudGlhbCIKK307CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmF1ZGlvL0R5bmFtaWNzQ29tcHJlc3Nvck5vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJhdWRpby9EeW5hbWljc0NvbXByZXNzb3JOb2RlLmNwcAppbmRleCAxNDA5NmQ4ZjBj
NTk2YTUyOTcxNjY2ZWY4MjY3YTAyM2ZkYjQ0YjI5Li5jMzNkMWRlNzJkYzkxZmU4ZDc0ZTc1NDdh
MjM1OTljYTAxZmM0ODViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1
ZGlvL0R5bmFtaWNzQ29tcHJlc3Nvck5vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViYXVkaW8vRHluYW1pY3NDb21wcmVzc29yTm9kZS5jcHAKQEAgLTQxLDcgKzQxLDcgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogCiBXVEZfTUFLRV9JU09fQUxMT0NBVEVEX0lNUEwoRHluYW1p
Y3NDb21wcmVzc29yTm9kZSk7CiAKLUR5bmFtaWNzQ29tcHJlc3Nvck5vZGU6OkR5bmFtaWNzQ29t
cHJlc3Nvck5vZGUoQXVkaW9Db250ZXh0JiBjb250ZXh0LCBmbG9hdCBzYW1wbGVSYXRlKQorRHlu
YW1pY3NDb21wcmVzc29yTm9kZTo6RHluYW1pY3NDb21wcmVzc29yTm9kZShBdWRpb0NvbnRleHRC
YXNlJiBjb250ZXh0LCBmbG9hdCBzYW1wbGVSYXRlKQogICAgIDogQXVkaW9Ob2RlKGNvbnRleHQs
IHNhbXBsZVJhdGUpCiB7CiAgICAgc2V0Tm9kZVR5cGUoTm9kZVR5cGVEeW5hbWljc0NvbXByZXNz
b3IpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9EeW5hbWlj
c0NvbXByZXNzb3JOb2RlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0R5bmFt
aWNzQ29tcHJlc3Nvck5vZGUuaAppbmRleCA0NGNiZmJhYTA1OTcxN2Y2YzM1MDMyMmEyODA0ZTVk
ODYzYTY2ODU3Li5iNzA1M2IyMjE3M2MwMmNhMGQyNmVjZTYxYTE4Yzc3ZWUwNzUyZGZlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0R5bmFtaWNzQ29tcHJlc3Nv
ck5vZGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0R5bmFtaWNzQ29t
cHJlc3Nvck5vZGUuaApAQCAtMzUsNyArMzUsNyBAQCBjbGFzcyBEeW5hbWljc0NvbXByZXNzb3I7
CiBjbGFzcyBEeW5hbWljc0NvbXByZXNzb3JOb2RlIGZpbmFsIDogcHVibGljIEF1ZGlvTm9kZSB7
CiAgICAgV1RGX01BS0VfSVNPX0FMTE9DQVRFRChEeW5hbWljc0NvbXByZXNzb3JOb2RlKTsKIHB1
YmxpYzoKLSAgICBzdGF0aWMgUmVmPER5bmFtaWNzQ29tcHJlc3Nvck5vZGU+IGNyZWF0ZShBdWRp
b0NvbnRleHQmIGNvbnRleHQsIGZsb2F0IHNhbXBsZVJhdGUpCisgICAgc3RhdGljIFJlZjxEeW5h
bWljc0NvbXByZXNzb3JOb2RlPiBjcmVhdGUoQXVkaW9Db250ZXh0QmFzZSYgY29udGV4dCwgZmxv
YXQgc2FtcGxlUmF0ZSkKICAgICB7CiAgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IER5bmFt
aWNzQ29tcHJlc3Nvck5vZGUoY29udGV4dCwgc2FtcGxlUmF0ZSkpOwogICAgIH0KQEAgLTYyLDcg
KzYyLDcgQEAgcHJpdmF0ZToKICAgICBkb3VibGUgdGFpbFRpbWUoKSBjb25zdCBvdmVycmlkZTsK
ICAgICBkb3VibGUgbGF0ZW5jeVRpbWUoKSBjb25zdCBvdmVycmlkZTsKIAotICAgIER5bmFtaWNz
Q29tcHJlc3Nvck5vZGUoQXVkaW9Db250ZXh0JiwgZmxvYXQgc2FtcGxlUmF0ZSk7CisgICAgRHlu
YW1pY3NDb21wcmVzc29yTm9kZShBdWRpb0NvbnRleHRCYXNlJiwgZmxvYXQgc2FtcGxlUmF0ZSk7
CiAKICAgICBzdGQ6OnVuaXF1ZV9wdHI8RHluYW1pY3NDb21wcmVzc29yPiBtX2R5bmFtaWNzQ29t
cHJlc3NvcjsKICAgICBSZWZQdHI8QXVkaW9QYXJhbT4gbV90aHJlc2hvbGQ7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0dhaW5Ob2RlLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vR2Fpbk5vZGUuY3BwCmluZGV4IDI1N2RmMmVjZTIzMzhj
YmNiYWI5ZWQwNTEyMzNjNjRiMWM1N2YyNWQuLjk4NGQxMTk0YmRkNTUyZjM4NGIwZDZkOWJjZWJm
N2RhNDJmZDg2OWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8v
R2Fpbk5vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vR2Fpbk5v
ZGUuY3BwCkBAIC0zNyw3ICszNyw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogV1RGX01BS0Vf
SVNPX0FMTE9DQVRFRF9JTVBMKEdhaW5Ob2RlKTsKIAotR2Fpbk5vZGU6OkdhaW5Ob2RlKEF1ZGlv
Q29udGV4dCYgY29udGV4dCwgZmxvYXQgc2FtcGxlUmF0ZSkKK0dhaW5Ob2RlOjpHYWluTm9kZShB
dWRpb0NvbnRleHRCYXNlJiBjb250ZXh0LCBmbG9hdCBzYW1wbGVSYXRlKQogICAgIDogQXVkaW9O
b2RlKGNvbnRleHQsIHNhbXBsZVJhdGUpCiAgICAgLCBtX2xhc3RHYWluKDEuMCkKICAgICAsIG1f
c2FtcGxlQWNjdXJhdGVHYWluVmFsdWVzKEF1ZGlvTm9kZTo6UHJvY2Vzc2luZ1NpemVJbkZyYW1l
cykgLy8gRklYTUU6IGNhbiBwcm9iYWJseSBzaGFyZSB0ZW1wIGJ1ZmZlciBpbiBjb250ZXh0CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0dhaW5Ob2RlLmggYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0dhaW5Ob2RlLmgKaW5kZXggZmE4NWIwYjlm
ZjU0N2YzMjlmNTY2NWIyYTA1NTc3NGJlMGY3Y2FiOC4uZGNmODU1YTkxYzk1N2E5MDAwYmFmOGI5
OTQzNmFlNzczNzlmYmI1MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJh
dWRpby9HYWluTm9kZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vR2Fp
bk5vZGUuaApAQCAtMzgsNyArMzgsNyBAQCBjbGFzcyBBdWRpb0NvbnRleHQ7CiBjbGFzcyBHYWlu
Tm9kZSBmaW5hbCA6IHB1YmxpYyBBdWRpb05vZGUgewogICAgIFdURl9NQUtFX0lTT19BTExPQ0FU
RUQoR2Fpbk5vZGUpOwogcHVibGljOgotICAgIHN0YXRpYyBSZWY8R2Fpbk5vZGU+IGNyZWF0ZShB
dWRpb0NvbnRleHQmIGNvbnRleHQsIGZsb2F0IHNhbXBsZVJhdGUpCisgICAgc3RhdGljIFJlZjxH
YWluTm9kZT4gY3JlYXRlKEF1ZGlvQ29udGV4dEJhc2UmIGNvbnRleHQsIGZsb2F0IHNhbXBsZVJh
dGUpCiAgICAgewogICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBHYWluTm9kZShjb250ZXh0
LCBzYW1wbGVSYXRlKSk7CiAgICAgfQpAQCAtNTcsNyArNTcsNyBAQCBwcml2YXRlOgogICAgIGRv
dWJsZSB0YWlsVGltZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIDA7IH0KICAgICBkb3VibGUg
bGF0ZW5jeVRpbWUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiAwOyB9CiAKLSAgICBHYWluTm9k
ZShBdWRpb0NvbnRleHQmLCBmbG9hdCBzYW1wbGVSYXRlKTsKKyAgICBHYWluTm9kZShBdWRpb0Nv
bnRleHRCYXNlJiwgZmxvYXQgc2FtcGxlUmF0ZSk7CiAKICAgICBmbG9hdCBtX2xhc3RHYWluOyAv
LyBmb3IgZGUtemlwcGVyaW5nCiAgICAgUmVmUHRyPEF1ZGlvUGFyYW0+IG1fZ2FpbjsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vTWVkaWFFbGVtZW50QXVkaW9T
b3VyY2VOb2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vTWVkaWFFbGVt
ZW50QXVkaW9Tb3VyY2VOb2RlLmNwcAppbmRleCAwZTU5ODFmYTY4NmRiOTIxMmZmYTBmODNlOWJk
Y2QwM2FmOWFhYWMzLi5jNjc1ZDdkZTcxNjgzOTJlODdkZjlmNDNkZmE2NTk5N2I1NGZmOGY0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL01lZGlhRWxlbWVudEF1
ZGlvU291cmNlTm9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9N
ZWRpYUVsZW1lbnRBdWRpb1NvdXJjZU5vZGUuY3BwCkBAIC00MywxMiArNDMsMTIgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogCiBXVEZfTUFLRV9JU09fQUxMT0NBVEVEX0lNUEwoTWVkaWFFbGVtZW50
QXVkaW9Tb3VyY2VOb2RlKTsKIAotUmVmPE1lZGlhRWxlbWVudEF1ZGlvU291cmNlTm9kZT4gTWVk
aWFFbGVtZW50QXVkaW9Tb3VyY2VOb2RlOjpjcmVhdGUoQXVkaW9Db250ZXh0JiBjb250ZXh0LCBI
VE1MTWVkaWFFbGVtZW50JiBtZWRpYUVsZW1lbnQpCitSZWY8TWVkaWFFbGVtZW50QXVkaW9Tb3Vy
Y2VOb2RlPiBNZWRpYUVsZW1lbnRBdWRpb1NvdXJjZU5vZGU6OmNyZWF0ZShBdWRpb0NvbnRleHRC
YXNlJiBjb250ZXh0LCBIVE1MTWVkaWFFbGVtZW50JiBtZWRpYUVsZW1lbnQpCiB7CiAgICAgcmV0
dXJuIGFkb3B0UmVmKCpuZXcgTWVkaWFFbGVtZW50QXVkaW9Tb3VyY2VOb2RlKGNvbnRleHQsIG1l
ZGlhRWxlbWVudCkpOwogfQogCi1NZWRpYUVsZW1lbnRBdWRpb1NvdXJjZU5vZGU6Ok1lZGlhRWxl
bWVudEF1ZGlvU291cmNlTm9kZShBdWRpb0NvbnRleHQmIGNvbnRleHQsIEhUTUxNZWRpYUVsZW1l
bnQmIG1lZGlhRWxlbWVudCkKK01lZGlhRWxlbWVudEF1ZGlvU291cmNlTm9kZTo6TWVkaWFFbGVt
ZW50QXVkaW9Tb3VyY2VOb2RlKEF1ZGlvQ29udGV4dEJhc2UmIGNvbnRleHQsIEhUTUxNZWRpYUVs
ZW1lbnQmIG1lZGlhRWxlbWVudCkKICAgICA6IEF1ZGlvTm9kZShjb250ZXh0LCBjb250ZXh0LnNh
bXBsZVJhdGUoKSkKICAgICAsIG1fbWVkaWFFbGVtZW50KG1lZGlhRWxlbWVudCkKICAgICAsIG1f
c291cmNlTnVtYmVyT2ZDaGFubmVscygwKQpAQCAtOTcsNyArOTcsNyBAQCB2b2lkIE1lZGlhRWxl
bWVudEF1ZGlvU291cmNlTm9kZTo6c2V0Rm9ybWF0KHNpemVfdCBudW1iZXJPZkNoYW5uZWxzLCBm
bG9hdCBzb3VyYwogCiAgICAgICAgIHsKICAgICAgICAgICAgIC8vIFRoZSBjb250ZXh0IG11c3Qg
YmUgbG9ja2VkIHdoZW4gY2hhbmdpbmcgdGhlIG51bWJlciBvZiBvdXRwdXQgY2hhbm5lbHMuCi0g
ICAgICAgICAgICBBdWRpb0NvbnRleHQ6OkF1dG9Mb2NrZXIgY29udGV4dExvY2tlcihjb250ZXh0
KCkpOworICAgICAgICAgICAgQXVkaW9Db250ZXh0QmFzZTo6QXV0b0xvY2tlciBjb250ZXh0TG9j
a2VyKGNvbnRleHQoKSk7CiAKICAgICAgICAgICAgIC8vIERvIGFueSBuZWNlc3NzYXJ5IHJlLWNv
bmZpZ3VyYXRpb24gdG8gdGhlIG91dHB1dCdzIG51bWJlciBvZiBjaGFubmVscy4KICAgICAgICAg
ICAgIG91dHB1dCgwKS0+c2V0TnVtYmVyT2ZDaGFubmVscyhudW1iZXJPZkNoYW5uZWxzKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vTWVkaWFFbGVtZW50QXVk
aW9Tb3VyY2VOb2RlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL01lZGlhRWxl
bWVudEF1ZGlvU291cmNlTm9kZS5oCmluZGV4IDNhMTMxNTQxNWYxOGY5YjM0YWRjZTQyNGYyNmMy
NjEyZDNjNDhmNTkuLjcxZDBlZDEzOGE1ZjlmZDM3MzA1MDIwNTQxZWQ1ZDQ3YzNhZWMwY2MgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vTWVkaWFFbGVtZW50QXVk
aW9Tb3VyY2VOb2RlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9NZWRp
YUVsZW1lbnRBdWRpb1NvdXJjZU5vZGUuaApAQCAtNDAsNyArNDAsNyBAQCBjbGFzcyBBdWRpb0Nv
bnRleHQ7CiBjbGFzcyBNZWRpYUVsZW1lbnRBdWRpb1NvdXJjZU5vZGUgZmluYWwgOiBwdWJsaWMg
QXVkaW9Ob2RlLCBwdWJsaWMgQXVkaW9Tb3VyY2VQcm92aWRlckNsaWVudCB7CiAgICAgV1RGX01B
S0VfSVNPX0FMTE9DQVRFRChNZWRpYUVsZW1lbnRBdWRpb1NvdXJjZU5vZGUpOwogcHVibGljOgot
ICAgIHN0YXRpYyBSZWY8TWVkaWFFbGVtZW50QXVkaW9Tb3VyY2VOb2RlPiBjcmVhdGUoQXVkaW9D
b250ZXh0JiwgSFRNTE1lZGlhRWxlbWVudCYpOworICAgIHN0YXRpYyBSZWY8TWVkaWFFbGVtZW50
QXVkaW9Tb3VyY2VOb2RlPiBjcmVhdGUoQXVkaW9Db250ZXh0QmFzZSYsIEhUTUxNZWRpYUVsZW1l
bnQmKTsKIAogICAgIHZpcnR1YWwgfk1lZGlhRWxlbWVudEF1ZGlvU291cmNlTm9kZSgpOwogCkBA
IC01Nyw3ICs1Nyw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHVubG9jaygpOwogCiBwcml2YXRlOgot
ICAgIE1lZGlhRWxlbWVudEF1ZGlvU291cmNlTm9kZShBdWRpb0NvbnRleHQmLCBIVE1MTWVkaWFF
bGVtZW50Jik7CisgICAgTWVkaWFFbGVtZW50QXVkaW9Tb3VyY2VOb2RlKEF1ZGlvQ29udGV4dEJh
c2UmLCBIVE1MTWVkaWFFbGVtZW50Jik7CiAKICAgICBkb3VibGUgdGFpbFRpbWUoKSBjb25zdCBv
dmVycmlkZSB7IHJldHVybiAwOyB9CiAgICAgZG91YmxlIGxhdGVuY3lUaW1lKCkgY29uc3Qgb3Zl
cnJpZGUgeyByZXR1cm4gMDsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJhdWRpby9NZWRpYVN0cmVhbUF1ZGlvRGVzdGluYXRpb25Ob2RlLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViYXVkaW8vTWVkaWFTdHJlYW1BdWRpb0Rlc3RpbmF0aW9uTm9kZS5jcHAK
aW5kZXggZDc2NjI5MzAzMDhhNzQ2YTQ2YWUwMDg2OGE1ZDYzNDFiODJmZjczYi4uMzBmMWEyMjJi
ZTIzMDBlMTJkYWU3NjZiZGVlNDJiMGJiMWNmMWU4OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJhdWRpby9NZWRpYVN0cmVhbUF1ZGlvRGVzdGluYXRpb25Ob2RlLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL01lZGlhU3RyZWFtQXVkaW9EZXN0
aW5hdGlvbk5vZGUuY3BwCkBAIC0zOSwxMiArMzksMTIgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
CiBXVEZfTUFLRV9JU09fQUxMT0NBVEVEX0lNUEwoTWVkaWFTdHJlYW1BdWRpb0Rlc3RpbmF0aW9u
Tm9kZSk7CiAKLVJlZjxNZWRpYVN0cmVhbUF1ZGlvRGVzdGluYXRpb25Ob2RlPiBNZWRpYVN0cmVh
bUF1ZGlvRGVzdGluYXRpb25Ob2RlOjpjcmVhdGUoQXVkaW9Db250ZXh0JiBjb250ZXh0LCBzaXpl
X3QgbnVtYmVyT2ZDaGFubmVscykKK1JlZjxNZWRpYVN0cmVhbUF1ZGlvRGVzdGluYXRpb25Ob2Rl
PiBNZWRpYVN0cmVhbUF1ZGlvRGVzdGluYXRpb25Ob2RlOjpjcmVhdGUoQXVkaW9Db250ZXh0QmFz
ZSYgY29udGV4dCwgc2l6ZV90IG51bWJlck9mQ2hhbm5lbHMpCiB7CiAgICAgcmV0dXJuIGFkb3B0
UmVmKCpuZXcgTWVkaWFTdHJlYW1BdWRpb0Rlc3RpbmF0aW9uTm9kZShjb250ZXh0LCBudW1iZXJP
ZkNoYW5uZWxzKSk7CiB9CiAKLU1lZGlhU3RyZWFtQXVkaW9EZXN0aW5hdGlvbk5vZGU6Ok1lZGlh
U3RyZWFtQXVkaW9EZXN0aW5hdGlvbk5vZGUoQXVkaW9Db250ZXh0JiBjb250ZXh0LCBzaXplX3Qg
bnVtYmVyT2ZDaGFubmVscykKK01lZGlhU3RyZWFtQXVkaW9EZXN0aW5hdGlvbk5vZGU6Ok1lZGlh
U3RyZWFtQXVkaW9EZXN0aW5hdGlvbk5vZGUoQXVkaW9Db250ZXh0QmFzZSYgY29udGV4dCwgc2l6
ZV90IG51bWJlck9mQ2hhbm5lbHMpCiAgICAgOiBBdWRpb0Jhc2ljSW5zcGVjdG9yTm9kZShjb250
ZXh0LCBjb250ZXh0LnNhbXBsZVJhdGUoKSwgbnVtYmVyT2ZDaGFubmVscykKICAgICAsIG1fc291
cmNlKE1lZGlhU3RyZWFtQXVkaW9Tb3VyY2U6OmNyZWF0ZShjb250ZXh0LnNhbXBsZVJhdGUoKSkp
CiAgICAgLCBtX3N0cmVhbShNZWRpYVN0cmVhbTo6Y3JlYXRlKCpjb250ZXh0LmRvY3VtZW50KCks
IE1lZGlhU3RyZWFtUHJpdmF0ZTo6Y3JlYXRlKGNvbnRleHQuZG9jdW1lbnQoKS0+bG9nZ2VyKCks
IG1fc291cmNlLmNvcHlSZWYoKSkpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJhdWRpby9NZWRpYVN0cmVhbUF1ZGlvRGVzdGluYXRpb25Ob2RlLmggYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmF1ZGlvL01lZGlhU3RyZWFtQXVkaW9EZXN0aW5hdGlvbk5vZGUuaApp
bmRleCBmNWE3ZThmZWM0YTkwMmM5MGJkY2Y5YzVjN2I0NjdjOTgwZjk3ZTNhLi5kYmFkOTI4ZDc5
NmEyZDhmNDEwZjQzNmZiZTMzZWY3MmFhODQxNzNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmF1ZGlvL01lZGlhU3RyZWFtQXVkaW9EZXN0aW5hdGlvbk5vZGUuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL01lZGlhU3RyZWFtQXVkaW9EZXN0aW5h
dGlvbk5vZGUuaApAQCAtMzIsMTMgKzMyLDEzIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAot
Y2xhc3MgQXVkaW9Db250ZXh0OworY2xhc3MgQXVkaW9Db250ZXh0QmFzZTsKIGNsYXNzIE1lZGlh
U3RyZWFtQXVkaW9Tb3VyY2U7CiAKIGNsYXNzIE1lZGlhU3RyZWFtQXVkaW9EZXN0aW5hdGlvbk5v
ZGUgZmluYWwgOiBwdWJsaWMgQXVkaW9CYXNpY0luc3BlY3Rvck5vZGUgewogICAgIFdURl9NQUtF
X0lTT19BTExPQ0FURUQoTWVkaWFTdHJlYW1BdWRpb0Rlc3RpbmF0aW9uTm9kZSk7CiBwdWJsaWM6
Ci0gICAgc3RhdGljIFJlZjxNZWRpYVN0cmVhbUF1ZGlvRGVzdGluYXRpb25Ob2RlPiBjcmVhdGUo
QXVkaW9Db250ZXh0Jiwgc2l6ZV90IG51bWJlck9mQ2hhbm5lbHMpOworICAgIHN0YXRpYyBSZWY8
TWVkaWFTdHJlYW1BdWRpb0Rlc3RpbmF0aW9uTm9kZT4gY3JlYXRlKEF1ZGlvQ29udGV4dEJhc2Um
LCBzaXplX3QgbnVtYmVyT2ZDaGFubmVscyk7CiAKICAgICB2aXJ0dWFsIH5NZWRpYVN0cmVhbUF1
ZGlvRGVzdGluYXRpb25Ob2RlKCk7CiAKQEAgLTQ5LDcgKzQ5LDcgQEAgcHVibGljOgogICAgIHZv
aWQgcmVzZXQoKSBmaW5hbDsKICAgICAKIHByaXZhdGU6Ci0gICAgTWVkaWFTdHJlYW1BdWRpb0Rl
c3RpbmF0aW9uTm9kZShBdWRpb0NvbnRleHQmLCBzaXplX3QgbnVtYmVyT2ZDaGFubmVscyk7Cisg
ICAgTWVkaWFTdHJlYW1BdWRpb0Rlc3RpbmF0aW9uTm9kZShBdWRpb0NvbnRleHRCYXNlJiwgc2l6
ZV90IG51bWJlck9mQ2hhbm5lbHMpOwogCiAgICAgZG91YmxlIHRhaWxUaW1lKCkgY29uc3QgZmlu
YWwgeyByZXR1cm4gMDsgfQogICAgIGRvdWJsZSBsYXRlbmN5VGltZSgpIGNvbnN0IGZpbmFsIHsg
cmV0dXJuIDA7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8v
TWVkaWFTdHJlYW1BdWRpb1NvdXJjZU5vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJhdWRpby9NZWRpYVN0cmVhbUF1ZGlvU291cmNlTm9kZS5jcHAKaW5kZXggMWI0ZmI2ZDE5MjJh
ZDFjNGIwNDFjYjkxMjljNTVjMTM4NzA3ZjdjZS4uMzVlNTVhOTIwMmMzZjMwNTViZjE4N2JhYTZm
NjZmYjZiZDUxZjY5MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRp
by9NZWRpYVN0cmVhbUF1ZGlvU291cmNlTm9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJhdWRpby9NZWRpYVN0cmVhbUF1ZGlvU291cmNlTm9kZS5jcHAKQEAgLTM4LDEyICsz
OCwxMiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFdURl9NQUtFX0lTT19BTExPQ0FURURfSU1Q
TChNZWRpYVN0cmVhbUF1ZGlvU291cmNlTm9kZSk7CiAKLVJlZjxNZWRpYVN0cmVhbUF1ZGlvU291
cmNlTm9kZT4gTWVkaWFTdHJlYW1BdWRpb1NvdXJjZU5vZGU6OmNyZWF0ZShBdWRpb0NvbnRleHQm
IGNvbnRleHQsIE1lZGlhU3RyZWFtJiBtZWRpYVN0cmVhbSwgTWVkaWFTdHJlYW1UcmFjayYgYXVk
aW9UcmFjaykKK1JlZjxNZWRpYVN0cmVhbUF1ZGlvU291cmNlTm9kZT4gTWVkaWFTdHJlYW1BdWRp
b1NvdXJjZU5vZGU6OmNyZWF0ZShBdWRpb0NvbnRleHRCYXNlJiBjb250ZXh0LCBNZWRpYVN0cmVh
bSYgbWVkaWFTdHJlYW0sIE1lZGlhU3RyZWFtVHJhY2smIGF1ZGlvVHJhY2spCiB7CiAgICAgcmV0
dXJuIGFkb3B0UmVmKCpuZXcgTWVkaWFTdHJlYW1BdWRpb1NvdXJjZU5vZGUoY29udGV4dCwgbWVk
aWFTdHJlYW0sIGF1ZGlvVHJhY2spKTsKIH0KIAotTWVkaWFTdHJlYW1BdWRpb1NvdXJjZU5vZGU6
Ok1lZGlhU3RyZWFtQXVkaW9Tb3VyY2VOb2RlKEF1ZGlvQ29udGV4dCYgY29udGV4dCwgTWVkaWFT
dHJlYW0mIG1lZGlhU3RyZWFtLCBNZWRpYVN0cmVhbVRyYWNrJiBhdWRpb1RyYWNrKQorTWVkaWFT
dHJlYW1BdWRpb1NvdXJjZU5vZGU6Ok1lZGlhU3RyZWFtQXVkaW9Tb3VyY2VOb2RlKEF1ZGlvQ29u
dGV4dEJhc2UmIGNvbnRleHQsIE1lZGlhU3RyZWFtJiBtZWRpYVN0cmVhbSwgTWVkaWFTdHJlYW1U
cmFjayYgYXVkaW9UcmFjaykKICAgICA6IEF1ZGlvTm9kZShjb250ZXh0LCBjb250ZXh0LnNhbXBs
ZVJhdGUoKSkKICAgICAsIG1fbWVkaWFTdHJlYW0obWVkaWFTdHJlYW0pCiAgICAgLCBtX2F1ZGlv
VHJhY2soYXVkaW9UcmFjaykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
YXVkaW8vTWVkaWFTdHJlYW1BdWRpb1NvdXJjZU5vZGUuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViYXVkaW8vTWVkaWFTdHJlYW1BdWRpb1NvdXJjZU5vZGUuaAppbmRleCBlM2VkZWZlMWJk
NTcwMmE3M2EyMmY0YTgzOWQyM2NmYzE5YzI5YTA1Li5jNzJkMzEyMjMzZDUwNmRkNTRjZTI3MGZj
OTIyN2I1NDU3NWVlMmUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1
ZGlvL01lZGlhU3RyZWFtQXVkaW9Tb3VyY2VOb2RlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJhdWRpby9NZWRpYVN0cmVhbUF1ZGlvU291cmNlTm9kZS5oCkBAIC00MCw3ICs0MCw3
IEBAIGNsYXNzIE11bHRpQ2hhbm5lbFJlc2FtcGxlcjsKIGNsYXNzIE1lZGlhU3RyZWFtQXVkaW9T
b3VyY2VOb2RlIGZpbmFsIDogcHVibGljIEF1ZGlvTm9kZSwgcHVibGljIEF1ZGlvU291cmNlUHJv
dmlkZXJDbGllbnQgewogICAgIFdURl9NQUtFX0lTT19BTExPQ0FURUQoTWVkaWFTdHJlYW1BdWRp
b1NvdXJjZU5vZGUpOwogcHVibGljOgotICAgIHN0YXRpYyBSZWY8TWVkaWFTdHJlYW1BdWRpb1Nv
dXJjZU5vZGU+IGNyZWF0ZShBdWRpb0NvbnRleHQmLCBNZWRpYVN0cmVhbSYsIE1lZGlhU3RyZWFt
VHJhY2smKTsKKyAgICBzdGF0aWMgUmVmPE1lZGlhU3RyZWFtQXVkaW9Tb3VyY2VOb2RlPiBjcmVh
dGUoQXVkaW9Db250ZXh0QmFzZSYsIE1lZGlhU3RyZWFtJiwgTWVkaWFTdHJlYW1UcmFjayYpOwog
CiAgICAgdmlydHVhbCB+TWVkaWFTdHJlYW1BdWRpb1NvdXJjZU5vZGUoKTsKIApAQCAtNTQsNyAr
NTQsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRGb3JtYXQoc2l6ZV90IG51bWJlck9mQ2hhbm5l
bHMsIGZsb2F0IHNhbXBsZVJhdGUpIG92ZXJyaWRlOwogCiBwcml2YXRlOgotICAgIE1lZGlhU3Ry
ZWFtQXVkaW9Tb3VyY2VOb2RlKEF1ZGlvQ29udGV4dCYsIE1lZGlhU3RyZWFtJiwgTWVkaWFTdHJl
YW1UcmFjayYpOworICAgIE1lZGlhU3RyZWFtQXVkaW9Tb3VyY2VOb2RlKEF1ZGlvQ29udGV4dEJh
c2UmLCBNZWRpYVN0cmVhbSYsIE1lZGlhU3RyZWFtVHJhY2smKTsKIAogICAgIGRvdWJsZSB0YWls
VGltZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIDA7IH0KICAgICBkb3VibGUgbGF0ZW5jeVRp
bWUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiAwOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmF1ZGlvL09mZmxpbmVBdWRpb0NvbnRleHQuaWRsIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJhdWRpby9PZmZsaW5lQXVkaW9Db250ZXh0LmlkbAppbmRleCBmNmVj
YjFhNjg1ODFjYzk0NjY3OWQ5MjRmOGUzZTE1NGQwMzQzYWM2Li4wZTcxYTA2YmMzZmEyZjhlODYy
OTlmM2MyNDU4N2U2Y2JhOWM0MTExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmF1ZGlvL09mZmxpbmVBdWRpb0NvbnRleHQuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViYXVkaW8vT2ZmbGluZUF1ZGlvQ29udGV4dC5pZGwKQEAgLTI0LDggKzI0LDggQEAK
IAogWwogICAgIENvbmRpdGlvbmFsPVdFQl9BVURJTywKKyAgICBFbmFibGVkQnlTZXR0aW5nPU1v
ZGVyblVucHJlZml4ZWRXZWJBdWRpbywKICAgICBKU0dlbmVyYXRlVG9KU09iamVjdCwKLSAgICBJ
bnRlcmZhY2VOYW1lPXdlYmtpdE9mZmxpbmVBdWRpb0NvbnRleHQKIF0gaW50ZXJmYWNlIE9mZmxp
bmVBdWRpb0NvbnRleHQgOiBBdWRpb0NvbnRleHQgewogICAgIFtDYWxsV2l0aD1TY3JpcHRFeGVj
dXRpb25Db250ZXh0LCBNYXlUaHJvd0V4Y2VwdGlvbl0gY29uc3RydWN0b3IodW5zaWduZWQgbG9u
ZyBudW1iZXJPZkNoYW5uZWxzLCB1bnNpZ25lZCBsb25nIG51bWJlck9mRnJhbWVzLCB1bnJlc3Ry
aWN0ZWQgZmxvYXQgc2FtcGxlUmF0ZSk7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJhdWRpby9PZmZsaW5lQXVkaW9EZXN0aW5hdGlvbk5vZGUuY3BwIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9PZmZsaW5lQXVkaW9EZXN0aW5hdGlvbk5vZGUuY3Bw
CmluZGV4IDZhMTk1NTQ2Y2Y3MTM5NGZlNWM0MTRiNzY1YjZjOTdlMDVlZGMwNDkuLmZlYzUwOGNi
ZmYxYzcxZDMzYmM0YjEzZWE5ODJmOTJmYzBhZmI5OWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViYXVkaW8vT2ZmbGluZUF1ZGlvRGVzdGluYXRpb25Ob2RlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL09mZmxpbmVBdWRpb0Rlc3RpbmF0aW9u
Tm9kZS5jcHAKQEAgLTQxLDcgKzQxLDcgQEAgV1RGX01BS0VfSVNPX0FMTE9DQVRFRF9JTVBMKE9m
ZmxpbmVBdWRpb0Rlc3RpbmF0aW9uTm9kZSk7CiAgICAgCiBjb25zdCBzaXplX3QgcmVuZGVyUXVh
bnR1bVNpemUgPSAxMjg7ICAgIAogCi1PZmZsaW5lQXVkaW9EZXN0aW5hdGlvbk5vZGU6Ok9mZmxp
bmVBdWRpb0Rlc3RpbmF0aW9uTm9kZShBdWRpb0NvbnRleHQmIGNvbnRleHQsIEF1ZGlvQnVmZmVy
KiByZW5kZXJUYXJnZXQpCitPZmZsaW5lQXVkaW9EZXN0aW5hdGlvbk5vZGU6Ok9mZmxpbmVBdWRp
b0Rlc3RpbmF0aW9uTm9kZShBdWRpb0NvbnRleHRCYXNlJiBjb250ZXh0LCBBdWRpb0J1ZmZlciog
cmVuZGVyVGFyZ2V0KQogICAgIDogQXVkaW9EZXN0aW5hdGlvbk5vZGUoY29udGV4dCwgcmVuZGVy
VGFyZ2V0LT5zYW1wbGVSYXRlKCkpCiAgICAgLCBtX3JlbmRlclRhcmdldChyZW5kZXJUYXJnZXQp
CiAgICAgLCBtX3N0YXJ0ZWRSZW5kZXJpbmcoZmFsc2UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmF1ZGlvL09mZmxpbmVBdWRpb0Rlc3RpbmF0aW9uTm9kZS5oIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9PZmZsaW5lQXVkaW9EZXN0aW5hdGlvbk5vZGUu
aAppbmRleCBkYTI0OTU3NGQ0ODRmZjgxMmFhNDkzN2FjM2ExNjVlZTk1ODI4NGNjLi5mODcxMGZk
ZTEwZGZmZmU0OTAyMzRmMTkzNmJkNThiYWEzY2IyZTk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmF1ZGlvL09mZmxpbmVBdWRpb0Rlc3RpbmF0aW9uTm9kZS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vT2ZmbGluZUF1ZGlvRGVzdGluYXRpb25O
b2RlLmgKQEAgLTM3LDkgKzM3LDkgQEAgY2xhc3MgQXVkaW9Db250ZXh0OwogY2xhc3MgT2ZmbGlu
ZUF1ZGlvRGVzdGluYXRpb25Ob2RlIGZpbmFsIDogcHVibGljIEF1ZGlvRGVzdGluYXRpb25Ob2Rl
IHsKICAgICBXVEZfTUFLRV9JU09fQUxMT0NBVEVEKE9mZmxpbmVBdWRpb0Rlc3RpbmF0aW9uTm9k
ZSk7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxPZmZsaW5lQXVkaW9EZXN0aW5hdGlvbk5vZGU+
IGNyZWF0ZShBdWRpb0NvbnRleHQmIGNvbnRleHQsIEF1ZGlvQnVmZmVyKiByZW5kZXJUYXJnZXQp
CisgICAgc3RhdGljIFJlZjxPZmZsaW5lQXVkaW9EZXN0aW5hdGlvbk5vZGU+IGNyZWF0ZShBdWRp
b0NvbnRleHRCYXNlJiBjb250ZXh0LCBBdWRpb0J1ZmZlciogcmVuZGVyVGFyZ2V0KQogICAgIHsK
LSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgT2ZmbGluZUF1ZGlvRGVzdGluYXRpb25Ob2Rl
KGNvbnRleHQsIHJlbmRlclRhcmdldCkpOyAgICAgCisgICAgICAgIHJldHVybiBhZG9wdFJlZigq
bmV3IE9mZmxpbmVBdWRpb0Rlc3RpbmF0aW9uTm9kZShjb250ZXh0LCByZW5kZXJUYXJnZXQpKTsK
ICAgICB9CiAKICAgICB2aXJ0dWFsIH5PZmZsaW5lQXVkaW9EZXN0aW5hdGlvbk5vZGUoKTsKQEAg
LTU1LDcgKzU1LDcgQEAgcHVibGljOgogICAgIGZsb2F0IHNhbXBsZVJhdGUoKSBjb25zdCBvdmVy
cmlkZSB7IHJldHVybiBtX3JlbmRlclRhcmdldC0+c2FtcGxlUmF0ZSgpOyB9CiAKIHByaXZhdGU6
Ci0gICAgT2ZmbGluZUF1ZGlvRGVzdGluYXRpb25Ob2RlKEF1ZGlvQ29udGV4dCYsIEF1ZGlvQnVm
ZmVyKiByZW5kZXJUYXJnZXQpOworICAgIE9mZmxpbmVBdWRpb0Rlc3RpbmF0aW9uTm9kZShBdWRp
b0NvbnRleHRCYXNlJiwgQXVkaW9CdWZmZXIqIHJlbmRlclRhcmdldCk7CiAKICAgICAvLyBUaGlz
IEF1ZGlvTm9kZSByZW5kZXJzIGludG8gdGhpcyBBdWRpb0J1ZmZlci4KICAgICBSZWZQdHI8QXVk
aW9CdWZmZXI+IG1fcmVuZGVyVGFyZ2V0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJhdWRpby9Pc2NpbGxhdG9yTm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmF1ZGlvL09zY2lsbGF0b3JOb2RlLmNwcAppbmRleCA5NTYwMDUzYTQ4MDViOWQ0YmY1NTk5
ZTczYTE5YTgxZTI1YjBjOTZmLi5lOGYzMWM3MjIwZTUwNjU2OGUzYWNmMDU4ZjZjYWI0NzNiMDkx
ZWQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL09zY2lsbGF0
b3JOb2RlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL09zY2lsbGF0
b3JOb2RlLmNwcApAQCAtNDUsMTIgKzQ1LDEyIEBAIFBlcmlvZGljV2F2ZSogT3NjaWxsYXRvck5v
ZGU6OnNfcGVyaW9kaWNXYXZlU3F1YXJlID0gbnVsbHB0cjsKIFBlcmlvZGljV2F2ZSogT3NjaWxs
YXRvck5vZGU6OnNfcGVyaW9kaWNXYXZlU2F3dG9vdGggPSBudWxscHRyOwogUGVyaW9kaWNXYXZl
KiBPc2NpbGxhdG9yTm9kZTo6c19wZXJpb2RpY1dhdmVUcmlhbmdsZSA9IG51bGxwdHI7CiAKLVJl
ZjxPc2NpbGxhdG9yTm9kZT4gT3NjaWxsYXRvck5vZGU6OmNyZWF0ZShBdWRpb0NvbnRleHQmIGNv
bnRleHQsIGZsb2F0IHNhbXBsZVJhdGUpCitSZWY8T3NjaWxsYXRvck5vZGU+IE9zY2lsbGF0b3JO
b2RlOjpjcmVhdGUoQXVkaW9Db250ZXh0QmFzZSYgY29udGV4dCwgZmxvYXQgc2FtcGxlUmF0ZSkK
IHsKICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBPc2NpbGxhdG9yTm9kZShjb250ZXh0LCBzYW1w
bGVSYXRlKSk7CiB9CiAKLU9zY2lsbGF0b3JOb2RlOjpPc2NpbGxhdG9yTm9kZShBdWRpb0NvbnRl
eHQmIGNvbnRleHQsIGZsb2F0IHNhbXBsZVJhdGUpCitPc2NpbGxhdG9yTm9kZTo6T3NjaWxsYXRv
ck5vZGUoQXVkaW9Db250ZXh0QmFzZSYgY29udGV4dCwgZmxvYXQgc2FtcGxlUmF0ZSkKICAgICA6
IEF1ZGlvU2NoZWR1bGVkU291cmNlTm9kZShjb250ZXh0LCBzYW1wbGVSYXRlKQogICAgICwgbV9m
aXJzdFJlbmRlcih0cnVlKQogICAgICwgbV92aXJ0dWFsUmVhZEluZGV4KDApCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL09zY2lsbGF0b3JOb2RlLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL09zY2lsbGF0b3JOb2RlLmgKaW5kZXggNDJmZjBj
MTkyNGI2MmVkMGNmMDAxN2ZmYjk3ZGU2MDMyNmM3MzkyMi4uMDg5NWJjZTNkZGRmNTlkNjljNWM2
YWY5Y2ZkMmI5Y2ZiZTllYjRhOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJhdWRpby9Pc2NpbGxhdG9yTm9kZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
YXVkaW8vT3NjaWxsYXRvck5vZGUuaApAQCAtNDUsNyArNDUsNyBAQCBwdWJsaWM6CiAgICAgICAg
IEN1c3RvbQogICAgIH07CiAKLSAgICBzdGF0aWMgUmVmPE9zY2lsbGF0b3JOb2RlPiBjcmVhdGUo
QXVkaW9Db250ZXh0JiwgZmxvYXQgc2FtcGxlUmF0ZSk7CisgICAgc3RhdGljIFJlZjxPc2NpbGxh
dG9yTm9kZT4gY3JlYXRlKEF1ZGlvQ29udGV4dEJhc2UmLCBmbG9hdCBzYW1wbGVSYXRlKTsKIAog
ICAgIHZpcnR1YWwgfk9zY2lsbGF0b3JOb2RlKCk7CiAKQEAgLTYwLDcgKzYwLDcgQEAgcHVibGlj
OgogICAgIHZvaWQgc2V0UGVyaW9kaWNXYXZlKFBlcmlvZGljV2F2ZSopOwogCiBwcml2YXRlOgot
ICAgIE9zY2lsbGF0b3JOb2RlKEF1ZGlvQ29udGV4dCYsIGZsb2F0IHNhbXBsZVJhdGUpOworICAg
IE9zY2lsbGF0b3JOb2RlKEF1ZGlvQ29udGV4dEJhc2UmLCBmbG9hdCBzYW1wbGVSYXRlKTsKIAog
ICAgIHZvaWQgcHJvY2VzcyhzaXplX3QgZnJhbWVzVG9Qcm9jZXNzKSBmaW5hbDsKICAgICB2b2lk
IHJlc2V0KCkgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1
ZGlvL1Bhbm5lck5vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9QYW5u
ZXJOb2RlLmNwcAppbmRleCBlYzgwZTY5ZDJhYjg3MTAyOGJjNmE2ZTQ0N2VhYmQxOWU5ZmNjNzIx
Li5hZTQyZjExNGJiYzM5MDRkYjdjMmNjMTU2ZDBiMmNiZTQyMDA2OThlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1Bhbm5lck5vZGUuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vUGFubmVyTm9kZS5jcHAKQEAgLTQ4LDggKzQ4LDEz
IEBAIHN0YXRpYyB2b2lkIGZpeE5BTnMoZG91YmxlICZ4KQogICAgICAgICB4ID0gMC4wOwogfQog
Ci1QYW5uZXJOb2RlOjpQYW5uZXJOb2RlKEF1ZGlvQ29udGV4dCYgY29udGV4dCwgZmxvYXQgc2Ft
cGxlUmF0ZSkKK1Bhbm5lck5vZGVCYXNlOjpQYW5uZXJOb2RlQmFzZShBdWRpb0NvbnRleHRCYXNl
JiBjb250ZXh0LCBmbG9hdCBzYW1wbGVSYXRlKQogICAgIDogQXVkaW9Ob2RlKGNvbnRleHQsIHNh
bXBsZVJhdGUpCit7Cit9CisKK1Bhbm5lck5vZGU6OlBhbm5lck5vZGUoQXVkaW9Db250ZXh0JiBj
b250ZXh0LCBmbG9hdCBzYW1wbGVSYXRlKQorICAgIDogUGFubmVyTm9kZUJhc2UoY29udGV4dCwg
c2FtcGxlUmF0ZSkKICAgICAsIG1fcGFubmluZ01vZGVsKFBhbm5pbmdNb2RlbFR5cGU6OkhSVEYp
CiAgICAgLCBtX2xhc3RHYWluKC0xLjApCiAgICAgLCBtX3Bvc2l0aW9uWChBdWRpb1BhcmFtOjpj
cmVhdGUoY29udGV4dCwgInBvc2l0aW9uWCJfcywgMCwgLUZMVF9NQVgsIEZMVF9NQVgpKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9QYW5uZXJOb2RlLmggYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1Bhbm5lck5vZGUuaAppbmRleCA4NDgwYzIz
MzI4MDBkY2Y0ODg1MTU4ZDY5NDU5MmRkOWVlNTI5MmI2Li4yOWI2NDhkMDYwNzYyOTM4N2ExYjBj
MDcwMzdjNTBjMjJjZjAxMDU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmF1ZGlvL1Bhbm5lck5vZGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlv
L1Bhbm5lck5vZGUuaApAQCAtMjYsNiArMjYsNyBAQAogCiAjaWYgRU5BQkxFKFdFQl9BVURJTykK
IAorI2luY2x1ZGUgIkF1ZGlvQ29udGV4dC5oIgogI2luY2x1ZGUgIkF1ZGlvTGlzdGVuZXIuaCIK
ICNpbmNsdWRlICJBdWRpb05vZGUuaCIKICNpbmNsdWRlICJBdWRpb1BhcmFtLmgiCkBAIC00MSw2
ICs0MiwxNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEhSVEZEYXRhYmFzZUxvYWRl
cjsKIAorY2xhc3MgUGFubmVyTm9kZUJhc2UgOiBwdWJsaWMgQXVkaW9Ob2RlIHsKK3B1YmxpYzoK
KyAgICB2aXJ0dWFsIH5QYW5uZXJOb2RlQmFzZSgpID0gZGVmYXVsdDsKKworICAgIHZpcnR1YWwg
ZmxvYXQgZG9wcGxlclJhdGUoKSA9IDA7CisKK3Byb3RlY3RlZDoKKyAgICBQYW5uZXJOb2RlQmFz
ZShBdWRpb0NvbnRleHRCYXNlJiwgZmxvYXQgc2FtcGxlUmF0ZSk7Cit9OworCiAvLyBQYW5uZXJO
b2RlIGlzIGFuIEF1ZGlvTm9kZSB3aXRoIG9uZSBpbnB1dCBhbmQgb25lIG91dHB1dC4KIC8vIEl0
IHBvc2l0aW9ucyBhIHNvdW5kIGluIDNEIHNwYWNlLCB3aXRoIHRoZSBleGFjdCBlZmZlY3QgZGVw
ZW5kZW50IG9uIHRoZSBwYW5uaW5nIG1vZGVsLgogLy8gSXQgaGFzIGEgcG9zaXRpb24gYW5kIGFu
IG9yaWVudGF0aW9uIGluIDNEIHNwYWNlIHdoaWNoIGlzIHJlbGF0aXZlIHRvIHRoZSBwb3NpdGlv
biBhbmQgb3JpZW50YXRpb24gb2YgdGhlIGNvbnRleHQncyBBdWRpb0xpc3RlbmVyLgpAQCAtNDgs
NyArNTksNyBAQCBjbGFzcyBIUlRGRGF0YWJhc2VMb2FkZXI7CiAvLyBBIGNvbmUgZWZmZWN0IHdp
bGwgYXR0ZW51YXRlIHRoZSBnYWluIGFzIHRoZSBvcmllbnRhdGlvbiBtb3ZlcyBhd2F5IGZyb20g
dGhlIGxpc3RlbmVyLgogLy8gQWxsIG9mIHRoZXNlIGVmZmVjdHMgZm9sbG93IHRoZSBPcGVuQUwg
c3BlY2lmaWNhdGlvbiB2ZXJ5IGNsb3NlbHkuCiAKLWNsYXNzIFBhbm5lck5vZGUgZmluYWwgOiBw
dWJsaWMgQXVkaW9Ob2RlIHsKK2NsYXNzIFBhbm5lck5vZGUgZmluYWwgOiBwdWJsaWMgUGFubmVy
Tm9kZUJhc2UgewogICAgIFdURl9NQUtFX0lTT19BTExPQ0FURUQoUGFubmVyTm9kZSk7CiBwdWJs
aWM6CiAgICAgc3RhdGljIFJlZjxQYW5uZXJOb2RlPiBjcmVhdGUoQXVkaW9Db250ZXh0JiBjb250
ZXh0LCBmbG9hdCBzYW1wbGVSYXRlKQpAQCAtNTgsNiArNjksOSBAQCBwdWJsaWM6CiAKICAgICB2
aXJ0dWFsIH5QYW5uZXJOb2RlKCk7CiAKKyAgICBBdWRpb0NvbnRleHQmIGNvbnRleHQoKSB7IHJl
dHVybiBkb3duY2FzdDxBdWRpb0NvbnRleHQ+KEF1ZGlvTm9kZTo6Y29udGV4dCgpKTsgfQorICAg
IGNvbnN0IEF1ZGlvQ29udGV4dCYgY29udGV4dCgpIGNvbnN0IHsgcmV0dXJuIGRvd25jYXN0PEF1
ZGlvQ29udGV4dD4oQXVkaW9Ob2RlOjpjb250ZXh0KCkpOyB9CisKICAgICAvLyBBdWRpb05vZGUK
ICAgICB2b2lkIHByb2Nlc3Moc2l6ZV90IGZyYW1lc1RvUHJvY2Vzcykgb3ZlcnJpZGU7CiAgICAg
dm9pZCBwdWxsSW5wdXRzKHNpemVfdCBmcmFtZXNUb1Byb2Nlc3MpIG92ZXJyaWRlOwpAQCAtMTEx
LDcgKzEyNSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldENvbmVPdXRlckdhaW4oZG91YmxlIGFu
Z2xlKSB7IG1fY29uZUVmZmVjdC5zZXRPdXRlckdhaW4oYW5nbGUpOyB9CiAKICAgICB2b2lkIGdl
dEF6aW11dGhFbGV2YXRpb24oZG91YmxlKiBvdXRBemltdXRoLCBkb3VibGUqIG91dEVsZXZhdGlv
bik7Ci0gICAgZmxvYXQgZG9wcGxlclJhdGUoKTsKKyAgICBmbG9hdCBkb3BwbGVyUmF0ZSgpIGZp
bmFsOwogCiAgICAgLy8gQWNjZXNzb3JzIGZvciBkeW5hbWljYWxseSBjYWxjdWxhdGVkIGdhaW4g
dmFsdWVzLgogICAgIEF1ZGlvUGFyYW0qIGRpc3RhbmNlR2FpbigpIHsgcmV0dXJuIG1fZGlzdGFu
Y2VHYWluLmdldCgpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1
ZGlvL1Bhbm5lck5vZGUuaWRsIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9QYW5u
ZXJOb2RlLmlkbAppbmRleCAwMzI5ODM3ZDJmNWEyNWM3ZjZhNmYwZDA0ZTMxODdhMWY2YWQ4YjQx
Li43YmI5MmM0ZjhmYjQ1ZGIyOTNmZmUzYTE3YTk3MTAzYzBiOTJlNmUyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1Bhbm5lck5vZGUuaWRsCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vUGFubmVyTm9kZS5pZGwKQEAgLTIyLDI3ICsyMiwx
MCBAQAogICogU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCiAgKi8KIAotWwotICAgIENvbmRpdGlvbmFsPVdFQl9BVURJTywKLSAgICBJ
bXBsZW1lbnRlZEFzPVBhbm5pbmdNb2RlbFR5cGUKLV0gZW51bSBQYW5uaW5nTW9kZWxUeXBlIHsK
LSAgICAiZXF1YWxwb3dlciIsCi0gICAgIkhSVEYiCi19OwotCi1bCi0gICAgQ29uZGl0aW9uYWw9
V0VCX0FVRElPLAotICAgIEltcGxlbWVudGVkQXM9RGlzdGFuY2VNb2RlbFR5cGUKLV0gZW51bSBE
aXN0YW5jZU1vZGVsVHlwZSB7Ci0gICAgImxpbmVhciIsCi0gICAgImludmVyc2UiLAotICAgICJl
eHBvbmVudGlhbCIKLX07Ci0KIFsKICAgICBDb25kaXRpb25hbD1XRUJfQVVESU8sCiAgICAgSlNH
ZW5lcmF0ZVRvSlNPYmplY3QsCi0gICAgSW50ZXJmYWNlTmFtZT13ZWJraXRBdWRpb1Bhbm5lck5v
ZGUsCisgICAgRW5hYmxlZEJ5U2V0dGluZz1Nb2Rlcm5VbnByZWZpeGVkV2ViQXVkaW8sCiBdIGlu
dGVyZmFjZSBQYW5uZXJOb2RlIDogQXVkaW9Ob2RlIHsKICAgICAvLyBEZWZhdWx0IG1vZGVsIGZv
ciBzdGVyZW8gaXMgSFJURiAKICAgICBhdHRyaWJ1dGUgUGFubmluZ01vZGVsVHlwZSBwYW5uaW5n
TW9kZWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1Bhbm5p
bmdNb2RlbFR5cGUuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vUGFubmluZ01v
ZGVsVHlwZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLmFiMGIyMjcxMmExNzBiMWZlZmFlMTZlNmVmM2RmOTRkMjM4
YTFhOWYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlv
L1Bhbm5pbmdNb2RlbFR5cGUuaApAQCAtMCwwICsxLDI3IEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDIwLCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9T
RSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRT
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAq
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTgorICogQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTCisgKiBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21h
IG9uY2UKKworI2luY2x1ZGUgIlBhbm5lci5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJhdWRpby9QYW5uaW5nTW9kZWxUeXBlLmlkbCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViYXVkaW8vUGFubmluZ01vZGVsVHlwZS5pZGwKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYmY3ZGY4ZjU1
NDJmYWE0NTI2MDdiZTFmMDk5ZTk5NzRiZGFjMzdlNgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vUGFubmluZ01vZGVsVHlwZS5pZGwKQEAgLTAsMCAr
MSwzMCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCwgR29vZ2xlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5EIEFOWQorICog
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OCisgKiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMKKyAqIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKK1sKKyAgICBDb25kaXRpb25hbD1XRUJfQVVESU8sCitdIGVu
dW0gUGFubmluZ01vZGVsVHlwZSB7CisgICAgImVxdWFscG93ZXIiLAorICAgICJIUlRGIgorfTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vU2NyaXB0UHJvY2Vz
c29yTm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1NjcmlwdFByb2Nl
c3Nvck5vZGUuY3BwCmluZGV4IDkxYzc1MzdlMTVlOGI1NTI0MTFlYTlmNjEzMDFlYzFjMzI1YWQy
NTYuLjc2MTBiMTUwMjQ4NzhiNjA2ZTVjZGQ4YzRmNWFiMGZiMTFkYzAzNDYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vU2NyaXB0UHJvY2Vzc29yTm9kZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9TY3JpcHRQcm9jZXNzb3JOb2Rl
LmNwcApAQCAtNDQsMTIgKzQ0LDEyIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogV1RGX01BS0Vf
SVNPX0FMTE9DQVRFRF9JTVBMKFNjcmlwdFByb2Nlc3Nvck5vZGUpOwogCi1SZWY8U2NyaXB0UHJv
Y2Vzc29yTm9kZT4gU2NyaXB0UHJvY2Vzc29yTm9kZTo6Y3JlYXRlKEF1ZGlvQ29udGV4dCYgY29u
dGV4dCwgZmxvYXQgc2FtcGxlUmF0ZSwgc2l6ZV90IGJ1ZmZlclNpemUsIHVuc2lnbmVkIG51bWJl
ck9mSW5wdXRDaGFubmVscywgdW5zaWduZWQgbnVtYmVyT2ZPdXRwdXRDaGFubmVscykKK1JlZjxT
Y3JpcHRQcm9jZXNzb3JOb2RlPiBTY3JpcHRQcm9jZXNzb3JOb2RlOjpjcmVhdGUoQXVkaW9Db250
ZXh0QmFzZSYgY29udGV4dCwgZmxvYXQgc2FtcGxlUmF0ZSwgc2l6ZV90IGJ1ZmZlclNpemUsIHVu
c2lnbmVkIG51bWJlck9mSW5wdXRDaGFubmVscywgdW5zaWduZWQgbnVtYmVyT2ZPdXRwdXRDaGFu
bmVscykKIHsKICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTY3JpcHRQcm9jZXNzb3JOb2RlKGNv
bnRleHQsIHNhbXBsZVJhdGUsIGJ1ZmZlclNpemUsIG51bWJlck9mSW5wdXRDaGFubmVscywgbnVt
YmVyT2ZPdXRwdXRDaGFubmVscykpOwogfQogCi1TY3JpcHRQcm9jZXNzb3JOb2RlOjpTY3JpcHRQ
cm9jZXNzb3JOb2RlKEF1ZGlvQ29udGV4dCYgY29udGV4dCwgZmxvYXQgc2FtcGxlUmF0ZSwgc2l6
ZV90IGJ1ZmZlclNpemUsIHVuc2lnbmVkIG51bWJlck9mSW5wdXRDaGFubmVscywgdW5zaWduZWQg
bnVtYmVyT2ZPdXRwdXRDaGFubmVscykKK1NjcmlwdFByb2Nlc3Nvck5vZGU6OlNjcmlwdFByb2Nl
c3Nvck5vZGUoQXVkaW9Db250ZXh0QmFzZSYgY29udGV4dCwgZmxvYXQgc2FtcGxlUmF0ZSwgc2l6
ZV90IGJ1ZmZlclNpemUsIHVuc2lnbmVkIG51bWJlck9mSW5wdXRDaGFubmVscywgdW5zaWduZWQg
bnVtYmVyT2ZPdXRwdXRDaGFubmVscykKICAgICA6IEF1ZGlvTm9kZShjb250ZXh0LCBzYW1wbGVS
YXRlKQogICAgICwgQWN0aXZlRE9NT2JqZWN0KGNvbnRleHQuc2NyaXB0RXhlY3V0aW9uQ29udGV4
dCgpKQogICAgICwgbV9kb3VibGVCdWZmZXJJbmRleCgwKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJhdWRpby9TY3JpcHRQcm9jZXNzb3JOb2RlLmggYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1NjcmlwdFByb2Nlc3Nvck5vZGUuaAppbmRleCA1YTRlN2Nl
NDc1MjJlZjI4ZWJmMmZkMTc5NmFmNTg0YmE3NWI0MTMzLi40YzE0YTA3NTdkZjVjNWU2MmRmZTk2
YTg4ZWI0MmI0N2YxNWU3MjU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmF1ZGlvL1NjcmlwdFByb2Nlc3Nvck5vZGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmF1ZGlvL1NjcmlwdFByb2Nlc3Nvck5vZGUuaApAQCAtNTIsNyArNTIsNyBAQCBwdWJsaWM6
CiAgICAgLy8gVGhpcyB2YWx1ZSBjb250cm9scyBob3cgZnJlcXVlbnRseSB0aGUgb25hdWRpb3By
b2Nlc3MgZXZlbnQgaGFuZGxlciBpcyBjYWxsZWQgYW5kIGhvdyBtYW55IHNhbXBsZS1mcmFtZXMg
bmVlZCB0byBiZSBwcm9jZXNzZWQgZWFjaCBjYWxsLgogICAgIC8vIExvd2VyIG51bWJlcnMgZm9y
IGJ1ZmZlclNpemUgd2lsbCByZXN1bHQgaW4gYSBsb3dlciAoYmV0dGVyKSBsYXRlbmN5LiBIaWdo
ZXIgbnVtYmVycyB3aWxsIGJlIG5lY2Vzc2FyeSB0byBhdm9pZCBhdWRpbyBicmVha3VwIGFuZCBn
bGl0Y2hlcy4KICAgICAvLyBUaGUgdmFsdWUgY2hvc2VuIG11c3QgY2FyZWZ1bGx5IGJhbGFuY2Ug
YmV0d2VlbiBsYXRlbmN5IGFuZCBhdWRpbyBxdWFsaXR5LgotICAgIHN0YXRpYyBSZWY8U2NyaXB0
UHJvY2Vzc29yTm9kZT4gY3JlYXRlKEF1ZGlvQ29udGV4dCYsIGZsb2F0IHNhbXBsZVJhdGUsIHNp
emVfdCBidWZmZXJTaXplLCB1bnNpZ25lZCBudW1iZXJPZklucHV0Q2hhbm5lbHMsIHVuc2lnbmVk
IG51bWJlck9mT3V0cHV0Q2hhbm5lbHMpOworICAgIHN0YXRpYyBSZWY8U2NyaXB0UHJvY2Vzc29y
Tm9kZT4gY3JlYXRlKEF1ZGlvQ29udGV4dEJhc2UmLCBmbG9hdCBzYW1wbGVSYXRlLCBzaXplX3Qg
YnVmZmVyU2l6ZSwgdW5zaWduZWQgbnVtYmVyT2ZJbnB1dENoYW5uZWxzLCB1bnNpZ25lZCBudW1i
ZXJPZk91dHB1dENoYW5uZWxzKTsKIAogICAgIHZpcnR1YWwgflNjcmlwdFByb2Nlc3Nvck5vZGUo
KTsKIApAQCAtNzEsNyArNzEsNyBAQCBwcml2YXRlOgogICAgIGRvdWJsZSB0YWlsVGltZSgpIGNv
bnN0IG92ZXJyaWRlOwogICAgIGRvdWJsZSBsYXRlbmN5VGltZSgpIGNvbnN0IG92ZXJyaWRlOwog
Ci0gICAgU2NyaXB0UHJvY2Vzc29yTm9kZShBdWRpb0NvbnRleHQmLCBmbG9hdCBzYW1wbGVSYXRl
LCBzaXplX3QgYnVmZmVyU2l6ZSwgdW5zaWduZWQgbnVtYmVyT2ZJbnB1dENoYW5uZWxzLCB1bnNp
Z25lZCBudW1iZXJPZk91dHB1dENoYW5uZWxzKTsKKyAgICBTY3JpcHRQcm9jZXNzb3JOb2RlKEF1
ZGlvQ29udGV4dEJhc2UmLCBmbG9hdCBzYW1wbGVSYXRlLCBzaXplX3QgYnVmZmVyU2l6ZSwgdW5z
aWduZWQgbnVtYmVyT2ZJbnB1dENoYW5uZWxzLCB1bnNpZ25lZCBudW1iZXJPZk91dHB1dENoYW5u
ZWxzKTsKIAogICAgIHZvaWQgZmlyZVByb2Nlc3NFdmVudCgpOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1dhdmVTaGFwZXJOb2RlLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vV2F2ZVNoYXBlck5vZGUuY3BwCmluZGV4IDZlN2U4ZGQx
YzljMTlmYTNjODVlM2Q5ZDg1NWFiOWY0NTc4NWI3OTAuLmFlNGFmOWYyMzJmNzUxMzZjMDgxYWZl
MTRiZDdhNzk1NmMwNTI5NmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
YXVkaW8vV2F2ZVNoYXBlck5vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
YXVkaW8vV2F2ZVNoYXBlck5vZGUuY3BwCkBAIC0zNSw3ICszNSw3IEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAogV1RGX01BS0VfSVNPX0FMTE9DQVRFRF9JTVBMKFdhdmVTaGFwZXJOb2RlKTsKIAot
V2F2ZVNoYXBlck5vZGU6OldhdmVTaGFwZXJOb2RlKEF1ZGlvQ29udGV4dCYgY29udGV4dCkKK1dh
dmVTaGFwZXJOb2RlOjpXYXZlU2hhcGVyTm9kZShBdWRpb0NvbnRleHRCYXNlJiBjb250ZXh0KQog
ICAgIDogQXVkaW9CYXNpY1Byb2Nlc3Nvck5vZGUoY29udGV4dCwgY29udGV4dC5zYW1wbGVSYXRl
KCkpCiB7CiAgICAgc2V0Tm9kZVR5cGUoTm9kZVR5cGVXYXZlU2hhcGVyKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vV2F2ZVNoYXBlck5vZGUuaCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vV2F2ZVNoYXBlck5vZGUuaAppbmRleCBmNDllMzQ5
YmMzZGM4YzI5YjRhNmU2M2RmZGJmOTg2NGI5NmY4NjgwLi41ZjQ5MzI4YjIyZDBlYmU1ZDZlZjZk
MDNjNmFlNmQ2ZmZjMWExMTBlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmF1ZGlvL1dhdmVTaGFwZXJOb2RlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJh
dWRpby9XYXZlU2hhcGVyTm9kZS5oCkBAIC0zMyw3ICszMyw3IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIGNsYXNzIFdhdmVTaGFwZXJOb2RlIGZpbmFsIDogcHVibGljIEF1ZGlvQmFzaWNQcm9jZXNz
b3JOb2RlIHsKICAgICBXVEZfTUFLRV9JU09fQUxMT0NBVEVEKFdhdmVTaGFwZXJOb2RlKTsKIHB1
YmxpYzoKLSAgICBzdGF0aWMgUmVmPFdhdmVTaGFwZXJOb2RlPiBjcmVhdGUoQXVkaW9Db250ZXh0
JiBjb250ZXh0KQorICAgIHN0YXRpYyBSZWY8V2F2ZVNoYXBlck5vZGU+IGNyZWF0ZShBdWRpb0Nv
bnRleHRCYXNlJiBjb250ZXh0KQogICAgIHsKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcg
V2F2ZVNoYXBlck5vZGUoY29udGV4dCkpOwogICAgIH0KQEAgLTQ5LDcgKzQ5LDcgQEAgcHVibGlj
OgogICAgIGRvdWJsZSBsYXRlbmN5KCkgY29uc3QgeyByZXR1cm4gbGF0ZW5jeVRpbWUoKTsgfQog
CiBwcml2YXRlOiAgICAKLSAgICBleHBsaWNpdCBXYXZlU2hhcGVyTm9kZShBdWRpb0NvbnRleHQm
KTsgICAgCisgICAgZXhwbGljaXQgV2F2ZVNoYXBlck5vZGUoQXVkaW9Db250ZXh0QmFzZSYpOwog
CiAgICAgV2F2ZVNoYXBlclByb2Nlc3Nvciogd2F2ZVNoYXBlclByb2Nlc3NvcigpIHsgcmV0dXJu
IHN0YXRpY19jYXN0PFdhdmVTaGFwZXJQcm9jZXNzb3IqPihwcm9jZXNzb3IoKSk7IH0KIH07CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1dlYktpdEF1ZGlvQ29u
dGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1dlYktpdEF1ZGlvQ29u
dGV4dC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uZjQwMjA4MTlhODkzN2ZjNjNkNTNkNTVmM2VhN2Q3OWI5NDky
MTEwMgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8v
V2ViS2l0QXVkaW9Db250ZXh0LmNwcApAQCAtMCwwICsxLDE0MDIgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdo
dCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVS
UE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMK
KyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTgorICogQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTCisgKiBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5j
bHVkZSAiY29uZmlnLmgiCisKKyNpZiBFTkFCTEUoV0VCX0FVRElPKQorCisjaW5jbHVkZSAiV2Vi
S2l0QXVkaW9Db250ZXh0LmgiCisKKyNpbmNsdWRlICJBbmFseXNlck5vZGUuaCIKKyNpbmNsdWRl
ICJBc3luY0F1ZGlvRGVjb2Rlci5oIgorI2luY2x1ZGUgIkF1ZGlvQnVmZmVyLmgiCisjaW5jbHVk
ZSAiQXVkaW9CdWZmZXJDYWxsYmFjay5oIgorI2luY2x1ZGUgIkF1ZGlvQnVmZmVyU291cmNlTm9k
ZS5oIgorI2luY2x1ZGUgIkF1ZGlvTGlzdGVuZXIuaCIKKyNpbmNsdWRlICJBdWRpb05vZGVJbnB1
dC5oIgorI2luY2x1ZGUgIkF1ZGlvTm9kZU91dHB1dC5oIgorI2luY2x1ZGUgIkF1ZGlvU2Vzc2lv
bi5oIgorI2luY2x1ZGUgIkJpcXVhZEZpbHRlck5vZGUuaCIKKyNpbmNsdWRlICJDaGFubmVsTWVy
Z2VyTm9kZS5oIgorI2luY2x1ZGUgIkNoYW5uZWxTcGxpdHRlck5vZGUuaCIKKyNpbmNsdWRlICJD
b252b2x2ZXJOb2RlLmgiCisjaW5jbHVkZSAiRGVmYXVsdEF1ZGlvRGVzdGluYXRpb25Ob2RlLmgi
CisjaW5jbHVkZSAiRGVsYXlOb2RlLmgiCisjaW5jbHVkZSAiRG9jdW1lbnQuaCIKKyNpbmNsdWRl
ICJEeW5hbWljc0NvbXByZXNzb3JOb2RlLmgiCisjaW5jbHVkZSAiRXZlbnROYW1lcy5oIgorI2lu
Y2x1ZGUgIkZGVEZyYW1lLmgiCisjaW5jbHVkZSAiRnJhbWUuaCIKKyNpbmNsdWRlICJGcmFtZUxv
YWRlci5oIgorI2luY2x1ZGUgIkdhaW5Ob2RlLmgiCisjaW5jbHVkZSAiR2VuZXJpY0V2ZW50UXVl
dWUuaCIKKyNpbmNsdWRlICJIUlRGRGF0YWJhc2VMb2FkZXIuaCIKKyNpbmNsdWRlICJIUlRGUGFu
bmVyLmgiCisjaW5jbHVkZSAiSlNET01Qcm9taXNlRGVmZXJyZWQuaCIKKyNpbmNsdWRlICJMb2dn
aW5nLmgiCisjaW5jbHVkZSAiTmV0d29ya2luZ0NvbnRleHQuaCIKKyNpbmNsdWRlICJPZmZsaW5l
QXVkaW9Db21wbGV0aW9uRXZlbnQuaCIKKyNpbmNsdWRlICJPZmZsaW5lQXVkaW9EZXN0aW5hdGlv
bk5vZGUuaCIKKyNpbmNsdWRlICJPc2NpbGxhdG9yTm9kZS5oIgorI2luY2x1ZGUgIlBhZ2UuaCIK
KyNpbmNsdWRlICJQZXJpb2RpY1dhdmUuaCIKKyNpbmNsdWRlICJQbGF0Zm9ybU1lZGlhU2Vzc2lv
bk1hbmFnZXIuaCIKKyNpbmNsdWRlICJTY3JpcHRDb250cm9sbGVyLmgiCisjaW5jbHVkZSAiU2Ny
aXB0UHJvY2Vzc29yTm9kZS5oIgorI2luY2x1ZGUgIldhdmVTaGFwZXJOb2RlLmgiCisjaW5jbHVk
ZSAiV2ViS2l0QXVkaW9QYW5uZXJOb2RlLmgiCisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvU2Ny
aXB0Q2FsbFN0YWNrLmg+CisKKyNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQorI2luY2x1ZGUgIk1l
ZGlhU3RyZWFtLmgiCisjaW5jbHVkZSAiTWVkaWFTdHJlYW1BdWRpb0Rlc3RpbmF0aW9uTm9kZS5o
IgorI2luY2x1ZGUgIk1lZGlhU3RyZWFtQXVkaW9Tb3VyY2UuaCIKKyNpbmNsdWRlICJNZWRpYVN0
cmVhbUF1ZGlvU291cmNlTm9kZS5oIgorI2VuZGlmCisKKyNpZiBFTkFCTEUoVklERU8pCisjaW5j
bHVkZSAiSFRNTE1lZGlhRWxlbWVudC5oIgorI2luY2x1ZGUgIk1lZGlhRWxlbWVudEF1ZGlvU291
cmNlTm9kZS5oIgorI2VuZGlmCisKKyNpZiBERUJVR19BVURJT05PREVfUkVGRVJFTkNFUworI2lu
Y2x1ZGUgPHN0ZGlvLmg+CisjZW5kaWYKKworI2lmIFVTRShHU1RSRUFNRVIpCisjaW5jbHVkZSAi
R1N0cmVhbWVyQ29tbW9uLmgiCisjZW5kaWYKKworI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCisj
aW5jbHVkZSAiU2NyaXB0Q29udHJvbGxlci5oIgorI2luY2x1ZGUgIlNldHRpbmdzLmgiCisjZW5k
aWYKKworI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0FycmF5QnVmZmVyLmg+CisjaW5jbHVkZSA8
d3RmL0F0b21pY3MuaD4KKyNpbmNsdWRlIDx3dGYvSXNvTWFsbG9jSW5saW5lcy5oPgorI2luY2x1
ZGUgPHd0Zi9NYWluVGhyZWFkLmg+CisjaW5jbHVkZSA8d3RmL1JlZi5oPgorI2luY2x1ZGUgPHd0
Zi9SZWZDb3VudGVkLmg+CisjaW5jbHVkZSA8d3RmL1Njb3BlLmg+CisjaW5jbHVkZSA8d3RmL3Rl
eHQvV1RGU3RyaW5nLmg+CisKK2NvbnN0IHVuc2lnbmVkIE1heFBlcmlvZGljV2F2ZUxlbmd0aCA9
IDQwOTY7CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworV1RGX01BS0VfSVNPX0FMTE9DQVRFRF9J
TVBMKFdlYktpdEF1ZGlvQ29udGV4dCk7CisKKyNkZWZpbmUgUkVMRUFTRV9MT0dfSUZfQUxMT1dF
RChmbXQsIC4uLikgUkVMRUFTRV9MT0dfSUYoZG9jdW1lbnQoKSAmJiBkb2N1bWVudCgpLT5wYWdl
KCkgJiYgZG9jdW1lbnQoKS0+cGFnZSgpLT5pc0Fsd2F5c09uTG9nZ2luZ0FsbG93ZWQoKSwgTWVk
aWEsICIlcCAtIFdlYktpdEF1ZGlvQ29udGV4dDo6IiBmbXQsIHRoaXMsICMjX19WQV9BUkdTX18p
CisKK2Jvb2wgV2ViS2l0QXVkaW9Db250ZXh0Ojppc1NhbXBsZVJhdGVSYW5nZUdvb2QoZmxvYXQg
c2FtcGxlUmF0ZSkKK3sKKyAgICAvLyBGSVhNRTogSXQgd291bGQgYmUgbmljZSBpZiB0aGUgbWlu
aW11bSBzYW1wbGUtcmF0ZSBjb3VsZCBiZSBsZXNzIHRoYW4gNDQuMUtIeiwKKyAgICAvLyBidXQg
dGhhdCB3aWxsIHJlcXVpcmUgc29tZSBmaXhlcyBpbiBIUlRGUGFubmVyOjpmZnRTaXplRm9yU2Ft
cGxlUmF0ZSgpLCBhbmQgc29tZSB0ZXN0aW5nIHRoZXJlLgorICAgIHJldHVybiBzYW1wbGVSYXRl
ID49IDQ0MTAwICYmIHNhbXBsZVJhdGUgPD0gOTYwMDA7Cit9CisKKyNpZiBPUyhXSU5ET1dTKQor
Ly8gRG9uJ3QgYWxsb3cgbW9yZSB0aGFuIHRoaXMgbnVtYmVyIG9mIHNpbXVsdGFuZW91cyBBdWRp
b0NvbnRleHRzIHRhbGtpbmcgdG8gaGFyZHdhcmUuCitjb25zdGV4cHIgdW5zaWduZWQgbWF4SGFy
ZHdhcmVDb250ZXh0cyA9IDQ7CisjZW5kaWYKK3Vuc2lnbmVkIFdlYktpdEF1ZGlvQ29udGV4dDo6
c19oYXJkd2FyZUNvbnRleHRDb3VudCA9IDA7CisKK0V4Y2VwdGlvbk9yPFJlZjxXZWJLaXRBdWRp
b0NvbnRleHQ+PiBXZWJLaXRBdWRpb0NvbnRleHQ6OmNyZWF0ZShEb2N1bWVudCYgZG9jdW1lbnQp
Cit7CisgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKyNpZiBPUyhXSU5ET1dTKQorICAgIGlm
IChzX2hhcmR3YXJlQ29udGV4dENvdW50ID49IG1heEhhcmR3YXJlQ29udGV4dHMpCisgICAgICAg
IHJldHVybiBFeGNlcHRpb24geyBRdW90YUV4Y2VlZGVkRXJyb3IgfTsKKyNlbmRpZgorCisgICAg
YXV0byBhdWRpb0NvbnRleHQgPSBhZG9wdFJlZigqbmV3IFdlYktpdEF1ZGlvQ29udGV4dChkb2N1
bWVudCkpOworICAgIGF1ZGlvQ29udGV4dC0+c3VzcGVuZElmTmVlZGVkKCk7CisgICAgcmV0dXJu
IGF1ZGlvQ29udGV4dDsKK30KKworLy8gQ29uc3RydWN0b3IgZm9yIHJlbmRlcmluZyB0byB0aGUg
YXVkaW8gaGFyZHdhcmUuCitXZWJLaXRBdWRpb0NvbnRleHQ6OldlYktpdEF1ZGlvQ29udGV4dChE
b2N1bWVudCYgZG9jdW1lbnQpCisgICAgOiBBdWRpb0NvbnRleHRCYXNlKGRvY3VtZW50KQorI2lm
ICFSRUxFQVNFX0xPR19ESVNBQkxFRAorICAgICwgbV9sb2dnZXIoZG9jdW1lbnQubG9nZ2VyKCkp
CisgICAgLCBtX2xvZ0lkZW50aWZpZXIodW5pcXVlTG9nSWRlbnRpZmllcigpKQorI2VuZGlmCisg
ICAgLCBtX21lZGlhU2Vzc2lvbihQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6Y3JlYXRlKFBsYXRmb3Jt
TWVkaWFTZXNzaW9uTWFuYWdlcjo6c2hhcmVkTWFuYWdlcigpLCAqdGhpcykpCisgICAgLCBtX2V2
ZW50UXVldWUoTWFpblRocmVhZEdlbmVyaWNFdmVudFF1ZXVlOjpjcmVhdGUoKnRoaXMpKQorewor
ICAgIC8vIEFjY29yZGluZyB0byBzcGVjIEF1ZGlvQ29udGV4dCBtdXN0IGRpZSBvbmx5IGFmdGVy
IHBhZ2UgbmF2aWdhdGUuCisgICAgLy8gTGV0cyBtYXJrIGl0IGFzIEFjdGl2ZURPTU9iamVjdCB3
aXRoIHBlbmRpbmcgYWN0aXZpdHkgYW5kIHVubWFyayBpdCBpbiBjbGVhciBtZXRob2QuCisgICAg
bWFrZVBlbmRpbmdBY3Rpdml0eSgpOworCisgICAgY29uc3RydWN0Q29tbW9uKCk7CisKKyAgICBt
X2Rlc3RpbmF0aW9uTm9kZSA9IERlZmF1bHRBdWRpb0Rlc3RpbmF0aW9uTm9kZTo6Y3JlYXRlKCp0
aGlzKTsKKworICAgIC8vIEluaXRpYWxpemUgdGhlIGRlc3RpbmF0aW9uIG5vZGUncyBtdXRlZCBz
dGF0ZSB0byBtYXRjaCB0aGUgcGFnZSdzIGN1cnJlbnQgbXV0ZWQgc3RhdGUuCisgICAgcGFnZU11
dGVkU3RhdGVEaWRDaGFuZ2UoKTsKKworICAgIGRvY3VtZW50LmFkZEF1ZGlvUHJvZHVjZXIoKnRo
aXMpOworICAgIGRvY3VtZW50LnJlZ2lzdGVyRm9yVmlzaWJpbGl0eVN0YXRlQ2hhbmdlZENhbGxi
YWNrcygqdGhpcyk7Cit9CisKKy8vIENvbnN0cnVjdG9yIGZvciBvZmZsaW5lIChub24tcmVhbHRp
bWUpIHJlbmRlcmluZy4KK1dlYktpdEF1ZGlvQ29udGV4dDo6V2ViS2l0QXVkaW9Db250ZXh0KERv
Y3VtZW50JiBkb2N1bWVudCwgQXVkaW9CdWZmZXIqIHJlbmRlclRhcmdldCkKKyAgICA6IEF1ZGlv
Q29udGV4dEJhc2UoZG9jdW1lbnQpCisjaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECisgICAgLCBt
X2xvZ2dlcihkb2N1bWVudC5sb2dnZXIoKSkKKyAgICAsIG1fbG9nSWRlbnRpZmllcih1bmlxdWVM
b2dJZGVudGlmaWVyKCkpCisjZW5kaWYKKyAgICAsIG1faXNPZmZsaW5lQ29udGV4dCh0cnVlKQor
ICAgICwgbV9tZWRpYVNlc3Npb24oUGxhdGZvcm1NZWRpYVNlc3Npb246OmNyZWF0ZShQbGF0Zm9y
bU1lZGlhU2Vzc2lvbk1hbmFnZXI6OnNoYXJlZE1hbmFnZXIoKSwgKnRoaXMpKQorICAgICwgbV9l
dmVudFF1ZXVlKE1haW5UaHJlYWRHZW5lcmljRXZlbnRRdWV1ZTo6Y3JlYXRlKCp0aGlzKSkKKyAg
ICAsIG1fcmVuZGVyVGFyZ2V0KHJlbmRlclRhcmdldCkKK3sKKyAgICBjb25zdHJ1Y3RDb21tb24o
KTsKKworICAgIC8vIENyZWF0ZSBhIG5ldyBkZXN0aW5hdGlvbiBmb3Igb2ZmbGluZSByZW5kZXJp
bmcuCisgICAgbV9kZXN0aW5hdGlvbk5vZGUgPSBPZmZsaW5lQXVkaW9EZXN0aW5hdGlvbk5vZGU6
OmNyZWF0ZSgqdGhpcywgbV9yZW5kZXJUYXJnZXQuZ2V0KCkpOworfQorCit2b2lkIFdlYktpdEF1
ZGlvQ29udGV4dDo6Y29uc3RydWN0Q29tbW9uKCkKK3sKKyAgICBGRlRGcmFtZTo6aW5pdGlhbGl6
ZSgpOworCisgICAgbV9saXN0ZW5lciA9IEF1ZGlvTGlzdGVuZXI6OmNyZWF0ZSgpOworCisgICAg
QVNTRVJUKGRvY3VtZW50KCkpOworICAgIGlmIChkb2N1bWVudCgpLT5hdWRpb1BsYXliYWNrUmVx
dWlyZXNVc2VyR2VzdHVyZSgpKQorICAgICAgICBhZGRCZWhhdmlvclJlc3RyaWN0aW9uKFJlcXVp
cmVVc2VyR2VzdHVyZUZvckF1ZGlvU3RhcnRSZXN0cmljdGlvbik7CisgICAgZWxzZQorICAgICAg
ICBtX3Jlc3RyaWN0aW9ucyA9IE5vUmVzdHJpY3Rpb25zOworCisjaWYgUExBVEZPUk0oQ09DT0Ep
CisgICAgYWRkQmVoYXZpb3JSZXN0cmljdGlvbihSZXF1aXJlUGFnZUNvbnNlbnRGb3JBdWRpb1N0
YXJ0UmVzdHJpY3Rpb24pOworI2VuZGlmCit9CisKK1dlYktpdEF1ZGlvQ29udGV4dDo6fldlYktp
dEF1ZGlvQ29udGV4dCgpCit7CisjaWYgREVCVUdfQVVESU9OT0RFX1JFRkVSRU5DRVMKKyAgICBm
cHJpbnRmKHN0ZGVyciwgIiVwOiBXZWJLaXRBdWRpb0NvbnRleHQ6On5XZWJLaXRBdWRpb0NvbnRl
eHQoKVxuIiwgdGhpcyk7CisjZW5kaWYKKyAgICBBU1NFUlQoIW1faXNJbml0aWFsaXplZCk7Cisg
ICAgQVNTRVJUKG1faXNTdG9wU2NoZWR1bGVkKTsKKyAgICBBU1NFUlQobV9ub2Rlc1RvRGVsZXRl
LmlzRW1wdHkoKSk7CisgICAgQVNTRVJUKG1fcmVmZXJlbmNlZE5vZGVzLmlzRW1wdHkoKSk7Cisg
ICAgQVNTRVJUKG1fZmluaXNoZWROb2Rlcy5pc0VtcHR5KCkpOyAvLyBGSVhNRSAoYnVnIDEwNTg3
MCk6IFRoaXMgYXNzZXJ0aW9uIGZhaWxzIG9uIHRlc3RzIHNvbWV0aW1lcy4KKyAgICBBU1NFUlQo
bV9hdXRvbWF0aWNQdWxsTm9kZXMuaXNFbXB0eSgpKTsKKyAgICBpZiAobV9hdXRvbWF0aWNQdWxs
Tm9kZXNOZWVkVXBkYXRpbmcpCisgICAgICAgIG1fcmVuZGVyaW5nQXV0b21hdGljUHVsbE5vZGVz
LnJlc2l6ZShtX2F1dG9tYXRpY1B1bGxOb2Rlcy5zaXplKCkpOworICAgIEFTU0VSVChtX3JlbmRl
cmluZ0F1dG9tYXRpY1B1bGxOb2Rlcy5pc0VtcHR5KCkpOworICAgIC8vIEZJWE1FOiBDYW4gd2Ug
YXNzZXJ0IHRoYXQgbV9kZWZlcnJlZEZpbmlzaERlcmVmTGlzdCBpcyBlbXB0eT8KKworICAgIGlm
ICghaXNPZmZsaW5lQ29udGV4dCgpICYmIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSkgeworICAg
ICAgICBkb2N1bWVudCgpLT5yZW1vdmVBdWRpb1Byb2R1Y2VyKCp0aGlzKTsKKyAgICAgICAgZG9j
dW1lbnQoKS0+dW5yZWdpc3RlckZvclZpc2liaWxpdHlTdGF0ZUNoYW5nZWRDYWxsYmFja3MoKnRo
aXMpOworICAgIH0KK30KKwordm9pZCBXZWJLaXRBdWRpb0NvbnRleHQ6OmxhenlJbml0aWFsaXpl
KCkKK3sKKyAgICBBU1NFUlQoIW1faXNTdG9wU2NoZWR1bGVkKTsKKworICAgIGlmIChtX2lzSW5p
dGlhbGl6ZWQpCisgICAgICAgIHJldHVybjsKKworICAgIC8vIERvbid0IGFsbG93IHRoZSBjb250
ZXh0IHRvIGluaXRpYWxpemUgYSBzZWNvbmQgdGltZSBhZnRlciBpdCdzIGFscmVhZHkgYmVlbiBl
eHBsaWNpdGx5IHVuaW5pdGlhbGl6ZWQuCisgICAgQVNTRVJUKCFtX2lzQXVkaW9UaHJlYWRGaW5p
c2hlZCk7CisgICAgaWYgKG1faXNBdWRpb1RocmVhZEZpbmlzaGVkKQorICAgICAgICByZXR1cm47
CisKKyAgICBpZiAobV9kZXN0aW5hdGlvbk5vZGUpIHsKKyAgICAgICAgbV9kZXN0aW5hdGlvbk5v
ZGUtPmluaXRpYWxpemUoKTsKKworICAgICAgICBpZiAoIWlzT2ZmbGluZUNvbnRleHQoKSkgewor
ICAgICAgICAgICAgLy8gVGhpcyBzdGFydHMgdGhlIGF1ZGlvIHRocmVhZC4gVGhlIGRlc3RpbmF0
aW9uIG5vZGUncyBwcm92aWRlSW5wdXQoKSBtZXRob2Qgd2lsbCBub3cgYmUgY2FsbGVkIHJlcGVh
dGVkbHkgdG8gcmVuZGVyIGF1ZGlvLgorICAgICAgICAgICAgLy8gRWFjaCB0aW1lIHByb3ZpZGVJ
bnB1dCgpIGlzIGNhbGxlZCwgYSBwb3J0aW9uIG9mIHRoZSBhdWRpbyBzdHJlYW0gaXMgcmVuZGVy
ZWQuIExldCdzIGNhbGwgdGhpcyB0aW1lIHBlcmlvZCBhICJyZW5kZXIgcXVhbnR1bSIuCisgICAg
ICAgICAgICAvLyBOT1RFOiBmb3Igbm93IGRlZmF1bHQgQXVkaW9Db250ZXh0IGRvZXMgbm90IG5l
ZWQgYW4gZXhwbGljaXQgc3RhcnRSZW5kZXJpbmcoKSBjYWxsIGZyb20gSmF2YVNjcmlwdC4KKyAg
ICAgICAgICAgIC8vIFdlIG1heSB3YW50IHRvIGNvbnNpZGVyIHJlcXVpcmluZyBpdCBmb3Igc3lt
bWV0cnkgd2l0aCBPZmZsaW5lQXVkaW9Db250ZXh0LgorICAgICAgICAgICAgc3RhcnRSZW5kZXJp
bmcoKTsKKyAgICAgICAgICAgICsrc19oYXJkd2FyZUNvbnRleHRDb3VudDsKKyAgICAgICAgfQor
ICAgIH0KKyAgICBtX2lzSW5pdGlhbGl6ZWQgPSB0cnVlOworfQorCit2b2lkIFdlYktpdEF1ZGlv
Q29udGV4dDo6Y2xlYXIoKQoreworICAgIFJlZjxXZWJLaXRBdWRpb0NvbnRleHQ+IHByb3RlY3Rl
ZFRoaXMoKnRoaXMpOworCisgICAgLy8gV2UgaGF2ZSB0byByZWxlYXNlIG91ciByZWZlcmVuY2Ug
dG8gdGhlIGRlc3RpbmF0aW9uIG5vZGUgYmVmb3JlIHRoZSBjb250ZXh0IHdpbGwgZXZlciBiZSBk
ZWxldGVkIHNpbmNlIHRoZSBkZXN0aW5hdGlvbiBub2RlIGhvbGRzIGEgcmVmZXJlbmNlIHRvIHRo
ZSBjb250ZXh0LgorICAgIGlmIChtX2Rlc3RpbmF0aW9uTm9kZSkKKyAgICAgICAgbV9kZXN0aW5h
dGlvbk5vZGUgPSBudWxscHRyOworCisgICAgLy8gQXVkaW8gdGhyZWFkIGlzIGRlYWQuIE5vYm9k
eSB3aWxsIHNjaGVkdWxlIG5vZGUgZGVsZXRpb24gYWN0aW9uLiBMZXQncyBkbyBpdCBvdXJzZWx2
ZXMuCisgICAgZG8geworICAgICAgICBkZWxldGVNYXJrZWROb2RlcygpOworICAgICAgICBtX25v
ZGVzVG9EZWxldGUuYXBwZW5kVmVjdG9yKG1fbm9kZXNNYXJrZWRGb3JEZWxldGlvbik7CisgICAg
ICAgIG1fbm9kZXNNYXJrZWRGb3JEZWxldGlvbi5jbGVhcigpOworICAgIH0gd2hpbGUgKG1fbm9k
ZXNUb0RlbGV0ZS5zaXplKCkpOworCisgICAgY2xlYXJQZW5kaW5nQWN0aXZpdHkoKTsKK30KKwor
dm9pZCBXZWJLaXRBdWRpb0NvbnRleHQ6OnVuaW5pdGlhbGl6ZSgpCit7CisgICAgQUxXQVlTX0xP
RyhMT0dJREVOVElGSUVSKTsKKworICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisKKyAgICBp
ZiAoIW1faXNJbml0aWFsaXplZCkKKyAgICAgICAgcmV0dXJuOworCisgICAgLy8gVGhpcyBzdG9w
cyB0aGUgYXVkaW8gdGhyZWFkIGFuZCBhbGwgYXVkaW8gcmVuZGVyaW5nLgorICAgIGlmIChtX2Rl
c3RpbmF0aW9uTm9kZSkKKyAgICAgICAgbV9kZXN0aW5hdGlvbk5vZGUtPnVuaW5pdGlhbGl6ZSgp
OworCisgICAgLy8gRG9uJ3QgYWxsb3cgdGhlIGNvbnRleHQgdG8gaW5pdGlhbGl6ZSBhIHNlY29u
ZCB0aW1lIGFmdGVyIGl0J3MgYWxyZWFkeSBiZWVuIGV4cGxpY2l0bHkgdW5pbml0aWFsaXplZC4K
KyAgICBtX2lzQXVkaW9UaHJlYWRGaW5pc2hlZCA9IHRydWU7CisKKyAgICBpZiAoIWlzT2ZmbGlu
ZUNvbnRleHQoKSkgeworICAgICAgICBBU1NFUlQoc19oYXJkd2FyZUNvbnRleHRDb3VudCk7Cisg
ICAgICAgIC0tc19oYXJkd2FyZUNvbnRleHRDb3VudDsKKworICAgICAgICAvLyBPZmZsaW5lIGNv
bnRleHRzIG1vdmUgdG8gJ0Nsb3NlZCcgc3RhdGUgd2hlbiBkaXNwYXRjaGluZyB0aGUgY29tcGxl
dGlvbiBldmVudC4KKyAgICAgICAgc2V0U3RhdGUoU3RhdGU6OkNsb3NlZCk7CisgICAgfQorCisg
ICAgLy8gR2V0IHJpZCBvZiB0aGUgc291cmNlcyB3aGljaCBtYXkgc3RpbGwgYmUgcGxheWluZy4K
KyAgICBkZXJlZlVuZmluaXNoZWRTb3VyY2VOb2RlcygpOworCisgICAgbV9pc0luaXRpYWxpemVk
ID0gZmFsc2U7Cit9CisKK2Jvb2wgV2ViS2l0QXVkaW9Db250ZXh0Ojppc0luaXRpYWxpemVkKCkg
Y29uc3QKK3sKKyAgICByZXR1cm4gbV9pc0luaXRpYWxpemVkOworfQorCit2b2lkIFdlYktpdEF1
ZGlvQ29udGV4dDo6YWRkUmVhY3Rpb24oU3RhdGUgc3RhdGUsIERPTVByb21pc2VEZWZlcnJlZDx2
b2lkPiYmIHByb21pc2UpCit7CisgICAgc2l6ZV90IHN0YXRlSW5kZXggPSBzdGF0aWNfY2FzdDxz
aXplX3Q+KHN0YXRlKTsKKyAgICBpZiAoc3RhdGVJbmRleCA+PSBtX3N0YXRlUmVhY3Rpb25zLnNp
emUoKSkKKyAgICAgICAgbV9zdGF0ZVJlYWN0aW9ucy5ncm93KHN0YXRlSW5kZXggKyAxKTsKKwor
ICAgIG1fc3RhdGVSZWFjdGlvbnNbc3RhdGVJbmRleF0uYXBwZW5kKFdURk1vdmUocHJvbWlzZSkp
OworfQorCit2b2lkIFdlYktpdEF1ZGlvQ29udGV4dDo6c2V0U3RhdGUoU3RhdGUgc3RhdGUpCit7
CisgICAgaWYgKG1fc3RhdGUgPT0gc3RhdGUpCisgICAgICAgIHJldHVybjsKKworICAgIG1fc3Rh
dGUgPSBzdGF0ZTsKKyAgICBtX2V2ZW50UXVldWUtPmVucXVldWVFdmVudChFdmVudDo6Y3JlYXRl
KGV2ZW50TmFtZXMoKS5zdGF0ZWNoYW5nZUV2ZW50LCBFdmVudDo6Q2FuQnViYmxlOjpZZXMsIEV2
ZW50OjpJc0NhbmNlbGFibGU6Ok5vKSk7CisKKyAgICBzaXplX3Qgc3RhdGVJbmRleCA9IHN0YXRp
Y19jYXN0PHNpemVfdD4oc3RhdGUpOworICAgIGlmIChzdGF0ZUluZGV4ID49IG1fc3RhdGVSZWFj
dGlvbnMuc2l6ZSgpKQorICAgICAgICByZXR1cm47CisKKyAgICBWZWN0b3I8RE9NUHJvbWlzZURl
ZmVycmVkPHZvaWQ+PiByZWFjdGlvbnM7CisgICAgbV9zdGF0ZVJlYWN0aW9uc1tzdGF0ZUluZGV4
XS5zd2FwKHJlYWN0aW9ucyk7CisKKyAgICBmb3IgKGF1dG8mIHByb21pc2UgOiByZWFjdGlvbnMp
CisgICAgICAgIHByb21pc2UucmVzb2x2ZSgpOworfQorCit2b2lkIFdlYktpdEF1ZGlvQ29udGV4
dDo6c3RvcCgpCit7CisgICAgQUxXQVlTX0xPRyhMT0dJREVOVElGSUVSKTsKKworICAgIEFTU0VS
VChpc01haW5UaHJlYWQoKSk7CisKKyAgICAvLyBVc3VhbGx5IFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQgY2FsbHMgc3RvcCB0d2ljZS4KKyAgICBpZiAobV9pc1N0b3BTY2hlZHVsZWQpCisgICAgICAg
IHJldHVybjsKKyAgICBtX2lzU3RvcFNjaGVkdWxlZCA9IHRydWU7CisKKyAgICBBU1NFUlQoZG9j
dW1lbnQoKSk7CisgICAgZG9jdW1lbnQoKS0+dXBkYXRlSXNQbGF5aW5nTWVkaWEoKTsKKworICAg
IHVuaW5pdGlhbGl6ZSgpOworICAgIGNsZWFyKCk7Cit9CisKK3ZvaWQgV2ViS2l0QXVkaW9Db250
ZXh0OjpzdXNwZW5kKFJlYXNvbkZvclN1c3BlbnNpb24pCit7CisgICAgaWYgKHN0YXRlKCkgPT0g
U3RhdGU6OlJ1bm5pbmcpIHsKKyAgICAgICAgbV9tZWRpYVNlc3Npb24tPmJlZ2luSW50ZXJydXB0
aW9uKFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpQbGF5YmFja1N1c3BlbmRlZCk7CisgICAgICAgIGRv
Y3VtZW50KCktPnVwZGF0ZUlzUGxheWluZ01lZGlhKCk7CisgICAgfQorfQorCit2b2lkIFdlYktp
dEF1ZGlvQ29udGV4dDo6cmVzdW1lKCkKK3sKKyAgICBpZiAoc3RhdGUoKSA9PSBTdGF0ZTo6SW50
ZXJydXB0ZWQpIHsKKyAgICAgICAgbV9tZWRpYVNlc3Npb24tPmVuZEludGVycnVwdGlvbihQbGF0
Zm9ybU1lZGlhU2Vzc2lvbjo6TWF5UmVzdW1lUGxheWluZyk7CisgICAgICAgIGRvY3VtZW50KCkt
PnVwZGF0ZUlzUGxheWluZ01lZGlhKCk7CisgICAgfQorfQorCitjb25zdCBjaGFyKiBXZWJLaXRB
dWRpb0NvbnRleHQ6OmFjdGl2ZURPTU9iamVjdE5hbWUoKSBjb25zdAoreworICAgIHJldHVybiAi
V2ViS2l0QXVkaW9Db250ZXh0IjsKK30KKworRG9jdW1lbnRJZGVudGlmaWVyIFdlYktpdEF1ZGlv
Q29udGV4dDo6aG9zdGluZ0RvY3VtZW50SWRlbnRpZmllcigpIGNvbnN0Cit7CisgICAgYXV0byog
ZG9jdW1lbnQgPSBkb3duY2FzdDxEb2N1bWVudD4obV9zY3JpcHRFeGVjdXRpb25Db250ZXh0KTsK
KyAgICByZXR1cm4gZG9jdW1lbnQgPyBkb2N1bWVudC0+aWRlbnRpZmllcigpIDogRG9jdW1lbnRJ
ZGVudGlmaWVyIHsgfTsKK30KKworYm9vbCBXZWJLaXRBdWRpb0NvbnRleHQ6OmlzU3VzcGVuZGVk
KCkgY29uc3QKK3sKKyAgICByZXR1cm4gIWRvY3VtZW50KCkgfHwgZG9jdW1lbnQoKS0+YWN0aXZl
RE9NT2JqZWN0c0FyZVN1c3BlbmRlZCgpIHx8IGRvY3VtZW50KCktPmFjdGl2ZURPTU9iamVjdHNB
cmVTdG9wcGVkKCk7Cit9CisKK3ZvaWQgV2ViS2l0QXVkaW9Db250ZXh0Ojp2aXNpYmlsaXR5U3Rh
dGVDaGFuZ2VkKCkKK3sKKyAgICAvLyBEbyBub3Qgc3VzcGVuZCBpZiBhdWRpbyBpcyBhdWRpYmxl
LgorICAgIGlmICghZG9jdW1lbnQoKSB8fCBtZWRpYVN0YXRlKCkgPT0gTWVkaWFQcm9kdWNlcjo6
SXNQbGF5aW5nQXVkaW8gfHwgbV9pc1N0b3BTY2hlZHVsZWQpCisgICAgICAgIHJldHVybjsKKwor
ICAgIGlmIChkb2N1bWVudCgpLT5oaWRkZW4oKSkgeworICAgICAgICBpZiAoc3RhdGUoKSA9PSBT
dGF0ZTo6UnVubmluZykgeworICAgICAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgidmlz
aWJpbGl0eVN0YXRlQ2hhbmdlZCgpIFN1c3BlbmRpbmcgcGxheWJhY2sgYWZ0ZXIgZ29pbmcgdG8g
dGhlIGJhY2tncm91bmQiKTsKKyAgICAgICAgICAgIG1fbWVkaWFTZXNzaW9uLT5iZWdpbkludGVy
cnVwdGlvbihQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6RW50ZXJpbmdCYWNrZ3JvdW5kKTsKKyAgICAg
ICAgfQorICAgIH0gZWxzZSB7CisgICAgICAgIGlmIChzdGF0ZSgpID09IFN0YXRlOjpJbnRlcnJ1
cHRlZCkgeworICAgICAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgidmlzaWJpbGl0eVN0
YXRlQ2hhbmdlZCgpIFJlc3VtaW5nIHBsYXliYWNrIGFmdGVyIGVudGVyaW5nIGZvcmVncm91bmQi
KTsKKyAgICAgICAgICAgIG1fbWVkaWFTZXNzaW9uLT5lbmRJbnRlcnJ1cHRpb24oUGxhdGZvcm1N
ZWRpYVNlc3Npb246Ok1heVJlc3VtZVBsYXlpbmcpOworICAgICAgICB9CisgICAgfQorfQorCiti
b29sIFdlYktpdEF1ZGlvQ29udGV4dDo6d291bGRUYWludE9yaWdpbihjb25zdCBVUkwmIHVybCkg
Y29uc3QKK3sKKyAgICBpZiAodXJsLnByb3RvY29sSXNEYXRhKCkpCisgICAgICAgIHJldHVybiBm
YWxzZTsKKworICAgIGlmIChhdXRvKiBkb2N1bWVudCA9IHRoaXMtPmRvY3VtZW50KCkpCisgICAg
ICAgIHJldHVybiAhZG9jdW1lbnQtPnNlY3VyaXR5T3JpZ2luKCkuY2FuUmVxdWVzdCh1cmwpOwor
CisgICAgcmV0dXJuIGZhbHNlOworfQorCitFeGNlcHRpb25PcjxSZWY8QXVkaW9CdWZmZXI+PiBX
ZWJLaXRBdWRpb0NvbnRleHQ6OmNyZWF0ZUJ1ZmZlcih1bnNpZ25lZCBudW1iZXJPZkNoYW5uZWxz
LCBzaXplX3QgbnVtYmVyT2ZGcmFtZXMsIGZsb2F0IHNhbXBsZVJhdGUpCit7CisgICAgYXV0byBh
dWRpb0J1ZmZlciA9IEF1ZGlvQnVmZmVyOjpjcmVhdGUobnVtYmVyT2ZDaGFubmVscywgbnVtYmVy
T2ZGcmFtZXMsIHNhbXBsZVJhdGUpOworICAgIGlmICghYXVkaW9CdWZmZXIpCisgICAgICAgIHJl
dHVybiBFeGNlcHRpb24geyBOb3RTdXBwb3J0ZWRFcnJvciB9OworICAgIHJldHVybiBhdWRpb0J1
ZmZlci5yZWxlYXNlTm9uTnVsbCgpOworfQorCitFeGNlcHRpb25PcjxSZWY8QXVkaW9CdWZmZXI+
PiBXZWJLaXRBdWRpb0NvbnRleHQ6OmNyZWF0ZUJ1ZmZlcihBcnJheUJ1ZmZlciYgYXJyYXlCdWZm
ZXIsIGJvb2wgbWl4VG9Nb25vKQoreworICAgIGF1dG8gYXVkaW9CdWZmZXIgPSBBdWRpb0J1ZmZl
cjo6Y3JlYXRlRnJvbUF1ZGlvRmlsZURhdGEoYXJyYXlCdWZmZXIuZGF0YSgpLCBhcnJheUJ1ZmZl
ci5ieXRlTGVuZ3RoKCksIG1peFRvTW9ubywgc2FtcGxlUmF0ZSgpKTsKKyAgICBpZiAoIWF1ZGlv
QnVmZmVyKQorICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgU3ludGF4RXJyb3IgfTsKKyAgICBy
ZXR1cm4gYXVkaW9CdWZmZXIucmVsZWFzZU5vbk51bGwoKTsKK30KKwordm9pZCBXZWJLaXRBdWRp
b0NvbnRleHQ6OmRlY29kZUF1ZGlvRGF0YShSZWY8QXJyYXlCdWZmZXI+JiYgYXVkaW9EYXRhLCBS
ZWZQdHI8QXVkaW9CdWZmZXJDYWxsYmFjaz4mJiBzdWNjZXNzQ2FsbGJhY2ssIFJlZlB0cjxBdWRp
b0J1ZmZlckNhbGxiYWNrPiYmIGVycm9yQ2FsbGJhY2spCit7CisgICAgaWYgKCFtX2F1ZGlvRGVj
b2RlcikKKyAgICAgICAgbV9hdWRpb0RlY29kZXIgPSBtYWtlVW5pcXVlPEFzeW5jQXVkaW9EZWNv
ZGVyPigpOworICAgIG1fYXVkaW9EZWNvZGVyLT5kZWNvZGVBc3luYyhXVEZNb3ZlKGF1ZGlvRGF0
YSksIHNhbXBsZVJhdGUoKSwgV1RGTW92ZShzdWNjZXNzQ2FsbGJhY2spLCBXVEZNb3ZlKGVycm9y
Q2FsbGJhY2spKTsKK30KKworRXhjZXB0aW9uT3I8UmVmPEF1ZGlvQnVmZmVyU291cmNlTm9kZT4+
IFdlYktpdEF1ZGlvQ29udGV4dDo6Y3JlYXRlQnVmZmVyU291cmNlKCkKK3sKKyAgICBBTFdBWVNf
TE9HKExPR0lERU5USUZJRVIpOworCisgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKworICAg
IGlmIChtX2lzU3RvcFNjaGVkdWxlZCkKKyAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IEludmFs
aWRTdGF0ZUVycm9yIH07CisKKyAgICBsYXp5SW5pdGlhbGl6ZSgpOworICAgIFJlZjxBdWRpb0J1
ZmZlclNvdXJjZU5vZGU+IG5vZGUgPSBBdWRpb0J1ZmZlclNvdXJjZU5vZGU6OmNyZWF0ZSgqdGhp
cywgc2FtcGxlUmF0ZSgpKTsKKworICAgIC8vIEJlY2F1c2UgdGhpcyBpcyBhbiBBdWRpb1NjaGVk
dWxlZFNvdXJjZU5vZGUsIHRoZSBjb250ZXh0IGtlZXBzIGEgcmVmZXJlbmNlIHVudGlsIGl0IGhh
cyBmaW5pc2hlZCBwbGF5aW5nLgorICAgIC8vIFdoZW4gdGhpcyBoYXBwZW5zLCBBdWRpb1NjaGVk
dWxlZFNvdXJjZU5vZGU6OmZpbmlzaCgpIGNhbGxzIFdlYktpdEF1ZGlvQ29udGV4dDo6bm90aWZ5
Tm9kZUZpbmlzaGVkUHJvY2Vzc2luZygpLgorICAgIHJlZk5vZGUobm9kZSk7CisKKyAgICByZXR1
cm4gbm9kZTsKK30KKworI2lmIEVOQUJMRShWSURFTykKKworRXhjZXB0aW9uT3I8UmVmPE1lZGlh
RWxlbWVudEF1ZGlvU291cmNlTm9kZT4+IFdlYktpdEF1ZGlvQ29udGV4dDo6Y3JlYXRlTWVkaWFF
bGVtZW50U291cmNlKEhUTUxNZWRpYUVsZW1lbnQmIG1lZGlhRWxlbWVudCkKK3sKKyAgICBBTFdB
WVNfTE9HKExPR0lERU5USUZJRVIpOworCisgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKwor
ICAgIGlmIChtX2lzU3RvcFNjaGVkdWxlZCB8fCBtZWRpYUVsZW1lbnQuYXVkaW9Tb3VyY2VOb2Rl
KCkpCisgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBJbnZhbGlkU3RhdGVFcnJvciB9OworCisg
ICAgbGF6eUluaXRpYWxpemUoKTsKKworICAgIGF1dG8gbm9kZSA9IE1lZGlhRWxlbWVudEF1ZGlv
U291cmNlTm9kZTo6Y3JlYXRlKCp0aGlzLCBtZWRpYUVsZW1lbnQpOworCisgICAgbWVkaWFFbGVt
ZW50LnNldEF1ZGlvU291cmNlTm9kZShub2RlLnB0cigpKTsKKworICAgIHJlZk5vZGUobm9kZS5n
ZXQoKSk7IC8vIGNvbnRleHQga2VlcHMgcmVmZXJlbmNlIHVudGlsIG5vZGUgaXMgZGlzY29ubmVj
dGVkCisgICAgcmV0dXJuIG5vZGU7Cit9CisKKyNlbmRpZgorCisjaWYgRU5BQkxFKE1FRElBX1NU
UkVBTSkKKworRXhjZXB0aW9uT3I8UmVmPE1lZGlhU3RyZWFtQXVkaW9Tb3VyY2VOb2RlPj4gV2Vi
S2l0QXVkaW9Db250ZXh0OjpjcmVhdGVNZWRpYVN0cmVhbVNvdXJjZShNZWRpYVN0cmVhbSYgbWVk
aWFTdHJlYW0pCit7CisgICAgQUxXQVlTX0xPRyhMT0dJREVOVElGSUVSKTsKKworICAgIEFTU0VS
VChpc01haW5UaHJlYWQoKSk7CisKKyAgICBpZiAobV9pc1N0b3BTY2hlZHVsZWQpCisgICAgICAg
IHJldHVybiBFeGNlcHRpb24geyBJbnZhbGlkU3RhdGVFcnJvciB9OworCisgICAgYXV0byBhdWRp
b1RyYWNrcyA9IG1lZGlhU3RyZWFtLmdldEF1ZGlvVHJhY2tzKCk7CisgICAgaWYgKGF1ZGlvVHJh
Y2tzLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IEludmFsaWRTdGF0ZUVy
cm9yIH07CisKKyAgICBNZWRpYVN0cmVhbVRyYWNrKiBwcm92aWRlclRyYWNrID0gbnVsbHB0cjsK
KyAgICBmb3IgKGF1dG8mIHRyYWNrIDogYXVkaW9UcmFja3MpIHsKKyAgICAgICAgaWYgKHRyYWNr
LT5hdWRpb1NvdXJjZVByb3ZpZGVyKCkpIHsKKyAgICAgICAgICAgIHByb3ZpZGVyVHJhY2sgPSB0
cmFjay5nZXQoKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgfQorICAgIGlm
ICghcHJvdmlkZXJUcmFjaykKKyAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IEludmFsaWRTdGF0
ZUVycm9yIH07CisKKyAgICBsYXp5SW5pdGlhbGl6ZSgpOworCisgICAgYXV0byBub2RlID0gTWVk
aWFTdHJlYW1BdWRpb1NvdXJjZU5vZGU6OmNyZWF0ZSgqdGhpcywgbWVkaWFTdHJlYW0sICpwcm92
aWRlclRyYWNrKTsKKyAgICBub2RlLT5zZXRGb3JtYXQoMiwgc2FtcGxlUmF0ZSgpKTsKKworICAg
IHJlZk5vZGUobm9kZSk7IC8vIGNvbnRleHQga2VlcHMgcmVmZXJlbmNlIHVudGlsIG5vZGUgaXMg
ZGlzY29ubmVjdGVkCisgICAgcmV0dXJuIG5vZGU7Cit9CisKK0V4Y2VwdGlvbk9yPFJlZjxNZWRp
YVN0cmVhbUF1ZGlvRGVzdGluYXRpb25Ob2RlPj4gV2ViS2l0QXVkaW9Db250ZXh0OjpjcmVhdGVN
ZWRpYVN0cmVhbURlc3RpbmF0aW9uKCkKK3sKKyAgICBpZiAobV9pc1N0b3BTY2hlZHVsZWQpCisg
ICAgICAgIHJldHVybiBFeGNlcHRpb24geyBJbnZhbGlkU3RhdGVFcnJvciB9OworCisgICAgLy8g
RklYTUU6IEFkZCBzdXBwb3J0IGZvciBhbiBvcHRpb25hbCBhcmd1bWVudCB3aGljaCBzcGVjaWZp
ZXMgdGhlIG51bWJlciBvZiBjaGFubmVscy4KKyAgICAvLyBGSVhNRTogVGhlIGRlZmF1bHQgc2hv
dWxkIHByb2JhYmx5IGJlIHN0ZXJlbyBpbnN0ZWFkIG9mIG1vbm8uCisgICAgcmV0dXJuIE1lZGlh
U3RyZWFtQXVkaW9EZXN0aW5hdGlvbk5vZGU6OmNyZWF0ZSgqdGhpcywgMSk7Cit9CisKKyNlbmRp
ZgorCitFeGNlcHRpb25PcjxSZWY8U2NyaXB0UHJvY2Vzc29yTm9kZT4+IFdlYktpdEF1ZGlvQ29u
dGV4dDo6Y3JlYXRlU2NyaXB0UHJvY2Vzc29yKHNpemVfdCBidWZmZXJTaXplLCBzaXplX3QgbnVt
YmVyT2ZJbnB1dENoYW5uZWxzLCBzaXplX3QgbnVtYmVyT2ZPdXRwdXRDaGFubmVscykKK3sKKyAg
ICBBTFdBWVNfTE9HKExPR0lERU5USUZJRVIpOworCisgICAgQVNTRVJUKGlzTWFpblRocmVhZCgp
KTsKKworICAgIGlmIChtX2lzU3RvcFNjaGVkdWxlZCkKKyAgICAgICAgcmV0dXJuIEV4Y2VwdGlv
biB7IEludmFsaWRTdGF0ZUVycm9yIH07CisKKyAgICBsYXp5SW5pdGlhbGl6ZSgpOworCisgICAg
Ly8gVzNDIEVkaXRvcidzIERyYWZ0IDA2IEp1bmUgMjAxNworICAgIC8vICBodHRwczovL3dlYmF1
ZGlvLmdpdGh1Yi5pby93ZWItYXVkaW8tYXBpLyN3aWRsLUJhc2VBdWRpb0NvbnRleHQtY3JlYXRl
U2NyaXB0UHJvY2Vzc29yLVNjcmlwdFByb2Nlc3Nvck5vZGUtdW5zaWduZWQtbG9uZy1idWZmZXJT
aXplLXVuc2lnbmVkLWxvbmctbnVtYmVyT2ZJbnB1dENoYW5uZWxzLXVuc2lnbmVkLWxvbmctbnVt
YmVyT2ZPdXRwdXRDaGFubmVscworCisgICAgLy8gVGhlIGJ1ZmZlclNpemUgcGFyYW1ldGVyIGRl
dGVybWluZXMgdGhlIGJ1ZmZlciBzaXplIGluIHVuaXRzIG9mIHNhbXBsZS1mcmFtZXMuIElmIGl0
J3Mgbm90IHBhc3NlZCBpbiwKKyAgICAvLyBvciBpZiB0aGUgdmFsdWUgaXMgMCwgdGhlbiB0aGUg
aW1wbGVtZW50YXRpb24gd2lsbCBjaG9vc2UgdGhlIGJlc3QgYnVmZmVyIHNpemUgZm9yIHRoZSBn
aXZlbiBlbnZpcm9ubWVudCwKKyAgICAvLyB3aGljaCB3aWxsIGJlIGNvbnN0YW50IHBvd2VyIG9m
IDIgdGhyb3VnaG91dCB0aGUgbGlmZXRpbWUgb2YgdGhlIG5vZGUuIC4uLiBJZiB0aGUgdmFsdWUg
b2YgdGhpcyBwYXJhbWV0ZXIKKyAgICAvLyBpcyBub3Qgb25lIG9mIHRoZSBhbGxvd2VkIHBvd2Vy
LW9mLTIgdmFsdWVzIGxpc3RlZCBhYm92ZSwgYW4gSW5kZXhTaXplRXJyb3IgbXVzdCBiZSB0aHJv
d24uCisgICAgc3dpdGNoIChidWZmZXJTaXplKSB7CisgICAgY2FzZSAwOgorI2lmIFVTRShBVURJ
T19TRVNTSU9OKQorICAgICAgICAvLyBQaWNrIGEgdmFsdWUgYmV0d2VlbiAyNTYgKDJeOCkgYW5k
IDE2Mzg0ICgyXjE0KSwgYmFzZWQgb24gdGhlIGJ1ZmZlciBzaXplIG9mIHRoZSBjdXJyZW50IEF1
ZGlvU2Vzc2lvbjoKKyAgICAgICAgYnVmZmVyU2l6ZSA9IDEgPDwgc3RkOjptYXg8c2l6ZV90Pig4
LCBzdGQ6Om1pbjxzaXplX3Q+KDE0LCBzdGQ6OmxvZzIoQXVkaW9TZXNzaW9uOjpzaGFyZWRTZXNz
aW9uKCkuYnVmZmVyU2l6ZSgpKSkpOworI2Vsc2UKKyAgICAgICAgYnVmZmVyU2l6ZSA9IDIwNDg7
CisjZW5kaWYKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSAyNTY6CisgICAgY2FzZSA1MTI6Cisg
ICAgY2FzZSAxMDI0OgorICAgIGNhc2UgMjA0ODoKKyAgICBjYXNlIDQwOTY6CisgICAgY2FzZSA4
MTkyOgorICAgIGNhc2UgMTYzODQ6CisgICAgICAgIGJyZWFrOworICAgIGRlZmF1bHQ6CisgICAg
ICAgIHJldHVybiBFeGNlcHRpb24geyBJbmRleFNpemVFcnJvciB9OworICAgIH0KKworICAgIC8v
IEFuIEluZGV4U2l6ZUVycm9yIGV4Y2VwdGlvbiBtdXN0IGJlIHRocm93biBpZiBidWZmZXJTaXpl
IG9yIG51bWJlck9mSW5wdXRDaGFubmVscyBvciBudW1iZXJPZk91dHB1dENoYW5uZWxzCisgICAg
Ly8gYXJlIG91dHNpZGUgdGhlIHZhbGlkIHJhbmdlLiBJdCBpcyBpbnZhbGlkIGZvciBib3RoIG51
bWJlck9mSW5wdXRDaGFubmVscyBhbmQgbnVtYmVyT2ZPdXRwdXRDaGFubmVscyB0byBiZSB6ZXJv
LgorICAgIC8vIEluIHRoaXMgY2FzZSBhbiBJbmRleFNpemVFcnJvciBtdXN0IGJlIHRocm93bi4K
KworICAgIGlmICghbnVtYmVyT2ZJbnB1dENoYW5uZWxzICYmICFudW1iZXJPZk91dHB1dENoYW5u
ZWxzKQorICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgTm90U3VwcG9ydGVkRXJyb3IgfTsKKwor
ICAgIC8vIFRoaXMgcGFyYW1ldGVyIFtudW1iZXJPZklucHV0Q2hhbm5lbHNdIGRldGVybWluZXMg
dGhlIG51bWJlciBvZiBjaGFubmVscyBmb3IgdGhpcyBub2RlJ3MgaW5wdXQuIFZhbHVlcyBvZgor
ICAgIC8vIHVwIHRvIDMyIG11c3QgYmUgc3VwcG9ydGVkLiBBIE5vdFN1cHBvcnRlZEVycm9yIG11
c3QgYmUgdGhyb3duIGlmIHRoZSBudW1iZXIgb2YgY2hhbm5lbHMgaXMgbm90IHN1cHBvcnRlZC4K
KworICAgIGlmIChudW1iZXJPZklucHV0Q2hhbm5lbHMgPiBtYXhOdW1iZXJPZkNoYW5uZWxzKCkp
CisgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBOb3RTdXBwb3J0ZWRFcnJvciB9OworCisgICAg
Ly8gVGhpcyBwYXJhbWV0ZXIgW251bWJlck9mT3V0cHV0Q2hhbm5lbHNdIGRldGVybWluZXMgdGhl
IG51bWJlciBvZiBjaGFubmVscyBmb3IgdGhpcyBub2RlJ3Mgb3V0cHV0LiBWYWx1ZXMgb2YKKyAg
ICAvLyB1cCB0byAzMiBtdXN0IGJlIHN1cHBvcnRlZC4gQSBOb3RTdXBwb3J0ZWRFcnJvciBtdXN0
IGJlIHRocm93biBpZiB0aGUgbnVtYmVyIG9mIGNoYW5uZWxzIGlzIG5vdCBzdXBwb3J0ZWQuCisK
KyAgICBpZiAobnVtYmVyT2ZPdXRwdXRDaGFubmVscyA+IG1heE51bWJlck9mQ2hhbm5lbHMoKSkK
KyAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IE5vdFN1cHBvcnRlZEVycm9yIH07CisKKyAgICBh
dXRvIG5vZGUgPSBTY3JpcHRQcm9jZXNzb3JOb2RlOjpjcmVhdGUoKnRoaXMsIHNhbXBsZVJhdGUo
KSwgYnVmZmVyU2l6ZSwgbnVtYmVyT2ZJbnB1dENoYW5uZWxzLCBudW1iZXJPZk91dHB1dENoYW5u
ZWxzKTsKKworICAgIHJlZk5vZGUobm9kZSk7IC8vIGNvbnRleHQga2VlcHMgcmVmZXJlbmNlIHVu
dGlsIHdlIHN0b3AgbWFraW5nIGphdmFzY3JpcHQgcmVuZGVyaW5nIGNhbGxiYWNrcworICAgIHJl
dHVybiBub2RlOworfQorCitFeGNlcHRpb25PcjxSZWY8QmlxdWFkRmlsdGVyTm9kZT4+IFdlYktp
dEF1ZGlvQ29udGV4dDo6Y3JlYXRlQmlxdWFkRmlsdGVyKCkKK3sKKyAgICBBTFdBWVNfTE9HKExP
R0lERU5USUZJRVIpOworCisgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKyAgICBpZiAobV9p
c1N0b3BTY2hlZHVsZWQpCisgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBJbnZhbGlkU3RhdGVF
cnJvciB9OworCisgICAgbGF6eUluaXRpYWxpemUoKTsKKworICAgIHJldHVybiBCaXF1YWRGaWx0
ZXJOb2RlOjpjcmVhdGUoKnRoaXMsIHNhbXBsZVJhdGUoKSk7Cit9CisKK0V4Y2VwdGlvbk9yPFJl
ZjxXYXZlU2hhcGVyTm9kZT4+IFdlYktpdEF1ZGlvQ29udGV4dDo6Y3JlYXRlV2F2ZVNoYXBlcigp
Cit7CisgICAgQUxXQVlTX0xPRyhMT0dJREVOVElGSUVSKTsKKworICAgIEFTU0VSVChpc01haW5U
aHJlYWQoKSk7CisgICAgaWYgKG1faXNTdG9wU2NoZWR1bGVkKQorICAgICAgICByZXR1cm4gRXhj
ZXB0aW9uIHsgSW52YWxpZFN0YXRlRXJyb3IgfTsKKworICAgIGxhenlJbml0aWFsaXplKCk7Cisg
ICAgcmV0dXJuIFdhdmVTaGFwZXJOb2RlOjpjcmVhdGUoKnRoaXMpOworfQorCitFeGNlcHRpb25P
cjxSZWY8V2ViS2l0QXVkaW9QYW5uZXJOb2RlPj4gV2ViS2l0QXVkaW9Db250ZXh0OjpjcmVhdGVQ
YW5uZXIoKQoreworICAgIEFMV0FZU19MT0coTE9HSURFTlRJRklFUik7CisKKyAgICBBU1NFUlQo
aXNNYWluVGhyZWFkKCkpOworICAgIGlmIChtX2lzU3RvcFNjaGVkdWxlZCkKKyAgICAgICAgcmV0
dXJuIEV4Y2VwdGlvbiB7IEludmFsaWRTdGF0ZUVycm9yIH07CisKKyAgICBsYXp5SW5pdGlhbGl6
ZSgpOworICAgIHJldHVybiBXZWJLaXRBdWRpb1Bhbm5lck5vZGU6OmNyZWF0ZSgqdGhpcywgc2Ft
cGxlUmF0ZSgpKTsKK30KKworRXhjZXB0aW9uT3I8UmVmPENvbnZvbHZlck5vZGU+PiBXZWJLaXRB
dWRpb0NvbnRleHQ6OmNyZWF0ZUNvbnZvbHZlcigpCit7CisgICAgQUxXQVlTX0xPRyhMT0dJREVO
VElGSUVSKTsKKworICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisgICAgaWYgKG1faXNTdG9w
U2NoZWR1bGVkKQorICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgSW52YWxpZFN0YXRlRXJyb3Ig
fTsKKworICAgIGxhenlJbml0aWFsaXplKCk7CisgICAgcmV0dXJuIENvbnZvbHZlck5vZGU6OmNy
ZWF0ZSgqdGhpcywgc2FtcGxlUmF0ZSgpKTsKK30KKworRXhjZXB0aW9uT3I8UmVmPER5bmFtaWNz
Q29tcHJlc3Nvck5vZGU+PiBXZWJLaXRBdWRpb0NvbnRleHQ6OmNyZWF0ZUR5bmFtaWNzQ29tcHJl
c3NvcigpCit7CisgICAgQUxXQVlTX0xPRyhMT0dJREVOVElGSUVSKTsKKworICAgIEFTU0VSVChp
c01haW5UaHJlYWQoKSk7CisgICAgaWYgKG1faXNTdG9wU2NoZWR1bGVkKQorICAgICAgICByZXR1
cm4gRXhjZXB0aW9uIHsgSW52YWxpZFN0YXRlRXJyb3IgfTsKKworICAgIGxhenlJbml0aWFsaXpl
KCk7CisgICAgcmV0dXJuIER5bmFtaWNzQ29tcHJlc3Nvck5vZGU6OmNyZWF0ZSgqdGhpcywgc2Ft
cGxlUmF0ZSgpKTsKK30KKworRXhjZXB0aW9uT3I8UmVmPEFuYWx5c2VyTm9kZT4+IFdlYktpdEF1
ZGlvQ29udGV4dDo6Y3JlYXRlQW5hbHlzZXIoKQoreworICAgIEFMV0FZU19MT0coTE9HSURFTlRJ
RklFUik7CisKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAgIGlmIChtX2lzU3RvcFNj
aGVkdWxlZCkKKyAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IEludmFsaWRTdGF0ZUVycm9yIH07
CisKKyAgICBsYXp5SW5pdGlhbGl6ZSgpOworICAgIHJldHVybiBBbmFseXNlck5vZGU6OmNyZWF0
ZSgqdGhpcywgc2FtcGxlUmF0ZSgpKTsKK30KKworRXhjZXB0aW9uT3I8UmVmPEdhaW5Ob2RlPj4g
V2ViS2l0QXVkaW9Db250ZXh0OjpjcmVhdGVHYWluKCkKK3sKKyAgICBBTFdBWVNfTE9HKExPR0lE
RU5USUZJRVIpOworCisgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKyAgICBpZiAobV9pc1N0
b3BTY2hlZHVsZWQpCisgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBJbnZhbGlkU3RhdGVFcnJv
ciB9OworCisgICAgbGF6eUluaXRpYWxpemUoKTsKKyAgICByZXR1cm4gR2Fpbk5vZGU6OmNyZWF0
ZSgqdGhpcywgc2FtcGxlUmF0ZSgpKTsKK30KKworRXhjZXB0aW9uT3I8UmVmPERlbGF5Tm9kZT4+
IFdlYktpdEF1ZGlvQ29udGV4dDo6Y3JlYXRlRGVsYXkoZG91YmxlIG1heERlbGF5VGltZSkKK3sK
KyAgICBBTFdBWVNfTE9HKExPR0lERU5USUZJRVIpOworCisgICAgQVNTRVJUKGlzTWFpblRocmVh
ZCgpKTsKKyAgICBpZiAobV9pc1N0b3BTY2hlZHVsZWQpCisgICAgICAgIHJldHVybiBFeGNlcHRp
b24geyBJbnZhbGlkU3RhdGVFcnJvciB9OworCisgICAgbGF6eUluaXRpYWxpemUoKTsKKyAgICBy
ZXR1cm4gRGVsYXlOb2RlOjpjcmVhdGUoKnRoaXMsIHNhbXBsZVJhdGUoKSwgbWF4RGVsYXlUaW1l
KTsKK30KKworRXhjZXB0aW9uT3I8UmVmPENoYW5uZWxTcGxpdHRlck5vZGU+PiBXZWJLaXRBdWRp
b0NvbnRleHQ6OmNyZWF0ZUNoYW5uZWxTcGxpdHRlcihzaXplX3QgbnVtYmVyT2ZPdXRwdXRzKQor
eworICAgIEFMV0FZU19MT0coTE9HSURFTlRJRklFUik7CisKKyAgICBBU1NFUlQoaXNNYWluVGhy
ZWFkKCkpOworICAgIGlmIChtX2lzU3RvcFNjaGVkdWxlZCkKKyAgICAgICAgcmV0dXJuIEV4Y2Vw
dGlvbiB7IEludmFsaWRTdGF0ZUVycm9yIH07CisKKyAgICBsYXp5SW5pdGlhbGl6ZSgpOworICAg
IGF1dG8gbm9kZSA9IENoYW5uZWxTcGxpdHRlck5vZGU6OmNyZWF0ZSgqdGhpcywgc2FtcGxlUmF0
ZSgpLCBudW1iZXJPZk91dHB1dHMpOworICAgIGlmICghbm9kZSkKKyAgICAgICAgcmV0dXJuIEV4
Y2VwdGlvbiB7IEluZGV4U2l6ZUVycm9yIH07CisgICAgcmV0dXJuIG5vZGUucmVsZWFzZU5vbk51
bGwoKTsKK30KKworRXhjZXB0aW9uT3I8UmVmPENoYW5uZWxNZXJnZXJOb2RlPj4gV2ViS2l0QXVk
aW9Db250ZXh0OjpjcmVhdGVDaGFubmVsTWVyZ2VyKHNpemVfdCBudW1iZXJPZklucHV0cykKK3sK
KyAgICBBTFdBWVNfTE9HKExPR0lERU5USUZJRVIpOworCisgICAgQVNTRVJUKGlzTWFpblRocmVh
ZCgpKTsKKyAgICBpZiAobV9pc1N0b3BTY2hlZHVsZWQpCisgICAgICAgIHJldHVybiBFeGNlcHRp
b24geyBJbnZhbGlkU3RhdGVFcnJvciB9OworCisgICAgbGF6eUluaXRpYWxpemUoKTsKKyAgICBh
dXRvIG5vZGUgPSBDaGFubmVsTWVyZ2VyTm9kZTo6Y3JlYXRlKCp0aGlzLCBzYW1wbGVSYXRlKCks
IG51bWJlck9mSW5wdXRzKTsKKyAgICBpZiAoIW5vZGUpCisgICAgICAgIHJldHVybiBFeGNlcHRp
b24geyBJbmRleFNpemVFcnJvciB9OworICAgIHJldHVybiBub2RlLnJlbGVhc2VOb25OdWxsKCk7
Cit9CisKK0V4Y2VwdGlvbk9yPFJlZjxPc2NpbGxhdG9yTm9kZT4+IFdlYktpdEF1ZGlvQ29udGV4
dDo6Y3JlYXRlT3NjaWxsYXRvcigpCit7CisgICAgQUxXQVlTX0xPRyhMT0dJREVOVElGSUVSKTsK
KworICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisgICAgaWYgKG1faXNTdG9wU2NoZWR1bGVk
KQorICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgSW52YWxpZFN0YXRlRXJyb3IgfTsKKworICAg
IGxhenlJbml0aWFsaXplKCk7CisKKyAgICBSZWY8T3NjaWxsYXRvck5vZGU+IG5vZGUgPSBPc2Np
bGxhdG9yTm9kZTo6Y3JlYXRlKCp0aGlzLCBzYW1wbGVSYXRlKCkpOworCisgICAgLy8gQmVjYXVz
ZSB0aGlzIGlzIGFuIEF1ZGlvU2NoZWR1bGVkU291cmNlTm9kZSwgdGhlIGNvbnRleHQga2VlcHMg
YSByZWZlcmVuY2UgdW50aWwgaXQgaGFzIGZpbmlzaGVkIHBsYXlpbmcuCisgICAgLy8gV2hlbiB0
aGlzIGhhcHBlbnMsIEF1ZGlvU2NoZWR1bGVkU291cmNlTm9kZTo6ZmluaXNoKCkgY2FsbHMgV2Vi
S2l0QXVkaW9Db250ZXh0Ojpub3RpZnlOb2RlRmluaXNoZWRQcm9jZXNzaW5nKCkuCisgICAgcmVm
Tm9kZShub2RlKTsKKworICAgIHJldHVybiBub2RlOworfQorCitFeGNlcHRpb25PcjxSZWY8UGVy
aW9kaWNXYXZlPj4gV2ViS2l0QXVkaW9Db250ZXh0OjpjcmVhdGVQZXJpb2RpY1dhdmUoRmxvYXQz
MkFycmF5JiByZWFsLCBGbG9hdDMyQXJyYXkmIGltYWdpbmFyeSkKK3sKKyAgICBBTFdBWVNfTE9H
KExPR0lERU5USUZJRVIpOworCisgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKyAgICBpZiAo
bV9pc1N0b3BTY2hlZHVsZWQpCisgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBJbnZhbGlkU3Rh
dGVFcnJvciB9OworCisgICAgaWYgKHJlYWwubGVuZ3RoKCkgIT0gaW1hZ2luYXJ5Lmxlbmd0aCgp
IHx8IChyZWFsLmxlbmd0aCgpID4gTWF4UGVyaW9kaWNXYXZlTGVuZ3RoKSB8fCAhcmVhbC5sZW5n
dGgoKSkKKyAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IEluZGV4U2l6ZUVycm9yIH07CisgICAg
bGF6eUluaXRpYWxpemUoKTsKKyAgICByZXR1cm4gUGVyaW9kaWNXYXZlOjpjcmVhdGUoc2FtcGxl
UmF0ZSgpLCByZWFsLCBpbWFnaW5hcnkpOworfQorCit2b2lkIFdlYktpdEF1ZGlvQ29udGV4dDo6
bm90aWZ5Tm9kZUZpbmlzaGVkUHJvY2Vzc2luZyhBdWRpb05vZGUqIG5vZGUpCit7CisgICAgQVNT
RVJUKGlzQXVkaW9UaHJlYWQoKSk7CisgICAgbV9maW5pc2hlZE5vZGVzLmFwcGVuZChub2RlKTsK
K30KKwordm9pZCBXZWJLaXRBdWRpb0NvbnRleHQ6OmRlcmVmRmluaXNoZWRTb3VyY2VOb2Rlcygp
Cit7CisgICAgQVNTRVJUKGlzR3JhcGhPd25lcigpKTsKKyAgICBBU1NFUlQoaXNBdWRpb1RocmVh
ZCgpIHx8IGlzQXVkaW9UaHJlYWRGaW5pc2hlZCgpKTsKKyAgICBmb3IgKGF1dG8mIG5vZGUgOiBt
X2ZpbmlzaGVkTm9kZXMpCisgICAgICAgIGRlcmVmTm9kZSgqbm9kZSk7CisKKyAgICBtX2Zpbmlz
aGVkTm9kZXMuY2xlYXIoKTsKK30KKwordm9pZCBXZWJLaXRBdWRpb0NvbnRleHQ6OnJlZk5vZGUo
QXVkaW9Ob2RlJiBub2RlKQoreworICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisgICAgQXV0
b0xvY2tlciBsb2NrZXIoKnRoaXMpOworCisgICAgbm9kZS5yZWYoQXVkaW9Ob2RlOjpSZWZUeXBl
Q29ubmVjdGlvbik7CisgICAgbV9yZWZlcmVuY2VkTm9kZXMuYXBwZW5kKCZub2RlKTsKK30KKwor
dm9pZCBXZWJLaXRBdWRpb0NvbnRleHQ6OmRlcmVmTm9kZShBdWRpb05vZGUmIG5vZGUpCit7Cisg
ICAgQVNTRVJUKGlzR3JhcGhPd25lcigpKTsKKworICAgIG5vZGUuZGVyZWYoQXVkaW9Ob2RlOjpS
ZWZUeXBlQ29ubmVjdGlvbik7CisKKyAgICBBU1NFUlQobV9yZWZlcmVuY2VkTm9kZXMuY29udGFp
bnMoJm5vZGUpKTsKKyAgICBtX3JlZmVyZW5jZWROb2Rlcy5yZW1vdmVGaXJzdCgmbm9kZSk7Cit9
CisKK3ZvaWQgV2ViS2l0QXVkaW9Db250ZXh0OjpkZXJlZlVuZmluaXNoZWRTb3VyY2VOb2Rlcygp
Cit7CisgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpICYmIGlzQXVkaW9UaHJlYWRGaW5pc2hlZCgp
KTsKKyAgICBmb3IgKGF1dG8mIG5vZGUgOiBtX3JlZmVyZW5jZWROb2RlcykKKyAgICAgICAgbm9k
ZS0+ZGVyZWYoQXVkaW9Ob2RlOjpSZWZUeXBlQ29ubmVjdGlvbik7CisKKyAgICBtX3JlZmVyZW5j
ZWROb2Rlcy5jbGVhcigpOworfQorCit2b2lkIFdlYktpdEF1ZGlvQ29udGV4dDo6bG9jayhib29s
JiBtdXN0UmVsZWFzZUxvY2spCit7CisgICAgLy8gRG9uJ3QgYWxsb3cgcmVndWxhciBsb2NrIGlu
IHJlYWwtdGltZSBhdWRpbyB0aHJlYWQuCisgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKwor
ICAgIFRocmVhZCYgdGhpc1RocmVhZCA9IFRocmVhZDo6Y3VycmVudCgpOworCisgICAgaWYgKCZ0
aGlzVGhyZWFkID09IG1fZ3JhcGhPd25lclRocmVhZCkgeworICAgICAgICAvLyBXZSBhbHJlYWR5
IGhhdmUgdGhlIGxvY2suCisgICAgICAgIG11c3RSZWxlYXNlTG9jayA9IGZhbHNlOworICAgIH0g
ZWxzZSB7CisgICAgICAgIC8vIEFjcXVpcmUgdGhlIGxvY2suCisgICAgICAgIG1fY29udGV4dEdy
YXBoTXV0ZXgubG9jaygpOworICAgICAgICBtX2dyYXBoT3duZXJUaHJlYWQgPSAmdGhpc1RocmVh
ZDsKKyAgICAgICAgbXVzdFJlbGVhc2VMb2NrID0gdHJ1ZTsKKyAgICB9Cit9CisKK2Jvb2wgV2Vi
S2l0QXVkaW9Db250ZXh0Ojp0cnlMb2NrKGJvb2wmIG11c3RSZWxlYXNlTG9jaykKK3sKKyAgICBU
aHJlYWQmIHRoaXNUaHJlYWQgPSBUaHJlYWQ6OmN1cnJlbnQoKTsKKyAgICBib29sIGlzQXVkaW9U
aHJlYWQgPSAmdGhpc1RocmVhZCA9PSBhdWRpb1RocmVhZCgpOworCisgICAgLy8gVHJ5IHRvIGNh
dGNoIGNhc2VzIG9mIHVzaW5nIHRyeSBsb2NrIG9uIG1haW4gdGhyZWFkIC0gaXQgc2hvdWxkIHVz
ZSByZWd1bGFyIGxvY2suCisgICAgQVNTRVJUKGlzQXVkaW9UaHJlYWQgfHwgaXNBdWRpb1RocmVh
ZEZpbmlzaGVkKCkpOworCisgICAgaWYgKCFpc0F1ZGlvVGhyZWFkKSB7CisgICAgICAgIC8vIElu
IHJlbGVhc2UgYnVpbGQgdHJlYXQgdHJ5TG9jaygpIGFzIGxvY2soKSAoc2luY2UgYWJvdmUgQVNT
RVJUKGlzQXVkaW9UaHJlYWQpIG5ldmVyIGZpcmVzKSAtIHRoaXMgaXMgdGhlIGJlc3Qgd2UgY2Fu
IGRvLgorICAgICAgICBsb2NrKG11c3RSZWxlYXNlTG9jayk7CisgICAgICAgIHJldHVybiB0cnVl
OworICAgIH0KKworICAgIGJvb2wgaGFzTG9jazsKKworICAgIGlmICgmdGhpc1RocmVhZCA9PSBt
X2dyYXBoT3duZXJUaHJlYWQpIHsKKyAgICAgICAgLy8gVGhyZWFkIGFscmVhZHkgaGFzIHRoZSBs
b2NrLgorICAgICAgICBoYXNMb2NrID0gdHJ1ZTsKKyAgICAgICAgbXVzdFJlbGVhc2VMb2NrID0g
ZmFsc2U7CisgICAgfSBlbHNlIHsKKyAgICAgICAgLy8gRG9uJ3QgYWxyZWFkeSBoYXZlIHRoZSBs
b2NrIC0gdHJ5IHRvIGFjcXVpcmUgaXQuCisgICAgICAgIGhhc0xvY2sgPSBtX2NvbnRleHRHcmFw
aE11dGV4LnRyeUxvY2soKTsKKworICAgICAgICBpZiAoaGFzTG9jaykKKyAgICAgICAgICAgIG1f
Z3JhcGhPd25lclRocmVhZCA9ICZ0aGlzVGhyZWFkOworCisgICAgICAgIG11c3RSZWxlYXNlTG9j
ayA9IGhhc0xvY2s7CisgICAgfQorCisgICAgcmV0dXJuIGhhc0xvY2s7Cit9CisKK3ZvaWQgV2Vi
S2l0QXVkaW9Db250ZXh0Ojp1bmxvY2soKQoreworICAgIEFTU0VSVChtX2dyYXBoT3duZXJUaHJl
YWQgPT0gJlRocmVhZDo6Y3VycmVudCgpKTsKKworICAgIG1fZ3JhcGhPd25lclRocmVhZCA9IG51
bGxwdHI7CisgICAgbV9jb250ZXh0R3JhcGhNdXRleC51bmxvY2soKTsKK30KKworYm9vbCBXZWJL
aXRBdWRpb0NvbnRleHQ6OmlzQXVkaW9UaHJlYWQoKSBjb25zdAoreworICAgIHJldHVybiBtX2F1
ZGlvVGhyZWFkID09ICZUaHJlYWQ6OmN1cnJlbnQoKTsKK30KKworYm9vbCBXZWJLaXRBdWRpb0Nv
bnRleHQ6OmlzR3JhcGhPd25lcigpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fZ3JhcGhPd25lclRo
cmVhZCA9PSAmVGhyZWFkOjpjdXJyZW50KCk7Cit9CisKK3ZvaWQgV2ViS2l0QXVkaW9Db250ZXh0
OjphZGREZWZlcnJlZEZpbmlzaERlcmVmKEF1ZGlvTm9kZSogbm9kZSkKK3sKKyAgICBBU1NFUlQo
aXNBdWRpb1RocmVhZCgpKTsKKyAgICBtX2RlZmVycmVkRmluaXNoRGVyZWZMaXN0LmFwcGVuZChu
b2RlKTsKK30KKwordm9pZCBXZWJLaXRBdWRpb0NvbnRleHQ6OmhhbmRsZVByZVJlbmRlclRhc2tz
KCkKK3sKKyAgICBBU1NFUlQoaXNBdWRpb1RocmVhZCgpKTsKKworICAgIC8vIEF0IHRoZSBiZWdp
bm5pbmcgb2YgZXZlcnkgcmVuZGVyIHF1YW50dW0sIHRyeSB0byB1cGRhdGUgdGhlIGludGVybmFs
IHJlbmRlcmluZyBncmFwaCBzdGF0ZSAoZnJvbSBtYWluIHRocmVhZCBjaGFuZ2VzKS4KKyAgICAv
LyBJdCdzIE9LIGlmIHRoZSB0cnlMb2NrKCkgZmFpbHMsIHdlJ2xsIGp1c3QgdGFrZSBzbGlnaHRs
eSBsb25nZXIgdG8gcGljayB1cCB0aGUgY2hhbmdlcy4KKyAgICBib29sIG11c3RSZWxlYXNlTG9j
azsKKyAgICBpZiAodHJ5TG9jayhtdXN0UmVsZWFzZUxvY2spKSB7CisgICAgICAgIC8vIEZpeHVw
IHRoZSBzdGF0ZSBvZiBhbnkgZGlydHkgQXVkaW9TdW1taW5nSnVuY3Rpb25zIGFuZCBBdWRpb05v
ZGVPdXRwdXRzLgorICAgICAgICBoYW5kbGVEaXJ0eUF1ZGlvU3VtbWluZ0p1bmN0aW9ucygpOwor
ICAgICAgICBoYW5kbGVEaXJ0eUF1ZGlvTm9kZU91dHB1dHMoKTsKKworICAgICAgICB1cGRhdGVB
dXRvbWF0aWNQdWxsTm9kZXMoKTsKKworICAgICAgICBpZiAobXVzdFJlbGVhc2VMb2NrKQorICAg
ICAgICAgICAgdW5sb2NrKCk7CisgICAgfQorfQorCit2b2lkIFdlYktpdEF1ZGlvQ29udGV4dDo6
aGFuZGxlUG9zdFJlbmRlclRhc2tzKCkKK3sKKyAgICBBU1NFUlQoaXNBdWRpb1RocmVhZCgpKTsK
KworICAgIC8vIE11c3QgdXNlIGEgdHJ5TG9jaygpIGhlcmUgdG9vLiBEb24ndCB3b3JyeSwgdGhl
IGxvY2sgd2lsbCB2ZXJ5IHJhcmVseSBiZSBjb250ZW5kZWQgYW5kIHRoaXMgbWV0aG9kIGlzIGNh
bGxlZCBmcmVxdWVudGx5LgorICAgIC8vIFRoZSB3b3JzdCB0aGF0IGNhbiBoYXBwZW4gaXMgdGhh
dCB0aGVyZSB3aWxsIGJlIHNvbWUgbm9kZXMgd2hpY2ggd2lsbCB0YWtlIHNsaWdodGx5IGxvbmdl
ciB0aGFuIHVzdWFsIHRvIGJlIGRlbGV0ZWQgb3IgcmVtb3ZlZAorICAgIC8vIGZyb20gdGhlIHJl
bmRlciBncmFwaCAoaW4gd2hpY2ggY2FzZSB0aGV5J2xsIHJlbmRlciBzaWxlbmNlKS4KKyAgICBi
b29sIG11c3RSZWxlYXNlTG9jazsKKyAgICBpZiAodHJ5TG9jayhtdXN0UmVsZWFzZUxvY2spKSB7
CisgICAgICAgIC8vIFRha2UgY2FyZSBvZiBmaW5pc2hpbmcgYW55IGRlcmVmcyB3aGVyZSB0aGUg
dHJ5TG9jaygpIGZhaWxlZCBwcmV2aW91c2x5LgorICAgICAgICBoYW5kbGVEZWZlcnJlZEZpbmlz
aERlcmVmcygpOworCisgICAgICAgIC8vIER5bmFtaWNhbGx5IGNsZWFuIHVwIG5vZGVzIHdoaWNo
IGFyZSBubyBsb25nZXIgbmVlZGVkLgorICAgICAgICBkZXJlZkZpbmlzaGVkU291cmNlTm9kZXMo
KTsKKworICAgICAgICAvLyBEb24ndCBkZWxldGUgaW4gdGhlIHJlYWwtdGltZSB0aHJlYWQuIExl
dCB0aGUgbWFpbiB0aHJlYWQgZG8gaXQuCisgICAgICAgIC8vIFJlZi1jb3VudGVkIG9iamVjdHMg
aGVsZCBieSBjZXJ0YWluIEF1ZGlvTm9kZXMgbWF5IG5vdCBiZSB0aHJlYWQtc2FmZS4KKyAgICAg
ICAgc2NoZWR1bGVOb2RlRGVsZXRpb24oKTsKKworICAgICAgICAvLyBGaXh1cCB0aGUgc3RhdGUg
b2YgYW55IGRpcnR5IEF1ZGlvU3VtbWluZ0p1bmN0aW9ucyBhbmQgQXVkaW9Ob2RlT3V0cHV0cy4K
KyAgICAgICAgaGFuZGxlRGlydHlBdWRpb1N1bW1pbmdKdW5jdGlvbnMoKTsKKyAgICAgICAgaGFu
ZGxlRGlydHlBdWRpb05vZGVPdXRwdXRzKCk7CisKKyAgICAgICAgdXBkYXRlQXV0b21hdGljUHVs
bE5vZGVzKCk7CisKKyAgICAgICAgaWYgKG11c3RSZWxlYXNlTG9jaykKKyAgICAgICAgICAgIHVu
bG9jaygpOworICAgIH0KK30KKwordm9pZCBXZWJLaXRBdWRpb0NvbnRleHQ6OmhhbmRsZURlZmVy
cmVkRmluaXNoRGVyZWZzKCkKK3sKKyAgICBBU1NFUlQoaXNBdWRpb1RocmVhZCgpICYmIGlzR3Jh
cGhPd25lcigpKTsKKyAgICBmb3IgKGF1dG8mIG5vZGUgOiBtX2RlZmVycmVkRmluaXNoRGVyZWZM
aXN0KQorICAgICAgICBub2RlLT5maW5pc2hEZXJlZihBdWRpb05vZGU6OlJlZlR5cGVDb25uZWN0
aW9uKTsKKworICAgIG1fZGVmZXJyZWRGaW5pc2hEZXJlZkxpc3QuY2xlYXIoKTsKK30KKwordm9p
ZCBXZWJLaXRBdWRpb0NvbnRleHQ6Om1hcmtGb3JEZWxldGlvbihBdWRpb05vZGUmIG5vZGUpCit7
CisgICAgQVNTRVJUKGlzR3JhcGhPd25lcigpKTsKKworICAgIGlmIChpc0F1ZGlvVGhyZWFkRmlu
aXNoZWQoKSkKKyAgICAgICAgbV9ub2Rlc1RvRGVsZXRlLmFwcGVuZCgmbm9kZSk7CisgICAgZWxz
ZQorICAgICAgICBtX25vZGVzTWFya2VkRm9yRGVsZXRpb24uYXBwZW5kKCZub2RlKTsKKworICAg
IC8vIFRoaXMgaXMgcHJvYmFibHkgdGhlIGJlc3QgdGltZSBmb3IgdXMgdG8gcmVtb3ZlIHRoZSBu
b2RlIGZyb20gYXV0b21hdGljIHB1bGwgbGlzdCwKKyAgICAvLyBzaW5jZSBhbGwgY29ubmVjdGlv
bnMgYXJlIGdvbmUgYW5kIHdlIGhvbGQgdGhlIGdyYXBoIGxvY2suIFRoZW4gd2hlbiBoYW5kbGVQ
b3N0UmVuZGVyVGFza3MoKQorICAgIC8vIGdldHMgYSBjaGFuY2UgdG8gc2NoZWR1bGUgdGhlIGRl
bGV0aW9uIHdvcmssIHVwZGF0ZUF1dG9tYXRpY1B1bGxOb2RlcygpIGFsc28gZ2V0cyBhIGNoYW5j
ZSB0bworICAgIC8vIG1vZGlmeSBtX3JlbmRlcmluZ0F1dG9tYXRpY1B1bGxOb2Rlcy4KKyAgICBy
ZW1vdmVBdXRvbWF0aWNQdWxsTm9kZShub2RlKTsKK30KKwordm9pZCBXZWJLaXRBdWRpb0NvbnRl
eHQ6OnNjaGVkdWxlTm9kZURlbGV0aW9uKCkKK3sKKyAgICBib29sIGlzR29vZCA9IG1faXNJbml0
aWFsaXplZCAmJiBpc0dyYXBoT3duZXIoKTsKKyAgICBBU1NFUlQoaXNHb29kKTsKKyAgICBpZiAo
IWlzR29vZCkKKyAgICAgICAgcmV0dXJuOworCisgICAgLy8gTWFrZSBzdXJlIHRvIGNhbGwgZGVs
ZXRlTWFya2VkTm9kZXMoKSBvbiBtYWluIHRocmVhZC4KKyAgICBpZiAobV9ub2Rlc01hcmtlZEZv
ckRlbGV0aW9uLnNpemUoKSAmJiAhbV9pc0RlbGV0aW9uU2NoZWR1bGVkKSB7CisgICAgICAgIG1f
bm9kZXNUb0RlbGV0ZS5hcHBlbmRWZWN0b3IobV9ub2Rlc01hcmtlZEZvckRlbGV0aW9uKTsKKyAg
ICAgICAgbV9ub2Rlc01hcmtlZEZvckRlbGV0aW9uLmNsZWFyKCk7CisKKyAgICAgICAgbV9pc0Rl
bGV0aW9uU2NoZWR1bGVkID0gdHJ1ZTsKKworICAgICAgICBjYWxsT25NYWluVGhyZWFkKFtwcm90
ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyldKCkgbXV0YWJsZSB7CisgICAgICAgICAgICBwcm90
ZWN0ZWRUaGlzLT5kZWxldGVNYXJrZWROb2RlcygpOworICAgICAgICB9KTsKKyAgICB9Cit9CisK
K3ZvaWQgV2ViS2l0QXVkaW9Db250ZXh0OjpkZWxldGVNYXJrZWROb2RlcygpCit7CisgICAgQVNT
RVJUKGlzTWFpblRocmVhZCgpKTsKKworICAgIC8vIFByb3RlY3QgdGhpcyBvYmplY3QgZnJvbSBi
ZWluZyBkZWxldGVkIGJlZm9yZSB3ZSByZWxlYXNlIHRoZSBtdXRleCBsb2NrZWQgYnkgQXV0b0xv
Y2tlci4KKyAgICBSZWY8V2ViS2l0QXVkaW9Db250ZXh0PiBwcm90ZWN0ZWRUaGlzKCp0aGlzKTsK
KyAgICB7CisgICAgICAgIEF1dG9Mb2NrZXIgbG9ja2VyKCp0aGlzKTsKKworICAgICAgICB3aGls
ZSAobV9ub2Rlc1RvRGVsZXRlLnNpemUoKSkgeworICAgICAgICAgICAgQXVkaW9Ob2RlKiBub2Rl
ID0gbV9ub2Rlc1RvRGVsZXRlLnRha2VMYXN0KCk7CisKKyAgICAgICAgICAgIC8vIEJlZm9yZSBk
ZWxldGluZyB0aGUgbm9kZSwgY2xlYXIgb3V0IGFueSBBdWRpb05vZGVJbnB1dHMgZnJvbSBtX2Rp
cnR5U3VtbWluZ0p1bmN0aW9ucy4KKyAgICAgICAgICAgIHVuc2lnbmVkIG51bWJlck9mSW5wdXRz
ID0gbm9kZS0+bnVtYmVyT2ZJbnB1dHMoKTsKKyAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9
IDA7IGkgPCBudW1iZXJPZklucHV0czsgKytpKQorICAgICAgICAgICAgICAgIG1fZGlydHlTdW1t
aW5nSnVuY3Rpb25zLnJlbW92ZShub2RlLT5pbnB1dChpKSk7CisKKyAgICAgICAgICAgIC8vIEJl
Zm9yZSBkZWxldGluZyB0aGUgbm9kZSwgY2xlYXIgb3V0IGFueSBBdWRpb05vZGVPdXRwdXRzIGZy
b20gbV9kaXJ0eUF1ZGlvTm9kZU91dHB1dHMuCisgICAgICAgICAgICB1bnNpZ25lZCBudW1iZXJP
Zk91dHB1dHMgPSBub2RlLT5udW1iZXJPZk91dHB1dHMoKTsKKyAgICAgICAgICAgIGZvciAodW5z
aWduZWQgaSA9IDA7IGkgPCBudW1iZXJPZk91dHB1dHM7ICsraSkKKyAgICAgICAgICAgICAgICBt
X2RpcnR5QXVkaW9Ob2RlT3V0cHV0cy5yZW1vdmUobm9kZS0+b3V0cHV0KGkpKTsKKworICAgICAg
ICAgICAgLy8gRmluYWxseSwgZGVsZXRlIGl0LgorICAgICAgICAgICAgZGVsZXRlIG5vZGU7Cisg
ICAgICAgIH0KKyAgICAgICAgbV9pc0RlbGV0aW9uU2NoZWR1bGVkID0gZmFsc2U7CisgICAgfQor
fQorCit2b2lkIFdlYktpdEF1ZGlvQ29udGV4dDo6bWFya1N1bW1pbmdKdW5jdGlvbkRpcnR5KEF1
ZGlvU3VtbWluZ0p1bmN0aW9uKiBzdW1taW5nSnVuY3Rpb24pCit7CisgICAgQVNTRVJUKGlzR3Jh
cGhPd25lcigpKTsKKyAgICBtX2RpcnR5U3VtbWluZ0p1bmN0aW9ucy5hZGQoc3VtbWluZ0p1bmN0
aW9uKTsKK30KKwordm9pZCBXZWJLaXRBdWRpb0NvbnRleHQ6OnJlbW92ZU1hcmtlZFN1bW1pbmdK
dW5jdGlvbihBdWRpb1N1bW1pbmdKdW5jdGlvbiogc3VtbWluZ0p1bmN0aW9uKQoreworICAgIEFT
U0VSVChpc01haW5UaHJlYWQoKSk7CisgICAgQXV0b0xvY2tlciBsb2NrZXIoKnRoaXMpOworICAg
IG1fZGlydHlTdW1taW5nSnVuY3Rpb25zLnJlbW92ZShzdW1taW5nSnVuY3Rpb24pOworfQorCitF
dmVudFRhcmdldEludGVyZmFjZSBXZWJLaXRBdWRpb0NvbnRleHQ6OmV2ZW50VGFyZ2V0SW50ZXJm
YWNlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gV2ViS2l0QXVkaW9Db250ZXh0RXZlbnRUYXJnZXRJ
bnRlcmZhY2VUeXBlOworfQorCit2b2lkIFdlYktpdEF1ZGlvQ29udGV4dDo6bWFya0F1ZGlvTm9k
ZU91dHB1dERpcnR5KEF1ZGlvTm9kZU91dHB1dCogb3V0cHV0KQoreworICAgIEFTU0VSVChpc0dy
YXBoT3duZXIoKSk7CisgICAgbV9kaXJ0eUF1ZGlvTm9kZU91dHB1dHMuYWRkKG91dHB1dCk7Cit9
CisKK3ZvaWQgV2ViS2l0QXVkaW9Db250ZXh0OjpoYW5kbGVEaXJ0eUF1ZGlvU3VtbWluZ0p1bmN0
aW9ucygpCit7CisgICAgQVNTRVJUKGlzR3JhcGhPd25lcigpKTsKKworICAgIGZvciAoYXV0byYg
anVuY3Rpb24gOiBtX2RpcnR5U3VtbWluZ0p1bmN0aW9ucykKKyAgICAgICAganVuY3Rpb24tPnVw
ZGF0ZVJlbmRlcmluZ1N0YXRlKCk7CisKKyAgICBtX2RpcnR5U3VtbWluZ0p1bmN0aW9ucy5jbGVh
cigpOworfQorCit2b2lkIFdlYktpdEF1ZGlvQ29udGV4dDo6aGFuZGxlRGlydHlBdWRpb05vZGVP
dXRwdXRzKCkKK3sKKyAgICBBU1NFUlQoaXNHcmFwaE93bmVyKCkpOworCisgICAgZm9yIChhdXRv
JiBvdXRwdXQgOiBtX2RpcnR5QXVkaW9Ob2RlT3V0cHV0cykKKyAgICAgICAgb3V0cHV0LT51cGRh
dGVSZW5kZXJpbmdTdGF0ZSgpOworCisgICAgbV9kaXJ0eUF1ZGlvTm9kZU91dHB1dHMuY2xlYXIo
KTsKK30KKwordm9pZCBXZWJLaXRBdWRpb0NvbnRleHQ6OmFkZEF1dG9tYXRpY1B1bGxOb2RlKEF1
ZGlvTm9kZSYgbm9kZSkKK3sKKyAgICBBU1NFUlQoaXNHcmFwaE93bmVyKCkpOworCisgICAgaWYg
KG1fYXV0b21hdGljUHVsbE5vZGVzLmFkZCgmbm9kZSkuaXNOZXdFbnRyeSkKKyAgICAgICAgbV9h
dXRvbWF0aWNQdWxsTm9kZXNOZWVkVXBkYXRpbmcgPSB0cnVlOworfQorCit2b2lkIFdlYktpdEF1
ZGlvQ29udGV4dDo6cmVtb3ZlQXV0b21hdGljUHVsbE5vZGUoQXVkaW9Ob2RlJiBub2RlKQorewor
ICAgIEFTU0VSVChpc0dyYXBoT3duZXIoKSk7CisKKyAgICBpZiAobV9hdXRvbWF0aWNQdWxsTm9k
ZXMucmVtb3ZlKCZub2RlKSkKKyAgICAgICAgbV9hdXRvbWF0aWNQdWxsTm9kZXNOZWVkVXBkYXRp
bmcgPSB0cnVlOworfQorCit2b2lkIFdlYktpdEF1ZGlvQ29udGV4dDo6dXBkYXRlQXV0b21hdGlj
UHVsbE5vZGVzKCkKK3sKKyAgICBBU1NFUlQoaXNHcmFwaE93bmVyKCkpOworCisgICAgaWYgKG1f
YXV0b21hdGljUHVsbE5vZGVzTmVlZFVwZGF0aW5nKSB7CisgICAgICAgIC8vIENvcHkgZnJvbSBt
X2F1dG9tYXRpY1B1bGxOb2RlcyB0byBtX3JlbmRlcmluZ0F1dG9tYXRpY1B1bGxOb2Rlcy4KKyAg
ICAgICAgbV9yZW5kZXJpbmdBdXRvbWF0aWNQdWxsTm9kZXMucmVzaXplKG1fYXV0b21hdGljUHVs
bE5vZGVzLnNpemUoKSk7CisKKyAgICAgICAgdW5zaWduZWQgaSA9IDA7CisgICAgICAgIGZvciAo
YXV0byYgb3V0cHV0IDogbV9hdXRvbWF0aWNQdWxsTm9kZXMpCisgICAgICAgICAgICBtX3JlbmRl
cmluZ0F1dG9tYXRpY1B1bGxOb2Rlc1tpKytdID0gb3V0cHV0OworCisgICAgICAgIG1fYXV0b21h
dGljUHVsbE5vZGVzTmVlZFVwZGF0aW5nID0gZmFsc2U7CisgICAgfQorfQorCit2b2lkIFdlYktp
dEF1ZGlvQ29udGV4dDo6cHJvY2Vzc0F1dG9tYXRpY1B1bGxOb2RlcyhzaXplX3QgZnJhbWVzVG9Q
cm9jZXNzKQoreworICAgIEFTU0VSVChpc0F1ZGlvVGhyZWFkKCkpOworCisgICAgZm9yIChhdXRv
JiBub2RlIDogbV9yZW5kZXJpbmdBdXRvbWF0aWNQdWxsTm9kZXMpCisgICAgICAgIG5vZGUtPnBy
b2Nlc3NJZk5lY2Vzc2FyeShmcmFtZXNUb1Byb2Nlc3MpOworfQorCit2b2lkIFdlYktpdEF1ZGlv
Q29udGV4dDo6bm9kZVdpbGxCZWdpblBsYXliYWNrKCkKK3sKKyAgICAvLyBDYWxsZWQgYnkgc2No
ZWR1bGVkIEF1ZGlvTm9kZXMgd2hlbiBjbGllbnRzIHNjaGVkdWxlIHRoZWlyIHN0YXJ0IHRpbWVz
LgorICAgIC8vIFByaW9yIHRvIHRoZSBpbnRyb2R1Y3Rpb24gb2Ygc3VzcGVuZCgpLCByZXN1bWUo
KSwgYW5kIHN0b3AoKSwgc3RhcnRpbmcKKyAgICAvLyBhIHNjaGVkdWxlZCBBdWRpb05vZGUgd291
bGQgcmVtb3ZlIHRoZSB1c2VyLWdlc3R1cmUgcmVzdHJpY3Rpb24sIGlmIHByZXNlbnQsCisgICAg
Ly8gYW5kIHdvdWxkIHRodXMgdW5tdXRlIHRoZSBjb250ZXh0LiBOb3cgdGhhdCBBdWRpb0NvbnRl
eHQgc3RheXMgaW4gdGhlCisgICAgLy8gInN1c3BlbmRlZCIgc3RhdGUgaWYgYSB1c2VyLWdlc3R1
cmUgcmVzdHJpY3Rpb24gaXMgcHJlc2VudCwgc3RhcnRpbmcgYQorICAgIC8vIHNjaGVkdWxlIEF1
ZGlvTm9kZSBzaG91bGQgc2V0IHRoZSBzdGF0ZSB0byAicnVubmluZyIsIGJ1dCBvbmx5IGlmIHRo
ZQorICAgIC8vIHVzZXItZ2VzdHVyZSByZXN0cmljdGlvbiBpcyBzZXQuCisgICAgaWYgKHVzZXJH
ZXN0dXJlUmVxdWlyZWRGb3JBdWRpb1N0YXJ0KCkpCisgICAgICAgIHN0YXJ0UmVuZGVyaW5nKCk7
Cit9CisKK3N0YXRpYyBib29sIHNob3VsZERvY3VtZW50QWxsb3dXZWJBdWRpb1RvQXV0b1BsYXko
Y29uc3QgRG9jdW1lbnQmIGRvY3VtZW50KQoreworICAgIGlmIChkb2N1bWVudC5wcm9jZXNzaW5n
VXNlckdlc3R1cmVGb3JNZWRpYSgpIHx8IGRvY3VtZW50LmlzQ2FwdHVyaW5nKCkpCisgICAgICAg
IHJldHVybiB0cnVlOworICAgIHJldHVybiBkb2N1bWVudC5xdWlya3MoKS5zaG91bGRBdXRvcGxh
eVdlYkF1ZGlvRm9yQXJiaXRyYXJ5VXNlckdlc3R1cmUoKSAmJiBkb2N1bWVudC50b3BEb2N1bWVu
dCgpLmhhc0hhZFVzZXJJbnRlcmFjdGlvbigpOworfQorCitib29sIFdlYktpdEF1ZGlvQ29udGV4
dDo6d2lsbEJlZ2luUGxheWJhY2soKQoreworICAgIGF1dG8qIGRvY3VtZW50ID0gdGhpcy0+ZG9j
dW1lbnQoKTsKKyAgICBpZiAoIWRvY3VtZW50KQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAg
ICBpZiAodXNlckdlc3R1cmVSZXF1aXJlZEZvckF1ZGlvU3RhcnQoKSkgeworICAgICAgICBpZiAo
IXNob3VsZERvY3VtZW50QWxsb3dXZWJBdWRpb1RvQXV0b1BsYXkoKmRvY3VtZW50KSkgeworICAg
ICAgICAgICAgQUxXQVlTX0xPRyhMT0dJREVOVElGSUVSLCAicmV0dXJuaW5nIGZhbHNlLCBub3Qg
cHJvY2Vzc2luZyB1c2VyIGdlc3R1cmUgb3IgY2FwdHVyaW5nIik7CisgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CisgICAgICAgIH0KKyAgICAgICAgcmVtb3ZlQmVoYXZpb3JSZXN0cmljdGlvbihX
ZWJLaXRBdWRpb0NvbnRleHQ6OlJlcXVpcmVVc2VyR2VzdHVyZUZvckF1ZGlvU3RhcnRSZXN0cmlj
dGlvbik7CisgICAgfQorCisgICAgaWYgKHBhZ2VDb25zZW50UmVxdWlyZWRGb3JBdWRpb1N0YXJ0
KCkpIHsKKyAgICAgICAgYXV0byogcGFnZSA9IGRvY3VtZW50LT5wYWdlKCk7CisgICAgICAgIGlm
IChwYWdlICYmICFwYWdlLT5jYW5TdGFydE1lZGlhKCkpIHsKKyAgICAgICAgICAgIGRvY3VtZW50
LT5hZGRNZWRpYUNhblN0YXJ0TGlzdGVuZXIoKnRoaXMpOworICAgICAgICAgICAgQUxXQVlTX0xP
RyhMT0dJREVOVElGSUVSLCAicmV0dXJuaW5nIGZhbHNlLCBwYWdlIGRvZXNuJ3QgYWxsb3cgbWVk
aWEgdG8gc3RhcnQiKTsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorICAg
ICAgICByZW1vdmVCZWhhdmlvclJlc3RyaWN0aW9uKFdlYktpdEF1ZGlvQ29udGV4dDo6UmVxdWly
ZVBhZ2VDb25zZW50Rm9yQXVkaW9TdGFydFJlc3RyaWN0aW9uKTsKKyAgICB9CisKKyAgICBhdXRv
IHdpbGxCZWdpbiA9IG1fbWVkaWFTZXNzaW9uLT5jbGllbnRXaWxsQmVnaW5QbGF5YmFjaygpOwor
ICAgIEFMV0FZU19MT0coTE9HSURFTlRJRklFUiwgInJldHVybmluZyAiLCB3aWxsQmVnaW4pOwor
CisgICAgcmV0dXJuIHdpbGxCZWdpbjsKK30KKworYm9vbCBXZWJLaXRBdWRpb0NvbnRleHQ6Ondp
bGxQYXVzZVBsYXliYWNrKCkKK3sKKyAgICBhdXRvKiBkb2N1bWVudCA9IHRoaXMtPmRvY3VtZW50
KCk7CisgICAgaWYgKCFkb2N1bWVudCkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgaWYg
KHVzZXJHZXN0dXJlUmVxdWlyZWRGb3JBdWRpb1N0YXJ0KCkpIHsKKyAgICAgICAgaWYgKCFkb2N1
bWVudC0+cHJvY2Vzc2luZ1VzZXJHZXN0dXJlRm9yTWVkaWEoKSkKKyAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKKyAgICAgICAgcmVtb3ZlQmVoYXZpb3JSZXN0cmljdGlvbihXZWJLaXRBdWRpb0Nv
bnRleHQ6OlJlcXVpcmVVc2VyR2VzdHVyZUZvckF1ZGlvU3RhcnRSZXN0cmljdGlvbik7CisgICAg
fQorCisgICAgaWYgKHBhZ2VDb25zZW50UmVxdWlyZWRGb3JBdWRpb1N0YXJ0KCkpIHsKKyAgICAg
ICAgYXV0byogcGFnZSA9IGRvY3VtZW50LT5wYWdlKCk7CisgICAgICAgIGlmIChwYWdlICYmICFw
YWdlLT5jYW5TdGFydE1lZGlhKCkpIHsKKyAgICAgICAgICAgIGRvY3VtZW50LT5hZGRNZWRpYUNh
blN0YXJ0TGlzdGVuZXIoKnRoaXMpOworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAg
ICB9CisgICAgICAgIHJlbW92ZUJlaGF2aW9yUmVzdHJpY3Rpb24oV2ViS2l0QXVkaW9Db250ZXh0
OjpSZXF1aXJlUGFnZUNvbnNlbnRGb3JBdWRpb1N0YXJ0UmVzdHJpY3Rpb24pOworICAgIH0KKwor
ICAgIHJldHVybiBtX21lZGlhU2Vzc2lvbi0+Y2xpZW50V2lsbFBhdXNlUGxheWJhY2soKTsKK30K
Kwordm9pZCBXZWJLaXRBdWRpb0NvbnRleHQ6OnN0YXJ0UmVuZGVyaW5nKCkKK3sKKyAgICBBTFdB
WVNfTE9HKExPR0lERU5USUZJRVIpOworICAgIGlmIChtX2lzU3RvcFNjaGVkdWxlZCB8fCAhd2ls
bEJlZ2luUGxheWJhY2soKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgbWFrZVBlbmRpbmdBY3Rp
dml0eSgpOworCisgICAgZGVzdGluYXRpb24oKS0+c3RhcnRSZW5kZXJpbmcoKTsKKyAgICBzZXRT
dGF0ZShTdGF0ZTo6UnVubmluZyk7Cit9CisKK3ZvaWQgV2ViS2l0QXVkaW9Db250ZXh0OjptZWRp
YUNhblN0YXJ0KERvY3VtZW50JiBkb2N1bWVudCkKK3sKKyAgICBBU1NFUlRfVU5VU0VEKGRvY3Vt
ZW50LCAmZG9jdW1lbnQgPT0gdGhpcy0+ZG9jdW1lbnQoKSk7CisgICAgcmVtb3ZlQmVoYXZpb3JS
ZXN0cmljdGlvbihXZWJLaXRBdWRpb0NvbnRleHQ6OlJlcXVpcmVQYWdlQ29uc2VudEZvckF1ZGlv
U3RhcnRSZXN0cmljdGlvbik7CisgICAgbWF5UmVzdW1lUGxheWJhY2sodHJ1ZSk7Cit9CisKK01l
ZGlhUHJvZHVjZXI6Ok1lZGlhU3RhdGVGbGFncyBXZWJLaXRBdWRpb0NvbnRleHQ6Om1lZGlhU3Rh
dGUoKSBjb25zdAoreworICAgIGlmICghbV9pc1N0b3BTY2hlZHVsZWQgJiYgbV9kZXN0aW5hdGlv
bk5vZGUgJiYgbV9kZXN0aW5hdGlvbk5vZGUtPmlzUGxheWluZ0F1ZGlvKCkpCisgICAgICAgIHJl
dHVybiBNZWRpYVByb2R1Y2VyOjpJc1BsYXlpbmdBdWRpbzsKKworICAgIHJldHVybiBNZWRpYVBy
b2R1Y2VyOjpJc05vdFBsYXlpbmc7Cit9CisKK3ZvaWQgV2ViS2l0QXVkaW9Db250ZXh0OjpwYWdl
TXV0ZWRTdGF0ZURpZENoYW5nZSgpCit7CisgICAgaWYgKG1fZGVzdGluYXRpb25Ob2RlICYmIGRv
Y3VtZW50KCkgJiYgZG9jdW1lbnQoKS0+cGFnZSgpKQorICAgICAgICBtX2Rlc3RpbmF0aW9uTm9k
ZS0+c2V0TXV0ZWQoZG9jdW1lbnQoKS0+cGFnZSgpLT5pc0F1ZGlvTXV0ZWQoKSk7Cit9CisKK3Zv
aWQgV2ViS2l0QXVkaW9Db250ZXh0Ojppc1BsYXlpbmdBdWRpb0RpZENoYW5nZSgpCit7CisgICAg
Ly8gTWFrZSBzdXJlIHRvIGNhbGwgRG9jdW1lbnQ6OnVwZGF0ZUlzUGxheWluZ01lZGlhKCkgb24g
dGhlIG1haW4gdGhyZWFkLCBzaW5jZQorICAgIC8vIHdlIGNvdWxkIGJlIG9uIHRoZSBhdWRpbyBJ
L08gdGhyZWFkIGhlcmUgYW5kIHRoZSBjYWxsIGludG8gV2ViQ29yZSBjb3VsZCBibG9jay4KKyAg
ICBjYWxsT25NYWluVGhyZWFkKFtwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyldIHsKKyAg
ICAgICAgaWYgKHByb3RlY3RlZFRoaXMtPmRvY3VtZW50KCkpCisgICAgICAgICAgICBwcm90ZWN0
ZWRUaGlzLT5kb2N1bWVudCgpLT51cGRhdGVJc1BsYXlpbmdNZWRpYSgpOworICAgIH0pOworfQor
Cit2b2lkIFdlYktpdEF1ZGlvQ29udGV4dDo6ZmluaXNoZWRSZW5kZXJpbmcoYm9vbCBkaWRSZW5k
ZXJpbmcpCit7CisgICAgQVNTRVJUKGlzT2ZmbGluZUNvbnRleHQoKSk7CisgICAgQVNTRVJUKGlz
TWFpblRocmVhZCgpKTsKKyAgICBpZiAoIWlzTWFpblRocmVhZCgpKQorICAgICAgICByZXR1cm47
CisKKyAgICBhdXRvIGNsZWFyUGVuZGluZ0FjdGl2aXR5SWZFeGl0RWFybHkgPSBXVEY6Om1ha2VT
Y29wZUV4aXQoW3RoaXNdIHsKKyAgICAgICAgY2xlYXJQZW5kaW5nQWN0aXZpdHkoKTsKKyAgICB9
KTsKKworCisgICAgQUxXQVlTX0xPRyhMT0dJREVOVElGSUVSKTsKKworICAgIGlmICghZGlkUmVu
ZGVyaW5nKQorICAgICAgICByZXR1cm47CisKKyAgICBBdWRpb0J1ZmZlciogcmVuZGVyZWRCdWZm
ZXIgPSBtX3JlbmRlclRhcmdldC5nZXQoKTsKKyAgICBzZXRTdGF0ZShTdGF0ZTo6Q2xvc2VkKTsK
KworICAgIEFTU0VSVChyZW5kZXJlZEJ1ZmZlcik7CisgICAgaWYgKCFyZW5kZXJlZEJ1ZmZlcikK
KyAgICAgICAgcmV0dXJuOworCisgICAgLy8gQXZvaWQgZmlyaW5nIHRoZSBldmVudCBpZiB0aGUg
ZG9jdW1lbnQgaGFzIGFscmVhZHkgZ29uZSBhd2F5LgorICAgIGlmIChtX2lzU3RvcFNjaGVkdWxl
ZCkKKyAgICAgICAgcmV0dXJuOworCisgICAgY2xlYXJQZW5kaW5nQWN0aXZpdHlJZkV4aXRFYXJs
eS5yZWxlYXNlKCk7CisgICAgbV9ldmVudFF1ZXVlLT5lbnF1ZXVlRXZlbnQoT2ZmbGluZUF1ZGlv
Q29tcGxldGlvbkV2ZW50OjpjcmVhdGUocmVuZGVyZWRCdWZmZXIpKTsKK30KKwordm9pZCBXZWJL
aXRBdWRpb0NvbnRleHQ6OmRpc3BhdGNoRXZlbnQoRXZlbnQmIGV2ZW50KQoreworICAgIEV2ZW50
VGFyZ2V0OjpkaXNwYXRjaEV2ZW50KGV2ZW50KTsKKyAgICBpZiAoZXZlbnQuZXZlbnRJbnRlcmZh
Y2UoKSA9PSBPZmZsaW5lQXVkaW9Db21wbGV0aW9uRXZlbnRJbnRlcmZhY2VUeXBlKQorICAgICAg
ICBjbGVhclBlbmRpbmdBY3Rpdml0eSgpOworfQorCit2b2lkIFdlYktpdEF1ZGlvQ29udGV4dDo6
aW5jcmVtZW50QWN0aXZlU291cmNlQ291bnQoKQoreworICAgICsrbV9hY3RpdmVTb3VyY2VDb3Vu
dDsKK30KKwordm9pZCBXZWJLaXRBdWRpb0NvbnRleHQ6OmRlY3JlbWVudEFjdGl2ZVNvdXJjZUNv
dW50KCkKK3sKKyAgICAtLW1fYWN0aXZlU291cmNlQ291bnQ7Cit9CisKK3ZvaWQgV2ViS2l0QXVk
aW9Db250ZXh0OjpzdXNwZW5kUmVuZGVyaW5nKERPTVByb21pc2VEZWZlcnJlZDx2b2lkPiYmIHBy
b21pc2UpCit7CisgICAgaWYgKGlzT2ZmbGluZUNvbnRleHQoKSB8fCBtX2lzU3RvcFNjaGVkdWxl
ZCkgeworICAgICAgICBwcm9taXNlLnJlamVjdChJbnZhbGlkU3RhdGVFcnJvcik7CisgICAgICAg
IHJldHVybjsKKyAgICB9CisKKyAgICBpZiAobV9zdGF0ZSA9PSBTdGF0ZTo6U3VzcGVuZGVkKSB7
CisgICAgICAgIHByb21pc2UucmVzb2x2ZSgpOworICAgICAgICByZXR1cm47CisgICAgfQorCisg
ICAgaWYgKG1fc3RhdGUgPT0gU3RhdGU6OkNsb3NlZCB8fCBtX3N0YXRlID09IFN0YXRlOjpJbnRl
cnJ1cHRlZCB8fCAhbV9kZXN0aW5hdGlvbk5vZGUpIHsKKyAgICAgICAgcHJvbWlzZS5yZWplY3Qo
KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGFkZFJlYWN0aW9uKFN0YXRlOjpTdXNw
ZW5kZWQsIFdURk1vdmUocHJvbWlzZSkpOworCisgICAgaWYgKCF3aWxsUGF1c2VQbGF5YmFjaygp
KQorICAgICAgICByZXR1cm47CisKKyAgICBsYXp5SW5pdGlhbGl6ZSgpOworCisgICAgbV9kZXN0
aW5hdGlvbk5vZGUtPnN1c3BlbmQoW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlz
KV0geworICAgICAgICBzZXRTdGF0ZShTdGF0ZTo6U3VzcGVuZGVkKTsKKyAgICB9KTsKK30KKwor
dm9pZCBXZWJLaXRBdWRpb0NvbnRleHQ6OnJlc3VtZVJlbmRlcmluZyhET01Qcm9taXNlRGVmZXJy
ZWQ8dm9pZD4mJiBwcm9taXNlKQoreworICAgIGlmIChpc09mZmxpbmVDb250ZXh0KCkgfHwgbV9p
c1N0b3BTY2hlZHVsZWQpIHsKKyAgICAgICAgcHJvbWlzZS5yZWplY3QoSW52YWxpZFN0YXRlRXJy
b3IpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgaWYgKG1fc3RhdGUgPT0gU3RhdGU6
OlJ1bm5pbmcpIHsKKyAgICAgICAgcHJvbWlzZS5yZXNvbHZlKCk7CisgICAgICAgIHJldHVybjsK
KyAgICB9CisKKyAgICBpZiAobV9zdGF0ZSA9PSBTdGF0ZTo6Q2xvc2VkIHx8ICFtX2Rlc3RpbmF0
aW9uTm9kZSkgeworICAgICAgICBwcm9taXNlLnJlamVjdCgpOworICAgICAgICByZXR1cm47Cisg
ICAgfQorCisgICAgYWRkUmVhY3Rpb24oU3RhdGU6OlJ1bm5pbmcsIFdURk1vdmUocHJvbWlzZSkp
OworCisgICAgaWYgKCF3aWxsQmVnaW5QbGF5YmFjaygpKQorICAgICAgICByZXR1cm47CisKKyAg
ICBsYXp5SW5pdGlhbGl6ZSgpOworCisgICAgbV9kZXN0aW5hdGlvbk5vZGUtPnJlc3VtZShbdGhp
cywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpXSB7CisgICAgICAgIHNldFN0YXRlKFN0
YXRlOjpSdW5uaW5nKTsKKyAgICB9KTsKK30KKwordm9pZCBXZWJLaXRBdWRpb0NvbnRleHQ6OmNs
b3NlKERPTVByb21pc2VEZWZlcnJlZDx2b2lkPiYmIHByb21pc2UpCit7CisgICAgaWYgKGlzT2Zm
bGluZUNvbnRleHQoKSB8fCBtX2lzU3RvcFNjaGVkdWxlZCkgeworICAgICAgICBwcm9taXNlLnJl
amVjdChJbnZhbGlkU3RhdGVFcnJvcik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBp
ZiAobV9zdGF0ZSA9PSBTdGF0ZTo6Q2xvc2VkIHx8ICFtX2Rlc3RpbmF0aW9uTm9kZSkgeworICAg
ICAgICBwcm9taXNlLnJlc29sdmUoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGFk
ZFJlYWN0aW9uKFN0YXRlOjpDbG9zZWQsIFdURk1vdmUocHJvbWlzZSkpOworCisgICAgbGF6eUlu
aXRpYWxpemUoKTsKKworICAgIG1fZGVzdGluYXRpb25Ob2RlLT5jbG9zZShbdGhpcywgcHJvdGVj
dGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpXSB7CisgICAgICAgIHNldFN0YXRlKFN0YXRlOjpDbG9z
ZWQpOworICAgICAgICB1bmluaXRpYWxpemUoKTsKKyAgICB9KTsKK30KKworCit2b2lkIFdlYktp
dEF1ZGlvQ29udGV4dDo6c3VzcGVuZFBsYXliYWNrKCkKK3sKKyAgICBpZiAoIW1fZGVzdGluYXRp
b25Ob2RlIHx8IG1fc3RhdGUgPT0gU3RhdGU6OkNsb3NlZCkKKyAgICAgICAgcmV0dXJuOworCisg
ICAgaWYgKG1fc3RhdGUgPT0gU3RhdGU6OlN1c3BlbmRlZCkgeworICAgICAgICBpZiAobV9tZWRp
YVNlc3Npb24tPnN0YXRlKCkgPT0gUGxhdGZvcm1NZWRpYVNlc3Npb246OkludGVycnVwdGVkKQor
ICAgICAgICAgICAgc2V0U3RhdGUoU3RhdGU6OkludGVycnVwdGVkKTsKKyAgICAgICAgcmV0dXJu
OworICAgIH0KKworICAgIGxhenlJbml0aWFsaXplKCk7CisKKyAgICBtX2Rlc3RpbmF0aW9uTm9k
ZS0+c3VzcGVuZChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpXSB7CisgICAg
ICAgIGJvb2wgaW50ZXJydXB0ZWQgPSBtX21lZGlhU2Vzc2lvbi0+c3RhdGUoKSA9PSBQbGF0Zm9y
bU1lZGlhU2Vzc2lvbjo6SW50ZXJydXB0ZWQ7CisgICAgICAgIHNldFN0YXRlKGludGVycnVwdGVk
ID8gU3RhdGU6OkludGVycnVwdGVkIDogU3RhdGU6OlN1c3BlbmRlZCk7CisgICAgfSk7Cit9CisK
K3ZvaWQgV2ViS2l0QXVkaW9Db250ZXh0OjptYXlSZXN1bWVQbGF5YmFjayhib29sIHNob3VsZFJl
c3VtZSkKK3sKKyAgICBpZiAoIW1fZGVzdGluYXRpb25Ob2RlIHx8IG1fc3RhdGUgPT0gU3RhdGU6
OkNsb3NlZCB8fCBtX3N0YXRlID09IFN0YXRlOjpSdW5uaW5nKQorICAgICAgICByZXR1cm47CisK
KyAgICBpZiAoIXNob3VsZFJlc3VtZSkgeworICAgICAgICBzZXRTdGF0ZShTdGF0ZTo6U3VzcGVu
ZGVkKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlmICghd2lsbEJlZ2luUGxheWJh
Y2soKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgbGF6eUluaXRpYWxpemUoKTsKKworICAgIG1f
ZGVzdGluYXRpb25Ob2RlLT5yZXN1bWUoW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0
aGlzKV0geworICAgICAgICBzZXRTdGF0ZShTdGF0ZTo6UnVubmluZyk7CisgICAgfSk7Cit9CisK
K3ZvaWQgV2ViS2l0QXVkaW9Db250ZXh0Ojpwb3N0VGFzayhXVEY6OkZ1bmN0aW9uPHZvaWQoKT4m
JiB0YXNrKQoreworICAgIGlmIChtX2lzU3RvcFNjaGVkdWxlZCkKKyAgICAgICAgcmV0dXJuOwor
CisgICAgbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0LT5wb3N0VGFzayhXVEZNb3ZlKHRhc2spKTsK
K30KKworY29uc3QgU2VjdXJpdHlPcmlnaW4qIFdlYktpdEF1ZGlvQ29udGV4dDo6b3JpZ2luKCkg
Y29uc3QKK3sKKyAgICByZXR1cm4gbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0ID8gbV9zY3JpcHRF
eGVjdXRpb25Db250ZXh0LT5zZWN1cml0eU9yaWdpbigpIDogbnVsbHB0cjsKK30KKwordm9pZCBX
ZWJLaXRBdWRpb0NvbnRleHQ6OmFkZENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VTb3VyY2Ugc291cmNl
LCBNZXNzYWdlTGV2ZWwgbGV2ZWwsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKK3sKKyAgICBpZiAo
bV9zY3JpcHRFeGVjdXRpb25Db250ZXh0KQorICAgICAgICBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQtPmFkZENvbnNvbGVNZXNzYWdlKHNvdXJjZSwgbGV2ZWwsIG1lc3NhZ2UpOworfQorCit2b2lk
IFdlYktpdEF1ZGlvQ29udGV4dDo6Y2xlYXJQZW5kaW5nQWN0aXZpdHkoKQoreworICAgIGlmICgh
bV9wZW5kaW5nQWN0aXZpdHkpCisgICAgICAgIHJldHVybjsKKyAgICBtX3BlbmRpbmdBY3Rpdml0
eSA9IG51bGxwdHI7CisgICAgLy8gRklYTUU6IFJlbW92ZSB0aGlzIHNwZWNpZmljIGRlcmVmKCkg
YW5kIHJlZigpIGNhbGwgaW4gbWFrZVBlbmRpbmdBY3Rpdml0eSgpLgorICAgIGRlcmVmKCk7Cit9
CisKK3ZvaWQgV2ViS2l0QXVkaW9Db250ZXh0OjptYWtlUGVuZGluZ0FjdGl2aXR5KCkKK3sKKyAg
ICBpZiAobV9wZW5kaW5nQWN0aXZpdHkpCisgICAgICAgIHJldHVybjsKKyAgICBtX3BlbmRpbmdB
Y3Rpdml0eSA9IEFjdGl2ZURPTU9iamVjdDo6bWFrZVBlbmRpbmdBY3Rpdml0eSgqdGhpcyk7Cisg
ICAgcmVmKCk7Cit9CisKKyNpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKK1dURkxvZ0NoYW5uZWwm
IFdlYktpdEF1ZGlvQ29udGV4dDo6bG9nQ2hhbm5lbCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIExv
Z01lZGlhOworfQorI2VuZGlmCisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8v
IEVOQUJMRShXRUJfQVVESU8pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmF1ZGlvL1dlYktpdEF1ZGlvQ29udGV4dC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJh
dWRpby9XZWJLaXRBdWRpb0NvbnRleHQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40OTA1MjA1MTkyMGJjOGQ2YjM0
NDVjY2I0NTg5Yzg3YWNmNzE1NmE2Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJhdWRpby9XZWJLaXRBdWRpb0NvbnRleHQuaApAQCAtMCwwICsxLDQxNyBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICogQ29weXJpZ2h0IChDKSAyMDE2LTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAq
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04KKyAqIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUwor
ICogU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJBY3RpdmVET01PYmplY3Qu
aCIKKyNpbmNsdWRlICJBc3luY0F1ZGlvRGVjb2Rlci5oIgorI2luY2x1ZGUgIkF1ZGlvQnVzLmgi
CisjaW5jbHVkZSAiQXVkaW9Db250ZXh0LmgiCisjaW5jbHVkZSAiQXVkaW9Db250ZXh0U3RhdGUu
aCIKKyNpbmNsdWRlICJBdWRpb0Rlc3RpbmF0aW9uTm9kZS5oIgorI2luY2x1ZGUgIkV2ZW50VGFy
Z2V0LmgiCisjaW5jbHVkZSAiTWVkaWFDYW5TdGFydExpc3RlbmVyLmgiCisjaW5jbHVkZSAiTWVk
aWFQcm9kdWNlci5oIgorI2luY2x1ZGUgIlBsYXRmb3JtTWVkaWFTZXNzaW9uLmgiCisjaW5jbHVk
ZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgorI2luY2x1ZGUgIlZpc2liaWxpdHlDaGFuZ2VD
bGllbnQuaCIKKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9Db25zb2xlVHlwZXMuaD4KKyNpbmNs
dWRlIDxKYXZhU2NyaXB0Q29yZS9GbG9hdDMyQXJyYXkuaD4KKyNpbmNsdWRlIDxhdG9taWM+Cisj
aW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KKyNpbmNsdWRlIDx3dGYvTG9nZ2VySGVscGVyLmg+Cisj
aW5jbHVkZSA8d3RmL01haW5UaHJlYWQuaD4KKyNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CisjaW5j
bHVkZSA8d3RmL1RocmVhZFNhZmVSZWZDb3VudGVkLmg+CisjaW5jbHVkZSA8d3RmL1RocmVhZGlu
Zy5oPgorI2luY2x1ZGUgPHd0Zi9VbmlxdWVSZWYuaD4KKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+
CisjaW5jbHVkZSA8d3RmL3RleHQvQXRvbVN0cmluZ0hhc2guaD4KKworbmFtZXNwYWNlIFdlYkNv
cmUgeworCitjbGFzcyBBbmFseXNlck5vZGU7CitjbGFzcyBBdWRpb0J1ZmZlcjsKK2NsYXNzIEF1
ZGlvQnVmZmVyQ2FsbGJhY2s7CitjbGFzcyBBdWRpb0J1ZmZlclNvdXJjZU5vZGU7CitjbGFzcyBB
dWRpb0xpc3RlbmVyOworY2xhc3MgQXVkaW9TdW1taW5nSnVuY3Rpb247CitjbGFzcyBCaXF1YWRG
aWx0ZXJOb2RlOworY2xhc3MgQ2hhbm5lbE1lcmdlck5vZGU7CitjbGFzcyBDaGFubmVsU3BsaXR0
ZXJOb2RlOworY2xhc3MgQ29udm9sdmVyTm9kZTsKK2NsYXNzIERlbGF5Tm9kZTsKK2NsYXNzIERv
Y3VtZW50OworY2xhc3MgRHluYW1pY3NDb21wcmVzc29yTm9kZTsKK2NsYXNzIEdhaW5Ob2RlOwor
Y2xhc3MgSFRNTE1lZGlhRWxlbWVudDsKK2NsYXNzIE1haW5UaHJlYWRHZW5lcmljRXZlbnRRdWV1
ZTsKK2NsYXNzIE1lZGlhRWxlbWVudEF1ZGlvU291cmNlTm9kZTsKK2NsYXNzIE1lZGlhU3RyZWFt
OworY2xhc3MgTWVkaWFTdHJlYW1BdWRpb0Rlc3RpbmF0aW9uTm9kZTsKK2NsYXNzIE1lZGlhU3Ry
ZWFtQXVkaW9Tb3VyY2VOb2RlOworY2xhc3MgT3NjaWxsYXRvck5vZGU7CitjbGFzcyBQZXJpb2Rp
Y1dhdmU7CitjbGFzcyBTY3JpcHRQcm9jZXNzb3JOb2RlOworY2xhc3MgU2VjdXJpdHlPcmlnaW47
CitjbGFzcyBXYXZlU2hhcGVyTm9kZTsKK2NsYXNzIFdlYktpdEF1ZGlvUGFubmVyTm9kZTsKKwor
dGVtcGxhdGU8dHlwZW5hbWUgSURMVHlwZT4gY2xhc3MgRE9NUHJvbWlzZURlZmVycmVkOworCisv
LyBBdWRpb0NvbnRleHQgaXMgdGhlIGNvcm5lcnN0b25lIG9mIHRoZSB3ZWIgYXVkaW8gQVBJIGFu
ZCBhbGwgQXVkaW9Ob2RlcyBhcmUgY3JlYXRlZCBmcm9tIGl0LgorLy8gRm9yIHRocmVhZCBzYWZl
dHkgYmV0d2VlbiB0aGUgYXVkaW8gdGhyZWFkIGFuZCB0aGUgbWFpbiB0aHJlYWQsIGl0IGhhcyBh
IHJlbmRlcmluZyBncmFwaCBsb2NraW5nIG1lY2hhbmlzbS4KKworY2xhc3MgV2ViS2l0QXVkaW9D
b250ZXh0CisgICAgOiBwdWJsaWMgQXVkaW9Db250ZXh0QmFzZQorICAgICwgcHJpdmF0ZSBQbGF0
Zm9ybU1lZGlhU2Vzc2lvbkNsaWVudAorICAgICwgcHJpdmF0ZSBWaXNpYmlsaXR5Q2hhbmdlQ2xp
ZW50Cit7CisgICAgV1RGX01BS0VfSVNPX0FMTE9DQVRFRChXZWJLaXRBdWRpb0NvbnRleHQpOwor
cHVibGljOgorICAgIC8vIENyZWF0ZSBhbiBXZWJLaXRBdWRpb0NvbnRleHQgZm9yIHJlbmRlcmlu
ZyB0byB0aGUgYXVkaW8gaGFyZHdhcmUuCisgICAgc3RhdGljIEV4Y2VwdGlvbk9yPFJlZjxXZWJL
aXRBdWRpb0NvbnRleHQ+PiBjcmVhdGUoRG9jdW1lbnQmKTsKKworICAgIHZpcnR1YWwgfldlYktp
dEF1ZGlvQ29udGV4dCgpOworCisgICAgYm9vbCBpc0luaXRpYWxpemVkKCkgY29uc3QgZmluYWw7
CisKKyAgICBib29sIGlzT2ZmbGluZUNvbnRleHQoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2lz
T2ZmbGluZUNvbnRleHQ7IH0KKworICAgIERvY3VtZW50SWRlbnRpZmllciBob3N0aW5nRG9jdW1l
bnRJZGVudGlmaWVyKCkgY29uc3QgZmluYWw7CisKKyAgICBBdWRpb0Rlc3RpbmF0aW9uTm9kZSog
ZGVzdGluYXRpb24oKSB7IHJldHVybiBtX2Rlc3RpbmF0aW9uTm9kZS5nZXQoKTsgfQorICAgIHNp
emVfdCBjdXJyZW50U2FtcGxlRnJhbWUoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2Rlc3RpbmF0
aW9uTm9kZSA/IG1fZGVzdGluYXRpb25Ob2RlLT5jdXJyZW50U2FtcGxlRnJhbWUoKSA6IDA7IH0K
KyAgICBkb3VibGUgY3VycmVudFRpbWUoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2Rlc3RpbmF0
aW9uTm9kZSA/IG1fZGVzdGluYXRpb25Ob2RlLT5jdXJyZW50VGltZSgpIDogMC47IH0KKyAgICBm
bG9hdCBzYW1wbGVSYXRlKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9kZXN0aW5hdGlvbk5vZGUg
PyBtX2Rlc3RpbmF0aW9uTm9kZS0+c2FtcGxlUmF0ZSgpIDogMC5mOyB9CisgICAgdW5zaWduZWQg
bG9uZyBhY3RpdmVTb3VyY2VDb3VudCgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PHVuc2ln
bmVkIGxvbmc+KG1fYWN0aXZlU291cmNlQ291bnQpOyB9CisKKyAgICB2b2lkIGluY3JlbWVudEFj
dGl2ZVNvdXJjZUNvdW50KCkgZmluYWw7CisgICAgdm9pZCBkZWNyZW1lbnRBY3RpdmVTb3VyY2VD
b3VudCgpIGZpbmFsOworCisgICAgRXhjZXB0aW9uT3I8UmVmPEF1ZGlvQnVmZmVyPj4gY3JlYXRl
QnVmZmVyKHVuc2lnbmVkIG51bWJlck9mQ2hhbm5lbHMsIHNpemVfdCBudW1iZXJPZkZyYW1lcywg
ZmxvYXQgc2FtcGxlUmF0ZSk7CisgICAgRXhjZXB0aW9uT3I8UmVmPEF1ZGlvQnVmZmVyPj4gY3Jl
YXRlQnVmZmVyKEFycmF5QnVmZmVyJiwgYm9vbCBtaXhUb01vbm8pOworCisgICAgLy8gQXN5bmNo
cm9ub3VzIGF1ZGlvIGZpbGUgZGF0YSBkZWNvZGluZy4KKyAgICB2b2lkIGRlY29kZUF1ZGlvRGF0
YShSZWY8QXJyYXlCdWZmZXI+JiYsIFJlZlB0cjxBdWRpb0J1ZmZlckNhbGxiYWNrPiYmLCBSZWZQ
dHI8QXVkaW9CdWZmZXJDYWxsYmFjaz4mJik7CisKKyAgICBBdWRpb0xpc3RlbmVyKiBsaXN0ZW5l
cigpIHsgcmV0dXJuIG1fbGlzdGVuZXIuZ2V0KCk7IH0KKworICAgIHZvaWQgc3VzcGVuZFJlbmRl
cmluZyhET01Qcm9taXNlRGVmZXJyZWQ8dm9pZD4mJik7CisgICAgdm9pZCByZXN1bWVSZW5kZXJp
bmcoRE9NUHJvbWlzZURlZmVycmVkPHZvaWQ+JiYpOworICAgIHZvaWQgY2xvc2UoRE9NUHJvbWlz
ZURlZmVycmVkPHZvaWQ+JiYpOworCisgICAgdXNpbmcgU3RhdGUgPSBBdWRpb0NvbnRleHRTdGF0
ZTsKKyAgICBTdGF0ZSBzdGF0ZSgpIGNvbnN0OworICAgIGJvb2wgaXNDbG9zZWQoKSBjb25zdCB7
IHJldHVybiBtX3N0YXRlID09IFN0YXRlOjpDbG9zZWQ7IH0KKworICAgIGJvb2wgd291bGRUYWlu
dE9yaWdpbihjb25zdCBVUkwmKSBjb25zdDsKKworICAgIC8vIFRoZSBBdWRpb05vZGUgY3JlYXRl
IG1ldGhvZHMgYXJlIGNhbGxlZCBvbiB0aGUgbWFpbiB0aHJlYWQgKGZyb20gSmF2YVNjcmlwdCku
CisgICAgRXhjZXB0aW9uT3I8UmVmPEF1ZGlvQnVmZmVyU291cmNlTm9kZT4+IGNyZWF0ZUJ1ZmZl
clNvdXJjZSgpOworI2lmIEVOQUJMRShWSURFTykKKyAgICBFeGNlcHRpb25PcjxSZWY8TWVkaWFF
bGVtZW50QXVkaW9Tb3VyY2VOb2RlPj4gY3JlYXRlTWVkaWFFbGVtZW50U291cmNlKEhUTUxNZWRp
YUVsZW1lbnQmKTsKKyNlbmRpZgorI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCisgICAgRXhjZXB0
aW9uT3I8UmVmPE1lZGlhU3RyZWFtQXVkaW9Tb3VyY2VOb2RlPj4gY3JlYXRlTWVkaWFTdHJlYW1T
b3VyY2UoTWVkaWFTdHJlYW0mKTsKKyAgICBFeGNlcHRpb25PcjxSZWY8TWVkaWFTdHJlYW1BdWRp
b0Rlc3RpbmF0aW9uTm9kZT4+IGNyZWF0ZU1lZGlhU3RyZWFtRGVzdGluYXRpb24oKTsKKyNlbmRp
ZgorICAgIEV4Y2VwdGlvbk9yPFJlZjxHYWluTm9kZT4+IGNyZWF0ZUdhaW4oKTsKKyAgICBFeGNl
cHRpb25PcjxSZWY8QmlxdWFkRmlsdGVyTm9kZT4+IGNyZWF0ZUJpcXVhZEZpbHRlcigpOworICAg
IEV4Y2VwdGlvbk9yPFJlZjxXYXZlU2hhcGVyTm9kZT4+IGNyZWF0ZVdhdmVTaGFwZXIoKTsKKyAg
ICBFeGNlcHRpb25PcjxSZWY8RGVsYXlOb2RlPj4gY3JlYXRlRGVsYXkoZG91YmxlIG1heERlbGF5
VGltZSk7CisgICAgRXhjZXB0aW9uT3I8UmVmPFdlYktpdEF1ZGlvUGFubmVyTm9kZT4+IGNyZWF0
ZVBhbm5lcigpOworICAgIEV4Y2VwdGlvbk9yPFJlZjxDb252b2x2ZXJOb2RlPj4gY3JlYXRlQ29u
dm9sdmVyKCk7CisgICAgRXhjZXB0aW9uT3I8UmVmPER5bmFtaWNzQ29tcHJlc3Nvck5vZGU+PiBj
cmVhdGVEeW5hbWljc0NvbXByZXNzb3IoKTsKKyAgICBFeGNlcHRpb25PcjxSZWY8QW5hbHlzZXJO
b2RlPj4gY3JlYXRlQW5hbHlzZXIoKTsKKyAgICBFeGNlcHRpb25PcjxSZWY8U2NyaXB0UHJvY2Vz
c29yTm9kZT4+IGNyZWF0ZVNjcmlwdFByb2Nlc3NvcihzaXplX3QgYnVmZmVyU2l6ZSwgc2l6ZV90
IG51bWJlck9mSW5wdXRDaGFubmVscywgc2l6ZV90IG51bWJlck9mT3V0cHV0Q2hhbm5lbHMpOwor
ICAgIEV4Y2VwdGlvbk9yPFJlZjxDaGFubmVsU3BsaXR0ZXJOb2RlPj4gY3JlYXRlQ2hhbm5lbFNw
bGl0dGVyKHNpemVfdCBudW1iZXJPZk91dHB1dHMpOworICAgIEV4Y2VwdGlvbk9yPFJlZjxDaGFu
bmVsTWVyZ2VyTm9kZT4+IGNyZWF0ZUNoYW5uZWxNZXJnZXIoc2l6ZV90IG51bWJlck9mSW5wdXRz
KTsKKyAgICBFeGNlcHRpb25PcjxSZWY8T3NjaWxsYXRvck5vZGU+PiBjcmVhdGVPc2NpbGxhdG9y
KCk7CisgICAgRXhjZXB0aW9uT3I8UmVmPFBlcmlvZGljV2F2ZT4+IGNyZWF0ZVBlcmlvZGljV2F2
ZShGbG9hdDMyQXJyYXkmIHJlYWwsIEZsb2F0MzJBcnJheSYgaW1hZ2luYXJ5KTsKKworICAgIC8v
IFdoZW4gYSBzb3VyY2Ugbm9kZSBoYXMgbm8gbW9yZSBwcm9jZXNzaW5nIHRvIGRvIChoYXMgZmlu
aXNoZWQgcGxheWluZyksIHRoZW4gaXQgdGVsbHMgdGhlIGNvbnRleHQgdG8gZGVyZWZlcmVuY2Ug
aXQuCisgICAgdm9pZCBub3RpZnlOb2RlRmluaXNoZWRQcm9jZXNzaW5nKEF1ZGlvTm9kZSopIGZp
bmFsOworCisgICAgLy8gQ2FsbGVkIGF0IHRoZSBzdGFydCBvZiBlYWNoIHJlbmRlciBxdWFudHVt
LgorICAgIHZvaWQgaGFuZGxlUHJlUmVuZGVyVGFza3MoKSBmaW5hbDsKKworICAgIC8vIENhbGxl
ZCBhdCB0aGUgZW5kIG9mIGVhY2ggcmVuZGVyIHF1YW50dW0uCisgICAgdm9pZCBoYW5kbGVQb3N0
UmVuZGVyVGFza3MoKSBmaW5hbDsKKworICAgIC8vIENhbGxlZCBwZXJpb2RpY2FsbHkgYXQgdGhl
IGVuZCBvZiBlYWNoIHJlbmRlciBxdWFudHVtIHRvIGRlcmVmZXJlbmNlIGZpbmlzaGVkIHNvdXJj
ZSBub2Rlcy4KKyAgICB2b2lkIGRlcmVmRmluaXNoZWRTb3VyY2VOb2RlcygpOworCisgICAgLy8g
V2Ugc2NoZWR1bGUgZGVsZXRpb24gb2YgYWxsIG1hcmtlZCBub2RlcyBhdCB0aGUgZW5kIG9mIGVh
Y2ggcmVhbHRpbWUgcmVuZGVyIHF1YW50dW0uCisgICAgdm9pZCBtYXJrRm9yRGVsZXRpb24oQXVk
aW9Ob2RlJikgZmluYWw7CisgICAgdm9pZCBkZWxldGVNYXJrZWROb2RlcygpIGZpbmFsOworCisg
ICAgLy8gQXVkaW9Db250ZXh0IGNhbiBwdWxsIG5vZGUocykgYXQgdGhlIGVuZCBvZiBlYWNoIHJl
bmRlciBxdWFudHVtIGV2ZW4gd2hlbiB0aGV5IGFyZSBub3QgY29ubmVjdGVkIHRvIGFueSBkb3du
c3RyZWFtIG5vZGVzLgorICAgIC8vIFRoZXNlIHR3byBtZXRob2RzIGFyZSBjYWxsZWQgYnkgdGhl
IG5vZGVzIHdobyB3YW50IHRvIGFkZC9yZW1vdmUgdGhlbXNlbHZlcyBpbnRvL2Zyb20gdGhlIGF1
dG9tYXRpYyBwdWxsIGxpc3RzLgorICAgIHZvaWQgYWRkQXV0b21hdGljUHVsbE5vZGUoQXVkaW9O
b2RlJikgZmluYWw7CisgICAgdm9pZCByZW1vdmVBdXRvbWF0aWNQdWxsTm9kZShBdWRpb05vZGUm
KSBmaW5hbDsKKworICAgIC8vIENhbGxlZCByaWdodCBiZWZvcmUgaGFuZGxlUG9zdFJlbmRlclRh
c2tzKCkgdG8gaGFuZGxlIG5vZGVzIHdoaWNoIG5lZWQgdG8gYmUgcHVsbGVkIGV2ZW4gd2hlbiB0
aGV5IGFyZSBub3QgY29ubmVjdGVkIHRvIGFueXRoaW5nLgorICAgIHZvaWQgcHJvY2Vzc0F1dG9t
YXRpY1B1bGxOb2RlcyhzaXplX3QgZnJhbWVzVG9Qcm9jZXNzKSBmaW5hbDsKKworICAgIC8vIEtl
ZXBzIHRyYWNrIG9mIHRoZSBudW1iZXIgb2YgY29ubmVjdGlvbnMgbWFkZS4KKyAgICB2b2lkIGlu
Y3JlbWVudENvbm5lY3Rpb25Db3VudCgpIGZpbmFsCisgICAgeworICAgICAgICBBU1NFUlQoaXNN
YWluVGhyZWFkKCkpOworICAgICAgICBtX2Nvbm5lY3Rpb25Db3VudCsrOworICAgIH0KKworICAg
IHVuc2lnbmVkIGNvbm5lY3Rpb25Db3VudCgpIGNvbnN0IHsgcmV0dXJuIG1fY29ubmVjdGlvbkNv
dW50OyB9CisKKyAgICAvLworICAgIC8vIFRocmVhZCBTYWZldHkgYW5kIEdyYXBoIExvY2tpbmc6
CisgICAgLy8KKworICAgIHZvaWQgc2V0QXVkaW9UaHJlYWQoVGhyZWFkJiB0aHJlYWQpIGZpbmFs
IHsgbV9hdWRpb1RocmVhZCA9ICZ0aHJlYWQ7IH0gLy8gRklYTUU6IGNoZWNrIGVpdGhlciBub3Qg
aW5pdGlhbGl6ZWQgb3IgdGhlIHNhbWUKKyAgICBUaHJlYWQqIGF1ZGlvVGhyZWFkKCkgY29uc3Qg
eyByZXR1cm4gbV9hdWRpb1RocmVhZDsgfQorICAgIGJvb2wgaXNBdWRpb1RocmVhZCgpIGNvbnN0
IGZpbmFsOworCisgICAgLy8gUmV0dXJucyB0cnVlIG9ubHkgYWZ0ZXIgdGhlIGF1ZGlvIHRocmVh
ZCBoYXMgYmVlbiBzdGFydGVkIGFuZCB0aGVuIHNodXRkb3duLgorICAgIGJvb2wgaXNBdWRpb1Ro
cmVhZEZpbmlzaGVkKCkgZmluYWwgeyByZXR1cm4gbV9pc0F1ZGlvVGhyZWFkRmluaXNoZWQ7IH0K
KworICAgIC8vIG11c3RSZWxlYXNlTG9jayBpcyBzZXQgdG8gdHJ1ZSBpZiB3ZSBhY3F1aXJlZCB0
aGUgbG9jayBpbiB0aGlzIG1ldGhvZCBjYWxsIGFuZCBjYWxsZXIgbXVzdCB1bmxvY2soKSwgZmFs
c2UgaWYgaXQgd2FzIHByZXZpb3VzbHkgYWNxdWlyZWQuCisgICAgdm9pZCBsb2NrKGJvb2wmIG11
c3RSZWxlYXNlTG9jaykgZmluYWw7CisKKyAgICAvLyBSZXR1cm5zIHRydWUgaWYgd2Ugb3duIHRo
ZSBsb2NrLgorICAgIC8vIG11c3RSZWxlYXNlTG9jayBpcyBzZXQgdG8gdHJ1ZSBpZiB3ZSBhY3F1
aXJlZCB0aGUgbG9jayBpbiB0aGlzIG1ldGhvZCBjYWxsIGFuZCBjYWxsZXIgbXVzdCB1bmxvY2so
KSwgZmFsc2UgaWYgaXQgd2FzIHByZXZpb3VzbHkgYWNxdWlyZWQuCisgICAgYm9vbCB0cnlMb2Nr
KGJvb2wmIG11c3RSZWxlYXNlTG9jaykgZmluYWw7CisKKyAgICB2b2lkIHVubG9jaygpIGZpbmFs
OworCisgICAgLy8gUmV0dXJucyB0cnVlIGlmIHRoaXMgdGhyZWFkIG93bnMgdGhlIGNvbnRleHQn
cyBsb2NrLgorICAgIGJvb2wgaXNHcmFwaE93bmVyKCkgY29uc3QgZmluYWw7CisKKyAgICAvLyBS
ZXR1cm5zIHRoZSBtYXhpbXVtIG51bWJlciBvZiBjaGFubmVscyB3ZSBjYW4gc3VwcG9ydC4KKyAg
ICBzdGF0aWMgdW5zaWduZWQgbWF4TnVtYmVyT2ZDaGFubmVscygpIHsgcmV0dXJuIE1heE51bWJl
ck9mQ2hhbm5lbHM7IH0KKworICAgIC8vIEluIEF1ZGlvTm9kZTo6ZGVyZWYoKSBhIHRyeUxvY2so
KSBpcyB1c2VkIGZvciBjYWxsaW5nIGZpbmlzaERlcmVmKCksIGJ1dCBpZiBpdCBmYWlscyBrZWVw
IHRyYWNrIGhlcmUuCisgICAgdm9pZCBhZGREZWZlcnJlZEZpbmlzaERlcmVmKEF1ZGlvTm9kZSop
IGZpbmFsOworCisgICAgLy8gSW4gdGhlIGF1ZGlvIHRocmVhZCBhdCB0aGUgc3RhcnQgb2YgZWFj
aCByZW5kZXIgY3ljbGUsIHdlJ2xsIGNhbGwgaGFuZGxlRGVmZXJyZWRGaW5pc2hEZXJlZnMoKS4K
KyAgICB2b2lkIGhhbmRsZURlZmVycmVkRmluaXNoRGVyZWZzKCk7CisKKyAgICAvLyBPbmx5IGFj
Y2Vzc2VkIHdoZW4gdGhlIGdyYXBoIGxvY2sgaXMgaGVsZC4KKyAgICB2b2lkIG1hcmtTdW1taW5n
SnVuY3Rpb25EaXJ0eShBdWRpb1N1bW1pbmdKdW5jdGlvbiopIGZpbmFsOworICAgIHZvaWQgbWFy
a0F1ZGlvTm9kZU91dHB1dERpcnR5KEF1ZGlvTm9kZU91dHB1dCopIGZpbmFsOworCisgICAgLy8g
TXVzdCBiZSBjYWxsZWQgb24gbWFpbiB0aHJlYWQuCisgICAgdm9pZCByZW1vdmVNYXJrZWRTdW1t
aW5nSnVuY3Rpb24oQXVkaW9TdW1taW5nSnVuY3Rpb24qKSBmaW5hbDsKKworICAgIC8vIEV2ZW50
VGFyZ2V0CisgICAgRXZlbnRUYXJnZXRJbnRlcmZhY2UgZXZlbnRUYXJnZXRJbnRlcmZhY2UoKSBj
b25zdCBmaW5hbCB7IHJldHVybiBXZWJLaXRBdWRpb0NvbnRleHRFdmVudFRhcmdldEludGVyZmFj
ZVR5cGU7IH0KKworICAgIHZvaWQgc3RhcnRSZW5kZXJpbmcoKTsKKyAgICB2b2lkIGZpbmlzaGVk
UmVuZGVyaW5nKGJvb2wgZGlkUmVuZGVyaW5nKSBmaW5hbDsKKworICAgIHN0YXRpYyB1bnNpZ25l
ZCBzX2hhcmR3YXJlQ29udGV4dENvdW50OworCisgICAgLy8gUmVzdHJpY3Rpb25zIHRvIGNoYW5n
ZSBkZWZhdWx0IGJlaGF2aW9ycy4KKyAgICBCZWhhdmlvclJlc3RyaWN0aW9ucyBiZWhhdmlvclJl
c3RyaWN0aW9ucygpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fcmVzdHJpY3Rpb25zOyB9CisgICAg
dm9pZCBhZGRCZWhhdmlvclJlc3RyaWN0aW9uKEJlaGF2aW9yUmVzdHJpY3Rpb25zIHJlc3RyaWN0
aW9uKSBmaW5hbCB7IG1fcmVzdHJpY3Rpb25zIHw9IHJlc3RyaWN0aW9uOyB9CisgICAgdm9pZCBy
ZW1vdmVCZWhhdmlvclJlc3RyaWN0aW9uKEJlaGF2aW9yUmVzdHJpY3Rpb25zIHJlc3RyaWN0aW9u
KSBmaW5hbCB7IG1fcmVzdHJpY3Rpb25zICY9IH5yZXN0cmljdGlvbjsgfQorCisgICAgdm9pZCBp
c1BsYXlpbmdBdWRpb0RpZENoYW5nZSgpIGZpbmFsOworCisgICAgdm9pZCBub2RlV2lsbEJlZ2lu
UGxheWJhY2soKSBmaW5hbDsKKworI2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRAorICAgIGNvbnN0
IExvZ2dlciYgbG9nZ2VyKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9sb2dnZXIuZ2V0KCk7IH0K
KyAgICBjb25zdCB2b2lkKiBsb2dJZGVudGlmaWVyKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9s
b2dJZGVudGlmaWVyOyB9CisgICAgV1RGTG9nQ2hhbm5lbCYgbG9nQ2hhbm5lbCgpIGNvbnN0IGZp
bmFsOworICAgIGNvbnN0IHZvaWQqIG5leHRBdWRpb05vZGVMb2dJZGVudGlmaWVyKCkgZmluYWwg
eyByZXR1cm4gY2hpbGRMb2dJZGVudGlmaWVyKG1fbG9nSWRlbnRpZmllciwgKyttX25leHRBdWRp
b05vZGVJZGVudGlmaWVyKTsgfQorICAgIGNvbnN0IHZvaWQqIG5leHRBdWRpb1BhcmFtZXRlckxv
Z0lkZW50aWZpZXIoKSBmaW5hbCB7IHJldHVybiBjaGlsZExvZ0lkZW50aWZpZXIobV9sb2dJZGVu
dGlmaWVyLCArK21fbmV4dEF1ZGlvUGFyYW1ldGVySWRlbnRpZmllcik7IH0KKyNlbmRpZgorCisg
ICAgdm9pZCBwb3N0VGFzayhXVEY6OkZ1bmN0aW9uPHZvaWQoKT4mJikgZmluYWw7CisgICAgYm9v
bCBpc1N0b3BwZWQoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2lzU3RvcFNjaGVkdWxlZDsgfQor
ICAgIGNvbnN0IFNlY3VyaXR5T3JpZ2luKiBvcmlnaW4oKSBjb25zdCBmaW5hbDsKKyAgICB2b2lk
IGFkZENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VTb3VyY2UsIE1lc3NhZ2VMZXZlbCwgY29uc3QgU3Ry
aW5nJiBtZXNzYWdlKSBmaW5hbDsKKworcHJvdGVjdGVkOgorICAgIGV4cGxpY2l0IFdlYktpdEF1
ZGlvQ29udGV4dChEb2N1bWVudCYpOworICAgIFdlYktpdEF1ZGlvQ29udGV4dChEb2N1bWVudCYs
IEF1ZGlvQnVmZmVyKiByZW5kZXJUYXJnZXQpOworCisgICAgc3RhdGljIGJvb2wgaXNTYW1wbGVS
YXRlUmFuZ2VHb29kKGZsb2F0IHNhbXBsZVJhdGUpOworICAgIHZvaWQgY2xlYXJQZW5kaW5nQWN0
aXZpdHkoKTsKKyAgICB2b2lkIG1ha2VQZW5kaW5nQWN0aXZpdHkoKTsKKworcHJpdmF0ZToKKyAg
ICB2b2lkIGNvbnN0cnVjdENvbW1vbigpOworCisgICAgdm9pZCBsYXp5SW5pdGlhbGl6ZSgpOwor
ICAgIHZvaWQgdW5pbml0aWFsaXplKCk7CisKKyAgICBib29sIHdpbGxCZWdpblBsYXliYWNrKCk7
CisgICAgYm9vbCB3aWxsUGF1c2VQbGF5YmFjaygpOworCisgICAgYm9vbCB1c2VyR2VzdHVyZVJl
cXVpcmVkRm9yQXVkaW9TdGFydCgpIGNvbnN0IHsgcmV0dXJuICFpc09mZmxpbmVDb250ZXh0KCkg
JiYgbV9yZXN0cmljdGlvbnMgJiBSZXF1aXJlVXNlckdlc3R1cmVGb3JBdWRpb1N0YXJ0UmVzdHJp
Y3Rpb247IH0KKyAgICBib29sIHBhZ2VDb25zZW50UmVxdWlyZWRGb3JBdWRpb1N0YXJ0KCkgY29u
c3QgeyByZXR1cm4gIWlzT2ZmbGluZUNvbnRleHQoKSAmJiBtX3Jlc3RyaWN0aW9ucyAmIFJlcXVp
cmVQYWdlQ29uc2VudEZvckF1ZGlvU3RhcnRSZXN0cmljdGlvbjsgfQorCisgICAgdm9pZCBzZXRT
dGF0ZShTdGF0ZSk7CisKKyAgICB2b2lkIGNsZWFyKCk7CisKKyAgICB2b2lkIHNjaGVkdWxlTm9k
ZURlbGV0aW9uKCk7CisKKyAgICB2b2lkIG1lZGlhQ2FuU3RhcnQoRG9jdW1lbnQmKSBvdmVycmlk
ZTsKKworICAgIC8vIEV2ZW50VGFyZ2V0CisgICAgdm9pZCBkaXNwYXRjaEV2ZW50KEV2ZW50Jikg
ZmluYWw7CisKKyAgICAvLyBNZWRpYVByb2R1Y2VyCisgICAgTWVkaWFQcm9kdWNlcjo6TWVkaWFT
dGF0ZUZsYWdzIG1lZGlhU3RhdGUoKSBjb25zdCBvdmVycmlkZTsKKyAgICB2b2lkIHBhZ2VNdXRl
ZFN0YXRlRGlkQ2hhbmdlKCkgb3ZlcnJpZGU7CisKKyAgICAvLyBUaGUgY29udGV4dCBpdHNlbGYg
a2VlcHMgYSByZWZlcmVuY2UgdG8gYWxsIHNvdXJjZSBub2Rlcy4gIFRoZSBzb3VyY2Ugbm9kZXMs
IHRoZW4gcmVmZXJlbmNlIGFsbCBub2RlcyB0aGV5J3JlIGNvbm5lY3RlZCB0by4KKyAgICAvLyBJ
biB0dXJuLCB0aGVzZSBub2RlcyByZWZlcmVuY2UgYWxsIG5vZGVzIHRoZXkncmUgY29ubmVjdGVk
IHRvLiAgQWxsIG5vZGVzIGFyZSB1bHRpbWF0ZWx5IGNvbm5lY3RlZCB0byB0aGUgQXVkaW9EZXN0
aW5hdGlvbk5vZGUuCisgICAgLy8gV2hlbiB0aGUgY29udGV4dCBkZXJlZmVyZW5jZXMgYSBzb3Vy
Y2Ugbm9kZSwgaXQgd2lsbCBiZSBkZWFjdGl2YXRlZCBmcm9tIHRoZSByZW5kZXJpbmcgZ3JhcGgg
YWxvbmcgd2l0aCBhbGwgb3RoZXIgbm9kZXMgaXQgaXMKKyAgICAvLyB1bmlxdWVseSBjb25uZWN0
ZWQgdG8uICBTZWUgdGhlIEF1ZGlvTm9kZTo6cmVmKCkgYW5kIEF1ZGlvTm9kZTo6ZGVyZWYoKSBt
ZXRob2RzIGZvciBtb3JlIGRldGFpbHMuCisgICAgdm9pZCByZWZOb2RlKEF1ZGlvTm9kZSYpOwor
ICAgIHZvaWQgZGVyZWZOb2RlKEF1ZGlvTm9kZSYpOworCisgICAgLy8gQWN0aXZlRE9NT2JqZWN0
IEFQSS4KKyAgICB2b2lkIHN1c3BlbmQoUmVhc29uRm9yU3VzcGVuc2lvbikgZmluYWw7CisgICAg
dm9pZCByZXN1bWUoKSBmaW5hbDsKKyAgICB2b2lkIHN0b3AoKSBvdmVycmlkZTsKKyAgICBjb25z
dCBjaGFyKiBhY3RpdmVET01PYmplY3ROYW1lKCkgY29uc3Qgb3ZlcnJpZGU7CisKKyAgICAvLyBX
aGVuIHRoZSBjb250ZXh0IGdvZXMgYXdheSwgdGhlcmUgbWlnaHQgc3RpbGwgYmUgc29tZSBzb3Vy
Y2VzIHdoaWNoIGhhdmVuJ3QgZmluaXNoZWQgcGxheWluZy4KKyAgICAvLyBNYWtlIHN1cmUgdG8g
ZGVyZWZlcmVuY2UgdGhlbSBoZXJlLgorICAgIHZvaWQgZGVyZWZVbmZpbmlzaGVkU291cmNlTm9k
ZXMoKTsKKworICAgIC8vIFBsYXRmb3JtTWVkaWFTZXNzaW9uQ2xpZW50CisgICAgUGxhdGZvcm1N
ZWRpYVNlc3Npb246Ok1lZGlhVHlwZSBtZWRpYVR5cGUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVy
biBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6TWVkaWFUeXBlOjpXZWJBdWRpbzsgfQorICAgIFBsYXRm
b3JtTWVkaWFTZXNzaW9uOjpNZWRpYVR5cGUgcHJlc2VudGF0aW9uVHlwZSgpIGNvbnN0IG92ZXJy
aWRlIHsgcmV0dXJuIFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpNZWRpYVR5cGU6OldlYkF1ZGlvOyB9
CisgICAgdm9pZCBtYXlSZXN1bWVQbGF5YmFjayhib29sIHNob3VsZFJlc3VtZSkgb3ZlcnJpZGU7
CisgICAgdm9pZCBzdXNwZW5kUGxheWJhY2soKSBvdmVycmlkZTsKKyAgICBib29sIGNhblJlY2Vp
dmVSZW1vdGVDb250cm9sQ29tbWFuZHMoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsg
fQorICAgIHZvaWQgZGlkUmVjZWl2ZVJlbW90ZUNvbnRyb2xDb21tYW5kKFBsYXRmb3JtTWVkaWFT
ZXNzaW9uOjpSZW1vdGVDb250cm9sQ29tbWFuZFR5cGUsIGNvbnN0IFBsYXRmb3JtTWVkaWFTZXNz
aW9uOjpSZW1vdGVDb21tYW5kQXJndW1lbnQqKSBvdmVycmlkZSB7IH0KKyAgICBib29sIHN1cHBv
cnRzU2Vla2luZygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgYm9vbCBz
aG91bGRPdmVycmlkZUJhY2tncm91bmRQbGF5YmFja1Jlc3RyaWN0aW9uKFBsYXRmb3JtTWVkaWFT
ZXNzaW9uOjpJbnRlcnJ1cHRpb25UeXBlKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsg
fQorICAgIGJvb2wgY2FuUHJvZHVjZUF1ZGlvKCkgY29uc3QgZmluYWwgeyByZXR1cm4gdHJ1ZTsg
fQorICAgIGJvb2wgaXNTdXNwZW5kZWQoKSBjb25zdCBmaW5hbDsKKworICAgIHZvaWQgdmlzaWJp
bGl0eVN0YXRlQ2hhbmdlZCgpIGZpbmFsOworCisgICAgYm9vbCBpc0F1ZGlvQ29udGV4dCgpIGNv
bnN0IGZpbmFsIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgYm9vbCBpc1dlYktpdEF1ZGlvQ29udGV4
dCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIHRydWU7IH0KKworICAgIHZvaWQgaGFuZGxlRGlydHlB
dWRpb1N1bW1pbmdKdW5jdGlvbnMoKTsKKyAgICB2b2lkIGhhbmRsZURpcnR5QXVkaW9Ob2RlT3V0
cHV0cygpOworCisgICAgdm9pZCBhZGRSZWFjdGlvbihTdGF0ZSwgRE9NUHJvbWlzZURlZmVycmVk
PHZvaWQ+JiYpOworICAgIHZvaWQgdXBkYXRlQXV0b21hdGljUHVsbE5vZGVzKCk7CisKKyNpZiAh
UkVMRUFTRV9MT0dfRElTQUJMRUQKKyAgICBjb25zdCBjaGFyKiBsb2dDbGFzc05hbWUoKSBjb25z
dCBmaW5hbCB7IHJldHVybiAiV2ViS2l0QXVkaW9Db250ZXh0IjsgfQorCisgICAgUmVmPExvZ2dl
cj4gbV9sb2dnZXI7CisgICAgY29uc3Qgdm9pZCogbV9sb2dJZGVudGlmaWVyOworICAgIHVpbnQ2
NF90IG1fbmV4dEF1ZGlvTm9kZUlkZW50aWZpZXIgeyAwIH07CisgICAgdWludDY0X3QgbV9uZXh0
QXVkaW9QYXJhbWV0ZXJJZGVudGlmaWVyIHsgMCB9OworI2VuZGlmCisKKyAgICAvLyBPbmx5IGFj
Y2Vzc2VkIGluIHRoZSBhdWRpbyB0aHJlYWQuCisgICAgVmVjdG9yPEF1ZGlvTm9kZSo+IG1fZmlu
aXNoZWROb2RlczsKKworICAgIC8vIFdlIGRvbid0IHVzZSBSZWZQdHI8QXVkaW9Ob2RlPiBoZXJl
IGJlY2F1c2UgQXVkaW9Ob2RlIGhhcyBhIG1vcmUgY29tcGxleCByZWYoKSAvIGRlcmVmKCkgaW1w
bGVtZW50YXRpb24KKyAgICAvLyB3aXRoIGFuIG9wdGlvbmFsIGFyZ3VtZW50IGZvciByZWZUeXBl
LiAgV2UgbmVlZCB0byB1c2UgdGhlIHNwZWNpYWwgcmVmVHlwZTogUmVmVHlwZUNvbm5lY3Rpb24K
KyAgICAvLyBFaXRoZXIgYWNjZXNzZWQgd2hlbiB0aGUgZ3JhcGggbG9jayBpcyBoZWxkLCBvciBv
biB0aGUgbWFpbiB0aHJlYWQgd2hlbiB0aGUgYXVkaW8gdGhyZWFkIGhhcyBmaW5pc2hlZC4KKyAg
ICBWZWN0b3I8QXVkaW9Ob2RlKj4gbV9yZWZlcmVuY2VkTm9kZXM7CisKKyAgICAvLyBBY2N1bXVs
YXRlIG5vZGVzIHdoaWNoIG5lZWQgdG8gYmUgZGVsZXRlZCBoZXJlLgorICAgIC8vIFRoaXMgaXMg
Y29waWVkIHRvIG1fbm9kZXNUb0RlbGV0ZSBhdCB0aGUgZW5kIG9mIGEgcmVuZGVyIGN5Y2xlIGlu
IGhhbmRsZVBvc3RSZW5kZXJUYXNrcygpLCB3aGVyZSB3ZSdyZSBhc3N1cmVkIG9mIGEgc3RhYmxl
IGdyYXBoCisgICAgLy8gc3RhdGUgd2hpY2ggd2lsbCBoYXZlIG5vIHJlZmVyZW5jZXMgdG8gYW55
IG9mIHRoZSBub2RlcyBpbiBtX25vZGVzVG9EZWxldGUgb25jZSB0aGUgY29udGV4dCBsb2NrIGlz
IHJlbGVhc2VkCisgICAgLy8gKHdoZW4gaGFuZGxlUG9zdFJlbmRlclRhc2tzKCkgaGFzIGNvbXBs
ZXRlZCkuCisgICAgVmVjdG9yPEF1ZGlvTm9kZSo+IG1fbm9kZXNNYXJrZWRGb3JEZWxldGlvbjsK
KworICAgIC8vIFRoZXkgd2lsbCBiZSBzY2hlZHVsZWQgZm9yIGRlbGV0aW9uIChvbiB0aGUgbWFp
biB0aHJlYWQpIGF0IHRoZSBlbmQgb2YgYSByZW5kZXIgY3ljbGUgKGluIHJlYWx0aW1lIHRocmVh
ZCkuCisgICAgVmVjdG9yPEF1ZGlvTm9kZSo+IG1fbm9kZXNUb0RlbGV0ZTsKKworICAgIGJvb2wg
bV9pc0RlbGV0aW9uU2NoZWR1bGVkIHsgZmFsc2UgfTsKKyAgICBib29sIG1faXNTdG9wU2NoZWR1
bGVkIHsgZmFsc2UgfTsKKyAgICBib29sIG1faXNJbml0aWFsaXplZCB7IGZhbHNlIH07CisgICAg
Ym9vbCBtX2lzQXVkaW9UaHJlYWRGaW5pc2hlZCB7IGZhbHNlIH07CisgICAgYm9vbCBtX2F1dG9t
YXRpY1B1bGxOb2Rlc05lZWRVcGRhdGluZyB7IGZhbHNlIH07CisgICAgYm9vbCBtX2lzT2ZmbGlu
ZUNvbnRleHQgeyBmYWxzZSB9OworCisgICAgLy8gT25seSBhY2Nlc3NlZCB3aGVuIHRoZSBncmFw
aCBsb2NrIGlzIGhlbGQuCisgICAgSGFzaFNldDxBdWRpb1N1bW1pbmdKdW5jdGlvbio+IG1fZGly
dHlTdW1taW5nSnVuY3Rpb25zOworICAgIEhhc2hTZXQ8QXVkaW9Ob2RlT3V0cHV0Kj4gbV9kaXJ0
eUF1ZGlvTm9kZU91dHB1dHM7CisKKyAgICAvLyBGb3IgdGhlIHNha2Ugb2YgdGhyZWFkIHNhZmV0
eSwgd2UgbWFpbnRhaW4gYSBzZXBlcmF0ZSBWZWN0b3Igb2YgYXV0b21hdGljIHB1bGwgbm9kZXMg
Zm9yIHJlbmRlcmluZyBpbiBtX3JlbmRlcmluZ0F1dG9tYXRpY1B1bGxOb2Rlcy4KKyAgICAvLyBJ
dCB3aWxsIGJlIGNvcGllZCBmcm9tIG1fYXV0b21hdGljUHVsbE5vZGVzIGJ5IHVwZGF0ZUF1dG9t
YXRpY1B1bGxOb2RlcygpIGF0IHRoZSB2ZXJ5IHN0YXJ0IG9yIGVuZCBvZiB0aGUgcmVuZGVyaW5n
IHF1YW50dW0uCisgICAgSGFzaFNldDxBdWRpb05vZGUqPiBtX2F1dG9tYXRpY1B1bGxOb2RlczsK
KyAgICBWZWN0b3I8QXVkaW9Ob2RlKj4gbV9yZW5kZXJpbmdBdXRvbWF0aWNQdWxsTm9kZXM7Cisg
ICAgLy8gT25seSBhY2Nlc3NlZCBpbiB0aGUgYXVkaW8gdGhyZWFkLgorICAgIFZlY3RvcjxBdWRp
b05vZGUqPiBtX2RlZmVycmVkRmluaXNoRGVyZWZMaXN0OworICAgIFZlY3RvcjxWZWN0b3I8RE9N
UHJvbWlzZURlZmVycmVkPHZvaWQ+Pj4gbV9zdGF0ZVJlYWN0aW9uczsKKworICAgIHN0ZDo6dW5p
cXVlX3B0cjxQbGF0Zm9ybU1lZGlhU2Vzc2lvbj4gbV9tZWRpYVNlc3Npb247CisgICAgVW5pcXVl
UmVmPE1haW5UaHJlYWRHZW5lcmljRXZlbnRRdWV1ZT4gbV9ldmVudFF1ZXVlOworCisgICAgUmVm
UHRyPEF1ZGlvQnVmZmVyPiBtX3JlbmRlclRhcmdldDsKKyAgICBSZWZQdHI8QXVkaW9EZXN0aW5h
dGlvbk5vZGU+IG1fZGVzdGluYXRpb25Ob2RlOworICAgIFJlZlB0cjxBdWRpb0xpc3RlbmVyPiBt
X2xpc3RlbmVyOworCisgICAgdW5zaWduZWQgbV9jb25uZWN0aW9uQ291bnQgeyAwIH07CisKKyAg
ICAvLyBHcmFwaCBsb2NraW5nLgorICAgIExvY2sgbV9jb250ZXh0R3JhcGhNdXRleDsKKyAgICAv
LyBGSVhNRTogVXNpbmcgdm9sYXRpbGUgc2VlbXMgaW5jb3JyZWN0LgorICAgIC8vIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODAzMzIKKyAgICBUaHJlYWQqIHZvbGF0
aWxlIG1fYXVkaW9UaHJlYWQgeyBudWxscHRyIH07CisgICAgVGhyZWFkKiB2b2xhdGlsZSBtX2dy
YXBoT3duZXJUaHJlYWQgeyBudWxscHRyIH07IC8vIGlmIHRoZSBsb2NrIGlzIGhlbGQgdGhlbiB0
aGlzIGlzIHRoZSB0aHJlYWQgd2hpY2ggb3ducyBpdCwgb3RoZXJ3aXNlID09IG51bGxwdHIuCisK
KyAgICBzdGQ6OnVuaXF1ZV9wdHI8QXN5bmNBdWRpb0RlY29kZXI+IG1fYXVkaW9EZWNvZGVyOwor
CisgICAgLy8gVGhpcyBpcyBjb25zaWRlcmluZyAzMiBpcyBsYXJnZSBlbm91Z2ggZm9yIG11bHRp
cGxlIGNoYW5uZWxzIGF1ZGlvLgorICAgIC8vIEl0IGlzIHNvbWV3aGF0IGFyYml0cmFyeSBhbmQg
Y291bGQgYmUgaW5jcmVhc2VkIGlmIG5lY2Vzc2FyeS4KKyAgICBlbnVtIHsgTWF4TnVtYmVyT2ZD
aGFubmVscyA9IDMyIH07CisKKyAgICAvLyBOdW1iZXIgb2YgQXVkaW9CdWZmZXJTb3VyY2VOb2Rl
cyB0aGF0IGFyZSBhY3RpdmUgKHBsYXlpbmcpLgorICAgIHN0ZDo6YXRvbWljPGludD4gbV9hY3Rp
dmVTb3VyY2VDb3VudCB7IDAgfTsKKworICAgIEJlaGF2aW9yUmVzdHJpY3Rpb25zIG1fcmVzdHJp
Y3Rpb25zIHsgTm9SZXN0cmljdGlvbnMgfTsKKworICAgIFN0YXRlIG1fc3RhdGUgeyBTdGF0ZTo6
U3VzcGVuZGVkIH07CisgICAgUmVmUHRyPFBlbmRpbmdBY3Rpdml0eTxXZWJLaXRBdWRpb0NvbnRl
eHQ+PiBtX3BlbmRpbmdBY3Rpdml0eTsKK307CisKK2lubGluZSBBdWRpb0NvbnRleHRTdGF0ZSBX
ZWJLaXRBdWRpb0NvbnRleHQ6OnN0YXRlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9zdGF0ZTsK
K30KKworfSAvLyBXZWJDb3JlCisKK1NQRUNJQUxJWkVfVFlQRV9UUkFJVFNfQkVHSU4oV2ViQ29y
ZTo6V2ViS2l0QXVkaW9Db250ZXh0KQorICAgIHN0YXRpYyBib29sIGlzVHlwZShjb25zdCBXZWJD
b3JlOjpBdWRpb0NvbnRleHRCYXNlJiBjb250ZXh0KSB7IHJldHVybiBjb250ZXh0LmlzV2ViS2l0
QXVkaW9Db250ZXh0KCk7IH0KK1NQRUNJQUxJWkVfVFlQRV9UUkFJVFNfRU5EKCkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vV2ViS2l0QXVkaW9Db250ZXh0Lmlk
bCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vV2ViS2l0QXVkaW9Db250ZXh0Lmlk
bApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi41Njk1YzczNjY5ODY3OGViMzZlZDY0ODkzYmQwMmI0Y2Q4YmRlMDBiCi0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9XZWJLaXRB
dWRpb0NvbnRleHQuaWRsCkBAIC0wLDAgKzEsOTMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTAsIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAg
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJF
CisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04KKyAqIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUworICogU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworWworICAgIEFjdGl2
ZURPTU9iamVjdCwKKyAgICBDb25kaXRpb25hbD1XRUJfQVVESU8sCisgICAgRW5hYmxlZEJ5U2V0
dGluZz1XZWJBdWRpbywKKyAgICBFeHBvcnRNYWNybz1XRUJDT1JFX0VYUE9SVCwKKyAgICBJbnRl
cmZhY2VOYW1lPXdlYmtpdEF1ZGlvQ29udGV4dCwKK10gaW50ZXJmYWNlIFdlYktpdEF1ZGlvQ29u
dGV4dCA6IEV2ZW50VGFyZ2V0IHsKKyAgICBbQ2FsbFdpdGg9RG9jdW1lbnQsIE1heVRocm93RXhj
ZXB0aW9uXSBjb25zdHJ1Y3RvcigpOworCisgICAgLy8gQWxsIHJlbmRlcmVkIGF1ZGlvIHVsdGlt
YXRlbHkgY29ubmVjdHMgdG8gZGVzdGluYXRpb24sIHdoaWNoIHJlcHJlc2VudHMgdGhlIGF1ZGlv
IGhhcmR3YXJlLgorICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBBdWRpb0Rlc3RpbmF0aW9uTm9kZSBk
ZXN0aW5hdGlvbjsKKworICAgIC8vIEFsbCBzY2hlZHVsZWQgdGltZXMgYXJlIHJlbGF0aXZlIHRv
IHRoaXMgdGltZSBpbiBzZWNvbmRzLgorICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSB1bnJlc3RyaWN0
ZWQgZG91YmxlIGN1cnJlbnRUaW1lOworCisgICAgLy8gQWxsIEF1ZGlvTm9kZXMgaW4gdGhlIGNv
bnRleHQgcnVuIGF0IHRoaXMgc2FtcGxlLXJhdGUgKHNhbXBsZS1mcmFtZXMgcGVyIHNlY29uZCku
CisgICAgcmVhZG9ubHkgYXR0cmlidXRlIHVucmVzdHJpY3RlZCBmbG9hdCBzYW1wbGVSYXRlOwor
CisgICAgLy8gQWxsIHBhbm5pbmcgaXMgcmVsYXRpdmUgdG8gdGhpcyBsaXN0ZW5lci4KKyAgICBy
ZWFkb25seSBhdHRyaWJ1dGUgQXVkaW9MaXN0ZW5lciBsaXN0ZW5lcjsKKworICAgIFtJbXBsZW1l
bnRlZEFzPXN1c3BlbmRSZW5kZXJpbmddIFByb21pc2U8dm9pZD4gc3VzcGVuZCgpOworICAgIFtJ
bXBsZW1lbnRlZEFzPXJlc3VtZVJlbmRlcmluZ10gUHJvbWlzZTx2b2lkPiByZXN1bWUoKTsKKyAg
ICBQcm9taXNlPHZvaWQ+IGNsb3NlKCk7CisKKyAgICByZWFkb25seSBhdHRyaWJ1dGUgQXVkaW9D
b250ZXh0U3RhdGUgc3RhdGU7CisgICAgYXR0cmlidXRlIEV2ZW50SGFuZGxlciBvbnN0YXRlY2hh
bmdlOworCisgICAgLy8gTnVtYmVyIG9mIEF1ZGlvQnVmZmVyU291cmNlTm9kZXMgdGhhdCBhcmUg
Y3VycmVudGx5IHBsYXlpbmcuCisgICAgcmVhZG9ubHkgYXR0cmlidXRlIHVuc2lnbmVkIGxvbmcg
YWN0aXZlU291cmNlQ291bnQ7CisKKyAgICBbTWF5VGhyb3dFeGNlcHRpb25dIEF1ZGlvQnVmZmVy
IGNyZWF0ZUJ1ZmZlcih1bnNpZ25lZCBsb25nIG51bWJlck9mQ2hhbm5lbHMsIHVuc2lnbmVkIGxv
bmcgbnVtYmVyT2ZGcmFtZXMsIHVucmVzdHJpY3RlZCBmbG9hdCBzYW1wbGVSYXRlKTsKKyAgICBb
TWF5VGhyb3dFeGNlcHRpb25dIEF1ZGlvQnVmZmVyIGNyZWF0ZUJ1ZmZlcihBcnJheUJ1ZmZlciBi
dWZmZXIsIGJvb2xlYW4gbWl4VG9Nb25vKTsKKworICAgIC8vIEFzeW5jaHJvbm91cyBhdWRpbyBm
aWxlIGRhdGEgZGVjb2RpbmcuCisgICAgLy8gRklYTUU6IHN1Y2Nlc3NDYWxsYmFjayBzaG91bGQg
YmUgb3B0aW9uYWwgYW5kIHRoZSBjYWxsYmFja3Mgc2hvdWxkIG5vdCBiZSBudWxsYWJsZS4gVGhp
cyBzaG91bGQgYWxzbyByZXR1cm4gYSBQcm9taXNlLgorICAgIHZvaWQgZGVjb2RlQXVkaW9EYXRh
KEFycmF5QnVmZmVyIGF1ZGlvRGF0YSwgQXVkaW9CdWZmZXJDYWxsYmFjaz8gc3VjY2Vzc0NhbGxi
YWNrLCBvcHRpb25hbCBBdWRpb0J1ZmZlckNhbGxiYWNrPyBlcnJvckNhbGxiYWNrKTsKKworICAg
IC8vIFNvdXJjZXMKKyAgICBbTWF5VGhyb3dFeGNlcHRpb25dIEF1ZGlvQnVmZmVyU291cmNlTm9k
ZSBjcmVhdGVCdWZmZXJTb3VyY2UoKTsKKworICAgIFtDb25kaXRpb25hbD1WSURFTywgTWF5VGhy
b3dFeGNlcHRpb25dIE1lZGlhRWxlbWVudEF1ZGlvU291cmNlTm9kZSBjcmVhdGVNZWRpYUVsZW1l
bnRTb3VyY2UoSFRNTE1lZGlhRWxlbWVudCBtZWRpYUVsZW1lbnQpOworCisgICAgW0NvbmRpdGlv
bmFsPU1FRElBX1NUUkVBTSwgTWF5VGhyb3dFeGNlcHRpb25dIE1lZGlhU3RyZWFtQXVkaW9Tb3Vy
Y2VOb2RlIGNyZWF0ZU1lZGlhU3RyZWFtU291cmNlKE1lZGlhU3RyZWFtIG1lZGlhU3RyZWFtKTsK
KyAgICBbQ29uZGl0aW9uYWw9TUVESUFfU1RSRUFNLCBNYXlUaHJvd0V4Y2VwdGlvbl0gTWVkaWFT
dHJlYW1BdWRpb0Rlc3RpbmF0aW9uTm9kZSBjcmVhdGVNZWRpYVN0cmVhbURlc3RpbmF0aW9uKCk7
CisKKyAgICAvLyBQcm9jZXNzaW5nIG5vZGVzCisgICAgW01heVRocm93RXhjZXB0aW9uXSBHYWlu
Tm9kZSBjcmVhdGVHYWluKCk7CisgICAgW01heVRocm93RXhjZXB0aW9uXSBEZWxheU5vZGUgY3Jl
YXRlRGVsYXkob3B0aW9uYWwgdW5yZXN0cmljdGVkIGRvdWJsZSBtYXhEZWxheVRpbWUgPSAxKTsK
KyAgICBbTWF5VGhyb3dFeGNlcHRpb25dIEJpcXVhZEZpbHRlck5vZGUgY3JlYXRlQmlxdWFkRmls
dGVyKCk7CisgICAgW01heVRocm93RXhjZXB0aW9uXSBXYXZlU2hhcGVyTm9kZSBjcmVhdGVXYXZl
U2hhcGVyKCk7CisgICAgW01heVRocm93RXhjZXB0aW9uXSBXZWJLaXRBdWRpb1Bhbm5lck5vZGUg
Y3JlYXRlUGFubmVyKCk7CisgICAgW01heVRocm93RXhjZXB0aW9uXSBDb252b2x2ZXJOb2RlIGNy
ZWF0ZUNvbnZvbHZlcigpOworICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gRHluYW1pY3NDb21wcmVz
c29yTm9kZSBjcmVhdGVEeW5hbWljc0NvbXByZXNzb3IoKTsKKyAgICBbTWF5VGhyb3dFeGNlcHRp
b25dIEFuYWx5c2VyTm9kZSBjcmVhdGVBbmFseXNlcigpOworICAgIFtNYXlUaHJvd0V4Y2VwdGlv
bl0gU2NyaXB0UHJvY2Vzc29yTm9kZSBjcmVhdGVTY3JpcHRQcm9jZXNzb3Iob3B0aW9uYWwgdW5z
aWduZWQgbG9uZyBidWZmZXJTaXplID0gMCwgb3B0aW9uYWwgdW5zaWduZWQgbG9uZyBudW1iZXJP
ZklucHV0Q2hhbm5lbHMgPSAyLCBvcHRpb25hbCB1bnNpZ25lZCBsb25nIG51bWJlck9mT3V0cHV0
Q2hhbm5lbHMgPSAyKTsKKyAgICBbTWF5VGhyb3dFeGNlcHRpb25dIE9zY2lsbGF0b3JOb2RlIGNy
ZWF0ZU9zY2lsbGF0b3IoKTsKKyAgICBbTWF5VGhyb3dFeGNlcHRpb25dIFBlcmlvZGljV2F2ZSBj
cmVhdGVQZXJpb2RpY1dhdmUoRmxvYXQzMkFycmF5IHJlYWwsIEZsb2F0MzJBcnJheSBpbWFnKTsK
KworICAgIC8vIENoYW5uZWwgc3BsaXR0aW5nIGFuZCBtZXJnaW5nCisgICAgW01heVRocm93RXhj
ZXB0aW9uXSBDaGFubmVsU3BsaXR0ZXJOb2RlIGNyZWF0ZUNoYW5uZWxTcGxpdHRlcihvcHRpb25h
bCB1bnNpZ25lZCBsb25nIG51bWJlck9mT3V0cHV0cyA9IDYpOworICAgIFtNYXlUaHJvd0V4Y2Vw
dGlvbl0gQ2hhbm5lbE1lcmdlck5vZGUgY3JlYXRlQ2hhbm5lbE1lcmdlcihvcHRpb25hbCB1bnNp
Z25lZCBsb25nIG51bWJlck9mSW5wdXRzID0gNik7CisKKyAgICAvLyBPZmZsaW5lIHJlbmRlcmlu
ZworICAgIC8vIHZvaWQgcHJlcGFyZU9mZmxpbmVCdWZmZXJSZW5kZXJpbmcodW5zaWduZWQgbG9u
ZyBudW1iZXJPZkNoYW5uZWxzLCB1bnNpZ25lZCBsb25nIG51bWJlck9mRnJhbWVzLCB1bnJlc3Ry
aWN0ZWQgZmxvYXQgc2FtcGxlUmF0ZSk7CisgICAgYXR0cmlidXRlIEV2ZW50SGFuZGxlciBvbmNv
bXBsZXRlOworICAgIHZvaWQgc3RhcnRSZW5kZXJpbmcoKTsKK307CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1dlYktpdEF1ZGlvUGFubmVyTm9kZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1dlYktpdEF1ZGlvUGFubmVyTm9kZS5jcHAK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uMjU4ZjQ1ZTdjZmQ5MWM4MjJjNjk5MmU3NThkYWE3NThhZDc5MDJlMgotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vV2ViS2l0QXVk
aW9QYW5uZXJOb2RlLmNwcApAQCAtMCwwICsxLDM2MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxMCwgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NF
IEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICog
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OCisgKiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKKyAqIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRl
ICJjb25maWcuaCIKKyNpbmNsdWRlICJXZWJLaXRBdWRpb1Bhbm5lck5vZGUuaCIKKworI2lmIEVO
QUJMRShXRUJfQVVESU8pCisKKyNpbmNsdWRlICJBdWRpb0J1ZmZlclNvdXJjZU5vZGUuaCIKKyNp
bmNsdWRlICJBdWRpb0J1cy5oIgorI2luY2x1ZGUgIkF1ZGlvQ29udGV4dC5oIgorI2luY2x1ZGUg
IkF1ZGlvTm9kZUlucHV0LmgiCisjaW5jbHVkZSAiQXVkaW9Ob2RlT3V0cHV0LmgiCisjaW5jbHVk
ZSAiSFJURkRhdGFiYXNlTG9hZGVyLmgiCisjaW5jbHVkZSAiSFJURlBhbm5lci5oIgorI2luY2x1
ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKKyNpbmNsdWRlIDx3dGYvSXNvTWFsbG9jSW5s
aW5lcy5oPgorI2luY2x1ZGUgPHd0Zi9NYXRoRXh0cmFzLmg+CisKK25hbWVzcGFjZSBXZWJDb3Jl
IHsKKworV1RGX01BS0VfSVNPX0FMTE9DQVRFRF9JTVBMKFdlYktpdEF1ZGlvUGFubmVyTm9kZSk7
CisKK3N0YXRpYyB2b2lkIGZpeE5BTnMoZG91YmxlICZ4KQoreworICAgIGlmIChzdGQ6OmlzbmFu
KHgpIHx8IHN0ZDo6aXNpbmYoeCkpCisgICAgICAgIHggPSAwLjA7Cit9CisKK1dlYktpdEF1ZGlv
UGFubmVyTm9kZTo6V2ViS2l0QXVkaW9QYW5uZXJOb2RlKFdlYktpdEF1ZGlvQ29udGV4dCYgY29u
dGV4dCwgZmxvYXQgc2FtcGxlUmF0ZSkKKyAgICA6IFBhbm5lck5vZGVCYXNlKGNvbnRleHQsIHNh
bXBsZVJhdGUpCisgICAgLCBtX3Bhbm5pbmdNb2RlbChQYW5uaW5nTW9kZWxUeXBlOjpIUlRGKQor
ICAgICwgbV9sYXN0R2FpbigtMS4wKQorICAgICwgbV9jb25uZWN0aW9uQ291bnQoMCkKK3sKKyAg
ICBzZXROb2RlVHlwZShOb2RlVHlwZVBhbm5lcik7CisKKyAgICAvLyBMb2FkIHRoZSBIUlRGIGRh
dGFiYXNlIGFzeW5jaHJvbm91c2x5IHNvIHdlIGRvbid0IGJsb2NrIHRoZSBKYXZhc2NyaXB0IHRo
cmVhZCB3aGlsZSBjcmVhdGluZyB0aGUgSFJURiBkYXRhYmFzZS4KKyAgICBtX2hydGZEYXRhYmFz
ZUxvYWRlciA9IEhSVEZEYXRhYmFzZUxvYWRlcjo6Y3JlYXRlQW5kTG9hZEFzeW5jaHJvbm91c2x5
SWZOZWNlc3NhcnkoY29udGV4dC5zYW1wbGVSYXRlKCkpOworCisgICAgYWRkSW5wdXQobWFrZVVu
aXF1ZTxBdWRpb05vZGVJbnB1dD4odGhpcykpOworICAgIGFkZE91dHB1dChtYWtlVW5pcXVlPEF1
ZGlvTm9kZU91dHB1dD4odGhpcywgMikpOworCisgICAgLy8gTm9kZS1zcGVjaWZpYyBkZWZhdWx0
IG1peGluZyBydWxlcy4KKyAgICBtX2NoYW5uZWxDb3VudCA9IDI7CisgICAgbV9jaGFubmVsQ291
bnRNb2RlID0gQ2xhbXBlZE1heDsKKyAgICBtX2NoYW5uZWxJbnRlcnByZXRhdGlvbiA9IEF1ZGlv
QnVzOjpTcGVha2VyczsKKworICAgIG1fZGlzdGFuY2VHYWluID0gQXVkaW9QYXJhbTo6Y3JlYXRl
KGNvbnRleHQsICJkaXN0YW5jZUdhaW4iLCAxLjAsIDAuMCwgMS4wKTsKKyAgICBtX2NvbmVHYWlu
ID0gQXVkaW9QYXJhbTo6Y3JlYXRlKGNvbnRleHQsICJjb25lR2FpbiIsIDEuMCwgMC4wLCAxLjAp
OworCisgICAgbV9wb3NpdGlvbiA9IEZsb2F0UG9pbnQzRCgwLCAwLCAwKTsKKyAgICBtX29yaWVu
dGF0aW9uID0gRmxvYXRQb2ludDNEKDEsIDAsIDApOworICAgIG1fdmVsb2NpdHkgPSBGbG9hdFBv
aW50M0QoMCwgMCwgMCk7CisKKyAgICBpbml0aWFsaXplKCk7Cit9CisKK1dlYktpdEF1ZGlvUGFu
bmVyTm9kZTo6fldlYktpdEF1ZGlvUGFubmVyTm9kZSgpCit7CisgICAgdW5pbml0aWFsaXplKCk7
Cit9CisKK3ZvaWQgV2ViS2l0QXVkaW9QYW5uZXJOb2RlOjpwdWxsSW5wdXRzKHNpemVfdCBmcmFt
ZXNUb1Byb2Nlc3MpCit7CisgICAgLy8gV2Ugb3ZlcnJpZGUgcHVsbElucHV0cygpLCBzbyB3ZSBj
YW4gZGV0ZWN0IG5ldyBBdWRpb1NvdXJjZU5vZGVzIHdoaWNoIGhhdmUgY29ubmVjdGVkIHRvIHVz
IHdoZW4gbmV3IGNvbm5lY3Rpb25zIGFyZSBtYWRlLgorICAgIC8vIFRoZXNlIEF1ZGlvU291cmNl
Tm9kZXMgbmVlZCB0byBiZSBtYWRlIGF3YXJlIG9mIG91ciBleGlzdGVuY2UgaW4gb3JkZXIgdG8g
aGFuZGxlIGRvcHBsZXIgc2hpZnQgcGl0Y2ggY2hhbmdlcy4KKyAgICBpZiAobV9jb25uZWN0aW9u
Q291bnQgIT0gY29udGV4dCgpLmNvbm5lY3Rpb25Db3VudCgpKSB7CisgICAgICAgIG1fY29ubmVj
dGlvbkNvdW50ID0gY29udGV4dCgpLmNvbm5lY3Rpb25Db3VudCgpOworCisgICAgICAgIC8vIFJl
Y3Vyc2l2ZWx5IGdvIHRocm91Z2ggYWxsIG5vZGVzIGNvbm5lY3RlZCB0byB1cy4KKyAgICAgICAg
SGFzaFNldDxBdWRpb05vZGUqPiB2aXNpdGVkTm9kZXM7CisgICAgICAgIG5vdGlmeUF1ZGlvU291
cmNlc0Nvbm5lY3RlZFRvTm9kZSh0aGlzLCB2aXNpdGVkTm9kZXMpOworICAgIH0KKworICAgIEF1
ZGlvTm9kZTo6cHVsbElucHV0cyhmcmFtZXNUb1Byb2Nlc3MpOworfQorCit2b2lkIFdlYktpdEF1
ZGlvUGFubmVyTm9kZTo6cHJvY2VzcyhzaXplX3QgZnJhbWVzVG9Qcm9jZXNzKQoreworICAgIEF1
ZGlvQnVzKiBkZXN0aW5hdGlvbiA9IG91dHB1dCgwKS0+YnVzKCk7CisKKyAgICBpZiAoIWlzSW5p
dGlhbGl6ZWQoKSB8fCAhaW5wdXQoMCktPmlzQ29ubmVjdGVkKCkgfHwgIW1fcGFubmVyLmdldCgp
KSB7CisgICAgICAgIGRlc3RpbmF0aW9uLT56ZXJvKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9
CisKKyAgICBBdWRpb0J1cyogc291cmNlID0gaW5wdXQoMCktPmJ1cygpOworICAgIGlmICghc291
cmNlKSB7CisgICAgICAgIGRlc3RpbmF0aW9uLT56ZXJvKCk7CisgICAgICAgIHJldHVybjsKKyAg
ICB9CisKKyAgICAvLyBIUlRGRGF0YWJhc2Ugc2hvdWxkIGJlIGxvYWRlZCBiZWZvcmUgcHJvY2Vl
ZGluZyBmb3Igb2ZmbGluZSBhdWRpbyBjb250ZXh0IHdoZW4gcGFubmluZ01vZGVsKCkgaXMgIkhS
VEYiLgorICAgIGlmIChwYW5uaW5nTW9kZWwoKSA9PSBQYW5uaW5nTW9kZWxUeXBlOjpIUlRGICYm
ICFtX2hydGZEYXRhYmFzZUxvYWRlci0+aXNMb2FkZWQoKSkgeworICAgICAgICBpZiAoY29udGV4
dCgpLmlzT2ZmbGluZUNvbnRleHQoKSkKKyAgICAgICAgICAgIG1faHJ0ZkRhdGFiYXNlTG9hZGVy
LT53YWl0Rm9yTG9hZGVyVGhyZWFkQ29tcGxldGlvbigpOworICAgICAgICBlbHNlIHsKKyAgICAg
ICAgICAgIGRlc3RpbmF0aW9uLT56ZXJvKCk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAg
IH0KKyAgICB9CisKKyAgICAvLyBUaGUgYXVkaW8gdGhyZWFkIGNhbid0IGJsb2NrIG9uIHRoaXMg
bG9jaywgc28gd2UgdXNlIHN0ZDo6dHJ5X3RvX2xvY2sgaW5zdGVhZC4KKyAgICBzdGQ6OnVuaXF1
ZV9sb2NrPExvY2s+IGxvY2sobV9wYW5uZXJNdXRleCwgc3RkOjp0cnlfdG9fbG9jayk7CisgICAg
aWYgKCFsb2NrLm93bnNfbG9jaygpKSB7CisgICAgICAgIC8vIFRvbyBiYWQgLSBUaGUgdHJ5X2xv
Y2soKSBmYWlsZWQuIFdlIG11c3QgYmUgaW4gdGhlIG1pZGRsZSBvZiBjaGFuZ2luZyB0aGUgcGFu
bmVyLgorICAgICAgICBkZXN0aW5hdGlvbi0+emVybygpOworICAgICAgICByZXR1cm47CisgICAg
fQorCisgICAgLy8gQXBwbHkgdGhlIHBhbm5pbmcgZWZmZWN0LgorICAgIGRvdWJsZSBhemltdXRo
OworICAgIGRvdWJsZSBlbGV2YXRpb247CisgICAgZ2V0QXppbXV0aEVsZXZhdGlvbigmYXppbXV0
aCwgJmVsZXZhdGlvbik7CisgICAgbV9wYW5uZXItPnBhbihhemltdXRoLCBlbGV2YXRpb24sIHNv
dXJjZSwgZGVzdGluYXRpb24sIGZyYW1lc1RvUHJvY2Vzcyk7CisKKyAgICAvLyBHZXQgdGhlIGRp
c3RhbmNlIGFuZCBjb25lIGdhaW4uCisgICAgZG91YmxlIHRvdGFsR2FpbiA9IGRpc3RhbmNlQ29u
ZUdhaW4oKTsKKworICAgIC8vIFNuYXAgdG8gZGVzaXJlZCBnYWluIGF0IHRoZSBiZWdpbm5pbmcu
CisgICAgaWYgKG1fbGFzdEdhaW4gPT0gLTEuMCkKKyAgICAgICAgbV9sYXN0R2FpbiA9IHRvdGFs
R2FpbjsKKworICAgIC8vIEFwcGx5IGdhaW4gaW4tcGxhY2Ugd2l0aCBkZS16aXBwZXJpbmcuCisg
ICAgZGVzdGluYXRpb24tPmNvcHlXaXRoR2FpbkZyb20oKmRlc3RpbmF0aW9uLCAmbV9sYXN0R2Fp
biwgdG90YWxHYWluKTsKK30KKwordm9pZCBXZWJLaXRBdWRpb1Bhbm5lck5vZGU6OnJlc2V0KCkK
K3sKKyAgICBtX2xhc3RHYWluID0gLTEuMDsgLy8gZm9yY2UgdG8gc25hcCB0byBpbml0aWFsIGdh
aW4KKyAgICBpZiAobV9wYW5uZXIuZ2V0KCkpCisgICAgICAgIG1fcGFubmVyLT5yZXNldCgpOwor
fQorCit2b2lkIFdlYktpdEF1ZGlvUGFubmVyTm9kZTo6aW5pdGlhbGl6ZSgpCit7CisgICAgaWYg
KGlzSW5pdGlhbGl6ZWQoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9wYW5uZXIgPSBQYW5u
ZXI6OmNyZWF0ZShtX3Bhbm5pbmdNb2RlbCwgc2FtcGxlUmF0ZSgpLCBtX2hydGZEYXRhYmFzZUxv
YWRlci5nZXQoKSk7CisKKyAgICBBdWRpb05vZGU6OmluaXRpYWxpemUoKTsKK30KKwordm9pZCBX
ZWJLaXRBdWRpb1Bhbm5lck5vZGU6OnVuaW5pdGlhbGl6ZSgpCit7CisgICAgaWYgKCFpc0luaXRp
YWxpemVkKCkpCisgICAgICAgIHJldHVybjsKKworICAgIG1fcGFubmVyID0gbnVsbHB0cjsKKyAg
ICBBdWRpb05vZGU6OnVuaW5pdGlhbGl6ZSgpOworfQorCitBdWRpb0xpc3RlbmVyKiBXZWJLaXRB
dWRpb1Bhbm5lck5vZGU6Omxpc3RlbmVyKCkKK3sKKyAgICByZXR1cm4gY29udGV4dCgpLmxpc3Rl
bmVyKCk7Cit9CisKK3ZvaWQgV2ViS2l0QXVkaW9QYW5uZXJOb2RlOjpzZXRQYW5uaW5nTW9kZWwo
UGFubmluZ01vZGVsVHlwZSBtb2RlbCkKK3sKKyAgICBpZiAoIW1fcGFubmVyLmdldCgpIHx8IG1v
ZGVsICE9IG1fcGFubmluZ01vZGVsKSB7CisgICAgICAgIC8vIFRoaXMgc3luY2hyb25pemVzIHdp
dGggcHJvY2VzcygpLgorICAgICAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG1fcGFubmVyTXV0
ZXgpOworCisgICAgICAgIG1fcGFubmVyID0gUGFubmVyOjpjcmVhdGUobW9kZWwsIHNhbXBsZVJh
dGUoKSwgbV9ocnRmRGF0YWJhc2VMb2FkZXIuZ2V0KCkpOworICAgICAgICBtX3Bhbm5pbmdNb2Rl
bCA9IG1vZGVsOworICAgIH0KK30KKworRGlzdGFuY2VNb2RlbFR5cGUgV2ViS2l0QXVkaW9QYW5u
ZXJOb2RlOjpkaXN0YW5jZU1vZGVsKCkgY29uc3QKK3sKKyAgICByZXR1cm4gY29uc3RfY2FzdDxX
ZWJLaXRBdWRpb1Bhbm5lck5vZGUqPih0aGlzKS0+bV9kaXN0YW5jZUVmZmVjdC5tb2RlbCgpOwor
fQorCit2b2lkIFdlYktpdEF1ZGlvUGFubmVyTm9kZTo6c2V0RGlzdGFuY2VNb2RlbChEaXN0YW5j
ZU1vZGVsVHlwZSBtb2RlbCkKK3sKKyAgICBtX2Rpc3RhbmNlRWZmZWN0LnNldE1vZGVsKG1vZGVs
LCB0cnVlKTsKK30KKwordm9pZCBXZWJLaXRBdWRpb1Bhbm5lck5vZGU6OmdldEF6aW11dGhFbGV2
YXRpb24oZG91YmxlKiBvdXRBemltdXRoLCBkb3VibGUqIG91dEVsZXZhdGlvbikKK3sKKyAgICAv
LyBGSVhNRTogd2Ugc2hvdWxkIGNhY2hlIGF6aW11dGggYW5kIGVsZXZhdGlvbiAoaWYgcG9zc2li
bGUpLCBzbyB3ZSBvbmx5IHJlLWNhbGN1bGF0ZSBpZiBhIGNoYW5nZSBoYXMgYmVlbiBtYWRlLgor
CisgICAgZG91YmxlIGF6aW11dGggPSAwLjA7CisKKyAgICAvLyBDYWxjdWxhdGUgdGhlIHNvdXJj
ZS1saXN0ZW5lciB2ZWN0b3IKKyAgICBGbG9hdFBvaW50M0QgbGlzdGVuZXJQb3NpdGlvbiA9IGxp
c3RlbmVyKCktPnBvc2l0aW9uKCk7CisgICAgRmxvYXRQb2ludDNEIHNvdXJjZUxpc3RlbmVyID0g
cG9zaXRpb24oKSAtIGxpc3RlbmVyUG9zaXRpb247CisKKyAgICBpZiAoc291cmNlTGlzdGVuZXIu
aXNaZXJvKCkpIHsKKyAgICAgICAgLy8gZGVnZW5lcmF0ZSBjYXNlIGlmIHNvdXJjZSBhbmQgbGlz
dGVuZXIgYXJlIGF0IHRoZSBzYW1lIHBvaW50CisgICAgICAgICpvdXRBemltdXRoID0gMC4wOwor
ICAgICAgICAqb3V0RWxldmF0aW9uID0gMC4wOworICAgICAgICByZXR1cm47CisgICAgfQorCisg
ICAgc291cmNlTGlzdGVuZXIubm9ybWFsaXplKCk7CisKKyAgICAvLyBBbGlnbiBheGVzCisgICAg
RmxvYXRQb2ludDNEIGxpc3RlbmVyRnJvbnQgPSBsaXN0ZW5lcigpLT5vcmllbnRhdGlvbigpOwor
ICAgIEZsb2F0UG9pbnQzRCBsaXN0ZW5lclVwID0gbGlzdGVuZXIoKS0+dXBWZWN0b3IoKTsKKyAg
ICBGbG9hdFBvaW50M0QgbGlzdGVuZXJSaWdodCA9IGxpc3RlbmVyRnJvbnQuY3Jvc3MobGlzdGVu
ZXJVcCk7CisgICAgbGlzdGVuZXJSaWdodC5ub3JtYWxpemUoKTsKKworICAgIEZsb2F0UG9pbnQz
RCBsaXN0ZW5lckZyb250Tm9ybSA9IGxpc3RlbmVyRnJvbnQ7CisgICAgbGlzdGVuZXJGcm9udE5v
cm0ubm9ybWFsaXplKCk7CisKKyAgICBGbG9hdFBvaW50M0QgdXAgPSBsaXN0ZW5lclJpZ2h0LmNy
b3NzKGxpc3RlbmVyRnJvbnROb3JtKTsKKworICAgIGZsb2F0IHVwUHJvamVjdGlvbiA9IHNvdXJj
ZUxpc3RlbmVyLmRvdCh1cCk7CisKKyAgICBGbG9hdFBvaW50M0QgcHJvamVjdGVkU291cmNlID0g
c291cmNlTGlzdGVuZXIgLSB1cFByb2plY3Rpb24gKiB1cDsKKyAgICBwcm9qZWN0ZWRTb3VyY2Uu
bm9ybWFsaXplKCk7CisKKyAgICBhemltdXRoID0gMTgwLjAgKiBhY29zKHByb2plY3RlZFNvdXJj
ZS5kb3QobGlzdGVuZXJSaWdodCkpIC8gcGlEb3VibGU7CisgICAgZml4TkFOcyhhemltdXRoKTsg
Ly8gYXZvaWQgaWxsZWdhbCB2YWx1ZXMKKworICAgIC8vIFNvdXJjZSAgaW4gZnJvbnQgb3IgYmVo
aW5kIHRoZSBsaXN0ZW5lcgorICAgIGRvdWJsZSBmcm9udEJhY2sgPSBwcm9qZWN0ZWRTb3VyY2Uu
ZG90KGxpc3RlbmVyRnJvbnROb3JtKTsKKyAgICBpZiAoZnJvbnRCYWNrIDwgMC4wKQorICAgICAg
ICBhemltdXRoID0gMzYwLjAgLSBhemltdXRoOworCisgICAgLy8gTWFrZSBhemltdXRoIHJlbGF0
aXZlIHRvICJmcm9udCIgYW5kIG5vdCAicmlnaHQiIGxpc3RlbmVyIHZlY3RvcgorICAgIGlmICgo
YXppbXV0aCA+PSAwLjApICYmIChhemltdXRoIDw9IDI3MC4wKSkKKyAgICAgICAgYXppbXV0aCA9
IDkwLjAgLSBhemltdXRoOworICAgIGVsc2UKKyAgICAgICAgYXppbXV0aCA9IDQ1MC4wIC0gYXpp
bXV0aDsKKworICAgIC8vIEVsZXZhdGlvbgorICAgIGRvdWJsZSBlbGV2YXRpb24gPSA5MC4wIC0g
MTgwLjAgKiBhY29zKHNvdXJjZUxpc3RlbmVyLmRvdCh1cCkpIC8gcGlEb3VibGU7CisgICAgZml4
TkFOcyhlbGV2YXRpb24pOyAvLyBhdm9pZCBpbGxlZ2FsIHZhbHVlcworCisgICAgaWYgKGVsZXZh
dGlvbiA+IDkwLjApCisgICAgICAgIGVsZXZhdGlvbiA9IDE4MC4wIC0gZWxldmF0aW9uOworICAg
IGVsc2UgaWYgKGVsZXZhdGlvbiA8IC05MC4wKQorICAgICAgICBlbGV2YXRpb24gPSAtMTgwLjAg
LSBlbGV2YXRpb247CisKKyAgICBpZiAob3V0QXppbXV0aCkKKyAgICAgICAgKm91dEF6aW11dGgg
PSBhemltdXRoOworICAgIGlmIChvdXRFbGV2YXRpb24pCisgICAgICAgICpvdXRFbGV2YXRpb24g
PSBlbGV2YXRpb247Cit9CisKK2Zsb2F0IFdlYktpdEF1ZGlvUGFubmVyTm9kZTo6ZG9wcGxlclJh
dGUoKQoreworICAgIGRvdWJsZSBkb3BwbGVyU2hpZnQgPSAxLjA7CisKKyAgICAvLyBGSVhNRTog
b3B0aW1pemUgZm9yIGNhc2Ugd2hlbiBuZWl0aGVyIHNvdXJjZSBub3IgbGlzdGVuZXIgaGFzIGNo
YW5nZWQuLi4KKyAgICBkb3VibGUgZG9wcGxlckZhY3RvciA9IGxpc3RlbmVyKCktPmRvcHBsZXJG
YWN0b3IoKTsKKworICAgIGlmIChkb3BwbGVyRmFjdG9yID4gMC4wKSB7CisgICAgICAgIGRvdWJs
ZSBzcGVlZE9mU291bmQgPSBsaXN0ZW5lcigpLT5zcGVlZE9mU291bmQoKTsKKworICAgICAgICBj
b25zdCBGbG9hdFBvaW50M0QgJnNvdXJjZVZlbG9jaXR5ID0gbV92ZWxvY2l0eTsKKyAgICAgICAg
Y29uc3QgRmxvYXRQb2ludDNEICZsaXN0ZW5lclZlbG9jaXR5ID0gbGlzdGVuZXIoKS0+dmVsb2Np
dHkoKTsKKworICAgICAgICAvLyBEb24ndCBib3RoZXIgaWYgYm90aCBzb3VyY2UgYW5kIGxpc3Rl
bmVyIGhhdmUgbm8gdmVsb2NpdHkKKyAgICAgICAgYm9vbCBzb3VyY2VIYXNWZWxvY2l0eSA9ICFz
b3VyY2VWZWxvY2l0eS5pc1plcm8oKTsKKyAgICAgICAgYm9vbCBsaXN0ZW5lckhhc1ZlbG9jaXR5
ID0gIWxpc3RlbmVyVmVsb2NpdHkuaXNaZXJvKCk7CisKKyAgICAgICAgaWYgKHNvdXJjZUhhc1Zl
bG9jaXR5IHx8IGxpc3RlbmVySGFzVmVsb2NpdHkpIHsKKyAgICAgICAgICAgIC8vIENhbGN1bGF0
ZSB0aGUgc291cmNlIHRvIGxpc3RlbmVyIHZlY3RvcgorICAgICAgICAgICAgRmxvYXRQb2ludDNE
IGxpc3RlbmVyUG9zaXRpb24gPSBsaXN0ZW5lcigpLT5wb3NpdGlvbigpOworICAgICAgICAgICAg
RmxvYXRQb2ludDNEIHNvdXJjZVRvTGlzdGVuZXIgPSBwb3NpdGlvbigpIC0gbGlzdGVuZXJQb3Np
dGlvbjsKKworICAgICAgICAgICAgZG91YmxlIHNvdXJjZUxpc3RlbmVyTWFnbml0dWRlID0gc291
cmNlVG9MaXN0ZW5lci5sZW5ndGgoKTsKKworICAgICAgICAgICAgZG91YmxlIGxpc3RlbmVyUHJv
amVjdGlvbiA9IHNvdXJjZVRvTGlzdGVuZXIuZG90KGxpc3RlbmVyVmVsb2NpdHkpIC8gc291cmNl
TGlzdGVuZXJNYWduaXR1ZGU7CisgICAgICAgICAgICBkb3VibGUgc291cmNlUHJvamVjdGlvbiA9
IHNvdXJjZVRvTGlzdGVuZXIuZG90KHNvdXJjZVZlbG9jaXR5KSAvIHNvdXJjZUxpc3RlbmVyTWFn
bml0dWRlOworCisgICAgICAgICAgICBsaXN0ZW5lclByb2plY3Rpb24gPSAtbGlzdGVuZXJQcm9q
ZWN0aW9uOworICAgICAgICAgICAgc291cmNlUHJvamVjdGlvbiA9IC1zb3VyY2VQcm9qZWN0aW9u
OworCisgICAgICAgICAgICBkb3VibGUgc2NhbGVkU3BlZWRPZlNvdW5kID0gc3BlZWRPZlNvdW5k
IC8gZG9wcGxlckZhY3RvcjsKKyAgICAgICAgICAgIGxpc3RlbmVyUHJvamVjdGlvbiA9IHN0ZDo6
bWluKGxpc3RlbmVyUHJvamVjdGlvbiwgc2NhbGVkU3BlZWRPZlNvdW5kKTsKKyAgICAgICAgICAg
IHNvdXJjZVByb2plY3Rpb24gPSBzdGQ6Om1pbihzb3VyY2VQcm9qZWN0aW9uLCBzY2FsZWRTcGVl
ZE9mU291bmQpOworCisgICAgICAgICAgICBkb3BwbGVyU2hpZnQgPSAoKHNwZWVkT2ZTb3VuZCAt
IGRvcHBsZXJGYWN0b3IgKiBsaXN0ZW5lclByb2plY3Rpb24pIC8gKHNwZWVkT2ZTb3VuZCAtIGRv
cHBsZXJGYWN0b3IgKiBzb3VyY2VQcm9qZWN0aW9uKSk7CisgICAgICAgICAgICBmaXhOQU5zKGRv
cHBsZXJTaGlmdCk7IC8vIGF2b2lkIGlsbGVnYWwgdmFsdWVzCisKKyAgICAgICAgICAgIC8vIExp
bWl0IHRoZSBwaXRjaCBzaGlmdGluZyB0byA0IG9jdGF2ZXMgdXAgYW5kIDMgb2N0YXZlcyBkb3du
LgorICAgICAgICAgICAgaWYgKGRvcHBsZXJTaGlmdCA+IDE2LjApCisgICAgICAgICAgICAgICAg
ZG9wcGxlclNoaWZ0ID0gMTYuMDsKKyAgICAgICAgICAgIGVsc2UgaWYgKGRvcHBsZXJTaGlmdCA8
IDAuMTI1KQorICAgICAgICAgICAgICAgIGRvcHBsZXJTaGlmdCA9IDAuMTI1OworICAgICAgICB9
CisgICAgfQorCisgICAgcmV0dXJuIHN0YXRpY19jYXN0PGZsb2F0Pihkb3BwbGVyU2hpZnQpOwor
fQorCitmbG9hdCBXZWJLaXRBdWRpb1Bhbm5lck5vZGU6OmRpc3RhbmNlQ29uZUdhaW4oKQorewor
ICAgIEZsb2F0UG9pbnQzRCBsaXN0ZW5lclBvc2l0aW9uID0gbGlzdGVuZXIoKS0+cG9zaXRpb24o
KTsKKyAgICBGbG9hdFBvaW50M0Qgc291cmNlUG9zaXRpb24gPSBwb3NpdGlvbigpOworCisgICAg
ZG91YmxlIGxpc3RlbmVyRGlzdGFuY2UgPSBzb3VyY2VQb3NpdGlvbi5kaXN0YW5jZVRvKGxpc3Rl
bmVyUG9zaXRpb24pOworICAgIGRvdWJsZSBkaXN0YW5jZUdhaW4gPSBtX2Rpc3RhbmNlRWZmZWN0
LmdhaW4obGlzdGVuZXJEaXN0YW5jZSk7CisKKyAgICBtX2Rpc3RhbmNlR2Fpbi0+c2V0VmFsdWUo
c3RhdGljX2Nhc3Q8ZmxvYXQ+KGRpc3RhbmNlR2FpbikpOworCisgICAgLy8gRklYTUU6IGNvdWxk
IG9wdGltaXplIGJ5IGNhY2hpbmcgY29uZUdhaW4KKyAgICBkb3VibGUgY29uZUdhaW4gPSBtX2Nv
bmVFZmZlY3QuZ2Fpbihzb3VyY2VQb3NpdGlvbiwgbV9vcmllbnRhdGlvbiwgbGlzdGVuZXJQb3Np
dGlvbik7CisKKyAgICBtX2NvbmVHYWluLT5zZXRWYWx1ZShzdGF0aWNfY2FzdDxmbG9hdD4oY29u
ZUdhaW4pKTsKKworICAgIHJldHVybiBmbG9hdChkaXN0YW5jZUdhaW4gKiBjb25lR2Fpbik7Cit9
CisKK3ZvaWQgV2ViS2l0QXVkaW9QYW5uZXJOb2RlOjpub3RpZnlBdWRpb1NvdXJjZXNDb25uZWN0
ZWRUb05vZGUoQXVkaW9Ob2RlKiBub2RlLCBIYXNoU2V0PEF1ZGlvTm9kZSo+JiB2aXNpdGVkTm9k
ZXMpCit7CisgICAgQVNTRVJUKG5vZGUpOworICAgIGlmICghbm9kZSkKKyAgICAgICAgcmV0dXJu
OworCisgICAgLy8gRmlyc3QgY2hlY2sgaWYgdGhpcyBub2RlIGlzIGFuIEF1ZGlvQnVmZmVyU291
cmNlTm9kZS4gSWYgc28sIGxldCBpdCBrbm93IGFib3V0IHVzIHNvIHRoYXQgZG9wcGxlciBzaGlm
dCBwaXRjaCBjYW4gYmUgdGFrZW4gaW50byBhY2NvdW50LgorICAgIGlmIChub2RlLT5ub2RlVHlw
ZSgpID09IE5vZGVUeXBlQXVkaW9CdWZmZXJTb3VyY2UpIHsKKyAgICAgICAgQXVkaW9CdWZmZXJT
b3VyY2VOb2RlKiBidWZmZXJTb3VyY2VOb2RlID0gcmVpbnRlcnByZXRfY2FzdDxBdWRpb0J1ZmZl
clNvdXJjZU5vZGUqPihub2RlKTsKKyAgICAgICAgYnVmZmVyU291cmNlTm9kZS0+c2V0UGFubmVy
Tm9kZSh0aGlzKTsKKyAgICB9IGVsc2UgeworICAgICAgICAvLyBHbyB0aHJvdWdoIGFsbCBpbnB1
dHMgdG8gdGhpcyBub2RlLgorICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbm9kZS0+
bnVtYmVyT2ZJbnB1dHMoKTsgKytpKSB7CisgICAgICAgICAgICBBdWRpb05vZGVJbnB1dCogaW5w
dXQgPSBub2RlLT5pbnB1dChpKTsKKworICAgICAgICAgICAgLy8gRm9yIGVhY2ggaW5wdXQsIGdv
IHRocm91Z2ggYWxsIG9mIGl0cyBjb25uZWN0aW9ucywgbG9va2luZyBmb3IgQXVkaW9CdWZmZXJT
b3VyY2VOb2Rlcy4KKyAgICAgICAgICAgIGZvciAodW5zaWduZWQgaiA9IDA7IGogPCBpbnB1dC0+
bnVtYmVyT2ZSZW5kZXJpbmdDb25uZWN0aW9ucygpOyArK2opIHsKKyAgICAgICAgICAgICAgICBB
dWRpb05vZGVPdXRwdXQqIGNvbm5lY3RlZE91dHB1dCA9IGlucHV0LT5yZW5kZXJpbmdPdXRwdXQo
aik7CisgICAgICAgICAgICAgICAgQXVkaW9Ob2RlKiBjb25uZWN0ZWROb2RlID0gY29ubmVjdGVk
T3V0cHV0LT5ub2RlKCk7CisgICAgICAgICAgICAgICAgaWYgKHZpc2l0ZWROb2Rlcy5jb250YWlu
cyhjb25uZWN0ZWROb2RlKSkKKyAgICAgICAgICAgICAgICAgICAgY29udGludWU7CisKKyAgICAg
ICAgICAgICAgICB2aXNpdGVkTm9kZXMuYWRkKGNvbm5lY3RlZE5vZGUpOworICAgICAgICAgICAg
ICAgIG5vdGlmeUF1ZGlvU291cmNlc0Nvbm5lY3RlZFRvTm9kZShjb25uZWN0ZWROb2RlLCB2aXNp
dGVkTm9kZXMpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorfQorCit9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoV0VCX0FVRElPKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9XZWJLaXRBdWRpb1Bhbm5lck5vZGUu
aCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vV2ViS2l0QXVkaW9QYW5uZXJOb2Rl
LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uODk3OTdjM2M0YzUwYjM2ODkyMDU4MDZjMTk3ZjEwYmQ5YzU2NzZiZQot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vV2ViS2l0
QXVkaW9QYW5uZXJOb2RlLmgKQEAgLTAsMCArMSwxNjAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTAsIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9T
RSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRT
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAq
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTgorICogQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTCisgKiBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21h
IG9uY2UKKworI2lmIEVOQUJMRShXRUJfQVVESU8pCisKKyNpbmNsdWRlICJBdWRpb0xpc3RlbmVy
LmgiCisjaW5jbHVkZSAiQXVkaW9Ob2RlLmgiCisjaW5jbHVkZSAiQXVkaW9QYXJhbS5oIgorI2lu
Y2x1ZGUgIkNvbmUuaCIKKyNpbmNsdWRlICJEaXN0YW5jZS5oIgorI2luY2x1ZGUgIkZsb2F0UG9p
bnQzRC5oIgorI2luY2x1ZGUgIlBhbm5lci5oIgorI2luY2x1ZGUgIlBhbm5lck5vZGUuaCIKKyNp
bmNsdWRlICJXZWJLaXRBdWRpb0NvbnRleHQuaCIKKyNpbmNsdWRlIDxtZW1vcnk+CisjaW5jbHVk
ZSA8d3RmL0hhc2hTZXQuaD4KKyNpbmNsdWRlIDx3dGYvTG9jay5oPgorCituYW1lc3BhY2UgV2Vi
Q29yZSB7CisKK2NsYXNzIEhSVEZEYXRhYmFzZUxvYWRlcjsKKworLy8gUGFubmVyTm9kZSBpcyBh
biBBdWRpb05vZGUgd2l0aCBvbmUgaW5wdXQgYW5kIG9uZSBvdXRwdXQuCisvLyBJdCBwb3NpdGlv
bnMgYSBzb3VuZCBpbiAzRCBzcGFjZSwgd2l0aCB0aGUgZXhhY3QgZWZmZWN0IGRlcGVuZGVudCBv
biB0aGUgcGFubmluZyBtb2RlbC4KKy8vIEl0IGhhcyBhIHBvc2l0aW9uIGFuZCBhbiBvcmllbnRh
dGlvbiBpbiAzRCBzcGFjZSB3aGljaCBpcyByZWxhdGl2ZSB0byB0aGUgcG9zaXRpb24gYW5kIG9y
aWVudGF0aW9uIG9mIHRoZSBjb250ZXh0J3MgQXVkaW9MaXN0ZW5lci4KKy8vIEEgZGlzdGFuY2Ug
ZWZmZWN0IHdpbGwgYXR0ZW51YXRlIHRoZSBnYWluIGFzIHRoZSBwb3NpdGlvbiBtb3ZlcyBhd2F5
IGZyb20gdGhlIGxpc3RlbmVyLgorLy8gQSBjb25lIGVmZmVjdCB3aWxsIGF0dGVudWF0ZSB0aGUg
Z2FpbiBhcyB0aGUgb3JpZW50YXRpb24gbW92ZXMgYXdheSBmcm9tIHRoZSBsaXN0ZW5lci4KKy8v
IEFsbCBvZiB0aGVzZSBlZmZlY3RzIGZvbGxvdyB0aGUgT3BlbkFMIHNwZWNpZmljYXRpb24gdmVy
eSBjbG9zZWx5LgorCitjbGFzcyBXZWJLaXRBdWRpb1Bhbm5lck5vZGUgZmluYWwgOiBwdWJsaWMg
UGFubmVyTm9kZUJhc2UgeworICAgIFdURl9NQUtFX0lTT19BTExPQ0FURUQoV2ViS2l0QXVkaW9Q
YW5uZXJOb2RlKTsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUmVmPFdlYktpdEF1ZGlvUGFubmVyTm9k
ZT4gY3JlYXRlKFdlYktpdEF1ZGlvQ29udGV4dCYgY29udGV4dCwgZmxvYXQgc2FtcGxlUmF0ZSkK
KyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFdlYktpdEF1ZGlvUGFubmVyTm9k
ZShjb250ZXh0LCBzYW1wbGVSYXRlKSk7CisgICAgfQorCisgICAgdmlydHVhbCB+V2ViS2l0QXVk
aW9QYW5uZXJOb2RlKCk7CisKKyAgICBXZWJLaXRBdWRpb0NvbnRleHQmIGNvbnRleHQoKSB7IHJl
dHVybiBkb3duY2FzdDxXZWJLaXRBdWRpb0NvbnRleHQ+KEF1ZGlvTm9kZTo6Y29udGV4dCgpKTsg
fQorICAgIGNvbnN0IFdlYktpdEF1ZGlvQ29udGV4dCYgY29udGV4dCgpIGNvbnN0IHsgcmV0dXJu
IGRvd25jYXN0PFdlYktpdEF1ZGlvQ29udGV4dD4oQXVkaW9Ob2RlOjpjb250ZXh0KCkpOyB9CisK
KyAgICAvLyBBdWRpb05vZGUKKyAgICB2b2lkIHByb2Nlc3Moc2l6ZV90IGZyYW1lc1RvUHJvY2Vz
cykgb3ZlcnJpZGU7CisgICAgdm9pZCBwdWxsSW5wdXRzKHNpemVfdCBmcmFtZXNUb1Byb2Nlc3Mp
IG92ZXJyaWRlOworICAgIHZvaWQgcmVzZXQoKSBvdmVycmlkZTsKKyAgICB2b2lkIGluaXRpYWxp
emUoKSBvdmVycmlkZTsKKyAgICB2b2lkIHVuaW5pdGlhbGl6ZSgpIG92ZXJyaWRlOworCisgICAg
Ly8gTGlzdGVuZXIKKyAgICBBdWRpb0xpc3RlbmVyKiBsaXN0ZW5lcigpOworCisgICAgLy8gUGFu
bmluZyBtb2RlbAorICAgIFBhbm5pbmdNb2RlbFR5cGUgcGFubmluZ01vZGVsKCkgY29uc3QgeyBy
ZXR1cm4gbV9wYW5uaW5nTW9kZWw7IH0KKyAgICB2b2lkIHNldFBhbm5pbmdNb2RlbChQYW5uaW5n
TW9kZWxUeXBlKTsKKworICAgIC8vIFBvc2l0aW9uCisgICAgRmxvYXRQb2ludDNEIHBvc2l0aW9u
KCkgY29uc3QgeyByZXR1cm4gbV9wb3NpdGlvbjsgfQorICAgIHZvaWQgc2V0UG9zaXRpb24oZmxv
YXQgeCwgZmxvYXQgeSwgZmxvYXQgeikgeyBtX3Bvc2l0aW9uID0gRmxvYXRQb2ludDNEKHgsIHks
IHopOyB9CisKKyAgICAvLyBPcmllbnRhdGlvbgorICAgIEZsb2F0UG9pbnQzRCBvcmllbnRhdGlv
bigpIGNvbnN0IHsgcmV0dXJuIG1fb3JpZW50YXRpb247IH0KKyAgICB2b2lkIHNldE9yaWVudGF0
aW9uKGZsb2F0IHgsIGZsb2F0IHksIGZsb2F0IHopIHsgbV9vcmllbnRhdGlvbiA9IEZsb2F0UG9p
bnQzRCh4LCB5LCB6KTsgfQorCisgICAgLy8gVmVsb2NpdHkKKyAgICBGbG9hdFBvaW50M0QgdmVs
b2NpdHkoKSBjb25zdCB7IHJldHVybiBtX3ZlbG9jaXR5OyB9CisgICAgdm9pZCBzZXRWZWxvY2l0
eShmbG9hdCB4LCBmbG9hdCB5LCBmbG9hdCB6KSB7IG1fdmVsb2NpdHkgPSBGbG9hdFBvaW50M0Qo
eCwgeSwgeik7IH0KKworICAgIC8vIERpc3RhbmNlIHBhcmFtZXRlcnMKKyAgICBEaXN0YW5jZU1v
ZGVsVHlwZSBkaXN0YW5jZU1vZGVsKCkgY29uc3Q7CisgICAgdm9pZCBzZXREaXN0YW5jZU1vZGVs
KERpc3RhbmNlTW9kZWxUeXBlKTsKKworICAgIGRvdWJsZSByZWZEaXN0YW5jZSgpIHsgcmV0dXJu
IG1fZGlzdGFuY2VFZmZlY3QucmVmRGlzdGFuY2UoKTsgfQorICAgIHZvaWQgc2V0UmVmRGlzdGFu
Y2UoZG91YmxlIHJlZkRpc3RhbmNlKSB7IG1fZGlzdGFuY2VFZmZlY3Quc2V0UmVmRGlzdGFuY2Uo
cmVmRGlzdGFuY2UpOyB9CisKKyAgICBkb3VibGUgbWF4RGlzdGFuY2UoKSB7IHJldHVybiBtX2Rp
c3RhbmNlRWZmZWN0Lm1heERpc3RhbmNlKCk7IH0KKyAgICB2b2lkIHNldE1heERpc3RhbmNlKGRv
dWJsZSBtYXhEaXN0YW5jZSkgeyBtX2Rpc3RhbmNlRWZmZWN0LnNldE1heERpc3RhbmNlKG1heERp
c3RhbmNlKTsgfQorCisgICAgZG91YmxlIHJvbGxvZmZGYWN0b3IoKSB7IHJldHVybiBtX2Rpc3Rh
bmNlRWZmZWN0LnJvbGxvZmZGYWN0b3IoKTsgfQorICAgIHZvaWQgc2V0Um9sbG9mZkZhY3Rvcihk
b3VibGUgcm9sbG9mZkZhY3RvcikgeyBtX2Rpc3RhbmNlRWZmZWN0LnNldFJvbGxvZmZGYWN0b3Io
cm9sbG9mZkZhY3Rvcik7IH0KKworICAgIC8vIFNvdW5kIGNvbmVzIC0gYW5nbGVzIGluIGRlZ3Jl
ZXMKKyAgICBkb3VibGUgY29uZUlubmVyQW5nbGUoKSBjb25zdCB7IHJldHVybiBtX2NvbmVFZmZl
Y3QuaW5uZXJBbmdsZSgpOyB9CisgICAgdm9pZCBzZXRDb25lSW5uZXJBbmdsZShkb3VibGUgYW5n
bGUpIHsgbV9jb25lRWZmZWN0LnNldElubmVyQW5nbGUoYW5nbGUpOyB9CisKKyAgICBkb3VibGUg
Y29uZU91dGVyQW5nbGUoKSBjb25zdCB7IHJldHVybiBtX2NvbmVFZmZlY3Qub3V0ZXJBbmdsZSgp
OyB9CisgICAgdm9pZCBzZXRDb25lT3V0ZXJBbmdsZShkb3VibGUgYW5nbGUpIHsgbV9jb25lRWZm
ZWN0LnNldE91dGVyQW5nbGUoYW5nbGUpOyB9CisKKyAgICBkb3VibGUgY29uZU91dGVyR2Fpbigp
IGNvbnN0IHsgcmV0dXJuIG1fY29uZUVmZmVjdC5vdXRlckdhaW4oKTsgfQorICAgIHZvaWQgc2V0
Q29uZU91dGVyR2Fpbihkb3VibGUgYW5nbGUpIHsgbV9jb25lRWZmZWN0LnNldE91dGVyR2Fpbihh
bmdsZSk7IH0KKworICAgIHZvaWQgZ2V0QXppbXV0aEVsZXZhdGlvbihkb3VibGUqIG91dEF6aW11
dGgsIGRvdWJsZSogb3V0RWxldmF0aW9uKTsKKyAgICBmbG9hdCBkb3BwbGVyUmF0ZSgpIGZpbmFs
OworCisgICAgLy8gQWNjZXNzb3JzIGZvciBkeW5hbWljYWxseSBjYWxjdWxhdGVkIGdhaW4gdmFs
dWVzLgorICAgIEF1ZGlvUGFyYW0qIGRpc3RhbmNlR2FpbigpIHsgcmV0dXJuIG1fZGlzdGFuY2VH
YWluLmdldCgpOyB9CisgICAgQXVkaW9QYXJhbSogY29uZUdhaW4oKSB7IHJldHVybiBtX2NvbmVH
YWluLmdldCgpOyB9CisKKyAgICBkb3VibGUgdGFpbFRpbWUoKSBjb25zdCBvdmVycmlkZSB7IHJl
dHVybiBtX3Bhbm5lciA/IG1fcGFubmVyLT50YWlsVGltZSgpIDogMDsgfQorICAgIGRvdWJsZSBs
YXRlbmN5VGltZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fcGFubmVyID8gbV9wYW5uZXIt
PmxhdGVuY3lUaW1lKCkgOiAwOyB9CisKK3ByaXZhdGU6CisgICAgV2ViS2l0QXVkaW9QYW5uZXJO
b2RlKFdlYktpdEF1ZGlvQ29udGV4dCYsIGZsb2F0IHNhbXBsZVJhdGUpOworCisgICAgLy8gUmV0
dXJucyB0aGUgY29tYmluZWQgZGlzdGFuY2UgYW5kIGNvbmUgZ2FpbiBhdHRlbnVhdGlvbi4KKyAg
ICBmbG9hdCBkaXN0YW5jZUNvbmVHYWluKCk7CisKKyAgICAvLyBOb3RpZmllcyBhbnkgQXVkaW9C
dWZmZXJTb3VyY2VOb2RlcyBjb25uZWN0ZWQgdG8gdXMgZWl0aGVyIGRpcmVjdGx5IG9yIGluZGly
ZWN0bHkgYWJvdXQgb3VyIGV4aXN0ZW5jZS4KKyAgICAvLyBUaGlzIGlzIGluIG9yZGVyIHRvIGhh
bmRsZSB0aGUgcGl0Y2ggY2hhbmdlIG5lY2Vzc2FyeSBmb3IgdGhlIGRvcHBsZXIgc2hpZnQuCisg
ICAgdm9pZCBub3RpZnlBdWRpb1NvdXJjZXNDb25uZWN0ZWRUb05vZGUoQXVkaW9Ob2RlKiwgSGFz
aFNldDxBdWRpb05vZGUqPiYgdmlzaXRlZE5vZGVzKTsKKworICAgIHN0ZDo6dW5pcXVlX3B0cjxQ
YW5uZXI+IG1fcGFubmVyOworICAgIFBhbm5pbmdNb2RlbFR5cGUgbV9wYW5uaW5nTW9kZWw7CisK
KyAgICBGbG9hdFBvaW50M0QgbV9wb3NpdGlvbjsKKyAgICBGbG9hdFBvaW50M0QgbV9vcmllbnRh
dGlvbjsKKyAgICBGbG9hdFBvaW50M0QgbV92ZWxvY2l0eTsKKworICAgIC8vIEdhaW4KKyAgICBS
ZWZQdHI8QXVkaW9QYXJhbT4gbV9kaXN0YW5jZUdhaW47CisgICAgUmVmUHRyPEF1ZGlvUGFyYW0+
IG1fY29uZUdhaW47CisgICAgRGlzdGFuY2VFZmZlY3QgbV9kaXN0YW5jZUVmZmVjdDsKKyAgICBD
b25lRWZmZWN0IG1fY29uZUVmZmVjdDsKKyAgICBmbG9hdCBtX2xhc3RHYWluOworCisgICAgLy8g
SFJURiBEYXRhYmFzZSBsb2FkZXIKKyAgICBSZWZQdHI8SFJURkRhdGFiYXNlTG9hZGVyPiBtX2hy
dGZEYXRhYmFzZUxvYWRlcjsKKworICAgIHVuc2lnbmVkIG1fY29ubmVjdGlvbkNvdW50OworCisg
ICAgLy8gU3luY2hyb25pemUgcHJvY2VzcygpIGFuZCBzZXRQYW5uaW5nTW9kZWwoKSB3aGljaCBj
YW4gY2hhbmdlIHRoZSBwYW5uZXIuCisgICAgbXV0YWJsZSBMb2NrIG1fcGFubmVyTXV0ZXg7Cit9
OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9XZWJLaXRBdWRpb1Bhbm5lck5vZGUuaWRsIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9XZWJLaXRBdWRpb1Bhbm5lck5vZGUuaWRsCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjg4ZDI2OTEwYWUxNzUwNDIxMzZhNWU2MmZhYzgxM2NjNWZjMzY3MmYKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1dlYktpdEF1ZGlv
UGFubmVyTm9kZS5pZGwKQEAgLTAsMCArMSw0OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
MCwgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFS
RQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OCisgKiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKKyAqIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKK1sKKyAgICBDb25k
aXRpb25hbD1XRUJfQVVESU8sCisgICAgSlNHZW5lcmF0ZVRvSlNPYmplY3QsCisgICAgSW50ZXJm
YWNlTmFtZT13ZWJraXRBdWRpb1Bhbm5lck5vZGUsCitdIGludGVyZmFjZSBXZWJLaXRBdWRpb1Bh
bm5lck5vZGUgOiBBdWRpb05vZGUgeworICAgIC8vIERlZmF1bHQgbW9kZWwgZm9yIHN0ZXJlbyBp
cyBIUlRGCisgICAgYXR0cmlidXRlIFBhbm5pbmdNb2RlbFR5cGUgcGFubmluZ01vZGVsOworCisg
ICAgLy8gVXNlcyBhIDNEIGNhcnRlc2lhbiBjb29yZGluYXRlIHN5c3RlbQorICAgIHZvaWQgc2V0
UG9zaXRpb24odW5yZXN0cmljdGVkIGZsb2F0IHgsIHVucmVzdHJpY3RlZCBmbG9hdCB5LCB1bnJl
c3RyaWN0ZWQgZmxvYXQgeik7CisgICAgdm9pZCBzZXRPcmllbnRhdGlvbih1bnJlc3RyaWN0ZWQg
ZmxvYXQgeCwgdW5yZXN0cmljdGVkIGZsb2F0IHksIHVucmVzdHJpY3RlZCBmbG9hdCB6KTsKKyAg
ICB2b2lkIHNldFZlbG9jaXR5KHVucmVzdHJpY3RlZCBmbG9hdCB4LCB1bnJlc3RyaWN0ZWQgZmxv
YXQgeSwgdW5yZXN0cmljdGVkIGZsb2F0IHopOworCisgICAgLy8gRGlzdGFuY2UgbW9kZWwKKyAg
ICBhdHRyaWJ1dGUgRGlzdGFuY2VNb2RlbFR5cGUgZGlzdGFuY2VNb2RlbDsKKworICAgIGF0dHJp
YnV0ZSB1bnJlc3RyaWN0ZWQgZG91YmxlIHJlZkRpc3RhbmNlOworICAgIGF0dHJpYnV0ZSB1bnJl
c3RyaWN0ZWQgZG91YmxlIG1heERpc3RhbmNlOworICAgIGF0dHJpYnV0ZSB1bnJlc3RyaWN0ZWQg
ZG91YmxlIHJvbGxvZmZGYWN0b3I7CisKKyAgICAvLyBEaXJlY3Rpb25hbCBzb3VuZCBjb25lCisg
ICAgYXR0cmlidXRlIHVucmVzdHJpY3RlZCBkb3VibGUgY29uZUlubmVyQW5nbGU7CisgICAgYXR0
cmlidXRlIHVucmVzdHJpY3RlZCBkb3VibGUgY29uZU91dGVyQW5nbGU7CisgICAgYXR0cmlidXRl
IHVucmVzdHJpY3RlZCBkb3VibGUgY29uZU91dGVyR2FpbjsKK307CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1dlYktpdE9mZmxpbmVBdWRpb0NvbnRleHQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9XZWJLaXRPZmZsaW5lQXVkaW9Db250
ZXh0LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi5kOGUzOTlhMTRhM2Q1ZDMxNjc1YmE5YTA2ZjgxNDAzMTIzNTJi
NGExCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9X
ZWJLaXRPZmZsaW5lQXVkaW9Db250ZXh0LmNwcApAQCAtMCwwICsxLDYyIEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDEyLCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisg
KiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04K
KyAqIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUworICogU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaWYgRU5BQkxFKFdFQl9BVURJTykKKworI2luY2x1
ZGUgIldlYktpdE9mZmxpbmVBdWRpb0NvbnRleHQuaCIKKworI2luY2x1ZGUgIkF1ZGlvQnVmZmVy
LmgiCisjaW5jbHVkZSAiRG9jdW1lbnQuaCIKKyNpbmNsdWRlIDx3dGYvSXNvTWFsbG9jSW5saW5l
cy5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1dURl9NQUtFX0lTT19BTExPQ0FURURfSU1Q
TChXZWJLaXRPZmZsaW5lQXVkaW9Db250ZXh0KTsKKworaW5saW5lIFdlYktpdE9mZmxpbmVBdWRp
b0NvbnRleHQ6OldlYktpdE9mZmxpbmVBdWRpb0NvbnRleHQoRG9jdW1lbnQmIGRvY3VtZW50LCBB
dWRpb0J1ZmZlciogcmVuZGVyVGFyZ2V0KQorICAgIDogV2ViS2l0QXVkaW9Db250ZXh0KGRvY3Vt
ZW50LCByZW5kZXJUYXJnZXQpCit7Cit9CisKK0V4Y2VwdGlvbk9yPFJlZjxXZWJLaXRPZmZsaW5l
QXVkaW9Db250ZXh0Pj4gV2ViS2l0T2ZmbGluZUF1ZGlvQ29udGV4dDo6Y3JlYXRlKFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIHVuc2lnbmVkIG51bWJlck9mQ2hhbm5lbHMsIHNpemVf
dCBudW1iZXJPZkZyYW1lcywgZmxvYXQgc2FtcGxlUmF0ZSkKK3sKKyAgICAvLyBGSVhNRTogQWRk
IHN1cHBvcnQgZm9yIHdvcmtlcnMuCisgICAgaWYgKCFpczxEb2N1bWVudD4oY29udGV4dCkpCisg
ICAgICAgIHJldHVybiBFeGNlcHRpb24geyBOb3RTdXBwb3J0ZWRFcnJvciB9OworICAgIGlmICgh
bnVtYmVyT2ZDaGFubmVscyB8fCBudW1iZXJPZkNoYW5uZWxzID4gMTAgfHwgIW51bWJlck9mRnJh
bWVzIHx8ICFpc1NhbXBsZVJhdGVSYW5nZUdvb2Qoc2FtcGxlUmF0ZSkpCisgICAgICAgIHJldHVy
biBFeGNlcHRpb24geyBTeW50YXhFcnJvciB9OworICAgIGF1dG8gcmVuZGVyVGFyZ2V0ID0gQXVk
aW9CdWZmZXI6OmNyZWF0ZShudW1iZXJPZkNoYW5uZWxzLCBudW1iZXJPZkZyYW1lcywgc2FtcGxl
UmF0ZSk7CisgICAgaWYgKCFyZW5kZXJUYXJnZXQpCisgICAgICAgIHJldHVybiBFeGNlcHRpb24g
eyBTeW50YXhFcnJvciB9OworCisgICAgYXV0byBhdWRpb0NvbnRleHQgPSBhZG9wdFJlZigqbmV3
IFdlYktpdE9mZmxpbmVBdWRpb0NvbnRleHQoZG93bmNhc3Q8RG9jdW1lbnQ+KGNvbnRleHQpLCBy
ZW5kZXJUYXJnZXQuZ2V0KCkpKTsKKyAgICBhdWRpb0NvbnRleHQtPnN1c3BlbmRJZk5lZWRlZCgp
OworICAgIHJldHVybiBhdWRpb0NvbnRleHQ7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
KworI2VuZGlmIC8vIEVOQUJMRShXRUJfQVVESU8pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmF1ZGlvL1dlYktpdE9mZmxpbmVBdWRpb0NvbnRleHQuaCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vV2ViS2l0T2ZmbGluZUF1ZGlvQ29udGV4dC5oCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLmMyNTRlZDQxZmUwM2Q2MWU3ZWNiNTQ4N2UyYzc5YzQ3NDYxODJmOTQKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1dlYktpdE9mZmxpbmVB
dWRpb0NvbnRleHQuaApAQCAtMCwwICsxLDQwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEy
LCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAg
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJF
CisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04KKyAqIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUworICogU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNl
CisKKyNpbmNsdWRlICJXZWJLaXRBdWRpb0NvbnRleHQuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUg
eworCitjbGFzcyBXZWJLaXRPZmZsaW5lQXVkaW9Db250ZXh0IGZpbmFsIDogcHVibGljIFdlYktp
dEF1ZGlvQ29udGV4dCB7CisgICAgV1RGX01BS0VfSVNPX0FMTE9DQVRFRChXZWJLaXRPZmZsaW5l
QXVkaW9Db250ZXh0KTsKK3B1YmxpYzoKKyAgICBzdGF0aWMgRXhjZXB0aW9uT3I8UmVmPFdlYktp
dE9mZmxpbmVBdWRpb0NvbnRleHQ+PiBjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIHVu
c2lnbmVkIG51bWJlck9mQ2hhbm5lbHMsIHNpemVfdCBudW1iZXJPZkZyYW1lcywgZmxvYXQgc2Ft
cGxlUmF0ZSk7CisKK3ByaXZhdGU6CisgICAgV2ViS2l0T2ZmbGluZUF1ZGlvQ29udGV4dChEb2N1
bWVudCYsIEF1ZGlvQnVmZmVyKiByZW5kZXJUYXJnZXQpOworfTsKKworfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9XZWJL
aXRPZmZsaW5lQXVkaW9Db250ZXh0LmlkbCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVk
aW8vV2ViS2l0T2ZmbGluZUF1ZGlvQ29udGV4dC5pZGwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNTZhNjQ4YmMyYTVm
MjFjMzA1ZGQ0ODBjNDFhMDA1MjMxMjRkY2JmMQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vV2ViS2l0T2ZmbGluZUF1ZGlvQ29udGV4dC5pZGwKQEAg
LTAsMCArMSwzMSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiwgR29vZ2xlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5EIEFO
WQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOwor
ICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OCisgKiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMKKyAqIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKK1sKKyAgICBDb25kaXRpb25hbD1XRUJfQVVESU8s
CisgICAgSW50ZXJmYWNlTmFtZT13ZWJraXRPZmZsaW5lQXVkaW9Db250ZXh0LAorICAgIEpTR2Vu
ZXJhdGVUb0pTT2JqZWN0LAorXSBpbnRlcmZhY2UgV2ViS2l0T2ZmbGluZUF1ZGlvQ29udGV4dCA6
IFdlYktpdEF1ZGlvQ29udGV4dCB7CisgICAgW0NhbGxXaXRoPVNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQsIE1heVRocm93RXhjZXB0aW9uXSBjb25zdHJ1Y3Rvcih1bnNpZ25lZCBsb25nIG51bWJlck9m
Q2hhbm5lbHMsIHVuc2lnbmVkIGxvbmcgbnVtYmVyT2ZGcmFtZXMsIHVucmVzdHJpY3RlZCBmbG9h
dCBzYW1wbGVSYXRlKTsKK307CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4
dCBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CmluZGV4IDJjNTZlZDUxMzlkYjA3OWE4NmM3
NzUxYTk1NjM4Y2IyNDhiZmU2YzcuLjE0OTU5YzM4MTUwMzU2YTg3ZGVlZTMyZWZiMzdiMjYyNTY1
ZjI2ZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CisrKyBiL1NvdXJj
ZS9XZWJDb3JlL1NvdXJjZXMudHh0CkBAIC0yNjksNiArMjY5LDkgQEAgTW9kdWxlcy93ZWJhdWRp
by9TY3JpcHRQcm9jZXNzb3JOb2RlLmNwcAogTW9kdWxlcy93ZWJhdWRpby9XYXZlU2hhcGVyRFNQ
S2VybmVsLmNwcAogTW9kdWxlcy93ZWJhdWRpby9XYXZlU2hhcGVyTm9kZS5jcHAKIE1vZHVsZXMv
d2ViYXVkaW8vV2F2ZVNoYXBlclByb2Nlc3Nvci5jcHAKK01vZHVsZXMvd2ViYXVkaW8vV2ViS2l0
QXVkaW9Db250ZXh0LmNwcAorTW9kdWxlcy93ZWJhdWRpby9XZWJLaXRBdWRpb1Bhbm5lck5vZGUu
Y3BwCitNb2R1bGVzL3dlYmF1ZGlvL1dlYktpdE9mZmxpbmVBdWRpb0NvbnRleHQuY3BwCiAKIE1v
ZHVsZXMvd2ViYXV0aG4vQXV0aGVudGljYXRvckNvb3JkaW5hdG9yLmNwcAogTW9kdWxlcy93ZWJh
dXRobi9BdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2UuY3BwCkBAIC0yNzQ0LDYgKzI3NDcs
NyBAQCBKU0F1ZGlvQnVmZmVyQ2FsbGJhY2suY3BwCiBKU0F1ZGlvQnVmZmVyU291cmNlTm9kZS5j
cHAKIEpTQXVkaW9Db25maWd1cmF0aW9uLmNwcAogSlNBdWRpb0NvbnRleHQuY3BwCitKU0F1ZGlv
Q29udGV4dFN0YXRlLmNwcAogSlNBdWRpb0Rlc3RpbmF0aW9uTm9kZS5jcHAKIEpTQXVkaW9MaXN0
ZW5lci5jcHAKIEpTQXVkaW9Ob2RlLmNwcApAQCAtMjkxNCw2ICsyOTE4LDcgQEAgSlNEZXZpY2VN
b3Rpb25FdmVudC5jcHAKIEpTRGV2aWNlT3JpZW50YXRpb25FdmVudC5jcHAKIEpTRGV2aWNlT3Jp
ZW50YXRpb25Pck1vdGlvblBlcm1pc3Npb25TdGF0ZS5jcHAKIEpTRGV2aWNlT3JpZW50YXRpb25P
ck1vdGlvbkV2ZW50LmNwcAorSlNEaXN0YW5jZU1vZGVsVHlwZS5jcHAKIEpTRG9jdW1lbnQuY3Bw
CiBKU0RvY3VtZW50QW5kRWxlbWVudEV2ZW50SGFuZGxlcnMuY3BwCiBKU0RvY3VtZW50RnJhZ21l
bnQuY3BwCkBAIC0zMjExLDYgKzMyMTYsNyBAQCBKU092ZXJmbG93RXZlbnQuY3BwCiBKU1BhZ2VU
cmFuc2l0aW9uRXZlbnQuY3BwCiBKU1BhaW50UmVuZGVyaW5nQ29udGV4dDJELmNwcAogSlNQYW5u
ZXJOb2RlLmNwcAorSlNQYW5uaW5nTW9kZWxUeXBlLmNwcAogSlNQYXJlbnROb2RlLmNwcAogSlNQ
YXRoMkQuY3BwCiBKU1BheWVyRXJyb3JGaWVsZHMuY3BwCkBAIC0zNTY3LDcgKzM1NzMsMTAgQEAg
SlNXZWJHUFVTd2FwQ2hhaW4uY3BwCiBKU1dlYkdQVVRleHR1cmUuY3BwCiBKU1dlYkdQVVRleHR1
cmVWaWV3LmNwcAogSlNXZWJLaXRBbmltYXRpb25FdmVudC5jcHAKK0pTV2ViS2l0QXVkaW9Db250
ZXh0LmNwcAorSlNXZWJLaXRBdWRpb1Bhbm5lck5vZGUuY3BwCiBKU1dlYktpdENTU01hdHJpeC5j
cHAKK0pTV2ViS2l0T2ZmbGluZUF1ZGlvQ29udGV4dC5jcHAKIEpTV2ViS2l0UGxheWJhY2tUYXJn
ZXRBdmFpbGFiaWxpdHlFdmVudC5jcHAKIEpTV2ViS2l0UG9pbnQuY3BwCiBKU1dlYktpdFRyYW5z
aXRpb25FdmVudC5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagppbmRleCBjN2FhYzg1OTY3Njc4MThiNjlkMzU4ZTNhZDgwNDg0ZTEyNjRi
ODYwLi40NmY5NmQxNTBjYmYxYjdmYmQ4NjU5MjRiNmIxNGQyZjZjODcyZWQ0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIv
U291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0yNDA3
LDEyICsyNDA3LDE2IEBACiAJCTgzMDAzMEY4MUI3RDNCNzgwMEVEM0FBQyAvKiBDYWNoZWRIVE1M
Q29sbGVjdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gODMwMDMwRjcxQjdEMzk4ODAwRUQzQUFDIC8qIENhY2hlZEhUTUxDb2xsZWN0aW9uLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJODMwMzM1MDIx
RjU0OTA1NzAwNERGNzA3IC8qIEZpbGVTeXN0ZW1EaXJlY3RvcnlSZWFkZXIuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgzMDMzNEZDMUY1NDkwNTIwMDRE
RjcwNyAvKiBGaWxlU3lzdGVtRGlyZWN0b3J5UmVhZGVyLmggKi87IH07CiAJCTgzMDMzNTAzMUY1
NDkwNUEwMDRERjcwNyAvKiBGaWxlU3lzdGVtRW50cmllc0NhbGxiYWNrLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4MzAzMzRGRTFGNTQ5MDUyMDA0REY3
MDcgLyogRmlsZVN5c3RlbUVudHJpZXNDYWxsYmFjay5oICovOyB9OworCQk4MzA0MDI4MjI0OUE3
QTVGMDBBOTBEOEQgLyogUGFubmluZ01vZGVsVHlwZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODMwNDAyODAyNDlBN0E1QzAwQTkwRDhEIC8qIFBhbm5p
bmdNb2RlbFR5cGUuaCAqLzsgfTsKKwkJODMwNDAyODMyNDlBN0E2MjAwQTkwRDhEIC8qIERpc3Rh
bmNlTW9kZWxUeXBlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA4MzA0MDI3RDI0OUE3QTVCMDBBOTBEOEQgLyogRGlzdGFuY2VNb2RlbFR5cGUuaCAqLzsg
fTsKIAkJODMwNTE5OTYxQkIwRjExMDAwRjM3NzJFIC8qIEhUTUxUaW1lRWxlbWVudC5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODMwNTE5OTMxQkIwRjBF
NzAwRjM3NzJFIC8qIEhUTUxUaW1lRWxlbWVudC5oICovOyB9OwogCQk4MzA3ODRCMjFDNTJFRTJD
MDAxMDREMUQgLyogWE1MRG9jdW1lbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDgzMDc4NEIxMUM1MkVFMTkwMDEwNEQxRCAvKiBYTUxEb2N1bWVudC5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTgzMEEz
NkJEMURBQzVGQUQwMDZEN0QwOSAvKiBKU01vdXNlRXZlbnRJbml0LmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4MzBBMzZCQjFEQUM1RkE3MDA2RDdEMDkg
LyogSlNNb3VzZUV2ZW50SW5pdC5oICovOyB9OwogCQk4MzEwMkIyNzFGOUVBREQ5MDBFNDA0Qjkg
LyogSlNFeHRlbmRhYmxlTWVzc2FnZUV2ZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA4MzEwMkIyMzFGOUVBREMyMDBFNDA0QjkgLyogSlNFeHRlbmRh
YmxlTWVzc2FnZUV2ZW50LmggKi87IH07CiAJCTgzMTFDMDAzMUZBQTJFOTUwMEUzQzhFNSAvKiBT
V1NlcnZlckpvYlF1ZXVlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA4MzExQzAwMjFGQUEyRTg5MDBFM0M4RTUgLyogU1dTZXJ2ZXJKb2JRdWV1ZS5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTgzMTIwQzcx
MUM1NkYzRkIwMDFDQjExMiAvKiBIVE1MRGF0YUVsZW1lbnQuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgzNEI4NkE3MUM1NkU4M0EwMEYzRjBFMyAvKiBI
VE1MRGF0YUVsZW1lbnQuaCAqLzsgfTsKKwkJODMxQjYxNzYyNDk5QTVCQjAwQzA3Qzc5IC8qIFdl
YktpdEF1ZGlvUGFubmVyTm9kZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gODMxQjYxNzQyNDk5QTU5QzAwQzA3Qzc5IC8qIFdlYktpdEF1ZGlvUGFubmVy
Tm9kZS5oICovOyB9OworCQk4MzFCNjE3NzI0OTlBNUJGMDBDMDdDNzkgLyogV2ViS2l0T2ZmbGlu
ZUF1ZGlvQ29udGV4dC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gODMxQjYxNzUyNDk5QTU5RDAwQzA3Qzc5IC8qIFdlYktpdE9mZmxpbmVBdWRpb0NvbnRl
eHQuaCAqLzsgfTsKIAkJODMyMTUwN0UxRjI3RUExQjAwOTVCMTM2IC8qIE5hdmlnYXRvckJlYWNv
bi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODMyMTUw
N0IxRjI3RUExNTAwOTVCMTM2IC8qIE5hdmlnYXRvckJlYWNvbi5oICovOyB9OwogCQk4MzJCODQz
NDE5RDhFNTUxMDBCMjYwNTUgLyogU1ZHQW5pbWF0ZUVsZW1lbnRCYXNlLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4MzJCODQzMzE5RDhFNTUxMDBCMjYw
NTUgLyogU1ZHQW5pbWF0ZUVsZW1lbnRCYXNlLmggKi87IH07CiAJCTgzM0I5RTMyMUY1MDhEODUw
MEUwRTQyOCAvKiBKU0ZpbGVTeXN0ZW1EaXJlY3RvcnlFbnRyeS5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODMzQjlFMkYxRjUwOEQ4MDAwRTBFNDI4IC8q
IEpTRmlsZVN5c3RlbURpcmVjdG9yeUVudHJ5LmggKi87IH07CkBAIC0yNDY4LDEwICsyNDcyLDEy
IEBACiAJCTgzOUEyRjJFMUUyMDRBNzEwMDM5MDU3RSAvKiBXZWJHTFN0YXRlVHJhY2tlci5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODM5QTJGMkMxRTIw
NEE2RDAwMzkwNTdFIC8qIFdlYkdMU3RhdGVUcmFja2VyLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJODM5QUFGRUQxQTBDMEM4RDAwNjA1Rjk5IC8q
IEhUTUxXQlJFbGVtZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA4MzlBQUZFQjFBMEMwQzhEMDA2MDVGOTkgLyogSFRNTFdCUkVsZW1lbnQuaCAqLzsg
fTsKIAkJODNBOEFDNDAxRkFCQkZFNTAwMjA2NEFDIC8qIFNlcnZpY2VXb3JrZXJJZGVudGlmaWVy
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4M0E4QUMz
RTFGQUJCRkQxMDAyMDY0QUMgLyogU2VydmljZVdvcmtlcklkZW50aWZpZXIuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk4M0IxQTcwMjI0OTk4NUYw
MDBGRTU5NjEgLyogV2ViS2l0QXVkaW9Db250ZXh0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4M0IxQTZGRjI0OTk4NUQwMDBGRTU5NjEgLyogV2ViS2l0
QXVkaW9Db250ZXh0LmggKi87IH07CiAJCTgzQjJEMTc1MUI4QkNENkEwMEEwMkU0NyAvKiBOYXRp
dmVOb2RlRmlsdGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA4M0U5NTlFMTFCOEJDMjJCMDA0RDkzODUgLyogTmF0aXZlTm9kZUZpbHRlci5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTgzQjc0RUY2MUYz
RTBCRjIwMDk5NkJDNyAvKiBLZWVwYWxpdmVSZXF1ZXN0VHJhY2tlci5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODNCNzRFRjMxRjNFMEJENzAwOTk2QkM3
IC8qIEtlZXBhbGl2ZVJlcXVlc3RUcmFja2VyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJODNCOTY4N0IxOUY4QUI4MzAwNEVGN0FGIC8qIFN0eWxl
QnVpbGRlckNvbnZlcnRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gODNCOTY4NzkxOUY4QUI4MzAwNEVGN0FGIC8qIFN0eWxlQnVpbGRlckNvbnZlcnRl
ci5oICovOyB9OwogCQk4M0JCNUM4ODFENUQ2RjQ1MDA1QTcxRjQgLyogQWxsRGVzY2VuZGFudHND
b2xsZWN0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA4M0JCNUM4NzFENUQ2RjNBMDA1QTcxRjQgLyogQWxsRGVzY2VuZGFudHNDb2xsZWN0aW9uLmgg
Ki87IH07CisJCTgzQkQzQ0VFMjQ5OThFMDEwMEJBM0U2NyAvKiBBdWRpb0NvbnRleHRTdGF0ZS5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODNCRDNDRUQy
NDk5OERGNjAwQkEzRTY3IC8qIEF1ZGlvQ29udGV4dFN0YXRlLmggKi87IH07CiAJCTgzQzA1QTVC
MUE2ODYyMTIwMDdFNURFQSAvKiBTdHlsZVByb3BlcnR5U2hvcnRoYW5kRnVuY3Rpb25zLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4M0MwNUE1OTFBNjg2
MjEyMDA3RTVERUEgLyogU3R5bGVQcm9wZXJ0eVNob3J0aGFuZEZ1bmN0aW9ucy5oICovOyB9Owog
CQk4M0MxRjU5NDFFREY2OUQzMDA0MTBEMjcgLyogUXVhbGlmaWVkTmFtZUNhY2hlLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4M0MxRjU5MjFFREY2OUQz
MDA0MTBEMjcgLyogUXVhbGlmaWVkTmFtZUNhY2hlLmggKi87IH07CiAJCTgzQzQ1QjhFMURDMkI2
OEEwMDg4NzFCQSAvKiBWYWxpZGF0aW9uQnViYmxlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4M0M0NUI4RDFEQzJCNjdDMDA4ODcxQkEgLyogVmFsaWRh
dGlvbkJ1YmJsZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CkBAIC0xMDI5NywxMSArMTAzMDMsMTYgQEAKIAkJODMwMDMwRjMxQjdEMzNBNjAwRUQzQUFD
IC8qIEdlbmVyaWNDYWNoZWRIVE1MQ29sbGVjdGlvbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBHZW5lcmljQ2FjaGVkSFRNTENvbGxlY3Rpb24uY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk4MzAwMzBGNDFCN0QzM0E2MDBFRDNBQUMgLyogR2VuZXJp
Y0NhY2hlZEhUTUxDb2xsZWN0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IEdlbmVyaWNDYWNoZWRIVE1MQ29sbGVjdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk4MzAwMzBGNzFCN0QzOTg4MDBFRDNBQUMgLyogQ2FjaGVkSFRNTENvbGxlY3Rpb24uaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ2FjaGVkSFRNTENvbGxlY3Rpb24uaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJODMwMDNFMkIyNDk5OTdBODAwNjBBRjk0IC8q
IFdlYktpdEF1ZGlvQ29udGV4dC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBXZWJLaXRBdWRpb0NvbnRleHQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk4MzAzMzRGQjFGNTQ5MDUyMDA0REY3MDcgLyogRmlsZVN5c3RlbURpcmVjdG9yeVJlYWRlci5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBGaWxlU3lzdGVtRGlyZWN0
b3J5UmVhZGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODMwMzM0RkMxRjU0
OTA1MjAwNERGNzA3IC8qIEZpbGVTeXN0ZW1EaXJlY3RvcnlSZWFkZXIuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gRmlsZVN5c3RlbURpcmVjdG9yeVJlYWRlci5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk4MzAzMzRGRDFGNTQ5MDUyMDA0REY3MDcgLyogRmlsZVN5
c3RlbUVudHJpZXNDYWxsYmFjay5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gRmlsZVN5c3Rl
bUVudHJpZXNDYWxsYmFjay5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTgzMDMz
NEZFMUY1NDkwNTIwMDRERjcwNyAvKiBGaWxlU3lzdGVtRW50cmllc0NhbGxiYWNrLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEZpbGVTeXN0ZW1FbnRyaWVzQ2FsbGJhY2suaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODMwMzM0RkYxRjU0OTA1MjAwNERGNzA3IC8q
IEZpbGVTeXN0ZW1EaXJlY3RvcnlSZWFkZXIuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IEZp
bGVTeXN0ZW1EaXJlY3RvcnlSZWFkZXIuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQk4MzA0MDI3RDI0OUE3QTVCMDBBOTBEOEQgLyogRGlzdGFuY2VNb2RlbFR5cGUuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRGlzdGFuY2VNb2RlbFR5cGUuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJODMwNDAyN0YyNDlBN0E1QzAwQTkwRDhEIC8qIERpc3RhbmNl
TW9kZWxUeXBlLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBEaXN0YW5jZU1vZGVsVHlwZS5p
ZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTgzMDQwMjgwMjQ5QTdBNUMwMEE5MEQ4
RCAvKiBQYW5uaW5nTW9kZWxUeXBlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFBhbm5pbmdNb2RlbFR5cGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJODMwNDAy
ODEyNDlBN0E1RDAwQTkwRDhEIC8qIFBhbm5pbmdNb2RlbFR5cGUuaWRsICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4
dDsgcGF0aCA9IFBhbm5pbmdNb2RlbFR5cGUuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk4MzA1MTk5MjFCQjBGMEU3MDBGMzc3MkUgLyogSFRNTFRpbWVFbGVtZW50LmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEhUTUxUaW1lRWxlbWVudC5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTgzMDUxOTkzMUJCMEYwRTcwMEYzNzcyRSAvKiBI
VE1MVGltZUVsZW1lbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSFRNTFRp
bWVFbGVtZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTgzMDUxOTk0MUJCMEYw
RTcwMEYzNzcyRSAvKiBIVE1MVGltZUVsZW1lbnQuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9
IEhUTUxUaW1lRWxlbWVudC5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xMDMx
NCw2ICsxMDMyNSwxMiBAQAogCQk4MzEwMkIyNTFGOUVBREMyMDBFNDA0QjkgLyogSlNFeHRlbmRh
YmxlTWVzc2FnZUV2ZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IEpTRXh0ZW5kYWJsZU1lc3NhZ2VFdmVudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTgzMTFDMDAwMUZBQTJFODkwMEUzQzhFNSAvKiBTV1NlcnZlckpvYlF1ZXVlLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNXU2VydmVySm9iUXVldWUuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4MzExQzAwMjFGQUEyRTg5MDBFM0M4RTUgLyog
U1dTZXJ2ZXJKb2JRdWV1ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTV1Nl
cnZlckpvYlF1ZXVlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTgzMUI2MTZGMjQ5
OUE1OTgwMEMwN0M3OSAvKiBXZWJLaXRBdWRpb1Bhbm5lck5vZGUuaWRsICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4
dDsgcGF0aCA9IFdlYktpdEF1ZGlvUGFubmVyTm9kZS5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTgzMUI2MTcxMjQ5OUE1OTkwMEMwN0M3OSAvKiBXZWJLaXRBdWRpb1Bhbm5lck5v
ZGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2ViS2l0QXVkaW9Q
YW5uZXJOb2RlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJODMxQjYxNzIyNDk5
QTU5QTAwQzA3Qzc5IC8qIFdlYktpdE9mZmxpbmVBdWRpb0NvbnRleHQuaWRsICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
dGV4dDsgcGF0aCA9IFdlYktpdE9mZmxpbmVBdWRpb0NvbnRleHQuaWRsOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQk4MzFCNjE3MzI0OTlBNTlCMDBDMDdDNzkgLyogV2ViS2l0T2ZmbGlu
ZUF1ZGlvQ29udGV4dC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBX
ZWJLaXRPZmZsaW5lQXVkaW9Db250ZXh0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJODMxQjYxNzQyNDk5QTU5QzAwQzA3Qzc5IC8qIFdlYktpdEF1ZGlvUGFubmVyTm9kZS5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJLaXRBdWRpb1Bhbm5lck5vZGUuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJODMxQjYxNzUyNDk5QTU5RDAwQzA3Qzc5IC8q
IFdlYktpdE9mZmxpbmVBdWRpb0NvbnRleHQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gV2ViS2l0T2ZmbGluZUF1ZGlvQ29udGV4dC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk4MzFDNDZDMzFGOUVFNUUwMDBFQkQ0NTAgLyogSlNFeHRlbmRhYmxlTWVzc2FnZUV2
ZW50Q3VzdG9tLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTRXh0
ZW5kYWJsZU1lc3NhZ2VFdmVudEN1c3RvbS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTgzMUQxRjI5MUM1NkVDQTAwMEY1RjZDMCAvKiBIVE1MRGF0YUVsZW1lbnQuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSFRNTERhdGFFbGVtZW50LmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODMyMTUwN0ExRjI3RUExNTAwOTVCMTM2IC8qIE5h
dmlnYXRvckJlYWNvbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBOYXZpZ2F0b3JCZWFjb24uY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTA0NDEsNiArMTA0NTgsOCBAQAogCQk4
MzlBQUZFQjFBMEMwQzhEMDA2MDVGOTkgLyogSFRNTFdCUkVsZW1lbnQuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gSFRNTFdCUkVsZW1lbnQuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJODNBNEE5RjgxQ0U3RkQ3RTAwNzA5QjAwIC8qIEpTWE1MRG9jdW1lbnRDdXN0
b20uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNYTUxEb2N1bWVu
dEN1c3RvbS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTgzQThBQzNFMUZBQkJG
RDEwMDIwNjRBQyAvKiBTZXJ2aWNlV29ya2VySWRlbnRpZmllci5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBTZXJ2aWNlV29ya2VySWRlbnRpZmllci5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQk4M0IxQTZGRjI0OTk4NUQwMDBGRTU5NjEgLyogV2ViS2l0QXVkaW9D
b250ZXh0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYktpdEF1ZGlvQ29u
dGV4dC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk4M0IxQTcwMTI0OTk4NUQwMDBG
RTU5NjEgLyogV2ViS2l0QXVkaW9Db250ZXh0LmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBX
ZWJLaXRBdWRpb0NvbnRleHQuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4M0Iy
NTAwOTFGQTExODFDMDBCQzAyRDkgLyogSlNTZXJ2aWNlV29ya2VyQ2xpZW50VHlwZS5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU1NlcnZpY2VXb3JrZXJDbGllbnRUeXBlLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTgzQjI1MDBCMUZBMTE4MUQwMEJDMDJEOSAv
KiBKU1NlcnZpY2VXb3JrZXJDbGllbnRUeXBlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IEpTU2VydmljZVdvcmtlckNsaWVudFR5cGUuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk4M0I1REE0NTFGQTkwNzkzMDBCNTlERjQgLyogSlNOYXZpZ2F0b3JD
dXN0b20uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNOYXZpZ2F0
b3JDdXN0b20uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTA0NDgsNiArMTA0
NjcsOCBAQAogCQk4M0I3NEVGMzFGM0UwQkQ3MDA5OTZCQzcgLyogS2VlcGFsaXZlUmVxdWVzdFRy
YWNrZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gS2VlcGFsaXZlUmVxdWVz
dFRyYWNrZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODNCOTY4NzkxOUY4QUI4
MzAwNEVGN0FGIC8qIFN0eWxlQnVpbGRlckNvbnZlcnRlci5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBTdHlsZUJ1aWxkZXJDb252ZXJ0ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJODNCQjVDODcxRDVENkYzQTAwNUE3MUY0IC8qIEFsbERlc2NlbmRhbnRzQ29s
bGVjdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBbGxEZXNjZW5kYW50
c0NvbGxlY3Rpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJODNCRDNDRUIyNDk5
OENDNTAwQkEzRTY3IC8qIEF1ZGlvQ29udGV4dFN0YXRlLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBh
dGggPSBBdWRpb0NvbnRleHRTdGF0ZS5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTgzQkQzQ0VEMjQ5OThERjYwMEJBM0U2NyAvKiBBdWRpb0NvbnRleHRTdGF0ZS5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBdWRpb0NvbnRleHRTdGF0ZS5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk4M0MwNUE1ODFBNjg2MjEyMDA3RTVERUEgLyogU3R5bGVQcm9w
ZXJ0eVNob3J0aGFuZEZ1bmN0aW9ucy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IG5hbWUgPSBTdHlsZVByb3BlcnR5U2hvcnRoYW5kRnVuY3Rpb25zLmNwcDsgcGF0aCA9IERlcml2
ZWRTb3VyY2VzL1dlYkNvcmUvU3R5bGVQcm9wZXJ0eVNob3J0aGFuZEZ1bmN0aW9ucy5jcHA7IHNv
dXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19ESVI7IH07CiAJCTgzQzA1QTU5MUE2ODYyMTIwMDdF
NURFQSAvKiBTdHlsZVByb3BlcnR5U2hvcnRoYW5kRnVuY3Rpb25zLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgbmFtZSA9IFN0eWxlUHJvcGVydHlTaG9ydGhhbmRGdW5jdGlvbnMuaDsgcGF0
aCA9IERlcml2ZWRTb3VyY2VzL1dlYkNvcmUvU3R5bGVQcm9wZXJ0eVNob3J0aGFuZEZ1bmN0aW9u
cy5oOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9OwogCQk4M0MxRjU5MTFFREY2
OUQzMDA0MTBEMjcgLyogUXVhbGlmaWVkTmFtZUNhY2hlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IFF1YWxpZmllZE5hbWVDYWNoZS5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CkBAIC0yOTIzOSw2ICsyOTI2MCw4IEBACiAJCQkJRkQzMTVGQkExMkIwMjY3
NTAwQzFBMzU5IC8qIEF1ZGlvQ29udGV4dC5jcHAgKi8sCiAJCQkJRkQzMTVGQkIxMkIwMjY3NTAw
QzFBMzU5IC8qIEF1ZGlvQ29udGV4dC5oICovLAogCQkJCUZEMzE1RkJDMTJCMDI2NzUwMEMxQTM1
OSAvKiBBdWRpb0NvbnRleHQuaWRsICovLAorCQkJCTgzQkQzQ0VEMjQ5OThERjYwMEJBM0U2NyAv
KiBBdWRpb0NvbnRleHRTdGF0ZS5oICovLAorCQkJCTgzQkQzQ0VCMjQ5OThDQzUwMEJBM0U2NyAv
KiBBdWRpb0NvbnRleHRTdGF0ZS5pZGwgKi8sCiAJCQkJRkQzMTVGQkQxMkIwMjY3NTAwQzFBMzU5
IC8qIEF1ZGlvRGVzdGluYXRpb25Ob2RlLmNwcCAqLywKIAkJCQlGRDMxNUZCRTEyQjAyNjc1MDBD
MUEzNTkgLyogQXVkaW9EZXN0aW5hdGlvbk5vZGUuaCAqLywKIAkJCQlGRDMxNUZCRjEyQjAyNjc1
MDBDMUEzNTkgLyogQXVkaW9EZXN0aW5hdGlvbk5vZGUuaWRsICovLApAQCAtMjkyODksNiArMjkz
MTIsOCBAQAogCQkJCUZEMzE1RkU1MTJCMDI2NzYwMEMxQTM1OSAvKiBEZWxheU5vZGUuaWRsICov
LAogCQkJCUZEMzE1RkU2MTJCMDI2NzYwMEMxQTM1OSAvKiBEZWxheVByb2Nlc3Nvci5jcHAgKi8s
CiAJCQkJRkQzMTVGRTcxMkIwMjY3NjAwQzFBMzU5IC8qIERlbGF5UHJvY2Vzc29yLmggKi8sCisJ
CQkJODMwNDAyN0QyNDlBN0E1QjAwQTkwRDhEIC8qIERpc3RhbmNlTW9kZWxUeXBlLmggKi8sCisJ
CQkJODMwNDAyN0YyNDlBN0E1QzAwQTkwRDhEIC8qIERpc3RhbmNlTW9kZWxUeXBlLmlkbCAqLywK
IAkJCQlGRDZFRDJDMTEzNkI4RTQyMDAzQ0YwNzIgLyogRHluYW1pY3NDb21wcmVzc29yTm9kZS5j
cHAgKi8sCiAJCQkJRkQ2RUQyQzIxMzZCOEU0MjAwM0NGMDcyIC8qIER5bmFtaWNzQ29tcHJlc3Nv
ck5vZGUuaCAqLywKIAkJCQlGRDZFRDJDOTEzNkI4RTlEMDAzQ0YwNzIgLyogRHluYW1pY3NDb21w
cmVzc29yTm9kZS5pZGwgKi8sCkBAIC0yOTMyMSw2ICsyOTM0Niw4IEBACiAJCQkJRkQzMTVGQ0Yx
MkIwMjY3NTAwQzFBMzU5IC8qIFBhbm5lck5vZGUuY3BwICovLAogCQkJCUZEMzE1RkQwMTJCMDI2
NzUwMEMxQTM1OSAvKiBQYW5uZXJOb2RlLmggKi8sCiAJCQkJRkQzMTVGRDExMkIwMjY3NTAwQzFB
MzU5IC8qIFBhbm5lck5vZGUuaWRsICovLAorCQkJCTgzMDQwMjgwMjQ5QTdBNUMwMEE5MEQ4RCAv
KiBQYW5uaW5nTW9kZWxUeXBlLmggKi8sCisJCQkJODMwNDAyODEyNDlBN0E1RDAwQTkwRDhEIC8q
IFBhbm5pbmdNb2RlbFR5cGUuaWRsICovLAogCQkJCUZENTgxRkIxMTUyMEY5M0IwMDNBN0E3NSAv
KiBQZXJpb2RpY1dhdmUuY3BwICovLAogCQkJCUZENTgxRkIyMTUyMEY5M0IwMDNBN0E3NSAvKiBQ
ZXJpb2RpY1dhdmUuaCAqLywKIAkJCQlGRDU4MUZCMzE1MjBGOTNCMDAzQTdBNzUgLyogUGVyaW9k
aWNXYXZlLmlkbCAqLywKQEAgLTI5MzM2LDYgKzI5MzYzLDE1IEBACiAJCQkJRkQ3RjI5OEUxM0Q0
QzBDQjAwQUQ5NTM1IC8qIFdhdmVTaGFwZXJOb2RlLmlkbCAqLywKIAkJCQlGRDdGMjk4RjEzRDRD
MENCMDBBRDk1MzUgLyogV2F2ZVNoYXBlclByb2Nlc3Nvci5jcHAgKi8sCiAJCQkJRkQ3RjI5OTAx
M0Q0QzBDQjAwQUQ5NTM1IC8qIFdhdmVTaGFwZXJQcm9jZXNzb3IuaCAqLywKKwkJCQk4MzAwM0Uy
QjI0OTk5N0E4MDA2MEFGOTQgLyogV2ViS2l0QXVkaW9Db250ZXh0LmNwcCAqLywKKwkJCQk4M0Ix
QTZGRjI0OTk4NUQwMDBGRTU5NjEgLyogV2ViS2l0QXVkaW9Db250ZXh0LmggKi8sCisJCQkJODNC
MUE3MDEyNDk5ODVEMDAwRkU1OTYxIC8qIFdlYktpdEF1ZGlvQ29udGV4dC5pZGwgKi8sCisJCQkJ
ODMxQjYxNzEyNDk5QTU5OTAwQzA3Qzc5IC8qIFdlYktpdEF1ZGlvUGFubmVyTm9kZS5jcHAgKi8s
CisJCQkJODMxQjYxNzQyNDk5QTU5QzAwQzA3Qzc5IC8qIFdlYktpdEF1ZGlvUGFubmVyTm9kZS5o
ICovLAorCQkJCTgzMUI2MTZGMjQ5OUE1OTgwMEMwN0M3OSAvKiBXZWJLaXRBdWRpb1Bhbm5lck5v
ZGUuaWRsICovLAorCQkJCTgzMUI2MTczMjQ5OUE1OUIwMEMwN0M3OSAvKiBXZWJLaXRPZmZsaW5l
QXVkaW9Db250ZXh0LmNwcCAqLywKKwkJCQk4MzFCNjE3NTI0OTlBNTlEMDBDMDdDNzkgLyogV2Vi
S2l0T2ZmbGluZUF1ZGlvQ29udGV4dC5oICovLAorCQkJCTgzMUI2MTcyMjQ5OUE1OUEwMEMwN0M3
OSAvKiBXZWJLaXRPZmZsaW5lQXVkaW9Db250ZXh0LmlkbCAqLywKIAkJCSk7CiAJCQlwYXRoID0g
d2ViYXVkaW87CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwpAQCAtMjk3MzIsNiArMjk3Njgs
NyBAQAogCQkJCUZEMzE2MDdDMTJCMDI2RjcwMEMxQTM1OSAvKiBBdWRpb0J1cy5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJRkQzMTYwN0UxMkIwMjZGNzAwQzFBMzU5IC8qIEF1ZGlvQ2hhbm5lbC5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJRkQzMTYwMDUxMkIwMjY3NjAwQzFBMzU5IC8qIEF1ZGlvQ29udGV4
dC5oIGluIEhlYWRlcnMgKi8sCisJCQkJODNCRDNDRUUyNDk5OEUwMTAwQkEzRTY3IC8qIEF1ZGlv
Q29udGV4dFN0YXRlLmggaW4gSGVhZGVycyAqLywKIAkJCQlGRDMxNjA3RjEyQjAyNkY3MDBDMUEz
NTkgLyogQXVkaW9EZXN0aW5hdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOUIxMjI5QzQyM0ZF
NEJEMjAwOENBNzUxIC8qIEF1ZGlvRGVzdGluYXRpb25Db2NvYS5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJRkQzMTYwQkQxMkIwMjcyQTAwQzFBMzU5IC8qIEF1ZGlvRGVzdGluYXRpb25NYWMuaCBpbiBI
ZWFkZXJzICovLApAQCAtMzAzODcsNiArMzA0MjQsNyBAQAogCQkJCTJEMjlFQ0M4MTkyRUNDODMw
MDk4NEI3OCAvKiBEaXNwbGF5UmVmcmVzaE1vbml0b3JNYW5hZ2VyLmggaW4gSGVhZGVycyAqLywK
IAkJCQk2RkNFMUExQTIyNjE4QUJEMDA0RjAzNDMgLyogRGlzcGxheVJ1bi5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJRkQzMTYwOTExMkIwMjZGNzAwQzFBMzU5IC8qIERpc3RhbmNlLmggaW4gSGVhZGVy
cyAqLywKKwkJCQk4MzA0MDI4MzI0OUE3QTYyMDBBOTBEOEQgLyogRGlzdGFuY2VNb2RlbFR5cGUu
aCBpbiBIZWFkZXJzICovLAogCQkJCTg0NzMwRDc3MTI0OEYwQjMwMEQzQTlDOSAvKiBEaXN0YW50
TGlnaHRTb3VyY2UuaCBpbiBIZWFkZXJzICovLAogCQkJCUIyRjM0RkU2MEU4MkY4MTQwMEY2MjdD
RCAvKiBETlMuaCBpbiBIZWFkZXJzICovLAogCQkJCTdFRTY4NDZGMTJEMjZFMzgwMEU3MzIxNSAv
KiBETlNSZXNvbHZlUXVldWVDRk5ldC5oIGluIEhlYWRlcnMgKi8sCkBAIC0zMjQwMCw2ICszMjQz
OCw3IEBACiAJCQkJQTgwRTZDRkIwQTE5ODlDQTAwN0ZCOEM1IC8qIFBhaXIuaCBpbiBIZWFkZXJz
ICovLAogCQkJCUZEMzE2MEEzMTJCMDI2RjcwMEMxQTM1OSAvKiBQYW5uZXIuaCBpbiBIZWFkZXJz
ICovLAogCQkJCUZEMzE2MDFBMTJCMDI2NzYwMEMxQTM1OSAvKiBQYW5uZXJOb2RlLmggaW4gSGVh
ZGVycyAqLywKKwkJCQk4MzA0MDI4MjI0OUE3QTVGMDBBOTBEOEQgLyogUGFubmluZ01vZGVsVHlw
ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTE4ODkwQUYxQUExM0YyNTAwMjZDMzAxIC8qIFBhcmVu
dGFsQ29udHJvbHNDb250ZW50RmlsdGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlDRENENDFFODFD
M0REQjBBMDA5NjVEOTkgLyogUGFyc2VkQ29udGVudFJhbmdlLmggaW4gSGVhZGVycyAqLywKIAkJ
CQk0NDc5NTgwNDE2NDNCNDlBMDAxRTBBN0YgLyogUGFyc2VkQ29udGVudFR5cGUuaCBpbiBIZWFk
ZXJzICovLApAQCAtMzM3MjgsNiArMzM3NjcsOCBAQAogCQkJCUE1ODRGRTMwMTg2NENCODQwMDg0
M0IxMCAvKiBXZWJJbmplY3RlZFNjcmlwdE1hbmFnZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUY0
ODIyMzExMUUzODY5QjgwMDY2RkM3OSAvKiBXZWJJdGVtUHJvdmlkZXJQYXN0ZWJvYXJkLmggaW4g
SGVhZGVycyAqLywKIAkJCQkzMUMwRkYyMjBFNENFQjZFMDA3RDZGRTUgLyogV2ViS2l0QW5pbWF0
aW9uRXZlbnQuaCBpbiBIZWFkZXJzICovLAorCQkJCTgzQjFBNzAyMjQ5OTg1RjAwMEZFNTk2MSAv
KiBXZWJLaXRBdWRpb0NvbnRleHQuaCBpbiBIZWFkZXJzICovLAorCQkJCTgzMUI2MTc2MjQ5OUE1
QkIwMEMwN0M3OSAvKiBXZWJLaXRBdWRpb1Bhbm5lck5vZGUuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTVERkVCQUI3MTg1OTJCNkQwMEM3NUJFQiAvKiBXZWJLaXRBdmFpbGFiaWxpdHkuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTQ5ODM5MTU5MEYxRTc3NjkwMEMyMzc4MiAvKiBXZWJLaXRDU1NNYXRyaXgu
aCBpbiBIZWFkZXJzICovLAogCQkJCTJEMDYyMTQ1MURBNjM5QkEwMEE3RkIyNiAvKiBXZWJLaXRN
ZWRpYUtleU1lc3NhZ2VFdmVudC5oIGluIEhlYWRlcnMgKi8sCkBAIC0zMzczNiw2ICszMzc3Nyw3
IEBACiAJCQkJMkQwNjIxNTAxREE2M0E5NDAwQTdGQjI2IC8qIFdlYktpdE1lZGlhS2V5U2Vzc2lv
bi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJN0M0OEE2RDExOTFDOUQ2NTAwMDI2Njc0IC8qIFdlYktp
dE5hbWVzcGFjZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJN0EyMjczMjEyMEM5RkFGRTAwREIxREVG
IC8qIFdlYktpdE5TSW1hZ2VFeHRyYXMuaCBpbiBIZWFkZXJzICovLAorCQkJCTgzMUI2MTc3MjQ5
OUE1QkYwMEMwN0M3OSAvKiBXZWJLaXRPZmZsaW5lQXVkaW9Db250ZXh0LmggaW4gSGVhZGVycyAq
LywKIAkJCQlBNURFQkRBNDE2RkI5MDg3MDA4MzZGRTAgLyogV2ViS2l0UGxheWJhY2tUYXJnZXRB
dmFpbGFiaWxpdHlFdmVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDk0QkQ3OTUwRjU1QzhFRTAw
NzQ3ODI4IC8qIFdlYktpdFBvaW50LmggaW4gSGVhZGVycyAqLywKIAkJCQkzMUMwRkYyNTBFNENF
QjZFMDA3RDZGRTUgLyogV2ViS2l0VHJhbnNpdGlvbkV2ZW50LmggaW4gSGVhZGVycyAqLywKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1dlYkNvcmVCdWlsdGluTmFtZXMu
aCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1dlYkNvcmVCdWlsdGluTmFtZXMuaAppbmRl
eCA0OTk3YWI5OTNjYjc5NTQ1NzVhODQzMTdkNjljMjBjY2VjNmE3ZDA5Li5mOTE5N2MyNmFlOWE0
YzM5YzkyMjNiNTQxZDU5ZmJjMGE4MjBlOTljIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9XZWJDb3JlQnVpbHRpbk5hbWVzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvV2ViQ29yZUJ1aWx0aW5OYW1lcy5oCkBAIC00OSw2ICs0OSw3IEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKICAgICBtYWNybyhBcHBsZVBheVNldHVwRmVhdHVyZSkgXAogICAgIG1hY3Jv
KEF0dGFjaG1lbnRFbGVtZW50KSBcCiAgICAgbWFjcm8oQXVkaW8pIFwKKyAgICBtYWNybyhBdWRp
b0NvbnRleHQpIFwKICAgICBtYWNybyhBdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2UpIFwK
ICAgICBtYWNybyhBdXRoZW50aWNhdG9yQXR0ZXN0YXRpb25SZXNwb25zZSkgXAogICAgIG1hY3Jv
KEF1dGhlbnRpY2F0b3JSZXNwb25zZSkgXApAQCAtMTY1LDkgKzE2NiwxMSBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAgICAgbWFjcm8oTmF2aWdhdG9yQ3JlZGVudGlhbHMpIFwKICAgICBtYWNybyhO
YXZpZ2F0b3JNZWRpYURldmljZXMpIFwKICAgICBtYWNybyhOYXZpZ2F0b3JVc2VyTWVkaWEpIFwK
KyAgICBtYWNybyhPZmZsaW5lQXVkaW9Db250ZXh0KSBcCiAgICAgbWFjcm8oT2Zmc2NyZWVuQ2Fu
dmFzKSBcCiAgICAgbWFjcm8oT2Zmc2NyZWVuQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEKSBcCiAg
ICAgbWFjcm8oUGFpbnRSZW5kZXJpbmdDb250ZXh0MkQpIFwKKyAgICBtYWNybyhQYW5uZXJOb2Rl
KSBcCiAgICAgbWFjcm8oUGF5bWVudEFkZHJlc3MpIFwKICAgICBtYWNybyhQYXltZW50TWV0aG9k
Q2hhbmdlRXZlbnQpIFwKICAgICBtYWNybyhQYXltZW50UmVxdWVzdCkgXApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvZG9tL0V2ZW50VGFyZ2V0RmFjdG9yeS5pbiBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9FdmVudFRhcmdldEZhY3RvcnkuaW4KaW5kZXggZmMxZGIyY2UwZTA2NTAwMjhjZDRjYmNl
NDllYmQzMjk0NGIzMmIzNC4uYTE1NGI0NDVhMTNhZDQ3Njk2MjlkOWY3ZDkzNzdhOWRmMTUwZjdh
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50VGFyZ2V0RmFjdG9yeS5pbgor
KysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRUYXJnZXRGYWN0b3J5LmluCkBAIC01Myw2ICs1
Myw3IEBAIFZpZGVvVHJhY2tMaXN0IGNvbmRpdGlvbmFsPVZJREVPCiBWaXN1YWxWaWV3cG9ydAog
V2ViQW5pbWF0aW9uCiBXZWJHUFVEZXZpY2UgY29uZGl0aW9uYWw9V0VCR1BVCitXZWJLaXRBdWRp
b0NvbnRleHQgY29uZGl0aW9uYWw9V0VCX0FVRElPCiBXZWJLaXRNZWRpYUtleVNlc3Npb24gY29u
ZGl0aW9uYWw9TEVHQUNZX0VOQ1JZUFRFRF9NRURJQQogV2ViU29ja2V0CiBXb3JrZXIKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3MueWFtbCBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvU2V0dGluZ3MueWFtbAppbmRleCAyZDZiYzZmZjJlZjBiMDAwZGQ0ZTk4MDZjZWQ2YzQ4
ZmI0NzBiZTNhLi41ODNmYzZmNzk1ZWZjMDcwMmZiMzg0MGRiNGU4MTFiODg2MDlmYTNlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdzLnlhbWwKKysrIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9TZXR0aW5ncy55YW1sCkBAIC0yNTUsNiArMjU1LDggQEAgbG9hZERlZmVycmlu
Z0VuYWJsZWQ6CiAgIGluaXRpYWw6IHRydWUKIHdlYkF1ZGlvRW5hYmxlZDoKICAgaW5pdGlhbDog
ZmFsc2UKK21vZGVyblVucHJlZml4ZWRXZWJBdWRpb0VuYWJsZWQ6CisgIGluaXRpYWw6IGZhbHNl
CiBwYWdpbmF0ZUR1cmluZ0xheW91dEVuYWJsZWQ6CiAgIGluaXRpYWw6IGZhbHNlCiBmdWxsU2Ny
ZWVuRW5hYmxlZDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxz
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAppbmRleCAwZjVjMTk3
YTI5ODA3ZTc2M2NhZWJmMDkwMmE0Y2Y5YTYyMDhiOTdjLi5iMzAzOGEzNDBjNjdkYjY5MjQzNmVj
MjNkYTQzZDg2ZTQ0NGJlMzI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0lu
dGVybmFscy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCkBA
IC0xOTksNiArMTk5LDcgQEAKICNpbmNsdWRlICJXZWJBbmltYXRpb24uaCIKICNpbmNsdWRlICJX
ZWJBbmltYXRpb25VdGlsaXRpZXMuaCIKICNpbmNsdWRlICJXZWJDb3JlSlNDbGllbnREYXRhLmgi
CisjaW5jbHVkZSAiV2ViS2l0QXVkaW9Db250ZXh0LmgiCiAjaW5jbHVkZSAiV2luZG93UHJveHku
aCIKICNpbmNsdWRlICJXb3JrZXJUaHJlYWQuaCIKICNpbmNsdWRlICJXb3JrbGV0R2xvYmFsU2Nv
cGUuaCIKQEAgLTQyOTAsMjIgKzQyOTEsMjkgQEAgdm9pZCBJbnRlcm5hbHM6OnNlbmRNZWRpYUNv
bnRyb2xFdmVudChNZWRpYUNvbnRyb2xFdmVudCBldmVudCkKICNlbmRpZiAvLyBFTkFCTEUoTUVE
SUFfU0VTU0lPTikKIAogI2lmIEVOQUJMRShXRUJfQVVESU8pCi12b2lkIEludGVybmFsczo6c2V0
QXVkaW9Db250ZXh0UmVzdHJpY3Rpb25zKEF1ZGlvQ29udGV4dCYgY29udGV4dCwgU3RyaW5nVmll
dyByZXN0cmljdGlvbnNTdHJpbmcpCit2b2lkIEludGVybmFsczo6c2V0QXVkaW9Db250ZXh0UmVz
dHJpY3Rpb25zKGNvbnN0IFZhcmlhbnQ8UmVmUHRyPEF1ZGlvQ29udGV4dD4sIFJlZlB0cjxXZWJL
aXRBdWRpb0NvbnRleHQ+PiYgY29udGV4dFZhcmlhbnQsIFN0cmluZ1ZpZXcgcmVzdHJpY3Rpb25z
U3RyaW5nKQogewotICAgIEF1ZGlvQ29udGV4dDo6QmVoYXZpb3JSZXN0cmljdGlvbnMgcmVzdHJp
Y3Rpb25zID0gY29udGV4dC5iZWhhdmlvclJlc3RyaWN0aW9ucygpOwotICAgIGNvbnRleHQucmVt
b3ZlQmVoYXZpb3JSZXN0cmljdGlvbihyZXN0cmljdGlvbnMpOworICAgIFJlZlB0cjxBdWRpb0Nv
bnRleHRCYXNlPiBjb250ZXh0OworICAgIHN3aXRjaE9uKGNvbnRleHRWYXJpYW50LCBbJl0oUmVm
UHRyPEF1ZGlvQ29udGV4dD4gZW50cnkpIHsKKyAgICAgICAgY29udGV4dCA9IGVudHJ5OworICAg
IH0sIFsmXShSZWZQdHI8V2ViS2l0QXVkaW9Db250ZXh0PiBlbnRyeSkgeworICAgICAgICBjb250
ZXh0ID0gZW50cnk7CisgICAgfSk7CisKKyAgICBhdXRvIHJlc3RyaWN0aW9ucyA9IGNvbnRleHQt
PmJlaGF2aW9yUmVzdHJpY3Rpb25zKCk7CisgICAgY29udGV4dC0+cmVtb3ZlQmVoYXZpb3JSZXN0
cmljdGlvbihyZXN0cmljdGlvbnMpOwogCi0gICAgcmVzdHJpY3Rpb25zID0gQXVkaW9Db250ZXh0
OjpOb1Jlc3RyaWN0aW9uczsKKyAgICByZXN0cmljdGlvbnMgPSBBdWRpb0NvbnRleHRCYXNlOjpO
b1Jlc3RyaWN0aW9uczsKIAogICAgIGZvciAoU3RyaW5nVmlldyByZXN0cmljdGlvblN0cmluZyA6
IHJlc3RyaWN0aW9uc1N0cmluZy5zcGxpdCgnLCcpKSB7CiAgICAgICAgIGlmIChlcXVhbExldHRl
cnNJZ25vcmluZ0FTQ0lJQ2FzZShyZXN0cmljdGlvblN0cmluZywgIm5vcmVzdHJpY3Rpb25zIikp
Ci0gICAgICAgICAgICByZXN0cmljdGlvbnMgfD0gQXVkaW9Db250ZXh0OjpOb1Jlc3RyaWN0aW9u
czsKKyAgICAgICAgICAgIHJlc3RyaWN0aW9ucyB8PSBBdWRpb0NvbnRleHRCYXNlOjpOb1Jlc3Ry
aWN0aW9uczsKICAgICAgICAgaWYgKGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKHJlc3Ry
aWN0aW9uU3RyaW5nLCAicmVxdWlyZXVzZXJnZXN0dXJlZm9yYXVkaW9zdGFydCIpKQotICAgICAg
ICAgICAgcmVzdHJpY3Rpb25zIHw9IEF1ZGlvQ29udGV4dDo6UmVxdWlyZVVzZXJHZXN0dXJlRm9y
QXVkaW9TdGFydFJlc3RyaWN0aW9uOworICAgICAgICAgICAgcmVzdHJpY3Rpb25zIHw9IEF1ZGlv
Q29udGV4dEJhc2U6OlJlcXVpcmVVc2VyR2VzdHVyZUZvckF1ZGlvU3RhcnRSZXN0cmljdGlvbjsK
ICAgICAgICAgaWYgKGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKHJlc3RyaWN0aW9uU3Ry
aW5nLCAicmVxdWlyZXBhZ2Vjb25zZW50Zm9yYXVkaW9zdGFydCIpKQotICAgICAgICAgICAgcmVz
dHJpY3Rpb25zIHw9IEF1ZGlvQ29udGV4dDo6UmVxdWlyZVBhZ2VDb25zZW50Rm9yQXVkaW9TdGFy
dFJlc3RyaWN0aW9uOworICAgICAgICAgICAgcmVzdHJpY3Rpb25zIHw9IEF1ZGlvQ29udGV4dEJh
c2U6OlJlcXVpcmVQYWdlQ29uc2VudEZvckF1ZGlvU3RhcnRSZXN0cmljdGlvbjsKICAgICB9Ci0g
ICAgY29udGV4dC5hZGRCZWhhdmlvclJlc3RyaWN0aW9uKHJlc3RyaWN0aW9ucyk7CisgICAgY29u
dGV4dC0+YWRkQmVoYXZpb3JSZXN0cmljdGlvbihyZXN0cmljdGlvbnMpOwogfQogCiB2b2lkIElu
dGVybmFsczo6dXNlTW9ja0F1ZGlvRGVzdGluYXRpb25Db2NvYSgpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5oIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9J
bnRlcm5hbHMuaAppbmRleCAzNDIyNzk5NGQ2NGZhZDZmNjI5ZDM4MjYwYTcxYjBhNTY5ODkyYmRh
Li5jMWZhZDliZjI5NWM5NmNhZGJiODJlMWQ2YjUwNzM2NGMzMWJkMDE0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rl
c3RpbmcvSW50ZXJuYWxzLmgKQEAgLTEwOCw2ICsxMDgsNyBAQCBjbGFzcyBVbnN1c3BlbmRhYmxl
QWN0aXZlRE9NT2JqZWN0OwogY2xhc3MgVm9pZENhbGxiYWNrOwogY2xhc3MgV2ViQW5pbWF0aW9u
OwogY2xhc3MgV2ViR0xSZW5kZXJpbmdDb250ZXh0OworY2xhc3MgV2ViS2l0QXVkaW9Db250ZXh0
OwogY2xhc3MgV2luZG93UHJveHk7CiBjbGFzcyBYTUxIdHRwUmVxdWVzdDsKIApAQCAtNjc0LDcg
KzY3NSw3IEBAIHB1YmxpYzoKICNlbmRpZgogCiAjaWYgRU5BQkxFKFdFQl9BVURJTykKLSAgICB2
b2lkIHNldEF1ZGlvQ29udGV4dFJlc3RyaWN0aW9ucyhBdWRpb0NvbnRleHQmLCBTdHJpbmdWaWV3
IHJlc3RyaWN0aW9uc1N0cmluZyk7CisgICAgdm9pZCBzZXRBdWRpb0NvbnRleHRSZXN0cmljdGlv
bnMoY29uc3QgVmFyaWFudDxSZWZQdHI8QXVkaW9Db250ZXh0PiwgUmVmUHRyPFdlYktpdEF1ZGlv
Q29udGV4dD4+JiwgU3RyaW5nVmlldyByZXN0cmljdGlvbnNTdHJpbmcpOwogICAgIHZvaWQgdXNl
TW9ja0F1ZGlvRGVzdGluYXRpb25Db2NvYSgpOwogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlkbCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3Rpbmcv
SW50ZXJuYWxzLmlkbAppbmRleCA4N2E3NGI1ZjlhZGU5OThiNTIzYTE0ZTlmYTUxMzY1NWU4ODgx
NzJiLi4yYTMzYzlhYTUxZWFiNWI3NjY4ZjYwOTY4NGEyMTFhN2I3ZDVjM2U1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5pZGwKKysrIGIvU291cmNlL1dlYkNv
cmUvdGVzdGluZy9JbnRlcm5hbHMuaWRsCkBAIC02NzYsNyArNjc2LDcgQEAgZW51bSBDb21wb3Np
dGluZ1BvbGljeSB7CiAgICAgW0NvbmRpdGlvbmFsPVZJREVPLCBNYXlUaHJvd0V4Y2VwdGlvbl0g
dm9pZCBzZXRNZWRpYVNlc3Npb25SZXN0cmljdGlvbnMoRE9NU3RyaW5nIG1lZGlhVHlwZSwgRE9N
U3RyaW5nIHJlc3RyaWN0aW9ucyk7CiAgICAgW0NvbmRpdGlvbmFsPVZJREVPLCBNYXlUaHJvd0V4
Y2VwdGlvbl0gRE9NU3RyaW5nIG1lZGlhU2Vzc2lvblJlc3RyaWN0aW9ucyhET01TdHJpbmcgbWVk
aWFUeXBlKTsKICAgICBbQ29uZGl0aW9uYWw9VklERU9dIHZvaWQgc2V0TWVkaWFFbGVtZW50UmVz
dHJpY3Rpb25zKEhUTUxNZWRpYUVsZW1lbnQgZWxlbWVudCwgRE9NU3RyaW5nIHJlc3RyaWN0aW9u
cyk7Ci0gICAgW0NvbmRpdGlvbmFsPVdFQl9BVURJT10gdm9pZCBzZXRBdWRpb0NvbnRleHRSZXN0
cmljdGlvbnMoQXVkaW9Db250ZXh0IGNvbnRleHQsIERPTVN0cmluZyByZXN0cmljdGlvbnMpOwor
ICAgIFtDb25kaXRpb25hbD1XRUJfQVVESU9dIHZvaWQgc2V0QXVkaW9Db250ZXh0UmVzdHJpY3Rp
b25zKChBdWRpb0NvbnRleHQgb3IgV2ViS2l0QXVkaW9Db250ZXh0KSBjb250ZXh0LCBET01TdHJp
bmcgcmVzdHJpY3Rpb25zKTsKICAgICBbQ29uZGl0aW9uYWw9VklERU8sIE1heVRocm93RXhjZXB0
aW9uXSB2b2lkIHBvc3RSZW1vdGVDb250cm9sQ29tbWFuZChET01TdHJpbmcgY29tbWFuZCwgb3B0
aW9uYWwgdW5yZXN0cmljdGVkIGZsb2F0IGFyZ3VtZW50ID0gMCk7CiAgICAgW0NvbmRpdGlvbmFs
PVdJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVF0gdm9pZCBzZXRNb2NrTWVkaWFQbGF5YmFja1Rhcmdl
dFBpY2tlckVuYWJsZWQoYm9vbGVhbiBlbmFibGVkKTsKICAgICBbQ29uZGl0aW9uYWw9V0lSRUxF
U1NfUExBWUJBQ0tfVEFSR0VULCBNYXlUaHJvd0V4Y2VwdGlvbl0gdm9pZCBzZXRNb2NrTWVkaWFQ
bGF5YmFja1RhcmdldFBpY2tlclN0YXRlKERPTVN0cmluZyBkZXZpY2VOYW1lLCBET01TdHJpbmcg
ZGV2aWNlU3RhdGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUHJlZmVy
ZW5jZXMueWFtbCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlByZWZlcmVuY2VzLnlhbWwKaW5k
ZXggZmFkMWE5ZjU4ODYyMWU5NWUxOWIxYTRmZTc0ZWEzMDIzNjQyNDEzZC4uNTIzNWNlNzFmZjdh
OTMyZTEyMzhjNjQwMTlkYTMxMmM1OTE2ZGI2ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9T
aGFyZWQvV2ViUHJlZmVyZW5jZXMueWFtbAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQ
cmVmZXJlbmNlcy55YW1sCkBAIC0zMzQsNiArMzM0LDE0IEBAIFdlYkF1ZGlvRW5hYmxlZDoKICAg
ZGVmYXVsdFZhbHVlOiB0cnVlCiAgIGNvbmRpdGlvbjogRU5BQkxFKFdFQl9BVURJTykKIAorTW9k
ZXJuVW5wcmVmaXhlZFdlYkF1ZGlvRW5hYmxlZDoKKyAgdHlwZTogYm9vbAorICBkZWZhdWx0VmFs
dWU6IGZhbHNlCisgIGNvbmRpdGlvbjogRU5BQkxFKFdFQl9BVURJTykKKyAgaHVtYW5SZWFkYWJs
ZU5hbWU6ICJNb2Rlcm4gV2ViQXVkaW8gQVBJIgorICBodW1hblJlYWRhYmxlRGVzY3JpcHRpb246
ICJNb2Rlcm4gYW5kIHVucHJlZml4ZWQgV2ViQXVkaW8gQVBJIgorICBjYXRlZ29yeTogZXhwZXJp
bWVudGFsCisKIEF0dGFjaG1lbnRFbGVtZW50RW5hYmxlZDoKICAgdHlwZTogYm9vbAogICBkZWZh
dWx0VmFsdWU6IGZhbHNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJW
aWV3L1dlYlByZWZlcmVuY2VLZXlzUHJpdmF0ZS5oIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
V2ViVmlldy9XZWJQcmVmZXJlbmNlS2V5c1ByaXZhdGUuaAppbmRleCAxNTY0NDFlNzI4OWMwZDNk
ZTI0OTgwNTg0NzQ4NDQ3NDkyODhlNjIzLi44YTIzZTEzNDUwZmJiYWFmZjFmMzIyMzlmMzNmODNk
NjhmMjYyNTk2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dl
YlByZWZlcmVuY2VLZXlzUHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dl
YlZpZXcvV2ViUHJlZmVyZW5jZUtleXNQcml2YXRlLmgKQEAgLTExOCw2ICsxMTgsNyBAQAogI2Rl
ZmluZSBXZWJLaXRDb250ZW50Q2hhbmdlT2JzZXJ2ZXJFbmFibGVkUHJlZmVyZW5jZUtleSBAIldl
YktpdENvbnRlbnRDaGFuZ2VPYnNlcnZlckVuYWJsZWQiCiAjZGVmaW5lIFdlYktpdFNob3dSZXBh
aW50Q291bnRlclByZWZlcmVuY2VLZXkgQCJXZWJLaXRTaG93UmVwYWludENvdW50ZXIiCiAjZGVm
aW5lIFdlYktpdFdlYkF1ZGlvRW5hYmxlZFByZWZlcmVuY2VLZXkgQCJXZWJLaXRXZWJBdWRpb0Vu
YWJsZWQiCisjZGVmaW5lIFdlYktpdE1vZGVyblVucHJlZml4ZWRXZWJBdWRpb0VuYWJsZWRQcmVm
ZXJlbmNlS2V5IEAiV2ViS2l0TW9kZXJuVW5wcmVmaXhlZFdlYkF1ZGlvRW5hYmxlZCIKICNkZWZp
bmUgV2ViS2l0V2ViR0xFbmFibGVkUHJlZmVyZW5jZUtleSBAIldlYktpdFdlYkdMRW5hYmxlZCIK
ICNkZWZpbmUgV2ViS2l0V2ViR0wyRW5hYmxlZFByZWZlcmVuY2VLZXkgQCJXZWJLaXRXZWJHTDJF
bmFibGVkIgogI2RlZmluZSBXZWJLaXRXZWJHUFVFbmFibGVkUHJlZmVyZW5jZUtleSBAIldlYktp
dFdlYkdQVUVuYWJsZWQiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJW
aWV3L1dlYlByZWZlcmVuY2VzLm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9X
ZWJQcmVmZXJlbmNlcy5tbQppbmRleCBiODUyOGQyZTA3YjljNjcwMmIwZTU2YzQ0YTFkYTQ5MGVl
NzRjY2NmLi41YzhkM2NmZjhmZDI3YWM1NDgzNjlkNTNkMWNlM2M5MjNjOTYxYjUwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlByZWZlcmVuY2VzLm1tCisr
KyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViUHJlZmVyZW5jZXMubW0KQEAg
LTU3NCw2ICs1NzQsNyBAQCArICh2b2lkKWluaXRpYWxpemUKICAgICAgICAgQE5PLCBXZWJLaXRE
aWFnbm9zdGljTG9nZ2luZ0VuYWJsZWRLZXksCiAgICAgICAgIEAoV2ViQWxsb3dBbGxTdG9yYWdl
KSwgV2ViS2l0U3RvcmFnZUJsb2NraW5nUG9saWN5S2V5LAogICAgICAgICBATk8sIFdlYktpdFBs
dWdJblNuYXBzaG90dGluZ0VuYWJsZWRQcmVmZXJlbmNlS2V5LAorICAgICAgICBATk8sIFdlYktp
dE1vZGVyblVucHJlZml4ZWRXZWJBdWRpb0VuYWJsZWRQcmVmZXJlbmNlS2V5LAogCiAjaWYgUExB
VEZPUk0oSU9TX0ZBTUlMWSkKICAgICAgICAgQFlFUywgV2ViS2l0Q29udGVudENoYW5nZU9ic2Vy
dmVyRW5hYmxlZFByZWZlcmVuY2VLZXksCkBAIC0yMTQ4LDYgKzIxNDksMTYgQEAgLSAodm9pZClz
ZXRXZWJBdWRpb0VuYWJsZWQ6KEJPT0wpZW5hYmxlZAogICAgIFtzZWxmIF9zZXRCb29sVmFsdWU6
ZW5hYmxlZCBmb3JLZXk6V2ViS2l0V2ViQXVkaW9FbmFibGVkUHJlZmVyZW5jZUtleV07CiB9CiAK
Ky0gKEJPT0wpbW9kZXJuVW5wcmVmaXhlZFdlYkF1ZGlvRW5hYmxlZAoreworICAgIHJldHVybiBb
c2VsZiBfYm9vbFZhbHVlRm9yS2V5OldlYktpdE1vZGVyblVucHJlZml4ZWRXZWJBdWRpb0VuYWJs
ZWRQcmVmZXJlbmNlS2V5XTsKK30KKworLSAodm9pZClzZXRNb2Rlcm5VbnByZWZpeGVkV2ViQXVk
aW9FbmFibGVkOihCT09MKWVuYWJsZWQKK3sKKyAgICBbc2VsZiBfc2V0Qm9vbFZhbHVlOmVuYWJs
ZWQgZm9yS2V5OldlYktpdE1vZGVyblVucHJlZml4ZWRXZWJBdWRpb0VuYWJsZWRQcmVmZXJlbmNl
S2V5XTsKK30KKwogLSAoQk9PTClzdWJwaXhlbENTU09NRWxlbWVudE1ldHJpY3NFbmFibGVkCiB7
CiAgICAgcmV0dXJuIFtzZWxmIF9ib29sVmFsdWVGb3JLZXk6V2ViS2l0U3VicGl4ZWxDU1NPTUVs
ZW1lbnRNZXRyaWNzRW5hYmxlZFByZWZlcmVuY2VLZXldOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJQcmVmZXJlbmNlc1ByaXZhdGUuaCBiL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViUHJlZmVyZW5jZXNQcml2YXRlLmgKaW5kZXggOGM4
NjZlYjhhODlkN2I4ODU3NDQ4NWE2MTc1NmFjZmJmZmJkYTNhZC4uYTQ1MDk0NzFhMDAzNDVjNGQ0
N2U3ZDVjYzJkZDBkNGYzYzdmZGM1ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvV2ViVmlldy9XZWJQcmVmZXJlbmNlc1ByaXZhdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9XZWJWaWV3L1dlYlByZWZlcmVuY2VzUHJpdmF0ZS5oCkBAIC0yNjksNiArMjY5LDkg
QEAgZXh0ZXJuIE5TU3RyaW5nICpXZWJQcmVmZXJlbmNlc0NhY2hlTW9kZWxDaGFuZ2VkSW50ZXJu
YWxOb3RpZmljYXRpb24gV0VCS0lUX0RFUFIKIC0gKEJPT0wpd2ViQXVkaW9FbmFibGVkOwogLSAo
dm9pZClzZXRXZWJBdWRpb0VuYWJsZWQ6KEJPT0wpZW5hYmxlZDsKIAorLSAoQk9PTCltb2Rlcm5V
bnByZWZpeGVkV2ViQXVkaW9FbmFibGVkOworLSAodm9pZClzZXRNb2Rlcm5VbnByZWZpeGVkV2Vi
QXVkaW9FbmFibGVkOihCT09MKWVuYWJsZWQ7CisKIC0gKEJPT0wpc3VicGl4ZWxDU1NPTUVsZW1l
bnRNZXRyaWNzRW5hYmxlZDsKIC0gKHZvaWQpc2V0U3VicGl4ZWxDU1NPTUVsZW1lbnRNZXRyaWNz
RW5hYmxlZDooQk9PTCllbmFibGVkOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9XZWJWaWV3L1dlYlZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3
L1dlYlZpZXcubW0KaW5kZXggMjk5Y2IxY2E3OTM0YmE4YWFhM2Q2MjBjZjYxNTk0YmU2NDBiMDM5
YS4uODUxMjEzMjUyMDhiOGVkYTRiMjk5OGMyYTkxMjViYmIxYTM2OWYzNyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCisrKyBiL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQpAQCAtMzI2Nyw2ICszMjY3LDcgQEAg
LSAodm9pZClfcHJlZmVyZW5jZXNDaGFuZ2VkOihXZWJQcmVmZXJlbmNlcyAqKXByZWZlcmVuY2Vz
CiAKICNpZiBFTkFCTEUoV0VCX0FVRElPKQogICAgIHNldHRpbmdzLnNldFdlYkF1ZGlvRW5hYmxl
ZChbcHJlZmVyZW5jZXMgd2ViQXVkaW9FbmFibGVkXSk7CisgICAgc2V0dGluZ3Muc2V0TW9kZXJu
VW5wcmVmaXhlZFdlYkF1ZGlvRW5hYmxlZChbcHJlZmVyZW5jZXMgbW9kZXJuVW5wcmVmaXhlZFdl
YkF1ZGlvRW5hYmxlZF0pOwogI2VuZGlmCiAKICNpZiBFTkFCTEUoRlVMTFNDUkVFTl9BUEkpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJQcmVmZXJlbmNlS2V5c1ByaXZh
dGUuaCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlByZWZlcmVuY2VLZXlzUHJpdmF0ZS5o
CmluZGV4IDgwNDUzMWE0NmJmYjU3MjNmNmVkMWNhYzMyZjk1OGYxMzNmZWMyODMuLjJhMjEyMWFk
Yjk2ODY5ODQxMjFjMGU0YmE4ZGFmZmNhN2JjYzZjYWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXRMZWdhY3kvd2luL1dlYlByZWZlcmVuY2VLZXlzUHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJL
aXRMZWdhY3kvd2luL1dlYlByZWZlcmVuY2VLZXlzUHJpdmF0ZS5oCkBAIC03NSw2ICs3NSw3IEBA
CiAjZGVmaW5lIFdlYktpdExvY2FsU3RvcmFnZURhdGFiYXNlUGF0aFByZWZlcmVuY2VLZXkgIldl
YktpdExvY2FsU3RvcmFnZURhdGFiYXNlUGF0aCIKICNkZWZpbmUgV2ViS2l0SHlwZXJsaW5rQXVk
aXRpbmdFbmFibGVkUHJlZmVyZW5jZUtleSAiV2ViS2l0SHlwZXJsaW5rQXVkaXRpbmdFbmFibGVk
IgogI2RlZmluZSBXZWJLaXRXZWJBdWRpb0VuYWJsZWRQcmVmZXJlbmNlS2V5ICJXZWJLaXRXZWJB
dWRpb0VuYWJsZWQiCisjZGVmaW5lIFdlYktpdE1vZGVyblVucHJlZml4ZWRXZWJBdWRpb0VuYWJs
ZWRQcmVmZXJlbmNlS2V5ICJXZWJLaXRXZWJBdWRpb0VuYWJsZWQiCiAjZGVmaW5lIFdlYktpdFNo
b3VsZERpc3BsYXlTdWJ0aXRsZXNQcmVmZXJlbmNlS2V5ICJXZWJLaXRTaG91bGREaXNwbGF5U3Vi
dGl0bGVzIgogI2RlZmluZSBXZWJLaXRTaG91bGREaXNwbGF5Q2FwdGlvbnNQcmVmZXJlbmNlS2V5
ICJXZWJLaXRTaG91bGREaXNwbGF5Q2FwdGlvbnMiCiAjZGVmaW5lIFdlYktpdFNob3VsZERpc3Bs
YXlUZXh0RGVzY3JpcHRpb25zUHJlZmVyZW5jZUtleSAiV2ViS2l0U2hvdWxkRGlzcGxheVRleHRE
ZXNjcmlwdGlvbnMiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJQcmVm
ZXJlbmNlcy5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJQcmVmZXJlbmNlcy5jcHAK
aW5kZXggNTgyNmU0MTk1OGMwMzM4ODkyM2NmMzg5ZWI3ZDJhODY1ZjM3ZjE1My4uOTNkZThhMzIw
YWExNTgzNDlhMDcyMDVkMDRlMmVhNGM0MTQ5ZjI5NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dExlZ2FjeS93aW4vV2ViUHJlZmVyZW5jZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
d2luL1dlYlByZWZlcmVuY2VzLmNwcApAQCAtMjMyLDYgKzIzMiw3IEBAIHZvaWQgV2ViUHJlZmVy
ZW5jZXM6OmluaXRpYWxpemVEZWZhdWx0U2V0dGluZ3MoKQogICAgIENGRGljdGlvbmFyeUFkZFZh
bHVlKGRlZmF1bHRzLCBDRlNUUihXZWJLaXRKYXZhU2NyaXB0UnVudGltZUZsYWdzUHJlZmVyZW5j
ZUtleSksIENGU1RSKCIwIikpOwogICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKGRlZmF1bHRzLCBD
RlNUUihXZWJLaXRXZWJTZWN1cml0eUVuYWJsZWRQcmVmZXJlbmNlS2V5KSwga0NGQm9vbGVhblRy
dWUpOwogICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKGRlZmF1bHRzLCBDRlNUUihXZWJLaXRBbGxv
d1RvcE5hdmlnYXRpb25Ub0RhdGFVUkxzUHJlZmVyZW5jZUtleSksIGtDRkJvb2xlYW5GYWxzZSk7
CisgICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVmYXVsdHMsIENGU1RSKFdlYktpdFdlYkF1ZGlv
RW5hYmxlZFByZWZlcmVuY2VLZXkpLCBrQ0ZCb29sZWFuRmFsc2UpOwogICAgIENGRGljdGlvbmFy
eUFkZFZhbHVlKGRlZmF1bHRzLCBDRlNUUihXZWJLaXRBbGxvd1VuaXZlcnNhbEFjY2Vzc0Zyb21G
aWxlVVJMc1ByZWZlcmVuY2VLZXkpLCBrQ0ZCb29sZWFuRmFsc2UpOwogICAgIENGRGljdGlvbmFy
eUFkZFZhbHVlKGRlZmF1bHRzLCBDRlNUUihXZWJLaXRBbGxvd0ZpbGVBY2Nlc3NGcm9tRmlsZVVS
THNQcmVmZXJlbmNlS2V5KSwga0NGQm9vbGVhblRydWUpOwogICAgIENGRGljdGlvbmFyeUFkZFZh
bHVlKGRlZmF1bHRzLCBDRlNUUihXZWJLaXRKYXZhU2NyaXB0Q2FuQWNjZXNzQ2xpcGJvYXJkUHJl
ZmVyZW5jZUtleSksIGtDRkJvb2xlYW5GYWxzZSk7CkBAIC0yNDk5LDMgKzI1MDAsMTcgQEAgSFJF
U1VMVCBXZWJQcmVmZXJlbmNlczo6c2V0QWxsb3dUb3BOYXZpZ2F0aW9uVG9EYXRhVVJMcyhCT09M
IGFsbG93QWNjZXNzKQogICAgIHNldEJvb2xWYWx1ZShXZWJLaXRBbGxvd1RvcE5hdmlnYXRpb25U
b0RhdGFVUkxzUHJlZmVyZW5jZUtleSwgYWxsb3dBY2Nlc3MpOwogICAgIHJldHVybiBTX09LOwog
fQorCitIUkVTVUxUIFdlYlByZWZlcmVuY2VzOjptb2Rlcm5VbnByZWZpeGVkV2ViQXVkaW9FbmFi
bGVkKF9PdXRfIEJPT0wqIGVuYWJsZWQpCit7CisgICAgaWYgKCFlbmFibGVkKQorICAgICAgICBy
ZXR1cm4gRV9QT0lOVEVSOworICAgICplbmFibGVkID0gYm9vbFZhbHVlRm9yS2V5KFdlYktpdFdl
YkF1ZGlvRW5hYmxlZFByZWZlcmVuY2VLZXkpOworICAgIHJldHVybiBTX09LOworfQorCitIUkVT
VUxUIFdlYlByZWZlcmVuY2VzOjpzZXRNb2Rlcm5VbnByZWZpeGVkV2ViQXVkaW9FbmFibGVkKEJP
T0wgZW5hYmxlZCkKK3sKKyAgICBzZXRCb29sVmFsdWUoV2ViS2l0V2ViQXVkaW9FbmFibGVkUHJl
ZmVyZW5jZUtleSwgZW5hYmxlZCk7CisgICAgcmV0dXJuIFNfT0s7Cit9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJQcmVmZXJlbmNlcy5oIGIvU291cmNlL1dlYktpdExl
Z2FjeS93aW4vV2ViUHJlZmVyZW5jZXMuaAppbmRleCBmN2ZlNzY4NDJiNGRkMjMyOTgxZWZmZjcy
MWMxZmE0YjEwOTc5ZTk4Li4xNDU0MWU1Yjk4ZGFlOWI0NzFkZjkyNjE0ZDY5NzcxOWZlZWY0NDNk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJQcmVmZXJlbmNlcy5oCisr
KyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlByZWZlcmVuY2VzLmgKQEAgLTMwNSw2ICsz
MDUsOCBAQCBwdWJsaWM6CiAgICAgLy8gSVdlYlByZWZlcmVuY2VzUHJpdmF0ZTgKICAgICB2aXJ0
dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgYWxsb3dUb3BOYXZpZ2F0aW9uVG9EYXRhVVJM
cyhfT3V0XyBCT09MKik7CiAgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHNl
dEFsbG93VG9wTmF2aWdhdGlvblRvRGF0YVVSTHMoQk9PTCk7CisgICAgdmlydHVhbCBOUkVTVUxU
IFNURE1FVEhPRENBTExUWVBFIG1vZGVyblVucHJlZml4ZWRXZWJBdWRpb0VuYWJsZWQoX091dF8g
Qk9PTCopOworICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBzZXRNb2Rlcm5V
bnByZWZpeGVkV2ViQXVkaW9FbmFibGVkKEJPT0wpOwogCiAgICAgLy8gV2ViUHJlZmVyZW5jZXMK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVmlldy5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJWaWV3LmNwcAppbmRleCAyOGYyOTNkOGM3ZjdkYTY5Yjhl
MTgxM2FmODhkMTc5ZThmYWZiMmY2Li5kYjI5MTE2YmZjMjU5OTUyY2U2ZGYzM2YzNzM2NjI5YTY3
YjliYTMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJWaWV3LmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJWaWV3LmNwcApAQCAtNTU1Niw2ICs1NTU2
LDExIEBAIEhSRVNVTFQgV2ViVmlldzo6bm90aWZ5UHJlZmVyZW5jZXNDaGFuZ2VkKElXZWJOb3Rp
ZmljYXRpb24qIG5vdGlmaWNhdGlvbikKIAogI2lmIEVOQUJMRShXRUJfQVVESU8pCiAgICAgc2V0
dGluZ3Muc2V0V2ViQXVkaW9FbmFibGVkKHRydWUpOworCisgICAgaHIgPSBwcmVmc1ByaXZhdGUt
Pm1vZGVyblVucHJlZml4ZWRXZWJBdWRpb0VuYWJsZWQoJmVuYWJsZWQpOworICAgIGlmIChGQUlM
RUQoaHIpKQorICAgICAgICByZXR1cm4gaHI7CisgICAgc2V0dGluZ3Muc2V0TW9kZXJuVW5wcmVm
aXhlZFdlYkF1ZGlvRW5hYmxlZCghIWVuYWJsZWQpOwogI2VuZGlmIC8vIEVOQUJMRShXRUJfQVVE
SU8pCiAKICNpZiBFTkFCTEUoV0VCR0wpCmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJl
ZS9tYWMvRHVtcFJlbmRlclRyZWUubW0gYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvRHVtcFJl
bmRlclRyZWUubW0KaW5kZXggYjgxYTFjM2MzNTM3OWJkMDkwMWVlOTEwN2Q5ZGVlNzc1N2RkYWUz
NC4uODdjMDRkOTJmYTRjZTQ3MjIxNmU4YzM4ZmJlZTliYmY3MWEzMmQ5OSAxMDA2NDQKLS0tIGEv
VG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0R1bXBSZW5kZXJUcmVlLm1tCisrKyBiL1Rvb2xzL0R1
bXBSZW5kZXJUcmVlL21hYy9EdW1wUmVuZGVyVHJlZS5tbQpAQCAtOTc5LDYgKzk3OSw3IEBAIHN0
YXRpYyB2b2lkIHJlc2V0V2ViUHJlZmVyZW5jZXNUb0NvbnNpc3RlbnRWYWx1ZXMoKQogI2VuZGlm
CiAKICAgICBbcHJlZmVyZW5jZXMgc2V0V2ViQXVkaW9FbmFibGVkOllFU107CisgICAgW3ByZWZl
cmVuY2VzIHNldE1vZGVyblVucHJlZml4ZWRXZWJBdWRpb0VuYWJsZWQ6WUVTXTsKICAgICBbcHJl
ZmVyZW5jZXMgc2V0TWVkaWFTb3VyY2VFbmFibGVkOllFU107CiAgICAgW3ByZWZlcmVuY2VzIHNl
dFNvdXJjZUJ1ZmZlckNoYW5nZVR5cGVFbmFibGVkOllFU107CiAKZGlmZiAtLWdpdCBhL1Rvb2xz
L0R1bXBSZW5kZXJUcmVlL3dpbi9EdW1wUmVuZGVyVHJlZS5jcHAgYi9Ub29scy9EdW1wUmVuZGVy
VHJlZS93aW4vRHVtcFJlbmRlclRyZWUuY3BwCmluZGV4IDBiMzdhZDQ1ZmUxOGIyYTk0NjVhYzM1
NzIzYmNkY2U2OTU2ZjYzNjIuLmQwYjlkOGM3ZTcyMGZkODMwYzZiNmYwY2MwNWQwNWI5OTM1ZGYw
NDggMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9EdW1wUmVuZGVyVHJlZS5j
cHAKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL0R1bXBSZW5kZXJUcmVlLmNwcApAQCAt
ODM2LDYgKzgzNiw3IEBAIHN0YXRpYyB2b2lkIHJlc2V0V2ViUHJlZmVyZW5jZXNUb0NvbnNpc3Rl
bnRWYWx1ZXMoSVdlYlByZWZlcmVuY2VzKiBwcmVmZXJlbmNlcykKICNlbmRpZgogCiAgICAgcHJl
ZnNQcml2YXRlLT5zZXRBbGxvd1RvcE5hdmlnYXRpb25Ub0RhdGFVUkxzKFRSVUUpOworICAgIHBy
ZWZzUHJpdmF0ZS0+c2V0TW9kZXJuVW5wcmVmaXhlZFdlYkF1ZGlvRW5hYmxlZChUUlVFKTsKICAg
ICBwcmVmc1ByaXZhdGUtPnNldEFsbG93VW5pdmVyc2FsQWNjZXNzRnJvbUZpbGVVUkxzKFRSVUUp
OwogICAgIHByZWZzUHJpdmF0ZS0+c2V0QWxsb3dGaWxlQWNjZXNzRnJvbUZpbGVVUkxzKFRSVUUp
OwogICAgIHByZWZlcmVuY2VzLT5zZXRTdGFuZGFyZEZvbnRGYW1pbHkoc3RhbmRhcmRGYW1pbHkp
OwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0NoYW5nZUxvZyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy9DaGFuZ2VMb2cKaW5kZXggNjNhMWI3OTIxZTAwZWMxZTRiOGU2
NDg0Nzc1OWViYjljNTcyNzhmZC4uZmU0ZGZiOWQwMDY5MzMxMTY1ZDFhMjcxZGM4NGVmODI2ODMz
NDQwYiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0NoYW5nZUxvZworKysg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTggQEAKKzIw
MjAtMDYtMTcgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBBZGQg
ZXhwZXJpbWVudGFsIGZlYXR1cmUgZmxhZyBmb3IgbW9kZXJuICYgdW5wcmVmaXhlZCBXZWJBdWRp
byBBUEkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIx
MzI2OAorCisgICAgICAgIFJldmlld2VkIGJ5IEplciBOb2JsZS4KKworICAgICAgICBSZWJhc2Vs
aW5lIGEgZmV3IHdlYi1wbGF0Zm9ybS10ZXN0cyBub3cgdGhhdCB0aGV5IGFyZSBwYXNzaW5nIG9y
IGZhaWxpbmcgYXQgYSBsYXRlciBzdGFnZS4KKyAgICAgICAgVGhpcyBpcyBkdWUgdG8gb3VyIFdl
YkF1ZGlvIGdldHRpbmcgcHJvcGVybHkgdW5wcmVmaXhlZCBpbiB0aGUgY29udGV4dCBvZiBsYXlv
dXQgdGVzdHMuCisKKyAgICAgICAgKiB3ZWItcGxhdGZvcm0tdGVzdHMvd2ViYXVkaW8vaWRsaGFy
bmVzcy5odHRwcy53aW5kb3ctZXhwZWN0ZWQudHh0OgorICAgICAgICAqIHdlYi1wbGF0Zm9ybS10
ZXN0cy93ZWJhdWRpby90aGUtYXVkaW8tYXBpL3RoZS1hdWRpb2NvbnRleHQtaW50ZXJmYWNlL2F1
ZGlvY29udGV4dC1kZXRhY2hlZC1leGVjdXRpb24tY29udGV4dC50ZW50YXRpdmUtZXhwZWN0ZWQu
dHh0OgorICAgICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy93ZWJhdWRpby90aGUtYXVkaW8tYXBp
L3RoZS1hdWRpb25vZGUtaW50ZXJmYWNlL2F1ZGlvbm9kZS1jb25uZWN0LW1ldGhvZC1jaGFpbmlu
Zy1leHBlY3RlZC50eHQ6CisgICAgICAgICogd2ViLXBsYXRmb3JtLXRlc3RzL3dlYmF1ZGlvL3Ro
ZS1hdWRpby1hcGkvdGhlLW9mZmxpbmVhdWRpb2NvbnRleHQtaW50ZXJmYWNlL29mZmxpbmVhdWRp
b2NvbnRleHQtZGV0YWNoZWQtZXhlY3V0aW9uLWNvbnRleHQudGVudGF0aXZlLWV4cGVjdGVkLnR4
dDoKKwogMjAyMC0wNi0xNyAgRGFycnlsIFBvZ3VlICA8ZGFycnlsQGRwb2d1ZS5jYT4KIAogICAg
ICAgICBJbmRleGVkREI6IFN1cHBvcnQgSURCRmFjdG9yeSBkYXRhYmFzZXMgbWV0aG9kCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9jYWxsLWEtY29uc3RydWN0b3ItYXMtYS1mdW5j
dGlvbi1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9jYWxsLWEtY29uc3RydWN0
b3ItYXMtYS1mdW5jdGlvbi1leHBlY3RlZC50eHQKaW5kZXggOGExODAxY2EyMmZjNjZlZWRhMzky
Y2QzZjdhZjBkNjIxNWYyOTJlMC4uMjc1NGY0OGU1ZjI1NjBjNDZlODU4YjhlNjBlMDQyZWI4Y2Vk
NjY2ZSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vY2FsbC1hLWNvbnN0cnVjdG9y
LWFzLWEtZnVuY3Rpb24tZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL2Nh
bGwtYS1jb25zdHJ1Y3Rvci1hcy1hLWZ1bmN0aW9uLWV4cGVjdGVkLnR4dApAQCAtMyw3ICszLDcg
QEAgVGhpcyB0ZXN0cyBpZiBUeXBlRXJyb3IgaXMgdGhyb3duIG9yIG5vdCB3aGVuIHdlIGNhbGwg
YSBjb25zdHJ1Y3RvciBhcyBhIG5vcm1hbAogT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2Vy
aWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgogCiAK
LVNLSVAgQXVkaW9Db250ZXh0IGlzIG5vdCBpbXBsZW1lbnRlZC4KK1BBU1MgQXVkaW9Db250ZXh0
KCkgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogQ29uc3RydWN0b3IgcmVxdWlyZXMgJ25ldycg
b3BlcmF0b3IuCiBQQVNTIEZvcm1EYXRhKCkgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogQ29u
c3RydWN0b3IgcmVxdWlyZXMgJ25ldycgb3BlcmF0b3IuCiBQQVNTIEV2ZW50U291cmNlKCkgdGhy
ZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogQ29uc3RydWN0b3IgcmVxdWlyZXMgJ25ldycgb3BlcmF0
b3IuCiBQQVNTIEZpbGVSZWFkZXIoKSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBDb25zdHJ1
Y3RvciByZXF1aXJlcyAnbmV3JyBvcGVyYXRvci4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2ViYXVkaW8vaWRsaGFybmVzcy5odHRwcy53
aW5kb3ctZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy93ZWJhdWRpby9pZGxoYXJuZXNzLmh0dHBzLndpbmRvdy1leHBlY3RlZC50eHQKaW5k
ZXggY2NjN2U5ZThmNzFiZjFkNDEyNGRiY2RlODkzNjE2YzI2NDBiYzNhZC4uODU5OGRkYWZlMDgw
MWY4NjNjN2M5MDNkMjEwMjRlNjhjYjFiODc2MSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJhdWRpby9pZGxoYXJuZXNzLmh0dHBzLndp
bmRvdy1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy93ZWJhdWRpby9pZGxoYXJuZXNzLmh0dHBzLndpbmRvdy1leHBlY3RlZC50eHQK
QEAgLTQzLDcgKzQzLDcgQEAgRkFJTCBCYXNlQXVkaW9Db250ZXh0IGludGVyZmFjZTogb3BlcmF0
aW9uIGNyZWF0ZVdhdmVTaGFwZXIoKSBhc3NlcnRfb3duX3Byb3BlcnQKIEZBSUwgQmFzZUF1ZGlv
Q29udGV4dCBpbnRlcmZhY2U6IG9wZXJhdGlvbiBkZWNvZGVBdWRpb0RhdGEoQXJyYXlCdWZmZXIs
IG9wdGlvbmFsIERlY29kZVN1Y2Nlc3NDYWxsYmFjaz8sIG9wdGlvbmFsIERlY29kZUVycm9yQ2Fs
bGJhY2s/KSBhc3NlcnRfb3duX3Byb3BlcnR5OiBzZWxmIGRvZXMgbm90IGhhdmUgb3duIHByb3Bl
cnR5ICJCYXNlQXVkaW9Db250ZXh0IiBleHBlY3RlZCBwcm9wZXJ0eSAiQmFzZUF1ZGlvQ29udGV4
dCIgbWlzc2luZwogRkFJTCBBdWRpb0NvbnRleHQgaW50ZXJmYWNlOiBleGlzdGVuY2UgYW5kIHBy
b3BlcnRpZXMgb2YgaW50ZXJmYWNlIG9iamVjdCBhc3NlcnRfb3duX3Byb3BlcnR5OiBzZWxmIGRv
ZXMgbm90IGhhdmUgb3duIHByb3BlcnR5ICJCYXNlQXVkaW9Db250ZXh0IiBleHBlY3RlZCBwcm9w
ZXJ0eSAiQmFzZUF1ZGlvQ29udGV4dCIgbWlzc2luZwogUEFTUyBBdWRpb0NvbnRleHQgaW50ZXJm
YWNlIG9iamVjdCBsZW5ndGggCi1GQUlMIEF1ZGlvQ29udGV4dCBpbnRlcmZhY2Ugb2JqZWN0IG5h
bWUgYXNzZXJ0X2VxdWFsczogd3JvbmcgdmFsdWUgZm9yIEF1ZGlvQ29udGV4dC5uYW1lIGV4cGVj
dGVkICJBdWRpb0NvbnRleHQiIGJ1dCBnb3QgIndlYmtpdEF1ZGlvQ29udGV4dCIKK1BBU1MgQXVk
aW9Db250ZXh0IGludGVyZmFjZSBvYmplY3QgbmFtZSAKIEZBSUwgQXVkaW9Db250ZXh0IGludGVy
ZmFjZTogZXhpc3RlbmNlIGFuZCBwcm9wZXJ0aWVzIG9mIGludGVyZmFjZSBwcm90b3R5cGUgb2Jq
ZWN0IGFzc2VydF9vd25fcHJvcGVydHk6IHNlbGYgZG9lcyBub3QgaGF2ZSBvd24gcHJvcGVydHkg
IkJhc2VBdWRpb0NvbnRleHQiIGV4cGVjdGVkIHByb3BlcnR5ICJCYXNlQXVkaW9Db250ZXh0IiBt
aXNzaW5nCiBQQVNTIEF1ZGlvQ29udGV4dCBpbnRlcmZhY2U6IGV4aXN0ZW5jZSBhbmQgcHJvcGVy
dGllcyBvZiBpbnRlcmZhY2UgcHJvdG90eXBlIG9iamVjdCdzICJjb25zdHJ1Y3RvciIgcHJvcGVy
dHkgCiBQQVNTIEF1ZGlvQ29udGV4dCBpbnRlcmZhY2U6IGV4aXN0ZW5jZSBhbmQgcHJvcGVydGll
cyBvZiBpbnRlcmZhY2UgcHJvdG90eXBlIG9iamVjdCdzIEBAdW5zY29wYWJsZXMgcHJvcGVydHkg
CkBAIC01OCw3ICs1OCw3IEBAIFBBU1MgQXVkaW9Db250ZXh0IGludGVyZmFjZTogb3BlcmF0aW9u
IGNyZWF0ZU1lZGlhU3RyZWFtU291cmNlKE1lZGlhU3RyZWFtKQogRkFJTCBBdWRpb0NvbnRleHQg
aW50ZXJmYWNlOiBvcGVyYXRpb24gY3JlYXRlTWVkaWFTdHJlYW1UcmFja1NvdXJjZShNZWRpYVN0
cmVhbVRyYWNrKSBhc3NlcnRfb3duX3Byb3BlcnR5OiBpbnRlcmZhY2UgcHJvdG90eXBlIG9iamVj
dCBtaXNzaW5nIG5vbi1zdGF0aWMgb3BlcmF0aW9uIGV4cGVjdGVkIHByb3BlcnR5ICJjcmVhdGVN
ZWRpYVN0cmVhbVRyYWNrU291cmNlIiBtaXNzaW5nCiBQQVNTIEF1ZGlvQ29udGV4dCBpbnRlcmZh
Y2U6IG9wZXJhdGlvbiBjcmVhdGVNZWRpYVN0cmVhbURlc3RpbmF0aW9uKCkgCiBQQVNTIEF1ZGlv
Q29udGV4dCBtdXN0IGJlIHByaW1hcnkgaW50ZXJmYWNlIG9mIGNvbnRleHQgCi1GQUlMIFN0cmlu
Z2lmaWNhdGlvbiBvZiBjb250ZXh0IGFzc2VydF9jbGFzc19zdHJpbmc6IGNsYXNzIHN0cmluZyBv
ZiBjb250ZXh0IGV4cGVjdGVkICJbb2JqZWN0IEF1ZGlvQ29udGV4dF0iIGJ1dCBnb3QgIltvYmpl
Y3Qgd2Via2l0QXVkaW9Db250ZXh0XSIKK1BBU1MgU3RyaW5naWZpY2F0aW9uIG9mIGNvbnRleHQg
CiBGQUlMIEF1ZGlvQ29udGV4dCBpbnRlcmZhY2U6IGNvbnRleHQgbXVzdCBpbmhlcml0IHByb3Bl
cnR5ICJiYXNlTGF0ZW5jeSIgd2l0aCB0aGUgcHJvcGVyIHR5cGUgYXNzZXJ0X2luaGVyaXRzOiBw
cm9wZXJ0eSAiYmFzZUxhdGVuY3kiIG5vdCBmb3VuZCBpbiBwcm90b3R5cGUgY2hhaW4KIEZBSUwg
QXVkaW9Db250ZXh0IGludGVyZmFjZTogY29udGV4dCBtdXN0IGluaGVyaXQgcHJvcGVydHkgIm91
dHB1dExhdGVuY3kiIHdpdGggdGhlIHByb3BlciB0eXBlIGFzc2VydF9pbmhlcml0czogcHJvcGVy
dHkgIm91dHB1dExhdGVuY3kiIG5vdCBmb3VuZCBpbiBwcm90b3R5cGUgY2hhaW4KIEZBSUwgQXVk
aW9Db250ZXh0IGludGVyZmFjZTogY29udGV4dCBtdXN0IGluaGVyaXQgcHJvcGVydHkgImdldE91
dHB1dFRpbWVzdGFtcCgpIiB3aXRoIHRoZSBwcm9wZXIgdHlwZSBhc3NlcnRfaW5oZXJpdHM6IHBy
b3BlcnR5ICJnZXRPdXRwdXRUaW1lc3RhbXAiIG5vdCBmb3VuZCBpbiBwcm90b3R5cGUgY2hhaW4K
QEAgLTEwOCw3ICsxMDgsNyBAQCBQQVNTIEJhc2VBdWRpb0NvbnRleHQgaW50ZXJmYWNlOiBjb250
ZXh0IG11c3QgaW5oZXJpdCBwcm9wZXJ0eSAiZGVjb2RlQXVkaW9EYXRhKAogRkFJTCBCYXNlQXVk
aW9Db250ZXh0IGludGVyZmFjZTogY2FsbGluZyBkZWNvZGVBdWRpb0RhdGEoQXJyYXlCdWZmZXIs
IG9wdGlvbmFsIERlY29kZVN1Y2Nlc3NDYWxsYmFjaz8sIG9wdGlvbmFsIERlY29kZUVycm9yQ2Fs
bGJhY2s/KSBvbiBjb250ZXh0IHdpdGggdG9vIGZldyBhcmd1bWVudHMgbXVzdCB0aHJvdyBUeXBl
RXJyb3IgYXNzZXJ0X3VucmVhY2hlZDogVGhyb3dzICJUeXBlRXJyb3I6IE5vdCBlbm91Z2ggYXJn
dW1lbnRzIiBpbnN0ZWFkIG9mIHJlamVjdGluZyBwcm9taXNlIFJlYWNoZWQgdW5yZWFjaGFibGUg
Y29kZQogRkFJTCBPZmZsaW5lQXVkaW9Db250ZXh0IGludGVyZmFjZTogZXhpc3RlbmNlIGFuZCBw
cm9wZXJ0aWVzIG9mIGludGVyZmFjZSBvYmplY3QgYXNzZXJ0X293bl9wcm9wZXJ0eTogc2VsZiBk
b2VzIG5vdCBoYXZlIG93biBwcm9wZXJ0eSAiQmFzZUF1ZGlvQ29udGV4dCIgZXhwZWN0ZWQgcHJv
cGVydHkgIkJhc2VBdWRpb0NvbnRleHQiIG1pc3NpbmcKIEZBSUwgT2ZmbGluZUF1ZGlvQ29udGV4
dCBpbnRlcmZhY2Ugb2JqZWN0IGxlbmd0aCBhc3NlcnRfZXF1YWxzOiB3cm9uZyB2YWx1ZSBmb3Ig
T2ZmbGluZUF1ZGlvQ29udGV4dC5sZW5ndGggZXhwZWN0ZWQgMSBidXQgZ290IDMKLUZBSUwgT2Zm
bGluZUF1ZGlvQ29udGV4dCBpbnRlcmZhY2Ugb2JqZWN0IG5hbWUgYXNzZXJ0X2VxdWFsczogd3Jv
bmcgdmFsdWUgZm9yIE9mZmxpbmVBdWRpb0NvbnRleHQubmFtZSBleHBlY3RlZCAiT2ZmbGluZUF1
ZGlvQ29udGV4dCIgYnV0IGdvdCAid2Via2l0T2ZmbGluZUF1ZGlvQ29udGV4dCIKK1BBU1MgT2Zm
bGluZUF1ZGlvQ29udGV4dCBpbnRlcmZhY2Ugb2JqZWN0IG5hbWUgCiBGQUlMIE9mZmxpbmVBdWRp
b0NvbnRleHQgaW50ZXJmYWNlOiBleGlzdGVuY2UgYW5kIHByb3BlcnRpZXMgb2YgaW50ZXJmYWNl
IHByb3RvdHlwZSBvYmplY3QgYXNzZXJ0X293bl9wcm9wZXJ0eTogc2VsZiBkb2VzIG5vdCBoYXZl
IG93biBwcm9wZXJ0eSAiQmFzZUF1ZGlvQ29udGV4dCIgZXhwZWN0ZWQgcHJvcGVydHkgIkJhc2VB
dWRpb0NvbnRleHQiIG1pc3NpbmcKIFBBU1MgT2ZmbGluZUF1ZGlvQ29udGV4dCBpbnRlcmZhY2U6
IGV4aXN0ZW5jZSBhbmQgcHJvcGVydGllcyBvZiBpbnRlcmZhY2UgcHJvdG90eXBlIG9iamVjdCdz
ICJjb25zdHJ1Y3RvciIgcHJvcGVydHkgCiBQQVNTIE9mZmxpbmVBdWRpb0NvbnRleHQgaW50ZXJm
YWNlOiBleGlzdGVuY2UgYW5kIHByb3BlcnRpZXMgb2YgaW50ZXJmYWNlIHByb3RvdHlwZSBvYmpl
Y3QncyBAQHVuc2NvcGFibGVzIHByb3BlcnR5IApAQCAtMTE4LDcgKzExOCw3IEBAIEZBSUwgT2Zm
bGluZUF1ZGlvQ29udGV4dCBpbnRlcmZhY2U6IG9wZXJhdGlvbiBzdXNwZW5kKGRvdWJsZSkgYXNz
ZXJ0X293bl9wcm9wZXJ0CiBGQUlMIE9mZmxpbmVBdWRpb0NvbnRleHQgaW50ZXJmYWNlOiBhdHRy
aWJ1dGUgbGVuZ3RoIGFzc2VydF90cnVlOiBUaGUgcHJvdG90eXBlIG9iamVjdCBtdXN0IGhhdmUg
YSBwcm9wZXJ0eSAibGVuZ3RoIiBleHBlY3RlZCB0cnVlIGdvdCBmYWxzZQogRkFJTCBPZmZsaW5l
QXVkaW9Db250ZXh0IGludGVyZmFjZTogYXR0cmlidXRlIG9uY29tcGxldGUgYXNzZXJ0X293bl9w
cm9wZXJ0eTogZXhwZWN0ZWQgcHJvcGVydHkgIm9uY29tcGxldGUiIG1pc3NpbmcKIFBBU1MgT2Zm
bGluZUF1ZGlvQ29udGV4dCBtdXN0IGJlIHByaW1hcnkgaW50ZXJmYWNlIG9mIG5ldyBPZmZsaW5l
QXVkaW9Db250ZXh0KDEsIDEsIHNhbXBsZV9yYXRlKSAKLUZBSUwgU3RyaW5naWZpY2F0aW9uIG9m
IG5ldyBPZmZsaW5lQXVkaW9Db250ZXh0KDEsIDEsIHNhbXBsZV9yYXRlKSBhc3NlcnRfY2xhc3Nf
c3RyaW5nOiBjbGFzcyBzdHJpbmcgb2YgbmV3IE9mZmxpbmVBdWRpb0NvbnRleHQoMSwgMSwgc2Ft
cGxlX3JhdGUpIGV4cGVjdGVkICJbb2JqZWN0IE9mZmxpbmVBdWRpb0NvbnRleHRdIiBidXQgZ290
ICJbb2JqZWN0IHdlYmtpdE9mZmxpbmVBdWRpb0NvbnRleHRdIgorUEFTUyBTdHJpbmdpZmljYXRp
b24gb2YgbmV3IE9mZmxpbmVBdWRpb0NvbnRleHQoMSwgMSwgc2FtcGxlX3JhdGUpIAogUEFTUyBP
ZmZsaW5lQXVkaW9Db250ZXh0IGludGVyZmFjZTogbmV3IE9mZmxpbmVBdWRpb0NvbnRleHQoMSwg
MSwgc2FtcGxlX3JhdGUpIG11c3QgaW5oZXJpdCBwcm9wZXJ0eSAic3RhcnRSZW5kZXJpbmcoKSIg
d2l0aCB0aGUgcHJvcGVyIHR5cGUgCiBQQVNTIE9mZmxpbmVBdWRpb0NvbnRleHQgaW50ZXJmYWNl
OiBuZXcgT2ZmbGluZUF1ZGlvQ29udGV4dCgxLCAxLCBzYW1wbGVfcmF0ZSkgbXVzdCBpbmhlcml0
IHByb3BlcnR5ICJyZXN1bWUoKSIgd2l0aCB0aGUgcHJvcGVyIHR5cGUgCiBQQVNTIE9mZmxpbmVB
dWRpb0NvbnRleHQgaW50ZXJmYWNlOiBuZXcgT2ZmbGluZUF1ZGlvQ29udGV4dCgxLCAxLCBzYW1w
bGVfcmF0ZSkgbXVzdCBpbmhlcml0IHByb3BlcnR5ICJzdXNwZW5kKGRvdWJsZSkiIHdpdGggdGhl
IHByb3BlciB0eXBlIApAQCAtOTA0LDcgKzkwNCw3IEBAIEZBSUwgQXVkaW9Ob2RlIGludGVyZmFj
ZTogbmV3IE9zY2lsbGF0b3JOb2RlKGNvbnRleHQpIG11c3QgaW5oZXJpdCBwcm9wZXJ0eSAiY2hh
CiBGQUlMIEF1ZGlvTm9kZSBpbnRlcmZhY2U6IG5ldyBPc2NpbGxhdG9yTm9kZShjb250ZXh0KSBt
dXN0IGluaGVyaXQgcHJvcGVydHkgImNoYW5uZWxJbnRlcnByZXRhdGlvbiIgd2l0aCB0aGUgcHJv
cGVyIHR5cGUgYXNzZXJ0X2VxdWFsczogVW5leHBlY3RlZCBleGNlcHRpb24gd2hlbiBldmFsdWF0
aW5nIG9iamVjdCBleHBlY3RlZCBudWxsIGJ1dCBnb3Qgb2JqZWN0ICJUeXBlRXJyb3I6IGZ1bmN0
aW9uIGlzIG5vdCBhIGNvbnN0cnVjdG9yIChldmFsdWF0aW5nICduZXcgT3NjaWxsYXRvck5vZGUo
Y29udGV4dCknKSIKIFBBU1MgUGFubmVyTm9kZSBpbnRlcmZhY2U6IGV4aXN0ZW5jZSBhbmQgcHJv
cGVydGllcyBvZiBpbnRlcmZhY2Ugb2JqZWN0IAogRkFJTCBQYW5uZXJOb2RlIGludGVyZmFjZSBv
YmplY3QgbGVuZ3RoIGFzc2VydF9lcXVhbHM6IHdyb25nIHZhbHVlIGZvciBQYW5uZXJOb2RlLmxl
bmd0aCBleHBlY3RlZCAxIGJ1dCBnb3QgMAotRkFJTCBQYW5uZXJOb2RlIGludGVyZmFjZSBvYmpl
Y3QgbmFtZSBhc3NlcnRfZXF1YWxzOiB3cm9uZyB2YWx1ZSBmb3IgUGFubmVyTm9kZS5uYW1lIGV4
cGVjdGVkICJQYW5uZXJOb2RlIiBidXQgZ290ICJ3ZWJraXRBdWRpb1Bhbm5lck5vZGUiCitQQVNT
IFBhbm5lck5vZGUgaW50ZXJmYWNlIG9iamVjdCBuYW1lIAogUEFTUyBQYW5uZXJOb2RlIGludGVy
ZmFjZTogZXhpc3RlbmNlIGFuZCBwcm9wZXJ0aWVzIG9mIGludGVyZmFjZSBwcm90b3R5cGUgb2Jq
ZWN0IAogUEFTUyBQYW5uZXJOb2RlIGludGVyZmFjZTogZXhpc3RlbmNlIGFuZCBwcm9wZXJ0aWVz
IG9mIGludGVyZmFjZSBwcm90b3R5cGUgb2JqZWN0J3MgImNvbnN0cnVjdG9yIiBwcm9wZXJ0eSAK
IFBBU1MgUGFubmVyTm9kZSBpbnRlcmZhY2U6IGV4aXN0ZW5jZSBhbmQgcHJvcGVydGllcyBvZiBp
bnRlcmZhY2UgcHJvdG90eXBlIG9iamVjdCdzIEBAdW5zY29wYWJsZXMgcHJvcGVydHkgCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYmF1
ZGlvL3RoZS1hdWRpby1hcGkvdGhlLWF1ZGlvY29udGV4dC1pbnRlcmZhY2UvYXVkaW9jb250ZXh0
LWRldGFjaGVkLWV4ZWN1dGlvbi1jb250ZXh0LnRlbnRhdGl2ZS1leHBlY3RlZC50eHQgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYmF1ZGlvL3RoZS1hdWRp
by1hcGkvdGhlLWF1ZGlvY29udGV4dC1pbnRlcmZhY2UvYXVkaW9jb250ZXh0LWRldGFjaGVkLWV4
ZWN1dGlvbi1jb250ZXh0LnRlbnRhdGl2ZS1leHBlY3RlZC50eHQKaW5kZXggMzQ0ZmNkOWM5NDA1
YmVkZmE5YjM0N2RlYjczMTJiN2Q0NGIyODc2Zi4uOGI4ZGU5MGZjYmI1NGZkOWJjOTY2M2ZhNDkz
NDU1MzhjYTBmZTExMCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy93ZWJhdWRpby90aGUtYXVkaW8tYXBpL3RoZS1hdWRpb2NvbnRleHQtaW50
ZXJmYWNlL2F1ZGlvY29udGV4dC1kZXRhY2hlZC1leGVjdXRpb24tY29udGV4dC50ZW50YXRpdmUt
ZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvd2ViYXVkaW8vdGhlLWF1ZGlvLWFwaS90aGUtYXVkaW9jb250ZXh0LWludGVyZmFjZS9h
dWRpb2NvbnRleHQtZGV0YWNoZWQtZXhlY3V0aW9uLWNvbnRleHQudGVudGF0aXZlLWV4cGVjdGVk
LnR4dApAQCAtMSw3ICsxLDYgQEAKIAotCiBQQVNTICMgQVVESVQgVEFTSyBSVU5ORVIgU1RBUlRF
RC4gCi1GQUlMIEV4ZWN1dGluZyAiZGVjb2Rpbmctb24tZGV0YWNoZWQtaWZyYW1lIiBwcm9taXNl
X3Rlc3Q6IFVuaGFuZGxlZCByZWplY3Rpb24gd2l0aCB2YWx1ZTogb2JqZWN0ICJUeXBlRXJyb3I6
IHVuZGVmaW5lZCBpcyBub3QgYSBjb25zdHJ1Y3RvciAoZXZhbHVhdGluZyAnbmV3IGlmcmFtZS5j
b250ZW50V2luZG93LkF1ZGlvQ29udGV4dCgpJykiCitGQUlMIEV4ZWN1dGluZyAiZGVjb2Rpbmct
b24tZGV0YWNoZWQtaWZyYW1lIiBwcm9taXNlX3Rlc3Q6IFVuaGFuZGxlZCByZWplY3Rpb24gd2l0
aCB2YWx1ZTogb2JqZWN0ICJUeXBlRXJyb3I6IE5vdCBlbm91Z2ggYXJndW1lbnRzIgogUEFTUyBB
dWRpdCByZXBvcnQgCiBQQVNTID4gW2RlY29kaW5nLW9uLWRldGFjaGVkLWlmcmFtZV0gIAogUEFT
UyAjIEFVRElUIFRBU0sgUlVOTkVSIEZJTklTSEVEOiAxIHRhc2tzIHJhbiBzdWNjZXNzZnVsbHku
IApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy93ZWJhdWRpby90aGUtYXVkaW8tYXBpL3RoZS1hdWRpb25vZGUtaW50ZXJmYWNlL2F1ZGlvbm9k
ZS1jb25uZWN0LW1ldGhvZC1jaGFpbmluZy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYmF1ZGlvL3RoZS1hdWRpby1hcGkvdGhlLWF1
ZGlvbm9kZS1pbnRlcmZhY2UvYXVkaW9ub2RlLWNvbm5lY3QtbWV0aG9kLWNoYWluaW5nLWV4cGVj
dGVkLnR4dAppbmRleCA3M2Y3N2U1NWNjODkxNjU2YzJiZGE2OGUzYTllMzcxNjk1ODJmODRjLi42
YTY1OWI1NjI1OGQ1NDM3OTc1YjU1OGRkN2QzYjk5ZmU4MDdkMjZiIDEwMDY0NAotLS0gYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYmF1ZGlvL3RoZS1hdWRp
by1hcGkvdGhlLWF1ZGlvbm9kZS1pbnRlcmZhY2UvYXVkaW9ub2RlLWNvbm5lY3QtbWV0aG9kLWNo
YWluaW5nLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3dlYmF1ZGlvL3RoZS1hdWRpby1hcGkvdGhlLWF1ZGlvbm9kZS1pbnRlcmZh
Y2UvYXVkaW9ub2RlLWNvbm5lY3QtbWV0aG9kLWNoYWluaW5nLWV4cGVjdGVkLnR4dApAQCAtMzYs
OSArMzYsOSBAQCBQQVNTICAgVGhlIHJldHVybiB2YWx1ZSBvZiBHYWluTm9kZS5jb25uZWN0KENo
YW5uZWxNZXJnZXJOb2RlLCAwLCAxKSBtYXRjaGVzIHRoZQogUEFTUyAgIFRoZSByZXR1cm4gdmFs
dWUgb2YgT3NjaWxsYXRvck5vZGUuY29ubmVjdChHYWluTm9kZSkgbWF0Y2hlcyB0aGUgZGVzdGlu
YXRpb24gR2Fpbk5vZGUgaXMgZXF1YWwgdG8gdHJ1ZS4gCiBQQVNTICAgVGhlIHJldHVybiB2YWx1
ZSBvZiBPc2NpbGxhdG9yTm9kZS5jb25uZWN0KEJpcXVhZEZpbHRlck5vZGUsIDApIG1hdGNoZXMg
dGhlIGRlc3RpbmF0aW9uIEJpcXVhZEZpbHRlck5vZGUgaXMgZXF1YWwgdG8gdHJ1ZS4gCiBQQVNT
ICAgVGhlIHJldHVybiB2YWx1ZSBvZiBPc2NpbGxhdG9yTm9kZS5jb25uZWN0KENoYW5uZWxNZXJn
ZXJOb2RlLCAwLCAxKSBtYXRjaGVzIHRoZSBkZXN0aW5hdGlvbiBDaGFubmVsTWVyZ2VyTm9kZSBp
cyBlcXVhbCB0byB0cnVlLiAKLVBBU1MgICBUaGUgcmV0dXJuIHZhbHVlIG9mIHdlYmtpdEF1ZGlv
UGFubmVyTm9kZS5jb25uZWN0KEdhaW5Ob2RlKSBtYXRjaGVzIHRoZSBkZXN0aW5hdGlvbiBHYWlu
Tm9kZSBpcyBlcXVhbCB0byB0cnVlLiAKLVBBU1MgICBUaGUgcmV0dXJuIHZhbHVlIG9mIHdlYmtp
dEF1ZGlvUGFubmVyTm9kZS5jb25uZWN0KEJpcXVhZEZpbHRlck5vZGUsIDApIG1hdGNoZXMgdGhl
IGRlc3RpbmF0aW9uIEJpcXVhZEZpbHRlck5vZGUgaXMgZXF1YWwgdG8gdHJ1ZS4gCi1QQVNTICAg
VGhlIHJldHVybiB2YWx1ZSBvZiB3ZWJraXRBdWRpb1Bhbm5lck5vZGUuY29ubmVjdChDaGFubmVs
TWVyZ2VyTm9kZSwgMCwgMSkgbWF0Y2hlcyB0aGUgZGVzdGluYXRpb24gQ2hhbm5lbE1lcmdlck5v
ZGUgaXMgZXF1YWwgdG8gdHJ1ZS4gCitQQVNTICAgVGhlIHJldHVybiB2YWx1ZSBvZiBQYW5uZXJO
b2RlLmNvbm5lY3QoR2Fpbk5vZGUpIG1hdGNoZXMgdGhlIGRlc3RpbmF0aW9uIEdhaW5Ob2RlIGlz
IGVxdWFsIHRvIHRydWUuIAorUEFTUyAgIFRoZSByZXR1cm4gdmFsdWUgb2YgUGFubmVyTm9kZS5j
b25uZWN0KEJpcXVhZEZpbHRlck5vZGUsIDApIG1hdGNoZXMgdGhlIGRlc3RpbmF0aW9uIEJpcXVh
ZEZpbHRlck5vZGUgaXMgZXF1YWwgdG8gdHJ1ZS4gCitQQVNTICAgVGhlIHJldHVybiB2YWx1ZSBv
ZiBQYW5uZXJOb2RlLmNvbm5lY3QoQ2hhbm5lbE1lcmdlck5vZGUsIDAsIDEpIG1hdGNoZXMgdGhl
IGRlc3RpbmF0aW9uIENoYW5uZWxNZXJnZXJOb2RlIGlzIGVxdWFsIHRvIHRydWUuIAogUEFTUyAg
IFRoZSByZXR1cm4gdmFsdWUgb2YgU2NyaXB0UHJvY2Vzc29yTm9kZS5jb25uZWN0KEdhaW5Ob2Rl
KSBtYXRjaGVzIHRoZSBkZXN0aW5hdGlvbiBHYWluTm9kZSBpcyBlcXVhbCB0byB0cnVlLiAKIFBB
U1MgICBUaGUgcmV0dXJuIHZhbHVlIG9mIFNjcmlwdFByb2Nlc3Nvck5vZGUuY29ubmVjdChCaXF1
YWRGaWx0ZXJOb2RlLCAwKSBtYXRjaGVzIHRoZSBkZXN0aW5hdGlvbiBCaXF1YWRGaWx0ZXJOb2Rl
IGlzIGVxdWFsIHRvIHRydWUuIAogUEFTUyAgIFRoZSByZXR1cm4gdmFsdWUgb2YgU2NyaXB0UHJv
Y2Vzc29yTm9kZS5jb25uZWN0KENoYW5uZWxNZXJnZXJOb2RlLCAwLCAxKSBtYXRjaGVzIHRoZSBk
ZXN0aW5hdGlvbiBDaGFubmVsTWVyZ2VyTm9kZSBpcyBlcXVhbCB0byB0cnVlLiAKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2ViYXVkaW8v
dGhlLWF1ZGlvLWFwaS90aGUtb2ZmbGluZWF1ZGlvY29udGV4dC1pbnRlcmZhY2Uvb2ZmbGluZWF1
ZGlvY29udGV4dC1kZXRhY2hlZC1leGVjdXRpb24tY29udGV4dC50ZW50YXRpdmUtZXhwZWN0ZWQu
dHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJhdWRp
by90aGUtYXVkaW8tYXBpL3RoZS1vZmZsaW5lYXVkaW9jb250ZXh0LWludGVyZmFjZS9vZmZsaW5l
YXVkaW9jb250ZXh0LWRldGFjaGVkLWV4ZWN1dGlvbi1jb250ZXh0LnRlbnRhdGl2ZS1leHBlY3Rl
ZC50eHQKaW5kZXggZDNmMGZhMDEyODQ3YWUzMDA3MjQxMWI2ZTlhM2E0YWI4NDU1MmRjMS4uYjJk
YTA3MDQ1MDQwOGU5NmM0YjExMTZkOTQzZDAyMWU2NDdjMDUxNyAxMDA2NDQKLS0tIGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJhdWRpby90aGUtYXVkaW8t
YXBpL3RoZS1vZmZsaW5lYXVkaW9jb250ZXh0LWludGVyZmFjZS9vZmZsaW5lYXVkaW9jb250ZXh0
LWRldGFjaGVkLWV4ZWN1dGlvbi1jb250ZXh0LnRlbnRhdGl2ZS1leHBlY3RlZC50eHQKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJhdWRpby90aGUt
YXVkaW8tYXBpL3RoZS1vZmZsaW5lYXVkaW9jb250ZXh0LWludGVyZmFjZS9vZmZsaW5lYXVkaW9j
b250ZXh0LWRldGFjaGVkLWV4ZWN1dGlvbi1jb250ZXh0LnRlbnRhdGl2ZS1leHBlY3RlZC50eHQK
QEAgLTEsNyArMSw3IEBACiAKIAogUEFTUyAjIEFVRElUIFRBU0sgUlVOTkVSIFNUQVJURUQuIAot
RkFJTCBFeGVjdXRpbmcgImRlY29kaW5nLW9uLWRldGFjaGVkLWlmcmFtZSIgcHJvbWlzZV90ZXN0
OiBVbmhhbmRsZWQgcmVqZWN0aW9uIHdpdGggdmFsdWU6IG9iamVjdCAiVHlwZUVycm9yOiB1bmRl
ZmluZWQgaXMgbm90IGEgY29uc3RydWN0b3IgKGV2YWx1YXRpbmcgJ25ldyBpZnJhbWUuY29udGVu
dFdpbmRvdy5PZmZsaW5lQXVkaW9Db250ZXh0KDEsIDEsIDMwMDApJykiCitGQUlMIEV4ZWN1dGlu
ZyAiZGVjb2Rpbmctb24tZGV0YWNoZWQtaWZyYW1lIiBwcm9taXNlX3Rlc3Q6IFVuaGFuZGxlZCBy
ZWplY3Rpb24gd2l0aCB2YWx1ZTogb2JqZWN0ICJTeW50YXhFcnJvcjogVGhlIHN0cmluZyBkaWQg
bm90IG1hdGNoIHRoZSBleHBlY3RlZCBwYXR0ZXJuLiIKIFBBU1MgQXVkaXQgcmVwb3J0IAogUEFT
UyA+IFtkZWNvZGluZy1vbi1kZXRhY2hlZC1pZnJhbWVdICAKIFBBU1MgIyBBVURJVCBUQVNLIFJV
Tk5FUiBGSU5JU0hFRDogMSB0YXNrcyByYW4gc3VjY2Vzc2Z1bGx5LiAKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL3BsYXRmb3JtL2lvcy9qcy9kb20vY29uc3RydWN0b3ItbGVuZ3RoLWV4cGVjdGVk
LnR4dCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2lvcy9qcy9kb20vY29uc3RydWN0b3ItbGVuZ3Ro
LWV4cGVjdGVkLnR4dAppbmRleCA1NTVkMjNiMzNmOGI2ZTlkYWMwMjRkMDg4YzM1MTZiN2IyYTJj
NzcwLi5kYmNiYzc4OGIyNDNhZmFiMDIwODBlNGRkNTU5ODhiOWJiNjBkMTI0IDEwMDY0NAotLS0g
YS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9pb3MvanMvZG9tL2NvbnN0cnVjdG9yLWxlbmd0aC1leHBl
Y3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vaW9zL2pzL2RvbS9jb25zdHJ1Y3Rv
ci1sZW5ndGgtZXhwZWN0ZWQudHh0CkBAIC00LDcgKzQsNyBAQCBPbiBzdWNjZXNzLCB5b3Ugd2ls
bCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01Q
TEVURQogCiAKIFBBU1MgQXJyYXlCdWZmZXIubGVuZ3RoIGlzIDEKLUZBSUwgQXVkaW9Db250ZXh0
Lmxlbmd0aCBzaG91bGQgYmUgMC4gVGhyZXcgZXhjZXB0aW9uIFJlZmVyZW5jZUVycm9yOiBDYW4n
dCBmaW5kIHZhcmlhYmxlOiBBdWRpb0NvbnRleHQKK1BBU1MgQXVkaW9Db250ZXh0Lmxlbmd0aCBp
cyAwCiBGQUlMIEF1dG9jb21wbGV0ZUVycm9yRXZlbnQubGVuZ3RoIHNob3VsZCBiZSAxLiBUaHJl
dyBleGNlcHRpb24gUmVmZXJlbmNlRXJyb3I6IENhbid0IGZpbmQgdmFyaWFibGU6IEF1dG9jb21w
bGV0ZUVycm9yRXZlbnQKIFBBU1MgQW5pbWF0aW9uRXZlbnQubGVuZ3RoIGlzIDEKIFBBU1MgQmxv
Yi5sZW5ndGggaXMgMApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2pzL2Rv
bS9jb25zdHJ1Y3Rvci1sZW5ndGgtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0v
bWFjL2pzL2RvbS9jb25zdHJ1Y3Rvci1sZW5ndGgtZXhwZWN0ZWQudHh0CmluZGV4IDU1NWQyM2Iz
M2Y4YjZlOWRhYzAyNGQwODhjMzUxNmI3YjJhMmM3NzAuLmRiY2JjNzg4YjI0M2FmYWIwMjA4MGU0
ZGQ1NTk4OGI5YmI2MGQxMjQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9q
cy9kb20vY29uc3RydWN0b3ItbGVuZ3RoLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9w
bGF0Zm9ybS9tYWMvanMvZG9tL2NvbnN0cnVjdG9yLWxlbmd0aC1leHBlY3RlZC50eHQKQEAgLTQs
NyArNCw3IEBAIE9uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVz
c2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFCiAKIAogUEFTUyBBcnJheUJ1ZmZlci5s
ZW5ndGggaXMgMQotRkFJTCBBdWRpb0NvbnRleHQubGVuZ3RoIHNob3VsZCBiZSAwLiBUaHJldyBl
eGNlcHRpb24gUmVmZXJlbmNlRXJyb3I6IENhbid0IGZpbmQgdmFyaWFibGU6IEF1ZGlvQ29udGV4
dAorUEFTUyBBdWRpb0NvbnRleHQubGVuZ3RoIGlzIDAKIEZBSUwgQXV0b2NvbXBsZXRlRXJyb3JF
dmVudC5sZW5ndGggc2hvdWxkIGJlIDEuIFRocmV3IGV4Y2VwdGlvbiBSZWZlcmVuY2VFcnJvcjog
Q2FuJ3QgZmluZCB2YXJpYWJsZTogQXV0b2NvbXBsZXRlRXJyb3JFdmVudAogUEFTUyBBbmltYXRp
b25FdmVudC5sZW5ndGggaXMgMQogUEFTUyBCbG9iLmxlbmd0aCBpcyAwCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9wbGF0Zm9ybS93aW4vanMvZG9tL2NvbnN0cnVjdG9yLWxlbmd0aC1leHBlY3Rl
ZC50eHQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93aW4vanMvZG9tL2NvbnN0cnVjdG9yLWxlbmd0
aC1leHBlY3RlZC50eHQKaW5kZXggOWRkZGFlNDk3ZmE0OWJlYWEwZmU3YzU2N2I1NjA4ZDc0NzFj
MDFlNi4uY2I2ZDk5ZjU1NGQ5MGEyOTFjMDEwZmJiNWJhYWQ0MmY4NDZiZjU5ZCAxMDA2NDQKLS0t
IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2luL2pzL2RvbS9jb25zdHJ1Y3Rvci1sZW5ndGgtZXhw
ZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL3dpbi9qcy9kb20vY29uc3RydWN0
b3ItbGVuZ3RoLWV4cGVjdGVkLnR4dApAQCAtNCw3ICs0LDcgQEAgT24gc3VjY2VzcywgeW91IHdp
bGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09N
UExFVEUKIAogCiBQQVNTIEFycmF5QnVmZmVyLmxlbmd0aCBpcyAxCi1GQUlMIEF1ZGlvQ29udGV4
dC5sZW5ndGggc2hvdWxkIGJlIDAuIFRocmV3IGV4Y2VwdGlvbiBSZWZlcmVuY2VFcnJvcjogQ2Fu
J3QgZmluZCB2YXJpYWJsZTogQXVkaW9Db250ZXh0CitQQVNTIEF1ZGlvQ29udGV4dC5sZW5ndGgg
aXMgMAogRkFJTCBBdXRvY29tcGxldGVFcnJvckV2ZW50Lmxlbmd0aCBzaG91bGQgYmUgMS4gVGhy
ZXcgZXhjZXB0aW9uIFJlZmVyZW5jZUVycm9yOiBDYW4ndCBmaW5kIHZhcmlhYmxlOiBBdXRvY29t
cGxldGVFcnJvckV2ZW50CiBQQVNTIEFuaW1hdGlvbkV2ZW50Lmxlbmd0aCBpcyAxCiBQQVNTIEJs
b2IubGVuZ3RoIGlzIDAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>402148</attachid>
            <date>2020-06-17 13:09:27 -0700</date>
            <delta_ts>2020-06-17 13:25:23 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-213268-20200617130926.patch</filename>
            <type>text/plain</type>
            <size>273521</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYzMTYzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzYwNDdkMTUxZDZmMDhm
ZTlmY2ZjYzZiNTNmNDY1YTgzNGMyOGIyZS4uZjY5MGYzYjNkMTMzNDVlMzFmNmFmYTNmOTgzZGFl
NjkyN2NhMzk1NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI5NiBAQAorMjAyMC0wNi0xNyAgQ2hy
aXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBleHBlcmltZW50YWwg
ZmVhdHVyZSBmbGFnIGZvciBtb2Rlcm4gJiB1bnByZWZpeGVkIFdlYkF1ZGlvIEFQSQorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjEzMjY4CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgSmVyIE5vYmxlLgorCisgICAgICAgIEFkZCBleHBlcmltZW50YWwgZmVh
dHVyZSBmbGFnIGZvciBtb2Rlcm4gJiB1bnByZWZpeGVkIFdlYkF1ZGlvIEFQSSwKKyAgICAgICAg
b2ZmIGJ5IGRlZmF1bHQuCisKKyAgICAgICAgVGhpcyBwYXRjaCBzcGxpdCB0aGUgQXVkaW9Db250
ZXh0LCBPZmZsaW5lQXVkaW9Db250ZXh0IGFuZCBQYW5uZXJOb2RlCisgICAgICAgIElETCBpbnRl
cmZhY2VzIGludG8gdGhlaXIgcHJlZml4ZWQgYW5kIHVucHJlZml4ZWQgdmVyc2lvbnMuIFRoZQor
ICAgICAgICB1bnByZWZpeGVkIHZlcnNpb25zIGFyZSBiZWhpbmQgdGhlIG5ldyBleHBlcmltZW50
YWwgZmVhdHVyZSBmbGFnIHRoYXQKKyAgICAgICAgaXMgY3VycmVudGx5IG9mZiBieSBkZWZhdWx0
IGJ1dCBhdXRvbWF0aWNhbGx5IGdldHMgdHVybmVkIG9uIGluIHRoZQorICAgICAgICBjb250ZXh0
IG9mIGxheW91dCB0ZXN0cy4KKworICAgICAgICBUaGlzIHdpbGwgZ2l2ZSB1cyBtb3JlIGZsZXhp
YmlsaXR5IHdoZW4gd29ya2luZyBvbiB0aGUgbW9kZXJuIGFuZAorICAgICAgICB1bnByZWZpeGVk
IFdlYkF1ZGlvIEFQSSBhcyB3ZSB3aWxsIG5vdCBoYXZlIHRvIHdvcnJ5IGFib3V0IGJhY2t3YXJk
CisgICAgICAgIGNvbXBhdGliaWxpdHkuIFRoaXMgYWxzbyBhbGxvd3MgdXMgdG8gZWFzaWx5IHR1
cm4gaXQgb24gb3Igb2ZmIHZpYQorICAgICAgICB0aGUgZXhwZXJpbWVudGFsIGZlYXR1cmVzIG1l
bnUgaW4gU2FmYXJpLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cywgcmViYXNlbGluZWQgZXhpc3Rp
bmcgdGVzdHMuCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBEZXJpdmVk
U291cmNlcy1pbnB1dC54Y2ZpbGVsaXN0OgorICAgICAgICAqIERlcml2ZWRTb3VyY2VzLW91dHB1
dC54Y2ZpbGVsaXN0OgorICAgICAgICAqIERlcml2ZWRTb3VyY2VzLm1ha2U6CisgICAgICAgICog
TW9kdWxlcy93ZWJhdWRpby9BbmFseXNlck5vZGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QW5h
bHlzZXJOb2RlOjpBbmFseXNlck5vZGUpOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vQW5h
bHlzZXJOb2RlLmg6CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9BdWRpb0Jhc2ljSW5zcGVj
dG9yTm9kZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb0Jhc2ljSW5zcGVjdG9yTm9kZTo6
QXVkaW9CYXNpY0luc3BlY3Rvck5vZGUpOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vQXVk
aW9CYXNpY0luc3BlY3Rvck5vZGUuaDoKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL0F1ZGlv
QmFzaWNQcm9jZXNzb3JOb2RlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvQmFzaWNQcm9j
ZXNzb3JOb2RlOjpBdWRpb0Jhc2ljUHJvY2Vzc29yTm9kZSk6CisgICAgICAgICogTW9kdWxlcy93
ZWJhdWRpby9BdWRpb0Jhc2ljUHJvY2Vzc29yTm9kZS5oOgorICAgICAgICAqIE1vZHVsZXMvd2Vi
YXVkaW8vQXVkaW9CdWZmZXJTb3VyY2VOb2RlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlv
QnVmZmVyU291cmNlTm9kZTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvQnVmZmVy
U291cmNlTm9kZTo6QXVkaW9CdWZmZXJTb3VyY2VOb2RlKToKKyAgICAgICAgKFdlYkNvcmU6OkF1
ZGlvQnVmZmVyU291cmNlTm9kZTo6c2V0QnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlv
QnVmZmVyU291cmNlTm9kZTo6c2V0UGFubmVyTm9kZSk6CisgICAgICAgICogTW9kdWxlcy93ZWJh
dWRpby9BdWRpb0J1ZmZlclNvdXJjZU5vZGUuaDoKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlv
L0F1ZGlvQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb0NvbnRleHRCYXNlOjpB
dWRpb0NvbnRleHRCYXNlKToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvQ29udGV4dDo6QXVkaW9D
b250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvQ29udGV4dEJhc2U6OmRvY3VtZW50IGNv
bnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvQ29udGV4dEJhc2U6OnNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQgY29uc3QpOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0
Lmg6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb0NvbnRleHRCYXNlOjpBdXRvTG9ja2VyOjpBdXRv
TG9ja2VyKToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvQ29udGV4dEJhc2U6OkF1dG9Mb2NrZXI6
On5BdXRvTG9ja2VyKToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvQ29udGV4dDo6bWF4TnVtYmVy
T2ZDaGFubmVscyk6CisgICAgICAgIChpc1R5cGUpOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVk
aW8vQXVkaW9Db250ZXh0LmlkbDoKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQ29u
dGV4dFN0YXRlLmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8v
T2ZmbGluZUF1ZGlvQ29udGV4dC5pZGwuCisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9BdWRp
b0NvbnRleHRTdGF0ZS5pZGw6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
YXVkaW8vT2ZmbGluZUF1ZGlvQ29udGV4dC5pZGwuCisgICAgICAgICogTW9kdWxlcy93ZWJhdWRp
by9BdWRpb0Rlc3RpbmF0aW9uTm9kZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb0Rlc3Rp
bmF0aW9uTm9kZTo6QXVkaW9EZXN0aW5hdGlvbk5vZGUpOgorICAgICAgICAqIE1vZHVsZXMvd2Vi
YXVkaW8vQXVkaW9EZXN0aW5hdGlvbk5vZGUuaDoKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlv
L0F1ZGlvTm9kZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb05vZGU6OkF1ZGlvTm9kZSk6
CisgICAgICAgIChXZWJDb3JlOjpBdWRpb05vZGU6OmNvbm5lY3QpOgorICAgICAgICAoV2ViQ29y
ZTo6QXVkaW9Ob2RlOjpkaXNjb25uZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvTm9kZTo6
c2V0Q2hhbm5lbENvdW50KToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvTm9kZTo6c2V0Q2hhbm5l
bENvdW50TW9kZSk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb05vZGU6OnNldENoYW5uZWxJbnRl
cnByZXRhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb05vZGU6OmVuYWJsZU91dHB1dHNJ
Zk5lY2Vzc2FyeSk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb05vZGU6OmRlcmVmKToKKyAgICAg
ICAgKFdlYkNvcmU6OkF1ZGlvTm9kZTo6Y29udGV4dEZvckJpbmRpbmdzIGNvbnN0KToKKyAgICAg
ICAgKiBNb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvTm9kZS5oOgorICAgICAgICAoV2ViQ29yZTo6QXVk
aW9Ob2RlOjpjb250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvTm9kZTo6Y29udGV4dCBj
b25zdCk6CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9BdWRpb05vZGUuaWRsOgorICAgICAg
ICAqIE1vZHVsZXMvd2ViYXVkaW8vQXVkaW9Ob2RlT3V0cHV0Lmg6CisgICAgICAgIChXZWJDb3Jl
OjpBdWRpb05vZGVPdXRwdXQ6OmNvbnRleHQpOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8v
QXVkaW9QYXJhbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb1BhcmFtOjpBdWRpb1BhcmFt
KToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvUGFyYW0uaDoKKyAgICAgICAgKiBN
b2R1bGVzL3dlYmF1ZGlvL0F1ZGlvUGFyYW1UaW1lbGluZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpBdWRpb1BhcmFtVGltZWxpbmU6OnZhbHVlRm9yQ29udGV4dFRpbWUpOgorICAgICAgICAqIE1v
ZHVsZXMvd2ViYXVkaW8vQXVkaW9QYXJhbVRpbWVsaW5lLmg6CisgICAgICAgICogTW9kdWxlcy93
ZWJhdWRpby9BdWRpb1NjaGVkdWxlZFNvdXJjZU5vZGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
QXVkaW9TY2hlZHVsZWRTb3VyY2VOb2RlOjpBdWRpb1NjaGVkdWxlZFNvdXJjZU5vZGUpOgorICAg
ICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vQXVkaW9TY2hlZHVsZWRTb3VyY2VOb2RlLmg6CisgICAg
ICAgICogTW9kdWxlcy93ZWJhdWRpby9BdWRpb1N1bW1pbmdKdW5jdGlvbi5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpBdWRpb1N1bW1pbmdKdW5jdGlvbjo6QXVkaW9TdW1taW5nSnVuY3Rpb24pOgor
ICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vQXVkaW9TdW1taW5nSnVuY3Rpb24uaDoKKyAgICAg
ICAgKFdlYkNvcmU6OkF1ZGlvU3VtbWluZ0p1bmN0aW9uOjpjb250ZXh0KToKKyAgICAgICAgKiBN
b2R1bGVzL3dlYmF1ZGlvL0JpcXVhZEZpbHRlck5vZGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
QmlxdWFkRmlsdGVyTm9kZTo6QmlxdWFkRmlsdGVyTm9kZSk6CisgICAgICAgICogTW9kdWxlcy93
ZWJhdWRpby9CaXF1YWRGaWx0ZXJOb2RlLmg6CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9C
aXF1YWRQcm9jZXNzb3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QmlxdWFkUHJvY2Vzc29yOjpC
aXF1YWRQcm9jZXNzb3IpOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vQmlxdWFkUHJvY2Vz
c29yLmg6CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9DaGFubmVsTWVyZ2VyTm9kZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpDaGFubmVsTWVyZ2VyTm9kZTo6Y3JlYXRlKToKKyAgICAgICAg
KFdlYkNvcmU6OkNoYW5uZWxNZXJnZXJOb2RlOjpDaGFubmVsTWVyZ2VyTm9kZSk6CisgICAgICAg
ICogTW9kdWxlcy93ZWJhdWRpby9DaGFubmVsTWVyZ2VyTm9kZS5oOgorICAgICAgICAqIE1vZHVs
ZXMvd2ViYXVkaW8vQ2hhbm5lbFNwbGl0dGVyTm9kZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpD
aGFubmVsU3BsaXR0ZXJOb2RlOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6Q2hhbm5lbFNw
bGl0dGVyTm9kZTo6Q2hhbm5lbFNwbGl0dGVyTm9kZSk6CisgICAgICAgICogTW9kdWxlcy93ZWJh
dWRpby9DaGFubmVsU3BsaXR0ZXJOb2RlLmg6CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9D
b252b2x2ZXJOb2RlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbnZvbHZlck5vZGU6OkNvbnZv
bHZlck5vZGUpOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vQ29udm9sdmVyTm9kZS5oOgor
ICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vRGVmYXVsdEF1ZGlvRGVzdGluYXRpb25Ob2RlLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkRlZmF1bHRBdWRpb0Rlc3RpbmF0aW9uTm9kZTo6RGVmYXVs
dEF1ZGlvRGVzdGluYXRpb25Ob2RlKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL0RlZmF1
bHRBdWRpb0Rlc3RpbmF0aW9uTm9kZS5oOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vRGVs
YXlOb2RlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRlbGF5Tm9kZTo6RGVsYXlOb2RlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkRlbGF5Tm9kZTo6Y3JlYXRlKToKKyAgICAgICAgKiBNb2R1bGVzL3dl
YmF1ZGlvL0RlbGF5Tm9kZS5oOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vRGVsYXlQcm9j
ZXNzb3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGVsYXlQcm9jZXNzb3I6OkRlbGF5UHJvY2Vz
c29yKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL0RlbGF5UHJvY2Vzc29yLmg6CisgICAg
ICAgICogTW9kdWxlcy93ZWJhdWRpby9EaXN0YW5jZU1vZGVsVHlwZS5oOiBDb3BpZWQgZnJvbSBT
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL09mZmxpbmVBdWRpb0NvbnRleHQuaWRsLgor
ICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vRGlzdGFuY2VNb2RlbFR5cGUuaWRsOiBDb3BpZWQg
ZnJvbSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL09mZmxpbmVBdWRpb0NvbnRleHQu
aWRsLgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vRHluYW1pY3NDb21wcmVzc29yTm9kZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpEeW5hbWljc0NvbXByZXNzb3JOb2RlOjpEeW5hbWljc0Nv
bXByZXNzb3JOb2RlKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL0R5bmFtaWNzQ29tcHJl
c3Nvck5vZGUuaDoKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL0dhaW5Ob2RlLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkdhaW5Ob2RlOjpHYWluTm9kZSk6CisgICAgICAgICogTW9kdWxlcy93
ZWJhdWRpby9HYWluTm9kZS5oOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vTWVkaWFFbGVt
ZW50QXVkaW9Tb3VyY2VOb2RlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhRWxlbWVudEF1
ZGlvU291cmNlTm9kZTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhRWxlbWVudEF1
ZGlvU291cmNlTm9kZTo6TWVkaWFFbGVtZW50QXVkaW9Tb3VyY2VOb2RlKToKKyAgICAgICAgKFdl
YkNvcmU6Ok1lZGlhRWxlbWVudEF1ZGlvU291cmNlTm9kZTo6c2V0Rm9ybWF0KToKKyAgICAgICAg
KiBNb2R1bGVzL3dlYmF1ZGlvL01lZGlhRWxlbWVudEF1ZGlvU291cmNlTm9kZS5oOgorICAgICAg
ICAqIE1vZHVsZXMvd2ViYXVkaW8vTWVkaWFTdHJlYW1BdWRpb0Rlc3RpbmF0aW9uTm9kZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbUF1ZGlvRGVzdGluYXRpb25Ob2RlOjpjcmVh
dGUpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTdHJlYW1BdWRpb0Rlc3RpbmF0aW9uTm9kZTo6
TWVkaWFTdHJlYW1BdWRpb0Rlc3RpbmF0aW9uTm9kZSk6CisgICAgICAgICogTW9kdWxlcy93ZWJh
dWRpby9NZWRpYVN0cmVhbUF1ZGlvRGVzdGluYXRpb25Ob2RlLmg6CisgICAgICAgICogTW9kdWxl
cy93ZWJhdWRpby9NZWRpYVN0cmVhbUF1ZGlvU291cmNlTm9kZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpNZWRpYVN0cmVhbUF1ZGlvU291cmNlTm9kZTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNv
cmU6Ok1lZGlhU3RyZWFtQXVkaW9Tb3VyY2VOb2RlOjpNZWRpYVN0cmVhbUF1ZGlvU291cmNlTm9k
ZSk6CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9NZWRpYVN0cmVhbUF1ZGlvU291cmNlTm9k
ZS5oOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vT2ZmbGluZUF1ZGlvQ29udGV4dC5pZGw6
CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9PZmZsaW5lQXVkaW9EZXN0aW5hdGlvbk5vZGUu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6T2ZmbGluZUF1ZGlvRGVzdGluYXRpb25Ob2RlOjpPZmZs
aW5lQXVkaW9EZXN0aW5hdGlvbk5vZGUpOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vT2Zm
bGluZUF1ZGlvRGVzdGluYXRpb25Ob2RlLmg6CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9P
c2NpbGxhdG9yTm9kZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpPc2NpbGxhdG9yTm9kZTo6Y3Jl
YXRlKToKKyAgICAgICAgKFdlYkNvcmU6Ok9zY2lsbGF0b3JOb2RlOjpPc2NpbGxhdG9yTm9kZSk6
CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9Pc2NpbGxhdG9yTm9kZS5oOgorICAgICAgICAq
IE1vZHVsZXMvd2ViYXVkaW8vUGFubmVyTm9kZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQYW5u
ZXJOb2RlQmFzZTo6UGFubmVyTm9kZUJhc2UpOgorICAgICAgICAoV2ViQ29yZTo6UGFubmVyTm9k
ZTo6UGFubmVyTm9kZSk6CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9QYW5uZXJOb2RlLmg6
CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9QYW5uZXJOb2RlLmlkbDoKKyAgICAgICAgKiBN
b2R1bGVzL3dlYmF1ZGlvL1Bhbm5pbmdNb2RlbFR5cGUuaDogQ29waWVkIGZyb20gU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJhdWRpby9PZmZsaW5lQXVkaW9Db250ZXh0LmlkbC4KKyAgICAgICAg
KiBNb2R1bGVzL3dlYmF1ZGlvL1Bhbm5pbmdNb2RlbFR5cGUuaWRsOiBDb3BpZWQgZnJvbSBTb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL09mZmxpbmVBdWRpb0NvbnRleHQuaWRsLgorICAg
ICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vU2NyaXB0UHJvY2Vzc29yTm9kZS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpTY3JpcHRQcm9jZXNzb3JOb2RlOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29y
ZTo6U2NyaXB0UHJvY2Vzc29yTm9kZTo6U2NyaXB0UHJvY2Vzc29yTm9kZSk6CisgICAgICAgICog
TW9kdWxlcy93ZWJhdWRpby9TY3JpcHRQcm9jZXNzb3JOb2RlLmg6CisgICAgICAgICogTW9kdWxl
cy93ZWJhdWRpby9XYXZlU2hhcGVyTm9kZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXYXZlU2hh
cGVyTm9kZTo6V2F2ZVNoYXBlck5vZGUpOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vV2F2
ZVNoYXBlck5vZGUuaDoKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL1dlYktpdEF1ZGlvQ29u
dGV4dC5jcHA6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVk
aW9Db250ZXh0LmNwcC4KKyAgICAgICAgKFdlYkNvcmU6OldlYktpdEF1ZGlvQ29udGV4dDo6aXNT
YW1wbGVSYXRlUmFuZ2VHb29kKToKKyAgICAgICAgKFdlYkNvcmU6OldlYktpdEF1ZGlvQ29udGV4
dDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OldlYktpdEF1ZGlvQ29udGV4dDo6V2ViS2l0
QXVkaW9Db250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OldlYktpdEF1ZGlvQ29udGV4dDo6Y29u
c3RydWN0Q29tbW9uKToKKyAgICAgICAgKFdlYkNvcmU6OldlYktpdEF1ZGlvQ29udGV4dDo6fldl
YktpdEF1ZGlvQ29udGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJLaXRBdWRpb0NvbnRleHQ6
OmxhenlJbml0aWFsaXplKToKKyAgICAgICAgKFdlYkNvcmU6OldlYktpdEF1ZGlvQ29udGV4dDo6
Y2xlYXIpOgorICAgICAgICAoV2ViQ29yZTo6V2ViS2l0QXVkaW9Db250ZXh0Ojp1bmluaXRpYWxp
emUpOgorICAgICAgICAoV2ViQ29yZTo6V2ViS2l0QXVkaW9Db250ZXh0Ojppc0luaXRpYWxpemVk
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OldlYktpdEF1ZGlvQ29udGV4dDo6YWRkUmVhY3Rp
b24pOgorICAgICAgICAoV2ViQ29yZTo6V2ViS2l0QXVkaW9Db250ZXh0OjpzZXRTdGF0ZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpXZWJLaXRBdWRpb0NvbnRleHQ6OnN0b3ApOgorICAgICAgICAoV2Vi
Q29yZTo6V2ViS2l0QXVkaW9Db250ZXh0OjpzdXNwZW5kKToKKyAgICAgICAgKFdlYkNvcmU6Oldl
YktpdEF1ZGlvQ29udGV4dDo6cmVzdW1lKToKKyAgICAgICAgKFdlYkNvcmU6OldlYktpdEF1ZGlv
Q29udGV4dDo6YWN0aXZlRE9NT2JqZWN0TmFtZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpX
ZWJLaXRBdWRpb0NvbnRleHQ6Omhvc3RpbmdEb2N1bWVudElkZW50aWZpZXIgY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6V2ViS2l0QXVkaW9Db250ZXh0Ojppc1N1c3BlbmRlZCBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpXZWJLaXRBdWRpb0NvbnRleHQ6OnZpc2liaWxpdHlTdGF0ZUNoYW5n
ZWQpOgorICAgICAgICAoV2ViQ29yZTo6V2ViS2l0QXVkaW9Db250ZXh0Ojp3b3VsZFRhaW50T3Jp
Z2luIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OldlYktpdEF1ZGlvQ29udGV4dDo6Y3JlYXRl
QnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OldlYktpdEF1ZGlvQ29udGV4dDo6ZGVjb2RlQXVk
aW9EYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OldlYktpdEF1ZGlvQ29udGV4dDo6Y3JlYXRlQnVm
ZmVyU291cmNlKToKKyAgICAgICAgKFdlYkNvcmU6OldlYktpdEF1ZGlvQ29udGV4dDo6Y3JlYXRl
TWVkaWFFbGVtZW50U291cmNlKToKKyAgICAgICAgKFdlYkNvcmU6OldlYktpdEF1ZGlvQ29udGV4
dDo6Y3JlYXRlTWVkaWFTdHJlYW1Tb3VyY2UpOgorICAgICAgICAoV2ViQ29yZTo6V2ViS2l0QXVk
aW9Db250ZXh0OjpjcmVhdGVNZWRpYVN0cmVhbURlc3RpbmF0aW9uKToKKyAgICAgICAgKFdlYkNv
cmU6OldlYktpdEF1ZGlvQ29udGV4dDo6Y3JlYXRlU2NyaXB0UHJvY2Vzc29yKToKKyAgICAgICAg
KFdlYkNvcmU6OldlYktpdEF1ZGlvQ29udGV4dDo6Y3JlYXRlQmlxdWFkRmlsdGVyKToKKyAgICAg
ICAgKFdlYkNvcmU6OldlYktpdEF1ZGlvQ29udGV4dDo6Y3JlYXRlV2F2ZVNoYXBlcik6CisgICAg
ICAgIChXZWJDb3JlOjpXZWJLaXRBdWRpb0NvbnRleHQ6OmNyZWF0ZVBhbm5lcik6CisgICAgICAg
IChXZWJDb3JlOjpXZWJLaXRBdWRpb0NvbnRleHQ6OmNyZWF0ZUNvbnZvbHZlcik6CisgICAgICAg
IChXZWJDb3JlOjpXZWJLaXRBdWRpb0NvbnRleHQ6OmNyZWF0ZUR5bmFtaWNzQ29tcHJlc3Nvcik6
CisgICAgICAgIChXZWJDb3JlOjpXZWJLaXRBdWRpb0NvbnRleHQ6OmNyZWF0ZUFuYWx5c2VyKToK
KyAgICAgICAgKFdlYkNvcmU6OldlYktpdEF1ZGlvQ29udGV4dDo6Y3JlYXRlR2Fpbik6CisgICAg
ICAgIChXZWJDb3JlOjpXZWJLaXRBdWRpb0NvbnRleHQ6OmNyZWF0ZURlbGF5KToKKyAgICAgICAg
KFdlYkNvcmU6OldlYktpdEF1ZGlvQ29udGV4dDo6Y3JlYXRlQ2hhbm5lbFNwbGl0dGVyKToKKyAg
ICAgICAgKFdlYkNvcmU6OldlYktpdEF1ZGlvQ29udGV4dDo6Y3JlYXRlQ2hhbm5lbE1lcmdlcik6
CisgICAgICAgIChXZWJDb3JlOjpXZWJLaXRBdWRpb0NvbnRleHQ6OmNyZWF0ZU9zY2lsbGF0b3Ip
OgorICAgICAgICAoV2ViQ29yZTo6V2ViS2l0QXVkaW9Db250ZXh0OjpjcmVhdGVQZXJpb2RpY1dh
dmUpOgorICAgICAgICAoV2ViQ29yZTo6V2ViS2l0QXVkaW9Db250ZXh0Ojpub3RpZnlOb2RlRmlu
aXNoZWRQcm9jZXNzaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OldlYktpdEF1ZGlvQ29udGV4dDo6
ZGVyZWZGaW5pc2hlZFNvdXJjZU5vZGVzKToKKyAgICAgICAgKFdlYkNvcmU6OldlYktpdEF1ZGlv
Q29udGV4dDo6cmVmTm9kZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJLaXRBdWRpb0NvbnRleHQ6
OmRlcmVmTm9kZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJLaXRBdWRpb0NvbnRleHQ6OmRlcmVm
VW5maW5pc2hlZFNvdXJjZU5vZGVzKToKKyAgICAgICAgKFdlYkNvcmU6OldlYktpdEF1ZGlvQ29u
dGV4dDo6bG9jayk6CisgICAgICAgIChXZWJDb3JlOjpXZWJLaXRBdWRpb0NvbnRleHQ6OnRyeUxv
Y2spOgorICAgICAgICAoV2ViQ29yZTo6V2ViS2l0QXVkaW9Db250ZXh0Ojp1bmxvY2spOgorICAg
ICAgICAoV2ViQ29yZTo6V2ViS2l0QXVkaW9Db250ZXh0Ojppc0F1ZGlvVGhyZWFkIGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6OldlYktpdEF1ZGlvQ29udGV4dDo6aXNHcmFwaE93bmVyIGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6OldlYktpdEF1ZGlvQ29udGV4dDo6YWRkRGVmZXJyZWRGaW5p
c2hEZXJlZik6CisgICAgICAgIChXZWJDb3JlOjpXZWJLaXRBdWRpb0NvbnRleHQ6OmhhbmRsZVBy
ZVJlbmRlclRhc2tzKToKKyAgICAgICAgKFdlYkNvcmU6OldlYktpdEF1ZGlvQ29udGV4dDo6aGFu
ZGxlUG9zdFJlbmRlclRhc2tzKToKKyAgICAgICAgKFdlYkNvcmU6OldlYktpdEF1ZGlvQ29udGV4
dDo6aGFuZGxlRGVmZXJyZWRGaW5pc2hEZXJlZnMpOgorICAgICAgICAoV2ViQ29yZTo6V2ViS2l0
QXVkaW9Db250ZXh0OjptYXJrRm9yRGVsZXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6V2ViS2l0
QXVkaW9Db250ZXh0OjpzY2hlZHVsZU5vZGVEZWxldGlvbik6CisgICAgICAgIChXZWJDb3JlOjpX
ZWJLaXRBdWRpb0NvbnRleHQ6OmRlbGV0ZU1hcmtlZE5vZGVzKToKKyAgICAgICAgKFdlYkNvcmU6
OldlYktpdEF1ZGlvQ29udGV4dDo6bWFya1N1bW1pbmdKdW5jdGlvbkRpcnR5KToKKyAgICAgICAg
KFdlYkNvcmU6OldlYktpdEF1ZGlvQ29udGV4dDo6cmVtb3ZlTWFya2VkU3VtbWluZ0p1bmN0aW9u
KToKKyAgICAgICAgKFdlYkNvcmU6OldlYktpdEF1ZGlvQ29udGV4dDo6bWFya0F1ZGlvTm9kZU91
dHB1dERpcnR5KToKKyAgICAgICAgKFdlYkNvcmU6OldlYktpdEF1ZGlvQ29udGV4dDo6aGFuZGxl
RGlydHlBdWRpb1N1bW1pbmdKdW5jdGlvbnMpOgorICAgICAgICAoV2ViQ29yZTo6V2ViS2l0QXVk
aW9Db250ZXh0OjpoYW5kbGVEaXJ0eUF1ZGlvTm9kZU91dHB1dHMpOgorICAgICAgICAoV2ViQ29y
ZTo6V2ViS2l0QXVkaW9Db250ZXh0OjphZGRBdXRvbWF0aWNQdWxsTm9kZSk6CisgICAgICAgIChX
ZWJDb3JlOjpXZWJLaXRBdWRpb0NvbnRleHQ6OnJlbW92ZUF1dG9tYXRpY1B1bGxOb2RlKToKKyAg
ICAgICAgKFdlYkNvcmU6OldlYktpdEF1ZGlvQ29udGV4dDo6dXBkYXRlQXV0b21hdGljUHVsbE5v
ZGVzKToKKyAgICAgICAgKFdlYkNvcmU6OldlYktpdEF1ZGlvQ29udGV4dDo6cHJvY2Vzc0F1dG9t
YXRpY1B1bGxOb2Rlcyk6CisgICAgICAgIChXZWJDb3JlOjpXZWJLaXRBdWRpb0NvbnRleHQ6Om5v
ZGVXaWxsQmVnaW5QbGF5YmFjayk6CisgICAgICAgIChXZWJDb3JlOjpzaG91bGREb2N1bWVudEFs
bG93V2ViQXVkaW9Ub0F1dG9QbGF5KToKKyAgICAgICAgKFdlYkNvcmU6OldlYktpdEF1ZGlvQ29u
dGV4dDo6d2lsbEJlZ2luUGxheWJhY2spOgorICAgICAgICAoV2ViQ29yZTo6V2ViS2l0QXVkaW9D
b250ZXh0Ojp3aWxsUGF1c2VQbGF5YmFjayk6CisgICAgICAgIChXZWJDb3JlOjpXZWJLaXRBdWRp
b0NvbnRleHQ6OnN0YXJ0UmVuZGVyaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OldlYktpdEF1ZGlv
Q29udGV4dDo6bWVkaWFDYW5TdGFydCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJLaXRBdWRpb0Nv
bnRleHQ6Om1lZGlhU3RhdGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6V2ViS2l0QXVkaW9D
b250ZXh0OjpwYWdlTXV0ZWRTdGF0ZURpZENoYW5nZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJL
aXRBdWRpb0NvbnRleHQ6OmlzUGxheWluZ0F1ZGlvRGlkQ2hhbmdlKToKKyAgICAgICAgKFdlYkNv
cmU6OldlYktpdEF1ZGlvQ29udGV4dDo6ZmluaXNoZWRSZW5kZXJpbmcpOgorICAgICAgICAoV2Vi
Q29yZTo6V2ViS2l0QXVkaW9Db250ZXh0OjpkaXNwYXRjaEV2ZW50KToKKyAgICAgICAgKFdlYkNv
cmU6OldlYktpdEF1ZGlvQ29udGV4dDo6aW5jcmVtZW50QWN0aXZlU291cmNlQ291bnQpOgorICAg
ICAgICAoV2ViQ29yZTo6V2ViS2l0QXVkaW9Db250ZXh0OjpkZWNyZW1lbnRBY3RpdmVTb3VyY2VD
b3VudCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJLaXRBdWRpb0NvbnRleHQ6OnN1c3BlbmRSZW5k
ZXJpbmcpOgorICAgICAgICAoV2ViQ29yZTo6V2ViS2l0QXVkaW9Db250ZXh0OjpyZXN1bWVSZW5k
ZXJpbmcpOgorICAgICAgICAoV2ViQ29yZTo6V2ViS2l0QXVkaW9Db250ZXh0OjpjbG9zZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpXZWJLaXRBdWRpb0NvbnRleHQ6OnN1c3BlbmRQbGF5YmFjayk6Cisg
ICAgICAgIChXZWJDb3JlOjpXZWJLaXRBdWRpb0NvbnRleHQ6Om1heVJlc3VtZVBsYXliYWNrKToK
KyAgICAgICAgKFdlYkNvcmU6OldlYktpdEF1ZGlvQ29udGV4dDo6cG9zdFRhc2spOgorICAgICAg
ICAoV2ViQ29yZTo6V2ViS2l0QXVkaW9Db250ZXh0OjpvcmlnaW4gY29uc3QpOgorICAgICAgICAo
V2ViQ29yZTo6V2ViS2l0QXVkaW9Db250ZXh0OjphZGRDb25zb2xlTWVzc2FnZSk6CisgICAgICAg
IChXZWJDb3JlOjpXZWJLaXRBdWRpb0NvbnRleHQ6OmNsZWFyUGVuZGluZ0FjdGl2aXR5KToKKyAg
ICAgICAgKFdlYkNvcmU6OldlYktpdEF1ZGlvQ29udGV4dDo6bWFrZVBlbmRpbmdBY3Rpdml0eSk6
CisgICAgICAgIChXZWJDb3JlOjpXZWJLaXRBdWRpb0NvbnRleHQ6OmxvZ0NoYW5uZWwgY29uc3Qp
OgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vV2ViS2l0QXVkaW9Db250ZXh0Lmg6IENvcGll
ZCBmcm9tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0LmguCisg
ICAgICAgIChXZWJDb3JlOjpXZWJLaXRBdWRpb0NvbnRleHQ6OmRlc3RpbmF0aW9uKToKKyAgICAg
ICAgKFdlYkNvcmU6OldlYktpdEF1ZGlvQ29udGV4dDo6YWN0aXZlU291cmNlQ291bnQgY29uc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6V2ViS2l0QXVkaW9Db250ZXh0OjpsaXN0ZW5lcik6CisgICAg
ICAgIChXZWJDb3JlOjpXZWJLaXRBdWRpb0NvbnRleHQ6OmlzQ2xvc2VkIGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OldlYktpdEF1ZGlvQ29udGV4dDo6Y29ubmVjdGlvbkNvdW50IGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6OldlYktpdEF1ZGlvQ29udGV4dDo6YXVkaW9UaHJlYWQgY29uc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6V2ViS2l0QXVkaW9Db250ZXh0OjptYXhOdW1iZXJPZkNoYW5u
ZWxzKToKKyAgICAgICAgKFdlYkNvcmU6OldlYktpdEF1ZGlvQ29udGV4dDo6dXNlckdlc3R1cmVS
ZXF1aXJlZEZvckF1ZGlvU3RhcnQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6V2ViS2l0QXVk
aW9Db250ZXh0OjpwYWdlQ29uc2VudFJlcXVpcmVkRm9yQXVkaW9TdGFydCBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpXZWJLaXRBdWRpb0NvbnRleHQ6OnN0YXRlIGNvbnN0KToKKyAgICAgICAg
KGlzVHlwZSk6CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9XZWJLaXRBdWRpb0NvbnRleHQu
aWRsOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQ29u
dGV4dC5pZGwuCisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9XZWJLaXRBdWRpb1Bhbm5lck5v
ZGUuY3BwOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1Bhbm5l
ck5vZGUuY3BwLgorICAgICAgICAoV2ViQ29yZTo6Zml4TkFOcyk6CisgICAgICAgIChXZWJDb3Jl
OjpXZWJLaXRBdWRpb1Bhbm5lck5vZGU6OldlYktpdEF1ZGlvUGFubmVyTm9kZSk6CisgICAgICAg
IChXZWJDb3JlOjpXZWJLaXRBdWRpb1Bhbm5lck5vZGU6On5XZWJLaXRBdWRpb1Bhbm5lck5vZGUp
OgorICAgICAgICAoV2ViQ29yZTo6V2ViS2l0QXVkaW9QYW5uZXJOb2RlOjpwdWxsSW5wdXRzKToK
KyAgICAgICAgKFdlYkNvcmU6OldlYktpdEF1ZGlvUGFubmVyTm9kZTo6cHJvY2Vzcyk6CisgICAg
ICAgIChXZWJDb3JlOjpXZWJLaXRBdWRpb1Bhbm5lck5vZGU6OnJlc2V0KToKKyAgICAgICAgKFdl
YkNvcmU6OldlYktpdEF1ZGlvUGFubmVyTm9kZTo6aW5pdGlhbGl6ZSk6CisgICAgICAgIChXZWJD
b3JlOjpXZWJLaXRBdWRpb1Bhbm5lck5vZGU6OnVuaW5pdGlhbGl6ZSk6CisgICAgICAgIChXZWJD
b3JlOjpXZWJLaXRBdWRpb1Bhbm5lck5vZGU6Omxpc3RlbmVyKToKKyAgICAgICAgKFdlYkNvcmU6
OldlYktpdEF1ZGlvUGFubmVyTm9kZTo6c2V0UGFubmluZ01vZGVsKToKKyAgICAgICAgKFdlYkNv
cmU6OldlYktpdEF1ZGlvUGFubmVyTm9kZTo6ZGlzdGFuY2VNb2RlbCBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpXZWJLaXRBdWRpb1Bhbm5lck5vZGU6OnNldERpc3RhbmNlTW9kZWwpOgorICAg
ICAgICAoV2ViQ29yZTo6V2ViS2l0QXVkaW9QYW5uZXJOb2RlOjpnZXRBemltdXRoRWxldmF0aW9u
KToKKyAgICAgICAgKFdlYkNvcmU6OldlYktpdEF1ZGlvUGFubmVyTm9kZTo6ZG9wcGxlclJhdGUp
OgorICAgICAgICAoV2ViQ29yZTo6V2ViS2l0QXVkaW9QYW5uZXJOb2RlOjpkaXN0YW5jZUNvbmVH
YWluKToKKyAgICAgICAgKFdlYkNvcmU6OldlYktpdEF1ZGlvUGFubmVyTm9kZTo6bm90aWZ5QXVk
aW9Tb3VyY2VzQ29ubmVjdGVkVG9Ob2RlKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL1dl
YktpdEF1ZGlvUGFubmVyTm9kZS5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmF1ZGlvL1Bhbm5lck5vZGUuaC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL1dlYktp
dEF1ZGlvUGFubmVyTm9kZS5pZGw6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViYXVkaW8vUGFubmVyTm9kZS5pZGwuCisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9XZWJL
aXRPZmZsaW5lQXVkaW9Db250ZXh0LmNwcDogQ29waWVkIGZyb20gU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJhdWRpby9EZWxheU5vZGUuY3BwLgorICAgICAgICAoV2ViQ29yZTo6V2ViS2l0T2Zm
bGluZUF1ZGlvQ29udGV4dDo6V2ViS2l0T2ZmbGluZUF1ZGlvQ29udGV4dCk6CisgICAgICAgIChX
ZWJDb3JlOjpXZWJLaXRPZmZsaW5lQXVkaW9Db250ZXh0OjpjcmVhdGUpOgorICAgICAgICAqIE1v
ZHVsZXMvd2ViYXVkaW8vV2ViS2l0T2ZmbGluZUF1ZGlvQ29udGV4dC5oOiBDb3BpZWQgZnJvbSBT
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0RlbGF5Tm9kZS5oLgorICAgICAgICAqIE1v
ZHVsZXMvd2ViYXVkaW8vV2ViS2l0T2ZmbGluZUF1ZGlvQ29udGV4dC5pZGw6IENvcGllZCBmcm9t
IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vT2ZmbGluZUF1ZGlvQ29udGV4dC5pZGwu
CisgICAgICAgICogU291cmNlcy50eHQ6CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qOgorICAgICAgICAqIGJpbmRpbmdzL2pzL1dlYkNvcmVCdWlsdGluTmFtZXMu
aDoKKyAgICAgICAgKiBkb20vRXZlbnRUYXJnZXRGYWN0b3J5LmluOgorICAgICAgICAqIHBhZ2Uv
U2V0dGluZ3MueWFtbDoKKyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFscy5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpJbnRlcm5hbHM6OnNldEF1ZGlvQ29udGV4dFJlc3RyaWN0aW9ucyk6CisgICAg
ICAgICogdGVzdGluZy9JbnRlcm5hbHMuaDoKKyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFscy5p
ZGw6CisKIDIwMjAtMDYtMTcgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAg
ICAgICBVbnJldmlld2VkIGF0dGVtcHQgdG8gZml4IGludGVybmFsIG1hY09TIGJ1aWxkIGFmdGVy
IHIyNjMxNTcuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9X
ZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDk4ODczODE3NDljOGNiNDAxNjNlNjdkYTA0MDg4MWFlNmY2
M2Q4NjEuLmUyMjNkYWE3Njc4ZTc4YmVmZjE4ZDQ3MjdlZWMzOGFhYWFjY2E0NmEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMTUgQEAKKzIwMjAtMDYtMTcgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxl
LmNvbT4KKworICAgICAgICBBZGQgZXhwZXJpbWVudGFsIGZlYXR1cmUgZmxhZyBmb3IgbW9kZXJu
ICYgdW5wcmVmaXhlZCBXZWJBdWRpbyBBUEkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTIxMzI2OAorCisgICAgICAgIFJldmlld2VkIGJ5IEplciBOb2Js
ZS4KKworICAgICAgICBBZGQgZXhwZXJpbWVudGFsIGZlYXR1cmUgZmxhZyBmb3IgbW9kZXJuICYg
dW5wcmVmaXhlZCBXZWJBdWRpbyBBUEksCisgICAgICAgIG9mZiBieSBkZWZhdWx0LgorCisgICAg
ICAgICogU2hhcmVkL1dlYlByZWZlcmVuY2VzLnlhbWw6CisKIDIwMjAtMDYtMTcgIERhcnJ5bCBQ
b2d1ZSAgPGRhcnJ5bEBkcG9ndWUuY2E+CiAKICAgICAgICAgSW5kZXhlZERCOiBTdXBwb3J0IElE
QkZhY3RvcnkgZGF0YWJhc2VzIG1ldGhvZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ01h
a2VMaXN0cy50eHQgYi9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAppbmRleCA5NzU5NDg5
NWQ4YzdhYzI4MTE4Yzk3YzRmMTlhZTViNmFiODkxYzllLi4zOTlhNmJkM2ZkMDk2YzUxMTc4ODFj
OTI1NzY5MTUwNTEzM2MzMDExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3Rz
LnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dApAQCAtNDMzLDYgKzQzMyw3
IEBAIHNldChXZWJDb3JlX05PTl9TVkdfSURMX0ZJTEVTCiAgICAgTW9kdWxlcy93ZWJhdWRpby9B
dWRpb0J1ZmZlckNhbGxiYWNrLmlkbAogICAgIE1vZHVsZXMvd2ViYXVkaW8vQXVkaW9CdWZmZXJT
b3VyY2VOb2RlLmlkbAogICAgIE1vZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0LmlkbAorICAg
IE1vZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0U3RhdGUuaWRsCiAgICAgTW9kdWxlcy93ZWJh
dWRpby9BdWRpb0Rlc3RpbmF0aW9uTm9kZS5pZGwKICAgICBNb2R1bGVzL3dlYmF1ZGlvL0F1ZGlv
TGlzdGVuZXIuaWRsCiAgICAgTW9kdWxlcy93ZWJhdWRpby9BdWRpb05vZGUuaWRsCkBAIC00NDMs
NiArNDQ0LDcgQEAgc2V0KFdlYkNvcmVfTk9OX1NWR19JRExfRklMRVMKICAgICBNb2R1bGVzL3dl
YmF1ZGlvL0NoYW5uZWxTcGxpdHRlck5vZGUuaWRsCiAgICAgTW9kdWxlcy93ZWJhdWRpby9Db252
b2x2ZXJOb2RlLmlkbAogICAgIE1vZHVsZXMvd2ViYXVkaW8vRGVsYXlOb2RlLmlkbAorICAgIE1v
ZHVsZXMvd2ViYXVkaW8vRGlzdGFuY2VNb2RlbFR5cGUuaWRsCiAgICAgTW9kdWxlcy93ZWJhdWRp
by9EeW5hbWljc0NvbXByZXNzb3JOb2RlLmlkbAogICAgIE1vZHVsZXMvd2ViYXVkaW8vR2Fpbk5v
ZGUuaWRsCiAgICAgTW9kdWxlcy93ZWJhdWRpby9NZWRpYUVsZW1lbnRBdWRpb1NvdXJjZU5vZGUu
aWRsCkBAIC00NTIsOSArNDU0LDEzIEBAIHNldChXZWJDb3JlX05PTl9TVkdfSURMX0ZJTEVTCiAg
ICAgTW9kdWxlcy93ZWJhdWRpby9PZmZsaW5lQXVkaW9Db250ZXh0LmlkbAogICAgIE1vZHVsZXMv
d2ViYXVkaW8vT3NjaWxsYXRvck5vZGUuaWRsCiAgICAgTW9kdWxlcy93ZWJhdWRpby9QYW5uZXJO
b2RlLmlkbAorICAgIE1vZHVsZXMvd2ViYXVkaW8vUGFubmluZ01vZGVsVHlwZS5pZGwKICAgICBN
b2R1bGVzL3dlYmF1ZGlvL1BlcmlvZGljV2F2ZS5pZGwKICAgICBNb2R1bGVzL3dlYmF1ZGlvL1Nj
cmlwdFByb2Nlc3Nvck5vZGUuaWRsCiAgICAgTW9kdWxlcy93ZWJhdWRpby9XYXZlU2hhcGVyTm9k
ZS5pZGwKKyAgICBNb2R1bGVzL3dlYmF1ZGlvL1dlYktpdEF1ZGlvQ29udGV4dC5pZGwKKyAgICBN
b2R1bGVzL3dlYmF1ZGlvL1dlYktpdEF1ZGlvUGFubmVyTm9kZS5pZGwKKyAgICBNb2R1bGVzL3dl
YmF1ZGlvL1dlYktpdE9mZmxpbmVBdWRpb0NvbnRleHQuaWRsCiAKICAgICBNb2R1bGVzL3dlYmF1
dGhuL0F0dGVzdGF0aW9uQ29udmV5YW5jZVByZWZlcmVuY2UuaWRsCiAgICAgTW9kdWxlcy93ZWJh
dXRobi9BdXRoZW50aWNhdGlvbkV4dGVuc2lvbnNDbGllbnRJbnB1dHMuaWRsCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy1pbnB1dC54Y2ZpbGVsaXN0IGIvU291cmNl
L1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMtaW5wdXQueGNmaWxlbGlzdAppbmRleCA2YTdhYTdkMTRl
YmI0MzdkNzQxZWMyZWY4NTMzNzc1ZDM0NGQ0NjU0Li5mN2Q2NGMxOTNkMGU3ZGYyODE2NWJkZDc0
YTQwZDNmOTBlNmE4MjEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNl
cy1pbnB1dC54Y2ZpbGVsaXN0CisrKyBiL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLWlu
cHV0LnhjZmlsZWxpc3QKQEAgLTMwMCw2ICszMDAsNyBAQCAkKFBST0pFQ1RfRElSKS9Nb2R1bGVz
L3dlYmF1ZGlvL0F1ZGlvQnVmZmVyLmlkbAogJChQUk9KRUNUX0RJUikvTW9kdWxlcy93ZWJhdWRp
by9BdWRpb0J1ZmZlckNhbGxiYWNrLmlkbAogJChQUk9KRUNUX0RJUikvTW9kdWxlcy93ZWJhdWRp
by9BdWRpb0J1ZmZlclNvdXJjZU5vZGUuaWRsCiAkKFBST0pFQ1RfRElSKS9Nb2R1bGVzL3dlYmF1
ZGlvL0F1ZGlvQ29udGV4dC5pZGwKKyQoUFJPSkVDVF9ESVIpL01vZHVsZXMvd2ViYXVkaW8vQXVk
aW9Db250ZXh0U3RhdGUuaWRsCiAkKFBST0pFQ1RfRElSKS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlv
RGVzdGluYXRpb25Ob2RlLmlkbAogJChQUk9KRUNUX0RJUikvTW9kdWxlcy93ZWJhdWRpby9BdWRp
b0xpc3RlbmVyLmlkbAogJChQUk9KRUNUX0RJUikvTW9kdWxlcy93ZWJhdWRpby9BdWRpb05vZGUu
aWRsCkBAIC0zMTAsNiArMzExLDcgQEAgJChQUk9KRUNUX0RJUikvTW9kdWxlcy93ZWJhdWRpby9D
aGFubmVsTWVyZ2VyTm9kZS5pZGwKICQoUFJPSkVDVF9ESVIpL01vZHVsZXMvd2ViYXVkaW8vQ2hh
bm5lbFNwbGl0dGVyTm9kZS5pZGwKICQoUFJPSkVDVF9ESVIpL01vZHVsZXMvd2ViYXVkaW8vQ29u
dm9sdmVyTm9kZS5pZGwKICQoUFJPSkVDVF9ESVIpL01vZHVsZXMvd2ViYXVkaW8vRGVsYXlOb2Rl
LmlkbAorJChQUk9KRUNUX0RJUikvTW9kdWxlcy93ZWJhdWRpby9EaXN0YW5jZU1vZGVsVHlwZS5p
ZGwKICQoUFJPSkVDVF9ESVIpL01vZHVsZXMvd2ViYXVkaW8vRHluYW1pY3NDb21wcmVzc29yTm9k
ZS5pZGwKICQoUFJPSkVDVF9ESVIpL01vZHVsZXMvd2ViYXVkaW8vR2Fpbk5vZGUuaWRsCiAkKFBS
T0pFQ1RfRElSKS9Nb2R1bGVzL3dlYmF1ZGlvL01lZGlhRWxlbWVudEF1ZGlvU291cmNlTm9kZS5p
ZGwKQEAgLTMxOSw5ICszMjEsMTMgQEAgJChQUk9KRUNUX0RJUikvTW9kdWxlcy93ZWJhdWRpby9P
ZmZsaW5lQXVkaW9Db21wbGV0aW9uRXZlbnQuaWRsCiAkKFBST0pFQ1RfRElSKS9Nb2R1bGVzL3dl
YmF1ZGlvL09mZmxpbmVBdWRpb0NvbnRleHQuaWRsCiAkKFBST0pFQ1RfRElSKS9Nb2R1bGVzL3dl
YmF1ZGlvL09zY2lsbGF0b3JOb2RlLmlkbAogJChQUk9KRUNUX0RJUikvTW9kdWxlcy93ZWJhdWRp
by9QYW5uZXJOb2RlLmlkbAorJChQUk9KRUNUX0RJUikvTW9kdWxlcy93ZWJhdWRpby9QYW5uaW5n
TW9kZWxUeXBlLmlkbAogJChQUk9KRUNUX0RJUikvTW9kdWxlcy93ZWJhdWRpby9QZXJpb2RpY1dh
dmUuaWRsCiAkKFBST0pFQ1RfRElSKS9Nb2R1bGVzL3dlYmF1ZGlvL1NjcmlwdFByb2Nlc3Nvck5v
ZGUuaWRsCiAkKFBST0pFQ1RfRElSKS9Nb2R1bGVzL3dlYmF1ZGlvL1dhdmVTaGFwZXJOb2RlLmlk
bAorJChQUk9KRUNUX0RJUikvTW9kdWxlcy93ZWJhdWRpby9XZWJLaXRBdWRpb0NvbnRleHQuaWRs
CiskKFBST0pFQ1RfRElSKS9Nb2R1bGVzL3dlYmF1ZGlvL1dlYktpdEF1ZGlvUGFubmVyTm9kZS5p
ZGwKKyQoUFJPSkVDVF9ESVIpL01vZHVsZXMvd2ViYXVkaW8vV2ViS2l0T2ZmbGluZUF1ZGlvQ29u
dGV4dC5pZGwKICQoUFJPSkVDVF9ESVIpL01vZHVsZXMvd2ViYXV0aG4vQXR0ZXN0YXRpb25Db252
ZXlhbmNlUHJlZmVyZW5jZS5pZGwKICQoUFJPSkVDVF9ESVIpL01vZHVsZXMvd2ViYXV0aG4vQXV0
aGVudGljYXRpb25FeHRlbnNpb25zQ2xpZW50SW5wdXRzLmlkbAogJChQUk9KRUNUX0RJUikvTW9k
dWxlcy93ZWJhdXRobi9BdXRoZW50aWNhdGlvbkV4dGVuc2lvbnNDbGllbnRPdXRwdXRzLmlkbApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxp
c3QgYi9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlzdAppbmRl
eCBhMTQzMzYyNTE0MDJmNjgzNmVjODgwNDhmM2UwY2JkOTE0MjZiMDE3Li5jYmM2NDhhZmY4NzJl
MTdjOGFlYjJmM2RjNmU5YmM2Yjc4YzA0NDkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9E
ZXJpdmVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlzdAorKysgYi9Tb3VyY2UvV2ViQ29yZS9EZXJp
dmVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlzdApAQCAtMTU1LDYgKzE1NSw4IEBAICQoQlVJTFRf
UFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTQXVkaW9Db25maWd1cmF0aW9u
LmNwcAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNBdWRp
b0NvbmZpZ3VyYXRpb24uaAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dl
YkNvcmUvSlNBdWRpb0NvbnRleHQuY3BwCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNv
dXJjZXMvV2ViQ29yZS9KU0F1ZGlvQ29udGV4dC5oCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVy
aXZlZFNvdXJjZXMvV2ViQ29yZS9KU0F1ZGlvQ29udGV4dFN0YXRlLmNwcAorJChCVUlMVF9QUk9E
VUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNBdWRpb0NvbnRleHRTdGF0ZS5oCiAk
KEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0F1ZGlvRGVzdGlu
YXRpb25Ob2RlLmNwcAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNv
cmUvSlNBdWRpb0Rlc3RpbmF0aW9uTm9kZS5oCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZl
ZFNvdXJjZXMvV2ViQ29yZS9KU0F1ZGlvTGlzdGVuZXIuY3BwCkBAIC00ODYsNiArNDg4LDggQEAg
JChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNEZXZpY2VPcmll
bnRhdGlvbk9yTW90aW9uRXZlbnQuY3AKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291
cmNlcy9XZWJDb3JlL0pTRGV2aWNlT3JpZW50YXRpb25Pck1vdGlvbkV2ZW50LmgKICQoQlVJTFRf
UFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTRGV2aWNlT3JpZW50YXRpb25P
ck1vdGlvblBlcm1pc3Npb25TdGF0ZS5jcHAKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVk
U291cmNlcy9XZWJDb3JlL0pTRGV2aWNlT3JpZW50YXRpb25Pck1vdGlvblBlcm1pc3Npb25TdGF0
ZS5oCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0Rpc3Rh
bmNlTW9kZWxUeXBlLmNwcAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dl
YkNvcmUvSlNEaXN0YW5jZU1vZGVsVHlwZS5oCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZl
ZFNvdXJjZXMvV2ViQ29yZS9KU0RvY3VtZW50LmNwcAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rl
cml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNEb2N1bWVudC5oCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikv
RGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0RvY3VtZW50QW5kRWxlbWVudEV2ZW50SGFuZGxlcnMu
Y3BwCkBAIC0xMjI0LDYgKzEyMjgsOCBAQCAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNv
dXJjZXMvV2ViQ29yZS9KU1BhaW50V29ya2xldEdsb2JhbFNjb3BlLmNwcAogJChCVUlMVF9QUk9E
VUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNQYWludFdvcmtsZXRHbG9iYWxTY29w
ZS5oCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU1Bhbm5l
ck5vZGUuY3BwCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9K
U1Bhbm5lck5vZGUuaAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNv
cmUvSlNQYW5uaW5nTW9kZWxUeXBlLmNwcAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRT
b3VyY2VzL1dlYkNvcmUvSlNQYW5uaW5nTW9kZWxUeXBlLmgKICQoQlVJTFRfUFJPRFVDVFNfRElS
KS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTUGFyZW50Tm9kZS5jcHAKICQoQlVJTFRfUFJPRFVD
VFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTUGFyZW50Tm9kZS5oCiAkKEJVSUxUX1BS
T0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU1BhdGgyRC5jcHAKQEAgLTIwNzgs
NiArMjA4NCwxMCBAQCAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29y
ZS9KU1dlYkdQVVRleHR1cmVWaWV3LmNwcAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRT
b3VyY2VzL1dlYkNvcmUvSlNXZWJHUFVUZXh0dXJlVmlldy5oCiAkKEJVSUxUX1BST0RVQ1RTX0RJ
UikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU1dlYktpdEFuaW1hdGlvbkV2ZW50LmNwcAogJChC
VUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNXZWJLaXRBbmltYXRp
b25FdmVudC5oCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9K
U1dlYktpdEF1ZGlvQ29udGV4dC5jcHAKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291
cmNlcy9XZWJDb3JlL0pTV2ViS2l0QXVkaW9Db250ZXh0LmgKKyQoQlVJTFRfUFJPRFVDVFNfRElS
KS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTV2ViS2l0QXVkaW9QYW5uZXJOb2RlLmNwcAorJChC
VUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNXZWJLaXRBdWRpb1Bh
bm5lck5vZGUuaAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUv
SlNXZWJLaXRDU1NNYXRyaXguY3BwCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJj
ZXMvV2ViQ29yZS9KU1dlYktpdENTU01hdHJpeC5oCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVy
aXZlZFNvdXJjZXMvV2ViQ29yZS9KU1dlYktpdENTU1ZpZXdwb3J0UnVsZS5jcHAKQEAgLTIwOTQs
NiArMjEwNCw4IEBAICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3Jl
L0pTV2ViS2l0TWVkaWFLZXlzLmNwcAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3Vy
Y2VzL1dlYkNvcmUvSlNXZWJLaXRNZWRpYUtleXMuaAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rl
cml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNXZWJLaXROYW1lc3BhY2UuY3BwCiAkKEJVSUxUX1BST0RV
Q1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU1dlYktpdE5hbWVzcGFjZS5oCiskKEJV
SUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU1dlYktpdE9mZmxpbmVB
dWRpb0NvbnRleHQuY3BwCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2Vi
Q29yZS9KU1dlYktpdE9mZmxpbmVBdWRpb0NvbnRleHQuaAogJChCVUlMVF9QUk9EVUNUU19ESVIp
L0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNXZWJLaXRQbGF5YmFja1RhcmdldEF2YWlsYWJpbGl0
eUV2ZW50LmNwcAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUv
SlNXZWJLaXRQbGF5YmFja1RhcmdldEF2YWlsYWJpbGl0eUV2ZW50LmgKICQoQlVJTFRfUFJPRFVD
VFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTV2ViS2l0UG9pbnQuY3BwCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtlIGIvU291cmNlL1dlYkNvcmUv
RGVyaXZlZFNvdXJjZXMubWFrZQppbmRleCBkMjY3MDg5ZTM4NzM3ZDkyNGY5NDY1Mjk5MGNhYjky
MTNjOThiZDI4Li5iMjdjNzljZTY2M2UyYzhiOGVhNDYwYWUwODFlYmYxZGRlNzAzM2JhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtlCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UKQEAgLTM4Myw2ICszODMsNyBAQCBKU19CSU5ESU5H
X0lETFMgPSBcCiAgICAgJChXZWJDb3JlKS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQnVmZmVyQ2Fs
bGJhY2suaWRsIFwKICAgICAkKFdlYkNvcmUpL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9CdWZmZXJT
b3VyY2VOb2RlLmlkbCBcCiAgICAgJChXZWJDb3JlKS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQ29u
dGV4dC5pZGwgXAorICAgICQoV2ViQ29yZSkvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0NvbnRleHRT
dGF0ZS5pZGwgXAogICAgICQoV2ViQ29yZSkvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0Rlc3RpbmF0
aW9uTm9kZS5pZGwgXAogICAgICQoV2ViQ29yZSkvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0xpc3Rl
bmVyLmlkbCBcCiAgICAgJChXZWJDb3JlKS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvTm9kZS5pZGwg
XApAQCAtMzkzLDYgKzM5NCw3IEBAIEpTX0JJTkRJTkdfSURMUyA9IFwKICAgICAkKFdlYkNvcmUp
L01vZHVsZXMvd2ViYXVkaW8vQ2hhbm5lbFNwbGl0dGVyTm9kZS5pZGwgXAogICAgICQoV2ViQ29y
ZSkvTW9kdWxlcy93ZWJhdWRpby9Db252b2x2ZXJOb2RlLmlkbCBcCiAgICAgJChXZWJDb3JlKS9N
b2R1bGVzL3dlYmF1ZGlvL0RlbGF5Tm9kZS5pZGwgXAorICAgICQoV2ViQ29yZSkvTW9kdWxlcy93
ZWJhdWRpby9EaXN0YW5jZU1vZGVsVHlwZS5pZGwgXAogICAgICQoV2ViQ29yZSkvTW9kdWxlcy93
ZWJhdWRpby9EeW5hbWljc0NvbXByZXNzb3JOb2RlLmlkbCBcCiAgICAgJChXZWJDb3JlKS9Nb2R1
bGVzL3dlYmF1ZGlvL0dhaW5Ob2RlLmlkbCBcCiAgICAgJChXZWJDb3JlKS9Nb2R1bGVzL3dlYmF1
ZGlvL01lZGlhRWxlbWVudEF1ZGlvU291cmNlTm9kZS5pZGwgXApAQCAtNDAyLDkgKzQwNCwxMyBA
QCBKU19CSU5ESU5HX0lETFMgPSBcCiAgICAgJChXZWJDb3JlKS9Nb2R1bGVzL3dlYmF1ZGlvL09m
ZmxpbmVBdWRpb0NvbnRleHQuaWRsIFwKICAgICAkKFdlYkNvcmUpL01vZHVsZXMvd2ViYXVkaW8v
T3NjaWxsYXRvck5vZGUuaWRsIFwKICAgICAkKFdlYkNvcmUpL01vZHVsZXMvd2ViYXVkaW8vUGFu
bmVyTm9kZS5pZGwgXAorICAgICQoV2ViQ29yZSkvTW9kdWxlcy93ZWJhdWRpby9QYW5uaW5nTW9k
ZWxUeXBlLmlkbCBcCiAgICAgJChXZWJDb3JlKS9Nb2R1bGVzL3dlYmF1ZGlvL1BlcmlvZGljV2F2
ZS5pZGwgXAogICAgICQoV2ViQ29yZSkvTW9kdWxlcy93ZWJhdWRpby9TY3JpcHRQcm9jZXNzb3JO
b2RlLmlkbCBcCiAgICAgJChXZWJDb3JlKS9Nb2R1bGVzL3dlYmF1ZGlvL1dhdmVTaGFwZXJOb2Rl
LmlkbCBcCisgICAgJChXZWJDb3JlKS9Nb2R1bGVzL3dlYmF1ZGlvL1dlYktpdEF1ZGlvQ29udGV4
dC5pZGwgXAorICAgICQoV2ViQ29yZSkvTW9kdWxlcy93ZWJhdWRpby9XZWJLaXRBdWRpb1Bhbm5l
ck5vZGUuaWRsIFwKKyAgICAkKFdlYkNvcmUpL01vZHVsZXMvd2ViYXVkaW8vV2ViS2l0T2ZmbGlu
ZUF1ZGlvQ29udGV4dC5pZGwgXAogICAgICQoV2ViQ29yZSkvTW9kdWxlcy93ZWJhdXRobi9BdHRl
c3RhdGlvbkNvbnZleWFuY2VQcmVmZXJlbmNlLmlkbCBcCiAgICAgJChXZWJDb3JlKS9Nb2R1bGVz
L3dlYmF1dGhuL0F1dGhlbnRpY2F0aW9uRXh0ZW5zaW9uc0NsaWVudElucHV0cy5pZGwgXAogICAg
ICQoV2ViQ29yZSkvTW9kdWxlcy93ZWJhdXRobi9BdXRoZW50aWNhdGlvbkV4dGVuc2lvbnNDbGll
bnRPdXRwdXRzLmlkbCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1
ZGlvL0FuYWx5c2VyTm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0Fu
YWx5c2VyTm9kZS5jcHAKaW5kZXggMTc5ODcwNzAxZjg1MzM4NDhiOGE0OWE3NWQzYWYxMzYxNTRi
MDhkMi4uMjE1ZGUzMjFlOWExNmMzMjQ2Y2E0OTQ3NGQ5ZWFlMjUyMjUzODIwMSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BbmFseXNlck5vZGUuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQW5hbHlzZXJOb2RlLmNwcApAQCAtMzYs
NyArMzYsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFdURl9NQUtFX0lTT19BTExPQ0FURURf
SU1QTChBbmFseXNlck5vZGUpOwogCi1BbmFseXNlck5vZGU6OkFuYWx5c2VyTm9kZShBdWRpb0Nv
bnRleHQmIGNvbnRleHQsIGZsb2F0IHNhbXBsZVJhdGUpCitBbmFseXNlck5vZGU6OkFuYWx5c2Vy
Tm9kZShBdWRpb0NvbnRleHRCYXNlJiBjb250ZXh0LCBmbG9hdCBzYW1wbGVSYXRlKQogICAgIDog
QXVkaW9CYXNpY0luc3BlY3Rvck5vZGUoY29udGV4dCwgc2FtcGxlUmF0ZSwgMikKIHsKICAgICBz
ZXROb2RlVHlwZShOb2RlVHlwZUFuYWx5c2VyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViYXVkaW8vQW5hbHlzZXJOb2RlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmF1ZGlvL0FuYWx5c2VyTm9kZS5oCmluZGV4IGRhMWI1ZTg5Y2EyOGRlZWNjMzljMmYzNjY5
N2ZkOTBhMGIzZTBmN2UuLmE0MDIzYTMwZGVhMGRmMmJjOWE3YmIwNGJlZGFkOGEzMGRiOWRjZTUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQW5hbHlzZXJOb2Rl
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BbmFseXNlck5vZGUuaApA
QCAtMzIsNyArMzIsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBBbmFseXNlck5vZGUg
ZmluYWwgOiBwdWJsaWMgQXVkaW9CYXNpY0luc3BlY3Rvck5vZGUgewogICAgIFdURl9NQUtFX0lT
T19BTExPQ0FURUQoQW5hbHlzZXJOb2RlKTsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPEFuYWx5
c2VyTm9kZT4gY3JlYXRlKEF1ZGlvQ29udGV4dCYgY29udGV4dCwgZmxvYXQgc2FtcGxlUmF0ZSkK
KyAgICBzdGF0aWMgUmVmPEFuYWx5c2VyTm9kZT4gY3JlYXRlKEF1ZGlvQ29udGV4dEJhc2UmIGNv
bnRleHQsIGZsb2F0IHNhbXBsZVJhdGUpCiAgICAgewogICAgICAgICByZXR1cm4gYWRvcHRSZWYo
Km5ldyBBbmFseXNlck5vZGUoY29udGV4dCwgc2FtcGxlUmF0ZSkpOwogICAgIH0KQEAgLTU4LDcg
KzU4LDcgQEAgcHVibGljOgogICAgIHZvaWQgZ2V0Qnl0ZVRpbWVEb21haW5EYXRhKGNvbnN0IFJl
ZlB0cjxKU0M6OlVpbnQ4QXJyYXk+JiBhcnJheSkgeyBtX2FuYWx5c2VyLmdldEJ5dGVUaW1lRG9t
YWluRGF0YShhcnJheS5nZXQoKSk7IH0KIAogcHJpdmF0ZToKLSAgICBBbmFseXNlck5vZGUoQXVk
aW9Db250ZXh0JiwgZmxvYXQgc2FtcGxlUmF0ZSk7CisgICAgQW5hbHlzZXJOb2RlKEF1ZGlvQ29u
dGV4dEJhc2UmLCBmbG9hdCBzYW1wbGVSYXRlKTsKIAogICAgIHZvaWQgcHJvY2VzcyhzaXplX3Qg
ZnJhbWVzVG9Qcm9jZXNzKSBmaW5hbDsKICAgICB2b2lkIHJlc2V0KCkgZmluYWw7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQmFzaWNJbnNwZWN0b3JO
b2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9CYXNpY0luc3Bl
Y3Rvck5vZGUuY3BwCmluZGV4IDBmYjU1YjA4ZjBjMWEyYmUyZDA3MGM0ZTBkOGQ4ZjQ2N2UzNDZh
NzIuLjE0NTNkYWNhZmRhMWQzOGEzNGNmZDFiNmI5M2NiNzgzMzIzNWQ5ODggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9CYXNpY0luc3BlY3Rvck5vZGUu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9CYXNpY0luc3Bl
Y3Rvck5vZGUuY3BwCkBAIC0zNiw3ICszNiw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogV1RG
X01BS0VfSVNPX0FMTE9DQVRFRF9JTVBMKEF1ZGlvQmFzaWNJbnNwZWN0b3JOb2RlKTsKIAotQXVk
aW9CYXNpY0luc3BlY3Rvck5vZGU6OkF1ZGlvQmFzaWNJbnNwZWN0b3JOb2RlKEF1ZGlvQ29udGV4
dCYgY29udGV4dCwgZmxvYXQgc2FtcGxlUmF0ZSwgdW5zaWduZWQgb3V0cHV0Q2hhbm5lbENvdW50
KQorQXVkaW9CYXNpY0luc3BlY3Rvck5vZGU6OkF1ZGlvQmFzaWNJbnNwZWN0b3JOb2RlKEF1ZGlv
Q29udGV4dEJhc2UmIGNvbnRleHQsIGZsb2F0IHNhbXBsZVJhdGUsIHVuc2lnbmVkIG91dHB1dENo
YW5uZWxDb3VudCkKICAgICA6IEF1ZGlvTm9kZShjb250ZXh0LCBzYW1wbGVSYXRlKQogewogICAg
IHNldE5vZGVUeXBlKE5vZGVUeXBlQmFzaWNJbnNwZWN0b3IpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0Jhc2ljSW5zcGVjdG9yTm9kZS5oIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0Jhc2ljSW5zcGVjdG9yTm9kZS5oCmlu
ZGV4IDgwZTA4ZDI5NjE3YjE3NzRjNjBkZDE4NzkzZDE2MzBlZjJhZDAzZGIuLmU3NjllNDZhZTIx
ZjQ3MzQxYzI3M2M4ODQ1Y2JlMDI5ZTgxMjhkNjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViYXVkaW8vQXVkaW9CYXNpY0luc3BlY3Rvck5vZGUuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQmFzaWNJbnNwZWN0b3JOb2RlLmgKQEAgLTM0
LDcgKzM0LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgQXVkaW9CYXNpY0luc3BlY3Rv
ck5vZGUgOiBwdWJsaWMgQXVkaW9Ob2RlIHsKICAgICBXVEZfTUFLRV9JU09fQUxMT0NBVEVEKEF1
ZGlvQmFzaWNJbnNwZWN0b3JOb2RlKTsKIHB1YmxpYzoKLSAgICBBdWRpb0Jhc2ljSW5zcGVjdG9y
Tm9kZShBdWRpb0NvbnRleHQmLCBmbG9hdCBzYW1wbGVSYXRlLCB1bnNpZ25lZCBvdXRwdXRDaGFu
bmVsQ291bnQpOworICAgIEF1ZGlvQmFzaWNJbnNwZWN0b3JOb2RlKEF1ZGlvQ29udGV4dEJhc2Um
LCBmbG9hdCBzYW1wbGVSYXRlLCB1bnNpZ25lZCBvdXRwdXRDaGFubmVsQ291bnQpOwogCiBwcml2
YXRlOgogICAgIHZvaWQgcHVsbElucHV0cyhzaXplX3QgZnJhbWVzVG9Qcm9jZXNzKSBvdmVycmlk
ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9CYXNp
Y1Byb2Nlc3Nvck5vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRp
b0Jhc2ljUHJvY2Vzc29yTm9kZS5jcHAKaW5kZXggMGI5ZjFjZWQ4NzQ1YjVkOTk4ZGMzOGQ2MzZl
NzkwYWJmYmU2ZTk4My4uZjdiNzk2YmU1NTU0NTM2YTZhNTQyYzc1ZTM2MDU1MjVmOTQ2OGEyOSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0Jhc2ljUHJv
Y2Vzc29yTm9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRp
b0Jhc2ljUHJvY2Vzc29yTm9kZS5jcHAKQEAgLTM5LDcgKzM5LDcgQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogCiBXVEZfTUFLRV9JU09fQUxMT0NBVEVEX0lNUEwoQXVkaW9CYXNpY1Byb2Nlc3Nvck5v
ZGUpOwogCi1BdWRpb0Jhc2ljUHJvY2Vzc29yTm9kZTo6QXVkaW9CYXNpY1Byb2Nlc3Nvck5vZGUo
QXVkaW9Db250ZXh0JiBjb250ZXh0LCBmbG9hdCBzYW1wbGVSYXRlKQorQXVkaW9CYXNpY1Byb2Nl
c3Nvck5vZGU6OkF1ZGlvQmFzaWNQcm9jZXNzb3JOb2RlKEF1ZGlvQ29udGV4dEJhc2UmIGNvbnRl
eHQsIGZsb2F0IHNhbXBsZVJhdGUpCiAgICAgOiBBdWRpb05vZGUoY29udGV4dCwgc2FtcGxlUmF0
ZSkKIHsKICAgICBhZGRJbnB1dChtYWtlVW5pcXVlPEF1ZGlvTm9kZUlucHV0Pih0aGlzKSk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQmFzaWNQcm9j
ZXNzb3JOb2RlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQmFzaWNQ
cm9jZXNzb3JOb2RlLmgKaW5kZXggODJjZmZkYTU5ZjI3ODIwZGIwZDNkNTQ2MDFkNmFjYzRhYzc2
ZjE2MS4uZTE2MzczYmYwMjk3NmE0NWFkODI1ZTJlNjNhODM3YWZmNGY5MjE5YSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0Jhc2ljUHJvY2Vzc29yTm9k
ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9CYXNpY1Byb2Nl
c3Nvck5vZGUuaApAQCAtMzcsNyArMzcsNyBAQCBjbGFzcyBBdWRpb1Byb2Nlc3NvcjsKIGNsYXNz
IEF1ZGlvQmFzaWNQcm9jZXNzb3JOb2RlIDogcHVibGljIEF1ZGlvTm9kZSB7CiAgICAgV1RGX01B
S0VfSVNPX0FMTE9DQVRFRChBdWRpb0Jhc2ljUHJvY2Vzc29yTm9kZSk7CiBwdWJsaWM6Ci0gICAg
QXVkaW9CYXNpY1Byb2Nlc3Nvck5vZGUoQXVkaW9Db250ZXh0JiwgZmxvYXQgc2FtcGxlUmF0ZSk7
CisgICAgQXVkaW9CYXNpY1Byb2Nlc3Nvck5vZGUoQXVkaW9Db250ZXh0QmFzZSYsIGZsb2F0IHNh
bXBsZVJhdGUpOwogCiAgICAgLy8gQXVkaW9Ob2RlCiAgICAgdm9pZCBwcm9jZXNzKHNpemVfdCBm
cmFtZXNUb1Byb2Nlc3MpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJhdWRpby9BdWRpb0J1ZmZlclNvdXJjZU5vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJhdWRpby9BdWRpb0J1ZmZlclNvdXJjZU5vZGUuY3BwCmluZGV4IGMzNjYxZGU1
N2Q3MzllYzQ3MGQ2ZmFkOWY1NDFlNDk1ZWM5NzZkZWYuLjBjMWJhNGU5NGE5OGNiZjdkMTliZGMz
YjIzYTYyZmE5NDZmMDk1MzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
YXVkaW8vQXVkaW9CdWZmZXJTb3VyY2VOb2RlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmF1ZGlvL0F1ZGlvQnVmZmVyU291cmNlTm9kZS5jcHAKQEAgLTQ5LDEyICs0OSwxMiBA
QCBjb25zdCBkb3VibGUgRGVmYXVsdEdyYWluRHVyYXRpb24gPSAwLjAyMDsgLy8gMjBtcwogLy8g
dG8gbWluaW1pemUgbGluZWFyIGludGVycG9sYXRpb24gYWxpYXNpbmcuCiBjb25zdCBkb3VibGUg
TWF4UmF0ZSA9IDEwMjQ7CiAKLVJlZjxBdWRpb0J1ZmZlclNvdXJjZU5vZGU+IEF1ZGlvQnVmZmVy
U291cmNlTm9kZTo6Y3JlYXRlKEF1ZGlvQ29udGV4dCYgY29udGV4dCwgZmxvYXQgc2FtcGxlUmF0
ZSkKK1JlZjxBdWRpb0J1ZmZlclNvdXJjZU5vZGU+IEF1ZGlvQnVmZmVyU291cmNlTm9kZTo6Y3Jl
YXRlKEF1ZGlvQ29udGV4dEJhc2UmIGNvbnRleHQsIGZsb2F0IHNhbXBsZVJhdGUpCiB7CiAgICAg
cmV0dXJuIGFkb3B0UmVmKCpuZXcgQXVkaW9CdWZmZXJTb3VyY2VOb2RlKGNvbnRleHQsIHNhbXBs
ZVJhdGUpKTsKIH0KIAotQXVkaW9CdWZmZXJTb3VyY2VOb2RlOjpBdWRpb0J1ZmZlclNvdXJjZU5v
ZGUoQXVkaW9Db250ZXh0JiBjb250ZXh0LCBmbG9hdCBzYW1wbGVSYXRlKQorQXVkaW9CdWZmZXJT
b3VyY2VOb2RlOjpBdWRpb0J1ZmZlclNvdXJjZU5vZGUoQXVkaW9Db250ZXh0QmFzZSYgY29udGV4
dCwgZmxvYXQgc2FtcGxlUmF0ZSkKICAgICA6IEF1ZGlvU2NoZWR1bGVkU291cmNlTm9kZShjb250
ZXh0LCBzYW1wbGVSYXRlKQogICAgICwgbV9idWZmZXIobnVsbHB0cikKICAgICAsIG1faXNMb29w
aW5nKGZhbHNlKQpAQCAtNDEzLDcgKzQxMyw3IEBAIHZvaWQgQXVkaW9CdWZmZXJTb3VyY2VOb2Rl
OjpzZXRCdWZmZXIoUmVmUHRyPEF1ZGlvQnVmZmVyPiYmIGJ1ZmZlcikKICAgICBERUJVR19MT0co
TE9HSURFTlRJRklFUik7CiAKICAgICAvLyBUaGUgY29udGV4dCBtdXN0IGJlIGxvY2tlZCBzaW5j
ZSBjaGFuZ2luZyB0aGUgYnVmZmVyIGNhbiByZS1jb25maWd1cmUgdGhlIG51bWJlciBvZiBjaGFu
bmVscyB0aGF0IGFyZSBvdXRwdXQuCi0gICAgQXVkaW9Db250ZXh0OjpBdXRvTG9ja2VyIGNvbnRl
eHRMb2NrZXIoY29udGV4dCgpKTsKKyAgICBBdWRpb0NvbnRleHRCYXNlOjpBdXRvTG9ja2VyIGNv
bnRleHRMb2NrZXIoY29udGV4dCgpKTsKICAgICAKICAgICAvLyBUaGlzIHN5bmNocm9uaXplcyB3
aXRoIHByb2Nlc3MoKS4KICAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG1fcHJvY2Vzc011dGV4
KTsKQEAgLTU1Nyw3ICs1NTcsNyBAQCBib29sIEF1ZGlvQnVmZmVyU291cmNlTm9kZTo6cHJvcGFn
YXRlc1NpbGVuY2UoKSBjb25zdAogICAgIHJldHVybiAhaXNQbGF5aW5nT3JTY2hlZHVsZWQoKSB8
fCBoYXNGaW5pc2hlZCgpIHx8ICFtX2J1ZmZlcjsKIH0KIAotdm9pZCBBdWRpb0J1ZmZlclNvdXJj
ZU5vZGU6OnNldFBhbm5lck5vZGUoUGFubmVyTm9kZSogcGFubmVyTm9kZSkKK3ZvaWQgQXVkaW9C
dWZmZXJTb3VyY2VOb2RlOjpzZXRQYW5uZXJOb2RlKFBhbm5lck5vZGVCYXNlKiBwYW5uZXJOb2Rl
KQogewogICAgIGlmIChtX3Bhbm5lck5vZGUgIT0gcGFubmVyTm9kZSAmJiAhaGFzRmluaXNoZWQo
KSkgewogICAgICAgICBpZiAocGFubmVyTm9kZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViYXVkaW8vQXVkaW9CdWZmZXJTb3VyY2VOb2RlLmggYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQnVmZmVyU291cmNlTm9kZS5oCmluZGV4IDU0OGIyNmU3
ZmE3NTE0ZGU5YWQ2NGQzZTM1MzZiOWYzNGJlZGE5ZmIuLjYwMTEzMTE5OWE0ZmE5MmQ3MzBjNTBk
NWFhMjYwMDM4ZjZmZDk2ZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
YXVkaW8vQXVkaW9CdWZmZXJTb3VyY2VOb2RlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJhdWRpby9BdWRpb0J1ZmZlclNvdXJjZU5vZGUuaApAQCAtMzEsNyArMzEsNyBAQAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBBdWRpb0J1ZmZlcjsKLWNsYXNzIFBhbm5lck5vZGU7
CitjbGFzcyBQYW5uZXJOb2RlQmFzZTsKIAogLy8gQXVkaW9CdWZmZXJTb3VyY2VOb2RlIGlzIGFu
IEF1ZGlvTm9kZSByZXByZXNlbnRpbmcgYW4gYXVkaW8gc291cmNlIGZyb20gYW4gaW4tbWVtb3J5
IGF1ZGlvIGFzc2V0IHJlcHJlc2VudGVkIGJ5IGFuIEF1ZGlvQnVmZmVyLgogLy8gSXQgZ2VuZXJh
bGx5IHdpbGwgYmUgdXNlZCBmb3Igc2hvcnQgc291bmRzIHdoaWNoIHJlcXVpcmUgYSBoaWdoIGRl
Z3JlZSBvZiBzY2hlZHVsaW5nIGZsZXhpYmlsaXR5IChjYW4gcGxheWJhY2sgaW4gcmh5dGhtaWNh
bGx5IHBlcmZlY3Qgd2F5cykuCkBAIC0zOSw3ICszOSw3IEBAIGNsYXNzIFBhbm5lck5vZGU7CiBj
bGFzcyBBdWRpb0J1ZmZlclNvdXJjZU5vZGUgZmluYWwgOiBwdWJsaWMgQXVkaW9TY2hlZHVsZWRT
b3VyY2VOb2RlIHsKICAgICBXVEZfTUFLRV9JU09fQUxMT0NBVEVEKEF1ZGlvQnVmZmVyU291cmNl
Tm9kZSk7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxBdWRpb0J1ZmZlclNvdXJjZU5vZGU+IGNy
ZWF0ZShBdWRpb0NvbnRleHQmLCBmbG9hdCBzYW1wbGVSYXRlKTsKKyAgICBzdGF0aWMgUmVmPEF1
ZGlvQnVmZmVyU291cmNlTm9kZT4gY3JlYXRlKEF1ZGlvQ29udGV4dEJhc2UmLCBmbG9hdCBzYW1w
bGVSYXRlKTsKIAogICAgIHZpcnR1YWwgfkF1ZGlvQnVmZmVyU291cmNlTm9kZSgpOwogCkBAIC03
OSw3ICs3OSw3IEBAIHB1YmxpYzoKICAgICBBdWRpb1BhcmFtKiBwbGF5YmFja1JhdGUoKSB7IHJl
dHVybiBtX3BsYXliYWNrUmF0ZS5nZXQoKTsgfQogCiAgICAgLy8gSWYgYSBwYW5uZXIgbm9kZSBp
cyBzZXQsIHRoZW4gd2UgY2FuIGluY29ycG9yYXRlIGRvcHBsZXIgc2hpZnQgaW50byB0aGUgcGxh
eWJhY2sgcGl0Y2ggcmF0ZS4KLSAgICB2b2lkIHNldFBhbm5lck5vZGUoUGFubmVyTm9kZSopOwor
ICAgIHZvaWQgc2V0UGFubmVyTm9kZShQYW5uZXJOb2RlQmFzZSopOwogICAgIHZvaWQgY2xlYXJQ
YW5uZXJOb2RlKCk7CiAKICAgICAvLyBJZiB3ZSBhcmUgbm8gbG9uZ2VyIHBsYXlpbmcsIHByb3Bv
Z2F0ZSBzaWxlbmNlIGFoZWFkIHRvIGRvd25zdHJlYW0gbm9kZXMuCkBAIC05MSw3ICs5MSw3IEBA
IHB1YmxpYzoKICAgICBjb25zdCBjaGFyKiBhY3RpdmVET01PYmplY3ROYW1lKCkgY29uc3Qgb3Zl
cnJpZGUgeyByZXR1cm4gIkF1ZGlvQnVmZmVyU291cmNlTm9kZSI7IH0KIAogcHJpdmF0ZToKLSAg
ICBBdWRpb0J1ZmZlclNvdXJjZU5vZGUoQXVkaW9Db250ZXh0JiwgZmxvYXQgc2FtcGxlUmF0ZSk7
CisgICAgQXVkaW9CdWZmZXJTb3VyY2VOb2RlKEF1ZGlvQ29udGV4dEJhc2UmLCBmbG9hdCBzYW1w
bGVSYXRlKTsKIAogICAgIGRvdWJsZSB0YWlsVGltZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIDA7
IH0KICAgICBkb3VibGUgbGF0ZW5jeVRpbWUoKSBjb25zdCBmaW5hbCB7IHJldHVybiAwOyB9CkBA
IC0xNDUsNyArMTQ1LDcgQEAgcHJpdmF0ZToKIAogICAgIC8vIFdlIG9wdGlvbmFsbHkga2VlcCB0
cmFjayBvZiBhIHBhbm5lciBub2RlIHdoaWNoIGhhcyBhIGRvcHBsZXIgc2hpZnQgdGhhdCBpcyBp
bmNvcnBvcmF0ZWQgaW50bwogICAgIC8vIHRoZSBwaXRjaCByYXRlLiBXZSBtYW51YWxseSBtYW5h
Z2UgcmVmLWNvdW50aW5nIGJlY2F1c2Ugd2Ugd2FudCB0byB1c2UgUmVmVHlwZUNvbm5lY3Rpb24u
Ci0gICAgUGFubmVyTm9kZSogbV9wYW5uZXJOb2RlOworICAgIFBhbm5lck5vZGVCYXNlKiBtX3Bh
bm5lck5vZGU7CiAKICAgICAvLyBUaGlzIHN5bmNocm9uaXplcyBwcm9jZXNzKCkgd2l0aCBzZXRC
dWZmZXIoKSB3aGljaCBjYW4gY2F1c2UgZHluYW1pYyBjaGFubmVsIGNvdW50IGNoYW5nZXMuCiAg
ICAgbXV0YWJsZSBMb2NrIG1fcHJvY2Vzc011dGV4OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0NvbnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJhdWRpby9BdWRpb0NvbnRleHQuY3BwCmluZGV4IDM4MmRjN2NmMGNkMGY1ZDVkMzAy
NzZlNjNkOTJkYmUwYjUzN2VhNTkuLjI2ZTFmYzdjY2FiMTQzNGQwNWFmMWFiYWExYzQ4ZTAwMmUy
YjMxYzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9D
b250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQ29u
dGV4dC5jcHAKQEAgLTEwNyw2ICsxMDcsNyBAQCBjb25zdCB1bnNpZ25lZCBNYXhQZXJpb2RpY1dh
dmVMZW5ndGggPSA0MDk2OwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK1dURl9NQUtFX0lTT19B
TExPQ0FURURfSU1QTChBdWRpb0NvbnRleHRCYXNlKTsKIFdURl9NQUtFX0lTT19BTExPQ0FURURf
SU1QTChBdWRpb0NvbnRleHQpOwogCiAjZGVmaW5lIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoZm10
LCAuLi4pIFJFTEVBU0VfTE9HX0lGKGRvY3VtZW50KCkgJiYgZG9jdW1lbnQoKS0+cGFnZSgpICYm
IGRvY3VtZW50KCktPnBhZ2UoKS0+aXNBbHdheXNPbkxvZ2dpbmdBbGxvd2VkKCksIE1lZGlhLCAi
JXAgLSBBdWRpb0NvbnRleHQ6OiIgZm10LCB0aGlzLCAjI19fVkFfQVJHU19fKQpAQCAtMTM3LDkg
KzEzOCwxNCBAQCBFeGNlcHRpb25PcjxSZWY8QXVkaW9Db250ZXh0Pj4gQXVkaW9Db250ZXh0Ojpj
cmVhdGUoRG9jdW1lbnQmIGRvY3VtZW50KQogICAgIHJldHVybiBhdWRpb0NvbnRleHQ7CiB9CiAK
K0F1ZGlvQ29udGV4dEJhc2U6OkF1ZGlvQ29udGV4dEJhc2UoRG9jdW1lbnQmIGRvY3VtZW50KQor
ICAgIDogQWN0aXZlRE9NT2JqZWN0KGRvY3VtZW50KQoreworfQorCiAvLyBDb25zdHJ1Y3RvciBm
b3IgcmVuZGVyaW5nIHRvIHRoZSBhdWRpbyBoYXJkd2FyZS4KIEF1ZGlvQ29udGV4dDo6QXVkaW9D
b250ZXh0KERvY3VtZW50JiBkb2N1bWVudCkKLSAgICA6IEFjdGl2ZURPTU9iamVjdChkb2N1bWVu
dCkKKyAgICA6IEF1ZGlvQ29udGV4dEJhc2UoZG9jdW1lbnQpCiAjaWYgIVJFTEVBU0VfTE9HX0RJ
U0FCTEVECiAgICAgLCBtX2xvZ2dlcihkb2N1bWVudC5sb2dnZXIoKSkKICAgICAsIG1fbG9nSWRl
bnRpZmllcih1bmlxdWVMb2dJZGVudGlmaWVyKCkpCkBAIC0xNjQsNyArMTcwLDcgQEAgQXVkaW9D
b250ZXh0OjpBdWRpb0NvbnRleHQoRG9jdW1lbnQmIGRvY3VtZW50KQogCiAvLyBDb25zdHJ1Y3Rv
ciBmb3Igb2ZmbGluZSAobm9uLXJlYWx0aW1lKSByZW5kZXJpbmcuCiBBdWRpb0NvbnRleHQ6OkF1
ZGlvQ29udGV4dChEb2N1bWVudCYgZG9jdW1lbnQsIEF1ZGlvQnVmZmVyKiByZW5kZXJUYXJnZXQp
Ci0gICAgOiBBY3RpdmVET01PYmplY3QoZG9jdW1lbnQpCisgICAgOiBBdWRpb0NvbnRleHRCYXNl
KGRvY3VtZW50KQogI2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRAogICAgICwgbV9sb2dnZXIoZG9j
dW1lbnQubG9nZ2VyKCkpCiAgICAgLCBtX2xvZ0lkZW50aWZpZXIodW5pcXVlTG9nSWRlbnRpZmll
cigpKQpAQCAtMzY2LDcgKzM3Miw3IEBAIGNvbnN0IGNoYXIqIEF1ZGlvQ29udGV4dDo6YWN0aXZl
RE9NT2JqZWN0TmFtZSgpIGNvbnN0CiAgICAgcmV0dXJuICJBdWRpb0NvbnRleHQiOwogfQogCi1E
b2N1bWVudCogQXVkaW9Db250ZXh0Ojpkb2N1bWVudCgpIGNvbnN0CitEb2N1bWVudCogQXVkaW9D
b250ZXh0QmFzZTo6ZG9jdW1lbnQoKSBjb25zdAogewogICAgIHJldHVybiBkb3duY2FzdDxEb2N1
bWVudD4obV9zY3JpcHRFeGVjdXRpb25Db250ZXh0KTsKIH0KQEAgLTEwMDIsOSArMTAwOCwxNCBA
QCB2b2lkIEF1ZGlvQ29udGV4dDo6cmVtb3ZlTWFya2VkU3VtbWluZ0p1bmN0aW9uKEF1ZGlvU3Vt
bWluZ0p1bmN0aW9uKiBzdW1taW5nSnVuYwogICAgIG1fZGlydHlTdW1taW5nSnVuY3Rpb25zLnJl
bW92ZShzdW1taW5nSnVuY3Rpb24pOwogfQogCitFdmVudFRhcmdldEludGVyZmFjZSBBdWRpb0Nv
bnRleHQ6OmV2ZW50VGFyZ2V0SW50ZXJmYWNlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gQXVkaW9D
b250ZXh0RXZlbnRUYXJnZXRJbnRlcmZhY2VUeXBlOworfQorCiB2b2lkIEF1ZGlvQ29udGV4dDo6
bWFya0F1ZGlvTm9kZU91dHB1dERpcnR5KEF1ZGlvTm9kZU91dHB1dCogb3V0cHV0KQogewotICAg
IEFTU0VSVChpc0dyYXBoT3duZXIoKSk7ICAgIAorICAgIEFTU0VSVChpc0dyYXBoT3duZXIoKSk7
CiAgICAgbV9kaXJ0eUF1ZGlvTm9kZU91dHB1dHMuYWRkKG91dHB1dCk7CiB9CiAKQEAgLTEwNjgs
NyArMTA3OSw3IEBAIHZvaWQgQXVkaW9Db250ZXh0Ojpwcm9jZXNzQXV0b21hdGljUHVsbE5vZGVz
KHNpemVfdCBmcmFtZXNUb1Byb2Nlc3MpCiAgICAgICAgIG5vZGUtPnByb2Nlc3NJZk5lY2Vzc2Fy
eShmcmFtZXNUb1Byb2Nlc3MpOwogfQogCi1TY3JpcHRFeGVjdXRpb25Db250ZXh0KiBBdWRpb0Nv
bnRleHQ6OnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSBjb25zdAorU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCogQXVkaW9Db250ZXh0QmFzZTo6c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpIGNvbnN0CiB7
CiAgICAgcmV0dXJuIEFjdGl2ZURPTU9iamVjdDo6c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOwog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0NvbnRl
eHQuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0LmgKaW5k
ZXggOGUwOTQzOTRjZmZjYzVkYWE4YjBlNGRjNTg5MTIxOTQ0MmU2ZTEyZS4uNTA1OTIxZmY1ZTM1
ZDI0OTUzMzgwMjAzYTQ3OTVmNjRjYWMyZDVkMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJhdWRpby9BdWRpb0NvbnRleHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmF1ZGlvL0F1ZGlvQ29udGV4dC5oCkBAIC0yOCw2ICsyOCw3IEBACiAjaW5jbHVkZSAi
QWN0aXZlRE9NT2JqZWN0LmgiCiAjaW5jbHVkZSAiQXN5bmNBdWRpb0RlY29kZXIuaCIKICNpbmNs
dWRlICJBdWRpb0J1cy5oIgorI2luY2x1ZGUgIkF1ZGlvQ29udGV4dFN0YXRlLmgiCiAjaW5jbHVk
ZSAiQXVkaW9EZXN0aW5hdGlvbk5vZGUuaCIKICNpbmNsdWRlICJFdmVudFRhcmdldC5oIgogI2lu
Y2x1ZGUgIk1lZGlhQ2FuU3RhcnRMaXN0ZW5lci5oIgpAQCAtNzksMjAgKzgwLDEyNyBAQCBjbGFz
cyBXYXZlU2hhcGVyTm9kZTsKIAogdGVtcGxhdGU8dHlwZW5hbWUgSURMVHlwZT4gY2xhc3MgRE9N
UHJvbWlzZURlZmVycmVkOwogCi0vLyBBdWRpb0NvbnRleHQgaXMgdGhlIGNvcm5lcnN0b25lIG9m
IHRoZSB3ZWIgYXVkaW8gQVBJIGFuZCBhbGwgQXVkaW9Ob2RlcyBhcmUgY3JlYXRlZCBmcm9tIGl0
LgotLy8gRm9yIHRocmVhZCBzYWZldHkgYmV0d2VlbiB0aGUgYXVkaW8gdGhyZWFkIGFuZCB0aGUg
bWFpbiB0aHJlYWQsIGl0IGhhcyBhIHJlbmRlcmluZyBncmFwaCBsb2NraW5nIG1lY2hhbmlzbS4g
Ci0KLWNsYXNzIEF1ZGlvQ29udGV4dAorY2xhc3MgQXVkaW9Db250ZXh0QmFzZQogICAgIDogcHVi
bGljIEFjdGl2ZURPTU9iamVjdAogICAgICwgcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPEF1
ZGlvQ29udGV4dD4KICAgICAsIHB1YmxpYyBFdmVudFRhcmdldFdpdGhJbmxpbmVEYXRhCiAgICAg
LCBwdWJsaWMgTWVkaWFDYW5TdGFydExpc3RlbmVyCiAgICAgLCBwdWJsaWMgTWVkaWFQcm9kdWNl
cgotICAgICwgcHJpdmF0ZSBQbGF0Zm9ybU1lZGlhU2Vzc2lvbkNsaWVudAotICAgICwgcHJpdmF0
ZSBWaXNpYmlsaXR5Q2hhbmdlQ2xpZW50CiAjaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECi0gICAg
LCBwcml2YXRlIExvZ2dlckhlbHBlcgorICAgICwgcHVibGljIExvZ2dlckhlbHBlcgorI2VuZGlm
Cit7CisgICAgV1RGX01BS0VfSVNPX0FMTE9DQVRFRChBdWRpb0NvbnRleHRCYXNlKTsKK3B1Ymxp
YzoKKyAgICB2aXJ0dWFsIH5BdWRpb0NvbnRleHRCYXNlKCkgPSBkZWZhdWx0OworCisgICAgLy8g
UmVjb25jaWxlIHJlZi9kZXJlZiB3aGljaCBhcmUgZGVmaW5lZCBib3RoIGluIFRocmVhZFNhZmVS
ZWZDb3VudGVkIGFuZCBFdmVudFRhcmdldC4KKyAgICB1c2luZyBUaHJlYWRTYWZlUmVmQ291bnRl
ZDo6cmVmOworICAgIHVzaW5nIFRocmVhZFNhZmVSZWZDb3VudGVkOjpkZXJlZjsKKworICAgIERv
Y3VtZW50KiBkb2N1bWVudCgpIGNvbnN0OworCisgICAgdmlydHVhbCBib29sIGlzSW5pdGlhbGl6
ZWQoKSBjb25zdCA9IDA7CisKKyAgICB2aXJ0dWFsIHNpemVfdCBjdXJyZW50U2FtcGxlRnJhbWUo
KSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBmbG9hdCBzYW1wbGVSYXRlKCkgY29uc3QgPSAwOwor
ICAgIHZpcnR1YWwgZG91YmxlIGN1cnJlbnRUaW1lKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwg
Ym9vbCBpc0dyYXBoT3duZXIoKSBjb25zdCA9IDA7CisKKyAgICB2aXJ0dWFsIHZvaWQgc2V0QXVk
aW9UaHJlYWQoVGhyZWFkJikgPSAwOworICAgIHZpcnR1YWwgYm9vbCBpc0F1ZGlvVGhyZWFkKCkg
Y29uc3QgPSAwOworICAgIHZpcnR1YWwgYm9vbCBpc0F1ZGlvVGhyZWFkRmluaXNoZWQoKSA9IDA7
CisKKyAgICB2aXJ0dWFsIHZvaWQgaXNQbGF5aW5nQXVkaW9EaWRDaGFuZ2UoKSA9IDA7CisgICAg
dmlydHVhbCB2b2lkIG5vZGVXaWxsQmVnaW5QbGF5YmFjaygpID0gMDsKKworICAgIHZpcnR1YWwg
dm9pZCBwb3N0VGFzayhXVEY6OkZ1bmN0aW9uPHZvaWQoKT4mJikgPSAwOworICAgIHZpcnR1YWwg
Ym9vbCBpc1N0b3BwZWQoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBjb25zdCBTZWN1cml0eU9y
aWdpbiogb3JpZ2luKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgdm9pZCBhZGRDb25zb2xlTWVz
c2FnZShNZXNzYWdlU291cmNlLCBNZXNzYWdlTGV2ZWwsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSkg
PSAwOworCisgICAgdmlydHVhbCB2b2lkIG1hcmtGb3JEZWxldGlvbihBdWRpb05vZGUmKSA9IDA7
CisgICAgdmlydHVhbCB2b2lkIGRlbGV0ZU1hcmtlZE5vZGVzKCkgPSAwOworCisgICAgdmlydHVh
bCB2b2lkIGhhbmRsZVByZVJlbmRlclRhc2tzKCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBoYW5k
bGVQb3N0UmVuZGVyVGFza3MoKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHByb2Nlc3NBdXRvbWF0
aWNQdWxsTm9kZXMoc2l6ZV90IGZyYW1lc1RvUHJvY2VzcykgPSAwOworICAgIHZpcnR1YWwgdm9p
ZCBhZGREZWZlcnJlZEZpbmlzaERlcmVmKEF1ZGlvTm9kZSopID0gMDsKKworICAgIHZpcnR1YWwg
dm9pZCByZW1vdmVNYXJrZWRTdW1taW5nSnVuY3Rpb24oQXVkaW9TdW1taW5nSnVuY3Rpb24qKSA9
IDA7CisgICAgdmlydHVhbCB2b2lkIG1hcmtTdW1taW5nSnVuY3Rpb25EaXJ0eShBdWRpb1N1bW1p
bmdKdW5jdGlvbiopID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgbWFya0F1ZGlvTm9kZU91dHB1dERp
cnR5KEF1ZGlvTm9kZU91dHB1dCopID0gMDsKKworICAgIGVudW0gQmVoYXZpb3JSZXN0cmljdGlv
bkZsYWdzIHsKKyAgICAgICAgTm9SZXN0cmljdGlvbnMgPSAwLAorICAgICAgICBSZXF1aXJlVXNl
ckdlc3R1cmVGb3JBdWRpb1N0YXJ0UmVzdHJpY3Rpb24gPSAxIDw8IDAsCisgICAgICAgIFJlcXVp
cmVQYWdlQ29uc2VudEZvckF1ZGlvU3RhcnRSZXN0cmljdGlvbiA9IDEgPDwgMSwKKyAgICB9Owor
ICAgIHR5cGVkZWYgdW5zaWduZWQgQmVoYXZpb3JSZXN0cmljdGlvbnM7CisgICAgdmlydHVhbCBC
ZWhhdmlvclJlc3RyaWN0aW9ucyBiZWhhdmlvclJlc3RyaWN0aW9ucygpIGNvbnN0ID0gMDsKKyAg
ICB2aXJ0dWFsIHZvaWQgYWRkQmVoYXZpb3JSZXN0cmljdGlvbihCZWhhdmlvclJlc3RyaWN0aW9u
cykgPSAwOworICAgIHZpcnR1YWwgdm9pZCByZW1vdmVCZWhhdmlvclJlc3RyaWN0aW9uKEJlaGF2
aW9yUmVzdHJpY3Rpb25zKSA9IDA7CisKKyNpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKKyAgICB2
aXJ0dWFsIGNvbnN0IHZvaWQqIG5leHRBdWRpb05vZGVMb2dJZGVudGlmaWVyKCkgPSAwOworICAg
IHZpcnR1YWwgY29uc3Qgdm9pZCogbmV4dEF1ZGlvUGFyYW1ldGVyTG9nSWRlbnRpZmllcigpID0g
MDsKICNlbmRpZgorCisgICAgdmlydHVhbCB2b2lkIGFkZEF1dG9tYXRpY1B1bGxOb2RlKEF1ZGlv
Tm9kZSYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlQXV0b21hdGljUHVsbE5vZGUoQXVk
aW9Ob2RlJikgPSAwOworCisgICAgdmlydHVhbCB2b2lkIG5vdGlmeU5vZGVGaW5pc2hlZFByb2Nl
c3NpbmcoQXVkaW9Ob2RlKikgPSAwOworCisgICAgdmlydHVhbCB2b2lkIGZpbmlzaGVkUmVuZGVy
aW5nKGJvb2wgZGlkUmVuZGVyaW5nKSA9IDA7CisKKyAgICB2aXJ0dWFsIHZvaWQgaW5jcmVtZW50
Q29ubmVjdGlvbkNvdW50KCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBpbmNyZW1lbnRBY3RpdmVT
b3VyY2VDb3VudCgpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZGVjcmVtZW50QWN0aXZlU291cmNl
Q291bnQoKSA9IDA7CisKKyAgICB2aXJ0dWFsIGJvb2wgaXNPZmZsaW5lQ29udGV4dCgpIGNvbnN0
ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgaXNBdWRpb0NvbnRleHQoKSBjb25zdCA9IDA7CisgICAg
dmlydHVhbCBib29sIGlzV2ViS2l0QXVkaW9Db250ZXh0KCkgY29uc3QgPSAwOworCisgICAgLy8g
bXVzdFJlbGVhc2VMb2NrIGlzIHNldCB0byB0cnVlIGlmIHdlIGFjcXVpcmVkIHRoZSBsb2NrIGlu
IHRoaXMgbWV0aG9kIGNhbGwgYW5kIGNhbGxlciBtdXN0IHVubG9jaygpLCBmYWxzZSBpZiBpdCB3
YXMgcHJldmlvdXNseSBhY3F1aXJlZC4KKyAgICB2aXJ0dWFsIHZvaWQgbG9jayhib29sJiBtdXN0
UmVsZWFzZUxvY2spID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgdHJ5TG9jayhib29sJiBtdXN0UmVs
ZWFzZUxvY2spID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgdW5sb2NrKCkgPSAwOworCisgICAgY2xh
c3MgQXV0b0xvY2tlciB7CisgICAgcHVibGljOgorICAgICAgICBleHBsaWNpdCBBdXRvTG9ja2Vy
KEF1ZGlvQ29udGV4dEJhc2UmIGNvbnRleHQpCisgICAgICAgICAgICA6IG1fY29udGV4dChjb250
ZXh0KQorICAgICAgICB7CisgICAgICAgICAgICBtX2NvbnRleHQubG9jayhtX211c3RSZWxlYXNl
TG9jayk7CisgICAgICAgIH0KKworICAgICAgICB+QXV0b0xvY2tlcigpCisgICAgICAgIHsKKyAg
ICAgICAgICAgIGlmIChtX211c3RSZWxlYXNlTG9jaykKKyAgICAgICAgICAgICAgICBtX2NvbnRl
eHQudW5sb2NrKCk7CisgICAgICAgIH0KKworICAgIHByaXZhdGU6CisgICAgICAgIEF1ZGlvQ29u
dGV4dEJhc2UmIG1fY29udGV4dDsKKyAgICAgICAgYm9vbCBtX211c3RSZWxlYXNlTG9jazsKKyAg
ICB9OworCisgICAgLy8gRXZlbnRUYXJnZXQKKyAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBz
Y3JpcHRFeGVjdXRpb25Db250ZXh0KCkgY29uc3QgZmluYWw7CisgICAgdm9pZCByZWZFdmVudFRh
cmdldCgpIG92ZXJyaWRlIHsgcmVmKCk7IH0KKyAgICB2b2lkIGRlcmVmRXZlbnRUYXJnZXQoKSBv
dmVycmlkZSB7IGRlcmVmKCk7IH0KKworcHJvdGVjdGVkOgorICAgIGV4cGxpY2l0IEF1ZGlvQ29u
dGV4dEJhc2UoRG9jdW1lbnQmKTsKK307CisKKy8vIEF1ZGlvQ29udGV4dCBpcyB0aGUgY29ybmVy
c3RvbmUgb2YgdGhlIHdlYiBhdWRpbyBBUEkgYW5kIGFsbCBBdWRpb05vZGVzIGFyZSBjcmVhdGVk
IGZyb20gaXQuCisvLyBGb3IgdGhyZWFkIHNhZmV0eSBiZXR3ZWVuIHRoZSBhdWRpbyB0aHJlYWQg
YW5kIHRoZSBtYWluIHRocmVhZCwgaXQgaGFzIGEgcmVuZGVyaW5nIGdyYXBoIGxvY2tpbmcgbWVj
aGFuaXNtLiAKKworY2xhc3MgQXVkaW9Db250ZXh0CisgICAgOiBwdWJsaWMgQXVkaW9Db250ZXh0
QmFzZQorICAgICwgcHJpdmF0ZSBQbGF0Zm9ybU1lZGlhU2Vzc2lvbkNsaWVudAorICAgICwgcHJp
dmF0ZSBWaXNpYmlsaXR5Q2hhbmdlQ2xpZW50CiB7CiAgICAgV1RGX01BS0VfSVNPX0FMTE9DQVRF
RChBdWRpb0NvbnRleHQpOwogcHVibGljOgpAQCAtMTAxLDIyICsyMDksMjAgQEAgcHVibGljOgog
CiAgICAgdmlydHVhbCB+QXVkaW9Db250ZXh0KCk7CiAKLSAgICBib29sIGlzSW5pdGlhbGl6ZWQo
KSBjb25zdDsKKyAgICBib29sIGlzSW5pdGlhbGl6ZWQoKSBjb25zdCBmaW5hbDsKICAgICAKLSAg
ICBib29sIGlzT2ZmbGluZUNvbnRleHQoKSBjb25zdCB7IHJldHVybiBtX2lzT2ZmbGluZUNvbnRl
eHQ7IH0KLQotICAgIERvY3VtZW50KiBkb2N1bWVudCgpIGNvbnN0OyAvLyBBU1NFUlRzIGlmIGRv
Y3VtZW50IG5vIGxvbmdlciBleGlzdHMuCisgICAgYm9vbCBpc09mZmxpbmVDb250ZXh0KCkgY29u
c3QgZmluYWwgeyByZXR1cm4gbV9pc09mZmxpbmVDb250ZXh0OyB9CiAKICAgICBEb2N1bWVudElk
ZW50aWZpZXIgaG9zdGluZ0RvY3VtZW50SWRlbnRpZmllcigpIGNvbnN0IGZpbmFsOwogCiAgICAg
QXVkaW9EZXN0aW5hdGlvbk5vZGUqIGRlc3RpbmF0aW9uKCkgeyByZXR1cm4gbV9kZXN0aW5hdGlv
bk5vZGUuZ2V0KCk7IH0KLSAgICBzaXplX3QgY3VycmVudFNhbXBsZUZyYW1lKCkgY29uc3QgeyBy
ZXR1cm4gbV9kZXN0aW5hdGlvbk5vZGUgPyBtX2Rlc3RpbmF0aW9uTm9kZS0+Y3VycmVudFNhbXBs
ZUZyYW1lKCkgOiAwOyB9Ci0gICAgZG91YmxlIGN1cnJlbnRUaW1lKCkgY29uc3QgeyByZXR1cm4g
bV9kZXN0aW5hdGlvbk5vZGUgPyBtX2Rlc3RpbmF0aW9uTm9kZS0+Y3VycmVudFRpbWUoKSA6IDAu
OyB9Ci0gICAgZmxvYXQgc2FtcGxlUmF0ZSgpIGNvbnN0IHsgcmV0dXJuIG1fZGVzdGluYXRpb25O
b2RlID8gbV9kZXN0aW5hdGlvbk5vZGUtPnNhbXBsZVJhdGUoKSA6IDAuZjsgfQorICAgIHNpemVf
dCBjdXJyZW50U2FtcGxlRnJhbWUoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2Rlc3RpbmF0aW9u
Tm9kZSA/IG1fZGVzdGluYXRpb25Ob2RlLT5jdXJyZW50U2FtcGxlRnJhbWUoKSA6IDA7IH0KKyAg
ICBkb3VibGUgY3VycmVudFRpbWUoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2Rlc3RpbmF0aW9u
Tm9kZSA/IG1fZGVzdGluYXRpb25Ob2RlLT5jdXJyZW50VGltZSgpIDogMC47IH0KKyAgICBmbG9h
dCBzYW1wbGVSYXRlKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9kZXN0aW5hdGlvbk5vZGUgPyBt
X2Rlc3RpbmF0aW9uTm9kZS0+c2FtcGxlUmF0ZSgpIDogMC5mOyB9CiAgICAgdW5zaWduZWQgbG9u
ZyBhY3RpdmVTb3VyY2VDb3VudCgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PHVuc2lnbmVk
IGxvbmc+KG1fYWN0aXZlU291cmNlQ291bnQpOyB9CiAKLSAgICB2b2lkIGluY3JlbWVudEFjdGl2
ZVNvdXJjZUNvdW50KCk7Ci0gICAgdm9pZCBkZWNyZW1lbnRBY3RpdmVTb3VyY2VDb3VudCgpOwor
ICAgIHZvaWQgaW5jcmVtZW50QWN0aXZlU291cmNlQ291bnQoKSBmaW5hbDsKKyAgICB2b2lkIGRl
Y3JlbWVudEFjdGl2ZVNvdXJjZUNvdW50KCkgZmluYWw7CiAgICAgCiAgICAgRXhjZXB0aW9uT3I8
UmVmPEF1ZGlvQnVmZmVyPj4gY3JlYXRlQnVmZmVyKHVuc2lnbmVkIG51bWJlck9mQ2hhbm5lbHMs
IHNpemVfdCBudW1iZXJPZkZyYW1lcywgZmxvYXQgc2FtcGxlUmF0ZSk7CiAgICAgRXhjZXB0aW9u
T3I8UmVmPEF1ZGlvQnVmZmVyPj4gY3JlYXRlQnVmZmVyKEFycmF5QnVmZmVyJiwgYm9vbCBtaXhU
b01vbm8pOwpAQCAtMTMwLDcgKzIzNiw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHJlc3VtZVJlbmRl
cmluZyhET01Qcm9taXNlRGVmZXJyZWQ8dm9pZD4mJik7CiAgICAgdm9pZCBjbG9zZShET01Qcm9t
aXNlRGVmZXJyZWQ8dm9pZD4mJik7CiAKLSAgICBlbnVtIGNsYXNzIFN0YXRlIHsgU3VzcGVuZGVk
LCBSdW5uaW5nLCBJbnRlcnJ1cHRlZCwgQ2xvc2VkIH07CisgICAgdXNpbmcgU3RhdGUgPSBBdWRp
b0NvbnRleHRTdGF0ZTsKICAgICBTdGF0ZSBzdGF0ZSgpIGNvbnN0OwogICAgIGJvb2wgaXNDbG9z
ZWQoKSBjb25zdCB7IHJldHVybiBtX3N0YXRlID09IFN0YXRlOjpDbG9zZWQ7IH0KIApAQCAtMTYw
LDMxICsyNjYsMzEgQEAgcHVibGljOgogICAgIEV4Y2VwdGlvbk9yPFJlZjxQZXJpb2RpY1dhdmU+
PiBjcmVhdGVQZXJpb2RpY1dhdmUoRmxvYXQzMkFycmF5JiByZWFsLCBGbG9hdDMyQXJyYXkmIGlt
YWdpbmFyeSk7CiAKICAgICAvLyBXaGVuIGEgc291cmNlIG5vZGUgaGFzIG5vIG1vcmUgcHJvY2Vz
c2luZyB0byBkbyAoaGFzIGZpbmlzaGVkIHBsYXlpbmcpLCB0aGVuIGl0IHRlbGxzIHRoZSBjb250
ZXh0IHRvIGRlcmVmZXJlbmNlIGl0LgotICAgIHZvaWQgbm90aWZ5Tm9kZUZpbmlzaGVkUHJvY2Vz
c2luZyhBdWRpb05vZGUqKTsKKyAgICB2b2lkIG5vdGlmeU5vZGVGaW5pc2hlZFByb2Nlc3Npbmco
QXVkaW9Ob2RlKikgZmluYWw7CiAKICAgICAvLyBDYWxsZWQgYXQgdGhlIHN0YXJ0IG9mIGVhY2gg
cmVuZGVyIHF1YW50dW0uCi0gICAgdm9pZCBoYW5kbGVQcmVSZW5kZXJUYXNrcygpOworICAgIHZv
aWQgaGFuZGxlUHJlUmVuZGVyVGFza3MoKSBmaW5hbDsKIAogICAgIC8vIENhbGxlZCBhdCB0aGUg
ZW5kIG9mIGVhY2ggcmVuZGVyIHF1YW50dW0uCi0gICAgdm9pZCBoYW5kbGVQb3N0UmVuZGVyVGFz
a3MoKTsKKyAgICB2b2lkIGhhbmRsZVBvc3RSZW5kZXJUYXNrcygpIGZpbmFsOwogCiAgICAgLy8g
Q2FsbGVkIHBlcmlvZGljYWxseSBhdCB0aGUgZW5kIG9mIGVhY2ggcmVuZGVyIHF1YW50dW0gdG8g
ZGVyZWZlcmVuY2UgZmluaXNoZWQgc291cmNlIG5vZGVzLgogICAgIHZvaWQgZGVyZWZGaW5pc2hl
ZFNvdXJjZU5vZGVzKCk7CiAKICAgICAvLyBXZSBzY2hlZHVsZSBkZWxldGlvbiBvZiBhbGwgbWFy
a2VkIG5vZGVzIGF0IHRoZSBlbmQgb2YgZWFjaCByZWFsdGltZSByZW5kZXIgcXVhbnR1bS4KLSAg
ICB2b2lkIG1hcmtGb3JEZWxldGlvbihBdWRpb05vZGUmKTsKLSAgICB2b2lkIGRlbGV0ZU1hcmtl
ZE5vZGVzKCk7CisgICAgdm9pZCBtYXJrRm9yRGVsZXRpb24oQXVkaW9Ob2RlJikgZmluYWw7Cisg
ICAgdm9pZCBkZWxldGVNYXJrZWROb2RlcygpIGZpbmFsOwogCiAgICAgLy8gQXVkaW9Db250ZXh0
IGNhbiBwdWxsIG5vZGUocykgYXQgdGhlIGVuZCBvZiBlYWNoIHJlbmRlciBxdWFudHVtIGV2ZW4g
d2hlbiB0aGV5IGFyZSBub3QgY29ubmVjdGVkIHRvIGFueSBkb3duc3RyZWFtIG5vZGVzLgogICAg
IC8vIFRoZXNlIHR3byBtZXRob2RzIGFyZSBjYWxsZWQgYnkgdGhlIG5vZGVzIHdobyB3YW50IHRv
IGFkZC9yZW1vdmUgdGhlbXNlbHZlcyBpbnRvL2Zyb20gdGhlIGF1dG9tYXRpYyBwdWxsIGxpc3Rz
LgotICAgIHZvaWQgYWRkQXV0b21hdGljUHVsbE5vZGUoQXVkaW9Ob2RlJik7Ci0gICAgdm9pZCBy
ZW1vdmVBdXRvbWF0aWNQdWxsTm9kZShBdWRpb05vZGUmKTsKKyAgICB2b2lkIGFkZEF1dG9tYXRp
Y1B1bGxOb2RlKEF1ZGlvTm9kZSYpIGZpbmFsOworICAgIHZvaWQgcmVtb3ZlQXV0b21hdGljUHVs
bE5vZGUoQXVkaW9Ob2RlJikgZmluYWw7CiAKICAgICAvLyBDYWxsZWQgcmlnaHQgYmVmb3JlIGhh
bmRsZVBvc3RSZW5kZXJUYXNrcygpIHRvIGhhbmRsZSBub2RlcyB3aGljaCBuZWVkIHRvIGJlIHB1
bGxlZCBldmVuIHdoZW4gdGhleSBhcmUgbm90IGNvbm5lY3RlZCB0byBhbnl0aGluZy4KLSAgICB2
b2lkIHByb2Nlc3NBdXRvbWF0aWNQdWxsTm9kZXMoc2l6ZV90IGZyYW1lc1RvUHJvY2Vzcyk7Cisg
ICAgdm9pZCBwcm9jZXNzQXV0b21hdGljUHVsbE5vZGVzKHNpemVfdCBmcmFtZXNUb1Byb2Nlc3Mp
IGZpbmFsOwogCiAgICAgLy8gS2VlcHMgdHJhY2sgb2YgdGhlIG51bWJlciBvZiBjb25uZWN0aW9u
cyBtYWRlLgotICAgIHZvaWQgaW5jcmVtZW50Q29ubmVjdGlvbkNvdW50KCkKKyAgICB2b2lkIGlu
Y3JlbWVudENvbm5lY3Rpb25Db3VudCgpIGZpbmFsCiAgICAgewogICAgICAgICBBU1NFUlQoaXNN
YWluVGhyZWFkKCkpOwogICAgICAgICBtX2Nvbm5lY3Rpb25Db3VudCsrOwpAQCAtMTk2LDEwMyAr
MzAyLDcwIEBAIHB1YmxpYzoKICAgICAvLyBUaHJlYWQgU2FmZXR5IGFuZCBHcmFwaCBMb2NraW5n
OgogICAgIC8vCiAgICAgCi0gICAgdm9pZCBzZXRBdWRpb1RocmVhZChUaHJlYWQmIHRocmVhZCkg
eyBtX2F1ZGlvVGhyZWFkID0gJnRocmVhZDsgfSAvLyBGSVhNRTogY2hlY2sgZWl0aGVyIG5vdCBp
bml0aWFsaXplZCBvciB0aGUgc2FtZQorICAgIHZvaWQgc2V0QXVkaW9UaHJlYWQoVGhyZWFkJiB0
aHJlYWQpIGZpbmFsIHsgbV9hdWRpb1RocmVhZCA9ICZ0aHJlYWQ7IH0gLy8gRklYTUU6IGNoZWNr
IGVpdGhlciBub3QgaW5pdGlhbGl6ZWQgb3IgdGhlIHNhbWUKICAgICBUaHJlYWQqIGF1ZGlvVGhy
ZWFkKCkgY29uc3QgeyByZXR1cm4gbV9hdWRpb1RocmVhZDsgfQotICAgIGJvb2wgaXNBdWRpb1Ro
cmVhZCgpIGNvbnN0OworICAgIGJvb2wgaXNBdWRpb1RocmVhZCgpIGNvbnN0IGZpbmFsOwogCiAg
ICAgLy8gUmV0dXJucyB0cnVlIG9ubHkgYWZ0ZXIgdGhlIGF1ZGlvIHRocmVhZCBoYXMgYmVlbiBz
dGFydGVkIGFuZCB0aGVuIHNodXRkb3duLgotICAgIGJvb2wgaXNBdWRpb1RocmVhZEZpbmlzaGVk
KCkgeyByZXR1cm4gbV9pc0F1ZGlvVGhyZWFkRmluaXNoZWQ7IH0KKyAgICBib29sIGlzQXVkaW9U
aHJlYWRGaW5pc2hlZCgpIGZpbmFsIHsgcmV0dXJuIG1faXNBdWRpb1RocmVhZEZpbmlzaGVkOyB9
CiAgICAgCiAgICAgLy8gbXVzdFJlbGVhc2VMb2NrIGlzIHNldCB0byB0cnVlIGlmIHdlIGFjcXVp
cmVkIHRoZSBsb2NrIGluIHRoaXMgbWV0aG9kIGNhbGwgYW5kIGNhbGxlciBtdXN0IHVubG9jaygp
LCBmYWxzZSBpZiBpdCB3YXMgcHJldmlvdXNseSBhY3F1aXJlZC4KLSAgICB2b2lkIGxvY2soYm9v
bCYgbXVzdFJlbGVhc2VMb2NrKTsKKyAgICB2b2lkIGxvY2soYm9vbCYgbXVzdFJlbGVhc2VMb2Nr
KSBmaW5hbDsKIAogICAgIC8vIFJldHVybnMgdHJ1ZSBpZiB3ZSBvd24gdGhlIGxvY2suCiAgICAg
Ly8gbXVzdFJlbGVhc2VMb2NrIGlzIHNldCB0byB0cnVlIGlmIHdlIGFjcXVpcmVkIHRoZSBsb2Nr
IGluIHRoaXMgbWV0aG9kIGNhbGwgYW5kIGNhbGxlciBtdXN0IHVubG9jaygpLCBmYWxzZSBpZiBp
dCB3YXMgcHJldmlvdXNseSBhY3F1aXJlZC4KLSAgICBib29sIHRyeUxvY2soYm9vbCYgbXVzdFJl
bGVhc2VMb2NrKTsKKyAgICBib29sIHRyeUxvY2soYm9vbCYgbXVzdFJlbGVhc2VMb2NrKSBmaW5h
bDsKIAotICAgIHZvaWQgdW5sb2NrKCk7CisgICAgdm9pZCB1bmxvY2soKSBmaW5hbDsKIAogICAg
IC8vIFJldHVybnMgdHJ1ZSBpZiB0aGlzIHRocmVhZCBvd25zIHRoZSBjb250ZXh0J3MgbG9jay4K
LSAgICBib29sIGlzR3JhcGhPd25lcigpIGNvbnN0OworICAgIGJvb2wgaXNHcmFwaE93bmVyKCkg
Y29uc3QgZmluYWw7CiAKICAgICAvLyBSZXR1cm5zIHRoZSBtYXhpbXVtIG51bWJlciBvZiBjaGFu
bmVscyB3ZSBjYW4gc3VwcG9ydC4KICAgICBzdGF0aWMgdW5zaWduZWQgbWF4TnVtYmVyT2ZDaGFu
bmVscygpIHsgcmV0dXJuIE1heE51bWJlck9mQ2hhbm5lbHM7IH0KLQotICAgIGNsYXNzIEF1dG9M
b2NrZXIgewotICAgIHB1YmxpYzoKLSAgICAgICAgZXhwbGljaXQgQXV0b0xvY2tlcihBdWRpb0Nv
bnRleHQmIGNvbnRleHQpCi0gICAgICAgICAgICA6IG1fY29udGV4dChjb250ZXh0KQotICAgICAg
ICB7Ci0gICAgICAgICAgICBtX2NvbnRleHQubG9jayhtX211c3RSZWxlYXNlTG9jayk7Ci0gICAg
ICAgIH0KLSAgICAgICAgCi0gICAgICAgIH5BdXRvTG9ja2VyKCkKLSAgICAgICAgewotICAgICAg
ICAgICAgaWYgKG1fbXVzdFJlbGVhc2VMb2NrKQotICAgICAgICAgICAgICAgIG1fY29udGV4dC51
bmxvY2soKTsKLSAgICAgICAgfQotCi0gICAgcHJpdmF0ZToKLSAgICAgICAgQXVkaW9Db250ZXh0
JiBtX2NvbnRleHQ7Ci0gICAgICAgIGJvb2wgbV9tdXN0UmVsZWFzZUxvY2s7Ci0gICAgfTsKICAg
ICAKICAgICAvLyBJbiBBdWRpb05vZGU6OmRlcmVmKCkgYSB0cnlMb2NrKCkgaXMgdXNlZCBmb3Ig
Y2FsbGluZyBmaW5pc2hEZXJlZigpLCBidXQgaWYgaXQgZmFpbHMga2VlcCB0cmFjayBoZXJlLgot
ICAgIHZvaWQgYWRkRGVmZXJyZWRGaW5pc2hEZXJlZihBdWRpb05vZGUqKTsKKyAgICB2b2lkIGFk
ZERlZmVycmVkRmluaXNoRGVyZWYoQXVkaW9Ob2RlKikgZmluYWw7CiAKICAgICAvLyBJbiB0aGUg
YXVkaW8gdGhyZWFkIGF0IHRoZSBzdGFydCBvZiBlYWNoIHJlbmRlciBjeWNsZSwgd2UnbGwgY2Fs
bCBoYW5kbGVEZWZlcnJlZEZpbmlzaERlcmVmcygpLgogICAgIHZvaWQgaGFuZGxlRGVmZXJyZWRG
aW5pc2hEZXJlZnMoKTsKIAogICAgIC8vIE9ubHkgYWNjZXNzZWQgd2hlbiB0aGUgZ3JhcGggbG9j
ayBpcyBoZWxkLgotICAgIHZvaWQgbWFya1N1bW1pbmdKdW5jdGlvbkRpcnR5KEF1ZGlvU3VtbWlu
Z0p1bmN0aW9uKik7Ci0gICAgdm9pZCBtYXJrQXVkaW9Ob2RlT3V0cHV0RGlydHkoQXVkaW9Ob2Rl
T3V0cHV0Kik7CisgICAgdm9pZCBtYXJrU3VtbWluZ0p1bmN0aW9uRGlydHkoQXVkaW9TdW1taW5n
SnVuY3Rpb24qKSBmaW5hbDsKKyAgICB2b2lkIG1hcmtBdWRpb05vZGVPdXRwdXREaXJ0eShBdWRp
b05vZGVPdXRwdXQqKSBmaW5hbDsKIAogICAgIC8vIE11c3QgYmUgY2FsbGVkIG9uIG1haW4gdGhy
ZWFkLgotICAgIHZvaWQgcmVtb3ZlTWFya2VkU3VtbWluZ0p1bmN0aW9uKEF1ZGlvU3VtbWluZ0p1
bmN0aW9uKik7CisgICAgdm9pZCByZW1vdmVNYXJrZWRTdW1taW5nSnVuY3Rpb24oQXVkaW9TdW1t
aW5nSnVuY3Rpb24qKSBmaW5hbDsKIAogICAgIC8vIEV2ZW50VGFyZ2V0Ci0gICAgRXZlbnRUYXJn
ZXRJbnRlcmZhY2UgZXZlbnRUYXJnZXRJbnRlcmZhY2UoKSBjb25zdCBmaW5hbCB7IHJldHVybiBB
dWRpb0NvbnRleHRFdmVudFRhcmdldEludGVyZmFjZVR5cGU7IH0KLQotICAgIC8vIFJlY29uY2ls
ZSByZWYvZGVyZWYgd2hpY2ggYXJlIGRlZmluZWQgYm90aCBpbiBUaHJlYWRTYWZlUmVmQ291bnRl
ZCBhbmQgRXZlbnRUYXJnZXQuCi0gICAgdXNpbmcgVGhyZWFkU2FmZVJlZkNvdW50ZWQ6OnJlZjsK
LSAgICB1c2luZyBUaHJlYWRTYWZlUmVmQ291bnRlZDo6ZGVyZWY7CisgICAgRXZlbnRUYXJnZXRJ
bnRlcmZhY2UgZXZlbnRUYXJnZXRJbnRlcmZhY2UoKSBjb25zdCBmaW5hbDsKIAogICAgIHZvaWQg
c3RhcnRSZW5kZXJpbmcoKTsKLSAgICB2b2lkIGZpbmlzaGVkUmVuZGVyaW5nKGJvb2wgZGlkUmVu
ZGVyaW5nKTsKKyAgICB2b2lkIGZpbmlzaGVkUmVuZGVyaW5nKGJvb2wgZGlkUmVuZGVyaW5nKSBm
aW5hbDsKIAogICAgIHN0YXRpYyB1bnNpZ25lZCBzX2hhcmR3YXJlQ29udGV4dENvdW50OwogCiAg
ICAgLy8gUmVzdHJpY3Rpb25zIHRvIGNoYW5nZSBkZWZhdWx0IGJlaGF2aW9ycy4KLSAgICBlbnVt
IEJlaGF2aW9yUmVzdHJpY3Rpb25GbGFncyB7Ci0gICAgICAgIE5vUmVzdHJpY3Rpb25zID0gMCwK
LSAgICAgICAgUmVxdWlyZVVzZXJHZXN0dXJlRm9yQXVkaW9TdGFydFJlc3RyaWN0aW9uID0gMSA8
PCAwLAotICAgICAgICBSZXF1aXJlUGFnZUNvbnNlbnRGb3JBdWRpb1N0YXJ0UmVzdHJpY3Rpb24g
PSAxIDw8IDEsCi0gICAgfTsKLSAgICB0eXBlZGVmIHVuc2lnbmVkIEJlaGF2aW9yUmVzdHJpY3Rp
b25zOwotCi0gICAgQmVoYXZpb3JSZXN0cmljdGlvbnMgYmVoYXZpb3JSZXN0cmljdGlvbnMoKSBj
b25zdCB7IHJldHVybiBtX3Jlc3RyaWN0aW9uczsgfQotICAgIHZvaWQgYWRkQmVoYXZpb3JSZXN0
cmljdGlvbihCZWhhdmlvclJlc3RyaWN0aW9ucyByZXN0cmljdGlvbikgeyBtX3Jlc3RyaWN0aW9u
cyB8PSByZXN0cmljdGlvbjsgfQotICAgIHZvaWQgcmVtb3ZlQmVoYXZpb3JSZXN0cmljdGlvbihC
ZWhhdmlvclJlc3RyaWN0aW9ucyByZXN0cmljdGlvbikgeyBtX3Jlc3RyaWN0aW9ucyAmPSB+cmVz
dHJpY3Rpb247IH0KKyAgICBCZWhhdmlvclJlc3RyaWN0aW9ucyBiZWhhdmlvclJlc3RyaWN0aW9u
cygpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fcmVzdHJpY3Rpb25zOyB9CisgICAgdm9pZCBhZGRC
ZWhhdmlvclJlc3RyaWN0aW9uKEJlaGF2aW9yUmVzdHJpY3Rpb25zIHJlc3RyaWN0aW9uKSBmaW5h
bCB7IG1fcmVzdHJpY3Rpb25zIHw9IHJlc3RyaWN0aW9uOyB9CisgICAgdm9pZCByZW1vdmVCZWhh
dmlvclJlc3RyaWN0aW9uKEJlaGF2aW9yUmVzdHJpY3Rpb25zIHJlc3RyaWN0aW9uKSBmaW5hbCB7
IG1fcmVzdHJpY3Rpb25zICY9IH5yZXN0cmljdGlvbjsgfQogCi0gICAgdm9pZCBpc1BsYXlpbmdB
dWRpb0RpZENoYW5nZSgpOworICAgIHZvaWQgaXNQbGF5aW5nQXVkaW9EaWRDaGFuZ2UoKSBmaW5h
bDsKIAotICAgIHZvaWQgbm9kZVdpbGxCZWdpblBsYXliYWNrKCk7CisgICAgdm9pZCBub2RlV2ls
bEJlZ2luUGxheWJhY2soKSBmaW5hbDsKIAogI2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRAogICAg
IGNvbnN0IExvZ2dlciYgbG9nZ2VyKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9sb2dnZXIuZ2V0
KCk7IH0KICAgICBjb25zdCB2b2lkKiBsb2dJZGVudGlmaWVyKCkgY29uc3QgZmluYWwgeyByZXR1
cm4gbV9sb2dJZGVudGlmaWVyOyB9CiAgICAgV1RGTG9nQ2hhbm5lbCYgbG9nQ2hhbm5lbCgpIGNv
bnN0IGZpbmFsOwotICAgIGNvbnN0IHZvaWQqIG5leHRBdWRpb05vZGVMb2dJZGVudGlmaWVyKCkg
eyByZXR1cm4gY2hpbGRMb2dJZGVudGlmaWVyKG1fbG9nSWRlbnRpZmllciwgKyttX25leHRBdWRp
b05vZGVJZGVudGlmaWVyKTsgfQotICAgIGNvbnN0IHZvaWQqIG5leHRBdWRpb1BhcmFtZXRlckxv
Z0lkZW50aWZpZXIoKSB7IHJldHVybiBjaGlsZExvZ0lkZW50aWZpZXIobV9sb2dJZGVudGlmaWVy
LCArK21fbmV4dEF1ZGlvUGFyYW1ldGVySWRlbnRpZmllcik7IH0KKyAgICBjb25zdCB2b2lkKiBu
ZXh0QXVkaW9Ob2RlTG9nSWRlbnRpZmllcigpIGZpbmFsIHsgcmV0dXJuIGNoaWxkTG9nSWRlbnRp
ZmllcihtX2xvZ0lkZW50aWZpZXIsICsrbV9uZXh0QXVkaW9Ob2RlSWRlbnRpZmllcik7IH0KKyAg
ICBjb25zdCB2b2lkKiBuZXh0QXVkaW9QYXJhbWV0ZXJMb2dJZGVudGlmaWVyKCkgZmluYWwgeyBy
ZXR1cm4gY2hpbGRMb2dJZGVudGlmaWVyKG1fbG9nSWRlbnRpZmllciwgKyttX25leHRBdWRpb1Bh
cmFtZXRlcklkZW50aWZpZXIpOyB9CiAjZW5kaWYKIAotICAgIHZvaWQgcG9zdFRhc2soV1RGOjpG
dW5jdGlvbjx2b2lkKCk+JiYpOwotICAgIGJvb2wgaXNTdG9wcGVkKCkgY29uc3QgeyByZXR1cm4g
bV9pc1N0b3BTY2hlZHVsZWQ7IH0KLSAgICBjb25zdCBTZWN1cml0eU9yaWdpbiogb3JpZ2luKCkg
Y29uc3Q7Ci0gICAgdm9pZCBhZGRDb25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNlLCBNZXNzYWdl
TGV2ZWwsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSk7Ci0KLSAgICAvLyBFdmVudFRhcmdldAotICAg
IFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSBjb25zdCBm
aW5hbDsKKyAgICB2b2lkIHBvc3RUYXNrKFdURjo6RnVuY3Rpb248dm9pZCgpPiYmKSBmaW5hbDsK
KyAgICBib29sIGlzU3RvcHBlZCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1faXNTdG9wU2NoZWR1
bGVkOyB9CisgICAgY29uc3QgU2VjdXJpdHlPcmlnaW4qIG9yaWdpbigpIGNvbnN0IGZpbmFsOwor
ICAgIHZvaWQgYWRkQ29uc29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZSwgTWVzc2FnZUxldmVsLCBj
b25zdCBTdHJpbmcmIG1lc3NhZ2UpIGZpbmFsOwogCiBwcm90ZWN0ZWQ6CiAgICAgZXhwbGljaXQg
QXVkaW9Db250ZXh0KERvY3VtZW50Jik7CkBAIC0zNjAsOSArNDMzLDggQEAgcHJpdmF0ZToKIAog
ICAgIHZvaWQgdmlzaWJpbGl0eVN0YXRlQ2hhbmdlZCgpIGZpbmFsOwogCi0gICAgLy8gRXZlbnRU
YXJnZXQKLSAgICB2b2lkIHJlZkV2ZW50VGFyZ2V0KCkgb3ZlcnJpZGUgeyByZWYoKTsgfQotICAg
IHZvaWQgZGVyZWZFdmVudFRhcmdldCgpIG92ZXJyaWRlIHsgZGVyZWYoKTsgfQorICAgIGJvb2wg
aXNBdWRpb0NvbnRleHQoKSBjb25zdCBmaW5hbCB7IHJldHVybiB0cnVlOyB9CisgICAgYm9vbCBp
c1dlYktpdEF1ZGlvQ29udGV4dCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIGZhbHNlOyB9CiAKICAg
ICB2b2lkIGhhbmRsZURpcnR5QXVkaW9TdW1taW5nSnVuY3Rpb25zKCk7CiAgICAgdm9pZCBoYW5k
bGVEaXJ0eUF1ZGlvTm9kZU91dHB1dHMoKTsKQEAgLTQ0NiwyMSArNTE4LDEzIEBAIHByaXZhdGU6
CiAgICAgUmVmUHRyPFBlbmRpbmdBY3Rpdml0eTxBdWRpb0NvbnRleHQ+PiBtX3BlbmRpbmdBY3Rp
dml0eTsKIH07CiAKLS8vIEZJWE1FOiBGaW5kIG91dCB3aHkgdGhlc2UgPT0vIT0gZnVuY3Rpb25z
IGFyZSBuZWVkZWQgYW5kIHJlbW92ZSB0aGVtIGlmIHBvc3NpYmxlLgotCi1pbmxpbmUgYm9vbCBv
cGVyYXRvcj09KGNvbnN0IEF1ZGlvQ29udGV4dCYgbGhzLCBjb25zdCBBdWRpb0NvbnRleHQmIHJo
cykKLXsKLSAgICByZXR1cm4gJmxocyA9PSAmcmhzOwotfQotCi1pbmxpbmUgYm9vbCBvcGVyYXRv
ciE9KGNvbnN0IEF1ZGlvQ29udGV4dCYgbGhzLCBjb25zdCBBdWRpb0NvbnRleHQmIHJocykKLXsK
LSAgICByZXR1cm4gJmxocyAhPSAmcmhzOwotfQotCiBpbmxpbmUgQXVkaW9Db250ZXh0OjpTdGF0
ZSBBdWRpb0NvbnRleHQ6OnN0YXRlKCkgY29uc3QKIHsKICAgICByZXR1cm4gbV9zdGF0ZTsKIH0K
IAogfSAvLyBXZWJDb3JlCisKK1NQRUNJQUxJWkVfVFlQRV9UUkFJVFNfQkVHSU4oV2ViQ29yZTo6
QXVkaW9Db250ZXh0KQorICAgIHN0YXRpYyBib29sIGlzVHlwZShjb25zdCBXZWJDb3JlOjpBdWRp
b0NvbnRleHRCYXNlJiBjb250ZXh0KSB7IHJldHVybiBjb250ZXh0LmlzQXVkaW9Db250ZXh0KCk7
IH0KK1NQRUNJQUxJWkVfVFlQRV9UUkFJVFNfRU5EKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0LmlkbCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0LmlkbAppbmRleCBlNzExODM5YjMzMzAwZGUzNDFj
MjMxYzRjYzk2ZTllNTc2MzI0MTM1Li5mMWQ0OWNhMzY4ZDY0NTA2YWJhYjU2OTc5MDllZTA5NzIx
YjVkOGNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlv
Q29udGV4dC5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0Nv
bnRleHQuaWRsCkBAIC0yMywxOSArMjMsMTEgQEAKICAqIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLWVudW0gQXVkaW9D
b250ZXh0U3RhdGUgewotICAgICJzdXNwZW5kZWQiLAotICAgICJydW5uaW5nIiwKLSAgICAiaW50
ZXJydXB0ZWQiLAotICAgICJjbG9zZWQiCi19OwotCiBbCiAgICAgQWN0aXZlRE9NT2JqZWN0LAog
ICAgIENvbmRpdGlvbmFsPVdFQl9BVURJTywKLSAgICBFbmFibGVkQnlTZXR0aW5nPVdlYkF1ZGlv
LAorICAgIEVuYWJsZWRCeVNldHRpbmc9TW9kZXJuVW5wcmVmaXhlZFdlYkF1ZGlvLAogICAgIEV4
cG9ydE1hY3JvPVdFQkNPUkVfRVhQT1JULAotICAgIEludGVyZmFjZU5hbWU9d2Via2l0QXVkaW9D
b250ZXh0LAogXSBpbnRlcmZhY2UgQXVkaW9Db250ZXh0IDogRXZlbnRUYXJnZXQgewogICAgIFtD
YWxsV2l0aD1Eb2N1bWVudCwgTWF5VGhyb3dFeGNlcHRpb25dIGNvbnN0cnVjdG9yKCk7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0U3Rh
dGUuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0U3RhdGUu
aApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi4xNjAxMzExMDhmYTZhNGMxNGE5YWQ2MTdiOTJjYTIxNDc0NDg3ODBiCi0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0Nv
bnRleHRTdGF0ZS5oCkBAIC0wLDAgKzEsMzIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAg
R29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNi0y
MDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFS
RQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OCisgKiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKKyAqIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25j
ZQorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2VudW0gY2xhc3MgQXVkaW9Db250ZXh0U3RhdGUg
eyBTdXNwZW5kZWQsIFJ1bm5pbmcsIEludGVycnVwdGVkLCBDbG9zZWQgfTsKKworfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0NvbnRleHRTdGF0ZS5p
ZGwgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQ29udGV4dFN0YXRlLmlk
bApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi5jOGQwOGJkMmI1NjNjZDgyNmVjY2E3Zjk3OTQ0YzcxM2E4YTdlZjRiCi0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0Nv
bnRleHRTdGF0ZS5pZGwKQEAgLTAsMCArMSwzMSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
MCwgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAx
MSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUK
KyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTgorICogQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTCisgKiBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCitlbnVtIEF1ZGlvQ29u
dGV4dFN0YXRlIHsKKyAgICAic3VzcGVuZGVkIiwKKyAgICAicnVubmluZyIsCisgICAgImludGVy
cnVwdGVkIiwKKyAgICAiY2xvc2VkIgorfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViYXVkaW8vQXVkaW9EZXN0aW5hdGlvbk5vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJhdWRpby9BdWRpb0Rlc3RpbmF0aW9uTm9kZS5jcHAKaW5kZXggZDlhYmI5Nzc3
YTlkMjVlZWFmMjQyZmY0ZmZmYzVlYzVlZjQ4NmM0ZS4uNjc3NjE3ZWNiMzM4ZGE4OTFhNzEzYWU4
OGEzZjVmNjRmNmZkODQ5YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJh
dWRpby9BdWRpb0Rlc3RpbmF0aW9uTm9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJhdWRpby9BdWRpb0Rlc3RpbmF0aW9uTm9kZS5jcHAKQEAgLTM5LDcgKzM5LDcgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogICAgIAogV1RGX01BS0VfSVNPX0FMTE9DQVRFRF9JTVBMKEF1ZGlv
RGVzdGluYXRpb25Ob2RlKTsKIAotQXVkaW9EZXN0aW5hdGlvbk5vZGU6OkF1ZGlvRGVzdGluYXRp
b25Ob2RlKEF1ZGlvQ29udGV4dCYgY29udGV4dCwgZmxvYXQgc2FtcGxlUmF0ZSkKK0F1ZGlvRGVz
dGluYXRpb25Ob2RlOjpBdWRpb0Rlc3RpbmF0aW9uTm9kZShBdWRpb0NvbnRleHRCYXNlJiBjb250
ZXh0LCBmbG9hdCBzYW1wbGVSYXRlKQogICAgIDogQXVkaW9Ob2RlKGNvbnRleHQsIHNhbXBsZVJh
dGUpCiAgICAgLCBtX2N1cnJlbnRTYW1wbGVGcmFtZSgwKQogICAgICwgbV9pc1NpbGVudCh0cnVl
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0Rlc3Rp
bmF0aW9uTm9kZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0Rlc3Rp
bmF0aW9uTm9kZS5oCmluZGV4IDg5NDhmNGVlNzBhNWMwZTgxYThlODNjMWYwY2Q1ZmNmNDUxYWNj
NjAuLjM3NmY0NjI3MTJkN2YxYzJhZThkNTIwMTFmYTJhMTVmNmUxOGFlYzcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9EZXN0aW5hdGlvbk5vZGUuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvRGVzdGluYXRpb25Ob2Rl
LmgKQEAgLTM2LDcgKzM2LDcgQEAgY2xhc3MgQXVkaW9Db250ZXh0OwogY2xhc3MgQXVkaW9EZXN0
aW5hdGlvbk5vZGUgOiBwdWJsaWMgQXVkaW9Ob2RlLCBwdWJsaWMgQXVkaW9JT0NhbGxiYWNrIHsK
ICAgICBXVEZfTUFLRV9JU09fQUxMT0NBVEVEKEF1ZGlvRGVzdGluYXRpb25Ob2RlKTsKIHB1Ymxp
YzoKLSAgICBBdWRpb0Rlc3RpbmF0aW9uTm9kZShBdWRpb0NvbnRleHQmLCBmbG9hdCBzYW1wbGVS
YXRlKTsKKyAgICBBdWRpb0Rlc3RpbmF0aW9uTm9kZShBdWRpb0NvbnRleHRCYXNlJiwgZmxvYXQg
c2FtcGxlUmF0ZSk7CiAgICAgdmlydHVhbCB+QXVkaW9EZXN0aW5hdGlvbk5vZGUoKTsKICAgICAK
ICAgICAvLyBBdWRpb05vZGUgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViYXVkaW8vQXVkaW9Ob2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8v
QXVkaW9Ob2RlLmNwcAppbmRleCA3NjVlY2UzMzJmNjM2OWM0MTk4ZmU1N2RkM2FlN2NjNTE5M2Iy
YWNhLi5lNTU0Mzc3OWQ1MWE1MDhjZTYxYTZhMDgzMTEyZThkMmQwYTg3ZDBkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvTm9kZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb05vZGUuY3BwCkBAIC0zMyw2ICszMyw3
IEBACiAjaW5jbHVkZSAiQXVkaW9Ob2RlT3V0cHV0LmgiCiAjaW5jbHVkZSAiQXVkaW9QYXJhbS5o
IgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKKyNpbmNsdWRlICJXZWJLaXRBdWRpb0NvbnRleHQuaCIK
ICNpbmNsdWRlIDx3dGYvQXRvbWljcy5oPgogI2luY2x1ZGUgPHd0Zi9Jc29NYWxsb2NJbmxpbmVz
Lmg+CiAjaW5jbHVkZSA8d3RmL01haW5UaHJlYWQuaD4KQEAgLTk1LDcgKzk2LDcgQEAgU3RyaW5n
IGNvbnZlcnRFbnVtZXJhdGlvblRvU3RyaW5nKEF1ZGlvTm9kZTo6Tm9kZVR5cGUgZW51bWVyYXRp
b25WYWx1ZSkKICAgICByZXR1cm4gdmFsdWVzW3N0YXRpY19jYXN0PHNpemVfdD4oZW51bWVyYXRp
b25WYWx1ZSldOwogfQogCi1BdWRpb05vZGU6OkF1ZGlvTm9kZShBdWRpb0NvbnRleHQmIGNvbnRl
eHQsIGZsb2F0IHNhbXBsZVJhdGUpCitBdWRpb05vZGU6OkF1ZGlvTm9kZShBdWRpb0NvbnRleHRC
YXNlJiBjb250ZXh0LCBmbG9hdCBzYW1wbGVSYXRlKQogICAgIDogbV9pc0luaXRpYWxpemVkKGZh
bHNlKQogICAgICwgbV9ub2RlVHlwZShOb2RlVHlwZVVua25vd24pCiAgICAgLCBtX2NvbnRleHQo
Y29udGV4dCkKQEAgLTE5NCw3ICsxOTUsNyBAQCBBdWRpb05vZGVPdXRwdXQqIEF1ZGlvTm9kZTo6
b3V0cHV0KHVuc2lnbmVkIGkpCiBFeGNlcHRpb25Pcjx2b2lkPiBBdWRpb05vZGU6OmNvbm5lY3Qo
QXVkaW9Ob2RlJiBkZXN0aW5hdGlvbiwgdW5zaWduZWQgb3V0cHV0SW5kZXgsIHVuc2lnbmVkIGlu
cHV0SW5kZXgpCiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKLSAgICBBdWRpb0NvbnRl
eHQ6OkF1dG9Mb2NrZXIgbG9ja2VyKGNvbnRleHQoKSk7CisgICAgQXVkaW9Db250ZXh0QmFzZTo6
QXV0b0xvY2tlciBsb2NrZXIoY29udGV4dCgpKTsKIAogICAgIEFMV0FZU19MT0coTE9HSURFTlRJ
RklFUiwgZGVzdGluYXRpb24ubm9kZVR5cGUoKSwgIiwgb3V0cHV0ID0gIiwgb3V0cHV0SW5kZXgs
ICIsIGlucHV0ID0gIiwgaW5wdXRJbmRleCk7CiAgICAgCkBAIC0yMDUsNyArMjA2LDcgQEAgRXhj
ZXB0aW9uT3I8dm9pZD4gQXVkaW9Ob2RlOjpjb25uZWN0KEF1ZGlvTm9kZSYgZGVzdGluYXRpb24s
IHVuc2lnbmVkIG91dHB1dEluZGUKICAgICBpZiAoaW5wdXRJbmRleCA+PSBkZXN0aW5hdGlvbi5u
dW1iZXJPZklucHV0cygpKQogICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgSW5kZXhTaXplRXJy
b3IgfTsKIAotICAgIGlmIChjb250ZXh0KCkgIT0gZGVzdGluYXRpb24uY29udGV4dCgpKQorICAg
IGlmICgmY29udGV4dCgpICE9ICZkZXN0aW5hdGlvbi5jb250ZXh0KCkpCiAgICAgICAgIHJldHVy
biBFeGNlcHRpb24geyBTeW50YXhFcnJvciB9OwogCiAgICAgYXV0byogaW5wdXQgPSBkZXN0aW5h
dGlvbi5pbnB1dChpbnB1dEluZGV4KTsKQEAgLTIyMCw3ICsyMjEsNyBAQCBFeGNlcHRpb25Pcjx2
b2lkPiBBdWRpb05vZGU6OmNvbm5lY3QoQXVkaW9Ob2RlJiBkZXN0aW5hdGlvbiwgdW5zaWduZWQg
b3V0cHV0SW5kZQogCiBFeGNlcHRpb25Pcjx2b2lkPiBBdWRpb05vZGU6OmNvbm5lY3QoQXVkaW9Q
YXJhbSYgcGFyYW0sIHVuc2lnbmVkIG91dHB1dEluZGV4KQogewotICAgIEF1ZGlvQ29udGV4dDo6
QXV0b0xvY2tlciBsb2NrZXIoY29udGV4dCgpKTsKKyAgICBBdWRpb0NvbnRleHRCYXNlOjpBdXRv
TG9ja2VyIGxvY2tlcihjb250ZXh0KCkpOwogCiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsK
IApAQCAtMjI5LDcgKzIzMCw3IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IEF1ZGlvTm9kZTo6Y29ubmVj
dChBdWRpb1BhcmFtJiBwYXJhbSwgdW5zaWduZWQgb3V0cHV0SW5kZXgpCiAgICAgaWYgKG91dHB1
dEluZGV4ID49IG51bWJlck9mT3V0cHV0cygpKQogICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsg
SW5kZXhTaXplRXJyb3IgfTsKIAotICAgIGlmIChjb250ZXh0KCkgIT0gcGFyYW0uY29udGV4dCgp
KQorICAgIGlmICgmY29udGV4dCgpICE9ICZwYXJhbS5jb250ZXh0KCkpCiAgICAgICAgIHJldHVy
biBFeGNlcHRpb24geyBTeW50YXhFcnJvciB9OwogCiAgICAgYXV0byogb3V0cHV0ID0gdGhpcy0+
b3V0cHV0KG91dHB1dEluZGV4KTsKQEAgLTI0MSw3ICsyNDIsNyBAQCBFeGNlcHRpb25Pcjx2b2lk
PiBBdWRpb05vZGU6OmNvbm5lY3QoQXVkaW9QYXJhbSYgcGFyYW0sIHVuc2lnbmVkIG91dHB1dElu
ZGV4KQogRXhjZXB0aW9uT3I8dm9pZD4gQXVkaW9Ob2RlOjpkaXNjb25uZWN0KHVuc2lnbmVkIG91
dHB1dEluZGV4KQogewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7Ci0gICAgQXVkaW9Db250
ZXh0OjpBdXRvTG9ja2VyIGxvY2tlcihjb250ZXh0KCkpOworICAgIEF1ZGlvQ29udGV4dEJhc2U6
OkF1dG9Mb2NrZXIgbG9ja2VyKGNvbnRleHQoKSk7CiAKICAgICAvLyBTYW5pdHkgY2hlY2sgaW5w
dXQgYW5kIG91dHB1dCBpbmRpY2VzLgogICAgIGlmIChvdXRwdXRJbmRleCA+PSBudW1iZXJPZk91
dHB1dHMoKSkKQEAgLTI2Myw3ICsyNjQsNyBAQCB1bnNpZ25lZCBBdWRpb05vZGU6OmNoYW5uZWxD
b3VudCgpCiBFeGNlcHRpb25Pcjx2b2lkPiBBdWRpb05vZGU6OnNldENoYW5uZWxDb3VudCh1bnNp
Z25lZCBjaGFubmVsQ291bnQpCiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKLSAgICBB
dWRpb0NvbnRleHQ6OkF1dG9Mb2NrZXIgbG9ja2VyKGNvbnRleHQoKSk7CisgICAgQXVkaW9Db250
ZXh0QmFzZTo6QXV0b0xvY2tlciBsb2NrZXIoY29udGV4dCgpKTsKIAogICAgIEFMV0FZU19MT0co
TE9HSURFTlRJRklFUiwgY2hhbm5lbENvdW50KTsKICAgICAKQEAgLTI5Niw3ICsyOTcsNyBAQCBT
dHJpbmcgQXVkaW9Ob2RlOjpjaGFubmVsQ291bnRNb2RlKCkKIEV4Y2VwdGlvbk9yPHZvaWQ+IEF1
ZGlvTm9kZTo6c2V0Q2hhbm5lbENvdW50TW9kZShjb25zdCBTdHJpbmcmIG1vZGUpCiB7CiAgICAg
QVNTRVJUKGlzTWFpblRocmVhZCgpKTsKLSAgICBBdWRpb0NvbnRleHQ6OkF1dG9Mb2NrZXIgbG9j
a2VyKGNvbnRleHQoKSk7CisgICAgQXVkaW9Db250ZXh0QmFzZTo6QXV0b0xvY2tlciBsb2NrZXIo
Y29udGV4dCgpKTsKIAogICAgIEFMV0FZU19MT0coTE9HSURFTlRJRklFUiwgbW9kZSk7CiAgICAg
CkBAIC0zMzIsNyArMzMzLDcgQEAgU3RyaW5nIEF1ZGlvTm9kZTo6Y2hhbm5lbEludGVycHJldGF0
aW9uKCkKIEV4Y2VwdGlvbk9yPHZvaWQ+IEF1ZGlvTm9kZTo6c2V0Q2hhbm5lbEludGVycHJldGF0
aW9uKGNvbnN0IFN0cmluZyYgaW50ZXJwcmV0YXRpb24pCiB7CiAgICAgQVNTRVJUKGlzTWFpblRo
cmVhZCgpKTsKLSAgICBBdWRpb0NvbnRleHQ6OkF1dG9Mb2NrZXIgbG9ja2VyKGNvbnRleHQoKSk7
CisgICAgQXVkaW9Db250ZXh0QmFzZTo6QXV0b0xvY2tlciBsb2NrZXIoY29udGV4dCgpKTsKIAog
ICAgIEFMV0FZU19MT0coTE9HSURFTlRJRklFUiwgaW50ZXJwcmV0YXRpb24pOwogICAgIApAQCAt
NDM3LDcgKzQzOCw3IEBAIHZvaWQgQXVkaW9Ob2RlOjplbmFibGVPdXRwdXRzSWZOZWNlc3Nhcnko
KQogewogICAgIGlmIChtX2lzRGlzYWJsZWQgJiYgbV9jb25uZWN0aW9uUmVmQ291bnQgPiAwKSB7
CiAgICAgICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7Ci0gICAgICAgIEF1ZGlvQ29udGV4dDo6
QXV0b0xvY2tlciBsb2NrZXIoY29udGV4dCgpKTsKKyAgICAgICAgQXVkaW9Db250ZXh0QmFzZTo6
QXV0b0xvY2tlciBsb2NrZXIoY29udGV4dCgpKTsKIAogICAgICAgICBtX2lzRGlzYWJsZWQgPSBm
YWxzZTsKICAgICAgICAgZm9yIChhdXRvJiBvdXRwdXQgOiBtX291dHB1dHMpCkBAIC01MDEsNyAr
NTAyLDcgQEAgdm9pZCBBdWRpb05vZGU6OmRlcmVmKFJlZlR5cGUgcmVmVHlwZSkKICAgICAvLyBJ
biB0aGUgY2FzZSBvZiB0aGUgYXVkaW8gdGhyZWFkLCB3ZSBtdXN0IHVzZSBhIHRyeUxvY2sgdG8g
YXZvaWQgZ2xpdGNoZXMuCiAgICAgYm9vbCBoYXNMb2NrID0gZmFsc2U7CiAgICAgYm9vbCBtdXN0
UmVsZWFzZUxvY2sgPSBmYWxzZTsKLSAgICAKKwogICAgIGlmIChjb250ZXh0KCkuaXNBdWRpb1Ro
cmVhZCgpKSB7CiAgICAgICAgIC8vIFJlYWwtdGltZSBhdWRpbyB0aHJlYWQgbXVzdCBub3QgY29u
dGVuZCBsb2NrICh0byBhdm9pZCBnbGl0Y2hlcykuCiAgICAgICAgIGhhc0xvY2sgPSBjb250ZXh0
KCkudHJ5TG9jayhtdXN0UmVsZWFzZUxvY2spOwpAQCAtNTMwLDYgKzUzMSwxMyBAQCB2b2lkIEF1
ZGlvTm9kZTo6ZGVyZWYoUmVmVHlwZSByZWZUeXBlKQogICAgICAgICBjb250ZXh0KCkuZGVsZXRl
TWFya2VkTm9kZXMoKTsKIH0KIAorVmFyaWFudDxSZWZQdHI8QXVkaW9Db250ZXh0PiwgUmVmUHRy
PFdlYktpdEF1ZGlvQ29udGV4dD4+IEF1ZGlvTm9kZTo6Y29udGV4dEZvckJpbmRpbmdzKCkgY29u
c3QKK3sKKyAgICBpZiAobV9jb250ZXh0LT5pc1dlYktpdEF1ZGlvQ29udGV4dCgpKQorICAgICAg
ICByZXR1cm4gbWFrZVJlZlB0cihzdGF0aWNfY2FzdDxXZWJLaXRBdWRpb0NvbnRleHQmPihtX2Nv
bnRleHQuZ2V0KCkpKTsKKyAgICByZXR1cm4gbWFrZVJlZlB0cihzdGF0aWNfY2FzdDxBdWRpb0Nv
bnRleHQmPihtX2NvbnRleHQuZ2V0KCkpKTsKK30KKwogdm9pZCBBdWRpb05vZGU6OmZpbmlzaERl
cmVmKFJlZlR5cGUgcmVmVHlwZSkKIHsKICAgICBBU1NFUlQoY29udGV4dCgpLmlzR3JhcGhPd25l
cigpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9O
b2RlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvTm9kZS5oCmluZGV4
IDQyMTAxMDA2Y2M3ZjU0ZWU3NWFkZjcwNzJlZmJlNjRiYWM1OGQzNmQuLmE5ODgxYmQ0YjhkYjRj
M2IxMGY5ZDc3MTE2NTYyNjAwYzE4MGZjOTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViYXVkaW8vQXVkaW9Ob2RlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJhdWRpby9BdWRpb05vZGUuaApAQCAtMjksMTUgKzI5LDE4IEBACiAjaW5jbHVkZSAiRXhjZXB0
aW9uT3IuaCIKICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9Mb2dnZXJI
ZWxwZXIuaD4KKyNpbmNsdWRlIDx3dGYvVmFyaWFudC5oPgogCiAjZGVmaW5lIERFQlVHX0FVRElP
Tk9ERV9SRUZFUkVOQ0VTIDAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBBdWRpb0Nv
bnRleHQ7CitjbGFzcyBBdWRpb0NvbnRleHRCYXNlOwogY2xhc3MgQXVkaW9Ob2RlSW5wdXQ7CiBj
bGFzcyBBdWRpb05vZGVPdXRwdXQ7CiBjbGFzcyBBdWRpb1BhcmFtOworY2xhc3MgV2ViS2l0QXVk
aW9Db250ZXh0OwogCiAvLyBBbiBBdWRpb05vZGUgaXMgdGhlIGJhc2ljIGJ1aWxkaW5nIGJsb2Nr
IGZvciBoYW5kbGluZyBhdWRpbyB3aXRoaW4gYW4gQXVkaW9Db250ZXh0LgogLy8gSXQgbWF5IGJl
IGFuIGF1ZGlvIHNvdXJjZSwgYW4gaW50ZXJtZWRpYXRlIHByb2Nlc3NpbmcgbW9kdWxlLCBvciBh
biBhdWRpbyBkZXN0aW5hdGlvbi4KQEAgLTU2LDExICs1OSwxMyBAQCBjbGFzcyBBdWRpb05vZGUK
IHB1YmxpYzoKICAgICBlbnVtIHsgUHJvY2Vzc2luZ1NpemVJbkZyYW1lcyA9IDEyOCB9OwogCi0g
ICAgQXVkaW9Ob2RlKEF1ZGlvQ29udGV4dCYsIGZsb2F0IHNhbXBsZVJhdGUpOworICAgIEF1ZGlv
Tm9kZShBdWRpb0NvbnRleHRCYXNlJiwgZmxvYXQgc2FtcGxlUmF0ZSk7CiAgICAgdmlydHVhbCB+
QXVkaW9Ob2RlKCk7CiAKLSAgICBBdWRpb0NvbnRleHQmIGNvbnRleHQoKSB7IHJldHVybiBtX2Nv
bnRleHQuZ2V0KCk7IH0KLSAgICBjb25zdCBBdWRpb0NvbnRleHQmIGNvbnRleHQoKSBjb25zdCB7
IHJldHVybiBtX2NvbnRleHQuZ2V0KCk7IH0KKyAgICBBdWRpb0NvbnRleHRCYXNlJiBjb250ZXh0
KCkgeyByZXR1cm4gbV9jb250ZXh0LmdldCgpOyB9CisgICAgY29uc3QgQXVkaW9Db250ZXh0QmFz
ZSYgY29udGV4dCgpIGNvbnN0IHsgcmV0dXJuIG1fY29udGV4dC5nZXQoKTsgfQorCisgICAgVmFy
aWFudDxSZWZQdHI8QXVkaW9Db250ZXh0PiwgUmVmUHRyPFdlYktpdEF1ZGlvQ29udGV4dD4+IGNv
bnRleHRGb3JCaW5kaW5ncygpIGNvbnN0OwogCiAgICAgZW51bSBOb2RlVHlwZSB7CiAgICAgICAg
IE5vZGVUeXBlVW5rbm93biwKQEAgLTIwOSw3ICsyMTQsNyBAQCBwcml2YXRlOgogCiAgICAgdm9s
YXRpbGUgYm9vbCBtX2lzSW5pdGlhbGl6ZWQ7CiAgICAgTm9kZVR5cGUgbV9ub2RlVHlwZTsKLSAg
ICBSZWY8QXVkaW9Db250ZXh0PiBtX2NvbnRleHQ7CisgICAgUmVmPEF1ZGlvQ29udGV4dEJhc2U+
IG1fY29udGV4dDsKICAgICBmbG9hdCBtX3NhbXBsZVJhdGU7CiAgICAgVmVjdG9yPHN0ZDo6dW5p
cXVlX3B0cjxBdWRpb05vZGVJbnB1dD4+IG1faW5wdXRzOwogICAgIFZlY3RvcjxzdGQ6OnVuaXF1
ZV9wdHI8QXVkaW9Ob2RlT3V0cHV0Pj4gbV9vdXRwdXRzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb05vZGUuaWRsIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJhdWRpby9BdWRpb05vZGUuaWRsCmluZGV4IDcwZmVjOGM4MTQ1MDU5OTFlMjBhZDhj
MWM5MmNjMTFlZWU5Njg0MmYuLjcxOTM5YzgzMTcxNGJmYmYzNmRmYmFlNTJmYmMzZDNkMjAyZjY2
MjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Ob2Rl
LmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvTm9kZS5pZGwK
QEAgLTI1LDcgKzI1LDcgQEAKIFsKICAgICBDb25kaXRpb25hbD1XRUJfQVVESU8sCiBdIGludGVy
ZmFjZSBBdWRpb05vZGUgOiBFdmVudFRhcmdldCB7Ci0gICAgcmVhZG9ubHkgYXR0cmlidXRlIEF1
ZGlvQ29udGV4dCBjb250ZXh0OworICAgIFtJbXBsZW1lbnRlZEFzPWNvbnRleHRGb3JCaW5kaW5n
c10gcmVhZG9ubHkgYXR0cmlidXRlIChBdWRpb0NvbnRleHQgb3IgV2ViS2l0QXVkaW9Db250ZXh0
KSBjb250ZXh0OwogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSB1bnNpZ25lZCBsb25nIG51bWJlck9m
SW5wdXRzOwogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSB1bnNpZ25lZCBsb25nIG51bWJlck9mT3V0
cHV0czsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRp
b05vZGVPdXRwdXQuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Ob2Rl
T3V0cHV0LmgKaW5kZXggNTBhOTVlZTIwNWMxMjAzMDkzY2E1ZmMzMDcxNzk5MTM1MzJkNzNhNC4u
ZjA4OTgzNjM1ZjNjNTU5Yzc5ODFmMGJhNGE1YzEyMmIxNTljMmNiNSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb05vZGVPdXRwdXQuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvTm9kZU91dHB1dC5oCkBAIC00Nyw3ICs0
Nyw3IEBAIHB1YmxpYzoKIAogICAgIC8vIENhbiBiZSBjYWxsZWQgZnJvbSBhbnkgdGhyZWFkLgog
ICAgIEF1ZGlvTm9kZSogbm9kZSgpIGNvbnN0IHsgcmV0dXJuIG1fbm9kZTsgfQotICAgIEF1ZGlv
Q29udGV4dCYgY29udGV4dCgpIHsgcmV0dXJuIG1fbm9kZS0+Y29udGV4dCgpOyB9CisgICAgQXVk
aW9Db250ZXh0QmFzZSYgY29udGV4dCgpIHsgcmV0dXJuIG1fbm9kZS0+Y29udGV4dCgpOyB9CiAg
ICAgCiAgICAgLy8gQ2F1c2VzIG91ciBBdWRpb05vZGUgdG8gcHJvY2VzcyBpZiBpdCBoYXNuJ3Qg
YWxyZWFkeSBmb3IgdGhpcyByZW5kZXIgcXVhbnR1bS4KICAgICAvLyBJdCByZXR1cm5zIHRoZSBi
dXMgY29udGFpbmluZyB0aGUgcHJvY2Vzc2VkIGF1ZGlvIGZvciB0aGlzIG91dHB1dCwgcmV0dXJu
aW5nIGluUGxhY2VCdXMgaWYgaW4tcGxhY2UgcHJvY2Vzc2luZyB3YXMgcG9zc2libGUuCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvUGFyYW0uY3BwIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1BhcmFtLmNwcAppbmRleCAyOTM0
NTY0NDVjYzBlMWJkYTlkMDBkMmJkOWEyYzBkMTExMDNkY2M5Li5kNDcwYmY3NDZlZmI1YWIyM2Nh
MzUyZDdiZDk1MzM4YzM4MTRmZTdjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmF1ZGlvL0F1ZGlvUGFyYW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
YXVkaW8vQXVkaW9QYXJhbS5jcHAKQEAgLTQxLDcgKzQxLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogY29uc3QgZG91YmxlIEF1ZGlvUGFyYW06OkRlZmF1bHRTbW9vdGhpbmdDb25zdGFudCA9IDAu
MDU7CiBjb25zdCBkb3VibGUgQXVkaW9QYXJhbTo6U25hcFRocmVzaG9sZCA9IDAuMDAxOwogCi1B
dWRpb1BhcmFtOjpBdWRpb1BhcmFtKEF1ZGlvQ29udGV4dCYgY29udGV4dCwgY29uc3QgU3RyaW5n
JiBuYW1lLCBkb3VibGUgZGVmYXVsdFZhbHVlLCBkb3VibGUgbWluVmFsdWUsIGRvdWJsZSBtYXhW
YWx1ZSwgdW5zaWduZWQgdW5pdHMpCitBdWRpb1BhcmFtOjpBdWRpb1BhcmFtKEF1ZGlvQ29udGV4
dEJhc2UmIGNvbnRleHQsIGNvbnN0IFN0cmluZyYgbmFtZSwgZG91YmxlIGRlZmF1bHRWYWx1ZSwg
ZG91YmxlIG1pblZhbHVlLCBkb3VibGUgbWF4VmFsdWUsIHVuc2lnbmVkIHVuaXRzKQogICAgIDog
QXVkaW9TdW1taW5nSnVuY3Rpb24oY29udGV4dCkKICAgICAsIG1fbmFtZShuYW1lKQogICAgICwg
bV92YWx1ZShkZWZhdWx0VmFsdWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmF1ZGlvL0F1ZGlvUGFyYW0uaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8v
QXVkaW9QYXJhbS5oCmluZGV4IDIyNmM5NTdlNzA2ZmU2MWQyZjIzM2MwZDViZjk2ZjIwNjg3MzFj
NDIuLjE2YTIxMDk1MDQ0ZjYwMWVkMjdiODkwMWEwNzY4ZjJmYTllYjE2ZTYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9QYXJhbS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9QYXJhbS5oCkBAIC0zMSw2ICszMSw3IEBA
CiAjaW5jbHVkZSAiQXVkaW9Db250ZXh0LmgiCiAjaW5jbHVkZSAiQXVkaW9QYXJhbVRpbWVsaW5l
LmgiCiAjaW5jbHVkZSAiQXVkaW9TdW1taW5nSnVuY3Rpb24uaCIKKyNpbmNsdWRlICJXZWJLaXRB
dWRpb0NvbnRleHQuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9GbG9hdDMyQXJyYXkuaD4K
ICNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KICNpbmNsdWRlIDx3dGYvTG9nZ2VySGVscGVyLmg+CkBA
IC01Miw3ICs1Myw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgY29uc3QgZG91YmxlIERlZmF1bHRT
bW9vdGhpbmdDb25zdGFudDsKICAgICBzdGF0aWMgY29uc3QgZG91YmxlIFNuYXBUaHJlc2hvbGQ7
CiAKLSAgICBzdGF0aWMgUmVmPEF1ZGlvUGFyYW0+IGNyZWF0ZShBdWRpb0NvbnRleHQmIGNvbnRl
eHQsIGNvbnN0IFN0cmluZyYgbmFtZSwgZG91YmxlIGRlZmF1bHRWYWx1ZSwgZG91YmxlIG1pblZh
bHVlLCBkb3VibGUgbWF4VmFsdWUsIHVuc2lnbmVkIHVuaXRzID0gMCkKKyAgICBzdGF0aWMgUmVm
PEF1ZGlvUGFyYW0+IGNyZWF0ZShBdWRpb0NvbnRleHRCYXNlJiBjb250ZXh0LCBjb25zdCBTdHJp
bmcmIG5hbWUsIGRvdWJsZSBkZWZhdWx0VmFsdWUsIGRvdWJsZSBtaW5WYWx1ZSwgZG91YmxlIG1h
eFZhbHVlLCB1bnNpZ25lZCB1bml0cyA9IDApCiAgICAgewogICAgICAgICByZXR1cm4gYWRvcHRS
ZWYoKm5ldyBBdWRpb1BhcmFtKGNvbnRleHQsIG5hbWUsIGRlZmF1bHRWYWx1ZSwgbWluVmFsdWUs
IG1heFZhbHVlLCB1bml0cykpOwogICAgIH0KQEAgLTEwOCw3ICsxMDksNyBAQCBwdWJsaWM6CiAg
ICAgdm9pZCBkaXNjb25uZWN0KEF1ZGlvTm9kZU91dHB1dCopOwogCiBwcm90ZWN0ZWQ6Ci0gICAg
QXVkaW9QYXJhbShBdWRpb0NvbnRleHQmLCBjb25zdCBTdHJpbmcmLCBkb3VibGUgZGVmYXVsdFZh
bHVlLCBkb3VibGUgbWluVmFsdWUsIGRvdWJsZSBtYXhWYWx1ZSwgdW5zaWduZWQgdW5pdHMgPSAw
KTsKKyAgICBBdWRpb1BhcmFtKEF1ZGlvQ29udGV4dEJhc2UmLCBjb25zdCBTdHJpbmcmLCBkb3Vi
bGUgZGVmYXVsdFZhbHVlLCBkb3VibGUgbWluVmFsdWUsIGRvdWJsZSBtYXhWYWx1ZSwgdW5zaWdu
ZWQgdW5pdHMgPSAwKTsKIAogcHJpdmF0ZToKICAgICAvLyBzYW1wbGVBY2N1cmF0ZSBjb3JyZXNw
b25kcyB0byBhLXJhdGUgKGF1ZGlvIHJhdGUpIHZzLiBrLXJhdGUgaW4gdGhlIFdlYiBBdWRpbyBz
cGVjaWZpY2F0aW9uLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRp
by9BdWRpb1BhcmFtVGltZWxpbmUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRp
by9BdWRpb1BhcmFtVGltZWxpbmUuY3BwCmluZGV4IDJiNTk1NzBiZjZlNjFiNTQ4M2VkMWI5MDdl
Njc2ZjY5YmU5YjM3NDIuLjZjNDEzMDFkOGFkNWE3YWJiZThkYjBkYmExN2NmODQ0YmZlZmZiNjAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9QYXJhbVRp
bWVsaW5lLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvUGFy
YW1UaW1lbGluZS5jcHAKQEAgLTExMyw3ICsxMTMsNyBAQCB2b2lkIEF1ZGlvUGFyYW1UaW1lbGlu
ZTo6Y2FuY2VsU2NoZWR1bGVkVmFsdWVzKGZsb2F0IHN0YXJ0VGltZSkKICAgICB9CiB9CiAKLWZs
b2F0IEF1ZGlvUGFyYW1UaW1lbGluZTo6dmFsdWVGb3JDb250ZXh0VGltZShBdWRpb0NvbnRleHQm
IGNvbnRleHQsIGZsb2F0IGRlZmF1bHRWYWx1ZSwgYm9vbCYgaGFzVmFsdWUpCitmbG9hdCBBdWRp
b1BhcmFtVGltZWxpbmU6OnZhbHVlRm9yQ29udGV4dFRpbWUoQXVkaW9Db250ZXh0QmFzZSYgY29u
dGV4dCwgZmxvYXQgZGVmYXVsdFZhbHVlLCBib29sJiBoYXNWYWx1ZSkKIHsKICAgICB7CiAgICAg
ICAgIHN0ZDo6dW5pcXVlX2xvY2s8TG9jaz4gbG9jayhtX2V2ZW50c011dGV4LCBzdGQ6OnRyeV90
b19sb2NrKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVk
aW9QYXJhbVRpbWVsaW5lLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlv
UGFyYW1UaW1lbGluZS5oCmluZGV4IDdjMTA5OTk1NmNlZWJjOGQ4ZjZkNTBlMGZiMGZjOWExZWVm
ZGEzNGQuLmE1ODY4YmRlZTE4M2ZkZTJhNzA4ZDQ2NGNlNjM1YjI0MDBlNzYxYTIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9QYXJhbVRpbWVsaW5lLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1BhcmFtVGltZWxpbmUu
aApAQCAtNTIsNyArNTIsNyBAQCBwdWJsaWM6CiAKICAgICAvLyBoYXNWYWx1ZSBpcyBzZXQgdG8g
dHJ1ZSBpZiBhIHZhbGlkIHRpbWVsaW5lIHZhbHVlIGlzIHJldHVybmVkLgogICAgIC8vIG90aGVy
d2lzZSBkZWZhdWx0VmFsdWUgaXMgcmV0dXJuZWQuCi0gICAgZmxvYXQgdmFsdWVGb3JDb250ZXh0
VGltZShBdWRpb0NvbnRleHQmLCBmbG9hdCBkZWZhdWx0VmFsdWUsIGJvb2wmIGhhc1ZhbHVlKTsK
KyAgICBmbG9hdCB2YWx1ZUZvckNvbnRleHRUaW1lKEF1ZGlvQ29udGV4dEJhc2UmLCBmbG9hdCBk
ZWZhdWx0VmFsdWUsIGJvb2wmIGhhc1ZhbHVlKTsKIAogICAgIC8vIEdpdmVuIHRoZSB0aW1lIHJh
bmdlLCBjYWxjdWxhdGVzIHBhcmFtZXRlciB2YWx1ZXMgaW50byB0aGUgdmFsdWVzIGJ1ZmZlcgog
ICAgIC8vIGFuZCByZXR1cm5zIHRoZSBsYXN0IHBhcmFtZXRlciB2YWx1ZSBjYWxjdWxhdGVkIGZv
ciAidmFsdWVzIiBvciB0aGUgZGVmYXVsdFZhbHVlIGlmIG5vbmUgd2VyZSBjYWxjdWxhdGVkLgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1NjaGVkdWxl
ZFNvdXJjZU5vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1Nj
aGVkdWxlZFNvdXJjZU5vZGUuY3BwCmluZGV4IDBmNzI2NzZmYzc0M2M0Y2UyNDFhZWUzYzkwZDAy
OGY2YTk1MjcwMjMuLjdjMjgyMzdhMGJkMDM1ZTRjM2FiN2JhNTEzNzUzM2JkOTE1YTdlNjEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9TY2hlZHVsZWRT
b3VyY2VOb2RlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlv
U2NoZWR1bGVkU291cmNlTm9kZS5jcHAKQEAgLTQ5LDcgKzQ5LDcgQEAgV1RGX01BS0VfSVNPX0FM
TE9DQVRFRF9JTVBMKEF1ZGlvU2NoZWR1bGVkU291cmNlTm9kZSk7CiAKIGNvbnN0IGRvdWJsZSBB
dWRpb1NjaGVkdWxlZFNvdXJjZU5vZGU6OlVua25vd25UaW1lID0gLTE7CiAKLUF1ZGlvU2NoZWR1
bGVkU291cmNlTm9kZTo6QXVkaW9TY2hlZHVsZWRTb3VyY2VOb2RlKEF1ZGlvQ29udGV4dCYgY29u
dGV4dCwgZmxvYXQgc2FtcGxlUmF0ZSkKK0F1ZGlvU2NoZWR1bGVkU291cmNlTm9kZTo6QXVkaW9T
Y2hlZHVsZWRTb3VyY2VOb2RlKEF1ZGlvQ29udGV4dEJhc2UmIGNvbnRleHQsIGZsb2F0IHNhbXBs
ZVJhdGUpCiAgICAgOiBBdWRpb05vZGUoY29udGV4dCwgc2FtcGxlUmF0ZSkKICAgICAsIEFjdGl2
ZURPTU9iamVjdChjb250ZXh0LnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSkKICAgICAsIG1fZW5k
VGltZShVbmtub3duVGltZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
YXVkaW8vQXVkaW9TY2hlZHVsZWRTb3VyY2VOb2RlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmF1ZGlvL0F1ZGlvU2NoZWR1bGVkU291cmNlTm9kZS5oCmluZGV4IDhjYWRiZTEwYWZkM2E0
ZDdlY2UyMDIyMDI0NDM4N2Y0Y2UxNGMyZTQuLmI0ZDk1ODgwYzFkZjM2NmY4MjFlMWFiZmNmY2E3
N2Q3NjExMGVhM2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8v
QXVkaW9TY2hlZHVsZWRTb3VyY2VOb2RlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJhdWRpby9BdWRpb1NjaGVkdWxlZFNvdXJjZU5vZGUuaApAQCAtNTMsNyArNTMsNyBAQCBwdWJs
aWM6CiAgICAgICAgIEZJTklTSEVEX1NUQVRFID0gMwogICAgIH07CiAgICAgCi0gICAgQXVkaW9T
Y2hlZHVsZWRTb3VyY2VOb2RlKEF1ZGlvQ29udGV4dCYsIGZsb2F0IHNhbXBsZVJhdGUpOworICAg
IEF1ZGlvU2NoZWR1bGVkU291cmNlTm9kZShBdWRpb0NvbnRleHRCYXNlJiwgZmxvYXQgc2FtcGxl
UmF0ZSk7CiAKICAgICBFeGNlcHRpb25Pcjx2b2lkPiBzdGFydExhdGVyKGRvdWJsZSB3aGVuKTsK
ICAgICBFeGNlcHRpb25Pcjx2b2lkPiBzdG9wTGF0ZXIoZG91YmxlIHdoZW4pOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1N1bW1pbmdKdW5jdGlvbi5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvU3VtbWluZ0p1bmN0aW9u
LmNwcAppbmRleCBlZTYwMGE2MjlhMWI4NjljZDlhNWIzZDM3MmFlNDc2YTNlMTI3ZmIwLi5kZDY0
ZmQzZWE4MTMxMWYwMGUwOGMzY2E0MWQ3NDI4ZjFmMWYzODc5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvU3VtbWluZ0p1bmN0aW9uLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvU3VtbWluZ0p1bmN0aW9uLmNwcApA
QCAtMzQsNyArMzQsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLUF1ZGlvU3VtbWluZ0p1
bmN0aW9uOjpBdWRpb1N1bW1pbmdKdW5jdGlvbihBdWRpb0NvbnRleHQmIGNvbnRleHQpCitBdWRp
b1N1bW1pbmdKdW5jdGlvbjo6QXVkaW9TdW1taW5nSnVuY3Rpb24oQXVkaW9Db250ZXh0QmFzZSYg
Y29udGV4dCkKICAgICA6IG1fY29udGV4dChjb250ZXh0KQogICAgICwgbV9yZW5kZXJpbmdTdGF0
ZU5lZWRVcGRhdGluZyhmYWxzZSkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViYXVkaW8vQXVkaW9TdW1taW5nSnVuY3Rpb24uaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViYXVkaW8vQXVkaW9TdW1taW5nSnVuY3Rpb24uaAppbmRleCBjOTRmZjZkNmE1YWVkMTEx
MDIwOGM0NzY0MzgzZDdlNTZmZDg0NjNiLi40Y2JmOGFlOWZiOTUxYjc4MjA3NmIwY2I1MjYxMTZj
MTlkNGFlYzliIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1
ZGlvU3VtbWluZ0p1bmN0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRp
by9BdWRpb1N1bW1pbmdKdW5jdGlvbi5oCkBAIC0zMCwxOCArMzAsMTggQEAKIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCi1jbGFzcyBBdWRpb0NvbnRleHQ7CitjbGFzcyBBdWRpb0NvbnRleHRCYXNl
OwogY2xhc3MgQXVkaW9Ob2RlT3V0cHV0OwogCiAvLyBBbiBBdWRpb1N1bW1pbmdKdW5jdGlvbiBy
ZXByZXNlbnRzIGEgcG9pbnQgd2hlcmUgemVybywgb25lLCBvciBtb3JlIEF1ZGlvTm9kZU91dHB1
dHMgY29ubmVjdC4KIAogY2xhc3MgQXVkaW9TdW1taW5nSnVuY3Rpb24gewogcHVibGljOgotICAg
IGV4cGxpY2l0IEF1ZGlvU3VtbWluZ0p1bmN0aW9uKEF1ZGlvQ29udGV4dCYpOworICAgIGV4cGxp
Y2l0IEF1ZGlvU3VtbWluZ0p1bmN0aW9uKEF1ZGlvQ29udGV4dEJhc2UmKTsKICAgICB2aXJ0dWFs
IH5BdWRpb1N1bW1pbmdKdW5jdGlvbigpOwogCiAgICAgLy8gQ2FuIGJlIGNhbGxlZCBmcm9tIGFu
eSB0aHJlYWQuCi0gICAgQXVkaW9Db250ZXh0JiBjb250ZXh0KCkgeyByZXR1cm4gbV9jb250ZXh0
LmdldCgpOyB9CisgICAgQXVkaW9Db250ZXh0QmFzZSYgY29udGV4dCgpIHsgcmV0dXJuIG1fY29u
dGV4dDsgfQogCiAgICAgLy8gVGhpcyBtdXN0IGJlIGNhbGxlZCB3aGVuZXZlciB3ZSBtb2RpZnkg
bV9vdXRwdXRzLgogICAgIHZvaWQgY2hhbmdlZE91dHB1dHMoKTsKQEAgLTYwLDcgKzYwLDcgQEAg
cHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBkaWRVcGRhdGUoKSA9IDA7CiAKIHByb3RlY3RlZDoK
LSAgICBSZWY8QXVkaW9Db250ZXh0PiBtX2NvbnRleHQ7CisgICAgUmVmPEF1ZGlvQ29udGV4dEJh
c2U+IG1fY29udGV4dDsKIAogICAgIC8vIG1fb3V0cHV0cyBjb250YWlucyB0aGUgQXVkaW9Ob2Rl
T3V0cHV0cyByZXByZXNlbnRpbmcgY3VycmVudCBjb25uZWN0aW9ucyB3aGljaCBhcmUgbm90IGRp
c2FibGVkLgogICAgIC8vIFRoZSByZW5kZXJpbmcgY29kZSBzaG91bGQgbmV2ZXIgdXNlIHRoaXMg
ZGlyZWN0bHksIGJ1dCBpbnN0ZWFkIHVzZXMgbV9yZW5kZXJpbmdPdXRwdXRzLgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9CaXF1YWRGaWx0ZXJOb2RlLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQmlxdWFkRmlsdGVyTm9kZS5jcHAKaW5k
ZXggNGE4MjU1ZTZmMGFmMDc2NzEzOGU0Njg5OGY4YjYzNmFiMmQ3NTZlNS4uZGRlMDc3M2Q0NzNk
MjcyMmE1YjUzZGM4NjkwNmQzOTM3MGNiZmY0MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJhdWRpby9CaXF1YWRGaWx0ZXJOb2RlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmF1ZGlvL0JpcXVhZEZpbHRlck5vZGUuY3BwCkBAIC0zMyw3ICszMyw3IEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogV1RGX01BS0VfSVNPX0FMTE9DQVRFRF9JTVBMKEJpcXVh
ZEZpbHRlck5vZGUpOwogCi1CaXF1YWRGaWx0ZXJOb2RlOjpCaXF1YWRGaWx0ZXJOb2RlKEF1ZGlv
Q29udGV4dCYgY29udGV4dCwgZmxvYXQgc2FtcGxlUmF0ZSkKK0JpcXVhZEZpbHRlck5vZGU6OkJp
cXVhZEZpbHRlck5vZGUoQXVkaW9Db250ZXh0QmFzZSYgY29udGV4dCwgZmxvYXQgc2FtcGxlUmF0
ZSkKICAgICA6IEF1ZGlvQmFzaWNQcm9jZXNzb3JOb2RlKGNvbnRleHQsIHNhbXBsZVJhdGUpCiB7
CiAgICAgc2V0Tm9kZVR5cGUoTm9kZVR5cGVCaXF1YWRGaWx0ZXIpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9CaXF1YWRGaWx0ZXJOb2RlLmggYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0JpcXVhZEZpbHRlck5vZGUuaAppbmRleCA4MDk0ZDkx
ZWFiM2I5MmIxNDhhODYyNDA5MzI2ZjY1ZWQ5YjkwMTNjLi5hYzhkOTQ3YTEwZjdhZTZhMzNmMDNh
MmQwOTg0MGM4ZTZjMWU1NGNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmF1ZGlvL0JpcXVhZEZpbHRlck5vZGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmF1ZGlvL0JpcXVhZEZpbHRlck5vZGUuaApAQCAtMzQsNyArMzQsNyBAQCBjbGFzcyBBdWRpb1Bh
cmFtOwogY2xhc3MgQmlxdWFkRmlsdGVyTm9kZSBmaW5hbCA6IHB1YmxpYyBBdWRpb0Jhc2ljUHJv
Y2Vzc29yTm9kZSB7CiAgICAgV1RGX01BS0VfSVNPX0FMTE9DQVRFRChCaXF1YWRGaWx0ZXJOb2Rl
KTsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPEJpcXVhZEZpbHRlck5vZGU+IGNyZWF0ZShBdWRp
b0NvbnRleHQmIGNvbnRleHQsIGZsb2F0IHNhbXBsZVJhdGUpCisgICAgc3RhdGljIFJlZjxCaXF1
YWRGaWx0ZXJOb2RlPiBjcmVhdGUoQXVkaW9Db250ZXh0QmFzZSYgY29udGV4dCwgZmxvYXQgc2Ft
cGxlUmF0ZSkKICAgICB7CiAgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEJpcXVhZEZpbHRl
ck5vZGUoY29udGV4dCwgc2FtcGxlUmF0ZSkpOwogICAgIH0KQEAgLTUyLDcgKzUyLDcgQEAgcHVi
bGljOgogICAgIHZvaWQgZ2V0RnJlcXVlbmN5UmVzcG9uc2UoY29uc3QgUmVmUHRyPEZsb2F0MzJB
cnJheT4mIGZyZXF1ZW5jeUh6LCBjb25zdCBSZWZQdHI8RmxvYXQzMkFycmF5PiYgbWFnUmVzcG9u
c2UsIGNvbnN0IFJlZlB0cjxGbG9hdDMyQXJyYXk+JiBwaGFzZVJlc3BvbnNlKTsKIAogcHJpdmF0
ZToKLSAgICBCaXF1YWRGaWx0ZXJOb2RlKEF1ZGlvQ29udGV4dCYsIGZsb2F0IHNhbXBsZVJhdGUp
OworICAgIEJpcXVhZEZpbHRlck5vZGUoQXVkaW9Db250ZXh0QmFzZSYsIGZsb2F0IHNhbXBsZVJh
dGUpOwogCiAgICAgQmlxdWFkUHJvY2Vzc29yKiBiaXF1YWRQcm9jZXNzb3IoKSB7IHJldHVybiBz
dGF0aWNfY2FzdDxCaXF1YWRQcm9jZXNzb3IqPihwcm9jZXNzb3IoKSk7IH0KIH07CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0JpcXVhZFByb2Nlc3Nvci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0JpcXVhZFByb2Nlc3Nvci5jcHAKaW5k
ZXggZTg0Yjk4MDM1NjcwZmIxZGNjMzI3MDk2NjNkMmIzOTA1NTJlNjVlYi4uMmY2MDY3YTcyZGNl
YzMzYzNmMGQwZGU5ZDk3ZTRiNjk3Njk2MjZhOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJhdWRpby9CaXF1YWRQcm9jZXNzb3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViYXVkaW8vQmlxdWFkUHJvY2Vzc29yLmNwcApAQCAtMzIsNyArMzIsNyBAQAog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgCi1CaXF1YWRQcm9jZXNzb3I6OkJpcXVhZFByb2Nl
c3NvcihBdWRpb0NvbnRleHQmIGNvbnRleHQsIGZsb2F0IHNhbXBsZVJhdGUsIHNpemVfdCBudW1i
ZXJPZkNoYW5uZWxzLCBib29sIGF1dG9Jbml0aWFsaXplKQorQmlxdWFkUHJvY2Vzc29yOjpCaXF1
YWRQcm9jZXNzb3IoQXVkaW9Db250ZXh0QmFzZSYgY29udGV4dCwgZmxvYXQgc2FtcGxlUmF0ZSwg
c2l6ZV90IG51bWJlck9mQ2hhbm5lbHMsIGJvb2wgYXV0b0luaXRpYWxpemUpCiAgICAgOiBBdWRp
b0RTUEtlcm5lbFByb2Nlc3NvcihzYW1wbGVSYXRlLCBudW1iZXJPZkNoYW5uZWxzKQogICAgICwg
bV90eXBlKEJpcXVhZEZpbHRlclR5cGU6Okxvd3Bhc3MpCiAgICAgLCBtX3BhcmFtZXRlcjEoMCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQmlxdWFkUHJvY2Vz
c29yLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0JpcXVhZFByb2Nlc3Nvci5o
CmluZGV4IGFkYmVlYzQzMDI1YWYwM2FmMTdlMTE1MWFiYmVmZmVlZWU3N2Y2MzIuLmRjMzA2YWI1
MTdiMzI0YmIxY2M1NmEyODhkMGU0OWYxYThlNGU5MDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViYXVkaW8vQmlxdWFkUHJvY2Vzc29yLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJhdWRpby9CaXF1YWRQcm9jZXNzb3IuaApAQCAtNTAsNyArNTAsNyBAQCBl
bnVtIGNsYXNzIEJpcXVhZEZpbHRlclR5cGUgewogY2xhc3MgQmlxdWFkUHJvY2Vzc29yIGZpbmFs
IDogcHVibGljIEF1ZGlvRFNQS2VybmVsUHJvY2Vzc29yIHsKICAgICBXVEZfTUFLRV9GQVNUX0FM
TE9DQVRFRDsKIHB1YmxpYzoKLSAgICBCaXF1YWRQcm9jZXNzb3IoQXVkaW9Db250ZXh0JiwgZmxv
YXQgc2FtcGxlUmF0ZSwgc2l6ZV90IG51bWJlck9mQ2hhbm5lbHMsIGJvb2wgYXV0b0luaXRpYWxp
emUpOworICAgIEJpcXVhZFByb2Nlc3NvcihBdWRpb0NvbnRleHRCYXNlJiwgZmxvYXQgc2FtcGxl
UmF0ZSwgc2l6ZV90IG51bWJlck9mQ2hhbm5lbHMsIGJvb2wgYXV0b0luaXRpYWxpemUpOwogCiAg
ICAgdmlydHVhbCB+QmlxdWFkUHJvY2Vzc29yKCk7CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0NoYW5uZWxNZXJnZXJOb2RlLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQ2hhbm5lbE1lcmdlck5vZGUuY3BwCmluZGV4IGRmNTBm
MjY4NzM2OGFhNWMzMjk1NDE0ODE1MDc3N2EwMjkxNzMyZDguLmRlMjhhZWE3ZDJjNDM0Mjg5NmIx
MDRiYTg5NDFmZGViNzk4YWRjM2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViYXVkaW8vQ2hhbm5lbE1lcmdlck5vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViYXVkaW8vQ2hhbm5lbE1lcmdlck5vZGUuY3BwCkBAIC00Myw3ICs0Myw3IEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAogV1RGX01BS0VfSVNPX0FMTE9DQVRFRF9JTVBMKENoYW5uZWxNZXJn
ZXJOb2RlKTsKIAotUmVmUHRyPENoYW5uZWxNZXJnZXJOb2RlPiBDaGFubmVsTWVyZ2VyTm9kZTo6
Y3JlYXRlKEF1ZGlvQ29udGV4dCYgY29udGV4dCwgZmxvYXQgc2FtcGxlUmF0ZSwgdW5zaWduZWQg
bnVtYmVyT2ZJbnB1dHMpCitSZWZQdHI8Q2hhbm5lbE1lcmdlck5vZGU+IENoYW5uZWxNZXJnZXJO
b2RlOjpjcmVhdGUoQXVkaW9Db250ZXh0QmFzZSYgY29udGV4dCwgZmxvYXQgc2FtcGxlUmF0ZSwg
dW5zaWduZWQgbnVtYmVyT2ZJbnB1dHMpCiB7CiAgICAgaWYgKCFudW1iZXJPZklucHV0cyB8fCBu
dW1iZXJPZklucHV0cyA+IEF1ZGlvQ29udGV4dDo6bWF4TnVtYmVyT2ZDaGFubmVscygpKQogICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTUxLDcgKzUxLDcgQEAgUmVmUHRyPENoYW5uZWxNZXJn
ZXJOb2RlPiBDaGFubmVsTWVyZ2VyTm9kZTo6Y3JlYXRlKEF1ZGlvQ29udGV4dCYgY29udGV4dCwg
ZmxvYXQKICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBDaGFubmVsTWVyZ2VyTm9kZShjb250ZXh0
LCBzYW1wbGVSYXRlLCBudW1iZXJPZklucHV0cykpOyAgICAgIAogfQogCi1DaGFubmVsTWVyZ2Vy
Tm9kZTo6Q2hhbm5lbE1lcmdlck5vZGUoQXVkaW9Db250ZXh0JiBjb250ZXh0LCBmbG9hdCBzYW1w
bGVSYXRlLCB1bnNpZ25lZCBudW1iZXJPZklucHV0cykKK0NoYW5uZWxNZXJnZXJOb2RlOjpDaGFu
bmVsTWVyZ2VyTm9kZShBdWRpb0NvbnRleHRCYXNlJiBjb250ZXh0LCBmbG9hdCBzYW1wbGVSYXRl
LCB1bnNpZ25lZCBudW1iZXJPZklucHV0cykKICAgICA6IEF1ZGlvTm9kZShjb250ZXh0LCBzYW1w
bGVSYXRlKQogICAgICwgbV9kZXNpcmVkTnVtYmVyT2ZPdXRwdXRDaGFubmVscyhEZWZhdWx0TnVt
YmVyT2ZPdXRwdXRDaGFubmVscykKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViYXVkaW8vQ2hhbm5lbE1lcmdlck5vZGUuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViYXVkaW8vQ2hhbm5lbE1lcmdlck5vZGUuaAppbmRleCA2NjYzNmVlZDZmN2VlODU1MWU5MmNj
ODc3YTA0YzVjYzNlNWZkZjFkLi42Mjk3NmUwNTA3MzQxZmY5MjY2MGE2YWYwZGI1OGFlYmE1NTc2
ODFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0NoYW5uZWxN
ZXJnZXJOb2RlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9DaGFubmVs
TWVyZ2VyTm9kZS5oCkBAIC0zNyw3ICszNyw3IEBAIGNsYXNzIEF1ZGlvQ29udGV4dDsKIGNsYXNz
IENoYW5uZWxNZXJnZXJOb2RlIGZpbmFsIDogcHVibGljIEF1ZGlvTm9kZSB7CiAgICAgV1RGX01B
S0VfSVNPX0FMTE9DQVRFRChDaGFubmVsTWVyZ2VyTm9kZSk7CiBwdWJsaWM6Ci0gICAgc3RhdGlj
IFJlZlB0cjxDaGFubmVsTWVyZ2VyTm9kZT4gY3JlYXRlKEF1ZGlvQ29udGV4dCYsIGZsb2F0IHNh
bXBsZVJhdGUsIHVuc2lnbmVkIG51bWJlck9mSW5wdXRzKTsKKyAgICBzdGF0aWMgUmVmUHRyPENo
YW5uZWxNZXJnZXJOb2RlPiBjcmVhdGUoQXVkaW9Db250ZXh0QmFzZSYsIGZsb2F0IHNhbXBsZVJh
dGUsIHVuc2lnbmVkIG51bWJlck9mSW5wdXRzKTsKIAogICAgIC8vIEF1ZGlvTm9kZQogICAgIHZv
aWQgcHJvY2VzcyhzaXplX3QgZnJhbWVzVG9Qcm9jZXNzKSBvdmVycmlkZTsKQEAgLTUyLDcgKzUy
LDcgQEAgcHJpdmF0ZToKICAgICBkb3VibGUgdGFpbFRpbWUoKSBjb25zdCBvdmVycmlkZSB7IHJl
dHVybiAwOyB9CiAgICAgZG91YmxlIGxhdGVuY3lUaW1lKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1
cm4gMDsgfQogCi0gICAgQ2hhbm5lbE1lcmdlck5vZGUoQXVkaW9Db250ZXh0JiwgZmxvYXQgc2Ft
cGxlUmF0ZSwgdW5zaWduZWQgbnVtYmVyT2ZJbnB1dHMpOworICAgIENoYW5uZWxNZXJnZXJOb2Rl
KEF1ZGlvQ29udGV4dEJhc2UmLCBmbG9hdCBzYW1wbGVSYXRlLCB1bnNpZ25lZCBudW1iZXJPZklu
cHV0cyk7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0NoYW5uZWxTcGxpdHRlck5vZGUuY3BwIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9DaGFubmVsU3BsaXR0ZXJOb2RlLmNwcAppbmRleCA4
MmY2OWEwNGY5OTkyNjFkNThjMTUyYmZjNjAyYTM2NjA5NjA5MWI5Li5mNTU1M2QwYzgzNWEzOTJk
M2NlZWRlOTJlZTVmOGI4YzkyOGY5ZGIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmF1ZGlvL0NoYW5uZWxTcGxpdHRlck5vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViYXVkaW8vQ2hhbm5lbFNwbGl0dGVyTm9kZS5jcHAKQEAgLTM3LDcgKzM3LDcg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBXVEZfTUFLRV9JU09fQUxMT0NBVEVEX0lNUEwoQ2hh
bm5lbFNwbGl0dGVyTm9kZSk7CiAgICAgCi1SZWZQdHI8Q2hhbm5lbFNwbGl0dGVyTm9kZT4gQ2hh
bm5lbFNwbGl0dGVyTm9kZTo6Y3JlYXRlKEF1ZGlvQ29udGV4dCYgY29udGV4dCwgZmxvYXQgc2Ft
cGxlUmF0ZSwgdW5zaWduZWQgbnVtYmVyT2ZPdXRwdXRzKQorUmVmUHRyPENoYW5uZWxTcGxpdHRl
ck5vZGU+IENoYW5uZWxTcGxpdHRlck5vZGU6OmNyZWF0ZShBdWRpb0NvbnRleHRCYXNlJiBjb250
ZXh0LCBmbG9hdCBzYW1wbGVSYXRlLCB1bnNpZ25lZCBudW1iZXJPZk91dHB1dHMpCiB7CiAgICAg
aWYgKCFudW1iZXJPZk91dHB1dHMgfHwgbnVtYmVyT2ZPdXRwdXRzID4gQXVkaW9Db250ZXh0Ojpt
YXhOdW1iZXJPZkNoYW5uZWxzKCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwpAQCAtNDUsNyAr
NDUsNyBAQCBSZWZQdHI8Q2hhbm5lbFNwbGl0dGVyTm9kZT4gQ2hhbm5lbFNwbGl0dGVyTm9kZTo6
Y3JlYXRlKEF1ZGlvQ29udGV4dCYgY29udGV4dCwgZgogICAgIHJldHVybiBhZG9wdFJlZigqbmV3
IENoYW5uZWxTcGxpdHRlck5vZGUoY29udGV4dCwgc2FtcGxlUmF0ZSwgbnVtYmVyT2ZPdXRwdXRz
KSk7ICAgICAgCiB9CiAKLUNoYW5uZWxTcGxpdHRlck5vZGU6OkNoYW5uZWxTcGxpdHRlck5vZGUo
QXVkaW9Db250ZXh0JiBjb250ZXh0LCBmbG9hdCBzYW1wbGVSYXRlLCB1bnNpZ25lZCBudW1iZXJP
Zk91dHB1dHMpCitDaGFubmVsU3BsaXR0ZXJOb2RlOjpDaGFubmVsU3BsaXR0ZXJOb2RlKEF1ZGlv
Q29udGV4dEJhc2UmIGNvbnRleHQsIGZsb2F0IHNhbXBsZVJhdGUsIHVuc2lnbmVkIG51bWJlck9m
T3V0cHV0cykKICAgICA6IEF1ZGlvTm9kZShjb250ZXh0LCBzYW1wbGVSYXRlKQogewogICAgIHNl
dE5vZGVUeXBlKE5vZGVUeXBlQ2hhbm5lbFNwbGl0dGVyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQ2hhbm5lbFNwbGl0dGVyTm9kZS5oIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJhdWRpby9DaGFubmVsU3BsaXR0ZXJOb2RlLmgKaW5kZXggOGQ5ODMy
ODEyMzdkZDFkMGZjZjE0NzBhMzhiMDAzZmU0MjY2YjUxZS4uMTNkOGQ5ODBkYWE3NzMzMDRmMTY5
MDVlOTU0OGE0MjBhZTNlZTQ1YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJhdWRpby9DaGFubmVsU3BsaXR0ZXJOb2RlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJhdWRpby9DaGFubmVsU3BsaXR0ZXJOb2RlLmgKQEAgLTMzLDcgKzMzLDcgQEAgY2xhc3Mg
QXVkaW9Db250ZXh0OwogY2xhc3MgQ2hhbm5lbFNwbGl0dGVyTm9kZSBmaW5hbCA6IHB1YmxpYyBB
dWRpb05vZGUgewogICAgIFdURl9NQUtFX0lTT19BTExPQ0FURUQoQ2hhbm5lbFNwbGl0dGVyTm9k
ZSk7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZlB0cjxDaGFubmVsU3BsaXR0ZXJOb2RlPiBjcmVh
dGUoQXVkaW9Db250ZXh0JiwgZmxvYXQgc2FtcGxlUmF0ZSwgdW5zaWduZWQgbnVtYmVyT2ZPdXRw
dXRzKTsKKyAgICBzdGF0aWMgUmVmUHRyPENoYW5uZWxTcGxpdHRlck5vZGU+IGNyZWF0ZShBdWRp
b0NvbnRleHRCYXNlJiwgZmxvYXQgc2FtcGxlUmF0ZSwgdW5zaWduZWQgbnVtYmVyT2ZPdXRwdXRz
KTsKIAogICAgIC8vIEF1ZGlvTm9kZQogICAgIHZvaWQgcHJvY2VzcyhzaXplX3QgZnJhbWVzVG9Q
cm9jZXNzKSBvdmVycmlkZTsKQEAgLTQzLDcgKzQzLDcgQEAgcHJpdmF0ZToKICAgICBkb3VibGUg
dGFpbFRpbWUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiAwOyB9CiAgICAgZG91YmxlIGxhdGVu
Y3lUaW1lKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gMDsgfQogCi0gICAgQ2hhbm5lbFNwbGl0
dGVyTm9kZShBdWRpb0NvbnRleHQmLCBmbG9hdCBzYW1wbGVSYXRlLCB1bnNpZ25lZCBudW1iZXJP
Zk91dHB1dHMpOworICAgIENoYW5uZWxTcGxpdHRlck5vZGUoQXVkaW9Db250ZXh0QmFzZSYsIGZs
b2F0IHNhbXBsZVJhdGUsIHVuc2lnbmVkIG51bWJlck9mT3V0cHV0cyk7CiB9OwogCiB9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1
ZGlvL0NvbnZvbHZlck5vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9D
b252b2x2ZXJOb2RlLmNwcAppbmRleCBjYzk3MmYxMGRiZDdhYmZmNzNmNzkzY2ZhY2M3YzQwMDhh
NzIzNDQ3Li5lMWY1ZWI4MTU2MGVjMmU5MmI4MzU4MzZjODRiMTgxOTQzM2FmYTRmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0NvbnZvbHZlck5vZGUuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQ29udm9sdmVyTm9kZS5jcHAKQEAg
LTQ3LDcgKzQ3LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBXVEZfTUFLRV9JU09fQUxMT0NB
VEVEX0lNUEwoQ29udm9sdmVyTm9kZSk7CiAKLUNvbnZvbHZlck5vZGU6OkNvbnZvbHZlck5vZGUo
QXVkaW9Db250ZXh0JiBjb250ZXh0LCBmbG9hdCBzYW1wbGVSYXRlKQorQ29udm9sdmVyTm9kZTo6
Q29udm9sdmVyTm9kZShBdWRpb0NvbnRleHRCYXNlJiBjb250ZXh0LCBmbG9hdCBzYW1wbGVSYXRl
KQogICAgIDogQXVkaW9Ob2RlKGNvbnRleHQsIHNhbXBsZVJhdGUpCiB7CiAgICAgc2V0Tm9kZVR5
cGUoTm9kZVR5cGVDb252b2x2ZXIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJhdWRpby9Db252b2x2ZXJOb2RlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1
ZGlvL0NvbnZvbHZlck5vZGUuaAppbmRleCA2NGJmZWJlZDJkODdlNzRjMzNhZGZhYzkzNDlkMWI5
MjZlMGY2NmMzLi4zMWNlYzFlY2M3ZjBlMDA0NWVmYTc0ZmJlZjM2MDY4ZGRiYjFmZGZjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0NvbnZvbHZlck5vZGUuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0NvbnZvbHZlck5vZGUuaApAQCAt
MzUsNyArMzUsNyBAQCBjbGFzcyBSZXZlcmI7CiBjbGFzcyBDb252b2x2ZXJOb2RlIGZpbmFsIDog
cHVibGljIEF1ZGlvTm9kZSB7CiAgICAgV1RGX01BS0VfSVNPX0FMTE9DQVRFRChDb252b2x2ZXJO
b2RlKTsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPENvbnZvbHZlck5vZGU+IGNyZWF0ZShBdWRp
b0NvbnRleHQmIGNvbnRleHQsIGZsb2F0IHNhbXBsZVJhdGUpCisgICAgc3RhdGljIFJlZjxDb252
b2x2ZXJOb2RlPiBjcmVhdGUoQXVkaW9Db250ZXh0QmFzZSYgY29udGV4dCwgZmxvYXQgc2FtcGxl
UmF0ZSkKICAgICB7CiAgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IENvbnZvbHZlck5vZGUo
Y29udGV4dCwgc2FtcGxlUmF0ZSkpOwogICAgIH0KQEAgLTQ5LDcgKzQ5LDcgQEAgcHVibGljOgog
ICAgIHZvaWQgc2V0Tm9ybWFsaXplKGJvb2wgbm9ybWFsaXplKSB7IG1fbm9ybWFsaXplID0gbm9y
bWFsaXplOyB9CiAKIHByaXZhdGU6Ci0gICAgQ29udm9sdmVyTm9kZShBdWRpb0NvbnRleHQmLCBm
bG9hdCBzYW1wbGVSYXRlKTsKKyAgICBDb252b2x2ZXJOb2RlKEF1ZGlvQ29udGV4dEJhc2UmLCBm
bG9hdCBzYW1wbGVSYXRlKTsKIAogICAgIGRvdWJsZSB0YWlsVGltZSgpIGNvbnN0IGZpbmFsOwog
ICAgIGRvdWJsZSBsYXRlbmN5VGltZSgpIGNvbnN0IGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9EZWZhdWx0QXVkaW9EZXN0aW5hdGlvbk5vZGUuY3Bw
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9EZWZhdWx0QXVkaW9EZXN0aW5hdGlv
bk5vZGUuY3BwCmluZGV4IDE3NTlhZTRhNWE2MzViYzA1OGUzMGMzNjVjMTM0NGZiYjM5NzllMTUu
LjA3ZWI5YTQxYjVjYzhlODM5MDlhZTRiNmU2MzRlM2NhOWJmNTM3ZWEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vRGVmYXVsdEF1ZGlvRGVzdGluYXRpb25Ob2Rl
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0RlZmF1bHRBdWRpb0Rl
c3RpbmF0aW9uTm9kZS5jcHAKQEAgLTQzLDcgKzQzLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
CiBXVEZfTUFLRV9JU09fQUxMT0NBVEVEX0lNUEwoRGVmYXVsdEF1ZGlvRGVzdGluYXRpb25Ob2Rl
KTsKICAgICAKLURlZmF1bHRBdWRpb0Rlc3RpbmF0aW9uTm9kZTo6RGVmYXVsdEF1ZGlvRGVzdGlu
YXRpb25Ob2RlKEF1ZGlvQ29udGV4dCYgY29udGV4dCkKK0RlZmF1bHRBdWRpb0Rlc3RpbmF0aW9u
Tm9kZTo6RGVmYXVsdEF1ZGlvRGVzdGluYXRpb25Ob2RlKEF1ZGlvQ29udGV4dEJhc2UmIGNvbnRl
eHQpCiAgICAgOiBBdWRpb0Rlc3RpbmF0aW9uTm9kZShjb250ZXh0LCBBdWRpb0Rlc3RpbmF0aW9u
OjpoYXJkd2FyZVNhbXBsZVJhdGUoKSkKIHsKICAgICAvLyBOb2RlLXNwZWNpZmljIGRlZmF1bHQg
bWl4aW5nIHJ1bGVzLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRp
by9EZWZhdWx0QXVkaW9EZXN0aW5hdGlvbk5vZGUuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViYXVkaW8vRGVmYXVsdEF1ZGlvRGVzdGluYXRpb25Ob2RlLmgKaW5kZXggNmZkOTVjMGYzMDEx
NGNkZTMyYzI3ZmExOGE2MWFlMmNkZTUxMjhmYy4uOTZjODM3Yzk5MzRlYjAzYmYwNGI0ZGUzOWJj
NDJlZmZkZmRlZThlMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRp
by9EZWZhdWx0QXVkaW9EZXN0aW5hdGlvbk5vZGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmF1ZGlvL0RlZmF1bHRBdWRpb0Rlc3RpbmF0aW9uTm9kZS5oCkBAIC0zMyw3ICszMyw3
IEBAIGNsYXNzIEF1ZGlvRGVzdGluYXRpb247CiBjbGFzcyBEZWZhdWx0QXVkaW9EZXN0aW5hdGlv
bk5vZGUgZmluYWwgOiBwdWJsaWMgQXVkaW9EZXN0aW5hdGlvbk5vZGUgewogICAgIFdURl9NQUtF
X0lTT19BTExPQ0FURUQoRGVmYXVsdEF1ZGlvRGVzdGluYXRpb25Ob2RlKTsKIHB1YmxpYzoKLSAg
ICBzdGF0aWMgUmVmPERlZmF1bHRBdWRpb0Rlc3RpbmF0aW9uTm9kZT4gY3JlYXRlKEF1ZGlvQ29u
dGV4dCYgY29udGV4dCkKKyAgICBzdGF0aWMgUmVmPERlZmF1bHRBdWRpb0Rlc3RpbmF0aW9uTm9k
ZT4gY3JlYXRlKEF1ZGlvQ29udGV4dEJhc2UmIGNvbnRleHQpCiAgICAgewogICAgICAgICByZXR1
cm4gYWRvcHRSZWYoKm5ldyBEZWZhdWx0QXVkaW9EZXN0aW5hdGlvbk5vZGUoY29udGV4dCkpOyAg
ICAgCiAgICAgfQpAQCAtNDEsNyArNDEsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB+RGVmYXVs
dEF1ZGlvRGVzdGluYXRpb25Ob2RlKCk7CiAgICAgCiBwcml2YXRlOgotICAgIGV4cGxpY2l0IERl
ZmF1bHRBdWRpb0Rlc3RpbmF0aW9uTm9kZShBdWRpb0NvbnRleHQmKTsKKyAgICBleHBsaWNpdCBE
ZWZhdWx0QXVkaW9EZXN0aW5hdGlvbk5vZGUoQXVkaW9Db250ZXh0QmFzZSYpOwogICAgIHZvaWQg
Y3JlYXRlRGVzdGluYXRpb24oKTsKIAogICAgIHZvaWQgaW5pdGlhbGl6ZSgpIGZpbmFsOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9EZWxheU5vZGUuY3BwIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9EZWxheU5vZGUuY3BwCmluZGV4IDgxYmQ3
ZDE5YjI3ZTc0MWI1MGY2Zjg0ZTUxZjdjZTI1NTc4MDJiOTMuLjQwNTI3YzgxZjlmNWJjNTZiY2Y0
ZTcwYzUxNmNiYzE5ZTViZTFlOGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViYXVkaW8vRGVsYXlOb2RlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1
ZGlvL0RlbGF5Tm9kZS5jcHAKQEAgLTM3LDE0ICszNywxNCBAQCBXVEZfTUFLRV9JU09fQUxMT0NB
VEVEX0lNUEwoRGVsYXlOb2RlKTsKIAogY29uc3QgZG91YmxlIG1heGltdW1BbGxvd2VkRGVsYXlU
aW1lID0gMTgwOwogCi1pbmxpbmUgRGVsYXlOb2RlOjpEZWxheU5vZGUoQXVkaW9Db250ZXh0JiBj
b250ZXh0LCBmbG9hdCBzYW1wbGVSYXRlLCBkb3VibGUgbWF4RGVsYXlUaW1lKQoraW5saW5lIERl
bGF5Tm9kZTo6RGVsYXlOb2RlKEF1ZGlvQ29udGV4dEJhc2UmIGNvbnRleHQsIGZsb2F0IHNhbXBs
ZVJhdGUsIGRvdWJsZSBtYXhEZWxheVRpbWUpCiAgICAgOiBBdWRpb0Jhc2ljUHJvY2Vzc29yTm9k
ZShjb250ZXh0LCBzYW1wbGVSYXRlKQogewogICAgIHNldE5vZGVUeXBlKE5vZGVUeXBlRGVsYXkp
OwogICAgIG1fcHJvY2Vzc29yID0gbWFrZVVuaXF1ZTxEZWxheVByb2Nlc3Nvcj4oY29udGV4dCwg
c2FtcGxlUmF0ZSwgMSwgbWF4RGVsYXlUaW1lKTsKIH0KIAotRXhjZXB0aW9uT3I8UmVmPERlbGF5
Tm9kZT4+IERlbGF5Tm9kZTo6Y3JlYXRlKEF1ZGlvQ29udGV4dCYgY29udGV4dCwgZmxvYXQgc2Ft
cGxlUmF0ZSwgZG91YmxlIG1heERlbGF5VGltZSkKK0V4Y2VwdGlvbk9yPFJlZjxEZWxheU5vZGU+
PiBEZWxheU5vZGU6OmNyZWF0ZShBdWRpb0NvbnRleHRCYXNlJiBjb250ZXh0LCBmbG9hdCBzYW1w
bGVSYXRlLCBkb3VibGUgbWF4RGVsYXlUaW1lKQogewogICAgIGlmIChtYXhEZWxheVRpbWUgPD0g
MCB8fCBtYXhEZWxheVRpbWUgPj0gbWF4aW11bUFsbG93ZWREZWxheVRpbWUpCiAgICAgICAgIHJl
dHVybiBFeGNlcHRpb24geyBOb3RTdXBwb3J0ZWRFcnJvciB9OwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9EZWxheU5vZGUuaCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViYXVkaW8vRGVsYXlOb2RlLmgKaW5kZXggYzllY2FkOWY5ZmRjNTFjNDdjNTJjM2Ni
ODY4NzBmZDg0MTFiOWZmYS4uYjZhZmRkMGY5MzA3MThiNDIzMjMxZjJmNmNmOTAwNTk5MTk5NzAx
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9EZWxheU5vZGUu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0RlbGF5Tm9kZS5oCkBAIC0z
MSwxMiArMzEsMTIgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgRGVsYXlOb2RlIGZpbmFs
IDogcHVibGljIEF1ZGlvQmFzaWNQcm9jZXNzb3JOb2RlIHsKICAgICBXVEZfTUFLRV9JU09fQUxM
T0NBVEVEKERlbGF5Tm9kZSk7CiBwdWJsaWM6Ci0gICAgc3RhdGljIEV4Y2VwdGlvbk9yPFJlZjxE
ZWxheU5vZGU+PiBjcmVhdGUoQXVkaW9Db250ZXh0JiwgZmxvYXQgc2FtcGxlUmF0ZSwgZG91Ymxl
IG1heERlbGF5VGltZSk7CisgICAgc3RhdGljIEV4Y2VwdGlvbk9yPFJlZjxEZWxheU5vZGU+PiBj
cmVhdGUoQXVkaW9Db250ZXh0QmFzZSYsIGZsb2F0IHNhbXBsZVJhdGUsIGRvdWJsZSBtYXhEZWxh
eVRpbWUpOwogCiAgICAgQXVkaW9QYXJhbSogZGVsYXlUaW1lKCk7CiAKIHByaXZhdGU6Ci0gICAg
RGVsYXlOb2RlKEF1ZGlvQ29udGV4dCYsIGZsb2F0IHNhbXBsZVJhdGUsIGRvdWJsZSBtYXhEZWxh
eVRpbWUpOworICAgIERlbGF5Tm9kZShBdWRpb0NvbnRleHRCYXNlJiwgZmxvYXQgc2FtcGxlUmF0
ZSwgZG91YmxlIG1heERlbGF5VGltZSk7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0RlbGF5UHJvY2Vzc29y
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vRGVsYXlQcm9jZXNzb3IuY3Bw
CmluZGV4IDEwMzY2ZWY2ZWFmYjZjNDRkYjE5MTI3MWE5OTVkOWU2ZDJhY2JhNjkuLmNiYmZkOWZh
MmZhYTRjZjdlYWUwMWIzMjZjNDZkY2Y1ODdiZmUzYzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViYXVkaW8vRGVsYXlQcm9jZXNzb3IuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViYXVkaW8vRGVsYXlQcm9jZXNzb3IuY3BwCkBAIC0zMiw3ICszMiw3IEBA
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotRGVsYXlQcm9jZXNzb3I6OkRlbGF5UHJvY2Vzc29y
KEF1ZGlvQ29udGV4dCYgY29udGV4dCwgZmxvYXQgc2FtcGxlUmF0ZSwgdW5zaWduZWQgbnVtYmVy
T2ZDaGFubmVscywgZG91YmxlIG1heERlbGF5VGltZSkKK0RlbGF5UHJvY2Vzc29yOjpEZWxheVBy
b2Nlc3NvcihBdWRpb0NvbnRleHRCYXNlJiBjb250ZXh0LCBmbG9hdCBzYW1wbGVSYXRlLCB1bnNp
Z25lZCBudW1iZXJPZkNoYW5uZWxzLCBkb3VibGUgbWF4RGVsYXlUaW1lKQogICAgIDogQXVkaW9E
U1BLZXJuZWxQcm9jZXNzb3Ioc2FtcGxlUmF0ZSwgbnVtYmVyT2ZDaGFubmVscykKICAgICAsIG1f
bWF4RGVsYXlUaW1lKG1heERlbGF5VGltZSkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViYXVkaW8vRGVsYXlQcm9jZXNzb3IuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViYXVkaW8vRGVsYXlQcm9jZXNzb3IuaAppbmRleCA4NWQ5Y2M2ZDdmZGUxNmNlZmQ3OGQ0
Nzk0MjEwZGRkMDgyMzRkZjNmLi5jYmFjNzllY2YwZmUzMzljZjEyZjkzZDRkYjI1YWYwNTE1MmZj
ZWZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0RlbGF5UHJv
Y2Vzc29yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9EZWxheVByb2Nl
c3Nvci5oCkBAIC0zNiw3ICszNiw3IEBAIGNsYXNzIEF1ZGlvRFNQS2VybmVsOwogY2xhc3MgRGVs
YXlQcm9jZXNzb3IgZmluYWwgOiBwdWJsaWMgQXVkaW9EU1BLZXJuZWxQcm9jZXNzb3IgewogICAg
IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgotICAgIERlbGF5UHJvY2Vzc29yKEF1
ZGlvQ29udGV4dCYsIGZsb2F0IHNhbXBsZVJhdGUsIHVuc2lnbmVkIG51bWJlck9mQ2hhbm5lbHMs
IGRvdWJsZSBtYXhEZWxheVRpbWUpOworICAgIERlbGF5UHJvY2Vzc29yKEF1ZGlvQ29udGV4dEJh
c2UmLCBmbG9hdCBzYW1wbGVSYXRlLCB1bnNpZ25lZCBudW1iZXJPZkNoYW5uZWxzLCBkb3VibGUg
bWF4RGVsYXlUaW1lKTsKICAgICB2aXJ0dWFsIH5EZWxheVByb2Nlc3NvcigpOwogICAgIAogICAg
IHN0ZDo6dW5pcXVlX3B0cjxBdWRpb0RTUEtlcm5lbD4gY3JlYXRlS2VybmVsKCkgb3ZlcnJpZGU7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0Rpc3RhbmNlTW9k
ZWxUeXBlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0Rpc3RhbmNlTW9kZWxU
eXBlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uZGZlMTMxODJjYzBhNDRiZGQwNDgwYjcyYWZmZDdiNTU3MDg1MjNk
YgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vRGlz
dGFuY2VNb2RlbFR5cGUuaApAQCAtMCwwICsxLDI3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDIwLCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
ICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBB
UkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTgorICogQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTCisgKiBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9u
Y2UKKworI2luY2x1ZGUgIkRpc3RhbmNlLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmF1ZGlvL0Rpc3RhbmNlTW9kZWxUeXBlLmlkbCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViYXVkaW8vRGlzdGFuY2VNb2RlbFR5cGUuaWRsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmY4ZmZjZmVk
MjJjOGY5NjBkMDRmM2U4NWJlM2RhNThiNzIwNzM3ZmUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0Rpc3RhbmNlTW9kZWxUeXBlLmlkbApAQCAtMCww
ICsxLDMxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwLCBHb29nbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQgQU5ZCisg
KiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04KKyAqIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUworICogU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworWworICAgIENvbmRpdGlvbmFsPVdFQl9BVURJTywKK10g
ZW51bSBEaXN0YW5jZU1vZGVsVHlwZSB7CisgICAgImxpbmVhciIsCisgICAgImludmVyc2UiLAor
ICAgICJleHBvbmVudGlhbCIKK307CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmF1ZGlvL0R5bmFtaWNzQ29tcHJlc3Nvck5vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJhdWRpby9EeW5hbWljc0NvbXByZXNzb3JOb2RlLmNwcAppbmRleCAxNDA5NmQ4ZjBj
NTk2YTUyOTcxNjY2ZWY4MjY3YTAyM2ZkYjQ0YjI5Li5jMzNkMWRlNzJkYzkxZmU4ZDc0ZTc1NDdh
MjM1OTljYTAxZmM0ODViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1
ZGlvL0R5bmFtaWNzQ29tcHJlc3Nvck5vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViYXVkaW8vRHluYW1pY3NDb21wcmVzc29yTm9kZS5jcHAKQEAgLTQxLDcgKzQxLDcgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogCiBXVEZfTUFLRV9JU09fQUxMT0NBVEVEX0lNUEwoRHluYW1p
Y3NDb21wcmVzc29yTm9kZSk7CiAKLUR5bmFtaWNzQ29tcHJlc3Nvck5vZGU6OkR5bmFtaWNzQ29t
cHJlc3Nvck5vZGUoQXVkaW9Db250ZXh0JiBjb250ZXh0LCBmbG9hdCBzYW1wbGVSYXRlKQorRHlu
YW1pY3NDb21wcmVzc29yTm9kZTo6RHluYW1pY3NDb21wcmVzc29yTm9kZShBdWRpb0NvbnRleHRC
YXNlJiBjb250ZXh0LCBmbG9hdCBzYW1wbGVSYXRlKQogICAgIDogQXVkaW9Ob2RlKGNvbnRleHQs
IHNhbXBsZVJhdGUpCiB7CiAgICAgc2V0Tm9kZVR5cGUoTm9kZVR5cGVEeW5hbWljc0NvbXByZXNz
b3IpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9EeW5hbWlj
c0NvbXByZXNzb3JOb2RlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0R5bmFt
aWNzQ29tcHJlc3Nvck5vZGUuaAppbmRleCA0NGNiZmJhYTA1OTcxN2Y2YzM1MDMyMmEyODA0ZTVk
ODYzYTY2ODU3Li5iNzA1M2IyMjE3M2MwMmNhMGQyNmVjZTYxYTE4Yzc3ZWUwNzUyZGZlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0R5bmFtaWNzQ29tcHJlc3Nv
ck5vZGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0R5bmFtaWNzQ29t
cHJlc3Nvck5vZGUuaApAQCAtMzUsNyArMzUsNyBAQCBjbGFzcyBEeW5hbWljc0NvbXByZXNzb3I7
CiBjbGFzcyBEeW5hbWljc0NvbXByZXNzb3JOb2RlIGZpbmFsIDogcHVibGljIEF1ZGlvTm9kZSB7
CiAgICAgV1RGX01BS0VfSVNPX0FMTE9DQVRFRChEeW5hbWljc0NvbXByZXNzb3JOb2RlKTsKIHB1
YmxpYzoKLSAgICBzdGF0aWMgUmVmPER5bmFtaWNzQ29tcHJlc3Nvck5vZGU+IGNyZWF0ZShBdWRp
b0NvbnRleHQmIGNvbnRleHQsIGZsb2F0IHNhbXBsZVJhdGUpCisgICAgc3RhdGljIFJlZjxEeW5h
bWljc0NvbXByZXNzb3JOb2RlPiBjcmVhdGUoQXVkaW9Db250ZXh0QmFzZSYgY29udGV4dCwgZmxv
YXQgc2FtcGxlUmF0ZSkKICAgICB7CiAgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IER5bmFt
aWNzQ29tcHJlc3Nvck5vZGUoY29udGV4dCwgc2FtcGxlUmF0ZSkpOwogICAgIH0KQEAgLTYyLDcg
KzYyLDcgQEAgcHJpdmF0ZToKICAgICBkb3VibGUgdGFpbFRpbWUoKSBjb25zdCBvdmVycmlkZTsK
ICAgICBkb3VibGUgbGF0ZW5jeVRpbWUoKSBjb25zdCBvdmVycmlkZTsKIAotICAgIER5bmFtaWNz
Q29tcHJlc3Nvck5vZGUoQXVkaW9Db250ZXh0JiwgZmxvYXQgc2FtcGxlUmF0ZSk7CisgICAgRHlu
YW1pY3NDb21wcmVzc29yTm9kZShBdWRpb0NvbnRleHRCYXNlJiwgZmxvYXQgc2FtcGxlUmF0ZSk7
CiAKICAgICBzdGQ6OnVuaXF1ZV9wdHI8RHluYW1pY3NDb21wcmVzc29yPiBtX2R5bmFtaWNzQ29t
cHJlc3NvcjsKICAgICBSZWZQdHI8QXVkaW9QYXJhbT4gbV90aHJlc2hvbGQ7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0dhaW5Ob2RlLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vR2Fpbk5vZGUuY3BwCmluZGV4IDI1N2RmMmVjZTIzMzhj
YmNiYWI5ZWQwNTEyMzNjNjRiMWM1N2YyNWQuLjk4NGQxMTk0YmRkNTUyZjM4NGIwZDZkOWJjZWJm
N2RhNDJmZDg2OWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8v
R2Fpbk5vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vR2Fpbk5v
ZGUuY3BwCkBAIC0zNyw3ICszNyw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogV1RGX01BS0Vf
SVNPX0FMTE9DQVRFRF9JTVBMKEdhaW5Ob2RlKTsKIAotR2Fpbk5vZGU6OkdhaW5Ob2RlKEF1ZGlv
Q29udGV4dCYgY29udGV4dCwgZmxvYXQgc2FtcGxlUmF0ZSkKK0dhaW5Ob2RlOjpHYWluTm9kZShB
dWRpb0NvbnRleHRCYXNlJiBjb250ZXh0LCBmbG9hdCBzYW1wbGVSYXRlKQogICAgIDogQXVkaW9O
b2RlKGNvbnRleHQsIHNhbXBsZVJhdGUpCiAgICAgLCBtX2xhc3RHYWluKDEuMCkKICAgICAsIG1f
c2FtcGxlQWNjdXJhdGVHYWluVmFsdWVzKEF1ZGlvTm9kZTo6UHJvY2Vzc2luZ1NpemVJbkZyYW1l
cykgLy8gRklYTUU6IGNhbiBwcm9iYWJseSBzaGFyZSB0ZW1wIGJ1ZmZlciBpbiBjb250ZXh0CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0dhaW5Ob2RlLmggYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0dhaW5Ob2RlLmgKaW5kZXggZmE4NWIwYjlm
ZjU0N2YzMjlmNTY2NWIyYTA1NTc3NGJlMGY3Y2FiOC4uZGNmODU1YTkxYzk1N2E5MDAwYmFmOGI5
OTQzNmFlNzczNzlmYmI1MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJh
dWRpby9HYWluTm9kZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vR2Fp
bk5vZGUuaApAQCAtMzgsNyArMzgsNyBAQCBjbGFzcyBBdWRpb0NvbnRleHQ7CiBjbGFzcyBHYWlu
Tm9kZSBmaW5hbCA6IHB1YmxpYyBBdWRpb05vZGUgewogICAgIFdURl9NQUtFX0lTT19BTExPQ0FU
RUQoR2Fpbk5vZGUpOwogcHVibGljOgotICAgIHN0YXRpYyBSZWY8R2Fpbk5vZGU+IGNyZWF0ZShB
dWRpb0NvbnRleHQmIGNvbnRleHQsIGZsb2F0IHNhbXBsZVJhdGUpCisgICAgc3RhdGljIFJlZjxH
YWluTm9kZT4gY3JlYXRlKEF1ZGlvQ29udGV4dEJhc2UmIGNvbnRleHQsIGZsb2F0IHNhbXBsZVJh
dGUpCiAgICAgewogICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBHYWluTm9kZShjb250ZXh0
LCBzYW1wbGVSYXRlKSk7CiAgICAgfQpAQCAtNTcsNyArNTcsNyBAQCBwcml2YXRlOgogICAgIGRv
dWJsZSB0YWlsVGltZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIDA7IH0KICAgICBkb3VibGUg
bGF0ZW5jeVRpbWUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiAwOyB9CiAKLSAgICBHYWluTm9k
ZShBdWRpb0NvbnRleHQmLCBmbG9hdCBzYW1wbGVSYXRlKTsKKyAgICBHYWluTm9kZShBdWRpb0Nv
bnRleHRCYXNlJiwgZmxvYXQgc2FtcGxlUmF0ZSk7CiAKICAgICBmbG9hdCBtX2xhc3RHYWluOyAv
LyBmb3IgZGUtemlwcGVyaW5nCiAgICAgUmVmUHRyPEF1ZGlvUGFyYW0+IG1fZ2FpbjsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vTWVkaWFFbGVtZW50QXVkaW9T
b3VyY2VOb2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vTWVkaWFFbGVt
ZW50QXVkaW9Tb3VyY2VOb2RlLmNwcAppbmRleCAwZTU5ODFmYTY4NmRiOTIxMmZmYTBmODNlOWJk
Y2QwM2FmOWFhYWMzLi5jNjc1ZDdkZTcxNjgzOTJlODdkZjlmNDNkZmE2NTk5N2I1NGZmOGY0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL01lZGlhRWxlbWVudEF1
ZGlvU291cmNlTm9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9N
ZWRpYUVsZW1lbnRBdWRpb1NvdXJjZU5vZGUuY3BwCkBAIC00MywxMiArNDMsMTIgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogCiBXVEZfTUFLRV9JU09fQUxMT0NBVEVEX0lNUEwoTWVkaWFFbGVtZW50
QXVkaW9Tb3VyY2VOb2RlKTsKIAotUmVmPE1lZGlhRWxlbWVudEF1ZGlvU291cmNlTm9kZT4gTWVk
aWFFbGVtZW50QXVkaW9Tb3VyY2VOb2RlOjpjcmVhdGUoQXVkaW9Db250ZXh0JiBjb250ZXh0LCBI
VE1MTWVkaWFFbGVtZW50JiBtZWRpYUVsZW1lbnQpCitSZWY8TWVkaWFFbGVtZW50QXVkaW9Tb3Vy
Y2VOb2RlPiBNZWRpYUVsZW1lbnRBdWRpb1NvdXJjZU5vZGU6OmNyZWF0ZShBdWRpb0NvbnRleHRC
YXNlJiBjb250ZXh0LCBIVE1MTWVkaWFFbGVtZW50JiBtZWRpYUVsZW1lbnQpCiB7CiAgICAgcmV0
dXJuIGFkb3B0UmVmKCpuZXcgTWVkaWFFbGVtZW50QXVkaW9Tb3VyY2VOb2RlKGNvbnRleHQsIG1l
ZGlhRWxlbWVudCkpOwogfQogCi1NZWRpYUVsZW1lbnRBdWRpb1NvdXJjZU5vZGU6Ok1lZGlhRWxl
bWVudEF1ZGlvU291cmNlTm9kZShBdWRpb0NvbnRleHQmIGNvbnRleHQsIEhUTUxNZWRpYUVsZW1l
bnQmIG1lZGlhRWxlbWVudCkKK01lZGlhRWxlbWVudEF1ZGlvU291cmNlTm9kZTo6TWVkaWFFbGVt
ZW50QXVkaW9Tb3VyY2VOb2RlKEF1ZGlvQ29udGV4dEJhc2UmIGNvbnRleHQsIEhUTUxNZWRpYUVs
ZW1lbnQmIG1lZGlhRWxlbWVudCkKICAgICA6IEF1ZGlvTm9kZShjb250ZXh0LCBjb250ZXh0LnNh
bXBsZVJhdGUoKSkKICAgICAsIG1fbWVkaWFFbGVtZW50KG1lZGlhRWxlbWVudCkKICAgICAsIG1f
c291cmNlTnVtYmVyT2ZDaGFubmVscygwKQpAQCAtOTcsNyArOTcsNyBAQCB2b2lkIE1lZGlhRWxl
bWVudEF1ZGlvU291cmNlTm9kZTo6c2V0Rm9ybWF0KHNpemVfdCBudW1iZXJPZkNoYW5uZWxzLCBm
bG9hdCBzb3VyYwogCiAgICAgICAgIHsKICAgICAgICAgICAgIC8vIFRoZSBjb250ZXh0IG11c3Qg
YmUgbG9ja2VkIHdoZW4gY2hhbmdpbmcgdGhlIG51bWJlciBvZiBvdXRwdXQgY2hhbm5lbHMuCi0g
ICAgICAgICAgICBBdWRpb0NvbnRleHQ6OkF1dG9Mb2NrZXIgY29udGV4dExvY2tlcihjb250ZXh0
KCkpOworICAgICAgICAgICAgQXVkaW9Db250ZXh0QmFzZTo6QXV0b0xvY2tlciBjb250ZXh0TG9j
a2VyKGNvbnRleHQoKSk7CiAKICAgICAgICAgICAgIC8vIERvIGFueSBuZWNlc3NzYXJ5IHJlLWNv
bmZpZ3VyYXRpb24gdG8gdGhlIG91dHB1dCdzIG51bWJlciBvZiBjaGFubmVscy4KICAgICAgICAg
ICAgIG91dHB1dCgwKS0+c2V0TnVtYmVyT2ZDaGFubmVscyhudW1iZXJPZkNoYW5uZWxzKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vTWVkaWFFbGVtZW50QXVk
aW9Tb3VyY2VOb2RlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL01lZGlhRWxl
bWVudEF1ZGlvU291cmNlTm9kZS5oCmluZGV4IDNhMTMxNTQxNWYxOGY5YjM0YWRjZTQyNGYyNmMy
NjEyZDNjNDhmNTkuLjcxZDBlZDEzOGE1ZjlmZDM3MzA1MDIwNTQxZWQ1ZDQ3YzNhZWMwY2MgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vTWVkaWFFbGVtZW50QXVk
aW9Tb3VyY2VOb2RlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9NZWRp
YUVsZW1lbnRBdWRpb1NvdXJjZU5vZGUuaApAQCAtNDAsNyArNDAsNyBAQCBjbGFzcyBBdWRpb0Nv
bnRleHQ7CiBjbGFzcyBNZWRpYUVsZW1lbnRBdWRpb1NvdXJjZU5vZGUgZmluYWwgOiBwdWJsaWMg
QXVkaW9Ob2RlLCBwdWJsaWMgQXVkaW9Tb3VyY2VQcm92aWRlckNsaWVudCB7CiAgICAgV1RGX01B
S0VfSVNPX0FMTE9DQVRFRChNZWRpYUVsZW1lbnRBdWRpb1NvdXJjZU5vZGUpOwogcHVibGljOgot
ICAgIHN0YXRpYyBSZWY8TWVkaWFFbGVtZW50QXVkaW9Tb3VyY2VOb2RlPiBjcmVhdGUoQXVkaW9D
b250ZXh0JiwgSFRNTE1lZGlhRWxlbWVudCYpOworICAgIHN0YXRpYyBSZWY8TWVkaWFFbGVtZW50
QXVkaW9Tb3VyY2VOb2RlPiBjcmVhdGUoQXVkaW9Db250ZXh0QmFzZSYsIEhUTUxNZWRpYUVsZW1l
bnQmKTsKIAogICAgIHZpcnR1YWwgfk1lZGlhRWxlbWVudEF1ZGlvU291cmNlTm9kZSgpOwogCkBA
IC01Nyw3ICs1Nyw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHVubG9jaygpOwogCiBwcml2YXRlOgot
ICAgIE1lZGlhRWxlbWVudEF1ZGlvU291cmNlTm9kZShBdWRpb0NvbnRleHQmLCBIVE1MTWVkaWFF
bGVtZW50Jik7CisgICAgTWVkaWFFbGVtZW50QXVkaW9Tb3VyY2VOb2RlKEF1ZGlvQ29udGV4dEJh
c2UmLCBIVE1MTWVkaWFFbGVtZW50Jik7CiAKICAgICBkb3VibGUgdGFpbFRpbWUoKSBjb25zdCBv
dmVycmlkZSB7IHJldHVybiAwOyB9CiAgICAgZG91YmxlIGxhdGVuY3lUaW1lKCkgY29uc3Qgb3Zl
cnJpZGUgeyByZXR1cm4gMDsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJhdWRpby9NZWRpYVN0cmVhbUF1ZGlvRGVzdGluYXRpb25Ob2RlLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViYXVkaW8vTWVkaWFTdHJlYW1BdWRpb0Rlc3RpbmF0aW9uTm9kZS5jcHAK
aW5kZXggZDc2NjI5MzAzMDhhNzQ2YTQ2YWUwMDg2OGE1ZDYzNDFiODJmZjczYi4uMzBmMWEyMjJi
ZTIzMDBlMTJkYWU3NjZiZGVlNDJiMGJiMWNmMWU4OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJhdWRpby9NZWRpYVN0cmVhbUF1ZGlvRGVzdGluYXRpb25Ob2RlLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL01lZGlhU3RyZWFtQXVkaW9EZXN0
aW5hdGlvbk5vZGUuY3BwCkBAIC0zOSwxMiArMzksMTIgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
CiBXVEZfTUFLRV9JU09fQUxMT0NBVEVEX0lNUEwoTWVkaWFTdHJlYW1BdWRpb0Rlc3RpbmF0aW9u
Tm9kZSk7CiAKLVJlZjxNZWRpYVN0cmVhbUF1ZGlvRGVzdGluYXRpb25Ob2RlPiBNZWRpYVN0cmVh
bUF1ZGlvRGVzdGluYXRpb25Ob2RlOjpjcmVhdGUoQXVkaW9Db250ZXh0JiBjb250ZXh0LCBzaXpl
X3QgbnVtYmVyT2ZDaGFubmVscykKK1JlZjxNZWRpYVN0cmVhbUF1ZGlvRGVzdGluYXRpb25Ob2Rl
PiBNZWRpYVN0cmVhbUF1ZGlvRGVzdGluYXRpb25Ob2RlOjpjcmVhdGUoQXVkaW9Db250ZXh0QmFz
ZSYgY29udGV4dCwgc2l6ZV90IG51bWJlck9mQ2hhbm5lbHMpCiB7CiAgICAgcmV0dXJuIGFkb3B0
UmVmKCpuZXcgTWVkaWFTdHJlYW1BdWRpb0Rlc3RpbmF0aW9uTm9kZShjb250ZXh0LCBudW1iZXJP
ZkNoYW5uZWxzKSk7CiB9CiAKLU1lZGlhU3RyZWFtQXVkaW9EZXN0aW5hdGlvbk5vZGU6Ok1lZGlh
U3RyZWFtQXVkaW9EZXN0aW5hdGlvbk5vZGUoQXVkaW9Db250ZXh0JiBjb250ZXh0LCBzaXplX3Qg
bnVtYmVyT2ZDaGFubmVscykKK01lZGlhU3RyZWFtQXVkaW9EZXN0aW5hdGlvbk5vZGU6Ok1lZGlh
U3RyZWFtQXVkaW9EZXN0aW5hdGlvbk5vZGUoQXVkaW9Db250ZXh0QmFzZSYgY29udGV4dCwgc2l6
ZV90IG51bWJlck9mQ2hhbm5lbHMpCiAgICAgOiBBdWRpb0Jhc2ljSW5zcGVjdG9yTm9kZShjb250
ZXh0LCBjb250ZXh0LnNhbXBsZVJhdGUoKSwgbnVtYmVyT2ZDaGFubmVscykKICAgICAsIG1fc291
cmNlKE1lZGlhU3RyZWFtQXVkaW9Tb3VyY2U6OmNyZWF0ZShjb250ZXh0LnNhbXBsZVJhdGUoKSkp
CiAgICAgLCBtX3N0cmVhbShNZWRpYVN0cmVhbTo6Y3JlYXRlKCpjb250ZXh0LmRvY3VtZW50KCks
IE1lZGlhU3RyZWFtUHJpdmF0ZTo6Y3JlYXRlKGNvbnRleHQuZG9jdW1lbnQoKS0+bG9nZ2VyKCks
IG1fc291cmNlLmNvcHlSZWYoKSkpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJhdWRpby9NZWRpYVN0cmVhbUF1ZGlvRGVzdGluYXRpb25Ob2RlLmggYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmF1ZGlvL01lZGlhU3RyZWFtQXVkaW9EZXN0aW5hdGlvbk5vZGUuaApp
bmRleCBmNWE3ZThmZWM0YTkwMmM5MGJkY2Y5YzVjN2I0NjdjOTgwZjk3ZTNhLi5kYmFkOTI4ZDc5
NmEyZDhmNDEwZjQzNmZiZTMzZWY3MmFhODQxNzNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmF1ZGlvL01lZGlhU3RyZWFtQXVkaW9EZXN0aW5hdGlvbk5vZGUuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL01lZGlhU3RyZWFtQXVkaW9EZXN0aW5h
dGlvbk5vZGUuaApAQCAtMzIsMTMgKzMyLDEzIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAot
Y2xhc3MgQXVkaW9Db250ZXh0OworY2xhc3MgQXVkaW9Db250ZXh0QmFzZTsKIGNsYXNzIE1lZGlh
U3RyZWFtQXVkaW9Tb3VyY2U7CiAKIGNsYXNzIE1lZGlhU3RyZWFtQXVkaW9EZXN0aW5hdGlvbk5v
ZGUgZmluYWwgOiBwdWJsaWMgQXVkaW9CYXNpY0luc3BlY3Rvck5vZGUgewogICAgIFdURl9NQUtF
X0lTT19BTExPQ0FURUQoTWVkaWFTdHJlYW1BdWRpb0Rlc3RpbmF0aW9uTm9kZSk7CiBwdWJsaWM6
Ci0gICAgc3RhdGljIFJlZjxNZWRpYVN0cmVhbUF1ZGlvRGVzdGluYXRpb25Ob2RlPiBjcmVhdGUo
QXVkaW9Db250ZXh0Jiwgc2l6ZV90IG51bWJlck9mQ2hhbm5lbHMpOworICAgIHN0YXRpYyBSZWY8
TWVkaWFTdHJlYW1BdWRpb0Rlc3RpbmF0aW9uTm9kZT4gY3JlYXRlKEF1ZGlvQ29udGV4dEJhc2Um
LCBzaXplX3QgbnVtYmVyT2ZDaGFubmVscyk7CiAKICAgICB2aXJ0dWFsIH5NZWRpYVN0cmVhbUF1
ZGlvRGVzdGluYXRpb25Ob2RlKCk7CiAKQEAgLTQ5LDcgKzQ5LDcgQEAgcHVibGljOgogICAgIHZv
aWQgcmVzZXQoKSBmaW5hbDsKICAgICAKIHByaXZhdGU6Ci0gICAgTWVkaWFTdHJlYW1BdWRpb0Rl
c3RpbmF0aW9uTm9kZShBdWRpb0NvbnRleHQmLCBzaXplX3QgbnVtYmVyT2ZDaGFubmVscyk7Cisg
ICAgTWVkaWFTdHJlYW1BdWRpb0Rlc3RpbmF0aW9uTm9kZShBdWRpb0NvbnRleHRCYXNlJiwgc2l6
ZV90IG51bWJlck9mQ2hhbm5lbHMpOwogCiAgICAgZG91YmxlIHRhaWxUaW1lKCkgY29uc3QgZmlu
YWwgeyByZXR1cm4gMDsgfQogICAgIGRvdWJsZSBsYXRlbmN5VGltZSgpIGNvbnN0IGZpbmFsIHsg
cmV0dXJuIDA7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8v
TWVkaWFTdHJlYW1BdWRpb1NvdXJjZU5vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJhdWRpby9NZWRpYVN0cmVhbUF1ZGlvU291cmNlTm9kZS5jcHAKaW5kZXggMWI0ZmI2ZDE5MjJh
ZDFjNGIwNDFjYjkxMjljNTVjMTM4NzA3ZjdjZS4uMzVlNTVhOTIwMmMzZjMwNTViZjE4N2JhYTZm
NjZmYjZiZDUxZjY5MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRp
by9NZWRpYVN0cmVhbUF1ZGlvU291cmNlTm9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJhdWRpby9NZWRpYVN0cmVhbUF1ZGlvU291cmNlTm9kZS5jcHAKQEAgLTM4LDEyICsz
OCwxMiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFdURl9NQUtFX0lTT19BTExPQ0FURURfSU1Q
TChNZWRpYVN0cmVhbUF1ZGlvU291cmNlTm9kZSk7CiAKLVJlZjxNZWRpYVN0cmVhbUF1ZGlvU291
cmNlTm9kZT4gTWVkaWFTdHJlYW1BdWRpb1NvdXJjZU5vZGU6OmNyZWF0ZShBdWRpb0NvbnRleHQm
IGNvbnRleHQsIE1lZGlhU3RyZWFtJiBtZWRpYVN0cmVhbSwgTWVkaWFTdHJlYW1UcmFjayYgYXVk
aW9UcmFjaykKK1JlZjxNZWRpYVN0cmVhbUF1ZGlvU291cmNlTm9kZT4gTWVkaWFTdHJlYW1BdWRp
b1NvdXJjZU5vZGU6OmNyZWF0ZShBdWRpb0NvbnRleHRCYXNlJiBjb250ZXh0LCBNZWRpYVN0cmVh
bSYgbWVkaWFTdHJlYW0sIE1lZGlhU3RyZWFtVHJhY2smIGF1ZGlvVHJhY2spCiB7CiAgICAgcmV0
dXJuIGFkb3B0UmVmKCpuZXcgTWVkaWFTdHJlYW1BdWRpb1NvdXJjZU5vZGUoY29udGV4dCwgbWVk
aWFTdHJlYW0sIGF1ZGlvVHJhY2spKTsKIH0KIAotTWVkaWFTdHJlYW1BdWRpb1NvdXJjZU5vZGU6
Ok1lZGlhU3RyZWFtQXVkaW9Tb3VyY2VOb2RlKEF1ZGlvQ29udGV4dCYgY29udGV4dCwgTWVkaWFT
dHJlYW0mIG1lZGlhU3RyZWFtLCBNZWRpYVN0cmVhbVRyYWNrJiBhdWRpb1RyYWNrKQorTWVkaWFT
dHJlYW1BdWRpb1NvdXJjZU5vZGU6Ok1lZGlhU3RyZWFtQXVkaW9Tb3VyY2VOb2RlKEF1ZGlvQ29u
dGV4dEJhc2UmIGNvbnRleHQsIE1lZGlhU3RyZWFtJiBtZWRpYVN0cmVhbSwgTWVkaWFTdHJlYW1U
cmFjayYgYXVkaW9UcmFjaykKICAgICA6IEF1ZGlvTm9kZShjb250ZXh0LCBjb250ZXh0LnNhbXBs
ZVJhdGUoKSkKICAgICAsIG1fbWVkaWFTdHJlYW0obWVkaWFTdHJlYW0pCiAgICAgLCBtX2F1ZGlv
VHJhY2soYXVkaW9UcmFjaykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
YXVkaW8vTWVkaWFTdHJlYW1BdWRpb1NvdXJjZU5vZGUuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViYXVkaW8vTWVkaWFTdHJlYW1BdWRpb1NvdXJjZU5vZGUuaAppbmRleCBlM2VkZWZlMWJk
NTcwMmE3M2EyMmY0YTgzOWQyM2NmYzE5YzI5YTA1Li5jNzJkMzEyMjMzZDUwNmRkNTRjZTI3MGZj
OTIyN2I1NDU3NWVlMmUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1
ZGlvL01lZGlhU3RyZWFtQXVkaW9Tb3VyY2VOb2RlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJhdWRpby9NZWRpYVN0cmVhbUF1ZGlvU291cmNlTm9kZS5oCkBAIC00MCw3ICs0MCw3
IEBAIGNsYXNzIE11bHRpQ2hhbm5lbFJlc2FtcGxlcjsKIGNsYXNzIE1lZGlhU3RyZWFtQXVkaW9T
b3VyY2VOb2RlIGZpbmFsIDogcHVibGljIEF1ZGlvTm9kZSwgcHVibGljIEF1ZGlvU291cmNlUHJv
dmlkZXJDbGllbnQgewogICAgIFdURl9NQUtFX0lTT19BTExPQ0FURUQoTWVkaWFTdHJlYW1BdWRp
b1NvdXJjZU5vZGUpOwogcHVibGljOgotICAgIHN0YXRpYyBSZWY8TWVkaWFTdHJlYW1BdWRpb1Nv
dXJjZU5vZGU+IGNyZWF0ZShBdWRpb0NvbnRleHQmLCBNZWRpYVN0cmVhbSYsIE1lZGlhU3RyZWFt
VHJhY2smKTsKKyAgICBzdGF0aWMgUmVmPE1lZGlhU3RyZWFtQXVkaW9Tb3VyY2VOb2RlPiBjcmVh
dGUoQXVkaW9Db250ZXh0QmFzZSYsIE1lZGlhU3RyZWFtJiwgTWVkaWFTdHJlYW1UcmFjayYpOwog
CiAgICAgdmlydHVhbCB+TWVkaWFTdHJlYW1BdWRpb1NvdXJjZU5vZGUoKTsKIApAQCAtNTQsNyAr
NTQsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRGb3JtYXQoc2l6ZV90IG51bWJlck9mQ2hhbm5l
bHMsIGZsb2F0IHNhbXBsZVJhdGUpIG92ZXJyaWRlOwogCiBwcml2YXRlOgotICAgIE1lZGlhU3Ry
ZWFtQXVkaW9Tb3VyY2VOb2RlKEF1ZGlvQ29udGV4dCYsIE1lZGlhU3RyZWFtJiwgTWVkaWFTdHJl
YW1UcmFjayYpOworICAgIE1lZGlhU3RyZWFtQXVkaW9Tb3VyY2VOb2RlKEF1ZGlvQ29udGV4dEJh
c2UmLCBNZWRpYVN0cmVhbSYsIE1lZGlhU3RyZWFtVHJhY2smKTsKIAogICAgIGRvdWJsZSB0YWls
VGltZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIDA7IH0KICAgICBkb3VibGUgbGF0ZW5jeVRp
bWUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiAwOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmF1ZGlvL09mZmxpbmVBdWRpb0NvbnRleHQuaWRsIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJhdWRpby9PZmZsaW5lQXVkaW9Db250ZXh0LmlkbAppbmRleCBmNmVj
YjFhNjg1ODFjYzk0NjY3OWQ5MjRmOGUzZTE1NGQwMzQzYWM2Li4wZTcxYTA2YmMzZmEyZjhlODYy
OTlmM2MyNDU4N2U2Y2JhOWM0MTExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmF1ZGlvL09mZmxpbmVBdWRpb0NvbnRleHQuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViYXVkaW8vT2ZmbGluZUF1ZGlvQ29udGV4dC5pZGwKQEAgLTI0LDggKzI0LDggQEAK
IAogWwogICAgIENvbmRpdGlvbmFsPVdFQl9BVURJTywKKyAgICBFbmFibGVkQnlTZXR0aW5nPU1v
ZGVyblVucHJlZml4ZWRXZWJBdWRpbywKICAgICBKU0dlbmVyYXRlVG9KU09iamVjdCwKLSAgICBJ
bnRlcmZhY2VOYW1lPXdlYmtpdE9mZmxpbmVBdWRpb0NvbnRleHQKIF0gaW50ZXJmYWNlIE9mZmxp
bmVBdWRpb0NvbnRleHQgOiBBdWRpb0NvbnRleHQgewogICAgIFtDYWxsV2l0aD1TY3JpcHRFeGVj
dXRpb25Db250ZXh0LCBNYXlUaHJvd0V4Y2VwdGlvbl0gY29uc3RydWN0b3IodW5zaWduZWQgbG9u
ZyBudW1iZXJPZkNoYW5uZWxzLCB1bnNpZ25lZCBsb25nIG51bWJlck9mRnJhbWVzLCB1bnJlc3Ry
aWN0ZWQgZmxvYXQgc2FtcGxlUmF0ZSk7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJhdWRpby9PZmZsaW5lQXVkaW9EZXN0aW5hdGlvbk5vZGUuY3BwIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9PZmZsaW5lQXVkaW9EZXN0aW5hdGlvbk5vZGUuY3Bw
CmluZGV4IDZhMTk1NTQ2Y2Y3MTM5NGZlNWM0MTRiNzY1YjZjOTdlMDVlZGMwNDkuLmZlYzUwOGNi
ZmYxYzcxZDMzYmM0YjEzZWE5ODJmOTJmYzBhZmI5OWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViYXVkaW8vT2ZmbGluZUF1ZGlvRGVzdGluYXRpb25Ob2RlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL09mZmxpbmVBdWRpb0Rlc3RpbmF0aW9u
Tm9kZS5jcHAKQEAgLTQxLDcgKzQxLDcgQEAgV1RGX01BS0VfSVNPX0FMTE9DQVRFRF9JTVBMKE9m
ZmxpbmVBdWRpb0Rlc3RpbmF0aW9uTm9kZSk7CiAgICAgCiBjb25zdCBzaXplX3QgcmVuZGVyUXVh
bnR1bVNpemUgPSAxMjg7ICAgIAogCi1PZmZsaW5lQXVkaW9EZXN0aW5hdGlvbk5vZGU6Ok9mZmxp
bmVBdWRpb0Rlc3RpbmF0aW9uTm9kZShBdWRpb0NvbnRleHQmIGNvbnRleHQsIEF1ZGlvQnVmZmVy
KiByZW5kZXJUYXJnZXQpCitPZmZsaW5lQXVkaW9EZXN0aW5hdGlvbk5vZGU6Ok9mZmxpbmVBdWRp
b0Rlc3RpbmF0aW9uTm9kZShBdWRpb0NvbnRleHRCYXNlJiBjb250ZXh0LCBBdWRpb0J1ZmZlciog
cmVuZGVyVGFyZ2V0KQogICAgIDogQXVkaW9EZXN0aW5hdGlvbk5vZGUoY29udGV4dCwgcmVuZGVy
VGFyZ2V0LT5zYW1wbGVSYXRlKCkpCiAgICAgLCBtX3JlbmRlclRhcmdldChyZW5kZXJUYXJnZXQp
CiAgICAgLCBtX3N0YXJ0ZWRSZW5kZXJpbmcoZmFsc2UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmF1ZGlvL09mZmxpbmVBdWRpb0Rlc3RpbmF0aW9uTm9kZS5oIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9PZmZsaW5lQXVkaW9EZXN0aW5hdGlvbk5vZGUu
aAppbmRleCBkYTI0OTU3NGQ0ODRmZjgxMmFhNDkzN2FjM2ExNjVlZTk1ODI4NGNjLi5mODcxMGZk
ZTEwZGZmZmU0OTAyMzRmMTkzNmJkNThiYWEzY2IyZTk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmF1ZGlvL09mZmxpbmVBdWRpb0Rlc3RpbmF0aW9uTm9kZS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vT2ZmbGluZUF1ZGlvRGVzdGluYXRpb25O
b2RlLmgKQEAgLTM3LDkgKzM3LDkgQEAgY2xhc3MgQXVkaW9Db250ZXh0OwogY2xhc3MgT2ZmbGlu
ZUF1ZGlvRGVzdGluYXRpb25Ob2RlIGZpbmFsIDogcHVibGljIEF1ZGlvRGVzdGluYXRpb25Ob2Rl
IHsKICAgICBXVEZfTUFLRV9JU09fQUxMT0NBVEVEKE9mZmxpbmVBdWRpb0Rlc3RpbmF0aW9uTm9k
ZSk7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxPZmZsaW5lQXVkaW9EZXN0aW5hdGlvbk5vZGU+
IGNyZWF0ZShBdWRpb0NvbnRleHQmIGNvbnRleHQsIEF1ZGlvQnVmZmVyKiByZW5kZXJUYXJnZXQp
CisgICAgc3RhdGljIFJlZjxPZmZsaW5lQXVkaW9EZXN0aW5hdGlvbk5vZGU+IGNyZWF0ZShBdWRp
b0NvbnRleHRCYXNlJiBjb250ZXh0LCBBdWRpb0J1ZmZlciogcmVuZGVyVGFyZ2V0KQogICAgIHsK
LSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgT2ZmbGluZUF1ZGlvRGVzdGluYXRpb25Ob2Rl
KGNvbnRleHQsIHJlbmRlclRhcmdldCkpOyAgICAgCisgICAgICAgIHJldHVybiBhZG9wdFJlZigq
bmV3IE9mZmxpbmVBdWRpb0Rlc3RpbmF0aW9uTm9kZShjb250ZXh0LCByZW5kZXJUYXJnZXQpKTsK
ICAgICB9CiAKICAgICB2aXJ0dWFsIH5PZmZsaW5lQXVkaW9EZXN0aW5hdGlvbk5vZGUoKTsKQEAg
LTU1LDcgKzU1LDcgQEAgcHVibGljOgogICAgIGZsb2F0IHNhbXBsZVJhdGUoKSBjb25zdCBvdmVy
cmlkZSB7IHJldHVybiBtX3JlbmRlclRhcmdldC0+c2FtcGxlUmF0ZSgpOyB9CiAKIHByaXZhdGU6
Ci0gICAgT2ZmbGluZUF1ZGlvRGVzdGluYXRpb25Ob2RlKEF1ZGlvQ29udGV4dCYsIEF1ZGlvQnVm
ZmVyKiByZW5kZXJUYXJnZXQpOworICAgIE9mZmxpbmVBdWRpb0Rlc3RpbmF0aW9uTm9kZShBdWRp
b0NvbnRleHRCYXNlJiwgQXVkaW9CdWZmZXIqIHJlbmRlclRhcmdldCk7CiAKICAgICAvLyBUaGlz
IEF1ZGlvTm9kZSByZW5kZXJzIGludG8gdGhpcyBBdWRpb0J1ZmZlci4KICAgICBSZWZQdHI8QXVk
aW9CdWZmZXI+IG1fcmVuZGVyVGFyZ2V0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJhdWRpby9Pc2NpbGxhdG9yTm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmF1ZGlvL09zY2lsbGF0b3JOb2RlLmNwcAppbmRleCA5NTYwMDUzYTQ4MDViOWQ0YmY1NTk5
ZTczYTE5YTgxZTI1YjBjOTZmLi5lOGYzMWM3MjIwZTUwNjU2OGUzYWNmMDU4ZjZjYWI0NzNiMDkx
ZWQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL09zY2lsbGF0
b3JOb2RlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL09zY2lsbGF0
b3JOb2RlLmNwcApAQCAtNDUsMTIgKzQ1LDEyIEBAIFBlcmlvZGljV2F2ZSogT3NjaWxsYXRvck5v
ZGU6OnNfcGVyaW9kaWNXYXZlU3F1YXJlID0gbnVsbHB0cjsKIFBlcmlvZGljV2F2ZSogT3NjaWxs
YXRvck5vZGU6OnNfcGVyaW9kaWNXYXZlU2F3dG9vdGggPSBudWxscHRyOwogUGVyaW9kaWNXYXZl
KiBPc2NpbGxhdG9yTm9kZTo6c19wZXJpb2RpY1dhdmVUcmlhbmdsZSA9IG51bGxwdHI7CiAKLVJl
ZjxPc2NpbGxhdG9yTm9kZT4gT3NjaWxsYXRvck5vZGU6OmNyZWF0ZShBdWRpb0NvbnRleHQmIGNv
bnRleHQsIGZsb2F0IHNhbXBsZVJhdGUpCitSZWY8T3NjaWxsYXRvck5vZGU+IE9zY2lsbGF0b3JO
b2RlOjpjcmVhdGUoQXVkaW9Db250ZXh0QmFzZSYgY29udGV4dCwgZmxvYXQgc2FtcGxlUmF0ZSkK
IHsKICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBPc2NpbGxhdG9yTm9kZShjb250ZXh0LCBzYW1w
bGVSYXRlKSk7CiB9CiAKLU9zY2lsbGF0b3JOb2RlOjpPc2NpbGxhdG9yTm9kZShBdWRpb0NvbnRl
eHQmIGNvbnRleHQsIGZsb2F0IHNhbXBsZVJhdGUpCitPc2NpbGxhdG9yTm9kZTo6T3NjaWxsYXRv
ck5vZGUoQXVkaW9Db250ZXh0QmFzZSYgY29udGV4dCwgZmxvYXQgc2FtcGxlUmF0ZSkKICAgICA6
IEF1ZGlvU2NoZWR1bGVkU291cmNlTm9kZShjb250ZXh0LCBzYW1wbGVSYXRlKQogICAgICwgbV9m
aXJzdFJlbmRlcih0cnVlKQogICAgICwgbV92aXJ0dWFsUmVhZEluZGV4KDApCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL09zY2lsbGF0b3JOb2RlLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL09zY2lsbGF0b3JOb2RlLmgKaW5kZXggNDJmZjBj
MTkyNGI2MmVkMGNmMDAxN2ZmYjk3ZGU2MDMyNmM3MzkyMi4uMDg5NWJjZTNkZGRmNTlkNjljNWM2
YWY5Y2ZkMmI5Y2ZiZTllYjRhOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJhdWRpby9Pc2NpbGxhdG9yTm9kZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
YXVkaW8vT3NjaWxsYXRvck5vZGUuaApAQCAtNDUsNyArNDUsNyBAQCBwdWJsaWM6CiAgICAgICAg
IEN1c3RvbQogICAgIH07CiAKLSAgICBzdGF0aWMgUmVmPE9zY2lsbGF0b3JOb2RlPiBjcmVhdGUo
QXVkaW9Db250ZXh0JiwgZmxvYXQgc2FtcGxlUmF0ZSk7CisgICAgc3RhdGljIFJlZjxPc2NpbGxh
dG9yTm9kZT4gY3JlYXRlKEF1ZGlvQ29udGV4dEJhc2UmLCBmbG9hdCBzYW1wbGVSYXRlKTsKIAog
ICAgIHZpcnR1YWwgfk9zY2lsbGF0b3JOb2RlKCk7CiAKQEAgLTYwLDcgKzYwLDcgQEAgcHVibGlj
OgogICAgIHZvaWQgc2V0UGVyaW9kaWNXYXZlKFBlcmlvZGljV2F2ZSopOwogCiBwcml2YXRlOgot
ICAgIE9zY2lsbGF0b3JOb2RlKEF1ZGlvQ29udGV4dCYsIGZsb2F0IHNhbXBsZVJhdGUpOworICAg
IE9zY2lsbGF0b3JOb2RlKEF1ZGlvQ29udGV4dEJhc2UmLCBmbG9hdCBzYW1wbGVSYXRlKTsKIAog
ICAgIHZvaWQgcHJvY2VzcyhzaXplX3QgZnJhbWVzVG9Qcm9jZXNzKSBmaW5hbDsKICAgICB2b2lk
IHJlc2V0KCkgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1
ZGlvL1Bhbm5lck5vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9QYW5u
ZXJOb2RlLmNwcAppbmRleCBlYzgwZTY5ZDJhYjg3MTAyOGJjNmE2ZTQ0N2VhYmQxOWU5ZmNjNzIx
Li5hZTQyZjExNGJiYzM5MDRkYjdjMmNjMTU2ZDBiMmNiZTQyMDA2OThlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1Bhbm5lck5vZGUuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vUGFubmVyTm9kZS5jcHAKQEAgLTQ4LDggKzQ4LDEz
IEBAIHN0YXRpYyB2b2lkIGZpeE5BTnMoZG91YmxlICZ4KQogICAgICAgICB4ID0gMC4wOwogfQog
Ci1QYW5uZXJOb2RlOjpQYW5uZXJOb2RlKEF1ZGlvQ29udGV4dCYgY29udGV4dCwgZmxvYXQgc2Ft
cGxlUmF0ZSkKK1Bhbm5lck5vZGVCYXNlOjpQYW5uZXJOb2RlQmFzZShBdWRpb0NvbnRleHRCYXNl
JiBjb250ZXh0LCBmbG9hdCBzYW1wbGVSYXRlKQogICAgIDogQXVkaW9Ob2RlKGNvbnRleHQsIHNh
bXBsZVJhdGUpCit7Cit9CisKK1Bhbm5lck5vZGU6OlBhbm5lck5vZGUoQXVkaW9Db250ZXh0JiBj
b250ZXh0LCBmbG9hdCBzYW1wbGVSYXRlKQorICAgIDogUGFubmVyTm9kZUJhc2UoY29udGV4dCwg
c2FtcGxlUmF0ZSkKICAgICAsIG1fcGFubmluZ01vZGVsKFBhbm5pbmdNb2RlbFR5cGU6OkhSVEYp
CiAgICAgLCBtX2xhc3RHYWluKC0xLjApCiAgICAgLCBtX3Bvc2l0aW9uWChBdWRpb1BhcmFtOjpj
cmVhdGUoY29udGV4dCwgInBvc2l0aW9uWCJfcywgMCwgLUZMVF9NQVgsIEZMVF9NQVgpKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9QYW5uZXJOb2RlLmggYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1Bhbm5lck5vZGUuaAppbmRleCA4NDgwYzIz
MzI4MDBkY2Y0ODg1MTU4ZDY5NDU5MmRkOWVlNTI5MmI2Li4yOWI2NDhkMDYwNzYyOTM4N2ExYjBj
MDcwMzdjNTBjMjJjZjAxMDU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmF1ZGlvL1Bhbm5lck5vZGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlv
L1Bhbm5lck5vZGUuaApAQCAtMjYsNiArMjYsNyBAQAogCiAjaWYgRU5BQkxFKFdFQl9BVURJTykK
IAorI2luY2x1ZGUgIkF1ZGlvQ29udGV4dC5oIgogI2luY2x1ZGUgIkF1ZGlvTGlzdGVuZXIuaCIK
ICNpbmNsdWRlICJBdWRpb05vZGUuaCIKICNpbmNsdWRlICJBdWRpb1BhcmFtLmgiCkBAIC00MSw2
ICs0MiwxNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEhSVEZEYXRhYmFzZUxvYWRl
cjsKIAorY2xhc3MgUGFubmVyTm9kZUJhc2UgOiBwdWJsaWMgQXVkaW9Ob2RlIHsKK3B1YmxpYzoK
KyAgICB2aXJ0dWFsIH5QYW5uZXJOb2RlQmFzZSgpID0gZGVmYXVsdDsKKworICAgIHZpcnR1YWwg
ZmxvYXQgZG9wcGxlclJhdGUoKSA9IDA7CisKK3Byb3RlY3RlZDoKKyAgICBQYW5uZXJOb2RlQmFz
ZShBdWRpb0NvbnRleHRCYXNlJiwgZmxvYXQgc2FtcGxlUmF0ZSk7Cit9OworCiAvLyBQYW5uZXJO
b2RlIGlzIGFuIEF1ZGlvTm9kZSB3aXRoIG9uZSBpbnB1dCBhbmQgb25lIG91dHB1dC4KIC8vIEl0
IHBvc2l0aW9ucyBhIHNvdW5kIGluIDNEIHNwYWNlLCB3aXRoIHRoZSBleGFjdCBlZmZlY3QgZGVw
ZW5kZW50IG9uIHRoZSBwYW5uaW5nIG1vZGVsLgogLy8gSXQgaGFzIGEgcG9zaXRpb24gYW5kIGFu
IG9yaWVudGF0aW9uIGluIDNEIHNwYWNlIHdoaWNoIGlzIHJlbGF0aXZlIHRvIHRoZSBwb3NpdGlv
biBhbmQgb3JpZW50YXRpb24gb2YgdGhlIGNvbnRleHQncyBBdWRpb0xpc3RlbmVyLgpAQCAtNDgs
NyArNTksNyBAQCBjbGFzcyBIUlRGRGF0YWJhc2VMb2FkZXI7CiAvLyBBIGNvbmUgZWZmZWN0IHdp
bGwgYXR0ZW51YXRlIHRoZSBnYWluIGFzIHRoZSBvcmllbnRhdGlvbiBtb3ZlcyBhd2F5IGZyb20g
dGhlIGxpc3RlbmVyLgogLy8gQWxsIG9mIHRoZXNlIGVmZmVjdHMgZm9sbG93IHRoZSBPcGVuQUwg
c3BlY2lmaWNhdGlvbiB2ZXJ5IGNsb3NlbHkuCiAKLWNsYXNzIFBhbm5lck5vZGUgZmluYWwgOiBw
dWJsaWMgQXVkaW9Ob2RlIHsKK2NsYXNzIFBhbm5lck5vZGUgZmluYWwgOiBwdWJsaWMgUGFubmVy
Tm9kZUJhc2UgewogICAgIFdURl9NQUtFX0lTT19BTExPQ0FURUQoUGFubmVyTm9kZSk7CiBwdWJs
aWM6CiAgICAgc3RhdGljIFJlZjxQYW5uZXJOb2RlPiBjcmVhdGUoQXVkaW9Db250ZXh0JiBjb250
ZXh0LCBmbG9hdCBzYW1wbGVSYXRlKQpAQCAtNTgsNiArNjksOSBAQCBwdWJsaWM6CiAKICAgICB2
aXJ0dWFsIH5QYW5uZXJOb2RlKCk7CiAKKyAgICBBdWRpb0NvbnRleHQmIGNvbnRleHQoKSB7IHJl
dHVybiBkb3duY2FzdDxBdWRpb0NvbnRleHQ+KEF1ZGlvTm9kZTo6Y29udGV4dCgpKTsgfQorICAg
IGNvbnN0IEF1ZGlvQ29udGV4dCYgY29udGV4dCgpIGNvbnN0IHsgcmV0dXJuIGRvd25jYXN0PEF1
ZGlvQ29udGV4dD4oQXVkaW9Ob2RlOjpjb250ZXh0KCkpOyB9CisKICAgICAvLyBBdWRpb05vZGUK
ICAgICB2b2lkIHByb2Nlc3Moc2l6ZV90IGZyYW1lc1RvUHJvY2Vzcykgb3ZlcnJpZGU7CiAgICAg
dm9pZCBwdWxsSW5wdXRzKHNpemVfdCBmcmFtZXNUb1Byb2Nlc3MpIG92ZXJyaWRlOwpAQCAtMTEx
LDcgKzEyNSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldENvbmVPdXRlckdhaW4oZG91YmxlIGFu
Z2xlKSB7IG1fY29uZUVmZmVjdC5zZXRPdXRlckdhaW4oYW5nbGUpOyB9CiAKICAgICB2b2lkIGdl
dEF6aW11dGhFbGV2YXRpb24oZG91YmxlKiBvdXRBemltdXRoLCBkb3VibGUqIG91dEVsZXZhdGlv
bik7Ci0gICAgZmxvYXQgZG9wcGxlclJhdGUoKTsKKyAgICBmbG9hdCBkb3BwbGVyUmF0ZSgpIGZp
bmFsOwogCiAgICAgLy8gQWNjZXNzb3JzIGZvciBkeW5hbWljYWxseSBjYWxjdWxhdGVkIGdhaW4g
dmFsdWVzLgogICAgIEF1ZGlvUGFyYW0qIGRpc3RhbmNlR2FpbigpIHsgcmV0dXJuIG1fZGlzdGFu
Y2VHYWluLmdldCgpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1
ZGlvL1Bhbm5lck5vZGUuaWRsIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9QYW5u
ZXJOb2RlLmlkbAppbmRleCAwMzI5ODM3ZDJmNWEyNWM3ZjZhNmYwZDA0ZTMxODdhMWY2YWQ4YjQx
Li43YmI5MmM0ZjhmYjQ1ZGIyOTNmZmUzYTE3YTk3MTAzYzBiOTJlNmUyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1Bhbm5lck5vZGUuaWRsCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vUGFubmVyTm9kZS5pZGwKQEAgLTIyLDI3ICsyMiwx
MCBAQAogICogU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCiAgKi8KIAotWwotICAgIENvbmRpdGlvbmFsPVdFQl9BVURJTywKLSAgICBJ
bXBsZW1lbnRlZEFzPVBhbm5pbmdNb2RlbFR5cGUKLV0gZW51bSBQYW5uaW5nTW9kZWxUeXBlIHsK
LSAgICAiZXF1YWxwb3dlciIsCi0gICAgIkhSVEYiCi19OwotCi1bCi0gICAgQ29uZGl0aW9uYWw9
V0VCX0FVRElPLAotICAgIEltcGxlbWVudGVkQXM9RGlzdGFuY2VNb2RlbFR5cGUKLV0gZW51bSBE
aXN0YW5jZU1vZGVsVHlwZSB7Ci0gICAgImxpbmVhciIsCi0gICAgImludmVyc2UiLAotICAgICJl
eHBvbmVudGlhbCIKLX07Ci0KIFsKICAgICBDb25kaXRpb25hbD1XRUJfQVVESU8sCiAgICAgSlNH
ZW5lcmF0ZVRvSlNPYmplY3QsCi0gICAgSW50ZXJmYWNlTmFtZT13ZWJraXRBdWRpb1Bhbm5lck5v
ZGUsCisgICAgRW5hYmxlZEJ5U2V0dGluZz1Nb2Rlcm5VbnByZWZpeGVkV2ViQXVkaW8sCiBdIGlu
dGVyZmFjZSBQYW5uZXJOb2RlIDogQXVkaW9Ob2RlIHsKICAgICAvLyBEZWZhdWx0IG1vZGVsIGZv
ciBzdGVyZW8gaXMgSFJURiAKICAgICBhdHRyaWJ1dGUgUGFubmluZ01vZGVsVHlwZSBwYW5uaW5n
TW9kZWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1Bhbm5p
bmdNb2RlbFR5cGUuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vUGFubmluZ01v
ZGVsVHlwZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLmFiMGIyMjcxMmExNzBiMWZlZmFlMTZlNmVmM2RmOTRkMjM4
YTFhOWYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlv
L1Bhbm5pbmdNb2RlbFR5cGUuaApAQCAtMCwwICsxLDI3IEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDIwLCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9T
RSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRT
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAq
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTgorICogQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTCisgKiBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21h
IG9uY2UKKworI2luY2x1ZGUgIlBhbm5lci5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJhdWRpby9QYW5uaW5nTW9kZWxUeXBlLmlkbCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViYXVkaW8vUGFubmluZ01vZGVsVHlwZS5pZGwKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYmY3ZGY4ZjU1
NDJmYWE0NTI2MDdiZTFmMDk5ZTk5NzRiZGFjMzdlNgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vUGFubmluZ01vZGVsVHlwZS5pZGwKQEAgLTAsMCAr
MSwzMCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCwgR29vZ2xlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5EIEFOWQorICog
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OCisgKiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMKKyAqIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKK1sKKyAgICBDb25kaXRpb25hbD1XRUJfQVVESU8sCitdIGVu
dW0gUGFubmluZ01vZGVsVHlwZSB7CisgICAgImVxdWFscG93ZXIiLAorICAgICJIUlRGIgorfTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vU2NyaXB0UHJvY2Vz
c29yTm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1NjcmlwdFByb2Nl
c3Nvck5vZGUuY3BwCmluZGV4IDkxYzc1MzdlMTVlOGI1NTI0MTFlYTlmNjEzMDFlYzFjMzI1YWQy
NTYuLjc2MTBiMTUwMjQ4NzhiNjA2ZTVjZGQ4YzRmNWFiMGZiMTFkYzAzNDYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vU2NyaXB0UHJvY2Vzc29yTm9kZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9TY3JpcHRQcm9jZXNzb3JOb2Rl
LmNwcApAQCAtNDQsMTIgKzQ0LDEyIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogV1RGX01BS0Vf
SVNPX0FMTE9DQVRFRF9JTVBMKFNjcmlwdFByb2Nlc3Nvck5vZGUpOwogCi1SZWY8U2NyaXB0UHJv
Y2Vzc29yTm9kZT4gU2NyaXB0UHJvY2Vzc29yTm9kZTo6Y3JlYXRlKEF1ZGlvQ29udGV4dCYgY29u
dGV4dCwgZmxvYXQgc2FtcGxlUmF0ZSwgc2l6ZV90IGJ1ZmZlclNpemUsIHVuc2lnbmVkIG51bWJl
ck9mSW5wdXRDaGFubmVscywgdW5zaWduZWQgbnVtYmVyT2ZPdXRwdXRDaGFubmVscykKK1JlZjxT
Y3JpcHRQcm9jZXNzb3JOb2RlPiBTY3JpcHRQcm9jZXNzb3JOb2RlOjpjcmVhdGUoQXVkaW9Db250
ZXh0QmFzZSYgY29udGV4dCwgZmxvYXQgc2FtcGxlUmF0ZSwgc2l6ZV90IGJ1ZmZlclNpemUsIHVu
c2lnbmVkIG51bWJlck9mSW5wdXRDaGFubmVscywgdW5zaWduZWQgbnVtYmVyT2ZPdXRwdXRDaGFu
bmVscykKIHsKICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTY3JpcHRQcm9jZXNzb3JOb2RlKGNv
bnRleHQsIHNhbXBsZVJhdGUsIGJ1ZmZlclNpemUsIG51bWJlck9mSW5wdXRDaGFubmVscywgbnVt
YmVyT2ZPdXRwdXRDaGFubmVscykpOwogfQogCi1TY3JpcHRQcm9jZXNzb3JOb2RlOjpTY3JpcHRQ
cm9jZXNzb3JOb2RlKEF1ZGlvQ29udGV4dCYgY29udGV4dCwgZmxvYXQgc2FtcGxlUmF0ZSwgc2l6
ZV90IGJ1ZmZlclNpemUsIHVuc2lnbmVkIG51bWJlck9mSW5wdXRDaGFubmVscywgdW5zaWduZWQg
bnVtYmVyT2ZPdXRwdXRDaGFubmVscykKK1NjcmlwdFByb2Nlc3Nvck5vZGU6OlNjcmlwdFByb2Nl
c3Nvck5vZGUoQXVkaW9Db250ZXh0QmFzZSYgY29udGV4dCwgZmxvYXQgc2FtcGxlUmF0ZSwgc2l6
ZV90IGJ1ZmZlclNpemUsIHVuc2lnbmVkIG51bWJlck9mSW5wdXRDaGFubmVscywgdW5zaWduZWQg
bnVtYmVyT2ZPdXRwdXRDaGFubmVscykKICAgICA6IEF1ZGlvTm9kZShjb250ZXh0LCBzYW1wbGVS
YXRlKQogICAgICwgQWN0aXZlRE9NT2JqZWN0KGNvbnRleHQuc2NyaXB0RXhlY3V0aW9uQ29udGV4
dCgpKQogICAgICwgbV9kb3VibGVCdWZmZXJJbmRleCgwKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJhdWRpby9TY3JpcHRQcm9jZXNzb3JOb2RlLmggYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1NjcmlwdFByb2Nlc3Nvck5vZGUuaAppbmRleCA1YTRlN2Nl
NDc1MjJlZjI4ZWJmMmZkMTc5NmFmNTg0YmE3NWI0MTMzLi40YzE0YTA3NTdkZjVjNWU2MmRmZTk2
YTg4ZWI0MmI0N2YxNWU3MjU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmF1ZGlvL1NjcmlwdFByb2Nlc3Nvck5vZGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmF1ZGlvL1NjcmlwdFByb2Nlc3Nvck5vZGUuaApAQCAtNTIsNyArNTIsNyBAQCBwdWJsaWM6
CiAgICAgLy8gVGhpcyB2YWx1ZSBjb250cm9scyBob3cgZnJlcXVlbnRseSB0aGUgb25hdWRpb3By
b2Nlc3MgZXZlbnQgaGFuZGxlciBpcyBjYWxsZWQgYW5kIGhvdyBtYW55IHNhbXBsZS1mcmFtZXMg
bmVlZCB0byBiZSBwcm9jZXNzZWQgZWFjaCBjYWxsLgogICAgIC8vIExvd2VyIG51bWJlcnMgZm9y
IGJ1ZmZlclNpemUgd2lsbCByZXN1bHQgaW4gYSBsb3dlciAoYmV0dGVyKSBsYXRlbmN5LiBIaWdo
ZXIgbnVtYmVycyB3aWxsIGJlIG5lY2Vzc2FyeSB0byBhdm9pZCBhdWRpbyBicmVha3VwIGFuZCBn
bGl0Y2hlcy4KICAgICAvLyBUaGUgdmFsdWUgY2hvc2VuIG11c3QgY2FyZWZ1bGx5IGJhbGFuY2Ug
YmV0d2VlbiBsYXRlbmN5IGFuZCBhdWRpbyBxdWFsaXR5LgotICAgIHN0YXRpYyBSZWY8U2NyaXB0
UHJvY2Vzc29yTm9kZT4gY3JlYXRlKEF1ZGlvQ29udGV4dCYsIGZsb2F0IHNhbXBsZVJhdGUsIHNp
emVfdCBidWZmZXJTaXplLCB1bnNpZ25lZCBudW1iZXJPZklucHV0Q2hhbm5lbHMsIHVuc2lnbmVk
IG51bWJlck9mT3V0cHV0Q2hhbm5lbHMpOworICAgIHN0YXRpYyBSZWY8U2NyaXB0UHJvY2Vzc29y
Tm9kZT4gY3JlYXRlKEF1ZGlvQ29udGV4dEJhc2UmLCBmbG9hdCBzYW1wbGVSYXRlLCBzaXplX3Qg
YnVmZmVyU2l6ZSwgdW5zaWduZWQgbnVtYmVyT2ZJbnB1dENoYW5uZWxzLCB1bnNpZ25lZCBudW1i
ZXJPZk91dHB1dENoYW5uZWxzKTsKIAogICAgIHZpcnR1YWwgflNjcmlwdFByb2Nlc3Nvck5vZGUo
KTsKIApAQCAtNzEsNyArNzEsNyBAQCBwcml2YXRlOgogICAgIGRvdWJsZSB0YWlsVGltZSgpIGNv
bnN0IG92ZXJyaWRlOwogICAgIGRvdWJsZSBsYXRlbmN5VGltZSgpIGNvbnN0IG92ZXJyaWRlOwog
Ci0gICAgU2NyaXB0UHJvY2Vzc29yTm9kZShBdWRpb0NvbnRleHQmLCBmbG9hdCBzYW1wbGVSYXRl
LCBzaXplX3QgYnVmZmVyU2l6ZSwgdW5zaWduZWQgbnVtYmVyT2ZJbnB1dENoYW5uZWxzLCB1bnNp
Z25lZCBudW1iZXJPZk91dHB1dENoYW5uZWxzKTsKKyAgICBTY3JpcHRQcm9jZXNzb3JOb2RlKEF1
ZGlvQ29udGV4dEJhc2UmLCBmbG9hdCBzYW1wbGVSYXRlLCBzaXplX3QgYnVmZmVyU2l6ZSwgdW5z
aWduZWQgbnVtYmVyT2ZJbnB1dENoYW5uZWxzLCB1bnNpZ25lZCBudW1iZXJPZk91dHB1dENoYW5u
ZWxzKTsKIAogICAgIHZvaWQgZmlyZVByb2Nlc3NFdmVudCgpOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1dhdmVTaGFwZXJOb2RlLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vV2F2ZVNoYXBlck5vZGUuY3BwCmluZGV4IDZlN2U4ZGQx
YzljMTlmYTNjODVlM2Q5ZDg1NWFiOWY0NTc4NWI3OTAuLmFlNGFmOWYyMzJmNzUxMzZjMDgxYWZl
MTRiZDdhNzk1NmMwNTI5NmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
YXVkaW8vV2F2ZVNoYXBlck5vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
YXVkaW8vV2F2ZVNoYXBlck5vZGUuY3BwCkBAIC0zNSw3ICszNSw3IEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAogV1RGX01BS0VfSVNPX0FMTE9DQVRFRF9JTVBMKFdhdmVTaGFwZXJOb2RlKTsKIAot
V2F2ZVNoYXBlck5vZGU6OldhdmVTaGFwZXJOb2RlKEF1ZGlvQ29udGV4dCYgY29udGV4dCkKK1dh
dmVTaGFwZXJOb2RlOjpXYXZlU2hhcGVyTm9kZShBdWRpb0NvbnRleHRCYXNlJiBjb250ZXh0KQog
ICAgIDogQXVkaW9CYXNpY1Byb2Nlc3Nvck5vZGUoY29udGV4dCwgY29udGV4dC5zYW1wbGVSYXRl
KCkpCiB7CiAgICAgc2V0Tm9kZVR5cGUoTm9kZVR5cGVXYXZlU2hhcGVyKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vV2F2ZVNoYXBlck5vZGUuaCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vV2F2ZVNoYXBlck5vZGUuaAppbmRleCBmNDllMzQ5
YmMzZGM4YzI5YjRhNmU2M2RmZGJmOTg2NGI5NmY4NjgwLi41ZjQ5MzI4YjIyZDBlYmU1ZDZlZjZk
MDNjNmFlNmQ2ZmZjMWExMTBlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmF1ZGlvL1dhdmVTaGFwZXJOb2RlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJh
dWRpby9XYXZlU2hhcGVyTm9kZS5oCkBAIC0zMyw3ICszMyw3IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIGNsYXNzIFdhdmVTaGFwZXJOb2RlIGZpbmFsIDogcHVibGljIEF1ZGlvQmFzaWNQcm9jZXNz
b3JOb2RlIHsKICAgICBXVEZfTUFLRV9JU09fQUxMT0NBVEVEKFdhdmVTaGFwZXJOb2RlKTsKIHB1
YmxpYzoKLSAgICBzdGF0aWMgUmVmPFdhdmVTaGFwZXJOb2RlPiBjcmVhdGUoQXVkaW9Db250ZXh0
JiBjb250ZXh0KQorICAgIHN0YXRpYyBSZWY8V2F2ZVNoYXBlck5vZGU+IGNyZWF0ZShBdWRpb0Nv
bnRleHRCYXNlJiBjb250ZXh0KQogICAgIHsKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcg
V2F2ZVNoYXBlck5vZGUoY29udGV4dCkpOwogICAgIH0KQEAgLTQ5LDcgKzQ5LDcgQEAgcHVibGlj
OgogICAgIGRvdWJsZSBsYXRlbmN5KCkgY29uc3QgeyByZXR1cm4gbGF0ZW5jeVRpbWUoKTsgfQog
CiBwcml2YXRlOiAgICAKLSAgICBleHBsaWNpdCBXYXZlU2hhcGVyTm9kZShBdWRpb0NvbnRleHQm
KTsgICAgCisgICAgZXhwbGljaXQgV2F2ZVNoYXBlck5vZGUoQXVkaW9Db250ZXh0QmFzZSYpOwog
CiAgICAgV2F2ZVNoYXBlclByb2Nlc3Nvciogd2F2ZVNoYXBlclByb2Nlc3NvcigpIHsgcmV0dXJu
IHN0YXRpY19jYXN0PFdhdmVTaGFwZXJQcm9jZXNzb3IqPihwcm9jZXNzb3IoKSk7IH0KIH07CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1dlYktpdEF1ZGlvQ29u
dGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1dlYktpdEF1ZGlvQ29u
dGV4dC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uZjQwMjA4MTlhODkzN2ZjNjNkNTNkNTVmM2VhN2Q3OWI5NDky
MTEwMgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8v
V2ViS2l0QXVkaW9Db250ZXh0LmNwcApAQCAtMCwwICsxLDE0MDIgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdo
dCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVS
UE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMK
KyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTgorICogQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTCisgKiBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5j
bHVkZSAiY29uZmlnLmgiCisKKyNpZiBFTkFCTEUoV0VCX0FVRElPKQorCisjaW5jbHVkZSAiV2Vi
S2l0QXVkaW9Db250ZXh0LmgiCisKKyNpbmNsdWRlICJBbmFseXNlck5vZGUuaCIKKyNpbmNsdWRl
ICJBc3luY0F1ZGlvRGVjb2Rlci5oIgorI2luY2x1ZGUgIkF1ZGlvQnVmZmVyLmgiCisjaW5jbHVk
ZSAiQXVkaW9CdWZmZXJDYWxsYmFjay5oIgorI2luY2x1ZGUgIkF1ZGlvQnVmZmVyU291cmNlTm9k
ZS5oIgorI2luY2x1ZGUgIkF1ZGlvTGlzdGVuZXIuaCIKKyNpbmNsdWRlICJBdWRpb05vZGVJbnB1
dC5oIgorI2luY2x1ZGUgIkF1ZGlvTm9kZU91dHB1dC5oIgorI2luY2x1ZGUgIkF1ZGlvU2Vzc2lv
bi5oIgorI2luY2x1ZGUgIkJpcXVhZEZpbHRlck5vZGUuaCIKKyNpbmNsdWRlICJDaGFubmVsTWVy
Z2VyTm9kZS5oIgorI2luY2x1ZGUgIkNoYW5uZWxTcGxpdHRlck5vZGUuaCIKKyNpbmNsdWRlICJD
b252b2x2ZXJOb2RlLmgiCisjaW5jbHVkZSAiRGVmYXVsdEF1ZGlvRGVzdGluYXRpb25Ob2RlLmgi
CisjaW5jbHVkZSAiRGVsYXlOb2RlLmgiCisjaW5jbHVkZSAiRG9jdW1lbnQuaCIKKyNpbmNsdWRl
ICJEeW5hbWljc0NvbXByZXNzb3JOb2RlLmgiCisjaW5jbHVkZSAiRXZlbnROYW1lcy5oIgorI2lu
Y2x1ZGUgIkZGVEZyYW1lLmgiCisjaW5jbHVkZSAiRnJhbWUuaCIKKyNpbmNsdWRlICJGcmFtZUxv
YWRlci5oIgorI2luY2x1ZGUgIkdhaW5Ob2RlLmgiCisjaW5jbHVkZSAiR2VuZXJpY0V2ZW50UXVl
dWUuaCIKKyNpbmNsdWRlICJIUlRGRGF0YWJhc2VMb2FkZXIuaCIKKyNpbmNsdWRlICJIUlRGUGFu
bmVyLmgiCisjaW5jbHVkZSAiSlNET01Qcm9taXNlRGVmZXJyZWQuaCIKKyNpbmNsdWRlICJMb2dn
aW5nLmgiCisjaW5jbHVkZSAiTmV0d29ya2luZ0NvbnRleHQuaCIKKyNpbmNsdWRlICJPZmZsaW5l
QXVkaW9Db21wbGV0aW9uRXZlbnQuaCIKKyNpbmNsdWRlICJPZmZsaW5lQXVkaW9EZXN0aW5hdGlv
bk5vZGUuaCIKKyNpbmNsdWRlICJPc2NpbGxhdG9yTm9kZS5oIgorI2luY2x1ZGUgIlBhZ2UuaCIK
KyNpbmNsdWRlICJQZXJpb2RpY1dhdmUuaCIKKyNpbmNsdWRlICJQbGF0Zm9ybU1lZGlhU2Vzc2lv
bk1hbmFnZXIuaCIKKyNpbmNsdWRlICJTY3JpcHRDb250cm9sbGVyLmgiCisjaW5jbHVkZSAiU2Ny
aXB0UHJvY2Vzc29yTm9kZS5oIgorI2luY2x1ZGUgIldhdmVTaGFwZXJOb2RlLmgiCisjaW5jbHVk
ZSAiV2ViS2l0QXVkaW9QYW5uZXJOb2RlLmgiCisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvU2Ny
aXB0Q2FsbFN0YWNrLmg+CisKKyNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQorI2luY2x1ZGUgIk1l
ZGlhU3RyZWFtLmgiCisjaW5jbHVkZSAiTWVkaWFTdHJlYW1BdWRpb0Rlc3RpbmF0aW9uTm9kZS5o
IgorI2luY2x1ZGUgIk1lZGlhU3RyZWFtQXVkaW9Tb3VyY2UuaCIKKyNpbmNsdWRlICJNZWRpYVN0
cmVhbUF1ZGlvU291cmNlTm9kZS5oIgorI2VuZGlmCisKKyNpZiBFTkFCTEUoVklERU8pCisjaW5j
bHVkZSAiSFRNTE1lZGlhRWxlbWVudC5oIgorI2luY2x1ZGUgIk1lZGlhRWxlbWVudEF1ZGlvU291
cmNlTm9kZS5oIgorI2VuZGlmCisKKyNpZiBERUJVR19BVURJT05PREVfUkVGRVJFTkNFUworI2lu
Y2x1ZGUgPHN0ZGlvLmg+CisjZW5kaWYKKworI2lmIFVTRShHU1RSRUFNRVIpCisjaW5jbHVkZSAi
R1N0cmVhbWVyQ29tbW9uLmgiCisjZW5kaWYKKworI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCisj
aW5jbHVkZSAiU2NyaXB0Q29udHJvbGxlci5oIgorI2luY2x1ZGUgIlNldHRpbmdzLmgiCisjZW5k
aWYKKworI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0FycmF5QnVmZmVyLmg+CisjaW5jbHVkZSA8
d3RmL0F0b21pY3MuaD4KKyNpbmNsdWRlIDx3dGYvSXNvTWFsbG9jSW5saW5lcy5oPgorI2luY2x1
ZGUgPHd0Zi9NYWluVGhyZWFkLmg+CisjaW5jbHVkZSA8d3RmL1JlZi5oPgorI2luY2x1ZGUgPHd0
Zi9SZWZDb3VudGVkLmg+CisjaW5jbHVkZSA8d3RmL1Njb3BlLmg+CisjaW5jbHVkZSA8d3RmL3Rl
eHQvV1RGU3RyaW5nLmg+CisKK2NvbnN0IHVuc2lnbmVkIE1heFBlcmlvZGljV2F2ZUxlbmd0aCA9
IDQwOTY7CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworV1RGX01BS0VfSVNPX0FMTE9DQVRFRF9J
TVBMKFdlYktpdEF1ZGlvQ29udGV4dCk7CisKKyNkZWZpbmUgUkVMRUFTRV9MT0dfSUZfQUxMT1dF
RChmbXQsIC4uLikgUkVMRUFTRV9MT0dfSUYoZG9jdW1lbnQoKSAmJiBkb2N1bWVudCgpLT5wYWdl
KCkgJiYgZG9jdW1lbnQoKS0+cGFnZSgpLT5pc0Fsd2F5c09uTG9nZ2luZ0FsbG93ZWQoKSwgTWVk
aWEsICIlcCAtIFdlYktpdEF1ZGlvQ29udGV4dDo6IiBmbXQsIHRoaXMsICMjX19WQV9BUkdTX18p
CisKK2Jvb2wgV2ViS2l0QXVkaW9Db250ZXh0Ojppc1NhbXBsZVJhdGVSYW5nZUdvb2QoZmxvYXQg
c2FtcGxlUmF0ZSkKK3sKKyAgICAvLyBGSVhNRTogSXQgd291bGQgYmUgbmljZSBpZiB0aGUgbWlu
aW11bSBzYW1wbGUtcmF0ZSBjb3VsZCBiZSBsZXNzIHRoYW4gNDQuMUtIeiwKKyAgICAvLyBidXQg
dGhhdCB3aWxsIHJlcXVpcmUgc29tZSBmaXhlcyBpbiBIUlRGUGFubmVyOjpmZnRTaXplRm9yU2Ft
cGxlUmF0ZSgpLCBhbmQgc29tZSB0ZXN0aW5nIHRoZXJlLgorICAgIHJldHVybiBzYW1wbGVSYXRl
ID49IDQ0MTAwICYmIHNhbXBsZVJhdGUgPD0gOTYwMDA7Cit9CisKKyNpZiBPUyhXSU5ET1dTKQor
Ly8gRG9uJ3QgYWxsb3cgbW9yZSB0aGFuIHRoaXMgbnVtYmVyIG9mIHNpbXVsdGFuZW91cyBBdWRp
b0NvbnRleHRzIHRhbGtpbmcgdG8gaGFyZHdhcmUuCitjb25zdGV4cHIgdW5zaWduZWQgbWF4SGFy
ZHdhcmVDb250ZXh0cyA9IDQ7CisjZW5kaWYKK3Vuc2lnbmVkIFdlYktpdEF1ZGlvQ29udGV4dDo6
c19oYXJkd2FyZUNvbnRleHRDb3VudCA9IDA7CisKK0V4Y2VwdGlvbk9yPFJlZjxXZWJLaXRBdWRp
b0NvbnRleHQ+PiBXZWJLaXRBdWRpb0NvbnRleHQ6OmNyZWF0ZShEb2N1bWVudCYgZG9jdW1lbnQp
Cit7CisgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKyNpZiBPUyhXSU5ET1dTKQorICAgIGlm
IChzX2hhcmR3YXJlQ29udGV4dENvdW50ID49IG1heEhhcmR3YXJlQ29udGV4dHMpCisgICAgICAg
IHJldHVybiBFeGNlcHRpb24geyBRdW90YUV4Y2VlZGVkRXJyb3IgfTsKKyNlbmRpZgorCisgICAg
YXV0byBhdWRpb0NvbnRleHQgPSBhZG9wdFJlZigqbmV3IFdlYktpdEF1ZGlvQ29udGV4dChkb2N1
bWVudCkpOworICAgIGF1ZGlvQ29udGV4dC0+c3VzcGVuZElmTmVlZGVkKCk7CisgICAgcmV0dXJu
IGF1ZGlvQ29udGV4dDsKK30KKworLy8gQ29uc3RydWN0b3IgZm9yIHJlbmRlcmluZyB0byB0aGUg
YXVkaW8gaGFyZHdhcmUuCitXZWJLaXRBdWRpb0NvbnRleHQ6OldlYktpdEF1ZGlvQ29udGV4dChE
b2N1bWVudCYgZG9jdW1lbnQpCisgICAgOiBBdWRpb0NvbnRleHRCYXNlKGRvY3VtZW50KQorI2lm
ICFSRUxFQVNFX0xPR19ESVNBQkxFRAorICAgICwgbV9sb2dnZXIoZG9jdW1lbnQubG9nZ2VyKCkp
CisgICAgLCBtX2xvZ0lkZW50aWZpZXIodW5pcXVlTG9nSWRlbnRpZmllcigpKQorI2VuZGlmCisg
ICAgLCBtX21lZGlhU2Vzc2lvbihQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6Y3JlYXRlKFBsYXRmb3Jt
TWVkaWFTZXNzaW9uTWFuYWdlcjo6c2hhcmVkTWFuYWdlcigpLCAqdGhpcykpCisgICAgLCBtX2V2
ZW50UXVldWUoTWFpblRocmVhZEdlbmVyaWNFdmVudFF1ZXVlOjpjcmVhdGUoKnRoaXMpKQorewor
ICAgIC8vIEFjY29yZGluZyB0byBzcGVjIEF1ZGlvQ29udGV4dCBtdXN0IGRpZSBvbmx5IGFmdGVy
IHBhZ2UgbmF2aWdhdGUuCisgICAgLy8gTGV0cyBtYXJrIGl0IGFzIEFjdGl2ZURPTU9iamVjdCB3
aXRoIHBlbmRpbmcgYWN0aXZpdHkgYW5kIHVubWFyayBpdCBpbiBjbGVhciBtZXRob2QuCisgICAg
bWFrZVBlbmRpbmdBY3Rpdml0eSgpOworCisgICAgY29uc3RydWN0Q29tbW9uKCk7CisKKyAgICBt
X2Rlc3RpbmF0aW9uTm9kZSA9IERlZmF1bHRBdWRpb0Rlc3RpbmF0aW9uTm9kZTo6Y3JlYXRlKCp0
aGlzKTsKKworICAgIC8vIEluaXRpYWxpemUgdGhlIGRlc3RpbmF0aW9uIG5vZGUncyBtdXRlZCBz
dGF0ZSB0byBtYXRjaCB0aGUgcGFnZSdzIGN1cnJlbnQgbXV0ZWQgc3RhdGUuCisgICAgcGFnZU11
dGVkU3RhdGVEaWRDaGFuZ2UoKTsKKworICAgIGRvY3VtZW50LmFkZEF1ZGlvUHJvZHVjZXIoKnRo
aXMpOworICAgIGRvY3VtZW50LnJlZ2lzdGVyRm9yVmlzaWJpbGl0eVN0YXRlQ2hhbmdlZENhbGxi
YWNrcygqdGhpcyk7Cit9CisKKy8vIENvbnN0cnVjdG9yIGZvciBvZmZsaW5lIChub24tcmVhbHRp
bWUpIHJlbmRlcmluZy4KK1dlYktpdEF1ZGlvQ29udGV4dDo6V2ViS2l0QXVkaW9Db250ZXh0KERv
Y3VtZW50JiBkb2N1bWVudCwgQXVkaW9CdWZmZXIqIHJlbmRlclRhcmdldCkKKyAgICA6IEF1ZGlv
Q29udGV4dEJhc2UoZG9jdW1lbnQpCisjaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECisgICAgLCBt
X2xvZ2dlcihkb2N1bWVudC5sb2dnZXIoKSkKKyAgICAsIG1fbG9nSWRlbnRpZmllcih1bmlxdWVM
b2dJZGVudGlmaWVyKCkpCisjZW5kaWYKKyAgICAsIG1faXNPZmZsaW5lQ29udGV4dCh0cnVlKQor
ICAgICwgbV9tZWRpYVNlc3Npb24oUGxhdGZvcm1NZWRpYVNlc3Npb246OmNyZWF0ZShQbGF0Zm9y
bU1lZGlhU2Vzc2lvbk1hbmFnZXI6OnNoYXJlZE1hbmFnZXIoKSwgKnRoaXMpKQorICAgICwgbV9l
dmVudFF1ZXVlKE1haW5UaHJlYWRHZW5lcmljRXZlbnRRdWV1ZTo6Y3JlYXRlKCp0aGlzKSkKKyAg
ICAsIG1fcmVuZGVyVGFyZ2V0KHJlbmRlclRhcmdldCkKK3sKKyAgICBjb25zdHJ1Y3RDb21tb24o
KTsKKworICAgIC8vIENyZWF0ZSBhIG5ldyBkZXN0aW5hdGlvbiBmb3Igb2ZmbGluZSByZW5kZXJp
bmcuCisgICAgbV9kZXN0aW5hdGlvbk5vZGUgPSBPZmZsaW5lQXVkaW9EZXN0aW5hdGlvbk5vZGU6
OmNyZWF0ZSgqdGhpcywgbV9yZW5kZXJUYXJnZXQuZ2V0KCkpOworfQorCit2b2lkIFdlYktpdEF1
ZGlvQ29udGV4dDo6Y29uc3RydWN0Q29tbW9uKCkKK3sKKyAgICBGRlRGcmFtZTo6aW5pdGlhbGl6
ZSgpOworCisgICAgbV9saXN0ZW5lciA9IEF1ZGlvTGlzdGVuZXI6OmNyZWF0ZSgpOworCisgICAg
QVNTRVJUKGRvY3VtZW50KCkpOworICAgIGlmIChkb2N1bWVudCgpLT5hdWRpb1BsYXliYWNrUmVx
dWlyZXNVc2VyR2VzdHVyZSgpKQorICAgICAgICBhZGRCZWhhdmlvclJlc3RyaWN0aW9uKFJlcXVp
cmVVc2VyR2VzdHVyZUZvckF1ZGlvU3RhcnRSZXN0cmljdGlvbik7CisgICAgZWxzZQorICAgICAg
ICBtX3Jlc3RyaWN0aW9ucyA9IE5vUmVzdHJpY3Rpb25zOworCisjaWYgUExBVEZPUk0oQ09DT0Ep
CisgICAgYWRkQmVoYXZpb3JSZXN0cmljdGlvbihSZXF1aXJlUGFnZUNvbnNlbnRGb3JBdWRpb1N0
YXJ0UmVzdHJpY3Rpb24pOworI2VuZGlmCit9CisKK1dlYktpdEF1ZGlvQ29udGV4dDo6fldlYktp
dEF1ZGlvQ29udGV4dCgpCit7CisjaWYgREVCVUdfQVVESU9OT0RFX1JFRkVSRU5DRVMKKyAgICBm
cHJpbnRmKHN0ZGVyciwgIiVwOiBXZWJLaXRBdWRpb0NvbnRleHQ6On5XZWJLaXRBdWRpb0NvbnRl
eHQoKVxuIiwgdGhpcyk7CisjZW5kaWYKKyAgICBBU1NFUlQoIW1faXNJbml0aWFsaXplZCk7Cisg
ICAgQVNTRVJUKG1faXNTdG9wU2NoZWR1bGVkKTsKKyAgICBBU1NFUlQobV9ub2Rlc1RvRGVsZXRl
LmlzRW1wdHkoKSk7CisgICAgQVNTRVJUKG1fcmVmZXJlbmNlZE5vZGVzLmlzRW1wdHkoKSk7Cisg
ICAgQVNTRVJUKG1fZmluaXNoZWROb2Rlcy5pc0VtcHR5KCkpOyAvLyBGSVhNRSAoYnVnIDEwNTg3
MCk6IFRoaXMgYXNzZXJ0aW9uIGZhaWxzIG9uIHRlc3RzIHNvbWV0aW1lcy4KKyAgICBBU1NFUlQo
bV9hdXRvbWF0aWNQdWxsTm9kZXMuaXNFbXB0eSgpKTsKKyAgICBpZiAobV9hdXRvbWF0aWNQdWxs
Tm9kZXNOZWVkVXBkYXRpbmcpCisgICAgICAgIG1fcmVuZGVyaW5nQXV0b21hdGljUHVsbE5vZGVz
LnJlc2l6ZShtX2F1dG9tYXRpY1B1bGxOb2Rlcy5zaXplKCkpOworICAgIEFTU0VSVChtX3JlbmRl
cmluZ0F1dG9tYXRpY1B1bGxOb2Rlcy5pc0VtcHR5KCkpOworICAgIC8vIEZJWE1FOiBDYW4gd2Ug
YXNzZXJ0IHRoYXQgbV9kZWZlcnJlZEZpbmlzaERlcmVmTGlzdCBpcyBlbXB0eT8KKworICAgIGlm
ICghaXNPZmZsaW5lQ29udGV4dCgpICYmIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSkgeworICAg
ICAgICBkb2N1bWVudCgpLT5yZW1vdmVBdWRpb1Byb2R1Y2VyKCp0aGlzKTsKKyAgICAgICAgZG9j
dW1lbnQoKS0+dW5yZWdpc3RlckZvclZpc2liaWxpdHlTdGF0ZUNoYW5nZWRDYWxsYmFja3MoKnRo
aXMpOworICAgIH0KK30KKwordm9pZCBXZWJLaXRBdWRpb0NvbnRleHQ6OmxhenlJbml0aWFsaXpl
KCkKK3sKKyAgICBBU1NFUlQoIW1faXNTdG9wU2NoZWR1bGVkKTsKKworICAgIGlmIChtX2lzSW5p
dGlhbGl6ZWQpCisgICAgICAgIHJldHVybjsKKworICAgIC8vIERvbid0IGFsbG93IHRoZSBjb250
ZXh0IHRvIGluaXRpYWxpemUgYSBzZWNvbmQgdGltZSBhZnRlciBpdCdzIGFscmVhZHkgYmVlbiBl
eHBsaWNpdGx5IHVuaW5pdGlhbGl6ZWQuCisgICAgQVNTRVJUKCFtX2lzQXVkaW9UaHJlYWRGaW5p
c2hlZCk7CisgICAgaWYgKG1faXNBdWRpb1RocmVhZEZpbmlzaGVkKQorICAgICAgICByZXR1cm47
CisKKyAgICBpZiAobV9kZXN0aW5hdGlvbk5vZGUpIHsKKyAgICAgICAgbV9kZXN0aW5hdGlvbk5v
ZGUtPmluaXRpYWxpemUoKTsKKworICAgICAgICBpZiAoIWlzT2ZmbGluZUNvbnRleHQoKSkgewor
ICAgICAgICAgICAgLy8gVGhpcyBzdGFydHMgdGhlIGF1ZGlvIHRocmVhZC4gVGhlIGRlc3RpbmF0
aW9uIG5vZGUncyBwcm92aWRlSW5wdXQoKSBtZXRob2Qgd2lsbCBub3cgYmUgY2FsbGVkIHJlcGVh
dGVkbHkgdG8gcmVuZGVyIGF1ZGlvLgorICAgICAgICAgICAgLy8gRWFjaCB0aW1lIHByb3ZpZGVJ
bnB1dCgpIGlzIGNhbGxlZCwgYSBwb3J0aW9uIG9mIHRoZSBhdWRpbyBzdHJlYW0gaXMgcmVuZGVy
ZWQuIExldCdzIGNhbGwgdGhpcyB0aW1lIHBlcmlvZCBhICJyZW5kZXIgcXVhbnR1bSIuCisgICAg
ICAgICAgICAvLyBOT1RFOiBmb3Igbm93IGRlZmF1bHQgQXVkaW9Db250ZXh0IGRvZXMgbm90IG5l
ZWQgYW4gZXhwbGljaXQgc3RhcnRSZW5kZXJpbmcoKSBjYWxsIGZyb20gSmF2YVNjcmlwdC4KKyAg
ICAgICAgICAgIC8vIFdlIG1heSB3YW50IHRvIGNvbnNpZGVyIHJlcXVpcmluZyBpdCBmb3Igc3lt
bWV0cnkgd2l0aCBPZmZsaW5lQXVkaW9Db250ZXh0LgorICAgICAgICAgICAgc3RhcnRSZW5kZXJp
bmcoKTsKKyAgICAgICAgICAgICsrc19oYXJkd2FyZUNvbnRleHRDb3VudDsKKyAgICAgICAgfQor
ICAgIH0KKyAgICBtX2lzSW5pdGlhbGl6ZWQgPSB0cnVlOworfQorCit2b2lkIFdlYktpdEF1ZGlv
Q29udGV4dDo6Y2xlYXIoKQoreworICAgIFJlZjxXZWJLaXRBdWRpb0NvbnRleHQ+IHByb3RlY3Rl
ZFRoaXMoKnRoaXMpOworCisgICAgLy8gV2UgaGF2ZSB0byByZWxlYXNlIG91ciByZWZlcmVuY2Ug
dG8gdGhlIGRlc3RpbmF0aW9uIG5vZGUgYmVmb3JlIHRoZSBjb250ZXh0IHdpbGwgZXZlciBiZSBk
ZWxldGVkIHNpbmNlIHRoZSBkZXN0aW5hdGlvbiBub2RlIGhvbGRzIGEgcmVmZXJlbmNlIHRvIHRo
ZSBjb250ZXh0LgorICAgIGlmIChtX2Rlc3RpbmF0aW9uTm9kZSkKKyAgICAgICAgbV9kZXN0aW5h
dGlvbk5vZGUgPSBudWxscHRyOworCisgICAgLy8gQXVkaW8gdGhyZWFkIGlzIGRlYWQuIE5vYm9k
eSB3aWxsIHNjaGVkdWxlIG5vZGUgZGVsZXRpb24gYWN0aW9uLiBMZXQncyBkbyBpdCBvdXJzZWx2
ZXMuCisgICAgZG8geworICAgICAgICBkZWxldGVNYXJrZWROb2RlcygpOworICAgICAgICBtX25v
ZGVzVG9EZWxldGUuYXBwZW5kVmVjdG9yKG1fbm9kZXNNYXJrZWRGb3JEZWxldGlvbik7CisgICAg
ICAgIG1fbm9kZXNNYXJrZWRGb3JEZWxldGlvbi5jbGVhcigpOworICAgIH0gd2hpbGUgKG1fbm9k
ZXNUb0RlbGV0ZS5zaXplKCkpOworCisgICAgY2xlYXJQZW5kaW5nQWN0aXZpdHkoKTsKK30KKwor
dm9pZCBXZWJLaXRBdWRpb0NvbnRleHQ6OnVuaW5pdGlhbGl6ZSgpCit7CisgICAgQUxXQVlTX0xP
RyhMT0dJREVOVElGSUVSKTsKKworICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisKKyAgICBp
ZiAoIW1faXNJbml0aWFsaXplZCkKKyAgICAgICAgcmV0dXJuOworCisgICAgLy8gVGhpcyBzdG9w
cyB0aGUgYXVkaW8gdGhyZWFkIGFuZCBhbGwgYXVkaW8gcmVuZGVyaW5nLgorICAgIGlmIChtX2Rl
c3RpbmF0aW9uTm9kZSkKKyAgICAgICAgbV9kZXN0aW5hdGlvbk5vZGUtPnVuaW5pdGlhbGl6ZSgp
OworCisgICAgLy8gRG9uJ3QgYWxsb3cgdGhlIGNvbnRleHQgdG8gaW5pdGlhbGl6ZSBhIHNlY29u
ZCB0aW1lIGFmdGVyIGl0J3MgYWxyZWFkeSBiZWVuIGV4cGxpY2l0bHkgdW5pbml0aWFsaXplZC4K
KyAgICBtX2lzQXVkaW9UaHJlYWRGaW5pc2hlZCA9IHRydWU7CisKKyAgICBpZiAoIWlzT2ZmbGlu
ZUNvbnRleHQoKSkgeworICAgICAgICBBU1NFUlQoc19oYXJkd2FyZUNvbnRleHRDb3VudCk7Cisg
ICAgICAgIC0tc19oYXJkd2FyZUNvbnRleHRDb3VudDsKKworICAgICAgICAvLyBPZmZsaW5lIGNv
bnRleHRzIG1vdmUgdG8gJ0Nsb3NlZCcgc3RhdGUgd2hlbiBkaXNwYXRjaGluZyB0aGUgY29tcGxl
dGlvbiBldmVudC4KKyAgICAgICAgc2V0U3RhdGUoU3RhdGU6OkNsb3NlZCk7CisgICAgfQorCisg
ICAgLy8gR2V0IHJpZCBvZiB0aGUgc291cmNlcyB3aGljaCBtYXkgc3RpbGwgYmUgcGxheWluZy4K
KyAgICBkZXJlZlVuZmluaXNoZWRTb3VyY2VOb2RlcygpOworCisgICAgbV9pc0luaXRpYWxpemVk
ID0gZmFsc2U7Cit9CisKK2Jvb2wgV2ViS2l0QXVkaW9Db250ZXh0Ojppc0luaXRpYWxpemVkKCkg
Y29uc3QKK3sKKyAgICByZXR1cm4gbV9pc0luaXRpYWxpemVkOworfQorCit2b2lkIFdlYktpdEF1
ZGlvQ29udGV4dDo6YWRkUmVhY3Rpb24oU3RhdGUgc3RhdGUsIERPTVByb21pc2VEZWZlcnJlZDx2
b2lkPiYmIHByb21pc2UpCit7CisgICAgc2l6ZV90IHN0YXRlSW5kZXggPSBzdGF0aWNfY2FzdDxz
aXplX3Q+KHN0YXRlKTsKKyAgICBpZiAoc3RhdGVJbmRleCA+PSBtX3N0YXRlUmVhY3Rpb25zLnNp
emUoKSkKKyAgICAgICAgbV9zdGF0ZVJlYWN0aW9ucy5ncm93KHN0YXRlSW5kZXggKyAxKTsKKwor
ICAgIG1fc3RhdGVSZWFjdGlvbnNbc3RhdGVJbmRleF0uYXBwZW5kKFdURk1vdmUocHJvbWlzZSkp
OworfQorCit2b2lkIFdlYktpdEF1ZGlvQ29udGV4dDo6c2V0U3RhdGUoU3RhdGUgc3RhdGUpCit7
CisgICAgaWYgKG1fc3RhdGUgPT0gc3RhdGUpCisgICAgICAgIHJldHVybjsKKworICAgIG1fc3Rh
dGUgPSBzdGF0ZTsKKyAgICBtX2V2ZW50UXVldWUtPmVucXVldWVFdmVudChFdmVudDo6Y3JlYXRl
KGV2ZW50TmFtZXMoKS5zdGF0ZWNoYW5nZUV2ZW50LCBFdmVudDo6Q2FuQnViYmxlOjpZZXMsIEV2
ZW50OjpJc0NhbmNlbGFibGU6Ok5vKSk7CisKKyAgICBzaXplX3Qgc3RhdGVJbmRleCA9IHN0YXRp
Y19jYXN0PHNpemVfdD4oc3RhdGUpOworICAgIGlmIChzdGF0ZUluZGV4ID49IG1fc3RhdGVSZWFj
dGlvbnMuc2l6ZSgpKQorICAgICAgICByZXR1cm47CisKKyAgICBWZWN0b3I8RE9NUHJvbWlzZURl
ZmVycmVkPHZvaWQ+PiByZWFjdGlvbnM7CisgICAgbV9zdGF0ZVJlYWN0aW9uc1tzdGF0ZUluZGV4
XS5zd2FwKHJlYWN0aW9ucyk7CisKKyAgICBmb3IgKGF1dG8mIHByb21pc2UgOiByZWFjdGlvbnMp
CisgICAgICAgIHByb21pc2UucmVzb2x2ZSgpOworfQorCit2b2lkIFdlYktpdEF1ZGlvQ29udGV4
dDo6c3RvcCgpCit7CisgICAgQUxXQVlTX0xPRyhMT0dJREVOVElGSUVSKTsKKworICAgIEFTU0VS
VChpc01haW5UaHJlYWQoKSk7CisKKyAgICAvLyBVc3VhbGx5IFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQgY2FsbHMgc3RvcCB0d2ljZS4KKyAgICBpZiAobV9pc1N0b3BTY2hlZHVsZWQpCisgICAgICAg
IHJldHVybjsKKyAgICBtX2lzU3RvcFNjaGVkdWxlZCA9IHRydWU7CisKKyAgICBBU1NFUlQoZG9j
dW1lbnQoKSk7CisgICAgZG9jdW1lbnQoKS0+dXBkYXRlSXNQbGF5aW5nTWVkaWEoKTsKKworICAg
IHVuaW5pdGlhbGl6ZSgpOworICAgIGNsZWFyKCk7Cit9CisKK3ZvaWQgV2ViS2l0QXVkaW9Db250
ZXh0OjpzdXNwZW5kKFJlYXNvbkZvclN1c3BlbnNpb24pCit7CisgICAgaWYgKHN0YXRlKCkgPT0g
U3RhdGU6OlJ1bm5pbmcpIHsKKyAgICAgICAgbV9tZWRpYVNlc3Npb24tPmJlZ2luSW50ZXJydXB0
aW9uKFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpQbGF5YmFja1N1c3BlbmRlZCk7CisgICAgICAgIGRv
Y3VtZW50KCktPnVwZGF0ZUlzUGxheWluZ01lZGlhKCk7CisgICAgfQorfQorCit2b2lkIFdlYktp
dEF1ZGlvQ29udGV4dDo6cmVzdW1lKCkKK3sKKyAgICBpZiAoc3RhdGUoKSA9PSBTdGF0ZTo6SW50
ZXJydXB0ZWQpIHsKKyAgICAgICAgbV9tZWRpYVNlc3Npb24tPmVuZEludGVycnVwdGlvbihQbGF0
Zm9ybU1lZGlhU2Vzc2lvbjo6TWF5UmVzdW1lUGxheWluZyk7CisgICAgICAgIGRvY3VtZW50KCkt
PnVwZGF0ZUlzUGxheWluZ01lZGlhKCk7CisgICAgfQorfQorCitjb25zdCBjaGFyKiBXZWJLaXRB
dWRpb0NvbnRleHQ6OmFjdGl2ZURPTU9iamVjdE5hbWUoKSBjb25zdAoreworICAgIHJldHVybiAi
V2ViS2l0QXVkaW9Db250ZXh0IjsKK30KKworRG9jdW1lbnRJZGVudGlmaWVyIFdlYktpdEF1ZGlv
Q29udGV4dDo6aG9zdGluZ0RvY3VtZW50SWRlbnRpZmllcigpIGNvbnN0Cit7CisgICAgYXV0byog
ZG9jdW1lbnQgPSBkb3duY2FzdDxEb2N1bWVudD4obV9zY3JpcHRFeGVjdXRpb25Db250ZXh0KTsK
KyAgICByZXR1cm4gZG9jdW1lbnQgPyBkb2N1bWVudC0+aWRlbnRpZmllcigpIDogRG9jdW1lbnRJ
ZGVudGlmaWVyIHsgfTsKK30KKworYm9vbCBXZWJLaXRBdWRpb0NvbnRleHQ6OmlzU3VzcGVuZGVk
KCkgY29uc3QKK3sKKyAgICByZXR1cm4gIWRvY3VtZW50KCkgfHwgZG9jdW1lbnQoKS0+YWN0aXZl
RE9NT2JqZWN0c0FyZVN1c3BlbmRlZCgpIHx8IGRvY3VtZW50KCktPmFjdGl2ZURPTU9iamVjdHNB
cmVTdG9wcGVkKCk7Cit9CisKK3ZvaWQgV2ViS2l0QXVkaW9Db250ZXh0Ojp2aXNpYmlsaXR5U3Rh
dGVDaGFuZ2VkKCkKK3sKKyAgICAvLyBEbyBub3Qgc3VzcGVuZCBpZiBhdWRpbyBpcyBhdWRpYmxl
LgorICAgIGlmICghZG9jdW1lbnQoKSB8fCBtZWRpYVN0YXRlKCkgPT0gTWVkaWFQcm9kdWNlcjo6
SXNQbGF5aW5nQXVkaW8gfHwgbV9pc1N0b3BTY2hlZHVsZWQpCisgICAgICAgIHJldHVybjsKKwor
ICAgIGlmIChkb2N1bWVudCgpLT5oaWRkZW4oKSkgeworICAgICAgICBpZiAoc3RhdGUoKSA9PSBT
dGF0ZTo6UnVubmluZykgeworICAgICAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgidmlz
aWJpbGl0eVN0YXRlQ2hhbmdlZCgpIFN1c3BlbmRpbmcgcGxheWJhY2sgYWZ0ZXIgZ29pbmcgdG8g
dGhlIGJhY2tncm91bmQiKTsKKyAgICAgICAgICAgIG1fbWVkaWFTZXNzaW9uLT5iZWdpbkludGVy
cnVwdGlvbihQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6RW50ZXJpbmdCYWNrZ3JvdW5kKTsKKyAgICAg
ICAgfQorICAgIH0gZWxzZSB7CisgICAgICAgIGlmIChzdGF0ZSgpID09IFN0YXRlOjpJbnRlcnJ1
cHRlZCkgeworICAgICAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgidmlzaWJpbGl0eVN0
YXRlQ2hhbmdlZCgpIFJlc3VtaW5nIHBsYXliYWNrIGFmdGVyIGVudGVyaW5nIGZvcmVncm91bmQi
KTsKKyAgICAgICAgICAgIG1fbWVkaWFTZXNzaW9uLT5lbmRJbnRlcnJ1cHRpb24oUGxhdGZvcm1N
ZWRpYVNlc3Npb246Ok1heVJlc3VtZVBsYXlpbmcpOworICAgICAgICB9CisgICAgfQorfQorCiti
b29sIFdlYktpdEF1ZGlvQ29udGV4dDo6d291bGRUYWludE9yaWdpbihjb25zdCBVUkwmIHVybCkg
Y29uc3QKK3sKKyAgICBpZiAodXJsLnByb3RvY29sSXNEYXRhKCkpCisgICAgICAgIHJldHVybiBm
YWxzZTsKKworICAgIGlmIChhdXRvKiBkb2N1bWVudCA9IHRoaXMtPmRvY3VtZW50KCkpCisgICAg
ICAgIHJldHVybiAhZG9jdW1lbnQtPnNlY3VyaXR5T3JpZ2luKCkuY2FuUmVxdWVzdCh1cmwpOwor
CisgICAgcmV0dXJuIGZhbHNlOworfQorCitFeGNlcHRpb25PcjxSZWY8QXVkaW9CdWZmZXI+PiBX
ZWJLaXRBdWRpb0NvbnRleHQ6OmNyZWF0ZUJ1ZmZlcih1bnNpZ25lZCBudW1iZXJPZkNoYW5uZWxz
LCBzaXplX3QgbnVtYmVyT2ZGcmFtZXMsIGZsb2F0IHNhbXBsZVJhdGUpCit7CisgICAgYXV0byBh
dWRpb0J1ZmZlciA9IEF1ZGlvQnVmZmVyOjpjcmVhdGUobnVtYmVyT2ZDaGFubmVscywgbnVtYmVy
T2ZGcmFtZXMsIHNhbXBsZVJhdGUpOworICAgIGlmICghYXVkaW9CdWZmZXIpCisgICAgICAgIHJl
dHVybiBFeGNlcHRpb24geyBOb3RTdXBwb3J0ZWRFcnJvciB9OworICAgIHJldHVybiBhdWRpb0J1
ZmZlci5yZWxlYXNlTm9uTnVsbCgpOworfQorCitFeGNlcHRpb25PcjxSZWY8QXVkaW9CdWZmZXI+
PiBXZWJLaXRBdWRpb0NvbnRleHQ6OmNyZWF0ZUJ1ZmZlcihBcnJheUJ1ZmZlciYgYXJyYXlCdWZm
ZXIsIGJvb2wgbWl4VG9Nb25vKQoreworICAgIGF1dG8gYXVkaW9CdWZmZXIgPSBBdWRpb0J1ZmZl
cjo6Y3JlYXRlRnJvbUF1ZGlvRmlsZURhdGEoYXJyYXlCdWZmZXIuZGF0YSgpLCBhcnJheUJ1ZmZl
ci5ieXRlTGVuZ3RoKCksIG1peFRvTW9ubywgc2FtcGxlUmF0ZSgpKTsKKyAgICBpZiAoIWF1ZGlv
QnVmZmVyKQorICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgU3ludGF4RXJyb3IgfTsKKyAgICBy
ZXR1cm4gYXVkaW9CdWZmZXIucmVsZWFzZU5vbk51bGwoKTsKK30KKwordm9pZCBXZWJLaXRBdWRp
b0NvbnRleHQ6OmRlY29kZUF1ZGlvRGF0YShSZWY8QXJyYXlCdWZmZXI+JiYgYXVkaW9EYXRhLCBS
ZWZQdHI8QXVkaW9CdWZmZXJDYWxsYmFjaz4mJiBzdWNjZXNzQ2FsbGJhY2ssIFJlZlB0cjxBdWRp
b0J1ZmZlckNhbGxiYWNrPiYmIGVycm9yQ2FsbGJhY2spCit7CisgICAgaWYgKCFtX2F1ZGlvRGVj
b2RlcikKKyAgICAgICAgbV9hdWRpb0RlY29kZXIgPSBtYWtlVW5pcXVlPEFzeW5jQXVkaW9EZWNv
ZGVyPigpOworICAgIG1fYXVkaW9EZWNvZGVyLT5kZWNvZGVBc3luYyhXVEZNb3ZlKGF1ZGlvRGF0
YSksIHNhbXBsZVJhdGUoKSwgV1RGTW92ZShzdWNjZXNzQ2FsbGJhY2spLCBXVEZNb3ZlKGVycm9y
Q2FsbGJhY2spKTsKK30KKworRXhjZXB0aW9uT3I8UmVmPEF1ZGlvQnVmZmVyU291cmNlTm9kZT4+
IFdlYktpdEF1ZGlvQ29udGV4dDo6Y3JlYXRlQnVmZmVyU291cmNlKCkKK3sKKyAgICBBTFdBWVNf
TE9HKExPR0lERU5USUZJRVIpOworCisgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKworICAg
IGlmIChtX2lzU3RvcFNjaGVkdWxlZCkKKyAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IEludmFs
aWRTdGF0ZUVycm9yIH07CisKKyAgICBsYXp5SW5pdGlhbGl6ZSgpOworICAgIFJlZjxBdWRpb0J1
ZmZlclNvdXJjZU5vZGU+IG5vZGUgPSBBdWRpb0J1ZmZlclNvdXJjZU5vZGU6OmNyZWF0ZSgqdGhp
cywgc2FtcGxlUmF0ZSgpKTsKKworICAgIC8vIEJlY2F1c2UgdGhpcyBpcyBhbiBBdWRpb1NjaGVk
dWxlZFNvdXJjZU5vZGUsIHRoZSBjb250ZXh0IGtlZXBzIGEgcmVmZXJlbmNlIHVudGlsIGl0IGhh
cyBmaW5pc2hlZCBwbGF5aW5nLgorICAgIC8vIFdoZW4gdGhpcyBoYXBwZW5zLCBBdWRpb1NjaGVk
dWxlZFNvdXJjZU5vZGU6OmZpbmlzaCgpIGNhbGxzIFdlYktpdEF1ZGlvQ29udGV4dDo6bm90aWZ5
Tm9kZUZpbmlzaGVkUHJvY2Vzc2luZygpLgorICAgIHJlZk5vZGUobm9kZSk7CisKKyAgICByZXR1
cm4gbm9kZTsKK30KKworI2lmIEVOQUJMRShWSURFTykKKworRXhjZXB0aW9uT3I8UmVmPE1lZGlh
RWxlbWVudEF1ZGlvU291cmNlTm9kZT4+IFdlYktpdEF1ZGlvQ29udGV4dDo6Y3JlYXRlTWVkaWFF
bGVtZW50U291cmNlKEhUTUxNZWRpYUVsZW1lbnQmIG1lZGlhRWxlbWVudCkKK3sKKyAgICBBTFdB
WVNfTE9HKExPR0lERU5USUZJRVIpOworCisgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKwor
ICAgIGlmIChtX2lzU3RvcFNjaGVkdWxlZCB8fCBtZWRpYUVsZW1lbnQuYXVkaW9Tb3VyY2VOb2Rl
KCkpCisgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBJbnZhbGlkU3RhdGVFcnJvciB9OworCisg
ICAgbGF6eUluaXRpYWxpemUoKTsKKworICAgIGF1dG8gbm9kZSA9IE1lZGlhRWxlbWVudEF1ZGlv
U291cmNlTm9kZTo6Y3JlYXRlKCp0aGlzLCBtZWRpYUVsZW1lbnQpOworCisgICAgbWVkaWFFbGVt
ZW50LnNldEF1ZGlvU291cmNlTm9kZShub2RlLnB0cigpKTsKKworICAgIHJlZk5vZGUobm9kZS5n
ZXQoKSk7IC8vIGNvbnRleHQga2VlcHMgcmVmZXJlbmNlIHVudGlsIG5vZGUgaXMgZGlzY29ubmVj
dGVkCisgICAgcmV0dXJuIG5vZGU7Cit9CisKKyNlbmRpZgorCisjaWYgRU5BQkxFKE1FRElBX1NU
UkVBTSkKKworRXhjZXB0aW9uT3I8UmVmPE1lZGlhU3RyZWFtQXVkaW9Tb3VyY2VOb2RlPj4gV2Vi
S2l0QXVkaW9Db250ZXh0OjpjcmVhdGVNZWRpYVN0cmVhbVNvdXJjZShNZWRpYVN0cmVhbSYgbWVk
aWFTdHJlYW0pCit7CisgICAgQUxXQVlTX0xPRyhMT0dJREVOVElGSUVSKTsKKworICAgIEFTU0VS
VChpc01haW5UaHJlYWQoKSk7CisKKyAgICBpZiAobV9pc1N0b3BTY2hlZHVsZWQpCisgICAgICAg
IHJldHVybiBFeGNlcHRpb24geyBJbnZhbGlkU3RhdGVFcnJvciB9OworCisgICAgYXV0byBhdWRp
b1RyYWNrcyA9IG1lZGlhU3RyZWFtLmdldEF1ZGlvVHJhY2tzKCk7CisgICAgaWYgKGF1ZGlvVHJh
Y2tzLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IEludmFsaWRTdGF0ZUVy
cm9yIH07CisKKyAgICBNZWRpYVN0cmVhbVRyYWNrKiBwcm92aWRlclRyYWNrID0gbnVsbHB0cjsK
KyAgICBmb3IgKGF1dG8mIHRyYWNrIDogYXVkaW9UcmFja3MpIHsKKyAgICAgICAgaWYgKHRyYWNr
LT5hdWRpb1NvdXJjZVByb3ZpZGVyKCkpIHsKKyAgICAgICAgICAgIHByb3ZpZGVyVHJhY2sgPSB0
cmFjay5nZXQoKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgfQorICAgIGlm
ICghcHJvdmlkZXJUcmFjaykKKyAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IEludmFsaWRTdGF0
ZUVycm9yIH07CisKKyAgICBsYXp5SW5pdGlhbGl6ZSgpOworCisgICAgYXV0byBub2RlID0gTWVk
aWFTdHJlYW1BdWRpb1NvdXJjZU5vZGU6OmNyZWF0ZSgqdGhpcywgbWVkaWFTdHJlYW0sICpwcm92
aWRlclRyYWNrKTsKKyAgICBub2RlLT5zZXRGb3JtYXQoMiwgc2FtcGxlUmF0ZSgpKTsKKworICAg
IHJlZk5vZGUobm9kZSk7IC8vIGNvbnRleHQga2VlcHMgcmVmZXJlbmNlIHVudGlsIG5vZGUgaXMg
ZGlzY29ubmVjdGVkCisgICAgcmV0dXJuIG5vZGU7Cit9CisKK0V4Y2VwdGlvbk9yPFJlZjxNZWRp
YVN0cmVhbUF1ZGlvRGVzdGluYXRpb25Ob2RlPj4gV2ViS2l0QXVkaW9Db250ZXh0OjpjcmVhdGVN
ZWRpYVN0cmVhbURlc3RpbmF0aW9uKCkKK3sKKyAgICBpZiAobV9pc1N0b3BTY2hlZHVsZWQpCisg
ICAgICAgIHJldHVybiBFeGNlcHRpb24geyBJbnZhbGlkU3RhdGVFcnJvciB9OworCisgICAgLy8g
RklYTUU6IEFkZCBzdXBwb3J0IGZvciBhbiBvcHRpb25hbCBhcmd1bWVudCB3aGljaCBzcGVjaWZp
ZXMgdGhlIG51bWJlciBvZiBjaGFubmVscy4KKyAgICAvLyBGSVhNRTogVGhlIGRlZmF1bHQgc2hv
dWxkIHByb2JhYmx5IGJlIHN0ZXJlbyBpbnN0ZWFkIG9mIG1vbm8uCisgICAgcmV0dXJuIE1lZGlh
U3RyZWFtQXVkaW9EZXN0aW5hdGlvbk5vZGU6OmNyZWF0ZSgqdGhpcywgMSk7Cit9CisKKyNlbmRp
ZgorCitFeGNlcHRpb25PcjxSZWY8U2NyaXB0UHJvY2Vzc29yTm9kZT4+IFdlYktpdEF1ZGlvQ29u
dGV4dDo6Y3JlYXRlU2NyaXB0UHJvY2Vzc29yKHNpemVfdCBidWZmZXJTaXplLCBzaXplX3QgbnVt
YmVyT2ZJbnB1dENoYW5uZWxzLCBzaXplX3QgbnVtYmVyT2ZPdXRwdXRDaGFubmVscykKK3sKKyAg
ICBBTFdBWVNfTE9HKExPR0lERU5USUZJRVIpOworCisgICAgQVNTRVJUKGlzTWFpblRocmVhZCgp
KTsKKworICAgIGlmIChtX2lzU3RvcFNjaGVkdWxlZCkKKyAgICAgICAgcmV0dXJuIEV4Y2VwdGlv
biB7IEludmFsaWRTdGF0ZUVycm9yIH07CisKKyAgICBsYXp5SW5pdGlhbGl6ZSgpOworCisgICAg
Ly8gVzNDIEVkaXRvcidzIERyYWZ0IDA2IEp1bmUgMjAxNworICAgIC8vICBodHRwczovL3dlYmF1
ZGlvLmdpdGh1Yi5pby93ZWItYXVkaW8tYXBpLyN3aWRsLUJhc2VBdWRpb0NvbnRleHQtY3JlYXRl
U2NyaXB0UHJvY2Vzc29yLVNjcmlwdFByb2Nlc3Nvck5vZGUtdW5zaWduZWQtbG9uZy1idWZmZXJT
aXplLXVuc2lnbmVkLWxvbmctbnVtYmVyT2ZJbnB1dENoYW5uZWxzLXVuc2lnbmVkLWxvbmctbnVt
YmVyT2ZPdXRwdXRDaGFubmVscworCisgICAgLy8gVGhlIGJ1ZmZlclNpemUgcGFyYW1ldGVyIGRl
dGVybWluZXMgdGhlIGJ1ZmZlciBzaXplIGluIHVuaXRzIG9mIHNhbXBsZS1mcmFtZXMuIElmIGl0
J3Mgbm90IHBhc3NlZCBpbiwKKyAgICAvLyBvciBpZiB0aGUgdmFsdWUgaXMgMCwgdGhlbiB0aGUg
aW1wbGVtZW50YXRpb24gd2lsbCBjaG9vc2UgdGhlIGJlc3QgYnVmZmVyIHNpemUgZm9yIHRoZSBn
aXZlbiBlbnZpcm9ubWVudCwKKyAgICAvLyB3aGljaCB3aWxsIGJlIGNvbnN0YW50IHBvd2VyIG9m
IDIgdGhyb3VnaG91dCB0aGUgbGlmZXRpbWUgb2YgdGhlIG5vZGUuIC4uLiBJZiB0aGUgdmFsdWUg
b2YgdGhpcyBwYXJhbWV0ZXIKKyAgICAvLyBpcyBub3Qgb25lIG9mIHRoZSBhbGxvd2VkIHBvd2Vy
LW9mLTIgdmFsdWVzIGxpc3RlZCBhYm92ZSwgYW4gSW5kZXhTaXplRXJyb3IgbXVzdCBiZSB0aHJv
d24uCisgICAgc3dpdGNoIChidWZmZXJTaXplKSB7CisgICAgY2FzZSAwOgorI2lmIFVTRShBVURJ
T19TRVNTSU9OKQorICAgICAgICAvLyBQaWNrIGEgdmFsdWUgYmV0d2VlbiAyNTYgKDJeOCkgYW5k
IDE2Mzg0ICgyXjE0KSwgYmFzZWQgb24gdGhlIGJ1ZmZlciBzaXplIG9mIHRoZSBjdXJyZW50IEF1
ZGlvU2Vzc2lvbjoKKyAgICAgICAgYnVmZmVyU2l6ZSA9IDEgPDwgc3RkOjptYXg8c2l6ZV90Pig4
LCBzdGQ6Om1pbjxzaXplX3Q+KDE0LCBzdGQ6OmxvZzIoQXVkaW9TZXNzaW9uOjpzaGFyZWRTZXNz
aW9uKCkuYnVmZmVyU2l6ZSgpKSkpOworI2Vsc2UKKyAgICAgICAgYnVmZmVyU2l6ZSA9IDIwNDg7
CisjZW5kaWYKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSAyNTY6CisgICAgY2FzZSA1MTI6Cisg
ICAgY2FzZSAxMDI0OgorICAgIGNhc2UgMjA0ODoKKyAgICBjYXNlIDQwOTY6CisgICAgY2FzZSA4
MTkyOgorICAgIGNhc2UgMTYzODQ6CisgICAgICAgIGJyZWFrOworICAgIGRlZmF1bHQ6CisgICAg
ICAgIHJldHVybiBFeGNlcHRpb24geyBJbmRleFNpemVFcnJvciB9OworICAgIH0KKworICAgIC8v
IEFuIEluZGV4U2l6ZUVycm9yIGV4Y2VwdGlvbiBtdXN0IGJlIHRocm93biBpZiBidWZmZXJTaXpl
IG9yIG51bWJlck9mSW5wdXRDaGFubmVscyBvciBudW1iZXJPZk91dHB1dENoYW5uZWxzCisgICAg
Ly8gYXJlIG91dHNpZGUgdGhlIHZhbGlkIHJhbmdlLiBJdCBpcyBpbnZhbGlkIGZvciBib3RoIG51
bWJlck9mSW5wdXRDaGFubmVscyBhbmQgbnVtYmVyT2ZPdXRwdXRDaGFubmVscyB0byBiZSB6ZXJv
LgorICAgIC8vIEluIHRoaXMgY2FzZSBhbiBJbmRleFNpemVFcnJvciBtdXN0IGJlIHRocm93bi4K
KworICAgIGlmICghbnVtYmVyT2ZJbnB1dENoYW5uZWxzICYmICFudW1iZXJPZk91dHB1dENoYW5u
ZWxzKQorICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgTm90U3VwcG9ydGVkRXJyb3IgfTsKKwor
ICAgIC8vIFRoaXMgcGFyYW1ldGVyIFtudW1iZXJPZklucHV0Q2hhbm5lbHNdIGRldGVybWluZXMg
dGhlIG51bWJlciBvZiBjaGFubmVscyBmb3IgdGhpcyBub2RlJ3MgaW5wdXQuIFZhbHVlcyBvZgor
ICAgIC8vIHVwIHRvIDMyIG11c3QgYmUgc3VwcG9ydGVkLiBBIE5vdFN1cHBvcnRlZEVycm9yIG11
c3QgYmUgdGhyb3duIGlmIHRoZSBudW1iZXIgb2YgY2hhbm5lbHMgaXMgbm90IHN1cHBvcnRlZC4K
KworICAgIGlmIChudW1iZXJPZklucHV0Q2hhbm5lbHMgPiBtYXhOdW1iZXJPZkNoYW5uZWxzKCkp
CisgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBOb3RTdXBwb3J0ZWRFcnJvciB9OworCisgICAg
Ly8gVGhpcyBwYXJhbWV0ZXIgW251bWJlck9mT3V0cHV0Q2hhbm5lbHNdIGRldGVybWluZXMgdGhl
IG51bWJlciBvZiBjaGFubmVscyBmb3IgdGhpcyBub2RlJ3Mgb3V0cHV0LiBWYWx1ZXMgb2YKKyAg
ICAvLyB1cCB0byAzMiBtdXN0IGJlIHN1cHBvcnRlZC4gQSBOb3RTdXBwb3J0ZWRFcnJvciBtdXN0
IGJlIHRocm93biBpZiB0aGUgbnVtYmVyIG9mIGNoYW5uZWxzIGlzIG5vdCBzdXBwb3J0ZWQuCisK
KyAgICBpZiAobnVtYmVyT2ZPdXRwdXRDaGFubmVscyA+IG1heE51bWJlck9mQ2hhbm5lbHMoKSkK
KyAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IE5vdFN1cHBvcnRlZEVycm9yIH07CisKKyAgICBh
dXRvIG5vZGUgPSBTY3JpcHRQcm9jZXNzb3JOb2RlOjpjcmVhdGUoKnRoaXMsIHNhbXBsZVJhdGUo
KSwgYnVmZmVyU2l6ZSwgbnVtYmVyT2ZJbnB1dENoYW5uZWxzLCBudW1iZXJPZk91dHB1dENoYW5u
ZWxzKTsKKworICAgIHJlZk5vZGUobm9kZSk7IC8vIGNvbnRleHQga2VlcHMgcmVmZXJlbmNlIHVu
dGlsIHdlIHN0b3AgbWFraW5nIGphdmFzY3JpcHQgcmVuZGVyaW5nIGNhbGxiYWNrcworICAgIHJl
dHVybiBub2RlOworfQorCitFeGNlcHRpb25PcjxSZWY8QmlxdWFkRmlsdGVyTm9kZT4+IFdlYktp
dEF1ZGlvQ29udGV4dDo6Y3JlYXRlQmlxdWFkRmlsdGVyKCkKK3sKKyAgICBBTFdBWVNfTE9HKExP
R0lERU5USUZJRVIpOworCisgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKyAgICBpZiAobV9p
c1N0b3BTY2hlZHVsZWQpCisgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBJbnZhbGlkU3RhdGVF
cnJvciB9OworCisgICAgbGF6eUluaXRpYWxpemUoKTsKKworICAgIHJldHVybiBCaXF1YWRGaWx0
ZXJOb2RlOjpjcmVhdGUoKnRoaXMsIHNhbXBsZVJhdGUoKSk7Cit9CisKK0V4Y2VwdGlvbk9yPFJl
ZjxXYXZlU2hhcGVyTm9kZT4+IFdlYktpdEF1ZGlvQ29udGV4dDo6Y3JlYXRlV2F2ZVNoYXBlcigp
Cit7CisgICAgQUxXQVlTX0xPRyhMT0dJREVOVElGSUVSKTsKKworICAgIEFTU0VSVChpc01haW5U
aHJlYWQoKSk7CisgICAgaWYgKG1faXNTdG9wU2NoZWR1bGVkKQorICAgICAgICByZXR1cm4gRXhj
ZXB0aW9uIHsgSW52YWxpZFN0YXRlRXJyb3IgfTsKKworICAgIGxhenlJbml0aWFsaXplKCk7Cisg
ICAgcmV0dXJuIFdhdmVTaGFwZXJOb2RlOjpjcmVhdGUoKnRoaXMpOworfQorCitFeGNlcHRpb25P
cjxSZWY8V2ViS2l0QXVkaW9QYW5uZXJOb2RlPj4gV2ViS2l0QXVkaW9Db250ZXh0OjpjcmVhdGVQ
YW5uZXIoKQoreworICAgIEFMV0FZU19MT0coTE9HSURFTlRJRklFUik7CisKKyAgICBBU1NFUlQo
aXNNYWluVGhyZWFkKCkpOworICAgIGlmIChtX2lzU3RvcFNjaGVkdWxlZCkKKyAgICAgICAgcmV0
dXJuIEV4Y2VwdGlvbiB7IEludmFsaWRTdGF0ZUVycm9yIH07CisKKyAgICBsYXp5SW5pdGlhbGl6
ZSgpOworICAgIHJldHVybiBXZWJLaXRBdWRpb1Bhbm5lck5vZGU6OmNyZWF0ZSgqdGhpcywgc2Ft
cGxlUmF0ZSgpKTsKK30KKworRXhjZXB0aW9uT3I8UmVmPENvbnZvbHZlck5vZGU+PiBXZWJLaXRB
dWRpb0NvbnRleHQ6OmNyZWF0ZUNvbnZvbHZlcigpCit7CisgICAgQUxXQVlTX0xPRyhMT0dJREVO
VElGSUVSKTsKKworICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisgICAgaWYgKG1faXNTdG9w
U2NoZWR1bGVkKQorICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgSW52YWxpZFN0YXRlRXJyb3Ig
fTsKKworICAgIGxhenlJbml0aWFsaXplKCk7CisgICAgcmV0dXJuIENvbnZvbHZlck5vZGU6OmNy
ZWF0ZSgqdGhpcywgc2FtcGxlUmF0ZSgpKTsKK30KKworRXhjZXB0aW9uT3I8UmVmPER5bmFtaWNz
Q29tcHJlc3Nvck5vZGU+PiBXZWJLaXRBdWRpb0NvbnRleHQ6OmNyZWF0ZUR5bmFtaWNzQ29tcHJl
c3NvcigpCit7CisgICAgQUxXQVlTX0xPRyhMT0dJREVOVElGSUVSKTsKKworICAgIEFTU0VSVChp
c01haW5UaHJlYWQoKSk7CisgICAgaWYgKG1faXNTdG9wU2NoZWR1bGVkKQorICAgICAgICByZXR1
cm4gRXhjZXB0aW9uIHsgSW52YWxpZFN0YXRlRXJyb3IgfTsKKworICAgIGxhenlJbml0aWFsaXpl
KCk7CisgICAgcmV0dXJuIER5bmFtaWNzQ29tcHJlc3Nvck5vZGU6OmNyZWF0ZSgqdGhpcywgc2Ft
cGxlUmF0ZSgpKTsKK30KKworRXhjZXB0aW9uT3I8UmVmPEFuYWx5c2VyTm9kZT4+IFdlYktpdEF1
ZGlvQ29udGV4dDo6Y3JlYXRlQW5hbHlzZXIoKQoreworICAgIEFMV0FZU19MT0coTE9HSURFTlRJ
RklFUik7CisKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAgIGlmIChtX2lzU3RvcFNj
aGVkdWxlZCkKKyAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IEludmFsaWRTdGF0ZUVycm9yIH07
CisKKyAgICBsYXp5SW5pdGlhbGl6ZSgpOworICAgIHJldHVybiBBbmFseXNlck5vZGU6OmNyZWF0
ZSgqdGhpcywgc2FtcGxlUmF0ZSgpKTsKK30KKworRXhjZXB0aW9uT3I8UmVmPEdhaW5Ob2RlPj4g
V2ViS2l0QXVkaW9Db250ZXh0OjpjcmVhdGVHYWluKCkKK3sKKyAgICBBTFdBWVNfTE9HKExPR0lE
RU5USUZJRVIpOworCisgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKyAgICBpZiAobV9pc1N0
b3BTY2hlZHVsZWQpCisgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBJbnZhbGlkU3RhdGVFcnJv
ciB9OworCisgICAgbGF6eUluaXRpYWxpemUoKTsKKyAgICByZXR1cm4gR2Fpbk5vZGU6OmNyZWF0
ZSgqdGhpcywgc2FtcGxlUmF0ZSgpKTsKK30KKworRXhjZXB0aW9uT3I8UmVmPERlbGF5Tm9kZT4+
IFdlYktpdEF1ZGlvQ29udGV4dDo6Y3JlYXRlRGVsYXkoZG91YmxlIG1heERlbGF5VGltZSkKK3sK
KyAgICBBTFdBWVNfTE9HKExPR0lERU5USUZJRVIpOworCisgICAgQVNTRVJUKGlzTWFpblRocmVh
ZCgpKTsKKyAgICBpZiAobV9pc1N0b3BTY2hlZHVsZWQpCisgICAgICAgIHJldHVybiBFeGNlcHRp
b24geyBJbnZhbGlkU3RhdGVFcnJvciB9OworCisgICAgbGF6eUluaXRpYWxpemUoKTsKKyAgICBy
ZXR1cm4gRGVsYXlOb2RlOjpjcmVhdGUoKnRoaXMsIHNhbXBsZVJhdGUoKSwgbWF4RGVsYXlUaW1l
KTsKK30KKworRXhjZXB0aW9uT3I8UmVmPENoYW5uZWxTcGxpdHRlck5vZGU+PiBXZWJLaXRBdWRp
b0NvbnRleHQ6OmNyZWF0ZUNoYW5uZWxTcGxpdHRlcihzaXplX3QgbnVtYmVyT2ZPdXRwdXRzKQor
eworICAgIEFMV0FZU19MT0coTE9HSURFTlRJRklFUik7CisKKyAgICBBU1NFUlQoaXNNYWluVGhy
ZWFkKCkpOworICAgIGlmIChtX2lzU3RvcFNjaGVkdWxlZCkKKyAgICAgICAgcmV0dXJuIEV4Y2Vw
dGlvbiB7IEludmFsaWRTdGF0ZUVycm9yIH07CisKKyAgICBsYXp5SW5pdGlhbGl6ZSgpOworICAg
IGF1dG8gbm9kZSA9IENoYW5uZWxTcGxpdHRlck5vZGU6OmNyZWF0ZSgqdGhpcywgc2FtcGxlUmF0
ZSgpLCBudW1iZXJPZk91dHB1dHMpOworICAgIGlmICghbm9kZSkKKyAgICAgICAgcmV0dXJuIEV4
Y2VwdGlvbiB7IEluZGV4U2l6ZUVycm9yIH07CisgICAgcmV0dXJuIG5vZGUucmVsZWFzZU5vbk51
bGwoKTsKK30KKworRXhjZXB0aW9uT3I8UmVmPENoYW5uZWxNZXJnZXJOb2RlPj4gV2ViS2l0QXVk
aW9Db250ZXh0OjpjcmVhdGVDaGFubmVsTWVyZ2VyKHNpemVfdCBudW1iZXJPZklucHV0cykKK3sK
KyAgICBBTFdBWVNfTE9HKExPR0lERU5USUZJRVIpOworCisgICAgQVNTRVJUKGlzTWFpblRocmVh
ZCgpKTsKKyAgICBpZiAobV9pc1N0b3BTY2hlZHVsZWQpCisgICAgICAgIHJldHVybiBFeGNlcHRp
b24geyBJbnZhbGlkU3RhdGVFcnJvciB9OworCisgICAgbGF6eUluaXRpYWxpemUoKTsKKyAgICBh
dXRvIG5vZGUgPSBDaGFubmVsTWVyZ2VyTm9kZTo6Y3JlYXRlKCp0aGlzLCBzYW1wbGVSYXRlKCks
IG51bWJlck9mSW5wdXRzKTsKKyAgICBpZiAoIW5vZGUpCisgICAgICAgIHJldHVybiBFeGNlcHRp
b24geyBJbmRleFNpemVFcnJvciB9OworICAgIHJldHVybiBub2RlLnJlbGVhc2VOb25OdWxsKCk7
Cit9CisKK0V4Y2VwdGlvbk9yPFJlZjxPc2NpbGxhdG9yTm9kZT4+IFdlYktpdEF1ZGlvQ29udGV4
dDo6Y3JlYXRlT3NjaWxsYXRvcigpCit7CisgICAgQUxXQVlTX0xPRyhMT0dJREVOVElGSUVSKTsK
KworICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisgICAgaWYgKG1faXNTdG9wU2NoZWR1bGVk
KQorICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgSW52YWxpZFN0YXRlRXJyb3IgfTsKKworICAg
IGxhenlJbml0aWFsaXplKCk7CisKKyAgICBSZWY8T3NjaWxsYXRvck5vZGU+IG5vZGUgPSBPc2Np
bGxhdG9yTm9kZTo6Y3JlYXRlKCp0aGlzLCBzYW1wbGVSYXRlKCkpOworCisgICAgLy8gQmVjYXVz
ZSB0aGlzIGlzIGFuIEF1ZGlvU2NoZWR1bGVkU291cmNlTm9kZSwgdGhlIGNvbnRleHQga2VlcHMg
YSByZWZlcmVuY2UgdW50aWwgaXQgaGFzIGZpbmlzaGVkIHBsYXlpbmcuCisgICAgLy8gV2hlbiB0
aGlzIGhhcHBlbnMsIEF1ZGlvU2NoZWR1bGVkU291cmNlTm9kZTo6ZmluaXNoKCkgY2FsbHMgV2Vi
S2l0QXVkaW9Db250ZXh0Ojpub3RpZnlOb2RlRmluaXNoZWRQcm9jZXNzaW5nKCkuCisgICAgcmVm
Tm9kZShub2RlKTsKKworICAgIHJldHVybiBub2RlOworfQorCitFeGNlcHRpb25PcjxSZWY8UGVy
aW9kaWNXYXZlPj4gV2ViS2l0QXVkaW9Db250ZXh0OjpjcmVhdGVQZXJpb2RpY1dhdmUoRmxvYXQz
MkFycmF5JiByZWFsLCBGbG9hdDMyQXJyYXkmIGltYWdpbmFyeSkKK3sKKyAgICBBTFdBWVNfTE9H
KExPR0lERU5USUZJRVIpOworCisgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKyAgICBpZiAo
bV9pc1N0b3BTY2hlZHVsZWQpCisgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBJbnZhbGlkU3Rh
dGVFcnJvciB9OworCisgICAgaWYgKHJlYWwubGVuZ3RoKCkgIT0gaW1hZ2luYXJ5Lmxlbmd0aCgp
IHx8IChyZWFsLmxlbmd0aCgpID4gTWF4UGVyaW9kaWNXYXZlTGVuZ3RoKSB8fCAhcmVhbC5sZW5n
dGgoKSkKKyAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IEluZGV4U2l6ZUVycm9yIH07CisgICAg
bGF6eUluaXRpYWxpemUoKTsKKyAgICByZXR1cm4gUGVyaW9kaWNXYXZlOjpjcmVhdGUoc2FtcGxl
UmF0ZSgpLCByZWFsLCBpbWFnaW5hcnkpOworfQorCit2b2lkIFdlYktpdEF1ZGlvQ29udGV4dDo6
bm90aWZ5Tm9kZUZpbmlzaGVkUHJvY2Vzc2luZyhBdWRpb05vZGUqIG5vZGUpCit7CisgICAgQVNT
RVJUKGlzQXVkaW9UaHJlYWQoKSk7CisgICAgbV9maW5pc2hlZE5vZGVzLmFwcGVuZChub2RlKTsK
K30KKwordm9pZCBXZWJLaXRBdWRpb0NvbnRleHQ6OmRlcmVmRmluaXNoZWRTb3VyY2VOb2Rlcygp
Cit7CisgICAgQVNTRVJUKGlzR3JhcGhPd25lcigpKTsKKyAgICBBU1NFUlQoaXNBdWRpb1RocmVh
ZCgpIHx8IGlzQXVkaW9UaHJlYWRGaW5pc2hlZCgpKTsKKyAgICBmb3IgKGF1dG8mIG5vZGUgOiBt
X2ZpbmlzaGVkTm9kZXMpCisgICAgICAgIGRlcmVmTm9kZSgqbm9kZSk7CisKKyAgICBtX2Zpbmlz
aGVkTm9kZXMuY2xlYXIoKTsKK30KKwordm9pZCBXZWJLaXRBdWRpb0NvbnRleHQ6OnJlZk5vZGUo
QXVkaW9Ob2RlJiBub2RlKQoreworICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisgICAgQXV0
b0xvY2tlciBsb2NrZXIoKnRoaXMpOworCisgICAgbm9kZS5yZWYoQXVkaW9Ob2RlOjpSZWZUeXBl
Q29ubmVjdGlvbik7CisgICAgbV9yZWZlcmVuY2VkTm9kZXMuYXBwZW5kKCZub2RlKTsKK30KKwor
dm9pZCBXZWJLaXRBdWRpb0NvbnRleHQ6OmRlcmVmTm9kZShBdWRpb05vZGUmIG5vZGUpCit7Cisg
ICAgQVNTRVJUKGlzR3JhcGhPd25lcigpKTsKKworICAgIG5vZGUuZGVyZWYoQXVkaW9Ob2RlOjpS
ZWZUeXBlQ29ubmVjdGlvbik7CisKKyAgICBBU1NFUlQobV9yZWZlcmVuY2VkTm9kZXMuY29udGFp
bnMoJm5vZGUpKTsKKyAgICBtX3JlZmVyZW5jZWROb2Rlcy5yZW1vdmVGaXJzdCgmbm9kZSk7Cit9
CisKK3ZvaWQgV2ViS2l0QXVkaW9Db250ZXh0OjpkZXJlZlVuZmluaXNoZWRTb3VyY2VOb2Rlcygp
Cit7CisgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpICYmIGlzQXVkaW9UaHJlYWRGaW5pc2hlZCgp
KTsKKyAgICBmb3IgKGF1dG8mIG5vZGUgOiBtX3JlZmVyZW5jZWROb2RlcykKKyAgICAgICAgbm9k
ZS0+ZGVyZWYoQXVkaW9Ob2RlOjpSZWZUeXBlQ29ubmVjdGlvbik7CisKKyAgICBtX3JlZmVyZW5j
ZWROb2Rlcy5jbGVhcigpOworfQorCit2b2lkIFdlYktpdEF1ZGlvQ29udGV4dDo6bG9jayhib29s
JiBtdXN0UmVsZWFzZUxvY2spCit7CisgICAgLy8gRG9uJ3QgYWxsb3cgcmVndWxhciBsb2NrIGlu
IHJlYWwtdGltZSBhdWRpbyB0aHJlYWQuCisgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKwor
ICAgIFRocmVhZCYgdGhpc1RocmVhZCA9IFRocmVhZDo6Y3VycmVudCgpOworCisgICAgaWYgKCZ0
aGlzVGhyZWFkID09IG1fZ3JhcGhPd25lclRocmVhZCkgeworICAgICAgICAvLyBXZSBhbHJlYWR5
IGhhdmUgdGhlIGxvY2suCisgICAgICAgIG11c3RSZWxlYXNlTG9jayA9IGZhbHNlOworICAgIH0g
ZWxzZSB7CisgICAgICAgIC8vIEFjcXVpcmUgdGhlIGxvY2suCisgICAgICAgIG1fY29udGV4dEdy
YXBoTXV0ZXgubG9jaygpOworICAgICAgICBtX2dyYXBoT3duZXJUaHJlYWQgPSAmdGhpc1RocmVh
ZDsKKyAgICAgICAgbXVzdFJlbGVhc2VMb2NrID0gdHJ1ZTsKKyAgICB9Cit9CisKK2Jvb2wgV2Vi
S2l0QXVkaW9Db250ZXh0Ojp0cnlMb2NrKGJvb2wmIG11c3RSZWxlYXNlTG9jaykKK3sKKyAgICBU
aHJlYWQmIHRoaXNUaHJlYWQgPSBUaHJlYWQ6OmN1cnJlbnQoKTsKKyAgICBib29sIGlzQXVkaW9U
aHJlYWQgPSAmdGhpc1RocmVhZCA9PSBhdWRpb1RocmVhZCgpOworCisgICAgLy8gVHJ5IHRvIGNh
dGNoIGNhc2VzIG9mIHVzaW5nIHRyeSBsb2NrIG9uIG1haW4gdGhyZWFkIC0gaXQgc2hvdWxkIHVz
ZSByZWd1bGFyIGxvY2suCisgICAgQVNTRVJUKGlzQXVkaW9UaHJlYWQgfHwgaXNBdWRpb1RocmVh
ZEZpbmlzaGVkKCkpOworCisgICAgaWYgKCFpc0F1ZGlvVGhyZWFkKSB7CisgICAgICAgIC8vIElu
IHJlbGVhc2UgYnVpbGQgdHJlYXQgdHJ5TG9jaygpIGFzIGxvY2soKSAoc2luY2UgYWJvdmUgQVNT
RVJUKGlzQXVkaW9UaHJlYWQpIG5ldmVyIGZpcmVzKSAtIHRoaXMgaXMgdGhlIGJlc3Qgd2UgY2Fu
IGRvLgorICAgICAgICBsb2NrKG11c3RSZWxlYXNlTG9jayk7CisgICAgICAgIHJldHVybiB0cnVl
OworICAgIH0KKworICAgIGJvb2wgaGFzTG9jazsKKworICAgIGlmICgmdGhpc1RocmVhZCA9PSBt
X2dyYXBoT3duZXJUaHJlYWQpIHsKKyAgICAgICAgLy8gVGhyZWFkIGFscmVhZHkgaGFzIHRoZSBs
b2NrLgorICAgICAgICBoYXNMb2NrID0gdHJ1ZTsKKyAgICAgICAgbXVzdFJlbGVhc2VMb2NrID0g
ZmFsc2U7CisgICAgfSBlbHNlIHsKKyAgICAgICAgLy8gRG9uJ3QgYWxyZWFkeSBoYXZlIHRoZSBs
b2NrIC0gdHJ5IHRvIGFjcXVpcmUgaXQuCisgICAgICAgIGhhc0xvY2sgPSBtX2NvbnRleHRHcmFw
aE11dGV4LnRyeUxvY2soKTsKKworICAgICAgICBpZiAoaGFzTG9jaykKKyAgICAgICAgICAgIG1f
Z3JhcGhPd25lclRocmVhZCA9ICZ0aGlzVGhyZWFkOworCisgICAgICAgIG11c3RSZWxlYXNlTG9j
ayA9IGhhc0xvY2s7CisgICAgfQorCisgICAgcmV0dXJuIGhhc0xvY2s7Cit9CisKK3ZvaWQgV2Vi
S2l0QXVkaW9Db250ZXh0Ojp1bmxvY2soKQoreworICAgIEFTU0VSVChtX2dyYXBoT3duZXJUaHJl
YWQgPT0gJlRocmVhZDo6Y3VycmVudCgpKTsKKworICAgIG1fZ3JhcGhPd25lclRocmVhZCA9IG51
bGxwdHI7CisgICAgbV9jb250ZXh0R3JhcGhNdXRleC51bmxvY2soKTsKK30KKworYm9vbCBXZWJL
aXRBdWRpb0NvbnRleHQ6OmlzQXVkaW9UaHJlYWQoKSBjb25zdAoreworICAgIHJldHVybiBtX2F1
ZGlvVGhyZWFkID09ICZUaHJlYWQ6OmN1cnJlbnQoKTsKK30KKworYm9vbCBXZWJLaXRBdWRpb0Nv
bnRleHQ6OmlzR3JhcGhPd25lcigpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fZ3JhcGhPd25lclRo
cmVhZCA9PSAmVGhyZWFkOjpjdXJyZW50KCk7Cit9CisKK3ZvaWQgV2ViS2l0QXVkaW9Db250ZXh0
OjphZGREZWZlcnJlZEZpbmlzaERlcmVmKEF1ZGlvTm9kZSogbm9kZSkKK3sKKyAgICBBU1NFUlQo
aXNBdWRpb1RocmVhZCgpKTsKKyAgICBtX2RlZmVycmVkRmluaXNoRGVyZWZMaXN0LmFwcGVuZChu
b2RlKTsKK30KKwordm9pZCBXZWJLaXRBdWRpb0NvbnRleHQ6OmhhbmRsZVByZVJlbmRlclRhc2tz
KCkKK3sKKyAgICBBU1NFUlQoaXNBdWRpb1RocmVhZCgpKTsKKworICAgIC8vIEF0IHRoZSBiZWdp
bm5pbmcgb2YgZXZlcnkgcmVuZGVyIHF1YW50dW0sIHRyeSB0byB1cGRhdGUgdGhlIGludGVybmFs
IHJlbmRlcmluZyBncmFwaCBzdGF0ZSAoZnJvbSBtYWluIHRocmVhZCBjaGFuZ2VzKS4KKyAgICAv
LyBJdCdzIE9LIGlmIHRoZSB0cnlMb2NrKCkgZmFpbHMsIHdlJ2xsIGp1c3QgdGFrZSBzbGlnaHRs
eSBsb25nZXIgdG8gcGljayB1cCB0aGUgY2hhbmdlcy4KKyAgICBib29sIG11c3RSZWxlYXNlTG9j
azsKKyAgICBpZiAodHJ5TG9jayhtdXN0UmVsZWFzZUxvY2spKSB7CisgICAgICAgIC8vIEZpeHVw
IHRoZSBzdGF0ZSBvZiBhbnkgZGlydHkgQXVkaW9TdW1taW5nSnVuY3Rpb25zIGFuZCBBdWRpb05v
ZGVPdXRwdXRzLgorICAgICAgICBoYW5kbGVEaXJ0eUF1ZGlvU3VtbWluZ0p1bmN0aW9ucygpOwor
ICAgICAgICBoYW5kbGVEaXJ0eUF1ZGlvTm9kZU91dHB1dHMoKTsKKworICAgICAgICB1cGRhdGVB
dXRvbWF0aWNQdWxsTm9kZXMoKTsKKworICAgICAgICBpZiAobXVzdFJlbGVhc2VMb2NrKQorICAg
ICAgICAgICAgdW5sb2NrKCk7CisgICAgfQorfQorCit2b2lkIFdlYktpdEF1ZGlvQ29udGV4dDo6
aGFuZGxlUG9zdFJlbmRlclRhc2tzKCkKK3sKKyAgICBBU1NFUlQoaXNBdWRpb1RocmVhZCgpKTsK
KworICAgIC8vIE11c3QgdXNlIGEgdHJ5TG9jaygpIGhlcmUgdG9vLiBEb24ndCB3b3JyeSwgdGhl
IGxvY2sgd2lsbCB2ZXJ5IHJhcmVseSBiZSBjb250ZW5kZWQgYW5kIHRoaXMgbWV0aG9kIGlzIGNh
bGxlZCBmcmVxdWVudGx5LgorICAgIC8vIFRoZSB3b3JzdCB0aGF0IGNhbiBoYXBwZW4gaXMgdGhh
dCB0aGVyZSB3aWxsIGJlIHNvbWUgbm9kZXMgd2hpY2ggd2lsbCB0YWtlIHNsaWdodGx5IGxvbmdl
ciB0aGFuIHVzdWFsIHRvIGJlIGRlbGV0ZWQgb3IgcmVtb3ZlZAorICAgIC8vIGZyb20gdGhlIHJl
bmRlciBncmFwaCAoaW4gd2hpY2ggY2FzZSB0aGV5J2xsIHJlbmRlciBzaWxlbmNlKS4KKyAgICBi
b29sIG11c3RSZWxlYXNlTG9jazsKKyAgICBpZiAodHJ5TG9jayhtdXN0UmVsZWFzZUxvY2spKSB7
CisgICAgICAgIC8vIFRha2UgY2FyZSBvZiBmaW5pc2hpbmcgYW55IGRlcmVmcyB3aGVyZSB0aGUg
dHJ5TG9jaygpIGZhaWxlZCBwcmV2aW91c2x5LgorICAgICAgICBoYW5kbGVEZWZlcnJlZEZpbmlz
aERlcmVmcygpOworCisgICAgICAgIC8vIER5bmFtaWNhbGx5IGNsZWFuIHVwIG5vZGVzIHdoaWNo
IGFyZSBubyBsb25nZXIgbmVlZGVkLgorICAgICAgICBkZXJlZkZpbmlzaGVkU291cmNlTm9kZXMo
KTsKKworICAgICAgICAvLyBEb24ndCBkZWxldGUgaW4gdGhlIHJlYWwtdGltZSB0aHJlYWQuIExl
dCB0aGUgbWFpbiB0aHJlYWQgZG8gaXQuCisgICAgICAgIC8vIFJlZi1jb3VudGVkIG9iamVjdHMg
aGVsZCBieSBjZXJ0YWluIEF1ZGlvTm9kZXMgbWF5IG5vdCBiZSB0aHJlYWQtc2FmZS4KKyAgICAg
ICAgc2NoZWR1bGVOb2RlRGVsZXRpb24oKTsKKworICAgICAgICAvLyBGaXh1cCB0aGUgc3RhdGUg
b2YgYW55IGRpcnR5IEF1ZGlvU3VtbWluZ0p1bmN0aW9ucyBhbmQgQXVkaW9Ob2RlT3V0cHV0cy4K
KyAgICAgICAgaGFuZGxlRGlydHlBdWRpb1N1bW1pbmdKdW5jdGlvbnMoKTsKKyAgICAgICAgaGFu
ZGxlRGlydHlBdWRpb05vZGVPdXRwdXRzKCk7CisKKyAgICAgICAgdXBkYXRlQXV0b21hdGljUHVs
bE5vZGVzKCk7CisKKyAgICAgICAgaWYgKG11c3RSZWxlYXNlTG9jaykKKyAgICAgICAgICAgIHVu
bG9jaygpOworICAgIH0KK30KKwordm9pZCBXZWJLaXRBdWRpb0NvbnRleHQ6OmhhbmRsZURlZmVy
cmVkRmluaXNoRGVyZWZzKCkKK3sKKyAgICBBU1NFUlQoaXNBdWRpb1RocmVhZCgpICYmIGlzR3Jh
cGhPd25lcigpKTsKKyAgICBmb3IgKGF1dG8mIG5vZGUgOiBtX2RlZmVycmVkRmluaXNoRGVyZWZM
aXN0KQorICAgICAgICBub2RlLT5maW5pc2hEZXJlZihBdWRpb05vZGU6OlJlZlR5cGVDb25uZWN0
aW9uKTsKKworICAgIG1fZGVmZXJyZWRGaW5pc2hEZXJlZkxpc3QuY2xlYXIoKTsKK30KKwordm9p
ZCBXZWJLaXRBdWRpb0NvbnRleHQ6Om1hcmtGb3JEZWxldGlvbihBdWRpb05vZGUmIG5vZGUpCit7
CisgICAgQVNTRVJUKGlzR3JhcGhPd25lcigpKTsKKworICAgIGlmIChpc0F1ZGlvVGhyZWFkRmlu
aXNoZWQoKSkKKyAgICAgICAgbV9ub2Rlc1RvRGVsZXRlLmFwcGVuZCgmbm9kZSk7CisgICAgZWxz
ZQorICAgICAgICBtX25vZGVzTWFya2VkRm9yRGVsZXRpb24uYXBwZW5kKCZub2RlKTsKKworICAg
IC8vIFRoaXMgaXMgcHJvYmFibHkgdGhlIGJlc3QgdGltZSBmb3IgdXMgdG8gcmVtb3ZlIHRoZSBu
b2RlIGZyb20gYXV0b21hdGljIHB1bGwgbGlzdCwKKyAgICAvLyBzaW5jZSBhbGwgY29ubmVjdGlv
bnMgYXJlIGdvbmUgYW5kIHdlIGhvbGQgdGhlIGdyYXBoIGxvY2suIFRoZW4gd2hlbiBoYW5kbGVQ
b3N0UmVuZGVyVGFza3MoKQorICAgIC8vIGdldHMgYSBjaGFuY2UgdG8gc2NoZWR1bGUgdGhlIGRl
bGV0aW9uIHdvcmssIHVwZGF0ZUF1dG9tYXRpY1B1bGxOb2RlcygpIGFsc28gZ2V0cyBhIGNoYW5j
ZSB0bworICAgIC8vIG1vZGlmeSBtX3JlbmRlcmluZ0F1dG9tYXRpY1B1bGxOb2Rlcy4KKyAgICBy
ZW1vdmVBdXRvbWF0aWNQdWxsTm9kZShub2RlKTsKK30KKwordm9pZCBXZWJLaXRBdWRpb0NvbnRl
eHQ6OnNjaGVkdWxlTm9kZURlbGV0aW9uKCkKK3sKKyAgICBib29sIGlzR29vZCA9IG1faXNJbml0
aWFsaXplZCAmJiBpc0dyYXBoT3duZXIoKTsKKyAgICBBU1NFUlQoaXNHb29kKTsKKyAgICBpZiAo
IWlzR29vZCkKKyAgICAgICAgcmV0dXJuOworCisgICAgLy8gTWFrZSBzdXJlIHRvIGNhbGwgZGVs
ZXRlTWFya2VkTm9kZXMoKSBvbiBtYWluIHRocmVhZC4KKyAgICBpZiAobV9ub2Rlc01hcmtlZEZv
ckRlbGV0aW9uLnNpemUoKSAmJiAhbV9pc0RlbGV0aW9uU2NoZWR1bGVkKSB7CisgICAgICAgIG1f
bm9kZXNUb0RlbGV0ZS5hcHBlbmRWZWN0b3IobV9ub2Rlc01hcmtlZEZvckRlbGV0aW9uKTsKKyAg
ICAgICAgbV9ub2Rlc01hcmtlZEZvckRlbGV0aW9uLmNsZWFyKCk7CisKKyAgICAgICAgbV9pc0Rl
bGV0aW9uU2NoZWR1bGVkID0gdHJ1ZTsKKworICAgICAgICBjYWxsT25NYWluVGhyZWFkKFtwcm90
ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyldKCkgbXV0YWJsZSB7CisgICAgICAgICAgICBwcm90
ZWN0ZWRUaGlzLT5kZWxldGVNYXJrZWROb2RlcygpOworICAgICAgICB9KTsKKyAgICB9Cit9CisK
K3ZvaWQgV2ViS2l0QXVkaW9Db250ZXh0OjpkZWxldGVNYXJrZWROb2RlcygpCit7CisgICAgQVNT
RVJUKGlzTWFpblRocmVhZCgpKTsKKworICAgIC8vIFByb3RlY3QgdGhpcyBvYmplY3QgZnJvbSBi
ZWluZyBkZWxldGVkIGJlZm9yZSB3ZSByZWxlYXNlIHRoZSBtdXRleCBsb2NrZWQgYnkgQXV0b0xv
Y2tlci4KKyAgICBSZWY8V2ViS2l0QXVkaW9Db250ZXh0PiBwcm90ZWN0ZWRUaGlzKCp0aGlzKTsK
KyAgICB7CisgICAgICAgIEF1dG9Mb2NrZXIgbG9ja2VyKCp0aGlzKTsKKworICAgICAgICB3aGls
ZSAobV9ub2Rlc1RvRGVsZXRlLnNpemUoKSkgeworICAgICAgICAgICAgQXVkaW9Ob2RlKiBub2Rl
ID0gbV9ub2Rlc1RvRGVsZXRlLnRha2VMYXN0KCk7CisKKyAgICAgICAgICAgIC8vIEJlZm9yZSBk
ZWxldGluZyB0aGUgbm9kZSwgY2xlYXIgb3V0IGFueSBBdWRpb05vZGVJbnB1dHMgZnJvbSBtX2Rp
cnR5U3VtbWluZ0p1bmN0aW9ucy4KKyAgICAgICAgICAgIHVuc2lnbmVkIG51bWJlck9mSW5wdXRz
ID0gbm9kZS0+bnVtYmVyT2ZJbnB1dHMoKTsKKyAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9
IDA7IGkgPCBudW1iZXJPZklucHV0czsgKytpKQorICAgICAgICAgICAgICAgIG1fZGlydHlTdW1t
aW5nSnVuY3Rpb25zLnJlbW92ZShub2RlLT5pbnB1dChpKSk7CisKKyAgICAgICAgICAgIC8vIEJl
Zm9yZSBkZWxldGluZyB0aGUgbm9kZSwgY2xlYXIgb3V0IGFueSBBdWRpb05vZGVPdXRwdXRzIGZy
b20gbV9kaXJ0eUF1ZGlvTm9kZU91dHB1dHMuCisgICAgICAgICAgICB1bnNpZ25lZCBudW1iZXJP
Zk91dHB1dHMgPSBub2RlLT5udW1iZXJPZk91dHB1dHMoKTsKKyAgICAgICAgICAgIGZvciAodW5z
aWduZWQgaSA9IDA7IGkgPCBudW1iZXJPZk91dHB1dHM7ICsraSkKKyAgICAgICAgICAgICAgICBt
X2RpcnR5QXVkaW9Ob2RlT3V0cHV0cy5yZW1vdmUobm9kZS0+b3V0cHV0KGkpKTsKKworICAgICAg
ICAgICAgLy8gRmluYWxseSwgZGVsZXRlIGl0LgorICAgICAgICAgICAgZGVsZXRlIG5vZGU7Cisg
ICAgICAgIH0KKyAgICAgICAgbV9pc0RlbGV0aW9uU2NoZWR1bGVkID0gZmFsc2U7CisgICAgfQor
fQorCit2b2lkIFdlYktpdEF1ZGlvQ29udGV4dDo6bWFya1N1bW1pbmdKdW5jdGlvbkRpcnR5KEF1
ZGlvU3VtbWluZ0p1bmN0aW9uKiBzdW1taW5nSnVuY3Rpb24pCit7CisgICAgQVNTRVJUKGlzR3Jh
cGhPd25lcigpKTsKKyAgICBtX2RpcnR5U3VtbWluZ0p1bmN0aW9ucy5hZGQoc3VtbWluZ0p1bmN0
aW9uKTsKK30KKwordm9pZCBXZWJLaXRBdWRpb0NvbnRleHQ6OnJlbW92ZU1hcmtlZFN1bW1pbmdK
dW5jdGlvbihBdWRpb1N1bW1pbmdKdW5jdGlvbiogc3VtbWluZ0p1bmN0aW9uKQoreworICAgIEFT
U0VSVChpc01haW5UaHJlYWQoKSk7CisgICAgQXV0b0xvY2tlciBsb2NrZXIoKnRoaXMpOworICAg
IG1fZGlydHlTdW1taW5nSnVuY3Rpb25zLnJlbW92ZShzdW1taW5nSnVuY3Rpb24pOworfQorCitF
dmVudFRhcmdldEludGVyZmFjZSBXZWJLaXRBdWRpb0NvbnRleHQ6OmV2ZW50VGFyZ2V0SW50ZXJm
YWNlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gV2ViS2l0QXVkaW9Db250ZXh0RXZlbnRUYXJnZXRJ
bnRlcmZhY2VUeXBlOworfQorCit2b2lkIFdlYktpdEF1ZGlvQ29udGV4dDo6bWFya0F1ZGlvTm9k
ZU91dHB1dERpcnR5KEF1ZGlvTm9kZU91dHB1dCogb3V0cHV0KQoreworICAgIEFTU0VSVChpc0dy
YXBoT3duZXIoKSk7CisgICAgbV9kaXJ0eUF1ZGlvTm9kZU91dHB1dHMuYWRkKG91dHB1dCk7Cit9
CisKK3ZvaWQgV2ViS2l0QXVkaW9Db250ZXh0OjpoYW5kbGVEaXJ0eUF1ZGlvU3VtbWluZ0p1bmN0
aW9ucygpCit7CisgICAgQVNTRVJUKGlzR3JhcGhPd25lcigpKTsKKworICAgIGZvciAoYXV0byYg
anVuY3Rpb24gOiBtX2RpcnR5U3VtbWluZ0p1bmN0aW9ucykKKyAgICAgICAganVuY3Rpb24tPnVw
ZGF0ZVJlbmRlcmluZ1N0YXRlKCk7CisKKyAgICBtX2RpcnR5U3VtbWluZ0p1bmN0aW9ucy5jbGVh
cigpOworfQorCit2b2lkIFdlYktpdEF1ZGlvQ29udGV4dDo6aGFuZGxlRGlydHlBdWRpb05vZGVP
dXRwdXRzKCkKK3sKKyAgICBBU1NFUlQoaXNHcmFwaE93bmVyKCkpOworCisgICAgZm9yIChhdXRv
JiBvdXRwdXQgOiBtX2RpcnR5QXVkaW9Ob2RlT3V0cHV0cykKKyAgICAgICAgb3V0cHV0LT51cGRh
dGVSZW5kZXJpbmdTdGF0ZSgpOworCisgICAgbV9kaXJ0eUF1ZGlvTm9kZU91dHB1dHMuY2xlYXIo
KTsKK30KKwordm9pZCBXZWJLaXRBdWRpb0NvbnRleHQ6OmFkZEF1dG9tYXRpY1B1bGxOb2RlKEF1
ZGlvTm9kZSYgbm9kZSkKK3sKKyAgICBBU1NFUlQoaXNHcmFwaE93bmVyKCkpOworCisgICAgaWYg
KG1fYXV0b21hdGljUHVsbE5vZGVzLmFkZCgmbm9kZSkuaXNOZXdFbnRyeSkKKyAgICAgICAgbV9h
dXRvbWF0aWNQdWxsTm9kZXNOZWVkVXBkYXRpbmcgPSB0cnVlOworfQorCit2b2lkIFdlYktpdEF1
ZGlvQ29udGV4dDo6cmVtb3ZlQXV0b21hdGljUHVsbE5vZGUoQXVkaW9Ob2RlJiBub2RlKQorewor
ICAgIEFTU0VSVChpc0dyYXBoT3duZXIoKSk7CisKKyAgICBpZiAobV9hdXRvbWF0aWNQdWxsTm9k
ZXMucmVtb3ZlKCZub2RlKSkKKyAgICAgICAgbV9hdXRvbWF0aWNQdWxsTm9kZXNOZWVkVXBkYXRp
bmcgPSB0cnVlOworfQorCit2b2lkIFdlYktpdEF1ZGlvQ29udGV4dDo6dXBkYXRlQXV0b21hdGlj
UHVsbE5vZGVzKCkKK3sKKyAgICBBU1NFUlQoaXNHcmFwaE93bmVyKCkpOworCisgICAgaWYgKG1f
YXV0b21hdGljUHVsbE5vZGVzTmVlZFVwZGF0aW5nKSB7CisgICAgICAgIC8vIENvcHkgZnJvbSBt
X2F1dG9tYXRpY1B1bGxOb2RlcyB0byBtX3JlbmRlcmluZ0F1dG9tYXRpY1B1bGxOb2Rlcy4KKyAg
ICAgICAgbV9yZW5kZXJpbmdBdXRvbWF0aWNQdWxsTm9kZXMucmVzaXplKG1fYXV0b21hdGljUHVs
bE5vZGVzLnNpemUoKSk7CisKKyAgICAgICAgdW5zaWduZWQgaSA9IDA7CisgICAgICAgIGZvciAo
YXV0byYgb3V0cHV0IDogbV9hdXRvbWF0aWNQdWxsTm9kZXMpCisgICAgICAgICAgICBtX3JlbmRl
cmluZ0F1dG9tYXRpY1B1bGxOb2Rlc1tpKytdID0gb3V0cHV0OworCisgICAgICAgIG1fYXV0b21h
dGljUHVsbE5vZGVzTmVlZFVwZGF0aW5nID0gZmFsc2U7CisgICAgfQorfQorCit2b2lkIFdlYktp
dEF1ZGlvQ29udGV4dDo6cHJvY2Vzc0F1dG9tYXRpY1B1bGxOb2RlcyhzaXplX3QgZnJhbWVzVG9Q
cm9jZXNzKQoreworICAgIEFTU0VSVChpc0F1ZGlvVGhyZWFkKCkpOworCisgICAgZm9yIChhdXRv
JiBub2RlIDogbV9yZW5kZXJpbmdBdXRvbWF0aWNQdWxsTm9kZXMpCisgICAgICAgIG5vZGUtPnBy
b2Nlc3NJZk5lY2Vzc2FyeShmcmFtZXNUb1Byb2Nlc3MpOworfQorCit2b2lkIFdlYktpdEF1ZGlv
Q29udGV4dDo6bm9kZVdpbGxCZWdpblBsYXliYWNrKCkKK3sKKyAgICAvLyBDYWxsZWQgYnkgc2No
ZWR1bGVkIEF1ZGlvTm9kZXMgd2hlbiBjbGllbnRzIHNjaGVkdWxlIHRoZWlyIHN0YXJ0IHRpbWVz
LgorICAgIC8vIFByaW9yIHRvIHRoZSBpbnRyb2R1Y3Rpb24gb2Ygc3VzcGVuZCgpLCByZXN1bWUo
KSwgYW5kIHN0b3AoKSwgc3RhcnRpbmcKKyAgICAvLyBhIHNjaGVkdWxlZCBBdWRpb05vZGUgd291
bGQgcmVtb3ZlIHRoZSB1c2VyLWdlc3R1cmUgcmVzdHJpY3Rpb24sIGlmIHByZXNlbnQsCisgICAg
Ly8gYW5kIHdvdWxkIHRodXMgdW5tdXRlIHRoZSBjb250ZXh0LiBOb3cgdGhhdCBBdWRpb0NvbnRl
eHQgc3RheXMgaW4gdGhlCisgICAgLy8gInN1c3BlbmRlZCIgc3RhdGUgaWYgYSB1c2VyLWdlc3R1
cmUgcmVzdHJpY3Rpb24gaXMgcHJlc2VudCwgc3RhcnRpbmcgYQorICAgIC8vIHNjaGVkdWxlIEF1
ZGlvTm9kZSBzaG91bGQgc2V0IHRoZSBzdGF0ZSB0byAicnVubmluZyIsIGJ1dCBvbmx5IGlmIHRo
ZQorICAgIC8vIHVzZXItZ2VzdHVyZSByZXN0cmljdGlvbiBpcyBzZXQuCisgICAgaWYgKHVzZXJH
ZXN0dXJlUmVxdWlyZWRGb3JBdWRpb1N0YXJ0KCkpCisgICAgICAgIHN0YXJ0UmVuZGVyaW5nKCk7
Cit9CisKK3N0YXRpYyBib29sIHNob3VsZERvY3VtZW50QWxsb3dXZWJBdWRpb1RvQXV0b1BsYXko
Y29uc3QgRG9jdW1lbnQmIGRvY3VtZW50KQoreworICAgIGlmIChkb2N1bWVudC5wcm9jZXNzaW5n
VXNlckdlc3R1cmVGb3JNZWRpYSgpIHx8IGRvY3VtZW50LmlzQ2FwdHVyaW5nKCkpCisgICAgICAg
IHJldHVybiB0cnVlOworICAgIHJldHVybiBkb2N1bWVudC5xdWlya3MoKS5zaG91bGRBdXRvcGxh
eVdlYkF1ZGlvRm9yQXJiaXRyYXJ5VXNlckdlc3R1cmUoKSAmJiBkb2N1bWVudC50b3BEb2N1bWVu
dCgpLmhhc0hhZFVzZXJJbnRlcmFjdGlvbigpOworfQorCitib29sIFdlYktpdEF1ZGlvQ29udGV4
dDo6d2lsbEJlZ2luUGxheWJhY2soKQoreworICAgIGF1dG8qIGRvY3VtZW50ID0gdGhpcy0+ZG9j
dW1lbnQoKTsKKyAgICBpZiAoIWRvY3VtZW50KQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAg
ICBpZiAodXNlckdlc3R1cmVSZXF1aXJlZEZvckF1ZGlvU3RhcnQoKSkgeworICAgICAgICBpZiAo
IXNob3VsZERvY3VtZW50QWxsb3dXZWJBdWRpb1RvQXV0b1BsYXkoKmRvY3VtZW50KSkgeworICAg
ICAgICAgICAgQUxXQVlTX0xPRyhMT0dJREVOVElGSUVSLCAicmV0dXJuaW5nIGZhbHNlLCBub3Qg
cHJvY2Vzc2luZyB1c2VyIGdlc3R1cmUgb3IgY2FwdHVyaW5nIik7CisgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CisgICAgICAgIH0KKyAgICAgICAgcmVtb3ZlQmVoYXZpb3JSZXN0cmljdGlvbihX
ZWJLaXRBdWRpb0NvbnRleHQ6OlJlcXVpcmVVc2VyR2VzdHVyZUZvckF1ZGlvU3RhcnRSZXN0cmlj
dGlvbik7CisgICAgfQorCisgICAgaWYgKHBhZ2VDb25zZW50UmVxdWlyZWRGb3JBdWRpb1N0YXJ0
KCkpIHsKKyAgICAgICAgYXV0byogcGFnZSA9IGRvY3VtZW50LT5wYWdlKCk7CisgICAgICAgIGlm
IChwYWdlICYmICFwYWdlLT5jYW5TdGFydE1lZGlhKCkpIHsKKyAgICAgICAgICAgIGRvY3VtZW50
LT5hZGRNZWRpYUNhblN0YXJ0TGlzdGVuZXIoKnRoaXMpOworICAgICAgICAgICAgQUxXQVlTX0xP
RyhMT0dJREVOVElGSUVSLCAicmV0dXJuaW5nIGZhbHNlLCBwYWdlIGRvZXNuJ3QgYWxsb3cgbWVk
aWEgdG8gc3RhcnQiKTsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorICAg
ICAgICByZW1vdmVCZWhhdmlvclJlc3RyaWN0aW9uKFdlYktpdEF1ZGlvQ29udGV4dDo6UmVxdWly
ZVBhZ2VDb25zZW50Rm9yQXVkaW9TdGFydFJlc3RyaWN0aW9uKTsKKyAgICB9CisKKyAgICBhdXRv
IHdpbGxCZWdpbiA9IG1fbWVkaWFTZXNzaW9uLT5jbGllbnRXaWxsQmVnaW5QbGF5YmFjaygpOwor
ICAgIEFMV0FZU19MT0coTE9HSURFTlRJRklFUiwgInJldHVybmluZyAiLCB3aWxsQmVnaW4pOwor
CisgICAgcmV0dXJuIHdpbGxCZWdpbjsKK30KKworYm9vbCBXZWJLaXRBdWRpb0NvbnRleHQ6Ondp
bGxQYXVzZVBsYXliYWNrKCkKK3sKKyAgICBhdXRvKiBkb2N1bWVudCA9IHRoaXMtPmRvY3VtZW50
KCk7CisgICAgaWYgKCFkb2N1bWVudCkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgaWYg
KHVzZXJHZXN0dXJlUmVxdWlyZWRGb3JBdWRpb1N0YXJ0KCkpIHsKKyAgICAgICAgaWYgKCFkb2N1
bWVudC0+cHJvY2Vzc2luZ1VzZXJHZXN0dXJlRm9yTWVkaWEoKSkKKyAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKKyAgICAgICAgcmVtb3ZlQmVoYXZpb3JSZXN0cmljdGlvbihXZWJLaXRBdWRpb0Nv
bnRleHQ6OlJlcXVpcmVVc2VyR2VzdHVyZUZvckF1ZGlvU3RhcnRSZXN0cmljdGlvbik7CisgICAg
fQorCisgICAgaWYgKHBhZ2VDb25zZW50UmVxdWlyZWRGb3JBdWRpb1N0YXJ0KCkpIHsKKyAgICAg
ICAgYXV0byogcGFnZSA9IGRvY3VtZW50LT5wYWdlKCk7CisgICAgICAgIGlmIChwYWdlICYmICFw
YWdlLT5jYW5TdGFydE1lZGlhKCkpIHsKKyAgICAgICAgICAgIGRvY3VtZW50LT5hZGRNZWRpYUNh
blN0YXJ0TGlzdGVuZXIoKnRoaXMpOworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAg
ICB9CisgICAgICAgIHJlbW92ZUJlaGF2aW9yUmVzdHJpY3Rpb24oV2ViS2l0QXVkaW9Db250ZXh0
OjpSZXF1aXJlUGFnZUNvbnNlbnRGb3JBdWRpb1N0YXJ0UmVzdHJpY3Rpb24pOworICAgIH0KKwor
ICAgIHJldHVybiBtX21lZGlhU2Vzc2lvbi0+Y2xpZW50V2lsbFBhdXNlUGxheWJhY2soKTsKK30K
Kwordm9pZCBXZWJLaXRBdWRpb0NvbnRleHQ6OnN0YXJ0UmVuZGVyaW5nKCkKK3sKKyAgICBBTFdB
WVNfTE9HKExPR0lERU5USUZJRVIpOworICAgIGlmIChtX2lzU3RvcFNjaGVkdWxlZCB8fCAhd2ls
bEJlZ2luUGxheWJhY2soKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgbWFrZVBlbmRpbmdBY3Rp
dml0eSgpOworCisgICAgZGVzdGluYXRpb24oKS0+c3RhcnRSZW5kZXJpbmcoKTsKKyAgICBzZXRT
dGF0ZShTdGF0ZTo6UnVubmluZyk7Cit9CisKK3ZvaWQgV2ViS2l0QXVkaW9Db250ZXh0OjptZWRp
YUNhblN0YXJ0KERvY3VtZW50JiBkb2N1bWVudCkKK3sKKyAgICBBU1NFUlRfVU5VU0VEKGRvY3Vt
ZW50LCAmZG9jdW1lbnQgPT0gdGhpcy0+ZG9jdW1lbnQoKSk7CisgICAgcmVtb3ZlQmVoYXZpb3JS
ZXN0cmljdGlvbihXZWJLaXRBdWRpb0NvbnRleHQ6OlJlcXVpcmVQYWdlQ29uc2VudEZvckF1ZGlv
U3RhcnRSZXN0cmljdGlvbik7CisgICAgbWF5UmVzdW1lUGxheWJhY2sodHJ1ZSk7Cit9CisKK01l
ZGlhUHJvZHVjZXI6Ok1lZGlhU3RhdGVGbGFncyBXZWJLaXRBdWRpb0NvbnRleHQ6Om1lZGlhU3Rh
dGUoKSBjb25zdAoreworICAgIGlmICghbV9pc1N0b3BTY2hlZHVsZWQgJiYgbV9kZXN0aW5hdGlv
bk5vZGUgJiYgbV9kZXN0aW5hdGlvbk5vZGUtPmlzUGxheWluZ0F1ZGlvKCkpCisgICAgICAgIHJl
dHVybiBNZWRpYVByb2R1Y2VyOjpJc1BsYXlpbmdBdWRpbzsKKworICAgIHJldHVybiBNZWRpYVBy
b2R1Y2VyOjpJc05vdFBsYXlpbmc7Cit9CisKK3ZvaWQgV2ViS2l0QXVkaW9Db250ZXh0OjpwYWdl
TXV0ZWRTdGF0ZURpZENoYW5nZSgpCit7CisgICAgaWYgKG1fZGVzdGluYXRpb25Ob2RlICYmIGRv
Y3VtZW50KCkgJiYgZG9jdW1lbnQoKS0+cGFnZSgpKQorICAgICAgICBtX2Rlc3RpbmF0aW9uTm9k
ZS0+c2V0TXV0ZWQoZG9jdW1lbnQoKS0+cGFnZSgpLT5pc0F1ZGlvTXV0ZWQoKSk7Cit9CisKK3Zv
aWQgV2ViS2l0QXVkaW9Db250ZXh0Ojppc1BsYXlpbmdBdWRpb0RpZENoYW5nZSgpCit7CisgICAg
Ly8gTWFrZSBzdXJlIHRvIGNhbGwgRG9jdW1lbnQ6OnVwZGF0ZUlzUGxheWluZ01lZGlhKCkgb24g
dGhlIG1haW4gdGhyZWFkLCBzaW5jZQorICAgIC8vIHdlIGNvdWxkIGJlIG9uIHRoZSBhdWRpbyBJ
L08gdGhyZWFkIGhlcmUgYW5kIHRoZSBjYWxsIGludG8gV2ViQ29yZSBjb3VsZCBibG9jay4KKyAg
ICBjYWxsT25NYWluVGhyZWFkKFtwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyldIHsKKyAg
ICAgICAgaWYgKHByb3RlY3RlZFRoaXMtPmRvY3VtZW50KCkpCisgICAgICAgICAgICBwcm90ZWN0
ZWRUaGlzLT5kb2N1bWVudCgpLT51cGRhdGVJc1BsYXlpbmdNZWRpYSgpOworICAgIH0pOworfQor
Cit2b2lkIFdlYktpdEF1ZGlvQ29udGV4dDo6ZmluaXNoZWRSZW5kZXJpbmcoYm9vbCBkaWRSZW5k
ZXJpbmcpCit7CisgICAgQVNTRVJUKGlzT2ZmbGluZUNvbnRleHQoKSk7CisgICAgQVNTRVJUKGlz
TWFpblRocmVhZCgpKTsKKyAgICBpZiAoIWlzTWFpblRocmVhZCgpKQorICAgICAgICByZXR1cm47
CisKKyAgICBhdXRvIGNsZWFyUGVuZGluZ0FjdGl2aXR5SWZFeGl0RWFybHkgPSBXVEY6Om1ha2VT
Y29wZUV4aXQoW3RoaXNdIHsKKyAgICAgICAgY2xlYXJQZW5kaW5nQWN0aXZpdHkoKTsKKyAgICB9
KTsKKworCisgICAgQUxXQVlTX0xPRyhMT0dJREVOVElGSUVSKTsKKworICAgIGlmICghZGlkUmVu
ZGVyaW5nKQorICAgICAgICByZXR1cm47CisKKyAgICBBdWRpb0J1ZmZlciogcmVuZGVyZWRCdWZm
ZXIgPSBtX3JlbmRlclRhcmdldC5nZXQoKTsKKyAgICBzZXRTdGF0ZShTdGF0ZTo6Q2xvc2VkKTsK
KworICAgIEFTU0VSVChyZW5kZXJlZEJ1ZmZlcik7CisgICAgaWYgKCFyZW5kZXJlZEJ1ZmZlcikK
KyAgICAgICAgcmV0dXJuOworCisgICAgLy8gQXZvaWQgZmlyaW5nIHRoZSBldmVudCBpZiB0aGUg
ZG9jdW1lbnQgaGFzIGFscmVhZHkgZ29uZSBhd2F5LgorICAgIGlmIChtX2lzU3RvcFNjaGVkdWxl
ZCkKKyAgICAgICAgcmV0dXJuOworCisgICAgY2xlYXJQZW5kaW5nQWN0aXZpdHlJZkV4aXRFYXJs
eS5yZWxlYXNlKCk7CisgICAgbV9ldmVudFF1ZXVlLT5lbnF1ZXVlRXZlbnQoT2ZmbGluZUF1ZGlv
Q29tcGxldGlvbkV2ZW50OjpjcmVhdGUocmVuZGVyZWRCdWZmZXIpKTsKK30KKwordm9pZCBXZWJL
aXRBdWRpb0NvbnRleHQ6OmRpc3BhdGNoRXZlbnQoRXZlbnQmIGV2ZW50KQoreworICAgIEV2ZW50
VGFyZ2V0OjpkaXNwYXRjaEV2ZW50KGV2ZW50KTsKKyAgICBpZiAoZXZlbnQuZXZlbnRJbnRlcmZh
Y2UoKSA9PSBPZmZsaW5lQXVkaW9Db21wbGV0aW9uRXZlbnRJbnRlcmZhY2VUeXBlKQorICAgICAg
ICBjbGVhclBlbmRpbmdBY3Rpdml0eSgpOworfQorCit2b2lkIFdlYktpdEF1ZGlvQ29udGV4dDo6
aW5jcmVtZW50QWN0aXZlU291cmNlQ291bnQoKQoreworICAgICsrbV9hY3RpdmVTb3VyY2VDb3Vu
dDsKK30KKwordm9pZCBXZWJLaXRBdWRpb0NvbnRleHQ6OmRlY3JlbWVudEFjdGl2ZVNvdXJjZUNv
dW50KCkKK3sKKyAgICAtLW1fYWN0aXZlU291cmNlQ291bnQ7Cit9CisKK3ZvaWQgV2ViS2l0QXVk
aW9Db250ZXh0OjpzdXNwZW5kUmVuZGVyaW5nKERPTVByb21pc2VEZWZlcnJlZDx2b2lkPiYmIHBy
b21pc2UpCit7CisgICAgaWYgKGlzT2ZmbGluZUNvbnRleHQoKSB8fCBtX2lzU3RvcFNjaGVkdWxl
ZCkgeworICAgICAgICBwcm9taXNlLnJlamVjdChJbnZhbGlkU3RhdGVFcnJvcik7CisgICAgICAg
IHJldHVybjsKKyAgICB9CisKKyAgICBpZiAobV9zdGF0ZSA9PSBTdGF0ZTo6U3VzcGVuZGVkKSB7
CisgICAgICAgIHByb21pc2UucmVzb2x2ZSgpOworICAgICAgICByZXR1cm47CisgICAgfQorCisg
ICAgaWYgKG1fc3RhdGUgPT0gU3RhdGU6OkNsb3NlZCB8fCBtX3N0YXRlID09IFN0YXRlOjpJbnRl
cnJ1cHRlZCB8fCAhbV9kZXN0aW5hdGlvbk5vZGUpIHsKKyAgICAgICAgcHJvbWlzZS5yZWplY3Qo
KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGFkZFJlYWN0aW9uKFN0YXRlOjpTdXNw
ZW5kZWQsIFdURk1vdmUocHJvbWlzZSkpOworCisgICAgaWYgKCF3aWxsUGF1c2VQbGF5YmFjaygp
KQorICAgICAgICByZXR1cm47CisKKyAgICBsYXp5SW5pdGlhbGl6ZSgpOworCisgICAgbV9kZXN0
aW5hdGlvbk5vZGUtPnN1c3BlbmQoW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlz
KV0geworICAgICAgICBzZXRTdGF0ZShTdGF0ZTo6U3VzcGVuZGVkKTsKKyAgICB9KTsKK30KKwor
dm9pZCBXZWJLaXRBdWRpb0NvbnRleHQ6OnJlc3VtZVJlbmRlcmluZyhET01Qcm9taXNlRGVmZXJy
ZWQ8dm9pZD4mJiBwcm9taXNlKQoreworICAgIGlmIChpc09mZmxpbmVDb250ZXh0KCkgfHwgbV9p
c1N0b3BTY2hlZHVsZWQpIHsKKyAgICAgICAgcHJvbWlzZS5yZWplY3QoSW52YWxpZFN0YXRlRXJy
b3IpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgaWYgKG1fc3RhdGUgPT0gU3RhdGU6
OlJ1bm5pbmcpIHsKKyAgICAgICAgcHJvbWlzZS5yZXNvbHZlKCk7CisgICAgICAgIHJldHVybjsK
KyAgICB9CisKKyAgICBpZiAobV9zdGF0ZSA9PSBTdGF0ZTo6Q2xvc2VkIHx8ICFtX2Rlc3RpbmF0
aW9uTm9kZSkgeworICAgICAgICBwcm9taXNlLnJlamVjdCgpOworICAgICAgICByZXR1cm47Cisg
ICAgfQorCisgICAgYWRkUmVhY3Rpb24oU3RhdGU6OlJ1bm5pbmcsIFdURk1vdmUocHJvbWlzZSkp
OworCisgICAgaWYgKCF3aWxsQmVnaW5QbGF5YmFjaygpKQorICAgICAgICByZXR1cm47CisKKyAg
ICBsYXp5SW5pdGlhbGl6ZSgpOworCisgICAgbV9kZXN0aW5hdGlvbk5vZGUtPnJlc3VtZShbdGhp
cywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpXSB7CisgICAgICAgIHNldFN0YXRlKFN0
YXRlOjpSdW5uaW5nKTsKKyAgICB9KTsKK30KKwordm9pZCBXZWJLaXRBdWRpb0NvbnRleHQ6OmNs
b3NlKERPTVByb21pc2VEZWZlcnJlZDx2b2lkPiYmIHByb21pc2UpCit7CisgICAgaWYgKGlzT2Zm
bGluZUNvbnRleHQoKSB8fCBtX2lzU3RvcFNjaGVkdWxlZCkgeworICAgICAgICBwcm9taXNlLnJl
amVjdChJbnZhbGlkU3RhdGVFcnJvcik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBp
ZiAobV9zdGF0ZSA9PSBTdGF0ZTo6Q2xvc2VkIHx8ICFtX2Rlc3RpbmF0aW9uTm9kZSkgeworICAg
ICAgICBwcm9taXNlLnJlc29sdmUoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGFk
ZFJlYWN0aW9uKFN0YXRlOjpDbG9zZWQsIFdURk1vdmUocHJvbWlzZSkpOworCisgICAgbGF6eUlu
aXRpYWxpemUoKTsKKworICAgIG1fZGVzdGluYXRpb25Ob2RlLT5jbG9zZShbdGhpcywgcHJvdGVj
dGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpXSB7CisgICAgICAgIHNldFN0YXRlKFN0YXRlOjpDbG9z
ZWQpOworICAgICAgICB1bmluaXRpYWxpemUoKTsKKyAgICB9KTsKK30KKworCit2b2lkIFdlYktp
dEF1ZGlvQ29udGV4dDo6c3VzcGVuZFBsYXliYWNrKCkKK3sKKyAgICBpZiAoIW1fZGVzdGluYXRp
b25Ob2RlIHx8IG1fc3RhdGUgPT0gU3RhdGU6OkNsb3NlZCkKKyAgICAgICAgcmV0dXJuOworCisg
ICAgaWYgKG1fc3RhdGUgPT0gU3RhdGU6OlN1c3BlbmRlZCkgeworICAgICAgICBpZiAobV9tZWRp
YVNlc3Npb24tPnN0YXRlKCkgPT0gUGxhdGZvcm1NZWRpYVNlc3Npb246OkludGVycnVwdGVkKQor
ICAgICAgICAgICAgc2V0U3RhdGUoU3RhdGU6OkludGVycnVwdGVkKTsKKyAgICAgICAgcmV0dXJu
OworICAgIH0KKworICAgIGxhenlJbml0aWFsaXplKCk7CisKKyAgICBtX2Rlc3RpbmF0aW9uTm9k
ZS0+c3VzcGVuZChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpXSB7CisgICAg
ICAgIGJvb2wgaW50ZXJydXB0ZWQgPSBtX21lZGlhU2Vzc2lvbi0+c3RhdGUoKSA9PSBQbGF0Zm9y
bU1lZGlhU2Vzc2lvbjo6SW50ZXJydXB0ZWQ7CisgICAgICAgIHNldFN0YXRlKGludGVycnVwdGVk
ID8gU3RhdGU6OkludGVycnVwdGVkIDogU3RhdGU6OlN1c3BlbmRlZCk7CisgICAgfSk7Cit9CisK
K3ZvaWQgV2ViS2l0QXVkaW9Db250ZXh0OjptYXlSZXN1bWVQbGF5YmFjayhib29sIHNob3VsZFJl
c3VtZSkKK3sKKyAgICBpZiAoIW1fZGVzdGluYXRpb25Ob2RlIHx8IG1fc3RhdGUgPT0gU3RhdGU6
OkNsb3NlZCB8fCBtX3N0YXRlID09IFN0YXRlOjpSdW5uaW5nKQorICAgICAgICByZXR1cm47CisK
KyAgICBpZiAoIXNob3VsZFJlc3VtZSkgeworICAgICAgICBzZXRTdGF0ZShTdGF0ZTo6U3VzcGVu
ZGVkKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlmICghd2lsbEJlZ2luUGxheWJh
Y2soKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgbGF6eUluaXRpYWxpemUoKTsKKworICAgIG1f
ZGVzdGluYXRpb25Ob2RlLT5yZXN1bWUoW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0
aGlzKV0geworICAgICAgICBzZXRTdGF0ZShTdGF0ZTo6UnVubmluZyk7CisgICAgfSk7Cit9CisK
K3ZvaWQgV2ViS2l0QXVkaW9Db250ZXh0Ojpwb3N0VGFzayhXVEY6OkZ1bmN0aW9uPHZvaWQoKT4m
JiB0YXNrKQoreworICAgIGlmIChtX2lzU3RvcFNjaGVkdWxlZCkKKyAgICAgICAgcmV0dXJuOwor
CisgICAgbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0LT5wb3N0VGFzayhXVEZNb3ZlKHRhc2spKTsK
K30KKworY29uc3QgU2VjdXJpdHlPcmlnaW4qIFdlYktpdEF1ZGlvQ29udGV4dDo6b3JpZ2luKCkg
Y29uc3QKK3sKKyAgICByZXR1cm4gbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0ID8gbV9zY3JpcHRF
eGVjdXRpb25Db250ZXh0LT5zZWN1cml0eU9yaWdpbigpIDogbnVsbHB0cjsKK30KKwordm9pZCBX
ZWJLaXRBdWRpb0NvbnRleHQ6OmFkZENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VTb3VyY2Ugc291cmNl
LCBNZXNzYWdlTGV2ZWwgbGV2ZWwsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKK3sKKyAgICBpZiAo
bV9zY3JpcHRFeGVjdXRpb25Db250ZXh0KQorICAgICAgICBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQtPmFkZENvbnNvbGVNZXNzYWdlKHNvdXJjZSwgbGV2ZWwsIG1lc3NhZ2UpOworfQorCit2b2lk
IFdlYktpdEF1ZGlvQ29udGV4dDo6Y2xlYXJQZW5kaW5nQWN0aXZpdHkoKQoreworICAgIGlmICgh
bV9wZW5kaW5nQWN0aXZpdHkpCisgICAgICAgIHJldHVybjsKKyAgICBtX3BlbmRpbmdBY3Rpdml0
eSA9IG51bGxwdHI7CisgICAgLy8gRklYTUU6IFJlbW92ZSB0aGlzIHNwZWNpZmljIGRlcmVmKCkg
YW5kIHJlZigpIGNhbGwgaW4gbWFrZVBlbmRpbmdBY3Rpdml0eSgpLgorICAgIGRlcmVmKCk7Cit9
CisKK3ZvaWQgV2ViS2l0QXVkaW9Db250ZXh0OjptYWtlUGVuZGluZ0FjdGl2aXR5KCkKK3sKKyAg
ICBpZiAobV9wZW5kaW5nQWN0aXZpdHkpCisgICAgICAgIHJldHVybjsKKyAgICBtX3BlbmRpbmdB
Y3Rpdml0eSA9IEFjdGl2ZURPTU9iamVjdDo6bWFrZVBlbmRpbmdBY3Rpdml0eSgqdGhpcyk7Cisg
ICAgcmVmKCk7Cit9CisKKyNpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKK1dURkxvZ0NoYW5uZWwm
IFdlYktpdEF1ZGlvQ29udGV4dDo6bG9nQ2hhbm5lbCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIExv
Z01lZGlhOworfQorI2VuZGlmCisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8v
IEVOQUJMRShXRUJfQVVESU8pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmF1ZGlvL1dlYktpdEF1ZGlvQ29udGV4dC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJh
dWRpby9XZWJLaXRBdWRpb0NvbnRleHQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40OTA1MjA1MTkyMGJjOGQ2YjM0
NDVjY2I0NTg5Yzg3YWNmNzE1NmE2Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJhdWRpby9XZWJLaXRBdWRpb0NvbnRleHQuaApAQCAtMCwwICsxLDQxNyBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICogQ29weXJpZ2h0IChDKSAyMDE2LTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAq
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04KKyAqIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUwor
ICogU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJBY3RpdmVET01PYmplY3Qu
aCIKKyNpbmNsdWRlICJBc3luY0F1ZGlvRGVjb2Rlci5oIgorI2luY2x1ZGUgIkF1ZGlvQnVzLmgi
CisjaW5jbHVkZSAiQXVkaW9Db250ZXh0LmgiCisjaW5jbHVkZSAiQXVkaW9Db250ZXh0U3RhdGUu
aCIKKyNpbmNsdWRlICJBdWRpb0Rlc3RpbmF0aW9uTm9kZS5oIgorI2luY2x1ZGUgIkV2ZW50VGFy
Z2V0LmgiCisjaW5jbHVkZSAiTWVkaWFDYW5TdGFydExpc3RlbmVyLmgiCisjaW5jbHVkZSAiTWVk
aWFQcm9kdWNlci5oIgorI2luY2x1ZGUgIlBsYXRmb3JtTWVkaWFTZXNzaW9uLmgiCisjaW5jbHVk
ZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgorI2luY2x1ZGUgIlZpc2liaWxpdHlDaGFuZ2VD
bGllbnQuaCIKKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9Db25zb2xlVHlwZXMuaD4KKyNpbmNs
dWRlIDxKYXZhU2NyaXB0Q29yZS9GbG9hdDMyQXJyYXkuaD4KKyNpbmNsdWRlIDxhdG9taWM+Cisj
aW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KKyNpbmNsdWRlIDx3dGYvTG9nZ2VySGVscGVyLmg+Cisj
aW5jbHVkZSA8d3RmL01haW5UaHJlYWQuaD4KKyNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CisjaW5j
bHVkZSA8d3RmL1RocmVhZFNhZmVSZWZDb3VudGVkLmg+CisjaW5jbHVkZSA8d3RmL1RocmVhZGlu
Zy5oPgorI2luY2x1ZGUgPHd0Zi9VbmlxdWVSZWYuaD4KKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+
CisjaW5jbHVkZSA8d3RmL3RleHQvQXRvbVN0cmluZ0hhc2guaD4KKworbmFtZXNwYWNlIFdlYkNv
cmUgeworCitjbGFzcyBBbmFseXNlck5vZGU7CitjbGFzcyBBdWRpb0J1ZmZlcjsKK2NsYXNzIEF1
ZGlvQnVmZmVyQ2FsbGJhY2s7CitjbGFzcyBBdWRpb0J1ZmZlclNvdXJjZU5vZGU7CitjbGFzcyBB
dWRpb0xpc3RlbmVyOworY2xhc3MgQXVkaW9TdW1taW5nSnVuY3Rpb247CitjbGFzcyBCaXF1YWRG
aWx0ZXJOb2RlOworY2xhc3MgQ2hhbm5lbE1lcmdlck5vZGU7CitjbGFzcyBDaGFubmVsU3BsaXR0
ZXJOb2RlOworY2xhc3MgQ29udm9sdmVyTm9kZTsKK2NsYXNzIERlbGF5Tm9kZTsKK2NsYXNzIERv
Y3VtZW50OworY2xhc3MgRHluYW1pY3NDb21wcmVzc29yTm9kZTsKK2NsYXNzIEdhaW5Ob2RlOwor
Y2xhc3MgSFRNTE1lZGlhRWxlbWVudDsKK2NsYXNzIE1haW5UaHJlYWRHZW5lcmljRXZlbnRRdWV1
ZTsKK2NsYXNzIE1lZGlhRWxlbWVudEF1ZGlvU291cmNlTm9kZTsKK2NsYXNzIE1lZGlhU3RyZWFt
OworY2xhc3MgTWVkaWFTdHJlYW1BdWRpb0Rlc3RpbmF0aW9uTm9kZTsKK2NsYXNzIE1lZGlhU3Ry
ZWFtQXVkaW9Tb3VyY2VOb2RlOworY2xhc3MgT3NjaWxsYXRvck5vZGU7CitjbGFzcyBQZXJpb2Rp
Y1dhdmU7CitjbGFzcyBTY3JpcHRQcm9jZXNzb3JOb2RlOworY2xhc3MgU2VjdXJpdHlPcmlnaW47
CitjbGFzcyBXYXZlU2hhcGVyTm9kZTsKK2NsYXNzIFdlYktpdEF1ZGlvUGFubmVyTm9kZTsKKwor
dGVtcGxhdGU8dHlwZW5hbWUgSURMVHlwZT4gY2xhc3MgRE9NUHJvbWlzZURlZmVycmVkOworCisv
LyBBdWRpb0NvbnRleHQgaXMgdGhlIGNvcm5lcnN0b25lIG9mIHRoZSB3ZWIgYXVkaW8gQVBJIGFu
ZCBhbGwgQXVkaW9Ob2RlcyBhcmUgY3JlYXRlZCBmcm9tIGl0LgorLy8gRm9yIHRocmVhZCBzYWZl
dHkgYmV0d2VlbiB0aGUgYXVkaW8gdGhyZWFkIGFuZCB0aGUgbWFpbiB0aHJlYWQsIGl0IGhhcyBh
IHJlbmRlcmluZyBncmFwaCBsb2NraW5nIG1lY2hhbmlzbS4KKworY2xhc3MgV2ViS2l0QXVkaW9D
b250ZXh0CisgICAgOiBwdWJsaWMgQXVkaW9Db250ZXh0QmFzZQorICAgICwgcHJpdmF0ZSBQbGF0
Zm9ybU1lZGlhU2Vzc2lvbkNsaWVudAorICAgICwgcHJpdmF0ZSBWaXNpYmlsaXR5Q2hhbmdlQ2xp
ZW50Cit7CisgICAgV1RGX01BS0VfSVNPX0FMTE9DQVRFRChXZWJLaXRBdWRpb0NvbnRleHQpOwor
cHVibGljOgorICAgIC8vIENyZWF0ZSBhbiBXZWJLaXRBdWRpb0NvbnRleHQgZm9yIHJlbmRlcmlu
ZyB0byB0aGUgYXVkaW8gaGFyZHdhcmUuCisgICAgc3RhdGljIEV4Y2VwdGlvbk9yPFJlZjxXZWJL
aXRBdWRpb0NvbnRleHQ+PiBjcmVhdGUoRG9jdW1lbnQmKTsKKworICAgIHZpcnR1YWwgfldlYktp
dEF1ZGlvQ29udGV4dCgpOworCisgICAgYm9vbCBpc0luaXRpYWxpemVkKCkgY29uc3QgZmluYWw7
CisKKyAgICBib29sIGlzT2ZmbGluZUNvbnRleHQoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2lz
T2ZmbGluZUNvbnRleHQ7IH0KKworICAgIERvY3VtZW50SWRlbnRpZmllciBob3N0aW5nRG9jdW1l
bnRJZGVudGlmaWVyKCkgY29uc3QgZmluYWw7CisKKyAgICBBdWRpb0Rlc3RpbmF0aW9uTm9kZSog
ZGVzdGluYXRpb24oKSB7IHJldHVybiBtX2Rlc3RpbmF0aW9uTm9kZS5nZXQoKTsgfQorICAgIHNp
emVfdCBjdXJyZW50U2FtcGxlRnJhbWUoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2Rlc3RpbmF0
aW9uTm9kZSA/IG1fZGVzdGluYXRpb25Ob2RlLT5jdXJyZW50U2FtcGxlRnJhbWUoKSA6IDA7IH0K
KyAgICBkb3VibGUgY3VycmVudFRpbWUoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2Rlc3RpbmF0
aW9uTm9kZSA/IG1fZGVzdGluYXRpb25Ob2RlLT5jdXJyZW50VGltZSgpIDogMC47IH0KKyAgICBm
bG9hdCBzYW1wbGVSYXRlKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9kZXN0aW5hdGlvbk5vZGUg
PyBtX2Rlc3RpbmF0aW9uTm9kZS0+c2FtcGxlUmF0ZSgpIDogMC5mOyB9CisgICAgdW5zaWduZWQg
bG9uZyBhY3RpdmVTb3VyY2VDb3VudCgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PHVuc2ln
bmVkIGxvbmc+KG1fYWN0aXZlU291cmNlQ291bnQpOyB9CisKKyAgICB2b2lkIGluY3JlbWVudEFj
dGl2ZVNvdXJjZUNvdW50KCkgZmluYWw7CisgICAgdm9pZCBkZWNyZW1lbnRBY3RpdmVTb3VyY2VD
b3VudCgpIGZpbmFsOworCisgICAgRXhjZXB0aW9uT3I8UmVmPEF1ZGlvQnVmZmVyPj4gY3JlYXRl
QnVmZmVyKHVuc2lnbmVkIG51bWJlck9mQ2hhbm5lbHMsIHNpemVfdCBudW1iZXJPZkZyYW1lcywg
ZmxvYXQgc2FtcGxlUmF0ZSk7CisgICAgRXhjZXB0aW9uT3I8UmVmPEF1ZGlvQnVmZmVyPj4gY3Jl
YXRlQnVmZmVyKEFycmF5QnVmZmVyJiwgYm9vbCBtaXhUb01vbm8pOworCisgICAgLy8gQXN5bmNo
cm9ub3VzIGF1ZGlvIGZpbGUgZGF0YSBkZWNvZGluZy4KKyAgICB2b2lkIGRlY29kZUF1ZGlvRGF0
YShSZWY8QXJyYXlCdWZmZXI+JiYsIFJlZlB0cjxBdWRpb0J1ZmZlckNhbGxiYWNrPiYmLCBSZWZQ
dHI8QXVkaW9CdWZmZXJDYWxsYmFjaz4mJik7CisKKyAgICBBdWRpb0xpc3RlbmVyKiBsaXN0ZW5l
cigpIHsgcmV0dXJuIG1fbGlzdGVuZXIuZ2V0KCk7IH0KKworICAgIHZvaWQgc3VzcGVuZFJlbmRl
cmluZyhET01Qcm9taXNlRGVmZXJyZWQ8dm9pZD4mJik7CisgICAgdm9pZCByZXN1bWVSZW5kZXJp
bmcoRE9NUHJvbWlzZURlZmVycmVkPHZvaWQ+JiYpOworICAgIHZvaWQgY2xvc2UoRE9NUHJvbWlz
ZURlZmVycmVkPHZvaWQ+JiYpOworCisgICAgdXNpbmcgU3RhdGUgPSBBdWRpb0NvbnRleHRTdGF0
ZTsKKyAgICBTdGF0ZSBzdGF0ZSgpIGNvbnN0OworICAgIGJvb2wgaXNDbG9zZWQoKSBjb25zdCB7
IHJldHVybiBtX3N0YXRlID09IFN0YXRlOjpDbG9zZWQ7IH0KKworICAgIGJvb2wgd291bGRUYWlu
dE9yaWdpbihjb25zdCBVUkwmKSBjb25zdDsKKworICAgIC8vIFRoZSBBdWRpb05vZGUgY3JlYXRl
IG1ldGhvZHMgYXJlIGNhbGxlZCBvbiB0aGUgbWFpbiB0aHJlYWQgKGZyb20gSmF2YVNjcmlwdCku
CisgICAgRXhjZXB0aW9uT3I8UmVmPEF1ZGlvQnVmZmVyU291cmNlTm9kZT4+IGNyZWF0ZUJ1ZmZl
clNvdXJjZSgpOworI2lmIEVOQUJMRShWSURFTykKKyAgICBFeGNlcHRpb25PcjxSZWY8TWVkaWFF
bGVtZW50QXVkaW9Tb3VyY2VOb2RlPj4gY3JlYXRlTWVkaWFFbGVtZW50U291cmNlKEhUTUxNZWRp
YUVsZW1lbnQmKTsKKyNlbmRpZgorI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCisgICAgRXhjZXB0
aW9uT3I8UmVmPE1lZGlhU3RyZWFtQXVkaW9Tb3VyY2VOb2RlPj4gY3JlYXRlTWVkaWFTdHJlYW1T
b3VyY2UoTWVkaWFTdHJlYW0mKTsKKyAgICBFeGNlcHRpb25PcjxSZWY8TWVkaWFTdHJlYW1BdWRp
b0Rlc3RpbmF0aW9uTm9kZT4+IGNyZWF0ZU1lZGlhU3RyZWFtRGVzdGluYXRpb24oKTsKKyNlbmRp
ZgorICAgIEV4Y2VwdGlvbk9yPFJlZjxHYWluTm9kZT4+IGNyZWF0ZUdhaW4oKTsKKyAgICBFeGNl
cHRpb25PcjxSZWY8QmlxdWFkRmlsdGVyTm9kZT4+IGNyZWF0ZUJpcXVhZEZpbHRlcigpOworICAg
IEV4Y2VwdGlvbk9yPFJlZjxXYXZlU2hhcGVyTm9kZT4+IGNyZWF0ZVdhdmVTaGFwZXIoKTsKKyAg
ICBFeGNlcHRpb25PcjxSZWY8RGVsYXlOb2RlPj4gY3JlYXRlRGVsYXkoZG91YmxlIG1heERlbGF5
VGltZSk7CisgICAgRXhjZXB0aW9uT3I8UmVmPFdlYktpdEF1ZGlvUGFubmVyTm9kZT4+IGNyZWF0
ZVBhbm5lcigpOworICAgIEV4Y2VwdGlvbk9yPFJlZjxDb252b2x2ZXJOb2RlPj4gY3JlYXRlQ29u
dm9sdmVyKCk7CisgICAgRXhjZXB0aW9uT3I8UmVmPER5bmFtaWNzQ29tcHJlc3Nvck5vZGU+PiBj
cmVhdGVEeW5hbWljc0NvbXByZXNzb3IoKTsKKyAgICBFeGNlcHRpb25PcjxSZWY8QW5hbHlzZXJO
b2RlPj4gY3JlYXRlQW5hbHlzZXIoKTsKKyAgICBFeGNlcHRpb25PcjxSZWY8U2NyaXB0UHJvY2Vz
c29yTm9kZT4+IGNyZWF0ZVNjcmlwdFByb2Nlc3NvcihzaXplX3QgYnVmZmVyU2l6ZSwgc2l6ZV90
IG51bWJlck9mSW5wdXRDaGFubmVscywgc2l6ZV90IG51bWJlck9mT3V0cHV0Q2hhbm5lbHMpOwor
ICAgIEV4Y2VwdGlvbk9yPFJlZjxDaGFubmVsU3BsaXR0ZXJOb2RlPj4gY3JlYXRlQ2hhbm5lbFNw
bGl0dGVyKHNpemVfdCBudW1iZXJPZk91dHB1dHMpOworICAgIEV4Y2VwdGlvbk9yPFJlZjxDaGFu
bmVsTWVyZ2VyTm9kZT4+IGNyZWF0ZUNoYW5uZWxNZXJnZXIoc2l6ZV90IG51bWJlck9mSW5wdXRz
KTsKKyAgICBFeGNlcHRpb25PcjxSZWY8T3NjaWxsYXRvck5vZGU+PiBjcmVhdGVPc2NpbGxhdG9y
KCk7CisgICAgRXhjZXB0aW9uT3I8UmVmPFBlcmlvZGljV2F2ZT4+IGNyZWF0ZVBlcmlvZGljV2F2
ZShGbG9hdDMyQXJyYXkmIHJlYWwsIEZsb2F0MzJBcnJheSYgaW1hZ2luYXJ5KTsKKworICAgIC8v
IFdoZW4gYSBzb3VyY2Ugbm9kZSBoYXMgbm8gbW9yZSBwcm9jZXNzaW5nIHRvIGRvIChoYXMgZmlu
aXNoZWQgcGxheWluZyksIHRoZW4gaXQgdGVsbHMgdGhlIGNvbnRleHQgdG8gZGVyZWZlcmVuY2Ug
aXQuCisgICAgdm9pZCBub3RpZnlOb2RlRmluaXNoZWRQcm9jZXNzaW5nKEF1ZGlvTm9kZSopIGZp
bmFsOworCisgICAgLy8gQ2FsbGVkIGF0IHRoZSBzdGFydCBvZiBlYWNoIHJlbmRlciBxdWFudHVt
LgorICAgIHZvaWQgaGFuZGxlUHJlUmVuZGVyVGFza3MoKSBmaW5hbDsKKworICAgIC8vIENhbGxl
ZCBhdCB0aGUgZW5kIG9mIGVhY2ggcmVuZGVyIHF1YW50dW0uCisgICAgdm9pZCBoYW5kbGVQb3N0
UmVuZGVyVGFza3MoKSBmaW5hbDsKKworICAgIC8vIENhbGxlZCBwZXJpb2RpY2FsbHkgYXQgdGhl
IGVuZCBvZiBlYWNoIHJlbmRlciBxdWFudHVtIHRvIGRlcmVmZXJlbmNlIGZpbmlzaGVkIHNvdXJj
ZSBub2Rlcy4KKyAgICB2b2lkIGRlcmVmRmluaXNoZWRTb3VyY2VOb2RlcygpOworCisgICAgLy8g
V2Ugc2NoZWR1bGUgZGVsZXRpb24gb2YgYWxsIG1hcmtlZCBub2RlcyBhdCB0aGUgZW5kIG9mIGVh
Y2ggcmVhbHRpbWUgcmVuZGVyIHF1YW50dW0uCisgICAgdm9pZCBtYXJrRm9yRGVsZXRpb24oQXVk
aW9Ob2RlJikgZmluYWw7CisgICAgdm9pZCBkZWxldGVNYXJrZWROb2RlcygpIGZpbmFsOworCisg
ICAgLy8gQXVkaW9Db250ZXh0IGNhbiBwdWxsIG5vZGUocykgYXQgdGhlIGVuZCBvZiBlYWNoIHJl
bmRlciBxdWFudHVtIGV2ZW4gd2hlbiB0aGV5IGFyZSBub3QgY29ubmVjdGVkIHRvIGFueSBkb3du
c3RyZWFtIG5vZGVzLgorICAgIC8vIFRoZXNlIHR3byBtZXRob2RzIGFyZSBjYWxsZWQgYnkgdGhl
IG5vZGVzIHdobyB3YW50IHRvIGFkZC9yZW1vdmUgdGhlbXNlbHZlcyBpbnRvL2Zyb20gdGhlIGF1
dG9tYXRpYyBwdWxsIGxpc3RzLgorICAgIHZvaWQgYWRkQXV0b21hdGljUHVsbE5vZGUoQXVkaW9O
b2RlJikgZmluYWw7CisgICAgdm9pZCByZW1vdmVBdXRvbWF0aWNQdWxsTm9kZShBdWRpb05vZGUm
KSBmaW5hbDsKKworICAgIC8vIENhbGxlZCByaWdodCBiZWZvcmUgaGFuZGxlUG9zdFJlbmRlclRh
c2tzKCkgdG8gaGFuZGxlIG5vZGVzIHdoaWNoIG5lZWQgdG8gYmUgcHVsbGVkIGV2ZW4gd2hlbiB0
aGV5IGFyZSBub3QgY29ubmVjdGVkIHRvIGFueXRoaW5nLgorICAgIHZvaWQgcHJvY2Vzc0F1dG9t
YXRpY1B1bGxOb2RlcyhzaXplX3QgZnJhbWVzVG9Qcm9jZXNzKSBmaW5hbDsKKworICAgIC8vIEtl
ZXBzIHRyYWNrIG9mIHRoZSBudW1iZXIgb2YgY29ubmVjdGlvbnMgbWFkZS4KKyAgICB2b2lkIGlu
Y3JlbWVudENvbm5lY3Rpb25Db3VudCgpIGZpbmFsCisgICAgeworICAgICAgICBBU1NFUlQoaXNN
YWluVGhyZWFkKCkpOworICAgICAgICBtX2Nvbm5lY3Rpb25Db3VudCsrOworICAgIH0KKworICAg
IHVuc2lnbmVkIGNvbm5lY3Rpb25Db3VudCgpIGNvbnN0IHsgcmV0dXJuIG1fY29ubmVjdGlvbkNv
dW50OyB9CisKKyAgICAvLworICAgIC8vIFRocmVhZCBTYWZldHkgYW5kIEdyYXBoIExvY2tpbmc6
CisgICAgLy8KKworICAgIHZvaWQgc2V0QXVkaW9UaHJlYWQoVGhyZWFkJiB0aHJlYWQpIGZpbmFs
IHsgbV9hdWRpb1RocmVhZCA9ICZ0aHJlYWQ7IH0gLy8gRklYTUU6IGNoZWNrIGVpdGhlciBub3Qg
aW5pdGlhbGl6ZWQgb3IgdGhlIHNhbWUKKyAgICBUaHJlYWQqIGF1ZGlvVGhyZWFkKCkgY29uc3Qg
eyByZXR1cm4gbV9hdWRpb1RocmVhZDsgfQorICAgIGJvb2wgaXNBdWRpb1RocmVhZCgpIGNvbnN0
IGZpbmFsOworCisgICAgLy8gUmV0dXJucyB0cnVlIG9ubHkgYWZ0ZXIgdGhlIGF1ZGlvIHRocmVh
ZCBoYXMgYmVlbiBzdGFydGVkIGFuZCB0aGVuIHNodXRkb3duLgorICAgIGJvb2wgaXNBdWRpb1Ro
cmVhZEZpbmlzaGVkKCkgZmluYWwgeyByZXR1cm4gbV9pc0F1ZGlvVGhyZWFkRmluaXNoZWQ7IH0K
KworICAgIC8vIG11c3RSZWxlYXNlTG9jayBpcyBzZXQgdG8gdHJ1ZSBpZiB3ZSBhY3F1aXJlZCB0
aGUgbG9jayBpbiB0aGlzIG1ldGhvZCBjYWxsIGFuZCBjYWxsZXIgbXVzdCB1bmxvY2soKSwgZmFs
c2UgaWYgaXQgd2FzIHByZXZpb3VzbHkgYWNxdWlyZWQuCisgICAgdm9pZCBsb2NrKGJvb2wmIG11
c3RSZWxlYXNlTG9jaykgZmluYWw7CisKKyAgICAvLyBSZXR1cm5zIHRydWUgaWYgd2Ugb3duIHRo
ZSBsb2NrLgorICAgIC8vIG11c3RSZWxlYXNlTG9jayBpcyBzZXQgdG8gdHJ1ZSBpZiB3ZSBhY3F1
aXJlZCB0aGUgbG9jayBpbiB0aGlzIG1ldGhvZCBjYWxsIGFuZCBjYWxsZXIgbXVzdCB1bmxvY2so
KSwgZmFsc2UgaWYgaXQgd2FzIHByZXZpb3VzbHkgYWNxdWlyZWQuCisgICAgYm9vbCB0cnlMb2Nr
KGJvb2wmIG11c3RSZWxlYXNlTG9jaykgZmluYWw7CisKKyAgICB2b2lkIHVubG9jaygpIGZpbmFs
OworCisgICAgLy8gUmV0dXJucyB0cnVlIGlmIHRoaXMgdGhyZWFkIG93bnMgdGhlIGNvbnRleHQn
cyBsb2NrLgorICAgIGJvb2wgaXNHcmFwaE93bmVyKCkgY29uc3QgZmluYWw7CisKKyAgICAvLyBS
ZXR1cm5zIHRoZSBtYXhpbXVtIG51bWJlciBvZiBjaGFubmVscyB3ZSBjYW4gc3VwcG9ydC4KKyAg
ICBzdGF0aWMgdW5zaWduZWQgbWF4TnVtYmVyT2ZDaGFubmVscygpIHsgcmV0dXJuIE1heE51bWJl
ck9mQ2hhbm5lbHM7IH0KKworICAgIC8vIEluIEF1ZGlvTm9kZTo6ZGVyZWYoKSBhIHRyeUxvY2so
KSBpcyB1c2VkIGZvciBjYWxsaW5nIGZpbmlzaERlcmVmKCksIGJ1dCBpZiBpdCBmYWlscyBrZWVw
IHRyYWNrIGhlcmUuCisgICAgdm9pZCBhZGREZWZlcnJlZEZpbmlzaERlcmVmKEF1ZGlvTm9kZSop
IGZpbmFsOworCisgICAgLy8gSW4gdGhlIGF1ZGlvIHRocmVhZCBhdCB0aGUgc3RhcnQgb2YgZWFj
aCByZW5kZXIgY3ljbGUsIHdlJ2xsIGNhbGwgaGFuZGxlRGVmZXJyZWRGaW5pc2hEZXJlZnMoKS4K
KyAgICB2b2lkIGhhbmRsZURlZmVycmVkRmluaXNoRGVyZWZzKCk7CisKKyAgICAvLyBPbmx5IGFj
Y2Vzc2VkIHdoZW4gdGhlIGdyYXBoIGxvY2sgaXMgaGVsZC4KKyAgICB2b2lkIG1hcmtTdW1taW5n
SnVuY3Rpb25EaXJ0eShBdWRpb1N1bW1pbmdKdW5jdGlvbiopIGZpbmFsOworICAgIHZvaWQgbWFy
a0F1ZGlvTm9kZU91dHB1dERpcnR5KEF1ZGlvTm9kZU91dHB1dCopIGZpbmFsOworCisgICAgLy8g
TXVzdCBiZSBjYWxsZWQgb24gbWFpbiB0aHJlYWQuCisgICAgdm9pZCByZW1vdmVNYXJrZWRTdW1t
aW5nSnVuY3Rpb24oQXVkaW9TdW1taW5nSnVuY3Rpb24qKSBmaW5hbDsKKworICAgIC8vIEV2ZW50
VGFyZ2V0CisgICAgRXZlbnRUYXJnZXRJbnRlcmZhY2UgZXZlbnRUYXJnZXRJbnRlcmZhY2UoKSBj
b25zdCBmaW5hbCB7IHJldHVybiBXZWJLaXRBdWRpb0NvbnRleHRFdmVudFRhcmdldEludGVyZmFj
ZVR5cGU7IH0KKworICAgIHZvaWQgc3RhcnRSZW5kZXJpbmcoKTsKKyAgICB2b2lkIGZpbmlzaGVk
UmVuZGVyaW5nKGJvb2wgZGlkUmVuZGVyaW5nKSBmaW5hbDsKKworICAgIHN0YXRpYyB1bnNpZ25l
ZCBzX2hhcmR3YXJlQ29udGV4dENvdW50OworCisgICAgLy8gUmVzdHJpY3Rpb25zIHRvIGNoYW5n
ZSBkZWZhdWx0IGJlaGF2aW9ycy4KKyAgICBCZWhhdmlvclJlc3RyaWN0aW9ucyBiZWhhdmlvclJl
c3RyaWN0aW9ucygpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fcmVzdHJpY3Rpb25zOyB9CisgICAg
dm9pZCBhZGRCZWhhdmlvclJlc3RyaWN0aW9uKEJlaGF2aW9yUmVzdHJpY3Rpb25zIHJlc3RyaWN0
aW9uKSBmaW5hbCB7IG1fcmVzdHJpY3Rpb25zIHw9IHJlc3RyaWN0aW9uOyB9CisgICAgdm9pZCBy
ZW1vdmVCZWhhdmlvclJlc3RyaWN0aW9uKEJlaGF2aW9yUmVzdHJpY3Rpb25zIHJlc3RyaWN0aW9u
KSBmaW5hbCB7IG1fcmVzdHJpY3Rpb25zICY9IH5yZXN0cmljdGlvbjsgfQorCisgICAgdm9pZCBp
c1BsYXlpbmdBdWRpb0RpZENoYW5nZSgpIGZpbmFsOworCisgICAgdm9pZCBub2RlV2lsbEJlZ2lu
UGxheWJhY2soKSBmaW5hbDsKKworI2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRAorICAgIGNvbnN0
IExvZ2dlciYgbG9nZ2VyKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9sb2dnZXIuZ2V0KCk7IH0K
KyAgICBjb25zdCB2b2lkKiBsb2dJZGVudGlmaWVyKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9s
b2dJZGVudGlmaWVyOyB9CisgICAgV1RGTG9nQ2hhbm5lbCYgbG9nQ2hhbm5lbCgpIGNvbnN0IGZp
bmFsOworICAgIGNvbnN0IHZvaWQqIG5leHRBdWRpb05vZGVMb2dJZGVudGlmaWVyKCkgZmluYWwg
eyByZXR1cm4gY2hpbGRMb2dJZGVudGlmaWVyKG1fbG9nSWRlbnRpZmllciwgKyttX25leHRBdWRp
b05vZGVJZGVudGlmaWVyKTsgfQorICAgIGNvbnN0IHZvaWQqIG5leHRBdWRpb1BhcmFtZXRlckxv
Z0lkZW50aWZpZXIoKSBmaW5hbCB7IHJldHVybiBjaGlsZExvZ0lkZW50aWZpZXIobV9sb2dJZGVu
dGlmaWVyLCArK21fbmV4dEF1ZGlvUGFyYW1ldGVySWRlbnRpZmllcik7IH0KKyNlbmRpZgorCisg
ICAgdm9pZCBwb3N0VGFzayhXVEY6OkZ1bmN0aW9uPHZvaWQoKT4mJikgZmluYWw7CisgICAgYm9v
bCBpc1N0b3BwZWQoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2lzU3RvcFNjaGVkdWxlZDsgfQor
ICAgIGNvbnN0IFNlY3VyaXR5T3JpZ2luKiBvcmlnaW4oKSBjb25zdCBmaW5hbDsKKyAgICB2b2lk
IGFkZENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VTb3VyY2UsIE1lc3NhZ2VMZXZlbCwgY29uc3QgU3Ry
aW5nJiBtZXNzYWdlKSBmaW5hbDsKKworcHJvdGVjdGVkOgorICAgIGV4cGxpY2l0IFdlYktpdEF1
ZGlvQ29udGV4dChEb2N1bWVudCYpOworICAgIFdlYktpdEF1ZGlvQ29udGV4dChEb2N1bWVudCYs
IEF1ZGlvQnVmZmVyKiByZW5kZXJUYXJnZXQpOworCisgICAgc3RhdGljIGJvb2wgaXNTYW1wbGVS
YXRlUmFuZ2VHb29kKGZsb2F0IHNhbXBsZVJhdGUpOworICAgIHZvaWQgY2xlYXJQZW5kaW5nQWN0
aXZpdHkoKTsKKyAgICB2b2lkIG1ha2VQZW5kaW5nQWN0aXZpdHkoKTsKKworcHJpdmF0ZToKKyAg
ICB2b2lkIGNvbnN0cnVjdENvbW1vbigpOworCisgICAgdm9pZCBsYXp5SW5pdGlhbGl6ZSgpOwor
ICAgIHZvaWQgdW5pbml0aWFsaXplKCk7CisKKyAgICBib29sIHdpbGxCZWdpblBsYXliYWNrKCk7
CisgICAgYm9vbCB3aWxsUGF1c2VQbGF5YmFjaygpOworCisgICAgYm9vbCB1c2VyR2VzdHVyZVJl
cXVpcmVkRm9yQXVkaW9TdGFydCgpIGNvbnN0IHsgcmV0dXJuICFpc09mZmxpbmVDb250ZXh0KCkg
JiYgbV9yZXN0cmljdGlvbnMgJiBSZXF1aXJlVXNlckdlc3R1cmVGb3JBdWRpb1N0YXJ0UmVzdHJp
Y3Rpb247IH0KKyAgICBib29sIHBhZ2VDb25zZW50UmVxdWlyZWRGb3JBdWRpb1N0YXJ0KCkgY29u
c3QgeyByZXR1cm4gIWlzT2ZmbGluZUNvbnRleHQoKSAmJiBtX3Jlc3RyaWN0aW9ucyAmIFJlcXVp
cmVQYWdlQ29uc2VudEZvckF1ZGlvU3RhcnRSZXN0cmljdGlvbjsgfQorCisgICAgdm9pZCBzZXRT
dGF0ZShTdGF0ZSk7CisKKyAgICB2b2lkIGNsZWFyKCk7CisKKyAgICB2b2lkIHNjaGVkdWxlTm9k
ZURlbGV0aW9uKCk7CisKKyAgICB2b2lkIG1lZGlhQ2FuU3RhcnQoRG9jdW1lbnQmKSBvdmVycmlk
ZTsKKworICAgIC8vIEV2ZW50VGFyZ2V0CisgICAgdm9pZCBkaXNwYXRjaEV2ZW50KEV2ZW50Jikg
ZmluYWw7CisKKyAgICAvLyBNZWRpYVByb2R1Y2VyCisgICAgTWVkaWFQcm9kdWNlcjo6TWVkaWFT
dGF0ZUZsYWdzIG1lZGlhU3RhdGUoKSBjb25zdCBvdmVycmlkZTsKKyAgICB2b2lkIHBhZ2VNdXRl
ZFN0YXRlRGlkQ2hhbmdlKCkgb3ZlcnJpZGU7CisKKyAgICAvLyBUaGUgY29udGV4dCBpdHNlbGYg
a2VlcHMgYSByZWZlcmVuY2UgdG8gYWxsIHNvdXJjZSBub2Rlcy4gIFRoZSBzb3VyY2Ugbm9kZXMs
IHRoZW4gcmVmZXJlbmNlIGFsbCBub2RlcyB0aGV5J3JlIGNvbm5lY3RlZCB0by4KKyAgICAvLyBJ
biB0dXJuLCB0aGVzZSBub2RlcyByZWZlcmVuY2UgYWxsIG5vZGVzIHRoZXkncmUgY29ubmVjdGVk
IHRvLiAgQWxsIG5vZGVzIGFyZSB1bHRpbWF0ZWx5IGNvbm5lY3RlZCB0byB0aGUgQXVkaW9EZXN0
aW5hdGlvbk5vZGUuCisgICAgLy8gV2hlbiB0aGUgY29udGV4dCBkZXJlZmVyZW5jZXMgYSBzb3Vy
Y2Ugbm9kZSwgaXQgd2lsbCBiZSBkZWFjdGl2YXRlZCBmcm9tIHRoZSByZW5kZXJpbmcgZ3JhcGgg
YWxvbmcgd2l0aCBhbGwgb3RoZXIgbm9kZXMgaXQgaXMKKyAgICAvLyB1bmlxdWVseSBjb25uZWN0
ZWQgdG8uICBTZWUgdGhlIEF1ZGlvTm9kZTo6cmVmKCkgYW5kIEF1ZGlvTm9kZTo6ZGVyZWYoKSBt
ZXRob2RzIGZvciBtb3JlIGRldGFpbHMuCisgICAgdm9pZCByZWZOb2RlKEF1ZGlvTm9kZSYpOwor
ICAgIHZvaWQgZGVyZWZOb2RlKEF1ZGlvTm9kZSYpOworCisgICAgLy8gQWN0aXZlRE9NT2JqZWN0
IEFQSS4KKyAgICB2b2lkIHN1c3BlbmQoUmVhc29uRm9yU3VzcGVuc2lvbikgZmluYWw7CisgICAg
dm9pZCByZXN1bWUoKSBmaW5hbDsKKyAgICB2b2lkIHN0b3AoKSBvdmVycmlkZTsKKyAgICBjb25z
dCBjaGFyKiBhY3RpdmVET01PYmplY3ROYW1lKCkgY29uc3Qgb3ZlcnJpZGU7CisKKyAgICAvLyBX
aGVuIHRoZSBjb250ZXh0IGdvZXMgYXdheSwgdGhlcmUgbWlnaHQgc3RpbGwgYmUgc29tZSBzb3Vy
Y2VzIHdoaWNoIGhhdmVuJ3QgZmluaXNoZWQgcGxheWluZy4KKyAgICAvLyBNYWtlIHN1cmUgdG8g
ZGVyZWZlcmVuY2UgdGhlbSBoZXJlLgorICAgIHZvaWQgZGVyZWZVbmZpbmlzaGVkU291cmNlTm9k
ZXMoKTsKKworICAgIC8vIFBsYXRmb3JtTWVkaWFTZXNzaW9uQ2xpZW50CisgICAgUGxhdGZvcm1N
ZWRpYVNlc3Npb246Ok1lZGlhVHlwZSBtZWRpYVR5cGUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVy
biBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6TWVkaWFUeXBlOjpXZWJBdWRpbzsgfQorICAgIFBsYXRm
b3JtTWVkaWFTZXNzaW9uOjpNZWRpYVR5cGUgcHJlc2VudGF0aW9uVHlwZSgpIGNvbnN0IG92ZXJy
aWRlIHsgcmV0dXJuIFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpNZWRpYVR5cGU6OldlYkF1ZGlvOyB9
CisgICAgdm9pZCBtYXlSZXN1bWVQbGF5YmFjayhib29sIHNob3VsZFJlc3VtZSkgb3ZlcnJpZGU7
CisgICAgdm9pZCBzdXNwZW5kUGxheWJhY2soKSBvdmVycmlkZTsKKyAgICBib29sIGNhblJlY2Vp
dmVSZW1vdGVDb250cm9sQ29tbWFuZHMoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsg
fQorICAgIHZvaWQgZGlkUmVjZWl2ZVJlbW90ZUNvbnRyb2xDb21tYW5kKFBsYXRmb3JtTWVkaWFT
ZXNzaW9uOjpSZW1vdGVDb250cm9sQ29tbWFuZFR5cGUsIGNvbnN0IFBsYXRmb3JtTWVkaWFTZXNz
aW9uOjpSZW1vdGVDb21tYW5kQXJndW1lbnQqKSBvdmVycmlkZSB7IH0KKyAgICBib29sIHN1cHBv
cnRzU2Vla2luZygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgYm9vbCBz
aG91bGRPdmVycmlkZUJhY2tncm91bmRQbGF5YmFja1Jlc3RyaWN0aW9uKFBsYXRmb3JtTWVkaWFT
ZXNzaW9uOjpJbnRlcnJ1cHRpb25UeXBlKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsg
fQorICAgIGJvb2wgY2FuUHJvZHVjZUF1ZGlvKCkgY29uc3QgZmluYWwgeyByZXR1cm4gdHJ1ZTsg
fQorICAgIGJvb2wgaXNTdXNwZW5kZWQoKSBjb25zdCBmaW5hbDsKKworICAgIHZvaWQgdmlzaWJp
bGl0eVN0YXRlQ2hhbmdlZCgpIGZpbmFsOworCisgICAgYm9vbCBpc0F1ZGlvQ29udGV4dCgpIGNv
bnN0IGZpbmFsIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgYm9vbCBpc1dlYktpdEF1ZGlvQ29udGV4
dCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIHRydWU7IH0KKworICAgIHZvaWQgaGFuZGxlRGlydHlB
dWRpb1N1bW1pbmdKdW5jdGlvbnMoKTsKKyAgICB2b2lkIGhhbmRsZURpcnR5QXVkaW9Ob2RlT3V0
cHV0cygpOworCisgICAgdm9pZCBhZGRSZWFjdGlvbihTdGF0ZSwgRE9NUHJvbWlzZURlZmVycmVk
PHZvaWQ+JiYpOworICAgIHZvaWQgdXBkYXRlQXV0b21hdGljUHVsbE5vZGVzKCk7CisKKyNpZiAh
UkVMRUFTRV9MT0dfRElTQUJMRUQKKyAgICBjb25zdCBjaGFyKiBsb2dDbGFzc05hbWUoKSBjb25z
dCBmaW5hbCB7IHJldHVybiAiV2ViS2l0QXVkaW9Db250ZXh0IjsgfQorCisgICAgUmVmPExvZ2dl
cj4gbV9sb2dnZXI7CisgICAgY29uc3Qgdm9pZCogbV9sb2dJZGVudGlmaWVyOworICAgIHVpbnQ2
NF90IG1fbmV4dEF1ZGlvTm9kZUlkZW50aWZpZXIgeyAwIH07CisgICAgdWludDY0X3QgbV9uZXh0
QXVkaW9QYXJhbWV0ZXJJZGVudGlmaWVyIHsgMCB9OworI2VuZGlmCisKKyAgICAvLyBPbmx5IGFj
Y2Vzc2VkIGluIHRoZSBhdWRpbyB0aHJlYWQuCisgICAgVmVjdG9yPEF1ZGlvTm9kZSo+IG1fZmlu
aXNoZWROb2RlczsKKworICAgIC8vIFdlIGRvbid0IHVzZSBSZWZQdHI8QXVkaW9Ob2RlPiBoZXJl
IGJlY2F1c2UgQXVkaW9Ob2RlIGhhcyBhIG1vcmUgY29tcGxleCByZWYoKSAvIGRlcmVmKCkgaW1w
bGVtZW50YXRpb24KKyAgICAvLyB3aXRoIGFuIG9wdGlvbmFsIGFyZ3VtZW50IGZvciByZWZUeXBl
LiAgV2UgbmVlZCB0byB1c2UgdGhlIHNwZWNpYWwgcmVmVHlwZTogUmVmVHlwZUNvbm5lY3Rpb24K
KyAgICAvLyBFaXRoZXIgYWNjZXNzZWQgd2hlbiB0aGUgZ3JhcGggbG9jayBpcyBoZWxkLCBvciBv
biB0aGUgbWFpbiB0aHJlYWQgd2hlbiB0aGUgYXVkaW8gdGhyZWFkIGhhcyBmaW5pc2hlZC4KKyAg
ICBWZWN0b3I8QXVkaW9Ob2RlKj4gbV9yZWZlcmVuY2VkTm9kZXM7CisKKyAgICAvLyBBY2N1bXVs
YXRlIG5vZGVzIHdoaWNoIG5lZWQgdG8gYmUgZGVsZXRlZCBoZXJlLgorICAgIC8vIFRoaXMgaXMg
Y29waWVkIHRvIG1fbm9kZXNUb0RlbGV0ZSBhdCB0aGUgZW5kIG9mIGEgcmVuZGVyIGN5Y2xlIGlu
IGhhbmRsZVBvc3RSZW5kZXJUYXNrcygpLCB3aGVyZSB3ZSdyZSBhc3N1cmVkIG9mIGEgc3RhYmxl
IGdyYXBoCisgICAgLy8gc3RhdGUgd2hpY2ggd2lsbCBoYXZlIG5vIHJlZmVyZW5jZXMgdG8gYW55
IG9mIHRoZSBub2RlcyBpbiBtX25vZGVzVG9EZWxldGUgb25jZSB0aGUgY29udGV4dCBsb2NrIGlz
IHJlbGVhc2VkCisgICAgLy8gKHdoZW4gaGFuZGxlUG9zdFJlbmRlclRhc2tzKCkgaGFzIGNvbXBs
ZXRlZCkuCisgICAgVmVjdG9yPEF1ZGlvTm9kZSo+IG1fbm9kZXNNYXJrZWRGb3JEZWxldGlvbjsK
KworICAgIC8vIFRoZXkgd2lsbCBiZSBzY2hlZHVsZWQgZm9yIGRlbGV0aW9uIChvbiB0aGUgbWFp
biB0aHJlYWQpIGF0IHRoZSBlbmQgb2YgYSByZW5kZXIgY3ljbGUgKGluIHJlYWx0aW1lIHRocmVh
ZCkuCisgICAgVmVjdG9yPEF1ZGlvTm9kZSo+IG1fbm9kZXNUb0RlbGV0ZTsKKworICAgIGJvb2wg
bV9pc0RlbGV0aW9uU2NoZWR1bGVkIHsgZmFsc2UgfTsKKyAgICBib29sIG1faXNTdG9wU2NoZWR1
bGVkIHsgZmFsc2UgfTsKKyAgICBib29sIG1faXNJbml0aWFsaXplZCB7IGZhbHNlIH07CisgICAg
Ym9vbCBtX2lzQXVkaW9UaHJlYWRGaW5pc2hlZCB7IGZhbHNlIH07CisgICAgYm9vbCBtX2F1dG9t
YXRpY1B1bGxOb2Rlc05lZWRVcGRhdGluZyB7IGZhbHNlIH07CisgICAgYm9vbCBtX2lzT2ZmbGlu
ZUNvbnRleHQgeyBmYWxzZSB9OworCisgICAgLy8gT25seSBhY2Nlc3NlZCB3aGVuIHRoZSBncmFw
aCBsb2NrIGlzIGhlbGQuCisgICAgSGFzaFNldDxBdWRpb1N1bW1pbmdKdW5jdGlvbio+IG1fZGly
dHlTdW1taW5nSnVuY3Rpb25zOworICAgIEhhc2hTZXQ8QXVkaW9Ob2RlT3V0cHV0Kj4gbV9kaXJ0
eUF1ZGlvTm9kZU91dHB1dHM7CisKKyAgICAvLyBGb3IgdGhlIHNha2Ugb2YgdGhyZWFkIHNhZmV0
eSwgd2UgbWFpbnRhaW4gYSBzZXBlcmF0ZSBWZWN0b3Igb2YgYXV0b21hdGljIHB1bGwgbm9kZXMg
Zm9yIHJlbmRlcmluZyBpbiBtX3JlbmRlcmluZ0F1dG9tYXRpY1B1bGxOb2Rlcy4KKyAgICAvLyBJ
dCB3aWxsIGJlIGNvcGllZCBmcm9tIG1fYXV0b21hdGljUHVsbE5vZGVzIGJ5IHVwZGF0ZUF1dG9t
YXRpY1B1bGxOb2RlcygpIGF0IHRoZSB2ZXJ5IHN0YXJ0IG9yIGVuZCBvZiB0aGUgcmVuZGVyaW5n
IHF1YW50dW0uCisgICAgSGFzaFNldDxBdWRpb05vZGUqPiBtX2F1dG9tYXRpY1B1bGxOb2RlczsK
KyAgICBWZWN0b3I8QXVkaW9Ob2RlKj4gbV9yZW5kZXJpbmdBdXRvbWF0aWNQdWxsTm9kZXM7Cisg
ICAgLy8gT25seSBhY2Nlc3NlZCBpbiB0aGUgYXVkaW8gdGhyZWFkLgorICAgIFZlY3RvcjxBdWRp
b05vZGUqPiBtX2RlZmVycmVkRmluaXNoRGVyZWZMaXN0OworICAgIFZlY3RvcjxWZWN0b3I8RE9N
UHJvbWlzZURlZmVycmVkPHZvaWQ+Pj4gbV9zdGF0ZVJlYWN0aW9uczsKKworICAgIHN0ZDo6dW5p
cXVlX3B0cjxQbGF0Zm9ybU1lZGlhU2Vzc2lvbj4gbV9tZWRpYVNlc3Npb247CisgICAgVW5pcXVl
UmVmPE1haW5UaHJlYWRHZW5lcmljRXZlbnRRdWV1ZT4gbV9ldmVudFF1ZXVlOworCisgICAgUmVm
UHRyPEF1ZGlvQnVmZmVyPiBtX3JlbmRlclRhcmdldDsKKyAgICBSZWZQdHI8QXVkaW9EZXN0aW5h
dGlvbk5vZGU+IG1fZGVzdGluYXRpb25Ob2RlOworICAgIFJlZlB0cjxBdWRpb0xpc3RlbmVyPiBt
X2xpc3RlbmVyOworCisgICAgdW5zaWduZWQgbV9jb25uZWN0aW9uQ291bnQgeyAwIH07CisKKyAg
ICAvLyBHcmFwaCBsb2NraW5nLgorICAgIExvY2sgbV9jb250ZXh0R3JhcGhNdXRleDsKKyAgICAv
LyBGSVhNRTogVXNpbmcgdm9sYXRpbGUgc2VlbXMgaW5jb3JyZWN0LgorICAgIC8vIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODAzMzIKKyAgICBUaHJlYWQqIHZvbGF0
aWxlIG1fYXVkaW9UaHJlYWQgeyBudWxscHRyIH07CisgICAgVGhyZWFkKiB2b2xhdGlsZSBtX2dy
YXBoT3duZXJUaHJlYWQgeyBudWxscHRyIH07IC8vIGlmIHRoZSBsb2NrIGlzIGhlbGQgdGhlbiB0
aGlzIGlzIHRoZSB0aHJlYWQgd2hpY2ggb3ducyBpdCwgb3RoZXJ3aXNlID09IG51bGxwdHIuCisK
KyAgICBzdGQ6OnVuaXF1ZV9wdHI8QXN5bmNBdWRpb0RlY29kZXI+IG1fYXVkaW9EZWNvZGVyOwor
CisgICAgLy8gVGhpcyBpcyBjb25zaWRlcmluZyAzMiBpcyBsYXJnZSBlbm91Z2ggZm9yIG11bHRp
cGxlIGNoYW5uZWxzIGF1ZGlvLgorICAgIC8vIEl0IGlzIHNvbWV3aGF0IGFyYml0cmFyeSBhbmQg
Y291bGQgYmUgaW5jcmVhc2VkIGlmIG5lY2Vzc2FyeS4KKyAgICBlbnVtIHsgTWF4TnVtYmVyT2ZD
aGFubmVscyA9IDMyIH07CisKKyAgICAvLyBOdW1iZXIgb2YgQXVkaW9CdWZmZXJTb3VyY2VOb2Rl
cyB0aGF0IGFyZSBhY3RpdmUgKHBsYXlpbmcpLgorICAgIHN0ZDo6YXRvbWljPGludD4gbV9hY3Rp
dmVTb3VyY2VDb3VudCB7IDAgfTsKKworICAgIEJlaGF2aW9yUmVzdHJpY3Rpb25zIG1fcmVzdHJp
Y3Rpb25zIHsgTm9SZXN0cmljdGlvbnMgfTsKKworICAgIFN0YXRlIG1fc3RhdGUgeyBTdGF0ZTo6
U3VzcGVuZGVkIH07CisgICAgUmVmUHRyPFBlbmRpbmdBY3Rpdml0eTxXZWJLaXRBdWRpb0NvbnRl
eHQ+PiBtX3BlbmRpbmdBY3Rpdml0eTsKK307CisKK2lubGluZSBBdWRpb0NvbnRleHRTdGF0ZSBX
ZWJLaXRBdWRpb0NvbnRleHQ6OnN0YXRlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9zdGF0ZTsK
K30KKworfSAvLyBXZWJDb3JlCisKK1NQRUNJQUxJWkVfVFlQRV9UUkFJVFNfQkVHSU4oV2ViQ29y
ZTo6V2ViS2l0QXVkaW9Db250ZXh0KQorICAgIHN0YXRpYyBib29sIGlzVHlwZShjb25zdCBXZWJD
b3JlOjpBdWRpb0NvbnRleHRCYXNlJiBjb250ZXh0KSB7IHJldHVybiBjb250ZXh0LmlzV2ViS2l0
QXVkaW9Db250ZXh0KCk7IH0KK1NQRUNJQUxJWkVfVFlQRV9UUkFJVFNfRU5EKCkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vV2ViS2l0QXVkaW9Db250ZXh0Lmlk
bCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vV2ViS2l0QXVkaW9Db250ZXh0Lmlk
bApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi41Njk1YzczNjY5ODY3OGViMzZlZDY0ODkzYmQwMmI0Y2Q4YmRlMDBiCi0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9XZWJLaXRB
dWRpb0NvbnRleHQuaWRsCkBAIC0wLDAgKzEsOTMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTAsIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAg
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJF
CisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04KKyAqIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUworICogU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworWworICAgIEFjdGl2
ZURPTU9iamVjdCwKKyAgICBDb25kaXRpb25hbD1XRUJfQVVESU8sCisgICAgRW5hYmxlZEJ5U2V0
dGluZz1XZWJBdWRpbywKKyAgICBFeHBvcnRNYWNybz1XRUJDT1JFX0VYUE9SVCwKKyAgICBJbnRl
cmZhY2VOYW1lPXdlYmtpdEF1ZGlvQ29udGV4dCwKK10gaW50ZXJmYWNlIFdlYktpdEF1ZGlvQ29u
dGV4dCA6IEV2ZW50VGFyZ2V0IHsKKyAgICBbQ2FsbFdpdGg9RG9jdW1lbnQsIE1heVRocm93RXhj
ZXB0aW9uXSBjb25zdHJ1Y3RvcigpOworCisgICAgLy8gQWxsIHJlbmRlcmVkIGF1ZGlvIHVsdGlt
YXRlbHkgY29ubmVjdHMgdG8gZGVzdGluYXRpb24sIHdoaWNoIHJlcHJlc2VudHMgdGhlIGF1ZGlv
IGhhcmR3YXJlLgorICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBBdWRpb0Rlc3RpbmF0aW9uTm9kZSBk
ZXN0aW5hdGlvbjsKKworICAgIC8vIEFsbCBzY2hlZHVsZWQgdGltZXMgYXJlIHJlbGF0aXZlIHRv
IHRoaXMgdGltZSBpbiBzZWNvbmRzLgorICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSB1bnJlc3RyaWN0
ZWQgZG91YmxlIGN1cnJlbnRUaW1lOworCisgICAgLy8gQWxsIEF1ZGlvTm9kZXMgaW4gdGhlIGNv
bnRleHQgcnVuIGF0IHRoaXMgc2FtcGxlLXJhdGUgKHNhbXBsZS1mcmFtZXMgcGVyIHNlY29uZCku
CisgICAgcmVhZG9ubHkgYXR0cmlidXRlIHVucmVzdHJpY3RlZCBmbG9hdCBzYW1wbGVSYXRlOwor
CisgICAgLy8gQWxsIHBhbm5pbmcgaXMgcmVsYXRpdmUgdG8gdGhpcyBsaXN0ZW5lci4KKyAgICBy
ZWFkb25seSBhdHRyaWJ1dGUgQXVkaW9MaXN0ZW5lciBsaXN0ZW5lcjsKKworICAgIFtJbXBsZW1l
bnRlZEFzPXN1c3BlbmRSZW5kZXJpbmddIFByb21pc2U8dm9pZD4gc3VzcGVuZCgpOworICAgIFtJ
bXBsZW1lbnRlZEFzPXJlc3VtZVJlbmRlcmluZ10gUHJvbWlzZTx2b2lkPiByZXN1bWUoKTsKKyAg
ICBQcm9taXNlPHZvaWQ+IGNsb3NlKCk7CisKKyAgICByZWFkb25seSBhdHRyaWJ1dGUgQXVkaW9D
b250ZXh0U3RhdGUgc3RhdGU7CisgICAgYXR0cmlidXRlIEV2ZW50SGFuZGxlciBvbnN0YXRlY2hh
bmdlOworCisgICAgLy8gTnVtYmVyIG9mIEF1ZGlvQnVmZmVyU291cmNlTm9kZXMgdGhhdCBhcmUg
Y3VycmVudGx5IHBsYXlpbmcuCisgICAgcmVhZG9ubHkgYXR0cmlidXRlIHVuc2lnbmVkIGxvbmcg
YWN0aXZlU291cmNlQ291bnQ7CisKKyAgICBbTWF5VGhyb3dFeGNlcHRpb25dIEF1ZGlvQnVmZmVy
IGNyZWF0ZUJ1ZmZlcih1bnNpZ25lZCBsb25nIG51bWJlck9mQ2hhbm5lbHMsIHVuc2lnbmVkIGxv
bmcgbnVtYmVyT2ZGcmFtZXMsIHVucmVzdHJpY3RlZCBmbG9hdCBzYW1wbGVSYXRlKTsKKyAgICBb
TWF5VGhyb3dFeGNlcHRpb25dIEF1ZGlvQnVmZmVyIGNyZWF0ZUJ1ZmZlcihBcnJheUJ1ZmZlciBi
dWZmZXIsIGJvb2xlYW4gbWl4VG9Nb25vKTsKKworICAgIC8vIEFzeW5jaHJvbm91cyBhdWRpbyBm
aWxlIGRhdGEgZGVjb2RpbmcuCisgICAgLy8gRklYTUU6IHN1Y2Nlc3NDYWxsYmFjayBzaG91bGQg
YmUgb3B0aW9uYWwgYW5kIHRoZSBjYWxsYmFja3Mgc2hvdWxkIG5vdCBiZSBudWxsYWJsZS4gVGhp
cyBzaG91bGQgYWxzbyByZXR1cm4gYSBQcm9taXNlLgorICAgIHZvaWQgZGVjb2RlQXVkaW9EYXRh
KEFycmF5QnVmZmVyIGF1ZGlvRGF0YSwgQXVkaW9CdWZmZXJDYWxsYmFjaz8gc3VjY2Vzc0NhbGxi
YWNrLCBvcHRpb25hbCBBdWRpb0J1ZmZlckNhbGxiYWNrPyBlcnJvckNhbGxiYWNrKTsKKworICAg
IC8vIFNvdXJjZXMKKyAgICBbTWF5VGhyb3dFeGNlcHRpb25dIEF1ZGlvQnVmZmVyU291cmNlTm9k
ZSBjcmVhdGVCdWZmZXJTb3VyY2UoKTsKKworICAgIFtDb25kaXRpb25hbD1WSURFTywgTWF5VGhy
b3dFeGNlcHRpb25dIE1lZGlhRWxlbWVudEF1ZGlvU291cmNlTm9kZSBjcmVhdGVNZWRpYUVsZW1l
bnRTb3VyY2UoSFRNTE1lZGlhRWxlbWVudCBtZWRpYUVsZW1lbnQpOworCisgICAgW0NvbmRpdGlv
bmFsPU1FRElBX1NUUkVBTSwgTWF5VGhyb3dFeGNlcHRpb25dIE1lZGlhU3RyZWFtQXVkaW9Tb3Vy
Y2VOb2RlIGNyZWF0ZU1lZGlhU3RyZWFtU291cmNlKE1lZGlhU3RyZWFtIG1lZGlhU3RyZWFtKTsK
KyAgICBbQ29uZGl0aW9uYWw9TUVESUFfU1RSRUFNLCBNYXlUaHJvd0V4Y2VwdGlvbl0gTWVkaWFT
dHJlYW1BdWRpb0Rlc3RpbmF0aW9uTm9kZSBjcmVhdGVNZWRpYVN0cmVhbURlc3RpbmF0aW9uKCk7
CisKKyAgICAvLyBQcm9jZXNzaW5nIG5vZGVzCisgICAgW01heVRocm93RXhjZXB0aW9uXSBHYWlu
Tm9kZSBjcmVhdGVHYWluKCk7CisgICAgW01heVRocm93RXhjZXB0aW9uXSBEZWxheU5vZGUgY3Jl
YXRlRGVsYXkob3B0aW9uYWwgdW5yZXN0cmljdGVkIGRvdWJsZSBtYXhEZWxheVRpbWUgPSAxKTsK
KyAgICBbTWF5VGhyb3dFeGNlcHRpb25dIEJpcXVhZEZpbHRlck5vZGUgY3JlYXRlQmlxdWFkRmls
dGVyKCk7CisgICAgW01heVRocm93RXhjZXB0aW9uXSBXYXZlU2hhcGVyTm9kZSBjcmVhdGVXYXZl
U2hhcGVyKCk7CisgICAgW01heVRocm93RXhjZXB0aW9uXSBXZWJLaXRBdWRpb1Bhbm5lck5vZGUg
Y3JlYXRlUGFubmVyKCk7CisgICAgW01heVRocm93RXhjZXB0aW9uXSBDb252b2x2ZXJOb2RlIGNy
ZWF0ZUNvbnZvbHZlcigpOworICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gRHluYW1pY3NDb21wcmVz
c29yTm9kZSBjcmVhdGVEeW5hbWljc0NvbXByZXNzb3IoKTsKKyAgICBbTWF5VGhyb3dFeGNlcHRp
b25dIEFuYWx5c2VyTm9kZSBjcmVhdGVBbmFseXNlcigpOworICAgIFtNYXlUaHJvd0V4Y2VwdGlv
bl0gU2NyaXB0UHJvY2Vzc29yTm9kZSBjcmVhdGVTY3JpcHRQcm9jZXNzb3Iob3B0aW9uYWwgdW5z
aWduZWQgbG9uZyBidWZmZXJTaXplID0gMCwgb3B0aW9uYWwgdW5zaWduZWQgbG9uZyBudW1iZXJP
ZklucHV0Q2hhbm5lbHMgPSAyLCBvcHRpb25hbCB1bnNpZ25lZCBsb25nIG51bWJlck9mT3V0cHV0
Q2hhbm5lbHMgPSAyKTsKKyAgICBbTWF5VGhyb3dFeGNlcHRpb25dIE9zY2lsbGF0b3JOb2RlIGNy
ZWF0ZU9zY2lsbGF0b3IoKTsKKyAgICBbTWF5VGhyb3dFeGNlcHRpb25dIFBlcmlvZGljV2F2ZSBj
cmVhdGVQZXJpb2RpY1dhdmUoRmxvYXQzMkFycmF5IHJlYWwsIEZsb2F0MzJBcnJheSBpbWFnKTsK
KworICAgIC8vIENoYW5uZWwgc3BsaXR0aW5nIGFuZCBtZXJnaW5nCisgICAgW01heVRocm93RXhj
ZXB0aW9uXSBDaGFubmVsU3BsaXR0ZXJOb2RlIGNyZWF0ZUNoYW5uZWxTcGxpdHRlcihvcHRpb25h
bCB1bnNpZ25lZCBsb25nIG51bWJlck9mT3V0cHV0cyA9IDYpOworICAgIFtNYXlUaHJvd0V4Y2Vw
dGlvbl0gQ2hhbm5lbE1lcmdlck5vZGUgY3JlYXRlQ2hhbm5lbE1lcmdlcihvcHRpb25hbCB1bnNp
Z25lZCBsb25nIG51bWJlck9mSW5wdXRzID0gNik7CisKKyAgICAvLyBPZmZsaW5lIHJlbmRlcmlu
ZworICAgIC8vIHZvaWQgcHJlcGFyZU9mZmxpbmVCdWZmZXJSZW5kZXJpbmcodW5zaWduZWQgbG9u
ZyBudW1iZXJPZkNoYW5uZWxzLCB1bnNpZ25lZCBsb25nIG51bWJlck9mRnJhbWVzLCB1bnJlc3Ry
aWN0ZWQgZmxvYXQgc2FtcGxlUmF0ZSk7CisgICAgYXR0cmlidXRlIEV2ZW50SGFuZGxlciBvbmNv
bXBsZXRlOworICAgIHZvaWQgc3RhcnRSZW5kZXJpbmcoKTsKK307CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1dlYktpdEF1ZGlvUGFubmVyTm9kZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1dlYktpdEF1ZGlvUGFubmVyTm9kZS5jcHAK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uMjU4ZjQ1ZTdjZmQ5MWM4MjJjNjk5MmU3NThkYWE3NThhZDc5MDJlMgotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vV2ViS2l0QXVk
aW9QYW5uZXJOb2RlLmNwcApAQCAtMCwwICsxLDM2MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxMCwgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NF
IEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICog
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OCisgKiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKKyAqIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRl
ICJjb25maWcuaCIKKyNpbmNsdWRlICJXZWJLaXRBdWRpb1Bhbm5lck5vZGUuaCIKKworI2lmIEVO
QUJMRShXRUJfQVVESU8pCisKKyNpbmNsdWRlICJBdWRpb0J1ZmZlclNvdXJjZU5vZGUuaCIKKyNp
bmNsdWRlICJBdWRpb0J1cy5oIgorI2luY2x1ZGUgIkF1ZGlvQ29udGV4dC5oIgorI2luY2x1ZGUg
IkF1ZGlvTm9kZUlucHV0LmgiCisjaW5jbHVkZSAiQXVkaW9Ob2RlT3V0cHV0LmgiCisjaW5jbHVk
ZSAiSFJURkRhdGFiYXNlTG9hZGVyLmgiCisjaW5jbHVkZSAiSFJURlBhbm5lci5oIgorI2luY2x1
ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKKyNpbmNsdWRlIDx3dGYvSXNvTWFsbG9jSW5s
aW5lcy5oPgorI2luY2x1ZGUgPHd0Zi9NYXRoRXh0cmFzLmg+CisKK25hbWVzcGFjZSBXZWJDb3Jl
IHsKKworV1RGX01BS0VfSVNPX0FMTE9DQVRFRF9JTVBMKFdlYktpdEF1ZGlvUGFubmVyTm9kZSk7
CisKK3N0YXRpYyB2b2lkIGZpeE5BTnMoZG91YmxlICZ4KQoreworICAgIGlmIChzdGQ6OmlzbmFu
KHgpIHx8IHN0ZDo6aXNpbmYoeCkpCisgICAgICAgIHggPSAwLjA7Cit9CisKK1dlYktpdEF1ZGlv
UGFubmVyTm9kZTo6V2ViS2l0QXVkaW9QYW5uZXJOb2RlKFdlYktpdEF1ZGlvQ29udGV4dCYgY29u
dGV4dCwgZmxvYXQgc2FtcGxlUmF0ZSkKKyAgICA6IFBhbm5lck5vZGVCYXNlKGNvbnRleHQsIHNh
bXBsZVJhdGUpCisgICAgLCBtX3Bhbm5pbmdNb2RlbChQYW5uaW5nTW9kZWxUeXBlOjpIUlRGKQor
ICAgICwgbV9sYXN0R2FpbigtMS4wKQorICAgICwgbV9jb25uZWN0aW9uQ291bnQoMCkKK3sKKyAg
ICBzZXROb2RlVHlwZShOb2RlVHlwZVBhbm5lcik7CisKKyAgICAvLyBMb2FkIHRoZSBIUlRGIGRh
dGFiYXNlIGFzeW5jaHJvbm91c2x5IHNvIHdlIGRvbid0IGJsb2NrIHRoZSBKYXZhc2NyaXB0IHRo
cmVhZCB3aGlsZSBjcmVhdGluZyB0aGUgSFJURiBkYXRhYmFzZS4KKyAgICBtX2hydGZEYXRhYmFz
ZUxvYWRlciA9IEhSVEZEYXRhYmFzZUxvYWRlcjo6Y3JlYXRlQW5kTG9hZEFzeW5jaHJvbm91c2x5
SWZOZWNlc3NhcnkoY29udGV4dC5zYW1wbGVSYXRlKCkpOworCisgICAgYWRkSW5wdXQobWFrZVVu
aXF1ZTxBdWRpb05vZGVJbnB1dD4odGhpcykpOworICAgIGFkZE91dHB1dChtYWtlVW5pcXVlPEF1
ZGlvTm9kZU91dHB1dD4odGhpcywgMikpOworCisgICAgLy8gTm9kZS1zcGVjaWZpYyBkZWZhdWx0
IG1peGluZyBydWxlcy4KKyAgICBtX2NoYW5uZWxDb3VudCA9IDI7CisgICAgbV9jaGFubmVsQ291
bnRNb2RlID0gQ2xhbXBlZE1heDsKKyAgICBtX2NoYW5uZWxJbnRlcnByZXRhdGlvbiA9IEF1ZGlv
QnVzOjpTcGVha2VyczsKKworICAgIG1fZGlzdGFuY2VHYWluID0gQXVkaW9QYXJhbTo6Y3JlYXRl
KGNvbnRleHQsICJkaXN0YW5jZUdhaW4iLCAxLjAsIDAuMCwgMS4wKTsKKyAgICBtX2NvbmVHYWlu
ID0gQXVkaW9QYXJhbTo6Y3JlYXRlKGNvbnRleHQsICJjb25lR2FpbiIsIDEuMCwgMC4wLCAxLjAp
OworCisgICAgbV9wb3NpdGlvbiA9IEZsb2F0UG9pbnQzRCgwLCAwLCAwKTsKKyAgICBtX29yaWVu
dGF0aW9uID0gRmxvYXRQb2ludDNEKDEsIDAsIDApOworICAgIG1fdmVsb2NpdHkgPSBGbG9hdFBv
aW50M0QoMCwgMCwgMCk7CisKKyAgICBpbml0aWFsaXplKCk7Cit9CisKK1dlYktpdEF1ZGlvUGFu
bmVyTm9kZTo6fldlYktpdEF1ZGlvUGFubmVyTm9kZSgpCit7CisgICAgdW5pbml0aWFsaXplKCk7
Cit9CisKK3ZvaWQgV2ViS2l0QXVkaW9QYW5uZXJOb2RlOjpwdWxsSW5wdXRzKHNpemVfdCBmcmFt
ZXNUb1Byb2Nlc3MpCit7CisgICAgLy8gV2Ugb3ZlcnJpZGUgcHVsbElucHV0cygpLCBzbyB3ZSBj
YW4gZGV0ZWN0IG5ldyBBdWRpb1NvdXJjZU5vZGVzIHdoaWNoIGhhdmUgY29ubmVjdGVkIHRvIHVz
IHdoZW4gbmV3IGNvbm5lY3Rpb25zIGFyZSBtYWRlLgorICAgIC8vIFRoZXNlIEF1ZGlvU291cmNl
Tm9kZXMgbmVlZCB0byBiZSBtYWRlIGF3YXJlIG9mIG91ciBleGlzdGVuY2UgaW4gb3JkZXIgdG8g
aGFuZGxlIGRvcHBsZXIgc2hpZnQgcGl0Y2ggY2hhbmdlcy4KKyAgICBpZiAobV9jb25uZWN0aW9u
Q291bnQgIT0gY29udGV4dCgpLmNvbm5lY3Rpb25Db3VudCgpKSB7CisgICAgICAgIG1fY29ubmVj
dGlvbkNvdW50ID0gY29udGV4dCgpLmNvbm5lY3Rpb25Db3VudCgpOworCisgICAgICAgIC8vIFJl
Y3Vyc2l2ZWx5IGdvIHRocm91Z2ggYWxsIG5vZGVzIGNvbm5lY3RlZCB0byB1cy4KKyAgICAgICAg
SGFzaFNldDxBdWRpb05vZGUqPiB2aXNpdGVkTm9kZXM7CisgICAgICAgIG5vdGlmeUF1ZGlvU291
cmNlc0Nvbm5lY3RlZFRvTm9kZSh0aGlzLCB2aXNpdGVkTm9kZXMpOworICAgIH0KKworICAgIEF1
ZGlvTm9kZTo6cHVsbElucHV0cyhmcmFtZXNUb1Byb2Nlc3MpOworfQorCit2b2lkIFdlYktpdEF1
ZGlvUGFubmVyTm9kZTo6cHJvY2VzcyhzaXplX3QgZnJhbWVzVG9Qcm9jZXNzKQoreworICAgIEF1
ZGlvQnVzKiBkZXN0aW5hdGlvbiA9IG91dHB1dCgwKS0+YnVzKCk7CisKKyAgICBpZiAoIWlzSW5p
dGlhbGl6ZWQoKSB8fCAhaW5wdXQoMCktPmlzQ29ubmVjdGVkKCkgfHwgIW1fcGFubmVyLmdldCgp
KSB7CisgICAgICAgIGRlc3RpbmF0aW9uLT56ZXJvKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9
CisKKyAgICBBdWRpb0J1cyogc291cmNlID0gaW5wdXQoMCktPmJ1cygpOworICAgIGlmICghc291
cmNlKSB7CisgICAgICAgIGRlc3RpbmF0aW9uLT56ZXJvKCk7CisgICAgICAgIHJldHVybjsKKyAg
ICB9CisKKyAgICAvLyBIUlRGRGF0YWJhc2Ugc2hvdWxkIGJlIGxvYWRlZCBiZWZvcmUgcHJvY2Vl
ZGluZyBmb3Igb2ZmbGluZSBhdWRpbyBjb250ZXh0IHdoZW4gcGFubmluZ01vZGVsKCkgaXMgIkhS
VEYiLgorICAgIGlmIChwYW5uaW5nTW9kZWwoKSA9PSBQYW5uaW5nTW9kZWxUeXBlOjpIUlRGICYm
ICFtX2hydGZEYXRhYmFzZUxvYWRlci0+aXNMb2FkZWQoKSkgeworICAgICAgICBpZiAoY29udGV4
dCgpLmlzT2ZmbGluZUNvbnRleHQoKSkKKyAgICAgICAgICAgIG1faHJ0ZkRhdGFiYXNlTG9hZGVy
LT53YWl0Rm9yTG9hZGVyVGhyZWFkQ29tcGxldGlvbigpOworICAgICAgICBlbHNlIHsKKyAgICAg
ICAgICAgIGRlc3RpbmF0aW9uLT56ZXJvKCk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAg
IH0KKyAgICB9CisKKyAgICAvLyBUaGUgYXVkaW8gdGhyZWFkIGNhbid0IGJsb2NrIG9uIHRoaXMg
bG9jaywgc28gd2UgdXNlIHN0ZDo6dHJ5X3RvX2xvY2sgaW5zdGVhZC4KKyAgICBzdGQ6OnVuaXF1
ZV9sb2NrPExvY2s+IGxvY2sobV9wYW5uZXJNdXRleCwgc3RkOjp0cnlfdG9fbG9jayk7CisgICAg
aWYgKCFsb2NrLm93bnNfbG9jaygpKSB7CisgICAgICAgIC8vIFRvbyBiYWQgLSBUaGUgdHJ5X2xv
Y2soKSBmYWlsZWQuIFdlIG11c3QgYmUgaW4gdGhlIG1pZGRsZSBvZiBjaGFuZ2luZyB0aGUgcGFu
bmVyLgorICAgICAgICBkZXN0aW5hdGlvbi0+emVybygpOworICAgICAgICByZXR1cm47CisgICAg
fQorCisgICAgLy8gQXBwbHkgdGhlIHBhbm5pbmcgZWZmZWN0LgorICAgIGRvdWJsZSBhemltdXRo
OworICAgIGRvdWJsZSBlbGV2YXRpb247CisgICAgZ2V0QXppbXV0aEVsZXZhdGlvbigmYXppbXV0
aCwgJmVsZXZhdGlvbik7CisgICAgbV9wYW5uZXItPnBhbihhemltdXRoLCBlbGV2YXRpb24sIHNv
dXJjZSwgZGVzdGluYXRpb24sIGZyYW1lc1RvUHJvY2Vzcyk7CisKKyAgICAvLyBHZXQgdGhlIGRp
c3RhbmNlIGFuZCBjb25lIGdhaW4uCisgICAgZG91YmxlIHRvdGFsR2FpbiA9IGRpc3RhbmNlQ29u
ZUdhaW4oKTsKKworICAgIC8vIFNuYXAgdG8gZGVzaXJlZCBnYWluIGF0IHRoZSBiZWdpbm5pbmcu
CisgICAgaWYgKG1fbGFzdEdhaW4gPT0gLTEuMCkKKyAgICAgICAgbV9sYXN0R2FpbiA9IHRvdGFs
R2FpbjsKKworICAgIC8vIEFwcGx5IGdhaW4gaW4tcGxhY2Ugd2l0aCBkZS16aXBwZXJpbmcuCisg
ICAgZGVzdGluYXRpb24tPmNvcHlXaXRoR2FpbkZyb20oKmRlc3RpbmF0aW9uLCAmbV9sYXN0R2Fp
biwgdG90YWxHYWluKTsKK30KKwordm9pZCBXZWJLaXRBdWRpb1Bhbm5lck5vZGU6OnJlc2V0KCkK
K3sKKyAgICBtX2xhc3RHYWluID0gLTEuMDsgLy8gZm9yY2UgdG8gc25hcCB0byBpbml0aWFsIGdh
aW4KKyAgICBpZiAobV9wYW5uZXIuZ2V0KCkpCisgICAgICAgIG1fcGFubmVyLT5yZXNldCgpOwor
fQorCit2b2lkIFdlYktpdEF1ZGlvUGFubmVyTm9kZTo6aW5pdGlhbGl6ZSgpCit7CisgICAgaWYg
KGlzSW5pdGlhbGl6ZWQoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9wYW5uZXIgPSBQYW5u
ZXI6OmNyZWF0ZShtX3Bhbm5pbmdNb2RlbCwgc2FtcGxlUmF0ZSgpLCBtX2hydGZEYXRhYmFzZUxv
YWRlci5nZXQoKSk7CisKKyAgICBBdWRpb05vZGU6OmluaXRpYWxpemUoKTsKK30KKwordm9pZCBX
ZWJLaXRBdWRpb1Bhbm5lck5vZGU6OnVuaW5pdGlhbGl6ZSgpCit7CisgICAgaWYgKCFpc0luaXRp
YWxpemVkKCkpCisgICAgICAgIHJldHVybjsKKworICAgIG1fcGFubmVyID0gbnVsbHB0cjsKKyAg
ICBBdWRpb05vZGU6OnVuaW5pdGlhbGl6ZSgpOworfQorCitBdWRpb0xpc3RlbmVyKiBXZWJLaXRB
dWRpb1Bhbm5lck5vZGU6Omxpc3RlbmVyKCkKK3sKKyAgICByZXR1cm4gY29udGV4dCgpLmxpc3Rl
bmVyKCk7Cit9CisKK3ZvaWQgV2ViS2l0QXVkaW9QYW5uZXJOb2RlOjpzZXRQYW5uaW5nTW9kZWwo
UGFubmluZ01vZGVsVHlwZSBtb2RlbCkKK3sKKyAgICBpZiAoIW1fcGFubmVyLmdldCgpIHx8IG1v
ZGVsICE9IG1fcGFubmluZ01vZGVsKSB7CisgICAgICAgIC8vIFRoaXMgc3luY2hyb25pemVzIHdp
dGggcHJvY2VzcygpLgorICAgICAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG1fcGFubmVyTXV0
ZXgpOworCisgICAgICAgIG1fcGFubmVyID0gUGFubmVyOjpjcmVhdGUobW9kZWwsIHNhbXBsZVJh
dGUoKSwgbV9ocnRmRGF0YWJhc2VMb2FkZXIuZ2V0KCkpOworICAgICAgICBtX3Bhbm5pbmdNb2Rl
bCA9IG1vZGVsOworICAgIH0KK30KKworRGlzdGFuY2VNb2RlbFR5cGUgV2ViS2l0QXVkaW9QYW5u
ZXJOb2RlOjpkaXN0YW5jZU1vZGVsKCkgY29uc3QKK3sKKyAgICByZXR1cm4gY29uc3RfY2FzdDxX
ZWJLaXRBdWRpb1Bhbm5lck5vZGUqPih0aGlzKS0+bV9kaXN0YW5jZUVmZmVjdC5tb2RlbCgpOwor
fQorCit2b2lkIFdlYktpdEF1ZGlvUGFubmVyTm9kZTo6c2V0RGlzdGFuY2VNb2RlbChEaXN0YW5j
ZU1vZGVsVHlwZSBtb2RlbCkKK3sKKyAgICBtX2Rpc3RhbmNlRWZmZWN0LnNldE1vZGVsKG1vZGVs
LCB0cnVlKTsKK30KKwordm9pZCBXZWJLaXRBdWRpb1Bhbm5lck5vZGU6OmdldEF6aW11dGhFbGV2
YXRpb24oZG91YmxlKiBvdXRBemltdXRoLCBkb3VibGUqIG91dEVsZXZhdGlvbikKK3sKKyAgICAv
LyBGSVhNRTogd2Ugc2hvdWxkIGNhY2hlIGF6aW11dGggYW5kIGVsZXZhdGlvbiAoaWYgcG9zc2li
bGUpLCBzbyB3ZSBvbmx5IHJlLWNhbGN1bGF0ZSBpZiBhIGNoYW5nZSBoYXMgYmVlbiBtYWRlLgor
CisgICAgZG91YmxlIGF6aW11dGggPSAwLjA7CisKKyAgICAvLyBDYWxjdWxhdGUgdGhlIHNvdXJj
ZS1saXN0ZW5lciB2ZWN0b3IKKyAgICBGbG9hdFBvaW50M0QgbGlzdGVuZXJQb3NpdGlvbiA9IGxp
c3RlbmVyKCktPnBvc2l0aW9uKCk7CisgICAgRmxvYXRQb2ludDNEIHNvdXJjZUxpc3RlbmVyID0g
cG9zaXRpb24oKSAtIGxpc3RlbmVyUG9zaXRpb247CisKKyAgICBpZiAoc291cmNlTGlzdGVuZXIu
aXNaZXJvKCkpIHsKKyAgICAgICAgLy8gZGVnZW5lcmF0ZSBjYXNlIGlmIHNvdXJjZSBhbmQgbGlz
dGVuZXIgYXJlIGF0IHRoZSBzYW1lIHBvaW50CisgICAgICAgICpvdXRBemltdXRoID0gMC4wOwor
ICAgICAgICAqb3V0RWxldmF0aW9uID0gMC4wOworICAgICAgICByZXR1cm47CisgICAgfQorCisg
ICAgc291cmNlTGlzdGVuZXIubm9ybWFsaXplKCk7CisKKyAgICAvLyBBbGlnbiBheGVzCisgICAg
RmxvYXRQb2ludDNEIGxpc3RlbmVyRnJvbnQgPSBsaXN0ZW5lcigpLT5vcmllbnRhdGlvbigpOwor
ICAgIEZsb2F0UG9pbnQzRCBsaXN0ZW5lclVwID0gbGlzdGVuZXIoKS0+dXBWZWN0b3IoKTsKKyAg
ICBGbG9hdFBvaW50M0QgbGlzdGVuZXJSaWdodCA9IGxpc3RlbmVyRnJvbnQuY3Jvc3MobGlzdGVu
ZXJVcCk7CisgICAgbGlzdGVuZXJSaWdodC5ub3JtYWxpemUoKTsKKworICAgIEZsb2F0UG9pbnQz
RCBsaXN0ZW5lckZyb250Tm9ybSA9IGxpc3RlbmVyRnJvbnQ7CisgICAgbGlzdGVuZXJGcm9udE5v
cm0ubm9ybWFsaXplKCk7CisKKyAgICBGbG9hdFBvaW50M0QgdXAgPSBsaXN0ZW5lclJpZ2h0LmNy
b3NzKGxpc3RlbmVyRnJvbnROb3JtKTsKKworICAgIGZsb2F0IHVwUHJvamVjdGlvbiA9IHNvdXJj
ZUxpc3RlbmVyLmRvdCh1cCk7CisKKyAgICBGbG9hdFBvaW50M0QgcHJvamVjdGVkU291cmNlID0g
c291cmNlTGlzdGVuZXIgLSB1cFByb2plY3Rpb24gKiB1cDsKKyAgICBwcm9qZWN0ZWRTb3VyY2Uu
bm9ybWFsaXplKCk7CisKKyAgICBhemltdXRoID0gMTgwLjAgKiBhY29zKHByb2plY3RlZFNvdXJj
ZS5kb3QobGlzdGVuZXJSaWdodCkpIC8gcGlEb3VibGU7CisgICAgZml4TkFOcyhhemltdXRoKTsg
Ly8gYXZvaWQgaWxsZWdhbCB2YWx1ZXMKKworICAgIC8vIFNvdXJjZSAgaW4gZnJvbnQgb3IgYmVo
aW5kIHRoZSBsaXN0ZW5lcgorICAgIGRvdWJsZSBmcm9udEJhY2sgPSBwcm9qZWN0ZWRTb3VyY2Uu
ZG90KGxpc3RlbmVyRnJvbnROb3JtKTsKKyAgICBpZiAoZnJvbnRCYWNrIDwgMC4wKQorICAgICAg
ICBhemltdXRoID0gMzYwLjAgLSBhemltdXRoOworCisgICAgLy8gTWFrZSBhemltdXRoIHJlbGF0
aXZlIHRvICJmcm9udCIgYW5kIG5vdCAicmlnaHQiIGxpc3RlbmVyIHZlY3RvcgorICAgIGlmICgo
YXppbXV0aCA+PSAwLjApICYmIChhemltdXRoIDw9IDI3MC4wKSkKKyAgICAgICAgYXppbXV0aCA9
IDkwLjAgLSBhemltdXRoOworICAgIGVsc2UKKyAgICAgICAgYXppbXV0aCA9IDQ1MC4wIC0gYXpp
bXV0aDsKKworICAgIC8vIEVsZXZhdGlvbgorICAgIGRvdWJsZSBlbGV2YXRpb24gPSA5MC4wIC0g
MTgwLjAgKiBhY29zKHNvdXJjZUxpc3RlbmVyLmRvdCh1cCkpIC8gcGlEb3VibGU7CisgICAgZml4
TkFOcyhlbGV2YXRpb24pOyAvLyBhdm9pZCBpbGxlZ2FsIHZhbHVlcworCisgICAgaWYgKGVsZXZh
dGlvbiA+IDkwLjApCisgICAgICAgIGVsZXZhdGlvbiA9IDE4MC4wIC0gZWxldmF0aW9uOworICAg
IGVsc2UgaWYgKGVsZXZhdGlvbiA8IC05MC4wKQorICAgICAgICBlbGV2YXRpb24gPSAtMTgwLjAg
LSBlbGV2YXRpb247CisKKyAgICBpZiAob3V0QXppbXV0aCkKKyAgICAgICAgKm91dEF6aW11dGgg
PSBhemltdXRoOworICAgIGlmIChvdXRFbGV2YXRpb24pCisgICAgICAgICpvdXRFbGV2YXRpb24g
PSBlbGV2YXRpb247Cit9CisKK2Zsb2F0IFdlYktpdEF1ZGlvUGFubmVyTm9kZTo6ZG9wcGxlclJh
dGUoKQoreworICAgIGRvdWJsZSBkb3BwbGVyU2hpZnQgPSAxLjA7CisKKyAgICAvLyBGSVhNRTog
b3B0aW1pemUgZm9yIGNhc2Ugd2hlbiBuZWl0aGVyIHNvdXJjZSBub3IgbGlzdGVuZXIgaGFzIGNo
YW5nZWQuLi4KKyAgICBkb3VibGUgZG9wcGxlckZhY3RvciA9IGxpc3RlbmVyKCktPmRvcHBsZXJG
YWN0b3IoKTsKKworICAgIGlmIChkb3BwbGVyRmFjdG9yID4gMC4wKSB7CisgICAgICAgIGRvdWJs
ZSBzcGVlZE9mU291bmQgPSBsaXN0ZW5lcigpLT5zcGVlZE9mU291bmQoKTsKKworICAgICAgICBj
b25zdCBGbG9hdFBvaW50M0QgJnNvdXJjZVZlbG9jaXR5ID0gbV92ZWxvY2l0eTsKKyAgICAgICAg
Y29uc3QgRmxvYXRQb2ludDNEICZsaXN0ZW5lclZlbG9jaXR5ID0gbGlzdGVuZXIoKS0+dmVsb2Np
dHkoKTsKKworICAgICAgICAvLyBEb24ndCBib3RoZXIgaWYgYm90aCBzb3VyY2UgYW5kIGxpc3Rl
bmVyIGhhdmUgbm8gdmVsb2NpdHkKKyAgICAgICAgYm9vbCBzb3VyY2VIYXNWZWxvY2l0eSA9ICFz
b3VyY2VWZWxvY2l0eS5pc1plcm8oKTsKKyAgICAgICAgYm9vbCBsaXN0ZW5lckhhc1ZlbG9jaXR5
ID0gIWxpc3RlbmVyVmVsb2NpdHkuaXNaZXJvKCk7CisKKyAgICAgICAgaWYgKHNvdXJjZUhhc1Zl
bG9jaXR5IHx8IGxpc3RlbmVySGFzVmVsb2NpdHkpIHsKKyAgICAgICAgICAgIC8vIENhbGN1bGF0
ZSB0aGUgc291cmNlIHRvIGxpc3RlbmVyIHZlY3RvcgorICAgICAgICAgICAgRmxvYXRQb2ludDNE
IGxpc3RlbmVyUG9zaXRpb24gPSBsaXN0ZW5lcigpLT5wb3NpdGlvbigpOworICAgICAgICAgICAg
RmxvYXRQb2ludDNEIHNvdXJjZVRvTGlzdGVuZXIgPSBwb3NpdGlvbigpIC0gbGlzdGVuZXJQb3Np
dGlvbjsKKworICAgICAgICAgICAgZG91YmxlIHNvdXJjZUxpc3RlbmVyTWFnbml0dWRlID0gc291
cmNlVG9MaXN0ZW5lci5sZW5ndGgoKTsKKworICAgICAgICAgICAgZG91YmxlIGxpc3RlbmVyUHJv
amVjdGlvbiA9IHNvdXJjZVRvTGlzdGVuZXIuZG90KGxpc3RlbmVyVmVsb2NpdHkpIC8gc291cmNl
TGlzdGVuZXJNYWduaXR1ZGU7CisgICAgICAgICAgICBkb3VibGUgc291cmNlUHJvamVjdGlvbiA9
IHNvdXJjZVRvTGlzdGVuZXIuZG90KHNvdXJjZVZlbG9jaXR5KSAvIHNvdXJjZUxpc3RlbmVyTWFn
bml0dWRlOworCisgICAgICAgICAgICBsaXN0ZW5lclByb2plY3Rpb24gPSAtbGlzdGVuZXJQcm9q
ZWN0aW9uOworICAgICAgICAgICAgc291cmNlUHJvamVjdGlvbiA9IC1zb3VyY2VQcm9qZWN0aW9u
OworCisgICAgICAgICAgICBkb3VibGUgc2NhbGVkU3BlZWRPZlNvdW5kID0gc3BlZWRPZlNvdW5k
IC8gZG9wcGxlckZhY3RvcjsKKyAgICAgICAgICAgIGxpc3RlbmVyUHJvamVjdGlvbiA9IHN0ZDo6
bWluKGxpc3RlbmVyUHJvamVjdGlvbiwgc2NhbGVkU3BlZWRPZlNvdW5kKTsKKyAgICAgICAgICAg
IHNvdXJjZVByb2plY3Rpb24gPSBzdGQ6Om1pbihzb3VyY2VQcm9qZWN0aW9uLCBzY2FsZWRTcGVl
ZE9mU291bmQpOworCisgICAgICAgICAgICBkb3BwbGVyU2hpZnQgPSAoKHNwZWVkT2ZTb3VuZCAt
IGRvcHBsZXJGYWN0b3IgKiBsaXN0ZW5lclByb2plY3Rpb24pIC8gKHNwZWVkT2ZTb3VuZCAtIGRv
cHBsZXJGYWN0b3IgKiBzb3VyY2VQcm9qZWN0aW9uKSk7CisgICAgICAgICAgICBmaXhOQU5zKGRv
cHBsZXJTaGlmdCk7IC8vIGF2b2lkIGlsbGVnYWwgdmFsdWVzCisKKyAgICAgICAgICAgIC8vIExp
bWl0IHRoZSBwaXRjaCBzaGlmdGluZyB0byA0IG9jdGF2ZXMgdXAgYW5kIDMgb2N0YXZlcyBkb3du
LgorICAgICAgICAgICAgaWYgKGRvcHBsZXJTaGlmdCA+IDE2LjApCisgICAgICAgICAgICAgICAg
ZG9wcGxlclNoaWZ0ID0gMTYuMDsKKyAgICAgICAgICAgIGVsc2UgaWYgKGRvcHBsZXJTaGlmdCA8
IDAuMTI1KQorICAgICAgICAgICAgICAgIGRvcHBsZXJTaGlmdCA9IDAuMTI1OworICAgICAgICB9
CisgICAgfQorCisgICAgcmV0dXJuIHN0YXRpY19jYXN0PGZsb2F0Pihkb3BwbGVyU2hpZnQpOwor
fQorCitmbG9hdCBXZWJLaXRBdWRpb1Bhbm5lck5vZGU6OmRpc3RhbmNlQ29uZUdhaW4oKQorewor
ICAgIEZsb2F0UG9pbnQzRCBsaXN0ZW5lclBvc2l0aW9uID0gbGlzdGVuZXIoKS0+cG9zaXRpb24o
KTsKKyAgICBGbG9hdFBvaW50M0Qgc291cmNlUG9zaXRpb24gPSBwb3NpdGlvbigpOworCisgICAg
ZG91YmxlIGxpc3RlbmVyRGlzdGFuY2UgPSBzb3VyY2VQb3NpdGlvbi5kaXN0YW5jZVRvKGxpc3Rl
bmVyUG9zaXRpb24pOworICAgIGRvdWJsZSBkaXN0YW5jZUdhaW4gPSBtX2Rpc3RhbmNlRWZmZWN0
LmdhaW4obGlzdGVuZXJEaXN0YW5jZSk7CisKKyAgICBtX2Rpc3RhbmNlR2Fpbi0+c2V0VmFsdWUo
c3RhdGljX2Nhc3Q8ZmxvYXQ+KGRpc3RhbmNlR2FpbikpOworCisgICAgLy8gRklYTUU6IGNvdWxk
IG9wdGltaXplIGJ5IGNhY2hpbmcgY29uZUdhaW4KKyAgICBkb3VibGUgY29uZUdhaW4gPSBtX2Nv
bmVFZmZlY3QuZ2Fpbihzb3VyY2VQb3NpdGlvbiwgbV9vcmllbnRhdGlvbiwgbGlzdGVuZXJQb3Np
dGlvbik7CisKKyAgICBtX2NvbmVHYWluLT5zZXRWYWx1ZShzdGF0aWNfY2FzdDxmbG9hdD4oY29u
ZUdhaW4pKTsKKworICAgIHJldHVybiBmbG9hdChkaXN0YW5jZUdhaW4gKiBjb25lR2Fpbik7Cit9
CisKK3ZvaWQgV2ViS2l0QXVkaW9QYW5uZXJOb2RlOjpub3RpZnlBdWRpb1NvdXJjZXNDb25uZWN0
ZWRUb05vZGUoQXVkaW9Ob2RlKiBub2RlLCBIYXNoU2V0PEF1ZGlvTm9kZSo+JiB2aXNpdGVkTm9k
ZXMpCit7CisgICAgQVNTRVJUKG5vZGUpOworICAgIGlmICghbm9kZSkKKyAgICAgICAgcmV0dXJu
OworCisgICAgLy8gRmlyc3QgY2hlY2sgaWYgdGhpcyBub2RlIGlzIGFuIEF1ZGlvQnVmZmVyU291
cmNlTm9kZS4gSWYgc28sIGxldCBpdCBrbm93IGFib3V0IHVzIHNvIHRoYXQgZG9wcGxlciBzaGlm
dCBwaXRjaCBjYW4gYmUgdGFrZW4gaW50byBhY2NvdW50LgorICAgIGlmIChub2RlLT5ub2RlVHlw
ZSgpID09IE5vZGVUeXBlQXVkaW9CdWZmZXJTb3VyY2UpIHsKKyAgICAgICAgQXVkaW9CdWZmZXJT
b3VyY2VOb2RlKiBidWZmZXJTb3VyY2VOb2RlID0gcmVpbnRlcnByZXRfY2FzdDxBdWRpb0J1ZmZl
clNvdXJjZU5vZGUqPihub2RlKTsKKyAgICAgICAgYnVmZmVyU291cmNlTm9kZS0+c2V0UGFubmVy
Tm9kZSh0aGlzKTsKKyAgICB9IGVsc2UgeworICAgICAgICAvLyBHbyB0aHJvdWdoIGFsbCBpbnB1
dHMgdG8gdGhpcyBub2RlLgorICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbm9kZS0+
bnVtYmVyT2ZJbnB1dHMoKTsgKytpKSB7CisgICAgICAgICAgICBBdWRpb05vZGVJbnB1dCogaW5w
dXQgPSBub2RlLT5pbnB1dChpKTsKKworICAgICAgICAgICAgLy8gRm9yIGVhY2ggaW5wdXQsIGdv
IHRocm91Z2ggYWxsIG9mIGl0cyBjb25uZWN0aW9ucywgbG9va2luZyBmb3IgQXVkaW9CdWZmZXJT
b3VyY2VOb2Rlcy4KKyAgICAgICAgICAgIGZvciAodW5zaWduZWQgaiA9IDA7IGogPCBpbnB1dC0+
bnVtYmVyT2ZSZW5kZXJpbmdDb25uZWN0aW9ucygpOyArK2opIHsKKyAgICAgICAgICAgICAgICBB
dWRpb05vZGVPdXRwdXQqIGNvbm5lY3RlZE91dHB1dCA9IGlucHV0LT5yZW5kZXJpbmdPdXRwdXQo
aik7CisgICAgICAgICAgICAgICAgQXVkaW9Ob2RlKiBjb25uZWN0ZWROb2RlID0gY29ubmVjdGVk
T3V0cHV0LT5ub2RlKCk7CisgICAgICAgICAgICAgICAgaWYgKHZpc2l0ZWROb2Rlcy5jb250YWlu
cyhjb25uZWN0ZWROb2RlKSkKKyAgICAgICAgICAgICAgICAgICAgY29udGludWU7CisKKyAgICAg
ICAgICAgICAgICB2aXNpdGVkTm9kZXMuYWRkKGNvbm5lY3RlZE5vZGUpOworICAgICAgICAgICAg
ICAgIG5vdGlmeUF1ZGlvU291cmNlc0Nvbm5lY3RlZFRvTm9kZShjb25uZWN0ZWROb2RlLCB2aXNp
dGVkTm9kZXMpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorfQorCit9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoV0VCX0FVRElPKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9XZWJLaXRBdWRpb1Bhbm5lck5vZGUu
aCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vV2ViS2l0QXVkaW9QYW5uZXJOb2Rl
LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uODk3OTdjM2M0YzUwYjM2ODkyMDU4MDZjMTk3ZjEwYmQ5YzU2NzZiZQot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vV2ViS2l0
QXVkaW9QYW5uZXJOb2RlLmgKQEAgLTAsMCArMSwxNjAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTAsIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9T
RSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRT
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAq
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTgorICogQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTCisgKiBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21h
IG9uY2UKKworI2lmIEVOQUJMRShXRUJfQVVESU8pCisKKyNpbmNsdWRlICJBdWRpb0xpc3RlbmVy
LmgiCisjaW5jbHVkZSAiQXVkaW9Ob2RlLmgiCisjaW5jbHVkZSAiQXVkaW9QYXJhbS5oIgorI2lu
Y2x1ZGUgIkNvbmUuaCIKKyNpbmNsdWRlICJEaXN0YW5jZS5oIgorI2luY2x1ZGUgIkZsb2F0UG9p
bnQzRC5oIgorI2luY2x1ZGUgIlBhbm5lci5oIgorI2luY2x1ZGUgIlBhbm5lck5vZGUuaCIKKyNp
bmNsdWRlICJXZWJLaXRBdWRpb0NvbnRleHQuaCIKKyNpbmNsdWRlIDxtZW1vcnk+CisjaW5jbHVk
ZSA8d3RmL0hhc2hTZXQuaD4KKyNpbmNsdWRlIDx3dGYvTG9jay5oPgorCituYW1lc3BhY2UgV2Vi
Q29yZSB7CisKK2NsYXNzIEhSVEZEYXRhYmFzZUxvYWRlcjsKKworLy8gUGFubmVyTm9kZSBpcyBh
biBBdWRpb05vZGUgd2l0aCBvbmUgaW5wdXQgYW5kIG9uZSBvdXRwdXQuCisvLyBJdCBwb3NpdGlv
bnMgYSBzb3VuZCBpbiAzRCBzcGFjZSwgd2l0aCB0aGUgZXhhY3QgZWZmZWN0IGRlcGVuZGVudCBv
biB0aGUgcGFubmluZyBtb2RlbC4KKy8vIEl0IGhhcyBhIHBvc2l0aW9uIGFuZCBhbiBvcmllbnRh
dGlvbiBpbiAzRCBzcGFjZSB3aGljaCBpcyByZWxhdGl2ZSB0byB0aGUgcG9zaXRpb24gYW5kIG9y
aWVudGF0aW9uIG9mIHRoZSBjb250ZXh0J3MgQXVkaW9MaXN0ZW5lci4KKy8vIEEgZGlzdGFuY2Ug
ZWZmZWN0IHdpbGwgYXR0ZW51YXRlIHRoZSBnYWluIGFzIHRoZSBwb3NpdGlvbiBtb3ZlcyBhd2F5
IGZyb20gdGhlIGxpc3RlbmVyLgorLy8gQSBjb25lIGVmZmVjdCB3aWxsIGF0dGVudWF0ZSB0aGUg
Z2FpbiBhcyB0aGUgb3JpZW50YXRpb24gbW92ZXMgYXdheSBmcm9tIHRoZSBsaXN0ZW5lci4KKy8v
IEFsbCBvZiB0aGVzZSBlZmZlY3RzIGZvbGxvdyB0aGUgT3BlbkFMIHNwZWNpZmljYXRpb24gdmVy
eSBjbG9zZWx5LgorCitjbGFzcyBXZWJLaXRBdWRpb1Bhbm5lck5vZGUgZmluYWwgOiBwdWJsaWMg
UGFubmVyTm9kZUJhc2UgeworICAgIFdURl9NQUtFX0lTT19BTExPQ0FURUQoV2ViS2l0QXVkaW9Q
YW5uZXJOb2RlKTsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUmVmPFdlYktpdEF1ZGlvUGFubmVyTm9k
ZT4gY3JlYXRlKFdlYktpdEF1ZGlvQ29udGV4dCYgY29udGV4dCwgZmxvYXQgc2FtcGxlUmF0ZSkK
KyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFdlYktpdEF1ZGlvUGFubmVyTm9k
ZShjb250ZXh0LCBzYW1wbGVSYXRlKSk7CisgICAgfQorCisgICAgdmlydHVhbCB+V2ViS2l0QXVk
aW9QYW5uZXJOb2RlKCk7CisKKyAgICBXZWJLaXRBdWRpb0NvbnRleHQmIGNvbnRleHQoKSB7IHJl
dHVybiBkb3duY2FzdDxXZWJLaXRBdWRpb0NvbnRleHQ+KEF1ZGlvTm9kZTo6Y29udGV4dCgpKTsg
fQorICAgIGNvbnN0IFdlYktpdEF1ZGlvQ29udGV4dCYgY29udGV4dCgpIGNvbnN0IHsgcmV0dXJu
IGRvd25jYXN0PFdlYktpdEF1ZGlvQ29udGV4dD4oQXVkaW9Ob2RlOjpjb250ZXh0KCkpOyB9CisK
KyAgICAvLyBBdWRpb05vZGUKKyAgICB2b2lkIHByb2Nlc3Moc2l6ZV90IGZyYW1lc1RvUHJvY2Vz
cykgb3ZlcnJpZGU7CisgICAgdm9pZCBwdWxsSW5wdXRzKHNpemVfdCBmcmFtZXNUb1Byb2Nlc3Mp
IG92ZXJyaWRlOworICAgIHZvaWQgcmVzZXQoKSBvdmVycmlkZTsKKyAgICB2b2lkIGluaXRpYWxp
emUoKSBvdmVycmlkZTsKKyAgICB2b2lkIHVuaW5pdGlhbGl6ZSgpIG92ZXJyaWRlOworCisgICAg
Ly8gTGlzdGVuZXIKKyAgICBBdWRpb0xpc3RlbmVyKiBsaXN0ZW5lcigpOworCisgICAgLy8gUGFu
bmluZyBtb2RlbAorICAgIFBhbm5pbmdNb2RlbFR5cGUgcGFubmluZ01vZGVsKCkgY29uc3QgeyBy
ZXR1cm4gbV9wYW5uaW5nTW9kZWw7IH0KKyAgICB2b2lkIHNldFBhbm5pbmdNb2RlbChQYW5uaW5n
TW9kZWxUeXBlKTsKKworICAgIC8vIFBvc2l0aW9uCisgICAgRmxvYXRQb2ludDNEIHBvc2l0aW9u
KCkgY29uc3QgeyByZXR1cm4gbV9wb3NpdGlvbjsgfQorICAgIHZvaWQgc2V0UG9zaXRpb24oZmxv
YXQgeCwgZmxvYXQgeSwgZmxvYXQgeikgeyBtX3Bvc2l0aW9uID0gRmxvYXRQb2ludDNEKHgsIHks
IHopOyB9CisKKyAgICAvLyBPcmllbnRhdGlvbgorICAgIEZsb2F0UG9pbnQzRCBvcmllbnRhdGlv
bigpIGNvbnN0IHsgcmV0dXJuIG1fb3JpZW50YXRpb247IH0KKyAgICB2b2lkIHNldE9yaWVudGF0
aW9uKGZsb2F0IHgsIGZsb2F0IHksIGZsb2F0IHopIHsgbV9vcmllbnRhdGlvbiA9IEZsb2F0UG9p
bnQzRCh4LCB5LCB6KTsgfQorCisgICAgLy8gVmVsb2NpdHkKKyAgICBGbG9hdFBvaW50M0QgdmVs
b2NpdHkoKSBjb25zdCB7IHJldHVybiBtX3ZlbG9jaXR5OyB9CisgICAgdm9pZCBzZXRWZWxvY2l0
eShmbG9hdCB4LCBmbG9hdCB5LCBmbG9hdCB6KSB7IG1fdmVsb2NpdHkgPSBGbG9hdFBvaW50M0Qo
eCwgeSwgeik7IH0KKworICAgIC8vIERpc3RhbmNlIHBhcmFtZXRlcnMKKyAgICBEaXN0YW5jZU1v
ZGVsVHlwZSBkaXN0YW5jZU1vZGVsKCkgY29uc3Q7CisgICAgdm9pZCBzZXREaXN0YW5jZU1vZGVs
KERpc3RhbmNlTW9kZWxUeXBlKTsKKworICAgIGRvdWJsZSByZWZEaXN0YW5jZSgpIHsgcmV0dXJu
IG1fZGlzdGFuY2VFZmZlY3QucmVmRGlzdGFuY2UoKTsgfQorICAgIHZvaWQgc2V0UmVmRGlzdGFu
Y2UoZG91YmxlIHJlZkRpc3RhbmNlKSB7IG1fZGlzdGFuY2VFZmZlY3Quc2V0UmVmRGlzdGFuY2Uo
cmVmRGlzdGFuY2UpOyB9CisKKyAgICBkb3VibGUgbWF4RGlzdGFuY2UoKSB7IHJldHVybiBtX2Rp
c3RhbmNlRWZmZWN0Lm1heERpc3RhbmNlKCk7IH0KKyAgICB2b2lkIHNldE1heERpc3RhbmNlKGRv
dWJsZSBtYXhEaXN0YW5jZSkgeyBtX2Rpc3RhbmNlRWZmZWN0LnNldE1heERpc3RhbmNlKG1heERp
c3RhbmNlKTsgfQorCisgICAgZG91YmxlIHJvbGxvZmZGYWN0b3IoKSB7IHJldHVybiBtX2Rpc3Rh
bmNlRWZmZWN0LnJvbGxvZmZGYWN0b3IoKTsgfQorICAgIHZvaWQgc2V0Um9sbG9mZkZhY3Rvcihk
b3VibGUgcm9sbG9mZkZhY3RvcikgeyBtX2Rpc3RhbmNlRWZmZWN0LnNldFJvbGxvZmZGYWN0b3Io
cm9sbG9mZkZhY3Rvcik7IH0KKworICAgIC8vIFNvdW5kIGNvbmVzIC0gYW5nbGVzIGluIGRlZ3Jl
ZXMKKyAgICBkb3VibGUgY29uZUlubmVyQW5nbGUoKSBjb25zdCB7IHJldHVybiBtX2NvbmVFZmZl
Y3QuaW5uZXJBbmdsZSgpOyB9CisgICAgdm9pZCBzZXRDb25lSW5uZXJBbmdsZShkb3VibGUgYW5n
bGUpIHsgbV9jb25lRWZmZWN0LnNldElubmVyQW5nbGUoYW5nbGUpOyB9CisKKyAgICBkb3VibGUg
Y29uZU91dGVyQW5nbGUoKSBjb25zdCB7IHJldHVybiBtX2NvbmVFZmZlY3Qub3V0ZXJBbmdsZSgp
OyB9CisgICAgdm9pZCBzZXRDb25lT3V0ZXJBbmdsZShkb3VibGUgYW5nbGUpIHsgbV9jb25lRWZm
ZWN0LnNldE91dGVyQW5nbGUoYW5nbGUpOyB9CisKKyAgICBkb3VibGUgY29uZU91dGVyR2Fpbigp
IGNvbnN0IHsgcmV0dXJuIG1fY29uZUVmZmVjdC5vdXRlckdhaW4oKTsgfQorICAgIHZvaWQgc2V0
Q29uZU91dGVyR2Fpbihkb3VibGUgYW5nbGUpIHsgbV9jb25lRWZmZWN0LnNldE91dGVyR2Fpbihh
bmdsZSk7IH0KKworICAgIHZvaWQgZ2V0QXppbXV0aEVsZXZhdGlvbihkb3VibGUqIG91dEF6aW11
dGgsIGRvdWJsZSogb3V0RWxldmF0aW9uKTsKKyAgICBmbG9hdCBkb3BwbGVyUmF0ZSgpIGZpbmFs
OworCisgICAgLy8gQWNjZXNzb3JzIGZvciBkeW5hbWljYWxseSBjYWxjdWxhdGVkIGdhaW4gdmFs
dWVzLgorICAgIEF1ZGlvUGFyYW0qIGRpc3RhbmNlR2FpbigpIHsgcmV0dXJuIG1fZGlzdGFuY2VH
YWluLmdldCgpOyB9CisgICAgQXVkaW9QYXJhbSogY29uZUdhaW4oKSB7IHJldHVybiBtX2NvbmVH
YWluLmdldCgpOyB9CisKKyAgICBkb3VibGUgdGFpbFRpbWUoKSBjb25zdCBvdmVycmlkZSB7IHJl
dHVybiBtX3Bhbm5lciA/IG1fcGFubmVyLT50YWlsVGltZSgpIDogMDsgfQorICAgIGRvdWJsZSBs
YXRlbmN5VGltZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fcGFubmVyID8gbV9wYW5uZXIt
PmxhdGVuY3lUaW1lKCkgOiAwOyB9CisKK3ByaXZhdGU6CisgICAgV2ViS2l0QXVkaW9QYW5uZXJO
b2RlKFdlYktpdEF1ZGlvQ29udGV4dCYsIGZsb2F0IHNhbXBsZVJhdGUpOworCisgICAgLy8gUmV0
dXJucyB0aGUgY29tYmluZWQgZGlzdGFuY2UgYW5kIGNvbmUgZ2FpbiBhdHRlbnVhdGlvbi4KKyAg
ICBmbG9hdCBkaXN0YW5jZUNvbmVHYWluKCk7CisKKyAgICAvLyBOb3RpZmllcyBhbnkgQXVkaW9C
dWZmZXJTb3VyY2VOb2RlcyBjb25uZWN0ZWQgdG8gdXMgZWl0aGVyIGRpcmVjdGx5IG9yIGluZGly
ZWN0bHkgYWJvdXQgb3VyIGV4aXN0ZW5jZS4KKyAgICAvLyBUaGlzIGlzIGluIG9yZGVyIHRvIGhh
bmRsZSB0aGUgcGl0Y2ggY2hhbmdlIG5lY2Vzc2FyeSBmb3IgdGhlIGRvcHBsZXIgc2hpZnQuCisg
ICAgdm9pZCBub3RpZnlBdWRpb1NvdXJjZXNDb25uZWN0ZWRUb05vZGUoQXVkaW9Ob2RlKiwgSGFz
aFNldDxBdWRpb05vZGUqPiYgdmlzaXRlZE5vZGVzKTsKKworICAgIHN0ZDo6dW5pcXVlX3B0cjxQ
YW5uZXI+IG1fcGFubmVyOworICAgIFBhbm5pbmdNb2RlbFR5cGUgbV9wYW5uaW5nTW9kZWw7CisK
KyAgICBGbG9hdFBvaW50M0QgbV9wb3NpdGlvbjsKKyAgICBGbG9hdFBvaW50M0QgbV9vcmllbnRh
dGlvbjsKKyAgICBGbG9hdFBvaW50M0QgbV92ZWxvY2l0eTsKKworICAgIC8vIEdhaW4KKyAgICBS
ZWZQdHI8QXVkaW9QYXJhbT4gbV9kaXN0YW5jZUdhaW47CisgICAgUmVmUHRyPEF1ZGlvUGFyYW0+
IG1fY29uZUdhaW47CisgICAgRGlzdGFuY2VFZmZlY3QgbV9kaXN0YW5jZUVmZmVjdDsKKyAgICBD
b25lRWZmZWN0IG1fY29uZUVmZmVjdDsKKyAgICBmbG9hdCBtX2xhc3RHYWluOworCisgICAgLy8g
SFJURiBEYXRhYmFzZSBsb2FkZXIKKyAgICBSZWZQdHI8SFJURkRhdGFiYXNlTG9hZGVyPiBtX2hy
dGZEYXRhYmFzZUxvYWRlcjsKKworICAgIHVuc2lnbmVkIG1fY29ubmVjdGlvbkNvdW50OworCisg
ICAgLy8gU3luY2hyb25pemUgcHJvY2VzcygpIGFuZCBzZXRQYW5uaW5nTW9kZWwoKSB3aGljaCBj
YW4gY2hhbmdlIHRoZSBwYW5uZXIuCisgICAgbXV0YWJsZSBMb2NrIG1fcGFubmVyTXV0ZXg7Cit9
OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9XZWJLaXRBdWRpb1Bhbm5lck5vZGUuaWRsIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9XZWJLaXRBdWRpb1Bhbm5lck5vZGUuaWRsCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjg4ZDI2OTEwYWUxNzUwNDIxMzZhNWU2MmZhYzgxM2NjNWZjMzY3MmYKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1dlYktpdEF1ZGlv
UGFubmVyTm9kZS5pZGwKQEAgLTAsMCArMSw0OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
MCwgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFS
RQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OCisgKiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKKyAqIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKK1sKKyAgICBDb25k
aXRpb25hbD1XRUJfQVVESU8sCisgICAgSlNHZW5lcmF0ZVRvSlNPYmplY3QsCisgICAgSW50ZXJm
YWNlTmFtZT13ZWJraXRBdWRpb1Bhbm5lck5vZGUsCitdIGludGVyZmFjZSBXZWJLaXRBdWRpb1Bh
bm5lck5vZGUgOiBBdWRpb05vZGUgeworICAgIC8vIERlZmF1bHQgbW9kZWwgZm9yIHN0ZXJlbyBp
cyBIUlRGCisgICAgYXR0cmlidXRlIFBhbm5pbmdNb2RlbFR5cGUgcGFubmluZ01vZGVsOworCisg
ICAgLy8gVXNlcyBhIDNEIGNhcnRlc2lhbiBjb29yZGluYXRlIHN5c3RlbQorICAgIHZvaWQgc2V0
UG9zaXRpb24odW5yZXN0cmljdGVkIGZsb2F0IHgsIHVucmVzdHJpY3RlZCBmbG9hdCB5LCB1bnJl
c3RyaWN0ZWQgZmxvYXQgeik7CisgICAgdm9pZCBzZXRPcmllbnRhdGlvbih1bnJlc3RyaWN0ZWQg
ZmxvYXQgeCwgdW5yZXN0cmljdGVkIGZsb2F0IHksIHVucmVzdHJpY3RlZCBmbG9hdCB6KTsKKyAg
ICB2b2lkIHNldFZlbG9jaXR5KHVucmVzdHJpY3RlZCBmbG9hdCB4LCB1bnJlc3RyaWN0ZWQgZmxv
YXQgeSwgdW5yZXN0cmljdGVkIGZsb2F0IHopOworCisgICAgLy8gRGlzdGFuY2UgbW9kZWwKKyAg
ICBhdHRyaWJ1dGUgRGlzdGFuY2VNb2RlbFR5cGUgZGlzdGFuY2VNb2RlbDsKKworICAgIGF0dHJp
YnV0ZSB1bnJlc3RyaWN0ZWQgZG91YmxlIHJlZkRpc3RhbmNlOworICAgIGF0dHJpYnV0ZSB1bnJl
c3RyaWN0ZWQgZG91YmxlIG1heERpc3RhbmNlOworICAgIGF0dHJpYnV0ZSB1bnJlc3RyaWN0ZWQg
ZG91YmxlIHJvbGxvZmZGYWN0b3I7CisKKyAgICAvLyBEaXJlY3Rpb25hbCBzb3VuZCBjb25lCisg
ICAgYXR0cmlidXRlIHVucmVzdHJpY3RlZCBkb3VibGUgY29uZUlubmVyQW5nbGU7CisgICAgYXR0
cmlidXRlIHVucmVzdHJpY3RlZCBkb3VibGUgY29uZU91dGVyQW5nbGU7CisgICAgYXR0cmlidXRl
IHVucmVzdHJpY3RlZCBkb3VibGUgY29uZU91dGVyR2FpbjsKK307CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1dlYktpdE9mZmxpbmVBdWRpb0NvbnRleHQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9XZWJLaXRPZmZsaW5lQXVkaW9Db250
ZXh0LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi5kOGUzOTlhMTRhM2Q1ZDMxNjc1YmE5YTA2ZjgxNDAzMTIzNTJi
NGExCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9X
ZWJLaXRPZmZsaW5lQXVkaW9Db250ZXh0LmNwcApAQCAtMCwwICsxLDYyIEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDEyLCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisg
KiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04K
KyAqIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUworICogU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaWYgRU5BQkxFKFdFQl9BVURJTykKKworI2luY2x1
ZGUgIldlYktpdE9mZmxpbmVBdWRpb0NvbnRleHQuaCIKKworI2luY2x1ZGUgIkF1ZGlvQnVmZmVy
LmgiCisjaW5jbHVkZSAiRG9jdW1lbnQuaCIKKyNpbmNsdWRlIDx3dGYvSXNvTWFsbG9jSW5saW5l
cy5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1dURl9NQUtFX0lTT19BTExPQ0FURURfSU1Q
TChXZWJLaXRPZmZsaW5lQXVkaW9Db250ZXh0KTsKKworaW5saW5lIFdlYktpdE9mZmxpbmVBdWRp
b0NvbnRleHQ6OldlYktpdE9mZmxpbmVBdWRpb0NvbnRleHQoRG9jdW1lbnQmIGRvY3VtZW50LCBB
dWRpb0J1ZmZlciogcmVuZGVyVGFyZ2V0KQorICAgIDogV2ViS2l0QXVkaW9Db250ZXh0KGRvY3Vt
ZW50LCByZW5kZXJUYXJnZXQpCit7Cit9CisKK0V4Y2VwdGlvbk9yPFJlZjxXZWJLaXRPZmZsaW5l
QXVkaW9Db250ZXh0Pj4gV2ViS2l0T2ZmbGluZUF1ZGlvQ29udGV4dDo6Y3JlYXRlKFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIHVuc2lnbmVkIG51bWJlck9mQ2hhbm5lbHMsIHNpemVf
dCBudW1iZXJPZkZyYW1lcywgZmxvYXQgc2FtcGxlUmF0ZSkKK3sKKyAgICAvLyBGSVhNRTogQWRk
IHN1cHBvcnQgZm9yIHdvcmtlcnMuCisgICAgaWYgKCFpczxEb2N1bWVudD4oY29udGV4dCkpCisg
ICAgICAgIHJldHVybiBFeGNlcHRpb24geyBOb3RTdXBwb3J0ZWRFcnJvciB9OworICAgIGlmICgh
bnVtYmVyT2ZDaGFubmVscyB8fCBudW1iZXJPZkNoYW5uZWxzID4gMTAgfHwgIW51bWJlck9mRnJh
bWVzIHx8ICFpc1NhbXBsZVJhdGVSYW5nZUdvb2Qoc2FtcGxlUmF0ZSkpCisgICAgICAgIHJldHVy
biBFeGNlcHRpb24geyBTeW50YXhFcnJvciB9OworICAgIGF1dG8gcmVuZGVyVGFyZ2V0ID0gQXVk
aW9CdWZmZXI6OmNyZWF0ZShudW1iZXJPZkNoYW5uZWxzLCBudW1iZXJPZkZyYW1lcywgc2FtcGxl
UmF0ZSk7CisgICAgaWYgKCFyZW5kZXJUYXJnZXQpCisgICAgICAgIHJldHVybiBFeGNlcHRpb24g
eyBTeW50YXhFcnJvciB9OworCisgICAgYXV0byBhdWRpb0NvbnRleHQgPSBhZG9wdFJlZigqbmV3
IFdlYktpdE9mZmxpbmVBdWRpb0NvbnRleHQoZG93bmNhc3Q8RG9jdW1lbnQ+KGNvbnRleHQpLCBy
ZW5kZXJUYXJnZXQuZ2V0KCkpKTsKKyAgICBhdWRpb0NvbnRleHQtPnN1c3BlbmRJZk5lZWRlZCgp
OworICAgIHJldHVybiBhdWRpb0NvbnRleHQ7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
KworI2VuZGlmIC8vIEVOQUJMRShXRUJfQVVESU8pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmF1ZGlvL1dlYktpdE9mZmxpbmVBdWRpb0NvbnRleHQuaCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vV2ViS2l0T2ZmbGluZUF1ZGlvQ29udGV4dC5oCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLmMyNTRlZDQxZmUwM2Q2MWU3ZWNiNTQ4N2UyYzc5YzQ3NDYxODJmOTQKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1dlYktpdE9mZmxpbmVB
dWRpb0NvbnRleHQuaApAQCAtMCwwICsxLDQwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEy
LCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAg
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJF
CisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04KKyAqIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUworICogU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNl
CisKKyNpbmNsdWRlICJXZWJLaXRBdWRpb0NvbnRleHQuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUg
eworCitjbGFzcyBXZWJLaXRPZmZsaW5lQXVkaW9Db250ZXh0IGZpbmFsIDogcHVibGljIFdlYktp
dEF1ZGlvQ29udGV4dCB7CisgICAgV1RGX01BS0VfSVNPX0FMTE9DQVRFRChXZWJLaXRPZmZsaW5l
QXVkaW9Db250ZXh0KTsKK3B1YmxpYzoKKyAgICBzdGF0aWMgRXhjZXB0aW9uT3I8UmVmPFdlYktp
dE9mZmxpbmVBdWRpb0NvbnRleHQ+PiBjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIHVu
c2lnbmVkIG51bWJlck9mQ2hhbm5lbHMsIHNpemVfdCBudW1iZXJPZkZyYW1lcywgZmxvYXQgc2Ft
cGxlUmF0ZSk7CisKK3ByaXZhdGU6CisgICAgV2ViS2l0T2ZmbGluZUF1ZGlvQ29udGV4dChEb2N1
bWVudCYsIEF1ZGlvQnVmZmVyKiByZW5kZXJUYXJnZXQpOworfTsKKworfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9XZWJL
aXRPZmZsaW5lQXVkaW9Db250ZXh0LmlkbCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVk
aW8vV2ViS2l0T2ZmbGluZUF1ZGlvQ29udGV4dC5pZGwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNTZhNjQ4YmMyYTVm
MjFjMzA1ZGQ0ODBjNDFhMDA1MjMxMjRkY2JmMQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vV2ViS2l0T2ZmbGluZUF1ZGlvQ29udGV4dC5pZGwKQEAg
LTAsMCArMSwzMSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiwgR29vZ2xlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5EIEFO
WQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOwor
ICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OCisgKiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMKKyAqIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKK1sKKyAgICBDb25kaXRpb25hbD1XRUJfQVVESU8s
CisgICAgSW50ZXJmYWNlTmFtZT13ZWJraXRPZmZsaW5lQXVkaW9Db250ZXh0LAorICAgIEpTR2Vu
ZXJhdGVUb0pTT2JqZWN0LAorXSBpbnRlcmZhY2UgV2ViS2l0T2ZmbGluZUF1ZGlvQ29udGV4dCA6
IFdlYktpdEF1ZGlvQ29udGV4dCB7CisgICAgW0NhbGxXaXRoPVNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQsIE1heVRocm93RXhjZXB0aW9uXSBjb25zdHJ1Y3Rvcih1bnNpZ25lZCBsb25nIG51bWJlck9m
Q2hhbm5lbHMsIHVuc2lnbmVkIGxvbmcgbnVtYmVyT2ZGcmFtZXMsIHVucmVzdHJpY3RlZCBmbG9h
dCBzYW1wbGVSYXRlKTsKK307CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4
dCBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CmluZGV4IDJjNTZlZDUxMzlkYjA3OWE4NmM3
NzUxYTk1NjM4Y2IyNDhiZmU2YzcuLjE0OTU5YzM4MTUwMzU2YTg3ZGVlZTMyZWZiMzdiMjYyNTY1
ZjI2ZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CisrKyBiL1NvdXJj
ZS9XZWJDb3JlL1NvdXJjZXMudHh0CkBAIC0yNjksNiArMjY5LDkgQEAgTW9kdWxlcy93ZWJhdWRp
by9TY3JpcHRQcm9jZXNzb3JOb2RlLmNwcAogTW9kdWxlcy93ZWJhdWRpby9XYXZlU2hhcGVyRFNQ
S2VybmVsLmNwcAogTW9kdWxlcy93ZWJhdWRpby9XYXZlU2hhcGVyTm9kZS5jcHAKIE1vZHVsZXMv
d2ViYXVkaW8vV2F2ZVNoYXBlclByb2Nlc3Nvci5jcHAKK01vZHVsZXMvd2ViYXVkaW8vV2ViS2l0
QXVkaW9Db250ZXh0LmNwcAorTW9kdWxlcy93ZWJhdWRpby9XZWJLaXRBdWRpb1Bhbm5lck5vZGUu
Y3BwCitNb2R1bGVzL3dlYmF1ZGlvL1dlYktpdE9mZmxpbmVBdWRpb0NvbnRleHQuY3BwCiAKIE1v
ZHVsZXMvd2ViYXV0aG4vQXV0aGVudGljYXRvckNvb3JkaW5hdG9yLmNwcAogTW9kdWxlcy93ZWJh
dXRobi9BdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2UuY3BwCkBAIC0yNzQ0LDYgKzI3NDcs
NyBAQCBKU0F1ZGlvQnVmZmVyQ2FsbGJhY2suY3BwCiBKU0F1ZGlvQnVmZmVyU291cmNlTm9kZS5j
cHAKIEpTQXVkaW9Db25maWd1cmF0aW9uLmNwcAogSlNBdWRpb0NvbnRleHQuY3BwCitKU0F1ZGlv
Q29udGV4dFN0YXRlLmNwcAogSlNBdWRpb0Rlc3RpbmF0aW9uTm9kZS5jcHAKIEpTQXVkaW9MaXN0
ZW5lci5jcHAKIEpTQXVkaW9Ob2RlLmNwcApAQCAtMjkxNCw2ICsyOTE4LDcgQEAgSlNEZXZpY2VN
b3Rpb25FdmVudC5jcHAKIEpTRGV2aWNlT3JpZW50YXRpb25FdmVudC5jcHAKIEpTRGV2aWNlT3Jp
ZW50YXRpb25Pck1vdGlvblBlcm1pc3Npb25TdGF0ZS5jcHAKIEpTRGV2aWNlT3JpZW50YXRpb25P
ck1vdGlvbkV2ZW50LmNwcAorSlNEaXN0YW5jZU1vZGVsVHlwZS5jcHAKIEpTRG9jdW1lbnQuY3Bw
CiBKU0RvY3VtZW50QW5kRWxlbWVudEV2ZW50SGFuZGxlcnMuY3BwCiBKU0RvY3VtZW50RnJhZ21l
bnQuY3BwCkBAIC0zMjExLDYgKzMyMTYsNyBAQCBKU092ZXJmbG93RXZlbnQuY3BwCiBKU1BhZ2VU
cmFuc2l0aW9uRXZlbnQuY3BwCiBKU1BhaW50UmVuZGVyaW5nQ29udGV4dDJELmNwcAogSlNQYW5u
ZXJOb2RlLmNwcAorSlNQYW5uaW5nTW9kZWxUeXBlLmNwcAogSlNQYXJlbnROb2RlLmNwcAogSlNQ
YXRoMkQuY3BwCiBKU1BheWVyRXJyb3JGaWVsZHMuY3BwCkBAIC0zNTY3LDcgKzM1NzMsMTAgQEAg
SlNXZWJHUFVTd2FwQ2hhaW4uY3BwCiBKU1dlYkdQVVRleHR1cmUuY3BwCiBKU1dlYkdQVVRleHR1
cmVWaWV3LmNwcAogSlNXZWJLaXRBbmltYXRpb25FdmVudC5jcHAKK0pTV2ViS2l0QXVkaW9Db250
ZXh0LmNwcAorSlNXZWJLaXRBdWRpb1Bhbm5lck5vZGUuY3BwCiBKU1dlYktpdENTU01hdHJpeC5j
cHAKK0pTV2ViS2l0T2ZmbGluZUF1ZGlvQ29udGV4dC5jcHAKIEpTV2ViS2l0UGxheWJhY2tUYXJn
ZXRBdmFpbGFiaWxpdHlFdmVudC5jcHAKIEpTV2ViS2l0UG9pbnQuY3BwCiBKU1dlYktpdFRyYW5z
aXRpb25FdmVudC5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagppbmRleCBjN2FhYzg1OTY3Njc4MThiNjlkMzU4ZTNhZDgwNDg0ZTEyNjRi
ODYwLi40NmY5NmQxNTBjYmYxYjdmYmQ4NjU5MjRiNmIxNGQyZjZjODcyZWQ0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIv
U291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0yNDA3
LDEyICsyNDA3LDE2IEBACiAJCTgzMDAzMEY4MUI3RDNCNzgwMEVEM0FBQyAvKiBDYWNoZWRIVE1M
Q29sbGVjdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gODMwMDMwRjcxQjdEMzk4ODAwRUQzQUFDIC8qIENhY2hlZEhUTUxDb2xsZWN0aW9uLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJODMwMzM1MDIx
RjU0OTA1NzAwNERGNzA3IC8qIEZpbGVTeXN0ZW1EaXJlY3RvcnlSZWFkZXIuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgzMDMzNEZDMUY1NDkwNTIwMDRE
RjcwNyAvKiBGaWxlU3lzdGVtRGlyZWN0b3J5UmVhZGVyLmggKi87IH07CiAJCTgzMDMzNTAzMUY1
NDkwNUEwMDRERjcwNyAvKiBGaWxlU3lzdGVtRW50cmllc0NhbGxiYWNrLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4MzAzMzRGRTFGNTQ5MDUyMDA0REY3
MDcgLyogRmlsZVN5c3RlbUVudHJpZXNDYWxsYmFjay5oICovOyB9OworCQk4MzA0MDI4MjI0OUE3
QTVGMDBBOTBEOEQgLyogUGFubmluZ01vZGVsVHlwZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODMwNDAyODAyNDlBN0E1QzAwQTkwRDhEIC8qIFBhbm5p
bmdNb2RlbFR5cGUuaCAqLzsgfTsKKwkJODMwNDAyODMyNDlBN0E2MjAwQTkwRDhEIC8qIERpc3Rh
bmNlTW9kZWxUeXBlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA4MzA0MDI3RDI0OUE3QTVCMDBBOTBEOEQgLyogRGlzdGFuY2VNb2RlbFR5cGUuaCAqLzsg
fTsKIAkJODMwNTE5OTYxQkIwRjExMDAwRjM3NzJFIC8qIEhUTUxUaW1lRWxlbWVudC5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODMwNTE5OTMxQkIwRjBF
NzAwRjM3NzJFIC8qIEhUTUxUaW1lRWxlbWVudC5oICovOyB9OwogCQk4MzA3ODRCMjFDNTJFRTJD
MDAxMDREMUQgLyogWE1MRG9jdW1lbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDgzMDc4NEIxMUM1MkVFMTkwMDEwNEQxRCAvKiBYTUxEb2N1bWVudC5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTgzMEEz
NkJEMURBQzVGQUQwMDZEN0QwOSAvKiBKU01vdXNlRXZlbnRJbml0LmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4MzBBMzZCQjFEQUM1RkE3MDA2RDdEMDkg
LyogSlNNb3VzZUV2ZW50SW5pdC5oICovOyB9OwogCQk4MzEwMkIyNzFGOUVBREQ5MDBFNDA0Qjkg
LyogSlNFeHRlbmRhYmxlTWVzc2FnZUV2ZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA4MzEwMkIyMzFGOUVBREMyMDBFNDA0QjkgLyogSlNFeHRlbmRh
YmxlTWVzc2FnZUV2ZW50LmggKi87IH07CiAJCTgzMTFDMDAzMUZBQTJFOTUwMEUzQzhFNSAvKiBT
V1NlcnZlckpvYlF1ZXVlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA4MzExQzAwMjFGQUEyRTg5MDBFM0M4RTUgLyogU1dTZXJ2ZXJKb2JRdWV1ZS5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTgzMTIwQzcx
MUM1NkYzRkIwMDFDQjExMiAvKiBIVE1MRGF0YUVsZW1lbnQuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgzNEI4NkE3MUM1NkU4M0EwMEYzRjBFMyAvKiBI
VE1MRGF0YUVsZW1lbnQuaCAqLzsgfTsKKwkJODMxQjYxNzYyNDk5QTVCQjAwQzA3Qzc5IC8qIFdl
YktpdEF1ZGlvUGFubmVyTm9kZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gODMxQjYxNzQyNDk5QTU5QzAwQzA3Qzc5IC8qIFdlYktpdEF1ZGlvUGFubmVy
Tm9kZS5oICovOyB9OworCQk4MzFCNjE3NzI0OTlBNUJGMDBDMDdDNzkgLyogV2ViS2l0T2ZmbGlu
ZUF1ZGlvQ29udGV4dC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gODMxQjYxNzUyNDk5QTU5RDAwQzA3Qzc5IC8qIFdlYktpdE9mZmxpbmVBdWRpb0NvbnRl
eHQuaCAqLzsgfTsKIAkJODMyMTUwN0UxRjI3RUExQjAwOTVCMTM2IC8qIE5hdmlnYXRvckJlYWNv
bi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODMyMTUw
N0IxRjI3RUExNTAwOTVCMTM2IC8qIE5hdmlnYXRvckJlYWNvbi5oICovOyB9OwogCQk4MzJCODQz
NDE5RDhFNTUxMDBCMjYwNTUgLyogU1ZHQW5pbWF0ZUVsZW1lbnRCYXNlLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4MzJCODQzMzE5RDhFNTUxMDBCMjYw
NTUgLyogU1ZHQW5pbWF0ZUVsZW1lbnRCYXNlLmggKi87IH07CiAJCTgzM0I5RTMyMUY1MDhEODUw
MEUwRTQyOCAvKiBKU0ZpbGVTeXN0ZW1EaXJlY3RvcnlFbnRyeS5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODMzQjlFMkYxRjUwOEQ4MDAwRTBFNDI4IC8q
IEpTRmlsZVN5c3RlbURpcmVjdG9yeUVudHJ5LmggKi87IH07CkBAIC0yNDY4LDEwICsyNDcyLDEy
IEBACiAJCTgzOUEyRjJFMUUyMDRBNzEwMDM5MDU3RSAvKiBXZWJHTFN0YXRlVHJhY2tlci5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODM5QTJGMkMxRTIw
NEE2RDAwMzkwNTdFIC8qIFdlYkdMU3RhdGVUcmFja2VyLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJODM5QUFGRUQxQTBDMEM4RDAwNjA1Rjk5IC8q
IEhUTUxXQlJFbGVtZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA4MzlBQUZFQjFBMEMwQzhEMDA2MDVGOTkgLyogSFRNTFdCUkVsZW1lbnQuaCAqLzsg
fTsKIAkJODNBOEFDNDAxRkFCQkZFNTAwMjA2NEFDIC8qIFNlcnZpY2VXb3JrZXJJZGVudGlmaWVy
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4M0E4QUMz
RTFGQUJCRkQxMDAyMDY0QUMgLyogU2VydmljZVdvcmtlcklkZW50aWZpZXIuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk4M0IxQTcwMjI0OTk4NUYw
MDBGRTU5NjEgLyogV2ViS2l0QXVkaW9Db250ZXh0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4M0IxQTZGRjI0OTk4NUQwMDBGRTU5NjEgLyogV2ViS2l0
QXVkaW9Db250ZXh0LmggKi87IH07CiAJCTgzQjJEMTc1MUI4QkNENkEwMEEwMkU0NyAvKiBOYXRp
dmVOb2RlRmlsdGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA4M0U5NTlFMTFCOEJDMjJCMDA0RDkzODUgLyogTmF0aXZlTm9kZUZpbHRlci5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTgzQjc0RUY2MUYz
RTBCRjIwMDk5NkJDNyAvKiBLZWVwYWxpdmVSZXF1ZXN0VHJhY2tlci5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODNCNzRFRjMxRjNFMEJENzAwOTk2QkM3
IC8qIEtlZXBhbGl2ZVJlcXVlc3RUcmFja2VyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJODNCOTY4N0IxOUY4QUI4MzAwNEVGN0FGIC8qIFN0eWxl
QnVpbGRlckNvbnZlcnRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gODNCOTY4NzkxOUY4QUI4MzAwNEVGN0FGIC8qIFN0eWxlQnVpbGRlckNvbnZlcnRl
ci5oICovOyB9OwogCQk4M0JCNUM4ODFENUQ2RjQ1MDA1QTcxRjQgLyogQWxsRGVzY2VuZGFudHND
b2xsZWN0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA4M0JCNUM4NzFENUQ2RjNBMDA1QTcxRjQgLyogQWxsRGVzY2VuZGFudHNDb2xsZWN0aW9uLmgg
Ki87IH07CisJCTgzQkQzQ0VFMjQ5OThFMDEwMEJBM0U2NyAvKiBBdWRpb0NvbnRleHRTdGF0ZS5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODNCRDNDRUQy
NDk5OERGNjAwQkEzRTY3IC8qIEF1ZGlvQ29udGV4dFN0YXRlLmggKi87IH07CiAJCTgzQzA1QTVC
MUE2ODYyMTIwMDdFNURFQSAvKiBTdHlsZVByb3BlcnR5U2hvcnRoYW5kRnVuY3Rpb25zLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4M0MwNUE1OTFBNjg2
MjEyMDA3RTVERUEgLyogU3R5bGVQcm9wZXJ0eVNob3J0aGFuZEZ1bmN0aW9ucy5oICovOyB9Owog
CQk4M0MxRjU5NDFFREY2OUQzMDA0MTBEMjcgLyogUXVhbGlmaWVkTmFtZUNhY2hlLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4M0MxRjU5MjFFREY2OUQz
MDA0MTBEMjcgLyogUXVhbGlmaWVkTmFtZUNhY2hlLmggKi87IH07CiAJCTgzQzQ1QjhFMURDMkI2
OEEwMDg4NzFCQSAvKiBWYWxpZGF0aW9uQnViYmxlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4M0M0NUI4RDFEQzJCNjdDMDA4ODcxQkEgLyogVmFsaWRh
dGlvbkJ1YmJsZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CkBAIC0xMDI5NywxMSArMTAzMDMsMTYgQEAKIAkJODMwMDMwRjMxQjdEMzNBNjAwRUQzQUFD
IC8qIEdlbmVyaWNDYWNoZWRIVE1MQ29sbGVjdGlvbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBHZW5lcmljQ2FjaGVkSFRNTENvbGxlY3Rpb24uY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk4MzAwMzBGNDFCN0QzM0E2MDBFRDNBQUMgLyogR2VuZXJp
Y0NhY2hlZEhUTUxDb2xsZWN0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IEdlbmVyaWNDYWNoZWRIVE1MQ29sbGVjdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk4MzAwMzBGNzFCN0QzOTg4MDBFRDNBQUMgLyogQ2FjaGVkSFRNTENvbGxlY3Rpb24uaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ2FjaGVkSFRNTENvbGxlY3Rpb24uaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJODMwMDNFMkIyNDk5OTdBODAwNjBBRjk0IC8q
IFdlYktpdEF1ZGlvQ29udGV4dC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBXZWJLaXRBdWRpb0NvbnRleHQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk4MzAzMzRGQjFGNTQ5MDUyMDA0REY3MDcgLyogRmlsZVN5c3RlbURpcmVjdG9yeVJlYWRlci5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBGaWxlU3lzdGVtRGlyZWN0
b3J5UmVhZGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODMwMzM0RkMxRjU0
OTA1MjAwNERGNzA3IC8qIEZpbGVTeXN0ZW1EaXJlY3RvcnlSZWFkZXIuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gRmlsZVN5c3RlbURpcmVjdG9yeVJlYWRlci5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk4MzAzMzRGRDFGNTQ5MDUyMDA0REY3MDcgLyogRmlsZVN5
c3RlbUVudHJpZXNDYWxsYmFjay5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gRmlsZVN5c3Rl
bUVudHJpZXNDYWxsYmFjay5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTgzMDMz
NEZFMUY1NDkwNTIwMDRERjcwNyAvKiBGaWxlU3lzdGVtRW50cmllc0NhbGxiYWNrLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEZpbGVTeXN0ZW1FbnRyaWVzQ2FsbGJhY2suaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODMwMzM0RkYxRjU0OTA1MjAwNERGNzA3IC8q
IEZpbGVTeXN0ZW1EaXJlY3RvcnlSZWFkZXIuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IEZp
bGVTeXN0ZW1EaXJlY3RvcnlSZWFkZXIuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQk4MzA0MDI3RDI0OUE3QTVCMDBBOTBEOEQgLyogRGlzdGFuY2VNb2RlbFR5cGUuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRGlzdGFuY2VNb2RlbFR5cGUuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJODMwNDAyN0YyNDlBN0E1QzAwQTkwRDhEIC8qIERpc3RhbmNl
TW9kZWxUeXBlLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBEaXN0YW5jZU1vZGVsVHlwZS5p
ZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTgzMDQwMjgwMjQ5QTdBNUMwMEE5MEQ4
RCAvKiBQYW5uaW5nTW9kZWxUeXBlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFBhbm5pbmdNb2RlbFR5cGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJODMwNDAy
ODEyNDlBN0E1RDAwQTkwRDhEIC8qIFBhbm5pbmdNb2RlbFR5cGUuaWRsICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4
dDsgcGF0aCA9IFBhbm5pbmdNb2RlbFR5cGUuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk4MzA1MTk5MjFCQjBGMEU3MDBGMzc3MkUgLyogSFRNTFRpbWVFbGVtZW50LmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEhUTUxUaW1lRWxlbWVudC5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTgzMDUxOTkzMUJCMEYwRTcwMEYzNzcyRSAvKiBI
VE1MVGltZUVsZW1lbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSFRNTFRp
bWVFbGVtZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTgzMDUxOTk0MUJCMEYw
RTcwMEYzNzcyRSAvKiBIVE1MVGltZUVsZW1lbnQuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9
IEhUTUxUaW1lRWxlbWVudC5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xMDMx
NCw2ICsxMDMyNSwxMiBAQAogCQk4MzEwMkIyNTFGOUVBREMyMDBFNDA0QjkgLyogSlNFeHRlbmRh
YmxlTWVzc2FnZUV2ZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IEpTRXh0ZW5kYWJsZU1lc3NhZ2VFdmVudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTgzMTFDMDAwMUZBQTJFODkwMEUzQzhFNSAvKiBTV1NlcnZlckpvYlF1ZXVlLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNXU2VydmVySm9iUXVldWUuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4MzExQzAwMjFGQUEyRTg5MDBFM0M4RTUgLyog
U1dTZXJ2ZXJKb2JRdWV1ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTV1Nl
cnZlckpvYlF1ZXVlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTgzMUI2MTZGMjQ5
OUE1OTgwMEMwN0M3OSAvKiBXZWJLaXRBdWRpb1Bhbm5lck5vZGUuaWRsICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4
dDsgcGF0aCA9IFdlYktpdEF1ZGlvUGFubmVyTm9kZS5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTgzMUI2MTcxMjQ5OUE1OTkwMEMwN0M3OSAvKiBXZWJLaXRBdWRpb1Bhbm5lck5v
ZGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2ViS2l0QXVkaW9Q
YW5uZXJOb2RlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJODMxQjYxNzIyNDk5
QTU5QTAwQzA3Qzc5IC8qIFdlYktpdE9mZmxpbmVBdWRpb0NvbnRleHQuaWRsICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
dGV4dDsgcGF0aCA9IFdlYktpdE9mZmxpbmVBdWRpb0NvbnRleHQuaWRsOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQk4MzFCNjE3MzI0OTlBNTlCMDBDMDdDNzkgLyogV2ViS2l0T2ZmbGlu
ZUF1ZGlvQ29udGV4dC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBX
ZWJLaXRPZmZsaW5lQXVkaW9Db250ZXh0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJODMxQjYxNzQyNDk5QTU5QzAwQzA3Qzc5IC8qIFdlYktpdEF1ZGlvUGFubmVyTm9kZS5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJLaXRBdWRpb1Bhbm5lck5vZGUuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJODMxQjYxNzUyNDk5QTU5RDAwQzA3Qzc5IC8q
IFdlYktpdE9mZmxpbmVBdWRpb0NvbnRleHQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gV2ViS2l0T2ZmbGluZUF1ZGlvQ29udGV4dC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk4MzFDNDZDMzFGOUVFNUUwMDBFQkQ0NTAgLyogSlNFeHRlbmRhYmxlTWVzc2FnZUV2
ZW50Q3VzdG9tLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTRXh0
ZW5kYWJsZU1lc3NhZ2VFdmVudEN1c3RvbS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTgzMUQxRjI5MUM1NkVDQTAwMEY1RjZDMCAvKiBIVE1MRGF0YUVsZW1lbnQuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSFRNTERhdGFFbGVtZW50LmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODMyMTUwN0ExRjI3RUExNTAwOTVCMTM2IC8qIE5h
dmlnYXRvckJlYWNvbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBOYXZpZ2F0b3JCZWFjb24uY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTA0NDEsNiArMTA0NTgsOCBAQAogCQk4
MzlBQUZFQjFBMEMwQzhEMDA2MDVGOTkgLyogSFRNTFdCUkVsZW1lbnQuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gSFRNTFdCUkVsZW1lbnQuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJODNBNEE5RjgxQ0U3RkQ3RTAwNzA5QjAwIC8qIEpTWE1MRG9jdW1lbnRDdXN0
b20uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNYTUxEb2N1bWVu
dEN1c3RvbS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTgzQThBQzNFMUZBQkJG
RDEwMDIwNjRBQyAvKiBTZXJ2aWNlV29ya2VySWRlbnRpZmllci5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBTZXJ2aWNlV29ya2VySWRlbnRpZmllci5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQk4M0IxQTZGRjI0OTk4NUQwMDBGRTU5NjEgLyogV2ViS2l0QXVkaW9D
b250ZXh0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYktpdEF1ZGlvQ29u
dGV4dC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk4M0IxQTcwMTI0OTk4NUQwMDBG
RTU5NjEgLyogV2ViS2l0QXVkaW9Db250ZXh0LmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBX
ZWJLaXRBdWRpb0NvbnRleHQuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4M0Iy
NTAwOTFGQTExODFDMDBCQzAyRDkgLyogSlNTZXJ2aWNlV29ya2VyQ2xpZW50VHlwZS5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU1NlcnZpY2VXb3JrZXJDbGllbnRUeXBlLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTgzQjI1MDBCMUZBMTE4MUQwMEJDMDJEOSAv
KiBKU1NlcnZpY2VXb3JrZXJDbGllbnRUeXBlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IEpTU2VydmljZVdvcmtlckNsaWVudFR5cGUuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk4M0I1REE0NTFGQTkwNzkzMDBCNTlERjQgLyogSlNOYXZpZ2F0b3JD
dXN0b20uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNOYXZpZ2F0
b3JDdXN0b20uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTA0NDgsNiArMTA0
NjcsOCBAQAogCQk4M0I3NEVGMzFGM0UwQkQ3MDA5OTZCQzcgLyogS2VlcGFsaXZlUmVxdWVzdFRy
YWNrZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gS2VlcGFsaXZlUmVxdWVz
dFRyYWNrZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODNCOTY4NzkxOUY4QUI4
MzAwNEVGN0FGIC8qIFN0eWxlQnVpbGRlckNvbnZlcnRlci5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBTdHlsZUJ1aWxkZXJDb252ZXJ0ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJODNCQjVDODcxRDVENkYzQTAwNUE3MUY0IC8qIEFsbERlc2NlbmRhbnRzQ29s
bGVjdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBbGxEZXNjZW5kYW50
c0NvbGxlY3Rpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJODNCRDNDRUIyNDk5
OENDNTAwQkEzRTY3IC8qIEF1ZGlvQ29udGV4dFN0YXRlLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBh
dGggPSBBdWRpb0NvbnRleHRTdGF0ZS5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTgzQkQzQ0VEMjQ5OThERjYwMEJBM0U2NyAvKiBBdWRpb0NvbnRleHRTdGF0ZS5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBdWRpb0NvbnRleHRTdGF0ZS5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk4M0MwNUE1ODFBNjg2MjEyMDA3RTVERUEgLyogU3R5bGVQcm9w
ZXJ0eVNob3J0aGFuZEZ1bmN0aW9ucy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IG5hbWUgPSBTdHlsZVByb3BlcnR5U2hvcnRoYW5kRnVuY3Rpb25zLmNwcDsgcGF0aCA9IERlcml2
ZWRTb3VyY2VzL1dlYkNvcmUvU3R5bGVQcm9wZXJ0eVNob3J0aGFuZEZ1bmN0aW9ucy5jcHA7IHNv
dXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19ESVI7IH07CiAJCTgzQzA1QTU5MUE2ODYyMTIwMDdF
NURFQSAvKiBTdHlsZVByb3BlcnR5U2hvcnRoYW5kRnVuY3Rpb25zLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgbmFtZSA9IFN0eWxlUHJvcGVydHlTaG9ydGhhbmRGdW5jdGlvbnMuaDsgcGF0
aCA9IERlcml2ZWRTb3VyY2VzL1dlYkNvcmUvU3R5bGVQcm9wZXJ0eVNob3J0aGFuZEZ1bmN0aW9u
cy5oOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9OwogCQk4M0MxRjU5MTFFREY2
OUQzMDA0MTBEMjcgLyogUXVhbGlmaWVkTmFtZUNhY2hlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IFF1YWxpZmllZE5hbWVDYWNoZS5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CkBAIC0yOTIzOSw2ICsyOTI2MCw4IEBACiAJCQkJRkQzMTVGQkExMkIwMjY3
NTAwQzFBMzU5IC8qIEF1ZGlvQ29udGV4dC5jcHAgKi8sCiAJCQkJRkQzMTVGQkIxMkIwMjY3NTAw
QzFBMzU5IC8qIEF1ZGlvQ29udGV4dC5oICovLAogCQkJCUZEMzE1RkJDMTJCMDI2NzUwMEMxQTM1
OSAvKiBBdWRpb0NvbnRleHQuaWRsICovLAorCQkJCTgzQkQzQ0VEMjQ5OThERjYwMEJBM0U2NyAv
KiBBdWRpb0NvbnRleHRTdGF0ZS5oICovLAorCQkJCTgzQkQzQ0VCMjQ5OThDQzUwMEJBM0U2NyAv
KiBBdWRpb0NvbnRleHRTdGF0ZS5pZGwgKi8sCiAJCQkJRkQzMTVGQkQxMkIwMjY3NTAwQzFBMzU5
IC8qIEF1ZGlvRGVzdGluYXRpb25Ob2RlLmNwcCAqLywKIAkJCQlGRDMxNUZCRTEyQjAyNjc1MDBD
MUEzNTkgLyogQXVkaW9EZXN0aW5hdGlvbk5vZGUuaCAqLywKIAkJCQlGRDMxNUZCRjEyQjAyNjc1
MDBDMUEzNTkgLyogQXVkaW9EZXN0aW5hdGlvbk5vZGUuaWRsICovLApAQCAtMjkyODksNiArMjkz
MTIsOCBAQAogCQkJCUZEMzE1RkU1MTJCMDI2NzYwMEMxQTM1OSAvKiBEZWxheU5vZGUuaWRsICov
LAogCQkJCUZEMzE1RkU2MTJCMDI2NzYwMEMxQTM1OSAvKiBEZWxheVByb2Nlc3Nvci5jcHAgKi8s
CiAJCQkJRkQzMTVGRTcxMkIwMjY3NjAwQzFBMzU5IC8qIERlbGF5UHJvY2Vzc29yLmggKi8sCisJ
CQkJODMwNDAyN0QyNDlBN0E1QjAwQTkwRDhEIC8qIERpc3RhbmNlTW9kZWxUeXBlLmggKi8sCisJ
CQkJODMwNDAyN0YyNDlBN0E1QzAwQTkwRDhEIC8qIERpc3RhbmNlTW9kZWxUeXBlLmlkbCAqLywK
IAkJCQlGRDZFRDJDMTEzNkI4RTQyMDAzQ0YwNzIgLyogRHluYW1pY3NDb21wcmVzc29yTm9kZS5j
cHAgKi8sCiAJCQkJRkQ2RUQyQzIxMzZCOEU0MjAwM0NGMDcyIC8qIER5bmFtaWNzQ29tcHJlc3Nv
ck5vZGUuaCAqLywKIAkJCQlGRDZFRDJDOTEzNkI4RTlEMDAzQ0YwNzIgLyogRHluYW1pY3NDb21w
cmVzc29yTm9kZS5pZGwgKi8sCkBAIC0yOTMyMSw2ICsyOTM0Niw4IEBACiAJCQkJRkQzMTVGQ0Yx
MkIwMjY3NTAwQzFBMzU5IC8qIFBhbm5lck5vZGUuY3BwICovLAogCQkJCUZEMzE1RkQwMTJCMDI2
NzUwMEMxQTM1OSAvKiBQYW5uZXJOb2RlLmggKi8sCiAJCQkJRkQzMTVGRDExMkIwMjY3NTAwQzFB
MzU5IC8qIFBhbm5lck5vZGUuaWRsICovLAorCQkJCTgzMDQwMjgwMjQ5QTdBNUMwMEE5MEQ4RCAv
KiBQYW5uaW5nTW9kZWxUeXBlLmggKi8sCisJCQkJODMwNDAyODEyNDlBN0E1RDAwQTkwRDhEIC8q
IFBhbm5pbmdNb2RlbFR5cGUuaWRsICovLAogCQkJCUZENTgxRkIxMTUyMEY5M0IwMDNBN0E3NSAv
KiBQZXJpb2RpY1dhdmUuY3BwICovLAogCQkJCUZENTgxRkIyMTUyMEY5M0IwMDNBN0E3NSAvKiBQ
ZXJpb2RpY1dhdmUuaCAqLywKIAkJCQlGRDU4MUZCMzE1MjBGOTNCMDAzQTdBNzUgLyogUGVyaW9k
aWNXYXZlLmlkbCAqLywKQEAgLTI5MzM2LDYgKzI5MzYzLDE1IEBACiAJCQkJRkQ3RjI5OEUxM0Q0
QzBDQjAwQUQ5NTM1IC8qIFdhdmVTaGFwZXJOb2RlLmlkbCAqLywKIAkJCQlGRDdGMjk4RjEzRDRD
MENCMDBBRDk1MzUgLyogV2F2ZVNoYXBlclByb2Nlc3Nvci5jcHAgKi8sCiAJCQkJRkQ3RjI5OTAx
M0Q0QzBDQjAwQUQ5NTM1IC8qIFdhdmVTaGFwZXJQcm9jZXNzb3IuaCAqLywKKwkJCQk4MzAwM0Uy
QjI0OTk5N0E4MDA2MEFGOTQgLyogV2ViS2l0QXVkaW9Db250ZXh0LmNwcCAqLywKKwkJCQk4M0Ix
QTZGRjI0OTk4NUQwMDBGRTU5NjEgLyogV2ViS2l0QXVkaW9Db250ZXh0LmggKi8sCisJCQkJODNC
MUE3MDEyNDk5ODVEMDAwRkU1OTYxIC8qIFdlYktpdEF1ZGlvQ29udGV4dC5pZGwgKi8sCisJCQkJ
ODMxQjYxNzEyNDk5QTU5OTAwQzA3Qzc5IC8qIFdlYktpdEF1ZGlvUGFubmVyTm9kZS5jcHAgKi8s
CisJCQkJODMxQjYxNzQyNDk5QTU5QzAwQzA3Qzc5IC8qIFdlYktpdEF1ZGlvUGFubmVyTm9kZS5o
ICovLAorCQkJCTgzMUI2MTZGMjQ5OUE1OTgwMEMwN0M3OSAvKiBXZWJLaXRBdWRpb1Bhbm5lck5v
ZGUuaWRsICovLAorCQkJCTgzMUI2MTczMjQ5OUE1OUIwMEMwN0M3OSAvKiBXZWJLaXRPZmZsaW5l
QXVkaW9Db250ZXh0LmNwcCAqLywKKwkJCQk4MzFCNjE3NTI0OTlBNTlEMDBDMDdDNzkgLyogV2Vi
S2l0T2ZmbGluZUF1ZGlvQ29udGV4dC5oICovLAorCQkJCTgzMUI2MTcyMjQ5OUE1OUEwMEMwN0M3
OSAvKiBXZWJLaXRPZmZsaW5lQXVkaW9Db250ZXh0LmlkbCAqLywKIAkJCSk7CiAJCQlwYXRoID0g
d2ViYXVkaW87CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwpAQCAtMjk3MzIsNiArMjk3Njgs
NyBAQAogCQkJCUZEMzE2MDdDMTJCMDI2RjcwMEMxQTM1OSAvKiBBdWRpb0J1cy5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJRkQzMTYwN0UxMkIwMjZGNzAwQzFBMzU5IC8qIEF1ZGlvQ2hhbm5lbC5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJRkQzMTYwMDUxMkIwMjY3NjAwQzFBMzU5IC8qIEF1ZGlvQ29udGV4
dC5oIGluIEhlYWRlcnMgKi8sCisJCQkJODNCRDNDRUUyNDk5OEUwMTAwQkEzRTY3IC8qIEF1ZGlv
Q29udGV4dFN0YXRlLmggaW4gSGVhZGVycyAqLywKIAkJCQlGRDMxNjA3RjEyQjAyNkY3MDBDMUEz
NTkgLyogQXVkaW9EZXN0aW5hdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOUIxMjI5QzQyM0ZF
NEJEMjAwOENBNzUxIC8qIEF1ZGlvRGVzdGluYXRpb25Db2NvYS5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJRkQzMTYwQkQxMkIwMjcyQTAwQzFBMzU5IC8qIEF1ZGlvRGVzdGluYXRpb25NYWMuaCBpbiBI
ZWFkZXJzICovLApAQCAtMzAzODcsNiArMzA0MjQsNyBAQAogCQkJCTJEMjlFQ0M4MTkyRUNDODMw
MDk4NEI3OCAvKiBEaXNwbGF5UmVmcmVzaE1vbml0b3JNYW5hZ2VyLmggaW4gSGVhZGVycyAqLywK
IAkJCQk2RkNFMUExQTIyNjE4QUJEMDA0RjAzNDMgLyogRGlzcGxheVJ1bi5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJRkQzMTYwOTExMkIwMjZGNzAwQzFBMzU5IC8qIERpc3RhbmNlLmggaW4gSGVhZGVy
cyAqLywKKwkJCQk4MzA0MDI4MzI0OUE3QTYyMDBBOTBEOEQgLyogRGlzdGFuY2VNb2RlbFR5cGUu
aCBpbiBIZWFkZXJzICovLAogCQkJCTg0NzMwRDc3MTI0OEYwQjMwMEQzQTlDOSAvKiBEaXN0YW50
TGlnaHRTb3VyY2UuaCBpbiBIZWFkZXJzICovLAogCQkJCUIyRjM0RkU2MEU4MkY4MTQwMEY2MjdD
RCAvKiBETlMuaCBpbiBIZWFkZXJzICovLAogCQkJCTdFRTY4NDZGMTJEMjZFMzgwMEU3MzIxNSAv
KiBETlNSZXNvbHZlUXVldWVDRk5ldC5oIGluIEhlYWRlcnMgKi8sCkBAIC0zMjQwMCw2ICszMjQz
OCw3IEBACiAJCQkJQTgwRTZDRkIwQTE5ODlDQTAwN0ZCOEM1IC8qIFBhaXIuaCBpbiBIZWFkZXJz
ICovLAogCQkJCUZEMzE2MEEzMTJCMDI2RjcwMEMxQTM1OSAvKiBQYW5uZXIuaCBpbiBIZWFkZXJz
ICovLAogCQkJCUZEMzE2MDFBMTJCMDI2NzYwMEMxQTM1OSAvKiBQYW5uZXJOb2RlLmggaW4gSGVh
ZGVycyAqLywKKwkJCQk4MzA0MDI4MjI0OUE3QTVGMDBBOTBEOEQgLyogUGFubmluZ01vZGVsVHlw
ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTE4ODkwQUYxQUExM0YyNTAwMjZDMzAxIC8qIFBhcmVu
dGFsQ29udHJvbHNDb250ZW50RmlsdGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlDRENENDFFODFD
M0REQjBBMDA5NjVEOTkgLyogUGFyc2VkQ29udGVudFJhbmdlLmggaW4gSGVhZGVycyAqLywKIAkJ
CQk0NDc5NTgwNDE2NDNCNDlBMDAxRTBBN0YgLyogUGFyc2VkQ29udGVudFR5cGUuaCBpbiBIZWFk
ZXJzICovLApAQCAtMzM3MjgsNiArMzM3NjcsOCBAQAogCQkJCUE1ODRGRTMwMTg2NENCODQwMDg0
M0IxMCAvKiBXZWJJbmplY3RlZFNjcmlwdE1hbmFnZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUY0
ODIyMzExMUUzODY5QjgwMDY2RkM3OSAvKiBXZWJJdGVtUHJvdmlkZXJQYXN0ZWJvYXJkLmggaW4g
SGVhZGVycyAqLywKIAkJCQkzMUMwRkYyMjBFNENFQjZFMDA3RDZGRTUgLyogV2ViS2l0QW5pbWF0
aW9uRXZlbnQuaCBpbiBIZWFkZXJzICovLAorCQkJCTgzQjFBNzAyMjQ5OTg1RjAwMEZFNTk2MSAv
KiBXZWJLaXRBdWRpb0NvbnRleHQuaCBpbiBIZWFkZXJzICovLAorCQkJCTgzMUI2MTc2MjQ5OUE1
QkIwMEMwN0M3OSAvKiBXZWJLaXRBdWRpb1Bhbm5lck5vZGUuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTVERkVCQUI3MTg1OTJCNkQwMEM3NUJFQiAvKiBXZWJLaXRBdmFpbGFiaWxpdHkuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTQ5ODM5MTU5MEYxRTc3NjkwMEMyMzc4MiAvKiBXZWJLaXRDU1NNYXRyaXgu
aCBpbiBIZWFkZXJzICovLAogCQkJCTJEMDYyMTQ1MURBNjM5QkEwMEE3RkIyNiAvKiBXZWJLaXRN
ZWRpYUtleU1lc3NhZ2VFdmVudC5oIGluIEhlYWRlcnMgKi8sCkBAIC0zMzczNiw2ICszMzc3Nyw3
IEBACiAJCQkJMkQwNjIxNTAxREE2M0E5NDAwQTdGQjI2IC8qIFdlYktpdE1lZGlhS2V5U2Vzc2lv
bi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJN0M0OEE2RDExOTFDOUQ2NTAwMDI2Njc0IC8qIFdlYktp
dE5hbWVzcGFjZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJN0EyMjczMjEyMEM5RkFGRTAwREIxREVG
IC8qIFdlYktpdE5TSW1hZ2VFeHRyYXMuaCBpbiBIZWFkZXJzICovLAorCQkJCTgzMUI2MTc3MjQ5
OUE1QkYwMEMwN0M3OSAvKiBXZWJLaXRPZmZsaW5lQXVkaW9Db250ZXh0LmggaW4gSGVhZGVycyAq
LywKIAkJCQlBNURFQkRBNDE2RkI5MDg3MDA4MzZGRTAgLyogV2ViS2l0UGxheWJhY2tUYXJnZXRB
dmFpbGFiaWxpdHlFdmVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDk0QkQ3OTUwRjU1QzhFRTAw
NzQ3ODI4IC8qIFdlYktpdFBvaW50LmggaW4gSGVhZGVycyAqLywKIAkJCQkzMUMwRkYyNTBFNENF
QjZFMDA3RDZGRTUgLyogV2ViS2l0VHJhbnNpdGlvbkV2ZW50LmggaW4gSGVhZGVycyAqLywKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1dlYkNvcmVCdWlsdGluTmFtZXMu
aCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1dlYkNvcmVCdWlsdGluTmFtZXMuaAppbmRl
eCA0OTk3YWI5OTNjYjc5NTQ1NzVhODQzMTdkNjljMjBjY2VjNmE3ZDA5Li5mOTE5N2MyNmFlOWE0
YzM5YzkyMjNiNTQxZDU5ZmJjMGE4MjBlOTljIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9XZWJDb3JlQnVpbHRpbk5hbWVzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvV2ViQ29yZUJ1aWx0aW5OYW1lcy5oCkBAIC00OSw2ICs0OSw3IEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKICAgICBtYWNybyhBcHBsZVBheVNldHVwRmVhdHVyZSkgXAogICAgIG1hY3Jv
KEF0dGFjaG1lbnRFbGVtZW50KSBcCiAgICAgbWFjcm8oQXVkaW8pIFwKKyAgICBtYWNybyhBdWRp
b0NvbnRleHQpIFwKICAgICBtYWNybyhBdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2UpIFwK
ICAgICBtYWNybyhBdXRoZW50aWNhdG9yQXR0ZXN0YXRpb25SZXNwb25zZSkgXAogICAgIG1hY3Jv
KEF1dGhlbnRpY2F0b3JSZXNwb25zZSkgXApAQCAtMTY1LDkgKzE2NiwxMSBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAgICAgbWFjcm8oTmF2aWdhdG9yQ3JlZGVudGlhbHMpIFwKICAgICBtYWNybyhO
YXZpZ2F0b3JNZWRpYURldmljZXMpIFwKICAgICBtYWNybyhOYXZpZ2F0b3JVc2VyTWVkaWEpIFwK
KyAgICBtYWNybyhPZmZsaW5lQXVkaW9Db250ZXh0KSBcCiAgICAgbWFjcm8oT2Zmc2NyZWVuQ2Fu
dmFzKSBcCiAgICAgbWFjcm8oT2Zmc2NyZWVuQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEKSBcCiAg
ICAgbWFjcm8oUGFpbnRSZW5kZXJpbmdDb250ZXh0MkQpIFwKKyAgICBtYWNybyhQYW5uZXJOb2Rl
KSBcCiAgICAgbWFjcm8oUGF5bWVudEFkZHJlc3MpIFwKICAgICBtYWNybyhQYXltZW50TWV0aG9k
Q2hhbmdlRXZlbnQpIFwKICAgICBtYWNybyhQYXltZW50UmVxdWVzdCkgXApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvZG9tL0V2ZW50VGFyZ2V0RmFjdG9yeS5pbiBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9FdmVudFRhcmdldEZhY3RvcnkuaW4KaW5kZXggZmMxZGIyY2UwZTA2NTAwMjhjZDRjYmNl
NDllYmQzMjk0NGIzMmIzNC4uYTE1NGI0NDVhMTNhZDQ3Njk2MjlkOWY3ZDkzNzdhOWRmMTUwZjdh
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50VGFyZ2V0RmFjdG9yeS5pbgor
KysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRUYXJnZXRGYWN0b3J5LmluCkBAIC01Myw2ICs1
Myw3IEBAIFZpZGVvVHJhY2tMaXN0IGNvbmRpdGlvbmFsPVZJREVPCiBWaXN1YWxWaWV3cG9ydAog
V2ViQW5pbWF0aW9uCiBXZWJHUFVEZXZpY2UgY29uZGl0aW9uYWw9V0VCR1BVCitXZWJLaXRBdWRp
b0NvbnRleHQgY29uZGl0aW9uYWw9V0VCX0FVRElPCiBXZWJLaXRNZWRpYUtleVNlc3Npb24gY29u
ZGl0aW9uYWw9TEVHQUNZX0VOQ1JZUFRFRF9NRURJQQogV2ViU29ja2V0CiBXb3JrZXIKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3MueWFtbCBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvU2V0dGluZ3MueWFtbAppbmRleCAyZDZiYzZmZjJlZjBiMDAwZGQ0ZTk4MDZjZWQ2YzQ4
ZmI0NzBiZTNhLi41ODNmYzZmNzk1ZWZjMDcwMmZiMzg0MGRiNGU4MTFiODg2MDlmYTNlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdzLnlhbWwKKysrIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9TZXR0aW5ncy55YW1sCkBAIC0yNTUsNiArMjU1LDggQEAgbG9hZERlZmVycmlu
Z0VuYWJsZWQ6CiAgIGluaXRpYWw6IHRydWUKIHdlYkF1ZGlvRW5hYmxlZDoKICAgaW5pdGlhbDog
ZmFsc2UKK21vZGVyblVucHJlZml4ZWRXZWJBdWRpb0VuYWJsZWQ6CisgIGluaXRpYWw6IGZhbHNl
CiBwYWdpbmF0ZUR1cmluZ0xheW91dEVuYWJsZWQ6CiAgIGluaXRpYWw6IGZhbHNlCiBmdWxsU2Ny
ZWVuRW5hYmxlZDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxz
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAppbmRleCAwZjVjMTk3
YTI5ODA3ZTc2M2NhZWJmMDkwMmE0Y2Y5YTYyMDhiOTdjLi42MmZhZmJlZDBjY2NlNzc0M2NlMmQ0
YjE5NzNlMDE3ODIxODQzY2U2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0lu
dGVybmFscy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCkBA
IC0yODAsNiArMjgwLDcgQEAKIAogI2lmIEVOQUJMRShXRUJfQVVESU8pCiAjaW5jbHVkZSAiQXVk
aW9Db250ZXh0LmgiCisjaW5jbHVkZSAiV2ViS2l0QXVkaW9Db250ZXh0LmgiCiAjZW5kaWYKIAog
I2lmIEVOQUJMRShNRURJQV9TRVNTSU9OKQpAQCAtNDI5MCwyMiArNDI5MSwyOSBAQCB2b2lkIElu
dGVybmFsczo6c2VuZE1lZGlhQ29udHJvbEV2ZW50KE1lZGlhQ29udHJvbEV2ZW50IGV2ZW50KQog
I2VuZGlmIC8vIEVOQUJMRShNRURJQV9TRVNTSU9OKQogCiAjaWYgRU5BQkxFKFdFQl9BVURJTykK
LXZvaWQgSW50ZXJuYWxzOjpzZXRBdWRpb0NvbnRleHRSZXN0cmljdGlvbnMoQXVkaW9Db250ZXh0
JiBjb250ZXh0LCBTdHJpbmdWaWV3IHJlc3RyaWN0aW9uc1N0cmluZykKK3ZvaWQgSW50ZXJuYWxz
OjpzZXRBdWRpb0NvbnRleHRSZXN0cmljdGlvbnMoY29uc3QgVmFyaWFudDxSZWZQdHI8QXVkaW9D
b250ZXh0PiwgUmVmUHRyPFdlYktpdEF1ZGlvQ29udGV4dD4+JiBjb250ZXh0VmFyaWFudCwgU3Ry
aW5nVmlldyByZXN0cmljdGlvbnNTdHJpbmcpCiB7Ci0gICAgQXVkaW9Db250ZXh0OjpCZWhhdmlv
clJlc3RyaWN0aW9ucyByZXN0cmljdGlvbnMgPSBjb250ZXh0LmJlaGF2aW9yUmVzdHJpY3Rpb25z
KCk7Ci0gICAgY29udGV4dC5yZW1vdmVCZWhhdmlvclJlc3RyaWN0aW9uKHJlc3RyaWN0aW9ucyk7
CisgICAgUmVmUHRyPEF1ZGlvQ29udGV4dEJhc2U+IGNvbnRleHQ7CisgICAgc3dpdGNoT24oY29u
dGV4dFZhcmlhbnQsIFsmXShSZWZQdHI8QXVkaW9Db250ZXh0PiBlbnRyeSkgeworICAgICAgICBj
b250ZXh0ID0gZW50cnk7CisgICAgfSwgWyZdKFJlZlB0cjxXZWJLaXRBdWRpb0NvbnRleHQ+IGVu
dHJ5KSB7CisgICAgICAgIGNvbnRleHQgPSBlbnRyeTsKKyAgICB9KTsKKworICAgIGF1dG8gcmVz
dHJpY3Rpb25zID0gY29udGV4dC0+YmVoYXZpb3JSZXN0cmljdGlvbnMoKTsKKyAgICBjb250ZXh0
LT5yZW1vdmVCZWhhdmlvclJlc3RyaWN0aW9uKHJlc3RyaWN0aW9ucyk7CiAKLSAgICByZXN0cmlj
dGlvbnMgPSBBdWRpb0NvbnRleHQ6Ok5vUmVzdHJpY3Rpb25zOworICAgIHJlc3RyaWN0aW9ucyA9
IEF1ZGlvQ29udGV4dEJhc2U6Ok5vUmVzdHJpY3Rpb25zOwogCiAgICAgZm9yIChTdHJpbmdWaWV3
IHJlc3RyaWN0aW9uU3RyaW5nIDogcmVzdHJpY3Rpb25zU3RyaW5nLnNwbGl0KCcsJykpIHsKICAg
ICAgICAgaWYgKGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKHJlc3RyaWN0aW9uU3RyaW5n
LCAibm9yZXN0cmljdGlvbnMiKSkKLSAgICAgICAgICAgIHJlc3RyaWN0aW9ucyB8PSBBdWRpb0Nv
bnRleHQ6Ok5vUmVzdHJpY3Rpb25zOworICAgICAgICAgICAgcmVzdHJpY3Rpb25zIHw9IEF1ZGlv
Q29udGV4dEJhc2U6Ok5vUmVzdHJpY3Rpb25zOwogICAgICAgICBpZiAoZXF1YWxMZXR0ZXJzSWdu
b3JpbmdBU0NJSUNhc2UocmVzdHJpY3Rpb25TdHJpbmcsICJyZXF1aXJldXNlcmdlc3R1cmVmb3Jh
dWRpb3N0YXJ0IikpCi0gICAgICAgICAgICByZXN0cmljdGlvbnMgfD0gQXVkaW9Db250ZXh0OjpS
ZXF1aXJlVXNlckdlc3R1cmVGb3JBdWRpb1N0YXJ0UmVzdHJpY3Rpb247CisgICAgICAgICAgICBy
ZXN0cmljdGlvbnMgfD0gQXVkaW9Db250ZXh0QmFzZTo6UmVxdWlyZVVzZXJHZXN0dXJlRm9yQXVk
aW9TdGFydFJlc3RyaWN0aW9uOwogICAgICAgICBpZiAoZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJ
SUNhc2UocmVzdHJpY3Rpb25TdHJpbmcsICJyZXF1aXJlcGFnZWNvbnNlbnRmb3JhdWRpb3N0YXJ0
IikpCi0gICAgICAgICAgICByZXN0cmljdGlvbnMgfD0gQXVkaW9Db250ZXh0OjpSZXF1aXJlUGFn
ZUNvbnNlbnRGb3JBdWRpb1N0YXJ0UmVzdHJpY3Rpb247CisgICAgICAgICAgICByZXN0cmljdGlv
bnMgfD0gQXVkaW9Db250ZXh0QmFzZTo6UmVxdWlyZVBhZ2VDb25zZW50Rm9yQXVkaW9TdGFydFJl
c3RyaWN0aW9uOwogICAgIH0KLSAgICBjb250ZXh0LmFkZEJlaGF2aW9yUmVzdHJpY3Rpb24ocmVz
dHJpY3Rpb25zKTsKKyAgICBjb250ZXh0LT5hZGRCZWhhdmlvclJlc3RyaWN0aW9uKHJlc3RyaWN0
aW9ucyk7CiB9CiAKIHZvaWQgSW50ZXJuYWxzOjp1c2VNb2NrQXVkaW9EZXN0aW5hdGlvbkNvY29h
KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmggYi9Tb3Vy
Y2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5oCmluZGV4IDM0MjI3OTk0ZDY0ZmFkNmY2Mjlk
MzgyNjBhNzFiMGE1Njk4OTJiZGEuLmMxZmFkOWJmMjk1Yzk2Y2FkYmI4MmUxZDZiNTA3MzY0YzMx
YmQwMTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaApAQCAtMTA4LDYgKzEwOCw3IEBA
IGNsYXNzIFVuc3VzcGVuZGFibGVBY3RpdmVET01PYmplY3Q7CiBjbGFzcyBWb2lkQ2FsbGJhY2s7
CiBjbGFzcyBXZWJBbmltYXRpb247CiBjbGFzcyBXZWJHTFJlbmRlcmluZ0NvbnRleHQ7CitjbGFz
cyBXZWJLaXRBdWRpb0NvbnRleHQ7CiBjbGFzcyBXaW5kb3dQcm94eTsKIGNsYXNzIFhNTEh0dHBS
ZXF1ZXN0OwogCkBAIC02NzQsNyArNjc1LDcgQEAgcHVibGljOgogI2VuZGlmCiAKICNpZiBFTkFC
TEUoV0VCX0FVRElPKQotICAgIHZvaWQgc2V0QXVkaW9Db250ZXh0UmVzdHJpY3Rpb25zKEF1ZGlv
Q29udGV4dCYsIFN0cmluZ1ZpZXcgcmVzdHJpY3Rpb25zU3RyaW5nKTsKKyAgICB2b2lkIHNldEF1
ZGlvQ29udGV4dFJlc3RyaWN0aW9ucyhjb25zdCBWYXJpYW50PFJlZlB0cjxBdWRpb0NvbnRleHQ+
LCBSZWZQdHI8V2ViS2l0QXVkaW9Db250ZXh0Pj4mLCBTdHJpbmdWaWV3IHJlc3RyaWN0aW9uc1N0
cmluZyk7CiAgICAgdm9pZCB1c2VNb2NrQXVkaW9EZXN0aW5hdGlvbkNvY29hKCk7CiAjZW5kaWYK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaWRsIGIvU291
cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaWRsCmluZGV4IDg3YTc0YjVmOWFkZTk5OGI1
MjNhMTRlOWZhNTEzNjU1ZTg4ODE3MmIuLjJhMzNjOWFhNTFlYWI1Yjc2NjhmNjA5Njg0YTIxMWE3
YjdkNWMzZTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlk
bAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5pZGwKQEAgLTY3Niw3ICs2
NzYsNyBAQCBlbnVtIENvbXBvc2l0aW5nUG9saWN5IHsKICAgICBbQ29uZGl0aW9uYWw9VklERU8s
IE1heVRocm93RXhjZXB0aW9uXSB2b2lkIHNldE1lZGlhU2Vzc2lvblJlc3RyaWN0aW9ucyhET01T
dHJpbmcgbWVkaWFUeXBlLCBET01TdHJpbmcgcmVzdHJpY3Rpb25zKTsKICAgICBbQ29uZGl0aW9u
YWw9VklERU8sIE1heVRocm93RXhjZXB0aW9uXSBET01TdHJpbmcgbWVkaWFTZXNzaW9uUmVzdHJp
Y3Rpb25zKERPTVN0cmluZyBtZWRpYVR5cGUpOwogICAgIFtDb25kaXRpb25hbD1WSURFT10gdm9p
ZCBzZXRNZWRpYUVsZW1lbnRSZXN0cmljdGlvbnMoSFRNTE1lZGlhRWxlbWVudCBlbGVtZW50LCBE
T01TdHJpbmcgcmVzdHJpY3Rpb25zKTsKLSAgICBbQ29uZGl0aW9uYWw9V0VCX0FVRElPXSB2b2lk
IHNldEF1ZGlvQ29udGV4dFJlc3RyaWN0aW9ucyhBdWRpb0NvbnRleHQgY29udGV4dCwgRE9NU3Ry
aW5nIHJlc3RyaWN0aW9ucyk7CisgICAgW0NvbmRpdGlvbmFsPVdFQl9BVURJT10gdm9pZCBzZXRB
dWRpb0NvbnRleHRSZXN0cmljdGlvbnMoKEF1ZGlvQ29udGV4dCBvciBXZWJLaXRBdWRpb0NvbnRl
eHQpIGNvbnRleHQsIERPTVN0cmluZyByZXN0cmljdGlvbnMpOwogICAgIFtDb25kaXRpb25hbD1W
SURFTywgTWF5VGhyb3dFeGNlcHRpb25dIHZvaWQgcG9zdFJlbW90ZUNvbnRyb2xDb21tYW5kKERP
TVN0cmluZyBjb21tYW5kLCBvcHRpb25hbCB1bnJlc3RyaWN0ZWQgZmxvYXQgYXJndW1lbnQgPSAw
KTsKICAgICBbQ29uZGl0aW9uYWw9V0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUXSB2b2lkIHNldE1v
Y2tNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyRW5hYmxlZChib29sZWFuIGVuYWJsZWQpOwogICAg
IFtDb25kaXRpb25hbD1XSVJFTEVTU19QTEFZQkFDS19UQVJHRVQsIE1heVRocm93RXhjZXB0aW9u
XSB2b2lkIHNldE1vY2tNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyU3RhdGUoRE9NU3RyaW5nIGRl
dmljZU5hbWUsIERPTVN0cmluZyBkZXZpY2VTdGF0ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9XZWJQcmVmZXJlbmNlcy55YW1sIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2Vi
UHJlZmVyZW5jZXMueWFtbAppbmRleCBmYWQxYTlmNTg4NjIxZTk1ZTE5YjFhNGZlNzRlYTMwMjM2
NDI0MTNkLi41MjM1Y2U3MWZmN2E5MzJlMTIzOGM2NDAxOWRhMzEyYzU5MTZkYjZmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQcmVmZXJlbmNlcy55YW1sCisrKyBiL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL1dlYlByZWZlcmVuY2VzLnlhbWwKQEAgLTMzNCw2ICszMzQsMTQgQEAg
V2ViQXVkaW9FbmFibGVkOgogICBkZWZhdWx0VmFsdWU6IHRydWUKICAgY29uZGl0aW9uOiBFTkFC
TEUoV0VCX0FVRElPKQogCitNb2Rlcm5VbnByZWZpeGVkV2ViQXVkaW9FbmFibGVkOgorICB0eXBl
OiBib29sCisgIGRlZmF1bHRWYWx1ZTogZmFsc2UKKyAgY29uZGl0aW9uOiBFTkFCTEUoV0VCX0FV
RElPKQorICBodW1hblJlYWRhYmxlTmFtZTogIk1vZGVybiBXZWJBdWRpbyBBUEkiCisgIGh1bWFu
UmVhZGFibGVEZXNjcmlwdGlvbjogIk1vZGVybiBhbmQgdW5wcmVmaXhlZCBXZWJBdWRpbyBBUEki
CisgIGNhdGVnb3J5OiBleHBlcmltZW50YWwKKwogQXR0YWNobWVudEVsZW1lbnRFbmFibGVkOgog
ICB0eXBlOiBib29sCiAgIGRlZmF1bHRWYWx1ZTogZmFsc2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViUHJlZmVyZW5jZUtleXNQcml2YXRlLmggYi9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlByZWZlcmVuY2VLZXlzUHJpdmF0ZS5oCmlu
ZGV4IDE1NjQ0MWU3Mjg5YzBkM2RlMjQ5ODA1ODQ3NDg0NDc0OTI4OGU2MjMuLjhhMjNlMTM0NTBm
YmJhYWZmMWYzMjIzOWYzM2Y4M2Q2OGYyNjI1OTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL1dlYlZpZXcvV2ViUHJlZmVyZW5jZUtleXNQcml2YXRlLmgKKysrIGIvU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJQcmVmZXJlbmNlS2V5c1ByaXZhdGUuaApAQCAt
MTE4LDYgKzExOCw3IEBACiAjZGVmaW5lIFdlYktpdENvbnRlbnRDaGFuZ2VPYnNlcnZlckVuYWJs
ZWRQcmVmZXJlbmNlS2V5IEAiV2ViS2l0Q29udGVudENoYW5nZU9ic2VydmVyRW5hYmxlZCIKICNk
ZWZpbmUgV2ViS2l0U2hvd1JlcGFpbnRDb3VudGVyUHJlZmVyZW5jZUtleSBAIldlYktpdFNob3dS
ZXBhaW50Q291bnRlciIKICNkZWZpbmUgV2ViS2l0V2ViQXVkaW9FbmFibGVkUHJlZmVyZW5jZUtl
eSBAIldlYktpdFdlYkF1ZGlvRW5hYmxlZCIKKyNkZWZpbmUgV2ViS2l0TW9kZXJuVW5wcmVmaXhl
ZFdlYkF1ZGlvRW5hYmxlZFByZWZlcmVuY2VLZXkgQCJXZWJLaXRNb2Rlcm5VbnByZWZpeGVkV2Vi
QXVkaW9FbmFibGVkIgogI2RlZmluZSBXZWJLaXRXZWJHTEVuYWJsZWRQcmVmZXJlbmNlS2V5IEAi
V2ViS2l0V2ViR0xFbmFibGVkIgogI2RlZmluZSBXZWJLaXRXZWJHTDJFbmFibGVkUHJlZmVyZW5j
ZUtleSBAIldlYktpdFdlYkdMMkVuYWJsZWQiCiAjZGVmaW5lIFdlYktpdFdlYkdQVUVuYWJsZWRQ
cmVmZXJlbmNlS2V5IEAiV2ViS2l0V2ViR1BVRW5hYmxlZCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViUHJlZmVyZW5jZXMubW0gYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9XZWJWaWV3L1dlYlByZWZlcmVuY2VzLm1tCmluZGV4IGI4NTI4ZDJlMDdiOWM2
NzAyYjBlNTZjNDRhMWRhNDkwZWU3NGNjY2YuLjVjOGQzY2ZmOGZkMjdhYzU0ODM2OWQ1M2QxY2Uz
YzkyM2M5NjFiNTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcv
V2ViUHJlZmVyZW5jZXMubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9X
ZWJQcmVmZXJlbmNlcy5tbQpAQCAtNTc0LDYgKzU3NCw3IEBAICsgKHZvaWQpaW5pdGlhbGl6ZQog
ICAgICAgICBATk8sIFdlYktpdERpYWdub3N0aWNMb2dnaW5nRW5hYmxlZEtleSwKICAgICAgICAg
QChXZWJBbGxvd0FsbFN0b3JhZ2UpLCBXZWJLaXRTdG9yYWdlQmxvY2tpbmdQb2xpY3lLZXksCiAg
ICAgICAgIEBOTywgV2ViS2l0UGx1Z0luU25hcHNob3R0aW5nRW5hYmxlZFByZWZlcmVuY2VLZXks
CisgICAgICAgIEBOTywgV2ViS2l0TW9kZXJuVW5wcmVmaXhlZFdlYkF1ZGlvRW5hYmxlZFByZWZl
cmVuY2VLZXksCiAKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgICAgICBAWUVTLCBXZWJL
aXRDb250ZW50Q2hhbmdlT2JzZXJ2ZXJFbmFibGVkUHJlZmVyZW5jZUtleSwKQEAgLTIxNDgsNiAr
MjE0OSwxNiBAQCAtICh2b2lkKXNldFdlYkF1ZGlvRW5hYmxlZDooQk9PTCllbmFibGVkCiAgICAg
W3NlbGYgX3NldEJvb2xWYWx1ZTplbmFibGVkIGZvcktleTpXZWJLaXRXZWJBdWRpb0VuYWJsZWRQ
cmVmZXJlbmNlS2V5XTsKIH0KIAorLSAoQk9PTCltb2Rlcm5VbnByZWZpeGVkV2ViQXVkaW9FbmFi
bGVkCit7CisgICAgcmV0dXJuIFtzZWxmIF9ib29sVmFsdWVGb3JLZXk6V2ViS2l0TW9kZXJuVW5w
cmVmaXhlZFdlYkF1ZGlvRW5hYmxlZFByZWZlcmVuY2VLZXldOworfQorCistICh2b2lkKXNldE1v
ZGVyblVucHJlZml4ZWRXZWJBdWRpb0VuYWJsZWQ6KEJPT0wpZW5hYmxlZAoreworICAgIFtzZWxm
IF9zZXRCb29sVmFsdWU6ZW5hYmxlZCBmb3JLZXk6V2ViS2l0TW9kZXJuVW5wcmVmaXhlZFdlYkF1
ZGlvRW5hYmxlZFByZWZlcmVuY2VLZXldOworfQorCiAtIChCT09MKXN1YnBpeGVsQ1NTT01FbGVt
ZW50TWV0cmljc0VuYWJsZWQKIHsKICAgICByZXR1cm4gW3NlbGYgX2Jvb2xWYWx1ZUZvcktleTpX
ZWJLaXRTdWJwaXhlbENTU09NRWxlbWVudE1ldHJpY3NFbmFibGVkUHJlZmVyZW5jZUtleV07CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlByZWZlcmVuY2Vz
UHJpdmF0ZS5oIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJQcmVmZXJlbmNl
c1ByaXZhdGUuaAppbmRleCA4Yzg2NmViOGE4OWQ3Yjg4NTc0NDg1YTYxNzU2YWNmYmZmYmRhM2Fk
Li5hNDUwOTQ3MWEwMDM0NWM0ZDQ3ZTdkNWNjMmRkMGQ0ZjNjN2ZkYzVlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlByZWZlcmVuY2VzUHJpdmF0ZS5oCisr
KyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViUHJlZmVyZW5jZXNQcml2YXRl
LmgKQEAgLTI2OSw2ICsyNjksOSBAQCBleHRlcm4gTlNTdHJpbmcgKldlYlByZWZlcmVuY2VzQ2Fj
aGVNb2RlbENoYW5nZWRJbnRlcm5hbE5vdGlmaWNhdGlvbiBXRUJLSVRfREVQUgogLSAoQk9PTCl3
ZWJBdWRpb0VuYWJsZWQ7CiAtICh2b2lkKXNldFdlYkF1ZGlvRW5hYmxlZDooQk9PTCllbmFibGVk
OwogCistIChCT09MKW1vZGVyblVucHJlZml4ZWRXZWJBdWRpb0VuYWJsZWQ7CistICh2b2lkKXNl
dE1vZGVyblVucHJlZml4ZWRXZWJBdWRpb0VuYWJsZWQ6KEJPT0wpZW5hYmxlZDsKKwogLSAoQk9P
TClzdWJwaXhlbENTU09NRWxlbWVudE1ldHJpY3NFbmFibGVkOwogLSAodm9pZClzZXRTdWJwaXhl
bENTU09NRWxlbWVudE1ldHJpY3NFbmFibGVkOihCT09MKWVuYWJsZWQ7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmlldy5tbSBiL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQppbmRleCAyOTljYjFjYTc5MzRiYThhYWEz
ZDYyMGNmNjE1OTRiZTY0MGIwMzlhLi44NTEyMTMyNTIwOGI4ZWRhNGIyOTk4YzJhOTEyNWJiYjFh
MzY5ZjM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZp
ZXcubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCkBA
IC0zMjY3LDYgKzMyNjcsNyBAQCAtICh2b2lkKV9wcmVmZXJlbmNlc0NoYW5nZWQ6KFdlYlByZWZl
cmVuY2VzICopcHJlZmVyZW5jZXMKIAogI2lmIEVOQUJMRShXRUJfQVVESU8pCiAgICAgc2V0dGlu
Z3Muc2V0V2ViQXVkaW9FbmFibGVkKFtwcmVmZXJlbmNlcyB3ZWJBdWRpb0VuYWJsZWRdKTsKKyAg
ICBzZXR0aW5ncy5zZXRNb2Rlcm5VbnByZWZpeGVkV2ViQXVkaW9FbmFibGVkKFtwcmVmZXJlbmNl
cyBtb2Rlcm5VbnByZWZpeGVkV2ViQXVkaW9FbmFibGVkXSk7CiAjZW5kaWYKIAogI2lmIEVOQUJM
RShGVUxMU0NSRUVOX0FQSSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dl
YlByZWZlcmVuY2VLZXlzUHJpdmF0ZS5oIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViUHJl
ZmVyZW5jZUtleXNQcml2YXRlLmgKaW5kZXggODA0NTMxYTQ2YmZiNTcyM2Y2ZWQxY2FjMzJmOTU4
ZjEzM2ZlYzI4My4uMmEyMTIxYWRiOTY4Njk4NDEyMWMwZTRiYThkYWZmY2E3YmNjNmNhYiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViUHJlZmVyZW5jZUtleXNQcml2YXRl
LmgKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViUHJlZmVyZW5jZUtleXNQcml2YXRl
LmgKQEAgLTc1LDYgKzc1LDcgQEAKICNkZWZpbmUgV2ViS2l0TG9jYWxTdG9yYWdlRGF0YWJhc2VQ
YXRoUHJlZmVyZW5jZUtleSAiV2ViS2l0TG9jYWxTdG9yYWdlRGF0YWJhc2VQYXRoIgogI2RlZmlu
ZSBXZWJLaXRIeXBlcmxpbmtBdWRpdGluZ0VuYWJsZWRQcmVmZXJlbmNlS2V5ICJXZWJLaXRIeXBl
cmxpbmtBdWRpdGluZ0VuYWJsZWQiCiAjZGVmaW5lIFdlYktpdFdlYkF1ZGlvRW5hYmxlZFByZWZl
cmVuY2VLZXkgIldlYktpdFdlYkF1ZGlvRW5hYmxlZCIKKyNkZWZpbmUgV2ViS2l0TW9kZXJuVW5w
cmVmaXhlZFdlYkF1ZGlvRW5hYmxlZFByZWZlcmVuY2VLZXkgIldlYktpdFdlYkF1ZGlvRW5hYmxl
ZCIKICNkZWZpbmUgV2ViS2l0U2hvdWxkRGlzcGxheVN1YnRpdGxlc1ByZWZlcmVuY2VLZXkgIldl
YktpdFNob3VsZERpc3BsYXlTdWJ0aXRsZXMiCiAjZGVmaW5lIFdlYktpdFNob3VsZERpc3BsYXlD
YXB0aW9uc1ByZWZlcmVuY2VLZXkgIldlYktpdFNob3VsZERpc3BsYXlDYXB0aW9ucyIKICNkZWZp
bmUgV2ViS2l0U2hvdWxkRGlzcGxheVRleHREZXNjcmlwdGlvbnNQcmVmZXJlbmNlS2V5ICJXZWJL
aXRTaG91bGREaXNwbGF5VGV4dERlc2NyaXB0aW9ucyIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXRMZWdhY3kvd2luL1dlYlByZWZlcmVuY2VzLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2lu
L1dlYlByZWZlcmVuY2VzLmNwcAppbmRleCA1ODI2ZTQxOTU4YzAzMzg4OTIzY2YzODllYjdkMmE4
NjVmMzdmMTUzLi45M2RlOGEzMjBhYTE1ODM0OWEwNzIwNWQwNGUyZWE0YzQxNDlmMjk0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJQcmVmZXJlbmNlcy5jcHAKKysrIGIv
U291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViUHJlZmVyZW5jZXMuY3BwCkBAIC0yMzIsNiArMjMy
LDcgQEAgdm9pZCBXZWJQcmVmZXJlbmNlczo6aW5pdGlhbGl6ZURlZmF1bHRTZXR0aW5ncygpCiAg
ICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVmYXVsdHMsIENGU1RSKFdlYktpdEphdmFTY3JpcHRS
dW50aW1lRmxhZ3NQcmVmZXJlbmNlS2V5KSwgQ0ZTVFIoIjAiKSk7CiAgICAgQ0ZEaWN0aW9uYXJ5
QWRkVmFsdWUoZGVmYXVsdHMsIENGU1RSKFdlYktpdFdlYlNlY3VyaXR5RW5hYmxlZFByZWZlcmVu
Y2VLZXkpLCBrQ0ZCb29sZWFuVHJ1ZSk7CiAgICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVmYXVs
dHMsIENGU1RSKFdlYktpdEFsbG93VG9wTmF2aWdhdGlvblRvRGF0YVVSTHNQcmVmZXJlbmNlS2V5
KSwga0NGQm9vbGVhbkZhbHNlKTsKKyAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShkZWZhdWx0cywg
Q0ZTVFIoV2ViS2l0V2ViQXVkaW9FbmFibGVkUHJlZmVyZW5jZUtleSksIGtDRkJvb2xlYW5GYWxz
ZSk7CiAgICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVmYXVsdHMsIENGU1RSKFdlYktpdEFsbG93
VW5pdmVyc2FsQWNjZXNzRnJvbUZpbGVVUkxzUHJlZmVyZW5jZUtleSksIGtDRkJvb2xlYW5GYWxz
ZSk7CiAgICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVmYXVsdHMsIENGU1RSKFdlYktpdEFsbG93
RmlsZUFjY2Vzc0Zyb21GaWxlVVJMc1ByZWZlcmVuY2VLZXkpLCBrQ0ZCb29sZWFuVHJ1ZSk7CiAg
ICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVmYXVsdHMsIENGU1RSKFdlYktpdEphdmFTY3JpcHRD
YW5BY2Nlc3NDbGlwYm9hcmRQcmVmZXJlbmNlS2V5KSwga0NGQm9vbGVhbkZhbHNlKTsKQEAgLTI0
OTksMyArMjUwMCwxNyBAQCBIUkVTVUxUIFdlYlByZWZlcmVuY2VzOjpzZXRBbGxvd1RvcE5hdmln
YXRpb25Ub0RhdGFVUkxzKEJPT0wgYWxsb3dBY2Nlc3MpCiAgICAgc2V0Qm9vbFZhbHVlKFdlYktp
dEFsbG93VG9wTmF2aWdhdGlvblRvRGF0YVVSTHNQcmVmZXJlbmNlS2V5LCBhbGxvd0FjY2Vzcyk7
CiAgICAgcmV0dXJuIFNfT0s7CiB9CisKK0hSRVNVTFQgV2ViUHJlZmVyZW5jZXM6Om1vZGVyblVu
cHJlZml4ZWRXZWJBdWRpb0VuYWJsZWQoX091dF8gQk9PTCogZW5hYmxlZCkKK3sKKyAgICBpZiAo
IWVuYWJsZWQpCisgICAgICAgIHJldHVybiBFX1BPSU5URVI7CisgICAgKmVuYWJsZWQgPSBib29s
VmFsdWVGb3JLZXkoV2ViS2l0V2ViQXVkaW9FbmFibGVkUHJlZmVyZW5jZUtleSk7CisgICAgcmV0
dXJuIFNfT0s7Cit9CisKK0hSRVNVTFQgV2ViUHJlZmVyZW5jZXM6OnNldE1vZGVyblVucHJlZml4
ZWRXZWJBdWRpb0VuYWJsZWQoQk9PTCBlbmFibGVkKQoreworICAgIHNldEJvb2xWYWx1ZShXZWJL
aXRXZWJBdWRpb0VuYWJsZWRQcmVmZXJlbmNlS2V5LCBlbmFibGVkKTsKKyAgICByZXR1cm4gU19P
SzsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlByZWZlcmVuY2Vz
LmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJQcmVmZXJlbmNlcy5oCmluZGV4IGY3ZmU3
Njg0MmI0ZGQyMzI5ODFlZmZmNzIxYzFmYTRiMTA5NzllOTguLjE0NTQxZTViOThkYWU5YjQ3MWRm
OTI2MTRkNjk3NzE5ZmVlZjQ0M2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2lu
L1dlYlByZWZlcmVuY2VzLmgKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViUHJlZmVy
ZW5jZXMuaApAQCAtMzA1LDYgKzMwNSw4IEBAIHB1YmxpYzoKICAgICAvLyBJV2ViUHJlZmVyZW5j
ZXNQcml2YXRlOAogICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBhbGxvd1Rv
cE5hdmlnYXRpb25Ub0RhdGFVUkxzKF9PdXRfIEJPT0wqKTsKICAgICB2aXJ0dWFsIEhSRVNVTFQg
U1RETUVUSE9EQ0FMTFRZUEUgc2V0QWxsb3dUb3BOYXZpZ2F0aW9uVG9EYXRhVVJMcyhCT09MKTsK
KyAgICB2aXJ0dWFsIE5SRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgbW9kZXJuVW5wcmVmaXhlZFdl
YkF1ZGlvRW5hYmxlZChfT3V0XyBCT09MKik7CisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhP
RENBTExUWVBFIHNldE1vZGVyblVucHJlZml4ZWRXZWJBdWRpb0VuYWJsZWQoQk9PTCk7CiAKICAg
ICAvLyBXZWJQcmVmZXJlbmNlcwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dp
bi9XZWJWaWV3LmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlZpZXcuY3BwCmluZGV4
IDI4ZjI5M2Q4YzdmN2RhNjliOGUxODEzYWY4OGQxNzllOGZhZmIyZjYuLmRiMjkxMTZiZmMyNTk5
NTJjZTZkZjMzZjM3MzY2MjlhNjdiOWJhMzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvd2luL1dlYlZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlZpZXcu
Y3BwCkBAIC01NTU2LDYgKzU1NTYsMTEgQEAgSFJFU1VMVCBXZWJWaWV3Ojpub3RpZnlQcmVmZXJl
bmNlc0NoYW5nZWQoSVdlYk5vdGlmaWNhdGlvbiogbm90aWZpY2F0aW9uKQogCiAjaWYgRU5BQkxF
KFdFQl9BVURJTykKICAgICBzZXR0aW5ncy5zZXRXZWJBdWRpb0VuYWJsZWQodHJ1ZSk7CisKKyAg
ICBociA9IHByZWZzUHJpdmF0ZS0+bW9kZXJuVW5wcmVmaXhlZFdlYkF1ZGlvRW5hYmxlZCgmZW5h
YmxlZCk7CisgICAgaWYgKEZBSUxFRChocikpCisgICAgICAgIHJldHVybiBocjsKKyAgICBzZXR0
aW5ncy5zZXRNb2Rlcm5VbnByZWZpeGVkV2ViQXVkaW9FbmFibGVkKCEhZW5hYmxlZCk7CiAjZW5k
aWYgLy8gRU5BQkxFKFdFQl9BVURJTykKIAogI2lmIEVOQUJMRShXRUJHTCkKZGlmZiAtLWdpdCBh
L1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9EdW1wUmVuZGVyVHJlZS5tbSBiL1Rvb2xzL0R1bXBS
ZW5kZXJUcmVlL21hYy9EdW1wUmVuZGVyVHJlZS5tbQppbmRleCBiODFhMWMzYzM1Mzc5YmQwOTAx
ZWU5MTA3ZDlkZWU3NzU3ZGRhZTM0Li44N2MwNGQ5MmZhNGNlNDcyMjE2ZThjMzhmYmVlOWJiZjcx
YTMyZDk5IDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvRHVtcFJlbmRlclRy
ZWUubW0KKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0R1bXBSZW5kZXJUcmVlLm1tCkBA
IC05NzksNiArOTc5LDcgQEAgc3RhdGljIHZvaWQgcmVzZXRXZWJQcmVmZXJlbmNlc1RvQ29uc2lz
dGVudFZhbHVlcygpCiAjZW5kaWYKIAogICAgIFtwcmVmZXJlbmNlcyBzZXRXZWJBdWRpb0VuYWJs
ZWQ6WUVTXTsKKyAgICBbcHJlZmVyZW5jZXMgc2V0TW9kZXJuVW5wcmVmaXhlZFdlYkF1ZGlvRW5h
YmxlZDpZRVNdOwogICAgIFtwcmVmZXJlbmNlcyBzZXRNZWRpYVNvdXJjZUVuYWJsZWQ6WUVTXTsK
ICAgICBbcHJlZmVyZW5jZXMgc2V0U291cmNlQnVmZmVyQ2hhbmdlVHlwZUVuYWJsZWQ6WUVTXTsK
IApkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL0R1bXBSZW5kZXJUcmVlLmNw
cCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9EdW1wUmVuZGVyVHJlZS5jcHAKaW5kZXggMGIz
N2FkNDVmZTE4YjJhOTQ2NWFjMzU3MjNiY2RjZTY5NTZmNjM2Mi4uZDBiOWQ4YzdlNzIwZmQ4MzBj
NmI2ZjBjYzA1ZDA1Yjk5MzVkZjA0OCAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUv
d2luL0R1bXBSZW5kZXJUcmVlLmNwcAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS93aW4vRHVt
cFJlbmRlclRyZWUuY3BwCkBAIC04MzYsNiArODM2LDcgQEAgc3RhdGljIHZvaWQgcmVzZXRXZWJQ
cmVmZXJlbmNlc1RvQ29uc2lzdGVudFZhbHVlcyhJV2ViUHJlZmVyZW5jZXMqIHByZWZlcmVuY2Vz
KQogI2VuZGlmCiAKICAgICBwcmVmc1ByaXZhdGUtPnNldEFsbG93VG9wTmF2aWdhdGlvblRvRGF0
YVVSTHMoVFJVRSk7CisgICAgcHJlZnNQcml2YXRlLT5zZXRNb2Rlcm5VbnByZWZpeGVkV2ViQXVk
aW9FbmFibGVkKFRSVUUpOwogICAgIHByZWZzUHJpdmF0ZS0+c2V0QWxsb3dVbml2ZXJzYWxBY2Nl
c3NGcm9tRmlsZVVSTHMoVFJVRSk7CiAgICAgcHJlZnNQcml2YXRlLT5zZXRBbGxvd0ZpbGVBY2Nl
c3NGcm9tRmlsZVVSTHMoVFJVRSk7CiAgICAgcHJlZmVyZW5jZXMtPnNldFN0YW5kYXJkRm9udEZh
bWlseShzdGFuZGFyZEZhbWlseSk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2MvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0NoYW5nZUxvZwppbmRleCA2
M2ExYjc5MjFlMDBlYzFlNGI4ZTY0ODQ3NzU5ZWJiOWM1NzI3OGZkLi5mZTRkZmI5ZDAwNjkzMzEx
NjVkMWEyNzFkYzg0ZWY4MjY4MzM0NDBiIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2MvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9DaGFuZ2VMb2cK
QEAgLTEsMyArMSwxOCBAQAorMjAyMC0wNi0xNyAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUu
Y29tPgorCisgICAgICAgIEFkZCBleHBlcmltZW50YWwgZmVhdHVyZSBmbGFnIGZvciBtb2Rlcm4g
JiB1bnByZWZpeGVkIFdlYkF1ZGlvIEFQSQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MjEzMjY4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgSmVyIE5vYmxl
LgorCisgICAgICAgIFJlYmFzZWxpbmUgYSBmZXcgd2ViLXBsYXRmb3JtLXRlc3RzIG5vdyB0aGF0
IHRoZXkgYXJlIHBhc3Npbmcgb3IgZmFpbGluZyBhdCBhIGxhdGVyIHN0YWdlLgorICAgICAgICBU
aGlzIGlzIGR1ZSB0byBvdXIgV2ViQXVkaW8gZ2V0dGluZyBwcm9wZXJseSB1bnByZWZpeGVkIGlu
IHRoZSBjb250ZXh0IG9mIGxheW91dCB0ZXN0cy4KKworICAgICAgICAqIHdlYi1wbGF0Zm9ybS10
ZXN0cy93ZWJhdWRpby9pZGxoYXJuZXNzLmh0dHBzLndpbmRvdy1leHBlY3RlZC50eHQ6CisgICAg
ICAgICogd2ViLXBsYXRmb3JtLXRlc3RzL3dlYmF1ZGlvL3RoZS1hdWRpby1hcGkvdGhlLWF1ZGlv
Y29udGV4dC1pbnRlcmZhY2UvYXVkaW9jb250ZXh0LWRldGFjaGVkLWV4ZWN1dGlvbi1jb250ZXh0
LnRlbnRhdGl2ZS1leHBlY3RlZC50eHQ6CisgICAgICAgICogd2ViLXBsYXRmb3JtLXRlc3RzL3dl
YmF1ZGlvL3RoZS1hdWRpby1hcGkvdGhlLWF1ZGlvbm9kZS1pbnRlcmZhY2UvYXVkaW9ub2RlLWNv
bm5lY3QtbWV0aG9kLWNoYWluaW5nLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiB3ZWItcGxhdGZv
cm0tdGVzdHMvd2ViYXVkaW8vdGhlLWF1ZGlvLWFwaS90aGUtb2ZmbGluZWF1ZGlvY29udGV4dC1p
bnRlcmZhY2Uvb2ZmbGluZWF1ZGlvY29udGV4dC1kZXRhY2hlZC1leGVjdXRpb24tY29udGV4dC50
ZW50YXRpdmUtZXhwZWN0ZWQudHh0OgorCiAyMDIwLTA2LTE3ICBEYXJyeWwgUG9ndWUgIDxkYXJy
eWxAZHBvZ3VlLmNhPgogCiAgICAgICAgIEluZGV4ZWREQjogU3VwcG9ydCBJREJGYWN0b3J5IGRh
dGFiYXNlcyBtZXRob2QKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL2NhbGwtYS1j
b25zdHJ1Y3Rvci1hcy1hLWZ1bmN0aW9uLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3Qv
ZG9tL2NhbGwtYS1jb25zdHJ1Y3Rvci1hcy1hLWZ1bmN0aW9uLWV4cGVjdGVkLnR4dAppbmRleCA4
YTE4MDFjYTIyZmM2NmVlZGEzOTJjZDNmN2FmMGQ2MjE1ZjI5MmUwLi4yNzU0ZjQ4ZTVmMjU2MGM0
NmU4NThiOGU2MGUwNDJlYjhjZWQ2NjZlIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L2Rv
bS9jYWxsLWEtY29uc3RydWN0b3ItYXMtYS1mdW5jdGlvbi1leHBlY3RlZC50eHQKKysrIGIvTGF5
b3V0VGVzdHMvZmFzdC9kb20vY2FsbC1hLWNvbnN0cnVjdG9yLWFzLWEtZnVuY3Rpb24tZXhwZWN0
ZWQudHh0CkBAIC0zLDcgKzMsNyBAQCBUaGlzIHRlc3RzIGlmIFR5cGVFcnJvciBpcyB0aHJvd24g
b3Igbm90IHdoZW4gd2UgY2FsbCBhIGNvbnN0cnVjdG9yIGFzIGEgbm9ybWFsCiBPbiBzdWNjZXNz
LCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAi
VEVTVCBDT01QTEVURSIuCiAKIAotU0tJUCBBdWRpb0NvbnRleHQgaXMgbm90IGltcGxlbWVudGVk
LgorUEFTUyBBdWRpb0NvbnRleHQoKSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBDb25zdHJ1
Y3RvciByZXF1aXJlcyAnbmV3JyBvcGVyYXRvci4KIFBBU1MgRm9ybURhdGEoKSB0aHJldyBleGNl
cHRpb24gVHlwZUVycm9yOiBDb25zdHJ1Y3RvciByZXF1aXJlcyAnbmV3JyBvcGVyYXRvci4KIFBB
U1MgRXZlbnRTb3VyY2UoKSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBDb25zdHJ1Y3RvciBy
ZXF1aXJlcyAnbmV3JyBvcGVyYXRvci4KIFBBU1MgRmlsZVJlYWRlcigpIHRocmV3IGV4Y2VwdGlv
biBUeXBlRXJyb3I6IENvbnN0cnVjdG9yIHJlcXVpcmVzICduZXcnIG9wZXJhdG9yLgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJhdWRp
by9pZGxoYXJuZXNzLmh0dHBzLndpbmRvdy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYmF1ZGlvL2lkbGhhcm5lc3MuaHR0cHMud2lu
ZG93LWV4cGVjdGVkLnR4dAppbmRleCBjY2M3ZTllOGY3MWJmMWQ0MTI0ZGJjZGU4OTM2MTZjMjY0
MGJjM2FkLi44NTk4ZGRhZmUwODAxZjg2M2M3YzkwM2QyMTAyNGU2OGNiMWI4NzYxIDEwMDY0NAot
LS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYmF1ZGlv
L2lkbGhhcm5lc3MuaHR0cHMud2luZG93LWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYmF1ZGlvL2lkbGhhcm5lc3MuaHR0cHMu
d2luZG93LWV4cGVjdGVkLnR4dApAQCAtNDMsNyArNDMsNyBAQCBGQUlMIEJhc2VBdWRpb0NvbnRl
eHQgaW50ZXJmYWNlOiBvcGVyYXRpb24gY3JlYXRlV2F2ZVNoYXBlcigpIGFzc2VydF9vd25fcHJv
cGVydAogRkFJTCBCYXNlQXVkaW9Db250ZXh0IGludGVyZmFjZTogb3BlcmF0aW9uIGRlY29kZUF1
ZGlvRGF0YShBcnJheUJ1ZmZlciwgb3B0aW9uYWwgRGVjb2RlU3VjY2Vzc0NhbGxiYWNrPywgb3B0
aW9uYWwgRGVjb2RlRXJyb3JDYWxsYmFjaz8pIGFzc2VydF9vd25fcHJvcGVydHk6IHNlbGYgZG9l
cyBub3QgaGF2ZSBvd24gcHJvcGVydHkgIkJhc2VBdWRpb0NvbnRleHQiIGV4cGVjdGVkIHByb3Bl
cnR5ICJCYXNlQXVkaW9Db250ZXh0IiBtaXNzaW5nCiBGQUlMIEF1ZGlvQ29udGV4dCBpbnRlcmZh
Y2U6IGV4aXN0ZW5jZSBhbmQgcHJvcGVydGllcyBvZiBpbnRlcmZhY2Ugb2JqZWN0IGFzc2VydF9v
d25fcHJvcGVydHk6IHNlbGYgZG9lcyBub3QgaGF2ZSBvd24gcHJvcGVydHkgIkJhc2VBdWRpb0Nv
bnRleHQiIGV4cGVjdGVkIHByb3BlcnR5ICJCYXNlQXVkaW9Db250ZXh0IiBtaXNzaW5nCiBQQVNT
IEF1ZGlvQ29udGV4dCBpbnRlcmZhY2Ugb2JqZWN0IGxlbmd0aCAKLUZBSUwgQXVkaW9Db250ZXh0
IGludGVyZmFjZSBvYmplY3QgbmFtZSBhc3NlcnRfZXF1YWxzOiB3cm9uZyB2YWx1ZSBmb3IgQXVk
aW9Db250ZXh0Lm5hbWUgZXhwZWN0ZWQgIkF1ZGlvQ29udGV4dCIgYnV0IGdvdCAid2Via2l0QXVk
aW9Db250ZXh0IgorUEFTUyBBdWRpb0NvbnRleHQgaW50ZXJmYWNlIG9iamVjdCBuYW1lIAogRkFJ
TCBBdWRpb0NvbnRleHQgaW50ZXJmYWNlOiBleGlzdGVuY2UgYW5kIHByb3BlcnRpZXMgb2YgaW50
ZXJmYWNlIHByb3RvdHlwZSBvYmplY3QgYXNzZXJ0X293bl9wcm9wZXJ0eTogc2VsZiBkb2VzIG5v
dCBoYXZlIG93biBwcm9wZXJ0eSAiQmFzZUF1ZGlvQ29udGV4dCIgZXhwZWN0ZWQgcHJvcGVydHkg
IkJhc2VBdWRpb0NvbnRleHQiIG1pc3NpbmcKIFBBU1MgQXVkaW9Db250ZXh0IGludGVyZmFjZTog
ZXhpc3RlbmNlIGFuZCBwcm9wZXJ0aWVzIG9mIGludGVyZmFjZSBwcm90b3R5cGUgb2JqZWN0J3Mg
ImNvbnN0cnVjdG9yIiBwcm9wZXJ0eSAKIFBBU1MgQXVkaW9Db250ZXh0IGludGVyZmFjZTogZXhp
c3RlbmNlIGFuZCBwcm9wZXJ0aWVzIG9mIGludGVyZmFjZSBwcm90b3R5cGUgb2JqZWN0J3MgQEB1
bnNjb3BhYmxlcyBwcm9wZXJ0eSAKQEAgLTU4LDcgKzU4LDcgQEAgUEFTUyBBdWRpb0NvbnRleHQg
aW50ZXJmYWNlOiBvcGVyYXRpb24gY3JlYXRlTWVkaWFTdHJlYW1Tb3VyY2UoTWVkaWFTdHJlYW0p
CiBGQUlMIEF1ZGlvQ29udGV4dCBpbnRlcmZhY2U6IG9wZXJhdGlvbiBjcmVhdGVNZWRpYVN0cmVh
bVRyYWNrU291cmNlKE1lZGlhU3RyZWFtVHJhY2spIGFzc2VydF9vd25fcHJvcGVydHk6IGludGVy
ZmFjZSBwcm90b3R5cGUgb2JqZWN0IG1pc3Npbmcgbm9uLXN0YXRpYyBvcGVyYXRpb24gZXhwZWN0
ZWQgcHJvcGVydHkgImNyZWF0ZU1lZGlhU3RyZWFtVHJhY2tTb3VyY2UiIG1pc3NpbmcKIFBBU1Mg
QXVkaW9Db250ZXh0IGludGVyZmFjZTogb3BlcmF0aW9uIGNyZWF0ZU1lZGlhU3RyZWFtRGVzdGlu
YXRpb24oKSAKIFBBU1MgQXVkaW9Db250ZXh0IG11c3QgYmUgcHJpbWFyeSBpbnRlcmZhY2Ugb2Yg
Y29udGV4dCAKLUZBSUwgU3RyaW5naWZpY2F0aW9uIG9mIGNvbnRleHQgYXNzZXJ0X2NsYXNzX3N0
cmluZzogY2xhc3Mgc3RyaW5nIG9mIGNvbnRleHQgZXhwZWN0ZWQgIltvYmplY3QgQXVkaW9Db250
ZXh0XSIgYnV0IGdvdCAiW29iamVjdCB3ZWJraXRBdWRpb0NvbnRleHRdIgorUEFTUyBTdHJpbmdp
ZmljYXRpb24gb2YgY29udGV4dCAKIEZBSUwgQXVkaW9Db250ZXh0IGludGVyZmFjZTogY29udGV4
dCBtdXN0IGluaGVyaXQgcHJvcGVydHkgImJhc2VMYXRlbmN5IiB3aXRoIHRoZSBwcm9wZXIgdHlw
ZSBhc3NlcnRfaW5oZXJpdHM6IHByb3BlcnR5ICJiYXNlTGF0ZW5jeSIgbm90IGZvdW5kIGluIHBy
b3RvdHlwZSBjaGFpbgogRkFJTCBBdWRpb0NvbnRleHQgaW50ZXJmYWNlOiBjb250ZXh0IG11c3Qg
aW5oZXJpdCBwcm9wZXJ0eSAib3V0cHV0TGF0ZW5jeSIgd2l0aCB0aGUgcHJvcGVyIHR5cGUgYXNz
ZXJ0X2luaGVyaXRzOiBwcm9wZXJ0eSAib3V0cHV0TGF0ZW5jeSIgbm90IGZvdW5kIGluIHByb3Rv
dHlwZSBjaGFpbgogRkFJTCBBdWRpb0NvbnRleHQgaW50ZXJmYWNlOiBjb250ZXh0IG11c3QgaW5o
ZXJpdCBwcm9wZXJ0eSAiZ2V0T3V0cHV0VGltZXN0YW1wKCkiIHdpdGggdGhlIHByb3BlciB0eXBl
IGFzc2VydF9pbmhlcml0czogcHJvcGVydHkgImdldE91dHB1dFRpbWVzdGFtcCIgbm90IGZvdW5k
IGluIHByb3RvdHlwZSBjaGFpbgpAQCAtMTA4LDcgKzEwOCw3IEBAIFBBU1MgQmFzZUF1ZGlvQ29u
dGV4dCBpbnRlcmZhY2U6IGNvbnRleHQgbXVzdCBpbmhlcml0IHByb3BlcnR5ICJkZWNvZGVBdWRp
b0RhdGEoCiBGQUlMIEJhc2VBdWRpb0NvbnRleHQgaW50ZXJmYWNlOiBjYWxsaW5nIGRlY29kZUF1
ZGlvRGF0YShBcnJheUJ1ZmZlciwgb3B0aW9uYWwgRGVjb2RlU3VjY2Vzc0NhbGxiYWNrPywgb3B0
aW9uYWwgRGVjb2RlRXJyb3JDYWxsYmFjaz8pIG9uIGNvbnRleHQgd2l0aCB0b28gZmV3IGFyZ3Vt
ZW50cyBtdXN0IHRocm93IFR5cGVFcnJvciBhc3NlcnRfdW5yZWFjaGVkOiBUaHJvd3MgIlR5cGVF
cnJvcjogTm90IGVub3VnaCBhcmd1bWVudHMiIGluc3RlYWQgb2YgcmVqZWN0aW5nIHByb21pc2Ug
UmVhY2hlZCB1bnJlYWNoYWJsZSBjb2RlCiBGQUlMIE9mZmxpbmVBdWRpb0NvbnRleHQgaW50ZXJm
YWNlOiBleGlzdGVuY2UgYW5kIHByb3BlcnRpZXMgb2YgaW50ZXJmYWNlIG9iamVjdCBhc3NlcnRf
b3duX3Byb3BlcnR5OiBzZWxmIGRvZXMgbm90IGhhdmUgb3duIHByb3BlcnR5ICJCYXNlQXVkaW9D
b250ZXh0IiBleHBlY3RlZCBwcm9wZXJ0eSAiQmFzZUF1ZGlvQ29udGV4dCIgbWlzc2luZwogRkFJ
TCBPZmZsaW5lQXVkaW9Db250ZXh0IGludGVyZmFjZSBvYmplY3QgbGVuZ3RoIGFzc2VydF9lcXVh
bHM6IHdyb25nIHZhbHVlIGZvciBPZmZsaW5lQXVkaW9Db250ZXh0Lmxlbmd0aCBleHBlY3RlZCAx
IGJ1dCBnb3QgMwotRkFJTCBPZmZsaW5lQXVkaW9Db250ZXh0IGludGVyZmFjZSBvYmplY3QgbmFt
ZSBhc3NlcnRfZXF1YWxzOiB3cm9uZyB2YWx1ZSBmb3IgT2ZmbGluZUF1ZGlvQ29udGV4dC5uYW1l
IGV4cGVjdGVkICJPZmZsaW5lQXVkaW9Db250ZXh0IiBidXQgZ290ICJ3ZWJraXRPZmZsaW5lQXVk
aW9Db250ZXh0IgorUEFTUyBPZmZsaW5lQXVkaW9Db250ZXh0IGludGVyZmFjZSBvYmplY3QgbmFt
ZSAKIEZBSUwgT2ZmbGluZUF1ZGlvQ29udGV4dCBpbnRlcmZhY2U6IGV4aXN0ZW5jZSBhbmQgcHJv
cGVydGllcyBvZiBpbnRlcmZhY2UgcHJvdG90eXBlIG9iamVjdCBhc3NlcnRfb3duX3Byb3BlcnR5
OiBzZWxmIGRvZXMgbm90IGhhdmUgb3duIHByb3BlcnR5ICJCYXNlQXVkaW9Db250ZXh0IiBleHBl
Y3RlZCBwcm9wZXJ0eSAiQmFzZUF1ZGlvQ29udGV4dCIgbWlzc2luZwogUEFTUyBPZmZsaW5lQXVk
aW9Db250ZXh0IGludGVyZmFjZTogZXhpc3RlbmNlIGFuZCBwcm9wZXJ0aWVzIG9mIGludGVyZmFj
ZSBwcm90b3R5cGUgb2JqZWN0J3MgImNvbnN0cnVjdG9yIiBwcm9wZXJ0eSAKIFBBU1MgT2ZmbGlu
ZUF1ZGlvQ29udGV4dCBpbnRlcmZhY2U6IGV4aXN0ZW5jZSBhbmQgcHJvcGVydGllcyBvZiBpbnRl
cmZhY2UgcHJvdG90eXBlIG9iamVjdCdzIEBAdW5zY29wYWJsZXMgcHJvcGVydHkgCkBAIC0xMTgs
NyArMTE4LDcgQEAgRkFJTCBPZmZsaW5lQXVkaW9Db250ZXh0IGludGVyZmFjZTogb3BlcmF0aW9u
IHN1c3BlbmQoZG91YmxlKSBhc3NlcnRfb3duX3Byb3BlcnQKIEZBSUwgT2ZmbGluZUF1ZGlvQ29u
dGV4dCBpbnRlcmZhY2U6IGF0dHJpYnV0ZSBsZW5ndGggYXNzZXJ0X3RydWU6IFRoZSBwcm90b3R5
cGUgb2JqZWN0IG11c3QgaGF2ZSBhIHByb3BlcnR5ICJsZW5ndGgiIGV4cGVjdGVkIHRydWUgZ290
IGZhbHNlCiBGQUlMIE9mZmxpbmVBdWRpb0NvbnRleHQgaW50ZXJmYWNlOiBhdHRyaWJ1dGUgb25j
b21wbGV0ZSBhc3NlcnRfb3duX3Byb3BlcnR5OiBleHBlY3RlZCBwcm9wZXJ0eSAib25jb21wbGV0
ZSIgbWlzc2luZwogUEFTUyBPZmZsaW5lQXVkaW9Db250ZXh0IG11c3QgYmUgcHJpbWFyeSBpbnRl
cmZhY2Ugb2YgbmV3IE9mZmxpbmVBdWRpb0NvbnRleHQoMSwgMSwgc2FtcGxlX3JhdGUpIAotRkFJ
TCBTdHJpbmdpZmljYXRpb24gb2YgbmV3IE9mZmxpbmVBdWRpb0NvbnRleHQoMSwgMSwgc2FtcGxl
X3JhdGUpIGFzc2VydF9jbGFzc19zdHJpbmc6IGNsYXNzIHN0cmluZyBvZiBuZXcgT2ZmbGluZUF1
ZGlvQ29udGV4dCgxLCAxLCBzYW1wbGVfcmF0ZSkgZXhwZWN0ZWQgIltvYmplY3QgT2ZmbGluZUF1
ZGlvQ29udGV4dF0iIGJ1dCBnb3QgIltvYmplY3Qgd2Via2l0T2ZmbGluZUF1ZGlvQ29udGV4dF0i
CitQQVNTIFN0cmluZ2lmaWNhdGlvbiBvZiBuZXcgT2ZmbGluZUF1ZGlvQ29udGV4dCgxLCAxLCBz
YW1wbGVfcmF0ZSkgCiBQQVNTIE9mZmxpbmVBdWRpb0NvbnRleHQgaW50ZXJmYWNlOiBuZXcgT2Zm
bGluZUF1ZGlvQ29udGV4dCgxLCAxLCBzYW1wbGVfcmF0ZSkgbXVzdCBpbmhlcml0IHByb3BlcnR5
ICJzdGFydFJlbmRlcmluZygpIiB3aXRoIHRoZSBwcm9wZXIgdHlwZSAKIFBBU1MgT2ZmbGluZUF1
ZGlvQ29udGV4dCBpbnRlcmZhY2U6IG5ldyBPZmZsaW5lQXVkaW9Db250ZXh0KDEsIDEsIHNhbXBs
ZV9yYXRlKSBtdXN0IGluaGVyaXQgcHJvcGVydHkgInJlc3VtZSgpIiB3aXRoIHRoZSBwcm9wZXIg
dHlwZSAKIFBBU1MgT2ZmbGluZUF1ZGlvQ29udGV4dCBpbnRlcmZhY2U6IG5ldyBPZmZsaW5lQXVk
aW9Db250ZXh0KDEsIDEsIHNhbXBsZV9yYXRlKSBtdXN0IGluaGVyaXQgcHJvcGVydHkgInN1c3Bl
bmQoZG91YmxlKSIgd2l0aCB0aGUgcHJvcGVyIHR5cGUgCkBAIC05MDQsNyArOTA0LDcgQEAgRkFJ
TCBBdWRpb05vZGUgaW50ZXJmYWNlOiBuZXcgT3NjaWxsYXRvck5vZGUoY29udGV4dCkgbXVzdCBp
bmhlcml0IHByb3BlcnR5ICJjaGEKIEZBSUwgQXVkaW9Ob2RlIGludGVyZmFjZTogbmV3IE9zY2ls
bGF0b3JOb2RlKGNvbnRleHQpIG11c3QgaW5oZXJpdCBwcm9wZXJ0eSAiY2hhbm5lbEludGVycHJl
dGF0aW9uIiB3aXRoIHRoZSBwcm9wZXIgdHlwZSBhc3NlcnRfZXF1YWxzOiBVbmV4cGVjdGVkIGV4
Y2VwdGlvbiB3aGVuIGV2YWx1YXRpbmcgb2JqZWN0IGV4cGVjdGVkIG51bGwgYnV0IGdvdCBvYmpl
Y3QgIlR5cGVFcnJvcjogZnVuY3Rpb24gaXMgbm90IGEgY29uc3RydWN0b3IgKGV2YWx1YXRpbmcg
J25ldyBPc2NpbGxhdG9yTm9kZShjb250ZXh0KScpIgogUEFTUyBQYW5uZXJOb2RlIGludGVyZmFj
ZTogZXhpc3RlbmNlIGFuZCBwcm9wZXJ0aWVzIG9mIGludGVyZmFjZSBvYmplY3QgCiBGQUlMIFBh
bm5lck5vZGUgaW50ZXJmYWNlIG9iamVjdCBsZW5ndGggYXNzZXJ0X2VxdWFsczogd3JvbmcgdmFs
dWUgZm9yIFBhbm5lck5vZGUubGVuZ3RoIGV4cGVjdGVkIDEgYnV0IGdvdCAwCi1GQUlMIFBhbm5l
ck5vZGUgaW50ZXJmYWNlIG9iamVjdCBuYW1lIGFzc2VydF9lcXVhbHM6IHdyb25nIHZhbHVlIGZv
ciBQYW5uZXJOb2RlLm5hbWUgZXhwZWN0ZWQgIlBhbm5lck5vZGUiIGJ1dCBnb3QgIndlYmtpdEF1
ZGlvUGFubmVyTm9kZSIKK1BBU1MgUGFubmVyTm9kZSBpbnRlcmZhY2Ugb2JqZWN0IG5hbWUgCiBQ
QVNTIFBhbm5lck5vZGUgaW50ZXJmYWNlOiBleGlzdGVuY2UgYW5kIHByb3BlcnRpZXMgb2YgaW50
ZXJmYWNlIHByb3RvdHlwZSBvYmplY3QgCiBQQVNTIFBhbm5lck5vZGUgaW50ZXJmYWNlOiBleGlz
dGVuY2UgYW5kIHByb3BlcnRpZXMgb2YgaW50ZXJmYWNlIHByb3RvdHlwZSBvYmplY3QncyAiY29u
c3RydWN0b3IiIHByb3BlcnR5IAogUEFTUyBQYW5uZXJOb2RlIGludGVyZmFjZTogZXhpc3RlbmNl
IGFuZCBwcm9wZXJ0aWVzIG9mIGludGVyZmFjZSBwcm90b3R5cGUgb2JqZWN0J3MgQEB1bnNjb3Bh
YmxlcyBwcm9wZXJ0eSAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvd2ViYXVkaW8vdGhlLWF1ZGlvLWFwaS90aGUtYXVkaW9jb250ZXh0LWlu
dGVyZmFjZS9hdWRpb2NvbnRleHQtZGV0YWNoZWQtZXhlY3V0aW9uLWNvbnRleHQudGVudGF0aXZl
LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvd2ViYXVkaW8vdGhlLWF1ZGlvLWFwaS90aGUtYXVkaW9jb250ZXh0LWludGVyZmFjZS9hdWRp
b2NvbnRleHQtZGV0YWNoZWQtZXhlY3V0aW9uLWNvbnRleHQudGVudGF0aXZlLWV4cGVjdGVkLnR4
dAppbmRleCAzNDRmY2Q5Yzk0MDViZWRmYTliMzQ3ZGViNzMxMmI3ZDQ0YjI4NzZmLi44YjhkZTkw
ZmNiYjU0ZmQ5YmM5NjYzZmE0OTM0NTUzOGNhMGZlMTEwIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYmF1ZGlvL3RoZS1hdWRpby1hcGkv
dGhlLWF1ZGlvY29udGV4dC1pbnRlcmZhY2UvYXVkaW9jb250ZXh0LWRldGFjaGVkLWV4ZWN1dGlv
bi1jb250ZXh0LnRlbnRhdGl2ZS1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJhdWRpby90aGUtYXVkaW8tYXBpL3RoZS1hdWRp
b2NvbnRleHQtaW50ZXJmYWNlL2F1ZGlvY29udGV4dC1kZXRhY2hlZC1leGVjdXRpb24tY29udGV4
dC50ZW50YXRpdmUtZXhwZWN0ZWQudHh0CkBAIC0xLDcgKzEsNiBAQAogCi0KIFBBU1MgIyBBVURJ
VCBUQVNLIFJVTk5FUiBTVEFSVEVELiAKLUZBSUwgRXhlY3V0aW5nICJkZWNvZGluZy1vbi1kZXRh
Y2hlZC1pZnJhbWUiIHByb21pc2VfdGVzdDogVW5oYW5kbGVkIHJlamVjdGlvbiB3aXRoIHZhbHVl
OiBvYmplY3QgIlR5cGVFcnJvcjogdW5kZWZpbmVkIGlzIG5vdCBhIGNvbnN0cnVjdG9yIChldmFs
dWF0aW5nICduZXcgaWZyYW1lLmNvbnRlbnRXaW5kb3cuQXVkaW9Db250ZXh0KCknKSIKK0ZBSUwg
RXhlY3V0aW5nICJkZWNvZGluZy1vbi1kZXRhY2hlZC1pZnJhbWUiIHByb21pc2VfdGVzdDogVW5o
YW5kbGVkIHJlamVjdGlvbiB3aXRoIHZhbHVlOiBvYmplY3QgIlR5cGVFcnJvcjogTm90IGVub3Vn
aCBhcmd1bWVudHMiCiBQQVNTIEF1ZGl0IHJlcG9ydCAKIFBBU1MgPiBbZGVjb2Rpbmctb24tZGV0
YWNoZWQtaWZyYW1lXSAgCiBQQVNTICMgQVVESVQgVEFTSyBSVU5ORVIgRklOSVNIRUQ6IDEgdGFz
a3MgcmFuIHN1Y2Nlc3NmdWxseS4gCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYmF1ZGlvL3RoZS1hdWRpby1hcGkvdGhlLWF1ZGlvbm9k
ZS1pbnRlcmZhY2UvYXVkaW9ub2RlLWNvbm5lY3QtbWV0aG9kLWNoYWluaW5nLWV4cGVjdGVkLnR4
dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2ViYXVkaW8v
dGhlLWF1ZGlvLWFwaS90aGUtYXVkaW9ub2RlLWludGVyZmFjZS9hdWRpb25vZGUtY29ubmVjdC1t
ZXRob2QtY2hhaW5pbmctZXhwZWN0ZWQudHh0CmluZGV4IDczZjc3ZTU1Y2M4OTE2NTZjMmJkYTY4
ZTNhOWUzNzE2OTU4MmY4NGMuLjZhNjU5YjU2MjU4ZDU0Mzc5NzViNTU4ZGQ3ZDNiOTlmZTgwN2Qy
NmIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvd2ViYXVkaW8vdGhlLWF1ZGlvLWFwaS90aGUtYXVkaW9ub2RlLWludGVyZmFjZS9hdWRpb25v
ZGUtY29ubmVjdC1tZXRob2QtY2hhaW5pbmctZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2ViYXVkaW8vdGhlLWF1ZGlvLWFwaS90
aGUtYXVkaW9ub2RlLWludGVyZmFjZS9hdWRpb25vZGUtY29ubmVjdC1tZXRob2QtY2hhaW5pbmct
ZXhwZWN0ZWQudHh0CkBAIC0zNiw5ICszNiw5IEBAIFBBU1MgICBUaGUgcmV0dXJuIHZhbHVlIG9m
IEdhaW5Ob2RlLmNvbm5lY3QoQ2hhbm5lbE1lcmdlck5vZGUsIDAsIDEpIG1hdGNoZXMgdGhlCiBQ
QVNTICAgVGhlIHJldHVybiB2YWx1ZSBvZiBPc2NpbGxhdG9yTm9kZS5jb25uZWN0KEdhaW5Ob2Rl
KSBtYXRjaGVzIHRoZSBkZXN0aW5hdGlvbiBHYWluTm9kZSBpcyBlcXVhbCB0byB0cnVlLiAKIFBB
U1MgICBUaGUgcmV0dXJuIHZhbHVlIG9mIE9zY2lsbGF0b3JOb2RlLmNvbm5lY3QoQmlxdWFkRmls
dGVyTm9kZSwgMCkgbWF0Y2hlcyB0aGUgZGVzdGluYXRpb24gQmlxdWFkRmlsdGVyTm9kZSBpcyBl
cXVhbCB0byB0cnVlLiAKIFBBU1MgICBUaGUgcmV0dXJuIHZhbHVlIG9mIE9zY2lsbGF0b3JOb2Rl
LmNvbm5lY3QoQ2hhbm5lbE1lcmdlck5vZGUsIDAsIDEpIG1hdGNoZXMgdGhlIGRlc3RpbmF0aW9u
IENoYW5uZWxNZXJnZXJOb2RlIGlzIGVxdWFsIHRvIHRydWUuIAotUEFTUyAgIFRoZSByZXR1cm4g
dmFsdWUgb2Ygd2Via2l0QXVkaW9QYW5uZXJOb2RlLmNvbm5lY3QoR2Fpbk5vZGUpIG1hdGNoZXMg
dGhlIGRlc3RpbmF0aW9uIEdhaW5Ob2RlIGlzIGVxdWFsIHRvIHRydWUuIAotUEFTUyAgIFRoZSBy
ZXR1cm4gdmFsdWUgb2Ygd2Via2l0QXVkaW9QYW5uZXJOb2RlLmNvbm5lY3QoQmlxdWFkRmlsdGVy
Tm9kZSwgMCkgbWF0Y2hlcyB0aGUgZGVzdGluYXRpb24gQmlxdWFkRmlsdGVyTm9kZSBpcyBlcXVh
bCB0byB0cnVlLiAKLVBBU1MgICBUaGUgcmV0dXJuIHZhbHVlIG9mIHdlYmtpdEF1ZGlvUGFubmVy
Tm9kZS5jb25uZWN0KENoYW5uZWxNZXJnZXJOb2RlLCAwLCAxKSBtYXRjaGVzIHRoZSBkZXN0aW5h
dGlvbiBDaGFubmVsTWVyZ2VyTm9kZSBpcyBlcXVhbCB0byB0cnVlLiAKK1BBU1MgICBUaGUgcmV0
dXJuIHZhbHVlIG9mIFBhbm5lck5vZGUuY29ubmVjdChHYWluTm9kZSkgbWF0Y2hlcyB0aGUgZGVz
dGluYXRpb24gR2Fpbk5vZGUgaXMgZXF1YWwgdG8gdHJ1ZS4gCitQQVNTICAgVGhlIHJldHVybiB2
YWx1ZSBvZiBQYW5uZXJOb2RlLmNvbm5lY3QoQmlxdWFkRmlsdGVyTm9kZSwgMCkgbWF0Y2hlcyB0
aGUgZGVzdGluYXRpb24gQmlxdWFkRmlsdGVyTm9kZSBpcyBlcXVhbCB0byB0cnVlLiAKK1BBU1Mg
ICBUaGUgcmV0dXJuIHZhbHVlIG9mIFBhbm5lck5vZGUuY29ubmVjdChDaGFubmVsTWVyZ2VyTm9k
ZSwgMCwgMSkgbWF0Y2hlcyB0aGUgZGVzdGluYXRpb24gQ2hhbm5lbE1lcmdlck5vZGUgaXMgZXF1
YWwgdG8gdHJ1ZS4gCiBQQVNTICAgVGhlIHJldHVybiB2YWx1ZSBvZiBTY3JpcHRQcm9jZXNzb3JO
b2RlLmNvbm5lY3QoR2Fpbk5vZGUpIG1hdGNoZXMgdGhlIGRlc3RpbmF0aW9uIEdhaW5Ob2RlIGlz
IGVxdWFsIHRvIHRydWUuIAogUEFTUyAgIFRoZSByZXR1cm4gdmFsdWUgb2YgU2NyaXB0UHJvY2Vz
c29yTm9kZS5jb25uZWN0KEJpcXVhZEZpbHRlck5vZGUsIDApIG1hdGNoZXMgdGhlIGRlc3RpbmF0
aW9uIEJpcXVhZEZpbHRlck5vZGUgaXMgZXF1YWwgdG8gdHJ1ZS4gCiBQQVNTICAgVGhlIHJldHVy
biB2YWx1ZSBvZiBTY3JpcHRQcm9jZXNzb3JOb2RlLmNvbm5lY3QoQ2hhbm5lbE1lcmdlck5vZGUs
IDAsIDEpIG1hdGNoZXMgdGhlIGRlc3RpbmF0aW9uIENoYW5uZWxNZXJnZXJOb2RlIGlzIGVxdWFs
IHRvIHRydWUuIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy93ZWJhdWRpby90aGUtYXVkaW8tYXBpL3RoZS1vZmZsaW5lYXVkaW9jb250ZXh0
LWludGVyZmFjZS9vZmZsaW5lYXVkaW9jb250ZXh0LWRldGFjaGVkLWV4ZWN1dGlvbi1jb250ZXh0
LnRlbnRhdGl2ZS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3dlYmF1ZGlvL3RoZS1hdWRpby1hcGkvdGhlLW9mZmxpbmVhdWRpb2NvbnRl
eHQtaW50ZXJmYWNlL29mZmxpbmVhdWRpb2NvbnRleHQtZGV0YWNoZWQtZXhlY3V0aW9uLWNvbnRl
eHQudGVudGF0aXZlLWV4cGVjdGVkLnR4dAppbmRleCBkM2YwZmEwMTI4NDdhZTMwMDcyNDExYjZl
OWEzYTRhYjg0NTUyZGMxLi5iMmRhMDcwNDUwNDA4ZTk2YzRiMTExNmQ5NDNkMDIxZTY0N2MwNTE3
IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3dlYmF1ZGlvL3RoZS1hdWRpby1hcGkvdGhlLW9mZmxpbmVhdWRpb2NvbnRleHQtaW50ZXJmYWNl
L29mZmxpbmVhdWRpb2NvbnRleHQtZGV0YWNoZWQtZXhlY3V0aW9uLWNvbnRleHQudGVudGF0aXZl
LWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3dlYmF1ZGlvL3RoZS1hdWRpby1hcGkvdGhlLW9mZmxpbmVhdWRpb2NvbnRleHQtaW50
ZXJmYWNlL29mZmxpbmVhdWRpb2NvbnRleHQtZGV0YWNoZWQtZXhlY3V0aW9uLWNvbnRleHQudGVu
dGF0aXZlLWV4cGVjdGVkLnR4dApAQCAtMSw3ICsxLDcgQEAKIAogCiBQQVNTICMgQVVESVQgVEFT
SyBSVU5ORVIgU1RBUlRFRC4gCi1GQUlMIEV4ZWN1dGluZyAiZGVjb2Rpbmctb24tZGV0YWNoZWQt
aWZyYW1lIiBwcm9taXNlX3Rlc3Q6IFVuaGFuZGxlZCByZWplY3Rpb24gd2l0aCB2YWx1ZTogb2Jq
ZWN0ICJUeXBlRXJyb3I6IHVuZGVmaW5lZCBpcyBub3QgYSBjb25zdHJ1Y3RvciAoZXZhbHVhdGlu
ZyAnbmV3IGlmcmFtZS5jb250ZW50V2luZG93Lk9mZmxpbmVBdWRpb0NvbnRleHQoMSwgMSwgMzAw
MCknKSIKK0ZBSUwgRXhlY3V0aW5nICJkZWNvZGluZy1vbi1kZXRhY2hlZC1pZnJhbWUiIHByb21p
c2VfdGVzdDogVW5oYW5kbGVkIHJlamVjdGlvbiB3aXRoIHZhbHVlOiBvYmplY3QgIlN5bnRheEVy
cm9yOiBUaGUgc3RyaW5nIGRpZCBub3QgbWF0Y2ggdGhlIGV4cGVjdGVkIHBhdHRlcm4uIgogUEFT
UyBBdWRpdCByZXBvcnQgCiBQQVNTID4gW2RlY29kaW5nLW9uLWRldGFjaGVkLWlmcmFtZV0gIAog
UEFTUyAjIEFVRElUIFRBU0sgUlVOTkVSIEZJTklTSEVEOiAxIHRhc2tzIHJhbiBzdWNjZXNzZnVs
bHkuIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vaW9zL2pzL2RvbS9jb25zdHJ1
Y3Rvci1sZW5ndGgtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vaW9zL2pzL2Rv
bS9jb25zdHJ1Y3Rvci1sZW5ndGgtZXhwZWN0ZWQudHh0CmluZGV4IDU1NWQyM2IzM2Y4YjZlOWRh
YzAyNGQwODhjMzUxNmI3YjJhMmM3NzAuLmRiY2JjNzg4YjI0M2FmYWIwMjA4MGU0ZGQ1NTk4OGI5
YmI2MGQxMjQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2lvcy9qcy9kb20vY29u
c3RydWN0b3ItbGVuZ3RoLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9p
b3MvanMvZG9tL2NvbnN0cnVjdG9yLWxlbmd0aC1leHBlY3RlZC50eHQKQEAgLTQsNyArNCw3IEBA
IE9uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZv
bGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFCiAKIAogUEFTUyBBcnJheUJ1ZmZlci5sZW5ndGggaXMg
MQotRkFJTCBBdWRpb0NvbnRleHQubGVuZ3RoIHNob3VsZCBiZSAwLiBUaHJldyBleGNlcHRpb24g
UmVmZXJlbmNlRXJyb3I6IENhbid0IGZpbmQgdmFyaWFibGU6IEF1ZGlvQ29udGV4dAorUEFTUyBB
dWRpb0NvbnRleHQubGVuZ3RoIGlzIDAKIEZBSUwgQXV0b2NvbXBsZXRlRXJyb3JFdmVudC5sZW5n
dGggc2hvdWxkIGJlIDEuIFRocmV3IGV4Y2VwdGlvbiBSZWZlcmVuY2VFcnJvcjogQ2FuJ3QgZmlu
ZCB2YXJpYWJsZTogQXV0b2NvbXBsZXRlRXJyb3JFdmVudAogUEFTUyBBbmltYXRpb25FdmVudC5s
ZW5ndGggaXMgMQogUEFTUyBCbG9iLmxlbmd0aCBpcyAwCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9wbGF0Zm9ybS9tYWMvanMvZG9tL2NvbnN0cnVjdG9yLWxlbmd0aC1leHBlY3RlZC50eHQgYi9M
YXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvanMvZG9tL2NvbnN0cnVjdG9yLWxlbmd0aC1leHBlY3Rl
ZC50eHQKaW5kZXggNTU1ZDIzYjMzZjhiNmU5ZGFjMDI0ZDA4OGMzNTE2YjdiMmEyYzc3MC4uZGJj
YmM3ODhiMjQzYWZhYjAyMDgwZTRkZDU1OTg4YjliYjYwZDEyNCAxMDA2NDQKLS0tIGEvTGF5b3V0
VGVzdHMvcGxhdGZvcm0vbWFjL2pzL2RvbS9jb25zdHJ1Y3Rvci1sZW5ndGgtZXhwZWN0ZWQudHh0
CisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9qcy9kb20vY29uc3RydWN0b3ItbGVuZ3Ro
LWV4cGVjdGVkLnR4dApAQCAtNCw3ICs0LDcgQEAgT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEg
c2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUKIAog
CiBQQVNTIEFycmF5QnVmZmVyLmxlbmd0aCBpcyAxCi1GQUlMIEF1ZGlvQ29udGV4dC5sZW5ndGgg
c2hvdWxkIGJlIDAuIFRocmV3IGV4Y2VwdGlvbiBSZWZlcmVuY2VFcnJvcjogQ2FuJ3QgZmluZCB2
YXJpYWJsZTogQXVkaW9Db250ZXh0CitQQVNTIEF1ZGlvQ29udGV4dC5sZW5ndGggaXMgMAogRkFJ
TCBBdXRvY29tcGxldGVFcnJvckV2ZW50Lmxlbmd0aCBzaG91bGQgYmUgMS4gVGhyZXcgZXhjZXB0
aW9uIFJlZmVyZW5jZUVycm9yOiBDYW4ndCBmaW5kIHZhcmlhYmxlOiBBdXRvY29tcGxldGVFcnJv
ckV2ZW50CiBQQVNTIEFuaW1hdGlvbkV2ZW50Lmxlbmd0aCBpcyAxCiBQQVNTIEJsb2IubGVuZ3Ro
IGlzIDAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL3dpbi9qcy9kb20vY29uc3Ry
dWN0b3ItbGVuZ3RoLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL3dpbi9qcy9k
b20vY29uc3RydWN0b3ItbGVuZ3RoLWV4cGVjdGVkLnR4dAppbmRleCA5ZGRkYWU0OTdmYTQ5YmVh
YTBmZTdjNTY3YjU2MDhkNzQ3MWMwMWU2Li5jYjZkOTlmNTU0ZDkwYTI5MWMwMTBmYmI1YmFhZDQy
Zjg0NmJmNTlkIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93aW4vanMvZG9tL2Nv
bnN0cnVjdG9yLWxlbmd0aC1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0v
d2luL2pzL2RvbS9jb25zdHJ1Y3Rvci1sZW5ndGgtZXhwZWN0ZWQudHh0CkBAIC00LDcgKzQsNyBA
QCBPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBm
b2xsb3dlZCBieSAiVEVTVCBDT01QTEVURQogCiAKIFBBU1MgQXJyYXlCdWZmZXIubGVuZ3RoIGlz
IDEKLUZBSUwgQXVkaW9Db250ZXh0Lmxlbmd0aCBzaG91bGQgYmUgMC4gVGhyZXcgZXhjZXB0aW9u
IFJlZmVyZW5jZUVycm9yOiBDYW4ndCBmaW5kIHZhcmlhYmxlOiBBdWRpb0NvbnRleHQKK1BBU1Mg
QXVkaW9Db250ZXh0Lmxlbmd0aCBpcyAwCiBGQUlMIEF1dG9jb21wbGV0ZUVycm9yRXZlbnQubGVu
Z3RoIHNob3VsZCBiZSAxLiBUaHJldyBleGNlcHRpb24gUmVmZXJlbmNlRXJyb3I6IENhbid0IGZp
bmQgdmFyaWFibGU6IEF1dG9jb21wbGV0ZUVycm9yRXZlbnQKIFBBU1MgQW5pbWF0aW9uRXZlbnQu
bGVuZ3RoIGlzIDEKIFBBU1MgQmxvYi5sZW5ndGggaXMgMAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>402149</attachid>
            <date>2020-06-17 13:25:25 -0700</date>
            <delta_ts>2020-06-17 13:57:43 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-213268-20200617132524.patch</filename>
            <type>text/plain</type>
            <size>273467</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYzMTYzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzYwNDdkMTUxZDZmMDhm
ZTlmY2ZjYzZiNTNmNDY1YTgzNGMyOGIyZS4uZjY5MGYzYjNkMTMzNDVlMzFmNmFmYTNmOTgzZGFl
NjkyN2NhMzk1NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI5NiBAQAorMjAyMC0wNi0xNyAgQ2hy
aXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBleHBlcmltZW50YWwg
ZmVhdHVyZSBmbGFnIGZvciBtb2Rlcm4gJiB1bnByZWZpeGVkIFdlYkF1ZGlvIEFQSQorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjEzMjY4CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgSmVyIE5vYmxlLgorCisgICAgICAgIEFkZCBleHBlcmltZW50YWwgZmVh
dHVyZSBmbGFnIGZvciBtb2Rlcm4gJiB1bnByZWZpeGVkIFdlYkF1ZGlvIEFQSSwKKyAgICAgICAg
b2ZmIGJ5IGRlZmF1bHQuCisKKyAgICAgICAgVGhpcyBwYXRjaCBzcGxpdCB0aGUgQXVkaW9Db250
ZXh0LCBPZmZsaW5lQXVkaW9Db250ZXh0IGFuZCBQYW5uZXJOb2RlCisgICAgICAgIElETCBpbnRl
cmZhY2VzIGludG8gdGhlaXIgcHJlZml4ZWQgYW5kIHVucHJlZml4ZWQgdmVyc2lvbnMuIFRoZQor
ICAgICAgICB1bnByZWZpeGVkIHZlcnNpb25zIGFyZSBiZWhpbmQgdGhlIG5ldyBleHBlcmltZW50
YWwgZmVhdHVyZSBmbGFnIHRoYXQKKyAgICAgICAgaXMgY3VycmVudGx5IG9mZiBieSBkZWZhdWx0
IGJ1dCBhdXRvbWF0aWNhbGx5IGdldHMgdHVybmVkIG9uIGluIHRoZQorICAgICAgICBjb250ZXh0
IG9mIGxheW91dCB0ZXN0cy4KKworICAgICAgICBUaGlzIHdpbGwgZ2l2ZSB1cyBtb3JlIGZsZXhp
YmlsaXR5IHdoZW4gd29ya2luZyBvbiB0aGUgbW9kZXJuIGFuZAorICAgICAgICB1bnByZWZpeGVk
IFdlYkF1ZGlvIEFQSSBhcyB3ZSB3aWxsIG5vdCBoYXZlIHRvIHdvcnJ5IGFib3V0IGJhY2t3YXJk
CisgICAgICAgIGNvbXBhdGliaWxpdHkuIFRoaXMgYWxzbyBhbGxvd3MgdXMgdG8gZWFzaWx5IHR1
cm4gaXQgb24gb3Igb2ZmIHZpYQorICAgICAgICB0aGUgZXhwZXJpbWVudGFsIGZlYXR1cmVzIG1l
bnUgaW4gU2FmYXJpLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cywgcmViYXNlbGluZWQgZXhpc3Rp
bmcgdGVzdHMuCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBEZXJpdmVk
U291cmNlcy1pbnB1dC54Y2ZpbGVsaXN0OgorICAgICAgICAqIERlcml2ZWRTb3VyY2VzLW91dHB1
dC54Y2ZpbGVsaXN0OgorICAgICAgICAqIERlcml2ZWRTb3VyY2VzLm1ha2U6CisgICAgICAgICog
TW9kdWxlcy93ZWJhdWRpby9BbmFseXNlck5vZGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QW5h
bHlzZXJOb2RlOjpBbmFseXNlck5vZGUpOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vQW5h
bHlzZXJOb2RlLmg6CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9BdWRpb0Jhc2ljSW5zcGVj
dG9yTm9kZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb0Jhc2ljSW5zcGVjdG9yTm9kZTo6
QXVkaW9CYXNpY0luc3BlY3Rvck5vZGUpOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vQXVk
aW9CYXNpY0luc3BlY3Rvck5vZGUuaDoKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL0F1ZGlv
QmFzaWNQcm9jZXNzb3JOb2RlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvQmFzaWNQcm9j
ZXNzb3JOb2RlOjpBdWRpb0Jhc2ljUHJvY2Vzc29yTm9kZSk6CisgICAgICAgICogTW9kdWxlcy93
ZWJhdWRpby9BdWRpb0Jhc2ljUHJvY2Vzc29yTm9kZS5oOgorICAgICAgICAqIE1vZHVsZXMvd2Vi
YXVkaW8vQXVkaW9CdWZmZXJTb3VyY2VOb2RlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlv
QnVmZmVyU291cmNlTm9kZTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvQnVmZmVy
U291cmNlTm9kZTo6QXVkaW9CdWZmZXJTb3VyY2VOb2RlKToKKyAgICAgICAgKFdlYkNvcmU6OkF1
ZGlvQnVmZmVyU291cmNlTm9kZTo6c2V0QnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlv
QnVmZmVyU291cmNlTm9kZTo6c2V0UGFubmVyTm9kZSk6CisgICAgICAgICogTW9kdWxlcy93ZWJh
dWRpby9BdWRpb0J1ZmZlclNvdXJjZU5vZGUuaDoKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlv
L0F1ZGlvQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb0NvbnRleHRCYXNlOjpB
dWRpb0NvbnRleHRCYXNlKToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvQ29udGV4dDo6QXVkaW9D
b250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvQ29udGV4dEJhc2U6OmRvY3VtZW50IGNv
bnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvQ29udGV4dEJhc2U6OnNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQgY29uc3QpOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0
Lmg6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb0NvbnRleHRCYXNlOjpBdXRvTG9ja2VyOjpBdXRv
TG9ja2VyKToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvQ29udGV4dEJhc2U6OkF1dG9Mb2NrZXI6
On5BdXRvTG9ja2VyKToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvQ29udGV4dDo6bWF4TnVtYmVy
T2ZDaGFubmVscyk6CisgICAgICAgIChpc1R5cGUpOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVk
aW8vQXVkaW9Db250ZXh0LmlkbDoKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQ29u
dGV4dFN0YXRlLmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8v
T2ZmbGluZUF1ZGlvQ29udGV4dC5pZGwuCisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9BdWRp
b0NvbnRleHRTdGF0ZS5pZGw6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
YXVkaW8vT2ZmbGluZUF1ZGlvQ29udGV4dC5pZGwuCisgICAgICAgICogTW9kdWxlcy93ZWJhdWRp
by9BdWRpb0Rlc3RpbmF0aW9uTm9kZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb0Rlc3Rp
bmF0aW9uTm9kZTo6QXVkaW9EZXN0aW5hdGlvbk5vZGUpOgorICAgICAgICAqIE1vZHVsZXMvd2Vi
YXVkaW8vQXVkaW9EZXN0aW5hdGlvbk5vZGUuaDoKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlv
L0F1ZGlvTm9kZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb05vZGU6OkF1ZGlvTm9kZSk6
CisgICAgICAgIChXZWJDb3JlOjpBdWRpb05vZGU6OmNvbm5lY3QpOgorICAgICAgICAoV2ViQ29y
ZTo6QXVkaW9Ob2RlOjpkaXNjb25uZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvTm9kZTo6
c2V0Q2hhbm5lbENvdW50KToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvTm9kZTo6c2V0Q2hhbm5l
bENvdW50TW9kZSk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb05vZGU6OnNldENoYW5uZWxJbnRl
cnByZXRhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb05vZGU6OmVuYWJsZU91dHB1dHNJ
Zk5lY2Vzc2FyeSk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb05vZGU6OmRlcmVmKToKKyAgICAg
ICAgKFdlYkNvcmU6OkF1ZGlvTm9kZTo6Y29udGV4dEZvckJpbmRpbmdzIGNvbnN0KToKKyAgICAg
ICAgKiBNb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvTm9kZS5oOgorICAgICAgICAoV2ViQ29yZTo6QXVk
aW9Ob2RlOjpjb250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvTm9kZTo6Y29udGV4dCBj
b25zdCk6CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9BdWRpb05vZGUuaWRsOgorICAgICAg
ICAqIE1vZHVsZXMvd2ViYXVkaW8vQXVkaW9Ob2RlT3V0cHV0Lmg6CisgICAgICAgIChXZWJDb3Jl
OjpBdWRpb05vZGVPdXRwdXQ6OmNvbnRleHQpOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8v
QXVkaW9QYXJhbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb1BhcmFtOjpBdWRpb1BhcmFt
KToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvUGFyYW0uaDoKKyAgICAgICAgKiBN
b2R1bGVzL3dlYmF1ZGlvL0F1ZGlvUGFyYW1UaW1lbGluZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpBdWRpb1BhcmFtVGltZWxpbmU6OnZhbHVlRm9yQ29udGV4dFRpbWUpOgorICAgICAgICAqIE1v
ZHVsZXMvd2ViYXVkaW8vQXVkaW9QYXJhbVRpbWVsaW5lLmg6CisgICAgICAgICogTW9kdWxlcy93
ZWJhdWRpby9BdWRpb1NjaGVkdWxlZFNvdXJjZU5vZGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
QXVkaW9TY2hlZHVsZWRTb3VyY2VOb2RlOjpBdWRpb1NjaGVkdWxlZFNvdXJjZU5vZGUpOgorICAg
ICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vQXVkaW9TY2hlZHVsZWRTb3VyY2VOb2RlLmg6CisgICAg
ICAgICogTW9kdWxlcy93ZWJhdWRpby9BdWRpb1N1bW1pbmdKdW5jdGlvbi5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpBdWRpb1N1bW1pbmdKdW5jdGlvbjo6QXVkaW9TdW1taW5nSnVuY3Rpb24pOgor
ICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vQXVkaW9TdW1taW5nSnVuY3Rpb24uaDoKKyAgICAg
ICAgKFdlYkNvcmU6OkF1ZGlvU3VtbWluZ0p1bmN0aW9uOjpjb250ZXh0KToKKyAgICAgICAgKiBN
b2R1bGVzL3dlYmF1ZGlvL0JpcXVhZEZpbHRlck5vZGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
QmlxdWFkRmlsdGVyTm9kZTo6QmlxdWFkRmlsdGVyTm9kZSk6CisgICAgICAgICogTW9kdWxlcy93
ZWJhdWRpby9CaXF1YWRGaWx0ZXJOb2RlLmg6CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9C
aXF1YWRQcm9jZXNzb3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QmlxdWFkUHJvY2Vzc29yOjpC
aXF1YWRQcm9jZXNzb3IpOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vQmlxdWFkUHJvY2Vz
c29yLmg6CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9DaGFubmVsTWVyZ2VyTm9kZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpDaGFubmVsTWVyZ2VyTm9kZTo6Y3JlYXRlKToKKyAgICAgICAg
KFdlYkNvcmU6OkNoYW5uZWxNZXJnZXJOb2RlOjpDaGFubmVsTWVyZ2VyTm9kZSk6CisgICAgICAg
ICogTW9kdWxlcy93ZWJhdWRpby9DaGFubmVsTWVyZ2VyTm9kZS5oOgorICAgICAgICAqIE1vZHVs
ZXMvd2ViYXVkaW8vQ2hhbm5lbFNwbGl0dGVyTm9kZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpD
aGFubmVsU3BsaXR0ZXJOb2RlOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6Q2hhbm5lbFNw
bGl0dGVyTm9kZTo6Q2hhbm5lbFNwbGl0dGVyTm9kZSk6CisgICAgICAgICogTW9kdWxlcy93ZWJh
dWRpby9DaGFubmVsU3BsaXR0ZXJOb2RlLmg6CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9D
b252b2x2ZXJOb2RlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbnZvbHZlck5vZGU6OkNvbnZv
bHZlck5vZGUpOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vQ29udm9sdmVyTm9kZS5oOgor
ICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vRGVmYXVsdEF1ZGlvRGVzdGluYXRpb25Ob2RlLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkRlZmF1bHRBdWRpb0Rlc3RpbmF0aW9uTm9kZTo6RGVmYXVs
dEF1ZGlvRGVzdGluYXRpb25Ob2RlKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL0RlZmF1
bHRBdWRpb0Rlc3RpbmF0aW9uTm9kZS5oOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vRGVs
YXlOb2RlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRlbGF5Tm9kZTo6RGVsYXlOb2RlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkRlbGF5Tm9kZTo6Y3JlYXRlKToKKyAgICAgICAgKiBNb2R1bGVzL3dl
YmF1ZGlvL0RlbGF5Tm9kZS5oOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vRGVsYXlQcm9j
ZXNzb3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGVsYXlQcm9jZXNzb3I6OkRlbGF5UHJvY2Vz
c29yKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL0RlbGF5UHJvY2Vzc29yLmg6CisgICAg
ICAgICogTW9kdWxlcy93ZWJhdWRpby9EaXN0YW5jZU1vZGVsVHlwZS5oOiBDb3BpZWQgZnJvbSBT
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL09mZmxpbmVBdWRpb0NvbnRleHQuaWRsLgor
ICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vRGlzdGFuY2VNb2RlbFR5cGUuaWRsOiBDb3BpZWQg
ZnJvbSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL09mZmxpbmVBdWRpb0NvbnRleHQu
aWRsLgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vRHluYW1pY3NDb21wcmVzc29yTm9kZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpEeW5hbWljc0NvbXByZXNzb3JOb2RlOjpEeW5hbWljc0Nv
bXByZXNzb3JOb2RlKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL0R5bmFtaWNzQ29tcHJl
c3Nvck5vZGUuaDoKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL0dhaW5Ob2RlLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkdhaW5Ob2RlOjpHYWluTm9kZSk6CisgICAgICAgICogTW9kdWxlcy93
ZWJhdWRpby9HYWluTm9kZS5oOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vTWVkaWFFbGVt
ZW50QXVkaW9Tb3VyY2VOb2RlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhRWxlbWVudEF1
ZGlvU291cmNlTm9kZTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhRWxlbWVudEF1
ZGlvU291cmNlTm9kZTo6TWVkaWFFbGVtZW50QXVkaW9Tb3VyY2VOb2RlKToKKyAgICAgICAgKFdl
YkNvcmU6Ok1lZGlhRWxlbWVudEF1ZGlvU291cmNlTm9kZTo6c2V0Rm9ybWF0KToKKyAgICAgICAg
KiBNb2R1bGVzL3dlYmF1ZGlvL01lZGlhRWxlbWVudEF1ZGlvU291cmNlTm9kZS5oOgorICAgICAg
ICAqIE1vZHVsZXMvd2ViYXVkaW8vTWVkaWFTdHJlYW1BdWRpb0Rlc3RpbmF0aW9uTm9kZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbUF1ZGlvRGVzdGluYXRpb25Ob2RlOjpjcmVh
dGUpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTdHJlYW1BdWRpb0Rlc3RpbmF0aW9uTm9kZTo6
TWVkaWFTdHJlYW1BdWRpb0Rlc3RpbmF0aW9uTm9kZSk6CisgICAgICAgICogTW9kdWxlcy93ZWJh
dWRpby9NZWRpYVN0cmVhbUF1ZGlvRGVzdGluYXRpb25Ob2RlLmg6CisgICAgICAgICogTW9kdWxl
cy93ZWJhdWRpby9NZWRpYVN0cmVhbUF1ZGlvU291cmNlTm9kZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpNZWRpYVN0cmVhbUF1ZGlvU291cmNlTm9kZTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNv
cmU6Ok1lZGlhU3RyZWFtQXVkaW9Tb3VyY2VOb2RlOjpNZWRpYVN0cmVhbUF1ZGlvU291cmNlTm9k
ZSk6CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9NZWRpYVN0cmVhbUF1ZGlvU291cmNlTm9k
ZS5oOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vT2ZmbGluZUF1ZGlvQ29udGV4dC5pZGw6
CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9PZmZsaW5lQXVkaW9EZXN0aW5hdGlvbk5vZGUu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6T2ZmbGluZUF1ZGlvRGVzdGluYXRpb25Ob2RlOjpPZmZs
aW5lQXVkaW9EZXN0aW5hdGlvbk5vZGUpOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vT2Zm
bGluZUF1ZGlvRGVzdGluYXRpb25Ob2RlLmg6CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9P
c2NpbGxhdG9yTm9kZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpPc2NpbGxhdG9yTm9kZTo6Y3Jl
YXRlKToKKyAgICAgICAgKFdlYkNvcmU6Ok9zY2lsbGF0b3JOb2RlOjpPc2NpbGxhdG9yTm9kZSk6
CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9Pc2NpbGxhdG9yTm9kZS5oOgorICAgICAgICAq
IE1vZHVsZXMvd2ViYXVkaW8vUGFubmVyTm9kZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQYW5u
ZXJOb2RlQmFzZTo6UGFubmVyTm9kZUJhc2UpOgorICAgICAgICAoV2ViQ29yZTo6UGFubmVyTm9k
ZTo6UGFubmVyTm9kZSk6CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9QYW5uZXJOb2RlLmg6
CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9QYW5uZXJOb2RlLmlkbDoKKyAgICAgICAgKiBN
b2R1bGVzL3dlYmF1ZGlvL1Bhbm5pbmdNb2RlbFR5cGUuaDogQ29waWVkIGZyb20gU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJhdWRpby9PZmZsaW5lQXVkaW9Db250ZXh0LmlkbC4KKyAgICAgICAg
KiBNb2R1bGVzL3dlYmF1ZGlvL1Bhbm5pbmdNb2RlbFR5cGUuaWRsOiBDb3BpZWQgZnJvbSBTb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL09mZmxpbmVBdWRpb0NvbnRleHQuaWRsLgorICAg
ICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vU2NyaXB0UHJvY2Vzc29yTm9kZS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpTY3JpcHRQcm9jZXNzb3JOb2RlOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29y
ZTo6U2NyaXB0UHJvY2Vzc29yTm9kZTo6U2NyaXB0UHJvY2Vzc29yTm9kZSk6CisgICAgICAgICog
TW9kdWxlcy93ZWJhdWRpby9TY3JpcHRQcm9jZXNzb3JOb2RlLmg6CisgICAgICAgICogTW9kdWxl
cy93ZWJhdWRpby9XYXZlU2hhcGVyTm9kZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXYXZlU2hh
cGVyTm9kZTo6V2F2ZVNoYXBlck5vZGUpOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vV2F2
ZVNoYXBlck5vZGUuaDoKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL1dlYktpdEF1ZGlvQ29u
dGV4dC5jcHA6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVk
aW9Db250ZXh0LmNwcC4KKyAgICAgICAgKFdlYkNvcmU6OldlYktpdEF1ZGlvQ29udGV4dDo6aXNT
YW1wbGVSYXRlUmFuZ2VHb29kKToKKyAgICAgICAgKFdlYkNvcmU6OldlYktpdEF1ZGlvQ29udGV4
dDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OldlYktpdEF1ZGlvQ29udGV4dDo6V2ViS2l0
QXVkaW9Db250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OldlYktpdEF1ZGlvQ29udGV4dDo6Y29u
c3RydWN0Q29tbW9uKToKKyAgICAgICAgKFdlYkNvcmU6OldlYktpdEF1ZGlvQ29udGV4dDo6fldl
YktpdEF1ZGlvQ29udGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJLaXRBdWRpb0NvbnRleHQ6
OmxhenlJbml0aWFsaXplKToKKyAgICAgICAgKFdlYkNvcmU6OldlYktpdEF1ZGlvQ29udGV4dDo6
Y2xlYXIpOgorICAgICAgICAoV2ViQ29yZTo6V2ViS2l0QXVkaW9Db250ZXh0Ojp1bmluaXRpYWxp
emUpOgorICAgICAgICAoV2ViQ29yZTo6V2ViS2l0QXVkaW9Db250ZXh0Ojppc0luaXRpYWxpemVk
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OldlYktpdEF1ZGlvQ29udGV4dDo6YWRkUmVhY3Rp
b24pOgorICAgICAgICAoV2ViQ29yZTo6V2ViS2l0QXVkaW9Db250ZXh0OjpzZXRTdGF0ZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpXZWJLaXRBdWRpb0NvbnRleHQ6OnN0b3ApOgorICAgICAgICAoV2Vi
Q29yZTo6V2ViS2l0QXVkaW9Db250ZXh0OjpzdXNwZW5kKToKKyAgICAgICAgKFdlYkNvcmU6Oldl
YktpdEF1ZGlvQ29udGV4dDo6cmVzdW1lKToKKyAgICAgICAgKFdlYkNvcmU6OldlYktpdEF1ZGlv
Q29udGV4dDo6YWN0aXZlRE9NT2JqZWN0TmFtZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpX
ZWJLaXRBdWRpb0NvbnRleHQ6Omhvc3RpbmdEb2N1bWVudElkZW50aWZpZXIgY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6V2ViS2l0QXVkaW9Db250ZXh0Ojppc1N1c3BlbmRlZCBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpXZWJLaXRBdWRpb0NvbnRleHQ6OnZpc2liaWxpdHlTdGF0ZUNoYW5n
ZWQpOgorICAgICAgICAoV2ViQ29yZTo6V2ViS2l0QXVkaW9Db250ZXh0Ojp3b3VsZFRhaW50T3Jp
Z2luIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OldlYktpdEF1ZGlvQ29udGV4dDo6Y3JlYXRl
QnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OldlYktpdEF1ZGlvQ29udGV4dDo6ZGVjb2RlQXVk
aW9EYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OldlYktpdEF1ZGlvQ29udGV4dDo6Y3JlYXRlQnVm
ZmVyU291cmNlKToKKyAgICAgICAgKFdlYkNvcmU6OldlYktpdEF1ZGlvQ29udGV4dDo6Y3JlYXRl
TWVkaWFFbGVtZW50U291cmNlKToKKyAgICAgICAgKFdlYkNvcmU6OldlYktpdEF1ZGlvQ29udGV4
dDo6Y3JlYXRlTWVkaWFTdHJlYW1Tb3VyY2UpOgorICAgICAgICAoV2ViQ29yZTo6V2ViS2l0QXVk
aW9Db250ZXh0OjpjcmVhdGVNZWRpYVN0cmVhbURlc3RpbmF0aW9uKToKKyAgICAgICAgKFdlYkNv
cmU6OldlYktpdEF1ZGlvQ29udGV4dDo6Y3JlYXRlU2NyaXB0UHJvY2Vzc29yKToKKyAgICAgICAg
KFdlYkNvcmU6OldlYktpdEF1ZGlvQ29udGV4dDo6Y3JlYXRlQmlxdWFkRmlsdGVyKToKKyAgICAg
ICAgKFdlYkNvcmU6OldlYktpdEF1ZGlvQ29udGV4dDo6Y3JlYXRlV2F2ZVNoYXBlcik6CisgICAg
ICAgIChXZWJDb3JlOjpXZWJLaXRBdWRpb0NvbnRleHQ6OmNyZWF0ZVBhbm5lcik6CisgICAgICAg
IChXZWJDb3JlOjpXZWJLaXRBdWRpb0NvbnRleHQ6OmNyZWF0ZUNvbnZvbHZlcik6CisgICAgICAg
IChXZWJDb3JlOjpXZWJLaXRBdWRpb0NvbnRleHQ6OmNyZWF0ZUR5bmFtaWNzQ29tcHJlc3Nvcik6
CisgICAgICAgIChXZWJDb3JlOjpXZWJLaXRBdWRpb0NvbnRleHQ6OmNyZWF0ZUFuYWx5c2VyKToK
KyAgICAgICAgKFdlYkNvcmU6OldlYktpdEF1ZGlvQ29udGV4dDo6Y3JlYXRlR2Fpbik6CisgICAg
ICAgIChXZWJDb3JlOjpXZWJLaXRBdWRpb0NvbnRleHQ6OmNyZWF0ZURlbGF5KToKKyAgICAgICAg
KFdlYkNvcmU6OldlYktpdEF1ZGlvQ29udGV4dDo6Y3JlYXRlQ2hhbm5lbFNwbGl0dGVyKToKKyAg
ICAgICAgKFdlYkNvcmU6OldlYktpdEF1ZGlvQ29udGV4dDo6Y3JlYXRlQ2hhbm5lbE1lcmdlcik6
CisgICAgICAgIChXZWJDb3JlOjpXZWJLaXRBdWRpb0NvbnRleHQ6OmNyZWF0ZU9zY2lsbGF0b3Ip
OgorICAgICAgICAoV2ViQ29yZTo6V2ViS2l0QXVkaW9Db250ZXh0OjpjcmVhdGVQZXJpb2RpY1dh
dmUpOgorICAgICAgICAoV2ViQ29yZTo6V2ViS2l0QXVkaW9Db250ZXh0Ojpub3RpZnlOb2RlRmlu
aXNoZWRQcm9jZXNzaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OldlYktpdEF1ZGlvQ29udGV4dDo6
ZGVyZWZGaW5pc2hlZFNvdXJjZU5vZGVzKToKKyAgICAgICAgKFdlYkNvcmU6OldlYktpdEF1ZGlv
Q29udGV4dDo6cmVmTm9kZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJLaXRBdWRpb0NvbnRleHQ6
OmRlcmVmTm9kZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJLaXRBdWRpb0NvbnRleHQ6OmRlcmVm
VW5maW5pc2hlZFNvdXJjZU5vZGVzKToKKyAgICAgICAgKFdlYkNvcmU6OldlYktpdEF1ZGlvQ29u
dGV4dDo6bG9jayk6CisgICAgICAgIChXZWJDb3JlOjpXZWJLaXRBdWRpb0NvbnRleHQ6OnRyeUxv
Y2spOgorICAgICAgICAoV2ViQ29yZTo6V2ViS2l0QXVkaW9Db250ZXh0Ojp1bmxvY2spOgorICAg
ICAgICAoV2ViQ29yZTo6V2ViS2l0QXVkaW9Db250ZXh0Ojppc0F1ZGlvVGhyZWFkIGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6OldlYktpdEF1ZGlvQ29udGV4dDo6aXNHcmFwaE93bmVyIGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6OldlYktpdEF1ZGlvQ29udGV4dDo6YWRkRGVmZXJyZWRGaW5p
c2hEZXJlZik6CisgICAgICAgIChXZWJDb3JlOjpXZWJLaXRBdWRpb0NvbnRleHQ6OmhhbmRsZVBy
ZVJlbmRlclRhc2tzKToKKyAgICAgICAgKFdlYkNvcmU6OldlYktpdEF1ZGlvQ29udGV4dDo6aGFu
ZGxlUG9zdFJlbmRlclRhc2tzKToKKyAgICAgICAgKFdlYkNvcmU6OldlYktpdEF1ZGlvQ29udGV4
dDo6aGFuZGxlRGVmZXJyZWRGaW5pc2hEZXJlZnMpOgorICAgICAgICAoV2ViQ29yZTo6V2ViS2l0
QXVkaW9Db250ZXh0OjptYXJrRm9yRGVsZXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6V2ViS2l0
QXVkaW9Db250ZXh0OjpzY2hlZHVsZU5vZGVEZWxldGlvbik6CisgICAgICAgIChXZWJDb3JlOjpX
ZWJLaXRBdWRpb0NvbnRleHQ6OmRlbGV0ZU1hcmtlZE5vZGVzKToKKyAgICAgICAgKFdlYkNvcmU6
OldlYktpdEF1ZGlvQ29udGV4dDo6bWFya1N1bW1pbmdKdW5jdGlvbkRpcnR5KToKKyAgICAgICAg
KFdlYkNvcmU6OldlYktpdEF1ZGlvQ29udGV4dDo6cmVtb3ZlTWFya2VkU3VtbWluZ0p1bmN0aW9u
KToKKyAgICAgICAgKFdlYkNvcmU6OldlYktpdEF1ZGlvQ29udGV4dDo6bWFya0F1ZGlvTm9kZU91
dHB1dERpcnR5KToKKyAgICAgICAgKFdlYkNvcmU6OldlYktpdEF1ZGlvQ29udGV4dDo6aGFuZGxl
RGlydHlBdWRpb1N1bW1pbmdKdW5jdGlvbnMpOgorICAgICAgICAoV2ViQ29yZTo6V2ViS2l0QXVk
aW9Db250ZXh0OjpoYW5kbGVEaXJ0eUF1ZGlvTm9kZU91dHB1dHMpOgorICAgICAgICAoV2ViQ29y
ZTo6V2ViS2l0QXVkaW9Db250ZXh0OjphZGRBdXRvbWF0aWNQdWxsTm9kZSk6CisgICAgICAgIChX
ZWJDb3JlOjpXZWJLaXRBdWRpb0NvbnRleHQ6OnJlbW92ZUF1dG9tYXRpY1B1bGxOb2RlKToKKyAg
ICAgICAgKFdlYkNvcmU6OldlYktpdEF1ZGlvQ29udGV4dDo6dXBkYXRlQXV0b21hdGljUHVsbE5v
ZGVzKToKKyAgICAgICAgKFdlYkNvcmU6OldlYktpdEF1ZGlvQ29udGV4dDo6cHJvY2Vzc0F1dG9t
YXRpY1B1bGxOb2Rlcyk6CisgICAgICAgIChXZWJDb3JlOjpXZWJLaXRBdWRpb0NvbnRleHQ6Om5v
ZGVXaWxsQmVnaW5QbGF5YmFjayk6CisgICAgICAgIChXZWJDb3JlOjpzaG91bGREb2N1bWVudEFs
bG93V2ViQXVkaW9Ub0F1dG9QbGF5KToKKyAgICAgICAgKFdlYkNvcmU6OldlYktpdEF1ZGlvQ29u
dGV4dDo6d2lsbEJlZ2luUGxheWJhY2spOgorICAgICAgICAoV2ViQ29yZTo6V2ViS2l0QXVkaW9D
b250ZXh0Ojp3aWxsUGF1c2VQbGF5YmFjayk6CisgICAgICAgIChXZWJDb3JlOjpXZWJLaXRBdWRp
b0NvbnRleHQ6OnN0YXJ0UmVuZGVyaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OldlYktpdEF1ZGlv
Q29udGV4dDo6bWVkaWFDYW5TdGFydCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJLaXRBdWRpb0Nv
bnRleHQ6Om1lZGlhU3RhdGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6V2ViS2l0QXVkaW9D
b250ZXh0OjpwYWdlTXV0ZWRTdGF0ZURpZENoYW5nZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJL
aXRBdWRpb0NvbnRleHQ6OmlzUGxheWluZ0F1ZGlvRGlkQ2hhbmdlKToKKyAgICAgICAgKFdlYkNv
cmU6OldlYktpdEF1ZGlvQ29udGV4dDo6ZmluaXNoZWRSZW5kZXJpbmcpOgorICAgICAgICAoV2Vi
Q29yZTo6V2ViS2l0QXVkaW9Db250ZXh0OjpkaXNwYXRjaEV2ZW50KToKKyAgICAgICAgKFdlYkNv
cmU6OldlYktpdEF1ZGlvQ29udGV4dDo6aW5jcmVtZW50QWN0aXZlU291cmNlQ291bnQpOgorICAg
ICAgICAoV2ViQ29yZTo6V2ViS2l0QXVkaW9Db250ZXh0OjpkZWNyZW1lbnRBY3RpdmVTb3VyY2VD
b3VudCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJLaXRBdWRpb0NvbnRleHQ6OnN1c3BlbmRSZW5k
ZXJpbmcpOgorICAgICAgICAoV2ViQ29yZTo6V2ViS2l0QXVkaW9Db250ZXh0OjpyZXN1bWVSZW5k
ZXJpbmcpOgorICAgICAgICAoV2ViQ29yZTo6V2ViS2l0QXVkaW9Db250ZXh0OjpjbG9zZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpXZWJLaXRBdWRpb0NvbnRleHQ6OnN1c3BlbmRQbGF5YmFjayk6Cisg
ICAgICAgIChXZWJDb3JlOjpXZWJLaXRBdWRpb0NvbnRleHQ6Om1heVJlc3VtZVBsYXliYWNrKToK
KyAgICAgICAgKFdlYkNvcmU6OldlYktpdEF1ZGlvQ29udGV4dDo6cG9zdFRhc2spOgorICAgICAg
ICAoV2ViQ29yZTo6V2ViS2l0QXVkaW9Db250ZXh0OjpvcmlnaW4gY29uc3QpOgorICAgICAgICAo
V2ViQ29yZTo6V2ViS2l0QXVkaW9Db250ZXh0OjphZGRDb25zb2xlTWVzc2FnZSk6CisgICAgICAg
IChXZWJDb3JlOjpXZWJLaXRBdWRpb0NvbnRleHQ6OmNsZWFyUGVuZGluZ0FjdGl2aXR5KToKKyAg
ICAgICAgKFdlYkNvcmU6OldlYktpdEF1ZGlvQ29udGV4dDo6bWFrZVBlbmRpbmdBY3Rpdml0eSk6
CisgICAgICAgIChXZWJDb3JlOjpXZWJLaXRBdWRpb0NvbnRleHQ6OmxvZ0NoYW5uZWwgY29uc3Qp
OgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vV2ViS2l0QXVkaW9Db250ZXh0Lmg6IENvcGll
ZCBmcm9tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0LmguCisg
ICAgICAgIChXZWJDb3JlOjpXZWJLaXRBdWRpb0NvbnRleHQ6OmRlc3RpbmF0aW9uKToKKyAgICAg
ICAgKFdlYkNvcmU6OldlYktpdEF1ZGlvQ29udGV4dDo6YWN0aXZlU291cmNlQ291bnQgY29uc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6V2ViS2l0QXVkaW9Db250ZXh0OjpsaXN0ZW5lcik6CisgICAg
ICAgIChXZWJDb3JlOjpXZWJLaXRBdWRpb0NvbnRleHQ6OmlzQ2xvc2VkIGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OldlYktpdEF1ZGlvQ29udGV4dDo6Y29ubmVjdGlvbkNvdW50IGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6OldlYktpdEF1ZGlvQ29udGV4dDo6YXVkaW9UaHJlYWQgY29uc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6V2ViS2l0QXVkaW9Db250ZXh0OjptYXhOdW1iZXJPZkNoYW5u
ZWxzKToKKyAgICAgICAgKFdlYkNvcmU6OldlYktpdEF1ZGlvQ29udGV4dDo6dXNlckdlc3R1cmVS
ZXF1aXJlZEZvckF1ZGlvU3RhcnQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6V2ViS2l0QXVk
aW9Db250ZXh0OjpwYWdlQ29uc2VudFJlcXVpcmVkRm9yQXVkaW9TdGFydCBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpXZWJLaXRBdWRpb0NvbnRleHQ6OnN0YXRlIGNvbnN0KToKKyAgICAgICAg
KGlzVHlwZSk6CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9XZWJLaXRBdWRpb0NvbnRleHQu
aWRsOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQ29u
dGV4dC5pZGwuCisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9XZWJLaXRBdWRpb1Bhbm5lck5v
ZGUuY3BwOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1Bhbm5l
ck5vZGUuY3BwLgorICAgICAgICAoV2ViQ29yZTo6Zml4TkFOcyk6CisgICAgICAgIChXZWJDb3Jl
OjpXZWJLaXRBdWRpb1Bhbm5lck5vZGU6OldlYktpdEF1ZGlvUGFubmVyTm9kZSk6CisgICAgICAg
IChXZWJDb3JlOjpXZWJLaXRBdWRpb1Bhbm5lck5vZGU6On5XZWJLaXRBdWRpb1Bhbm5lck5vZGUp
OgorICAgICAgICAoV2ViQ29yZTo6V2ViS2l0QXVkaW9QYW5uZXJOb2RlOjpwdWxsSW5wdXRzKToK
KyAgICAgICAgKFdlYkNvcmU6OldlYktpdEF1ZGlvUGFubmVyTm9kZTo6cHJvY2Vzcyk6CisgICAg
ICAgIChXZWJDb3JlOjpXZWJLaXRBdWRpb1Bhbm5lck5vZGU6OnJlc2V0KToKKyAgICAgICAgKFdl
YkNvcmU6OldlYktpdEF1ZGlvUGFubmVyTm9kZTo6aW5pdGlhbGl6ZSk6CisgICAgICAgIChXZWJD
b3JlOjpXZWJLaXRBdWRpb1Bhbm5lck5vZGU6OnVuaW5pdGlhbGl6ZSk6CisgICAgICAgIChXZWJD
b3JlOjpXZWJLaXRBdWRpb1Bhbm5lck5vZGU6Omxpc3RlbmVyKToKKyAgICAgICAgKFdlYkNvcmU6
OldlYktpdEF1ZGlvUGFubmVyTm9kZTo6c2V0UGFubmluZ01vZGVsKToKKyAgICAgICAgKFdlYkNv
cmU6OldlYktpdEF1ZGlvUGFubmVyTm9kZTo6ZGlzdGFuY2VNb2RlbCBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpXZWJLaXRBdWRpb1Bhbm5lck5vZGU6OnNldERpc3RhbmNlTW9kZWwpOgorICAg
ICAgICAoV2ViQ29yZTo6V2ViS2l0QXVkaW9QYW5uZXJOb2RlOjpnZXRBemltdXRoRWxldmF0aW9u
KToKKyAgICAgICAgKFdlYkNvcmU6OldlYktpdEF1ZGlvUGFubmVyTm9kZTo6ZG9wcGxlclJhdGUp
OgorICAgICAgICAoV2ViQ29yZTo6V2ViS2l0QXVkaW9QYW5uZXJOb2RlOjpkaXN0YW5jZUNvbmVH
YWluKToKKyAgICAgICAgKFdlYkNvcmU6OldlYktpdEF1ZGlvUGFubmVyTm9kZTo6bm90aWZ5QXVk
aW9Tb3VyY2VzQ29ubmVjdGVkVG9Ob2RlKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL1dl
YktpdEF1ZGlvUGFubmVyTm9kZS5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmF1ZGlvL1Bhbm5lck5vZGUuaC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL1dlYktp
dEF1ZGlvUGFubmVyTm9kZS5pZGw6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViYXVkaW8vUGFubmVyTm9kZS5pZGwuCisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9XZWJL
aXRPZmZsaW5lQXVkaW9Db250ZXh0LmNwcDogQ29waWVkIGZyb20gU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJhdWRpby9EZWxheU5vZGUuY3BwLgorICAgICAgICAoV2ViQ29yZTo6V2ViS2l0T2Zm
bGluZUF1ZGlvQ29udGV4dDo6V2ViS2l0T2ZmbGluZUF1ZGlvQ29udGV4dCk6CisgICAgICAgIChX
ZWJDb3JlOjpXZWJLaXRPZmZsaW5lQXVkaW9Db250ZXh0OjpjcmVhdGUpOgorICAgICAgICAqIE1v
ZHVsZXMvd2ViYXVkaW8vV2ViS2l0T2ZmbGluZUF1ZGlvQ29udGV4dC5oOiBDb3BpZWQgZnJvbSBT
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0RlbGF5Tm9kZS5oLgorICAgICAgICAqIE1v
ZHVsZXMvd2ViYXVkaW8vV2ViS2l0T2ZmbGluZUF1ZGlvQ29udGV4dC5pZGw6IENvcGllZCBmcm9t
IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vT2ZmbGluZUF1ZGlvQ29udGV4dC5pZGwu
CisgICAgICAgICogU291cmNlcy50eHQ6CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qOgorICAgICAgICAqIGJpbmRpbmdzL2pzL1dlYkNvcmVCdWlsdGluTmFtZXMu
aDoKKyAgICAgICAgKiBkb20vRXZlbnRUYXJnZXRGYWN0b3J5LmluOgorICAgICAgICAqIHBhZ2Uv
U2V0dGluZ3MueWFtbDoKKyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFscy5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpJbnRlcm5hbHM6OnNldEF1ZGlvQ29udGV4dFJlc3RyaWN0aW9ucyk6CisgICAg
ICAgICogdGVzdGluZy9JbnRlcm5hbHMuaDoKKyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFscy5p
ZGw6CisKIDIwMjAtMDYtMTcgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAg
ICAgICBVbnJldmlld2VkIGF0dGVtcHQgdG8gZml4IGludGVybmFsIG1hY09TIGJ1aWxkIGFmdGVy
IHIyNjMxNTcuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9X
ZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDk4ODczODE3NDljOGNiNDAxNjNlNjdkYTA0MDg4MWFlNmY2
M2Q4NjEuLmUyMjNkYWE3Njc4ZTc4YmVmZjE4ZDQ3MjdlZWMzOGFhYWFjY2E0NmEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMTUgQEAKKzIwMjAtMDYtMTcgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxl
LmNvbT4KKworICAgICAgICBBZGQgZXhwZXJpbWVudGFsIGZlYXR1cmUgZmxhZyBmb3IgbW9kZXJu
ICYgdW5wcmVmaXhlZCBXZWJBdWRpbyBBUEkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTIxMzI2OAorCisgICAgICAgIFJldmlld2VkIGJ5IEplciBOb2Js
ZS4KKworICAgICAgICBBZGQgZXhwZXJpbWVudGFsIGZlYXR1cmUgZmxhZyBmb3IgbW9kZXJuICYg
dW5wcmVmaXhlZCBXZWJBdWRpbyBBUEksCisgICAgICAgIG9mZiBieSBkZWZhdWx0LgorCisgICAg
ICAgICogU2hhcmVkL1dlYlByZWZlcmVuY2VzLnlhbWw6CisKIDIwMjAtMDYtMTcgIERhcnJ5bCBQ
b2d1ZSAgPGRhcnJ5bEBkcG9ndWUuY2E+CiAKICAgICAgICAgSW5kZXhlZERCOiBTdXBwb3J0IElE
QkZhY3RvcnkgZGF0YWJhc2VzIG1ldGhvZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ01h
a2VMaXN0cy50eHQgYi9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAppbmRleCA5NzU5NDg5
NWQ4YzdhYzI4MTE4Yzk3YzRmMTlhZTViNmFiODkxYzllLi4zOTlhNmJkM2ZkMDk2YzUxMTc4ODFj
OTI1NzY5MTUwNTEzM2MzMDExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3Rz
LnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dApAQCAtNDMzLDYgKzQzMyw3
IEBAIHNldChXZWJDb3JlX05PTl9TVkdfSURMX0ZJTEVTCiAgICAgTW9kdWxlcy93ZWJhdWRpby9B
dWRpb0J1ZmZlckNhbGxiYWNrLmlkbAogICAgIE1vZHVsZXMvd2ViYXVkaW8vQXVkaW9CdWZmZXJT
b3VyY2VOb2RlLmlkbAogICAgIE1vZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0LmlkbAorICAg
IE1vZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0U3RhdGUuaWRsCiAgICAgTW9kdWxlcy93ZWJh
dWRpby9BdWRpb0Rlc3RpbmF0aW9uTm9kZS5pZGwKICAgICBNb2R1bGVzL3dlYmF1ZGlvL0F1ZGlv
TGlzdGVuZXIuaWRsCiAgICAgTW9kdWxlcy93ZWJhdWRpby9BdWRpb05vZGUuaWRsCkBAIC00NDMs
NiArNDQ0LDcgQEAgc2V0KFdlYkNvcmVfTk9OX1NWR19JRExfRklMRVMKICAgICBNb2R1bGVzL3dl
YmF1ZGlvL0NoYW5uZWxTcGxpdHRlck5vZGUuaWRsCiAgICAgTW9kdWxlcy93ZWJhdWRpby9Db252
b2x2ZXJOb2RlLmlkbAogICAgIE1vZHVsZXMvd2ViYXVkaW8vRGVsYXlOb2RlLmlkbAorICAgIE1v
ZHVsZXMvd2ViYXVkaW8vRGlzdGFuY2VNb2RlbFR5cGUuaWRsCiAgICAgTW9kdWxlcy93ZWJhdWRp
by9EeW5hbWljc0NvbXByZXNzb3JOb2RlLmlkbAogICAgIE1vZHVsZXMvd2ViYXVkaW8vR2Fpbk5v
ZGUuaWRsCiAgICAgTW9kdWxlcy93ZWJhdWRpby9NZWRpYUVsZW1lbnRBdWRpb1NvdXJjZU5vZGUu
aWRsCkBAIC00NTIsOSArNDU0LDEzIEBAIHNldChXZWJDb3JlX05PTl9TVkdfSURMX0ZJTEVTCiAg
ICAgTW9kdWxlcy93ZWJhdWRpby9PZmZsaW5lQXVkaW9Db250ZXh0LmlkbAogICAgIE1vZHVsZXMv
d2ViYXVkaW8vT3NjaWxsYXRvck5vZGUuaWRsCiAgICAgTW9kdWxlcy93ZWJhdWRpby9QYW5uZXJO
b2RlLmlkbAorICAgIE1vZHVsZXMvd2ViYXVkaW8vUGFubmluZ01vZGVsVHlwZS5pZGwKICAgICBN
b2R1bGVzL3dlYmF1ZGlvL1BlcmlvZGljV2F2ZS5pZGwKICAgICBNb2R1bGVzL3dlYmF1ZGlvL1Nj
cmlwdFByb2Nlc3Nvck5vZGUuaWRsCiAgICAgTW9kdWxlcy93ZWJhdWRpby9XYXZlU2hhcGVyTm9k
ZS5pZGwKKyAgICBNb2R1bGVzL3dlYmF1ZGlvL1dlYktpdEF1ZGlvQ29udGV4dC5pZGwKKyAgICBN
b2R1bGVzL3dlYmF1ZGlvL1dlYktpdEF1ZGlvUGFubmVyTm9kZS5pZGwKKyAgICBNb2R1bGVzL3dl
YmF1ZGlvL1dlYktpdE9mZmxpbmVBdWRpb0NvbnRleHQuaWRsCiAKICAgICBNb2R1bGVzL3dlYmF1
dGhuL0F0dGVzdGF0aW9uQ29udmV5YW5jZVByZWZlcmVuY2UuaWRsCiAgICAgTW9kdWxlcy93ZWJh
dXRobi9BdXRoZW50aWNhdGlvbkV4dGVuc2lvbnNDbGllbnRJbnB1dHMuaWRsCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy1pbnB1dC54Y2ZpbGVsaXN0IGIvU291cmNl
L1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMtaW5wdXQueGNmaWxlbGlzdAppbmRleCA2YTdhYTdkMTRl
YmI0MzdkNzQxZWMyZWY4NTMzNzc1ZDM0NGQ0NjU0Li5mN2Q2NGMxOTNkMGU3ZGYyODE2NWJkZDc0
YTQwZDNmOTBlNmE4MjEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNl
cy1pbnB1dC54Y2ZpbGVsaXN0CisrKyBiL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLWlu
cHV0LnhjZmlsZWxpc3QKQEAgLTMwMCw2ICszMDAsNyBAQCAkKFBST0pFQ1RfRElSKS9Nb2R1bGVz
L3dlYmF1ZGlvL0F1ZGlvQnVmZmVyLmlkbAogJChQUk9KRUNUX0RJUikvTW9kdWxlcy93ZWJhdWRp
by9BdWRpb0J1ZmZlckNhbGxiYWNrLmlkbAogJChQUk9KRUNUX0RJUikvTW9kdWxlcy93ZWJhdWRp
by9BdWRpb0J1ZmZlclNvdXJjZU5vZGUuaWRsCiAkKFBST0pFQ1RfRElSKS9Nb2R1bGVzL3dlYmF1
ZGlvL0F1ZGlvQ29udGV4dC5pZGwKKyQoUFJPSkVDVF9ESVIpL01vZHVsZXMvd2ViYXVkaW8vQXVk
aW9Db250ZXh0U3RhdGUuaWRsCiAkKFBST0pFQ1RfRElSKS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlv
RGVzdGluYXRpb25Ob2RlLmlkbAogJChQUk9KRUNUX0RJUikvTW9kdWxlcy93ZWJhdWRpby9BdWRp
b0xpc3RlbmVyLmlkbAogJChQUk9KRUNUX0RJUikvTW9kdWxlcy93ZWJhdWRpby9BdWRpb05vZGUu
aWRsCkBAIC0zMTAsNiArMzExLDcgQEAgJChQUk9KRUNUX0RJUikvTW9kdWxlcy93ZWJhdWRpby9D
aGFubmVsTWVyZ2VyTm9kZS5pZGwKICQoUFJPSkVDVF9ESVIpL01vZHVsZXMvd2ViYXVkaW8vQ2hh
bm5lbFNwbGl0dGVyTm9kZS5pZGwKICQoUFJPSkVDVF9ESVIpL01vZHVsZXMvd2ViYXVkaW8vQ29u
dm9sdmVyTm9kZS5pZGwKICQoUFJPSkVDVF9ESVIpL01vZHVsZXMvd2ViYXVkaW8vRGVsYXlOb2Rl
LmlkbAorJChQUk9KRUNUX0RJUikvTW9kdWxlcy93ZWJhdWRpby9EaXN0YW5jZU1vZGVsVHlwZS5p
ZGwKICQoUFJPSkVDVF9ESVIpL01vZHVsZXMvd2ViYXVkaW8vRHluYW1pY3NDb21wcmVzc29yTm9k
ZS5pZGwKICQoUFJPSkVDVF9ESVIpL01vZHVsZXMvd2ViYXVkaW8vR2Fpbk5vZGUuaWRsCiAkKFBS
T0pFQ1RfRElSKS9Nb2R1bGVzL3dlYmF1ZGlvL01lZGlhRWxlbWVudEF1ZGlvU291cmNlTm9kZS5p
ZGwKQEAgLTMxOSw5ICszMjEsMTMgQEAgJChQUk9KRUNUX0RJUikvTW9kdWxlcy93ZWJhdWRpby9P
ZmZsaW5lQXVkaW9Db21wbGV0aW9uRXZlbnQuaWRsCiAkKFBST0pFQ1RfRElSKS9Nb2R1bGVzL3dl
YmF1ZGlvL09mZmxpbmVBdWRpb0NvbnRleHQuaWRsCiAkKFBST0pFQ1RfRElSKS9Nb2R1bGVzL3dl
YmF1ZGlvL09zY2lsbGF0b3JOb2RlLmlkbAogJChQUk9KRUNUX0RJUikvTW9kdWxlcy93ZWJhdWRp
by9QYW5uZXJOb2RlLmlkbAorJChQUk9KRUNUX0RJUikvTW9kdWxlcy93ZWJhdWRpby9QYW5uaW5n
TW9kZWxUeXBlLmlkbAogJChQUk9KRUNUX0RJUikvTW9kdWxlcy93ZWJhdWRpby9QZXJpb2RpY1dh
dmUuaWRsCiAkKFBST0pFQ1RfRElSKS9Nb2R1bGVzL3dlYmF1ZGlvL1NjcmlwdFByb2Nlc3Nvck5v
ZGUuaWRsCiAkKFBST0pFQ1RfRElSKS9Nb2R1bGVzL3dlYmF1ZGlvL1dhdmVTaGFwZXJOb2RlLmlk
bAorJChQUk9KRUNUX0RJUikvTW9kdWxlcy93ZWJhdWRpby9XZWJLaXRBdWRpb0NvbnRleHQuaWRs
CiskKFBST0pFQ1RfRElSKS9Nb2R1bGVzL3dlYmF1ZGlvL1dlYktpdEF1ZGlvUGFubmVyTm9kZS5p
ZGwKKyQoUFJPSkVDVF9ESVIpL01vZHVsZXMvd2ViYXVkaW8vV2ViS2l0T2ZmbGluZUF1ZGlvQ29u
dGV4dC5pZGwKICQoUFJPSkVDVF9ESVIpL01vZHVsZXMvd2ViYXV0aG4vQXR0ZXN0YXRpb25Db252
ZXlhbmNlUHJlZmVyZW5jZS5pZGwKICQoUFJPSkVDVF9ESVIpL01vZHVsZXMvd2ViYXV0aG4vQXV0
aGVudGljYXRpb25FeHRlbnNpb25zQ2xpZW50SW5wdXRzLmlkbAogJChQUk9KRUNUX0RJUikvTW9k
dWxlcy93ZWJhdXRobi9BdXRoZW50aWNhdGlvbkV4dGVuc2lvbnNDbGllbnRPdXRwdXRzLmlkbApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxp
c3QgYi9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlzdAppbmRl
eCBhMTQzMzYyNTE0MDJmNjgzNmVjODgwNDhmM2UwY2JkOTE0MjZiMDE3Li5jYmM2NDhhZmY4NzJl
MTdjOGFlYjJmM2RjNmU5YmM2Yjc4YzA0NDkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9E
ZXJpdmVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlzdAorKysgYi9Tb3VyY2UvV2ViQ29yZS9EZXJp
dmVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlzdApAQCAtMTU1LDYgKzE1NSw4IEBAICQoQlVJTFRf
UFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTQXVkaW9Db25maWd1cmF0aW9u
LmNwcAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNBdWRp
b0NvbmZpZ3VyYXRpb24uaAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dl
YkNvcmUvSlNBdWRpb0NvbnRleHQuY3BwCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNv
dXJjZXMvV2ViQ29yZS9KU0F1ZGlvQ29udGV4dC5oCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVy
aXZlZFNvdXJjZXMvV2ViQ29yZS9KU0F1ZGlvQ29udGV4dFN0YXRlLmNwcAorJChCVUlMVF9QUk9E
VUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNBdWRpb0NvbnRleHRTdGF0ZS5oCiAk
KEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0F1ZGlvRGVzdGlu
YXRpb25Ob2RlLmNwcAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNv
cmUvSlNBdWRpb0Rlc3RpbmF0aW9uTm9kZS5oCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZl
ZFNvdXJjZXMvV2ViQ29yZS9KU0F1ZGlvTGlzdGVuZXIuY3BwCkBAIC00ODYsNiArNDg4LDggQEAg
JChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNEZXZpY2VPcmll
bnRhdGlvbk9yTW90aW9uRXZlbnQuY3AKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291
cmNlcy9XZWJDb3JlL0pTRGV2aWNlT3JpZW50YXRpb25Pck1vdGlvbkV2ZW50LmgKICQoQlVJTFRf
UFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTRGV2aWNlT3JpZW50YXRpb25P
ck1vdGlvblBlcm1pc3Npb25TdGF0ZS5jcHAKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVk
U291cmNlcy9XZWJDb3JlL0pTRGV2aWNlT3JpZW50YXRpb25Pck1vdGlvblBlcm1pc3Npb25TdGF0
ZS5oCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0Rpc3Rh
bmNlTW9kZWxUeXBlLmNwcAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dl
YkNvcmUvSlNEaXN0YW5jZU1vZGVsVHlwZS5oCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZl
ZFNvdXJjZXMvV2ViQ29yZS9KU0RvY3VtZW50LmNwcAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rl
cml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNEb2N1bWVudC5oCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikv
RGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0RvY3VtZW50QW5kRWxlbWVudEV2ZW50SGFuZGxlcnMu
Y3BwCkBAIC0xMjI0LDYgKzEyMjgsOCBAQCAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNv
dXJjZXMvV2ViQ29yZS9KU1BhaW50V29ya2xldEdsb2JhbFNjb3BlLmNwcAogJChCVUlMVF9QUk9E
VUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNQYWludFdvcmtsZXRHbG9iYWxTY29w
ZS5oCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU1Bhbm5l
ck5vZGUuY3BwCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9K
U1Bhbm5lck5vZGUuaAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNv
cmUvSlNQYW5uaW5nTW9kZWxUeXBlLmNwcAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRT
b3VyY2VzL1dlYkNvcmUvSlNQYW5uaW5nTW9kZWxUeXBlLmgKICQoQlVJTFRfUFJPRFVDVFNfRElS
KS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTUGFyZW50Tm9kZS5jcHAKICQoQlVJTFRfUFJPRFVD
VFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTUGFyZW50Tm9kZS5oCiAkKEJVSUxUX1BS
T0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU1BhdGgyRC5jcHAKQEAgLTIwNzgs
NiArMjA4NCwxMCBAQCAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29y
ZS9KU1dlYkdQVVRleHR1cmVWaWV3LmNwcAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRT
b3VyY2VzL1dlYkNvcmUvSlNXZWJHUFVUZXh0dXJlVmlldy5oCiAkKEJVSUxUX1BST0RVQ1RTX0RJ
UikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU1dlYktpdEFuaW1hdGlvbkV2ZW50LmNwcAogJChC
VUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNXZWJLaXRBbmltYXRp
b25FdmVudC5oCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9K
U1dlYktpdEF1ZGlvQ29udGV4dC5jcHAKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291
cmNlcy9XZWJDb3JlL0pTV2ViS2l0QXVkaW9Db250ZXh0LmgKKyQoQlVJTFRfUFJPRFVDVFNfRElS
KS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTV2ViS2l0QXVkaW9QYW5uZXJOb2RlLmNwcAorJChC
VUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNXZWJLaXRBdWRpb1Bh
bm5lck5vZGUuaAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUv
SlNXZWJLaXRDU1NNYXRyaXguY3BwCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJj
ZXMvV2ViQ29yZS9KU1dlYktpdENTU01hdHJpeC5oCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVy
aXZlZFNvdXJjZXMvV2ViQ29yZS9KU1dlYktpdENTU1ZpZXdwb3J0UnVsZS5jcHAKQEAgLTIwOTQs
NiArMjEwNCw4IEBAICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3Jl
L0pTV2ViS2l0TWVkaWFLZXlzLmNwcAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3Vy
Y2VzL1dlYkNvcmUvSlNXZWJLaXRNZWRpYUtleXMuaAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rl
cml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNXZWJLaXROYW1lc3BhY2UuY3BwCiAkKEJVSUxUX1BST0RV
Q1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU1dlYktpdE5hbWVzcGFjZS5oCiskKEJV
SUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU1dlYktpdE9mZmxpbmVB
dWRpb0NvbnRleHQuY3BwCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2Vi
Q29yZS9KU1dlYktpdE9mZmxpbmVBdWRpb0NvbnRleHQuaAogJChCVUlMVF9QUk9EVUNUU19ESVIp
L0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNXZWJLaXRQbGF5YmFja1RhcmdldEF2YWlsYWJpbGl0
eUV2ZW50LmNwcAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUv
SlNXZWJLaXRQbGF5YmFja1RhcmdldEF2YWlsYWJpbGl0eUV2ZW50LmgKICQoQlVJTFRfUFJPRFVD
VFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTV2ViS2l0UG9pbnQuY3BwCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtlIGIvU291cmNlL1dlYkNvcmUv
RGVyaXZlZFNvdXJjZXMubWFrZQppbmRleCBkMjY3MDg5ZTM4NzM3ZDkyNGY5NDY1Mjk5MGNhYjky
MTNjOThiZDI4Li5iMjdjNzljZTY2M2UyYzhiOGVhNDYwYWUwODFlYmYxZGRlNzAzM2JhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtlCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UKQEAgLTM4Myw2ICszODMsNyBAQCBKU19CSU5ESU5H
X0lETFMgPSBcCiAgICAgJChXZWJDb3JlKS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQnVmZmVyQ2Fs
bGJhY2suaWRsIFwKICAgICAkKFdlYkNvcmUpL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9CdWZmZXJT
b3VyY2VOb2RlLmlkbCBcCiAgICAgJChXZWJDb3JlKS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQ29u
dGV4dC5pZGwgXAorICAgICQoV2ViQ29yZSkvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0NvbnRleHRT
dGF0ZS5pZGwgXAogICAgICQoV2ViQ29yZSkvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0Rlc3RpbmF0
aW9uTm9kZS5pZGwgXAogICAgICQoV2ViQ29yZSkvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0xpc3Rl
bmVyLmlkbCBcCiAgICAgJChXZWJDb3JlKS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvTm9kZS5pZGwg
XApAQCAtMzkzLDYgKzM5NCw3IEBAIEpTX0JJTkRJTkdfSURMUyA9IFwKICAgICAkKFdlYkNvcmUp
L01vZHVsZXMvd2ViYXVkaW8vQ2hhbm5lbFNwbGl0dGVyTm9kZS5pZGwgXAogICAgICQoV2ViQ29y
ZSkvTW9kdWxlcy93ZWJhdWRpby9Db252b2x2ZXJOb2RlLmlkbCBcCiAgICAgJChXZWJDb3JlKS9N
b2R1bGVzL3dlYmF1ZGlvL0RlbGF5Tm9kZS5pZGwgXAorICAgICQoV2ViQ29yZSkvTW9kdWxlcy93
ZWJhdWRpby9EaXN0YW5jZU1vZGVsVHlwZS5pZGwgXAogICAgICQoV2ViQ29yZSkvTW9kdWxlcy93
ZWJhdWRpby9EeW5hbWljc0NvbXByZXNzb3JOb2RlLmlkbCBcCiAgICAgJChXZWJDb3JlKS9Nb2R1
bGVzL3dlYmF1ZGlvL0dhaW5Ob2RlLmlkbCBcCiAgICAgJChXZWJDb3JlKS9Nb2R1bGVzL3dlYmF1
ZGlvL01lZGlhRWxlbWVudEF1ZGlvU291cmNlTm9kZS5pZGwgXApAQCAtNDAyLDkgKzQwNCwxMyBA
QCBKU19CSU5ESU5HX0lETFMgPSBcCiAgICAgJChXZWJDb3JlKS9Nb2R1bGVzL3dlYmF1ZGlvL09m
ZmxpbmVBdWRpb0NvbnRleHQuaWRsIFwKICAgICAkKFdlYkNvcmUpL01vZHVsZXMvd2ViYXVkaW8v
T3NjaWxsYXRvck5vZGUuaWRsIFwKICAgICAkKFdlYkNvcmUpL01vZHVsZXMvd2ViYXVkaW8vUGFu
bmVyTm9kZS5pZGwgXAorICAgICQoV2ViQ29yZSkvTW9kdWxlcy93ZWJhdWRpby9QYW5uaW5nTW9k
ZWxUeXBlLmlkbCBcCiAgICAgJChXZWJDb3JlKS9Nb2R1bGVzL3dlYmF1ZGlvL1BlcmlvZGljV2F2
ZS5pZGwgXAogICAgICQoV2ViQ29yZSkvTW9kdWxlcy93ZWJhdWRpby9TY3JpcHRQcm9jZXNzb3JO
b2RlLmlkbCBcCiAgICAgJChXZWJDb3JlKS9Nb2R1bGVzL3dlYmF1ZGlvL1dhdmVTaGFwZXJOb2Rl
LmlkbCBcCisgICAgJChXZWJDb3JlKS9Nb2R1bGVzL3dlYmF1ZGlvL1dlYktpdEF1ZGlvQ29udGV4
dC5pZGwgXAorICAgICQoV2ViQ29yZSkvTW9kdWxlcy93ZWJhdWRpby9XZWJLaXRBdWRpb1Bhbm5l
ck5vZGUuaWRsIFwKKyAgICAkKFdlYkNvcmUpL01vZHVsZXMvd2ViYXVkaW8vV2ViS2l0T2ZmbGlu
ZUF1ZGlvQ29udGV4dC5pZGwgXAogICAgICQoV2ViQ29yZSkvTW9kdWxlcy93ZWJhdXRobi9BdHRl
c3RhdGlvbkNvbnZleWFuY2VQcmVmZXJlbmNlLmlkbCBcCiAgICAgJChXZWJDb3JlKS9Nb2R1bGVz
L3dlYmF1dGhuL0F1dGhlbnRpY2F0aW9uRXh0ZW5zaW9uc0NsaWVudElucHV0cy5pZGwgXAogICAg
ICQoV2ViQ29yZSkvTW9kdWxlcy93ZWJhdXRobi9BdXRoZW50aWNhdGlvbkV4dGVuc2lvbnNDbGll
bnRPdXRwdXRzLmlkbCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1
ZGlvL0FuYWx5c2VyTm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0Fu
YWx5c2VyTm9kZS5jcHAKaW5kZXggMTc5ODcwNzAxZjg1MzM4NDhiOGE0OWE3NWQzYWYxMzYxNTRi
MDhkMi4uMjE1ZGUzMjFlOWExNmMzMjQ2Y2E0OTQ3NGQ5ZWFlMjUyMjUzODIwMSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BbmFseXNlck5vZGUuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQW5hbHlzZXJOb2RlLmNwcApAQCAtMzYs
NyArMzYsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFdURl9NQUtFX0lTT19BTExPQ0FURURf
SU1QTChBbmFseXNlck5vZGUpOwogCi1BbmFseXNlck5vZGU6OkFuYWx5c2VyTm9kZShBdWRpb0Nv
bnRleHQmIGNvbnRleHQsIGZsb2F0IHNhbXBsZVJhdGUpCitBbmFseXNlck5vZGU6OkFuYWx5c2Vy
Tm9kZShBdWRpb0NvbnRleHRCYXNlJiBjb250ZXh0LCBmbG9hdCBzYW1wbGVSYXRlKQogICAgIDog
QXVkaW9CYXNpY0luc3BlY3Rvck5vZGUoY29udGV4dCwgc2FtcGxlUmF0ZSwgMikKIHsKICAgICBz
ZXROb2RlVHlwZShOb2RlVHlwZUFuYWx5c2VyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViYXVkaW8vQW5hbHlzZXJOb2RlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmF1ZGlvL0FuYWx5c2VyTm9kZS5oCmluZGV4IGRhMWI1ZTg5Y2EyOGRlZWNjMzljMmYzNjY5
N2ZkOTBhMGIzZTBmN2UuLmE0MDIzYTMwZGVhMGRmMmJjOWE3YmIwNGJlZGFkOGEzMGRiOWRjZTUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQW5hbHlzZXJOb2Rl
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BbmFseXNlck5vZGUuaApA
QCAtMzIsNyArMzIsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBBbmFseXNlck5vZGUg
ZmluYWwgOiBwdWJsaWMgQXVkaW9CYXNpY0luc3BlY3Rvck5vZGUgewogICAgIFdURl9NQUtFX0lT
T19BTExPQ0FURUQoQW5hbHlzZXJOb2RlKTsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPEFuYWx5
c2VyTm9kZT4gY3JlYXRlKEF1ZGlvQ29udGV4dCYgY29udGV4dCwgZmxvYXQgc2FtcGxlUmF0ZSkK
KyAgICBzdGF0aWMgUmVmPEFuYWx5c2VyTm9kZT4gY3JlYXRlKEF1ZGlvQ29udGV4dEJhc2UmIGNv
bnRleHQsIGZsb2F0IHNhbXBsZVJhdGUpCiAgICAgewogICAgICAgICByZXR1cm4gYWRvcHRSZWYo
Km5ldyBBbmFseXNlck5vZGUoY29udGV4dCwgc2FtcGxlUmF0ZSkpOwogICAgIH0KQEAgLTU4LDcg
KzU4LDcgQEAgcHVibGljOgogICAgIHZvaWQgZ2V0Qnl0ZVRpbWVEb21haW5EYXRhKGNvbnN0IFJl
ZlB0cjxKU0M6OlVpbnQ4QXJyYXk+JiBhcnJheSkgeyBtX2FuYWx5c2VyLmdldEJ5dGVUaW1lRG9t
YWluRGF0YShhcnJheS5nZXQoKSk7IH0KIAogcHJpdmF0ZToKLSAgICBBbmFseXNlck5vZGUoQXVk
aW9Db250ZXh0JiwgZmxvYXQgc2FtcGxlUmF0ZSk7CisgICAgQW5hbHlzZXJOb2RlKEF1ZGlvQ29u
dGV4dEJhc2UmLCBmbG9hdCBzYW1wbGVSYXRlKTsKIAogICAgIHZvaWQgcHJvY2VzcyhzaXplX3Qg
ZnJhbWVzVG9Qcm9jZXNzKSBmaW5hbDsKICAgICB2b2lkIHJlc2V0KCkgZmluYWw7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQmFzaWNJbnNwZWN0b3JO
b2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9CYXNpY0luc3Bl
Y3Rvck5vZGUuY3BwCmluZGV4IDBmYjU1YjA4ZjBjMWEyYmUyZDA3MGM0ZTBkOGQ4ZjQ2N2UzNDZh
NzIuLjE0NTNkYWNhZmRhMWQzOGEzNGNmZDFiNmI5M2NiNzgzMzIzNWQ5ODggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9CYXNpY0luc3BlY3Rvck5vZGUu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9CYXNpY0luc3Bl
Y3Rvck5vZGUuY3BwCkBAIC0zNiw3ICszNiw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogV1RG
X01BS0VfSVNPX0FMTE9DQVRFRF9JTVBMKEF1ZGlvQmFzaWNJbnNwZWN0b3JOb2RlKTsKIAotQXVk
aW9CYXNpY0luc3BlY3Rvck5vZGU6OkF1ZGlvQmFzaWNJbnNwZWN0b3JOb2RlKEF1ZGlvQ29udGV4
dCYgY29udGV4dCwgZmxvYXQgc2FtcGxlUmF0ZSwgdW5zaWduZWQgb3V0cHV0Q2hhbm5lbENvdW50
KQorQXVkaW9CYXNpY0luc3BlY3Rvck5vZGU6OkF1ZGlvQmFzaWNJbnNwZWN0b3JOb2RlKEF1ZGlv
Q29udGV4dEJhc2UmIGNvbnRleHQsIGZsb2F0IHNhbXBsZVJhdGUsIHVuc2lnbmVkIG91dHB1dENo
YW5uZWxDb3VudCkKICAgICA6IEF1ZGlvTm9kZShjb250ZXh0LCBzYW1wbGVSYXRlKQogewogICAg
IHNldE5vZGVUeXBlKE5vZGVUeXBlQmFzaWNJbnNwZWN0b3IpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0Jhc2ljSW5zcGVjdG9yTm9kZS5oIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0Jhc2ljSW5zcGVjdG9yTm9kZS5oCmlu
ZGV4IDgwZTA4ZDI5NjE3YjE3NzRjNjBkZDE4NzkzZDE2MzBlZjJhZDAzZGIuLmU3NjllNDZhZTIx
ZjQ3MzQxYzI3M2M4ODQ1Y2JlMDI5ZTgxMjhkNjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViYXVkaW8vQXVkaW9CYXNpY0luc3BlY3Rvck5vZGUuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQmFzaWNJbnNwZWN0b3JOb2RlLmgKQEAgLTM0
LDcgKzM0LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgQXVkaW9CYXNpY0luc3BlY3Rv
ck5vZGUgOiBwdWJsaWMgQXVkaW9Ob2RlIHsKICAgICBXVEZfTUFLRV9JU09fQUxMT0NBVEVEKEF1
ZGlvQmFzaWNJbnNwZWN0b3JOb2RlKTsKIHB1YmxpYzoKLSAgICBBdWRpb0Jhc2ljSW5zcGVjdG9y
Tm9kZShBdWRpb0NvbnRleHQmLCBmbG9hdCBzYW1wbGVSYXRlLCB1bnNpZ25lZCBvdXRwdXRDaGFu
bmVsQ291bnQpOworICAgIEF1ZGlvQmFzaWNJbnNwZWN0b3JOb2RlKEF1ZGlvQ29udGV4dEJhc2Um
LCBmbG9hdCBzYW1wbGVSYXRlLCB1bnNpZ25lZCBvdXRwdXRDaGFubmVsQ291bnQpOwogCiBwcml2
YXRlOgogICAgIHZvaWQgcHVsbElucHV0cyhzaXplX3QgZnJhbWVzVG9Qcm9jZXNzKSBvdmVycmlk
ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9CYXNp
Y1Byb2Nlc3Nvck5vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRp
b0Jhc2ljUHJvY2Vzc29yTm9kZS5jcHAKaW5kZXggMGI5ZjFjZWQ4NzQ1YjVkOTk4ZGMzOGQ2MzZl
NzkwYWJmYmU2ZTk4My4uZjdiNzk2YmU1NTU0NTM2YTZhNTQyYzc1ZTM2MDU1MjVmOTQ2OGEyOSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0Jhc2ljUHJv
Y2Vzc29yTm9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRp
b0Jhc2ljUHJvY2Vzc29yTm9kZS5jcHAKQEAgLTM5LDcgKzM5LDcgQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogCiBXVEZfTUFLRV9JU09fQUxMT0NBVEVEX0lNUEwoQXVkaW9CYXNpY1Byb2Nlc3Nvck5v
ZGUpOwogCi1BdWRpb0Jhc2ljUHJvY2Vzc29yTm9kZTo6QXVkaW9CYXNpY1Byb2Nlc3Nvck5vZGUo
QXVkaW9Db250ZXh0JiBjb250ZXh0LCBmbG9hdCBzYW1wbGVSYXRlKQorQXVkaW9CYXNpY1Byb2Nl
c3Nvck5vZGU6OkF1ZGlvQmFzaWNQcm9jZXNzb3JOb2RlKEF1ZGlvQ29udGV4dEJhc2UmIGNvbnRl
eHQsIGZsb2F0IHNhbXBsZVJhdGUpCiAgICAgOiBBdWRpb05vZGUoY29udGV4dCwgc2FtcGxlUmF0
ZSkKIHsKICAgICBhZGRJbnB1dChtYWtlVW5pcXVlPEF1ZGlvTm9kZUlucHV0Pih0aGlzKSk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQmFzaWNQcm9j
ZXNzb3JOb2RlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQmFzaWNQ
cm9jZXNzb3JOb2RlLmgKaW5kZXggODJjZmZkYTU5ZjI3ODIwZGIwZDNkNTQ2MDFkNmFjYzRhYzc2
ZjE2MS4uZTE2MzczYmYwMjk3NmE0NWFkODI1ZTJlNjNhODM3YWZmNGY5MjE5YSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0Jhc2ljUHJvY2Vzc29yTm9k
ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9CYXNpY1Byb2Nl
c3Nvck5vZGUuaApAQCAtMzcsNyArMzcsNyBAQCBjbGFzcyBBdWRpb1Byb2Nlc3NvcjsKIGNsYXNz
IEF1ZGlvQmFzaWNQcm9jZXNzb3JOb2RlIDogcHVibGljIEF1ZGlvTm9kZSB7CiAgICAgV1RGX01B
S0VfSVNPX0FMTE9DQVRFRChBdWRpb0Jhc2ljUHJvY2Vzc29yTm9kZSk7CiBwdWJsaWM6Ci0gICAg
QXVkaW9CYXNpY1Byb2Nlc3Nvck5vZGUoQXVkaW9Db250ZXh0JiwgZmxvYXQgc2FtcGxlUmF0ZSk7
CisgICAgQXVkaW9CYXNpY1Byb2Nlc3Nvck5vZGUoQXVkaW9Db250ZXh0QmFzZSYsIGZsb2F0IHNh
bXBsZVJhdGUpOwogCiAgICAgLy8gQXVkaW9Ob2RlCiAgICAgdm9pZCBwcm9jZXNzKHNpemVfdCBm
cmFtZXNUb1Byb2Nlc3MpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJhdWRpby9BdWRpb0J1ZmZlclNvdXJjZU5vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJhdWRpby9BdWRpb0J1ZmZlclNvdXJjZU5vZGUuY3BwCmluZGV4IGMzNjYxZGU1
N2Q3MzllYzQ3MGQ2ZmFkOWY1NDFlNDk1ZWM5NzZkZWYuLjBjMWJhNGU5NGE5OGNiZjdkMTliZGMz
YjIzYTYyZmE5NDZmMDk1MzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
YXVkaW8vQXVkaW9CdWZmZXJTb3VyY2VOb2RlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmF1ZGlvL0F1ZGlvQnVmZmVyU291cmNlTm9kZS5jcHAKQEAgLTQ5LDEyICs0OSwxMiBA
QCBjb25zdCBkb3VibGUgRGVmYXVsdEdyYWluRHVyYXRpb24gPSAwLjAyMDsgLy8gMjBtcwogLy8g
dG8gbWluaW1pemUgbGluZWFyIGludGVycG9sYXRpb24gYWxpYXNpbmcuCiBjb25zdCBkb3VibGUg
TWF4UmF0ZSA9IDEwMjQ7CiAKLVJlZjxBdWRpb0J1ZmZlclNvdXJjZU5vZGU+IEF1ZGlvQnVmZmVy
U291cmNlTm9kZTo6Y3JlYXRlKEF1ZGlvQ29udGV4dCYgY29udGV4dCwgZmxvYXQgc2FtcGxlUmF0
ZSkKK1JlZjxBdWRpb0J1ZmZlclNvdXJjZU5vZGU+IEF1ZGlvQnVmZmVyU291cmNlTm9kZTo6Y3Jl
YXRlKEF1ZGlvQ29udGV4dEJhc2UmIGNvbnRleHQsIGZsb2F0IHNhbXBsZVJhdGUpCiB7CiAgICAg
cmV0dXJuIGFkb3B0UmVmKCpuZXcgQXVkaW9CdWZmZXJTb3VyY2VOb2RlKGNvbnRleHQsIHNhbXBs
ZVJhdGUpKTsKIH0KIAotQXVkaW9CdWZmZXJTb3VyY2VOb2RlOjpBdWRpb0J1ZmZlclNvdXJjZU5v
ZGUoQXVkaW9Db250ZXh0JiBjb250ZXh0LCBmbG9hdCBzYW1wbGVSYXRlKQorQXVkaW9CdWZmZXJT
b3VyY2VOb2RlOjpBdWRpb0J1ZmZlclNvdXJjZU5vZGUoQXVkaW9Db250ZXh0QmFzZSYgY29udGV4
dCwgZmxvYXQgc2FtcGxlUmF0ZSkKICAgICA6IEF1ZGlvU2NoZWR1bGVkU291cmNlTm9kZShjb250
ZXh0LCBzYW1wbGVSYXRlKQogICAgICwgbV9idWZmZXIobnVsbHB0cikKICAgICAsIG1faXNMb29w
aW5nKGZhbHNlKQpAQCAtNDEzLDcgKzQxMyw3IEBAIHZvaWQgQXVkaW9CdWZmZXJTb3VyY2VOb2Rl
OjpzZXRCdWZmZXIoUmVmUHRyPEF1ZGlvQnVmZmVyPiYmIGJ1ZmZlcikKICAgICBERUJVR19MT0co
TE9HSURFTlRJRklFUik7CiAKICAgICAvLyBUaGUgY29udGV4dCBtdXN0IGJlIGxvY2tlZCBzaW5j
ZSBjaGFuZ2luZyB0aGUgYnVmZmVyIGNhbiByZS1jb25maWd1cmUgdGhlIG51bWJlciBvZiBjaGFu
bmVscyB0aGF0IGFyZSBvdXRwdXQuCi0gICAgQXVkaW9Db250ZXh0OjpBdXRvTG9ja2VyIGNvbnRl
eHRMb2NrZXIoY29udGV4dCgpKTsKKyAgICBBdWRpb0NvbnRleHRCYXNlOjpBdXRvTG9ja2VyIGNv
bnRleHRMb2NrZXIoY29udGV4dCgpKTsKICAgICAKICAgICAvLyBUaGlzIHN5bmNocm9uaXplcyB3
aXRoIHByb2Nlc3MoKS4KICAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG1fcHJvY2Vzc011dGV4
KTsKQEAgLTU1Nyw3ICs1NTcsNyBAQCBib29sIEF1ZGlvQnVmZmVyU291cmNlTm9kZTo6cHJvcGFn
YXRlc1NpbGVuY2UoKSBjb25zdAogICAgIHJldHVybiAhaXNQbGF5aW5nT3JTY2hlZHVsZWQoKSB8
fCBoYXNGaW5pc2hlZCgpIHx8ICFtX2J1ZmZlcjsKIH0KIAotdm9pZCBBdWRpb0J1ZmZlclNvdXJj
ZU5vZGU6OnNldFBhbm5lck5vZGUoUGFubmVyTm9kZSogcGFubmVyTm9kZSkKK3ZvaWQgQXVkaW9C
dWZmZXJTb3VyY2VOb2RlOjpzZXRQYW5uZXJOb2RlKFBhbm5lck5vZGVCYXNlKiBwYW5uZXJOb2Rl
KQogewogICAgIGlmIChtX3Bhbm5lck5vZGUgIT0gcGFubmVyTm9kZSAmJiAhaGFzRmluaXNoZWQo
KSkgewogICAgICAgICBpZiAocGFubmVyTm9kZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViYXVkaW8vQXVkaW9CdWZmZXJTb3VyY2VOb2RlLmggYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQnVmZmVyU291cmNlTm9kZS5oCmluZGV4IDU0OGIyNmU3
ZmE3NTE0ZGU5YWQ2NGQzZTM1MzZiOWYzNGJlZGE5ZmIuLjYwMTEzMTE5OWE0ZmE5MmQ3MzBjNTBk
NWFhMjYwMDM4ZjZmZDk2ZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
YXVkaW8vQXVkaW9CdWZmZXJTb3VyY2VOb2RlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJhdWRpby9BdWRpb0J1ZmZlclNvdXJjZU5vZGUuaApAQCAtMzEsNyArMzEsNyBAQAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBBdWRpb0J1ZmZlcjsKLWNsYXNzIFBhbm5lck5vZGU7
CitjbGFzcyBQYW5uZXJOb2RlQmFzZTsKIAogLy8gQXVkaW9CdWZmZXJTb3VyY2VOb2RlIGlzIGFu
IEF1ZGlvTm9kZSByZXByZXNlbnRpbmcgYW4gYXVkaW8gc291cmNlIGZyb20gYW4gaW4tbWVtb3J5
IGF1ZGlvIGFzc2V0IHJlcHJlc2VudGVkIGJ5IGFuIEF1ZGlvQnVmZmVyLgogLy8gSXQgZ2VuZXJh
bGx5IHdpbGwgYmUgdXNlZCBmb3Igc2hvcnQgc291bmRzIHdoaWNoIHJlcXVpcmUgYSBoaWdoIGRl
Z3JlZSBvZiBzY2hlZHVsaW5nIGZsZXhpYmlsaXR5IChjYW4gcGxheWJhY2sgaW4gcmh5dGhtaWNh
bGx5IHBlcmZlY3Qgd2F5cykuCkBAIC0zOSw3ICszOSw3IEBAIGNsYXNzIFBhbm5lck5vZGU7CiBj
bGFzcyBBdWRpb0J1ZmZlclNvdXJjZU5vZGUgZmluYWwgOiBwdWJsaWMgQXVkaW9TY2hlZHVsZWRT
b3VyY2VOb2RlIHsKICAgICBXVEZfTUFLRV9JU09fQUxMT0NBVEVEKEF1ZGlvQnVmZmVyU291cmNl
Tm9kZSk7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxBdWRpb0J1ZmZlclNvdXJjZU5vZGU+IGNy
ZWF0ZShBdWRpb0NvbnRleHQmLCBmbG9hdCBzYW1wbGVSYXRlKTsKKyAgICBzdGF0aWMgUmVmPEF1
ZGlvQnVmZmVyU291cmNlTm9kZT4gY3JlYXRlKEF1ZGlvQ29udGV4dEJhc2UmLCBmbG9hdCBzYW1w
bGVSYXRlKTsKIAogICAgIHZpcnR1YWwgfkF1ZGlvQnVmZmVyU291cmNlTm9kZSgpOwogCkBAIC03
OSw3ICs3OSw3IEBAIHB1YmxpYzoKICAgICBBdWRpb1BhcmFtKiBwbGF5YmFja1JhdGUoKSB7IHJl
dHVybiBtX3BsYXliYWNrUmF0ZS5nZXQoKTsgfQogCiAgICAgLy8gSWYgYSBwYW5uZXIgbm9kZSBp
cyBzZXQsIHRoZW4gd2UgY2FuIGluY29ycG9yYXRlIGRvcHBsZXIgc2hpZnQgaW50byB0aGUgcGxh
eWJhY2sgcGl0Y2ggcmF0ZS4KLSAgICB2b2lkIHNldFBhbm5lck5vZGUoUGFubmVyTm9kZSopOwor
ICAgIHZvaWQgc2V0UGFubmVyTm9kZShQYW5uZXJOb2RlQmFzZSopOwogICAgIHZvaWQgY2xlYXJQ
YW5uZXJOb2RlKCk7CiAKICAgICAvLyBJZiB3ZSBhcmUgbm8gbG9uZ2VyIHBsYXlpbmcsIHByb3Bv
Z2F0ZSBzaWxlbmNlIGFoZWFkIHRvIGRvd25zdHJlYW0gbm9kZXMuCkBAIC05MSw3ICs5MSw3IEBA
IHB1YmxpYzoKICAgICBjb25zdCBjaGFyKiBhY3RpdmVET01PYmplY3ROYW1lKCkgY29uc3Qgb3Zl
cnJpZGUgeyByZXR1cm4gIkF1ZGlvQnVmZmVyU291cmNlTm9kZSI7IH0KIAogcHJpdmF0ZToKLSAg
ICBBdWRpb0J1ZmZlclNvdXJjZU5vZGUoQXVkaW9Db250ZXh0JiwgZmxvYXQgc2FtcGxlUmF0ZSk7
CisgICAgQXVkaW9CdWZmZXJTb3VyY2VOb2RlKEF1ZGlvQ29udGV4dEJhc2UmLCBmbG9hdCBzYW1w
bGVSYXRlKTsKIAogICAgIGRvdWJsZSB0YWlsVGltZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIDA7
IH0KICAgICBkb3VibGUgbGF0ZW5jeVRpbWUoKSBjb25zdCBmaW5hbCB7IHJldHVybiAwOyB9CkBA
IC0xNDUsNyArMTQ1LDcgQEAgcHJpdmF0ZToKIAogICAgIC8vIFdlIG9wdGlvbmFsbHkga2VlcCB0
cmFjayBvZiBhIHBhbm5lciBub2RlIHdoaWNoIGhhcyBhIGRvcHBsZXIgc2hpZnQgdGhhdCBpcyBp
bmNvcnBvcmF0ZWQgaW50bwogICAgIC8vIHRoZSBwaXRjaCByYXRlLiBXZSBtYW51YWxseSBtYW5h
Z2UgcmVmLWNvdW50aW5nIGJlY2F1c2Ugd2Ugd2FudCB0byB1c2UgUmVmVHlwZUNvbm5lY3Rpb24u
Ci0gICAgUGFubmVyTm9kZSogbV9wYW5uZXJOb2RlOworICAgIFBhbm5lck5vZGVCYXNlKiBtX3Bh
bm5lck5vZGU7CiAKICAgICAvLyBUaGlzIHN5bmNocm9uaXplcyBwcm9jZXNzKCkgd2l0aCBzZXRC
dWZmZXIoKSB3aGljaCBjYW4gY2F1c2UgZHluYW1pYyBjaGFubmVsIGNvdW50IGNoYW5nZXMuCiAg
ICAgbXV0YWJsZSBMb2NrIG1fcHJvY2Vzc011dGV4OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0NvbnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJhdWRpby9BdWRpb0NvbnRleHQuY3BwCmluZGV4IDM4MmRjN2NmMGNkMGY1ZDVkMzAy
NzZlNjNkOTJkYmUwYjUzN2VhNTkuLjI2ZTFmYzdjY2FiMTQzNGQwNWFmMWFiYWExYzQ4ZTAwMmUy
YjMxYzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9D
b250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQ29u
dGV4dC5jcHAKQEAgLTEwNyw2ICsxMDcsNyBAQCBjb25zdCB1bnNpZ25lZCBNYXhQZXJpb2RpY1dh
dmVMZW5ndGggPSA0MDk2OwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK1dURl9NQUtFX0lTT19B
TExPQ0FURURfSU1QTChBdWRpb0NvbnRleHRCYXNlKTsKIFdURl9NQUtFX0lTT19BTExPQ0FURURf
SU1QTChBdWRpb0NvbnRleHQpOwogCiAjZGVmaW5lIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoZm10
LCAuLi4pIFJFTEVBU0VfTE9HX0lGKGRvY3VtZW50KCkgJiYgZG9jdW1lbnQoKS0+cGFnZSgpICYm
IGRvY3VtZW50KCktPnBhZ2UoKS0+aXNBbHdheXNPbkxvZ2dpbmdBbGxvd2VkKCksIE1lZGlhLCAi
JXAgLSBBdWRpb0NvbnRleHQ6OiIgZm10LCB0aGlzLCAjI19fVkFfQVJHU19fKQpAQCAtMTM3LDkg
KzEzOCwxNCBAQCBFeGNlcHRpb25PcjxSZWY8QXVkaW9Db250ZXh0Pj4gQXVkaW9Db250ZXh0Ojpj
cmVhdGUoRG9jdW1lbnQmIGRvY3VtZW50KQogICAgIHJldHVybiBhdWRpb0NvbnRleHQ7CiB9CiAK
K0F1ZGlvQ29udGV4dEJhc2U6OkF1ZGlvQ29udGV4dEJhc2UoRG9jdW1lbnQmIGRvY3VtZW50KQor
ICAgIDogQWN0aXZlRE9NT2JqZWN0KGRvY3VtZW50KQoreworfQorCiAvLyBDb25zdHJ1Y3RvciBm
b3IgcmVuZGVyaW5nIHRvIHRoZSBhdWRpbyBoYXJkd2FyZS4KIEF1ZGlvQ29udGV4dDo6QXVkaW9D
b250ZXh0KERvY3VtZW50JiBkb2N1bWVudCkKLSAgICA6IEFjdGl2ZURPTU9iamVjdChkb2N1bWVu
dCkKKyAgICA6IEF1ZGlvQ29udGV4dEJhc2UoZG9jdW1lbnQpCiAjaWYgIVJFTEVBU0VfTE9HX0RJ
U0FCTEVECiAgICAgLCBtX2xvZ2dlcihkb2N1bWVudC5sb2dnZXIoKSkKICAgICAsIG1fbG9nSWRl
bnRpZmllcih1bmlxdWVMb2dJZGVudGlmaWVyKCkpCkBAIC0xNjQsNyArMTcwLDcgQEAgQXVkaW9D
b250ZXh0OjpBdWRpb0NvbnRleHQoRG9jdW1lbnQmIGRvY3VtZW50KQogCiAvLyBDb25zdHJ1Y3Rv
ciBmb3Igb2ZmbGluZSAobm9uLXJlYWx0aW1lKSByZW5kZXJpbmcuCiBBdWRpb0NvbnRleHQ6OkF1
ZGlvQ29udGV4dChEb2N1bWVudCYgZG9jdW1lbnQsIEF1ZGlvQnVmZmVyKiByZW5kZXJUYXJnZXQp
Ci0gICAgOiBBY3RpdmVET01PYmplY3QoZG9jdW1lbnQpCisgICAgOiBBdWRpb0NvbnRleHRCYXNl
KGRvY3VtZW50KQogI2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRAogICAgICwgbV9sb2dnZXIoZG9j
dW1lbnQubG9nZ2VyKCkpCiAgICAgLCBtX2xvZ0lkZW50aWZpZXIodW5pcXVlTG9nSWRlbnRpZmll
cigpKQpAQCAtMzY2LDcgKzM3Miw3IEBAIGNvbnN0IGNoYXIqIEF1ZGlvQ29udGV4dDo6YWN0aXZl
RE9NT2JqZWN0TmFtZSgpIGNvbnN0CiAgICAgcmV0dXJuICJBdWRpb0NvbnRleHQiOwogfQogCi1E
b2N1bWVudCogQXVkaW9Db250ZXh0Ojpkb2N1bWVudCgpIGNvbnN0CitEb2N1bWVudCogQXVkaW9D
b250ZXh0QmFzZTo6ZG9jdW1lbnQoKSBjb25zdAogewogICAgIHJldHVybiBkb3duY2FzdDxEb2N1
bWVudD4obV9zY3JpcHRFeGVjdXRpb25Db250ZXh0KTsKIH0KQEAgLTEwMDIsOSArMTAwOCwxNCBA
QCB2b2lkIEF1ZGlvQ29udGV4dDo6cmVtb3ZlTWFya2VkU3VtbWluZ0p1bmN0aW9uKEF1ZGlvU3Vt
bWluZ0p1bmN0aW9uKiBzdW1taW5nSnVuYwogICAgIG1fZGlydHlTdW1taW5nSnVuY3Rpb25zLnJl
bW92ZShzdW1taW5nSnVuY3Rpb24pOwogfQogCitFdmVudFRhcmdldEludGVyZmFjZSBBdWRpb0Nv
bnRleHQ6OmV2ZW50VGFyZ2V0SW50ZXJmYWNlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gQXVkaW9D
b250ZXh0RXZlbnRUYXJnZXRJbnRlcmZhY2VUeXBlOworfQorCiB2b2lkIEF1ZGlvQ29udGV4dDo6
bWFya0F1ZGlvTm9kZU91dHB1dERpcnR5KEF1ZGlvTm9kZU91dHB1dCogb3V0cHV0KQogewotICAg
IEFTU0VSVChpc0dyYXBoT3duZXIoKSk7ICAgIAorICAgIEFTU0VSVChpc0dyYXBoT3duZXIoKSk7
CiAgICAgbV9kaXJ0eUF1ZGlvTm9kZU91dHB1dHMuYWRkKG91dHB1dCk7CiB9CiAKQEAgLTEwNjgs
NyArMTA3OSw3IEBAIHZvaWQgQXVkaW9Db250ZXh0Ojpwcm9jZXNzQXV0b21hdGljUHVsbE5vZGVz
KHNpemVfdCBmcmFtZXNUb1Byb2Nlc3MpCiAgICAgICAgIG5vZGUtPnByb2Nlc3NJZk5lY2Vzc2Fy
eShmcmFtZXNUb1Byb2Nlc3MpOwogfQogCi1TY3JpcHRFeGVjdXRpb25Db250ZXh0KiBBdWRpb0Nv
bnRleHQ6OnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSBjb25zdAorU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCogQXVkaW9Db250ZXh0QmFzZTo6c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpIGNvbnN0CiB7
CiAgICAgcmV0dXJuIEFjdGl2ZURPTU9iamVjdDo6c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOwog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0NvbnRl
eHQuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0LmgKaW5k
ZXggOGUwOTQzOTRjZmZjYzVkYWE4YjBlNGRjNTg5MTIxOTQ0MmU2ZTEyZS4uNTA1OTIxZmY1ZTM1
ZDI0OTUzMzgwMjAzYTQ3OTVmNjRjYWMyZDVkMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJhdWRpby9BdWRpb0NvbnRleHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmF1ZGlvL0F1ZGlvQ29udGV4dC5oCkBAIC0yOCw2ICsyOCw3IEBACiAjaW5jbHVkZSAi
QWN0aXZlRE9NT2JqZWN0LmgiCiAjaW5jbHVkZSAiQXN5bmNBdWRpb0RlY29kZXIuaCIKICNpbmNs
dWRlICJBdWRpb0J1cy5oIgorI2luY2x1ZGUgIkF1ZGlvQ29udGV4dFN0YXRlLmgiCiAjaW5jbHVk
ZSAiQXVkaW9EZXN0aW5hdGlvbk5vZGUuaCIKICNpbmNsdWRlICJFdmVudFRhcmdldC5oIgogI2lu
Y2x1ZGUgIk1lZGlhQ2FuU3RhcnRMaXN0ZW5lci5oIgpAQCAtNzksMjAgKzgwLDEyNyBAQCBjbGFz
cyBXYXZlU2hhcGVyTm9kZTsKIAogdGVtcGxhdGU8dHlwZW5hbWUgSURMVHlwZT4gY2xhc3MgRE9N
UHJvbWlzZURlZmVycmVkOwogCi0vLyBBdWRpb0NvbnRleHQgaXMgdGhlIGNvcm5lcnN0b25lIG9m
IHRoZSB3ZWIgYXVkaW8gQVBJIGFuZCBhbGwgQXVkaW9Ob2RlcyBhcmUgY3JlYXRlZCBmcm9tIGl0
LgotLy8gRm9yIHRocmVhZCBzYWZldHkgYmV0d2VlbiB0aGUgYXVkaW8gdGhyZWFkIGFuZCB0aGUg
bWFpbiB0aHJlYWQsIGl0IGhhcyBhIHJlbmRlcmluZyBncmFwaCBsb2NraW5nIG1lY2hhbmlzbS4g
Ci0KLWNsYXNzIEF1ZGlvQ29udGV4dAorY2xhc3MgQXVkaW9Db250ZXh0QmFzZQogICAgIDogcHVi
bGljIEFjdGl2ZURPTU9iamVjdAogICAgICwgcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPEF1
ZGlvQ29udGV4dD4KICAgICAsIHB1YmxpYyBFdmVudFRhcmdldFdpdGhJbmxpbmVEYXRhCiAgICAg
LCBwdWJsaWMgTWVkaWFDYW5TdGFydExpc3RlbmVyCiAgICAgLCBwdWJsaWMgTWVkaWFQcm9kdWNl
cgotICAgICwgcHJpdmF0ZSBQbGF0Zm9ybU1lZGlhU2Vzc2lvbkNsaWVudAotICAgICwgcHJpdmF0
ZSBWaXNpYmlsaXR5Q2hhbmdlQ2xpZW50CiAjaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECi0gICAg
LCBwcml2YXRlIExvZ2dlckhlbHBlcgorICAgICwgcHVibGljIExvZ2dlckhlbHBlcgorI2VuZGlm
Cit7CisgICAgV1RGX01BS0VfSVNPX0FMTE9DQVRFRChBdWRpb0NvbnRleHRCYXNlKTsKK3B1Ymxp
YzoKKyAgICB2aXJ0dWFsIH5BdWRpb0NvbnRleHRCYXNlKCkgPSBkZWZhdWx0OworCisgICAgLy8g
UmVjb25jaWxlIHJlZi9kZXJlZiB3aGljaCBhcmUgZGVmaW5lZCBib3RoIGluIFRocmVhZFNhZmVS
ZWZDb3VudGVkIGFuZCBFdmVudFRhcmdldC4KKyAgICB1c2luZyBUaHJlYWRTYWZlUmVmQ291bnRl
ZDo6cmVmOworICAgIHVzaW5nIFRocmVhZFNhZmVSZWZDb3VudGVkOjpkZXJlZjsKKworICAgIERv
Y3VtZW50KiBkb2N1bWVudCgpIGNvbnN0OworCisgICAgdmlydHVhbCBib29sIGlzSW5pdGlhbGl6
ZWQoKSBjb25zdCA9IDA7CisKKyAgICB2aXJ0dWFsIHNpemVfdCBjdXJyZW50U2FtcGxlRnJhbWUo
KSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBmbG9hdCBzYW1wbGVSYXRlKCkgY29uc3QgPSAwOwor
ICAgIHZpcnR1YWwgZG91YmxlIGN1cnJlbnRUaW1lKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwg
Ym9vbCBpc0dyYXBoT3duZXIoKSBjb25zdCA9IDA7CisKKyAgICB2aXJ0dWFsIHZvaWQgc2V0QXVk
aW9UaHJlYWQoVGhyZWFkJikgPSAwOworICAgIHZpcnR1YWwgYm9vbCBpc0F1ZGlvVGhyZWFkKCkg
Y29uc3QgPSAwOworICAgIHZpcnR1YWwgYm9vbCBpc0F1ZGlvVGhyZWFkRmluaXNoZWQoKSA9IDA7
CisKKyAgICB2aXJ0dWFsIHZvaWQgaXNQbGF5aW5nQXVkaW9EaWRDaGFuZ2UoKSA9IDA7CisgICAg
dmlydHVhbCB2b2lkIG5vZGVXaWxsQmVnaW5QbGF5YmFjaygpID0gMDsKKworICAgIHZpcnR1YWwg
dm9pZCBwb3N0VGFzayhXVEY6OkZ1bmN0aW9uPHZvaWQoKT4mJikgPSAwOworICAgIHZpcnR1YWwg
Ym9vbCBpc1N0b3BwZWQoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBjb25zdCBTZWN1cml0eU9y
aWdpbiogb3JpZ2luKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgdm9pZCBhZGRDb25zb2xlTWVz
c2FnZShNZXNzYWdlU291cmNlLCBNZXNzYWdlTGV2ZWwsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSkg
PSAwOworCisgICAgdmlydHVhbCB2b2lkIG1hcmtGb3JEZWxldGlvbihBdWRpb05vZGUmKSA9IDA7
CisgICAgdmlydHVhbCB2b2lkIGRlbGV0ZU1hcmtlZE5vZGVzKCkgPSAwOworCisgICAgdmlydHVh
bCB2b2lkIGhhbmRsZVByZVJlbmRlclRhc2tzKCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBoYW5k
bGVQb3N0UmVuZGVyVGFza3MoKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHByb2Nlc3NBdXRvbWF0
aWNQdWxsTm9kZXMoc2l6ZV90IGZyYW1lc1RvUHJvY2VzcykgPSAwOworICAgIHZpcnR1YWwgdm9p
ZCBhZGREZWZlcnJlZEZpbmlzaERlcmVmKEF1ZGlvTm9kZSopID0gMDsKKworICAgIHZpcnR1YWwg
dm9pZCByZW1vdmVNYXJrZWRTdW1taW5nSnVuY3Rpb24oQXVkaW9TdW1taW5nSnVuY3Rpb24qKSA9
IDA7CisgICAgdmlydHVhbCB2b2lkIG1hcmtTdW1taW5nSnVuY3Rpb25EaXJ0eShBdWRpb1N1bW1p
bmdKdW5jdGlvbiopID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgbWFya0F1ZGlvTm9kZU91dHB1dERp
cnR5KEF1ZGlvTm9kZU91dHB1dCopID0gMDsKKworICAgIGVudW0gQmVoYXZpb3JSZXN0cmljdGlv
bkZsYWdzIHsKKyAgICAgICAgTm9SZXN0cmljdGlvbnMgPSAwLAorICAgICAgICBSZXF1aXJlVXNl
ckdlc3R1cmVGb3JBdWRpb1N0YXJ0UmVzdHJpY3Rpb24gPSAxIDw8IDAsCisgICAgICAgIFJlcXVp
cmVQYWdlQ29uc2VudEZvckF1ZGlvU3RhcnRSZXN0cmljdGlvbiA9IDEgPDwgMSwKKyAgICB9Owor
ICAgIHR5cGVkZWYgdW5zaWduZWQgQmVoYXZpb3JSZXN0cmljdGlvbnM7CisgICAgdmlydHVhbCBC
ZWhhdmlvclJlc3RyaWN0aW9ucyBiZWhhdmlvclJlc3RyaWN0aW9ucygpIGNvbnN0ID0gMDsKKyAg
ICB2aXJ0dWFsIHZvaWQgYWRkQmVoYXZpb3JSZXN0cmljdGlvbihCZWhhdmlvclJlc3RyaWN0aW9u
cykgPSAwOworICAgIHZpcnR1YWwgdm9pZCByZW1vdmVCZWhhdmlvclJlc3RyaWN0aW9uKEJlaGF2
aW9yUmVzdHJpY3Rpb25zKSA9IDA7CisKKyNpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKKyAgICB2
aXJ0dWFsIGNvbnN0IHZvaWQqIG5leHRBdWRpb05vZGVMb2dJZGVudGlmaWVyKCkgPSAwOworICAg
IHZpcnR1YWwgY29uc3Qgdm9pZCogbmV4dEF1ZGlvUGFyYW1ldGVyTG9nSWRlbnRpZmllcigpID0g
MDsKICNlbmRpZgorCisgICAgdmlydHVhbCB2b2lkIGFkZEF1dG9tYXRpY1B1bGxOb2RlKEF1ZGlv
Tm9kZSYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlQXV0b21hdGljUHVsbE5vZGUoQXVk
aW9Ob2RlJikgPSAwOworCisgICAgdmlydHVhbCB2b2lkIG5vdGlmeU5vZGVGaW5pc2hlZFByb2Nl
c3NpbmcoQXVkaW9Ob2RlKikgPSAwOworCisgICAgdmlydHVhbCB2b2lkIGZpbmlzaGVkUmVuZGVy
aW5nKGJvb2wgZGlkUmVuZGVyaW5nKSA9IDA7CisKKyAgICB2aXJ0dWFsIHZvaWQgaW5jcmVtZW50
Q29ubmVjdGlvbkNvdW50KCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBpbmNyZW1lbnRBY3RpdmVT
b3VyY2VDb3VudCgpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZGVjcmVtZW50QWN0aXZlU291cmNl
Q291bnQoKSA9IDA7CisKKyAgICB2aXJ0dWFsIGJvb2wgaXNPZmZsaW5lQ29udGV4dCgpIGNvbnN0
ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgaXNBdWRpb0NvbnRleHQoKSBjb25zdCA9IDA7CisgICAg
dmlydHVhbCBib29sIGlzV2ViS2l0QXVkaW9Db250ZXh0KCkgY29uc3QgPSAwOworCisgICAgLy8g
bXVzdFJlbGVhc2VMb2NrIGlzIHNldCB0byB0cnVlIGlmIHdlIGFjcXVpcmVkIHRoZSBsb2NrIGlu
IHRoaXMgbWV0aG9kIGNhbGwgYW5kIGNhbGxlciBtdXN0IHVubG9jaygpLCBmYWxzZSBpZiBpdCB3
YXMgcHJldmlvdXNseSBhY3F1aXJlZC4KKyAgICB2aXJ0dWFsIHZvaWQgbG9jayhib29sJiBtdXN0
UmVsZWFzZUxvY2spID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgdHJ5TG9jayhib29sJiBtdXN0UmVs
ZWFzZUxvY2spID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgdW5sb2NrKCkgPSAwOworCisgICAgY2xh
c3MgQXV0b0xvY2tlciB7CisgICAgcHVibGljOgorICAgICAgICBleHBsaWNpdCBBdXRvTG9ja2Vy
KEF1ZGlvQ29udGV4dEJhc2UmIGNvbnRleHQpCisgICAgICAgICAgICA6IG1fY29udGV4dChjb250
ZXh0KQorICAgICAgICB7CisgICAgICAgICAgICBtX2NvbnRleHQubG9jayhtX211c3RSZWxlYXNl
TG9jayk7CisgICAgICAgIH0KKworICAgICAgICB+QXV0b0xvY2tlcigpCisgICAgICAgIHsKKyAg
ICAgICAgICAgIGlmIChtX211c3RSZWxlYXNlTG9jaykKKyAgICAgICAgICAgICAgICBtX2NvbnRl
eHQudW5sb2NrKCk7CisgICAgICAgIH0KKworICAgIHByaXZhdGU6CisgICAgICAgIEF1ZGlvQ29u
dGV4dEJhc2UmIG1fY29udGV4dDsKKyAgICAgICAgYm9vbCBtX211c3RSZWxlYXNlTG9jazsKKyAg
ICB9OworCisgICAgLy8gRXZlbnRUYXJnZXQKKyAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBz
Y3JpcHRFeGVjdXRpb25Db250ZXh0KCkgY29uc3QgZmluYWw7CisgICAgdm9pZCByZWZFdmVudFRh
cmdldCgpIG92ZXJyaWRlIHsgcmVmKCk7IH0KKyAgICB2b2lkIGRlcmVmRXZlbnRUYXJnZXQoKSBv
dmVycmlkZSB7IGRlcmVmKCk7IH0KKworcHJvdGVjdGVkOgorICAgIGV4cGxpY2l0IEF1ZGlvQ29u
dGV4dEJhc2UoRG9jdW1lbnQmKTsKK307CisKKy8vIEF1ZGlvQ29udGV4dCBpcyB0aGUgY29ybmVy
c3RvbmUgb2YgdGhlIHdlYiBhdWRpbyBBUEkgYW5kIGFsbCBBdWRpb05vZGVzIGFyZSBjcmVhdGVk
IGZyb20gaXQuCisvLyBGb3IgdGhyZWFkIHNhZmV0eSBiZXR3ZWVuIHRoZSBhdWRpbyB0aHJlYWQg
YW5kIHRoZSBtYWluIHRocmVhZCwgaXQgaGFzIGEgcmVuZGVyaW5nIGdyYXBoIGxvY2tpbmcgbWVj
aGFuaXNtLiAKKworY2xhc3MgQXVkaW9Db250ZXh0CisgICAgOiBwdWJsaWMgQXVkaW9Db250ZXh0
QmFzZQorICAgICwgcHJpdmF0ZSBQbGF0Zm9ybU1lZGlhU2Vzc2lvbkNsaWVudAorICAgICwgcHJp
dmF0ZSBWaXNpYmlsaXR5Q2hhbmdlQ2xpZW50CiB7CiAgICAgV1RGX01BS0VfSVNPX0FMTE9DQVRF
RChBdWRpb0NvbnRleHQpOwogcHVibGljOgpAQCAtMTAxLDIyICsyMDksMjAgQEAgcHVibGljOgog
CiAgICAgdmlydHVhbCB+QXVkaW9Db250ZXh0KCk7CiAKLSAgICBib29sIGlzSW5pdGlhbGl6ZWQo
KSBjb25zdDsKKyAgICBib29sIGlzSW5pdGlhbGl6ZWQoKSBjb25zdCBmaW5hbDsKICAgICAKLSAg
ICBib29sIGlzT2ZmbGluZUNvbnRleHQoKSBjb25zdCB7IHJldHVybiBtX2lzT2ZmbGluZUNvbnRl
eHQ7IH0KLQotICAgIERvY3VtZW50KiBkb2N1bWVudCgpIGNvbnN0OyAvLyBBU1NFUlRzIGlmIGRv
Y3VtZW50IG5vIGxvbmdlciBleGlzdHMuCisgICAgYm9vbCBpc09mZmxpbmVDb250ZXh0KCkgY29u
c3QgZmluYWwgeyByZXR1cm4gbV9pc09mZmxpbmVDb250ZXh0OyB9CiAKICAgICBEb2N1bWVudElk
ZW50aWZpZXIgaG9zdGluZ0RvY3VtZW50SWRlbnRpZmllcigpIGNvbnN0IGZpbmFsOwogCiAgICAg
QXVkaW9EZXN0aW5hdGlvbk5vZGUqIGRlc3RpbmF0aW9uKCkgeyByZXR1cm4gbV9kZXN0aW5hdGlv
bk5vZGUuZ2V0KCk7IH0KLSAgICBzaXplX3QgY3VycmVudFNhbXBsZUZyYW1lKCkgY29uc3QgeyBy
ZXR1cm4gbV9kZXN0aW5hdGlvbk5vZGUgPyBtX2Rlc3RpbmF0aW9uTm9kZS0+Y3VycmVudFNhbXBs
ZUZyYW1lKCkgOiAwOyB9Ci0gICAgZG91YmxlIGN1cnJlbnRUaW1lKCkgY29uc3QgeyByZXR1cm4g
bV9kZXN0aW5hdGlvbk5vZGUgPyBtX2Rlc3RpbmF0aW9uTm9kZS0+Y3VycmVudFRpbWUoKSA6IDAu
OyB9Ci0gICAgZmxvYXQgc2FtcGxlUmF0ZSgpIGNvbnN0IHsgcmV0dXJuIG1fZGVzdGluYXRpb25O
b2RlID8gbV9kZXN0aW5hdGlvbk5vZGUtPnNhbXBsZVJhdGUoKSA6IDAuZjsgfQorICAgIHNpemVf
dCBjdXJyZW50U2FtcGxlRnJhbWUoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2Rlc3RpbmF0aW9u
Tm9kZSA/IG1fZGVzdGluYXRpb25Ob2RlLT5jdXJyZW50U2FtcGxlRnJhbWUoKSA6IDA7IH0KKyAg
ICBkb3VibGUgY3VycmVudFRpbWUoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2Rlc3RpbmF0aW9u
Tm9kZSA/IG1fZGVzdGluYXRpb25Ob2RlLT5jdXJyZW50VGltZSgpIDogMC47IH0KKyAgICBmbG9h
dCBzYW1wbGVSYXRlKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9kZXN0aW5hdGlvbk5vZGUgPyBt
X2Rlc3RpbmF0aW9uTm9kZS0+c2FtcGxlUmF0ZSgpIDogMC5mOyB9CiAgICAgdW5zaWduZWQgbG9u
ZyBhY3RpdmVTb3VyY2VDb3VudCgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PHVuc2lnbmVk
IGxvbmc+KG1fYWN0aXZlU291cmNlQ291bnQpOyB9CiAKLSAgICB2b2lkIGluY3JlbWVudEFjdGl2
ZVNvdXJjZUNvdW50KCk7Ci0gICAgdm9pZCBkZWNyZW1lbnRBY3RpdmVTb3VyY2VDb3VudCgpOwor
ICAgIHZvaWQgaW5jcmVtZW50QWN0aXZlU291cmNlQ291bnQoKSBmaW5hbDsKKyAgICB2b2lkIGRl
Y3JlbWVudEFjdGl2ZVNvdXJjZUNvdW50KCkgZmluYWw7CiAgICAgCiAgICAgRXhjZXB0aW9uT3I8
UmVmPEF1ZGlvQnVmZmVyPj4gY3JlYXRlQnVmZmVyKHVuc2lnbmVkIG51bWJlck9mQ2hhbm5lbHMs
IHNpemVfdCBudW1iZXJPZkZyYW1lcywgZmxvYXQgc2FtcGxlUmF0ZSk7CiAgICAgRXhjZXB0aW9u
T3I8UmVmPEF1ZGlvQnVmZmVyPj4gY3JlYXRlQnVmZmVyKEFycmF5QnVmZmVyJiwgYm9vbCBtaXhU
b01vbm8pOwpAQCAtMTMwLDcgKzIzNiw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHJlc3VtZVJlbmRl
cmluZyhET01Qcm9taXNlRGVmZXJyZWQ8dm9pZD4mJik7CiAgICAgdm9pZCBjbG9zZShET01Qcm9t
aXNlRGVmZXJyZWQ8dm9pZD4mJik7CiAKLSAgICBlbnVtIGNsYXNzIFN0YXRlIHsgU3VzcGVuZGVk
LCBSdW5uaW5nLCBJbnRlcnJ1cHRlZCwgQ2xvc2VkIH07CisgICAgdXNpbmcgU3RhdGUgPSBBdWRp
b0NvbnRleHRTdGF0ZTsKICAgICBTdGF0ZSBzdGF0ZSgpIGNvbnN0OwogICAgIGJvb2wgaXNDbG9z
ZWQoKSBjb25zdCB7IHJldHVybiBtX3N0YXRlID09IFN0YXRlOjpDbG9zZWQ7IH0KIApAQCAtMTYw
LDMxICsyNjYsMzEgQEAgcHVibGljOgogICAgIEV4Y2VwdGlvbk9yPFJlZjxQZXJpb2RpY1dhdmU+
PiBjcmVhdGVQZXJpb2RpY1dhdmUoRmxvYXQzMkFycmF5JiByZWFsLCBGbG9hdDMyQXJyYXkmIGlt
YWdpbmFyeSk7CiAKICAgICAvLyBXaGVuIGEgc291cmNlIG5vZGUgaGFzIG5vIG1vcmUgcHJvY2Vz
c2luZyB0byBkbyAoaGFzIGZpbmlzaGVkIHBsYXlpbmcpLCB0aGVuIGl0IHRlbGxzIHRoZSBjb250
ZXh0IHRvIGRlcmVmZXJlbmNlIGl0LgotICAgIHZvaWQgbm90aWZ5Tm9kZUZpbmlzaGVkUHJvY2Vz
c2luZyhBdWRpb05vZGUqKTsKKyAgICB2b2lkIG5vdGlmeU5vZGVGaW5pc2hlZFByb2Nlc3Npbmco
QXVkaW9Ob2RlKikgZmluYWw7CiAKICAgICAvLyBDYWxsZWQgYXQgdGhlIHN0YXJ0IG9mIGVhY2gg
cmVuZGVyIHF1YW50dW0uCi0gICAgdm9pZCBoYW5kbGVQcmVSZW5kZXJUYXNrcygpOworICAgIHZv
aWQgaGFuZGxlUHJlUmVuZGVyVGFza3MoKSBmaW5hbDsKIAogICAgIC8vIENhbGxlZCBhdCB0aGUg
ZW5kIG9mIGVhY2ggcmVuZGVyIHF1YW50dW0uCi0gICAgdm9pZCBoYW5kbGVQb3N0UmVuZGVyVGFz
a3MoKTsKKyAgICB2b2lkIGhhbmRsZVBvc3RSZW5kZXJUYXNrcygpIGZpbmFsOwogCiAgICAgLy8g
Q2FsbGVkIHBlcmlvZGljYWxseSBhdCB0aGUgZW5kIG9mIGVhY2ggcmVuZGVyIHF1YW50dW0gdG8g
ZGVyZWZlcmVuY2UgZmluaXNoZWQgc291cmNlIG5vZGVzLgogICAgIHZvaWQgZGVyZWZGaW5pc2hl
ZFNvdXJjZU5vZGVzKCk7CiAKICAgICAvLyBXZSBzY2hlZHVsZSBkZWxldGlvbiBvZiBhbGwgbWFy
a2VkIG5vZGVzIGF0IHRoZSBlbmQgb2YgZWFjaCByZWFsdGltZSByZW5kZXIgcXVhbnR1bS4KLSAg
ICB2b2lkIG1hcmtGb3JEZWxldGlvbihBdWRpb05vZGUmKTsKLSAgICB2b2lkIGRlbGV0ZU1hcmtl
ZE5vZGVzKCk7CisgICAgdm9pZCBtYXJrRm9yRGVsZXRpb24oQXVkaW9Ob2RlJikgZmluYWw7Cisg
ICAgdm9pZCBkZWxldGVNYXJrZWROb2RlcygpIGZpbmFsOwogCiAgICAgLy8gQXVkaW9Db250ZXh0
IGNhbiBwdWxsIG5vZGUocykgYXQgdGhlIGVuZCBvZiBlYWNoIHJlbmRlciBxdWFudHVtIGV2ZW4g
d2hlbiB0aGV5IGFyZSBub3QgY29ubmVjdGVkIHRvIGFueSBkb3duc3RyZWFtIG5vZGVzLgogICAg
IC8vIFRoZXNlIHR3byBtZXRob2RzIGFyZSBjYWxsZWQgYnkgdGhlIG5vZGVzIHdobyB3YW50IHRv
IGFkZC9yZW1vdmUgdGhlbXNlbHZlcyBpbnRvL2Zyb20gdGhlIGF1dG9tYXRpYyBwdWxsIGxpc3Rz
LgotICAgIHZvaWQgYWRkQXV0b21hdGljUHVsbE5vZGUoQXVkaW9Ob2RlJik7Ci0gICAgdm9pZCBy
ZW1vdmVBdXRvbWF0aWNQdWxsTm9kZShBdWRpb05vZGUmKTsKKyAgICB2b2lkIGFkZEF1dG9tYXRp
Y1B1bGxOb2RlKEF1ZGlvTm9kZSYpIGZpbmFsOworICAgIHZvaWQgcmVtb3ZlQXV0b21hdGljUHVs
bE5vZGUoQXVkaW9Ob2RlJikgZmluYWw7CiAKICAgICAvLyBDYWxsZWQgcmlnaHQgYmVmb3JlIGhh
bmRsZVBvc3RSZW5kZXJUYXNrcygpIHRvIGhhbmRsZSBub2RlcyB3aGljaCBuZWVkIHRvIGJlIHB1
bGxlZCBldmVuIHdoZW4gdGhleSBhcmUgbm90IGNvbm5lY3RlZCB0byBhbnl0aGluZy4KLSAgICB2
b2lkIHByb2Nlc3NBdXRvbWF0aWNQdWxsTm9kZXMoc2l6ZV90IGZyYW1lc1RvUHJvY2Vzcyk7Cisg
ICAgdm9pZCBwcm9jZXNzQXV0b21hdGljUHVsbE5vZGVzKHNpemVfdCBmcmFtZXNUb1Byb2Nlc3Mp
IGZpbmFsOwogCiAgICAgLy8gS2VlcHMgdHJhY2sgb2YgdGhlIG51bWJlciBvZiBjb25uZWN0aW9u
cyBtYWRlLgotICAgIHZvaWQgaW5jcmVtZW50Q29ubmVjdGlvbkNvdW50KCkKKyAgICB2b2lkIGlu
Y3JlbWVudENvbm5lY3Rpb25Db3VudCgpIGZpbmFsCiAgICAgewogICAgICAgICBBU1NFUlQoaXNN
YWluVGhyZWFkKCkpOwogICAgICAgICBtX2Nvbm5lY3Rpb25Db3VudCsrOwpAQCAtMTk2LDEwMyAr
MzAyLDcwIEBAIHB1YmxpYzoKICAgICAvLyBUaHJlYWQgU2FmZXR5IGFuZCBHcmFwaCBMb2NraW5n
OgogICAgIC8vCiAgICAgCi0gICAgdm9pZCBzZXRBdWRpb1RocmVhZChUaHJlYWQmIHRocmVhZCkg
eyBtX2F1ZGlvVGhyZWFkID0gJnRocmVhZDsgfSAvLyBGSVhNRTogY2hlY2sgZWl0aGVyIG5vdCBp
bml0aWFsaXplZCBvciB0aGUgc2FtZQorICAgIHZvaWQgc2V0QXVkaW9UaHJlYWQoVGhyZWFkJiB0
aHJlYWQpIGZpbmFsIHsgbV9hdWRpb1RocmVhZCA9ICZ0aHJlYWQ7IH0gLy8gRklYTUU6IGNoZWNr
IGVpdGhlciBub3QgaW5pdGlhbGl6ZWQgb3IgdGhlIHNhbWUKICAgICBUaHJlYWQqIGF1ZGlvVGhy
ZWFkKCkgY29uc3QgeyByZXR1cm4gbV9hdWRpb1RocmVhZDsgfQotICAgIGJvb2wgaXNBdWRpb1Ro
cmVhZCgpIGNvbnN0OworICAgIGJvb2wgaXNBdWRpb1RocmVhZCgpIGNvbnN0IGZpbmFsOwogCiAg
ICAgLy8gUmV0dXJucyB0cnVlIG9ubHkgYWZ0ZXIgdGhlIGF1ZGlvIHRocmVhZCBoYXMgYmVlbiBz
dGFydGVkIGFuZCB0aGVuIHNodXRkb3duLgotICAgIGJvb2wgaXNBdWRpb1RocmVhZEZpbmlzaGVk
KCkgeyByZXR1cm4gbV9pc0F1ZGlvVGhyZWFkRmluaXNoZWQ7IH0KKyAgICBib29sIGlzQXVkaW9U
aHJlYWRGaW5pc2hlZCgpIGZpbmFsIHsgcmV0dXJuIG1faXNBdWRpb1RocmVhZEZpbmlzaGVkOyB9
CiAgICAgCiAgICAgLy8gbXVzdFJlbGVhc2VMb2NrIGlzIHNldCB0byB0cnVlIGlmIHdlIGFjcXVp
cmVkIHRoZSBsb2NrIGluIHRoaXMgbWV0aG9kIGNhbGwgYW5kIGNhbGxlciBtdXN0IHVubG9jaygp
LCBmYWxzZSBpZiBpdCB3YXMgcHJldmlvdXNseSBhY3F1aXJlZC4KLSAgICB2b2lkIGxvY2soYm9v
bCYgbXVzdFJlbGVhc2VMb2NrKTsKKyAgICB2b2lkIGxvY2soYm9vbCYgbXVzdFJlbGVhc2VMb2Nr
KSBmaW5hbDsKIAogICAgIC8vIFJldHVybnMgdHJ1ZSBpZiB3ZSBvd24gdGhlIGxvY2suCiAgICAg
Ly8gbXVzdFJlbGVhc2VMb2NrIGlzIHNldCB0byB0cnVlIGlmIHdlIGFjcXVpcmVkIHRoZSBsb2Nr
IGluIHRoaXMgbWV0aG9kIGNhbGwgYW5kIGNhbGxlciBtdXN0IHVubG9jaygpLCBmYWxzZSBpZiBp
dCB3YXMgcHJldmlvdXNseSBhY3F1aXJlZC4KLSAgICBib29sIHRyeUxvY2soYm9vbCYgbXVzdFJl
bGVhc2VMb2NrKTsKKyAgICBib29sIHRyeUxvY2soYm9vbCYgbXVzdFJlbGVhc2VMb2NrKSBmaW5h
bDsKIAotICAgIHZvaWQgdW5sb2NrKCk7CisgICAgdm9pZCB1bmxvY2soKSBmaW5hbDsKIAogICAg
IC8vIFJldHVybnMgdHJ1ZSBpZiB0aGlzIHRocmVhZCBvd25zIHRoZSBjb250ZXh0J3MgbG9jay4K
LSAgICBib29sIGlzR3JhcGhPd25lcigpIGNvbnN0OworICAgIGJvb2wgaXNHcmFwaE93bmVyKCkg
Y29uc3QgZmluYWw7CiAKICAgICAvLyBSZXR1cm5zIHRoZSBtYXhpbXVtIG51bWJlciBvZiBjaGFu
bmVscyB3ZSBjYW4gc3VwcG9ydC4KICAgICBzdGF0aWMgdW5zaWduZWQgbWF4TnVtYmVyT2ZDaGFu
bmVscygpIHsgcmV0dXJuIE1heE51bWJlck9mQ2hhbm5lbHM7IH0KLQotICAgIGNsYXNzIEF1dG9M
b2NrZXIgewotICAgIHB1YmxpYzoKLSAgICAgICAgZXhwbGljaXQgQXV0b0xvY2tlcihBdWRpb0Nv
bnRleHQmIGNvbnRleHQpCi0gICAgICAgICAgICA6IG1fY29udGV4dChjb250ZXh0KQotICAgICAg
ICB7Ci0gICAgICAgICAgICBtX2NvbnRleHQubG9jayhtX211c3RSZWxlYXNlTG9jayk7Ci0gICAg
ICAgIH0KLSAgICAgICAgCi0gICAgICAgIH5BdXRvTG9ja2VyKCkKLSAgICAgICAgewotICAgICAg
ICAgICAgaWYgKG1fbXVzdFJlbGVhc2VMb2NrKQotICAgICAgICAgICAgICAgIG1fY29udGV4dC51
bmxvY2soKTsKLSAgICAgICAgfQotCi0gICAgcHJpdmF0ZToKLSAgICAgICAgQXVkaW9Db250ZXh0
JiBtX2NvbnRleHQ7Ci0gICAgICAgIGJvb2wgbV9tdXN0UmVsZWFzZUxvY2s7Ci0gICAgfTsKICAg
ICAKICAgICAvLyBJbiBBdWRpb05vZGU6OmRlcmVmKCkgYSB0cnlMb2NrKCkgaXMgdXNlZCBmb3Ig
Y2FsbGluZyBmaW5pc2hEZXJlZigpLCBidXQgaWYgaXQgZmFpbHMga2VlcCB0cmFjayBoZXJlLgot
ICAgIHZvaWQgYWRkRGVmZXJyZWRGaW5pc2hEZXJlZihBdWRpb05vZGUqKTsKKyAgICB2b2lkIGFk
ZERlZmVycmVkRmluaXNoRGVyZWYoQXVkaW9Ob2RlKikgZmluYWw7CiAKICAgICAvLyBJbiB0aGUg
YXVkaW8gdGhyZWFkIGF0IHRoZSBzdGFydCBvZiBlYWNoIHJlbmRlciBjeWNsZSwgd2UnbGwgY2Fs
bCBoYW5kbGVEZWZlcnJlZEZpbmlzaERlcmVmcygpLgogICAgIHZvaWQgaGFuZGxlRGVmZXJyZWRG
aW5pc2hEZXJlZnMoKTsKIAogICAgIC8vIE9ubHkgYWNjZXNzZWQgd2hlbiB0aGUgZ3JhcGggbG9j
ayBpcyBoZWxkLgotICAgIHZvaWQgbWFya1N1bW1pbmdKdW5jdGlvbkRpcnR5KEF1ZGlvU3VtbWlu
Z0p1bmN0aW9uKik7Ci0gICAgdm9pZCBtYXJrQXVkaW9Ob2RlT3V0cHV0RGlydHkoQXVkaW9Ob2Rl
T3V0cHV0Kik7CisgICAgdm9pZCBtYXJrU3VtbWluZ0p1bmN0aW9uRGlydHkoQXVkaW9TdW1taW5n
SnVuY3Rpb24qKSBmaW5hbDsKKyAgICB2b2lkIG1hcmtBdWRpb05vZGVPdXRwdXREaXJ0eShBdWRp
b05vZGVPdXRwdXQqKSBmaW5hbDsKIAogICAgIC8vIE11c3QgYmUgY2FsbGVkIG9uIG1haW4gdGhy
ZWFkLgotICAgIHZvaWQgcmVtb3ZlTWFya2VkU3VtbWluZ0p1bmN0aW9uKEF1ZGlvU3VtbWluZ0p1
bmN0aW9uKik7CisgICAgdm9pZCByZW1vdmVNYXJrZWRTdW1taW5nSnVuY3Rpb24oQXVkaW9TdW1t
aW5nSnVuY3Rpb24qKSBmaW5hbDsKIAogICAgIC8vIEV2ZW50VGFyZ2V0Ci0gICAgRXZlbnRUYXJn
ZXRJbnRlcmZhY2UgZXZlbnRUYXJnZXRJbnRlcmZhY2UoKSBjb25zdCBmaW5hbCB7IHJldHVybiBB
dWRpb0NvbnRleHRFdmVudFRhcmdldEludGVyZmFjZVR5cGU7IH0KLQotICAgIC8vIFJlY29uY2ls
ZSByZWYvZGVyZWYgd2hpY2ggYXJlIGRlZmluZWQgYm90aCBpbiBUaHJlYWRTYWZlUmVmQ291bnRl
ZCBhbmQgRXZlbnRUYXJnZXQuCi0gICAgdXNpbmcgVGhyZWFkU2FmZVJlZkNvdW50ZWQ6OnJlZjsK
LSAgICB1c2luZyBUaHJlYWRTYWZlUmVmQ291bnRlZDo6ZGVyZWY7CisgICAgRXZlbnRUYXJnZXRJ
bnRlcmZhY2UgZXZlbnRUYXJnZXRJbnRlcmZhY2UoKSBjb25zdCBmaW5hbDsKIAogICAgIHZvaWQg
c3RhcnRSZW5kZXJpbmcoKTsKLSAgICB2b2lkIGZpbmlzaGVkUmVuZGVyaW5nKGJvb2wgZGlkUmVu
ZGVyaW5nKTsKKyAgICB2b2lkIGZpbmlzaGVkUmVuZGVyaW5nKGJvb2wgZGlkUmVuZGVyaW5nKSBm
aW5hbDsKIAogICAgIHN0YXRpYyB1bnNpZ25lZCBzX2hhcmR3YXJlQ29udGV4dENvdW50OwogCiAg
ICAgLy8gUmVzdHJpY3Rpb25zIHRvIGNoYW5nZSBkZWZhdWx0IGJlaGF2aW9ycy4KLSAgICBlbnVt
IEJlaGF2aW9yUmVzdHJpY3Rpb25GbGFncyB7Ci0gICAgICAgIE5vUmVzdHJpY3Rpb25zID0gMCwK
LSAgICAgICAgUmVxdWlyZVVzZXJHZXN0dXJlRm9yQXVkaW9TdGFydFJlc3RyaWN0aW9uID0gMSA8
PCAwLAotICAgICAgICBSZXF1aXJlUGFnZUNvbnNlbnRGb3JBdWRpb1N0YXJ0UmVzdHJpY3Rpb24g
PSAxIDw8IDEsCi0gICAgfTsKLSAgICB0eXBlZGVmIHVuc2lnbmVkIEJlaGF2aW9yUmVzdHJpY3Rp
b25zOwotCi0gICAgQmVoYXZpb3JSZXN0cmljdGlvbnMgYmVoYXZpb3JSZXN0cmljdGlvbnMoKSBj
b25zdCB7IHJldHVybiBtX3Jlc3RyaWN0aW9uczsgfQotICAgIHZvaWQgYWRkQmVoYXZpb3JSZXN0
cmljdGlvbihCZWhhdmlvclJlc3RyaWN0aW9ucyByZXN0cmljdGlvbikgeyBtX3Jlc3RyaWN0aW9u
cyB8PSByZXN0cmljdGlvbjsgfQotICAgIHZvaWQgcmVtb3ZlQmVoYXZpb3JSZXN0cmljdGlvbihC
ZWhhdmlvclJlc3RyaWN0aW9ucyByZXN0cmljdGlvbikgeyBtX3Jlc3RyaWN0aW9ucyAmPSB+cmVz
dHJpY3Rpb247IH0KKyAgICBCZWhhdmlvclJlc3RyaWN0aW9ucyBiZWhhdmlvclJlc3RyaWN0aW9u
cygpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fcmVzdHJpY3Rpb25zOyB9CisgICAgdm9pZCBhZGRC
ZWhhdmlvclJlc3RyaWN0aW9uKEJlaGF2aW9yUmVzdHJpY3Rpb25zIHJlc3RyaWN0aW9uKSBmaW5h
bCB7IG1fcmVzdHJpY3Rpb25zIHw9IHJlc3RyaWN0aW9uOyB9CisgICAgdm9pZCByZW1vdmVCZWhh
dmlvclJlc3RyaWN0aW9uKEJlaGF2aW9yUmVzdHJpY3Rpb25zIHJlc3RyaWN0aW9uKSBmaW5hbCB7
IG1fcmVzdHJpY3Rpb25zICY9IH5yZXN0cmljdGlvbjsgfQogCi0gICAgdm9pZCBpc1BsYXlpbmdB
dWRpb0RpZENoYW5nZSgpOworICAgIHZvaWQgaXNQbGF5aW5nQXVkaW9EaWRDaGFuZ2UoKSBmaW5h
bDsKIAotICAgIHZvaWQgbm9kZVdpbGxCZWdpblBsYXliYWNrKCk7CisgICAgdm9pZCBub2RlV2ls
bEJlZ2luUGxheWJhY2soKSBmaW5hbDsKIAogI2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRAogICAg
IGNvbnN0IExvZ2dlciYgbG9nZ2VyKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9sb2dnZXIuZ2V0
KCk7IH0KICAgICBjb25zdCB2b2lkKiBsb2dJZGVudGlmaWVyKCkgY29uc3QgZmluYWwgeyByZXR1
cm4gbV9sb2dJZGVudGlmaWVyOyB9CiAgICAgV1RGTG9nQ2hhbm5lbCYgbG9nQ2hhbm5lbCgpIGNv
bnN0IGZpbmFsOwotICAgIGNvbnN0IHZvaWQqIG5leHRBdWRpb05vZGVMb2dJZGVudGlmaWVyKCkg
eyByZXR1cm4gY2hpbGRMb2dJZGVudGlmaWVyKG1fbG9nSWRlbnRpZmllciwgKyttX25leHRBdWRp
b05vZGVJZGVudGlmaWVyKTsgfQotICAgIGNvbnN0IHZvaWQqIG5leHRBdWRpb1BhcmFtZXRlckxv
Z0lkZW50aWZpZXIoKSB7IHJldHVybiBjaGlsZExvZ0lkZW50aWZpZXIobV9sb2dJZGVudGlmaWVy
LCArK21fbmV4dEF1ZGlvUGFyYW1ldGVySWRlbnRpZmllcik7IH0KKyAgICBjb25zdCB2b2lkKiBu
ZXh0QXVkaW9Ob2RlTG9nSWRlbnRpZmllcigpIGZpbmFsIHsgcmV0dXJuIGNoaWxkTG9nSWRlbnRp
ZmllcihtX2xvZ0lkZW50aWZpZXIsICsrbV9uZXh0QXVkaW9Ob2RlSWRlbnRpZmllcik7IH0KKyAg
ICBjb25zdCB2b2lkKiBuZXh0QXVkaW9QYXJhbWV0ZXJMb2dJZGVudGlmaWVyKCkgZmluYWwgeyBy
ZXR1cm4gY2hpbGRMb2dJZGVudGlmaWVyKG1fbG9nSWRlbnRpZmllciwgKyttX25leHRBdWRpb1Bh
cmFtZXRlcklkZW50aWZpZXIpOyB9CiAjZW5kaWYKIAotICAgIHZvaWQgcG9zdFRhc2soV1RGOjpG
dW5jdGlvbjx2b2lkKCk+JiYpOwotICAgIGJvb2wgaXNTdG9wcGVkKCkgY29uc3QgeyByZXR1cm4g
bV9pc1N0b3BTY2hlZHVsZWQ7IH0KLSAgICBjb25zdCBTZWN1cml0eU9yaWdpbiogb3JpZ2luKCkg
Y29uc3Q7Ci0gICAgdm9pZCBhZGRDb25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNlLCBNZXNzYWdl
TGV2ZWwsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSk7Ci0KLSAgICAvLyBFdmVudFRhcmdldAotICAg
IFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSBjb25zdCBm
aW5hbDsKKyAgICB2b2lkIHBvc3RUYXNrKFdURjo6RnVuY3Rpb248dm9pZCgpPiYmKSBmaW5hbDsK
KyAgICBib29sIGlzU3RvcHBlZCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1faXNTdG9wU2NoZWR1
bGVkOyB9CisgICAgY29uc3QgU2VjdXJpdHlPcmlnaW4qIG9yaWdpbigpIGNvbnN0IGZpbmFsOwor
ICAgIHZvaWQgYWRkQ29uc29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZSwgTWVzc2FnZUxldmVsLCBj
b25zdCBTdHJpbmcmIG1lc3NhZ2UpIGZpbmFsOwogCiBwcm90ZWN0ZWQ6CiAgICAgZXhwbGljaXQg
QXVkaW9Db250ZXh0KERvY3VtZW50Jik7CkBAIC0zNjAsOSArNDMzLDggQEAgcHJpdmF0ZToKIAog
ICAgIHZvaWQgdmlzaWJpbGl0eVN0YXRlQ2hhbmdlZCgpIGZpbmFsOwogCi0gICAgLy8gRXZlbnRU
YXJnZXQKLSAgICB2b2lkIHJlZkV2ZW50VGFyZ2V0KCkgb3ZlcnJpZGUgeyByZWYoKTsgfQotICAg
IHZvaWQgZGVyZWZFdmVudFRhcmdldCgpIG92ZXJyaWRlIHsgZGVyZWYoKTsgfQorICAgIGJvb2wg
aXNBdWRpb0NvbnRleHQoKSBjb25zdCBmaW5hbCB7IHJldHVybiB0cnVlOyB9CisgICAgYm9vbCBp
c1dlYktpdEF1ZGlvQ29udGV4dCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIGZhbHNlOyB9CiAKICAg
ICB2b2lkIGhhbmRsZURpcnR5QXVkaW9TdW1taW5nSnVuY3Rpb25zKCk7CiAgICAgdm9pZCBoYW5k
bGVEaXJ0eUF1ZGlvTm9kZU91dHB1dHMoKTsKQEAgLTQ0NiwyMSArNTE4LDEzIEBAIHByaXZhdGU6
CiAgICAgUmVmUHRyPFBlbmRpbmdBY3Rpdml0eTxBdWRpb0NvbnRleHQ+PiBtX3BlbmRpbmdBY3Rp
dml0eTsKIH07CiAKLS8vIEZJWE1FOiBGaW5kIG91dCB3aHkgdGhlc2UgPT0vIT0gZnVuY3Rpb25z
IGFyZSBuZWVkZWQgYW5kIHJlbW92ZSB0aGVtIGlmIHBvc3NpYmxlLgotCi1pbmxpbmUgYm9vbCBv
cGVyYXRvcj09KGNvbnN0IEF1ZGlvQ29udGV4dCYgbGhzLCBjb25zdCBBdWRpb0NvbnRleHQmIHJo
cykKLXsKLSAgICByZXR1cm4gJmxocyA9PSAmcmhzOwotfQotCi1pbmxpbmUgYm9vbCBvcGVyYXRv
ciE9KGNvbnN0IEF1ZGlvQ29udGV4dCYgbGhzLCBjb25zdCBBdWRpb0NvbnRleHQmIHJocykKLXsK
LSAgICByZXR1cm4gJmxocyAhPSAmcmhzOwotfQotCiBpbmxpbmUgQXVkaW9Db250ZXh0OjpTdGF0
ZSBBdWRpb0NvbnRleHQ6OnN0YXRlKCkgY29uc3QKIHsKICAgICByZXR1cm4gbV9zdGF0ZTsKIH0K
IAogfSAvLyBXZWJDb3JlCisKK1NQRUNJQUxJWkVfVFlQRV9UUkFJVFNfQkVHSU4oV2ViQ29yZTo6
QXVkaW9Db250ZXh0KQorICAgIHN0YXRpYyBib29sIGlzVHlwZShjb25zdCBXZWJDb3JlOjpBdWRp
b0NvbnRleHRCYXNlJiBjb250ZXh0KSB7IHJldHVybiBjb250ZXh0LmlzQXVkaW9Db250ZXh0KCk7
IH0KK1NQRUNJQUxJWkVfVFlQRV9UUkFJVFNfRU5EKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0LmlkbCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0LmlkbAppbmRleCBlNzExODM5YjMzMzAwZGUzNDFj
MjMxYzRjYzk2ZTllNTc2MzI0MTM1Li5mMWQ0OWNhMzY4ZDY0NTA2YWJhYjU2OTc5MDllZTA5NzIx
YjVkOGNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlv
Q29udGV4dC5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0Nv
bnRleHQuaWRsCkBAIC0yMywxOSArMjMsMTEgQEAKICAqIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLWVudW0gQXVkaW9D
b250ZXh0U3RhdGUgewotICAgICJzdXNwZW5kZWQiLAotICAgICJydW5uaW5nIiwKLSAgICAiaW50
ZXJydXB0ZWQiLAotICAgICJjbG9zZWQiCi19OwotCiBbCiAgICAgQWN0aXZlRE9NT2JqZWN0LAog
ICAgIENvbmRpdGlvbmFsPVdFQl9BVURJTywKLSAgICBFbmFibGVkQnlTZXR0aW5nPVdlYkF1ZGlv
LAorICAgIEVuYWJsZWRCeVNldHRpbmc9TW9kZXJuVW5wcmVmaXhlZFdlYkF1ZGlvLAogICAgIEV4
cG9ydE1hY3JvPVdFQkNPUkVfRVhQT1JULAotICAgIEludGVyZmFjZU5hbWU9d2Via2l0QXVkaW9D
b250ZXh0LAogXSBpbnRlcmZhY2UgQXVkaW9Db250ZXh0IDogRXZlbnRUYXJnZXQgewogICAgIFtD
YWxsV2l0aD1Eb2N1bWVudCwgTWF5VGhyb3dFeGNlcHRpb25dIGNvbnN0cnVjdG9yKCk7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0U3Rh
dGUuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0U3RhdGUu
aApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi4xNjAxMzExMDhmYTZhNGMxNGE5YWQ2MTdiOTJjYTIxNDc0NDg3ODBiCi0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0Nv
bnRleHRTdGF0ZS5oCkBAIC0wLDAgKzEsMzIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAg
R29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNi0y
MDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFS
RQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OCisgKiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKKyAqIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25j
ZQorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2VudW0gY2xhc3MgQXVkaW9Db250ZXh0U3RhdGUg
eyBTdXNwZW5kZWQsIFJ1bm5pbmcsIEludGVycnVwdGVkLCBDbG9zZWQgfTsKKworfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0NvbnRleHRTdGF0ZS5p
ZGwgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQ29udGV4dFN0YXRlLmlk
bApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi5jOGQwOGJkMmI1NjNjZDgyNmVjY2E3Zjk3OTQ0YzcxM2E4YTdlZjRiCi0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0Nv
bnRleHRTdGF0ZS5pZGwKQEAgLTAsMCArMSwzMSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
MCwgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAx
MSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUK
KyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTgorICogQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTCisgKiBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCitlbnVtIEF1ZGlvQ29u
dGV4dFN0YXRlIHsKKyAgICAic3VzcGVuZGVkIiwKKyAgICAicnVubmluZyIsCisgICAgImludGVy
cnVwdGVkIiwKKyAgICAiY2xvc2VkIgorfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViYXVkaW8vQXVkaW9EZXN0aW5hdGlvbk5vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJhdWRpby9BdWRpb0Rlc3RpbmF0aW9uTm9kZS5jcHAKaW5kZXggZDlhYmI5Nzc3
YTlkMjVlZWFmMjQyZmY0ZmZmYzVlYzVlZjQ4NmM0ZS4uNjc3NjE3ZWNiMzM4ZGE4OTFhNzEzYWU4
OGEzZjVmNjRmNmZkODQ5YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJh
dWRpby9BdWRpb0Rlc3RpbmF0aW9uTm9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJhdWRpby9BdWRpb0Rlc3RpbmF0aW9uTm9kZS5jcHAKQEAgLTM5LDcgKzM5LDcgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogICAgIAogV1RGX01BS0VfSVNPX0FMTE9DQVRFRF9JTVBMKEF1ZGlv
RGVzdGluYXRpb25Ob2RlKTsKIAotQXVkaW9EZXN0aW5hdGlvbk5vZGU6OkF1ZGlvRGVzdGluYXRp
b25Ob2RlKEF1ZGlvQ29udGV4dCYgY29udGV4dCwgZmxvYXQgc2FtcGxlUmF0ZSkKK0F1ZGlvRGVz
dGluYXRpb25Ob2RlOjpBdWRpb0Rlc3RpbmF0aW9uTm9kZShBdWRpb0NvbnRleHRCYXNlJiBjb250
ZXh0LCBmbG9hdCBzYW1wbGVSYXRlKQogICAgIDogQXVkaW9Ob2RlKGNvbnRleHQsIHNhbXBsZVJh
dGUpCiAgICAgLCBtX2N1cnJlbnRTYW1wbGVGcmFtZSgwKQogICAgICwgbV9pc1NpbGVudCh0cnVl
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0Rlc3Rp
bmF0aW9uTm9kZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0Rlc3Rp
bmF0aW9uTm9kZS5oCmluZGV4IDg5NDhmNGVlNzBhNWMwZTgxYThlODNjMWYwY2Q1ZmNmNDUxYWNj
NjAuLjM3NmY0NjI3MTJkN2YxYzJhZThkNTIwMTFmYTJhMTVmNmUxOGFlYzcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9EZXN0aW5hdGlvbk5vZGUuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvRGVzdGluYXRpb25Ob2Rl
LmgKQEAgLTM2LDcgKzM2LDcgQEAgY2xhc3MgQXVkaW9Db250ZXh0OwogY2xhc3MgQXVkaW9EZXN0
aW5hdGlvbk5vZGUgOiBwdWJsaWMgQXVkaW9Ob2RlLCBwdWJsaWMgQXVkaW9JT0NhbGxiYWNrIHsK
ICAgICBXVEZfTUFLRV9JU09fQUxMT0NBVEVEKEF1ZGlvRGVzdGluYXRpb25Ob2RlKTsKIHB1Ymxp
YzoKLSAgICBBdWRpb0Rlc3RpbmF0aW9uTm9kZShBdWRpb0NvbnRleHQmLCBmbG9hdCBzYW1wbGVS
YXRlKTsKKyAgICBBdWRpb0Rlc3RpbmF0aW9uTm9kZShBdWRpb0NvbnRleHRCYXNlJiwgZmxvYXQg
c2FtcGxlUmF0ZSk7CiAgICAgdmlydHVhbCB+QXVkaW9EZXN0aW5hdGlvbk5vZGUoKTsKICAgICAK
ICAgICAvLyBBdWRpb05vZGUgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViYXVkaW8vQXVkaW9Ob2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8v
QXVkaW9Ob2RlLmNwcAppbmRleCA3NjVlY2UzMzJmNjM2OWM0MTk4ZmU1N2RkM2FlN2NjNTE5M2Iy
YWNhLi5lNTU0Mzc3OWQ1MWE1MDhjZTYxYTZhMDgzMTEyZThkMmQwYTg3ZDBkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvTm9kZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb05vZGUuY3BwCkBAIC0zMyw2ICszMyw3
IEBACiAjaW5jbHVkZSAiQXVkaW9Ob2RlT3V0cHV0LmgiCiAjaW5jbHVkZSAiQXVkaW9QYXJhbS5o
IgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKKyNpbmNsdWRlICJXZWJLaXRBdWRpb0NvbnRleHQuaCIK
ICNpbmNsdWRlIDx3dGYvQXRvbWljcy5oPgogI2luY2x1ZGUgPHd0Zi9Jc29NYWxsb2NJbmxpbmVz
Lmg+CiAjaW5jbHVkZSA8d3RmL01haW5UaHJlYWQuaD4KQEAgLTk1LDcgKzk2LDcgQEAgU3RyaW5n
IGNvbnZlcnRFbnVtZXJhdGlvblRvU3RyaW5nKEF1ZGlvTm9kZTo6Tm9kZVR5cGUgZW51bWVyYXRp
b25WYWx1ZSkKICAgICByZXR1cm4gdmFsdWVzW3N0YXRpY19jYXN0PHNpemVfdD4oZW51bWVyYXRp
b25WYWx1ZSldOwogfQogCi1BdWRpb05vZGU6OkF1ZGlvTm9kZShBdWRpb0NvbnRleHQmIGNvbnRl
eHQsIGZsb2F0IHNhbXBsZVJhdGUpCitBdWRpb05vZGU6OkF1ZGlvTm9kZShBdWRpb0NvbnRleHRC
YXNlJiBjb250ZXh0LCBmbG9hdCBzYW1wbGVSYXRlKQogICAgIDogbV9pc0luaXRpYWxpemVkKGZh
bHNlKQogICAgICwgbV9ub2RlVHlwZShOb2RlVHlwZVVua25vd24pCiAgICAgLCBtX2NvbnRleHQo
Y29udGV4dCkKQEAgLTE5NCw3ICsxOTUsNyBAQCBBdWRpb05vZGVPdXRwdXQqIEF1ZGlvTm9kZTo6
b3V0cHV0KHVuc2lnbmVkIGkpCiBFeGNlcHRpb25Pcjx2b2lkPiBBdWRpb05vZGU6OmNvbm5lY3Qo
QXVkaW9Ob2RlJiBkZXN0aW5hdGlvbiwgdW5zaWduZWQgb3V0cHV0SW5kZXgsIHVuc2lnbmVkIGlu
cHV0SW5kZXgpCiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKLSAgICBBdWRpb0NvbnRl
eHQ6OkF1dG9Mb2NrZXIgbG9ja2VyKGNvbnRleHQoKSk7CisgICAgQXVkaW9Db250ZXh0QmFzZTo6
QXV0b0xvY2tlciBsb2NrZXIoY29udGV4dCgpKTsKIAogICAgIEFMV0FZU19MT0coTE9HSURFTlRJ
RklFUiwgZGVzdGluYXRpb24ubm9kZVR5cGUoKSwgIiwgb3V0cHV0ID0gIiwgb3V0cHV0SW5kZXgs
ICIsIGlucHV0ID0gIiwgaW5wdXRJbmRleCk7CiAgICAgCkBAIC0yMDUsNyArMjA2LDcgQEAgRXhj
ZXB0aW9uT3I8dm9pZD4gQXVkaW9Ob2RlOjpjb25uZWN0KEF1ZGlvTm9kZSYgZGVzdGluYXRpb24s
IHVuc2lnbmVkIG91dHB1dEluZGUKICAgICBpZiAoaW5wdXRJbmRleCA+PSBkZXN0aW5hdGlvbi5u
dW1iZXJPZklucHV0cygpKQogICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgSW5kZXhTaXplRXJy
b3IgfTsKIAotICAgIGlmIChjb250ZXh0KCkgIT0gZGVzdGluYXRpb24uY29udGV4dCgpKQorICAg
IGlmICgmY29udGV4dCgpICE9ICZkZXN0aW5hdGlvbi5jb250ZXh0KCkpCiAgICAgICAgIHJldHVy
biBFeGNlcHRpb24geyBTeW50YXhFcnJvciB9OwogCiAgICAgYXV0byogaW5wdXQgPSBkZXN0aW5h
dGlvbi5pbnB1dChpbnB1dEluZGV4KTsKQEAgLTIyMCw3ICsyMjEsNyBAQCBFeGNlcHRpb25Pcjx2
b2lkPiBBdWRpb05vZGU6OmNvbm5lY3QoQXVkaW9Ob2RlJiBkZXN0aW5hdGlvbiwgdW5zaWduZWQg
b3V0cHV0SW5kZQogCiBFeGNlcHRpb25Pcjx2b2lkPiBBdWRpb05vZGU6OmNvbm5lY3QoQXVkaW9Q
YXJhbSYgcGFyYW0sIHVuc2lnbmVkIG91dHB1dEluZGV4KQogewotICAgIEF1ZGlvQ29udGV4dDo6
QXV0b0xvY2tlciBsb2NrZXIoY29udGV4dCgpKTsKKyAgICBBdWRpb0NvbnRleHRCYXNlOjpBdXRv
TG9ja2VyIGxvY2tlcihjb250ZXh0KCkpOwogCiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsK
IApAQCAtMjI5LDcgKzIzMCw3IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IEF1ZGlvTm9kZTo6Y29ubmVj
dChBdWRpb1BhcmFtJiBwYXJhbSwgdW5zaWduZWQgb3V0cHV0SW5kZXgpCiAgICAgaWYgKG91dHB1
dEluZGV4ID49IG51bWJlck9mT3V0cHV0cygpKQogICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsg
SW5kZXhTaXplRXJyb3IgfTsKIAotICAgIGlmIChjb250ZXh0KCkgIT0gcGFyYW0uY29udGV4dCgp
KQorICAgIGlmICgmY29udGV4dCgpICE9ICZwYXJhbS5jb250ZXh0KCkpCiAgICAgICAgIHJldHVy
biBFeGNlcHRpb24geyBTeW50YXhFcnJvciB9OwogCiAgICAgYXV0byogb3V0cHV0ID0gdGhpcy0+
b3V0cHV0KG91dHB1dEluZGV4KTsKQEAgLTI0MSw3ICsyNDIsNyBAQCBFeGNlcHRpb25Pcjx2b2lk
PiBBdWRpb05vZGU6OmNvbm5lY3QoQXVkaW9QYXJhbSYgcGFyYW0sIHVuc2lnbmVkIG91dHB1dElu
ZGV4KQogRXhjZXB0aW9uT3I8dm9pZD4gQXVkaW9Ob2RlOjpkaXNjb25uZWN0KHVuc2lnbmVkIG91
dHB1dEluZGV4KQogewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7Ci0gICAgQXVkaW9Db250
ZXh0OjpBdXRvTG9ja2VyIGxvY2tlcihjb250ZXh0KCkpOworICAgIEF1ZGlvQ29udGV4dEJhc2U6
OkF1dG9Mb2NrZXIgbG9ja2VyKGNvbnRleHQoKSk7CiAKICAgICAvLyBTYW5pdHkgY2hlY2sgaW5w
dXQgYW5kIG91dHB1dCBpbmRpY2VzLgogICAgIGlmIChvdXRwdXRJbmRleCA+PSBudW1iZXJPZk91
dHB1dHMoKSkKQEAgLTI2Myw3ICsyNjQsNyBAQCB1bnNpZ25lZCBBdWRpb05vZGU6OmNoYW5uZWxD
b3VudCgpCiBFeGNlcHRpb25Pcjx2b2lkPiBBdWRpb05vZGU6OnNldENoYW5uZWxDb3VudCh1bnNp
Z25lZCBjaGFubmVsQ291bnQpCiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKLSAgICBB
dWRpb0NvbnRleHQ6OkF1dG9Mb2NrZXIgbG9ja2VyKGNvbnRleHQoKSk7CisgICAgQXVkaW9Db250
ZXh0QmFzZTo6QXV0b0xvY2tlciBsb2NrZXIoY29udGV4dCgpKTsKIAogICAgIEFMV0FZU19MT0co
TE9HSURFTlRJRklFUiwgY2hhbm5lbENvdW50KTsKICAgICAKQEAgLTI5Niw3ICsyOTcsNyBAQCBT
dHJpbmcgQXVkaW9Ob2RlOjpjaGFubmVsQ291bnRNb2RlKCkKIEV4Y2VwdGlvbk9yPHZvaWQ+IEF1
ZGlvTm9kZTo6c2V0Q2hhbm5lbENvdW50TW9kZShjb25zdCBTdHJpbmcmIG1vZGUpCiB7CiAgICAg
QVNTRVJUKGlzTWFpblRocmVhZCgpKTsKLSAgICBBdWRpb0NvbnRleHQ6OkF1dG9Mb2NrZXIgbG9j
a2VyKGNvbnRleHQoKSk7CisgICAgQXVkaW9Db250ZXh0QmFzZTo6QXV0b0xvY2tlciBsb2NrZXIo
Y29udGV4dCgpKTsKIAogICAgIEFMV0FZU19MT0coTE9HSURFTlRJRklFUiwgbW9kZSk7CiAgICAg
CkBAIC0zMzIsNyArMzMzLDcgQEAgU3RyaW5nIEF1ZGlvTm9kZTo6Y2hhbm5lbEludGVycHJldGF0
aW9uKCkKIEV4Y2VwdGlvbk9yPHZvaWQ+IEF1ZGlvTm9kZTo6c2V0Q2hhbm5lbEludGVycHJldGF0
aW9uKGNvbnN0IFN0cmluZyYgaW50ZXJwcmV0YXRpb24pCiB7CiAgICAgQVNTRVJUKGlzTWFpblRo
cmVhZCgpKTsKLSAgICBBdWRpb0NvbnRleHQ6OkF1dG9Mb2NrZXIgbG9ja2VyKGNvbnRleHQoKSk7
CisgICAgQXVkaW9Db250ZXh0QmFzZTo6QXV0b0xvY2tlciBsb2NrZXIoY29udGV4dCgpKTsKIAog
ICAgIEFMV0FZU19MT0coTE9HSURFTlRJRklFUiwgaW50ZXJwcmV0YXRpb24pOwogICAgIApAQCAt
NDM3LDcgKzQzOCw3IEBAIHZvaWQgQXVkaW9Ob2RlOjplbmFibGVPdXRwdXRzSWZOZWNlc3Nhcnko
KQogewogICAgIGlmIChtX2lzRGlzYWJsZWQgJiYgbV9jb25uZWN0aW9uUmVmQ291bnQgPiAwKSB7
CiAgICAgICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7Ci0gICAgICAgIEF1ZGlvQ29udGV4dDo6
QXV0b0xvY2tlciBsb2NrZXIoY29udGV4dCgpKTsKKyAgICAgICAgQXVkaW9Db250ZXh0QmFzZTo6
QXV0b0xvY2tlciBsb2NrZXIoY29udGV4dCgpKTsKIAogICAgICAgICBtX2lzRGlzYWJsZWQgPSBm
YWxzZTsKICAgICAgICAgZm9yIChhdXRvJiBvdXRwdXQgOiBtX291dHB1dHMpCkBAIC01MDEsNyAr
NTAyLDcgQEAgdm9pZCBBdWRpb05vZGU6OmRlcmVmKFJlZlR5cGUgcmVmVHlwZSkKICAgICAvLyBJ
biB0aGUgY2FzZSBvZiB0aGUgYXVkaW8gdGhyZWFkLCB3ZSBtdXN0IHVzZSBhIHRyeUxvY2sgdG8g
YXZvaWQgZ2xpdGNoZXMuCiAgICAgYm9vbCBoYXNMb2NrID0gZmFsc2U7CiAgICAgYm9vbCBtdXN0
UmVsZWFzZUxvY2sgPSBmYWxzZTsKLSAgICAKKwogICAgIGlmIChjb250ZXh0KCkuaXNBdWRpb1Ro
cmVhZCgpKSB7CiAgICAgICAgIC8vIFJlYWwtdGltZSBhdWRpbyB0aHJlYWQgbXVzdCBub3QgY29u
dGVuZCBsb2NrICh0byBhdm9pZCBnbGl0Y2hlcykuCiAgICAgICAgIGhhc0xvY2sgPSBjb250ZXh0
KCkudHJ5TG9jayhtdXN0UmVsZWFzZUxvY2spOwpAQCAtNTMwLDYgKzUzMSwxMyBAQCB2b2lkIEF1
ZGlvTm9kZTo6ZGVyZWYoUmVmVHlwZSByZWZUeXBlKQogICAgICAgICBjb250ZXh0KCkuZGVsZXRl
TWFya2VkTm9kZXMoKTsKIH0KIAorVmFyaWFudDxSZWZQdHI8QXVkaW9Db250ZXh0PiwgUmVmUHRy
PFdlYktpdEF1ZGlvQ29udGV4dD4+IEF1ZGlvTm9kZTo6Y29udGV4dEZvckJpbmRpbmdzKCkgY29u
c3QKK3sKKyAgICBpZiAobV9jb250ZXh0LT5pc1dlYktpdEF1ZGlvQ29udGV4dCgpKQorICAgICAg
ICByZXR1cm4gbWFrZVJlZlB0cihzdGF0aWNfY2FzdDxXZWJLaXRBdWRpb0NvbnRleHQmPihtX2Nv
bnRleHQuZ2V0KCkpKTsKKyAgICByZXR1cm4gbWFrZVJlZlB0cihzdGF0aWNfY2FzdDxBdWRpb0Nv
bnRleHQmPihtX2NvbnRleHQuZ2V0KCkpKTsKK30KKwogdm9pZCBBdWRpb05vZGU6OmZpbmlzaERl
cmVmKFJlZlR5cGUgcmVmVHlwZSkKIHsKICAgICBBU1NFUlQoY29udGV4dCgpLmlzR3JhcGhPd25l
cigpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9O
b2RlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvTm9kZS5oCmluZGV4
IDQyMTAxMDA2Y2M3ZjU0ZWU3NWFkZjcwNzJlZmJlNjRiYWM1OGQzNmQuLmE5ODgxYmQ0YjhkYjRj
M2IxMGY5ZDc3MTE2NTYyNjAwYzE4MGZjOTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViYXVkaW8vQXVkaW9Ob2RlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJhdWRpby9BdWRpb05vZGUuaApAQCAtMjksMTUgKzI5LDE4IEBACiAjaW5jbHVkZSAiRXhjZXB0
aW9uT3IuaCIKICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9Mb2dnZXJI
ZWxwZXIuaD4KKyNpbmNsdWRlIDx3dGYvVmFyaWFudC5oPgogCiAjZGVmaW5lIERFQlVHX0FVRElP
Tk9ERV9SRUZFUkVOQ0VTIDAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBBdWRpb0Nv
bnRleHQ7CitjbGFzcyBBdWRpb0NvbnRleHRCYXNlOwogY2xhc3MgQXVkaW9Ob2RlSW5wdXQ7CiBj
bGFzcyBBdWRpb05vZGVPdXRwdXQ7CiBjbGFzcyBBdWRpb1BhcmFtOworY2xhc3MgV2ViS2l0QXVk
aW9Db250ZXh0OwogCiAvLyBBbiBBdWRpb05vZGUgaXMgdGhlIGJhc2ljIGJ1aWxkaW5nIGJsb2Nr
IGZvciBoYW5kbGluZyBhdWRpbyB3aXRoaW4gYW4gQXVkaW9Db250ZXh0LgogLy8gSXQgbWF5IGJl
IGFuIGF1ZGlvIHNvdXJjZSwgYW4gaW50ZXJtZWRpYXRlIHByb2Nlc3NpbmcgbW9kdWxlLCBvciBh
biBhdWRpbyBkZXN0aW5hdGlvbi4KQEAgLTU2LDExICs1OSwxMyBAQCBjbGFzcyBBdWRpb05vZGUK
IHB1YmxpYzoKICAgICBlbnVtIHsgUHJvY2Vzc2luZ1NpemVJbkZyYW1lcyA9IDEyOCB9OwogCi0g
ICAgQXVkaW9Ob2RlKEF1ZGlvQ29udGV4dCYsIGZsb2F0IHNhbXBsZVJhdGUpOworICAgIEF1ZGlv
Tm9kZShBdWRpb0NvbnRleHRCYXNlJiwgZmxvYXQgc2FtcGxlUmF0ZSk7CiAgICAgdmlydHVhbCB+
QXVkaW9Ob2RlKCk7CiAKLSAgICBBdWRpb0NvbnRleHQmIGNvbnRleHQoKSB7IHJldHVybiBtX2Nv
bnRleHQuZ2V0KCk7IH0KLSAgICBjb25zdCBBdWRpb0NvbnRleHQmIGNvbnRleHQoKSBjb25zdCB7
IHJldHVybiBtX2NvbnRleHQuZ2V0KCk7IH0KKyAgICBBdWRpb0NvbnRleHRCYXNlJiBjb250ZXh0
KCkgeyByZXR1cm4gbV9jb250ZXh0LmdldCgpOyB9CisgICAgY29uc3QgQXVkaW9Db250ZXh0QmFz
ZSYgY29udGV4dCgpIGNvbnN0IHsgcmV0dXJuIG1fY29udGV4dC5nZXQoKTsgfQorCisgICAgVmFy
aWFudDxSZWZQdHI8QXVkaW9Db250ZXh0PiwgUmVmUHRyPFdlYktpdEF1ZGlvQ29udGV4dD4+IGNv
bnRleHRGb3JCaW5kaW5ncygpIGNvbnN0OwogCiAgICAgZW51bSBOb2RlVHlwZSB7CiAgICAgICAg
IE5vZGVUeXBlVW5rbm93biwKQEAgLTIwOSw3ICsyMTQsNyBAQCBwcml2YXRlOgogCiAgICAgdm9s
YXRpbGUgYm9vbCBtX2lzSW5pdGlhbGl6ZWQ7CiAgICAgTm9kZVR5cGUgbV9ub2RlVHlwZTsKLSAg
ICBSZWY8QXVkaW9Db250ZXh0PiBtX2NvbnRleHQ7CisgICAgUmVmPEF1ZGlvQ29udGV4dEJhc2U+
IG1fY29udGV4dDsKICAgICBmbG9hdCBtX3NhbXBsZVJhdGU7CiAgICAgVmVjdG9yPHN0ZDo6dW5p
cXVlX3B0cjxBdWRpb05vZGVJbnB1dD4+IG1faW5wdXRzOwogICAgIFZlY3RvcjxzdGQ6OnVuaXF1
ZV9wdHI8QXVkaW9Ob2RlT3V0cHV0Pj4gbV9vdXRwdXRzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb05vZGUuaWRsIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJhdWRpby9BdWRpb05vZGUuaWRsCmluZGV4IDcwZmVjOGM4MTQ1MDU5OTFlMjBhZDhj
MWM5MmNjMTFlZWU5Njg0MmYuLjcxOTM5YzgzMTcxNGJmYmYzNmRmYmFlNTJmYmMzZDNkMjAyZjY2
MjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Ob2Rl
LmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvTm9kZS5pZGwK
QEAgLTI1LDcgKzI1LDcgQEAKIFsKICAgICBDb25kaXRpb25hbD1XRUJfQVVESU8sCiBdIGludGVy
ZmFjZSBBdWRpb05vZGUgOiBFdmVudFRhcmdldCB7Ci0gICAgcmVhZG9ubHkgYXR0cmlidXRlIEF1
ZGlvQ29udGV4dCBjb250ZXh0OworICAgIFtJbXBsZW1lbnRlZEFzPWNvbnRleHRGb3JCaW5kaW5n
c10gcmVhZG9ubHkgYXR0cmlidXRlIChBdWRpb0NvbnRleHQgb3IgV2ViS2l0QXVkaW9Db250ZXh0
KSBjb250ZXh0OwogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSB1bnNpZ25lZCBsb25nIG51bWJlck9m
SW5wdXRzOwogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSB1bnNpZ25lZCBsb25nIG51bWJlck9mT3V0
cHV0czsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRp
b05vZGVPdXRwdXQuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Ob2Rl
T3V0cHV0LmgKaW5kZXggNTBhOTVlZTIwNWMxMjAzMDkzY2E1ZmMzMDcxNzk5MTM1MzJkNzNhNC4u
ZjA4OTgzNjM1ZjNjNTU5Yzc5ODFmMGJhNGE1YzEyMmIxNTljMmNiNSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb05vZGVPdXRwdXQuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvTm9kZU91dHB1dC5oCkBAIC00Nyw3ICs0
Nyw3IEBAIHB1YmxpYzoKIAogICAgIC8vIENhbiBiZSBjYWxsZWQgZnJvbSBhbnkgdGhyZWFkLgog
ICAgIEF1ZGlvTm9kZSogbm9kZSgpIGNvbnN0IHsgcmV0dXJuIG1fbm9kZTsgfQotICAgIEF1ZGlv
Q29udGV4dCYgY29udGV4dCgpIHsgcmV0dXJuIG1fbm9kZS0+Y29udGV4dCgpOyB9CisgICAgQXVk
aW9Db250ZXh0QmFzZSYgY29udGV4dCgpIHsgcmV0dXJuIG1fbm9kZS0+Y29udGV4dCgpOyB9CiAg
ICAgCiAgICAgLy8gQ2F1c2VzIG91ciBBdWRpb05vZGUgdG8gcHJvY2VzcyBpZiBpdCBoYXNuJ3Qg
YWxyZWFkeSBmb3IgdGhpcyByZW5kZXIgcXVhbnR1bS4KICAgICAvLyBJdCByZXR1cm5zIHRoZSBi
dXMgY29udGFpbmluZyB0aGUgcHJvY2Vzc2VkIGF1ZGlvIGZvciB0aGlzIG91dHB1dCwgcmV0dXJu
aW5nIGluUGxhY2VCdXMgaWYgaW4tcGxhY2UgcHJvY2Vzc2luZyB3YXMgcG9zc2libGUuCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvUGFyYW0uY3BwIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1BhcmFtLmNwcAppbmRleCAyOTM0
NTY0NDVjYzBlMWJkYTlkMDBkMmJkOWEyYzBkMTExMDNkY2M5Li5kNDcwYmY3NDZlZmI1YWIyM2Nh
MzUyZDdiZDk1MzM4YzM4MTRmZTdjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmF1ZGlvL0F1ZGlvUGFyYW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
YXVkaW8vQXVkaW9QYXJhbS5jcHAKQEAgLTQxLDcgKzQxLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogY29uc3QgZG91YmxlIEF1ZGlvUGFyYW06OkRlZmF1bHRTbW9vdGhpbmdDb25zdGFudCA9IDAu
MDU7CiBjb25zdCBkb3VibGUgQXVkaW9QYXJhbTo6U25hcFRocmVzaG9sZCA9IDAuMDAxOwogCi1B
dWRpb1BhcmFtOjpBdWRpb1BhcmFtKEF1ZGlvQ29udGV4dCYgY29udGV4dCwgY29uc3QgU3RyaW5n
JiBuYW1lLCBkb3VibGUgZGVmYXVsdFZhbHVlLCBkb3VibGUgbWluVmFsdWUsIGRvdWJsZSBtYXhW
YWx1ZSwgdW5zaWduZWQgdW5pdHMpCitBdWRpb1BhcmFtOjpBdWRpb1BhcmFtKEF1ZGlvQ29udGV4
dEJhc2UmIGNvbnRleHQsIGNvbnN0IFN0cmluZyYgbmFtZSwgZG91YmxlIGRlZmF1bHRWYWx1ZSwg
ZG91YmxlIG1pblZhbHVlLCBkb3VibGUgbWF4VmFsdWUsIHVuc2lnbmVkIHVuaXRzKQogICAgIDog
QXVkaW9TdW1taW5nSnVuY3Rpb24oY29udGV4dCkKICAgICAsIG1fbmFtZShuYW1lKQogICAgICwg
bV92YWx1ZShkZWZhdWx0VmFsdWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmF1ZGlvL0F1ZGlvUGFyYW0uaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8v
QXVkaW9QYXJhbS5oCmluZGV4IDIyNmM5NTdlNzA2ZmU2MWQyZjIzM2MwZDViZjk2ZjIwNjg3MzFj
NDIuLjE2YTIxMDk1MDQ0ZjYwMWVkMjdiODkwMWEwNzY4ZjJmYTllYjE2ZTYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9QYXJhbS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9QYXJhbS5oCkBAIC0zMSw2ICszMSw3IEBA
CiAjaW5jbHVkZSAiQXVkaW9Db250ZXh0LmgiCiAjaW5jbHVkZSAiQXVkaW9QYXJhbVRpbWVsaW5l
LmgiCiAjaW5jbHVkZSAiQXVkaW9TdW1taW5nSnVuY3Rpb24uaCIKKyNpbmNsdWRlICJXZWJLaXRB
dWRpb0NvbnRleHQuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9GbG9hdDMyQXJyYXkuaD4K
ICNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KICNpbmNsdWRlIDx3dGYvTG9nZ2VySGVscGVyLmg+CkBA
IC01Miw3ICs1Myw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgY29uc3QgZG91YmxlIERlZmF1bHRT
bW9vdGhpbmdDb25zdGFudDsKICAgICBzdGF0aWMgY29uc3QgZG91YmxlIFNuYXBUaHJlc2hvbGQ7
CiAKLSAgICBzdGF0aWMgUmVmPEF1ZGlvUGFyYW0+IGNyZWF0ZShBdWRpb0NvbnRleHQmIGNvbnRl
eHQsIGNvbnN0IFN0cmluZyYgbmFtZSwgZG91YmxlIGRlZmF1bHRWYWx1ZSwgZG91YmxlIG1pblZh
bHVlLCBkb3VibGUgbWF4VmFsdWUsIHVuc2lnbmVkIHVuaXRzID0gMCkKKyAgICBzdGF0aWMgUmVm
PEF1ZGlvUGFyYW0+IGNyZWF0ZShBdWRpb0NvbnRleHRCYXNlJiBjb250ZXh0LCBjb25zdCBTdHJp
bmcmIG5hbWUsIGRvdWJsZSBkZWZhdWx0VmFsdWUsIGRvdWJsZSBtaW5WYWx1ZSwgZG91YmxlIG1h
eFZhbHVlLCB1bnNpZ25lZCB1bml0cyA9IDApCiAgICAgewogICAgICAgICByZXR1cm4gYWRvcHRS
ZWYoKm5ldyBBdWRpb1BhcmFtKGNvbnRleHQsIG5hbWUsIGRlZmF1bHRWYWx1ZSwgbWluVmFsdWUs
IG1heFZhbHVlLCB1bml0cykpOwogICAgIH0KQEAgLTEwOCw3ICsxMDksNyBAQCBwdWJsaWM6CiAg
ICAgdm9pZCBkaXNjb25uZWN0KEF1ZGlvTm9kZU91dHB1dCopOwogCiBwcm90ZWN0ZWQ6Ci0gICAg
QXVkaW9QYXJhbShBdWRpb0NvbnRleHQmLCBjb25zdCBTdHJpbmcmLCBkb3VibGUgZGVmYXVsdFZh
bHVlLCBkb3VibGUgbWluVmFsdWUsIGRvdWJsZSBtYXhWYWx1ZSwgdW5zaWduZWQgdW5pdHMgPSAw
KTsKKyAgICBBdWRpb1BhcmFtKEF1ZGlvQ29udGV4dEJhc2UmLCBjb25zdCBTdHJpbmcmLCBkb3Vi
bGUgZGVmYXVsdFZhbHVlLCBkb3VibGUgbWluVmFsdWUsIGRvdWJsZSBtYXhWYWx1ZSwgdW5zaWdu
ZWQgdW5pdHMgPSAwKTsKIAogcHJpdmF0ZToKICAgICAvLyBzYW1wbGVBY2N1cmF0ZSBjb3JyZXNw
b25kcyB0byBhLXJhdGUgKGF1ZGlvIHJhdGUpIHZzLiBrLXJhdGUgaW4gdGhlIFdlYiBBdWRpbyBz
cGVjaWZpY2F0aW9uLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRp
by9BdWRpb1BhcmFtVGltZWxpbmUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRp
by9BdWRpb1BhcmFtVGltZWxpbmUuY3BwCmluZGV4IDJiNTk1NzBiZjZlNjFiNTQ4M2VkMWI5MDdl
Njc2ZjY5YmU5YjM3NDIuLjZjNDEzMDFkOGFkNWE3YWJiZThkYjBkYmExN2NmODQ0YmZlZmZiNjAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9QYXJhbVRp
bWVsaW5lLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvUGFy
YW1UaW1lbGluZS5jcHAKQEAgLTExMyw3ICsxMTMsNyBAQCB2b2lkIEF1ZGlvUGFyYW1UaW1lbGlu
ZTo6Y2FuY2VsU2NoZWR1bGVkVmFsdWVzKGZsb2F0IHN0YXJ0VGltZSkKICAgICB9CiB9CiAKLWZs
b2F0IEF1ZGlvUGFyYW1UaW1lbGluZTo6dmFsdWVGb3JDb250ZXh0VGltZShBdWRpb0NvbnRleHQm
IGNvbnRleHQsIGZsb2F0IGRlZmF1bHRWYWx1ZSwgYm9vbCYgaGFzVmFsdWUpCitmbG9hdCBBdWRp
b1BhcmFtVGltZWxpbmU6OnZhbHVlRm9yQ29udGV4dFRpbWUoQXVkaW9Db250ZXh0QmFzZSYgY29u
dGV4dCwgZmxvYXQgZGVmYXVsdFZhbHVlLCBib29sJiBoYXNWYWx1ZSkKIHsKICAgICB7CiAgICAg
ICAgIHN0ZDo6dW5pcXVlX2xvY2s8TG9jaz4gbG9jayhtX2V2ZW50c011dGV4LCBzdGQ6OnRyeV90
b19sb2NrKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVk
aW9QYXJhbVRpbWVsaW5lLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlv
UGFyYW1UaW1lbGluZS5oCmluZGV4IDdjMTA5OTk1NmNlZWJjOGQ4ZjZkNTBlMGZiMGZjOWExZWVm
ZGEzNGQuLmE1ODY4YmRlZTE4M2ZkZTJhNzA4ZDQ2NGNlNjM1YjI0MDBlNzYxYTIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9QYXJhbVRpbWVsaW5lLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1BhcmFtVGltZWxpbmUu
aApAQCAtNTIsNyArNTIsNyBAQCBwdWJsaWM6CiAKICAgICAvLyBoYXNWYWx1ZSBpcyBzZXQgdG8g
dHJ1ZSBpZiBhIHZhbGlkIHRpbWVsaW5lIHZhbHVlIGlzIHJldHVybmVkLgogICAgIC8vIG90aGVy
d2lzZSBkZWZhdWx0VmFsdWUgaXMgcmV0dXJuZWQuCi0gICAgZmxvYXQgdmFsdWVGb3JDb250ZXh0
VGltZShBdWRpb0NvbnRleHQmLCBmbG9hdCBkZWZhdWx0VmFsdWUsIGJvb2wmIGhhc1ZhbHVlKTsK
KyAgICBmbG9hdCB2YWx1ZUZvckNvbnRleHRUaW1lKEF1ZGlvQ29udGV4dEJhc2UmLCBmbG9hdCBk
ZWZhdWx0VmFsdWUsIGJvb2wmIGhhc1ZhbHVlKTsKIAogICAgIC8vIEdpdmVuIHRoZSB0aW1lIHJh
bmdlLCBjYWxjdWxhdGVzIHBhcmFtZXRlciB2YWx1ZXMgaW50byB0aGUgdmFsdWVzIGJ1ZmZlcgog
ICAgIC8vIGFuZCByZXR1cm5zIHRoZSBsYXN0IHBhcmFtZXRlciB2YWx1ZSBjYWxjdWxhdGVkIGZv
ciAidmFsdWVzIiBvciB0aGUgZGVmYXVsdFZhbHVlIGlmIG5vbmUgd2VyZSBjYWxjdWxhdGVkLgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1NjaGVkdWxl
ZFNvdXJjZU5vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1Nj
aGVkdWxlZFNvdXJjZU5vZGUuY3BwCmluZGV4IDBmNzI2NzZmYzc0M2M0Y2UyNDFhZWUzYzkwZDAy
OGY2YTk1MjcwMjMuLjdjMjgyMzdhMGJkMDM1ZTRjM2FiN2JhNTEzNzUzM2JkOTE1YTdlNjEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9TY2hlZHVsZWRT
b3VyY2VOb2RlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlv
U2NoZWR1bGVkU291cmNlTm9kZS5jcHAKQEAgLTQ5LDcgKzQ5LDcgQEAgV1RGX01BS0VfSVNPX0FM
TE9DQVRFRF9JTVBMKEF1ZGlvU2NoZWR1bGVkU291cmNlTm9kZSk7CiAKIGNvbnN0IGRvdWJsZSBB
dWRpb1NjaGVkdWxlZFNvdXJjZU5vZGU6OlVua25vd25UaW1lID0gLTE7CiAKLUF1ZGlvU2NoZWR1
bGVkU291cmNlTm9kZTo6QXVkaW9TY2hlZHVsZWRTb3VyY2VOb2RlKEF1ZGlvQ29udGV4dCYgY29u
dGV4dCwgZmxvYXQgc2FtcGxlUmF0ZSkKK0F1ZGlvU2NoZWR1bGVkU291cmNlTm9kZTo6QXVkaW9T
Y2hlZHVsZWRTb3VyY2VOb2RlKEF1ZGlvQ29udGV4dEJhc2UmIGNvbnRleHQsIGZsb2F0IHNhbXBs
ZVJhdGUpCiAgICAgOiBBdWRpb05vZGUoY29udGV4dCwgc2FtcGxlUmF0ZSkKICAgICAsIEFjdGl2
ZURPTU9iamVjdChjb250ZXh0LnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSkKICAgICAsIG1fZW5k
VGltZShVbmtub3duVGltZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
YXVkaW8vQXVkaW9TY2hlZHVsZWRTb3VyY2VOb2RlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmF1ZGlvL0F1ZGlvU2NoZWR1bGVkU291cmNlTm9kZS5oCmluZGV4IDhjYWRiZTEwYWZkM2E0
ZDdlY2UyMDIyMDI0NDM4N2Y0Y2UxNGMyZTQuLmI0ZDk1ODgwYzFkZjM2NmY4MjFlMWFiZmNmY2E3
N2Q3NjExMGVhM2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8v
QXVkaW9TY2hlZHVsZWRTb3VyY2VOb2RlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJhdWRpby9BdWRpb1NjaGVkdWxlZFNvdXJjZU5vZGUuaApAQCAtNTMsNyArNTMsNyBAQCBwdWJs
aWM6CiAgICAgICAgIEZJTklTSEVEX1NUQVRFID0gMwogICAgIH07CiAgICAgCi0gICAgQXVkaW9T
Y2hlZHVsZWRTb3VyY2VOb2RlKEF1ZGlvQ29udGV4dCYsIGZsb2F0IHNhbXBsZVJhdGUpOworICAg
IEF1ZGlvU2NoZWR1bGVkU291cmNlTm9kZShBdWRpb0NvbnRleHRCYXNlJiwgZmxvYXQgc2FtcGxl
UmF0ZSk7CiAKICAgICBFeGNlcHRpb25Pcjx2b2lkPiBzdGFydExhdGVyKGRvdWJsZSB3aGVuKTsK
ICAgICBFeGNlcHRpb25Pcjx2b2lkPiBzdG9wTGF0ZXIoZG91YmxlIHdoZW4pOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1N1bW1pbmdKdW5jdGlvbi5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvU3VtbWluZ0p1bmN0aW9u
LmNwcAppbmRleCBlZTYwMGE2MjlhMWI4NjljZDlhNWIzZDM3MmFlNDc2YTNlMTI3ZmIwLi5kZDY0
ZmQzZWE4MTMxMWYwMGUwOGMzY2E0MWQ3NDI4ZjFmMWYzODc5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvU3VtbWluZ0p1bmN0aW9uLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvU3VtbWluZ0p1bmN0aW9uLmNwcApA
QCAtMzQsNyArMzQsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLUF1ZGlvU3VtbWluZ0p1
bmN0aW9uOjpBdWRpb1N1bW1pbmdKdW5jdGlvbihBdWRpb0NvbnRleHQmIGNvbnRleHQpCitBdWRp
b1N1bW1pbmdKdW5jdGlvbjo6QXVkaW9TdW1taW5nSnVuY3Rpb24oQXVkaW9Db250ZXh0QmFzZSYg
Y29udGV4dCkKICAgICA6IG1fY29udGV4dChjb250ZXh0KQogICAgICwgbV9yZW5kZXJpbmdTdGF0
ZU5lZWRVcGRhdGluZyhmYWxzZSkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViYXVkaW8vQXVkaW9TdW1taW5nSnVuY3Rpb24uaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViYXVkaW8vQXVkaW9TdW1taW5nSnVuY3Rpb24uaAppbmRleCBjOTRmZjZkNmE1YWVkMTEx
MDIwOGM0NzY0MzgzZDdlNTZmZDg0NjNiLi40Y2JmOGFlOWZiOTUxYjc4MjA3NmIwY2I1MjYxMTZj
MTlkNGFlYzliIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1
ZGlvU3VtbWluZ0p1bmN0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRp
by9BdWRpb1N1bW1pbmdKdW5jdGlvbi5oCkBAIC0zMCwxOCArMzAsMTggQEAKIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCi1jbGFzcyBBdWRpb0NvbnRleHQ7CitjbGFzcyBBdWRpb0NvbnRleHRCYXNl
OwogY2xhc3MgQXVkaW9Ob2RlT3V0cHV0OwogCiAvLyBBbiBBdWRpb1N1bW1pbmdKdW5jdGlvbiBy
ZXByZXNlbnRzIGEgcG9pbnQgd2hlcmUgemVybywgb25lLCBvciBtb3JlIEF1ZGlvTm9kZU91dHB1
dHMgY29ubmVjdC4KIAogY2xhc3MgQXVkaW9TdW1taW5nSnVuY3Rpb24gewogcHVibGljOgotICAg
IGV4cGxpY2l0IEF1ZGlvU3VtbWluZ0p1bmN0aW9uKEF1ZGlvQ29udGV4dCYpOworICAgIGV4cGxp
Y2l0IEF1ZGlvU3VtbWluZ0p1bmN0aW9uKEF1ZGlvQ29udGV4dEJhc2UmKTsKICAgICB2aXJ0dWFs
IH5BdWRpb1N1bW1pbmdKdW5jdGlvbigpOwogCiAgICAgLy8gQ2FuIGJlIGNhbGxlZCBmcm9tIGFu
eSB0aHJlYWQuCi0gICAgQXVkaW9Db250ZXh0JiBjb250ZXh0KCkgeyByZXR1cm4gbV9jb250ZXh0
LmdldCgpOyB9CisgICAgQXVkaW9Db250ZXh0QmFzZSYgY29udGV4dCgpIHsgcmV0dXJuIG1fY29u
dGV4dDsgfQogCiAgICAgLy8gVGhpcyBtdXN0IGJlIGNhbGxlZCB3aGVuZXZlciB3ZSBtb2RpZnkg
bV9vdXRwdXRzLgogICAgIHZvaWQgY2hhbmdlZE91dHB1dHMoKTsKQEAgLTYwLDcgKzYwLDcgQEAg
cHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBkaWRVcGRhdGUoKSA9IDA7CiAKIHByb3RlY3RlZDoK
LSAgICBSZWY8QXVkaW9Db250ZXh0PiBtX2NvbnRleHQ7CisgICAgUmVmPEF1ZGlvQ29udGV4dEJh
c2U+IG1fY29udGV4dDsKIAogICAgIC8vIG1fb3V0cHV0cyBjb250YWlucyB0aGUgQXVkaW9Ob2Rl
T3V0cHV0cyByZXByZXNlbnRpbmcgY3VycmVudCBjb25uZWN0aW9ucyB3aGljaCBhcmUgbm90IGRp
c2FibGVkLgogICAgIC8vIFRoZSByZW5kZXJpbmcgY29kZSBzaG91bGQgbmV2ZXIgdXNlIHRoaXMg
ZGlyZWN0bHksIGJ1dCBpbnN0ZWFkIHVzZXMgbV9yZW5kZXJpbmdPdXRwdXRzLgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9CaXF1YWRGaWx0ZXJOb2RlLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQmlxdWFkRmlsdGVyTm9kZS5jcHAKaW5k
ZXggNGE4MjU1ZTZmMGFmMDc2NzEzOGU0Njg5OGY4YjYzNmFiMmQ3NTZlNS4uZGRlMDc3M2Q0NzNk
MjcyMmE1YjUzZGM4NjkwNmQzOTM3MGNiZmY0MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJhdWRpby9CaXF1YWRGaWx0ZXJOb2RlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmF1ZGlvL0JpcXVhZEZpbHRlck5vZGUuY3BwCkBAIC0zMyw3ICszMyw3IEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogV1RGX01BS0VfSVNPX0FMTE9DQVRFRF9JTVBMKEJpcXVh
ZEZpbHRlck5vZGUpOwogCi1CaXF1YWRGaWx0ZXJOb2RlOjpCaXF1YWRGaWx0ZXJOb2RlKEF1ZGlv
Q29udGV4dCYgY29udGV4dCwgZmxvYXQgc2FtcGxlUmF0ZSkKK0JpcXVhZEZpbHRlck5vZGU6OkJp
cXVhZEZpbHRlck5vZGUoQXVkaW9Db250ZXh0QmFzZSYgY29udGV4dCwgZmxvYXQgc2FtcGxlUmF0
ZSkKICAgICA6IEF1ZGlvQmFzaWNQcm9jZXNzb3JOb2RlKGNvbnRleHQsIHNhbXBsZVJhdGUpCiB7
CiAgICAgc2V0Tm9kZVR5cGUoTm9kZVR5cGVCaXF1YWRGaWx0ZXIpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9CaXF1YWRGaWx0ZXJOb2RlLmggYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0JpcXVhZEZpbHRlck5vZGUuaAppbmRleCA4MDk0ZDkx
ZWFiM2I5MmIxNDhhODYyNDA5MzI2ZjY1ZWQ5YjkwMTNjLi5hYzhkOTQ3YTEwZjdhZTZhMzNmMDNh
MmQwOTg0MGM4ZTZjMWU1NGNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmF1ZGlvL0JpcXVhZEZpbHRlck5vZGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmF1ZGlvL0JpcXVhZEZpbHRlck5vZGUuaApAQCAtMzQsNyArMzQsNyBAQCBjbGFzcyBBdWRpb1Bh
cmFtOwogY2xhc3MgQmlxdWFkRmlsdGVyTm9kZSBmaW5hbCA6IHB1YmxpYyBBdWRpb0Jhc2ljUHJv
Y2Vzc29yTm9kZSB7CiAgICAgV1RGX01BS0VfSVNPX0FMTE9DQVRFRChCaXF1YWRGaWx0ZXJOb2Rl
KTsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPEJpcXVhZEZpbHRlck5vZGU+IGNyZWF0ZShBdWRp
b0NvbnRleHQmIGNvbnRleHQsIGZsb2F0IHNhbXBsZVJhdGUpCisgICAgc3RhdGljIFJlZjxCaXF1
YWRGaWx0ZXJOb2RlPiBjcmVhdGUoQXVkaW9Db250ZXh0QmFzZSYgY29udGV4dCwgZmxvYXQgc2Ft
cGxlUmF0ZSkKICAgICB7CiAgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEJpcXVhZEZpbHRl
ck5vZGUoY29udGV4dCwgc2FtcGxlUmF0ZSkpOwogICAgIH0KQEAgLTUyLDcgKzUyLDcgQEAgcHVi
bGljOgogICAgIHZvaWQgZ2V0RnJlcXVlbmN5UmVzcG9uc2UoY29uc3QgUmVmUHRyPEZsb2F0MzJB
cnJheT4mIGZyZXF1ZW5jeUh6LCBjb25zdCBSZWZQdHI8RmxvYXQzMkFycmF5PiYgbWFnUmVzcG9u
c2UsIGNvbnN0IFJlZlB0cjxGbG9hdDMyQXJyYXk+JiBwaGFzZVJlc3BvbnNlKTsKIAogcHJpdmF0
ZToKLSAgICBCaXF1YWRGaWx0ZXJOb2RlKEF1ZGlvQ29udGV4dCYsIGZsb2F0IHNhbXBsZVJhdGUp
OworICAgIEJpcXVhZEZpbHRlck5vZGUoQXVkaW9Db250ZXh0QmFzZSYsIGZsb2F0IHNhbXBsZVJh
dGUpOwogCiAgICAgQmlxdWFkUHJvY2Vzc29yKiBiaXF1YWRQcm9jZXNzb3IoKSB7IHJldHVybiBz
dGF0aWNfY2FzdDxCaXF1YWRQcm9jZXNzb3IqPihwcm9jZXNzb3IoKSk7IH0KIH07CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0JpcXVhZFByb2Nlc3Nvci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0JpcXVhZFByb2Nlc3Nvci5jcHAKaW5k
ZXggZTg0Yjk4MDM1NjcwZmIxZGNjMzI3MDk2NjNkMmIzOTA1NTJlNjVlYi4uMmY2MDY3YTcyZGNl
YzMzYzNmMGQwZGU5ZDk3ZTRiNjk3Njk2MjZhOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJhdWRpby9CaXF1YWRQcm9jZXNzb3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViYXVkaW8vQmlxdWFkUHJvY2Vzc29yLmNwcApAQCAtMzIsNyArMzIsNyBAQAog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgCi1CaXF1YWRQcm9jZXNzb3I6OkJpcXVhZFByb2Nl
c3NvcihBdWRpb0NvbnRleHQmIGNvbnRleHQsIGZsb2F0IHNhbXBsZVJhdGUsIHNpemVfdCBudW1i
ZXJPZkNoYW5uZWxzLCBib29sIGF1dG9Jbml0aWFsaXplKQorQmlxdWFkUHJvY2Vzc29yOjpCaXF1
YWRQcm9jZXNzb3IoQXVkaW9Db250ZXh0QmFzZSYgY29udGV4dCwgZmxvYXQgc2FtcGxlUmF0ZSwg
c2l6ZV90IG51bWJlck9mQ2hhbm5lbHMsIGJvb2wgYXV0b0luaXRpYWxpemUpCiAgICAgOiBBdWRp
b0RTUEtlcm5lbFByb2Nlc3NvcihzYW1wbGVSYXRlLCBudW1iZXJPZkNoYW5uZWxzKQogICAgICwg
bV90eXBlKEJpcXVhZEZpbHRlclR5cGU6Okxvd3Bhc3MpCiAgICAgLCBtX3BhcmFtZXRlcjEoMCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQmlxdWFkUHJvY2Vz
c29yLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0JpcXVhZFByb2Nlc3Nvci5o
CmluZGV4IGFkYmVlYzQzMDI1YWYwM2FmMTdlMTE1MWFiYmVmZmVlZWU3N2Y2MzIuLmRjMzA2YWI1
MTdiMzI0YmIxY2M1NmEyODhkMGU0OWYxYThlNGU5MDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViYXVkaW8vQmlxdWFkUHJvY2Vzc29yLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJhdWRpby9CaXF1YWRQcm9jZXNzb3IuaApAQCAtNTAsNyArNTAsNyBAQCBl
bnVtIGNsYXNzIEJpcXVhZEZpbHRlclR5cGUgewogY2xhc3MgQmlxdWFkUHJvY2Vzc29yIGZpbmFs
IDogcHVibGljIEF1ZGlvRFNQS2VybmVsUHJvY2Vzc29yIHsKICAgICBXVEZfTUFLRV9GQVNUX0FM
TE9DQVRFRDsKIHB1YmxpYzoKLSAgICBCaXF1YWRQcm9jZXNzb3IoQXVkaW9Db250ZXh0JiwgZmxv
YXQgc2FtcGxlUmF0ZSwgc2l6ZV90IG51bWJlck9mQ2hhbm5lbHMsIGJvb2wgYXV0b0luaXRpYWxp
emUpOworICAgIEJpcXVhZFByb2Nlc3NvcihBdWRpb0NvbnRleHRCYXNlJiwgZmxvYXQgc2FtcGxl
UmF0ZSwgc2l6ZV90IG51bWJlck9mQ2hhbm5lbHMsIGJvb2wgYXV0b0luaXRpYWxpemUpOwogCiAg
ICAgdmlydHVhbCB+QmlxdWFkUHJvY2Vzc29yKCk7CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0NoYW5uZWxNZXJnZXJOb2RlLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQ2hhbm5lbE1lcmdlck5vZGUuY3BwCmluZGV4IGRmNTBm
MjY4NzM2OGFhNWMzMjk1NDE0ODE1MDc3N2EwMjkxNzMyZDguLmRlMjhhZWE3ZDJjNDM0Mjg5NmIx
MDRiYTg5NDFmZGViNzk4YWRjM2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViYXVkaW8vQ2hhbm5lbE1lcmdlck5vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViYXVkaW8vQ2hhbm5lbE1lcmdlck5vZGUuY3BwCkBAIC00Myw3ICs0Myw3IEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAogV1RGX01BS0VfSVNPX0FMTE9DQVRFRF9JTVBMKENoYW5uZWxNZXJn
ZXJOb2RlKTsKIAotUmVmUHRyPENoYW5uZWxNZXJnZXJOb2RlPiBDaGFubmVsTWVyZ2VyTm9kZTo6
Y3JlYXRlKEF1ZGlvQ29udGV4dCYgY29udGV4dCwgZmxvYXQgc2FtcGxlUmF0ZSwgdW5zaWduZWQg
bnVtYmVyT2ZJbnB1dHMpCitSZWZQdHI8Q2hhbm5lbE1lcmdlck5vZGU+IENoYW5uZWxNZXJnZXJO
b2RlOjpjcmVhdGUoQXVkaW9Db250ZXh0QmFzZSYgY29udGV4dCwgZmxvYXQgc2FtcGxlUmF0ZSwg
dW5zaWduZWQgbnVtYmVyT2ZJbnB1dHMpCiB7CiAgICAgaWYgKCFudW1iZXJPZklucHV0cyB8fCBu
dW1iZXJPZklucHV0cyA+IEF1ZGlvQ29udGV4dDo6bWF4TnVtYmVyT2ZDaGFubmVscygpKQogICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTUxLDcgKzUxLDcgQEAgUmVmUHRyPENoYW5uZWxNZXJn
ZXJOb2RlPiBDaGFubmVsTWVyZ2VyTm9kZTo6Y3JlYXRlKEF1ZGlvQ29udGV4dCYgY29udGV4dCwg
ZmxvYXQKICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBDaGFubmVsTWVyZ2VyTm9kZShjb250ZXh0
LCBzYW1wbGVSYXRlLCBudW1iZXJPZklucHV0cykpOyAgICAgIAogfQogCi1DaGFubmVsTWVyZ2Vy
Tm9kZTo6Q2hhbm5lbE1lcmdlck5vZGUoQXVkaW9Db250ZXh0JiBjb250ZXh0LCBmbG9hdCBzYW1w
bGVSYXRlLCB1bnNpZ25lZCBudW1iZXJPZklucHV0cykKK0NoYW5uZWxNZXJnZXJOb2RlOjpDaGFu
bmVsTWVyZ2VyTm9kZShBdWRpb0NvbnRleHRCYXNlJiBjb250ZXh0LCBmbG9hdCBzYW1wbGVSYXRl
LCB1bnNpZ25lZCBudW1iZXJPZklucHV0cykKICAgICA6IEF1ZGlvTm9kZShjb250ZXh0LCBzYW1w
bGVSYXRlKQogICAgICwgbV9kZXNpcmVkTnVtYmVyT2ZPdXRwdXRDaGFubmVscyhEZWZhdWx0TnVt
YmVyT2ZPdXRwdXRDaGFubmVscykKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViYXVkaW8vQ2hhbm5lbE1lcmdlck5vZGUuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViYXVkaW8vQ2hhbm5lbE1lcmdlck5vZGUuaAppbmRleCA2NjYzNmVlZDZmN2VlODU1MWU5MmNj
ODc3YTA0YzVjYzNlNWZkZjFkLi42Mjk3NmUwNTA3MzQxZmY5MjY2MGE2YWYwZGI1OGFlYmE1NTc2
ODFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0NoYW5uZWxN
ZXJnZXJOb2RlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9DaGFubmVs
TWVyZ2VyTm9kZS5oCkBAIC0zNyw3ICszNyw3IEBAIGNsYXNzIEF1ZGlvQ29udGV4dDsKIGNsYXNz
IENoYW5uZWxNZXJnZXJOb2RlIGZpbmFsIDogcHVibGljIEF1ZGlvTm9kZSB7CiAgICAgV1RGX01B
S0VfSVNPX0FMTE9DQVRFRChDaGFubmVsTWVyZ2VyTm9kZSk7CiBwdWJsaWM6Ci0gICAgc3RhdGlj
IFJlZlB0cjxDaGFubmVsTWVyZ2VyTm9kZT4gY3JlYXRlKEF1ZGlvQ29udGV4dCYsIGZsb2F0IHNh
bXBsZVJhdGUsIHVuc2lnbmVkIG51bWJlck9mSW5wdXRzKTsKKyAgICBzdGF0aWMgUmVmUHRyPENo
YW5uZWxNZXJnZXJOb2RlPiBjcmVhdGUoQXVkaW9Db250ZXh0QmFzZSYsIGZsb2F0IHNhbXBsZVJh
dGUsIHVuc2lnbmVkIG51bWJlck9mSW5wdXRzKTsKIAogICAgIC8vIEF1ZGlvTm9kZQogICAgIHZv
aWQgcHJvY2VzcyhzaXplX3QgZnJhbWVzVG9Qcm9jZXNzKSBvdmVycmlkZTsKQEAgLTUyLDcgKzUy
LDcgQEAgcHJpdmF0ZToKICAgICBkb3VibGUgdGFpbFRpbWUoKSBjb25zdCBvdmVycmlkZSB7IHJl
dHVybiAwOyB9CiAgICAgZG91YmxlIGxhdGVuY3lUaW1lKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1
cm4gMDsgfQogCi0gICAgQ2hhbm5lbE1lcmdlck5vZGUoQXVkaW9Db250ZXh0JiwgZmxvYXQgc2Ft
cGxlUmF0ZSwgdW5zaWduZWQgbnVtYmVyT2ZJbnB1dHMpOworICAgIENoYW5uZWxNZXJnZXJOb2Rl
KEF1ZGlvQ29udGV4dEJhc2UmLCBmbG9hdCBzYW1wbGVSYXRlLCB1bnNpZ25lZCBudW1iZXJPZklu
cHV0cyk7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0NoYW5uZWxTcGxpdHRlck5vZGUuY3BwIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9DaGFubmVsU3BsaXR0ZXJOb2RlLmNwcAppbmRleCA4
MmY2OWEwNGY5OTkyNjFkNThjMTUyYmZjNjAyYTM2NjA5NjA5MWI5Li5mNTU1M2QwYzgzNWEzOTJk
M2NlZWRlOTJlZTVmOGI4YzkyOGY5ZGIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmF1ZGlvL0NoYW5uZWxTcGxpdHRlck5vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViYXVkaW8vQ2hhbm5lbFNwbGl0dGVyTm9kZS5jcHAKQEAgLTM3LDcgKzM3LDcg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBXVEZfTUFLRV9JU09fQUxMT0NBVEVEX0lNUEwoQ2hh
bm5lbFNwbGl0dGVyTm9kZSk7CiAgICAgCi1SZWZQdHI8Q2hhbm5lbFNwbGl0dGVyTm9kZT4gQ2hh
bm5lbFNwbGl0dGVyTm9kZTo6Y3JlYXRlKEF1ZGlvQ29udGV4dCYgY29udGV4dCwgZmxvYXQgc2Ft
cGxlUmF0ZSwgdW5zaWduZWQgbnVtYmVyT2ZPdXRwdXRzKQorUmVmUHRyPENoYW5uZWxTcGxpdHRl
ck5vZGU+IENoYW5uZWxTcGxpdHRlck5vZGU6OmNyZWF0ZShBdWRpb0NvbnRleHRCYXNlJiBjb250
ZXh0LCBmbG9hdCBzYW1wbGVSYXRlLCB1bnNpZ25lZCBudW1iZXJPZk91dHB1dHMpCiB7CiAgICAg
aWYgKCFudW1iZXJPZk91dHB1dHMgfHwgbnVtYmVyT2ZPdXRwdXRzID4gQXVkaW9Db250ZXh0Ojpt
YXhOdW1iZXJPZkNoYW5uZWxzKCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwpAQCAtNDUsNyAr
NDUsNyBAQCBSZWZQdHI8Q2hhbm5lbFNwbGl0dGVyTm9kZT4gQ2hhbm5lbFNwbGl0dGVyTm9kZTo6
Y3JlYXRlKEF1ZGlvQ29udGV4dCYgY29udGV4dCwgZgogICAgIHJldHVybiBhZG9wdFJlZigqbmV3
IENoYW5uZWxTcGxpdHRlck5vZGUoY29udGV4dCwgc2FtcGxlUmF0ZSwgbnVtYmVyT2ZPdXRwdXRz
KSk7ICAgICAgCiB9CiAKLUNoYW5uZWxTcGxpdHRlck5vZGU6OkNoYW5uZWxTcGxpdHRlck5vZGUo
QXVkaW9Db250ZXh0JiBjb250ZXh0LCBmbG9hdCBzYW1wbGVSYXRlLCB1bnNpZ25lZCBudW1iZXJP
Zk91dHB1dHMpCitDaGFubmVsU3BsaXR0ZXJOb2RlOjpDaGFubmVsU3BsaXR0ZXJOb2RlKEF1ZGlv
Q29udGV4dEJhc2UmIGNvbnRleHQsIGZsb2F0IHNhbXBsZVJhdGUsIHVuc2lnbmVkIG51bWJlck9m
T3V0cHV0cykKICAgICA6IEF1ZGlvTm9kZShjb250ZXh0LCBzYW1wbGVSYXRlKQogewogICAgIHNl
dE5vZGVUeXBlKE5vZGVUeXBlQ2hhbm5lbFNwbGl0dGVyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQ2hhbm5lbFNwbGl0dGVyTm9kZS5oIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJhdWRpby9DaGFubmVsU3BsaXR0ZXJOb2RlLmgKaW5kZXggOGQ5ODMy
ODEyMzdkZDFkMGZjZjE0NzBhMzhiMDAzZmU0MjY2YjUxZS4uMTNkOGQ5ODBkYWE3NzMzMDRmMTY5
MDVlOTU0OGE0MjBhZTNlZTQ1YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJhdWRpby9DaGFubmVsU3BsaXR0ZXJOb2RlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJhdWRpby9DaGFubmVsU3BsaXR0ZXJOb2RlLmgKQEAgLTMzLDcgKzMzLDcgQEAgY2xhc3Mg
QXVkaW9Db250ZXh0OwogY2xhc3MgQ2hhbm5lbFNwbGl0dGVyTm9kZSBmaW5hbCA6IHB1YmxpYyBB
dWRpb05vZGUgewogICAgIFdURl9NQUtFX0lTT19BTExPQ0FURUQoQ2hhbm5lbFNwbGl0dGVyTm9k
ZSk7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZlB0cjxDaGFubmVsU3BsaXR0ZXJOb2RlPiBjcmVh
dGUoQXVkaW9Db250ZXh0JiwgZmxvYXQgc2FtcGxlUmF0ZSwgdW5zaWduZWQgbnVtYmVyT2ZPdXRw
dXRzKTsKKyAgICBzdGF0aWMgUmVmUHRyPENoYW5uZWxTcGxpdHRlck5vZGU+IGNyZWF0ZShBdWRp
b0NvbnRleHRCYXNlJiwgZmxvYXQgc2FtcGxlUmF0ZSwgdW5zaWduZWQgbnVtYmVyT2ZPdXRwdXRz
KTsKIAogICAgIC8vIEF1ZGlvTm9kZQogICAgIHZvaWQgcHJvY2VzcyhzaXplX3QgZnJhbWVzVG9Q
cm9jZXNzKSBvdmVycmlkZTsKQEAgLTQzLDcgKzQzLDcgQEAgcHJpdmF0ZToKICAgICBkb3VibGUg
dGFpbFRpbWUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiAwOyB9CiAgICAgZG91YmxlIGxhdGVu
Y3lUaW1lKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gMDsgfQogCi0gICAgQ2hhbm5lbFNwbGl0
dGVyTm9kZShBdWRpb0NvbnRleHQmLCBmbG9hdCBzYW1wbGVSYXRlLCB1bnNpZ25lZCBudW1iZXJP
Zk91dHB1dHMpOworICAgIENoYW5uZWxTcGxpdHRlck5vZGUoQXVkaW9Db250ZXh0QmFzZSYsIGZs
b2F0IHNhbXBsZVJhdGUsIHVuc2lnbmVkIG51bWJlck9mT3V0cHV0cyk7CiB9OwogCiB9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1
ZGlvL0NvbnZvbHZlck5vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9D
b252b2x2ZXJOb2RlLmNwcAppbmRleCBjYzk3MmYxMGRiZDdhYmZmNzNmNzkzY2ZhY2M3YzQwMDhh
NzIzNDQ3Li5lMWY1ZWI4MTU2MGVjMmU5MmI4MzU4MzZjODRiMTgxOTQzM2FmYTRmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0NvbnZvbHZlck5vZGUuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQ29udm9sdmVyTm9kZS5jcHAKQEAg
LTQ3LDcgKzQ3LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBXVEZfTUFLRV9JU09fQUxMT0NB
VEVEX0lNUEwoQ29udm9sdmVyTm9kZSk7CiAKLUNvbnZvbHZlck5vZGU6OkNvbnZvbHZlck5vZGUo
QXVkaW9Db250ZXh0JiBjb250ZXh0LCBmbG9hdCBzYW1wbGVSYXRlKQorQ29udm9sdmVyTm9kZTo6
Q29udm9sdmVyTm9kZShBdWRpb0NvbnRleHRCYXNlJiBjb250ZXh0LCBmbG9hdCBzYW1wbGVSYXRl
KQogICAgIDogQXVkaW9Ob2RlKGNvbnRleHQsIHNhbXBsZVJhdGUpCiB7CiAgICAgc2V0Tm9kZVR5
cGUoTm9kZVR5cGVDb252b2x2ZXIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJhdWRpby9Db252b2x2ZXJOb2RlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1
ZGlvL0NvbnZvbHZlck5vZGUuaAppbmRleCA2NGJmZWJlZDJkODdlNzRjMzNhZGZhYzkzNDlkMWI5
MjZlMGY2NmMzLi4zMWNlYzFlY2M3ZjBlMDA0NWVmYTc0ZmJlZjM2MDY4ZGRiYjFmZGZjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0NvbnZvbHZlck5vZGUuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0NvbnZvbHZlck5vZGUuaApAQCAt
MzUsNyArMzUsNyBAQCBjbGFzcyBSZXZlcmI7CiBjbGFzcyBDb252b2x2ZXJOb2RlIGZpbmFsIDog
cHVibGljIEF1ZGlvTm9kZSB7CiAgICAgV1RGX01BS0VfSVNPX0FMTE9DQVRFRChDb252b2x2ZXJO
b2RlKTsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPENvbnZvbHZlck5vZGU+IGNyZWF0ZShBdWRp
b0NvbnRleHQmIGNvbnRleHQsIGZsb2F0IHNhbXBsZVJhdGUpCisgICAgc3RhdGljIFJlZjxDb252
b2x2ZXJOb2RlPiBjcmVhdGUoQXVkaW9Db250ZXh0QmFzZSYgY29udGV4dCwgZmxvYXQgc2FtcGxl
UmF0ZSkKICAgICB7CiAgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IENvbnZvbHZlck5vZGUo
Y29udGV4dCwgc2FtcGxlUmF0ZSkpOwogICAgIH0KQEAgLTQ5LDcgKzQ5LDcgQEAgcHVibGljOgog
ICAgIHZvaWQgc2V0Tm9ybWFsaXplKGJvb2wgbm9ybWFsaXplKSB7IG1fbm9ybWFsaXplID0gbm9y
bWFsaXplOyB9CiAKIHByaXZhdGU6Ci0gICAgQ29udm9sdmVyTm9kZShBdWRpb0NvbnRleHQmLCBm
bG9hdCBzYW1wbGVSYXRlKTsKKyAgICBDb252b2x2ZXJOb2RlKEF1ZGlvQ29udGV4dEJhc2UmLCBm
bG9hdCBzYW1wbGVSYXRlKTsKIAogICAgIGRvdWJsZSB0YWlsVGltZSgpIGNvbnN0IGZpbmFsOwog
ICAgIGRvdWJsZSBsYXRlbmN5VGltZSgpIGNvbnN0IGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9EZWZhdWx0QXVkaW9EZXN0aW5hdGlvbk5vZGUuY3Bw
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9EZWZhdWx0QXVkaW9EZXN0aW5hdGlv
bk5vZGUuY3BwCmluZGV4IDE3NTlhZTRhNWE2MzViYzA1OGUzMGMzNjVjMTM0NGZiYjM5NzllMTUu
LjA3ZWI5YTQxYjVjYzhlODM5MDlhZTRiNmU2MzRlM2NhOWJmNTM3ZWEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vRGVmYXVsdEF1ZGlvRGVzdGluYXRpb25Ob2Rl
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0RlZmF1bHRBdWRpb0Rl
c3RpbmF0aW9uTm9kZS5jcHAKQEAgLTQzLDcgKzQzLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
CiBXVEZfTUFLRV9JU09fQUxMT0NBVEVEX0lNUEwoRGVmYXVsdEF1ZGlvRGVzdGluYXRpb25Ob2Rl
KTsKICAgICAKLURlZmF1bHRBdWRpb0Rlc3RpbmF0aW9uTm9kZTo6RGVmYXVsdEF1ZGlvRGVzdGlu
YXRpb25Ob2RlKEF1ZGlvQ29udGV4dCYgY29udGV4dCkKK0RlZmF1bHRBdWRpb0Rlc3RpbmF0aW9u
Tm9kZTo6RGVmYXVsdEF1ZGlvRGVzdGluYXRpb25Ob2RlKEF1ZGlvQ29udGV4dEJhc2UmIGNvbnRl
eHQpCiAgICAgOiBBdWRpb0Rlc3RpbmF0aW9uTm9kZShjb250ZXh0LCBBdWRpb0Rlc3RpbmF0aW9u
OjpoYXJkd2FyZVNhbXBsZVJhdGUoKSkKIHsKICAgICAvLyBOb2RlLXNwZWNpZmljIGRlZmF1bHQg
bWl4aW5nIHJ1bGVzLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRp
by9EZWZhdWx0QXVkaW9EZXN0aW5hdGlvbk5vZGUuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViYXVkaW8vRGVmYXVsdEF1ZGlvRGVzdGluYXRpb25Ob2RlLmgKaW5kZXggNmZkOTVjMGYzMDEx
NGNkZTMyYzI3ZmExOGE2MWFlMmNkZTUxMjhmYy4uOTZjODM3Yzk5MzRlYjAzYmYwNGI0ZGUzOWJj
NDJlZmZkZmRlZThlMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRp
by9EZWZhdWx0QXVkaW9EZXN0aW5hdGlvbk5vZGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmF1ZGlvL0RlZmF1bHRBdWRpb0Rlc3RpbmF0aW9uTm9kZS5oCkBAIC0zMyw3ICszMyw3
IEBAIGNsYXNzIEF1ZGlvRGVzdGluYXRpb247CiBjbGFzcyBEZWZhdWx0QXVkaW9EZXN0aW5hdGlv
bk5vZGUgZmluYWwgOiBwdWJsaWMgQXVkaW9EZXN0aW5hdGlvbk5vZGUgewogICAgIFdURl9NQUtF
X0lTT19BTExPQ0FURUQoRGVmYXVsdEF1ZGlvRGVzdGluYXRpb25Ob2RlKTsKIHB1YmxpYzoKLSAg
ICBzdGF0aWMgUmVmPERlZmF1bHRBdWRpb0Rlc3RpbmF0aW9uTm9kZT4gY3JlYXRlKEF1ZGlvQ29u
dGV4dCYgY29udGV4dCkKKyAgICBzdGF0aWMgUmVmPERlZmF1bHRBdWRpb0Rlc3RpbmF0aW9uTm9k
ZT4gY3JlYXRlKEF1ZGlvQ29udGV4dEJhc2UmIGNvbnRleHQpCiAgICAgewogICAgICAgICByZXR1
cm4gYWRvcHRSZWYoKm5ldyBEZWZhdWx0QXVkaW9EZXN0aW5hdGlvbk5vZGUoY29udGV4dCkpOyAg
ICAgCiAgICAgfQpAQCAtNDEsNyArNDEsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB+RGVmYXVs
dEF1ZGlvRGVzdGluYXRpb25Ob2RlKCk7CiAgICAgCiBwcml2YXRlOgotICAgIGV4cGxpY2l0IERl
ZmF1bHRBdWRpb0Rlc3RpbmF0aW9uTm9kZShBdWRpb0NvbnRleHQmKTsKKyAgICBleHBsaWNpdCBE
ZWZhdWx0QXVkaW9EZXN0aW5hdGlvbk5vZGUoQXVkaW9Db250ZXh0QmFzZSYpOwogICAgIHZvaWQg
Y3JlYXRlRGVzdGluYXRpb24oKTsKIAogICAgIHZvaWQgaW5pdGlhbGl6ZSgpIGZpbmFsOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9EZWxheU5vZGUuY3BwIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9EZWxheU5vZGUuY3BwCmluZGV4IDgxYmQ3
ZDE5YjI3ZTc0MWI1MGY2Zjg0ZTUxZjdjZTI1NTc4MDJiOTMuLjQwNTI3YzgxZjlmNWJjNTZiY2Y0
ZTcwYzUxNmNiYzE5ZTViZTFlOGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViYXVkaW8vRGVsYXlOb2RlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1
ZGlvL0RlbGF5Tm9kZS5jcHAKQEAgLTM3LDE0ICszNywxNCBAQCBXVEZfTUFLRV9JU09fQUxMT0NB
VEVEX0lNUEwoRGVsYXlOb2RlKTsKIAogY29uc3QgZG91YmxlIG1heGltdW1BbGxvd2VkRGVsYXlU
aW1lID0gMTgwOwogCi1pbmxpbmUgRGVsYXlOb2RlOjpEZWxheU5vZGUoQXVkaW9Db250ZXh0JiBj
b250ZXh0LCBmbG9hdCBzYW1wbGVSYXRlLCBkb3VibGUgbWF4RGVsYXlUaW1lKQoraW5saW5lIERl
bGF5Tm9kZTo6RGVsYXlOb2RlKEF1ZGlvQ29udGV4dEJhc2UmIGNvbnRleHQsIGZsb2F0IHNhbXBs
ZVJhdGUsIGRvdWJsZSBtYXhEZWxheVRpbWUpCiAgICAgOiBBdWRpb0Jhc2ljUHJvY2Vzc29yTm9k
ZShjb250ZXh0LCBzYW1wbGVSYXRlKQogewogICAgIHNldE5vZGVUeXBlKE5vZGVUeXBlRGVsYXkp
OwogICAgIG1fcHJvY2Vzc29yID0gbWFrZVVuaXF1ZTxEZWxheVByb2Nlc3Nvcj4oY29udGV4dCwg
c2FtcGxlUmF0ZSwgMSwgbWF4RGVsYXlUaW1lKTsKIH0KIAotRXhjZXB0aW9uT3I8UmVmPERlbGF5
Tm9kZT4+IERlbGF5Tm9kZTo6Y3JlYXRlKEF1ZGlvQ29udGV4dCYgY29udGV4dCwgZmxvYXQgc2Ft
cGxlUmF0ZSwgZG91YmxlIG1heERlbGF5VGltZSkKK0V4Y2VwdGlvbk9yPFJlZjxEZWxheU5vZGU+
PiBEZWxheU5vZGU6OmNyZWF0ZShBdWRpb0NvbnRleHRCYXNlJiBjb250ZXh0LCBmbG9hdCBzYW1w
bGVSYXRlLCBkb3VibGUgbWF4RGVsYXlUaW1lKQogewogICAgIGlmIChtYXhEZWxheVRpbWUgPD0g
MCB8fCBtYXhEZWxheVRpbWUgPj0gbWF4aW11bUFsbG93ZWREZWxheVRpbWUpCiAgICAgICAgIHJl
dHVybiBFeGNlcHRpb24geyBOb3RTdXBwb3J0ZWRFcnJvciB9OwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9EZWxheU5vZGUuaCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViYXVkaW8vRGVsYXlOb2RlLmgKaW5kZXggYzllY2FkOWY5ZmRjNTFjNDdjNTJjM2Ni
ODY4NzBmZDg0MTFiOWZmYS4uYjZhZmRkMGY5MzA3MThiNDIzMjMxZjJmNmNmOTAwNTk5MTk5NzAx
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9EZWxheU5vZGUu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0RlbGF5Tm9kZS5oCkBAIC0z
MSwxMiArMzEsMTIgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgRGVsYXlOb2RlIGZpbmFs
IDogcHVibGljIEF1ZGlvQmFzaWNQcm9jZXNzb3JOb2RlIHsKICAgICBXVEZfTUFLRV9JU09fQUxM
T0NBVEVEKERlbGF5Tm9kZSk7CiBwdWJsaWM6Ci0gICAgc3RhdGljIEV4Y2VwdGlvbk9yPFJlZjxE
ZWxheU5vZGU+PiBjcmVhdGUoQXVkaW9Db250ZXh0JiwgZmxvYXQgc2FtcGxlUmF0ZSwgZG91Ymxl
IG1heERlbGF5VGltZSk7CisgICAgc3RhdGljIEV4Y2VwdGlvbk9yPFJlZjxEZWxheU5vZGU+PiBj
cmVhdGUoQXVkaW9Db250ZXh0QmFzZSYsIGZsb2F0IHNhbXBsZVJhdGUsIGRvdWJsZSBtYXhEZWxh
eVRpbWUpOwogCiAgICAgQXVkaW9QYXJhbSogZGVsYXlUaW1lKCk7CiAKIHByaXZhdGU6Ci0gICAg
RGVsYXlOb2RlKEF1ZGlvQ29udGV4dCYsIGZsb2F0IHNhbXBsZVJhdGUsIGRvdWJsZSBtYXhEZWxh
eVRpbWUpOworICAgIERlbGF5Tm9kZShBdWRpb0NvbnRleHRCYXNlJiwgZmxvYXQgc2FtcGxlUmF0
ZSwgZG91YmxlIG1heERlbGF5VGltZSk7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0RlbGF5UHJvY2Vzc29y
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vRGVsYXlQcm9jZXNzb3IuY3Bw
CmluZGV4IDEwMzY2ZWY2ZWFmYjZjNDRkYjE5MTI3MWE5OTVkOWU2ZDJhY2JhNjkuLmNiYmZkOWZh
MmZhYTRjZjdlYWUwMWIzMjZjNDZkY2Y1ODdiZmUzYzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViYXVkaW8vRGVsYXlQcm9jZXNzb3IuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViYXVkaW8vRGVsYXlQcm9jZXNzb3IuY3BwCkBAIC0zMiw3ICszMiw3IEBA
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotRGVsYXlQcm9jZXNzb3I6OkRlbGF5UHJvY2Vzc29y
KEF1ZGlvQ29udGV4dCYgY29udGV4dCwgZmxvYXQgc2FtcGxlUmF0ZSwgdW5zaWduZWQgbnVtYmVy
T2ZDaGFubmVscywgZG91YmxlIG1heERlbGF5VGltZSkKK0RlbGF5UHJvY2Vzc29yOjpEZWxheVBy
b2Nlc3NvcihBdWRpb0NvbnRleHRCYXNlJiBjb250ZXh0LCBmbG9hdCBzYW1wbGVSYXRlLCB1bnNp
Z25lZCBudW1iZXJPZkNoYW5uZWxzLCBkb3VibGUgbWF4RGVsYXlUaW1lKQogICAgIDogQXVkaW9E
U1BLZXJuZWxQcm9jZXNzb3Ioc2FtcGxlUmF0ZSwgbnVtYmVyT2ZDaGFubmVscykKICAgICAsIG1f
bWF4RGVsYXlUaW1lKG1heERlbGF5VGltZSkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViYXVkaW8vRGVsYXlQcm9jZXNzb3IuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViYXVkaW8vRGVsYXlQcm9jZXNzb3IuaAppbmRleCA4NWQ5Y2M2ZDdmZGUxNmNlZmQ3OGQ0
Nzk0MjEwZGRkMDgyMzRkZjNmLi5jYmFjNzllY2YwZmUzMzljZjEyZjkzZDRkYjI1YWYwNTE1MmZj
ZWZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0RlbGF5UHJv
Y2Vzc29yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9EZWxheVByb2Nl
c3Nvci5oCkBAIC0zNiw3ICszNiw3IEBAIGNsYXNzIEF1ZGlvRFNQS2VybmVsOwogY2xhc3MgRGVs
YXlQcm9jZXNzb3IgZmluYWwgOiBwdWJsaWMgQXVkaW9EU1BLZXJuZWxQcm9jZXNzb3IgewogICAg
IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgotICAgIERlbGF5UHJvY2Vzc29yKEF1
ZGlvQ29udGV4dCYsIGZsb2F0IHNhbXBsZVJhdGUsIHVuc2lnbmVkIG51bWJlck9mQ2hhbm5lbHMs
IGRvdWJsZSBtYXhEZWxheVRpbWUpOworICAgIERlbGF5UHJvY2Vzc29yKEF1ZGlvQ29udGV4dEJh
c2UmLCBmbG9hdCBzYW1wbGVSYXRlLCB1bnNpZ25lZCBudW1iZXJPZkNoYW5uZWxzLCBkb3VibGUg
bWF4RGVsYXlUaW1lKTsKICAgICB2aXJ0dWFsIH5EZWxheVByb2Nlc3NvcigpOwogICAgIAogICAg
IHN0ZDo6dW5pcXVlX3B0cjxBdWRpb0RTUEtlcm5lbD4gY3JlYXRlS2VybmVsKCkgb3ZlcnJpZGU7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0Rpc3RhbmNlTW9k
ZWxUeXBlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0Rpc3RhbmNlTW9kZWxU
eXBlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uZGZlMTMxODJjYzBhNDRiZGQwNDgwYjcyYWZmZDdiNTU3MDg1MjNk
YgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vRGlz
dGFuY2VNb2RlbFR5cGUuaApAQCAtMCwwICsxLDI3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDIwLCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
ICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBB
UkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTgorICogQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTCisgKiBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9u
Y2UKKworI2luY2x1ZGUgIkRpc3RhbmNlLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmF1ZGlvL0Rpc3RhbmNlTW9kZWxUeXBlLmlkbCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViYXVkaW8vRGlzdGFuY2VNb2RlbFR5cGUuaWRsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmY4ZmZjZmVk
MjJjOGY5NjBkMDRmM2U4NWJlM2RhNThiNzIwNzM3ZmUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0Rpc3RhbmNlTW9kZWxUeXBlLmlkbApAQCAtMCww
ICsxLDMxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwLCBHb29nbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQgQU5ZCisg
KiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04KKyAqIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUworICogU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworWworICAgIENvbmRpdGlvbmFsPVdFQl9BVURJTywKK10g
ZW51bSBEaXN0YW5jZU1vZGVsVHlwZSB7CisgICAgImxpbmVhciIsCisgICAgImludmVyc2UiLAor
ICAgICJleHBvbmVudGlhbCIKK307CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmF1ZGlvL0R5bmFtaWNzQ29tcHJlc3Nvck5vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJhdWRpby9EeW5hbWljc0NvbXByZXNzb3JOb2RlLmNwcAppbmRleCAxNDA5NmQ4ZjBj
NTk2YTUyOTcxNjY2ZWY4MjY3YTAyM2ZkYjQ0YjI5Li5jMzNkMWRlNzJkYzkxZmU4ZDc0ZTc1NDdh
MjM1OTljYTAxZmM0ODViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1
ZGlvL0R5bmFtaWNzQ29tcHJlc3Nvck5vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViYXVkaW8vRHluYW1pY3NDb21wcmVzc29yTm9kZS5jcHAKQEAgLTQxLDcgKzQxLDcgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogCiBXVEZfTUFLRV9JU09fQUxMT0NBVEVEX0lNUEwoRHluYW1p
Y3NDb21wcmVzc29yTm9kZSk7CiAKLUR5bmFtaWNzQ29tcHJlc3Nvck5vZGU6OkR5bmFtaWNzQ29t
cHJlc3Nvck5vZGUoQXVkaW9Db250ZXh0JiBjb250ZXh0LCBmbG9hdCBzYW1wbGVSYXRlKQorRHlu
YW1pY3NDb21wcmVzc29yTm9kZTo6RHluYW1pY3NDb21wcmVzc29yTm9kZShBdWRpb0NvbnRleHRC
YXNlJiBjb250ZXh0LCBmbG9hdCBzYW1wbGVSYXRlKQogICAgIDogQXVkaW9Ob2RlKGNvbnRleHQs
IHNhbXBsZVJhdGUpCiB7CiAgICAgc2V0Tm9kZVR5cGUoTm9kZVR5cGVEeW5hbWljc0NvbXByZXNz
b3IpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9EeW5hbWlj
c0NvbXByZXNzb3JOb2RlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0R5bmFt
aWNzQ29tcHJlc3Nvck5vZGUuaAppbmRleCA0NGNiZmJhYTA1OTcxN2Y2YzM1MDMyMmEyODA0ZTVk
ODYzYTY2ODU3Li5iNzA1M2IyMjE3M2MwMmNhMGQyNmVjZTYxYTE4Yzc3ZWUwNzUyZGZlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0R5bmFtaWNzQ29tcHJlc3Nv
ck5vZGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0R5bmFtaWNzQ29t
cHJlc3Nvck5vZGUuaApAQCAtMzUsNyArMzUsNyBAQCBjbGFzcyBEeW5hbWljc0NvbXByZXNzb3I7
CiBjbGFzcyBEeW5hbWljc0NvbXByZXNzb3JOb2RlIGZpbmFsIDogcHVibGljIEF1ZGlvTm9kZSB7
CiAgICAgV1RGX01BS0VfSVNPX0FMTE9DQVRFRChEeW5hbWljc0NvbXByZXNzb3JOb2RlKTsKIHB1
YmxpYzoKLSAgICBzdGF0aWMgUmVmPER5bmFtaWNzQ29tcHJlc3Nvck5vZGU+IGNyZWF0ZShBdWRp
b0NvbnRleHQmIGNvbnRleHQsIGZsb2F0IHNhbXBsZVJhdGUpCisgICAgc3RhdGljIFJlZjxEeW5h
bWljc0NvbXByZXNzb3JOb2RlPiBjcmVhdGUoQXVkaW9Db250ZXh0QmFzZSYgY29udGV4dCwgZmxv
YXQgc2FtcGxlUmF0ZSkKICAgICB7CiAgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IER5bmFt
aWNzQ29tcHJlc3Nvck5vZGUoY29udGV4dCwgc2FtcGxlUmF0ZSkpOwogICAgIH0KQEAgLTYyLDcg
KzYyLDcgQEAgcHJpdmF0ZToKICAgICBkb3VibGUgdGFpbFRpbWUoKSBjb25zdCBvdmVycmlkZTsK
ICAgICBkb3VibGUgbGF0ZW5jeVRpbWUoKSBjb25zdCBvdmVycmlkZTsKIAotICAgIER5bmFtaWNz
Q29tcHJlc3Nvck5vZGUoQXVkaW9Db250ZXh0JiwgZmxvYXQgc2FtcGxlUmF0ZSk7CisgICAgRHlu
YW1pY3NDb21wcmVzc29yTm9kZShBdWRpb0NvbnRleHRCYXNlJiwgZmxvYXQgc2FtcGxlUmF0ZSk7
CiAKICAgICBzdGQ6OnVuaXF1ZV9wdHI8RHluYW1pY3NDb21wcmVzc29yPiBtX2R5bmFtaWNzQ29t
cHJlc3NvcjsKICAgICBSZWZQdHI8QXVkaW9QYXJhbT4gbV90aHJlc2hvbGQ7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0dhaW5Ob2RlLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vR2Fpbk5vZGUuY3BwCmluZGV4IDI1N2RmMmVjZTIzMzhj
YmNiYWI5ZWQwNTEyMzNjNjRiMWM1N2YyNWQuLjk4NGQxMTk0YmRkNTUyZjM4NGIwZDZkOWJjZWJm
N2RhNDJmZDg2OWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8v
R2Fpbk5vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vR2Fpbk5v
ZGUuY3BwCkBAIC0zNyw3ICszNyw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogV1RGX01BS0Vf
SVNPX0FMTE9DQVRFRF9JTVBMKEdhaW5Ob2RlKTsKIAotR2Fpbk5vZGU6OkdhaW5Ob2RlKEF1ZGlv
Q29udGV4dCYgY29udGV4dCwgZmxvYXQgc2FtcGxlUmF0ZSkKK0dhaW5Ob2RlOjpHYWluTm9kZShB
dWRpb0NvbnRleHRCYXNlJiBjb250ZXh0LCBmbG9hdCBzYW1wbGVSYXRlKQogICAgIDogQXVkaW9O
b2RlKGNvbnRleHQsIHNhbXBsZVJhdGUpCiAgICAgLCBtX2xhc3RHYWluKDEuMCkKICAgICAsIG1f
c2FtcGxlQWNjdXJhdGVHYWluVmFsdWVzKEF1ZGlvTm9kZTo6UHJvY2Vzc2luZ1NpemVJbkZyYW1l
cykgLy8gRklYTUU6IGNhbiBwcm9iYWJseSBzaGFyZSB0ZW1wIGJ1ZmZlciBpbiBjb250ZXh0CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0dhaW5Ob2RlLmggYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0dhaW5Ob2RlLmgKaW5kZXggZmE4NWIwYjlm
ZjU0N2YzMjlmNTY2NWIyYTA1NTc3NGJlMGY3Y2FiOC4uZGNmODU1YTkxYzk1N2E5MDAwYmFmOGI5
OTQzNmFlNzczNzlmYmI1MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJh
dWRpby9HYWluTm9kZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vR2Fp
bk5vZGUuaApAQCAtMzgsNyArMzgsNyBAQCBjbGFzcyBBdWRpb0NvbnRleHQ7CiBjbGFzcyBHYWlu
Tm9kZSBmaW5hbCA6IHB1YmxpYyBBdWRpb05vZGUgewogICAgIFdURl9NQUtFX0lTT19BTExPQ0FU
RUQoR2Fpbk5vZGUpOwogcHVibGljOgotICAgIHN0YXRpYyBSZWY8R2Fpbk5vZGU+IGNyZWF0ZShB
dWRpb0NvbnRleHQmIGNvbnRleHQsIGZsb2F0IHNhbXBsZVJhdGUpCisgICAgc3RhdGljIFJlZjxH
YWluTm9kZT4gY3JlYXRlKEF1ZGlvQ29udGV4dEJhc2UmIGNvbnRleHQsIGZsb2F0IHNhbXBsZVJh
dGUpCiAgICAgewogICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBHYWluTm9kZShjb250ZXh0
LCBzYW1wbGVSYXRlKSk7CiAgICAgfQpAQCAtNTcsNyArNTcsNyBAQCBwcml2YXRlOgogICAgIGRv
dWJsZSB0YWlsVGltZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIDA7IH0KICAgICBkb3VibGUg
bGF0ZW5jeVRpbWUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiAwOyB9CiAKLSAgICBHYWluTm9k
ZShBdWRpb0NvbnRleHQmLCBmbG9hdCBzYW1wbGVSYXRlKTsKKyAgICBHYWluTm9kZShBdWRpb0Nv
bnRleHRCYXNlJiwgZmxvYXQgc2FtcGxlUmF0ZSk7CiAKICAgICBmbG9hdCBtX2xhc3RHYWluOyAv
LyBmb3IgZGUtemlwcGVyaW5nCiAgICAgUmVmUHRyPEF1ZGlvUGFyYW0+IG1fZ2FpbjsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vTWVkaWFFbGVtZW50QXVkaW9T
b3VyY2VOb2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vTWVkaWFFbGVt
ZW50QXVkaW9Tb3VyY2VOb2RlLmNwcAppbmRleCAwZTU5ODFmYTY4NmRiOTIxMmZmYTBmODNlOWJk
Y2QwM2FmOWFhYWMzLi5jNjc1ZDdkZTcxNjgzOTJlODdkZjlmNDNkZmE2NTk5N2I1NGZmOGY0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL01lZGlhRWxlbWVudEF1
ZGlvU291cmNlTm9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9N
ZWRpYUVsZW1lbnRBdWRpb1NvdXJjZU5vZGUuY3BwCkBAIC00MywxMiArNDMsMTIgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogCiBXVEZfTUFLRV9JU09fQUxMT0NBVEVEX0lNUEwoTWVkaWFFbGVtZW50
QXVkaW9Tb3VyY2VOb2RlKTsKIAotUmVmPE1lZGlhRWxlbWVudEF1ZGlvU291cmNlTm9kZT4gTWVk
aWFFbGVtZW50QXVkaW9Tb3VyY2VOb2RlOjpjcmVhdGUoQXVkaW9Db250ZXh0JiBjb250ZXh0LCBI
VE1MTWVkaWFFbGVtZW50JiBtZWRpYUVsZW1lbnQpCitSZWY8TWVkaWFFbGVtZW50QXVkaW9Tb3Vy
Y2VOb2RlPiBNZWRpYUVsZW1lbnRBdWRpb1NvdXJjZU5vZGU6OmNyZWF0ZShBdWRpb0NvbnRleHRC
YXNlJiBjb250ZXh0LCBIVE1MTWVkaWFFbGVtZW50JiBtZWRpYUVsZW1lbnQpCiB7CiAgICAgcmV0
dXJuIGFkb3B0UmVmKCpuZXcgTWVkaWFFbGVtZW50QXVkaW9Tb3VyY2VOb2RlKGNvbnRleHQsIG1l
ZGlhRWxlbWVudCkpOwogfQogCi1NZWRpYUVsZW1lbnRBdWRpb1NvdXJjZU5vZGU6Ok1lZGlhRWxl
bWVudEF1ZGlvU291cmNlTm9kZShBdWRpb0NvbnRleHQmIGNvbnRleHQsIEhUTUxNZWRpYUVsZW1l
bnQmIG1lZGlhRWxlbWVudCkKK01lZGlhRWxlbWVudEF1ZGlvU291cmNlTm9kZTo6TWVkaWFFbGVt
ZW50QXVkaW9Tb3VyY2VOb2RlKEF1ZGlvQ29udGV4dEJhc2UmIGNvbnRleHQsIEhUTUxNZWRpYUVs
ZW1lbnQmIG1lZGlhRWxlbWVudCkKICAgICA6IEF1ZGlvTm9kZShjb250ZXh0LCBjb250ZXh0LnNh
bXBsZVJhdGUoKSkKICAgICAsIG1fbWVkaWFFbGVtZW50KG1lZGlhRWxlbWVudCkKICAgICAsIG1f
c291cmNlTnVtYmVyT2ZDaGFubmVscygwKQpAQCAtOTcsNyArOTcsNyBAQCB2b2lkIE1lZGlhRWxl
bWVudEF1ZGlvU291cmNlTm9kZTo6c2V0Rm9ybWF0KHNpemVfdCBudW1iZXJPZkNoYW5uZWxzLCBm
bG9hdCBzb3VyYwogCiAgICAgICAgIHsKICAgICAgICAgICAgIC8vIFRoZSBjb250ZXh0IG11c3Qg
YmUgbG9ja2VkIHdoZW4gY2hhbmdpbmcgdGhlIG51bWJlciBvZiBvdXRwdXQgY2hhbm5lbHMuCi0g
ICAgICAgICAgICBBdWRpb0NvbnRleHQ6OkF1dG9Mb2NrZXIgY29udGV4dExvY2tlcihjb250ZXh0
KCkpOworICAgICAgICAgICAgQXVkaW9Db250ZXh0QmFzZTo6QXV0b0xvY2tlciBjb250ZXh0TG9j
a2VyKGNvbnRleHQoKSk7CiAKICAgICAgICAgICAgIC8vIERvIGFueSBuZWNlc3NzYXJ5IHJlLWNv
bmZpZ3VyYXRpb24gdG8gdGhlIG91dHB1dCdzIG51bWJlciBvZiBjaGFubmVscy4KICAgICAgICAg
ICAgIG91dHB1dCgwKS0+c2V0TnVtYmVyT2ZDaGFubmVscyhudW1iZXJPZkNoYW5uZWxzKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vTWVkaWFFbGVtZW50QXVk
aW9Tb3VyY2VOb2RlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL01lZGlhRWxl
bWVudEF1ZGlvU291cmNlTm9kZS5oCmluZGV4IDNhMTMxNTQxNWYxOGY5YjM0YWRjZTQyNGYyNmMy
NjEyZDNjNDhmNTkuLjcxZDBlZDEzOGE1ZjlmZDM3MzA1MDIwNTQxZWQ1ZDQ3YzNhZWMwY2MgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vTWVkaWFFbGVtZW50QXVk
aW9Tb3VyY2VOb2RlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9NZWRp
YUVsZW1lbnRBdWRpb1NvdXJjZU5vZGUuaApAQCAtNDAsNyArNDAsNyBAQCBjbGFzcyBBdWRpb0Nv
bnRleHQ7CiBjbGFzcyBNZWRpYUVsZW1lbnRBdWRpb1NvdXJjZU5vZGUgZmluYWwgOiBwdWJsaWMg
QXVkaW9Ob2RlLCBwdWJsaWMgQXVkaW9Tb3VyY2VQcm92aWRlckNsaWVudCB7CiAgICAgV1RGX01B
S0VfSVNPX0FMTE9DQVRFRChNZWRpYUVsZW1lbnRBdWRpb1NvdXJjZU5vZGUpOwogcHVibGljOgot
ICAgIHN0YXRpYyBSZWY8TWVkaWFFbGVtZW50QXVkaW9Tb3VyY2VOb2RlPiBjcmVhdGUoQXVkaW9D
b250ZXh0JiwgSFRNTE1lZGlhRWxlbWVudCYpOworICAgIHN0YXRpYyBSZWY8TWVkaWFFbGVtZW50
QXVkaW9Tb3VyY2VOb2RlPiBjcmVhdGUoQXVkaW9Db250ZXh0QmFzZSYsIEhUTUxNZWRpYUVsZW1l
bnQmKTsKIAogICAgIHZpcnR1YWwgfk1lZGlhRWxlbWVudEF1ZGlvU291cmNlTm9kZSgpOwogCkBA
IC01Nyw3ICs1Nyw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHVubG9jaygpOwogCiBwcml2YXRlOgot
ICAgIE1lZGlhRWxlbWVudEF1ZGlvU291cmNlTm9kZShBdWRpb0NvbnRleHQmLCBIVE1MTWVkaWFF
bGVtZW50Jik7CisgICAgTWVkaWFFbGVtZW50QXVkaW9Tb3VyY2VOb2RlKEF1ZGlvQ29udGV4dEJh
c2UmLCBIVE1MTWVkaWFFbGVtZW50Jik7CiAKICAgICBkb3VibGUgdGFpbFRpbWUoKSBjb25zdCBv
dmVycmlkZSB7IHJldHVybiAwOyB9CiAgICAgZG91YmxlIGxhdGVuY3lUaW1lKCkgY29uc3Qgb3Zl
cnJpZGUgeyByZXR1cm4gMDsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJhdWRpby9NZWRpYVN0cmVhbUF1ZGlvRGVzdGluYXRpb25Ob2RlLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViYXVkaW8vTWVkaWFTdHJlYW1BdWRpb0Rlc3RpbmF0aW9uTm9kZS5jcHAK
aW5kZXggZDc2NjI5MzAzMDhhNzQ2YTQ2YWUwMDg2OGE1ZDYzNDFiODJmZjczYi4uMzBmMWEyMjJi
ZTIzMDBlMTJkYWU3NjZiZGVlNDJiMGJiMWNmMWU4OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJhdWRpby9NZWRpYVN0cmVhbUF1ZGlvRGVzdGluYXRpb25Ob2RlLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL01lZGlhU3RyZWFtQXVkaW9EZXN0
aW5hdGlvbk5vZGUuY3BwCkBAIC0zOSwxMiArMzksMTIgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
CiBXVEZfTUFLRV9JU09fQUxMT0NBVEVEX0lNUEwoTWVkaWFTdHJlYW1BdWRpb0Rlc3RpbmF0aW9u
Tm9kZSk7CiAKLVJlZjxNZWRpYVN0cmVhbUF1ZGlvRGVzdGluYXRpb25Ob2RlPiBNZWRpYVN0cmVh
bUF1ZGlvRGVzdGluYXRpb25Ob2RlOjpjcmVhdGUoQXVkaW9Db250ZXh0JiBjb250ZXh0LCBzaXpl
X3QgbnVtYmVyT2ZDaGFubmVscykKK1JlZjxNZWRpYVN0cmVhbUF1ZGlvRGVzdGluYXRpb25Ob2Rl
PiBNZWRpYVN0cmVhbUF1ZGlvRGVzdGluYXRpb25Ob2RlOjpjcmVhdGUoQXVkaW9Db250ZXh0QmFz
ZSYgY29udGV4dCwgc2l6ZV90IG51bWJlck9mQ2hhbm5lbHMpCiB7CiAgICAgcmV0dXJuIGFkb3B0
UmVmKCpuZXcgTWVkaWFTdHJlYW1BdWRpb0Rlc3RpbmF0aW9uTm9kZShjb250ZXh0LCBudW1iZXJP
ZkNoYW5uZWxzKSk7CiB9CiAKLU1lZGlhU3RyZWFtQXVkaW9EZXN0aW5hdGlvbk5vZGU6Ok1lZGlh
U3RyZWFtQXVkaW9EZXN0aW5hdGlvbk5vZGUoQXVkaW9Db250ZXh0JiBjb250ZXh0LCBzaXplX3Qg
bnVtYmVyT2ZDaGFubmVscykKK01lZGlhU3RyZWFtQXVkaW9EZXN0aW5hdGlvbk5vZGU6Ok1lZGlh
U3RyZWFtQXVkaW9EZXN0aW5hdGlvbk5vZGUoQXVkaW9Db250ZXh0QmFzZSYgY29udGV4dCwgc2l6
ZV90IG51bWJlck9mQ2hhbm5lbHMpCiAgICAgOiBBdWRpb0Jhc2ljSW5zcGVjdG9yTm9kZShjb250
ZXh0LCBjb250ZXh0LnNhbXBsZVJhdGUoKSwgbnVtYmVyT2ZDaGFubmVscykKICAgICAsIG1fc291
cmNlKE1lZGlhU3RyZWFtQXVkaW9Tb3VyY2U6OmNyZWF0ZShjb250ZXh0LnNhbXBsZVJhdGUoKSkp
CiAgICAgLCBtX3N0cmVhbShNZWRpYVN0cmVhbTo6Y3JlYXRlKCpjb250ZXh0LmRvY3VtZW50KCks
IE1lZGlhU3RyZWFtUHJpdmF0ZTo6Y3JlYXRlKGNvbnRleHQuZG9jdW1lbnQoKS0+bG9nZ2VyKCks
IG1fc291cmNlLmNvcHlSZWYoKSkpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJhdWRpby9NZWRpYVN0cmVhbUF1ZGlvRGVzdGluYXRpb25Ob2RlLmggYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmF1ZGlvL01lZGlhU3RyZWFtQXVkaW9EZXN0aW5hdGlvbk5vZGUuaApp
bmRleCBmNWE3ZThmZWM0YTkwMmM5MGJkY2Y5YzVjN2I0NjdjOTgwZjk3ZTNhLi5kYmFkOTI4ZDc5
NmEyZDhmNDEwZjQzNmZiZTMzZWY3MmFhODQxNzNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmF1ZGlvL01lZGlhU3RyZWFtQXVkaW9EZXN0aW5hdGlvbk5vZGUuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL01lZGlhU3RyZWFtQXVkaW9EZXN0aW5h
dGlvbk5vZGUuaApAQCAtMzIsMTMgKzMyLDEzIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAot
Y2xhc3MgQXVkaW9Db250ZXh0OworY2xhc3MgQXVkaW9Db250ZXh0QmFzZTsKIGNsYXNzIE1lZGlh
U3RyZWFtQXVkaW9Tb3VyY2U7CiAKIGNsYXNzIE1lZGlhU3RyZWFtQXVkaW9EZXN0aW5hdGlvbk5v
ZGUgZmluYWwgOiBwdWJsaWMgQXVkaW9CYXNpY0luc3BlY3Rvck5vZGUgewogICAgIFdURl9NQUtF
X0lTT19BTExPQ0FURUQoTWVkaWFTdHJlYW1BdWRpb0Rlc3RpbmF0aW9uTm9kZSk7CiBwdWJsaWM6
Ci0gICAgc3RhdGljIFJlZjxNZWRpYVN0cmVhbUF1ZGlvRGVzdGluYXRpb25Ob2RlPiBjcmVhdGUo
QXVkaW9Db250ZXh0Jiwgc2l6ZV90IG51bWJlck9mQ2hhbm5lbHMpOworICAgIHN0YXRpYyBSZWY8
TWVkaWFTdHJlYW1BdWRpb0Rlc3RpbmF0aW9uTm9kZT4gY3JlYXRlKEF1ZGlvQ29udGV4dEJhc2Um
LCBzaXplX3QgbnVtYmVyT2ZDaGFubmVscyk7CiAKICAgICB2aXJ0dWFsIH5NZWRpYVN0cmVhbUF1
ZGlvRGVzdGluYXRpb25Ob2RlKCk7CiAKQEAgLTQ5LDcgKzQ5LDcgQEAgcHVibGljOgogICAgIHZv
aWQgcmVzZXQoKSBmaW5hbDsKICAgICAKIHByaXZhdGU6Ci0gICAgTWVkaWFTdHJlYW1BdWRpb0Rl
c3RpbmF0aW9uTm9kZShBdWRpb0NvbnRleHQmLCBzaXplX3QgbnVtYmVyT2ZDaGFubmVscyk7Cisg
ICAgTWVkaWFTdHJlYW1BdWRpb0Rlc3RpbmF0aW9uTm9kZShBdWRpb0NvbnRleHRCYXNlJiwgc2l6
ZV90IG51bWJlck9mQ2hhbm5lbHMpOwogCiAgICAgZG91YmxlIHRhaWxUaW1lKCkgY29uc3QgZmlu
YWwgeyByZXR1cm4gMDsgfQogICAgIGRvdWJsZSBsYXRlbmN5VGltZSgpIGNvbnN0IGZpbmFsIHsg
cmV0dXJuIDA7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8v
TWVkaWFTdHJlYW1BdWRpb1NvdXJjZU5vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJhdWRpby9NZWRpYVN0cmVhbUF1ZGlvU291cmNlTm9kZS5jcHAKaW5kZXggMWI0ZmI2ZDE5MjJh
ZDFjNGIwNDFjYjkxMjljNTVjMTM4NzA3ZjdjZS4uMzVlNTVhOTIwMmMzZjMwNTViZjE4N2JhYTZm
NjZmYjZiZDUxZjY5MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRp
by9NZWRpYVN0cmVhbUF1ZGlvU291cmNlTm9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJhdWRpby9NZWRpYVN0cmVhbUF1ZGlvU291cmNlTm9kZS5jcHAKQEAgLTM4LDEyICsz
OCwxMiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFdURl9NQUtFX0lTT19BTExPQ0FURURfSU1Q
TChNZWRpYVN0cmVhbUF1ZGlvU291cmNlTm9kZSk7CiAKLVJlZjxNZWRpYVN0cmVhbUF1ZGlvU291
cmNlTm9kZT4gTWVkaWFTdHJlYW1BdWRpb1NvdXJjZU5vZGU6OmNyZWF0ZShBdWRpb0NvbnRleHQm
IGNvbnRleHQsIE1lZGlhU3RyZWFtJiBtZWRpYVN0cmVhbSwgTWVkaWFTdHJlYW1UcmFjayYgYXVk
aW9UcmFjaykKK1JlZjxNZWRpYVN0cmVhbUF1ZGlvU291cmNlTm9kZT4gTWVkaWFTdHJlYW1BdWRp
b1NvdXJjZU5vZGU6OmNyZWF0ZShBdWRpb0NvbnRleHRCYXNlJiBjb250ZXh0LCBNZWRpYVN0cmVh
bSYgbWVkaWFTdHJlYW0sIE1lZGlhU3RyZWFtVHJhY2smIGF1ZGlvVHJhY2spCiB7CiAgICAgcmV0
dXJuIGFkb3B0UmVmKCpuZXcgTWVkaWFTdHJlYW1BdWRpb1NvdXJjZU5vZGUoY29udGV4dCwgbWVk
aWFTdHJlYW0sIGF1ZGlvVHJhY2spKTsKIH0KIAotTWVkaWFTdHJlYW1BdWRpb1NvdXJjZU5vZGU6
Ok1lZGlhU3RyZWFtQXVkaW9Tb3VyY2VOb2RlKEF1ZGlvQ29udGV4dCYgY29udGV4dCwgTWVkaWFT
dHJlYW0mIG1lZGlhU3RyZWFtLCBNZWRpYVN0cmVhbVRyYWNrJiBhdWRpb1RyYWNrKQorTWVkaWFT
dHJlYW1BdWRpb1NvdXJjZU5vZGU6Ok1lZGlhU3RyZWFtQXVkaW9Tb3VyY2VOb2RlKEF1ZGlvQ29u
dGV4dEJhc2UmIGNvbnRleHQsIE1lZGlhU3RyZWFtJiBtZWRpYVN0cmVhbSwgTWVkaWFTdHJlYW1U
cmFjayYgYXVkaW9UcmFjaykKICAgICA6IEF1ZGlvTm9kZShjb250ZXh0LCBjb250ZXh0LnNhbXBs
ZVJhdGUoKSkKICAgICAsIG1fbWVkaWFTdHJlYW0obWVkaWFTdHJlYW0pCiAgICAgLCBtX2F1ZGlv
VHJhY2soYXVkaW9UcmFjaykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
YXVkaW8vTWVkaWFTdHJlYW1BdWRpb1NvdXJjZU5vZGUuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViYXVkaW8vTWVkaWFTdHJlYW1BdWRpb1NvdXJjZU5vZGUuaAppbmRleCBlM2VkZWZlMWJk
NTcwMmE3M2EyMmY0YTgzOWQyM2NmYzE5YzI5YTA1Li5jNzJkMzEyMjMzZDUwNmRkNTRjZTI3MGZj
OTIyN2I1NDU3NWVlMmUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1
ZGlvL01lZGlhU3RyZWFtQXVkaW9Tb3VyY2VOb2RlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJhdWRpby9NZWRpYVN0cmVhbUF1ZGlvU291cmNlTm9kZS5oCkBAIC00MCw3ICs0MCw3
IEBAIGNsYXNzIE11bHRpQ2hhbm5lbFJlc2FtcGxlcjsKIGNsYXNzIE1lZGlhU3RyZWFtQXVkaW9T
b3VyY2VOb2RlIGZpbmFsIDogcHVibGljIEF1ZGlvTm9kZSwgcHVibGljIEF1ZGlvU291cmNlUHJv
dmlkZXJDbGllbnQgewogICAgIFdURl9NQUtFX0lTT19BTExPQ0FURUQoTWVkaWFTdHJlYW1BdWRp
b1NvdXJjZU5vZGUpOwogcHVibGljOgotICAgIHN0YXRpYyBSZWY8TWVkaWFTdHJlYW1BdWRpb1Nv
dXJjZU5vZGU+IGNyZWF0ZShBdWRpb0NvbnRleHQmLCBNZWRpYVN0cmVhbSYsIE1lZGlhU3RyZWFt
VHJhY2smKTsKKyAgICBzdGF0aWMgUmVmPE1lZGlhU3RyZWFtQXVkaW9Tb3VyY2VOb2RlPiBjcmVh
dGUoQXVkaW9Db250ZXh0QmFzZSYsIE1lZGlhU3RyZWFtJiwgTWVkaWFTdHJlYW1UcmFjayYpOwog
CiAgICAgdmlydHVhbCB+TWVkaWFTdHJlYW1BdWRpb1NvdXJjZU5vZGUoKTsKIApAQCAtNTQsNyAr
NTQsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRGb3JtYXQoc2l6ZV90IG51bWJlck9mQ2hhbm5l
bHMsIGZsb2F0IHNhbXBsZVJhdGUpIG92ZXJyaWRlOwogCiBwcml2YXRlOgotICAgIE1lZGlhU3Ry
ZWFtQXVkaW9Tb3VyY2VOb2RlKEF1ZGlvQ29udGV4dCYsIE1lZGlhU3RyZWFtJiwgTWVkaWFTdHJl
YW1UcmFjayYpOworICAgIE1lZGlhU3RyZWFtQXVkaW9Tb3VyY2VOb2RlKEF1ZGlvQ29udGV4dEJh
c2UmLCBNZWRpYVN0cmVhbSYsIE1lZGlhU3RyZWFtVHJhY2smKTsKIAogICAgIGRvdWJsZSB0YWls
VGltZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIDA7IH0KICAgICBkb3VibGUgbGF0ZW5jeVRp
bWUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiAwOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmF1ZGlvL09mZmxpbmVBdWRpb0NvbnRleHQuaWRsIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJhdWRpby9PZmZsaW5lQXVkaW9Db250ZXh0LmlkbAppbmRleCBmNmVj
YjFhNjg1ODFjYzk0NjY3OWQ5MjRmOGUzZTE1NGQwMzQzYWM2Li4wZTcxYTA2YmMzZmEyZjhlODYy
OTlmM2MyNDU4N2U2Y2JhOWM0MTExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmF1ZGlvL09mZmxpbmVBdWRpb0NvbnRleHQuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViYXVkaW8vT2ZmbGluZUF1ZGlvQ29udGV4dC5pZGwKQEAgLTI0LDggKzI0LDggQEAK
IAogWwogICAgIENvbmRpdGlvbmFsPVdFQl9BVURJTywKKyAgICBFbmFibGVkQnlTZXR0aW5nPU1v
ZGVyblVucHJlZml4ZWRXZWJBdWRpbywKICAgICBKU0dlbmVyYXRlVG9KU09iamVjdCwKLSAgICBJ
bnRlcmZhY2VOYW1lPXdlYmtpdE9mZmxpbmVBdWRpb0NvbnRleHQKIF0gaW50ZXJmYWNlIE9mZmxp
bmVBdWRpb0NvbnRleHQgOiBBdWRpb0NvbnRleHQgewogICAgIFtDYWxsV2l0aD1TY3JpcHRFeGVj
dXRpb25Db250ZXh0LCBNYXlUaHJvd0V4Y2VwdGlvbl0gY29uc3RydWN0b3IodW5zaWduZWQgbG9u
ZyBudW1iZXJPZkNoYW5uZWxzLCB1bnNpZ25lZCBsb25nIG51bWJlck9mRnJhbWVzLCB1bnJlc3Ry
aWN0ZWQgZmxvYXQgc2FtcGxlUmF0ZSk7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJhdWRpby9PZmZsaW5lQXVkaW9EZXN0aW5hdGlvbk5vZGUuY3BwIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9PZmZsaW5lQXVkaW9EZXN0aW5hdGlvbk5vZGUuY3Bw
CmluZGV4IDZhMTk1NTQ2Y2Y3MTM5NGZlNWM0MTRiNzY1YjZjOTdlMDVlZGMwNDkuLmZlYzUwOGNi
ZmYxYzcxZDMzYmM0YjEzZWE5ODJmOTJmYzBhZmI5OWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViYXVkaW8vT2ZmbGluZUF1ZGlvRGVzdGluYXRpb25Ob2RlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL09mZmxpbmVBdWRpb0Rlc3RpbmF0aW9u
Tm9kZS5jcHAKQEAgLTQxLDcgKzQxLDcgQEAgV1RGX01BS0VfSVNPX0FMTE9DQVRFRF9JTVBMKE9m
ZmxpbmVBdWRpb0Rlc3RpbmF0aW9uTm9kZSk7CiAgICAgCiBjb25zdCBzaXplX3QgcmVuZGVyUXVh
bnR1bVNpemUgPSAxMjg7ICAgIAogCi1PZmZsaW5lQXVkaW9EZXN0aW5hdGlvbk5vZGU6Ok9mZmxp
bmVBdWRpb0Rlc3RpbmF0aW9uTm9kZShBdWRpb0NvbnRleHQmIGNvbnRleHQsIEF1ZGlvQnVmZmVy
KiByZW5kZXJUYXJnZXQpCitPZmZsaW5lQXVkaW9EZXN0aW5hdGlvbk5vZGU6Ok9mZmxpbmVBdWRp
b0Rlc3RpbmF0aW9uTm9kZShBdWRpb0NvbnRleHRCYXNlJiBjb250ZXh0LCBBdWRpb0J1ZmZlciog
cmVuZGVyVGFyZ2V0KQogICAgIDogQXVkaW9EZXN0aW5hdGlvbk5vZGUoY29udGV4dCwgcmVuZGVy
VGFyZ2V0LT5zYW1wbGVSYXRlKCkpCiAgICAgLCBtX3JlbmRlclRhcmdldChyZW5kZXJUYXJnZXQp
CiAgICAgLCBtX3N0YXJ0ZWRSZW5kZXJpbmcoZmFsc2UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmF1ZGlvL09mZmxpbmVBdWRpb0Rlc3RpbmF0aW9uTm9kZS5oIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9PZmZsaW5lQXVkaW9EZXN0aW5hdGlvbk5vZGUu
aAppbmRleCBkYTI0OTU3NGQ0ODRmZjgxMmFhNDkzN2FjM2ExNjVlZTk1ODI4NGNjLi5mODcxMGZk
ZTEwZGZmZmU0OTAyMzRmMTkzNmJkNThiYWEzY2IyZTk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmF1ZGlvL09mZmxpbmVBdWRpb0Rlc3RpbmF0aW9uTm9kZS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vT2ZmbGluZUF1ZGlvRGVzdGluYXRpb25O
b2RlLmgKQEAgLTM3LDkgKzM3LDkgQEAgY2xhc3MgQXVkaW9Db250ZXh0OwogY2xhc3MgT2ZmbGlu
ZUF1ZGlvRGVzdGluYXRpb25Ob2RlIGZpbmFsIDogcHVibGljIEF1ZGlvRGVzdGluYXRpb25Ob2Rl
IHsKICAgICBXVEZfTUFLRV9JU09fQUxMT0NBVEVEKE9mZmxpbmVBdWRpb0Rlc3RpbmF0aW9uTm9k
ZSk7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxPZmZsaW5lQXVkaW9EZXN0aW5hdGlvbk5vZGU+
IGNyZWF0ZShBdWRpb0NvbnRleHQmIGNvbnRleHQsIEF1ZGlvQnVmZmVyKiByZW5kZXJUYXJnZXQp
CisgICAgc3RhdGljIFJlZjxPZmZsaW5lQXVkaW9EZXN0aW5hdGlvbk5vZGU+IGNyZWF0ZShBdWRp
b0NvbnRleHRCYXNlJiBjb250ZXh0LCBBdWRpb0J1ZmZlciogcmVuZGVyVGFyZ2V0KQogICAgIHsK
LSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgT2ZmbGluZUF1ZGlvRGVzdGluYXRpb25Ob2Rl
KGNvbnRleHQsIHJlbmRlclRhcmdldCkpOyAgICAgCisgICAgICAgIHJldHVybiBhZG9wdFJlZigq
bmV3IE9mZmxpbmVBdWRpb0Rlc3RpbmF0aW9uTm9kZShjb250ZXh0LCByZW5kZXJUYXJnZXQpKTsK
ICAgICB9CiAKICAgICB2aXJ0dWFsIH5PZmZsaW5lQXVkaW9EZXN0aW5hdGlvbk5vZGUoKTsKQEAg
LTU1LDcgKzU1LDcgQEAgcHVibGljOgogICAgIGZsb2F0IHNhbXBsZVJhdGUoKSBjb25zdCBvdmVy
cmlkZSB7IHJldHVybiBtX3JlbmRlclRhcmdldC0+c2FtcGxlUmF0ZSgpOyB9CiAKIHByaXZhdGU6
Ci0gICAgT2ZmbGluZUF1ZGlvRGVzdGluYXRpb25Ob2RlKEF1ZGlvQ29udGV4dCYsIEF1ZGlvQnVm
ZmVyKiByZW5kZXJUYXJnZXQpOworICAgIE9mZmxpbmVBdWRpb0Rlc3RpbmF0aW9uTm9kZShBdWRp
b0NvbnRleHRCYXNlJiwgQXVkaW9CdWZmZXIqIHJlbmRlclRhcmdldCk7CiAKICAgICAvLyBUaGlz
IEF1ZGlvTm9kZSByZW5kZXJzIGludG8gdGhpcyBBdWRpb0J1ZmZlci4KICAgICBSZWZQdHI8QXVk
aW9CdWZmZXI+IG1fcmVuZGVyVGFyZ2V0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJhdWRpby9Pc2NpbGxhdG9yTm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmF1ZGlvL09zY2lsbGF0b3JOb2RlLmNwcAppbmRleCA5NTYwMDUzYTQ4MDViOWQ0YmY1NTk5
ZTczYTE5YTgxZTI1YjBjOTZmLi5lOGYzMWM3MjIwZTUwNjU2OGUzYWNmMDU4ZjZjYWI0NzNiMDkx
ZWQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL09zY2lsbGF0
b3JOb2RlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL09zY2lsbGF0
b3JOb2RlLmNwcApAQCAtNDUsMTIgKzQ1LDEyIEBAIFBlcmlvZGljV2F2ZSogT3NjaWxsYXRvck5v
ZGU6OnNfcGVyaW9kaWNXYXZlU3F1YXJlID0gbnVsbHB0cjsKIFBlcmlvZGljV2F2ZSogT3NjaWxs
YXRvck5vZGU6OnNfcGVyaW9kaWNXYXZlU2F3dG9vdGggPSBudWxscHRyOwogUGVyaW9kaWNXYXZl
KiBPc2NpbGxhdG9yTm9kZTo6c19wZXJpb2RpY1dhdmVUcmlhbmdsZSA9IG51bGxwdHI7CiAKLVJl
ZjxPc2NpbGxhdG9yTm9kZT4gT3NjaWxsYXRvck5vZGU6OmNyZWF0ZShBdWRpb0NvbnRleHQmIGNv
bnRleHQsIGZsb2F0IHNhbXBsZVJhdGUpCitSZWY8T3NjaWxsYXRvck5vZGU+IE9zY2lsbGF0b3JO
b2RlOjpjcmVhdGUoQXVkaW9Db250ZXh0QmFzZSYgY29udGV4dCwgZmxvYXQgc2FtcGxlUmF0ZSkK
IHsKICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBPc2NpbGxhdG9yTm9kZShjb250ZXh0LCBzYW1w
bGVSYXRlKSk7CiB9CiAKLU9zY2lsbGF0b3JOb2RlOjpPc2NpbGxhdG9yTm9kZShBdWRpb0NvbnRl
eHQmIGNvbnRleHQsIGZsb2F0IHNhbXBsZVJhdGUpCitPc2NpbGxhdG9yTm9kZTo6T3NjaWxsYXRv
ck5vZGUoQXVkaW9Db250ZXh0QmFzZSYgY29udGV4dCwgZmxvYXQgc2FtcGxlUmF0ZSkKICAgICA6
IEF1ZGlvU2NoZWR1bGVkU291cmNlTm9kZShjb250ZXh0LCBzYW1wbGVSYXRlKQogICAgICwgbV9m
aXJzdFJlbmRlcih0cnVlKQogICAgICwgbV92aXJ0dWFsUmVhZEluZGV4KDApCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL09zY2lsbGF0b3JOb2RlLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL09zY2lsbGF0b3JOb2RlLmgKaW5kZXggNDJmZjBj
MTkyNGI2MmVkMGNmMDAxN2ZmYjk3ZGU2MDMyNmM3MzkyMi4uMDg5NWJjZTNkZGRmNTlkNjljNWM2
YWY5Y2ZkMmI5Y2ZiZTllYjRhOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJhdWRpby9Pc2NpbGxhdG9yTm9kZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
YXVkaW8vT3NjaWxsYXRvck5vZGUuaApAQCAtNDUsNyArNDUsNyBAQCBwdWJsaWM6CiAgICAgICAg
IEN1c3RvbQogICAgIH07CiAKLSAgICBzdGF0aWMgUmVmPE9zY2lsbGF0b3JOb2RlPiBjcmVhdGUo
QXVkaW9Db250ZXh0JiwgZmxvYXQgc2FtcGxlUmF0ZSk7CisgICAgc3RhdGljIFJlZjxPc2NpbGxh
dG9yTm9kZT4gY3JlYXRlKEF1ZGlvQ29udGV4dEJhc2UmLCBmbG9hdCBzYW1wbGVSYXRlKTsKIAog
ICAgIHZpcnR1YWwgfk9zY2lsbGF0b3JOb2RlKCk7CiAKQEAgLTYwLDcgKzYwLDcgQEAgcHVibGlj
OgogICAgIHZvaWQgc2V0UGVyaW9kaWNXYXZlKFBlcmlvZGljV2F2ZSopOwogCiBwcml2YXRlOgot
ICAgIE9zY2lsbGF0b3JOb2RlKEF1ZGlvQ29udGV4dCYsIGZsb2F0IHNhbXBsZVJhdGUpOworICAg
IE9zY2lsbGF0b3JOb2RlKEF1ZGlvQ29udGV4dEJhc2UmLCBmbG9hdCBzYW1wbGVSYXRlKTsKIAog
ICAgIHZvaWQgcHJvY2VzcyhzaXplX3QgZnJhbWVzVG9Qcm9jZXNzKSBmaW5hbDsKICAgICB2b2lk
IHJlc2V0KCkgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1
ZGlvL1Bhbm5lck5vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9QYW5u
ZXJOb2RlLmNwcAppbmRleCBlYzgwZTY5ZDJhYjg3MTAyOGJjNmE2ZTQ0N2VhYmQxOWU5ZmNjNzIx
Li5hZTQyZjExNGJiYzM5MDRkYjdjMmNjMTU2ZDBiMmNiZTQyMDA2OThlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1Bhbm5lck5vZGUuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vUGFubmVyTm9kZS5jcHAKQEAgLTQ4LDggKzQ4LDEz
IEBAIHN0YXRpYyB2b2lkIGZpeE5BTnMoZG91YmxlICZ4KQogICAgICAgICB4ID0gMC4wOwogfQog
Ci1QYW5uZXJOb2RlOjpQYW5uZXJOb2RlKEF1ZGlvQ29udGV4dCYgY29udGV4dCwgZmxvYXQgc2Ft
cGxlUmF0ZSkKK1Bhbm5lck5vZGVCYXNlOjpQYW5uZXJOb2RlQmFzZShBdWRpb0NvbnRleHRCYXNl
JiBjb250ZXh0LCBmbG9hdCBzYW1wbGVSYXRlKQogICAgIDogQXVkaW9Ob2RlKGNvbnRleHQsIHNh
bXBsZVJhdGUpCit7Cit9CisKK1Bhbm5lck5vZGU6OlBhbm5lck5vZGUoQXVkaW9Db250ZXh0JiBj
b250ZXh0LCBmbG9hdCBzYW1wbGVSYXRlKQorICAgIDogUGFubmVyTm9kZUJhc2UoY29udGV4dCwg
c2FtcGxlUmF0ZSkKICAgICAsIG1fcGFubmluZ01vZGVsKFBhbm5pbmdNb2RlbFR5cGU6OkhSVEYp
CiAgICAgLCBtX2xhc3RHYWluKC0xLjApCiAgICAgLCBtX3Bvc2l0aW9uWChBdWRpb1BhcmFtOjpj
cmVhdGUoY29udGV4dCwgInBvc2l0aW9uWCJfcywgMCwgLUZMVF9NQVgsIEZMVF9NQVgpKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9QYW5uZXJOb2RlLmggYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1Bhbm5lck5vZGUuaAppbmRleCA4NDgwYzIz
MzI4MDBkY2Y0ODg1MTU4ZDY5NDU5MmRkOWVlNTI5MmI2Li4yOWI2NDhkMDYwNzYyOTM4N2ExYjBj
MDcwMzdjNTBjMjJjZjAxMDU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmF1ZGlvL1Bhbm5lck5vZGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlv
L1Bhbm5lck5vZGUuaApAQCAtMjYsNiArMjYsNyBAQAogCiAjaWYgRU5BQkxFKFdFQl9BVURJTykK
IAorI2luY2x1ZGUgIkF1ZGlvQ29udGV4dC5oIgogI2luY2x1ZGUgIkF1ZGlvTGlzdGVuZXIuaCIK
ICNpbmNsdWRlICJBdWRpb05vZGUuaCIKICNpbmNsdWRlICJBdWRpb1BhcmFtLmgiCkBAIC00MSw2
ICs0MiwxNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEhSVEZEYXRhYmFzZUxvYWRl
cjsKIAorY2xhc3MgUGFubmVyTm9kZUJhc2UgOiBwdWJsaWMgQXVkaW9Ob2RlIHsKK3B1YmxpYzoK
KyAgICB2aXJ0dWFsIH5QYW5uZXJOb2RlQmFzZSgpID0gZGVmYXVsdDsKKworICAgIHZpcnR1YWwg
ZmxvYXQgZG9wcGxlclJhdGUoKSA9IDA7CisKK3Byb3RlY3RlZDoKKyAgICBQYW5uZXJOb2RlQmFz
ZShBdWRpb0NvbnRleHRCYXNlJiwgZmxvYXQgc2FtcGxlUmF0ZSk7Cit9OworCiAvLyBQYW5uZXJO
b2RlIGlzIGFuIEF1ZGlvTm9kZSB3aXRoIG9uZSBpbnB1dCBhbmQgb25lIG91dHB1dC4KIC8vIEl0
IHBvc2l0aW9ucyBhIHNvdW5kIGluIDNEIHNwYWNlLCB3aXRoIHRoZSBleGFjdCBlZmZlY3QgZGVw
ZW5kZW50IG9uIHRoZSBwYW5uaW5nIG1vZGVsLgogLy8gSXQgaGFzIGEgcG9zaXRpb24gYW5kIGFu
IG9yaWVudGF0aW9uIGluIDNEIHNwYWNlIHdoaWNoIGlzIHJlbGF0aXZlIHRvIHRoZSBwb3NpdGlv
biBhbmQgb3JpZW50YXRpb24gb2YgdGhlIGNvbnRleHQncyBBdWRpb0xpc3RlbmVyLgpAQCAtNDgs
NyArNTksNyBAQCBjbGFzcyBIUlRGRGF0YWJhc2VMb2FkZXI7CiAvLyBBIGNvbmUgZWZmZWN0IHdp
bGwgYXR0ZW51YXRlIHRoZSBnYWluIGFzIHRoZSBvcmllbnRhdGlvbiBtb3ZlcyBhd2F5IGZyb20g
dGhlIGxpc3RlbmVyLgogLy8gQWxsIG9mIHRoZXNlIGVmZmVjdHMgZm9sbG93IHRoZSBPcGVuQUwg
c3BlY2lmaWNhdGlvbiB2ZXJ5IGNsb3NlbHkuCiAKLWNsYXNzIFBhbm5lck5vZGUgZmluYWwgOiBw
dWJsaWMgQXVkaW9Ob2RlIHsKK2NsYXNzIFBhbm5lck5vZGUgZmluYWwgOiBwdWJsaWMgUGFubmVy
Tm9kZUJhc2UgewogICAgIFdURl9NQUtFX0lTT19BTExPQ0FURUQoUGFubmVyTm9kZSk7CiBwdWJs
aWM6CiAgICAgc3RhdGljIFJlZjxQYW5uZXJOb2RlPiBjcmVhdGUoQXVkaW9Db250ZXh0JiBjb250
ZXh0LCBmbG9hdCBzYW1wbGVSYXRlKQpAQCAtNTgsNiArNjksOSBAQCBwdWJsaWM6CiAKICAgICB2
aXJ0dWFsIH5QYW5uZXJOb2RlKCk7CiAKKyAgICBBdWRpb0NvbnRleHQmIGNvbnRleHQoKSB7IHJl
dHVybiBkb3duY2FzdDxBdWRpb0NvbnRleHQ+KEF1ZGlvTm9kZTo6Y29udGV4dCgpKTsgfQorICAg
IGNvbnN0IEF1ZGlvQ29udGV4dCYgY29udGV4dCgpIGNvbnN0IHsgcmV0dXJuIGRvd25jYXN0PEF1
ZGlvQ29udGV4dD4oQXVkaW9Ob2RlOjpjb250ZXh0KCkpOyB9CisKICAgICAvLyBBdWRpb05vZGUK
ICAgICB2b2lkIHByb2Nlc3Moc2l6ZV90IGZyYW1lc1RvUHJvY2Vzcykgb3ZlcnJpZGU7CiAgICAg
dm9pZCBwdWxsSW5wdXRzKHNpemVfdCBmcmFtZXNUb1Byb2Nlc3MpIG92ZXJyaWRlOwpAQCAtMTEx
LDcgKzEyNSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldENvbmVPdXRlckdhaW4oZG91YmxlIGFu
Z2xlKSB7IG1fY29uZUVmZmVjdC5zZXRPdXRlckdhaW4oYW5nbGUpOyB9CiAKICAgICB2b2lkIGdl
dEF6aW11dGhFbGV2YXRpb24oZG91YmxlKiBvdXRBemltdXRoLCBkb3VibGUqIG91dEVsZXZhdGlv
bik7Ci0gICAgZmxvYXQgZG9wcGxlclJhdGUoKTsKKyAgICBmbG9hdCBkb3BwbGVyUmF0ZSgpIGZp
bmFsOwogCiAgICAgLy8gQWNjZXNzb3JzIGZvciBkeW5hbWljYWxseSBjYWxjdWxhdGVkIGdhaW4g
dmFsdWVzLgogICAgIEF1ZGlvUGFyYW0qIGRpc3RhbmNlR2FpbigpIHsgcmV0dXJuIG1fZGlzdGFu
Y2VHYWluLmdldCgpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1
ZGlvL1Bhbm5lck5vZGUuaWRsIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9QYW5u
ZXJOb2RlLmlkbAppbmRleCAwMzI5ODM3ZDJmNWEyNWM3ZjZhNmYwZDA0ZTMxODdhMWY2YWQ4YjQx
Li43YmI5MmM0ZjhmYjQ1ZGIyOTNmZmUzYTE3YTk3MTAzYzBiOTJlNmUyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1Bhbm5lck5vZGUuaWRsCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vUGFubmVyTm9kZS5pZGwKQEAgLTIyLDI3ICsyMiwx
MCBAQAogICogU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCiAgKi8KIAotWwotICAgIENvbmRpdGlvbmFsPVdFQl9BVURJTywKLSAgICBJ
bXBsZW1lbnRlZEFzPVBhbm5pbmdNb2RlbFR5cGUKLV0gZW51bSBQYW5uaW5nTW9kZWxUeXBlIHsK
LSAgICAiZXF1YWxwb3dlciIsCi0gICAgIkhSVEYiCi19OwotCi1bCi0gICAgQ29uZGl0aW9uYWw9
V0VCX0FVRElPLAotICAgIEltcGxlbWVudGVkQXM9RGlzdGFuY2VNb2RlbFR5cGUKLV0gZW51bSBE
aXN0YW5jZU1vZGVsVHlwZSB7Ci0gICAgImxpbmVhciIsCi0gICAgImludmVyc2UiLAotICAgICJl
eHBvbmVudGlhbCIKLX07Ci0KIFsKICAgICBDb25kaXRpb25hbD1XRUJfQVVESU8sCiAgICAgSlNH
ZW5lcmF0ZVRvSlNPYmplY3QsCi0gICAgSW50ZXJmYWNlTmFtZT13ZWJraXRBdWRpb1Bhbm5lck5v
ZGUsCisgICAgRW5hYmxlZEJ5U2V0dGluZz1Nb2Rlcm5VbnByZWZpeGVkV2ViQXVkaW8sCiBdIGlu
dGVyZmFjZSBQYW5uZXJOb2RlIDogQXVkaW9Ob2RlIHsKICAgICAvLyBEZWZhdWx0IG1vZGVsIGZv
ciBzdGVyZW8gaXMgSFJURiAKICAgICBhdHRyaWJ1dGUgUGFubmluZ01vZGVsVHlwZSBwYW5uaW5n
TW9kZWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1Bhbm5p
bmdNb2RlbFR5cGUuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vUGFubmluZ01v
ZGVsVHlwZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLmFiMGIyMjcxMmExNzBiMWZlZmFlMTZlNmVmM2RmOTRkMjM4
YTFhOWYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlv
L1Bhbm5pbmdNb2RlbFR5cGUuaApAQCAtMCwwICsxLDI3IEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDIwLCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9T
RSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRT
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAq
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTgorICogQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTCisgKiBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21h
IG9uY2UKKworI2luY2x1ZGUgIlBhbm5lci5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJhdWRpby9QYW5uaW5nTW9kZWxUeXBlLmlkbCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViYXVkaW8vUGFubmluZ01vZGVsVHlwZS5pZGwKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYmY3ZGY4ZjU1
NDJmYWE0NTI2MDdiZTFmMDk5ZTk5NzRiZGFjMzdlNgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vUGFubmluZ01vZGVsVHlwZS5pZGwKQEAgLTAsMCAr
MSwzMCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCwgR29vZ2xlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5EIEFOWQorICog
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OCisgKiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMKKyAqIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKK1sKKyAgICBDb25kaXRpb25hbD1XRUJfQVVESU8sCitdIGVu
dW0gUGFubmluZ01vZGVsVHlwZSB7CisgICAgImVxdWFscG93ZXIiLAorICAgICJIUlRGIgorfTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vU2NyaXB0UHJvY2Vz
c29yTm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1NjcmlwdFByb2Nl
c3Nvck5vZGUuY3BwCmluZGV4IDkxYzc1MzdlMTVlOGI1NTI0MTFlYTlmNjEzMDFlYzFjMzI1YWQy
NTYuLjc2MTBiMTUwMjQ4NzhiNjA2ZTVjZGQ4YzRmNWFiMGZiMTFkYzAzNDYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vU2NyaXB0UHJvY2Vzc29yTm9kZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9TY3JpcHRQcm9jZXNzb3JOb2Rl
LmNwcApAQCAtNDQsMTIgKzQ0LDEyIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogV1RGX01BS0Vf
SVNPX0FMTE9DQVRFRF9JTVBMKFNjcmlwdFByb2Nlc3Nvck5vZGUpOwogCi1SZWY8U2NyaXB0UHJv
Y2Vzc29yTm9kZT4gU2NyaXB0UHJvY2Vzc29yTm9kZTo6Y3JlYXRlKEF1ZGlvQ29udGV4dCYgY29u
dGV4dCwgZmxvYXQgc2FtcGxlUmF0ZSwgc2l6ZV90IGJ1ZmZlclNpemUsIHVuc2lnbmVkIG51bWJl
ck9mSW5wdXRDaGFubmVscywgdW5zaWduZWQgbnVtYmVyT2ZPdXRwdXRDaGFubmVscykKK1JlZjxT
Y3JpcHRQcm9jZXNzb3JOb2RlPiBTY3JpcHRQcm9jZXNzb3JOb2RlOjpjcmVhdGUoQXVkaW9Db250
ZXh0QmFzZSYgY29udGV4dCwgZmxvYXQgc2FtcGxlUmF0ZSwgc2l6ZV90IGJ1ZmZlclNpemUsIHVu
c2lnbmVkIG51bWJlck9mSW5wdXRDaGFubmVscywgdW5zaWduZWQgbnVtYmVyT2ZPdXRwdXRDaGFu
bmVscykKIHsKICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTY3JpcHRQcm9jZXNzb3JOb2RlKGNv
bnRleHQsIHNhbXBsZVJhdGUsIGJ1ZmZlclNpemUsIG51bWJlck9mSW5wdXRDaGFubmVscywgbnVt
YmVyT2ZPdXRwdXRDaGFubmVscykpOwogfQogCi1TY3JpcHRQcm9jZXNzb3JOb2RlOjpTY3JpcHRQ
cm9jZXNzb3JOb2RlKEF1ZGlvQ29udGV4dCYgY29udGV4dCwgZmxvYXQgc2FtcGxlUmF0ZSwgc2l6
ZV90IGJ1ZmZlclNpemUsIHVuc2lnbmVkIG51bWJlck9mSW5wdXRDaGFubmVscywgdW5zaWduZWQg
bnVtYmVyT2ZPdXRwdXRDaGFubmVscykKK1NjcmlwdFByb2Nlc3Nvck5vZGU6OlNjcmlwdFByb2Nl
c3Nvck5vZGUoQXVkaW9Db250ZXh0QmFzZSYgY29udGV4dCwgZmxvYXQgc2FtcGxlUmF0ZSwgc2l6
ZV90IGJ1ZmZlclNpemUsIHVuc2lnbmVkIG51bWJlck9mSW5wdXRDaGFubmVscywgdW5zaWduZWQg
bnVtYmVyT2ZPdXRwdXRDaGFubmVscykKICAgICA6IEF1ZGlvTm9kZShjb250ZXh0LCBzYW1wbGVS
YXRlKQogICAgICwgQWN0aXZlRE9NT2JqZWN0KGNvbnRleHQuc2NyaXB0RXhlY3V0aW9uQ29udGV4
dCgpKQogICAgICwgbV9kb3VibGVCdWZmZXJJbmRleCgwKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJhdWRpby9TY3JpcHRQcm9jZXNzb3JOb2RlLmggYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1NjcmlwdFByb2Nlc3Nvck5vZGUuaAppbmRleCA1YTRlN2Nl
NDc1MjJlZjI4ZWJmMmZkMTc5NmFmNTg0YmE3NWI0MTMzLi40YzE0YTA3NTdkZjVjNWU2MmRmZTk2
YTg4ZWI0MmI0N2YxNWU3MjU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmF1ZGlvL1NjcmlwdFByb2Nlc3Nvck5vZGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmF1ZGlvL1NjcmlwdFByb2Nlc3Nvck5vZGUuaApAQCAtNTIsNyArNTIsNyBAQCBwdWJsaWM6
CiAgICAgLy8gVGhpcyB2YWx1ZSBjb250cm9scyBob3cgZnJlcXVlbnRseSB0aGUgb25hdWRpb3By
b2Nlc3MgZXZlbnQgaGFuZGxlciBpcyBjYWxsZWQgYW5kIGhvdyBtYW55IHNhbXBsZS1mcmFtZXMg
bmVlZCB0byBiZSBwcm9jZXNzZWQgZWFjaCBjYWxsLgogICAgIC8vIExvd2VyIG51bWJlcnMgZm9y
IGJ1ZmZlclNpemUgd2lsbCByZXN1bHQgaW4gYSBsb3dlciAoYmV0dGVyKSBsYXRlbmN5LiBIaWdo
ZXIgbnVtYmVycyB3aWxsIGJlIG5lY2Vzc2FyeSB0byBhdm9pZCBhdWRpbyBicmVha3VwIGFuZCBn
bGl0Y2hlcy4KICAgICAvLyBUaGUgdmFsdWUgY2hvc2VuIG11c3QgY2FyZWZ1bGx5IGJhbGFuY2Ug
YmV0d2VlbiBsYXRlbmN5IGFuZCBhdWRpbyBxdWFsaXR5LgotICAgIHN0YXRpYyBSZWY8U2NyaXB0
UHJvY2Vzc29yTm9kZT4gY3JlYXRlKEF1ZGlvQ29udGV4dCYsIGZsb2F0IHNhbXBsZVJhdGUsIHNp
emVfdCBidWZmZXJTaXplLCB1bnNpZ25lZCBudW1iZXJPZklucHV0Q2hhbm5lbHMsIHVuc2lnbmVk
IG51bWJlck9mT3V0cHV0Q2hhbm5lbHMpOworICAgIHN0YXRpYyBSZWY8U2NyaXB0UHJvY2Vzc29y
Tm9kZT4gY3JlYXRlKEF1ZGlvQ29udGV4dEJhc2UmLCBmbG9hdCBzYW1wbGVSYXRlLCBzaXplX3Qg
YnVmZmVyU2l6ZSwgdW5zaWduZWQgbnVtYmVyT2ZJbnB1dENoYW5uZWxzLCB1bnNpZ25lZCBudW1i
ZXJPZk91dHB1dENoYW5uZWxzKTsKIAogICAgIHZpcnR1YWwgflNjcmlwdFByb2Nlc3Nvck5vZGUo
KTsKIApAQCAtNzEsNyArNzEsNyBAQCBwcml2YXRlOgogICAgIGRvdWJsZSB0YWlsVGltZSgpIGNv
bnN0IG92ZXJyaWRlOwogICAgIGRvdWJsZSBsYXRlbmN5VGltZSgpIGNvbnN0IG92ZXJyaWRlOwog
Ci0gICAgU2NyaXB0UHJvY2Vzc29yTm9kZShBdWRpb0NvbnRleHQmLCBmbG9hdCBzYW1wbGVSYXRl
LCBzaXplX3QgYnVmZmVyU2l6ZSwgdW5zaWduZWQgbnVtYmVyT2ZJbnB1dENoYW5uZWxzLCB1bnNp
Z25lZCBudW1iZXJPZk91dHB1dENoYW5uZWxzKTsKKyAgICBTY3JpcHRQcm9jZXNzb3JOb2RlKEF1
ZGlvQ29udGV4dEJhc2UmLCBmbG9hdCBzYW1wbGVSYXRlLCBzaXplX3QgYnVmZmVyU2l6ZSwgdW5z
aWduZWQgbnVtYmVyT2ZJbnB1dENoYW5uZWxzLCB1bnNpZ25lZCBudW1iZXJPZk91dHB1dENoYW5u
ZWxzKTsKIAogICAgIHZvaWQgZmlyZVByb2Nlc3NFdmVudCgpOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1dhdmVTaGFwZXJOb2RlLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vV2F2ZVNoYXBlck5vZGUuY3BwCmluZGV4IDZlN2U4ZGQx
YzljMTlmYTNjODVlM2Q5ZDg1NWFiOWY0NTc4NWI3OTAuLmFlNGFmOWYyMzJmNzUxMzZjMDgxYWZl
MTRiZDdhNzk1NmMwNTI5NmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
YXVkaW8vV2F2ZVNoYXBlck5vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
YXVkaW8vV2F2ZVNoYXBlck5vZGUuY3BwCkBAIC0zNSw3ICszNSw3IEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAogV1RGX01BS0VfSVNPX0FMTE9DQVRFRF9JTVBMKFdhdmVTaGFwZXJOb2RlKTsKIAot
V2F2ZVNoYXBlck5vZGU6OldhdmVTaGFwZXJOb2RlKEF1ZGlvQ29udGV4dCYgY29udGV4dCkKK1dh
dmVTaGFwZXJOb2RlOjpXYXZlU2hhcGVyTm9kZShBdWRpb0NvbnRleHRCYXNlJiBjb250ZXh0KQog
ICAgIDogQXVkaW9CYXNpY1Byb2Nlc3Nvck5vZGUoY29udGV4dCwgY29udGV4dC5zYW1wbGVSYXRl
KCkpCiB7CiAgICAgc2V0Tm9kZVR5cGUoTm9kZVR5cGVXYXZlU2hhcGVyKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vV2F2ZVNoYXBlck5vZGUuaCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vV2F2ZVNoYXBlck5vZGUuaAppbmRleCBmNDllMzQ5
YmMzZGM4YzI5YjRhNmU2M2RmZGJmOTg2NGI5NmY4NjgwLi41ZjQ5MzI4YjIyZDBlYmU1ZDZlZjZk
MDNjNmFlNmQ2ZmZjMWExMTBlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmF1ZGlvL1dhdmVTaGFwZXJOb2RlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJh
dWRpby9XYXZlU2hhcGVyTm9kZS5oCkBAIC0zMyw3ICszMyw3IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIGNsYXNzIFdhdmVTaGFwZXJOb2RlIGZpbmFsIDogcHVibGljIEF1ZGlvQmFzaWNQcm9jZXNz
b3JOb2RlIHsKICAgICBXVEZfTUFLRV9JU09fQUxMT0NBVEVEKFdhdmVTaGFwZXJOb2RlKTsKIHB1
YmxpYzoKLSAgICBzdGF0aWMgUmVmPFdhdmVTaGFwZXJOb2RlPiBjcmVhdGUoQXVkaW9Db250ZXh0
JiBjb250ZXh0KQorICAgIHN0YXRpYyBSZWY8V2F2ZVNoYXBlck5vZGU+IGNyZWF0ZShBdWRpb0Nv
bnRleHRCYXNlJiBjb250ZXh0KQogICAgIHsKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcg
V2F2ZVNoYXBlck5vZGUoY29udGV4dCkpOwogICAgIH0KQEAgLTQ5LDcgKzQ5LDcgQEAgcHVibGlj
OgogICAgIGRvdWJsZSBsYXRlbmN5KCkgY29uc3QgeyByZXR1cm4gbGF0ZW5jeVRpbWUoKTsgfQog
CiBwcml2YXRlOiAgICAKLSAgICBleHBsaWNpdCBXYXZlU2hhcGVyTm9kZShBdWRpb0NvbnRleHQm
KTsgICAgCisgICAgZXhwbGljaXQgV2F2ZVNoYXBlck5vZGUoQXVkaW9Db250ZXh0QmFzZSYpOwog
CiAgICAgV2F2ZVNoYXBlclByb2Nlc3Nvciogd2F2ZVNoYXBlclByb2Nlc3NvcigpIHsgcmV0dXJu
IHN0YXRpY19jYXN0PFdhdmVTaGFwZXJQcm9jZXNzb3IqPihwcm9jZXNzb3IoKSk7IH0KIH07CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1dlYktpdEF1ZGlvQ29u
dGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1dlYktpdEF1ZGlvQ29u
dGV4dC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uZjQwMjA4MTlhODkzN2ZjNjNkNTNkNTVmM2VhN2Q3OWI5NDky
MTEwMgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8v
V2ViS2l0QXVkaW9Db250ZXh0LmNwcApAQCAtMCwwICsxLDE0MDIgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdo
dCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVS
UE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMK
KyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTgorICogQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTCisgKiBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5j
bHVkZSAiY29uZmlnLmgiCisKKyNpZiBFTkFCTEUoV0VCX0FVRElPKQorCisjaW5jbHVkZSAiV2Vi
S2l0QXVkaW9Db250ZXh0LmgiCisKKyNpbmNsdWRlICJBbmFseXNlck5vZGUuaCIKKyNpbmNsdWRl
ICJBc3luY0F1ZGlvRGVjb2Rlci5oIgorI2luY2x1ZGUgIkF1ZGlvQnVmZmVyLmgiCisjaW5jbHVk
ZSAiQXVkaW9CdWZmZXJDYWxsYmFjay5oIgorI2luY2x1ZGUgIkF1ZGlvQnVmZmVyU291cmNlTm9k
ZS5oIgorI2luY2x1ZGUgIkF1ZGlvTGlzdGVuZXIuaCIKKyNpbmNsdWRlICJBdWRpb05vZGVJbnB1
dC5oIgorI2luY2x1ZGUgIkF1ZGlvTm9kZU91dHB1dC5oIgorI2luY2x1ZGUgIkF1ZGlvU2Vzc2lv
bi5oIgorI2luY2x1ZGUgIkJpcXVhZEZpbHRlck5vZGUuaCIKKyNpbmNsdWRlICJDaGFubmVsTWVy
Z2VyTm9kZS5oIgorI2luY2x1ZGUgIkNoYW5uZWxTcGxpdHRlck5vZGUuaCIKKyNpbmNsdWRlICJD
b252b2x2ZXJOb2RlLmgiCisjaW5jbHVkZSAiRGVmYXVsdEF1ZGlvRGVzdGluYXRpb25Ob2RlLmgi
CisjaW5jbHVkZSAiRGVsYXlOb2RlLmgiCisjaW5jbHVkZSAiRG9jdW1lbnQuaCIKKyNpbmNsdWRl
ICJEeW5hbWljc0NvbXByZXNzb3JOb2RlLmgiCisjaW5jbHVkZSAiRXZlbnROYW1lcy5oIgorI2lu
Y2x1ZGUgIkZGVEZyYW1lLmgiCisjaW5jbHVkZSAiRnJhbWUuaCIKKyNpbmNsdWRlICJGcmFtZUxv
YWRlci5oIgorI2luY2x1ZGUgIkdhaW5Ob2RlLmgiCisjaW5jbHVkZSAiR2VuZXJpY0V2ZW50UXVl
dWUuaCIKKyNpbmNsdWRlICJIUlRGRGF0YWJhc2VMb2FkZXIuaCIKKyNpbmNsdWRlICJIUlRGUGFu
bmVyLmgiCisjaW5jbHVkZSAiSlNET01Qcm9taXNlRGVmZXJyZWQuaCIKKyNpbmNsdWRlICJMb2dn
aW5nLmgiCisjaW5jbHVkZSAiTmV0d29ya2luZ0NvbnRleHQuaCIKKyNpbmNsdWRlICJPZmZsaW5l
QXVkaW9Db21wbGV0aW9uRXZlbnQuaCIKKyNpbmNsdWRlICJPZmZsaW5lQXVkaW9EZXN0aW5hdGlv
bk5vZGUuaCIKKyNpbmNsdWRlICJPc2NpbGxhdG9yTm9kZS5oIgorI2luY2x1ZGUgIlBhZ2UuaCIK
KyNpbmNsdWRlICJQZXJpb2RpY1dhdmUuaCIKKyNpbmNsdWRlICJQbGF0Zm9ybU1lZGlhU2Vzc2lv
bk1hbmFnZXIuaCIKKyNpbmNsdWRlICJTY3JpcHRDb250cm9sbGVyLmgiCisjaW5jbHVkZSAiU2Ny
aXB0UHJvY2Vzc29yTm9kZS5oIgorI2luY2x1ZGUgIldhdmVTaGFwZXJOb2RlLmgiCisjaW5jbHVk
ZSAiV2ViS2l0QXVkaW9QYW5uZXJOb2RlLmgiCisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvU2Ny
aXB0Q2FsbFN0YWNrLmg+CisKKyNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQorI2luY2x1ZGUgIk1l
ZGlhU3RyZWFtLmgiCisjaW5jbHVkZSAiTWVkaWFTdHJlYW1BdWRpb0Rlc3RpbmF0aW9uTm9kZS5o
IgorI2luY2x1ZGUgIk1lZGlhU3RyZWFtQXVkaW9Tb3VyY2UuaCIKKyNpbmNsdWRlICJNZWRpYVN0
cmVhbUF1ZGlvU291cmNlTm9kZS5oIgorI2VuZGlmCisKKyNpZiBFTkFCTEUoVklERU8pCisjaW5j
bHVkZSAiSFRNTE1lZGlhRWxlbWVudC5oIgorI2luY2x1ZGUgIk1lZGlhRWxlbWVudEF1ZGlvU291
cmNlTm9kZS5oIgorI2VuZGlmCisKKyNpZiBERUJVR19BVURJT05PREVfUkVGRVJFTkNFUworI2lu
Y2x1ZGUgPHN0ZGlvLmg+CisjZW5kaWYKKworI2lmIFVTRShHU1RSRUFNRVIpCisjaW5jbHVkZSAi
R1N0cmVhbWVyQ29tbW9uLmgiCisjZW5kaWYKKworI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCisj
aW5jbHVkZSAiU2NyaXB0Q29udHJvbGxlci5oIgorI2luY2x1ZGUgIlNldHRpbmdzLmgiCisjZW5k
aWYKKworI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0FycmF5QnVmZmVyLmg+CisjaW5jbHVkZSA8
d3RmL0F0b21pY3MuaD4KKyNpbmNsdWRlIDx3dGYvSXNvTWFsbG9jSW5saW5lcy5oPgorI2luY2x1
ZGUgPHd0Zi9NYWluVGhyZWFkLmg+CisjaW5jbHVkZSA8d3RmL1JlZi5oPgorI2luY2x1ZGUgPHd0
Zi9SZWZDb3VudGVkLmg+CisjaW5jbHVkZSA8d3RmL1Njb3BlLmg+CisjaW5jbHVkZSA8d3RmL3Rl
eHQvV1RGU3RyaW5nLmg+CisKK2NvbnN0IHVuc2lnbmVkIE1heFBlcmlvZGljV2F2ZUxlbmd0aCA9
IDQwOTY7CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworV1RGX01BS0VfSVNPX0FMTE9DQVRFRF9J
TVBMKFdlYktpdEF1ZGlvQ29udGV4dCk7CisKKyNkZWZpbmUgUkVMRUFTRV9MT0dfSUZfQUxMT1dF
RChmbXQsIC4uLikgUkVMRUFTRV9MT0dfSUYoZG9jdW1lbnQoKSAmJiBkb2N1bWVudCgpLT5wYWdl
KCkgJiYgZG9jdW1lbnQoKS0+cGFnZSgpLT5pc0Fsd2F5c09uTG9nZ2luZ0FsbG93ZWQoKSwgTWVk
aWEsICIlcCAtIFdlYktpdEF1ZGlvQ29udGV4dDo6IiBmbXQsIHRoaXMsICMjX19WQV9BUkdTX18p
CisKK2Jvb2wgV2ViS2l0QXVkaW9Db250ZXh0Ojppc1NhbXBsZVJhdGVSYW5nZUdvb2QoZmxvYXQg
c2FtcGxlUmF0ZSkKK3sKKyAgICAvLyBGSVhNRTogSXQgd291bGQgYmUgbmljZSBpZiB0aGUgbWlu
aW11bSBzYW1wbGUtcmF0ZSBjb3VsZCBiZSBsZXNzIHRoYW4gNDQuMUtIeiwKKyAgICAvLyBidXQg
dGhhdCB3aWxsIHJlcXVpcmUgc29tZSBmaXhlcyBpbiBIUlRGUGFubmVyOjpmZnRTaXplRm9yU2Ft
cGxlUmF0ZSgpLCBhbmQgc29tZSB0ZXN0aW5nIHRoZXJlLgorICAgIHJldHVybiBzYW1wbGVSYXRl
ID49IDQ0MTAwICYmIHNhbXBsZVJhdGUgPD0gOTYwMDA7Cit9CisKKyNpZiBPUyhXSU5ET1dTKQor
Ly8gRG9uJ3QgYWxsb3cgbW9yZSB0aGFuIHRoaXMgbnVtYmVyIG9mIHNpbXVsdGFuZW91cyBBdWRp
b0NvbnRleHRzIHRhbGtpbmcgdG8gaGFyZHdhcmUuCitjb25zdGV4cHIgdW5zaWduZWQgbWF4SGFy
ZHdhcmVDb250ZXh0cyA9IDQ7CisjZW5kaWYKK3Vuc2lnbmVkIFdlYktpdEF1ZGlvQ29udGV4dDo6
c19oYXJkd2FyZUNvbnRleHRDb3VudCA9IDA7CisKK0V4Y2VwdGlvbk9yPFJlZjxXZWJLaXRBdWRp
b0NvbnRleHQ+PiBXZWJLaXRBdWRpb0NvbnRleHQ6OmNyZWF0ZShEb2N1bWVudCYgZG9jdW1lbnQp
Cit7CisgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKyNpZiBPUyhXSU5ET1dTKQorICAgIGlm
IChzX2hhcmR3YXJlQ29udGV4dENvdW50ID49IG1heEhhcmR3YXJlQ29udGV4dHMpCisgICAgICAg
IHJldHVybiBFeGNlcHRpb24geyBRdW90YUV4Y2VlZGVkRXJyb3IgfTsKKyNlbmRpZgorCisgICAg
YXV0byBhdWRpb0NvbnRleHQgPSBhZG9wdFJlZigqbmV3IFdlYktpdEF1ZGlvQ29udGV4dChkb2N1
bWVudCkpOworICAgIGF1ZGlvQ29udGV4dC0+c3VzcGVuZElmTmVlZGVkKCk7CisgICAgcmV0dXJu
IGF1ZGlvQ29udGV4dDsKK30KKworLy8gQ29uc3RydWN0b3IgZm9yIHJlbmRlcmluZyB0byB0aGUg
YXVkaW8gaGFyZHdhcmUuCitXZWJLaXRBdWRpb0NvbnRleHQ6OldlYktpdEF1ZGlvQ29udGV4dChE
b2N1bWVudCYgZG9jdW1lbnQpCisgICAgOiBBdWRpb0NvbnRleHRCYXNlKGRvY3VtZW50KQorI2lm
ICFSRUxFQVNFX0xPR19ESVNBQkxFRAorICAgICwgbV9sb2dnZXIoZG9jdW1lbnQubG9nZ2VyKCkp
CisgICAgLCBtX2xvZ0lkZW50aWZpZXIodW5pcXVlTG9nSWRlbnRpZmllcigpKQorI2VuZGlmCisg
ICAgLCBtX21lZGlhU2Vzc2lvbihQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6Y3JlYXRlKFBsYXRmb3Jt
TWVkaWFTZXNzaW9uTWFuYWdlcjo6c2hhcmVkTWFuYWdlcigpLCAqdGhpcykpCisgICAgLCBtX2V2
ZW50UXVldWUoTWFpblRocmVhZEdlbmVyaWNFdmVudFF1ZXVlOjpjcmVhdGUoKnRoaXMpKQorewor
ICAgIC8vIEFjY29yZGluZyB0byBzcGVjIEF1ZGlvQ29udGV4dCBtdXN0IGRpZSBvbmx5IGFmdGVy
IHBhZ2UgbmF2aWdhdGUuCisgICAgLy8gTGV0cyBtYXJrIGl0IGFzIEFjdGl2ZURPTU9iamVjdCB3
aXRoIHBlbmRpbmcgYWN0aXZpdHkgYW5kIHVubWFyayBpdCBpbiBjbGVhciBtZXRob2QuCisgICAg
bWFrZVBlbmRpbmdBY3Rpdml0eSgpOworCisgICAgY29uc3RydWN0Q29tbW9uKCk7CisKKyAgICBt
X2Rlc3RpbmF0aW9uTm9kZSA9IERlZmF1bHRBdWRpb0Rlc3RpbmF0aW9uTm9kZTo6Y3JlYXRlKCp0
aGlzKTsKKworICAgIC8vIEluaXRpYWxpemUgdGhlIGRlc3RpbmF0aW9uIG5vZGUncyBtdXRlZCBz
dGF0ZSB0byBtYXRjaCB0aGUgcGFnZSdzIGN1cnJlbnQgbXV0ZWQgc3RhdGUuCisgICAgcGFnZU11
dGVkU3RhdGVEaWRDaGFuZ2UoKTsKKworICAgIGRvY3VtZW50LmFkZEF1ZGlvUHJvZHVjZXIoKnRo
aXMpOworICAgIGRvY3VtZW50LnJlZ2lzdGVyRm9yVmlzaWJpbGl0eVN0YXRlQ2hhbmdlZENhbGxi
YWNrcygqdGhpcyk7Cit9CisKKy8vIENvbnN0cnVjdG9yIGZvciBvZmZsaW5lIChub24tcmVhbHRp
bWUpIHJlbmRlcmluZy4KK1dlYktpdEF1ZGlvQ29udGV4dDo6V2ViS2l0QXVkaW9Db250ZXh0KERv
Y3VtZW50JiBkb2N1bWVudCwgQXVkaW9CdWZmZXIqIHJlbmRlclRhcmdldCkKKyAgICA6IEF1ZGlv
Q29udGV4dEJhc2UoZG9jdW1lbnQpCisjaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECisgICAgLCBt
X2xvZ2dlcihkb2N1bWVudC5sb2dnZXIoKSkKKyAgICAsIG1fbG9nSWRlbnRpZmllcih1bmlxdWVM
b2dJZGVudGlmaWVyKCkpCisjZW5kaWYKKyAgICAsIG1faXNPZmZsaW5lQ29udGV4dCh0cnVlKQor
ICAgICwgbV9tZWRpYVNlc3Npb24oUGxhdGZvcm1NZWRpYVNlc3Npb246OmNyZWF0ZShQbGF0Zm9y
bU1lZGlhU2Vzc2lvbk1hbmFnZXI6OnNoYXJlZE1hbmFnZXIoKSwgKnRoaXMpKQorICAgICwgbV9l
dmVudFF1ZXVlKE1haW5UaHJlYWRHZW5lcmljRXZlbnRRdWV1ZTo6Y3JlYXRlKCp0aGlzKSkKKyAg
ICAsIG1fcmVuZGVyVGFyZ2V0KHJlbmRlclRhcmdldCkKK3sKKyAgICBjb25zdHJ1Y3RDb21tb24o
KTsKKworICAgIC8vIENyZWF0ZSBhIG5ldyBkZXN0aW5hdGlvbiBmb3Igb2ZmbGluZSByZW5kZXJp
bmcuCisgICAgbV9kZXN0aW5hdGlvbk5vZGUgPSBPZmZsaW5lQXVkaW9EZXN0aW5hdGlvbk5vZGU6
OmNyZWF0ZSgqdGhpcywgbV9yZW5kZXJUYXJnZXQuZ2V0KCkpOworfQorCit2b2lkIFdlYktpdEF1
ZGlvQ29udGV4dDo6Y29uc3RydWN0Q29tbW9uKCkKK3sKKyAgICBGRlRGcmFtZTo6aW5pdGlhbGl6
ZSgpOworCisgICAgbV9saXN0ZW5lciA9IEF1ZGlvTGlzdGVuZXI6OmNyZWF0ZSgpOworCisgICAg
QVNTRVJUKGRvY3VtZW50KCkpOworICAgIGlmIChkb2N1bWVudCgpLT5hdWRpb1BsYXliYWNrUmVx
dWlyZXNVc2VyR2VzdHVyZSgpKQorICAgICAgICBhZGRCZWhhdmlvclJlc3RyaWN0aW9uKFJlcXVp
cmVVc2VyR2VzdHVyZUZvckF1ZGlvU3RhcnRSZXN0cmljdGlvbik7CisgICAgZWxzZQorICAgICAg
ICBtX3Jlc3RyaWN0aW9ucyA9IE5vUmVzdHJpY3Rpb25zOworCisjaWYgUExBVEZPUk0oQ09DT0Ep
CisgICAgYWRkQmVoYXZpb3JSZXN0cmljdGlvbihSZXF1aXJlUGFnZUNvbnNlbnRGb3JBdWRpb1N0
YXJ0UmVzdHJpY3Rpb24pOworI2VuZGlmCit9CisKK1dlYktpdEF1ZGlvQ29udGV4dDo6fldlYktp
dEF1ZGlvQ29udGV4dCgpCit7CisjaWYgREVCVUdfQVVESU9OT0RFX1JFRkVSRU5DRVMKKyAgICBm
cHJpbnRmKHN0ZGVyciwgIiVwOiBXZWJLaXRBdWRpb0NvbnRleHQ6On5XZWJLaXRBdWRpb0NvbnRl
eHQoKVxuIiwgdGhpcyk7CisjZW5kaWYKKyAgICBBU1NFUlQoIW1faXNJbml0aWFsaXplZCk7Cisg
ICAgQVNTRVJUKG1faXNTdG9wU2NoZWR1bGVkKTsKKyAgICBBU1NFUlQobV9ub2Rlc1RvRGVsZXRl
LmlzRW1wdHkoKSk7CisgICAgQVNTRVJUKG1fcmVmZXJlbmNlZE5vZGVzLmlzRW1wdHkoKSk7Cisg
ICAgQVNTRVJUKG1fZmluaXNoZWROb2Rlcy5pc0VtcHR5KCkpOyAvLyBGSVhNRSAoYnVnIDEwNTg3
MCk6IFRoaXMgYXNzZXJ0aW9uIGZhaWxzIG9uIHRlc3RzIHNvbWV0aW1lcy4KKyAgICBBU1NFUlQo
bV9hdXRvbWF0aWNQdWxsTm9kZXMuaXNFbXB0eSgpKTsKKyAgICBpZiAobV9hdXRvbWF0aWNQdWxs
Tm9kZXNOZWVkVXBkYXRpbmcpCisgICAgICAgIG1fcmVuZGVyaW5nQXV0b21hdGljUHVsbE5vZGVz
LnJlc2l6ZShtX2F1dG9tYXRpY1B1bGxOb2Rlcy5zaXplKCkpOworICAgIEFTU0VSVChtX3JlbmRl
cmluZ0F1dG9tYXRpY1B1bGxOb2Rlcy5pc0VtcHR5KCkpOworICAgIC8vIEZJWE1FOiBDYW4gd2Ug
YXNzZXJ0IHRoYXQgbV9kZWZlcnJlZEZpbmlzaERlcmVmTGlzdCBpcyBlbXB0eT8KKworICAgIGlm
ICghaXNPZmZsaW5lQ29udGV4dCgpICYmIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSkgeworICAg
ICAgICBkb2N1bWVudCgpLT5yZW1vdmVBdWRpb1Byb2R1Y2VyKCp0aGlzKTsKKyAgICAgICAgZG9j
dW1lbnQoKS0+dW5yZWdpc3RlckZvclZpc2liaWxpdHlTdGF0ZUNoYW5nZWRDYWxsYmFja3MoKnRo
aXMpOworICAgIH0KK30KKwordm9pZCBXZWJLaXRBdWRpb0NvbnRleHQ6OmxhenlJbml0aWFsaXpl
KCkKK3sKKyAgICBBU1NFUlQoIW1faXNTdG9wU2NoZWR1bGVkKTsKKworICAgIGlmIChtX2lzSW5p
dGlhbGl6ZWQpCisgICAgICAgIHJldHVybjsKKworICAgIC8vIERvbid0IGFsbG93IHRoZSBjb250
ZXh0IHRvIGluaXRpYWxpemUgYSBzZWNvbmQgdGltZSBhZnRlciBpdCdzIGFscmVhZHkgYmVlbiBl
eHBsaWNpdGx5IHVuaW5pdGlhbGl6ZWQuCisgICAgQVNTRVJUKCFtX2lzQXVkaW9UaHJlYWRGaW5p
c2hlZCk7CisgICAgaWYgKG1faXNBdWRpb1RocmVhZEZpbmlzaGVkKQorICAgICAgICByZXR1cm47
CisKKyAgICBpZiAobV9kZXN0aW5hdGlvbk5vZGUpIHsKKyAgICAgICAgbV9kZXN0aW5hdGlvbk5v
ZGUtPmluaXRpYWxpemUoKTsKKworICAgICAgICBpZiAoIWlzT2ZmbGluZUNvbnRleHQoKSkgewor
ICAgICAgICAgICAgLy8gVGhpcyBzdGFydHMgdGhlIGF1ZGlvIHRocmVhZC4gVGhlIGRlc3RpbmF0
aW9uIG5vZGUncyBwcm92aWRlSW5wdXQoKSBtZXRob2Qgd2lsbCBub3cgYmUgY2FsbGVkIHJlcGVh
dGVkbHkgdG8gcmVuZGVyIGF1ZGlvLgorICAgICAgICAgICAgLy8gRWFjaCB0aW1lIHByb3ZpZGVJ
bnB1dCgpIGlzIGNhbGxlZCwgYSBwb3J0aW9uIG9mIHRoZSBhdWRpbyBzdHJlYW0gaXMgcmVuZGVy
ZWQuIExldCdzIGNhbGwgdGhpcyB0aW1lIHBlcmlvZCBhICJyZW5kZXIgcXVhbnR1bSIuCisgICAg
ICAgICAgICAvLyBOT1RFOiBmb3Igbm93IGRlZmF1bHQgQXVkaW9Db250ZXh0IGRvZXMgbm90IG5l
ZWQgYW4gZXhwbGljaXQgc3RhcnRSZW5kZXJpbmcoKSBjYWxsIGZyb20gSmF2YVNjcmlwdC4KKyAg
ICAgICAgICAgIC8vIFdlIG1heSB3YW50IHRvIGNvbnNpZGVyIHJlcXVpcmluZyBpdCBmb3Igc3lt
bWV0cnkgd2l0aCBPZmZsaW5lQXVkaW9Db250ZXh0LgorICAgICAgICAgICAgc3RhcnRSZW5kZXJp
bmcoKTsKKyAgICAgICAgICAgICsrc19oYXJkd2FyZUNvbnRleHRDb3VudDsKKyAgICAgICAgfQor
ICAgIH0KKyAgICBtX2lzSW5pdGlhbGl6ZWQgPSB0cnVlOworfQorCit2b2lkIFdlYktpdEF1ZGlv
Q29udGV4dDo6Y2xlYXIoKQoreworICAgIFJlZjxXZWJLaXRBdWRpb0NvbnRleHQ+IHByb3RlY3Rl
ZFRoaXMoKnRoaXMpOworCisgICAgLy8gV2UgaGF2ZSB0byByZWxlYXNlIG91ciByZWZlcmVuY2Ug
dG8gdGhlIGRlc3RpbmF0aW9uIG5vZGUgYmVmb3JlIHRoZSBjb250ZXh0IHdpbGwgZXZlciBiZSBk
ZWxldGVkIHNpbmNlIHRoZSBkZXN0aW5hdGlvbiBub2RlIGhvbGRzIGEgcmVmZXJlbmNlIHRvIHRo
ZSBjb250ZXh0LgorICAgIGlmIChtX2Rlc3RpbmF0aW9uTm9kZSkKKyAgICAgICAgbV9kZXN0aW5h
dGlvbk5vZGUgPSBudWxscHRyOworCisgICAgLy8gQXVkaW8gdGhyZWFkIGlzIGRlYWQuIE5vYm9k
eSB3aWxsIHNjaGVkdWxlIG5vZGUgZGVsZXRpb24gYWN0aW9uLiBMZXQncyBkbyBpdCBvdXJzZWx2
ZXMuCisgICAgZG8geworICAgICAgICBkZWxldGVNYXJrZWROb2RlcygpOworICAgICAgICBtX25v
ZGVzVG9EZWxldGUuYXBwZW5kVmVjdG9yKG1fbm9kZXNNYXJrZWRGb3JEZWxldGlvbik7CisgICAg
ICAgIG1fbm9kZXNNYXJrZWRGb3JEZWxldGlvbi5jbGVhcigpOworICAgIH0gd2hpbGUgKG1fbm9k
ZXNUb0RlbGV0ZS5zaXplKCkpOworCisgICAgY2xlYXJQZW5kaW5nQWN0aXZpdHkoKTsKK30KKwor
dm9pZCBXZWJLaXRBdWRpb0NvbnRleHQ6OnVuaW5pdGlhbGl6ZSgpCit7CisgICAgQUxXQVlTX0xP
RyhMT0dJREVOVElGSUVSKTsKKworICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisKKyAgICBp
ZiAoIW1faXNJbml0aWFsaXplZCkKKyAgICAgICAgcmV0dXJuOworCisgICAgLy8gVGhpcyBzdG9w
cyB0aGUgYXVkaW8gdGhyZWFkIGFuZCBhbGwgYXVkaW8gcmVuZGVyaW5nLgorICAgIGlmIChtX2Rl
c3RpbmF0aW9uTm9kZSkKKyAgICAgICAgbV9kZXN0aW5hdGlvbk5vZGUtPnVuaW5pdGlhbGl6ZSgp
OworCisgICAgLy8gRG9uJ3QgYWxsb3cgdGhlIGNvbnRleHQgdG8gaW5pdGlhbGl6ZSBhIHNlY29u
ZCB0aW1lIGFmdGVyIGl0J3MgYWxyZWFkeSBiZWVuIGV4cGxpY2l0bHkgdW5pbml0aWFsaXplZC4K
KyAgICBtX2lzQXVkaW9UaHJlYWRGaW5pc2hlZCA9IHRydWU7CisKKyAgICBpZiAoIWlzT2ZmbGlu
ZUNvbnRleHQoKSkgeworICAgICAgICBBU1NFUlQoc19oYXJkd2FyZUNvbnRleHRDb3VudCk7Cisg
ICAgICAgIC0tc19oYXJkd2FyZUNvbnRleHRDb3VudDsKKworICAgICAgICAvLyBPZmZsaW5lIGNv
bnRleHRzIG1vdmUgdG8gJ0Nsb3NlZCcgc3RhdGUgd2hlbiBkaXNwYXRjaGluZyB0aGUgY29tcGxl
dGlvbiBldmVudC4KKyAgICAgICAgc2V0U3RhdGUoU3RhdGU6OkNsb3NlZCk7CisgICAgfQorCisg
ICAgLy8gR2V0IHJpZCBvZiB0aGUgc291cmNlcyB3aGljaCBtYXkgc3RpbGwgYmUgcGxheWluZy4K
KyAgICBkZXJlZlVuZmluaXNoZWRTb3VyY2VOb2RlcygpOworCisgICAgbV9pc0luaXRpYWxpemVk
ID0gZmFsc2U7Cit9CisKK2Jvb2wgV2ViS2l0QXVkaW9Db250ZXh0Ojppc0luaXRpYWxpemVkKCkg
Y29uc3QKK3sKKyAgICByZXR1cm4gbV9pc0luaXRpYWxpemVkOworfQorCit2b2lkIFdlYktpdEF1
ZGlvQ29udGV4dDo6YWRkUmVhY3Rpb24oU3RhdGUgc3RhdGUsIERPTVByb21pc2VEZWZlcnJlZDx2
b2lkPiYmIHByb21pc2UpCit7CisgICAgc2l6ZV90IHN0YXRlSW5kZXggPSBzdGF0aWNfY2FzdDxz
aXplX3Q+KHN0YXRlKTsKKyAgICBpZiAoc3RhdGVJbmRleCA+PSBtX3N0YXRlUmVhY3Rpb25zLnNp
emUoKSkKKyAgICAgICAgbV9zdGF0ZVJlYWN0aW9ucy5ncm93KHN0YXRlSW5kZXggKyAxKTsKKwor
ICAgIG1fc3RhdGVSZWFjdGlvbnNbc3RhdGVJbmRleF0uYXBwZW5kKFdURk1vdmUocHJvbWlzZSkp
OworfQorCit2b2lkIFdlYktpdEF1ZGlvQ29udGV4dDo6c2V0U3RhdGUoU3RhdGUgc3RhdGUpCit7
CisgICAgaWYgKG1fc3RhdGUgPT0gc3RhdGUpCisgICAgICAgIHJldHVybjsKKworICAgIG1fc3Rh
dGUgPSBzdGF0ZTsKKyAgICBtX2V2ZW50UXVldWUtPmVucXVldWVFdmVudChFdmVudDo6Y3JlYXRl
KGV2ZW50TmFtZXMoKS5zdGF0ZWNoYW5nZUV2ZW50LCBFdmVudDo6Q2FuQnViYmxlOjpZZXMsIEV2
ZW50OjpJc0NhbmNlbGFibGU6Ok5vKSk7CisKKyAgICBzaXplX3Qgc3RhdGVJbmRleCA9IHN0YXRp
Y19jYXN0PHNpemVfdD4oc3RhdGUpOworICAgIGlmIChzdGF0ZUluZGV4ID49IG1fc3RhdGVSZWFj
dGlvbnMuc2l6ZSgpKQorICAgICAgICByZXR1cm47CisKKyAgICBWZWN0b3I8RE9NUHJvbWlzZURl
ZmVycmVkPHZvaWQ+PiByZWFjdGlvbnM7CisgICAgbV9zdGF0ZVJlYWN0aW9uc1tzdGF0ZUluZGV4
XS5zd2FwKHJlYWN0aW9ucyk7CisKKyAgICBmb3IgKGF1dG8mIHByb21pc2UgOiByZWFjdGlvbnMp
CisgICAgICAgIHByb21pc2UucmVzb2x2ZSgpOworfQorCit2b2lkIFdlYktpdEF1ZGlvQ29udGV4
dDo6c3RvcCgpCit7CisgICAgQUxXQVlTX0xPRyhMT0dJREVOVElGSUVSKTsKKworICAgIEFTU0VS
VChpc01haW5UaHJlYWQoKSk7CisKKyAgICAvLyBVc3VhbGx5IFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQgY2FsbHMgc3RvcCB0d2ljZS4KKyAgICBpZiAobV9pc1N0b3BTY2hlZHVsZWQpCisgICAgICAg
IHJldHVybjsKKyAgICBtX2lzU3RvcFNjaGVkdWxlZCA9IHRydWU7CisKKyAgICBBU1NFUlQoZG9j
dW1lbnQoKSk7CisgICAgZG9jdW1lbnQoKS0+dXBkYXRlSXNQbGF5aW5nTWVkaWEoKTsKKworICAg
IHVuaW5pdGlhbGl6ZSgpOworICAgIGNsZWFyKCk7Cit9CisKK3ZvaWQgV2ViS2l0QXVkaW9Db250
ZXh0OjpzdXNwZW5kKFJlYXNvbkZvclN1c3BlbnNpb24pCit7CisgICAgaWYgKHN0YXRlKCkgPT0g
U3RhdGU6OlJ1bm5pbmcpIHsKKyAgICAgICAgbV9tZWRpYVNlc3Npb24tPmJlZ2luSW50ZXJydXB0
aW9uKFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpQbGF5YmFja1N1c3BlbmRlZCk7CisgICAgICAgIGRv
Y3VtZW50KCktPnVwZGF0ZUlzUGxheWluZ01lZGlhKCk7CisgICAgfQorfQorCit2b2lkIFdlYktp
dEF1ZGlvQ29udGV4dDo6cmVzdW1lKCkKK3sKKyAgICBpZiAoc3RhdGUoKSA9PSBTdGF0ZTo6SW50
ZXJydXB0ZWQpIHsKKyAgICAgICAgbV9tZWRpYVNlc3Npb24tPmVuZEludGVycnVwdGlvbihQbGF0
Zm9ybU1lZGlhU2Vzc2lvbjo6TWF5UmVzdW1lUGxheWluZyk7CisgICAgICAgIGRvY3VtZW50KCkt
PnVwZGF0ZUlzUGxheWluZ01lZGlhKCk7CisgICAgfQorfQorCitjb25zdCBjaGFyKiBXZWJLaXRB
dWRpb0NvbnRleHQ6OmFjdGl2ZURPTU9iamVjdE5hbWUoKSBjb25zdAoreworICAgIHJldHVybiAi
V2ViS2l0QXVkaW9Db250ZXh0IjsKK30KKworRG9jdW1lbnRJZGVudGlmaWVyIFdlYktpdEF1ZGlv
Q29udGV4dDo6aG9zdGluZ0RvY3VtZW50SWRlbnRpZmllcigpIGNvbnN0Cit7CisgICAgYXV0byog
ZG9jdW1lbnQgPSBkb3duY2FzdDxEb2N1bWVudD4obV9zY3JpcHRFeGVjdXRpb25Db250ZXh0KTsK
KyAgICByZXR1cm4gZG9jdW1lbnQgPyBkb2N1bWVudC0+aWRlbnRpZmllcigpIDogRG9jdW1lbnRJ
ZGVudGlmaWVyIHsgfTsKK30KKworYm9vbCBXZWJLaXRBdWRpb0NvbnRleHQ6OmlzU3VzcGVuZGVk
KCkgY29uc3QKK3sKKyAgICByZXR1cm4gIWRvY3VtZW50KCkgfHwgZG9jdW1lbnQoKS0+YWN0aXZl
RE9NT2JqZWN0c0FyZVN1c3BlbmRlZCgpIHx8IGRvY3VtZW50KCktPmFjdGl2ZURPTU9iamVjdHNB
cmVTdG9wcGVkKCk7Cit9CisKK3ZvaWQgV2ViS2l0QXVkaW9Db250ZXh0Ojp2aXNpYmlsaXR5U3Rh
dGVDaGFuZ2VkKCkKK3sKKyAgICAvLyBEbyBub3Qgc3VzcGVuZCBpZiBhdWRpbyBpcyBhdWRpYmxl
LgorICAgIGlmICghZG9jdW1lbnQoKSB8fCBtZWRpYVN0YXRlKCkgPT0gTWVkaWFQcm9kdWNlcjo6
SXNQbGF5aW5nQXVkaW8gfHwgbV9pc1N0b3BTY2hlZHVsZWQpCisgICAgICAgIHJldHVybjsKKwor
ICAgIGlmIChkb2N1bWVudCgpLT5oaWRkZW4oKSkgeworICAgICAgICBpZiAoc3RhdGUoKSA9PSBT
dGF0ZTo6UnVubmluZykgeworICAgICAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgidmlz
aWJpbGl0eVN0YXRlQ2hhbmdlZCgpIFN1c3BlbmRpbmcgcGxheWJhY2sgYWZ0ZXIgZ29pbmcgdG8g
dGhlIGJhY2tncm91bmQiKTsKKyAgICAgICAgICAgIG1fbWVkaWFTZXNzaW9uLT5iZWdpbkludGVy
cnVwdGlvbihQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6RW50ZXJpbmdCYWNrZ3JvdW5kKTsKKyAgICAg
ICAgfQorICAgIH0gZWxzZSB7CisgICAgICAgIGlmIChzdGF0ZSgpID09IFN0YXRlOjpJbnRlcnJ1
cHRlZCkgeworICAgICAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgidmlzaWJpbGl0eVN0
YXRlQ2hhbmdlZCgpIFJlc3VtaW5nIHBsYXliYWNrIGFmdGVyIGVudGVyaW5nIGZvcmVncm91bmQi
KTsKKyAgICAgICAgICAgIG1fbWVkaWFTZXNzaW9uLT5lbmRJbnRlcnJ1cHRpb24oUGxhdGZvcm1N
ZWRpYVNlc3Npb246Ok1heVJlc3VtZVBsYXlpbmcpOworICAgICAgICB9CisgICAgfQorfQorCiti
b29sIFdlYktpdEF1ZGlvQ29udGV4dDo6d291bGRUYWludE9yaWdpbihjb25zdCBVUkwmIHVybCkg
Y29uc3QKK3sKKyAgICBpZiAodXJsLnByb3RvY29sSXNEYXRhKCkpCisgICAgICAgIHJldHVybiBm
YWxzZTsKKworICAgIGlmIChhdXRvKiBkb2N1bWVudCA9IHRoaXMtPmRvY3VtZW50KCkpCisgICAg
ICAgIHJldHVybiAhZG9jdW1lbnQtPnNlY3VyaXR5T3JpZ2luKCkuY2FuUmVxdWVzdCh1cmwpOwor
CisgICAgcmV0dXJuIGZhbHNlOworfQorCitFeGNlcHRpb25PcjxSZWY8QXVkaW9CdWZmZXI+PiBX
ZWJLaXRBdWRpb0NvbnRleHQ6OmNyZWF0ZUJ1ZmZlcih1bnNpZ25lZCBudW1iZXJPZkNoYW5uZWxz
LCBzaXplX3QgbnVtYmVyT2ZGcmFtZXMsIGZsb2F0IHNhbXBsZVJhdGUpCit7CisgICAgYXV0byBh
dWRpb0J1ZmZlciA9IEF1ZGlvQnVmZmVyOjpjcmVhdGUobnVtYmVyT2ZDaGFubmVscywgbnVtYmVy
T2ZGcmFtZXMsIHNhbXBsZVJhdGUpOworICAgIGlmICghYXVkaW9CdWZmZXIpCisgICAgICAgIHJl
dHVybiBFeGNlcHRpb24geyBOb3RTdXBwb3J0ZWRFcnJvciB9OworICAgIHJldHVybiBhdWRpb0J1
ZmZlci5yZWxlYXNlTm9uTnVsbCgpOworfQorCitFeGNlcHRpb25PcjxSZWY8QXVkaW9CdWZmZXI+
PiBXZWJLaXRBdWRpb0NvbnRleHQ6OmNyZWF0ZUJ1ZmZlcihBcnJheUJ1ZmZlciYgYXJyYXlCdWZm
ZXIsIGJvb2wgbWl4VG9Nb25vKQoreworICAgIGF1dG8gYXVkaW9CdWZmZXIgPSBBdWRpb0J1ZmZl
cjo6Y3JlYXRlRnJvbUF1ZGlvRmlsZURhdGEoYXJyYXlCdWZmZXIuZGF0YSgpLCBhcnJheUJ1ZmZl
ci5ieXRlTGVuZ3RoKCksIG1peFRvTW9ubywgc2FtcGxlUmF0ZSgpKTsKKyAgICBpZiAoIWF1ZGlv
QnVmZmVyKQorICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgU3ludGF4RXJyb3IgfTsKKyAgICBy
ZXR1cm4gYXVkaW9CdWZmZXIucmVsZWFzZU5vbk51bGwoKTsKK30KKwordm9pZCBXZWJLaXRBdWRp
b0NvbnRleHQ6OmRlY29kZUF1ZGlvRGF0YShSZWY8QXJyYXlCdWZmZXI+JiYgYXVkaW9EYXRhLCBS
ZWZQdHI8QXVkaW9CdWZmZXJDYWxsYmFjaz4mJiBzdWNjZXNzQ2FsbGJhY2ssIFJlZlB0cjxBdWRp
b0J1ZmZlckNhbGxiYWNrPiYmIGVycm9yQ2FsbGJhY2spCit7CisgICAgaWYgKCFtX2F1ZGlvRGVj
b2RlcikKKyAgICAgICAgbV9hdWRpb0RlY29kZXIgPSBtYWtlVW5pcXVlPEFzeW5jQXVkaW9EZWNv
ZGVyPigpOworICAgIG1fYXVkaW9EZWNvZGVyLT5kZWNvZGVBc3luYyhXVEZNb3ZlKGF1ZGlvRGF0
YSksIHNhbXBsZVJhdGUoKSwgV1RGTW92ZShzdWNjZXNzQ2FsbGJhY2spLCBXVEZNb3ZlKGVycm9y
Q2FsbGJhY2spKTsKK30KKworRXhjZXB0aW9uT3I8UmVmPEF1ZGlvQnVmZmVyU291cmNlTm9kZT4+
IFdlYktpdEF1ZGlvQ29udGV4dDo6Y3JlYXRlQnVmZmVyU291cmNlKCkKK3sKKyAgICBBTFdBWVNf
TE9HKExPR0lERU5USUZJRVIpOworCisgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKworICAg
IGlmIChtX2lzU3RvcFNjaGVkdWxlZCkKKyAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IEludmFs
aWRTdGF0ZUVycm9yIH07CisKKyAgICBsYXp5SW5pdGlhbGl6ZSgpOworICAgIFJlZjxBdWRpb0J1
ZmZlclNvdXJjZU5vZGU+IG5vZGUgPSBBdWRpb0J1ZmZlclNvdXJjZU5vZGU6OmNyZWF0ZSgqdGhp
cywgc2FtcGxlUmF0ZSgpKTsKKworICAgIC8vIEJlY2F1c2UgdGhpcyBpcyBhbiBBdWRpb1NjaGVk
dWxlZFNvdXJjZU5vZGUsIHRoZSBjb250ZXh0IGtlZXBzIGEgcmVmZXJlbmNlIHVudGlsIGl0IGhh
cyBmaW5pc2hlZCBwbGF5aW5nLgorICAgIC8vIFdoZW4gdGhpcyBoYXBwZW5zLCBBdWRpb1NjaGVk
dWxlZFNvdXJjZU5vZGU6OmZpbmlzaCgpIGNhbGxzIFdlYktpdEF1ZGlvQ29udGV4dDo6bm90aWZ5
Tm9kZUZpbmlzaGVkUHJvY2Vzc2luZygpLgorICAgIHJlZk5vZGUobm9kZSk7CisKKyAgICByZXR1
cm4gbm9kZTsKK30KKworI2lmIEVOQUJMRShWSURFTykKKworRXhjZXB0aW9uT3I8UmVmPE1lZGlh
RWxlbWVudEF1ZGlvU291cmNlTm9kZT4+IFdlYktpdEF1ZGlvQ29udGV4dDo6Y3JlYXRlTWVkaWFF
bGVtZW50U291cmNlKEhUTUxNZWRpYUVsZW1lbnQmIG1lZGlhRWxlbWVudCkKK3sKKyAgICBBTFdB
WVNfTE9HKExPR0lERU5USUZJRVIpOworCisgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKwor
ICAgIGlmIChtX2lzU3RvcFNjaGVkdWxlZCB8fCBtZWRpYUVsZW1lbnQuYXVkaW9Tb3VyY2VOb2Rl
KCkpCisgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBJbnZhbGlkU3RhdGVFcnJvciB9OworCisg
ICAgbGF6eUluaXRpYWxpemUoKTsKKworICAgIGF1dG8gbm9kZSA9IE1lZGlhRWxlbWVudEF1ZGlv
U291cmNlTm9kZTo6Y3JlYXRlKCp0aGlzLCBtZWRpYUVsZW1lbnQpOworCisgICAgbWVkaWFFbGVt
ZW50LnNldEF1ZGlvU291cmNlTm9kZShub2RlLnB0cigpKTsKKworICAgIHJlZk5vZGUobm9kZS5n
ZXQoKSk7IC8vIGNvbnRleHQga2VlcHMgcmVmZXJlbmNlIHVudGlsIG5vZGUgaXMgZGlzY29ubmVj
dGVkCisgICAgcmV0dXJuIG5vZGU7Cit9CisKKyNlbmRpZgorCisjaWYgRU5BQkxFKE1FRElBX1NU
UkVBTSkKKworRXhjZXB0aW9uT3I8UmVmPE1lZGlhU3RyZWFtQXVkaW9Tb3VyY2VOb2RlPj4gV2Vi
S2l0QXVkaW9Db250ZXh0OjpjcmVhdGVNZWRpYVN0cmVhbVNvdXJjZShNZWRpYVN0cmVhbSYgbWVk
aWFTdHJlYW0pCit7CisgICAgQUxXQVlTX0xPRyhMT0dJREVOVElGSUVSKTsKKworICAgIEFTU0VS
VChpc01haW5UaHJlYWQoKSk7CisKKyAgICBpZiAobV9pc1N0b3BTY2hlZHVsZWQpCisgICAgICAg
IHJldHVybiBFeGNlcHRpb24geyBJbnZhbGlkU3RhdGVFcnJvciB9OworCisgICAgYXV0byBhdWRp
b1RyYWNrcyA9IG1lZGlhU3RyZWFtLmdldEF1ZGlvVHJhY2tzKCk7CisgICAgaWYgKGF1ZGlvVHJh
Y2tzLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IEludmFsaWRTdGF0ZUVy
cm9yIH07CisKKyAgICBNZWRpYVN0cmVhbVRyYWNrKiBwcm92aWRlclRyYWNrID0gbnVsbHB0cjsK
KyAgICBmb3IgKGF1dG8mIHRyYWNrIDogYXVkaW9UcmFja3MpIHsKKyAgICAgICAgaWYgKHRyYWNr
LT5hdWRpb1NvdXJjZVByb3ZpZGVyKCkpIHsKKyAgICAgICAgICAgIHByb3ZpZGVyVHJhY2sgPSB0
cmFjay5nZXQoKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgfQorICAgIGlm
ICghcHJvdmlkZXJUcmFjaykKKyAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IEludmFsaWRTdGF0
ZUVycm9yIH07CisKKyAgICBsYXp5SW5pdGlhbGl6ZSgpOworCisgICAgYXV0byBub2RlID0gTWVk
aWFTdHJlYW1BdWRpb1NvdXJjZU5vZGU6OmNyZWF0ZSgqdGhpcywgbWVkaWFTdHJlYW0sICpwcm92
aWRlclRyYWNrKTsKKyAgICBub2RlLT5zZXRGb3JtYXQoMiwgc2FtcGxlUmF0ZSgpKTsKKworICAg
IHJlZk5vZGUobm9kZSk7IC8vIGNvbnRleHQga2VlcHMgcmVmZXJlbmNlIHVudGlsIG5vZGUgaXMg
ZGlzY29ubmVjdGVkCisgICAgcmV0dXJuIG5vZGU7Cit9CisKK0V4Y2VwdGlvbk9yPFJlZjxNZWRp
YVN0cmVhbUF1ZGlvRGVzdGluYXRpb25Ob2RlPj4gV2ViS2l0QXVkaW9Db250ZXh0OjpjcmVhdGVN
ZWRpYVN0cmVhbURlc3RpbmF0aW9uKCkKK3sKKyAgICBpZiAobV9pc1N0b3BTY2hlZHVsZWQpCisg
ICAgICAgIHJldHVybiBFeGNlcHRpb24geyBJbnZhbGlkU3RhdGVFcnJvciB9OworCisgICAgLy8g
RklYTUU6IEFkZCBzdXBwb3J0IGZvciBhbiBvcHRpb25hbCBhcmd1bWVudCB3aGljaCBzcGVjaWZp
ZXMgdGhlIG51bWJlciBvZiBjaGFubmVscy4KKyAgICAvLyBGSVhNRTogVGhlIGRlZmF1bHQgc2hv
dWxkIHByb2JhYmx5IGJlIHN0ZXJlbyBpbnN0ZWFkIG9mIG1vbm8uCisgICAgcmV0dXJuIE1lZGlh
U3RyZWFtQXVkaW9EZXN0aW5hdGlvbk5vZGU6OmNyZWF0ZSgqdGhpcywgMSk7Cit9CisKKyNlbmRp
ZgorCitFeGNlcHRpb25PcjxSZWY8U2NyaXB0UHJvY2Vzc29yTm9kZT4+IFdlYktpdEF1ZGlvQ29u
dGV4dDo6Y3JlYXRlU2NyaXB0UHJvY2Vzc29yKHNpemVfdCBidWZmZXJTaXplLCBzaXplX3QgbnVt
YmVyT2ZJbnB1dENoYW5uZWxzLCBzaXplX3QgbnVtYmVyT2ZPdXRwdXRDaGFubmVscykKK3sKKyAg
ICBBTFdBWVNfTE9HKExPR0lERU5USUZJRVIpOworCisgICAgQVNTRVJUKGlzTWFpblRocmVhZCgp
KTsKKworICAgIGlmIChtX2lzU3RvcFNjaGVkdWxlZCkKKyAgICAgICAgcmV0dXJuIEV4Y2VwdGlv
biB7IEludmFsaWRTdGF0ZUVycm9yIH07CisKKyAgICBsYXp5SW5pdGlhbGl6ZSgpOworCisgICAg
Ly8gVzNDIEVkaXRvcidzIERyYWZ0IDA2IEp1bmUgMjAxNworICAgIC8vICBodHRwczovL3dlYmF1
ZGlvLmdpdGh1Yi5pby93ZWItYXVkaW8tYXBpLyN3aWRsLUJhc2VBdWRpb0NvbnRleHQtY3JlYXRl
U2NyaXB0UHJvY2Vzc29yLVNjcmlwdFByb2Nlc3Nvck5vZGUtdW5zaWduZWQtbG9uZy1idWZmZXJT
aXplLXVuc2lnbmVkLWxvbmctbnVtYmVyT2ZJbnB1dENoYW5uZWxzLXVuc2lnbmVkLWxvbmctbnVt
YmVyT2ZPdXRwdXRDaGFubmVscworCisgICAgLy8gVGhlIGJ1ZmZlclNpemUgcGFyYW1ldGVyIGRl
dGVybWluZXMgdGhlIGJ1ZmZlciBzaXplIGluIHVuaXRzIG9mIHNhbXBsZS1mcmFtZXMuIElmIGl0
J3Mgbm90IHBhc3NlZCBpbiwKKyAgICAvLyBvciBpZiB0aGUgdmFsdWUgaXMgMCwgdGhlbiB0aGUg
aW1wbGVtZW50YXRpb24gd2lsbCBjaG9vc2UgdGhlIGJlc3QgYnVmZmVyIHNpemUgZm9yIHRoZSBn
aXZlbiBlbnZpcm9ubWVudCwKKyAgICAvLyB3aGljaCB3aWxsIGJlIGNvbnN0YW50IHBvd2VyIG9m
IDIgdGhyb3VnaG91dCB0aGUgbGlmZXRpbWUgb2YgdGhlIG5vZGUuIC4uLiBJZiB0aGUgdmFsdWUg
b2YgdGhpcyBwYXJhbWV0ZXIKKyAgICAvLyBpcyBub3Qgb25lIG9mIHRoZSBhbGxvd2VkIHBvd2Vy
LW9mLTIgdmFsdWVzIGxpc3RlZCBhYm92ZSwgYW4gSW5kZXhTaXplRXJyb3IgbXVzdCBiZSB0aHJv
d24uCisgICAgc3dpdGNoIChidWZmZXJTaXplKSB7CisgICAgY2FzZSAwOgorI2lmIFVTRShBVURJ
T19TRVNTSU9OKQorICAgICAgICAvLyBQaWNrIGEgdmFsdWUgYmV0d2VlbiAyNTYgKDJeOCkgYW5k
IDE2Mzg0ICgyXjE0KSwgYmFzZWQgb24gdGhlIGJ1ZmZlciBzaXplIG9mIHRoZSBjdXJyZW50IEF1
ZGlvU2Vzc2lvbjoKKyAgICAgICAgYnVmZmVyU2l6ZSA9IDEgPDwgc3RkOjptYXg8c2l6ZV90Pig4
LCBzdGQ6Om1pbjxzaXplX3Q+KDE0LCBzdGQ6OmxvZzIoQXVkaW9TZXNzaW9uOjpzaGFyZWRTZXNz
aW9uKCkuYnVmZmVyU2l6ZSgpKSkpOworI2Vsc2UKKyAgICAgICAgYnVmZmVyU2l6ZSA9IDIwNDg7
CisjZW5kaWYKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSAyNTY6CisgICAgY2FzZSA1MTI6Cisg
ICAgY2FzZSAxMDI0OgorICAgIGNhc2UgMjA0ODoKKyAgICBjYXNlIDQwOTY6CisgICAgY2FzZSA4
MTkyOgorICAgIGNhc2UgMTYzODQ6CisgICAgICAgIGJyZWFrOworICAgIGRlZmF1bHQ6CisgICAg
ICAgIHJldHVybiBFeGNlcHRpb24geyBJbmRleFNpemVFcnJvciB9OworICAgIH0KKworICAgIC8v
IEFuIEluZGV4U2l6ZUVycm9yIGV4Y2VwdGlvbiBtdXN0IGJlIHRocm93biBpZiBidWZmZXJTaXpl
IG9yIG51bWJlck9mSW5wdXRDaGFubmVscyBvciBudW1iZXJPZk91dHB1dENoYW5uZWxzCisgICAg
Ly8gYXJlIG91dHNpZGUgdGhlIHZhbGlkIHJhbmdlLiBJdCBpcyBpbnZhbGlkIGZvciBib3RoIG51
bWJlck9mSW5wdXRDaGFubmVscyBhbmQgbnVtYmVyT2ZPdXRwdXRDaGFubmVscyB0byBiZSB6ZXJv
LgorICAgIC8vIEluIHRoaXMgY2FzZSBhbiBJbmRleFNpemVFcnJvciBtdXN0IGJlIHRocm93bi4K
KworICAgIGlmICghbnVtYmVyT2ZJbnB1dENoYW5uZWxzICYmICFudW1iZXJPZk91dHB1dENoYW5u
ZWxzKQorICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgTm90U3VwcG9ydGVkRXJyb3IgfTsKKwor
ICAgIC8vIFRoaXMgcGFyYW1ldGVyIFtudW1iZXJPZklucHV0Q2hhbm5lbHNdIGRldGVybWluZXMg
dGhlIG51bWJlciBvZiBjaGFubmVscyBmb3IgdGhpcyBub2RlJ3MgaW5wdXQuIFZhbHVlcyBvZgor
ICAgIC8vIHVwIHRvIDMyIG11c3QgYmUgc3VwcG9ydGVkLiBBIE5vdFN1cHBvcnRlZEVycm9yIG11
c3QgYmUgdGhyb3duIGlmIHRoZSBudW1iZXIgb2YgY2hhbm5lbHMgaXMgbm90IHN1cHBvcnRlZC4K
KworICAgIGlmIChudW1iZXJPZklucHV0Q2hhbm5lbHMgPiBtYXhOdW1iZXJPZkNoYW5uZWxzKCkp
CisgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBOb3RTdXBwb3J0ZWRFcnJvciB9OworCisgICAg
Ly8gVGhpcyBwYXJhbWV0ZXIgW251bWJlck9mT3V0cHV0Q2hhbm5lbHNdIGRldGVybWluZXMgdGhl
IG51bWJlciBvZiBjaGFubmVscyBmb3IgdGhpcyBub2RlJ3Mgb3V0cHV0LiBWYWx1ZXMgb2YKKyAg
ICAvLyB1cCB0byAzMiBtdXN0IGJlIHN1cHBvcnRlZC4gQSBOb3RTdXBwb3J0ZWRFcnJvciBtdXN0
IGJlIHRocm93biBpZiB0aGUgbnVtYmVyIG9mIGNoYW5uZWxzIGlzIG5vdCBzdXBwb3J0ZWQuCisK
KyAgICBpZiAobnVtYmVyT2ZPdXRwdXRDaGFubmVscyA+IG1heE51bWJlck9mQ2hhbm5lbHMoKSkK
KyAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IE5vdFN1cHBvcnRlZEVycm9yIH07CisKKyAgICBh
dXRvIG5vZGUgPSBTY3JpcHRQcm9jZXNzb3JOb2RlOjpjcmVhdGUoKnRoaXMsIHNhbXBsZVJhdGUo
KSwgYnVmZmVyU2l6ZSwgbnVtYmVyT2ZJbnB1dENoYW5uZWxzLCBudW1iZXJPZk91dHB1dENoYW5u
ZWxzKTsKKworICAgIHJlZk5vZGUobm9kZSk7IC8vIGNvbnRleHQga2VlcHMgcmVmZXJlbmNlIHVu
dGlsIHdlIHN0b3AgbWFraW5nIGphdmFzY3JpcHQgcmVuZGVyaW5nIGNhbGxiYWNrcworICAgIHJl
dHVybiBub2RlOworfQorCitFeGNlcHRpb25PcjxSZWY8QmlxdWFkRmlsdGVyTm9kZT4+IFdlYktp
dEF1ZGlvQ29udGV4dDo6Y3JlYXRlQmlxdWFkRmlsdGVyKCkKK3sKKyAgICBBTFdBWVNfTE9HKExP
R0lERU5USUZJRVIpOworCisgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKyAgICBpZiAobV9p
c1N0b3BTY2hlZHVsZWQpCisgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBJbnZhbGlkU3RhdGVF
cnJvciB9OworCisgICAgbGF6eUluaXRpYWxpemUoKTsKKworICAgIHJldHVybiBCaXF1YWRGaWx0
ZXJOb2RlOjpjcmVhdGUoKnRoaXMsIHNhbXBsZVJhdGUoKSk7Cit9CisKK0V4Y2VwdGlvbk9yPFJl
ZjxXYXZlU2hhcGVyTm9kZT4+IFdlYktpdEF1ZGlvQ29udGV4dDo6Y3JlYXRlV2F2ZVNoYXBlcigp
Cit7CisgICAgQUxXQVlTX0xPRyhMT0dJREVOVElGSUVSKTsKKworICAgIEFTU0VSVChpc01haW5U
aHJlYWQoKSk7CisgICAgaWYgKG1faXNTdG9wU2NoZWR1bGVkKQorICAgICAgICByZXR1cm4gRXhj
ZXB0aW9uIHsgSW52YWxpZFN0YXRlRXJyb3IgfTsKKworICAgIGxhenlJbml0aWFsaXplKCk7Cisg
ICAgcmV0dXJuIFdhdmVTaGFwZXJOb2RlOjpjcmVhdGUoKnRoaXMpOworfQorCitFeGNlcHRpb25P
cjxSZWY8V2ViS2l0QXVkaW9QYW5uZXJOb2RlPj4gV2ViS2l0QXVkaW9Db250ZXh0OjpjcmVhdGVQ
YW5uZXIoKQoreworICAgIEFMV0FZU19MT0coTE9HSURFTlRJRklFUik7CisKKyAgICBBU1NFUlQo
aXNNYWluVGhyZWFkKCkpOworICAgIGlmIChtX2lzU3RvcFNjaGVkdWxlZCkKKyAgICAgICAgcmV0
dXJuIEV4Y2VwdGlvbiB7IEludmFsaWRTdGF0ZUVycm9yIH07CisKKyAgICBsYXp5SW5pdGlhbGl6
ZSgpOworICAgIHJldHVybiBXZWJLaXRBdWRpb1Bhbm5lck5vZGU6OmNyZWF0ZSgqdGhpcywgc2Ft
cGxlUmF0ZSgpKTsKK30KKworRXhjZXB0aW9uT3I8UmVmPENvbnZvbHZlck5vZGU+PiBXZWJLaXRB
dWRpb0NvbnRleHQ6OmNyZWF0ZUNvbnZvbHZlcigpCit7CisgICAgQUxXQVlTX0xPRyhMT0dJREVO
VElGSUVSKTsKKworICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisgICAgaWYgKG1faXNTdG9w
U2NoZWR1bGVkKQorICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgSW52YWxpZFN0YXRlRXJyb3Ig
fTsKKworICAgIGxhenlJbml0aWFsaXplKCk7CisgICAgcmV0dXJuIENvbnZvbHZlck5vZGU6OmNy
ZWF0ZSgqdGhpcywgc2FtcGxlUmF0ZSgpKTsKK30KKworRXhjZXB0aW9uT3I8UmVmPER5bmFtaWNz
Q29tcHJlc3Nvck5vZGU+PiBXZWJLaXRBdWRpb0NvbnRleHQ6OmNyZWF0ZUR5bmFtaWNzQ29tcHJl
c3NvcigpCit7CisgICAgQUxXQVlTX0xPRyhMT0dJREVOVElGSUVSKTsKKworICAgIEFTU0VSVChp
c01haW5UaHJlYWQoKSk7CisgICAgaWYgKG1faXNTdG9wU2NoZWR1bGVkKQorICAgICAgICByZXR1
cm4gRXhjZXB0aW9uIHsgSW52YWxpZFN0YXRlRXJyb3IgfTsKKworICAgIGxhenlJbml0aWFsaXpl
KCk7CisgICAgcmV0dXJuIER5bmFtaWNzQ29tcHJlc3Nvck5vZGU6OmNyZWF0ZSgqdGhpcywgc2Ft
cGxlUmF0ZSgpKTsKK30KKworRXhjZXB0aW9uT3I8UmVmPEFuYWx5c2VyTm9kZT4+IFdlYktpdEF1
ZGlvQ29udGV4dDo6Y3JlYXRlQW5hbHlzZXIoKQoreworICAgIEFMV0FZU19MT0coTE9HSURFTlRJ
RklFUik7CisKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAgIGlmIChtX2lzU3RvcFNj
aGVkdWxlZCkKKyAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IEludmFsaWRTdGF0ZUVycm9yIH07
CisKKyAgICBsYXp5SW5pdGlhbGl6ZSgpOworICAgIHJldHVybiBBbmFseXNlck5vZGU6OmNyZWF0
ZSgqdGhpcywgc2FtcGxlUmF0ZSgpKTsKK30KKworRXhjZXB0aW9uT3I8UmVmPEdhaW5Ob2RlPj4g
V2ViS2l0QXVkaW9Db250ZXh0OjpjcmVhdGVHYWluKCkKK3sKKyAgICBBTFdBWVNfTE9HKExPR0lE
RU5USUZJRVIpOworCisgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKyAgICBpZiAobV9pc1N0
b3BTY2hlZHVsZWQpCisgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBJbnZhbGlkU3RhdGVFcnJv
ciB9OworCisgICAgbGF6eUluaXRpYWxpemUoKTsKKyAgICByZXR1cm4gR2Fpbk5vZGU6OmNyZWF0
ZSgqdGhpcywgc2FtcGxlUmF0ZSgpKTsKK30KKworRXhjZXB0aW9uT3I8UmVmPERlbGF5Tm9kZT4+
IFdlYktpdEF1ZGlvQ29udGV4dDo6Y3JlYXRlRGVsYXkoZG91YmxlIG1heERlbGF5VGltZSkKK3sK
KyAgICBBTFdBWVNfTE9HKExPR0lERU5USUZJRVIpOworCisgICAgQVNTRVJUKGlzTWFpblRocmVh
ZCgpKTsKKyAgICBpZiAobV9pc1N0b3BTY2hlZHVsZWQpCisgICAgICAgIHJldHVybiBFeGNlcHRp
b24geyBJbnZhbGlkU3RhdGVFcnJvciB9OworCisgICAgbGF6eUluaXRpYWxpemUoKTsKKyAgICBy
ZXR1cm4gRGVsYXlOb2RlOjpjcmVhdGUoKnRoaXMsIHNhbXBsZVJhdGUoKSwgbWF4RGVsYXlUaW1l
KTsKK30KKworRXhjZXB0aW9uT3I8UmVmPENoYW5uZWxTcGxpdHRlck5vZGU+PiBXZWJLaXRBdWRp
b0NvbnRleHQ6OmNyZWF0ZUNoYW5uZWxTcGxpdHRlcihzaXplX3QgbnVtYmVyT2ZPdXRwdXRzKQor
eworICAgIEFMV0FZU19MT0coTE9HSURFTlRJRklFUik7CisKKyAgICBBU1NFUlQoaXNNYWluVGhy
ZWFkKCkpOworICAgIGlmIChtX2lzU3RvcFNjaGVkdWxlZCkKKyAgICAgICAgcmV0dXJuIEV4Y2Vw
dGlvbiB7IEludmFsaWRTdGF0ZUVycm9yIH07CisKKyAgICBsYXp5SW5pdGlhbGl6ZSgpOworICAg
IGF1dG8gbm9kZSA9IENoYW5uZWxTcGxpdHRlck5vZGU6OmNyZWF0ZSgqdGhpcywgc2FtcGxlUmF0
ZSgpLCBudW1iZXJPZk91dHB1dHMpOworICAgIGlmICghbm9kZSkKKyAgICAgICAgcmV0dXJuIEV4
Y2VwdGlvbiB7IEluZGV4U2l6ZUVycm9yIH07CisgICAgcmV0dXJuIG5vZGUucmVsZWFzZU5vbk51
bGwoKTsKK30KKworRXhjZXB0aW9uT3I8UmVmPENoYW5uZWxNZXJnZXJOb2RlPj4gV2ViS2l0QXVk
aW9Db250ZXh0OjpjcmVhdGVDaGFubmVsTWVyZ2VyKHNpemVfdCBudW1iZXJPZklucHV0cykKK3sK
KyAgICBBTFdBWVNfTE9HKExPR0lERU5USUZJRVIpOworCisgICAgQVNTRVJUKGlzTWFpblRocmVh
ZCgpKTsKKyAgICBpZiAobV9pc1N0b3BTY2hlZHVsZWQpCisgICAgICAgIHJldHVybiBFeGNlcHRp
b24geyBJbnZhbGlkU3RhdGVFcnJvciB9OworCisgICAgbGF6eUluaXRpYWxpemUoKTsKKyAgICBh
dXRvIG5vZGUgPSBDaGFubmVsTWVyZ2VyTm9kZTo6Y3JlYXRlKCp0aGlzLCBzYW1wbGVSYXRlKCks
IG51bWJlck9mSW5wdXRzKTsKKyAgICBpZiAoIW5vZGUpCisgICAgICAgIHJldHVybiBFeGNlcHRp
b24geyBJbmRleFNpemVFcnJvciB9OworICAgIHJldHVybiBub2RlLnJlbGVhc2VOb25OdWxsKCk7
Cit9CisKK0V4Y2VwdGlvbk9yPFJlZjxPc2NpbGxhdG9yTm9kZT4+IFdlYktpdEF1ZGlvQ29udGV4
dDo6Y3JlYXRlT3NjaWxsYXRvcigpCit7CisgICAgQUxXQVlTX0xPRyhMT0dJREVOVElGSUVSKTsK
KworICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisgICAgaWYgKG1faXNTdG9wU2NoZWR1bGVk
KQorICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgSW52YWxpZFN0YXRlRXJyb3IgfTsKKworICAg
IGxhenlJbml0aWFsaXplKCk7CisKKyAgICBSZWY8T3NjaWxsYXRvck5vZGU+IG5vZGUgPSBPc2Np
bGxhdG9yTm9kZTo6Y3JlYXRlKCp0aGlzLCBzYW1wbGVSYXRlKCkpOworCisgICAgLy8gQmVjYXVz
ZSB0aGlzIGlzIGFuIEF1ZGlvU2NoZWR1bGVkU291cmNlTm9kZSwgdGhlIGNvbnRleHQga2VlcHMg
YSByZWZlcmVuY2UgdW50aWwgaXQgaGFzIGZpbmlzaGVkIHBsYXlpbmcuCisgICAgLy8gV2hlbiB0
aGlzIGhhcHBlbnMsIEF1ZGlvU2NoZWR1bGVkU291cmNlTm9kZTo6ZmluaXNoKCkgY2FsbHMgV2Vi
S2l0QXVkaW9Db250ZXh0Ojpub3RpZnlOb2RlRmluaXNoZWRQcm9jZXNzaW5nKCkuCisgICAgcmVm
Tm9kZShub2RlKTsKKworICAgIHJldHVybiBub2RlOworfQorCitFeGNlcHRpb25PcjxSZWY8UGVy
aW9kaWNXYXZlPj4gV2ViS2l0QXVkaW9Db250ZXh0OjpjcmVhdGVQZXJpb2RpY1dhdmUoRmxvYXQz
MkFycmF5JiByZWFsLCBGbG9hdDMyQXJyYXkmIGltYWdpbmFyeSkKK3sKKyAgICBBTFdBWVNfTE9H
KExPR0lERU5USUZJRVIpOworCisgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKyAgICBpZiAo
bV9pc1N0b3BTY2hlZHVsZWQpCisgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBJbnZhbGlkU3Rh
dGVFcnJvciB9OworCisgICAgaWYgKHJlYWwubGVuZ3RoKCkgIT0gaW1hZ2luYXJ5Lmxlbmd0aCgp
IHx8IChyZWFsLmxlbmd0aCgpID4gTWF4UGVyaW9kaWNXYXZlTGVuZ3RoKSB8fCAhcmVhbC5sZW5n
dGgoKSkKKyAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IEluZGV4U2l6ZUVycm9yIH07CisgICAg
bGF6eUluaXRpYWxpemUoKTsKKyAgICByZXR1cm4gUGVyaW9kaWNXYXZlOjpjcmVhdGUoc2FtcGxl
UmF0ZSgpLCByZWFsLCBpbWFnaW5hcnkpOworfQorCit2b2lkIFdlYktpdEF1ZGlvQ29udGV4dDo6
bm90aWZ5Tm9kZUZpbmlzaGVkUHJvY2Vzc2luZyhBdWRpb05vZGUqIG5vZGUpCit7CisgICAgQVNT
RVJUKGlzQXVkaW9UaHJlYWQoKSk7CisgICAgbV9maW5pc2hlZE5vZGVzLmFwcGVuZChub2RlKTsK
K30KKwordm9pZCBXZWJLaXRBdWRpb0NvbnRleHQ6OmRlcmVmRmluaXNoZWRTb3VyY2VOb2Rlcygp
Cit7CisgICAgQVNTRVJUKGlzR3JhcGhPd25lcigpKTsKKyAgICBBU1NFUlQoaXNBdWRpb1RocmVh
ZCgpIHx8IGlzQXVkaW9UaHJlYWRGaW5pc2hlZCgpKTsKKyAgICBmb3IgKGF1dG8mIG5vZGUgOiBt
X2ZpbmlzaGVkTm9kZXMpCisgICAgICAgIGRlcmVmTm9kZSgqbm9kZSk7CisKKyAgICBtX2Zpbmlz
aGVkTm9kZXMuY2xlYXIoKTsKK30KKwordm9pZCBXZWJLaXRBdWRpb0NvbnRleHQ6OnJlZk5vZGUo
QXVkaW9Ob2RlJiBub2RlKQoreworICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisgICAgQXV0
b0xvY2tlciBsb2NrZXIoKnRoaXMpOworCisgICAgbm9kZS5yZWYoQXVkaW9Ob2RlOjpSZWZUeXBl
Q29ubmVjdGlvbik7CisgICAgbV9yZWZlcmVuY2VkTm9kZXMuYXBwZW5kKCZub2RlKTsKK30KKwor
dm9pZCBXZWJLaXRBdWRpb0NvbnRleHQ6OmRlcmVmTm9kZShBdWRpb05vZGUmIG5vZGUpCit7Cisg
ICAgQVNTRVJUKGlzR3JhcGhPd25lcigpKTsKKworICAgIG5vZGUuZGVyZWYoQXVkaW9Ob2RlOjpS
ZWZUeXBlQ29ubmVjdGlvbik7CisKKyAgICBBU1NFUlQobV9yZWZlcmVuY2VkTm9kZXMuY29udGFp
bnMoJm5vZGUpKTsKKyAgICBtX3JlZmVyZW5jZWROb2Rlcy5yZW1vdmVGaXJzdCgmbm9kZSk7Cit9
CisKK3ZvaWQgV2ViS2l0QXVkaW9Db250ZXh0OjpkZXJlZlVuZmluaXNoZWRTb3VyY2VOb2Rlcygp
Cit7CisgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpICYmIGlzQXVkaW9UaHJlYWRGaW5pc2hlZCgp
KTsKKyAgICBmb3IgKGF1dG8mIG5vZGUgOiBtX3JlZmVyZW5jZWROb2RlcykKKyAgICAgICAgbm9k
ZS0+ZGVyZWYoQXVkaW9Ob2RlOjpSZWZUeXBlQ29ubmVjdGlvbik7CisKKyAgICBtX3JlZmVyZW5j
ZWROb2Rlcy5jbGVhcigpOworfQorCit2b2lkIFdlYktpdEF1ZGlvQ29udGV4dDo6bG9jayhib29s
JiBtdXN0UmVsZWFzZUxvY2spCit7CisgICAgLy8gRG9uJ3QgYWxsb3cgcmVndWxhciBsb2NrIGlu
IHJlYWwtdGltZSBhdWRpbyB0aHJlYWQuCisgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKwor
ICAgIFRocmVhZCYgdGhpc1RocmVhZCA9IFRocmVhZDo6Y3VycmVudCgpOworCisgICAgaWYgKCZ0
aGlzVGhyZWFkID09IG1fZ3JhcGhPd25lclRocmVhZCkgeworICAgICAgICAvLyBXZSBhbHJlYWR5
IGhhdmUgdGhlIGxvY2suCisgICAgICAgIG11c3RSZWxlYXNlTG9jayA9IGZhbHNlOworICAgIH0g
ZWxzZSB7CisgICAgICAgIC8vIEFjcXVpcmUgdGhlIGxvY2suCisgICAgICAgIG1fY29udGV4dEdy
YXBoTXV0ZXgubG9jaygpOworICAgICAgICBtX2dyYXBoT3duZXJUaHJlYWQgPSAmdGhpc1RocmVh
ZDsKKyAgICAgICAgbXVzdFJlbGVhc2VMb2NrID0gdHJ1ZTsKKyAgICB9Cit9CisKK2Jvb2wgV2Vi
S2l0QXVkaW9Db250ZXh0Ojp0cnlMb2NrKGJvb2wmIG11c3RSZWxlYXNlTG9jaykKK3sKKyAgICBU
aHJlYWQmIHRoaXNUaHJlYWQgPSBUaHJlYWQ6OmN1cnJlbnQoKTsKKyAgICBib29sIGlzQXVkaW9U
aHJlYWQgPSAmdGhpc1RocmVhZCA9PSBhdWRpb1RocmVhZCgpOworCisgICAgLy8gVHJ5IHRvIGNh
dGNoIGNhc2VzIG9mIHVzaW5nIHRyeSBsb2NrIG9uIG1haW4gdGhyZWFkIC0gaXQgc2hvdWxkIHVz
ZSByZWd1bGFyIGxvY2suCisgICAgQVNTRVJUKGlzQXVkaW9UaHJlYWQgfHwgaXNBdWRpb1RocmVh
ZEZpbmlzaGVkKCkpOworCisgICAgaWYgKCFpc0F1ZGlvVGhyZWFkKSB7CisgICAgICAgIC8vIElu
IHJlbGVhc2UgYnVpbGQgdHJlYXQgdHJ5TG9jaygpIGFzIGxvY2soKSAoc2luY2UgYWJvdmUgQVNT
RVJUKGlzQXVkaW9UaHJlYWQpIG5ldmVyIGZpcmVzKSAtIHRoaXMgaXMgdGhlIGJlc3Qgd2UgY2Fu
IGRvLgorICAgICAgICBsb2NrKG11c3RSZWxlYXNlTG9jayk7CisgICAgICAgIHJldHVybiB0cnVl
OworICAgIH0KKworICAgIGJvb2wgaGFzTG9jazsKKworICAgIGlmICgmdGhpc1RocmVhZCA9PSBt
X2dyYXBoT3duZXJUaHJlYWQpIHsKKyAgICAgICAgLy8gVGhyZWFkIGFscmVhZHkgaGFzIHRoZSBs
b2NrLgorICAgICAgICBoYXNMb2NrID0gdHJ1ZTsKKyAgICAgICAgbXVzdFJlbGVhc2VMb2NrID0g
ZmFsc2U7CisgICAgfSBlbHNlIHsKKyAgICAgICAgLy8gRG9uJ3QgYWxyZWFkeSBoYXZlIHRoZSBs
b2NrIC0gdHJ5IHRvIGFjcXVpcmUgaXQuCisgICAgICAgIGhhc0xvY2sgPSBtX2NvbnRleHRHcmFw
aE11dGV4LnRyeUxvY2soKTsKKworICAgICAgICBpZiAoaGFzTG9jaykKKyAgICAgICAgICAgIG1f
Z3JhcGhPd25lclRocmVhZCA9ICZ0aGlzVGhyZWFkOworCisgICAgICAgIG11c3RSZWxlYXNlTG9j
ayA9IGhhc0xvY2s7CisgICAgfQorCisgICAgcmV0dXJuIGhhc0xvY2s7Cit9CisKK3ZvaWQgV2Vi
S2l0QXVkaW9Db250ZXh0Ojp1bmxvY2soKQoreworICAgIEFTU0VSVChtX2dyYXBoT3duZXJUaHJl
YWQgPT0gJlRocmVhZDo6Y3VycmVudCgpKTsKKworICAgIG1fZ3JhcGhPd25lclRocmVhZCA9IG51
bGxwdHI7CisgICAgbV9jb250ZXh0R3JhcGhNdXRleC51bmxvY2soKTsKK30KKworYm9vbCBXZWJL
aXRBdWRpb0NvbnRleHQ6OmlzQXVkaW9UaHJlYWQoKSBjb25zdAoreworICAgIHJldHVybiBtX2F1
ZGlvVGhyZWFkID09ICZUaHJlYWQ6OmN1cnJlbnQoKTsKK30KKworYm9vbCBXZWJLaXRBdWRpb0Nv
bnRleHQ6OmlzR3JhcGhPd25lcigpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fZ3JhcGhPd25lclRo
cmVhZCA9PSAmVGhyZWFkOjpjdXJyZW50KCk7Cit9CisKK3ZvaWQgV2ViS2l0QXVkaW9Db250ZXh0
OjphZGREZWZlcnJlZEZpbmlzaERlcmVmKEF1ZGlvTm9kZSogbm9kZSkKK3sKKyAgICBBU1NFUlQo
aXNBdWRpb1RocmVhZCgpKTsKKyAgICBtX2RlZmVycmVkRmluaXNoRGVyZWZMaXN0LmFwcGVuZChu
b2RlKTsKK30KKwordm9pZCBXZWJLaXRBdWRpb0NvbnRleHQ6OmhhbmRsZVByZVJlbmRlclRhc2tz
KCkKK3sKKyAgICBBU1NFUlQoaXNBdWRpb1RocmVhZCgpKTsKKworICAgIC8vIEF0IHRoZSBiZWdp
bm5pbmcgb2YgZXZlcnkgcmVuZGVyIHF1YW50dW0sIHRyeSB0byB1cGRhdGUgdGhlIGludGVybmFs
IHJlbmRlcmluZyBncmFwaCBzdGF0ZSAoZnJvbSBtYWluIHRocmVhZCBjaGFuZ2VzKS4KKyAgICAv
LyBJdCdzIE9LIGlmIHRoZSB0cnlMb2NrKCkgZmFpbHMsIHdlJ2xsIGp1c3QgdGFrZSBzbGlnaHRs
eSBsb25nZXIgdG8gcGljayB1cCB0aGUgY2hhbmdlcy4KKyAgICBib29sIG11c3RSZWxlYXNlTG9j
azsKKyAgICBpZiAodHJ5TG9jayhtdXN0UmVsZWFzZUxvY2spKSB7CisgICAgICAgIC8vIEZpeHVw
IHRoZSBzdGF0ZSBvZiBhbnkgZGlydHkgQXVkaW9TdW1taW5nSnVuY3Rpb25zIGFuZCBBdWRpb05v
ZGVPdXRwdXRzLgorICAgICAgICBoYW5kbGVEaXJ0eUF1ZGlvU3VtbWluZ0p1bmN0aW9ucygpOwor
ICAgICAgICBoYW5kbGVEaXJ0eUF1ZGlvTm9kZU91dHB1dHMoKTsKKworICAgICAgICB1cGRhdGVB
dXRvbWF0aWNQdWxsTm9kZXMoKTsKKworICAgICAgICBpZiAobXVzdFJlbGVhc2VMb2NrKQorICAg
ICAgICAgICAgdW5sb2NrKCk7CisgICAgfQorfQorCit2b2lkIFdlYktpdEF1ZGlvQ29udGV4dDo6
aGFuZGxlUG9zdFJlbmRlclRhc2tzKCkKK3sKKyAgICBBU1NFUlQoaXNBdWRpb1RocmVhZCgpKTsK
KworICAgIC8vIE11c3QgdXNlIGEgdHJ5TG9jaygpIGhlcmUgdG9vLiBEb24ndCB3b3JyeSwgdGhl
IGxvY2sgd2lsbCB2ZXJ5IHJhcmVseSBiZSBjb250ZW5kZWQgYW5kIHRoaXMgbWV0aG9kIGlzIGNh
bGxlZCBmcmVxdWVudGx5LgorICAgIC8vIFRoZSB3b3JzdCB0aGF0IGNhbiBoYXBwZW4gaXMgdGhh
dCB0aGVyZSB3aWxsIGJlIHNvbWUgbm9kZXMgd2hpY2ggd2lsbCB0YWtlIHNsaWdodGx5IGxvbmdl
ciB0aGFuIHVzdWFsIHRvIGJlIGRlbGV0ZWQgb3IgcmVtb3ZlZAorICAgIC8vIGZyb20gdGhlIHJl
bmRlciBncmFwaCAoaW4gd2hpY2ggY2FzZSB0aGV5J2xsIHJlbmRlciBzaWxlbmNlKS4KKyAgICBi
b29sIG11c3RSZWxlYXNlTG9jazsKKyAgICBpZiAodHJ5TG9jayhtdXN0UmVsZWFzZUxvY2spKSB7
CisgICAgICAgIC8vIFRha2UgY2FyZSBvZiBmaW5pc2hpbmcgYW55IGRlcmVmcyB3aGVyZSB0aGUg
dHJ5TG9jaygpIGZhaWxlZCBwcmV2aW91c2x5LgorICAgICAgICBoYW5kbGVEZWZlcnJlZEZpbmlz
aERlcmVmcygpOworCisgICAgICAgIC8vIER5bmFtaWNhbGx5IGNsZWFuIHVwIG5vZGVzIHdoaWNo
IGFyZSBubyBsb25nZXIgbmVlZGVkLgorICAgICAgICBkZXJlZkZpbmlzaGVkU291cmNlTm9kZXMo
KTsKKworICAgICAgICAvLyBEb24ndCBkZWxldGUgaW4gdGhlIHJlYWwtdGltZSB0aHJlYWQuIExl
dCB0aGUgbWFpbiB0aHJlYWQgZG8gaXQuCisgICAgICAgIC8vIFJlZi1jb3VudGVkIG9iamVjdHMg
aGVsZCBieSBjZXJ0YWluIEF1ZGlvTm9kZXMgbWF5IG5vdCBiZSB0aHJlYWQtc2FmZS4KKyAgICAg
ICAgc2NoZWR1bGVOb2RlRGVsZXRpb24oKTsKKworICAgICAgICAvLyBGaXh1cCB0aGUgc3RhdGUg
b2YgYW55IGRpcnR5IEF1ZGlvU3VtbWluZ0p1bmN0aW9ucyBhbmQgQXVkaW9Ob2RlT3V0cHV0cy4K
KyAgICAgICAgaGFuZGxlRGlydHlBdWRpb1N1bW1pbmdKdW5jdGlvbnMoKTsKKyAgICAgICAgaGFu
ZGxlRGlydHlBdWRpb05vZGVPdXRwdXRzKCk7CisKKyAgICAgICAgdXBkYXRlQXV0b21hdGljUHVs
bE5vZGVzKCk7CisKKyAgICAgICAgaWYgKG11c3RSZWxlYXNlTG9jaykKKyAgICAgICAgICAgIHVu
bG9jaygpOworICAgIH0KK30KKwordm9pZCBXZWJLaXRBdWRpb0NvbnRleHQ6OmhhbmRsZURlZmVy
cmVkRmluaXNoRGVyZWZzKCkKK3sKKyAgICBBU1NFUlQoaXNBdWRpb1RocmVhZCgpICYmIGlzR3Jh
cGhPd25lcigpKTsKKyAgICBmb3IgKGF1dG8mIG5vZGUgOiBtX2RlZmVycmVkRmluaXNoRGVyZWZM
aXN0KQorICAgICAgICBub2RlLT5maW5pc2hEZXJlZihBdWRpb05vZGU6OlJlZlR5cGVDb25uZWN0
aW9uKTsKKworICAgIG1fZGVmZXJyZWRGaW5pc2hEZXJlZkxpc3QuY2xlYXIoKTsKK30KKwordm9p
ZCBXZWJLaXRBdWRpb0NvbnRleHQ6Om1hcmtGb3JEZWxldGlvbihBdWRpb05vZGUmIG5vZGUpCit7
CisgICAgQVNTRVJUKGlzR3JhcGhPd25lcigpKTsKKworICAgIGlmIChpc0F1ZGlvVGhyZWFkRmlu
aXNoZWQoKSkKKyAgICAgICAgbV9ub2Rlc1RvRGVsZXRlLmFwcGVuZCgmbm9kZSk7CisgICAgZWxz
ZQorICAgICAgICBtX25vZGVzTWFya2VkRm9yRGVsZXRpb24uYXBwZW5kKCZub2RlKTsKKworICAg
IC8vIFRoaXMgaXMgcHJvYmFibHkgdGhlIGJlc3QgdGltZSBmb3IgdXMgdG8gcmVtb3ZlIHRoZSBu
b2RlIGZyb20gYXV0b21hdGljIHB1bGwgbGlzdCwKKyAgICAvLyBzaW5jZSBhbGwgY29ubmVjdGlv
bnMgYXJlIGdvbmUgYW5kIHdlIGhvbGQgdGhlIGdyYXBoIGxvY2suIFRoZW4gd2hlbiBoYW5kbGVQ
b3N0UmVuZGVyVGFza3MoKQorICAgIC8vIGdldHMgYSBjaGFuY2UgdG8gc2NoZWR1bGUgdGhlIGRl
bGV0aW9uIHdvcmssIHVwZGF0ZUF1dG9tYXRpY1B1bGxOb2RlcygpIGFsc28gZ2V0cyBhIGNoYW5j
ZSB0bworICAgIC8vIG1vZGlmeSBtX3JlbmRlcmluZ0F1dG9tYXRpY1B1bGxOb2Rlcy4KKyAgICBy
ZW1vdmVBdXRvbWF0aWNQdWxsTm9kZShub2RlKTsKK30KKwordm9pZCBXZWJLaXRBdWRpb0NvbnRl
eHQ6OnNjaGVkdWxlTm9kZURlbGV0aW9uKCkKK3sKKyAgICBib29sIGlzR29vZCA9IG1faXNJbml0
aWFsaXplZCAmJiBpc0dyYXBoT3duZXIoKTsKKyAgICBBU1NFUlQoaXNHb29kKTsKKyAgICBpZiAo
IWlzR29vZCkKKyAgICAgICAgcmV0dXJuOworCisgICAgLy8gTWFrZSBzdXJlIHRvIGNhbGwgZGVs
ZXRlTWFya2VkTm9kZXMoKSBvbiBtYWluIHRocmVhZC4KKyAgICBpZiAobV9ub2Rlc01hcmtlZEZv
ckRlbGV0aW9uLnNpemUoKSAmJiAhbV9pc0RlbGV0aW9uU2NoZWR1bGVkKSB7CisgICAgICAgIG1f
bm9kZXNUb0RlbGV0ZS5hcHBlbmRWZWN0b3IobV9ub2Rlc01hcmtlZEZvckRlbGV0aW9uKTsKKyAg
ICAgICAgbV9ub2Rlc01hcmtlZEZvckRlbGV0aW9uLmNsZWFyKCk7CisKKyAgICAgICAgbV9pc0Rl
bGV0aW9uU2NoZWR1bGVkID0gdHJ1ZTsKKworICAgICAgICBjYWxsT25NYWluVGhyZWFkKFtwcm90
ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyldKCkgbXV0YWJsZSB7CisgICAgICAgICAgICBwcm90
ZWN0ZWRUaGlzLT5kZWxldGVNYXJrZWROb2RlcygpOworICAgICAgICB9KTsKKyAgICB9Cit9CisK
K3ZvaWQgV2ViS2l0QXVkaW9Db250ZXh0OjpkZWxldGVNYXJrZWROb2RlcygpCit7CisgICAgQVNT
RVJUKGlzTWFpblRocmVhZCgpKTsKKworICAgIC8vIFByb3RlY3QgdGhpcyBvYmplY3QgZnJvbSBi
ZWluZyBkZWxldGVkIGJlZm9yZSB3ZSByZWxlYXNlIHRoZSBtdXRleCBsb2NrZWQgYnkgQXV0b0xv
Y2tlci4KKyAgICBSZWY8V2ViS2l0QXVkaW9Db250ZXh0PiBwcm90ZWN0ZWRUaGlzKCp0aGlzKTsK
KyAgICB7CisgICAgICAgIEF1dG9Mb2NrZXIgbG9ja2VyKCp0aGlzKTsKKworICAgICAgICB3aGls
ZSAobV9ub2Rlc1RvRGVsZXRlLnNpemUoKSkgeworICAgICAgICAgICAgQXVkaW9Ob2RlKiBub2Rl
ID0gbV9ub2Rlc1RvRGVsZXRlLnRha2VMYXN0KCk7CisKKyAgICAgICAgICAgIC8vIEJlZm9yZSBk
ZWxldGluZyB0aGUgbm9kZSwgY2xlYXIgb3V0IGFueSBBdWRpb05vZGVJbnB1dHMgZnJvbSBtX2Rp
cnR5U3VtbWluZ0p1bmN0aW9ucy4KKyAgICAgICAgICAgIHVuc2lnbmVkIG51bWJlck9mSW5wdXRz
ID0gbm9kZS0+bnVtYmVyT2ZJbnB1dHMoKTsKKyAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9
IDA7IGkgPCBudW1iZXJPZklucHV0czsgKytpKQorICAgICAgICAgICAgICAgIG1fZGlydHlTdW1t
aW5nSnVuY3Rpb25zLnJlbW92ZShub2RlLT5pbnB1dChpKSk7CisKKyAgICAgICAgICAgIC8vIEJl
Zm9yZSBkZWxldGluZyB0aGUgbm9kZSwgY2xlYXIgb3V0IGFueSBBdWRpb05vZGVPdXRwdXRzIGZy
b20gbV9kaXJ0eUF1ZGlvTm9kZU91dHB1dHMuCisgICAgICAgICAgICB1bnNpZ25lZCBudW1iZXJP
Zk91dHB1dHMgPSBub2RlLT5udW1iZXJPZk91dHB1dHMoKTsKKyAgICAgICAgICAgIGZvciAodW5z
aWduZWQgaSA9IDA7IGkgPCBudW1iZXJPZk91dHB1dHM7ICsraSkKKyAgICAgICAgICAgICAgICBt
X2RpcnR5QXVkaW9Ob2RlT3V0cHV0cy5yZW1vdmUobm9kZS0+b3V0cHV0KGkpKTsKKworICAgICAg
ICAgICAgLy8gRmluYWxseSwgZGVsZXRlIGl0LgorICAgICAgICAgICAgZGVsZXRlIG5vZGU7Cisg
ICAgICAgIH0KKyAgICAgICAgbV9pc0RlbGV0aW9uU2NoZWR1bGVkID0gZmFsc2U7CisgICAgfQor
fQorCit2b2lkIFdlYktpdEF1ZGlvQ29udGV4dDo6bWFya1N1bW1pbmdKdW5jdGlvbkRpcnR5KEF1
ZGlvU3VtbWluZ0p1bmN0aW9uKiBzdW1taW5nSnVuY3Rpb24pCit7CisgICAgQVNTRVJUKGlzR3Jh
cGhPd25lcigpKTsKKyAgICBtX2RpcnR5U3VtbWluZ0p1bmN0aW9ucy5hZGQoc3VtbWluZ0p1bmN0
aW9uKTsKK30KKwordm9pZCBXZWJLaXRBdWRpb0NvbnRleHQ6OnJlbW92ZU1hcmtlZFN1bW1pbmdK
dW5jdGlvbihBdWRpb1N1bW1pbmdKdW5jdGlvbiogc3VtbWluZ0p1bmN0aW9uKQoreworICAgIEFT
U0VSVChpc01haW5UaHJlYWQoKSk7CisgICAgQXV0b0xvY2tlciBsb2NrZXIoKnRoaXMpOworICAg
IG1fZGlydHlTdW1taW5nSnVuY3Rpb25zLnJlbW92ZShzdW1taW5nSnVuY3Rpb24pOworfQorCitF
dmVudFRhcmdldEludGVyZmFjZSBXZWJLaXRBdWRpb0NvbnRleHQ6OmV2ZW50VGFyZ2V0SW50ZXJm
YWNlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gV2ViS2l0QXVkaW9Db250ZXh0RXZlbnRUYXJnZXRJ
bnRlcmZhY2VUeXBlOworfQorCit2b2lkIFdlYktpdEF1ZGlvQ29udGV4dDo6bWFya0F1ZGlvTm9k
ZU91dHB1dERpcnR5KEF1ZGlvTm9kZU91dHB1dCogb3V0cHV0KQoreworICAgIEFTU0VSVChpc0dy
YXBoT3duZXIoKSk7CisgICAgbV9kaXJ0eUF1ZGlvTm9kZU91dHB1dHMuYWRkKG91dHB1dCk7Cit9
CisKK3ZvaWQgV2ViS2l0QXVkaW9Db250ZXh0OjpoYW5kbGVEaXJ0eUF1ZGlvU3VtbWluZ0p1bmN0
aW9ucygpCit7CisgICAgQVNTRVJUKGlzR3JhcGhPd25lcigpKTsKKworICAgIGZvciAoYXV0byYg
anVuY3Rpb24gOiBtX2RpcnR5U3VtbWluZ0p1bmN0aW9ucykKKyAgICAgICAganVuY3Rpb24tPnVw
ZGF0ZVJlbmRlcmluZ1N0YXRlKCk7CisKKyAgICBtX2RpcnR5U3VtbWluZ0p1bmN0aW9ucy5jbGVh
cigpOworfQorCit2b2lkIFdlYktpdEF1ZGlvQ29udGV4dDo6aGFuZGxlRGlydHlBdWRpb05vZGVP
dXRwdXRzKCkKK3sKKyAgICBBU1NFUlQoaXNHcmFwaE93bmVyKCkpOworCisgICAgZm9yIChhdXRv
JiBvdXRwdXQgOiBtX2RpcnR5QXVkaW9Ob2RlT3V0cHV0cykKKyAgICAgICAgb3V0cHV0LT51cGRh
dGVSZW5kZXJpbmdTdGF0ZSgpOworCisgICAgbV9kaXJ0eUF1ZGlvTm9kZU91dHB1dHMuY2xlYXIo
KTsKK30KKwordm9pZCBXZWJLaXRBdWRpb0NvbnRleHQ6OmFkZEF1dG9tYXRpY1B1bGxOb2RlKEF1
ZGlvTm9kZSYgbm9kZSkKK3sKKyAgICBBU1NFUlQoaXNHcmFwaE93bmVyKCkpOworCisgICAgaWYg
KG1fYXV0b21hdGljUHVsbE5vZGVzLmFkZCgmbm9kZSkuaXNOZXdFbnRyeSkKKyAgICAgICAgbV9h
dXRvbWF0aWNQdWxsTm9kZXNOZWVkVXBkYXRpbmcgPSB0cnVlOworfQorCit2b2lkIFdlYktpdEF1
ZGlvQ29udGV4dDo6cmVtb3ZlQXV0b21hdGljUHVsbE5vZGUoQXVkaW9Ob2RlJiBub2RlKQorewor
ICAgIEFTU0VSVChpc0dyYXBoT3duZXIoKSk7CisKKyAgICBpZiAobV9hdXRvbWF0aWNQdWxsTm9k
ZXMucmVtb3ZlKCZub2RlKSkKKyAgICAgICAgbV9hdXRvbWF0aWNQdWxsTm9kZXNOZWVkVXBkYXRp
bmcgPSB0cnVlOworfQorCit2b2lkIFdlYktpdEF1ZGlvQ29udGV4dDo6dXBkYXRlQXV0b21hdGlj
UHVsbE5vZGVzKCkKK3sKKyAgICBBU1NFUlQoaXNHcmFwaE93bmVyKCkpOworCisgICAgaWYgKG1f
YXV0b21hdGljUHVsbE5vZGVzTmVlZFVwZGF0aW5nKSB7CisgICAgICAgIC8vIENvcHkgZnJvbSBt
X2F1dG9tYXRpY1B1bGxOb2RlcyB0byBtX3JlbmRlcmluZ0F1dG9tYXRpY1B1bGxOb2Rlcy4KKyAg
ICAgICAgbV9yZW5kZXJpbmdBdXRvbWF0aWNQdWxsTm9kZXMucmVzaXplKG1fYXV0b21hdGljUHVs
bE5vZGVzLnNpemUoKSk7CisKKyAgICAgICAgdW5zaWduZWQgaSA9IDA7CisgICAgICAgIGZvciAo
YXV0byYgb3V0cHV0IDogbV9hdXRvbWF0aWNQdWxsTm9kZXMpCisgICAgICAgICAgICBtX3JlbmRl
cmluZ0F1dG9tYXRpY1B1bGxOb2Rlc1tpKytdID0gb3V0cHV0OworCisgICAgICAgIG1fYXV0b21h
dGljUHVsbE5vZGVzTmVlZFVwZGF0aW5nID0gZmFsc2U7CisgICAgfQorfQorCit2b2lkIFdlYktp
dEF1ZGlvQ29udGV4dDo6cHJvY2Vzc0F1dG9tYXRpY1B1bGxOb2RlcyhzaXplX3QgZnJhbWVzVG9Q
cm9jZXNzKQoreworICAgIEFTU0VSVChpc0F1ZGlvVGhyZWFkKCkpOworCisgICAgZm9yIChhdXRv
JiBub2RlIDogbV9yZW5kZXJpbmdBdXRvbWF0aWNQdWxsTm9kZXMpCisgICAgICAgIG5vZGUtPnBy
b2Nlc3NJZk5lY2Vzc2FyeShmcmFtZXNUb1Byb2Nlc3MpOworfQorCit2b2lkIFdlYktpdEF1ZGlv
Q29udGV4dDo6bm9kZVdpbGxCZWdpblBsYXliYWNrKCkKK3sKKyAgICAvLyBDYWxsZWQgYnkgc2No
ZWR1bGVkIEF1ZGlvTm9kZXMgd2hlbiBjbGllbnRzIHNjaGVkdWxlIHRoZWlyIHN0YXJ0IHRpbWVz
LgorICAgIC8vIFByaW9yIHRvIHRoZSBpbnRyb2R1Y3Rpb24gb2Ygc3VzcGVuZCgpLCByZXN1bWUo
KSwgYW5kIHN0b3AoKSwgc3RhcnRpbmcKKyAgICAvLyBhIHNjaGVkdWxlZCBBdWRpb05vZGUgd291
bGQgcmVtb3ZlIHRoZSB1c2VyLWdlc3R1cmUgcmVzdHJpY3Rpb24sIGlmIHByZXNlbnQsCisgICAg
Ly8gYW5kIHdvdWxkIHRodXMgdW5tdXRlIHRoZSBjb250ZXh0LiBOb3cgdGhhdCBBdWRpb0NvbnRl
eHQgc3RheXMgaW4gdGhlCisgICAgLy8gInN1c3BlbmRlZCIgc3RhdGUgaWYgYSB1c2VyLWdlc3R1
cmUgcmVzdHJpY3Rpb24gaXMgcHJlc2VudCwgc3RhcnRpbmcgYQorICAgIC8vIHNjaGVkdWxlIEF1
ZGlvTm9kZSBzaG91bGQgc2V0IHRoZSBzdGF0ZSB0byAicnVubmluZyIsIGJ1dCBvbmx5IGlmIHRo
ZQorICAgIC8vIHVzZXItZ2VzdHVyZSByZXN0cmljdGlvbiBpcyBzZXQuCisgICAgaWYgKHVzZXJH
ZXN0dXJlUmVxdWlyZWRGb3JBdWRpb1N0YXJ0KCkpCisgICAgICAgIHN0YXJ0UmVuZGVyaW5nKCk7
Cit9CisKK3N0YXRpYyBib29sIHNob3VsZERvY3VtZW50QWxsb3dXZWJBdWRpb1RvQXV0b1BsYXko
Y29uc3QgRG9jdW1lbnQmIGRvY3VtZW50KQoreworICAgIGlmIChkb2N1bWVudC5wcm9jZXNzaW5n
VXNlckdlc3R1cmVGb3JNZWRpYSgpIHx8IGRvY3VtZW50LmlzQ2FwdHVyaW5nKCkpCisgICAgICAg
IHJldHVybiB0cnVlOworICAgIHJldHVybiBkb2N1bWVudC5xdWlya3MoKS5zaG91bGRBdXRvcGxh
eVdlYkF1ZGlvRm9yQXJiaXRyYXJ5VXNlckdlc3R1cmUoKSAmJiBkb2N1bWVudC50b3BEb2N1bWVu
dCgpLmhhc0hhZFVzZXJJbnRlcmFjdGlvbigpOworfQorCitib29sIFdlYktpdEF1ZGlvQ29udGV4
dDo6d2lsbEJlZ2luUGxheWJhY2soKQoreworICAgIGF1dG8qIGRvY3VtZW50ID0gdGhpcy0+ZG9j
dW1lbnQoKTsKKyAgICBpZiAoIWRvY3VtZW50KQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAg
ICBpZiAodXNlckdlc3R1cmVSZXF1aXJlZEZvckF1ZGlvU3RhcnQoKSkgeworICAgICAgICBpZiAo
IXNob3VsZERvY3VtZW50QWxsb3dXZWJBdWRpb1RvQXV0b1BsYXkoKmRvY3VtZW50KSkgeworICAg
ICAgICAgICAgQUxXQVlTX0xPRyhMT0dJREVOVElGSUVSLCAicmV0dXJuaW5nIGZhbHNlLCBub3Qg
cHJvY2Vzc2luZyB1c2VyIGdlc3R1cmUgb3IgY2FwdHVyaW5nIik7CisgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CisgICAgICAgIH0KKyAgICAgICAgcmVtb3ZlQmVoYXZpb3JSZXN0cmljdGlvbihX
ZWJLaXRBdWRpb0NvbnRleHQ6OlJlcXVpcmVVc2VyR2VzdHVyZUZvckF1ZGlvU3RhcnRSZXN0cmlj
dGlvbik7CisgICAgfQorCisgICAgaWYgKHBhZ2VDb25zZW50UmVxdWlyZWRGb3JBdWRpb1N0YXJ0
KCkpIHsKKyAgICAgICAgYXV0byogcGFnZSA9IGRvY3VtZW50LT5wYWdlKCk7CisgICAgICAgIGlm
IChwYWdlICYmICFwYWdlLT5jYW5TdGFydE1lZGlhKCkpIHsKKyAgICAgICAgICAgIGRvY3VtZW50
LT5hZGRNZWRpYUNhblN0YXJ0TGlzdGVuZXIoKnRoaXMpOworICAgICAgICAgICAgQUxXQVlTX0xP
RyhMT0dJREVOVElGSUVSLCAicmV0dXJuaW5nIGZhbHNlLCBwYWdlIGRvZXNuJ3QgYWxsb3cgbWVk
aWEgdG8gc3RhcnQiKTsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorICAg
ICAgICByZW1vdmVCZWhhdmlvclJlc3RyaWN0aW9uKFdlYktpdEF1ZGlvQ29udGV4dDo6UmVxdWly
ZVBhZ2VDb25zZW50Rm9yQXVkaW9TdGFydFJlc3RyaWN0aW9uKTsKKyAgICB9CisKKyAgICBhdXRv
IHdpbGxCZWdpbiA9IG1fbWVkaWFTZXNzaW9uLT5jbGllbnRXaWxsQmVnaW5QbGF5YmFjaygpOwor
ICAgIEFMV0FZU19MT0coTE9HSURFTlRJRklFUiwgInJldHVybmluZyAiLCB3aWxsQmVnaW4pOwor
CisgICAgcmV0dXJuIHdpbGxCZWdpbjsKK30KKworYm9vbCBXZWJLaXRBdWRpb0NvbnRleHQ6Ondp
bGxQYXVzZVBsYXliYWNrKCkKK3sKKyAgICBhdXRvKiBkb2N1bWVudCA9IHRoaXMtPmRvY3VtZW50
KCk7CisgICAgaWYgKCFkb2N1bWVudCkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgaWYg
KHVzZXJHZXN0dXJlUmVxdWlyZWRGb3JBdWRpb1N0YXJ0KCkpIHsKKyAgICAgICAgaWYgKCFkb2N1
bWVudC0+cHJvY2Vzc2luZ1VzZXJHZXN0dXJlRm9yTWVkaWEoKSkKKyAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKKyAgICAgICAgcmVtb3ZlQmVoYXZpb3JSZXN0cmljdGlvbihXZWJLaXRBdWRpb0Nv
bnRleHQ6OlJlcXVpcmVVc2VyR2VzdHVyZUZvckF1ZGlvU3RhcnRSZXN0cmljdGlvbik7CisgICAg
fQorCisgICAgaWYgKHBhZ2VDb25zZW50UmVxdWlyZWRGb3JBdWRpb1N0YXJ0KCkpIHsKKyAgICAg
ICAgYXV0byogcGFnZSA9IGRvY3VtZW50LT5wYWdlKCk7CisgICAgICAgIGlmIChwYWdlICYmICFw
YWdlLT5jYW5TdGFydE1lZGlhKCkpIHsKKyAgICAgICAgICAgIGRvY3VtZW50LT5hZGRNZWRpYUNh
blN0YXJ0TGlzdGVuZXIoKnRoaXMpOworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAg
ICB9CisgICAgICAgIHJlbW92ZUJlaGF2aW9yUmVzdHJpY3Rpb24oV2ViS2l0QXVkaW9Db250ZXh0
OjpSZXF1aXJlUGFnZUNvbnNlbnRGb3JBdWRpb1N0YXJ0UmVzdHJpY3Rpb24pOworICAgIH0KKwor
ICAgIHJldHVybiBtX21lZGlhU2Vzc2lvbi0+Y2xpZW50V2lsbFBhdXNlUGxheWJhY2soKTsKK30K
Kwordm9pZCBXZWJLaXRBdWRpb0NvbnRleHQ6OnN0YXJ0UmVuZGVyaW5nKCkKK3sKKyAgICBBTFdB
WVNfTE9HKExPR0lERU5USUZJRVIpOworICAgIGlmIChtX2lzU3RvcFNjaGVkdWxlZCB8fCAhd2ls
bEJlZ2luUGxheWJhY2soKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgbWFrZVBlbmRpbmdBY3Rp
dml0eSgpOworCisgICAgZGVzdGluYXRpb24oKS0+c3RhcnRSZW5kZXJpbmcoKTsKKyAgICBzZXRT
dGF0ZShTdGF0ZTo6UnVubmluZyk7Cit9CisKK3ZvaWQgV2ViS2l0QXVkaW9Db250ZXh0OjptZWRp
YUNhblN0YXJ0KERvY3VtZW50JiBkb2N1bWVudCkKK3sKKyAgICBBU1NFUlRfVU5VU0VEKGRvY3Vt
ZW50LCAmZG9jdW1lbnQgPT0gdGhpcy0+ZG9jdW1lbnQoKSk7CisgICAgcmVtb3ZlQmVoYXZpb3JS
ZXN0cmljdGlvbihXZWJLaXRBdWRpb0NvbnRleHQ6OlJlcXVpcmVQYWdlQ29uc2VudEZvckF1ZGlv
U3RhcnRSZXN0cmljdGlvbik7CisgICAgbWF5UmVzdW1lUGxheWJhY2sodHJ1ZSk7Cit9CisKK01l
ZGlhUHJvZHVjZXI6Ok1lZGlhU3RhdGVGbGFncyBXZWJLaXRBdWRpb0NvbnRleHQ6Om1lZGlhU3Rh
dGUoKSBjb25zdAoreworICAgIGlmICghbV9pc1N0b3BTY2hlZHVsZWQgJiYgbV9kZXN0aW5hdGlv
bk5vZGUgJiYgbV9kZXN0aW5hdGlvbk5vZGUtPmlzUGxheWluZ0F1ZGlvKCkpCisgICAgICAgIHJl
dHVybiBNZWRpYVByb2R1Y2VyOjpJc1BsYXlpbmdBdWRpbzsKKworICAgIHJldHVybiBNZWRpYVBy
b2R1Y2VyOjpJc05vdFBsYXlpbmc7Cit9CisKK3ZvaWQgV2ViS2l0QXVkaW9Db250ZXh0OjpwYWdl
TXV0ZWRTdGF0ZURpZENoYW5nZSgpCit7CisgICAgaWYgKG1fZGVzdGluYXRpb25Ob2RlICYmIGRv
Y3VtZW50KCkgJiYgZG9jdW1lbnQoKS0+cGFnZSgpKQorICAgICAgICBtX2Rlc3RpbmF0aW9uTm9k
ZS0+c2V0TXV0ZWQoZG9jdW1lbnQoKS0+cGFnZSgpLT5pc0F1ZGlvTXV0ZWQoKSk7Cit9CisKK3Zv
aWQgV2ViS2l0QXVkaW9Db250ZXh0Ojppc1BsYXlpbmdBdWRpb0RpZENoYW5nZSgpCit7CisgICAg
Ly8gTWFrZSBzdXJlIHRvIGNhbGwgRG9jdW1lbnQ6OnVwZGF0ZUlzUGxheWluZ01lZGlhKCkgb24g
dGhlIG1haW4gdGhyZWFkLCBzaW5jZQorICAgIC8vIHdlIGNvdWxkIGJlIG9uIHRoZSBhdWRpbyBJ
L08gdGhyZWFkIGhlcmUgYW5kIHRoZSBjYWxsIGludG8gV2ViQ29yZSBjb3VsZCBibG9jay4KKyAg
ICBjYWxsT25NYWluVGhyZWFkKFtwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyldIHsKKyAg
ICAgICAgaWYgKHByb3RlY3RlZFRoaXMtPmRvY3VtZW50KCkpCisgICAgICAgICAgICBwcm90ZWN0
ZWRUaGlzLT5kb2N1bWVudCgpLT51cGRhdGVJc1BsYXlpbmdNZWRpYSgpOworICAgIH0pOworfQor
Cit2b2lkIFdlYktpdEF1ZGlvQ29udGV4dDo6ZmluaXNoZWRSZW5kZXJpbmcoYm9vbCBkaWRSZW5k
ZXJpbmcpCit7CisgICAgQVNTRVJUKGlzT2ZmbGluZUNvbnRleHQoKSk7CisgICAgQVNTRVJUKGlz
TWFpblRocmVhZCgpKTsKKyAgICBpZiAoIWlzTWFpblRocmVhZCgpKQorICAgICAgICByZXR1cm47
CisKKyAgICBhdXRvIGNsZWFyUGVuZGluZ0FjdGl2aXR5SWZFeGl0RWFybHkgPSBXVEY6Om1ha2VT
Y29wZUV4aXQoW3RoaXNdIHsKKyAgICAgICAgY2xlYXJQZW5kaW5nQWN0aXZpdHkoKTsKKyAgICB9
KTsKKworCisgICAgQUxXQVlTX0xPRyhMT0dJREVOVElGSUVSKTsKKworICAgIGlmICghZGlkUmVu
ZGVyaW5nKQorICAgICAgICByZXR1cm47CisKKyAgICBBdWRpb0J1ZmZlciogcmVuZGVyZWRCdWZm
ZXIgPSBtX3JlbmRlclRhcmdldC5nZXQoKTsKKyAgICBzZXRTdGF0ZShTdGF0ZTo6Q2xvc2VkKTsK
KworICAgIEFTU0VSVChyZW5kZXJlZEJ1ZmZlcik7CisgICAgaWYgKCFyZW5kZXJlZEJ1ZmZlcikK
KyAgICAgICAgcmV0dXJuOworCisgICAgLy8gQXZvaWQgZmlyaW5nIHRoZSBldmVudCBpZiB0aGUg
ZG9jdW1lbnQgaGFzIGFscmVhZHkgZ29uZSBhd2F5LgorICAgIGlmIChtX2lzU3RvcFNjaGVkdWxl
ZCkKKyAgICAgICAgcmV0dXJuOworCisgICAgY2xlYXJQZW5kaW5nQWN0aXZpdHlJZkV4aXRFYXJs
eS5yZWxlYXNlKCk7CisgICAgbV9ldmVudFF1ZXVlLT5lbnF1ZXVlRXZlbnQoT2ZmbGluZUF1ZGlv
Q29tcGxldGlvbkV2ZW50OjpjcmVhdGUocmVuZGVyZWRCdWZmZXIpKTsKK30KKwordm9pZCBXZWJL
aXRBdWRpb0NvbnRleHQ6OmRpc3BhdGNoRXZlbnQoRXZlbnQmIGV2ZW50KQoreworICAgIEV2ZW50
VGFyZ2V0OjpkaXNwYXRjaEV2ZW50KGV2ZW50KTsKKyAgICBpZiAoZXZlbnQuZXZlbnRJbnRlcmZh
Y2UoKSA9PSBPZmZsaW5lQXVkaW9Db21wbGV0aW9uRXZlbnRJbnRlcmZhY2VUeXBlKQorICAgICAg
ICBjbGVhclBlbmRpbmdBY3Rpdml0eSgpOworfQorCit2b2lkIFdlYktpdEF1ZGlvQ29udGV4dDo6
aW5jcmVtZW50QWN0aXZlU291cmNlQ291bnQoKQoreworICAgICsrbV9hY3RpdmVTb3VyY2VDb3Vu
dDsKK30KKwordm9pZCBXZWJLaXRBdWRpb0NvbnRleHQ6OmRlY3JlbWVudEFjdGl2ZVNvdXJjZUNv
dW50KCkKK3sKKyAgICAtLW1fYWN0aXZlU291cmNlQ291bnQ7Cit9CisKK3ZvaWQgV2ViS2l0QXVk
aW9Db250ZXh0OjpzdXNwZW5kUmVuZGVyaW5nKERPTVByb21pc2VEZWZlcnJlZDx2b2lkPiYmIHBy
b21pc2UpCit7CisgICAgaWYgKGlzT2ZmbGluZUNvbnRleHQoKSB8fCBtX2lzU3RvcFNjaGVkdWxl
ZCkgeworICAgICAgICBwcm9taXNlLnJlamVjdChJbnZhbGlkU3RhdGVFcnJvcik7CisgICAgICAg
IHJldHVybjsKKyAgICB9CisKKyAgICBpZiAobV9zdGF0ZSA9PSBTdGF0ZTo6U3VzcGVuZGVkKSB7
CisgICAgICAgIHByb21pc2UucmVzb2x2ZSgpOworICAgICAgICByZXR1cm47CisgICAgfQorCisg
ICAgaWYgKG1fc3RhdGUgPT0gU3RhdGU6OkNsb3NlZCB8fCBtX3N0YXRlID09IFN0YXRlOjpJbnRl
cnJ1cHRlZCB8fCAhbV9kZXN0aW5hdGlvbk5vZGUpIHsKKyAgICAgICAgcHJvbWlzZS5yZWplY3Qo
KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGFkZFJlYWN0aW9uKFN0YXRlOjpTdXNw
ZW5kZWQsIFdURk1vdmUocHJvbWlzZSkpOworCisgICAgaWYgKCF3aWxsUGF1c2VQbGF5YmFjaygp
KQorICAgICAgICByZXR1cm47CisKKyAgICBsYXp5SW5pdGlhbGl6ZSgpOworCisgICAgbV9kZXN0
aW5hdGlvbk5vZGUtPnN1c3BlbmQoW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlz
KV0geworICAgICAgICBzZXRTdGF0ZShTdGF0ZTo6U3VzcGVuZGVkKTsKKyAgICB9KTsKK30KKwor
dm9pZCBXZWJLaXRBdWRpb0NvbnRleHQ6OnJlc3VtZVJlbmRlcmluZyhET01Qcm9taXNlRGVmZXJy
ZWQ8dm9pZD4mJiBwcm9taXNlKQoreworICAgIGlmIChpc09mZmxpbmVDb250ZXh0KCkgfHwgbV9p
c1N0b3BTY2hlZHVsZWQpIHsKKyAgICAgICAgcHJvbWlzZS5yZWplY3QoSW52YWxpZFN0YXRlRXJy
b3IpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgaWYgKG1fc3RhdGUgPT0gU3RhdGU6
OlJ1bm5pbmcpIHsKKyAgICAgICAgcHJvbWlzZS5yZXNvbHZlKCk7CisgICAgICAgIHJldHVybjsK
KyAgICB9CisKKyAgICBpZiAobV9zdGF0ZSA9PSBTdGF0ZTo6Q2xvc2VkIHx8ICFtX2Rlc3RpbmF0
aW9uTm9kZSkgeworICAgICAgICBwcm9taXNlLnJlamVjdCgpOworICAgICAgICByZXR1cm47Cisg
ICAgfQorCisgICAgYWRkUmVhY3Rpb24oU3RhdGU6OlJ1bm5pbmcsIFdURk1vdmUocHJvbWlzZSkp
OworCisgICAgaWYgKCF3aWxsQmVnaW5QbGF5YmFjaygpKQorICAgICAgICByZXR1cm47CisKKyAg
ICBsYXp5SW5pdGlhbGl6ZSgpOworCisgICAgbV9kZXN0aW5hdGlvbk5vZGUtPnJlc3VtZShbdGhp
cywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpXSB7CisgICAgICAgIHNldFN0YXRlKFN0
YXRlOjpSdW5uaW5nKTsKKyAgICB9KTsKK30KKwordm9pZCBXZWJLaXRBdWRpb0NvbnRleHQ6OmNs
b3NlKERPTVByb21pc2VEZWZlcnJlZDx2b2lkPiYmIHByb21pc2UpCit7CisgICAgaWYgKGlzT2Zm
bGluZUNvbnRleHQoKSB8fCBtX2lzU3RvcFNjaGVkdWxlZCkgeworICAgICAgICBwcm9taXNlLnJl
amVjdChJbnZhbGlkU3RhdGVFcnJvcik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBp
ZiAobV9zdGF0ZSA9PSBTdGF0ZTo6Q2xvc2VkIHx8ICFtX2Rlc3RpbmF0aW9uTm9kZSkgeworICAg
ICAgICBwcm9taXNlLnJlc29sdmUoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGFk
ZFJlYWN0aW9uKFN0YXRlOjpDbG9zZWQsIFdURk1vdmUocHJvbWlzZSkpOworCisgICAgbGF6eUlu
aXRpYWxpemUoKTsKKworICAgIG1fZGVzdGluYXRpb25Ob2RlLT5jbG9zZShbdGhpcywgcHJvdGVj
dGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpXSB7CisgICAgICAgIHNldFN0YXRlKFN0YXRlOjpDbG9z
ZWQpOworICAgICAgICB1bmluaXRpYWxpemUoKTsKKyAgICB9KTsKK30KKworCit2b2lkIFdlYktp
dEF1ZGlvQ29udGV4dDo6c3VzcGVuZFBsYXliYWNrKCkKK3sKKyAgICBpZiAoIW1fZGVzdGluYXRp
b25Ob2RlIHx8IG1fc3RhdGUgPT0gU3RhdGU6OkNsb3NlZCkKKyAgICAgICAgcmV0dXJuOworCisg
ICAgaWYgKG1fc3RhdGUgPT0gU3RhdGU6OlN1c3BlbmRlZCkgeworICAgICAgICBpZiAobV9tZWRp
YVNlc3Npb24tPnN0YXRlKCkgPT0gUGxhdGZvcm1NZWRpYVNlc3Npb246OkludGVycnVwdGVkKQor
ICAgICAgICAgICAgc2V0U3RhdGUoU3RhdGU6OkludGVycnVwdGVkKTsKKyAgICAgICAgcmV0dXJu
OworICAgIH0KKworICAgIGxhenlJbml0aWFsaXplKCk7CisKKyAgICBtX2Rlc3RpbmF0aW9uTm9k
ZS0+c3VzcGVuZChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpXSB7CisgICAg
ICAgIGJvb2wgaW50ZXJydXB0ZWQgPSBtX21lZGlhU2Vzc2lvbi0+c3RhdGUoKSA9PSBQbGF0Zm9y
bU1lZGlhU2Vzc2lvbjo6SW50ZXJydXB0ZWQ7CisgICAgICAgIHNldFN0YXRlKGludGVycnVwdGVk
ID8gU3RhdGU6OkludGVycnVwdGVkIDogU3RhdGU6OlN1c3BlbmRlZCk7CisgICAgfSk7Cit9CisK
K3ZvaWQgV2ViS2l0QXVkaW9Db250ZXh0OjptYXlSZXN1bWVQbGF5YmFjayhib29sIHNob3VsZFJl
c3VtZSkKK3sKKyAgICBpZiAoIW1fZGVzdGluYXRpb25Ob2RlIHx8IG1fc3RhdGUgPT0gU3RhdGU6
OkNsb3NlZCB8fCBtX3N0YXRlID09IFN0YXRlOjpSdW5uaW5nKQorICAgICAgICByZXR1cm47CisK
KyAgICBpZiAoIXNob3VsZFJlc3VtZSkgeworICAgICAgICBzZXRTdGF0ZShTdGF0ZTo6U3VzcGVu
ZGVkKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlmICghd2lsbEJlZ2luUGxheWJh
Y2soKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgbGF6eUluaXRpYWxpemUoKTsKKworICAgIG1f
ZGVzdGluYXRpb25Ob2RlLT5yZXN1bWUoW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0
aGlzKV0geworICAgICAgICBzZXRTdGF0ZShTdGF0ZTo6UnVubmluZyk7CisgICAgfSk7Cit9CisK
K3ZvaWQgV2ViS2l0QXVkaW9Db250ZXh0Ojpwb3N0VGFzayhXVEY6OkZ1bmN0aW9uPHZvaWQoKT4m
JiB0YXNrKQoreworICAgIGlmIChtX2lzU3RvcFNjaGVkdWxlZCkKKyAgICAgICAgcmV0dXJuOwor
CisgICAgbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0LT5wb3N0VGFzayhXVEZNb3ZlKHRhc2spKTsK
K30KKworY29uc3QgU2VjdXJpdHlPcmlnaW4qIFdlYktpdEF1ZGlvQ29udGV4dDo6b3JpZ2luKCkg
Y29uc3QKK3sKKyAgICByZXR1cm4gbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0ID8gbV9zY3JpcHRF
eGVjdXRpb25Db250ZXh0LT5zZWN1cml0eU9yaWdpbigpIDogbnVsbHB0cjsKK30KKwordm9pZCBX
ZWJLaXRBdWRpb0NvbnRleHQ6OmFkZENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VTb3VyY2Ugc291cmNl
LCBNZXNzYWdlTGV2ZWwgbGV2ZWwsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKK3sKKyAgICBpZiAo
bV9zY3JpcHRFeGVjdXRpb25Db250ZXh0KQorICAgICAgICBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQtPmFkZENvbnNvbGVNZXNzYWdlKHNvdXJjZSwgbGV2ZWwsIG1lc3NhZ2UpOworfQorCit2b2lk
IFdlYktpdEF1ZGlvQ29udGV4dDo6Y2xlYXJQZW5kaW5nQWN0aXZpdHkoKQoreworICAgIGlmICgh
bV9wZW5kaW5nQWN0aXZpdHkpCisgICAgICAgIHJldHVybjsKKyAgICBtX3BlbmRpbmdBY3Rpdml0
eSA9IG51bGxwdHI7CisgICAgLy8gRklYTUU6IFJlbW92ZSB0aGlzIHNwZWNpZmljIGRlcmVmKCkg
YW5kIHJlZigpIGNhbGwgaW4gbWFrZVBlbmRpbmdBY3Rpdml0eSgpLgorICAgIGRlcmVmKCk7Cit9
CisKK3ZvaWQgV2ViS2l0QXVkaW9Db250ZXh0OjptYWtlUGVuZGluZ0FjdGl2aXR5KCkKK3sKKyAg
ICBpZiAobV9wZW5kaW5nQWN0aXZpdHkpCisgICAgICAgIHJldHVybjsKKyAgICBtX3BlbmRpbmdB
Y3Rpdml0eSA9IEFjdGl2ZURPTU9iamVjdDo6bWFrZVBlbmRpbmdBY3Rpdml0eSgqdGhpcyk7Cisg
ICAgcmVmKCk7Cit9CisKKyNpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKK1dURkxvZ0NoYW5uZWwm
IFdlYktpdEF1ZGlvQ29udGV4dDo6bG9nQ2hhbm5lbCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIExv
Z01lZGlhOworfQorI2VuZGlmCisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8v
IEVOQUJMRShXRUJfQVVESU8pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmF1ZGlvL1dlYktpdEF1ZGlvQ29udGV4dC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJh
dWRpby9XZWJLaXRBdWRpb0NvbnRleHQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xNDQ2NjA5M2E2ODJlNzNkYTI4
NmFjNTE5OGFjZmRkNWNiYzhmOWUwCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJhdWRpby9XZWJLaXRBdWRpb0NvbnRleHQuaApAQCAtMCwwICsxLDQxNyBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICogQ29weXJpZ2h0IChDKSAyMDE2LTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAq
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04KKyAqIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUwor
ICogU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJBY3RpdmVET01PYmplY3Qu
aCIKKyNpbmNsdWRlICJBc3luY0F1ZGlvRGVjb2Rlci5oIgorI2luY2x1ZGUgIkF1ZGlvQnVzLmgi
CisjaW5jbHVkZSAiQXVkaW9Db250ZXh0LmgiCisjaW5jbHVkZSAiQXVkaW9Db250ZXh0U3RhdGUu
aCIKKyNpbmNsdWRlICJBdWRpb0Rlc3RpbmF0aW9uTm9kZS5oIgorI2luY2x1ZGUgIkV2ZW50VGFy
Z2V0LmgiCisjaW5jbHVkZSAiTWVkaWFDYW5TdGFydExpc3RlbmVyLmgiCisjaW5jbHVkZSAiTWVk
aWFQcm9kdWNlci5oIgorI2luY2x1ZGUgIlBsYXRmb3JtTWVkaWFTZXNzaW9uLmgiCisjaW5jbHVk
ZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgorI2luY2x1ZGUgIlZpc2liaWxpdHlDaGFuZ2VD
bGllbnQuaCIKKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9Db25zb2xlVHlwZXMuaD4KKyNpbmNs
dWRlIDxKYXZhU2NyaXB0Q29yZS9GbG9hdDMyQXJyYXkuaD4KKyNpbmNsdWRlIDxhdG9taWM+Cisj
aW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KKyNpbmNsdWRlIDx3dGYvTG9nZ2VySGVscGVyLmg+Cisj
aW5jbHVkZSA8d3RmL01haW5UaHJlYWQuaD4KKyNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CisjaW5j
bHVkZSA8d3RmL1RocmVhZFNhZmVSZWZDb3VudGVkLmg+CisjaW5jbHVkZSA8d3RmL1RocmVhZGlu
Zy5oPgorI2luY2x1ZGUgPHd0Zi9VbmlxdWVSZWYuaD4KKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+
CisjaW5jbHVkZSA8d3RmL3RleHQvQXRvbVN0cmluZ0hhc2guaD4KKworbmFtZXNwYWNlIFdlYkNv
cmUgeworCitjbGFzcyBBbmFseXNlck5vZGU7CitjbGFzcyBBdWRpb0J1ZmZlcjsKK2NsYXNzIEF1
ZGlvQnVmZmVyQ2FsbGJhY2s7CitjbGFzcyBBdWRpb0J1ZmZlclNvdXJjZU5vZGU7CitjbGFzcyBB
dWRpb0xpc3RlbmVyOworY2xhc3MgQXVkaW9TdW1taW5nSnVuY3Rpb247CitjbGFzcyBCaXF1YWRG
aWx0ZXJOb2RlOworY2xhc3MgQ2hhbm5lbE1lcmdlck5vZGU7CitjbGFzcyBDaGFubmVsU3BsaXR0
ZXJOb2RlOworY2xhc3MgQ29udm9sdmVyTm9kZTsKK2NsYXNzIERlbGF5Tm9kZTsKK2NsYXNzIERv
Y3VtZW50OworY2xhc3MgRHluYW1pY3NDb21wcmVzc29yTm9kZTsKK2NsYXNzIEdhaW5Ob2RlOwor
Y2xhc3MgSFRNTE1lZGlhRWxlbWVudDsKK2NsYXNzIE1haW5UaHJlYWRHZW5lcmljRXZlbnRRdWV1
ZTsKK2NsYXNzIE1lZGlhRWxlbWVudEF1ZGlvU291cmNlTm9kZTsKK2NsYXNzIE1lZGlhU3RyZWFt
OworY2xhc3MgTWVkaWFTdHJlYW1BdWRpb0Rlc3RpbmF0aW9uTm9kZTsKK2NsYXNzIE1lZGlhU3Ry
ZWFtQXVkaW9Tb3VyY2VOb2RlOworY2xhc3MgT3NjaWxsYXRvck5vZGU7CitjbGFzcyBQZXJpb2Rp
Y1dhdmU7CitjbGFzcyBTY3JpcHRQcm9jZXNzb3JOb2RlOworY2xhc3MgU2VjdXJpdHlPcmlnaW47
CitjbGFzcyBXYXZlU2hhcGVyTm9kZTsKK2NsYXNzIFdlYktpdEF1ZGlvUGFubmVyTm9kZTsKKwor
dGVtcGxhdGU8dHlwZW5hbWUgSURMVHlwZT4gY2xhc3MgRE9NUHJvbWlzZURlZmVycmVkOworCisv
LyBBdWRpb0NvbnRleHQgaXMgdGhlIGNvcm5lcnN0b25lIG9mIHRoZSB3ZWIgYXVkaW8gQVBJIGFu
ZCBhbGwgQXVkaW9Ob2RlcyBhcmUgY3JlYXRlZCBmcm9tIGl0LgorLy8gRm9yIHRocmVhZCBzYWZl
dHkgYmV0d2VlbiB0aGUgYXVkaW8gdGhyZWFkIGFuZCB0aGUgbWFpbiB0aHJlYWQsIGl0IGhhcyBh
IHJlbmRlcmluZyBncmFwaCBsb2NraW5nIG1lY2hhbmlzbS4KKworY2xhc3MgV2ViS2l0QXVkaW9D
b250ZXh0CisgICAgOiBwdWJsaWMgQXVkaW9Db250ZXh0QmFzZQorICAgICwgcHJpdmF0ZSBQbGF0
Zm9ybU1lZGlhU2Vzc2lvbkNsaWVudAorICAgICwgcHJpdmF0ZSBWaXNpYmlsaXR5Q2hhbmdlQ2xp
ZW50Cit7CisgICAgV1RGX01BS0VfSVNPX0FMTE9DQVRFRChXZWJLaXRBdWRpb0NvbnRleHQpOwor
cHVibGljOgorICAgIC8vIENyZWF0ZSBhbiBXZWJLaXRBdWRpb0NvbnRleHQgZm9yIHJlbmRlcmlu
ZyB0byB0aGUgYXVkaW8gaGFyZHdhcmUuCisgICAgc3RhdGljIEV4Y2VwdGlvbk9yPFJlZjxXZWJL
aXRBdWRpb0NvbnRleHQ+PiBjcmVhdGUoRG9jdW1lbnQmKTsKKworICAgIHZpcnR1YWwgfldlYktp
dEF1ZGlvQ29udGV4dCgpOworCisgICAgYm9vbCBpc0luaXRpYWxpemVkKCkgY29uc3QgZmluYWw7
CisKKyAgICBib29sIGlzT2ZmbGluZUNvbnRleHQoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2lz
T2ZmbGluZUNvbnRleHQ7IH0KKworICAgIERvY3VtZW50SWRlbnRpZmllciBob3N0aW5nRG9jdW1l
bnRJZGVudGlmaWVyKCkgY29uc3QgZmluYWw7CisKKyAgICBBdWRpb0Rlc3RpbmF0aW9uTm9kZSog
ZGVzdGluYXRpb24oKSB7IHJldHVybiBtX2Rlc3RpbmF0aW9uTm9kZS5nZXQoKTsgfQorICAgIHNp
emVfdCBjdXJyZW50U2FtcGxlRnJhbWUoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2Rlc3RpbmF0
aW9uTm9kZSA/IG1fZGVzdGluYXRpb25Ob2RlLT5jdXJyZW50U2FtcGxlRnJhbWUoKSA6IDA7IH0K
KyAgICBkb3VibGUgY3VycmVudFRpbWUoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2Rlc3RpbmF0
aW9uTm9kZSA/IG1fZGVzdGluYXRpb25Ob2RlLT5jdXJyZW50VGltZSgpIDogMC47IH0KKyAgICBm
bG9hdCBzYW1wbGVSYXRlKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9kZXN0aW5hdGlvbk5vZGUg
PyBtX2Rlc3RpbmF0aW9uTm9kZS0+c2FtcGxlUmF0ZSgpIDogMC5mOyB9CisgICAgdW5zaWduZWQg
bG9uZyBhY3RpdmVTb3VyY2VDb3VudCgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PHVuc2ln
bmVkIGxvbmc+KG1fYWN0aXZlU291cmNlQ291bnQpOyB9CisKKyAgICB2b2lkIGluY3JlbWVudEFj
dGl2ZVNvdXJjZUNvdW50KCkgZmluYWw7CisgICAgdm9pZCBkZWNyZW1lbnRBY3RpdmVTb3VyY2VD
b3VudCgpIGZpbmFsOworCisgICAgRXhjZXB0aW9uT3I8UmVmPEF1ZGlvQnVmZmVyPj4gY3JlYXRl
QnVmZmVyKHVuc2lnbmVkIG51bWJlck9mQ2hhbm5lbHMsIHNpemVfdCBudW1iZXJPZkZyYW1lcywg
ZmxvYXQgc2FtcGxlUmF0ZSk7CisgICAgRXhjZXB0aW9uT3I8UmVmPEF1ZGlvQnVmZmVyPj4gY3Jl
YXRlQnVmZmVyKEFycmF5QnVmZmVyJiwgYm9vbCBtaXhUb01vbm8pOworCisgICAgLy8gQXN5bmNo
cm9ub3VzIGF1ZGlvIGZpbGUgZGF0YSBkZWNvZGluZy4KKyAgICB2b2lkIGRlY29kZUF1ZGlvRGF0
YShSZWY8QXJyYXlCdWZmZXI+JiYsIFJlZlB0cjxBdWRpb0J1ZmZlckNhbGxiYWNrPiYmLCBSZWZQ
dHI8QXVkaW9CdWZmZXJDYWxsYmFjaz4mJik7CisKKyAgICBBdWRpb0xpc3RlbmVyKiBsaXN0ZW5l
cigpIHsgcmV0dXJuIG1fbGlzdGVuZXIuZ2V0KCk7IH0KKworICAgIHZvaWQgc3VzcGVuZFJlbmRl
cmluZyhET01Qcm9taXNlRGVmZXJyZWQ8dm9pZD4mJik7CisgICAgdm9pZCByZXN1bWVSZW5kZXJp
bmcoRE9NUHJvbWlzZURlZmVycmVkPHZvaWQ+JiYpOworICAgIHZvaWQgY2xvc2UoRE9NUHJvbWlz
ZURlZmVycmVkPHZvaWQ+JiYpOworCisgICAgdXNpbmcgU3RhdGUgPSBBdWRpb0NvbnRleHRTdGF0
ZTsKKyAgICBTdGF0ZSBzdGF0ZSgpIGNvbnN0OworICAgIGJvb2wgaXNDbG9zZWQoKSBjb25zdCB7
IHJldHVybiBtX3N0YXRlID09IFN0YXRlOjpDbG9zZWQ7IH0KKworICAgIGJvb2wgd291bGRUYWlu
dE9yaWdpbihjb25zdCBVUkwmKSBjb25zdDsKKworICAgIC8vIFRoZSBBdWRpb05vZGUgY3JlYXRl
IG1ldGhvZHMgYXJlIGNhbGxlZCBvbiB0aGUgbWFpbiB0aHJlYWQgKGZyb20gSmF2YVNjcmlwdCku
CisgICAgRXhjZXB0aW9uT3I8UmVmPEF1ZGlvQnVmZmVyU291cmNlTm9kZT4+IGNyZWF0ZUJ1ZmZl
clNvdXJjZSgpOworI2lmIEVOQUJMRShWSURFTykKKyAgICBFeGNlcHRpb25PcjxSZWY8TWVkaWFF
bGVtZW50QXVkaW9Tb3VyY2VOb2RlPj4gY3JlYXRlTWVkaWFFbGVtZW50U291cmNlKEhUTUxNZWRp
YUVsZW1lbnQmKTsKKyNlbmRpZgorI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCisgICAgRXhjZXB0
aW9uT3I8UmVmPE1lZGlhU3RyZWFtQXVkaW9Tb3VyY2VOb2RlPj4gY3JlYXRlTWVkaWFTdHJlYW1T
b3VyY2UoTWVkaWFTdHJlYW0mKTsKKyAgICBFeGNlcHRpb25PcjxSZWY8TWVkaWFTdHJlYW1BdWRp
b0Rlc3RpbmF0aW9uTm9kZT4+IGNyZWF0ZU1lZGlhU3RyZWFtRGVzdGluYXRpb24oKTsKKyNlbmRp
ZgorICAgIEV4Y2VwdGlvbk9yPFJlZjxHYWluTm9kZT4+IGNyZWF0ZUdhaW4oKTsKKyAgICBFeGNl
cHRpb25PcjxSZWY8QmlxdWFkRmlsdGVyTm9kZT4+IGNyZWF0ZUJpcXVhZEZpbHRlcigpOworICAg
IEV4Y2VwdGlvbk9yPFJlZjxXYXZlU2hhcGVyTm9kZT4+IGNyZWF0ZVdhdmVTaGFwZXIoKTsKKyAg
ICBFeGNlcHRpb25PcjxSZWY8RGVsYXlOb2RlPj4gY3JlYXRlRGVsYXkoZG91YmxlIG1heERlbGF5
VGltZSk7CisgICAgRXhjZXB0aW9uT3I8UmVmPFdlYktpdEF1ZGlvUGFubmVyTm9kZT4+IGNyZWF0
ZVBhbm5lcigpOworICAgIEV4Y2VwdGlvbk9yPFJlZjxDb252b2x2ZXJOb2RlPj4gY3JlYXRlQ29u
dm9sdmVyKCk7CisgICAgRXhjZXB0aW9uT3I8UmVmPER5bmFtaWNzQ29tcHJlc3Nvck5vZGU+PiBj
cmVhdGVEeW5hbWljc0NvbXByZXNzb3IoKTsKKyAgICBFeGNlcHRpb25PcjxSZWY8QW5hbHlzZXJO
b2RlPj4gY3JlYXRlQW5hbHlzZXIoKTsKKyAgICBFeGNlcHRpb25PcjxSZWY8U2NyaXB0UHJvY2Vz
c29yTm9kZT4+IGNyZWF0ZVNjcmlwdFByb2Nlc3NvcihzaXplX3QgYnVmZmVyU2l6ZSwgc2l6ZV90
IG51bWJlck9mSW5wdXRDaGFubmVscywgc2l6ZV90IG51bWJlck9mT3V0cHV0Q2hhbm5lbHMpOwor
ICAgIEV4Y2VwdGlvbk9yPFJlZjxDaGFubmVsU3BsaXR0ZXJOb2RlPj4gY3JlYXRlQ2hhbm5lbFNw
bGl0dGVyKHNpemVfdCBudW1iZXJPZk91dHB1dHMpOworICAgIEV4Y2VwdGlvbk9yPFJlZjxDaGFu
bmVsTWVyZ2VyTm9kZT4+IGNyZWF0ZUNoYW5uZWxNZXJnZXIoc2l6ZV90IG51bWJlck9mSW5wdXRz
KTsKKyAgICBFeGNlcHRpb25PcjxSZWY8T3NjaWxsYXRvck5vZGU+PiBjcmVhdGVPc2NpbGxhdG9y
KCk7CisgICAgRXhjZXB0aW9uT3I8UmVmPFBlcmlvZGljV2F2ZT4+IGNyZWF0ZVBlcmlvZGljV2F2
ZShGbG9hdDMyQXJyYXkmIHJlYWwsIEZsb2F0MzJBcnJheSYgaW1hZ2luYXJ5KTsKKworICAgIC8v
IFdoZW4gYSBzb3VyY2Ugbm9kZSBoYXMgbm8gbW9yZSBwcm9jZXNzaW5nIHRvIGRvIChoYXMgZmlu
aXNoZWQgcGxheWluZyksIHRoZW4gaXQgdGVsbHMgdGhlIGNvbnRleHQgdG8gZGVyZWZlcmVuY2Ug
aXQuCisgICAgdm9pZCBub3RpZnlOb2RlRmluaXNoZWRQcm9jZXNzaW5nKEF1ZGlvTm9kZSopIGZp
bmFsOworCisgICAgLy8gQ2FsbGVkIGF0IHRoZSBzdGFydCBvZiBlYWNoIHJlbmRlciBxdWFudHVt
LgorICAgIHZvaWQgaGFuZGxlUHJlUmVuZGVyVGFza3MoKSBmaW5hbDsKKworICAgIC8vIENhbGxl
ZCBhdCB0aGUgZW5kIG9mIGVhY2ggcmVuZGVyIHF1YW50dW0uCisgICAgdm9pZCBoYW5kbGVQb3N0
UmVuZGVyVGFza3MoKSBmaW5hbDsKKworICAgIC8vIENhbGxlZCBwZXJpb2RpY2FsbHkgYXQgdGhl
IGVuZCBvZiBlYWNoIHJlbmRlciBxdWFudHVtIHRvIGRlcmVmZXJlbmNlIGZpbmlzaGVkIHNvdXJj
ZSBub2Rlcy4KKyAgICB2b2lkIGRlcmVmRmluaXNoZWRTb3VyY2VOb2RlcygpOworCisgICAgLy8g
V2Ugc2NoZWR1bGUgZGVsZXRpb24gb2YgYWxsIG1hcmtlZCBub2RlcyBhdCB0aGUgZW5kIG9mIGVh
Y2ggcmVhbHRpbWUgcmVuZGVyIHF1YW50dW0uCisgICAgdm9pZCBtYXJrRm9yRGVsZXRpb24oQXVk
aW9Ob2RlJikgZmluYWw7CisgICAgdm9pZCBkZWxldGVNYXJrZWROb2RlcygpIGZpbmFsOworCisg
ICAgLy8gQXVkaW9Db250ZXh0IGNhbiBwdWxsIG5vZGUocykgYXQgdGhlIGVuZCBvZiBlYWNoIHJl
bmRlciBxdWFudHVtIGV2ZW4gd2hlbiB0aGV5IGFyZSBub3QgY29ubmVjdGVkIHRvIGFueSBkb3du
c3RyZWFtIG5vZGVzLgorICAgIC8vIFRoZXNlIHR3byBtZXRob2RzIGFyZSBjYWxsZWQgYnkgdGhl
IG5vZGVzIHdobyB3YW50IHRvIGFkZC9yZW1vdmUgdGhlbXNlbHZlcyBpbnRvL2Zyb20gdGhlIGF1
dG9tYXRpYyBwdWxsIGxpc3RzLgorICAgIHZvaWQgYWRkQXV0b21hdGljUHVsbE5vZGUoQXVkaW9O
b2RlJikgZmluYWw7CisgICAgdm9pZCByZW1vdmVBdXRvbWF0aWNQdWxsTm9kZShBdWRpb05vZGUm
KSBmaW5hbDsKKworICAgIC8vIENhbGxlZCByaWdodCBiZWZvcmUgaGFuZGxlUG9zdFJlbmRlclRh
c2tzKCkgdG8gaGFuZGxlIG5vZGVzIHdoaWNoIG5lZWQgdG8gYmUgcHVsbGVkIGV2ZW4gd2hlbiB0
aGV5IGFyZSBub3QgY29ubmVjdGVkIHRvIGFueXRoaW5nLgorICAgIHZvaWQgcHJvY2Vzc0F1dG9t
YXRpY1B1bGxOb2RlcyhzaXplX3QgZnJhbWVzVG9Qcm9jZXNzKSBmaW5hbDsKKworICAgIC8vIEtl
ZXBzIHRyYWNrIG9mIHRoZSBudW1iZXIgb2YgY29ubmVjdGlvbnMgbWFkZS4KKyAgICB2b2lkIGlu
Y3JlbWVudENvbm5lY3Rpb25Db3VudCgpIGZpbmFsCisgICAgeworICAgICAgICBBU1NFUlQoaXNN
YWluVGhyZWFkKCkpOworICAgICAgICBtX2Nvbm5lY3Rpb25Db3VudCsrOworICAgIH0KKworICAg
IHVuc2lnbmVkIGNvbm5lY3Rpb25Db3VudCgpIGNvbnN0IHsgcmV0dXJuIG1fY29ubmVjdGlvbkNv
dW50OyB9CisKKyAgICAvLworICAgIC8vIFRocmVhZCBTYWZldHkgYW5kIEdyYXBoIExvY2tpbmc6
CisgICAgLy8KKworICAgIHZvaWQgc2V0QXVkaW9UaHJlYWQoVGhyZWFkJiB0aHJlYWQpIGZpbmFs
IHsgbV9hdWRpb1RocmVhZCA9ICZ0aHJlYWQ7IH0gLy8gRklYTUU6IGNoZWNrIGVpdGhlciBub3Qg
aW5pdGlhbGl6ZWQgb3IgdGhlIHNhbWUKKyAgICBUaHJlYWQqIGF1ZGlvVGhyZWFkKCkgY29uc3Qg
eyByZXR1cm4gbV9hdWRpb1RocmVhZDsgfQorICAgIGJvb2wgaXNBdWRpb1RocmVhZCgpIGNvbnN0
IGZpbmFsOworCisgICAgLy8gUmV0dXJucyB0cnVlIG9ubHkgYWZ0ZXIgdGhlIGF1ZGlvIHRocmVh
ZCBoYXMgYmVlbiBzdGFydGVkIGFuZCB0aGVuIHNodXRkb3duLgorICAgIGJvb2wgaXNBdWRpb1Ro
cmVhZEZpbmlzaGVkKCkgZmluYWwgeyByZXR1cm4gbV9pc0F1ZGlvVGhyZWFkRmluaXNoZWQ7IH0K
KworICAgIC8vIG11c3RSZWxlYXNlTG9jayBpcyBzZXQgdG8gdHJ1ZSBpZiB3ZSBhY3F1aXJlZCB0
aGUgbG9jayBpbiB0aGlzIG1ldGhvZCBjYWxsIGFuZCBjYWxsZXIgbXVzdCB1bmxvY2soKSwgZmFs
c2UgaWYgaXQgd2FzIHByZXZpb3VzbHkgYWNxdWlyZWQuCisgICAgdm9pZCBsb2NrKGJvb2wmIG11
c3RSZWxlYXNlTG9jaykgZmluYWw7CisKKyAgICAvLyBSZXR1cm5zIHRydWUgaWYgd2Ugb3duIHRo
ZSBsb2NrLgorICAgIC8vIG11c3RSZWxlYXNlTG9jayBpcyBzZXQgdG8gdHJ1ZSBpZiB3ZSBhY3F1
aXJlZCB0aGUgbG9jayBpbiB0aGlzIG1ldGhvZCBjYWxsIGFuZCBjYWxsZXIgbXVzdCB1bmxvY2so
KSwgZmFsc2UgaWYgaXQgd2FzIHByZXZpb3VzbHkgYWNxdWlyZWQuCisgICAgYm9vbCB0cnlMb2Nr
KGJvb2wmIG11c3RSZWxlYXNlTG9jaykgZmluYWw7CisKKyAgICB2b2lkIHVubG9jaygpIGZpbmFs
OworCisgICAgLy8gUmV0dXJucyB0cnVlIGlmIHRoaXMgdGhyZWFkIG93bnMgdGhlIGNvbnRleHQn
cyBsb2NrLgorICAgIGJvb2wgaXNHcmFwaE93bmVyKCkgY29uc3QgZmluYWw7CisKKyAgICAvLyBS
ZXR1cm5zIHRoZSBtYXhpbXVtIG51bWJlciBvZiBjaGFubmVscyB3ZSBjYW4gc3VwcG9ydC4KKyAg
ICBzdGF0aWMgdW5zaWduZWQgbWF4TnVtYmVyT2ZDaGFubmVscygpIHsgcmV0dXJuIE1heE51bWJl
ck9mQ2hhbm5lbHM7IH0KKworICAgIC8vIEluIEF1ZGlvTm9kZTo6ZGVyZWYoKSBhIHRyeUxvY2so
KSBpcyB1c2VkIGZvciBjYWxsaW5nIGZpbmlzaERlcmVmKCksIGJ1dCBpZiBpdCBmYWlscyBrZWVw
IHRyYWNrIGhlcmUuCisgICAgdm9pZCBhZGREZWZlcnJlZEZpbmlzaERlcmVmKEF1ZGlvTm9kZSop
IGZpbmFsOworCisgICAgLy8gSW4gdGhlIGF1ZGlvIHRocmVhZCBhdCB0aGUgc3RhcnQgb2YgZWFj
aCByZW5kZXIgY3ljbGUsIHdlJ2xsIGNhbGwgaGFuZGxlRGVmZXJyZWRGaW5pc2hEZXJlZnMoKS4K
KyAgICB2b2lkIGhhbmRsZURlZmVycmVkRmluaXNoRGVyZWZzKCk7CisKKyAgICAvLyBPbmx5IGFj
Y2Vzc2VkIHdoZW4gdGhlIGdyYXBoIGxvY2sgaXMgaGVsZC4KKyAgICB2b2lkIG1hcmtTdW1taW5n
SnVuY3Rpb25EaXJ0eShBdWRpb1N1bW1pbmdKdW5jdGlvbiopIGZpbmFsOworICAgIHZvaWQgbWFy
a0F1ZGlvTm9kZU91dHB1dERpcnR5KEF1ZGlvTm9kZU91dHB1dCopIGZpbmFsOworCisgICAgLy8g
TXVzdCBiZSBjYWxsZWQgb24gbWFpbiB0aHJlYWQuCisgICAgdm9pZCByZW1vdmVNYXJrZWRTdW1t
aW5nSnVuY3Rpb24oQXVkaW9TdW1taW5nSnVuY3Rpb24qKSBmaW5hbDsKKworICAgIC8vIEV2ZW50
VGFyZ2V0CisgICAgRXZlbnRUYXJnZXRJbnRlcmZhY2UgZXZlbnRUYXJnZXRJbnRlcmZhY2UoKSBj
b25zdCBmaW5hbDsKKworICAgIHZvaWQgc3RhcnRSZW5kZXJpbmcoKTsKKyAgICB2b2lkIGZpbmlz
aGVkUmVuZGVyaW5nKGJvb2wgZGlkUmVuZGVyaW5nKSBmaW5hbDsKKworICAgIHN0YXRpYyB1bnNp
Z25lZCBzX2hhcmR3YXJlQ29udGV4dENvdW50OworCisgICAgLy8gUmVzdHJpY3Rpb25zIHRvIGNo
YW5nZSBkZWZhdWx0IGJlaGF2aW9ycy4KKyAgICBCZWhhdmlvclJlc3RyaWN0aW9ucyBiZWhhdmlv
clJlc3RyaWN0aW9ucygpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fcmVzdHJpY3Rpb25zOyB9Cisg
ICAgdm9pZCBhZGRCZWhhdmlvclJlc3RyaWN0aW9uKEJlaGF2aW9yUmVzdHJpY3Rpb25zIHJlc3Ry
aWN0aW9uKSBmaW5hbCB7IG1fcmVzdHJpY3Rpb25zIHw9IHJlc3RyaWN0aW9uOyB9CisgICAgdm9p
ZCByZW1vdmVCZWhhdmlvclJlc3RyaWN0aW9uKEJlaGF2aW9yUmVzdHJpY3Rpb25zIHJlc3RyaWN0
aW9uKSBmaW5hbCB7IG1fcmVzdHJpY3Rpb25zICY9IH5yZXN0cmljdGlvbjsgfQorCisgICAgdm9p
ZCBpc1BsYXlpbmdBdWRpb0RpZENoYW5nZSgpIGZpbmFsOworCisgICAgdm9pZCBub2RlV2lsbEJl
Z2luUGxheWJhY2soKSBmaW5hbDsKKworI2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRAorICAgIGNv
bnN0IExvZ2dlciYgbG9nZ2VyKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9sb2dnZXIuZ2V0KCk7
IH0KKyAgICBjb25zdCB2b2lkKiBsb2dJZGVudGlmaWVyKCkgY29uc3QgZmluYWwgeyByZXR1cm4g
bV9sb2dJZGVudGlmaWVyOyB9CisgICAgV1RGTG9nQ2hhbm5lbCYgbG9nQ2hhbm5lbCgpIGNvbnN0
IGZpbmFsOworICAgIGNvbnN0IHZvaWQqIG5leHRBdWRpb05vZGVMb2dJZGVudGlmaWVyKCkgZmlu
YWwgeyByZXR1cm4gY2hpbGRMb2dJZGVudGlmaWVyKG1fbG9nSWRlbnRpZmllciwgKyttX25leHRB
dWRpb05vZGVJZGVudGlmaWVyKTsgfQorICAgIGNvbnN0IHZvaWQqIG5leHRBdWRpb1BhcmFtZXRl
ckxvZ0lkZW50aWZpZXIoKSBmaW5hbCB7IHJldHVybiBjaGlsZExvZ0lkZW50aWZpZXIobV9sb2dJ
ZGVudGlmaWVyLCArK21fbmV4dEF1ZGlvUGFyYW1ldGVySWRlbnRpZmllcik7IH0KKyNlbmRpZgor
CisgICAgdm9pZCBwb3N0VGFzayhXVEY6OkZ1bmN0aW9uPHZvaWQoKT4mJikgZmluYWw7CisgICAg
Ym9vbCBpc1N0b3BwZWQoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2lzU3RvcFNjaGVkdWxlZDsg
fQorICAgIGNvbnN0IFNlY3VyaXR5T3JpZ2luKiBvcmlnaW4oKSBjb25zdCBmaW5hbDsKKyAgICB2
b2lkIGFkZENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VTb3VyY2UsIE1lc3NhZ2VMZXZlbCwgY29uc3Qg
U3RyaW5nJiBtZXNzYWdlKSBmaW5hbDsKKworcHJvdGVjdGVkOgorICAgIGV4cGxpY2l0IFdlYktp
dEF1ZGlvQ29udGV4dChEb2N1bWVudCYpOworICAgIFdlYktpdEF1ZGlvQ29udGV4dChEb2N1bWVu
dCYsIEF1ZGlvQnVmZmVyKiByZW5kZXJUYXJnZXQpOworCisgICAgc3RhdGljIGJvb2wgaXNTYW1w
bGVSYXRlUmFuZ2VHb29kKGZsb2F0IHNhbXBsZVJhdGUpOworICAgIHZvaWQgY2xlYXJQZW5kaW5n
QWN0aXZpdHkoKTsKKyAgICB2b2lkIG1ha2VQZW5kaW5nQWN0aXZpdHkoKTsKKworcHJpdmF0ZToK
KyAgICB2b2lkIGNvbnN0cnVjdENvbW1vbigpOworCisgICAgdm9pZCBsYXp5SW5pdGlhbGl6ZSgp
OworICAgIHZvaWQgdW5pbml0aWFsaXplKCk7CisKKyAgICBib29sIHdpbGxCZWdpblBsYXliYWNr
KCk7CisgICAgYm9vbCB3aWxsUGF1c2VQbGF5YmFjaygpOworCisgICAgYm9vbCB1c2VyR2VzdHVy
ZVJlcXVpcmVkRm9yQXVkaW9TdGFydCgpIGNvbnN0IHsgcmV0dXJuICFpc09mZmxpbmVDb250ZXh0
KCkgJiYgbV9yZXN0cmljdGlvbnMgJiBSZXF1aXJlVXNlckdlc3R1cmVGb3JBdWRpb1N0YXJ0UmVz
dHJpY3Rpb247IH0KKyAgICBib29sIHBhZ2VDb25zZW50UmVxdWlyZWRGb3JBdWRpb1N0YXJ0KCkg
Y29uc3QgeyByZXR1cm4gIWlzT2ZmbGluZUNvbnRleHQoKSAmJiBtX3Jlc3RyaWN0aW9ucyAmIFJl
cXVpcmVQYWdlQ29uc2VudEZvckF1ZGlvU3RhcnRSZXN0cmljdGlvbjsgfQorCisgICAgdm9pZCBz
ZXRTdGF0ZShTdGF0ZSk7CisKKyAgICB2b2lkIGNsZWFyKCk7CisKKyAgICB2b2lkIHNjaGVkdWxl
Tm9kZURlbGV0aW9uKCk7CisKKyAgICB2b2lkIG1lZGlhQ2FuU3RhcnQoRG9jdW1lbnQmKSBvdmVy
cmlkZTsKKworICAgIC8vIEV2ZW50VGFyZ2V0CisgICAgdm9pZCBkaXNwYXRjaEV2ZW50KEV2ZW50
JikgZmluYWw7CisKKyAgICAvLyBNZWRpYVByb2R1Y2VyCisgICAgTWVkaWFQcm9kdWNlcjo6TWVk
aWFTdGF0ZUZsYWdzIG1lZGlhU3RhdGUoKSBjb25zdCBvdmVycmlkZTsKKyAgICB2b2lkIHBhZ2VN
dXRlZFN0YXRlRGlkQ2hhbmdlKCkgb3ZlcnJpZGU7CisKKyAgICAvLyBUaGUgY29udGV4dCBpdHNl
bGYga2VlcHMgYSByZWZlcmVuY2UgdG8gYWxsIHNvdXJjZSBub2Rlcy4gIFRoZSBzb3VyY2Ugbm9k
ZXMsIHRoZW4gcmVmZXJlbmNlIGFsbCBub2RlcyB0aGV5J3JlIGNvbm5lY3RlZCB0by4KKyAgICAv
LyBJbiB0dXJuLCB0aGVzZSBub2RlcyByZWZlcmVuY2UgYWxsIG5vZGVzIHRoZXkncmUgY29ubmVj
dGVkIHRvLiAgQWxsIG5vZGVzIGFyZSB1bHRpbWF0ZWx5IGNvbm5lY3RlZCB0byB0aGUgQXVkaW9E
ZXN0aW5hdGlvbk5vZGUuCisgICAgLy8gV2hlbiB0aGUgY29udGV4dCBkZXJlZmVyZW5jZXMgYSBz
b3VyY2Ugbm9kZSwgaXQgd2lsbCBiZSBkZWFjdGl2YXRlZCBmcm9tIHRoZSByZW5kZXJpbmcgZ3Jh
cGggYWxvbmcgd2l0aCBhbGwgb3RoZXIgbm9kZXMgaXQgaXMKKyAgICAvLyB1bmlxdWVseSBjb25u
ZWN0ZWQgdG8uICBTZWUgdGhlIEF1ZGlvTm9kZTo6cmVmKCkgYW5kIEF1ZGlvTm9kZTo6ZGVyZWYo
KSBtZXRob2RzIGZvciBtb3JlIGRldGFpbHMuCisgICAgdm9pZCByZWZOb2RlKEF1ZGlvTm9kZSYp
OworICAgIHZvaWQgZGVyZWZOb2RlKEF1ZGlvTm9kZSYpOworCisgICAgLy8gQWN0aXZlRE9NT2Jq
ZWN0IEFQSS4KKyAgICB2b2lkIHN1c3BlbmQoUmVhc29uRm9yU3VzcGVuc2lvbikgZmluYWw7Cisg
ICAgdm9pZCByZXN1bWUoKSBmaW5hbDsKKyAgICB2b2lkIHN0b3AoKSBvdmVycmlkZTsKKyAgICBj
b25zdCBjaGFyKiBhY3RpdmVET01PYmplY3ROYW1lKCkgY29uc3Qgb3ZlcnJpZGU7CisKKyAgICAv
LyBXaGVuIHRoZSBjb250ZXh0IGdvZXMgYXdheSwgdGhlcmUgbWlnaHQgc3RpbGwgYmUgc29tZSBz
b3VyY2VzIHdoaWNoIGhhdmVuJ3QgZmluaXNoZWQgcGxheWluZy4KKyAgICAvLyBNYWtlIHN1cmUg
dG8gZGVyZWZlcmVuY2UgdGhlbSBoZXJlLgorICAgIHZvaWQgZGVyZWZVbmZpbmlzaGVkU291cmNl
Tm9kZXMoKTsKKworICAgIC8vIFBsYXRmb3JtTWVkaWFTZXNzaW9uQ2xpZW50CisgICAgUGxhdGZv
cm1NZWRpYVNlc3Npb246Ok1lZGlhVHlwZSBtZWRpYVR5cGUoKSBjb25zdCBvdmVycmlkZSB7IHJl
dHVybiBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6TWVkaWFUeXBlOjpXZWJBdWRpbzsgfQorICAgIFBs
YXRmb3JtTWVkaWFTZXNzaW9uOjpNZWRpYVR5cGUgcHJlc2VudGF0aW9uVHlwZSgpIGNvbnN0IG92
ZXJyaWRlIHsgcmV0dXJuIFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpNZWRpYVR5cGU6OldlYkF1ZGlv
OyB9CisgICAgdm9pZCBtYXlSZXN1bWVQbGF5YmFjayhib29sIHNob3VsZFJlc3VtZSkgb3ZlcnJp
ZGU7CisgICAgdm9pZCBzdXNwZW5kUGxheWJhY2soKSBvdmVycmlkZTsKKyAgICBib29sIGNhblJl
Y2VpdmVSZW1vdGVDb250cm9sQ29tbWFuZHMoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxz
ZTsgfQorICAgIHZvaWQgZGlkUmVjZWl2ZVJlbW90ZUNvbnRyb2xDb21tYW5kKFBsYXRmb3JtTWVk
aWFTZXNzaW9uOjpSZW1vdGVDb250cm9sQ29tbWFuZFR5cGUsIGNvbnN0IFBsYXRmb3JtTWVkaWFT
ZXNzaW9uOjpSZW1vdGVDb21tYW5kQXJndW1lbnQqKSBvdmVycmlkZSB7IH0KKyAgICBib29sIHN1
cHBvcnRzU2Vla2luZygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgYm9v
bCBzaG91bGRPdmVycmlkZUJhY2tncm91bmRQbGF5YmFja1Jlc3RyaWN0aW9uKFBsYXRmb3JtTWVk
aWFTZXNzaW9uOjpJbnRlcnJ1cHRpb25UeXBlKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxz
ZTsgfQorICAgIGJvb2wgY2FuUHJvZHVjZUF1ZGlvKCkgY29uc3QgZmluYWwgeyByZXR1cm4gdHJ1
ZTsgfQorICAgIGJvb2wgaXNTdXNwZW5kZWQoKSBjb25zdCBmaW5hbDsKKworICAgIHZvaWQgdmlz
aWJpbGl0eVN0YXRlQ2hhbmdlZCgpIGZpbmFsOworCisgICAgYm9vbCBpc0F1ZGlvQ29udGV4dCgp
IGNvbnN0IGZpbmFsIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgYm9vbCBpc1dlYktpdEF1ZGlvQ29u
dGV4dCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIHRydWU7IH0KKworICAgIHZvaWQgaGFuZGxlRGly
dHlBdWRpb1N1bW1pbmdKdW5jdGlvbnMoKTsKKyAgICB2b2lkIGhhbmRsZURpcnR5QXVkaW9Ob2Rl
T3V0cHV0cygpOworCisgICAgdm9pZCBhZGRSZWFjdGlvbihTdGF0ZSwgRE9NUHJvbWlzZURlZmVy
cmVkPHZvaWQ+JiYpOworICAgIHZvaWQgdXBkYXRlQXV0b21hdGljUHVsbE5vZGVzKCk7CisKKyNp
ZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKKyAgICBjb25zdCBjaGFyKiBsb2dDbGFzc05hbWUoKSBj
b25zdCBmaW5hbCB7IHJldHVybiAiV2ViS2l0QXVkaW9Db250ZXh0IjsgfQorCisgICAgUmVmPExv
Z2dlcj4gbV9sb2dnZXI7CisgICAgY29uc3Qgdm9pZCogbV9sb2dJZGVudGlmaWVyOworICAgIHVp
bnQ2NF90IG1fbmV4dEF1ZGlvTm9kZUlkZW50aWZpZXIgeyAwIH07CisgICAgdWludDY0X3QgbV9u
ZXh0QXVkaW9QYXJhbWV0ZXJJZGVudGlmaWVyIHsgMCB9OworI2VuZGlmCisKKyAgICAvLyBPbmx5
IGFjY2Vzc2VkIGluIHRoZSBhdWRpbyB0aHJlYWQuCisgICAgVmVjdG9yPEF1ZGlvTm9kZSo+IG1f
ZmluaXNoZWROb2RlczsKKworICAgIC8vIFdlIGRvbid0IHVzZSBSZWZQdHI8QXVkaW9Ob2RlPiBo
ZXJlIGJlY2F1c2UgQXVkaW9Ob2RlIGhhcyBhIG1vcmUgY29tcGxleCByZWYoKSAvIGRlcmVmKCkg
aW1wbGVtZW50YXRpb24KKyAgICAvLyB3aXRoIGFuIG9wdGlvbmFsIGFyZ3VtZW50IGZvciByZWZU
eXBlLiAgV2UgbmVlZCB0byB1c2UgdGhlIHNwZWNpYWwgcmVmVHlwZTogUmVmVHlwZUNvbm5lY3Rp
b24KKyAgICAvLyBFaXRoZXIgYWNjZXNzZWQgd2hlbiB0aGUgZ3JhcGggbG9jayBpcyBoZWxkLCBv
ciBvbiB0aGUgbWFpbiB0aHJlYWQgd2hlbiB0aGUgYXVkaW8gdGhyZWFkIGhhcyBmaW5pc2hlZC4K
KyAgICBWZWN0b3I8QXVkaW9Ob2RlKj4gbV9yZWZlcmVuY2VkTm9kZXM7CisKKyAgICAvLyBBY2N1
bXVsYXRlIG5vZGVzIHdoaWNoIG5lZWQgdG8gYmUgZGVsZXRlZCBoZXJlLgorICAgIC8vIFRoaXMg
aXMgY29waWVkIHRvIG1fbm9kZXNUb0RlbGV0ZSBhdCB0aGUgZW5kIG9mIGEgcmVuZGVyIGN5Y2xl
IGluIGhhbmRsZVBvc3RSZW5kZXJUYXNrcygpLCB3aGVyZSB3ZSdyZSBhc3N1cmVkIG9mIGEgc3Rh
YmxlIGdyYXBoCisgICAgLy8gc3RhdGUgd2hpY2ggd2lsbCBoYXZlIG5vIHJlZmVyZW5jZXMgdG8g
YW55IG9mIHRoZSBub2RlcyBpbiBtX25vZGVzVG9EZWxldGUgb25jZSB0aGUgY29udGV4dCBsb2Nr
IGlzIHJlbGVhc2VkCisgICAgLy8gKHdoZW4gaGFuZGxlUG9zdFJlbmRlclRhc2tzKCkgaGFzIGNv
bXBsZXRlZCkuCisgICAgVmVjdG9yPEF1ZGlvTm9kZSo+IG1fbm9kZXNNYXJrZWRGb3JEZWxldGlv
bjsKKworICAgIC8vIFRoZXkgd2lsbCBiZSBzY2hlZHVsZWQgZm9yIGRlbGV0aW9uIChvbiB0aGUg
bWFpbiB0aHJlYWQpIGF0IHRoZSBlbmQgb2YgYSByZW5kZXIgY3ljbGUgKGluIHJlYWx0aW1lIHRo
cmVhZCkuCisgICAgVmVjdG9yPEF1ZGlvTm9kZSo+IG1fbm9kZXNUb0RlbGV0ZTsKKworICAgIGJv
b2wgbV9pc0RlbGV0aW9uU2NoZWR1bGVkIHsgZmFsc2UgfTsKKyAgICBib29sIG1faXNTdG9wU2No
ZWR1bGVkIHsgZmFsc2UgfTsKKyAgICBib29sIG1faXNJbml0aWFsaXplZCB7IGZhbHNlIH07Cisg
ICAgYm9vbCBtX2lzQXVkaW9UaHJlYWRGaW5pc2hlZCB7IGZhbHNlIH07CisgICAgYm9vbCBtX2F1
dG9tYXRpY1B1bGxOb2Rlc05lZWRVcGRhdGluZyB7IGZhbHNlIH07CisgICAgYm9vbCBtX2lzT2Zm
bGluZUNvbnRleHQgeyBmYWxzZSB9OworCisgICAgLy8gT25seSBhY2Nlc3NlZCB3aGVuIHRoZSBn
cmFwaCBsb2NrIGlzIGhlbGQuCisgICAgSGFzaFNldDxBdWRpb1N1bW1pbmdKdW5jdGlvbio+IG1f
ZGlydHlTdW1taW5nSnVuY3Rpb25zOworICAgIEhhc2hTZXQ8QXVkaW9Ob2RlT3V0cHV0Kj4gbV9k
aXJ0eUF1ZGlvTm9kZU91dHB1dHM7CisKKyAgICAvLyBGb3IgdGhlIHNha2Ugb2YgdGhyZWFkIHNh
ZmV0eSwgd2UgbWFpbnRhaW4gYSBzZXBlcmF0ZSBWZWN0b3Igb2YgYXV0b21hdGljIHB1bGwgbm9k
ZXMgZm9yIHJlbmRlcmluZyBpbiBtX3JlbmRlcmluZ0F1dG9tYXRpY1B1bGxOb2Rlcy4KKyAgICAv
LyBJdCB3aWxsIGJlIGNvcGllZCBmcm9tIG1fYXV0b21hdGljUHVsbE5vZGVzIGJ5IHVwZGF0ZUF1
dG9tYXRpY1B1bGxOb2RlcygpIGF0IHRoZSB2ZXJ5IHN0YXJ0IG9yIGVuZCBvZiB0aGUgcmVuZGVy
aW5nIHF1YW50dW0uCisgICAgSGFzaFNldDxBdWRpb05vZGUqPiBtX2F1dG9tYXRpY1B1bGxOb2Rl
czsKKyAgICBWZWN0b3I8QXVkaW9Ob2RlKj4gbV9yZW5kZXJpbmdBdXRvbWF0aWNQdWxsTm9kZXM7
CisgICAgLy8gT25seSBhY2Nlc3NlZCBpbiB0aGUgYXVkaW8gdGhyZWFkLgorICAgIFZlY3RvcjxB
dWRpb05vZGUqPiBtX2RlZmVycmVkRmluaXNoRGVyZWZMaXN0OworICAgIFZlY3RvcjxWZWN0b3I8
RE9NUHJvbWlzZURlZmVycmVkPHZvaWQ+Pj4gbV9zdGF0ZVJlYWN0aW9uczsKKworICAgIHN0ZDo6
dW5pcXVlX3B0cjxQbGF0Zm9ybU1lZGlhU2Vzc2lvbj4gbV9tZWRpYVNlc3Npb247CisgICAgVW5p
cXVlUmVmPE1haW5UaHJlYWRHZW5lcmljRXZlbnRRdWV1ZT4gbV9ldmVudFF1ZXVlOworCisgICAg
UmVmUHRyPEF1ZGlvQnVmZmVyPiBtX3JlbmRlclRhcmdldDsKKyAgICBSZWZQdHI8QXVkaW9EZXN0
aW5hdGlvbk5vZGU+IG1fZGVzdGluYXRpb25Ob2RlOworICAgIFJlZlB0cjxBdWRpb0xpc3RlbmVy
PiBtX2xpc3RlbmVyOworCisgICAgdW5zaWduZWQgbV9jb25uZWN0aW9uQ291bnQgeyAwIH07CisK
KyAgICAvLyBHcmFwaCBsb2NraW5nLgorICAgIExvY2sgbV9jb250ZXh0R3JhcGhNdXRleDsKKyAg
ICAvLyBGSVhNRTogVXNpbmcgdm9sYXRpbGUgc2VlbXMgaW5jb3JyZWN0LgorICAgIC8vIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODAzMzIKKyAgICBUaHJlYWQqIHZv
bGF0aWxlIG1fYXVkaW9UaHJlYWQgeyBudWxscHRyIH07CisgICAgVGhyZWFkKiB2b2xhdGlsZSBt
X2dyYXBoT3duZXJUaHJlYWQgeyBudWxscHRyIH07IC8vIGlmIHRoZSBsb2NrIGlzIGhlbGQgdGhl
biB0aGlzIGlzIHRoZSB0aHJlYWQgd2hpY2ggb3ducyBpdCwgb3RoZXJ3aXNlID09IG51bGxwdHIu
CisKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8QXN5bmNBdWRpb0RlY29kZXI+IG1fYXVkaW9EZWNvZGVy
OworCisgICAgLy8gVGhpcyBpcyBjb25zaWRlcmluZyAzMiBpcyBsYXJnZSBlbm91Z2ggZm9yIG11
bHRpcGxlIGNoYW5uZWxzIGF1ZGlvLgorICAgIC8vIEl0IGlzIHNvbWV3aGF0IGFyYml0cmFyeSBh
bmQgY291bGQgYmUgaW5jcmVhc2VkIGlmIG5lY2Vzc2FyeS4KKyAgICBlbnVtIHsgTWF4TnVtYmVy
T2ZDaGFubmVscyA9IDMyIH07CisKKyAgICAvLyBOdW1iZXIgb2YgQXVkaW9CdWZmZXJTb3VyY2VO
b2RlcyB0aGF0IGFyZSBhY3RpdmUgKHBsYXlpbmcpLgorICAgIHN0ZDo6YXRvbWljPGludD4gbV9h
Y3RpdmVTb3VyY2VDb3VudCB7IDAgfTsKKworICAgIEJlaGF2aW9yUmVzdHJpY3Rpb25zIG1fcmVz
dHJpY3Rpb25zIHsgTm9SZXN0cmljdGlvbnMgfTsKKworICAgIFN0YXRlIG1fc3RhdGUgeyBTdGF0
ZTo6U3VzcGVuZGVkIH07CisgICAgUmVmUHRyPFBlbmRpbmdBY3Rpdml0eTxXZWJLaXRBdWRpb0Nv
bnRleHQ+PiBtX3BlbmRpbmdBY3Rpdml0eTsKK307CisKK2lubGluZSBBdWRpb0NvbnRleHRTdGF0
ZSBXZWJLaXRBdWRpb0NvbnRleHQ6OnN0YXRlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9zdGF0
ZTsKK30KKworfSAvLyBXZWJDb3JlCisKK1NQRUNJQUxJWkVfVFlQRV9UUkFJVFNfQkVHSU4oV2Vi
Q29yZTo6V2ViS2l0QXVkaW9Db250ZXh0KQorICAgIHN0YXRpYyBib29sIGlzVHlwZShjb25zdCBX
ZWJDb3JlOjpBdWRpb0NvbnRleHRCYXNlJiBjb250ZXh0KSB7IHJldHVybiBjb250ZXh0LmlzV2Vi
S2l0QXVkaW9Db250ZXh0KCk7IH0KK1NQRUNJQUxJWkVfVFlQRV9UUkFJVFNfRU5EKCkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vV2ViS2l0QXVkaW9Db250ZXh0
LmlkbCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vV2ViS2l0QXVkaW9Db250ZXh0
LmlkbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi41Njk1YzczNjY5ODY3OGViMzZlZDY0ODkzYmQwMmI0Y2Q4YmRlMDBi
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9XZWJL
aXRBdWRpb0NvbnRleHQuaWRsCkBAIC0wLDAgKzEsOTMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTAsIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0Ug
QVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04KKyAqIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUworICogU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworWworICAgIEFj
dGl2ZURPTU9iamVjdCwKKyAgICBDb25kaXRpb25hbD1XRUJfQVVESU8sCisgICAgRW5hYmxlZEJ5
U2V0dGluZz1XZWJBdWRpbywKKyAgICBFeHBvcnRNYWNybz1XRUJDT1JFX0VYUE9SVCwKKyAgICBJ
bnRlcmZhY2VOYW1lPXdlYmtpdEF1ZGlvQ29udGV4dCwKK10gaW50ZXJmYWNlIFdlYktpdEF1ZGlv
Q29udGV4dCA6IEV2ZW50VGFyZ2V0IHsKKyAgICBbQ2FsbFdpdGg9RG9jdW1lbnQsIE1heVRocm93
RXhjZXB0aW9uXSBjb25zdHJ1Y3RvcigpOworCisgICAgLy8gQWxsIHJlbmRlcmVkIGF1ZGlvIHVs
dGltYXRlbHkgY29ubmVjdHMgdG8gZGVzdGluYXRpb24sIHdoaWNoIHJlcHJlc2VudHMgdGhlIGF1
ZGlvIGhhcmR3YXJlLgorICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBBdWRpb0Rlc3RpbmF0aW9uTm9k
ZSBkZXN0aW5hdGlvbjsKKworICAgIC8vIEFsbCBzY2hlZHVsZWQgdGltZXMgYXJlIHJlbGF0aXZl
IHRvIHRoaXMgdGltZSBpbiBzZWNvbmRzLgorICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSB1bnJlc3Ry
aWN0ZWQgZG91YmxlIGN1cnJlbnRUaW1lOworCisgICAgLy8gQWxsIEF1ZGlvTm9kZXMgaW4gdGhl
IGNvbnRleHQgcnVuIGF0IHRoaXMgc2FtcGxlLXJhdGUgKHNhbXBsZS1mcmFtZXMgcGVyIHNlY29u
ZCkuCisgICAgcmVhZG9ubHkgYXR0cmlidXRlIHVucmVzdHJpY3RlZCBmbG9hdCBzYW1wbGVSYXRl
OworCisgICAgLy8gQWxsIHBhbm5pbmcgaXMgcmVsYXRpdmUgdG8gdGhpcyBsaXN0ZW5lci4KKyAg
ICByZWFkb25seSBhdHRyaWJ1dGUgQXVkaW9MaXN0ZW5lciBsaXN0ZW5lcjsKKworICAgIFtJbXBs
ZW1lbnRlZEFzPXN1c3BlbmRSZW5kZXJpbmddIFByb21pc2U8dm9pZD4gc3VzcGVuZCgpOworICAg
IFtJbXBsZW1lbnRlZEFzPXJlc3VtZVJlbmRlcmluZ10gUHJvbWlzZTx2b2lkPiByZXN1bWUoKTsK
KyAgICBQcm9taXNlPHZvaWQ+IGNsb3NlKCk7CisKKyAgICByZWFkb25seSBhdHRyaWJ1dGUgQXVk
aW9Db250ZXh0U3RhdGUgc3RhdGU7CisgICAgYXR0cmlidXRlIEV2ZW50SGFuZGxlciBvbnN0YXRl
Y2hhbmdlOworCisgICAgLy8gTnVtYmVyIG9mIEF1ZGlvQnVmZmVyU291cmNlTm9kZXMgdGhhdCBh
cmUgY3VycmVudGx5IHBsYXlpbmcuCisgICAgcmVhZG9ubHkgYXR0cmlidXRlIHVuc2lnbmVkIGxv
bmcgYWN0aXZlU291cmNlQ291bnQ7CisKKyAgICBbTWF5VGhyb3dFeGNlcHRpb25dIEF1ZGlvQnVm
ZmVyIGNyZWF0ZUJ1ZmZlcih1bnNpZ25lZCBsb25nIG51bWJlck9mQ2hhbm5lbHMsIHVuc2lnbmVk
IGxvbmcgbnVtYmVyT2ZGcmFtZXMsIHVucmVzdHJpY3RlZCBmbG9hdCBzYW1wbGVSYXRlKTsKKyAg
ICBbTWF5VGhyb3dFeGNlcHRpb25dIEF1ZGlvQnVmZmVyIGNyZWF0ZUJ1ZmZlcihBcnJheUJ1ZmZl
ciBidWZmZXIsIGJvb2xlYW4gbWl4VG9Nb25vKTsKKworICAgIC8vIEFzeW5jaHJvbm91cyBhdWRp
byBmaWxlIGRhdGEgZGVjb2RpbmcuCisgICAgLy8gRklYTUU6IHN1Y2Nlc3NDYWxsYmFjayBzaG91
bGQgYmUgb3B0aW9uYWwgYW5kIHRoZSBjYWxsYmFja3Mgc2hvdWxkIG5vdCBiZSBudWxsYWJsZS4g
VGhpcyBzaG91bGQgYWxzbyByZXR1cm4gYSBQcm9taXNlLgorICAgIHZvaWQgZGVjb2RlQXVkaW9E
YXRhKEFycmF5QnVmZmVyIGF1ZGlvRGF0YSwgQXVkaW9CdWZmZXJDYWxsYmFjaz8gc3VjY2Vzc0Nh
bGxiYWNrLCBvcHRpb25hbCBBdWRpb0J1ZmZlckNhbGxiYWNrPyBlcnJvckNhbGxiYWNrKTsKKwor
ICAgIC8vIFNvdXJjZXMKKyAgICBbTWF5VGhyb3dFeGNlcHRpb25dIEF1ZGlvQnVmZmVyU291cmNl
Tm9kZSBjcmVhdGVCdWZmZXJTb3VyY2UoKTsKKworICAgIFtDb25kaXRpb25hbD1WSURFTywgTWF5
VGhyb3dFeGNlcHRpb25dIE1lZGlhRWxlbWVudEF1ZGlvU291cmNlTm9kZSBjcmVhdGVNZWRpYUVs
ZW1lbnRTb3VyY2UoSFRNTE1lZGlhRWxlbWVudCBtZWRpYUVsZW1lbnQpOworCisgICAgW0NvbmRp
dGlvbmFsPU1FRElBX1NUUkVBTSwgTWF5VGhyb3dFeGNlcHRpb25dIE1lZGlhU3RyZWFtQXVkaW9T
b3VyY2VOb2RlIGNyZWF0ZU1lZGlhU3RyZWFtU291cmNlKE1lZGlhU3RyZWFtIG1lZGlhU3RyZWFt
KTsKKyAgICBbQ29uZGl0aW9uYWw9TUVESUFfU1RSRUFNLCBNYXlUaHJvd0V4Y2VwdGlvbl0gTWVk
aWFTdHJlYW1BdWRpb0Rlc3RpbmF0aW9uTm9kZSBjcmVhdGVNZWRpYVN0cmVhbURlc3RpbmF0aW9u
KCk7CisKKyAgICAvLyBQcm9jZXNzaW5nIG5vZGVzCisgICAgW01heVRocm93RXhjZXB0aW9uXSBH
YWluTm9kZSBjcmVhdGVHYWluKCk7CisgICAgW01heVRocm93RXhjZXB0aW9uXSBEZWxheU5vZGUg
Y3JlYXRlRGVsYXkob3B0aW9uYWwgdW5yZXN0cmljdGVkIGRvdWJsZSBtYXhEZWxheVRpbWUgPSAx
KTsKKyAgICBbTWF5VGhyb3dFeGNlcHRpb25dIEJpcXVhZEZpbHRlck5vZGUgY3JlYXRlQmlxdWFk
RmlsdGVyKCk7CisgICAgW01heVRocm93RXhjZXB0aW9uXSBXYXZlU2hhcGVyTm9kZSBjcmVhdGVX
YXZlU2hhcGVyKCk7CisgICAgW01heVRocm93RXhjZXB0aW9uXSBXZWJLaXRBdWRpb1Bhbm5lck5v
ZGUgY3JlYXRlUGFubmVyKCk7CisgICAgW01heVRocm93RXhjZXB0aW9uXSBDb252b2x2ZXJOb2Rl
IGNyZWF0ZUNvbnZvbHZlcigpOworICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gRHluYW1pY3NDb21w
cmVzc29yTm9kZSBjcmVhdGVEeW5hbWljc0NvbXByZXNzb3IoKTsKKyAgICBbTWF5VGhyb3dFeGNl
cHRpb25dIEFuYWx5c2VyTm9kZSBjcmVhdGVBbmFseXNlcigpOworICAgIFtNYXlUaHJvd0V4Y2Vw
dGlvbl0gU2NyaXB0UHJvY2Vzc29yTm9kZSBjcmVhdGVTY3JpcHRQcm9jZXNzb3Iob3B0aW9uYWwg
dW5zaWduZWQgbG9uZyBidWZmZXJTaXplID0gMCwgb3B0aW9uYWwgdW5zaWduZWQgbG9uZyBudW1i
ZXJPZklucHV0Q2hhbm5lbHMgPSAyLCBvcHRpb25hbCB1bnNpZ25lZCBsb25nIG51bWJlck9mT3V0
cHV0Q2hhbm5lbHMgPSAyKTsKKyAgICBbTWF5VGhyb3dFeGNlcHRpb25dIE9zY2lsbGF0b3JOb2Rl
IGNyZWF0ZU9zY2lsbGF0b3IoKTsKKyAgICBbTWF5VGhyb3dFeGNlcHRpb25dIFBlcmlvZGljV2F2
ZSBjcmVhdGVQZXJpb2RpY1dhdmUoRmxvYXQzMkFycmF5IHJlYWwsIEZsb2F0MzJBcnJheSBpbWFn
KTsKKworICAgIC8vIENoYW5uZWwgc3BsaXR0aW5nIGFuZCBtZXJnaW5nCisgICAgW01heVRocm93
RXhjZXB0aW9uXSBDaGFubmVsU3BsaXR0ZXJOb2RlIGNyZWF0ZUNoYW5uZWxTcGxpdHRlcihvcHRp
b25hbCB1bnNpZ25lZCBsb25nIG51bWJlck9mT3V0cHV0cyA9IDYpOworICAgIFtNYXlUaHJvd0V4
Y2VwdGlvbl0gQ2hhbm5lbE1lcmdlck5vZGUgY3JlYXRlQ2hhbm5lbE1lcmdlcihvcHRpb25hbCB1
bnNpZ25lZCBsb25nIG51bWJlck9mSW5wdXRzID0gNik7CisKKyAgICAvLyBPZmZsaW5lIHJlbmRl
cmluZworICAgIC8vIHZvaWQgcHJlcGFyZU9mZmxpbmVCdWZmZXJSZW5kZXJpbmcodW5zaWduZWQg
bG9uZyBudW1iZXJPZkNoYW5uZWxzLCB1bnNpZ25lZCBsb25nIG51bWJlck9mRnJhbWVzLCB1bnJl
c3RyaWN0ZWQgZmxvYXQgc2FtcGxlUmF0ZSk7CisgICAgYXR0cmlidXRlIEV2ZW50SGFuZGxlciBv
bmNvbXBsZXRlOworICAgIHZvaWQgc3RhcnRSZW5kZXJpbmcoKTsKK307CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1dlYktpdEF1ZGlvUGFubmVyTm9kZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1dlYktpdEF1ZGlvUGFubmVyTm9kZS5j
cHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uMjU4ZjQ1ZTdjZmQ5MWM4MjJjNjk5MmU3NThkYWE3NThhZDc5MDJlMgot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vV2ViS2l0
QXVkaW9QYW5uZXJOb2RlLmNwcApAQCAtMCwwICsxLDM2MyBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxMCwgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQ
T1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUwor
ICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OCisgKiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKKyAqIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNs
dWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJXZWJLaXRBdWRpb1Bhbm5lck5vZGUuaCIKKworI2lm
IEVOQUJMRShXRUJfQVVESU8pCisKKyNpbmNsdWRlICJBdWRpb0J1ZmZlclNvdXJjZU5vZGUuaCIK
KyNpbmNsdWRlICJBdWRpb0J1cy5oIgorI2luY2x1ZGUgIkF1ZGlvQ29udGV4dC5oIgorI2luY2x1
ZGUgIkF1ZGlvTm9kZUlucHV0LmgiCisjaW5jbHVkZSAiQXVkaW9Ob2RlT3V0cHV0LmgiCisjaW5j
bHVkZSAiSFJURkRhdGFiYXNlTG9hZGVyLmgiCisjaW5jbHVkZSAiSFJURlBhbm5lci5oIgorI2lu
Y2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKKyNpbmNsdWRlIDx3dGYvSXNvTWFsbG9j
SW5saW5lcy5oPgorI2luY2x1ZGUgPHd0Zi9NYXRoRXh0cmFzLmg+CisKK25hbWVzcGFjZSBXZWJD
b3JlIHsKKworV1RGX01BS0VfSVNPX0FMTE9DQVRFRF9JTVBMKFdlYktpdEF1ZGlvUGFubmVyTm9k
ZSk7CisKK3N0YXRpYyB2b2lkIGZpeE5BTnMoZG91YmxlICZ4KQoreworICAgIGlmIChzdGQ6Omlz
bmFuKHgpIHx8IHN0ZDo6aXNpbmYoeCkpCisgICAgICAgIHggPSAwLjA7Cit9CisKK1dlYktpdEF1
ZGlvUGFubmVyTm9kZTo6V2ViS2l0QXVkaW9QYW5uZXJOb2RlKFdlYktpdEF1ZGlvQ29udGV4dCYg
Y29udGV4dCwgZmxvYXQgc2FtcGxlUmF0ZSkKKyAgICA6IFBhbm5lck5vZGVCYXNlKGNvbnRleHQs
IHNhbXBsZVJhdGUpCisgICAgLCBtX3Bhbm5pbmdNb2RlbChQYW5uaW5nTW9kZWxUeXBlOjpIUlRG
KQorICAgICwgbV9sYXN0R2FpbigtMS4wKQorICAgICwgbV9jb25uZWN0aW9uQ291bnQoMCkKK3sK
KyAgICBzZXROb2RlVHlwZShOb2RlVHlwZVBhbm5lcik7CisKKyAgICAvLyBMb2FkIHRoZSBIUlRG
IGRhdGFiYXNlIGFzeW5jaHJvbm91c2x5IHNvIHdlIGRvbid0IGJsb2NrIHRoZSBKYXZhc2NyaXB0
IHRocmVhZCB3aGlsZSBjcmVhdGluZyB0aGUgSFJURiBkYXRhYmFzZS4KKyAgICBtX2hydGZEYXRh
YmFzZUxvYWRlciA9IEhSVEZEYXRhYmFzZUxvYWRlcjo6Y3JlYXRlQW5kTG9hZEFzeW5jaHJvbm91
c2x5SWZOZWNlc3NhcnkoY29udGV4dC5zYW1wbGVSYXRlKCkpOworCisgICAgYWRkSW5wdXQobWFr
ZVVuaXF1ZTxBdWRpb05vZGVJbnB1dD4odGhpcykpOworICAgIGFkZE91dHB1dChtYWtlVW5pcXVl
PEF1ZGlvTm9kZU91dHB1dD4odGhpcywgMikpOworCisgICAgLy8gTm9kZS1zcGVjaWZpYyBkZWZh
dWx0IG1peGluZyBydWxlcy4KKyAgICBtX2NoYW5uZWxDb3VudCA9IDI7CisgICAgbV9jaGFubmVs
Q291bnRNb2RlID0gQ2xhbXBlZE1heDsKKyAgICBtX2NoYW5uZWxJbnRlcnByZXRhdGlvbiA9IEF1
ZGlvQnVzOjpTcGVha2VyczsKKworICAgIG1fZGlzdGFuY2VHYWluID0gQXVkaW9QYXJhbTo6Y3Jl
YXRlKGNvbnRleHQsICJkaXN0YW5jZUdhaW4iLCAxLjAsIDAuMCwgMS4wKTsKKyAgICBtX2NvbmVH
YWluID0gQXVkaW9QYXJhbTo6Y3JlYXRlKGNvbnRleHQsICJjb25lR2FpbiIsIDEuMCwgMC4wLCAx
LjApOworCisgICAgbV9wb3NpdGlvbiA9IEZsb2F0UG9pbnQzRCgwLCAwLCAwKTsKKyAgICBtX29y
aWVudGF0aW9uID0gRmxvYXRQb2ludDNEKDEsIDAsIDApOworICAgIG1fdmVsb2NpdHkgPSBGbG9h
dFBvaW50M0QoMCwgMCwgMCk7CisKKyAgICBpbml0aWFsaXplKCk7Cit9CisKK1dlYktpdEF1ZGlv
UGFubmVyTm9kZTo6fldlYktpdEF1ZGlvUGFubmVyTm9kZSgpCit7CisgICAgdW5pbml0aWFsaXpl
KCk7Cit9CisKK3ZvaWQgV2ViS2l0QXVkaW9QYW5uZXJOb2RlOjpwdWxsSW5wdXRzKHNpemVfdCBm
cmFtZXNUb1Byb2Nlc3MpCit7CisgICAgLy8gV2Ugb3ZlcnJpZGUgcHVsbElucHV0cygpLCBzbyB3
ZSBjYW4gZGV0ZWN0IG5ldyBBdWRpb1NvdXJjZU5vZGVzIHdoaWNoIGhhdmUgY29ubmVjdGVkIHRv
IHVzIHdoZW4gbmV3IGNvbm5lY3Rpb25zIGFyZSBtYWRlLgorICAgIC8vIFRoZXNlIEF1ZGlvU291
cmNlTm9kZXMgbmVlZCB0byBiZSBtYWRlIGF3YXJlIG9mIG91ciBleGlzdGVuY2UgaW4gb3JkZXIg
dG8gaGFuZGxlIGRvcHBsZXIgc2hpZnQgcGl0Y2ggY2hhbmdlcy4KKyAgICBpZiAobV9jb25uZWN0
aW9uQ291bnQgIT0gY29udGV4dCgpLmNvbm5lY3Rpb25Db3VudCgpKSB7CisgICAgICAgIG1fY29u
bmVjdGlvbkNvdW50ID0gY29udGV4dCgpLmNvbm5lY3Rpb25Db3VudCgpOworCisgICAgICAgIC8v
IFJlY3Vyc2l2ZWx5IGdvIHRocm91Z2ggYWxsIG5vZGVzIGNvbm5lY3RlZCB0byB1cy4KKyAgICAg
ICAgSGFzaFNldDxBdWRpb05vZGUqPiB2aXNpdGVkTm9kZXM7CisgICAgICAgIG5vdGlmeUF1ZGlv
U291cmNlc0Nvbm5lY3RlZFRvTm9kZSh0aGlzLCB2aXNpdGVkTm9kZXMpOworICAgIH0KKworICAg
IEF1ZGlvTm9kZTo6cHVsbElucHV0cyhmcmFtZXNUb1Byb2Nlc3MpOworfQorCit2b2lkIFdlYktp
dEF1ZGlvUGFubmVyTm9kZTo6cHJvY2VzcyhzaXplX3QgZnJhbWVzVG9Qcm9jZXNzKQoreworICAg
IEF1ZGlvQnVzKiBkZXN0aW5hdGlvbiA9IG91dHB1dCgwKS0+YnVzKCk7CisKKyAgICBpZiAoIWlz
SW5pdGlhbGl6ZWQoKSB8fCAhaW5wdXQoMCktPmlzQ29ubmVjdGVkKCkgfHwgIW1fcGFubmVyLmdl
dCgpKSB7CisgICAgICAgIGRlc3RpbmF0aW9uLT56ZXJvKCk7CisgICAgICAgIHJldHVybjsKKyAg
ICB9CisKKyAgICBBdWRpb0J1cyogc291cmNlID0gaW5wdXQoMCktPmJ1cygpOworICAgIGlmICgh
c291cmNlKSB7CisgICAgICAgIGRlc3RpbmF0aW9uLT56ZXJvKCk7CisgICAgICAgIHJldHVybjsK
KyAgICB9CisKKyAgICAvLyBIUlRGRGF0YWJhc2Ugc2hvdWxkIGJlIGxvYWRlZCBiZWZvcmUgcHJv
Y2VlZGluZyBmb3Igb2ZmbGluZSBhdWRpbyBjb250ZXh0IHdoZW4gcGFubmluZ01vZGVsKCkgaXMg
IkhSVEYiLgorICAgIGlmIChwYW5uaW5nTW9kZWwoKSA9PSBQYW5uaW5nTW9kZWxUeXBlOjpIUlRG
ICYmICFtX2hydGZEYXRhYmFzZUxvYWRlci0+aXNMb2FkZWQoKSkgeworICAgICAgICBpZiAoY29u
dGV4dCgpLmlzT2ZmbGluZUNvbnRleHQoKSkKKyAgICAgICAgICAgIG1faHJ0ZkRhdGFiYXNlTG9h
ZGVyLT53YWl0Rm9yTG9hZGVyVGhyZWFkQ29tcGxldGlvbigpOworICAgICAgICBlbHNlIHsKKyAg
ICAgICAgICAgIGRlc3RpbmF0aW9uLT56ZXJvKCk7CisgICAgICAgICAgICByZXR1cm47CisgICAg
ICAgIH0KKyAgICB9CisKKyAgICAvLyBUaGUgYXVkaW8gdGhyZWFkIGNhbid0IGJsb2NrIG9uIHRo
aXMgbG9jaywgc28gd2UgdXNlIHN0ZDo6dHJ5X3RvX2xvY2sgaW5zdGVhZC4KKyAgICBzdGQ6OnVu
aXF1ZV9sb2NrPExvY2s+IGxvY2sobV9wYW5uZXJNdXRleCwgc3RkOjp0cnlfdG9fbG9jayk7Cisg
ICAgaWYgKCFsb2NrLm93bnNfbG9jaygpKSB7CisgICAgICAgIC8vIFRvbyBiYWQgLSBUaGUgdHJ5
X2xvY2soKSBmYWlsZWQuIFdlIG11c3QgYmUgaW4gdGhlIG1pZGRsZSBvZiBjaGFuZ2luZyB0aGUg
cGFubmVyLgorICAgICAgICBkZXN0aW5hdGlvbi0+emVybygpOworICAgICAgICByZXR1cm47Cisg
ICAgfQorCisgICAgLy8gQXBwbHkgdGhlIHBhbm5pbmcgZWZmZWN0LgorICAgIGRvdWJsZSBhemlt
dXRoOworICAgIGRvdWJsZSBlbGV2YXRpb247CisgICAgZ2V0QXppbXV0aEVsZXZhdGlvbigmYXpp
bXV0aCwgJmVsZXZhdGlvbik7CisgICAgbV9wYW5uZXItPnBhbihhemltdXRoLCBlbGV2YXRpb24s
IHNvdXJjZSwgZGVzdGluYXRpb24sIGZyYW1lc1RvUHJvY2Vzcyk7CisKKyAgICAvLyBHZXQgdGhl
IGRpc3RhbmNlIGFuZCBjb25lIGdhaW4uCisgICAgZG91YmxlIHRvdGFsR2FpbiA9IGRpc3RhbmNl
Q29uZUdhaW4oKTsKKworICAgIC8vIFNuYXAgdG8gZGVzaXJlZCBnYWluIGF0IHRoZSBiZWdpbm5p
bmcuCisgICAgaWYgKG1fbGFzdEdhaW4gPT0gLTEuMCkKKyAgICAgICAgbV9sYXN0R2FpbiA9IHRv
dGFsR2FpbjsKKworICAgIC8vIEFwcGx5IGdhaW4gaW4tcGxhY2Ugd2l0aCBkZS16aXBwZXJpbmcu
CisgICAgZGVzdGluYXRpb24tPmNvcHlXaXRoR2FpbkZyb20oKmRlc3RpbmF0aW9uLCAmbV9sYXN0
R2FpbiwgdG90YWxHYWluKTsKK30KKwordm9pZCBXZWJLaXRBdWRpb1Bhbm5lck5vZGU6OnJlc2V0
KCkKK3sKKyAgICBtX2xhc3RHYWluID0gLTEuMDsgLy8gZm9yY2UgdG8gc25hcCB0byBpbml0aWFs
IGdhaW4KKyAgICBpZiAobV9wYW5uZXIuZ2V0KCkpCisgICAgICAgIG1fcGFubmVyLT5yZXNldCgp
OworfQorCit2b2lkIFdlYktpdEF1ZGlvUGFubmVyTm9kZTo6aW5pdGlhbGl6ZSgpCit7CisgICAg
aWYgKGlzSW5pdGlhbGl6ZWQoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9wYW5uZXIgPSBQ
YW5uZXI6OmNyZWF0ZShtX3Bhbm5pbmdNb2RlbCwgc2FtcGxlUmF0ZSgpLCBtX2hydGZEYXRhYmFz
ZUxvYWRlci5nZXQoKSk7CisKKyAgICBBdWRpb05vZGU6OmluaXRpYWxpemUoKTsKK30KKwordm9p
ZCBXZWJLaXRBdWRpb1Bhbm5lck5vZGU6OnVuaW5pdGlhbGl6ZSgpCit7CisgICAgaWYgKCFpc0lu
aXRpYWxpemVkKCkpCisgICAgICAgIHJldHVybjsKKworICAgIG1fcGFubmVyID0gbnVsbHB0cjsK
KyAgICBBdWRpb05vZGU6OnVuaW5pdGlhbGl6ZSgpOworfQorCitBdWRpb0xpc3RlbmVyKiBXZWJL
aXRBdWRpb1Bhbm5lck5vZGU6Omxpc3RlbmVyKCkKK3sKKyAgICByZXR1cm4gY29udGV4dCgpLmxp
c3RlbmVyKCk7Cit9CisKK3ZvaWQgV2ViS2l0QXVkaW9QYW5uZXJOb2RlOjpzZXRQYW5uaW5nTW9k
ZWwoUGFubmluZ01vZGVsVHlwZSBtb2RlbCkKK3sKKyAgICBpZiAoIW1fcGFubmVyLmdldCgpIHx8
IG1vZGVsICE9IG1fcGFubmluZ01vZGVsKSB7CisgICAgICAgIC8vIFRoaXMgc3luY2hyb25pemVz
IHdpdGggcHJvY2VzcygpLgorICAgICAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG1fcGFubmVy
TXV0ZXgpOworCisgICAgICAgIG1fcGFubmVyID0gUGFubmVyOjpjcmVhdGUobW9kZWwsIHNhbXBs
ZVJhdGUoKSwgbV9ocnRmRGF0YWJhc2VMb2FkZXIuZ2V0KCkpOworICAgICAgICBtX3Bhbm5pbmdN
b2RlbCA9IG1vZGVsOworICAgIH0KK30KKworRGlzdGFuY2VNb2RlbFR5cGUgV2ViS2l0QXVkaW9Q
YW5uZXJOb2RlOjpkaXN0YW5jZU1vZGVsKCkgY29uc3QKK3sKKyAgICByZXR1cm4gY29uc3RfY2Fz
dDxXZWJLaXRBdWRpb1Bhbm5lck5vZGUqPih0aGlzKS0+bV9kaXN0YW5jZUVmZmVjdC5tb2RlbCgp
OworfQorCit2b2lkIFdlYktpdEF1ZGlvUGFubmVyTm9kZTo6c2V0RGlzdGFuY2VNb2RlbChEaXN0
YW5jZU1vZGVsVHlwZSBtb2RlbCkKK3sKKyAgICBtX2Rpc3RhbmNlRWZmZWN0LnNldE1vZGVsKG1v
ZGVsLCB0cnVlKTsKK30KKwordm9pZCBXZWJLaXRBdWRpb1Bhbm5lck5vZGU6OmdldEF6aW11dGhF
bGV2YXRpb24oZG91YmxlKiBvdXRBemltdXRoLCBkb3VibGUqIG91dEVsZXZhdGlvbikKK3sKKyAg
ICAvLyBGSVhNRTogd2Ugc2hvdWxkIGNhY2hlIGF6aW11dGggYW5kIGVsZXZhdGlvbiAoaWYgcG9z
c2libGUpLCBzbyB3ZSBvbmx5IHJlLWNhbGN1bGF0ZSBpZiBhIGNoYW5nZSBoYXMgYmVlbiBtYWRl
LgorCisgICAgZG91YmxlIGF6aW11dGggPSAwLjA7CisKKyAgICAvLyBDYWxjdWxhdGUgdGhlIHNv
dXJjZS1saXN0ZW5lciB2ZWN0b3IKKyAgICBGbG9hdFBvaW50M0QgbGlzdGVuZXJQb3NpdGlvbiA9
IGxpc3RlbmVyKCktPnBvc2l0aW9uKCk7CisgICAgRmxvYXRQb2ludDNEIHNvdXJjZUxpc3RlbmVy
ID0gcG9zaXRpb24oKSAtIGxpc3RlbmVyUG9zaXRpb247CisKKyAgICBpZiAoc291cmNlTGlzdGVu
ZXIuaXNaZXJvKCkpIHsKKyAgICAgICAgLy8gZGVnZW5lcmF0ZSBjYXNlIGlmIHNvdXJjZSBhbmQg
bGlzdGVuZXIgYXJlIGF0IHRoZSBzYW1lIHBvaW50CisgICAgICAgICpvdXRBemltdXRoID0gMC4w
OworICAgICAgICAqb3V0RWxldmF0aW9uID0gMC4wOworICAgICAgICByZXR1cm47CisgICAgfQor
CisgICAgc291cmNlTGlzdGVuZXIubm9ybWFsaXplKCk7CisKKyAgICAvLyBBbGlnbiBheGVzCisg
ICAgRmxvYXRQb2ludDNEIGxpc3RlbmVyRnJvbnQgPSBsaXN0ZW5lcigpLT5vcmllbnRhdGlvbigp
OworICAgIEZsb2F0UG9pbnQzRCBsaXN0ZW5lclVwID0gbGlzdGVuZXIoKS0+dXBWZWN0b3IoKTsK
KyAgICBGbG9hdFBvaW50M0QgbGlzdGVuZXJSaWdodCA9IGxpc3RlbmVyRnJvbnQuY3Jvc3MobGlz
dGVuZXJVcCk7CisgICAgbGlzdGVuZXJSaWdodC5ub3JtYWxpemUoKTsKKworICAgIEZsb2F0UG9p
bnQzRCBsaXN0ZW5lckZyb250Tm9ybSA9IGxpc3RlbmVyRnJvbnQ7CisgICAgbGlzdGVuZXJGcm9u
dE5vcm0ubm9ybWFsaXplKCk7CisKKyAgICBGbG9hdFBvaW50M0QgdXAgPSBsaXN0ZW5lclJpZ2h0
LmNyb3NzKGxpc3RlbmVyRnJvbnROb3JtKTsKKworICAgIGZsb2F0IHVwUHJvamVjdGlvbiA9IHNv
dXJjZUxpc3RlbmVyLmRvdCh1cCk7CisKKyAgICBGbG9hdFBvaW50M0QgcHJvamVjdGVkU291cmNl
ID0gc291cmNlTGlzdGVuZXIgLSB1cFByb2plY3Rpb24gKiB1cDsKKyAgICBwcm9qZWN0ZWRTb3Vy
Y2Uubm9ybWFsaXplKCk7CisKKyAgICBhemltdXRoID0gMTgwLjAgKiBhY29zKHByb2plY3RlZFNv
dXJjZS5kb3QobGlzdGVuZXJSaWdodCkpIC8gcGlEb3VibGU7CisgICAgZml4TkFOcyhhemltdXRo
KTsgLy8gYXZvaWQgaWxsZWdhbCB2YWx1ZXMKKworICAgIC8vIFNvdXJjZSAgaW4gZnJvbnQgb3Ig
YmVoaW5kIHRoZSBsaXN0ZW5lcgorICAgIGRvdWJsZSBmcm9udEJhY2sgPSBwcm9qZWN0ZWRTb3Vy
Y2UuZG90KGxpc3RlbmVyRnJvbnROb3JtKTsKKyAgICBpZiAoZnJvbnRCYWNrIDwgMC4wKQorICAg
ICAgICBhemltdXRoID0gMzYwLjAgLSBhemltdXRoOworCisgICAgLy8gTWFrZSBhemltdXRoIHJl
bGF0aXZlIHRvICJmcm9udCIgYW5kIG5vdCAicmlnaHQiIGxpc3RlbmVyIHZlY3RvcgorICAgIGlm
ICgoYXppbXV0aCA+PSAwLjApICYmIChhemltdXRoIDw9IDI3MC4wKSkKKyAgICAgICAgYXppbXV0
aCA9IDkwLjAgLSBhemltdXRoOworICAgIGVsc2UKKyAgICAgICAgYXppbXV0aCA9IDQ1MC4wIC0g
YXppbXV0aDsKKworICAgIC8vIEVsZXZhdGlvbgorICAgIGRvdWJsZSBlbGV2YXRpb24gPSA5MC4w
IC0gMTgwLjAgKiBhY29zKHNvdXJjZUxpc3RlbmVyLmRvdCh1cCkpIC8gcGlEb3VibGU7CisgICAg
Zml4TkFOcyhlbGV2YXRpb24pOyAvLyBhdm9pZCBpbGxlZ2FsIHZhbHVlcworCisgICAgaWYgKGVs
ZXZhdGlvbiA+IDkwLjApCisgICAgICAgIGVsZXZhdGlvbiA9IDE4MC4wIC0gZWxldmF0aW9uOwor
ICAgIGVsc2UgaWYgKGVsZXZhdGlvbiA8IC05MC4wKQorICAgICAgICBlbGV2YXRpb24gPSAtMTgw
LjAgLSBlbGV2YXRpb247CisKKyAgICBpZiAob3V0QXppbXV0aCkKKyAgICAgICAgKm91dEF6aW11
dGggPSBhemltdXRoOworICAgIGlmIChvdXRFbGV2YXRpb24pCisgICAgICAgICpvdXRFbGV2YXRp
b24gPSBlbGV2YXRpb247Cit9CisKK2Zsb2F0IFdlYktpdEF1ZGlvUGFubmVyTm9kZTo6ZG9wcGxl
clJhdGUoKQoreworICAgIGRvdWJsZSBkb3BwbGVyU2hpZnQgPSAxLjA7CisKKyAgICAvLyBGSVhN
RTogb3B0aW1pemUgZm9yIGNhc2Ugd2hlbiBuZWl0aGVyIHNvdXJjZSBub3IgbGlzdGVuZXIgaGFz
IGNoYW5nZWQuLi4KKyAgICBkb3VibGUgZG9wcGxlckZhY3RvciA9IGxpc3RlbmVyKCktPmRvcHBs
ZXJGYWN0b3IoKTsKKworICAgIGlmIChkb3BwbGVyRmFjdG9yID4gMC4wKSB7CisgICAgICAgIGRv
dWJsZSBzcGVlZE9mU291bmQgPSBsaXN0ZW5lcigpLT5zcGVlZE9mU291bmQoKTsKKworICAgICAg
ICBjb25zdCBGbG9hdFBvaW50M0QgJnNvdXJjZVZlbG9jaXR5ID0gbV92ZWxvY2l0eTsKKyAgICAg
ICAgY29uc3QgRmxvYXRQb2ludDNEICZsaXN0ZW5lclZlbG9jaXR5ID0gbGlzdGVuZXIoKS0+dmVs
b2NpdHkoKTsKKworICAgICAgICAvLyBEb24ndCBib3RoZXIgaWYgYm90aCBzb3VyY2UgYW5kIGxp
c3RlbmVyIGhhdmUgbm8gdmVsb2NpdHkKKyAgICAgICAgYm9vbCBzb3VyY2VIYXNWZWxvY2l0eSA9
ICFzb3VyY2VWZWxvY2l0eS5pc1plcm8oKTsKKyAgICAgICAgYm9vbCBsaXN0ZW5lckhhc1ZlbG9j
aXR5ID0gIWxpc3RlbmVyVmVsb2NpdHkuaXNaZXJvKCk7CisKKyAgICAgICAgaWYgKHNvdXJjZUhh
c1ZlbG9jaXR5IHx8IGxpc3RlbmVySGFzVmVsb2NpdHkpIHsKKyAgICAgICAgICAgIC8vIENhbGN1
bGF0ZSB0aGUgc291cmNlIHRvIGxpc3RlbmVyIHZlY3RvcgorICAgICAgICAgICAgRmxvYXRQb2lu
dDNEIGxpc3RlbmVyUG9zaXRpb24gPSBsaXN0ZW5lcigpLT5wb3NpdGlvbigpOworICAgICAgICAg
ICAgRmxvYXRQb2ludDNEIHNvdXJjZVRvTGlzdGVuZXIgPSBwb3NpdGlvbigpIC0gbGlzdGVuZXJQ
b3NpdGlvbjsKKworICAgICAgICAgICAgZG91YmxlIHNvdXJjZUxpc3RlbmVyTWFnbml0dWRlID0g
c291cmNlVG9MaXN0ZW5lci5sZW5ndGgoKTsKKworICAgICAgICAgICAgZG91YmxlIGxpc3RlbmVy
UHJvamVjdGlvbiA9IHNvdXJjZVRvTGlzdGVuZXIuZG90KGxpc3RlbmVyVmVsb2NpdHkpIC8gc291
cmNlTGlzdGVuZXJNYWduaXR1ZGU7CisgICAgICAgICAgICBkb3VibGUgc291cmNlUHJvamVjdGlv
biA9IHNvdXJjZVRvTGlzdGVuZXIuZG90KHNvdXJjZVZlbG9jaXR5KSAvIHNvdXJjZUxpc3RlbmVy
TWFnbml0dWRlOworCisgICAgICAgICAgICBsaXN0ZW5lclByb2plY3Rpb24gPSAtbGlzdGVuZXJQ
cm9qZWN0aW9uOworICAgICAgICAgICAgc291cmNlUHJvamVjdGlvbiA9IC1zb3VyY2VQcm9qZWN0
aW9uOworCisgICAgICAgICAgICBkb3VibGUgc2NhbGVkU3BlZWRPZlNvdW5kID0gc3BlZWRPZlNv
dW5kIC8gZG9wcGxlckZhY3RvcjsKKyAgICAgICAgICAgIGxpc3RlbmVyUHJvamVjdGlvbiA9IHN0
ZDo6bWluKGxpc3RlbmVyUHJvamVjdGlvbiwgc2NhbGVkU3BlZWRPZlNvdW5kKTsKKyAgICAgICAg
ICAgIHNvdXJjZVByb2plY3Rpb24gPSBzdGQ6Om1pbihzb3VyY2VQcm9qZWN0aW9uLCBzY2FsZWRT
cGVlZE9mU291bmQpOworCisgICAgICAgICAgICBkb3BwbGVyU2hpZnQgPSAoKHNwZWVkT2ZTb3Vu
ZCAtIGRvcHBsZXJGYWN0b3IgKiBsaXN0ZW5lclByb2plY3Rpb24pIC8gKHNwZWVkT2ZTb3VuZCAt
IGRvcHBsZXJGYWN0b3IgKiBzb3VyY2VQcm9qZWN0aW9uKSk7CisgICAgICAgICAgICBmaXhOQU5z
KGRvcHBsZXJTaGlmdCk7IC8vIGF2b2lkIGlsbGVnYWwgdmFsdWVzCisKKyAgICAgICAgICAgIC8v
IExpbWl0IHRoZSBwaXRjaCBzaGlmdGluZyB0byA0IG9jdGF2ZXMgdXAgYW5kIDMgb2N0YXZlcyBk
b3duLgorICAgICAgICAgICAgaWYgKGRvcHBsZXJTaGlmdCA+IDE2LjApCisgICAgICAgICAgICAg
ICAgZG9wcGxlclNoaWZ0ID0gMTYuMDsKKyAgICAgICAgICAgIGVsc2UgaWYgKGRvcHBsZXJTaGlm
dCA8IDAuMTI1KQorICAgICAgICAgICAgICAgIGRvcHBsZXJTaGlmdCA9IDAuMTI1OworICAgICAg
ICB9CisgICAgfQorCisgICAgcmV0dXJuIHN0YXRpY19jYXN0PGZsb2F0Pihkb3BwbGVyU2hpZnQp
OworfQorCitmbG9hdCBXZWJLaXRBdWRpb1Bhbm5lck5vZGU6OmRpc3RhbmNlQ29uZUdhaW4oKQor
eworICAgIEZsb2F0UG9pbnQzRCBsaXN0ZW5lclBvc2l0aW9uID0gbGlzdGVuZXIoKS0+cG9zaXRp
b24oKTsKKyAgICBGbG9hdFBvaW50M0Qgc291cmNlUG9zaXRpb24gPSBwb3NpdGlvbigpOworCisg
ICAgZG91YmxlIGxpc3RlbmVyRGlzdGFuY2UgPSBzb3VyY2VQb3NpdGlvbi5kaXN0YW5jZVRvKGxp
c3RlbmVyUG9zaXRpb24pOworICAgIGRvdWJsZSBkaXN0YW5jZUdhaW4gPSBtX2Rpc3RhbmNlRWZm
ZWN0LmdhaW4obGlzdGVuZXJEaXN0YW5jZSk7CisKKyAgICBtX2Rpc3RhbmNlR2Fpbi0+c2V0VmFs
dWUoc3RhdGljX2Nhc3Q8ZmxvYXQ+KGRpc3RhbmNlR2FpbikpOworCisgICAgLy8gRklYTUU6IGNv
dWxkIG9wdGltaXplIGJ5IGNhY2hpbmcgY29uZUdhaW4KKyAgICBkb3VibGUgY29uZUdhaW4gPSBt
X2NvbmVFZmZlY3QuZ2Fpbihzb3VyY2VQb3NpdGlvbiwgbV9vcmllbnRhdGlvbiwgbGlzdGVuZXJQ
b3NpdGlvbik7CisKKyAgICBtX2NvbmVHYWluLT5zZXRWYWx1ZShzdGF0aWNfY2FzdDxmbG9hdD4o
Y29uZUdhaW4pKTsKKworICAgIHJldHVybiBmbG9hdChkaXN0YW5jZUdhaW4gKiBjb25lR2Fpbik7
Cit9CisKK3ZvaWQgV2ViS2l0QXVkaW9QYW5uZXJOb2RlOjpub3RpZnlBdWRpb1NvdXJjZXNDb25u
ZWN0ZWRUb05vZGUoQXVkaW9Ob2RlKiBub2RlLCBIYXNoU2V0PEF1ZGlvTm9kZSo+JiB2aXNpdGVk
Tm9kZXMpCit7CisgICAgQVNTRVJUKG5vZGUpOworICAgIGlmICghbm9kZSkKKyAgICAgICAgcmV0
dXJuOworCisgICAgLy8gRmlyc3QgY2hlY2sgaWYgdGhpcyBub2RlIGlzIGFuIEF1ZGlvQnVmZmVy
U291cmNlTm9kZS4gSWYgc28sIGxldCBpdCBrbm93IGFib3V0IHVzIHNvIHRoYXQgZG9wcGxlciBz
aGlmdCBwaXRjaCBjYW4gYmUgdGFrZW4gaW50byBhY2NvdW50LgorICAgIGlmIChub2RlLT5ub2Rl
VHlwZSgpID09IE5vZGVUeXBlQXVkaW9CdWZmZXJTb3VyY2UpIHsKKyAgICAgICAgQXVkaW9CdWZm
ZXJTb3VyY2VOb2RlKiBidWZmZXJTb3VyY2VOb2RlID0gcmVpbnRlcnByZXRfY2FzdDxBdWRpb0J1
ZmZlclNvdXJjZU5vZGUqPihub2RlKTsKKyAgICAgICAgYnVmZmVyU291cmNlTm9kZS0+c2V0UGFu
bmVyTm9kZSh0aGlzKTsKKyAgICB9IGVsc2UgeworICAgICAgICAvLyBHbyB0aHJvdWdoIGFsbCBp
bnB1dHMgdG8gdGhpcyBub2RlLgorICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbm9k
ZS0+bnVtYmVyT2ZJbnB1dHMoKTsgKytpKSB7CisgICAgICAgICAgICBBdWRpb05vZGVJbnB1dCog
aW5wdXQgPSBub2RlLT5pbnB1dChpKTsKKworICAgICAgICAgICAgLy8gRm9yIGVhY2ggaW5wdXQs
IGdvIHRocm91Z2ggYWxsIG9mIGl0cyBjb25uZWN0aW9ucywgbG9va2luZyBmb3IgQXVkaW9CdWZm
ZXJTb3VyY2VOb2Rlcy4KKyAgICAgICAgICAgIGZvciAodW5zaWduZWQgaiA9IDA7IGogPCBpbnB1
dC0+bnVtYmVyT2ZSZW5kZXJpbmdDb25uZWN0aW9ucygpOyArK2opIHsKKyAgICAgICAgICAgICAg
ICBBdWRpb05vZGVPdXRwdXQqIGNvbm5lY3RlZE91dHB1dCA9IGlucHV0LT5yZW5kZXJpbmdPdXRw
dXQoaik7CisgICAgICAgICAgICAgICAgQXVkaW9Ob2RlKiBjb25uZWN0ZWROb2RlID0gY29ubmVj
dGVkT3V0cHV0LT5ub2RlKCk7CisgICAgICAgICAgICAgICAgaWYgKHZpc2l0ZWROb2Rlcy5jb250
YWlucyhjb25uZWN0ZWROb2RlKSkKKyAgICAgICAgICAgICAgICAgICAgY29udGludWU7CisKKyAg
ICAgICAgICAgICAgICB2aXNpdGVkTm9kZXMuYWRkKGNvbm5lY3RlZE5vZGUpOworICAgICAgICAg
ICAgICAgIG5vdGlmeUF1ZGlvU291cmNlc0Nvbm5lY3RlZFRvTm9kZShjb25uZWN0ZWROb2RlLCB2
aXNpdGVkTm9kZXMpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorfQorCit9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoV0VCX0FVRElPKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9XZWJLaXRBdWRpb1Bhbm5lck5v
ZGUuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vV2ViS2l0QXVkaW9QYW5uZXJO
b2RlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uODk3OTdjM2M0YzUwYjM2ODkyMDU4MDZjMTk3ZjEwYmQ5YzU2NzZi
ZQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vV2Vi
S2l0QXVkaW9QYW5uZXJOb2RlLmgKQEAgLTAsMCArMSwxNjAgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTAsIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVS
UE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMK
KyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTgorICogQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTCisgKiBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJh
Z21hIG9uY2UKKworI2lmIEVOQUJMRShXRUJfQVVESU8pCisKKyNpbmNsdWRlICJBdWRpb0xpc3Rl
bmVyLmgiCisjaW5jbHVkZSAiQXVkaW9Ob2RlLmgiCisjaW5jbHVkZSAiQXVkaW9QYXJhbS5oIgor
I2luY2x1ZGUgIkNvbmUuaCIKKyNpbmNsdWRlICJEaXN0YW5jZS5oIgorI2luY2x1ZGUgIkZsb2F0
UG9pbnQzRC5oIgorI2luY2x1ZGUgIlBhbm5lci5oIgorI2luY2x1ZGUgIlBhbm5lck5vZGUuaCIK
KyNpbmNsdWRlICJXZWJLaXRBdWRpb0NvbnRleHQuaCIKKyNpbmNsdWRlIDxtZW1vcnk+CisjaW5j
bHVkZSA8d3RmL0hhc2hTZXQuaD4KKyNpbmNsdWRlIDx3dGYvTG9jay5oPgorCituYW1lc3BhY2Ug
V2ViQ29yZSB7CisKK2NsYXNzIEhSVEZEYXRhYmFzZUxvYWRlcjsKKworLy8gUGFubmVyTm9kZSBp
cyBhbiBBdWRpb05vZGUgd2l0aCBvbmUgaW5wdXQgYW5kIG9uZSBvdXRwdXQuCisvLyBJdCBwb3Np
dGlvbnMgYSBzb3VuZCBpbiAzRCBzcGFjZSwgd2l0aCB0aGUgZXhhY3QgZWZmZWN0IGRlcGVuZGVu
dCBvbiB0aGUgcGFubmluZyBtb2RlbC4KKy8vIEl0IGhhcyBhIHBvc2l0aW9uIGFuZCBhbiBvcmll
bnRhdGlvbiBpbiAzRCBzcGFjZSB3aGljaCBpcyByZWxhdGl2ZSB0byB0aGUgcG9zaXRpb24gYW5k
IG9yaWVudGF0aW9uIG9mIHRoZSBjb250ZXh0J3MgQXVkaW9MaXN0ZW5lci4KKy8vIEEgZGlzdGFu
Y2UgZWZmZWN0IHdpbGwgYXR0ZW51YXRlIHRoZSBnYWluIGFzIHRoZSBwb3NpdGlvbiBtb3ZlcyBh
d2F5IGZyb20gdGhlIGxpc3RlbmVyLgorLy8gQSBjb25lIGVmZmVjdCB3aWxsIGF0dGVudWF0ZSB0
aGUgZ2FpbiBhcyB0aGUgb3JpZW50YXRpb24gbW92ZXMgYXdheSBmcm9tIHRoZSBsaXN0ZW5lci4K
Ky8vIEFsbCBvZiB0aGVzZSBlZmZlY3RzIGZvbGxvdyB0aGUgT3BlbkFMIHNwZWNpZmljYXRpb24g
dmVyeSBjbG9zZWx5LgorCitjbGFzcyBXZWJLaXRBdWRpb1Bhbm5lck5vZGUgZmluYWwgOiBwdWJs
aWMgUGFubmVyTm9kZUJhc2UgeworICAgIFdURl9NQUtFX0lTT19BTExPQ0FURUQoV2ViS2l0QXVk
aW9QYW5uZXJOb2RlKTsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUmVmPFdlYktpdEF1ZGlvUGFubmVy
Tm9kZT4gY3JlYXRlKFdlYktpdEF1ZGlvQ29udGV4dCYgY29udGV4dCwgZmxvYXQgc2FtcGxlUmF0
ZSkKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFdlYktpdEF1ZGlvUGFubmVy
Tm9kZShjb250ZXh0LCBzYW1wbGVSYXRlKSk7CisgICAgfQorCisgICAgdmlydHVhbCB+V2ViS2l0
QXVkaW9QYW5uZXJOb2RlKCk7CisKKyAgICBXZWJLaXRBdWRpb0NvbnRleHQmIGNvbnRleHQoKSB7
IHJldHVybiBkb3duY2FzdDxXZWJLaXRBdWRpb0NvbnRleHQ+KEF1ZGlvTm9kZTo6Y29udGV4dCgp
KTsgfQorICAgIGNvbnN0IFdlYktpdEF1ZGlvQ29udGV4dCYgY29udGV4dCgpIGNvbnN0IHsgcmV0
dXJuIGRvd25jYXN0PFdlYktpdEF1ZGlvQ29udGV4dD4oQXVkaW9Ob2RlOjpjb250ZXh0KCkpOyB9
CisKKyAgICAvLyBBdWRpb05vZGUKKyAgICB2b2lkIHByb2Nlc3Moc2l6ZV90IGZyYW1lc1RvUHJv
Y2Vzcykgb3ZlcnJpZGU7CisgICAgdm9pZCBwdWxsSW5wdXRzKHNpemVfdCBmcmFtZXNUb1Byb2Nl
c3MpIG92ZXJyaWRlOworICAgIHZvaWQgcmVzZXQoKSBvdmVycmlkZTsKKyAgICB2b2lkIGluaXRp
YWxpemUoKSBvdmVycmlkZTsKKyAgICB2b2lkIHVuaW5pdGlhbGl6ZSgpIG92ZXJyaWRlOworCisg
ICAgLy8gTGlzdGVuZXIKKyAgICBBdWRpb0xpc3RlbmVyKiBsaXN0ZW5lcigpOworCisgICAgLy8g
UGFubmluZyBtb2RlbAorICAgIFBhbm5pbmdNb2RlbFR5cGUgcGFubmluZ01vZGVsKCkgY29uc3Qg
eyByZXR1cm4gbV9wYW5uaW5nTW9kZWw7IH0KKyAgICB2b2lkIHNldFBhbm5pbmdNb2RlbChQYW5u
aW5nTW9kZWxUeXBlKTsKKworICAgIC8vIFBvc2l0aW9uCisgICAgRmxvYXRQb2ludDNEIHBvc2l0
aW9uKCkgY29uc3QgeyByZXR1cm4gbV9wb3NpdGlvbjsgfQorICAgIHZvaWQgc2V0UG9zaXRpb24o
ZmxvYXQgeCwgZmxvYXQgeSwgZmxvYXQgeikgeyBtX3Bvc2l0aW9uID0gRmxvYXRQb2ludDNEKHgs
IHksIHopOyB9CisKKyAgICAvLyBPcmllbnRhdGlvbgorICAgIEZsb2F0UG9pbnQzRCBvcmllbnRh
dGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fb3JpZW50YXRpb247IH0KKyAgICB2b2lkIHNldE9yaWVu
dGF0aW9uKGZsb2F0IHgsIGZsb2F0IHksIGZsb2F0IHopIHsgbV9vcmllbnRhdGlvbiA9IEZsb2F0
UG9pbnQzRCh4LCB5LCB6KTsgfQorCisgICAgLy8gVmVsb2NpdHkKKyAgICBGbG9hdFBvaW50M0Qg
dmVsb2NpdHkoKSBjb25zdCB7IHJldHVybiBtX3ZlbG9jaXR5OyB9CisgICAgdm9pZCBzZXRWZWxv
Y2l0eShmbG9hdCB4LCBmbG9hdCB5LCBmbG9hdCB6KSB7IG1fdmVsb2NpdHkgPSBGbG9hdFBvaW50
M0QoeCwgeSwgeik7IH0KKworICAgIC8vIERpc3RhbmNlIHBhcmFtZXRlcnMKKyAgICBEaXN0YW5j
ZU1vZGVsVHlwZSBkaXN0YW5jZU1vZGVsKCkgY29uc3Q7CisgICAgdm9pZCBzZXREaXN0YW5jZU1v
ZGVsKERpc3RhbmNlTW9kZWxUeXBlKTsKKworICAgIGRvdWJsZSByZWZEaXN0YW5jZSgpIHsgcmV0
dXJuIG1fZGlzdGFuY2VFZmZlY3QucmVmRGlzdGFuY2UoKTsgfQorICAgIHZvaWQgc2V0UmVmRGlz
dGFuY2UoZG91YmxlIHJlZkRpc3RhbmNlKSB7IG1fZGlzdGFuY2VFZmZlY3Quc2V0UmVmRGlzdGFu
Y2UocmVmRGlzdGFuY2UpOyB9CisKKyAgICBkb3VibGUgbWF4RGlzdGFuY2UoKSB7IHJldHVybiBt
X2Rpc3RhbmNlRWZmZWN0Lm1heERpc3RhbmNlKCk7IH0KKyAgICB2b2lkIHNldE1heERpc3RhbmNl
KGRvdWJsZSBtYXhEaXN0YW5jZSkgeyBtX2Rpc3RhbmNlRWZmZWN0LnNldE1heERpc3RhbmNlKG1h
eERpc3RhbmNlKTsgfQorCisgICAgZG91YmxlIHJvbGxvZmZGYWN0b3IoKSB7IHJldHVybiBtX2Rp
c3RhbmNlRWZmZWN0LnJvbGxvZmZGYWN0b3IoKTsgfQorICAgIHZvaWQgc2V0Um9sbG9mZkZhY3Rv
cihkb3VibGUgcm9sbG9mZkZhY3RvcikgeyBtX2Rpc3RhbmNlRWZmZWN0LnNldFJvbGxvZmZGYWN0
b3Iocm9sbG9mZkZhY3Rvcik7IH0KKworICAgIC8vIFNvdW5kIGNvbmVzIC0gYW5nbGVzIGluIGRl
Z3JlZXMKKyAgICBkb3VibGUgY29uZUlubmVyQW5nbGUoKSBjb25zdCB7IHJldHVybiBtX2NvbmVF
ZmZlY3QuaW5uZXJBbmdsZSgpOyB9CisgICAgdm9pZCBzZXRDb25lSW5uZXJBbmdsZShkb3VibGUg
YW5nbGUpIHsgbV9jb25lRWZmZWN0LnNldElubmVyQW5nbGUoYW5nbGUpOyB9CisKKyAgICBkb3Vi
bGUgY29uZU91dGVyQW5nbGUoKSBjb25zdCB7IHJldHVybiBtX2NvbmVFZmZlY3Qub3V0ZXJBbmds
ZSgpOyB9CisgICAgdm9pZCBzZXRDb25lT3V0ZXJBbmdsZShkb3VibGUgYW5nbGUpIHsgbV9jb25l
RWZmZWN0LnNldE91dGVyQW5nbGUoYW5nbGUpOyB9CisKKyAgICBkb3VibGUgY29uZU91dGVyR2Fp
bigpIGNvbnN0IHsgcmV0dXJuIG1fY29uZUVmZmVjdC5vdXRlckdhaW4oKTsgfQorICAgIHZvaWQg
c2V0Q29uZU91dGVyR2Fpbihkb3VibGUgYW5nbGUpIHsgbV9jb25lRWZmZWN0LnNldE91dGVyR2Fp
bihhbmdsZSk7IH0KKworICAgIHZvaWQgZ2V0QXppbXV0aEVsZXZhdGlvbihkb3VibGUqIG91dEF6
aW11dGgsIGRvdWJsZSogb3V0RWxldmF0aW9uKTsKKyAgICBmbG9hdCBkb3BwbGVyUmF0ZSgpIGZp
bmFsOworCisgICAgLy8gQWNjZXNzb3JzIGZvciBkeW5hbWljYWxseSBjYWxjdWxhdGVkIGdhaW4g
dmFsdWVzLgorICAgIEF1ZGlvUGFyYW0qIGRpc3RhbmNlR2FpbigpIHsgcmV0dXJuIG1fZGlzdGFu
Y2VHYWluLmdldCgpOyB9CisgICAgQXVkaW9QYXJhbSogY29uZUdhaW4oKSB7IHJldHVybiBtX2Nv
bmVHYWluLmdldCgpOyB9CisKKyAgICBkb3VibGUgdGFpbFRpbWUoKSBjb25zdCBvdmVycmlkZSB7
IHJldHVybiBtX3Bhbm5lciA/IG1fcGFubmVyLT50YWlsVGltZSgpIDogMDsgfQorICAgIGRvdWJs
ZSBsYXRlbmN5VGltZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fcGFubmVyID8gbV9wYW5u
ZXItPmxhdGVuY3lUaW1lKCkgOiAwOyB9CisKK3ByaXZhdGU6CisgICAgV2ViS2l0QXVkaW9QYW5u
ZXJOb2RlKFdlYktpdEF1ZGlvQ29udGV4dCYsIGZsb2F0IHNhbXBsZVJhdGUpOworCisgICAgLy8g
UmV0dXJucyB0aGUgY29tYmluZWQgZGlzdGFuY2UgYW5kIGNvbmUgZ2FpbiBhdHRlbnVhdGlvbi4K
KyAgICBmbG9hdCBkaXN0YW5jZUNvbmVHYWluKCk7CisKKyAgICAvLyBOb3RpZmllcyBhbnkgQXVk
aW9CdWZmZXJTb3VyY2VOb2RlcyBjb25uZWN0ZWQgdG8gdXMgZWl0aGVyIGRpcmVjdGx5IG9yIGlu
ZGlyZWN0bHkgYWJvdXQgb3VyIGV4aXN0ZW5jZS4KKyAgICAvLyBUaGlzIGlzIGluIG9yZGVyIHRv
IGhhbmRsZSB0aGUgcGl0Y2ggY2hhbmdlIG5lY2Vzc2FyeSBmb3IgdGhlIGRvcHBsZXIgc2hpZnQu
CisgICAgdm9pZCBub3RpZnlBdWRpb1NvdXJjZXNDb25uZWN0ZWRUb05vZGUoQXVkaW9Ob2RlKiwg
SGFzaFNldDxBdWRpb05vZGUqPiYgdmlzaXRlZE5vZGVzKTsKKworICAgIHN0ZDo6dW5pcXVlX3B0
cjxQYW5uZXI+IG1fcGFubmVyOworICAgIFBhbm5pbmdNb2RlbFR5cGUgbV9wYW5uaW5nTW9kZWw7
CisKKyAgICBGbG9hdFBvaW50M0QgbV9wb3NpdGlvbjsKKyAgICBGbG9hdFBvaW50M0QgbV9vcmll
bnRhdGlvbjsKKyAgICBGbG9hdFBvaW50M0QgbV92ZWxvY2l0eTsKKworICAgIC8vIEdhaW4KKyAg
ICBSZWZQdHI8QXVkaW9QYXJhbT4gbV9kaXN0YW5jZUdhaW47CisgICAgUmVmUHRyPEF1ZGlvUGFy
YW0+IG1fY29uZUdhaW47CisgICAgRGlzdGFuY2VFZmZlY3QgbV9kaXN0YW5jZUVmZmVjdDsKKyAg
ICBDb25lRWZmZWN0IG1fY29uZUVmZmVjdDsKKyAgICBmbG9hdCBtX2xhc3RHYWluOworCisgICAg
Ly8gSFJURiBEYXRhYmFzZSBsb2FkZXIKKyAgICBSZWZQdHI8SFJURkRhdGFiYXNlTG9hZGVyPiBt
X2hydGZEYXRhYmFzZUxvYWRlcjsKKworICAgIHVuc2lnbmVkIG1fY29ubmVjdGlvbkNvdW50Owor
CisgICAgLy8gU3luY2hyb25pemUgcHJvY2VzcygpIGFuZCBzZXRQYW5uaW5nTW9kZWwoKSB3aGlj
aCBjYW4gY2hhbmdlIHRoZSBwYW5uZXIuCisgICAgbXV0YWJsZSBMb2NrIG1fcGFubmVyTXV0ZXg7
Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9XZWJLaXRBdWRpb1Bhbm5lck5vZGUuaWRsIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9XZWJLaXRBdWRpb1Bhbm5lck5vZGUuaWRs
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjg4ZDI2OTEwYWUxNzUwNDIxMzZhNWU2MmZhYzgxM2NjNWZjMzY3MmYKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1dlYktpdEF1
ZGlvUGFubmVyTm9kZS5pZGwKQEAgLTAsMCArMSw0OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxMCwgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NF
IEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICog
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OCisgKiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKKyAqIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKK1sKKyAgICBD
b25kaXRpb25hbD1XRUJfQVVESU8sCisgICAgSlNHZW5lcmF0ZVRvSlNPYmplY3QsCisgICAgSW50
ZXJmYWNlTmFtZT13ZWJraXRBdWRpb1Bhbm5lck5vZGUsCitdIGludGVyZmFjZSBXZWJLaXRBdWRp
b1Bhbm5lck5vZGUgOiBBdWRpb05vZGUgeworICAgIC8vIERlZmF1bHQgbW9kZWwgZm9yIHN0ZXJl
byBpcyBIUlRGCisgICAgYXR0cmlidXRlIFBhbm5pbmdNb2RlbFR5cGUgcGFubmluZ01vZGVsOwor
CisgICAgLy8gVXNlcyBhIDNEIGNhcnRlc2lhbiBjb29yZGluYXRlIHN5c3RlbQorICAgIHZvaWQg
c2V0UG9zaXRpb24odW5yZXN0cmljdGVkIGZsb2F0IHgsIHVucmVzdHJpY3RlZCBmbG9hdCB5LCB1
bnJlc3RyaWN0ZWQgZmxvYXQgeik7CisgICAgdm9pZCBzZXRPcmllbnRhdGlvbih1bnJlc3RyaWN0
ZWQgZmxvYXQgeCwgdW5yZXN0cmljdGVkIGZsb2F0IHksIHVucmVzdHJpY3RlZCBmbG9hdCB6KTsK
KyAgICB2b2lkIHNldFZlbG9jaXR5KHVucmVzdHJpY3RlZCBmbG9hdCB4LCB1bnJlc3RyaWN0ZWQg
ZmxvYXQgeSwgdW5yZXN0cmljdGVkIGZsb2F0IHopOworCisgICAgLy8gRGlzdGFuY2UgbW9kZWwK
KyAgICBhdHRyaWJ1dGUgRGlzdGFuY2VNb2RlbFR5cGUgZGlzdGFuY2VNb2RlbDsKKworICAgIGF0
dHJpYnV0ZSB1bnJlc3RyaWN0ZWQgZG91YmxlIHJlZkRpc3RhbmNlOworICAgIGF0dHJpYnV0ZSB1
bnJlc3RyaWN0ZWQgZG91YmxlIG1heERpc3RhbmNlOworICAgIGF0dHJpYnV0ZSB1bnJlc3RyaWN0
ZWQgZG91YmxlIHJvbGxvZmZGYWN0b3I7CisKKyAgICAvLyBEaXJlY3Rpb25hbCBzb3VuZCBjb25l
CisgICAgYXR0cmlidXRlIHVucmVzdHJpY3RlZCBkb3VibGUgY29uZUlubmVyQW5nbGU7CisgICAg
YXR0cmlidXRlIHVucmVzdHJpY3RlZCBkb3VibGUgY29uZU91dGVyQW5nbGU7CisgICAgYXR0cmli
dXRlIHVucmVzdHJpY3RlZCBkb3VibGUgY29uZU91dGVyR2FpbjsKK307CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1dlYktpdE9mZmxpbmVBdWRpb0NvbnRleHQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9XZWJLaXRPZmZsaW5lQXVkaW9D
b250ZXh0LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kOGUzOTlhMTRhM2Q1ZDMxNjc1YmE5YTA2ZjgxNDAzMTIz
NTJiNGExCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRp
by9XZWJLaXRPZmZsaW5lQXVkaW9Db250ZXh0LmNwcApAQCAtMCwwICsxLDYyIEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDEyLCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVE
CisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04KKyAqIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUworICogU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaWYgRU5BQkxFKFdFQl9BVURJTykKKworI2lu
Y2x1ZGUgIldlYktpdE9mZmxpbmVBdWRpb0NvbnRleHQuaCIKKworI2luY2x1ZGUgIkF1ZGlvQnVm
ZmVyLmgiCisjaW5jbHVkZSAiRG9jdW1lbnQuaCIKKyNpbmNsdWRlIDx3dGYvSXNvTWFsbG9jSW5s
aW5lcy5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1dURl9NQUtFX0lTT19BTExPQ0FURURf
SU1QTChXZWJLaXRPZmZsaW5lQXVkaW9Db250ZXh0KTsKKworaW5saW5lIFdlYktpdE9mZmxpbmVB
dWRpb0NvbnRleHQ6OldlYktpdE9mZmxpbmVBdWRpb0NvbnRleHQoRG9jdW1lbnQmIGRvY3VtZW50
LCBBdWRpb0J1ZmZlciogcmVuZGVyVGFyZ2V0KQorICAgIDogV2ViS2l0QXVkaW9Db250ZXh0KGRv
Y3VtZW50LCByZW5kZXJUYXJnZXQpCit7Cit9CisKK0V4Y2VwdGlvbk9yPFJlZjxXZWJLaXRPZmZs
aW5lQXVkaW9Db250ZXh0Pj4gV2ViS2l0T2ZmbGluZUF1ZGlvQ29udGV4dDo6Y3JlYXRlKFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIHVuc2lnbmVkIG51bWJlck9mQ2hhbm5lbHMsIHNp
emVfdCBudW1iZXJPZkZyYW1lcywgZmxvYXQgc2FtcGxlUmF0ZSkKK3sKKyAgICAvLyBGSVhNRTog
QWRkIHN1cHBvcnQgZm9yIHdvcmtlcnMuCisgICAgaWYgKCFpczxEb2N1bWVudD4oY29udGV4dCkp
CisgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBOb3RTdXBwb3J0ZWRFcnJvciB9OworICAgIGlm
ICghbnVtYmVyT2ZDaGFubmVscyB8fCBudW1iZXJPZkNoYW5uZWxzID4gMTAgfHwgIW51bWJlck9m
RnJhbWVzIHx8ICFpc1NhbXBsZVJhdGVSYW5nZUdvb2Qoc2FtcGxlUmF0ZSkpCisgICAgICAgIHJl
dHVybiBFeGNlcHRpb24geyBTeW50YXhFcnJvciB9OworICAgIGF1dG8gcmVuZGVyVGFyZ2V0ID0g
QXVkaW9CdWZmZXI6OmNyZWF0ZShudW1iZXJPZkNoYW5uZWxzLCBudW1iZXJPZkZyYW1lcywgc2Ft
cGxlUmF0ZSk7CisgICAgaWYgKCFyZW5kZXJUYXJnZXQpCisgICAgICAgIHJldHVybiBFeGNlcHRp
b24geyBTeW50YXhFcnJvciB9OworCisgICAgYXV0byBhdWRpb0NvbnRleHQgPSBhZG9wdFJlZigq
bmV3IFdlYktpdE9mZmxpbmVBdWRpb0NvbnRleHQoZG93bmNhc3Q8RG9jdW1lbnQ+KGNvbnRleHQp
LCByZW5kZXJUYXJnZXQuZ2V0KCkpKTsKKyAgICBhdWRpb0NvbnRleHQtPnN1c3BlbmRJZk5lZWRl
ZCgpOworICAgIHJldHVybiBhdWRpb0NvbnRleHQ7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKKworI2VuZGlmIC8vIEVOQUJMRShXRUJfQVVESU8pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1dlYktpdE9mZmxpbmVBdWRpb0NvbnRleHQuaCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vV2ViS2l0T2ZmbGluZUF1ZGlvQ29udGV4dC5oCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLmMyNTRlZDQxZmUwM2Q2MWU3ZWNiNTQ4N2UyYzc5YzQ3NDYxODJmOTQKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1dlYktpdE9mZmxp
bmVBdWRpb0NvbnRleHQuaApAQCAtMCwwICsxLDQwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDEyLCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0Ug
QVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04KKyAqIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUworICogU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBv
bmNlCisKKyNpbmNsdWRlICJXZWJLaXRBdWRpb0NvbnRleHQuaCIKKworbmFtZXNwYWNlIFdlYkNv
cmUgeworCitjbGFzcyBXZWJLaXRPZmZsaW5lQXVkaW9Db250ZXh0IGZpbmFsIDogcHVibGljIFdl
YktpdEF1ZGlvQ29udGV4dCB7CisgICAgV1RGX01BS0VfSVNPX0FMTE9DQVRFRChXZWJLaXRPZmZs
aW5lQXVkaW9Db250ZXh0KTsKK3B1YmxpYzoKKyAgICBzdGF0aWMgRXhjZXB0aW9uT3I8UmVmPFdl
YktpdE9mZmxpbmVBdWRpb0NvbnRleHQ+PiBjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYs
IHVuc2lnbmVkIG51bWJlck9mQ2hhbm5lbHMsIHNpemVfdCBudW1iZXJPZkZyYW1lcywgZmxvYXQg
c2FtcGxlUmF0ZSk7CisKK3ByaXZhdGU6CisgICAgV2ViS2l0T2ZmbGluZUF1ZGlvQ29udGV4dChE
b2N1bWVudCYsIEF1ZGlvQnVmZmVyKiByZW5kZXJUYXJnZXQpOworfTsKKworfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9X
ZWJLaXRPZmZsaW5lQXVkaW9Db250ZXh0LmlkbCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
YXVkaW8vV2ViS2l0T2ZmbGluZUF1ZGlvQ29udGV4dC5pZGwKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNTZhNjQ4YmMy
YTVmMjFjMzA1ZGQ0ODBjNDFhMDA1MjMxMjRkY2JmMQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vV2ViS2l0T2ZmbGluZUF1ZGlvQ29udGV4dC5pZGwK
QEAgLTAsMCArMSwzMSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiwgR29vZ2xlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5E
IEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OCisgKiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMKKyAqIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKK1sKKyAgICBDb25kaXRpb25hbD1XRUJfQVVE
SU8sCisgICAgSW50ZXJmYWNlTmFtZT13ZWJraXRPZmZsaW5lQXVkaW9Db250ZXh0LAorICAgIEpT
R2VuZXJhdGVUb0pTT2JqZWN0LAorXSBpbnRlcmZhY2UgV2ViS2l0T2ZmbGluZUF1ZGlvQ29udGV4
dCA6IFdlYktpdEF1ZGlvQ29udGV4dCB7CisgICAgW0NhbGxXaXRoPVNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQsIE1heVRocm93RXhjZXB0aW9uXSBjb25zdHJ1Y3Rvcih1bnNpZ25lZCBsb25nIG51bWJl
ck9mQ2hhbm5lbHMsIHVuc2lnbmVkIGxvbmcgbnVtYmVyT2ZGcmFtZXMsIHVucmVzdHJpY3RlZCBm
bG9hdCBzYW1wbGVSYXRlKTsKK307CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2Vz
LnR4dCBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CmluZGV4IDJjNTZlZDUxMzlkYjA3OWE4
NmM3NzUxYTk1NjM4Y2IyNDhiZmU2YzcuLjE0OTU5YzM4MTUwMzU2YTg3ZGVlZTMyZWZiMzdiMjYy
NTY1ZjI2ZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CisrKyBiL1Nv
dXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CkBAIC0yNjksNiArMjY5LDkgQEAgTW9kdWxlcy93ZWJh
dWRpby9TY3JpcHRQcm9jZXNzb3JOb2RlLmNwcAogTW9kdWxlcy93ZWJhdWRpby9XYXZlU2hhcGVy
RFNQS2VybmVsLmNwcAogTW9kdWxlcy93ZWJhdWRpby9XYXZlU2hhcGVyTm9kZS5jcHAKIE1vZHVs
ZXMvd2ViYXVkaW8vV2F2ZVNoYXBlclByb2Nlc3Nvci5jcHAKK01vZHVsZXMvd2ViYXVkaW8vV2Vi
S2l0QXVkaW9Db250ZXh0LmNwcAorTW9kdWxlcy93ZWJhdWRpby9XZWJLaXRBdWRpb1Bhbm5lck5v
ZGUuY3BwCitNb2R1bGVzL3dlYmF1ZGlvL1dlYktpdE9mZmxpbmVBdWRpb0NvbnRleHQuY3BwCiAK
IE1vZHVsZXMvd2ViYXV0aG4vQXV0aGVudGljYXRvckNvb3JkaW5hdG9yLmNwcAogTW9kdWxlcy93
ZWJhdXRobi9BdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2UuY3BwCkBAIC0yNzQ0LDYgKzI3
NDcsNyBAQCBKU0F1ZGlvQnVmZmVyQ2FsbGJhY2suY3BwCiBKU0F1ZGlvQnVmZmVyU291cmNlTm9k
ZS5jcHAKIEpTQXVkaW9Db25maWd1cmF0aW9uLmNwcAogSlNBdWRpb0NvbnRleHQuY3BwCitKU0F1
ZGlvQ29udGV4dFN0YXRlLmNwcAogSlNBdWRpb0Rlc3RpbmF0aW9uTm9kZS5jcHAKIEpTQXVkaW9M
aXN0ZW5lci5jcHAKIEpTQXVkaW9Ob2RlLmNwcApAQCAtMjkxNCw2ICsyOTE4LDcgQEAgSlNEZXZp
Y2VNb3Rpb25FdmVudC5jcHAKIEpTRGV2aWNlT3JpZW50YXRpb25FdmVudC5jcHAKIEpTRGV2aWNl
T3JpZW50YXRpb25Pck1vdGlvblBlcm1pc3Npb25TdGF0ZS5jcHAKIEpTRGV2aWNlT3JpZW50YXRp
b25Pck1vdGlvbkV2ZW50LmNwcAorSlNEaXN0YW5jZU1vZGVsVHlwZS5jcHAKIEpTRG9jdW1lbnQu
Y3BwCiBKU0RvY3VtZW50QW5kRWxlbWVudEV2ZW50SGFuZGxlcnMuY3BwCiBKU0RvY3VtZW50RnJh
Z21lbnQuY3BwCkBAIC0zMjExLDYgKzMyMTYsNyBAQCBKU092ZXJmbG93RXZlbnQuY3BwCiBKU1Bh
Z2VUcmFuc2l0aW9uRXZlbnQuY3BwCiBKU1BhaW50UmVuZGVyaW5nQ29udGV4dDJELmNwcAogSlNQ
YW5uZXJOb2RlLmNwcAorSlNQYW5uaW5nTW9kZWxUeXBlLmNwcAogSlNQYXJlbnROb2RlLmNwcAog
SlNQYXRoMkQuY3BwCiBKU1BheWVyRXJyb3JGaWVsZHMuY3BwCkBAIC0zNTY3LDcgKzM1NzMsMTAg
QEAgSlNXZWJHUFVTd2FwQ2hhaW4uY3BwCiBKU1dlYkdQVVRleHR1cmUuY3BwCiBKU1dlYkdQVVRl
eHR1cmVWaWV3LmNwcAogSlNXZWJLaXRBbmltYXRpb25FdmVudC5jcHAKK0pTV2ViS2l0QXVkaW9D
b250ZXh0LmNwcAorSlNXZWJLaXRBdWRpb1Bhbm5lck5vZGUuY3BwCiBKU1dlYktpdENTU01hdHJp
eC5jcHAKK0pTV2ViS2l0T2ZmbGluZUF1ZGlvQ29udGV4dC5jcHAKIEpTV2ViS2l0UGxheWJhY2tU
YXJnZXRBdmFpbGFiaWxpdHlFdmVudC5jcHAKIEpTV2ViS2l0UG9pbnQuY3BwCiBKU1dlYktpdFRy
YW5zaXRpb25FdmVudC5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagppbmRleCBjN2FhYzg1OTY3Njc4MThiNjlkMzU4ZTNhZDgwNDg0ZTEy
NjRiODYwLi40NmY5NmQxNTBjYmYxYjdmYmQ4NjU5MjRiNmIxNGQyZjZjODcyZWQ0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysr
IGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0y
NDA3LDEyICsyNDA3LDE2IEBACiAJCTgzMDAzMEY4MUI3RDNCNzgwMEVEM0FBQyAvKiBDYWNoZWRI
VE1MQ29sbGVjdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gODMwMDMwRjcxQjdEMzk4ODAwRUQzQUFDIC8qIENhY2hlZEhUTUxDb2xsZWN0aW9uLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJODMwMzM1
MDIxRjU0OTA1NzAwNERGNzA3IC8qIEZpbGVTeXN0ZW1EaXJlY3RvcnlSZWFkZXIuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgzMDMzNEZDMUY1NDkwNTIw
MDRERjcwNyAvKiBGaWxlU3lzdGVtRGlyZWN0b3J5UmVhZGVyLmggKi87IH07CiAJCTgzMDMzNTAz
MUY1NDkwNUEwMDRERjcwNyAvKiBGaWxlU3lzdGVtRW50cmllc0NhbGxiYWNrLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4MzAzMzRGRTFGNTQ5MDUyMDA0
REY3MDcgLyogRmlsZVN5c3RlbUVudHJpZXNDYWxsYmFjay5oICovOyB9OworCQk4MzA0MDI4MjI0
OUE3QTVGMDBBOTBEOEQgLyogUGFubmluZ01vZGVsVHlwZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODMwNDAyODAyNDlBN0E1QzAwQTkwRDhEIC8qIFBh
bm5pbmdNb2RlbFR5cGUuaCAqLzsgfTsKKwkJODMwNDAyODMyNDlBN0E2MjAwQTkwRDhEIC8qIERp
c3RhbmNlTW9kZWxUeXBlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA4MzA0MDI3RDI0OUE3QTVCMDBBOTBEOEQgLyogRGlzdGFuY2VNb2RlbFR5cGUuaCAq
LzsgfTsKIAkJODMwNTE5OTYxQkIwRjExMDAwRjM3NzJFIC8qIEhUTUxUaW1lRWxlbWVudC5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODMwNTE5OTMxQkIw
RjBFNzAwRjM3NzJFIC8qIEhUTUxUaW1lRWxlbWVudC5oICovOyB9OwogCQk4MzA3ODRCMjFDNTJF
RTJDMDAxMDREMUQgLyogWE1MRG9jdW1lbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDgzMDc4NEIxMUM1MkVFMTkwMDEwNEQxRCAvKiBYTUxEb2N1bWVu
dC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTgz
MEEzNkJEMURBQzVGQUQwMDZEN0QwOSAvKiBKU01vdXNlRXZlbnRJbml0LmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4MzBBMzZCQjFEQUM1RkE3MDA2RDdE
MDkgLyogSlNNb3VzZUV2ZW50SW5pdC5oICovOyB9OwogCQk4MzEwMkIyNzFGOUVBREQ5MDBFNDA0
QjkgLyogSlNFeHRlbmRhYmxlTWVzc2FnZUV2ZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4MzEwMkIyMzFGOUVBREMyMDBFNDA0QjkgLyogSlNFeHRl
bmRhYmxlTWVzc2FnZUV2ZW50LmggKi87IH07CiAJCTgzMTFDMDAzMUZBQTJFOTUwMEUzQzhFNSAv
KiBTV1NlcnZlckpvYlF1ZXVlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA4MzExQzAwMjFGQUEyRTg5MDBFM0M4RTUgLyogU1dTZXJ2ZXJKb2JRdWV1ZS5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTgzMTIw
QzcxMUM1NkYzRkIwMDFDQjExMiAvKiBIVE1MRGF0YUVsZW1lbnQuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgzNEI4NkE3MUM1NkU4M0EwMEYzRjBFMyAv
KiBIVE1MRGF0YUVsZW1lbnQuaCAqLzsgfTsKKwkJODMxQjYxNzYyNDk5QTVCQjAwQzA3Qzc5IC8q
IFdlYktpdEF1ZGlvUGFubmVyTm9kZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gODMxQjYxNzQyNDk5QTU5QzAwQzA3Qzc5IC8qIFdlYktpdEF1ZGlvUGFu
bmVyTm9kZS5oICovOyB9OworCQk4MzFCNjE3NzI0OTlBNUJGMDBDMDdDNzkgLyogV2ViS2l0T2Zm
bGluZUF1ZGlvQ29udGV4dC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gODMxQjYxNzUyNDk5QTU5RDAwQzA3Qzc5IC8qIFdlYktpdE9mZmxpbmVBdWRpb0Nv
bnRleHQuaCAqLzsgfTsKIAkJODMyMTUwN0UxRjI3RUExQjAwOTVCMTM2IC8qIE5hdmlnYXRvckJl
YWNvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODMy
MTUwN0IxRjI3RUExNTAwOTVCMTM2IC8qIE5hdmlnYXRvckJlYWNvbi5oICovOyB9OwogCQk4MzJC
ODQzNDE5RDhFNTUxMDBCMjYwNTUgLyogU1ZHQW5pbWF0ZUVsZW1lbnRCYXNlLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4MzJCODQzMzE5RDhFNTUxMDBC
MjYwNTUgLyogU1ZHQW5pbWF0ZUVsZW1lbnRCYXNlLmggKi87IH07CiAJCTgzM0I5RTMyMUY1MDhE
ODUwMEUwRTQyOCAvKiBKU0ZpbGVTeXN0ZW1EaXJlY3RvcnlFbnRyeS5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODMzQjlFMkYxRjUwOEQ4MDAwRTBFNDI4
IC8qIEpTRmlsZVN5c3RlbURpcmVjdG9yeUVudHJ5LmggKi87IH07CkBAIC0yNDY4LDEwICsyNDcy
LDEyIEBACiAJCTgzOUEyRjJFMUUyMDRBNzEwMDM5MDU3RSAvKiBXZWJHTFN0YXRlVHJhY2tlci5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODM5QTJGMkMx
RTIwNEE2RDAwMzkwNTdFIC8qIFdlYkdMU3RhdGVUcmFja2VyLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJODM5QUFGRUQxQTBDMEM4RDAwNjA1Rjk5
IC8qIEhUTUxXQlJFbGVtZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA4MzlBQUZFQjFBMEMwQzhEMDA2MDVGOTkgLyogSFRNTFdCUkVsZW1lbnQuaCAq
LzsgfTsKIAkJODNBOEFDNDAxRkFCQkZFNTAwMjA2NEFDIC8qIFNlcnZpY2VXb3JrZXJJZGVudGlm
aWVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4M0E4
QUMzRTFGQUJCRkQxMDAyMDY0QUMgLyogU2VydmljZVdvcmtlcklkZW50aWZpZXIuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk4M0IxQTcwMjI0OTk4
NUYwMDBGRTU5NjEgLyogV2ViS2l0QXVkaW9Db250ZXh0LmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4M0IxQTZGRjI0OTk4NUQwMDBGRTU5NjEgLyogV2Vi
S2l0QXVkaW9Db250ZXh0LmggKi87IH07CiAJCTgzQjJEMTc1MUI4QkNENkEwMEEwMkU0NyAvKiBO
YXRpdmVOb2RlRmlsdGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA4M0U5NTlFMTFCOEJDMjJCMDA0RDkzODUgLyogTmF0aXZlTm9kZUZpbHRlci5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTgzQjc0RUY2
MUYzRTBCRjIwMDk5NkJDNyAvKiBLZWVwYWxpdmVSZXF1ZXN0VHJhY2tlci5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODNCNzRFRjMxRjNFMEJENzAwOTk2
QkM3IC8qIEtlZXBhbGl2ZVJlcXVlc3RUcmFja2VyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJODNCOTY4N0IxOUY4QUI4MzAwNEVGN0FGIC8qIFN0
eWxlQnVpbGRlckNvbnZlcnRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gODNCOTY4NzkxOUY4QUI4MzAwNEVGN0FGIC8qIFN0eWxlQnVpbGRlckNvbnZl
cnRlci5oICovOyB9OwogCQk4M0JCNUM4ODFENUQ2RjQ1MDA1QTcxRjQgLyogQWxsRGVzY2VuZGFu
dHNDb2xsZWN0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA4M0JCNUM4NzFENUQ2RjNBMDA1QTcxRjQgLyogQWxsRGVzY2VuZGFudHNDb2xsZWN0aW9u
LmggKi87IH07CisJCTgzQkQzQ0VFMjQ5OThFMDEwMEJBM0U2NyAvKiBBdWRpb0NvbnRleHRTdGF0
ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODNCRDND
RUQyNDk5OERGNjAwQkEzRTY3IC8qIEF1ZGlvQ29udGV4dFN0YXRlLmggKi87IH07CiAJCTgzQzA1
QTVCMUE2ODYyMTIwMDdFNURFQSAvKiBTdHlsZVByb3BlcnR5U2hvcnRoYW5kRnVuY3Rpb25zLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4M0MwNUE1OTFB
Njg2MjEyMDA3RTVERUEgLyogU3R5bGVQcm9wZXJ0eVNob3J0aGFuZEZ1bmN0aW9ucy5oICovOyB9
OwogCQk4M0MxRjU5NDFFREY2OUQzMDA0MTBEMjcgLyogUXVhbGlmaWVkTmFtZUNhY2hlLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4M0MxRjU5MjFFREY2
OUQzMDA0MTBEMjcgLyogUXVhbGlmaWVkTmFtZUNhY2hlLmggKi87IH07CiAJCTgzQzQ1QjhFMURD
MkI2OEEwMDg4NzFCQSAvKiBWYWxpZGF0aW9uQnViYmxlLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4M0M0NUI4RDFEQzJCNjdDMDA4ODcxQkEgLyogVmFs
aWRhdGlvbkJ1YmJsZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CkBAIC0xMDI5NywxMSArMTAzMDMsMTYgQEAKIAkJODMwMDMwRjMxQjdEMzNBNjAwRUQz
QUFDIC8qIEdlbmVyaWNDYWNoZWRIVE1MQ29sbGVjdGlvbi5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBHZW5lcmljQ2FjaGVkSFRNTENvbGxlY3Rpb24uY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4MzAwMzBGNDFCN0QzM0E2MDBFRDNBQUMgLyogR2Vu
ZXJpY0NhY2hlZEhUTUxDb2xsZWN0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IEdlbmVyaWNDYWNoZWRIVE1MQ29sbGVjdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk4MzAwMzBGNzFCN0QzOTg4MDBFRDNBQUMgLyogQ2FjaGVkSFRNTENvbGxlY3Rpb24u
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ2FjaGVkSFRNTENvbGxlY3Rpb24u
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJODMwMDNFMkIyNDk5OTdBODAwNjBBRjk0
IC8qIFdlYktpdEF1ZGlvQ29udGV4dC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBXZWJLaXRBdWRpb0NvbnRleHQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk4MzAzMzRGQjFGNTQ5MDUyMDA0REY3MDcgLyogRmlsZVN5c3RlbURpcmVjdG9yeVJlYWRl
ci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBGaWxlU3lzdGVtRGly
ZWN0b3J5UmVhZGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODMwMzM0RkMx
RjU0OTA1MjAwNERGNzA3IC8qIEZpbGVTeXN0ZW1EaXJlY3RvcnlSZWFkZXIuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRmlsZVN5c3RlbURpcmVjdG9yeVJlYWRlci5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4MzAzMzRGRDFGNTQ5MDUyMDA0REY3MDcgLyogRmls
ZVN5c3RlbUVudHJpZXNDYWxsYmFjay5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gRmlsZVN5
c3RlbUVudHJpZXNDYWxsYmFjay5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTgz
MDMzNEZFMUY1NDkwNTIwMDRERjcwNyAvKiBGaWxlU3lzdGVtRW50cmllc0NhbGxiYWNrLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEZpbGVTeXN0ZW1FbnRyaWVzQ2FsbGJhY2su
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODMwMzM0RkYxRjU0OTA1MjAwNERGNzA3
IC8qIEZpbGVTeXN0ZW1EaXJlY3RvcnlSZWFkZXIuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9
IEZpbGVTeXN0ZW1EaXJlY3RvcnlSZWFkZXIuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQk4MzA0MDI3RDI0OUE3QTVCMDBBOTBEOEQgLyogRGlzdGFuY2VNb2RlbFR5cGUuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRGlzdGFuY2VNb2RlbFR5cGUuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJODMwNDAyN0YyNDlBN0E1QzAwQTkwRDhEIC8qIERpc3Rh
bmNlTW9kZWxUeXBlLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBEaXN0YW5jZU1vZGVsVHlw
ZS5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTgzMDQwMjgwMjQ5QTdBNUMwMEE5
MEQ4RCAvKiBQYW5uaW5nTW9kZWxUeXBlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFBhbm5pbmdNb2RlbFR5cGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJODMw
NDAyODEyNDlBN0E1RDAwQTkwRDhEIC8qIFBhbm5pbmdNb2RlbFR5cGUuaWRsICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
dGV4dDsgcGF0aCA9IFBhbm5pbmdNb2RlbFR5cGUuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk4MzA1MTk5MjFCQjBGMEU3MDBGMzc3MkUgLyogSFRNTFRpbWVFbGVtZW50LmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEhUTUxUaW1lRWxlbWVudC5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTgzMDUxOTkzMUJCMEYwRTcwMEYzNzcyRSAv
KiBIVE1MVGltZUVsZW1lbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSFRN
TFRpbWVFbGVtZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTgzMDUxOTk0MUJC
MEYwRTcwMEYzNzcyRSAvKiBIVE1MVGltZUVsZW1lbnQuaWRsICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0
aCA9IEhUTUxUaW1lRWxlbWVudC5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0x
MDMxNCw2ICsxMDMyNSwxMiBAQAogCQk4MzEwMkIyNTFGOUVBREMyMDBFNDA0QjkgLyogSlNFeHRl
bmRhYmxlTWVzc2FnZUV2ZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IEpTRXh0ZW5kYWJsZU1lc3NhZ2VFdmVudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTgzMTFDMDAwMUZBQTJFODkwMEUzQzhFNSAvKiBTV1NlcnZlckpvYlF1ZXVlLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNXU2VydmVySm9iUXVldWUuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4MzExQzAwMjFGQUEyRTg5MDBFM0M4RTUg
LyogU1dTZXJ2ZXJKb2JRdWV1ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBT
V1NlcnZlckpvYlF1ZXVlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTgzMUI2MTZG
MjQ5OUE1OTgwMEMwN0M3OSAvKiBXZWJLaXRBdWRpb1Bhbm5lck5vZGUuaWRsICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
dGV4dDsgcGF0aCA9IFdlYktpdEF1ZGlvUGFubmVyTm9kZS5pZGw7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTgzMUI2MTcxMjQ5OUE1OTkwMEMwN0M3OSAvKiBXZWJLaXRBdWRpb1Bhbm5l
ck5vZGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2ViS2l0QXVk
aW9QYW5uZXJOb2RlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJODMxQjYxNzIy
NDk5QTU5QTAwQzA3Qzc5IC8qIFdlYktpdE9mZmxpbmVBdWRpb0NvbnRleHQuaWRsICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gdGV4dDsgcGF0aCA9IFdlYktpdE9mZmxpbmVBdWRpb0NvbnRleHQuaWRsOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQk4MzFCNjE3MzI0OTlBNTlCMDBDMDdDNzkgLyogV2ViS2l0T2Zm
bGluZUF1ZGlvQ29udGV4dC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBXZWJLaXRPZmZsaW5lQXVkaW9Db250ZXh0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJODMxQjYxNzQyNDk5QTU5QzAwQzA3Qzc5IC8qIFdlYktpdEF1ZGlvUGFubmVyTm9kZS5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJLaXRBdWRpb1Bhbm5lck5vZGUu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJODMxQjYxNzUyNDk5QTU5RDAwQzA3Qzc5
IC8qIFdlYktpdE9mZmxpbmVBdWRpb0NvbnRleHQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gV2ViS2l0T2ZmbGluZUF1ZGlvQ29udGV4dC5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk4MzFDNDZDMzFGOUVFNUUwMDBFQkQ0NTAgLyogSlNFeHRlbmRhYmxlTWVzc2Fn
ZUV2ZW50Q3VzdG9tLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpT
RXh0ZW5kYWJsZU1lc3NhZ2VFdmVudEN1c3RvbS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTgzMUQxRjI5MUM1NkVDQTAwMEY1RjZDMCAvKiBIVE1MRGF0YUVsZW1lbnQuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSFRNTERhdGFFbGVtZW50LmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODMyMTUwN0ExRjI3RUExNTAwOTVCMTM2IC8q
IE5hdmlnYXRvckJlYWNvbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBOYXZpZ2F0b3JCZWFjb24u
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTA0NDEsNiArMTA0NTgsOCBAQAog
CQk4MzlBQUZFQjFBMEMwQzhEMDA2MDVGOTkgLyogSFRNTFdCUkVsZW1lbnQuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSFRNTFdCUkVsZW1lbnQuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJODNBNEE5RjgxQ0U3RkQ3RTAwNzA5QjAwIC8qIEpTWE1MRG9jdW1lbnRD
dXN0b20uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNYTUxEb2N1
bWVudEN1c3RvbS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTgzQThBQzNFMUZB
QkJGRDEwMDIwNjRBQyAvKiBTZXJ2aWNlV29ya2VySWRlbnRpZmllci5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBTZXJ2aWNlV29ya2VySWRlbnRpZmllci5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQk4M0IxQTZGRjI0OTk4NUQwMDBGRTU5NjEgLyogV2ViS2l0QXVk
aW9Db250ZXh0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYktpdEF1ZGlv
Q29udGV4dC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk4M0IxQTcwMTI0OTk4NUQw
MDBGRTU5NjEgLyogV2ViS2l0QXVkaW9Db250ZXh0LmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGgg
PSBXZWJLaXRBdWRpb0NvbnRleHQuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4
M0IyNTAwOTFGQTExODFDMDBCQzAyRDkgLyogSlNTZXJ2aWNlV29ya2VyQ2xpZW50VHlwZS5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU1NlcnZpY2VXb3JrZXJDbGllbnRUeXBl
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTgzQjI1MDBCMUZBMTE4MUQwMEJDMDJE
OSAvKiBKU1NlcnZpY2VXb3JrZXJDbGllbnRUeXBlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IEpTU2VydmljZVdvcmtlckNsaWVudFR5cGUuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk4M0I1REE0NTFGQTkwNzkzMDBCNTlERjQgLyogSlNOYXZpZ2F0
b3JDdXN0b20uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNOYXZp
Z2F0b3JDdXN0b20uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTA0NDgsNiAr
MTA0NjcsOCBAQAogCQk4M0I3NEVGMzFGM0UwQkQ3MDA5OTZCQzcgLyogS2VlcGFsaXZlUmVxdWVz
dFRyYWNrZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gS2VlcGFsaXZlUmVx
dWVzdFRyYWNrZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODNCOTY4NzkxOUY4
QUI4MzAwNEVGN0FGIC8qIFN0eWxlQnVpbGRlckNvbnZlcnRlci5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBTdHlsZUJ1aWxkZXJDb252ZXJ0ZXIuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJODNCQjVDODcxRDVENkYzQTAwNUE3MUY0IC8qIEFsbERlc2NlbmRhbnRz
Q29sbGVjdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBbGxEZXNjZW5k
YW50c0NvbGxlY3Rpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJODNCRDNDRUIy
NDk5OENDNTAwQkEzRTY3IC8qIEF1ZGlvQ29udGV4dFN0YXRlLmlkbCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7
IHBhdGggPSBBdWRpb0NvbnRleHRTdGF0ZS5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCTgzQkQzQ0VEMjQ5OThERjYwMEJBM0U2NyAvKiBBdWRpb0NvbnRleHRTdGF0ZS5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBdWRpb0NvbnRleHRTdGF0ZS5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk4M0MwNUE1ODFBNjg2MjEyMDA3RTVERUEgLyogU3R5bGVQ
cm9wZXJ0eVNob3J0aGFuZEZ1bmN0aW9ucy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IG5hbWUgPSBTdHlsZVByb3BlcnR5U2hvcnRoYW5kRnVuY3Rpb25zLmNwcDsgcGF0aCA9IERl
cml2ZWRTb3VyY2VzL1dlYkNvcmUvU3R5bGVQcm9wZXJ0eVNob3J0aGFuZEZ1bmN0aW9ucy5jcHA7
IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19ESVI7IH07CiAJCTgzQzA1QTU5MUE2ODYyMTIw
MDdFNURFQSAvKiBTdHlsZVByb3BlcnR5U2hvcnRoYW5kRnVuY3Rpb25zLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFN0eWxlUHJvcGVydHlTaG9ydGhhbmRGdW5jdGlvbnMuaDsg
cGF0aCA9IERlcml2ZWRTb3VyY2VzL1dlYkNvcmUvU3R5bGVQcm9wZXJ0eVNob3J0aGFuZEZ1bmN0
aW9ucy5oOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9OwogCQk4M0MxRjU5MTFF
REY2OUQzMDA0MTBEMjcgLyogUXVhbGlmaWVkTmFtZUNhY2hlLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFF1YWxpZmllZE5hbWVDYWNoZS5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CkBAIC0yOTIzOSw2ICsyOTI2MCw4IEBACiAJCQkJRkQzMTVGQkExMkIw
MjY3NTAwQzFBMzU5IC8qIEF1ZGlvQ29udGV4dC5jcHAgKi8sCiAJCQkJRkQzMTVGQkIxMkIwMjY3
NTAwQzFBMzU5IC8qIEF1ZGlvQ29udGV4dC5oICovLAogCQkJCUZEMzE1RkJDMTJCMDI2NzUwMEMx
QTM1OSAvKiBBdWRpb0NvbnRleHQuaWRsICovLAorCQkJCTgzQkQzQ0VEMjQ5OThERjYwMEJBM0U2
NyAvKiBBdWRpb0NvbnRleHRTdGF0ZS5oICovLAorCQkJCTgzQkQzQ0VCMjQ5OThDQzUwMEJBM0U2
NyAvKiBBdWRpb0NvbnRleHRTdGF0ZS5pZGwgKi8sCiAJCQkJRkQzMTVGQkQxMkIwMjY3NTAwQzFB
MzU5IC8qIEF1ZGlvRGVzdGluYXRpb25Ob2RlLmNwcCAqLywKIAkJCQlGRDMxNUZCRTEyQjAyNjc1
MDBDMUEzNTkgLyogQXVkaW9EZXN0aW5hdGlvbk5vZGUuaCAqLywKIAkJCQlGRDMxNUZCRjEyQjAy
Njc1MDBDMUEzNTkgLyogQXVkaW9EZXN0aW5hdGlvbk5vZGUuaWRsICovLApAQCAtMjkyODksNiAr
MjkzMTIsOCBAQAogCQkJCUZEMzE1RkU1MTJCMDI2NzYwMEMxQTM1OSAvKiBEZWxheU5vZGUuaWRs
ICovLAogCQkJCUZEMzE1RkU2MTJCMDI2NzYwMEMxQTM1OSAvKiBEZWxheVByb2Nlc3Nvci5jcHAg
Ki8sCiAJCQkJRkQzMTVGRTcxMkIwMjY3NjAwQzFBMzU5IC8qIERlbGF5UHJvY2Vzc29yLmggKi8s
CisJCQkJODMwNDAyN0QyNDlBN0E1QjAwQTkwRDhEIC8qIERpc3RhbmNlTW9kZWxUeXBlLmggKi8s
CisJCQkJODMwNDAyN0YyNDlBN0E1QzAwQTkwRDhEIC8qIERpc3RhbmNlTW9kZWxUeXBlLmlkbCAq
LywKIAkJCQlGRDZFRDJDMTEzNkI4RTQyMDAzQ0YwNzIgLyogRHluYW1pY3NDb21wcmVzc29yTm9k
ZS5jcHAgKi8sCiAJCQkJRkQ2RUQyQzIxMzZCOEU0MjAwM0NGMDcyIC8qIER5bmFtaWNzQ29tcHJl
c3Nvck5vZGUuaCAqLywKIAkJCQlGRDZFRDJDOTEzNkI4RTlEMDAzQ0YwNzIgLyogRHluYW1pY3ND
b21wcmVzc29yTm9kZS5pZGwgKi8sCkBAIC0yOTMyMSw2ICsyOTM0Niw4IEBACiAJCQkJRkQzMTVG
Q0YxMkIwMjY3NTAwQzFBMzU5IC8qIFBhbm5lck5vZGUuY3BwICovLAogCQkJCUZEMzE1RkQwMTJC
MDI2NzUwMEMxQTM1OSAvKiBQYW5uZXJOb2RlLmggKi8sCiAJCQkJRkQzMTVGRDExMkIwMjY3NTAw
QzFBMzU5IC8qIFBhbm5lck5vZGUuaWRsICovLAorCQkJCTgzMDQwMjgwMjQ5QTdBNUMwMEE5MEQ4
RCAvKiBQYW5uaW5nTW9kZWxUeXBlLmggKi8sCisJCQkJODMwNDAyODEyNDlBN0E1RDAwQTkwRDhE
IC8qIFBhbm5pbmdNb2RlbFR5cGUuaWRsICovLAogCQkJCUZENTgxRkIxMTUyMEY5M0IwMDNBN0E3
NSAvKiBQZXJpb2RpY1dhdmUuY3BwICovLAogCQkJCUZENTgxRkIyMTUyMEY5M0IwMDNBN0E3NSAv
KiBQZXJpb2RpY1dhdmUuaCAqLywKIAkJCQlGRDU4MUZCMzE1MjBGOTNCMDAzQTdBNzUgLyogUGVy
aW9kaWNXYXZlLmlkbCAqLywKQEAgLTI5MzM2LDYgKzI5MzYzLDE1IEBACiAJCQkJRkQ3RjI5OEUx
M0Q0QzBDQjAwQUQ5NTM1IC8qIFdhdmVTaGFwZXJOb2RlLmlkbCAqLywKIAkJCQlGRDdGMjk4RjEz
RDRDMENCMDBBRDk1MzUgLyogV2F2ZVNoYXBlclByb2Nlc3Nvci5jcHAgKi8sCiAJCQkJRkQ3RjI5
OTAxM0Q0QzBDQjAwQUQ5NTM1IC8qIFdhdmVTaGFwZXJQcm9jZXNzb3IuaCAqLywKKwkJCQk4MzAw
M0UyQjI0OTk5N0E4MDA2MEFGOTQgLyogV2ViS2l0QXVkaW9Db250ZXh0LmNwcCAqLywKKwkJCQk4
M0IxQTZGRjI0OTk4NUQwMDBGRTU5NjEgLyogV2ViS2l0QXVkaW9Db250ZXh0LmggKi8sCisJCQkJ
ODNCMUE3MDEyNDk5ODVEMDAwRkU1OTYxIC8qIFdlYktpdEF1ZGlvQ29udGV4dC5pZGwgKi8sCisJ
CQkJODMxQjYxNzEyNDk5QTU5OTAwQzA3Qzc5IC8qIFdlYktpdEF1ZGlvUGFubmVyTm9kZS5jcHAg
Ki8sCisJCQkJODMxQjYxNzQyNDk5QTU5QzAwQzA3Qzc5IC8qIFdlYktpdEF1ZGlvUGFubmVyTm9k
ZS5oICovLAorCQkJCTgzMUI2MTZGMjQ5OUE1OTgwMEMwN0M3OSAvKiBXZWJLaXRBdWRpb1Bhbm5l
ck5vZGUuaWRsICovLAorCQkJCTgzMUI2MTczMjQ5OUE1OUIwMEMwN0M3OSAvKiBXZWJLaXRPZmZs
aW5lQXVkaW9Db250ZXh0LmNwcCAqLywKKwkJCQk4MzFCNjE3NTI0OTlBNTlEMDBDMDdDNzkgLyog
V2ViS2l0T2ZmbGluZUF1ZGlvQ29udGV4dC5oICovLAorCQkJCTgzMUI2MTcyMjQ5OUE1OUEwMEMw
N0M3OSAvKiBXZWJLaXRPZmZsaW5lQXVkaW9Db250ZXh0LmlkbCAqLywKIAkJCSk7CiAJCQlwYXRo
ID0gd2ViYXVkaW87CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwpAQCAtMjk3MzIsNiArMjk3
NjgsNyBAQAogCQkJCUZEMzE2MDdDMTJCMDI2RjcwMEMxQTM1OSAvKiBBdWRpb0J1cy5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJRkQzMTYwN0UxMkIwMjZGNzAwQzFBMzU5IC8qIEF1ZGlvQ2hhbm5lbC5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJRkQzMTYwMDUxMkIwMjY3NjAwQzFBMzU5IC8qIEF1ZGlvQ29u
dGV4dC5oIGluIEhlYWRlcnMgKi8sCisJCQkJODNCRDNDRUUyNDk5OEUwMTAwQkEzRTY3IC8qIEF1
ZGlvQ29udGV4dFN0YXRlLmggaW4gSGVhZGVycyAqLywKIAkJCQlGRDMxNjA3RjEyQjAyNkY3MDBD
MUEzNTkgLyogQXVkaW9EZXN0aW5hdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOUIxMjI5QzQy
M0ZFNEJEMjAwOENBNzUxIC8qIEF1ZGlvRGVzdGluYXRpb25Db2NvYS5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJRkQzMTYwQkQxMkIwMjcyQTAwQzFBMzU5IC8qIEF1ZGlvRGVzdGluYXRpb25NYWMuaCBp
biBIZWFkZXJzICovLApAQCAtMzAzODcsNiArMzA0MjQsNyBAQAogCQkJCTJEMjlFQ0M4MTkyRUND
ODMwMDk4NEI3OCAvKiBEaXNwbGF5UmVmcmVzaE1vbml0b3JNYW5hZ2VyLmggaW4gSGVhZGVycyAq
LywKIAkJCQk2RkNFMUExQTIyNjE4QUJEMDA0RjAzNDMgLyogRGlzcGxheVJ1bi5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJRkQzMTYwOTExMkIwMjZGNzAwQzFBMzU5IC8qIERpc3RhbmNlLmggaW4gSGVh
ZGVycyAqLywKKwkJCQk4MzA0MDI4MzI0OUE3QTYyMDBBOTBEOEQgLyogRGlzdGFuY2VNb2RlbFR5
cGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTg0NzMwRDc3MTI0OEYwQjMwMEQzQTlDOSAvKiBEaXN0
YW50TGlnaHRTb3VyY2UuaCBpbiBIZWFkZXJzICovLAogCQkJCUIyRjM0RkU2MEU4MkY4MTQwMEY2
MjdDRCAvKiBETlMuaCBpbiBIZWFkZXJzICovLAogCQkJCTdFRTY4NDZGMTJEMjZFMzgwMEU3MzIx
NSAvKiBETlNSZXNvbHZlUXVldWVDRk5ldC5oIGluIEhlYWRlcnMgKi8sCkBAIC0zMjQwMCw2ICsz
MjQzOCw3IEBACiAJCQkJQTgwRTZDRkIwQTE5ODlDQTAwN0ZCOEM1IC8qIFBhaXIuaCBpbiBIZWFk
ZXJzICovLAogCQkJCUZEMzE2MEEzMTJCMDI2RjcwMEMxQTM1OSAvKiBQYW5uZXIuaCBpbiBIZWFk
ZXJzICovLAogCQkJCUZEMzE2MDFBMTJCMDI2NzYwMEMxQTM1OSAvKiBQYW5uZXJOb2RlLmggaW4g
SGVhZGVycyAqLywKKwkJCQk4MzA0MDI4MjI0OUE3QTVGMDBBOTBEOEQgLyogUGFubmluZ01vZGVs
VHlwZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTE4ODkwQUYxQUExM0YyNTAwMjZDMzAxIC8qIFBh
cmVudGFsQ29udHJvbHNDb250ZW50RmlsdGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlDRENENDFF
ODFDM0REQjBBMDA5NjVEOTkgLyogUGFyc2VkQ29udGVudFJhbmdlLmggaW4gSGVhZGVycyAqLywK
IAkJCQk0NDc5NTgwNDE2NDNCNDlBMDAxRTBBN0YgLyogUGFyc2VkQ29udGVudFR5cGUuaCBpbiBI
ZWFkZXJzICovLApAQCAtMzM3MjgsNiArMzM3NjcsOCBAQAogCQkJCUE1ODRGRTMwMTg2NENCODQw
MDg0M0IxMCAvKiBXZWJJbmplY3RlZFNjcmlwdE1hbmFnZXIuaCBpbiBIZWFkZXJzICovLAogCQkJ
CUY0ODIyMzExMUUzODY5QjgwMDY2RkM3OSAvKiBXZWJJdGVtUHJvdmlkZXJQYXN0ZWJvYXJkLmgg
aW4gSGVhZGVycyAqLywKIAkJCQkzMUMwRkYyMjBFNENFQjZFMDA3RDZGRTUgLyogV2ViS2l0QW5p
bWF0aW9uRXZlbnQuaCBpbiBIZWFkZXJzICovLAorCQkJCTgzQjFBNzAyMjQ5OTg1RjAwMEZFNTk2
MSAvKiBXZWJLaXRBdWRpb0NvbnRleHQuaCBpbiBIZWFkZXJzICovLAorCQkJCTgzMUI2MTc2MjQ5
OUE1QkIwMEMwN0M3OSAvKiBXZWJLaXRBdWRpb1Bhbm5lck5vZGUuaCBpbiBIZWFkZXJzICovLAog
CQkJCTVERkVCQUI3MTg1OTJCNkQwMEM3NUJFQiAvKiBXZWJLaXRBdmFpbGFiaWxpdHkuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTQ5ODM5MTU5MEYxRTc3NjkwMEMyMzc4MiAvKiBXZWJLaXRDU1NNYXRy
aXguaCBpbiBIZWFkZXJzICovLAogCQkJCTJEMDYyMTQ1MURBNjM5QkEwMEE3RkIyNiAvKiBXZWJL
aXRNZWRpYUtleU1lc3NhZ2VFdmVudC5oIGluIEhlYWRlcnMgKi8sCkBAIC0zMzczNiw2ICszMzc3
Nyw3IEBACiAJCQkJMkQwNjIxNTAxREE2M0E5NDAwQTdGQjI2IC8qIFdlYktpdE1lZGlhS2V5U2Vz
c2lvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJN0M0OEE2RDExOTFDOUQ2NTAwMDI2Njc0IC8qIFdl
YktpdE5hbWVzcGFjZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJN0EyMjczMjEyMEM5RkFGRTAwREIx
REVGIC8qIFdlYktpdE5TSW1hZ2VFeHRyYXMuaCBpbiBIZWFkZXJzICovLAorCQkJCTgzMUI2MTc3
MjQ5OUE1QkYwMEMwN0M3OSAvKiBXZWJLaXRPZmZsaW5lQXVkaW9Db250ZXh0LmggaW4gSGVhZGVy
cyAqLywKIAkJCQlBNURFQkRBNDE2RkI5MDg3MDA4MzZGRTAgLyogV2ViS2l0UGxheWJhY2tUYXJn
ZXRBdmFpbGFiaWxpdHlFdmVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDk0QkQ3OTUwRjU1QzhF
RTAwNzQ3ODI4IC8qIFdlYktpdFBvaW50LmggaW4gSGVhZGVycyAqLywKIAkJCQkzMUMwRkYyNTBF
NENFQjZFMDA3RDZGRTUgLyogV2ViS2l0VHJhbnNpdGlvbkV2ZW50LmggaW4gSGVhZGVycyAqLywK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1dlYkNvcmVCdWlsdGluTmFt
ZXMuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1dlYkNvcmVCdWlsdGluTmFtZXMuaApp
bmRleCA0OTk3YWI5OTNjYjc5NTQ1NzVhODQzMTdkNjljMjBjY2VjNmE3ZDA5Li5mOTE5N2MyNmFl
OWE0YzM5YzkyMjNiNTQxZDU5ZmJjMGE4MjBlOTljIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9XZWJDb3JlQnVpbHRpbk5hbWVzLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvV2ViQ29yZUJ1aWx0aW5OYW1lcy5oCkBAIC00OSw2ICs0OSw3IEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKICAgICBtYWNybyhBcHBsZVBheVNldHVwRmVhdHVyZSkgXAogICAgIG1h
Y3JvKEF0dGFjaG1lbnRFbGVtZW50KSBcCiAgICAgbWFjcm8oQXVkaW8pIFwKKyAgICBtYWNybyhB
dWRpb0NvbnRleHQpIFwKICAgICBtYWNybyhBdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2Up
IFwKICAgICBtYWNybyhBdXRoZW50aWNhdG9yQXR0ZXN0YXRpb25SZXNwb25zZSkgXAogICAgIG1h
Y3JvKEF1dGhlbnRpY2F0b3JSZXNwb25zZSkgXApAQCAtMTY1LDkgKzE2NiwxMSBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAgICAgbWFjcm8oTmF2aWdhdG9yQ3JlZGVudGlhbHMpIFwKICAgICBtYWNy
byhOYXZpZ2F0b3JNZWRpYURldmljZXMpIFwKICAgICBtYWNybyhOYXZpZ2F0b3JVc2VyTWVkaWEp
IFwKKyAgICBtYWNybyhPZmZsaW5lQXVkaW9Db250ZXh0KSBcCiAgICAgbWFjcm8oT2Zmc2NyZWVu
Q2FudmFzKSBcCiAgICAgbWFjcm8oT2Zmc2NyZWVuQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEKSBc
CiAgICAgbWFjcm8oUGFpbnRSZW5kZXJpbmdDb250ZXh0MkQpIFwKKyAgICBtYWNybyhQYW5uZXJO
b2RlKSBcCiAgICAgbWFjcm8oUGF5bWVudEFkZHJlc3MpIFwKICAgICBtYWNybyhQYXltZW50TWV0
aG9kQ2hhbmdlRXZlbnQpIFwKICAgICBtYWNybyhQYXltZW50UmVxdWVzdCkgXApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50VGFyZ2V0RmFjdG9yeS5pbiBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9FdmVudFRhcmdldEZhY3RvcnkuaW4KaW5kZXggZmMxZGIyY2UwZTA2NTAwMjhjZDRj
YmNlNDllYmQzMjk0NGIzMmIzNC4uYTE1NGI0NDVhMTNhZDQ3Njk2MjlkOWY3ZDkzNzdhOWRmMTUw
ZjdhYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50VGFyZ2V0RmFjdG9yeS5p
bgorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRUYXJnZXRGYWN0b3J5LmluCkBAIC01Myw2
ICs1Myw3IEBAIFZpZGVvVHJhY2tMaXN0IGNvbmRpdGlvbmFsPVZJREVPCiBWaXN1YWxWaWV3cG9y
dAogV2ViQW5pbWF0aW9uCiBXZWJHUFVEZXZpY2UgY29uZGl0aW9uYWw9V0VCR1BVCitXZWJLaXRB
dWRpb0NvbnRleHQgY29uZGl0aW9uYWw9V0VCX0FVRElPCiBXZWJLaXRNZWRpYUtleVNlc3Npb24g
Y29uZGl0aW9uYWw9TEVHQUNZX0VOQ1JZUFRFRF9NRURJQQogV2ViU29ja2V0CiBXb3JrZXIKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3MueWFtbCBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvU2V0dGluZ3MueWFtbAppbmRleCAyZDZiYzZmZjJlZjBiMDAwZGQ0ZTk4MDZjZWQ2
YzQ4ZmI0NzBiZTNhLi41ODNmYzZmNzk1ZWZjMDcwMmZiMzg0MGRiNGU4MTFiODg2MDlmYTNlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdzLnlhbWwKKysrIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9TZXR0aW5ncy55YW1sCkBAIC0yNTUsNiArMjU1LDggQEAgbG9hZERlZmVy
cmluZ0VuYWJsZWQ6CiAgIGluaXRpYWw6IHRydWUKIHdlYkF1ZGlvRW5hYmxlZDoKICAgaW5pdGlh
bDogZmFsc2UKK21vZGVyblVucHJlZml4ZWRXZWJBdWRpb0VuYWJsZWQ6CisgIGluaXRpYWw6IGZh
bHNlCiBwYWdpbmF0ZUR1cmluZ0xheW91dEVuYWJsZWQ6CiAgIGluaXRpYWw6IGZhbHNlCiBmdWxs
U2NyZWVuRW5hYmxlZDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJu
YWxzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAppbmRleCAwZjVj
MTk3YTI5ODA3ZTc2M2NhZWJmMDkwMmE0Y2Y5YTYyMDhiOTdjLi42MmZhZmJlZDBjY2NlNzc0M2Nl
MmQ0YjE5NzNlMDE3ODIxODQzY2U2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5n
L0ludGVybmFscy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3Bw
CkBAIC0yODAsNiArMjgwLDcgQEAKIAogI2lmIEVOQUJMRShXRUJfQVVESU8pCiAjaW5jbHVkZSAi
QXVkaW9Db250ZXh0LmgiCisjaW5jbHVkZSAiV2ViS2l0QXVkaW9Db250ZXh0LmgiCiAjZW5kaWYK
IAogI2lmIEVOQUJMRShNRURJQV9TRVNTSU9OKQpAQCAtNDI5MCwyMiArNDI5MSwyOSBAQCB2b2lk
IEludGVybmFsczo6c2VuZE1lZGlhQ29udHJvbEV2ZW50KE1lZGlhQ29udHJvbEV2ZW50IGV2ZW50
KQogI2VuZGlmIC8vIEVOQUJMRShNRURJQV9TRVNTSU9OKQogCiAjaWYgRU5BQkxFKFdFQl9BVURJ
TykKLXZvaWQgSW50ZXJuYWxzOjpzZXRBdWRpb0NvbnRleHRSZXN0cmljdGlvbnMoQXVkaW9Db250
ZXh0JiBjb250ZXh0LCBTdHJpbmdWaWV3IHJlc3RyaWN0aW9uc1N0cmluZykKK3ZvaWQgSW50ZXJu
YWxzOjpzZXRBdWRpb0NvbnRleHRSZXN0cmljdGlvbnMoY29uc3QgVmFyaWFudDxSZWZQdHI8QXVk
aW9Db250ZXh0PiwgUmVmUHRyPFdlYktpdEF1ZGlvQ29udGV4dD4+JiBjb250ZXh0VmFyaWFudCwg
U3RyaW5nVmlldyByZXN0cmljdGlvbnNTdHJpbmcpCiB7Ci0gICAgQXVkaW9Db250ZXh0OjpCZWhh
dmlvclJlc3RyaWN0aW9ucyByZXN0cmljdGlvbnMgPSBjb250ZXh0LmJlaGF2aW9yUmVzdHJpY3Rp
b25zKCk7Ci0gICAgY29udGV4dC5yZW1vdmVCZWhhdmlvclJlc3RyaWN0aW9uKHJlc3RyaWN0aW9u
cyk7CisgICAgUmVmUHRyPEF1ZGlvQ29udGV4dEJhc2U+IGNvbnRleHQ7CisgICAgc3dpdGNoT24o
Y29udGV4dFZhcmlhbnQsIFsmXShSZWZQdHI8QXVkaW9Db250ZXh0PiBlbnRyeSkgeworICAgICAg
ICBjb250ZXh0ID0gZW50cnk7CisgICAgfSwgWyZdKFJlZlB0cjxXZWJLaXRBdWRpb0NvbnRleHQ+
IGVudHJ5KSB7CisgICAgICAgIGNvbnRleHQgPSBlbnRyeTsKKyAgICB9KTsKKworICAgIGF1dG8g
cmVzdHJpY3Rpb25zID0gY29udGV4dC0+YmVoYXZpb3JSZXN0cmljdGlvbnMoKTsKKyAgICBjb250
ZXh0LT5yZW1vdmVCZWhhdmlvclJlc3RyaWN0aW9uKHJlc3RyaWN0aW9ucyk7CiAKLSAgICByZXN0
cmljdGlvbnMgPSBBdWRpb0NvbnRleHQ6Ok5vUmVzdHJpY3Rpb25zOworICAgIHJlc3RyaWN0aW9u
cyA9IEF1ZGlvQ29udGV4dEJhc2U6Ok5vUmVzdHJpY3Rpb25zOwogCiAgICAgZm9yIChTdHJpbmdW
aWV3IHJlc3RyaWN0aW9uU3RyaW5nIDogcmVzdHJpY3Rpb25zU3RyaW5nLnNwbGl0KCcsJykpIHsK
ICAgICAgICAgaWYgKGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKHJlc3RyaWN0aW9uU3Ry
aW5nLCAibm9yZXN0cmljdGlvbnMiKSkKLSAgICAgICAgICAgIHJlc3RyaWN0aW9ucyB8PSBBdWRp
b0NvbnRleHQ6Ok5vUmVzdHJpY3Rpb25zOworICAgICAgICAgICAgcmVzdHJpY3Rpb25zIHw9IEF1
ZGlvQ29udGV4dEJhc2U6Ok5vUmVzdHJpY3Rpb25zOwogICAgICAgICBpZiAoZXF1YWxMZXR0ZXJz
SWdub3JpbmdBU0NJSUNhc2UocmVzdHJpY3Rpb25TdHJpbmcsICJyZXF1aXJldXNlcmdlc3R1cmVm
b3JhdWRpb3N0YXJ0IikpCi0gICAgICAgICAgICByZXN0cmljdGlvbnMgfD0gQXVkaW9Db250ZXh0
OjpSZXF1aXJlVXNlckdlc3R1cmVGb3JBdWRpb1N0YXJ0UmVzdHJpY3Rpb247CisgICAgICAgICAg
ICByZXN0cmljdGlvbnMgfD0gQXVkaW9Db250ZXh0QmFzZTo6UmVxdWlyZVVzZXJHZXN0dXJlRm9y
QXVkaW9TdGFydFJlc3RyaWN0aW9uOwogICAgICAgICBpZiAoZXF1YWxMZXR0ZXJzSWdub3JpbmdB
U0NJSUNhc2UocmVzdHJpY3Rpb25TdHJpbmcsICJyZXF1aXJlcGFnZWNvbnNlbnRmb3JhdWRpb3N0
YXJ0IikpCi0gICAgICAgICAgICByZXN0cmljdGlvbnMgfD0gQXVkaW9Db250ZXh0OjpSZXF1aXJl
UGFnZUNvbnNlbnRGb3JBdWRpb1N0YXJ0UmVzdHJpY3Rpb247CisgICAgICAgICAgICByZXN0cmlj
dGlvbnMgfD0gQXVkaW9Db250ZXh0QmFzZTo6UmVxdWlyZVBhZ2VDb25zZW50Rm9yQXVkaW9TdGFy
dFJlc3RyaWN0aW9uOwogICAgIH0KLSAgICBjb250ZXh0LmFkZEJlaGF2aW9yUmVzdHJpY3Rpb24o
cmVzdHJpY3Rpb25zKTsKKyAgICBjb250ZXh0LT5hZGRCZWhhdmlvclJlc3RyaWN0aW9uKHJlc3Ry
aWN0aW9ucyk7CiB9CiAKIHZvaWQgSW50ZXJuYWxzOjp1c2VNb2NrQXVkaW9EZXN0aW5hdGlvbkNv
Y29hKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmggYi9T
b3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5oCmluZGV4IDM0MjI3OTk0ZDY0ZmFkNmY2
MjlkMzgyNjBhNzFiMGE1Njk4OTJiZGEuLmMxZmFkOWJmMjk1Yzk2Y2FkYmI4MmUxZDZiNTA3MzY0
YzMxYmQwMTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaApAQCAtMTA4LDYgKzEwOCw3
IEBAIGNsYXNzIFVuc3VzcGVuZGFibGVBY3RpdmVET01PYmplY3Q7CiBjbGFzcyBWb2lkQ2FsbGJh
Y2s7CiBjbGFzcyBXZWJBbmltYXRpb247CiBjbGFzcyBXZWJHTFJlbmRlcmluZ0NvbnRleHQ7Citj
bGFzcyBXZWJLaXRBdWRpb0NvbnRleHQ7CiBjbGFzcyBXaW5kb3dQcm94eTsKIGNsYXNzIFhNTEh0
dHBSZXF1ZXN0OwogCkBAIC02NzQsNyArNjc1LDcgQEAgcHVibGljOgogI2VuZGlmCiAKICNpZiBF
TkFCTEUoV0VCX0FVRElPKQotICAgIHZvaWQgc2V0QXVkaW9Db250ZXh0UmVzdHJpY3Rpb25zKEF1
ZGlvQ29udGV4dCYsIFN0cmluZ1ZpZXcgcmVzdHJpY3Rpb25zU3RyaW5nKTsKKyAgICB2b2lkIHNl
dEF1ZGlvQ29udGV4dFJlc3RyaWN0aW9ucyhjb25zdCBWYXJpYW50PFJlZlB0cjxBdWRpb0NvbnRl
eHQ+LCBSZWZQdHI8V2ViS2l0QXVkaW9Db250ZXh0Pj4mLCBTdHJpbmdWaWV3IHJlc3RyaWN0aW9u
c1N0cmluZyk7CiAgICAgdm9pZCB1c2VNb2NrQXVkaW9EZXN0aW5hdGlvbkNvY29hKCk7CiAjZW5k
aWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaWRsIGIv
U291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaWRsCmluZGV4IDg3YTc0YjVmOWFkZTk5
OGI1MjNhMTRlOWZhNTEzNjU1ZTg4ODE3MmIuLjJhMzNjOWFhNTFlYWI1Yjc2NjhmNjA5Njg0YTIx
MWE3YjdkNWMzZTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxz
LmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5pZGwKQEAgLTY3Niw3
ICs2NzYsNyBAQCBlbnVtIENvbXBvc2l0aW5nUG9saWN5IHsKICAgICBbQ29uZGl0aW9uYWw9VklE
RU8sIE1heVRocm93RXhjZXB0aW9uXSB2b2lkIHNldE1lZGlhU2Vzc2lvblJlc3RyaWN0aW9ucyhE
T01TdHJpbmcgbWVkaWFUeXBlLCBET01TdHJpbmcgcmVzdHJpY3Rpb25zKTsKICAgICBbQ29uZGl0
aW9uYWw9VklERU8sIE1heVRocm93RXhjZXB0aW9uXSBET01TdHJpbmcgbWVkaWFTZXNzaW9uUmVz
dHJpY3Rpb25zKERPTVN0cmluZyBtZWRpYVR5cGUpOwogICAgIFtDb25kaXRpb25hbD1WSURFT10g
dm9pZCBzZXRNZWRpYUVsZW1lbnRSZXN0cmljdGlvbnMoSFRNTE1lZGlhRWxlbWVudCBlbGVtZW50
LCBET01TdHJpbmcgcmVzdHJpY3Rpb25zKTsKLSAgICBbQ29uZGl0aW9uYWw9V0VCX0FVRElPXSB2
b2lkIHNldEF1ZGlvQ29udGV4dFJlc3RyaWN0aW9ucyhBdWRpb0NvbnRleHQgY29udGV4dCwgRE9N
U3RyaW5nIHJlc3RyaWN0aW9ucyk7CisgICAgW0NvbmRpdGlvbmFsPVdFQl9BVURJT10gdm9pZCBz
ZXRBdWRpb0NvbnRleHRSZXN0cmljdGlvbnMoKEF1ZGlvQ29udGV4dCBvciBXZWJLaXRBdWRpb0Nv
bnRleHQpIGNvbnRleHQsIERPTVN0cmluZyByZXN0cmljdGlvbnMpOwogICAgIFtDb25kaXRpb25h
bD1WSURFTywgTWF5VGhyb3dFeGNlcHRpb25dIHZvaWQgcG9zdFJlbW90ZUNvbnRyb2xDb21tYW5k
KERPTVN0cmluZyBjb21tYW5kLCBvcHRpb25hbCB1bnJlc3RyaWN0ZWQgZmxvYXQgYXJndW1lbnQg
PSAwKTsKICAgICBbQ29uZGl0aW9uYWw9V0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUXSB2b2lkIHNl
dE1vY2tNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyRW5hYmxlZChib29sZWFuIGVuYWJsZWQpOwog
ICAgIFtDb25kaXRpb25hbD1XSVJFTEVTU19QTEFZQkFDS19UQVJHRVQsIE1heVRocm93RXhjZXB0
aW9uXSB2b2lkIHNldE1vY2tNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyU3RhdGUoRE9NU3RyaW5n
IGRldmljZU5hbWUsIERPTVN0cmluZyBkZXZpY2VTdGF0ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9XZWJQcmVmZXJlbmNlcy55YW1sIGIvU291cmNlL1dlYktpdC9TaGFyZWQv
V2ViUHJlZmVyZW5jZXMueWFtbAppbmRleCBmYWQxYTlmNTg4NjIxZTk1ZTE5YjFhNGZlNzRlYTMw
MjM2NDI0MTNkLi41MjM1Y2U3MWZmN2E5MzJlMTIzOGM2NDAxOWRhMzEyYzU5MTZkYjZmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQcmVmZXJlbmNlcy55YW1sCisrKyBiL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL1dlYlByZWZlcmVuY2VzLnlhbWwKQEAgLTMzNCw2ICszMzQsMTQg
QEAgV2ViQXVkaW9FbmFibGVkOgogICBkZWZhdWx0VmFsdWU6IHRydWUKICAgY29uZGl0aW9uOiBF
TkFCTEUoV0VCX0FVRElPKQogCitNb2Rlcm5VbnByZWZpeGVkV2ViQXVkaW9FbmFibGVkOgorICB0
eXBlOiBib29sCisgIGRlZmF1bHRWYWx1ZTogZmFsc2UKKyAgY29uZGl0aW9uOiBFTkFCTEUoV0VC
X0FVRElPKQorICBodW1hblJlYWRhYmxlTmFtZTogIk1vZGVybiBXZWJBdWRpbyBBUEkiCisgIGh1
bWFuUmVhZGFibGVEZXNjcmlwdGlvbjogIk1vZGVybiBhbmQgdW5wcmVmaXhlZCBXZWJBdWRpbyBB
UEkiCisgIGNhdGVnb3J5OiBleHBlcmltZW50YWwKKwogQXR0YWNobWVudEVsZW1lbnRFbmFibGVk
OgogICB0eXBlOiBib29sCiAgIGRlZmF1bHRWYWx1ZTogZmFsc2UKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViUHJlZmVyZW5jZUtleXNQcml2YXRlLmggYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlByZWZlcmVuY2VLZXlzUHJpdmF0ZS5o
CmluZGV4IDE1NjQ0MWU3Mjg5YzBkM2RlMjQ5ODA1ODQ3NDg0NDc0OTI4OGU2MjMuLjhhMjNlMTM0
NTBmYmJhYWZmMWYzMjIzOWYzM2Y4M2Q2OGYyNjI1OTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViUHJlZmVyZW5jZUtleXNQcml2YXRlLmgKKysrIGIvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJQcmVmZXJlbmNlS2V5c1ByaXZhdGUuaApA
QCAtMTE4LDYgKzExOCw3IEBACiAjZGVmaW5lIFdlYktpdENvbnRlbnRDaGFuZ2VPYnNlcnZlckVu
YWJsZWRQcmVmZXJlbmNlS2V5IEAiV2ViS2l0Q29udGVudENoYW5nZU9ic2VydmVyRW5hYmxlZCIK
ICNkZWZpbmUgV2ViS2l0U2hvd1JlcGFpbnRDb3VudGVyUHJlZmVyZW5jZUtleSBAIldlYktpdFNo
b3dSZXBhaW50Q291bnRlciIKICNkZWZpbmUgV2ViS2l0V2ViQXVkaW9FbmFibGVkUHJlZmVyZW5j
ZUtleSBAIldlYktpdFdlYkF1ZGlvRW5hYmxlZCIKKyNkZWZpbmUgV2ViS2l0TW9kZXJuVW5wcmVm
aXhlZFdlYkF1ZGlvRW5hYmxlZFByZWZlcmVuY2VLZXkgQCJXZWJLaXRNb2Rlcm5VbnByZWZpeGVk
V2ViQXVkaW9FbmFibGVkIgogI2RlZmluZSBXZWJLaXRXZWJHTEVuYWJsZWRQcmVmZXJlbmNlS2V5
IEAiV2ViS2l0V2ViR0xFbmFibGVkIgogI2RlZmluZSBXZWJLaXRXZWJHTDJFbmFibGVkUHJlZmVy
ZW5jZUtleSBAIldlYktpdFdlYkdMMkVuYWJsZWQiCiAjZGVmaW5lIFdlYktpdFdlYkdQVUVuYWJs
ZWRQcmVmZXJlbmNlS2V5IEAiV2ViS2l0V2ViR1BVRW5hYmxlZCIKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViUHJlZmVyZW5jZXMubW0gYi9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlByZWZlcmVuY2VzLm1tCmluZGV4IGI4NTI4ZDJlMDdi
OWM2NzAyYjBlNTZjNDRhMWRhNDkwZWU3NGNjY2YuLjVjOGQzY2ZmOGZkMjdhYzU0ODM2OWQ1M2Qx
Y2UzYzkyM2M5NjFiNTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZp
ZXcvV2ViUHJlZmVyZW5jZXMubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmll
dy9XZWJQcmVmZXJlbmNlcy5tbQpAQCAtNTc0LDYgKzU3NCw3IEBAICsgKHZvaWQpaW5pdGlhbGl6
ZQogICAgICAgICBATk8sIFdlYktpdERpYWdub3N0aWNMb2dnaW5nRW5hYmxlZEtleSwKICAgICAg
ICAgQChXZWJBbGxvd0FsbFN0b3JhZ2UpLCBXZWJLaXRTdG9yYWdlQmxvY2tpbmdQb2xpY3lLZXks
CiAgICAgICAgIEBOTywgV2ViS2l0UGx1Z0luU25hcHNob3R0aW5nRW5hYmxlZFByZWZlcmVuY2VL
ZXksCisgICAgICAgIEBOTywgV2ViS2l0TW9kZXJuVW5wcmVmaXhlZFdlYkF1ZGlvRW5hYmxlZFBy
ZWZlcmVuY2VLZXksCiAKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgICAgICBAWUVTLCBX
ZWJLaXRDb250ZW50Q2hhbmdlT2JzZXJ2ZXJFbmFibGVkUHJlZmVyZW5jZUtleSwKQEAgLTIxNDgs
NiArMjE0OSwxNiBAQCAtICh2b2lkKXNldFdlYkF1ZGlvRW5hYmxlZDooQk9PTCllbmFibGVkCiAg
ICAgW3NlbGYgX3NldEJvb2xWYWx1ZTplbmFibGVkIGZvcktleTpXZWJLaXRXZWJBdWRpb0VuYWJs
ZWRQcmVmZXJlbmNlS2V5XTsKIH0KIAorLSAoQk9PTCltb2Rlcm5VbnByZWZpeGVkV2ViQXVkaW9F
bmFibGVkCit7CisgICAgcmV0dXJuIFtzZWxmIF9ib29sVmFsdWVGb3JLZXk6V2ViS2l0TW9kZXJu
VW5wcmVmaXhlZFdlYkF1ZGlvRW5hYmxlZFByZWZlcmVuY2VLZXldOworfQorCistICh2b2lkKXNl
dE1vZGVyblVucHJlZml4ZWRXZWJBdWRpb0VuYWJsZWQ6KEJPT0wpZW5hYmxlZAoreworICAgIFtz
ZWxmIF9zZXRCb29sVmFsdWU6ZW5hYmxlZCBmb3JLZXk6V2ViS2l0TW9kZXJuVW5wcmVmaXhlZFdl
YkF1ZGlvRW5hYmxlZFByZWZlcmVuY2VLZXldOworfQorCiAtIChCT09MKXN1YnBpeGVsQ1NTT01F
bGVtZW50TWV0cmljc0VuYWJsZWQKIHsKICAgICByZXR1cm4gW3NlbGYgX2Jvb2xWYWx1ZUZvcktl
eTpXZWJLaXRTdWJwaXhlbENTU09NRWxlbWVudE1ldHJpY3NFbmFibGVkUHJlZmVyZW5jZUtleV07
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlByZWZlcmVu
Y2VzUHJpdmF0ZS5oIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJQcmVmZXJl
bmNlc1ByaXZhdGUuaAppbmRleCA4Yzg2NmViOGE4OWQ3Yjg4NTc0NDg1YTYxNzU2YWNmYmZmYmRh
M2FkLi5hNDUwOTQ3MWEwMDM0NWM0ZDQ3ZTdkNWNjMmRkMGQ0ZjNjN2ZkYzVlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlByZWZlcmVuY2VzUHJpdmF0ZS5o
CisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViUHJlZmVyZW5jZXNQcml2
YXRlLmgKQEAgLTI2OSw2ICsyNjksOSBAQCBleHRlcm4gTlNTdHJpbmcgKldlYlByZWZlcmVuY2Vz
Q2FjaGVNb2RlbENoYW5nZWRJbnRlcm5hbE5vdGlmaWNhdGlvbiBXRUJLSVRfREVQUgogLSAoQk9P
TCl3ZWJBdWRpb0VuYWJsZWQ7CiAtICh2b2lkKXNldFdlYkF1ZGlvRW5hYmxlZDooQk9PTCllbmFi
bGVkOwogCistIChCT09MKW1vZGVyblVucHJlZml4ZWRXZWJBdWRpb0VuYWJsZWQ7CistICh2b2lk
KXNldE1vZGVyblVucHJlZml4ZWRXZWJBdWRpb0VuYWJsZWQ6KEJPT0wpZW5hYmxlZDsKKwogLSAo
Qk9PTClzdWJwaXhlbENTU09NRWxlbWVudE1ldHJpY3NFbmFibGVkOwogLSAodm9pZClzZXRTdWJw
aXhlbENTU09NRWxlbWVudE1ldHJpY3NFbmFibGVkOihCT09MKWVuYWJsZWQ7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmlldy5tbSBiL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQppbmRleCAyOTljYjFjYTc5MzRiYThh
YWEzZDYyMGNmNjE1OTRiZTY0MGIwMzlhLi44NTEyMTMyNTIwOGI4ZWRhNGIyOTk4YzJhOTEyNWJi
YjFhMzY5ZjM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dl
YlZpZXcubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3Lm1t
CkBAIC0zMjY3LDYgKzMyNjcsNyBAQCAtICh2b2lkKV9wcmVmZXJlbmNlc0NoYW5nZWQ6KFdlYlBy
ZWZlcmVuY2VzICopcHJlZmVyZW5jZXMKIAogI2lmIEVOQUJMRShXRUJfQVVESU8pCiAgICAgc2V0
dGluZ3Muc2V0V2ViQXVkaW9FbmFibGVkKFtwcmVmZXJlbmNlcyB3ZWJBdWRpb0VuYWJsZWRdKTsK
KyAgICBzZXR0aW5ncy5zZXRNb2Rlcm5VbnByZWZpeGVkV2ViQXVkaW9FbmFibGVkKFtwcmVmZXJl
bmNlcyBtb2Rlcm5VbnByZWZpeGVkV2ViQXVkaW9FbmFibGVkXSk7CiAjZW5kaWYKIAogI2lmIEVO
QUJMRShGVUxMU0NSRUVOX0FQSSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2lu
L1dlYlByZWZlcmVuY2VLZXlzUHJpdmF0ZS5oIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2Vi
UHJlZmVyZW5jZUtleXNQcml2YXRlLmgKaW5kZXggODA0NTMxYTQ2YmZiNTcyM2Y2ZWQxY2FjMzJm
OTU4ZjEzM2ZlYzI4My4uMmEyMTIxYWRiOTY4Njk4NDEyMWMwZTRiYThkYWZmY2E3YmNjNmNhYiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViUHJlZmVyZW5jZUtleXNQcml2
YXRlLmgKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViUHJlZmVyZW5jZUtleXNQcml2
YXRlLmgKQEAgLTc1LDYgKzc1LDcgQEAKICNkZWZpbmUgV2ViS2l0TG9jYWxTdG9yYWdlRGF0YWJh
c2VQYXRoUHJlZmVyZW5jZUtleSAiV2ViS2l0TG9jYWxTdG9yYWdlRGF0YWJhc2VQYXRoIgogI2Rl
ZmluZSBXZWJLaXRIeXBlcmxpbmtBdWRpdGluZ0VuYWJsZWRQcmVmZXJlbmNlS2V5ICJXZWJLaXRI
eXBlcmxpbmtBdWRpdGluZ0VuYWJsZWQiCiAjZGVmaW5lIFdlYktpdFdlYkF1ZGlvRW5hYmxlZFBy
ZWZlcmVuY2VLZXkgIldlYktpdFdlYkF1ZGlvRW5hYmxlZCIKKyNkZWZpbmUgV2ViS2l0TW9kZXJu
VW5wcmVmaXhlZFdlYkF1ZGlvRW5hYmxlZFByZWZlcmVuY2VLZXkgIldlYktpdFdlYkF1ZGlvRW5h
YmxlZCIKICNkZWZpbmUgV2ViS2l0U2hvdWxkRGlzcGxheVN1YnRpdGxlc1ByZWZlcmVuY2VLZXkg
IldlYktpdFNob3VsZERpc3BsYXlTdWJ0aXRsZXMiCiAjZGVmaW5lIFdlYktpdFNob3VsZERpc3Bs
YXlDYXB0aW9uc1ByZWZlcmVuY2VLZXkgIldlYktpdFNob3VsZERpc3BsYXlDYXB0aW9ucyIKICNk
ZWZpbmUgV2ViS2l0U2hvdWxkRGlzcGxheVRleHREZXNjcmlwdGlvbnNQcmVmZXJlbmNlS2V5ICJX
ZWJLaXRTaG91bGREaXNwbGF5VGV4dERlc2NyaXB0aW9ucyIKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvd2luL1dlYlByZWZlcmVuY2VzLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
d2luL1dlYlByZWZlcmVuY2VzLmNwcAppbmRleCA1ODI2ZTQxOTU4YzAzMzg4OTIzY2YzODllYjdk
MmE4NjVmMzdmMTUzLi45M2RlOGEzMjBhYTE1ODM0OWEwNzIwNWQwNGUyZWE0YzQxNDlmMjk0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJQcmVmZXJlbmNlcy5jcHAKKysr
IGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViUHJlZmVyZW5jZXMuY3BwCkBAIC0yMzIsNiAr
MjMyLDcgQEAgdm9pZCBXZWJQcmVmZXJlbmNlczo6aW5pdGlhbGl6ZURlZmF1bHRTZXR0aW5ncygp
CiAgICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVmYXVsdHMsIENGU1RSKFdlYktpdEphdmFTY3Jp
cHRSdW50aW1lRmxhZ3NQcmVmZXJlbmNlS2V5KSwgQ0ZTVFIoIjAiKSk7CiAgICAgQ0ZEaWN0aW9u
YXJ5QWRkVmFsdWUoZGVmYXVsdHMsIENGU1RSKFdlYktpdFdlYlNlY3VyaXR5RW5hYmxlZFByZWZl
cmVuY2VLZXkpLCBrQ0ZCb29sZWFuVHJ1ZSk7CiAgICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVm
YXVsdHMsIENGU1RSKFdlYktpdEFsbG93VG9wTmF2aWdhdGlvblRvRGF0YVVSTHNQcmVmZXJlbmNl
S2V5KSwga0NGQm9vbGVhbkZhbHNlKTsKKyAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShkZWZhdWx0
cywgQ0ZTVFIoV2ViS2l0V2ViQXVkaW9FbmFibGVkUHJlZmVyZW5jZUtleSksIGtDRkJvb2xlYW5G
YWxzZSk7CiAgICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVmYXVsdHMsIENGU1RSKFdlYktpdEFs
bG93VW5pdmVyc2FsQWNjZXNzRnJvbUZpbGVVUkxzUHJlZmVyZW5jZUtleSksIGtDRkJvb2xlYW5G
YWxzZSk7CiAgICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVmYXVsdHMsIENGU1RSKFdlYktpdEFs
bG93RmlsZUFjY2Vzc0Zyb21GaWxlVVJMc1ByZWZlcmVuY2VLZXkpLCBrQ0ZCb29sZWFuVHJ1ZSk7
CiAgICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVmYXVsdHMsIENGU1RSKFdlYktpdEphdmFTY3Jp
cHRDYW5BY2Nlc3NDbGlwYm9hcmRQcmVmZXJlbmNlS2V5KSwga0NGQm9vbGVhbkZhbHNlKTsKQEAg
LTI0OTksMyArMjUwMCwxNyBAQCBIUkVTVUxUIFdlYlByZWZlcmVuY2VzOjpzZXRBbGxvd1RvcE5h
dmlnYXRpb25Ub0RhdGFVUkxzKEJPT0wgYWxsb3dBY2Nlc3MpCiAgICAgc2V0Qm9vbFZhbHVlKFdl
YktpdEFsbG93VG9wTmF2aWdhdGlvblRvRGF0YVVSTHNQcmVmZXJlbmNlS2V5LCBhbGxvd0FjY2Vz
cyk7CiAgICAgcmV0dXJuIFNfT0s7CiB9CisKK0hSRVNVTFQgV2ViUHJlZmVyZW5jZXM6Om1vZGVy
blVucHJlZml4ZWRXZWJBdWRpb0VuYWJsZWQoX091dF8gQk9PTCogZW5hYmxlZCkKK3sKKyAgICBp
ZiAoIWVuYWJsZWQpCisgICAgICAgIHJldHVybiBFX1BPSU5URVI7CisgICAgKmVuYWJsZWQgPSBi
b29sVmFsdWVGb3JLZXkoV2ViS2l0V2ViQXVkaW9FbmFibGVkUHJlZmVyZW5jZUtleSk7CisgICAg
cmV0dXJuIFNfT0s7Cit9CisKK0hSRVNVTFQgV2ViUHJlZmVyZW5jZXM6OnNldE1vZGVyblVucHJl
Zml4ZWRXZWJBdWRpb0VuYWJsZWQoQk9PTCBlbmFibGVkKQoreworICAgIHNldEJvb2xWYWx1ZShX
ZWJLaXRXZWJBdWRpb0VuYWJsZWRQcmVmZXJlbmNlS2V5LCBlbmFibGVkKTsKKyAgICByZXR1cm4g
U19PSzsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlByZWZlcmVu
Y2VzLmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJQcmVmZXJlbmNlcy5oCmluZGV4IGY3
ZmU3Njg0MmI0ZGQyMzI5ODFlZmZmNzIxYzFmYTRiMTA5NzllOTguLjE0NTQxZTViOThkYWU5YjQ3
MWRmOTI2MTRkNjk3NzE5ZmVlZjQ0M2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kv
d2luL1dlYlByZWZlcmVuY2VzLmgKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViUHJl
ZmVyZW5jZXMuaApAQCAtMzA1LDYgKzMwNSw4IEBAIHB1YmxpYzoKICAgICAvLyBJV2ViUHJlZmVy
ZW5jZXNQcml2YXRlOAogICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBhbGxv
d1RvcE5hdmlnYXRpb25Ub0RhdGFVUkxzKF9PdXRfIEJPT0wqKTsKICAgICB2aXJ0dWFsIEhSRVNV
TFQgU1RETUVUSE9EQ0FMTFRZUEUgc2V0QWxsb3dUb3BOYXZpZ2F0aW9uVG9EYXRhVVJMcyhCT09M
KTsKKyAgICB2aXJ0dWFsIE5SRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgbW9kZXJuVW5wcmVmaXhl
ZFdlYkF1ZGlvRW5hYmxlZChfT3V0XyBCT09MKik7CisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1F
VEhPRENBTExUWVBFIHNldE1vZGVyblVucHJlZml4ZWRXZWJBdWRpb0VuYWJsZWQoQk9PTCk7CiAK
ICAgICAvLyBXZWJQcmVmZXJlbmNlcwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5
L3dpbi9XZWJWaWV3LmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlZpZXcuY3BwCmlu
ZGV4IDI4ZjI5M2Q4YzdmN2RhNjliOGUxODEzYWY4OGQxNzllOGZhZmIyZjYuLmRiMjkxMTZiZmMy
NTk5NTJjZTZkZjMzZjM3MzY2MjlhNjdiOWJhMzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvd2luL1dlYlZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlZp
ZXcuY3BwCkBAIC01NTU2LDYgKzU1NTYsMTEgQEAgSFJFU1VMVCBXZWJWaWV3Ojpub3RpZnlQcmVm
ZXJlbmNlc0NoYW5nZWQoSVdlYk5vdGlmaWNhdGlvbiogbm90aWZpY2F0aW9uKQogCiAjaWYgRU5B
QkxFKFdFQl9BVURJTykKICAgICBzZXR0aW5ncy5zZXRXZWJBdWRpb0VuYWJsZWQodHJ1ZSk7CisK
KyAgICBociA9IHByZWZzUHJpdmF0ZS0+bW9kZXJuVW5wcmVmaXhlZFdlYkF1ZGlvRW5hYmxlZCgm
ZW5hYmxlZCk7CisgICAgaWYgKEZBSUxFRChocikpCisgICAgICAgIHJldHVybiBocjsKKyAgICBz
ZXR0aW5ncy5zZXRNb2Rlcm5VbnByZWZpeGVkV2ViQXVkaW9FbmFibGVkKCEhZW5hYmxlZCk7CiAj
ZW5kaWYgLy8gRU5BQkxFKFdFQl9BVURJTykKIAogI2lmIEVOQUJMRShXRUJHTCkKZGlmZiAtLWdp
dCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9EdW1wUmVuZGVyVHJlZS5tbSBiL1Rvb2xzL0R1
bXBSZW5kZXJUcmVlL21hYy9EdW1wUmVuZGVyVHJlZS5tbQppbmRleCBiODFhMWMzYzM1Mzc5YmQw
OTAxZWU5MTA3ZDlkZWU3NzU3ZGRhZTM0Li44N2MwNGQ5MmZhNGNlNDcyMjE2ZThjMzhmYmVlOWJi
ZjcxYTMyZDk5IDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvRHVtcFJlbmRl
clRyZWUubW0KKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0R1bXBSZW5kZXJUcmVlLm1t
CkBAIC05NzksNiArOTc5LDcgQEAgc3RhdGljIHZvaWQgcmVzZXRXZWJQcmVmZXJlbmNlc1RvQ29u
c2lzdGVudFZhbHVlcygpCiAjZW5kaWYKIAogICAgIFtwcmVmZXJlbmNlcyBzZXRXZWJBdWRpb0Vu
YWJsZWQ6WUVTXTsKKyAgICBbcHJlZmVyZW5jZXMgc2V0TW9kZXJuVW5wcmVmaXhlZFdlYkF1ZGlv
RW5hYmxlZDpZRVNdOwogICAgIFtwcmVmZXJlbmNlcyBzZXRNZWRpYVNvdXJjZUVuYWJsZWQ6WUVT
XTsKICAgICBbcHJlZmVyZW5jZXMgc2V0U291cmNlQnVmZmVyQ2hhbmdlVHlwZUVuYWJsZWQ6WUVT
XTsKIApkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL0R1bXBSZW5kZXJUcmVl
LmNwcCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9EdW1wUmVuZGVyVHJlZS5jcHAKaW5kZXgg
MGIzN2FkNDVmZTE4YjJhOTQ2NWFjMzU3MjNiY2RjZTY5NTZmNjM2Mi4uZDBiOWQ4YzdlNzIwZmQ4
MzBjNmI2ZjBjYzA1ZDA1Yjk5MzVkZjA0OCAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRy
ZWUvd2luL0R1bXBSZW5kZXJUcmVlLmNwcAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS93aW4v
RHVtcFJlbmRlclRyZWUuY3BwCkBAIC04MzYsNiArODM2LDcgQEAgc3RhdGljIHZvaWQgcmVzZXRX
ZWJQcmVmZXJlbmNlc1RvQ29uc2lzdGVudFZhbHVlcyhJV2ViUHJlZmVyZW5jZXMqIHByZWZlcmVu
Y2VzKQogI2VuZGlmCiAKICAgICBwcmVmc1ByaXZhdGUtPnNldEFsbG93VG9wTmF2aWdhdGlvblRv
RGF0YVVSTHMoVFJVRSk7CisgICAgcHJlZnNQcml2YXRlLT5zZXRNb2Rlcm5VbnByZWZpeGVkV2Vi
QXVkaW9FbmFibGVkKFRSVUUpOwogICAgIHByZWZzUHJpdmF0ZS0+c2V0QWxsb3dVbml2ZXJzYWxB
Y2Nlc3NGcm9tRmlsZVVSTHMoVFJVRSk7CiAgICAgcHJlZnNQcml2YXRlLT5zZXRBbGxvd0ZpbGVB
Y2Nlc3NGcm9tRmlsZVVSTHMoVFJVRSk7CiAgICAgcHJlZmVyZW5jZXMtPnNldFN0YW5kYXJkRm9u
dEZhbWlseShzdGFuZGFyZEZhbWlseSk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2MvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0NoYW5nZUxvZwppbmRl
eCA2M2ExYjc5MjFlMDBlYzFlNGI4ZTY0ODQ3NzU5ZWJiOWM1NzI3OGZkLi5mZTRkZmI5ZDAwNjkz
MzExNjVkMWEyNzFkYzg0ZWY4MjY4MzM0NDBiIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2MvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwxOCBAQAorMjAyMC0wNi0xNyAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBw
bGUuY29tPgorCisgICAgICAgIEFkZCBleHBlcmltZW50YWwgZmVhdHVyZSBmbGFnIGZvciBtb2Rl
cm4gJiB1bnByZWZpeGVkIFdlYkF1ZGlvIEFQSQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjEzMjY4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgSmVyIE5v
YmxlLgorCisgICAgICAgIFJlYmFzZWxpbmUgYSBmZXcgd2ViLXBsYXRmb3JtLXRlc3RzIG5vdyB0
aGF0IHRoZXkgYXJlIHBhc3Npbmcgb3IgZmFpbGluZyBhdCBhIGxhdGVyIHN0YWdlLgorICAgICAg
ICBUaGlzIGlzIGR1ZSB0byBvdXIgV2ViQXVkaW8gZ2V0dGluZyBwcm9wZXJseSB1bnByZWZpeGVk
IGluIHRoZSBjb250ZXh0IG9mIGxheW91dCB0ZXN0cy4KKworICAgICAgICAqIHdlYi1wbGF0Zm9y
bS10ZXN0cy93ZWJhdWRpby9pZGxoYXJuZXNzLmh0dHBzLndpbmRvdy1leHBlY3RlZC50eHQ6Cisg
ICAgICAgICogd2ViLXBsYXRmb3JtLXRlc3RzL3dlYmF1ZGlvL3RoZS1hdWRpby1hcGkvdGhlLWF1
ZGlvY29udGV4dC1pbnRlcmZhY2UvYXVkaW9jb250ZXh0LWRldGFjaGVkLWV4ZWN1dGlvbi1jb250
ZXh0LnRlbnRhdGl2ZS1leHBlY3RlZC50eHQ6CisgICAgICAgICogd2ViLXBsYXRmb3JtLXRlc3Rz
L3dlYmF1ZGlvL3RoZS1hdWRpby1hcGkvdGhlLWF1ZGlvbm9kZS1pbnRlcmZhY2UvYXVkaW9ub2Rl
LWNvbm5lY3QtbWV0aG9kLWNoYWluaW5nLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiB3ZWItcGxh
dGZvcm0tdGVzdHMvd2ViYXVkaW8vdGhlLWF1ZGlvLWFwaS90aGUtb2ZmbGluZWF1ZGlvY29udGV4
dC1pbnRlcmZhY2Uvb2ZmbGluZWF1ZGlvY29udGV4dC1kZXRhY2hlZC1leGVjdXRpb24tY29udGV4
dC50ZW50YXRpdmUtZXhwZWN0ZWQudHh0OgorCiAyMDIwLTA2LTE3ICBEYXJyeWwgUG9ndWUgIDxk
YXJyeWxAZHBvZ3VlLmNhPgogCiAgICAgICAgIEluZGV4ZWREQjogU3VwcG9ydCBJREJGYWN0b3J5
IGRhdGFiYXNlcyBtZXRob2QKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL2NhbGwt
YS1jb25zdHJ1Y3Rvci1hcy1hLWZ1bmN0aW9uLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zh
c3QvZG9tL2NhbGwtYS1jb25zdHJ1Y3Rvci1hcy1hLWZ1bmN0aW9uLWV4cGVjdGVkLnR4dAppbmRl
eCA4YTE4MDFjYTIyZmM2NmVlZGEzOTJjZDNmN2FmMGQ2MjE1ZjI5MmUwLi4yNzU0ZjQ4ZTVmMjU2
MGM0NmU4NThiOGU2MGUwNDJlYjhjZWQ2NjZlIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0
L2RvbS9jYWxsLWEtY29uc3RydWN0b3ItYXMtYS1mdW5jdGlvbi1leHBlY3RlZC50eHQKKysrIGIv
TGF5b3V0VGVzdHMvZmFzdC9kb20vY2FsbC1hLWNvbnN0cnVjdG9yLWFzLWEtZnVuY3Rpb24tZXhw
ZWN0ZWQudHh0CkBAIC0zLDcgKzMsNyBAQCBUaGlzIHRlc3RzIGlmIFR5cGVFcnJvciBpcyB0aHJv
d24gb3Igbm90IHdoZW4gd2UgY2FsbCBhIGNvbnN0cnVjdG9yIGFzIGEgbm9ybWFsCiBPbiBzdWNj
ZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBi
eSAiVEVTVCBDT01QTEVURSIuCiAKIAotU0tJUCBBdWRpb0NvbnRleHQgaXMgbm90IGltcGxlbWVu
dGVkLgorUEFTUyBBdWRpb0NvbnRleHQoKSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBDb25z
dHJ1Y3RvciByZXF1aXJlcyAnbmV3JyBvcGVyYXRvci4KIFBBU1MgRm9ybURhdGEoKSB0aHJldyBl
eGNlcHRpb24gVHlwZUVycm9yOiBDb25zdHJ1Y3RvciByZXF1aXJlcyAnbmV3JyBvcGVyYXRvci4K
IFBBU1MgRXZlbnRTb3VyY2UoKSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBDb25zdHJ1Y3Rv
ciByZXF1aXJlcyAnbmV3JyBvcGVyYXRvci4KIFBBU1MgRmlsZVJlYWRlcigpIHRocmV3IGV4Y2Vw
dGlvbiBUeXBlRXJyb3I6IENvbnN0cnVjdG9yIHJlcXVpcmVzICduZXcnIG9wZXJhdG9yLgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJh
dWRpby9pZGxoYXJuZXNzLmh0dHBzLndpbmRvdy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYmF1ZGlvL2lkbGhhcm5lc3MuaHR0cHMu
d2luZG93LWV4cGVjdGVkLnR4dAppbmRleCBjY2M3ZTllOGY3MWJmMWQ0MTI0ZGJjZGU4OTM2MTZj
MjY0MGJjM2FkLi44NTk4ZGRhZmUwODAxZjg2M2M3YzkwM2QyMTAyNGU2OGNiMWI4NzYxIDEwMDY0
NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYmF1
ZGlvL2lkbGhhcm5lc3MuaHR0cHMud2luZG93LWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYmF1ZGlvL2lkbGhhcm5lc3MuaHR0
cHMud2luZG93LWV4cGVjdGVkLnR4dApAQCAtNDMsNyArNDMsNyBAQCBGQUlMIEJhc2VBdWRpb0Nv
bnRleHQgaW50ZXJmYWNlOiBvcGVyYXRpb24gY3JlYXRlV2F2ZVNoYXBlcigpIGFzc2VydF9vd25f
cHJvcGVydAogRkFJTCBCYXNlQXVkaW9Db250ZXh0IGludGVyZmFjZTogb3BlcmF0aW9uIGRlY29k
ZUF1ZGlvRGF0YShBcnJheUJ1ZmZlciwgb3B0aW9uYWwgRGVjb2RlU3VjY2Vzc0NhbGxiYWNrPywg
b3B0aW9uYWwgRGVjb2RlRXJyb3JDYWxsYmFjaz8pIGFzc2VydF9vd25fcHJvcGVydHk6IHNlbGYg
ZG9lcyBub3QgaGF2ZSBvd24gcHJvcGVydHkgIkJhc2VBdWRpb0NvbnRleHQiIGV4cGVjdGVkIHBy
b3BlcnR5ICJCYXNlQXVkaW9Db250ZXh0IiBtaXNzaW5nCiBGQUlMIEF1ZGlvQ29udGV4dCBpbnRl
cmZhY2U6IGV4aXN0ZW5jZSBhbmQgcHJvcGVydGllcyBvZiBpbnRlcmZhY2Ugb2JqZWN0IGFzc2Vy
dF9vd25fcHJvcGVydHk6IHNlbGYgZG9lcyBub3QgaGF2ZSBvd24gcHJvcGVydHkgIkJhc2VBdWRp
b0NvbnRleHQiIGV4cGVjdGVkIHByb3BlcnR5ICJCYXNlQXVkaW9Db250ZXh0IiBtaXNzaW5nCiBQ
QVNTIEF1ZGlvQ29udGV4dCBpbnRlcmZhY2Ugb2JqZWN0IGxlbmd0aCAKLUZBSUwgQXVkaW9Db250
ZXh0IGludGVyZmFjZSBvYmplY3QgbmFtZSBhc3NlcnRfZXF1YWxzOiB3cm9uZyB2YWx1ZSBmb3Ig
QXVkaW9Db250ZXh0Lm5hbWUgZXhwZWN0ZWQgIkF1ZGlvQ29udGV4dCIgYnV0IGdvdCAid2Via2l0
QXVkaW9Db250ZXh0IgorUEFTUyBBdWRpb0NvbnRleHQgaW50ZXJmYWNlIG9iamVjdCBuYW1lIAog
RkFJTCBBdWRpb0NvbnRleHQgaW50ZXJmYWNlOiBleGlzdGVuY2UgYW5kIHByb3BlcnRpZXMgb2Yg
aW50ZXJmYWNlIHByb3RvdHlwZSBvYmplY3QgYXNzZXJ0X293bl9wcm9wZXJ0eTogc2VsZiBkb2Vz
IG5vdCBoYXZlIG93biBwcm9wZXJ0eSAiQmFzZUF1ZGlvQ29udGV4dCIgZXhwZWN0ZWQgcHJvcGVy
dHkgIkJhc2VBdWRpb0NvbnRleHQiIG1pc3NpbmcKIFBBU1MgQXVkaW9Db250ZXh0IGludGVyZmFj
ZTogZXhpc3RlbmNlIGFuZCBwcm9wZXJ0aWVzIG9mIGludGVyZmFjZSBwcm90b3R5cGUgb2JqZWN0
J3MgImNvbnN0cnVjdG9yIiBwcm9wZXJ0eSAKIFBBU1MgQXVkaW9Db250ZXh0IGludGVyZmFjZTog
ZXhpc3RlbmNlIGFuZCBwcm9wZXJ0aWVzIG9mIGludGVyZmFjZSBwcm90b3R5cGUgb2JqZWN0J3Mg
QEB1bnNjb3BhYmxlcyBwcm9wZXJ0eSAKQEAgLTU4LDcgKzU4LDcgQEAgUEFTUyBBdWRpb0NvbnRl
eHQgaW50ZXJmYWNlOiBvcGVyYXRpb24gY3JlYXRlTWVkaWFTdHJlYW1Tb3VyY2UoTWVkaWFTdHJl
YW0pCiBGQUlMIEF1ZGlvQ29udGV4dCBpbnRlcmZhY2U6IG9wZXJhdGlvbiBjcmVhdGVNZWRpYVN0
cmVhbVRyYWNrU291cmNlKE1lZGlhU3RyZWFtVHJhY2spIGFzc2VydF9vd25fcHJvcGVydHk6IGlu
dGVyZmFjZSBwcm90b3R5cGUgb2JqZWN0IG1pc3Npbmcgbm9uLXN0YXRpYyBvcGVyYXRpb24gZXhw
ZWN0ZWQgcHJvcGVydHkgImNyZWF0ZU1lZGlhU3RyZWFtVHJhY2tTb3VyY2UiIG1pc3NpbmcKIFBB
U1MgQXVkaW9Db250ZXh0IGludGVyZmFjZTogb3BlcmF0aW9uIGNyZWF0ZU1lZGlhU3RyZWFtRGVz
dGluYXRpb24oKSAKIFBBU1MgQXVkaW9Db250ZXh0IG11c3QgYmUgcHJpbWFyeSBpbnRlcmZhY2Ug
b2YgY29udGV4dCAKLUZBSUwgU3RyaW5naWZpY2F0aW9uIG9mIGNvbnRleHQgYXNzZXJ0X2NsYXNz
X3N0cmluZzogY2xhc3Mgc3RyaW5nIG9mIGNvbnRleHQgZXhwZWN0ZWQgIltvYmplY3QgQXVkaW9D
b250ZXh0XSIgYnV0IGdvdCAiW29iamVjdCB3ZWJraXRBdWRpb0NvbnRleHRdIgorUEFTUyBTdHJp
bmdpZmljYXRpb24gb2YgY29udGV4dCAKIEZBSUwgQXVkaW9Db250ZXh0IGludGVyZmFjZTogY29u
dGV4dCBtdXN0IGluaGVyaXQgcHJvcGVydHkgImJhc2VMYXRlbmN5IiB3aXRoIHRoZSBwcm9wZXIg
dHlwZSBhc3NlcnRfaW5oZXJpdHM6IHByb3BlcnR5ICJiYXNlTGF0ZW5jeSIgbm90IGZvdW5kIGlu
IHByb3RvdHlwZSBjaGFpbgogRkFJTCBBdWRpb0NvbnRleHQgaW50ZXJmYWNlOiBjb250ZXh0IG11
c3QgaW5oZXJpdCBwcm9wZXJ0eSAib3V0cHV0TGF0ZW5jeSIgd2l0aCB0aGUgcHJvcGVyIHR5cGUg
YXNzZXJ0X2luaGVyaXRzOiBwcm9wZXJ0eSAib3V0cHV0TGF0ZW5jeSIgbm90IGZvdW5kIGluIHBy
b3RvdHlwZSBjaGFpbgogRkFJTCBBdWRpb0NvbnRleHQgaW50ZXJmYWNlOiBjb250ZXh0IG11c3Qg
aW5oZXJpdCBwcm9wZXJ0eSAiZ2V0T3V0cHV0VGltZXN0YW1wKCkiIHdpdGggdGhlIHByb3BlciB0
eXBlIGFzc2VydF9pbmhlcml0czogcHJvcGVydHkgImdldE91dHB1dFRpbWVzdGFtcCIgbm90IGZv
dW5kIGluIHByb3RvdHlwZSBjaGFpbgpAQCAtMTA4LDcgKzEwOCw3IEBAIFBBU1MgQmFzZUF1ZGlv
Q29udGV4dCBpbnRlcmZhY2U6IGNvbnRleHQgbXVzdCBpbmhlcml0IHByb3BlcnR5ICJkZWNvZGVB
dWRpb0RhdGEoCiBGQUlMIEJhc2VBdWRpb0NvbnRleHQgaW50ZXJmYWNlOiBjYWxsaW5nIGRlY29k
ZUF1ZGlvRGF0YShBcnJheUJ1ZmZlciwgb3B0aW9uYWwgRGVjb2RlU3VjY2Vzc0NhbGxiYWNrPywg
b3B0aW9uYWwgRGVjb2RlRXJyb3JDYWxsYmFjaz8pIG9uIGNvbnRleHQgd2l0aCB0b28gZmV3IGFy
Z3VtZW50cyBtdXN0IHRocm93IFR5cGVFcnJvciBhc3NlcnRfdW5yZWFjaGVkOiBUaHJvd3MgIlR5
cGVFcnJvcjogTm90IGVub3VnaCBhcmd1bWVudHMiIGluc3RlYWQgb2YgcmVqZWN0aW5nIHByb21p
c2UgUmVhY2hlZCB1bnJlYWNoYWJsZSBjb2RlCiBGQUlMIE9mZmxpbmVBdWRpb0NvbnRleHQgaW50
ZXJmYWNlOiBleGlzdGVuY2UgYW5kIHByb3BlcnRpZXMgb2YgaW50ZXJmYWNlIG9iamVjdCBhc3Nl
cnRfb3duX3Byb3BlcnR5OiBzZWxmIGRvZXMgbm90IGhhdmUgb3duIHByb3BlcnR5ICJCYXNlQXVk
aW9Db250ZXh0IiBleHBlY3RlZCBwcm9wZXJ0eSAiQmFzZUF1ZGlvQ29udGV4dCIgbWlzc2luZwog
RkFJTCBPZmZsaW5lQXVkaW9Db250ZXh0IGludGVyZmFjZSBvYmplY3QgbGVuZ3RoIGFzc2VydF9l
cXVhbHM6IHdyb25nIHZhbHVlIGZvciBPZmZsaW5lQXVkaW9Db250ZXh0Lmxlbmd0aCBleHBlY3Rl
ZCAxIGJ1dCBnb3QgMwotRkFJTCBPZmZsaW5lQXVkaW9Db250ZXh0IGludGVyZmFjZSBvYmplY3Qg
bmFtZSBhc3NlcnRfZXF1YWxzOiB3cm9uZyB2YWx1ZSBmb3IgT2ZmbGluZUF1ZGlvQ29udGV4dC5u
YW1lIGV4cGVjdGVkICJPZmZsaW5lQXVkaW9Db250ZXh0IiBidXQgZ290ICJ3ZWJraXRPZmZsaW5l
QXVkaW9Db250ZXh0IgorUEFTUyBPZmZsaW5lQXVkaW9Db250ZXh0IGludGVyZmFjZSBvYmplY3Qg
bmFtZSAKIEZBSUwgT2ZmbGluZUF1ZGlvQ29udGV4dCBpbnRlcmZhY2U6IGV4aXN0ZW5jZSBhbmQg
cHJvcGVydGllcyBvZiBpbnRlcmZhY2UgcHJvdG90eXBlIG9iamVjdCBhc3NlcnRfb3duX3Byb3Bl
cnR5OiBzZWxmIGRvZXMgbm90IGhhdmUgb3duIHByb3BlcnR5ICJCYXNlQXVkaW9Db250ZXh0IiBl
eHBlY3RlZCBwcm9wZXJ0eSAiQmFzZUF1ZGlvQ29udGV4dCIgbWlzc2luZwogUEFTUyBPZmZsaW5l
QXVkaW9Db250ZXh0IGludGVyZmFjZTogZXhpc3RlbmNlIGFuZCBwcm9wZXJ0aWVzIG9mIGludGVy
ZmFjZSBwcm90b3R5cGUgb2JqZWN0J3MgImNvbnN0cnVjdG9yIiBwcm9wZXJ0eSAKIFBBU1MgT2Zm
bGluZUF1ZGlvQ29udGV4dCBpbnRlcmZhY2U6IGV4aXN0ZW5jZSBhbmQgcHJvcGVydGllcyBvZiBp
bnRlcmZhY2UgcHJvdG90eXBlIG9iamVjdCdzIEBAdW5zY29wYWJsZXMgcHJvcGVydHkgCkBAIC0x
MTgsNyArMTE4LDcgQEAgRkFJTCBPZmZsaW5lQXVkaW9Db250ZXh0IGludGVyZmFjZTogb3BlcmF0
aW9uIHN1c3BlbmQoZG91YmxlKSBhc3NlcnRfb3duX3Byb3BlcnQKIEZBSUwgT2ZmbGluZUF1ZGlv
Q29udGV4dCBpbnRlcmZhY2U6IGF0dHJpYnV0ZSBsZW5ndGggYXNzZXJ0X3RydWU6IFRoZSBwcm90
b3R5cGUgb2JqZWN0IG11c3QgaGF2ZSBhIHByb3BlcnR5ICJsZW5ndGgiIGV4cGVjdGVkIHRydWUg
Z290IGZhbHNlCiBGQUlMIE9mZmxpbmVBdWRpb0NvbnRleHQgaW50ZXJmYWNlOiBhdHRyaWJ1dGUg
b25jb21wbGV0ZSBhc3NlcnRfb3duX3Byb3BlcnR5OiBleHBlY3RlZCBwcm9wZXJ0eSAib25jb21w
bGV0ZSIgbWlzc2luZwogUEFTUyBPZmZsaW5lQXVkaW9Db250ZXh0IG11c3QgYmUgcHJpbWFyeSBp
bnRlcmZhY2Ugb2YgbmV3IE9mZmxpbmVBdWRpb0NvbnRleHQoMSwgMSwgc2FtcGxlX3JhdGUpIAot
RkFJTCBTdHJpbmdpZmljYXRpb24gb2YgbmV3IE9mZmxpbmVBdWRpb0NvbnRleHQoMSwgMSwgc2Ft
cGxlX3JhdGUpIGFzc2VydF9jbGFzc19zdHJpbmc6IGNsYXNzIHN0cmluZyBvZiBuZXcgT2ZmbGlu
ZUF1ZGlvQ29udGV4dCgxLCAxLCBzYW1wbGVfcmF0ZSkgZXhwZWN0ZWQgIltvYmplY3QgT2ZmbGlu
ZUF1ZGlvQ29udGV4dF0iIGJ1dCBnb3QgIltvYmplY3Qgd2Via2l0T2ZmbGluZUF1ZGlvQ29udGV4
dF0iCitQQVNTIFN0cmluZ2lmaWNhdGlvbiBvZiBuZXcgT2ZmbGluZUF1ZGlvQ29udGV4dCgxLCAx
LCBzYW1wbGVfcmF0ZSkgCiBQQVNTIE9mZmxpbmVBdWRpb0NvbnRleHQgaW50ZXJmYWNlOiBuZXcg
T2ZmbGluZUF1ZGlvQ29udGV4dCgxLCAxLCBzYW1wbGVfcmF0ZSkgbXVzdCBpbmhlcml0IHByb3Bl
cnR5ICJzdGFydFJlbmRlcmluZygpIiB3aXRoIHRoZSBwcm9wZXIgdHlwZSAKIFBBU1MgT2ZmbGlu
ZUF1ZGlvQ29udGV4dCBpbnRlcmZhY2U6IG5ldyBPZmZsaW5lQXVkaW9Db250ZXh0KDEsIDEsIHNh
bXBsZV9yYXRlKSBtdXN0IGluaGVyaXQgcHJvcGVydHkgInJlc3VtZSgpIiB3aXRoIHRoZSBwcm9w
ZXIgdHlwZSAKIFBBU1MgT2ZmbGluZUF1ZGlvQ29udGV4dCBpbnRlcmZhY2U6IG5ldyBPZmZsaW5l
QXVkaW9Db250ZXh0KDEsIDEsIHNhbXBsZV9yYXRlKSBtdXN0IGluaGVyaXQgcHJvcGVydHkgInN1
c3BlbmQoZG91YmxlKSIgd2l0aCB0aGUgcHJvcGVyIHR5cGUgCkBAIC05MDQsNyArOTA0LDcgQEAg
RkFJTCBBdWRpb05vZGUgaW50ZXJmYWNlOiBuZXcgT3NjaWxsYXRvck5vZGUoY29udGV4dCkgbXVz
dCBpbmhlcml0IHByb3BlcnR5ICJjaGEKIEZBSUwgQXVkaW9Ob2RlIGludGVyZmFjZTogbmV3IE9z
Y2lsbGF0b3JOb2RlKGNvbnRleHQpIG11c3QgaW5oZXJpdCBwcm9wZXJ0eSAiY2hhbm5lbEludGVy
cHJldGF0aW9uIiB3aXRoIHRoZSBwcm9wZXIgdHlwZSBhc3NlcnRfZXF1YWxzOiBVbmV4cGVjdGVk
IGV4Y2VwdGlvbiB3aGVuIGV2YWx1YXRpbmcgb2JqZWN0IGV4cGVjdGVkIG51bGwgYnV0IGdvdCBv
YmplY3QgIlR5cGVFcnJvcjogZnVuY3Rpb24gaXMgbm90IGEgY29uc3RydWN0b3IgKGV2YWx1YXRp
bmcgJ25ldyBPc2NpbGxhdG9yTm9kZShjb250ZXh0KScpIgogUEFTUyBQYW5uZXJOb2RlIGludGVy
ZmFjZTogZXhpc3RlbmNlIGFuZCBwcm9wZXJ0aWVzIG9mIGludGVyZmFjZSBvYmplY3QgCiBGQUlM
IFBhbm5lck5vZGUgaW50ZXJmYWNlIG9iamVjdCBsZW5ndGggYXNzZXJ0X2VxdWFsczogd3Jvbmcg
dmFsdWUgZm9yIFBhbm5lck5vZGUubGVuZ3RoIGV4cGVjdGVkIDEgYnV0IGdvdCAwCi1GQUlMIFBh
bm5lck5vZGUgaW50ZXJmYWNlIG9iamVjdCBuYW1lIGFzc2VydF9lcXVhbHM6IHdyb25nIHZhbHVl
IGZvciBQYW5uZXJOb2RlLm5hbWUgZXhwZWN0ZWQgIlBhbm5lck5vZGUiIGJ1dCBnb3QgIndlYmtp
dEF1ZGlvUGFubmVyTm9kZSIKK1BBU1MgUGFubmVyTm9kZSBpbnRlcmZhY2Ugb2JqZWN0IG5hbWUg
CiBQQVNTIFBhbm5lck5vZGUgaW50ZXJmYWNlOiBleGlzdGVuY2UgYW5kIHByb3BlcnRpZXMgb2Yg
aW50ZXJmYWNlIHByb3RvdHlwZSBvYmplY3QgCiBQQVNTIFBhbm5lck5vZGUgaW50ZXJmYWNlOiBl
eGlzdGVuY2UgYW5kIHByb3BlcnRpZXMgb2YgaW50ZXJmYWNlIHByb3RvdHlwZSBvYmplY3QncyAi
Y29uc3RydWN0b3IiIHByb3BlcnR5IAogUEFTUyBQYW5uZXJOb2RlIGludGVyZmFjZTogZXhpc3Rl
bmNlIGFuZCBwcm9wZXJ0aWVzIG9mIGludGVyZmFjZSBwcm90b3R5cGUgb2JqZWN0J3MgQEB1bnNj
b3BhYmxlcyBwcm9wZXJ0eSAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvd2ViYXVkaW8vdGhlLWF1ZGlvLWFwaS90aGUtYXVkaW9jb250ZXh0
LWludGVyZmFjZS9hdWRpb2NvbnRleHQtZGV0YWNoZWQtZXhlY3V0aW9uLWNvbnRleHQudGVudGF0
aXZlLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvd2ViYXVkaW8vdGhlLWF1ZGlvLWFwaS90aGUtYXVkaW9jb250ZXh0LWludGVyZmFjZS9h
dWRpb2NvbnRleHQtZGV0YWNoZWQtZXhlY3V0aW9uLWNvbnRleHQudGVudGF0aXZlLWV4cGVjdGVk
LnR4dAppbmRleCAzNDRmY2Q5Yzk0MDViZWRmYTliMzQ3ZGViNzMxMmI3ZDQ0YjI4NzZmLi44Yjhk
ZTkwZmNiYjU0ZmQ5YmM5NjYzZmE0OTM0NTUzOGNhMGZlMTEwIDEwMDY0NAotLS0gYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYmF1ZGlvL3RoZS1hdWRpby1h
cGkvdGhlLWF1ZGlvY29udGV4dC1pbnRlcmZhY2UvYXVkaW9jb250ZXh0LWRldGFjaGVkLWV4ZWN1
dGlvbi1jb250ZXh0LnRlbnRhdGl2ZS1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJhdWRpby90aGUtYXVkaW8tYXBpL3RoZS1h
dWRpb2NvbnRleHQtaW50ZXJmYWNlL2F1ZGlvY29udGV4dC1kZXRhY2hlZC1leGVjdXRpb24tY29u
dGV4dC50ZW50YXRpdmUtZXhwZWN0ZWQudHh0CkBAIC0xLDcgKzEsNiBAQAogCi0KIFBBU1MgIyBB
VURJVCBUQVNLIFJVTk5FUiBTVEFSVEVELiAKLUZBSUwgRXhlY3V0aW5nICJkZWNvZGluZy1vbi1k
ZXRhY2hlZC1pZnJhbWUiIHByb21pc2VfdGVzdDogVW5oYW5kbGVkIHJlamVjdGlvbiB3aXRoIHZh
bHVlOiBvYmplY3QgIlR5cGVFcnJvcjogdW5kZWZpbmVkIGlzIG5vdCBhIGNvbnN0cnVjdG9yIChl
dmFsdWF0aW5nICduZXcgaWZyYW1lLmNvbnRlbnRXaW5kb3cuQXVkaW9Db250ZXh0KCknKSIKK0ZB
SUwgRXhlY3V0aW5nICJkZWNvZGluZy1vbi1kZXRhY2hlZC1pZnJhbWUiIHByb21pc2VfdGVzdDog
VW5oYW5kbGVkIHJlamVjdGlvbiB3aXRoIHZhbHVlOiBvYmplY3QgIlR5cGVFcnJvcjogTm90IGVu
b3VnaCBhcmd1bWVudHMiCiBQQVNTIEF1ZGl0IHJlcG9ydCAKIFBBU1MgPiBbZGVjb2Rpbmctb24t
ZGV0YWNoZWQtaWZyYW1lXSAgCiBQQVNTICMgQVVESVQgVEFTSyBSVU5ORVIgRklOSVNIRUQ6IDEg
dGFza3MgcmFuIHN1Y2Nlc3NmdWxseS4gCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYmF1ZGlvL3RoZS1hdWRpby1hcGkvdGhlLWF1ZGlv
bm9kZS1pbnRlcmZhY2UvYXVkaW9ub2RlLWNvbm5lY3QtbWV0aG9kLWNoYWluaW5nLWV4cGVjdGVk
LnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2ViYXVk
aW8vdGhlLWF1ZGlvLWFwaS90aGUtYXVkaW9ub2RlLWludGVyZmFjZS9hdWRpb25vZGUtY29ubmVj
dC1tZXRob2QtY2hhaW5pbmctZXhwZWN0ZWQudHh0CmluZGV4IDczZjc3ZTU1Y2M4OTE2NTZjMmJk
YTY4ZTNhOWUzNzE2OTU4MmY4NGMuLjZhNjU5YjU2MjU4ZDU0Mzc5NzViNTU4ZGQ3ZDNiOTlmZTgw
N2QyNmIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvd2ViYXVkaW8vdGhlLWF1ZGlvLWFwaS90aGUtYXVkaW9ub2RlLWludGVyZmFjZS9hdWRp
b25vZGUtY29ubmVjdC1tZXRob2QtY2hhaW5pbmctZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2ViYXVkaW8vdGhlLWF1ZGlvLWFw
aS90aGUtYXVkaW9ub2RlLWludGVyZmFjZS9hdWRpb25vZGUtY29ubmVjdC1tZXRob2QtY2hhaW5p
bmctZXhwZWN0ZWQudHh0CkBAIC0zNiw5ICszNiw5IEBAIFBBU1MgICBUaGUgcmV0dXJuIHZhbHVl
IG9mIEdhaW5Ob2RlLmNvbm5lY3QoQ2hhbm5lbE1lcmdlck5vZGUsIDAsIDEpIG1hdGNoZXMgdGhl
CiBQQVNTICAgVGhlIHJldHVybiB2YWx1ZSBvZiBPc2NpbGxhdG9yTm9kZS5jb25uZWN0KEdhaW5O
b2RlKSBtYXRjaGVzIHRoZSBkZXN0aW5hdGlvbiBHYWluTm9kZSBpcyBlcXVhbCB0byB0cnVlLiAK
IFBBU1MgICBUaGUgcmV0dXJuIHZhbHVlIG9mIE9zY2lsbGF0b3JOb2RlLmNvbm5lY3QoQmlxdWFk
RmlsdGVyTm9kZSwgMCkgbWF0Y2hlcyB0aGUgZGVzdGluYXRpb24gQmlxdWFkRmlsdGVyTm9kZSBp
cyBlcXVhbCB0byB0cnVlLiAKIFBBU1MgICBUaGUgcmV0dXJuIHZhbHVlIG9mIE9zY2lsbGF0b3JO
b2RlLmNvbm5lY3QoQ2hhbm5lbE1lcmdlck5vZGUsIDAsIDEpIG1hdGNoZXMgdGhlIGRlc3RpbmF0
aW9uIENoYW5uZWxNZXJnZXJOb2RlIGlzIGVxdWFsIHRvIHRydWUuIAotUEFTUyAgIFRoZSByZXR1
cm4gdmFsdWUgb2Ygd2Via2l0QXVkaW9QYW5uZXJOb2RlLmNvbm5lY3QoR2Fpbk5vZGUpIG1hdGNo
ZXMgdGhlIGRlc3RpbmF0aW9uIEdhaW5Ob2RlIGlzIGVxdWFsIHRvIHRydWUuIAotUEFTUyAgIFRo
ZSByZXR1cm4gdmFsdWUgb2Ygd2Via2l0QXVkaW9QYW5uZXJOb2RlLmNvbm5lY3QoQmlxdWFkRmls
dGVyTm9kZSwgMCkgbWF0Y2hlcyB0aGUgZGVzdGluYXRpb24gQmlxdWFkRmlsdGVyTm9kZSBpcyBl
cXVhbCB0byB0cnVlLiAKLVBBU1MgICBUaGUgcmV0dXJuIHZhbHVlIG9mIHdlYmtpdEF1ZGlvUGFu
bmVyTm9kZS5jb25uZWN0KENoYW5uZWxNZXJnZXJOb2RlLCAwLCAxKSBtYXRjaGVzIHRoZSBkZXN0
aW5hdGlvbiBDaGFubmVsTWVyZ2VyTm9kZSBpcyBlcXVhbCB0byB0cnVlLiAKK1BBU1MgICBUaGUg
cmV0dXJuIHZhbHVlIG9mIFBhbm5lck5vZGUuY29ubmVjdChHYWluTm9kZSkgbWF0Y2hlcyB0aGUg
ZGVzdGluYXRpb24gR2Fpbk5vZGUgaXMgZXF1YWwgdG8gdHJ1ZS4gCitQQVNTICAgVGhlIHJldHVy
biB2YWx1ZSBvZiBQYW5uZXJOb2RlLmNvbm5lY3QoQmlxdWFkRmlsdGVyTm9kZSwgMCkgbWF0Y2hl
cyB0aGUgZGVzdGluYXRpb24gQmlxdWFkRmlsdGVyTm9kZSBpcyBlcXVhbCB0byB0cnVlLiAKK1BB
U1MgICBUaGUgcmV0dXJuIHZhbHVlIG9mIFBhbm5lck5vZGUuY29ubmVjdChDaGFubmVsTWVyZ2Vy
Tm9kZSwgMCwgMSkgbWF0Y2hlcyB0aGUgZGVzdGluYXRpb24gQ2hhbm5lbE1lcmdlck5vZGUgaXMg
ZXF1YWwgdG8gdHJ1ZS4gCiBQQVNTICAgVGhlIHJldHVybiB2YWx1ZSBvZiBTY3JpcHRQcm9jZXNz
b3JOb2RlLmNvbm5lY3QoR2Fpbk5vZGUpIG1hdGNoZXMgdGhlIGRlc3RpbmF0aW9uIEdhaW5Ob2Rl
IGlzIGVxdWFsIHRvIHRydWUuIAogUEFTUyAgIFRoZSByZXR1cm4gdmFsdWUgb2YgU2NyaXB0UHJv
Y2Vzc29yTm9kZS5jb25uZWN0KEJpcXVhZEZpbHRlck5vZGUsIDApIG1hdGNoZXMgdGhlIGRlc3Rp
bmF0aW9uIEJpcXVhZEZpbHRlck5vZGUgaXMgZXF1YWwgdG8gdHJ1ZS4gCiBQQVNTICAgVGhlIHJl
dHVybiB2YWx1ZSBvZiBTY3JpcHRQcm9jZXNzb3JOb2RlLmNvbm5lY3QoQ2hhbm5lbE1lcmdlck5v
ZGUsIDAsIDEpIG1hdGNoZXMgdGhlIGRlc3RpbmF0aW9uIENoYW5uZWxNZXJnZXJOb2RlIGlzIGVx
dWFsIHRvIHRydWUuIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy93ZWJhdWRpby90aGUtYXVkaW8tYXBpL3RoZS1vZmZsaW5lYXVkaW9jb250
ZXh0LWludGVyZmFjZS9vZmZsaW5lYXVkaW9jb250ZXh0LWRldGFjaGVkLWV4ZWN1dGlvbi1jb250
ZXh0LnRlbnRhdGl2ZS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3dlYmF1ZGlvL3RoZS1hdWRpby1hcGkvdGhlLW9mZmxpbmVhdWRpb2Nv
bnRleHQtaW50ZXJmYWNlL29mZmxpbmVhdWRpb2NvbnRleHQtZGV0YWNoZWQtZXhlY3V0aW9uLWNv
bnRleHQudGVudGF0aXZlLWV4cGVjdGVkLnR4dAppbmRleCBkM2YwZmEwMTI4NDdhZTMwMDcyNDEx
YjZlOWEzYTRhYjg0NTUyZGMxLi5iMmRhMDcwNDUwNDA4ZTk2YzRiMTExNmQ5NDNkMDIxZTY0N2Mw
NTE3IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3dlYmF1ZGlvL3RoZS1hdWRpby1hcGkvdGhlLW9mZmxpbmVhdWRpb2NvbnRleHQtaW50ZXJm
YWNlL29mZmxpbmVhdWRpb2NvbnRleHQtZGV0YWNoZWQtZXhlY3V0aW9uLWNvbnRleHQudGVudGF0
aXZlLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3dlYmF1ZGlvL3RoZS1hdWRpby1hcGkvdGhlLW9mZmxpbmVhdWRpb2NvbnRleHQt
aW50ZXJmYWNlL29mZmxpbmVhdWRpb2NvbnRleHQtZGV0YWNoZWQtZXhlY3V0aW9uLWNvbnRleHQu
dGVudGF0aXZlLWV4cGVjdGVkLnR4dApAQCAtMSw3ICsxLDcgQEAKIAogCiBQQVNTICMgQVVESVQg
VEFTSyBSVU5ORVIgU1RBUlRFRC4gCi1GQUlMIEV4ZWN1dGluZyAiZGVjb2Rpbmctb24tZGV0YWNo
ZWQtaWZyYW1lIiBwcm9taXNlX3Rlc3Q6IFVuaGFuZGxlZCByZWplY3Rpb24gd2l0aCB2YWx1ZTog
b2JqZWN0ICJUeXBlRXJyb3I6IHVuZGVmaW5lZCBpcyBub3QgYSBjb25zdHJ1Y3RvciAoZXZhbHVh
dGluZyAnbmV3IGlmcmFtZS5jb250ZW50V2luZG93Lk9mZmxpbmVBdWRpb0NvbnRleHQoMSwgMSwg
MzAwMCknKSIKK0ZBSUwgRXhlY3V0aW5nICJkZWNvZGluZy1vbi1kZXRhY2hlZC1pZnJhbWUiIHBy
b21pc2VfdGVzdDogVW5oYW5kbGVkIHJlamVjdGlvbiB3aXRoIHZhbHVlOiBvYmplY3QgIlN5bnRh
eEVycm9yOiBUaGUgc3RyaW5nIGRpZCBub3QgbWF0Y2ggdGhlIGV4cGVjdGVkIHBhdHRlcm4uIgog
UEFTUyBBdWRpdCByZXBvcnQgCiBQQVNTID4gW2RlY29kaW5nLW9uLWRldGFjaGVkLWlmcmFtZV0g
IAogUEFTUyAjIEFVRElUIFRBU0sgUlVOTkVSIEZJTklTSEVEOiAxIHRhc2tzIHJhbiBzdWNjZXNz
ZnVsbHkuIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vaW9zL2pzL2RvbS9jb25z
dHJ1Y3Rvci1sZW5ndGgtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vaW9zL2pz
L2RvbS9jb25zdHJ1Y3Rvci1sZW5ndGgtZXhwZWN0ZWQudHh0CmluZGV4IDU1NWQyM2IzM2Y4YjZl
OWRhYzAyNGQwODhjMzUxNmI3YjJhMmM3NzAuLmRiY2JjNzg4YjI0M2FmYWIwMjA4MGU0ZGQ1NTk4
OGI5YmI2MGQxMjQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2lvcy9qcy9kb20v
Y29uc3RydWN0b3ItbGVuZ3RoLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9y
bS9pb3MvanMvZG9tL2NvbnN0cnVjdG9yLWxlbmd0aC1leHBlY3RlZC50eHQKQEAgLTQsNyArNCw3
IEBAIE9uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMs
IGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFCiAKIAogUEFTUyBBcnJheUJ1ZmZlci5sZW5ndGgg
aXMgMQotRkFJTCBBdWRpb0NvbnRleHQubGVuZ3RoIHNob3VsZCBiZSAwLiBUaHJldyBleGNlcHRp
b24gUmVmZXJlbmNlRXJyb3I6IENhbid0IGZpbmQgdmFyaWFibGU6IEF1ZGlvQ29udGV4dAorUEFT
UyBBdWRpb0NvbnRleHQubGVuZ3RoIGlzIDAKIEZBSUwgQXV0b2NvbXBsZXRlRXJyb3JFdmVudC5s
ZW5ndGggc2hvdWxkIGJlIDEuIFRocmV3IGV4Y2VwdGlvbiBSZWZlcmVuY2VFcnJvcjogQ2FuJ3Qg
ZmluZCB2YXJpYWJsZTogQXV0b2NvbXBsZXRlRXJyb3JFdmVudAogUEFTUyBBbmltYXRpb25FdmVu
dC5sZW5ndGggaXMgMQogUEFTUyBCbG9iLmxlbmd0aCBpcyAwCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9wbGF0Zm9ybS9tYWMvanMvZG9tL2NvbnN0cnVjdG9yLWxlbmd0aC1leHBlY3RlZC50eHQg
Yi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvanMvZG9tL2NvbnN0cnVjdG9yLWxlbmd0aC1leHBl
Y3RlZC50eHQKaW5kZXggNTU1ZDIzYjMzZjhiNmU5ZGFjMDI0ZDA4OGMzNTE2YjdiMmEyYzc3MC4u
ZGJjYmM3ODhiMjQzYWZhYjAyMDgwZTRkZDU1OTg4YjliYjYwZDEyNCAxMDA2NDQKLS0tIGEvTGF5
b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2pzL2RvbS9jb25zdHJ1Y3Rvci1sZW5ndGgtZXhwZWN0ZWQu
dHh0CisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9qcy9kb20vY29uc3RydWN0b3ItbGVu
Z3RoLWV4cGVjdGVkLnR4dApAQCAtNCw3ICs0LDcgQEAgT24gc3VjY2VzcywgeW91IHdpbGwgc2Vl
IGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUK
IAogCiBQQVNTIEFycmF5QnVmZmVyLmxlbmd0aCBpcyAxCi1GQUlMIEF1ZGlvQ29udGV4dC5sZW5n
dGggc2hvdWxkIGJlIDAuIFRocmV3IGV4Y2VwdGlvbiBSZWZlcmVuY2VFcnJvcjogQ2FuJ3QgZmlu
ZCB2YXJpYWJsZTogQXVkaW9Db250ZXh0CitQQVNTIEF1ZGlvQ29udGV4dC5sZW5ndGggaXMgMAog
RkFJTCBBdXRvY29tcGxldGVFcnJvckV2ZW50Lmxlbmd0aCBzaG91bGQgYmUgMS4gVGhyZXcgZXhj
ZXB0aW9uIFJlZmVyZW5jZUVycm9yOiBDYW4ndCBmaW5kIHZhcmlhYmxlOiBBdXRvY29tcGxldGVF
cnJvckV2ZW50CiBQQVNTIEFuaW1hdGlvbkV2ZW50Lmxlbmd0aCBpcyAxCiBQQVNTIEJsb2IubGVu
Z3RoIGlzIDAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL3dpbi9qcy9kb20vY29u
c3RydWN0b3ItbGVuZ3RoLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL3dpbi9q
cy9kb20vY29uc3RydWN0b3ItbGVuZ3RoLWV4cGVjdGVkLnR4dAppbmRleCA5ZGRkYWU0OTdmYTQ5
YmVhYTBmZTdjNTY3YjU2MDhkNzQ3MWMwMWU2Li5jYjZkOTlmNTU0ZDkwYTI5MWMwMTBmYmI1YmFh
ZDQyZjg0NmJmNTlkIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93aW4vanMvZG9t
L2NvbnN0cnVjdG9yLWxlbmd0aC1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZv
cm0vd2luL2pzL2RvbS9jb25zdHJ1Y3Rvci1sZW5ndGgtZXhwZWN0ZWQudHh0CkBAIC00LDcgKzQs
NyBAQCBPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2Vz
LCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURQogCiAKIFBBU1MgQXJyYXlCdWZmZXIubGVuZ3Ro
IGlzIDEKLUZBSUwgQXVkaW9Db250ZXh0Lmxlbmd0aCBzaG91bGQgYmUgMC4gVGhyZXcgZXhjZXB0
aW9uIFJlZmVyZW5jZUVycm9yOiBDYW4ndCBmaW5kIHZhcmlhYmxlOiBBdWRpb0NvbnRleHQKK1BB
U1MgQXVkaW9Db250ZXh0Lmxlbmd0aCBpcyAwCiBGQUlMIEF1dG9jb21wbGV0ZUVycm9yRXZlbnQu
bGVuZ3RoIHNob3VsZCBiZSAxLiBUaHJldyBleGNlcHRpb24gUmVmZXJlbmNlRXJyb3I6IENhbid0
IGZpbmQgdmFyaWFibGU6IEF1dG9jb21wbGV0ZUVycm9yRXZlbnQKIFBBU1MgQW5pbWF0aW9uRXZl
bnQubGVuZ3RoIGlzIDEKIFBBU1MgQmxvYi5sZW5ndGggaXMgMAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>402152</attachid>
            <date>2020-06-17 13:57:45 -0700</date>
            <delta_ts>2020-06-17 14:40:04 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-213268-20200617135744.patch</filename>
            <type>text/plain</type>
            <size>273467</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYzMTYzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzYwNDdkMTUxZDZmMDhm
ZTlmY2ZjYzZiNTNmNDY1YTgzNGMyOGIyZS4uZjY5MGYzYjNkMTMzNDVlMzFmNmFmYTNmOTgzZGFl
NjkyN2NhMzk1NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI5NiBAQAorMjAyMC0wNi0xNyAgQ2hy
aXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBleHBlcmltZW50YWwg
ZmVhdHVyZSBmbGFnIGZvciBtb2Rlcm4gJiB1bnByZWZpeGVkIFdlYkF1ZGlvIEFQSQorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjEzMjY4CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgSmVyIE5vYmxlLgorCisgICAgICAgIEFkZCBleHBlcmltZW50YWwgZmVh
dHVyZSBmbGFnIGZvciBtb2Rlcm4gJiB1bnByZWZpeGVkIFdlYkF1ZGlvIEFQSSwKKyAgICAgICAg
b2ZmIGJ5IGRlZmF1bHQuCisKKyAgICAgICAgVGhpcyBwYXRjaCBzcGxpdCB0aGUgQXVkaW9Db250
ZXh0LCBPZmZsaW5lQXVkaW9Db250ZXh0IGFuZCBQYW5uZXJOb2RlCisgICAgICAgIElETCBpbnRl
cmZhY2VzIGludG8gdGhlaXIgcHJlZml4ZWQgYW5kIHVucHJlZml4ZWQgdmVyc2lvbnMuIFRoZQor
ICAgICAgICB1bnByZWZpeGVkIHZlcnNpb25zIGFyZSBiZWhpbmQgdGhlIG5ldyBleHBlcmltZW50
YWwgZmVhdHVyZSBmbGFnIHRoYXQKKyAgICAgICAgaXMgY3VycmVudGx5IG9mZiBieSBkZWZhdWx0
IGJ1dCBhdXRvbWF0aWNhbGx5IGdldHMgdHVybmVkIG9uIGluIHRoZQorICAgICAgICBjb250ZXh0
IG9mIGxheW91dCB0ZXN0cy4KKworICAgICAgICBUaGlzIHdpbGwgZ2l2ZSB1cyBtb3JlIGZsZXhp
YmlsaXR5IHdoZW4gd29ya2luZyBvbiB0aGUgbW9kZXJuIGFuZAorICAgICAgICB1bnByZWZpeGVk
IFdlYkF1ZGlvIEFQSSBhcyB3ZSB3aWxsIG5vdCBoYXZlIHRvIHdvcnJ5IGFib3V0IGJhY2t3YXJk
CisgICAgICAgIGNvbXBhdGliaWxpdHkuIFRoaXMgYWxzbyBhbGxvd3MgdXMgdG8gZWFzaWx5IHR1
cm4gaXQgb24gb3Igb2ZmIHZpYQorICAgICAgICB0aGUgZXhwZXJpbWVudGFsIGZlYXR1cmVzIG1l
bnUgaW4gU2FmYXJpLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cywgcmViYXNlbGluZWQgZXhpc3Rp
bmcgdGVzdHMuCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBEZXJpdmVk
U291cmNlcy1pbnB1dC54Y2ZpbGVsaXN0OgorICAgICAgICAqIERlcml2ZWRTb3VyY2VzLW91dHB1
dC54Y2ZpbGVsaXN0OgorICAgICAgICAqIERlcml2ZWRTb3VyY2VzLm1ha2U6CisgICAgICAgICog
TW9kdWxlcy93ZWJhdWRpby9BbmFseXNlck5vZGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QW5h
bHlzZXJOb2RlOjpBbmFseXNlck5vZGUpOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vQW5h
bHlzZXJOb2RlLmg6CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9BdWRpb0Jhc2ljSW5zcGVj
dG9yTm9kZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb0Jhc2ljSW5zcGVjdG9yTm9kZTo6
QXVkaW9CYXNpY0luc3BlY3Rvck5vZGUpOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vQXVk
aW9CYXNpY0luc3BlY3Rvck5vZGUuaDoKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL0F1ZGlv
QmFzaWNQcm9jZXNzb3JOb2RlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvQmFzaWNQcm9j
ZXNzb3JOb2RlOjpBdWRpb0Jhc2ljUHJvY2Vzc29yTm9kZSk6CisgICAgICAgICogTW9kdWxlcy93
ZWJhdWRpby9BdWRpb0Jhc2ljUHJvY2Vzc29yTm9kZS5oOgorICAgICAgICAqIE1vZHVsZXMvd2Vi
YXVkaW8vQXVkaW9CdWZmZXJTb3VyY2VOb2RlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlv
QnVmZmVyU291cmNlTm9kZTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvQnVmZmVy
U291cmNlTm9kZTo6QXVkaW9CdWZmZXJTb3VyY2VOb2RlKToKKyAgICAgICAgKFdlYkNvcmU6OkF1
ZGlvQnVmZmVyU291cmNlTm9kZTo6c2V0QnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlv
QnVmZmVyU291cmNlTm9kZTo6c2V0UGFubmVyTm9kZSk6CisgICAgICAgICogTW9kdWxlcy93ZWJh
dWRpby9BdWRpb0J1ZmZlclNvdXJjZU5vZGUuaDoKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlv
L0F1ZGlvQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb0NvbnRleHRCYXNlOjpB
dWRpb0NvbnRleHRCYXNlKToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvQ29udGV4dDo6QXVkaW9D
b250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvQ29udGV4dEJhc2U6OmRvY3VtZW50IGNv
bnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvQ29udGV4dEJhc2U6OnNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQgY29uc3QpOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0
Lmg6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb0NvbnRleHRCYXNlOjpBdXRvTG9ja2VyOjpBdXRv
TG9ja2VyKToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvQ29udGV4dEJhc2U6OkF1dG9Mb2NrZXI6
On5BdXRvTG9ja2VyKToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvQ29udGV4dDo6bWF4TnVtYmVy
T2ZDaGFubmVscyk6CisgICAgICAgIChpc1R5cGUpOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVk
aW8vQXVkaW9Db250ZXh0LmlkbDoKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQ29u
dGV4dFN0YXRlLmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8v
T2ZmbGluZUF1ZGlvQ29udGV4dC5pZGwuCisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9BdWRp
b0NvbnRleHRTdGF0ZS5pZGw6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
YXVkaW8vT2ZmbGluZUF1ZGlvQ29udGV4dC5pZGwuCisgICAgICAgICogTW9kdWxlcy93ZWJhdWRp
by9BdWRpb0Rlc3RpbmF0aW9uTm9kZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb0Rlc3Rp
bmF0aW9uTm9kZTo6QXVkaW9EZXN0aW5hdGlvbk5vZGUpOgorICAgICAgICAqIE1vZHVsZXMvd2Vi
YXVkaW8vQXVkaW9EZXN0aW5hdGlvbk5vZGUuaDoKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlv
L0F1ZGlvTm9kZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb05vZGU6OkF1ZGlvTm9kZSk6
CisgICAgICAgIChXZWJDb3JlOjpBdWRpb05vZGU6OmNvbm5lY3QpOgorICAgICAgICAoV2ViQ29y
ZTo6QXVkaW9Ob2RlOjpkaXNjb25uZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvTm9kZTo6
c2V0Q2hhbm5lbENvdW50KToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvTm9kZTo6c2V0Q2hhbm5l
bENvdW50TW9kZSk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb05vZGU6OnNldENoYW5uZWxJbnRl
cnByZXRhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb05vZGU6OmVuYWJsZU91dHB1dHNJ
Zk5lY2Vzc2FyeSk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb05vZGU6OmRlcmVmKToKKyAgICAg
ICAgKFdlYkNvcmU6OkF1ZGlvTm9kZTo6Y29udGV4dEZvckJpbmRpbmdzIGNvbnN0KToKKyAgICAg
ICAgKiBNb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvTm9kZS5oOgorICAgICAgICAoV2ViQ29yZTo6QXVk
aW9Ob2RlOjpjb250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvTm9kZTo6Y29udGV4dCBj
b25zdCk6CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9BdWRpb05vZGUuaWRsOgorICAgICAg
ICAqIE1vZHVsZXMvd2ViYXVkaW8vQXVkaW9Ob2RlT3V0cHV0Lmg6CisgICAgICAgIChXZWJDb3Jl
OjpBdWRpb05vZGVPdXRwdXQ6OmNvbnRleHQpOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8v
QXVkaW9QYXJhbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb1BhcmFtOjpBdWRpb1BhcmFt
KToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvUGFyYW0uaDoKKyAgICAgICAgKiBN
b2R1bGVzL3dlYmF1ZGlvL0F1ZGlvUGFyYW1UaW1lbGluZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpBdWRpb1BhcmFtVGltZWxpbmU6OnZhbHVlRm9yQ29udGV4dFRpbWUpOgorICAgICAgICAqIE1v
ZHVsZXMvd2ViYXVkaW8vQXVkaW9QYXJhbVRpbWVsaW5lLmg6CisgICAgICAgICogTW9kdWxlcy93
ZWJhdWRpby9BdWRpb1NjaGVkdWxlZFNvdXJjZU5vZGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
QXVkaW9TY2hlZHVsZWRTb3VyY2VOb2RlOjpBdWRpb1NjaGVkdWxlZFNvdXJjZU5vZGUpOgorICAg
ICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vQXVkaW9TY2hlZHVsZWRTb3VyY2VOb2RlLmg6CisgICAg
ICAgICogTW9kdWxlcy93ZWJhdWRpby9BdWRpb1N1bW1pbmdKdW5jdGlvbi5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpBdWRpb1N1bW1pbmdKdW5jdGlvbjo6QXVkaW9TdW1taW5nSnVuY3Rpb24pOgor
ICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vQXVkaW9TdW1taW5nSnVuY3Rpb24uaDoKKyAgICAg
ICAgKFdlYkNvcmU6OkF1ZGlvU3VtbWluZ0p1bmN0aW9uOjpjb250ZXh0KToKKyAgICAgICAgKiBN
b2R1bGVzL3dlYmF1ZGlvL0JpcXVhZEZpbHRlck5vZGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
QmlxdWFkRmlsdGVyTm9kZTo6QmlxdWFkRmlsdGVyTm9kZSk6CisgICAgICAgICogTW9kdWxlcy93
ZWJhdWRpby9CaXF1YWRGaWx0ZXJOb2RlLmg6CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9C
aXF1YWRQcm9jZXNzb3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QmlxdWFkUHJvY2Vzc29yOjpC
aXF1YWRQcm9jZXNzb3IpOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vQmlxdWFkUHJvY2Vz
c29yLmg6CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9DaGFubmVsTWVyZ2VyTm9kZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpDaGFubmVsTWVyZ2VyTm9kZTo6Y3JlYXRlKToKKyAgICAgICAg
KFdlYkNvcmU6OkNoYW5uZWxNZXJnZXJOb2RlOjpDaGFubmVsTWVyZ2VyTm9kZSk6CisgICAgICAg
ICogTW9kdWxlcy93ZWJhdWRpby9DaGFubmVsTWVyZ2VyTm9kZS5oOgorICAgICAgICAqIE1vZHVs
ZXMvd2ViYXVkaW8vQ2hhbm5lbFNwbGl0dGVyTm9kZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpD
aGFubmVsU3BsaXR0ZXJOb2RlOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6Q2hhbm5lbFNw
bGl0dGVyTm9kZTo6Q2hhbm5lbFNwbGl0dGVyTm9kZSk6CisgICAgICAgICogTW9kdWxlcy93ZWJh
dWRpby9DaGFubmVsU3BsaXR0ZXJOb2RlLmg6CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9D
b252b2x2ZXJOb2RlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbnZvbHZlck5vZGU6OkNvbnZv
bHZlck5vZGUpOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vQ29udm9sdmVyTm9kZS5oOgor
ICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vRGVmYXVsdEF1ZGlvRGVzdGluYXRpb25Ob2RlLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkRlZmF1bHRBdWRpb0Rlc3RpbmF0aW9uTm9kZTo6RGVmYXVs
dEF1ZGlvRGVzdGluYXRpb25Ob2RlKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL0RlZmF1
bHRBdWRpb0Rlc3RpbmF0aW9uTm9kZS5oOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vRGVs
YXlOb2RlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRlbGF5Tm9kZTo6RGVsYXlOb2RlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkRlbGF5Tm9kZTo6Y3JlYXRlKToKKyAgICAgICAgKiBNb2R1bGVzL3dl
YmF1ZGlvL0RlbGF5Tm9kZS5oOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vRGVsYXlQcm9j
ZXNzb3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGVsYXlQcm9jZXNzb3I6OkRlbGF5UHJvY2Vz
c29yKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL0RlbGF5UHJvY2Vzc29yLmg6CisgICAg
ICAgICogTW9kdWxlcy93ZWJhdWRpby9EaXN0YW5jZU1vZGVsVHlwZS5oOiBDb3BpZWQgZnJvbSBT
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL09mZmxpbmVBdWRpb0NvbnRleHQuaWRsLgor
ICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vRGlzdGFuY2VNb2RlbFR5cGUuaWRsOiBDb3BpZWQg
ZnJvbSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL09mZmxpbmVBdWRpb0NvbnRleHQu
aWRsLgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vRHluYW1pY3NDb21wcmVzc29yTm9kZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpEeW5hbWljc0NvbXByZXNzb3JOb2RlOjpEeW5hbWljc0Nv
bXByZXNzb3JOb2RlKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL0R5bmFtaWNzQ29tcHJl
c3Nvck5vZGUuaDoKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL0dhaW5Ob2RlLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkdhaW5Ob2RlOjpHYWluTm9kZSk6CisgICAgICAgICogTW9kdWxlcy93
ZWJhdWRpby9HYWluTm9kZS5oOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vTWVkaWFFbGVt
ZW50QXVkaW9Tb3VyY2VOb2RlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhRWxlbWVudEF1
ZGlvU291cmNlTm9kZTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhRWxlbWVudEF1
ZGlvU291cmNlTm9kZTo6TWVkaWFFbGVtZW50QXVkaW9Tb3VyY2VOb2RlKToKKyAgICAgICAgKFdl
YkNvcmU6Ok1lZGlhRWxlbWVudEF1ZGlvU291cmNlTm9kZTo6c2V0Rm9ybWF0KToKKyAgICAgICAg
KiBNb2R1bGVzL3dlYmF1ZGlvL01lZGlhRWxlbWVudEF1ZGlvU291cmNlTm9kZS5oOgorICAgICAg
ICAqIE1vZHVsZXMvd2ViYXVkaW8vTWVkaWFTdHJlYW1BdWRpb0Rlc3RpbmF0aW9uTm9kZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbUF1ZGlvRGVzdGluYXRpb25Ob2RlOjpjcmVh
dGUpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTdHJlYW1BdWRpb0Rlc3RpbmF0aW9uTm9kZTo6
TWVkaWFTdHJlYW1BdWRpb0Rlc3RpbmF0aW9uTm9kZSk6CisgICAgICAgICogTW9kdWxlcy93ZWJh
dWRpby9NZWRpYVN0cmVhbUF1ZGlvRGVzdGluYXRpb25Ob2RlLmg6CisgICAgICAgICogTW9kdWxl
cy93ZWJhdWRpby9NZWRpYVN0cmVhbUF1ZGlvU291cmNlTm9kZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpNZWRpYVN0cmVhbUF1ZGlvU291cmNlTm9kZTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNv
cmU6Ok1lZGlhU3RyZWFtQXVkaW9Tb3VyY2VOb2RlOjpNZWRpYVN0cmVhbUF1ZGlvU291cmNlTm9k
ZSk6CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9NZWRpYVN0cmVhbUF1ZGlvU291cmNlTm9k
ZS5oOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vT2ZmbGluZUF1ZGlvQ29udGV4dC5pZGw6
CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9PZmZsaW5lQXVkaW9EZXN0aW5hdGlvbk5vZGUu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6T2ZmbGluZUF1ZGlvRGVzdGluYXRpb25Ob2RlOjpPZmZs
aW5lQXVkaW9EZXN0aW5hdGlvbk5vZGUpOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vT2Zm
bGluZUF1ZGlvRGVzdGluYXRpb25Ob2RlLmg6CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9P
c2NpbGxhdG9yTm9kZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpPc2NpbGxhdG9yTm9kZTo6Y3Jl
YXRlKToKKyAgICAgICAgKFdlYkNvcmU6Ok9zY2lsbGF0b3JOb2RlOjpPc2NpbGxhdG9yTm9kZSk6
CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9Pc2NpbGxhdG9yTm9kZS5oOgorICAgICAgICAq
IE1vZHVsZXMvd2ViYXVkaW8vUGFubmVyTm9kZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQYW5u
ZXJOb2RlQmFzZTo6UGFubmVyTm9kZUJhc2UpOgorICAgICAgICAoV2ViQ29yZTo6UGFubmVyTm9k
ZTo6UGFubmVyTm9kZSk6CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9QYW5uZXJOb2RlLmg6
CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9QYW5uZXJOb2RlLmlkbDoKKyAgICAgICAgKiBN
b2R1bGVzL3dlYmF1ZGlvL1Bhbm5pbmdNb2RlbFR5cGUuaDogQ29waWVkIGZyb20gU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJhdWRpby9PZmZsaW5lQXVkaW9Db250ZXh0LmlkbC4KKyAgICAgICAg
KiBNb2R1bGVzL3dlYmF1ZGlvL1Bhbm5pbmdNb2RlbFR5cGUuaWRsOiBDb3BpZWQgZnJvbSBTb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL09mZmxpbmVBdWRpb0NvbnRleHQuaWRsLgorICAg
ICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vU2NyaXB0UHJvY2Vzc29yTm9kZS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpTY3JpcHRQcm9jZXNzb3JOb2RlOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29y
ZTo6U2NyaXB0UHJvY2Vzc29yTm9kZTo6U2NyaXB0UHJvY2Vzc29yTm9kZSk6CisgICAgICAgICog
TW9kdWxlcy93ZWJhdWRpby9TY3JpcHRQcm9jZXNzb3JOb2RlLmg6CisgICAgICAgICogTW9kdWxl
cy93ZWJhdWRpby9XYXZlU2hhcGVyTm9kZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXYXZlU2hh
cGVyTm9kZTo6V2F2ZVNoYXBlck5vZGUpOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vV2F2
ZVNoYXBlck5vZGUuaDoKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL1dlYktpdEF1ZGlvQ29u
dGV4dC5jcHA6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVk
aW9Db250ZXh0LmNwcC4KKyAgICAgICAgKFdlYkNvcmU6OldlYktpdEF1ZGlvQ29udGV4dDo6aXNT
YW1wbGVSYXRlUmFuZ2VHb29kKToKKyAgICAgICAgKFdlYkNvcmU6OldlYktpdEF1ZGlvQ29udGV4
dDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OldlYktpdEF1ZGlvQ29udGV4dDo6V2ViS2l0
QXVkaW9Db250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OldlYktpdEF1ZGlvQ29udGV4dDo6Y29u
c3RydWN0Q29tbW9uKToKKyAgICAgICAgKFdlYkNvcmU6OldlYktpdEF1ZGlvQ29udGV4dDo6fldl
YktpdEF1ZGlvQ29udGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJLaXRBdWRpb0NvbnRleHQ6
OmxhenlJbml0aWFsaXplKToKKyAgICAgICAgKFdlYkNvcmU6OldlYktpdEF1ZGlvQ29udGV4dDo6
Y2xlYXIpOgorICAgICAgICAoV2ViQ29yZTo6V2ViS2l0QXVkaW9Db250ZXh0Ojp1bmluaXRpYWxp
emUpOgorICAgICAgICAoV2ViQ29yZTo6V2ViS2l0QXVkaW9Db250ZXh0Ojppc0luaXRpYWxpemVk
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OldlYktpdEF1ZGlvQ29udGV4dDo6YWRkUmVhY3Rp
b24pOgorICAgICAgICAoV2ViQ29yZTo6V2ViS2l0QXVkaW9Db250ZXh0OjpzZXRTdGF0ZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpXZWJLaXRBdWRpb0NvbnRleHQ6OnN0b3ApOgorICAgICAgICAoV2Vi
Q29yZTo6V2ViS2l0QXVkaW9Db250ZXh0OjpzdXNwZW5kKToKKyAgICAgICAgKFdlYkNvcmU6Oldl
YktpdEF1ZGlvQ29udGV4dDo6cmVzdW1lKToKKyAgICAgICAgKFdlYkNvcmU6OldlYktpdEF1ZGlv
Q29udGV4dDo6YWN0aXZlRE9NT2JqZWN0TmFtZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpX
ZWJLaXRBdWRpb0NvbnRleHQ6Omhvc3RpbmdEb2N1bWVudElkZW50aWZpZXIgY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6V2ViS2l0QXVkaW9Db250ZXh0Ojppc1N1c3BlbmRlZCBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpXZWJLaXRBdWRpb0NvbnRleHQ6OnZpc2liaWxpdHlTdGF0ZUNoYW5n
ZWQpOgorICAgICAgICAoV2ViQ29yZTo6V2ViS2l0QXVkaW9Db250ZXh0Ojp3b3VsZFRhaW50T3Jp
Z2luIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OldlYktpdEF1ZGlvQ29udGV4dDo6Y3JlYXRl
QnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OldlYktpdEF1ZGlvQ29udGV4dDo6ZGVjb2RlQXVk
aW9EYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OldlYktpdEF1ZGlvQ29udGV4dDo6Y3JlYXRlQnVm
ZmVyU291cmNlKToKKyAgICAgICAgKFdlYkNvcmU6OldlYktpdEF1ZGlvQ29udGV4dDo6Y3JlYXRl
TWVkaWFFbGVtZW50U291cmNlKToKKyAgICAgICAgKFdlYkNvcmU6OldlYktpdEF1ZGlvQ29udGV4
dDo6Y3JlYXRlTWVkaWFTdHJlYW1Tb3VyY2UpOgorICAgICAgICAoV2ViQ29yZTo6V2ViS2l0QXVk
aW9Db250ZXh0OjpjcmVhdGVNZWRpYVN0cmVhbURlc3RpbmF0aW9uKToKKyAgICAgICAgKFdlYkNv
cmU6OldlYktpdEF1ZGlvQ29udGV4dDo6Y3JlYXRlU2NyaXB0UHJvY2Vzc29yKToKKyAgICAgICAg
KFdlYkNvcmU6OldlYktpdEF1ZGlvQ29udGV4dDo6Y3JlYXRlQmlxdWFkRmlsdGVyKToKKyAgICAg
ICAgKFdlYkNvcmU6OldlYktpdEF1ZGlvQ29udGV4dDo6Y3JlYXRlV2F2ZVNoYXBlcik6CisgICAg
ICAgIChXZWJDb3JlOjpXZWJLaXRBdWRpb0NvbnRleHQ6OmNyZWF0ZVBhbm5lcik6CisgICAgICAg
IChXZWJDb3JlOjpXZWJLaXRBdWRpb0NvbnRleHQ6OmNyZWF0ZUNvbnZvbHZlcik6CisgICAgICAg
IChXZWJDb3JlOjpXZWJLaXRBdWRpb0NvbnRleHQ6OmNyZWF0ZUR5bmFtaWNzQ29tcHJlc3Nvcik6
CisgICAgICAgIChXZWJDb3JlOjpXZWJLaXRBdWRpb0NvbnRleHQ6OmNyZWF0ZUFuYWx5c2VyKToK
KyAgICAgICAgKFdlYkNvcmU6OldlYktpdEF1ZGlvQ29udGV4dDo6Y3JlYXRlR2Fpbik6CisgICAg
ICAgIChXZWJDb3JlOjpXZWJLaXRBdWRpb0NvbnRleHQ6OmNyZWF0ZURlbGF5KToKKyAgICAgICAg
KFdlYkNvcmU6OldlYktpdEF1ZGlvQ29udGV4dDo6Y3JlYXRlQ2hhbm5lbFNwbGl0dGVyKToKKyAg
ICAgICAgKFdlYkNvcmU6OldlYktpdEF1ZGlvQ29udGV4dDo6Y3JlYXRlQ2hhbm5lbE1lcmdlcik6
CisgICAgICAgIChXZWJDb3JlOjpXZWJLaXRBdWRpb0NvbnRleHQ6OmNyZWF0ZU9zY2lsbGF0b3Ip
OgorICAgICAgICAoV2ViQ29yZTo6V2ViS2l0QXVkaW9Db250ZXh0OjpjcmVhdGVQZXJpb2RpY1dh
dmUpOgorICAgICAgICAoV2ViQ29yZTo6V2ViS2l0QXVkaW9Db250ZXh0Ojpub3RpZnlOb2RlRmlu
aXNoZWRQcm9jZXNzaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OldlYktpdEF1ZGlvQ29udGV4dDo6
ZGVyZWZGaW5pc2hlZFNvdXJjZU5vZGVzKToKKyAgICAgICAgKFdlYkNvcmU6OldlYktpdEF1ZGlv
Q29udGV4dDo6cmVmTm9kZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJLaXRBdWRpb0NvbnRleHQ6
OmRlcmVmTm9kZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJLaXRBdWRpb0NvbnRleHQ6OmRlcmVm
VW5maW5pc2hlZFNvdXJjZU5vZGVzKToKKyAgICAgICAgKFdlYkNvcmU6OldlYktpdEF1ZGlvQ29u
dGV4dDo6bG9jayk6CisgICAgICAgIChXZWJDb3JlOjpXZWJLaXRBdWRpb0NvbnRleHQ6OnRyeUxv
Y2spOgorICAgICAgICAoV2ViQ29yZTo6V2ViS2l0QXVkaW9Db250ZXh0Ojp1bmxvY2spOgorICAg
ICAgICAoV2ViQ29yZTo6V2ViS2l0QXVkaW9Db250ZXh0Ojppc0F1ZGlvVGhyZWFkIGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6OldlYktpdEF1ZGlvQ29udGV4dDo6aXNHcmFwaE93bmVyIGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6OldlYktpdEF1ZGlvQ29udGV4dDo6YWRkRGVmZXJyZWRGaW5p
c2hEZXJlZik6CisgICAgICAgIChXZWJDb3JlOjpXZWJLaXRBdWRpb0NvbnRleHQ6OmhhbmRsZVBy
ZVJlbmRlclRhc2tzKToKKyAgICAgICAgKFdlYkNvcmU6OldlYktpdEF1ZGlvQ29udGV4dDo6aGFu
ZGxlUG9zdFJlbmRlclRhc2tzKToKKyAgICAgICAgKFdlYkNvcmU6OldlYktpdEF1ZGlvQ29udGV4
dDo6aGFuZGxlRGVmZXJyZWRGaW5pc2hEZXJlZnMpOgorICAgICAgICAoV2ViQ29yZTo6V2ViS2l0
QXVkaW9Db250ZXh0OjptYXJrRm9yRGVsZXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6V2ViS2l0
QXVkaW9Db250ZXh0OjpzY2hlZHVsZU5vZGVEZWxldGlvbik6CisgICAgICAgIChXZWJDb3JlOjpX
ZWJLaXRBdWRpb0NvbnRleHQ6OmRlbGV0ZU1hcmtlZE5vZGVzKToKKyAgICAgICAgKFdlYkNvcmU6
OldlYktpdEF1ZGlvQ29udGV4dDo6bWFya1N1bW1pbmdKdW5jdGlvbkRpcnR5KToKKyAgICAgICAg
KFdlYkNvcmU6OldlYktpdEF1ZGlvQ29udGV4dDo6cmVtb3ZlTWFya2VkU3VtbWluZ0p1bmN0aW9u
KToKKyAgICAgICAgKFdlYkNvcmU6OldlYktpdEF1ZGlvQ29udGV4dDo6bWFya0F1ZGlvTm9kZU91
dHB1dERpcnR5KToKKyAgICAgICAgKFdlYkNvcmU6OldlYktpdEF1ZGlvQ29udGV4dDo6aGFuZGxl
RGlydHlBdWRpb1N1bW1pbmdKdW5jdGlvbnMpOgorICAgICAgICAoV2ViQ29yZTo6V2ViS2l0QXVk
aW9Db250ZXh0OjpoYW5kbGVEaXJ0eUF1ZGlvTm9kZU91dHB1dHMpOgorICAgICAgICAoV2ViQ29y
ZTo6V2ViS2l0QXVkaW9Db250ZXh0OjphZGRBdXRvbWF0aWNQdWxsTm9kZSk6CisgICAgICAgIChX
ZWJDb3JlOjpXZWJLaXRBdWRpb0NvbnRleHQ6OnJlbW92ZUF1dG9tYXRpY1B1bGxOb2RlKToKKyAg
ICAgICAgKFdlYkNvcmU6OldlYktpdEF1ZGlvQ29udGV4dDo6dXBkYXRlQXV0b21hdGljUHVsbE5v
ZGVzKToKKyAgICAgICAgKFdlYkNvcmU6OldlYktpdEF1ZGlvQ29udGV4dDo6cHJvY2Vzc0F1dG9t
YXRpY1B1bGxOb2Rlcyk6CisgICAgICAgIChXZWJDb3JlOjpXZWJLaXRBdWRpb0NvbnRleHQ6Om5v
ZGVXaWxsQmVnaW5QbGF5YmFjayk6CisgICAgICAgIChXZWJDb3JlOjpzaG91bGREb2N1bWVudEFs
bG93V2ViQXVkaW9Ub0F1dG9QbGF5KToKKyAgICAgICAgKFdlYkNvcmU6OldlYktpdEF1ZGlvQ29u
dGV4dDo6d2lsbEJlZ2luUGxheWJhY2spOgorICAgICAgICAoV2ViQ29yZTo6V2ViS2l0QXVkaW9D
b250ZXh0Ojp3aWxsUGF1c2VQbGF5YmFjayk6CisgICAgICAgIChXZWJDb3JlOjpXZWJLaXRBdWRp
b0NvbnRleHQ6OnN0YXJ0UmVuZGVyaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OldlYktpdEF1ZGlv
Q29udGV4dDo6bWVkaWFDYW5TdGFydCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJLaXRBdWRpb0Nv
bnRleHQ6Om1lZGlhU3RhdGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6V2ViS2l0QXVkaW9D
b250ZXh0OjpwYWdlTXV0ZWRTdGF0ZURpZENoYW5nZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJL
aXRBdWRpb0NvbnRleHQ6OmlzUGxheWluZ0F1ZGlvRGlkQ2hhbmdlKToKKyAgICAgICAgKFdlYkNv
cmU6OldlYktpdEF1ZGlvQ29udGV4dDo6ZmluaXNoZWRSZW5kZXJpbmcpOgorICAgICAgICAoV2Vi
Q29yZTo6V2ViS2l0QXVkaW9Db250ZXh0OjpkaXNwYXRjaEV2ZW50KToKKyAgICAgICAgKFdlYkNv
cmU6OldlYktpdEF1ZGlvQ29udGV4dDo6aW5jcmVtZW50QWN0aXZlU291cmNlQ291bnQpOgorICAg
ICAgICAoV2ViQ29yZTo6V2ViS2l0QXVkaW9Db250ZXh0OjpkZWNyZW1lbnRBY3RpdmVTb3VyY2VD
b3VudCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJLaXRBdWRpb0NvbnRleHQ6OnN1c3BlbmRSZW5k
ZXJpbmcpOgorICAgICAgICAoV2ViQ29yZTo6V2ViS2l0QXVkaW9Db250ZXh0OjpyZXN1bWVSZW5k
ZXJpbmcpOgorICAgICAgICAoV2ViQ29yZTo6V2ViS2l0QXVkaW9Db250ZXh0OjpjbG9zZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpXZWJLaXRBdWRpb0NvbnRleHQ6OnN1c3BlbmRQbGF5YmFjayk6Cisg
ICAgICAgIChXZWJDb3JlOjpXZWJLaXRBdWRpb0NvbnRleHQ6Om1heVJlc3VtZVBsYXliYWNrKToK
KyAgICAgICAgKFdlYkNvcmU6OldlYktpdEF1ZGlvQ29udGV4dDo6cG9zdFRhc2spOgorICAgICAg
ICAoV2ViQ29yZTo6V2ViS2l0QXVkaW9Db250ZXh0OjpvcmlnaW4gY29uc3QpOgorICAgICAgICAo
V2ViQ29yZTo6V2ViS2l0QXVkaW9Db250ZXh0OjphZGRDb25zb2xlTWVzc2FnZSk6CisgICAgICAg
IChXZWJDb3JlOjpXZWJLaXRBdWRpb0NvbnRleHQ6OmNsZWFyUGVuZGluZ0FjdGl2aXR5KToKKyAg
ICAgICAgKFdlYkNvcmU6OldlYktpdEF1ZGlvQ29udGV4dDo6bWFrZVBlbmRpbmdBY3Rpdml0eSk6
CisgICAgICAgIChXZWJDb3JlOjpXZWJLaXRBdWRpb0NvbnRleHQ6OmxvZ0NoYW5uZWwgY29uc3Qp
OgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vV2ViS2l0QXVkaW9Db250ZXh0Lmg6IENvcGll
ZCBmcm9tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0LmguCisg
ICAgICAgIChXZWJDb3JlOjpXZWJLaXRBdWRpb0NvbnRleHQ6OmRlc3RpbmF0aW9uKToKKyAgICAg
ICAgKFdlYkNvcmU6OldlYktpdEF1ZGlvQ29udGV4dDo6YWN0aXZlU291cmNlQ291bnQgY29uc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6V2ViS2l0QXVkaW9Db250ZXh0OjpsaXN0ZW5lcik6CisgICAg
ICAgIChXZWJDb3JlOjpXZWJLaXRBdWRpb0NvbnRleHQ6OmlzQ2xvc2VkIGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OldlYktpdEF1ZGlvQ29udGV4dDo6Y29ubmVjdGlvbkNvdW50IGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6OldlYktpdEF1ZGlvQ29udGV4dDo6YXVkaW9UaHJlYWQgY29uc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6V2ViS2l0QXVkaW9Db250ZXh0OjptYXhOdW1iZXJPZkNoYW5u
ZWxzKToKKyAgICAgICAgKFdlYkNvcmU6OldlYktpdEF1ZGlvQ29udGV4dDo6dXNlckdlc3R1cmVS
ZXF1aXJlZEZvckF1ZGlvU3RhcnQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6V2ViS2l0QXVk
aW9Db250ZXh0OjpwYWdlQ29uc2VudFJlcXVpcmVkRm9yQXVkaW9TdGFydCBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpXZWJLaXRBdWRpb0NvbnRleHQ6OnN0YXRlIGNvbnN0KToKKyAgICAgICAg
KGlzVHlwZSk6CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9XZWJLaXRBdWRpb0NvbnRleHQu
aWRsOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQ29u
dGV4dC5pZGwuCisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9XZWJLaXRBdWRpb1Bhbm5lck5v
ZGUuY3BwOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1Bhbm5l
ck5vZGUuY3BwLgorICAgICAgICAoV2ViQ29yZTo6Zml4TkFOcyk6CisgICAgICAgIChXZWJDb3Jl
OjpXZWJLaXRBdWRpb1Bhbm5lck5vZGU6OldlYktpdEF1ZGlvUGFubmVyTm9kZSk6CisgICAgICAg
IChXZWJDb3JlOjpXZWJLaXRBdWRpb1Bhbm5lck5vZGU6On5XZWJLaXRBdWRpb1Bhbm5lck5vZGUp
OgorICAgICAgICAoV2ViQ29yZTo6V2ViS2l0QXVkaW9QYW5uZXJOb2RlOjpwdWxsSW5wdXRzKToK
KyAgICAgICAgKFdlYkNvcmU6OldlYktpdEF1ZGlvUGFubmVyTm9kZTo6cHJvY2Vzcyk6CisgICAg
ICAgIChXZWJDb3JlOjpXZWJLaXRBdWRpb1Bhbm5lck5vZGU6OnJlc2V0KToKKyAgICAgICAgKFdl
YkNvcmU6OldlYktpdEF1ZGlvUGFubmVyTm9kZTo6aW5pdGlhbGl6ZSk6CisgICAgICAgIChXZWJD
b3JlOjpXZWJLaXRBdWRpb1Bhbm5lck5vZGU6OnVuaW5pdGlhbGl6ZSk6CisgICAgICAgIChXZWJD
b3JlOjpXZWJLaXRBdWRpb1Bhbm5lck5vZGU6Omxpc3RlbmVyKToKKyAgICAgICAgKFdlYkNvcmU6
OldlYktpdEF1ZGlvUGFubmVyTm9kZTo6c2V0UGFubmluZ01vZGVsKToKKyAgICAgICAgKFdlYkNv
cmU6OldlYktpdEF1ZGlvUGFubmVyTm9kZTo6ZGlzdGFuY2VNb2RlbCBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpXZWJLaXRBdWRpb1Bhbm5lck5vZGU6OnNldERpc3RhbmNlTW9kZWwpOgorICAg
ICAgICAoV2ViQ29yZTo6V2ViS2l0QXVkaW9QYW5uZXJOb2RlOjpnZXRBemltdXRoRWxldmF0aW9u
KToKKyAgICAgICAgKFdlYkNvcmU6OldlYktpdEF1ZGlvUGFubmVyTm9kZTo6ZG9wcGxlclJhdGUp
OgorICAgICAgICAoV2ViQ29yZTo6V2ViS2l0QXVkaW9QYW5uZXJOb2RlOjpkaXN0YW5jZUNvbmVH
YWluKToKKyAgICAgICAgKFdlYkNvcmU6OldlYktpdEF1ZGlvUGFubmVyTm9kZTo6bm90aWZ5QXVk
aW9Tb3VyY2VzQ29ubmVjdGVkVG9Ob2RlKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL1dl
YktpdEF1ZGlvUGFubmVyTm9kZS5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmF1ZGlvL1Bhbm5lck5vZGUuaC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL1dlYktp
dEF1ZGlvUGFubmVyTm9kZS5pZGw6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViYXVkaW8vUGFubmVyTm9kZS5pZGwuCisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9XZWJL
aXRPZmZsaW5lQXVkaW9Db250ZXh0LmNwcDogQ29waWVkIGZyb20gU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJhdWRpby9EZWxheU5vZGUuY3BwLgorICAgICAgICAoV2ViQ29yZTo6V2ViS2l0T2Zm
bGluZUF1ZGlvQ29udGV4dDo6V2ViS2l0T2ZmbGluZUF1ZGlvQ29udGV4dCk6CisgICAgICAgIChX
ZWJDb3JlOjpXZWJLaXRPZmZsaW5lQXVkaW9Db250ZXh0OjpjcmVhdGUpOgorICAgICAgICAqIE1v
ZHVsZXMvd2ViYXVkaW8vV2ViS2l0T2ZmbGluZUF1ZGlvQ29udGV4dC5oOiBDb3BpZWQgZnJvbSBT
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0RlbGF5Tm9kZS5oLgorICAgICAgICAqIE1v
ZHVsZXMvd2ViYXVkaW8vV2ViS2l0T2ZmbGluZUF1ZGlvQ29udGV4dC5pZGw6IENvcGllZCBmcm9t
IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vT2ZmbGluZUF1ZGlvQ29udGV4dC5pZGwu
CisgICAgICAgICogU291cmNlcy50eHQ6CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qOgorICAgICAgICAqIGJpbmRpbmdzL2pzL1dlYkNvcmVCdWlsdGluTmFtZXMu
aDoKKyAgICAgICAgKiBkb20vRXZlbnRUYXJnZXRGYWN0b3J5LmluOgorICAgICAgICAqIHBhZ2Uv
U2V0dGluZ3MueWFtbDoKKyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFscy5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpJbnRlcm5hbHM6OnNldEF1ZGlvQ29udGV4dFJlc3RyaWN0aW9ucyk6CisgICAg
ICAgICogdGVzdGluZy9JbnRlcm5hbHMuaDoKKyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFscy5p
ZGw6CisKIDIwMjAtMDYtMTcgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAg
ICAgICBVbnJldmlld2VkIGF0dGVtcHQgdG8gZml4IGludGVybmFsIG1hY09TIGJ1aWxkIGFmdGVy
IHIyNjMxNTcuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9X
ZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDk4ODczODE3NDljOGNiNDAxNjNlNjdkYTA0MDg4MWFlNmY2
M2Q4NjEuLmUyMjNkYWE3Njc4ZTc4YmVmZjE4ZDQ3MjdlZWMzOGFhYWFjY2E0NmEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMTUgQEAKKzIwMjAtMDYtMTcgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxl
LmNvbT4KKworICAgICAgICBBZGQgZXhwZXJpbWVudGFsIGZlYXR1cmUgZmxhZyBmb3IgbW9kZXJu
ICYgdW5wcmVmaXhlZCBXZWJBdWRpbyBBUEkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTIxMzI2OAorCisgICAgICAgIFJldmlld2VkIGJ5IEplciBOb2Js
ZS4KKworICAgICAgICBBZGQgZXhwZXJpbWVudGFsIGZlYXR1cmUgZmxhZyBmb3IgbW9kZXJuICYg
dW5wcmVmaXhlZCBXZWJBdWRpbyBBUEksCisgICAgICAgIG9mZiBieSBkZWZhdWx0LgorCisgICAg
ICAgICogU2hhcmVkL1dlYlByZWZlcmVuY2VzLnlhbWw6CisKIDIwMjAtMDYtMTcgIERhcnJ5bCBQ
b2d1ZSAgPGRhcnJ5bEBkcG9ndWUuY2E+CiAKICAgICAgICAgSW5kZXhlZERCOiBTdXBwb3J0IElE
QkZhY3RvcnkgZGF0YWJhc2VzIG1ldGhvZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ01h
a2VMaXN0cy50eHQgYi9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAppbmRleCA5NzU5NDg5
NWQ4YzdhYzI4MTE4Yzk3YzRmMTlhZTViNmFiODkxYzllLi4zOTlhNmJkM2ZkMDk2YzUxMTc4ODFj
OTI1NzY5MTUwNTEzM2MzMDExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3Rz
LnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dApAQCAtNDMzLDYgKzQzMyw3
IEBAIHNldChXZWJDb3JlX05PTl9TVkdfSURMX0ZJTEVTCiAgICAgTW9kdWxlcy93ZWJhdWRpby9B
dWRpb0J1ZmZlckNhbGxiYWNrLmlkbAogICAgIE1vZHVsZXMvd2ViYXVkaW8vQXVkaW9CdWZmZXJT
b3VyY2VOb2RlLmlkbAogICAgIE1vZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0LmlkbAorICAg
IE1vZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0U3RhdGUuaWRsCiAgICAgTW9kdWxlcy93ZWJh
dWRpby9BdWRpb0Rlc3RpbmF0aW9uTm9kZS5pZGwKICAgICBNb2R1bGVzL3dlYmF1ZGlvL0F1ZGlv
TGlzdGVuZXIuaWRsCiAgICAgTW9kdWxlcy93ZWJhdWRpby9BdWRpb05vZGUuaWRsCkBAIC00NDMs
NiArNDQ0LDcgQEAgc2V0KFdlYkNvcmVfTk9OX1NWR19JRExfRklMRVMKICAgICBNb2R1bGVzL3dl
YmF1ZGlvL0NoYW5uZWxTcGxpdHRlck5vZGUuaWRsCiAgICAgTW9kdWxlcy93ZWJhdWRpby9Db252
b2x2ZXJOb2RlLmlkbAogICAgIE1vZHVsZXMvd2ViYXVkaW8vRGVsYXlOb2RlLmlkbAorICAgIE1v
ZHVsZXMvd2ViYXVkaW8vRGlzdGFuY2VNb2RlbFR5cGUuaWRsCiAgICAgTW9kdWxlcy93ZWJhdWRp
by9EeW5hbWljc0NvbXByZXNzb3JOb2RlLmlkbAogICAgIE1vZHVsZXMvd2ViYXVkaW8vR2Fpbk5v
ZGUuaWRsCiAgICAgTW9kdWxlcy93ZWJhdWRpby9NZWRpYUVsZW1lbnRBdWRpb1NvdXJjZU5vZGUu
aWRsCkBAIC00NTIsOSArNDU0LDEzIEBAIHNldChXZWJDb3JlX05PTl9TVkdfSURMX0ZJTEVTCiAg
ICAgTW9kdWxlcy93ZWJhdWRpby9PZmZsaW5lQXVkaW9Db250ZXh0LmlkbAogICAgIE1vZHVsZXMv
d2ViYXVkaW8vT3NjaWxsYXRvck5vZGUuaWRsCiAgICAgTW9kdWxlcy93ZWJhdWRpby9QYW5uZXJO
b2RlLmlkbAorICAgIE1vZHVsZXMvd2ViYXVkaW8vUGFubmluZ01vZGVsVHlwZS5pZGwKICAgICBN
b2R1bGVzL3dlYmF1ZGlvL1BlcmlvZGljV2F2ZS5pZGwKICAgICBNb2R1bGVzL3dlYmF1ZGlvL1Nj
cmlwdFByb2Nlc3Nvck5vZGUuaWRsCiAgICAgTW9kdWxlcy93ZWJhdWRpby9XYXZlU2hhcGVyTm9k
ZS5pZGwKKyAgICBNb2R1bGVzL3dlYmF1ZGlvL1dlYktpdEF1ZGlvQ29udGV4dC5pZGwKKyAgICBN
b2R1bGVzL3dlYmF1ZGlvL1dlYktpdEF1ZGlvUGFubmVyTm9kZS5pZGwKKyAgICBNb2R1bGVzL3dl
YmF1ZGlvL1dlYktpdE9mZmxpbmVBdWRpb0NvbnRleHQuaWRsCiAKICAgICBNb2R1bGVzL3dlYmF1
dGhuL0F0dGVzdGF0aW9uQ29udmV5YW5jZVByZWZlcmVuY2UuaWRsCiAgICAgTW9kdWxlcy93ZWJh
dXRobi9BdXRoZW50aWNhdGlvbkV4dGVuc2lvbnNDbGllbnRJbnB1dHMuaWRsCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy1pbnB1dC54Y2ZpbGVsaXN0IGIvU291cmNl
L1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMtaW5wdXQueGNmaWxlbGlzdAppbmRleCA2YTdhYTdkMTRl
YmI0MzdkNzQxZWMyZWY4NTMzNzc1ZDM0NGQ0NjU0Li5mN2Q2NGMxOTNkMGU3ZGYyODE2NWJkZDc0
YTQwZDNmOTBlNmE4MjEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNl
cy1pbnB1dC54Y2ZpbGVsaXN0CisrKyBiL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLWlu
cHV0LnhjZmlsZWxpc3QKQEAgLTMwMCw2ICszMDAsNyBAQCAkKFBST0pFQ1RfRElSKS9Nb2R1bGVz
L3dlYmF1ZGlvL0F1ZGlvQnVmZmVyLmlkbAogJChQUk9KRUNUX0RJUikvTW9kdWxlcy93ZWJhdWRp
by9BdWRpb0J1ZmZlckNhbGxiYWNrLmlkbAogJChQUk9KRUNUX0RJUikvTW9kdWxlcy93ZWJhdWRp
by9BdWRpb0J1ZmZlclNvdXJjZU5vZGUuaWRsCiAkKFBST0pFQ1RfRElSKS9Nb2R1bGVzL3dlYmF1
ZGlvL0F1ZGlvQ29udGV4dC5pZGwKKyQoUFJPSkVDVF9ESVIpL01vZHVsZXMvd2ViYXVkaW8vQXVk
aW9Db250ZXh0U3RhdGUuaWRsCiAkKFBST0pFQ1RfRElSKS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlv
RGVzdGluYXRpb25Ob2RlLmlkbAogJChQUk9KRUNUX0RJUikvTW9kdWxlcy93ZWJhdWRpby9BdWRp
b0xpc3RlbmVyLmlkbAogJChQUk9KRUNUX0RJUikvTW9kdWxlcy93ZWJhdWRpby9BdWRpb05vZGUu
aWRsCkBAIC0zMTAsNiArMzExLDcgQEAgJChQUk9KRUNUX0RJUikvTW9kdWxlcy93ZWJhdWRpby9D
aGFubmVsTWVyZ2VyTm9kZS5pZGwKICQoUFJPSkVDVF9ESVIpL01vZHVsZXMvd2ViYXVkaW8vQ2hh
bm5lbFNwbGl0dGVyTm9kZS5pZGwKICQoUFJPSkVDVF9ESVIpL01vZHVsZXMvd2ViYXVkaW8vQ29u
dm9sdmVyTm9kZS5pZGwKICQoUFJPSkVDVF9ESVIpL01vZHVsZXMvd2ViYXVkaW8vRGVsYXlOb2Rl
LmlkbAorJChQUk9KRUNUX0RJUikvTW9kdWxlcy93ZWJhdWRpby9EaXN0YW5jZU1vZGVsVHlwZS5p
ZGwKICQoUFJPSkVDVF9ESVIpL01vZHVsZXMvd2ViYXVkaW8vRHluYW1pY3NDb21wcmVzc29yTm9k
ZS5pZGwKICQoUFJPSkVDVF9ESVIpL01vZHVsZXMvd2ViYXVkaW8vR2Fpbk5vZGUuaWRsCiAkKFBS
T0pFQ1RfRElSKS9Nb2R1bGVzL3dlYmF1ZGlvL01lZGlhRWxlbWVudEF1ZGlvU291cmNlTm9kZS5p
ZGwKQEAgLTMxOSw5ICszMjEsMTMgQEAgJChQUk9KRUNUX0RJUikvTW9kdWxlcy93ZWJhdWRpby9P
ZmZsaW5lQXVkaW9Db21wbGV0aW9uRXZlbnQuaWRsCiAkKFBST0pFQ1RfRElSKS9Nb2R1bGVzL3dl
YmF1ZGlvL09mZmxpbmVBdWRpb0NvbnRleHQuaWRsCiAkKFBST0pFQ1RfRElSKS9Nb2R1bGVzL3dl
YmF1ZGlvL09zY2lsbGF0b3JOb2RlLmlkbAogJChQUk9KRUNUX0RJUikvTW9kdWxlcy93ZWJhdWRp
by9QYW5uZXJOb2RlLmlkbAorJChQUk9KRUNUX0RJUikvTW9kdWxlcy93ZWJhdWRpby9QYW5uaW5n
TW9kZWxUeXBlLmlkbAogJChQUk9KRUNUX0RJUikvTW9kdWxlcy93ZWJhdWRpby9QZXJpb2RpY1dh
dmUuaWRsCiAkKFBST0pFQ1RfRElSKS9Nb2R1bGVzL3dlYmF1ZGlvL1NjcmlwdFByb2Nlc3Nvck5v
ZGUuaWRsCiAkKFBST0pFQ1RfRElSKS9Nb2R1bGVzL3dlYmF1ZGlvL1dhdmVTaGFwZXJOb2RlLmlk
bAorJChQUk9KRUNUX0RJUikvTW9kdWxlcy93ZWJhdWRpby9XZWJLaXRBdWRpb0NvbnRleHQuaWRs
CiskKFBST0pFQ1RfRElSKS9Nb2R1bGVzL3dlYmF1ZGlvL1dlYktpdEF1ZGlvUGFubmVyTm9kZS5p
ZGwKKyQoUFJPSkVDVF9ESVIpL01vZHVsZXMvd2ViYXVkaW8vV2ViS2l0T2ZmbGluZUF1ZGlvQ29u
dGV4dC5pZGwKICQoUFJPSkVDVF9ESVIpL01vZHVsZXMvd2ViYXV0aG4vQXR0ZXN0YXRpb25Db252
ZXlhbmNlUHJlZmVyZW5jZS5pZGwKICQoUFJPSkVDVF9ESVIpL01vZHVsZXMvd2ViYXV0aG4vQXV0
aGVudGljYXRpb25FeHRlbnNpb25zQ2xpZW50SW5wdXRzLmlkbAogJChQUk9KRUNUX0RJUikvTW9k
dWxlcy93ZWJhdXRobi9BdXRoZW50aWNhdGlvbkV4dGVuc2lvbnNDbGllbnRPdXRwdXRzLmlkbApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxp
c3QgYi9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlzdAppbmRl
eCBhMTQzMzYyNTE0MDJmNjgzNmVjODgwNDhmM2UwY2JkOTE0MjZiMDE3Li5jYmM2NDhhZmY4NzJl
MTdjOGFlYjJmM2RjNmU5YmM2Yjc4YzA0NDkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9E
ZXJpdmVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlzdAorKysgYi9Tb3VyY2UvV2ViQ29yZS9EZXJp
dmVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlzdApAQCAtMTU1LDYgKzE1NSw4IEBAICQoQlVJTFRf
UFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTQXVkaW9Db25maWd1cmF0aW9u
LmNwcAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNBdWRp
b0NvbmZpZ3VyYXRpb24uaAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dl
YkNvcmUvSlNBdWRpb0NvbnRleHQuY3BwCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNv
dXJjZXMvV2ViQ29yZS9KU0F1ZGlvQ29udGV4dC5oCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVy
aXZlZFNvdXJjZXMvV2ViQ29yZS9KU0F1ZGlvQ29udGV4dFN0YXRlLmNwcAorJChCVUlMVF9QUk9E
VUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNBdWRpb0NvbnRleHRTdGF0ZS5oCiAk
KEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0F1ZGlvRGVzdGlu
YXRpb25Ob2RlLmNwcAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNv
cmUvSlNBdWRpb0Rlc3RpbmF0aW9uTm9kZS5oCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZl
ZFNvdXJjZXMvV2ViQ29yZS9KU0F1ZGlvTGlzdGVuZXIuY3BwCkBAIC00ODYsNiArNDg4LDggQEAg
JChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNEZXZpY2VPcmll
bnRhdGlvbk9yTW90aW9uRXZlbnQuY3AKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291
cmNlcy9XZWJDb3JlL0pTRGV2aWNlT3JpZW50YXRpb25Pck1vdGlvbkV2ZW50LmgKICQoQlVJTFRf
UFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTRGV2aWNlT3JpZW50YXRpb25P
ck1vdGlvblBlcm1pc3Npb25TdGF0ZS5jcHAKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVk
U291cmNlcy9XZWJDb3JlL0pTRGV2aWNlT3JpZW50YXRpb25Pck1vdGlvblBlcm1pc3Npb25TdGF0
ZS5oCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0Rpc3Rh
bmNlTW9kZWxUeXBlLmNwcAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dl
YkNvcmUvSlNEaXN0YW5jZU1vZGVsVHlwZS5oCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZl
ZFNvdXJjZXMvV2ViQ29yZS9KU0RvY3VtZW50LmNwcAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rl
cml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNEb2N1bWVudC5oCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikv
RGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0RvY3VtZW50QW5kRWxlbWVudEV2ZW50SGFuZGxlcnMu
Y3BwCkBAIC0xMjI0LDYgKzEyMjgsOCBAQCAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNv
dXJjZXMvV2ViQ29yZS9KU1BhaW50V29ya2xldEdsb2JhbFNjb3BlLmNwcAogJChCVUlMVF9QUk9E
VUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNQYWludFdvcmtsZXRHbG9iYWxTY29w
ZS5oCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU1Bhbm5l
ck5vZGUuY3BwCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9K
U1Bhbm5lck5vZGUuaAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNv
cmUvSlNQYW5uaW5nTW9kZWxUeXBlLmNwcAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRT
b3VyY2VzL1dlYkNvcmUvSlNQYW5uaW5nTW9kZWxUeXBlLmgKICQoQlVJTFRfUFJPRFVDVFNfRElS
KS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTUGFyZW50Tm9kZS5jcHAKICQoQlVJTFRfUFJPRFVD
VFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTUGFyZW50Tm9kZS5oCiAkKEJVSUxUX1BS
T0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU1BhdGgyRC5jcHAKQEAgLTIwNzgs
NiArMjA4NCwxMCBAQCAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29y
ZS9KU1dlYkdQVVRleHR1cmVWaWV3LmNwcAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRT
b3VyY2VzL1dlYkNvcmUvSlNXZWJHUFVUZXh0dXJlVmlldy5oCiAkKEJVSUxUX1BST0RVQ1RTX0RJ
UikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU1dlYktpdEFuaW1hdGlvbkV2ZW50LmNwcAogJChC
VUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNXZWJLaXRBbmltYXRp
b25FdmVudC5oCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9K
U1dlYktpdEF1ZGlvQ29udGV4dC5jcHAKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291
cmNlcy9XZWJDb3JlL0pTV2ViS2l0QXVkaW9Db250ZXh0LmgKKyQoQlVJTFRfUFJPRFVDVFNfRElS
KS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTV2ViS2l0QXVkaW9QYW5uZXJOb2RlLmNwcAorJChC
VUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNXZWJLaXRBdWRpb1Bh
bm5lck5vZGUuaAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUv
SlNXZWJLaXRDU1NNYXRyaXguY3BwCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJj
ZXMvV2ViQ29yZS9KU1dlYktpdENTU01hdHJpeC5oCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVy
aXZlZFNvdXJjZXMvV2ViQ29yZS9KU1dlYktpdENTU1ZpZXdwb3J0UnVsZS5jcHAKQEAgLTIwOTQs
NiArMjEwNCw4IEBAICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3Jl
L0pTV2ViS2l0TWVkaWFLZXlzLmNwcAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3Vy
Y2VzL1dlYkNvcmUvSlNXZWJLaXRNZWRpYUtleXMuaAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rl
cml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNXZWJLaXROYW1lc3BhY2UuY3BwCiAkKEJVSUxUX1BST0RV
Q1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU1dlYktpdE5hbWVzcGFjZS5oCiskKEJV
SUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU1dlYktpdE9mZmxpbmVB
dWRpb0NvbnRleHQuY3BwCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2Vi
Q29yZS9KU1dlYktpdE9mZmxpbmVBdWRpb0NvbnRleHQuaAogJChCVUlMVF9QUk9EVUNUU19ESVIp
L0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNXZWJLaXRQbGF5YmFja1RhcmdldEF2YWlsYWJpbGl0
eUV2ZW50LmNwcAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUv
SlNXZWJLaXRQbGF5YmFja1RhcmdldEF2YWlsYWJpbGl0eUV2ZW50LmgKICQoQlVJTFRfUFJPRFVD
VFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTV2ViS2l0UG9pbnQuY3BwCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtlIGIvU291cmNlL1dlYkNvcmUv
RGVyaXZlZFNvdXJjZXMubWFrZQppbmRleCBkMjY3MDg5ZTM4NzM3ZDkyNGY5NDY1Mjk5MGNhYjky
MTNjOThiZDI4Li5iMjdjNzljZTY2M2UyYzhiOGVhNDYwYWUwODFlYmYxZGRlNzAzM2JhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtlCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UKQEAgLTM4Myw2ICszODMsNyBAQCBKU19CSU5ESU5H
X0lETFMgPSBcCiAgICAgJChXZWJDb3JlKS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQnVmZmVyQ2Fs
bGJhY2suaWRsIFwKICAgICAkKFdlYkNvcmUpL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9CdWZmZXJT
b3VyY2VOb2RlLmlkbCBcCiAgICAgJChXZWJDb3JlKS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQ29u
dGV4dC5pZGwgXAorICAgICQoV2ViQ29yZSkvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0NvbnRleHRT
dGF0ZS5pZGwgXAogICAgICQoV2ViQ29yZSkvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0Rlc3RpbmF0
aW9uTm9kZS5pZGwgXAogICAgICQoV2ViQ29yZSkvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0xpc3Rl
bmVyLmlkbCBcCiAgICAgJChXZWJDb3JlKS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvTm9kZS5pZGwg
XApAQCAtMzkzLDYgKzM5NCw3IEBAIEpTX0JJTkRJTkdfSURMUyA9IFwKICAgICAkKFdlYkNvcmUp
L01vZHVsZXMvd2ViYXVkaW8vQ2hhbm5lbFNwbGl0dGVyTm9kZS5pZGwgXAogICAgICQoV2ViQ29y
ZSkvTW9kdWxlcy93ZWJhdWRpby9Db252b2x2ZXJOb2RlLmlkbCBcCiAgICAgJChXZWJDb3JlKS9N
b2R1bGVzL3dlYmF1ZGlvL0RlbGF5Tm9kZS5pZGwgXAorICAgICQoV2ViQ29yZSkvTW9kdWxlcy93
ZWJhdWRpby9EaXN0YW5jZU1vZGVsVHlwZS5pZGwgXAogICAgICQoV2ViQ29yZSkvTW9kdWxlcy93
ZWJhdWRpby9EeW5hbWljc0NvbXByZXNzb3JOb2RlLmlkbCBcCiAgICAgJChXZWJDb3JlKS9Nb2R1
bGVzL3dlYmF1ZGlvL0dhaW5Ob2RlLmlkbCBcCiAgICAgJChXZWJDb3JlKS9Nb2R1bGVzL3dlYmF1
ZGlvL01lZGlhRWxlbWVudEF1ZGlvU291cmNlTm9kZS5pZGwgXApAQCAtNDAyLDkgKzQwNCwxMyBA
QCBKU19CSU5ESU5HX0lETFMgPSBcCiAgICAgJChXZWJDb3JlKS9Nb2R1bGVzL3dlYmF1ZGlvL09m
ZmxpbmVBdWRpb0NvbnRleHQuaWRsIFwKICAgICAkKFdlYkNvcmUpL01vZHVsZXMvd2ViYXVkaW8v
T3NjaWxsYXRvck5vZGUuaWRsIFwKICAgICAkKFdlYkNvcmUpL01vZHVsZXMvd2ViYXVkaW8vUGFu
bmVyTm9kZS5pZGwgXAorICAgICQoV2ViQ29yZSkvTW9kdWxlcy93ZWJhdWRpby9QYW5uaW5nTW9k
ZWxUeXBlLmlkbCBcCiAgICAgJChXZWJDb3JlKS9Nb2R1bGVzL3dlYmF1ZGlvL1BlcmlvZGljV2F2
ZS5pZGwgXAogICAgICQoV2ViQ29yZSkvTW9kdWxlcy93ZWJhdWRpby9TY3JpcHRQcm9jZXNzb3JO
b2RlLmlkbCBcCiAgICAgJChXZWJDb3JlKS9Nb2R1bGVzL3dlYmF1ZGlvL1dhdmVTaGFwZXJOb2Rl
LmlkbCBcCisgICAgJChXZWJDb3JlKS9Nb2R1bGVzL3dlYmF1ZGlvL1dlYktpdEF1ZGlvQ29udGV4
dC5pZGwgXAorICAgICQoV2ViQ29yZSkvTW9kdWxlcy93ZWJhdWRpby9XZWJLaXRBdWRpb1Bhbm5l
ck5vZGUuaWRsIFwKKyAgICAkKFdlYkNvcmUpL01vZHVsZXMvd2ViYXVkaW8vV2ViS2l0T2ZmbGlu
ZUF1ZGlvQ29udGV4dC5pZGwgXAogICAgICQoV2ViQ29yZSkvTW9kdWxlcy93ZWJhdXRobi9BdHRl
c3RhdGlvbkNvbnZleWFuY2VQcmVmZXJlbmNlLmlkbCBcCiAgICAgJChXZWJDb3JlKS9Nb2R1bGVz
L3dlYmF1dGhuL0F1dGhlbnRpY2F0aW9uRXh0ZW5zaW9uc0NsaWVudElucHV0cy5pZGwgXAogICAg
ICQoV2ViQ29yZSkvTW9kdWxlcy93ZWJhdXRobi9BdXRoZW50aWNhdGlvbkV4dGVuc2lvbnNDbGll
bnRPdXRwdXRzLmlkbCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1
ZGlvL0FuYWx5c2VyTm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0Fu
YWx5c2VyTm9kZS5jcHAKaW5kZXggMTc5ODcwNzAxZjg1MzM4NDhiOGE0OWE3NWQzYWYxMzYxNTRi
MDhkMi4uMjE1ZGUzMjFlOWExNmMzMjQ2Y2E0OTQ3NGQ5ZWFlMjUyMjUzODIwMSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BbmFseXNlck5vZGUuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQW5hbHlzZXJOb2RlLmNwcApAQCAtMzYs
NyArMzYsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFdURl9NQUtFX0lTT19BTExPQ0FURURf
SU1QTChBbmFseXNlck5vZGUpOwogCi1BbmFseXNlck5vZGU6OkFuYWx5c2VyTm9kZShBdWRpb0Nv
bnRleHQmIGNvbnRleHQsIGZsb2F0IHNhbXBsZVJhdGUpCitBbmFseXNlck5vZGU6OkFuYWx5c2Vy
Tm9kZShBdWRpb0NvbnRleHRCYXNlJiBjb250ZXh0LCBmbG9hdCBzYW1wbGVSYXRlKQogICAgIDog
QXVkaW9CYXNpY0luc3BlY3Rvck5vZGUoY29udGV4dCwgc2FtcGxlUmF0ZSwgMikKIHsKICAgICBz
ZXROb2RlVHlwZShOb2RlVHlwZUFuYWx5c2VyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViYXVkaW8vQW5hbHlzZXJOb2RlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmF1ZGlvL0FuYWx5c2VyTm9kZS5oCmluZGV4IGRhMWI1ZTg5Y2EyOGRlZWNjMzljMmYzNjY5
N2ZkOTBhMGIzZTBmN2UuLmE0MDIzYTMwZGVhMGRmMmJjOWE3YmIwNGJlZGFkOGEzMGRiOWRjZTUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQW5hbHlzZXJOb2Rl
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BbmFseXNlck5vZGUuaApA
QCAtMzIsNyArMzIsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBBbmFseXNlck5vZGUg
ZmluYWwgOiBwdWJsaWMgQXVkaW9CYXNpY0luc3BlY3Rvck5vZGUgewogICAgIFdURl9NQUtFX0lT
T19BTExPQ0FURUQoQW5hbHlzZXJOb2RlKTsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPEFuYWx5
c2VyTm9kZT4gY3JlYXRlKEF1ZGlvQ29udGV4dCYgY29udGV4dCwgZmxvYXQgc2FtcGxlUmF0ZSkK
KyAgICBzdGF0aWMgUmVmPEFuYWx5c2VyTm9kZT4gY3JlYXRlKEF1ZGlvQ29udGV4dEJhc2UmIGNv
bnRleHQsIGZsb2F0IHNhbXBsZVJhdGUpCiAgICAgewogICAgICAgICByZXR1cm4gYWRvcHRSZWYo
Km5ldyBBbmFseXNlck5vZGUoY29udGV4dCwgc2FtcGxlUmF0ZSkpOwogICAgIH0KQEAgLTU4LDcg
KzU4LDcgQEAgcHVibGljOgogICAgIHZvaWQgZ2V0Qnl0ZVRpbWVEb21haW5EYXRhKGNvbnN0IFJl
ZlB0cjxKU0M6OlVpbnQ4QXJyYXk+JiBhcnJheSkgeyBtX2FuYWx5c2VyLmdldEJ5dGVUaW1lRG9t
YWluRGF0YShhcnJheS5nZXQoKSk7IH0KIAogcHJpdmF0ZToKLSAgICBBbmFseXNlck5vZGUoQXVk
aW9Db250ZXh0JiwgZmxvYXQgc2FtcGxlUmF0ZSk7CisgICAgQW5hbHlzZXJOb2RlKEF1ZGlvQ29u
dGV4dEJhc2UmLCBmbG9hdCBzYW1wbGVSYXRlKTsKIAogICAgIHZvaWQgcHJvY2VzcyhzaXplX3Qg
ZnJhbWVzVG9Qcm9jZXNzKSBmaW5hbDsKICAgICB2b2lkIHJlc2V0KCkgZmluYWw7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQmFzaWNJbnNwZWN0b3JO
b2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9CYXNpY0luc3Bl
Y3Rvck5vZGUuY3BwCmluZGV4IDBmYjU1YjA4ZjBjMWEyYmUyZDA3MGM0ZTBkOGQ4ZjQ2N2UzNDZh
NzIuLjE0NTNkYWNhZmRhMWQzOGEzNGNmZDFiNmI5M2NiNzgzMzIzNWQ5ODggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9CYXNpY0luc3BlY3Rvck5vZGUu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9CYXNpY0luc3Bl
Y3Rvck5vZGUuY3BwCkBAIC0zNiw3ICszNiw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogV1RG
X01BS0VfSVNPX0FMTE9DQVRFRF9JTVBMKEF1ZGlvQmFzaWNJbnNwZWN0b3JOb2RlKTsKIAotQXVk
aW9CYXNpY0luc3BlY3Rvck5vZGU6OkF1ZGlvQmFzaWNJbnNwZWN0b3JOb2RlKEF1ZGlvQ29udGV4
dCYgY29udGV4dCwgZmxvYXQgc2FtcGxlUmF0ZSwgdW5zaWduZWQgb3V0cHV0Q2hhbm5lbENvdW50
KQorQXVkaW9CYXNpY0luc3BlY3Rvck5vZGU6OkF1ZGlvQmFzaWNJbnNwZWN0b3JOb2RlKEF1ZGlv
Q29udGV4dEJhc2UmIGNvbnRleHQsIGZsb2F0IHNhbXBsZVJhdGUsIHVuc2lnbmVkIG91dHB1dENo
YW5uZWxDb3VudCkKICAgICA6IEF1ZGlvTm9kZShjb250ZXh0LCBzYW1wbGVSYXRlKQogewogICAg
IHNldE5vZGVUeXBlKE5vZGVUeXBlQmFzaWNJbnNwZWN0b3IpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0Jhc2ljSW5zcGVjdG9yTm9kZS5oIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0Jhc2ljSW5zcGVjdG9yTm9kZS5oCmlu
ZGV4IDgwZTA4ZDI5NjE3YjE3NzRjNjBkZDE4NzkzZDE2MzBlZjJhZDAzZGIuLmU3NjllNDZhZTIx
ZjQ3MzQxYzI3M2M4ODQ1Y2JlMDI5ZTgxMjhkNjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViYXVkaW8vQXVkaW9CYXNpY0luc3BlY3Rvck5vZGUuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQmFzaWNJbnNwZWN0b3JOb2RlLmgKQEAgLTM0
LDcgKzM0LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgQXVkaW9CYXNpY0luc3BlY3Rv
ck5vZGUgOiBwdWJsaWMgQXVkaW9Ob2RlIHsKICAgICBXVEZfTUFLRV9JU09fQUxMT0NBVEVEKEF1
ZGlvQmFzaWNJbnNwZWN0b3JOb2RlKTsKIHB1YmxpYzoKLSAgICBBdWRpb0Jhc2ljSW5zcGVjdG9y
Tm9kZShBdWRpb0NvbnRleHQmLCBmbG9hdCBzYW1wbGVSYXRlLCB1bnNpZ25lZCBvdXRwdXRDaGFu
bmVsQ291bnQpOworICAgIEF1ZGlvQmFzaWNJbnNwZWN0b3JOb2RlKEF1ZGlvQ29udGV4dEJhc2Um
LCBmbG9hdCBzYW1wbGVSYXRlLCB1bnNpZ25lZCBvdXRwdXRDaGFubmVsQ291bnQpOwogCiBwcml2
YXRlOgogICAgIHZvaWQgcHVsbElucHV0cyhzaXplX3QgZnJhbWVzVG9Qcm9jZXNzKSBvdmVycmlk
ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9CYXNp
Y1Byb2Nlc3Nvck5vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRp
b0Jhc2ljUHJvY2Vzc29yTm9kZS5jcHAKaW5kZXggMGI5ZjFjZWQ4NzQ1YjVkOTk4ZGMzOGQ2MzZl
NzkwYWJmYmU2ZTk4My4uZjdiNzk2YmU1NTU0NTM2YTZhNTQyYzc1ZTM2MDU1MjVmOTQ2OGEyOSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0Jhc2ljUHJv
Y2Vzc29yTm9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRp
b0Jhc2ljUHJvY2Vzc29yTm9kZS5jcHAKQEAgLTM5LDcgKzM5LDcgQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogCiBXVEZfTUFLRV9JU09fQUxMT0NBVEVEX0lNUEwoQXVkaW9CYXNpY1Byb2Nlc3Nvck5v
ZGUpOwogCi1BdWRpb0Jhc2ljUHJvY2Vzc29yTm9kZTo6QXVkaW9CYXNpY1Byb2Nlc3Nvck5vZGUo
QXVkaW9Db250ZXh0JiBjb250ZXh0LCBmbG9hdCBzYW1wbGVSYXRlKQorQXVkaW9CYXNpY1Byb2Nl
c3Nvck5vZGU6OkF1ZGlvQmFzaWNQcm9jZXNzb3JOb2RlKEF1ZGlvQ29udGV4dEJhc2UmIGNvbnRl
eHQsIGZsb2F0IHNhbXBsZVJhdGUpCiAgICAgOiBBdWRpb05vZGUoY29udGV4dCwgc2FtcGxlUmF0
ZSkKIHsKICAgICBhZGRJbnB1dChtYWtlVW5pcXVlPEF1ZGlvTm9kZUlucHV0Pih0aGlzKSk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQmFzaWNQcm9j
ZXNzb3JOb2RlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQmFzaWNQ
cm9jZXNzb3JOb2RlLmgKaW5kZXggODJjZmZkYTU5ZjI3ODIwZGIwZDNkNTQ2MDFkNmFjYzRhYzc2
ZjE2MS4uZTE2MzczYmYwMjk3NmE0NWFkODI1ZTJlNjNhODM3YWZmNGY5MjE5YSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0Jhc2ljUHJvY2Vzc29yTm9k
ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9CYXNpY1Byb2Nl
c3Nvck5vZGUuaApAQCAtMzcsNyArMzcsNyBAQCBjbGFzcyBBdWRpb1Byb2Nlc3NvcjsKIGNsYXNz
IEF1ZGlvQmFzaWNQcm9jZXNzb3JOb2RlIDogcHVibGljIEF1ZGlvTm9kZSB7CiAgICAgV1RGX01B
S0VfSVNPX0FMTE9DQVRFRChBdWRpb0Jhc2ljUHJvY2Vzc29yTm9kZSk7CiBwdWJsaWM6Ci0gICAg
QXVkaW9CYXNpY1Byb2Nlc3Nvck5vZGUoQXVkaW9Db250ZXh0JiwgZmxvYXQgc2FtcGxlUmF0ZSk7
CisgICAgQXVkaW9CYXNpY1Byb2Nlc3Nvck5vZGUoQXVkaW9Db250ZXh0QmFzZSYsIGZsb2F0IHNh
bXBsZVJhdGUpOwogCiAgICAgLy8gQXVkaW9Ob2RlCiAgICAgdm9pZCBwcm9jZXNzKHNpemVfdCBm
cmFtZXNUb1Byb2Nlc3MpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJhdWRpby9BdWRpb0J1ZmZlclNvdXJjZU5vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJhdWRpby9BdWRpb0J1ZmZlclNvdXJjZU5vZGUuY3BwCmluZGV4IGMzNjYxZGU1
N2Q3MzllYzQ3MGQ2ZmFkOWY1NDFlNDk1ZWM5NzZkZWYuLjBjMWJhNGU5NGE5OGNiZjdkMTliZGMz
YjIzYTYyZmE5NDZmMDk1MzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
YXVkaW8vQXVkaW9CdWZmZXJTb3VyY2VOb2RlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmF1ZGlvL0F1ZGlvQnVmZmVyU291cmNlTm9kZS5jcHAKQEAgLTQ5LDEyICs0OSwxMiBA
QCBjb25zdCBkb3VibGUgRGVmYXVsdEdyYWluRHVyYXRpb24gPSAwLjAyMDsgLy8gMjBtcwogLy8g
dG8gbWluaW1pemUgbGluZWFyIGludGVycG9sYXRpb24gYWxpYXNpbmcuCiBjb25zdCBkb3VibGUg
TWF4UmF0ZSA9IDEwMjQ7CiAKLVJlZjxBdWRpb0J1ZmZlclNvdXJjZU5vZGU+IEF1ZGlvQnVmZmVy
U291cmNlTm9kZTo6Y3JlYXRlKEF1ZGlvQ29udGV4dCYgY29udGV4dCwgZmxvYXQgc2FtcGxlUmF0
ZSkKK1JlZjxBdWRpb0J1ZmZlclNvdXJjZU5vZGU+IEF1ZGlvQnVmZmVyU291cmNlTm9kZTo6Y3Jl
YXRlKEF1ZGlvQ29udGV4dEJhc2UmIGNvbnRleHQsIGZsb2F0IHNhbXBsZVJhdGUpCiB7CiAgICAg
cmV0dXJuIGFkb3B0UmVmKCpuZXcgQXVkaW9CdWZmZXJTb3VyY2VOb2RlKGNvbnRleHQsIHNhbXBs
ZVJhdGUpKTsKIH0KIAotQXVkaW9CdWZmZXJTb3VyY2VOb2RlOjpBdWRpb0J1ZmZlclNvdXJjZU5v
ZGUoQXVkaW9Db250ZXh0JiBjb250ZXh0LCBmbG9hdCBzYW1wbGVSYXRlKQorQXVkaW9CdWZmZXJT
b3VyY2VOb2RlOjpBdWRpb0J1ZmZlclNvdXJjZU5vZGUoQXVkaW9Db250ZXh0QmFzZSYgY29udGV4
dCwgZmxvYXQgc2FtcGxlUmF0ZSkKICAgICA6IEF1ZGlvU2NoZWR1bGVkU291cmNlTm9kZShjb250
ZXh0LCBzYW1wbGVSYXRlKQogICAgICwgbV9idWZmZXIobnVsbHB0cikKICAgICAsIG1faXNMb29w
aW5nKGZhbHNlKQpAQCAtNDEzLDcgKzQxMyw3IEBAIHZvaWQgQXVkaW9CdWZmZXJTb3VyY2VOb2Rl
OjpzZXRCdWZmZXIoUmVmUHRyPEF1ZGlvQnVmZmVyPiYmIGJ1ZmZlcikKICAgICBERUJVR19MT0co
TE9HSURFTlRJRklFUik7CiAKICAgICAvLyBUaGUgY29udGV4dCBtdXN0IGJlIGxvY2tlZCBzaW5j
ZSBjaGFuZ2luZyB0aGUgYnVmZmVyIGNhbiByZS1jb25maWd1cmUgdGhlIG51bWJlciBvZiBjaGFu
bmVscyB0aGF0IGFyZSBvdXRwdXQuCi0gICAgQXVkaW9Db250ZXh0OjpBdXRvTG9ja2VyIGNvbnRl
eHRMb2NrZXIoY29udGV4dCgpKTsKKyAgICBBdWRpb0NvbnRleHRCYXNlOjpBdXRvTG9ja2VyIGNv
bnRleHRMb2NrZXIoY29udGV4dCgpKTsKICAgICAKICAgICAvLyBUaGlzIHN5bmNocm9uaXplcyB3
aXRoIHByb2Nlc3MoKS4KICAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG1fcHJvY2Vzc011dGV4
KTsKQEAgLTU1Nyw3ICs1NTcsNyBAQCBib29sIEF1ZGlvQnVmZmVyU291cmNlTm9kZTo6cHJvcGFn
YXRlc1NpbGVuY2UoKSBjb25zdAogICAgIHJldHVybiAhaXNQbGF5aW5nT3JTY2hlZHVsZWQoKSB8
fCBoYXNGaW5pc2hlZCgpIHx8ICFtX2J1ZmZlcjsKIH0KIAotdm9pZCBBdWRpb0J1ZmZlclNvdXJj
ZU5vZGU6OnNldFBhbm5lck5vZGUoUGFubmVyTm9kZSogcGFubmVyTm9kZSkKK3ZvaWQgQXVkaW9C
dWZmZXJTb3VyY2VOb2RlOjpzZXRQYW5uZXJOb2RlKFBhbm5lck5vZGVCYXNlKiBwYW5uZXJOb2Rl
KQogewogICAgIGlmIChtX3Bhbm5lck5vZGUgIT0gcGFubmVyTm9kZSAmJiAhaGFzRmluaXNoZWQo
KSkgewogICAgICAgICBpZiAocGFubmVyTm9kZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViYXVkaW8vQXVkaW9CdWZmZXJTb3VyY2VOb2RlLmggYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQnVmZmVyU291cmNlTm9kZS5oCmluZGV4IDU0OGIyNmU3
ZmE3NTE0ZGU5YWQ2NGQzZTM1MzZiOWYzNGJlZGE5ZmIuLjYwMTEzMTE5OWE0ZmE5MmQ3MzBjNTBk
NWFhMjYwMDM4ZjZmZDk2ZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
YXVkaW8vQXVkaW9CdWZmZXJTb3VyY2VOb2RlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJhdWRpby9BdWRpb0J1ZmZlclNvdXJjZU5vZGUuaApAQCAtMzEsNyArMzEsNyBAQAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBBdWRpb0J1ZmZlcjsKLWNsYXNzIFBhbm5lck5vZGU7
CitjbGFzcyBQYW5uZXJOb2RlQmFzZTsKIAogLy8gQXVkaW9CdWZmZXJTb3VyY2VOb2RlIGlzIGFu
IEF1ZGlvTm9kZSByZXByZXNlbnRpbmcgYW4gYXVkaW8gc291cmNlIGZyb20gYW4gaW4tbWVtb3J5
IGF1ZGlvIGFzc2V0IHJlcHJlc2VudGVkIGJ5IGFuIEF1ZGlvQnVmZmVyLgogLy8gSXQgZ2VuZXJh
bGx5IHdpbGwgYmUgdXNlZCBmb3Igc2hvcnQgc291bmRzIHdoaWNoIHJlcXVpcmUgYSBoaWdoIGRl
Z3JlZSBvZiBzY2hlZHVsaW5nIGZsZXhpYmlsaXR5IChjYW4gcGxheWJhY2sgaW4gcmh5dGhtaWNh
bGx5IHBlcmZlY3Qgd2F5cykuCkBAIC0zOSw3ICszOSw3IEBAIGNsYXNzIFBhbm5lck5vZGU7CiBj
bGFzcyBBdWRpb0J1ZmZlclNvdXJjZU5vZGUgZmluYWwgOiBwdWJsaWMgQXVkaW9TY2hlZHVsZWRT
b3VyY2VOb2RlIHsKICAgICBXVEZfTUFLRV9JU09fQUxMT0NBVEVEKEF1ZGlvQnVmZmVyU291cmNl
Tm9kZSk7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxBdWRpb0J1ZmZlclNvdXJjZU5vZGU+IGNy
ZWF0ZShBdWRpb0NvbnRleHQmLCBmbG9hdCBzYW1wbGVSYXRlKTsKKyAgICBzdGF0aWMgUmVmPEF1
ZGlvQnVmZmVyU291cmNlTm9kZT4gY3JlYXRlKEF1ZGlvQ29udGV4dEJhc2UmLCBmbG9hdCBzYW1w
bGVSYXRlKTsKIAogICAgIHZpcnR1YWwgfkF1ZGlvQnVmZmVyU291cmNlTm9kZSgpOwogCkBAIC03
OSw3ICs3OSw3IEBAIHB1YmxpYzoKICAgICBBdWRpb1BhcmFtKiBwbGF5YmFja1JhdGUoKSB7IHJl
dHVybiBtX3BsYXliYWNrUmF0ZS5nZXQoKTsgfQogCiAgICAgLy8gSWYgYSBwYW5uZXIgbm9kZSBp
cyBzZXQsIHRoZW4gd2UgY2FuIGluY29ycG9yYXRlIGRvcHBsZXIgc2hpZnQgaW50byB0aGUgcGxh
eWJhY2sgcGl0Y2ggcmF0ZS4KLSAgICB2b2lkIHNldFBhbm5lck5vZGUoUGFubmVyTm9kZSopOwor
ICAgIHZvaWQgc2V0UGFubmVyTm9kZShQYW5uZXJOb2RlQmFzZSopOwogICAgIHZvaWQgY2xlYXJQ
YW5uZXJOb2RlKCk7CiAKICAgICAvLyBJZiB3ZSBhcmUgbm8gbG9uZ2VyIHBsYXlpbmcsIHByb3Bv
Z2F0ZSBzaWxlbmNlIGFoZWFkIHRvIGRvd25zdHJlYW0gbm9kZXMuCkBAIC05MSw3ICs5MSw3IEBA
IHB1YmxpYzoKICAgICBjb25zdCBjaGFyKiBhY3RpdmVET01PYmplY3ROYW1lKCkgY29uc3Qgb3Zl
cnJpZGUgeyByZXR1cm4gIkF1ZGlvQnVmZmVyU291cmNlTm9kZSI7IH0KIAogcHJpdmF0ZToKLSAg
ICBBdWRpb0J1ZmZlclNvdXJjZU5vZGUoQXVkaW9Db250ZXh0JiwgZmxvYXQgc2FtcGxlUmF0ZSk7
CisgICAgQXVkaW9CdWZmZXJTb3VyY2VOb2RlKEF1ZGlvQ29udGV4dEJhc2UmLCBmbG9hdCBzYW1w
bGVSYXRlKTsKIAogICAgIGRvdWJsZSB0YWlsVGltZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIDA7
IH0KICAgICBkb3VibGUgbGF0ZW5jeVRpbWUoKSBjb25zdCBmaW5hbCB7IHJldHVybiAwOyB9CkBA
IC0xNDUsNyArMTQ1LDcgQEAgcHJpdmF0ZToKIAogICAgIC8vIFdlIG9wdGlvbmFsbHkga2VlcCB0
cmFjayBvZiBhIHBhbm5lciBub2RlIHdoaWNoIGhhcyBhIGRvcHBsZXIgc2hpZnQgdGhhdCBpcyBp
bmNvcnBvcmF0ZWQgaW50bwogICAgIC8vIHRoZSBwaXRjaCByYXRlLiBXZSBtYW51YWxseSBtYW5h
Z2UgcmVmLWNvdW50aW5nIGJlY2F1c2Ugd2Ugd2FudCB0byB1c2UgUmVmVHlwZUNvbm5lY3Rpb24u
Ci0gICAgUGFubmVyTm9kZSogbV9wYW5uZXJOb2RlOworICAgIFBhbm5lck5vZGVCYXNlKiBtX3Bh
bm5lck5vZGU7CiAKICAgICAvLyBUaGlzIHN5bmNocm9uaXplcyBwcm9jZXNzKCkgd2l0aCBzZXRC
dWZmZXIoKSB3aGljaCBjYW4gY2F1c2UgZHluYW1pYyBjaGFubmVsIGNvdW50IGNoYW5nZXMuCiAg
ICAgbXV0YWJsZSBMb2NrIG1fcHJvY2Vzc011dGV4OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0NvbnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJhdWRpby9BdWRpb0NvbnRleHQuY3BwCmluZGV4IDM4MmRjN2NmMGNkMGY1ZDVkMzAy
NzZlNjNkOTJkYmUwYjUzN2VhNTkuLjI2ZTFmYzdjY2FiMTQzNGQwNWFmMWFiYWExYzQ4ZTAwMmUy
YjMxYzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9D
b250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQ29u
dGV4dC5jcHAKQEAgLTEwNyw2ICsxMDcsNyBAQCBjb25zdCB1bnNpZ25lZCBNYXhQZXJpb2RpY1dh
dmVMZW5ndGggPSA0MDk2OwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK1dURl9NQUtFX0lTT19B
TExPQ0FURURfSU1QTChBdWRpb0NvbnRleHRCYXNlKTsKIFdURl9NQUtFX0lTT19BTExPQ0FURURf
SU1QTChBdWRpb0NvbnRleHQpOwogCiAjZGVmaW5lIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoZm10
LCAuLi4pIFJFTEVBU0VfTE9HX0lGKGRvY3VtZW50KCkgJiYgZG9jdW1lbnQoKS0+cGFnZSgpICYm
IGRvY3VtZW50KCktPnBhZ2UoKS0+aXNBbHdheXNPbkxvZ2dpbmdBbGxvd2VkKCksIE1lZGlhLCAi
JXAgLSBBdWRpb0NvbnRleHQ6OiIgZm10LCB0aGlzLCAjI19fVkFfQVJHU19fKQpAQCAtMTM3LDkg
KzEzOCwxNCBAQCBFeGNlcHRpb25PcjxSZWY8QXVkaW9Db250ZXh0Pj4gQXVkaW9Db250ZXh0Ojpj
cmVhdGUoRG9jdW1lbnQmIGRvY3VtZW50KQogICAgIHJldHVybiBhdWRpb0NvbnRleHQ7CiB9CiAK
K0F1ZGlvQ29udGV4dEJhc2U6OkF1ZGlvQ29udGV4dEJhc2UoRG9jdW1lbnQmIGRvY3VtZW50KQor
ICAgIDogQWN0aXZlRE9NT2JqZWN0KGRvY3VtZW50KQoreworfQorCiAvLyBDb25zdHJ1Y3RvciBm
b3IgcmVuZGVyaW5nIHRvIHRoZSBhdWRpbyBoYXJkd2FyZS4KIEF1ZGlvQ29udGV4dDo6QXVkaW9D
b250ZXh0KERvY3VtZW50JiBkb2N1bWVudCkKLSAgICA6IEFjdGl2ZURPTU9iamVjdChkb2N1bWVu
dCkKKyAgICA6IEF1ZGlvQ29udGV4dEJhc2UoZG9jdW1lbnQpCiAjaWYgIVJFTEVBU0VfTE9HX0RJ
U0FCTEVECiAgICAgLCBtX2xvZ2dlcihkb2N1bWVudC5sb2dnZXIoKSkKICAgICAsIG1fbG9nSWRl
bnRpZmllcih1bmlxdWVMb2dJZGVudGlmaWVyKCkpCkBAIC0xNjQsNyArMTcwLDcgQEAgQXVkaW9D
b250ZXh0OjpBdWRpb0NvbnRleHQoRG9jdW1lbnQmIGRvY3VtZW50KQogCiAvLyBDb25zdHJ1Y3Rv
ciBmb3Igb2ZmbGluZSAobm9uLXJlYWx0aW1lKSByZW5kZXJpbmcuCiBBdWRpb0NvbnRleHQ6OkF1
ZGlvQ29udGV4dChEb2N1bWVudCYgZG9jdW1lbnQsIEF1ZGlvQnVmZmVyKiByZW5kZXJUYXJnZXQp
Ci0gICAgOiBBY3RpdmVET01PYmplY3QoZG9jdW1lbnQpCisgICAgOiBBdWRpb0NvbnRleHRCYXNl
KGRvY3VtZW50KQogI2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRAogICAgICwgbV9sb2dnZXIoZG9j
dW1lbnQubG9nZ2VyKCkpCiAgICAgLCBtX2xvZ0lkZW50aWZpZXIodW5pcXVlTG9nSWRlbnRpZmll
cigpKQpAQCAtMzY2LDcgKzM3Miw3IEBAIGNvbnN0IGNoYXIqIEF1ZGlvQ29udGV4dDo6YWN0aXZl
RE9NT2JqZWN0TmFtZSgpIGNvbnN0CiAgICAgcmV0dXJuICJBdWRpb0NvbnRleHQiOwogfQogCi1E
b2N1bWVudCogQXVkaW9Db250ZXh0Ojpkb2N1bWVudCgpIGNvbnN0CitEb2N1bWVudCogQXVkaW9D
b250ZXh0QmFzZTo6ZG9jdW1lbnQoKSBjb25zdAogewogICAgIHJldHVybiBkb3duY2FzdDxEb2N1
bWVudD4obV9zY3JpcHRFeGVjdXRpb25Db250ZXh0KTsKIH0KQEAgLTEwMDIsOSArMTAwOCwxNCBA
QCB2b2lkIEF1ZGlvQ29udGV4dDo6cmVtb3ZlTWFya2VkU3VtbWluZ0p1bmN0aW9uKEF1ZGlvU3Vt
bWluZ0p1bmN0aW9uKiBzdW1taW5nSnVuYwogICAgIG1fZGlydHlTdW1taW5nSnVuY3Rpb25zLnJl
bW92ZShzdW1taW5nSnVuY3Rpb24pOwogfQogCitFdmVudFRhcmdldEludGVyZmFjZSBBdWRpb0Nv
bnRleHQ6OmV2ZW50VGFyZ2V0SW50ZXJmYWNlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gQXVkaW9D
b250ZXh0RXZlbnRUYXJnZXRJbnRlcmZhY2VUeXBlOworfQorCiB2b2lkIEF1ZGlvQ29udGV4dDo6
bWFya0F1ZGlvTm9kZU91dHB1dERpcnR5KEF1ZGlvTm9kZU91dHB1dCogb3V0cHV0KQogewotICAg
IEFTU0VSVChpc0dyYXBoT3duZXIoKSk7ICAgIAorICAgIEFTU0VSVChpc0dyYXBoT3duZXIoKSk7
CiAgICAgbV9kaXJ0eUF1ZGlvTm9kZU91dHB1dHMuYWRkKG91dHB1dCk7CiB9CiAKQEAgLTEwNjgs
NyArMTA3OSw3IEBAIHZvaWQgQXVkaW9Db250ZXh0Ojpwcm9jZXNzQXV0b21hdGljUHVsbE5vZGVz
KHNpemVfdCBmcmFtZXNUb1Byb2Nlc3MpCiAgICAgICAgIG5vZGUtPnByb2Nlc3NJZk5lY2Vzc2Fy
eShmcmFtZXNUb1Byb2Nlc3MpOwogfQogCi1TY3JpcHRFeGVjdXRpb25Db250ZXh0KiBBdWRpb0Nv
bnRleHQ6OnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSBjb25zdAorU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCogQXVkaW9Db250ZXh0QmFzZTo6c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpIGNvbnN0CiB7
CiAgICAgcmV0dXJuIEFjdGl2ZURPTU9iamVjdDo6c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOwog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0NvbnRl
eHQuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0LmgKaW5k
ZXggOGUwOTQzOTRjZmZjYzVkYWE4YjBlNGRjNTg5MTIxOTQ0MmU2ZTEyZS4uNTA1OTIxZmY1ZTM1
ZDI0OTUzMzgwMjAzYTQ3OTVmNjRjYWMyZDVkMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJhdWRpby9BdWRpb0NvbnRleHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmF1ZGlvL0F1ZGlvQ29udGV4dC5oCkBAIC0yOCw2ICsyOCw3IEBACiAjaW5jbHVkZSAi
QWN0aXZlRE9NT2JqZWN0LmgiCiAjaW5jbHVkZSAiQXN5bmNBdWRpb0RlY29kZXIuaCIKICNpbmNs
dWRlICJBdWRpb0J1cy5oIgorI2luY2x1ZGUgIkF1ZGlvQ29udGV4dFN0YXRlLmgiCiAjaW5jbHVk
ZSAiQXVkaW9EZXN0aW5hdGlvbk5vZGUuaCIKICNpbmNsdWRlICJFdmVudFRhcmdldC5oIgogI2lu
Y2x1ZGUgIk1lZGlhQ2FuU3RhcnRMaXN0ZW5lci5oIgpAQCAtNzksMjAgKzgwLDEyNyBAQCBjbGFz
cyBXYXZlU2hhcGVyTm9kZTsKIAogdGVtcGxhdGU8dHlwZW5hbWUgSURMVHlwZT4gY2xhc3MgRE9N
UHJvbWlzZURlZmVycmVkOwogCi0vLyBBdWRpb0NvbnRleHQgaXMgdGhlIGNvcm5lcnN0b25lIG9m
IHRoZSB3ZWIgYXVkaW8gQVBJIGFuZCBhbGwgQXVkaW9Ob2RlcyBhcmUgY3JlYXRlZCBmcm9tIGl0
LgotLy8gRm9yIHRocmVhZCBzYWZldHkgYmV0d2VlbiB0aGUgYXVkaW8gdGhyZWFkIGFuZCB0aGUg
bWFpbiB0aHJlYWQsIGl0IGhhcyBhIHJlbmRlcmluZyBncmFwaCBsb2NraW5nIG1lY2hhbmlzbS4g
Ci0KLWNsYXNzIEF1ZGlvQ29udGV4dAorY2xhc3MgQXVkaW9Db250ZXh0QmFzZQogICAgIDogcHVi
bGljIEFjdGl2ZURPTU9iamVjdAogICAgICwgcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPEF1
ZGlvQ29udGV4dD4KICAgICAsIHB1YmxpYyBFdmVudFRhcmdldFdpdGhJbmxpbmVEYXRhCiAgICAg
LCBwdWJsaWMgTWVkaWFDYW5TdGFydExpc3RlbmVyCiAgICAgLCBwdWJsaWMgTWVkaWFQcm9kdWNl
cgotICAgICwgcHJpdmF0ZSBQbGF0Zm9ybU1lZGlhU2Vzc2lvbkNsaWVudAotICAgICwgcHJpdmF0
ZSBWaXNpYmlsaXR5Q2hhbmdlQ2xpZW50CiAjaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECi0gICAg
LCBwcml2YXRlIExvZ2dlckhlbHBlcgorICAgICwgcHVibGljIExvZ2dlckhlbHBlcgorI2VuZGlm
Cit7CisgICAgV1RGX01BS0VfSVNPX0FMTE9DQVRFRChBdWRpb0NvbnRleHRCYXNlKTsKK3B1Ymxp
YzoKKyAgICB2aXJ0dWFsIH5BdWRpb0NvbnRleHRCYXNlKCkgPSBkZWZhdWx0OworCisgICAgLy8g
UmVjb25jaWxlIHJlZi9kZXJlZiB3aGljaCBhcmUgZGVmaW5lZCBib3RoIGluIFRocmVhZFNhZmVS
ZWZDb3VudGVkIGFuZCBFdmVudFRhcmdldC4KKyAgICB1c2luZyBUaHJlYWRTYWZlUmVmQ291bnRl
ZDo6cmVmOworICAgIHVzaW5nIFRocmVhZFNhZmVSZWZDb3VudGVkOjpkZXJlZjsKKworICAgIERv
Y3VtZW50KiBkb2N1bWVudCgpIGNvbnN0OworCisgICAgdmlydHVhbCBib29sIGlzSW5pdGlhbGl6
ZWQoKSBjb25zdCA9IDA7CisKKyAgICB2aXJ0dWFsIHNpemVfdCBjdXJyZW50U2FtcGxlRnJhbWUo
KSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBmbG9hdCBzYW1wbGVSYXRlKCkgY29uc3QgPSAwOwor
ICAgIHZpcnR1YWwgZG91YmxlIGN1cnJlbnRUaW1lKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwg
Ym9vbCBpc0dyYXBoT3duZXIoKSBjb25zdCA9IDA7CisKKyAgICB2aXJ0dWFsIHZvaWQgc2V0QXVk
aW9UaHJlYWQoVGhyZWFkJikgPSAwOworICAgIHZpcnR1YWwgYm9vbCBpc0F1ZGlvVGhyZWFkKCkg
Y29uc3QgPSAwOworICAgIHZpcnR1YWwgYm9vbCBpc0F1ZGlvVGhyZWFkRmluaXNoZWQoKSA9IDA7
CisKKyAgICB2aXJ0dWFsIHZvaWQgaXNQbGF5aW5nQXVkaW9EaWRDaGFuZ2UoKSA9IDA7CisgICAg
dmlydHVhbCB2b2lkIG5vZGVXaWxsQmVnaW5QbGF5YmFjaygpID0gMDsKKworICAgIHZpcnR1YWwg
dm9pZCBwb3N0VGFzayhXVEY6OkZ1bmN0aW9uPHZvaWQoKT4mJikgPSAwOworICAgIHZpcnR1YWwg
Ym9vbCBpc1N0b3BwZWQoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBjb25zdCBTZWN1cml0eU9y
aWdpbiogb3JpZ2luKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgdm9pZCBhZGRDb25zb2xlTWVz
c2FnZShNZXNzYWdlU291cmNlLCBNZXNzYWdlTGV2ZWwsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSkg
PSAwOworCisgICAgdmlydHVhbCB2b2lkIG1hcmtGb3JEZWxldGlvbihBdWRpb05vZGUmKSA9IDA7
CisgICAgdmlydHVhbCB2b2lkIGRlbGV0ZU1hcmtlZE5vZGVzKCkgPSAwOworCisgICAgdmlydHVh
bCB2b2lkIGhhbmRsZVByZVJlbmRlclRhc2tzKCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBoYW5k
bGVQb3N0UmVuZGVyVGFza3MoKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHByb2Nlc3NBdXRvbWF0
aWNQdWxsTm9kZXMoc2l6ZV90IGZyYW1lc1RvUHJvY2VzcykgPSAwOworICAgIHZpcnR1YWwgdm9p
ZCBhZGREZWZlcnJlZEZpbmlzaERlcmVmKEF1ZGlvTm9kZSopID0gMDsKKworICAgIHZpcnR1YWwg
dm9pZCByZW1vdmVNYXJrZWRTdW1taW5nSnVuY3Rpb24oQXVkaW9TdW1taW5nSnVuY3Rpb24qKSA9
IDA7CisgICAgdmlydHVhbCB2b2lkIG1hcmtTdW1taW5nSnVuY3Rpb25EaXJ0eShBdWRpb1N1bW1p
bmdKdW5jdGlvbiopID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgbWFya0F1ZGlvTm9kZU91dHB1dERp
cnR5KEF1ZGlvTm9kZU91dHB1dCopID0gMDsKKworICAgIGVudW0gQmVoYXZpb3JSZXN0cmljdGlv
bkZsYWdzIHsKKyAgICAgICAgTm9SZXN0cmljdGlvbnMgPSAwLAorICAgICAgICBSZXF1aXJlVXNl
ckdlc3R1cmVGb3JBdWRpb1N0YXJ0UmVzdHJpY3Rpb24gPSAxIDw8IDAsCisgICAgICAgIFJlcXVp
cmVQYWdlQ29uc2VudEZvckF1ZGlvU3RhcnRSZXN0cmljdGlvbiA9IDEgPDwgMSwKKyAgICB9Owor
ICAgIHR5cGVkZWYgdW5zaWduZWQgQmVoYXZpb3JSZXN0cmljdGlvbnM7CisgICAgdmlydHVhbCBC
ZWhhdmlvclJlc3RyaWN0aW9ucyBiZWhhdmlvclJlc3RyaWN0aW9ucygpIGNvbnN0ID0gMDsKKyAg
ICB2aXJ0dWFsIHZvaWQgYWRkQmVoYXZpb3JSZXN0cmljdGlvbihCZWhhdmlvclJlc3RyaWN0aW9u
cykgPSAwOworICAgIHZpcnR1YWwgdm9pZCByZW1vdmVCZWhhdmlvclJlc3RyaWN0aW9uKEJlaGF2
aW9yUmVzdHJpY3Rpb25zKSA9IDA7CisKKyNpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKKyAgICB2
aXJ0dWFsIGNvbnN0IHZvaWQqIG5leHRBdWRpb05vZGVMb2dJZGVudGlmaWVyKCkgPSAwOworICAg
IHZpcnR1YWwgY29uc3Qgdm9pZCogbmV4dEF1ZGlvUGFyYW1ldGVyTG9nSWRlbnRpZmllcigpID0g
MDsKICNlbmRpZgorCisgICAgdmlydHVhbCB2b2lkIGFkZEF1dG9tYXRpY1B1bGxOb2RlKEF1ZGlv
Tm9kZSYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlQXV0b21hdGljUHVsbE5vZGUoQXVk
aW9Ob2RlJikgPSAwOworCisgICAgdmlydHVhbCB2b2lkIG5vdGlmeU5vZGVGaW5pc2hlZFByb2Nl
c3NpbmcoQXVkaW9Ob2RlKikgPSAwOworCisgICAgdmlydHVhbCB2b2lkIGZpbmlzaGVkUmVuZGVy
aW5nKGJvb2wgZGlkUmVuZGVyaW5nKSA9IDA7CisKKyAgICB2aXJ0dWFsIHZvaWQgaW5jcmVtZW50
Q29ubmVjdGlvbkNvdW50KCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBpbmNyZW1lbnRBY3RpdmVT
b3VyY2VDb3VudCgpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZGVjcmVtZW50QWN0aXZlU291cmNl
Q291bnQoKSA9IDA7CisKKyAgICB2aXJ0dWFsIGJvb2wgaXNPZmZsaW5lQ29udGV4dCgpIGNvbnN0
ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgaXNBdWRpb0NvbnRleHQoKSBjb25zdCA9IDA7CisgICAg
dmlydHVhbCBib29sIGlzV2ViS2l0QXVkaW9Db250ZXh0KCkgY29uc3QgPSAwOworCisgICAgLy8g
bXVzdFJlbGVhc2VMb2NrIGlzIHNldCB0byB0cnVlIGlmIHdlIGFjcXVpcmVkIHRoZSBsb2NrIGlu
IHRoaXMgbWV0aG9kIGNhbGwgYW5kIGNhbGxlciBtdXN0IHVubG9jaygpLCBmYWxzZSBpZiBpdCB3
YXMgcHJldmlvdXNseSBhY3F1aXJlZC4KKyAgICB2aXJ0dWFsIHZvaWQgbG9jayhib29sJiBtdXN0
UmVsZWFzZUxvY2spID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgdHJ5TG9jayhib29sJiBtdXN0UmVs
ZWFzZUxvY2spID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgdW5sb2NrKCkgPSAwOworCisgICAgY2xh
c3MgQXV0b0xvY2tlciB7CisgICAgcHVibGljOgorICAgICAgICBleHBsaWNpdCBBdXRvTG9ja2Vy
KEF1ZGlvQ29udGV4dEJhc2UmIGNvbnRleHQpCisgICAgICAgICAgICA6IG1fY29udGV4dChjb250
ZXh0KQorICAgICAgICB7CisgICAgICAgICAgICBtX2NvbnRleHQubG9jayhtX211c3RSZWxlYXNl
TG9jayk7CisgICAgICAgIH0KKworICAgICAgICB+QXV0b0xvY2tlcigpCisgICAgICAgIHsKKyAg
ICAgICAgICAgIGlmIChtX211c3RSZWxlYXNlTG9jaykKKyAgICAgICAgICAgICAgICBtX2NvbnRl
eHQudW5sb2NrKCk7CisgICAgICAgIH0KKworICAgIHByaXZhdGU6CisgICAgICAgIEF1ZGlvQ29u
dGV4dEJhc2UmIG1fY29udGV4dDsKKyAgICAgICAgYm9vbCBtX211c3RSZWxlYXNlTG9jazsKKyAg
ICB9OworCisgICAgLy8gRXZlbnRUYXJnZXQKKyAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBz
Y3JpcHRFeGVjdXRpb25Db250ZXh0KCkgY29uc3QgZmluYWw7CisgICAgdm9pZCByZWZFdmVudFRh
cmdldCgpIG92ZXJyaWRlIHsgcmVmKCk7IH0KKyAgICB2b2lkIGRlcmVmRXZlbnRUYXJnZXQoKSBv
dmVycmlkZSB7IGRlcmVmKCk7IH0KKworcHJvdGVjdGVkOgorICAgIGV4cGxpY2l0IEF1ZGlvQ29u
dGV4dEJhc2UoRG9jdW1lbnQmKTsKK307CisKKy8vIEF1ZGlvQ29udGV4dCBpcyB0aGUgY29ybmVy
c3RvbmUgb2YgdGhlIHdlYiBhdWRpbyBBUEkgYW5kIGFsbCBBdWRpb05vZGVzIGFyZSBjcmVhdGVk
IGZyb20gaXQuCisvLyBGb3IgdGhyZWFkIHNhZmV0eSBiZXR3ZWVuIHRoZSBhdWRpbyB0aHJlYWQg
YW5kIHRoZSBtYWluIHRocmVhZCwgaXQgaGFzIGEgcmVuZGVyaW5nIGdyYXBoIGxvY2tpbmcgbWVj
aGFuaXNtLiAKKworY2xhc3MgQXVkaW9Db250ZXh0CisgICAgOiBwdWJsaWMgQXVkaW9Db250ZXh0
QmFzZQorICAgICwgcHJpdmF0ZSBQbGF0Zm9ybU1lZGlhU2Vzc2lvbkNsaWVudAorICAgICwgcHJp
dmF0ZSBWaXNpYmlsaXR5Q2hhbmdlQ2xpZW50CiB7CiAgICAgV1RGX01BS0VfSVNPX0FMTE9DQVRF
RChBdWRpb0NvbnRleHQpOwogcHVibGljOgpAQCAtMTAxLDIyICsyMDksMjAgQEAgcHVibGljOgog
CiAgICAgdmlydHVhbCB+QXVkaW9Db250ZXh0KCk7CiAKLSAgICBib29sIGlzSW5pdGlhbGl6ZWQo
KSBjb25zdDsKKyAgICBib29sIGlzSW5pdGlhbGl6ZWQoKSBjb25zdCBmaW5hbDsKICAgICAKLSAg
ICBib29sIGlzT2ZmbGluZUNvbnRleHQoKSBjb25zdCB7IHJldHVybiBtX2lzT2ZmbGluZUNvbnRl
eHQ7IH0KLQotICAgIERvY3VtZW50KiBkb2N1bWVudCgpIGNvbnN0OyAvLyBBU1NFUlRzIGlmIGRv
Y3VtZW50IG5vIGxvbmdlciBleGlzdHMuCisgICAgYm9vbCBpc09mZmxpbmVDb250ZXh0KCkgY29u
c3QgZmluYWwgeyByZXR1cm4gbV9pc09mZmxpbmVDb250ZXh0OyB9CiAKICAgICBEb2N1bWVudElk
ZW50aWZpZXIgaG9zdGluZ0RvY3VtZW50SWRlbnRpZmllcigpIGNvbnN0IGZpbmFsOwogCiAgICAg
QXVkaW9EZXN0aW5hdGlvbk5vZGUqIGRlc3RpbmF0aW9uKCkgeyByZXR1cm4gbV9kZXN0aW5hdGlv
bk5vZGUuZ2V0KCk7IH0KLSAgICBzaXplX3QgY3VycmVudFNhbXBsZUZyYW1lKCkgY29uc3QgeyBy
ZXR1cm4gbV9kZXN0aW5hdGlvbk5vZGUgPyBtX2Rlc3RpbmF0aW9uTm9kZS0+Y3VycmVudFNhbXBs
ZUZyYW1lKCkgOiAwOyB9Ci0gICAgZG91YmxlIGN1cnJlbnRUaW1lKCkgY29uc3QgeyByZXR1cm4g
bV9kZXN0aW5hdGlvbk5vZGUgPyBtX2Rlc3RpbmF0aW9uTm9kZS0+Y3VycmVudFRpbWUoKSA6IDAu
OyB9Ci0gICAgZmxvYXQgc2FtcGxlUmF0ZSgpIGNvbnN0IHsgcmV0dXJuIG1fZGVzdGluYXRpb25O
b2RlID8gbV9kZXN0aW5hdGlvbk5vZGUtPnNhbXBsZVJhdGUoKSA6IDAuZjsgfQorICAgIHNpemVf
dCBjdXJyZW50U2FtcGxlRnJhbWUoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2Rlc3RpbmF0aW9u
Tm9kZSA/IG1fZGVzdGluYXRpb25Ob2RlLT5jdXJyZW50U2FtcGxlRnJhbWUoKSA6IDA7IH0KKyAg
ICBkb3VibGUgY3VycmVudFRpbWUoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2Rlc3RpbmF0aW9u
Tm9kZSA/IG1fZGVzdGluYXRpb25Ob2RlLT5jdXJyZW50VGltZSgpIDogMC47IH0KKyAgICBmbG9h
dCBzYW1wbGVSYXRlKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9kZXN0aW5hdGlvbk5vZGUgPyBt
X2Rlc3RpbmF0aW9uTm9kZS0+c2FtcGxlUmF0ZSgpIDogMC5mOyB9CiAgICAgdW5zaWduZWQgbG9u
ZyBhY3RpdmVTb3VyY2VDb3VudCgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PHVuc2lnbmVk
IGxvbmc+KG1fYWN0aXZlU291cmNlQ291bnQpOyB9CiAKLSAgICB2b2lkIGluY3JlbWVudEFjdGl2
ZVNvdXJjZUNvdW50KCk7Ci0gICAgdm9pZCBkZWNyZW1lbnRBY3RpdmVTb3VyY2VDb3VudCgpOwor
ICAgIHZvaWQgaW5jcmVtZW50QWN0aXZlU291cmNlQ291bnQoKSBmaW5hbDsKKyAgICB2b2lkIGRl
Y3JlbWVudEFjdGl2ZVNvdXJjZUNvdW50KCkgZmluYWw7CiAgICAgCiAgICAgRXhjZXB0aW9uT3I8
UmVmPEF1ZGlvQnVmZmVyPj4gY3JlYXRlQnVmZmVyKHVuc2lnbmVkIG51bWJlck9mQ2hhbm5lbHMs
IHNpemVfdCBudW1iZXJPZkZyYW1lcywgZmxvYXQgc2FtcGxlUmF0ZSk7CiAgICAgRXhjZXB0aW9u
T3I8UmVmPEF1ZGlvQnVmZmVyPj4gY3JlYXRlQnVmZmVyKEFycmF5QnVmZmVyJiwgYm9vbCBtaXhU
b01vbm8pOwpAQCAtMTMwLDcgKzIzNiw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHJlc3VtZVJlbmRl
cmluZyhET01Qcm9taXNlRGVmZXJyZWQ8dm9pZD4mJik7CiAgICAgdm9pZCBjbG9zZShET01Qcm9t
aXNlRGVmZXJyZWQ8dm9pZD4mJik7CiAKLSAgICBlbnVtIGNsYXNzIFN0YXRlIHsgU3VzcGVuZGVk
LCBSdW5uaW5nLCBJbnRlcnJ1cHRlZCwgQ2xvc2VkIH07CisgICAgdXNpbmcgU3RhdGUgPSBBdWRp
b0NvbnRleHRTdGF0ZTsKICAgICBTdGF0ZSBzdGF0ZSgpIGNvbnN0OwogICAgIGJvb2wgaXNDbG9z
ZWQoKSBjb25zdCB7IHJldHVybiBtX3N0YXRlID09IFN0YXRlOjpDbG9zZWQ7IH0KIApAQCAtMTYw
LDMxICsyNjYsMzEgQEAgcHVibGljOgogICAgIEV4Y2VwdGlvbk9yPFJlZjxQZXJpb2RpY1dhdmU+
PiBjcmVhdGVQZXJpb2RpY1dhdmUoRmxvYXQzMkFycmF5JiByZWFsLCBGbG9hdDMyQXJyYXkmIGlt
YWdpbmFyeSk7CiAKICAgICAvLyBXaGVuIGEgc291cmNlIG5vZGUgaGFzIG5vIG1vcmUgcHJvY2Vz
c2luZyB0byBkbyAoaGFzIGZpbmlzaGVkIHBsYXlpbmcpLCB0aGVuIGl0IHRlbGxzIHRoZSBjb250
ZXh0IHRvIGRlcmVmZXJlbmNlIGl0LgotICAgIHZvaWQgbm90aWZ5Tm9kZUZpbmlzaGVkUHJvY2Vz
c2luZyhBdWRpb05vZGUqKTsKKyAgICB2b2lkIG5vdGlmeU5vZGVGaW5pc2hlZFByb2Nlc3Npbmco
QXVkaW9Ob2RlKikgZmluYWw7CiAKICAgICAvLyBDYWxsZWQgYXQgdGhlIHN0YXJ0IG9mIGVhY2gg
cmVuZGVyIHF1YW50dW0uCi0gICAgdm9pZCBoYW5kbGVQcmVSZW5kZXJUYXNrcygpOworICAgIHZv
aWQgaGFuZGxlUHJlUmVuZGVyVGFza3MoKSBmaW5hbDsKIAogICAgIC8vIENhbGxlZCBhdCB0aGUg
ZW5kIG9mIGVhY2ggcmVuZGVyIHF1YW50dW0uCi0gICAgdm9pZCBoYW5kbGVQb3N0UmVuZGVyVGFz
a3MoKTsKKyAgICB2b2lkIGhhbmRsZVBvc3RSZW5kZXJUYXNrcygpIGZpbmFsOwogCiAgICAgLy8g
Q2FsbGVkIHBlcmlvZGljYWxseSBhdCB0aGUgZW5kIG9mIGVhY2ggcmVuZGVyIHF1YW50dW0gdG8g
ZGVyZWZlcmVuY2UgZmluaXNoZWQgc291cmNlIG5vZGVzLgogICAgIHZvaWQgZGVyZWZGaW5pc2hl
ZFNvdXJjZU5vZGVzKCk7CiAKICAgICAvLyBXZSBzY2hlZHVsZSBkZWxldGlvbiBvZiBhbGwgbWFy
a2VkIG5vZGVzIGF0IHRoZSBlbmQgb2YgZWFjaCByZWFsdGltZSByZW5kZXIgcXVhbnR1bS4KLSAg
ICB2b2lkIG1hcmtGb3JEZWxldGlvbihBdWRpb05vZGUmKTsKLSAgICB2b2lkIGRlbGV0ZU1hcmtl
ZE5vZGVzKCk7CisgICAgdm9pZCBtYXJrRm9yRGVsZXRpb24oQXVkaW9Ob2RlJikgZmluYWw7Cisg
ICAgdm9pZCBkZWxldGVNYXJrZWROb2RlcygpIGZpbmFsOwogCiAgICAgLy8gQXVkaW9Db250ZXh0
IGNhbiBwdWxsIG5vZGUocykgYXQgdGhlIGVuZCBvZiBlYWNoIHJlbmRlciBxdWFudHVtIGV2ZW4g
d2hlbiB0aGV5IGFyZSBub3QgY29ubmVjdGVkIHRvIGFueSBkb3duc3RyZWFtIG5vZGVzLgogICAg
IC8vIFRoZXNlIHR3byBtZXRob2RzIGFyZSBjYWxsZWQgYnkgdGhlIG5vZGVzIHdobyB3YW50IHRv
IGFkZC9yZW1vdmUgdGhlbXNlbHZlcyBpbnRvL2Zyb20gdGhlIGF1dG9tYXRpYyBwdWxsIGxpc3Rz
LgotICAgIHZvaWQgYWRkQXV0b21hdGljUHVsbE5vZGUoQXVkaW9Ob2RlJik7Ci0gICAgdm9pZCBy
ZW1vdmVBdXRvbWF0aWNQdWxsTm9kZShBdWRpb05vZGUmKTsKKyAgICB2b2lkIGFkZEF1dG9tYXRp
Y1B1bGxOb2RlKEF1ZGlvTm9kZSYpIGZpbmFsOworICAgIHZvaWQgcmVtb3ZlQXV0b21hdGljUHVs
bE5vZGUoQXVkaW9Ob2RlJikgZmluYWw7CiAKICAgICAvLyBDYWxsZWQgcmlnaHQgYmVmb3JlIGhh
bmRsZVBvc3RSZW5kZXJUYXNrcygpIHRvIGhhbmRsZSBub2RlcyB3aGljaCBuZWVkIHRvIGJlIHB1
bGxlZCBldmVuIHdoZW4gdGhleSBhcmUgbm90IGNvbm5lY3RlZCB0byBhbnl0aGluZy4KLSAgICB2
b2lkIHByb2Nlc3NBdXRvbWF0aWNQdWxsTm9kZXMoc2l6ZV90IGZyYW1lc1RvUHJvY2Vzcyk7Cisg
ICAgdm9pZCBwcm9jZXNzQXV0b21hdGljUHVsbE5vZGVzKHNpemVfdCBmcmFtZXNUb1Byb2Nlc3Mp
IGZpbmFsOwogCiAgICAgLy8gS2VlcHMgdHJhY2sgb2YgdGhlIG51bWJlciBvZiBjb25uZWN0aW9u
cyBtYWRlLgotICAgIHZvaWQgaW5jcmVtZW50Q29ubmVjdGlvbkNvdW50KCkKKyAgICB2b2lkIGlu
Y3JlbWVudENvbm5lY3Rpb25Db3VudCgpIGZpbmFsCiAgICAgewogICAgICAgICBBU1NFUlQoaXNN
YWluVGhyZWFkKCkpOwogICAgICAgICBtX2Nvbm5lY3Rpb25Db3VudCsrOwpAQCAtMTk2LDEwMyAr
MzAyLDcwIEBAIHB1YmxpYzoKICAgICAvLyBUaHJlYWQgU2FmZXR5IGFuZCBHcmFwaCBMb2NraW5n
OgogICAgIC8vCiAgICAgCi0gICAgdm9pZCBzZXRBdWRpb1RocmVhZChUaHJlYWQmIHRocmVhZCkg
eyBtX2F1ZGlvVGhyZWFkID0gJnRocmVhZDsgfSAvLyBGSVhNRTogY2hlY2sgZWl0aGVyIG5vdCBp
bml0aWFsaXplZCBvciB0aGUgc2FtZQorICAgIHZvaWQgc2V0QXVkaW9UaHJlYWQoVGhyZWFkJiB0
aHJlYWQpIGZpbmFsIHsgbV9hdWRpb1RocmVhZCA9ICZ0aHJlYWQ7IH0gLy8gRklYTUU6IGNoZWNr
IGVpdGhlciBub3QgaW5pdGlhbGl6ZWQgb3IgdGhlIHNhbWUKICAgICBUaHJlYWQqIGF1ZGlvVGhy
ZWFkKCkgY29uc3QgeyByZXR1cm4gbV9hdWRpb1RocmVhZDsgfQotICAgIGJvb2wgaXNBdWRpb1Ro
cmVhZCgpIGNvbnN0OworICAgIGJvb2wgaXNBdWRpb1RocmVhZCgpIGNvbnN0IGZpbmFsOwogCiAg
ICAgLy8gUmV0dXJucyB0cnVlIG9ubHkgYWZ0ZXIgdGhlIGF1ZGlvIHRocmVhZCBoYXMgYmVlbiBz
dGFydGVkIGFuZCB0aGVuIHNodXRkb3duLgotICAgIGJvb2wgaXNBdWRpb1RocmVhZEZpbmlzaGVk
KCkgeyByZXR1cm4gbV9pc0F1ZGlvVGhyZWFkRmluaXNoZWQ7IH0KKyAgICBib29sIGlzQXVkaW9U
aHJlYWRGaW5pc2hlZCgpIGZpbmFsIHsgcmV0dXJuIG1faXNBdWRpb1RocmVhZEZpbmlzaGVkOyB9
CiAgICAgCiAgICAgLy8gbXVzdFJlbGVhc2VMb2NrIGlzIHNldCB0byB0cnVlIGlmIHdlIGFjcXVp
cmVkIHRoZSBsb2NrIGluIHRoaXMgbWV0aG9kIGNhbGwgYW5kIGNhbGxlciBtdXN0IHVubG9jaygp
LCBmYWxzZSBpZiBpdCB3YXMgcHJldmlvdXNseSBhY3F1aXJlZC4KLSAgICB2b2lkIGxvY2soYm9v
bCYgbXVzdFJlbGVhc2VMb2NrKTsKKyAgICB2b2lkIGxvY2soYm9vbCYgbXVzdFJlbGVhc2VMb2Nr
KSBmaW5hbDsKIAogICAgIC8vIFJldHVybnMgdHJ1ZSBpZiB3ZSBvd24gdGhlIGxvY2suCiAgICAg
Ly8gbXVzdFJlbGVhc2VMb2NrIGlzIHNldCB0byB0cnVlIGlmIHdlIGFjcXVpcmVkIHRoZSBsb2Nr
IGluIHRoaXMgbWV0aG9kIGNhbGwgYW5kIGNhbGxlciBtdXN0IHVubG9jaygpLCBmYWxzZSBpZiBp
dCB3YXMgcHJldmlvdXNseSBhY3F1aXJlZC4KLSAgICBib29sIHRyeUxvY2soYm9vbCYgbXVzdFJl
bGVhc2VMb2NrKTsKKyAgICBib29sIHRyeUxvY2soYm9vbCYgbXVzdFJlbGVhc2VMb2NrKSBmaW5h
bDsKIAotICAgIHZvaWQgdW5sb2NrKCk7CisgICAgdm9pZCB1bmxvY2soKSBmaW5hbDsKIAogICAg
IC8vIFJldHVybnMgdHJ1ZSBpZiB0aGlzIHRocmVhZCBvd25zIHRoZSBjb250ZXh0J3MgbG9jay4K
LSAgICBib29sIGlzR3JhcGhPd25lcigpIGNvbnN0OworICAgIGJvb2wgaXNHcmFwaE93bmVyKCkg
Y29uc3QgZmluYWw7CiAKICAgICAvLyBSZXR1cm5zIHRoZSBtYXhpbXVtIG51bWJlciBvZiBjaGFu
bmVscyB3ZSBjYW4gc3VwcG9ydC4KICAgICBzdGF0aWMgdW5zaWduZWQgbWF4TnVtYmVyT2ZDaGFu
bmVscygpIHsgcmV0dXJuIE1heE51bWJlck9mQ2hhbm5lbHM7IH0KLQotICAgIGNsYXNzIEF1dG9M
b2NrZXIgewotICAgIHB1YmxpYzoKLSAgICAgICAgZXhwbGljaXQgQXV0b0xvY2tlcihBdWRpb0Nv
bnRleHQmIGNvbnRleHQpCi0gICAgICAgICAgICA6IG1fY29udGV4dChjb250ZXh0KQotICAgICAg
ICB7Ci0gICAgICAgICAgICBtX2NvbnRleHQubG9jayhtX211c3RSZWxlYXNlTG9jayk7Ci0gICAg
ICAgIH0KLSAgICAgICAgCi0gICAgICAgIH5BdXRvTG9ja2VyKCkKLSAgICAgICAgewotICAgICAg
ICAgICAgaWYgKG1fbXVzdFJlbGVhc2VMb2NrKQotICAgICAgICAgICAgICAgIG1fY29udGV4dC51
bmxvY2soKTsKLSAgICAgICAgfQotCi0gICAgcHJpdmF0ZToKLSAgICAgICAgQXVkaW9Db250ZXh0
JiBtX2NvbnRleHQ7Ci0gICAgICAgIGJvb2wgbV9tdXN0UmVsZWFzZUxvY2s7Ci0gICAgfTsKICAg
ICAKICAgICAvLyBJbiBBdWRpb05vZGU6OmRlcmVmKCkgYSB0cnlMb2NrKCkgaXMgdXNlZCBmb3Ig
Y2FsbGluZyBmaW5pc2hEZXJlZigpLCBidXQgaWYgaXQgZmFpbHMga2VlcCB0cmFjayBoZXJlLgot
ICAgIHZvaWQgYWRkRGVmZXJyZWRGaW5pc2hEZXJlZihBdWRpb05vZGUqKTsKKyAgICB2b2lkIGFk
ZERlZmVycmVkRmluaXNoRGVyZWYoQXVkaW9Ob2RlKikgZmluYWw7CiAKICAgICAvLyBJbiB0aGUg
YXVkaW8gdGhyZWFkIGF0IHRoZSBzdGFydCBvZiBlYWNoIHJlbmRlciBjeWNsZSwgd2UnbGwgY2Fs
bCBoYW5kbGVEZWZlcnJlZEZpbmlzaERlcmVmcygpLgogICAgIHZvaWQgaGFuZGxlRGVmZXJyZWRG
aW5pc2hEZXJlZnMoKTsKIAogICAgIC8vIE9ubHkgYWNjZXNzZWQgd2hlbiB0aGUgZ3JhcGggbG9j
ayBpcyBoZWxkLgotICAgIHZvaWQgbWFya1N1bW1pbmdKdW5jdGlvbkRpcnR5KEF1ZGlvU3VtbWlu
Z0p1bmN0aW9uKik7Ci0gICAgdm9pZCBtYXJrQXVkaW9Ob2RlT3V0cHV0RGlydHkoQXVkaW9Ob2Rl
T3V0cHV0Kik7CisgICAgdm9pZCBtYXJrU3VtbWluZ0p1bmN0aW9uRGlydHkoQXVkaW9TdW1taW5n
SnVuY3Rpb24qKSBmaW5hbDsKKyAgICB2b2lkIG1hcmtBdWRpb05vZGVPdXRwdXREaXJ0eShBdWRp
b05vZGVPdXRwdXQqKSBmaW5hbDsKIAogICAgIC8vIE11c3QgYmUgY2FsbGVkIG9uIG1haW4gdGhy
ZWFkLgotICAgIHZvaWQgcmVtb3ZlTWFya2VkU3VtbWluZ0p1bmN0aW9uKEF1ZGlvU3VtbWluZ0p1
bmN0aW9uKik7CisgICAgdm9pZCByZW1vdmVNYXJrZWRTdW1taW5nSnVuY3Rpb24oQXVkaW9TdW1t
aW5nSnVuY3Rpb24qKSBmaW5hbDsKIAogICAgIC8vIEV2ZW50VGFyZ2V0Ci0gICAgRXZlbnRUYXJn
ZXRJbnRlcmZhY2UgZXZlbnRUYXJnZXRJbnRlcmZhY2UoKSBjb25zdCBmaW5hbCB7IHJldHVybiBB
dWRpb0NvbnRleHRFdmVudFRhcmdldEludGVyZmFjZVR5cGU7IH0KLQotICAgIC8vIFJlY29uY2ls
ZSByZWYvZGVyZWYgd2hpY2ggYXJlIGRlZmluZWQgYm90aCBpbiBUaHJlYWRTYWZlUmVmQ291bnRl
ZCBhbmQgRXZlbnRUYXJnZXQuCi0gICAgdXNpbmcgVGhyZWFkU2FmZVJlZkNvdW50ZWQ6OnJlZjsK
LSAgICB1c2luZyBUaHJlYWRTYWZlUmVmQ291bnRlZDo6ZGVyZWY7CisgICAgRXZlbnRUYXJnZXRJ
bnRlcmZhY2UgZXZlbnRUYXJnZXRJbnRlcmZhY2UoKSBjb25zdCBmaW5hbDsKIAogICAgIHZvaWQg
c3RhcnRSZW5kZXJpbmcoKTsKLSAgICB2b2lkIGZpbmlzaGVkUmVuZGVyaW5nKGJvb2wgZGlkUmVu
ZGVyaW5nKTsKKyAgICB2b2lkIGZpbmlzaGVkUmVuZGVyaW5nKGJvb2wgZGlkUmVuZGVyaW5nKSBm
aW5hbDsKIAogICAgIHN0YXRpYyB1bnNpZ25lZCBzX2hhcmR3YXJlQ29udGV4dENvdW50OwogCiAg
ICAgLy8gUmVzdHJpY3Rpb25zIHRvIGNoYW5nZSBkZWZhdWx0IGJlaGF2aW9ycy4KLSAgICBlbnVt
IEJlaGF2aW9yUmVzdHJpY3Rpb25GbGFncyB7Ci0gICAgICAgIE5vUmVzdHJpY3Rpb25zID0gMCwK
LSAgICAgICAgUmVxdWlyZVVzZXJHZXN0dXJlRm9yQXVkaW9TdGFydFJlc3RyaWN0aW9uID0gMSA8
PCAwLAotICAgICAgICBSZXF1aXJlUGFnZUNvbnNlbnRGb3JBdWRpb1N0YXJ0UmVzdHJpY3Rpb24g
PSAxIDw8IDEsCi0gICAgfTsKLSAgICB0eXBlZGVmIHVuc2lnbmVkIEJlaGF2aW9yUmVzdHJpY3Rp
b25zOwotCi0gICAgQmVoYXZpb3JSZXN0cmljdGlvbnMgYmVoYXZpb3JSZXN0cmljdGlvbnMoKSBj
b25zdCB7IHJldHVybiBtX3Jlc3RyaWN0aW9uczsgfQotICAgIHZvaWQgYWRkQmVoYXZpb3JSZXN0
cmljdGlvbihCZWhhdmlvclJlc3RyaWN0aW9ucyByZXN0cmljdGlvbikgeyBtX3Jlc3RyaWN0aW9u
cyB8PSByZXN0cmljdGlvbjsgfQotICAgIHZvaWQgcmVtb3ZlQmVoYXZpb3JSZXN0cmljdGlvbihC
ZWhhdmlvclJlc3RyaWN0aW9ucyByZXN0cmljdGlvbikgeyBtX3Jlc3RyaWN0aW9ucyAmPSB+cmVz
dHJpY3Rpb247IH0KKyAgICBCZWhhdmlvclJlc3RyaWN0aW9ucyBiZWhhdmlvclJlc3RyaWN0aW9u
cygpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fcmVzdHJpY3Rpb25zOyB9CisgICAgdm9pZCBhZGRC
ZWhhdmlvclJlc3RyaWN0aW9uKEJlaGF2aW9yUmVzdHJpY3Rpb25zIHJlc3RyaWN0aW9uKSBmaW5h
bCB7IG1fcmVzdHJpY3Rpb25zIHw9IHJlc3RyaWN0aW9uOyB9CisgICAgdm9pZCByZW1vdmVCZWhh
dmlvclJlc3RyaWN0aW9uKEJlaGF2aW9yUmVzdHJpY3Rpb25zIHJlc3RyaWN0aW9uKSBmaW5hbCB7
IG1fcmVzdHJpY3Rpb25zICY9IH5yZXN0cmljdGlvbjsgfQogCi0gICAgdm9pZCBpc1BsYXlpbmdB
dWRpb0RpZENoYW5nZSgpOworICAgIHZvaWQgaXNQbGF5aW5nQXVkaW9EaWRDaGFuZ2UoKSBmaW5h
bDsKIAotICAgIHZvaWQgbm9kZVdpbGxCZWdpblBsYXliYWNrKCk7CisgICAgdm9pZCBub2RlV2ls
bEJlZ2luUGxheWJhY2soKSBmaW5hbDsKIAogI2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRAogICAg
IGNvbnN0IExvZ2dlciYgbG9nZ2VyKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9sb2dnZXIuZ2V0
KCk7IH0KICAgICBjb25zdCB2b2lkKiBsb2dJZGVudGlmaWVyKCkgY29uc3QgZmluYWwgeyByZXR1
cm4gbV9sb2dJZGVudGlmaWVyOyB9CiAgICAgV1RGTG9nQ2hhbm5lbCYgbG9nQ2hhbm5lbCgpIGNv
bnN0IGZpbmFsOwotICAgIGNvbnN0IHZvaWQqIG5leHRBdWRpb05vZGVMb2dJZGVudGlmaWVyKCkg
eyByZXR1cm4gY2hpbGRMb2dJZGVudGlmaWVyKG1fbG9nSWRlbnRpZmllciwgKyttX25leHRBdWRp
b05vZGVJZGVudGlmaWVyKTsgfQotICAgIGNvbnN0IHZvaWQqIG5leHRBdWRpb1BhcmFtZXRlckxv
Z0lkZW50aWZpZXIoKSB7IHJldHVybiBjaGlsZExvZ0lkZW50aWZpZXIobV9sb2dJZGVudGlmaWVy
LCArK21fbmV4dEF1ZGlvUGFyYW1ldGVySWRlbnRpZmllcik7IH0KKyAgICBjb25zdCB2b2lkKiBu
ZXh0QXVkaW9Ob2RlTG9nSWRlbnRpZmllcigpIGZpbmFsIHsgcmV0dXJuIGNoaWxkTG9nSWRlbnRp
ZmllcihtX2xvZ0lkZW50aWZpZXIsICsrbV9uZXh0QXVkaW9Ob2RlSWRlbnRpZmllcik7IH0KKyAg
ICBjb25zdCB2b2lkKiBuZXh0QXVkaW9QYXJhbWV0ZXJMb2dJZGVudGlmaWVyKCkgZmluYWwgeyBy
ZXR1cm4gY2hpbGRMb2dJZGVudGlmaWVyKG1fbG9nSWRlbnRpZmllciwgKyttX25leHRBdWRpb1Bh
cmFtZXRlcklkZW50aWZpZXIpOyB9CiAjZW5kaWYKIAotICAgIHZvaWQgcG9zdFRhc2soV1RGOjpG
dW5jdGlvbjx2b2lkKCk+JiYpOwotICAgIGJvb2wgaXNTdG9wcGVkKCkgY29uc3QgeyByZXR1cm4g
bV9pc1N0b3BTY2hlZHVsZWQ7IH0KLSAgICBjb25zdCBTZWN1cml0eU9yaWdpbiogb3JpZ2luKCkg
Y29uc3Q7Ci0gICAgdm9pZCBhZGRDb25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNlLCBNZXNzYWdl
TGV2ZWwsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSk7Ci0KLSAgICAvLyBFdmVudFRhcmdldAotICAg
IFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSBjb25zdCBm
aW5hbDsKKyAgICB2b2lkIHBvc3RUYXNrKFdURjo6RnVuY3Rpb248dm9pZCgpPiYmKSBmaW5hbDsK
KyAgICBib29sIGlzU3RvcHBlZCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1faXNTdG9wU2NoZWR1
bGVkOyB9CisgICAgY29uc3QgU2VjdXJpdHlPcmlnaW4qIG9yaWdpbigpIGNvbnN0IGZpbmFsOwor
ICAgIHZvaWQgYWRkQ29uc29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZSwgTWVzc2FnZUxldmVsLCBj
b25zdCBTdHJpbmcmIG1lc3NhZ2UpIGZpbmFsOwogCiBwcm90ZWN0ZWQ6CiAgICAgZXhwbGljaXQg
QXVkaW9Db250ZXh0KERvY3VtZW50Jik7CkBAIC0zNjAsOSArNDMzLDggQEAgcHJpdmF0ZToKIAog
ICAgIHZvaWQgdmlzaWJpbGl0eVN0YXRlQ2hhbmdlZCgpIGZpbmFsOwogCi0gICAgLy8gRXZlbnRU
YXJnZXQKLSAgICB2b2lkIHJlZkV2ZW50VGFyZ2V0KCkgb3ZlcnJpZGUgeyByZWYoKTsgfQotICAg
IHZvaWQgZGVyZWZFdmVudFRhcmdldCgpIG92ZXJyaWRlIHsgZGVyZWYoKTsgfQorICAgIGJvb2wg
aXNBdWRpb0NvbnRleHQoKSBjb25zdCBmaW5hbCB7IHJldHVybiB0cnVlOyB9CisgICAgYm9vbCBp
c1dlYktpdEF1ZGlvQ29udGV4dCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIGZhbHNlOyB9CiAKICAg
ICB2b2lkIGhhbmRsZURpcnR5QXVkaW9TdW1taW5nSnVuY3Rpb25zKCk7CiAgICAgdm9pZCBoYW5k
bGVEaXJ0eUF1ZGlvTm9kZU91dHB1dHMoKTsKQEAgLTQ0NiwyMSArNTE4LDEzIEBAIHByaXZhdGU6
CiAgICAgUmVmUHRyPFBlbmRpbmdBY3Rpdml0eTxBdWRpb0NvbnRleHQ+PiBtX3BlbmRpbmdBY3Rp
dml0eTsKIH07CiAKLS8vIEZJWE1FOiBGaW5kIG91dCB3aHkgdGhlc2UgPT0vIT0gZnVuY3Rpb25z
IGFyZSBuZWVkZWQgYW5kIHJlbW92ZSB0aGVtIGlmIHBvc3NpYmxlLgotCi1pbmxpbmUgYm9vbCBv
cGVyYXRvcj09KGNvbnN0IEF1ZGlvQ29udGV4dCYgbGhzLCBjb25zdCBBdWRpb0NvbnRleHQmIHJo
cykKLXsKLSAgICByZXR1cm4gJmxocyA9PSAmcmhzOwotfQotCi1pbmxpbmUgYm9vbCBvcGVyYXRv
ciE9KGNvbnN0IEF1ZGlvQ29udGV4dCYgbGhzLCBjb25zdCBBdWRpb0NvbnRleHQmIHJocykKLXsK
LSAgICByZXR1cm4gJmxocyAhPSAmcmhzOwotfQotCiBpbmxpbmUgQXVkaW9Db250ZXh0OjpTdGF0
ZSBBdWRpb0NvbnRleHQ6OnN0YXRlKCkgY29uc3QKIHsKICAgICByZXR1cm4gbV9zdGF0ZTsKIH0K
IAogfSAvLyBXZWJDb3JlCisKK1NQRUNJQUxJWkVfVFlQRV9UUkFJVFNfQkVHSU4oV2ViQ29yZTo6
QXVkaW9Db250ZXh0KQorICAgIHN0YXRpYyBib29sIGlzVHlwZShjb25zdCBXZWJDb3JlOjpBdWRp
b0NvbnRleHRCYXNlJiBjb250ZXh0KSB7IHJldHVybiBjb250ZXh0LmlzQXVkaW9Db250ZXh0KCk7
IH0KK1NQRUNJQUxJWkVfVFlQRV9UUkFJVFNfRU5EKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0LmlkbCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0LmlkbAppbmRleCBlNzExODM5YjMzMzAwZGUzNDFj
MjMxYzRjYzk2ZTllNTc2MzI0MTM1Li5mMWQ0OWNhMzY4ZDY0NTA2YWJhYjU2OTc5MDllZTA5NzIx
YjVkOGNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlv
Q29udGV4dC5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0Nv
bnRleHQuaWRsCkBAIC0yMywxOSArMjMsMTEgQEAKICAqIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLWVudW0gQXVkaW9D
b250ZXh0U3RhdGUgewotICAgICJzdXNwZW5kZWQiLAotICAgICJydW5uaW5nIiwKLSAgICAiaW50
ZXJydXB0ZWQiLAotICAgICJjbG9zZWQiCi19OwotCiBbCiAgICAgQWN0aXZlRE9NT2JqZWN0LAog
ICAgIENvbmRpdGlvbmFsPVdFQl9BVURJTywKLSAgICBFbmFibGVkQnlTZXR0aW5nPVdlYkF1ZGlv
LAorICAgIEVuYWJsZWRCeVNldHRpbmc9TW9kZXJuVW5wcmVmaXhlZFdlYkF1ZGlvLAogICAgIEV4
cG9ydE1hY3JvPVdFQkNPUkVfRVhQT1JULAotICAgIEludGVyZmFjZU5hbWU9d2Via2l0QXVkaW9D
b250ZXh0LAogXSBpbnRlcmZhY2UgQXVkaW9Db250ZXh0IDogRXZlbnRUYXJnZXQgewogICAgIFtD
YWxsV2l0aD1Eb2N1bWVudCwgTWF5VGhyb3dFeGNlcHRpb25dIGNvbnN0cnVjdG9yKCk7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0U3Rh
dGUuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0U3RhdGUu
aApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi4xNjAxMzExMDhmYTZhNGMxNGE5YWQ2MTdiOTJjYTIxNDc0NDg3ODBiCi0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0Nv
bnRleHRTdGF0ZS5oCkBAIC0wLDAgKzEsMzIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAg
R29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNi0y
MDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFS
RQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OCisgKiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKKyAqIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25j
ZQorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2VudW0gY2xhc3MgQXVkaW9Db250ZXh0U3RhdGUg
eyBTdXNwZW5kZWQsIFJ1bm5pbmcsIEludGVycnVwdGVkLCBDbG9zZWQgfTsKKworfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0NvbnRleHRTdGF0ZS5p
ZGwgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQ29udGV4dFN0YXRlLmlk
bApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi5jOGQwOGJkMmI1NjNjZDgyNmVjY2E3Zjk3OTQ0YzcxM2E4YTdlZjRiCi0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0Nv
bnRleHRTdGF0ZS5pZGwKQEAgLTAsMCArMSwzMSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
MCwgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAx
MSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUK
KyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTgorICogQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTCisgKiBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCitlbnVtIEF1ZGlvQ29u
dGV4dFN0YXRlIHsKKyAgICAic3VzcGVuZGVkIiwKKyAgICAicnVubmluZyIsCisgICAgImludGVy
cnVwdGVkIiwKKyAgICAiY2xvc2VkIgorfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViYXVkaW8vQXVkaW9EZXN0aW5hdGlvbk5vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJhdWRpby9BdWRpb0Rlc3RpbmF0aW9uTm9kZS5jcHAKaW5kZXggZDlhYmI5Nzc3
YTlkMjVlZWFmMjQyZmY0ZmZmYzVlYzVlZjQ4NmM0ZS4uNjc3NjE3ZWNiMzM4ZGE4OTFhNzEzYWU4
OGEzZjVmNjRmNmZkODQ5YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJh
dWRpby9BdWRpb0Rlc3RpbmF0aW9uTm9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJhdWRpby9BdWRpb0Rlc3RpbmF0aW9uTm9kZS5jcHAKQEAgLTM5LDcgKzM5LDcgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogICAgIAogV1RGX01BS0VfSVNPX0FMTE9DQVRFRF9JTVBMKEF1ZGlv
RGVzdGluYXRpb25Ob2RlKTsKIAotQXVkaW9EZXN0aW5hdGlvbk5vZGU6OkF1ZGlvRGVzdGluYXRp
b25Ob2RlKEF1ZGlvQ29udGV4dCYgY29udGV4dCwgZmxvYXQgc2FtcGxlUmF0ZSkKK0F1ZGlvRGVz
dGluYXRpb25Ob2RlOjpBdWRpb0Rlc3RpbmF0aW9uTm9kZShBdWRpb0NvbnRleHRCYXNlJiBjb250
ZXh0LCBmbG9hdCBzYW1wbGVSYXRlKQogICAgIDogQXVkaW9Ob2RlKGNvbnRleHQsIHNhbXBsZVJh
dGUpCiAgICAgLCBtX2N1cnJlbnRTYW1wbGVGcmFtZSgwKQogICAgICwgbV9pc1NpbGVudCh0cnVl
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0Rlc3Rp
bmF0aW9uTm9kZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0Rlc3Rp
bmF0aW9uTm9kZS5oCmluZGV4IDg5NDhmNGVlNzBhNWMwZTgxYThlODNjMWYwY2Q1ZmNmNDUxYWNj
NjAuLjM3NmY0NjI3MTJkN2YxYzJhZThkNTIwMTFmYTJhMTVmNmUxOGFlYzcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9EZXN0aW5hdGlvbk5vZGUuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvRGVzdGluYXRpb25Ob2Rl
LmgKQEAgLTM2LDcgKzM2LDcgQEAgY2xhc3MgQXVkaW9Db250ZXh0OwogY2xhc3MgQXVkaW9EZXN0
aW5hdGlvbk5vZGUgOiBwdWJsaWMgQXVkaW9Ob2RlLCBwdWJsaWMgQXVkaW9JT0NhbGxiYWNrIHsK
ICAgICBXVEZfTUFLRV9JU09fQUxMT0NBVEVEKEF1ZGlvRGVzdGluYXRpb25Ob2RlKTsKIHB1Ymxp
YzoKLSAgICBBdWRpb0Rlc3RpbmF0aW9uTm9kZShBdWRpb0NvbnRleHQmLCBmbG9hdCBzYW1wbGVS
YXRlKTsKKyAgICBBdWRpb0Rlc3RpbmF0aW9uTm9kZShBdWRpb0NvbnRleHRCYXNlJiwgZmxvYXQg
c2FtcGxlUmF0ZSk7CiAgICAgdmlydHVhbCB+QXVkaW9EZXN0aW5hdGlvbk5vZGUoKTsKICAgICAK
ICAgICAvLyBBdWRpb05vZGUgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViYXVkaW8vQXVkaW9Ob2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8v
QXVkaW9Ob2RlLmNwcAppbmRleCA3NjVlY2UzMzJmNjM2OWM0MTk4ZmU1N2RkM2FlN2NjNTE5M2Iy
YWNhLi5lNTU0Mzc3OWQ1MWE1MDhjZTYxYTZhMDgzMTEyZThkMmQwYTg3ZDBkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvTm9kZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb05vZGUuY3BwCkBAIC0zMyw2ICszMyw3
IEBACiAjaW5jbHVkZSAiQXVkaW9Ob2RlT3V0cHV0LmgiCiAjaW5jbHVkZSAiQXVkaW9QYXJhbS5o
IgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKKyNpbmNsdWRlICJXZWJLaXRBdWRpb0NvbnRleHQuaCIK
ICNpbmNsdWRlIDx3dGYvQXRvbWljcy5oPgogI2luY2x1ZGUgPHd0Zi9Jc29NYWxsb2NJbmxpbmVz
Lmg+CiAjaW5jbHVkZSA8d3RmL01haW5UaHJlYWQuaD4KQEAgLTk1LDcgKzk2LDcgQEAgU3RyaW5n
IGNvbnZlcnRFbnVtZXJhdGlvblRvU3RyaW5nKEF1ZGlvTm9kZTo6Tm9kZVR5cGUgZW51bWVyYXRp
b25WYWx1ZSkKICAgICByZXR1cm4gdmFsdWVzW3N0YXRpY19jYXN0PHNpemVfdD4oZW51bWVyYXRp
b25WYWx1ZSldOwogfQogCi1BdWRpb05vZGU6OkF1ZGlvTm9kZShBdWRpb0NvbnRleHQmIGNvbnRl
eHQsIGZsb2F0IHNhbXBsZVJhdGUpCitBdWRpb05vZGU6OkF1ZGlvTm9kZShBdWRpb0NvbnRleHRC
YXNlJiBjb250ZXh0LCBmbG9hdCBzYW1wbGVSYXRlKQogICAgIDogbV9pc0luaXRpYWxpemVkKGZh
bHNlKQogICAgICwgbV9ub2RlVHlwZShOb2RlVHlwZVVua25vd24pCiAgICAgLCBtX2NvbnRleHQo
Y29udGV4dCkKQEAgLTE5NCw3ICsxOTUsNyBAQCBBdWRpb05vZGVPdXRwdXQqIEF1ZGlvTm9kZTo6
b3V0cHV0KHVuc2lnbmVkIGkpCiBFeGNlcHRpb25Pcjx2b2lkPiBBdWRpb05vZGU6OmNvbm5lY3Qo
QXVkaW9Ob2RlJiBkZXN0aW5hdGlvbiwgdW5zaWduZWQgb3V0cHV0SW5kZXgsIHVuc2lnbmVkIGlu
cHV0SW5kZXgpCiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKLSAgICBBdWRpb0NvbnRl
eHQ6OkF1dG9Mb2NrZXIgbG9ja2VyKGNvbnRleHQoKSk7CisgICAgQXVkaW9Db250ZXh0QmFzZTo6
QXV0b0xvY2tlciBsb2NrZXIoY29udGV4dCgpKTsKIAogICAgIEFMV0FZU19MT0coTE9HSURFTlRJ
RklFUiwgZGVzdGluYXRpb24ubm9kZVR5cGUoKSwgIiwgb3V0cHV0ID0gIiwgb3V0cHV0SW5kZXgs
ICIsIGlucHV0ID0gIiwgaW5wdXRJbmRleCk7CiAgICAgCkBAIC0yMDUsNyArMjA2LDcgQEAgRXhj
ZXB0aW9uT3I8dm9pZD4gQXVkaW9Ob2RlOjpjb25uZWN0KEF1ZGlvTm9kZSYgZGVzdGluYXRpb24s
IHVuc2lnbmVkIG91dHB1dEluZGUKICAgICBpZiAoaW5wdXRJbmRleCA+PSBkZXN0aW5hdGlvbi5u
dW1iZXJPZklucHV0cygpKQogICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgSW5kZXhTaXplRXJy
b3IgfTsKIAotICAgIGlmIChjb250ZXh0KCkgIT0gZGVzdGluYXRpb24uY29udGV4dCgpKQorICAg
IGlmICgmY29udGV4dCgpICE9ICZkZXN0aW5hdGlvbi5jb250ZXh0KCkpCiAgICAgICAgIHJldHVy
biBFeGNlcHRpb24geyBTeW50YXhFcnJvciB9OwogCiAgICAgYXV0byogaW5wdXQgPSBkZXN0aW5h
dGlvbi5pbnB1dChpbnB1dEluZGV4KTsKQEAgLTIyMCw3ICsyMjEsNyBAQCBFeGNlcHRpb25Pcjx2
b2lkPiBBdWRpb05vZGU6OmNvbm5lY3QoQXVkaW9Ob2RlJiBkZXN0aW5hdGlvbiwgdW5zaWduZWQg
b3V0cHV0SW5kZQogCiBFeGNlcHRpb25Pcjx2b2lkPiBBdWRpb05vZGU6OmNvbm5lY3QoQXVkaW9Q
YXJhbSYgcGFyYW0sIHVuc2lnbmVkIG91dHB1dEluZGV4KQogewotICAgIEF1ZGlvQ29udGV4dDo6
QXV0b0xvY2tlciBsb2NrZXIoY29udGV4dCgpKTsKKyAgICBBdWRpb0NvbnRleHRCYXNlOjpBdXRv
TG9ja2VyIGxvY2tlcihjb250ZXh0KCkpOwogCiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsK
IApAQCAtMjI5LDcgKzIzMCw3IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IEF1ZGlvTm9kZTo6Y29ubmVj
dChBdWRpb1BhcmFtJiBwYXJhbSwgdW5zaWduZWQgb3V0cHV0SW5kZXgpCiAgICAgaWYgKG91dHB1
dEluZGV4ID49IG51bWJlck9mT3V0cHV0cygpKQogICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsg
SW5kZXhTaXplRXJyb3IgfTsKIAotICAgIGlmIChjb250ZXh0KCkgIT0gcGFyYW0uY29udGV4dCgp
KQorICAgIGlmICgmY29udGV4dCgpICE9ICZwYXJhbS5jb250ZXh0KCkpCiAgICAgICAgIHJldHVy
biBFeGNlcHRpb24geyBTeW50YXhFcnJvciB9OwogCiAgICAgYXV0byogb3V0cHV0ID0gdGhpcy0+
b3V0cHV0KG91dHB1dEluZGV4KTsKQEAgLTI0MSw3ICsyNDIsNyBAQCBFeGNlcHRpb25Pcjx2b2lk
PiBBdWRpb05vZGU6OmNvbm5lY3QoQXVkaW9QYXJhbSYgcGFyYW0sIHVuc2lnbmVkIG91dHB1dElu
ZGV4KQogRXhjZXB0aW9uT3I8dm9pZD4gQXVkaW9Ob2RlOjpkaXNjb25uZWN0KHVuc2lnbmVkIG91
dHB1dEluZGV4KQogewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7Ci0gICAgQXVkaW9Db250
ZXh0OjpBdXRvTG9ja2VyIGxvY2tlcihjb250ZXh0KCkpOworICAgIEF1ZGlvQ29udGV4dEJhc2U6
OkF1dG9Mb2NrZXIgbG9ja2VyKGNvbnRleHQoKSk7CiAKICAgICAvLyBTYW5pdHkgY2hlY2sgaW5w
dXQgYW5kIG91dHB1dCBpbmRpY2VzLgogICAgIGlmIChvdXRwdXRJbmRleCA+PSBudW1iZXJPZk91
dHB1dHMoKSkKQEAgLTI2Myw3ICsyNjQsNyBAQCB1bnNpZ25lZCBBdWRpb05vZGU6OmNoYW5uZWxD
b3VudCgpCiBFeGNlcHRpb25Pcjx2b2lkPiBBdWRpb05vZGU6OnNldENoYW5uZWxDb3VudCh1bnNp
Z25lZCBjaGFubmVsQ291bnQpCiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKLSAgICBB
dWRpb0NvbnRleHQ6OkF1dG9Mb2NrZXIgbG9ja2VyKGNvbnRleHQoKSk7CisgICAgQXVkaW9Db250
ZXh0QmFzZTo6QXV0b0xvY2tlciBsb2NrZXIoY29udGV4dCgpKTsKIAogICAgIEFMV0FZU19MT0co
TE9HSURFTlRJRklFUiwgY2hhbm5lbENvdW50KTsKICAgICAKQEAgLTI5Niw3ICsyOTcsNyBAQCBT
dHJpbmcgQXVkaW9Ob2RlOjpjaGFubmVsQ291bnRNb2RlKCkKIEV4Y2VwdGlvbk9yPHZvaWQ+IEF1
ZGlvTm9kZTo6c2V0Q2hhbm5lbENvdW50TW9kZShjb25zdCBTdHJpbmcmIG1vZGUpCiB7CiAgICAg
QVNTRVJUKGlzTWFpblRocmVhZCgpKTsKLSAgICBBdWRpb0NvbnRleHQ6OkF1dG9Mb2NrZXIgbG9j
a2VyKGNvbnRleHQoKSk7CisgICAgQXVkaW9Db250ZXh0QmFzZTo6QXV0b0xvY2tlciBsb2NrZXIo
Y29udGV4dCgpKTsKIAogICAgIEFMV0FZU19MT0coTE9HSURFTlRJRklFUiwgbW9kZSk7CiAgICAg
CkBAIC0zMzIsNyArMzMzLDcgQEAgU3RyaW5nIEF1ZGlvTm9kZTo6Y2hhbm5lbEludGVycHJldGF0
aW9uKCkKIEV4Y2VwdGlvbk9yPHZvaWQ+IEF1ZGlvTm9kZTo6c2V0Q2hhbm5lbEludGVycHJldGF0
aW9uKGNvbnN0IFN0cmluZyYgaW50ZXJwcmV0YXRpb24pCiB7CiAgICAgQVNTRVJUKGlzTWFpblRo
cmVhZCgpKTsKLSAgICBBdWRpb0NvbnRleHQ6OkF1dG9Mb2NrZXIgbG9ja2VyKGNvbnRleHQoKSk7
CisgICAgQXVkaW9Db250ZXh0QmFzZTo6QXV0b0xvY2tlciBsb2NrZXIoY29udGV4dCgpKTsKIAog
ICAgIEFMV0FZU19MT0coTE9HSURFTlRJRklFUiwgaW50ZXJwcmV0YXRpb24pOwogICAgIApAQCAt
NDM3LDcgKzQzOCw3IEBAIHZvaWQgQXVkaW9Ob2RlOjplbmFibGVPdXRwdXRzSWZOZWNlc3Nhcnko
KQogewogICAgIGlmIChtX2lzRGlzYWJsZWQgJiYgbV9jb25uZWN0aW9uUmVmQ291bnQgPiAwKSB7
CiAgICAgICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7Ci0gICAgICAgIEF1ZGlvQ29udGV4dDo6
QXV0b0xvY2tlciBsb2NrZXIoY29udGV4dCgpKTsKKyAgICAgICAgQXVkaW9Db250ZXh0QmFzZTo6
QXV0b0xvY2tlciBsb2NrZXIoY29udGV4dCgpKTsKIAogICAgICAgICBtX2lzRGlzYWJsZWQgPSBm
YWxzZTsKICAgICAgICAgZm9yIChhdXRvJiBvdXRwdXQgOiBtX291dHB1dHMpCkBAIC01MDEsNyAr
NTAyLDcgQEAgdm9pZCBBdWRpb05vZGU6OmRlcmVmKFJlZlR5cGUgcmVmVHlwZSkKICAgICAvLyBJ
biB0aGUgY2FzZSBvZiB0aGUgYXVkaW8gdGhyZWFkLCB3ZSBtdXN0IHVzZSBhIHRyeUxvY2sgdG8g
YXZvaWQgZ2xpdGNoZXMuCiAgICAgYm9vbCBoYXNMb2NrID0gZmFsc2U7CiAgICAgYm9vbCBtdXN0
UmVsZWFzZUxvY2sgPSBmYWxzZTsKLSAgICAKKwogICAgIGlmIChjb250ZXh0KCkuaXNBdWRpb1Ro
cmVhZCgpKSB7CiAgICAgICAgIC8vIFJlYWwtdGltZSBhdWRpbyB0aHJlYWQgbXVzdCBub3QgY29u
dGVuZCBsb2NrICh0byBhdm9pZCBnbGl0Y2hlcykuCiAgICAgICAgIGhhc0xvY2sgPSBjb250ZXh0
KCkudHJ5TG9jayhtdXN0UmVsZWFzZUxvY2spOwpAQCAtNTMwLDYgKzUzMSwxMyBAQCB2b2lkIEF1
ZGlvTm9kZTo6ZGVyZWYoUmVmVHlwZSByZWZUeXBlKQogICAgICAgICBjb250ZXh0KCkuZGVsZXRl
TWFya2VkTm9kZXMoKTsKIH0KIAorVmFyaWFudDxSZWZQdHI8QXVkaW9Db250ZXh0PiwgUmVmUHRy
PFdlYktpdEF1ZGlvQ29udGV4dD4+IEF1ZGlvTm9kZTo6Y29udGV4dEZvckJpbmRpbmdzKCkgY29u
c3QKK3sKKyAgICBpZiAobV9jb250ZXh0LT5pc1dlYktpdEF1ZGlvQ29udGV4dCgpKQorICAgICAg
ICByZXR1cm4gbWFrZVJlZlB0cihzdGF0aWNfY2FzdDxXZWJLaXRBdWRpb0NvbnRleHQmPihtX2Nv
bnRleHQuZ2V0KCkpKTsKKyAgICByZXR1cm4gbWFrZVJlZlB0cihzdGF0aWNfY2FzdDxBdWRpb0Nv
bnRleHQmPihtX2NvbnRleHQuZ2V0KCkpKTsKK30KKwogdm9pZCBBdWRpb05vZGU6OmZpbmlzaERl
cmVmKFJlZlR5cGUgcmVmVHlwZSkKIHsKICAgICBBU1NFUlQoY29udGV4dCgpLmlzR3JhcGhPd25l
cigpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9O
b2RlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvTm9kZS5oCmluZGV4
IDQyMTAxMDA2Y2M3ZjU0ZWU3NWFkZjcwNzJlZmJlNjRiYWM1OGQzNmQuLmE5ODgxYmQ0YjhkYjRj
M2IxMGY5ZDc3MTE2NTYyNjAwYzE4MGZjOTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViYXVkaW8vQXVkaW9Ob2RlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJhdWRpby9BdWRpb05vZGUuaApAQCAtMjksMTUgKzI5LDE4IEBACiAjaW5jbHVkZSAiRXhjZXB0
aW9uT3IuaCIKICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9Mb2dnZXJI
ZWxwZXIuaD4KKyNpbmNsdWRlIDx3dGYvVmFyaWFudC5oPgogCiAjZGVmaW5lIERFQlVHX0FVRElP
Tk9ERV9SRUZFUkVOQ0VTIDAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBBdWRpb0Nv
bnRleHQ7CitjbGFzcyBBdWRpb0NvbnRleHRCYXNlOwogY2xhc3MgQXVkaW9Ob2RlSW5wdXQ7CiBj
bGFzcyBBdWRpb05vZGVPdXRwdXQ7CiBjbGFzcyBBdWRpb1BhcmFtOworY2xhc3MgV2ViS2l0QXVk
aW9Db250ZXh0OwogCiAvLyBBbiBBdWRpb05vZGUgaXMgdGhlIGJhc2ljIGJ1aWxkaW5nIGJsb2Nr
IGZvciBoYW5kbGluZyBhdWRpbyB3aXRoaW4gYW4gQXVkaW9Db250ZXh0LgogLy8gSXQgbWF5IGJl
IGFuIGF1ZGlvIHNvdXJjZSwgYW4gaW50ZXJtZWRpYXRlIHByb2Nlc3NpbmcgbW9kdWxlLCBvciBh
biBhdWRpbyBkZXN0aW5hdGlvbi4KQEAgLTU2LDExICs1OSwxMyBAQCBjbGFzcyBBdWRpb05vZGUK
IHB1YmxpYzoKICAgICBlbnVtIHsgUHJvY2Vzc2luZ1NpemVJbkZyYW1lcyA9IDEyOCB9OwogCi0g
ICAgQXVkaW9Ob2RlKEF1ZGlvQ29udGV4dCYsIGZsb2F0IHNhbXBsZVJhdGUpOworICAgIEF1ZGlv
Tm9kZShBdWRpb0NvbnRleHRCYXNlJiwgZmxvYXQgc2FtcGxlUmF0ZSk7CiAgICAgdmlydHVhbCB+
QXVkaW9Ob2RlKCk7CiAKLSAgICBBdWRpb0NvbnRleHQmIGNvbnRleHQoKSB7IHJldHVybiBtX2Nv
bnRleHQuZ2V0KCk7IH0KLSAgICBjb25zdCBBdWRpb0NvbnRleHQmIGNvbnRleHQoKSBjb25zdCB7
IHJldHVybiBtX2NvbnRleHQuZ2V0KCk7IH0KKyAgICBBdWRpb0NvbnRleHRCYXNlJiBjb250ZXh0
KCkgeyByZXR1cm4gbV9jb250ZXh0LmdldCgpOyB9CisgICAgY29uc3QgQXVkaW9Db250ZXh0QmFz
ZSYgY29udGV4dCgpIGNvbnN0IHsgcmV0dXJuIG1fY29udGV4dC5nZXQoKTsgfQorCisgICAgVmFy
aWFudDxSZWZQdHI8QXVkaW9Db250ZXh0PiwgUmVmUHRyPFdlYktpdEF1ZGlvQ29udGV4dD4+IGNv
bnRleHRGb3JCaW5kaW5ncygpIGNvbnN0OwogCiAgICAgZW51bSBOb2RlVHlwZSB7CiAgICAgICAg
IE5vZGVUeXBlVW5rbm93biwKQEAgLTIwOSw3ICsyMTQsNyBAQCBwcml2YXRlOgogCiAgICAgdm9s
YXRpbGUgYm9vbCBtX2lzSW5pdGlhbGl6ZWQ7CiAgICAgTm9kZVR5cGUgbV9ub2RlVHlwZTsKLSAg
ICBSZWY8QXVkaW9Db250ZXh0PiBtX2NvbnRleHQ7CisgICAgUmVmPEF1ZGlvQ29udGV4dEJhc2U+
IG1fY29udGV4dDsKICAgICBmbG9hdCBtX3NhbXBsZVJhdGU7CiAgICAgVmVjdG9yPHN0ZDo6dW5p
cXVlX3B0cjxBdWRpb05vZGVJbnB1dD4+IG1faW5wdXRzOwogICAgIFZlY3RvcjxzdGQ6OnVuaXF1
ZV9wdHI8QXVkaW9Ob2RlT3V0cHV0Pj4gbV9vdXRwdXRzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb05vZGUuaWRsIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJhdWRpby9BdWRpb05vZGUuaWRsCmluZGV4IDcwZmVjOGM4MTQ1MDU5OTFlMjBhZDhj
MWM5MmNjMTFlZWU5Njg0MmYuLjcxOTM5YzgzMTcxNGJmYmYzNmRmYmFlNTJmYmMzZDNkMjAyZjY2
MjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Ob2Rl
LmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvTm9kZS5pZGwK
QEAgLTI1LDcgKzI1LDcgQEAKIFsKICAgICBDb25kaXRpb25hbD1XRUJfQVVESU8sCiBdIGludGVy
ZmFjZSBBdWRpb05vZGUgOiBFdmVudFRhcmdldCB7Ci0gICAgcmVhZG9ubHkgYXR0cmlidXRlIEF1
ZGlvQ29udGV4dCBjb250ZXh0OworICAgIFtJbXBsZW1lbnRlZEFzPWNvbnRleHRGb3JCaW5kaW5n
c10gcmVhZG9ubHkgYXR0cmlidXRlIChBdWRpb0NvbnRleHQgb3IgV2ViS2l0QXVkaW9Db250ZXh0
KSBjb250ZXh0OwogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSB1bnNpZ25lZCBsb25nIG51bWJlck9m
SW5wdXRzOwogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSB1bnNpZ25lZCBsb25nIG51bWJlck9mT3V0
cHV0czsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRp
b05vZGVPdXRwdXQuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Ob2Rl
T3V0cHV0LmgKaW5kZXggNTBhOTVlZTIwNWMxMjAzMDkzY2E1ZmMzMDcxNzk5MTM1MzJkNzNhNC4u
ZjA4OTgzNjM1ZjNjNTU5Yzc5ODFmMGJhNGE1YzEyMmIxNTljMmNiNSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb05vZGVPdXRwdXQuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvTm9kZU91dHB1dC5oCkBAIC00Nyw3ICs0
Nyw3IEBAIHB1YmxpYzoKIAogICAgIC8vIENhbiBiZSBjYWxsZWQgZnJvbSBhbnkgdGhyZWFkLgog
ICAgIEF1ZGlvTm9kZSogbm9kZSgpIGNvbnN0IHsgcmV0dXJuIG1fbm9kZTsgfQotICAgIEF1ZGlv
Q29udGV4dCYgY29udGV4dCgpIHsgcmV0dXJuIG1fbm9kZS0+Y29udGV4dCgpOyB9CisgICAgQXVk
aW9Db250ZXh0QmFzZSYgY29udGV4dCgpIHsgcmV0dXJuIG1fbm9kZS0+Y29udGV4dCgpOyB9CiAg
ICAgCiAgICAgLy8gQ2F1c2VzIG91ciBBdWRpb05vZGUgdG8gcHJvY2VzcyBpZiBpdCBoYXNuJ3Qg
YWxyZWFkeSBmb3IgdGhpcyByZW5kZXIgcXVhbnR1bS4KICAgICAvLyBJdCByZXR1cm5zIHRoZSBi
dXMgY29udGFpbmluZyB0aGUgcHJvY2Vzc2VkIGF1ZGlvIGZvciB0aGlzIG91dHB1dCwgcmV0dXJu
aW5nIGluUGxhY2VCdXMgaWYgaW4tcGxhY2UgcHJvY2Vzc2luZyB3YXMgcG9zc2libGUuCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvUGFyYW0uY3BwIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1BhcmFtLmNwcAppbmRleCAyOTM0
NTY0NDVjYzBlMWJkYTlkMDBkMmJkOWEyYzBkMTExMDNkY2M5Li5kNDcwYmY3NDZlZmI1YWIyM2Nh
MzUyZDdiZDk1MzM4YzM4MTRmZTdjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmF1ZGlvL0F1ZGlvUGFyYW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
YXVkaW8vQXVkaW9QYXJhbS5jcHAKQEAgLTQxLDcgKzQxLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogY29uc3QgZG91YmxlIEF1ZGlvUGFyYW06OkRlZmF1bHRTbW9vdGhpbmdDb25zdGFudCA9IDAu
MDU7CiBjb25zdCBkb3VibGUgQXVkaW9QYXJhbTo6U25hcFRocmVzaG9sZCA9IDAuMDAxOwogCi1B
dWRpb1BhcmFtOjpBdWRpb1BhcmFtKEF1ZGlvQ29udGV4dCYgY29udGV4dCwgY29uc3QgU3RyaW5n
JiBuYW1lLCBkb3VibGUgZGVmYXVsdFZhbHVlLCBkb3VibGUgbWluVmFsdWUsIGRvdWJsZSBtYXhW
YWx1ZSwgdW5zaWduZWQgdW5pdHMpCitBdWRpb1BhcmFtOjpBdWRpb1BhcmFtKEF1ZGlvQ29udGV4
dEJhc2UmIGNvbnRleHQsIGNvbnN0IFN0cmluZyYgbmFtZSwgZG91YmxlIGRlZmF1bHRWYWx1ZSwg
ZG91YmxlIG1pblZhbHVlLCBkb3VibGUgbWF4VmFsdWUsIHVuc2lnbmVkIHVuaXRzKQogICAgIDog
QXVkaW9TdW1taW5nSnVuY3Rpb24oY29udGV4dCkKICAgICAsIG1fbmFtZShuYW1lKQogICAgICwg
bV92YWx1ZShkZWZhdWx0VmFsdWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmF1ZGlvL0F1ZGlvUGFyYW0uaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8v
QXVkaW9QYXJhbS5oCmluZGV4IDIyNmM5NTdlNzA2ZmU2MWQyZjIzM2MwZDViZjk2ZjIwNjg3MzFj
NDIuLjE2YTIxMDk1MDQ0ZjYwMWVkMjdiODkwMWEwNzY4ZjJmYTllYjE2ZTYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9QYXJhbS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9QYXJhbS5oCkBAIC0zMSw2ICszMSw3IEBA
CiAjaW5jbHVkZSAiQXVkaW9Db250ZXh0LmgiCiAjaW5jbHVkZSAiQXVkaW9QYXJhbVRpbWVsaW5l
LmgiCiAjaW5jbHVkZSAiQXVkaW9TdW1taW5nSnVuY3Rpb24uaCIKKyNpbmNsdWRlICJXZWJLaXRB
dWRpb0NvbnRleHQuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9GbG9hdDMyQXJyYXkuaD4K
ICNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KICNpbmNsdWRlIDx3dGYvTG9nZ2VySGVscGVyLmg+CkBA
IC01Miw3ICs1Myw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgY29uc3QgZG91YmxlIERlZmF1bHRT
bW9vdGhpbmdDb25zdGFudDsKICAgICBzdGF0aWMgY29uc3QgZG91YmxlIFNuYXBUaHJlc2hvbGQ7
CiAKLSAgICBzdGF0aWMgUmVmPEF1ZGlvUGFyYW0+IGNyZWF0ZShBdWRpb0NvbnRleHQmIGNvbnRl
eHQsIGNvbnN0IFN0cmluZyYgbmFtZSwgZG91YmxlIGRlZmF1bHRWYWx1ZSwgZG91YmxlIG1pblZh
bHVlLCBkb3VibGUgbWF4VmFsdWUsIHVuc2lnbmVkIHVuaXRzID0gMCkKKyAgICBzdGF0aWMgUmVm
PEF1ZGlvUGFyYW0+IGNyZWF0ZShBdWRpb0NvbnRleHRCYXNlJiBjb250ZXh0LCBjb25zdCBTdHJp
bmcmIG5hbWUsIGRvdWJsZSBkZWZhdWx0VmFsdWUsIGRvdWJsZSBtaW5WYWx1ZSwgZG91YmxlIG1h
eFZhbHVlLCB1bnNpZ25lZCB1bml0cyA9IDApCiAgICAgewogICAgICAgICByZXR1cm4gYWRvcHRS
ZWYoKm5ldyBBdWRpb1BhcmFtKGNvbnRleHQsIG5hbWUsIGRlZmF1bHRWYWx1ZSwgbWluVmFsdWUs
IG1heFZhbHVlLCB1bml0cykpOwogICAgIH0KQEAgLTEwOCw3ICsxMDksNyBAQCBwdWJsaWM6CiAg
ICAgdm9pZCBkaXNjb25uZWN0KEF1ZGlvTm9kZU91dHB1dCopOwogCiBwcm90ZWN0ZWQ6Ci0gICAg
QXVkaW9QYXJhbShBdWRpb0NvbnRleHQmLCBjb25zdCBTdHJpbmcmLCBkb3VibGUgZGVmYXVsdFZh
bHVlLCBkb3VibGUgbWluVmFsdWUsIGRvdWJsZSBtYXhWYWx1ZSwgdW5zaWduZWQgdW5pdHMgPSAw
KTsKKyAgICBBdWRpb1BhcmFtKEF1ZGlvQ29udGV4dEJhc2UmLCBjb25zdCBTdHJpbmcmLCBkb3Vi
bGUgZGVmYXVsdFZhbHVlLCBkb3VibGUgbWluVmFsdWUsIGRvdWJsZSBtYXhWYWx1ZSwgdW5zaWdu
ZWQgdW5pdHMgPSAwKTsKIAogcHJpdmF0ZToKICAgICAvLyBzYW1wbGVBY2N1cmF0ZSBjb3JyZXNw
b25kcyB0byBhLXJhdGUgKGF1ZGlvIHJhdGUpIHZzLiBrLXJhdGUgaW4gdGhlIFdlYiBBdWRpbyBz
cGVjaWZpY2F0aW9uLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRp
by9BdWRpb1BhcmFtVGltZWxpbmUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRp
by9BdWRpb1BhcmFtVGltZWxpbmUuY3BwCmluZGV4IDJiNTk1NzBiZjZlNjFiNTQ4M2VkMWI5MDdl
Njc2ZjY5YmU5YjM3NDIuLjZjNDEzMDFkOGFkNWE3YWJiZThkYjBkYmExN2NmODQ0YmZlZmZiNjAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9QYXJhbVRp
bWVsaW5lLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvUGFy
YW1UaW1lbGluZS5jcHAKQEAgLTExMyw3ICsxMTMsNyBAQCB2b2lkIEF1ZGlvUGFyYW1UaW1lbGlu
ZTo6Y2FuY2VsU2NoZWR1bGVkVmFsdWVzKGZsb2F0IHN0YXJ0VGltZSkKICAgICB9CiB9CiAKLWZs
b2F0IEF1ZGlvUGFyYW1UaW1lbGluZTo6dmFsdWVGb3JDb250ZXh0VGltZShBdWRpb0NvbnRleHQm
IGNvbnRleHQsIGZsb2F0IGRlZmF1bHRWYWx1ZSwgYm9vbCYgaGFzVmFsdWUpCitmbG9hdCBBdWRp
b1BhcmFtVGltZWxpbmU6OnZhbHVlRm9yQ29udGV4dFRpbWUoQXVkaW9Db250ZXh0QmFzZSYgY29u
dGV4dCwgZmxvYXQgZGVmYXVsdFZhbHVlLCBib29sJiBoYXNWYWx1ZSkKIHsKICAgICB7CiAgICAg
ICAgIHN0ZDo6dW5pcXVlX2xvY2s8TG9jaz4gbG9jayhtX2V2ZW50c011dGV4LCBzdGQ6OnRyeV90
b19sb2NrKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVk
aW9QYXJhbVRpbWVsaW5lLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlv
UGFyYW1UaW1lbGluZS5oCmluZGV4IDdjMTA5OTk1NmNlZWJjOGQ4ZjZkNTBlMGZiMGZjOWExZWVm
ZGEzNGQuLmE1ODY4YmRlZTE4M2ZkZTJhNzA4ZDQ2NGNlNjM1YjI0MDBlNzYxYTIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9QYXJhbVRpbWVsaW5lLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1BhcmFtVGltZWxpbmUu
aApAQCAtNTIsNyArNTIsNyBAQCBwdWJsaWM6CiAKICAgICAvLyBoYXNWYWx1ZSBpcyBzZXQgdG8g
dHJ1ZSBpZiBhIHZhbGlkIHRpbWVsaW5lIHZhbHVlIGlzIHJldHVybmVkLgogICAgIC8vIG90aGVy
d2lzZSBkZWZhdWx0VmFsdWUgaXMgcmV0dXJuZWQuCi0gICAgZmxvYXQgdmFsdWVGb3JDb250ZXh0
VGltZShBdWRpb0NvbnRleHQmLCBmbG9hdCBkZWZhdWx0VmFsdWUsIGJvb2wmIGhhc1ZhbHVlKTsK
KyAgICBmbG9hdCB2YWx1ZUZvckNvbnRleHRUaW1lKEF1ZGlvQ29udGV4dEJhc2UmLCBmbG9hdCBk
ZWZhdWx0VmFsdWUsIGJvb2wmIGhhc1ZhbHVlKTsKIAogICAgIC8vIEdpdmVuIHRoZSB0aW1lIHJh
bmdlLCBjYWxjdWxhdGVzIHBhcmFtZXRlciB2YWx1ZXMgaW50byB0aGUgdmFsdWVzIGJ1ZmZlcgog
ICAgIC8vIGFuZCByZXR1cm5zIHRoZSBsYXN0IHBhcmFtZXRlciB2YWx1ZSBjYWxjdWxhdGVkIGZv
ciAidmFsdWVzIiBvciB0aGUgZGVmYXVsdFZhbHVlIGlmIG5vbmUgd2VyZSBjYWxjdWxhdGVkLgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1NjaGVkdWxl
ZFNvdXJjZU5vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1Nj
aGVkdWxlZFNvdXJjZU5vZGUuY3BwCmluZGV4IDBmNzI2NzZmYzc0M2M0Y2UyNDFhZWUzYzkwZDAy
OGY2YTk1MjcwMjMuLjdjMjgyMzdhMGJkMDM1ZTRjM2FiN2JhNTEzNzUzM2JkOTE1YTdlNjEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9TY2hlZHVsZWRT
b3VyY2VOb2RlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlv
U2NoZWR1bGVkU291cmNlTm9kZS5jcHAKQEAgLTQ5LDcgKzQ5LDcgQEAgV1RGX01BS0VfSVNPX0FM
TE9DQVRFRF9JTVBMKEF1ZGlvU2NoZWR1bGVkU291cmNlTm9kZSk7CiAKIGNvbnN0IGRvdWJsZSBB
dWRpb1NjaGVkdWxlZFNvdXJjZU5vZGU6OlVua25vd25UaW1lID0gLTE7CiAKLUF1ZGlvU2NoZWR1
bGVkU291cmNlTm9kZTo6QXVkaW9TY2hlZHVsZWRTb3VyY2VOb2RlKEF1ZGlvQ29udGV4dCYgY29u
dGV4dCwgZmxvYXQgc2FtcGxlUmF0ZSkKK0F1ZGlvU2NoZWR1bGVkU291cmNlTm9kZTo6QXVkaW9T
Y2hlZHVsZWRTb3VyY2VOb2RlKEF1ZGlvQ29udGV4dEJhc2UmIGNvbnRleHQsIGZsb2F0IHNhbXBs
ZVJhdGUpCiAgICAgOiBBdWRpb05vZGUoY29udGV4dCwgc2FtcGxlUmF0ZSkKICAgICAsIEFjdGl2
ZURPTU9iamVjdChjb250ZXh0LnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSkKICAgICAsIG1fZW5k
VGltZShVbmtub3duVGltZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
YXVkaW8vQXVkaW9TY2hlZHVsZWRTb3VyY2VOb2RlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmF1ZGlvL0F1ZGlvU2NoZWR1bGVkU291cmNlTm9kZS5oCmluZGV4IDhjYWRiZTEwYWZkM2E0
ZDdlY2UyMDIyMDI0NDM4N2Y0Y2UxNGMyZTQuLmI0ZDk1ODgwYzFkZjM2NmY4MjFlMWFiZmNmY2E3
N2Q3NjExMGVhM2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8v
QXVkaW9TY2hlZHVsZWRTb3VyY2VOb2RlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJhdWRpby9BdWRpb1NjaGVkdWxlZFNvdXJjZU5vZGUuaApAQCAtNTMsNyArNTMsNyBAQCBwdWJs
aWM6CiAgICAgICAgIEZJTklTSEVEX1NUQVRFID0gMwogICAgIH07CiAgICAgCi0gICAgQXVkaW9T
Y2hlZHVsZWRTb3VyY2VOb2RlKEF1ZGlvQ29udGV4dCYsIGZsb2F0IHNhbXBsZVJhdGUpOworICAg
IEF1ZGlvU2NoZWR1bGVkU291cmNlTm9kZShBdWRpb0NvbnRleHRCYXNlJiwgZmxvYXQgc2FtcGxl
UmF0ZSk7CiAKICAgICBFeGNlcHRpb25Pcjx2b2lkPiBzdGFydExhdGVyKGRvdWJsZSB3aGVuKTsK
ICAgICBFeGNlcHRpb25Pcjx2b2lkPiBzdG9wTGF0ZXIoZG91YmxlIHdoZW4pOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1N1bW1pbmdKdW5jdGlvbi5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvU3VtbWluZ0p1bmN0aW9u
LmNwcAppbmRleCBlZTYwMGE2MjlhMWI4NjljZDlhNWIzZDM3MmFlNDc2YTNlMTI3ZmIwLi5kZDY0
ZmQzZWE4MTMxMWYwMGUwOGMzY2E0MWQ3NDI4ZjFmMWYzODc5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvU3VtbWluZ0p1bmN0aW9uLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvU3VtbWluZ0p1bmN0aW9uLmNwcApA
QCAtMzQsNyArMzQsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLUF1ZGlvU3VtbWluZ0p1
bmN0aW9uOjpBdWRpb1N1bW1pbmdKdW5jdGlvbihBdWRpb0NvbnRleHQmIGNvbnRleHQpCitBdWRp
b1N1bW1pbmdKdW5jdGlvbjo6QXVkaW9TdW1taW5nSnVuY3Rpb24oQXVkaW9Db250ZXh0QmFzZSYg
Y29udGV4dCkKICAgICA6IG1fY29udGV4dChjb250ZXh0KQogICAgICwgbV9yZW5kZXJpbmdTdGF0
ZU5lZWRVcGRhdGluZyhmYWxzZSkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViYXVkaW8vQXVkaW9TdW1taW5nSnVuY3Rpb24uaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViYXVkaW8vQXVkaW9TdW1taW5nSnVuY3Rpb24uaAppbmRleCBjOTRmZjZkNmE1YWVkMTEx
MDIwOGM0NzY0MzgzZDdlNTZmZDg0NjNiLi40Y2JmOGFlOWZiOTUxYjc4MjA3NmIwY2I1MjYxMTZj
MTlkNGFlYzliIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1
ZGlvU3VtbWluZ0p1bmN0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRp
by9BdWRpb1N1bW1pbmdKdW5jdGlvbi5oCkBAIC0zMCwxOCArMzAsMTggQEAKIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCi1jbGFzcyBBdWRpb0NvbnRleHQ7CitjbGFzcyBBdWRpb0NvbnRleHRCYXNl
OwogY2xhc3MgQXVkaW9Ob2RlT3V0cHV0OwogCiAvLyBBbiBBdWRpb1N1bW1pbmdKdW5jdGlvbiBy
ZXByZXNlbnRzIGEgcG9pbnQgd2hlcmUgemVybywgb25lLCBvciBtb3JlIEF1ZGlvTm9kZU91dHB1
dHMgY29ubmVjdC4KIAogY2xhc3MgQXVkaW9TdW1taW5nSnVuY3Rpb24gewogcHVibGljOgotICAg
IGV4cGxpY2l0IEF1ZGlvU3VtbWluZ0p1bmN0aW9uKEF1ZGlvQ29udGV4dCYpOworICAgIGV4cGxp
Y2l0IEF1ZGlvU3VtbWluZ0p1bmN0aW9uKEF1ZGlvQ29udGV4dEJhc2UmKTsKICAgICB2aXJ0dWFs
IH5BdWRpb1N1bW1pbmdKdW5jdGlvbigpOwogCiAgICAgLy8gQ2FuIGJlIGNhbGxlZCBmcm9tIGFu
eSB0aHJlYWQuCi0gICAgQXVkaW9Db250ZXh0JiBjb250ZXh0KCkgeyByZXR1cm4gbV9jb250ZXh0
LmdldCgpOyB9CisgICAgQXVkaW9Db250ZXh0QmFzZSYgY29udGV4dCgpIHsgcmV0dXJuIG1fY29u
dGV4dDsgfQogCiAgICAgLy8gVGhpcyBtdXN0IGJlIGNhbGxlZCB3aGVuZXZlciB3ZSBtb2RpZnkg
bV9vdXRwdXRzLgogICAgIHZvaWQgY2hhbmdlZE91dHB1dHMoKTsKQEAgLTYwLDcgKzYwLDcgQEAg
cHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBkaWRVcGRhdGUoKSA9IDA7CiAKIHByb3RlY3RlZDoK
LSAgICBSZWY8QXVkaW9Db250ZXh0PiBtX2NvbnRleHQ7CisgICAgUmVmPEF1ZGlvQ29udGV4dEJh
c2U+IG1fY29udGV4dDsKIAogICAgIC8vIG1fb3V0cHV0cyBjb250YWlucyB0aGUgQXVkaW9Ob2Rl
T3V0cHV0cyByZXByZXNlbnRpbmcgY3VycmVudCBjb25uZWN0aW9ucyB3aGljaCBhcmUgbm90IGRp
c2FibGVkLgogICAgIC8vIFRoZSByZW5kZXJpbmcgY29kZSBzaG91bGQgbmV2ZXIgdXNlIHRoaXMg
ZGlyZWN0bHksIGJ1dCBpbnN0ZWFkIHVzZXMgbV9yZW5kZXJpbmdPdXRwdXRzLgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9CaXF1YWRGaWx0ZXJOb2RlLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQmlxdWFkRmlsdGVyTm9kZS5jcHAKaW5k
ZXggNGE4MjU1ZTZmMGFmMDc2NzEzOGU0Njg5OGY4YjYzNmFiMmQ3NTZlNS4uZGRlMDc3M2Q0NzNk
MjcyMmE1YjUzZGM4NjkwNmQzOTM3MGNiZmY0MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJhdWRpby9CaXF1YWRGaWx0ZXJOb2RlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmF1ZGlvL0JpcXVhZEZpbHRlck5vZGUuY3BwCkBAIC0zMyw3ICszMyw3IEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogV1RGX01BS0VfSVNPX0FMTE9DQVRFRF9JTVBMKEJpcXVh
ZEZpbHRlck5vZGUpOwogCi1CaXF1YWRGaWx0ZXJOb2RlOjpCaXF1YWRGaWx0ZXJOb2RlKEF1ZGlv
Q29udGV4dCYgY29udGV4dCwgZmxvYXQgc2FtcGxlUmF0ZSkKK0JpcXVhZEZpbHRlck5vZGU6OkJp
cXVhZEZpbHRlck5vZGUoQXVkaW9Db250ZXh0QmFzZSYgY29udGV4dCwgZmxvYXQgc2FtcGxlUmF0
ZSkKICAgICA6IEF1ZGlvQmFzaWNQcm9jZXNzb3JOb2RlKGNvbnRleHQsIHNhbXBsZVJhdGUpCiB7
CiAgICAgc2V0Tm9kZVR5cGUoTm9kZVR5cGVCaXF1YWRGaWx0ZXIpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9CaXF1YWRGaWx0ZXJOb2RlLmggYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0JpcXVhZEZpbHRlck5vZGUuaAppbmRleCA4MDk0ZDkx
ZWFiM2I5MmIxNDhhODYyNDA5MzI2ZjY1ZWQ5YjkwMTNjLi5hYzhkOTQ3YTEwZjdhZTZhMzNmMDNh
MmQwOTg0MGM4ZTZjMWU1NGNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmF1ZGlvL0JpcXVhZEZpbHRlck5vZGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmF1ZGlvL0JpcXVhZEZpbHRlck5vZGUuaApAQCAtMzQsNyArMzQsNyBAQCBjbGFzcyBBdWRpb1Bh
cmFtOwogY2xhc3MgQmlxdWFkRmlsdGVyTm9kZSBmaW5hbCA6IHB1YmxpYyBBdWRpb0Jhc2ljUHJv
Y2Vzc29yTm9kZSB7CiAgICAgV1RGX01BS0VfSVNPX0FMTE9DQVRFRChCaXF1YWRGaWx0ZXJOb2Rl
KTsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPEJpcXVhZEZpbHRlck5vZGU+IGNyZWF0ZShBdWRp
b0NvbnRleHQmIGNvbnRleHQsIGZsb2F0IHNhbXBsZVJhdGUpCisgICAgc3RhdGljIFJlZjxCaXF1
YWRGaWx0ZXJOb2RlPiBjcmVhdGUoQXVkaW9Db250ZXh0QmFzZSYgY29udGV4dCwgZmxvYXQgc2Ft
cGxlUmF0ZSkKICAgICB7CiAgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEJpcXVhZEZpbHRl
ck5vZGUoY29udGV4dCwgc2FtcGxlUmF0ZSkpOwogICAgIH0KQEAgLTUyLDcgKzUyLDcgQEAgcHVi
bGljOgogICAgIHZvaWQgZ2V0RnJlcXVlbmN5UmVzcG9uc2UoY29uc3QgUmVmUHRyPEZsb2F0MzJB
cnJheT4mIGZyZXF1ZW5jeUh6LCBjb25zdCBSZWZQdHI8RmxvYXQzMkFycmF5PiYgbWFnUmVzcG9u
c2UsIGNvbnN0IFJlZlB0cjxGbG9hdDMyQXJyYXk+JiBwaGFzZVJlc3BvbnNlKTsKIAogcHJpdmF0
ZToKLSAgICBCaXF1YWRGaWx0ZXJOb2RlKEF1ZGlvQ29udGV4dCYsIGZsb2F0IHNhbXBsZVJhdGUp
OworICAgIEJpcXVhZEZpbHRlck5vZGUoQXVkaW9Db250ZXh0QmFzZSYsIGZsb2F0IHNhbXBsZVJh
dGUpOwogCiAgICAgQmlxdWFkUHJvY2Vzc29yKiBiaXF1YWRQcm9jZXNzb3IoKSB7IHJldHVybiBz
dGF0aWNfY2FzdDxCaXF1YWRQcm9jZXNzb3IqPihwcm9jZXNzb3IoKSk7IH0KIH07CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0JpcXVhZFByb2Nlc3Nvci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0JpcXVhZFByb2Nlc3Nvci5jcHAKaW5k
ZXggZTg0Yjk4MDM1NjcwZmIxZGNjMzI3MDk2NjNkMmIzOTA1NTJlNjVlYi4uMmY2MDY3YTcyZGNl
YzMzYzNmMGQwZGU5ZDk3ZTRiNjk3Njk2MjZhOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJhdWRpby9CaXF1YWRQcm9jZXNzb3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViYXVkaW8vQmlxdWFkUHJvY2Vzc29yLmNwcApAQCAtMzIsNyArMzIsNyBAQAog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgCi1CaXF1YWRQcm9jZXNzb3I6OkJpcXVhZFByb2Nl
c3NvcihBdWRpb0NvbnRleHQmIGNvbnRleHQsIGZsb2F0IHNhbXBsZVJhdGUsIHNpemVfdCBudW1i
ZXJPZkNoYW5uZWxzLCBib29sIGF1dG9Jbml0aWFsaXplKQorQmlxdWFkUHJvY2Vzc29yOjpCaXF1
YWRQcm9jZXNzb3IoQXVkaW9Db250ZXh0QmFzZSYgY29udGV4dCwgZmxvYXQgc2FtcGxlUmF0ZSwg
c2l6ZV90IG51bWJlck9mQ2hhbm5lbHMsIGJvb2wgYXV0b0luaXRpYWxpemUpCiAgICAgOiBBdWRp
b0RTUEtlcm5lbFByb2Nlc3NvcihzYW1wbGVSYXRlLCBudW1iZXJPZkNoYW5uZWxzKQogICAgICwg
bV90eXBlKEJpcXVhZEZpbHRlclR5cGU6Okxvd3Bhc3MpCiAgICAgLCBtX3BhcmFtZXRlcjEoMCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQmlxdWFkUHJvY2Vz
c29yLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0JpcXVhZFByb2Nlc3Nvci5o
CmluZGV4IGFkYmVlYzQzMDI1YWYwM2FmMTdlMTE1MWFiYmVmZmVlZWU3N2Y2MzIuLmRjMzA2YWI1
MTdiMzI0YmIxY2M1NmEyODhkMGU0OWYxYThlNGU5MDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViYXVkaW8vQmlxdWFkUHJvY2Vzc29yLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJhdWRpby9CaXF1YWRQcm9jZXNzb3IuaApAQCAtNTAsNyArNTAsNyBAQCBl
bnVtIGNsYXNzIEJpcXVhZEZpbHRlclR5cGUgewogY2xhc3MgQmlxdWFkUHJvY2Vzc29yIGZpbmFs
IDogcHVibGljIEF1ZGlvRFNQS2VybmVsUHJvY2Vzc29yIHsKICAgICBXVEZfTUFLRV9GQVNUX0FM
TE9DQVRFRDsKIHB1YmxpYzoKLSAgICBCaXF1YWRQcm9jZXNzb3IoQXVkaW9Db250ZXh0JiwgZmxv
YXQgc2FtcGxlUmF0ZSwgc2l6ZV90IG51bWJlck9mQ2hhbm5lbHMsIGJvb2wgYXV0b0luaXRpYWxp
emUpOworICAgIEJpcXVhZFByb2Nlc3NvcihBdWRpb0NvbnRleHRCYXNlJiwgZmxvYXQgc2FtcGxl
UmF0ZSwgc2l6ZV90IG51bWJlck9mQ2hhbm5lbHMsIGJvb2wgYXV0b0luaXRpYWxpemUpOwogCiAg
ICAgdmlydHVhbCB+QmlxdWFkUHJvY2Vzc29yKCk7CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0NoYW5uZWxNZXJnZXJOb2RlLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQ2hhbm5lbE1lcmdlck5vZGUuY3BwCmluZGV4IGRmNTBm
MjY4NzM2OGFhNWMzMjk1NDE0ODE1MDc3N2EwMjkxNzMyZDguLmRlMjhhZWE3ZDJjNDM0Mjg5NmIx
MDRiYTg5NDFmZGViNzk4YWRjM2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViYXVkaW8vQ2hhbm5lbE1lcmdlck5vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViYXVkaW8vQ2hhbm5lbE1lcmdlck5vZGUuY3BwCkBAIC00Myw3ICs0Myw3IEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAogV1RGX01BS0VfSVNPX0FMTE9DQVRFRF9JTVBMKENoYW5uZWxNZXJn
ZXJOb2RlKTsKIAotUmVmUHRyPENoYW5uZWxNZXJnZXJOb2RlPiBDaGFubmVsTWVyZ2VyTm9kZTo6
Y3JlYXRlKEF1ZGlvQ29udGV4dCYgY29udGV4dCwgZmxvYXQgc2FtcGxlUmF0ZSwgdW5zaWduZWQg
bnVtYmVyT2ZJbnB1dHMpCitSZWZQdHI8Q2hhbm5lbE1lcmdlck5vZGU+IENoYW5uZWxNZXJnZXJO
b2RlOjpjcmVhdGUoQXVkaW9Db250ZXh0QmFzZSYgY29udGV4dCwgZmxvYXQgc2FtcGxlUmF0ZSwg
dW5zaWduZWQgbnVtYmVyT2ZJbnB1dHMpCiB7CiAgICAgaWYgKCFudW1iZXJPZklucHV0cyB8fCBu
dW1iZXJPZklucHV0cyA+IEF1ZGlvQ29udGV4dDo6bWF4TnVtYmVyT2ZDaGFubmVscygpKQogICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTUxLDcgKzUxLDcgQEAgUmVmUHRyPENoYW5uZWxNZXJn
ZXJOb2RlPiBDaGFubmVsTWVyZ2VyTm9kZTo6Y3JlYXRlKEF1ZGlvQ29udGV4dCYgY29udGV4dCwg
ZmxvYXQKICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBDaGFubmVsTWVyZ2VyTm9kZShjb250ZXh0
LCBzYW1wbGVSYXRlLCBudW1iZXJPZklucHV0cykpOyAgICAgIAogfQogCi1DaGFubmVsTWVyZ2Vy
Tm9kZTo6Q2hhbm5lbE1lcmdlck5vZGUoQXVkaW9Db250ZXh0JiBjb250ZXh0LCBmbG9hdCBzYW1w
bGVSYXRlLCB1bnNpZ25lZCBudW1iZXJPZklucHV0cykKK0NoYW5uZWxNZXJnZXJOb2RlOjpDaGFu
bmVsTWVyZ2VyTm9kZShBdWRpb0NvbnRleHRCYXNlJiBjb250ZXh0LCBmbG9hdCBzYW1wbGVSYXRl
LCB1bnNpZ25lZCBudW1iZXJPZklucHV0cykKICAgICA6IEF1ZGlvTm9kZShjb250ZXh0LCBzYW1w
bGVSYXRlKQogICAgICwgbV9kZXNpcmVkTnVtYmVyT2ZPdXRwdXRDaGFubmVscyhEZWZhdWx0TnVt
YmVyT2ZPdXRwdXRDaGFubmVscykKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViYXVkaW8vQ2hhbm5lbE1lcmdlck5vZGUuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViYXVkaW8vQ2hhbm5lbE1lcmdlck5vZGUuaAppbmRleCA2NjYzNmVlZDZmN2VlODU1MWU5MmNj
ODc3YTA0YzVjYzNlNWZkZjFkLi42Mjk3NmUwNTA3MzQxZmY5MjY2MGE2YWYwZGI1OGFlYmE1NTc2
ODFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0NoYW5uZWxN
ZXJnZXJOb2RlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9DaGFubmVs
TWVyZ2VyTm9kZS5oCkBAIC0zNyw3ICszNyw3IEBAIGNsYXNzIEF1ZGlvQ29udGV4dDsKIGNsYXNz
IENoYW5uZWxNZXJnZXJOb2RlIGZpbmFsIDogcHVibGljIEF1ZGlvTm9kZSB7CiAgICAgV1RGX01B
S0VfSVNPX0FMTE9DQVRFRChDaGFubmVsTWVyZ2VyTm9kZSk7CiBwdWJsaWM6Ci0gICAgc3RhdGlj
IFJlZlB0cjxDaGFubmVsTWVyZ2VyTm9kZT4gY3JlYXRlKEF1ZGlvQ29udGV4dCYsIGZsb2F0IHNh
bXBsZVJhdGUsIHVuc2lnbmVkIG51bWJlck9mSW5wdXRzKTsKKyAgICBzdGF0aWMgUmVmUHRyPENo
YW5uZWxNZXJnZXJOb2RlPiBjcmVhdGUoQXVkaW9Db250ZXh0QmFzZSYsIGZsb2F0IHNhbXBsZVJh
dGUsIHVuc2lnbmVkIG51bWJlck9mSW5wdXRzKTsKIAogICAgIC8vIEF1ZGlvTm9kZQogICAgIHZv
aWQgcHJvY2VzcyhzaXplX3QgZnJhbWVzVG9Qcm9jZXNzKSBvdmVycmlkZTsKQEAgLTUyLDcgKzUy
LDcgQEAgcHJpdmF0ZToKICAgICBkb3VibGUgdGFpbFRpbWUoKSBjb25zdCBvdmVycmlkZSB7IHJl
dHVybiAwOyB9CiAgICAgZG91YmxlIGxhdGVuY3lUaW1lKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1
cm4gMDsgfQogCi0gICAgQ2hhbm5lbE1lcmdlck5vZGUoQXVkaW9Db250ZXh0JiwgZmxvYXQgc2Ft
cGxlUmF0ZSwgdW5zaWduZWQgbnVtYmVyT2ZJbnB1dHMpOworICAgIENoYW5uZWxNZXJnZXJOb2Rl
KEF1ZGlvQ29udGV4dEJhc2UmLCBmbG9hdCBzYW1wbGVSYXRlLCB1bnNpZ25lZCBudW1iZXJPZklu
cHV0cyk7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0NoYW5uZWxTcGxpdHRlck5vZGUuY3BwIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9DaGFubmVsU3BsaXR0ZXJOb2RlLmNwcAppbmRleCA4
MmY2OWEwNGY5OTkyNjFkNThjMTUyYmZjNjAyYTM2NjA5NjA5MWI5Li5mNTU1M2QwYzgzNWEzOTJk
M2NlZWRlOTJlZTVmOGI4YzkyOGY5ZGIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmF1ZGlvL0NoYW5uZWxTcGxpdHRlck5vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViYXVkaW8vQ2hhbm5lbFNwbGl0dGVyTm9kZS5jcHAKQEAgLTM3LDcgKzM3LDcg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBXVEZfTUFLRV9JU09fQUxMT0NBVEVEX0lNUEwoQ2hh
bm5lbFNwbGl0dGVyTm9kZSk7CiAgICAgCi1SZWZQdHI8Q2hhbm5lbFNwbGl0dGVyTm9kZT4gQ2hh
bm5lbFNwbGl0dGVyTm9kZTo6Y3JlYXRlKEF1ZGlvQ29udGV4dCYgY29udGV4dCwgZmxvYXQgc2Ft
cGxlUmF0ZSwgdW5zaWduZWQgbnVtYmVyT2ZPdXRwdXRzKQorUmVmUHRyPENoYW5uZWxTcGxpdHRl
ck5vZGU+IENoYW5uZWxTcGxpdHRlck5vZGU6OmNyZWF0ZShBdWRpb0NvbnRleHRCYXNlJiBjb250
ZXh0LCBmbG9hdCBzYW1wbGVSYXRlLCB1bnNpZ25lZCBudW1iZXJPZk91dHB1dHMpCiB7CiAgICAg
aWYgKCFudW1iZXJPZk91dHB1dHMgfHwgbnVtYmVyT2ZPdXRwdXRzID4gQXVkaW9Db250ZXh0Ojpt
YXhOdW1iZXJPZkNoYW5uZWxzKCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwpAQCAtNDUsNyAr
NDUsNyBAQCBSZWZQdHI8Q2hhbm5lbFNwbGl0dGVyTm9kZT4gQ2hhbm5lbFNwbGl0dGVyTm9kZTo6
Y3JlYXRlKEF1ZGlvQ29udGV4dCYgY29udGV4dCwgZgogICAgIHJldHVybiBhZG9wdFJlZigqbmV3
IENoYW5uZWxTcGxpdHRlck5vZGUoY29udGV4dCwgc2FtcGxlUmF0ZSwgbnVtYmVyT2ZPdXRwdXRz
KSk7ICAgICAgCiB9CiAKLUNoYW5uZWxTcGxpdHRlck5vZGU6OkNoYW5uZWxTcGxpdHRlck5vZGUo
QXVkaW9Db250ZXh0JiBjb250ZXh0LCBmbG9hdCBzYW1wbGVSYXRlLCB1bnNpZ25lZCBudW1iZXJP
Zk91dHB1dHMpCitDaGFubmVsU3BsaXR0ZXJOb2RlOjpDaGFubmVsU3BsaXR0ZXJOb2RlKEF1ZGlv
Q29udGV4dEJhc2UmIGNvbnRleHQsIGZsb2F0IHNhbXBsZVJhdGUsIHVuc2lnbmVkIG51bWJlck9m
T3V0cHV0cykKICAgICA6IEF1ZGlvTm9kZShjb250ZXh0LCBzYW1wbGVSYXRlKQogewogICAgIHNl
dE5vZGVUeXBlKE5vZGVUeXBlQ2hhbm5lbFNwbGl0dGVyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQ2hhbm5lbFNwbGl0dGVyTm9kZS5oIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJhdWRpby9DaGFubmVsU3BsaXR0ZXJOb2RlLmgKaW5kZXggOGQ5ODMy
ODEyMzdkZDFkMGZjZjE0NzBhMzhiMDAzZmU0MjY2YjUxZS4uMTNkOGQ5ODBkYWE3NzMzMDRmMTY5
MDVlOTU0OGE0MjBhZTNlZTQ1YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJhdWRpby9DaGFubmVsU3BsaXR0ZXJOb2RlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJhdWRpby9DaGFubmVsU3BsaXR0ZXJOb2RlLmgKQEAgLTMzLDcgKzMzLDcgQEAgY2xhc3Mg
QXVkaW9Db250ZXh0OwogY2xhc3MgQ2hhbm5lbFNwbGl0dGVyTm9kZSBmaW5hbCA6IHB1YmxpYyBB
dWRpb05vZGUgewogICAgIFdURl9NQUtFX0lTT19BTExPQ0FURUQoQ2hhbm5lbFNwbGl0dGVyTm9k
ZSk7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZlB0cjxDaGFubmVsU3BsaXR0ZXJOb2RlPiBjcmVh
dGUoQXVkaW9Db250ZXh0JiwgZmxvYXQgc2FtcGxlUmF0ZSwgdW5zaWduZWQgbnVtYmVyT2ZPdXRw
dXRzKTsKKyAgICBzdGF0aWMgUmVmUHRyPENoYW5uZWxTcGxpdHRlck5vZGU+IGNyZWF0ZShBdWRp
b0NvbnRleHRCYXNlJiwgZmxvYXQgc2FtcGxlUmF0ZSwgdW5zaWduZWQgbnVtYmVyT2ZPdXRwdXRz
KTsKIAogICAgIC8vIEF1ZGlvTm9kZQogICAgIHZvaWQgcHJvY2VzcyhzaXplX3QgZnJhbWVzVG9Q
cm9jZXNzKSBvdmVycmlkZTsKQEAgLTQzLDcgKzQzLDcgQEAgcHJpdmF0ZToKICAgICBkb3VibGUg
dGFpbFRpbWUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiAwOyB9CiAgICAgZG91YmxlIGxhdGVu
Y3lUaW1lKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gMDsgfQogCi0gICAgQ2hhbm5lbFNwbGl0
dGVyTm9kZShBdWRpb0NvbnRleHQmLCBmbG9hdCBzYW1wbGVSYXRlLCB1bnNpZ25lZCBudW1iZXJP
Zk91dHB1dHMpOworICAgIENoYW5uZWxTcGxpdHRlck5vZGUoQXVkaW9Db250ZXh0QmFzZSYsIGZs
b2F0IHNhbXBsZVJhdGUsIHVuc2lnbmVkIG51bWJlck9mT3V0cHV0cyk7CiB9OwogCiB9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1
ZGlvL0NvbnZvbHZlck5vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9D
b252b2x2ZXJOb2RlLmNwcAppbmRleCBjYzk3MmYxMGRiZDdhYmZmNzNmNzkzY2ZhY2M3YzQwMDhh
NzIzNDQ3Li5lMWY1ZWI4MTU2MGVjMmU5MmI4MzU4MzZjODRiMTgxOTQzM2FmYTRmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0NvbnZvbHZlck5vZGUuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQ29udm9sdmVyTm9kZS5jcHAKQEAg
LTQ3LDcgKzQ3LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBXVEZfTUFLRV9JU09fQUxMT0NB
VEVEX0lNUEwoQ29udm9sdmVyTm9kZSk7CiAKLUNvbnZvbHZlck5vZGU6OkNvbnZvbHZlck5vZGUo
QXVkaW9Db250ZXh0JiBjb250ZXh0LCBmbG9hdCBzYW1wbGVSYXRlKQorQ29udm9sdmVyTm9kZTo6
Q29udm9sdmVyTm9kZShBdWRpb0NvbnRleHRCYXNlJiBjb250ZXh0LCBmbG9hdCBzYW1wbGVSYXRl
KQogICAgIDogQXVkaW9Ob2RlKGNvbnRleHQsIHNhbXBsZVJhdGUpCiB7CiAgICAgc2V0Tm9kZVR5
cGUoTm9kZVR5cGVDb252b2x2ZXIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJhdWRpby9Db252b2x2ZXJOb2RlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1
ZGlvL0NvbnZvbHZlck5vZGUuaAppbmRleCA2NGJmZWJlZDJkODdlNzRjMzNhZGZhYzkzNDlkMWI5
MjZlMGY2NmMzLi4zMWNlYzFlY2M3ZjBlMDA0NWVmYTc0ZmJlZjM2MDY4ZGRiYjFmZGZjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0NvbnZvbHZlck5vZGUuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0NvbnZvbHZlck5vZGUuaApAQCAt
MzUsNyArMzUsNyBAQCBjbGFzcyBSZXZlcmI7CiBjbGFzcyBDb252b2x2ZXJOb2RlIGZpbmFsIDog
cHVibGljIEF1ZGlvTm9kZSB7CiAgICAgV1RGX01BS0VfSVNPX0FMTE9DQVRFRChDb252b2x2ZXJO
b2RlKTsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPENvbnZvbHZlck5vZGU+IGNyZWF0ZShBdWRp
b0NvbnRleHQmIGNvbnRleHQsIGZsb2F0IHNhbXBsZVJhdGUpCisgICAgc3RhdGljIFJlZjxDb252
b2x2ZXJOb2RlPiBjcmVhdGUoQXVkaW9Db250ZXh0QmFzZSYgY29udGV4dCwgZmxvYXQgc2FtcGxl
UmF0ZSkKICAgICB7CiAgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IENvbnZvbHZlck5vZGUo
Y29udGV4dCwgc2FtcGxlUmF0ZSkpOwogICAgIH0KQEAgLTQ5LDcgKzQ5LDcgQEAgcHVibGljOgog
ICAgIHZvaWQgc2V0Tm9ybWFsaXplKGJvb2wgbm9ybWFsaXplKSB7IG1fbm9ybWFsaXplID0gbm9y
bWFsaXplOyB9CiAKIHByaXZhdGU6Ci0gICAgQ29udm9sdmVyTm9kZShBdWRpb0NvbnRleHQmLCBm
bG9hdCBzYW1wbGVSYXRlKTsKKyAgICBDb252b2x2ZXJOb2RlKEF1ZGlvQ29udGV4dEJhc2UmLCBm
bG9hdCBzYW1wbGVSYXRlKTsKIAogICAgIGRvdWJsZSB0YWlsVGltZSgpIGNvbnN0IGZpbmFsOwog
ICAgIGRvdWJsZSBsYXRlbmN5VGltZSgpIGNvbnN0IGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9EZWZhdWx0QXVkaW9EZXN0aW5hdGlvbk5vZGUuY3Bw
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9EZWZhdWx0QXVkaW9EZXN0aW5hdGlv
bk5vZGUuY3BwCmluZGV4IDE3NTlhZTRhNWE2MzViYzA1OGUzMGMzNjVjMTM0NGZiYjM5NzllMTUu
LjA3ZWI5YTQxYjVjYzhlODM5MDlhZTRiNmU2MzRlM2NhOWJmNTM3ZWEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vRGVmYXVsdEF1ZGlvRGVzdGluYXRpb25Ob2Rl
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0RlZmF1bHRBdWRpb0Rl
c3RpbmF0aW9uTm9kZS5jcHAKQEAgLTQzLDcgKzQzLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
CiBXVEZfTUFLRV9JU09fQUxMT0NBVEVEX0lNUEwoRGVmYXVsdEF1ZGlvRGVzdGluYXRpb25Ob2Rl
KTsKICAgICAKLURlZmF1bHRBdWRpb0Rlc3RpbmF0aW9uTm9kZTo6RGVmYXVsdEF1ZGlvRGVzdGlu
YXRpb25Ob2RlKEF1ZGlvQ29udGV4dCYgY29udGV4dCkKK0RlZmF1bHRBdWRpb0Rlc3RpbmF0aW9u
Tm9kZTo6RGVmYXVsdEF1ZGlvRGVzdGluYXRpb25Ob2RlKEF1ZGlvQ29udGV4dEJhc2UmIGNvbnRl
eHQpCiAgICAgOiBBdWRpb0Rlc3RpbmF0aW9uTm9kZShjb250ZXh0LCBBdWRpb0Rlc3RpbmF0aW9u
OjpoYXJkd2FyZVNhbXBsZVJhdGUoKSkKIHsKICAgICAvLyBOb2RlLXNwZWNpZmljIGRlZmF1bHQg
bWl4aW5nIHJ1bGVzLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRp
by9EZWZhdWx0QXVkaW9EZXN0aW5hdGlvbk5vZGUuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViYXVkaW8vRGVmYXVsdEF1ZGlvRGVzdGluYXRpb25Ob2RlLmgKaW5kZXggNmZkOTVjMGYzMDEx
NGNkZTMyYzI3ZmExOGE2MWFlMmNkZTUxMjhmYy4uOTZjODM3Yzk5MzRlYjAzYmYwNGI0ZGUzOWJj
NDJlZmZkZmRlZThlMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRp
by9EZWZhdWx0QXVkaW9EZXN0aW5hdGlvbk5vZGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmF1ZGlvL0RlZmF1bHRBdWRpb0Rlc3RpbmF0aW9uTm9kZS5oCkBAIC0zMyw3ICszMyw3
IEBAIGNsYXNzIEF1ZGlvRGVzdGluYXRpb247CiBjbGFzcyBEZWZhdWx0QXVkaW9EZXN0aW5hdGlv
bk5vZGUgZmluYWwgOiBwdWJsaWMgQXVkaW9EZXN0aW5hdGlvbk5vZGUgewogICAgIFdURl9NQUtF
X0lTT19BTExPQ0FURUQoRGVmYXVsdEF1ZGlvRGVzdGluYXRpb25Ob2RlKTsKIHB1YmxpYzoKLSAg
ICBzdGF0aWMgUmVmPERlZmF1bHRBdWRpb0Rlc3RpbmF0aW9uTm9kZT4gY3JlYXRlKEF1ZGlvQ29u
dGV4dCYgY29udGV4dCkKKyAgICBzdGF0aWMgUmVmPERlZmF1bHRBdWRpb0Rlc3RpbmF0aW9uTm9k
ZT4gY3JlYXRlKEF1ZGlvQ29udGV4dEJhc2UmIGNvbnRleHQpCiAgICAgewogICAgICAgICByZXR1
cm4gYWRvcHRSZWYoKm5ldyBEZWZhdWx0QXVkaW9EZXN0aW5hdGlvbk5vZGUoY29udGV4dCkpOyAg
ICAgCiAgICAgfQpAQCAtNDEsNyArNDEsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB+RGVmYXVs
dEF1ZGlvRGVzdGluYXRpb25Ob2RlKCk7CiAgICAgCiBwcml2YXRlOgotICAgIGV4cGxpY2l0IERl
ZmF1bHRBdWRpb0Rlc3RpbmF0aW9uTm9kZShBdWRpb0NvbnRleHQmKTsKKyAgICBleHBsaWNpdCBE
ZWZhdWx0QXVkaW9EZXN0aW5hdGlvbk5vZGUoQXVkaW9Db250ZXh0QmFzZSYpOwogICAgIHZvaWQg
Y3JlYXRlRGVzdGluYXRpb24oKTsKIAogICAgIHZvaWQgaW5pdGlhbGl6ZSgpIGZpbmFsOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9EZWxheU5vZGUuY3BwIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9EZWxheU5vZGUuY3BwCmluZGV4IDgxYmQ3
ZDE5YjI3ZTc0MWI1MGY2Zjg0ZTUxZjdjZTI1NTc4MDJiOTMuLjQwNTI3YzgxZjlmNWJjNTZiY2Y0
ZTcwYzUxNmNiYzE5ZTViZTFlOGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViYXVkaW8vRGVsYXlOb2RlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1
ZGlvL0RlbGF5Tm9kZS5jcHAKQEAgLTM3LDE0ICszNywxNCBAQCBXVEZfTUFLRV9JU09fQUxMT0NB
VEVEX0lNUEwoRGVsYXlOb2RlKTsKIAogY29uc3QgZG91YmxlIG1heGltdW1BbGxvd2VkRGVsYXlU
aW1lID0gMTgwOwogCi1pbmxpbmUgRGVsYXlOb2RlOjpEZWxheU5vZGUoQXVkaW9Db250ZXh0JiBj
b250ZXh0LCBmbG9hdCBzYW1wbGVSYXRlLCBkb3VibGUgbWF4RGVsYXlUaW1lKQoraW5saW5lIERl
bGF5Tm9kZTo6RGVsYXlOb2RlKEF1ZGlvQ29udGV4dEJhc2UmIGNvbnRleHQsIGZsb2F0IHNhbXBs
ZVJhdGUsIGRvdWJsZSBtYXhEZWxheVRpbWUpCiAgICAgOiBBdWRpb0Jhc2ljUHJvY2Vzc29yTm9k
ZShjb250ZXh0LCBzYW1wbGVSYXRlKQogewogICAgIHNldE5vZGVUeXBlKE5vZGVUeXBlRGVsYXkp
OwogICAgIG1fcHJvY2Vzc29yID0gbWFrZVVuaXF1ZTxEZWxheVByb2Nlc3Nvcj4oY29udGV4dCwg
c2FtcGxlUmF0ZSwgMSwgbWF4RGVsYXlUaW1lKTsKIH0KIAotRXhjZXB0aW9uT3I8UmVmPERlbGF5
Tm9kZT4+IERlbGF5Tm9kZTo6Y3JlYXRlKEF1ZGlvQ29udGV4dCYgY29udGV4dCwgZmxvYXQgc2Ft
cGxlUmF0ZSwgZG91YmxlIG1heERlbGF5VGltZSkKK0V4Y2VwdGlvbk9yPFJlZjxEZWxheU5vZGU+
PiBEZWxheU5vZGU6OmNyZWF0ZShBdWRpb0NvbnRleHRCYXNlJiBjb250ZXh0LCBmbG9hdCBzYW1w
bGVSYXRlLCBkb3VibGUgbWF4RGVsYXlUaW1lKQogewogICAgIGlmIChtYXhEZWxheVRpbWUgPD0g
MCB8fCBtYXhEZWxheVRpbWUgPj0gbWF4aW11bUFsbG93ZWREZWxheVRpbWUpCiAgICAgICAgIHJl
dHVybiBFeGNlcHRpb24geyBOb3RTdXBwb3J0ZWRFcnJvciB9OwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9EZWxheU5vZGUuaCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViYXVkaW8vRGVsYXlOb2RlLmgKaW5kZXggYzllY2FkOWY5ZmRjNTFjNDdjNTJjM2Ni
ODY4NzBmZDg0MTFiOWZmYS4uYjZhZmRkMGY5MzA3MThiNDIzMjMxZjJmNmNmOTAwNTk5MTk5NzAx
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9EZWxheU5vZGUu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0RlbGF5Tm9kZS5oCkBAIC0z
MSwxMiArMzEsMTIgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgRGVsYXlOb2RlIGZpbmFs
IDogcHVibGljIEF1ZGlvQmFzaWNQcm9jZXNzb3JOb2RlIHsKICAgICBXVEZfTUFLRV9JU09fQUxM
T0NBVEVEKERlbGF5Tm9kZSk7CiBwdWJsaWM6Ci0gICAgc3RhdGljIEV4Y2VwdGlvbk9yPFJlZjxE
ZWxheU5vZGU+PiBjcmVhdGUoQXVkaW9Db250ZXh0JiwgZmxvYXQgc2FtcGxlUmF0ZSwgZG91Ymxl
IG1heERlbGF5VGltZSk7CisgICAgc3RhdGljIEV4Y2VwdGlvbk9yPFJlZjxEZWxheU5vZGU+PiBj
cmVhdGUoQXVkaW9Db250ZXh0QmFzZSYsIGZsb2F0IHNhbXBsZVJhdGUsIGRvdWJsZSBtYXhEZWxh
eVRpbWUpOwogCiAgICAgQXVkaW9QYXJhbSogZGVsYXlUaW1lKCk7CiAKIHByaXZhdGU6Ci0gICAg
RGVsYXlOb2RlKEF1ZGlvQ29udGV4dCYsIGZsb2F0IHNhbXBsZVJhdGUsIGRvdWJsZSBtYXhEZWxh
eVRpbWUpOworICAgIERlbGF5Tm9kZShBdWRpb0NvbnRleHRCYXNlJiwgZmxvYXQgc2FtcGxlUmF0
ZSwgZG91YmxlIG1heERlbGF5VGltZSk7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0RlbGF5UHJvY2Vzc29y
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vRGVsYXlQcm9jZXNzb3IuY3Bw
CmluZGV4IDEwMzY2ZWY2ZWFmYjZjNDRkYjE5MTI3MWE5OTVkOWU2ZDJhY2JhNjkuLmNiYmZkOWZh
MmZhYTRjZjdlYWUwMWIzMjZjNDZkY2Y1ODdiZmUzYzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViYXVkaW8vRGVsYXlQcm9jZXNzb3IuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViYXVkaW8vRGVsYXlQcm9jZXNzb3IuY3BwCkBAIC0zMiw3ICszMiw3IEBA
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotRGVsYXlQcm9jZXNzb3I6OkRlbGF5UHJvY2Vzc29y
KEF1ZGlvQ29udGV4dCYgY29udGV4dCwgZmxvYXQgc2FtcGxlUmF0ZSwgdW5zaWduZWQgbnVtYmVy
T2ZDaGFubmVscywgZG91YmxlIG1heERlbGF5VGltZSkKK0RlbGF5UHJvY2Vzc29yOjpEZWxheVBy
b2Nlc3NvcihBdWRpb0NvbnRleHRCYXNlJiBjb250ZXh0LCBmbG9hdCBzYW1wbGVSYXRlLCB1bnNp
Z25lZCBudW1iZXJPZkNoYW5uZWxzLCBkb3VibGUgbWF4RGVsYXlUaW1lKQogICAgIDogQXVkaW9E
U1BLZXJuZWxQcm9jZXNzb3Ioc2FtcGxlUmF0ZSwgbnVtYmVyT2ZDaGFubmVscykKICAgICAsIG1f
bWF4RGVsYXlUaW1lKG1heERlbGF5VGltZSkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViYXVkaW8vRGVsYXlQcm9jZXNzb3IuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViYXVkaW8vRGVsYXlQcm9jZXNzb3IuaAppbmRleCA4NWQ5Y2M2ZDdmZGUxNmNlZmQ3OGQ0
Nzk0MjEwZGRkMDgyMzRkZjNmLi5jYmFjNzllY2YwZmUzMzljZjEyZjkzZDRkYjI1YWYwNTE1MmZj
ZWZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0RlbGF5UHJv
Y2Vzc29yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9EZWxheVByb2Nl
c3Nvci5oCkBAIC0zNiw3ICszNiw3IEBAIGNsYXNzIEF1ZGlvRFNQS2VybmVsOwogY2xhc3MgRGVs
YXlQcm9jZXNzb3IgZmluYWwgOiBwdWJsaWMgQXVkaW9EU1BLZXJuZWxQcm9jZXNzb3IgewogICAg
IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgotICAgIERlbGF5UHJvY2Vzc29yKEF1
ZGlvQ29udGV4dCYsIGZsb2F0IHNhbXBsZVJhdGUsIHVuc2lnbmVkIG51bWJlck9mQ2hhbm5lbHMs
IGRvdWJsZSBtYXhEZWxheVRpbWUpOworICAgIERlbGF5UHJvY2Vzc29yKEF1ZGlvQ29udGV4dEJh
c2UmLCBmbG9hdCBzYW1wbGVSYXRlLCB1bnNpZ25lZCBudW1iZXJPZkNoYW5uZWxzLCBkb3VibGUg
bWF4RGVsYXlUaW1lKTsKICAgICB2aXJ0dWFsIH5EZWxheVByb2Nlc3NvcigpOwogICAgIAogICAg
IHN0ZDo6dW5pcXVlX3B0cjxBdWRpb0RTUEtlcm5lbD4gY3JlYXRlS2VybmVsKCkgb3ZlcnJpZGU7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0Rpc3RhbmNlTW9k
ZWxUeXBlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0Rpc3RhbmNlTW9kZWxU
eXBlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uZGZlMTMxODJjYzBhNDRiZGQwNDgwYjcyYWZmZDdiNTU3MDg1MjNk
YgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vRGlz
dGFuY2VNb2RlbFR5cGUuaApAQCAtMCwwICsxLDI3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDIwLCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
ICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBB
UkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTgorICogQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTCisgKiBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9u
Y2UKKworI2luY2x1ZGUgIkRpc3RhbmNlLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmF1ZGlvL0Rpc3RhbmNlTW9kZWxUeXBlLmlkbCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViYXVkaW8vRGlzdGFuY2VNb2RlbFR5cGUuaWRsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmY4ZmZjZmVk
MjJjOGY5NjBkMDRmM2U4NWJlM2RhNThiNzIwNzM3ZmUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0Rpc3RhbmNlTW9kZWxUeXBlLmlkbApAQCAtMCww
ICsxLDMxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwLCBHb29nbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQgQU5ZCisg
KiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04KKyAqIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUworICogU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworWworICAgIENvbmRpdGlvbmFsPVdFQl9BVURJTywKK10g
ZW51bSBEaXN0YW5jZU1vZGVsVHlwZSB7CisgICAgImxpbmVhciIsCisgICAgImludmVyc2UiLAor
ICAgICJleHBvbmVudGlhbCIKK307CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmF1ZGlvL0R5bmFtaWNzQ29tcHJlc3Nvck5vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJhdWRpby9EeW5hbWljc0NvbXByZXNzb3JOb2RlLmNwcAppbmRleCAxNDA5NmQ4ZjBj
NTk2YTUyOTcxNjY2ZWY4MjY3YTAyM2ZkYjQ0YjI5Li5jMzNkMWRlNzJkYzkxZmU4ZDc0ZTc1NDdh
MjM1OTljYTAxZmM0ODViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1
ZGlvL0R5bmFtaWNzQ29tcHJlc3Nvck5vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViYXVkaW8vRHluYW1pY3NDb21wcmVzc29yTm9kZS5jcHAKQEAgLTQxLDcgKzQxLDcgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogCiBXVEZfTUFLRV9JU09fQUxMT0NBVEVEX0lNUEwoRHluYW1p
Y3NDb21wcmVzc29yTm9kZSk7CiAKLUR5bmFtaWNzQ29tcHJlc3Nvck5vZGU6OkR5bmFtaWNzQ29t
cHJlc3Nvck5vZGUoQXVkaW9Db250ZXh0JiBjb250ZXh0LCBmbG9hdCBzYW1wbGVSYXRlKQorRHlu
YW1pY3NDb21wcmVzc29yTm9kZTo6RHluYW1pY3NDb21wcmVzc29yTm9kZShBdWRpb0NvbnRleHRC
YXNlJiBjb250ZXh0LCBmbG9hdCBzYW1wbGVSYXRlKQogICAgIDogQXVkaW9Ob2RlKGNvbnRleHQs
IHNhbXBsZVJhdGUpCiB7CiAgICAgc2V0Tm9kZVR5cGUoTm9kZVR5cGVEeW5hbWljc0NvbXByZXNz
b3IpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9EeW5hbWlj
c0NvbXByZXNzb3JOb2RlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0R5bmFt
aWNzQ29tcHJlc3Nvck5vZGUuaAppbmRleCA0NGNiZmJhYTA1OTcxN2Y2YzM1MDMyMmEyODA0ZTVk
ODYzYTY2ODU3Li5iNzA1M2IyMjE3M2MwMmNhMGQyNmVjZTYxYTE4Yzc3ZWUwNzUyZGZlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0R5bmFtaWNzQ29tcHJlc3Nv
ck5vZGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0R5bmFtaWNzQ29t
cHJlc3Nvck5vZGUuaApAQCAtMzUsNyArMzUsNyBAQCBjbGFzcyBEeW5hbWljc0NvbXByZXNzb3I7
CiBjbGFzcyBEeW5hbWljc0NvbXByZXNzb3JOb2RlIGZpbmFsIDogcHVibGljIEF1ZGlvTm9kZSB7
CiAgICAgV1RGX01BS0VfSVNPX0FMTE9DQVRFRChEeW5hbWljc0NvbXByZXNzb3JOb2RlKTsKIHB1
YmxpYzoKLSAgICBzdGF0aWMgUmVmPER5bmFtaWNzQ29tcHJlc3Nvck5vZGU+IGNyZWF0ZShBdWRp
b0NvbnRleHQmIGNvbnRleHQsIGZsb2F0IHNhbXBsZVJhdGUpCisgICAgc3RhdGljIFJlZjxEeW5h
bWljc0NvbXByZXNzb3JOb2RlPiBjcmVhdGUoQXVkaW9Db250ZXh0QmFzZSYgY29udGV4dCwgZmxv
YXQgc2FtcGxlUmF0ZSkKICAgICB7CiAgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IER5bmFt
aWNzQ29tcHJlc3Nvck5vZGUoY29udGV4dCwgc2FtcGxlUmF0ZSkpOwogICAgIH0KQEAgLTYyLDcg
KzYyLDcgQEAgcHJpdmF0ZToKICAgICBkb3VibGUgdGFpbFRpbWUoKSBjb25zdCBvdmVycmlkZTsK
ICAgICBkb3VibGUgbGF0ZW5jeVRpbWUoKSBjb25zdCBvdmVycmlkZTsKIAotICAgIER5bmFtaWNz
Q29tcHJlc3Nvck5vZGUoQXVkaW9Db250ZXh0JiwgZmxvYXQgc2FtcGxlUmF0ZSk7CisgICAgRHlu
YW1pY3NDb21wcmVzc29yTm9kZShBdWRpb0NvbnRleHRCYXNlJiwgZmxvYXQgc2FtcGxlUmF0ZSk7
CiAKICAgICBzdGQ6OnVuaXF1ZV9wdHI8RHluYW1pY3NDb21wcmVzc29yPiBtX2R5bmFtaWNzQ29t
cHJlc3NvcjsKICAgICBSZWZQdHI8QXVkaW9QYXJhbT4gbV90aHJlc2hvbGQ7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0dhaW5Ob2RlLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vR2Fpbk5vZGUuY3BwCmluZGV4IDI1N2RmMmVjZTIzMzhj
YmNiYWI5ZWQwNTEyMzNjNjRiMWM1N2YyNWQuLjk4NGQxMTk0YmRkNTUyZjM4NGIwZDZkOWJjZWJm
N2RhNDJmZDg2OWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8v
R2Fpbk5vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vR2Fpbk5v
ZGUuY3BwCkBAIC0zNyw3ICszNyw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogV1RGX01BS0Vf
SVNPX0FMTE9DQVRFRF9JTVBMKEdhaW5Ob2RlKTsKIAotR2Fpbk5vZGU6OkdhaW5Ob2RlKEF1ZGlv
Q29udGV4dCYgY29udGV4dCwgZmxvYXQgc2FtcGxlUmF0ZSkKK0dhaW5Ob2RlOjpHYWluTm9kZShB
dWRpb0NvbnRleHRCYXNlJiBjb250ZXh0LCBmbG9hdCBzYW1wbGVSYXRlKQogICAgIDogQXVkaW9O
b2RlKGNvbnRleHQsIHNhbXBsZVJhdGUpCiAgICAgLCBtX2xhc3RHYWluKDEuMCkKICAgICAsIG1f
c2FtcGxlQWNjdXJhdGVHYWluVmFsdWVzKEF1ZGlvTm9kZTo6UHJvY2Vzc2luZ1NpemVJbkZyYW1l
cykgLy8gRklYTUU6IGNhbiBwcm9iYWJseSBzaGFyZSB0ZW1wIGJ1ZmZlciBpbiBjb250ZXh0CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0dhaW5Ob2RlLmggYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0dhaW5Ob2RlLmgKaW5kZXggZmE4NWIwYjlm
ZjU0N2YzMjlmNTY2NWIyYTA1NTc3NGJlMGY3Y2FiOC4uZGNmODU1YTkxYzk1N2E5MDAwYmFmOGI5
OTQzNmFlNzczNzlmYmI1MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJh
dWRpby9HYWluTm9kZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vR2Fp
bk5vZGUuaApAQCAtMzgsNyArMzgsNyBAQCBjbGFzcyBBdWRpb0NvbnRleHQ7CiBjbGFzcyBHYWlu
Tm9kZSBmaW5hbCA6IHB1YmxpYyBBdWRpb05vZGUgewogICAgIFdURl9NQUtFX0lTT19BTExPQ0FU
RUQoR2Fpbk5vZGUpOwogcHVibGljOgotICAgIHN0YXRpYyBSZWY8R2Fpbk5vZGU+IGNyZWF0ZShB
dWRpb0NvbnRleHQmIGNvbnRleHQsIGZsb2F0IHNhbXBsZVJhdGUpCisgICAgc3RhdGljIFJlZjxH
YWluTm9kZT4gY3JlYXRlKEF1ZGlvQ29udGV4dEJhc2UmIGNvbnRleHQsIGZsb2F0IHNhbXBsZVJh
dGUpCiAgICAgewogICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBHYWluTm9kZShjb250ZXh0
LCBzYW1wbGVSYXRlKSk7CiAgICAgfQpAQCAtNTcsNyArNTcsNyBAQCBwcml2YXRlOgogICAgIGRv
dWJsZSB0YWlsVGltZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIDA7IH0KICAgICBkb3VibGUg
bGF0ZW5jeVRpbWUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiAwOyB9CiAKLSAgICBHYWluTm9k
ZShBdWRpb0NvbnRleHQmLCBmbG9hdCBzYW1wbGVSYXRlKTsKKyAgICBHYWluTm9kZShBdWRpb0Nv
bnRleHRCYXNlJiwgZmxvYXQgc2FtcGxlUmF0ZSk7CiAKICAgICBmbG9hdCBtX2xhc3RHYWluOyAv
LyBmb3IgZGUtemlwcGVyaW5nCiAgICAgUmVmUHRyPEF1ZGlvUGFyYW0+IG1fZ2FpbjsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vTWVkaWFFbGVtZW50QXVkaW9T
b3VyY2VOb2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vTWVkaWFFbGVt
ZW50QXVkaW9Tb3VyY2VOb2RlLmNwcAppbmRleCAwZTU5ODFmYTY4NmRiOTIxMmZmYTBmODNlOWJk
Y2QwM2FmOWFhYWMzLi5jNjc1ZDdkZTcxNjgzOTJlODdkZjlmNDNkZmE2NTk5N2I1NGZmOGY0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL01lZGlhRWxlbWVudEF1
ZGlvU291cmNlTm9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9N
ZWRpYUVsZW1lbnRBdWRpb1NvdXJjZU5vZGUuY3BwCkBAIC00MywxMiArNDMsMTIgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogCiBXVEZfTUFLRV9JU09fQUxMT0NBVEVEX0lNUEwoTWVkaWFFbGVtZW50
QXVkaW9Tb3VyY2VOb2RlKTsKIAotUmVmPE1lZGlhRWxlbWVudEF1ZGlvU291cmNlTm9kZT4gTWVk
aWFFbGVtZW50QXVkaW9Tb3VyY2VOb2RlOjpjcmVhdGUoQXVkaW9Db250ZXh0JiBjb250ZXh0LCBI
VE1MTWVkaWFFbGVtZW50JiBtZWRpYUVsZW1lbnQpCitSZWY8TWVkaWFFbGVtZW50QXVkaW9Tb3Vy
Y2VOb2RlPiBNZWRpYUVsZW1lbnRBdWRpb1NvdXJjZU5vZGU6OmNyZWF0ZShBdWRpb0NvbnRleHRC
YXNlJiBjb250ZXh0LCBIVE1MTWVkaWFFbGVtZW50JiBtZWRpYUVsZW1lbnQpCiB7CiAgICAgcmV0
dXJuIGFkb3B0UmVmKCpuZXcgTWVkaWFFbGVtZW50QXVkaW9Tb3VyY2VOb2RlKGNvbnRleHQsIG1l
ZGlhRWxlbWVudCkpOwogfQogCi1NZWRpYUVsZW1lbnRBdWRpb1NvdXJjZU5vZGU6Ok1lZGlhRWxl
bWVudEF1ZGlvU291cmNlTm9kZShBdWRpb0NvbnRleHQmIGNvbnRleHQsIEhUTUxNZWRpYUVsZW1l
bnQmIG1lZGlhRWxlbWVudCkKK01lZGlhRWxlbWVudEF1ZGlvU291cmNlTm9kZTo6TWVkaWFFbGVt
ZW50QXVkaW9Tb3VyY2VOb2RlKEF1ZGlvQ29udGV4dEJhc2UmIGNvbnRleHQsIEhUTUxNZWRpYUVs
ZW1lbnQmIG1lZGlhRWxlbWVudCkKICAgICA6IEF1ZGlvTm9kZShjb250ZXh0LCBjb250ZXh0LnNh
bXBsZVJhdGUoKSkKICAgICAsIG1fbWVkaWFFbGVtZW50KG1lZGlhRWxlbWVudCkKICAgICAsIG1f
c291cmNlTnVtYmVyT2ZDaGFubmVscygwKQpAQCAtOTcsNyArOTcsNyBAQCB2b2lkIE1lZGlhRWxl
bWVudEF1ZGlvU291cmNlTm9kZTo6c2V0Rm9ybWF0KHNpemVfdCBudW1iZXJPZkNoYW5uZWxzLCBm
bG9hdCBzb3VyYwogCiAgICAgICAgIHsKICAgICAgICAgICAgIC8vIFRoZSBjb250ZXh0IG11c3Qg
YmUgbG9ja2VkIHdoZW4gY2hhbmdpbmcgdGhlIG51bWJlciBvZiBvdXRwdXQgY2hhbm5lbHMuCi0g
ICAgICAgICAgICBBdWRpb0NvbnRleHQ6OkF1dG9Mb2NrZXIgY29udGV4dExvY2tlcihjb250ZXh0
KCkpOworICAgICAgICAgICAgQXVkaW9Db250ZXh0QmFzZTo6QXV0b0xvY2tlciBjb250ZXh0TG9j
a2VyKGNvbnRleHQoKSk7CiAKICAgICAgICAgICAgIC8vIERvIGFueSBuZWNlc3NzYXJ5IHJlLWNv
bmZpZ3VyYXRpb24gdG8gdGhlIG91dHB1dCdzIG51bWJlciBvZiBjaGFubmVscy4KICAgICAgICAg
ICAgIG91dHB1dCgwKS0+c2V0TnVtYmVyT2ZDaGFubmVscyhudW1iZXJPZkNoYW5uZWxzKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vTWVkaWFFbGVtZW50QXVk
aW9Tb3VyY2VOb2RlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL01lZGlhRWxl
bWVudEF1ZGlvU291cmNlTm9kZS5oCmluZGV4IDNhMTMxNTQxNWYxOGY5YjM0YWRjZTQyNGYyNmMy
NjEyZDNjNDhmNTkuLjcxZDBlZDEzOGE1ZjlmZDM3MzA1MDIwNTQxZWQ1ZDQ3YzNhZWMwY2MgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vTWVkaWFFbGVtZW50QXVk
aW9Tb3VyY2VOb2RlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9NZWRp
YUVsZW1lbnRBdWRpb1NvdXJjZU5vZGUuaApAQCAtNDAsNyArNDAsNyBAQCBjbGFzcyBBdWRpb0Nv
bnRleHQ7CiBjbGFzcyBNZWRpYUVsZW1lbnRBdWRpb1NvdXJjZU5vZGUgZmluYWwgOiBwdWJsaWMg
QXVkaW9Ob2RlLCBwdWJsaWMgQXVkaW9Tb3VyY2VQcm92aWRlckNsaWVudCB7CiAgICAgV1RGX01B
S0VfSVNPX0FMTE9DQVRFRChNZWRpYUVsZW1lbnRBdWRpb1NvdXJjZU5vZGUpOwogcHVibGljOgot
ICAgIHN0YXRpYyBSZWY8TWVkaWFFbGVtZW50QXVkaW9Tb3VyY2VOb2RlPiBjcmVhdGUoQXVkaW9D
b250ZXh0JiwgSFRNTE1lZGlhRWxlbWVudCYpOworICAgIHN0YXRpYyBSZWY8TWVkaWFFbGVtZW50
QXVkaW9Tb3VyY2VOb2RlPiBjcmVhdGUoQXVkaW9Db250ZXh0QmFzZSYsIEhUTUxNZWRpYUVsZW1l
bnQmKTsKIAogICAgIHZpcnR1YWwgfk1lZGlhRWxlbWVudEF1ZGlvU291cmNlTm9kZSgpOwogCkBA
IC01Nyw3ICs1Nyw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHVubG9jaygpOwogCiBwcml2YXRlOgot
ICAgIE1lZGlhRWxlbWVudEF1ZGlvU291cmNlTm9kZShBdWRpb0NvbnRleHQmLCBIVE1MTWVkaWFF
bGVtZW50Jik7CisgICAgTWVkaWFFbGVtZW50QXVkaW9Tb3VyY2VOb2RlKEF1ZGlvQ29udGV4dEJh
c2UmLCBIVE1MTWVkaWFFbGVtZW50Jik7CiAKICAgICBkb3VibGUgdGFpbFRpbWUoKSBjb25zdCBv
dmVycmlkZSB7IHJldHVybiAwOyB9CiAgICAgZG91YmxlIGxhdGVuY3lUaW1lKCkgY29uc3Qgb3Zl
cnJpZGUgeyByZXR1cm4gMDsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJhdWRpby9NZWRpYVN0cmVhbUF1ZGlvRGVzdGluYXRpb25Ob2RlLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViYXVkaW8vTWVkaWFTdHJlYW1BdWRpb0Rlc3RpbmF0aW9uTm9kZS5jcHAK
aW5kZXggZDc2NjI5MzAzMDhhNzQ2YTQ2YWUwMDg2OGE1ZDYzNDFiODJmZjczYi4uMzBmMWEyMjJi
ZTIzMDBlMTJkYWU3NjZiZGVlNDJiMGJiMWNmMWU4OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJhdWRpby9NZWRpYVN0cmVhbUF1ZGlvRGVzdGluYXRpb25Ob2RlLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL01lZGlhU3RyZWFtQXVkaW9EZXN0
aW5hdGlvbk5vZGUuY3BwCkBAIC0zOSwxMiArMzksMTIgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
CiBXVEZfTUFLRV9JU09fQUxMT0NBVEVEX0lNUEwoTWVkaWFTdHJlYW1BdWRpb0Rlc3RpbmF0aW9u
Tm9kZSk7CiAKLVJlZjxNZWRpYVN0cmVhbUF1ZGlvRGVzdGluYXRpb25Ob2RlPiBNZWRpYVN0cmVh
bUF1ZGlvRGVzdGluYXRpb25Ob2RlOjpjcmVhdGUoQXVkaW9Db250ZXh0JiBjb250ZXh0LCBzaXpl
X3QgbnVtYmVyT2ZDaGFubmVscykKK1JlZjxNZWRpYVN0cmVhbUF1ZGlvRGVzdGluYXRpb25Ob2Rl
PiBNZWRpYVN0cmVhbUF1ZGlvRGVzdGluYXRpb25Ob2RlOjpjcmVhdGUoQXVkaW9Db250ZXh0QmFz
ZSYgY29udGV4dCwgc2l6ZV90IG51bWJlck9mQ2hhbm5lbHMpCiB7CiAgICAgcmV0dXJuIGFkb3B0
UmVmKCpuZXcgTWVkaWFTdHJlYW1BdWRpb0Rlc3RpbmF0aW9uTm9kZShjb250ZXh0LCBudW1iZXJP
ZkNoYW5uZWxzKSk7CiB9CiAKLU1lZGlhU3RyZWFtQXVkaW9EZXN0aW5hdGlvbk5vZGU6Ok1lZGlh
U3RyZWFtQXVkaW9EZXN0aW5hdGlvbk5vZGUoQXVkaW9Db250ZXh0JiBjb250ZXh0LCBzaXplX3Qg
bnVtYmVyT2ZDaGFubmVscykKK01lZGlhU3RyZWFtQXVkaW9EZXN0aW5hdGlvbk5vZGU6Ok1lZGlh
U3RyZWFtQXVkaW9EZXN0aW5hdGlvbk5vZGUoQXVkaW9Db250ZXh0QmFzZSYgY29udGV4dCwgc2l6
ZV90IG51bWJlck9mQ2hhbm5lbHMpCiAgICAgOiBBdWRpb0Jhc2ljSW5zcGVjdG9yTm9kZShjb250
ZXh0LCBjb250ZXh0LnNhbXBsZVJhdGUoKSwgbnVtYmVyT2ZDaGFubmVscykKICAgICAsIG1fc291
cmNlKE1lZGlhU3RyZWFtQXVkaW9Tb3VyY2U6OmNyZWF0ZShjb250ZXh0LnNhbXBsZVJhdGUoKSkp
CiAgICAgLCBtX3N0cmVhbShNZWRpYVN0cmVhbTo6Y3JlYXRlKCpjb250ZXh0LmRvY3VtZW50KCks
IE1lZGlhU3RyZWFtUHJpdmF0ZTo6Y3JlYXRlKGNvbnRleHQuZG9jdW1lbnQoKS0+bG9nZ2VyKCks
IG1fc291cmNlLmNvcHlSZWYoKSkpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJhdWRpby9NZWRpYVN0cmVhbUF1ZGlvRGVzdGluYXRpb25Ob2RlLmggYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmF1ZGlvL01lZGlhU3RyZWFtQXVkaW9EZXN0aW5hdGlvbk5vZGUuaApp
bmRleCBmNWE3ZThmZWM0YTkwMmM5MGJkY2Y5YzVjN2I0NjdjOTgwZjk3ZTNhLi5kYmFkOTI4ZDc5
NmEyZDhmNDEwZjQzNmZiZTMzZWY3MmFhODQxNzNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmF1ZGlvL01lZGlhU3RyZWFtQXVkaW9EZXN0aW5hdGlvbk5vZGUuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL01lZGlhU3RyZWFtQXVkaW9EZXN0aW5h
dGlvbk5vZGUuaApAQCAtMzIsMTMgKzMyLDEzIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAot
Y2xhc3MgQXVkaW9Db250ZXh0OworY2xhc3MgQXVkaW9Db250ZXh0QmFzZTsKIGNsYXNzIE1lZGlh
U3RyZWFtQXVkaW9Tb3VyY2U7CiAKIGNsYXNzIE1lZGlhU3RyZWFtQXVkaW9EZXN0aW5hdGlvbk5v
ZGUgZmluYWwgOiBwdWJsaWMgQXVkaW9CYXNpY0luc3BlY3Rvck5vZGUgewogICAgIFdURl9NQUtF
X0lTT19BTExPQ0FURUQoTWVkaWFTdHJlYW1BdWRpb0Rlc3RpbmF0aW9uTm9kZSk7CiBwdWJsaWM6
Ci0gICAgc3RhdGljIFJlZjxNZWRpYVN0cmVhbUF1ZGlvRGVzdGluYXRpb25Ob2RlPiBjcmVhdGUo
QXVkaW9Db250ZXh0Jiwgc2l6ZV90IG51bWJlck9mQ2hhbm5lbHMpOworICAgIHN0YXRpYyBSZWY8
TWVkaWFTdHJlYW1BdWRpb0Rlc3RpbmF0aW9uTm9kZT4gY3JlYXRlKEF1ZGlvQ29udGV4dEJhc2Um
LCBzaXplX3QgbnVtYmVyT2ZDaGFubmVscyk7CiAKICAgICB2aXJ0dWFsIH5NZWRpYVN0cmVhbUF1
ZGlvRGVzdGluYXRpb25Ob2RlKCk7CiAKQEAgLTQ5LDcgKzQ5LDcgQEAgcHVibGljOgogICAgIHZv
aWQgcmVzZXQoKSBmaW5hbDsKICAgICAKIHByaXZhdGU6Ci0gICAgTWVkaWFTdHJlYW1BdWRpb0Rl
c3RpbmF0aW9uTm9kZShBdWRpb0NvbnRleHQmLCBzaXplX3QgbnVtYmVyT2ZDaGFubmVscyk7Cisg
ICAgTWVkaWFTdHJlYW1BdWRpb0Rlc3RpbmF0aW9uTm9kZShBdWRpb0NvbnRleHRCYXNlJiwgc2l6
ZV90IG51bWJlck9mQ2hhbm5lbHMpOwogCiAgICAgZG91YmxlIHRhaWxUaW1lKCkgY29uc3QgZmlu
YWwgeyByZXR1cm4gMDsgfQogICAgIGRvdWJsZSBsYXRlbmN5VGltZSgpIGNvbnN0IGZpbmFsIHsg
cmV0dXJuIDA7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8v
TWVkaWFTdHJlYW1BdWRpb1NvdXJjZU5vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJhdWRpby9NZWRpYVN0cmVhbUF1ZGlvU291cmNlTm9kZS5jcHAKaW5kZXggMWI0ZmI2ZDE5MjJh
ZDFjNGIwNDFjYjkxMjljNTVjMTM4NzA3ZjdjZS4uMzVlNTVhOTIwMmMzZjMwNTViZjE4N2JhYTZm
NjZmYjZiZDUxZjY5MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRp
by9NZWRpYVN0cmVhbUF1ZGlvU291cmNlTm9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJhdWRpby9NZWRpYVN0cmVhbUF1ZGlvU291cmNlTm9kZS5jcHAKQEAgLTM4LDEyICsz
OCwxMiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFdURl9NQUtFX0lTT19BTExPQ0FURURfSU1Q
TChNZWRpYVN0cmVhbUF1ZGlvU291cmNlTm9kZSk7CiAKLVJlZjxNZWRpYVN0cmVhbUF1ZGlvU291
cmNlTm9kZT4gTWVkaWFTdHJlYW1BdWRpb1NvdXJjZU5vZGU6OmNyZWF0ZShBdWRpb0NvbnRleHQm
IGNvbnRleHQsIE1lZGlhU3RyZWFtJiBtZWRpYVN0cmVhbSwgTWVkaWFTdHJlYW1UcmFjayYgYXVk
aW9UcmFjaykKK1JlZjxNZWRpYVN0cmVhbUF1ZGlvU291cmNlTm9kZT4gTWVkaWFTdHJlYW1BdWRp
b1NvdXJjZU5vZGU6OmNyZWF0ZShBdWRpb0NvbnRleHRCYXNlJiBjb250ZXh0LCBNZWRpYVN0cmVh
bSYgbWVkaWFTdHJlYW0sIE1lZGlhU3RyZWFtVHJhY2smIGF1ZGlvVHJhY2spCiB7CiAgICAgcmV0
dXJuIGFkb3B0UmVmKCpuZXcgTWVkaWFTdHJlYW1BdWRpb1NvdXJjZU5vZGUoY29udGV4dCwgbWVk
aWFTdHJlYW0sIGF1ZGlvVHJhY2spKTsKIH0KIAotTWVkaWFTdHJlYW1BdWRpb1NvdXJjZU5vZGU6
Ok1lZGlhU3RyZWFtQXVkaW9Tb3VyY2VOb2RlKEF1ZGlvQ29udGV4dCYgY29udGV4dCwgTWVkaWFT
dHJlYW0mIG1lZGlhU3RyZWFtLCBNZWRpYVN0cmVhbVRyYWNrJiBhdWRpb1RyYWNrKQorTWVkaWFT
dHJlYW1BdWRpb1NvdXJjZU5vZGU6Ok1lZGlhU3RyZWFtQXVkaW9Tb3VyY2VOb2RlKEF1ZGlvQ29u
dGV4dEJhc2UmIGNvbnRleHQsIE1lZGlhU3RyZWFtJiBtZWRpYVN0cmVhbSwgTWVkaWFTdHJlYW1U
cmFjayYgYXVkaW9UcmFjaykKICAgICA6IEF1ZGlvTm9kZShjb250ZXh0LCBjb250ZXh0LnNhbXBs
ZVJhdGUoKSkKICAgICAsIG1fbWVkaWFTdHJlYW0obWVkaWFTdHJlYW0pCiAgICAgLCBtX2F1ZGlv
VHJhY2soYXVkaW9UcmFjaykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
YXVkaW8vTWVkaWFTdHJlYW1BdWRpb1NvdXJjZU5vZGUuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViYXVkaW8vTWVkaWFTdHJlYW1BdWRpb1NvdXJjZU5vZGUuaAppbmRleCBlM2VkZWZlMWJk
NTcwMmE3M2EyMmY0YTgzOWQyM2NmYzE5YzI5YTA1Li5jNzJkMzEyMjMzZDUwNmRkNTRjZTI3MGZj
OTIyN2I1NDU3NWVlMmUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1
ZGlvL01lZGlhU3RyZWFtQXVkaW9Tb3VyY2VOb2RlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJhdWRpby9NZWRpYVN0cmVhbUF1ZGlvU291cmNlTm9kZS5oCkBAIC00MCw3ICs0MCw3
IEBAIGNsYXNzIE11bHRpQ2hhbm5lbFJlc2FtcGxlcjsKIGNsYXNzIE1lZGlhU3RyZWFtQXVkaW9T
b3VyY2VOb2RlIGZpbmFsIDogcHVibGljIEF1ZGlvTm9kZSwgcHVibGljIEF1ZGlvU291cmNlUHJv
dmlkZXJDbGllbnQgewogICAgIFdURl9NQUtFX0lTT19BTExPQ0FURUQoTWVkaWFTdHJlYW1BdWRp
b1NvdXJjZU5vZGUpOwogcHVibGljOgotICAgIHN0YXRpYyBSZWY8TWVkaWFTdHJlYW1BdWRpb1Nv
dXJjZU5vZGU+IGNyZWF0ZShBdWRpb0NvbnRleHQmLCBNZWRpYVN0cmVhbSYsIE1lZGlhU3RyZWFt
VHJhY2smKTsKKyAgICBzdGF0aWMgUmVmPE1lZGlhU3RyZWFtQXVkaW9Tb3VyY2VOb2RlPiBjcmVh
dGUoQXVkaW9Db250ZXh0QmFzZSYsIE1lZGlhU3RyZWFtJiwgTWVkaWFTdHJlYW1UcmFjayYpOwog
CiAgICAgdmlydHVhbCB+TWVkaWFTdHJlYW1BdWRpb1NvdXJjZU5vZGUoKTsKIApAQCAtNTQsNyAr
NTQsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRGb3JtYXQoc2l6ZV90IG51bWJlck9mQ2hhbm5l
bHMsIGZsb2F0IHNhbXBsZVJhdGUpIG92ZXJyaWRlOwogCiBwcml2YXRlOgotICAgIE1lZGlhU3Ry
ZWFtQXVkaW9Tb3VyY2VOb2RlKEF1ZGlvQ29udGV4dCYsIE1lZGlhU3RyZWFtJiwgTWVkaWFTdHJl
YW1UcmFjayYpOworICAgIE1lZGlhU3RyZWFtQXVkaW9Tb3VyY2VOb2RlKEF1ZGlvQ29udGV4dEJh
c2UmLCBNZWRpYVN0cmVhbSYsIE1lZGlhU3RyZWFtVHJhY2smKTsKIAogICAgIGRvdWJsZSB0YWls
VGltZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIDA7IH0KICAgICBkb3VibGUgbGF0ZW5jeVRp
bWUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiAwOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmF1ZGlvL09mZmxpbmVBdWRpb0NvbnRleHQuaWRsIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJhdWRpby9PZmZsaW5lQXVkaW9Db250ZXh0LmlkbAppbmRleCBmNmVj
YjFhNjg1ODFjYzk0NjY3OWQ5MjRmOGUzZTE1NGQwMzQzYWM2Li4wZTcxYTA2YmMzZmEyZjhlODYy
OTlmM2MyNDU4N2U2Y2JhOWM0MTExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmF1ZGlvL09mZmxpbmVBdWRpb0NvbnRleHQuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViYXVkaW8vT2ZmbGluZUF1ZGlvQ29udGV4dC5pZGwKQEAgLTI0LDggKzI0LDggQEAK
IAogWwogICAgIENvbmRpdGlvbmFsPVdFQl9BVURJTywKKyAgICBFbmFibGVkQnlTZXR0aW5nPU1v
ZGVyblVucHJlZml4ZWRXZWJBdWRpbywKICAgICBKU0dlbmVyYXRlVG9KU09iamVjdCwKLSAgICBJ
bnRlcmZhY2VOYW1lPXdlYmtpdE9mZmxpbmVBdWRpb0NvbnRleHQKIF0gaW50ZXJmYWNlIE9mZmxp
bmVBdWRpb0NvbnRleHQgOiBBdWRpb0NvbnRleHQgewogICAgIFtDYWxsV2l0aD1TY3JpcHRFeGVj
dXRpb25Db250ZXh0LCBNYXlUaHJvd0V4Y2VwdGlvbl0gY29uc3RydWN0b3IodW5zaWduZWQgbG9u
ZyBudW1iZXJPZkNoYW5uZWxzLCB1bnNpZ25lZCBsb25nIG51bWJlck9mRnJhbWVzLCB1bnJlc3Ry
aWN0ZWQgZmxvYXQgc2FtcGxlUmF0ZSk7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJhdWRpby9PZmZsaW5lQXVkaW9EZXN0aW5hdGlvbk5vZGUuY3BwIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9PZmZsaW5lQXVkaW9EZXN0aW5hdGlvbk5vZGUuY3Bw
CmluZGV4IDZhMTk1NTQ2Y2Y3MTM5NGZlNWM0MTRiNzY1YjZjOTdlMDVlZGMwNDkuLmZlYzUwOGNi
ZmYxYzcxZDMzYmM0YjEzZWE5ODJmOTJmYzBhZmI5OWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViYXVkaW8vT2ZmbGluZUF1ZGlvRGVzdGluYXRpb25Ob2RlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL09mZmxpbmVBdWRpb0Rlc3RpbmF0aW9u
Tm9kZS5jcHAKQEAgLTQxLDcgKzQxLDcgQEAgV1RGX01BS0VfSVNPX0FMTE9DQVRFRF9JTVBMKE9m
ZmxpbmVBdWRpb0Rlc3RpbmF0aW9uTm9kZSk7CiAgICAgCiBjb25zdCBzaXplX3QgcmVuZGVyUXVh
bnR1bVNpemUgPSAxMjg7ICAgIAogCi1PZmZsaW5lQXVkaW9EZXN0aW5hdGlvbk5vZGU6Ok9mZmxp
bmVBdWRpb0Rlc3RpbmF0aW9uTm9kZShBdWRpb0NvbnRleHQmIGNvbnRleHQsIEF1ZGlvQnVmZmVy
KiByZW5kZXJUYXJnZXQpCitPZmZsaW5lQXVkaW9EZXN0aW5hdGlvbk5vZGU6Ok9mZmxpbmVBdWRp
b0Rlc3RpbmF0aW9uTm9kZShBdWRpb0NvbnRleHRCYXNlJiBjb250ZXh0LCBBdWRpb0J1ZmZlciog
cmVuZGVyVGFyZ2V0KQogICAgIDogQXVkaW9EZXN0aW5hdGlvbk5vZGUoY29udGV4dCwgcmVuZGVy
VGFyZ2V0LT5zYW1wbGVSYXRlKCkpCiAgICAgLCBtX3JlbmRlclRhcmdldChyZW5kZXJUYXJnZXQp
CiAgICAgLCBtX3N0YXJ0ZWRSZW5kZXJpbmcoZmFsc2UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmF1ZGlvL09mZmxpbmVBdWRpb0Rlc3RpbmF0aW9uTm9kZS5oIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9PZmZsaW5lQXVkaW9EZXN0aW5hdGlvbk5vZGUu
aAppbmRleCBkYTI0OTU3NGQ0ODRmZjgxMmFhNDkzN2FjM2ExNjVlZTk1ODI4NGNjLi5mODcxMGZk
ZTEwZGZmZmU0OTAyMzRmMTkzNmJkNThiYWEzY2IyZTk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmF1ZGlvL09mZmxpbmVBdWRpb0Rlc3RpbmF0aW9uTm9kZS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vT2ZmbGluZUF1ZGlvRGVzdGluYXRpb25O
b2RlLmgKQEAgLTM3LDkgKzM3LDkgQEAgY2xhc3MgQXVkaW9Db250ZXh0OwogY2xhc3MgT2ZmbGlu
ZUF1ZGlvRGVzdGluYXRpb25Ob2RlIGZpbmFsIDogcHVibGljIEF1ZGlvRGVzdGluYXRpb25Ob2Rl
IHsKICAgICBXVEZfTUFLRV9JU09fQUxMT0NBVEVEKE9mZmxpbmVBdWRpb0Rlc3RpbmF0aW9uTm9k
ZSk7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxPZmZsaW5lQXVkaW9EZXN0aW5hdGlvbk5vZGU+
IGNyZWF0ZShBdWRpb0NvbnRleHQmIGNvbnRleHQsIEF1ZGlvQnVmZmVyKiByZW5kZXJUYXJnZXQp
CisgICAgc3RhdGljIFJlZjxPZmZsaW5lQXVkaW9EZXN0aW5hdGlvbk5vZGU+IGNyZWF0ZShBdWRp
b0NvbnRleHRCYXNlJiBjb250ZXh0LCBBdWRpb0J1ZmZlciogcmVuZGVyVGFyZ2V0KQogICAgIHsK
LSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgT2ZmbGluZUF1ZGlvRGVzdGluYXRpb25Ob2Rl
KGNvbnRleHQsIHJlbmRlclRhcmdldCkpOyAgICAgCisgICAgICAgIHJldHVybiBhZG9wdFJlZigq
bmV3IE9mZmxpbmVBdWRpb0Rlc3RpbmF0aW9uTm9kZShjb250ZXh0LCByZW5kZXJUYXJnZXQpKTsK
ICAgICB9CiAKICAgICB2aXJ0dWFsIH5PZmZsaW5lQXVkaW9EZXN0aW5hdGlvbk5vZGUoKTsKQEAg
LTU1LDcgKzU1LDcgQEAgcHVibGljOgogICAgIGZsb2F0IHNhbXBsZVJhdGUoKSBjb25zdCBvdmVy
cmlkZSB7IHJldHVybiBtX3JlbmRlclRhcmdldC0+c2FtcGxlUmF0ZSgpOyB9CiAKIHByaXZhdGU6
Ci0gICAgT2ZmbGluZUF1ZGlvRGVzdGluYXRpb25Ob2RlKEF1ZGlvQ29udGV4dCYsIEF1ZGlvQnVm
ZmVyKiByZW5kZXJUYXJnZXQpOworICAgIE9mZmxpbmVBdWRpb0Rlc3RpbmF0aW9uTm9kZShBdWRp
b0NvbnRleHRCYXNlJiwgQXVkaW9CdWZmZXIqIHJlbmRlclRhcmdldCk7CiAKICAgICAvLyBUaGlz
IEF1ZGlvTm9kZSByZW5kZXJzIGludG8gdGhpcyBBdWRpb0J1ZmZlci4KICAgICBSZWZQdHI8QXVk
aW9CdWZmZXI+IG1fcmVuZGVyVGFyZ2V0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJhdWRpby9Pc2NpbGxhdG9yTm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmF1ZGlvL09zY2lsbGF0b3JOb2RlLmNwcAppbmRleCA5NTYwMDUzYTQ4MDViOWQ0YmY1NTk5
ZTczYTE5YTgxZTI1YjBjOTZmLi5lOGYzMWM3MjIwZTUwNjU2OGUzYWNmMDU4ZjZjYWI0NzNiMDkx
ZWQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL09zY2lsbGF0
b3JOb2RlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL09zY2lsbGF0
b3JOb2RlLmNwcApAQCAtNDUsMTIgKzQ1LDEyIEBAIFBlcmlvZGljV2F2ZSogT3NjaWxsYXRvck5v
ZGU6OnNfcGVyaW9kaWNXYXZlU3F1YXJlID0gbnVsbHB0cjsKIFBlcmlvZGljV2F2ZSogT3NjaWxs
YXRvck5vZGU6OnNfcGVyaW9kaWNXYXZlU2F3dG9vdGggPSBudWxscHRyOwogUGVyaW9kaWNXYXZl
KiBPc2NpbGxhdG9yTm9kZTo6c19wZXJpb2RpY1dhdmVUcmlhbmdsZSA9IG51bGxwdHI7CiAKLVJl
ZjxPc2NpbGxhdG9yTm9kZT4gT3NjaWxsYXRvck5vZGU6OmNyZWF0ZShBdWRpb0NvbnRleHQmIGNv
bnRleHQsIGZsb2F0IHNhbXBsZVJhdGUpCitSZWY8T3NjaWxsYXRvck5vZGU+IE9zY2lsbGF0b3JO
b2RlOjpjcmVhdGUoQXVkaW9Db250ZXh0QmFzZSYgY29udGV4dCwgZmxvYXQgc2FtcGxlUmF0ZSkK
IHsKICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBPc2NpbGxhdG9yTm9kZShjb250ZXh0LCBzYW1w
bGVSYXRlKSk7CiB9CiAKLU9zY2lsbGF0b3JOb2RlOjpPc2NpbGxhdG9yTm9kZShBdWRpb0NvbnRl
eHQmIGNvbnRleHQsIGZsb2F0IHNhbXBsZVJhdGUpCitPc2NpbGxhdG9yTm9kZTo6T3NjaWxsYXRv
ck5vZGUoQXVkaW9Db250ZXh0QmFzZSYgY29udGV4dCwgZmxvYXQgc2FtcGxlUmF0ZSkKICAgICA6
IEF1ZGlvU2NoZWR1bGVkU291cmNlTm9kZShjb250ZXh0LCBzYW1wbGVSYXRlKQogICAgICwgbV9m
aXJzdFJlbmRlcih0cnVlKQogICAgICwgbV92aXJ0dWFsUmVhZEluZGV4KDApCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL09zY2lsbGF0b3JOb2RlLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL09zY2lsbGF0b3JOb2RlLmgKaW5kZXggNDJmZjBj
MTkyNGI2MmVkMGNmMDAxN2ZmYjk3ZGU2MDMyNmM3MzkyMi4uMDg5NWJjZTNkZGRmNTlkNjljNWM2
YWY5Y2ZkMmI5Y2ZiZTllYjRhOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJhdWRpby9Pc2NpbGxhdG9yTm9kZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
YXVkaW8vT3NjaWxsYXRvck5vZGUuaApAQCAtNDUsNyArNDUsNyBAQCBwdWJsaWM6CiAgICAgICAg
IEN1c3RvbQogICAgIH07CiAKLSAgICBzdGF0aWMgUmVmPE9zY2lsbGF0b3JOb2RlPiBjcmVhdGUo
QXVkaW9Db250ZXh0JiwgZmxvYXQgc2FtcGxlUmF0ZSk7CisgICAgc3RhdGljIFJlZjxPc2NpbGxh
dG9yTm9kZT4gY3JlYXRlKEF1ZGlvQ29udGV4dEJhc2UmLCBmbG9hdCBzYW1wbGVSYXRlKTsKIAog
ICAgIHZpcnR1YWwgfk9zY2lsbGF0b3JOb2RlKCk7CiAKQEAgLTYwLDcgKzYwLDcgQEAgcHVibGlj
OgogICAgIHZvaWQgc2V0UGVyaW9kaWNXYXZlKFBlcmlvZGljV2F2ZSopOwogCiBwcml2YXRlOgot
ICAgIE9zY2lsbGF0b3JOb2RlKEF1ZGlvQ29udGV4dCYsIGZsb2F0IHNhbXBsZVJhdGUpOworICAg
IE9zY2lsbGF0b3JOb2RlKEF1ZGlvQ29udGV4dEJhc2UmLCBmbG9hdCBzYW1wbGVSYXRlKTsKIAog
ICAgIHZvaWQgcHJvY2VzcyhzaXplX3QgZnJhbWVzVG9Qcm9jZXNzKSBmaW5hbDsKICAgICB2b2lk
IHJlc2V0KCkgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1
ZGlvL1Bhbm5lck5vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9QYW5u
ZXJOb2RlLmNwcAppbmRleCBlYzgwZTY5ZDJhYjg3MTAyOGJjNmE2ZTQ0N2VhYmQxOWU5ZmNjNzIx
Li5hZTQyZjExNGJiYzM5MDRkYjdjMmNjMTU2ZDBiMmNiZTQyMDA2OThlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1Bhbm5lck5vZGUuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vUGFubmVyTm9kZS5jcHAKQEAgLTQ4LDggKzQ4LDEz
IEBAIHN0YXRpYyB2b2lkIGZpeE5BTnMoZG91YmxlICZ4KQogICAgICAgICB4ID0gMC4wOwogfQog
Ci1QYW5uZXJOb2RlOjpQYW5uZXJOb2RlKEF1ZGlvQ29udGV4dCYgY29udGV4dCwgZmxvYXQgc2Ft
cGxlUmF0ZSkKK1Bhbm5lck5vZGVCYXNlOjpQYW5uZXJOb2RlQmFzZShBdWRpb0NvbnRleHRCYXNl
JiBjb250ZXh0LCBmbG9hdCBzYW1wbGVSYXRlKQogICAgIDogQXVkaW9Ob2RlKGNvbnRleHQsIHNh
bXBsZVJhdGUpCit7Cit9CisKK1Bhbm5lck5vZGU6OlBhbm5lck5vZGUoQXVkaW9Db250ZXh0JiBj
b250ZXh0LCBmbG9hdCBzYW1wbGVSYXRlKQorICAgIDogUGFubmVyTm9kZUJhc2UoY29udGV4dCwg
c2FtcGxlUmF0ZSkKICAgICAsIG1fcGFubmluZ01vZGVsKFBhbm5pbmdNb2RlbFR5cGU6OkhSVEYp
CiAgICAgLCBtX2xhc3RHYWluKC0xLjApCiAgICAgLCBtX3Bvc2l0aW9uWChBdWRpb1BhcmFtOjpj
cmVhdGUoY29udGV4dCwgInBvc2l0aW9uWCJfcywgMCwgLUZMVF9NQVgsIEZMVF9NQVgpKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9QYW5uZXJOb2RlLmggYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1Bhbm5lck5vZGUuaAppbmRleCA4NDgwYzIz
MzI4MDBkY2Y0ODg1MTU4ZDY5NDU5MmRkOWVlNTI5MmI2Li4yOWI2NDhkMDYwNzYyOTM4N2ExYjBj
MDcwMzdjNTBjMjJjZjAxMDU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmF1ZGlvL1Bhbm5lck5vZGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlv
L1Bhbm5lck5vZGUuaApAQCAtMjYsNiArMjYsNyBAQAogCiAjaWYgRU5BQkxFKFdFQl9BVURJTykK
IAorI2luY2x1ZGUgIkF1ZGlvQ29udGV4dC5oIgogI2luY2x1ZGUgIkF1ZGlvTGlzdGVuZXIuaCIK
ICNpbmNsdWRlICJBdWRpb05vZGUuaCIKICNpbmNsdWRlICJBdWRpb1BhcmFtLmgiCkBAIC00MSw2
ICs0MiwxNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEhSVEZEYXRhYmFzZUxvYWRl
cjsKIAorY2xhc3MgUGFubmVyTm9kZUJhc2UgOiBwdWJsaWMgQXVkaW9Ob2RlIHsKK3B1YmxpYzoK
KyAgICB2aXJ0dWFsIH5QYW5uZXJOb2RlQmFzZSgpID0gZGVmYXVsdDsKKworICAgIHZpcnR1YWwg
ZmxvYXQgZG9wcGxlclJhdGUoKSA9IDA7CisKK3Byb3RlY3RlZDoKKyAgICBQYW5uZXJOb2RlQmFz
ZShBdWRpb0NvbnRleHRCYXNlJiwgZmxvYXQgc2FtcGxlUmF0ZSk7Cit9OworCiAvLyBQYW5uZXJO
b2RlIGlzIGFuIEF1ZGlvTm9kZSB3aXRoIG9uZSBpbnB1dCBhbmQgb25lIG91dHB1dC4KIC8vIEl0
IHBvc2l0aW9ucyBhIHNvdW5kIGluIDNEIHNwYWNlLCB3aXRoIHRoZSBleGFjdCBlZmZlY3QgZGVw
ZW5kZW50IG9uIHRoZSBwYW5uaW5nIG1vZGVsLgogLy8gSXQgaGFzIGEgcG9zaXRpb24gYW5kIGFu
IG9yaWVudGF0aW9uIGluIDNEIHNwYWNlIHdoaWNoIGlzIHJlbGF0aXZlIHRvIHRoZSBwb3NpdGlv
biBhbmQgb3JpZW50YXRpb24gb2YgdGhlIGNvbnRleHQncyBBdWRpb0xpc3RlbmVyLgpAQCAtNDgs
NyArNTksNyBAQCBjbGFzcyBIUlRGRGF0YWJhc2VMb2FkZXI7CiAvLyBBIGNvbmUgZWZmZWN0IHdp
bGwgYXR0ZW51YXRlIHRoZSBnYWluIGFzIHRoZSBvcmllbnRhdGlvbiBtb3ZlcyBhd2F5IGZyb20g
dGhlIGxpc3RlbmVyLgogLy8gQWxsIG9mIHRoZXNlIGVmZmVjdHMgZm9sbG93IHRoZSBPcGVuQUwg
c3BlY2lmaWNhdGlvbiB2ZXJ5IGNsb3NlbHkuCiAKLWNsYXNzIFBhbm5lck5vZGUgZmluYWwgOiBw
dWJsaWMgQXVkaW9Ob2RlIHsKK2NsYXNzIFBhbm5lck5vZGUgZmluYWwgOiBwdWJsaWMgUGFubmVy
Tm9kZUJhc2UgewogICAgIFdURl9NQUtFX0lTT19BTExPQ0FURUQoUGFubmVyTm9kZSk7CiBwdWJs
aWM6CiAgICAgc3RhdGljIFJlZjxQYW5uZXJOb2RlPiBjcmVhdGUoQXVkaW9Db250ZXh0JiBjb250
ZXh0LCBmbG9hdCBzYW1wbGVSYXRlKQpAQCAtNTgsNiArNjksOSBAQCBwdWJsaWM6CiAKICAgICB2
aXJ0dWFsIH5QYW5uZXJOb2RlKCk7CiAKKyAgICBBdWRpb0NvbnRleHQmIGNvbnRleHQoKSB7IHJl
dHVybiBkb3duY2FzdDxBdWRpb0NvbnRleHQ+KEF1ZGlvTm9kZTo6Y29udGV4dCgpKTsgfQorICAg
IGNvbnN0IEF1ZGlvQ29udGV4dCYgY29udGV4dCgpIGNvbnN0IHsgcmV0dXJuIGRvd25jYXN0PEF1
ZGlvQ29udGV4dD4oQXVkaW9Ob2RlOjpjb250ZXh0KCkpOyB9CisKICAgICAvLyBBdWRpb05vZGUK
ICAgICB2b2lkIHByb2Nlc3Moc2l6ZV90IGZyYW1lc1RvUHJvY2Vzcykgb3ZlcnJpZGU7CiAgICAg
dm9pZCBwdWxsSW5wdXRzKHNpemVfdCBmcmFtZXNUb1Byb2Nlc3MpIG92ZXJyaWRlOwpAQCAtMTEx
LDcgKzEyNSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldENvbmVPdXRlckdhaW4oZG91YmxlIGFu
Z2xlKSB7IG1fY29uZUVmZmVjdC5zZXRPdXRlckdhaW4oYW5nbGUpOyB9CiAKICAgICB2b2lkIGdl
dEF6aW11dGhFbGV2YXRpb24oZG91YmxlKiBvdXRBemltdXRoLCBkb3VibGUqIG91dEVsZXZhdGlv
bik7Ci0gICAgZmxvYXQgZG9wcGxlclJhdGUoKTsKKyAgICBmbG9hdCBkb3BwbGVyUmF0ZSgpIGZp
bmFsOwogCiAgICAgLy8gQWNjZXNzb3JzIGZvciBkeW5hbWljYWxseSBjYWxjdWxhdGVkIGdhaW4g
dmFsdWVzLgogICAgIEF1ZGlvUGFyYW0qIGRpc3RhbmNlR2FpbigpIHsgcmV0dXJuIG1fZGlzdGFu
Y2VHYWluLmdldCgpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1
ZGlvL1Bhbm5lck5vZGUuaWRsIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9QYW5u
ZXJOb2RlLmlkbAppbmRleCAwMzI5ODM3ZDJmNWEyNWM3ZjZhNmYwZDA0ZTMxODdhMWY2YWQ4YjQx
Li43YmI5MmM0ZjhmYjQ1ZGIyOTNmZmUzYTE3YTk3MTAzYzBiOTJlNmUyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1Bhbm5lck5vZGUuaWRsCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vUGFubmVyTm9kZS5pZGwKQEAgLTIyLDI3ICsyMiwx
MCBAQAogICogU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCiAgKi8KIAotWwotICAgIENvbmRpdGlvbmFsPVdFQl9BVURJTywKLSAgICBJ
bXBsZW1lbnRlZEFzPVBhbm5pbmdNb2RlbFR5cGUKLV0gZW51bSBQYW5uaW5nTW9kZWxUeXBlIHsK
LSAgICAiZXF1YWxwb3dlciIsCi0gICAgIkhSVEYiCi19OwotCi1bCi0gICAgQ29uZGl0aW9uYWw9
V0VCX0FVRElPLAotICAgIEltcGxlbWVudGVkQXM9RGlzdGFuY2VNb2RlbFR5cGUKLV0gZW51bSBE
aXN0YW5jZU1vZGVsVHlwZSB7Ci0gICAgImxpbmVhciIsCi0gICAgImludmVyc2UiLAotICAgICJl
eHBvbmVudGlhbCIKLX07Ci0KIFsKICAgICBDb25kaXRpb25hbD1XRUJfQVVESU8sCiAgICAgSlNH
ZW5lcmF0ZVRvSlNPYmplY3QsCi0gICAgSW50ZXJmYWNlTmFtZT13ZWJraXRBdWRpb1Bhbm5lck5v
ZGUsCisgICAgRW5hYmxlZEJ5U2V0dGluZz1Nb2Rlcm5VbnByZWZpeGVkV2ViQXVkaW8sCiBdIGlu
dGVyZmFjZSBQYW5uZXJOb2RlIDogQXVkaW9Ob2RlIHsKICAgICAvLyBEZWZhdWx0IG1vZGVsIGZv
ciBzdGVyZW8gaXMgSFJURiAKICAgICBhdHRyaWJ1dGUgUGFubmluZ01vZGVsVHlwZSBwYW5uaW5n
TW9kZWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1Bhbm5p
bmdNb2RlbFR5cGUuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vUGFubmluZ01v
ZGVsVHlwZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLmFiMGIyMjcxMmExNzBiMWZlZmFlMTZlNmVmM2RmOTRkMjM4
YTFhOWYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlv
L1Bhbm5pbmdNb2RlbFR5cGUuaApAQCAtMCwwICsxLDI3IEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDIwLCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9T
RSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRT
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAq
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTgorICogQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTCisgKiBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21h
IG9uY2UKKworI2luY2x1ZGUgIlBhbm5lci5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJhdWRpby9QYW5uaW5nTW9kZWxUeXBlLmlkbCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViYXVkaW8vUGFubmluZ01vZGVsVHlwZS5pZGwKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYmY3ZGY4ZjU1
NDJmYWE0NTI2MDdiZTFmMDk5ZTk5NzRiZGFjMzdlNgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vUGFubmluZ01vZGVsVHlwZS5pZGwKQEAgLTAsMCAr
MSwzMCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCwgR29vZ2xlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5EIEFOWQorICog
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OCisgKiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMKKyAqIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKK1sKKyAgICBDb25kaXRpb25hbD1XRUJfQVVESU8sCitdIGVu
dW0gUGFubmluZ01vZGVsVHlwZSB7CisgICAgImVxdWFscG93ZXIiLAorICAgICJIUlRGIgorfTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vU2NyaXB0UHJvY2Vz
c29yTm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1NjcmlwdFByb2Nl
c3Nvck5vZGUuY3BwCmluZGV4IDkxYzc1MzdlMTVlOGI1NTI0MTFlYTlmNjEzMDFlYzFjMzI1YWQy
NTYuLjc2MTBiMTUwMjQ4NzhiNjA2ZTVjZGQ4YzRmNWFiMGZiMTFkYzAzNDYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vU2NyaXB0UHJvY2Vzc29yTm9kZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9TY3JpcHRQcm9jZXNzb3JOb2Rl
LmNwcApAQCAtNDQsMTIgKzQ0LDEyIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogV1RGX01BS0Vf
SVNPX0FMTE9DQVRFRF9JTVBMKFNjcmlwdFByb2Nlc3Nvck5vZGUpOwogCi1SZWY8U2NyaXB0UHJv
Y2Vzc29yTm9kZT4gU2NyaXB0UHJvY2Vzc29yTm9kZTo6Y3JlYXRlKEF1ZGlvQ29udGV4dCYgY29u
dGV4dCwgZmxvYXQgc2FtcGxlUmF0ZSwgc2l6ZV90IGJ1ZmZlclNpemUsIHVuc2lnbmVkIG51bWJl
ck9mSW5wdXRDaGFubmVscywgdW5zaWduZWQgbnVtYmVyT2ZPdXRwdXRDaGFubmVscykKK1JlZjxT
Y3JpcHRQcm9jZXNzb3JOb2RlPiBTY3JpcHRQcm9jZXNzb3JOb2RlOjpjcmVhdGUoQXVkaW9Db250
ZXh0QmFzZSYgY29udGV4dCwgZmxvYXQgc2FtcGxlUmF0ZSwgc2l6ZV90IGJ1ZmZlclNpemUsIHVu
c2lnbmVkIG51bWJlck9mSW5wdXRDaGFubmVscywgdW5zaWduZWQgbnVtYmVyT2ZPdXRwdXRDaGFu
bmVscykKIHsKICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTY3JpcHRQcm9jZXNzb3JOb2RlKGNv
bnRleHQsIHNhbXBsZVJhdGUsIGJ1ZmZlclNpemUsIG51bWJlck9mSW5wdXRDaGFubmVscywgbnVt
YmVyT2ZPdXRwdXRDaGFubmVscykpOwogfQogCi1TY3JpcHRQcm9jZXNzb3JOb2RlOjpTY3JpcHRQ
cm9jZXNzb3JOb2RlKEF1ZGlvQ29udGV4dCYgY29udGV4dCwgZmxvYXQgc2FtcGxlUmF0ZSwgc2l6
ZV90IGJ1ZmZlclNpemUsIHVuc2lnbmVkIG51bWJlck9mSW5wdXRDaGFubmVscywgdW5zaWduZWQg
bnVtYmVyT2ZPdXRwdXRDaGFubmVscykKK1NjcmlwdFByb2Nlc3Nvck5vZGU6OlNjcmlwdFByb2Nl
c3Nvck5vZGUoQXVkaW9Db250ZXh0QmFzZSYgY29udGV4dCwgZmxvYXQgc2FtcGxlUmF0ZSwgc2l6
ZV90IGJ1ZmZlclNpemUsIHVuc2lnbmVkIG51bWJlck9mSW5wdXRDaGFubmVscywgdW5zaWduZWQg
bnVtYmVyT2ZPdXRwdXRDaGFubmVscykKICAgICA6IEF1ZGlvTm9kZShjb250ZXh0LCBzYW1wbGVS
YXRlKQogICAgICwgQWN0aXZlRE9NT2JqZWN0KGNvbnRleHQuc2NyaXB0RXhlY3V0aW9uQ29udGV4
dCgpKQogICAgICwgbV9kb3VibGVCdWZmZXJJbmRleCgwKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJhdWRpby9TY3JpcHRQcm9jZXNzb3JOb2RlLmggYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1NjcmlwdFByb2Nlc3Nvck5vZGUuaAppbmRleCA1YTRlN2Nl
NDc1MjJlZjI4ZWJmMmZkMTc5NmFmNTg0YmE3NWI0MTMzLi40YzE0YTA3NTdkZjVjNWU2MmRmZTk2
YTg4ZWI0MmI0N2YxNWU3MjU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmF1ZGlvL1NjcmlwdFByb2Nlc3Nvck5vZGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmF1ZGlvL1NjcmlwdFByb2Nlc3Nvck5vZGUuaApAQCAtNTIsNyArNTIsNyBAQCBwdWJsaWM6
CiAgICAgLy8gVGhpcyB2YWx1ZSBjb250cm9scyBob3cgZnJlcXVlbnRseSB0aGUgb25hdWRpb3By
b2Nlc3MgZXZlbnQgaGFuZGxlciBpcyBjYWxsZWQgYW5kIGhvdyBtYW55IHNhbXBsZS1mcmFtZXMg
bmVlZCB0byBiZSBwcm9jZXNzZWQgZWFjaCBjYWxsLgogICAgIC8vIExvd2VyIG51bWJlcnMgZm9y
IGJ1ZmZlclNpemUgd2lsbCByZXN1bHQgaW4gYSBsb3dlciAoYmV0dGVyKSBsYXRlbmN5LiBIaWdo
ZXIgbnVtYmVycyB3aWxsIGJlIG5lY2Vzc2FyeSB0byBhdm9pZCBhdWRpbyBicmVha3VwIGFuZCBn
bGl0Y2hlcy4KICAgICAvLyBUaGUgdmFsdWUgY2hvc2VuIG11c3QgY2FyZWZ1bGx5IGJhbGFuY2Ug
YmV0d2VlbiBsYXRlbmN5IGFuZCBhdWRpbyBxdWFsaXR5LgotICAgIHN0YXRpYyBSZWY8U2NyaXB0
UHJvY2Vzc29yTm9kZT4gY3JlYXRlKEF1ZGlvQ29udGV4dCYsIGZsb2F0IHNhbXBsZVJhdGUsIHNp
emVfdCBidWZmZXJTaXplLCB1bnNpZ25lZCBudW1iZXJPZklucHV0Q2hhbm5lbHMsIHVuc2lnbmVk
IG51bWJlck9mT3V0cHV0Q2hhbm5lbHMpOworICAgIHN0YXRpYyBSZWY8U2NyaXB0UHJvY2Vzc29y
Tm9kZT4gY3JlYXRlKEF1ZGlvQ29udGV4dEJhc2UmLCBmbG9hdCBzYW1wbGVSYXRlLCBzaXplX3Qg
YnVmZmVyU2l6ZSwgdW5zaWduZWQgbnVtYmVyT2ZJbnB1dENoYW5uZWxzLCB1bnNpZ25lZCBudW1i
ZXJPZk91dHB1dENoYW5uZWxzKTsKIAogICAgIHZpcnR1YWwgflNjcmlwdFByb2Nlc3Nvck5vZGUo
KTsKIApAQCAtNzEsNyArNzEsNyBAQCBwcml2YXRlOgogICAgIGRvdWJsZSB0YWlsVGltZSgpIGNv
bnN0IG92ZXJyaWRlOwogICAgIGRvdWJsZSBsYXRlbmN5VGltZSgpIGNvbnN0IG92ZXJyaWRlOwog
Ci0gICAgU2NyaXB0UHJvY2Vzc29yTm9kZShBdWRpb0NvbnRleHQmLCBmbG9hdCBzYW1wbGVSYXRl
LCBzaXplX3QgYnVmZmVyU2l6ZSwgdW5zaWduZWQgbnVtYmVyT2ZJbnB1dENoYW5uZWxzLCB1bnNp
Z25lZCBudW1iZXJPZk91dHB1dENoYW5uZWxzKTsKKyAgICBTY3JpcHRQcm9jZXNzb3JOb2RlKEF1
ZGlvQ29udGV4dEJhc2UmLCBmbG9hdCBzYW1wbGVSYXRlLCBzaXplX3QgYnVmZmVyU2l6ZSwgdW5z
aWduZWQgbnVtYmVyT2ZJbnB1dENoYW5uZWxzLCB1bnNpZ25lZCBudW1iZXJPZk91dHB1dENoYW5u
ZWxzKTsKIAogICAgIHZvaWQgZmlyZVByb2Nlc3NFdmVudCgpOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1dhdmVTaGFwZXJOb2RlLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vV2F2ZVNoYXBlck5vZGUuY3BwCmluZGV4IDZlN2U4ZGQx
YzljMTlmYTNjODVlM2Q5ZDg1NWFiOWY0NTc4NWI3OTAuLmFlNGFmOWYyMzJmNzUxMzZjMDgxYWZl
MTRiZDdhNzk1NmMwNTI5NmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
YXVkaW8vV2F2ZVNoYXBlck5vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
YXVkaW8vV2F2ZVNoYXBlck5vZGUuY3BwCkBAIC0zNSw3ICszNSw3IEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAogV1RGX01BS0VfSVNPX0FMTE9DQVRFRF9JTVBMKFdhdmVTaGFwZXJOb2RlKTsKIAot
V2F2ZVNoYXBlck5vZGU6OldhdmVTaGFwZXJOb2RlKEF1ZGlvQ29udGV4dCYgY29udGV4dCkKK1dh
dmVTaGFwZXJOb2RlOjpXYXZlU2hhcGVyTm9kZShBdWRpb0NvbnRleHRCYXNlJiBjb250ZXh0KQog
ICAgIDogQXVkaW9CYXNpY1Byb2Nlc3Nvck5vZGUoY29udGV4dCwgY29udGV4dC5zYW1wbGVSYXRl
KCkpCiB7CiAgICAgc2V0Tm9kZVR5cGUoTm9kZVR5cGVXYXZlU2hhcGVyKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vV2F2ZVNoYXBlck5vZGUuaCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vV2F2ZVNoYXBlck5vZGUuaAppbmRleCBmNDllMzQ5
YmMzZGM4YzI5YjRhNmU2M2RmZGJmOTg2NGI5NmY4NjgwLi41ZjQ5MzI4YjIyZDBlYmU1ZDZlZjZk
MDNjNmFlNmQ2ZmZjMWExMTBlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmF1ZGlvL1dhdmVTaGFwZXJOb2RlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJh
dWRpby9XYXZlU2hhcGVyTm9kZS5oCkBAIC0zMyw3ICszMyw3IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIGNsYXNzIFdhdmVTaGFwZXJOb2RlIGZpbmFsIDogcHVibGljIEF1ZGlvQmFzaWNQcm9jZXNz
b3JOb2RlIHsKICAgICBXVEZfTUFLRV9JU09fQUxMT0NBVEVEKFdhdmVTaGFwZXJOb2RlKTsKIHB1
YmxpYzoKLSAgICBzdGF0aWMgUmVmPFdhdmVTaGFwZXJOb2RlPiBjcmVhdGUoQXVkaW9Db250ZXh0
JiBjb250ZXh0KQorICAgIHN0YXRpYyBSZWY8V2F2ZVNoYXBlck5vZGU+IGNyZWF0ZShBdWRpb0Nv
bnRleHRCYXNlJiBjb250ZXh0KQogICAgIHsKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcg
V2F2ZVNoYXBlck5vZGUoY29udGV4dCkpOwogICAgIH0KQEAgLTQ5LDcgKzQ5LDcgQEAgcHVibGlj
OgogICAgIGRvdWJsZSBsYXRlbmN5KCkgY29uc3QgeyByZXR1cm4gbGF0ZW5jeVRpbWUoKTsgfQog
CiBwcml2YXRlOiAgICAKLSAgICBleHBsaWNpdCBXYXZlU2hhcGVyTm9kZShBdWRpb0NvbnRleHQm
KTsgICAgCisgICAgZXhwbGljaXQgV2F2ZVNoYXBlck5vZGUoQXVkaW9Db250ZXh0QmFzZSYpOwog
CiAgICAgV2F2ZVNoYXBlclByb2Nlc3Nvciogd2F2ZVNoYXBlclByb2Nlc3NvcigpIHsgcmV0dXJu
IHN0YXRpY19jYXN0PFdhdmVTaGFwZXJQcm9jZXNzb3IqPihwcm9jZXNzb3IoKSk7IH0KIH07CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1dlYktpdEF1ZGlvQ29u
dGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1dlYktpdEF1ZGlvQ29u
dGV4dC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uZjQwMjA4MTlhODkzN2ZjNjNkNTNkNTVmM2VhN2Q3OWI5NDky
MTEwMgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8v
V2ViS2l0QXVkaW9Db250ZXh0LmNwcApAQCAtMCwwICsxLDE0MDIgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdo
dCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVS
UE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMK
KyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTgorICogQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTCisgKiBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5j
bHVkZSAiY29uZmlnLmgiCisKKyNpZiBFTkFCTEUoV0VCX0FVRElPKQorCisjaW5jbHVkZSAiV2Vi
S2l0QXVkaW9Db250ZXh0LmgiCisKKyNpbmNsdWRlICJBbmFseXNlck5vZGUuaCIKKyNpbmNsdWRl
ICJBc3luY0F1ZGlvRGVjb2Rlci5oIgorI2luY2x1ZGUgIkF1ZGlvQnVmZmVyLmgiCisjaW5jbHVk
ZSAiQXVkaW9CdWZmZXJDYWxsYmFjay5oIgorI2luY2x1ZGUgIkF1ZGlvQnVmZmVyU291cmNlTm9k
ZS5oIgorI2luY2x1ZGUgIkF1ZGlvTGlzdGVuZXIuaCIKKyNpbmNsdWRlICJBdWRpb05vZGVJbnB1
dC5oIgorI2luY2x1ZGUgIkF1ZGlvTm9kZU91dHB1dC5oIgorI2luY2x1ZGUgIkF1ZGlvU2Vzc2lv
bi5oIgorI2luY2x1ZGUgIkJpcXVhZEZpbHRlck5vZGUuaCIKKyNpbmNsdWRlICJDaGFubmVsTWVy
Z2VyTm9kZS5oIgorI2luY2x1ZGUgIkNoYW5uZWxTcGxpdHRlck5vZGUuaCIKKyNpbmNsdWRlICJD
b252b2x2ZXJOb2RlLmgiCisjaW5jbHVkZSAiRGVmYXVsdEF1ZGlvRGVzdGluYXRpb25Ob2RlLmgi
CisjaW5jbHVkZSAiRGVsYXlOb2RlLmgiCisjaW5jbHVkZSAiRG9jdW1lbnQuaCIKKyNpbmNsdWRl
ICJEeW5hbWljc0NvbXByZXNzb3JOb2RlLmgiCisjaW5jbHVkZSAiRXZlbnROYW1lcy5oIgorI2lu
Y2x1ZGUgIkZGVEZyYW1lLmgiCisjaW5jbHVkZSAiRnJhbWUuaCIKKyNpbmNsdWRlICJGcmFtZUxv
YWRlci5oIgorI2luY2x1ZGUgIkdhaW5Ob2RlLmgiCisjaW5jbHVkZSAiR2VuZXJpY0V2ZW50UXVl
dWUuaCIKKyNpbmNsdWRlICJIUlRGRGF0YWJhc2VMb2FkZXIuaCIKKyNpbmNsdWRlICJIUlRGUGFu
bmVyLmgiCisjaW5jbHVkZSAiSlNET01Qcm9taXNlRGVmZXJyZWQuaCIKKyNpbmNsdWRlICJMb2dn
aW5nLmgiCisjaW5jbHVkZSAiTmV0d29ya2luZ0NvbnRleHQuaCIKKyNpbmNsdWRlICJPZmZsaW5l
QXVkaW9Db21wbGV0aW9uRXZlbnQuaCIKKyNpbmNsdWRlICJPZmZsaW5lQXVkaW9EZXN0aW5hdGlv
bk5vZGUuaCIKKyNpbmNsdWRlICJPc2NpbGxhdG9yTm9kZS5oIgorI2luY2x1ZGUgIlBhZ2UuaCIK
KyNpbmNsdWRlICJQZXJpb2RpY1dhdmUuaCIKKyNpbmNsdWRlICJQbGF0Zm9ybU1lZGlhU2Vzc2lv
bk1hbmFnZXIuaCIKKyNpbmNsdWRlICJTY3JpcHRDb250cm9sbGVyLmgiCisjaW5jbHVkZSAiU2Ny
aXB0UHJvY2Vzc29yTm9kZS5oIgorI2luY2x1ZGUgIldhdmVTaGFwZXJOb2RlLmgiCisjaW5jbHVk
ZSAiV2ViS2l0QXVkaW9QYW5uZXJOb2RlLmgiCisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvU2Ny
aXB0Q2FsbFN0YWNrLmg+CisKKyNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQorI2luY2x1ZGUgIk1l
ZGlhU3RyZWFtLmgiCisjaW5jbHVkZSAiTWVkaWFTdHJlYW1BdWRpb0Rlc3RpbmF0aW9uTm9kZS5o
IgorI2luY2x1ZGUgIk1lZGlhU3RyZWFtQXVkaW9Tb3VyY2UuaCIKKyNpbmNsdWRlICJNZWRpYVN0
cmVhbUF1ZGlvU291cmNlTm9kZS5oIgorI2VuZGlmCisKKyNpZiBFTkFCTEUoVklERU8pCisjaW5j
bHVkZSAiSFRNTE1lZGlhRWxlbWVudC5oIgorI2luY2x1ZGUgIk1lZGlhRWxlbWVudEF1ZGlvU291
cmNlTm9kZS5oIgorI2VuZGlmCisKKyNpZiBERUJVR19BVURJT05PREVfUkVGRVJFTkNFUworI2lu
Y2x1ZGUgPHN0ZGlvLmg+CisjZW5kaWYKKworI2lmIFVTRShHU1RSRUFNRVIpCisjaW5jbHVkZSAi
R1N0cmVhbWVyQ29tbW9uLmgiCisjZW5kaWYKKworI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCisj
aW5jbHVkZSAiU2NyaXB0Q29udHJvbGxlci5oIgorI2luY2x1ZGUgIlNldHRpbmdzLmgiCisjZW5k
aWYKKworI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0FycmF5QnVmZmVyLmg+CisjaW5jbHVkZSA8
d3RmL0F0b21pY3MuaD4KKyNpbmNsdWRlIDx3dGYvSXNvTWFsbG9jSW5saW5lcy5oPgorI2luY2x1
ZGUgPHd0Zi9NYWluVGhyZWFkLmg+CisjaW5jbHVkZSA8d3RmL1JlZi5oPgorI2luY2x1ZGUgPHd0
Zi9SZWZDb3VudGVkLmg+CisjaW5jbHVkZSA8d3RmL1Njb3BlLmg+CisjaW5jbHVkZSA8d3RmL3Rl
eHQvV1RGU3RyaW5nLmg+CisKK2NvbnN0IHVuc2lnbmVkIE1heFBlcmlvZGljV2F2ZUxlbmd0aCA9
IDQwOTY7CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworV1RGX01BS0VfSVNPX0FMTE9DQVRFRF9J
TVBMKFdlYktpdEF1ZGlvQ29udGV4dCk7CisKKyNkZWZpbmUgUkVMRUFTRV9MT0dfSUZfQUxMT1dF
RChmbXQsIC4uLikgUkVMRUFTRV9MT0dfSUYoZG9jdW1lbnQoKSAmJiBkb2N1bWVudCgpLT5wYWdl
KCkgJiYgZG9jdW1lbnQoKS0+cGFnZSgpLT5pc0Fsd2F5c09uTG9nZ2luZ0FsbG93ZWQoKSwgTWVk
aWEsICIlcCAtIFdlYktpdEF1ZGlvQ29udGV4dDo6IiBmbXQsIHRoaXMsICMjX19WQV9BUkdTX18p
CisKK2Jvb2wgV2ViS2l0QXVkaW9Db250ZXh0Ojppc1NhbXBsZVJhdGVSYW5nZUdvb2QoZmxvYXQg
c2FtcGxlUmF0ZSkKK3sKKyAgICAvLyBGSVhNRTogSXQgd291bGQgYmUgbmljZSBpZiB0aGUgbWlu
aW11bSBzYW1wbGUtcmF0ZSBjb3VsZCBiZSBsZXNzIHRoYW4gNDQuMUtIeiwKKyAgICAvLyBidXQg
dGhhdCB3aWxsIHJlcXVpcmUgc29tZSBmaXhlcyBpbiBIUlRGUGFubmVyOjpmZnRTaXplRm9yU2Ft
cGxlUmF0ZSgpLCBhbmQgc29tZSB0ZXN0aW5nIHRoZXJlLgorICAgIHJldHVybiBzYW1wbGVSYXRl
ID49IDQ0MTAwICYmIHNhbXBsZVJhdGUgPD0gOTYwMDA7Cit9CisKKyNpZiBPUyhXSU5ET1dTKQor
Ly8gRG9uJ3QgYWxsb3cgbW9yZSB0aGFuIHRoaXMgbnVtYmVyIG9mIHNpbXVsdGFuZW91cyBBdWRp
b0NvbnRleHRzIHRhbGtpbmcgdG8gaGFyZHdhcmUuCitjb25zdGV4cHIgdW5zaWduZWQgbWF4SGFy
ZHdhcmVDb250ZXh0cyA9IDQ7CisjZW5kaWYKK3Vuc2lnbmVkIFdlYktpdEF1ZGlvQ29udGV4dDo6
c19oYXJkd2FyZUNvbnRleHRDb3VudCA9IDA7CisKK0V4Y2VwdGlvbk9yPFJlZjxXZWJLaXRBdWRp
b0NvbnRleHQ+PiBXZWJLaXRBdWRpb0NvbnRleHQ6OmNyZWF0ZShEb2N1bWVudCYgZG9jdW1lbnQp
Cit7CisgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKyNpZiBPUyhXSU5ET1dTKQorICAgIGlm
IChzX2hhcmR3YXJlQ29udGV4dENvdW50ID49IG1heEhhcmR3YXJlQ29udGV4dHMpCisgICAgICAg
IHJldHVybiBFeGNlcHRpb24geyBRdW90YUV4Y2VlZGVkRXJyb3IgfTsKKyNlbmRpZgorCisgICAg
YXV0byBhdWRpb0NvbnRleHQgPSBhZG9wdFJlZigqbmV3IFdlYktpdEF1ZGlvQ29udGV4dChkb2N1
bWVudCkpOworICAgIGF1ZGlvQ29udGV4dC0+c3VzcGVuZElmTmVlZGVkKCk7CisgICAgcmV0dXJu
IGF1ZGlvQ29udGV4dDsKK30KKworLy8gQ29uc3RydWN0b3IgZm9yIHJlbmRlcmluZyB0byB0aGUg
YXVkaW8gaGFyZHdhcmUuCitXZWJLaXRBdWRpb0NvbnRleHQ6OldlYktpdEF1ZGlvQ29udGV4dChE
b2N1bWVudCYgZG9jdW1lbnQpCisgICAgOiBBdWRpb0NvbnRleHRCYXNlKGRvY3VtZW50KQorI2lm
ICFSRUxFQVNFX0xPR19ESVNBQkxFRAorICAgICwgbV9sb2dnZXIoZG9jdW1lbnQubG9nZ2VyKCkp
CisgICAgLCBtX2xvZ0lkZW50aWZpZXIodW5pcXVlTG9nSWRlbnRpZmllcigpKQorI2VuZGlmCisg
ICAgLCBtX21lZGlhU2Vzc2lvbihQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6Y3JlYXRlKFBsYXRmb3Jt
TWVkaWFTZXNzaW9uTWFuYWdlcjo6c2hhcmVkTWFuYWdlcigpLCAqdGhpcykpCisgICAgLCBtX2V2
ZW50UXVldWUoTWFpblRocmVhZEdlbmVyaWNFdmVudFF1ZXVlOjpjcmVhdGUoKnRoaXMpKQorewor
ICAgIC8vIEFjY29yZGluZyB0byBzcGVjIEF1ZGlvQ29udGV4dCBtdXN0IGRpZSBvbmx5IGFmdGVy
IHBhZ2UgbmF2aWdhdGUuCisgICAgLy8gTGV0cyBtYXJrIGl0IGFzIEFjdGl2ZURPTU9iamVjdCB3
aXRoIHBlbmRpbmcgYWN0aXZpdHkgYW5kIHVubWFyayBpdCBpbiBjbGVhciBtZXRob2QuCisgICAg
bWFrZVBlbmRpbmdBY3Rpdml0eSgpOworCisgICAgY29uc3RydWN0Q29tbW9uKCk7CisKKyAgICBt
X2Rlc3RpbmF0aW9uTm9kZSA9IERlZmF1bHRBdWRpb0Rlc3RpbmF0aW9uTm9kZTo6Y3JlYXRlKCp0
aGlzKTsKKworICAgIC8vIEluaXRpYWxpemUgdGhlIGRlc3RpbmF0aW9uIG5vZGUncyBtdXRlZCBz
dGF0ZSB0byBtYXRjaCB0aGUgcGFnZSdzIGN1cnJlbnQgbXV0ZWQgc3RhdGUuCisgICAgcGFnZU11
dGVkU3RhdGVEaWRDaGFuZ2UoKTsKKworICAgIGRvY3VtZW50LmFkZEF1ZGlvUHJvZHVjZXIoKnRo
aXMpOworICAgIGRvY3VtZW50LnJlZ2lzdGVyRm9yVmlzaWJpbGl0eVN0YXRlQ2hhbmdlZENhbGxi
YWNrcygqdGhpcyk7Cit9CisKKy8vIENvbnN0cnVjdG9yIGZvciBvZmZsaW5lIChub24tcmVhbHRp
bWUpIHJlbmRlcmluZy4KK1dlYktpdEF1ZGlvQ29udGV4dDo6V2ViS2l0QXVkaW9Db250ZXh0KERv
Y3VtZW50JiBkb2N1bWVudCwgQXVkaW9CdWZmZXIqIHJlbmRlclRhcmdldCkKKyAgICA6IEF1ZGlv
Q29udGV4dEJhc2UoZG9jdW1lbnQpCisjaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECisgICAgLCBt
X2xvZ2dlcihkb2N1bWVudC5sb2dnZXIoKSkKKyAgICAsIG1fbG9nSWRlbnRpZmllcih1bmlxdWVM
b2dJZGVudGlmaWVyKCkpCisjZW5kaWYKKyAgICAsIG1faXNPZmZsaW5lQ29udGV4dCh0cnVlKQor
ICAgICwgbV9tZWRpYVNlc3Npb24oUGxhdGZvcm1NZWRpYVNlc3Npb246OmNyZWF0ZShQbGF0Zm9y
bU1lZGlhU2Vzc2lvbk1hbmFnZXI6OnNoYXJlZE1hbmFnZXIoKSwgKnRoaXMpKQorICAgICwgbV9l
dmVudFF1ZXVlKE1haW5UaHJlYWRHZW5lcmljRXZlbnRRdWV1ZTo6Y3JlYXRlKCp0aGlzKSkKKyAg
ICAsIG1fcmVuZGVyVGFyZ2V0KHJlbmRlclRhcmdldCkKK3sKKyAgICBjb25zdHJ1Y3RDb21tb24o
KTsKKworICAgIC8vIENyZWF0ZSBhIG5ldyBkZXN0aW5hdGlvbiBmb3Igb2ZmbGluZSByZW5kZXJp
bmcuCisgICAgbV9kZXN0aW5hdGlvbk5vZGUgPSBPZmZsaW5lQXVkaW9EZXN0aW5hdGlvbk5vZGU6
OmNyZWF0ZSgqdGhpcywgbV9yZW5kZXJUYXJnZXQuZ2V0KCkpOworfQorCit2b2lkIFdlYktpdEF1
ZGlvQ29udGV4dDo6Y29uc3RydWN0Q29tbW9uKCkKK3sKKyAgICBGRlRGcmFtZTo6aW5pdGlhbGl6
ZSgpOworCisgICAgbV9saXN0ZW5lciA9IEF1ZGlvTGlzdGVuZXI6OmNyZWF0ZSgpOworCisgICAg
QVNTRVJUKGRvY3VtZW50KCkpOworICAgIGlmIChkb2N1bWVudCgpLT5hdWRpb1BsYXliYWNrUmVx
dWlyZXNVc2VyR2VzdHVyZSgpKQorICAgICAgICBhZGRCZWhhdmlvclJlc3RyaWN0aW9uKFJlcXVp
cmVVc2VyR2VzdHVyZUZvckF1ZGlvU3RhcnRSZXN0cmljdGlvbik7CisgICAgZWxzZQorICAgICAg
ICBtX3Jlc3RyaWN0aW9ucyA9IE5vUmVzdHJpY3Rpb25zOworCisjaWYgUExBVEZPUk0oQ09DT0Ep
CisgICAgYWRkQmVoYXZpb3JSZXN0cmljdGlvbihSZXF1aXJlUGFnZUNvbnNlbnRGb3JBdWRpb1N0
YXJ0UmVzdHJpY3Rpb24pOworI2VuZGlmCit9CisKK1dlYktpdEF1ZGlvQ29udGV4dDo6fldlYktp
dEF1ZGlvQ29udGV4dCgpCit7CisjaWYgREVCVUdfQVVESU9OT0RFX1JFRkVSRU5DRVMKKyAgICBm
cHJpbnRmKHN0ZGVyciwgIiVwOiBXZWJLaXRBdWRpb0NvbnRleHQ6On5XZWJLaXRBdWRpb0NvbnRl
eHQoKVxuIiwgdGhpcyk7CisjZW5kaWYKKyAgICBBU1NFUlQoIW1faXNJbml0aWFsaXplZCk7Cisg
ICAgQVNTRVJUKG1faXNTdG9wU2NoZWR1bGVkKTsKKyAgICBBU1NFUlQobV9ub2Rlc1RvRGVsZXRl
LmlzRW1wdHkoKSk7CisgICAgQVNTRVJUKG1fcmVmZXJlbmNlZE5vZGVzLmlzRW1wdHkoKSk7Cisg
ICAgQVNTRVJUKG1fZmluaXNoZWROb2Rlcy5pc0VtcHR5KCkpOyAvLyBGSVhNRSAoYnVnIDEwNTg3
MCk6IFRoaXMgYXNzZXJ0aW9uIGZhaWxzIG9uIHRlc3RzIHNvbWV0aW1lcy4KKyAgICBBU1NFUlQo
bV9hdXRvbWF0aWNQdWxsTm9kZXMuaXNFbXB0eSgpKTsKKyAgICBpZiAobV9hdXRvbWF0aWNQdWxs
Tm9kZXNOZWVkVXBkYXRpbmcpCisgICAgICAgIG1fcmVuZGVyaW5nQXV0b21hdGljUHVsbE5vZGVz
LnJlc2l6ZShtX2F1dG9tYXRpY1B1bGxOb2Rlcy5zaXplKCkpOworICAgIEFTU0VSVChtX3JlbmRl
cmluZ0F1dG9tYXRpY1B1bGxOb2Rlcy5pc0VtcHR5KCkpOworICAgIC8vIEZJWE1FOiBDYW4gd2Ug
YXNzZXJ0IHRoYXQgbV9kZWZlcnJlZEZpbmlzaERlcmVmTGlzdCBpcyBlbXB0eT8KKworICAgIGlm
ICghaXNPZmZsaW5lQ29udGV4dCgpICYmIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSkgeworICAg
ICAgICBkb2N1bWVudCgpLT5yZW1vdmVBdWRpb1Byb2R1Y2VyKCp0aGlzKTsKKyAgICAgICAgZG9j
dW1lbnQoKS0+dW5yZWdpc3RlckZvclZpc2liaWxpdHlTdGF0ZUNoYW5nZWRDYWxsYmFja3MoKnRo
aXMpOworICAgIH0KK30KKwordm9pZCBXZWJLaXRBdWRpb0NvbnRleHQ6OmxhenlJbml0aWFsaXpl
KCkKK3sKKyAgICBBU1NFUlQoIW1faXNTdG9wU2NoZWR1bGVkKTsKKworICAgIGlmIChtX2lzSW5p
dGlhbGl6ZWQpCisgICAgICAgIHJldHVybjsKKworICAgIC8vIERvbid0IGFsbG93IHRoZSBjb250
ZXh0IHRvIGluaXRpYWxpemUgYSBzZWNvbmQgdGltZSBhZnRlciBpdCdzIGFscmVhZHkgYmVlbiBl
eHBsaWNpdGx5IHVuaW5pdGlhbGl6ZWQuCisgICAgQVNTRVJUKCFtX2lzQXVkaW9UaHJlYWRGaW5p
c2hlZCk7CisgICAgaWYgKG1faXNBdWRpb1RocmVhZEZpbmlzaGVkKQorICAgICAgICByZXR1cm47
CisKKyAgICBpZiAobV9kZXN0aW5hdGlvbk5vZGUpIHsKKyAgICAgICAgbV9kZXN0aW5hdGlvbk5v
ZGUtPmluaXRpYWxpemUoKTsKKworICAgICAgICBpZiAoIWlzT2ZmbGluZUNvbnRleHQoKSkgewor
ICAgICAgICAgICAgLy8gVGhpcyBzdGFydHMgdGhlIGF1ZGlvIHRocmVhZC4gVGhlIGRlc3RpbmF0
aW9uIG5vZGUncyBwcm92aWRlSW5wdXQoKSBtZXRob2Qgd2lsbCBub3cgYmUgY2FsbGVkIHJlcGVh
dGVkbHkgdG8gcmVuZGVyIGF1ZGlvLgorICAgICAgICAgICAgLy8gRWFjaCB0aW1lIHByb3ZpZGVJ
bnB1dCgpIGlzIGNhbGxlZCwgYSBwb3J0aW9uIG9mIHRoZSBhdWRpbyBzdHJlYW0gaXMgcmVuZGVy
ZWQuIExldCdzIGNhbGwgdGhpcyB0aW1lIHBlcmlvZCBhICJyZW5kZXIgcXVhbnR1bSIuCisgICAg
ICAgICAgICAvLyBOT1RFOiBmb3Igbm93IGRlZmF1bHQgQXVkaW9Db250ZXh0IGRvZXMgbm90IG5l
ZWQgYW4gZXhwbGljaXQgc3RhcnRSZW5kZXJpbmcoKSBjYWxsIGZyb20gSmF2YVNjcmlwdC4KKyAg
ICAgICAgICAgIC8vIFdlIG1heSB3YW50IHRvIGNvbnNpZGVyIHJlcXVpcmluZyBpdCBmb3Igc3lt
bWV0cnkgd2l0aCBPZmZsaW5lQXVkaW9Db250ZXh0LgorICAgICAgICAgICAgc3RhcnRSZW5kZXJp
bmcoKTsKKyAgICAgICAgICAgICsrc19oYXJkd2FyZUNvbnRleHRDb3VudDsKKyAgICAgICAgfQor
ICAgIH0KKyAgICBtX2lzSW5pdGlhbGl6ZWQgPSB0cnVlOworfQorCit2b2lkIFdlYktpdEF1ZGlv
Q29udGV4dDo6Y2xlYXIoKQoreworICAgIFJlZjxXZWJLaXRBdWRpb0NvbnRleHQ+IHByb3RlY3Rl
ZFRoaXMoKnRoaXMpOworCisgICAgLy8gV2UgaGF2ZSB0byByZWxlYXNlIG91ciByZWZlcmVuY2Ug
dG8gdGhlIGRlc3RpbmF0aW9uIG5vZGUgYmVmb3JlIHRoZSBjb250ZXh0IHdpbGwgZXZlciBiZSBk
ZWxldGVkIHNpbmNlIHRoZSBkZXN0aW5hdGlvbiBub2RlIGhvbGRzIGEgcmVmZXJlbmNlIHRvIHRo
ZSBjb250ZXh0LgorICAgIGlmIChtX2Rlc3RpbmF0aW9uTm9kZSkKKyAgICAgICAgbV9kZXN0aW5h
dGlvbk5vZGUgPSBudWxscHRyOworCisgICAgLy8gQXVkaW8gdGhyZWFkIGlzIGRlYWQuIE5vYm9k
eSB3aWxsIHNjaGVkdWxlIG5vZGUgZGVsZXRpb24gYWN0aW9uLiBMZXQncyBkbyBpdCBvdXJzZWx2
ZXMuCisgICAgZG8geworICAgICAgICBkZWxldGVNYXJrZWROb2RlcygpOworICAgICAgICBtX25v
ZGVzVG9EZWxldGUuYXBwZW5kVmVjdG9yKG1fbm9kZXNNYXJrZWRGb3JEZWxldGlvbik7CisgICAg
ICAgIG1fbm9kZXNNYXJrZWRGb3JEZWxldGlvbi5jbGVhcigpOworICAgIH0gd2hpbGUgKG1fbm9k
ZXNUb0RlbGV0ZS5zaXplKCkpOworCisgICAgY2xlYXJQZW5kaW5nQWN0aXZpdHkoKTsKK30KKwor
dm9pZCBXZWJLaXRBdWRpb0NvbnRleHQ6OnVuaW5pdGlhbGl6ZSgpCit7CisgICAgQUxXQVlTX0xP
RyhMT0dJREVOVElGSUVSKTsKKworICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisKKyAgICBp
ZiAoIW1faXNJbml0aWFsaXplZCkKKyAgICAgICAgcmV0dXJuOworCisgICAgLy8gVGhpcyBzdG9w
cyB0aGUgYXVkaW8gdGhyZWFkIGFuZCBhbGwgYXVkaW8gcmVuZGVyaW5nLgorICAgIGlmIChtX2Rl
c3RpbmF0aW9uTm9kZSkKKyAgICAgICAgbV9kZXN0aW5hdGlvbk5vZGUtPnVuaW5pdGlhbGl6ZSgp
OworCisgICAgLy8gRG9uJ3QgYWxsb3cgdGhlIGNvbnRleHQgdG8gaW5pdGlhbGl6ZSBhIHNlY29u
ZCB0aW1lIGFmdGVyIGl0J3MgYWxyZWFkeSBiZWVuIGV4cGxpY2l0bHkgdW5pbml0aWFsaXplZC4K
KyAgICBtX2lzQXVkaW9UaHJlYWRGaW5pc2hlZCA9IHRydWU7CisKKyAgICBpZiAoIWlzT2ZmbGlu
ZUNvbnRleHQoKSkgeworICAgICAgICBBU1NFUlQoc19oYXJkd2FyZUNvbnRleHRDb3VudCk7Cisg
ICAgICAgIC0tc19oYXJkd2FyZUNvbnRleHRDb3VudDsKKworICAgICAgICAvLyBPZmZsaW5lIGNv
bnRleHRzIG1vdmUgdG8gJ0Nsb3NlZCcgc3RhdGUgd2hlbiBkaXNwYXRjaGluZyB0aGUgY29tcGxl
dGlvbiBldmVudC4KKyAgICAgICAgc2V0U3RhdGUoU3RhdGU6OkNsb3NlZCk7CisgICAgfQorCisg
ICAgLy8gR2V0IHJpZCBvZiB0aGUgc291cmNlcyB3aGljaCBtYXkgc3RpbGwgYmUgcGxheWluZy4K
KyAgICBkZXJlZlVuZmluaXNoZWRTb3VyY2VOb2RlcygpOworCisgICAgbV9pc0luaXRpYWxpemVk
ID0gZmFsc2U7Cit9CisKK2Jvb2wgV2ViS2l0QXVkaW9Db250ZXh0Ojppc0luaXRpYWxpemVkKCkg
Y29uc3QKK3sKKyAgICByZXR1cm4gbV9pc0luaXRpYWxpemVkOworfQorCit2b2lkIFdlYktpdEF1
ZGlvQ29udGV4dDo6YWRkUmVhY3Rpb24oU3RhdGUgc3RhdGUsIERPTVByb21pc2VEZWZlcnJlZDx2
b2lkPiYmIHByb21pc2UpCit7CisgICAgc2l6ZV90IHN0YXRlSW5kZXggPSBzdGF0aWNfY2FzdDxz
aXplX3Q+KHN0YXRlKTsKKyAgICBpZiAoc3RhdGVJbmRleCA+PSBtX3N0YXRlUmVhY3Rpb25zLnNp
emUoKSkKKyAgICAgICAgbV9zdGF0ZVJlYWN0aW9ucy5ncm93KHN0YXRlSW5kZXggKyAxKTsKKwor
ICAgIG1fc3RhdGVSZWFjdGlvbnNbc3RhdGVJbmRleF0uYXBwZW5kKFdURk1vdmUocHJvbWlzZSkp
OworfQorCit2b2lkIFdlYktpdEF1ZGlvQ29udGV4dDo6c2V0U3RhdGUoU3RhdGUgc3RhdGUpCit7
CisgICAgaWYgKG1fc3RhdGUgPT0gc3RhdGUpCisgICAgICAgIHJldHVybjsKKworICAgIG1fc3Rh
dGUgPSBzdGF0ZTsKKyAgICBtX2V2ZW50UXVldWUtPmVucXVldWVFdmVudChFdmVudDo6Y3JlYXRl
KGV2ZW50TmFtZXMoKS5zdGF0ZWNoYW5nZUV2ZW50LCBFdmVudDo6Q2FuQnViYmxlOjpZZXMsIEV2
ZW50OjpJc0NhbmNlbGFibGU6Ok5vKSk7CisKKyAgICBzaXplX3Qgc3RhdGVJbmRleCA9IHN0YXRp
Y19jYXN0PHNpemVfdD4oc3RhdGUpOworICAgIGlmIChzdGF0ZUluZGV4ID49IG1fc3RhdGVSZWFj
dGlvbnMuc2l6ZSgpKQorICAgICAgICByZXR1cm47CisKKyAgICBWZWN0b3I8RE9NUHJvbWlzZURl
ZmVycmVkPHZvaWQ+PiByZWFjdGlvbnM7CisgICAgbV9zdGF0ZVJlYWN0aW9uc1tzdGF0ZUluZGV4
XS5zd2FwKHJlYWN0aW9ucyk7CisKKyAgICBmb3IgKGF1dG8mIHByb21pc2UgOiByZWFjdGlvbnMp
CisgICAgICAgIHByb21pc2UucmVzb2x2ZSgpOworfQorCit2b2lkIFdlYktpdEF1ZGlvQ29udGV4
dDo6c3RvcCgpCit7CisgICAgQUxXQVlTX0xPRyhMT0dJREVOVElGSUVSKTsKKworICAgIEFTU0VS
VChpc01haW5UaHJlYWQoKSk7CisKKyAgICAvLyBVc3VhbGx5IFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQgY2FsbHMgc3RvcCB0d2ljZS4KKyAgICBpZiAobV9pc1N0b3BTY2hlZHVsZWQpCisgICAgICAg
IHJldHVybjsKKyAgICBtX2lzU3RvcFNjaGVkdWxlZCA9IHRydWU7CisKKyAgICBBU1NFUlQoZG9j
dW1lbnQoKSk7CisgICAgZG9jdW1lbnQoKS0+dXBkYXRlSXNQbGF5aW5nTWVkaWEoKTsKKworICAg
IHVuaW5pdGlhbGl6ZSgpOworICAgIGNsZWFyKCk7Cit9CisKK3ZvaWQgV2ViS2l0QXVkaW9Db250
ZXh0OjpzdXNwZW5kKFJlYXNvbkZvclN1c3BlbnNpb24pCit7CisgICAgaWYgKHN0YXRlKCkgPT0g
U3RhdGU6OlJ1bm5pbmcpIHsKKyAgICAgICAgbV9tZWRpYVNlc3Npb24tPmJlZ2luSW50ZXJydXB0
aW9uKFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpQbGF5YmFja1N1c3BlbmRlZCk7CisgICAgICAgIGRv
Y3VtZW50KCktPnVwZGF0ZUlzUGxheWluZ01lZGlhKCk7CisgICAgfQorfQorCit2b2lkIFdlYktp
dEF1ZGlvQ29udGV4dDo6cmVzdW1lKCkKK3sKKyAgICBpZiAoc3RhdGUoKSA9PSBTdGF0ZTo6SW50
ZXJydXB0ZWQpIHsKKyAgICAgICAgbV9tZWRpYVNlc3Npb24tPmVuZEludGVycnVwdGlvbihQbGF0
Zm9ybU1lZGlhU2Vzc2lvbjo6TWF5UmVzdW1lUGxheWluZyk7CisgICAgICAgIGRvY3VtZW50KCkt
PnVwZGF0ZUlzUGxheWluZ01lZGlhKCk7CisgICAgfQorfQorCitjb25zdCBjaGFyKiBXZWJLaXRB
dWRpb0NvbnRleHQ6OmFjdGl2ZURPTU9iamVjdE5hbWUoKSBjb25zdAoreworICAgIHJldHVybiAi
V2ViS2l0QXVkaW9Db250ZXh0IjsKK30KKworRG9jdW1lbnRJZGVudGlmaWVyIFdlYktpdEF1ZGlv
Q29udGV4dDo6aG9zdGluZ0RvY3VtZW50SWRlbnRpZmllcigpIGNvbnN0Cit7CisgICAgYXV0byog
ZG9jdW1lbnQgPSBkb3duY2FzdDxEb2N1bWVudD4obV9zY3JpcHRFeGVjdXRpb25Db250ZXh0KTsK
KyAgICByZXR1cm4gZG9jdW1lbnQgPyBkb2N1bWVudC0+aWRlbnRpZmllcigpIDogRG9jdW1lbnRJ
ZGVudGlmaWVyIHsgfTsKK30KKworYm9vbCBXZWJLaXRBdWRpb0NvbnRleHQ6OmlzU3VzcGVuZGVk
KCkgY29uc3QKK3sKKyAgICByZXR1cm4gIWRvY3VtZW50KCkgfHwgZG9jdW1lbnQoKS0+YWN0aXZl
RE9NT2JqZWN0c0FyZVN1c3BlbmRlZCgpIHx8IGRvY3VtZW50KCktPmFjdGl2ZURPTU9iamVjdHNB
cmVTdG9wcGVkKCk7Cit9CisKK3ZvaWQgV2ViS2l0QXVkaW9Db250ZXh0Ojp2aXNpYmlsaXR5U3Rh
dGVDaGFuZ2VkKCkKK3sKKyAgICAvLyBEbyBub3Qgc3VzcGVuZCBpZiBhdWRpbyBpcyBhdWRpYmxl
LgorICAgIGlmICghZG9jdW1lbnQoKSB8fCBtZWRpYVN0YXRlKCkgPT0gTWVkaWFQcm9kdWNlcjo6
SXNQbGF5aW5nQXVkaW8gfHwgbV9pc1N0b3BTY2hlZHVsZWQpCisgICAgICAgIHJldHVybjsKKwor
ICAgIGlmIChkb2N1bWVudCgpLT5oaWRkZW4oKSkgeworICAgICAgICBpZiAoc3RhdGUoKSA9PSBT
dGF0ZTo6UnVubmluZykgeworICAgICAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgidmlz
aWJpbGl0eVN0YXRlQ2hhbmdlZCgpIFN1c3BlbmRpbmcgcGxheWJhY2sgYWZ0ZXIgZ29pbmcgdG8g
dGhlIGJhY2tncm91bmQiKTsKKyAgICAgICAgICAgIG1fbWVkaWFTZXNzaW9uLT5iZWdpbkludGVy
cnVwdGlvbihQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6RW50ZXJpbmdCYWNrZ3JvdW5kKTsKKyAgICAg
ICAgfQorICAgIH0gZWxzZSB7CisgICAgICAgIGlmIChzdGF0ZSgpID09IFN0YXRlOjpJbnRlcnJ1
cHRlZCkgeworICAgICAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgidmlzaWJpbGl0eVN0
YXRlQ2hhbmdlZCgpIFJlc3VtaW5nIHBsYXliYWNrIGFmdGVyIGVudGVyaW5nIGZvcmVncm91bmQi
KTsKKyAgICAgICAgICAgIG1fbWVkaWFTZXNzaW9uLT5lbmRJbnRlcnJ1cHRpb24oUGxhdGZvcm1N
ZWRpYVNlc3Npb246Ok1heVJlc3VtZVBsYXlpbmcpOworICAgICAgICB9CisgICAgfQorfQorCiti
b29sIFdlYktpdEF1ZGlvQ29udGV4dDo6d291bGRUYWludE9yaWdpbihjb25zdCBVUkwmIHVybCkg
Y29uc3QKK3sKKyAgICBpZiAodXJsLnByb3RvY29sSXNEYXRhKCkpCisgICAgICAgIHJldHVybiBm
YWxzZTsKKworICAgIGlmIChhdXRvKiBkb2N1bWVudCA9IHRoaXMtPmRvY3VtZW50KCkpCisgICAg
ICAgIHJldHVybiAhZG9jdW1lbnQtPnNlY3VyaXR5T3JpZ2luKCkuY2FuUmVxdWVzdCh1cmwpOwor
CisgICAgcmV0dXJuIGZhbHNlOworfQorCitFeGNlcHRpb25PcjxSZWY8QXVkaW9CdWZmZXI+PiBX
ZWJLaXRBdWRpb0NvbnRleHQ6OmNyZWF0ZUJ1ZmZlcih1bnNpZ25lZCBudW1iZXJPZkNoYW5uZWxz
LCBzaXplX3QgbnVtYmVyT2ZGcmFtZXMsIGZsb2F0IHNhbXBsZVJhdGUpCit7CisgICAgYXV0byBh
dWRpb0J1ZmZlciA9IEF1ZGlvQnVmZmVyOjpjcmVhdGUobnVtYmVyT2ZDaGFubmVscywgbnVtYmVy
T2ZGcmFtZXMsIHNhbXBsZVJhdGUpOworICAgIGlmICghYXVkaW9CdWZmZXIpCisgICAgICAgIHJl
dHVybiBFeGNlcHRpb24geyBOb3RTdXBwb3J0ZWRFcnJvciB9OworICAgIHJldHVybiBhdWRpb0J1
ZmZlci5yZWxlYXNlTm9uTnVsbCgpOworfQorCitFeGNlcHRpb25PcjxSZWY8QXVkaW9CdWZmZXI+
PiBXZWJLaXRBdWRpb0NvbnRleHQ6OmNyZWF0ZUJ1ZmZlcihBcnJheUJ1ZmZlciYgYXJyYXlCdWZm
ZXIsIGJvb2wgbWl4VG9Nb25vKQoreworICAgIGF1dG8gYXVkaW9CdWZmZXIgPSBBdWRpb0J1ZmZl
cjo6Y3JlYXRlRnJvbUF1ZGlvRmlsZURhdGEoYXJyYXlCdWZmZXIuZGF0YSgpLCBhcnJheUJ1ZmZl
ci5ieXRlTGVuZ3RoKCksIG1peFRvTW9ubywgc2FtcGxlUmF0ZSgpKTsKKyAgICBpZiAoIWF1ZGlv
QnVmZmVyKQorICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgU3ludGF4RXJyb3IgfTsKKyAgICBy
ZXR1cm4gYXVkaW9CdWZmZXIucmVsZWFzZU5vbk51bGwoKTsKK30KKwordm9pZCBXZWJLaXRBdWRp
b0NvbnRleHQ6OmRlY29kZUF1ZGlvRGF0YShSZWY8QXJyYXlCdWZmZXI+JiYgYXVkaW9EYXRhLCBS
ZWZQdHI8QXVkaW9CdWZmZXJDYWxsYmFjaz4mJiBzdWNjZXNzQ2FsbGJhY2ssIFJlZlB0cjxBdWRp
b0J1ZmZlckNhbGxiYWNrPiYmIGVycm9yQ2FsbGJhY2spCit7CisgICAgaWYgKCFtX2F1ZGlvRGVj
b2RlcikKKyAgICAgICAgbV9hdWRpb0RlY29kZXIgPSBtYWtlVW5pcXVlPEFzeW5jQXVkaW9EZWNv
ZGVyPigpOworICAgIG1fYXVkaW9EZWNvZGVyLT5kZWNvZGVBc3luYyhXVEZNb3ZlKGF1ZGlvRGF0
YSksIHNhbXBsZVJhdGUoKSwgV1RGTW92ZShzdWNjZXNzQ2FsbGJhY2spLCBXVEZNb3ZlKGVycm9y
Q2FsbGJhY2spKTsKK30KKworRXhjZXB0aW9uT3I8UmVmPEF1ZGlvQnVmZmVyU291cmNlTm9kZT4+
IFdlYktpdEF1ZGlvQ29udGV4dDo6Y3JlYXRlQnVmZmVyU291cmNlKCkKK3sKKyAgICBBTFdBWVNf
TE9HKExPR0lERU5USUZJRVIpOworCisgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKworICAg
IGlmIChtX2lzU3RvcFNjaGVkdWxlZCkKKyAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IEludmFs
aWRTdGF0ZUVycm9yIH07CisKKyAgICBsYXp5SW5pdGlhbGl6ZSgpOworICAgIFJlZjxBdWRpb0J1
ZmZlclNvdXJjZU5vZGU+IG5vZGUgPSBBdWRpb0J1ZmZlclNvdXJjZU5vZGU6OmNyZWF0ZSgqdGhp
cywgc2FtcGxlUmF0ZSgpKTsKKworICAgIC8vIEJlY2F1c2UgdGhpcyBpcyBhbiBBdWRpb1NjaGVk
dWxlZFNvdXJjZU5vZGUsIHRoZSBjb250ZXh0IGtlZXBzIGEgcmVmZXJlbmNlIHVudGlsIGl0IGhh
cyBmaW5pc2hlZCBwbGF5aW5nLgorICAgIC8vIFdoZW4gdGhpcyBoYXBwZW5zLCBBdWRpb1NjaGVk
dWxlZFNvdXJjZU5vZGU6OmZpbmlzaCgpIGNhbGxzIFdlYktpdEF1ZGlvQ29udGV4dDo6bm90aWZ5
Tm9kZUZpbmlzaGVkUHJvY2Vzc2luZygpLgorICAgIHJlZk5vZGUobm9kZSk7CisKKyAgICByZXR1
cm4gbm9kZTsKK30KKworI2lmIEVOQUJMRShWSURFTykKKworRXhjZXB0aW9uT3I8UmVmPE1lZGlh
RWxlbWVudEF1ZGlvU291cmNlTm9kZT4+IFdlYktpdEF1ZGlvQ29udGV4dDo6Y3JlYXRlTWVkaWFF
bGVtZW50U291cmNlKEhUTUxNZWRpYUVsZW1lbnQmIG1lZGlhRWxlbWVudCkKK3sKKyAgICBBTFdB
WVNfTE9HKExPR0lERU5USUZJRVIpOworCisgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKwor
ICAgIGlmIChtX2lzU3RvcFNjaGVkdWxlZCB8fCBtZWRpYUVsZW1lbnQuYXVkaW9Tb3VyY2VOb2Rl
KCkpCisgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBJbnZhbGlkU3RhdGVFcnJvciB9OworCisg
ICAgbGF6eUluaXRpYWxpemUoKTsKKworICAgIGF1dG8gbm9kZSA9IE1lZGlhRWxlbWVudEF1ZGlv
U291cmNlTm9kZTo6Y3JlYXRlKCp0aGlzLCBtZWRpYUVsZW1lbnQpOworCisgICAgbWVkaWFFbGVt
ZW50LnNldEF1ZGlvU291cmNlTm9kZShub2RlLnB0cigpKTsKKworICAgIHJlZk5vZGUobm9kZS5n
ZXQoKSk7IC8vIGNvbnRleHQga2VlcHMgcmVmZXJlbmNlIHVudGlsIG5vZGUgaXMgZGlzY29ubmVj
dGVkCisgICAgcmV0dXJuIG5vZGU7Cit9CisKKyNlbmRpZgorCisjaWYgRU5BQkxFKE1FRElBX1NU
UkVBTSkKKworRXhjZXB0aW9uT3I8UmVmPE1lZGlhU3RyZWFtQXVkaW9Tb3VyY2VOb2RlPj4gV2Vi
S2l0QXVkaW9Db250ZXh0OjpjcmVhdGVNZWRpYVN0cmVhbVNvdXJjZShNZWRpYVN0cmVhbSYgbWVk
aWFTdHJlYW0pCit7CisgICAgQUxXQVlTX0xPRyhMT0dJREVOVElGSUVSKTsKKworICAgIEFTU0VS
VChpc01haW5UaHJlYWQoKSk7CisKKyAgICBpZiAobV9pc1N0b3BTY2hlZHVsZWQpCisgICAgICAg
IHJldHVybiBFeGNlcHRpb24geyBJbnZhbGlkU3RhdGVFcnJvciB9OworCisgICAgYXV0byBhdWRp
b1RyYWNrcyA9IG1lZGlhU3RyZWFtLmdldEF1ZGlvVHJhY2tzKCk7CisgICAgaWYgKGF1ZGlvVHJh
Y2tzLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IEludmFsaWRTdGF0ZUVy
cm9yIH07CisKKyAgICBNZWRpYVN0cmVhbVRyYWNrKiBwcm92aWRlclRyYWNrID0gbnVsbHB0cjsK
KyAgICBmb3IgKGF1dG8mIHRyYWNrIDogYXVkaW9UcmFja3MpIHsKKyAgICAgICAgaWYgKHRyYWNr
LT5hdWRpb1NvdXJjZVByb3ZpZGVyKCkpIHsKKyAgICAgICAgICAgIHByb3ZpZGVyVHJhY2sgPSB0
cmFjay5nZXQoKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgfQorICAgIGlm
ICghcHJvdmlkZXJUcmFjaykKKyAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IEludmFsaWRTdGF0
ZUVycm9yIH07CisKKyAgICBsYXp5SW5pdGlhbGl6ZSgpOworCisgICAgYXV0byBub2RlID0gTWVk
aWFTdHJlYW1BdWRpb1NvdXJjZU5vZGU6OmNyZWF0ZSgqdGhpcywgbWVkaWFTdHJlYW0sICpwcm92
aWRlclRyYWNrKTsKKyAgICBub2RlLT5zZXRGb3JtYXQoMiwgc2FtcGxlUmF0ZSgpKTsKKworICAg
IHJlZk5vZGUobm9kZSk7IC8vIGNvbnRleHQga2VlcHMgcmVmZXJlbmNlIHVudGlsIG5vZGUgaXMg
ZGlzY29ubmVjdGVkCisgICAgcmV0dXJuIG5vZGU7Cit9CisKK0V4Y2VwdGlvbk9yPFJlZjxNZWRp
YVN0cmVhbUF1ZGlvRGVzdGluYXRpb25Ob2RlPj4gV2ViS2l0QXVkaW9Db250ZXh0OjpjcmVhdGVN
ZWRpYVN0cmVhbURlc3RpbmF0aW9uKCkKK3sKKyAgICBpZiAobV9pc1N0b3BTY2hlZHVsZWQpCisg
ICAgICAgIHJldHVybiBFeGNlcHRpb24geyBJbnZhbGlkU3RhdGVFcnJvciB9OworCisgICAgLy8g
RklYTUU6IEFkZCBzdXBwb3J0IGZvciBhbiBvcHRpb25hbCBhcmd1bWVudCB3aGljaCBzcGVjaWZp
ZXMgdGhlIG51bWJlciBvZiBjaGFubmVscy4KKyAgICAvLyBGSVhNRTogVGhlIGRlZmF1bHQgc2hv
dWxkIHByb2JhYmx5IGJlIHN0ZXJlbyBpbnN0ZWFkIG9mIG1vbm8uCisgICAgcmV0dXJuIE1lZGlh
U3RyZWFtQXVkaW9EZXN0aW5hdGlvbk5vZGU6OmNyZWF0ZSgqdGhpcywgMSk7Cit9CisKKyNlbmRp
ZgorCitFeGNlcHRpb25PcjxSZWY8U2NyaXB0UHJvY2Vzc29yTm9kZT4+IFdlYktpdEF1ZGlvQ29u
dGV4dDo6Y3JlYXRlU2NyaXB0UHJvY2Vzc29yKHNpemVfdCBidWZmZXJTaXplLCBzaXplX3QgbnVt
YmVyT2ZJbnB1dENoYW5uZWxzLCBzaXplX3QgbnVtYmVyT2ZPdXRwdXRDaGFubmVscykKK3sKKyAg
ICBBTFdBWVNfTE9HKExPR0lERU5USUZJRVIpOworCisgICAgQVNTRVJUKGlzTWFpblRocmVhZCgp
KTsKKworICAgIGlmIChtX2lzU3RvcFNjaGVkdWxlZCkKKyAgICAgICAgcmV0dXJuIEV4Y2VwdGlv
biB7IEludmFsaWRTdGF0ZUVycm9yIH07CisKKyAgICBsYXp5SW5pdGlhbGl6ZSgpOworCisgICAg
Ly8gVzNDIEVkaXRvcidzIERyYWZ0IDA2IEp1bmUgMjAxNworICAgIC8vICBodHRwczovL3dlYmF1
ZGlvLmdpdGh1Yi5pby93ZWItYXVkaW8tYXBpLyN3aWRsLUJhc2VBdWRpb0NvbnRleHQtY3JlYXRl
U2NyaXB0UHJvY2Vzc29yLVNjcmlwdFByb2Nlc3Nvck5vZGUtdW5zaWduZWQtbG9uZy1idWZmZXJT
aXplLXVuc2lnbmVkLWxvbmctbnVtYmVyT2ZJbnB1dENoYW5uZWxzLXVuc2lnbmVkLWxvbmctbnVt
YmVyT2ZPdXRwdXRDaGFubmVscworCisgICAgLy8gVGhlIGJ1ZmZlclNpemUgcGFyYW1ldGVyIGRl
dGVybWluZXMgdGhlIGJ1ZmZlciBzaXplIGluIHVuaXRzIG9mIHNhbXBsZS1mcmFtZXMuIElmIGl0
J3Mgbm90IHBhc3NlZCBpbiwKKyAgICAvLyBvciBpZiB0aGUgdmFsdWUgaXMgMCwgdGhlbiB0aGUg
aW1wbGVtZW50YXRpb24gd2lsbCBjaG9vc2UgdGhlIGJlc3QgYnVmZmVyIHNpemUgZm9yIHRoZSBn
aXZlbiBlbnZpcm9ubWVudCwKKyAgICAvLyB3aGljaCB3aWxsIGJlIGNvbnN0YW50IHBvd2VyIG9m
IDIgdGhyb3VnaG91dCB0aGUgbGlmZXRpbWUgb2YgdGhlIG5vZGUuIC4uLiBJZiB0aGUgdmFsdWUg
b2YgdGhpcyBwYXJhbWV0ZXIKKyAgICAvLyBpcyBub3Qgb25lIG9mIHRoZSBhbGxvd2VkIHBvd2Vy
LW9mLTIgdmFsdWVzIGxpc3RlZCBhYm92ZSwgYW4gSW5kZXhTaXplRXJyb3IgbXVzdCBiZSB0aHJv
d24uCisgICAgc3dpdGNoIChidWZmZXJTaXplKSB7CisgICAgY2FzZSAwOgorI2lmIFVTRShBVURJ
T19TRVNTSU9OKQorICAgICAgICAvLyBQaWNrIGEgdmFsdWUgYmV0d2VlbiAyNTYgKDJeOCkgYW5k
IDE2Mzg0ICgyXjE0KSwgYmFzZWQgb24gdGhlIGJ1ZmZlciBzaXplIG9mIHRoZSBjdXJyZW50IEF1
ZGlvU2Vzc2lvbjoKKyAgICAgICAgYnVmZmVyU2l6ZSA9IDEgPDwgc3RkOjptYXg8c2l6ZV90Pig4
LCBzdGQ6Om1pbjxzaXplX3Q+KDE0LCBzdGQ6OmxvZzIoQXVkaW9TZXNzaW9uOjpzaGFyZWRTZXNz
aW9uKCkuYnVmZmVyU2l6ZSgpKSkpOworI2Vsc2UKKyAgICAgICAgYnVmZmVyU2l6ZSA9IDIwNDg7
CisjZW5kaWYKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSAyNTY6CisgICAgY2FzZSA1MTI6Cisg
ICAgY2FzZSAxMDI0OgorICAgIGNhc2UgMjA0ODoKKyAgICBjYXNlIDQwOTY6CisgICAgY2FzZSA4
MTkyOgorICAgIGNhc2UgMTYzODQ6CisgICAgICAgIGJyZWFrOworICAgIGRlZmF1bHQ6CisgICAg
ICAgIHJldHVybiBFeGNlcHRpb24geyBJbmRleFNpemVFcnJvciB9OworICAgIH0KKworICAgIC8v
IEFuIEluZGV4U2l6ZUVycm9yIGV4Y2VwdGlvbiBtdXN0IGJlIHRocm93biBpZiBidWZmZXJTaXpl
IG9yIG51bWJlck9mSW5wdXRDaGFubmVscyBvciBudW1iZXJPZk91dHB1dENoYW5uZWxzCisgICAg
Ly8gYXJlIG91dHNpZGUgdGhlIHZhbGlkIHJhbmdlLiBJdCBpcyBpbnZhbGlkIGZvciBib3RoIG51
bWJlck9mSW5wdXRDaGFubmVscyBhbmQgbnVtYmVyT2ZPdXRwdXRDaGFubmVscyB0byBiZSB6ZXJv
LgorICAgIC8vIEluIHRoaXMgY2FzZSBhbiBJbmRleFNpemVFcnJvciBtdXN0IGJlIHRocm93bi4K
KworICAgIGlmICghbnVtYmVyT2ZJbnB1dENoYW5uZWxzICYmICFudW1iZXJPZk91dHB1dENoYW5u
ZWxzKQorICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgTm90U3VwcG9ydGVkRXJyb3IgfTsKKwor
ICAgIC8vIFRoaXMgcGFyYW1ldGVyIFtudW1iZXJPZklucHV0Q2hhbm5lbHNdIGRldGVybWluZXMg
dGhlIG51bWJlciBvZiBjaGFubmVscyBmb3IgdGhpcyBub2RlJ3MgaW5wdXQuIFZhbHVlcyBvZgor
ICAgIC8vIHVwIHRvIDMyIG11c3QgYmUgc3VwcG9ydGVkLiBBIE5vdFN1cHBvcnRlZEVycm9yIG11
c3QgYmUgdGhyb3duIGlmIHRoZSBudW1iZXIgb2YgY2hhbm5lbHMgaXMgbm90IHN1cHBvcnRlZC4K
KworICAgIGlmIChudW1iZXJPZklucHV0Q2hhbm5lbHMgPiBtYXhOdW1iZXJPZkNoYW5uZWxzKCkp
CisgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBOb3RTdXBwb3J0ZWRFcnJvciB9OworCisgICAg
Ly8gVGhpcyBwYXJhbWV0ZXIgW251bWJlck9mT3V0cHV0Q2hhbm5lbHNdIGRldGVybWluZXMgdGhl
IG51bWJlciBvZiBjaGFubmVscyBmb3IgdGhpcyBub2RlJ3Mgb3V0cHV0LiBWYWx1ZXMgb2YKKyAg
ICAvLyB1cCB0byAzMiBtdXN0IGJlIHN1cHBvcnRlZC4gQSBOb3RTdXBwb3J0ZWRFcnJvciBtdXN0
IGJlIHRocm93biBpZiB0aGUgbnVtYmVyIG9mIGNoYW5uZWxzIGlzIG5vdCBzdXBwb3J0ZWQuCisK
KyAgICBpZiAobnVtYmVyT2ZPdXRwdXRDaGFubmVscyA+IG1heE51bWJlck9mQ2hhbm5lbHMoKSkK
KyAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IE5vdFN1cHBvcnRlZEVycm9yIH07CisKKyAgICBh
dXRvIG5vZGUgPSBTY3JpcHRQcm9jZXNzb3JOb2RlOjpjcmVhdGUoKnRoaXMsIHNhbXBsZVJhdGUo
KSwgYnVmZmVyU2l6ZSwgbnVtYmVyT2ZJbnB1dENoYW5uZWxzLCBudW1iZXJPZk91dHB1dENoYW5u
ZWxzKTsKKworICAgIHJlZk5vZGUobm9kZSk7IC8vIGNvbnRleHQga2VlcHMgcmVmZXJlbmNlIHVu
dGlsIHdlIHN0b3AgbWFraW5nIGphdmFzY3JpcHQgcmVuZGVyaW5nIGNhbGxiYWNrcworICAgIHJl
dHVybiBub2RlOworfQorCitFeGNlcHRpb25PcjxSZWY8QmlxdWFkRmlsdGVyTm9kZT4+IFdlYktp
dEF1ZGlvQ29udGV4dDo6Y3JlYXRlQmlxdWFkRmlsdGVyKCkKK3sKKyAgICBBTFdBWVNfTE9HKExP
R0lERU5USUZJRVIpOworCisgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKyAgICBpZiAobV9p
c1N0b3BTY2hlZHVsZWQpCisgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBJbnZhbGlkU3RhdGVF
cnJvciB9OworCisgICAgbGF6eUluaXRpYWxpemUoKTsKKworICAgIHJldHVybiBCaXF1YWRGaWx0
ZXJOb2RlOjpjcmVhdGUoKnRoaXMsIHNhbXBsZVJhdGUoKSk7Cit9CisKK0V4Y2VwdGlvbk9yPFJl
ZjxXYXZlU2hhcGVyTm9kZT4+IFdlYktpdEF1ZGlvQ29udGV4dDo6Y3JlYXRlV2F2ZVNoYXBlcigp
Cit7CisgICAgQUxXQVlTX0xPRyhMT0dJREVOVElGSUVSKTsKKworICAgIEFTU0VSVChpc01haW5U
aHJlYWQoKSk7CisgICAgaWYgKG1faXNTdG9wU2NoZWR1bGVkKQorICAgICAgICByZXR1cm4gRXhj
ZXB0aW9uIHsgSW52YWxpZFN0YXRlRXJyb3IgfTsKKworICAgIGxhenlJbml0aWFsaXplKCk7Cisg
ICAgcmV0dXJuIFdhdmVTaGFwZXJOb2RlOjpjcmVhdGUoKnRoaXMpOworfQorCitFeGNlcHRpb25P
cjxSZWY8V2ViS2l0QXVkaW9QYW5uZXJOb2RlPj4gV2ViS2l0QXVkaW9Db250ZXh0OjpjcmVhdGVQ
YW5uZXIoKQoreworICAgIEFMV0FZU19MT0coTE9HSURFTlRJRklFUik7CisKKyAgICBBU1NFUlQo
aXNNYWluVGhyZWFkKCkpOworICAgIGlmIChtX2lzU3RvcFNjaGVkdWxlZCkKKyAgICAgICAgcmV0
dXJuIEV4Y2VwdGlvbiB7IEludmFsaWRTdGF0ZUVycm9yIH07CisKKyAgICBsYXp5SW5pdGlhbGl6
ZSgpOworICAgIHJldHVybiBXZWJLaXRBdWRpb1Bhbm5lck5vZGU6OmNyZWF0ZSgqdGhpcywgc2Ft
cGxlUmF0ZSgpKTsKK30KKworRXhjZXB0aW9uT3I8UmVmPENvbnZvbHZlck5vZGU+PiBXZWJLaXRB
dWRpb0NvbnRleHQ6OmNyZWF0ZUNvbnZvbHZlcigpCit7CisgICAgQUxXQVlTX0xPRyhMT0dJREVO
VElGSUVSKTsKKworICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisgICAgaWYgKG1faXNTdG9w
U2NoZWR1bGVkKQorICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgSW52YWxpZFN0YXRlRXJyb3Ig
fTsKKworICAgIGxhenlJbml0aWFsaXplKCk7CisgICAgcmV0dXJuIENvbnZvbHZlck5vZGU6OmNy
ZWF0ZSgqdGhpcywgc2FtcGxlUmF0ZSgpKTsKK30KKworRXhjZXB0aW9uT3I8UmVmPER5bmFtaWNz
Q29tcHJlc3Nvck5vZGU+PiBXZWJLaXRBdWRpb0NvbnRleHQ6OmNyZWF0ZUR5bmFtaWNzQ29tcHJl
c3NvcigpCit7CisgICAgQUxXQVlTX0xPRyhMT0dJREVOVElGSUVSKTsKKworICAgIEFTU0VSVChp
c01haW5UaHJlYWQoKSk7CisgICAgaWYgKG1faXNTdG9wU2NoZWR1bGVkKQorICAgICAgICByZXR1
cm4gRXhjZXB0aW9uIHsgSW52YWxpZFN0YXRlRXJyb3IgfTsKKworICAgIGxhenlJbml0aWFsaXpl
KCk7CisgICAgcmV0dXJuIER5bmFtaWNzQ29tcHJlc3Nvck5vZGU6OmNyZWF0ZSgqdGhpcywgc2Ft
cGxlUmF0ZSgpKTsKK30KKworRXhjZXB0aW9uT3I8UmVmPEFuYWx5c2VyTm9kZT4+IFdlYktpdEF1
ZGlvQ29udGV4dDo6Y3JlYXRlQW5hbHlzZXIoKQoreworICAgIEFMV0FZU19MT0coTE9HSURFTlRJ
RklFUik7CisKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAgIGlmIChtX2lzU3RvcFNj
aGVkdWxlZCkKKyAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IEludmFsaWRTdGF0ZUVycm9yIH07
CisKKyAgICBsYXp5SW5pdGlhbGl6ZSgpOworICAgIHJldHVybiBBbmFseXNlck5vZGU6OmNyZWF0
ZSgqdGhpcywgc2FtcGxlUmF0ZSgpKTsKK30KKworRXhjZXB0aW9uT3I8UmVmPEdhaW5Ob2RlPj4g
V2ViS2l0QXVkaW9Db250ZXh0OjpjcmVhdGVHYWluKCkKK3sKKyAgICBBTFdBWVNfTE9HKExPR0lE
RU5USUZJRVIpOworCisgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKyAgICBpZiAobV9pc1N0
b3BTY2hlZHVsZWQpCisgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBJbnZhbGlkU3RhdGVFcnJv
ciB9OworCisgICAgbGF6eUluaXRpYWxpemUoKTsKKyAgICByZXR1cm4gR2Fpbk5vZGU6OmNyZWF0
ZSgqdGhpcywgc2FtcGxlUmF0ZSgpKTsKK30KKworRXhjZXB0aW9uT3I8UmVmPERlbGF5Tm9kZT4+
IFdlYktpdEF1ZGlvQ29udGV4dDo6Y3JlYXRlRGVsYXkoZG91YmxlIG1heERlbGF5VGltZSkKK3sK
KyAgICBBTFdBWVNfTE9HKExPR0lERU5USUZJRVIpOworCisgICAgQVNTRVJUKGlzTWFpblRocmVh
ZCgpKTsKKyAgICBpZiAobV9pc1N0b3BTY2hlZHVsZWQpCisgICAgICAgIHJldHVybiBFeGNlcHRp
b24geyBJbnZhbGlkU3RhdGVFcnJvciB9OworCisgICAgbGF6eUluaXRpYWxpemUoKTsKKyAgICBy
ZXR1cm4gRGVsYXlOb2RlOjpjcmVhdGUoKnRoaXMsIHNhbXBsZVJhdGUoKSwgbWF4RGVsYXlUaW1l
KTsKK30KKworRXhjZXB0aW9uT3I8UmVmPENoYW5uZWxTcGxpdHRlck5vZGU+PiBXZWJLaXRBdWRp
b0NvbnRleHQ6OmNyZWF0ZUNoYW5uZWxTcGxpdHRlcihzaXplX3QgbnVtYmVyT2ZPdXRwdXRzKQor
eworICAgIEFMV0FZU19MT0coTE9HSURFTlRJRklFUik7CisKKyAgICBBU1NFUlQoaXNNYWluVGhy
ZWFkKCkpOworICAgIGlmIChtX2lzU3RvcFNjaGVkdWxlZCkKKyAgICAgICAgcmV0dXJuIEV4Y2Vw
dGlvbiB7IEludmFsaWRTdGF0ZUVycm9yIH07CisKKyAgICBsYXp5SW5pdGlhbGl6ZSgpOworICAg
IGF1dG8gbm9kZSA9IENoYW5uZWxTcGxpdHRlck5vZGU6OmNyZWF0ZSgqdGhpcywgc2FtcGxlUmF0
ZSgpLCBudW1iZXJPZk91dHB1dHMpOworICAgIGlmICghbm9kZSkKKyAgICAgICAgcmV0dXJuIEV4
Y2VwdGlvbiB7IEluZGV4U2l6ZUVycm9yIH07CisgICAgcmV0dXJuIG5vZGUucmVsZWFzZU5vbk51
bGwoKTsKK30KKworRXhjZXB0aW9uT3I8UmVmPENoYW5uZWxNZXJnZXJOb2RlPj4gV2ViS2l0QXVk
aW9Db250ZXh0OjpjcmVhdGVDaGFubmVsTWVyZ2VyKHNpemVfdCBudW1iZXJPZklucHV0cykKK3sK
KyAgICBBTFdBWVNfTE9HKExPR0lERU5USUZJRVIpOworCisgICAgQVNTRVJUKGlzTWFpblRocmVh
ZCgpKTsKKyAgICBpZiAobV9pc1N0b3BTY2hlZHVsZWQpCisgICAgICAgIHJldHVybiBFeGNlcHRp
b24geyBJbnZhbGlkU3RhdGVFcnJvciB9OworCisgICAgbGF6eUluaXRpYWxpemUoKTsKKyAgICBh
dXRvIG5vZGUgPSBDaGFubmVsTWVyZ2VyTm9kZTo6Y3JlYXRlKCp0aGlzLCBzYW1wbGVSYXRlKCks
IG51bWJlck9mSW5wdXRzKTsKKyAgICBpZiAoIW5vZGUpCisgICAgICAgIHJldHVybiBFeGNlcHRp
b24geyBJbmRleFNpemVFcnJvciB9OworICAgIHJldHVybiBub2RlLnJlbGVhc2VOb25OdWxsKCk7
Cit9CisKK0V4Y2VwdGlvbk9yPFJlZjxPc2NpbGxhdG9yTm9kZT4+IFdlYktpdEF1ZGlvQ29udGV4
dDo6Y3JlYXRlT3NjaWxsYXRvcigpCit7CisgICAgQUxXQVlTX0xPRyhMT0dJREVOVElGSUVSKTsK
KworICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisgICAgaWYgKG1faXNTdG9wU2NoZWR1bGVk
KQorICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgSW52YWxpZFN0YXRlRXJyb3IgfTsKKworICAg
IGxhenlJbml0aWFsaXplKCk7CisKKyAgICBSZWY8T3NjaWxsYXRvck5vZGU+IG5vZGUgPSBPc2Np
bGxhdG9yTm9kZTo6Y3JlYXRlKCp0aGlzLCBzYW1wbGVSYXRlKCkpOworCisgICAgLy8gQmVjYXVz
ZSB0aGlzIGlzIGFuIEF1ZGlvU2NoZWR1bGVkU291cmNlTm9kZSwgdGhlIGNvbnRleHQga2VlcHMg
YSByZWZlcmVuY2UgdW50aWwgaXQgaGFzIGZpbmlzaGVkIHBsYXlpbmcuCisgICAgLy8gV2hlbiB0
aGlzIGhhcHBlbnMsIEF1ZGlvU2NoZWR1bGVkU291cmNlTm9kZTo6ZmluaXNoKCkgY2FsbHMgV2Vi
S2l0QXVkaW9Db250ZXh0Ojpub3RpZnlOb2RlRmluaXNoZWRQcm9jZXNzaW5nKCkuCisgICAgcmVm
Tm9kZShub2RlKTsKKworICAgIHJldHVybiBub2RlOworfQorCitFeGNlcHRpb25PcjxSZWY8UGVy
aW9kaWNXYXZlPj4gV2ViS2l0QXVkaW9Db250ZXh0OjpjcmVhdGVQZXJpb2RpY1dhdmUoRmxvYXQz
MkFycmF5JiByZWFsLCBGbG9hdDMyQXJyYXkmIGltYWdpbmFyeSkKK3sKKyAgICBBTFdBWVNfTE9H
KExPR0lERU5USUZJRVIpOworCisgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKyAgICBpZiAo
bV9pc1N0b3BTY2hlZHVsZWQpCisgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBJbnZhbGlkU3Rh
dGVFcnJvciB9OworCisgICAgaWYgKHJlYWwubGVuZ3RoKCkgIT0gaW1hZ2luYXJ5Lmxlbmd0aCgp
IHx8IChyZWFsLmxlbmd0aCgpID4gTWF4UGVyaW9kaWNXYXZlTGVuZ3RoKSB8fCAhcmVhbC5sZW5n
dGgoKSkKKyAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IEluZGV4U2l6ZUVycm9yIH07CisgICAg
bGF6eUluaXRpYWxpemUoKTsKKyAgICByZXR1cm4gUGVyaW9kaWNXYXZlOjpjcmVhdGUoc2FtcGxl
UmF0ZSgpLCByZWFsLCBpbWFnaW5hcnkpOworfQorCit2b2lkIFdlYktpdEF1ZGlvQ29udGV4dDo6
bm90aWZ5Tm9kZUZpbmlzaGVkUHJvY2Vzc2luZyhBdWRpb05vZGUqIG5vZGUpCit7CisgICAgQVNT
RVJUKGlzQXVkaW9UaHJlYWQoKSk7CisgICAgbV9maW5pc2hlZE5vZGVzLmFwcGVuZChub2RlKTsK
K30KKwordm9pZCBXZWJLaXRBdWRpb0NvbnRleHQ6OmRlcmVmRmluaXNoZWRTb3VyY2VOb2Rlcygp
Cit7CisgICAgQVNTRVJUKGlzR3JhcGhPd25lcigpKTsKKyAgICBBU1NFUlQoaXNBdWRpb1RocmVh
ZCgpIHx8IGlzQXVkaW9UaHJlYWRGaW5pc2hlZCgpKTsKKyAgICBmb3IgKGF1dG8mIG5vZGUgOiBt
X2ZpbmlzaGVkTm9kZXMpCisgICAgICAgIGRlcmVmTm9kZSgqbm9kZSk7CisKKyAgICBtX2Zpbmlz
aGVkTm9kZXMuY2xlYXIoKTsKK30KKwordm9pZCBXZWJLaXRBdWRpb0NvbnRleHQ6OnJlZk5vZGUo
QXVkaW9Ob2RlJiBub2RlKQoreworICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisgICAgQXV0
b0xvY2tlciBsb2NrZXIoKnRoaXMpOworCisgICAgbm9kZS5yZWYoQXVkaW9Ob2RlOjpSZWZUeXBl
Q29ubmVjdGlvbik7CisgICAgbV9yZWZlcmVuY2VkTm9kZXMuYXBwZW5kKCZub2RlKTsKK30KKwor
dm9pZCBXZWJLaXRBdWRpb0NvbnRleHQ6OmRlcmVmTm9kZShBdWRpb05vZGUmIG5vZGUpCit7Cisg
ICAgQVNTRVJUKGlzR3JhcGhPd25lcigpKTsKKworICAgIG5vZGUuZGVyZWYoQXVkaW9Ob2RlOjpS
ZWZUeXBlQ29ubmVjdGlvbik7CisKKyAgICBBU1NFUlQobV9yZWZlcmVuY2VkTm9kZXMuY29udGFp
bnMoJm5vZGUpKTsKKyAgICBtX3JlZmVyZW5jZWROb2Rlcy5yZW1vdmVGaXJzdCgmbm9kZSk7Cit9
CisKK3ZvaWQgV2ViS2l0QXVkaW9Db250ZXh0OjpkZXJlZlVuZmluaXNoZWRTb3VyY2VOb2Rlcygp
Cit7CisgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpICYmIGlzQXVkaW9UaHJlYWRGaW5pc2hlZCgp
KTsKKyAgICBmb3IgKGF1dG8mIG5vZGUgOiBtX3JlZmVyZW5jZWROb2RlcykKKyAgICAgICAgbm9k
ZS0+ZGVyZWYoQXVkaW9Ob2RlOjpSZWZUeXBlQ29ubmVjdGlvbik7CisKKyAgICBtX3JlZmVyZW5j
ZWROb2Rlcy5jbGVhcigpOworfQorCit2b2lkIFdlYktpdEF1ZGlvQ29udGV4dDo6bG9jayhib29s
JiBtdXN0UmVsZWFzZUxvY2spCit7CisgICAgLy8gRG9uJ3QgYWxsb3cgcmVndWxhciBsb2NrIGlu
IHJlYWwtdGltZSBhdWRpbyB0aHJlYWQuCisgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKwor
ICAgIFRocmVhZCYgdGhpc1RocmVhZCA9IFRocmVhZDo6Y3VycmVudCgpOworCisgICAgaWYgKCZ0
aGlzVGhyZWFkID09IG1fZ3JhcGhPd25lclRocmVhZCkgeworICAgICAgICAvLyBXZSBhbHJlYWR5
IGhhdmUgdGhlIGxvY2suCisgICAgICAgIG11c3RSZWxlYXNlTG9jayA9IGZhbHNlOworICAgIH0g
ZWxzZSB7CisgICAgICAgIC8vIEFjcXVpcmUgdGhlIGxvY2suCisgICAgICAgIG1fY29udGV4dEdy
YXBoTXV0ZXgubG9jaygpOworICAgICAgICBtX2dyYXBoT3duZXJUaHJlYWQgPSAmdGhpc1RocmVh
ZDsKKyAgICAgICAgbXVzdFJlbGVhc2VMb2NrID0gdHJ1ZTsKKyAgICB9Cit9CisKK2Jvb2wgV2Vi
S2l0QXVkaW9Db250ZXh0Ojp0cnlMb2NrKGJvb2wmIG11c3RSZWxlYXNlTG9jaykKK3sKKyAgICBU
aHJlYWQmIHRoaXNUaHJlYWQgPSBUaHJlYWQ6OmN1cnJlbnQoKTsKKyAgICBib29sIGlzQXVkaW9U
aHJlYWQgPSAmdGhpc1RocmVhZCA9PSBhdWRpb1RocmVhZCgpOworCisgICAgLy8gVHJ5IHRvIGNh
dGNoIGNhc2VzIG9mIHVzaW5nIHRyeSBsb2NrIG9uIG1haW4gdGhyZWFkIC0gaXQgc2hvdWxkIHVz
ZSByZWd1bGFyIGxvY2suCisgICAgQVNTRVJUKGlzQXVkaW9UaHJlYWQgfHwgaXNBdWRpb1RocmVh
ZEZpbmlzaGVkKCkpOworCisgICAgaWYgKCFpc0F1ZGlvVGhyZWFkKSB7CisgICAgICAgIC8vIElu
IHJlbGVhc2UgYnVpbGQgdHJlYXQgdHJ5TG9jaygpIGFzIGxvY2soKSAoc2luY2UgYWJvdmUgQVNT
RVJUKGlzQXVkaW9UaHJlYWQpIG5ldmVyIGZpcmVzKSAtIHRoaXMgaXMgdGhlIGJlc3Qgd2UgY2Fu
IGRvLgorICAgICAgICBsb2NrKG11c3RSZWxlYXNlTG9jayk7CisgICAgICAgIHJldHVybiB0cnVl
OworICAgIH0KKworICAgIGJvb2wgaGFzTG9jazsKKworICAgIGlmICgmdGhpc1RocmVhZCA9PSBt
X2dyYXBoT3duZXJUaHJlYWQpIHsKKyAgICAgICAgLy8gVGhyZWFkIGFscmVhZHkgaGFzIHRoZSBs
b2NrLgorICAgICAgICBoYXNMb2NrID0gdHJ1ZTsKKyAgICAgICAgbXVzdFJlbGVhc2VMb2NrID0g
ZmFsc2U7CisgICAgfSBlbHNlIHsKKyAgICAgICAgLy8gRG9uJ3QgYWxyZWFkeSBoYXZlIHRoZSBs
b2NrIC0gdHJ5IHRvIGFjcXVpcmUgaXQuCisgICAgICAgIGhhc0xvY2sgPSBtX2NvbnRleHRHcmFw
aE11dGV4LnRyeUxvY2soKTsKKworICAgICAgICBpZiAoaGFzTG9jaykKKyAgICAgICAgICAgIG1f
Z3JhcGhPd25lclRocmVhZCA9ICZ0aGlzVGhyZWFkOworCisgICAgICAgIG11c3RSZWxlYXNlTG9j
ayA9IGhhc0xvY2s7CisgICAgfQorCisgICAgcmV0dXJuIGhhc0xvY2s7Cit9CisKK3ZvaWQgV2Vi
S2l0QXVkaW9Db250ZXh0Ojp1bmxvY2soKQoreworICAgIEFTU0VSVChtX2dyYXBoT3duZXJUaHJl
YWQgPT0gJlRocmVhZDo6Y3VycmVudCgpKTsKKworICAgIG1fZ3JhcGhPd25lclRocmVhZCA9IG51
bGxwdHI7CisgICAgbV9jb250ZXh0R3JhcGhNdXRleC51bmxvY2soKTsKK30KKworYm9vbCBXZWJL
aXRBdWRpb0NvbnRleHQ6OmlzQXVkaW9UaHJlYWQoKSBjb25zdAoreworICAgIHJldHVybiBtX2F1
ZGlvVGhyZWFkID09ICZUaHJlYWQ6OmN1cnJlbnQoKTsKK30KKworYm9vbCBXZWJLaXRBdWRpb0Nv
bnRleHQ6OmlzR3JhcGhPd25lcigpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fZ3JhcGhPd25lclRo
cmVhZCA9PSAmVGhyZWFkOjpjdXJyZW50KCk7Cit9CisKK3ZvaWQgV2ViS2l0QXVkaW9Db250ZXh0
OjphZGREZWZlcnJlZEZpbmlzaERlcmVmKEF1ZGlvTm9kZSogbm9kZSkKK3sKKyAgICBBU1NFUlQo
aXNBdWRpb1RocmVhZCgpKTsKKyAgICBtX2RlZmVycmVkRmluaXNoRGVyZWZMaXN0LmFwcGVuZChu
b2RlKTsKK30KKwordm9pZCBXZWJLaXRBdWRpb0NvbnRleHQ6OmhhbmRsZVByZVJlbmRlclRhc2tz
KCkKK3sKKyAgICBBU1NFUlQoaXNBdWRpb1RocmVhZCgpKTsKKworICAgIC8vIEF0IHRoZSBiZWdp
bm5pbmcgb2YgZXZlcnkgcmVuZGVyIHF1YW50dW0sIHRyeSB0byB1cGRhdGUgdGhlIGludGVybmFs
IHJlbmRlcmluZyBncmFwaCBzdGF0ZSAoZnJvbSBtYWluIHRocmVhZCBjaGFuZ2VzKS4KKyAgICAv
LyBJdCdzIE9LIGlmIHRoZSB0cnlMb2NrKCkgZmFpbHMsIHdlJ2xsIGp1c3QgdGFrZSBzbGlnaHRs
eSBsb25nZXIgdG8gcGljayB1cCB0aGUgY2hhbmdlcy4KKyAgICBib29sIG11c3RSZWxlYXNlTG9j
azsKKyAgICBpZiAodHJ5TG9jayhtdXN0UmVsZWFzZUxvY2spKSB7CisgICAgICAgIC8vIEZpeHVw
IHRoZSBzdGF0ZSBvZiBhbnkgZGlydHkgQXVkaW9TdW1taW5nSnVuY3Rpb25zIGFuZCBBdWRpb05v
ZGVPdXRwdXRzLgorICAgICAgICBoYW5kbGVEaXJ0eUF1ZGlvU3VtbWluZ0p1bmN0aW9ucygpOwor
ICAgICAgICBoYW5kbGVEaXJ0eUF1ZGlvTm9kZU91dHB1dHMoKTsKKworICAgICAgICB1cGRhdGVB
dXRvbWF0aWNQdWxsTm9kZXMoKTsKKworICAgICAgICBpZiAobXVzdFJlbGVhc2VMb2NrKQorICAg
ICAgICAgICAgdW5sb2NrKCk7CisgICAgfQorfQorCit2b2lkIFdlYktpdEF1ZGlvQ29udGV4dDo6
aGFuZGxlUG9zdFJlbmRlclRhc2tzKCkKK3sKKyAgICBBU1NFUlQoaXNBdWRpb1RocmVhZCgpKTsK
KworICAgIC8vIE11c3QgdXNlIGEgdHJ5TG9jaygpIGhlcmUgdG9vLiBEb24ndCB3b3JyeSwgdGhl
IGxvY2sgd2lsbCB2ZXJ5IHJhcmVseSBiZSBjb250ZW5kZWQgYW5kIHRoaXMgbWV0aG9kIGlzIGNh
bGxlZCBmcmVxdWVudGx5LgorICAgIC8vIFRoZSB3b3JzdCB0aGF0IGNhbiBoYXBwZW4gaXMgdGhh
dCB0aGVyZSB3aWxsIGJlIHNvbWUgbm9kZXMgd2hpY2ggd2lsbCB0YWtlIHNsaWdodGx5IGxvbmdl
ciB0aGFuIHVzdWFsIHRvIGJlIGRlbGV0ZWQgb3IgcmVtb3ZlZAorICAgIC8vIGZyb20gdGhlIHJl
bmRlciBncmFwaCAoaW4gd2hpY2ggY2FzZSB0aGV5J2xsIHJlbmRlciBzaWxlbmNlKS4KKyAgICBi
b29sIG11c3RSZWxlYXNlTG9jazsKKyAgICBpZiAodHJ5TG9jayhtdXN0UmVsZWFzZUxvY2spKSB7
CisgICAgICAgIC8vIFRha2UgY2FyZSBvZiBmaW5pc2hpbmcgYW55IGRlcmVmcyB3aGVyZSB0aGUg
dHJ5TG9jaygpIGZhaWxlZCBwcmV2aW91c2x5LgorICAgICAgICBoYW5kbGVEZWZlcnJlZEZpbmlz
aERlcmVmcygpOworCisgICAgICAgIC8vIER5bmFtaWNhbGx5IGNsZWFuIHVwIG5vZGVzIHdoaWNo
IGFyZSBubyBsb25nZXIgbmVlZGVkLgorICAgICAgICBkZXJlZkZpbmlzaGVkU291cmNlTm9kZXMo
KTsKKworICAgICAgICAvLyBEb24ndCBkZWxldGUgaW4gdGhlIHJlYWwtdGltZSB0aHJlYWQuIExl
dCB0aGUgbWFpbiB0aHJlYWQgZG8gaXQuCisgICAgICAgIC8vIFJlZi1jb3VudGVkIG9iamVjdHMg
aGVsZCBieSBjZXJ0YWluIEF1ZGlvTm9kZXMgbWF5IG5vdCBiZSB0aHJlYWQtc2FmZS4KKyAgICAg
ICAgc2NoZWR1bGVOb2RlRGVsZXRpb24oKTsKKworICAgICAgICAvLyBGaXh1cCB0aGUgc3RhdGUg
b2YgYW55IGRpcnR5IEF1ZGlvU3VtbWluZ0p1bmN0aW9ucyBhbmQgQXVkaW9Ob2RlT3V0cHV0cy4K
KyAgICAgICAgaGFuZGxlRGlydHlBdWRpb1N1bW1pbmdKdW5jdGlvbnMoKTsKKyAgICAgICAgaGFu
ZGxlRGlydHlBdWRpb05vZGVPdXRwdXRzKCk7CisKKyAgICAgICAgdXBkYXRlQXV0b21hdGljUHVs
bE5vZGVzKCk7CisKKyAgICAgICAgaWYgKG11c3RSZWxlYXNlTG9jaykKKyAgICAgICAgICAgIHVu
bG9jaygpOworICAgIH0KK30KKwordm9pZCBXZWJLaXRBdWRpb0NvbnRleHQ6OmhhbmRsZURlZmVy
cmVkRmluaXNoRGVyZWZzKCkKK3sKKyAgICBBU1NFUlQoaXNBdWRpb1RocmVhZCgpICYmIGlzR3Jh
cGhPd25lcigpKTsKKyAgICBmb3IgKGF1dG8mIG5vZGUgOiBtX2RlZmVycmVkRmluaXNoRGVyZWZM
aXN0KQorICAgICAgICBub2RlLT5maW5pc2hEZXJlZihBdWRpb05vZGU6OlJlZlR5cGVDb25uZWN0
aW9uKTsKKworICAgIG1fZGVmZXJyZWRGaW5pc2hEZXJlZkxpc3QuY2xlYXIoKTsKK30KKwordm9p
ZCBXZWJLaXRBdWRpb0NvbnRleHQ6Om1hcmtGb3JEZWxldGlvbihBdWRpb05vZGUmIG5vZGUpCit7
CisgICAgQVNTRVJUKGlzR3JhcGhPd25lcigpKTsKKworICAgIGlmIChpc0F1ZGlvVGhyZWFkRmlu
aXNoZWQoKSkKKyAgICAgICAgbV9ub2Rlc1RvRGVsZXRlLmFwcGVuZCgmbm9kZSk7CisgICAgZWxz
ZQorICAgICAgICBtX25vZGVzTWFya2VkRm9yRGVsZXRpb24uYXBwZW5kKCZub2RlKTsKKworICAg
IC8vIFRoaXMgaXMgcHJvYmFibHkgdGhlIGJlc3QgdGltZSBmb3IgdXMgdG8gcmVtb3ZlIHRoZSBu
b2RlIGZyb20gYXV0b21hdGljIHB1bGwgbGlzdCwKKyAgICAvLyBzaW5jZSBhbGwgY29ubmVjdGlv
bnMgYXJlIGdvbmUgYW5kIHdlIGhvbGQgdGhlIGdyYXBoIGxvY2suIFRoZW4gd2hlbiBoYW5kbGVQ
b3N0UmVuZGVyVGFza3MoKQorICAgIC8vIGdldHMgYSBjaGFuY2UgdG8gc2NoZWR1bGUgdGhlIGRl
bGV0aW9uIHdvcmssIHVwZGF0ZUF1dG9tYXRpY1B1bGxOb2RlcygpIGFsc28gZ2V0cyBhIGNoYW5j
ZSB0bworICAgIC8vIG1vZGlmeSBtX3JlbmRlcmluZ0F1dG9tYXRpY1B1bGxOb2Rlcy4KKyAgICBy
ZW1vdmVBdXRvbWF0aWNQdWxsTm9kZShub2RlKTsKK30KKwordm9pZCBXZWJLaXRBdWRpb0NvbnRl
eHQ6OnNjaGVkdWxlTm9kZURlbGV0aW9uKCkKK3sKKyAgICBib29sIGlzR29vZCA9IG1faXNJbml0
aWFsaXplZCAmJiBpc0dyYXBoT3duZXIoKTsKKyAgICBBU1NFUlQoaXNHb29kKTsKKyAgICBpZiAo
IWlzR29vZCkKKyAgICAgICAgcmV0dXJuOworCisgICAgLy8gTWFrZSBzdXJlIHRvIGNhbGwgZGVs
ZXRlTWFya2VkTm9kZXMoKSBvbiBtYWluIHRocmVhZC4KKyAgICBpZiAobV9ub2Rlc01hcmtlZEZv
ckRlbGV0aW9uLnNpemUoKSAmJiAhbV9pc0RlbGV0aW9uU2NoZWR1bGVkKSB7CisgICAgICAgIG1f
bm9kZXNUb0RlbGV0ZS5hcHBlbmRWZWN0b3IobV9ub2Rlc01hcmtlZEZvckRlbGV0aW9uKTsKKyAg
ICAgICAgbV9ub2Rlc01hcmtlZEZvckRlbGV0aW9uLmNsZWFyKCk7CisKKyAgICAgICAgbV9pc0Rl
bGV0aW9uU2NoZWR1bGVkID0gdHJ1ZTsKKworICAgICAgICBjYWxsT25NYWluVGhyZWFkKFtwcm90
ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyldKCkgbXV0YWJsZSB7CisgICAgICAgICAgICBwcm90
ZWN0ZWRUaGlzLT5kZWxldGVNYXJrZWROb2RlcygpOworICAgICAgICB9KTsKKyAgICB9Cit9CisK
K3ZvaWQgV2ViS2l0QXVkaW9Db250ZXh0OjpkZWxldGVNYXJrZWROb2RlcygpCit7CisgICAgQVNT
RVJUKGlzTWFpblRocmVhZCgpKTsKKworICAgIC8vIFByb3RlY3QgdGhpcyBvYmplY3QgZnJvbSBi
ZWluZyBkZWxldGVkIGJlZm9yZSB3ZSByZWxlYXNlIHRoZSBtdXRleCBsb2NrZWQgYnkgQXV0b0xv
Y2tlci4KKyAgICBSZWY8V2ViS2l0QXVkaW9Db250ZXh0PiBwcm90ZWN0ZWRUaGlzKCp0aGlzKTsK
KyAgICB7CisgICAgICAgIEF1dG9Mb2NrZXIgbG9ja2VyKCp0aGlzKTsKKworICAgICAgICB3aGls
ZSAobV9ub2Rlc1RvRGVsZXRlLnNpemUoKSkgeworICAgICAgICAgICAgQXVkaW9Ob2RlKiBub2Rl
ID0gbV9ub2Rlc1RvRGVsZXRlLnRha2VMYXN0KCk7CisKKyAgICAgICAgICAgIC8vIEJlZm9yZSBk
ZWxldGluZyB0aGUgbm9kZSwgY2xlYXIgb3V0IGFueSBBdWRpb05vZGVJbnB1dHMgZnJvbSBtX2Rp
cnR5U3VtbWluZ0p1bmN0aW9ucy4KKyAgICAgICAgICAgIHVuc2lnbmVkIG51bWJlck9mSW5wdXRz
ID0gbm9kZS0+bnVtYmVyT2ZJbnB1dHMoKTsKKyAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9
IDA7IGkgPCBudW1iZXJPZklucHV0czsgKytpKQorICAgICAgICAgICAgICAgIG1fZGlydHlTdW1t
aW5nSnVuY3Rpb25zLnJlbW92ZShub2RlLT5pbnB1dChpKSk7CisKKyAgICAgICAgICAgIC8vIEJl
Zm9yZSBkZWxldGluZyB0aGUgbm9kZSwgY2xlYXIgb3V0IGFueSBBdWRpb05vZGVPdXRwdXRzIGZy
b20gbV9kaXJ0eUF1ZGlvTm9kZU91dHB1dHMuCisgICAgICAgICAgICB1bnNpZ25lZCBudW1iZXJP
Zk91dHB1dHMgPSBub2RlLT5udW1iZXJPZk91dHB1dHMoKTsKKyAgICAgICAgICAgIGZvciAodW5z
aWduZWQgaSA9IDA7IGkgPCBudW1iZXJPZk91dHB1dHM7ICsraSkKKyAgICAgICAgICAgICAgICBt
X2RpcnR5QXVkaW9Ob2RlT3V0cHV0cy5yZW1vdmUobm9kZS0+b3V0cHV0KGkpKTsKKworICAgICAg
ICAgICAgLy8gRmluYWxseSwgZGVsZXRlIGl0LgorICAgICAgICAgICAgZGVsZXRlIG5vZGU7Cisg
ICAgICAgIH0KKyAgICAgICAgbV9pc0RlbGV0aW9uU2NoZWR1bGVkID0gZmFsc2U7CisgICAgfQor
fQorCit2b2lkIFdlYktpdEF1ZGlvQ29udGV4dDo6bWFya1N1bW1pbmdKdW5jdGlvbkRpcnR5KEF1
ZGlvU3VtbWluZ0p1bmN0aW9uKiBzdW1taW5nSnVuY3Rpb24pCit7CisgICAgQVNTRVJUKGlzR3Jh
cGhPd25lcigpKTsKKyAgICBtX2RpcnR5U3VtbWluZ0p1bmN0aW9ucy5hZGQoc3VtbWluZ0p1bmN0
aW9uKTsKK30KKwordm9pZCBXZWJLaXRBdWRpb0NvbnRleHQ6OnJlbW92ZU1hcmtlZFN1bW1pbmdK
dW5jdGlvbihBdWRpb1N1bW1pbmdKdW5jdGlvbiogc3VtbWluZ0p1bmN0aW9uKQoreworICAgIEFT
U0VSVChpc01haW5UaHJlYWQoKSk7CisgICAgQXV0b0xvY2tlciBsb2NrZXIoKnRoaXMpOworICAg
IG1fZGlydHlTdW1taW5nSnVuY3Rpb25zLnJlbW92ZShzdW1taW5nSnVuY3Rpb24pOworfQorCitF
dmVudFRhcmdldEludGVyZmFjZSBXZWJLaXRBdWRpb0NvbnRleHQ6OmV2ZW50VGFyZ2V0SW50ZXJm
YWNlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gV2ViS2l0QXVkaW9Db250ZXh0RXZlbnRUYXJnZXRJ
bnRlcmZhY2VUeXBlOworfQorCit2b2lkIFdlYktpdEF1ZGlvQ29udGV4dDo6bWFya0F1ZGlvTm9k
ZU91dHB1dERpcnR5KEF1ZGlvTm9kZU91dHB1dCogb3V0cHV0KQoreworICAgIEFTU0VSVChpc0dy
YXBoT3duZXIoKSk7CisgICAgbV9kaXJ0eUF1ZGlvTm9kZU91dHB1dHMuYWRkKG91dHB1dCk7Cit9
CisKK3ZvaWQgV2ViS2l0QXVkaW9Db250ZXh0OjpoYW5kbGVEaXJ0eUF1ZGlvU3VtbWluZ0p1bmN0
aW9ucygpCit7CisgICAgQVNTRVJUKGlzR3JhcGhPd25lcigpKTsKKworICAgIGZvciAoYXV0byYg
anVuY3Rpb24gOiBtX2RpcnR5U3VtbWluZ0p1bmN0aW9ucykKKyAgICAgICAganVuY3Rpb24tPnVw
ZGF0ZVJlbmRlcmluZ1N0YXRlKCk7CisKKyAgICBtX2RpcnR5U3VtbWluZ0p1bmN0aW9ucy5jbGVh
cigpOworfQorCit2b2lkIFdlYktpdEF1ZGlvQ29udGV4dDo6aGFuZGxlRGlydHlBdWRpb05vZGVP
dXRwdXRzKCkKK3sKKyAgICBBU1NFUlQoaXNHcmFwaE93bmVyKCkpOworCisgICAgZm9yIChhdXRv
JiBvdXRwdXQgOiBtX2RpcnR5QXVkaW9Ob2RlT3V0cHV0cykKKyAgICAgICAgb3V0cHV0LT51cGRh
dGVSZW5kZXJpbmdTdGF0ZSgpOworCisgICAgbV9kaXJ0eUF1ZGlvTm9kZU91dHB1dHMuY2xlYXIo
KTsKK30KKwordm9pZCBXZWJLaXRBdWRpb0NvbnRleHQ6OmFkZEF1dG9tYXRpY1B1bGxOb2RlKEF1
ZGlvTm9kZSYgbm9kZSkKK3sKKyAgICBBU1NFUlQoaXNHcmFwaE93bmVyKCkpOworCisgICAgaWYg
KG1fYXV0b21hdGljUHVsbE5vZGVzLmFkZCgmbm9kZSkuaXNOZXdFbnRyeSkKKyAgICAgICAgbV9h
dXRvbWF0aWNQdWxsTm9kZXNOZWVkVXBkYXRpbmcgPSB0cnVlOworfQorCit2b2lkIFdlYktpdEF1
ZGlvQ29udGV4dDo6cmVtb3ZlQXV0b21hdGljUHVsbE5vZGUoQXVkaW9Ob2RlJiBub2RlKQorewor
ICAgIEFTU0VSVChpc0dyYXBoT3duZXIoKSk7CisKKyAgICBpZiAobV9hdXRvbWF0aWNQdWxsTm9k
ZXMucmVtb3ZlKCZub2RlKSkKKyAgICAgICAgbV9hdXRvbWF0aWNQdWxsTm9kZXNOZWVkVXBkYXRp
bmcgPSB0cnVlOworfQorCit2b2lkIFdlYktpdEF1ZGlvQ29udGV4dDo6dXBkYXRlQXV0b21hdGlj
UHVsbE5vZGVzKCkKK3sKKyAgICBBU1NFUlQoaXNHcmFwaE93bmVyKCkpOworCisgICAgaWYgKG1f
YXV0b21hdGljUHVsbE5vZGVzTmVlZFVwZGF0aW5nKSB7CisgICAgICAgIC8vIENvcHkgZnJvbSBt
X2F1dG9tYXRpY1B1bGxOb2RlcyB0byBtX3JlbmRlcmluZ0F1dG9tYXRpY1B1bGxOb2Rlcy4KKyAg
ICAgICAgbV9yZW5kZXJpbmdBdXRvbWF0aWNQdWxsTm9kZXMucmVzaXplKG1fYXV0b21hdGljUHVs
bE5vZGVzLnNpemUoKSk7CisKKyAgICAgICAgdW5zaWduZWQgaSA9IDA7CisgICAgICAgIGZvciAo
YXV0byYgb3V0cHV0IDogbV9hdXRvbWF0aWNQdWxsTm9kZXMpCisgICAgICAgICAgICBtX3JlbmRl
cmluZ0F1dG9tYXRpY1B1bGxOb2Rlc1tpKytdID0gb3V0cHV0OworCisgICAgICAgIG1fYXV0b21h
dGljUHVsbE5vZGVzTmVlZFVwZGF0aW5nID0gZmFsc2U7CisgICAgfQorfQorCit2b2lkIFdlYktp
dEF1ZGlvQ29udGV4dDo6cHJvY2Vzc0F1dG9tYXRpY1B1bGxOb2RlcyhzaXplX3QgZnJhbWVzVG9Q
cm9jZXNzKQoreworICAgIEFTU0VSVChpc0F1ZGlvVGhyZWFkKCkpOworCisgICAgZm9yIChhdXRv
JiBub2RlIDogbV9yZW5kZXJpbmdBdXRvbWF0aWNQdWxsTm9kZXMpCisgICAgICAgIG5vZGUtPnBy
b2Nlc3NJZk5lY2Vzc2FyeShmcmFtZXNUb1Byb2Nlc3MpOworfQorCit2b2lkIFdlYktpdEF1ZGlv
Q29udGV4dDo6bm9kZVdpbGxCZWdpblBsYXliYWNrKCkKK3sKKyAgICAvLyBDYWxsZWQgYnkgc2No
ZWR1bGVkIEF1ZGlvTm9kZXMgd2hlbiBjbGllbnRzIHNjaGVkdWxlIHRoZWlyIHN0YXJ0IHRpbWVz
LgorICAgIC8vIFByaW9yIHRvIHRoZSBpbnRyb2R1Y3Rpb24gb2Ygc3VzcGVuZCgpLCByZXN1bWUo
KSwgYW5kIHN0b3AoKSwgc3RhcnRpbmcKKyAgICAvLyBhIHNjaGVkdWxlZCBBdWRpb05vZGUgd291
bGQgcmVtb3ZlIHRoZSB1c2VyLWdlc3R1cmUgcmVzdHJpY3Rpb24sIGlmIHByZXNlbnQsCisgICAg
Ly8gYW5kIHdvdWxkIHRodXMgdW5tdXRlIHRoZSBjb250ZXh0LiBOb3cgdGhhdCBBdWRpb0NvbnRl
eHQgc3RheXMgaW4gdGhlCisgICAgLy8gInN1c3BlbmRlZCIgc3RhdGUgaWYgYSB1c2VyLWdlc3R1
cmUgcmVzdHJpY3Rpb24gaXMgcHJlc2VudCwgc3RhcnRpbmcgYQorICAgIC8vIHNjaGVkdWxlIEF1
ZGlvTm9kZSBzaG91bGQgc2V0IHRoZSBzdGF0ZSB0byAicnVubmluZyIsIGJ1dCBvbmx5IGlmIHRo
ZQorICAgIC8vIHVzZXItZ2VzdHVyZSByZXN0cmljdGlvbiBpcyBzZXQuCisgICAgaWYgKHVzZXJH
ZXN0dXJlUmVxdWlyZWRGb3JBdWRpb1N0YXJ0KCkpCisgICAgICAgIHN0YXJ0UmVuZGVyaW5nKCk7
Cit9CisKK3N0YXRpYyBib29sIHNob3VsZERvY3VtZW50QWxsb3dXZWJBdWRpb1RvQXV0b1BsYXko
Y29uc3QgRG9jdW1lbnQmIGRvY3VtZW50KQoreworICAgIGlmIChkb2N1bWVudC5wcm9jZXNzaW5n
VXNlckdlc3R1cmVGb3JNZWRpYSgpIHx8IGRvY3VtZW50LmlzQ2FwdHVyaW5nKCkpCisgICAgICAg
IHJldHVybiB0cnVlOworICAgIHJldHVybiBkb2N1bWVudC5xdWlya3MoKS5zaG91bGRBdXRvcGxh
eVdlYkF1ZGlvRm9yQXJiaXRyYXJ5VXNlckdlc3R1cmUoKSAmJiBkb2N1bWVudC50b3BEb2N1bWVu
dCgpLmhhc0hhZFVzZXJJbnRlcmFjdGlvbigpOworfQorCitib29sIFdlYktpdEF1ZGlvQ29udGV4
dDo6d2lsbEJlZ2luUGxheWJhY2soKQoreworICAgIGF1dG8qIGRvY3VtZW50ID0gdGhpcy0+ZG9j
dW1lbnQoKTsKKyAgICBpZiAoIWRvY3VtZW50KQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAg
ICBpZiAodXNlckdlc3R1cmVSZXF1aXJlZEZvckF1ZGlvU3RhcnQoKSkgeworICAgICAgICBpZiAo
IXNob3VsZERvY3VtZW50QWxsb3dXZWJBdWRpb1RvQXV0b1BsYXkoKmRvY3VtZW50KSkgeworICAg
ICAgICAgICAgQUxXQVlTX0xPRyhMT0dJREVOVElGSUVSLCAicmV0dXJuaW5nIGZhbHNlLCBub3Qg
cHJvY2Vzc2luZyB1c2VyIGdlc3R1cmUgb3IgY2FwdHVyaW5nIik7CisgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CisgICAgICAgIH0KKyAgICAgICAgcmVtb3ZlQmVoYXZpb3JSZXN0cmljdGlvbihX
ZWJLaXRBdWRpb0NvbnRleHQ6OlJlcXVpcmVVc2VyR2VzdHVyZUZvckF1ZGlvU3RhcnRSZXN0cmlj
dGlvbik7CisgICAgfQorCisgICAgaWYgKHBhZ2VDb25zZW50UmVxdWlyZWRGb3JBdWRpb1N0YXJ0
KCkpIHsKKyAgICAgICAgYXV0byogcGFnZSA9IGRvY3VtZW50LT5wYWdlKCk7CisgICAgICAgIGlm
IChwYWdlICYmICFwYWdlLT5jYW5TdGFydE1lZGlhKCkpIHsKKyAgICAgICAgICAgIGRvY3VtZW50
LT5hZGRNZWRpYUNhblN0YXJ0TGlzdGVuZXIoKnRoaXMpOworICAgICAgICAgICAgQUxXQVlTX0xP
RyhMT0dJREVOVElGSUVSLCAicmV0dXJuaW5nIGZhbHNlLCBwYWdlIGRvZXNuJ3QgYWxsb3cgbWVk
aWEgdG8gc3RhcnQiKTsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorICAg
ICAgICByZW1vdmVCZWhhdmlvclJlc3RyaWN0aW9uKFdlYktpdEF1ZGlvQ29udGV4dDo6UmVxdWly
ZVBhZ2VDb25zZW50Rm9yQXVkaW9TdGFydFJlc3RyaWN0aW9uKTsKKyAgICB9CisKKyAgICBhdXRv
IHdpbGxCZWdpbiA9IG1fbWVkaWFTZXNzaW9uLT5jbGllbnRXaWxsQmVnaW5QbGF5YmFjaygpOwor
ICAgIEFMV0FZU19MT0coTE9HSURFTlRJRklFUiwgInJldHVybmluZyAiLCB3aWxsQmVnaW4pOwor
CisgICAgcmV0dXJuIHdpbGxCZWdpbjsKK30KKworYm9vbCBXZWJLaXRBdWRpb0NvbnRleHQ6Ondp
bGxQYXVzZVBsYXliYWNrKCkKK3sKKyAgICBhdXRvKiBkb2N1bWVudCA9IHRoaXMtPmRvY3VtZW50
KCk7CisgICAgaWYgKCFkb2N1bWVudCkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgaWYg
KHVzZXJHZXN0dXJlUmVxdWlyZWRGb3JBdWRpb1N0YXJ0KCkpIHsKKyAgICAgICAgaWYgKCFkb2N1
bWVudC0+cHJvY2Vzc2luZ1VzZXJHZXN0dXJlRm9yTWVkaWEoKSkKKyAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKKyAgICAgICAgcmVtb3ZlQmVoYXZpb3JSZXN0cmljdGlvbihXZWJLaXRBdWRpb0Nv
bnRleHQ6OlJlcXVpcmVVc2VyR2VzdHVyZUZvckF1ZGlvU3RhcnRSZXN0cmljdGlvbik7CisgICAg
fQorCisgICAgaWYgKHBhZ2VDb25zZW50UmVxdWlyZWRGb3JBdWRpb1N0YXJ0KCkpIHsKKyAgICAg
ICAgYXV0byogcGFnZSA9IGRvY3VtZW50LT5wYWdlKCk7CisgICAgICAgIGlmIChwYWdlICYmICFw
YWdlLT5jYW5TdGFydE1lZGlhKCkpIHsKKyAgICAgICAgICAgIGRvY3VtZW50LT5hZGRNZWRpYUNh
blN0YXJ0TGlzdGVuZXIoKnRoaXMpOworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAg
ICB9CisgICAgICAgIHJlbW92ZUJlaGF2aW9yUmVzdHJpY3Rpb24oV2ViS2l0QXVkaW9Db250ZXh0
OjpSZXF1aXJlUGFnZUNvbnNlbnRGb3JBdWRpb1N0YXJ0UmVzdHJpY3Rpb24pOworICAgIH0KKwor
ICAgIHJldHVybiBtX21lZGlhU2Vzc2lvbi0+Y2xpZW50V2lsbFBhdXNlUGxheWJhY2soKTsKK30K
Kwordm9pZCBXZWJLaXRBdWRpb0NvbnRleHQ6OnN0YXJ0UmVuZGVyaW5nKCkKK3sKKyAgICBBTFdB
WVNfTE9HKExPR0lERU5USUZJRVIpOworICAgIGlmIChtX2lzU3RvcFNjaGVkdWxlZCB8fCAhd2ls
bEJlZ2luUGxheWJhY2soKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgbWFrZVBlbmRpbmdBY3Rp
dml0eSgpOworCisgICAgZGVzdGluYXRpb24oKS0+c3RhcnRSZW5kZXJpbmcoKTsKKyAgICBzZXRT
dGF0ZShTdGF0ZTo6UnVubmluZyk7Cit9CisKK3ZvaWQgV2ViS2l0QXVkaW9Db250ZXh0OjptZWRp
YUNhblN0YXJ0KERvY3VtZW50JiBkb2N1bWVudCkKK3sKKyAgICBBU1NFUlRfVU5VU0VEKGRvY3Vt
ZW50LCAmZG9jdW1lbnQgPT0gdGhpcy0+ZG9jdW1lbnQoKSk7CisgICAgcmVtb3ZlQmVoYXZpb3JS
ZXN0cmljdGlvbihXZWJLaXRBdWRpb0NvbnRleHQ6OlJlcXVpcmVQYWdlQ29uc2VudEZvckF1ZGlv
U3RhcnRSZXN0cmljdGlvbik7CisgICAgbWF5UmVzdW1lUGxheWJhY2sodHJ1ZSk7Cit9CisKK01l
ZGlhUHJvZHVjZXI6Ok1lZGlhU3RhdGVGbGFncyBXZWJLaXRBdWRpb0NvbnRleHQ6Om1lZGlhU3Rh
dGUoKSBjb25zdAoreworICAgIGlmICghbV9pc1N0b3BTY2hlZHVsZWQgJiYgbV9kZXN0aW5hdGlv
bk5vZGUgJiYgbV9kZXN0aW5hdGlvbk5vZGUtPmlzUGxheWluZ0F1ZGlvKCkpCisgICAgICAgIHJl
dHVybiBNZWRpYVByb2R1Y2VyOjpJc1BsYXlpbmdBdWRpbzsKKworICAgIHJldHVybiBNZWRpYVBy
b2R1Y2VyOjpJc05vdFBsYXlpbmc7Cit9CisKK3ZvaWQgV2ViS2l0QXVkaW9Db250ZXh0OjpwYWdl
TXV0ZWRTdGF0ZURpZENoYW5nZSgpCit7CisgICAgaWYgKG1fZGVzdGluYXRpb25Ob2RlICYmIGRv
Y3VtZW50KCkgJiYgZG9jdW1lbnQoKS0+cGFnZSgpKQorICAgICAgICBtX2Rlc3RpbmF0aW9uTm9k
ZS0+c2V0TXV0ZWQoZG9jdW1lbnQoKS0+cGFnZSgpLT5pc0F1ZGlvTXV0ZWQoKSk7Cit9CisKK3Zv
aWQgV2ViS2l0QXVkaW9Db250ZXh0Ojppc1BsYXlpbmdBdWRpb0RpZENoYW5nZSgpCit7CisgICAg
Ly8gTWFrZSBzdXJlIHRvIGNhbGwgRG9jdW1lbnQ6OnVwZGF0ZUlzUGxheWluZ01lZGlhKCkgb24g
dGhlIG1haW4gdGhyZWFkLCBzaW5jZQorICAgIC8vIHdlIGNvdWxkIGJlIG9uIHRoZSBhdWRpbyBJ
L08gdGhyZWFkIGhlcmUgYW5kIHRoZSBjYWxsIGludG8gV2ViQ29yZSBjb3VsZCBibG9jay4KKyAg
ICBjYWxsT25NYWluVGhyZWFkKFtwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyldIHsKKyAg
ICAgICAgaWYgKHByb3RlY3RlZFRoaXMtPmRvY3VtZW50KCkpCisgICAgICAgICAgICBwcm90ZWN0
ZWRUaGlzLT5kb2N1bWVudCgpLT51cGRhdGVJc1BsYXlpbmdNZWRpYSgpOworICAgIH0pOworfQor
Cit2b2lkIFdlYktpdEF1ZGlvQ29udGV4dDo6ZmluaXNoZWRSZW5kZXJpbmcoYm9vbCBkaWRSZW5k
ZXJpbmcpCit7CisgICAgQVNTRVJUKGlzT2ZmbGluZUNvbnRleHQoKSk7CisgICAgQVNTRVJUKGlz
TWFpblRocmVhZCgpKTsKKyAgICBpZiAoIWlzTWFpblRocmVhZCgpKQorICAgICAgICByZXR1cm47
CisKKyAgICBhdXRvIGNsZWFyUGVuZGluZ0FjdGl2aXR5SWZFeGl0RWFybHkgPSBXVEY6Om1ha2VT
Y29wZUV4aXQoW3RoaXNdIHsKKyAgICAgICAgY2xlYXJQZW5kaW5nQWN0aXZpdHkoKTsKKyAgICB9
KTsKKworCisgICAgQUxXQVlTX0xPRyhMT0dJREVOVElGSUVSKTsKKworICAgIGlmICghZGlkUmVu
ZGVyaW5nKQorICAgICAgICByZXR1cm47CisKKyAgICBBdWRpb0J1ZmZlciogcmVuZGVyZWRCdWZm
ZXIgPSBtX3JlbmRlclRhcmdldC5nZXQoKTsKKyAgICBzZXRTdGF0ZShTdGF0ZTo6Q2xvc2VkKTsK
KworICAgIEFTU0VSVChyZW5kZXJlZEJ1ZmZlcik7CisgICAgaWYgKCFyZW5kZXJlZEJ1ZmZlcikK
KyAgICAgICAgcmV0dXJuOworCisgICAgLy8gQXZvaWQgZmlyaW5nIHRoZSBldmVudCBpZiB0aGUg
ZG9jdW1lbnQgaGFzIGFscmVhZHkgZ29uZSBhd2F5LgorICAgIGlmIChtX2lzU3RvcFNjaGVkdWxl
ZCkKKyAgICAgICAgcmV0dXJuOworCisgICAgY2xlYXJQZW5kaW5nQWN0aXZpdHlJZkV4aXRFYXJs
eS5yZWxlYXNlKCk7CisgICAgbV9ldmVudFF1ZXVlLT5lbnF1ZXVlRXZlbnQoT2ZmbGluZUF1ZGlv
Q29tcGxldGlvbkV2ZW50OjpjcmVhdGUocmVuZGVyZWRCdWZmZXIpKTsKK30KKwordm9pZCBXZWJL
aXRBdWRpb0NvbnRleHQ6OmRpc3BhdGNoRXZlbnQoRXZlbnQmIGV2ZW50KQoreworICAgIEV2ZW50
VGFyZ2V0OjpkaXNwYXRjaEV2ZW50KGV2ZW50KTsKKyAgICBpZiAoZXZlbnQuZXZlbnRJbnRlcmZh
Y2UoKSA9PSBPZmZsaW5lQXVkaW9Db21wbGV0aW9uRXZlbnRJbnRlcmZhY2VUeXBlKQorICAgICAg
ICBjbGVhclBlbmRpbmdBY3Rpdml0eSgpOworfQorCit2b2lkIFdlYktpdEF1ZGlvQ29udGV4dDo6
aW5jcmVtZW50QWN0aXZlU291cmNlQ291bnQoKQoreworICAgICsrbV9hY3RpdmVTb3VyY2VDb3Vu
dDsKK30KKwordm9pZCBXZWJLaXRBdWRpb0NvbnRleHQ6OmRlY3JlbWVudEFjdGl2ZVNvdXJjZUNv
dW50KCkKK3sKKyAgICAtLW1fYWN0aXZlU291cmNlQ291bnQ7Cit9CisKK3ZvaWQgV2ViS2l0QXVk
aW9Db250ZXh0OjpzdXNwZW5kUmVuZGVyaW5nKERPTVByb21pc2VEZWZlcnJlZDx2b2lkPiYmIHBy
b21pc2UpCit7CisgICAgaWYgKGlzT2ZmbGluZUNvbnRleHQoKSB8fCBtX2lzU3RvcFNjaGVkdWxl
ZCkgeworICAgICAgICBwcm9taXNlLnJlamVjdChJbnZhbGlkU3RhdGVFcnJvcik7CisgICAgICAg
IHJldHVybjsKKyAgICB9CisKKyAgICBpZiAobV9zdGF0ZSA9PSBTdGF0ZTo6U3VzcGVuZGVkKSB7
CisgICAgICAgIHByb21pc2UucmVzb2x2ZSgpOworICAgICAgICByZXR1cm47CisgICAgfQorCisg
ICAgaWYgKG1fc3RhdGUgPT0gU3RhdGU6OkNsb3NlZCB8fCBtX3N0YXRlID09IFN0YXRlOjpJbnRl
cnJ1cHRlZCB8fCAhbV9kZXN0aW5hdGlvbk5vZGUpIHsKKyAgICAgICAgcHJvbWlzZS5yZWplY3Qo
KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGFkZFJlYWN0aW9uKFN0YXRlOjpTdXNw
ZW5kZWQsIFdURk1vdmUocHJvbWlzZSkpOworCisgICAgaWYgKCF3aWxsUGF1c2VQbGF5YmFjaygp
KQorICAgICAgICByZXR1cm47CisKKyAgICBsYXp5SW5pdGlhbGl6ZSgpOworCisgICAgbV9kZXN0
aW5hdGlvbk5vZGUtPnN1c3BlbmQoW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlz
KV0geworICAgICAgICBzZXRTdGF0ZShTdGF0ZTo6U3VzcGVuZGVkKTsKKyAgICB9KTsKK30KKwor
dm9pZCBXZWJLaXRBdWRpb0NvbnRleHQ6OnJlc3VtZVJlbmRlcmluZyhET01Qcm9taXNlRGVmZXJy
ZWQ8dm9pZD4mJiBwcm9taXNlKQoreworICAgIGlmIChpc09mZmxpbmVDb250ZXh0KCkgfHwgbV9p
c1N0b3BTY2hlZHVsZWQpIHsKKyAgICAgICAgcHJvbWlzZS5yZWplY3QoSW52YWxpZFN0YXRlRXJy
b3IpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgaWYgKG1fc3RhdGUgPT0gU3RhdGU6
OlJ1bm5pbmcpIHsKKyAgICAgICAgcHJvbWlzZS5yZXNvbHZlKCk7CisgICAgICAgIHJldHVybjsK
KyAgICB9CisKKyAgICBpZiAobV9zdGF0ZSA9PSBTdGF0ZTo6Q2xvc2VkIHx8ICFtX2Rlc3RpbmF0
aW9uTm9kZSkgeworICAgICAgICBwcm9taXNlLnJlamVjdCgpOworICAgICAgICByZXR1cm47Cisg
ICAgfQorCisgICAgYWRkUmVhY3Rpb24oU3RhdGU6OlJ1bm5pbmcsIFdURk1vdmUocHJvbWlzZSkp
OworCisgICAgaWYgKCF3aWxsQmVnaW5QbGF5YmFjaygpKQorICAgICAgICByZXR1cm47CisKKyAg
ICBsYXp5SW5pdGlhbGl6ZSgpOworCisgICAgbV9kZXN0aW5hdGlvbk5vZGUtPnJlc3VtZShbdGhp
cywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpXSB7CisgICAgICAgIHNldFN0YXRlKFN0
YXRlOjpSdW5uaW5nKTsKKyAgICB9KTsKK30KKwordm9pZCBXZWJLaXRBdWRpb0NvbnRleHQ6OmNs
b3NlKERPTVByb21pc2VEZWZlcnJlZDx2b2lkPiYmIHByb21pc2UpCit7CisgICAgaWYgKGlzT2Zm
bGluZUNvbnRleHQoKSB8fCBtX2lzU3RvcFNjaGVkdWxlZCkgeworICAgICAgICBwcm9taXNlLnJl
amVjdChJbnZhbGlkU3RhdGVFcnJvcik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBp
ZiAobV9zdGF0ZSA9PSBTdGF0ZTo6Q2xvc2VkIHx8ICFtX2Rlc3RpbmF0aW9uTm9kZSkgeworICAg
ICAgICBwcm9taXNlLnJlc29sdmUoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGFk
ZFJlYWN0aW9uKFN0YXRlOjpDbG9zZWQsIFdURk1vdmUocHJvbWlzZSkpOworCisgICAgbGF6eUlu
aXRpYWxpemUoKTsKKworICAgIG1fZGVzdGluYXRpb25Ob2RlLT5jbG9zZShbdGhpcywgcHJvdGVj
dGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpXSB7CisgICAgICAgIHNldFN0YXRlKFN0YXRlOjpDbG9z
ZWQpOworICAgICAgICB1bmluaXRpYWxpemUoKTsKKyAgICB9KTsKK30KKworCit2b2lkIFdlYktp
dEF1ZGlvQ29udGV4dDo6c3VzcGVuZFBsYXliYWNrKCkKK3sKKyAgICBpZiAoIW1fZGVzdGluYXRp
b25Ob2RlIHx8IG1fc3RhdGUgPT0gU3RhdGU6OkNsb3NlZCkKKyAgICAgICAgcmV0dXJuOworCisg
ICAgaWYgKG1fc3RhdGUgPT0gU3RhdGU6OlN1c3BlbmRlZCkgeworICAgICAgICBpZiAobV9tZWRp
YVNlc3Npb24tPnN0YXRlKCkgPT0gUGxhdGZvcm1NZWRpYVNlc3Npb246OkludGVycnVwdGVkKQor
ICAgICAgICAgICAgc2V0U3RhdGUoU3RhdGU6OkludGVycnVwdGVkKTsKKyAgICAgICAgcmV0dXJu
OworICAgIH0KKworICAgIGxhenlJbml0aWFsaXplKCk7CisKKyAgICBtX2Rlc3RpbmF0aW9uTm9k
ZS0+c3VzcGVuZChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpXSB7CisgICAg
ICAgIGJvb2wgaW50ZXJydXB0ZWQgPSBtX21lZGlhU2Vzc2lvbi0+c3RhdGUoKSA9PSBQbGF0Zm9y
bU1lZGlhU2Vzc2lvbjo6SW50ZXJydXB0ZWQ7CisgICAgICAgIHNldFN0YXRlKGludGVycnVwdGVk
ID8gU3RhdGU6OkludGVycnVwdGVkIDogU3RhdGU6OlN1c3BlbmRlZCk7CisgICAgfSk7Cit9CisK
K3ZvaWQgV2ViS2l0QXVkaW9Db250ZXh0OjptYXlSZXN1bWVQbGF5YmFjayhib29sIHNob3VsZFJl
c3VtZSkKK3sKKyAgICBpZiAoIW1fZGVzdGluYXRpb25Ob2RlIHx8IG1fc3RhdGUgPT0gU3RhdGU6
OkNsb3NlZCB8fCBtX3N0YXRlID09IFN0YXRlOjpSdW5uaW5nKQorICAgICAgICByZXR1cm47CisK
KyAgICBpZiAoIXNob3VsZFJlc3VtZSkgeworICAgICAgICBzZXRTdGF0ZShTdGF0ZTo6U3VzcGVu
ZGVkKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlmICghd2lsbEJlZ2luUGxheWJh
Y2soKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgbGF6eUluaXRpYWxpemUoKTsKKworICAgIG1f
ZGVzdGluYXRpb25Ob2RlLT5yZXN1bWUoW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0
aGlzKV0geworICAgICAgICBzZXRTdGF0ZShTdGF0ZTo6UnVubmluZyk7CisgICAgfSk7Cit9CisK
K3ZvaWQgV2ViS2l0QXVkaW9Db250ZXh0Ojpwb3N0VGFzayhXVEY6OkZ1bmN0aW9uPHZvaWQoKT4m
JiB0YXNrKQoreworICAgIGlmIChtX2lzU3RvcFNjaGVkdWxlZCkKKyAgICAgICAgcmV0dXJuOwor
CisgICAgbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0LT5wb3N0VGFzayhXVEZNb3ZlKHRhc2spKTsK
K30KKworY29uc3QgU2VjdXJpdHlPcmlnaW4qIFdlYktpdEF1ZGlvQ29udGV4dDo6b3JpZ2luKCkg
Y29uc3QKK3sKKyAgICByZXR1cm4gbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0ID8gbV9zY3JpcHRF
eGVjdXRpb25Db250ZXh0LT5zZWN1cml0eU9yaWdpbigpIDogbnVsbHB0cjsKK30KKwordm9pZCBX
ZWJLaXRBdWRpb0NvbnRleHQ6OmFkZENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VTb3VyY2Ugc291cmNl
LCBNZXNzYWdlTGV2ZWwgbGV2ZWwsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKK3sKKyAgICBpZiAo
bV9zY3JpcHRFeGVjdXRpb25Db250ZXh0KQorICAgICAgICBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQtPmFkZENvbnNvbGVNZXNzYWdlKHNvdXJjZSwgbGV2ZWwsIG1lc3NhZ2UpOworfQorCit2b2lk
IFdlYktpdEF1ZGlvQ29udGV4dDo6Y2xlYXJQZW5kaW5nQWN0aXZpdHkoKQoreworICAgIGlmICgh
bV9wZW5kaW5nQWN0aXZpdHkpCisgICAgICAgIHJldHVybjsKKyAgICBtX3BlbmRpbmdBY3Rpdml0
eSA9IG51bGxwdHI7CisgICAgLy8gRklYTUU6IFJlbW92ZSB0aGlzIHNwZWNpZmljIGRlcmVmKCkg
YW5kIHJlZigpIGNhbGwgaW4gbWFrZVBlbmRpbmdBY3Rpdml0eSgpLgorICAgIGRlcmVmKCk7Cit9
CisKK3ZvaWQgV2ViS2l0QXVkaW9Db250ZXh0OjptYWtlUGVuZGluZ0FjdGl2aXR5KCkKK3sKKyAg
ICBpZiAobV9wZW5kaW5nQWN0aXZpdHkpCisgICAgICAgIHJldHVybjsKKyAgICBtX3BlbmRpbmdB
Y3Rpdml0eSA9IEFjdGl2ZURPTU9iamVjdDo6bWFrZVBlbmRpbmdBY3Rpdml0eSgqdGhpcyk7Cisg
ICAgcmVmKCk7Cit9CisKKyNpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKK1dURkxvZ0NoYW5uZWwm
IFdlYktpdEF1ZGlvQ29udGV4dDo6bG9nQ2hhbm5lbCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIExv
Z01lZGlhOworfQorI2VuZGlmCisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8v
IEVOQUJMRShXRUJfQVVESU8pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmF1ZGlvL1dlYktpdEF1ZGlvQ29udGV4dC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJh
dWRpby9XZWJLaXRBdWRpb0NvbnRleHQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xNDQ2NjA5M2E2ODJlNzNkYTI4
NmFjNTE5OGFjZmRkNWNiYzhmOWUwCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJhdWRpby9XZWJLaXRBdWRpb0NvbnRleHQuaApAQCAtMCwwICsxLDQxNyBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICogQ29weXJpZ2h0IChDKSAyMDE2LTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAq
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04KKyAqIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUwor
ICogU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJBY3RpdmVET01PYmplY3Qu
aCIKKyNpbmNsdWRlICJBc3luY0F1ZGlvRGVjb2Rlci5oIgorI2luY2x1ZGUgIkF1ZGlvQnVzLmgi
CisjaW5jbHVkZSAiQXVkaW9Db250ZXh0LmgiCisjaW5jbHVkZSAiQXVkaW9Db250ZXh0U3RhdGUu
aCIKKyNpbmNsdWRlICJBdWRpb0Rlc3RpbmF0aW9uTm9kZS5oIgorI2luY2x1ZGUgIkV2ZW50VGFy
Z2V0LmgiCisjaW5jbHVkZSAiTWVkaWFDYW5TdGFydExpc3RlbmVyLmgiCisjaW5jbHVkZSAiTWVk
aWFQcm9kdWNlci5oIgorI2luY2x1ZGUgIlBsYXRmb3JtTWVkaWFTZXNzaW9uLmgiCisjaW5jbHVk
ZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgorI2luY2x1ZGUgIlZpc2liaWxpdHlDaGFuZ2VD
bGllbnQuaCIKKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9Db25zb2xlVHlwZXMuaD4KKyNpbmNs
dWRlIDxKYXZhU2NyaXB0Q29yZS9GbG9hdDMyQXJyYXkuaD4KKyNpbmNsdWRlIDxhdG9taWM+Cisj
aW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KKyNpbmNsdWRlIDx3dGYvTG9nZ2VySGVscGVyLmg+Cisj
aW5jbHVkZSA8d3RmL01haW5UaHJlYWQuaD4KKyNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CisjaW5j
bHVkZSA8d3RmL1RocmVhZFNhZmVSZWZDb3VudGVkLmg+CisjaW5jbHVkZSA8d3RmL1RocmVhZGlu
Zy5oPgorI2luY2x1ZGUgPHd0Zi9VbmlxdWVSZWYuaD4KKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+
CisjaW5jbHVkZSA8d3RmL3RleHQvQXRvbVN0cmluZ0hhc2guaD4KKworbmFtZXNwYWNlIFdlYkNv
cmUgeworCitjbGFzcyBBbmFseXNlck5vZGU7CitjbGFzcyBBdWRpb0J1ZmZlcjsKK2NsYXNzIEF1
ZGlvQnVmZmVyQ2FsbGJhY2s7CitjbGFzcyBBdWRpb0J1ZmZlclNvdXJjZU5vZGU7CitjbGFzcyBB
dWRpb0xpc3RlbmVyOworY2xhc3MgQXVkaW9TdW1taW5nSnVuY3Rpb247CitjbGFzcyBCaXF1YWRG
aWx0ZXJOb2RlOworY2xhc3MgQ2hhbm5lbE1lcmdlck5vZGU7CitjbGFzcyBDaGFubmVsU3BsaXR0
ZXJOb2RlOworY2xhc3MgQ29udm9sdmVyTm9kZTsKK2NsYXNzIERlbGF5Tm9kZTsKK2NsYXNzIERv
Y3VtZW50OworY2xhc3MgRHluYW1pY3NDb21wcmVzc29yTm9kZTsKK2NsYXNzIEdhaW5Ob2RlOwor
Y2xhc3MgSFRNTE1lZGlhRWxlbWVudDsKK2NsYXNzIE1haW5UaHJlYWRHZW5lcmljRXZlbnRRdWV1
ZTsKK2NsYXNzIE1lZGlhRWxlbWVudEF1ZGlvU291cmNlTm9kZTsKK2NsYXNzIE1lZGlhU3RyZWFt
OworY2xhc3MgTWVkaWFTdHJlYW1BdWRpb0Rlc3RpbmF0aW9uTm9kZTsKK2NsYXNzIE1lZGlhU3Ry
ZWFtQXVkaW9Tb3VyY2VOb2RlOworY2xhc3MgT3NjaWxsYXRvck5vZGU7CitjbGFzcyBQZXJpb2Rp
Y1dhdmU7CitjbGFzcyBTY3JpcHRQcm9jZXNzb3JOb2RlOworY2xhc3MgU2VjdXJpdHlPcmlnaW47
CitjbGFzcyBXYXZlU2hhcGVyTm9kZTsKK2NsYXNzIFdlYktpdEF1ZGlvUGFubmVyTm9kZTsKKwor
dGVtcGxhdGU8dHlwZW5hbWUgSURMVHlwZT4gY2xhc3MgRE9NUHJvbWlzZURlZmVycmVkOworCisv
LyBBdWRpb0NvbnRleHQgaXMgdGhlIGNvcm5lcnN0b25lIG9mIHRoZSB3ZWIgYXVkaW8gQVBJIGFu
ZCBhbGwgQXVkaW9Ob2RlcyBhcmUgY3JlYXRlZCBmcm9tIGl0LgorLy8gRm9yIHRocmVhZCBzYWZl
dHkgYmV0d2VlbiB0aGUgYXVkaW8gdGhyZWFkIGFuZCB0aGUgbWFpbiB0aHJlYWQsIGl0IGhhcyBh
IHJlbmRlcmluZyBncmFwaCBsb2NraW5nIG1lY2hhbmlzbS4KKworY2xhc3MgV2ViS2l0QXVkaW9D
b250ZXh0CisgICAgOiBwdWJsaWMgQXVkaW9Db250ZXh0QmFzZQorICAgICwgcHJpdmF0ZSBQbGF0
Zm9ybU1lZGlhU2Vzc2lvbkNsaWVudAorICAgICwgcHJpdmF0ZSBWaXNpYmlsaXR5Q2hhbmdlQ2xp
ZW50Cit7CisgICAgV1RGX01BS0VfSVNPX0FMTE9DQVRFRChXZWJLaXRBdWRpb0NvbnRleHQpOwor
cHVibGljOgorICAgIC8vIENyZWF0ZSBhbiBXZWJLaXRBdWRpb0NvbnRleHQgZm9yIHJlbmRlcmlu
ZyB0byB0aGUgYXVkaW8gaGFyZHdhcmUuCisgICAgc3RhdGljIEV4Y2VwdGlvbk9yPFJlZjxXZWJL
aXRBdWRpb0NvbnRleHQ+PiBjcmVhdGUoRG9jdW1lbnQmKTsKKworICAgIHZpcnR1YWwgfldlYktp
dEF1ZGlvQ29udGV4dCgpOworCisgICAgYm9vbCBpc0luaXRpYWxpemVkKCkgY29uc3QgZmluYWw7
CisKKyAgICBib29sIGlzT2ZmbGluZUNvbnRleHQoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2lz
T2ZmbGluZUNvbnRleHQ7IH0KKworICAgIERvY3VtZW50SWRlbnRpZmllciBob3N0aW5nRG9jdW1l
bnRJZGVudGlmaWVyKCkgY29uc3QgZmluYWw7CisKKyAgICBBdWRpb0Rlc3RpbmF0aW9uTm9kZSog
ZGVzdGluYXRpb24oKSB7IHJldHVybiBtX2Rlc3RpbmF0aW9uTm9kZS5nZXQoKTsgfQorICAgIHNp
emVfdCBjdXJyZW50U2FtcGxlRnJhbWUoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2Rlc3RpbmF0
aW9uTm9kZSA/IG1fZGVzdGluYXRpb25Ob2RlLT5jdXJyZW50U2FtcGxlRnJhbWUoKSA6IDA7IH0K
KyAgICBkb3VibGUgY3VycmVudFRpbWUoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2Rlc3RpbmF0
aW9uTm9kZSA/IG1fZGVzdGluYXRpb25Ob2RlLT5jdXJyZW50VGltZSgpIDogMC47IH0KKyAgICBm
bG9hdCBzYW1wbGVSYXRlKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9kZXN0aW5hdGlvbk5vZGUg
PyBtX2Rlc3RpbmF0aW9uTm9kZS0+c2FtcGxlUmF0ZSgpIDogMC5mOyB9CisgICAgdW5zaWduZWQg
bG9uZyBhY3RpdmVTb3VyY2VDb3VudCgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PHVuc2ln
bmVkIGxvbmc+KG1fYWN0aXZlU291cmNlQ291bnQpOyB9CisKKyAgICB2b2lkIGluY3JlbWVudEFj
dGl2ZVNvdXJjZUNvdW50KCkgZmluYWw7CisgICAgdm9pZCBkZWNyZW1lbnRBY3RpdmVTb3VyY2VD
b3VudCgpIGZpbmFsOworCisgICAgRXhjZXB0aW9uT3I8UmVmPEF1ZGlvQnVmZmVyPj4gY3JlYXRl
QnVmZmVyKHVuc2lnbmVkIG51bWJlck9mQ2hhbm5lbHMsIHNpemVfdCBudW1iZXJPZkZyYW1lcywg
ZmxvYXQgc2FtcGxlUmF0ZSk7CisgICAgRXhjZXB0aW9uT3I8UmVmPEF1ZGlvQnVmZmVyPj4gY3Jl
YXRlQnVmZmVyKEFycmF5QnVmZmVyJiwgYm9vbCBtaXhUb01vbm8pOworCisgICAgLy8gQXN5bmNo
cm9ub3VzIGF1ZGlvIGZpbGUgZGF0YSBkZWNvZGluZy4KKyAgICB2b2lkIGRlY29kZUF1ZGlvRGF0
YShSZWY8QXJyYXlCdWZmZXI+JiYsIFJlZlB0cjxBdWRpb0J1ZmZlckNhbGxiYWNrPiYmLCBSZWZQ
dHI8QXVkaW9CdWZmZXJDYWxsYmFjaz4mJik7CisKKyAgICBBdWRpb0xpc3RlbmVyKiBsaXN0ZW5l
cigpIHsgcmV0dXJuIG1fbGlzdGVuZXIuZ2V0KCk7IH0KKworICAgIHZvaWQgc3VzcGVuZFJlbmRl
cmluZyhET01Qcm9taXNlRGVmZXJyZWQ8dm9pZD4mJik7CisgICAgdm9pZCByZXN1bWVSZW5kZXJp
bmcoRE9NUHJvbWlzZURlZmVycmVkPHZvaWQ+JiYpOworICAgIHZvaWQgY2xvc2UoRE9NUHJvbWlz
ZURlZmVycmVkPHZvaWQ+JiYpOworCisgICAgdXNpbmcgU3RhdGUgPSBBdWRpb0NvbnRleHRTdGF0
ZTsKKyAgICBTdGF0ZSBzdGF0ZSgpIGNvbnN0OworICAgIGJvb2wgaXNDbG9zZWQoKSBjb25zdCB7
IHJldHVybiBtX3N0YXRlID09IFN0YXRlOjpDbG9zZWQ7IH0KKworICAgIGJvb2wgd291bGRUYWlu
dE9yaWdpbihjb25zdCBVUkwmKSBjb25zdDsKKworICAgIC8vIFRoZSBBdWRpb05vZGUgY3JlYXRl
IG1ldGhvZHMgYXJlIGNhbGxlZCBvbiB0aGUgbWFpbiB0aHJlYWQgKGZyb20gSmF2YVNjcmlwdCku
CisgICAgRXhjZXB0aW9uT3I8UmVmPEF1ZGlvQnVmZmVyU291cmNlTm9kZT4+IGNyZWF0ZUJ1ZmZl
clNvdXJjZSgpOworI2lmIEVOQUJMRShWSURFTykKKyAgICBFeGNlcHRpb25PcjxSZWY8TWVkaWFF
bGVtZW50QXVkaW9Tb3VyY2VOb2RlPj4gY3JlYXRlTWVkaWFFbGVtZW50U291cmNlKEhUTUxNZWRp
YUVsZW1lbnQmKTsKKyNlbmRpZgorI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCisgICAgRXhjZXB0
aW9uT3I8UmVmPE1lZGlhU3RyZWFtQXVkaW9Tb3VyY2VOb2RlPj4gY3JlYXRlTWVkaWFTdHJlYW1T
b3VyY2UoTWVkaWFTdHJlYW0mKTsKKyAgICBFeGNlcHRpb25PcjxSZWY8TWVkaWFTdHJlYW1BdWRp
b0Rlc3RpbmF0aW9uTm9kZT4+IGNyZWF0ZU1lZGlhU3RyZWFtRGVzdGluYXRpb24oKTsKKyNlbmRp
ZgorICAgIEV4Y2VwdGlvbk9yPFJlZjxHYWluTm9kZT4+IGNyZWF0ZUdhaW4oKTsKKyAgICBFeGNl
cHRpb25PcjxSZWY8QmlxdWFkRmlsdGVyTm9kZT4+IGNyZWF0ZUJpcXVhZEZpbHRlcigpOworICAg
IEV4Y2VwdGlvbk9yPFJlZjxXYXZlU2hhcGVyTm9kZT4+IGNyZWF0ZVdhdmVTaGFwZXIoKTsKKyAg
ICBFeGNlcHRpb25PcjxSZWY8RGVsYXlOb2RlPj4gY3JlYXRlRGVsYXkoZG91YmxlIG1heERlbGF5
VGltZSk7CisgICAgRXhjZXB0aW9uT3I8UmVmPFdlYktpdEF1ZGlvUGFubmVyTm9kZT4+IGNyZWF0
ZVBhbm5lcigpOworICAgIEV4Y2VwdGlvbk9yPFJlZjxDb252b2x2ZXJOb2RlPj4gY3JlYXRlQ29u
dm9sdmVyKCk7CisgICAgRXhjZXB0aW9uT3I8UmVmPER5bmFtaWNzQ29tcHJlc3Nvck5vZGU+PiBj
cmVhdGVEeW5hbWljc0NvbXByZXNzb3IoKTsKKyAgICBFeGNlcHRpb25PcjxSZWY8QW5hbHlzZXJO
b2RlPj4gY3JlYXRlQW5hbHlzZXIoKTsKKyAgICBFeGNlcHRpb25PcjxSZWY8U2NyaXB0UHJvY2Vz
c29yTm9kZT4+IGNyZWF0ZVNjcmlwdFByb2Nlc3NvcihzaXplX3QgYnVmZmVyU2l6ZSwgc2l6ZV90
IG51bWJlck9mSW5wdXRDaGFubmVscywgc2l6ZV90IG51bWJlck9mT3V0cHV0Q2hhbm5lbHMpOwor
ICAgIEV4Y2VwdGlvbk9yPFJlZjxDaGFubmVsU3BsaXR0ZXJOb2RlPj4gY3JlYXRlQ2hhbm5lbFNw
bGl0dGVyKHNpemVfdCBudW1iZXJPZk91dHB1dHMpOworICAgIEV4Y2VwdGlvbk9yPFJlZjxDaGFu
bmVsTWVyZ2VyTm9kZT4+IGNyZWF0ZUNoYW5uZWxNZXJnZXIoc2l6ZV90IG51bWJlck9mSW5wdXRz
KTsKKyAgICBFeGNlcHRpb25PcjxSZWY8T3NjaWxsYXRvck5vZGU+PiBjcmVhdGVPc2NpbGxhdG9y
KCk7CisgICAgRXhjZXB0aW9uT3I8UmVmPFBlcmlvZGljV2F2ZT4+IGNyZWF0ZVBlcmlvZGljV2F2
ZShGbG9hdDMyQXJyYXkmIHJlYWwsIEZsb2F0MzJBcnJheSYgaW1hZ2luYXJ5KTsKKworICAgIC8v
IFdoZW4gYSBzb3VyY2Ugbm9kZSBoYXMgbm8gbW9yZSBwcm9jZXNzaW5nIHRvIGRvIChoYXMgZmlu
aXNoZWQgcGxheWluZyksIHRoZW4gaXQgdGVsbHMgdGhlIGNvbnRleHQgdG8gZGVyZWZlcmVuY2Ug
aXQuCisgICAgdm9pZCBub3RpZnlOb2RlRmluaXNoZWRQcm9jZXNzaW5nKEF1ZGlvTm9kZSopIGZp
bmFsOworCisgICAgLy8gQ2FsbGVkIGF0IHRoZSBzdGFydCBvZiBlYWNoIHJlbmRlciBxdWFudHVt
LgorICAgIHZvaWQgaGFuZGxlUHJlUmVuZGVyVGFza3MoKSBmaW5hbDsKKworICAgIC8vIENhbGxl
ZCBhdCB0aGUgZW5kIG9mIGVhY2ggcmVuZGVyIHF1YW50dW0uCisgICAgdm9pZCBoYW5kbGVQb3N0
UmVuZGVyVGFza3MoKSBmaW5hbDsKKworICAgIC8vIENhbGxlZCBwZXJpb2RpY2FsbHkgYXQgdGhl
IGVuZCBvZiBlYWNoIHJlbmRlciBxdWFudHVtIHRvIGRlcmVmZXJlbmNlIGZpbmlzaGVkIHNvdXJj
ZSBub2Rlcy4KKyAgICB2b2lkIGRlcmVmRmluaXNoZWRTb3VyY2VOb2RlcygpOworCisgICAgLy8g
V2Ugc2NoZWR1bGUgZGVsZXRpb24gb2YgYWxsIG1hcmtlZCBub2RlcyBhdCB0aGUgZW5kIG9mIGVh
Y2ggcmVhbHRpbWUgcmVuZGVyIHF1YW50dW0uCisgICAgdm9pZCBtYXJrRm9yRGVsZXRpb24oQXVk
aW9Ob2RlJikgZmluYWw7CisgICAgdm9pZCBkZWxldGVNYXJrZWROb2RlcygpIGZpbmFsOworCisg
ICAgLy8gQXVkaW9Db250ZXh0IGNhbiBwdWxsIG5vZGUocykgYXQgdGhlIGVuZCBvZiBlYWNoIHJl
bmRlciBxdWFudHVtIGV2ZW4gd2hlbiB0aGV5IGFyZSBub3QgY29ubmVjdGVkIHRvIGFueSBkb3du
c3RyZWFtIG5vZGVzLgorICAgIC8vIFRoZXNlIHR3byBtZXRob2RzIGFyZSBjYWxsZWQgYnkgdGhl
IG5vZGVzIHdobyB3YW50IHRvIGFkZC9yZW1vdmUgdGhlbXNlbHZlcyBpbnRvL2Zyb20gdGhlIGF1
dG9tYXRpYyBwdWxsIGxpc3RzLgorICAgIHZvaWQgYWRkQXV0b21hdGljUHVsbE5vZGUoQXVkaW9O
b2RlJikgZmluYWw7CisgICAgdm9pZCByZW1vdmVBdXRvbWF0aWNQdWxsTm9kZShBdWRpb05vZGUm
KSBmaW5hbDsKKworICAgIC8vIENhbGxlZCByaWdodCBiZWZvcmUgaGFuZGxlUG9zdFJlbmRlclRh
c2tzKCkgdG8gaGFuZGxlIG5vZGVzIHdoaWNoIG5lZWQgdG8gYmUgcHVsbGVkIGV2ZW4gd2hlbiB0
aGV5IGFyZSBub3QgY29ubmVjdGVkIHRvIGFueXRoaW5nLgorICAgIHZvaWQgcHJvY2Vzc0F1dG9t
YXRpY1B1bGxOb2RlcyhzaXplX3QgZnJhbWVzVG9Qcm9jZXNzKSBmaW5hbDsKKworICAgIC8vIEtl
ZXBzIHRyYWNrIG9mIHRoZSBudW1iZXIgb2YgY29ubmVjdGlvbnMgbWFkZS4KKyAgICB2b2lkIGlu
Y3JlbWVudENvbm5lY3Rpb25Db3VudCgpIGZpbmFsCisgICAgeworICAgICAgICBBU1NFUlQoaXNN
YWluVGhyZWFkKCkpOworICAgICAgICBtX2Nvbm5lY3Rpb25Db3VudCsrOworICAgIH0KKworICAg
IHVuc2lnbmVkIGNvbm5lY3Rpb25Db3VudCgpIGNvbnN0IHsgcmV0dXJuIG1fY29ubmVjdGlvbkNv
dW50OyB9CisKKyAgICAvLworICAgIC8vIFRocmVhZCBTYWZldHkgYW5kIEdyYXBoIExvY2tpbmc6
CisgICAgLy8KKworICAgIHZvaWQgc2V0QXVkaW9UaHJlYWQoVGhyZWFkJiB0aHJlYWQpIGZpbmFs
IHsgbV9hdWRpb1RocmVhZCA9ICZ0aHJlYWQ7IH0gLy8gRklYTUU6IGNoZWNrIGVpdGhlciBub3Qg
aW5pdGlhbGl6ZWQgb3IgdGhlIHNhbWUKKyAgICBUaHJlYWQqIGF1ZGlvVGhyZWFkKCkgY29uc3Qg
eyByZXR1cm4gbV9hdWRpb1RocmVhZDsgfQorICAgIGJvb2wgaXNBdWRpb1RocmVhZCgpIGNvbnN0
IGZpbmFsOworCisgICAgLy8gUmV0dXJucyB0cnVlIG9ubHkgYWZ0ZXIgdGhlIGF1ZGlvIHRocmVh
ZCBoYXMgYmVlbiBzdGFydGVkIGFuZCB0aGVuIHNodXRkb3duLgorICAgIGJvb2wgaXNBdWRpb1Ro
cmVhZEZpbmlzaGVkKCkgZmluYWwgeyByZXR1cm4gbV9pc0F1ZGlvVGhyZWFkRmluaXNoZWQ7IH0K
KworICAgIC8vIG11c3RSZWxlYXNlTG9jayBpcyBzZXQgdG8gdHJ1ZSBpZiB3ZSBhY3F1aXJlZCB0
aGUgbG9jayBpbiB0aGlzIG1ldGhvZCBjYWxsIGFuZCBjYWxsZXIgbXVzdCB1bmxvY2soKSwgZmFs
c2UgaWYgaXQgd2FzIHByZXZpb3VzbHkgYWNxdWlyZWQuCisgICAgdm9pZCBsb2NrKGJvb2wmIG11
c3RSZWxlYXNlTG9jaykgZmluYWw7CisKKyAgICAvLyBSZXR1cm5zIHRydWUgaWYgd2Ugb3duIHRo
ZSBsb2NrLgorICAgIC8vIG11c3RSZWxlYXNlTG9jayBpcyBzZXQgdG8gdHJ1ZSBpZiB3ZSBhY3F1
aXJlZCB0aGUgbG9jayBpbiB0aGlzIG1ldGhvZCBjYWxsIGFuZCBjYWxsZXIgbXVzdCB1bmxvY2so
KSwgZmFsc2UgaWYgaXQgd2FzIHByZXZpb3VzbHkgYWNxdWlyZWQuCisgICAgYm9vbCB0cnlMb2Nr
KGJvb2wmIG11c3RSZWxlYXNlTG9jaykgZmluYWw7CisKKyAgICB2b2lkIHVubG9jaygpIGZpbmFs
OworCisgICAgLy8gUmV0dXJucyB0cnVlIGlmIHRoaXMgdGhyZWFkIG93bnMgdGhlIGNvbnRleHQn
cyBsb2NrLgorICAgIGJvb2wgaXNHcmFwaE93bmVyKCkgY29uc3QgZmluYWw7CisKKyAgICAvLyBS
ZXR1cm5zIHRoZSBtYXhpbXVtIG51bWJlciBvZiBjaGFubmVscyB3ZSBjYW4gc3VwcG9ydC4KKyAg
ICBzdGF0aWMgdW5zaWduZWQgbWF4TnVtYmVyT2ZDaGFubmVscygpIHsgcmV0dXJuIE1heE51bWJl
ck9mQ2hhbm5lbHM7IH0KKworICAgIC8vIEluIEF1ZGlvTm9kZTo6ZGVyZWYoKSBhIHRyeUxvY2so
KSBpcyB1c2VkIGZvciBjYWxsaW5nIGZpbmlzaERlcmVmKCksIGJ1dCBpZiBpdCBmYWlscyBrZWVw
IHRyYWNrIGhlcmUuCisgICAgdm9pZCBhZGREZWZlcnJlZEZpbmlzaERlcmVmKEF1ZGlvTm9kZSop
IGZpbmFsOworCisgICAgLy8gSW4gdGhlIGF1ZGlvIHRocmVhZCBhdCB0aGUgc3RhcnQgb2YgZWFj
aCByZW5kZXIgY3ljbGUsIHdlJ2xsIGNhbGwgaGFuZGxlRGVmZXJyZWRGaW5pc2hEZXJlZnMoKS4K
KyAgICB2b2lkIGhhbmRsZURlZmVycmVkRmluaXNoRGVyZWZzKCk7CisKKyAgICAvLyBPbmx5IGFj
Y2Vzc2VkIHdoZW4gdGhlIGdyYXBoIGxvY2sgaXMgaGVsZC4KKyAgICB2b2lkIG1hcmtTdW1taW5n
SnVuY3Rpb25EaXJ0eShBdWRpb1N1bW1pbmdKdW5jdGlvbiopIGZpbmFsOworICAgIHZvaWQgbWFy
a0F1ZGlvTm9kZU91dHB1dERpcnR5KEF1ZGlvTm9kZU91dHB1dCopIGZpbmFsOworCisgICAgLy8g
TXVzdCBiZSBjYWxsZWQgb24gbWFpbiB0aHJlYWQuCisgICAgdm9pZCByZW1vdmVNYXJrZWRTdW1t
aW5nSnVuY3Rpb24oQXVkaW9TdW1taW5nSnVuY3Rpb24qKSBmaW5hbDsKKworICAgIC8vIEV2ZW50
VGFyZ2V0CisgICAgRXZlbnRUYXJnZXRJbnRlcmZhY2UgZXZlbnRUYXJnZXRJbnRlcmZhY2UoKSBj
b25zdCBmaW5hbDsKKworICAgIHZvaWQgc3RhcnRSZW5kZXJpbmcoKTsKKyAgICB2b2lkIGZpbmlz
aGVkUmVuZGVyaW5nKGJvb2wgZGlkUmVuZGVyaW5nKSBmaW5hbDsKKworICAgIHN0YXRpYyB1bnNp
Z25lZCBzX2hhcmR3YXJlQ29udGV4dENvdW50OworCisgICAgLy8gUmVzdHJpY3Rpb25zIHRvIGNo
YW5nZSBkZWZhdWx0IGJlaGF2aW9ycy4KKyAgICBCZWhhdmlvclJlc3RyaWN0aW9ucyBiZWhhdmlv
clJlc3RyaWN0aW9ucygpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fcmVzdHJpY3Rpb25zOyB9Cisg
ICAgdm9pZCBhZGRCZWhhdmlvclJlc3RyaWN0aW9uKEJlaGF2aW9yUmVzdHJpY3Rpb25zIHJlc3Ry
aWN0aW9uKSBmaW5hbCB7IG1fcmVzdHJpY3Rpb25zIHw9IHJlc3RyaWN0aW9uOyB9CisgICAgdm9p
ZCByZW1vdmVCZWhhdmlvclJlc3RyaWN0aW9uKEJlaGF2aW9yUmVzdHJpY3Rpb25zIHJlc3RyaWN0
aW9uKSBmaW5hbCB7IG1fcmVzdHJpY3Rpb25zICY9IH5yZXN0cmljdGlvbjsgfQorCisgICAgdm9p
ZCBpc1BsYXlpbmdBdWRpb0RpZENoYW5nZSgpIGZpbmFsOworCisgICAgdm9pZCBub2RlV2lsbEJl
Z2luUGxheWJhY2soKSBmaW5hbDsKKworI2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRAorICAgIGNv
bnN0IExvZ2dlciYgbG9nZ2VyKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9sb2dnZXIuZ2V0KCk7
IH0KKyAgICBjb25zdCB2b2lkKiBsb2dJZGVudGlmaWVyKCkgY29uc3QgZmluYWwgeyByZXR1cm4g
bV9sb2dJZGVudGlmaWVyOyB9CisgICAgV1RGTG9nQ2hhbm5lbCYgbG9nQ2hhbm5lbCgpIGNvbnN0
IGZpbmFsOworICAgIGNvbnN0IHZvaWQqIG5leHRBdWRpb05vZGVMb2dJZGVudGlmaWVyKCkgZmlu
YWwgeyByZXR1cm4gY2hpbGRMb2dJZGVudGlmaWVyKG1fbG9nSWRlbnRpZmllciwgKyttX25leHRB
dWRpb05vZGVJZGVudGlmaWVyKTsgfQorICAgIGNvbnN0IHZvaWQqIG5leHRBdWRpb1BhcmFtZXRl
ckxvZ0lkZW50aWZpZXIoKSBmaW5hbCB7IHJldHVybiBjaGlsZExvZ0lkZW50aWZpZXIobV9sb2dJ
ZGVudGlmaWVyLCArK21fbmV4dEF1ZGlvUGFyYW1ldGVySWRlbnRpZmllcik7IH0KKyNlbmRpZgor
CisgICAgdm9pZCBwb3N0VGFzayhXVEY6OkZ1bmN0aW9uPHZvaWQoKT4mJikgZmluYWw7CisgICAg
Ym9vbCBpc1N0b3BwZWQoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2lzU3RvcFNjaGVkdWxlZDsg
fQorICAgIGNvbnN0IFNlY3VyaXR5T3JpZ2luKiBvcmlnaW4oKSBjb25zdCBmaW5hbDsKKyAgICB2
b2lkIGFkZENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VTb3VyY2UsIE1lc3NhZ2VMZXZlbCwgY29uc3Qg
U3RyaW5nJiBtZXNzYWdlKSBmaW5hbDsKKworcHJvdGVjdGVkOgorICAgIGV4cGxpY2l0IFdlYktp
dEF1ZGlvQ29udGV4dChEb2N1bWVudCYpOworICAgIFdlYktpdEF1ZGlvQ29udGV4dChEb2N1bWVu
dCYsIEF1ZGlvQnVmZmVyKiByZW5kZXJUYXJnZXQpOworCisgICAgc3RhdGljIGJvb2wgaXNTYW1w
bGVSYXRlUmFuZ2VHb29kKGZsb2F0IHNhbXBsZVJhdGUpOworICAgIHZvaWQgY2xlYXJQZW5kaW5n
QWN0aXZpdHkoKTsKKyAgICB2b2lkIG1ha2VQZW5kaW5nQWN0aXZpdHkoKTsKKworcHJpdmF0ZToK
KyAgICB2b2lkIGNvbnN0cnVjdENvbW1vbigpOworCisgICAgdm9pZCBsYXp5SW5pdGlhbGl6ZSgp
OworICAgIHZvaWQgdW5pbml0aWFsaXplKCk7CisKKyAgICBib29sIHdpbGxCZWdpblBsYXliYWNr
KCk7CisgICAgYm9vbCB3aWxsUGF1c2VQbGF5YmFjaygpOworCisgICAgYm9vbCB1c2VyR2VzdHVy
ZVJlcXVpcmVkRm9yQXVkaW9TdGFydCgpIGNvbnN0IHsgcmV0dXJuICFpc09mZmxpbmVDb250ZXh0
KCkgJiYgbV9yZXN0cmljdGlvbnMgJiBSZXF1aXJlVXNlckdlc3R1cmVGb3JBdWRpb1N0YXJ0UmVz
dHJpY3Rpb247IH0KKyAgICBib29sIHBhZ2VDb25zZW50UmVxdWlyZWRGb3JBdWRpb1N0YXJ0KCkg
Y29uc3QgeyByZXR1cm4gIWlzT2ZmbGluZUNvbnRleHQoKSAmJiBtX3Jlc3RyaWN0aW9ucyAmIFJl
cXVpcmVQYWdlQ29uc2VudEZvckF1ZGlvU3RhcnRSZXN0cmljdGlvbjsgfQorCisgICAgdm9pZCBz
ZXRTdGF0ZShTdGF0ZSk7CisKKyAgICB2b2lkIGNsZWFyKCk7CisKKyAgICB2b2lkIHNjaGVkdWxl
Tm9kZURlbGV0aW9uKCk7CisKKyAgICB2b2lkIG1lZGlhQ2FuU3RhcnQoRG9jdW1lbnQmKSBvdmVy
cmlkZTsKKworICAgIC8vIEV2ZW50VGFyZ2V0CisgICAgdm9pZCBkaXNwYXRjaEV2ZW50KEV2ZW50
JikgZmluYWw7CisKKyAgICAvLyBNZWRpYVByb2R1Y2VyCisgICAgTWVkaWFQcm9kdWNlcjo6TWVk
aWFTdGF0ZUZsYWdzIG1lZGlhU3RhdGUoKSBjb25zdCBvdmVycmlkZTsKKyAgICB2b2lkIHBhZ2VN
dXRlZFN0YXRlRGlkQ2hhbmdlKCkgb3ZlcnJpZGU7CisKKyAgICAvLyBUaGUgY29udGV4dCBpdHNl
bGYga2VlcHMgYSByZWZlcmVuY2UgdG8gYWxsIHNvdXJjZSBub2Rlcy4gIFRoZSBzb3VyY2Ugbm9k
ZXMsIHRoZW4gcmVmZXJlbmNlIGFsbCBub2RlcyB0aGV5J3JlIGNvbm5lY3RlZCB0by4KKyAgICAv
LyBJbiB0dXJuLCB0aGVzZSBub2RlcyByZWZlcmVuY2UgYWxsIG5vZGVzIHRoZXkncmUgY29ubmVj
dGVkIHRvLiAgQWxsIG5vZGVzIGFyZSB1bHRpbWF0ZWx5IGNvbm5lY3RlZCB0byB0aGUgQXVkaW9E
ZXN0aW5hdGlvbk5vZGUuCisgICAgLy8gV2hlbiB0aGUgY29udGV4dCBkZXJlZmVyZW5jZXMgYSBz
b3VyY2Ugbm9kZSwgaXQgd2lsbCBiZSBkZWFjdGl2YXRlZCBmcm9tIHRoZSByZW5kZXJpbmcgZ3Jh
cGggYWxvbmcgd2l0aCBhbGwgb3RoZXIgbm9kZXMgaXQgaXMKKyAgICAvLyB1bmlxdWVseSBjb25u
ZWN0ZWQgdG8uICBTZWUgdGhlIEF1ZGlvTm9kZTo6cmVmKCkgYW5kIEF1ZGlvTm9kZTo6ZGVyZWYo
KSBtZXRob2RzIGZvciBtb3JlIGRldGFpbHMuCisgICAgdm9pZCByZWZOb2RlKEF1ZGlvTm9kZSYp
OworICAgIHZvaWQgZGVyZWZOb2RlKEF1ZGlvTm9kZSYpOworCisgICAgLy8gQWN0aXZlRE9NT2Jq
ZWN0IEFQSS4KKyAgICB2b2lkIHN1c3BlbmQoUmVhc29uRm9yU3VzcGVuc2lvbikgZmluYWw7Cisg
ICAgdm9pZCByZXN1bWUoKSBmaW5hbDsKKyAgICB2b2lkIHN0b3AoKSBvdmVycmlkZTsKKyAgICBj
b25zdCBjaGFyKiBhY3RpdmVET01PYmplY3ROYW1lKCkgY29uc3Qgb3ZlcnJpZGU7CisKKyAgICAv
LyBXaGVuIHRoZSBjb250ZXh0IGdvZXMgYXdheSwgdGhlcmUgbWlnaHQgc3RpbGwgYmUgc29tZSBz
b3VyY2VzIHdoaWNoIGhhdmVuJ3QgZmluaXNoZWQgcGxheWluZy4KKyAgICAvLyBNYWtlIHN1cmUg
dG8gZGVyZWZlcmVuY2UgdGhlbSBoZXJlLgorICAgIHZvaWQgZGVyZWZVbmZpbmlzaGVkU291cmNl
Tm9kZXMoKTsKKworICAgIC8vIFBsYXRmb3JtTWVkaWFTZXNzaW9uQ2xpZW50CisgICAgUGxhdGZv
cm1NZWRpYVNlc3Npb246Ok1lZGlhVHlwZSBtZWRpYVR5cGUoKSBjb25zdCBvdmVycmlkZSB7IHJl
dHVybiBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6TWVkaWFUeXBlOjpXZWJBdWRpbzsgfQorICAgIFBs
YXRmb3JtTWVkaWFTZXNzaW9uOjpNZWRpYVR5cGUgcHJlc2VudGF0aW9uVHlwZSgpIGNvbnN0IG92
ZXJyaWRlIHsgcmV0dXJuIFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpNZWRpYVR5cGU6OldlYkF1ZGlv
OyB9CisgICAgdm9pZCBtYXlSZXN1bWVQbGF5YmFjayhib29sIHNob3VsZFJlc3VtZSkgb3ZlcnJp
ZGU7CisgICAgdm9pZCBzdXNwZW5kUGxheWJhY2soKSBvdmVycmlkZTsKKyAgICBib29sIGNhblJl
Y2VpdmVSZW1vdGVDb250cm9sQ29tbWFuZHMoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxz
ZTsgfQorICAgIHZvaWQgZGlkUmVjZWl2ZVJlbW90ZUNvbnRyb2xDb21tYW5kKFBsYXRmb3JtTWVk
aWFTZXNzaW9uOjpSZW1vdGVDb250cm9sQ29tbWFuZFR5cGUsIGNvbnN0IFBsYXRmb3JtTWVkaWFT
ZXNzaW9uOjpSZW1vdGVDb21tYW5kQXJndW1lbnQqKSBvdmVycmlkZSB7IH0KKyAgICBib29sIHN1
cHBvcnRzU2Vla2luZygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgYm9v
bCBzaG91bGRPdmVycmlkZUJhY2tncm91bmRQbGF5YmFja1Jlc3RyaWN0aW9uKFBsYXRmb3JtTWVk
aWFTZXNzaW9uOjpJbnRlcnJ1cHRpb25UeXBlKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxz
ZTsgfQorICAgIGJvb2wgY2FuUHJvZHVjZUF1ZGlvKCkgY29uc3QgZmluYWwgeyByZXR1cm4gdHJ1
ZTsgfQorICAgIGJvb2wgaXNTdXNwZW5kZWQoKSBjb25zdCBmaW5hbDsKKworICAgIHZvaWQgdmlz
aWJpbGl0eVN0YXRlQ2hhbmdlZCgpIGZpbmFsOworCisgICAgYm9vbCBpc0F1ZGlvQ29udGV4dCgp
IGNvbnN0IGZpbmFsIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgYm9vbCBpc1dlYktpdEF1ZGlvQ29u
dGV4dCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIHRydWU7IH0KKworICAgIHZvaWQgaGFuZGxlRGly
dHlBdWRpb1N1bW1pbmdKdW5jdGlvbnMoKTsKKyAgICB2b2lkIGhhbmRsZURpcnR5QXVkaW9Ob2Rl
T3V0cHV0cygpOworCisgICAgdm9pZCBhZGRSZWFjdGlvbihTdGF0ZSwgRE9NUHJvbWlzZURlZmVy
cmVkPHZvaWQ+JiYpOworICAgIHZvaWQgdXBkYXRlQXV0b21hdGljUHVsbE5vZGVzKCk7CisKKyNp
ZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKKyAgICBjb25zdCBjaGFyKiBsb2dDbGFzc05hbWUoKSBj
b25zdCBmaW5hbCB7IHJldHVybiAiV2ViS2l0QXVkaW9Db250ZXh0IjsgfQorCisgICAgUmVmPExv
Z2dlcj4gbV9sb2dnZXI7CisgICAgY29uc3Qgdm9pZCogbV9sb2dJZGVudGlmaWVyOworICAgIHVp
bnQ2NF90IG1fbmV4dEF1ZGlvTm9kZUlkZW50aWZpZXIgeyAwIH07CisgICAgdWludDY0X3QgbV9u
ZXh0QXVkaW9QYXJhbWV0ZXJJZGVudGlmaWVyIHsgMCB9OworI2VuZGlmCisKKyAgICAvLyBPbmx5
IGFjY2Vzc2VkIGluIHRoZSBhdWRpbyB0aHJlYWQuCisgICAgVmVjdG9yPEF1ZGlvTm9kZSo+IG1f
ZmluaXNoZWROb2RlczsKKworICAgIC8vIFdlIGRvbid0IHVzZSBSZWZQdHI8QXVkaW9Ob2RlPiBo
ZXJlIGJlY2F1c2UgQXVkaW9Ob2RlIGhhcyBhIG1vcmUgY29tcGxleCByZWYoKSAvIGRlcmVmKCkg
aW1wbGVtZW50YXRpb24KKyAgICAvLyB3aXRoIGFuIG9wdGlvbmFsIGFyZ3VtZW50IGZvciByZWZU
eXBlLiAgV2UgbmVlZCB0byB1c2UgdGhlIHNwZWNpYWwgcmVmVHlwZTogUmVmVHlwZUNvbm5lY3Rp
b24KKyAgICAvLyBFaXRoZXIgYWNjZXNzZWQgd2hlbiB0aGUgZ3JhcGggbG9jayBpcyBoZWxkLCBv
ciBvbiB0aGUgbWFpbiB0aHJlYWQgd2hlbiB0aGUgYXVkaW8gdGhyZWFkIGhhcyBmaW5pc2hlZC4K
KyAgICBWZWN0b3I8QXVkaW9Ob2RlKj4gbV9yZWZlcmVuY2VkTm9kZXM7CisKKyAgICAvLyBBY2N1
bXVsYXRlIG5vZGVzIHdoaWNoIG5lZWQgdG8gYmUgZGVsZXRlZCBoZXJlLgorICAgIC8vIFRoaXMg
aXMgY29waWVkIHRvIG1fbm9kZXNUb0RlbGV0ZSBhdCB0aGUgZW5kIG9mIGEgcmVuZGVyIGN5Y2xl
IGluIGhhbmRsZVBvc3RSZW5kZXJUYXNrcygpLCB3aGVyZSB3ZSdyZSBhc3N1cmVkIG9mIGEgc3Rh
YmxlIGdyYXBoCisgICAgLy8gc3RhdGUgd2hpY2ggd2lsbCBoYXZlIG5vIHJlZmVyZW5jZXMgdG8g
YW55IG9mIHRoZSBub2RlcyBpbiBtX25vZGVzVG9EZWxldGUgb25jZSB0aGUgY29udGV4dCBsb2Nr
IGlzIHJlbGVhc2VkCisgICAgLy8gKHdoZW4gaGFuZGxlUG9zdFJlbmRlclRhc2tzKCkgaGFzIGNv
bXBsZXRlZCkuCisgICAgVmVjdG9yPEF1ZGlvTm9kZSo+IG1fbm9kZXNNYXJrZWRGb3JEZWxldGlv
bjsKKworICAgIC8vIFRoZXkgd2lsbCBiZSBzY2hlZHVsZWQgZm9yIGRlbGV0aW9uIChvbiB0aGUg
bWFpbiB0aHJlYWQpIGF0IHRoZSBlbmQgb2YgYSByZW5kZXIgY3ljbGUgKGluIHJlYWx0aW1lIHRo
cmVhZCkuCisgICAgVmVjdG9yPEF1ZGlvTm9kZSo+IG1fbm9kZXNUb0RlbGV0ZTsKKworICAgIGJv
b2wgbV9pc0RlbGV0aW9uU2NoZWR1bGVkIHsgZmFsc2UgfTsKKyAgICBib29sIG1faXNTdG9wU2No
ZWR1bGVkIHsgZmFsc2UgfTsKKyAgICBib29sIG1faXNJbml0aWFsaXplZCB7IGZhbHNlIH07Cisg
ICAgYm9vbCBtX2lzQXVkaW9UaHJlYWRGaW5pc2hlZCB7IGZhbHNlIH07CisgICAgYm9vbCBtX2F1
dG9tYXRpY1B1bGxOb2Rlc05lZWRVcGRhdGluZyB7IGZhbHNlIH07CisgICAgYm9vbCBtX2lzT2Zm
bGluZUNvbnRleHQgeyBmYWxzZSB9OworCisgICAgLy8gT25seSBhY2Nlc3NlZCB3aGVuIHRoZSBn
cmFwaCBsb2NrIGlzIGhlbGQuCisgICAgSGFzaFNldDxBdWRpb1N1bW1pbmdKdW5jdGlvbio+IG1f
ZGlydHlTdW1taW5nSnVuY3Rpb25zOworICAgIEhhc2hTZXQ8QXVkaW9Ob2RlT3V0cHV0Kj4gbV9k
aXJ0eUF1ZGlvTm9kZU91dHB1dHM7CisKKyAgICAvLyBGb3IgdGhlIHNha2Ugb2YgdGhyZWFkIHNh
ZmV0eSwgd2UgbWFpbnRhaW4gYSBzZXBlcmF0ZSBWZWN0b3Igb2YgYXV0b21hdGljIHB1bGwgbm9k
ZXMgZm9yIHJlbmRlcmluZyBpbiBtX3JlbmRlcmluZ0F1dG9tYXRpY1B1bGxOb2Rlcy4KKyAgICAv
LyBJdCB3aWxsIGJlIGNvcGllZCBmcm9tIG1fYXV0b21hdGljUHVsbE5vZGVzIGJ5IHVwZGF0ZUF1
dG9tYXRpY1B1bGxOb2RlcygpIGF0IHRoZSB2ZXJ5IHN0YXJ0IG9yIGVuZCBvZiB0aGUgcmVuZGVy
aW5nIHF1YW50dW0uCisgICAgSGFzaFNldDxBdWRpb05vZGUqPiBtX2F1dG9tYXRpY1B1bGxOb2Rl
czsKKyAgICBWZWN0b3I8QXVkaW9Ob2RlKj4gbV9yZW5kZXJpbmdBdXRvbWF0aWNQdWxsTm9kZXM7
CisgICAgLy8gT25seSBhY2Nlc3NlZCBpbiB0aGUgYXVkaW8gdGhyZWFkLgorICAgIFZlY3RvcjxB
dWRpb05vZGUqPiBtX2RlZmVycmVkRmluaXNoRGVyZWZMaXN0OworICAgIFZlY3RvcjxWZWN0b3I8
RE9NUHJvbWlzZURlZmVycmVkPHZvaWQ+Pj4gbV9zdGF0ZVJlYWN0aW9uczsKKworICAgIHN0ZDo6
dW5pcXVlX3B0cjxQbGF0Zm9ybU1lZGlhU2Vzc2lvbj4gbV9tZWRpYVNlc3Npb247CisgICAgVW5p
cXVlUmVmPE1haW5UaHJlYWRHZW5lcmljRXZlbnRRdWV1ZT4gbV9ldmVudFF1ZXVlOworCisgICAg
UmVmUHRyPEF1ZGlvQnVmZmVyPiBtX3JlbmRlclRhcmdldDsKKyAgICBSZWZQdHI8QXVkaW9EZXN0
aW5hdGlvbk5vZGU+IG1fZGVzdGluYXRpb25Ob2RlOworICAgIFJlZlB0cjxBdWRpb0xpc3RlbmVy
PiBtX2xpc3RlbmVyOworCisgICAgdW5zaWduZWQgbV9jb25uZWN0aW9uQ291bnQgeyAwIH07CisK
KyAgICAvLyBHcmFwaCBsb2NraW5nLgorICAgIExvY2sgbV9jb250ZXh0R3JhcGhNdXRleDsKKyAg
ICAvLyBGSVhNRTogVXNpbmcgdm9sYXRpbGUgc2VlbXMgaW5jb3JyZWN0LgorICAgIC8vIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODAzMzIKKyAgICBUaHJlYWQqIHZv
bGF0aWxlIG1fYXVkaW9UaHJlYWQgeyBudWxscHRyIH07CisgICAgVGhyZWFkKiB2b2xhdGlsZSBt
X2dyYXBoT3duZXJUaHJlYWQgeyBudWxscHRyIH07IC8vIGlmIHRoZSBsb2NrIGlzIGhlbGQgdGhl
biB0aGlzIGlzIHRoZSB0aHJlYWQgd2hpY2ggb3ducyBpdCwgb3RoZXJ3aXNlID09IG51bGxwdHIu
CisKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8QXN5bmNBdWRpb0RlY29kZXI+IG1fYXVkaW9EZWNvZGVy
OworCisgICAgLy8gVGhpcyBpcyBjb25zaWRlcmluZyAzMiBpcyBsYXJnZSBlbm91Z2ggZm9yIG11
bHRpcGxlIGNoYW5uZWxzIGF1ZGlvLgorICAgIC8vIEl0IGlzIHNvbWV3aGF0IGFyYml0cmFyeSBh
bmQgY291bGQgYmUgaW5jcmVhc2VkIGlmIG5lY2Vzc2FyeS4KKyAgICBlbnVtIHsgTWF4TnVtYmVy
T2ZDaGFubmVscyA9IDMyIH07CisKKyAgICAvLyBOdW1iZXIgb2YgQXVkaW9CdWZmZXJTb3VyY2VO
b2RlcyB0aGF0IGFyZSBhY3RpdmUgKHBsYXlpbmcpLgorICAgIHN0ZDo6YXRvbWljPGludD4gbV9h
Y3RpdmVTb3VyY2VDb3VudCB7IDAgfTsKKworICAgIEJlaGF2aW9yUmVzdHJpY3Rpb25zIG1fcmVz
dHJpY3Rpb25zIHsgTm9SZXN0cmljdGlvbnMgfTsKKworICAgIFN0YXRlIG1fc3RhdGUgeyBTdGF0
ZTo6U3VzcGVuZGVkIH07CisgICAgUmVmUHRyPFBlbmRpbmdBY3Rpdml0eTxXZWJLaXRBdWRpb0Nv
bnRleHQ+PiBtX3BlbmRpbmdBY3Rpdml0eTsKK307CisKK2lubGluZSBBdWRpb0NvbnRleHRTdGF0
ZSBXZWJLaXRBdWRpb0NvbnRleHQ6OnN0YXRlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9zdGF0
ZTsKK30KKworfSAvLyBXZWJDb3JlCisKK1NQRUNJQUxJWkVfVFlQRV9UUkFJVFNfQkVHSU4oV2Vi
Q29yZTo6V2ViS2l0QXVkaW9Db250ZXh0KQorICAgIHN0YXRpYyBib29sIGlzVHlwZShjb25zdCBX
ZWJDb3JlOjpBdWRpb0NvbnRleHRCYXNlJiBjb250ZXh0KSB7IHJldHVybiBjb250ZXh0LmlzV2Vi
S2l0QXVkaW9Db250ZXh0KCk7IH0KK1NQRUNJQUxJWkVfVFlQRV9UUkFJVFNfRU5EKCkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vV2ViS2l0QXVkaW9Db250ZXh0
LmlkbCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vV2ViS2l0QXVkaW9Db250ZXh0
LmlkbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi41Njk1YzczNjY5ODY3OGViMzZlZDY0ODkzYmQwMmI0Y2Q4YmRlMDBi
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9XZWJL
aXRBdWRpb0NvbnRleHQuaWRsCkBAIC0wLDAgKzEsOTMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTAsIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0Ug
QVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04KKyAqIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUworICogU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworWworICAgIEFj
dGl2ZURPTU9iamVjdCwKKyAgICBDb25kaXRpb25hbD1XRUJfQVVESU8sCisgICAgRW5hYmxlZEJ5
U2V0dGluZz1XZWJBdWRpbywKKyAgICBFeHBvcnRNYWNybz1XRUJDT1JFX0VYUE9SVCwKKyAgICBJ
bnRlcmZhY2VOYW1lPXdlYmtpdEF1ZGlvQ29udGV4dCwKK10gaW50ZXJmYWNlIFdlYktpdEF1ZGlv
Q29udGV4dCA6IEV2ZW50VGFyZ2V0IHsKKyAgICBbQ2FsbFdpdGg9RG9jdW1lbnQsIE1heVRocm93
RXhjZXB0aW9uXSBjb25zdHJ1Y3RvcigpOworCisgICAgLy8gQWxsIHJlbmRlcmVkIGF1ZGlvIHVs
dGltYXRlbHkgY29ubmVjdHMgdG8gZGVzdGluYXRpb24sIHdoaWNoIHJlcHJlc2VudHMgdGhlIGF1
ZGlvIGhhcmR3YXJlLgorICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBBdWRpb0Rlc3RpbmF0aW9uTm9k
ZSBkZXN0aW5hdGlvbjsKKworICAgIC8vIEFsbCBzY2hlZHVsZWQgdGltZXMgYXJlIHJlbGF0aXZl
IHRvIHRoaXMgdGltZSBpbiBzZWNvbmRzLgorICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSB1bnJlc3Ry
aWN0ZWQgZG91YmxlIGN1cnJlbnRUaW1lOworCisgICAgLy8gQWxsIEF1ZGlvTm9kZXMgaW4gdGhl
IGNvbnRleHQgcnVuIGF0IHRoaXMgc2FtcGxlLXJhdGUgKHNhbXBsZS1mcmFtZXMgcGVyIHNlY29u
ZCkuCisgICAgcmVhZG9ubHkgYXR0cmlidXRlIHVucmVzdHJpY3RlZCBmbG9hdCBzYW1wbGVSYXRl
OworCisgICAgLy8gQWxsIHBhbm5pbmcgaXMgcmVsYXRpdmUgdG8gdGhpcyBsaXN0ZW5lci4KKyAg
ICByZWFkb25seSBhdHRyaWJ1dGUgQXVkaW9MaXN0ZW5lciBsaXN0ZW5lcjsKKworICAgIFtJbXBs
ZW1lbnRlZEFzPXN1c3BlbmRSZW5kZXJpbmddIFByb21pc2U8dm9pZD4gc3VzcGVuZCgpOworICAg
IFtJbXBsZW1lbnRlZEFzPXJlc3VtZVJlbmRlcmluZ10gUHJvbWlzZTx2b2lkPiByZXN1bWUoKTsK
KyAgICBQcm9taXNlPHZvaWQ+IGNsb3NlKCk7CisKKyAgICByZWFkb25seSBhdHRyaWJ1dGUgQXVk
aW9Db250ZXh0U3RhdGUgc3RhdGU7CisgICAgYXR0cmlidXRlIEV2ZW50SGFuZGxlciBvbnN0YXRl
Y2hhbmdlOworCisgICAgLy8gTnVtYmVyIG9mIEF1ZGlvQnVmZmVyU291cmNlTm9kZXMgdGhhdCBh
cmUgY3VycmVudGx5IHBsYXlpbmcuCisgICAgcmVhZG9ubHkgYXR0cmlidXRlIHVuc2lnbmVkIGxv
bmcgYWN0aXZlU291cmNlQ291bnQ7CisKKyAgICBbTWF5VGhyb3dFeGNlcHRpb25dIEF1ZGlvQnVm
ZmVyIGNyZWF0ZUJ1ZmZlcih1bnNpZ25lZCBsb25nIG51bWJlck9mQ2hhbm5lbHMsIHVuc2lnbmVk
IGxvbmcgbnVtYmVyT2ZGcmFtZXMsIHVucmVzdHJpY3RlZCBmbG9hdCBzYW1wbGVSYXRlKTsKKyAg
ICBbTWF5VGhyb3dFeGNlcHRpb25dIEF1ZGlvQnVmZmVyIGNyZWF0ZUJ1ZmZlcihBcnJheUJ1ZmZl
ciBidWZmZXIsIGJvb2xlYW4gbWl4VG9Nb25vKTsKKworICAgIC8vIEFzeW5jaHJvbm91cyBhdWRp
byBmaWxlIGRhdGEgZGVjb2RpbmcuCisgICAgLy8gRklYTUU6IHN1Y2Nlc3NDYWxsYmFjayBzaG91
bGQgYmUgb3B0aW9uYWwgYW5kIHRoZSBjYWxsYmFja3Mgc2hvdWxkIG5vdCBiZSBudWxsYWJsZS4g
VGhpcyBzaG91bGQgYWxzbyByZXR1cm4gYSBQcm9taXNlLgorICAgIHZvaWQgZGVjb2RlQXVkaW9E
YXRhKEFycmF5QnVmZmVyIGF1ZGlvRGF0YSwgQXVkaW9CdWZmZXJDYWxsYmFjaz8gc3VjY2Vzc0Nh
bGxiYWNrLCBvcHRpb25hbCBBdWRpb0J1ZmZlckNhbGxiYWNrPyBlcnJvckNhbGxiYWNrKTsKKwor
ICAgIC8vIFNvdXJjZXMKKyAgICBbTWF5VGhyb3dFeGNlcHRpb25dIEF1ZGlvQnVmZmVyU291cmNl
Tm9kZSBjcmVhdGVCdWZmZXJTb3VyY2UoKTsKKworICAgIFtDb25kaXRpb25hbD1WSURFTywgTWF5
VGhyb3dFeGNlcHRpb25dIE1lZGlhRWxlbWVudEF1ZGlvU291cmNlTm9kZSBjcmVhdGVNZWRpYUVs
ZW1lbnRTb3VyY2UoSFRNTE1lZGlhRWxlbWVudCBtZWRpYUVsZW1lbnQpOworCisgICAgW0NvbmRp
dGlvbmFsPU1FRElBX1NUUkVBTSwgTWF5VGhyb3dFeGNlcHRpb25dIE1lZGlhU3RyZWFtQXVkaW9T
b3VyY2VOb2RlIGNyZWF0ZU1lZGlhU3RyZWFtU291cmNlKE1lZGlhU3RyZWFtIG1lZGlhU3RyZWFt
KTsKKyAgICBbQ29uZGl0aW9uYWw9TUVESUFfU1RSRUFNLCBNYXlUaHJvd0V4Y2VwdGlvbl0gTWVk
aWFTdHJlYW1BdWRpb0Rlc3RpbmF0aW9uTm9kZSBjcmVhdGVNZWRpYVN0cmVhbURlc3RpbmF0aW9u
KCk7CisKKyAgICAvLyBQcm9jZXNzaW5nIG5vZGVzCisgICAgW01heVRocm93RXhjZXB0aW9uXSBH
YWluTm9kZSBjcmVhdGVHYWluKCk7CisgICAgW01heVRocm93RXhjZXB0aW9uXSBEZWxheU5vZGUg
Y3JlYXRlRGVsYXkob3B0aW9uYWwgdW5yZXN0cmljdGVkIGRvdWJsZSBtYXhEZWxheVRpbWUgPSAx
KTsKKyAgICBbTWF5VGhyb3dFeGNlcHRpb25dIEJpcXVhZEZpbHRlck5vZGUgY3JlYXRlQmlxdWFk
RmlsdGVyKCk7CisgICAgW01heVRocm93RXhjZXB0aW9uXSBXYXZlU2hhcGVyTm9kZSBjcmVhdGVX
YXZlU2hhcGVyKCk7CisgICAgW01heVRocm93RXhjZXB0aW9uXSBXZWJLaXRBdWRpb1Bhbm5lck5v
ZGUgY3JlYXRlUGFubmVyKCk7CisgICAgW01heVRocm93RXhjZXB0aW9uXSBDb252b2x2ZXJOb2Rl
IGNyZWF0ZUNvbnZvbHZlcigpOworICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gRHluYW1pY3NDb21w
cmVzc29yTm9kZSBjcmVhdGVEeW5hbWljc0NvbXByZXNzb3IoKTsKKyAgICBbTWF5VGhyb3dFeGNl
cHRpb25dIEFuYWx5c2VyTm9kZSBjcmVhdGVBbmFseXNlcigpOworICAgIFtNYXlUaHJvd0V4Y2Vw
dGlvbl0gU2NyaXB0UHJvY2Vzc29yTm9kZSBjcmVhdGVTY3JpcHRQcm9jZXNzb3Iob3B0aW9uYWwg
dW5zaWduZWQgbG9uZyBidWZmZXJTaXplID0gMCwgb3B0aW9uYWwgdW5zaWduZWQgbG9uZyBudW1i
ZXJPZklucHV0Q2hhbm5lbHMgPSAyLCBvcHRpb25hbCB1bnNpZ25lZCBsb25nIG51bWJlck9mT3V0
cHV0Q2hhbm5lbHMgPSAyKTsKKyAgICBbTWF5VGhyb3dFeGNlcHRpb25dIE9zY2lsbGF0b3JOb2Rl
IGNyZWF0ZU9zY2lsbGF0b3IoKTsKKyAgICBbTWF5VGhyb3dFeGNlcHRpb25dIFBlcmlvZGljV2F2
ZSBjcmVhdGVQZXJpb2RpY1dhdmUoRmxvYXQzMkFycmF5IHJlYWwsIEZsb2F0MzJBcnJheSBpbWFn
KTsKKworICAgIC8vIENoYW5uZWwgc3BsaXR0aW5nIGFuZCBtZXJnaW5nCisgICAgW01heVRocm93
RXhjZXB0aW9uXSBDaGFubmVsU3BsaXR0ZXJOb2RlIGNyZWF0ZUNoYW5uZWxTcGxpdHRlcihvcHRp
b25hbCB1bnNpZ25lZCBsb25nIG51bWJlck9mT3V0cHV0cyA9IDYpOworICAgIFtNYXlUaHJvd0V4
Y2VwdGlvbl0gQ2hhbm5lbE1lcmdlck5vZGUgY3JlYXRlQ2hhbm5lbE1lcmdlcihvcHRpb25hbCB1
bnNpZ25lZCBsb25nIG51bWJlck9mSW5wdXRzID0gNik7CisKKyAgICAvLyBPZmZsaW5lIHJlbmRl
cmluZworICAgIC8vIHZvaWQgcHJlcGFyZU9mZmxpbmVCdWZmZXJSZW5kZXJpbmcodW5zaWduZWQg
bG9uZyBudW1iZXJPZkNoYW5uZWxzLCB1bnNpZ25lZCBsb25nIG51bWJlck9mRnJhbWVzLCB1bnJl
c3RyaWN0ZWQgZmxvYXQgc2FtcGxlUmF0ZSk7CisgICAgYXR0cmlidXRlIEV2ZW50SGFuZGxlciBv
bmNvbXBsZXRlOworICAgIHZvaWQgc3RhcnRSZW5kZXJpbmcoKTsKK307CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1dlYktpdEF1ZGlvUGFubmVyTm9kZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1dlYktpdEF1ZGlvUGFubmVyTm9kZS5j
cHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uMjU4ZjQ1ZTdjZmQ5MWM4MjJjNjk5MmU3NThkYWE3NThhZDc5MDJlMgot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vV2ViS2l0
QXVkaW9QYW5uZXJOb2RlLmNwcApAQCAtMCwwICsxLDM2MyBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxMCwgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQ
T1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUwor
ICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OCisgKiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKKyAqIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNs
dWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJXZWJLaXRBdWRpb1Bhbm5lck5vZGUuaCIKKworI2lm
IEVOQUJMRShXRUJfQVVESU8pCisKKyNpbmNsdWRlICJBdWRpb0J1ZmZlclNvdXJjZU5vZGUuaCIK
KyNpbmNsdWRlICJBdWRpb0J1cy5oIgorI2luY2x1ZGUgIkF1ZGlvQ29udGV4dC5oIgorI2luY2x1
ZGUgIkF1ZGlvTm9kZUlucHV0LmgiCisjaW5jbHVkZSAiQXVkaW9Ob2RlT3V0cHV0LmgiCisjaW5j
bHVkZSAiSFJURkRhdGFiYXNlTG9hZGVyLmgiCisjaW5jbHVkZSAiSFJURlBhbm5lci5oIgorI2lu
Y2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKKyNpbmNsdWRlIDx3dGYvSXNvTWFsbG9j
SW5saW5lcy5oPgorI2luY2x1ZGUgPHd0Zi9NYXRoRXh0cmFzLmg+CisKK25hbWVzcGFjZSBXZWJD
b3JlIHsKKworV1RGX01BS0VfSVNPX0FMTE9DQVRFRF9JTVBMKFdlYktpdEF1ZGlvUGFubmVyTm9k
ZSk7CisKK3N0YXRpYyB2b2lkIGZpeE5BTnMoZG91YmxlICZ4KQoreworICAgIGlmIChzdGQ6Omlz
bmFuKHgpIHx8IHN0ZDo6aXNpbmYoeCkpCisgICAgICAgIHggPSAwLjA7Cit9CisKK1dlYktpdEF1
ZGlvUGFubmVyTm9kZTo6V2ViS2l0QXVkaW9QYW5uZXJOb2RlKFdlYktpdEF1ZGlvQ29udGV4dCYg
Y29udGV4dCwgZmxvYXQgc2FtcGxlUmF0ZSkKKyAgICA6IFBhbm5lck5vZGVCYXNlKGNvbnRleHQs
IHNhbXBsZVJhdGUpCisgICAgLCBtX3Bhbm5pbmdNb2RlbChQYW5uaW5nTW9kZWxUeXBlOjpIUlRG
KQorICAgICwgbV9sYXN0R2FpbigtMS4wKQorICAgICwgbV9jb25uZWN0aW9uQ291bnQoMCkKK3sK
KyAgICBzZXROb2RlVHlwZShOb2RlVHlwZVBhbm5lcik7CisKKyAgICAvLyBMb2FkIHRoZSBIUlRG
IGRhdGFiYXNlIGFzeW5jaHJvbm91c2x5IHNvIHdlIGRvbid0IGJsb2NrIHRoZSBKYXZhc2NyaXB0
IHRocmVhZCB3aGlsZSBjcmVhdGluZyB0aGUgSFJURiBkYXRhYmFzZS4KKyAgICBtX2hydGZEYXRh
YmFzZUxvYWRlciA9IEhSVEZEYXRhYmFzZUxvYWRlcjo6Y3JlYXRlQW5kTG9hZEFzeW5jaHJvbm91
c2x5SWZOZWNlc3NhcnkoY29udGV4dC5zYW1wbGVSYXRlKCkpOworCisgICAgYWRkSW5wdXQobWFr
ZVVuaXF1ZTxBdWRpb05vZGVJbnB1dD4odGhpcykpOworICAgIGFkZE91dHB1dChtYWtlVW5pcXVl
PEF1ZGlvTm9kZU91dHB1dD4odGhpcywgMikpOworCisgICAgLy8gTm9kZS1zcGVjaWZpYyBkZWZh
dWx0IG1peGluZyBydWxlcy4KKyAgICBtX2NoYW5uZWxDb3VudCA9IDI7CisgICAgbV9jaGFubmVs
Q291bnRNb2RlID0gQ2xhbXBlZE1heDsKKyAgICBtX2NoYW5uZWxJbnRlcnByZXRhdGlvbiA9IEF1
ZGlvQnVzOjpTcGVha2VyczsKKworICAgIG1fZGlzdGFuY2VHYWluID0gQXVkaW9QYXJhbTo6Y3Jl
YXRlKGNvbnRleHQsICJkaXN0YW5jZUdhaW4iLCAxLjAsIDAuMCwgMS4wKTsKKyAgICBtX2NvbmVH
YWluID0gQXVkaW9QYXJhbTo6Y3JlYXRlKGNvbnRleHQsICJjb25lR2FpbiIsIDEuMCwgMC4wLCAx
LjApOworCisgICAgbV9wb3NpdGlvbiA9IEZsb2F0UG9pbnQzRCgwLCAwLCAwKTsKKyAgICBtX29y
aWVudGF0aW9uID0gRmxvYXRQb2ludDNEKDEsIDAsIDApOworICAgIG1fdmVsb2NpdHkgPSBGbG9h
dFBvaW50M0QoMCwgMCwgMCk7CisKKyAgICBpbml0aWFsaXplKCk7Cit9CisKK1dlYktpdEF1ZGlv
UGFubmVyTm9kZTo6fldlYktpdEF1ZGlvUGFubmVyTm9kZSgpCit7CisgICAgdW5pbml0aWFsaXpl
KCk7Cit9CisKK3ZvaWQgV2ViS2l0QXVkaW9QYW5uZXJOb2RlOjpwdWxsSW5wdXRzKHNpemVfdCBm
cmFtZXNUb1Byb2Nlc3MpCit7CisgICAgLy8gV2Ugb3ZlcnJpZGUgcHVsbElucHV0cygpLCBzbyB3
ZSBjYW4gZGV0ZWN0IG5ldyBBdWRpb1NvdXJjZU5vZGVzIHdoaWNoIGhhdmUgY29ubmVjdGVkIHRv
IHVzIHdoZW4gbmV3IGNvbm5lY3Rpb25zIGFyZSBtYWRlLgorICAgIC8vIFRoZXNlIEF1ZGlvU291
cmNlTm9kZXMgbmVlZCB0byBiZSBtYWRlIGF3YXJlIG9mIG91ciBleGlzdGVuY2UgaW4gb3JkZXIg
dG8gaGFuZGxlIGRvcHBsZXIgc2hpZnQgcGl0Y2ggY2hhbmdlcy4KKyAgICBpZiAobV9jb25uZWN0
aW9uQ291bnQgIT0gY29udGV4dCgpLmNvbm5lY3Rpb25Db3VudCgpKSB7CisgICAgICAgIG1fY29u
bmVjdGlvbkNvdW50ID0gY29udGV4dCgpLmNvbm5lY3Rpb25Db3VudCgpOworCisgICAgICAgIC8v
IFJlY3Vyc2l2ZWx5IGdvIHRocm91Z2ggYWxsIG5vZGVzIGNvbm5lY3RlZCB0byB1cy4KKyAgICAg
ICAgSGFzaFNldDxBdWRpb05vZGUqPiB2aXNpdGVkTm9kZXM7CisgICAgICAgIG5vdGlmeUF1ZGlv
U291cmNlc0Nvbm5lY3RlZFRvTm9kZSh0aGlzLCB2aXNpdGVkTm9kZXMpOworICAgIH0KKworICAg
IEF1ZGlvTm9kZTo6cHVsbElucHV0cyhmcmFtZXNUb1Byb2Nlc3MpOworfQorCit2b2lkIFdlYktp
dEF1ZGlvUGFubmVyTm9kZTo6cHJvY2VzcyhzaXplX3QgZnJhbWVzVG9Qcm9jZXNzKQoreworICAg
IEF1ZGlvQnVzKiBkZXN0aW5hdGlvbiA9IG91dHB1dCgwKS0+YnVzKCk7CisKKyAgICBpZiAoIWlz
SW5pdGlhbGl6ZWQoKSB8fCAhaW5wdXQoMCktPmlzQ29ubmVjdGVkKCkgfHwgIW1fcGFubmVyLmdl
dCgpKSB7CisgICAgICAgIGRlc3RpbmF0aW9uLT56ZXJvKCk7CisgICAgICAgIHJldHVybjsKKyAg
ICB9CisKKyAgICBBdWRpb0J1cyogc291cmNlID0gaW5wdXQoMCktPmJ1cygpOworICAgIGlmICgh
c291cmNlKSB7CisgICAgICAgIGRlc3RpbmF0aW9uLT56ZXJvKCk7CisgICAgICAgIHJldHVybjsK
KyAgICB9CisKKyAgICAvLyBIUlRGRGF0YWJhc2Ugc2hvdWxkIGJlIGxvYWRlZCBiZWZvcmUgcHJv
Y2VlZGluZyBmb3Igb2ZmbGluZSBhdWRpbyBjb250ZXh0IHdoZW4gcGFubmluZ01vZGVsKCkgaXMg
IkhSVEYiLgorICAgIGlmIChwYW5uaW5nTW9kZWwoKSA9PSBQYW5uaW5nTW9kZWxUeXBlOjpIUlRG
ICYmICFtX2hydGZEYXRhYmFzZUxvYWRlci0+aXNMb2FkZWQoKSkgeworICAgICAgICBpZiAoY29u
dGV4dCgpLmlzT2ZmbGluZUNvbnRleHQoKSkKKyAgICAgICAgICAgIG1faHJ0ZkRhdGFiYXNlTG9h
ZGVyLT53YWl0Rm9yTG9hZGVyVGhyZWFkQ29tcGxldGlvbigpOworICAgICAgICBlbHNlIHsKKyAg
ICAgICAgICAgIGRlc3RpbmF0aW9uLT56ZXJvKCk7CisgICAgICAgICAgICByZXR1cm47CisgICAg
ICAgIH0KKyAgICB9CisKKyAgICAvLyBUaGUgYXVkaW8gdGhyZWFkIGNhbid0IGJsb2NrIG9uIHRo
aXMgbG9jaywgc28gd2UgdXNlIHN0ZDo6dHJ5X3RvX2xvY2sgaW5zdGVhZC4KKyAgICBzdGQ6OnVu
aXF1ZV9sb2NrPExvY2s+IGxvY2sobV9wYW5uZXJNdXRleCwgc3RkOjp0cnlfdG9fbG9jayk7Cisg
ICAgaWYgKCFsb2NrLm93bnNfbG9jaygpKSB7CisgICAgICAgIC8vIFRvbyBiYWQgLSBUaGUgdHJ5
X2xvY2soKSBmYWlsZWQuIFdlIG11c3QgYmUgaW4gdGhlIG1pZGRsZSBvZiBjaGFuZ2luZyB0aGUg
cGFubmVyLgorICAgICAgICBkZXN0aW5hdGlvbi0+emVybygpOworICAgICAgICByZXR1cm47Cisg
ICAgfQorCisgICAgLy8gQXBwbHkgdGhlIHBhbm5pbmcgZWZmZWN0LgorICAgIGRvdWJsZSBhemlt
dXRoOworICAgIGRvdWJsZSBlbGV2YXRpb247CisgICAgZ2V0QXppbXV0aEVsZXZhdGlvbigmYXpp
bXV0aCwgJmVsZXZhdGlvbik7CisgICAgbV9wYW5uZXItPnBhbihhemltdXRoLCBlbGV2YXRpb24s
IHNvdXJjZSwgZGVzdGluYXRpb24sIGZyYW1lc1RvUHJvY2Vzcyk7CisKKyAgICAvLyBHZXQgdGhl
IGRpc3RhbmNlIGFuZCBjb25lIGdhaW4uCisgICAgZG91YmxlIHRvdGFsR2FpbiA9IGRpc3RhbmNl
Q29uZUdhaW4oKTsKKworICAgIC8vIFNuYXAgdG8gZGVzaXJlZCBnYWluIGF0IHRoZSBiZWdpbm5p
bmcuCisgICAgaWYgKG1fbGFzdEdhaW4gPT0gLTEuMCkKKyAgICAgICAgbV9sYXN0R2FpbiA9IHRv
dGFsR2FpbjsKKworICAgIC8vIEFwcGx5IGdhaW4gaW4tcGxhY2Ugd2l0aCBkZS16aXBwZXJpbmcu
CisgICAgZGVzdGluYXRpb24tPmNvcHlXaXRoR2FpbkZyb20oKmRlc3RpbmF0aW9uLCAmbV9sYXN0
R2FpbiwgdG90YWxHYWluKTsKK30KKwordm9pZCBXZWJLaXRBdWRpb1Bhbm5lck5vZGU6OnJlc2V0
KCkKK3sKKyAgICBtX2xhc3RHYWluID0gLTEuMDsgLy8gZm9yY2UgdG8gc25hcCB0byBpbml0aWFs
IGdhaW4KKyAgICBpZiAobV9wYW5uZXIuZ2V0KCkpCisgICAgICAgIG1fcGFubmVyLT5yZXNldCgp
OworfQorCit2b2lkIFdlYktpdEF1ZGlvUGFubmVyTm9kZTo6aW5pdGlhbGl6ZSgpCit7CisgICAg
aWYgKGlzSW5pdGlhbGl6ZWQoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9wYW5uZXIgPSBQ
YW5uZXI6OmNyZWF0ZShtX3Bhbm5pbmdNb2RlbCwgc2FtcGxlUmF0ZSgpLCBtX2hydGZEYXRhYmFz
ZUxvYWRlci5nZXQoKSk7CisKKyAgICBBdWRpb05vZGU6OmluaXRpYWxpemUoKTsKK30KKwordm9p
ZCBXZWJLaXRBdWRpb1Bhbm5lck5vZGU6OnVuaW5pdGlhbGl6ZSgpCit7CisgICAgaWYgKCFpc0lu
aXRpYWxpemVkKCkpCisgICAgICAgIHJldHVybjsKKworICAgIG1fcGFubmVyID0gbnVsbHB0cjsK
KyAgICBBdWRpb05vZGU6OnVuaW5pdGlhbGl6ZSgpOworfQorCitBdWRpb0xpc3RlbmVyKiBXZWJL
aXRBdWRpb1Bhbm5lck5vZGU6Omxpc3RlbmVyKCkKK3sKKyAgICByZXR1cm4gY29udGV4dCgpLmxp
c3RlbmVyKCk7Cit9CisKK3ZvaWQgV2ViS2l0QXVkaW9QYW5uZXJOb2RlOjpzZXRQYW5uaW5nTW9k
ZWwoUGFubmluZ01vZGVsVHlwZSBtb2RlbCkKK3sKKyAgICBpZiAoIW1fcGFubmVyLmdldCgpIHx8
IG1vZGVsICE9IG1fcGFubmluZ01vZGVsKSB7CisgICAgICAgIC8vIFRoaXMgc3luY2hyb25pemVz
IHdpdGggcHJvY2VzcygpLgorICAgICAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG1fcGFubmVy
TXV0ZXgpOworCisgICAgICAgIG1fcGFubmVyID0gUGFubmVyOjpjcmVhdGUobW9kZWwsIHNhbXBs
ZVJhdGUoKSwgbV9ocnRmRGF0YWJhc2VMb2FkZXIuZ2V0KCkpOworICAgICAgICBtX3Bhbm5pbmdN
b2RlbCA9IG1vZGVsOworICAgIH0KK30KKworRGlzdGFuY2VNb2RlbFR5cGUgV2ViS2l0QXVkaW9Q
YW5uZXJOb2RlOjpkaXN0YW5jZU1vZGVsKCkgY29uc3QKK3sKKyAgICByZXR1cm4gY29uc3RfY2Fz
dDxXZWJLaXRBdWRpb1Bhbm5lck5vZGUqPih0aGlzKS0+bV9kaXN0YW5jZUVmZmVjdC5tb2RlbCgp
OworfQorCit2b2lkIFdlYktpdEF1ZGlvUGFubmVyTm9kZTo6c2V0RGlzdGFuY2VNb2RlbChEaXN0
YW5jZU1vZGVsVHlwZSBtb2RlbCkKK3sKKyAgICBtX2Rpc3RhbmNlRWZmZWN0LnNldE1vZGVsKG1v
ZGVsLCB0cnVlKTsKK30KKwordm9pZCBXZWJLaXRBdWRpb1Bhbm5lck5vZGU6OmdldEF6aW11dGhF
bGV2YXRpb24oZG91YmxlKiBvdXRBemltdXRoLCBkb3VibGUqIG91dEVsZXZhdGlvbikKK3sKKyAg
ICAvLyBGSVhNRTogd2Ugc2hvdWxkIGNhY2hlIGF6aW11dGggYW5kIGVsZXZhdGlvbiAoaWYgcG9z
c2libGUpLCBzbyB3ZSBvbmx5IHJlLWNhbGN1bGF0ZSBpZiBhIGNoYW5nZSBoYXMgYmVlbiBtYWRl
LgorCisgICAgZG91YmxlIGF6aW11dGggPSAwLjA7CisKKyAgICAvLyBDYWxjdWxhdGUgdGhlIHNv
dXJjZS1saXN0ZW5lciB2ZWN0b3IKKyAgICBGbG9hdFBvaW50M0QgbGlzdGVuZXJQb3NpdGlvbiA9
IGxpc3RlbmVyKCktPnBvc2l0aW9uKCk7CisgICAgRmxvYXRQb2ludDNEIHNvdXJjZUxpc3RlbmVy
ID0gcG9zaXRpb24oKSAtIGxpc3RlbmVyUG9zaXRpb247CisKKyAgICBpZiAoc291cmNlTGlzdGVu
ZXIuaXNaZXJvKCkpIHsKKyAgICAgICAgLy8gZGVnZW5lcmF0ZSBjYXNlIGlmIHNvdXJjZSBhbmQg
bGlzdGVuZXIgYXJlIGF0IHRoZSBzYW1lIHBvaW50CisgICAgICAgICpvdXRBemltdXRoID0gMC4w
OworICAgICAgICAqb3V0RWxldmF0aW9uID0gMC4wOworICAgICAgICByZXR1cm47CisgICAgfQor
CisgICAgc291cmNlTGlzdGVuZXIubm9ybWFsaXplKCk7CisKKyAgICAvLyBBbGlnbiBheGVzCisg
ICAgRmxvYXRQb2ludDNEIGxpc3RlbmVyRnJvbnQgPSBsaXN0ZW5lcigpLT5vcmllbnRhdGlvbigp
OworICAgIEZsb2F0UG9pbnQzRCBsaXN0ZW5lclVwID0gbGlzdGVuZXIoKS0+dXBWZWN0b3IoKTsK
KyAgICBGbG9hdFBvaW50M0QgbGlzdGVuZXJSaWdodCA9IGxpc3RlbmVyRnJvbnQuY3Jvc3MobGlz
dGVuZXJVcCk7CisgICAgbGlzdGVuZXJSaWdodC5ub3JtYWxpemUoKTsKKworICAgIEZsb2F0UG9p
bnQzRCBsaXN0ZW5lckZyb250Tm9ybSA9IGxpc3RlbmVyRnJvbnQ7CisgICAgbGlzdGVuZXJGcm9u
dE5vcm0ubm9ybWFsaXplKCk7CisKKyAgICBGbG9hdFBvaW50M0QgdXAgPSBsaXN0ZW5lclJpZ2h0
LmNyb3NzKGxpc3RlbmVyRnJvbnROb3JtKTsKKworICAgIGZsb2F0IHVwUHJvamVjdGlvbiA9IHNv
dXJjZUxpc3RlbmVyLmRvdCh1cCk7CisKKyAgICBGbG9hdFBvaW50M0QgcHJvamVjdGVkU291cmNl
ID0gc291cmNlTGlzdGVuZXIgLSB1cFByb2plY3Rpb24gKiB1cDsKKyAgICBwcm9qZWN0ZWRTb3Vy
Y2Uubm9ybWFsaXplKCk7CisKKyAgICBhemltdXRoID0gMTgwLjAgKiBhY29zKHByb2plY3RlZFNv
dXJjZS5kb3QobGlzdGVuZXJSaWdodCkpIC8gcGlEb3VibGU7CisgICAgZml4TkFOcyhhemltdXRo
KTsgLy8gYXZvaWQgaWxsZWdhbCB2YWx1ZXMKKworICAgIC8vIFNvdXJjZSAgaW4gZnJvbnQgb3Ig
YmVoaW5kIHRoZSBsaXN0ZW5lcgorICAgIGRvdWJsZSBmcm9udEJhY2sgPSBwcm9qZWN0ZWRTb3Vy
Y2UuZG90KGxpc3RlbmVyRnJvbnROb3JtKTsKKyAgICBpZiAoZnJvbnRCYWNrIDwgMC4wKQorICAg
ICAgICBhemltdXRoID0gMzYwLjAgLSBhemltdXRoOworCisgICAgLy8gTWFrZSBhemltdXRoIHJl
bGF0aXZlIHRvICJmcm9udCIgYW5kIG5vdCAicmlnaHQiIGxpc3RlbmVyIHZlY3RvcgorICAgIGlm
ICgoYXppbXV0aCA+PSAwLjApICYmIChhemltdXRoIDw9IDI3MC4wKSkKKyAgICAgICAgYXppbXV0
aCA9IDkwLjAgLSBhemltdXRoOworICAgIGVsc2UKKyAgICAgICAgYXppbXV0aCA9IDQ1MC4wIC0g
YXppbXV0aDsKKworICAgIC8vIEVsZXZhdGlvbgorICAgIGRvdWJsZSBlbGV2YXRpb24gPSA5MC4w
IC0gMTgwLjAgKiBhY29zKHNvdXJjZUxpc3RlbmVyLmRvdCh1cCkpIC8gcGlEb3VibGU7CisgICAg
Zml4TkFOcyhlbGV2YXRpb24pOyAvLyBhdm9pZCBpbGxlZ2FsIHZhbHVlcworCisgICAgaWYgKGVs
ZXZhdGlvbiA+IDkwLjApCisgICAgICAgIGVsZXZhdGlvbiA9IDE4MC4wIC0gZWxldmF0aW9uOwor
ICAgIGVsc2UgaWYgKGVsZXZhdGlvbiA8IC05MC4wKQorICAgICAgICBlbGV2YXRpb24gPSAtMTgw
LjAgLSBlbGV2YXRpb247CisKKyAgICBpZiAob3V0QXppbXV0aCkKKyAgICAgICAgKm91dEF6aW11
dGggPSBhemltdXRoOworICAgIGlmIChvdXRFbGV2YXRpb24pCisgICAgICAgICpvdXRFbGV2YXRp
b24gPSBlbGV2YXRpb247Cit9CisKK2Zsb2F0IFdlYktpdEF1ZGlvUGFubmVyTm9kZTo6ZG9wcGxl
clJhdGUoKQoreworICAgIGRvdWJsZSBkb3BwbGVyU2hpZnQgPSAxLjA7CisKKyAgICAvLyBGSVhN
RTogb3B0aW1pemUgZm9yIGNhc2Ugd2hlbiBuZWl0aGVyIHNvdXJjZSBub3IgbGlzdGVuZXIgaGFz
IGNoYW5nZWQuLi4KKyAgICBkb3VibGUgZG9wcGxlckZhY3RvciA9IGxpc3RlbmVyKCktPmRvcHBs
ZXJGYWN0b3IoKTsKKworICAgIGlmIChkb3BwbGVyRmFjdG9yID4gMC4wKSB7CisgICAgICAgIGRv
dWJsZSBzcGVlZE9mU291bmQgPSBsaXN0ZW5lcigpLT5zcGVlZE9mU291bmQoKTsKKworICAgICAg
ICBjb25zdCBGbG9hdFBvaW50M0QgJnNvdXJjZVZlbG9jaXR5ID0gbV92ZWxvY2l0eTsKKyAgICAg
ICAgY29uc3QgRmxvYXRQb2ludDNEICZsaXN0ZW5lclZlbG9jaXR5ID0gbGlzdGVuZXIoKS0+dmVs
b2NpdHkoKTsKKworICAgICAgICAvLyBEb24ndCBib3RoZXIgaWYgYm90aCBzb3VyY2UgYW5kIGxp
c3RlbmVyIGhhdmUgbm8gdmVsb2NpdHkKKyAgICAgICAgYm9vbCBzb3VyY2VIYXNWZWxvY2l0eSA9
ICFzb3VyY2VWZWxvY2l0eS5pc1plcm8oKTsKKyAgICAgICAgYm9vbCBsaXN0ZW5lckhhc1ZlbG9j
aXR5ID0gIWxpc3RlbmVyVmVsb2NpdHkuaXNaZXJvKCk7CisKKyAgICAgICAgaWYgKHNvdXJjZUhh
c1ZlbG9jaXR5IHx8IGxpc3RlbmVySGFzVmVsb2NpdHkpIHsKKyAgICAgICAgICAgIC8vIENhbGN1
bGF0ZSB0aGUgc291cmNlIHRvIGxpc3RlbmVyIHZlY3RvcgorICAgICAgICAgICAgRmxvYXRQb2lu
dDNEIGxpc3RlbmVyUG9zaXRpb24gPSBsaXN0ZW5lcigpLT5wb3NpdGlvbigpOworICAgICAgICAg
ICAgRmxvYXRQb2ludDNEIHNvdXJjZVRvTGlzdGVuZXIgPSBwb3NpdGlvbigpIC0gbGlzdGVuZXJQ
b3NpdGlvbjsKKworICAgICAgICAgICAgZG91YmxlIHNvdXJjZUxpc3RlbmVyTWFnbml0dWRlID0g
c291cmNlVG9MaXN0ZW5lci5sZW5ndGgoKTsKKworICAgICAgICAgICAgZG91YmxlIGxpc3RlbmVy
UHJvamVjdGlvbiA9IHNvdXJjZVRvTGlzdGVuZXIuZG90KGxpc3RlbmVyVmVsb2NpdHkpIC8gc291
cmNlTGlzdGVuZXJNYWduaXR1ZGU7CisgICAgICAgICAgICBkb3VibGUgc291cmNlUHJvamVjdGlv
biA9IHNvdXJjZVRvTGlzdGVuZXIuZG90KHNvdXJjZVZlbG9jaXR5KSAvIHNvdXJjZUxpc3RlbmVy
TWFnbml0dWRlOworCisgICAgICAgICAgICBsaXN0ZW5lclByb2plY3Rpb24gPSAtbGlzdGVuZXJQ
cm9qZWN0aW9uOworICAgICAgICAgICAgc291cmNlUHJvamVjdGlvbiA9IC1zb3VyY2VQcm9qZWN0
aW9uOworCisgICAgICAgICAgICBkb3VibGUgc2NhbGVkU3BlZWRPZlNvdW5kID0gc3BlZWRPZlNv
dW5kIC8gZG9wcGxlckZhY3RvcjsKKyAgICAgICAgICAgIGxpc3RlbmVyUHJvamVjdGlvbiA9IHN0
ZDo6bWluKGxpc3RlbmVyUHJvamVjdGlvbiwgc2NhbGVkU3BlZWRPZlNvdW5kKTsKKyAgICAgICAg
ICAgIHNvdXJjZVByb2plY3Rpb24gPSBzdGQ6Om1pbihzb3VyY2VQcm9qZWN0aW9uLCBzY2FsZWRT
cGVlZE9mU291bmQpOworCisgICAgICAgICAgICBkb3BwbGVyU2hpZnQgPSAoKHNwZWVkT2ZTb3Vu
ZCAtIGRvcHBsZXJGYWN0b3IgKiBsaXN0ZW5lclByb2plY3Rpb24pIC8gKHNwZWVkT2ZTb3VuZCAt
IGRvcHBsZXJGYWN0b3IgKiBzb3VyY2VQcm9qZWN0aW9uKSk7CisgICAgICAgICAgICBmaXhOQU5z
KGRvcHBsZXJTaGlmdCk7IC8vIGF2b2lkIGlsbGVnYWwgdmFsdWVzCisKKyAgICAgICAgICAgIC8v
IExpbWl0IHRoZSBwaXRjaCBzaGlmdGluZyB0byA0IG9jdGF2ZXMgdXAgYW5kIDMgb2N0YXZlcyBk
b3duLgorICAgICAgICAgICAgaWYgKGRvcHBsZXJTaGlmdCA+IDE2LjApCisgICAgICAgICAgICAg
ICAgZG9wcGxlclNoaWZ0ID0gMTYuMDsKKyAgICAgICAgICAgIGVsc2UgaWYgKGRvcHBsZXJTaGlm
dCA8IDAuMTI1KQorICAgICAgICAgICAgICAgIGRvcHBsZXJTaGlmdCA9IDAuMTI1OworICAgICAg
ICB9CisgICAgfQorCisgICAgcmV0dXJuIHN0YXRpY19jYXN0PGZsb2F0Pihkb3BwbGVyU2hpZnQp
OworfQorCitmbG9hdCBXZWJLaXRBdWRpb1Bhbm5lck5vZGU6OmRpc3RhbmNlQ29uZUdhaW4oKQor
eworICAgIEZsb2F0UG9pbnQzRCBsaXN0ZW5lclBvc2l0aW9uID0gbGlzdGVuZXIoKS0+cG9zaXRp
b24oKTsKKyAgICBGbG9hdFBvaW50M0Qgc291cmNlUG9zaXRpb24gPSBwb3NpdGlvbigpOworCisg
ICAgZG91YmxlIGxpc3RlbmVyRGlzdGFuY2UgPSBzb3VyY2VQb3NpdGlvbi5kaXN0YW5jZVRvKGxp
c3RlbmVyUG9zaXRpb24pOworICAgIGRvdWJsZSBkaXN0YW5jZUdhaW4gPSBtX2Rpc3RhbmNlRWZm
ZWN0LmdhaW4obGlzdGVuZXJEaXN0YW5jZSk7CisKKyAgICBtX2Rpc3RhbmNlR2Fpbi0+c2V0VmFs
dWUoc3RhdGljX2Nhc3Q8ZmxvYXQ+KGRpc3RhbmNlR2FpbikpOworCisgICAgLy8gRklYTUU6IGNv
dWxkIG9wdGltaXplIGJ5IGNhY2hpbmcgY29uZUdhaW4KKyAgICBkb3VibGUgY29uZUdhaW4gPSBt
X2NvbmVFZmZlY3QuZ2Fpbihzb3VyY2VQb3NpdGlvbiwgbV9vcmllbnRhdGlvbiwgbGlzdGVuZXJQ
b3NpdGlvbik7CisKKyAgICBtX2NvbmVHYWluLT5zZXRWYWx1ZShzdGF0aWNfY2FzdDxmbG9hdD4o
Y29uZUdhaW4pKTsKKworICAgIHJldHVybiBmbG9hdChkaXN0YW5jZUdhaW4gKiBjb25lR2Fpbik7
Cit9CisKK3ZvaWQgV2ViS2l0QXVkaW9QYW5uZXJOb2RlOjpub3RpZnlBdWRpb1NvdXJjZXNDb25u
ZWN0ZWRUb05vZGUoQXVkaW9Ob2RlKiBub2RlLCBIYXNoU2V0PEF1ZGlvTm9kZSo+JiB2aXNpdGVk
Tm9kZXMpCit7CisgICAgQVNTRVJUKG5vZGUpOworICAgIGlmICghbm9kZSkKKyAgICAgICAgcmV0
dXJuOworCisgICAgLy8gRmlyc3QgY2hlY2sgaWYgdGhpcyBub2RlIGlzIGFuIEF1ZGlvQnVmZmVy
U291cmNlTm9kZS4gSWYgc28sIGxldCBpdCBrbm93IGFib3V0IHVzIHNvIHRoYXQgZG9wcGxlciBz
aGlmdCBwaXRjaCBjYW4gYmUgdGFrZW4gaW50byBhY2NvdW50LgorICAgIGlmIChub2RlLT5ub2Rl
VHlwZSgpID09IE5vZGVUeXBlQXVkaW9CdWZmZXJTb3VyY2UpIHsKKyAgICAgICAgQXVkaW9CdWZm
ZXJTb3VyY2VOb2RlKiBidWZmZXJTb3VyY2VOb2RlID0gcmVpbnRlcnByZXRfY2FzdDxBdWRpb0J1
ZmZlclNvdXJjZU5vZGUqPihub2RlKTsKKyAgICAgICAgYnVmZmVyU291cmNlTm9kZS0+c2V0UGFu
bmVyTm9kZSh0aGlzKTsKKyAgICB9IGVsc2UgeworICAgICAgICAvLyBHbyB0aHJvdWdoIGFsbCBp
bnB1dHMgdG8gdGhpcyBub2RlLgorICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbm9k
ZS0+bnVtYmVyT2ZJbnB1dHMoKTsgKytpKSB7CisgICAgICAgICAgICBBdWRpb05vZGVJbnB1dCog
aW5wdXQgPSBub2RlLT5pbnB1dChpKTsKKworICAgICAgICAgICAgLy8gRm9yIGVhY2ggaW5wdXQs
IGdvIHRocm91Z2ggYWxsIG9mIGl0cyBjb25uZWN0aW9ucywgbG9va2luZyBmb3IgQXVkaW9CdWZm
ZXJTb3VyY2VOb2Rlcy4KKyAgICAgICAgICAgIGZvciAodW5zaWduZWQgaiA9IDA7IGogPCBpbnB1
dC0+bnVtYmVyT2ZSZW5kZXJpbmdDb25uZWN0aW9ucygpOyArK2opIHsKKyAgICAgICAgICAgICAg
ICBBdWRpb05vZGVPdXRwdXQqIGNvbm5lY3RlZE91dHB1dCA9IGlucHV0LT5yZW5kZXJpbmdPdXRw
dXQoaik7CisgICAgICAgICAgICAgICAgQXVkaW9Ob2RlKiBjb25uZWN0ZWROb2RlID0gY29ubmVj
dGVkT3V0cHV0LT5ub2RlKCk7CisgICAgICAgICAgICAgICAgaWYgKHZpc2l0ZWROb2Rlcy5jb250
YWlucyhjb25uZWN0ZWROb2RlKSkKKyAgICAgICAgICAgICAgICAgICAgY29udGludWU7CisKKyAg
ICAgICAgICAgICAgICB2aXNpdGVkTm9kZXMuYWRkKGNvbm5lY3RlZE5vZGUpOworICAgICAgICAg
ICAgICAgIG5vdGlmeUF1ZGlvU291cmNlc0Nvbm5lY3RlZFRvTm9kZShjb25uZWN0ZWROb2RlLCB2
aXNpdGVkTm9kZXMpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorfQorCit9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoV0VCX0FVRElPKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9XZWJLaXRBdWRpb1Bhbm5lck5v
ZGUuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vV2ViS2l0QXVkaW9QYW5uZXJO
b2RlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uODk3OTdjM2M0YzUwYjM2ODkyMDU4MDZjMTk3ZjEwYmQ5YzU2NzZi
ZQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vV2Vi
S2l0QXVkaW9QYW5uZXJOb2RlLmgKQEAgLTAsMCArMSwxNjAgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTAsIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVS
UE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMK
KyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTgorICogQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTCisgKiBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJh
Z21hIG9uY2UKKworI2lmIEVOQUJMRShXRUJfQVVESU8pCisKKyNpbmNsdWRlICJBdWRpb0xpc3Rl
bmVyLmgiCisjaW5jbHVkZSAiQXVkaW9Ob2RlLmgiCisjaW5jbHVkZSAiQXVkaW9QYXJhbS5oIgor
I2luY2x1ZGUgIkNvbmUuaCIKKyNpbmNsdWRlICJEaXN0YW5jZS5oIgorI2luY2x1ZGUgIkZsb2F0
UG9pbnQzRC5oIgorI2luY2x1ZGUgIlBhbm5lci5oIgorI2luY2x1ZGUgIlBhbm5lck5vZGUuaCIK
KyNpbmNsdWRlICJXZWJLaXRBdWRpb0NvbnRleHQuaCIKKyNpbmNsdWRlIDxtZW1vcnk+CisjaW5j
bHVkZSA8d3RmL0hhc2hTZXQuaD4KKyNpbmNsdWRlIDx3dGYvTG9jay5oPgorCituYW1lc3BhY2Ug
V2ViQ29yZSB7CisKK2NsYXNzIEhSVEZEYXRhYmFzZUxvYWRlcjsKKworLy8gUGFubmVyTm9kZSBp
cyBhbiBBdWRpb05vZGUgd2l0aCBvbmUgaW5wdXQgYW5kIG9uZSBvdXRwdXQuCisvLyBJdCBwb3Np
dGlvbnMgYSBzb3VuZCBpbiAzRCBzcGFjZSwgd2l0aCB0aGUgZXhhY3QgZWZmZWN0IGRlcGVuZGVu
dCBvbiB0aGUgcGFubmluZyBtb2RlbC4KKy8vIEl0IGhhcyBhIHBvc2l0aW9uIGFuZCBhbiBvcmll
bnRhdGlvbiBpbiAzRCBzcGFjZSB3aGljaCBpcyByZWxhdGl2ZSB0byB0aGUgcG9zaXRpb24gYW5k
IG9yaWVudGF0aW9uIG9mIHRoZSBjb250ZXh0J3MgQXVkaW9MaXN0ZW5lci4KKy8vIEEgZGlzdGFu
Y2UgZWZmZWN0IHdpbGwgYXR0ZW51YXRlIHRoZSBnYWluIGFzIHRoZSBwb3NpdGlvbiBtb3ZlcyBh
d2F5IGZyb20gdGhlIGxpc3RlbmVyLgorLy8gQSBjb25lIGVmZmVjdCB3aWxsIGF0dGVudWF0ZSB0
aGUgZ2FpbiBhcyB0aGUgb3JpZW50YXRpb24gbW92ZXMgYXdheSBmcm9tIHRoZSBsaXN0ZW5lci4K
Ky8vIEFsbCBvZiB0aGVzZSBlZmZlY3RzIGZvbGxvdyB0aGUgT3BlbkFMIHNwZWNpZmljYXRpb24g
dmVyeSBjbG9zZWx5LgorCitjbGFzcyBXZWJLaXRBdWRpb1Bhbm5lck5vZGUgZmluYWwgOiBwdWJs
aWMgUGFubmVyTm9kZUJhc2UgeworICAgIFdURl9NQUtFX0lTT19BTExPQ0FURUQoV2ViS2l0QXVk
aW9QYW5uZXJOb2RlKTsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUmVmPFdlYktpdEF1ZGlvUGFubmVy
Tm9kZT4gY3JlYXRlKFdlYktpdEF1ZGlvQ29udGV4dCYgY29udGV4dCwgZmxvYXQgc2FtcGxlUmF0
ZSkKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFdlYktpdEF1ZGlvUGFubmVy
Tm9kZShjb250ZXh0LCBzYW1wbGVSYXRlKSk7CisgICAgfQorCisgICAgdmlydHVhbCB+V2ViS2l0
QXVkaW9QYW5uZXJOb2RlKCk7CisKKyAgICBXZWJLaXRBdWRpb0NvbnRleHQmIGNvbnRleHQoKSB7
IHJldHVybiBkb3duY2FzdDxXZWJLaXRBdWRpb0NvbnRleHQ+KEF1ZGlvTm9kZTo6Y29udGV4dCgp
KTsgfQorICAgIGNvbnN0IFdlYktpdEF1ZGlvQ29udGV4dCYgY29udGV4dCgpIGNvbnN0IHsgcmV0
dXJuIGRvd25jYXN0PFdlYktpdEF1ZGlvQ29udGV4dD4oQXVkaW9Ob2RlOjpjb250ZXh0KCkpOyB9
CisKKyAgICAvLyBBdWRpb05vZGUKKyAgICB2b2lkIHByb2Nlc3Moc2l6ZV90IGZyYW1lc1RvUHJv
Y2Vzcykgb3ZlcnJpZGU7CisgICAgdm9pZCBwdWxsSW5wdXRzKHNpemVfdCBmcmFtZXNUb1Byb2Nl
c3MpIG92ZXJyaWRlOworICAgIHZvaWQgcmVzZXQoKSBvdmVycmlkZTsKKyAgICB2b2lkIGluaXRp
YWxpemUoKSBvdmVycmlkZTsKKyAgICB2b2lkIHVuaW5pdGlhbGl6ZSgpIG92ZXJyaWRlOworCisg
ICAgLy8gTGlzdGVuZXIKKyAgICBBdWRpb0xpc3RlbmVyKiBsaXN0ZW5lcigpOworCisgICAgLy8g
UGFubmluZyBtb2RlbAorICAgIFBhbm5pbmdNb2RlbFR5cGUgcGFubmluZ01vZGVsKCkgY29uc3Qg
eyByZXR1cm4gbV9wYW5uaW5nTW9kZWw7IH0KKyAgICB2b2lkIHNldFBhbm5pbmdNb2RlbChQYW5u
aW5nTW9kZWxUeXBlKTsKKworICAgIC8vIFBvc2l0aW9uCisgICAgRmxvYXRQb2ludDNEIHBvc2l0
aW9uKCkgY29uc3QgeyByZXR1cm4gbV9wb3NpdGlvbjsgfQorICAgIHZvaWQgc2V0UG9zaXRpb24o
ZmxvYXQgeCwgZmxvYXQgeSwgZmxvYXQgeikgeyBtX3Bvc2l0aW9uID0gRmxvYXRQb2ludDNEKHgs
IHksIHopOyB9CisKKyAgICAvLyBPcmllbnRhdGlvbgorICAgIEZsb2F0UG9pbnQzRCBvcmllbnRh
dGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fb3JpZW50YXRpb247IH0KKyAgICB2b2lkIHNldE9yaWVu
dGF0aW9uKGZsb2F0IHgsIGZsb2F0IHksIGZsb2F0IHopIHsgbV9vcmllbnRhdGlvbiA9IEZsb2F0
UG9pbnQzRCh4LCB5LCB6KTsgfQorCisgICAgLy8gVmVsb2NpdHkKKyAgICBGbG9hdFBvaW50M0Qg
dmVsb2NpdHkoKSBjb25zdCB7IHJldHVybiBtX3ZlbG9jaXR5OyB9CisgICAgdm9pZCBzZXRWZWxv
Y2l0eShmbG9hdCB4LCBmbG9hdCB5LCBmbG9hdCB6KSB7IG1fdmVsb2NpdHkgPSBGbG9hdFBvaW50
M0QoeCwgeSwgeik7IH0KKworICAgIC8vIERpc3RhbmNlIHBhcmFtZXRlcnMKKyAgICBEaXN0YW5j
ZU1vZGVsVHlwZSBkaXN0YW5jZU1vZGVsKCkgY29uc3Q7CisgICAgdm9pZCBzZXREaXN0YW5jZU1v
ZGVsKERpc3RhbmNlTW9kZWxUeXBlKTsKKworICAgIGRvdWJsZSByZWZEaXN0YW5jZSgpIHsgcmV0
dXJuIG1fZGlzdGFuY2VFZmZlY3QucmVmRGlzdGFuY2UoKTsgfQorICAgIHZvaWQgc2V0UmVmRGlz
dGFuY2UoZG91YmxlIHJlZkRpc3RhbmNlKSB7IG1fZGlzdGFuY2VFZmZlY3Quc2V0UmVmRGlzdGFu
Y2UocmVmRGlzdGFuY2UpOyB9CisKKyAgICBkb3VibGUgbWF4RGlzdGFuY2UoKSB7IHJldHVybiBt
X2Rpc3RhbmNlRWZmZWN0Lm1heERpc3RhbmNlKCk7IH0KKyAgICB2b2lkIHNldE1heERpc3RhbmNl
KGRvdWJsZSBtYXhEaXN0YW5jZSkgeyBtX2Rpc3RhbmNlRWZmZWN0LnNldE1heERpc3RhbmNlKG1h
eERpc3RhbmNlKTsgfQorCisgICAgZG91YmxlIHJvbGxvZmZGYWN0b3IoKSB7IHJldHVybiBtX2Rp
c3RhbmNlRWZmZWN0LnJvbGxvZmZGYWN0b3IoKTsgfQorICAgIHZvaWQgc2V0Um9sbG9mZkZhY3Rv
cihkb3VibGUgcm9sbG9mZkZhY3RvcikgeyBtX2Rpc3RhbmNlRWZmZWN0LnNldFJvbGxvZmZGYWN0
b3Iocm9sbG9mZkZhY3Rvcik7IH0KKworICAgIC8vIFNvdW5kIGNvbmVzIC0gYW5nbGVzIGluIGRl
Z3JlZXMKKyAgICBkb3VibGUgY29uZUlubmVyQW5nbGUoKSBjb25zdCB7IHJldHVybiBtX2NvbmVF
ZmZlY3QuaW5uZXJBbmdsZSgpOyB9CisgICAgdm9pZCBzZXRDb25lSW5uZXJBbmdsZShkb3VibGUg
YW5nbGUpIHsgbV9jb25lRWZmZWN0LnNldElubmVyQW5nbGUoYW5nbGUpOyB9CisKKyAgICBkb3Vi
bGUgY29uZU91dGVyQW5nbGUoKSBjb25zdCB7IHJldHVybiBtX2NvbmVFZmZlY3Qub3V0ZXJBbmds
ZSgpOyB9CisgICAgdm9pZCBzZXRDb25lT3V0ZXJBbmdsZShkb3VibGUgYW5nbGUpIHsgbV9jb25l
RWZmZWN0LnNldE91dGVyQW5nbGUoYW5nbGUpOyB9CisKKyAgICBkb3VibGUgY29uZU91dGVyR2Fp
bigpIGNvbnN0IHsgcmV0dXJuIG1fY29uZUVmZmVjdC5vdXRlckdhaW4oKTsgfQorICAgIHZvaWQg
c2V0Q29uZU91dGVyR2Fpbihkb3VibGUgYW5nbGUpIHsgbV9jb25lRWZmZWN0LnNldE91dGVyR2Fp
bihhbmdsZSk7IH0KKworICAgIHZvaWQgZ2V0QXppbXV0aEVsZXZhdGlvbihkb3VibGUqIG91dEF6
aW11dGgsIGRvdWJsZSogb3V0RWxldmF0aW9uKTsKKyAgICBmbG9hdCBkb3BwbGVyUmF0ZSgpIGZp
bmFsOworCisgICAgLy8gQWNjZXNzb3JzIGZvciBkeW5hbWljYWxseSBjYWxjdWxhdGVkIGdhaW4g
dmFsdWVzLgorICAgIEF1ZGlvUGFyYW0qIGRpc3RhbmNlR2FpbigpIHsgcmV0dXJuIG1fZGlzdGFu
Y2VHYWluLmdldCgpOyB9CisgICAgQXVkaW9QYXJhbSogY29uZUdhaW4oKSB7IHJldHVybiBtX2Nv
bmVHYWluLmdldCgpOyB9CisKKyAgICBkb3VibGUgdGFpbFRpbWUoKSBjb25zdCBvdmVycmlkZSB7
IHJldHVybiBtX3Bhbm5lciA/IG1fcGFubmVyLT50YWlsVGltZSgpIDogMDsgfQorICAgIGRvdWJs
ZSBsYXRlbmN5VGltZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fcGFubmVyID8gbV9wYW5u
ZXItPmxhdGVuY3lUaW1lKCkgOiAwOyB9CisKK3ByaXZhdGU6CisgICAgV2ViS2l0QXVkaW9QYW5u
ZXJOb2RlKFdlYktpdEF1ZGlvQ29udGV4dCYsIGZsb2F0IHNhbXBsZVJhdGUpOworCisgICAgLy8g
UmV0dXJucyB0aGUgY29tYmluZWQgZGlzdGFuY2UgYW5kIGNvbmUgZ2FpbiBhdHRlbnVhdGlvbi4K
KyAgICBmbG9hdCBkaXN0YW5jZUNvbmVHYWluKCk7CisKKyAgICAvLyBOb3RpZmllcyBhbnkgQXVk
aW9CdWZmZXJTb3VyY2VOb2RlcyBjb25uZWN0ZWQgdG8gdXMgZWl0aGVyIGRpcmVjdGx5IG9yIGlu
ZGlyZWN0bHkgYWJvdXQgb3VyIGV4aXN0ZW5jZS4KKyAgICAvLyBUaGlzIGlzIGluIG9yZGVyIHRv
IGhhbmRsZSB0aGUgcGl0Y2ggY2hhbmdlIG5lY2Vzc2FyeSBmb3IgdGhlIGRvcHBsZXIgc2hpZnQu
CisgICAgdm9pZCBub3RpZnlBdWRpb1NvdXJjZXNDb25uZWN0ZWRUb05vZGUoQXVkaW9Ob2RlKiwg
SGFzaFNldDxBdWRpb05vZGUqPiYgdmlzaXRlZE5vZGVzKTsKKworICAgIHN0ZDo6dW5pcXVlX3B0
cjxQYW5uZXI+IG1fcGFubmVyOworICAgIFBhbm5pbmdNb2RlbFR5cGUgbV9wYW5uaW5nTW9kZWw7
CisKKyAgICBGbG9hdFBvaW50M0QgbV9wb3NpdGlvbjsKKyAgICBGbG9hdFBvaW50M0QgbV9vcmll
bnRhdGlvbjsKKyAgICBGbG9hdFBvaW50M0QgbV92ZWxvY2l0eTsKKworICAgIC8vIEdhaW4KKyAg
ICBSZWZQdHI8QXVkaW9QYXJhbT4gbV9kaXN0YW5jZUdhaW47CisgICAgUmVmUHRyPEF1ZGlvUGFy
YW0+IG1fY29uZUdhaW47CisgICAgRGlzdGFuY2VFZmZlY3QgbV9kaXN0YW5jZUVmZmVjdDsKKyAg
ICBDb25lRWZmZWN0IG1fY29uZUVmZmVjdDsKKyAgICBmbG9hdCBtX2xhc3RHYWluOworCisgICAg
Ly8gSFJURiBEYXRhYmFzZSBsb2FkZXIKKyAgICBSZWZQdHI8SFJURkRhdGFiYXNlTG9hZGVyPiBt
X2hydGZEYXRhYmFzZUxvYWRlcjsKKworICAgIHVuc2lnbmVkIG1fY29ubmVjdGlvbkNvdW50Owor
CisgICAgLy8gU3luY2hyb25pemUgcHJvY2VzcygpIGFuZCBzZXRQYW5uaW5nTW9kZWwoKSB3aGlj
aCBjYW4gY2hhbmdlIHRoZSBwYW5uZXIuCisgICAgbXV0YWJsZSBMb2NrIG1fcGFubmVyTXV0ZXg7
Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9XZWJLaXRBdWRpb1Bhbm5lck5vZGUuaWRsIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9XZWJLaXRBdWRpb1Bhbm5lck5vZGUuaWRs
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjg4ZDI2OTEwYWUxNzUwNDIxMzZhNWU2MmZhYzgxM2NjNWZjMzY3MmYKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1dlYktpdEF1
ZGlvUGFubmVyTm9kZS5pZGwKQEAgLTAsMCArMSw0OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxMCwgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NF
IEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICog
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OCisgKiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKKyAqIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKK1sKKyAgICBD
b25kaXRpb25hbD1XRUJfQVVESU8sCisgICAgSlNHZW5lcmF0ZVRvSlNPYmplY3QsCisgICAgSW50
ZXJmYWNlTmFtZT13ZWJraXRBdWRpb1Bhbm5lck5vZGUsCitdIGludGVyZmFjZSBXZWJLaXRBdWRp
b1Bhbm5lck5vZGUgOiBBdWRpb05vZGUgeworICAgIC8vIERlZmF1bHQgbW9kZWwgZm9yIHN0ZXJl
byBpcyBIUlRGCisgICAgYXR0cmlidXRlIFBhbm5pbmdNb2RlbFR5cGUgcGFubmluZ01vZGVsOwor
CisgICAgLy8gVXNlcyBhIDNEIGNhcnRlc2lhbiBjb29yZGluYXRlIHN5c3RlbQorICAgIHZvaWQg
c2V0UG9zaXRpb24odW5yZXN0cmljdGVkIGZsb2F0IHgsIHVucmVzdHJpY3RlZCBmbG9hdCB5LCB1
bnJlc3RyaWN0ZWQgZmxvYXQgeik7CisgICAgdm9pZCBzZXRPcmllbnRhdGlvbih1bnJlc3RyaWN0
ZWQgZmxvYXQgeCwgdW5yZXN0cmljdGVkIGZsb2F0IHksIHVucmVzdHJpY3RlZCBmbG9hdCB6KTsK
KyAgICB2b2lkIHNldFZlbG9jaXR5KHVucmVzdHJpY3RlZCBmbG9hdCB4LCB1bnJlc3RyaWN0ZWQg
ZmxvYXQgeSwgdW5yZXN0cmljdGVkIGZsb2F0IHopOworCisgICAgLy8gRGlzdGFuY2UgbW9kZWwK
KyAgICBhdHRyaWJ1dGUgRGlzdGFuY2VNb2RlbFR5cGUgZGlzdGFuY2VNb2RlbDsKKworICAgIGF0
dHJpYnV0ZSB1bnJlc3RyaWN0ZWQgZG91YmxlIHJlZkRpc3RhbmNlOworICAgIGF0dHJpYnV0ZSB1
bnJlc3RyaWN0ZWQgZG91YmxlIG1heERpc3RhbmNlOworICAgIGF0dHJpYnV0ZSB1bnJlc3RyaWN0
ZWQgZG91YmxlIHJvbGxvZmZGYWN0b3I7CisKKyAgICAvLyBEaXJlY3Rpb25hbCBzb3VuZCBjb25l
CisgICAgYXR0cmlidXRlIHVucmVzdHJpY3RlZCBkb3VibGUgY29uZUlubmVyQW5nbGU7CisgICAg
YXR0cmlidXRlIHVucmVzdHJpY3RlZCBkb3VibGUgY29uZU91dGVyQW5nbGU7CisgICAgYXR0cmli
dXRlIHVucmVzdHJpY3RlZCBkb3VibGUgY29uZU91dGVyR2FpbjsKK307CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1dlYktpdE9mZmxpbmVBdWRpb0NvbnRleHQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9XZWJLaXRPZmZsaW5lQXVkaW9D
b250ZXh0LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kOGUzOTlhMTRhM2Q1ZDMxNjc1YmE5YTA2ZjgxNDAzMTIz
NTJiNGExCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRp
by9XZWJLaXRPZmZsaW5lQXVkaW9Db250ZXh0LmNwcApAQCAtMCwwICsxLDYyIEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDEyLCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVE
CisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04KKyAqIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUworICogU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaWYgRU5BQkxFKFdFQl9BVURJTykKKworI2lu
Y2x1ZGUgIldlYktpdE9mZmxpbmVBdWRpb0NvbnRleHQuaCIKKworI2luY2x1ZGUgIkF1ZGlvQnVm
ZmVyLmgiCisjaW5jbHVkZSAiRG9jdW1lbnQuaCIKKyNpbmNsdWRlIDx3dGYvSXNvTWFsbG9jSW5s
aW5lcy5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1dURl9NQUtFX0lTT19BTExPQ0FURURf
SU1QTChXZWJLaXRPZmZsaW5lQXVkaW9Db250ZXh0KTsKKworaW5saW5lIFdlYktpdE9mZmxpbmVB
dWRpb0NvbnRleHQ6OldlYktpdE9mZmxpbmVBdWRpb0NvbnRleHQoRG9jdW1lbnQmIGRvY3VtZW50
LCBBdWRpb0J1ZmZlciogcmVuZGVyVGFyZ2V0KQorICAgIDogV2ViS2l0QXVkaW9Db250ZXh0KGRv
Y3VtZW50LCByZW5kZXJUYXJnZXQpCit7Cit9CisKK0V4Y2VwdGlvbk9yPFJlZjxXZWJLaXRPZmZs
aW5lQXVkaW9Db250ZXh0Pj4gV2ViS2l0T2ZmbGluZUF1ZGlvQ29udGV4dDo6Y3JlYXRlKFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIHVuc2lnbmVkIG51bWJlck9mQ2hhbm5lbHMsIHNp
emVfdCBudW1iZXJPZkZyYW1lcywgZmxvYXQgc2FtcGxlUmF0ZSkKK3sKKyAgICAvLyBGSVhNRTog
QWRkIHN1cHBvcnQgZm9yIHdvcmtlcnMuCisgICAgaWYgKCFpczxEb2N1bWVudD4oY29udGV4dCkp
CisgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBOb3RTdXBwb3J0ZWRFcnJvciB9OworICAgIGlm
ICghbnVtYmVyT2ZDaGFubmVscyB8fCBudW1iZXJPZkNoYW5uZWxzID4gMTAgfHwgIW51bWJlck9m
RnJhbWVzIHx8ICFpc1NhbXBsZVJhdGVSYW5nZUdvb2Qoc2FtcGxlUmF0ZSkpCisgICAgICAgIHJl
dHVybiBFeGNlcHRpb24geyBTeW50YXhFcnJvciB9OworICAgIGF1dG8gcmVuZGVyVGFyZ2V0ID0g
QXVkaW9CdWZmZXI6OmNyZWF0ZShudW1iZXJPZkNoYW5uZWxzLCBudW1iZXJPZkZyYW1lcywgc2Ft
cGxlUmF0ZSk7CisgICAgaWYgKCFyZW5kZXJUYXJnZXQpCisgICAgICAgIHJldHVybiBFeGNlcHRp
b24geyBTeW50YXhFcnJvciB9OworCisgICAgYXV0byBhdWRpb0NvbnRleHQgPSBhZG9wdFJlZigq
bmV3IFdlYktpdE9mZmxpbmVBdWRpb0NvbnRleHQoZG93bmNhc3Q8RG9jdW1lbnQ+KGNvbnRleHQp
LCByZW5kZXJUYXJnZXQuZ2V0KCkpKTsKKyAgICBhdWRpb0NvbnRleHQtPnN1c3BlbmRJZk5lZWRl
ZCgpOworICAgIHJldHVybiBhdWRpb0NvbnRleHQ7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKKworI2VuZGlmIC8vIEVOQUJMRShXRUJfQVVESU8pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1dlYktpdE9mZmxpbmVBdWRpb0NvbnRleHQuaCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vV2ViS2l0T2ZmbGluZUF1ZGlvQ29udGV4dC5oCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLmMyNTRlZDQxZmUwM2Q2MWU3ZWNiNTQ4N2UyYzc5YzQ3NDYxODJmOTQKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1dlYktpdE9mZmxp
bmVBdWRpb0NvbnRleHQuaApAQCAtMCwwICsxLDQwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDEyLCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0Ug
QVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04KKyAqIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUworICogU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBv
bmNlCisKKyNpbmNsdWRlICJXZWJLaXRBdWRpb0NvbnRleHQuaCIKKworbmFtZXNwYWNlIFdlYkNv
cmUgeworCitjbGFzcyBXZWJLaXRPZmZsaW5lQXVkaW9Db250ZXh0IGZpbmFsIDogcHVibGljIFdl
YktpdEF1ZGlvQ29udGV4dCB7CisgICAgV1RGX01BS0VfSVNPX0FMTE9DQVRFRChXZWJLaXRPZmZs
aW5lQXVkaW9Db250ZXh0KTsKK3B1YmxpYzoKKyAgICBzdGF0aWMgRXhjZXB0aW9uT3I8UmVmPFdl
YktpdE9mZmxpbmVBdWRpb0NvbnRleHQ+PiBjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYs
IHVuc2lnbmVkIG51bWJlck9mQ2hhbm5lbHMsIHNpemVfdCBudW1iZXJPZkZyYW1lcywgZmxvYXQg
c2FtcGxlUmF0ZSk7CisKK3ByaXZhdGU6CisgICAgV2ViS2l0T2ZmbGluZUF1ZGlvQ29udGV4dChE
b2N1bWVudCYsIEF1ZGlvQnVmZmVyKiByZW5kZXJUYXJnZXQpOworfTsKKworfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9X
ZWJLaXRPZmZsaW5lQXVkaW9Db250ZXh0LmlkbCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
YXVkaW8vV2ViS2l0T2ZmbGluZUF1ZGlvQ29udGV4dC5pZGwKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNTZhNjQ4YmMy
YTVmMjFjMzA1ZGQ0ODBjNDFhMDA1MjMxMjRkY2JmMQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vV2ViS2l0T2ZmbGluZUF1ZGlvQ29udGV4dC5pZGwK
QEAgLTAsMCArMSwzMSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiwgR29vZ2xlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5E
IEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OCisgKiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMKKyAqIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKK1sKKyAgICBDb25kaXRpb25hbD1XRUJfQVVE
SU8sCisgICAgSW50ZXJmYWNlTmFtZT13ZWJraXRPZmZsaW5lQXVkaW9Db250ZXh0LAorICAgIEpT
R2VuZXJhdGVUb0pTT2JqZWN0LAorXSBpbnRlcmZhY2UgV2ViS2l0T2ZmbGluZUF1ZGlvQ29udGV4
dCA6IFdlYktpdEF1ZGlvQ29udGV4dCB7CisgICAgW0NhbGxXaXRoPVNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQsIE1heVRocm93RXhjZXB0aW9uXSBjb25zdHJ1Y3Rvcih1bnNpZ25lZCBsb25nIG51bWJl
ck9mQ2hhbm5lbHMsIHVuc2lnbmVkIGxvbmcgbnVtYmVyT2ZGcmFtZXMsIHVucmVzdHJpY3RlZCBm
bG9hdCBzYW1wbGVSYXRlKTsKK307CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2Vz
LnR4dCBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CmluZGV4IDJjNTZlZDUxMzlkYjA3OWE4
NmM3NzUxYTk1NjM4Y2IyNDhiZmU2YzcuLjE0OTU5YzM4MTUwMzU2YTg3ZGVlZTMyZWZiMzdiMjYy
NTY1ZjI2ZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CisrKyBiL1Nv
dXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CkBAIC0yNjksNiArMjY5LDkgQEAgTW9kdWxlcy93ZWJh
dWRpby9TY3JpcHRQcm9jZXNzb3JOb2RlLmNwcAogTW9kdWxlcy93ZWJhdWRpby9XYXZlU2hhcGVy
RFNQS2VybmVsLmNwcAogTW9kdWxlcy93ZWJhdWRpby9XYXZlU2hhcGVyTm9kZS5jcHAKIE1vZHVs
ZXMvd2ViYXVkaW8vV2F2ZVNoYXBlclByb2Nlc3Nvci5jcHAKK01vZHVsZXMvd2ViYXVkaW8vV2Vi
S2l0QXVkaW9Db250ZXh0LmNwcAorTW9kdWxlcy93ZWJhdWRpby9XZWJLaXRBdWRpb1Bhbm5lck5v
ZGUuY3BwCitNb2R1bGVzL3dlYmF1ZGlvL1dlYktpdE9mZmxpbmVBdWRpb0NvbnRleHQuY3BwCiAK
IE1vZHVsZXMvd2ViYXV0aG4vQXV0aGVudGljYXRvckNvb3JkaW5hdG9yLmNwcAogTW9kdWxlcy93
ZWJhdXRobi9BdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2UuY3BwCkBAIC0yNzQ0LDYgKzI3
NDcsNyBAQCBKU0F1ZGlvQnVmZmVyQ2FsbGJhY2suY3BwCiBKU0F1ZGlvQnVmZmVyU291cmNlTm9k
ZS5jcHAKIEpTQXVkaW9Db25maWd1cmF0aW9uLmNwcAogSlNBdWRpb0NvbnRleHQuY3BwCitKU0F1
ZGlvQ29udGV4dFN0YXRlLmNwcAogSlNBdWRpb0Rlc3RpbmF0aW9uTm9kZS5jcHAKIEpTQXVkaW9M
aXN0ZW5lci5jcHAKIEpTQXVkaW9Ob2RlLmNwcApAQCAtMjkxNCw2ICsyOTE4LDcgQEAgSlNEZXZp
Y2VNb3Rpb25FdmVudC5jcHAKIEpTRGV2aWNlT3JpZW50YXRpb25FdmVudC5jcHAKIEpTRGV2aWNl
T3JpZW50YXRpb25Pck1vdGlvblBlcm1pc3Npb25TdGF0ZS5jcHAKIEpTRGV2aWNlT3JpZW50YXRp
b25Pck1vdGlvbkV2ZW50LmNwcAorSlNEaXN0YW5jZU1vZGVsVHlwZS5jcHAKIEpTRG9jdW1lbnQu
Y3BwCiBKU0RvY3VtZW50QW5kRWxlbWVudEV2ZW50SGFuZGxlcnMuY3BwCiBKU0RvY3VtZW50RnJh
Z21lbnQuY3BwCkBAIC0zMjExLDYgKzMyMTYsNyBAQCBKU092ZXJmbG93RXZlbnQuY3BwCiBKU1Bh
Z2VUcmFuc2l0aW9uRXZlbnQuY3BwCiBKU1BhaW50UmVuZGVyaW5nQ29udGV4dDJELmNwcAogSlNQ
YW5uZXJOb2RlLmNwcAorSlNQYW5uaW5nTW9kZWxUeXBlLmNwcAogSlNQYXJlbnROb2RlLmNwcAog
SlNQYXRoMkQuY3BwCiBKU1BheWVyRXJyb3JGaWVsZHMuY3BwCkBAIC0zNTY3LDcgKzM1NzMsMTAg
QEAgSlNXZWJHUFVTd2FwQ2hhaW4uY3BwCiBKU1dlYkdQVVRleHR1cmUuY3BwCiBKU1dlYkdQVVRl
eHR1cmVWaWV3LmNwcAogSlNXZWJLaXRBbmltYXRpb25FdmVudC5jcHAKK0pTV2ViS2l0QXVkaW9D
b250ZXh0LmNwcAorSlNXZWJLaXRBdWRpb1Bhbm5lck5vZGUuY3BwCiBKU1dlYktpdENTU01hdHJp
eC5jcHAKK0pTV2ViS2l0T2ZmbGluZUF1ZGlvQ29udGV4dC5jcHAKIEpTV2ViS2l0UGxheWJhY2tU
YXJnZXRBdmFpbGFiaWxpdHlFdmVudC5jcHAKIEpTV2ViS2l0UG9pbnQuY3BwCiBKU1dlYktpdFRy
YW5zaXRpb25FdmVudC5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagppbmRleCBjN2FhYzg1OTY3Njc4MThiNjlkMzU4ZTNhZDgwNDg0ZTEy
NjRiODYwLi40NmY5NmQxNTBjYmYxYjdmYmQ4NjU5MjRiNmIxNGQyZjZjODcyZWQ0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysr
IGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0y
NDA3LDEyICsyNDA3LDE2IEBACiAJCTgzMDAzMEY4MUI3RDNCNzgwMEVEM0FBQyAvKiBDYWNoZWRI
VE1MQ29sbGVjdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gODMwMDMwRjcxQjdEMzk4ODAwRUQzQUFDIC8qIENhY2hlZEhUTUxDb2xsZWN0aW9uLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJODMwMzM1
MDIxRjU0OTA1NzAwNERGNzA3IC8qIEZpbGVTeXN0ZW1EaXJlY3RvcnlSZWFkZXIuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgzMDMzNEZDMUY1NDkwNTIw
MDRERjcwNyAvKiBGaWxlU3lzdGVtRGlyZWN0b3J5UmVhZGVyLmggKi87IH07CiAJCTgzMDMzNTAz
MUY1NDkwNUEwMDRERjcwNyAvKiBGaWxlU3lzdGVtRW50cmllc0NhbGxiYWNrLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4MzAzMzRGRTFGNTQ5MDUyMDA0
REY3MDcgLyogRmlsZVN5c3RlbUVudHJpZXNDYWxsYmFjay5oICovOyB9OworCQk4MzA0MDI4MjI0
OUE3QTVGMDBBOTBEOEQgLyogUGFubmluZ01vZGVsVHlwZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODMwNDAyODAyNDlBN0E1QzAwQTkwRDhEIC8qIFBh
bm5pbmdNb2RlbFR5cGUuaCAqLzsgfTsKKwkJODMwNDAyODMyNDlBN0E2MjAwQTkwRDhEIC8qIERp
c3RhbmNlTW9kZWxUeXBlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA4MzA0MDI3RDI0OUE3QTVCMDBBOTBEOEQgLyogRGlzdGFuY2VNb2RlbFR5cGUuaCAq
LzsgfTsKIAkJODMwNTE5OTYxQkIwRjExMDAwRjM3NzJFIC8qIEhUTUxUaW1lRWxlbWVudC5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODMwNTE5OTMxQkIw
RjBFNzAwRjM3NzJFIC8qIEhUTUxUaW1lRWxlbWVudC5oICovOyB9OwogCQk4MzA3ODRCMjFDNTJF
RTJDMDAxMDREMUQgLyogWE1MRG9jdW1lbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDgzMDc4NEIxMUM1MkVFMTkwMDEwNEQxRCAvKiBYTUxEb2N1bWVu
dC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTgz
MEEzNkJEMURBQzVGQUQwMDZEN0QwOSAvKiBKU01vdXNlRXZlbnRJbml0LmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4MzBBMzZCQjFEQUM1RkE3MDA2RDdE
MDkgLyogSlNNb3VzZUV2ZW50SW5pdC5oICovOyB9OwogCQk4MzEwMkIyNzFGOUVBREQ5MDBFNDA0
QjkgLyogSlNFeHRlbmRhYmxlTWVzc2FnZUV2ZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4MzEwMkIyMzFGOUVBREMyMDBFNDA0QjkgLyogSlNFeHRl
bmRhYmxlTWVzc2FnZUV2ZW50LmggKi87IH07CiAJCTgzMTFDMDAzMUZBQTJFOTUwMEUzQzhFNSAv
KiBTV1NlcnZlckpvYlF1ZXVlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA4MzExQzAwMjFGQUEyRTg5MDBFM0M4RTUgLyogU1dTZXJ2ZXJKb2JRdWV1ZS5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTgzMTIw
QzcxMUM1NkYzRkIwMDFDQjExMiAvKiBIVE1MRGF0YUVsZW1lbnQuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgzNEI4NkE3MUM1NkU4M0EwMEYzRjBFMyAv
KiBIVE1MRGF0YUVsZW1lbnQuaCAqLzsgfTsKKwkJODMxQjYxNzYyNDk5QTVCQjAwQzA3Qzc5IC8q
IFdlYktpdEF1ZGlvUGFubmVyTm9kZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gODMxQjYxNzQyNDk5QTU5QzAwQzA3Qzc5IC8qIFdlYktpdEF1ZGlvUGFu
bmVyTm9kZS5oICovOyB9OworCQk4MzFCNjE3NzI0OTlBNUJGMDBDMDdDNzkgLyogV2ViS2l0T2Zm
bGluZUF1ZGlvQ29udGV4dC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gODMxQjYxNzUyNDk5QTU5RDAwQzA3Qzc5IC8qIFdlYktpdE9mZmxpbmVBdWRpb0Nv
bnRleHQuaCAqLzsgfTsKIAkJODMyMTUwN0UxRjI3RUExQjAwOTVCMTM2IC8qIE5hdmlnYXRvckJl
YWNvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODMy
MTUwN0IxRjI3RUExNTAwOTVCMTM2IC8qIE5hdmlnYXRvckJlYWNvbi5oICovOyB9OwogCQk4MzJC
ODQzNDE5RDhFNTUxMDBCMjYwNTUgLyogU1ZHQW5pbWF0ZUVsZW1lbnRCYXNlLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4MzJCODQzMzE5RDhFNTUxMDBC
MjYwNTUgLyogU1ZHQW5pbWF0ZUVsZW1lbnRCYXNlLmggKi87IH07CiAJCTgzM0I5RTMyMUY1MDhE
ODUwMEUwRTQyOCAvKiBKU0ZpbGVTeXN0ZW1EaXJlY3RvcnlFbnRyeS5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODMzQjlFMkYxRjUwOEQ4MDAwRTBFNDI4
IC8qIEpTRmlsZVN5c3RlbURpcmVjdG9yeUVudHJ5LmggKi87IH07CkBAIC0yNDY4LDEwICsyNDcy
LDEyIEBACiAJCTgzOUEyRjJFMUUyMDRBNzEwMDM5MDU3RSAvKiBXZWJHTFN0YXRlVHJhY2tlci5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODM5QTJGMkMx
RTIwNEE2RDAwMzkwNTdFIC8qIFdlYkdMU3RhdGVUcmFja2VyLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJODM5QUFGRUQxQTBDMEM4RDAwNjA1Rjk5
IC8qIEhUTUxXQlJFbGVtZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA4MzlBQUZFQjFBMEMwQzhEMDA2MDVGOTkgLyogSFRNTFdCUkVsZW1lbnQuaCAq
LzsgfTsKIAkJODNBOEFDNDAxRkFCQkZFNTAwMjA2NEFDIC8qIFNlcnZpY2VXb3JrZXJJZGVudGlm
aWVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4M0E4
QUMzRTFGQUJCRkQxMDAyMDY0QUMgLyogU2VydmljZVdvcmtlcklkZW50aWZpZXIuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk4M0IxQTcwMjI0OTk4
NUYwMDBGRTU5NjEgLyogV2ViS2l0QXVkaW9Db250ZXh0LmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4M0IxQTZGRjI0OTk4NUQwMDBGRTU5NjEgLyogV2Vi
S2l0QXVkaW9Db250ZXh0LmggKi87IH07CiAJCTgzQjJEMTc1MUI4QkNENkEwMEEwMkU0NyAvKiBO
YXRpdmVOb2RlRmlsdGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA4M0U5NTlFMTFCOEJDMjJCMDA0RDkzODUgLyogTmF0aXZlTm9kZUZpbHRlci5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTgzQjc0RUY2
MUYzRTBCRjIwMDk5NkJDNyAvKiBLZWVwYWxpdmVSZXF1ZXN0VHJhY2tlci5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODNCNzRFRjMxRjNFMEJENzAwOTk2
QkM3IC8qIEtlZXBhbGl2ZVJlcXVlc3RUcmFja2VyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJODNCOTY4N0IxOUY4QUI4MzAwNEVGN0FGIC8qIFN0
eWxlQnVpbGRlckNvbnZlcnRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gODNCOTY4NzkxOUY4QUI4MzAwNEVGN0FGIC8qIFN0eWxlQnVpbGRlckNvbnZl
cnRlci5oICovOyB9OwogCQk4M0JCNUM4ODFENUQ2RjQ1MDA1QTcxRjQgLyogQWxsRGVzY2VuZGFu
dHNDb2xsZWN0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA4M0JCNUM4NzFENUQ2RjNBMDA1QTcxRjQgLyogQWxsRGVzY2VuZGFudHNDb2xsZWN0aW9u
LmggKi87IH07CisJCTgzQkQzQ0VFMjQ5OThFMDEwMEJBM0U2NyAvKiBBdWRpb0NvbnRleHRTdGF0
ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODNCRDND
RUQyNDk5OERGNjAwQkEzRTY3IC8qIEF1ZGlvQ29udGV4dFN0YXRlLmggKi87IH07CiAJCTgzQzA1
QTVCMUE2ODYyMTIwMDdFNURFQSAvKiBTdHlsZVByb3BlcnR5U2hvcnRoYW5kRnVuY3Rpb25zLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4M0MwNUE1OTFB
Njg2MjEyMDA3RTVERUEgLyogU3R5bGVQcm9wZXJ0eVNob3J0aGFuZEZ1bmN0aW9ucy5oICovOyB9
OwogCQk4M0MxRjU5NDFFREY2OUQzMDA0MTBEMjcgLyogUXVhbGlmaWVkTmFtZUNhY2hlLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4M0MxRjU5MjFFREY2
OUQzMDA0MTBEMjcgLyogUXVhbGlmaWVkTmFtZUNhY2hlLmggKi87IH07CiAJCTgzQzQ1QjhFMURD
MkI2OEEwMDg4NzFCQSAvKiBWYWxpZGF0aW9uQnViYmxlLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4M0M0NUI4RDFEQzJCNjdDMDA4ODcxQkEgLyogVmFs
aWRhdGlvbkJ1YmJsZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CkBAIC0xMDI5NywxMSArMTAzMDMsMTYgQEAKIAkJODMwMDMwRjMxQjdEMzNBNjAwRUQz
QUFDIC8qIEdlbmVyaWNDYWNoZWRIVE1MQ29sbGVjdGlvbi5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBHZW5lcmljQ2FjaGVkSFRNTENvbGxlY3Rpb24uY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4MzAwMzBGNDFCN0QzM0E2MDBFRDNBQUMgLyogR2Vu
ZXJpY0NhY2hlZEhUTUxDb2xsZWN0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IEdlbmVyaWNDYWNoZWRIVE1MQ29sbGVjdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk4MzAwMzBGNzFCN0QzOTg4MDBFRDNBQUMgLyogQ2FjaGVkSFRNTENvbGxlY3Rpb24u
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ2FjaGVkSFRNTENvbGxlY3Rpb24u
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJODMwMDNFMkIyNDk5OTdBODAwNjBBRjk0
IC8qIFdlYktpdEF1ZGlvQ29udGV4dC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBXZWJLaXRBdWRpb0NvbnRleHQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk4MzAzMzRGQjFGNTQ5MDUyMDA0REY3MDcgLyogRmlsZVN5c3RlbURpcmVjdG9yeVJlYWRl
ci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBGaWxlU3lzdGVtRGly
ZWN0b3J5UmVhZGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODMwMzM0RkMx
RjU0OTA1MjAwNERGNzA3IC8qIEZpbGVTeXN0ZW1EaXJlY3RvcnlSZWFkZXIuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRmlsZVN5c3RlbURpcmVjdG9yeVJlYWRlci5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4MzAzMzRGRDFGNTQ5MDUyMDA0REY3MDcgLyogRmls
ZVN5c3RlbUVudHJpZXNDYWxsYmFjay5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gRmlsZVN5
c3RlbUVudHJpZXNDYWxsYmFjay5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTgz
MDMzNEZFMUY1NDkwNTIwMDRERjcwNyAvKiBGaWxlU3lzdGVtRW50cmllc0NhbGxiYWNrLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEZpbGVTeXN0ZW1FbnRyaWVzQ2FsbGJhY2su
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODMwMzM0RkYxRjU0OTA1MjAwNERGNzA3
IC8qIEZpbGVTeXN0ZW1EaXJlY3RvcnlSZWFkZXIuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9
IEZpbGVTeXN0ZW1EaXJlY3RvcnlSZWFkZXIuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQk4MzA0MDI3RDI0OUE3QTVCMDBBOTBEOEQgLyogRGlzdGFuY2VNb2RlbFR5cGUuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRGlzdGFuY2VNb2RlbFR5cGUuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJODMwNDAyN0YyNDlBN0E1QzAwQTkwRDhEIC8qIERpc3Rh
bmNlTW9kZWxUeXBlLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBEaXN0YW5jZU1vZGVsVHlw
ZS5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTgzMDQwMjgwMjQ5QTdBNUMwMEE5
MEQ4RCAvKiBQYW5uaW5nTW9kZWxUeXBlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFBhbm5pbmdNb2RlbFR5cGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJODMw
NDAyODEyNDlBN0E1RDAwQTkwRDhEIC8qIFBhbm5pbmdNb2RlbFR5cGUuaWRsICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
dGV4dDsgcGF0aCA9IFBhbm5pbmdNb2RlbFR5cGUuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk4MzA1MTk5MjFCQjBGMEU3MDBGMzc3MkUgLyogSFRNTFRpbWVFbGVtZW50LmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEhUTUxUaW1lRWxlbWVudC5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTgzMDUxOTkzMUJCMEYwRTcwMEYzNzcyRSAv
KiBIVE1MVGltZUVsZW1lbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSFRN
TFRpbWVFbGVtZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTgzMDUxOTk0MUJC
MEYwRTcwMEYzNzcyRSAvKiBIVE1MVGltZUVsZW1lbnQuaWRsICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0
aCA9IEhUTUxUaW1lRWxlbWVudC5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0x
MDMxNCw2ICsxMDMyNSwxMiBAQAogCQk4MzEwMkIyNTFGOUVBREMyMDBFNDA0QjkgLyogSlNFeHRl
bmRhYmxlTWVzc2FnZUV2ZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IEpTRXh0ZW5kYWJsZU1lc3NhZ2VFdmVudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTgzMTFDMDAwMUZBQTJFODkwMEUzQzhFNSAvKiBTV1NlcnZlckpvYlF1ZXVlLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNXU2VydmVySm9iUXVldWUuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4MzExQzAwMjFGQUEyRTg5MDBFM0M4RTUg
LyogU1dTZXJ2ZXJKb2JRdWV1ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBT
V1NlcnZlckpvYlF1ZXVlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTgzMUI2MTZG
MjQ5OUE1OTgwMEMwN0M3OSAvKiBXZWJLaXRBdWRpb1Bhbm5lck5vZGUuaWRsICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
dGV4dDsgcGF0aCA9IFdlYktpdEF1ZGlvUGFubmVyTm9kZS5pZGw7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTgzMUI2MTcxMjQ5OUE1OTkwMEMwN0M3OSAvKiBXZWJLaXRBdWRpb1Bhbm5l
ck5vZGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2ViS2l0QXVk
aW9QYW5uZXJOb2RlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJODMxQjYxNzIy
NDk5QTU5QTAwQzA3Qzc5IC8qIFdlYktpdE9mZmxpbmVBdWRpb0NvbnRleHQuaWRsICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gdGV4dDsgcGF0aCA9IFdlYktpdE9mZmxpbmVBdWRpb0NvbnRleHQuaWRsOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQk4MzFCNjE3MzI0OTlBNTlCMDBDMDdDNzkgLyogV2ViS2l0T2Zm
bGluZUF1ZGlvQ29udGV4dC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBXZWJLaXRPZmZsaW5lQXVkaW9Db250ZXh0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJODMxQjYxNzQyNDk5QTU5QzAwQzA3Qzc5IC8qIFdlYktpdEF1ZGlvUGFubmVyTm9kZS5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJLaXRBdWRpb1Bhbm5lck5vZGUu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJODMxQjYxNzUyNDk5QTU5RDAwQzA3Qzc5
IC8qIFdlYktpdE9mZmxpbmVBdWRpb0NvbnRleHQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gV2ViS2l0T2ZmbGluZUF1ZGlvQ29udGV4dC5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk4MzFDNDZDMzFGOUVFNUUwMDBFQkQ0NTAgLyogSlNFeHRlbmRhYmxlTWVzc2Fn
ZUV2ZW50Q3VzdG9tLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpT
RXh0ZW5kYWJsZU1lc3NhZ2VFdmVudEN1c3RvbS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTgzMUQxRjI5MUM1NkVDQTAwMEY1RjZDMCAvKiBIVE1MRGF0YUVsZW1lbnQuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSFRNTERhdGFFbGVtZW50LmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODMyMTUwN0ExRjI3RUExNTAwOTVCMTM2IC8q
IE5hdmlnYXRvckJlYWNvbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBOYXZpZ2F0b3JCZWFjb24u
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTA0NDEsNiArMTA0NTgsOCBAQAog
CQk4MzlBQUZFQjFBMEMwQzhEMDA2MDVGOTkgLyogSFRNTFdCUkVsZW1lbnQuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSFRNTFdCUkVsZW1lbnQuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJODNBNEE5RjgxQ0U3RkQ3RTAwNzA5QjAwIC8qIEpTWE1MRG9jdW1lbnRD
dXN0b20uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNYTUxEb2N1
bWVudEN1c3RvbS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTgzQThBQzNFMUZB
QkJGRDEwMDIwNjRBQyAvKiBTZXJ2aWNlV29ya2VySWRlbnRpZmllci5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBTZXJ2aWNlV29ya2VySWRlbnRpZmllci5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQk4M0IxQTZGRjI0OTk4NUQwMDBGRTU5NjEgLyogV2ViS2l0QXVk
aW9Db250ZXh0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYktpdEF1ZGlv
Q29udGV4dC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk4M0IxQTcwMTI0OTk4NUQw
MDBGRTU5NjEgLyogV2ViS2l0QXVkaW9Db250ZXh0LmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGgg
PSBXZWJLaXRBdWRpb0NvbnRleHQuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4
M0IyNTAwOTFGQTExODFDMDBCQzAyRDkgLyogSlNTZXJ2aWNlV29ya2VyQ2xpZW50VHlwZS5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU1NlcnZpY2VXb3JrZXJDbGllbnRUeXBl
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTgzQjI1MDBCMUZBMTE4MUQwMEJDMDJE
OSAvKiBKU1NlcnZpY2VXb3JrZXJDbGllbnRUeXBlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IEpTU2VydmljZVdvcmtlckNsaWVudFR5cGUuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk4M0I1REE0NTFGQTkwNzkzMDBCNTlERjQgLyogSlNOYXZpZ2F0
b3JDdXN0b20uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNOYXZp
Z2F0b3JDdXN0b20uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTA0NDgsNiAr
MTA0NjcsOCBAQAogCQk4M0I3NEVGMzFGM0UwQkQ3MDA5OTZCQzcgLyogS2VlcGFsaXZlUmVxdWVz
dFRyYWNrZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gS2VlcGFsaXZlUmVx
dWVzdFRyYWNrZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODNCOTY4NzkxOUY4
QUI4MzAwNEVGN0FGIC8qIFN0eWxlQnVpbGRlckNvbnZlcnRlci5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBTdHlsZUJ1aWxkZXJDb252ZXJ0ZXIuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJODNCQjVDODcxRDVENkYzQTAwNUE3MUY0IC8qIEFsbERlc2NlbmRhbnRz
Q29sbGVjdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBbGxEZXNjZW5k
YW50c0NvbGxlY3Rpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJODNCRDNDRUIy
NDk5OENDNTAwQkEzRTY3IC8qIEF1ZGlvQ29udGV4dFN0YXRlLmlkbCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7
IHBhdGggPSBBdWRpb0NvbnRleHRTdGF0ZS5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCTgzQkQzQ0VEMjQ5OThERjYwMEJBM0U2NyAvKiBBdWRpb0NvbnRleHRTdGF0ZS5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBdWRpb0NvbnRleHRTdGF0ZS5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk4M0MwNUE1ODFBNjg2MjEyMDA3RTVERUEgLyogU3R5bGVQ
cm9wZXJ0eVNob3J0aGFuZEZ1bmN0aW9ucy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IG5hbWUgPSBTdHlsZVByb3BlcnR5U2hvcnRoYW5kRnVuY3Rpb25zLmNwcDsgcGF0aCA9IERl
cml2ZWRTb3VyY2VzL1dlYkNvcmUvU3R5bGVQcm9wZXJ0eVNob3J0aGFuZEZ1bmN0aW9ucy5jcHA7
IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19ESVI7IH07CiAJCTgzQzA1QTU5MUE2ODYyMTIw
MDdFNURFQSAvKiBTdHlsZVByb3BlcnR5U2hvcnRoYW5kRnVuY3Rpb25zLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFN0eWxlUHJvcGVydHlTaG9ydGhhbmRGdW5jdGlvbnMuaDsg
cGF0aCA9IERlcml2ZWRTb3VyY2VzL1dlYkNvcmUvU3R5bGVQcm9wZXJ0eVNob3J0aGFuZEZ1bmN0
aW9ucy5oOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9OwogCQk4M0MxRjU5MTFF
REY2OUQzMDA0MTBEMjcgLyogUXVhbGlmaWVkTmFtZUNhY2hlLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFF1YWxpZmllZE5hbWVDYWNoZS5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CkBAIC0yOTIzOSw2ICsyOTI2MCw4IEBACiAJCQkJRkQzMTVGQkExMkIw
MjY3NTAwQzFBMzU5IC8qIEF1ZGlvQ29udGV4dC5jcHAgKi8sCiAJCQkJRkQzMTVGQkIxMkIwMjY3
NTAwQzFBMzU5IC8qIEF1ZGlvQ29udGV4dC5oICovLAogCQkJCUZEMzE1RkJDMTJCMDI2NzUwMEMx
QTM1OSAvKiBBdWRpb0NvbnRleHQuaWRsICovLAorCQkJCTgzQkQzQ0VEMjQ5OThERjYwMEJBM0U2
NyAvKiBBdWRpb0NvbnRleHRTdGF0ZS5oICovLAorCQkJCTgzQkQzQ0VCMjQ5OThDQzUwMEJBM0U2
NyAvKiBBdWRpb0NvbnRleHRTdGF0ZS5pZGwgKi8sCiAJCQkJRkQzMTVGQkQxMkIwMjY3NTAwQzFB
MzU5IC8qIEF1ZGlvRGVzdGluYXRpb25Ob2RlLmNwcCAqLywKIAkJCQlGRDMxNUZCRTEyQjAyNjc1
MDBDMUEzNTkgLyogQXVkaW9EZXN0aW5hdGlvbk5vZGUuaCAqLywKIAkJCQlGRDMxNUZCRjEyQjAy
Njc1MDBDMUEzNTkgLyogQXVkaW9EZXN0aW5hdGlvbk5vZGUuaWRsICovLApAQCAtMjkyODksNiAr
MjkzMTIsOCBAQAogCQkJCUZEMzE1RkU1MTJCMDI2NzYwMEMxQTM1OSAvKiBEZWxheU5vZGUuaWRs
ICovLAogCQkJCUZEMzE1RkU2MTJCMDI2NzYwMEMxQTM1OSAvKiBEZWxheVByb2Nlc3Nvci5jcHAg
Ki8sCiAJCQkJRkQzMTVGRTcxMkIwMjY3NjAwQzFBMzU5IC8qIERlbGF5UHJvY2Vzc29yLmggKi8s
CisJCQkJODMwNDAyN0QyNDlBN0E1QjAwQTkwRDhEIC8qIERpc3RhbmNlTW9kZWxUeXBlLmggKi8s
CisJCQkJODMwNDAyN0YyNDlBN0E1QzAwQTkwRDhEIC8qIERpc3RhbmNlTW9kZWxUeXBlLmlkbCAq
LywKIAkJCQlGRDZFRDJDMTEzNkI4RTQyMDAzQ0YwNzIgLyogRHluYW1pY3NDb21wcmVzc29yTm9k
ZS5jcHAgKi8sCiAJCQkJRkQ2RUQyQzIxMzZCOEU0MjAwM0NGMDcyIC8qIER5bmFtaWNzQ29tcHJl
c3Nvck5vZGUuaCAqLywKIAkJCQlGRDZFRDJDOTEzNkI4RTlEMDAzQ0YwNzIgLyogRHluYW1pY3ND
b21wcmVzc29yTm9kZS5pZGwgKi8sCkBAIC0yOTMyMSw2ICsyOTM0Niw4IEBACiAJCQkJRkQzMTVG
Q0YxMkIwMjY3NTAwQzFBMzU5IC8qIFBhbm5lck5vZGUuY3BwICovLAogCQkJCUZEMzE1RkQwMTJC
MDI2NzUwMEMxQTM1OSAvKiBQYW5uZXJOb2RlLmggKi8sCiAJCQkJRkQzMTVGRDExMkIwMjY3NTAw
QzFBMzU5IC8qIFBhbm5lck5vZGUuaWRsICovLAorCQkJCTgzMDQwMjgwMjQ5QTdBNUMwMEE5MEQ4
RCAvKiBQYW5uaW5nTW9kZWxUeXBlLmggKi8sCisJCQkJODMwNDAyODEyNDlBN0E1RDAwQTkwRDhE
IC8qIFBhbm5pbmdNb2RlbFR5cGUuaWRsICovLAogCQkJCUZENTgxRkIxMTUyMEY5M0IwMDNBN0E3
NSAvKiBQZXJpb2RpY1dhdmUuY3BwICovLAogCQkJCUZENTgxRkIyMTUyMEY5M0IwMDNBN0E3NSAv
KiBQZXJpb2RpY1dhdmUuaCAqLywKIAkJCQlGRDU4MUZCMzE1MjBGOTNCMDAzQTdBNzUgLyogUGVy
aW9kaWNXYXZlLmlkbCAqLywKQEAgLTI5MzM2LDYgKzI5MzYzLDE1IEBACiAJCQkJRkQ3RjI5OEUx
M0Q0QzBDQjAwQUQ5NTM1IC8qIFdhdmVTaGFwZXJOb2RlLmlkbCAqLywKIAkJCQlGRDdGMjk4RjEz
RDRDMENCMDBBRDk1MzUgLyogV2F2ZVNoYXBlclByb2Nlc3Nvci5jcHAgKi8sCiAJCQkJRkQ3RjI5
OTAxM0Q0QzBDQjAwQUQ5NTM1IC8qIFdhdmVTaGFwZXJQcm9jZXNzb3IuaCAqLywKKwkJCQk4MzAw
M0UyQjI0OTk5N0E4MDA2MEFGOTQgLyogV2ViS2l0QXVkaW9Db250ZXh0LmNwcCAqLywKKwkJCQk4
M0IxQTZGRjI0OTk4NUQwMDBGRTU5NjEgLyogV2ViS2l0QXVkaW9Db250ZXh0LmggKi8sCisJCQkJ
ODNCMUE3MDEyNDk5ODVEMDAwRkU1OTYxIC8qIFdlYktpdEF1ZGlvQ29udGV4dC5pZGwgKi8sCisJ
CQkJODMxQjYxNzEyNDk5QTU5OTAwQzA3Qzc5IC8qIFdlYktpdEF1ZGlvUGFubmVyTm9kZS5jcHAg
Ki8sCisJCQkJODMxQjYxNzQyNDk5QTU5QzAwQzA3Qzc5IC8qIFdlYktpdEF1ZGlvUGFubmVyTm9k
ZS5oICovLAorCQkJCTgzMUI2MTZGMjQ5OUE1OTgwMEMwN0M3OSAvKiBXZWJLaXRBdWRpb1Bhbm5l
ck5vZGUuaWRsICovLAorCQkJCTgzMUI2MTczMjQ5OUE1OUIwMEMwN0M3OSAvKiBXZWJLaXRPZmZs
aW5lQXVkaW9Db250ZXh0LmNwcCAqLywKKwkJCQk4MzFCNjE3NTI0OTlBNTlEMDBDMDdDNzkgLyog
V2ViS2l0T2ZmbGluZUF1ZGlvQ29udGV4dC5oICovLAorCQkJCTgzMUI2MTcyMjQ5OUE1OUEwMEMw
N0M3OSAvKiBXZWJLaXRPZmZsaW5lQXVkaW9Db250ZXh0LmlkbCAqLywKIAkJCSk7CiAJCQlwYXRo
ID0gd2ViYXVkaW87CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwpAQCAtMjk3MzIsNiArMjk3
NjgsNyBAQAogCQkJCUZEMzE2MDdDMTJCMDI2RjcwMEMxQTM1OSAvKiBBdWRpb0J1cy5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJRkQzMTYwN0UxMkIwMjZGNzAwQzFBMzU5IC8qIEF1ZGlvQ2hhbm5lbC5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJRkQzMTYwMDUxMkIwMjY3NjAwQzFBMzU5IC8qIEF1ZGlvQ29u
dGV4dC5oIGluIEhlYWRlcnMgKi8sCisJCQkJODNCRDNDRUUyNDk5OEUwMTAwQkEzRTY3IC8qIEF1
ZGlvQ29udGV4dFN0YXRlLmggaW4gSGVhZGVycyAqLywKIAkJCQlGRDMxNjA3RjEyQjAyNkY3MDBD
MUEzNTkgLyogQXVkaW9EZXN0aW5hdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOUIxMjI5QzQy
M0ZFNEJEMjAwOENBNzUxIC8qIEF1ZGlvRGVzdGluYXRpb25Db2NvYS5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJRkQzMTYwQkQxMkIwMjcyQTAwQzFBMzU5IC8qIEF1ZGlvRGVzdGluYXRpb25NYWMuaCBp
biBIZWFkZXJzICovLApAQCAtMzAzODcsNiArMzA0MjQsNyBAQAogCQkJCTJEMjlFQ0M4MTkyRUND
ODMwMDk4NEI3OCAvKiBEaXNwbGF5UmVmcmVzaE1vbml0b3JNYW5hZ2VyLmggaW4gSGVhZGVycyAq
LywKIAkJCQk2RkNFMUExQTIyNjE4QUJEMDA0RjAzNDMgLyogRGlzcGxheVJ1bi5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJRkQzMTYwOTExMkIwMjZGNzAwQzFBMzU5IC8qIERpc3RhbmNlLmggaW4gSGVh
ZGVycyAqLywKKwkJCQk4MzA0MDI4MzI0OUE3QTYyMDBBOTBEOEQgLyogRGlzdGFuY2VNb2RlbFR5
cGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTg0NzMwRDc3MTI0OEYwQjMwMEQzQTlDOSAvKiBEaXN0
YW50TGlnaHRTb3VyY2UuaCBpbiBIZWFkZXJzICovLAogCQkJCUIyRjM0RkU2MEU4MkY4MTQwMEY2
MjdDRCAvKiBETlMuaCBpbiBIZWFkZXJzICovLAogCQkJCTdFRTY4NDZGMTJEMjZFMzgwMEU3MzIx
NSAvKiBETlNSZXNvbHZlUXVldWVDRk5ldC5oIGluIEhlYWRlcnMgKi8sCkBAIC0zMjQwMCw2ICsz
MjQzOCw3IEBACiAJCQkJQTgwRTZDRkIwQTE5ODlDQTAwN0ZCOEM1IC8qIFBhaXIuaCBpbiBIZWFk
ZXJzICovLAogCQkJCUZEMzE2MEEzMTJCMDI2RjcwMEMxQTM1OSAvKiBQYW5uZXIuaCBpbiBIZWFk
ZXJzICovLAogCQkJCUZEMzE2MDFBMTJCMDI2NzYwMEMxQTM1OSAvKiBQYW5uZXJOb2RlLmggaW4g
SGVhZGVycyAqLywKKwkJCQk4MzA0MDI4MjI0OUE3QTVGMDBBOTBEOEQgLyogUGFubmluZ01vZGVs
VHlwZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTE4ODkwQUYxQUExM0YyNTAwMjZDMzAxIC8qIFBh
cmVudGFsQ29udHJvbHNDb250ZW50RmlsdGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlDRENENDFF
ODFDM0REQjBBMDA5NjVEOTkgLyogUGFyc2VkQ29udGVudFJhbmdlLmggaW4gSGVhZGVycyAqLywK
IAkJCQk0NDc5NTgwNDE2NDNCNDlBMDAxRTBBN0YgLyogUGFyc2VkQ29udGVudFR5cGUuaCBpbiBI
ZWFkZXJzICovLApAQCAtMzM3MjgsNiArMzM3NjcsOCBAQAogCQkJCUE1ODRGRTMwMTg2NENCODQw
MDg0M0IxMCAvKiBXZWJJbmplY3RlZFNjcmlwdE1hbmFnZXIuaCBpbiBIZWFkZXJzICovLAogCQkJ
CUY0ODIyMzExMUUzODY5QjgwMDY2RkM3OSAvKiBXZWJJdGVtUHJvdmlkZXJQYXN0ZWJvYXJkLmgg
aW4gSGVhZGVycyAqLywKIAkJCQkzMUMwRkYyMjBFNENFQjZFMDA3RDZGRTUgLyogV2ViS2l0QW5p
bWF0aW9uRXZlbnQuaCBpbiBIZWFkZXJzICovLAorCQkJCTgzQjFBNzAyMjQ5OTg1RjAwMEZFNTk2
MSAvKiBXZWJLaXRBdWRpb0NvbnRleHQuaCBpbiBIZWFkZXJzICovLAorCQkJCTgzMUI2MTc2MjQ5
OUE1QkIwMEMwN0M3OSAvKiBXZWJLaXRBdWRpb1Bhbm5lck5vZGUuaCBpbiBIZWFkZXJzICovLAog
CQkJCTVERkVCQUI3MTg1OTJCNkQwMEM3NUJFQiAvKiBXZWJLaXRBdmFpbGFiaWxpdHkuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTQ5ODM5MTU5MEYxRTc3NjkwMEMyMzc4MiAvKiBXZWJLaXRDU1NNYXRy
aXguaCBpbiBIZWFkZXJzICovLAogCQkJCTJEMDYyMTQ1MURBNjM5QkEwMEE3RkIyNiAvKiBXZWJL
aXRNZWRpYUtleU1lc3NhZ2VFdmVudC5oIGluIEhlYWRlcnMgKi8sCkBAIC0zMzczNiw2ICszMzc3
Nyw3IEBACiAJCQkJMkQwNjIxNTAxREE2M0E5NDAwQTdGQjI2IC8qIFdlYktpdE1lZGlhS2V5U2Vz
c2lvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJN0M0OEE2RDExOTFDOUQ2NTAwMDI2Njc0IC8qIFdl
YktpdE5hbWVzcGFjZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJN0EyMjczMjEyMEM5RkFGRTAwREIx
REVGIC8qIFdlYktpdE5TSW1hZ2VFeHRyYXMuaCBpbiBIZWFkZXJzICovLAorCQkJCTgzMUI2MTc3
MjQ5OUE1QkYwMEMwN0M3OSAvKiBXZWJLaXRPZmZsaW5lQXVkaW9Db250ZXh0LmggaW4gSGVhZGVy
cyAqLywKIAkJCQlBNURFQkRBNDE2RkI5MDg3MDA4MzZGRTAgLyogV2ViS2l0UGxheWJhY2tUYXJn
ZXRBdmFpbGFiaWxpdHlFdmVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDk0QkQ3OTUwRjU1QzhF
RTAwNzQ3ODI4IC8qIFdlYktpdFBvaW50LmggaW4gSGVhZGVycyAqLywKIAkJCQkzMUMwRkYyNTBF
NENFQjZFMDA3RDZGRTUgLyogV2ViS2l0VHJhbnNpdGlvbkV2ZW50LmggaW4gSGVhZGVycyAqLywK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1dlYkNvcmVCdWlsdGluTmFt
ZXMuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1dlYkNvcmVCdWlsdGluTmFtZXMuaApp
bmRleCA0OTk3YWI5OTNjYjc5NTQ1NzVhODQzMTdkNjljMjBjY2VjNmE3ZDA5Li5mOTE5N2MyNmFl
OWE0YzM5YzkyMjNiNTQxZDU5ZmJjMGE4MjBlOTljIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9XZWJDb3JlQnVpbHRpbk5hbWVzLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvV2ViQ29yZUJ1aWx0aW5OYW1lcy5oCkBAIC00OSw2ICs0OSw3IEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKICAgICBtYWNybyhBcHBsZVBheVNldHVwRmVhdHVyZSkgXAogICAgIG1h
Y3JvKEF0dGFjaG1lbnRFbGVtZW50KSBcCiAgICAgbWFjcm8oQXVkaW8pIFwKKyAgICBtYWNybyhB
dWRpb0NvbnRleHQpIFwKICAgICBtYWNybyhBdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2Up
IFwKICAgICBtYWNybyhBdXRoZW50aWNhdG9yQXR0ZXN0YXRpb25SZXNwb25zZSkgXAogICAgIG1h
Y3JvKEF1dGhlbnRpY2F0b3JSZXNwb25zZSkgXApAQCAtMTY1LDkgKzE2NiwxMSBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAgICAgbWFjcm8oTmF2aWdhdG9yQ3JlZGVudGlhbHMpIFwKICAgICBtYWNy
byhOYXZpZ2F0b3JNZWRpYURldmljZXMpIFwKICAgICBtYWNybyhOYXZpZ2F0b3JVc2VyTWVkaWEp
IFwKKyAgICBtYWNybyhPZmZsaW5lQXVkaW9Db250ZXh0KSBcCiAgICAgbWFjcm8oT2Zmc2NyZWVu
Q2FudmFzKSBcCiAgICAgbWFjcm8oT2Zmc2NyZWVuQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEKSBc
CiAgICAgbWFjcm8oUGFpbnRSZW5kZXJpbmdDb250ZXh0MkQpIFwKKyAgICBtYWNybyhQYW5uZXJO
b2RlKSBcCiAgICAgbWFjcm8oUGF5bWVudEFkZHJlc3MpIFwKICAgICBtYWNybyhQYXltZW50TWV0
aG9kQ2hhbmdlRXZlbnQpIFwKICAgICBtYWNybyhQYXltZW50UmVxdWVzdCkgXApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50VGFyZ2V0RmFjdG9yeS5pbiBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9FdmVudFRhcmdldEZhY3RvcnkuaW4KaW5kZXggZmMxZGIyY2UwZTA2NTAwMjhjZDRj
YmNlNDllYmQzMjk0NGIzMmIzNC4uYTE1NGI0NDVhMTNhZDQ3Njk2MjlkOWY3ZDkzNzdhOWRmMTUw
ZjdhYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50VGFyZ2V0RmFjdG9yeS5p
bgorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRUYXJnZXRGYWN0b3J5LmluCkBAIC01Myw2
ICs1Myw3IEBAIFZpZGVvVHJhY2tMaXN0IGNvbmRpdGlvbmFsPVZJREVPCiBWaXN1YWxWaWV3cG9y
dAogV2ViQW5pbWF0aW9uCiBXZWJHUFVEZXZpY2UgY29uZGl0aW9uYWw9V0VCR1BVCitXZWJLaXRB
dWRpb0NvbnRleHQgY29uZGl0aW9uYWw9V0VCX0FVRElPCiBXZWJLaXRNZWRpYUtleVNlc3Npb24g
Y29uZGl0aW9uYWw9TEVHQUNZX0VOQ1JZUFRFRF9NRURJQQogV2ViU29ja2V0CiBXb3JrZXIKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3MueWFtbCBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvU2V0dGluZ3MueWFtbAppbmRleCAyZDZiYzZmZjJlZjBiMDAwZGQ0ZTk4MDZjZWQ2
YzQ4ZmI0NzBiZTNhLi41ODNmYzZmNzk1ZWZjMDcwMmZiMzg0MGRiNGU4MTFiODg2MDlmYTNlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdzLnlhbWwKKysrIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9TZXR0aW5ncy55YW1sCkBAIC0yNTUsNiArMjU1LDggQEAgbG9hZERlZmVy
cmluZ0VuYWJsZWQ6CiAgIGluaXRpYWw6IHRydWUKIHdlYkF1ZGlvRW5hYmxlZDoKICAgaW5pdGlh
bDogZmFsc2UKK21vZGVyblVucHJlZml4ZWRXZWJBdWRpb0VuYWJsZWQ6CisgIGluaXRpYWw6IGZh
bHNlCiBwYWdpbmF0ZUR1cmluZ0xheW91dEVuYWJsZWQ6CiAgIGluaXRpYWw6IGZhbHNlCiBmdWxs
U2NyZWVuRW5hYmxlZDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJu
YWxzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAppbmRleCAwZjVj
MTk3YTI5ODA3ZTc2M2NhZWJmMDkwMmE0Y2Y5YTYyMDhiOTdjLi42MmZhZmJlZDBjY2NlNzc0M2Nl
MmQ0YjE5NzNlMDE3ODIxODQzY2U2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5n
L0ludGVybmFscy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3Bw
CkBAIC0yODAsNiArMjgwLDcgQEAKIAogI2lmIEVOQUJMRShXRUJfQVVESU8pCiAjaW5jbHVkZSAi
QXVkaW9Db250ZXh0LmgiCisjaW5jbHVkZSAiV2ViS2l0QXVkaW9Db250ZXh0LmgiCiAjZW5kaWYK
IAogI2lmIEVOQUJMRShNRURJQV9TRVNTSU9OKQpAQCAtNDI5MCwyMiArNDI5MSwyOSBAQCB2b2lk
IEludGVybmFsczo6c2VuZE1lZGlhQ29udHJvbEV2ZW50KE1lZGlhQ29udHJvbEV2ZW50IGV2ZW50
KQogI2VuZGlmIC8vIEVOQUJMRShNRURJQV9TRVNTSU9OKQogCiAjaWYgRU5BQkxFKFdFQl9BVURJ
TykKLXZvaWQgSW50ZXJuYWxzOjpzZXRBdWRpb0NvbnRleHRSZXN0cmljdGlvbnMoQXVkaW9Db250
ZXh0JiBjb250ZXh0LCBTdHJpbmdWaWV3IHJlc3RyaWN0aW9uc1N0cmluZykKK3ZvaWQgSW50ZXJu
YWxzOjpzZXRBdWRpb0NvbnRleHRSZXN0cmljdGlvbnMoY29uc3QgVmFyaWFudDxSZWZQdHI8QXVk
aW9Db250ZXh0PiwgUmVmUHRyPFdlYktpdEF1ZGlvQ29udGV4dD4+JiBjb250ZXh0VmFyaWFudCwg
U3RyaW5nVmlldyByZXN0cmljdGlvbnNTdHJpbmcpCiB7Ci0gICAgQXVkaW9Db250ZXh0OjpCZWhh
dmlvclJlc3RyaWN0aW9ucyByZXN0cmljdGlvbnMgPSBjb250ZXh0LmJlaGF2aW9yUmVzdHJpY3Rp
b25zKCk7Ci0gICAgY29udGV4dC5yZW1vdmVCZWhhdmlvclJlc3RyaWN0aW9uKHJlc3RyaWN0aW9u
cyk7CisgICAgUmVmUHRyPEF1ZGlvQ29udGV4dEJhc2U+IGNvbnRleHQ7CisgICAgc3dpdGNoT24o
Y29udGV4dFZhcmlhbnQsIFsmXShSZWZQdHI8QXVkaW9Db250ZXh0PiBlbnRyeSkgeworICAgICAg
ICBjb250ZXh0ID0gZW50cnk7CisgICAgfSwgWyZdKFJlZlB0cjxXZWJLaXRBdWRpb0NvbnRleHQ+
IGVudHJ5KSB7CisgICAgICAgIGNvbnRleHQgPSBlbnRyeTsKKyAgICB9KTsKKworICAgIGF1dG8g
cmVzdHJpY3Rpb25zID0gY29udGV4dC0+YmVoYXZpb3JSZXN0cmljdGlvbnMoKTsKKyAgICBjb250
ZXh0LT5yZW1vdmVCZWhhdmlvclJlc3RyaWN0aW9uKHJlc3RyaWN0aW9ucyk7CiAKLSAgICByZXN0
cmljdGlvbnMgPSBBdWRpb0NvbnRleHQ6Ok5vUmVzdHJpY3Rpb25zOworICAgIHJlc3RyaWN0aW9u
cyA9IEF1ZGlvQ29udGV4dEJhc2U6Ok5vUmVzdHJpY3Rpb25zOwogCiAgICAgZm9yIChTdHJpbmdW
aWV3IHJlc3RyaWN0aW9uU3RyaW5nIDogcmVzdHJpY3Rpb25zU3RyaW5nLnNwbGl0KCcsJykpIHsK
ICAgICAgICAgaWYgKGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKHJlc3RyaWN0aW9uU3Ry
aW5nLCAibm9yZXN0cmljdGlvbnMiKSkKLSAgICAgICAgICAgIHJlc3RyaWN0aW9ucyB8PSBBdWRp
b0NvbnRleHQ6Ok5vUmVzdHJpY3Rpb25zOworICAgICAgICAgICAgcmVzdHJpY3Rpb25zIHw9IEF1
ZGlvQ29udGV4dEJhc2U6Ok5vUmVzdHJpY3Rpb25zOwogICAgICAgICBpZiAoZXF1YWxMZXR0ZXJz
SWdub3JpbmdBU0NJSUNhc2UocmVzdHJpY3Rpb25TdHJpbmcsICJyZXF1aXJldXNlcmdlc3R1cmVm
b3JhdWRpb3N0YXJ0IikpCi0gICAgICAgICAgICByZXN0cmljdGlvbnMgfD0gQXVkaW9Db250ZXh0
OjpSZXF1aXJlVXNlckdlc3R1cmVGb3JBdWRpb1N0YXJ0UmVzdHJpY3Rpb247CisgICAgICAgICAg
ICByZXN0cmljdGlvbnMgfD0gQXVkaW9Db250ZXh0QmFzZTo6UmVxdWlyZVVzZXJHZXN0dXJlRm9y
QXVkaW9TdGFydFJlc3RyaWN0aW9uOwogICAgICAgICBpZiAoZXF1YWxMZXR0ZXJzSWdub3JpbmdB
U0NJSUNhc2UocmVzdHJpY3Rpb25TdHJpbmcsICJyZXF1aXJlcGFnZWNvbnNlbnRmb3JhdWRpb3N0
YXJ0IikpCi0gICAgICAgICAgICByZXN0cmljdGlvbnMgfD0gQXVkaW9Db250ZXh0OjpSZXF1aXJl
UGFnZUNvbnNlbnRGb3JBdWRpb1N0YXJ0UmVzdHJpY3Rpb247CisgICAgICAgICAgICByZXN0cmlj
dGlvbnMgfD0gQXVkaW9Db250ZXh0QmFzZTo6UmVxdWlyZVBhZ2VDb25zZW50Rm9yQXVkaW9TdGFy
dFJlc3RyaWN0aW9uOwogICAgIH0KLSAgICBjb250ZXh0LmFkZEJlaGF2aW9yUmVzdHJpY3Rpb24o
cmVzdHJpY3Rpb25zKTsKKyAgICBjb250ZXh0LT5hZGRCZWhhdmlvclJlc3RyaWN0aW9uKHJlc3Ry
aWN0aW9ucyk7CiB9CiAKIHZvaWQgSW50ZXJuYWxzOjp1c2VNb2NrQXVkaW9EZXN0aW5hdGlvbkNv
Y29hKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmggYi9T
b3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5oCmluZGV4IDM0MjI3OTk0ZDY0ZmFkNmY2
MjlkMzgyNjBhNzFiMGE1Njk4OTJiZGEuLmMxZmFkOWJmMjk1Yzk2Y2FkYmI4MmUxZDZiNTA3MzY0
YzMxYmQwMTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaApAQCAtMTA4LDYgKzEwOCw3
IEBAIGNsYXNzIFVuc3VzcGVuZGFibGVBY3RpdmVET01PYmplY3Q7CiBjbGFzcyBWb2lkQ2FsbGJh
Y2s7CiBjbGFzcyBXZWJBbmltYXRpb247CiBjbGFzcyBXZWJHTFJlbmRlcmluZ0NvbnRleHQ7Citj
bGFzcyBXZWJLaXRBdWRpb0NvbnRleHQ7CiBjbGFzcyBXaW5kb3dQcm94eTsKIGNsYXNzIFhNTEh0
dHBSZXF1ZXN0OwogCkBAIC02NzQsNyArNjc1LDcgQEAgcHVibGljOgogI2VuZGlmCiAKICNpZiBF
TkFCTEUoV0VCX0FVRElPKQotICAgIHZvaWQgc2V0QXVkaW9Db250ZXh0UmVzdHJpY3Rpb25zKEF1
ZGlvQ29udGV4dCYsIFN0cmluZ1ZpZXcgcmVzdHJpY3Rpb25zU3RyaW5nKTsKKyAgICB2b2lkIHNl
dEF1ZGlvQ29udGV4dFJlc3RyaWN0aW9ucyhjb25zdCBWYXJpYW50PFJlZlB0cjxBdWRpb0NvbnRl
eHQ+LCBSZWZQdHI8V2ViS2l0QXVkaW9Db250ZXh0Pj4mLCBTdHJpbmdWaWV3IHJlc3RyaWN0aW9u
c1N0cmluZyk7CiAgICAgdm9pZCB1c2VNb2NrQXVkaW9EZXN0aW5hdGlvbkNvY29hKCk7CiAjZW5k
aWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaWRsIGIv
U291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaWRsCmluZGV4IDg3YTc0YjVmOWFkZTk5
OGI1MjNhMTRlOWZhNTEzNjU1ZTg4ODE3MmIuLjJhMzNjOWFhNTFlYWI1Yjc2NjhmNjA5Njg0YTIx
MWE3YjdkNWMzZTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxz
LmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5pZGwKQEAgLTY3Niw3
ICs2NzYsNyBAQCBlbnVtIENvbXBvc2l0aW5nUG9saWN5IHsKICAgICBbQ29uZGl0aW9uYWw9VklE
RU8sIE1heVRocm93RXhjZXB0aW9uXSB2b2lkIHNldE1lZGlhU2Vzc2lvblJlc3RyaWN0aW9ucyhE
T01TdHJpbmcgbWVkaWFUeXBlLCBET01TdHJpbmcgcmVzdHJpY3Rpb25zKTsKICAgICBbQ29uZGl0
aW9uYWw9VklERU8sIE1heVRocm93RXhjZXB0aW9uXSBET01TdHJpbmcgbWVkaWFTZXNzaW9uUmVz
dHJpY3Rpb25zKERPTVN0cmluZyBtZWRpYVR5cGUpOwogICAgIFtDb25kaXRpb25hbD1WSURFT10g
dm9pZCBzZXRNZWRpYUVsZW1lbnRSZXN0cmljdGlvbnMoSFRNTE1lZGlhRWxlbWVudCBlbGVtZW50
LCBET01TdHJpbmcgcmVzdHJpY3Rpb25zKTsKLSAgICBbQ29uZGl0aW9uYWw9V0VCX0FVRElPXSB2
b2lkIHNldEF1ZGlvQ29udGV4dFJlc3RyaWN0aW9ucyhBdWRpb0NvbnRleHQgY29udGV4dCwgRE9N
U3RyaW5nIHJlc3RyaWN0aW9ucyk7CisgICAgW0NvbmRpdGlvbmFsPVdFQl9BVURJT10gdm9pZCBz
ZXRBdWRpb0NvbnRleHRSZXN0cmljdGlvbnMoKEF1ZGlvQ29udGV4dCBvciBXZWJLaXRBdWRpb0Nv
bnRleHQpIGNvbnRleHQsIERPTVN0cmluZyByZXN0cmljdGlvbnMpOwogICAgIFtDb25kaXRpb25h
bD1WSURFTywgTWF5VGhyb3dFeGNlcHRpb25dIHZvaWQgcG9zdFJlbW90ZUNvbnRyb2xDb21tYW5k
KERPTVN0cmluZyBjb21tYW5kLCBvcHRpb25hbCB1bnJlc3RyaWN0ZWQgZmxvYXQgYXJndW1lbnQg
PSAwKTsKICAgICBbQ29uZGl0aW9uYWw9V0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUXSB2b2lkIHNl
dE1vY2tNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyRW5hYmxlZChib29sZWFuIGVuYWJsZWQpOwog
ICAgIFtDb25kaXRpb25hbD1XSVJFTEVTU19QTEFZQkFDS19UQVJHRVQsIE1heVRocm93RXhjZXB0
aW9uXSB2b2lkIHNldE1vY2tNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyU3RhdGUoRE9NU3RyaW5n
IGRldmljZU5hbWUsIERPTVN0cmluZyBkZXZpY2VTdGF0ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9XZWJQcmVmZXJlbmNlcy55YW1sIGIvU291cmNlL1dlYktpdC9TaGFyZWQv
V2ViUHJlZmVyZW5jZXMueWFtbAppbmRleCBmYWQxYTlmNTg4NjIxZTk1ZTE5YjFhNGZlNzRlYTMw
MjM2NDI0MTNkLi41MjM1Y2U3MWZmN2E5MzJlMTIzOGM2NDAxOWRhMzEyYzU5MTZkYjZmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQcmVmZXJlbmNlcy55YW1sCisrKyBiL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL1dlYlByZWZlcmVuY2VzLnlhbWwKQEAgLTMzNCw2ICszMzQsMTQg
QEAgV2ViQXVkaW9FbmFibGVkOgogICBkZWZhdWx0VmFsdWU6IHRydWUKICAgY29uZGl0aW9uOiBF
TkFCTEUoV0VCX0FVRElPKQogCitNb2Rlcm5VbnByZWZpeGVkV2ViQXVkaW9FbmFibGVkOgorICB0
eXBlOiBib29sCisgIGRlZmF1bHRWYWx1ZTogZmFsc2UKKyAgY29uZGl0aW9uOiBFTkFCTEUoV0VC
X0FVRElPKQorICBodW1hblJlYWRhYmxlTmFtZTogIk1vZGVybiBXZWJBdWRpbyBBUEkiCisgIGh1
bWFuUmVhZGFibGVEZXNjcmlwdGlvbjogIk1vZGVybiBhbmQgdW5wcmVmaXhlZCBXZWJBdWRpbyBB
UEkiCisgIGNhdGVnb3J5OiBleHBlcmltZW50YWwKKwogQXR0YWNobWVudEVsZW1lbnRFbmFibGVk
OgogICB0eXBlOiBib29sCiAgIGRlZmF1bHRWYWx1ZTogZmFsc2UKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViUHJlZmVyZW5jZUtleXNQcml2YXRlLmggYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlByZWZlcmVuY2VLZXlzUHJpdmF0ZS5o
CmluZGV4IDE1NjQ0MWU3Mjg5YzBkM2RlMjQ5ODA1ODQ3NDg0NDc0OTI4OGU2MjMuLjhhMjNlMTM0
NTBmYmJhYWZmMWYzMjIzOWYzM2Y4M2Q2OGYyNjI1OTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViUHJlZmVyZW5jZUtleXNQcml2YXRlLmgKKysrIGIvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJQcmVmZXJlbmNlS2V5c1ByaXZhdGUuaApA
QCAtMTE4LDYgKzExOCw3IEBACiAjZGVmaW5lIFdlYktpdENvbnRlbnRDaGFuZ2VPYnNlcnZlckVu
YWJsZWRQcmVmZXJlbmNlS2V5IEAiV2ViS2l0Q29udGVudENoYW5nZU9ic2VydmVyRW5hYmxlZCIK
ICNkZWZpbmUgV2ViS2l0U2hvd1JlcGFpbnRDb3VudGVyUHJlZmVyZW5jZUtleSBAIldlYktpdFNo
b3dSZXBhaW50Q291bnRlciIKICNkZWZpbmUgV2ViS2l0V2ViQXVkaW9FbmFibGVkUHJlZmVyZW5j
ZUtleSBAIldlYktpdFdlYkF1ZGlvRW5hYmxlZCIKKyNkZWZpbmUgV2ViS2l0TW9kZXJuVW5wcmVm
aXhlZFdlYkF1ZGlvRW5hYmxlZFByZWZlcmVuY2VLZXkgQCJXZWJLaXRNb2Rlcm5VbnByZWZpeGVk
V2ViQXVkaW9FbmFibGVkIgogI2RlZmluZSBXZWJLaXRXZWJHTEVuYWJsZWRQcmVmZXJlbmNlS2V5
IEAiV2ViS2l0V2ViR0xFbmFibGVkIgogI2RlZmluZSBXZWJLaXRXZWJHTDJFbmFibGVkUHJlZmVy
ZW5jZUtleSBAIldlYktpdFdlYkdMMkVuYWJsZWQiCiAjZGVmaW5lIFdlYktpdFdlYkdQVUVuYWJs
ZWRQcmVmZXJlbmNlS2V5IEAiV2ViS2l0V2ViR1BVRW5hYmxlZCIKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViUHJlZmVyZW5jZXMubW0gYi9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlByZWZlcmVuY2VzLm1tCmluZGV4IGI4NTI4ZDJlMDdi
OWM2NzAyYjBlNTZjNDRhMWRhNDkwZWU3NGNjY2YuLjVjOGQzY2ZmOGZkMjdhYzU0ODM2OWQ1M2Qx
Y2UzYzkyM2M5NjFiNTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZp
ZXcvV2ViUHJlZmVyZW5jZXMubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmll
dy9XZWJQcmVmZXJlbmNlcy5tbQpAQCAtNTc0LDYgKzU3NCw3IEBAICsgKHZvaWQpaW5pdGlhbGl6
ZQogICAgICAgICBATk8sIFdlYktpdERpYWdub3N0aWNMb2dnaW5nRW5hYmxlZEtleSwKICAgICAg
ICAgQChXZWJBbGxvd0FsbFN0b3JhZ2UpLCBXZWJLaXRTdG9yYWdlQmxvY2tpbmdQb2xpY3lLZXks
CiAgICAgICAgIEBOTywgV2ViS2l0UGx1Z0luU25hcHNob3R0aW5nRW5hYmxlZFByZWZlcmVuY2VL
ZXksCisgICAgICAgIEBOTywgV2ViS2l0TW9kZXJuVW5wcmVmaXhlZFdlYkF1ZGlvRW5hYmxlZFBy
ZWZlcmVuY2VLZXksCiAKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgICAgICBAWUVTLCBX
ZWJLaXRDb250ZW50Q2hhbmdlT2JzZXJ2ZXJFbmFibGVkUHJlZmVyZW5jZUtleSwKQEAgLTIxNDgs
NiArMjE0OSwxNiBAQCAtICh2b2lkKXNldFdlYkF1ZGlvRW5hYmxlZDooQk9PTCllbmFibGVkCiAg
ICAgW3NlbGYgX3NldEJvb2xWYWx1ZTplbmFibGVkIGZvcktleTpXZWJLaXRXZWJBdWRpb0VuYWJs
ZWRQcmVmZXJlbmNlS2V5XTsKIH0KIAorLSAoQk9PTCltb2Rlcm5VbnByZWZpeGVkV2ViQXVkaW9F
bmFibGVkCit7CisgICAgcmV0dXJuIFtzZWxmIF9ib29sVmFsdWVGb3JLZXk6V2ViS2l0TW9kZXJu
VW5wcmVmaXhlZFdlYkF1ZGlvRW5hYmxlZFByZWZlcmVuY2VLZXldOworfQorCistICh2b2lkKXNl
dE1vZGVyblVucHJlZml4ZWRXZWJBdWRpb0VuYWJsZWQ6KEJPT0wpZW5hYmxlZAoreworICAgIFtz
ZWxmIF9zZXRCb29sVmFsdWU6ZW5hYmxlZCBmb3JLZXk6V2ViS2l0TW9kZXJuVW5wcmVmaXhlZFdl
YkF1ZGlvRW5hYmxlZFByZWZlcmVuY2VLZXldOworfQorCiAtIChCT09MKXN1YnBpeGVsQ1NTT01F
bGVtZW50TWV0cmljc0VuYWJsZWQKIHsKICAgICByZXR1cm4gW3NlbGYgX2Jvb2xWYWx1ZUZvcktl
eTpXZWJLaXRTdWJwaXhlbENTU09NRWxlbWVudE1ldHJpY3NFbmFibGVkUHJlZmVyZW5jZUtleV07
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlByZWZlcmVu
Y2VzUHJpdmF0ZS5oIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJQcmVmZXJl
bmNlc1ByaXZhdGUuaAppbmRleCA4Yzg2NmViOGE4OWQ3Yjg4NTc0NDg1YTYxNzU2YWNmYmZmYmRh
M2FkLi5hNDUwOTQ3MWEwMDM0NWM0ZDQ3ZTdkNWNjMmRkMGQ0ZjNjN2ZkYzVlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlByZWZlcmVuY2VzUHJpdmF0ZS5o
CisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViUHJlZmVyZW5jZXNQcml2
YXRlLmgKQEAgLTI2OSw2ICsyNjksOSBAQCBleHRlcm4gTlNTdHJpbmcgKldlYlByZWZlcmVuY2Vz
Q2FjaGVNb2RlbENoYW5nZWRJbnRlcm5hbE5vdGlmaWNhdGlvbiBXRUJLSVRfREVQUgogLSAoQk9P
TCl3ZWJBdWRpb0VuYWJsZWQ7CiAtICh2b2lkKXNldFdlYkF1ZGlvRW5hYmxlZDooQk9PTCllbmFi
bGVkOwogCistIChCT09MKW1vZGVyblVucHJlZml4ZWRXZWJBdWRpb0VuYWJsZWQ7CistICh2b2lk
KXNldE1vZGVyblVucHJlZml4ZWRXZWJBdWRpb0VuYWJsZWQ6KEJPT0wpZW5hYmxlZDsKKwogLSAo
Qk9PTClzdWJwaXhlbENTU09NRWxlbWVudE1ldHJpY3NFbmFibGVkOwogLSAodm9pZClzZXRTdWJw
aXhlbENTU09NRWxlbWVudE1ldHJpY3NFbmFibGVkOihCT09MKWVuYWJsZWQ7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmlldy5tbSBiL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQppbmRleCAyOTljYjFjYTc5MzRiYThh
YWEzZDYyMGNmNjE1OTRiZTY0MGIwMzlhLi44NTEyMTMyNTIwOGI4ZWRhNGIyOTk4YzJhOTEyNWJi
YjFhMzY5ZjM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dl
YlZpZXcubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3Lm1t
CkBAIC0zMjY3LDYgKzMyNjcsNyBAQCAtICh2b2lkKV9wcmVmZXJlbmNlc0NoYW5nZWQ6KFdlYlBy
ZWZlcmVuY2VzICopcHJlZmVyZW5jZXMKIAogI2lmIEVOQUJMRShXRUJfQVVESU8pCiAgICAgc2V0
dGluZ3Muc2V0V2ViQXVkaW9FbmFibGVkKFtwcmVmZXJlbmNlcyB3ZWJBdWRpb0VuYWJsZWRdKTsK
KyAgICBzZXR0aW5ncy5zZXRNb2Rlcm5VbnByZWZpeGVkV2ViQXVkaW9FbmFibGVkKFtwcmVmZXJl
bmNlcyBtb2Rlcm5VbnByZWZpeGVkV2ViQXVkaW9FbmFibGVkXSk7CiAjZW5kaWYKIAogI2lmIEVO
QUJMRShGVUxMU0NSRUVOX0FQSSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2lu
L1dlYlByZWZlcmVuY2VLZXlzUHJpdmF0ZS5oIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2Vi
UHJlZmVyZW5jZUtleXNQcml2YXRlLmgKaW5kZXggODA0NTMxYTQ2YmZiNTcyM2Y2ZWQxY2FjMzJm
OTU4ZjEzM2ZlYzI4My4uMmEyMTIxYWRiOTY4Njk4NDEyMWMwZTRiYThkYWZmY2E3YmNjNmNhYiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViUHJlZmVyZW5jZUtleXNQcml2
YXRlLmgKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViUHJlZmVyZW5jZUtleXNQcml2
YXRlLmgKQEAgLTc1LDYgKzc1LDcgQEAKICNkZWZpbmUgV2ViS2l0TG9jYWxTdG9yYWdlRGF0YWJh
c2VQYXRoUHJlZmVyZW5jZUtleSAiV2ViS2l0TG9jYWxTdG9yYWdlRGF0YWJhc2VQYXRoIgogI2Rl
ZmluZSBXZWJLaXRIeXBlcmxpbmtBdWRpdGluZ0VuYWJsZWRQcmVmZXJlbmNlS2V5ICJXZWJLaXRI
eXBlcmxpbmtBdWRpdGluZ0VuYWJsZWQiCiAjZGVmaW5lIFdlYktpdFdlYkF1ZGlvRW5hYmxlZFBy
ZWZlcmVuY2VLZXkgIldlYktpdFdlYkF1ZGlvRW5hYmxlZCIKKyNkZWZpbmUgV2ViS2l0TW9kZXJu
VW5wcmVmaXhlZFdlYkF1ZGlvRW5hYmxlZFByZWZlcmVuY2VLZXkgIldlYktpdFdlYkF1ZGlvRW5h
YmxlZCIKICNkZWZpbmUgV2ViS2l0U2hvdWxkRGlzcGxheVN1YnRpdGxlc1ByZWZlcmVuY2VLZXkg
IldlYktpdFNob3VsZERpc3BsYXlTdWJ0aXRsZXMiCiAjZGVmaW5lIFdlYktpdFNob3VsZERpc3Bs
YXlDYXB0aW9uc1ByZWZlcmVuY2VLZXkgIldlYktpdFNob3VsZERpc3BsYXlDYXB0aW9ucyIKICNk
ZWZpbmUgV2ViS2l0U2hvdWxkRGlzcGxheVRleHREZXNjcmlwdGlvbnNQcmVmZXJlbmNlS2V5ICJX
ZWJLaXRTaG91bGREaXNwbGF5VGV4dERlc2NyaXB0aW9ucyIKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvd2luL1dlYlByZWZlcmVuY2VzLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
d2luL1dlYlByZWZlcmVuY2VzLmNwcAppbmRleCA1ODI2ZTQxOTU4YzAzMzg4OTIzY2YzODllYjdk
MmE4NjVmMzdmMTUzLi45M2RlOGEzMjBhYTE1ODM0OWEwNzIwNWQwNGUyZWE0YzQxNDlmMjk0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJQcmVmZXJlbmNlcy5jcHAKKysr
IGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViUHJlZmVyZW5jZXMuY3BwCkBAIC0yMzIsNiAr
MjMyLDcgQEAgdm9pZCBXZWJQcmVmZXJlbmNlczo6aW5pdGlhbGl6ZURlZmF1bHRTZXR0aW5ncygp
CiAgICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVmYXVsdHMsIENGU1RSKFdlYktpdEphdmFTY3Jp
cHRSdW50aW1lRmxhZ3NQcmVmZXJlbmNlS2V5KSwgQ0ZTVFIoIjAiKSk7CiAgICAgQ0ZEaWN0aW9u
YXJ5QWRkVmFsdWUoZGVmYXVsdHMsIENGU1RSKFdlYktpdFdlYlNlY3VyaXR5RW5hYmxlZFByZWZl
cmVuY2VLZXkpLCBrQ0ZCb29sZWFuVHJ1ZSk7CiAgICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVm
YXVsdHMsIENGU1RSKFdlYktpdEFsbG93VG9wTmF2aWdhdGlvblRvRGF0YVVSTHNQcmVmZXJlbmNl
S2V5KSwga0NGQm9vbGVhbkZhbHNlKTsKKyAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShkZWZhdWx0
cywgQ0ZTVFIoV2ViS2l0V2ViQXVkaW9FbmFibGVkUHJlZmVyZW5jZUtleSksIGtDRkJvb2xlYW5G
YWxzZSk7CiAgICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVmYXVsdHMsIENGU1RSKFdlYktpdEFs
bG93VW5pdmVyc2FsQWNjZXNzRnJvbUZpbGVVUkxzUHJlZmVyZW5jZUtleSksIGtDRkJvb2xlYW5G
YWxzZSk7CiAgICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVmYXVsdHMsIENGU1RSKFdlYktpdEFs
bG93RmlsZUFjY2Vzc0Zyb21GaWxlVVJMc1ByZWZlcmVuY2VLZXkpLCBrQ0ZCb29sZWFuVHJ1ZSk7
CiAgICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVmYXVsdHMsIENGU1RSKFdlYktpdEphdmFTY3Jp
cHRDYW5BY2Nlc3NDbGlwYm9hcmRQcmVmZXJlbmNlS2V5KSwga0NGQm9vbGVhbkZhbHNlKTsKQEAg
LTI0OTksMyArMjUwMCwxNyBAQCBIUkVTVUxUIFdlYlByZWZlcmVuY2VzOjpzZXRBbGxvd1RvcE5h
dmlnYXRpb25Ub0RhdGFVUkxzKEJPT0wgYWxsb3dBY2Nlc3MpCiAgICAgc2V0Qm9vbFZhbHVlKFdl
YktpdEFsbG93VG9wTmF2aWdhdGlvblRvRGF0YVVSTHNQcmVmZXJlbmNlS2V5LCBhbGxvd0FjY2Vz
cyk7CiAgICAgcmV0dXJuIFNfT0s7CiB9CisKK0hSRVNVTFQgV2ViUHJlZmVyZW5jZXM6Om1vZGVy
blVucHJlZml4ZWRXZWJBdWRpb0VuYWJsZWQoX091dF8gQk9PTCogZW5hYmxlZCkKK3sKKyAgICBp
ZiAoIWVuYWJsZWQpCisgICAgICAgIHJldHVybiBFX1BPSU5URVI7CisgICAgKmVuYWJsZWQgPSBi
b29sVmFsdWVGb3JLZXkoV2ViS2l0V2ViQXVkaW9FbmFibGVkUHJlZmVyZW5jZUtleSk7CisgICAg
cmV0dXJuIFNfT0s7Cit9CisKK0hSRVNVTFQgV2ViUHJlZmVyZW5jZXM6OnNldE1vZGVyblVucHJl
Zml4ZWRXZWJBdWRpb0VuYWJsZWQoQk9PTCBlbmFibGVkKQoreworICAgIHNldEJvb2xWYWx1ZShX
ZWJLaXRXZWJBdWRpb0VuYWJsZWRQcmVmZXJlbmNlS2V5LCBlbmFibGVkKTsKKyAgICByZXR1cm4g
U19PSzsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlByZWZlcmVu
Y2VzLmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJQcmVmZXJlbmNlcy5oCmluZGV4IGY3
ZmU3Njg0MmI0ZGQyMzI5ODFlZmZmNzIxYzFmYTRiMTA5NzllOTguLjI0MzdiMGU3NjI4OTUwNmMy
NjQwNDg4NmJkMmMwM2Y1ODMyNTNjNTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kv
d2luL1dlYlByZWZlcmVuY2VzLmgKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViUHJl
ZmVyZW5jZXMuaApAQCAtMzA1LDYgKzMwNSw4IEBAIHB1YmxpYzoKICAgICAvLyBJV2ViUHJlZmVy
ZW5jZXNQcml2YXRlOAogICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBhbGxv
d1RvcE5hdmlnYXRpb25Ub0RhdGFVUkxzKF9PdXRfIEJPT0wqKTsKICAgICB2aXJ0dWFsIEhSRVNV
TFQgU1RETUVUSE9EQ0FMTFRZUEUgc2V0QWxsb3dUb3BOYXZpZ2F0aW9uVG9EYXRhVVJMcyhCT09M
KTsKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgbW9kZXJuVW5wcmVmaXhl
ZFdlYkF1ZGlvRW5hYmxlZChfT3V0XyBCT09MKik7CisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1F
VEhPRENBTExUWVBFIHNldE1vZGVyblVucHJlZml4ZWRXZWJBdWRpb0VuYWJsZWQoQk9PTCk7CiAK
ICAgICAvLyBXZWJQcmVmZXJlbmNlcwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5
L3dpbi9XZWJWaWV3LmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlZpZXcuY3BwCmlu
ZGV4IDI4ZjI5M2Q4YzdmN2RhNjliOGUxODEzYWY4OGQxNzllOGZhZmIyZjYuLmRiMjkxMTZiZmMy
NTk5NTJjZTZkZjMzZjM3MzY2MjlhNjdiOWJhMzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvd2luL1dlYlZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlZp
ZXcuY3BwCkBAIC01NTU2LDYgKzU1NTYsMTEgQEAgSFJFU1VMVCBXZWJWaWV3Ojpub3RpZnlQcmVm
ZXJlbmNlc0NoYW5nZWQoSVdlYk5vdGlmaWNhdGlvbiogbm90aWZpY2F0aW9uKQogCiAjaWYgRU5B
QkxFKFdFQl9BVURJTykKICAgICBzZXR0aW5ncy5zZXRXZWJBdWRpb0VuYWJsZWQodHJ1ZSk7CisK
KyAgICBociA9IHByZWZzUHJpdmF0ZS0+bW9kZXJuVW5wcmVmaXhlZFdlYkF1ZGlvRW5hYmxlZCgm
ZW5hYmxlZCk7CisgICAgaWYgKEZBSUxFRChocikpCisgICAgICAgIHJldHVybiBocjsKKyAgICBz
ZXR0aW5ncy5zZXRNb2Rlcm5VbnByZWZpeGVkV2ViQXVkaW9FbmFibGVkKCEhZW5hYmxlZCk7CiAj
ZW5kaWYgLy8gRU5BQkxFKFdFQl9BVURJTykKIAogI2lmIEVOQUJMRShXRUJHTCkKZGlmZiAtLWdp
dCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9EdW1wUmVuZGVyVHJlZS5tbSBiL1Rvb2xzL0R1
bXBSZW5kZXJUcmVlL21hYy9EdW1wUmVuZGVyVHJlZS5tbQppbmRleCBiODFhMWMzYzM1Mzc5YmQw
OTAxZWU5MTA3ZDlkZWU3NzU3ZGRhZTM0Li44N2MwNGQ5MmZhNGNlNDcyMjE2ZThjMzhmYmVlOWJi
ZjcxYTMyZDk5IDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvRHVtcFJlbmRl
clRyZWUubW0KKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0R1bXBSZW5kZXJUcmVlLm1t
CkBAIC05NzksNiArOTc5LDcgQEAgc3RhdGljIHZvaWQgcmVzZXRXZWJQcmVmZXJlbmNlc1RvQ29u
c2lzdGVudFZhbHVlcygpCiAjZW5kaWYKIAogICAgIFtwcmVmZXJlbmNlcyBzZXRXZWJBdWRpb0Vu
YWJsZWQ6WUVTXTsKKyAgICBbcHJlZmVyZW5jZXMgc2V0TW9kZXJuVW5wcmVmaXhlZFdlYkF1ZGlv
RW5hYmxlZDpZRVNdOwogICAgIFtwcmVmZXJlbmNlcyBzZXRNZWRpYVNvdXJjZUVuYWJsZWQ6WUVT
XTsKICAgICBbcHJlZmVyZW5jZXMgc2V0U291cmNlQnVmZmVyQ2hhbmdlVHlwZUVuYWJsZWQ6WUVT
XTsKIApkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL0R1bXBSZW5kZXJUcmVl
LmNwcCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9EdW1wUmVuZGVyVHJlZS5jcHAKaW5kZXgg
MGIzN2FkNDVmZTE4YjJhOTQ2NWFjMzU3MjNiY2RjZTY5NTZmNjM2Mi4uZDBiOWQ4YzdlNzIwZmQ4
MzBjNmI2ZjBjYzA1ZDA1Yjk5MzVkZjA0OCAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRy
ZWUvd2luL0R1bXBSZW5kZXJUcmVlLmNwcAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS93aW4v
RHVtcFJlbmRlclRyZWUuY3BwCkBAIC04MzYsNiArODM2LDcgQEAgc3RhdGljIHZvaWQgcmVzZXRX
ZWJQcmVmZXJlbmNlc1RvQ29uc2lzdGVudFZhbHVlcyhJV2ViUHJlZmVyZW5jZXMqIHByZWZlcmVu
Y2VzKQogI2VuZGlmCiAKICAgICBwcmVmc1ByaXZhdGUtPnNldEFsbG93VG9wTmF2aWdhdGlvblRv
RGF0YVVSTHMoVFJVRSk7CisgICAgcHJlZnNQcml2YXRlLT5zZXRNb2Rlcm5VbnByZWZpeGVkV2Vi
QXVkaW9FbmFibGVkKFRSVUUpOwogICAgIHByZWZzUHJpdmF0ZS0+c2V0QWxsb3dVbml2ZXJzYWxB
Y2Nlc3NGcm9tRmlsZVVSTHMoVFJVRSk7CiAgICAgcHJlZnNQcml2YXRlLT5zZXRBbGxvd0ZpbGVB
Y2Nlc3NGcm9tRmlsZVVSTHMoVFJVRSk7CiAgICAgcHJlZmVyZW5jZXMtPnNldFN0YW5kYXJkRm9u
dEZhbWlseShzdGFuZGFyZEZhbWlseSk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2MvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0NoYW5nZUxvZwppbmRl
eCA2M2ExYjc5MjFlMDBlYzFlNGI4ZTY0ODQ3NzU5ZWJiOWM1NzI3OGZkLi5mZTRkZmI5ZDAwNjkz
MzExNjVkMWEyNzFkYzg0ZWY4MjY4MzM0NDBiIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2MvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwxOCBAQAorMjAyMC0wNi0xNyAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBw
bGUuY29tPgorCisgICAgICAgIEFkZCBleHBlcmltZW50YWwgZmVhdHVyZSBmbGFnIGZvciBtb2Rl
cm4gJiB1bnByZWZpeGVkIFdlYkF1ZGlvIEFQSQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjEzMjY4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgSmVyIE5v
YmxlLgorCisgICAgICAgIFJlYmFzZWxpbmUgYSBmZXcgd2ViLXBsYXRmb3JtLXRlc3RzIG5vdyB0
aGF0IHRoZXkgYXJlIHBhc3Npbmcgb3IgZmFpbGluZyBhdCBhIGxhdGVyIHN0YWdlLgorICAgICAg
ICBUaGlzIGlzIGR1ZSB0byBvdXIgV2ViQXVkaW8gZ2V0dGluZyBwcm9wZXJseSB1bnByZWZpeGVk
IGluIHRoZSBjb250ZXh0IG9mIGxheW91dCB0ZXN0cy4KKworICAgICAgICAqIHdlYi1wbGF0Zm9y
bS10ZXN0cy93ZWJhdWRpby9pZGxoYXJuZXNzLmh0dHBzLndpbmRvdy1leHBlY3RlZC50eHQ6Cisg
ICAgICAgICogd2ViLXBsYXRmb3JtLXRlc3RzL3dlYmF1ZGlvL3RoZS1hdWRpby1hcGkvdGhlLWF1
ZGlvY29udGV4dC1pbnRlcmZhY2UvYXVkaW9jb250ZXh0LWRldGFjaGVkLWV4ZWN1dGlvbi1jb250
ZXh0LnRlbnRhdGl2ZS1leHBlY3RlZC50eHQ6CisgICAgICAgICogd2ViLXBsYXRmb3JtLXRlc3Rz
L3dlYmF1ZGlvL3RoZS1hdWRpby1hcGkvdGhlLWF1ZGlvbm9kZS1pbnRlcmZhY2UvYXVkaW9ub2Rl
LWNvbm5lY3QtbWV0aG9kLWNoYWluaW5nLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiB3ZWItcGxh
dGZvcm0tdGVzdHMvd2ViYXVkaW8vdGhlLWF1ZGlvLWFwaS90aGUtb2ZmbGluZWF1ZGlvY29udGV4
dC1pbnRlcmZhY2Uvb2ZmbGluZWF1ZGlvY29udGV4dC1kZXRhY2hlZC1leGVjdXRpb24tY29udGV4
dC50ZW50YXRpdmUtZXhwZWN0ZWQudHh0OgorCiAyMDIwLTA2LTE3ICBEYXJyeWwgUG9ndWUgIDxk
YXJyeWxAZHBvZ3VlLmNhPgogCiAgICAgICAgIEluZGV4ZWREQjogU3VwcG9ydCBJREJGYWN0b3J5
IGRhdGFiYXNlcyBtZXRob2QKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL2NhbGwt
YS1jb25zdHJ1Y3Rvci1hcy1hLWZ1bmN0aW9uLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zh
c3QvZG9tL2NhbGwtYS1jb25zdHJ1Y3Rvci1hcy1hLWZ1bmN0aW9uLWV4cGVjdGVkLnR4dAppbmRl
eCA4YTE4MDFjYTIyZmM2NmVlZGEzOTJjZDNmN2FmMGQ2MjE1ZjI5MmUwLi4yNzU0ZjQ4ZTVmMjU2
MGM0NmU4NThiOGU2MGUwNDJlYjhjZWQ2NjZlIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0
L2RvbS9jYWxsLWEtY29uc3RydWN0b3ItYXMtYS1mdW5jdGlvbi1leHBlY3RlZC50eHQKKysrIGIv
TGF5b3V0VGVzdHMvZmFzdC9kb20vY2FsbC1hLWNvbnN0cnVjdG9yLWFzLWEtZnVuY3Rpb24tZXhw
ZWN0ZWQudHh0CkBAIC0zLDcgKzMsNyBAQCBUaGlzIHRlc3RzIGlmIFR5cGVFcnJvciBpcyB0aHJv
d24gb3Igbm90IHdoZW4gd2UgY2FsbCBhIGNvbnN0cnVjdG9yIGFzIGEgbm9ybWFsCiBPbiBzdWNj
ZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBi
eSAiVEVTVCBDT01QTEVURSIuCiAKIAotU0tJUCBBdWRpb0NvbnRleHQgaXMgbm90IGltcGxlbWVu
dGVkLgorUEFTUyBBdWRpb0NvbnRleHQoKSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBDb25z
dHJ1Y3RvciByZXF1aXJlcyAnbmV3JyBvcGVyYXRvci4KIFBBU1MgRm9ybURhdGEoKSB0aHJldyBl
eGNlcHRpb24gVHlwZUVycm9yOiBDb25zdHJ1Y3RvciByZXF1aXJlcyAnbmV3JyBvcGVyYXRvci4K
IFBBU1MgRXZlbnRTb3VyY2UoKSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBDb25zdHJ1Y3Rv
ciByZXF1aXJlcyAnbmV3JyBvcGVyYXRvci4KIFBBU1MgRmlsZVJlYWRlcigpIHRocmV3IGV4Y2Vw
dGlvbiBUeXBlRXJyb3I6IENvbnN0cnVjdG9yIHJlcXVpcmVzICduZXcnIG9wZXJhdG9yLgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJh
dWRpby9pZGxoYXJuZXNzLmh0dHBzLndpbmRvdy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYmF1ZGlvL2lkbGhhcm5lc3MuaHR0cHMu
d2luZG93LWV4cGVjdGVkLnR4dAppbmRleCBjY2M3ZTllOGY3MWJmMWQ0MTI0ZGJjZGU4OTM2MTZj
MjY0MGJjM2FkLi44NTk4ZGRhZmUwODAxZjg2M2M3YzkwM2QyMTAyNGU2OGNiMWI4NzYxIDEwMDY0
NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYmF1
ZGlvL2lkbGhhcm5lc3MuaHR0cHMud2luZG93LWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYmF1ZGlvL2lkbGhhcm5lc3MuaHR0
cHMud2luZG93LWV4cGVjdGVkLnR4dApAQCAtNDMsNyArNDMsNyBAQCBGQUlMIEJhc2VBdWRpb0Nv
bnRleHQgaW50ZXJmYWNlOiBvcGVyYXRpb24gY3JlYXRlV2F2ZVNoYXBlcigpIGFzc2VydF9vd25f
cHJvcGVydAogRkFJTCBCYXNlQXVkaW9Db250ZXh0IGludGVyZmFjZTogb3BlcmF0aW9uIGRlY29k
ZUF1ZGlvRGF0YShBcnJheUJ1ZmZlciwgb3B0aW9uYWwgRGVjb2RlU3VjY2Vzc0NhbGxiYWNrPywg
b3B0aW9uYWwgRGVjb2RlRXJyb3JDYWxsYmFjaz8pIGFzc2VydF9vd25fcHJvcGVydHk6IHNlbGYg
ZG9lcyBub3QgaGF2ZSBvd24gcHJvcGVydHkgIkJhc2VBdWRpb0NvbnRleHQiIGV4cGVjdGVkIHBy
b3BlcnR5ICJCYXNlQXVkaW9Db250ZXh0IiBtaXNzaW5nCiBGQUlMIEF1ZGlvQ29udGV4dCBpbnRl
cmZhY2U6IGV4aXN0ZW5jZSBhbmQgcHJvcGVydGllcyBvZiBpbnRlcmZhY2Ugb2JqZWN0IGFzc2Vy
dF9vd25fcHJvcGVydHk6IHNlbGYgZG9lcyBub3QgaGF2ZSBvd24gcHJvcGVydHkgIkJhc2VBdWRp
b0NvbnRleHQiIGV4cGVjdGVkIHByb3BlcnR5ICJCYXNlQXVkaW9Db250ZXh0IiBtaXNzaW5nCiBQ
QVNTIEF1ZGlvQ29udGV4dCBpbnRlcmZhY2Ugb2JqZWN0IGxlbmd0aCAKLUZBSUwgQXVkaW9Db250
ZXh0IGludGVyZmFjZSBvYmplY3QgbmFtZSBhc3NlcnRfZXF1YWxzOiB3cm9uZyB2YWx1ZSBmb3Ig
QXVkaW9Db250ZXh0Lm5hbWUgZXhwZWN0ZWQgIkF1ZGlvQ29udGV4dCIgYnV0IGdvdCAid2Via2l0
QXVkaW9Db250ZXh0IgorUEFTUyBBdWRpb0NvbnRleHQgaW50ZXJmYWNlIG9iamVjdCBuYW1lIAog
RkFJTCBBdWRpb0NvbnRleHQgaW50ZXJmYWNlOiBleGlzdGVuY2UgYW5kIHByb3BlcnRpZXMgb2Yg
aW50ZXJmYWNlIHByb3RvdHlwZSBvYmplY3QgYXNzZXJ0X293bl9wcm9wZXJ0eTogc2VsZiBkb2Vz
IG5vdCBoYXZlIG93biBwcm9wZXJ0eSAiQmFzZUF1ZGlvQ29udGV4dCIgZXhwZWN0ZWQgcHJvcGVy
dHkgIkJhc2VBdWRpb0NvbnRleHQiIG1pc3NpbmcKIFBBU1MgQXVkaW9Db250ZXh0IGludGVyZmFj
ZTogZXhpc3RlbmNlIGFuZCBwcm9wZXJ0aWVzIG9mIGludGVyZmFjZSBwcm90b3R5cGUgb2JqZWN0
J3MgImNvbnN0cnVjdG9yIiBwcm9wZXJ0eSAKIFBBU1MgQXVkaW9Db250ZXh0IGludGVyZmFjZTog
ZXhpc3RlbmNlIGFuZCBwcm9wZXJ0aWVzIG9mIGludGVyZmFjZSBwcm90b3R5cGUgb2JqZWN0J3Mg
QEB1bnNjb3BhYmxlcyBwcm9wZXJ0eSAKQEAgLTU4LDcgKzU4LDcgQEAgUEFTUyBBdWRpb0NvbnRl
eHQgaW50ZXJmYWNlOiBvcGVyYXRpb24gY3JlYXRlTWVkaWFTdHJlYW1Tb3VyY2UoTWVkaWFTdHJl
YW0pCiBGQUlMIEF1ZGlvQ29udGV4dCBpbnRlcmZhY2U6IG9wZXJhdGlvbiBjcmVhdGVNZWRpYVN0
cmVhbVRyYWNrU291cmNlKE1lZGlhU3RyZWFtVHJhY2spIGFzc2VydF9vd25fcHJvcGVydHk6IGlu
dGVyZmFjZSBwcm90b3R5cGUgb2JqZWN0IG1pc3Npbmcgbm9uLXN0YXRpYyBvcGVyYXRpb24gZXhw
ZWN0ZWQgcHJvcGVydHkgImNyZWF0ZU1lZGlhU3RyZWFtVHJhY2tTb3VyY2UiIG1pc3NpbmcKIFBB
U1MgQXVkaW9Db250ZXh0IGludGVyZmFjZTogb3BlcmF0aW9uIGNyZWF0ZU1lZGlhU3RyZWFtRGVz
dGluYXRpb24oKSAKIFBBU1MgQXVkaW9Db250ZXh0IG11c3QgYmUgcHJpbWFyeSBpbnRlcmZhY2Ug
b2YgY29udGV4dCAKLUZBSUwgU3RyaW5naWZpY2F0aW9uIG9mIGNvbnRleHQgYXNzZXJ0X2NsYXNz
X3N0cmluZzogY2xhc3Mgc3RyaW5nIG9mIGNvbnRleHQgZXhwZWN0ZWQgIltvYmplY3QgQXVkaW9D
b250ZXh0XSIgYnV0IGdvdCAiW29iamVjdCB3ZWJraXRBdWRpb0NvbnRleHRdIgorUEFTUyBTdHJp
bmdpZmljYXRpb24gb2YgY29udGV4dCAKIEZBSUwgQXVkaW9Db250ZXh0IGludGVyZmFjZTogY29u
dGV4dCBtdXN0IGluaGVyaXQgcHJvcGVydHkgImJhc2VMYXRlbmN5IiB3aXRoIHRoZSBwcm9wZXIg
dHlwZSBhc3NlcnRfaW5oZXJpdHM6IHByb3BlcnR5ICJiYXNlTGF0ZW5jeSIgbm90IGZvdW5kIGlu
IHByb3RvdHlwZSBjaGFpbgogRkFJTCBBdWRpb0NvbnRleHQgaW50ZXJmYWNlOiBjb250ZXh0IG11
c3QgaW5oZXJpdCBwcm9wZXJ0eSAib3V0cHV0TGF0ZW5jeSIgd2l0aCB0aGUgcHJvcGVyIHR5cGUg
YXNzZXJ0X2luaGVyaXRzOiBwcm9wZXJ0eSAib3V0cHV0TGF0ZW5jeSIgbm90IGZvdW5kIGluIHBy
b3RvdHlwZSBjaGFpbgogRkFJTCBBdWRpb0NvbnRleHQgaW50ZXJmYWNlOiBjb250ZXh0IG11c3Qg
aW5oZXJpdCBwcm9wZXJ0eSAiZ2V0T3V0cHV0VGltZXN0YW1wKCkiIHdpdGggdGhlIHByb3BlciB0
eXBlIGFzc2VydF9pbmhlcml0czogcHJvcGVydHkgImdldE91dHB1dFRpbWVzdGFtcCIgbm90IGZv
dW5kIGluIHByb3RvdHlwZSBjaGFpbgpAQCAtMTA4LDcgKzEwOCw3IEBAIFBBU1MgQmFzZUF1ZGlv
Q29udGV4dCBpbnRlcmZhY2U6IGNvbnRleHQgbXVzdCBpbmhlcml0IHByb3BlcnR5ICJkZWNvZGVB
dWRpb0RhdGEoCiBGQUlMIEJhc2VBdWRpb0NvbnRleHQgaW50ZXJmYWNlOiBjYWxsaW5nIGRlY29k
ZUF1ZGlvRGF0YShBcnJheUJ1ZmZlciwgb3B0aW9uYWwgRGVjb2RlU3VjY2Vzc0NhbGxiYWNrPywg
b3B0aW9uYWwgRGVjb2RlRXJyb3JDYWxsYmFjaz8pIG9uIGNvbnRleHQgd2l0aCB0b28gZmV3IGFy
Z3VtZW50cyBtdXN0IHRocm93IFR5cGVFcnJvciBhc3NlcnRfdW5yZWFjaGVkOiBUaHJvd3MgIlR5
cGVFcnJvcjogTm90IGVub3VnaCBhcmd1bWVudHMiIGluc3RlYWQgb2YgcmVqZWN0aW5nIHByb21p
c2UgUmVhY2hlZCB1bnJlYWNoYWJsZSBjb2RlCiBGQUlMIE9mZmxpbmVBdWRpb0NvbnRleHQgaW50
ZXJmYWNlOiBleGlzdGVuY2UgYW5kIHByb3BlcnRpZXMgb2YgaW50ZXJmYWNlIG9iamVjdCBhc3Nl
cnRfb3duX3Byb3BlcnR5OiBzZWxmIGRvZXMgbm90IGhhdmUgb3duIHByb3BlcnR5ICJCYXNlQXVk
aW9Db250ZXh0IiBleHBlY3RlZCBwcm9wZXJ0eSAiQmFzZUF1ZGlvQ29udGV4dCIgbWlzc2luZwog
RkFJTCBPZmZsaW5lQXVkaW9Db250ZXh0IGludGVyZmFjZSBvYmplY3QgbGVuZ3RoIGFzc2VydF9l
cXVhbHM6IHdyb25nIHZhbHVlIGZvciBPZmZsaW5lQXVkaW9Db250ZXh0Lmxlbmd0aCBleHBlY3Rl
ZCAxIGJ1dCBnb3QgMwotRkFJTCBPZmZsaW5lQXVkaW9Db250ZXh0IGludGVyZmFjZSBvYmplY3Qg
bmFtZSBhc3NlcnRfZXF1YWxzOiB3cm9uZyB2YWx1ZSBmb3IgT2ZmbGluZUF1ZGlvQ29udGV4dC5u
YW1lIGV4cGVjdGVkICJPZmZsaW5lQXVkaW9Db250ZXh0IiBidXQgZ290ICJ3ZWJraXRPZmZsaW5l
QXVkaW9Db250ZXh0IgorUEFTUyBPZmZsaW5lQXVkaW9Db250ZXh0IGludGVyZmFjZSBvYmplY3Qg
bmFtZSAKIEZBSUwgT2ZmbGluZUF1ZGlvQ29udGV4dCBpbnRlcmZhY2U6IGV4aXN0ZW5jZSBhbmQg
cHJvcGVydGllcyBvZiBpbnRlcmZhY2UgcHJvdG90eXBlIG9iamVjdCBhc3NlcnRfb3duX3Byb3Bl
cnR5OiBzZWxmIGRvZXMgbm90IGhhdmUgb3duIHByb3BlcnR5ICJCYXNlQXVkaW9Db250ZXh0IiBl
eHBlY3RlZCBwcm9wZXJ0eSAiQmFzZUF1ZGlvQ29udGV4dCIgbWlzc2luZwogUEFTUyBPZmZsaW5l
QXVkaW9Db250ZXh0IGludGVyZmFjZTogZXhpc3RlbmNlIGFuZCBwcm9wZXJ0aWVzIG9mIGludGVy
ZmFjZSBwcm90b3R5cGUgb2JqZWN0J3MgImNvbnN0cnVjdG9yIiBwcm9wZXJ0eSAKIFBBU1MgT2Zm
bGluZUF1ZGlvQ29udGV4dCBpbnRlcmZhY2U6IGV4aXN0ZW5jZSBhbmQgcHJvcGVydGllcyBvZiBp
bnRlcmZhY2UgcHJvdG90eXBlIG9iamVjdCdzIEBAdW5zY29wYWJsZXMgcHJvcGVydHkgCkBAIC0x
MTgsNyArMTE4LDcgQEAgRkFJTCBPZmZsaW5lQXVkaW9Db250ZXh0IGludGVyZmFjZTogb3BlcmF0
aW9uIHN1c3BlbmQoZG91YmxlKSBhc3NlcnRfb3duX3Byb3BlcnQKIEZBSUwgT2ZmbGluZUF1ZGlv
Q29udGV4dCBpbnRlcmZhY2U6IGF0dHJpYnV0ZSBsZW5ndGggYXNzZXJ0X3RydWU6IFRoZSBwcm90
b3R5cGUgb2JqZWN0IG11c3QgaGF2ZSBhIHByb3BlcnR5ICJsZW5ndGgiIGV4cGVjdGVkIHRydWUg
Z290IGZhbHNlCiBGQUlMIE9mZmxpbmVBdWRpb0NvbnRleHQgaW50ZXJmYWNlOiBhdHRyaWJ1dGUg
b25jb21wbGV0ZSBhc3NlcnRfb3duX3Byb3BlcnR5OiBleHBlY3RlZCBwcm9wZXJ0eSAib25jb21w
bGV0ZSIgbWlzc2luZwogUEFTUyBPZmZsaW5lQXVkaW9Db250ZXh0IG11c3QgYmUgcHJpbWFyeSBp
bnRlcmZhY2Ugb2YgbmV3IE9mZmxpbmVBdWRpb0NvbnRleHQoMSwgMSwgc2FtcGxlX3JhdGUpIAot
RkFJTCBTdHJpbmdpZmljYXRpb24gb2YgbmV3IE9mZmxpbmVBdWRpb0NvbnRleHQoMSwgMSwgc2Ft
cGxlX3JhdGUpIGFzc2VydF9jbGFzc19zdHJpbmc6IGNsYXNzIHN0cmluZyBvZiBuZXcgT2ZmbGlu
ZUF1ZGlvQ29udGV4dCgxLCAxLCBzYW1wbGVfcmF0ZSkgZXhwZWN0ZWQgIltvYmplY3QgT2ZmbGlu
ZUF1ZGlvQ29udGV4dF0iIGJ1dCBnb3QgIltvYmplY3Qgd2Via2l0T2ZmbGluZUF1ZGlvQ29udGV4
dF0iCitQQVNTIFN0cmluZ2lmaWNhdGlvbiBvZiBuZXcgT2ZmbGluZUF1ZGlvQ29udGV4dCgxLCAx
LCBzYW1wbGVfcmF0ZSkgCiBQQVNTIE9mZmxpbmVBdWRpb0NvbnRleHQgaW50ZXJmYWNlOiBuZXcg
T2ZmbGluZUF1ZGlvQ29udGV4dCgxLCAxLCBzYW1wbGVfcmF0ZSkgbXVzdCBpbmhlcml0IHByb3Bl
cnR5ICJzdGFydFJlbmRlcmluZygpIiB3aXRoIHRoZSBwcm9wZXIgdHlwZSAKIFBBU1MgT2ZmbGlu
ZUF1ZGlvQ29udGV4dCBpbnRlcmZhY2U6IG5ldyBPZmZsaW5lQXVkaW9Db250ZXh0KDEsIDEsIHNh
bXBsZV9yYXRlKSBtdXN0IGluaGVyaXQgcHJvcGVydHkgInJlc3VtZSgpIiB3aXRoIHRoZSBwcm9w
ZXIgdHlwZSAKIFBBU1MgT2ZmbGluZUF1ZGlvQ29udGV4dCBpbnRlcmZhY2U6IG5ldyBPZmZsaW5l
QXVkaW9Db250ZXh0KDEsIDEsIHNhbXBsZV9yYXRlKSBtdXN0IGluaGVyaXQgcHJvcGVydHkgInN1
c3BlbmQoZG91YmxlKSIgd2l0aCB0aGUgcHJvcGVyIHR5cGUgCkBAIC05MDQsNyArOTA0LDcgQEAg
RkFJTCBBdWRpb05vZGUgaW50ZXJmYWNlOiBuZXcgT3NjaWxsYXRvck5vZGUoY29udGV4dCkgbXVz
dCBpbmhlcml0IHByb3BlcnR5ICJjaGEKIEZBSUwgQXVkaW9Ob2RlIGludGVyZmFjZTogbmV3IE9z
Y2lsbGF0b3JOb2RlKGNvbnRleHQpIG11c3QgaW5oZXJpdCBwcm9wZXJ0eSAiY2hhbm5lbEludGVy
cHJldGF0aW9uIiB3aXRoIHRoZSBwcm9wZXIgdHlwZSBhc3NlcnRfZXF1YWxzOiBVbmV4cGVjdGVk
IGV4Y2VwdGlvbiB3aGVuIGV2YWx1YXRpbmcgb2JqZWN0IGV4cGVjdGVkIG51bGwgYnV0IGdvdCBv
YmplY3QgIlR5cGVFcnJvcjogZnVuY3Rpb24gaXMgbm90IGEgY29uc3RydWN0b3IgKGV2YWx1YXRp
bmcgJ25ldyBPc2NpbGxhdG9yTm9kZShjb250ZXh0KScpIgogUEFTUyBQYW5uZXJOb2RlIGludGVy
ZmFjZTogZXhpc3RlbmNlIGFuZCBwcm9wZXJ0aWVzIG9mIGludGVyZmFjZSBvYmplY3QgCiBGQUlM
IFBhbm5lck5vZGUgaW50ZXJmYWNlIG9iamVjdCBsZW5ndGggYXNzZXJ0X2VxdWFsczogd3Jvbmcg
dmFsdWUgZm9yIFBhbm5lck5vZGUubGVuZ3RoIGV4cGVjdGVkIDEgYnV0IGdvdCAwCi1GQUlMIFBh
bm5lck5vZGUgaW50ZXJmYWNlIG9iamVjdCBuYW1lIGFzc2VydF9lcXVhbHM6IHdyb25nIHZhbHVl
IGZvciBQYW5uZXJOb2RlLm5hbWUgZXhwZWN0ZWQgIlBhbm5lck5vZGUiIGJ1dCBnb3QgIndlYmtp
dEF1ZGlvUGFubmVyTm9kZSIKK1BBU1MgUGFubmVyTm9kZSBpbnRlcmZhY2Ugb2JqZWN0IG5hbWUg
CiBQQVNTIFBhbm5lck5vZGUgaW50ZXJmYWNlOiBleGlzdGVuY2UgYW5kIHByb3BlcnRpZXMgb2Yg
aW50ZXJmYWNlIHByb3RvdHlwZSBvYmplY3QgCiBQQVNTIFBhbm5lck5vZGUgaW50ZXJmYWNlOiBl
eGlzdGVuY2UgYW5kIHByb3BlcnRpZXMgb2YgaW50ZXJmYWNlIHByb3RvdHlwZSBvYmplY3QncyAi
Y29uc3RydWN0b3IiIHByb3BlcnR5IAogUEFTUyBQYW5uZXJOb2RlIGludGVyZmFjZTogZXhpc3Rl
bmNlIGFuZCBwcm9wZXJ0aWVzIG9mIGludGVyZmFjZSBwcm90b3R5cGUgb2JqZWN0J3MgQEB1bnNj
b3BhYmxlcyBwcm9wZXJ0eSAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvd2ViYXVkaW8vdGhlLWF1ZGlvLWFwaS90aGUtYXVkaW9jb250ZXh0
LWludGVyZmFjZS9hdWRpb2NvbnRleHQtZGV0YWNoZWQtZXhlY3V0aW9uLWNvbnRleHQudGVudGF0
aXZlLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvd2ViYXVkaW8vdGhlLWF1ZGlvLWFwaS90aGUtYXVkaW9jb250ZXh0LWludGVyZmFjZS9h
dWRpb2NvbnRleHQtZGV0YWNoZWQtZXhlY3V0aW9uLWNvbnRleHQudGVudGF0aXZlLWV4cGVjdGVk
LnR4dAppbmRleCAzNDRmY2Q5Yzk0MDViZWRmYTliMzQ3ZGViNzMxMmI3ZDQ0YjI4NzZmLi44Yjhk
ZTkwZmNiYjU0ZmQ5YmM5NjYzZmE0OTM0NTUzOGNhMGZlMTEwIDEwMDY0NAotLS0gYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYmF1ZGlvL3RoZS1hdWRpby1h
cGkvdGhlLWF1ZGlvY29udGV4dC1pbnRlcmZhY2UvYXVkaW9jb250ZXh0LWRldGFjaGVkLWV4ZWN1
dGlvbi1jb250ZXh0LnRlbnRhdGl2ZS1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJhdWRpby90aGUtYXVkaW8tYXBpL3RoZS1h
dWRpb2NvbnRleHQtaW50ZXJmYWNlL2F1ZGlvY29udGV4dC1kZXRhY2hlZC1leGVjdXRpb24tY29u
dGV4dC50ZW50YXRpdmUtZXhwZWN0ZWQudHh0CkBAIC0xLDcgKzEsNiBAQAogCi0KIFBBU1MgIyBB
VURJVCBUQVNLIFJVTk5FUiBTVEFSVEVELiAKLUZBSUwgRXhlY3V0aW5nICJkZWNvZGluZy1vbi1k
ZXRhY2hlZC1pZnJhbWUiIHByb21pc2VfdGVzdDogVW5oYW5kbGVkIHJlamVjdGlvbiB3aXRoIHZh
bHVlOiBvYmplY3QgIlR5cGVFcnJvcjogdW5kZWZpbmVkIGlzIG5vdCBhIGNvbnN0cnVjdG9yIChl
dmFsdWF0aW5nICduZXcgaWZyYW1lLmNvbnRlbnRXaW5kb3cuQXVkaW9Db250ZXh0KCknKSIKK0ZB
SUwgRXhlY3V0aW5nICJkZWNvZGluZy1vbi1kZXRhY2hlZC1pZnJhbWUiIHByb21pc2VfdGVzdDog
VW5oYW5kbGVkIHJlamVjdGlvbiB3aXRoIHZhbHVlOiBvYmplY3QgIlR5cGVFcnJvcjogTm90IGVu
b3VnaCBhcmd1bWVudHMiCiBQQVNTIEF1ZGl0IHJlcG9ydCAKIFBBU1MgPiBbZGVjb2Rpbmctb24t
ZGV0YWNoZWQtaWZyYW1lXSAgCiBQQVNTICMgQVVESVQgVEFTSyBSVU5ORVIgRklOSVNIRUQ6IDEg
dGFza3MgcmFuIHN1Y2Nlc3NmdWxseS4gCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYmF1ZGlvL3RoZS1hdWRpby1hcGkvdGhlLWF1ZGlv
bm9kZS1pbnRlcmZhY2UvYXVkaW9ub2RlLWNvbm5lY3QtbWV0aG9kLWNoYWluaW5nLWV4cGVjdGVk
LnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2ViYXVk
aW8vdGhlLWF1ZGlvLWFwaS90aGUtYXVkaW9ub2RlLWludGVyZmFjZS9hdWRpb25vZGUtY29ubmVj
dC1tZXRob2QtY2hhaW5pbmctZXhwZWN0ZWQudHh0CmluZGV4IDczZjc3ZTU1Y2M4OTE2NTZjMmJk
YTY4ZTNhOWUzNzE2OTU4MmY4NGMuLjZhNjU5YjU2MjU4ZDU0Mzc5NzViNTU4ZGQ3ZDNiOTlmZTgw
N2QyNmIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvd2ViYXVkaW8vdGhlLWF1ZGlvLWFwaS90aGUtYXVkaW9ub2RlLWludGVyZmFjZS9hdWRp
b25vZGUtY29ubmVjdC1tZXRob2QtY2hhaW5pbmctZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2ViYXVkaW8vdGhlLWF1ZGlvLWFw
aS90aGUtYXVkaW9ub2RlLWludGVyZmFjZS9hdWRpb25vZGUtY29ubmVjdC1tZXRob2QtY2hhaW5p
bmctZXhwZWN0ZWQudHh0CkBAIC0zNiw5ICszNiw5IEBAIFBBU1MgICBUaGUgcmV0dXJuIHZhbHVl
IG9mIEdhaW5Ob2RlLmNvbm5lY3QoQ2hhbm5lbE1lcmdlck5vZGUsIDAsIDEpIG1hdGNoZXMgdGhl
CiBQQVNTICAgVGhlIHJldHVybiB2YWx1ZSBvZiBPc2NpbGxhdG9yTm9kZS5jb25uZWN0KEdhaW5O
b2RlKSBtYXRjaGVzIHRoZSBkZXN0aW5hdGlvbiBHYWluTm9kZSBpcyBlcXVhbCB0byB0cnVlLiAK
IFBBU1MgICBUaGUgcmV0dXJuIHZhbHVlIG9mIE9zY2lsbGF0b3JOb2RlLmNvbm5lY3QoQmlxdWFk
RmlsdGVyTm9kZSwgMCkgbWF0Y2hlcyB0aGUgZGVzdGluYXRpb24gQmlxdWFkRmlsdGVyTm9kZSBp
cyBlcXVhbCB0byB0cnVlLiAKIFBBU1MgICBUaGUgcmV0dXJuIHZhbHVlIG9mIE9zY2lsbGF0b3JO
b2RlLmNvbm5lY3QoQ2hhbm5lbE1lcmdlck5vZGUsIDAsIDEpIG1hdGNoZXMgdGhlIGRlc3RpbmF0
aW9uIENoYW5uZWxNZXJnZXJOb2RlIGlzIGVxdWFsIHRvIHRydWUuIAotUEFTUyAgIFRoZSByZXR1
cm4gdmFsdWUgb2Ygd2Via2l0QXVkaW9QYW5uZXJOb2RlLmNvbm5lY3QoR2Fpbk5vZGUpIG1hdGNo
ZXMgdGhlIGRlc3RpbmF0aW9uIEdhaW5Ob2RlIGlzIGVxdWFsIHRvIHRydWUuIAotUEFTUyAgIFRo
ZSByZXR1cm4gdmFsdWUgb2Ygd2Via2l0QXVkaW9QYW5uZXJOb2RlLmNvbm5lY3QoQmlxdWFkRmls
dGVyTm9kZSwgMCkgbWF0Y2hlcyB0aGUgZGVzdGluYXRpb24gQmlxdWFkRmlsdGVyTm9kZSBpcyBl
cXVhbCB0byB0cnVlLiAKLVBBU1MgICBUaGUgcmV0dXJuIHZhbHVlIG9mIHdlYmtpdEF1ZGlvUGFu
bmVyTm9kZS5jb25uZWN0KENoYW5uZWxNZXJnZXJOb2RlLCAwLCAxKSBtYXRjaGVzIHRoZSBkZXN0
aW5hdGlvbiBDaGFubmVsTWVyZ2VyTm9kZSBpcyBlcXVhbCB0byB0cnVlLiAKK1BBU1MgICBUaGUg
cmV0dXJuIHZhbHVlIG9mIFBhbm5lck5vZGUuY29ubmVjdChHYWluTm9kZSkgbWF0Y2hlcyB0aGUg
ZGVzdGluYXRpb24gR2Fpbk5vZGUgaXMgZXF1YWwgdG8gdHJ1ZS4gCitQQVNTICAgVGhlIHJldHVy
biB2YWx1ZSBvZiBQYW5uZXJOb2RlLmNvbm5lY3QoQmlxdWFkRmlsdGVyTm9kZSwgMCkgbWF0Y2hl
cyB0aGUgZGVzdGluYXRpb24gQmlxdWFkRmlsdGVyTm9kZSBpcyBlcXVhbCB0byB0cnVlLiAKK1BB
U1MgICBUaGUgcmV0dXJuIHZhbHVlIG9mIFBhbm5lck5vZGUuY29ubmVjdChDaGFubmVsTWVyZ2Vy
Tm9kZSwgMCwgMSkgbWF0Y2hlcyB0aGUgZGVzdGluYXRpb24gQ2hhbm5lbE1lcmdlck5vZGUgaXMg
ZXF1YWwgdG8gdHJ1ZS4gCiBQQVNTICAgVGhlIHJldHVybiB2YWx1ZSBvZiBTY3JpcHRQcm9jZXNz
b3JOb2RlLmNvbm5lY3QoR2Fpbk5vZGUpIG1hdGNoZXMgdGhlIGRlc3RpbmF0aW9uIEdhaW5Ob2Rl
IGlzIGVxdWFsIHRvIHRydWUuIAogUEFTUyAgIFRoZSByZXR1cm4gdmFsdWUgb2YgU2NyaXB0UHJv
Y2Vzc29yTm9kZS5jb25uZWN0KEJpcXVhZEZpbHRlck5vZGUsIDApIG1hdGNoZXMgdGhlIGRlc3Rp
bmF0aW9uIEJpcXVhZEZpbHRlck5vZGUgaXMgZXF1YWwgdG8gdHJ1ZS4gCiBQQVNTICAgVGhlIHJl
dHVybiB2YWx1ZSBvZiBTY3JpcHRQcm9jZXNzb3JOb2RlLmNvbm5lY3QoQ2hhbm5lbE1lcmdlck5v
ZGUsIDAsIDEpIG1hdGNoZXMgdGhlIGRlc3RpbmF0aW9uIENoYW5uZWxNZXJnZXJOb2RlIGlzIGVx
dWFsIHRvIHRydWUuIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy93ZWJhdWRpby90aGUtYXVkaW8tYXBpL3RoZS1vZmZsaW5lYXVkaW9jb250
ZXh0LWludGVyZmFjZS9vZmZsaW5lYXVkaW9jb250ZXh0LWRldGFjaGVkLWV4ZWN1dGlvbi1jb250
ZXh0LnRlbnRhdGl2ZS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3dlYmF1ZGlvL3RoZS1hdWRpby1hcGkvdGhlLW9mZmxpbmVhdWRpb2Nv
bnRleHQtaW50ZXJmYWNlL29mZmxpbmVhdWRpb2NvbnRleHQtZGV0YWNoZWQtZXhlY3V0aW9uLWNv
bnRleHQudGVudGF0aXZlLWV4cGVjdGVkLnR4dAppbmRleCBkM2YwZmEwMTI4NDdhZTMwMDcyNDEx
YjZlOWEzYTRhYjg0NTUyZGMxLi5iMmRhMDcwNDUwNDA4ZTk2YzRiMTExNmQ5NDNkMDIxZTY0N2Mw
NTE3IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3dlYmF1ZGlvL3RoZS1hdWRpby1hcGkvdGhlLW9mZmxpbmVhdWRpb2NvbnRleHQtaW50ZXJm
YWNlL29mZmxpbmVhdWRpb2NvbnRleHQtZGV0YWNoZWQtZXhlY3V0aW9uLWNvbnRleHQudGVudGF0
aXZlLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3dlYmF1ZGlvL3RoZS1hdWRpby1hcGkvdGhlLW9mZmxpbmVhdWRpb2NvbnRleHQt
aW50ZXJmYWNlL29mZmxpbmVhdWRpb2NvbnRleHQtZGV0YWNoZWQtZXhlY3V0aW9uLWNvbnRleHQu
dGVudGF0aXZlLWV4cGVjdGVkLnR4dApAQCAtMSw3ICsxLDcgQEAKIAogCiBQQVNTICMgQVVESVQg
VEFTSyBSVU5ORVIgU1RBUlRFRC4gCi1GQUlMIEV4ZWN1dGluZyAiZGVjb2Rpbmctb24tZGV0YWNo
ZWQtaWZyYW1lIiBwcm9taXNlX3Rlc3Q6IFVuaGFuZGxlZCByZWplY3Rpb24gd2l0aCB2YWx1ZTog
b2JqZWN0ICJUeXBlRXJyb3I6IHVuZGVmaW5lZCBpcyBub3QgYSBjb25zdHJ1Y3RvciAoZXZhbHVh
dGluZyAnbmV3IGlmcmFtZS5jb250ZW50V2luZG93Lk9mZmxpbmVBdWRpb0NvbnRleHQoMSwgMSwg
MzAwMCknKSIKK0ZBSUwgRXhlY3V0aW5nICJkZWNvZGluZy1vbi1kZXRhY2hlZC1pZnJhbWUiIHBy
b21pc2VfdGVzdDogVW5oYW5kbGVkIHJlamVjdGlvbiB3aXRoIHZhbHVlOiBvYmplY3QgIlN5bnRh
eEVycm9yOiBUaGUgc3RyaW5nIGRpZCBub3QgbWF0Y2ggdGhlIGV4cGVjdGVkIHBhdHRlcm4uIgog
UEFTUyBBdWRpdCByZXBvcnQgCiBQQVNTID4gW2RlY29kaW5nLW9uLWRldGFjaGVkLWlmcmFtZV0g
IAogUEFTUyAjIEFVRElUIFRBU0sgUlVOTkVSIEZJTklTSEVEOiAxIHRhc2tzIHJhbiBzdWNjZXNz
ZnVsbHkuIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vaW9zL2pzL2RvbS9jb25z
dHJ1Y3Rvci1sZW5ndGgtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vaW9zL2pz
L2RvbS9jb25zdHJ1Y3Rvci1sZW5ndGgtZXhwZWN0ZWQudHh0CmluZGV4IDU1NWQyM2IzM2Y4YjZl
OWRhYzAyNGQwODhjMzUxNmI3YjJhMmM3NzAuLmRiY2JjNzg4YjI0M2FmYWIwMjA4MGU0ZGQ1NTk4
OGI5YmI2MGQxMjQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2lvcy9qcy9kb20v
Y29uc3RydWN0b3ItbGVuZ3RoLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9y
bS9pb3MvanMvZG9tL2NvbnN0cnVjdG9yLWxlbmd0aC1leHBlY3RlZC50eHQKQEAgLTQsNyArNCw3
IEBAIE9uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMs
IGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFCiAKIAogUEFTUyBBcnJheUJ1ZmZlci5sZW5ndGgg
aXMgMQotRkFJTCBBdWRpb0NvbnRleHQubGVuZ3RoIHNob3VsZCBiZSAwLiBUaHJldyBleGNlcHRp
b24gUmVmZXJlbmNlRXJyb3I6IENhbid0IGZpbmQgdmFyaWFibGU6IEF1ZGlvQ29udGV4dAorUEFT
UyBBdWRpb0NvbnRleHQubGVuZ3RoIGlzIDAKIEZBSUwgQXV0b2NvbXBsZXRlRXJyb3JFdmVudC5s
ZW5ndGggc2hvdWxkIGJlIDEuIFRocmV3IGV4Y2VwdGlvbiBSZWZlcmVuY2VFcnJvcjogQ2FuJ3Qg
ZmluZCB2YXJpYWJsZTogQXV0b2NvbXBsZXRlRXJyb3JFdmVudAogUEFTUyBBbmltYXRpb25FdmVu
dC5sZW5ndGggaXMgMQogUEFTUyBCbG9iLmxlbmd0aCBpcyAwCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9wbGF0Zm9ybS9tYWMvanMvZG9tL2NvbnN0cnVjdG9yLWxlbmd0aC1leHBlY3RlZC50eHQg
Yi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvanMvZG9tL2NvbnN0cnVjdG9yLWxlbmd0aC1leHBl
Y3RlZC50eHQKaW5kZXggNTU1ZDIzYjMzZjhiNmU5ZGFjMDI0ZDA4OGMzNTE2YjdiMmEyYzc3MC4u
ZGJjYmM3ODhiMjQzYWZhYjAyMDgwZTRkZDU1OTg4YjliYjYwZDEyNCAxMDA2NDQKLS0tIGEvTGF5
b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2pzL2RvbS9jb25zdHJ1Y3Rvci1sZW5ndGgtZXhwZWN0ZWQu
dHh0CisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9qcy9kb20vY29uc3RydWN0b3ItbGVu
Z3RoLWV4cGVjdGVkLnR4dApAQCAtNCw3ICs0LDcgQEAgT24gc3VjY2VzcywgeW91IHdpbGwgc2Vl
IGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUK
IAogCiBQQVNTIEFycmF5QnVmZmVyLmxlbmd0aCBpcyAxCi1GQUlMIEF1ZGlvQ29udGV4dC5sZW5n
dGggc2hvdWxkIGJlIDAuIFRocmV3IGV4Y2VwdGlvbiBSZWZlcmVuY2VFcnJvcjogQ2FuJ3QgZmlu
ZCB2YXJpYWJsZTogQXVkaW9Db250ZXh0CitQQVNTIEF1ZGlvQ29udGV4dC5sZW5ndGggaXMgMAog
RkFJTCBBdXRvY29tcGxldGVFcnJvckV2ZW50Lmxlbmd0aCBzaG91bGQgYmUgMS4gVGhyZXcgZXhj
ZXB0aW9uIFJlZmVyZW5jZUVycm9yOiBDYW4ndCBmaW5kIHZhcmlhYmxlOiBBdXRvY29tcGxldGVF
cnJvckV2ZW50CiBQQVNTIEFuaW1hdGlvbkV2ZW50Lmxlbmd0aCBpcyAxCiBQQVNTIEJsb2IubGVu
Z3RoIGlzIDAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL3dpbi9qcy9kb20vY29u
c3RydWN0b3ItbGVuZ3RoLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL3dpbi9q
cy9kb20vY29uc3RydWN0b3ItbGVuZ3RoLWV4cGVjdGVkLnR4dAppbmRleCA5ZGRkYWU0OTdmYTQ5
YmVhYTBmZTdjNTY3YjU2MDhkNzQ3MWMwMWU2Li5jYjZkOTlmNTU0ZDkwYTI5MWMwMTBmYmI1YmFh
ZDQyZjg0NmJmNTlkIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93aW4vanMvZG9t
L2NvbnN0cnVjdG9yLWxlbmd0aC1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZv
cm0vd2luL2pzL2RvbS9jb25zdHJ1Y3Rvci1sZW5ndGgtZXhwZWN0ZWQudHh0CkBAIC00LDcgKzQs
NyBAQCBPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2Vz
LCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURQogCiAKIFBBU1MgQXJyYXlCdWZmZXIubGVuZ3Ro
IGlzIDEKLUZBSUwgQXVkaW9Db250ZXh0Lmxlbmd0aCBzaG91bGQgYmUgMC4gVGhyZXcgZXhjZXB0
aW9uIFJlZmVyZW5jZUVycm9yOiBDYW4ndCBmaW5kIHZhcmlhYmxlOiBBdWRpb0NvbnRleHQKK1BB
U1MgQXVkaW9Db250ZXh0Lmxlbmd0aCBpcyAwCiBGQUlMIEF1dG9jb21wbGV0ZUVycm9yRXZlbnQu
bGVuZ3RoIHNob3VsZCBiZSAxLiBUaHJldyBleGNlcHRpb24gUmVmZXJlbmNlRXJyb3I6IENhbid0
IGZpbmQgdmFyaWFibGU6IEF1dG9jb21wbGV0ZUVycm9yRXZlbnQKIFBBU1MgQW5pbWF0aW9uRXZl
bnQubGVuZ3RoIGlzIDEKIFBBU1MgQmxvYi5sZW5ndGggaXMgMAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>402155</attachid>
            <date>2020-06-17 14:40:06 -0700</date>
            <delta_ts>2020-06-17 20:21:42 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-213268-20200617144005.patch</filename>
            <type>text/plain</type>
            <size>274278</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYzMTgwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMWI0YTE0M2FjNTM2MWI0
MGQ4ZjE0MmM0MmIyYzlhNzdhODYyZGU1MS4uZjdjNmJkNTY2ZTdlNWJjZmY3OTg1ZTBiMmZiMDk5
OGIwNzhkMjNkOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI5NiBAQAorMjAyMC0wNi0xNyAgQ2hy
aXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBleHBlcmltZW50YWwg
ZmVhdHVyZSBmbGFnIGZvciBtb2Rlcm4gJiB1bnByZWZpeGVkIFdlYkF1ZGlvIEFQSQorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjEzMjY4CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgSmVyIE5vYmxlLgorCisgICAgICAgIEFkZCBleHBlcmltZW50YWwgZmVh
dHVyZSBmbGFnIGZvciBtb2Rlcm4gJiB1bnByZWZpeGVkIFdlYkF1ZGlvIEFQSSwKKyAgICAgICAg
b2ZmIGJ5IGRlZmF1bHQuCisKKyAgICAgICAgVGhpcyBwYXRjaCBzcGxpdCB0aGUgQXVkaW9Db250
ZXh0LCBPZmZsaW5lQXVkaW9Db250ZXh0IGFuZCBQYW5uZXJOb2RlCisgICAgICAgIElETCBpbnRl
cmZhY2VzIGludG8gdGhlaXIgcHJlZml4ZWQgYW5kIHVucHJlZml4ZWQgdmVyc2lvbnMuIFRoZQor
ICAgICAgICB1bnByZWZpeGVkIHZlcnNpb25zIGFyZSBiZWhpbmQgdGhlIG5ldyBleHBlcmltZW50
YWwgZmVhdHVyZSBmbGFnIHRoYXQKKyAgICAgICAgaXMgY3VycmVudGx5IG9mZiBieSBkZWZhdWx0
IGJ1dCBhdXRvbWF0aWNhbGx5IGdldHMgdHVybmVkIG9uIGluIHRoZQorICAgICAgICBjb250ZXh0
IG9mIGxheW91dCB0ZXN0cy4KKworICAgICAgICBUaGlzIHdpbGwgZ2l2ZSB1cyBtb3JlIGZsZXhp
YmlsaXR5IHdoZW4gd29ya2luZyBvbiB0aGUgbW9kZXJuIGFuZAorICAgICAgICB1bnByZWZpeGVk
IFdlYkF1ZGlvIEFQSSBhcyB3ZSB3aWxsIG5vdCBoYXZlIHRvIHdvcnJ5IGFib3V0IGJhY2t3YXJk
CisgICAgICAgIGNvbXBhdGliaWxpdHkuIFRoaXMgYWxzbyBhbGxvd3MgdXMgdG8gZWFzaWx5IHR1
cm4gaXQgb24gb3Igb2ZmIHZpYQorICAgICAgICB0aGUgZXhwZXJpbWVudGFsIGZlYXR1cmVzIG1l
bnUgaW4gU2FmYXJpLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cywgcmViYXNlbGluZWQgZXhpc3Rp
bmcgdGVzdHMuCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBEZXJpdmVk
U291cmNlcy1pbnB1dC54Y2ZpbGVsaXN0OgorICAgICAgICAqIERlcml2ZWRTb3VyY2VzLW91dHB1
dC54Y2ZpbGVsaXN0OgorICAgICAgICAqIERlcml2ZWRTb3VyY2VzLm1ha2U6CisgICAgICAgICog
TW9kdWxlcy93ZWJhdWRpby9BbmFseXNlck5vZGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QW5h
bHlzZXJOb2RlOjpBbmFseXNlck5vZGUpOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vQW5h
bHlzZXJOb2RlLmg6CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9BdWRpb0Jhc2ljSW5zcGVj
dG9yTm9kZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb0Jhc2ljSW5zcGVjdG9yTm9kZTo6
QXVkaW9CYXNpY0luc3BlY3Rvck5vZGUpOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vQXVk
aW9CYXNpY0luc3BlY3Rvck5vZGUuaDoKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL0F1ZGlv
QmFzaWNQcm9jZXNzb3JOb2RlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvQmFzaWNQcm9j
ZXNzb3JOb2RlOjpBdWRpb0Jhc2ljUHJvY2Vzc29yTm9kZSk6CisgICAgICAgICogTW9kdWxlcy93
ZWJhdWRpby9BdWRpb0Jhc2ljUHJvY2Vzc29yTm9kZS5oOgorICAgICAgICAqIE1vZHVsZXMvd2Vi
YXVkaW8vQXVkaW9CdWZmZXJTb3VyY2VOb2RlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlv
QnVmZmVyU291cmNlTm9kZTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvQnVmZmVy
U291cmNlTm9kZTo6QXVkaW9CdWZmZXJTb3VyY2VOb2RlKToKKyAgICAgICAgKFdlYkNvcmU6OkF1
ZGlvQnVmZmVyU291cmNlTm9kZTo6c2V0QnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlv
QnVmZmVyU291cmNlTm9kZTo6c2V0UGFubmVyTm9kZSk6CisgICAgICAgICogTW9kdWxlcy93ZWJh
dWRpby9BdWRpb0J1ZmZlclNvdXJjZU5vZGUuaDoKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlv
L0F1ZGlvQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb0NvbnRleHRCYXNlOjpB
dWRpb0NvbnRleHRCYXNlKToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvQ29udGV4dDo6QXVkaW9D
b250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvQ29udGV4dEJhc2U6OmRvY3VtZW50IGNv
bnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvQ29udGV4dEJhc2U6OnNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQgY29uc3QpOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0
Lmg6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb0NvbnRleHRCYXNlOjpBdXRvTG9ja2VyOjpBdXRv
TG9ja2VyKToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvQ29udGV4dEJhc2U6OkF1dG9Mb2NrZXI6
On5BdXRvTG9ja2VyKToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvQ29udGV4dDo6bWF4TnVtYmVy
T2ZDaGFubmVscyk6CisgICAgICAgIChpc1R5cGUpOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVk
aW8vQXVkaW9Db250ZXh0LmlkbDoKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQ29u
dGV4dFN0YXRlLmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8v
T2ZmbGluZUF1ZGlvQ29udGV4dC5pZGwuCisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9BdWRp
b0NvbnRleHRTdGF0ZS5pZGw6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
YXVkaW8vT2ZmbGluZUF1ZGlvQ29udGV4dC5pZGwuCisgICAgICAgICogTW9kdWxlcy93ZWJhdWRp
by9BdWRpb0Rlc3RpbmF0aW9uTm9kZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb0Rlc3Rp
bmF0aW9uTm9kZTo6QXVkaW9EZXN0aW5hdGlvbk5vZGUpOgorICAgICAgICAqIE1vZHVsZXMvd2Vi
YXVkaW8vQXVkaW9EZXN0aW5hdGlvbk5vZGUuaDoKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlv
L0F1ZGlvTm9kZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb05vZGU6OkF1ZGlvTm9kZSk6
CisgICAgICAgIChXZWJDb3JlOjpBdWRpb05vZGU6OmNvbm5lY3QpOgorICAgICAgICAoV2ViQ29y
ZTo6QXVkaW9Ob2RlOjpkaXNjb25uZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvTm9kZTo6
c2V0Q2hhbm5lbENvdW50KToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvTm9kZTo6c2V0Q2hhbm5l
bENvdW50TW9kZSk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb05vZGU6OnNldENoYW5uZWxJbnRl
cnByZXRhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb05vZGU6OmVuYWJsZU91dHB1dHNJ
Zk5lY2Vzc2FyeSk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb05vZGU6OmRlcmVmKToKKyAgICAg
ICAgKFdlYkNvcmU6OkF1ZGlvTm9kZTo6Y29udGV4dEZvckJpbmRpbmdzIGNvbnN0KToKKyAgICAg
ICAgKiBNb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvTm9kZS5oOgorICAgICAgICAoV2ViQ29yZTo6QXVk
aW9Ob2RlOjpjb250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvTm9kZTo6Y29udGV4dCBj
b25zdCk6CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9BdWRpb05vZGUuaWRsOgorICAgICAg
ICAqIE1vZHVsZXMvd2ViYXVkaW8vQXVkaW9Ob2RlT3V0cHV0Lmg6CisgICAgICAgIChXZWJDb3Jl
OjpBdWRpb05vZGVPdXRwdXQ6OmNvbnRleHQpOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8v
QXVkaW9QYXJhbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb1BhcmFtOjpBdWRpb1BhcmFt
KToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvUGFyYW0uaDoKKyAgICAgICAgKiBN
b2R1bGVzL3dlYmF1ZGlvL0F1ZGlvUGFyYW1UaW1lbGluZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpBdWRpb1BhcmFtVGltZWxpbmU6OnZhbHVlRm9yQ29udGV4dFRpbWUpOgorICAgICAgICAqIE1v
ZHVsZXMvd2ViYXVkaW8vQXVkaW9QYXJhbVRpbWVsaW5lLmg6CisgICAgICAgICogTW9kdWxlcy93
ZWJhdWRpby9BdWRpb1NjaGVkdWxlZFNvdXJjZU5vZGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
QXVkaW9TY2hlZHVsZWRTb3VyY2VOb2RlOjpBdWRpb1NjaGVkdWxlZFNvdXJjZU5vZGUpOgorICAg
ICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vQXVkaW9TY2hlZHVsZWRTb3VyY2VOb2RlLmg6CisgICAg
ICAgICogTW9kdWxlcy93ZWJhdWRpby9BdWRpb1N1bW1pbmdKdW5jdGlvbi5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpBdWRpb1N1bW1pbmdKdW5jdGlvbjo6QXVkaW9TdW1taW5nSnVuY3Rpb24pOgor
ICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vQXVkaW9TdW1taW5nSnVuY3Rpb24uaDoKKyAgICAg
ICAgKFdlYkNvcmU6OkF1ZGlvU3VtbWluZ0p1bmN0aW9uOjpjb250ZXh0KToKKyAgICAgICAgKiBN
b2R1bGVzL3dlYmF1ZGlvL0JpcXVhZEZpbHRlck5vZGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
QmlxdWFkRmlsdGVyTm9kZTo6QmlxdWFkRmlsdGVyTm9kZSk6CisgICAgICAgICogTW9kdWxlcy93
ZWJhdWRpby9CaXF1YWRGaWx0ZXJOb2RlLmg6CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9C
aXF1YWRQcm9jZXNzb3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QmlxdWFkUHJvY2Vzc29yOjpC
aXF1YWRQcm9jZXNzb3IpOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vQmlxdWFkUHJvY2Vz
c29yLmg6CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9DaGFubmVsTWVyZ2VyTm9kZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpDaGFubmVsTWVyZ2VyTm9kZTo6Y3JlYXRlKToKKyAgICAgICAg
KFdlYkNvcmU6OkNoYW5uZWxNZXJnZXJOb2RlOjpDaGFubmVsTWVyZ2VyTm9kZSk6CisgICAgICAg
ICogTW9kdWxlcy93ZWJhdWRpby9DaGFubmVsTWVyZ2VyTm9kZS5oOgorICAgICAgICAqIE1vZHVs
ZXMvd2ViYXVkaW8vQ2hhbm5lbFNwbGl0dGVyTm9kZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpD
aGFubmVsU3BsaXR0ZXJOb2RlOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6Q2hhbm5lbFNw
bGl0dGVyTm9kZTo6Q2hhbm5lbFNwbGl0dGVyTm9kZSk6CisgICAgICAgICogTW9kdWxlcy93ZWJh
dWRpby9DaGFubmVsU3BsaXR0ZXJOb2RlLmg6CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9D
b252b2x2ZXJOb2RlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbnZvbHZlck5vZGU6OkNvbnZv
bHZlck5vZGUpOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vQ29udm9sdmVyTm9kZS5oOgor
ICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vRGVmYXVsdEF1ZGlvRGVzdGluYXRpb25Ob2RlLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkRlZmF1bHRBdWRpb0Rlc3RpbmF0aW9uTm9kZTo6RGVmYXVs
dEF1ZGlvRGVzdGluYXRpb25Ob2RlKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL0RlZmF1
bHRBdWRpb0Rlc3RpbmF0aW9uTm9kZS5oOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vRGVs
YXlOb2RlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRlbGF5Tm9kZTo6RGVsYXlOb2RlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkRlbGF5Tm9kZTo6Y3JlYXRlKToKKyAgICAgICAgKiBNb2R1bGVzL3dl
YmF1ZGlvL0RlbGF5Tm9kZS5oOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vRGVsYXlQcm9j
ZXNzb3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGVsYXlQcm9jZXNzb3I6OkRlbGF5UHJvY2Vz
c29yKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL0RlbGF5UHJvY2Vzc29yLmg6CisgICAg
ICAgICogTW9kdWxlcy93ZWJhdWRpby9EaXN0YW5jZU1vZGVsVHlwZS5oOiBDb3BpZWQgZnJvbSBT
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL09mZmxpbmVBdWRpb0NvbnRleHQuaWRsLgor
ICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vRGlzdGFuY2VNb2RlbFR5cGUuaWRsOiBDb3BpZWQg
ZnJvbSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL09mZmxpbmVBdWRpb0NvbnRleHQu
aWRsLgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vRHluYW1pY3NDb21wcmVzc29yTm9kZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpEeW5hbWljc0NvbXByZXNzb3JOb2RlOjpEeW5hbWljc0Nv
bXByZXNzb3JOb2RlKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL0R5bmFtaWNzQ29tcHJl
c3Nvck5vZGUuaDoKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL0dhaW5Ob2RlLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkdhaW5Ob2RlOjpHYWluTm9kZSk6CisgICAgICAgICogTW9kdWxlcy93
ZWJhdWRpby9HYWluTm9kZS5oOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vTWVkaWFFbGVt
ZW50QXVkaW9Tb3VyY2VOb2RlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhRWxlbWVudEF1
ZGlvU291cmNlTm9kZTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhRWxlbWVudEF1
ZGlvU291cmNlTm9kZTo6TWVkaWFFbGVtZW50QXVkaW9Tb3VyY2VOb2RlKToKKyAgICAgICAgKFdl
YkNvcmU6Ok1lZGlhRWxlbWVudEF1ZGlvU291cmNlTm9kZTo6c2V0Rm9ybWF0KToKKyAgICAgICAg
KiBNb2R1bGVzL3dlYmF1ZGlvL01lZGlhRWxlbWVudEF1ZGlvU291cmNlTm9kZS5oOgorICAgICAg
ICAqIE1vZHVsZXMvd2ViYXVkaW8vTWVkaWFTdHJlYW1BdWRpb0Rlc3RpbmF0aW9uTm9kZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbUF1ZGlvRGVzdGluYXRpb25Ob2RlOjpjcmVh
dGUpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTdHJlYW1BdWRpb0Rlc3RpbmF0aW9uTm9kZTo6
TWVkaWFTdHJlYW1BdWRpb0Rlc3RpbmF0aW9uTm9kZSk6CisgICAgICAgICogTW9kdWxlcy93ZWJh
dWRpby9NZWRpYVN0cmVhbUF1ZGlvRGVzdGluYXRpb25Ob2RlLmg6CisgICAgICAgICogTW9kdWxl
cy93ZWJhdWRpby9NZWRpYVN0cmVhbUF1ZGlvU291cmNlTm9kZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpNZWRpYVN0cmVhbUF1ZGlvU291cmNlTm9kZTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNv
cmU6Ok1lZGlhU3RyZWFtQXVkaW9Tb3VyY2VOb2RlOjpNZWRpYVN0cmVhbUF1ZGlvU291cmNlTm9k
ZSk6CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9NZWRpYVN0cmVhbUF1ZGlvU291cmNlTm9k
ZS5oOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vT2ZmbGluZUF1ZGlvQ29udGV4dC5pZGw6
CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9PZmZsaW5lQXVkaW9EZXN0aW5hdGlvbk5vZGUu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6T2ZmbGluZUF1ZGlvRGVzdGluYXRpb25Ob2RlOjpPZmZs
aW5lQXVkaW9EZXN0aW5hdGlvbk5vZGUpOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vT2Zm
bGluZUF1ZGlvRGVzdGluYXRpb25Ob2RlLmg6CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9P
c2NpbGxhdG9yTm9kZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpPc2NpbGxhdG9yTm9kZTo6Y3Jl
YXRlKToKKyAgICAgICAgKFdlYkNvcmU6Ok9zY2lsbGF0b3JOb2RlOjpPc2NpbGxhdG9yTm9kZSk6
CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9Pc2NpbGxhdG9yTm9kZS5oOgorICAgICAgICAq
IE1vZHVsZXMvd2ViYXVkaW8vUGFubmVyTm9kZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQYW5u
ZXJOb2RlQmFzZTo6UGFubmVyTm9kZUJhc2UpOgorICAgICAgICAoV2ViQ29yZTo6UGFubmVyTm9k
ZTo6UGFubmVyTm9kZSk6CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9QYW5uZXJOb2RlLmg6
CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9QYW5uZXJOb2RlLmlkbDoKKyAgICAgICAgKiBN
b2R1bGVzL3dlYmF1ZGlvL1Bhbm5pbmdNb2RlbFR5cGUuaDogQ29waWVkIGZyb20gU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJhdWRpby9PZmZsaW5lQXVkaW9Db250ZXh0LmlkbC4KKyAgICAgICAg
KiBNb2R1bGVzL3dlYmF1ZGlvL1Bhbm5pbmdNb2RlbFR5cGUuaWRsOiBDb3BpZWQgZnJvbSBTb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL09mZmxpbmVBdWRpb0NvbnRleHQuaWRsLgorICAg
ICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vU2NyaXB0UHJvY2Vzc29yTm9kZS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpTY3JpcHRQcm9jZXNzb3JOb2RlOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29y
ZTo6U2NyaXB0UHJvY2Vzc29yTm9kZTo6U2NyaXB0UHJvY2Vzc29yTm9kZSk6CisgICAgICAgICog
TW9kdWxlcy93ZWJhdWRpby9TY3JpcHRQcm9jZXNzb3JOb2RlLmg6CisgICAgICAgICogTW9kdWxl
cy93ZWJhdWRpby9XYXZlU2hhcGVyTm9kZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXYXZlU2hh
cGVyTm9kZTo6V2F2ZVNoYXBlck5vZGUpOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vV2F2
ZVNoYXBlck5vZGUuaDoKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL1dlYktpdEF1ZGlvQ29u
dGV4dC5jcHA6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVk
aW9Db250ZXh0LmNwcC4KKyAgICAgICAgKFdlYkNvcmU6OldlYktpdEF1ZGlvQ29udGV4dDo6aXNT
YW1wbGVSYXRlUmFuZ2VHb29kKToKKyAgICAgICAgKFdlYkNvcmU6OldlYktpdEF1ZGlvQ29udGV4
dDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OldlYktpdEF1ZGlvQ29udGV4dDo6V2ViS2l0
QXVkaW9Db250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OldlYktpdEF1ZGlvQ29udGV4dDo6Y29u
c3RydWN0Q29tbW9uKToKKyAgICAgICAgKFdlYkNvcmU6OldlYktpdEF1ZGlvQ29udGV4dDo6fldl
YktpdEF1ZGlvQ29udGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJLaXRBdWRpb0NvbnRleHQ6
OmxhenlJbml0aWFsaXplKToKKyAgICAgICAgKFdlYkNvcmU6OldlYktpdEF1ZGlvQ29udGV4dDo6
Y2xlYXIpOgorICAgICAgICAoV2ViQ29yZTo6V2ViS2l0QXVkaW9Db250ZXh0Ojp1bmluaXRpYWxp
emUpOgorICAgICAgICAoV2ViQ29yZTo6V2ViS2l0QXVkaW9Db250ZXh0Ojppc0luaXRpYWxpemVk
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OldlYktpdEF1ZGlvQ29udGV4dDo6YWRkUmVhY3Rp
b24pOgorICAgICAgICAoV2ViQ29yZTo6V2ViS2l0QXVkaW9Db250ZXh0OjpzZXRTdGF0ZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpXZWJLaXRBdWRpb0NvbnRleHQ6OnN0b3ApOgorICAgICAgICAoV2Vi
Q29yZTo6V2ViS2l0QXVkaW9Db250ZXh0OjpzdXNwZW5kKToKKyAgICAgICAgKFdlYkNvcmU6Oldl
YktpdEF1ZGlvQ29udGV4dDo6cmVzdW1lKToKKyAgICAgICAgKFdlYkNvcmU6OldlYktpdEF1ZGlv
Q29udGV4dDo6YWN0aXZlRE9NT2JqZWN0TmFtZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpX
ZWJLaXRBdWRpb0NvbnRleHQ6Omhvc3RpbmdEb2N1bWVudElkZW50aWZpZXIgY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6V2ViS2l0QXVkaW9Db250ZXh0Ojppc1N1c3BlbmRlZCBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpXZWJLaXRBdWRpb0NvbnRleHQ6OnZpc2liaWxpdHlTdGF0ZUNoYW5n
ZWQpOgorICAgICAgICAoV2ViQ29yZTo6V2ViS2l0QXVkaW9Db250ZXh0Ojp3b3VsZFRhaW50T3Jp
Z2luIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OldlYktpdEF1ZGlvQ29udGV4dDo6Y3JlYXRl
QnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OldlYktpdEF1ZGlvQ29udGV4dDo6ZGVjb2RlQXVk
aW9EYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OldlYktpdEF1ZGlvQ29udGV4dDo6Y3JlYXRlQnVm
ZmVyU291cmNlKToKKyAgICAgICAgKFdlYkNvcmU6OldlYktpdEF1ZGlvQ29udGV4dDo6Y3JlYXRl
TWVkaWFFbGVtZW50U291cmNlKToKKyAgICAgICAgKFdlYkNvcmU6OldlYktpdEF1ZGlvQ29udGV4
dDo6Y3JlYXRlTWVkaWFTdHJlYW1Tb3VyY2UpOgorICAgICAgICAoV2ViQ29yZTo6V2ViS2l0QXVk
aW9Db250ZXh0OjpjcmVhdGVNZWRpYVN0cmVhbURlc3RpbmF0aW9uKToKKyAgICAgICAgKFdlYkNv
cmU6OldlYktpdEF1ZGlvQ29udGV4dDo6Y3JlYXRlU2NyaXB0UHJvY2Vzc29yKToKKyAgICAgICAg
KFdlYkNvcmU6OldlYktpdEF1ZGlvQ29udGV4dDo6Y3JlYXRlQmlxdWFkRmlsdGVyKToKKyAgICAg
ICAgKFdlYkNvcmU6OldlYktpdEF1ZGlvQ29udGV4dDo6Y3JlYXRlV2F2ZVNoYXBlcik6CisgICAg
ICAgIChXZWJDb3JlOjpXZWJLaXRBdWRpb0NvbnRleHQ6OmNyZWF0ZVBhbm5lcik6CisgICAgICAg
IChXZWJDb3JlOjpXZWJLaXRBdWRpb0NvbnRleHQ6OmNyZWF0ZUNvbnZvbHZlcik6CisgICAgICAg
IChXZWJDb3JlOjpXZWJLaXRBdWRpb0NvbnRleHQ6OmNyZWF0ZUR5bmFtaWNzQ29tcHJlc3Nvcik6
CisgICAgICAgIChXZWJDb3JlOjpXZWJLaXRBdWRpb0NvbnRleHQ6OmNyZWF0ZUFuYWx5c2VyKToK
KyAgICAgICAgKFdlYkNvcmU6OldlYktpdEF1ZGlvQ29udGV4dDo6Y3JlYXRlR2Fpbik6CisgICAg
ICAgIChXZWJDb3JlOjpXZWJLaXRBdWRpb0NvbnRleHQ6OmNyZWF0ZURlbGF5KToKKyAgICAgICAg
KFdlYkNvcmU6OldlYktpdEF1ZGlvQ29udGV4dDo6Y3JlYXRlQ2hhbm5lbFNwbGl0dGVyKToKKyAg
ICAgICAgKFdlYkNvcmU6OldlYktpdEF1ZGlvQ29udGV4dDo6Y3JlYXRlQ2hhbm5lbE1lcmdlcik6
CisgICAgICAgIChXZWJDb3JlOjpXZWJLaXRBdWRpb0NvbnRleHQ6OmNyZWF0ZU9zY2lsbGF0b3Ip
OgorICAgICAgICAoV2ViQ29yZTo6V2ViS2l0QXVkaW9Db250ZXh0OjpjcmVhdGVQZXJpb2RpY1dh
dmUpOgorICAgICAgICAoV2ViQ29yZTo6V2ViS2l0QXVkaW9Db250ZXh0Ojpub3RpZnlOb2RlRmlu
aXNoZWRQcm9jZXNzaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OldlYktpdEF1ZGlvQ29udGV4dDo6
ZGVyZWZGaW5pc2hlZFNvdXJjZU5vZGVzKToKKyAgICAgICAgKFdlYkNvcmU6OldlYktpdEF1ZGlv
Q29udGV4dDo6cmVmTm9kZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJLaXRBdWRpb0NvbnRleHQ6
OmRlcmVmTm9kZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJLaXRBdWRpb0NvbnRleHQ6OmRlcmVm
VW5maW5pc2hlZFNvdXJjZU5vZGVzKToKKyAgICAgICAgKFdlYkNvcmU6OldlYktpdEF1ZGlvQ29u
dGV4dDo6bG9jayk6CisgICAgICAgIChXZWJDb3JlOjpXZWJLaXRBdWRpb0NvbnRleHQ6OnRyeUxv
Y2spOgorICAgICAgICAoV2ViQ29yZTo6V2ViS2l0QXVkaW9Db250ZXh0Ojp1bmxvY2spOgorICAg
ICAgICAoV2ViQ29yZTo6V2ViS2l0QXVkaW9Db250ZXh0Ojppc0F1ZGlvVGhyZWFkIGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6OldlYktpdEF1ZGlvQ29udGV4dDo6aXNHcmFwaE93bmVyIGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6OldlYktpdEF1ZGlvQ29udGV4dDo6YWRkRGVmZXJyZWRGaW5p
c2hEZXJlZik6CisgICAgICAgIChXZWJDb3JlOjpXZWJLaXRBdWRpb0NvbnRleHQ6OmhhbmRsZVBy
ZVJlbmRlclRhc2tzKToKKyAgICAgICAgKFdlYkNvcmU6OldlYktpdEF1ZGlvQ29udGV4dDo6aGFu
ZGxlUG9zdFJlbmRlclRhc2tzKToKKyAgICAgICAgKFdlYkNvcmU6OldlYktpdEF1ZGlvQ29udGV4
dDo6aGFuZGxlRGVmZXJyZWRGaW5pc2hEZXJlZnMpOgorICAgICAgICAoV2ViQ29yZTo6V2ViS2l0
QXVkaW9Db250ZXh0OjptYXJrRm9yRGVsZXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6V2ViS2l0
QXVkaW9Db250ZXh0OjpzY2hlZHVsZU5vZGVEZWxldGlvbik6CisgICAgICAgIChXZWJDb3JlOjpX
ZWJLaXRBdWRpb0NvbnRleHQ6OmRlbGV0ZU1hcmtlZE5vZGVzKToKKyAgICAgICAgKFdlYkNvcmU6
OldlYktpdEF1ZGlvQ29udGV4dDo6bWFya1N1bW1pbmdKdW5jdGlvbkRpcnR5KToKKyAgICAgICAg
KFdlYkNvcmU6OldlYktpdEF1ZGlvQ29udGV4dDo6cmVtb3ZlTWFya2VkU3VtbWluZ0p1bmN0aW9u
KToKKyAgICAgICAgKFdlYkNvcmU6OldlYktpdEF1ZGlvQ29udGV4dDo6bWFya0F1ZGlvTm9kZU91
dHB1dERpcnR5KToKKyAgICAgICAgKFdlYkNvcmU6OldlYktpdEF1ZGlvQ29udGV4dDo6aGFuZGxl
RGlydHlBdWRpb1N1bW1pbmdKdW5jdGlvbnMpOgorICAgICAgICAoV2ViQ29yZTo6V2ViS2l0QXVk
aW9Db250ZXh0OjpoYW5kbGVEaXJ0eUF1ZGlvTm9kZU91dHB1dHMpOgorICAgICAgICAoV2ViQ29y
ZTo6V2ViS2l0QXVkaW9Db250ZXh0OjphZGRBdXRvbWF0aWNQdWxsTm9kZSk6CisgICAgICAgIChX
ZWJDb3JlOjpXZWJLaXRBdWRpb0NvbnRleHQ6OnJlbW92ZUF1dG9tYXRpY1B1bGxOb2RlKToKKyAg
ICAgICAgKFdlYkNvcmU6OldlYktpdEF1ZGlvQ29udGV4dDo6dXBkYXRlQXV0b21hdGljUHVsbE5v
ZGVzKToKKyAgICAgICAgKFdlYkNvcmU6OldlYktpdEF1ZGlvQ29udGV4dDo6cHJvY2Vzc0F1dG9t
YXRpY1B1bGxOb2Rlcyk6CisgICAgICAgIChXZWJDb3JlOjpXZWJLaXRBdWRpb0NvbnRleHQ6Om5v
ZGVXaWxsQmVnaW5QbGF5YmFjayk6CisgICAgICAgIChXZWJDb3JlOjpzaG91bGREb2N1bWVudEFs
bG93V2ViQXVkaW9Ub0F1dG9QbGF5KToKKyAgICAgICAgKFdlYkNvcmU6OldlYktpdEF1ZGlvQ29u
dGV4dDo6d2lsbEJlZ2luUGxheWJhY2spOgorICAgICAgICAoV2ViQ29yZTo6V2ViS2l0QXVkaW9D
b250ZXh0Ojp3aWxsUGF1c2VQbGF5YmFjayk6CisgICAgICAgIChXZWJDb3JlOjpXZWJLaXRBdWRp
b0NvbnRleHQ6OnN0YXJ0UmVuZGVyaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OldlYktpdEF1ZGlv
Q29udGV4dDo6bWVkaWFDYW5TdGFydCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJLaXRBdWRpb0Nv
bnRleHQ6Om1lZGlhU3RhdGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6V2ViS2l0QXVkaW9D
b250ZXh0OjpwYWdlTXV0ZWRTdGF0ZURpZENoYW5nZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJL
aXRBdWRpb0NvbnRleHQ6OmlzUGxheWluZ0F1ZGlvRGlkQ2hhbmdlKToKKyAgICAgICAgKFdlYkNv
cmU6OldlYktpdEF1ZGlvQ29udGV4dDo6ZmluaXNoZWRSZW5kZXJpbmcpOgorICAgICAgICAoV2Vi
Q29yZTo6V2ViS2l0QXVkaW9Db250ZXh0OjpkaXNwYXRjaEV2ZW50KToKKyAgICAgICAgKFdlYkNv
cmU6OldlYktpdEF1ZGlvQ29udGV4dDo6aW5jcmVtZW50QWN0aXZlU291cmNlQ291bnQpOgorICAg
ICAgICAoV2ViQ29yZTo6V2ViS2l0QXVkaW9Db250ZXh0OjpkZWNyZW1lbnRBY3RpdmVTb3VyY2VD
b3VudCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJLaXRBdWRpb0NvbnRleHQ6OnN1c3BlbmRSZW5k
ZXJpbmcpOgorICAgICAgICAoV2ViQ29yZTo6V2ViS2l0QXVkaW9Db250ZXh0OjpyZXN1bWVSZW5k
ZXJpbmcpOgorICAgICAgICAoV2ViQ29yZTo6V2ViS2l0QXVkaW9Db250ZXh0OjpjbG9zZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpXZWJLaXRBdWRpb0NvbnRleHQ6OnN1c3BlbmRQbGF5YmFjayk6Cisg
ICAgICAgIChXZWJDb3JlOjpXZWJLaXRBdWRpb0NvbnRleHQ6Om1heVJlc3VtZVBsYXliYWNrKToK
KyAgICAgICAgKFdlYkNvcmU6OldlYktpdEF1ZGlvQ29udGV4dDo6cG9zdFRhc2spOgorICAgICAg
ICAoV2ViQ29yZTo6V2ViS2l0QXVkaW9Db250ZXh0OjpvcmlnaW4gY29uc3QpOgorICAgICAgICAo
V2ViQ29yZTo6V2ViS2l0QXVkaW9Db250ZXh0OjphZGRDb25zb2xlTWVzc2FnZSk6CisgICAgICAg
IChXZWJDb3JlOjpXZWJLaXRBdWRpb0NvbnRleHQ6OmNsZWFyUGVuZGluZ0FjdGl2aXR5KToKKyAg
ICAgICAgKFdlYkNvcmU6OldlYktpdEF1ZGlvQ29udGV4dDo6bWFrZVBlbmRpbmdBY3Rpdml0eSk6
CisgICAgICAgIChXZWJDb3JlOjpXZWJLaXRBdWRpb0NvbnRleHQ6OmxvZ0NoYW5uZWwgY29uc3Qp
OgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vV2ViS2l0QXVkaW9Db250ZXh0Lmg6IENvcGll
ZCBmcm9tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0LmguCisg
ICAgICAgIChXZWJDb3JlOjpXZWJLaXRBdWRpb0NvbnRleHQ6OmRlc3RpbmF0aW9uKToKKyAgICAg
ICAgKFdlYkNvcmU6OldlYktpdEF1ZGlvQ29udGV4dDo6YWN0aXZlU291cmNlQ291bnQgY29uc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6V2ViS2l0QXVkaW9Db250ZXh0OjpsaXN0ZW5lcik6CisgICAg
ICAgIChXZWJDb3JlOjpXZWJLaXRBdWRpb0NvbnRleHQ6OmlzQ2xvc2VkIGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OldlYktpdEF1ZGlvQ29udGV4dDo6Y29ubmVjdGlvbkNvdW50IGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6OldlYktpdEF1ZGlvQ29udGV4dDo6YXVkaW9UaHJlYWQgY29uc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6V2ViS2l0QXVkaW9Db250ZXh0OjptYXhOdW1iZXJPZkNoYW5u
ZWxzKToKKyAgICAgICAgKFdlYkNvcmU6OldlYktpdEF1ZGlvQ29udGV4dDo6dXNlckdlc3R1cmVS
ZXF1aXJlZEZvckF1ZGlvU3RhcnQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6V2ViS2l0QXVk
aW9Db250ZXh0OjpwYWdlQ29uc2VudFJlcXVpcmVkRm9yQXVkaW9TdGFydCBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpXZWJLaXRBdWRpb0NvbnRleHQ6OnN0YXRlIGNvbnN0KToKKyAgICAgICAg
KGlzVHlwZSk6CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9XZWJLaXRBdWRpb0NvbnRleHQu
aWRsOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQ29u
dGV4dC5pZGwuCisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9XZWJLaXRBdWRpb1Bhbm5lck5v
ZGUuY3BwOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1Bhbm5l
ck5vZGUuY3BwLgorICAgICAgICAoV2ViQ29yZTo6Zml4TkFOcyk6CisgICAgICAgIChXZWJDb3Jl
OjpXZWJLaXRBdWRpb1Bhbm5lck5vZGU6OldlYktpdEF1ZGlvUGFubmVyTm9kZSk6CisgICAgICAg
IChXZWJDb3JlOjpXZWJLaXRBdWRpb1Bhbm5lck5vZGU6On5XZWJLaXRBdWRpb1Bhbm5lck5vZGUp
OgorICAgICAgICAoV2ViQ29yZTo6V2ViS2l0QXVkaW9QYW5uZXJOb2RlOjpwdWxsSW5wdXRzKToK
KyAgICAgICAgKFdlYkNvcmU6OldlYktpdEF1ZGlvUGFubmVyTm9kZTo6cHJvY2Vzcyk6CisgICAg
ICAgIChXZWJDb3JlOjpXZWJLaXRBdWRpb1Bhbm5lck5vZGU6OnJlc2V0KToKKyAgICAgICAgKFdl
YkNvcmU6OldlYktpdEF1ZGlvUGFubmVyTm9kZTo6aW5pdGlhbGl6ZSk6CisgICAgICAgIChXZWJD
b3JlOjpXZWJLaXRBdWRpb1Bhbm5lck5vZGU6OnVuaW5pdGlhbGl6ZSk6CisgICAgICAgIChXZWJD
b3JlOjpXZWJLaXRBdWRpb1Bhbm5lck5vZGU6Omxpc3RlbmVyKToKKyAgICAgICAgKFdlYkNvcmU6
OldlYktpdEF1ZGlvUGFubmVyTm9kZTo6c2V0UGFubmluZ01vZGVsKToKKyAgICAgICAgKFdlYkNv
cmU6OldlYktpdEF1ZGlvUGFubmVyTm9kZTo6ZGlzdGFuY2VNb2RlbCBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpXZWJLaXRBdWRpb1Bhbm5lck5vZGU6OnNldERpc3RhbmNlTW9kZWwpOgorICAg
ICAgICAoV2ViQ29yZTo6V2ViS2l0QXVkaW9QYW5uZXJOb2RlOjpnZXRBemltdXRoRWxldmF0aW9u
KToKKyAgICAgICAgKFdlYkNvcmU6OldlYktpdEF1ZGlvUGFubmVyTm9kZTo6ZG9wcGxlclJhdGUp
OgorICAgICAgICAoV2ViQ29yZTo6V2ViS2l0QXVkaW9QYW5uZXJOb2RlOjpkaXN0YW5jZUNvbmVH
YWluKToKKyAgICAgICAgKFdlYkNvcmU6OldlYktpdEF1ZGlvUGFubmVyTm9kZTo6bm90aWZ5QXVk
aW9Tb3VyY2VzQ29ubmVjdGVkVG9Ob2RlKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL1dl
YktpdEF1ZGlvUGFubmVyTm9kZS5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmF1ZGlvL1Bhbm5lck5vZGUuaC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL1dlYktp
dEF1ZGlvUGFubmVyTm9kZS5pZGw6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViYXVkaW8vUGFubmVyTm9kZS5pZGwuCisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9XZWJL
aXRPZmZsaW5lQXVkaW9Db250ZXh0LmNwcDogQ29waWVkIGZyb20gU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJhdWRpby9EZWxheU5vZGUuY3BwLgorICAgICAgICAoV2ViQ29yZTo6V2ViS2l0T2Zm
bGluZUF1ZGlvQ29udGV4dDo6V2ViS2l0T2ZmbGluZUF1ZGlvQ29udGV4dCk6CisgICAgICAgIChX
ZWJDb3JlOjpXZWJLaXRPZmZsaW5lQXVkaW9Db250ZXh0OjpjcmVhdGUpOgorICAgICAgICAqIE1v
ZHVsZXMvd2ViYXVkaW8vV2ViS2l0T2ZmbGluZUF1ZGlvQ29udGV4dC5oOiBDb3BpZWQgZnJvbSBT
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0RlbGF5Tm9kZS5oLgorICAgICAgICAqIE1v
ZHVsZXMvd2ViYXVkaW8vV2ViS2l0T2ZmbGluZUF1ZGlvQ29udGV4dC5pZGw6IENvcGllZCBmcm9t
IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vT2ZmbGluZUF1ZGlvQ29udGV4dC5pZGwu
CisgICAgICAgICogU291cmNlcy50eHQ6CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qOgorICAgICAgICAqIGJpbmRpbmdzL2pzL1dlYkNvcmVCdWlsdGluTmFtZXMu
aDoKKyAgICAgICAgKiBkb20vRXZlbnRUYXJnZXRGYWN0b3J5LmluOgorICAgICAgICAqIHBhZ2Uv
U2V0dGluZ3MueWFtbDoKKyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFscy5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpJbnRlcm5hbHM6OnNldEF1ZGlvQ29udGV4dFJlc3RyaWN0aW9ucyk6CisgICAg
ICAgICogdGVzdGluZy9JbnRlcm5hbHMuaDoKKyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFscy5p
ZGw6CisKIDIwMjAtMDYtMTYgIEFudG9pbmUgUXVpbnQgIDxncmFvdXRzQHdlYmtpdC5vcmc+CiAK
ICAgICAgICAgcXVpa3IuY29tOiB1bmFibGUgdG8gc2VsZWN0IGl0ZW0gZnJvbSBkcm9wZG93bgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5n
ZUxvZwppbmRleCBkOGM2ZThmN2FkZmFlOGJhMDlmNDQ5ZWJhMjQ0ZWQ2OThjOGFlMGU1Li42MDE0
YTk4MDc1ZDM2NmI3MzBlNWQyZDNiMmNkM2Q5YmM5NWU4MzMwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsx
LDE1IEBACisyMDIwLTA2LTE3ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAg
ICAgICAgQWRkIGV4cGVyaW1lbnRhbCBmZWF0dXJlIGZsYWcgZm9yIG1vZGVybiAmIHVucHJlZml4
ZWQgV2ViQXVkaW8gQVBJCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMTMyNjgKKworICAgICAgICBSZXZpZXdlZCBieSBKZXIgTm9ibGUuCisKKyAgICAg
ICAgQWRkIGV4cGVyaW1lbnRhbCBmZWF0dXJlIGZsYWcgZm9yIG1vZGVybiAmIHVucHJlZml4ZWQg
V2ViQXVkaW8gQVBJLAorICAgICAgICBvZmYgYnkgZGVmYXVsdC4KKworICAgICAgICAqIFNoYXJl
ZC9XZWJQcmVmZXJlbmNlcy55YW1sOgorCiAyMDIwLTA2LTE3ICBBbGV4IENocmlzdGVuc2VuICA8
YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CiAKICAgICAgICAgTnVsbCBjaGVjayBwbHVnaW4ubV9k
YXRhIGJlZm9yZSB1c2luZyBpdCBpbiBQREZQbHVnaW46OkJ5dGVSYW5nZVJlcXVlc3Q6OmNvbXBs
ZXRlVW5jb25kaXRpb25hbGx5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3Rz
LnR4dCBiL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CmluZGV4IDk3NTk0ODk1ZDhjN2Fj
MjgxMThjOTdjNGYxOWFlNWI2YWI4OTFjOWUuLjM5OWE2YmQzZmQwOTZjNTExNzg4MWM5MjU3Njkx
NTA1MTMzYzMwMTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0Cisr
KyBiL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CkBAIC00MzMsNiArNDMzLDcgQEAgc2V0
KFdlYkNvcmVfTk9OX1NWR19JRExfRklMRVMKICAgICBNb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQnVm
ZmVyQ2FsbGJhY2suaWRsCiAgICAgTW9kdWxlcy93ZWJhdWRpby9BdWRpb0J1ZmZlclNvdXJjZU5v
ZGUuaWRsCiAgICAgTW9kdWxlcy93ZWJhdWRpby9BdWRpb0NvbnRleHQuaWRsCisgICAgTW9kdWxl
cy93ZWJhdWRpby9BdWRpb0NvbnRleHRTdGF0ZS5pZGwKICAgICBNb2R1bGVzL3dlYmF1ZGlvL0F1
ZGlvRGVzdGluYXRpb25Ob2RlLmlkbAogICAgIE1vZHVsZXMvd2ViYXVkaW8vQXVkaW9MaXN0ZW5l
ci5pZGwKICAgICBNb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvTm9kZS5pZGwKQEAgLTQ0Myw2ICs0NDQs
NyBAQCBzZXQoV2ViQ29yZV9OT05fU1ZHX0lETF9GSUxFUwogICAgIE1vZHVsZXMvd2ViYXVkaW8v
Q2hhbm5lbFNwbGl0dGVyTm9kZS5pZGwKICAgICBNb2R1bGVzL3dlYmF1ZGlvL0NvbnZvbHZlck5v
ZGUuaWRsCiAgICAgTW9kdWxlcy93ZWJhdWRpby9EZWxheU5vZGUuaWRsCisgICAgTW9kdWxlcy93
ZWJhdWRpby9EaXN0YW5jZU1vZGVsVHlwZS5pZGwKICAgICBNb2R1bGVzL3dlYmF1ZGlvL0R5bmFt
aWNzQ29tcHJlc3Nvck5vZGUuaWRsCiAgICAgTW9kdWxlcy93ZWJhdWRpby9HYWluTm9kZS5pZGwK
ICAgICBNb2R1bGVzL3dlYmF1ZGlvL01lZGlhRWxlbWVudEF1ZGlvU291cmNlTm9kZS5pZGwKQEAg
LTQ1Miw5ICs0NTQsMTMgQEAgc2V0KFdlYkNvcmVfTk9OX1NWR19JRExfRklMRVMKICAgICBNb2R1
bGVzL3dlYmF1ZGlvL09mZmxpbmVBdWRpb0NvbnRleHQuaWRsCiAgICAgTW9kdWxlcy93ZWJhdWRp
by9Pc2NpbGxhdG9yTm9kZS5pZGwKICAgICBNb2R1bGVzL3dlYmF1ZGlvL1Bhbm5lck5vZGUuaWRs
CisgICAgTW9kdWxlcy93ZWJhdWRpby9QYW5uaW5nTW9kZWxUeXBlLmlkbAogICAgIE1vZHVsZXMv
d2ViYXVkaW8vUGVyaW9kaWNXYXZlLmlkbAogICAgIE1vZHVsZXMvd2ViYXVkaW8vU2NyaXB0UHJv
Y2Vzc29yTm9kZS5pZGwKICAgICBNb2R1bGVzL3dlYmF1ZGlvL1dhdmVTaGFwZXJOb2RlLmlkbAor
ICAgIE1vZHVsZXMvd2ViYXVkaW8vV2ViS2l0QXVkaW9Db250ZXh0LmlkbAorICAgIE1vZHVsZXMv
d2ViYXVkaW8vV2ViS2l0QXVkaW9QYW5uZXJOb2RlLmlkbAorICAgIE1vZHVsZXMvd2ViYXVkaW8v
V2ViS2l0T2ZmbGluZUF1ZGlvQ29udGV4dC5pZGwKIAogICAgIE1vZHVsZXMvd2ViYXV0aG4vQXR0
ZXN0YXRpb25Db252ZXlhbmNlUHJlZmVyZW5jZS5pZGwKICAgICBNb2R1bGVzL3dlYmF1dGhuL0F1
dGhlbnRpY2F0aW9uRXh0ZW5zaW9uc0NsaWVudElucHV0cy5pZGwKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLWlucHV0LnhjZmlsZWxpc3QgYi9Tb3VyY2UvV2ViQ29y
ZS9EZXJpdmVkU291cmNlcy1pbnB1dC54Y2ZpbGVsaXN0CmluZGV4IDZhN2FhN2QxNGViYjQzN2Q3
NDFlYzJlZjg1MzM3NzVkMzQ0ZDQ2NTQuLmY3ZDY0YzE5M2QwZTdkZjI4MTY1YmRkNzRhNDBkM2Y5
MGU2YTgyMTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLWlucHV0
LnhjZmlsZWxpc3QKKysrIGIvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMtaW5wdXQueGNm
aWxlbGlzdApAQCAtMzAwLDYgKzMwMCw3IEBAICQoUFJPSkVDVF9ESVIpL01vZHVsZXMvd2ViYXVk
aW8vQXVkaW9CdWZmZXIuaWRsCiAkKFBST0pFQ1RfRElSKS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlv
QnVmZmVyQ2FsbGJhY2suaWRsCiAkKFBST0pFQ1RfRElSKS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlv
QnVmZmVyU291cmNlTm9kZS5pZGwKICQoUFJPSkVDVF9ESVIpL01vZHVsZXMvd2ViYXVkaW8vQXVk
aW9Db250ZXh0LmlkbAorJChQUk9KRUNUX0RJUikvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0NvbnRl
eHRTdGF0ZS5pZGwKICQoUFJPSkVDVF9ESVIpL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9EZXN0aW5h
dGlvbk5vZGUuaWRsCiAkKFBST0pFQ1RfRElSKS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvTGlzdGVu
ZXIuaWRsCiAkKFBST0pFQ1RfRElSKS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvTm9kZS5pZGwKQEAg
LTMxMCw2ICszMTEsNyBAQCAkKFBST0pFQ1RfRElSKS9Nb2R1bGVzL3dlYmF1ZGlvL0NoYW5uZWxN
ZXJnZXJOb2RlLmlkbAogJChQUk9KRUNUX0RJUikvTW9kdWxlcy93ZWJhdWRpby9DaGFubmVsU3Bs
aXR0ZXJOb2RlLmlkbAogJChQUk9KRUNUX0RJUikvTW9kdWxlcy93ZWJhdWRpby9Db252b2x2ZXJO
b2RlLmlkbAogJChQUk9KRUNUX0RJUikvTW9kdWxlcy93ZWJhdWRpby9EZWxheU5vZGUuaWRsCisk
KFBST0pFQ1RfRElSKS9Nb2R1bGVzL3dlYmF1ZGlvL0Rpc3RhbmNlTW9kZWxUeXBlLmlkbAogJChQ
Uk9KRUNUX0RJUikvTW9kdWxlcy93ZWJhdWRpby9EeW5hbWljc0NvbXByZXNzb3JOb2RlLmlkbAog
JChQUk9KRUNUX0RJUikvTW9kdWxlcy93ZWJhdWRpby9HYWluTm9kZS5pZGwKICQoUFJPSkVDVF9E
SVIpL01vZHVsZXMvd2ViYXVkaW8vTWVkaWFFbGVtZW50QXVkaW9Tb3VyY2VOb2RlLmlkbApAQCAt
MzE5LDkgKzMyMSwxMyBAQCAkKFBST0pFQ1RfRElSKS9Nb2R1bGVzL3dlYmF1ZGlvL09mZmxpbmVB
dWRpb0NvbXBsZXRpb25FdmVudC5pZGwKICQoUFJPSkVDVF9ESVIpL01vZHVsZXMvd2ViYXVkaW8v
T2ZmbGluZUF1ZGlvQ29udGV4dC5pZGwKICQoUFJPSkVDVF9ESVIpL01vZHVsZXMvd2ViYXVkaW8v
T3NjaWxsYXRvck5vZGUuaWRsCiAkKFBST0pFQ1RfRElSKS9Nb2R1bGVzL3dlYmF1ZGlvL1Bhbm5l
ck5vZGUuaWRsCiskKFBST0pFQ1RfRElSKS9Nb2R1bGVzL3dlYmF1ZGlvL1Bhbm5pbmdNb2RlbFR5
cGUuaWRsCiAkKFBST0pFQ1RfRElSKS9Nb2R1bGVzL3dlYmF1ZGlvL1BlcmlvZGljV2F2ZS5pZGwK
ICQoUFJPSkVDVF9ESVIpL01vZHVsZXMvd2ViYXVkaW8vU2NyaXB0UHJvY2Vzc29yTm9kZS5pZGwK
ICQoUFJPSkVDVF9ESVIpL01vZHVsZXMvd2ViYXVkaW8vV2F2ZVNoYXBlck5vZGUuaWRsCiskKFBS
T0pFQ1RfRElSKS9Nb2R1bGVzL3dlYmF1ZGlvL1dlYktpdEF1ZGlvQ29udGV4dC5pZGwKKyQoUFJP
SkVDVF9ESVIpL01vZHVsZXMvd2ViYXVkaW8vV2ViS2l0QXVkaW9QYW5uZXJOb2RlLmlkbAorJChQ
Uk9KRUNUX0RJUikvTW9kdWxlcy93ZWJhdWRpby9XZWJLaXRPZmZsaW5lQXVkaW9Db250ZXh0Lmlk
bAogJChQUk9KRUNUX0RJUikvTW9kdWxlcy93ZWJhdXRobi9BdHRlc3RhdGlvbkNvbnZleWFuY2VQ
cmVmZXJlbmNlLmlkbAogJChQUk9KRUNUX0RJUikvTW9kdWxlcy93ZWJhdXRobi9BdXRoZW50aWNh
dGlvbkV4dGVuc2lvbnNDbGllbnRJbnB1dHMuaWRsCiAkKFBST0pFQ1RfRElSKS9Nb2R1bGVzL3dl
YmF1dGhuL0F1dGhlbnRpY2F0aW9uRXh0ZW5zaW9uc0NsaWVudE91dHB1dHMuaWRsCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlzdCBiL1Nv
dXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0CmluZGV4IGExNDMz
NjI1MTQwMmY2ODM2ZWM4ODA0OGYzZTBjYmQ5MTQyNmIwMTcuLmNiYzY0OGFmZjg3MmUxN2M4YWVi
MmYzZGM2ZTliYzZiNzhjMDQ0OTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRT
b3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0CisrKyBiL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3Vy
Y2VzLW91dHB1dC54Y2ZpbGVsaXN0CkBAIC0xNTUsNiArMTU1LDggQEAgJChCVUlMVF9QUk9EVUNU
U19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNBdWRpb0NvbmZpZ3VyYXRpb24uY3BwCiAk
KEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0F1ZGlvQ29uZmln
dXJhdGlvbi5oCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9K
U0F1ZGlvQ29udGV4dC5jcHAKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9X
ZWJDb3JlL0pTQXVkaW9Db250ZXh0LmgKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291
cmNlcy9XZWJDb3JlL0pTQXVkaW9Db250ZXh0U3RhdGUuY3BwCiskKEJVSUxUX1BST0RVQ1RTX0RJ
UikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0F1ZGlvQ29udGV4dFN0YXRlLmgKICQoQlVJTFRf
UFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTQXVkaW9EZXN0aW5hdGlvbk5v
ZGUuY3BwCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0F1
ZGlvRGVzdGluYXRpb25Ob2RlLmgKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNl
cy9XZWJDb3JlL0pTQXVkaW9MaXN0ZW5lci5jcHAKQEAgLTQ4Niw2ICs0ODgsOCBAQCAkKEJVSUxU
X1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0RldmljZU9yaWVudGF0aW9u
T3JNb3Rpb25FdmVudC5jcAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dl
YkNvcmUvSlNEZXZpY2VPcmllbnRhdGlvbk9yTW90aW9uRXZlbnQuaAogJChCVUlMVF9QUk9EVUNU
U19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNEZXZpY2VPcmllbnRhdGlvbk9yTW90aW9u
UGVybWlzc2lvblN0YXRlLmNwcAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2Vz
L1dlYkNvcmUvSlNEZXZpY2VPcmllbnRhdGlvbk9yTW90aW9uUGVybWlzc2lvblN0YXRlLmgKKyQo
QlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTRGlzdGFuY2VNb2Rl
bFR5cGUuY3BwCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9K
U0Rpc3RhbmNlTW9kZWxUeXBlLmgKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNl
cy9XZWJDb3JlL0pTRG9jdW1lbnQuY3BwCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNv
dXJjZXMvV2ViQ29yZS9KU0RvY3VtZW50LmgKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVk
U291cmNlcy9XZWJDb3JlL0pTRG9jdW1lbnRBbmRFbGVtZW50RXZlbnRIYW5kbGVycy5jcHAKQEAg
LTEyMjQsNiArMTIyOCw4IEBAICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9X
ZWJDb3JlL0pTUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUuY3BwCiAkKEJVSUxUX1BST0RVQ1RTX0RJ
UikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU1BhaW50V29ya2xldEdsb2JhbFNjb3BlLmgKICQo
QlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTUGFubmVyTm9kZS5j
cHAKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTUGFubmVy
Tm9kZS5oCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU1Bh
bm5pbmdNb2RlbFR5cGUuY3BwCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMv
V2ViQ29yZS9KU1Bhbm5pbmdNb2RlbFR5cGUuaAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2
ZWRTb3VyY2VzL1dlYkNvcmUvSlNQYXJlbnROb2RlLmNwcAogJChCVUlMVF9QUk9EVUNUU19ESVIp
L0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNQYXJlbnROb2RlLmgKICQoQlVJTFRfUFJPRFVDVFNf
RElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTUGF0aDJELmNwcApAQCAtMjA3OCw2ICsyMDg0
LDEwIEBAICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTV2Vi
R1BVVGV4dHVyZVZpZXcuY3BwCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMv
V2ViQ29yZS9KU1dlYkdQVVRleHR1cmVWaWV3LmgKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJp
dmVkU291cmNlcy9XZWJDb3JlL0pTV2ViS2l0QW5pbWF0aW9uRXZlbnQuY3BwCiAkKEJVSUxUX1BS
T0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU1dlYktpdEFuaW1hdGlvbkV2ZW50
LmgKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTV2ViS2l0
QXVkaW9Db250ZXh0LmNwcAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dl
YkNvcmUvSlNXZWJLaXRBdWRpb0NvbnRleHQuaAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2
ZWRTb3VyY2VzL1dlYkNvcmUvSlNXZWJLaXRBdWRpb1Bhbm5lck5vZGUuY3BwCiskKEJVSUxUX1BS
T0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU1dlYktpdEF1ZGlvUGFubmVyTm9k
ZS5oCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU1dlYktp
dENTU01hdHJpeC5jcHAKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJD
b3JlL0pTV2ViS2l0Q1NTTWF0cml4LmgKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291
cmNlcy9XZWJDb3JlL0pTV2ViS2l0Q1NTVmlld3BvcnRSdWxlLmNwcApAQCAtMjA5NCw2ICsyMTA0
LDggQEAgJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNXZWJL
aXRNZWRpYUtleXMuY3BwCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2Vi
Q29yZS9KU1dlYktpdE1lZGlhS2V5cy5oCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNv
dXJjZXMvV2ViQ29yZS9KU1dlYktpdE5hbWVzcGFjZS5jcHAKICQoQlVJTFRfUFJPRFVDVFNfRElS
KS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTV2ViS2l0TmFtZXNwYWNlLmgKKyQoQlVJTFRfUFJP
RFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTV2ViS2l0T2ZmbGluZUF1ZGlvQ29u
dGV4dC5jcHAKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pT
V2ViS2l0T2ZmbGluZUF1ZGlvQ29udGV4dC5oCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZl
ZFNvdXJjZXMvV2ViQ29yZS9KU1dlYktpdFBsYXliYWNrVGFyZ2V0QXZhaWxhYmlsaXR5RXZlbnQu
Y3BwCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU1dlYktp
dFBsYXliYWNrVGFyZ2V0QXZhaWxhYmlsaXR5RXZlbnQuaAogJChCVUlMVF9QUk9EVUNUU19ESVIp
L0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNXZWJLaXRQb2ludC5jcHAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UgYi9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVk
U291cmNlcy5tYWtlCmluZGV4IGQyNjcwODllMzg3MzdkOTI0Zjk0NjUyOTkwY2FiOTIxM2M5OGJk
MjguLmIyN2M3OWNlNjYzZTJjOGI4ZWE0NjBhZTA4MWViZjFkZGU3MDMzYmEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UKKysrIGIvU291cmNlL1dlYkNvcmUv
RGVyaXZlZFNvdXJjZXMubWFrZQpAQCAtMzgzLDYgKzM4Myw3IEBAIEpTX0JJTkRJTkdfSURMUyA9
IFwKICAgICAkKFdlYkNvcmUpL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9CdWZmZXJDYWxsYmFjay5p
ZGwgXAogICAgICQoV2ViQ29yZSkvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0J1ZmZlclNvdXJjZU5v
ZGUuaWRsIFwKICAgICAkKFdlYkNvcmUpL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0Lmlk
bCBcCisgICAgJChXZWJDb3JlKS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQ29udGV4dFN0YXRlLmlk
bCBcCiAgICAgJChXZWJDb3JlKS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvRGVzdGluYXRpb25Ob2Rl
LmlkbCBcCiAgICAgJChXZWJDb3JlKS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvTGlzdGVuZXIuaWRs
IFwKICAgICAkKFdlYkNvcmUpL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Ob2RlLmlkbCBcCkBAIC0z
OTMsNiArMzk0LDcgQEAgSlNfQklORElOR19JRExTID0gXAogICAgICQoV2ViQ29yZSkvTW9kdWxl
cy93ZWJhdWRpby9DaGFubmVsU3BsaXR0ZXJOb2RlLmlkbCBcCiAgICAgJChXZWJDb3JlKS9Nb2R1
bGVzL3dlYmF1ZGlvL0NvbnZvbHZlck5vZGUuaWRsIFwKICAgICAkKFdlYkNvcmUpL01vZHVsZXMv
d2ViYXVkaW8vRGVsYXlOb2RlLmlkbCBcCisgICAgJChXZWJDb3JlKS9Nb2R1bGVzL3dlYmF1ZGlv
L0Rpc3RhbmNlTW9kZWxUeXBlLmlkbCBcCiAgICAgJChXZWJDb3JlKS9Nb2R1bGVzL3dlYmF1ZGlv
L0R5bmFtaWNzQ29tcHJlc3Nvck5vZGUuaWRsIFwKICAgICAkKFdlYkNvcmUpL01vZHVsZXMvd2Vi
YXVkaW8vR2Fpbk5vZGUuaWRsIFwKICAgICAkKFdlYkNvcmUpL01vZHVsZXMvd2ViYXVkaW8vTWVk
aWFFbGVtZW50QXVkaW9Tb3VyY2VOb2RlLmlkbCBcCkBAIC00MDIsOSArNDA0LDEzIEBAIEpTX0JJ
TkRJTkdfSURMUyA9IFwKICAgICAkKFdlYkNvcmUpL01vZHVsZXMvd2ViYXVkaW8vT2ZmbGluZUF1
ZGlvQ29udGV4dC5pZGwgXAogICAgICQoV2ViQ29yZSkvTW9kdWxlcy93ZWJhdWRpby9Pc2NpbGxh
dG9yTm9kZS5pZGwgXAogICAgICQoV2ViQ29yZSkvTW9kdWxlcy93ZWJhdWRpby9QYW5uZXJOb2Rl
LmlkbCBcCisgICAgJChXZWJDb3JlKS9Nb2R1bGVzL3dlYmF1ZGlvL1Bhbm5pbmdNb2RlbFR5cGUu
aWRsIFwKICAgICAkKFdlYkNvcmUpL01vZHVsZXMvd2ViYXVkaW8vUGVyaW9kaWNXYXZlLmlkbCBc
CiAgICAgJChXZWJDb3JlKS9Nb2R1bGVzL3dlYmF1ZGlvL1NjcmlwdFByb2Nlc3Nvck5vZGUuaWRs
IFwKICAgICAkKFdlYkNvcmUpL01vZHVsZXMvd2ViYXVkaW8vV2F2ZVNoYXBlck5vZGUuaWRsIFwK
KyAgICAkKFdlYkNvcmUpL01vZHVsZXMvd2ViYXVkaW8vV2ViS2l0QXVkaW9Db250ZXh0LmlkbCBc
CisgICAgJChXZWJDb3JlKS9Nb2R1bGVzL3dlYmF1ZGlvL1dlYktpdEF1ZGlvUGFubmVyTm9kZS5p
ZGwgXAorICAgICQoV2ViQ29yZSkvTW9kdWxlcy93ZWJhdWRpby9XZWJLaXRPZmZsaW5lQXVkaW9D
b250ZXh0LmlkbCBcCiAgICAgJChXZWJDb3JlKS9Nb2R1bGVzL3dlYmF1dGhuL0F0dGVzdGF0aW9u
Q29udmV5YW5jZVByZWZlcmVuY2UuaWRsIFwKICAgICAkKFdlYkNvcmUpL01vZHVsZXMvd2ViYXV0
aG4vQXV0aGVudGljYXRpb25FeHRlbnNpb25zQ2xpZW50SW5wdXRzLmlkbCBcCiAgICAgJChXZWJD
b3JlKS9Nb2R1bGVzL3dlYmF1dGhuL0F1dGhlbnRpY2F0aW9uRXh0ZW5zaW9uc0NsaWVudE91dHB1
dHMuaWRsIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQW5h
bHlzZXJOb2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQW5hbHlzZXJO
b2RlLmNwcAppbmRleCAxNzk4NzA3MDFmODUzMzg0OGI4YTQ5YTc1ZDNhZjEzNjE1NGIwOGQyLi4y
MTVkZTMyMWU5YTE2YzMyNDZjYTQ5NDc0ZDllYWUyNTIyNTM4MjAxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0FuYWx5c2VyTm9kZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BbmFseXNlck5vZGUuY3BwCkBAIC0zNiw3ICszNiw3
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogV1RGX01BS0VfSVNPX0FMTE9DQVRFRF9JTVBMKEFu
YWx5c2VyTm9kZSk7CiAKLUFuYWx5c2VyTm9kZTo6QW5hbHlzZXJOb2RlKEF1ZGlvQ29udGV4dCYg
Y29udGV4dCwgZmxvYXQgc2FtcGxlUmF0ZSkKK0FuYWx5c2VyTm9kZTo6QW5hbHlzZXJOb2RlKEF1
ZGlvQ29udGV4dEJhc2UmIGNvbnRleHQsIGZsb2F0IHNhbXBsZVJhdGUpCiAgICAgOiBBdWRpb0Jh
c2ljSW5zcGVjdG9yTm9kZShjb250ZXh0LCBzYW1wbGVSYXRlLCAyKQogewogICAgIHNldE5vZGVU
eXBlKE5vZGVUeXBlQW5hbHlzZXIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJhdWRpby9BbmFseXNlck5vZGUuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVk
aW8vQW5hbHlzZXJOb2RlLmgKaW5kZXggZGExYjVlODljYTI4ZGVlY2MzOWMyZjM2Njk3ZmQ5MGEw
YjNlMGY3ZS4uYTQwMjNhMzBkZWEwZGYyYmM5YTdiYjA0YmVkYWQ4YTMwZGI5ZGNlNSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BbmFseXNlck5vZGUuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0FuYWx5c2VyTm9kZS5oCkBAIC0zMiw3
ICszMiw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIEFuYWx5c2VyTm9kZSBmaW5hbCA6
IHB1YmxpYyBBdWRpb0Jhc2ljSW5zcGVjdG9yTm9kZSB7CiAgICAgV1RGX01BS0VfSVNPX0FMTE9D
QVRFRChBbmFseXNlck5vZGUpOwogcHVibGljOgotICAgIHN0YXRpYyBSZWY8QW5hbHlzZXJOb2Rl
PiBjcmVhdGUoQXVkaW9Db250ZXh0JiBjb250ZXh0LCBmbG9hdCBzYW1wbGVSYXRlKQorICAgIHN0
YXRpYyBSZWY8QW5hbHlzZXJOb2RlPiBjcmVhdGUoQXVkaW9Db250ZXh0QmFzZSYgY29udGV4dCwg
ZmxvYXQgc2FtcGxlUmF0ZSkKICAgICB7CiAgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEFu
YWx5c2VyTm9kZShjb250ZXh0LCBzYW1wbGVSYXRlKSk7CiAgICAgfQpAQCAtNTgsNyArNTgsNyBA
QCBwdWJsaWM6CiAgICAgdm9pZCBnZXRCeXRlVGltZURvbWFpbkRhdGEoY29uc3QgUmVmUHRyPEpT
Qzo6VWludDhBcnJheT4mIGFycmF5KSB7IG1fYW5hbHlzZXIuZ2V0Qnl0ZVRpbWVEb21haW5EYXRh
KGFycmF5LmdldCgpKTsgfQogCiBwcml2YXRlOgotICAgIEFuYWx5c2VyTm9kZShBdWRpb0NvbnRl
eHQmLCBmbG9hdCBzYW1wbGVSYXRlKTsKKyAgICBBbmFseXNlck5vZGUoQXVkaW9Db250ZXh0QmFz
ZSYsIGZsb2F0IHNhbXBsZVJhdGUpOwogCiAgICAgdm9pZCBwcm9jZXNzKHNpemVfdCBmcmFtZXNU
b1Byb2Nlc3MpIGZpbmFsOwogICAgIHZvaWQgcmVzZXQoKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9CYXNpY0luc3BlY3Rvck5vZGUuY3Bw
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0Jhc2ljSW5zcGVjdG9yTm9k
ZS5jcHAKaW5kZXggMGZiNTViMDhmMGMxYTJiZTJkMDcwYzRlMGQ4ZDhmNDY3ZTM0NmE3Mi4uMTQ1
M2RhY2FmZGExZDM4YTM0Y2ZkMWI2YjkzY2I3ODMzMjM1ZDk4OCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0Jhc2ljSW5zcGVjdG9yTm9kZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0Jhc2ljSW5zcGVjdG9yTm9k
ZS5jcHAKQEAgLTM2LDcgKzM2LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBXVEZfTUFLRV9J
U09fQUxMT0NBVEVEX0lNUEwoQXVkaW9CYXNpY0luc3BlY3Rvck5vZGUpOwogCi1BdWRpb0Jhc2lj
SW5zcGVjdG9yTm9kZTo6QXVkaW9CYXNpY0luc3BlY3Rvck5vZGUoQXVkaW9Db250ZXh0JiBjb250
ZXh0LCBmbG9hdCBzYW1wbGVSYXRlLCB1bnNpZ25lZCBvdXRwdXRDaGFubmVsQ291bnQpCitBdWRp
b0Jhc2ljSW5zcGVjdG9yTm9kZTo6QXVkaW9CYXNpY0luc3BlY3Rvck5vZGUoQXVkaW9Db250ZXh0
QmFzZSYgY29udGV4dCwgZmxvYXQgc2FtcGxlUmF0ZSwgdW5zaWduZWQgb3V0cHV0Q2hhbm5lbENv
dW50KQogICAgIDogQXVkaW9Ob2RlKGNvbnRleHQsIHNhbXBsZVJhdGUpCiB7CiAgICAgc2V0Tm9k
ZVR5cGUoTm9kZVR5cGVCYXNpY0luc3BlY3Rvcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQmFzaWNJbnNwZWN0b3JOb2RlLmggYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQmFzaWNJbnNwZWN0b3JOb2RlLmgKaW5kZXggODBl
MDhkMjk2MTdiMTc3NGM2MGRkMTg3OTNkMTYzMGVmMmFkMDNkYi4uZTc2OWU0NmFlMjFmNDczNDFj
MjczYzg4NDVjYmUwMjllODEyOGQ2NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJhdWRpby9BdWRpb0Jhc2ljSW5zcGVjdG9yTm9kZS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViYXVkaW8vQXVkaW9CYXNpY0luc3BlY3Rvck5vZGUuaApAQCAtMzQsNyArMzQs
NyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBBdWRpb0Jhc2ljSW5zcGVjdG9yTm9kZSA6
IHB1YmxpYyBBdWRpb05vZGUgewogICAgIFdURl9NQUtFX0lTT19BTExPQ0FURUQoQXVkaW9CYXNp
Y0luc3BlY3Rvck5vZGUpOwogcHVibGljOgotICAgIEF1ZGlvQmFzaWNJbnNwZWN0b3JOb2RlKEF1
ZGlvQ29udGV4dCYsIGZsb2F0IHNhbXBsZVJhdGUsIHVuc2lnbmVkIG91dHB1dENoYW5uZWxDb3Vu
dCk7CisgICAgQXVkaW9CYXNpY0luc3BlY3Rvck5vZGUoQXVkaW9Db250ZXh0QmFzZSYsIGZsb2F0
IHNhbXBsZVJhdGUsIHVuc2lnbmVkIG91dHB1dENoYW5uZWxDb3VudCk7CiAKIHByaXZhdGU6CiAg
ICAgdm9pZCBwdWxsSW5wdXRzKHNpemVfdCBmcmFtZXNUb1Byb2Nlc3MpIG92ZXJyaWRlOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0Jhc2ljUHJvY2Vz
c29yTm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQmFzaWNQ
cm9jZXNzb3JOb2RlLmNwcAppbmRleCAwYjlmMWNlZDg3NDViNWQ5OThkYzM4ZDYzNmU3OTBhYmZi
ZTZlOTgzLi5mN2I3OTZiZTU1NTQ1MzZhNmE1NDJjNzVlMzYwNTUyNWY5NDY4YTI5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQmFzaWNQcm9jZXNzb3JO
b2RlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQmFzaWNQ
cm9jZXNzb3JOb2RlLmNwcApAQCAtMzksNyArMzksNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
IFdURl9NQUtFX0lTT19BTExPQ0FURURfSU1QTChBdWRpb0Jhc2ljUHJvY2Vzc29yTm9kZSk7CiAK
LUF1ZGlvQmFzaWNQcm9jZXNzb3JOb2RlOjpBdWRpb0Jhc2ljUHJvY2Vzc29yTm9kZShBdWRpb0Nv
bnRleHQmIGNvbnRleHQsIGZsb2F0IHNhbXBsZVJhdGUpCitBdWRpb0Jhc2ljUHJvY2Vzc29yTm9k
ZTo6QXVkaW9CYXNpY1Byb2Nlc3Nvck5vZGUoQXVkaW9Db250ZXh0QmFzZSYgY29udGV4dCwgZmxv
YXQgc2FtcGxlUmF0ZSkKICAgICA6IEF1ZGlvTm9kZShjb250ZXh0LCBzYW1wbGVSYXRlKQogewog
ICAgIGFkZElucHV0KG1ha2VVbmlxdWU8QXVkaW9Ob2RlSW5wdXQ+KHRoaXMpKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9CYXNpY1Byb2Nlc3Nvck5v
ZGUuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9CYXNpY1Byb2Nlc3Nv
ck5vZGUuaAppbmRleCA4MmNmZmRhNTlmMjc4MjBkYjBkM2Q1NDYwMWQ2YWNjNGFjNzZmMTYxLi5l
MTYzNzNiZjAyOTc2YTQ1YWQ4MjVlMmU2M2E4MzdhZmY0ZjkyMTlhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQmFzaWNQcm9jZXNzb3JOb2RlLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0Jhc2ljUHJvY2Vzc29yTm9k
ZS5oCkBAIC0zNyw3ICszNyw3IEBAIGNsYXNzIEF1ZGlvUHJvY2Vzc29yOwogY2xhc3MgQXVkaW9C
YXNpY1Byb2Nlc3Nvck5vZGUgOiBwdWJsaWMgQXVkaW9Ob2RlIHsKICAgICBXVEZfTUFLRV9JU09f
QUxMT0NBVEVEKEF1ZGlvQmFzaWNQcm9jZXNzb3JOb2RlKTsKIHB1YmxpYzoKLSAgICBBdWRpb0Jh
c2ljUHJvY2Vzc29yTm9kZShBdWRpb0NvbnRleHQmLCBmbG9hdCBzYW1wbGVSYXRlKTsKKyAgICBB
dWRpb0Jhc2ljUHJvY2Vzc29yTm9kZShBdWRpb0NvbnRleHRCYXNlJiwgZmxvYXQgc2FtcGxlUmF0
ZSk7CiAKICAgICAvLyBBdWRpb05vZGUKICAgICB2b2lkIHByb2Nlc3Moc2l6ZV90IGZyYW1lc1Rv
UHJvY2Vzcykgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmF1ZGlvL0F1ZGlvQnVmZmVyU291cmNlTm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmF1ZGlvL0F1ZGlvQnVmZmVyU291cmNlTm9kZS5jcHAKaW5kZXggYzM2NjFkZTU3ZDczOWVj
NDcwZDZmYWQ5ZjU0MWU0OTVlYzk3NmRlZi4uMGMxYmE0ZTk0YTk4Y2JmN2QxOWJkYzNiMjNhNjJm
YTk0NmYwOTUzMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9B
dWRpb0J1ZmZlclNvdXJjZU5vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
YXVkaW8vQXVkaW9CdWZmZXJTb3VyY2VOb2RlLmNwcApAQCAtNDksMTIgKzQ5LDEyIEBAIGNvbnN0
IGRvdWJsZSBEZWZhdWx0R3JhaW5EdXJhdGlvbiA9IDAuMDIwOyAvLyAyMG1zCiAvLyB0byBtaW5p
bWl6ZSBsaW5lYXIgaW50ZXJwb2xhdGlvbiBhbGlhc2luZy4KIGNvbnN0IGRvdWJsZSBNYXhSYXRl
ID0gMTAyNDsKIAotUmVmPEF1ZGlvQnVmZmVyU291cmNlTm9kZT4gQXVkaW9CdWZmZXJTb3VyY2VO
b2RlOjpjcmVhdGUoQXVkaW9Db250ZXh0JiBjb250ZXh0LCBmbG9hdCBzYW1wbGVSYXRlKQorUmVm
PEF1ZGlvQnVmZmVyU291cmNlTm9kZT4gQXVkaW9CdWZmZXJTb3VyY2VOb2RlOjpjcmVhdGUoQXVk
aW9Db250ZXh0QmFzZSYgY29udGV4dCwgZmxvYXQgc2FtcGxlUmF0ZSkKIHsKICAgICByZXR1cm4g
YWRvcHRSZWYoKm5ldyBBdWRpb0J1ZmZlclNvdXJjZU5vZGUoY29udGV4dCwgc2FtcGxlUmF0ZSkp
OwogfQogCi1BdWRpb0J1ZmZlclNvdXJjZU5vZGU6OkF1ZGlvQnVmZmVyU291cmNlTm9kZShBdWRp
b0NvbnRleHQmIGNvbnRleHQsIGZsb2F0IHNhbXBsZVJhdGUpCitBdWRpb0J1ZmZlclNvdXJjZU5v
ZGU6OkF1ZGlvQnVmZmVyU291cmNlTm9kZShBdWRpb0NvbnRleHRCYXNlJiBjb250ZXh0LCBmbG9h
dCBzYW1wbGVSYXRlKQogICAgIDogQXVkaW9TY2hlZHVsZWRTb3VyY2VOb2RlKGNvbnRleHQsIHNh
bXBsZVJhdGUpCiAgICAgLCBtX2J1ZmZlcihudWxscHRyKQogICAgICwgbV9pc0xvb3BpbmcoZmFs
c2UpCkBAIC00MTMsNyArNDEzLDcgQEAgdm9pZCBBdWRpb0J1ZmZlclNvdXJjZU5vZGU6OnNldEJ1
ZmZlcihSZWZQdHI8QXVkaW9CdWZmZXI+JiYgYnVmZmVyKQogICAgIERFQlVHX0xPRyhMT0dJREVO
VElGSUVSKTsKIAogICAgIC8vIFRoZSBjb250ZXh0IG11c3QgYmUgbG9ja2VkIHNpbmNlIGNoYW5n
aW5nIHRoZSBidWZmZXIgY2FuIHJlLWNvbmZpZ3VyZSB0aGUgbnVtYmVyIG9mIGNoYW5uZWxzIHRo
YXQgYXJlIG91dHB1dC4KLSAgICBBdWRpb0NvbnRleHQ6OkF1dG9Mb2NrZXIgY29udGV4dExvY2tl
cihjb250ZXh0KCkpOworICAgIEF1ZGlvQ29udGV4dEJhc2U6OkF1dG9Mb2NrZXIgY29udGV4dExv
Y2tlcihjb250ZXh0KCkpOwogICAgIAogICAgIC8vIFRoaXMgc3luY2hyb25pemVzIHdpdGggcHJv
Y2VzcygpLgogICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sobV9wcm9jZXNzTXV0ZXgpOwpAQCAt
NTU3LDcgKzU1Nyw3IEBAIGJvb2wgQXVkaW9CdWZmZXJTb3VyY2VOb2RlOjpwcm9wYWdhdGVzU2ls
ZW5jZSgpIGNvbnN0CiAgICAgcmV0dXJuICFpc1BsYXlpbmdPclNjaGVkdWxlZCgpIHx8IGhhc0Zp
bmlzaGVkKCkgfHwgIW1fYnVmZmVyOwogfQogCi12b2lkIEF1ZGlvQnVmZmVyU291cmNlTm9kZTo6
c2V0UGFubmVyTm9kZShQYW5uZXJOb2RlKiBwYW5uZXJOb2RlKQordm9pZCBBdWRpb0J1ZmZlclNv
dXJjZU5vZGU6OnNldFBhbm5lck5vZGUoUGFubmVyTm9kZUJhc2UqIHBhbm5lck5vZGUpCiB7CiAg
ICAgaWYgKG1fcGFubmVyTm9kZSAhPSBwYW5uZXJOb2RlICYmICFoYXNGaW5pc2hlZCgpKSB7CiAg
ICAgICAgIGlmIChwYW5uZXJOb2RlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJhdWRpby9BdWRpb0J1ZmZlclNvdXJjZU5vZGUuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViYXVkaW8vQXVkaW9CdWZmZXJTb3VyY2VOb2RlLmgKaW5kZXggNTQ4YjI2ZTdmYTc1MTRk
ZTlhZDY0ZDNlMzUzNmI5ZjM0YmVkYTlmYi4uNjAxMTMxMTk5YTRmYTkyZDczMGM1MGQ1YWEyNjAw
MzhmNmZkOTZlYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9B
dWRpb0J1ZmZlclNvdXJjZU5vZGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1
ZGlvL0F1ZGlvQnVmZmVyU291cmNlTm9kZS5oCkBAIC0zMSw3ICszMSw3IEBACiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKIGNsYXNzIEF1ZGlvQnVmZmVyOwotY2xhc3MgUGFubmVyTm9kZTsKK2NsYXNz
IFBhbm5lck5vZGVCYXNlOwogCiAvLyBBdWRpb0J1ZmZlclNvdXJjZU5vZGUgaXMgYW4gQXVkaW9O
b2RlIHJlcHJlc2VudGluZyBhbiBhdWRpbyBzb3VyY2UgZnJvbSBhbiBpbi1tZW1vcnkgYXVkaW8g
YXNzZXQgcmVwcmVzZW50ZWQgYnkgYW4gQXVkaW9CdWZmZXIuCiAvLyBJdCBnZW5lcmFsbHkgd2ls
bCBiZSB1c2VkIGZvciBzaG9ydCBzb3VuZHMgd2hpY2ggcmVxdWlyZSBhIGhpZ2ggZGVncmVlIG9m
IHNjaGVkdWxpbmcgZmxleGliaWxpdHkgKGNhbiBwbGF5YmFjayBpbiByaHl0aG1pY2FsbHkgcGVy
ZmVjdCB3YXlzKS4KQEAgLTM5LDcgKzM5LDcgQEAgY2xhc3MgUGFubmVyTm9kZTsKIGNsYXNzIEF1
ZGlvQnVmZmVyU291cmNlTm9kZSBmaW5hbCA6IHB1YmxpYyBBdWRpb1NjaGVkdWxlZFNvdXJjZU5v
ZGUgewogICAgIFdURl9NQUtFX0lTT19BTExPQ0FURUQoQXVkaW9CdWZmZXJTb3VyY2VOb2RlKTsK
IHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPEF1ZGlvQnVmZmVyU291cmNlTm9kZT4gY3JlYXRlKEF1
ZGlvQ29udGV4dCYsIGZsb2F0IHNhbXBsZVJhdGUpOworICAgIHN0YXRpYyBSZWY8QXVkaW9CdWZm
ZXJTb3VyY2VOb2RlPiBjcmVhdGUoQXVkaW9Db250ZXh0QmFzZSYsIGZsb2F0IHNhbXBsZVJhdGUp
OwogCiAgICAgdmlydHVhbCB+QXVkaW9CdWZmZXJTb3VyY2VOb2RlKCk7CiAKQEAgLTc5LDcgKzc5
LDcgQEAgcHVibGljOgogICAgIEF1ZGlvUGFyYW0qIHBsYXliYWNrUmF0ZSgpIHsgcmV0dXJuIG1f
cGxheWJhY2tSYXRlLmdldCgpOyB9CiAKICAgICAvLyBJZiBhIHBhbm5lciBub2RlIGlzIHNldCwg
dGhlbiB3ZSBjYW4gaW5jb3Jwb3JhdGUgZG9wcGxlciBzaGlmdCBpbnRvIHRoZSBwbGF5YmFjayBw
aXRjaCByYXRlLgotICAgIHZvaWQgc2V0UGFubmVyTm9kZShQYW5uZXJOb2RlKik7CisgICAgdm9p
ZCBzZXRQYW5uZXJOb2RlKFBhbm5lck5vZGVCYXNlKik7CiAgICAgdm9pZCBjbGVhclBhbm5lck5v
ZGUoKTsKIAogICAgIC8vIElmIHdlIGFyZSBubyBsb25nZXIgcGxheWluZywgcHJvcG9nYXRlIHNp
bGVuY2UgYWhlYWQgdG8gZG93bnN0cmVhbSBub2Rlcy4KQEAgLTkxLDcgKzkxLDcgQEAgcHVibGlj
OgogICAgIGNvbnN0IGNoYXIqIGFjdGl2ZURPTU9iamVjdE5hbWUoKSBjb25zdCBvdmVycmlkZSB7
IHJldHVybiAiQXVkaW9CdWZmZXJTb3VyY2VOb2RlIjsgfQogCiBwcml2YXRlOgotICAgIEF1ZGlv
QnVmZmVyU291cmNlTm9kZShBdWRpb0NvbnRleHQmLCBmbG9hdCBzYW1wbGVSYXRlKTsKKyAgICBB
dWRpb0J1ZmZlclNvdXJjZU5vZGUoQXVkaW9Db250ZXh0QmFzZSYsIGZsb2F0IHNhbXBsZVJhdGUp
OwogCiAgICAgZG91YmxlIHRhaWxUaW1lKCkgY29uc3QgZmluYWwgeyByZXR1cm4gMDsgfQogICAg
IGRvdWJsZSBsYXRlbmN5VGltZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIDA7IH0KQEAgLTE0NSw3
ICsxNDUsNyBAQCBwcml2YXRlOgogCiAgICAgLy8gV2Ugb3B0aW9uYWxseSBrZWVwIHRyYWNrIG9m
IGEgcGFubmVyIG5vZGUgd2hpY2ggaGFzIGEgZG9wcGxlciBzaGlmdCB0aGF0IGlzIGluY29ycG9y
YXRlZCBpbnRvCiAgICAgLy8gdGhlIHBpdGNoIHJhdGUuIFdlIG1hbnVhbGx5IG1hbmFnZSByZWYt
Y291bnRpbmcgYmVjYXVzZSB3ZSB3YW50IHRvIHVzZSBSZWZUeXBlQ29ubmVjdGlvbi4KLSAgICBQ
YW5uZXJOb2RlKiBtX3Bhbm5lck5vZGU7CisgICAgUGFubmVyTm9kZUJhc2UqIG1fcGFubmVyTm9k
ZTsKIAogICAgIC8vIFRoaXMgc3luY2hyb25pemVzIHByb2Nlc3MoKSB3aXRoIHNldEJ1ZmZlcigp
IHdoaWNoIGNhbiBjYXVzZSBkeW5hbWljIGNoYW5uZWwgY291bnQgY2hhbmdlcy4KICAgICBtdXRh
YmxlIExvY2sgbV9wcm9jZXNzTXV0ZXg7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmF1ZGlvL0F1ZGlvQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmF1ZGlvL0F1ZGlvQ29udGV4dC5jcHAKaW5kZXggMzgyZGM3Y2YwY2QwZjVkNWQzMDI3NmU2M2Q5
MmRiZTBiNTM3ZWE1OS4uMjZlMWZjN2NjYWIxNDM0ZDA1YWYxYWJhYTFjNDhlMDAyZTJiMzFjMyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0NvbnRleHQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0LmNw
cApAQCAtMTA3LDYgKzEwNyw3IEBAIGNvbnN0IHVuc2lnbmVkIE1heFBlcmlvZGljV2F2ZUxlbmd0
aCA9IDQwOTY7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorV1RGX01BS0VfSVNPX0FMTE9DQVRF
RF9JTVBMKEF1ZGlvQ29udGV4dEJhc2UpOwogV1RGX01BS0VfSVNPX0FMTE9DQVRFRF9JTVBMKEF1
ZGlvQ29udGV4dCk7CiAKICNkZWZpbmUgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChmbXQsIC4uLikg
UkVMRUFTRV9MT0dfSUYoZG9jdW1lbnQoKSAmJiBkb2N1bWVudCgpLT5wYWdlKCkgJiYgZG9jdW1l
bnQoKS0+cGFnZSgpLT5pc0Fsd2F5c09uTG9nZ2luZ0FsbG93ZWQoKSwgTWVkaWEsICIlcCAtIEF1
ZGlvQ29udGV4dDo6IiBmbXQsIHRoaXMsICMjX19WQV9BUkdTX18pCkBAIC0xMzcsOSArMTM4LDE0
IEBAIEV4Y2VwdGlvbk9yPFJlZjxBdWRpb0NvbnRleHQ+PiBBdWRpb0NvbnRleHQ6OmNyZWF0ZShE
b2N1bWVudCYgZG9jdW1lbnQpCiAgICAgcmV0dXJuIGF1ZGlvQ29udGV4dDsKIH0KIAorQXVkaW9D
b250ZXh0QmFzZTo6QXVkaW9Db250ZXh0QmFzZShEb2N1bWVudCYgZG9jdW1lbnQpCisgICAgOiBB
Y3RpdmVET01PYmplY3QoZG9jdW1lbnQpCit7Cit9CisKIC8vIENvbnN0cnVjdG9yIGZvciByZW5k
ZXJpbmcgdG8gdGhlIGF1ZGlvIGhhcmR3YXJlLgogQXVkaW9Db250ZXh0OjpBdWRpb0NvbnRleHQo
RG9jdW1lbnQmIGRvY3VtZW50KQotICAgIDogQWN0aXZlRE9NT2JqZWN0KGRvY3VtZW50KQorICAg
IDogQXVkaW9Db250ZXh0QmFzZShkb2N1bWVudCkKICNpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQK
ICAgICAsIG1fbG9nZ2VyKGRvY3VtZW50LmxvZ2dlcigpKQogICAgICwgbV9sb2dJZGVudGlmaWVy
KHVuaXF1ZUxvZ0lkZW50aWZpZXIoKSkKQEAgLTE2NCw3ICsxNzAsNyBAQCBBdWRpb0NvbnRleHQ6
OkF1ZGlvQ29udGV4dChEb2N1bWVudCYgZG9jdW1lbnQpCiAKIC8vIENvbnN0cnVjdG9yIGZvciBv
ZmZsaW5lIChub24tcmVhbHRpbWUpIHJlbmRlcmluZy4KIEF1ZGlvQ29udGV4dDo6QXVkaW9Db250
ZXh0KERvY3VtZW50JiBkb2N1bWVudCwgQXVkaW9CdWZmZXIqIHJlbmRlclRhcmdldCkKLSAgICA6
IEFjdGl2ZURPTU9iamVjdChkb2N1bWVudCkKKyAgICA6IEF1ZGlvQ29udGV4dEJhc2UoZG9jdW1l
bnQpCiAjaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECiAgICAgLCBtX2xvZ2dlcihkb2N1bWVudC5s
b2dnZXIoKSkKICAgICAsIG1fbG9nSWRlbnRpZmllcih1bmlxdWVMb2dJZGVudGlmaWVyKCkpCkBA
IC0zNjYsNyArMzcyLDcgQEAgY29uc3QgY2hhciogQXVkaW9Db250ZXh0OjphY3RpdmVET01PYmpl
Y3ROYW1lKCkgY29uc3QKICAgICByZXR1cm4gIkF1ZGlvQ29udGV4dCI7CiB9CiAKLURvY3VtZW50
KiBBdWRpb0NvbnRleHQ6OmRvY3VtZW50KCkgY29uc3QKK0RvY3VtZW50KiBBdWRpb0NvbnRleHRC
YXNlOjpkb2N1bWVudCgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIGRvd25jYXN0PERvY3VtZW50Piht
X3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQpOwogfQpAQCAtMTAwMiw5ICsxMDA4LDE0IEBAIHZvaWQg
QXVkaW9Db250ZXh0OjpyZW1vdmVNYXJrZWRTdW1taW5nSnVuY3Rpb24oQXVkaW9TdW1taW5nSnVu
Y3Rpb24qIHN1bW1pbmdKdW5jCiAgICAgbV9kaXJ0eVN1bW1pbmdKdW5jdGlvbnMucmVtb3ZlKHN1
bW1pbmdKdW5jdGlvbik7CiB9CiAKK0V2ZW50VGFyZ2V0SW50ZXJmYWNlIEF1ZGlvQ29udGV4dDo6
ZXZlbnRUYXJnZXRJbnRlcmZhY2UoKSBjb25zdAoreworICAgIHJldHVybiBBdWRpb0NvbnRleHRF
dmVudFRhcmdldEludGVyZmFjZVR5cGU7Cit9CisKIHZvaWQgQXVkaW9Db250ZXh0OjptYXJrQXVk
aW9Ob2RlT3V0cHV0RGlydHkoQXVkaW9Ob2RlT3V0cHV0KiBvdXRwdXQpCiB7Ci0gICAgQVNTRVJU
KGlzR3JhcGhPd25lcigpKTsgICAgCisgICAgQVNTRVJUKGlzR3JhcGhPd25lcigpKTsKICAgICBt
X2RpcnR5QXVkaW9Ob2RlT3V0cHV0cy5hZGQob3V0cHV0KTsKIH0KIApAQCAtMTA2OCw3ICsxMDc5
LDcgQEAgdm9pZCBBdWRpb0NvbnRleHQ6OnByb2Nlc3NBdXRvbWF0aWNQdWxsTm9kZXMoc2l6ZV90
IGZyYW1lc1RvUHJvY2VzcykKICAgICAgICAgbm9kZS0+cHJvY2Vzc0lmTmVjZXNzYXJ5KGZyYW1l
c1RvUHJvY2Vzcyk7CiB9CiAKLVNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIEF1ZGlvQ29udGV4dDo6
c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpIGNvbnN0CitTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBB
dWRpb0NvbnRleHRCYXNlOjpzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkgY29uc3QKIHsKICAgICBy
ZXR1cm4gQWN0aXZlRE9NT2JqZWN0OjpzY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7CiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQ29udGV4dC5oIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0NvbnRleHQuaAppbmRleCA4ZTA5
NDM5NGNmZmNjNWRhYThiMGU0ZGM1ODkxMjE5NDQyZTZlMTJlLi41MDU5MjFmZjVlMzVkMjQ5NTMz
ODAyMDNhNDc5NWY2NGNhYzJkNWQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmF1ZGlvL0F1ZGlvQ29udGV4dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
YXVkaW8vQXVkaW9Db250ZXh0LmgKQEAgLTI4LDYgKzI4LDcgQEAKICNpbmNsdWRlICJBY3RpdmVE
T01PYmplY3QuaCIKICNpbmNsdWRlICJBc3luY0F1ZGlvRGVjb2Rlci5oIgogI2luY2x1ZGUgIkF1
ZGlvQnVzLmgiCisjaW5jbHVkZSAiQXVkaW9Db250ZXh0U3RhdGUuaCIKICNpbmNsdWRlICJBdWRp
b0Rlc3RpbmF0aW9uTm9kZS5oIgogI2luY2x1ZGUgIkV2ZW50VGFyZ2V0LmgiCiAjaW5jbHVkZSAi
TWVkaWFDYW5TdGFydExpc3RlbmVyLmgiCkBAIC03OSwyMCArODAsMTI3IEBAIGNsYXNzIFdhdmVT
aGFwZXJOb2RlOwogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBJRExUeXBlPiBjbGFzcyBET01Qcm9taXNl
RGVmZXJyZWQ7CiAKLS8vIEF1ZGlvQ29udGV4dCBpcyB0aGUgY29ybmVyc3RvbmUgb2YgdGhlIHdl
YiBhdWRpbyBBUEkgYW5kIGFsbCBBdWRpb05vZGVzIGFyZSBjcmVhdGVkIGZyb20gaXQuCi0vLyBG
b3IgdGhyZWFkIHNhZmV0eSBiZXR3ZWVuIHRoZSBhdWRpbyB0aHJlYWQgYW5kIHRoZSBtYWluIHRo
cmVhZCwgaXQgaGFzIGEgcmVuZGVyaW5nIGdyYXBoIGxvY2tpbmcgbWVjaGFuaXNtLiAKLQotY2xh
c3MgQXVkaW9Db250ZXh0CitjbGFzcyBBdWRpb0NvbnRleHRCYXNlCiAgICAgOiBwdWJsaWMgQWN0
aXZlRE9NT2JqZWN0CiAgICAgLCBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8QXVkaW9Db250
ZXh0PgogICAgICwgcHVibGljIEV2ZW50VGFyZ2V0V2l0aElubGluZURhdGEKICAgICAsIHB1Ymxp
YyBNZWRpYUNhblN0YXJ0TGlzdGVuZXIKICAgICAsIHB1YmxpYyBNZWRpYVByb2R1Y2VyCi0gICAg
LCBwcml2YXRlIFBsYXRmb3JtTWVkaWFTZXNzaW9uQ2xpZW50Ci0gICAgLCBwcml2YXRlIFZpc2li
aWxpdHlDaGFuZ2VDbGllbnQKICNpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKLSAgICAsIHByaXZh
dGUgTG9nZ2VySGVscGVyCisgICAgLCBwdWJsaWMgTG9nZ2VySGVscGVyCisjZW5kaWYKK3sKKyAg
ICBXVEZfTUFLRV9JU09fQUxMT0NBVEVEKEF1ZGlvQ29udGV4dEJhc2UpOworcHVibGljOgorICAg
IHZpcnR1YWwgfkF1ZGlvQ29udGV4dEJhc2UoKSA9IGRlZmF1bHQ7CisKKyAgICAvLyBSZWNvbmNp
bGUgcmVmL2RlcmVmIHdoaWNoIGFyZSBkZWZpbmVkIGJvdGggaW4gVGhyZWFkU2FmZVJlZkNvdW50
ZWQgYW5kIEV2ZW50VGFyZ2V0LgorICAgIHVzaW5nIFRocmVhZFNhZmVSZWZDb3VudGVkOjpyZWY7
CisgICAgdXNpbmcgVGhyZWFkU2FmZVJlZkNvdW50ZWQ6OmRlcmVmOworCisgICAgRG9jdW1lbnQq
IGRvY3VtZW50KCkgY29uc3Q7CisKKyAgICB2aXJ0dWFsIGJvb2wgaXNJbml0aWFsaXplZCgpIGNv
bnN0ID0gMDsKKworICAgIHZpcnR1YWwgc2l6ZV90IGN1cnJlbnRTYW1wbGVGcmFtZSgpIGNvbnN0
ID0gMDsKKyAgICB2aXJ0dWFsIGZsb2F0IHNhbXBsZVJhdGUoKSBjb25zdCA9IDA7CisgICAgdmly
dHVhbCBkb3VibGUgY3VycmVudFRpbWUoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBib29sIGlz
R3JhcGhPd25lcigpIGNvbnN0ID0gMDsKKworICAgIHZpcnR1YWwgdm9pZCBzZXRBdWRpb1RocmVh
ZChUaHJlYWQmKSA9IDA7CisgICAgdmlydHVhbCBib29sIGlzQXVkaW9UaHJlYWQoKSBjb25zdCA9
IDA7CisgICAgdmlydHVhbCBib29sIGlzQXVkaW9UaHJlYWRGaW5pc2hlZCgpID0gMDsKKworICAg
IHZpcnR1YWwgdm9pZCBpc1BsYXlpbmdBdWRpb0RpZENoYW5nZSgpID0gMDsKKyAgICB2aXJ0dWFs
IHZvaWQgbm9kZVdpbGxCZWdpblBsYXliYWNrKCkgPSAwOworCisgICAgdmlydHVhbCB2b2lkIHBv
c3RUYXNrKFdURjo6RnVuY3Rpb248dm9pZCgpPiYmKSA9IDA7CisgICAgdmlydHVhbCBib29sIGlz
U3RvcHBlZCgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGNvbnN0IFNlY3VyaXR5T3JpZ2luKiBv
cmlnaW4oKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCB2b2lkIGFkZENvbnNvbGVNZXNzYWdlKE1l
c3NhZ2VTb3VyY2UsIE1lc3NhZ2VMZXZlbCwgY29uc3QgU3RyaW5nJiBtZXNzYWdlKSA9IDA7CisK
KyAgICB2aXJ0dWFsIHZvaWQgbWFya0ZvckRlbGV0aW9uKEF1ZGlvTm9kZSYpID0gMDsKKyAgICB2
aXJ0dWFsIHZvaWQgZGVsZXRlTWFya2VkTm9kZXMoKSA9IDA7CisKKyAgICB2aXJ0dWFsIHZvaWQg
aGFuZGxlUHJlUmVuZGVyVGFza3MoKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGhhbmRsZVBvc3RS
ZW5kZXJUYXNrcygpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgcHJvY2Vzc0F1dG9tYXRpY1B1bGxO
b2RlcyhzaXplX3QgZnJhbWVzVG9Qcm9jZXNzKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGFkZERl
ZmVycmVkRmluaXNoRGVyZWYoQXVkaW9Ob2RlKikgPSAwOworCisgICAgdmlydHVhbCB2b2lkIHJl
bW92ZU1hcmtlZFN1bW1pbmdKdW5jdGlvbihBdWRpb1N1bW1pbmdKdW5jdGlvbiopID0gMDsKKyAg
ICB2aXJ0dWFsIHZvaWQgbWFya1N1bW1pbmdKdW5jdGlvbkRpcnR5KEF1ZGlvU3VtbWluZ0p1bmN0
aW9uKikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBtYXJrQXVkaW9Ob2RlT3V0cHV0RGlydHkoQXVk
aW9Ob2RlT3V0cHV0KikgPSAwOworCisgICAgZW51bSBCZWhhdmlvclJlc3RyaWN0aW9uRmxhZ3Mg
eworICAgICAgICBOb1Jlc3RyaWN0aW9ucyA9IDAsCisgICAgICAgIFJlcXVpcmVVc2VyR2VzdHVy
ZUZvckF1ZGlvU3RhcnRSZXN0cmljdGlvbiA9IDEgPDwgMCwKKyAgICAgICAgUmVxdWlyZVBhZ2VD
b25zZW50Rm9yQXVkaW9TdGFydFJlc3RyaWN0aW9uID0gMSA8PCAxLAorICAgIH07CisgICAgdHlw
ZWRlZiB1bnNpZ25lZCBCZWhhdmlvclJlc3RyaWN0aW9uczsKKyAgICB2aXJ0dWFsIEJlaGF2aW9y
UmVzdHJpY3Rpb25zIGJlaGF2aW9yUmVzdHJpY3Rpb25zKCkgY29uc3QgPSAwOworICAgIHZpcnR1
YWwgdm9pZCBhZGRCZWhhdmlvclJlc3RyaWN0aW9uKEJlaGF2aW9yUmVzdHJpY3Rpb25zKSA9IDA7
CisgICAgdmlydHVhbCB2b2lkIHJlbW92ZUJlaGF2aW9yUmVzdHJpY3Rpb24oQmVoYXZpb3JSZXN0
cmljdGlvbnMpID0gMDsKKworI2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRAorICAgIHZpcnR1YWwg
Y29uc3Qgdm9pZCogbmV4dEF1ZGlvTm9kZUxvZ0lkZW50aWZpZXIoKSA9IDA7CisgICAgdmlydHVh
bCBjb25zdCB2b2lkKiBuZXh0QXVkaW9QYXJhbWV0ZXJMb2dJZGVudGlmaWVyKCkgPSAwOwogI2Vu
ZGlmCisKKyAgICB2aXJ0dWFsIHZvaWQgYWRkQXV0b21hdGljUHVsbE5vZGUoQXVkaW9Ob2RlJikg
PSAwOworICAgIHZpcnR1YWwgdm9pZCByZW1vdmVBdXRvbWF0aWNQdWxsTm9kZShBdWRpb05vZGUm
KSA9IDA7CisKKyAgICB2aXJ0dWFsIHZvaWQgbm90aWZ5Tm9kZUZpbmlzaGVkUHJvY2Vzc2luZyhB
dWRpb05vZGUqKSA9IDA7CisKKyAgICB2aXJ0dWFsIHZvaWQgZmluaXNoZWRSZW5kZXJpbmcoYm9v
bCBkaWRSZW5kZXJpbmcpID0gMDsKKworICAgIHZpcnR1YWwgdm9pZCBpbmNyZW1lbnRDb25uZWN0
aW9uQ291bnQoKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGluY3JlbWVudEFjdGl2ZVNvdXJjZUNv
dW50KCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBkZWNyZW1lbnRBY3RpdmVTb3VyY2VDb3VudCgp
ID0gMDsKKworICAgIHZpcnR1YWwgYm9vbCBpc09mZmxpbmVDb250ZXh0KCkgY29uc3QgPSAwOwor
ICAgIHZpcnR1YWwgYm9vbCBpc0F1ZGlvQ29udGV4dCgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFs
IGJvb2wgaXNXZWJLaXRBdWRpb0NvbnRleHQoKSBjb25zdCA9IDA7CisKKyAgICAvLyBtdXN0UmVs
ZWFzZUxvY2sgaXMgc2V0IHRvIHRydWUgaWYgd2UgYWNxdWlyZWQgdGhlIGxvY2sgaW4gdGhpcyBt
ZXRob2QgY2FsbCBhbmQgY2FsbGVyIG11c3QgdW5sb2NrKCksIGZhbHNlIGlmIGl0IHdhcyBwcmV2
aW91c2x5IGFjcXVpcmVkLgorICAgIHZpcnR1YWwgdm9pZCBsb2NrKGJvb2wmIG11c3RSZWxlYXNl
TG9jaykgPSAwOworICAgIHZpcnR1YWwgYm9vbCB0cnlMb2NrKGJvb2wmIG11c3RSZWxlYXNlTG9j
aykgPSAwOworICAgIHZpcnR1YWwgdm9pZCB1bmxvY2soKSA9IDA7CisKKyAgICBjbGFzcyBBdXRv
TG9ja2VyIHsKKyAgICBwdWJsaWM6CisgICAgICAgIGV4cGxpY2l0IEF1dG9Mb2NrZXIoQXVkaW9D
b250ZXh0QmFzZSYgY29udGV4dCkKKyAgICAgICAgICAgIDogbV9jb250ZXh0KGNvbnRleHQpCisg
ICAgICAgIHsKKyAgICAgICAgICAgIG1fY29udGV4dC5sb2NrKG1fbXVzdFJlbGVhc2VMb2NrKTsK
KyAgICAgICAgfQorCisgICAgICAgIH5BdXRvTG9ja2VyKCkKKyAgICAgICAgeworICAgICAgICAg
ICAgaWYgKG1fbXVzdFJlbGVhc2VMb2NrKQorICAgICAgICAgICAgICAgIG1fY29udGV4dC51bmxv
Y2soKTsKKyAgICAgICAgfQorCisgICAgcHJpdmF0ZToKKyAgICAgICAgQXVkaW9Db250ZXh0QmFz
ZSYgbV9jb250ZXh0OworICAgICAgICBib29sIG1fbXVzdFJlbGVhc2VMb2NrOworICAgIH07CisK
KyAgICAvLyBFdmVudFRhcmdldAorICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQoKSBjb25zdCBmaW5hbDsKKyAgICB2b2lkIHJlZkV2ZW50VGFyZ2V0KCkg
b3ZlcnJpZGUgeyByZWYoKTsgfQorICAgIHZvaWQgZGVyZWZFdmVudFRhcmdldCgpIG92ZXJyaWRl
IHsgZGVyZWYoKTsgfQorCitwcm90ZWN0ZWQ6CisgICAgZXhwbGljaXQgQXVkaW9Db250ZXh0QmFz
ZShEb2N1bWVudCYpOworfTsKKworLy8gQXVkaW9Db250ZXh0IGlzIHRoZSBjb3JuZXJzdG9uZSBv
ZiB0aGUgd2ViIGF1ZGlvIEFQSSBhbmQgYWxsIEF1ZGlvTm9kZXMgYXJlIGNyZWF0ZWQgZnJvbSBp
dC4KKy8vIEZvciB0aHJlYWQgc2FmZXR5IGJldHdlZW4gdGhlIGF1ZGlvIHRocmVhZCBhbmQgdGhl
IG1haW4gdGhyZWFkLCBpdCBoYXMgYSByZW5kZXJpbmcgZ3JhcGggbG9ja2luZyBtZWNoYW5pc20u
IAorCitjbGFzcyBBdWRpb0NvbnRleHQKKyAgICA6IHB1YmxpYyBBdWRpb0NvbnRleHRCYXNlCisg
ICAgLCBwcml2YXRlIFBsYXRmb3JtTWVkaWFTZXNzaW9uQ2xpZW50CisgICAgLCBwcml2YXRlIFZp
c2liaWxpdHlDaGFuZ2VDbGllbnQKIHsKICAgICBXVEZfTUFLRV9JU09fQUxMT0NBVEVEKEF1ZGlv
Q29udGV4dCk7CiBwdWJsaWM6CkBAIC0xMDEsMjIgKzIwOSwyMCBAQCBwdWJsaWM6CiAKICAgICB2
aXJ0dWFsIH5BdWRpb0NvbnRleHQoKTsKIAotICAgIGJvb2wgaXNJbml0aWFsaXplZCgpIGNvbnN0
OworICAgIGJvb2wgaXNJbml0aWFsaXplZCgpIGNvbnN0IGZpbmFsOwogICAgIAotICAgIGJvb2wg
aXNPZmZsaW5lQ29udGV4dCgpIGNvbnN0IHsgcmV0dXJuIG1faXNPZmZsaW5lQ29udGV4dDsgfQot
Ci0gICAgRG9jdW1lbnQqIGRvY3VtZW50KCkgY29uc3Q7IC8vIEFTU0VSVHMgaWYgZG9jdW1lbnQg
bm8gbG9uZ2VyIGV4aXN0cy4KKyAgICBib29sIGlzT2ZmbGluZUNvbnRleHQoKSBjb25zdCBmaW5h
bCB7IHJldHVybiBtX2lzT2ZmbGluZUNvbnRleHQ7IH0KIAogICAgIERvY3VtZW50SWRlbnRpZmll
ciBob3N0aW5nRG9jdW1lbnRJZGVudGlmaWVyKCkgY29uc3QgZmluYWw7CiAKICAgICBBdWRpb0Rl
c3RpbmF0aW9uTm9kZSogZGVzdGluYXRpb24oKSB7IHJldHVybiBtX2Rlc3RpbmF0aW9uTm9kZS5n
ZXQoKTsgfQotICAgIHNpemVfdCBjdXJyZW50U2FtcGxlRnJhbWUoKSBjb25zdCB7IHJldHVybiBt
X2Rlc3RpbmF0aW9uTm9kZSA/IG1fZGVzdGluYXRpb25Ob2RlLT5jdXJyZW50U2FtcGxlRnJhbWUo
KSA6IDA7IH0KLSAgICBkb3VibGUgY3VycmVudFRpbWUoKSBjb25zdCB7IHJldHVybiBtX2Rlc3Rp
bmF0aW9uTm9kZSA/IG1fZGVzdGluYXRpb25Ob2RlLT5jdXJyZW50VGltZSgpIDogMC47IH0KLSAg
ICBmbG9hdCBzYW1wbGVSYXRlKCkgY29uc3QgeyByZXR1cm4gbV9kZXN0aW5hdGlvbk5vZGUgPyBt
X2Rlc3RpbmF0aW9uTm9kZS0+c2FtcGxlUmF0ZSgpIDogMC5mOyB9CisgICAgc2l6ZV90IGN1cnJl
bnRTYW1wbGVGcmFtZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fZGVzdGluYXRpb25Ob2RlID8g
bV9kZXN0aW5hdGlvbk5vZGUtPmN1cnJlbnRTYW1wbGVGcmFtZSgpIDogMDsgfQorICAgIGRvdWJs
ZSBjdXJyZW50VGltZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fZGVzdGluYXRpb25Ob2RlID8g
bV9kZXN0aW5hdGlvbk5vZGUtPmN1cnJlbnRUaW1lKCkgOiAwLjsgfQorICAgIGZsb2F0IHNhbXBs
ZVJhdGUoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2Rlc3RpbmF0aW9uTm9kZSA/IG1fZGVzdGlu
YXRpb25Ob2RlLT5zYW1wbGVSYXRlKCkgOiAwLmY7IH0KICAgICB1bnNpZ25lZCBsb25nIGFjdGl2
ZVNvdXJjZUNvdW50KCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8dW5zaWduZWQgbG9uZz4o
bV9hY3RpdmVTb3VyY2VDb3VudCk7IH0KIAotICAgIHZvaWQgaW5jcmVtZW50QWN0aXZlU291cmNl
Q291bnQoKTsKLSAgICB2b2lkIGRlY3JlbWVudEFjdGl2ZVNvdXJjZUNvdW50KCk7CisgICAgdm9p
ZCBpbmNyZW1lbnRBY3RpdmVTb3VyY2VDb3VudCgpIGZpbmFsOworICAgIHZvaWQgZGVjcmVtZW50
QWN0aXZlU291cmNlQ291bnQoKSBmaW5hbDsKICAgICAKICAgICBFeGNlcHRpb25PcjxSZWY8QXVk
aW9CdWZmZXI+PiBjcmVhdGVCdWZmZXIodW5zaWduZWQgbnVtYmVyT2ZDaGFubmVscywgc2l6ZV90
IG51bWJlck9mRnJhbWVzLCBmbG9hdCBzYW1wbGVSYXRlKTsKICAgICBFeGNlcHRpb25PcjxSZWY8
QXVkaW9CdWZmZXI+PiBjcmVhdGVCdWZmZXIoQXJyYXlCdWZmZXImLCBib29sIG1peFRvTW9ubyk7
CkBAIC0xMzAsNyArMjM2LDcgQEAgcHVibGljOgogICAgIHZvaWQgcmVzdW1lUmVuZGVyaW5nKERP
TVByb21pc2VEZWZlcnJlZDx2b2lkPiYmKTsKICAgICB2b2lkIGNsb3NlKERPTVByb21pc2VEZWZl
cnJlZDx2b2lkPiYmKTsKIAotICAgIGVudW0gY2xhc3MgU3RhdGUgeyBTdXNwZW5kZWQsIFJ1bm5p
bmcsIEludGVycnVwdGVkLCBDbG9zZWQgfTsKKyAgICB1c2luZyBTdGF0ZSA9IEF1ZGlvQ29udGV4
dFN0YXRlOwogICAgIFN0YXRlIHN0YXRlKCkgY29uc3Q7CiAgICAgYm9vbCBpc0Nsb3NlZCgpIGNv
bnN0IHsgcmV0dXJuIG1fc3RhdGUgPT0gU3RhdGU6OkNsb3NlZDsgfQogCkBAIC0xNjAsMzEgKzI2
NiwzMSBAQCBwdWJsaWM6CiAgICAgRXhjZXB0aW9uT3I8UmVmPFBlcmlvZGljV2F2ZT4+IGNyZWF0
ZVBlcmlvZGljV2F2ZShGbG9hdDMyQXJyYXkmIHJlYWwsIEZsb2F0MzJBcnJheSYgaW1hZ2luYXJ5
KTsKIAogICAgIC8vIFdoZW4gYSBzb3VyY2Ugbm9kZSBoYXMgbm8gbW9yZSBwcm9jZXNzaW5nIHRv
IGRvIChoYXMgZmluaXNoZWQgcGxheWluZyksIHRoZW4gaXQgdGVsbHMgdGhlIGNvbnRleHQgdG8g
ZGVyZWZlcmVuY2UgaXQuCi0gICAgdm9pZCBub3RpZnlOb2RlRmluaXNoZWRQcm9jZXNzaW5nKEF1
ZGlvTm9kZSopOworICAgIHZvaWQgbm90aWZ5Tm9kZUZpbmlzaGVkUHJvY2Vzc2luZyhBdWRpb05v
ZGUqKSBmaW5hbDsKIAogICAgIC8vIENhbGxlZCBhdCB0aGUgc3RhcnQgb2YgZWFjaCByZW5kZXIg
cXVhbnR1bS4KLSAgICB2b2lkIGhhbmRsZVByZVJlbmRlclRhc2tzKCk7CisgICAgdm9pZCBoYW5k
bGVQcmVSZW5kZXJUYXNrcygpIGZpbmFsOwogCiAgICAgLy8gQ2FsbGVkIGF0IHRoZSBlbmQgb2Yg
ZWFjaCByZW5kZXIgcXVhbnR1bS4KLSAgICB2b2lkIGhhbmRsZVBvc3RSZW5kZXJUYXNrcygpOwor
ICAgIHZvaWQgaGFuZGxlUG9zdFJlbmRlclRhc2tzKCkgZmluYWw7CiAKICAgICAvLyBDYWxsZWQg
cGVyaW9kaWNhbGx5IGF0IHRoZSBlbmQgb2YgZWFjaCByZW5kZXIgcXVhbnR1bSB0byBkZXJlZmVy
ZW5jZSBmaW5pc2hlZCBzb3VyY2Ugbm9kZXMuCiAgICAgdm9pZCBkZXJlZkZpbmlzaGVkU291cmNl
Tm9kZXMoKTsKIAogICAgIC8vIFdlIHNjaGVkdWxlIGRlbGV0aW9uIG9mIGFsbCBtYXJrZWQgbm9k
ZXMgYXQgdGhlIGVuZCBvZiBlYWNoIHJlYWx0aW1lIHJlbmRlciBxdWFudHVtLgotICAgIHZvaWQg
bWFya0ZvckRlbGV0aW9uKEF1ZGlvTm9kZSYpOwotICAgIHZvaWQgZGVsZXRlTWFya2VkTm9kZXMo
KTsKKyAgICB2b2lkIG1hcmtGb3JEZWxldGlvbihBdWRpb05vZGUmKSBmaW5hbDsKKyAgICB2b2lk
IGRlbGV0ZU1hcmtlZE5vZGVzKCkgZmluYWw7CiAKICAgICAvLyBBdWRpb0NvbnRleHQgY2FuIHB1
bGwgbm9kZShzKSBhdCB0aGUgZW5kIG9mIGVhY2ggcmVuZGVyIHF1YW50dW0gZXZlbiB3aGVuIHRo
ZXkgYXJlIG5vdCBjb25uZWN0ZWQgdG8gYW55IGRvd25zdHJlYW0gbm9kZXMuCiAgICAgLy8gVGhl
c2UgdHdvIG1ldGhvZHMgYXJlIGNhbGxlZCBieSB0aGUgbm9kZXMgd2hvIHdhbnQgdG8gYWRkL3Jl
bW92ZSB0aGVtc2VsdmVzIGludG8vZnJvbSB0aGUgYXV0b21hdGljIHB1bGwgbGlzdHMuCi0gICAg
dm9pZCBhZGRBdXRvbWF0aWNQdWxsTm9kZShBdWRpb05vZGUmKTsKLSAgICB2b2lkIHJlbW92ZUF1
dG9tYXRpY1B1bGxOb2RlKEF1ZGlvTm9kZSYpOworICAgIHZvaWQgYWRkQXV0b21hdGljUHVsbE5v
ZGUoQXVkaW9Ob2RlJikgZmluYWw7CisgICAgdm9pZCByZW1vdmVBdXRvbWF0aWNQdWxsTm9kZShB
dWRpb05vZGUmKSBmaW5hbDsKIAogICAgIC8vIENhbGxlZCByaWdodCBiZWZvcmUgaGFuZGxlUG9z
dFJlbmRlclRhc2tzKCkgdG8gaGFuZGxlIG5vZGVzIHdoaWNoIG5lZWQgdG8gYmUgcHVsbGVkIGV2
ZW4gd2hlbiB0aGV5IGFyZSBub3QgY29ubmVjdGVkIHRvIGFueXRoaW5nLgotICAgIHZvaWQgcHJv
Y2Vzc0F1dG9tYXRpY1B1bGxOb2RlcyhzaXplX3QgZnJhbWVzVG9Qcm9jZXNzKTsKKyAgICB2b2lk
IHByb2Nlc3NBdXRvbWF0aWNQdWxsTm9kZXMoc2l6ZV90IGZyYW1lc1RvUHJvY2VzcykgZmluYWw7
CiAKICAgICAvLyBLZWVwcyB0cmFjayBvZiB0aGUgbnVtYmVyIG9mIGNvbm5lY3Rpb25zIG1hZGUu
Ci0gICAgdm9pZCBpbmNyZW1lbnRDb25uZWN0aW9uQ291bnQoKQorICAgIHZvaWQgaW5jcmVtZW50
Q29ubmVjdGlvbkNvdW50KCkgZmluYWwKICAgICB7CiAgICAgICAgIEFTU0VSVChpc01haW5UaHJl
YWQoKSk7CiAgICAgICAgIG1fY29ubmVjdGlvbkNvdW50Kys7CkBAIC0xOTYsMTAzICszMDIsNzAg
QEAgcHVibGljOgogICAgIC8vIFRocmVhZCBTYWZldHkgYW5kIEdyYXBoIExvY2tpbmc6CiAgICAg
Ly8KICAgICAKLSAgICB2b2lkIHNldEF1ZGlvVGhyZWFkKFRocmVhZCYgdGhyZWFkKSB7IG1fYXVk
aW9UaHJlYWQgPSAmdGhyZWFkOyB9IC8vIEZJWE1FOiBjaGVjayBlaXRoZXIgbm90IGluaXRpYWxp
emVkIG9yIHRoZSBzYW1lCisgICAgdm9pZCBzZXRBdWRpb1RocmVhZChUaHJlYWQmIHRocmVhZCkg
ZmluYWwgeyBtX2F1ZGlvVGhyZWFkID0gJnRocmVhZDsgfSAvLyBGSVhNRTogY2hlY2sgZWl0aGVy
IG5vdCBpbml0aWFsaXplZCBvciB0aGUgc2FtZQogICAgIFRocmVhZCogYXVkaW9UaHJlYWQoKSBj
b25zdCB7IHJldHVybiBtX2F1ZGlvVGhyZWFkOyB9Ci0gICAgYm9vbCBpc0F1ZGlvVGhyZWFkKCkg
Y29uc3Q7CisgICAgYm9vbCBpc0F1ZGlvVGhyZWFkKCkgY29uc3QgZmluYWw7CiAKICAgICAvLyBS
ZXR1cm5zIHRydWUgb25seSBhZnRlciB0aGUgYXVkaW8gdGhyZWFkIGhhcyBiZWVuIHN0YXJ0ZWQg
YW5kIHRoZW4gc2h1dGRvd24uCi0gICAgYm9vbCBpc0F1ZGlvVGhyZWFkRmluaXNoZWQoKSB7IHJl
dHVybiBtX2lzQXVkaW9UaHJlYWRGaW5pc2hlZDsgfQorICAgIGJvb2wgaXNBdWRpb1RocmVhZEZp
bmlzaGVkKCkgZmluYWwgeyByZXR1cm4gbV9pc0F1ZGlvVGhyZWFkRmluaXNoZWQ7IH0KICAgICAK
ICAgICAvLyBtdXN0UmVsZWFzZUxvY2sgaXMgc2V0IHRvIHRydWUgaWYgd2UgYWNxdWlyZWQgdGhl
IGxvY2sgaW4gdGhpcyBtZXRob2QgY2FsbCBhbmQgY2FsbGVyIG11c3QgdW5sb2NrKCksIGZhbHNl
IGlmIGl0IHdhcyBwcmV2aW91c2x5IGFjcXVpcmVkLgotICAgIHZvaWQgbG9jayhib29sJiBtdXN0
UmVsZWFzZUxvY2spOworICAgIHZvaWQgbG9jayhib29sJiBtdXN0UmVsZWFzZUxvY2spIGZpbmFs
OwogCiAgICAgLy8gUmV0dXJucyB0cnVlIGlmIHdlIG93biB0aGUgbG9jay4KICAgICAvLyBtdXN0
UmVsZWFzZUxvY2sgaXMgc2V0IHRvIHRydWUgaWYgd2UgYWNxdWlyZWQgdGhlIGxvY2sgaW4gdGhp
cyBtZXRob2QgY2FsbCBhbmQgY2FsbGVyIG11c3QgdW5sb2NrKCksIGZhbHNlIGlmIGl0IHdhcyBw
cmV2aW91c2x5IGFjcXVpcmVkLgotICAgIGJvb2wgdHJ5TG9jayhib29sJiBtdXN0UmVsZWFzZUxv
Y2spOworICAgIGJvb2wgdHJ5TG9jayhib29sJiBtdXN0UmVsZWFzZUxvY2spIGZpbmFsOwogCi0g
ICAgdm9pZCB1bmxvY2soKTsKKyAgICB2b2lkIHVubG9jaygpIGZpbmFsOwogCiAgICAgLy8gUmV0
dXJucyB0cnVlIGlmIHRoaXMgdGhyZWFkIG93bnMgdGhlIGNvbnRleHQncyBsb2NrLgotICAgIGJv
b2wgaXNHcmFwaE93bmVyKCkgY29uc3Q7CisgICAgYm9vbCBpc0dyYXBoT3duZXIoKSBjb25zdCBm
aW5hbDsKIAogICAgIC8vIFJldHVybnMgdGhlIG1heGltdW0gbnVtYmVyIG9mIGNoYW5uZWxzIHdl
IGNhbiBzdXBwb3J0LgogICAgIHN0YXRpYyB1bnNpZ25lZCBtYXhOdW1iZXJPZkNoYW5uZWxzKCkg
eyByZXR1cm4gTWF4TnVtYmVyT2ZDaGFubmVsczsgfQotCi0gICAgY2xhc3MgQXV0b0xvY2tlciB7
Ci0gICAgcHVibGljOgotICAgICAgICBleHBsaWNpdCBBdXRvTG9ja2VyKEF1ZGlvQ29udGV4dCYg
Y29udGV4dCkKLSAgICAgICAgICAgIDogbV9jb250ZXh0KGNvbnRleHQpCi0gICAgICAgIHsKLSAg
ICAgICAgICAgIG1fY29udGV4dC5sb2NrKG1fbXVzdFJlbGVhc2VMb2NrKTsKLSAgICAgICAgfQot
ICAgICAgICAKLSAgICAgICAgfkF1dG9Mb2NrZXIoKQotICAgICAgICB7Ci0gICAgICAgICAgICBp
ZiAobV9tdXN0UmVsZWFzZUxvY2spCi0gICAgICAgICAgICAgICAgbV9jb250ZXh0LnVubG9jaygp
OwotICAgICAgICB9Ci0KLSAgICBwcml2YXRlOgotICAgICAgICBBdWRpb0NvbnRleHQmIG1fY29u
dGV4dDsKLSAgICAgICAgYm9vbCBtX211c3RSZWxlYXNlTG9jazsKLSAgICB9OwogICAgIAogICAg
IC8vIEluIEF1ZGlvTm9kZTo6ZGVyZWYoKSBhIHRyeUxvY2soKSBpcyB1c2VkIGZvciBjYWxsaW5n
IGZpbmlzaERlcmVmKCksIGJ1dCBpZiBpdCBmYWlscyBrZWVwIHRyYWNrIGhlcmUuCi0gICAgdm9p
ZCBhZGREZWZlcnJlZEZpbmlzaERlcmVmKEF1ZGlvTm9kZSopOworICAgIHZvaWQgYWRkRGVmZXJy
ZWRGaW5pc2hEZXJlZihBdWRpb05vZGUqKSBmaW5hbDsKIAogICAgIC8vIEluIHRoZSBhdWRpbyB0
aHJlYWQgYXQgdGhlIHN0YXJ0IG9mIGVhY2ggcmVuZGVyIGN5Y2xlLCB3ZSdsbCBjYWxsIGhhbmRs
ZURlZmVycmVkRmluaXNoRGVyZWZzKCkuCiAgICAgdm9pZCBoYW5kbGVEZWZlcnJlZEZpbmlzaERl
cmVmcygpOwogCiAgICAgLy8gT25seSBhY2Nlc3NlZCB3aGVuIHRoZSBncmFwaCBsb2NrIGlzIGhl
bGQuCi0gICAgdm9pZCBtYXJrU3VtbWluZ0p1bmN0aW9uRGlydHkoQXVkaW9TdW1taW5nSnVuY3Rp
b24qKTsKLSAgICB2b2lkIG1hcmtBdWRpb05vZGVPdXRwdXREaXJ0eShBdWRpb05vZGVPdXRwdXQq
KTsKKyAgICB2b2lkIG1hcmtTdW1taW5nSnVuY3Rpb25EaXJ0eShBdWRpb1N1bW1pbmdKdW5jdGlv
biopIGZpbmFsOworICAgIHZvaWQgbWFya0F1ZGlvTm9kZU91dHB1dERpcnR5KEF1ZGlvTm9kZU91
dHB1dCopIGZpbmFsOwogCiAgICAgLy8gTXVzdCBiZSBjYWxsZWQgb24gbWFpbiB0aHJlYWQuCi0g
ICAgdm9pZCByZW1vdmVNYXJrZWRTdW1taW5nSnVuY3Rpb24oQXVkaW9TdW1taW5nSnVuY3Rpb24q
KTsKKyAgICB2b2lkIHJlbW92ZU1hcmtlZFN1bW1pbmdKdW5jdGlvbihBdWRpb1N1bW1pbmdKdW5j
dGlvbiopIGZpbmFsOwogCiAgICAgLy8gRXZlbnRUYXJnZXQKLSAgICBFdmVudFRhcmdldEludGVy
ZmFjZSBldmVudFRhcmdldEludGVyZmFjZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIEF1ZGlvQ29u
dGV4dEV2ZW50VGFyZ2V0SW50ZXJmYWNlVHlwZTsgfQotCi0gICAgLy8gUmVjb25jaWxlIHJlZi9k
ZXJlZiB3aGljaCBhcmUgZGVmaW5lZCBib3RoIGluIFRocmVhZFNhZmVSZWZDb3VudGVkIGFuZCBF
dmVudFRhcmdldC4KLSAgICB1c2luZyBUaHJlYWRTYWZlUmVmQ291bnRlZDo6cmVmOwotICAgIHVz
aW5nIFRocmVhZFNhZmVSZWZDb3VudGVkOjpkZXJlZjsKKyAgICBFdmVudFRhcmdldEludGVyZmFj
ZSBldmVudFRhcmdldEludGVyZmFjZSgpIGNvbnN0IGZpbmFsOwogCiAgICAgdm9pZCBzdGFydFJl
bmRlcmluZygpOwotICAgIHZvaWQgZmluaXNoZWRSZW5kZXJpbmcoYm9vbCBkaWRSZW5kZXJpbmcp
OworICAgIHZvaWQgZmluaXNoZWRSZW5kZXJpbmcoYm9vbCBkaWRSZW5kZXJpbmcpIGZpbmFsOwog
CiAgICAgc3RhdGljIHVuc2lnbmVkIHNfaGFyZHdhcmVDb250ZXh0Q291bnQ7CiAKICAgICAvLyBS
ZXN0cmljdGlvbnMgdG8gY2hhbmdlIGRlZmF1bHQgYmVoYXZpb3JzLgotICAgIGVudW0gQmVoYXZp
b3JSZXN0cmljdGlvbkZsYWdzIHsKLSAgICAgICAgTm9SZXN0cmljdGlvbnMgPSAwLAotICAgICAg
ICBSZXF1aXJlVXNlckdlc3R1cmVGb3JBdWRpb1N0YXJ0UmVzdHJpY3Rpb24gPSAxIDw8IDAsCi0g
ICAgICAgIFJlcXVpcmVQYWdlQ29uc2VudEZvckF1ZGlvU3RhcnRSZXN0cmljdGlvbiA9IDEgPDwg
MSwKLSAgICB9OwotICAgIHR5cGVkZWYgdW5zaWduZWQgQmVoYXZpb3JSZXN0cmljdGlvbnM7Ci0K
LSAgICBCZWhhdmlvclJlc3RyaWN0aW9ucyBiZWhhdmlvclJlc3RyaWN0aW9ucygpIGNvbnN0IHsg
cmV0dXJuIG1fcmVzdHJpY3Rpb25zOyB9Ci0gICAgdm9pZCBhZGRCZWhhdmlvclJlc3RyaWN0aW9u
KEJlaGF2aW9yUmVzdHJpY3Rpb25zIHJlc3RyaWN0aW9uKSB7IG1fcmVzdHJpY3Rpb25zIHw9IHJl
c3RyaWN0aW9uOyB9Ci0gICAgdm9pZCByZW1vdmVCZWhhdmlvclJlc3RyaWN0aW9uKEJlaGF2aW9y
UmVzdHJpY3Rpb25zIHJlc3RyaWN0aW9uKSB7IG1fcmVzdHJpY3Rpb25zICY9IH5yZXN0cmljdGlv
bjsgfQorICAgIEJlaGF2aW9yUmVzdHJpY3Rpb25zIGJlaGF2aW9yUmVzdHJpY3Rpb25zKCkgY29u
c3QgZmluYWwgeyByZXR1cm4gbV9yZXN0cmljdGlvbnM7IH0KKyAgICB2b2lkIGFkZEJlaGF2aW9y
UmVzdHJpY3Rpb24oQmVoYXZpb3JSZXN0cmljdGlvbnMgcmVzdHJpY3Rpb24pIGZpbmFsIHsgbV9y
ZXN0cmljdGlvbnMgfD0gcmVzdHJpY3Rpb247IH0KKyAgICB2b2lkIHJlbW92ZUJlaGF2aW9yUmVz
dHJpY3Rpb24oQmVoYXZpb3JSZXN0cmljdGlvbnMgcmVzdHJpY3Rpb24pIGZpbmFsIHsgbV9yZXN0
cmljdGlvbnMgJj0gfnJlc3RyaWN0aW9uOyB9CiAKLSAgICB2b2lkIGlzUGxheWluZ0F1ZGlvRGlk
Q2hhbmdlKCk7CisgICAgdm9pZCBpc1BsYXlpbmdBdWRpb0RpZENoYW5nZSgpIGZpbmFsOwogCi0g
ICAgdm9pZCBub2RlV2lsbEJlZ2luUGxheWJhY2soKTsKKyAgICB2b2lkIG5vZGVXaWxsQmVnaW5Q
bGF5YmFjaygpIGZpbmFsOwogCiAjaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECiAgICAgY29uc3Qg
TG9nZ2VyJiBsb2dnZXIoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2xvZ2dlci5nZXQoKTsgfQog
ICAgIGNvbnN0IHZvaWQqIGxvZ0lkZW50aWZpZXIoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2xv
Z0lkZW50aWZpZXI7IH0KICAgICBXVEZMb2dDaGFubmVsJiBsb2dDaGFubmVsKCkgY29uc3QgZmlu
YWw7Ci0gICAgY29uc3Qgdm9pZCogbmV4dEF1ZGlvTm9kZUxvZ0lkZW50aWZpZXIoKSB7IHJldHVy
biBjaGlsZExvZ0lkZW50aWZpZXIobV9sb2dJZGVudGlmaWVyLCArK21fbmV4dEF1ZGlvTm9kZUlk
ZW50aWZpZXIpOyB9Ci0gICAgY29uc3Qgdm9pZCogbmV4dEF1ZGlvUGFyYW1ldGVyTG9nSWRlbnRp
ZmllcigpIHsgcmV0dXJuIGNoaWxkTG9nSWRlbnRpZmllcihtX2xvZ0lkZW50aWZpZXIsICsrbV9u
ZXh0QXVkaW9QYXJhbWV0ZXJJZGVudGlmaWVyKTsgfQorICAgIGNvbnN0IHZvaWQqIG5leHRBdWRp
b05vZGVMb2dJZGVudGlmaWVyKCkgZmluYWwgeyByZXR1cm4gY2hpbGRMb2dJZGVudGlmaWVyKG1f
bG9nSWRlbnRpZmllciwgKyttX25leHRBdWRpb05vZGVJZGVudGlmaWVyKTsgfQorICAgIGNvbnN0
IHZvaWQqIG5leHRBdWRpb1BhcmFtZXRlckxvZ0lkZW50aWZpZXIoKSBmaW5hbCB7IHJldHVybiBj
aGlsZExvZ0lkZW50aWZpZXIobV9sb2dJZGVudGlmaWVyLCArK21fbmV4dEF1ZGlvUGFyYW1ldGVy
SWRlbnRpZmllcik7IH0KICNlbmRpZgogCi0gICAgdm9pZCBwb3N0VGFzayhXVEY6OkZ1bmN0aW9u
PHZvaWQoKT4mJik7Ci0gICAgYm9vbCBpc1N0b3BwZWQoKSBjb25zdCB7IHJldHVybiBtX2lzU3Rv
cFNjaGVkdWxlZDsgfQotICAgIGNvbnN0IFNlY3VyaXR5T3JpZ2luKiBvcmlnaW4oKSBjb25zdDsK
LSAgICB2b2lkIGFkZENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VTb3VyY2UsIE1lc3NhZ2VMZXZlbCwg
Y29uc3QgU3RyaW5nJiBtZXNzYWdlKTsKLQotICAgIC8vIEV2ZW50VGFyZ2V0Ci0gICAgU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpIGNvbnN0IGZpbmFsOwor
ICAgIHZvaWQgcG9zdFRhc2soV1RGOjpGdW5jdGlvbjx2b2lkKCk+JiYpIGZpbmFsOworICAgIGJv
b2wgaXNTdG9wcGVkKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9pc1N0b3BTY2hlZHVsZWQ7IH0K
KyAgICBjb25zdCBTZWN1cml0eU9yaWdpbiogb3JpZ2luKCkgY29uc3QgZmluYWw7CisgICAgdm9p
ZCBhZGRDb25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNlLCBNZXNzYWdlTGV2ZWwsIGNvbnN0IFN0
cmluZyYgbWVzc2FnZSkgZmluYWw7CiAKIHByb3RlY3RlZDoKICAgICBleHBsaWNpdCBBdWRpb0Nv
bnRleHQoRG9jdW1lbnQmKTsKQEAgLTM2MCw5ICs0MzMsOCBAQCBwcml2YXRlOgogCiAgICAgdm9p
ZCB2aXNpYmlsaXR5U3RhdGVDaGFuZ2VkKCkgZmluYWw7CiAKLSAgICAvLyBFdmVudFRhcmdldAot
ICAgIHZvaWQgcmVmRXZlbnRUYXJnZXQoKSBvdmVycmlkZSB7IHJlZigpOyB9Ci0gICAgdm9pZCBk
ZXJlZkV2ZW50VGFyZ2V0KCkgb3ZlcnJpZGUgeyBkZXJlZigpOyB9CisgICAgYm9vbCBpc0F1ZGlv
Q29udGV4dCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIHRydWU7IH0KKyAgICBib29sIGlzV2ViS2l0
QXVkaW9Db250ZXh0KCkgY29uc3QgZmluYWwgeyByZXR1cm4gZmFsc2U7IH0KIAogICAgIHZvaWQg
aGFuZGxlRGlydHlBdWRpb1N1bW1pbmdKdW5jdGlvbnMoKTsKICAgICB2b2lkIGhhbmRsZURpcnR5
QXVkaW9Ob2RlT3V0cHV0cygpOwpAQCAtNDQ2LDIxICs1MTgsMTMgQEAgcHJpdmF0ZToKICAgICBS
ZWZQdHI8UGVuZGluZ0FjdGl2aXR5PEF1ZGlvQ29udGV4dD4+IG1fcGVuZGluZ0FjdGl2aXR5Owog
fTsKIAotLy8gRklYTUU6IEZpbmQgb3V0IHdoeSB0aGVzZSA9PS8hPSBmdW5jdGlvbnMgYXJlIG5l
ZWRlZCBhbmQgcmVtb3ZlIHRoZW0gaWYgcG9zc2libGUuCi0KLWlubGluZSBib29sIG9wZXJhdG9y
PT0oY29uc3QgQXVkaW9Db250ZXh0JiBsaHMsIGNvbnN0IEF1ZGlvQ29udGV4dCYgcmhzKQotewot
ICAgIHJldHVybiAmbGhzID09ICZyaHM7Ci19Ci0KLWlubGluZSBib29sIG9wZXJhdG9yIT0oY29u
c3QgQXVkaW9Db250ZXh0JiBsaHMsIGNvbnN0IEF1ZGlvQ29udGV4dCYgcmhzKQotewotICAgIHJl
dHVybiAmbGhzICE9ICZyaHM7Ci19Ci0KIGlubGluZSBBdWRpb0NvbnRleHQ6OlN0YXRlIEF1ZGlv
Q29udGV4dDo6c3RhdGUoKSBjb25zdAogewogICAgIHJldHVybiBtX3N0YXRlOwogfQogCiB9IC8v
IFdlYkNvcmUKKworU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19CRUdJTihXZWJDb3JlOjpBdWRpb0Nv
bnRleHQpCisgICAgc3RhdGljIGJvb2wgaXNUeXBlKGNvbnN0IFdlYkNvcmU6OkF1ZGlvQ29udGV4
dEJhc2UmIGNvbnRleHQpIHsgcmV0dXJuIGNvbnRleHQuaXNBdWRpb0NvbnRleHQoKTsgfQorU1BF
Q0lBTElaRV9UWVBFX1RSQUlUU19FTkQoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJhdWRpby9BdWRpb0NvbnRleHQuaWRsIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJhdWRpby9BdWRpb0NvbnRleHQuaWRsCmluZGV4IGU3MTE4MzliMzMzMDBkZTM0MWMyMzFjNGNj
OTZlOWU1NzYzMjQxMzUuLmYxZDQ5Y2EzNjhkNjQ1MDZhYmFiNTY5NzkwOWVlMDk3MjFiNWQ4Y2Yg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0
LmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQ29udGV4dC5p
ZGwKQEAgLTIzLDE5ICsyMywxMSBAQAogICogU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotZW51bSBBdWRpb0NvbnRleHRT
dGF0ZSB7Ci0gICAgInN1c3BlbmRlZCIsCi0gICAgInJ1bm5pbmciLAotICAgICJpbnRlcnJ1cHRl
ZCIsCi0gICAgImNsb3NlZCIKLX07Ci0KIFsKICAgICBBY3RpdmVET01PYmplY3QsCiAgICAgQ29u
ZGl0aW9uYWw9V0VCX0FVRElPLAotICAgIEVuYWJsZWRCeVNldHRpbmc9V2ViQXVkaW8sCisgICAg
RW5hYmxlZEJ5U2V0dGluZz1Nb2Rlcm5VbnByZWZpeGVkV2ViQXVkaW8sCiAgICAgRXhwb3J0TWFj
cm89V0VCQ09SRV9FWFBPUlQsCi0gICAgSW50ZXJmYWNlTmFtZT13ZWJraXRBdWRpb0NvbnRleHQs
CiBdIGludGVyZmFjZSBBdWRpb0NvbnRleHQgOiBFdmVudFRhcmdldCB7CiAgICAgW0NhbGxXaXRo
PURvY3VtZW50LCBNYXlUaHJvd0V4Y2VwdGlvbl0gY29uc3RydWN0b3IoKTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0NvbnRleHRTdGF0ZS5oIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0NvbnRleHRTdGF0ZS5oCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjE2MDEzMTEwOGZhNmE0YzE0YTlhZDYxN2I5MmNhMjE0NzQ0ODc4MGIKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQ29udGV4dFN0
YXRlLmgKQEAgLTAsMCArMSwzMiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE2LTIwMjAgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04KKyAqIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisg
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUworICogU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKK25h
bWVzcGFjZSBXZWJDb3JlIHsKKworZW51bSBjbGFzcyBBdWRpb0NvbnRleHRTdGF0ZSB7IFN1c3Bl
bmRlZCwgUnVubmluZywgSW50ZXJydXB0ZWQsIENsb3NlZCB9OworCit9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQ29udGV4dFN0YXRlLmlkbCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0U3RhdGUuaWRsCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLmM4ZDA4YmQyYjU2M2NkODI2ZWNjYTdmOTc5NDRjNzEzYThhN2VmNGIKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQ29udGV4dFN0
YXRlLmlkbApAQCAtMCwwICsxLDMxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwLCBHb29n
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDExIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OCisgKiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMKKyAqIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKK2VudW0gQXVkaW9Db250ZXh0U3Rh
dGUgeworICAgICJzdXNwZW5kZWQiLAorICAgICJydW5uaW5nIiwKKyAgICAiaW50ZXJydXB0ZWQi
LAorICAgICJjbG9zZWQiCit9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJhdWRpby9BdWRpb0Rlc3RpbmF0aW9uTm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmF1ZGlvL0F1ZGlvRGVzdGluYXRpb25Ob2RlLmNwcAppbmRleCBkOWFiYjk3NzdhOWQyNWVl
YWYyNDJmZjRmZmZjNWVjNWVmNDg2YzRlLi42Nzc2MTdlY2IzMzhkYTg5MWE3MTNhZTg4YTNmNWY2
NGY2ZmQ4NDlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1
ZGlvRGVzdGluYXRpb25Ob2RlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1
ZGlvL0F1ZGlvRGVzdGluYXRpb25Ob2RlLmNwcApAQCAtMzksNyArMzksNyBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAgICAgCiBXVEZfTUFLRV9JU09fQUxMT0NBVEVEX0lNUEwoQXVkaW9EZXN0aW5h
dGlvbk5vZGUpOwogCi1BdWRpb0Rlc3RpbmF0aW9uTm9kZTo6QXVkaW9EZXN0aW5hdGlvbk5vZGUo
QXVkaW9Db250ZXh0JiBjb250ZXh0LCBmbG9hdCBzYW1wbGVSYXRlKQorQXVkaW9EZXN0aW5hdGlv
bk5vZGU6OkF1ZGlvRGVzdGluYXRpb25Ob2RlKEF1ZGlvQ29udGV4dEJhc2UmIGNvbnRleHQsIGZs
b2F0IHNhbXBsZVJhdGUpCiAgICAgOiBBdWRpb05vZGUoY29udGV4dCwgc2FtcGxlUmF0ZSkKICAg
ICAsIG1fY3VycmVudFNhbXBsZUZyYW1lKDApCiAgICAgLCBtX2lzU2lsZW50KHRydWUpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvRGVzdGluYXRpb25O
b2RlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvRGVzdGluYXRpb25O
b2RlLmgKaW5kZXggODk0OGY0ZWU3MGE1YzBlODFhOGU4M2MxZjBjZDVmY2Y0NTFhY2M2MC4uMzc2
ZjQ2MjcxMmQ3ZjFjMmFlOGQ1MjAxMWZhMmExNWY2ZTE4YWVjNyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0Rlc3RpbmF0aW9uTm9kZS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9EZXN0aW5hdGlvbk5vZGUuaApAQCAt
MzYsNyArMzYsNyBAQCBjbGFzcyBBdWRpb0NvbnRleHQ7CiBjbGFzcyBBdWRpb0Rlc3RpbmF0aW9u
Tm9kZSA6IHB1YmxpYyBBdWRpb05vZGUsIHB1YmxpYyBBdWRpb0lPQ2FsbGJhY2sgewogICAgIFdU
Rl9NQUtFX0lTT19BTExPQ0FURUQoQXVkaW9EZXN0aW5hdGlvbk5vZGUpOwogcHVibGljOgotICAg
IEF1ZGlvRGVzdGluYXRpb25Ob2RlKEF1ZGlvQ29udGV4dCYsIGZsb2F0IHNhbXBsZVJhdGUpOwor
ICAgIEF1ZGlvRGVzdGluYXRpb25Ob2RlKEF1ZGlvQ29udGV4dEJhc2UmLCBmbG9hdCBzYW1wbGVS
YXRlKTsKICAgICB2aXJ0dWFsIH5BdWRpb0Rlc3RpbmF0aW9uTm9kZSgpOwogICAgIAogICAgIC8v
IEF1ZGlvTm9kZSAgIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRp
by9BdWRpb05vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb05v
ZGUuY3BwCmluZGV4IDc2NWVjZTMzMmY2MzY5YzQxOThmZTU3ZGQzYWU3Y2M1MTkzYjJhY2EuLmU1
NTQzNzc5ZDUxYTUwOGNlNjFhNmEwODMxMTJlOGQyZDBhODdkMGQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Ob2RlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvTm9kZS5jcHAKQEAgLTMzLDYgKzMzLDcgQEAKICNp
bmNsdWRlICJBdWRpb05vZGVPdXRwdXQuaCIKICNpbmNsdWRlICJBdWRpb1BhcmFtLmgiCiAjaW5j
bHVkZSAiTG9nZ2luZy5oIgorI2luY2x1ZGUgIldlYktpdEF1ZGlvQ29udGV4dC5oIgogI2luY2x1
ZGUgPHd0Zi9BdG9taWNzLmg+CiAjaW5jbHVkZSA8d3RmL0lzb01hbGxvY0lubGluZXMuaD4KICNp
bmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgpAQCAtOTUsNyArOTYsNyBAQCBTdHJpbmcgY29udmVy
dEVudW1lcmF0aW9uVG9TdHJpbmcoQXVkaW9Ob2RlOjpOb2RlVHlwZSBlbnVtZXJhdGlvblZhbHVl
KQogICAgIHJldHVybiB2YWx1ZXNbc3RhdGljX2Nhc3Q8c2l6ZV90PihlbnVtZXJhdGlvblZhbHVl
KV07CiB9CiAKLUF1ZGlvTm9kZTo6QXVkaW9Ob2RlKEF1ZGlvQ29udGV4dCYgY29udGV4dCwgZmxv
YXQgc2FtcGxlUmF0ZSkKK0F1ZGlvTm9kZTo6QXVkaW9Ob2RlKEF1ZGlvQ29udGV4dEJhc2UmIGNv
bnRleHQsIGZsb2F0IHNhbXBsZVJhdGUpCiAgICAgOiBtX2lzSW5pdGlhbGl6ZWQoZmFsc2UpCiAg
ICAgLCBtX25vZGVUeXBlKE5vZGVUeXBlVW5rbm93bikKICAgICAsIG1fY29udGV4dChjb250ZXh0
KQpAQCAtMTk0LDcgKzE5NSw3IEBAIEF1ZGlvTm9kZU91dHB1dCogQXVkaW9Ob2RlOjpvdXRwdXQo
dW5zaWduZWQgaSkKIEV4Y2VwdGlvbk9yPHZvaWQ+IEF1ZGlvTm9kZTo6Y29ubmVjdChBdWRpb05v
ZGUmIGRlc3RpbmF0aW9uLCB1bnNpZ25lZCBvdXRwdXRJbmRleCwgdW5zaWduZWQgaW5wdXRJbmRl
eCkKIHsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwotICAgIEF1ZGlvQ29udGV4dDo6QXV0
b0xvY2tlciBsb2NrZXIoY29udGV4dCgpKTsKKyAgICBBdWRpb0NvbnRleHRCYXNlOjpBdXRvTG9j
a2VyIGxvY2tlcihjb250ZXh0KCkpOwogCiAgICAgQUxXQVlTX0xPRyhMT0dJREVOVElGSUVSLCBk
ZXN0aW5hdGlvbi5ub2RlVHlwZSgpLCAiLCBvdXRwdXQgPSAiLCBvdXRwdXRJbmRleCwgIiwgaW5w
dXQgPSAiLCBpbnB1dEluZGV4KTsKICAgICAKQEAgLTIwNSw3ICsyMDYsNyBAQCBFeGNlcHRpb25P
cjx2b2lkPiBBdWRpb05vZGU6OmNvbm5lY3QoQXVkaW9Ob2RlJiBkZXN0aW5hdGlvbiwgdW5zaWdu
ZWQgb3V0cHV0SW5kZQogICAgIGlmIChpbnB1dEluZGV4ID49IGRlc3RpbmF0aW9uLm51bWJlck9m
SW5wdXRzKCkpCiAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBJbmRleFNpemVFcnJvciB9Owog
Ci0gICAgaWYgKGNvbnRleHQoKSAhPSBkZXN0aW5hdGlvbi5jb250ZXh0KCkpCisgICAgaWYgKCZj
b250ZXh0KCkgIT0gJmRlc3RpbmF0aW9uLmNvbnRleHQoKSkKICAgICAgICAgcmV0dXJuIEV4Y2Vw
dGlvbiB7IFN5bnRheEVycm9yIH07CiAKICAgICBhdXRvKiBpbnB1dCA9IGRlc3RpbmF0aW9uLmlu
cHV0KGlucHV0SW5kZXgpOwpAQCAtMjIwLDcgKzIyMSw3IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IEF1
ZGlvTm9kZTo6Y29ubmVjdChBdWRpb05vZGUmIGRlc3RpbmF0aW9uLCB1bnNpZ25lZCBvdXRwdXRJ
bmRlCiAKIEV4Y2VwdGlvbk9yPHZvaWQ+IEF1ZGlvTm9kZTo6Y29ubmVjdChBdWRpb1BhcmFtJiBw
YXJhbSwgdW5zaWduZWQgb3V0cHV0SW5kZXgpCiB7Ci0gICAgQXVkaW9Db250ZXh0OjpBdXRvTG9j
a2VyIGxvY2tlcihjb250ZXh0KCkpOworICAgIEF1ZGlvQ29udGV4dEJhc2U6OkF1dG9Mb2NrZXIg
bG9ja2VyKGNvbnRleHQoKSk7CiAKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogCkBAIC0y
MjksNyArMjMwLDcgQEAgRXhjZXB0aW9uT3I8dm9pZD4gQXVkaW9Ob2RlOjpjb25uZWN0KEF1ZGlv
UGFyYW0mIHBhcmFtLCB1bnNpZ25lZCBvdXRwdXRJbmRleCkKICAgICBpZiAob3V0cHV0SW5kZXgg
Pj0gbnVtYmVyT2ZPdXRwdXRzKCkpCiAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBJbmRleFNp
emVFcnJvciB9OwogCi0gICAgaWYgKGNvbnRleHQoKSAhPSBwYXJhbS5jb250ZXh0KCkpCisgICAg
aWYgKCZjb250ZXh0KCkgIT0gJnBhcmFtLmNvbnRleHQoKSkKICAgICAgICAgcmV0dXJuIEV4Y2Vw
dGlvbiB7IFN5bnRheEVycm9yIH07CiAKICAgICBhdXRvKiBvdXRwdXQgPSB0aGlzLT5vdXRwdXQo
b3V0cHV0SW5kZXgpOwpAQCAtMjQxLDcgKzI0Miw3IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IEF1ZGlv
Tm9kZTo6Y29ubmVjdChBdWRpb1BhcmFtJiBwYXJhbSwgdW5zaWduZWQgb3V0cHV0SW5kZXgpCiBF
eGNlcHRpb25Pcjx2b2lkPiBBdWRpb05vZGU6OmRpc2Nvbm5lY3QodW5zaWduZWQgb3V0cHV0SW5k
ZXgpCiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKLSAgICBBdWRpb0NvbnRleHQ6OkF1
dG9Mb2NrZXIgbG9ja2VyKGNvbnRleHQoKSk7CisgICAgQXVkaW9Db250ZXh0QmFzZTo6QXV0b0xv
Y2tlciBsb2NrZXIoY29udGV4dCgpKTsKIAogICAgIC8vIFNhbml0eSBjaGVjayBpbnB1dCBhbmQg
b3V0cHV0IGluZGljZXMuCiAgICAgaWYgKG91dHB1dEluZGV4ID49IG51bWJlck9mT3V0cHV0cygp
KQpAQCAtMjYzLDcgKzI2NCw3IEBAIHVuc2lnbmVkIEF1ZGlvTm9kZTo6Y2hhbm5lbENvdW50KCkK
IEV4Y2VwdGlvbk9yPHZvaWQ+IEF1ZGlvTm9kZTo6c2V0Q2hhbm5lbENvdW50KHVuc2lnbmVkIGNo
YW5uZWxDb3VudCkKIHsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwotICAgIEF1ZGlvQ29u
dGV4dDo6QXV0b0xvY2tlciBsb2NrZXIoY29udGV4dCgpKTsKKyAgICBBdWRpb0NvbnRleHRCYXNl
OjpBdXRvTG9ja2VyIGxvY2tlcihjb250ZXh0KCkpOwogCiAgICAgQUxXQVlTX0xPRyhMT0dJREVO
VElGSUVSLCBjaGFubmVsQ291bnQpOwogICAgIApAQCAtMjk2LDcgKzI5Nyw3IEBAIFN0cmluZyBB
dWRpb05vZGU6OmNoYW5uZWxDb3VudE1vZGUoKQogRXhjZXB0aW9uT3I8dm9pZD4gQXVkaW9Ob2Rl
OjpzZXRDaGFubmVsQ291bnRNb2RlKGNvbnN0IFN0cmluZyYgbW9kZSkKIHsKICAgICBBU1NFUlQo
aXNNYWluVGhyZWFkKCkpOwotICAgIEF1ZGlvQ29udGV4dDo6QXV0b0xvY2tlciBsb2NrZXIoY29u
dGV4dCgpKTsKKyAgICBBdWRpb0NvbnRleHRCYXNlOjpBdXRvTG9ja2VyIGxvY2tlcihjb250ZXh0
KCkpOwogCiAgICAgQUxXQVlTX0xPRyhMT0dJREVOVElGSUVSLCBtb2RlKTsKICAgICAKQEAgLTMz
Miw3ICszMzMsNyBAQCBTdHJpbmcgQXVkaW9Ob2RlOjpjaGFubmVsSW50ZXJwcmV0YXRpb24oKQog
RXhjZXB0aW9uT3I8dm9pZD4gQXVkaW9Ob2RlOjpzZXRDaGFubmVsSW50ZXJwcmV0YXRpb24oY29u
c3QgU3RyaW5nJiBpbnRlcnByZXRhdGlvbikKIHsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkp
OwotICAgIEF1ZGlvQ29udGV4dDo6QXV0b0xvY2tlciBsb2NrZXIoY29udGV4dCgpKTsKKyAgICBB
dWRpb0NvbnRleHRCYXNlOjpBdXRvTG9ja2VyIGxvY2tlcihjb250ZXh0KCkpOwogCiAgICAgQUxX
QVlTX0xPRyhMT0dJREVOVElGSUVSLCBpbnRlcnByZXRhdGlvbik7CiAgICAgCkBAIC00MzcsNyAr
NDM4LDcgQEAgdm9pZCBBdWRpb05vZGU6OmVuYWJsZU91dHB1dHNJZk5lY2Vzc2FyeSgpCiB7CiAg
ICAgaWYgKG1faXNEaXNhYmxlZCAmJiBtX2Nvbm5lY3Rpb25SZWZDb3VudCA+IDApIHsKICAgICAg
ICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKLSAgICAgICAgQXVkaW9Db250ZXh0OjpBdXRvTG9j
a2VyIGxvY2tlcihjb250ZXh0KCkpOworICAgICAgICBBdWRpb0NvbnRleHRCYXNlOjpBdXRvTG9j
a2VyIGxvY2tlcihjb250ZXh0KCkpOwogCiAgICAgICAgIG1faXNEaXNhYmxlZCA9IGZhbHNlOwog
ICAgICAgICBmb3IgKGF1dG8mIG91dHB1dCA6IG1fb3V0cHV0cykKQEAgLTUwMSw3ICs1MDIsNyBA
QCB2b2lkIEF1ZGlvTm9kZTo6ZGVyZWYoUmVmVHlwZSByZWZUeXBlKQogICAgIC8vIEluIHRoZSBj
YXNlIG9mIHRoZSBhdWRpbyB0aHJlYWQsIHdlIG11c3QgdXNlIGEgdHJ5TG9jayB0byBhdm9pZCBn
bGl0Y2hlcy4KICAgICBib29sIGhhc0xvY2sgPSBmYWxzZTsKICAgICBib29sIG11c3RSZWxlYXNl
TG9jayA9IGZhbHNlOwotICAgIAorCiAgICAgaWYgKGNvbnRleHQoKS5pc0F1ZGlvVGhyZWFkKCkp
IHsKICAgICAgICAgLy8gUmVhbC10aW1lIGF1ZGlvIHRocmVhZCBtdXN0IG5vdCBjb250ZW5kIGxv
Y2sgKHRvIGF2b2lkIGdsaXRjaGVzKS4KICAgICAgICAgaGFzTG9jayA9IGNvbnRleHQoKS50cnlM
b2NrKG11c3RSZWxlYXNlTG9jayk7CkBAIC01MzAsNiArNTMxLDEzIEBAIHZvaWQgQXVkaW9Ob2Rl
OjpkZXJlZihSZWZUeXBlIHJlZlR5cGUpCiAgICAgICAgIGNvbnRleHQoKS5kZWxldGVNYXJrZWRO
b2RlcygpOwogfQogCitWYXJpYW50PFJlZlB0cjxBdWRpb0NvbnRleHQ+LCBSZWZQdHI8V2ViS2l0
QXVkaW9Db250ZXh0Pj4gQXVkaW9Ob2RlOjpjb250ZXh0Rm9yQmluZGluZ3MoKSBjb25zdAorewor
ICAgIGlmIChtX2NvbnRleHQtPmlzV2ViS2l0QXVkaW9Db250ZXh0KCkpCisgICAgICAgIHJldHVy
biBtYWtlUmVmUHRyKHN0YXRpY19jYXN0PFdlYktpdEF1ZGlvQ29udGV4dCY+KG1fY29udGV4dC5n
ZXQoKSkpOworICAgIHJldHVybiBtYWtlUmVmUHRyKHN0YXRpY19jYXN0PEF1ZGlvQ29udGV4dCY+
KG1fY29udGV4dC5nZXQoKSkpOworfQorCiB2b2lkIEF1ZGlvTm9kZTo6ZmluaXNoRGVyZWYoUmVm
VHlwZSByZWZUeXBlKQogewogICAgIEFTU0VSVChjb250ZXh0KCkuaXNHcmFwaE93bmVyKCkpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb05vZGUuaCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Ob2RlLmgKaW5kZXggNDIxMDEw
MDZjYzdmNTRlZTc1YWRmNzA3MmVmYmU2NGJhYzU4ZDM2ZC4uYTk4ODFiZDRiOGRiNGMzYjEwZjlk
NzcxMTY1NjI2MDBjMTgwZmM5MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJhdWRpby9BdWRpb05vZGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlv
L0F1ZGlvTm9kZS5oCkBAIC0yOSwxNSArMjksMTggQEAKICNpbmNsdWRlICJFeGNlcHRpb25Pci5o
IgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8d3RmL0xvZ2dlckhlbHBlci5o
PgorI2luY2x1ZGUgPHd0Zi9WYXJpYW50Lmg+CiAKICNkZWZpbmUgREVCVUdfQVVESU9OT0RFX1JF
RkVSRU5DRVMgMAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEF1ZGlvQ29udGV4dDsK
K2NsYXNzIEF1ZGlvQ29udGV4dEJhc2U7CiBjbGFzcyBBdWRpb05vZGVJbnB1dDsKIGNsYXNzIEF1
ZGlvTm9kZU91dHB1dDsKIGNsYXNzIEF1ZGlvUGFyYW07CitjbGFzcyBXZWJLaXRBdWRpb0NvbnRl
eHQ7CiAKIC8vIEFuIEF1ZGlvTm9kZSBpcyB0aGUgYmFzaWMgYnVpbGRpbmcgYmxvY2sgZm9yIGhh
bmRsaW5nIGF1ZGlvIHdpdGhpbiBhbiBBdWRpb0NvbnRleHQuCiAvLyBJdCBtYXkgYmUgYW4gYXVk
aW8gc291cmNlLCBhbiBpbnRlcm1lZGlhdGUgcHJvY2Vzc2luZyBtb2R1bGUsIG9yIGFuIGF1ZGlv
IGRlc3RpbmF0aW9uLgpAQCAtNTYsMTEgKzU5LDEzIEBAIGNsYXNzIEF1ZGlvTm9kZQogcHVibGlj
OgogICAgIGVudW0geyBQcm9jZXNzaW5nU2l6ZUluRnJhbWVzID0gMTI4IH07CiAKLSAgICBBdWRp
b05vZGUoQXVkaW9Db250ZXh0JiwgZmxvYXQgc2FtcGxlUmF0ZSk7CisgICAgQXVkaW9Ob2RlKEF1
ZGlvQ29udGV4dEJhc2UmLCBmbG9hdCBzYW1wbGVSYXRlKTsKICAgICB2aXJ0dWFsIH5BdWRpb05v
ZGUoKTsKIAotICAgIEF1ZGlvQ29udGV4dCYgY29udGV4dCgpIHsgcmV0dXJuIG1fY29udGV4dC5n
ZXQoKTsgfQotICAgIGNvbnN0IEF1ZGlvQ29udGV4dCYgY29udGV4dCgpIGNvbnN0IHsgcmV0dXJu
IG1fY29udGV4dC5nZXQoKTsgfQorICAgIEF1ZGlvQ29udGV4dEJhc2UmIGNvbnRleHQoKSB7IHJl
dHVybiBtX2NvbnRleHQuZ2V0KCk7IH0KKyAgICBjb25zdCBBdWRpb0NvbnRleHRCYXNlJiBjb250
ZXh0KCkgY29uc3QgeyByZXR1cm4gbV9jb250ZXh0LmdldCgpOyB9CisKKyAgICBWYXJpYW50PFJl
ZlB0cjxBdWRpb0NvbnRleHQ+LCBSZWZQdHI8V2ViS2l0QXVkaW9Db250ZXh0Pj4gY29udGV4dEZv
ckJpbmRpbmdzKCkgY29uc3Q7CiAKICAgICBlbnVtIE5vZGVUeXBlIHsKICAgICAgICAgTm9kZVR5
cGVVbmtub3duLApAQCAtMjA5LDcgKzIxNCw3IEBAIHByaXZhdGU6CiAKICAgICB2b2xhdGlsZSBi
b29sIG1faXNJbml0aWFsaXplZDsKICAgICBOb2RlVHlwZSBtX25vZGVUeXBlOwotICAgIFJlZjxB
dWRpb0NvbnRleHQ+IG1fY29udGV4dDsKKyAgICBSZWY8QXVkaW9Db250ZXh0QmFzZT4gbV9jb250
ZXh0OwogICAgIGZsb2F0IG1fc2FtcGxlUmF0ZTsKICAgICBWZWN0b3I8c3RkOjp1bmlxdWVfcHRy
PEF1ZGlvTm9kZUlucHV0Pj4gbV9pbnB1dHM7CiAgICAgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxB
dWRpb05vZGVPdXRwdXQ+PiBtX291dHB1dHM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmF1ZGlvL0F1ZGlvTm9kZS5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmF1ZGlvL0F1ZGlvTm9kZS5pZGwKaW5kZXggNzBmZWM4YzgxNDUwNTk5MWUyMGFkOGMxYzkyY2Mx
MWVlZTk2ODQyZi4uNzE5MzljODMxNzE0YmZiZjM2ZGZiYWU1MmZiYzNkM2QyMDJmNjYyMSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb05vZGUuaWRsCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Ob2RlLmlkbApAQCAtMjUs
NyArMjUsNyBAQAogWwogICAgIENvbmRpdGlvbmFsPVdFQl9BVURJTywKIF0gaW50ZXJmYWNlIEF1
ZGlvTm9kZSA6IEV2ZW50VGFyZ2V0IHsKLSAgICByZWFkb25seSBhdHRyaWJ1dGUgQXVkaW9Db250
ZXh0IGNvbnRleHQ7CisgICAgW0ltcGxlbWVudGVkQXM9Y29udGV4dEZvckJpbmRpbmdzXSByZWFk
b25seSBhdHRyaWJ1dGUgKEF1ZGlvQ29udGV4dCBvciBXZWJLaXRBdWRpb0NvbnRleHQpIGNvbnRl
eHQ7CiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIHVuc2lnbmVkIGxvbmcgbnVtYmVyT2ZJbnB1dHM7
CiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIHVuc2lnbmVkIGxvbmcgbnVtYmVyT2ZPdXRwdXRzOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvTm9kZU91
dHB1dC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb05vZGVPdXRwdXQu
aAppbmRleCA1MGE5NWVlMjA1YzEyMDMwOTNjYTVmYzMwNzE3OTkxMzUzMmQ3M2E0Li5mMDg5ODM2
MzVmM2M1NTljNzk4MWYwYmE0YTVjMTIyYjE1OWMyY2I1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvTm9kZU91dHB1dC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Ob2RlT3V0cHV0LmgKQEAgLTQ3LDcgKzQ3LDcgQEAg
cHVibGljOgogCiAgICAgLy8gQ2FuIGJlIGNhbGxlZCBmcm9tIGFueSB0aHJlYWQuCiAgICAgQXVk
aW9Ob2RlKiBub2RlKCkgY29uc3QgeyByZXR1cm4gbV9ub2RlOyB9Ci0gICAgQXVkaW9Db250ZXh0
JiBjb250ZXh0KCkgeyByZXR1cm4gbV9ub2RlLT5jb250ZXh0KCk7IH0KKyAgICBBdWRpb0NvbnRl
eHRCYXNlJiBjb250ZXh0KCkgeyByZXR1cm4gbV9ub2RlLT5jb250ZXh0KCk7IH0KICAgICAKICAg
ICAvLyBDYXVzZXMgb3VyIEF1ZGlvTm9kZSB0byBwcm9jZXNzIGlmIGl0IGhhc24ndCBhbHJlYWR5
IGZvciB0aGlzIHJlbmRlciBxdWFudHVtLgogICAgIC8vIEl0IHJldHVybnMgdGhlIGJ1cyBjb250
YWluaW5nIHRoZSBwcm9jZXNzZWQgYXVkaW8gZm9yIHRoaXMgb3V0cHV0LCByZXR1cm5pbmcgaW5Q
bGFjZUJ1cyBpZiBpbi1wbGFjZSBwcm9jZXNzaW5nIHdhcyBwb3NzaWJsZS4KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9QYXJhbS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvUGFyYW0uY3BwCmluZGV4IDI5MzQ1NjQ0NWNj
MGUxYmRhOWQwMGQyYmQ5YTJjMGQxMTEwM2RjYzkuLmQ0NzBiZjc0NmVmYjVhYjIzY2EzNTJkN2Jk
OTUzMzhjMzgxNGZlN2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVk
aW8vQXVkaW9QYXJhbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9B
dWRpb1BhcmFtLmNwcApAQCAtNDEsNyArNDEsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjb25z
dCBkb3VibGUgQXVkaW9QYXJhbTo6RGVmYXVsdFNtb290aGluZ0NvbnN0YW50ID0gMC4wNTsKIGNv
bnN0IGRvdWJsZSBBdWRpb1BhcmFtOjpTbmFwVGhyZXNob2xkID0gMC4wMDE7CiAKLUF1ZGlvUGFy
YW06OkF1ZGlvUGFyYW0oQXVkaW9Db250ZXh0JiBjb250ZXh0LCBjb25zdCBTdHJpbmcmIG5hbWUs
IGRvdWJsZSBkZWZhdWx0VmFsdWUsIGRvdWJsZSBtaW5WYWx1ZSwgZG91YmxlIG1heFZhbHVlLCB1
bnNpZ25lZCB1bml0cykKK0F1ZGlvUGFyYW06OkF1ZGlvUGFyYW0oQXVkaW9Db250ZXh0QmFzZSYg
Y29udGV4dCwgY29uc3QgU3RyaW5nJiBuYW1lLCBkb3VibGUgZGVmYXVsdFZhbHVlLCBkb3VibGUg
bWluVmFsdWUsIGRvdWJsZSBtYXhWYWx1ZSwgdW5zaWduZWQgdW5pdHMpCiAgICAgOiBBdWRpb1N1
bW1pbmdKdW5jdGlvbihjb250ZXh0KQogICAgICwgbV9uYW1lKG5hbWUpCiAgICAgLCBtX3ZhbHVl
KGRlZmF1bHRWYWx1ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVk
aW8vQXVkaW9QYXJhbS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1Bh
cmFtLmgKaW5kZXggMjI2Yzk1N2U3MDZmZTYxZDJmMjMzYzBkNWJmOTZmMjA2ODczMWM0Mi4uMTZh
MjEwOTUwNDRmNjAxZWQyN2I4OTAxYTA3NjhmMmZhOWViMTZlNiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1BhcmFtLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1BhcmFtLmgKQEAgLTMxLDYgKzMxLDcgQEAKICNpbmNs
dWRlICJBdWRpb0NvbnRleHQuaCIKICNpbmNsdWRlICJBdWRpb1BhcmFtVGltZWxpbmUuaCIKICNp
bmNsdWRlICJBdWRpb1N1bW1pbmdKdW5jdGlvbi5oIgorI2luY2x1ZGUgIldlYktpdEF1ZGlvQ29u
dGV4dC5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0Zsb2F0MzJBcnJheS5oPgogI2luY2x1
ZGUgPHN5cy90eXBlcy5oPgogI2luY2x1ZGUgPHd0Zi9Mb2dnZXJIZWxwZXIuaD4KQEAgLTUyLDcg
KzUzLDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBjb25zdCBkb3VibGUgRGVmYXVsdFNtb290aGlu
Z0NvbnN0YW50OwogICAgIHN0YXRpYyBjb25zdCBkb3VibGUgU25hcFRocmVzaG9sZDsKIAotICAg
IHN0YXRpYyBSZWY8QXVkaW9QYXJhbT4gY3JlYXRlKEF1ZGlvQ29udGV4dCYgY29udGV4dCwgY29u
c3QgU3RyaW5nJiBuYW1lLCBkb3VibGUgZGVmYXVsdFZhbHVlLCBkb3VibGUgbWluVmFsdWUsIGRv
dWJsZSBtYXhWYWx1ZSwgdW5zaWduZWQgdW5pdHMgPSAwKQorICAgIHN0YXRpYyBSZWY8QXVkaW9Q
YXJhbT4gY3JlYXRlKEF1ZGlvQ29udGV4dEJhc2UmIGNvbnRleHQsIGNvbnN0IFN0cmluZyYgbmFt
ZSwgZG91YmxlIGRlZmF1bHRWYWx1ZSwgZG91YmxlIG1pblZhbHVlLCBkb3VibGUgbWF4VmFsdWUs
IHVuc2lnbmVkIHVuaXRzID0gMCkKICAgICB7CiAgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3
IEF1ZGlvUGFyYW0oY29udGV4dCwgbmFtZSwgZGVmYXVsdFZhbHVlLCBtaW5WYWx1ZSwgbWF4VmFs
dWUsIHVuaXRzKSk7CiAgICAgfQpAQCAtMTA4LDcgKzEwOSw3IEBAIHB1YmxpYzoKICAgICB2b2lk
IGRpc2Nvbm5lY3QoQXVkaW9Ob2RlT3V0cHV0Kik7CiAKIHByb3RlY3RlZDoKLSAgICBBdWRpb1Bh
cmFtKEF1ZGlvQ29udGV4dCYsIGNvbnN0IFN0cmluZyYsIGRvdWJsZSBkZWZhdWx0VmFsdWUsIGRv
dWJsZSBtaW5WYWx1ZSwgZG91YmxlIG1heFZhbHVlLCB1bnNpZ25lZCB1bml0cyA9IDApOworICAg
IEF1ZGlvUGFyYW0oQXVkaW9Db250ZXh0QmFzZSYsIGNvbnN0IFN0cmluZyYsIGRvdWJsZSBkZWZh
dWx0VmFsdWUsIGRvdWJsZSBtaW5WYWx1ZSwgZG91YmxlIG1heFZhbHVlLCB1bnNpZ25lZCB1bml0
cyA9IDApOwogCiBwcml2YXRlOgogICAgIC8vIHNhbXBsZUFjY3VyYXRlIGNvcnJlc3BvbmRzIHRv
IGEtcmF0ZSAoYXVkaW8gcmF0ZSkgdnMuIGstcmF0ZSBpbiB0aGUgV2ViIEF1ZGlvIHNwZWNpZmlj
YXRpb24uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlv
UGFyYW1UaW1lbGluZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlv
UGFyYW1UaW1lbGluZS5jcHAKaW5kZXggMmI1OTU3MGJmNmU2MWI1NDgzZWQxYjkwN2U2NzZmNjli
ZTliMzc0Mi4uNmM0MTMwMWQ4YWQ1YTdhYmJlOGRiMGRiYTE3Y2Y4NDRiZmVmZmI2MCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1BhcmFtVGltZWxpbmUu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9QYXJhbVRpbWVs
aW5lLmNwcApAQCAtMTEzLDcgKzExMyw3IEBAIHZvaWQgQXVkaW9QYXJhbVRpbWVsaW5lOjpjYW5j
ZWxTY2hlZHVsZWRWYWx1ZXMoZmxvYXQgc3RhcnRUaW1lKQogICAgIH0KIH0KIAotZmxvYXQgQXVk
aW9QYXJhbVRpbWVsaW5lOjp2YWx1ZUZvckNvbnRleHRUaW1lKEF1ZGlvQ29udGV4dCYgY29udGV4
dCwgZmxvYXQgZGVmYXVsdFZhbHVlLCBib29sJiBoYXNWYWx1ZSkKK2Zsb2F0IEF1ZGlvUGFyYW1U
aW1lbGluZTo6dmFsdWVGb3JDb250ZXh0VGltZShBdWRpb0NvbnRleHRCYXNlJiBjb250ZXh0LCBm
bG9hdCBkZWZhdWx0VmFsdWUsIGJvb2wmIGhhc1ZhbHVlKQogewogICAgIHsKICAgICAgICAgc3Rk
Ojp1bmlxdWVfbG9jazxMb2NrPiBsb2NrKG1fZXZlbnRzTXV0ZXgsIHN0ZDo6dHJ5X3RvX2xvY2sp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1BhcmFt
VGltZWxpbmUuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9QYXJhbVRp
bWVsaW5lLmgKaW5kZXggN2MxMDk5OTU2Y2VlYmM4ZDhmNmQ1MGUwZmIwZmM5YTFlZWZkYTM0ZC4u
YTU4NjhiZGVlMTgzZmRlMmE3MDhkNDY0Y2U2MzViMjQwMGU3NjFhMiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1BhcmFtVGltZWxpbmUuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvUGFyYW1UaW1lbGluZS5oCkBAIC01
Miw3ICs1Miw3IEBAIHB1YmxpYzoKIAogICAgIC8vIGhhc1ZhbHVlIGlzIHNldCB0byB0cnVlIGlm
IGEgdmFsaWQgdGltZWxpbmUgdmFsdWUgaXMgcmV0dXJuZWQuCiAgICAgLy8gb3RoZXJ3aXNlIGRl
ZmF1bHRWYWx1ZSBpcyByZXR1cm5lZC4KLSAgICBmbG9hdCB2YWx1ZUZvckNvbnRleHRUaW1lKEF1
ZGlvQ29udGV4dCYsIGZsb2F0IGRlZmF1bHRWYWx1ZSwgYm9vbCYgaGFzVmFsdWUpOworICAgIGZs
b2F0IHZhbHVlRm9yQ29udGV4dFRpbWUoQXVkaW9Db250ZXh0QmFzZSYsIGZsb2F0IGRlZmF1bHRW
YWx1ZSwgYm9vbCYgaGFzVmFsdWUpOwogCiAgICAgLy8gR2l2ZW4gdGhlIHRpbWUgcmFuZ2UsIGNh
bGN1bGF0ZXMgcGFyYW1ldGVyIHZhbHVlcyBpbnRvIHRoZSB2YWx1ZXMgYnVmZmVyCiAgICAgLy8g
YW5kIHJldHVybnMgdGhlIGxhc3QgcGFyYW1ldGVyIHZhbHVlIGNhbGN1bGF0ZWQgZm9yICJ2YWx1
ZXMiIG9yIHRoZSBkZWZhdWx0VmFsdWUgaWYgbm9uZSB3ZXJlIGNhbGN1bGF0ZWQuCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvU2NoZWR1bGVkU291cmNl
Tm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvU2NoZWR1bGVk
U291cmNlTm9kZS5jcHAKaW5kZXggMGY3MjY3NmZjNzQzYzRjZTI0MWFlZTNjOTBkMDI4ZjZhOTUy
NzAyMy4uN2MyODIzN2EwYmQwMzVlNGMzYWI3YmE1MTM3NTMzYmQ5MTVhN2U2MSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1NjaGVkdWxlZFNvdXJjZU5v
ZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9TY2hlZHVs
ZWRTb3VyY2VOb2RlLmNwcApAQCAtNDksNyArNDksNyBAQCBXVEZfTUFLRV9JU09fQUxMT0NBVEVE
X0lNUEwoQXVkaW9TY2hlZHVsZWRTb3VyY2VOb2RlKTsKIAogY29uc3QgZG91YmxlIEF1ZGlvU2No
ZWR1bGVkU291cmNlTm9kZTo6VW5rbm93blRpbWUgPSAtMTsKIAotQXVkaW9TY2hlZHVsZWRTb3Vy
Y2VOb2RlOjpBdWRpb1NjaGVkdWxlZFNvdXJjZU5vZGUoQXVkaW9Db250ZXh0JiBjb250ZXh0LCBm
bG9hdCBzYW1wbGVSYXRlKQorQXVkaW9TY2hlZHVsZWRTb3VyY2VOb2RlOjpBdWRpb1NjaGVkdWxl
ZFNvdXJjZU5vZGUoQXVkaW9Db250ZXh0QmFzZSYgY29udGV4dCwgZmxvYXQgc2FtcGxlUmF0ZSkK
ICAgICA6IEF1ZGlvTm9kZShjb250ZXh0LCBzYW1wbGVSYXRlKQogICAgICwgQWN0aXZlRE9NT2Jq
ZWN0KGNvbnRleHQuc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKQogICAgICwgbV9lbmRUaW1lKFVu
a25vd25UaW1lKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9B
dWRpb1NjaGVkdWxlZFNvdXJjZU5vZGUuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVk
aW8vQXVkaW9TY2hlZHVsZWRTb3VyY2VOb2RlLmgKaW5kZXggOGNhZGJlMTBhZmQzYTRkN2VjZTIw
MjIwMjQ0Mzg3ZjRjZTE0YzJlNC4uYjRkOTU4ODBjMWRmMzY2ZjgyMWUxYWJmY2ZjYTc3ZDc2MTEw
ZWEzZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1Nj
aGVkdWxlZFNvdXJjZU5vZGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlv
L0F1ZGlvU2NoZWR1bGVkU291cmNlTm9kZS5oCkBAIC01Myw3ICs1Myw3IEBAIHB1YmxpYzoKICAg
ICAgICAgRklOSVNIRURfU1RBVEUgPSAzCiAgICAgfTsKICAgICAKLSAgICBBdWRpb1NjaGVkdWxl
ZFNvdXJjZU5vZGUoQXVkaW9Db250ZXh0JiwgZmxvYXQgc2FtcGxlUmF0ZSk7CisgICAgQXVkaW9T
Y2hlZHVsZWRTb3VyY2VOb2RlKEF1ZGlvQ29udGV4dEJhc2UmLCBmbG9hdCBzYW1wbGVSYXRlKTsK
IAogICAgIEV4Y2VwdGlvbk9yPHZvaWQ+IHN0YXJ0TGF0ZXIoZG91YmxlIHdoZW4pOwogICAgIEV4
Y2VwdGlvbk9yPHZvaWQ+IHN0b3BMYXRlcihkb3VibGUgd2hlbik7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvU3VtbWluZ0p1bmN0aW9uLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9TdW1taW5nSnVuY3Rpb24uY3BwCmlu
ZGV4IGVlNjAwYTYyOWExYjg2OWNkOWE1YjNkMzcyYWU0NzZhM2UxMjdmYjAuLmRkNjRmZDNlYTgx
MzExZjAwZTA4YzNjYTQxZDc0MjhmMWYxZjM4NzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViYXVkaW8vQXVkaW9TdW1taW5nSnVuY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9TdW1taW5nSnVuY3Rpb24uY3BwCkBAIC0zNCw3
ICszNCw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotQXVkaW9TdW1taW5nSnVuY3Rpb246
OkF1ZGlvU3VtbWluZ0p1bmN0aW9uKEF1ZGlvQ29udGV4dCYgY29udGV4dCkKK0F1ZGlvU3VtbWlu
Z0p1bmN0aW9uOjpBdWRpb1N1bW1pbmdKdW5jdGlvbihBdWRpb0NvbnRleHRCYXNlJiBjb250ZXh0
KQogICAgIDogbV9jb250ZXh0KGNvbnRleHQpCiAgICAgLCBtX3JlbmRlcmluZ1N0YXRlTmVlZFVw
ZGF0aW5nKGZhbHNlKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJh
dWRpby9BdWRpb1N1bW1pbmdKdW5jdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJh
dWRpby9BdWRpb1N1bW1pbmdKdW5jdGlvbi5oCmluZGV4IGM5NGZmNmQ2YTVhZWQxMTEwMjA4YzQ3
NjQzODNkN2U1NmZkODQ2M2IuLjRjYmY4YWU5ZmI5NTFiNzgyMDc2YjBjYjUyNjExNmMxOWQ0YWVj
OWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9TdW1t
aW5nSnVuY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlv
U3VtbWluZ0p1bmN0aW9uLmgKQEAgLTMwLDE4ICszMCwxOCBAQAogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKLWNsYXNzIEF1ZGlvQ29udGV4dDsKK2NsYXNzIEF1ZGlvQ29udGV4dEJhc2U7CiBjbGFz
cyBBdWRpb05vZGVPdXRwdXQ7CiAKIC8vIEFuIEF1ZGlvU3VtbWluZ0p1bmN0aW9uIHJlcHJlc2Vu
dHMgYSBwb2ludCB3aGVyZSB6ZXJvLCBvbmUsIG9yIG1vcmUgQXVkaW9Ob2RlT3V0cHV0cyBjb25u
ZWN0LgogCiBjbGFzcyBBdWRpb1N1bW1pbmdKdW5jdGlvbiB7CiBwdWJsaWM6Ci0gICAgZXhwbGlj
aXQgQXVkaW9TdW1taW5nSnVuY3Rpb24oQXVkaW9Db250ZXh0Jik7CisgICAgZXhwbGljaXQgQXVk
aW9TdW1taW5nSnVuY3Rpb24oQXVkaW9Db250ZXh0QmFzZSYpOwogICAgIHZpcnR1YWwgfkF1ZGlv
U3VtbWluZ0p1bmN0aW9uKCk7CiAKICAgICAvLyBDYW4gYmUgY2FsbGVkIGZyb20gYW55IHRocmVh
ZC4KLSAgICBBdWRpb0NvbnRleHQmIGNvbnRleHQoKSB7IHJldHVybiBtX2NvbnRleHQuZ2V0KCk7
IH0KKyAgICBBdWRpb0NvbnRleHRCYXNlJiBjb250ZXh0KCkgeyByZXR1cm4gbV9jb250ZXh0OyB9
CiAKICAgICAvLyBUaGlzIG11c3QgYmUgY2FsbGVkIHdoZW5ldmVyIHdlIG1vZGlmeSBtX291dHB1
dHMuCiAgICAgdm9pZCBjaGFuZ2VkT3V0cHV0cygpOwpAQCAtNjAsNyArNjAsNyBAQCBwdWJsaWM6
CiAgICAgdmlydHVhbCB2b2lkIGRpZFVwZGF0ZSgpID0gMDsKIAogcHJvdGVjdGVkOgotICAgIFJl
ZjxBdWRpb0NvbnRleHQ+IG1fY29udGV4dDsKKyAgICBSZWY8QXVkaW9Db250ZXh0QmFzZT4gbV9j
b250ZXh0OwogCiAgICAgLy8gbV9vdXRwdXRzIGNvbnRhaW5zIHRoZSBBdWRpb05vZGVPdXRwdXRz
IHJlcHJlc2VudGluZyBjdXJyZW50IGNvbm5lY3Rpb25zIHdoaWNoIGFyZSBub3QgZGlzYWJsZWQu
CiAgICAgLy8gVGhlIHJlbmRlcmluZyBjb2RlIHNob3VsZCBuZXZlciB1c2UgdGhpcyBkaXJlY3Rs
eSwgYnV0IGluc3RlYWQgdXNlcyBtX3JlbmRlcmluZ091dHB1dHMuCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0JpcXVhZEZpbHRlck5vZGUuY3BwIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9CaXF1YWRGaWx0ZXJOb2RlLmNwcAppbmRleCA0YTgy
NTVlNmYwYWYwNzY3MTM4ZTQ2ODk4ZjhiNjM2YWIyZDc1NmU1Li5kZGUwNzczZDQ3M2QyNzIyYTVi
NTNkYzg2OTA2ZDM5MzcwY2JmZjQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmF1ZGlvL0JpcXVhZEZpbHRlck5vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViYXVkaW8vQmlxdWFkRmlsdGVyTm9kZS5jcHAKQEAgLTMzLDcgKzMzLDcgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogCiBXVEZfTUFLRV9JU09fQUxMT0NBVEVEX0lNUEwoQmlxdWFkRmlsdGVy
Tm9kZSk7CiAKLUJpcXVhZEZpbHRlck5vZGU6OkJpcXVhZEZpbHRlck5vZGUoQXVkaW9Db250ZXh0
JiBjb250ZXh0LCBmbG9hdCBzYW1wbGVSYXRlKQorQmlxdWFkRmlsdGVyTm9kZTo6QmlxdWFkRmls
dGVyTm9kZShBdWRpb0NvbnRleHRCYXNlJiBjb250ZXh0LCBmbG9hdCBzYW1wbGVSYXRlKQogICAg
IDogQXVkaW9CYXNpY1Byb2Nlc3Nvck5vZGUoY29udGV4dCwgc2FtcGxlUmF0ZSkKIHsKICAgICBz
ZXROb2RlVHlwZShOb2RlVHlwZUJpcXVhZEZpbHRlcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0JpcXVhZEZpbHRlck5vZGUuaCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViYXVkaW8vQmlxdWFkRmlsdGVyTm9kZS5oCmluZGV4IDgwOTRkOTFlYWIzYjky
YjE0OGE4NjI0MDkzMjZmNjVlZDliOTAxM2MuLmFjOGQ5NDdhMTBmN2FlNmEzM2YwM2EyZDA5ODQw
YzhlNmMxZTU0Y2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8v
QmlxdWFkRmlsdGVyTm9kZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8v
QmlxdWFkRmlsdGVyTm9kZS5oCkBAIC0zNCw3ICszNCw3IEBAIGNsYXNzIEF1ZGlvUGFyYW07CiBj
bGFzcyBCaXF1YWRGaWx0ZXJOb2RlIGZpbmFsIDogcHVibGljIEF1ZGlvQmFzaWNQcm9jZXNzb3JO
b2RlIHsKICAgICBXVEZfTUFLRV9JU09fQUxMT0NBVEVEKEJpcXVhZEZpbHRlck5vZGUpOwogcHVi
bGljOgotICAgIHN0YXRpYyBSZWY8QmlxdWFkRmlsdGVyTm9kZT4gY3JlYXRlKEF1ZGlvQ29udGV4
dCYgY29udGV4dCwgZmxvYXQgc2FtcGxlUmF0ZSkKKyAgICBzdGF0aWMgUmVmPEJpcXVhZEZpbHRl
ck5vZGU+IGNyZWF0ZShBdWRpb0NvbnRleHRCYXNlJiBjb250ZXh0LCBmbG9hdCBzYW1wbGVSYXRl
KQogICAgIHsKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQmlxdWFkRmlsdGVyTm9kZShj
b250ZXh0LCBzYW1wbGVSYXRlKSk7CiAgICAgfQpAQCAtNTIsNyArNTIsNyBAQCBwdWJsaWM6CiAg
ICAgdm9pZCBnZXRGcmVxdWVuY3lSZXNwb25zZShjb25zdCBSZWZQdHI8RmxvYXQzMkFycmF5PiYg
ZnJlcXVlbmN5SHosIGNvbnN0IFJlZlB0cjxGbG9hdDMyQXJyYXk+JiBtYWdSZXNwb25zZSwgY29u
c3QgUmVmUHRyPEZsb2F0MzJBcnJheT4mIHBoYXNlUmVzcG9uc2UpOwogCiBwcml2YXRlOgotICAg
IEJpcXVhZEZpbHRlck5vZGUoQXVkaW9Db250ZXh0JiwgZmxvYXQgc2FtcGxlUmF0ZSk7CisgICAg
QmlxdWFkRmlsdGVyTm9kZShBdWRpb0NvbnRleHRCYXNlJiwgZmxvYXQgc2FtcGxlUmF0ZSk7CiAK
ICAgICBCaXF1YWRQcm9jZXNzb3IqIGJpcXVhZFByb2Nlc3NvcigpIHsgcmV0dXJuIHN0YXRpY19j
YXN0PEJpcXVhZFByb2Nlc3Nvcio+KHByb2Nlc3NvcigpKTsgfQogfTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQmlxdWFkUHJvY2Vzc29yLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQmlxdWFkUHJvY2Vzc29yLmNwcAppbmRleCBlODRi
OTgwMzU2NzBmYjFkY2MzMjcwOTY2M2QyYjM5MDU1MmU2NWViLi4yZjYwNjdhNzJkY2VjMzNjM2Yw
ZDBkZTlkOTdlNGI2OTc2OTYyNmE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmF1ZGlvL0JpcXVhZFByb2Nlc3Nvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJhdWRpby9CaXF1YWRQcm9jZXNzb3IuY3BwCkBAIC0zMiw3ICszMiw3IEBACiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKICAgICAKLUJpcXVhZFByb2Nlc3Nvcjo6QmlxdWFkUHJvY2Vzc29yKEF1
ZGlvQ29udGV4dCYgY29udGV4dCwgZmxvYXQgc2FtcGxlUmF0ZSwgc2l6ZV90IG51bWJlck9mQ2hh
bm5lbHMsIGJvb2wgYXV0b0luaXRpYWxpemUpCitCaXF1YWRQcm9jZXNzb3I6OkJpcXVhZFByb2Nl
c3NvcihBdWRpb0NvbnRleHRCYXNlJiBjb250ZXh0LCBmbG9hdCBzYW1wbGVSYXRlLCBzaXplX3Qg
bnVtYmVyT2ZDaGFubmVscywgYm9vbCBhdXRvSW5pdGlhbGl6ZSkKICAgICA6IEF1ZGlvRFNQS2Vy
bmVsUHJvY2Vzc29yKHNhbXBsZVJhdGUsIG51bWJlck9mQ2hhbm5lbHMpCiAgICAgLCBtX3R5cGUo
QmlxdWFkRmlsdGVyVHlwZTo6TG93cGFzcykKICAgICAsIG1fcGFyYW1ldGVyMSgwKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9CaXF1YWRQcm9jZXNzb3IuaCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQmlxdWFkUHJvY2Vzc29yLmgKaW5kZXgg
YWRiZWVjNDMwMjVhZjAzYWYxN2UxMTUxYWJiZWZmZWVlZTc3ZjYzMi4uZGMzMDZhYjUxN2IzMjRi
YjFjYzU2YTI4OGQwZTQ5ZjFhOGU0ZTkwNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJhdWRpby9CaXF1YWRQcm9jZXNzb3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmF1ZGlvL0JpcXVhZFByb2Nlc3Nvci5oCkBAIC01MCw3ICs1MCw3IEBAIGVudW0gY2xh
c3MgQmlxdWFkRmlsdGVyVHlwZSB7CiBjbGFzcyBCaXF1YWRQcm9jZXNzb3IgZmluYWwgOiBwdWJs
aWMgQXVkaW9EU1BLZXJuZWxQcm9jZXNzb3IgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVE
OwogcHVibGljOgotICAgIEJpcXVhZFByb2Nlc3NvcihBdWRpb0NvbnRleHQmLCBmbG9hdCBzYW1w
bGVSYXRlLCBzaXplX3QgbnVtYmVyT2ZDaGFubmVscywgYm9vbCBhdXRvSW5pdGlhbGl6ZSk7Cisg
ICAgQmlxdWFkUHJvY2Vzc29yKEF1ZGlvQ29udGV4dEJhc2UmLCBmbG9hdCBzYW1wbGVSYXRlLCBz
aXplX3QgbnVtYmVyT2ZDaGFubmVscywgYm9vbCBhdXRvSW5pdGlhbGl6ZSk7CiAKICAgICB2aXJ0
dWFsIH5CaXF1YWRQcm9jZXNzb3IoKTsKICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViYXVkaW8vQ2hhbm5lbE1lcmdlck5vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJhdWRpby9DaGFubmVsTWVyZ2VyTm9kZS5jcHAKaW5kZXggZGY1MGYyNjg3MzY4
YWE1YzMyOTU0MTQ4MTUwNzc3YTAyOTE3MzJkOC4uZGUyOGFlYTdkMmM0MzQyODk2YjEwNGJhODk0
MWZkZWI3OThhZGMzZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRp
by9DaGFubmVsTWVyZ2VyTm9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJh
dWRpby9DaGFubmVsTWVyZ2VyTm9kZS5jcHAKQEAgLTQzLDcgKzQzLDcgQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogCiBXVEZfTUFLRV9JU09fQUxMT0NBVEVEX0lNUEwoQ2hhbm5lbE1lcmdlck5vZGUp
OwogCi1SZWZQdHI8Q2hhbm5lbE1lcmdlck5vZGU+IENoYW5uZWxNZXJnZXJOb2RlOjpjcmVhdGUo
QXVkaW9Db250ZXh0JiBjb250ZXh0LCBmbG9hdCBzYW1wbGVSYXRlLCB1bnNpZ25lZCBudW1iZXJP
ZklucHV0cykKK1JlZlB0cjxDaGFubmVsTWVyZ2VyTm9kZT4gQ2hhbm5lbE1lcmdlck5vZGU6OmNy
ZWF0ZShBdWRpb0NvbnRleHRCYXNlJiBjb250ZXh0LCBmbG9hdCBzYW1wbGVSYXRlLCB1bnNpZ25l
ZCBudW1iZXJPZklucHV0cykKIHsKICAgICBpZiAoIW51bWJlck9mSW5wdXRzIHx8IG51bWJlck9m
SW5wdXRzID4gQXVkaW9Db250ZXh0OjptYXhOdW1iZXJPZkNoYW5uZWxzKCkpCiAgICAgICAgIHJl
dHVybiBudWxscHRyOwpAQCAtNTEsNyArNTEsNyBAQCBSZWZQdHI8Q2hhbm5lbE1lcmdlck5vZGU+
IENoYW5uZWxNZXJnZXJOb2RlOjpjcmVhdGUoQXVkaW9Db250ZXh0JiBjb250ZXh0LCBmbG9hdAog
ICAgIHJldHVybiBhZG9wdFJlZigqbmV3IENoYW5uZWxNZXJnZXJOb2RlKGNvbnRleHQsIHNhbXBs
ZVJhdGUsIG51bWJlck9mSW5wdXRzKSk7ICAgICAgCiB9CiAKLUNoYW5uZWxNZXJnZXJOb2RlOjpD
aGFubmVsTWVyZ2VyTm9kZShBdWRpb0NvbnRleHQmIGNvbnRleHQsIGZsb2F0IHNhbXBsZVJhdGUs
IHVuc2lnbmVkIG51bWJlck9mSW5wdXRzKQorQ2hhbm5lbE1lcmdlck5vZGU6OkNoYW5uZWxNZXJn
ZXJOb2RlKEF1ZGlvQ29udGV4dEJhc2UmIGNvbnRleHQsIGZsb2F0IHNhbXBsZVJhdGUsIHVuc2ln
bmVkIG51bWJlck9mSW5wdXRzKQogICAgIDogQXVkaW9Ob2RlKGNvbnRleHQsIHNhbXBsZVJhdGUp
CiAgICAgLCBtX2Rlc2lyZWROdW1iZXJPZk91dHB1dENoYW5uZWxzKERlZmF1bHROdW1iZXJPZk91
dHB1dENoYW5uZWxzKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJh
dWRpby9DaGFubmVsTWVyZ2VyTm9kZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRp
by9DaGFubmVsTWVyZ2VyTm9kZS5oCmluZGV4IDY2NjM2ZWVkNmY3ZWU4NTUxZTkyY2M4NzdhMDRj
NWNjM2U1ZmRmMWQuLjYyOTc2ZTA1MDczNDFmZjkyNjYwYTZhZjBkYjU4YWViYTU1NzY4MWEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQ2hhbm5lbE1lcmdlck5v
ZGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0NoYW5uZWxNZXJnZXJO
b2RlLmgKQEAgLTM3LDcgKzM3LDcgQEAgY2xhc3MgQXVkaW9Db250ZXh0OwogY2xhc3MgQ2hhbm5l
bE1lcmdlck5vZGUgZmluYWwgOiBwdWJsaWMgQXVkaW9Ob2RlIHsKICAgICBXVEZfTUFLRV9JU09f
QUxMT0NBVEVEKENoYW5uZWxNZXJnZXJOb2RlKTsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmUHRy
PENoYW5uZWxNZXJnZXJOb2RlPiBjcmVhdGUoQXVkaW9Db250ZXh0JiwgZmxvYXQgc2FtcGxlUmF0
ZSwgdW5zaWduZWQgbnVtYmVyT2ZJbnB1dHMpOworICAgIHN0YXRpYyBSZWZQdHI8Q2hhbm5lbE1l
cmdlck5vZGU+IGNyZWF0ZShBdWRpb0NvbnRleHRCYXNlJiwgZmxvYXQgc2FtcGxlUmF0ZSwgdW5z
aWduZWQgbnVtYmVyT2ZJbnB1dHMpOwogCiAgICAgLy8gQXVkaW9Ob2RlCiAgICAgdm9pZCBwcm9j
ZXNzKHNpemVfdCBmcmFtZXNUb1Byb2Nlc3MpIG92ZXJyaWRlOwpAQCAtNTIsNyArNTIsNyBAQCBw
cml2YXRlOgogICAgIGRvdWJsZSB0YWlsVGltZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIDA7
IH0KICAgICBkb3VibGUgbGF0ZW5jeVRpbWUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiAwOyB9
CiAKLSAgICBDaGFubmVsTWVyZ2VyTm9kZShBdWRpb0NvbnRleHQmLCBmbG9hdCBzYW1wbGVSYXRl
LCB1bnNpZ25lZCBudW1iZXJPZklucHV0cyk7CisgICAgQ2hhbm5lbE1lcmdlck5vZGUoQXVkaW9D
b250ZXh0QmFzZSYsIGZsb2F0IHNhbXBsZVJhdGUsIHVuc2lnbmVkIG51bWJlck9mSW5wdXRzKTsK
IH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViYXVkaW8vQ2hhbm5lbFNwbGl0dGVyTm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmF1ZGlvL0NoYW5uZWxTcGxpdHRlck5vZGUuY3BwCmluZGV4IDgyZjY5YTA0
Zjk5OTI2MWQ1OGMxNTJiZmM2MDJhMzY2MDk2MDkxYjkuLmY1NTUzZDBjODM1YTM5MmQzY2VlZGU5
MmVlNWY4YjhjOTI4ZjlkYjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
YXVkaW8vQ2hhbm5lbFNwbGl0dGVyTm9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJhdWRpby9DaGFubmVsU3BsaXR0ZXJOb2RlLmNwcApAQCAtMzcsNyArMzcsNyBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKIFdURl9NQUtFX0lTT19BTExPQ0FURURfSU1QTChDaGFubmVsU3Bs
aXR0ZXJOb2RlKTsKICAgICAKLVJlZlB0cjxDaGFubmVsU3BsaXR0ZXJOb2RlPiBDaGFubmVsU3Bs
aXR0ZXJOb2RlOjpjcmVhdGUoQXVkaW9Db250ZXh0JiBjb250ZXh0LCBmbG9hdCBzYW1wbGVSYXRl
LCB1bnNpZ25lZCBudW1iZXJPZk91dHB1dHMpCitSZWZQdHI8Q2hhbm5lbFNwbGl0dGVyTm9kZT4g
Q2hhbm5lbFNwbGl0dGVyTm9kZTo6Y3JlYXRlKEF1ZGlvQ29udGV4dEJhc2UmIGNvbnRleHQsIGZs
b2F0IHNhbXBsZVJhdGUsIHVuc2lnbmVkIG51bWJlck9mT3V0cHV0cykKIHsKICAgICBpZiAoIW51
bWJlck9mT3V0cHV0cyB8fCBudW1iZXJPZk91dHB1dHMgPiBBdWRpb0NvbnRleHQ6Om1heE51bWJl
ck9mQ2hhbm5lbHMoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC00NSw3ICs0NSw3IEBA
IFJlZlB0cjxDaGFubmVsU3BsaXR0ZXJOb2RlPiBDaGFubmVsU3BsaXR0ZXJOb2RlOjpjcmVhdGUo
QXVkaW9Db250ZXh0JiBjb250ZXh0LCBmCiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQ2hhbm5l
bFNwbGl0dGVyTm9kZShjb250ZXh0LCBzYW1wbGVSYXRlLCBudW1iZXJPZk91dHB1dHMpKTsgICAg
ICAKIH0KIAotQ2hhbm5lbFNwbGl0dGVyTm9kZTo6Q2hhbm5lbFNwbGl0dGVyTm9kZShBdWRpb0Nv
bnRleHQmIGNvbnRleHQsIGZsb2F0IHNhbXBsZVJhdGUsIHVuc2lnbmVkIG51bWJlck9mT3V0cHV0
cykKK0NoYW5uZWxTcGxpdHRlck5vZGU6OkNoYW5uZWxTcGxpdHRlck5vZGUoQXVkaW9Db250ZXh0
QmFzZSYgY29udGV4dCwgZmxvYXQgc2FtcGxlUmF0ZSwgdW5zaWduZWQgbnVtYmVyT2ZPdXRwdXRz
KQogICAgIDogQXVkaW9Ob2RlKGNvbnRleHQsIHNhbXBsZVJhdGUpCiB7CiAgICAgc2V0Tm9kZVR5
cGUoTm9kZVR5cGVDaGFubmVsU3BsaXR0ZXIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJhdWRpby9DaGFubmVsU3BsaXR0ZXJOb2RlLmggYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmF1ZGlvL0NoYW5uZWxTcGxpdHRlck5vZGUuaAppbmRleCA4ZDk4MzI4MTIzN2Rk
MWQwZmNmMTQ3MGEzOGIwMDNmZTQyNjZiNTFlLi4xM2Q4ZDk4MGRhYTc3MzMwNGYxNjkwNWU5NTQ4
YTQyMGFlM2VlNDVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlv
L0NoYW5uZWxTcGxpdHRlck5vZGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1
ZGlvL0NoYW5uZWxTcGxpdHRlck5vZGUuaApAQCAtMzMsNyArMzMsNyBAQCBjbGFzcyBBdWRpb0Nv
bnRleHQ7CiBjbGFzcyBDaGFubmVsU3BsaXR0ZXJOb2RlIGZpbmFsIDogcHVibGljIEF1ZGlvTm9k
ZSB7CiAgICAgV1RGX01BS0VfSVNPX0FMTE9DQVRFRChDaGFubmVsU3BsaXR0ZXJOb2RlKTsKIHB1
YmxpYzoKLSAgICBzdGF0aWMgUmVmUHRyPENoYW5uZWxTcGxpdHRlck5vZGU+IGNyZWF0ZShBdWRp
b0NvbnRleHQmLCBmbG9hdCBzYW1wbGVSYXRlLCB1bnNpZ25lZCBudW1iZXJPZk91dHB1dHMpOwor
ICAgIHN0YXRpYyBSZWZQdHI8Q2hhbm5lbFNwbGl0dGVyTm9kZT4gY3JlYXRlKEF1ZGlvQ29udGV4
dEJhc2UmLCBmbG9hdCBzYW1wbGVSYXRlLCB1bnNpZ25lZCBudW1iZXJPZk91dHB1dHMpOwogCiAg
ICAgLy8gQXVkaW9Ob2RlCiAgICAgdm9pZCBwcm9jZXNzKHNpemVfdCBmcmFtZXNUb1Byb2Nlc3Mp
IG92ZXJyaWRlOwpAQCAtNDMsNyArNDMsNyBAQCBwcml2YXRlOgogICAgIGRvdWJsZSB0YWlsVGlt
ZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIDA7IH0KICAgICBkb3VibGUgbGF0ZW5jeVRpbWUo
KSBjb25zdCBvdmVycmlkZSB7IHJldHVybiAwOyB9CiAKLSAgICBDaGFubmVsU3BsaXR0ZXJOb2Rl
KEF1ZGlvQ29udGV4dCYsIGZsb2F0IHNhbXBsZVJhdGUsIHVuc2lnbmVkIG51bWJlck9mT3V0cHV0
cyk7CisgICAgQ2hhbm5lbFNwbGl0dGVyTm9kZShBdWRpb0NvbnRleHRCYXNlJiwgZmxvYXQgc2Ft
cGxlUmF0ZSwgdW5zaWduZWQgbnVtYmVyT2ZPdXRwdXRzKTsKIH07CiAKIH0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQ29u
dm9sdmVyTm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0NvbnZvbHZl
ck5vZGUuY3BwCmluZGV4IGNjOTcyZjEwZGJkN2FiZmY3M2Y3OTNjZmFjYzdjNDAwOGE3MjM0NDcu
LmUxZjVlYjgxNTYwZWMyZTkyYjgzNTgzNmM4NGIxODE5NDMzYWZhNGYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQ29udm9sdmVyTm9kZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9Db252b2x2ZXJOb2RlLmNwcApAQCAtNDcsNyAr
NDcsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFdURl9NQUtFX0lTT19BTExPQ0FURURfSU1Q
TChDb252b2x2ZXJOb2RlKTsKIAotQ29udm9sdmVyTm9kZTo6Q29udm9sdmVyTm9kZShBdWRpb0Nv
bnRleHQmIGNvbnRleHQsIGZsb2F0IHNhbXBsZVJhdGUpCitDb252b2x2ZXJOb2RlOjpDb252b2x2
ZXJOb2RlKEF1ZGlvQ29udGV4dEJhc2UmIGNvbnRleHQsIGZsb2F0IHNhbXBsZVJhdGUpCiAgICAg
OiBBdWRpb05vZGUoY29udGV4dCwgc2FtcGxlUmF0ZSkKIHsKICAgICBzZXROb2RlVHlwZShOb2Rl
VHlwZUNvbnZvbHZlcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1
ZGlvL0NvbnZvbHZlck5vZGUuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQ29u
dm9sdmVyTm9kZS5oCmluZGV4IDY0YmZlYmVkMmQ4N2U3NGMzM2FkZmFjOTM0OWQxYjkyNmUwZjY2
YzMuLjMxY2VjMWVjYzdmMGUwMDQ1ZWZhNzRmYmVmMzYwNjhkZGJiMWZkZmMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQ29udm9sdmVyTm9kZS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQ29udm9sdmVyTm9kZS5oCkBAIC0zNSw3ICsz
NSw3IEBAIGNsYXNzIFJldmVyYjsKIGNsYXNzIENvbnZvbHZlck5vZGUgZmluYWwgOiBwdWJsaWMg
QXVkaW9Ob2RlIHsKICAgICBXVEZfTUFLRV9JU09fQUxMT0NBVEVEKENvbnZvbHZlck5vZGUpOwog
cHVibGljOgotICAgIHN0YXRpYyBSZWY8Q29udm9sdmVyTm9kZT4gY3JlYXRlKEF1ZGlvQ29udGV4
dCYgY29udGV4dCwgZmxvYXQgc2FtcGxlUmF0ZSkKKyAgICBzdGF0aWMgUmVmPENvbnZvbHZlck5v
ZGU+IGNyZWF0ZShBdWRpb0NvbnRleHRCYXNlJiBjb250ZXh0LCBmbG9hdCBzYW1wbGVSYXRlKQog
ICAgIHsKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQ29udm9sdmVyTm9kZShjb250ZXh0
LCBzYW1wbGVSYXRlKSk7CiAgICAgfQpAQCAtNDksNyArNDksNyBAQCBwdWJsaWM6CiAgICAgdm9p
ZCBzZXROb3JtYWxpemUoYm9vbCBub3JtYWxpemUpIHsgbV9ub3JtYWxpemUgPSBub3JtYWxpemU7
IH0KIAogcHJpdmF0ZToKLSAgICBDb252b2x2ZXJOb2RlKEF1ZGlvQ29udGV4dCYsIGZsb2F0IHNh
bXBsZVJhdGUpOworICAgIENvbnZvbHZlck5vZGUoQXVkaW9Db250ZXh0QmFzZSYsIGZsb2F0IHNh
bXBsZVJhdGUpOwogCiAgICAgZG91YmxlIHRhaWxUaW1lKCkgY29uc3QgZmluYWw7CiAgICAgZG91
YmxlIGxhdGVuY3lUaW1lKCkgY29uc3QgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmF1ZGlvL0RlZmF1bHRBdWRpb0Rlc3RpbmF0aW9uTm9kZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0RlZmF1bHRBdWRpb0Rlc3RpbmF0aW9uTm9kZS5j
cHAKaW5kZXggMTc1OWFlNGE1YTYzNWJjMDU4ZTMwYzM2NWMxMzQ0ZmJiMzk3OWUxNS4uMDdlYjlh
NDFiNWNjOGU4MzkwOWFlNGI2ZTYzNGUzY2E5YmY1MzdlYSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJhdWRpby9EZWZhdWx0QXVkaW9EZXN0aW5hdGlvbk5vZGUuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vRGVmYXVsdEF1ZGlvRGVzdGluYXRp
b25Ob2RlLmNwcApAQCAtNDMsNyArNDMsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFdURl9N
QUtFX0lTT19BTExPQ0FURURfSU1QTChEZWZhdWx0QXVkaW9EZXN0aW5hdGlvbk5vZGUpOwogICAg
IAotRGVmYXVsdEF1ZGlvRGVzdGluYXRpb25Ob2RlOjpEZWZhdWx0QXVkaW9EZXN0aW5hdGlvbk5v
ZGUoQXVkaW9Db250ZXh0JiBjb250ZXh0KQorRGVmYXVsdEF1ZGlvRGVzdGluYXRpb25Ob2RlOjpE
ZWZhdWx0QXVkaW9EZXN0aW5hdGlvbk5vZGUoQXVkaW9Db250ZXh0QmFzZSYgY29udGV4dCkKICAg
ICA6IEF1ZGlvRGVzdGluYXRpb25Ob2RlKGNvbnRleHQsIEF1ZGlvRGVzdGluYXRpb246OmhhcmR3
YXJlU2FtcGxlUmF0ZSgpKQogewogICAgIC8vIE5vZGUtc3BlY2lmaWMgZGVmYXVsdCBtaXhpbmcg
cnVsZXMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0RlZmF1
bHRBdWRpb0Rlc3RpbmF0aW9uTm9kZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRp
by9EZWZhdWx0QXVkaW9EZXN0aW5hdGlvbk5vZGUuaAppbmRleCA2ZmQ5NWMwZjMwMTE0Y2RlMzJj
MjdmYTE4YTYxYWUyY2RlNTEyOGZjLi45NmM4MzdjOTkzNGViMDNiZjA0YjRkZTM5YmM0MmVmZmRm
ZGVlOGUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0RlZmF1
bHRBdWRpb0Rlc3RpbmF0aW9uTm9kZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
YXVkaW8vRGVmYXVsdEF1ZGlvRGVzdGluYXRpb25Ob2RlLmgKQEAgLTMzLDcgKzMzLDcgQEAgY2xh
c3MgQXVkaW9EZXN0aW5hdGlvbjsKIGNsYXNzIERlZmF1bHRBdWRpb0Rlc3RpbmF0aW9uTm9kZSBm
aW5hbCA6IHB1YmxpYyBBdWRpb0Rlc3RpbmF0aW9uTm9kZSB7CiAgICAgV1RGX01BS0VfSVNPX0FM
TE9DQVRFRChEZWZhdWx0QXVkaW9EZXN0aW5hdGlvbk5vZGUpOwogcHVibGljOgotICAgIHN0YXRp
YyBSZWY8RGVmYXVsdEF1ZGlvRGVzdGluYXRpb25Ob2RlPiBjcmVhdGUoQXVkaW9Db250ZXh0JiBj
b250ZXh0KQorICAgIHN0YXRpYyBSZWY8RGVmYXVsdEF1ZGlvRGVzdGluYXRpb25Ob2RlPiBjcmVh
dGUoQXVkaW9Db250ZXh0QmFzZSYgY29udGV4dCkKICAgICB7CiAgICAgICAgIHJldHVybiBhZG9w
dFJlZigqbmV3IERlZmF1bHRBdWRpb0Rlc3RpbmF0aW9uTm9kZShjb250ZXh0KSk7ICAgICAKICAg
ICB9CkBAIC00MSw3ICs0MSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5EZWZhdWx0QXVkaW9E
ZXN0aW5hdGlvbk5vZGUoKTsKICAgICAKIHByaXZhdGU6Ci0gICAgZXhwbGljaXQgRGVmYXVsdEF1
ZGlvRGVzdGluYXRpb25Ob2RlKEF1ZGlvQ29udGV4dCYpOworICAgIGV4cGxpY2l0IERlZmF1bHRB
dWRpb0Rlc3RpbmF0aW9uTm9kZShBdWRpb0NvbnRleHRCYXNlJik7CiAgICAgdm9pZCBjcmVhdGVE
ZXN0aW5hdGlvbigpOwogCiAgICAgdm9pZCBpbml0aWFsaXplKCkgZmluYWw7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0RlbGF5Tm9kZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0RlbGF5Tm9kZS5jcHAKaW5kZXggODFiZDdkMTliMjdl
NzQxYjUwZjZmODRlNTFmN2NlMjU1NzgwMmI5My4uNDA1MjdjODFmOWY1YmM1NmJjZjRlNzBjNTE2
Y2JjMTllNWJlMWU4YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRp
by9EZWxheU5vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vRGVs
YXlOb2RlLmNwcApAQCAtMzcsMTQgKzM3LDE0IEBAIFdURl9NQUtFX0lTT19BTExPQ0FURURfSU1Q
TChEZWxheU5vZGUpOwogCiBjb25zdCBkb3VibGUgbWF4aW11bUFsbG93ZWREZWxheVRpbWUgPSAx
ODA7CiAKLWlubGluZSBEZWxheU5vZGU6OkRlbGF5Tm9kZShBdWRpb0NvbnRleHQmIGNvbnRleHQs
IGZsb2F0IHNhbXBsZVJhdGUsIGRvdWJsZSBtYXhEZWxheVRpbWUpCitpbmxpbmUgRGVsYXlOb2Rl
OjpEZWxheU5vZGUoQXVkaW9Db250ZXh0QmFzZSYgY29udGV4dCwgZmxvYXQgc2FtcGxlUmF0ZSwg
ZG91YmxlIG1heERlbGF5VGltZSkKICAgICA6IEF1ZGlvQmFzaWNQcm9jZXNzb3JOb2RlKGNvbnRl
eHQsIHNhbXBsZVJhdGUpCiB7CiAgICAgc2V0Tm9kZVR5cGUoTm9kZVR5cGVEZWxheSk7CiAgICAg
bV9wcm9jZXNzb3IgPSBtYWtlVW5pcXVlPERlbGF5UHJvY2Vzc29yPihjb250ZXh0LCBzYW1wbGVS
YXRlLCAxLCBtYXhEZWxheVRpbWUpOwogfQogCi1FeGNlcHRpb25PcjxSZWY8RGVsYXlOb2RlPj4g
RGVsYXlOb2RlOjpjcmVhdGUoQXVkaW9Db250ZXh0JiBjb250ZXh0LCBmbG9hdCBzYW1wbGVSYXRl
LCBkb3VibGUgbWF4RGVsYXlUaW1lKQorRXhjZXB0aW9uT3I8UmVmPERlbGF5Tm9kZT4+IERlbGF5
Tm9kZTo6Y3JlYXRlKEF1ZGlvQ29udGV4dEJhc2UmIGNvbnRleHQsIGZsb2F0IHNhbXBsZVJhdGUs
IGRvdWJsZSBtYXhEZWxheVRpbWUpCiB7CiAgICAgaWYgKG1heERlbGF5VGltZSA8PSAwIHx8IG1h
eERlbGF5VGltZSA+PSBtYXhpbXVtQWxsb3dlZERlbGF5VGltZSkKICAgICAgICAgcmV0dXJuIEV4
Y2VwdGlvbiB7IE5vdFN1cHBvcnRlZEVycm9yIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmF1ZGlvL0RlbGF5Tm9kZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJhdWRpby9EZWxheU5vZGUuaAppbmRleCBjOWVjYWQ5ZjlmZGM1MWM0N2M1MmMzY2I4Njg3MGZk
ODQxMWI5ZmZhLi5iNmFmZGQwZjkzMDcxOGI0MjMyMzFmMmY2Y2Y5MDA1OTkxOTk3MDFiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0RlbGF5Tm9kZS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vRGVsYXlOb2RlLmgKQEAgLTMxLDEyICsz
MSwxMiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBEZWxheU5vZGUgZmluYWwgOiBwdWJs
aWMgQXVkaW9CYXNpY1Byb2Nlc3Nvck5vZGUgewogICAgIFdURl9NQUtFX0lTT19BTExPQ0FURUQo
RGVsYXlOb2RlKTsKIHB1YmxpYzoKLSAgICBzdGF0aWMgRXhjZXB0aW9uT3I8UmVmPERlbGF5Tm9k
ZT4+IGNyZWF0ZShBdWRpb0NvbnRleHQmLCBmbG9hdCBzYW1wbGVSYXRlLCBkb3VibGUgbWF4RGVs
YXlUaW1lKTsKKyAgICBzdGF0aWMgRXhjZXB0aW9uT3I8UmVmPERlbGF5Tm9kZT4+IGNyZWF0ZShB
dWRpb0NvbnRleHRCYXNlJiwgZmxvYXQgc2FtcGxlUmF0ZSwgZG91YmxlIG1heERlbGF5VGltZSk7
CiAKICAgICBBdWRpb1BhcmFtKiBkZWxheVRpbWUoKTsKIAogcHJpdmF0ZToKLSAgICBEZWxheU5v
ZGUoQXVkaW9Db250ZXh0JiwgZmxvYXQgc2FtcGxlUmF0ZSwgZG91YmxlIG1heERlbGF5VGltZSk7
CisgICAgRGVsYXlOb2RlKEF1ZGlvQ29udGV4dEJhc2UmLCBmbG9hdCBzYW1wbGVSYXRlLCBkb3Vi
bGUgbWF4RGVsYXlUaW1lKTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vRGVsYXlQcm9jZXNzb3IuY3BwIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9EZWxheVByb2Nlc3Nvci5jcHAKaW5kZXgg
MTAzNjZlZjZlYWZiNmM0NGRiMTkxMjcxYTk5NWQ5ZTZkMmFjYmE2OS4uY2JiZmQ5ZmEyZmFhNGNm
N2VhZTAxYjMyNmM0NmRjZjU4N2JmZTNjNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJhdWRpby9EZWxheVByb2Nlc3Nvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJhdWRpby9EZWxheVByb2Nlc3Nvci5jcHAKQEAgLTMyLDcgKzMyLDcgQEAKIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCi1EZWxheVByb2Nlc3Nvcjo6RGVsYXlQcm9jZXNzb3IoQXVkaW9D
b250ZXh0JiBjb250ZXh0LCBmbG9hdCBzYW1wbGVSYXRlLCB1bnNpZ25lZCBudW1iZXJPZkNoYW5u
ZWxzLCBkb3VibGUgbWF4RGVsYXlUaW1lKQorRGVsYXlQcm9jZXNzb3I6OkRlbGF5UHJvY2Vzc29y
KEF1ZGlvQ29udGV4dEJhc2UmIGNvbnRleHQsIGZsb2F0IHNhbXBsZVJhdGUsIHVuc2lnbmVkIG51
bWJlck9mQ2hhbm5lbHMsIGRvdWJsZSBtYXhEZWxheVRpbWUpCiAgICAgOiBBdWRpb0RTUEtlcm5l
bFByb2Nlc3NvcihzYW1wbGVSYXRlLCBudW1iZXJPZkNoYW5uZWxzKQogICAgICwgbV9tYXhEZWxh
eVRpbWUobWF4RGVsYXlUaW1lKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJhdWRpby9EZWxheVByb2Nlc3Nvci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJh
dWRpby9EZWxheVByb2Nlc3Nvci5oCmluZGV4IDg1ZDljYzZkN2ZkZTE2Y2VmZDc4ZDQ3OTQyMTBk
ZGQwODIzNGRmM2YuLmNiYWM3OWVjZjBmZTMzOWNmMTJmOTNkNGRiMjVhZjA1MTUyZmNlZmQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vRGVsYXlQcm9jZXNzb3Iu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0RlbGF5UHJvY2Vzc29yLmgK
QEAgLTM2LDcgKzM2LDcgQEAgY2xhc3MgQXVkaW9EU1BLZXJuZWw7CiBjbGFzcyBEZWxheVByb2Nl
c3NvciBmaW5hbCA6IHB1YmxpYyBBdWRpb0RTUEtlcm5lbFByb2Nlc3NvciB7CiAgICAgV1RGX01B
S0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6Ci0gICAgRGVsYXlQcm9jZXNzb3IoQXVkaW9Db250
ZXh0JiwgZmxvYXQgc2FtcGxlUmF0ZSwgdW5zaWduZWQgbnVtYmVyT2ZDaGFubmVscywgZG91Ymxl
IG1heERlbGF5VGltZSk7CisgICAgRGVsYXlQcm9jZXNzb3IoQXVkaW9Db250ZXh0QmFzZSYsIGZs
b2F0IHNhbXBsZVJhdGUsIHVuc2lnbmVkIG51bWJlck9mQ2hhbm5lbHMsIGRvdWJsZSBtYXhEZWxh
eVRpbWUpOwogICAgIHZpcnR1YWwgfkRlbGF5UHJvY2Vzc29yKCk7CiAgICAgCiAgICAgc3RkOjp1
bmlxdWVfcHRyPEF1ZGlvRFNQS2VybmVsPiBjcmVhdGVLZXJuZWwoKSBvdmVycmlkZTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vRGlzdGFuY2VNb2RlbFR5cGUu
aCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vRGlzdGFuY2VNb2RlbFR5cGUuaApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi5kZmUxMzE4MmNjMGE0NGJkZDA0ODBiNzJhZmZkN2I1NTcwODUyM2RiCi0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9EaXN0YW5jZU1v
ZGVsVHlwZS5oCkBAIC0wLDAgKzEsMjcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAsIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICog
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OCisgKiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAor
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKKyAqIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisj
aW5jbHVkZSAiRGlzdGFuY2UuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViYXVkaW8vRGlzdGFuY2VNb2RlbFR5cGUuaWRsIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJhdWRpby9EaXN0YW5jZU1vZGVsVHlwZS5pZGwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjhmZmNmZWQyMmM4Zjk2
MGQwNGYzZTg1YmUzZGE1OGI3MjA3MzdmZQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViYXVkaW8vRGlzdGFuY2VNb2RlbFR5cGUuaWRsCkBAIC0wLDAgKzEsMzEg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAsIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQor
ICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTgorICogQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
CisgKiBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCitbCisgICAgQ29uZGl0aW9uYWw9V0VCX0FVRElPLAorXSBlbnVtIERp
c3RhbmNlTW9kZWxUeXBlIHsKKyAgICAibGluZWFyIiwKKyAgICAiaW52ZXJzZSIsCisgICAgImV4
cG9uZW50aWFsIgorfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVk
aW8vRHluYW1pY3NDb21wcmVzc29yTm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmF1ZGlvL0R5bmFtaWNzQ29tcHJlc3Nvck5vZGUuY3BwCmluZGV4IDE0MDk2ZDhmMGM1OTZhNTI5
NzE2NjZlZjgyNjdhMDIzZmRiNDRiMjkuLmMzM2QxZGU3MmRjOTFmZThkNzRlNzU0N2EyMzU5OWNh
MDFmYzQ4NWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vRHlu
YW1pY3NDb21wcmVzc29yTm9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJh
dWRpby9EeW5hbWljc0NvbXByZXNzb3JOb2RlLmNwcApAQCAtNDEsNyArNDEsNyBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKIFdURl9NQUtFX0lTT19BTExPQ0FURURfSU1QTChEeW5hbWljc0NvbXBy
ZXNzb3JOb2RlKTsKIAotRHluYW1pY3NDb21wcmVzc29yTm9kZTo6RHluYW1pY3NDb21wcmVzc29y
Tm9kZShBdWRpb0NvbnRleHQmIGNvbnRleHQsIGZsb2F0IHNhbXBsZVJhdGUpCitEeW5hbWljc0Nv
bXByZXNzb3JOb2RlOjpEeW5hbWljc0NvbXByZXNzb3JOb2RlKEF1ZGlvQ29udGV4dEJhc2UmIGNv
bnRleHQsIGZsb2F0IHNhbXBsZVJhdGUpCiAgICAgOiBBdWRpb05vZGUoY29udGV4dCwgc2FtcGxl
UmF0ZSkKIHsKICAgICBzZXROb2RlVHlwZShOb2RlVHlwZUR5bmFtaWNzQ29tcHJlc3Nvcik7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0R5bmFtaWNzQ29tcHJl
c3Nvck5vZGUuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vRHluYW1pY3NDb21w
cmVzc29yTm9kZS5oCmluZGV4IDQ0Y2JmYmFhMDU5NzE3ZjZjMzUwMzIyYTI4MDRlNWQ4NjNhNjY4
NTcuLmI3MDUzYjIyMTczYzAyY2EwZDI2ZWNlNjFhMThjNzdlZTA3NTJkZmUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vRHluYW1pY3NDb21wcmVzc29yTm9kZS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vRHluYW1pY3NDb21wcmVzc29y
Tm9kZS5oCkBAIC0zNSw3ICszNSw3IEBAIGNsYXNzIER5bmFtaWNzQ29tcHJlc3NvcjsKIGNsYXNz
IER5bmFtaWNzQ29tcHJlc3Nvck5vZGUgZmluYWwgOiBwdWJsaWMgQXVkaW9Ob2RlIHsKICAgICBX
VEZfTUFLRV9JU09fQUxMT0NBVEVEKER5bmFtaWNzQ29tcHJlc3Nvck5vZGUpOwogcHVibGljOgot
ICAgIHN0YXRpYyBSZWY8RHluYW1pY3NDb21wcmVzc29yTm9kZT4gY3JlYXRlKEF1ZGlvQ29udGV4
dCYgY29udGV4dCwgZmxvYXQgc2FtcGxlUmF0ZSkKKyAgICBzdGF0aWMgUmVmPER5bmFtaWNzQ29t
cHJlc3Nvck5vZGU+IGNyZWF0ZShBdWRpb0NvbnRleHRCYXNlJiBjb250ZXh0LCBmbG9hdCBzYW1w
bGVSYXRlKQogICAgIHsKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRHluYW1pY3NDb21w
cmVzc29yTm9kZShjb250ZXh0LCBzYW1wbGVSYXRlKSk7CiAgICAgfQpAQCAtNjIsNyArNjIsNyBA
QCBwcml2YXRlOgogICAgIGRvdWJsZSB0YWlsVGltZSgpIGNvbnN0IG92ZXJyaWRlOwogICAgIGRv
dWJsZSBsYXRlbmN5VGltZSgpIGNvbnN0IG92ZXJyaWRlOwogCi0gICAgRHluYW1pY3NDb21wcmVz
c29yTm9kZShBdWRpb0NvbnRleHQmLCBmbG9hdCBzYW1wbGVSYXRlKTsKKyAgICBEeW5hbWljc0Nv
bXByZXNzb3JOb2RlKEF1ZGlvQ29udGV4dEJhc2UmLCBmbG9hdCBzYW1wbGVSYXRlKTsKIAogICAg
IHN0ZDo6dW5pcXVlX3B0cjxEeW5hbWljc0NvbXByZXNzb3I+IG1fZHluYW1pY3NDb21wcmVzc29y
OwogICAgIFJlZlB0cjxBdWRpb1BhcmFtPiBtX3RocmVzaG9sZDsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vR2Fpbk5vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJhdWRpby9HYWluTm9kZS5jcHAKaW5kZXggMjU3ZGYyZWNlMjMzOGNiY2JhYjll
ZDA1MTIzM2M2NGIxYzU3ZjI1ZC4uOTg0ZDExOTRiZGQ1NTJmMzg0YjBkNmQ5YmNlYmY3ZGE0MmZk
ODY5YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9HYWluTm9k
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9HYWluTm9kZS5jcHAK
QEAgLTM3LDcgKzM3LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBXVEZfTUFLRV9JU09fQUxM
T0NBVEVEX0lNUEwoR2Fpbk5vZGUpOwogCi1HYWluTm9kZTo6R2Fpbk5vZGUoQXVkaW9Db250ZXh0
JiBjb250ZXh0LCBmbG9hdCBzYW1wbGVSYXRlKQorR2Fpbk5vZGU6OkdhaW5Ob2RlKEF1ZGlvQ29u
dGV4dEJhc2UmIGNvbnRleHQsIGZsb2F0IHNhbXBsZVJhdGUpCiAgICAgOiBBdWRpb05vZGUoY29u
dGV4dCwgc2FtcGxlUmF0ZSkKICAgICAsIG1fbGFzdEdhaW4oMS4wKQogICAgICwgbV9zYW1wbGVB
Y2N1cmF0ZUdhaW5WYWx1ZXMoQXVkaW9Ob2RlOjpQcm9jZXNzaW5nU2l6ZUluRnJhbWVzKSAvLyBG
SVhNRTogY2FuIHByb2JhYmx5IHNoYXJlIHRlbXAgYnVmZmVyIGluIGNvbnRleHQKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vR2Fpbk5vZGUuaCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vR2Fpbk5vZGUuaAppbmRleCBmYTg1YjBiOWZmNTQ3ZjMy
OWY1NjY1YjJhMDU1Nzc0YmUwZjdjYWI4Li5kY2Y4NTVhOTFjOTU3YTkwMDBiYWY4Yjk5NDM2YWU3
NzM3OWZiYjUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0dh
aW5Ob2RlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9HYWluTm9kZS5o
CkBAIC0zOCw3ICszOCw3IEBAIGNsYXNzIEF1ZGlvQ29udGV4dDsKIGNsYXNzIEdhaW5Ob2RlIGZp
bmFsIDogcHVibGljIEF1ZGlvTm9kZSB7CiAgICAgV1RGX01BS0VfSVNPX0FMTE9DQVRFRChHYWlu
Tm9kZSk7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxHYWluTm9kZT4gY3JlYXRlKEF1ZGlvQ29u
dGV4dCYgY29udGV4dCwgZmxvYXQgc2FtcGxlUmF0ZSkKKyAgICBzdGF0aWMgUmVmPEdhaW5Ob2Rl
PiBjcmVhdGUoQXVkaW9Db250ZXh0QmFzZSYgY29udGV4dCwgZmxvYXQgc2FtcGxlUmF0ZSkKICAg
ICB7CiAgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEdhaW5Ob2RlKGNvbnRleHQsIHNhbXBs
ZVJhdGUpKTsKICAgICB9CkBAIC01Nyw3ICs1Nyw3IEBAIHByaXZhdGU6CiAgICAgZG91YmxlIHRh
aWxUaW1lKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gMDsgfQogICAgIGRvdWJsZSBsYXRlbmN5
VGltZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIDA7IH0KIAotICAgIEdhaW5Ob2RlKEF1ZGlv
Q29udGV4dCYsIGZsb2F0IHNhbXBsZVJhdGUpOworICAgIEdhaW5Ob2RlKEF1ZGlvQ29udGV4dEJh
c2UmLCBmbG9hdCBzYW1wbGVSYXRlKTsKIAogICAgIGZsb2F0IG1fbGFzdEdhaW47IC8vIGZvciBk
ZS16aXBwZXJpbmcKICAgICBSZWZQdHI8QXVkaW9QYXJhbT4gbV9nYWluOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9NZWRpYUVsZW1lbnRBdWRpb1NvdXJjZU5v
ZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9NZWRpYUVsZW1lbnRBdWRp
b1NvdXJjZU5vZGUuY3BwCmluZGV4IDBlNTk4MWZhNjg2ZGI5MjEyZmZhMGY4M2U5YmRjZDAzYWY5
YWFhYzMuLmM2NzVkN2RlNzE2ODM5MmU4N2RmOWY0M2RmYTY1OTk3YjU0ZmY4ZjQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vTWVkaWFFbGVtZW50QXVkaW9Tb3Vy
Y2VOb2RlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL01lZGlhRWxl
bWVudEF1ZGlvU291cmNlTm9kZS5jcHAKQEAgLTQzLDEyICs0MywxMiBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKIFdURl9NQUtFX0lTT19BTExPQ0FURURfSU1QTChNZWRpYUVsZW1lbnRBdWRpb1Nv
dXJjZU5vZGUpOwogCi1SZWY8TWVkaWFFbGVtZW50QXVkaW9Tb3VyY2VOb2RlPiBNZWRpYUVsZW1l
bnRBdWRpb1NvdXJjZU5vZGU6OmNyZWF0ZShBdWRpb0NvbnRleHQmIGNvbnRleHQsIEhUTUxNZWRp
YUVsZW1lbnQmIG1lZGlhRWxlbWVudCkKK1JlZjxNZWRpYUVsZW1lbnRBdWRpb1NvdXJjZU5vZGU+
IE1lZGlhRWxlbWVudEF1ZGlvU291cmNlTm9kZTo6Y3JlYXRlKEF1ZGlvQ29udGV4dEJhc2UmIGNv
bnRleHQsIEhUTUxNZWRpYUVsZW1lbnQmIG1lZGlhRWxlbWVudCkKIHsKICAgICByZXR1cm4gYWRv
cHRSZWYoKm5ldyBNZWRpYUVsZW1lbnRBdWRpb1NvdXJjZU5vZGUoY29udGV4dCwgbWVkaWFFbGVt
ZW50KSk7CiB9CiAKLU1lZGlhRWxlbWVudEF1ZGlvU291cmNlTm9kZTo6TWVkaWFFbGVtZW50QXVk
aW9Tb3VyY2VOb2RlKEF1ZGlvQ29udGV4dCYgY29udGV4dCwgSFRNTE1lZGlhRWxlbWVudCYgbWVk
aWFFbGVtZW50KQorTWVkaWFFbGVtZW50QXVkaW9Tb3VyY2VOb2RlOjpNZWRpYUVsZW1lbnRBdWRp
b1NvdXJjZU5vZGUoQXVkaW9Db250ZXh0QmFzZSYgY29udGV4dCwgSFRNTE1lZGlhRWxlbWVudCYg
bWVkaWFFbGVtZW50KQogICAgIDogQXVkaW9Ob2RlKGNvbnRleHQsIGNvbnRleHQuc2FtcGxlUmF0
ZSgpKQogICAgICwgbV9tZWRpYUVsZW1lbnQobWVkaWFFbGVtZW50KQogICAgICwgbV9zb3VyY2VO
dW1iZXJPZkNoYW5uZWxzKDApCkBAIC05Nyw3ICs5Nyw3IEBAIHZvaWQgTWVkaWFFbGVtZW50QXVk
aW9Tb3VyY2VOb2RlOjpzZXRGb3JtYXQoc2l6ZV90IG51bWJlck9mQ2hhbm5lbHMsIGZsb2F0IHNv
dXJjCiAKICAgICAgICAgewogICAgICAgICAgICAgLy8gVGhlIGNvbnRleHQgbXVzdCBiZSBsb2Nr
ZWQgd2hlbiBjaGFuZ2luZyB0aGUgbnVtYmVyIG9mIG91dHB1dCBjaGFubmVscy4KLSAgICAgICAg
ICAgIEF1ZGlvQ29udGV4dDo6QXV0b0xvY2tlciBjb250ZXh0TG9ja2VyKGNvbnRleHQoKSk7Cisg
ICAgICAgICAgICBBdWRpb0NvbnRleHRCYXNlOjpBdXRvTG9ja2VyIGNvbnRleHRMb2NrZXIoY29u
dGV4dCgpKTsKIAogICAgICAgICAgICAgLy8gRG8gYW55IG5lY2Vzc3NhcnkgcmUtY29uZmlndXJh
dGlvbiB0byB0aGUgb3V0cHV0J3MgbnVtYmVyIG9mIGNoYW5uZWxzLgogICAgICAgICAgICAgb3V0
cHV0KDApLT5zZXROdW1iZXJPZkNoYW5uZWxzKG51bWJlck9mQ2hhbm5lbHMpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9NZWRpYUVsZW1lbnRBdWRpb1NvdXJj
ZU5vZGUuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vTWVkaWFFbGVtZW50QXVk
aW9Tb3VyY2VOb2RlLmgKaW5kZXggM2ExMzE1NDE1ZjE4ZjliMzRhZGNlNDI0ZjI2YzI2MTJkM2M0
OGY1OS4uNzFkMGVkMTM4YTVmOWZkMzczMDUwMjA1NDFlZDVkNDdjM2FlYzBjYyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9NZWRpYUVsZW1lbnRBdWRpb1NvdXJj
ZU5vZGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL01lZGlhRWxlbWVu
dEF1ZGlvU291cmNlTm9kZS5oCkBAIC00MCw3ICs0MCw3IEBAIGNsYXNzIEF1ZGlvQ29udGV4dDsK
IGNsYXNzIE1lZGlhRWxlbWVudEF1ZGlvU291cmNlTm9kZSBmaW5hbCA6IHB1YmxpYyBBdWRpb05v
ZGUsIHB1YmxpYyBBdWRpb1NvdXJjZVByb3ZpZGVyQ2xpZW50IHsKICAgICBXVEZfTUFLRV9JU09f
QUxMT0NBVEVEKE1lZGlhRWxlbWVudEF1ZGlvU291cmNlTm9kZSk7CiBwdWJsaWM6Ci0gICAgc3Rh
dGljIFJlZjxNZWRpYUVsZW1lbnRBdWRpb1NvdXJjZU5vZGU+IGNyZWF0ZShBdWRpb0NvbnRleHQm
LCBIVE1MTWVkaWFFbGVtZW50Jik7CisgICAgc3RhdGljIFJlZjxNZWRpYUVsZW1lbnRBdWRpb1Nv
dXJjZU5vZGU+IGNyZWF0ZShBdWRpb0NvbnRleHRCYXNlJiwgSFRNTE1lZGlhRWxlbWVudCYpOwog
CiAgICAgdmlydHVhbCB+TWVkaWFFbGVtZW50QXVkaW9Tb3VyY2VOb2RlKCk7CiAKQEAgLTU3LDcg
KzU3LDcgQEAgcHVibGljOgogICAgIHZvaWQgdW5sb2NrKCk7CiAKIHByaXZhdGU6Ci0gICAgTWVk
aWFFbGVtZW50QXVkaW9Tb3VyY2VOb2RlKEF1ZGlvQ29udGV4dCYsIEhUTUxNZWRpYUVsZW1lbnQm
KTsKKyAgICBNZWRpYUVsZW1lbnRBdWRpb1NvdXJjZU5vZGUoQXVkaW9Db250ZXh0QmFzZSYsIEhU
TUxNZWRpYUVsZW1lbnQmKTsKIAogICAgIGRvdWJsZSB0YWlsVGltZSgpIGNvbnN0IG92ZXJyaWRl
IHsgcmV0dXJuIDA7IH0KICAgICBkb3VibGUgbGF0ZW5jeVRpbWUoKSBjb25zdCBvdmVycmlkZSB7
IHJldHVybiAwOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlv
L01lZGlhU3RyZWFtQXVkaW9EZXN0aW5hdGlvbk5vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJhdWRpby9NZWRpYVN0cmVhbUF1ZGlvRGVzdGluYXRpb25Ob2RlLmNwcAppbmRleCBk
NzY2MjkzMDMwOGE3NDZhNDZhZTAwODY4YTVkNjM0MWI4MmZmNzNiLi4zMGYxYTIyMmJlMjMwMGUx
MmRhZTc2NmJkZWU0MmIwYmIxY2YxZTg5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmF1ZGlvL01lZGlhU3RyZWFtQXVkaW9EZXN0aW5hdGlvbk5vZGUuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vTWVkaWFTdHJlYW1BdWRpb0Rlc3RpbmF0aW9u
Tm9kZS5jcHAKQEAgLTM5LDEyICszOSwxMiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFdURl9N
QUtFX0lTT19BTExPQ0FURURfSU1QTChNZWRpYVN0cmVhbUF1ZGlvRGVzdGluYXRpb25Ob2RlKTsK
IAotUmVmPE1lZGlhU3RyZWFtQXVkaW9EZXN0aW5hdGlvbk5vZGU+IE1lZGlhU3RyZWFtQXVkaW9E
ZXN0aW5hdGlvbk5vZGU6OmNyZWF0ZShBdWRpb0NvbnRleHQmIGNvbnRleHQsIHNpemVfdCBudW1i
ZXJPZkNoYW5uZWxzKQorUmVmPE1lZGlhU3RyZWFtQXVkaW9EZXN0aW5hdGlvbk5vZGU+IE1lZGlh
U3RyZWFtQXVkaW9EZXN0aW5hdGlvbk5vZGU6OmNyZWF0ZShBdWRpb0NvbnRleHRCYXNlJiBjb250
ZXh0LCBzaXplX3QgbnVtYmVyT2ZDaGFubmVscykKIHsKICAgICByZXR1cm4gYWRvcHRSZWYoKm5l
dyBNZWRpYVN0cmVhbUF1ZGlvRGVzdGluYXRpb25Ob2RlKGNvbnRleHQsIG51bWJlck9mQ2hhbm5l
bHMpKTsKIH0KIAotTWVkaWFTdHJlYW1BdWRpb0Rlc3RpbmF0aW9uTm9kZTo6TWVkaWFTdHJlYW1B
dWRpb0Rlc3RpbmF0aW9uTm9kZShBdWRpb0NvbnRleHQmIGNvbnRleHQsIHNpemVfdCBudW1iZXJP
ZkNoYW5uZWxzKQorTWVkaWFTdHJlYW1BdWRpb0Rlc3RpbmF0aW9uTm9kZTo6TWVkaWFTdHJlYW1B
dWRpb0Rlc3RpbmF0aW9uTm9kZShBdWRpb0NvbnRleHRCYXNlJiBjb250ZXh0LCBzaXplX3QgbnVt
YmVyT2ZDaGFubmVscykKICAgICA6IEF1ZGlvQmFzaWNJbnNwZWN0b3JOb2RlKGNvbnRleHQsIGNv
bnRleHQuc2FtcGxlUmF0ZSgpLCBudW1iZXJPZkNoYW5uZWxzKQogICAgICwgbV9zb3VyY2UoTWVk
aWFTdHJlYW1BdWRpb1NvdXJjZTo6Y3JlYXRlKGNvbnRleHQuc2FtcGxlUmF0ZSgpKSkKICAgICAs
IG1fc3RyZWFtKE1lZGlhU3RyZWFtOjpjcmVhdGUoKmNvbnRleHQuZG9jdW1lbnQoKSwgTWVkaWFT
dHJlYW1Qcml2YXRlOjpjcmVhdGUoY29udGV4dC5kb2N1bWVudCgpLT5sb2dnZXIoKSwgbV9zb3Vy
Y2UuY29weVJlZigpKSkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1
ZGlvL01lZGlhU3RyZWFtQXVkaW9EZXN0aW5hdGlvbk5vZGUuaCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViYXVkaW8vTWVkaWFTdHJlYW1BdWRpb0Rlc3RpbmF0aW9uTm9kZS5oCmluZGV4IGY1
YTdlOGZlYzRhOTAyYzkwYmRjZjljNWM3YjQ2N2M5ODBmOTdlM2EuLmRiYWQ5MjhkNzk2YTJkOGY0
MTBmNDM2ZmJlMzNlZjcyYWE4NDE3M2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViYXVkaW8vTWVkaWFTdHJlYW1BdWRpb0Rlc3RpbmF0aW9uTm9kZS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vTWVkaWFTdHJlYW1BdWRpb0Rlc3RpbmF0aW9uTm9k
ZS5oCkBAIC0zMiwxMyArMzIsMTMgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBB
dWRpb0NvbnRleHQ7CitjbGFzcyBBdWRpb0NvbnRleHRCYXNlOwogY2xhc3MgTWVkaWFTdHJlYW1B
dWRpb1NvdXJjZTsKIAogY2xhc3MgTWVkaWFTdHJlYW1BdWRpb0Rlc3RpbmF0aW9uTm9kZSBmaW5h
bCA6IHB1YmxpYyBBdWRpb0Jhc2ljSW5zcGVjdG9yTm9kZSB7CiAgICAgV1RGX01BS0VfSVNPX0FM
TE9DQVRFRChNZWRpYVN0cmVhbUF1ZGlvRGVzdGluYXRpb25Ob2RlKTsKIHB1YmxpYzoKLSAgICBz
dGF0aWMgUmVmPE1lZGlhU3RyZWFtQXVkaW9EZXN0aW5hdGlvbk5vZGU+IGNyZWF0ZShBdWRpb0Nv
bnRleHQmLCBzaXplX3QgbnVtYmVyT2ZDaGFubmVscyk7CisgICAgc3RhdGljIFJlZjxNZWRpYVN0
cmVhbUF1ZGlvRGVzdGluYXRpb25Ob2RlPiBjcmVhdGUoQXVkaW9Db250ZXh0QmFzZSYsIHNpemVf
dCBudW1iZXJPZkNoYW5uZWxzKTsKIAogICAgIHZpcnR1YWwgfk1lZGlhU3RyZWFtQXVkaW9EZXN0
aW5hdGlvbk5vZGUoKTsKIApAQCAtNDksNyArNDksNyBAQCBwdWJsaWM6CiAgICAgdm9pZCByZXNl
dCgpIGZpbmFsOwogICAgIAogcHJpdmF0ZToKLSAgICBNZWRpYVN0cmVhbUF1ZGlvRGVzdGluYXRp
b25Ob2RlKEF1ZGlvQ29udGV4dCYsIHNpemVfdCBudW1iZXJPZkNoYW5uZWxzKTsKKyAgICBNZWRp
YVN0cmVhbUF1ZGlvRGVzdGluYXRpb25Ob2RlKEF1ZGlvQ29udGV4dEJhc2UmLCBzaXplX3QgbnVt
YmVyT2ZDaGFubmVscyk7CiAKICAgICBkb3VibGUgdGFpbFRpbWUoKSBjb25zdCBmaW5hbCB7IHJl
dHVybiAwOyB9CiAgICAgZG91YmxlIGxhdGVuY3lUaW1lKCkgY29uc3QgZmluYWwgeyByZXR1cm4g
MDsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9NZWRpYVN0
cmVhbUF1ZGlvU291cmNlTm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlv
L01lZGlhU3RyZWFtQXVkaW9Tb3VyY2VOb2RlLmNwcAppbmRleCAxYjRmYjZkMTkyMmFkMWM0YjA0
MWNiOTEyOWM1NWMxMzg3MDdmN2NlLi4zNWU1NWE5MjAyYzNmMzA1NWJmMTg3YmFhNmY2NmZiNmJk
NTFmNjkwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL01lZGlh
U3RyZWFtQXVkaW9Tb3VyY2VOb2RlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmF1ZGlvL01lZGlhU3RyZWFtQXVkaW9Tb3VyY2VOb2RlLmNwcApAQCAtMzgsMTIgKzM4LDEyIEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogV1RGX01BS0VfSVNPX0FMTE9DQVRFRF9JTVBMKE1lZGlh
U3RyZWFtQXVkaW9Tb3VyY2VOb2RlKTsKIAotUmVmPE1lZGlhU3RyZWFtQXVkaW9Tb3VyY2VOb2Rl
PiBNZWRpYVN0cmVhbUF1ZGlvU291cmNlTm9kZTo6Y3JlYXRlKEF1ZGlvQ29udGV4dCYgY29udGV4
dCwgTWVkaWFTdHJlYW0mIG1lZGlhU3RyZWFtLCBNZWRpYVN0cmVhbVRyYWNrJiBhdWRpb1RyYWNr
KQorUmVmPE1lZGlhU3RyZWFtQXVkaW9Tb3VyY2VOb2RlPiBNZWRpYVN0cmVhbUF1ZGlvU291cmNl
Tm9kZTo6Y3JlYXRlKEF1ZGlvQ29udGV4dEJhc2UmIGNvbnRleHQsIE1lZGlhU3RyZWFtJiBtZWRp
YVN0cmVhbSwgTWVkaWFTdHJlYW1UcmFjayYgYXVkaW9UcmFjaykKIHsKICAgICByZXR1cm4gYWRv
cHRSZWYoKm5ldyBNZWRpYVN0cmVhbUF1ZGlvU291cmNlTm9kZShjb250ZXh0LCBtZWRpYVN0cmVh
bSwgYXVkaW9UcmFjaykpOwogfQogCi1NZWRpYVN0cmVhbUF1ZGlvU291cmNlTm9kZTo6TWVkaWFT
dHJlYW1BdWRpb1NvdXJjZU5vZGUoQXVkaW9Db250ZXh0JiBjb250ZXh0LCBNZWRpYVN0cmVhbSYg
bWVkaWFTdHJlYW0sIE1lZGlhU3RyZWFtVHJhY2smIGF1ZGlvVHJhY2spCitNZWRpYVN0cmVhbUF1
ZGlvU291cmNlTm9kZTo6TWVkaWFTdHJlYW1BdWRpb1NvdXJjZU5vZGUoQXVkaW9Db250ZXh0QmFz
ZSYgY29udGV4dCwgTWVkaWFTdHJlYW0mIG1lZGlhU3RyZWFtLCBNZWRpYVN0cmVhbVRyYWNrJiBh
dWRpb1RyYWNrKQogICAgIDogQXVkaW9Ob2RlKGNvbnRleHQsIGNvbnRleHQuc2FtcGxlUmF0ZSgp
KQogICAgICwgbV9tZWRpYVN0cmVhbShtZWRpYVN0cmVhbSkKICAgICAsIG1fYXVkaW9UcmFjayhh
dWRpb1RyYWNrKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9N
ZWRpYVN0cmVhbUF1ZGlvU291cmNlTm9kZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJh
dWRpby9NZWRpYVN0cmVhbUF1ZGlvU291cmNlTm9kZS5oCmluZGV4IGUzZWRlZmUxYmQ1NzAyYTcz
YTIyZjRhODM5ZDIzY2ZjMTljMjlhMDUuLmM3MmQzMTIyMzNkNTA2ZGQ1NGNlMjcwZmM5MjI3YjU0
NTc1ZWUyZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vTWVk
aWFTdHJlYW1BdWRpb1NvdXJjZU5vZGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmF1ZGlvL01lZGlhU3RyZWFtQXVkaW9Tb3VyY2VOb2RlLmgKQEAgLTQwLDcgKzQwLDcgQEAgY2xh
c3MgTXVsdGlDaGFubmVsUmVzYW1wbGVyOwogY2xhc3MgTWVkaWFTdHJlYW1BdWRpb1NvdXJjZU5v
ZGUgZmluYWwgOiBwdWJsaWMgQXVkaW9Ob2RlLCBwdWJsaWMgQXVkaW9Tb3VyY2VQcm92aWRlckNs
aWVudCB7CiAgICAgV1RGX01BS0VfSVNPX0FMTE9DQVRFRChNZWRpYVN0cmVhbUF1ZGlvU291cmNl
Tm9kZSk7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxNZWRpYVN0cmVhbUF1ZGlvU291cmNlTm9k
ZT4gY3JlYXRlKEF1ZGlvQ29udGV4dCYsIE1lZGlhU3RyZWFtJiwgTWVkaWFTdHJlYW1UcmFjayYp
OworICAgIHN0YXRpYyBSZWY8TWVkaWFTdHJlYW1BdWRpb1NvdXJjZU5vZGU+IGNyZWF0ZShBdWRp
b0NvbnRleHRCYXNlJiwgTWVkaWFTdHJlYW0mLCBNZWRpYVN0cmVhbVRyYWNrJik7CiAKICAgICB2
aXJ0dWFsIH5NZWRpYVN0cmVhbUF1ZGlvU291cmNlTm9kZSgpOwogCkBAIC01NCw3ICs1NCw3IEBA
IHB1YmxpYzoKICAgICB2b2lkIHNldEZvcm1hdChzaXplX3QgbnVtYmVyT2ZDaGFubmVscywgZmxv
YXQgc2FtcGxlUmF0ZSkgb3ZlcnJpZGU7CiAKIHByaXZhdGU6Ci0gICAgTWVkaWFTdHJlYW1BdWRp
b1NvdXJjZU5vZGUoQXVkaW9Db250ZXh0JiwgTWVkaWFTdHJlYW0mLCBNZWRpYVN0cmVhbVRyYWNr
Jik7CisgICAgTWVkaWFTdHJlYW1BdWRpb1NvdXJjZU5vZGUoQXVkaW9Db250ZXh0QmFzZSYsIE1l
ZGlhU3RyZWFtJiwgTWVkaWFTdHJlYW1UcmFjayYpOwogCiAgICAgZG91YmxlIHRhaWxUaW1lKCkg
Y29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gMDsgfQogICAgIGRvdWJsZSBsYXRlbmN5VGltZSgpIGNv
bnN0IG92ZXJyaWRlIHsgcmV0dXJuIDA7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViYXVkaW8vT2ZmbGluZUF1ZGlvQ29udGV4dC5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmF1ZGlvL09mZmxpbmVBdWRpb0NvbnRleHQuaWRsCmluZGV4IGY2ZWNiMWE2ODU4
MWNjOTQ2Njc5ZDkyNGY4ZTNlMTU0ZDAzNDNhYzYuLjBlNzFhMDZiYzNmYTJmOGU4NjI5OWYzYzI0
NTg3ZTZjYmE5YzQxMTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVk
aW8vT2ZmbGluZUF1ZGlvQ29udGV4dC5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJhdWRpby9PZmZsaW5lQXVkaW9Db250ZXh0LmlkbApAQCAtMjQsOCArMjQsOCBAQAogCiBbCiAg
ICAgQ29uZGl0aW9uYWw9V0VCX0FVRElPLAorICAgIEVuYWJsZWRCeVNldHRpbmc9TW9kZXJuVW5w
cmVmaXhlZFdlYkF1ZGlvLAogICAgIEpTR2VuZXJhdGVUb0pTT2JqZWN0LAotICAgIEludGVyZmFj
ZU5hbWU9d2Via2l0T2ZmbGluZUF1ZGlvQ29udGV4dAogXSBpbnRlcmZhY2UgT2ZmbGluZUF1ZGlv
Q29udGV4dCA6IEF1ZGlvQ29udGV4dCB7CiAgICAgW0NhbGxXaXRoPVNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQsIE1heVRocm93RXhjZXB0aW9uXSBjb25zdHJ1Y3Rvcih1bnNpZ25lZCBsb25nIG51bWJl
ck9mQ2hhbm5lbHMsIHVuc2lnbmVkIGxvbmcgbnVtYmVyT2ZGcmFtZXMsIHVucmVzdHJpY3RlZCBm
bG9hdCBzYW1wbGVSYXRlKTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmF1ZGlvL09mZmxpbmVBdWRpb0Rlc3RpbmF0aW9uTm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmF1ZGlvL09mZmxpbmVBdWRpb0Rlc3RpbmF0aW9uTm9kZS5jcHAKaW5kZXgg
NmExOTU1NDZjZjcxMzk0ZmU1YzQxNGI3NjViNmM5N2UwNWVkYzA0OS4uZmVjNTA4Y2JmZjFjNzFk
MzNiYzRiMTNlYTk4MmY5MmZjMGFmYjk5YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJhdWRpby9PZmZsaW5lQXVkaW9EZXN0aW5hdGlvbk5vZGUuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vT2ZmbGluZUF1ZGlvRGVzdGluYXRpb25Ob2RlLmNw
cApAQCAtNDEsNyArNDEsNyBAQCBXVEZfTUFLRV9JU09fQUxMT0NBVEVEX0lNUEwoT2ZmbGluZUF1
ZGlvRGVzdGluYXRpb25Ob2RlKTsKICAgICAKIGNvbnN0IHNpemVfdCByZW5kZXJRdWFudHVtU2l6
ZSA9IDEyODsgICAgCiAKLU9mZmxpbmVBdWRpb0Rlc3RpbmF0aW9uTm9kZTo6T2ZmbGluZUF1ZGlv
RGVzdGluYXRpb25Ob2RlKEF1ZGlvQ29udGV4dCYgY29udGV4dCwgQXVkaW9CdWZmZXIqIHJlbmRl
clRhcmdldCkKK09mZmxpbmVBdWRpb0Rlc3RpbmF0aW9uTm9kZTo6T2ZmbGluZUF1ZGlvRGVzdGlu
YXRpb25Ob2RlKEF1ZGlvQ29udGV4dEJhc2UmIGNvbnRleHQsIEF1ZGlvQnVmZmVyKiByZW5kZXJU
YXJnZXQpCiAgICAgOiBBdWRpb0Rlc3RpbmF0aW9uTm9kZShjb250ZXh0LCByZW5kZXJUYXJnZXQt
PnNhbXBsZVJhdGUoKSkKICAgICAsIG1fcmVuZGVyVGFyZ2V0KHJlbmRlclRhcmdldCkKICAgICAs
IG1fc3RhcnRlZFJlbmRlcmluZyhmYWxzZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViYXVkaW8vT2ZmbGluZUF1ZGlvRGVzdGluYXRpb25Ob2RlLmggYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmF1ZGlvL09mZmxpbmVBdWRpb0Rlc3RpbmF0aW9uTm9kZS5oCmluZGV4
IGRhMjQ5NTc0ZDQ4NGZmODEyYWE0OTM3YWMzYTE2NWVlOTU4Mjg0Y2MuLmY4NzEwZmRlMTBkZmZm
ZTQ5MDIzNGYxOTM2YmQ1OGJhYTNjYjJlOTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViYXVkaW8vT2ZmbGluZUF1ZGlvRGVzdGluYXRpb25Ob2RlLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9PZmZsaW5lQXVkaW9EZXN0aW5hdGlvbk5vZGUuaApA
QCAtMzcsOSArMzcsOSBAQCBjbGFzcyBBdWRpb0NvbnRleHQ7CiBjbGFzcyBPZmZsaW5lQXVkaW9E
ZXN0aW5hdGlvbk5vZGUgZmluYWwgOiBwdWJsaWMgQXVkaW9EZXN0aW5hdGlvbk5vZGUgewogICAg
IFdURl9NQUtFX0lTT19BTExPQ0FURUQoT2ZmbGluZUF1ZGlvRGVzdGluYXRpb25Ob2RlKTsKIHB1
YmxpYzoKLSAgICBzdGF0aWMgUmVmPE9mZmxpbmVBdWRpb0Rlc3RpbmF0aW9uTm9kZT4gY3JlYXRl
KEF1ZGlvQ29udGV4dCYgY29udGV4dCwgQXVkaW9CdWZmZXIqIHJlbmRlclRhcmdldCkKKyAgICBz
dGF0aWMgUmVmPE9mZmxpbmVBdWRpb0Rlc3RpbmF0aW9uTm9kZT4gY3JlYXRlKEF1ZGlvQ29udGV4
dEJhc2UmIGNvbnRleHQsIEF1ZGlvQnVmZmVyKiByZW5kZXJUYXJnZXQpCiAgICAgewotICAgICAg
ICByZXR1cm4gYWRvcHRSZWYoKm5ldyBPZmZsaW5lQXVkaW9EZXN0aW5hdGlvbk5vZGUoY29udGV4
dCwgcmVuZGVyVGFyZ2V0KSk7ICAgICAKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgT2Zm
bGluZUF1ZGlvRGVzdGluYXRpb25Ob2RlKGNvbnRleHQsIHJlbmRlclRhcmdldCkpOwogICAgIH0K
IAogICAgIHZpcnR1YWwgfk9mZmxpbmVBdWRpb0Rlc3RpbmF0aW9uTm9kZSgpOwpAQCAtNTUsNyAr
NTUsNyBAQCBwdWJsaWM6CiAgICAgZmxvYXQgc2FtcGxlUmF0ZSgpIGNvbnN0IG92ZXJyaWRlIHsg
cmV0dXJuIG1fcmVuZGVyVGFyZ2V0LT5zYW1wbGVSYXRlKCk7IH0KIAogcHJpdmF0ZToKLSAgICBP
ZmZsaW5lQXVkaW9EZXN0aW5hdGlvbk5vZGUoQXVkaW9Db250ZXh0JiwgQXVkaW9CdWZmZXIqIHJl
bmRlclRhcmdldCk7CisgICAgT2ZmbGluZUF1ZGlvRGVzdGluYXRpb25Ob2RlKEF1ZGlvQ29udGV4
dEJhc2UmLCBBdWRpb0J1ZmZlciogcmVuZGVyVGFyZ2V0KTsKIAogICAgIC8vIFRoaXMgQXVkaW9O
b2RlIHJlbmRlcnMgaW50byB0aGlzIEF1ZGlvQnVmZmVyLgogICAgIFJlZlB0cjxBdWRpb0J1ZmZl
cj4gbV9yZW5kZXJUYXJnZXQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmF1ZGlvL09zY2lsbGF0b3JOb2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVk
aW8vT3NjaWxsYXRvck5vZGUuY3BwCmluZGV4IDk1NjAwNTNhNDgwNWI5ZDRiZjU1OTllNzNhMTlh
ODFlMjViMGM5NmYuLmU4ZjMxYzcyMjBlNTA2NTY4ZTNhY2YwNThmNmNhYjQ3M2IwOTFlZDcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vT3NjaWxsYXRvck5vZGUu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vT3NjaWxsYXRvck5vZGUu
Y3BwCkBAIC00NSwxMiArNDUsMTIgQEAgUGVyaW9kaWNXYXZlKiBPc2NpbGxhdG9yTm9kZTo6c19w
ZXJpb2RpY1dhdmVTcXVhcmUgPSBudWxscHRyOwogUGVyaW9kaWNXYXZlKiBPc2NpbGxhdG9yTm9k
ZTo6c19wZXJpb2RpY1dhdmVTYXd0b290aCA9IG51bGxwdHI7CiBQZXJpb2RpY1dhdmUqIE9zY2ls
bGF0b3JOb2RlOjpzX3BlcmlvZGljV2F2ZVRyaWFuZ2xlID0gbnVsbHB0cjsKIAotUmVmPE9zY2ls
bGF0b3JOb2RlPiBPc2NpbGxhdG9yTm9kZTo6Y3JlYXRlKEF1ZGlvQ29udGV4dCYgY29udGV4dCwg
ZmxvYXQgc2FtcGxlUmF0ZSkKK1JlZjxPc2NpbGxhdG9yTm9kZT4gT3NjaWxsYXRvck5vZGU6OmNy
ZWF0ZShBdWRpb0NvbnRleHRCYXNlJiBjb250ZXh0LCBmbG9hdCBzYW1wbGVSYXRlKQogewogICAg
IHJldHVybiBhZG9wdFJlZigqbmV3IE9zY2lsbGF0b3JOb2RlKGNvbnRleHQsIHNhbXBsZVJhdGUp
KTsKIH0KIAotT3NjaWxsYXRvck5vZGU6Ok9zY2lsbGF0b3JOb2RlKEF1ZGlvQ29udGV4dCYgY29u
dGV4dCwgZmxvYXQgc2FtcGxlUmF0ZSkKK09zY2lsbGF0b3JOb2RlOjpPc2NpbGxhdG9yTm9kZShB
dWRpb0NvbnRleHRCYXNlJiBjb250ZXh0LCBmbG9hdCBzYW1wbGVSYXRlKQogICAgIDogQXVkaW9T
Y2hlZHVsZWRTb3VyY2VOb2RlKGNvbnRleHQsIHNhbXBsZVJhdGUpCiAgICAgLCBtX2ZpcnN0UmVu
ZGVyKHRydWUpCiAgICAgLCBtX3ZpcnR1YWxSZWFkSW5kZXgoMCkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vT3NjaWxsYXRvck5vZGUuaCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViYXVkaW8vT3NjaWxsYXRvck5vZGUuaAppbmRleCA0MmZmMGMxOTI0YjYy
ZWQwY2YwMDE3ZmZiOTdkZTYwMzI2YzczOTIyLi4wODk1YmNlM2RkZGY1OWQ2OWM1YzZhZjljZmQy
YjljZmJlOWViNGE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlv
L09zY2lsbGF0b3JOb2RlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9P
c2NpbGxhdG9yTm9kZS5oCkBAIC00NSw3ICs0NSw3IEBAIHB1YmxpYzoKICAgICAgICAgQ3VzdG9t
CiAgICAgfTsKIAotICAgIHN0YXRpYyBSZWY8T3NjaWxsYXRvck5vZGU+IGNyZWF0ZShBdWRpb0Nv
bnRleHQmLCBmbG9hdCBzYW1wbGVSYXRlKTsKKyAgICBzdGF0aWMgUmVmPE9zY2lsbGF0b3JOb2Rl
PiBjcmVhdGUoQXVkaW9Db250ZXh0QmFzZSYsIGZsb2F0IHNhbXBsZVJhdGUpOwogCiAgICAgdmly
dHVhbCB+T3NjaWxsYXRvck5vZGUoKTsKIApAQCAtNjAsNyArNjAsNyBAQCBwdWJsaWM6CiAgICAg
dm9pZCBzZXRQZXJpb2RpY1dhdmUoUGVyaW9kaWNXYXZlKik7CiAKIHByaXZhdGU6Ci0gICAgT3Nj
aWxsYXRvck5vZGUoQXVkaW9Db250ZXh0JiwgZmxvYXQgc2FtcGxlUmF0ZSk7CisgICAgT3NjaWxs
YXRvck5vZGUoQXVkaW9Db250ZXh0QmFzZSYsIGZsb2F0IHNhbXBsZVJhdGUpOwogCiAgICAgdm9p
ZCBwcm9jZXNzKHNpemVfdCBmcmFtZXNUb1Byb2Nlc3MpIGZpbmFsOwogICAgIHZvaWQgcmVzZXQo
KSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vUGFu
bmVyTm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1Bhbm5lck5vZGUu
Y3BwCmluZGV4IGVjODBlNjlkMmFiODcxMDI4YmM2YTZlNDQ3ZWFiZDE5ZTlmY2M3MjEuLmFlNDJm
MTE0YmJjMzkwNGRiN2MyY2MxNTZkMGIyY2JlNDIwMDY5OGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vUGFubmVyTm9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJhdWRpby9QYW5uZXJOb2RlLmNwcApAQCAtNDgsOCArNDgsMTMgQEAgc3Rh
dGljIHZvaWQgZml4TkFOcyhkb3VibGUgJngpCiAgICAgICAgIHggPSAwLjA7CiB9CiAKLVBhbm5l
ck5vZGU6OlBhbm5lck5vZGUoQXVkaW9Db250ZXh0JiBjb250ZXh0LCBmbG9hdCBzYW1wbGVSYXRl
KQorUGFubmVyTm9kZUJhc2U6OlBhbm5lck5vZGVCYXNlKEF1ZGlvQ29udGV4dEJhc2UmIGNvbnRl
eHQsIGZsb2F0IHNhbXBsZVJhdGUpCiAgICAgOiBBdWRpb05vZGUoY29udGV4dCwgc2FtcGxlUmF0
ZSkKK3sKK30KKworUGFubmVyTm9kZTo6UGFubmVyTm9kZShBdWRpb0NvbnRleHQmIGNvbnRleHQs
IGZsb2F0IHNhbXBsZVJhdGUpCisgICAgOiBQYW5uZXJOb2RlQmFzZShjb250ZXh0LCBzYW1wbGVS
YXRlKQogICAgICwgbV9wYW5uaW5nTW9kZWwoUGFubmluZ01vZGVsVHlwZTo6SFJURikKICAgICAs
IG1fbGFzdEdhaW4oLTEuMCkKICAgICAsIG1fcG9zaXRpb25YKEF1ZGlvUGFyYW06OmNyZWF0ZShj
b250ZXh0LCAicG9zaXRpb25YIl9zLCAwLCAtRkxUX01BWCwgRkxUX01BWCkpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1Bhbm5lck5vZGUuaCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vUGFubmVyTm9kZS5oCmluZGV4IDg0ODBjMjMzMjgwMGRj
ZjQ4ODUxNThkNjk0NTkyZGQ5ZWU1MjkyYjYuLjI5YjY0OGQwNjA3NjI5Mzg3YTFiMGMwNzAzN2M1
MGMyMmNmMDEwNTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8v
UGFubmVyTm9kZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vUGFubmVy
Tm9kZS5oCkBAIC0yNiw2ICsyNiw3IEBACiAKICNpZiBFTkFCTEUoV0VCX0FVRElPKQogCisjaW5j
bHVkZSAiQXVkaW9Db250ZXh0LmgiCiAjaW5jbHVkZSAiQXVkaW9MaXN0ZW5lci5oIgogI2luY2x1
ZGUgIkF1ZGlvTm9kZS5oIgogI2luY2x1ZGUgIkF1ZGlvUGFyYW0uaCIKQEAgLTQxLDYgKzQyLDE2
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgSFJURkRhdGFiYXNlTG9hZGVyOwogCitj
bGFzcyBQYW5uZXJOb2RlQmFzZSA6IHB1YmxpYyBBdWRpb05vZGUgeworcHVibGljOgorICAgIHZp
cnR1YWwgflBhbm5lck5vZGVCYXNlKCkgPSBkZWZhdWx0OworCisgICAgdmlydHVhbCBmbG9hdCBk
b3BwbGVyUmF0ZSgpID0gMDsKKworcHJvdGVjdGVkOgorICAgIFBhbm5lck5vZGVCYXNlKEF1ZGlv
Q29udGV4dEJhc2UmLCBmbG9hdCBzYW1wbGVSYXRlKTsKK307CisKIC8vIFBhbm5lck5vZGUgaXMg
YW4gQXVkaW9Ob2RlIHdpdGggb25lIGlucHV0IGFuZCBvbmUgb3V0cHV0LgogLy8gSXQgcG9zaXRp
b25zIGEgc291bmQgaW4gM0Qgc3BhY2UsIHdpdGggdGhlIGV4YWN0IGVmZmVjdCBkZXBlbmRlbnQg
b24gdGhlIHBhbm5pbmcgbW9kZWwuCiAvLyBJdCBoYXMgYSBwb3NpdGlvbiBhbmQgYW4gb3JpZW50
YXRpb24gaW4gM0Qgc3BhY2Ugd2hpY2ggaXMgcmVsYXRpdmUgdG8gdGhlIHBvc2l0aW9uIGFuZCBv
cmllbnRhdGlvbiBvZiB0aGUgY29udGV4dCdzIEF1ZGlvTGlzdGVuZXIuCkBAIC00OCw3ICs1OSw3
IEBAIGNsYXNzIEhSVEZEYXRhYmFzZUxvYWRlcjsKIC8vIEEgY29uZSBlZmZlY3Qgd2lsbCBhdHRl
bnVhdGUgdGhlIGdhaW4gYXMgdGhlIG9yaWVudGF0aW9uIG1vdmVzIGF3YXkgZnJvbSB0aGUgbGlz
dGVuZXIuCiAvLyBBbGwgb2YgdGhlc2UgZWZmZWN0cyBmb2xsb3cgdGhlIE9wZW5BTCBzcGVjaWZp
Y2F0aW9uIHZlcnkgY2xvc2VseS4KIAotY2xhc3MgUGFubmVyTm9kZSBmaW5hbCA6IHB1YmxpYyBB
dWRpb05vZGUgeworY2xhc3MgUGFubmVyTm9kZSBmaW5hbCA6IHB1YmxpYyBQYW5uZXJOb2RlQmFz
ZSB7CiAgICAgV1RGX01BS0VfSVNPX0FMTE9DQVRFRChQYW5uZXJOb2RlKTsKIHB1YmxpYzoKICAg
ICBzdGF0aWMgUmVmPFBhbm5lck5vZGU+IGNyZWF0ZShBdWRpb0NvbnRleHQmIGNvbnRleHQsIGZs
b2F0IHNhbXBsZVJhdGUpCkBAIC01OCw2ICs2OSw5IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwg
flBhbm5lck5vZGUoKTsKIAorICAgIEF1ZGlvQ29udGV4dCYgY29udGV4dCgpIHsgcmV0dXJuIGRv
d25jYXN0PEF1ZGlvQ29udGV4dD4oQXVkaW9Ob2RlOjpjb250ZXh0KCkpOyB9CisgICAgY29uc3Qg
QXVkaW9Db250ZXh0JiBjb250ZXh0KCkgY29uc3QgeyByZXR1cm4gZG93bmNhc3Q8QXVkaW9Db250
ZXh0PihBdWRpb05vZGU6OmNvbnRleHQoKSk7IH0KKwogICAgIC8vIEF1ZGlvTm9kZQogICAgIHZv
aWQgcHJvY2VzcyhzaXplX3QgZnJhbWVzVG9Qcm9jZXNzKSBvdmVycmlkZTsKICAgICB2b2lkIHB1
bGxJbnB1dHMoc2l6ZV90IGZyYW1lc1RvUHJvY2Vzcykgb3ZlcnJpZGU7CkBAIC0xMTEsNyArMTI1
LDcgQEAgcHVibGljOgogICAgIHZvaWQgc2V0Q29uZU91dGVyR2Fpbihkb3VibGUgYW5nbGUpIHsg
bV9jb25lRWZmZWN0LnNldE91dGVyR2FpbihhbmdsZSk7IH0KIAogICAgIHZvaWQgZ2V0QXppbXV0
aEVsZXZhdGlvbihkb3VibGUqIG91dEF6aW11dGgsIGRvdWJsZSogb3V0RWxldmF0aW9uKTsKLSAg
ICBmbG9hdCBkb3BwbGVyUmF0ZSgpOworICAgIGZsb2F0IGRvcHBsZXJSYXRlKCkgZmluYWw7CiAK
ICAgICAvLyBBY2Nlc3NvcnMgZm9yIGR5bmFtaWNhbGx5IGNhbGN1bGF0ZWQgZ2FpbiB2YWx1ZXMu
CiAgICAgQXVkaW9QYXJhbSogZGlzdGFuY2VHYWluKCkgeyByZXR1cm4gbV9kaXN0YW5jZUdhaW4u
Z2V0KCk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vUGFu
bmVyTm9kZS5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1Bhbm5lck5vZGUu
aWRsCmluZGV4IDAzMjk4MzdkMmY1YTI1YzdmNmE2ZjBkMDRlMzE4N2ExZjZhZDhiNDEuLjdiYjky
YzRmOGZiNDVkYjI5M2ZmZTNhMTdhOTcxMDNjMGI5MmU2ZTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vUGFubmVyTm9kZS5pZGwKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJhdWRpby9QYW5uZXJOb2RlLmlkbApAQCAtMjIsMjcgKzIyLDEwIEBACiAg
KiBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KICAqLwogCi1bCi0gICAgQ29uZGl0aW9uYWw9V0VCX0FVRElPLAotICAgIEltcGxlbWVu
dGVkQXM9UGFubmluZ01vZGVsVHlwZQotXSBlbnVtIFBhbm5pbmdNb2RlbFR5cGUgewotICAgICJl
cXVhbHBvd2VyIiwKLSAgICAiSFJURiIKLX07Ci0KLVsKLSAgICBDb25kaXRpb25hbD1XRUJfQVVE
SU8sCi0gICAgSW1wbGVtZW50ZWRBcz1EaXN0YW5jZU1vZGVsVHlwZQotXSBlbnVtIERpc3RhbmNl
TW9kZWxUeXBlIHsKLSAgICAibGluZWFyIiwKLSAgICAiaW52ZXJzZSIsCi0gICAgImV4cG9uZW50
aWFsIgotfTsKLQogWwogICAgIENvbmRpdGlvbmFsPVdFQl9BVURJTywKICAgICBKU0dlbmVyYXRl
VG9KU09iamVjdCwKLSAgICBJbnRlcmZhY2VOYW1lPXdlYmtpdEF1ZGlvUGFubmVyTm9kZSwKKyAg
ICBFbmFibGVkQnlTZXR0aW5nPU1vZGVyblVucHJlZml4ZWRXZWJBdWRpbywKIF0gaW50ZXJmYWNl
IFBhbm5lck5vZGUgOiBBdWRpb05vZGUgewogICAgIC8vIERlZmF1bHQgbW9kZWwgZm9yIHN0ZXJl
byBpcyBIUlRGIAogICAgIGF0dHJpYnV0ZSBQYW5uaW5nTW9kZWxUeXBlIHBhbm5pbmdNb2RlbDsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vUGFubmluZ01vZGVs
VHlwZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9QYW5uaW5nTW9kZWxUeXBl
LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uYWIwYjIyNzEyYTE3MGIxZmVmYWUxNmU2ZWYzZGY5NGQyMzhhMWE5Zgot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vUGFubmlu
Z01vZGVsVHlwZS5oCkBAIC0wLDAgKzEsMjcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAs
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQor
ICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OCisgKiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKKyAqIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQor
CisjaW5jbHVkZSAiUGFubmVyLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmF1ZGlvL1Bhbm5pbmdNb2RlbFR5cGUuaWRsIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJhdWRpby9QYW5uaW5nTW9kZWxUeXBlLmlkbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iZjdkZjhmNTU0MmZhYTQ1
MjYwN2JlMWYwOTllOTk3NGJkYWMzN2U2Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJhdWRpby9QYW5uaW5nTW9kZWxUeXBlLmlkbApAQCAtMCwwICsxLDMwIEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwLCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAq
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04KKyAqIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUwor
ICogU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworWworICAgIENvbmRpdGlvbmFsPVdFQl9BVURJTywKK10gZW51bSBQYW5u
aW5nTW9kZWxUeXBlIHsKKyAgICAiZXF1YWxwb3dlciIsCisgICAgIkhSVEYiCit9OwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9TY3JpcHRQcm9jZXNzb3JOb2Rl
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vU2NyaXB0UHJvY2Vzc29yTm9k
ZS5jcHAKaW5kZXggOTFjNzUzN2UxNWU4YjU1MjQxMWVhOWY2MTMwMWVjMWMzMjVhZDI1Ni4uNzYx
MGIxNTAyNDg3OGI2MDZlNWNkZDhjNGY1YWIwZmIxMWRjMDM0NiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9TY3JpcHRQcm9jZXNzb3JOb2RlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1NjcmlwdFByb2Nlc3Nvck5vZGUuY3BwCkBA
IC00NCwxMiArNDQsMTIgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBXVEZfTUFLRV9JU09fQUxM
T0NBVEVEX0lNUEwoU2NyaXB0UHJvY2Vzc29yTm9kZSk7CiAKLVJlZjxTY3JpcHRQcm9jZXNzb3JO
b2RlPiBTY3JpcHRQcm9jZXNzb3JOb2RlOjpjcmVhdGUoQXVkaW9Db250ZXh0JiBjb250ZXh0LCBm
bG9hdCBzYW1wbGVSYXRlLCBzaXplX3QgYnVmZmVyU2l6ZSwgdW5zaWduZWQgbnVtYmVyT2ZJbnB1
dENoYW5uZWxzLCB1bnNpZ25lZCBudW1iZXJPZk91dHB1dENoYW5uZWxzKQorUmVmPFNjcmlwdFBy
b2Nlc3Nvck5vZGU+IFNjcmlwdFByb2Nlc3Nvck5vZGU6OmNyZWF0ZShBdWRpb0NvbnRleHRCYXNl
JiBjb250ZXh0LCBmbG9hdCBzYW1wbGVSYXRlLCBzaXplX3QgYnVmZmVyU2l6ZSwgdW5zaWduZWQg
bnVtYmVyT2ZJbnB1dENoYW5uZWxzLCB1bnNpZ25lZCBudW1iZXJPZk91dHB1dENoYW5uZWxzKQog
ewogICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFNjcmlwdFByb2Nlc3Nvck5vZGUoY29udGV4dCwg
c2FtcGxlUmF0ZSwgYnVmZmVyU2l6ZSwgbnVtYmVyT2ZJbnB1dENoYW5uZWxzLCBudW1iZXJPZk91
dHB1dENoYW5uZWxzKSk7CiB9CiAKLVNjcmlwdFByb2Nlc3Nvck5vZGU6OlNjcmlwdFByb2Nlc3Nv
ck5vZGUoQXVkaW9Db250ZXh0JiBjb250ZXh0LCBmbG9hdCBzYW1wbGVSYXRlLCBzaXplX3QgYnVm
ZmVyU2l6ZSwgdW5zaWduZWQgbnVtYmVyT2ZJbnB1dENoYW5uZWxzLCB1bnNpZ25lZCBudW1iZXJP
Zk91dHB1dENoYW5uZWxzKQorU2NyaXB0UHJvY2Vzc29yTm9kZTo6U2NyaXB0UHJvY2Vzc29yTm9k
ZShBdWRpb0NvbnRleHRCYXNlJiBjb250ZXh0LCBmbG9hdCBzYW1wbGVSYXRlLCBzaXplX3QgYnVm
ZmVyU2l6ZSwgdW5zaWduZWQgbnVtYmVyT2ZJbnB1dENoYW5uZWxzLCB1bnNpZ25lZCBudW1iZXJP
Zk91dHB1dENoYW5uZWxzKQogICAgIDogQXVkaW9Ob2RlKGNvbnRleHQsIHNhbXBsZVJhdGUpCiAg
ICAgLCBBY3RpdmVET01PYmplY3QoY29udGV4dC5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpCiAg
ICAgLCBtX2RvdWJsZUJ1ZmZlckluZGV4KDApCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmF1ZGlvL1NjcmlwdFByb2Nlc3Nvck5vZGUuaCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViYXVkaW8vU2NyaXB0UHJvY2Vzc29yTm9kZS5oCmluZGV4IDVhNGU3Y2U0NzUyMmVm
MjhlYmYyZmQxNzk2YWY1ODRiYTc1YjQxMzMuLjRjMTRhMDc1N2RmNWM1ZTYyZGZlOTZhODhlYjQy
YjQ3ZjE1ZTcyNTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8v
U2NyaXB0UHJvY2Vzc29yTm9kZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVk
aW8vU2NyaXB0UHJvY2Vzc29yTm9kZS5oCkBAIC01Miw3ICs1Miw3IEBAIHB1YmxpYzoKICAgICAv
LyBUaGlzIHZhbHVlIGNvbnRyb2xzIGhvdyBmcmVxdWVudGx5IHRoZSBvbmF1ZGlvcHJvY2VzcyBl
dmVudCBoYW5kbGVyIGlzIGNhbGxlZCBhbmQgaG93IG1hbnkgc2FtcGxlLWZyYW1lcyBuZWVkIHRv
IGJlIHByb2Nlc3NlZCBlYWNoIGNhbGwuCiAgICAgLy8gTG93ZXIgbnVtYmVycyBmb3IgYnVmZmVy
U2l6ZSB3aWxsIHJlc3VsdCBpbiBhIGxvd2VyIChiZXR0ZXIpIGxhdGVuY3kuIEhpZ2hlciBudW1i
ZXJzIHdpbGwgYmUgbmVjZXNzYXJ5IHRvIGF2b2lkIGF1ZGlvIGJyZWFrdXAgYW5kIGdsaXRjaGVz
LgogICAgIC8vIFRoZSB2YWx1ZSBjaG9zZW4gbXVzdCBjYXJlZnVsbHkgYmFsYW5jZSBiZXR3ZWVu
IGxhdGVuY3kgYW5kIGF1ZGlvIHF1YWxpdHkuCi0gICAgc3RhdGljIFJlZjxTY3JpcHRQcm9jZXNz
b3JOb2RlPiBjcmVhdGUoQXVkaW9Db250ZXh0JiwgZmxvYXQgc2FtcGxlUmF0ZSwgc2l6ZV90IGJ1
ZmZlclNpemUsIHVuc2lnbmVkIG51bWJlck9mSW5wdXRDaGFubmVscywgdW5zaWduZWQgbnVtYmVy
T2ZPdXRwdXRDaGFubmVscyk7CisgICAgc3RhdGljIFJlZjxTY3JpcHRQcm9jZXNzb3JOb2RlPiBj
cmVhdGUoQXVkaW9Db250ZXh0QmFzZSYsIGZsb2F0IHNhbXBsZVJhdGUsIHNpemVfdCBidWZmZXJT
aXplLCB1bnNpZ25lZCBudW1iZXJPZklucHV0Q2hhbm5lbHMsIHVuc2lnbmVkIG51bWJlck9mT3V0
cHV0Q2hhbm5lbHMpOwogCiAgICAgdmlydHVhbCB+U2NyaXB0UHJvY2Vzc29yTm9kZSgpOwogCkBA
IC03MSw3ICs3MSw3IEBAIHByaXZhdGU6CiAgICAgZG91YmxlIHRhaWxUaW1lKCkgY29uc3Qgb3Zl
cnJpZGU7CiAgICAgZG91YmxlIGxhdGVuY3lUaW1lKCkgY29uc3Qgb3ZlcnJpZGU7CiAKLSAgICBT
Y3JpcHRQcm9jZXNzb3JOb2RlKEF1ZGlvQ29udGV4dCYsIGZsb2F0IHNhbXBsZVJhdGUsIHNpemVf
dCBidWZmZXJTaXplLCB1bnNpZ25lZCBudW1iZXJPZklucHV0Q2hhbm5lbHMsIHVuc2lnbmVkIG51
bWJlck9mT3V0cHV0Q2hhbm5lbHMpOworICAgIFNjcmlwdFByb2Nlc3Nvck5vZGUoQXVkaW9Db250
ZXh0QmFzZSYsIGZsb2F0IHNhbXBsZVJhdGUsIHNpemVfdCBidWZmZXJTaXplLCB1bnNpZ25lZCBu
dW1iZXJPZklucHV0Q2hhbm5lbHMsIHVuc2lnbmVkIG51bWJlck9mT3V0cHV0Q2hhbm5lbHMpOwog
CiAgICAgdm9pZCBmaXJlUHJvY2Vzc0V2ZW50KCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViYXVkaW8vV2F2ZVNoYXBlck5vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJhdWRpby9XYXZlU2hhcGVyTm9kZS5jcHAKaW5kZXggNmU3ZThkZDFjOWMxOWZh
M2M4NWUzZDlkODU1YWI5ZjQ1Nzg1Yjc5MC4uYWU0YWY5ZjIzMmY3NTEzNmMwODFhZmUxNGJkN2E3
OTU2YzA1Mjk2ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9X
YXZlU2hhcGVyTm9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9X
YXZlU2hhcGVyTm9kZS5jcHAKQEAgLTM1LDcgKzM1LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
CiBXVEZfTUFLRV9JU09fQUxMT0NBVEVEX0lNUEwoV2F2ZVNoYXBlck5vZGUpOwogCi1XYXZlU2hh
cGVyTm9kZTo6V2F2ZVNoYXBlck5vZGUoQXVkaW9Db250ZXh0JiBjb250ZXh0KQorV2F2ZVNoYXBl
ck5vZGU6OldhdmVTaGFwZXJOb2RlKEF1ZGlvQ29udGV4dEJhc2UmIGNvbnRleHQpCiAgICAgOiBB
dWRpb0Jhc2ljUHJvY2Vzc29yTm9kZShjb250ZXh0LCBjb250ZXh0LnNhbXBsZVJhdGUoKSkKIHsK
ICAgICBzZXROb2RlVHlwZShOb2RlVHlwZVdhdmVTaGFwZXIpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9XYXZlU2hhcGVyTm9kZS5oIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJhdWRpby9XYXZlU2hhcGVyTm9kZS5oCmluZGV4IGY0OWUzNDliYzNkYzhj
MjliNGE2ZTYzZGZkYmY5ODY0Yjk2Zjg2ODAuLjVmNDkzMjhiMjJkMGViZTVkNmVmNmQwM2M2YWU2
ZDZmZmMxYTExMGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8v
V2F2ZVNoYXBlck5vZGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1dh
dmVTaGFwZXJOb2RlLmgKQEAgLTMzLDcgKzMzLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xh
c3MgV2F2ZVNoYXBlck5vZGUgZmluYWwgOiBwdWJsaWMgQXVkaW9CYXNpY1Byb2Nlc3Nvck5vZGUg
ewogICAgIFdURl9NQUtFX0lTT19BTExPQ0FURUQoV2F2ZVNoYXBlck5vZGUpOwogcHVibGljOgot
ICAgIHN0YXRpYyBSZWY8V2F2ZVNoYXBlck5vZGU+IGNyZWF0ZShBdWRpb0NvbnRleHQmIGNvbnRl
eHQpCisgICAgc3RhdGljIFJlZjxXYXZlU2hhcGVyTm9kZT4gY3JlYXRlKEF1ZGlvQ29udGV4dEJh
c2UmIGNvbnRleHQpCiAgICAgewogICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBXYXZlU2hh
cGVyTm9kZShjb250ZXh0KSk7CiAgICAgfQpAQCAtNDksNyArNDksNyBAQCBwdWJsaWM6CiAgICAg
ZG91YmxlIGxhdGVuY3koKSBjb25zdCB7IHJldHVybiBsYXRlbmN5VGltZSgpOyB9CiAKIHByaXZh
dGU6ICAgIAotICAgIGV4cGxpY2l0IFdhdmVTaGFwZXJOb2RlKEF1ZGlvQ29udGV4dCYpOyAgICAK
KyAgICBleHBsaWNpdCBXYXZlU2hhcGVyTm9kZShBdWRpb0NvbnRleHRCYXNlJik7CiAKICAgICBX
YXZlU2hhcGVyUHJvY2Vzc29yKiB3YXZlU2hhcGVyUHJvY2Vzc29yKCkgeyByZXR1cm4gc3RhdGlj
X2Nhc3Q8V2F2ZVNoYXBlclByb2Nlc3Nvcio+KHByb2Nlc3NvcigpKTsgfQogfTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vV2ViS2l0QXVkaW9Db250ZXh0LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vV2ViS2l0QXVkaW9Db250ZXh0LmNw
cApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi5mNDAyMDgxOWE4OTM3ZmM2M2Q1M2Q1NWYzZWE3ZDc5Yjk0OTIxMTAyCi0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9XZWJLaXRB
dWRpb0NvbnRleHQuY3BwCkBAIC0wLDAgKzEsMTQwMiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAy
MDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFS
RQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OCisgKiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKKyAqIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJj
b25maWcuaCIKKworI2lmIEVOQUJMRShXRUJfQVVESU8pCisKKyNpbmNsdWRlICJXZWJLaXRBdWRp
b0NvbnRleHQuaCIKKworI2luY2x1ZGUgIkFuYWx5c2VyTm9kZS5oIgorI2luY2x1ZGUgIkFzeW5j
QXVkaW9EZWNvZGVyLmgiCisjaW5jbHVkZSAiQXVkaW9CdWZmZXIuaCIKKyNpbmNsdWRlICJBdWRp
b0J1ZmZlckNhbGxiYWNrLmgiCisjaW5jbHVkZSAiQXVkaW9CdWZmZXJTb3VyY2VOb2RlLmgiCisj
aW5jbHVkZSAiQXVkaW9MaXN0ZW5lci5oIgorI2luY2x1ZGUgIkF1ZGlvTm9kZUlucHV0LmgiCisj
aW5jbHVkZSAiQXVkaW9Ob2RlT3V0cHV0LmgiCisjaW5jbHVkZSAiQXVkaW9TZXNzaW9uLmgiCisj
aW5jbHVkZSAiQmlxdWFkRmlsdGVyTm9kZS5oIgorI2luY2x1ZGUgIkNoYW5uZWxNZXJnZXJOb2Rl
LmgiCisjaW5jbHVkZSAiQ2hhbm5lbFNwbGl0dGVyTm9kZS5oIgorI2luY2x1ZGUgIkNvbnZvbHZl
ck5vZGUuaCIKKyNpbmNsdWRlICJEZWZhdWx0QXVkaW9EZXN0aW5hdGlvbk5vZGUuaCIKKyNpbmNs
dWRlICJEZWxheU5vZGUuaCIKKyNpbmNsdWRlICJEb2N1bWVudC5oIgorI2luY2x1ZGUgIkR5bmFt
aWNzQ29tcHJlc3Nvck5vZGUuaCIKKyNpbmNsdWRlICJFdmVudE5hbWVzLmgiCisjaW5jbHVkZSAi
RkZURnJhbWUuaCIKKyNpbmNsdWRlICJGcmFtZS5oIgorI2luY2x1ZGUgIkZyYW1lTG9hZGVyLmgi
CisjaW5jbHVkZSAiR2Fpbk5vZGUuaCIKKyNpbmNsdWRlICJHZW5lcmljRXZlbnRRdWV1ZS5oIgor
I2luY2x1ZGUgIkhSVEZEYXRhYmFzZUxvYWRlci5oIgorI2luY2x1ZGUgIkhSVEZQYW5uZXIuaCIK
KyNpbmNsdWRlICJKU0RPTVByb21pc2VEZWZlcnJlZC5oIgorI2luY2x1ZGUgIkxvZ2dpbmcuaCIK
KyNpbmNsdWRlICJOZXR3b3JraW5nQ29udGV4dC5oIgorI2luY2x1ZGUgIk9mZmxpbmVBdWRpb0Nv
bXBsZXRpb25FdmVudC5oIgorI2luY2x1ZGUgIk9mZmxpbmVBdWRpb0Rlc3RpbmF0aW9uTm9kZS5o
IgorI2luY2x1ZGUgIk9zY2lsbGF0b3JOb2RlLmgiCisjaW5jbHVkZSAiUGFnZS5oIgorI2luY2x1
ZGUgIlBlcmlvZGljV2F2ZS5oIgorI2luY2x1ZGUgIlBsYXRmb3JtTWVkaWFTZXNzaW9uTWFuYWdl
ci5oIgorI2luY2x1ZGUgIlNjcmlwdENvbnRyb2xsZXIuaCIKKyNpbmNsdWRlICJTY3JpcHRQcm9j
ZXNzb3JOb2RlLmgiCisjaW5jbHVkZSAiV2F2ZVNoYXBlck5vZGUuaCIKKyNpbmNsdWRlICJXZWJL
aXRBdWRpb1Bhbm5lck5vZGUuaCIKKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9TY3JpcHRDYWxs
U3RhY2suaD4KKworI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCisjaW5jbHVkZSAiTWVkaWFTdHJl
YW0uaCIKKyNpbmNsdWRlICJNZWRpYVN0cmVhbUF1ZGlvRGVzdGluYXRpb25Ob2RlLmgiCisjaW5j
bHVkZSAiTWVkaWFTdHJlYW1BdWRpb1NvdXJjZS5oIgorI2luY2x1ZGUgIk1lZGlhU3RyZWFtQXVk
aW9Tb3VyY2VOb2RlLmgiCisjZW5kaWYKKworI2lmIEVOQUJMRShWSURFTykKKyNpbmNsdWRlICJI
VE1MTWVkaWFFbGVtZW50LmgiCisjaW5jbHVkZSAiTWVkaWFFbGVtZW50QXVkaW9Tb3VyY2VOb2Rl
LmgiCisjZW5kaWYKKworI2lmIERFQlVHX0FVRElPTk9ERV9SRUZFUkVOQ0VTCisjaW5jbHVkZSA8
c3RkaW8uaD4KKyNlbmRpZgorCisjaWYgVVNFKEdTVFJFQU1FUikKKyNpbmNsdWRlICJHU3RyZWFt
ZXJDb21tb24uaCIKKyNlbmRpZgorCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKKyNpbmNsdWRl
ICJTY3JpcHRDb250cm9sbGVyLmgiCisjaW5jbHVkZSAiU2V0dGluZ3MuaCIKKyNlbmRpZgorCisj
aW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvQXJyYXlCdWZmZXIuaD4KKyNpbmNsdWRlIDx3dGYvQXRv
bWljcy5oPgorI2luY2x1ZGUgPHd0Zi9Jc29NYWxsb2NJbmxpbmVzLmg+CisjaW5jbHVkZSA8d3Rm
L01haW5UaHJlYWQuaD4KKyNpbmNsdWRlIDx3dGYvUmVmLmg+CisjaW5jbHVkZSA8d3RmL1JlZkNv
dW50ZWQuaD4KKyNpbmNsdWRlIDx3dGYvU2NvcGUuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZT
dHJpbmcuaD4KKworY29uc3QgdW5zaWduZWQgTWF4UGVyaW9kaWNXYXZlTGVuZ3RoID0gNDA5NjsK
KworbmFtZXNwYWNlIFdlYkNvcmUgeworCitXVEZfTUFLRV9JU09fQUxMT0NBVEVEX0lNUEwoV2Vi
S2l0QXVkaW9Db250ZXh0KTsKKworI2RlZmluZSBSRUxFQVNFX0xPR19JRl9BTExPV0VEKGZtdCwg
Li4uKSBSRUxFQVNFX0xPR19JRihkb2N1bWVudCgpICYmIGRvY3VtZW50KCktPnBhZ2UoKSAmJiBk
b2N1bWVudCgpLT5wYWdlKCktPmlzQWx3YXlzT25Mb2dnaW5nQWxsb3dlZCgpLCBNZWRpYSwgIiVw
IC0gV2ViS2l0QXVkaW9Db250ZXh0OjoiIGZtdCwgdGhpcywgIyNfX1ZBX0FSR1NfXykKKworYm9v
bCBXZWJLaXRBdWRpb0NvbnRleHQ6OmlzU2FtcGxlUmF0ZVJhbmdlR29vZChmbG9hdCBzYW1wbGVS
YXRlKQoreworICAgIC8vIEZJWE1FOiBJdCB3b3VsZCBiZSBuaWNlIGlmIHRoZSBtaW5pbXVtIHNh
bXBsZS1yYXRlIGNvdWxkIGJlIGxlc3MgdGhhbiA0NC4xS0h6LAorICAgIC8vIGJ1dCB0aGF0IHdp
bGwgcmVxdWlyZSBzb21lIGZpeGVzIGluIEhSVEZQYW5uZXI6OmZmdFNpemVGb3JTYW1wbGVSYXRl
KCksIGFuZCBzb21lIHRlc3RpbmcgdGhlcmUuCisgICAgcmV0dXJuIHNhbXBsZVJhdGUgPj0gNDQx
MDAgJiYgc2FtcGxlUmF0ZSA8PSA5NjAwMDsKK30KKworI2lmIE9TKFdJTkRPV1MpCisvLyBEb24n
dCBhbGxvdyBtb3JlIHRoYW4gdGhpcyBudW1iZXIgb2Ygc2ltdWx0YW5lb3VzIEF1ZGlvQ29udGV4
dHMgdGFsa2luZyB0byBoYXJkd2FyZS4KK2NvbnN0ZXhwciB1bnNpZ25lZCBtYXhIYXJkd2FyZUNv
bnRleHRzID0gNDsKKyNlbmRpZgordW5zaWduZWQgV2ViS2l0QXVkaW9Db250ZXh0OjpzX2hhcmR3
YXJlQ29udGV4dENvdW50ID0gMDsKKworRXhjZXB0aW9uT3I8UmVmPFdlYktpdEF1ZGlvQ29udGV4
dD4+IFdlYktpdEF1ZGlvQ29udGV4dDo6Y3JlYXRlKERvY3VtZW50JiBkb2N1bWVudCkKK3sKKyAg
ICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworI2lmIE9TKFdJTkRPV1MpCisgICAgaWYgKHNfaGFy
ZHdhcmVDb250ZXh0Q291bnQgPj0gbWF4SGFyZHdhcmVDb250ZXh0cykKKyAgICAgICAgcmV0dXJu
IEV4Y2VwdGlvbiB7IFF1b3RhRXhjZWVkZWRFcnJvciB9OworI2VuZGlmCisKKyAgICBhdXRvIGF1
ZGlvQ29udGV4dCA9IGFkb3B0UmVmKCpuZXcgV2ViS2l0QXVkaW9Db250ZXh0KGRvY3VtZW50KSk7
CisgICAgYXVkaW9Db250ZXh0LT5zdXNwZW5kSWZOZWVkZWQoKTsKKyAgICByZXR1cm4gYXVkaW9D
b250ZXh0OworfQorCisvLyBDb25zdHJ1Y3RvciBmb3IgcmVuZGVyaW5nIHRvIHRoZSBhdWRpbyBo
YXJkd2FyZS4KK1dlYktpdEF1ZGlvQ29udGV4dDo6V2ViS2l0QXVkaW9Db250ZXh0KERvY3VtZW50
JiBkb2N1bWVudCkKKyAgICA6IEF1ZGlvQ29udGV4dEJhc2UoZG9jdW1lbnQpCisjaWYgIVJFTEVB
U0VfTE9HX0RJU0FCTEVECisgICAgLCBtX2xvZ2dlcihkb2N1bWVudC5sb2dnZXIoKSkKKyAgICAs
IG1fbG9nSWRlbnRpZmllcih1bmlxdWVMb2dJZGVudGlmaWVyKCkpCisjZW5kaWYKKyAgICAsIG1f
bWVkaWFTZXNzaW9uKFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpjcmVhdGUoUGxhdGZvcm1NZWRpYVNl
c3Npb25NYW5hZ2VyOjpzaGFyZWRNYW5hZ2VyKCksICp0aGlzKSkKKyAgICAsIG1fZXZlbnRRdWV1
ZShNYWluVGhyZWFkR2VuZXJpY0V2ZW50UXVldWU6OmNyZWF0ZSgqdGhpcykpCit7CisgICAgLy8g
QWNjb3JkaW5nIHRvIHNwZWMgQXVkaW9Db250ZXh0IG11c3QgZGllIG9ubHkgYWZ0ZXIgcGFnZSBu
YXZpZ2F0ZS4KKyAgICAvLyBMZXRzIG1hcmsgaXQgYXMgQWN0aXZlRE9NT2JqZWN0IHdpdGggcGVu
ZGluZyBhY3Rpdml0eSBhbmQgdW5tYXJrIGl0IGluIGNsZWFyIG1ldGhvZC4KKyAgICBtYWtlUGVu
ZGluZ0FjdGl2aXR5KCk7CisKKyAgICBjb25zdHJ1Y3RDb21tb24oKTsKKworICAgIG1fZGVzdGlu
YXRpb25Ob2RlID0gRGVmYXVsdEF1ZGlvRGVzdGluYXRpb25Ob2RlOjpjcmVhdGUoKnRoaXMpOwor
CisgICAgLy8gSW5pdGlhbGl6ZSB0aGUgZGVzdGluYXRpb24gbm9kZSdzIG11dGVkIHN0YXRlIHRv
IG1hdGNoIHRoZSBwYWdlJ3MgY3VycmVudCBtdXRlZCBzdGF0ZS4KKyAgICBwYWdlTXV0ZWRTdGF0
ZURpZENoYW5nZSgpOworCisgICAgZG9jdW1lbnQuYWRkQXVkaW9Qcm9kdWNlcigqdGhpcyk7Cisg
ICAgZG9jdW1lbnQucmVnaXN0ZXJGb3JWaXNpYmlsaXR5U3RhdGVDaGFuZ2VkQ2FsbGJhY2tzKCp0
aGlzKTsKK30KKworLy8gQ29uc3RydWN0b3IgZm9yIG9mZmxpbmUgKG5vbi1yZWFsdGltZSkgcmVu
ZGVyaW5nLgorV2ViS2l0QXVkaW9Db250ZXh0OjpXZWJLaXRBdWRpb0NvbnRleHQoRG9jdW1lbnQm
IGRvY3VtZW50LCBBdWRpb0J1ZmZlciogcmVuZGVyVGFyZ2V0KQorICAgIDogQXVkaW9Db250ZXh0
QmFzZShkb2N1bWVudCkKKyNpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKKyAgICAsIG1fbG9nZ2Vy
KGRvY3VtZW50LmxvZ2dlcigpKQorICAgICwgbV9sb2dJZGVudGlmaWVyKHVuaXF1ZUxvZ0lkZW50
aWZpZXIoKSkKKyNlbmRpZgorICAgICwgbV9pc09mZmxpbmVDb250ZXh0KHRydWUpCisgICAgLCBt
X21lZGlhU2Vzc2lvbihQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6Y3JlYXRlKFBsYXRmb3JtTWVkaWFT
ZXNzaW9uTWFuYWdlcjo6c2hhcmVkTWFuYWdlcigpLCAqdGhpcykpCisgICAgLCBtX2V2ZW50UXVl
dWUoTWFpblRocmVhZEdlbmVyaWNFdmVudFF1ZXVlOjpjcmVhdGUoKnRoaXMpKQorICAgICwgbV9y
ZW5kZXJUYXJnZXQocmVuZGVyVGFyZ2V0KQoreworICAgIGNvbnN0cnVjdENvbW1vbigpOworCisg
ICAgLy8gQ3JlYXRlIGEgbmV3IGRlc3RpbmF0aW9uIGZvciBvZmZsaW5lIHJlbmRlcmluZy4KKyAg
ICBtX2Rlc3RpbmF0aW9uTm9kZSA9IE9mZmxpbmVBdWRpb0Rlc3RpbmF0aW9uTm9kZTo6Y3JlYXRl
KCp0aGlzLCBtX3JlbmRlclRhcmdldC5nZXQoKSk7Cit9CisKK3ZvaWQgV2ViS2l0QXVkaW9Db250
ZXh0Ojpjb25zdHJ1Y3RDb21tb24oKQoreworICAgIEZGVEZyYW1lOjppbml0aWFsaXplKCk7CisK
KyAgICBtX2xpc3RlbmVyID0gQXVkaW9MaXN0ZW5lcjo6Y3JlYXRlKCk7CisKKyAgICBBU1NFUlQo
ZG9jdW1lbnQoKSk7CisgICAgaWYgKGRvY3VtZW50KCktPmF1ZGlvUGxheWJhY2tSZXF1aXJlc1Vz
ZXJHZXN0dXJlKCkpCisgICAgICAgIGFkZEJlaGF2aW9yUmVzdHJpY3Rpb24oUmVxdWlyZVVzZXJH
ZXN0dXJlRm9yQXVkaW9TdGFydFJlc3RyaWN0aW9uKTsKKyAgICBlbHNlCisgICAgICAgIG1fcmVz
dHJpY3Rpb25zID0gTm9SZXN0cmljdGlvbnM7CisKKyNpZiBQTEFURk9STShDT0NPQSkKKyAgICBh
ZGRCZWhhdmlvclJlc3RyaWN0aW9uKFJlcXVpcmVQYWdlQ29uc2VudEZvckF1ZGlvU3RhcnRSZXN0
cmljdGlvbik7CisjZW5kaWYKK30KKworV2ViS2l0QXVkaW9Db250ZXh0Ojp+V2ViS2l0QXVkaW9D
b250ZXh0KCkKK3sKKyNpZiBERUJVR19BVURJT05PREVfUkVGRVJFTkNFUworICAgIGZwcmludGYo
c3RkZXJyLCAiJXA6IFdlYktpdEF1ZGlvQ29udGV4dDo6fldlYktpdEF1ZGlvQ29udGV4dCgpXG4i
LCB0aGlzKTsKKyNlbmRpZgorICAgIEFTU0VSVCghbV9pc0luaXRpYWxpemVkKTsKKyAgICBBU1NF
UlQobV9pc1N0b3BTY2hlZHVsZWQpOworICAgIEFTU0VSVChtX25vZGVzVG9EZWxldGUuaXNFbXB0
eSgpKTsKKyAgICBBU1NFUlQobV9yZWZlcmVuY2VkTm9kZXMuaXNFbXB0eSgpKTsKKyAgICBBU1NF
UlQobV9maW5pc2hlZE5vZGVzLmlzRW1wdHkoKSk7IC8vIEZJWE1FIChidWcgMTA1ODcwKTogVGhp
cyBhc3NlcnRpb24gZmFpbHMgb24gdGVzdHMgc29tZXRpbWVzLgorICAgIEFTU0VSVChtX2F1dG9t
YXRpY1B1bGxOb2Rlcy5pc0VtcHR5KCkpOworICAgIGlmIChtX2F1dG9tYXRpY1B1bGxOb2Rlc05l
ZWRVcGRhdGluZykKKyAgICAgICAgbV9yZW5kZXJpbmdBdXRvbWF0aWNQdWxsTm9kZXMucmVzaXpl
KG1fYXV0b21hdGljUHVsbE5vZGVzLnNpemUoKSk7CisgICAgQVNTRVJUKG1fcmVuZGVyaW5nQXV0
b21hdGljUHVsbE5vZGVzLmlzRW1wdHkoKSk7CisgICAgLy8gRklYTUU6IENhbiB3ZSBhc3NlcnQg
dGhhdCBtX2RlZmVycmVkRmluaXNoRGVyZWZMaXN0IGlzIGVtcHR5PworCisgICAgaWYgKCFpc09m
ZmxpbmVDb250ZXh0KCkgJiYgc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKSB7CisgICAgICAgIGRv
Y3VtZW50KCktPnJlbW92ZUF1ZGlvUHJvZHVjZXIoKnRoaXMpOworICAgICAgICBkb2N1bWVudCgp
LT51bnJlZ2lzdGVyRm9yVmlzaWJpbGl0eVN0YXRlQ2hhbmdlZENhbGxiYWNrcygqdGhpcyk7Cisg
ICAgfQorfQorCit2b2lkIFdlYktpdEF1ZGlvQ29udGV4dDo6bGF6eUluaXRpYWxpemUoKQorewor
ICAgIEFTU0VSVCghbV9pc1N0b3BTY2hlZHVsZWQpOworCisgICAgaWYgKG1faXNJbml0aWFsaXpl
ZCkKKyAgICAgICAgcmV0dXJuOworCisgICAgLy8gRG9uJ3QgYWxsb3cgdGhlIGNvbnRleHQgdG8g
aW5pdGlhbGl6ZSBhIHNlY29uZCB0aW1lIGFmdGVyIGl0J3MgYWxyZWFkeSBiZWVuIGV4cGxpY2l0
bHkgdW5pbml0aWFsaXplZC4KKyAgICBBU1NFUlQoIW1faXNBdWRpb1RocmVhZEZpbmlzaGVkKTsK
KyAgICBpZiAobV9pc0F1ZGlvVGhyZWFkRmluaXNoZWQpCisgICAgICAgIHJldHVybjsKKworICAg
IGlmIChtX2Rlc3RpbmF0aW9uTm9kZSkgeworICAgICAgICBtX2Rlc3RpbmF0aW9uTm9kZS0+aW5p
dGlhbGl6ZSgpOworCisgICAgICAgIGlmICghaXNPZmZsaW5lQ29udGV4dCgpKSB7CisgICAgICAg
ICAgICAvLyBUaGlzIHN0YXJ0cyB0aGUgYXVkaW8gdGhyZWFkLiBUaGUgZGVzdGluYXRpb24gbm9k
ZSdzIHByb3ZpZGVJbnB1dCgpIG1ldGhvZCB3aWxsIG5vdyBiZSBjYWxsZWQgcmVwZWF0ZWRseSB0
byByZW5kZXIgYXVkaW8uCisgICAgICAgICAgICAvLyBFYWNoIHRpbWUgcHJvdmlkZUlucHV0KCkg
aXMgY2FsbGVkLCBhIHBvcnRpb24gb2YgdGhlIGF1ZGlvIHN0cmVhbSBpcyByZW5kZXJlZC4gTGV0
J3MgY2FsbCB0aGlzIHRpbWUgcGVyaW9kIGEgInJlbmRlciBxdWFudHVtIi4KKyAgICAgICAgICAg
IC8vIE5PVEU6IGZvciBub3cgZGVmYXVsdCBBdWRpb0NvbnRleHQgZG9lcyBub3QgbmVlZCBhbiBl
eHBsaWNpdCBzdGFydFJlbmRlcmluZygpIGNhbGwgZnJvbSBKYXZhU2NyaXB0LgorICAgICAgICAg
ICAgLy8gV2UgbWF5IHdhbnQgdG8gY29uc2lkZXIgcmVxdWlyaW5nIGl0IGZvciBzeW1tZXRyeSB3
aXRoIE9mZmxpbmVBdWRpb0NvbnRleHQuCisgICAgICAgICAgICBzdGFydFJlbmRlcmluZygpOwor
ICAgICAgICAgICAgKytzX2hhcmR3YXJlQ29udGV4dENvdW50OworICAgICAgICB9CisgICAgfQor
ICAgIG1faXNJbml0aWFsaXplZCA9IHRydWU7Cit9CisKK3ZvaWQgV2ViS2l0QXVkaW9Db250ZXh0
OjpjbGVhcigpCit7CisgICAgUmVmPFdlYktpdEF1ZGlvQ29udGV4dD4gcHJvdGVjdGVkVGhpcygq
dGhpcyk7CisKKyAgICAvLyBXZSBoYXZlIHRvIHJlbGVhc2Ugb3VyIHJlZmVyZW5jZSB0byB0aGUg
ZGVzdGluYXRpb24gbm9kZSBiZWZvcmUgdGhlIGNvbnRleHQgd2lsbCBldmVyIGJlIGRlbGV0ZWQg
c2luY2UgdGhlIGRlc3RpbmF0aW9uIG5vZGUgaG9sZHMgYSByZWZlcmVuY2UgdG8gdGhlIGNvbnRl
eHQuCisgICAgaWYgKG1fZGVzdGluYXRpb25Ob2RlKQorICAgICAgICBtX2Rlc3RpbmF0aW9uTm9k
ZSA9IG51bGxwdHI7CisKKyAgICAvLyBBdWRpbyB0aHJlYWQgaXMgZGVhZC4gTm9ib2R5IHdpbGwg
c2NoZWR1bGUgbm9kZSBkZWxldGlvbiBhY3Rpb24uIExldCdzIGRvIGl0IG91cnNlbHZlcy4KKyAg
ICBkbyB7CisgICAgICAgIGRlbGV0ZU1hcmtlZE5vZGVzKCk7CisgICAgICAgIG1fbm9kZXNUb0Rl
bGV0ZS5hcHBlbmRWZWN0b3IobV9ub2Rlc01hcmtlZEZvckRlbGV0aW9uKTsKKyAgICAgICAgbV9u
b2Rlc01hcmtlZEZvckRlbGV0aW9uLmNsZWFyKCk7CisgICAgfSB3aGlsZSAobV9ub2Rlc1RvRGVs
ZXRlLnNpemUoKSk7CisKKyAgICBjbGVhclBlbmRpbmdBY3Rpdml0eSgpOworfQorCit2b2lkIFdl
YktpdEF1ZGlvQ29udGV4dDo6dW5pbml0aWFsaXplKCkKK3sKKyAgICBBTFdBWVNfTE9HKExPR0lE
RU5USUZJRVIpOworCisgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKworICAgIGlmICghbV9p
c0luaXRpYWxpemVkKQorICAgICAgICByZXR1cm47CisKKyAgICAvLyBUaGlzIHN0b3BzIHRoZSBh
dWRpbyB0aHJlYWQgYW5kIGFsbCBhdWRpbyByZW5kZXJpbmcuCisgICAgaWYgKG1fZGVzdGluYXRp
b25Ob2RlKQorICAgICAgICBtX2Rlc3RpbmF0aW9uTm9kZS0+dW5pbml0aWFsaXplKCk7CisKKyAg
ICAvLyBEb24ndCBhbGxvdyB0aGUgY29udGV4dCB0byBpbml0aWFsaXplIGEgc2Vjb25kIHRpbWUg
YWZ0ZXIgaXQncyBhbHJlYWR5IGJlZW4gZXhwbGljaXRseSB1bmluaXRpYWxpemVkLgorICAgIG1f
aXNBdWRpb1RocmVhZEZpbmlzaGVkID0gdHJ1ZTsKKworICAgIGlmICghaXNPZmZsaW5lQ29udGV4
dCgpKSB7CisgICAgICAgIEFTU0VSVChzX2hhcmR3YXJlQ29udGV4dENvdW50KTsKKyAgICAgICAg
LS1zX2hhcmR3YXJlQ29udGV4dENvdW50OworCisgICAgICAgIC8vIE9mZmxpbmUgY29udGV4dHMg
bW92ZSB0byAnQ2xvc2VkJyBzdGF0ZSB3aGVuIGRpc3BhdGNoaW5nIHRoZSBjb21wbGV0aW9uIGV2
ZW50LgorICAgICAgICBzZXRTdGF0ZShTdGF0ZTo6Q2xvc2VkKTsKKyAgICB9CisKKyAgICAvLyBH
ZXQgcmlkIG9mIHRoZSBzb3VyY2VzIHdoaWNoIG1heSBzdGlsbCBiZSBwbGF5aW5nLgorICAgIGRl
cmVmVW5maW5pc2hlZFNvdXJjZU5vZGVzKCk7CisKKyAgICBtX2lzSW5pdGlhbGl6ZWQgPSBmYWxz
ZTsKK30KKworYm9vbCBXZWJLaXRBdWRpb0NvbnRleHQ6OmlzSW5pdGlhbGl6ZWQoKSBjb25zdAor
eworICAgIHJldHVybiBtX2lzSW5pdGlhbGl6ZWQ7Cit9CisKK3ZvaWQgV2ViS2l0QXVkaW9Db250
ZXh0OjphZGRSZWFjdGlvbihTdGF0ZSBzdGF0ZSwgRE9NUHJvbWlzZURlZmVycmVkPHZvaWQ+JiYg
cHJvbWlzZSkKK3sKKyAgICBzaXplX3Qgc3RhdGVJbmRleCA9IHN0YXRpY19jYXN0PHNpemVfdD4o
c3RhdGUpOworICAgIGlmIChzdGF0ZUluZGV4ID49IG1fc3RhdGVSZWFjdGlvbnMuc2l6ZSgpKQor
ICAgICAgICBtX3N0YXRlUmVhY3Rpb25zLmdyb3coc3RhdGVJbmRleCArIDEpOworCisgICAgbV9z
dGF0ZVJlYWN0aW9uc1tzdGF0ZUluZGV4XS5hcHBlbmQoV1RGTW92ZShwcm9taXNlKSk7Cit9CisK
K3ZvaWQgV2ViS2l0QXVkaW9Db250ZXh0OjpzZXRTdGF0ZShTdGF0ZSBzdGF0ZSkKK3sKKyAgICBp
ZiAobV9zdGF0ZSA9PSBzdGF0ZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9zdGF0ZSA9IHN0
YXRlOworICAgIG1fZXZlbnRRdWV1ZS0+ZW5xdWV1ZUV2ZW50KEV2ZW50OjpjcmVhdGUoZXZlbnRO
YW1lcygpLnN0YXRlY2hhbmdlRXZlbnQsIEV2ZW50OjpDYW5CdWJibGU6OlllcywgRXZlbnQ6Oklz
Q2FuY2VsYWJsZTo6Tm8pKTsKKworICAgIHNpemVfdCBzdGF0ZUluZGV4ID0gc3RhdGljX2Nhc3Q8
c2l6ZV90PihzdGF0ZSk7CisgICAgaWYgKHN0YXRlSW5kZXggPj0gbV9zdGF0ZVJlYWN0aW9ucy5z
aXplKCkpCisgICAgICAgIHJldHVybjsKKworICAgIFZlY3RvcjxET01Qcm9taXNlRGVmZXJyZWQ8
dm9pZD4+IHJlYWN0aW9uczsKKyAgICBtX3N0YXRlUmVhY3Rpb25zW3N0YXRlSW5kZXhdLnN3YXAo
cmVhY3Rpb25zKTsKKworICAgIGZvciAoYXV0byYgcHJvbWlzZSA6IHJlYWN0aW9ucykKKyAgICAg
ICAgcHJvbWlzZS5yZXNvbHZlKCk7Cit9CisKK3ZvaWQgV2ViS2l0QXVkaW9Db250ZXh0OjpzdG9w
KCkKK3sKKyAgICBBTFdBWVNfTE9HKExPR0lERU5USUZJRVIpOworCisgICAgQVNTRVJUKGlzTWFp
blRocmVhZCgpKTsKKworICAgIC8vIFVzdWFsbHkgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCBjYWxs
cyBzdG9wIHR3aWNlLgorICAgIGlmIChtX2lzU3RvcFNjaGVkdWxlZCkKKyAgICAgICAgcmV0dXJu
OworICAgIG1faXNTdG9wU2NoZWR1bGVkID0gdHJ1ZTsKKworICAgIEFTU0VSVChkb2N1bWVudCgp
KTsKKyAgICBkb2N1bWVudCgpLT51cGRhdGVJc1BsYXlpbmdNZWRpYSgpOworCisgICAgdW5pbml0
aWFsaXplKCk7CisgICAgY2xlYXIoKTsKK30KKwordm9pZCBXZWJLaXRBdWRpb0NvbnRleHQ6OnN1
c3BlbmQoUmVhc29uRm9yU3VzcGVuc2lvbikKK3sKKyAgICBpZiAoc3RhdGUoKSA9PSBTdGF0ZTo6
UnVubmluZykgeworICAgICAgICBtX21lZGlhU2Vzc2lvbi0+YmVnaW5JbnRlcnJ1cHRpb24oUGxh
dGZvcm1NZWRpYVNlc3Npb246OlBsYXliYWNrU3VzcGVuZGVkKTsKKyAgICAgICAgZG9jdW1lbnQo
KS0+dXBkYXRlSXNQbGF5aW5nTWVkaWEoKTsKKyAgICB9Cit9CisKK3ZvaWQgV2ViS2l0QXVkaW9D
b250ZXh0OjpyZXN1bWUoKQoreworICAgIGlmIChzdGF0ZSgpID09IFN0YXRlOjpJbnRlcnJ1cHRl
ZCkgeworICAgICAgICBtX21lZGlhU2Vzc2lvbi0+ZW5kSW50ZXJydXB0aW9uKFBsYXRmb3JtTWVk
aWFTZXNzaW9uOjpNYXlSZXN1bWVQbGF5aW5nKTsKKyAgICAgICAgZG9jdW1lbnQoKS0+dXBkYXRl
SXNQbGF5aW5nTWVkaWEoKTsKKyAgICB9Cit9CisKK2NvbnN0IGNoYXIqIFdlYktpdEF1ZGlvQ29u
dGV4dDo6YWN0aXZlRE9NT2JqZWN0TmFtZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuICJXZWJLaXRB
dWRpb0NvbnRleHQiOworfQorCitEb2N1bWVudElkZW50aWZpZXIgV2ViS2l0QXVkaW9Db250ZXh0
Ojpob3N0aW5nRG9jdW1lbnRJZGVudGlmaWVyKCkgY29uc3QKK3sKKyAgICBhdXRvKiBkb2N1bWVu
dCA9IGRvd25jYXN0PERvY3VtZW50PihtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQpOworICAgIHJl
dHVybiBkb2N1bWVudCA/IGRvY3VtZW50LT5pZGVudGlmaWVyKCkgOiBEb2N1bWVudElkZW50aWZp
ZXIgeyB9OworfQorCitib29sIFdlYktpdEF1ZGlvQ29udGV4dDo6aXNTdXNwZW5kZWQoKSBjb25z
dAoreworICAgIHJldHVybiAhZG9jdW1lbnQoKSB8fCBkb2N1bWVudCgpLT5hY3RpdmVET01PYmpl
Y3RzQXJlU3VzcGVuZGVkKCkgfHwgZG9jdW1lbnQoKS0+YWN0aXZlRE9NT2JqZWN0c0FyZVN0b3Bw
ZWQoKTsKK30KKwordm9pZCBXZWJLaXRBdWRpb0NvbnRleHQ6OnZpc2liaWxpdHlTdGF0ZUNoYW5n
ZWQoKQoreworICAgIC8vIERvIG5vdCBzdXNwZW5kIGlmIGF1ZGlvIGlzIGF1ZGlibGUuCisgICAg
aWYgKCFkb2N1bWVudCgpIHx8IG1lZGlhU3RhdGUoKSA9PSBNZWRpYVByb2R1Y2VyOjpJc1BsYXlp
bmdBdWRpbyB8fCBtX2lzU3RvcFNjaGVkdWxlZCkKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYg
KGRvY3VtZW50KCktPmhpZGRlbigpKSB7CisgICAgICAgIGlmIChzdGF0ZSgpID09IFN0YXRlOjpS
dW5uaW5nKSB7CisgICAgICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJ2aXNpYmlsaXR5
U3RhdGVDaGFuZ2VkKCkgU3VzcGVuZGluZyBwbGF5YmFjayBhZnRlciBnb2luZyB0byB0aGUgYmFj
a2dyb3VuZCIpOworICAgICAgICAgICAgbV9tZWRpYVNlc3Npb24tPmJlZ2luSW50ZXJydXB0aW9u
KFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpFbnRlcmluZ0JhY2tncm91bmQpOworICAgICAgICB9Cisg
ICAgfSBlbHNlIHsKKyAgICAgICAgaWYgKHN0YXRlKCkgPT0gU3RhdGU6OkludGVycnVwdGVkKSB7
CisgICAgICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJ2aXNpYmlsaXR5U3RhdGVDaGFu
Z2VkKCkgUmVzdW1pbmcgcGxheWJhY2sgYWZ0ZXIgZW50ZXJpbmcgZm9yZWdyb3VuZCIpOworICAg
ICAgICAgICAgbV9tZWRpYVNlc3Npb24tPmVuZEludGVycnVwdGlvbihQbGF0Zm9ybU1lZGlhU2Vz
c2lvbjo6TWF5UmVzdW1lUGxheWluZyk7CisgICAgICAgIH0KKyAgICB9Cit9CisKK2Jvb2wgV2Vi
S2l0QXVkaW9Db250ZXh0Ojp3b3VsZFRhaW50T3JpZ2luKGNvbnN0IFVSTCYgdXJsKSBjb25zdAor
eworICAgIGlmICh1cmwucHJvdG9jb2xJc0RhdGEoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOwor
CisgICAgaWYgKGF1dG8qIGRvY3VtZW50ID0gdGhpcy0+ZG9jdW1lbnQoKSkKKyAgICAgICAgcmV0
dXJuICFkb2N1bWVudC0+c2VjdXJpdHlPcmlnaW4oKS5jYW5SZXF1ZXN0KHVybCk7CisKKyAgICBy
ZXR1cm4gZmFsc2U7Cit9CisKK0V4Y2VwdGlvbk9yPFJlZjxBdWRpb0J1ZmZlcj4+IFdlYktpdEF1
ZGlvQ29udGV4dDo6Y3JlYXRlQnVmZmVyKHVuc2lnbmVkIG51bWJlck9mQ2hhbm5lbHMsIHNpemVf
dCBudW1iZXJPZkZyYW1lcywgZmxvYXQgc2FtcGxlUmF0ZSkKK3sKKyAgICBhdXRvIGF1ZGlvQnVm
ZmVyID0gQXVkaW9CdWZmZXI6OmNyZWF0ZShudW1iZXJPZkNoYW5uZWxzLCBudW1iZXJPZkZyYW1l
cywgc2FtcGxlUmF0ZSk7CisgICAgaWYgKCFhdWRpb0J1ZmZlcikKKyAgICAgICAgcmV0dXJuIEV4
Y2VwdGlvbiB7IE5vdFN1cHBvcnRlZEVycm9yIH07CisgICAgcmV0dXJuIGF1ZGlvQnVmZmVyLnJl
bGVhc2VOb25OdWxsKCk7Cit9CisKK0V4Y2VwdGlvbk9yPFJlZjxBdWRpb0J1ZmZlcj4+IFdlYktp
dEF1ZGlvQ29udGV4dDo6Y3JlYXRlQnVmZmVyKEFycmF5QnVmZmVyJiBhcnJheUJ1ZmZlciwgYm9v
bCBtaXhUb01vbm8pCit7CisgICAgYXV0byBhdWRpb0J1ZmZlciA9IEF1ZGlvQnVmZmVyOjpjcmVh
dGVGcm9tQXVkaW9GaWxlRGF0YShhcnJheUJ1ZmZlci5kYXRhKCksIGFycmF5QnVmZmVyLmJ5dGVM
ZW5ndGgoKSwgbWl4VG9Nb25vLCBzYW1wbGVSYXRlKCkpOworICAgIGlmICghYXVkaW9CdWZmZXIp
CisgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBTeW50YXhFcnJvciB9OworICAgIHJldHVybiBh
dWRpb0J1ZmZlci5yZWxlYXNlTm9uTnVsbCgpOworfQorCit2b2lkIFdlYktpdEF1ZGlvQ29udGV4
dDo6ZGVjb2RlQXVkaW9EYXRhKFJlZjxBcnJheUJ1ZmZlcj4mJiBhdWRpb0RhdGEsIFJlZlB0cjxB
dWRpb0J1ZmZlckNhbGxiYWNrPiYmIHN1Y2Nlc3NDYWxsYmFjaywgUmVmUHRyPEF1ZGlvQnVmZmVy
Q2FsbGJhY2s+JiYgZXJyb3JDYWxsYmFjaykKK3sKKyAgICBpZiAoIW1fYXVkaW9EZWNvZGVyKQor
ICAgICAgICBtX2F1ZGlvRGVjb2RlciA9IG1ha2VVbmlxdWU8QXN5bmNBdWRpb0RlY29kZXI+KCk7
CisgICAgbV9hdWRpb0RlY29kZXItPmRlY29kZUFzeW5jKFdURk1vdmUoYXVkaW9EYXRhKSwgc2Ft
cGxlUmF0ZSgpLCBXVEZNb3ZlKHN1Y2Nlc3NDYWxsYmFjayksIFdURk1vdmUoZXJyb3JDYWxsYmFj
aykpOworfQorCitFeGNlcHRpb25PcjxSZWY8QXVkaW9CdWZmZXJTb3VyY2VOb2RlPj4gV2ViS2l0
QXVkaW9Db250ZXh0OjpjcmVhdGVCdWZmZXJTb3VyY2UoKQoreworICAgIEFMV0FZU19MT0coTE9H
SURFTlRJRklFUik7CisKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworCisgICAgaWYgKG1f
aXNTdG9wU2NoZWR1bGVkKQorICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgSW52YWxpZFN0YXRl
RXJyb3IgfTsKKworICAgIGxhenlJbml0aWFsaXplKCk7CisgICAgUmVmPEF1ZGlvQnVmZmVyU291
cmNlTm9kZT4gbm9kZSA9IEF1ZGlvQnVmZmVyU291cmNlTm9kZTo6Y3JlYXRlKCp0aGlzLCBzYW1w
bGVSYXRlKCkpOworCisgICAgLy8gQmVjYXVzZSB0aGlzIGlzIGFuIEF1ZGlvU2NoZWR1bGVkU291
cmNlTm9kZSwgdGhlIGNvbnRleHQga2VlcHMgYSByZWZlcmVuY2UgdW50aWwgaXQgaGFzIGZpbmlz
aGVkIHBsYXlpbmcuCisgICAgLy8gV2hlbiB0aGlzIGhhcHBlbnMsIEF1ZGlvU2NoZWR1bGVkU291
cmNlTm9kZTo6ZmluaXNoKCkgY2FsbHMgV2ViS2l0QXVkaW9Db250ZXh0Ojpub3RpZnlOb2RlRmlu
aXNoZWRQcm9jZXNzaW5nKCkuCisgICAgcmVmTm9kZShub2RlKTsKKworICAgIHJldHVybiBub2Rl
OworfQorCisjaWYgRU5BQkxFKFZJREVPKQorCitFeGNlcHRpb25PcjxSZWY8TWVkaWFFbGVtZW50
QXVkaW9Tb3VyY2VOb2RlPj4gV2ViS2l0QXVkaW9Db250ZXh0OjpjcmVhdGVNZWRpYUVsZW1lbnRT
b3VyY2UoSFRNTE1lZGlhRWxlbWVudCYgbWVkaWFFbGVtZW50KQoreworICAgIEFMV0FZU19MT0co
TE9HSURFTlRJRklFUik7CisKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworCisgICAgaWYg
KG1faXNTdG9wU2NoZWR1bGVkIHx8IG1lZGlhRWxlbWVudC5hdWRpb1NvdXJjZU5vZGUoKSkKKyAg
ICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IEludmFsaWRTdGF0ZUVycm9yIH07CisKKyAgICBsYXp5
SW5pdGlhbGl6ZSgpOworCisgICAgYXV0byBub2RlID0gTWVkaWFFbGVtZW50QXVkaW9Tb3VyY2VO
b2RlOjpjcmVhdGUoKnRoaXMsIG1lZGlhRWxlbWVudCk7CisKKyAgICBtZWRpYUVsZW1lbnQuc2V0
QXVkaW9Tb3VyY2VOb2RlKG5vZGUucHRyKCkpOworCisgICAgcmVmTm9kZShub2RlLmdldCgpKTsg
Ly8gY29udGV4dCBrZWVwcyByZWZlcmVuY2UgdW50aWwgbm9kZSBpcyBkaXNjb25uZWN0ZWQKKyAg
ICByZXR1cm4gbm9kZTsKK30KKworI2VuZGlmCisKKyNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQor
CitFeGNlcHRpb25PcjxSZWY8TWVkaWFTdHJlYW1BdWRpb1NvdXJjZU5vZGU+PiBXZWJLaXRBdWRp
b0NvbnRleHQ6OmNyZWF0ZU1lZGlhU3RyZWFtU291cmNlKE1lZGlhU3RyZWFtJiBtZWRpYVN0cmVh
bSkKK3sKKyAgICBBTFdBWVNfTE9HKExPR0lERU5USUZJRVIpOworCisgICAgQVNTRVJUKGlzTWFp
blRocmVhZCgpKTsKKworICAgIGlmIChtX2lzU3RvcFNjaGVkdWxlZCkKKyAgICAgICAgcmV0dXJu
IEV4Y2VwdGlvbiB7IEludmFsaWRTdGF0ZUVycm9yIH07CisKKyAgICBhdXRvIGF1ZGlvVHJhY2tz
ID0gbWVkaWFTdHJlYW0uZ2V0QXVkaW9UcmFja3MoKTsKKyAgICBpZiAoYXVkaW9UcmFja3MuaXNF
bXB0eSgpKQorICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgSW52YWxpZFN0YXRlRXJyb3IgfTsK
KworICAgIE1lZGlhU3RyZWFtVHJhY2sqIHByb3ZpZGVyVHJhY2sgPSBudWxscHRyOworICAgIGZv
ciAoYXV0byYgdHJhY2sgOiBhdWRpb1RyYWNrcykgeworICAgICAgICBpZiAodHJhY2stPmF1ZGlv
U291cmNlUHJvdmlkZXIoKSkgeworICAgICAgICAgICAgcHJvdmlkZXJUcmFjayA9IHRyYWNrLmdl
dCgpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICB9CisgICAgaWYgKCFwcm92
aWRlclRyYWNrKQorICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgSW52YWxpZFN0YXRlRXJyb3Ig
fTsKKworICAgIGxhenlJbml0aWFsaXplKCk7CisKKyAgICBhdXRvIG5vZGUgPSBNZWRpYVN0cmVh
bUF1ZGlvU291cmNlTm9kZTo6Y3JlYXRlKCp0aGlzLCBtZWRpYVN0cmVhbSwgKnByb3ZpZGVyVHJh
Y2spOworICAgIG5vZGUtPnNldEZvcm1hdCgyLCBzYW1wbGVSYXRlKCkpOworCisgICAgcmVmTm9k
ZShub2RlKTsgLy8gY29udGV4dCBrZWVwcyByZWZlcmVuY2UgdW50aWwgbm9kZSBpcyBkaXNjb25u
ZWN0ZWQKKyAgICByZXR1cm4gbm9kZTsKK30KKworRXhjZXB0aW9uT3I8UmVmPE1lZGlhU3RyZWFt
QXVkaW9EZXN0aW5hdGlvbk5vZGU+PiBXZWJLaXRBdWRpb0NvbnRleHQ6OmNyZWF0ZU1lZGlhU3Ry
ZWFtRGVzdGluYXRpb24oKQoreworICAgIGlmIChtX2lzU3RvcFNjaGVkdWxlZCkKKyAgICAgICAg
cmV0dXJuIEV4Y2VwdGlvbiB7IEludmFsaWRTdGF0ZUVycm9yIH07CisKKyAgICAvLyBGSVhNRTog
QWRkIHN1cHBvcnQgZm9yIGFuIG9wdGlvbmFsIGFyZ3VtZW50IHdoaWNoIHNwZWNpZmllcyB0aGUg
bnVtYmVyIG9mIGNoYW5uZWxzLgorICAgIC8vIEZJWE1FOiBUaGUgZGVmYXVsdCBzaG91bGQgcHJv
YmFibHkgYmUgc3RlcmVvIGluc3RlYWQgb2YgbW9uby4KKyAgICByZXR1cm4gTWVkaWFTdHJlYW1B
dWRpb0Rlc3RpbmF0aW9uTm9kZTo6Y3JlYXRlKCp0aGlzLCAxKTsKK30KKworI2VuZGlmCisKK0V4
Y2VwdGlvbk9yPFJlZjxTY3JpcHRQcm9jZXNzb3JOb2RlPj4gV2ViS2l0QXVkaW9Db250ZXh0Ojpj
cmVhdGVTY3JpcHRQcm9jZXNzb3Ioc2l6ZV90IGJ1ZmZlclNpemUsIHNpemVfdCBudW1iZXJPZklu
cHV0Q2hhbm5lbHMsIHNpemVfdCBudW1iZXJPZk91dHB1dENoYW5uZWxzKQoreworICAgIEFMV0FZ
U19MT0coTE9HSURFTlRJRklFUik7CisKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworCisg
ICAgaWYgKG1faXNTdG9wU2NoZWR1bGVkKQorICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgSW52
YWxpZFN0YXRlRXJyb3IgfTsKKworICAgIGxhenlJbml0aWFsaXplKCk7CisKKyAgICAvLyBXM0Mg
RWRpdG9yJ3MgRHJhZnQgMDYgSnVuZSAyMDE3CisgICAgLy8gIGh0dHBzOi8vd2ViYXVkaW8uZ2l0
aHViLmlvL3dlYi1hdWRpby1hcGkvI3dpZGwtQmFzZUF1ZGlvQ29udGV4dC1jcmVhdGVTY3JpcHRQ
cm9jZXNzb3ItU2NyaXB0UHJvY2Vzc29yTm9kZS11bnNpZ25lZC1sb25nLWJ1ZmZlclNpemUtdW5z
aWduZWQtbG9uZy1udW1iZXJPZklucHV0Q2hhbm5lbHMtdW5zaWduZWQtbG9uZy1udW1iZXJPZk91
dHB1dENoYW5uZWxzCisKKyAgICAvLyBUaGUgYnVmZmVyU2l6ZSBwYXJhbWV0ZXIgZGV0ZXJtaW5l
cyB0aGUgYnVmZmVyIHNpemUgaW4gdW5pdHMgb2Ygc2FtcGxlLWZyYW1lcy4gSWYgaXQncyBub3Qg
cGFzc2VkIGluLAorICAgIC8vIG9yIGlmIHRoZSB2YWx1ZSBpcyAwLCB0aGVuIHRoZSBpbXBsZW1l
bnRhdGlvbiB3aWxsIGNob29zZSB0aGUgYmVzdCBidWZmZXIgc2l6ZSBmb3IgdGhlIGdpdmVuIGVu
dmlyb25tZW50LAorICAgIC8vIHdoaWNoIHdpbGwgYmUgY29uc3RhbnQgcG93ZXIgb2YgMiB0aHJv
dWdob3V0IHRoZSBsaWZldGltZSBvZiB0aGUgbm9kZS4gLi4uIElmIHRoZSB2YWx1ZSBvZiB0aGlz
IHBhcmFtZXRlcgorICAgIC8vIGlzIG5vdCBvbmUgb2YgdGhlIGFsbG93ZWQgcG93ZXItb2YtMiB2
YWx1ZXMgbGlzdGVkIGFib3ZlLCBhbiBJbmRleFNpemVFcnJvciBtdXN0IGJlIHRocm93bi4KKyAg
ICBzd2l0Y2ggKGJ1ZmZlclNpemUpIHsKKyAgICBjYXNlIDA6CisjaWYgVVNFKEFVRElPX1NFU1NJ
T04pCisgICAgICAgIC8vIFBpY2sgYSB2YWx1ZSBiZXR3ZWVuIDI1NiAoMl44KSBhbmQgMTYzODQg
KDJeMTQpLCBiYXNlZCBvbiB0aGUgYnVmZmVyIHNpemUgb2YgdGhlIGN1cnJlbnQgQXVkaW9TZXNz
aW9uOgorICAgICAgICBidWZmZXJTaXplID0gMSA8PCBzdGQ6Om1heDxzaXplX3Q+KDgsIHN0ZDo6
bWluPHNpemVfdD4oMTQsIHN0ZDo6bG9nMihBdWRpb1Nlc3Npb246OnNoYXJlZFNlc3Npb24oKS5i
dWZmZXJTaXplKCkpKSk7CisjZWxzZQorICAgICAgICBidWZmZXJTaXplID0gMjA0ODsKKyNlbmRp
ZgorICAgICAgICBicmVhazsKKyAgICBjYXNlIDI1NjoKKyAgICBjYXNlIDUxMjoKKyAgICBjYXNl
IDEwMjQ6CisgICAgY2FzZSAyMDQ4OgorICAgIGNhc2UgNDA5NjoKKyAgICBjYXNlIDgxOTI6Cisg
ICAgY2FzZSAxNjM4NDoKKyAgICAgICAgYnJlYWs7CisgICAgZGVmYXVsdDoKKyAgICAgICAgcmV0
dXJuIEV4Y2VwdGlvbiB7IEluZGV4U2l6ZUVycm9yIH07CisgICAgfQorCisgICAgLy8gQW4gSW5k
ZXhTaXplRXJyb3IgZXhjZXB0aW9uIG11c3QgYmUgdGhyb3duIGlmIGJ1ZmZlclNpemUgb3IgbnVt
YmVyT2ZJbnB1dENoYW5uZWxzIG9yIG51bWJlck9mT3V0cHV0Q2hhbm5lbHMKKyAgICAvLyBhcmUg
b3V0c2lkZSB0aGUgdmFsaWQgcmFuZ2UuIEl0IGlzIGludmFsaWQgZm9yIGJvdGggbnVtYmVyT2ZJ
bnB1dENoYW5uZWxzIGFuZCBudW1iZXJPZk91dHB1dENoYW5uZWxzIHRvIGJlIHplcm8uCisgICAg
Ly8gSW4gdGhpcyBjYXNlIGFuIEluZGV4U2l6ZUVycm9yIG11c3QgYmUgdGhyb3duLgorCisgICAg
aWYgKCFudW1iZXJPZklucHV0Q2hhbm5lbHMgJiYgIW51bWJlck9mT3V0cHV0Q2hhbm5lbHMpCisg
ICAgICAgIHJldHVybiBFeGNlcHRpb24geyBOb3RTdXBwb3J0ZWRFcnJvciB9OworCisgICAgLy8g
VGhpcyBwYXJhbWV0ZXIgW251bWJlck9mSW5wdXRDaGFubmVsc10gZGV0ZXJtaW5lcyB0aGUgbnVt
YmVyIG9mIGNoYW5uZWxzIGZvciB0aGlzIG5vZGUncyBpbnB1dC4gVmFsdWVzIG9mCisgICAgLy8g
dXAgdG8gMzIgbXVzdCBiZSBzdXBwb3J0ZWQuIEEgTm90U3VwcG9ydGVkRXJyb3IgbXVzdCBiZSB0
aHJvd24gaWYgdGhlIG51bWJlciBvZiBjaGFubmVscyBpcyBub3Qgc3VwcG9ydGVkLgorCisgICAg
aWYgKG51bWJlck9mSW5wdXRDaGFubmVscyA+IG1heE51bWJlck9mQ2hhbm5lbHMoKSkKKyAgICAg
ICAgcmV0dXJuIEV4Y2VwdGlvbiB7IE5vdFN1cHBvcnRlZEVycm9yIH07CisKKyAgICAvLyBUaGlz
IHBhcmFtZXRlciBbbnVtYmVyT2ZPdXRwdXRDaGFubmVsc10gZGV0ZXJtaW5lcyB0aGUgbnVtYmVy
IG9mIGNoYW5uZWxzIGZvciB0aGlzIG5vZGUncyBvdXRwdXQuIFZhbHVlcyBvZgorICAgIC8vIHVw
IHRvIDMyIG11c3QgYmUgc3VwcG9ydGVkLiBBIE5vdFN1cHBvcnRlZEVycm9yIG11c3QgYmUgdGhy
b3duIGlmIHRoZSBudW1iZXIgb2YgY2hhbm5lbHMgaXMgbm90IHN1cHBvcnRlZC4KKworICAgIGlm
IChudW1iZXJPZk91dHB1dENoYW5uZWxzID4gbWF4TnVtYmVyT2ZDaGFubmVscygpKQorICAgICAg
ICByZXR1cm4gRXhjZXB0aW9uIHsgTm90U3VwcG9ydGVkRXJyb3IgfTsKKworICAgIGF1dG8gbm9k
ZSA9IFNjcmlwdFByb2Nlc3Nvck5vZGU6OmNyZWF0ZSgqdGhpcywgc2FtcGxlUmF0ZSgpLCBidWZm
ZXJTaXplLCBudW1iZXJPZklucHV0Q2hhbm5lbHMsIG51bWJlck9mT3V0cHV0Q2hhbm5lbHMpOwor
CisgICAgcmVmTm9kZShub2RlKTsgLy8gY29udGV4dCBrZWVwcyByZWZlcmVuY2UgdW50aWwgd2Ug
c3RvcCBtYWtpbmcgamF2YXNjcmlwdCByZW5kZXJpbmcgY2FsbGJhY2tzCisgICAgcmV0dXJuIG5v
ZGU7Cit9CisKK0V4Y2VwdGlvbk9yPFJlZjxCaXF1YWRGaWx0ZXJOb2RlPj4gV2ViS2l0QXVkaW9D
b250ZXh0OjpjcmVhdGVCaXF1YWRGaWx0ZXIoKQoreworICAgIEFMV0FZU19MT0coTE9HSURFTlRJ
RklFUik7CisKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAgIGlmIChtX2lzU3RvcFNj
aGVkdWxlZCkKKyAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IEludmFsaWRTdGF0ZUVycm9yIH07
CisKKyAgICBsYXp5SW5pdGlhbGl6ZSgpOworCisgICAgcmV0dXJuIEJpcXVhZEZpbHRlck5vZGU6
OmNyZWF0ZSgqdGhpcywgc2FtcGxlUmF0ZSgpKTsKK30KKworRXhjZXB0aW9uT3I8UmVmPFdhdmVT
aGFwZXJOb2RlPj4gV2ViS2l0QXVkaW9Db250ZXh0OjpjcmVhdGVXYXZlU2hhcGVyKCkKK3sKKyAg
ICBBTFdBWVNfTE9HKExPR0lERU5USUZJRVIpOworCisgICAgQVNTRVJUKGlzTWFpblRocmVhZCgp
KTsKKyAgICBpZiAobV9pc1N0b3BTY2hlZHVsZWQpCisgICAgICAgIHJldHVybiBFeGNlcHRpb24g
eyBJbnZhbGlkU3RhdGVFcnJvciB9OworCisgICAgbGF6eUluaXRpYWxpemUoKTsKKyAgICByZXR1
cm4gV2F2ZVNoYXBlck5vZGU6OmNyZWF0ZSgqdGhpcyk7Cit9CisKK0V4Y2VwdGlvbk9yPFJlZjxX
ZWJLaXRBdWRpb1Bhbm5lck5vZGU+PiBXZWJLaXRBdWRpb0NvbnRleHQ6OmNyZWF0ZVBhbm5lcigp
Cit7CisgICAgQUxXQVlTX0xPRyhMT0dJREVOVElGSUVSKTsKKworICAgIEFTU0VSVChpc01haW5U
aHJlYWQoKSk7CisgICAgaWYgKG1faXNTdG9wU2NoZWR1bGVkKQorICAgICAgICByZXR1cm4gRXhj
ZXB0aW9uIHsgSW52YWxpZFN0YXRlRXJyb3IgfTsKKworICAgIGxhenlJbml0aWFsaXplKCk7Cisg
ICAgcmV0dXJuIFdlYktpdEF1ZGlvUGFubmVyTm9kZTo6Y3JlYXRlKCp0aGlzLCBzYW1wbGVSYXRl
KCkpOworfQorCitFeGNlcHRpb25PcjxSZWY8Q29udm9sdmVyTm9kZT4+IFdlYktpdEF1ZGlvQ29u
dGV4dDo6Y3JlYXRlQ29udm9sdmVyKCkKK3sKKyAgICBBTFdBWVNfTE9HKExPR0lERU5USUZJRVIp
OworCisgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKyAgICBpZiAobV9pc1N0b3BTY2hlZHVs
ZWQpCisgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBJbnZhbGlkU3RhdGVFcnJvciB9OworCisg
ICAgbGF6eUluaXRpYWxpemUoKTsKKyAgICByZXR1cm4gQ29udm9sdmVyTm9kZTo6Y3JlYXRlKCp0
aGlzLCBzYW1wbGVSYXRlKCkpOworfQorCitFeGNlcHRpb25PcjxSZWY8RHluYW1pY3NDb21wcmVz
c29yTm9kZT4+IFdlYktpdEF1ZGlvQ29udGV4dDo6Y3JlYXRlRHluYW1pY3NDb21wcmVzc29yKCkK
K3sKKyAgICBBTFdBWVNfTE9HKExPR0lERU5USUZJRVIpOworCisgICAgQVNTRVJUKGlzTWFpblRo
cmVhZCgpKTsKKyAgICBpZiAobV9pc1N0b3BTY2hlZHVsZWQpCisgICAgICAgIHJldHVybiBFeGNl
cHRpb24geyBJbnZhbGlkU3RhdGVFcnJvciB9OworCisgICAgbGF6eUluaXRpYWxpemUoKTsKKyAg
ICByZXR1cm4gRHluYW1pY3NDb21wcmVzc29yTm9kZTo6Y3JlYXRlKCp0aGlzLCBzYW1wbGVSYXRl
KCkpOworfQorCitFeGNlcHRpb25PcjxSZWY8QW5hbHlzZXJOb2RlPj4gV2ViS2l0QXVkaW9Db250
ZXh0OjpjcmVhdGVBbmFseXNlcigpCit7CisgICAgQUxXQVlTX0xPRyhMT0dJREVOVElGSUVSKTsK
KworICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisgICAgaWYgKG1faXNTdG9wU2NoZWR1bGVk
KQorICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgSW52YWxpZFN0YXRlRXJyb3IgfTsKKworICAg
IGxhenlJbml0aWFsaXplKCk7CisgICAgcmV0dXJuIEFuYWx5c2VyTm9kZTo6Y3JlYXRlKCp0aGlz
LCBzYW1wbGVSYXRlKCkpOworfQorCitFeGNlcHRpb25PcjxSZWY8R2Fpbk5vZGU+PiBXZWJLaXRB
dWRpb0NvbnRleHQ6OmNyZWF0ZUdhaW4oKQoreworICAgIEFMV0FZU19MT0coTE9HSURFTlRJRklF
Uik7CisKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAgIGlmIChtX2lzU3RvcFNjaGVk
dWxlZCkKKyAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IEludmFsaWRTdGF0ZUVycm9yIH07CisK
KyAgICBsYXp5SW5pdGlhbGl6ZSgpOworICAgIHJldHVybiBHYWluTm9kZTo6Y3JlYXRlKCp0aGlz
LCBzYW1wbGVSYXRlKCkpOworfQorCitFeGNlcHRpb25PcjxSZWY8RGVsYXlOb2RlPj4gV2ViS2l0
QXVkaW9Db250ZXh0OjpjcmVhdGVEZWxheShkb3VibGUgbWF4RGVsYXlUaW1lKQoreworICAgIEFM
V0FZU19MT0coTE9HSURFTlRJRklFUik7CisKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwor
ICAgIGlmIChtX2lzU3RvcFNjaGVkdWxlZCkKKyAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IElu
dmFsaWRTdGF0ZUVycm9yIH07CisKKyAgICBsYXp5SW5pdGlhbGl6ZSgpOworICAgIHJldHVybiBE
ZWxheU5vZGU6OmNyZWF0ZSgqdGhpcywgc2FtcGxlUmF0ZSgpLCBtYXhEZWxheVRpbWUpOworfQor
CitFeGNlcHRpb25PcjxSZWY8Q2hhbm5lbFNwbGl0dGVyTm9kZT4+IFdlYktpdEF1ZGlvQ29udGV4
dDo6Y3JlYXRlQ2hhbm5lbFNwbGl0dGVyKHNpemVfdCBudW1iZXJPZk91dHB1dHMpCit7CisgICAg
QUxXQVlTX0xPRyhMT0dJREVOVElGSUVSKTsKKworICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7
CisgICAgaWYgKG1faXNTdG9wU2NoZWR1bGVkKQorICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsg
SW52YWxpZFN0YXRlRXJyb3IgfTsKKworICAgIGxhenlJbml0aWFsaXplKCk7CisgICAgYXV0byBu
b2RlID0gQ2hhbm5lbFNwbGl0dGVyTm9kZTo6Y3JlYXRlKCp0aGlzLCBzYW1wbGVSYXRlKCksIG51
bWJlck9mT3V0cHV0cyk7CisgICAgaWYgKCFub2RlKQorICAgICAgICByZXR1cm4gRXhjZXB0aW9u
IHsgSW5kZXhTaXplRXJyb3IgfTsKKyAgICByZXR1cm4gbm9kZS5yZWxlYXNlTm9uTnVsbCgpOwor
fQorCitFeGNlcHRpb25PcjxSZWY8Q2hhbm5lbE1lcmdlck5vZGU+PiBXZWJLaXRBdWRpb0NvbnRl
eHQ6OmNyZWF0ZUNoYW5uZWxNZXJnZXIoc2l6ZV90IG51bWJlck9mSW5wdXRzKQoreworICAgIEFM
V0FZU19MT0coTE9HSURFTlRJRklFUik7CisKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwor
ICAgIGlmIChtX2lzU3RvcFNjaGVkdWxlZCkKKyAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IElu
dmFsaWRTdGF0ZUVycm9yIH07CisKKyAgICBsYXp5SW5pdGlhbGl6ZSgpOworICAgIGF1dG8gbm9k
ZSA9IENoYW5uZWxNZXJnZXJOb2RlOjpjcmVhdGUoKnRoaXMsIHNhbXBsZVJhdGUoKSwgbnVtYmVy
T2ZJbnB1dHMpOworICAgIGlmICghbm9kZSkKKyAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IElu
ZGV4U2l6ZUVycm9yIH07CisgICAgcmV0dXJuIG5vZGUucmVsZWFzZU5vbk51bGwoKTsKK30KKwor
RXhjZXB0aW9uT3I8UmVmPE9zY2lsbGF0b3JOb2RlPj4gV2ViS2l0QXVkaW9Db250ZXh0OjpjcmVh
dGVPc2NpbGxhdG9yKCkKK3sKKyAgICBBTFdBWVNfTE9HKExPR0lERU5USUZJRVIpOworCisgICAg
QVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKyAgICBpZiAobV9pc1N0b3BTY2hlZHVsZWQpCisgICAg
ICAgIHJldHVybiBFeGNlcHRpb24geyBJbnZhbGlkU3RhdGVFcnJvciB9OworCisgICAgbGF6eUlu
aXRpYWxpemUoKTsKKworICAgIFJlZjxPc2NpbGxhdG9yTm9kZT4gbm9kZSA9IE9zY2lsbGF0b3JO
b2RlOjpjcmVhdGUoKnRoaXMsIHNhbXBsZVJhdGUoKSk7CisKKyAgICAvLyBCZWNhdXNlIHRoaXMg
aXMgYW4gQXVkaW9TY2hlZHVsZWRTb3VyY2VOb2RlLCB0aGUgY29udGV4dCBrZWVwcyBhIHJlZmVy
ZW5jZSB1bnRpbCBpdCBoYXMgZmluaXNoZWQgcGxheWluZy4KKyAgICAvLyBXaGVuIHRoaXMgaGFw
cGVucywgQXVkaW9TY2hlZHVsZWRTb3VyY2VOb2RlOjpmaW5pc2goKSBjYWxscyBXZWJLaXRBdWRp
b0NvbnRleHQ6Om5vdGlmeU5vZGVGaW5pc2hlZFByb2Nlc3NpbmcoKS4KKyAgICByZWZOb2RlKG5v
ZGUpOworCisgICAgcmV0dXJuIG5vZGU7Cit9CisKK0V4Y2VwdGlvbk9yPFJlZjxQZXJpb2RpY1dh
dmU+PiBXZWJLaXRBdWRpb0NvbnRleHQ6OmNyZWF0ZVBlcmlvZGljV2F2ZShGbG9hdDMyQXJyYXkm
IHJlYWwsIEZsb2F0MzJBcnJheSYgaW1hZ2luYXJ5KQoreworICAgIEFMV0FZU19MT0coTE9HSURF
TlRJRklFUik7CisKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAgIGlmIChtX2lzU3Rv
cFNjaGVkdWxlZCkKKyAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IEludmFsaWRTdGF0ZUVycm9y
IH07CisKKyAgICBpZiAocmVhbC5sZW5ndGgoKSAhPSBpbWFnaW5hcnkubGVuZ3RoKCkgfHwgKHJl
YWwubGVuZ3RoKCkgPiBNYXhQZXJpb2RpY1dhdmVMZW5ndGgpIHx8ICFyZWFsLmxlbmd0aCgpKQor
ICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgSW5kZXhTaXplRXJyb3IgfTsKKyAgICBsYXp5SW5p
dGlhbGl6ZSgpOworICAgIHJldHVybiBQZXJpb2RpY1dhdmU6OmNyZWF0ZShzYW1wbGVSYXRlKCks
IHJlYWwsIGltYWdpbmFyeSk7Cit9CisKK3ZvaWQgV2ViS2l0QXVkaW9Db250ZXh0Ojpub3RpZnlO
b2RlRmluaXNoZWRQcm9jZXNzaW5nKEF1ZGlvTm9kZSogbm9kZSkKK3sKKyAgICBBU1NFUlQoaXNB
dWRpb1RocmVhZCgpKTsKKyAgICBtX2ZpbmlzaGVkTm9kZXMuYXBwZW5kKG5vZGUpOworfQorCit2
b2lkIFdlYktpdEF1ZGlvQ29udGV4dDo6ZGVyZWZGaW5pc2hlZFNvdXJjZU5vZGVzKCkKK3sKKyAg
ICBBU1NFUlQoaXNHcmFwaE93bmVyKCkpOworICAgIEFTU0VSVChpc0F1ZGlvVGhyZWFkKCkgfHwg
aXNBdWRpb1RocmVhZEZpbmlzaGVkKCkpOworICAgIGZvciAoYXV0byYgbm9kZSA6IG1fZmluaXNo
ZWROb2RlcykKKyAgICAgICAgZGVyZWZOb2RlKCpub2RlKTsKKworICAgIG1fZmluaXNoZWROb2Rl
cy5jbGVhcigpOworfQorCit2b2lkIFdlYktpdEF1ZGlvQ29udGV4dDo6cmVmTm9kZShBdWRpb05v
ZGUmIG5vZGUpCit7CisgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKyAgICBBdXRvTG9ja2Vy
IGxvY2tlcigqdGhpcyk7CisKKyAgICBub2RlLnJlZihBdWRpb05vZGU6OlJlZlR5cGVDb25uZWN0
aW9uKTsKKyAgICBtX3JlZmVyZW5jZWROb2Rlcy5hcHBlbmQoJm5vZGUpOworfQorCit2b2lkIFdl
YktpdEF1ZGlvQ29udGV4dDo6ZGVyZWZOb2RlKEF1ZGlvTm9kZSYgbm9kZSkKK3sKKyAgICBBU1NF
UlQoaXNHcmFwaE93bmVyKCkpOworCisgICAgbm9kZS5kZXJlZihBdWRpb05vZGU6OlJlZlR5cGVD
b25uZWN0aW9uKTsKKworICAgIEFTU0VSVChtX3JlZmVyZW5jZWROb2Rlcy5jb250YWlucygmbm9k
ZSkpOworICAgIG1fcmVmZXJlbmNlZE5vZGVzLnJlbW92ZUZpcnN0KCZub2RlKTsKK30KKwordm9p
ZCBXZWJLaXRBdWRpb0NvbnRleHQ6OmRlcmVmVW5maW5pc2hlZFNvdXJjZU5vZGVzKCkKK3sKKyAg
ICBBU1NFUlQoaXNNYWluVGhyZWFkKCkgJiYgaXNBdWRpb1RocmVhZEZpbmlzaGVkKCkpOworICAg
IGZvciAoYXV0byYgbm9kZSA6IG1fcmVmZXJlbmNlZE5vZGVzKQorICAgICAgICBub2RlLT5kZXJl
ZihBdWRpb05vZGU6OlJlZlR5cGVDb25uZWN0aW9uKTsKKworICAgIG1fcmVmZXJlbmNlZE5vZGVz
LmNsZWFyKCk7Cit9CisKK3ZvaWQgV2ViS2l0QXVkaW9Db250ZXh0Ojpsb2NrKGJvb2wmIG11c3RS
ZWxlYXNlTG9jaykKK3sKKyAgICAvLyBEb24ndCBhbGxvdyByZWd1bGFyIGxvY2sgaW4gcmVhbC10
aW1lIGF1ZGlvIHRocmVhZC4KKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworCisgICAgVGhy
ZWFkJiB0aGlzVGhyZWFkID0gVGhyZWFkOjpjdXJyZW50KCk7CisKKyAgICBpZiAoJnRoaXNUaHJl
YWQgPT0gbV9ncmFwaE93bmVyVGhyZWFkKSB7CisgICAgICAgIC8vIFdlIGFscmVhZHkgaGF2ZSB0
aGUgbG9jay4KKyAgICAgICAgbXVzdFJlbGVhc2VMb2NrID0gZmFsc2U7CisgICAgfSBlbHNlIHsK
KyAgICAgICAgLy8gQWNxdWlyZSB0aGUgbG9jay4KKyAgICAgICAgbV9jb250ZXh0R3JhcGhNdXRl
eC5sb2NrKCk7CisgICAgICAgIG1fZ3JhcGhPd25lclRocmVhZCA9ICZ0aGlzVGhyZWFkOworICAg
ICAgICBtdXN0UmVsZWFzZUxvY2sgPSB0cnVlOworICAgIH0KK30KKworYm9vbCBXZWJLaXRBdWRp
b0NvbnRleHQ6OnRyeUxvY2soYm9vbCYgbXVzdFJlbGVhc2VMb2NrKQoreworICAgIFRocmVhZCYg
dGhpc1RocmVhZCA9IFRocmVhZDo6Y3VycmVudCgpOworICAgIGJvb2wgaXNBdWRpb1RocmVhZCA9
ICZ0aGlzVGhyZWFkID09IGF1ZGlvVGhyZWFkKCk7CisKKyAgICAvLyBUcnkgdG8gY2F0Y2ggY2Fz
ZXMgb2YgdXNpbmcgdHJ5IGxvY2sgb24gbWFpbiB0aHJlYWQgLSBpdCBzaG91bGQgdXNlIHJlZ3Vs
YXIgbG9jay4KKyAgICBBU1NFUlQoaXNBdWRpb1RocmVhZCB8fCBpc0F1ZGlvVGhyZWFkRmluaXNo
ZWQoKSk7CisKKyAgICBpZiAoIWlzQXVkaW9UaHJlYWQpIHsKKyAgICAgICAgLy8gSW4gcmVsZWFz
ZSBidWlsZCB0cmVhdCB0cnlMb2NrKCkgYXMgbG9jaygpIChzaW5jZSBhYm92ZSBBU1NFUlQoaXNB
dWRpb1RocmVhZCkgbmV2ZXIgZmlyZXMpIC0gdGhpcyBpcyB0aGUgYmVzdCB3ZSBjYW4gZG8uCisg
ICAgICAgIGxvY2sobXVzdFJlbGVhc2VMb2NrKTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAg
fQorCisgICAgYm9vbCBoYXNMb2NrOworCisgICAgaWYgKCZ0aGlzVGhyZWFkID09IG1fZ3JhcGhP
d25lclRocmVhZCkgeworICAgICAgICAvLyBUaHJlYWQgYWxyZWFkeSBoYXMgdGhlIGxvY2suCisg
ICAgICAgIGhhc0xvY2sgPSB0cnVlOworICAgICAgICBtdXN0UmVsZWFzZUxvY2sgPSBmYWxzZTsK
KyAgICB9IGVsc2UgeworICAgICAgICAvLyBEb24ndCBhbHJlYWR5IGhhdmUgdGhlIGxvY2sgLSB0
cnkgdG8gYWNxdWlyZSBpdC4KKyAgICAgICAgaGFzTG9jayA9IG1fY29udGV4dEdyYXBoTXV0ZXgu
dHJ5TG9jaygpOworCisgICAgICAgIGlmIChoYXNMb2NrKQorICAgICAgICAgICAgbV9ncmFwaE93
bmVyVGhyZWFkID0gJnRoaXNUaHJlYWQ7CisKKyAgICAgICAgbXVzdFJlbGVhc2VMb2NrID0gaGFz
TG9jazsKKyAgICB9CisKKyAgICByZXR1cm4gaGFzTG9jazsKK30KKwordm9pZCBXZWJLaXRBdWRp
b0NvbnRleHQ6OnVubG9jaygpCit7CisgICAgQVNTRVJUKG1fZ3JhcGhPd25lclRocmVhZCA9PSAm
VGhyZWFkOjpjdXJyZW50KCkpOworCisgICAgbV9ncmFwaE93bmVyVGhyZWFkID0gbnVsbHB0cjsK
KyAgICBtX2NvbnRleHRHcmFwaE11dGV4LnVubG9jaygpOworfQorCitib29sIFdlYktpdEF1ZGlv
Q29udGV4dDo6aXNBdWRpb1RocmVhZCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fYXVkaW9UaHJl
YWQgPT0gJlRocmVhZDo6Y3VycmVudCgpOworfQorCitib29sIFdlYktpdEF1ZGlvQ29udGV4dDo6
aXNHcmFwaE93bmVyKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9ncmFwaE93bmVyVGhyZWFkID09
ICZUaHJlYWQ6OmN1cnJlbnQoKTsKK30KKwordm9pZCBXZWJLaXRBdWRpb0NvbnRleHQ6OmFkZERl
ZmVycmVkRmluaXNoRGVyZWYoQXVkaW9Ob2RlKiBub2RlKQoreworICAgIEFTU0VSVChpc0F1ZGlv
VGhyZWFkKCkpOworICAgIG1fZGVmZXJyZWRGaW5pc2hEZXJlZkxpc3QuYXBwZW5kKG5vZGUpOwor
fQorCit2b2lkIFdlYktpdEF1ZGlvQ29udGV4dDo6aGFuZGxlUHJlUmVuZGVyVGFza3MoKQorewor
ICAgIEFTU0VSVChpc0F1ZGlvVGhyZWFkKCkpOworCisgICAgLy8gQXQgdGhlIGJlZ2lubmluZyBv
ZiBldmVyeSByZW5kZXIgcXVhbnR1bSwgdHJ5IHRvIHVwZGF0ZSB0aGUgaW50ZXJuYWwgcmVuZGVy
aW5nIGdyYXBoIHN0YXRlIChmcm9tIG1haW4gdGhyZWFkIGNoYW5nZXMpLgorICAgIC8vIEl0J3Mg
T0sgaWYgdGhlIHRyeUxvY2soKSBmYWlscywgd2UnbGwganVzdCB0YWtlIHNsaWdodGx5IGxvbmdl
ciB0byBwaWNrIHVwIHRoZSBjaGFuZ2VzLgorICAgIGJvb2wgbXVzdFJlbGVhc2VMb2NrOworICAg
IGlmICh0cnlMb2NrKG11c3RSZWxlYXNlTG9jaykpIHsKKyAgICAgICAgLy8gRml4dXAgdGhlIHN0
YXRlIG9mIGFueSBkaXJ0eSBBdWRpb1N1bW1pbmdKdW5jdGlvbnMgYW5kIEF1ZGlvTm9kZU91dHB1
dHMuCisgICAgICAgIGhhbmRsZURpcnR5QXVkaW9TdW1taW5nSnVuY3Rpb25zKCk7CisgICAgICAg
IGhhbmRsZURpcnR5QXVkaW9Ob2RlT3V0cHV0cygpOworCisgICAgICAgIHVwZGF0ZUF1dG9tYXRp
Y1B1bGxOb2RlcygpOworCisgICAgICAgIGlmIChtdXN0UmVsZWFzZUxvY2spCisgICAgICAgICAg
ICB1bmxvY2soKTsKKyAgICB9Cit9CisKK3ZvaWQgV2ViS2l0QXVkaW9Db250ZXh0OjpoYW5kbGVQ
b3N0UmVuZGVyVGFza3MoKQoreworICAgIEFTU0VSVChpc0F1ZGlvVGhyZWFkKCkpOworCisgICAg
Ly8gTXVzdCB1c2UgYSB0cnlMb2NrKCkgaGVyZSB0b28uIERvbid0IHdvcnJ5LCB0aGUgbG9jayB3
aWxsIHZlcnkgcmFyZWx5IGJlIGNvbnRlbmRlZCBhbmQgdGhpcyBtZXRob2QgaXMgY2FsbGVkIGZy
ZXF1ZW50bHkuCisgICAgLy8gVGhlIHdvcnN0IHRoYXQgY2FuIGhhcHBlbiBpcyB0aGF0IHRoZXJl
IHdpbGwgYmUgc29tZSBub2RlcyB3aGljaCB3aWxsIHRha2Ugc2xpZ2h0bHkgbG9uZ2VyIHRoYW4g
dXN1YWwgdG8gYmUgZGVsZXRlZCBvciByZW1vdmVkCisgICAgLy8gZnJvbSB0aGUgcmVuZGVyIGdy
YXBoIChpbiB3aGljaCBjYXNlIHRoZXknbGwgcmVuZGVyIHNpbGVuY2UpLgorICAgIGJvb2wgbXVz
dFJlbGVhc2VMb2NrOworICAgIGlmICh0cnlMb2NrKG11c3RSZWxlYXNlTG9jaykpIHsKKyAgICAg
ICAgLy8gVGFrZSBjYXJlIG9mIGZpbmlzaGluZyBhbnkgZGVyZWZzIHdoZXJlIHRoZSB0cnlMb2Nr
KCkgZmFpbGVkIHByZXZpb3VzbHkuCisgICAgICAgIGhhbmRsZURlZmVycmVkRmluaXNoRGVyZWZz
KCk7CisKKyAgICAgICAgLy8gRHluYW1pY2FsbHkgY2xlYW4gdXAgbm9kZXMgd2hpY2ggYXJlIG5v
IGxvbmdlciBuZWVkZWQuCisgICAgICAgIGRlcmVmRmluaXNoZWRTb3VyY2VOb2RlcygpOworCisg
ICAgICAgIC8vIERvbid0IGRlbGV0ZSBpbiB0aGUgcmVhbC10aW1lIHRocmVhZC4gTGV0IHRoZSBt
YWluIHRocmVhZCBkbyBpdC4KKyAgICAgICAgLy8gUmVmLWNvdW50ZWQgb2JqZWN0cyBoZWxkIGJ5
IGNlcnRhaW4gQXVkaW9Ob2RlcyBtYXkgbm90IGJlIHRocmVhZC1zYWZlLgorICAgICAgICBzY2hl
ZHVsZU5vZGVEZWxldGlvbigpOworCisgICAgICAgIC8vIEZpeHVwIHRoZSBzdGF0ZSBvZiBhbnkg
ZGlydHkgQXVkaW9TdW1taW5nSnVuY3Rpb25zIGFuZCBBdWRpb05vZGVPdXRwdXRzLgorICAgICAg
ICBoYW5kbGVEaXJ0eUF1ZGlvU3VtbWluZ0p1bmN0aW9ucygpOworICAgICAgICBoYW5kbGVEaXJ0
eUF1ZGlvTm9kZU91dHB1dHMoKTsKKworICAgICAgICB1cGRhdGVBdXRvbWF0aWNQdWxsTm9kZXMo
KTsKKworICAgICAgICBpZiAobXVzdFJlbGVhc2VMb2NrKQorICAgICAgICAgICAgdW5sb2NrKCk7
CisgICAgfQorfQorCit2b2lkIFdlYktpdEF1ZGlvQ29udGV4dDo6aGFuZGxlRGVmZXJyZWRGaW5p
c2hEZXJlZnMoKQoreworICAgIEFTU0VSVChpc0F1ZGlvVGhyZWFkKCkgJiYgaXNHcmFwaE93bmVy
KCkpOworICAgIGZvciAoYXV0byYgbm9kZSA6IG1fZGVmZXJyZWRGaW5pc2hEZXJlZkxpc3QpCisg
ICAgICAgIG5vZGUtPmZpbmlzaERlcmVmKEF1ZGlvTm9kZTo6UmVmVHlwZUNvbm5lY3Rpb24pOwor
CisgICAgbV9kZWZlcnJlZEZpbmlzaERlcmVmTGlzdC5jbGVhcigpOworfQorCit2b2lkIFdlYktp
dEF1ZGlvQ29udGV4dDo6bWFya0ZvckRlbGV0aW9uKEF1ZGlvTm9kZSYgbm9kZSkKK3sKKyAgICBB
U1NFUlQoaXNHcmFwaE93bmVyKCkpOworCisgICAgaWYgKGlzQXVkaW9UaHJlYWRGaW5pc2hlZCgp
KQorICAgICAgICBtX25vZGVzVG9EZWxldGUuYXBwZW5kKCZub2RlKTsKKyAgICBlbHNlCisgICAg
ICAgIG1fbm9kZXNNYXJrZWRGb3JEZWxldGlvbi5hcHBlbmQoJm5vZGUpOworCisgICAgLy8gVGhp
cyBpcyBwcm9iYWJseSB0aGUgYmVzdCB0aW1lIGZvciB1cyB0byByZW1vdmUgdGhlIG5vZGUgZnJv
bSBhdXRvbWF0aWMgcHVsbCBsaXN0LAorICAgIC8vIHNpbmNlIGFsbCBjb25uZWN0aW9ucyBhcmUg
Z29uZSBhbmQgd2UgaG9sZCB0aGUgZ3JhcGggbG9jay4gVGhlbiB3aGVuIGhhbmRsZVBvc3RSZW5k
ZXJUYXNrcygpCisgICAgLy8gZ2V0cyBhIGNoYW5jZSB0byBzY2hlZHVsZSB0aGUgZGVsZXRpb24g
d29yaywgdXBkYXRlQXV0b21hdGljUHVsbE5vZGVzKCkgYWxzbyBnZXRzIGEgY2hhbmNlIHRvCisg
ICAgLy8gbW9kaWZ5IG1fcmVuZGVyaW5nQXV0b21hdGljUHVsbE5vZGVzLgorICAgIHJlbW92ZUF1
dG9tYXRpY1B1bGxOb2RlKG5vZGUpOworfQorCit2b2lkIFdlYktpdEF1ZGlvQ29udGV4dDo6c2No
ZWR1bGVOb2RlRGVsZXRpb24oKQoreworICAgIGJvb2wgaXNHb29kID0gbV9pc0luaXRpYWxpemVk
ICYmIGlzR3JhcGhPd25lcigpOworICAgIEFTU0VSVChpc0dvb2QpOworICAgIGlmICghaXNHb29k
KQorICAgICAgICByZXR1cm47CisKKyAgICAvLyBNYWtlIHN1cmUgdG8gY2FsbCBkZWxldGVNYXJr
ZWROb2RlcygpIG9uIG1haW4gdGhyZWFkLgorICAgIGlmIChtX25vZGVzTWFya2VkRm9yRGVsZXRp
b24uc2l6ZSgpICYmICFtX2lzRGVsZXRpb25TY2hlZHVsZWQpIHsKKyAgICAgICAgbV9ub2Rlc1Rv
RGVsZXRlLmFwcGVuZFZlY3RvcihtX25vZGVzTWFya2VkRm9yRGVsZXRpb24pOworICAgICAgICBt
X25vZGVzTWFya2VkRm9yRGVsZXRpb24uY2xlYXIoKTsKKworICAgICAgICBtX2lzRGVsZXRpb25T
Y2hlZHVsZWQgPSB0cnVlOworCisgICAgICAgIGNhbGxPbk1haW5UaHJlYWQoW3Byb3RlY3RlZFRo
aXMgPSBtYWtlUmVmKCp0aGlzKV0oKSBtdXRhYmxlIHsKKyAgICAgICAgICAgIHByb3RlY3RlZFRo
aXMtPmRlbGV0ZU1hcmtlZE5vZGVzKCk7CisgICAgICAgIH0pOworICAgIH0KK30KKwordm9pZCBX
ZWJLaXRBdWRpb0NvbnRleHQ6OmRlbGV0ZU1hcmtlZE5vZGVzKCkKK3sKKyAgICBBU1NFUlQoaXNN
YWluVGhyZWFkKCkpOworCisgICAgLy8gUHJvdGVjdCB0aGlzIG9iamVjdCBmcm9tIGJlaW5nIGRl
bGV0ZWQgYmVmb3JlIHdlIHJlbGVhc2UgdGhlIG11dGV4IGxvY2tlZCBieSBBdXRvTG9ja2VyLgor
ICAgIFJlZjxXZWJLaXRBdWRpb0NvbnRleHQ+IHByb3RlY3RlZFRoaXMoKnRoaXMpOworICAgIHsK
KyAgICAgICAgQXV0b0xvY2tlciBsb2NrZXIoKnRoaXMpOworCisgICAgICAgIHdoaWxlIChtX25v
ZGVzVG9EZWxldGUuc2l6ZSgpKSB7CisgICAgICAgICAgICBBdWRpb05vZGUqIG5vZGUgPSBtX25v
ZGVzVG9EZWxldGUudGFrZUxhc3QoKTsKKworICAgICAgICAgICAgLy8gQmVmb3JlIGRlbGV0aW5n
IHRoZSBub2RlLCBjbGVhciBvdXQgYW55IEF1ZGlvTm9kZUlucHV0cyBmcm9tIG1fZGlydHlTdW1t
aW5nSnVuY3Rpb25zLgorICAgICAgICAgICAgdW5zaWduZWQgbnVtYmVyT2ZJbnB1dHMgPSBub2Rl
LT5udW1iZXJPZklucHV0cygpOworICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8
IG51bWJlck9mSW5wdXRzOyArK2kpCisgICAgICAgICAgICAgICAgbV9kaXJ0eVN1bW1pbmdKdW5j
dGlvbnMucmVtb3ZlKG5vZGUtPmlucHV0KGkpKTsKKworICAgICAgICAgICAgLy8gQmVmb3JlIGRl
bGV0aW5nIHRoZSBub2RlLCBjbGVhciBvdXQgYW55IEF1ZGlvTm9kZU91dHB1dHMgZnJvbSBtX2Rp
cnR5QXVkaW9Ob2RlT3V0cHV0cy4KKyAgICAgICAgICAgIHVuc2lnbmVkIG51bWJlck9mT3V0cHV0
cyA9IG5vZGUtPm51bWJlck9mT3V0cHV0cygpOworICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBp
ID0gMDsgaSA8IG51bWJlck9mT3V0cHV0czsgKytpKQorICAgICAgICAgICAgICAgIG1fZGlydHlB
dWRpb05vZGVPdXRwdXRzLnJlbW92ZShub2RlLT5vdXRwdXQoaSkpOworCisgICAgICAgICAgICAv
LyBGaW5hbGx5LCBkZWxldGUgaXQuCisgICAgICAgICAgICBkZWxldGUgbm9kZTsKKyAgICAgICAg
fQorICAgICAgICBtX2lzRGVsZXRpb25TY2hlZHVsZWQgPSBmYWxzZTsKKyAgICB9Cit9CisKK3Zv
aWQgV2ViS2l0QXVkaW9Db250ZXh0OjptYXJrU3VtbWluZ0p1bmN0aW9uRGlydHkoQXVkaW9TdW1t
aW5nSnVuY3Rpb24qIHN1bW1pbmdKdW5jdGlvbikKK3sKKyAgICBBU1NFUlQoaXNHcmFwaE93bmVy
KCkpOworICAgIG1fZGlydHlTdW1taW5nSnVuY3Rpb25zLmFkZChzdW1taW5nSnVuY3Rpb24pOwor
fQorCit2b2lkIFdlYktpdEF1ZGlvQ29udGV4dDo6cmVtb3ZlTWFya2VkU3VtbWluZ0p1bmN0aW9u
KEF1ZGlvU3VtbWluZ0p1bmN0aW9uKiBzdW1taW5nSnVuY3Rpb24pCit7CisgICAgQVNTRVJUKGlz
TWFpblRocmVhZCgpKTsKKyAgICBBdXRvTG9ja2VyIGxvY2tlcigqdGhpcyk7CisgICAgbV9kaXJ0
eVN1bW1pbmdKdW5jdGlvbnMucmVtb3ZlKHN1bW1pbmdKdW5jdGlvbik7Cit9CisKK0V2ZW50VGFy
Z2V0SW50ZXJmYWNlIFdlYktpdEF1ZGlvQ29udGV4dDo6ZXZlbnRUYXJnZXRJbnRlcmZhY2UoKSBj
b25zdAoreworICAgIHJldHVybiBXZWJLaXRBdWRpb0NvbnRleHRFdmVudFRhcmdldEludGVyZmFj
ZVR5cGU7Cit9CisKK3ZvaWQgV2ViS2l0QXVkaW9Db250ZXh0OjptYXJrQXVkaW9Ob2RlT3V0cHV0
RGlydHkoQXVkaW9Ob2RlT3V0cHV0KiBvdXRwdXQpCit7CisgICAgQVNTRVJUKGlzR3JhcGhPd25l
cigpKTsKKyAgICBtX2RpcnR5QXVkaW9Ob2RlT3V0cHV0cy5hZGQob3V0cHV0KTsKK30KKwordm9p
ZCBXZWJLaXRBdWRpb0NvbnRleHQ6OmhhbmRsZURpcnR5QXVkaW9TdW1taW5nSnVuY3Rpb25zKCkK
K3sKKyAgICBBU1NFUlQoaXNHcmFwaE93bmVyKCkpOworCisgICAgZm9yIChhdXRvJiBqdW5jdGlv
biA6IG1fZGlydHlTdW1taW5nSnVuY3Rpb25zKQorICAgICAgICBqdW5jdGlvbi0+dXBkYXRlUmVu
ZGVyaW5nU3RhdGUoKTsKKworICAgIG1fZGlydHlTdW1taW5nSnVuY3Rpb25zLmNsZWFyKCk7Cit9
CisKK3ZvaWQgV2ViS2l0QXVkaW9Db250ZXh0OjpoYW5kbGVEaXJ0eUF1ZGlvTm9kZU91dHB1dHMo
KQoreworICAgIEFTU0VSVChpc0dyYXBoT3duZXIoKSk7CisKKyAgICBmb3IgKGF1dG8mIG91dHB1
dCA6IG1fZGlydHlBdWRpb05vZGVPdXRwdXRzKQorICAgICAgICBvdXRwdXQtPnVwZGF0ZVJlbmRl
cmluZ1N0YXRlKCk7CisKKyAgICBtX2RpcnR5QXVkaW9Ob2RlT3V0cHV0cy5jbGVhcigpOworfQor
Cit2b2lkIFdlYktpdEF1ZGlvQ29udGV4dDo6YWRkQXV0b21hdGljUHVsbE5vZGUoQXVkaW9Ob2Rl
JiBub2RlKQoreworICAgIEFTU0VSVChpc0dyYXBoT3duZXIoKSk7CisKKyAgICBpZiAobV9hdXRv
bWF0aWNQdWxsTm9kZXMuYWRkKCZub2RlKS5pc05ld0VudHJ5KQorICAgICAgICBtX2F1dG9tYXRp
Y1B1bGxOb2Rlc05lZWRVcGRhdGluZyA9IHRydWU7Cit9CisKK3ZvaWQgV2ViS2l0QXVkaW9Db250
ZXh0OjpyZW1vdmVBdXRvbWF0aWNQdWxsTm9kZShBdWRpb05vZGUmIG5vZGUpCit7CisgICAgQVNT
RVJUKGlzR3JhcGhPd25lcigpKTsKKworICAgIGlmIChtX2F1dG9tYXRpY1B1bGxOb2Rlcy5yZW1v
dmUoJm5vZGUpKQorICAgICAgICBtX2F1dG9tYXRpY1B1bGxOb2Rlc05lZWRVcGRhdGluZyA9IHRy
dWU7Cit9CisKK3ZvaWQgV2ViS2l0QXVkaW9Db250ZXh0Ojp1cGRhdGVBdXRvbWF0aWNQdWxsTm9k
ZXMoKQoreworICAgIEFTU0VSVChpc0dyYXBoT3duZXIoKSk7CisKKyAgICBpZiAobV9hdXRvbWF0
aWNQdWxsTm9kZXNOZWVkVXBkYXRpbmcpIHsKKyAgICAgICAgLy8gQ29weSBmcm9tIG1fYXV0b21h
dGljUHVsbE5vZGVzIHRvIG1fcmVuZGVyaW5nQXV0b21hdGljUHVsbE5vZGVzLgorICAgICAgICBt
X3JlbmRlcmluZ0F1dG9tYXRpY1B1bGxOb2Rlcy5yZXNpemUobV9hdXRvbWF0aWNQdWxsTm9kZXMu
c2l6ZSgpKTsKKworICAgICAgICB1bnNpZ25lZCBpID0gMDsKKyAgICAgICAgZm9yIChhdXRvJiBv
dXRwdXQgOiBtX2F1dG9tYXRpY1B1bGxOb2RlcykKKyAgICAgICAgICAgIG1fcmVuZGVyaW5nQXV0
b21hdGljUHVsbE5vZGVzW2krK10gPSBvdXRwdXQ7CisKKyAgICAgICAgbV9hdXRvbWF0aWNQdWxs
Tm9kZXNOZWVkVXBkYXRpbmcgPSBmYWxzZTsKKyAgICB9Cit9CisKK3ZvaWQgV2ViS2l0QXVkaW9D
b250ZXh0Ojpwcm9jZXNzQXV0b21hdGljUHVsbE5vZGVzKHNpemVfdCBmcmFtZXNUb1Byb2Nlc3Mp
Cit7CisgICAgQVNTRVJUKGlzQXVkaW9UaHJlYWQoKSk7CisKKyAgICBmb3IgKGF1dG8mIG5vZGUg
OiBtX3JlbmRlcmluZ0F1dG9tYXRpY1B1bGxOb2RlcykKKyAgICAgICAgbm9kZS0+cHJvY2Vzc0lm
TmVjZXNzYXJ5KGZyYW1lc1RvUHJvY2Vzcyk7Cit9CisKK3ZvaWQgV2ViS2l0QXVkaW9Db250ZXh0
Ojpub2RlV2lsbEJlZ2luUGxheWJhY2soKQoreworICAgIC8vIENhbGxlZCBieSBzY2hlZHVsZWQg
QXVkaW9Ob2RlcyB3aGVuIGNsaWVudHMgc2NoZWR1bGUgdGhlaXIgc3RhcnQgdGltZXMuCisgICAg
Ly8gUHJpb3IgdG8gdGhlIGludHJvZHVjdGlvbiBvZiBzdXNwZW5kKCksIHJlc3VtZSgpLCBhbmQg
c3RvcCgpLCBzdGFydGluZworICAgIC8vIGEgc2NoZWR1bGVkIEF1ZGlvTm9kZSB3b3VsZCByZW1v
dmUgdGhlIHVzZXItZ2VzdHVyZSByZXN0cmljdGlvbiwgaWYgcHJlc2VudCwKKyAgICAvLyBhbmQg
d291bGQgdGh1cyB1bm11dGUgdGhlIGNvbnRleHQuIE5vdyB0aGF0IEF1ZGlvQ29udGV4dCBzdGF5
cyBpbiB0aGUKKyAgICAvLyAic3VzcGVuZGVkIiBzdGF0ZSBpZiBhIHVzZXItZ2VzdHVyZSByZXN0
cmljdGlvbiBpcyBwcmVzZW50LCBzdGFydGluZyBhCisgICAgLy8gc2NoZWR1bGUgQXVkaW9Ob2Rl
IHNob3VsZCBzZXQgdGhlIHN0YXRlIHRvICJydW5uaW5nIiwgYnV0IG9ubHkgaWYgdGhlCisgICAg
Ly8gdXNlci1nZXN0dXJlIHJlc3RyaWN0aW9uIGlzIHNldC4KKyAgICBpZiAodXNlckdlc3R1cmVS
ZXF1aXJlZEZvckF1ZGlvU3RhcnQoKSkKKyAgICAgICAgc3RhcnRSZW5kZXJpbmcoKTsKK30KKwor
c3RhdGljIGJvb2wgc2hvdWxkRG9jdW1lbnRBbGxvd1dlYkF1ZGlvVG9BdXRvUGxheShjb25zdCBE
b2N1bWVudCYgZG9jdW1lbnQpCit7CisgICAgaWYgKGRvY3VtZW50LnByb2Nlc3NpbmdVc2VyR2Vz
dHVyZUZvck1lZGlhKCkgfHwgZG9jdW1lbnQuaXNDYXB0dXJpbmcoKSkKKyAgICAgICAgcmV0dXJu
IHRydWU7CisgICAgcmV0dXJuIGRvY3VtZW50LnF1aXJrcygpLnNob3VsZEF1dG9wbGF5V2ViQXVk
aW9Gb3JBcmJpdHJhcnlVc2VyR2VzdHVyZSgpICYmIGRvY3VtZW50LnRvcERvY3VtZW50KCkuaGFz
SGFkVXNlckludGVyYWN0aW9uKCk7Cit9CisKK2Jvb2wgV2ViS2l0QXVkaW9Db250ZXh0Ojp3aWxs
QmVnaW5QbGF5YmFjaygpCit7CisgICAgYXV0byogZG9jdW1lbnQgPSB0aGlzLT5kb2N1bWVudCgp
OworICAgIGlmICghZG9jdW1lbnQpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGlmICh1
c2VyR2VzdHVyZVJlcXVpcmVkRm9yQXVkaW9TdGFydCgpKSB7CisgICAgICAgIGlmICghc2hvdWxk
RG9jdW1lbnRBbGxvd1dlYkF1ZGlvVG9BdXRvUGxheSgqZG9jdW1lbnQpKSB7CisgICAgICAgICAg
ICBBTFdBWVNfTE9HKExPR0lERU5USUZJRVIsICJyZXR1cm5pbmcgZmFsc2UsIG5vdCBwcm9jZXNz
aW5nIHVzZXIgZ2VzdHVyZSBvciBjYXB0dXJpbmciKTsKKyAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICAgICAgfQorICAgICAgICByZW1vdmVCZWhhdmlvclJlc3RyaWN0aW9uKFdlYktpdEF1
ZGlvQ29udGV4dDo6UmVxdWlyZVVzZXJHZXN0dXJlRm9yQXVkaW9TdGFydFJlc3RyaWN0aW9uKTsK
KyAgICB9CisKKyAgICBpZiAocGFnZUNvbnNlbnRSZXF1aXJlZEZvckF1ZGlvU3RhcnQoKSkgewor
ICAgICAgICBhdXRvKiBwYWdlID0gZG9jdW1lbnQtPnBhZ2UoKTsKKyAgICAgICAgaWYgKHBhZ2Ug
JiYgIXBhZ2UtPmNhblN0YXJ0TWVkaWEoKSkgeworICAgICAgICAgICAgZG9jdW1lbnQtPmFkZE1l
ZGlhQ2FuU3RhcnRMaXN0ZW5lcigqdGhpcyk7CisgICAgICAgICAgICBBTFdBWVNfTE9HKExPR0lE
RU5USUZJRVIsICJyZXR1cm5pbmcgZmFsc2UsIHBhZ2UgZG9lc24ndCBhbGxvdyBtZWRpYSB0byBz
dGFydCIpOworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisgICAgICAgIHJl
bW92ZUJlaGF2aW9yUmVzdHJpY3Rpb24oV2ViS2l0QXVkaW9Db250ZXh0OjpSZXF1aXJlUGFnZUNv
bnNlbnRGb3JBdWRpb1N0YXJ0UmVzdHJpY3Rpb24pOworICAgIH0KKworICAgIGF1dG8gd2lsbEJl
Z2luID0gbV9tZWRpYVNlc3Npb24tPmNsaWVudFdpbGxCZWdpblBsYXliYWNrKCk7CisgICAgQUxX
QVlTX0xPRyhMT0dJREVOVElGSUVSLCAicmV0dXJuaW5nICIsIHdpbGxCZWdpbik7CisKKyAgICBy
ZXR1cm4gd2lsbEJlZ2luOworfQorCitib29sIFdlYktpdEF1ZGlvQ29udGV4dDo6d2lsbFBhdXNl
UGxheWJhY2soKQoreworICAgIGF1dG8qIGRvY3VtZW50ID0gdGhpcy0+ZG9jdW1lbnQoKTsKKyAg
ICBpZiAoIWRvY3VtZW50KQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBpZiAodXNlckdl
c3R1cmVSZXF1aXJlZEZvckF1ZGlvU3RhcnQoKSkgeworICAgICAgICBpZiAoIWRvY3VtZW50LT5w
cm9jZXNzaW5nVXNlckdlc3R1cmVGb3JNZWRpYSgpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OworICAgICAgICByZW1vdmVCZWhhdmlvclJlc3RyaWN0aW9uKFdlYktpdEF1ZGlvQ29udGV4dDo6
UmVxdWlyZVVzZXJHZXN0dXJlRm9yQXVkaW9TdGFydFJlc3RyaWN0aW9uKTsKKyAgICB9CisKKyAg
ICBpZiAocGFnZUNvbnNlbnRSZXF1aXJlZEZvckF1ZGlvU3RhcnQoKSkgeworICAgICAgICBhdXRv
KiBwYWdlID0gZG9jdW1lbnQtPnBhZ2UoKTsKKyAgICAgICAgaWYgKHBhZ2UgJiYgIXBhZ2UtPmNh
blN0YXJ0TWVkaWEoKSkgeworICAgICAgICAgICAgZG9jdW1lbnQtPmFkZE1lZGlhQ2FuU3RhcnRM
aXN0ZW5lcigqdGhpcyk7CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKyAg
ICAgICAgcmVtb3ZlQmVoYXZpb3JSZXN0cmljdGlvbihXZWJLaXRBdWRpb0NvbnRleHQ6OlJlcXVp
cmVQYWdlQ29uc2VudEZvckF1ZGlvU3RhcnRSZXN0cmljdGlvbik7CisgICAgfQorCisgICAgcmV0
dXJuIG1fbWVkaWFTZXNzaW9uLT5jbGllbnRXaWxsUGF1c2VQbGF5YmFjaygpOworfQorCit2b2lk
IFdlYktpdEF1ZGlvQ29udGV4dDo6c3RhcnRSZW5kZXJpbmcoKQoreworICAgIEFMV0FZU19MT0co
TE9HSURFTlRJRklFUik7CisgICAgaWYgKG1faXNTdG9wU2NoZWR1bGVkIHx8ICF3aWxsQmVnaW5Q
bGF5YmFjaygpKQorICAgICAgICByZXR1cm47CisKKyAgICBtYWtlUGVuZGluZ0FjdGl2aXR5KCk7
CisKKyAgICBkZXN0aW5hdGlvbigpLT5zdGFydFJlbmRlcmluZygpOworICAgIHNldFN0YXRlKFN0
YXRlOjpSdW5uaW5nKTsKK30KKwordm9pZCBXZWJLaXRBdWRpb0NvbnRleHQ6Om1lZGlhQ2FuU3Rh
cnQoRG9jdW1lbnQmIGRvY3VtZW50KQoreworICAgIEFTU0VSVF9VTlVTRUQoZG9jdW1lbnQsICZk
b2N1bWVudCA9PSB0aGlzLT5kb2N1bWVudCgpKTsKKyAgICByZW1vdmVCZWhhdmlvclJlc3RyaWN0
aW9uKFdlYktpdEF1ZGlvQ29udGV4dDo6UmVxdWlyZVBhZ2VDb25zZW50Rm9yQXVkaW9TdGFydFJl
c3RyaWN0aW9uKTsKKyAgICBtYXlSZXN1bWVQbGF5YmFjayh0cnVlKTsKK30KKworTWVkaWFQcm9k
dWNlcjo6TWVkaWFTdGF0ZUZsYWdzIFdlYktpdEF1ZGlvQ29udGV4dDo6bWVkaWFTdGF0ZSgpIGNv
bnN0Cit7CisgICAgaWYgKCFtX2lzU3RvcFNjaGVkdWxlZCAmJiBtX2Rlc3RpbmF0aW9uTm9kZSAm
JiBtX2Rlc3RpbmF0aW9uTm9kZS0+aXNQbGF5aW5nQXVkaW8oKSkKKyAgICAgICAgcmV0dXJuIE1l
ZGlhUHJvZHVjZXI6OklzUGxheWluZ0F1ZGlvOworCisgICAgcmV0dXJuIE1lZGlhUHJvZHVjZXI6
OklzTm90UGxheWluZzsKK30KKwordm9pZCBXZWJLaXRBdWRpb0NvbnRleHQ6OnBhZ2VNdXRlZFN0
YXRlRGlkQ2hhbmdlKCkKK3sKKyAgICBpZiAobV9kZXN0aW5hdGlvbk5vZGUgJiYgZG9jdW1lbnQo
KSAmJiBkb2N1bWVudCgpLT5wYWdlKCkpCisgICAgICAgIG1fZGVzdGluYXRpb25Ob2RlLT5zZXRN
dXRlZChkb2N1bWVudCgpLT5wYWdlKCktPmlzQXVkaW9NdXRlZCgpKTsKK30KKwordm9pZCBXZWJL
aXRBdWRpb0NvbnRleHQ6OmlzUGxheWluZ0F1ZGlvRGlkQ2hhbmdlKCkKK3sKKyAgICAvLyBNYWtl
IHN1cmUgdG8gY2FsbCBEb2N1bWVudDo6dXBkYXRlSXNQbGF5aW5nTWVkaWEoKSBvbiB0aGUgbWFp
biB0aHJlYWQsIHNpbmNlCisgICAgLy8gd2UgY291bGQgYmUgb24gdGhlIGF1ZGlvIEkvTyB0aHJl
YWQgaGVyZSBhbmQgdGhlIGNhbGwgaW50byBXZWJDb3JlIGNvdWxkIGJsb2NrLgorICAgIGNhbGxP
bk1haW5UaHJlYWQoW3Byb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKV0geworICAgICAgICBp
ZiAocHJvdGVjdGVkVGhpcy0+ZG9jdW1lbnQoKSkKKyAgICAgICAgICAgIHByb3RlY3RlZFRoaXMt
PmRvY3VtZW50KCktPnVwZGF0ZUlzUGxheWluZ01lZGlhKCk7CisgICAgfSk7Cit9CisKK3ZvaWQg
V2ViS2l0QXVkaW9Db250ZXh0OjpmaW5pc2hlZFJlbmRlcmluZyhib29sIGRpZFJlbmRlcmluZykK
K3sKKyAgICBBU1NFUlQoaXNPZmZsaW5lQ29udGV4dCgpKTsKKyAgICBBU1NFUlQoaXNNYWluVGhy
ZWFkKCkpOworICAgIGlmICghaXNNYWluVGhyZWFkKCkpCisgICAgICAgIHJldHVybjsKKworICAg
IGF1dG8gY2xlYXJQZW5kaW5nQWN0aXZpdHlJZkV4aXRFYXJseSA9IFdURjo6bWFrZVNjb3BlRXhp
dChbdGhpc10geworICAgICAgICBjbGVhclBlbmRpbmdBY3Rpdml0eSgpOworICAgIH0pOworCisK
KyAgICBBTFdBWVNfTE9HKExPR0lERU5USUZJRVIpOworCisgICAgaWYgKCFkaWRSZW5kZXJpbmcp
CisgICAgICAgIHJldHVybjsKKworICAgIEF1ZGlvQnVmZmVyKiByZW5kZXJlZEJ1ZmZlciA9IG1f
cmVuZGVyVGFyZ2V0LmdldCgpOworICAgIHNldFN0YXRlKFN0YXRlOjpDbG9zZWQpOworCisgICAg
QVNTRVJUKHJlbmRlcmVkQnVmZmVyKTsKKyAgICBpZiAoIXJlbmRlcmVkQnVmZmVyKQorICAgICAg
ICByZXR1cm47CisKKyAgICAvLyBBdm9pZCBmaXJpbmcgdGhlIGV2ZW50IGlmIHRoZSBkb2N1bWVu
dCBoYXMgYWxyZWFkeSBnb25lIGF3YXkuCisgICAgaWYgKG1faXNTdG9wU2NoZWR1bGVkKQorICAg
ICAgICByZXR1cm47CisKKyAgICBjbGVhclBlbmRpbmdBY3Rpdml0eUlmRXhpdEVhcmx5LnJlbGVh
c2UoKTsKKyAgICBtX2V2ZW50UXVldWUtPmVucXVldWVFdmVudChPZmZsaW5lQXVkaW9Db21wbGV0
aW9uRXZlbnQ6OmNyZWF0ZShyZW5kZXJlZEJ1ZmZlcikpOworfQorCit2b2lkIFdlYktpdEF1ZGlv
Q29udGV4dDo6ZGlzcGF0Y2hFdmVudChFdmVudCYgZXZlbnQpCit7CisgICAgRXZlbnRUYXJnZXQ6
OmRpc3BhdGNoRXZlbnQoZXZlbnQpOworICAgIGlmIChldmVudC5ldmVudEludGVyZmFjZSgpID09
IE9mZmxpbmVBdWRpb0NvbXBsZXRpb25FdmVudEludGVyZmFjZVR5cGUpCisgICAgICAgIGNsZWFy
UGVuZGluZ0FjdGl2aXR5KCk7Cit9CisKK3ZvaWQgV2ViS2l0QXVkaW9Db250ZXh0OjppbmNyZW1l
bnRBY3RpdmVTb3VyY2VDb3VudCgpCit7CisgICAgKyttX2FjdGl2ZVNvdXJjZUNvdW50OworfQor
Cit2b2lkIFdlYktpdEF1ZGlvQ29udGV4dDo6ZGVjcmVtZW50QWN0aXZlU291cmNlQ291bnQoKQor
eworICAgIC0tbV9hY3RpdmVTb3VyY2VDb3VudDsKK30KKwordm9pZCBXZWJLaXRBdWRpb0NvbnRl
eHQ6OnN1c3BlbmRSZW5kZXJpbmcoRE9NUHJvbWlzZURlZmVycmVkPHZvaWQ+JiYgcHJvbWlzZSkK
K3sKKyAgICBpZiAoaXNPZmZsaW5lQ29udGV4dCgpIHx8IG1faXNTdG9wU2NoZWR1bGVkKSB7Cisg
ICAgICAgIHByb21pc2UucmVqZWN0KEludmFsaWRTdGF0ZUVycm9yKTsKKyAgICAgICAgcmV0dXJu
OworICAgIH0KKworICAgIGlmIChtX3N0YXRlID09IFN0YXRlOjpTdXNwZW5kZWQpIHsKKyAgICAg
ICAgcHJvbWlzZS5yZXNvbHZlKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpZiAo
bV9zdGF0ZSA9PSBTdGF0ZTo6Q2xvc2VkIHx8IG1fc3RhdGUgPT0gU3RhdGU6OkludGVycnVwdGVk
IHx8ICFtX2Rlc3RpbmF0aW9uTm9kZSkgeworICAgICAgICBwcm9taXNlLnJlamVjdCgpOworICAg
ICAgICByZXR1cm47CisgICAgfQorCisgICAgYWRkUmVhY3Rpb24oU3RhdGU6OlN1c3BlbmRlZCwg
V1RGTW92ZShwcm9taXNlKSk7CisKKyAgICBpZiAoIXdpbGxQYXVzZVBsYXliYWNrKCkpCisgICAg
ICAgIHJldHVybjsKKworICAgIGxhenlJbml0aWFsaXplKCk7CisKKyAgICBtX2Rlc3RpbmF0aW9u
Tm9kZS0+c3VzcGVuZChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpXSB7Cisg
ICAgICAgIHNldFN0YXRlKFN0YXRlOjpTdXNwZW5kZWQpOworICAgIH0pOworfQorCit2b2lkIFdl
YktpdEF1ZGlvQ29udGV4dDo6cmVzdW1lUmVuZGVyaW5nKERPTVByb21pc2VEZWZlcnJlZDx2b2lk
PiYmIHByb21pc2UpCit7CisgICAgaWYgKGlzT2ZmbGluZUNvbnRleHQoKSB8fCBtX2lzU3RvcFNj
aGVkdWxlZCkgeworICAgICAgICBwcm9taXNlLnJlamVjdChJbnZhbGlkU3RhdGVFcnJvcik7Cisg
ICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpZiAobV9zdGF0ZSA9PSBTdGF0ZTo6UnVubmlu
ZykgeworICAgICAgICBwcm9taXNlLnJlc29sdmUoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0K
KworICAgIGlmIChtX3N0YXRlID09IFN0YXRlOjpDbG9zZWQgfHwgIW1fZGVzdGluYXRpb25Ob2Rl
KSB7CisgICAgICAgIHByb21pc2UucmVqZWN0KCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisK
KyAgICBhZGRSZWFjdGlvbihTdGF0ZTo6UnVubmluZywgV1RGTW92ZShwcm9taXNlKSk7CisKKyAg
ICBpZiAoIXdpbGxCZWdpblBsYXliYWNrKCkpCisgICAgICAgIHJldHVybjsKKworICAgIGxhenlJ
bml0aWFsaXplKCk7CisKKyAgICBtX2Rlc3RpbmF0aW9uTm9kZS0+cmVzdW1lKFt0aGlzLCBwcm90
ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyldIHsKKyAgICAgICAgc2V0U3RhdGUoU3RhdGU6OlJ1
bm5pbmcpOworICAgIH0pOworfQorCit2b2lkIFdlYktpdEF1ZGlvQ29udGV4dDo6Y2xvc2UoRE9N
UHJvbWlzZURlZmVycmVkPHZvaWQ+JiYgcHJvbWlzZSkKK3sKKyAgICBpZiAoaXNPZmZsaW5lQ29u
dGV4dCgpIHx8IG1faXNTdG9wU2NoZWR1bGVkKSB7CisgICAgICAgIHByb21pc2UucmVqZWN0KElu
dmFsaWRTdGF0ZUVycm9yKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlmIChtX3N0
YXRlID09IFN0YXRlOjpDbG9zZWQgfHwgIW1fZGVzdGluYXRpb25Ob2RlKSB7CisgICAgICAgIHBy
b21pc2UucmVzb2x2ZSgpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgYWRkUmVhY3Rp
b24oU3RhdGU6OkNsb3NlZCwgV1RGTW92ZShwcm9taXNlKSk7CisKKyAgICBsYXp5SW5pdGlhbGl6
ZSgpOworCisgICAgbV9kZXN0aW5hdGlvbk5vZGUtPmNsb3NlKFt0aGlzLCBwcm90ZWN0ZWRUaGlz
ID0gbWFrZVJlZigqdGhpcyldIHsKKyAgICAgICAgc2V0U3RhdGUoU3RhdGU6OkNsb3NlZCk7Cisg
ICAgICAgIHVuaW5pdGlhbGl6ZSgpOworICAgIH0pOworfQorCisKK3ZvaWQgV2ViS2l0QXVkaW9D
b250ZXh0OjpzdXNwZW5kUGxheWJhY2soKQoreworICAgIGlmICghbV9kZXN0aW5hdGlvbk5vZGUg
fHwgbV9zdGF0ZSA9PSBTdGF0ZTo6Q2xvc2VkKQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAo
bV9zdGF0ZSA9PSBTdGF0ZTo6U3VzcGVuZGVkKSB7CisgICAgICAgIGlmIChtX21lZGlhU2Vzc2lv
bi0+c3RhdGUoKSA9PSBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6SW50ZXJydXB0ZWQpCisgICAgICAg
ICAgICBzZXRTdGF0ZShTdGF0ZTo6SW50ZXJydXB0ZWQpOworICAgICAgICByZXR1cm47CisgICAg
fQorCisgICAgbGF6eUluaXRpYWxpemUoKTsKKworICAgIG1fZGVzdGluYXRpb25Ob2RlLT5zdXNw
ZW5kKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyldIHsKKyAgICAgICAgYm9v
bCBpbnRlcnJ1cHRlZCA9IG1fbWVkaWFTZXNzaW9uLT5zdGF0ZSgpID09IFBsYXRmb3JtTWVkaWFT
ZXNzaW9uOjpJbnRlcnJ1cHRlZDsKKyAgICAgICAgc2V0U3RhdGUoaW50ZXJydXB0ZWQgPyBTdGF0
ZTo6SW50ZXJydXB0ZWQgOiBTdGF0ZTo6U3VzcGVuZGVkKTsKKyAgICB9KTsKK30KKwordm9pZCBX
ZWJLaXRBdWRpb0NvbnRleHQ6Om1heVJlc3VtZVBsYXliYWNrKGJvb2wgc2hvdWxkUmVzdW1lKQor
eworICAgIGlmICghbV9kZXN0aW5hdGlvbk5vZGUgfHwgbV9zdGF0ZSA9PSBTdGF0ZTo6Q2xvc2Vk
IHx8IG1fc3RhdGUgPT0gU3RhdGU6OlJ1bm5pbmcpCisgICAgICAgIHJldHVybjsKKworICAgIGlm
ICghc2hvdWxkUmVzdW1lKSB7CisgICAgICAgIHNldFN0YXRlKFN0YXRlOjpTdXNwZW5kZWQpOwor
ICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgaWYgKCF3aWxsQmVnaW5QbGF5YmFjaygpKQor
ICAgICAgICByZXR1cm47CisKKyAgICBsYXp5SW5pdGlhbGl6ZSgpOworCisgICAgbV9kZXN0aW5h
dGlvbk5vZGUtPnJlc3VtZShbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpXSB7
CisgICAgICAgIHNldFN0YXRlKFN0YXRlOjpSdW5uaW5nKTsKKyAgICB9KTsKK30KKwordm9pZCBX
ZWJLaXRBdWRpb0NvbnRleHQ6OnBvc3RUYXNrKFdURjo6RnVuY3Rpb248dm9pZCgpPiYmIHRhc2sp
Cit7CisgICAgaWYgKG1faXNTdG9wU2NoZWR1bGVkKQorICAgICAgICByZXR1cm47CisKKyAgICBt
X3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPnBvc3RUYXNrKFdURk1vdmUodGFzaykpOworfQorCitj
b25zdCBTZWN1cml0eU9yaWdpbiogV2ViS2l0QXVkaW9Db250ZXh0OjpvcmlnaW4oKSBjb25zdAor
eworICAgIHJldHVybiBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQgPyBtX3NjcmlwdEV4ZWN1dGlv
bkNvbnRleHQtPnNlY3VyaXR5T3JpZ2luKCkgOiBudWxscHRyOworfQorCit2b2lkIFdlYktpdEF1
ZGlvQ29udGV4dDo6YWRkQ29uc29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZSBzb3VyY2UsIE1lc3Nh
Z2VMZXZlbCBsZXZlbCwgY29uc3QgU3RyaW5nJiBtZXNzYWdlKQoreworICAgIGlmIChtX3Njcmlw
dEV4ZWN1dGlvbkNvbnRleHQpCisgICAgICAgIG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+YWRk
Q29uc29sZU1lc3NhZ2Uoc291cmNlLCBsZXZlbCwgbWVzc2FnZSk7Cit9CisKK3ZvaWQgV2ViS2l0
QXVkaW9Db250ZXh0OjpjbGVhclBlbmRpbmdBY3Rpdml0eSgpCit7CisgICAgaWYgKCFtX3BlbmRp
bmdBY3Rpdml0eSkKKyAgICAgICAgcmV0dXJuOworICAgIG1fcGVuZGluZ0FjdGl2aXR5ID0gbnVs
bHB0cjsKKyAgICAvLyBGSVhNRTogUmVtb3ZlIHRoaXMgc3BlY2lmaWMgZGVyZWYoKSBhbmQgcmVm
KCkgY2FsbCBpbiBtYWtlUGVuZGluZ0FjdGl2aXR5KCkuCisgICAgZGVyZWYoKTsKK30KKwordm9p
ZCBXZWJLaXRBdWRpb0NvbnRleHQ6Om1ha2VQZW5kaW5nQWN0aXZpdHkoKQoreworICAgIGlmICht
X3BlbmRpbmdBY3Rpdml0eSkKKyAgICAgICAgcmV0dXJuOworICAgIG1fcGVuZGluZ0FjdGl2aXR5
ID0gQWN0aXZlRE9NT2JqZWN0OjptYWtlUGVuZGluZ0FjdGl2aXR5KCp0aGlzKTsKKyAgICByZWYo
KTsKK30KKworI2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRAorV1RGTG9nQ2hhbm5lbCYgV2ViS2l0
QXVkaW9Db250ZXh0Ojpsb2dDaGFubmVsKCkgY29uc3QKK3sKKyAgICByZXR1cm4gTG9nTWVkaWE7
Cit9CisjZW5kaWYKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxF
KFdFQl9BVURJTykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8v
V2ViS2l0QXVkaW9Db250ZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1dl
YktpdEF1ZGlvQ29udGV4dC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE0NDY2MDkzYTY4MmU3M2RhMjg2YWM1MTk4
YWNmZGQ1Y2JjOGY5ZTAKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmF1ZGlvL1dlYktpdEF1ZGlvQ29udGV4dC5oCkBAIC0wLDAgKzEsNDE3IEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTYtMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiAgUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJ
RUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTgorICogQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTCisgKiBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkFjdGl2ZURPTU9iamVjdC5oIgorI2lu
Y2x1ZGUgIkFzeW5jQXVkaW9EZWNvZGVyLmgiCisjaW5jbHVkZSAiQXVkaW9CdXMuaCIKKyNpbmNs
dWRlICJBdWRpb0NvbnRleHQuaCIKKyNpbmNsdWRlICJBdWRpb0NvbnRleHRTdGF0ZS5oIgorI2lu
Y2x1ZGUgIkF1ZGlvRGVzdGluYXRpb25Ob2RlLmgiCisjaW5jbHVkZSAiRXZlbnRUYXJnZXQuaCIK
KyNpbmNsdWRlICJNZWRpYUNhblN0YXJ0TGlzdGVuZXIuaCIKKyNpbmNsdWRlICJNZWRpYVByb2R1
Y2VyLmgiCisjaW5jbHVkZSAiUGxhdGZvcm1NZWRpYVNlc3Npb24uaCIKKyNpbmNsdWRlICJTY3Jp
cHRFeGVjdXRpb25Db250ZXh0LmgiCisjaW5jbHVkZSAiVmlzaWJpbGl0eUNoYW5nZUNsaWVudC5o
IgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0NvbnNvbGVUeXBlcy5oPgorI2luY2x1ZGUgPEph
dmFTY3JpcHRDb3JlL0Zsb2F0MzJBcnJheS5oPgorI2luY2x1ZGUgPGF0b21pYz4KKyNpbmNsdWRl
IDx3dGYvSGFzaFNldC5oPgorI2luY2x1ZGUgPHd0Zi9Mb2dnZXJIZWxwZXIuaD4KKyNpbmNsdWRl
IDx3dGYvTWFpblRocmVhZC5oPgorI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KKyNpbmNsdWRlIDx3
dGYvVGhyZWFkU2FmZVJlZkNvdW50ZWQuaD4KKyNpbmNsdWRlIDx3dGYvVGhyZWFkaW5nLmg+Cisj
aW5jbHVkZSA8d3RmL1VuaXF1ZVJlZi5oPgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKyNpbmNs
dWRlIDx3dGYvdGV4dC9BdG9tU3RyaW5nSGFzaC5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisK
K2NsYXNzIEFuYWx5c2VyTm9kZTsKK2NsYXNzIEF1ZGlvQnVmZmVyOworY2xhc3MgQXVkaW9CdWZm
ZXJDYWxsYmFjazsKK2NsYXNzIEF1ZGlvQnVmZmVyU291cmNlTm9kZTsKK2NsYXNzIEF1ZGlvTGlz
dGVuZXI7CitjbGFzcyBBdWRpb1N1bW1pbmdKdW5jdGlvbjsKK2NsYXNzIEJpcXVhZEZpbHRlck5v
ZGU7CitjbGFzcyBDaGFubmVsTWVyZ2VyTm9kZTsKK2NsYXNzIENoYW5uZWxTcGxpdHRlck5vZGU7
CitjbGFzcyBDb252b2x2ZXJOb2RlOworY2xhc3MgRGVsYXlOb2RlOworY2xhc3MgRG9jdW1lbnQ7
CitjbGFzcyBEeW5hbWljc0NvbXByZXNzb3JOb2RlOworY2xhc3MgR2Fpbk5vZGU7CitjbGFzcyBI
VE1MTWVkaWFFbGVtZW50OworY2xhc3MgTWFpblRocmVhZEdlbmVyaWNFdmVudFF1ZXVlOworY2xh
c3MgTWVkaWFFbGVtZW50QXVkaW9Tb3VyY2VOb2RlOworY2xhc3MgTWVkaWFTdHJlYW07CitjbGFz
cyBNZWRpYVN0cmVhbUF1ZGlvRGVzdGluYXRpb25Ob2RlOworY2xhc3MgTWVkaWFTdHJlYW1BdWRp
b1NvdXJjZU5vZGU7CitjbGFzcyBPc2NpbGxhdG9yTm9kZTsKK2NsYXNzIFBlcmlvZGljV2F2ZTsK
K2NsYXNzIFNjcmlwdFByb2Nlc3Nvck5vZGU7CitjbGFzcyBTZWN1cml0eU9yaWdpbjsKK2NsYXNz
IFdhdmVTaGFwZXJOb2RlOworY2xhc3MgV2ViS2l0QXVkaW9QYW5uZXJOb2RlOworCit0ZW1wbGF0
ZTx0eXBlbmFtZSBJRExUeXBlPiBjbGFzcyBET01Qcm9taXNlRGVmZXJyZWQ7CisKKy8vIEF1ZGlv
Q29udGV4dCBpcyB0aGUgY29ybmVyc3RvbmUgb2YgdGhlIHdlYiBhdWRpbyBBUEkgYW5kIGFsbCBB
dWRpb05vZGVzIGFyZSBjcmVhdGVkIGZyb20gaXQuCisvLyBGb3IgdGhyZWFkIHNhZmV0eSBiZXR3
ZWVuIHRoZSBhdWRpbyB0aHJlYWQgYW5kIHRoZSBtYWluIHRocmVhZCwgaXQgaGFzIGEgcmVuZGVy
aW5nIGdyYXBoIGxvY2tpbmcgbWVjaGFuaXNtLgorCitjbGFzcyBXZWJLaXRBdWRpb0NvbnRleHQK
KyAgICA6IHB1YmxpYyBBdWRpb0NvbnRleHRCYXNlCisgICAgLCBwcml2YXRlIFBsYXRmb3JtTWVk
aWFTZXNzaW9uQ2xpZW50CisgICAgLCBwcml2YXRlIFZpc2liaWxpdHlDaGFuZ2VDbGllbnQKK3sK
KyAgICBXVEZfTUFLRV9JU09fQUxMT0NBVEVEKFdlYktpdEF1ZGlvQ29udGV4dCk7CitwdWJsaWM6
CisgICAgLy8gQ3JlYXRlIGFuIFdlYktpdEF1ZGlvQ29udGV4dCBmb3IgcmVuZGVyaW5nIHRvIHRo
ZSBhdWRpbyBoYXJkd2FyZS4KKyAgICBzdGF0aWMgRXhjZXB0aW9uT3I8UmVmPFdlYktpdEF1ZGlv
Q29udGV4dD4+IGNyZWF0ZShEb2N1bWVudCYpOworCisgICAgdmlydHVhbCB+V2ViS2l0QXVkaW9D
b250ZXh0KCk7CisKKyAgICBib29sIGlzSW5pdGlhbGl6ZWQoKSBjb25zdCBmaW5hbDsKKworICAg
IGJvb2wgaXNPZmZsaW5lQ29udGV4dCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1faXNPZmZsaW5l
Q29udGV4dDsgfQorCisgICAgRG9jdW1lbnRJZGVudGlmaWVyIGhvc3RpbmdEb2N1bWVudElkZW50
aWZpZXIoKSBjb25zdCBmaW5hbDsKKworICAgIEF1ZGlvRGVzdGluYXRpb25Ob2RlKiBkZXN0aW5h
dGlvbigpIHsgcmV0dXJuIG1fZGVzdGluYXRpb25Ob2RlLmdldCgpOyB9CisgICAgc2l6ZV90IGN1
cnJlbnRTYW1wbGVGcmFtZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fZGVzdGluYXRpb25Ob2Rl
ID8gbV9kZXN0aW5hdGlvbk5vZGUtPmN1cnJlbnRTYW1wbGVGcmFtZSgpIDogMDsgfQorICAgIGRv
dWJsZSBjdXJyZW50VGltZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fZGVzdGluYXRpb25Ob2Rl
ID8gbV9kZXN0aW5hdGlvbk5vZGUtPmN1cnJlbnRUaW1lKCkgOiAwLjsgfQorICAgIGZsb2F0IHNh
bXBsZVJhdGUoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2Rlc3RpbmF0aW9uTm9kZSA/IG1fZGVz
dGluYXRpb25Ob2RlLT5zYW1wbGVSYXRlKCkgOiAwLmY7IH0KKyAgICB1bnNpZ25lZCBsb25nIGFj
dGl2ZVNvdXJjZUNvdW50KCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8dW5zaWduZWQgbG9u
Zz4obV9hY3RpdmVTb3VyY2VDb3VudCk7IH0KKworICAgIHZvaWQgaW5jcmVtZW50QWN0aXZlU291
cmNlQ291bnQoKSBmaW5hbDsKKyAgICB2b2lkIGRlY3JlbWVudEFjdGl2ZVNvdXJjZUNvdW50KCkg
ZmluYWw7CisKKyAgICBFeGNlcHRpb25PcjxSZWY8QXVkaW9CdWZmZXI+PiBjcmVhdGVCdWZmZXIo
dW5zaWduZWQgbnVtYmVyT2ZDaGFubmVscywgc2l6ZV90IG51bWJlck9mRnJhbWVzLCBmbG9hdCBz
YW1wbGVSYXRlKTsKKyAgICBFeGNlcHRpb25PcjxSZWY8QXVkaW9CdWZmZXI+PiBjcmVhdGVCdWZm
ZXIoQXJyYXlCdWZmZXImLCBib29sIG1peFRvTW9ubyk7CisKKyAgICAvLyBBc3luY2hyb25vdXMg
YXVkaW8gZmlsZSBkYXRhIGRlY29kaW5nLgorICAgIHZvaWQgZGVjb2RlQXVkaW9EYXRhKFJlZjxB
cnJheUJ1ZmZlcj4mJiwgUmVmUHRyPEF1ZGlvQnVmZmVyQ2FsbGJhY2s+JiYsIFJlZlB0cjxBdWRp
b0J1ZmZlckNhbGxiYWNrPiYmKTsKKworICAgIEF1ZGlvTGlzdGVuZXIqIGxpc3RlbmVyKCkgeyBy
ZXR1cm4gbV9saXN0ZW5lci5nZXQoKTsgfQorCisgICAgdm9pZCBzdXNwZW5kUmVuZGVyaW5nKERP
TVByb21pc2VEZWZlcnJlZDx2b2lkPiYmKTsKKyAgICB2b2lkIHJlc3VtZVJlbmRlcmluZyhET01Q
cm9taXNlRGVmZXJyZWQ8dm9pZD4mJik7CisgICAgdm9pZCBjbG9zZShET01Qcm9taXNlRGVmZXJy
ZWQ8dm9pZD4mJik7CisKKyAgICB1c2luZyBTdGF0ZSA9IEF1ZGlvQ29udGV4dFN0YXRlOworICAg
IFN0YXRlIHN0YXRlKCkgY29uc3Q7CisgICAgYm9vbCBpc0Nsb3NlZCgpIGNvbnN0IHsgcmV0dXJu
IG1fc3RhdGUgPT0gU3RhdGU6OkNsb3NlZDsgfQorCisgICAgYm9vbCB3b3VsZFRhaW50T3JpZ2lu
KGNvbnN0IFVSTCYpIGNvbnN0OworCisgICAgLy8gVGhlIEF1ZGlvTm9kZSBjcmVhdGUgbWV0aG9k
cyBhcmUgY2FsbGVkIG9uIHRoZSBtYWluIHRocmVhZCAoZnJvbSBKYXZhU2NyaXB0KS4KKyAgICBF
eGNlcHRpb25PcjxSZWY8QXVkaW9CdWZmZXJTb3VyY2VOb2RlPj4gY3JlYXRlQnVmZmVyU291cmNl
KCk7CisjaWYgRU5BQkxFKFZJREVPKQorICAgIEV4Y2VwdGlvbk9yPFJlZjxNZWRpYUVsZW1lbnRB
dWRpb1NvdXJjZU5vZGU+PiBjcmVhdGVNZWRpYUVsZW1lbnRTb3VyY2UoSFRNTE1lZGlhRWxlbWVu
dCYpOworI2VuZGlmCisjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKKyAgICBFeGNlcHRpb25PcjxS
ZWY8TWVkaWFTdHJlYW1BdWRpb1NvdXJjZU5vZGU+PiBjcmVhdGVNZWRpYVN0cmVhbVNvdXJjZShN
ZWRpYVN0cmVhbSYpOworICAgIEV4Y2VwdGlvbk9yPFJlZjxNZWRpYVN0cmVhbUF1ZGlvRGVzdGlu
YXRpb25Ob2RlPj4gY3JlYXRlTWVkaWFTdHJlYW1EZXN0aW5hdGlvbigpOworI2VuZGlmCisgICAg
RXhjZXB0aW9uT3I8UmVmPEdhaW5Ob2RlPj4gY3JlYXRlR2FpbigpOworICAgIEV4Y2VwdGlvbk9y
PFJlZjxCaXF1YWRGaWx0ZXJOb2RlPj4gY3JlYXRlQmlxdWFkRmlsdGVyKCk7CisgICAgRXhjZXB0
aW9uT3I8UmVmPFdhdmVTaGFwZXJOb2RlPj4gY3JlYXRlV2F2ZVNoYXBlcigpOworICAgIEV4Y2Vw
dGlvbk9yPFJlZjxEZWxheU5vZGU+PiBjcmVhdGVEZWxheShkb3VibGUgbWF4RGVsYXlUaW1lKTsK
KyAgICBFeGNlcHRpb25PcjxSZWY8V2ViS2l0QXVkaW9QYW5uZXJOb2RlPj4gY3JlYXRlUGFubmVy
KCk7CisgICAgRXhjZXB0aW9uT3I8UmVmPENvbnZvbHZlck5vZGU+PiBjcmVhdGVDb252b2x2ZXIo
KTsKKyAgICBFeGNlcHRpb25PcjxSZWY8RHluYW1pY3NDb21wcmVzc29yTm9kZT4+IGNyZWF0ZUR5
bmFtaWNzQ29tcHJlc3NvcigpOworICAgIEV4Y2VwdGlvbk9yPFJlZjxBbmFseXNlck5vZGU+PiBj
cmVhdGVBbmFseXNlcigpOworICAgIEV4Y2VwdGlvbk9yPFJlZjxTY3JpcHRQcm9jZXNzb3JOb2Rl
Pj4gY3JlYXRlU2NyaXB0UHJvY2Vzc29yKHNpemVfdCBidWZmZXJTaXplLCBzaXplX3QgbnVtYmVy
T2ZJbnB1dENoYW5uZWxzLCBzaXplX3QgbnVtYmVyT2ZPdXRwdXRDaGFubmVscyk7CisgICAgRXhj
ZXB0aW9uT3I8UmVmPENoYW5uZWxTcGxpdHRlck5vZGU+PiBjcmVhdGVDaGFubmVsU3BsaXR0ZXIo
c2l6ZV90IG51bWJlck9mT3V0cHV0cyk7CisgICAgRXhjZXB0aW9uT3I8UmVmPENoYW5uZWxNZXJn
ZXJOb2RlPj4gY3JlYXRlQ2hhbm5lbE1lcmdlcihzaXplX3QgbnVtYmVyT2ZJbnB1dHMpOworICAg
IEV4Y2VwdGlvbk9yPFJlZjxPc2NpbGxhdG9yTm9kZT4+IGNyZWF0ZU9zY2lsbGF0b3IoKTsKKyAg
ICBFeGNlcHRpb25PcjxSZWY8UGVyaW9kaWNXYXZlPj4gY3JlYXRlUGVyaW9kaWNXYXZlKEZsb2F0
MzJBcnJheSYgcmVhbCwgRmxvYXQzMkFycmF5JiBpbWFnaW5hcnkpOworCisgICAgLy8gV2hlbiBh
IHNvdXJjZSBub2RlIGhhcyBubyBtb3JlIHByb2Nlc3NpbmcgdG8gZG8gKGhhcyBmaW5pc2hlZCBw
bGF5aW5nKSwgdGhlbiBpdCB0ZWxscyB0aGUgY29udGV4dCB0byBkZXJlZmVyZW5jZSBpdC4KKyAg
ICB2b2lkIG5vdGlmeU5vZGVGaW5pc2hlZFByb2Nlc3NpbmcoQXVkaW9Ob2RlKikgZmluYWw7CisK
KyAgICAvLyBDYWxsZWQgYXQgdGhlIHN0YXJ0IG9mIGVhY2ggcmVuZGVyIHF1YW50dW0uCisgICAg
dm9pZCBoYW5kbGVQcmVSZW5kZXJUYXNrcygpIGZpbmFsOworCisgICAgLy8gQ2FsbGVkIGF0IHRo
ZSBlbmQgb2YgZWFjaCByZW5kZXIgcXVhbnR1bS4KKyAgICB2b2lkIGhhbmRsZVBvc3RSZW5kZXJU
YXNrcygpIGZpbmFsOworCisgICAgLy8gQ2FsbGVkIHBlcmlvZGljYWxseSBhdCB0aGUgZW5kIG9m
IGVhY2ggcmVuZGVyIHF1YW50dW0gdG8gZGVyZWZlcmVuY2UgZmluaXNoZWQgc291cmNlIG5vZGVz
LgorICAgIHZvaWQgZGVyZWZGaW5pc2hlZFNvdXJjZU5vZGVzKCk7CisKKyAgICAvLyBXZSBzY2hl
ZHVsZSBkZWxldGlvbiBvZiBhbGwgbWFya2VkIG5vZGVzIGF0IHRoZSBlbmQgb2YgZWFjaCByZWFs
dGltZSByZW5kZXIgcXVhbnR1bS4KKyAgICB2b2lkIG1hcmtGb3JEZWxldGlvbihBdWRpb05vZGUm
KSBmaW5hbDsKKyAgICB2b2lkIGRlbGV0ZU1hcmtlZE5vZGVzKCkgZmluYWw7CisKKyAgICAvLyBB
dWRpb0NvbnRleHQgY2FuIHB1bGwgbm9kZShzKSBhdCB0aGUgZW5kIG9mIGVhY2ggcmVuZGVyIHF1
YW50dW0gZXZlbiB3aGVuIHRoZXkgYXJlIG5vdCBjb25uZWN0ZWQgdG8gYW55IGRvd25zdHJlYW0g
bm9kZXMuCisgICAgLy8gVGhlc2UgdHdvIG1ldGhvZHMgYXJlIGNhbGxlZCBieSB0aGUgbm9kZXMg
d2hvIHdhbnQgdG8gYWRkL3JlbW92ZSB0aGVtc2VsdmVzIGludG8vZnJvbSB0aGUgYXV0b21hdGlj
IHB1bGwgbGlzdHMuCisgICAgdm9pZCBhZGRBdXRvbWF0aWNQdWxsTm9kZShBdWRpb05vZGUmKSBm
aW5hbDsKKyAgICB2b2lkIHJlbW92ZUF1dG9tYXRpY1B1bGxOb2RlKEF1ZGlvTm9kZSYpIGZpbmFs
OworCisgICAgLy8gQ2FsbGVkIHJpZ2h0IGJlZm9yZSBoYW5kbGVQb3N0UmVuZGVyVGFza3MoKSB0
byBoYW5kbGUgbm9kZXMgd2hpY2ggbmVlZCB0byBiZSBwdWxsZWQgZXZlbiB3aGVuIHRoZXkgYXJl
IG5vdCBjb25uZWN0ZWQgdG8gYW55dGhpbmcuCisgICAgdm9pZCBwcm9jZXNzQXV0b21hdGljUHVs
bE5vZGVzKHNpemVfdCBmcmFtZXNUb1Byb2Nlc3MpIGZpbmFsOworCisgICAgLy8gS2VlcHMgdHJh
Y2sgb2YgdGhlIG51bWJlciBvZiBjb25uZWN0aW9ucyBtYWRlLgorICAgIHZvaWQgaW5jcmVtZW50
Q29ubmVjdGlvbkNvdW50KCkgZmluYWwKKyAgICB7CisgICAgICAgIEFTU0VSVChpc01haW5UaHJl
YWQoKSk7CisgICAgICAgIG1fY29ubmVjdGlvbkNvdW50Kys7CisgICAgfQorCisgICAgdW5zaWdu
ZWQgY29ubmVjdGlvbkNvdW50KCkgY29uc3QgeyByZXR1cm4gbV9jb25uZWN0aW9uQ291bnQ7IH0K
KworICAgIC8vCisgICAgLy8gVGhyZWFkIFNhZmV0eSBhbmQgR3JhcGggTG9ja2luZzoKKyAgICAv
LworCisgICAgdm9pZCBzZXRBdWRpb1RocmVhZChUaHJlYWQmIHRocmVhZCkgZmluYWwgeyBtX2F1
ZGlvVGhyZWFkID0gJnRocmVhZDsgfSAvLyBGSVhNRTogY2hlY2sgZWl0aGVyIG5vdCBpbml0aWFs
aXplZCBvciB0aGUgc2FtZQorICAgIFRocmVhZCogYXVkaW9UaHJlYWQoKSBjb25zdCB7IHJldHVy
biBtX2F1ZGlvVGhyZWFkOyB9CisgICAgYm9vbCBpc0F1ZGlvVGhyZWFkKCkgY29uc3QgZmluYWw7
CisKKyAgICAvLyBSZXR1cm5zIHRydWUgb25seSBhZnRlciB0aGUgYXVkaW8gdGhyZWFkIGhhcyBi
ZWVuIHN0YXJ0ZWQgYW5kIHRoZW4gc2h1dGRvd24uCisgICAgYm9vbCBpc0F1ZGlvVGhyZWFkRmlu
aXNoZWQoKSBmaW5hbCB7IHJldHVybiBtX2lzQXVkaW9UaHJlYWRGaW5pc2hlZDsgfQorCisgICAg
Ly8gbXVzdFJlbGVhc2VMb2NrIGlzIHNldCB0byB0cnVlIGlmIHdlIGFjcXVpcmVkIHRoZSBsb2Nr
IGluIHRoaXMgbWV0aG9kIGNhbGwgYW5kIGNhbGxlciBtdXN0IHVubG9jaygpLCBmYWxzZSBpZiBp
dCB3YXMgcHJldmlvdXNseSBhY3F1aXJlZC4KKyAgICB2b2lkIGxvY2soYm9vbCYgbXVzdFJlbGVh
c2VMb2NrKSBmaW5hbDsKKworICAgIC8vIFJldHVybnMgdHJ1ZSBpZiB3ZSBvd24gdGhlIGxvY2su
CisgICAgLy8gbXVzdFJlbGVhc2VMb2NrIGlzIHNldCB0byB0cnVlIGlmIHdlIGFjcXVpcmVkIHRo
ZSBsb2NrIGluIHRoaXMgbWV0aG9kIGNhbGwgYW5kIGNhbGxlciBtdXN0IHVubG9jaygpLCBmYWxz
ZSBpZiBpdCB3YXMgcHJldmlvdXNseSBhY3F1aXJlZC4KKyAgICBib29sIHRyeUxvY2soYm9vbCYg
bXVzdFJlbGVhc2VMb2NrKSBmaW5hbDsKKworICAgIHZvaWQgdW5sb2NrKCkgZmluYWw7CisKKyAg
ICAvLyBSZXR1cm5zIHRydWUgaWYgdGhpcyB0aHJlYWQgb3ducyB0aGUgY29udGV4dCdzIGxvY2su
CisgICAgYm9vbCBpc0dyYXBoT3duZXIoKSBjb25zdCBmaW5hbDsKKworICAgIC8vIFJldHVybnMg
dGhlIG1heGltdW0gbnVtYmVyIG9mIGNoYW5uZWxzIHdlIGNhbiBzdXBwb3J0LgorICAgIHN0YXRp
YyB1bnNpZ25lZCBtYXhOdW1iZXJPZkNoYW5uZWxzKCkgeyByZXR1cm4gTWF4TnVtYmVyT2ZDaGFu
bmVsczsgfQorCisgICAgLy8gSW4gQXVkaW9Ob2RlOjpkZXJlZigpIGEgdHJ5TG9jaygpIGlzIHVz
ZWQgZm9yIGNhbGxpbmcgZmluaXNoRGVyZWYoKSwgYnV0IGlmIGl0IGZhaWxzIGtlZXAgdHJhY2sg
aGVyZS4KKyAgICB2b2lkIGFkZERlZmVycmVkRmluaXNoRGVyZWYoQXVkaW9Ob2RlKikgZmluYWw7
CisKKyAgICAvLyBJbiB0aGUgYXVkaW8gdGhyZWFkIGF0IHRoZSBzdGFydCBvZiBlYWNoIHJlbmRl
ciBjeWNsZSwgd2UnbGwgY2FsbCBoYW5kbGVEZWZlcnJlZEZpbmlzaERlcmVmcygpLgorICAgIHZv
aWQgaGFuZGxlRGVmZXJyZWRGaW5pc2hEZXJlZnMoKTsKKworICAgIC8vIE9ubHkgYWNjZXNzZWQg
d2hlbiB0aGUgZ3JhcGggbG9jayBpcyBoZWxkLgorICAgIHZvaWQgbWFya1N1bW1pbmdKdW5jdGlv
bkRpcnR5KEF1ZGlvU3VtbWluZ0p1bmN0aW9uKikgZmluYWw7CisgICAgdm9pZCBtYXJrQXVkaW9O
b2RlT3V0cHV0RGlydHkoQXVkaW9Ob2RlT3V0cHV0KikgZmluYWw7CisKKyAgICAvLyBNdXN0IGJl
IGNhbGxlZCBvbiBtYWluIHRocmVhZC4KKyAgICB2b2lkIHJlbW92ZU1hcmtlZFN1bW1pbmdKdW5j
dGlvbihBdWRpb1N1bW1pbmdKdW5jdGlvbiopIGZpbmFsOworCisgICAgLy8gRXZlbnRUYXJnZXQK
KyAgICBFdmVudFRhcmdldEludGVyZmFjZSBldmVudFRhcmdldEludGVyZmFjZSgpIGNvbnN0IGZp
bmFsOworCisgICAgdm9pZCBzdGFydFJlbmRlcmluZygpOworICAgIHZvaWQgZmluaXNoZWRSZW5k
ZXJpbmcoYm9vbCBkaWRSZW5kZXJpbmcpIGZpbmFsOworCisgICAgc3RhdGljIHVuc2lnbmVkIHNf
aGFyZHdhcmVDb250ZXh0Q291bnQ7CisKKyAgICAvLyBSZXN0cmljdGlvbnMgdG8gY2hhbmdlIGRl
ZmF1bHQgYmVoYXZpb3JzLgorICAgIEJlaGF2aW9yUmVzdHJpY3Rpb25zIGJlaGF2aW9yUmVzdHJp
Y3Rpb25zKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9yZXN0cmljdGlvbnM7IH0KKyAgICB2b2lk
IGFkZEJlaGF2aW9yUmVzdHJpY3Rpb24oQmVoYXZpb3JSZXN0cmljdGlvbnMgcmVzdHJpY3Rpb24p
IGZpbmFsIHsgbV9yZXN0cmljdGlvbnMgfD0gcmVzdHJpY3Rpb247IH0KKyAgICB2b2lkIHJlbW92
ZUJlaGF2aW9yUmVzdHJpY3Rpb24oQmVoYXZpb3JSZXN0cmljdGlvbnMgcmVzdHJpY3Rpb24pIGZp
bmFsIHsgbV9yZXN0cmljdGlvbnMgJj0gfnJlc3RyaWN0aW9uOyB9CisKKyAgICB2b2lkIGlzUGxh
eWluZ0F1ZGlvRGlkQ2hhbmdlKCkgZmluYWw7CisKKyAgICB2b2lkIG5vZGVXaWxsQmVnaW5QbGF5
YmFjaygpIGZpbmFsOworCisjaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECisgICAgY29uc3QgTG9n
Z2VyJiBsb2dnZXIoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2xvZ2dlci5nZXQoKTsgfQorICAg
IGNvbnN0IHZvaWQqIGxvZ0lkZW50aWZpZXIoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2xvZ0lk
ZW50aWZpZXI7IH0KKyAgICBXVEZMb2dDaGFubmVsJiBsb2dDaGFubmVsKCkgY29uc3QgZmluYWw7
CisgICAgY29uc3Qgdm9pZCogbmV4dEF1ZGlvTm9kZUxvZ0lkZW50aWZpZXIoKSBmaW5hbCB7IHJl
dHVybiBjaGlsZExvZ0lkZW50aWZpZXIobV9sb2dJZGVudGlmaWVyLCArK21fbmV4dEF1ZGlvTm9k
ZUlkZW50aWZpZXIpOyB9CisgICAgY29uc3Qgdm9pZCogbmV4dEF1ZGlvUGFyYW1ldGVyTG9nSWRl
bnRpZmllcigpIGZpbmFsIHsgcmV0dXJuIGNoaWxkTG9nSWRlbnRpZmllcihtX2xvZ0lkZW50aWZp
ZXIsICsrbV9uZXh0QXVkaW9QYXJhbWV0ZXJJZGVudGlmaWVyKTsgfQorI2VuZGlmCisKKyAgICB2
b2lkIHBvc3RUYXNrKFdURjo6RnVuY3Rpb248dm9pZCgpPiYmKSBmaW5hbDsKKyAgICBib29sIGlz
U3RvcHBlZCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1faXNTdG9wU2NoZWR1bGVkOyB9CisgICAg
Y29uc3QgU2VjdXJpdHlPcmlnaW4qIG9yaWdpbigpIGNvbnN0IGZpbmFsOworICAgIHZvaWQgYWRk
Q29uc29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZSwgTWVzc2FnZUxldmVsLCBjb25zdCBTdHJpbmcm
IG1lc3NhZ2UpIGZpbmFsOworCitwcm90ZWN0ZWQ6CisgICAgZXhwbGljaXQgV2ViS2l0QXVkaW9D
b250ZXh0KERvY3VtZW50Jik7CisgICAgV2ViS2l0QXVkaW9Db250ZXh0KERvY3VtZW50JiwgQXVk
aW9CdWZmZXIqIHJlbmRlclRhcmdldCk7CisKKyAgICBzdGF0aWMgYm9vbCBpc1NhbXBsZVJhdGVS
YW5nZUdvb2QoZmxvYXQgc2FtcGxlUmF0ZSk7CisgICAgdm9pZCBjbGVhclBlbmRpbmdBY3Rpdml0
eSgpOworICAgIHZvaWQgbWFrZVBlbmRpbmdBY3Rpdml0eSgpOworCitwcml2YXRlOgorICAgIHZv
aWQgY29uc3RydWN0Q29tbW9uKCk7CisKKyAgICB2b2lkIGxhenlJbml0aWFsaXplKCk7CisgICAg
dm9pZCB1bmluaXRpYWxpemUoKTsKKworICAgIGJvb2wgd2lsbEJlZ2luUGxheWJhY2soKTsKKyAg
ICBib29sIHdpbGxQYXVzZVBsYXliYWNrKCk7CisKKyAgICBib29sIHVzZXJHZXN0dXJlUmVxdWly
ZWRGb3JBdWRpb1N0YXJ0KCkgY29uc3QgeyByZXR1cm4gIWlzT2ZmbGluZUNvbnRleHQoKSAmJiBt
X3Jlc3RyaWN0aW9ucyAmIFJlcXVpcmVVc2VyR2VzdHVyZUZvckF1ZGlvU3RhcnRSZXN0cmljdGlv
bjsgfQorICAgIGJvb2wgcGFnZUNvbnNlbnRSZXF1aXJlZEZvckF1ZGlvU3RhcnQoKSBjb25zdCB7
IHJldHVybiAhaXNPZmZsaW5lQ29udGV4dCgpICYmIG1fcmVzdHJpY3Rpb25zICYgUmVxdWlyZVBh
Z2VDb25zZW50Rm9yQXVkaW9TdGFydFJlc3RyaWN0aW9uOyB9CisKKyAgICB2b2lkIHNldFN0YXRl
KFN0YXRlKTsKKworICAgIHZvaWQgY2xlYXIoKTsKKworICAgIHZvaWQgc2NoZWR1bGVOb2RlRGVs
ZXRpb24oKTsKKworICAgIHZvaWQgbWVkaWFDYW5TdGFydChEb2N1bWVudCYpIG92ZXJyaWRlOwor
CisgICAgLy8gRXZlbnRUYXJnZXQKKyAgICB2b2lkIGRpc3BhdGNoRXZlbnQoRXZlbnQmKSBmaW5h
bDsKKworICAgIC8vIE1lZGlhUHJvZHVjZXIKKyAgICBNZWRpYVByb2R1Y2VyOjpNZWRpYVN0YXRl
RmxhZ3MgbWVkaWFTdGF0ZSgpIGNvbnN0IG92ZXJyaWRlOworICAgIHZvaWQgcGFnZU11dGVkU3Rh
dGVEaWRDaGFuZ2UoKSBvdmVycmlkZTsKKworICAgIC8vIFRoZSBjb250ZXh0IGl0c2VsZiBrZWVw
cyBhIHJlZmVyZW5jZSB0byBhbGwgc291cmNlIG5vZGVzLiAgVGhlIHNvdXJjZSBub2RlcywgdGhl
biByZWZlcmVuY2UgYWxsIG5vZGVzIHRoZXkncmUgY29ubmVjdGVkIHRvLgorICAgIC8vIEluIHR1
cm4sIHRoZXNlIG5vZGVzIHJlZmVyZW5jZSBhbGwgbm9kZXMgdGhleSdyZSBjb25uZWN0ZWQgdG8u
ICBBbGwgbm9kZXMgYXJlIHVsdGltYXRlbHkgY29ubmVjdGVkIHRvIHRoZSBBdWRpb0Rlc3RpbmF0
aW9uTm9kZS4KKyAgICAvLyBXaGVuIHRoZSBjb250ZXh0IGRlcmVmZXJlbmNlcyBhIHNvdXJjZSBu
b2RlLCBpdCB3aWxsIGJlIGRlYWN0aXZhdGVkIGZyb20gdGhlIHJlbmRlcmluZyBncmFwaCBhbG9u
ZyB3aXRoIGFsbCBvdGhlciBub2RlcyBpdCBpcworICAgIC8vIHVuaXF1ZWx5IGNvbm5lY3RlZCB0
by4gIFNlZSB0aGUgQXVkaW9Ob2RlOjpyZWYoKSBhbmQgQXVkaW9Ob2RlOjpkZXJlZigpIG1ldGhv
ZHMgZm9yIG1vcmUgZGV0YWlscy4KKyAgICB2b2lkIHJlZk5vZGUoQXVkaW9Ob2RlJik7CisgICAg
dm9pZCBkZXJlZk5vZGUoQXVkaW9Ob2RlJik7CisKKyAgICAvLyBBY3RpdmVET01PYmplY3QgQVBJ
LgorICAgIHZvaWQgc3VzcGVuZChSZWFzb25Gb3JTdXNwZW5zaW9uKSBmaW5hbDsKKyAgICB2b2lk
IHJlc3VtZSgpIGZpbmFsOworICAgIHZvaWQgc3RvcCgpIG92ZXJyaWRlOworICAgIGNvbnN0IGNo
YXIqIGFjdGl2ZURPTU9iamVjdE5hbWUoKSBjb25zdCBvdmVycmlkZTsKKworICAgIC8vIFdoZW4g
dGhlIGNvbnRleHQgZ29lcyBhd2F5LCB0aGVyZSBtaWdodCBzdGlsbCBiZSBzb21lIHNvdXJjZXMg
d2hpY2ggaGF2ZW4ndCBmaW5pc2hlZCBwbGF5aW5nLgorICAgIC8vIE1ha2Ugc3VyZSB0byBkZXJl
ZmVyZW5jZSB0aGVtIGhlcmUuCisgICAgdm9pZCBkZXJlZlVuZmluaXNoZWRTb3VyY2VOb2Rlcygp
OworCisgICAgLy8gUGxhdGZvcm1NZWRpYVNlc3Npb25DbGllbnQKKyAgICBQbGF0Zm9ybU1lZGlh
U2Vzc2lvbjo6TWVkaWFUeXBlIG1lZGlhVHlwZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIFBs
YXRmb3JtTWVkaWFTZXNzaW9uOjpNZWRpYVR5cGU6OldlYkF1ZGlvOyB9CisgICAgUGxhdGZvcm1N
ZWRpYVNlc3Npb246Ok1lZGlhVHlwZSBwcmVzZW50YXRpb25UeXBlKCkgY29uc3Qgb3ZlcnJpZGUg
eyByZXR1cm4gUGxhdGZvcm1NZWRpYVNlc3Npb246Ok1lZGlhVHlwZTo6V2ViQXVkaW87IH0KKyAg
ICB2b2lkIG1heVJlc3VtZVBsYXliYWNrKGJvb2wgc2hvdWxkUmVzdW1lKSBvdmVycmlkZTsKKyAg
ICB2b2lkIHN1c3BlbmRQbGF5YmFjaygpIG92ZXJyaWRlOworICAgIGJvb2wgY2FuUmVjZWl2ZVJl
bW90ZUNvbnRyb2xDb21tYW5kcygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9Cisg
ICAgdm9pZCBkaWRSZWNlaXZlUmVtb3RlQ29udHJvbENvbW1hbmQoUGxhdGZvcm1NZWRpYVNlc3Np
b246OlJlbW90ZUNvbnRyb2xDb21tYW5kVHlwZSwgY29uc3QgUGxhdGZvcm1NZWRpYVNlc3Npb246
OlJlbW90ZUNvbW1hbmRBcmd1bWVudCopIG92ZXJyaWRlIHsgfQorICAgIGJvb2wgc3VwcG9ydHNT
ZWVraW5nKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KKyAgICBib29sIHNob3Vs
ZE92ZXJyaWRlQmFja2dyb3VuZFBsYXliYWNrUmVzdHJpY3Rpb24oUGxhdGZvcm1NZWRpYVNlc3Np
b246OkludGVycnVwdGlvblR5cGUpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9Cisg
ICAgYm9vbCBjYW5Qcm9kdWNlQXVkaW8oKSBjb25zdCBmaW5hbCB7IHJldHVybiB0cnVlOyB9Cisg
ICAgYm9vbCBpc1N1c3BlbmRlZCgpIGNvbnN0IGZpbmFsOworCisgICAgdm9pZCB2aXNpYmlsaXR5
U3RhdGVDaGFuZ2VkKCkgZmluYWw7CisKKyAgICBib29sIGlzQXVkaW9Db250ZXh0KCkgY29uc3Qg
ZmluYWwgeyByZXR1cm4gZmFsc2U7IH0KKyAgICBib29sIGlzV2ViS2l0QXVkaW9Db250ZXh0KCkg
Y29uc3QgZmluYWwgeyByZXR1cm4gdHJ1ZTsgfQorCisgICAgdm9pZCBoYW5kbGVEaXJ0eUF1ZGlv
U3VtbWluZ0p1bmN0aW9ucygpOworICAgIHZvaWQgaGFuZGxlRGlydHlBdWRpb05vZGVPdXRwdXRz
KCk7CisKKyAgICB2b2lkIGFkZFJlYWN0aW9uKFN0YXRlLCBET01Qcm9taXNlRGVmZXJyZWQ8dm9p
ZD4mJik7CisgICAgdm9pZCB1cGRhdGVBdXRvbWF0aWNQdWxsTm9kZXMoKTsKKworI2lmICFSRUxF
QVNFX0xPR19ESVNBQkxFRAorICAgIGNvbnN0IGNoYXIqIGxvZ0NsYXNzTmFtZSgpIGNvbnN0IGZp
bmFsIHsgcmV0dXJuICJXZWJLaXRBdWRpb0NvbnRleHQiOyB9CisKKyAgICBSZWY8TG9nZ2VyPiBt
X2xvZ2dlcjsKKyAgICBjb25zdCB2b2lkKiBtX2xvZ0lkZW50aWZpZXI7CisgICAgdWludDY0X3Qg
bV9uZXh0QXVkaW9Ob2RlSWRlbnRpZmllciB7IDAgfTsKKyAgICB1aW50NjRfdCBtX25leHRBdWRp
b1BhcmFtZXRlcklkZW50aWZpZXIgeyAwIH07CisjZW5kaWYKKworICAgIC8vIE9ubHkgYWNjZXNz
ZWQgaW4gdGhlIGF1ZGlvIHRocmVhZC4KKyAgICBWZWN0b3I8QXVkaW9Ob2RlKj4gbV9maW5pc2hl
ZE5vZGVzOworCisgICAgLy8gV2UgZG9uJ3QgdXNlIFJlZlB0cjxBdWRpb05vZGU+IGhlcmUgYmVj
YXVzZSBBdWRpb05vZGUgaGFzIGEgbW9yZSBjb21wbGV4IHJlZigpIC8gZGVyZWYoKSBpbXBsZW1l
bnRhdGlvbgorICAgIC8vIHdpdGggYW4gb3B0aW9uYWwgYXJndW1lbnQgZm9yIHJlZlR5cGUuICBX
ZSBuZWVkIHRvIHVzZSB0aGUgc3BlY2lhbCByZWZUeXBlOiBSZWZUeXBlQ29ubmVjdGlvbgorICAg
IC8vIEVpdGhlciBhY2Nlc3NlZCB3aGVuIHRoZSBncmFwaCBsb2NrIGlzIGhlbGQsIG9yIG9uIHRo
ZSBtYWluIHRocmVhZCB3aGVuIHRoZSBhdWRpbyB0aHJlYWQgaGFzIGZpbmlzaGVkLgorICAgIFZl
Y3RvcjxBdWRpb05vZGUqPiBtX3JlZmVyZW5jZWROb2RlczsKKworICAgIC8vIEFjY3VtdWxhdGUg
bm9kZXMgd2hpY2ggbmVlZCB0byBiZSBkZWxldGVkIGhlcmUuCisgICAgLy8gVGhpcyBpcyBjb3Bp
ZWQgdG8gbV9ub2Rlc1RvRGVsZXRlIGF0IHRoZSBlbmQgb2YgYSByZW5kZXIgY3ljbGUgaW4gaGFu
ZGxlUG9zdFJlbmRlclRhc2tzKCksIHdoZXJlIHdlJ3JlIGFzc3VyZWQgb2YgYSBzdGFibGUgZ3Jh
cGgKKyAgICAvLyBzdGF0ZSB3aGljaCB3aWxsIGhhdmUgbm8gcmVmZXJlbmNlcyB0byBhbnkgb2Yg
dGhlIG5vZGVzIGluIG1fbm9kZXNUb0RlbGV0ZSBvbmNlIHRoZSBjb250ZXh0IGxvY2sgaXMgcmVs
ZWFzZWQKKyAgICAvLyAod2hlbiBoYW5kbGVQb3N0UmVuZGVyVGFza3MoKSBoYXMgY29tcGxldGVk
KS4KKyAgICBWZWN0b3I8QXVkaW9Ob2RlKj4gbV9ub2Rlc01hcmtlZEZvckRlbGV0aW9uOworCisg
ICAgLy8gVGhleSB3aWxsIGJlIHNjaGVkdWxlZCBmb3IgZGVsZXRpb24gKG9uIHRoZSBtYWluIHRo
cmVhZCkgYXQgdGhlIGVuZCBvZiBhIHJlbmRlciBjeWNsZSAoaW4gcmVhbHRpbWUgdGhyZWFkKS4K
KyAgICBWZWN0b3I8QXVkaW9Ob2RlKj4gbV9ub2Rlc1RvRGVsZXRlOworCisgICAgYm9vbCBtX2lz
RGVsZXRpb25TY2hlZHVsZWQgeyBmYWxzZSB9OworICAgIGJvb2wgbV9pc1N0b3BTY2hlZHVsZWQg
eyBmYWxzZSB9OworICAgIGJvb2wgbV9pc0luaXRpYWxpemVkIHsgZmFsc2UgfTsKKyAgICBib29s
IG1faXNBdWRpb1RocmVhZEZpbmlzaGVkIHsgZmFsc2UgfTsKKyAgICBib29sIG1fYXV0b21hdGlj
UHVsbE5vZGVzTmVlZFVwZGF0aW5nIHsgZmFsc2UgfTsKKyAgICBib29sIG1faXNPZmZsaW5lQ29u
dGV4dCB7IGZhbHNlIH07CisKKyAgICAvLyBPbmx5IGFjY2Vzc2VkIHdoZW4gdGhlIGdyYXBoIGxv
Y2sgaXMgaGVsZC4KKyAgICBIYXNoU2V0PEF1ZGlvU3VtbWluZ0p1bmN0aW9uKj4gbV9kaXJ0eVN1
bW1pbmdKdW5jdGlvbnM7CisgICAgSGFzaFNldDxBdWRpb05vZGVPdXRwdXQqPiBtX2RpcnR5QXVk
aW9Ob2RlT3V0cHV0czsKKworICAgIC8vIEZvciB0aGUgc2FrZSBvZiB0aHJlYWQgc2FmZXR5LCB3
ZSBtYWludGFpbiBhIHNlcGVyYXRlIFZlY3RvciBvZiBhdXRvbWF0aWMgcHVsbCBub2RlcyBmb3Ig
cmVuZGVyaW5nIGluIG1fcmVuZGVyaW5nQXV0b21hdGljUHVsbE5vZGVzLgorICAgIC8vIEl0IHdp
bGwgYmUgY29waWVkIGZyb20gbV9hdXRvbWF0aWNQdWxsTm9kZXMgYnkgdXBkYXRlQXV0b21hdGlj
UHVsbE5vZGVzKCkgYXQgdGhlIHZlcnkgc3RhcnQgb3IgZW5kIG9mIHRoZSByZW5kZXJpbmcgcXVh
bnR1bS4KKyAgICBIYXNoU2V0PEF1ZGlvTm9kZSo+IG1fYXV0b21hdGljUHVsbE5vZGVzOworICAg
IFZlY3RvcjxBdWRpb05vZGUqPiBtX3JlbmRlcmluZ0F1dG9tYXRpY1B1bGxOb2RlczsKKyAgICAv
LyBPbmx5IGFjY2Vzc2VkIGluIHRoZSBhdWRpbyB0aHJlYWQuCisgICAgVmVjdG9yPEF1ZGlvTm9k
ZSo+IG1fZGVmZXJyZWRGaW5pc2hEZXJlZkxpc3Q7CisgICAgVmVjdG9yPFZlY3RvcjxET01Qcm9t
aXNlRGVmZXJyZWQ8dm9pZD4+PiBtX3N0YXRlUmVhY3Rpb25zOworCisgICAgc3RkOjp1bmlxdWVf
cHRyPFBsYXRmb3JtTWVkaWFTZXNzaW9uPiBtX21lZGlhU2Vzc2lvbjsKKyAgICBVbmlxdWVSZWY8
TWFpblRocmVhZEdlbmVyaWNFdmVudFF1ZXVlPiBtX2V2ZW50UXVldWU7CisKKyAgICBSZWZQdHI8
QXVkaW9CdWZmZXI+IG1fcmVuZGVyVGFyZ2V0OworICAgIFJlZlB0cjxBdWRpb0Rlc3RpbmF0aW9u
Tm9kZT4gbV9kZXN0aW5hdGlvbk5vZGU7CisgICAgUmVmUHRyPEF1ZGlvTGlzdGVuZXI+IG1fbGlz
dGVuZXI7CisKKyAgICB1bnNpZ25lZCBtX2Nvbm5lY3Rpb25Db3VudCB7IDAgfTsKKworICAgIC8v
IEdyYXBoIGxvY2tpbmcuCisgICAgTG9jayBtX2NvbnRleHRHcmFwaE11dGV4OworICAgIC8vIEZJ
WE1FOiBVc2luZyB2b2xhdGlsZSBzZWVtcyBpbmNvcnJlY3QuCisgICAgLy8gaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4MDMzMgorICAgIFRocmVhZCogdm9sYXRpbGUg
bV9hdWRpb1RocmVhZCB7IG51bGxwdHIgfTsKKyAgICBUaHJlYWQqIHZvbGF0aWxlIG1fZ3JhcGhP
d25lclRocmVhZCB7IG51bGxwdHIgfTsgLy8gaWYgdGhlIGxvY2sgaXMgaGVsZCB0aGVuIHRoaXMg
aXMgdGhlIHRocmVhZCB3aGljaCBvd25zIGl0LCBvdGhlcndpc2UgPT0gbnVsbHB0ci4KKworICAg
IHN0ZDo6dW5pcXVlX3B0cjxBc3luY0F1ZGlvRGVjb2Rlcj4gbV9hdWRpb0RlY29kZXI7CisKKyAg
ICAvLyBUaGlzIGlzIGNvbnNpZGVyaW5nIDMyIGlzIGxhcmdlIGVub3VnaCBmb3IgbXVsdGlwbGUg
Y2hhbm5lbHMgYXVkaW8uCisgICAgLy8gSXQgaXMgc29tZXdoYXQgYXJiaXRyYXJ5IGFuZCBjb3Vs
ZCBiZSBpbmNyZWFzZWQgaWYgbmVjZXNzYXJ5LgorICAgIGVudW0geyBNYXhOdW1iZXJPZkNoYW5u
ZWxzID0gMzIgfTsKKworICAgIC8vIE51bWJlciBvZiBBdWRpb0J1ZmZlclNvdXJjZU5vZGVzIHRo
YXQgYXJlIGFjdGl2ZSAocGxheWluZykuCisgICAgc3RkOjphdG9taWM8aW50PiBtX2FjdGl2ZVNv
dXJjZUNvdW50IHsgMCB9OworCisgICAgQmVoYXZpb3JSZXN0cmljdGlvbnMgbV9yZXN0cmljdGlv
bnMgeyBOb1Jlc3RyaWN0aW9ucyB9OworCisgICAgU3RhdGUgbV9zdGF0ZSB7IFN0YXRlOjpTdXNw
ZW5kZWQgfTsKKyAgICBSZWZQdHI8UGVuZGluZ0FjdGl2aXR5PFdlYktpdEF1ZGlvQ29udGV4dD4+
IG1fcGVuZGluZ0FjdGl2aXR5OworfTsKKworaW5saW5lIEF1ZGlvQ29udGV4dFN0YXRlIFdlYktp
dEF1ZGlvQ29udGV4dDo6c3RhdGUoKSBjb25zdAoreworICAgIHJldHVybiBtX3N0YXRlOworfQor
Cit9IC8vIFdlYkNvcmUKKworU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19CRUdJTihXZWJDb3JlOjpX
ZWJLaXRBdWRpb0NvbnRleHQpCisgICAgc3RhdGljIGJvb2wgaXNUeXBlKGNvbnN0IFdlYkNvcmU6
OkF1ZGlvQ29udGV4dEJhc2UmIGNvbnRleHQpIHsgcmV0dXJuIGNvbnRleHQuaXNXZWJLaXRBdWRp
b0NvbnRleHQoKTsgfQorU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19FTkQoKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9XZWJLaXRBdWRpb0NvbnRleHQuaWRsIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9XZWJLaXRBdWRpb0NvbnRleHQuaWRsCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjU2OTVjNzM2Njk4Njc4ZWIzNmVkNjQ4OTNiZDAyYjRjZDhiZGUwMGIKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1dlYktpdEF1ZGlv
Q29udGV4dC5pZGwKQEAgLTAsMCArMSw5MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCwg
R29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMSBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAq
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTgorICogQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
KyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTCisgKiBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCitbCisgICAgQWN0aXZlRE9N
T2JqZWN0LAorICAgIENvbmRpdGlvbmFsPVdFQl9BVURJTywKKyAgICBFbmFibGVkQnlTZXR0aW5n
PVdlYkF1ZGlvLAorICAgIEV4cG9ydE1hY3JvPVdFQkNPUkVfRVhQT1JULAorICAgIEludGVyZmFj
ZU5hbWU9d2Via2l0QXVkaW9Db250ZXh0LAorXSBpbnRlcmZhY2UgV2ViS2l0QXVkaW9Db250ZXh0
IDogRXZlbnRUYXJnZXQgeworICAgIFtDYWxsV2l0aD1Eb2N1bWVudCwgTWF5VGhyb3dFeGNlcHRp
b25dIGNvbnN0cnVjdG9yKCk7CisKKyAgICAvLyBBbGwgcmVuZGVyZWQgYXVkaW8gdWx0aW1hdGVs
eSBjb25uZWN0cyB0byBkZXN0aW5hdGlvbiwgd2hpY2ggcmVwcmVzZW50cyB0aGUgYXVkaW8gaGFy
ZHdhcmUuCisgICAgcmVhZG9ubHkgYXR0cmlidXRlIEF1ZGlvRGVzdGluYXRpb25Ob2RlIGRlc3Rp
bmF0aW9uOworCisgICAgLy8gQWxsIHNjaGVkdWxlZCB0aW1lcyBhcmUgcmVsYXRpdmUgdG8gdGhp
cyB0aW1lIGluIHNlY29uZHMuCisgICAgcmVhZG9ubHkgYXR0cmlidXRlIHVucmVzdHJpY3RlZCBk
b3VibGUgY3VycmVudFRpbWU7CisKKyAgICAvLyBBbGwgQXVkaW9Ob2RlcyBpbiB0aGUgY29udGV4
dCBydW4gYXQgdGhpcyBzYW1wbGUtcmF0ZSAoc2FtcGxlLWZyYW1lcyBwZXIgc2Vjb25kKS4KKyAg
ICByZWFkb25seSBhdHRyaWJ1dGUgdW5yZXN0cmljdGVkIGZsb2F0IHNhbXBsZVJhdGU7CisKKyAg
ICAvLyBBbGwgcGFubmluZyBpcyByZWxhdGl2ZSB0byB0aGlzIGxpc3RlbmVyLgorICAgIHJlYWRv
bmx5IGF0dHJpYnV0ZSBBdWRpb0xpc3RlbmVyIGxpc3RlbmVyOworCisgICAgW0ltcGxlbWVudGVk
QXM9c3VzcGVuZFJlbmRlcmluZ10gUHJvbWlzZTx2b2lkPiBzdXNwZW5kKCk7CisgICAgW0ltcGxl
bWVudGVkQXM9cmVzdW1lUmVuZGVyaW5nXSBQcm9taXNlPHZvaWQ+IHJlc3VtZSgpOworICAgIFBy
b21pc2U8dm9pZD4gY2xvc2UoKTsKKworICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBBdWRpb0NvbnRl
eHRTdGF0ZSBzdGF0ZTsKKyAgICBhdHRyaWJ1dGUgRXZlbnRIYW5kbGVyIG9uc3RhdGVjaGFuZ2U7
CisKKyAgICAvLyBOdW1iZXIgb2YgQXVkaW9CdWZmZXJTb3VyY2VOb2RlcyB0aGF0IGFyZSBjdXJy
ZW50bHkgcGxheWluZy4KKyAgICByZWFkb25seSBhdHRyaWJ1dGUgdW5zaWduZWQgbG9uZyBhY3Rp
dmVTb3VyY2VDb3VudDsKKworICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gQXVkaW9CdWZmZXIgY3Jl
YXRlQnVmZmVyKHVuc2lnbmVkIGxvbmcgbnVtYmVyT2ZDaGFubmVscywgdW5zaWduZWQgbG9uZyBu
dW1iZXJPZkZyYW1lcywgdW5yZXN0cmljdGVkIGZsb2F0IHNhbXBsZVJhdGUpOworICAgIFtNYXlU
aHJvd0V4Y2VwdGlvbl0gQXVkaW9CdWZmZXIgY3JlYXRlQnVmZmVyKEFycmF5QnVmZmVyIGJ1ZmZl
ciwgYm9vbGVhbiBtaXhUb01vbm8pOworCisgICAgLy8gQXN5bmNocm9ub3VzIGF1ZGlvIGZpbGUg
ZGF0YSBkZWNvZGluZy4KKyAgICAvLyBGSVhNRTogc3VjY2Vzc0NhbGxiYWNrIHNob3VsZCBiZSBv
cHRpb25hbCBhbmQgdGhlIGNhbGxiYWNrcyBzaG91bGQgbm90IGJlIG51bGxhYmxlLiBUaGlzIHNo
b3VsZCBhbHNvIHJldHVybiBhIFByb21pc2UuCisgICAgdm9pZCBkZWNvZGVBdWRpb0RhdGEoQXJy
YXlCdWZmZXIgYXVkaW9EYXRhLCBBdWRpb0J1ZmZlckNhbGxiYWNrPyBzdWNjZXNzQ2FsbGJhY2ss
IG9wdGlvbmFsIEF1ZGlvQnVmZmVyQ2FsbGJhY2s/IGVycm9yQ2FsbGJhY2spOworCisgICAgLy8g
U291cmNlcworICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gQXVkaW9CdWZmZXJTb3VyY2VOb2RlIGNy
ZWF0ZUJ1ZmZlclNvdXJjZSgpOworCisgICAgW0NvbmRpdGlvbmFsPVZJREVPLCBNYXlUaHJvd0V4
Y2VwdGlvbl0gTWVkaWFFbGVtZW50QXVkaW9Tb3VyY2VOb2RlIGNyZWF0ZU1lZGlhRWxlbWVudFNv
dXJjZShIVE1MTWVkaWFFbGVtZW50IG1lZGlhRWxlbWVudCk7CisKKyAgICBbQ29uZGl0aW9uYWw9
TUVESUFfU1RSRUFNLCBNYXlUaHJvd0V4Y2VwdGlvbl0gTWVkaWFTdHJlYW1BdWRpb1NvdXJjZU5v
ZGUgY3JlYXRlTWVkaWFTdHJlYW1Tb3VyY2UoTWVkaWFTdHJlYW0gbWVkaWFTdHJlYW0pOworICAg
IFtDb25kaXRpb25hbD1NRURJQV9TVFJFQU0sIE1heVRocm93RXhjZXB0aW9uXSBNZWRpYVN0cmVh
bUF1ZGlvRGVzdGluYXRpb25Ob2RlIGNyZWF0ZU1lZGlhU3RyZWFtRGVzdGluYXRpb24oKTsKKwor
ICAgIC8vIFByb2Nlc3Npbmcgbm9kZXMKKyAgICBbTWF5VGhyb3dFeGNlcHRpb25dIEdhaW5Ob2Rl
IGNyZWF0ZUdhaW4oKTsKKyAgICBbTWF5VGhyb3dFeGNlcHRpb25dIERlbGF5Tm9kZSBjcmVhdGVE
ZWxheShvcHRpb25hbCB1bnJlc3RyaWN0ZWQgZG91YmxlIG1heERlbGF5VGltZSA9IDEpOworICAg
IFtNYXlUaHJvd0V4Y2VwdGlvbl0gQmlxdWFkRmlsdGVyTm9kZSBjcmVhdGVCaXF1YWRGaWx0ZXIo
KTsKKyAgICBbTWF5VGhyb3dFeGNlcHRpb25dIFdhdmVTaGFwZXJOb2RlIGNyZWF0ZVdhdmVTaGFw
ZXIoKTsKKyAgICBbTWF5VGhyb3dFeGNlcHRpb25dIFdlYktpdEF1ZGlvUGFubmVyTm9kZSBjcmVh
dGVQYW5uZXIoKTsKKyAgICBbTWF5VGhyb3dFeGNlcHRpb25dIENvbnZvbHZlck5vZGUgY3JlYXRl
Q29udm9sdmVyKCk7CisgICAgW01heVRocm93RXhjZXB0aW9uXSBEeW5hbWljc0NvbXByZXNzb3JO
b2RlIGNyZWF0ZUR5bmFtaWNzQ29tcHJlc3NvcigpOworICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0g
QW5hbHlzZXJOb2RlIGNyZWF0ZUFuYWx5c2VyKCk7CisgICAgW01heVRocm93RXhjZXB0aW9uXSBT
Y3JpcHRQcm9jZXNzb3JOb2RlIGNyZWF0ZVNjcmlwdFByb2Nlc3NvcihvcHRpb25hbCB1bnNpZ25l
ZCBsb25nIGJ1ZmZlclNpemUgPSAwLCBvcHRpb25hbCB1bnNpZ25lZCBsb25nIG51bWJlck9mSW5w
dXRDaGFubmVscyA9IDIsIG9wdGlvbmFsIHVuc2lnbmVkIGxvbmcgbnVtYmVyT2ZPdXRwdXRDaGFu
bmVscyA9IDIpOworICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gT3NjaWxsYXRvck5vZGUgY3JlYXRl
T3NjaWxsYXRvcigpOworICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gUGVyaW9kaWNXYXZlIGNyZWF0
ZVBlcmlvZGljV2F2ZShGbG9hdDMyQXJyYXkgcmVhbCwgRmxvYXQzMkFycmF5IGltYWcpOworCisg
ICAgLy8gQ2hhbm5lbCBzcGxpdHRpbmcgYW5kIG1lcmdpbmcKKyAgICBbTWF5VGhyb3dFeGNlcHRp
b25dIENoYW5uZWxTcGxpdHRlck5vZGUgY3JlYXRlQ2hhbm5lbFNwbGl0dGVyKG9wdGlvbmFsIHVu
c2lnbmVkIGxvbmcgbnVtYmVyT2ZPdXRwdXRzID0gNik7CisgICAgW01heVRocm93RXhjZXB0aW9u
XSBDaGFubmVsTWVyZ2VyTm9kZSBjcmVhdGVDaGFubmVsTWVyZ2VyKG9wdGlvbmFsIHVuc2lnbmVk
IGxvbmcgbnVtYmVyT2ZJbnB1dHMgPSA2KTsKKworICAgIC8vIE9mZmxpbmUgcmVuZGVyaW5nCisg
ICAgLy8gdm9pZCBwcmVwYXJlT2ZmbGluZUJ1ZmZlclJlbmRlcmluZyh1bnNpZ25lZCBsb25nIG51
bWJlck9mQ2hhbm5lbHMsIHVuc2lnbmVkIGxvbmcgbnVtYmVyT2ZGcmFtZXMsIHVucmVzdHJpY3Rl
ZCBmbG9hdCBzYW1wbGVSYXRlKTsKKyAgICBhdHRyaWJ1dGUgRXZlbnRIYW5kbGVyIG9uY29tcGxl
dGU7CisgICAgdm9pZCBzdGFydFJlbmRlcmluZygpOworfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vV2ViS2l0QXVkaW9QYW5uZXJOb2RlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vV2ViS2l0QXVkaW9QYW5uZXJOb2RlLmNwcApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi4yNThmNDVlN2NmZDkxYzgyMmM2OTkyZTc1OGRhYTc1OGFkNzkwMmUyCi0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9XZWJLaXRBdWRpb1Bh
bm5lck5vZGUuY3BwCkBAIC0wLDAgKzEsMzYzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEw
LCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAg
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJF
CisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04KKyAqIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUworICogU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNv
bmZpZy5oIgorI2luY2x1ZGUgIldlYktpdEF1ZGlvUGFubmVyTm9kZS5oIgorCisjaWYgRU5BQkxF
KFdFQl9BVURJTykKKworI2luY2x1ZGUgIkF1ZGlvQnVmZmVyU291cmNlTm9kZS5oIgorI2luY2x1
ZGUgIkF1ZGlvQnVzLmgiCisjaW5jbHVkZSAiQXVkaW9Db250ZXh0LmgiCisjaW5jbHVkZSAiQXVk
aW9Ob2RlSW5wdXQuaCIKKyNpbmNsdWRlICJBdWRpb05vZGVPdXRwdXQuaCIKKyNpbmNsdWRlICJI
UlRGRGF0YWJhc2VMb2FkZXIuaCIKKyNpbmNsdWRlICJIUlRGUGFubmVyLmgiCisjaW5jbHVkZSAi
U2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgorI2luY2x1ZGUgPHd0Zi9Jc29NYWxsb2NJbmxpbmVz
Lmg+CisjaW5jbHVkZSA8d3RmL01hdGhFeHRyYXMuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgewor
CitXVEZfTUFLRV9JU09fQUxMT0NBVEVEX0lNUEwoV2ViS2l0QXVkaW9QYW5uZXJOb2RlKTsKKwor
c3RhdGljIHZvaWQgZml4TkFOcyhkb3VibGUgJngpCit7CisgICAgaWYgKHN0ZDo6aXNuYW4oeCkg
fHwgc3RkOjppc2luZih4KSkKKyAgICAgICAgeCA9IDAuMDsKK30KKworV2ViS2l0QXVkaW9QYW5u
ZXJOb2RlOjpXZWJLaXRBdWRpb1Bhbm5lck5vZGUoV2ViS2l0QXVkaW9Db250ZXh0JiBjb250ZXh0
LCBmbG9hdCBzYW1wbGVSYXRlKQorICAgIDogUGFubmVyTm9kZUJhc2UoY29udGV4dCwgc2FtcGxl
UmF0ZSkKKyAgICAsIG1fcGFubmluZ01vZGVsKFBhbm5pbmdNb2RlbFR5cGU6OkhSVEYpCisgICAg
LCBtX2xhc3RHYWluKC0xLjApCisgICAgLCBtX2Nvbm5lY3Rpb25Db3VudCgwKQoreworICAgIHNl
dE5vZGVUeXBlKE5vZGVUeXBlUGFubmVyKTsKKworICAgIC8vIExvYWQgdGhlIEhSVEYgZGF0YWJh
c2UgYXN5bmNocm9ub3VzbHkgc28gd2UgZG9uJ3QgYmxvY2sgdGhlIEphdmFzY3JpcHQgdGhyZWFk
IHdoaWxlIGNyZWF0aW5nIHRoZSBIUlRGIGRhdGFiYXNlLgorICAgIG1faHJ0ZkRhdGFiYXNlTG9h
ZGVyID0gSFJURkRhdGFiYXNlTG9hZGVyOjpjcmVhdGVBbmRMb2FkQXN5bmNocm9ub3VzbHlJZk5l
Y2Vzc2FyeShjb250ZXh0LnNhbXBsZVJhdGUoKSk7CisKKyAgICBhZGRJbnB1dChtYWtlVW5pcXVl
PEF1ZGlvTm9kZUlucHV0Pih0aGlzKSk7CisgICAgYWRkT3V0cHV0KG1ha2VVbmlxdWU8QXVkaW9O
b2RlT3V0cHV0Pih0aGlzLCAyKSk7CisKKyAgICAvLyBOb2RlLXNwZWNpZmljIGRlZmF1bHQgbWl4
aW5nIHJ1bGVzLgorICAgIG1fY2hhbm5lbENvdW50ID0gMjsKKyAgICBtX2NoYW5uZWxDb3VudE1v
ZGUgPSBDbGFtcGVkTWF4OworICAgIG1fY2hhbm5lbEludGVycHJldGF0aW9uID0gQXVkaW9CdXM6
OlNwZWFrZXJzOworCisgICAgbV9kaXN0YW5jZUdhaW4gPSBBdWRpb1BhcmFtOjpjcmVhdGUoY29u
dGV4dCwgImRpc3RhbmNlR2FpbiIsIDEuMCwgMC4wLCAxLjApOworICAgIG1fY29uZUdhaW4gPSBB
dWRpb1BhcmFtOjpjcmVhdGUoY29udGV4dCwgImNvbmVHYWluIiwgMS4wLCAwLjAsIDEuMCk7CisK
KyAgICBtX3Bvc2l0aW9uID0gRmxvYXRQb2ludDNEKDAsIDAsIDApOworICAgIG1fb3JpZW50YXRp
b24gPSBGbG9hdFBvaW50M0QoMSwgMCwgMCk7CisgICAgbV92ZWxvY2l0eSA9IEZsb2F0UG9pbnQz
RCgwLCAwLCAwKTsKKworICAgIGluaXRpYWxpemUoKTsKK30KKworV2ViS2l0QXVkaW9QYW5uZXJO
b2RlOjp+V2ViS2l0QXVkaW9QYW5uZXJOb2RlKCkKK3sKKyAgICB1bmluaXRpYWxpemUoKTsKK30K
Kwordm9pZCBXZWJLaXRBdWRpb1Bhbm5lck5vZGU6OnB1bGxJbnB1dHMoc2l6ZV90IGZyYW1lc1Rv
UHJvY2VzcykKK3sKKyAgICAvLyBXZSBvdmVycmlkZSBwdWxsSW5wdXRzKCksIHNvIHdlIGNhbiBk
ZXRlY3QgbmV3IEF1ZGlvU291cmNlTm9kZXMgd2hpY2ggaGF2ZSBjb25uZWN0ZWQgdG8gdXMgd2hl
biBuZXcgY29ubmVjdGlvbnMgYXJlIG1hZGUuCisgICAgLy8gVGhlc2UgQXVkaW9Tb3VyY2VOb2Rl
cyBuZWVkIHRvIGJlIG1hZGUgYXdhcmUgb2Ygb3VyIGV4aXN0ZW5jZSBpbiBvcmRlciB0byBoYW5k
bGUgZG9wcGxlciBzaGlmdCBwaXRjaCBjaGFuZ2VzLgorICAgIGlmIChtX2Nvbm5lY3Rpb25Db3Vu
dCAhPSBjb250ZXh0KCkuY29ubmVjdGlvbkNvdW50KCkpIHsKKyAgICAgICAgbV9jb25uZWN0aW9u
Q291bnQgPSBjb250ZXh0KCkuY29ubmVjdGlvbkNvdW50KCk7CisKKyAgICAgICAgLy8gUmVjdXJz
aXZlbHkgZ28gdGhyb3VnaCBhbGwgbm9kZXMgY29ubmVjdGVkIHRvIHVzLgorICAgICAgICBIYXNo
U2V0PEF1ZGlvTm9kZSo+IHZpc2l0ZWROb2RlczsKKyAgICAgICAgbm90aWZ5QXVkaW9Tb3VyY2Vz
Q29ubmVjdGVkVG9Ob2RlKHRoaXMsIHZpc2l0ZWROb2Rlcyk7CisgICAgfQorCisgICAgQXVkaW9O
b2RlOjpwdWxsSW5wdXRzKGZyYW1lc1RvUHJvY2Vzcyk7Cit9CisKK3ZvaWQgV2ViS2l0QXVkaW9Q
YW5uZXJOb2RlOjpwcm9jZXNzKHNpemVfdCBmcmFtZXNUb1Byb2Nlc3MpCit7CisgICAgQXVkaW9C
dXMqIGRlc3RpbmF0aW9uID0gb3V0cHV0KDApLT5idXMoKTsKKworICAgIGlmICghaXNJbml0aWFs
aXplZCgpIHx8ICFpbnB1dCgwKS0+aXNDb25uZWN0ZWQoKSB8fCAhbV9wYW5uZXIuZ2V0KCkpIHsK
KyAgICAgICAgZGVzdGluYXRpb24tPnplcm8oKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKwor
ICAgIEF1ZGlvQnVzKiBzb3VyY2UgPSBpbnB1dCgwKS0+YnVzKCk7CisgICAgaWYgKCFzb3VyY2Up
IHsKKyAgICAgICAgZGVzdGluYXRpb24tPnplcm8oKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0K
KworICAgIC8vIEhSVEZEYXRhYmFzZSBzaG91bGQgYmUgbG9hZGVkIGJlZm9yZSBwcm9jZWVkaW5n
IGZvciBvZmZsaW5lIGF1ZGlvIGNvbnRleHQgd2hlbiBwYW5uaW5nTW9kZWwoKSBpcyAiSFJURiIu
CisgICAgaWYgKHBhbm5pbmdNb2RlbCgpID09IFBhbm5pbmdNb2RlbFR5cGU6OkhSVEYgJiYgIW1f
aHJ0ZkRhdGFiYXNlTG9hZGVyLT5pc0xvYWRlZCgpKSB7CisgICAgICAgIGlmIChjb250ZXh0KCku
aXNPZmZsaW5lQ29udGV4dCgpKQorICAgICAgICAgICAgbV9ocnRmRGF0YWJhc2VMb2FkZXItPndh
aXRGb3JMb2FkZXJUaHJlYWRDb21wbGV0aW9uKCk7CisgICAgICAgIGVsc2UgeworICAgICAgICAg
ICAgZGVzdGluYXRpb24tPnplcm8oKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQor
ICAgIH0KKworICAgIC8vIFRoZSBhdWRpbyB0aHJlYWQgY2FuJ3QgYmxvY2sgb24gdGhpcyBsb2Nr
LCBzbyB3ZSB1c2Ugc3RkOjp0cnlfdG9fbG9jayBpbnN0ZWFkLgorICAgIHN0ZDo6dW5pcXVlX2xv
Y2s8TG9jaz4gbG9jayhtX3Bhbm5lck11dGV4LCBzdGQ6OnRyeV90b19sb2NrKTsKKyAgICBpZiAo
IWxvY2sub3duc19sb2NrKCkpIHsKKyAgICAgICAgLy8gVG9vIGJhZCAtIFRoZSB0cnlfbG9jaygp
IGZhaWxlZC4gV2UgbXVzdCBiZSBpbiB0aGUgbWlkZGxlIG9mIGNoYW5naW5nIHRoZSBwYW5uZXIu
CisgICAgICAgIGRlc3RpbmF0aW9uLT56ZXJvKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisK
KyAgICAvLyBBcHBseSB0aGUgcGFubmluZyBlZmZlY3QuCisgICAgZG91YmxlIGF6aW11dGg7Cisg
ICAgZG91YmxlIGVsZXZhdGlvbjsKKyAgICBnZXRBemltdXRoRWxldmF0aW9uKCZhemltdXRoLCAm
ZWxldmF0aW9uKTsKKyAgICBtX3Bhbm5lci0+cGFuKGF6aW11dGgsIGVsZXZhdGlvbiwgc291cmNl
LCBkZXN0aW5hdGlvbiwgZnJhbWVzVG9Qcm9jZXNzKTsKKworICAgIC8vIEdldCB0aGUgZGlzdGFu
Y2UgYW5kIGNvbmUgZ2Fpbi4KKyAgICBkb3VibGUgdG90YWxHYWluID0gZGlzdGFuY2VDb25lR2Fp
bigpOworCisgICAgLy8gU25hcCB0byBkZXNpcmVkIGdhaW4gYXQgdGhlIGJlZ2lubmluZy4KKyAg
ICBpZiAobV9sYXN0R2FpbiA9PSAtMS4wKQorICAgICAgICBtX2xhc3RHYWluID0gdG90YWxHYWlu
OworCisgICAgLy8gQXBwbHkgZ2FpbiBpbi1wbGFjZSB3aXRoIGRlLXppcHBlcmluZy4KKyAgICBk
ZXN0aW5hdGlvbi0+Y29weVdpdGhHYWluRnJvbSgqZGVzdGluYXRpb24sICZtX2xhc3RHYWluLCB0
b3RhbEdhaW4pOworfQorCit2b2lkIFdlYktpdEF1ZGlvUGFubmVyTm9kZTo6cmVzZXQoKQorewor
ICAgIG1fbGFzdEdhaW4gPSAtMS4wOyAvLyBmb3JjZSB0byBzbmFwIHRvIGluaXRpYWwgZ2Fpbgor
ICAgIGlmIChtX3Bhbm5lci5nZXQoKSkKKyAgICAgICAgbV9wYW5uZXItPnJlc2V0KCk7Cit9CisK
K3ZvaWQgV2ViS2l0QXVkaW9QYW5uZXJOb2RlOjppbml0aWFsaXplKCkKK3sKKyAgICBpZiAoaXNJ
bml0aWFsaXplZCgpKQorICAgICAgICByZXR1cm47CisKKyAgICBtX3Bhbm5lciA9IFBhbm5lcjo6
Y3JlYXRlKG1fcGFubmluZ01vZGVsLCBzYW1wbGVSYXRlKCksIG1faHJ0ZkRhdGFiYXNlTG9hZGVy
LmdldCgpKTsKKworICAgIEF1ZGlvTm9kZTo6aW5pdGlhbGl6ZSgpOworfQorCit2b2lkIFdlYktp
dEF1ZGlvUGFubmVyTm9kZTo6dW5pbml0aWFsaXplKCkKK3sKKyAgICBpZiAoIWlzSW5pdGlhbGl6
ZWQoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9wYW5uZXIgPSBudWxscHRyOworICAgIEF1
ZGlvTm9kZTo6dW5pbml0aWFsaXplKCk7Cit9CisKK0F1ZGlvTGlzdGVuZXIqIFdlYktpdEF1ZGlv
UGFubmVyTm9kZTo6bGlzdGVuZXIoKQoreworICAgIHJldHVybiBjb250ZXh0KCkubGlzdGVuZXIo
KTsKK30KKwordm9pZCBXZWJLaXRBdWRpb1Bhbm5lck5vZGU6OnNldFBhbm5pbmdNb2RlbChQYW5u
aW5nTW9kZWxUeXBlIG1vZGVsKQoreworICAgIGlmICghbV9wYW5uZXIuZ2V0KCkgfHwgbW9kZWwg
IT0gbV9wYW5uaW5nTW9kZWwpIHsKKyAgICAgICAgLy8gVGhpcyBzeW5jaHJvbml6ZXMgd2l0aCBw
cm9jZXNzKCkuCisgICAgICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sobV9wYW5uZXJNdXRleCk7
CisKKyAgICAgICAgbV9wYW5uZXIgPSBQYW5uZXI6OmNyZWF0ZShtb2RlbCwgc2FtcGxlUmF0ZSgp
LCBtX2hydGZEYXRhYmFzZUxvYWRlci5nZXQoKSk7CisgICAgICAgIG1fcGFubmluZ01vZGVsID0g
bW9kZWw7CisgICAgfQorfQorCitEaXN0YW5jZU1vZGVsVHlwZSBXZWJLaXRBdWRpb1Bhbm5lck5v
ZGU6OmRpc3RhbmNlTW9kZWwoKSBjb25zdAoreworICAgIHJldHVybiBjb25zdF9jYXN0PFdlYktp
dEF1ZGlvUGFubmVyTm9kZSo+KHRoaXMpLT5tX2Rpc3RhbmNlRWZmZWN0Lm1vZGVsKCk7Cit9CisK
K3ZvaWQgV2ViS2l0QXVkaW9QYW5uZXJOb2RlOjpzZXREaXN0YW5jZU1vZGVsKERpc3RhbmNlTW9k
ZWxUeXBlIG1vZGVsKQoreworICAgIG1fZGlzdGFuY2VFZmZlY3Quc2V0TW9kZWwobW9kZWwsIHRy
dWUpOworfQorCit2b2lkIFdlYktpdEF1ZGlvUGFubmVyTm9kZTo6Z2V0QXppbXV0aEVsZXZhdGlv
bihkb3VibGUqIG91dEF6aW11dGgsIGRvdWJsZSogb3V0RWxldmF0aW9uKQoreworICAgIC8vIEZJ
WE1FOiB3ZSBzaG91bGQgY2FjaGUgYXppbXV0aCBhbmQgZWxldmF0aW9uIChpZiBwb3NzaWJsZSks
IHNvIHdlIG9ubHkgcmUtY2FsY3VsYXRlIGlmIGEgY2hhbmdlIGhhcyBiZWVuIG1hZGUuCisKKyAg
ICBkb3VibGUgYXppbXV0aCA9IDAuMDsKKworICAgIC8vIENhbGN1bGF0ZSB0aGUgc291cmNlLWxp
c3RlbmVyIHZlY3RvcgorICAgIEZsb2F0UG9pbnQzRCBsaXN0ZW5lclBvc2l0aW9uID0gbGlzdGVu
ZXIoKS0+cG9zaXRpb24oKTsKKyAgICBGbG9hdFBvaW50M0Qgc291cmNlTGlzdGVuZXIgPSBwb3Np
dGlvbigpIC0gbGlzdGVuZXJQb3NpdGlvbjsKKworICAgIGlmIChzb3VyY2VMaXN0ZW5lci5pc1pl
cm8oKSkgeworICAgICAgICAvLyBkZWdlbmVyYXRlIGNhc2UgaWYgc291cmNlIGFuZCBsaXN0ZW5l
ciBhcmUgYXQgdGhlIHNhbWUgcG9pbnQKKyAgICAgICAgKm91dEF6aW11dGggPSAwLjA7CisgICAg
ICAgICpvdXRFbGV2YXRpb24gPSAwLjA7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBz
b3VyY2VMaXN0ZW5lci5ub3JtYWxpemUoKTsKKworICAgIC8vIEFsaWduIGF4ZXMKKyAgICBGbG9h
dFBvaW50M0QgbGlzdGVuZXJGcm9udCA9IGxpc3RlbmVyKCktPm9yaWVudGF0aW9uKCk7CisgICAg
RmxvYXRQb2ludDNEIGxpc3RlbmVyVXAgPSBsaXN0ZW5lcigpLT51cFZlY3RvcigpOworICAgIEZs
b2F0UG9pbnQzRCBsaXN0ZW5lclJpZ2h0ID0gbGlzdGVuZXJGcm9udC5jcm9zcyhsaXN0ZW5lclVw
KTsKKyAgICBsaXN0ZW5lclJpZ2h0Lm5vcm1hbGl6ZSgpOworCisgICAgRmxvYXRQb2ludDNEIGxp
c3RlbmVyRnJvbnROb3JtID0gbGlzdGVuZXJGcm9udDsKKyAgICBsaXN0ZW5lckZyb250Tm9ybS5u
b3JtYWxpemUoKTsKKworICAgIEZsb2F0UG9pbnQzRCB1cCA9IGxpc3RlbmVyUmlnaHQuY3Jvc3Mo
bGlzdGVuZXJGcm9udE5vcm0pOworCisgICAgZmxvYXQgdXBQcm9qZWN0aW9uID0gc291cmNlTGlz
dGVuZXIuZG90KHVwKTsKKworICAgIEZsb2F0UG9pbnQzRCBwcm9qZWN0ZWRTb3VyY2UgPSBzb3Vy
Y2VMaXN0ZW5lciAtIHVwUHJvamVjdGlvbiAqIHVwOworICAgIHByb2plY3RlZFNvdXJjZS5ub3Jt
YWxpemUoKTsKKworICAgIGF6aW11dGggPSAxODAuMCAqIGFjb3MocHJvamVjdGVkU291cmNlLmRv
dChsaXN0ZW5lclJpZ2h0KSkgLyBwaURvdWJsZTsKKyAgICBmaXhOQU5zKGF6aW11dGgpOyAvLyBh
dm9pZCBpbGxlZ2FsIHZhbHVlcworCisgICAgLy8gU291cmNlICBpbiBmcm9udCBvciBiZWhpbmQg
dGhlIGxpc3RlbmVyCisgICAgZG91YmxlIGZyb250QmFjayA9IHByb2plY3RlZFNvdXJjZS5kb3Qo
bGlzdGVuZXJGcm9udE5vcm0pOworICAgIGlmIChmcm9udEJhY2sgPCAwLjApCisgICAgICAgIGF6
aW11dGggPSAzNjAuMCAtIGF6aW11dGg7CisKKyAgICAvLyBNYWtlIGF6aW11dGggcmVsYXRpdmUg
dG8gImZyb250IiBhbmQgbm90ICJyaWdodCIgbGlzdGVuZXIgdmVjdG9yCisgICAgaWYgKChhemlt
dXRoID49IDAuMCkgJiYgKGF6aW11dGggPD0gMjcwLjApKQorICAgICAgICBhemltdXRoID0gOTAu
MCAtIGF6aW11dGg7CisgICAgZWxzZQorICAgICAgICBhemltdXRoID0gNDUwLjAgLSBhemltdXRo
OworCisgICAgLy8gRWxldmF0aW9uCisgICAgZG91YmxlIGVsZXZhdGlvbiA9IDkwLjAgLSAxODAu
MCAqIGFjb3Moc291cmNlTGlzdGVuZXIuZG90KHVwKSkgLyBwaURvdWJsZTsKKyAgICBmaXhOQU5z
KGVsZXZhdGlvbik7IC8vIGF2b2lkIGlsbGVnYWwgdmFsdWVzCisKKyAgICBpZiAoZWxldmF0aW9u
ID4gOTAuMCkKKyAgICAgICAgZWxldmF0aW9uID0gMTgwLjAgLSBlbGV2YXRpb247CisgICAgZWxz
ZSBpZiAoZWxldmF0aW9uIDwgLTkwLjApCisgICAgICAgIGVsZXZhdGlvbiA9IC0xODAuMCAtIGVs
ZXZhdGlvbjsKKworICAgIGlmIChvdXRBemltdXRoKQorICAgICAgICAqb3V0QXppbXV0aCA9IGF6
aW11dGg7CisgICAgaWYgKG91dEVsZXZhdGlvbikKKyAgICAgICAgKm91dEVsZXZhdGlvbiA9IGVs
ZXZhdGlvbjsKK30KKworZmxvYXQgV2ViS2l0QXVkaW9QYW5uZXJOb2RlOjpkb3BwbGVyUmF0ZSgp
Cit7CisgICAgZG91YmxlIGRvcHBsZXJTaGlmdCA9IDEuMDsKKworICAgIC8vIEZJWE1FOiBvcHRp
bWl6ZSBmb3IgY2FzZSB3aGVuIG5laXRoZXIgc291cmNlIG5vciBsaXN0ZW5lciBoYXMgY2hhbmdl
ZC4uLgorICAgIGRvdWJsZSBkb3BwbGVyRmFjdG9yID0gbGlzdGVuZXIoKS0+ZG9wcGxlckZhY3Rv
cigpOworCisgICAgaWYgKGRvcHBsZXJGYWN0b3IgPiAwLjApIHsKKyAgICAgICAgZG91YmxlIHNw
ZWVkT2ZTb3VuZCA9IGxpc3RlbmVyKCktPnNwZWVkT2ZTb3VuZCgpOworCisgICAgICAgIGNvbnN0
IEZsb2F0UG9pbnQzRCAmc291cmNlVmVsb2NpdHkgPSBtX3ZlbG9jaXR5OworICAgICAgICBjb25z
dCBGbG9hdFBvaW50M0QgJmxpc3RlbmVyVmVsb2NpdHkgPSBsaXN0ZW5lcigpLT52ZWxvY2l0eSgp
OworCisgICAgICAgIC8vIERvbid0IGJvdGhlciBpZiBib3RoIHNvdXJjZSBhbmQgbGlzdGVuZXIg
aGF2ZSBubyB2ZWxvY2l0eQorICAgICAgICBib29sIHNvdXJjZUhhc1ZlbG9jaXR5ID0gIXNvdXJj
ZVZlbG9jaXR5LmlzWmVybygpOworICAgICAgICBib29sIGxpc3RlbmVySGFzVmVsb2NpdHkgPSAh
bGlzdGVuZXJWZWxvY2l0eS5pc1plcm8oKTsKKworICAgICAgICBpZiAoc291cmNlSGFzVmVsb2Np
dHkgfHwgbGlzdGVuZXJIYXNWZWxvY2l0eSkgeworICAgICAgICAgICAgLy8gQ2FsY3VsYXRlIHRo
ZSBzb3VyY2UgdG8gbGlzdGVuZXIgdmVjdG9yCisgICAgICAgICAgICBGbG9hdFBvaW50M0QgbGlz
dGVuZXJQb3NpdGlvbiA9IGxpc3RlbmVyKCktPnBvc2l0aW9uKCk7CisgICAgICAgICAgICBGbG9h
dFBvaW50M0Qgc291cmNlVG9MaXN0ZW5lciA9IHBvc2l0aW9uKCkgLSBsaXN0ZW5lclBvc2l0aW9u
OworCisgICAgICAgICAgICBkb3VibGUgc291cmNlTGlzdGVuZXJNYWduaXR1ZGUgPSBzb3VyY2VU
b0xpc3RlbmVyLmxlbmd0aCgpOworCisgICAgICAgICAgICBkb3VibGUgbGlzdGVuZXJQcm9qZWN0
aW9uID0gc291cmNlVG9MaXN0ZW5lci5kb3QobGlzdGVuZXJWZWxvY2l0eSkgLyBzb3VyY2VMaXN0
ZW5lck1hZ25pdHVkZTsKKyAgICAgICAgICAgIGRvdWJsZSBzb3VyY2VQcm9qZWN0aW9uID0gc291
cmNlVG9MaXN0ZW5lci5kb3Qoc291cmNlVmVsb2NpdHkpIC8gc291cmNlTGlzdGVuZXJNYWduaXR1
ZGU7CisKKyAgICAgICAgICAgIGxpc3RlbmVyUHJvamVjdGlvbiA9IC1saXN0ZW5lclByb2plY3Rp
b247CisgICAgICAgICAgICBzb3VyY2VQcm9qZWN0aW9uID0gLXNvdXJjZVByb2plY3Rpb247CisK
KyAgICAgICAgICAgIGRvdWJsZSBzY2FsZWRTcGVlZE9mU291bmQgPSBzcGVlZE9mU291bmQgLyBk
b3BwbGVyRmFjdG9yOworICAgICAgICAgICAgbGlzdGVuZXJQcm9qZWN0aW9uID0gc3RkOjptaW4o
bGlzdGVuZXJQcm9qZWN0aW9uLCBzY2FsZWRTcGVlZE9mU291bmQpOworICAgICAgICAgICAgc291
cmNlUHJvamVjdGlvbiA9IHN0ZDo6bWluKHNvdXJjZVByb2plY3Rpb24sIHNjYWxlZFNwZWVkT2ZT
b3VuZCk7CisKKyAgICAgICAgICAgIGRvcHBsZXJTaGlmdCA9ICgoc3BlZWRPZlNvdW5kIC0gZG9w
cGxlckZhY3RvciAqIGxpc3RlbmVyUHJvamVjdGlvbikgLyAoc3BlZWRPZlNvdW5kIC0gZG9wcGxl
ckZhY3RvciAqIHNvdXJjZVByb2plY3Rpb24pKTsKKyAgICAgICAgICAgIGZpeE5BTnMoZG9wcGxl
clNoaWZ0KTsgLy8gYXZvaWQgaWxsZWdhbCB2YWx1ZXMKKworICAgICAgICAgICAgLy8gTGltaXQg
dGhlIHBpdGNoIHNoaWZ0aW5nIHRvIDQgb2N0YXZlcyB1cCBhbmQgMyBvY3RhdmVzIGRvd24uCisg
ICAgICAgICAgICBpZiAoZG9wcGxlclNoaWZ0ID4gMTYuMCkKKyAgICAgICAgICAgICAgICBkb3Bw
bGVyU2hpZnQgPSAxNi4wOworICAgICAgICAgICAgZWxzZSBpZiAoZG9wcGxlclNoaWZ0IDwgMC4x
MjUpCisgICAgICAgICAgICAgICAgZG9wcGxlclNoaWZ0ID0gMC4xMjU7CisgICAgICAgIH0KKyAg
ICB9CisKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8ZmxvYXQ+KGRvcHBsZXJTaGlmdCk7Cit9CisK
K2Zsb2F0IFdlYktpdEF1ZGlvUGFubmVyTm9kZTo6ZGlzdGFuY2VDb25lR2FpbigpCit7CisgICAg
RmxvYXRQb2ludDNEIGxpc3RlbmVyUG9zaXRpb24gPSBsaXN0ZW5lcigpLT5wb3NpdGlvbigpOwor
ICAgIEZsb2F0UG9pbnQzRCBzb3VyY2VQb3NpdGlvbiA9IHBvc2l0aW9uKCk7CisKKyAgICBkb3Vi
bGUgbGlzdGVuZXJEaXN0YW5jZSA9IHNvdXJjZVBvc2l0aW9uLmRpc3RhbmNlVG8obGlzdGVuZXJQ
b3NpdGlvbik7CisgICAgZG91YmxlIGRpc3RhbmNlR2FpbiA9IG1fZGlzdGFuY2VFZmZlY3QuZ2Fp
bihsaXN0ZW5lckRpc3RhbmNlKTsKKworICAgIG1fZGlzdGFuY2VHYWluLT5zZXRWYWx1ZShzdGF0
aWNfY2FzdDxmbG9hdD4oZGlzdGFuY2VHYWluKSk7CisKKyAgICAvLyBGSVhNRTogY291bGQgb3B0
aW1pemUgYnkgY2FjaGluZyBjb25lR2FpbgorICAgIGRvdWJsZSBjb25lR2FpbiA9IG1fY29uZUVm
ZmVjdC5nYWluKHNvdXJjZVBvc2l0aW9uLCBtX29yaWVudGF0aW9uLCBsaXN0ZW5lclBvc2l0aW9u
KTsKKworICAgIG1fY29uZUdhaW4tPnNldFZhbHVlKHN0YXRpY19jYXN0PGZsb2F0Pihjb25lR2Fp
bikpOworCisgICAgcmV0dXJuIGZsb2F0KGRpc3RhbmNlR2FpbiAqIGNvbmVHYWluKTsKK30KKwor
dm9pZCBXZWJLaXRBdWRpb1Bhbm5lck5vZGU6Om5vdGlmeUF1ZGlvU291cmNlc0Nvbm5lY3RlZFRv
Tm9kZShBdWRpb05vZGUqIG5vZGUsIEhhc2hTZXQ8QXVkaW9Ob2RlKj4mIHZpc2l0ZWROb2RlcykK
K3sKKyAgICBBU1NFUlQobm9kZSk7CisgICAgaWYgKCFub2RlKQorICAgICAgICByZXR1cm47CisK
KyAgICAvLyBGaXJzdCBjaGVjayBpZiB0aGlzIG5vZGUgaXMgYW4gQXVkaW9CdWZmZXJTb3VyY2VO
b2RlLiBJZiBzbywgbGV0IGl0IGtub3cgYWJvdXQgdXMgc28gdGhhdCBkb3BwbGVyIHNoaWZ0IHBp
dGNoIGNhbiBiZSB0YWtlbiBpbnRvIGFjY291bnQuCisgICAgaWYgKG5vZGUtPm5vZGVUeXBlKCkg
PT0gTm9kZVR5cGVBdWRpb0J1ZmZlclNvdXJjZSkgeworICAgICAgICBBdWRpb0J1ZmZlclNvdXJj
ZU5vZGUqIGJ1ZmZlclNvdXJjZU5vZGUgPSByZWludGVycHJldF9jYXN0PEF1ZGlvQnVmZmVyU291
cmNlTm9kZSo+KG5vZGUpOworICAgICAgICBidWZmZXJTb3VyY2VOb2RlLT5zZXRQYW5uZXJOb2Rl
KHRoaXMpOworICAgIH0gZWxzZSB7CisgICAgICAgIC8vIEdvIHRocm91Z2ggYWxsIGlucHV0cyB0
byB0aGlzIG5vZGUuCisgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBub2RlLT5udW1i
ZXJPZklucHV0cygpOyArK2kpIHsKKyAgICAgICAgICAgIEF1ZGlvTm9kZUlucHV0KiBpbnB1dCA9
IG5vZGUtPmlucHV0KGkpOworCisgICAgICAgICAgICAvLyBGb3IgZWFjaCBpbnB1dCwgZ28gdGhy
b3VnaCBhbGwgb2YgaXRzIGNvbm5lY3Rpb25zLCBsb29raW5nIGZvciBBdWRpb0J1ZmZlclNvdXJj
ZU5vZGVzLgorICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBqID0gMDsgaiA8IGlucHV0LT5udW1i
ZXJPZlJlbmRlcmluZ0Nvbm5lY3Rpb25zKCk7ICsraikgeworICAgICAgICAgICAgICAgIEF1ZGlv
Tm9kZU91dHB1dCogY29ubmVjdGVkT3V0cHV0ID0gaW5wdXQtPnJlbmRlcmluZ091dHB1dChqKTsK
KyAgICAgICAgICAgICAgICBBdWRpb05vZGUqIGNvbm5lY3RlZE5vZGUgPSBjb25uZWN0ZWRPdXRw
dXQtPm5vZGUoKTsKKyAgICAgICAgICAgICAgICBpZiAodmlzaXRlZE5vZGVzLmNvbnRhaW5zKGNv
bm5lY3RlZE5vZGUpKQorICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICAg
ICAgICAgIHZpc2l0ZWROb2Rlcy5hZGQoY29ubmVjdGVkTm9kZSk7CisgICAgICAgICAgICAgICAg
bm90aWZ5QXVkaW9Tb3VyY2VzQ29ubmVjdGVkVG9Ob2RlKGNvbm5lY3RlZE5vZGUsIHZpc2l0ZWRO
b2Rlcyk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9Cit9CisKK30gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShXRUJfQVVESU8pCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1dlYktpdEF1ZGlvUGFubmVyTm9kZS5oIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9XZWJLaXRBdWRpb1Bhbm5lck5vZGUuaApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi44OTc5N2MzYzRjNTBiMzY4OTIwNTgwNmMxOTdmMTBiZDljNTY3NmJlCi0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9XZWJLaXRBdWRp
b1Bhbm5lck5vZGUuaApAQCAtMCwwICsxLDE2MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
MCwgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFS
RQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OCisgKiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKKyAqIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25j
ZQorCisjaWYgRU5BQkxFKFdFQl9BVURJTykKKworI2luY2x1ZGUgIkF1ZGlvTGlzdGVuZXIuaCIK
KyNpbmNsdWRlICJBdWRpb05vZGUuaCIKKyNpbmNsdWRlICJBdWRpb1BhcmFtLmgiCisjaW5jbHVk
ZSAiQ29uZS5oIgorI2luY2x1ZGUgIkRpc3RhbmNlLmgiCisjaW5jbHVkZSAiRmxvYXRQb2ludDNE
LmgiCisjaW5jbHVkZSAiUGFubmVyLmgiCisjaW5jbHVkZSAiUGFubmVyTm9kZS5oIgorI2luY2x1
ZGUgIldlYktpdEF1ZGlvQ29udGV4dC5oIgorI2luY2x1ZGUgPG1lbW9yeT4KKyNpbmNsdWRlIDx3
dGYvSGFzaFNldC5oPgorI2luY2x1ZGUgPHd0Zi9Mb2NrLmg+CisKK25hbWVzcGFjZSBXZWJDb3Jl
IHsKKworY2xhc3MgSFJURkRhdGFiYXNlTG9hZGVyOworCisvLyBQYW5uZXJOb2RlIGlzIGFuIEF1
ZGlvTm9kZSB3aXRoIG9uZSBpbnB1dCBhbmQgb25lIG91dHB1dC4KKy8vIEl0IHBvc2l0aW9ucyBh
IHNvdW5kIGluIDNEIHNwYWNlLCB3aXRoIHRoZSBleGFjdCBlZmZlY3QgZGVwZW5kZW50IG9uIHRo
ZSBwYW5uaW5nIG1vZGVsLgorLy8gSXQgaGFzIGEgcG9zaXRpb24gYW5kIGFuIG9yaWVudGF0aW9u
IGluIDNEIHNwYWNlIHdoaWNoIGlzIHJlbGF0aXZlIHRvIHRoZSBwb3NpdGlvbiBhbmQgb3JpZW50
YXRpb24gb2YgdGhlIGNvbnRleHQncyBBdWRpb0xpc3RlbmVyLgorLy8gQSBkaXN0YW5jZSBlZmZl
Y3Qgd2lsbCBhdHRlbnVhdGUgdGhlIGdhaW4gYXMgdGhlIHBvc2l0aW9uIG1vdmVzIGF3YXkgZnJv
bSB0aGUgbGlzdGVuZXIuCisvLyBBIGNvbmUgZWZmZWN0IHdpbGwgYXR0ZW51YXRlIHRoZSBnYWlu
IGFzIHRoZSBvcmllbnRhdGlvbiBtb3ZlcyBhd2F5IGZyb20gdGhlIGxpc3RlbmVyLgorLy8gQWxs
IG9mIHRoZXNlIGVmZmVjdHMgZm9sbG93IHRoZSBPcGVuQUwgc3BlY2lmaWNhdGlvbiB2ZXJ5IGNs
b3NlbHkuCisKK2NsYXNzIFdlYktpdEF1ZGlvUGFubmVyTm9kZSBmaW5hbCA6IHB1YmxpYyBQYW5u
ZXJOb2RlQmFzZSB7CisgICAgV1RGX01BS0VfSVNPX0FMTE9DQVRFRChXZWJLaXRBdWRpb1Bhbm5l
ck5vZGUpOworcHVibGljOgorICAgIHN0YXRpYyBSZWY8V2ViS2l0QXVkaW9QYW5uZXJOb2RlPiBj
cmVhdGUoV2ViS2l0QXVkaW9Db250ZXh0JiBjb250ZXh0LCBmbG9hdCBzYW1wbGVSYXRlKQorICAg
IHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgV2ViS2l0QXVkaW9QYW5uZXJOb2RlKGNv
bnRleHQsIHNhbXBsZVJhdGUpKTsKKyAgICB9CisKKyAgICB2aXJ0dWFsIH5XZWJLaXRBdWRpb1Bh
bm5lck5vZGUoKTsKKworICAgIFdlYktpdEF1ZGlvQ29udGV4dCYgY29udGV4dCgpIHsgcmV0dXJu
IGRvd25jYXN0PFdlYktpdEF1ZGlvQ29udGV4dD4oQXVkaW9Ob2RlOjpjb250ZXh0KCkpOyB9Cisg
ICAgY29uc3QgV2ViS2l0QXVkaW9Db250ZXh0JiBjb250ZXh0KCkgY29uc3QgeyByZXR1cm4gZG93
bmNhc3Q8V2ViS2l0QXVkaW9Db250ZXh0PihBdWRpb05vZGU6OmNvbnRleHQoKSk7IH0KKworICAg
IC8vIEF1ZGlvTm9kZQorICAgIHZvaWQgcHJvY2VzcyhzaXplX3QgZnJhbWVzVG9Qcm9jZXNzKSBv
dmVycmlkZTsKKyAgICB2b2lkIHB1bGxJbnB1dHMoc2l6ZV90IGZyYW1lc1RvUHJvY2Vzcykgb3Zl
cnJpZGU7CisgICAgdm9pZCByZXNldCgpIG92ZXJyaWRlOworICAgIHZvaWQgaW5pdGlhbGl6ZSgp
IG92ZXJyaWRlOworICAgIHZvaWQgdW5pbml0aWFsaXplKCkgb3ZlcnJpZGU7CisKKyAgICAvLyBM
aXN0ZW5lcgorICAgIEF1ZGlvTGlzdGVuZXIqIGxpc3RlbmVyKCk7CisKKyAgICAvLyBQYW5uaW5n
IG1vZGVsCisgICAgUGFubmluZ01vZGVsVHlwZSBwYW5uaW5nTW9kZWwoKSBjb25zdCB7IHJldHVy
biBtX3Bhbm5pbmdNb2RlbDsgfQorICAgIHZvaWQgc2V0UGFubmluZ01vZGVsKFBhbm5pbmdNb2Rl
bFR5cGUpOworCisgICAgLy8gUG9zaXRpb24KKyAgICBGbG9hdFBvaW50M0QgcG9zaXRpb24oKSBj
b25zdCB7IHJldHVybiBtX3Bvc2l0aW9uOyB9CisgICAgdm9pZCBzZXRQb3NpdGlvbihmbG9hdCB4
LCBmbG9hdCB5LCBmbG9hdCB6KSB7IG1fcG9zaXRpb24gPSBGbG9hdFBvaW50M0QoeCwgeSwgeik7
IH0KKworICAgIC8vIE9yaWVudGF0aW9uCisgICAgRmxvYXRQb2ludDNEIG9yaWVudGF0aW9uKCkg
Y29uc3QgeyByZXR1cm4gbV9vcmllbnRhdGlvbjsgfQorICAgIHZvaWQgc2V0T3JpZW50YXRpb24o
ZmxvYXQgeCwgZmxvYXQgeSwgZmxvYXQgeikgeyBtX29yaWVudGF0aW9uID0gRmxvYXRQb2ludDNE
KHgsIHksIHopOyB9CisKKyAgICAvLyBWZWxvY2l0eQorICAgIEZsb2F0UG9pbnQzRCB2ZWxvY2l0
eSgpIGNvbnN0IHsgcmV0dXJuIG1fdmVsb2NpdHk7IH0KKyAgICB2b2lkIHNldFZlbG9jaXR5KGZs
b2F0IHgsIGZsb2F0IHksIGZsb2F0IHopIHsgbV92ZWxvY2l0eSA9IEZsb2F0UG9pbnQzRCh4LCB5
LCB6KTsgfQorCisgICAgLy8gRGlzdGFuY2UgcGFyYW1ldGVycworICAgIERpc3RhbmNlTW9kZWxU
eXBlIGRpc3RhbmNlTW9kZWwoKSBjb25zdDsKKyAgICB2b2lkIHNldERpc3RhbmNlTW9kZWwoRGlz
dGFuY2VNb2RlbFR5cGUpOworCisgICAgZG91YmxlIHJlZkRpc3RhbmNlKCkgeyByZXR1cm4gbV9k
aXN0YW5jZUVmZmVjdC5yZWZEaXN0YW5jZSgpOyB9CisgICAgdm9pZCBzZXRSZWZEaXN0YW5jZShk
b3VibGUgcmVmRGlzdGFuY2UpIHsgbV9kaXN0YW5jZUVmZmVjdC5zZXRSZWZEaXN0YW5jZShyZWZE
aXN0YW5jZSk7IH0KKworICAgIGRvdWJsZSBtYXhEaXN0YW5jZSgpIHsgcmV0dXJuIG1fZGlzdGFu
Y2VFZmZlY3QubWF4RGlzdGFuY2UoKTsgfQorICAgIHZvaWQgc2V0TWF4RGlzdGFuY2UoZG91Ymxl
IG1heERpc3RhbmNlKSB7IG1fZGlzdGFuY2VFZmZlY3Quc2V0TWF4RGlzdGFuY2UobWF4RGlzdGFu
Y2UpOyB9CisKKyAgICBkb3VibGUgcm9sbG9mZkZhY3RvcigpIHsgcmV0dXJuIG1fZGlzdGFuY2VF
ZmZlY3Qucm9sbG9mZkZhY3RvcigpOyB9CisgICAgdm9pZCBzZXRSb2xsb2ZmRmFjdG9yKGRvdWJs
ZSByb2xsb2ZmRmFjdG9yKSB7IG1fZGlzdGFuY2VFZmZlY3Quc2V0Um9sbG9mZkZhY3Rvcihyb2xs
b2ZmRmFjdG9yKTsgfQorCisgICAgLy8gU291bmQgY29uZXMgLSBhbmdsZXMgaW4gZGVncmVlcwor
ICAgIGRvdWJsZSBjb25lSW5uZXJBbmdsZSgpIGNvbnN0IHsgcmV0dXJuIG1fY29uZUVmZmVjdC5p
bm5lckFuZ2xlKCk7IH0KKyAgICB2b2lkIHNldENvbmVJbm5lckFuZ2xlKGRvdWJsZSBhbmdsZSkg
eyBtX2NvbmVFZmZlY3Quc2V0SW5uZXJBbmdsZShhbmdsZSk7IH0KKworICAgIGRvdWJsZSBjb25l
T3V0ZXJBbmdsZSgpIGNvbnN0IHsgcmV0dXJuIG1fY29uZUVmZmVjdC5vdXRlckFuZ2xlKCk7IH0K
KyAgICB2b2lkIHNldENvbmVPdXRlckFuZ2xlKGRvdWJsZSBhbmdsZSkgeyBtX2NvbmVFZmZlY3Qu
c2V0T3V0ZXJBbmdsZShhbmdsZSk7IH0KKworICAgIGRvdWJsZSBjb25lT3V0ZXJHYWluKCkgY29u
c3QgeyByZXR1cm4gbV9jb25lRWZmZWN0Lm91dGVyR2FpbigpOyB9CisgICAgdm9pZCBzZXRDb25l
T3V0ZXJHYWluKGRvdWJsZSBhbmdsZSkgeyBtX2NvbmVFZmZlY3Quc2V0T3V0ZXJHYWluKGFuZ2xl
KTsgfQorCisgICAgdm9pZCBnZXRBemltdXRoRWxldmF0aW9uKGRvdWJsZSogb3V0QXppbXV0aCwg
ZG91YmxlKiBvdXRFbGV2YXRpb24pOworICAgIGZsb2F0IGRvcHBsZXJSYXRlKCkgZmluYWw7CisK
KyAgICAvLyBBY2Nlc3NvcnMgZm9yIGR5bmFtaWNhbGx5IGNhbGN1bGF0ZWQgZ2FpbiB2YWx1ZXMu
CisgICAgQXVkaW9QYXJhbSogZGlzdGFuY2VHYWluKCkgeyByZXR1cm4gbV9kaXN0YW5jZUdhaW4u
Z2V0KCk7IH0KKyAgICBBdWRpb1BhcmFtKiBjb25lR2FpbigpIHsgcmV0dXJuIG1fY29uZUdhaW4u
Z2V0KCk7IH0KKworICAgIGRvdWJsZSB0YWlsVGltZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJu
IG1fcGFubmVyID8gbV9wYW5uZXItPnRhaWxUaW1lKCkgOiAwOyB9CisgICAgZG91YmxlIGxhdGVu
Y3lUaW1lKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9wYW5uZXIgPyBtX3Bhbm5lci0+bGF0
ZW5jeVRpbWUoKSA6IDA7IH0KKworcHJpdmF0ZToKKyAgICBXZWJLaXRBdWRpb1Bhbm5lck5vZGUo
V2ViS2l0QXVkaW9Db250ZXh0JiwgZmxvYXQgc2FtcGxlUmF0ZSk7CisKKyAgICAvLyBSZXR1cm5z
IHRoZSBjb21iaW5lZCBkaXN0YW5jZSBhbmQgY29uZSBnYWluIGF0dGVudWF0aW9uLgorICAgIGZs
b2F0IGRpc3RhbmNlQ29uZUdhaW4oKTsKKworICAgIC8vIE5vdGlmaWVzIGFueSBBdWRpb0J1ZmZl
clNvdXJjZU5vZGVzIGNvbm5lY3RlZCB0byB1cyBlaXRoZXIgZGlyZWN0bHkgb3IgaW5kaXJlY3Rs
eSBhYm91dCBvdXIgZXhpc3RlbmNlLgorICAgIC8vIFRoaXMgaXMgaW4gb3JkZXIgdG8gaGFuZGxl
IHRoZSBwaXRjaCBjaGFuZ2UgbmVjZXNzYXJ5IGZvciB0aGUgZG9wcGxlciBzaGlmdC4KKyAgICB2
b2lkIG5vdGlmeUF1ZGlvU291cmNlc0Nvbm5lY3RlZFRvTm9kZShBdWRpb05vZGUqLCBIYXNoU2V0
PEF1ZGlvTm9kZSo+JiB2aXNpdGVkTm9kZXMpOworCisgICAgc3RkOjp1bmlxdWVfcHRyPFBhbm5l
cj4gbV9wYW5uZXI7CisgICAgUGFubmluZ01vZGVsVHlwZSBtX3Bhbm5pbmdNb2RlbDsKKworICAg
IEZsb2F0UG9pbnQzRCBtX3Bvc2l0aW9uOworICAgIEZsb2F0UG9pbnQzRCBtX29yaWVudGF0aW9u
OworICAgIEZsb2F0UG9pbnQzRCBtX3ZlbG9jaXR5OworCisgICAgLy8gR2FpbgorICAgIFJlZlB0
cjxBdWRpb1BhcmFtPiBtX2Rpc3RhbmNlR2FpbjsKKyAgICBSZWZQdHI8QXVkaW9QYXJhbT4gbV9j
b25lR2FpbjsKKyAgICBEaXN0YW5jZUVmZmVjdCBtX2Rpc3RhbmNlRWZmZWN0OworICAgIENvbmVF
ZmZlY3QgbV9jb25lRWZmZWN0OworICAgIGZsb2F0IG1fbGFzdEdhaW47CisKKyAgICAvLyBIUlRG
IERhdGFiYXNlIGxvYWRlcgorICAgIFJlZlB0cjxIUlRGRGF0YWJhc2VMb2FkZXI+IG1faHJ0ZkRh
dGFiYXNlTG9hZGVyOworCisgICAgdW5zaWduZWQgbV9jb25uZWN0aW9uQ291bnQ7CisKKyAgICAv
LyBTeW5jaHJvbml6ZSBwcm9jZXNzKCkgYW5kIHNldFBhbm5pbmdNb2RlbCgpIHdoaWNoIGNhbiBj
aGFuZ2UgdGhlIHBhbm5lci4KKyAgICBtdXRhYmxlIExvY2sgbV9wYW5uZXJNdXRleDsKK307CisK
K30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1dlYktpdEF1ZGlvUGFubmVyTm9kZS5pZGwgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1dlYktpdEF1ZGlvUGFubmVyTm9kZS5pZGwKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uODhkMjY5MTBhZTE3NTA0MjEzNmE1ZTYyZmFjODEzY2M1ZmMzNjcyZgotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vV2ViS2l0QXVkaW9QYW5u
ZXJOb2RlLmlkbApAQCAtMCwwICsxLDQ5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwLCBH
b29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisg
KiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04KKyAqIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
CisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUworICogU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworWworICAgIENvbmRpdGlv
bmFsPVdFQl9BVURJTywKKyAgICBKU0dlbmVyYXRlVG9KU09iamVjdCwKKyAgICBJbnRlcmZhY2VO
YW1lPXdlYmtpdEF1ZGlvUGFubmVyTm9kZSwKK10gaW50ZXJmYWNlIFdlYktpdEF1ZGlvUGFubmVy
Tm9kZSA6IEF1ZGlvTm9kZSB7CisgICAgLy8gRGVmYXVsdCBtb2RlbCBmb3Igc3RlcmVvIGlzIEhS
VEYKKyAgICBhdHRyaWJ1dGUgUGFubmluZ01vZGVsVHlwZSBwYW5uaW5nTW9kZWw7CisKKyAgICAv
LyBVc2VzIGEgM0QgY2FydGVzaWFuIGNvb3JkaW5hdGUgc3lzdGVtCisgICAgdm9pZCBzZXRQb3Np
dGlvbih1bnJlc3RyaWN0ZWQgZmxvYXQgeCwgdW5yZXN0cmljdGVkIGZsb2F0IHksIHVucmVzdHJp
Y3RlZCBmbG9hdCB6KTsKKyAgICB2b2lkIHNldE9yaWVudGF0aW9uKHVucmVzdHJpY3RlZCBmbG9h
dCB4LCB1bnJlc3RyaWN0ZWQgZmxvYXQgeSwgdW5yZXN0cmljdGVkIGZsb2F0IHopOworICAgIHZv
aWQgc2V0VmVsb2NpdHkodW5yZXN0cmljdGVkIGZsb2F0IHgsIHVucmVzdHJpY3RlZCBmbG9hdCB5
LCB1bnJlc3RyaWN0ZWQgZmxvYXQgeik7CisKKyAgICAvLyBEaXN0YW5jZSBtb2RlbAorICAgIGF0
dHJpYnV0ZSBEaXN0YW5jZU1vZGVsVHlwZSBkaXN0YW5jZU1vZGVsOworCisgICAgYXR0cmlidXRl
IHVucmVzdHJpY3RlZCBkb3VibGUgcmVmRGlzdGFuY2U7CisgICAgYXR0cmlidXRlIHVucmVzdHJp
Y3RlZCBkb3VibGUgbWF4RGlzdGFuY2U7CisgICAgYXR0cmlidXRlIHVucmVzdHJpY3RlZCBkb3Vi
bGUgcm9sbG9mZkZhY3RvcjsKKworICAgIC8vIERpcmVjdGlvbmFsIHNvdW5kIGNvbmUKKyAgICBh
dHRyaWJ1dGUgdW5yZXN0cmljdGVkIGRvdWJsZSBjb25lSW5uZXJBbmdsZTsKKyAgICBhdHRyaWJ1
dGUgdW5yZXN0cmljdGVkIGRvdWJsZSBjb25lT3V0ZXJBbmdsZTsKKyAgICBhdHRyaWJ1dGUgdW5y
ZXN0cmljdGVkIGRvdWJsZSBjb25lT3V0ZXJHYWluOworfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vV2ViS2l0T2ZmbGluZUF1ZGlvQ29udGV4dC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1dlYktpdE9mZmxpbmVBdWRpb0NvbnRleHQu
Y3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLmQ4ZTM5OWExNGEzZDVkMzE2NzViYTlhMDZmODE0MDMxMjM1MmI0YTEK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1dlYktp
dE9mZmxpbmVBdWRpb0NvbnRleHQuY3BwCkBAIC0wLDAgKzEsNjIgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTIsIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiAgUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIg
UFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTgorICog
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTCisgKiBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
aW5jbHVkZSAiY29uZmlnLmgiCisKKyNpZiBFTkFCTEUoV0VCX0FVRElPKQorCisjaW5jbHVkZSAi
V2ViS2l0T2ZmbGluZUF1ZGlvQ29udGV4dC5oIgorCisjaW5jbHVkZSAiQXVkaW9CdWZmZXIuaCIK
KyNpbmNsdWRlICJEb2N1bWVudC5oIgorI2luY2x1ZGUgPHd0Zi9Jc29NYWxsb2NJbmxpbmVzLmg+
CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworV1RGX01BS0VfSVNPX0FMTE9DQVRFRF9JTVBMKFdl
YktpdE9mZmxpbmVBdWRpb0NvbnRleHQpOworCitpbmxpbmUgV2ViS2l0T2ZmbGluZUF1ZGlvQ29u
dGV4dDo6V2ViS2l0T2ZmbGluZUF1ZGlvQ29udGV4dChEb2N1bWVudCYgZG9jdW1lbnQsIEF1ZGlv
QnVmZmVyKiByZW5kZXJUYXJnZXQpCisgICAgOiBXZWJLaXRBdWRpb0NvbnRleHQoZG9jdW1lbnQs
IHJlbmRlclRhcmdldCkKK3sKK30KKworRXhjZXB0aW9uT3I8UmVmPFdlYktpdE9mZmxpbmVBdWRp
b0NvbnRleHQ+PiBXZWJLaXRPZmZsaW5lQXVkaW9Db250ZXh0OjpjcmVhdGUoU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCYgY29udGV4dCwgdW5zaWduZWQgbnVtYmVyT2ZDaGFubmVscywgc2l6ZV90IG51
bWJlck9mRnJhbWVzLCBmbG9hdCBzYW1wbGVSYXRlKQoreworICAgIC8vIEZJWE1FOiBBZGQgc3Vw
cG9ydCBmb3Igd29ya2Vycy4KKyAgICBpZiAoIWlzPERvY3VtZW50Pihjb250ZXh0KSkKKyAgICAg
ICAgcmV0dXJuIEV4Y2VwdGlvbiB7IE5vdFN1cHBvcnRlZEVycm9yIH07CisgICAgaWYgKCFudW1i
ZXJPZkNoYW5uZWxzIHx8IG51bWJlck9mQ2hhbm5lbHMgPiAxMCB8fCAhbnVtYmVyT2ZGcmFtZXMg
fHwgIWlzU2FtcGxlUmF0ZVJhbmdlR29vZChzYW1wbGVSYXRlKSkKKyAgICAgICAgcmV0dXJuIEV4
Y2VwdGlvbiB7IFN5bnRheEVycm9yIH07CisgICAgYXV0byByZW5kZXJUYXJnZXQgPSBBdWRpb0J1
ZmZlcjo6Y3JlYXRlKG51bWJlck9mQ2hhbm5lbHMsIG51bWJlck9mRnJhbWVzLCBzYW1wbGVSYXRl
KTsKKyAgICBpZiAoIXJlbmRlclRhcmdldCkKKyAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IFN5
bnRheEVycm9yIH07CisKKyAgICBhdXRvIGF1ZGlvQ29udGV4dCA9IGFkb3B0UmVmKCpuZXcgV2Vi
S2l0T2ZmbGluZUF1ZGlvQ29udGV4dChkb3duY2FzdDxEb2N1bWVudD4oY29udGV4dCksIHJlbmRl
clRhcmdldC5nZXQoKSkpOworICAgIGF1ZGlvQ29udGV4dC0+c3VzcGVuZElmTmVlZGVkKCk7Cisg
ICAgcmV0dXJuIGF1ZGlvQ29udGV4dDsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisj
ZW5kaWYgLy8gRU5BQkxFKFdFQl9BVURJTykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViYXVkaW8vV2ViS2l0T2ZmbGluZUF1ZGlvQ29udGV4dC5oIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJhdWRpby9XZWJLaXRPZmZsaW5lQXVkaW9Db250ZXh0LmgKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uYzI1NGVkNDFmZTAzZDYxZTdlY2I1NDg3ZTJjNzljNDc0NjE4MmY5NAotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vV2ViS2l0T2ZmbGluZUF1ZGlv
Q29udGV4dC5oCkBAIC0wLDAgKzEsNDAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIsIEdv
b2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAq
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTgorICogQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
KyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTCisgKiBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKwor
I2luY2x1ZGUgIldlYktpdEF1ZGlvQ29udGV4dC5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisK
K2NsYXNzIFdlYktpdE9mZmxpbmVBdWRpb0NvbnRleHQgZmluYWwgOiBwdWJsaWMgV2ViS2l0QXVk
aW9Db250ZXh0IHsKKyAgICBXVEZfTUFLRV9JU09fQUxMT0NBVEVEKFdlYktpdE9mZmxpbmVBdWRp
b0NvbnRleHQpOworcHVibGljOgorICAgIHN0YXRpYyBFeGNlcHRpb25PcjxSZWY8V2ViS2l0T2Zm
bGluZUF1ZGlvQ29udGV4dD4+IGNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiwgdW5zaWdu
ZWQgbnVtYmVyT2ZDaGFubmVscywgc2l6ZV90IG51bWJlck9mRnJhbWVzLCBmbG9hdCBzYW1wbGVS
YXRlKTsKKworcHJpdmF0ZToKKyAgICBXZWJLaXRPZmZsaW5lQXVkaW9Db250ZXh0KERvY3VtZW50
JiwgQXVkaW9CdWZmZXIqIHJlbmRlclRhcmdldCk7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1dlYktpdE9m
ZmxpbmVBdWRpb0NvbnRleHQuaWRsIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9X
ZWJLaXRPZmZsaW5lQXVkaW9Db250ZXh0LmlkbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41NmE2NDhiYzJhNWYyMWMz
MDVkZDQ4MGM0MWEwMDUyMzEyNGRjYmYxCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJhdWRpby9XZWJLaXRPZmZsaW5lQXVkaW9Db250ZXh0LmlkbApAQCAtMCww
ICsxLDMxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyLCBHb29nbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQgQU5ZCisg
KiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04KKyAqIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUworICogU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworWworICAgIENvbmRpdGlvbmFsPVdFQl9BVURJTywKKyAg
ICBJbnRlcmZhY2VOYW1lPXdlYmtpdE9mZmxpbmVBdWRpb0NvbnRleHQsCisgICAgSlNHZW5lcmF0
ZVRvSlNPYmplY3QsCitdIGludGVyZmFjZSBXZWJLaXRPZmZsaW5lQXVkaW9Db250ZXh0IDogV2Vi
S2l0QXVkaW9Db250ZXh0IHsKKyAgICBbQ2FsbFdpdGg9U2NyaXB0RXhlY3V0aW9uQ29udGV4dCwg
TWF5VGhyb3dFeGNlcHRpb25dIGNvbnN0cnVjdG9yKHVuc2lnbmVkIGxvbmcgbnVtYmVyT2ZDaGFu
bmVscywgdW5zaWduZWQgbG9uZyBudW1iZXJPZkZyYW1lcywgdW5yZXN0cmljdGVkIGZsb2F0IHNh
bXBsZVJhdGUpOworfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0IGIv
U291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKaW5kZXggMmM1NmVkNTEzOWRiMDc5YTg2Yzc3NTFh
OTU2MzhjYjI0OGJmZTZjNy4uMTQ5NTljMzgxNTAzNTZhODdkZWVlMzJlZmIzN2IyNjI1NjVmMjZl
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKKysrIGIvU291cmNlL1dl
YkNvcmUvU291cmNlcy50eHQKQEAgLTI2OSw2ICsyNjksOSBAQCBNb2R1bGVzL3dlYmF1ZGlvL1Nj
cmlwdFByb2Nlc3Nvck5vZGUuY3BwCiBNb2R1bGVzL3dlYmF1ZGlvL1dhdmVTaGFwZXJEU1BLZXJu
ZWwuY3BwCiBNb2R1bGVzL3dlYmF1ZGlvL1dhdmVTaGFwZXJOb2RlLmNwcAogTW9kdWxlcy93ZWJh
dWRpby9XYXZlU2hhcGVyUHJvY2Vzc29yLmNwcAorTW9kdWxlcy93ZWJhdWRpby9XZWJLaXRBdWRp
b0NvbnRleHQuY3BwCitNb2R1bGVzL3dlYmF1ZGlvL1dlYktpdEF1ZGlvUGFubmVyTm9kZS5jcHAK
K01vZHVsZXMvd2ViYXVkaW8vV2ViS2l0T2ZmbGluZUF1ZGlvQ29udGV4dC5jcHAKIAogTW9kdWxl
cy93ZWJhdXRobi9BdXRoZW50aWNhdG9yQ29vcmRpbmF0b3IuY3BwCiBNb2R1bGVzL3dlYmF1dGhu
L0F1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZS5jcHAKQEAgLTI3NDQsNiArMjc0Nyw3IEBA
IEpTQXVkaW9CdWZmZXJDYWxsYmFjay5jcHAKIEpTQXVkaW9CdWZmZXJTb3VyY2VOb2RlLmNwcAog
SlNBdWRpb0NvbmZpZ3VyYXRpb24uY3BwCiBKU0F1ZGlvQ29udGV4dC5jcHAKK0pTQXVkaW9Db250
ZXh0U3RhdGUuY3BwCiBKU0F1ZGlvRGVzdGluYXRpb25Ob2RlLmNwcAogSlNBdWRpb0xpc3RlbmVy
LmNwcAogSlNBdWRpb05vZGUuY3BwCkBAIC0yOTE0LDYgKzI5MTgsNyBAQCBKU0RldmljZU1vdGlv
bkV2ZW50LmNwcAogSlNEZXZpY2VPcmllbnRhdGlvbkV2ZW50LmNwcAogSlNEZXZpY2VPcmllbnRh
dGlvbk9yTW90aW9uUGVybWlzc2lvblN0YXRlLmNwcAogSlNEZXZpY2VPcmllbnRhdGlvbk9yTW90
aW9uRXZlbnQuY3BwCitKU0Rpc3RhbmNlTW9kZWxUeXBlLmNwcAogSlNEb2N1bWVudC5jcHAKIEpT
RG9jdW1lbnRBbmRFbGVtZW50RXZlbnRIYW5kbGVycy5jcHAKIEpTRG9jdW1lbnRGcmFnbWVudC5j
cHAKQEAgLTMyMTEsNiArMzIxNiw3IEBAIEpTT3ZlcmZsb3dFdmVudC5jcHAKIEpTUGFnZVRyYW5z
aXRpb25FdmVudC5jcHAKIEpTUGFpbnRSZW5kZXJpbmdDb250ZXh0MkQuY3BwCiBKU1Bhbm5lck5v
ZGUuY3BwCitKU1Bhbm5pbmdNb2RlbFR5cGUuY3BwCiBKU1BhcmVudE5vZGUuY3BwCiBKU1BhdGgy
RC5jcHAKIEpTUGF5ZXJFcnJvckZpZWxkcy5jcHAKQEAgLTM1NjcsNyArMzU3MywxMCBAQCBKU1dl
YkdQVVN3YXBDaGFpbi5jcHAKIEpTV2ViR1BVVGV4dHVyZS5jcHAKIEpTV2ViR1BVVGV4dHVyZVZp
ZXcuY3BwCiBKU1dlYktpdEFuaW1hdGlvbkV2ZW50LmNwcAorSlNXZWJLaXRBdWRpb0NvbnRleHQu
Y3BwCitKU1dlYktpdEF1ZGlvUGFubmVyTm9kZS5jcHAKIEpTV2ViS2l0Q1NTTWF0cml4LmNwcAor
SlNXZWJLaXRPZmZsaW5lQXVkaW9Db250ZXh0LmNwcAogSlNXZWJLaXRQbGF5YmFja1RhcmdldEF2
YWlsYWJpbGl0eUV2ZW50LmNwcAogSlNXZWJLaXRQb2ludC5jcHAKIEpTV2ViS2l0VHJhbnNpdGlv
bkV2ZW50LmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCmluZGV4IGM3YWFjODU5Njc2NzgxOGI2OWQzNThlM2FkODA0ODRlMTI2NGI4NjAu
LjQ2Zjk2ZDE1MGNiZjFiN2ZiZDg2NTkyNGI2YjE0ZDJmNmM4NzJlZDQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTI0MDcsMTIg
KzI0MDcsMTYgQEAKIAkJODMwMDMwRjgxQjdEM0I3ODAwRUQzQUFDIC8qIENhY2hlZEhUTUxDb2xs
ZWN0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4
MzAwMzBGNzFCN0QzOTg4MDBFRDNBQUMgLyogQ2FjaGVkSFRNTENvbGxlY3Rpb24uaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk4MzAzMzUwMjFGNTQ5
MDU3MDA0REY3MDcgLyogRmlsZVN5c3RlbURpcmVjdG9yeVJlYWRlci5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODMwMzM0RkMxRjU0OTA1MjAwNERGNzA3
IC8qIEZpbGVTeXN0ZW1EaXJlY3RvcnlSZWFkZXIuaCAqLzsgfTsKIAkJODMwMzM1MDMxRjU0OTA1
QTAwNERGNzA3IC8qIEZpbGVTeXN0ZW1FbnRyaWVzQ2FsbGJhY2suaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgzMDMzNEZFMUY1NDkwNTIwMDRERjcwNyAv
KiBGaWxlU3lzdGVtRW50cmllc0NhbGxiYWNrLmggKi87IH07CisJCTgzMDQwMjgyMjQ5QTdBNUYw
MEE5MEQ4RCAvKiBQYW5uaW5nTW9kZWxUeXBlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA4MzA0MDI4MDI0OUE3QTVDMDBBOTBEOEQgLyogUGFubmluZ01v
ZGVsVHlwZS5oICovOyB9OworCQk4MzA0MDI4MzI0OUE3QTYyMDBBOTBEOEQgLyogRGlzdGFuY2VN
b2RlbFR5cGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDgzMDQwMjdEMjQ5QTdBNUIwMEE5MEQ4RCAvKiBEaXN0YW5jZU1vZGVsVHlwZS5oICovOyB9Owog
CQk4MzA1MTk5NjFCQjBGMTEwMDBGMzc3MkUgLyogSFRNTFRpbWVFbGVtZW50LmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4MzA1MTk5MzFCQjBGMEU3MDBG
Mzc3MkUgLyogSFRNTFRpbWVFbGVtZW50LmggKi87IH07CiAJCTgzMDc4NEIyMUM1MkVFMkMwMDEw
NEQxRCAvKiBYTUxEb2N1bWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gODMwNzg0QjExQzUyRUUxOTAwMTA0RDFEIC8qIFhNTERvY3VtZW50LmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJODMwQTM2QkQx
REFDNUZBRDAwNkQ3RDA5IC8qIEpTTW91c2VFdmVudEluaXQuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgzMEEzNkJCMURBQzVGQTcwMDZEN0QwOSAvKiBK
U01vdXNlRXZlbnRJbml0LmggKi87IH07CiAJCTgzMTAyQjI3MUY5RUFERDkwMEU0MDRCOSAvKiBK
U0V4dGVuZGFibGVNZXNzYWdlRXZlbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDgzMTAyQjIzMUY5RUFEQzIwMEU0MDRCOSAvKiBKU0V4dGVuZGFibGVN
ZXNzYWdlRXZlbnQuaCAqLzsgfTsKIAkJODMxMUMwMDMxRkFBMkU5NTAwRTNDOEU1IC8qIFNXU2Vy
dmVySm9iUXVldWUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDgzMTFDMDAyMUZBQTJFODkwMEUzQzhFNSAvKiBTV1NlcnZlckpvYlF1ZXVlLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJODMxMjBDNzExQzU2
RjNGQjAwMUNCMTEyIC8qIEhUTUxEYXRhRWxlbWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODM0Qjg2QTcxQzU2RTgzQTAwRjNGMEUzIC8qIEhUTUxE
YXRhRWxlbWVudC5oICovOyB9OworCQk4MzFCNjE3NjI0OTlBNUJCMDBDMDdDNzkgLyogV2ViS2l0
QXVkaW9QYW5uZXJOb2RlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA4MzFCNjE3NDI0OTlBNTlDMDBDMDdDNzkgLyogV2ViS2l0QXVkaW9QYW5uZXJOb2Rl
LmggKi87IH07CisJCTgzMUI2MTc3MjQ5OUE1QkYwMEMwN0M3OSAvKiBXZWJLaXRPZmZsaW5lQXVk
aW9Db250ZXh0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA4MzFCNjE3NTI0OTlBNTlEMDBDMDdDNzkgLyogV2ViS2l0T2ZmbGluZUF1ZGlvQ29udGV4dC5o
ICovOyB9OwogCQk4MzIxNTA3RTFGMjdFQTFCMDA5NUIxMzYgLyogTmF2aWdhdG9yQmVhY29uLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4MzIxNTA3QjFG
MjdFQTE1MDA5NUIxMzYgLyogTmF2aWdhdG9yQmVhY29uLmggKi87IH07CiAJCTgzMkI4NDM0MTlE
OEU1NTEwMEIyNjA1NSAvKiBTVkdBbmltYXRlRWxlbWVudEJhc2UuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgzMkI4NDMzMTlEOEU1NTEwMEIyNjA1NSAv
KiBTVkdBbmltYXRlRWxlbWVudEJhc2UuaCAqLzsgfTsKIAkJODMzQjlFMzIxRjUwOEQ4NTAwRTBF
NDI4IC8qIEpTRmlsZVN5c3RlbURpcmVjdG9yeUVudHJ5LmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4MzNCOUUyRjFGNTA4RDgwMDBFMEU0MjggLyogSlNG
aWxlU3lzdGVtRGlyZWN0b3J5RW50cnkuaCAqLzsgfTsKQEAgLTI0NjgsMTAgKzI0NzIsMTIgQEAK
IAkJODM5QTJGMkUxRTIwNEE3MTAwMzkwNTdFIC8qIFdlYkdMU3RhdGVUcmFja2VyLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4MzlBMkYyQzFFMjA0QTZE
MDAzOTA1N0UgLyogV2ViR0xTdGF0ZVRyYWNrZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk4MzlBQUZFRDFBMEMwQzhEMDA2MDVGOTkgLyogSFRN
TFdCUkVsZW1lbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDgzOUFBRkVCMUEwQzBDOEQwMDYwNUY5OSAvKiBIVE1MV0JSRWxlbWVudC5oICovOyB9Owog
CQk4M0E4QUM0MDFGQUJCRkU1MDAyMDY0QUMgLyogU2VydmljZVdvcmtlcklkZW50aWZpZXIuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgzQThBQzNFMUZB
QkJGRDEwMDIwNjRBQyAvKiBTZXJ2aWNlV29ya2VySWRlbnRpZmllci5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTgzQjFBNzAyMjQ5OTg1RjAwMEZF
NTk2MSAvKiBXZWJLaXRBdWRpb0NvbnRleHQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDgzQjFBNkZGMjQ5OTg1RDAwMEZFNTk2MSAvKiBXZWJLaXRBdWRp
b0NvbnRleHQuaCAqLzsgfTsKIAkJODNCMkQxNzUxQjhCQ0Q2QTAwQTAyRTQ3IC8qIE5hdGl2ZU5v
ZGVGaWx0ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDgzRTk1OUUxMUI4QkMyMkIwMDREOTM4NSAvKiBOYXRpdmVOb2RlRmlsdGVyLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJODNCNzRFRjYxRjNFMEJG
MjAwOTk2QkM3IC8qIEtlZXBhbGl2ZVJlcXVlc3RUcmFja2VyLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4M0I3NEVGMzFGM0UwQkQ3MDA5OTZCQzcgLyog
S2VlcGFsaXZlUmVxdWVzdFRyYWNrZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwogCQk4M0I5Njg3QjE5RjhBQjgzMDA0RUY3QUYgLyogU3R5bGVCdWls
ZGVyQ29udmVydGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA4M0I5Njg3OTE5RjhBQjgzMDA0RUY3QUYgLyogU3R5bGVCdWlsZGVyQ29udmVydGVyLmgg
Ki87IH07CiAJCTgzQkI1Qzg4MUQ1RDZGNDUwMDVBNzFGNCAvKiBBbGxEZXNjZW5kYW50c0NvbGxl
Y3Rpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgz
QkI1Qzg3MUQ1RDZGM0EwMDVBNzFGNCAvKiBBbGxEZXNjZW5kYW50c0NvbGxlY3Rpb24uaCAqLzsg
fTsKKwkJODNCRDNDRUUyNDk5OEUwMTAwQkEzRTY3IC8qIEF1ZGlvQ29udGV4dFN0YXRlLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4M0JEM0NFRDI0OTk4
REY2MDBCQTNFNjcgLyogQXVkaW9Db250ZXh0U3RhdGUuaCAqLzsgfTsKIAkJODNDMDVBNUIxQTY4
NjIxMjAwN0U1REVBIC8qIFN0eWxlUHJvcGVydHlTaG9ydGhhbmRGdW5jdGlvbnMuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgzQzA1QTU5MUE2ODYyMTIw
MDdFNURFQSAvKiBTdHlsZVByb3BlcnR5U2hvcnRoYW5kRnVuY3Rpb25zLmggKi87IH07CiAJCTgz
QzFGNTk0MUVERjY5RDMwMDQxMEQyNyAvKiBRdWFsaWZpZWROYW1lQ2FjaGUuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgzQzFGNTkyMUVERjY5RDMwMDQx
MEQyNyAvKiBRdWFsaWZpZWROYW1lQ2FjaGUuaCAqLzsgfTsKIAkJODNDNDVCOEUxREMyQjY4QTAw
ODg3MUJBIC8qIFZhbGlkYXRpb25CdWJibGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDgzQzQ1QjhEMURDMkI2N0MwMDg4NzFCQSAvKiBWYWxpZGF0aW9u
QnViYmxlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
QEAgLTEwMjk3LDExICsxMDMwMywxNiBAQAogCQk4MzAwMzBGMzFCN0QzM0E2MDBFRDNBQUMgLyog
R2VuZXJpY0NhY2hlZEhUTUxDb2xsZWN0aW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IEdlbmVyaWNDYWNoZWRIVE1MQ29sbGVjdGlvbi5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTgzMDAzMEY0MUI3RDMzQTYwMEVEM0FBQyAvKiBHZW5lcmljQ2Fj
aGVkSFRNTENvbGxlY3Rpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gR2Vu
ZXJpY0NhY2hlZEhUTUxDb2xsZWN0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTgzMDAzMEY3MUI3RDM5ODgwMEVEM0FBQyAvKiBDYWNoZWRIVE1MQ29sbGVjdGlvbi5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDYWNoZWRIVE1MQ29sbGVjdGlvbi5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQk4MzAwM0UyQjI0OTk5N0E4MDA2MEFGOTQgLyogV2Vi
S2l0QXVkaW9Db250ZXh0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IFdlYktpdEF1ZGlvQ29udGV4dC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTgz
MDMzNEZCMUY1NDkwNTIwMDRERjcwNyAvKiBGaWxlU3lzdGVtRGlyZWN0b3J5UmVhZGVyLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEZpbGVTeXN0ZW1EaXJlY3RvcnlS
ZWFkZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4MzAzMzRGQzFGNTQ5MDUy
MDA0REY3MDcgLyogRmlsZVN5c3RlbURpcmVjdG9yeVJlYWRlci5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBGaWxlU3lzdGVtRGlyZWN0b3J5UmVhZGVyLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTgzMDMzNEZEMUY1NDkwNTIwMDRERjcwNyAvKiBGaWxlU3lzdGVt
RW50cmllc0NhbGxiYWNrLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBGaWxlU3lzdGVtRW50
cmllc0NhbGxiYWNrLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODMwMzM0RkUx
RjU0OTA1MjAwNERGNzA3IC8qIEZpbGVTeXN0ZW1FbnRyaWVzQ2FsbGJhY2suaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRmlsZVN5c3RlbUVudHJpZXNDYWxsYmFjay5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4MzAzMzRGRjFGNTQ5MDUyMDA0REY3MDcgLyogRmls
ZVN5c3RlbURpcmVjdG9yeVJlYWRlci5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gRmlsZVN5
c3RlbURpcmVjdG9yeVJlYWRlci5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTgz
MDQwMjdEMjQ5QTdBNUIwMEE5MEQ4RCAvKiBEaXN0YW5jZU1vZGVsVHlwZS5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBEaXN0YW5jZU1vZGVsVHlwZS5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQk4MzA0MDI3RjI0OUE3QTVDMDBBOTBEOEQgLyogRGlzdGFuY2VNb2Rl
bFR5cGUuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IERpc3RhbmNlTW9kZWxUeXBlLmlkbDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJODMwNDAyODAyNDlBN0E1QzAwQTkwRDhEIC8q
IFBhbm5pbmdNb2RlbFR5cGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUGFu
bmluZ01vZGVsVHlwZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk4MzA0MDI4MTI0
OUE3QTVEMDBBOTBEOEQgLyogUGFubmluZ01vZGVsVHlwZS5pZGwgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBw
YXRoID0gUGFubmluZ01vZGVsVHlwZS5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTgzMDUxOTkyMUJCMEYwRTcwMEYzNzcyRSAvKiBIVE1MVGltZUVsZW1lbnQuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSFRNTFRpbWVFbGVtZW50LmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODMwNTE5OTMxQkIwRjBFNzAwRjM3NzJFIC8qIEhUTUxU
aW1lRWxlbWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBIVE1MVGltZUVs
ZW1lbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODMwNTE5OTQxQkIwRjBFNzAw
RjM3NzJFIC8qIEhUTUxUaW1lRWxlbWVudC5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gSFRN
TFRpbWVFbGVtZW50LmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTEwMzE0LDYg
KzEwMzI1LDEyIEBACiAJCTgzMTAyQjI1MUY5RUFEQzIwMEU0MDRCOSAvKiBKU0V4dGVuZGFibGVN
ZXNzYWdlRXZlbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNF
eHRlbmRhYmxlTWVzc2FnZUV2ZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
ODMxMUMwMDAxRkFBMkU4OTAwRTNDOEU1IC8qIFNXU2VydmVySm9iUXVldWUuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU1dTZXJ2ZXJKb2JRdWV1ZS5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTgzMTFDMDAyMUZBQTJFODkwMEUzQzhFNSAvKiBTV1Nl
cnZlckpvYlF1ZXVlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNXU2VydmVy
Sm9iUXVldWUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJODMxQjYxNkYyNDk5QTU5
ODAwQzA3Qzc5IC8qIFdlYktpdEF1ZGlvUGFubmVyTm9kZS5pZGwgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBw
YXRoID0gV2ViS2l0QXVkaW9QYW5uZXJOb2RlLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJODMxQjYxNzEyNDk5QTU5OTAwQzA3Qzc5IC8qIFdlYktpdEF1ZGlvUGFubmVyTm9kZS5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJLaXRBdWRpb1Bhbm5l
ck5vZGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk4MzFCNjE3MjI0OTlBNTlB
MDBDMDdDNzkgLyogV2ViS2l0T2ZmbGluZUF1ZGlvQ29udGV4dC5pZGwgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0
OyBwYXRoID0gV2ViS2l0T2ZmbGluZUF1ZGlvQ29udGV4dC5pZGw7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTgzMUI2MTczMjQ5OUE1OUIwMEMwN0M3OSAvKiBXZWJLaXRPZmZsaW5lQXVk
aW9Db250ZXh0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYktp
dE9mZmxpbmVBdWRpb0NvbnRleHQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk4
MzFCNjE3NDI0OTlBNTlDMDBDMDdDNzkgLyogV2ViS2l0QXVkaW9QYW5uZXJOb2RlLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYktpdEF1ZGlvUGFubmVyTm9kZS5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQk4MzFCNjE3NTI0OTlBNTlEMDBDMDdDNzkgLyogV2Vi
S2l0T2ZmbGluZUF1ZGlvQ29udGV4dC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBXZWJLaXRPZmZsaW5lQXVkaW9Db250ZXh0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTgzMUM0NkMzMUY5RUU1RTAwMEVCRDQ1MCAvKiBKU0V4dGVuZGFibGVNZXNzYWdlRXZlbnRD
dXN0b20uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNFeHRlbmRh
YmxlTWVzc2FnZUV2ZW50Q3VzdG9tLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
ODMxRDFGMjkxQzU2RUNBMDAwRjVGNkMwIC8qIEhUTUxEYXRhRWxlbWVudC5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBIVE1MRGF0YUVsZW1lbnQuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk4MzIxNTA3QTFGMjdFQTE1MDA5NUIxMzYgLyogTmF2aWdh
dG9yQmVhY29uLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE5hdmlnYXRvckJlYWNvbi5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xMDQ0MSw2ICsxMDQ1OCw4IEBACiAJCTgzOUFB
RkVCMUEwQzBDOEQwMDYwNUY5OSAvKiBIVE1MV0JSRWxlbWVudC5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBIVE1MV0JSRWxlbWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk4M0E0QTlGODFDRTdGRDdFMDA3MDlCMDAgLyogSlNYTUxEb2N1bWVudEN1c3RvbS5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU1hNTERvY3VtZW50Q3Vz
dG9tLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODNBOEFDM0UxRkFCQkZEMTAw
MjA2NEFDIC8qIFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTgzQjFBNkZGMjQ5OTg1RDAwMEZFNTk2MSAvKiBXZWJLaXRBdWRpb0NvbnRl
eHQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViS2l0QXVkaW9Db250ZXh0
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTgzQjFBNzAxMjQ5OTg1RDAwMEZFNTk2
MSAvKiBXZWJLaXRBdWRpb0NvbnRleHQuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFdlYktp
dEF1ZGlvQ29udGV4dC5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTgzQjI1MDA5
MUZBMTE4MUMwMEJDMDJEOSAvKiBKU1NlcnZpY2VXb3JrZXJDbGllbnRUeXBlLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTU2VydmljZVdvcmtlckNsaWVudFR5cGUuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODNCMjUwMEIxRkExMTgxRDAwQkMwMkQ5IC8qIEpT
U2VydmljZVdvcmtlckNsaWVudFR5cGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gSlNTZXJ2aWNlV29ya2VyQ2xpZW50VHlwZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTgzQjVEQTQ1MUZBOTA3OTMwMEI1OURGNCAvKiBKU05hdmlnYXRvckN1c3Rv
bS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU05hdmlnYXRvckN1
c3RvbS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xMDQ0OCw2ICsxMDQ2Nyw4
IEBACiAJCTgzQjc0RUYzMUYzRTBCRDcwMDk5NkJDNyAvKiBLZWVwYWxpdmVSZXF1ZXN0VHJhY2tl
ci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBLZWVwYWxpdmVSZXF1ZXN0VHJh
Y2tlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4M0I5Njg3OTE5RjhBQjgzMDA0
RUY3QUYgLyogU3R5bGVCdWlsZGVyQ29udmVydGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFN0eWxlQnVpbGRlckNvbnZlcnRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk4M0JCNUM4NzFENUQ2RjNBMDA1QTcxRjQgLyogQWxsRGVzY2VuZGFudHNDb2xsZWN0
aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFsbERlc2NlbmRhbnRzQ29s
bGVjdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk4M0JEM0NFQjI0OTk4Q0M1
MDBCQTNFNjcgLyogQXVkaW9Db250ZXh0U3RhdGUuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9
IEF1ZGlvQ29udGV4dFN0YXRlLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJODNC
RDNDRUQyNDk5OERGNjAwQkEzRTY3IC8qIEF1ZGlvQ29udGV4dFN0YXRlLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEF1ZGlvQ29udGV4dFN0YXRlLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTgzQzA1QTU4MUE2ODYyMTIwMDdFNURFQSAvKiBTdHlsZVByb3BlcnR5
U2hvcnRoYW5kRnVuY3Rpb25zLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFt
ZSA9IFN0eWxlUHJvcGVydHlTaG9ydGhhbmRGdW5jdGlvbnMuY3BwOyBwYXRoID0gRGVyaXZlZFNv
dXJjZXMvV2ViQ29yZS9TdHlsZVByb3BlcnR5U2hvcnRoYW5kRnVuY3Rpb25zLmNwcDsgc291cmNl
VHJlZSA9IEJVSUxUX1BST0RVQ1RTX0RJUjsgfTsKIAkJODNDMDVBNTkxQTY4NjIxMjAwN0U1REVB
IC8qIFN0eWxlUHJvcGVydHlTaG9ydGhhbmRGdW5jdGlvbnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBuYW1lID0gU3R5bGVQcm9wZXJ0eVNob3J0aGFuZEZ1bmN0aW9ucy5oOyBwYXRoID0g
RGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9TdHlsZVByb3BlcnR5U2hvcnRoYW5kRnVuY3Rpb25zLmg7
IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19ESVI7IH07CiAJCTgzQzFGNTkxMUVERjY5RDMw
MDQxMEQyNyAvKiBRdWFsaWZpZWROYW1lQ2FjaGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gUXVhbGlmaWVkTmFtZUNhY2hlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKQEAgLTI5MjM5LDYgKzI5MjYwLDggQEAKIAkJCQlGRDMxNUZCQTEyQjAyNjc1MDBD
MUEzNTkgLyogQXVkaW9Db250ZXh0LmNwcCAqLywKIAkJCQlGRDMxNUZCQjEyQjAyNjc1MDBDMUEz
NTkgLyogQXVkaW9Db250ZXh0LmggKi8sCiAJCQkJRkQzMTVGQkMxMkIwMjY3NTAwQzFBMzU5IC8q
IEF1ZGlvQ29udGV4dC5pZGwgKi8sCisJCQkJODNCRDNDRUQyNDk5OERGNjAwQkEzRTY3IC8qIEF1
ZGlvQ29udGV4dFN0YXRlLmggKi8sCisJCQkJODNCRDNDRUIyNDk5OENDNTAwQkEzRTY3IC8qIEF1
ZGlvQ29udGV4dFN0YXRlLmlkbCAqLywKIAkJCQlGRDMxNUZCRDEyQjAyNjc1MDBDMUEzNTkgLyog
QXVkaW9EZXN0aW5hdGlvbk5vZGUuY3BwICovLAogCQkJCUZEMzE1RkJFMTJCMDI2NzUwMEMxQTM1
OSAvKiBBdWRpb0Rlc3RpbmF0aW9uTm9kZS5oICovLAogCQkJCUZEMzE1RkJGMTJCMDI2NzUwMEMx
QTM1OSAvKiBBdWRpb0Rlc3RpbmF0aW9uTm9kZS5pZGwgKi8sCkBAIC0yOTI4OSw2ICsyOTMxMiw4
IEBACiAJCQkJRkQzMTVGRTUxMkIwMjY3NjAwQzFBMzU5IC8qIERlbGF5Tm9kZS5pZGwgKi8sCiAJ
CQkJRkQzMTVGRTYxMkIwMjY3NjAwQzFBMzU5IC8qIERlbGF5UHJvY2Vzc29yLmNwcCAqLywKIAkJ
CQlGRDMxNUZFNzEyQjAyNjc2MDBDMUEzNTkgLyogRGVsYXlQcm9jZXNzb3IuaCAqLywKKwkJCQk4
MzA0MDI3RDI0OUE3QTVCMDBBOTBEOEQgLyogRGlzdGFuY2VNb2RlbFR5cGUuaCAqLywKKwkJCQk4
MzA0MDI3RjI0OUE3QTVDMDBBOTBEOEQgLyogRGlzdGFuY2VNb2RlbFR5cGUuaWRsICovLAogCQkJ
CUZENkVEMkMxMTM2QjhFNDIwMDNDRjA3MiAvKiBEeW5hbWljc0NvbXByZXNzb3JOb2RlLmNwcCAq
LywKIAkJCQlGRDZFRDJDMjEzNkI4RTQyMDAzQ0YwNzIgLyogRHluYW1pY3NDb21wcmVzc29yTm9k
ZS5oICovLAogCQkJCUZENkVEMkM5MTM2QjhFOUQwMDNDRjA3MiAvKiBEeW5hbWljc0NvbXByZXNz
b3JOb2RlLmlkbCAqLywKQEAgLTI5MzIxLDYgKzI5MzQ2LDggQEAKIAkJCQlGRDMxNUZDRjEyQjAy
Njc1MDBDMUEzNTkgLyogUGFubmVyTm9kZS5jcHAgKi8sCiAJCQkJRkQzMTVGRDAxMkIwMjY3NTAw
QzFBMzU5IC8qIFBhbm5lck5vZGUuaCAqLywKIAkJCQlGRDMxNUZEMTEyQjAyNjc1MDBDMUEzNTkg
LyogUGFubmVyTm9kZS5pZGwgKi8sCisJCQkJODMwNDAyODAyNDlBN0E1QzAwQTkwRDhEIC8qIFBh
bm5pbmdNb2RlbFR5cGUuaCAqLywKKwkJCQk4MzA0MDI4MTI0OUE3QTVEMDBBOTBEOEQgLyogUGFu
bmluZ01vZGVsVHlwZS5pZGwgKi8sCiAJCQkJRkQ1ODFGQjExNTIwRjkzQjAwM0E3QTc1IC8qIFBl
cmlvZGljV2F2ZS5jcHAgKi8sCiAJCQkJRkQ1ODFGQjIxNTIwRjkzQjAwM0E3QTc1IC8qIFBlcmlv
ZGljV2F2ZS5oICovLAogCQkJCUZENTgxRkIzMTUyMEY5M0IwMDNBN0E3NSAvKiBQZXJpb2RpY1dh
dmUuaWRsICovLApAQCAtMjkzMzYsNiArMjkzNjMsMTUgQEAKIAkJCQlGRDdGMjk4RTEzRDRDMENC
MDBBRDk1MzUgLyogV2F2ZVNoYXBlck5vZGUuaWRsICovLAogCQkJCUZEN0YyOThGMTNENEMwQ0Iw
MEFEOTUzNSAvKiBXYXZlU2hhcGVyUHJvY2Vzc29yLmNwcCAqLywKIAkJCQlGRDdGMjk5MDEzRDRD
MENCMDBBRDk1MzUgLyogV2F2ZVNoYXBlclByb2Nlc3Nvci5oICovLAorCQkJCTgzMDAzRTJCMjQ5
OTk3QTgwMDYwQUY5NCAvKiBXZWJLaXRBdWRpb0NvbnRleHQuY3BwICovLAorCQkJCTgzQjFBNkZG
MjQ5OTg1RDAwMEZFNTk2MSAvKiBXZWJLaXRBdWRpb0NvbnRleHQuaCAqLywKKwkJCQk4M0IxQTcw
MTI0OTk4NUQwMDBGRTU5NjEgLyogV2ViS2l0QXVkaW9Db250ZXh0LmlkbCAqLywKKwkJCQk4MzFC
NjE3MTI0OTlBNTk5MDBDMDdDNzkgLyogV2ViS2l0QXVkaW9QYW5uZXJOb2RlLmNwcCAqLywKKwkJ
CQk4MzFCNjE3NDI0OTlBNTlDMDBDMDdDNzkgLyogV2ViS2l0QXVkaW9QYW5uZXJOb2RlLmggKi8s
CisJCQkJODMxQjYxNkYyNDk5QTU5ODAwQzA3Qzc5IC8qIFdlYktpdEF1ZGlvUGFubmVyTm9kZS5p
ZGwgKi8sCisJCQkJODMxQjYxNzMyNDk5QTU5QjAwQzA3Qzc5IC8qIFdlYktpdE9mZmxpbmVBdWRp
b0NvbnRleHQuY3BwICovLAorCQkJCTgzMUI2MTc1MjQ5OUE1OUQwMEMwN0M3OSAvKiBXZWJLaXRP
ZmZsaW5lQXVkaW9Db250ZXh0LmggKi8sCisJCQkJODMxQjYxNzIyNDk5QTU5QTAwQzA3Qzc5IC8q
IFdlYktpdE9mZmxpbmVBdWRpb0NvbnRleHQuaWRsICovLAogCQkJKTsKIAkJCXBhdGggPSB3ZWJh
dWRpbzsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CkBAIC0yOTczMiw2ICsyOTc2OCw3IEBA
CiAJCQkJRkQzMTYwN0MxMkIwMjZGNzAwQzFBMzU5IC8qIEF1ZGlvQnVzLmggaW4gSGVhZGVycyAq
LywKIAkJCQlGRDMxNjA3RTEyQjAyNkY3MDBDMUEzNTkgLyogQXVkaW9DaGFubmVsLmggaW4gSGVh
ZGVycyAqLywKIAkJCQlGRDMxNjAwNTEyQjAyNjc2MDBDMUEzNTkgLyogQXVkaW9Db250ZXh0Lmgg
aW4gSGVhZGVycyAqLywKKwkJCQk4M0JEM0NFRTI0OTk4RTAxMDBCQTNFNjcgLyogQXVkaW9Db250
ZXh0U3RhdGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUZEMzE2MDdGMTJCMDI2RjcwMEMxQTM1OSAv
KiBBdWRpb0Rlc3RpbmF0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQk5QjEyMjlDNDIzRkU0QkQy
MDA4Q0E3NTEgLyogQXVkaW9EZXN0aW5hdGlvbkNvY29hLmggaW4gSGVhZGVycyAqLywKIAkJCQlG
RDMxNjBCRDEyQjAyNzJBMDBDMUEzNTkgLyogQXVkaW9EZXN0aW5hdGlvbk1hYy5oIGluIEhlYWRl
cnMgKi8sCkBAIC0zMDM4Nyw2ICszMDQyNCw3IEBACiAJCQkJMkQyOUVDQzgxOTJFQ0M4MzAwOTg0
Qjc4IC8qIERpc3BsYXlSZWZyZXNoTW9uaXRvck1hbmFnZXIuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTZGQ0UxQTFBMjI2MThBQkQwMDRGMDM0MyAvKiBEaXNwbGF5UnVuLmggaW4gSGVhZGVycyAqLywK
IAkJCQlGRDMxNjA5MTEyQjAyNkY3MDBDMUEzNTkgLyogRGlzdGFuY2UuaCBpbiBIZWFkZXJzICov
LAorCQkJCTgzMDQwMjgzMjQ5QTdBNjIwMEE5MEQ4RCAvKiBEaXN0YW5jZU1vZGVsVHlwZS5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJODQ3MzBENzcxMjQ4RjBCMzAwRDNBOUM5IC8qIERpc3RhbnRMaWdo
dFNvdXJjZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjJGMzRGRTYwRTgyRjgxNDAwRjYyN0NEIC8q
IEROUy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJN0VFNjg0NkYxMkQyNkUzODAwRTczMjE1IC8qIERO
U1Jlc29sdmVRdWV1ZUNGTmV0LmggaW4gSGVhZGVycyAqLywKQEAgLTMyNDAwLDYgKzMyNDM4LDcg
QEAKIAkJCQlBODBFNkNGQjBBMTk4OUNBMDA3RkI4QzUgLyogUGFpci5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJRkQzMTYwQTMxMkIwMjZGNzAwQzFBMzU5IC8qIFBhbm5lci5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJRkQzMTYwMUExMkIwMjY3NjAwQzFBMzU5IC8qIFBhbm5lck5vZGUuaCBpbiBIZWFkZXJz
ICovLAorCQkJCTgzMDQwMjgyMjQ5QTdBNUYwMEE5MEQ4RCAvKiBQYW5uaW5nTW9kZWxUeXBlLmgg
aW4gSGVhZGVycyAqLywKIAkJCQlBMTg4OTBBRjFBQTEzRjI1MDAyNkMzMDEgLyogUGFyZW50YWxD
b250cm9sc0NvbnRlbnRGaWx0ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUNEQ0Q0MUU4MUMzRERC
MEEwMDk2NUQ5OSAvKiBQYXJzZWRDb250ZW50UmFuZ2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTQ0
Nzk1ODA0MTY0M0I0OUEwMDFFMEE3RiAvKiBQYXJzZWRDb250ZW50VHlwZS5oIGluIEhlYWRlcnMg
Ki8sCkBAIC0zMzcyOCw2ICszMzc2Nyw4IEBACiAJCQkJQTU4NEZFMzAxODY0Q0I4NDAwODQzQjEw
IC8qIFdlYkluamVjdGVkU2NyaXB0TWFuYWdlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRjQ4MjIz
MTExRTM4NjlCODAwNjZGQzc5IC8qIFdlYkl0ZW1Qcm92aWRlclBhc3RlYm9hcmQuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTMxQzBGRjIyMEU0Q0VCNkUwMDdENkZFNSAvKiBXZWJLaXRBbmltYXRpb25F
dmVudC5oIGluIEhlYWRlcnMgKi8sCisJCQkJODNCMUE3MDIyNDk5ODVGMDAwRkU1OTYxIC8qIFdl
YktpdEF1ZGlvQ29udGV4dC5oIGluIEhlYWRlcnMgKi8sCisJCQkJODMxQjYxNzYyNDk5QTVCQjAw
QzA3Qzc5IC8qIFdlYktpdEF1ZGlvUGFubmVyTm9kZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNURG
RUJBQjcxODU5MkI2RDAwQzc1QkVCIC8qIFdlYktpdEF2YWlsYWJpbGl0eS5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJNDk4MzkxNTkwRjFFNzc2OTAwQzIzNzgyIC8qIFdlYktpdENTU01hdHJpeC5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJMkQwNjIxNDUxREE2MzlCQTAwQTdGQjI2IC8qIFdlYktpdE1lZGlh
S2V5TWVzc2FnZUV2ZW50LmggaW4gSGVhZGVycyAqLywKQEAgLTMzNzM2LDYgKzMzNzc3LDcgQEAK
IAkJCQkyRDA2MjE1MDFEQTYzQTk0MDBBN0ZCMjYgLyogV2ViS2l0TWVkaWFLZXlTZXNzaW9uLmgg
aW4gSGVhZGVycyAqLywKIAkJCQk3QzQ4QTZEMTE5MUM5RDY1MDAwMjY2NzQgLyogV2ViS2l0TmFt
ZXNwYWNlLmggaW4gSGVhZGVycyAqLywKIAkJCQk3QTIyNzMyMTIwQzlGQUZFMDBEQjFERUYgLyog
V2ViS2l0TlNJbWFnZUV4dHJhcy5oIGluIEhlYWRlcnMgKi8sCisJCQkJODMxQjYxNzcyNDk5QTVC
RjAwQzA3Qzc5IC8qIFdlYktpdE9mZmxpbmVBdWRpb0NvbnRleHQuaCBpbiBIZWFkZXJzICovLAog
CQkJCUE1REVCREE0MTZGQjkwODcwMDgzNkZFMCAvKiBXZWJLaXRQbGF5YmFja1RhcmdldEF2YWls
YWJpbGl0eUV2ZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQk0OTRCRDc5NTBGNTVDOEVFMDA3NDc4
MjggLyogV2ViS2l0UG9pbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTMxQzBGRjI1MEU0Q0VCNkUw
MDdENkZFNSAvKiBXZWJLaXRUcmFuc2l0aW9uRXZlbnQuaCBpbiBIZWFkZXJzICovLApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvV2ViQ29yZUJ1aWx0aW5OYW1lcy5oIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvV2ViQ29yZUJ1aWx0aW5OYW1lcy5oCmluZGV4IDQ5
OTdhYjk5M2NiNzk1NDU3NWE4NDMxN2Q2OWMyMGNjZWM2YTdkMDkuLmY5MTk3YzI2YWU5YTRjMzlj
OTIyM2I1NDFkNTlmYmMwYTgyMGU5OWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL1dlYkNvcmVCdWlsdGluTmFtZXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9XZWJDb3JlQnVpbHRpbk5hbWVzLmgKQEAgLTQ5LDYgKzQ5LDcgQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogICAgIG1hY3JvKEFwcGxlUGF5U2V0dXBGZWF0dXJlKSBcCiAgICAgbWFjcm8oQXR0
YWNobWVudEVsZW1lbnQpIFwKICAgICBtYWNybyhBdWRpbykgXAorICAgIG1hY3JvKEF1ZGlvQ29u
dGV4dCkgXAogICAgIG1hY3JvKEF1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZSkgXAogICAg
IG1hY3JvKEF1dGhlbnRpY2F0b3JBdHRlc3RhdGlvblJlc3BvbnNlKSBcCiAgICAgbWFjcm8oQXV0
aGVudGljYXRvclJlc3BvbnNlKSBcCkBAIC0xNjUsOSArMTY2LDExIEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKICAgICBtYWNybyhOYXZpZ2F0b3JDcmVkZW50aWFscykgXAogICAgIG1hY3JvKE5hdmln
YXRvck1lZGlhRGV2aWNlcykgXAogICAgIG1hY3JvKE5hdmlnYXRvclVzZXJNZWRpYSkgXAorICAg
IG1hY3JvKE9mZmxpbmVBdWRpb0NvbnRleHQpIFwKICAgICBtYWNybyhPZmZzY3JlZW5DYW52YXMp
IFwKICAgICBtYWNybyhPZmZzY3JlZW5DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQpIFwKICAgICBt
YWNybyhQYWludFJlbmRlcmluZ0NvbnRleHQyRCkgXAorICAgIG1hY3JvKFBhbm5lck5vZGUpIFwK
ICAgICBtYWNybyhQYXltZW50QWRkcmVzcykgXAogICAgIG1hY3JvKFBheW1lbnRNZXRob2RDaGFu
Z2VFdmVudCkgXAogICAgIG1hY3JvKFBheW1lbnRSZXF1ZXN0KSBcCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vRXZlbnRUYXJnZXRGYWN0b3J5LmluIGIvU291cmNlL1dlYkNvcmUvZG9t
L0V2ZW50VGFyZ2V0RmFjdG9yeS5pbgppbmRleCBmYzFkYjJjZTBlMDY1MDAyOGNkNGNiY2U0OWVi
ZDMyOTQ0YjMyYjM0Li5hMTU0YjQ0NWExM2FkNDc2OTYyOWQ5ZjdkOTM3N2E5ZGYxNTBmN2FjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRUYXJnZXRGYWN0b3J5LmluCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudFRhcmdldEZhY3RvcnkuaW4KQEAgLTUzLDYgKzUzLDcg
QEAgVmlkZW9UcmFja0xpc3QgY29uZGl0aW9uYWw9VklERU8KIFZpc3VhbFZpZXdwb3J0CiBXZWJB
bmltYXRpb24KIFdlYkdQVURldmljZSBjb25kaXRpb25hbD1XRUJHUFUKK1dlYktpdEF1ZGlvQ29u
dGV4dCBjb25kaXRpb25hbD1XRUJfQVVESU8KIFdlYktpdE1lZGlhS2V5U2Vzc2lvbiBjb25kaXRp
b25hbD1MRUdBQ1lfRU5DUllQVEVEX01FRElBCiBXZWJTb2NrZXQKIFdvcmtlcgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGFnZS9TZXR0aW5ncy55YW1sIGIvU291cmNlL1dlYkNvcmUvcGFn
ZS9TZXR0aW5ncy55YW1sCmluZGV4IDJkNmJjNmZmMmVmMGIwMDBkZDRlOTgwNmNlZDZjNDhmYjQ3
MGJlM2EuLjU4M2ZjNmY3OTVlZmMwNzAyZmIzODQwZGI0ZTgxMWI4ODYwOWZhM2UgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3MueWFtbAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL1NldHRpbmdzLnlhbWwKQEAgLTI1NSw2ICsyNTUsOCBAQCBsb2FkRGVmZXJyaW5nRW5h
YmxlZDoKICAgaW5pdGlhbDogdHJ1ZQogd2ViQXVkaW9FbmFibGVkOgogICBpbml0aWFsOiBmYWxz
ZQorbW9kZXJuVW5wcmVmaXhlZFdlYkF1ZGlvRW5hYmxlZDoKKyAgaW5pdGlhbDogZmFsc2UKIHBh
Z2luYXRlRHVyaW5nTGF5b3V0RW5hYmxlZDoKICAgaW5pdGlhbDogZmFsc2UKIGZ1bGxTY3JlZW5F
bmFibGVkOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3Bw
IGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCmluZGV4IDBmNWMxOTdhMjk4
MDdlNzYzY2FlYmYwOTAyYTRjZjlhNjIwOGI5N2MuLjYyZmFmYmVkMGNjY2U3NzQzY2UyZDRiMTk3
M2UwMTc4MjE4NDNjZTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJu
YWxzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKQEAgLTI4
MCw2ICsyODAsNyBAQAogCiAjaWYgRU5BQkxFKFdFQl9BVURJTykKICNpbmNsdWRlICJBdWRpb0Nv
bnRleHQuaCIKKyNpbmNsdWRlICJXZWJLaXRBdWRpb0NvbnRleHQuaCIKICNlbmRpZgogCiAjaWYg
RU5BQkxFKE1FRElBX1NFU1NJT04pCkBAIC00MjkwLDIyICs0MjkxLDI5IEBAIHZvaWQgSW50ZXJu
YWxzOjpzZW5kTWVkaWFDb250cm9sRXZlbnQoTWVkaWFDb250cm9sRXZlbnQgZXZlbnQpCiAjZW5k
aWYgLy8gRU5BQkxFKE1FRElBX1NFU1NJT04pCiAKICNpZiBFTkFCTEUoV0VCX0FVRElPKQotdm9p
ZCBJbnRlcm5hbHM6OnNldEF1ZGlvQ29udGV4dFJlc3RyaWN0aW9ucyhBdWRpb0NvbnRleHQmIGNv
bnRleHQsIFN0cmluZ1ZpZXcgcmVzdHJpY3Rpb25zU3RyaW5nKQordm9pZCBJbnRlcm5hbHM6OnNl
dEF1ZGlvQ29udGV4dFJlc3RyaWN0aW9ucyhjb25zdCBWYXJpYW50PFJlZlB0cjxBdWRpb0NvbnRl
eHQ+LCBSZWZQdHI8V2ViS2l0QXVkaW9Db250ZXh0Pj4mIGNvbnRleHRWYXJpYW50LCBTdHJpbmdW
aWV3IHJlc3RyaWN0aW9uc1N0cmluZykKIHsKLSAgICBBdWRpb0NvbnRleHQ6OkJlaGF2aW9yUmVz
dHJpY3Rpb25zIHJlc3RyaWN0aW9ucyA9IGNvbnRleHQuYmVoYXZpb3JSZXN0cmljdGlvbnMoKTsK
LSAgICBjb250ZXh0LnJlbW92ZUJlaGF2aW9yUmVzdHJpY3Rpb24ocmVzdHJpY3Rpb25zKTsKKyAg
ICBSZWZQdHI8QXVkaW9Db250ZXh0QmFzZT4gY29udGV4dDsKKyAgICBzd2l0Y2hPbihjb250ZXh0
VmFyaWFudCwgWyZdKFJlZlB0cjxBdWRpb0NvbnRleHQ+IGVudHJ5KSB7CisgICAgICAgIGNvbnRl
eHQgPSBlbnRyeTsKKyAgICB9LCBbJl0oUmVmUHRyPFdlYktpdEF1ZGlvQ29udGV4dD4gZW50cnkp
IHsKKyAgICAgICAgY29udGV4dCA9IGVudHJ5OworICAgIH0pOworCisgICAgYXV0byByZXN0cmlj
dGlvbnMgPSBjb250ZXh0LT5iZWhhdmlvclJlc3RyaWN0aW9ucygpOworICAgIGNvbnRleHQtPnJl
bW92ZUJlaGF2aW9yUmVzdHJpY3Rpb24ocmVzdHJpY3Rpb25zKTsKIAotICAgIHJlc3RyaWN0aW9u
cyA9IEF1ZGlvQ29udGV4dDo6Tm9SZXN0cmljdGlvbnM7CisgICAgcmVzdHJpY3Rpb25zID0gQXVk
aW9Db250ZXh0QmFzZTo6Tm9SZXN0cmljdGlvbnM7CiAKICAgICBmb3IgKFN0cmluZ1ZpZXcgcmVz
dHJpY3Rpb25TdHJpbmcgOiByZXN0cmljdGlvbnNTdHJpbmcuc3BsaXQoJywnKSkgewogICAgICAg
ICBpZiAoZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UocmVzdHJpY3Rpb25TdHJpbmcsICJu
b3Jlc3RyaWN0aW9ucyIpKQotICAgICAgICAgICAgcmVzdHJpY3Rpb25zIHw9IEF1ZGlvQ29udGV4
dDo6Tm9SZXN0cmljdGlvbnM7CisgICAgICAgICAgICByZXN0cmljdGlvbnMgfD0gQXVkaW9Db250
ZXh0QmFzZTo6Tm9SZXN0cmljdGlvbnM7CiAgICAgICAgIGlmIChlcXVhbExldHRlcnNJZ25vcmlu
Z0FTQ0lJQ2FzZShyZXN0cmljdGlvblN0cmluZywgInJlcXVpcmV1c2VyZ2VzdHVyZWZvcmF1ZGlv
c3RhcnQiKSkKLSAgICAgICAgICAgIHJlc3RyaWN0aW9ucyB8PSBBdWRpb0NvbnRleHQ6OlJlcXVp
cmVVc2VyR2VzdHVyZUZvckF1ZGlvU3RhcnRSZXN0cmljdGlvbjsKKyAgICAgICAgICAgIHJlc3Ry
aWN0aW9ucyB8PSBBdWRpb0NvbnRleHRCYXNlOjpSZXF1aXJlVXNlckdlc3R1cmVGb3JBdWRpb1N0
YXJ0UmVzdHJpY3Rpb247CiAgICAgICAgIGlmIChlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2Fz
ZShyZXN0cmljdGlvblN0cmluZywgInJlcXVpcmVwYWdlY29uc2VudGZvcmF1ZGlvc3RhcnQiKSkK
LSAgICAgICAgICAgIHJlc3RyaWN0aW9ucyB8PSBBdWRpb0NvbnRleHQ6OlJlcXVpcmVQYWdlQ29u
c2VudEZvckF1ZGlvU3RhcnRSZXN0cmljdGlvbjsKKyAgICAgICAgICAgIHJlc3RyaWN0aW9ucyB8
PSBBdWRpb0NvbnRleHRCYXNlOjpSZXF1aXJlUGFnZUNvbnNlbnRGb3JBdWRpb1N0YXJ0UmVzdHJp
Y3Rpb247CiAgICAgfQotICAgIGNvbnRleHQuYWRkQmVoYXZpb3JSZXN0cmljdGlvbihyZXN0cmlj
dGlvbnMpOworICAgIGNvbnRleHQtPmFkZEJlaGF2aW9yUmVzdHJpY3Rpb24ocmVzdHJpY3Rpb25z
KTsKIH0KIAogdm9pZCBJbnRlcm5hbHM6OnVzZU1vY2tBdWRpb0Rlc3RpbmF0aW9uQ29jb2EoKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaCBiL1NvdXJjZS9X
ZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmgKaW5kZXggMzQyMjc5OTRkNjRmYWQ2ZjYyOWQzODI2
MGE3MWIwYTU2OTg5MmJkYS4uYzFmYWQ5YmYyOTVjOTZjYWRiYjgyZTFkNmI1MDczNjRjMzFiZDAx
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5oCkBAIC0xMDgsNiArMTA4LDcgQEAgY2xh
c3MgVW5zdXNwZW5kYWJsZUFjdGl2ZURPTU9iamVjdDsKIGNsYXNzIFZvaWRDYWxsYmFjazsKIGNs
YXNzIFdlYkFuaW1hdGlvbjsKIGNsYXNzIFdlYkdMUmVuZGVyaW5nQ29udGV4dDsKK2NsYXNzIFdl
YktpdEF1ZGlvQ29udGV4dDsKIGNsYXNzIFdpbmRvd1Byb3h5OwogY2xhc3MgWE1MSHR0cFJlcXVl
c3Q7CiAKQEAgLTY3NCw3ICs2NzUsNyBAQCBwdWJsaWM6CiAjZW5kaWYKIAogI2lmIEVOQUJMRShX
RUJfQVVESU8pCi0gICAgdm9pZCBzZXRBdWRpb0NvbnRleHRSZXN0cmljdGlvbnMoQXVkaW9Db250
ZXh0JiwgU3RyaW5nVmlldyByZXN0cmljdGlvbnNTdHJpbmcpOworICAgIHZvaWQgc2V0QXVkaW9D
b250ZXh0UmVzdHJpY3Rpb25zKGNvbnN0IFZhcmlhbnQ8UmVmUHRyPEF1ZGlvQ29udGV4dD4sIFJl
ZlB0cjxXZWJLaXRBdWRpb0NvbnRleHQ+PiYsIFN0cmluZ1ZpZXcgcmVzdHJpY3Rpb25zU3RyaW5n
KTsKICAgICB2b2lkIHVzZU1vY2tBdWRpb0Rlc3RpbmF0aW9uQ29jb2EoKTsKICNlbmRpZgogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5pZGwgYi9Tb3VyY2Uv
V2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5pZGwKaW5kZXggODdhNzRiNWY5YWRlOTk4YjUyM2Ex
NGU5ZmE1MTM2NTVlODg4MTcyYi4uMmEzM2M5YWE1MWVhYjViNzY2OGY2MDk2ODRhMjExYTdiN2Q1
YzNlNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaWRsCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlkbApAQCAtNjc2LDcgKzY3Niw3
IEBAIGVudW0gQ29tcG9zaXRpbmdQb2xpY3kgewogICAgIFtDb25kaXRpb25hbD1WSURFTywgTWF5
VGhyb3dFeGNlcHRpb25dIHZvaWQgc2V0TWVkaWFTZXNzaW9uUmVzdHJpY3Rpb25zKERPTVN0cmlu
ZyBtZWRpYVR5cGUsIERPTVN0cmluZyByZXN0cmljdGlvbnMpOwogICAgIFtDb25kaXRpb25hbD1W
SURFTywgTWF5VGhyb3dFeGNlcHRpb25dIERPTVN0cmluZyBtZWRpYVNlc3Npb25SZXN0cmljdGlv
bnMoRE9NU3RyaW5nIG1lZGlhVHlwZSk7CiAgICAgW0NvbmRpdGlvbmFsPVZJREVPXSB2b2lkIHNl
dE1lZGlhRWxlbWVudFJlc3RyaWN0aW9ucyhIVE1MTWVkaWFFbGVtZW50IGVsZW1lbnQsIERPTVN0
cmluZyByZXN0cmljdGlvbnMpOwotICAgIFtDb25kaXRpb25hbD1XRUJfQVVESU9dIHZvaWQgc2V0
QXVkaW9Db250ZXh0UmVzdHJpY3Rpb25zKEF1ZGlvQ29udGV4dCBjb250ZXh0LCBET01TdHJpbmcg
cmVzdHJpY3Rpb25zKTsKKyAgICBbQ29uZGl0aW9uYWw9V0VCX0FVRElPXSB2b2lkIHNldEF1ZGlv
Q29udGV4dFJlc3RyaWN0aW9ucygoQXVkaW9Db250ZXh0IG9yIFdlYktpdEF1ZGlvQ29udGV4dCkg
Y29udGV4dCwgRE9NU3RyaW5nIHJlc3RyaWN0aW9ucyk7CiAgICAgW0NvbmRpdGlvbmFsPVZJREVP
LCBNYXlUaHJvd0V4Y2VwdGlvbl0gdm9pZCBwb3N0UmVtb3RlQ29udHJvbENvbW1hbmQoRE9NU3Ry
aW5nIGNvbW1hbmQsIG9wdGlvbmFsIHVucmVzdHJpY3RlZCBmbG9hdCBhcmd1bWVudCA9IDApOwog
ICAgIFtDb25kaXRpb25hbD1XSVJFTEVTU19QTEFZQkFDS19UQVJHRVRdIHZvaWQgc2V0TW9ja01l
ZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJFbmFibGVkKGJvb2xlYW4gZW5hYmxlZCk7CiAgICAgW0Nv
bmRpdGlvbmFsPVdJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVCwgTWF5VGhyb3dFeGNlcHRpb25dIHZv
aWQgc2V0TW9ja01lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJTdGF0ZShET01TdHJpbmcgZGV2aWNl
TmFtZSwgRE9NU3RyaW5nIGRldmljZVN0YXRlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL1dlYlByZWZlcmVuY2VzLnlhbWwgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQcmVm
ZXJlbmNlcy55YW1sCmluZGV4IGZhZDFhOWY1ODg2MjFlOTVlMTliMWE0ZmU3NGVhMzAyMzY0MjQx
M2QuLjUyMzVjZTcxZmY3YTkzMmUxMjM4YzY0MDE5ZGEzMTJjNTkxNmRiNmYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlByZWZlcmVuY2VzLnlhbWwKKysrIGIvU291cmNlL1dl
YktpdC9TaGFyZWQvV2ViUHJlZmVyZW5jZXMueWFtbApAQCAtMzM0LDYgKzMzNCwxNCBAQCBXZWJB
dWRpb0VuYWJsZWQ6CiAgIGRlZmF1bHRWYWx1ZTogdHJ1ZQogICBjb25kaXRpb246IEVOQUJMRShX
RUJfQVVESU8pCiAKK01vZGVyblVucHJlZml4ZWRXZWJBdWRpb0VuYWJsZWQ6CisgIHR5cGU6IGJv
b2wKKyAgZGVmYXVsdFZhbHVlOiBmYWxzZQorICBjb25kaXRpb246IEVOQUJMRShXRUJfQVVESU8p
CisgIGh1bWFuUmVhZGFibGVOYW1lOiAiTW9kZXJuIFdlYkF1ZGlvIEFQSSIKKyAgaHVtYW5SZWFk
YWJsZURlc2NyaXB0aW9uOiAiTW9kZXJuIGFuZCB1bnByZWZpeGVkIFdlYkF1ZGlvIEFQSSIKKyAg
Y2F0ZWdvcnk6IGV4cGVyaW1lbnRhbAorCiBBdHRhY2htZW50RWxlbWVudEVuYWJsZWQ6CiAgIHR5
cGU6IGJvb2wKICAgZGVmYXVsdFZhbHVlOiBmYWxzZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvV2ViVmlldy9XZWJQcmVmZXJlbmNlS2V5c1ByaXZhdGUuaCBiL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViUHJlZmVyZW5jZUtleXNQcml2YXRlLmgKaW5kZXgg
MTU2NDQxZTcyODljMGQzZGUyNDk4MDU4NDc0ODQ0NzQ5Mjg4ZTYyMy4uOGEyM2UxMzQ1MGZiYmFh
ZmYxZjMyMjM5ZjMzZjgzZDY4ZjI2MjU5NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvV2ViVmlldy9XZWJQcmVmZXJlbmNlS2V5c1ByaXZhdGUuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlByZWZlcmVuY2VLZXlzUHJpdmF0ZS5oCkBAIC0xMTgs
NiArMTE4LDcgQEAKICNkZWZpbmUgV2ViS2l0Q29udGVudENoYW5nZU9ic2VydmVyRW5hYmxlZFBy
ZWZlcmVuY2VLZXkgQCJXZWJLaXRDb250ZW50Q2hhbmdlT2JzZXJ2ZXJFbmFibGVkIgogI2RlZmlu
ZSBXZWJLaXRTaG93UmVwYWludENvdW50ZXJQcmVmZXJlbmNlS2V5IEAiV2ViS2l0U2hvd1JlcGFp
bnRDb3VudGVyIgogI2RlZmluZSBXZWJLaXRXZWJBdWRpb0VuYWJsZWRQcmVmZXJlbmNlS2V5IEAi
V2ViS2l0V2ViQXVkaW9FbmFibGVkIgorI2RlZmluZSBXZWJLaXRNb2Rlcm5VbnByZWZpeGVkV2Vi
QXVkaW9FbmFibGVkUHJlZmVyZW5jZUtleSBAIldlYktpdE1vZGVyblVucHJlZml4ZWRXZWJBdWRp
b0VuYWJsZWQiCiAjZGVmaW5lIFdlYktpdFdlYkdMRW5hYmxlZFByZWZlcmVuY2VLZXkgQCJXZWJL
aXRXZWJHTEVuYWJsZWQiCiAjZGVmaW5lIFdlYktpdFdlYkdMMkVuYWJsZWRQcmVmZXJlbmNlS2V5
IEAiV2ViS2l0V2ViR0wyRW5hYmxlZCIKICNkZWZpbmUgV2ViS2l0V2ViR1BVRW5hYmxlZFByZWZl
cmVuY2VLZXkgQCJXZWJLaXRXZWJHUFVFbmFibGVkIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvV2ViVmlldy9XZWJQcmVmZXJlbmNlcy5tbSBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL1dlYlZpZXcvV2ViUHJlZmVyZW5jZXMubW0KaW5kZXggYjg1MjhkMmUwN2I5YzY3MDJi
MGU1NmM0NGExZGE0OTBlZTc0Y2NjZi4uNWM4ZDNjZmY4ZmQyN2FjNTQ4MzY5ZDUzZDFjZTNjOTIz
Yzk2MWI1MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJQ
cmVmZXJlbmNlcy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlBy
ZWZlcmVuY2VzLm1tCkBAIC01NzQsNiArNTc0LDcgQEAgKyAodm9pZClpbml0aWFsaXplCiAgICAg
ICAgIEBOTywgV2ViS2l0RGlhZ25vc3RpY0xvZ2dpbmdFbmFibGVkS2V5LAogICAgICAgICBAKFdl
YkFsbG93QWxsU3RvcmFnZSksIFdlYktpdFN0b3JhZ2VCbG9ja2luZ1BvbGljeUtleSwKICAgICAg
ICAgQE5PLCBXZWJLaXRQbHVnSW5TbmFwc2hvdHRpbmdFbmFibGVkUHJlZmVyZW5jZUtleSwKKyAg
ICAgICAgQE5PLCBXZWJLaXRNb2Rlcm5VbnByZWZpeGVkV2ViQXVkaW9FbmFibGVkUHJlZmVyZW5j
ZUtleSwKIAogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgICAgIEBZRVMsIFdlYktpdENv
bnRlbnRDaGFuZ2VPYnNlcnZlckVuYWJsZWRQcmVmZXJlbmNlS2V5LApAQCAtMjE0OCw2ICsyMTQ5
LDE2IEBAIC0gKHZvaWQpc2V0V2ViQXVkaW9FbmFibGVkOihCT09MKWVuYWJsZWQKICAgICBbc2Vs
ZiBfc2V0Qm9vbFZhbHVlOmVuYWJsZWQgZm9yS2V5OldlYktpdFdlYkF1ZGlvRW5hYmxlZFByZWZl
cmVuY2VLZXldOwogfQogCistIChCT09MKW1vZGVyblVucHJlZml4ZWRXZWJBdWRpb0VuYWJsZWQK
K3sKKyAgICByZXR1cm4gW3NlbGYgX2Jvb2xWYWx1ZUZvcktleTpXZWJLaXRNb2Rlcm5VbnByZWZp
eGVkV2ViQXVkaW9FbmFibGVkUHJlZmVyZW5jZUtleV07Cit9CisKKy0gKHZvaWQpc2V0TW9kZXJu
VW5wcmVmaXhlZFdlYkF1ZGlvRW5hYmxlZDooQk9PTCllbmFibGVkCit7CisgICAgW3NlbGYgX3Nl
dEJvb2xWYWx1ZTplbmFibGVkIGZvcktleTpXZWJLaXRNb2Rlcm5VbnByZWZpeGVkV2ViQXVkaW9F
bmFibGVkUHJlZmVyZW5jZUtleV07Cit9CisKIC0gKEJPT0wpc3VicGl4ZWxDU1NPTUVsZW1lbnRN
ZXRyaWNzRW5hYmxlZAogewogICAgIHJldHVybiBbc2VsZiBfYm9vbFZhbHVlRm9yS2V5OldlYktp
dFN1YnBpeGVsQ1NTT01FbGVtZW50TWV0cmljc0VuYWJsZWRQcmVmZXJlbmNlS2V5XTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViUHJlZmVyZW5jZXNQcml2
YXRlLmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlByZWZlcmVuY2VzUHJp
dmF0ZS5oCmluZGV4IDhjODY2ZWI4YTg5ZDdiODg1NzQ0ODVhNjE3NTZhY2ZiZmZiZGEzYWQuLmE0
NTA5NDcxYTAwMzQ1YzRkNDdlN2Q1Y2MyZGQwZDRmM2M3ZmRjNWUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViUHJlZmVyZW5jZXNQcml2YXRlLmgKKysrIGIv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJQcmVmZXJlbmNlc1ByaXZhdGUuaApA
QCAtMjY5LDYgKzI2OSw5IEBAIGV4dGVybiBOU1N0cmluZyAqV2ViUHJlZmVyZW5jZXNDYWNoZU1v
ZGVsQ2hhbmdlZEludGVybmFsTm90aWZpY2F0aW9uIFdFQktJVF9ERVBSCiAtIChCT09MKXdlYkF1
ZGlvRW5hYmxlZDsKIC0gKHZvaWQpc2V0V2ViQXVkaW9FbmFibGVkOihCT09MKWVuYWJsZWQ7CiAK
Ky0gKEJPT0wpbW9kZXJuVW5wcmVmaXhlZFdlYkF1ZGlvRW5hYmxlZDsKKy0gKHZvaWQpc2V0TW9k
ZXJuVW5wcmVmaXhlZFdlYkF1ZGlvRW5hYmxlZDooQk9PTCllbmFibGVkOworCiAtIChCT09MKXN1
YnBpeGVsQ1NTT01FbGVtZW50TWV0cmljc0VuYWJsZWQ7CiAtICh2b2lkKXNldFN1YnBpeGVsQ1NT
T01FbGVtZW50TWV0cmljc0VuYWJsZWQ6KEJPT0wpZW5hYmxlZDsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tIGIvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCmluZGV4IDI5OWNiMWNhNzkzNGJhOGFhYTNkNjIw
Y2Y2MTU5NGJlNjQwYjAzOWEuLjg1MTIxMzI1MjA4YjhlZGE0YjI5OThjMmE5MTI1YmJiMWEzNjlm
MzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmlldy5t
bQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZpZXcubW0KQEAgLTMy
NjcsNiArMzI2Nyw3IEBAIC0gKHZvaWQpX3ByZWZlcmVuY2VzQ2hhbmdlZDooV2ViUHJlZmVyZW5j
ZXMgKilwcmVmZXJlbmNlcwogCiAjaWYgRU5BQkxFKFdFQl9BVURJTykKICAgICBzZXR0aW5ncy5z
ZXRXZWJBdWRpb0VuYWJsZWQoW3ByZWZlcmVuY2VzIHdlYkF1ZGlvRW5hYmxlZF0pOworICAgIHNl
dHRpbmdzLnNldE1vZGVyblVucHJlZml4ZWRXZWJBdWRpb0VuYWJsZWQoW3ByZWZlcmVuY2VzIG1v
ZGVyblVucHJlZml4ZWRXZWJBdWRpb0VuYWJsZWRdKTsKICNlbmRpZgogCiAjaWYgRU5BQkxFKEZV
TExTQ1JFRU5fQVBJKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vSW50ZXJm
YWNlcy9JV2ViUHJlZmVyZW5jZXNQcml2YXRlLmlkbCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2lu
L0ludGVyZmFjZXMvSVdlYlByZWZlcmVuY2VzUHJpdmF0ZS5pZGwKaW5kZXggMGM3ZTkyYmMxMWVh
ZTBiYWJlMWQwNDY1MDZkMDJmMzc2Njg0ZDE4My4uOWE4NzVkNDc5ZTdiZmFkNzM2MWE2ZjJmOGE0
ZDMxOTMzN2VlNTdmMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vSW50ZXJm
YWNlcy9JV2ViUHJlZmVyZW5jZXNQcml2YXRlLmlkbAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5
L3dpbi9JbnRlcmZhY2VzL0lXZWJQcmVmZXJlbmNlc1ByaXZhdGUuaWRsCkBAIC0yNjcsNCArMjY3
LDYgQEAgaW50ZXJmYWNlIElXZWJQcmVmZXJlbmNlc1ByaXZhdGU4IDogSVdlYlByZWZlcmVuY2Vz
UHJpdmF0ZTcKIHsKICAgICBIUkVTVUxUIGFsbG93VG9wTmF2aWdhdGlvblRvRGF0YVVSTHMoW291
dCwgcmV0dmFsXSBCT09MKiBlbmFibGVkKTsKICAgICBIUkVTVUxUIHNldEFsbG93VG9wTmF2aWdh
dGlvblRvRGF0YVVSTHMoW2luXSBCT09MIGVuYWJsZWQpOworICAgIEhSRVNVTFQgbW9kZXJuVW5w
cmVmaXhlZFdlYkF1ZGlvRW5hYmxlZChbb3V0LCByZXR2YWxdIEJPT0wqIGVuYWJsZWQpOworICAg
IEhSRVNVTFQgc2V0TW9kZXJuVW5wcmVmaXhlZFdlYkF1ZGlvRW5hYmxlZChbaW5dIEJPT0wgZW5h
YmxlZCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJQcmVmZXJl
bmNlS2V5c1ByaXZhdGUuaCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlByZWZlcmVuY2VL
ZXlzUHJpdmF0ZS5oCmluZGV4IDgwNDUzMWE0NmJmYjU3MjNmNmVkMWNhYzMyZjk1OGYxMzNmZWMy
ODMuLjJhMjEyMWFkYjk2ODY5ODQxMjFjMGU0YmE4ZGFmZmNhN2JjYzZjYWIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlByZWZlcmVuY2VLZXlzUHJpdmF0ZS5oCisrKyBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlByZWZlcmVuY2VLZXlzUHJpdmF0ZS5oCkBAIC03
NSw2ICs3NSw3IEBACiAjZGVmaW5lIFdlYktpdExvY2FsU3RvcmFnZURhdGFiYXNlUGF0aFByZWZl
cmVuY2VLZXkgIldlYktpdExvY2FsU3RvcmFnZURhdGFiYXNlUGF0aCIKICNkZWZpbmUgV2ViS2l0
SHlwZXJsaW5rQXVkaXRpbmdFbmFibGVkUHJlZmVyZW5jZUtleSAiV2ViS2l0SHlwZXJsaW5rQXVk
aXRpbmdFbmFibGVkIgogI2RlZmluZSBXZWJLaXRXZWJBdWRpb0VuYWJsZWRQcmVmZXJlbmNlS2V5
ICJXZWJLaXRXZWJBdWRpb0VuYWJsZWQiCisjZGVmaW5lIFdlYktpdE1vZGVyblVucHJlZml4ZWRX
ZWJBdWRpb0VuYWJsZWRQcmVmZXJlbmNlS2V5ICJXZWJLaXRXZWJBdWRpb0VuYWJsZWQiCiAjZGVm
aW5lIFdlYktpdFNob3VsZERpc3BsYXlTdWJ0aXRsZXNQcmVmZXJlbmNlS2V5ICJXZWJLaXRTaG91
bGREaXNwbGF5U3VidGl0bGVzIgogI2RlZmluZSBXZWJLaXRTaG91bGREaXNwbGF5Q2FwdGlvbnNQ
cmVmZXJlbmNlS2V5ICJXZWJLaXRTaG91bGREaXNwbGF5Q2FwdGlvbnMiCiAjZGVmaW5lIFdlYktp
dFNob3VsZERpc3BsYXlUZXh0RGVzY3JpcHRpb25zUHJlZmVyZW5jZUtleSAiV2ViS2l0U2hvdWxk
RGlzcGxheVRleHREZXNjcmlwdGlvbnMiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5
L3dpbi9XZWJQcmVmZXJlbmNlcy5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJQcmVm
ZXJlbmNlcy5jcHAKaW5kZXggNTgyNmU0MTk1OGMwMzM4ODkyM2NmMzg5ZWI3ZDJhODY1ZjM3ZjE1
My4uOTNkZThhMzIwYWExNTgzNDlhMDcyMDVkMDRlMmVhNGM0MTQ5ZjI5NCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViUHJlZmVyZW5jZXMuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvd2luL1dlYlByZWZlcmVuY2VzLmNwcApAQCAtMjMyLDYgKzIzMiw3IEBAIHZv
aWQgV2ViUHJlZmVyZW5jZXM6OmluaXRpYWxpemVEZWZhdWx0U2V0dGluZ3MoKQogICAgIENGRGlj
dGlvbmFyeUFkZFZhbHVlKGRlZmF1bHRzLCBDRlNUUihXZWJLaXRKYXZhU2NyaXB0UnVudGltZUZs
YWdzUHJlZmVyZW5jZUtleSksIENGU1RSKCIwIikpOwogICAgIENGRGljdGlvbmFyeUFkZFZhbHVl
KGRlZmF1bHRzLCBDRlNUUihXZWJLaXRXZWJTZWN1cml0eUVuYWJsZWRQcmVmZXJlbmNlS2V5KSwg
a0NGQm9vbGVhblRydWUpOwogICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKGRlZmF1bHRzLCBDRlNU
UihXZWJLaXRBbGxvd1RvcE5hdmlnYXRpb25Ub0RhdGFVUkxzUHJlZmVyZW5jZUtleSksIGtDRkJv
b2xlYW5GYWxzZSk7CisgICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVmYXVsdHMsIENGU1RSKFdl
YktpdFdlYkF1ZGlvRW5hYmxlZFByZWZlcmVuY2VLZXkpLCBrQ0ZCb29sZWFuRmFsc2UpOwogICAg
IENGRGljdGlvbmFyeUFkZFZhbHVlKGRlZmF1bHRzLCBDRlNUUihXZWJLaXRBbGxvd1VuaXZlcnNh
bEFjY2Vzc0Zyb21GaWxlVVJMc1ByZWZlcmVuY2VLZXkpLCBrQ0ZCb29sZWFuRmFsc2UpOwogICAg
IENGRGljdGlvbmFyeUFkZFZhbHVlKGRlZmF1bHRzLCBDRlNUUihXZWJLaXRBbGxvd0ZpbGVBY2Nl
c3NGcm9tRmlsZVVSTHNQcmVmZXJlbmNlS2V5KSwga0NGQm9vbGVhblRydWUpOwogICAgIENGRGlj
dGlvbmFyeUFkZFZhbHVlKGRlZmF1bHRzLCBDRlNUUihXZWJLaXRKYXZhU2NyaXB0Q2FuQWNjZXNz
Q2xpcGJvYXJkUHJlZmVyZW5jZUtleSksIGtDRkJvb2xlYW5GYWxzZSk7CkBAIC0yNDk5LDMgKzI1
MDAsMTcgQEAgSFJFU1VMVCBXZWJQcmVmZXJlbmNlczo6c2V0QWxsb3dUb3BOYXZpZ2F0aW9uVG9E
YXRhVVJMcyhCT09MIGFsbG93QWNjZXNzKQogICAgIHNldEJvb2xWYWx1ZShXZWJLaXRBbGxvd1Rv
cE5hdmlnYXRpb25Ub0RhdGFVUkxzUHJlZmVyZW5jZUtleSwgYWxsb3dBY2Nlc3MpOwogICAgIHJl
dHVybiBTX09LOwogfQorCitIUkVTVUxUIFdlYlByZWZlcmVuY2VzOjptb2Rlcm5VbnByZWZpeGVk
V2ViQXVkaW9FbmFibGVkKF9PdXRfIEJPT0wqIGVuYWJsZWQpCit7CisgICAgaWYgKCFlbmFibGVk
KQorICAgICAgICByZXR1cm4gRV9QT0lOVEVSOworICAgICplbmFibGVkID0gYm9vbFZhbHVlRm9y
S2V5KFdlYktpdFdlYkF1ZGlvRW5hYmxlZFByZWZlcmVuY2VLZXkpOworICAgIHJldHVybiBTX09L
OworfQorCitIUkVTVUxUIFdlYlByZWZlcmVuY2VzOjpzZXRNb2Rlcm5VbnByZWZpeGVkV2ViQXVk
aW9FbmFibGVkKEJPT0wgZW5hYmxlZCkKK3sKKyAgICBzZXRCb29sVmFsdWUoV2ViS2l0V2ViQXVk
aW9FbmFibGVkUHJlZmVyZW5jZUtleSwgZW5hYmxlZCk7CisgICAgcmV0dXJuIFNfT0s7Cit9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJQcmVmZXJlbmNlcy5oIGIvU291
cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViUHJlZmVyZW5jZXMuaAppbmRleCBmN2ZlNzY4NDJiNGRk
MjMyOTgxZWZmZjcyMWMxZmE0YjEwOTc5ZTk4Li4yNDM3YjBlNzYyODk1MDZjMjY0MDQ4ODZiZDJj
MDNmNTgzMjUzYzUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJQcmVm
ZXJlbmNlcy5oCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlByZWZlcmVuY2VzLmgK
QEAgLTMwNSw2ICszMDUsOCBAQCBwdWJsaWM6CiAgICAgLy8gSVdlYlByZWZlcmVuY2VzUHJpdmF0
ZTgKICAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgYWxsb3dUb3BOYXZpZ2F0
aW9uVG9EYXRhVVJMcyhfT3V0XyBCT09MKik7CiAgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhP
RENBTExUWVBFIHNldEFsbG93VG9wTmF2aWdhdGlvblRvRGF0YVVSTHMoQk9PTCk7CisgICAgdmly
dHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIG1vZGVyblVucHJlZml4ZWRXZWJBdWRpb0Vu
YWJsZWQoX091dF8gQk9PTCopOworICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQ
RSBzZXRNb2Rlcm5VbnByZWZpeGVkV2ViQXVkaW9FbmFibGVkKEJPT0wpOwogCiAgICAgLy8gV2Vi
UHJlZmVyZW5jZXMKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVmll
dy5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJWaWV3LmNwcAppbmRleCAyOGYyOTNk
OGM3ZjdkYTY5YjhlMTgxM2FmODhkMTc5ZThmYWZiMmY2Li5kYjI5MTE2YmZjMjU5OTUyY2U2ZGYz
M2YzNzM2NjI5YTY3YjliYTMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9X
ZWJWaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJWaWV3LmNwcApAQCAt
NTU1Niw2ICs1NTU2LDExIEBAIEhSRVNVTFQgV2ViVmlldzo6bm90aWZ5UHJlZmVyZW5jZXNDaGFu
Z2VkKElXZWJOb3RpZmljYXRpb24qIG5vdGlmaWNhdGlvbikKIAogI2lmIEVOQUJMRShXRUJfQVVE
SU8pCiAgICAgc2V0dGluZ3Muc2V0V2ViQXVkaW9FbmFibGVkKHRydWUpOworCisgICAgaHIgPSBw
cmVmc1ByaXZhdGUtPm1vZGVyblVucHJlZml4ZWRXZWJBdWRpb0VuYWJsZWQoJmVuYWJsZWQpOwor
ICAgIGlmIChGQUlMRUQoaHIpKQorICAgICAgICByZXR1cm4gaHI7CisgICAgc2V0dGluZ3Muc2V0
TW9kZXJuVW5wcmVmaXhlZFdlYkF1ZGlvRW5hYmxlZCghIWVuYWJsZWQpOwogI2VuZGlmIC8vIEVO
QUJMRShXRUJfQVVESU8pCiAKICNpZiBFTkFCTEUoV0VCR0wpCmRpZmYgLS1naXQgYS9Ub29scy9E
dW1wUmVuZGVyVHJlZS9tYWMvRHVtcFJlbmRlclRyZWUubW0gYi9Ub29scy9EdW1wUmVuZGVyVHJl
ZS9tYWMvRHVtcFJlbmRlclRyZWUubW0KaW5kZXggYjgxYTFjM2MzNTM3OWJkMDkwMWVlOTEwN2Q5
ZGVlNzc1N2RkYWUzNC4uODdjMDRkOTJmYTRjZTQ3MjIxNmU4YzM4ZmJlZTliYmY3MWEzMmQ5OSAx
MDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0R1bXBSZW5kZXJUcmVlLm1tCisr
KyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9EdW1wUmVuZGVyVHJlZS5tbQpAQCAtOTc5LDYg
Kzk3OSw3IEBAIHN0YXRpYyB2b2lkIHJlc2V0V2ViUHJlZmVyZW5jZXNUb0NvbnNpc3RlbnRWYWx1
ZXMoKQogI2VuZGlmCiAKICAgICBbcHJlZmVyZW5jZXMgc2V0V2ViQXVkaW9FbmFibGVkOllFU107
CisgICAgW3ByZWZlcmVuY2VzIHNldE1vZGVyblVucHJlZml4ZWRXZWJBdWRpb0VuYWJsZWQ6WUVT
XTsKICAgICBbcHJlZmVyZW5jZXMgc2V0TWVkaWFTb3VyY2VFbmFibGVkOllFU107CiAgICAgW3By
ZWZlcmVuY2VzIHNldFNvdXJjZUJ1ZmZlckNoYW5nZVR5cGVFbmFibGVkOllFU107CiAKZGlmZiAt
LWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9EdW1wUmVuZGVyVHJlZS5jcHAgYi9Ub29s
cy9EdW1wUmVuZGVyVHJlZS93aW4vRHVtcFJlbmRlclRyZWUuY3BwCmluZGV4IDBiMzdhZDQ1ZmUx
OGIyYTk0NjVhYzM1NzIzYmNkY2U2OTU2ZjYzNjIuLmQwYjlkOGM3ZTcyMGZkODMwYzZiNmYwY2Mw
NWQwNWI5OTM1ZGYwNDggMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9EdW1w
UmVuZGVyVHJlZS5jcHAKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL0R1bXBSZW5kZXJU
cmVlLmNwcApAQCAtODM2LDYgKzgzNiw3IEBAIHN0YXRpYyB2b2lkIHJlc2V0V2ViUHJlZmVyZW5j
ZXNUb0NvbnNpc3RlbnRWYWx1ZXMoSVdlYlByZWZlcmVuY2VzKiBwcmVmZXJlbmNlcykKICNlbmRp
ZgogCiAgICAgcHJlZnNQcml2YXRlLT5zZXRBbGxvd1RvcE5hdmlnYXRpb25Ub0RhdGFVUkxzKFRS
VUUpOworICAgIHByZWZzUHJpdmF0ZS0+c2V0TW9kZXJuVW5wcmVmaXhlZFdlYkF1ZGlvRW5hYmxl
ZChUUlVFKTsKICAgICBwcmVmc1ByaXZhdGUtPnNldEFsbG93VW5pdmVyc2FsQWNjZXNzRnJvbUZp
bGVVUkxzKFRSVUUpOwogICAgIHByZWZzUHJpdmF0ZS0+c2V0QWxsb3dGaWxlQWNjZXNzRnJvbUZp
bGVVUkxzKFRSVUUpOwogICAgIHByZWZlcmVuY2VzLT5zZXRTdGFuZGFyZEZvbnRGYW1pbHkoc3Rh
bmRhcmRGYW1pbHkpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0NoYW5n
ZUxvZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9DaGFuZ2VMb2cKaW5kZXggNTQ5ZTliNmY2
YTQwYzdlMjEzZDJiZDBiYjI3MWJhN2MxZTJlZjVmYy4uZTBjOGU0MjI5NmY0NjEyMWYzMmFiNjcy
ZWM3ODg3NDgwYzljM2M4NiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0No
YW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsMTggQEAKKzIwMjAtMDYtMTcgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKwor
ICAgICAgICBBZGQgZXhwZXJpbWVudGFsIGZlYXR1cmUgZmxhZyBmb3IgbW9kZXJuICYgdW5wcmVm
aXhlZCBXZWJBdWRpbyBBUEkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTIxMzI2OAorCisgICAgICAgIFJldmlld2VkIGJ5IEplciBOb2JsZS4KKworICAg
ICAgICBSZWJhc2VsaW5lIGEgZmV3IHdlYi1wbGF0Zm9ybS10ZXN0cyBub3cgdGhhdCB0aGV5IGFy
ZSBwYXNzaW5nIG9yIGZhaWxpbmcgYXQgYSBsYXRlciBzdGFnZS4KKyAgICAgICAgVGhpcyBpcyBk
dWUgdG8gb3VyIFdlYkF1ZGlvIGdldHRpbmcgcHJvcGVybHkgdW5wcmVmaXhlZCBpbiB0aGUgY29u
dGV4dCBvZiBsYXlvdXQgdGVzdHMuCisKKyAgICAgICAgKiB3ZWItcGxhdGZvcm0tdGVzdHMvd2Vi
YXVkaW8vaWRsaGFybmVzcy5odHRwcy53aW5kb3ctZXhwZWN0ZWQudHh0OgorICAgICAgICAqIHdl
Yi1wbGF0Zm9ybS10ZXN0cy93ZWJhdWRpby90aGUtYXVkaW8tYXBpL3RoZS1hdWRpb2NvbnRleHQt
aW50ZXJmYWNlL2F1ZGlvY29udGV4dC1kZXRhY2hlZC1leGVjdXRpb24tY29udGV4dC50ZW50YXRp
dmUtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy93ZWJhdWRpby90
aGUtYXVkaW8tYXBpL3RoZS1hdWRpb25vZGUtaW50ZXJmYWNlL2F1ZGlvbm9kZS1jb25uZWN0LW1l
dGhvZC1jaGFpbmluZy1leHBlY3RlZC50eHQ6CisgICAgICAgICogd2ViLXBsYXRmb3JtLXRlc3Rz
L3dlYmF1ZGlvL3RoZS1hdWRpby1hcGkvdGhlLW9mZmxpbmVhdWRpb2NvbnRleHQtaW50ZXJmYWNl
L29mZmxpbmVhdWRpb2NvbnRleHQtZGV0YWNoZWQtZXhlY3V0aW9uLWNvbnRleHQudGVudGF0aXZl
LWV4cGVjdGVkLnR4dDoKKwogMjAyMC0wNi0xNyAgUm9iIEJ1aXMgIDxyYnVpc0BpZ2FsaWEuY29t
PgogCiAgICAgICAgIEltYWdlIGByZWZlcnJlcnBvbGljeWAgbXV0YXRpb25zIHNob3VsZCBiZSBj
b25zaWRlcmVkICJyZWxldmFudCBtdXRhdGlvbnMiCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9m
YXN0L2RvbS9jYWxsLWEtY29uc3RydWN0b3ItYXMtYS1mdW5jdGlvbi1leHBlY3RlZC50eHQgYi9M
YXlvdXRUZXN0cy9mYXN0L2RvbS9jYWxsLWEtY29uc3RydWN0b3ItYXMtYS1mdW5jdGlvbi1leHBl
Y3RlZC50eHQKaW5kZXggOGExODAxY2EyMmZjNjZlZWRhMzkyY2QzZjdhZjBkNjIxNWYyOTJlMC4u
Mjc1NGY0OGU1ZjI1NjBjNDZlODU4YjhlNjBlMDQyZWI4Y2VkNjY2ZSAxMDA2NDQKLS0tIGEvTGF5
b3V0VGVzdHMvZmFzdC9kb20vY2FsbC1hLWNvbnN0cnVjdG9yLWFzLWEtZnVuY3Rpb24tZXhwZWN0
ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL2NhbGwtYS1jb25zdHJ1Y3Rvci1hcy1h
LWZ1bmN0aW9uLWV4cGVjdGVkLnR4dApAQCAtMyw3ICszLDcgQEAgVGhpcyB0ZXN0cyBpZiBUeXBl
RXJyb3IgaXMgdGhyb3duIG9yIG5vdCB3aGVuIHdlIGNhbGwgYSBjb25zdHJ1Y3RvciBhcyBhIG5v
cm1hbAogT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdl
cywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgogCiAKLVNLSVAgQXVkaW9Db250ZXh0IGlz
IG5vdCBpbXBsZW1lbnRlZC4KK1BBU1MgQXVkaW9Db250ZXh0KCkgdGhyZXcgZXhjZXB0aW9uIFR5
cGVFcnJvcjogQ29uc3RydWN0b3IgcmVxdWlyZXMgJ25ldycgb3BlcmF0b3IuCiBQQVNTIEZvcm1E
YXRhKCkgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogQ29uc3RydWN0b3IgcmVxdWlyZXMgJ25l
dycgb3BlcmF0b3IuCiBQQVNTIEV2ZW50U291cmNlKCkgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJv
cjogQ29uc3RydWN0b3IgcmVxdWlyZXMgJ25ldycgb3BlcmF0b3IuCiBQQVNTIEZpbGVSZWFkZXIo
KSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBDb25zdHJ1Y3RvciByZXF1aXJlcyAnbmV3JyBv
cGVyYXRvci4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvd2ViYXVkaW8vaWRsaGFybmVzcy5odHRwcy53aW5kb3ctZXhwZWN0ZWQudHh0IGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJhdWRpby9pZGxo
YXJuZXNzLmh0dHBzLndpbmRvdy1leHBlY3RlZC50eHQKaW5kZXggY2NjN2U5ZThmNzFiZjFkNDEy
NGRiY2RlODkzNjE2YzI2NDBiYzNhZC4uODU5OGRkYWZlMDgwMWY4NjNjN2M5MDNkMjEwMjRlNjhj
YjFiODc2MSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy93ZWJhdWRpby9pZGxoYXJuZXNzLmh0dHBzLndpbmRvdy1leHBlY3RlZC50eHQKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJhdWRpby9p
ZGxoYXJuZXNzLmh0dHBzLndpbmRvdy1leHBlY3RlZC50eHQKQEAgLTQzLDcgKzQzLDcgQEAgRkFJ
TCBCYXNlQXVkaW9Db250ZXh0IGludGVyZmFjZTogb3BlcmF0aW9uIGNyZWF0ZVdhdmVTaGFwZXIo
KSBhc3NlcnRfb3duX3Byb3BlcnQKIEZBSUwgQmFzZUF1ZGlvQ29udGV4dCBpbnRlcmZhY2U6IG9w
ZXJhdGlvbiBkZWNvZGVBdWRpb0RhdGEoQXJyYXlCdWZmZXIsIG9wdGlvbmFsIERlY29kZVN1Y2Nl
c3NDYWxsYmFjaz8sIG9wdGlvbmFsIERlY29kZUVycm9yQ2FsbGJhY2s/KSBhc3NlcnRfb3duX3By
b3BlcnR5OiBzZWxmIGRvZXMgbm90IGhhdmUgb3duIHByb3BlcnR5ICJCYXNlQXVkaW9Db250ZXh0
IiBleHBlY3RlZCBwcm9wZXJ0eSAiQmFzZUF1ZGlvQ29udGV4dCIgbWlzc2luZwogRkFJTCBBdWRp
b0NvbnRleHQgaW50ZXJmYWNlOiBleGlzdGVuY2UgYW5kIHByb3BlcnRpZXMgb2YgaW50ZXJmYWNl
IG9iamVjdCBhc3NlcnRfb3duX3Byb3BlcnR5OiBzZWxmIGRvZXMgbm90IGhhdmUgb3duIHByb3Bl
cnR5ICJCYXNlQXVkaW9Db250ZXh0IiBleHBlY3RlZCBwcm9wZXJ0eSAiQmFzZUF1ZGlvQ29udGV4
dCIgbWlzc2luZwogUEFTUyBBdWRpb0NvbnRleHQgaW50ZXJmYWNlIG9iamVjdCBsZW5ndGggCi1G
QUlMIEF1ZGlvQ29udGV4dCBpbnRlcmZhY2Ugb2JqZWN0IG5hbWUgYXNzZXJ0X2VxdWFsczogd3Jv
bmcgdmFsdWUgZm9yIEF1ZGlvQ29udGV4dC5uYW1lIGV4cGVjdGVkICJBdWRpb0NvbnRleHQiIGJ1
dCBnb3QgIndlYmtpdEF1ZGlvQ29udGV4dCIKK1BBU1MgQXVkaW9Db250ZXh0IGludGVyZmFjZSBv
YmplY3QgbmFtZSAKIEZBSUwgQXVkaW9Db250ZXh0IGludGVyZmFjZTogZXhpc3RlbmNlIGFuZCBw
cm9wZXJ0aWVzIG9mIGludGVyZmFjZSBwcm90b3R5cGUgb2JqZWN0IGFzc2VydF9vd25fcHJvcGVy
dHk6IHNlbGYgZG9lcyBub3QgaGF2ZSBvd24gcHJvcGVydHkgIkJhc2VBdWRpb0NvbnRleHQiIGV4
cGVjdGVkIHByb3BlcnR5ICJCYXNlQXVkaW9Db250ZXh0IiBtaXNzaW5nCiBQQVNTIEF1ZGlvQ29u
dGV4dCBpbnRlcmZhY2U6IGV4aXN0ZW5jZSBhbmQgcHJvcGVydGllcyBvZiBpbnRlcmZhY2UgcHJv
dG90eXBlIG9iamVjdCdzICJjb25zdHJ1Y3RvciIgcHJvcGVydHkgCiBQQVNTIEF1ZGlvQ29udGV4
dCBpbnRlcmZhY2U6IGV4aXN0ZW5jZSBhbmQgcHJvcGVydGllcyBvZiBpbnRlcmZhY2UgcHJvdG90
eXBlIG9iamVjdCdzIEBAdW5zY29wYWJsZXMgcHJvcGVydHkgCkBAIC01OCw3ICs1OCw3IEBAIFBB
U1MgQXVkaW9Db250ZXh0IGludGVyZmFjZTogb3BlcmF0aW9uIGNyZWF0ZU1lZGlhU3RyZWFtU291
cmNlKE1lZGlhU3RyZWFtKQogRkFJTCBBdWRpb0NvbnRleHQgaW50ZXJmYWNlOiBvcGVyYXRpb24g
Y3JlYXRlTWVkaWFTdHJlYW1UcmFja1NvdXJjZShNZWRpYVN0cmVhbVRyYWNrKSBhc3NlcnRfb3du
X3Byb3BlcnR5OiBpbnRlcmZhY2UgcHJvdG90eXBlIG9iamVjdCBtaXNzaW5nIG5vbi1zdGF0aWMg
b3BlcmF0aW9uIGV4cGVjdGVkIHByb3BlcnR5ICJjcmVhdGVNZWRpYVN0cmVhbVRyYWNrU291cmNl
IiBtaXNzaW5nCiBQQVNTIEF1ZGlvQ29udGV4dCBpbnRlcmZhY2U6IG9wZXJhdGlvbiBjcmVhdGVN
ZWRpYVN0cmVhbURlc3RpbmF0aW9uKCkgCiBQQVNTIEF1ZGlvQ29udGV4dCBtdXN0IGJlIHByaW1h
cnkgaW50ZXJmYWNlIG9mIGNvbnRleHQgCi1GQUlMIFN0cmluZ2lmaWNhdGlvbiBvZiBjb250ZXh0
IGFzc2VydF9jbGFzc19zdHJpbmc6IGNsYXNzIHN0cmluZyBvZiBjb250ZXh0IGV4cGVjdGVkICJb
b2JqZWN0IEF1ZGlvQ29udGV4dF0iIGJ1dCBnb3QgIltvYmplY3Qgd2Via2l0QXVkaW9Db250ZXh0
XSIKK1BBU1MgU3RyaW5naWZpY2F0aW9uIG9mIGNvbnRleHQgCiBGQUlMIEF1ZGlvQ29udGV4dCBp
bnRlcmZhY2U6IGNvbnRleHQgbXVzdCBpbmhlcml0IHByb3BlcnR5ICJiYXNlTGF0ZW5jeSIgd2l0
aCB0aGUgcHJvcGVyIHR5cGUgYXNzZXJ0X2luaGVyaXRzOiBwcm9wZXJ0eSAiYmFzZUxhdGVuY3ki
IG5vdCBmb3VuZCBpbiBwcm90b3R5cGUgY2hhaW4KIEZBSUwgQXVkaW9Db250ZXh0IGludGVyZmFj
ZTogY29udGV4dCBtdXN0IGluaGVyaXQgcHJvcGVydHkgIm91dHB1dExhdGVuY3kiIHdpdGggdGhl
IHByb3BlciB0eXBlIGFzc2VydF9pbmhlcml0czogcHJvcGVydHkgIm91dHB1dExhdGVuY3kiIG5v
dCBmb3VuZCBpbiBwcm90b3R5cGUgY2hhaW4KIEZBSUwgQXVkaW9Db250ZXh0IGludGVyZmFjZTog
Y29udGV4dCBtdXN0IGluaGVyaXQgcHJvcGVydHkgImdldE91dHB1dFRpbWVzdGFtcCgpIiB3aXRo
IHRoZSBwcm9wZXIgdHlwZSBhc3NlcnRfaW5oZXJpdHM6IHByb3BlcnR5ICJnZXRPdXRwdXRUaW1l
c3RhbXAiIG5vdCBmb3VuZCBpbiBwcm90b3R5cGUgY2hhaW4KQEAgLTEwOCw3ICsxMDgsNyBAQCBQ
QVNTIEJhc2VBdWRpb0NvbnRleHQgaW50ZXJmYWNlOiBjb250ZXh0IG11c3QgaW5oZXJpdCBwcm9w
ZXJ0eSAiZGVjb2RlQXVkaW9EYXRhKAogRkFJTCBCYXNlQXVkaW9Db250ZXh0IGludGVyZmFjZTog
Y2FsbGluZyBkZWNvZGVBdWRpb0RhdGEoQXJyYXlCdWZmZXIsIG9wdGlvbmFsIERlY29kZVN1Y2Nl
c3NDYWxsYmFjaz8sIG9wdGlvbmFsIERlY29kZUVycm9yQ2FsbGJhY2s/KSBvbiBjb250ZXh0IHdp
dGggdG9vIGZldyBhcmd1bWVudHMgbXVzdCB0aHJvdyBUeXBlRXJyb3IgYXNzZXJ0X3VucmVhY2hl
ZDogVGhyb3dzICJUeXBlRXJyb3I6IE5vdCBlbm91Z2ggYXJndW1lbnRzIiBpbnN0ZWFkIG9mIHJl
amVjdGluZyBwcm9taXNlIFJlYWNoZWQgdW5yZWFjaGFibGUgY29kZQogRkFJTCBPZmZsaW5lQXVk
aW9Db250ZXh0IGludGVyZmFjZTogZXhpc3RlbmNlIGFuZCBwcm9wZXJ0aWVzIG9mIGludGVyZmFj
ZSBvYmplY3QgYXNzZXJ0X293bl9wcm9wZXJ0eTogc2VsZiBkb2VzIG5vdCBoYXZlIG93biBwcm9w
ZXJ0eSAiQmFzZUF1ZGlvQ29udGV4dCIgZXhwZWN0ZWQgcHJvcGVydHkgIkJhc2VBdWRpb0NvbnRl
eHQiIG1pc3NpbmcKIEZBSUwgT2ZmbGluZUF1ZGlvQ29udGV4dCBpbnRlcmZhY2Ugb2JqZWN0IGxl
bmd0aCBhc3NlcnRfZXF1YWxzOiB3cm9uZyB2YWx1ZSBmb3IgT2ZmbGluZUF1ZGlvQ29udGV4dC5s
ZW5ndGggZXhwZWN0ZWQgMSBidXQgZ290IDMKLUZBSUwgT2ZmbGluZUF1ZGlvQ29udGV4dCBpbnRl
cmZhY2Ugb2JqZWN0IG5hbWUgYXNzZXJ0X2VxdWFsczogd3JvbmcgdmFsdWUgZm9yIE9mZmxpbmVB
dWRpb0NvbnRleHQubmFtZSBleHBlY3RlZCAiT2ZmbGluZUF1ZGlvQ29udGV4dCIgYnV0IGdvdCAi
d2Via2l0T2ZmbGluZUF1ZGlvQ29udGV4dCIKK1BBU1MgT2ZmbGluZUF1ZGlvQ29udGV4dCBpbnRl
cmZhY2Ugb2JqZWN0IG5hbWUgCiBGQUlMIE9mZmxpbmVBdWRpb0NvbnRleHQgaW50ZXJmYWNlOiBl
eGlzdGVuY2UgYW5kIHByb3BlcnRpZXMgb2YgaW50ZXJmYWNlIHByb3RvdHlwZSBvYmplY3QgYXNz
ZXJ0X293bl9wcm9wZXJ0eTogc2VsZiBkb2VzIG5vdCBoYXZlIG93biBwcm9wZXJ0eSAiQmFzZUF1
ZGlvQ29udGV4dCIgZXhwZWN0ZWQgcHJvcGVydHkgIkJhc2VBdWRpb0NvbnRleHQiIG1pc3NpbmcK
IFBBU1MgT2ZmbGluZUF1ZGlvQ29udGV4dCBpbnRlcmZhY2U6IGV4aXN0ZW5jZSBhbmQgcHJvcGVy
dGllcyBvZiBpbnRlcmZhY2UgcHJvdG90eXBlIG9iamVjdCdzICJjb25zdHJ1Y3RvciIgcHJvcGVy
dHkgCiBQQVNTIE9mZmxpbmVBdWRpb0NvbnRleHQgaW50ZXJmYWNlOiBleGlzdGVuY2UgYW5kIHBy
b3BlcnRpZXMgb2YgaW50ZXJmYWNlIHByb3RvdHlwZSBvYmplY3QncyBAQHVuc2NvcGFibGVzIHBy
b3BlcnR5IApAQCAtMTE4LDcgKzExOCw3IEBAIEZBSUwgT2ZmbGluZUF1ZGlvQ29udGV4dCBpbnRl
cmZhY2U6IG9wZXJhdGlvbiBzdXNwZW5kKGRvdWJsZSkgYXNzZXJ0X293bl9wcm9wZXJ0CiBGQUlM
IE9mZmxpbmVBdWRpb0NvbnRleHQgaW50ZXJmYWNlOiBhdHRyaWJ1dGUgbGVuZ3RoIGFzc2VydF90
cnVlOiBUaGUgcHJvdG90eXBlIG9iamVjdCBtdXN0IGhhdmUgYSBwcm9wZXJ0eSAibGVuZ3RoIiBl
eHBlY3RlZCB0cnVlIGdvdCBmYWxzZQogRkFJTCBPZmZsaW5lQXVkaW9Db250ZXh0IGludGVyZmFj
ZTogYXR0cmlidXRlIG9uY29tcGxldGUgYXNzZXJ0X293bl9wcm9wZXJ0eTogZXhwZWN0ZWQgcHJv
cGVydHkgIm9uY29tcGxldGUiIG1pc3NpbmcKIFBBU1MgT2ZmbGluZUF1ZGlvQ29udGV4dCBtdXN0
IGJlIHByaW1hcnkgaW50ZXJmYWNlIG9mIG5ldyBPZmZsaW5lQXVkaW9Db250ZXh0KDEsIDEsIHNh
bXBsZV9yYXRlKSAKLUZBSUwgU3RyaW5naWZpY2F0aW9uIG9mIG5ldyBPZmZsaW5lQXVkaW9Db250
ZXh0KDEsIDEsIHNhbXBsZV9yYXRlKSBhc3NlcnRfY2xhc3Nfc3RyaW5nOiBjbGFzcyBzdHJpbmcg
b2YgbmV3IE9mZmxpbmVBdWRpb0NvbnRleHQoMSwgMSwgc2FtcGxlX3JhdGUpIGV4cGVjdGVkICJb
b2JqZWN0IE9mZmxpbmVBdWRpb0NvbnRleHRdIiBidXQgZ290ICJbb2JqZWN0IHdlYmtpdE9mZmxp
bmVBdWRpb0NvbnRleHRdIgorUEFTUyBTdHJpbmdpZmljYXRpb24gb2YgbmV3IE9mZmxpbmVBdWRp
b0NvbnRleHQoMSwgMSwgc2FtcGxlX3JhdGUpIAogUEFTUyBPZmZsaW5lQXVkaW9Db250ZXh0IGlu
dGVyZmFjZTogbmV3IE9mZmxpbmVBdWRpb0NvbnRleHQoMSwgMSwgc2FtcGxlX3JhdGUpIG11c3Qg
aW5oZXJpdCBwcm9wZXJ0eSAic3RhcnRSZW5kZXJpbmcoKSIgd2l0aCB0aGUgcHJvcGVyIHR5cGUg
CiBQQVNTIE9mZmxpbmVBdWRpb0NvbnRleHQgaW50ZXJmYWNlOiBuZXcgT2ZmbGluZUF1ZGlvQ29u
dGV4dCgxLCAxLCBzYW1wbGVfcmF0ZSkgbXVzdCBpbmhlcml0IHByb3BlcnR5ICJyZXN1bWUoKSIg
d2l0aCB0aGUgcHJvcGVyIHR5cGUgCiBQQVNTIE9mZmxpbmVBdWRpb0NvbnRleHQgaW50ZXJmYWNl
OiBuZXcgT2ZmbGluZUF1ZGlvQ29udGV4dCgxLCAxLCBzYW1wbGVfcmF0ZSkgbXVzdCBpbmhlcml0
IHByb3BlcnR5ICJzdXNwZW5kKGRvdWJsZSkiIHdpdGggdGhlIHByb3BlciB0eXBlIApAQCAtOTA0
LDcgKzkwNCw3IEBAIEZBSUwgQXVkaW9Ob2RlIGludGVyZmFjZTogbmV3IE9zY2lsbGF0b3JOb2Rl
KGNvbnRleHQpIG11c3QgaW5oZXJpdCBwcm9wZXJ0eSAiY2hhCiBGQUlMIEF1ZGlvTm9kZSBpbnRl
cmZhY2U6IG5ldyBPc2NpbGxhdG9yTm9kZShjb250ZXh0KSBtdXN0IGluaGVyaXQgcHJvcGVydHkg
ImNoYW5uZWxJbnRlcnByZXRhdGlvbiIgd2l0aCB0aGUgcHJvcGVyIHR5cGUgYXNzZXJ0X2VxdWFs
czogVW5leHBlY3RlZCBleGNlcHRpb24gd2hlbiBldmFsdWF0aW5nIG9iamVjdCBleHBlY3RlZCBu
dWxsIGJ1dCBnb3Qgb2JqZWN0ICJUeXBlRXJyb3I6IGZ1bmN0aW9uIGlzIG5vdCBhIGNvbnN0cnVj
dG9yIChldmFsdWF0aW5nICduZXcgT3NjaWxsYXRvck5vZGUoY29udGV4dCknKSIKIFBBU1MgUGFu
bmVyTm9kZSBpbnRlcmZhY2U6IGV4aXN0ZW5jZSBhbmQgcHJvcGVydGllcyBvZiBpbnRlcmZhY2Ug
b2JqZWN0IAogRkFJTCBQYW5uZXJOb2RlIGludGVyZmFjZSBvYmplY3QgbGVuZ3RoIGFzc2VydF9l
cXVhbHM6IHdyb25nIHZhbHVlIGZvciBQYW5uZXJOb2RlLmxlbmd0aCBleHBlY3RlZCAxIGJ1dCBn
b3QgMAotRkFJTCBQYW5uZXJOb2RlIGludGVyZmFjZSBvYmplY3QgbmFtZSBhc3NlcnRfZXF1YWxz
OiB3cm9uZyB2YWx1ZSBmb3IgUGFubmVyTm9kZS5uYW1lIGV4cGVjdGVkICJQYW5uZXJOb2RlIiBi
dXQgZ290ICJ3ZWJraXRBdWRpb1Bhbm5lck5vZGUiCitQQVNTIFBhbm5lck5vZGUgaW50ZXJmYWNl
IG9iamVjdCBuYW1lIAogUEFTUyBQYW5uZXJOb2RlIGludGVyZmFjZTogZXhpc3RlbmNlIGFuZCBw
cm9wZXJ0aWVzIG9mIGludGVyZmFjZSBwcm90b3R5cGUgb2JqZWN0IAogUEFTUyBQYW5uZXJOb2Rl
IGludGVyZmFjZTogZXhpc3RlbmNlIGFuZCBwcm9wZXJ0aWVzIG9mIGludGVyZmFjZSBwcm90b3R5
cGUgb2JqZWN0J3MgImNvbnN0cnVjdG9yIiBwcm9wZXJ0eSAKIFBBU1MgUGFubmVyTm9kZSBpbnRl
cmZhY2U6IGV4aXN0ZW5jZSBhbmQgcHJvcGVydGllcyBvZiBpbnRlcmZhY2UgcHJvdG90eXBlIG9i
amVjdCdzIEBAdW5zY29wYWJsZXMgcHJvcGVydHkgCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYmF1ZGlvL3RoZS1hdWRpby1hcGkvdGhl
LWF1ZGlvY29udGV4dC1pbnRlcmZhY2UvYXVkaW9jb250ZXh0LWRldGFjaGVkLWV4ZWN1dGlvbi1j
b250ZXh0LnRlbnRhdGl2ZS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3dlYmF1ZGlvL3RoZS1hdWRpby1hcGkvdGhlLWF1ZGlvY29udGV4
dC1pbnRlcmZhY2UvYXVkaW9jb250ZXh0LWRldGFjaGVkLWV4ZWN1dGlvbi1jb250ZXh0LnRlbnRh
dGl2ZS1leHBlY3RlZC50eHQKaW5kZXggMzQ0ZmNkOWM5NDA1YmVkZmE5YjM0N2RlYjczMTJiN2Q0
NGIyODc2Zi4uOGI4ZGU5MGZjYmI1NGZkOWJjOTY2M2ZhNDkzNDU1MzhjYTBmZTExMCAxMDA2NDQK
LS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJhdWRp
by90aGUtYXVkaW8tYXBpL3RoZS1hdWRpb2NvbnRleHQtaW50ZXJmYWNlL2F1ZGlvY29udGV4dC1k
ZXRhY2hlZC1leGVjdXRpb24tY29udGV4dC50ZW50YXRpdmUtZXhwZWN0ZWQudHh0CisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2ViYXVkaW8vdGhlLWF1
ZGlvLWFwaS90aGUtYXVkaW9jb250ZXh0LWludGVyZmFjZS9hdWRpb2NvbnRleHQtZGV0YWNoZWQt
ZXhlY3V0aW9uLWNvbnRleHQudGVudGF0aXZlLWV4cGVjdGVkLnR4dApAQCAtMSw3ICsxLDYgQEAK
IAotCiBQQVNTICMgQVVESVQgVEFTSyBSVU5ORVIgU1RBUlRFRC4gCi1GQUlMIEV4ZWN1dGluZyAi
ZGVjb2Rpbmctb24tZGV0YWNoZWQtaWZyYW1lIiBwcm9taXNlX3Rlc3Q6IFVuaGFuZGxlZCByZWpl
Y3Rpb24gd2l0aCB2YWx1ZTogb2JqZWN0ICJUeXBlRXJyb3I6IHVuZGVmaW5lZCBpcyBub3QgYSBj
b25zdHJ1Y3RvciAoZXZhbHVhdGluZyAnbmV3IGlmcmFtZS5jb250ZW50V2luZG93LkF1ZGlvQ29u
dGV4dCgpJykiCitGQUlMIEV4ZWN1dGluZyAiZGVjb2Rpbmctb24tZGV0YWNoZWQtaWZyYW1lIiBw
cm9taXNlX3Rlc3Q6IFVuaGFuZGxlZCByZWplY3Rpb24gd2l0aCB2YWx1ZTogb2JqZWN0ICJUeXBl
RXJyb3I6IE5vdCBlbm91Z2ggYXJndW1lbnRzIgogUEFTUyBBdWRpdCByZXBvcnQgCiBQQVNTID4g
W2RlY29kaW5nLW9uLWRldGFjaGVkLWlmcmFtZV0gIAogUEFTUyAjIEFVRElUIFRBU0sgUlVOTkVS
IEZJTklTSEVEOiAxIHRhc2tzIHJhbiBzdWNjZXNzZnVsbHkuIApkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJhdWRpby90aGUtYXVkaW8t
YXBpL3RoZS1hdWRpb25vZGUtaW50ZXJmYWNlL2F1ZGlvbm9kZS1jb25uZWN0LW1ldGhvZC1jaGFp
bmluZy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3dlYmF1ZGlvL3RoZS1hdWRpby1hcGkvdGhlLWF1ZGlvbm9kZS1pbnRlcmZhY2UvYXVk
aW9ub2RlLWNvbm5lY3QtbWV0aG9kLWNoYWluaW5nLWV4cGVjdGVkLnR4dAppbmRleCA3M2Y3N2U1
NWNjODkxNjU2YzJiZGE2OGUzYTllMzcxNjk1ODJmODRjLi42YTY1OWI1NjI1OGQ1NDM3OTc1YjU1
OGRkN2QzYjk5ZmU4MDdkMjZiIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3dlYmF1ZGlvL3RoZS1hdWRpby1hcGkvdGhlLWF1ZGlvbm9kZS1p
bnRlcmZhY2UvYXVkaW9ub2RlLWNvbm5lY3QtbWV0aG9kLWNoYWluaW5nLWV4cGVjdGVkLnR4dAor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYmF1ZGlv
L3RoZS1hdWRpby1hcGkvdGhlLWF1ZGlvbm9kZS1pbnRlcmZhY2UvYXVkaW9ub2RlLWNvbm5lY3Qt
bWV0aG9kLWNoYWluaW5nLWV4cGVjdGVkLnR4dApAQCAtMzYsOSArMzYsOSBAQCBQQVNTICAgVGhl
IHJldHVybiB2YWx1ZSBvZiBHYWluTm9kZS5jb25uZWN0KENoYW5uZWxNZXJnZXJOb2RlLCAwLCAx
KSBtYXRjaGVzIHRoZQogUEFTUyAgIFRoZSByZXR1cm4gdmFsdWUgb2YgT3NjaWxsYXRvck5vZGUu
Y29ubmVjdChHYWluTm9kZSkgbWF0Y2hlcyB0aGUgZGVzdGluYXRpb24gR2Fpbk5vZGUgaXMgZXF1
YWwgdG8gdHJ1ZS4gCiBQQVNTICAgVGhlIHJldHVybiB2YWx1ZSBvZiBPc2NpbGxhdG9yTm9kZS5j
b25uZWN0KEJpcXVhZEZpbHRlck5vZGUsIDApIG1hdGNoZXMgdGhlIGRlc3RpbmF0aW9uIEJpcXVh
ZEZpbHRlck5vZGUgaXMgZXF1YWwgdG8gdHJ1ZS4gCiBQQVNTICAgVGhlIHJldHVybiB2YWx1ZSBv
ZiBPc2NpbGxhdG9yTm9kZS5jb25uZWN0KENoYW5uZWxNZXJnZXJOb2RlLCAwLCAxKSBtYXRjaGVz
IHRoZSBkZXN0aW5hdGlvbiBDaGFubmVsTWVyZ2VyTm9kZSBpcyBlcXVhbCB0byB0cnVlLiAKLVBB
U1MgICBUaGUgcmV0dXJuIHZhbHVlIG9mIHdlYmtpdEF1ZGlvUGFubmVyTm9kZS5jb25uZWN0KEdh
aW5Ob2RlKSBtYXRjaGVzIHRoZSBkZXN0aW5hdGlvbiBHYWluTm9kZSBpcyBlcXVhbCB0byB0cnVl
LiAKLVBBU1MgICBUaGUgcmV0dXJuIHZhbHVlIG9mIHdlYmtpdEF1ZGlvUGFubmVyTm9kZS5jb25u
ZWN0KEJpcXVhZEZpbHRlck5vZGUsIDApIG1hdGNoZXMgdGhlIGRlc3RpbmF0aW9uIEJpcXVhZEZp
bHRlck5vZGUgaXMgZXF1YWwgdG8gdHJ1ZS4gCi1QQVNTICAgVGhlIHJldHVybiB2YWx1ZSBvZiB3
ZWJraXRBdWRpb1Bhbm5lck5vZGUuY29ubmVjdChDaGFubmVsTWVyZ2VyTm9kZSwgMCwgMSkgbWF0
Y2hlcyB0aGUgZGVzdGluYXRpb24gQ2hhbm5lbE1lcmdlck5vZGUgaXMgZXF1YWwgdG8gdHJ1ZS4g
CitQQVNTICAgVGhlIHJldHVybiB2YWx1ZSBvZiBQYW5uZXJOb2RlLmNvbm5lY3QoR2Fpbk5vZGUp
IG1hdGNoZXMgdGhlIGRlc3RpbmF0aW9uIEdhaW5Ob2RlIGlzIGVxdWFsIHRvIHRydWUuIAorUEFT
UyAgIFRoZSByZXR1cm4gdmFsdWUgb2YgUGFubmVyTm9kZS5jb25uZWN0KEJpcXVhZEZpbHRlck5v
ZGUsIDApIG1hdGNoZXMgdGhlIGRlc3RpbmF0aW9uIEJpcXVhZEZpbHRlck5vZGUgaXMgZXF1YWwg
dG8gdHJ1ZS4gCitQQVNTICAgVGhlIHJldHVybiB2YWx1ZSBvZiBQYW5uZXJOb2RlLmNvbm5lY3Qo
Q2hhbm5lbE1lcmdlck5vZGUsIDAsIDEpIG1hdGNoZXMgdGhlIGRlc3RpbmF0aW9uIENoYW5uZWxN
ZXJnZXJOb2RlIGlzIGVxdWFsIHRvIHRydWUuIAogUEFTUyAgIFRoZSByZXR1cm4gdmFsdWUgb2Yg
U2NyaXB0UHJvY2Vzc29yTm9kZS5jb25uZWN0KEdhaW5Ob2RlKSBtYXRjaGVzIHRoZSBkZXN0aW5h
dGlvbiBHYWluTm9kZSBpcyBlcXVhbCB0byB0cnVlLiAKIFBBU1MgICBUaGUgcmV0dXJuIHZhbHVl
IG9mIFNjcmlwdFByb2Nlc3Nvck5vZGUuY29ubmVjdChCaXF1YWRGaWx0ZXJOb2RlLCAwKSBtYXRj
aGVzIHRoZSBkZXN0aW5hdGlvbiBCaXF1YWRGaWx0ZXJOb2RlIGlzIGVxdWFsIHRvIHRydWUuIAog
UEFTUyAgIFRoZSByZXR1cm4gdmFsdWUgb2YgU2NyaXB0UHJvY2Vzc29yTm9kZS5jb25uZWN0KENo
YW5uZWxNZXJnZXJOb2RlLCAwLCAxKSBtYXRjaGVzIHRoZSBkZXN0aW5hdGlvbiBDaGFubmVsTWVy
Z2VyTm9kZSBpcyBlcXVhbCB0byB0cnVlLiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2ViYXVkaW8vdGhlLWF1ZGlvLWFwaS90aGUtb2Zm
bGluZWF1ZGlvY29udGV4dC1pbnRlcmZhY2Uvb2ZmbGluZWF1ZGlvY29udGV4dC1kZXRhY2hlZC1l
eGVjdXRpb24tY29udGV4dC50ZW50YXRpdmUtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJhdWRpby90aGUtYXVkaW8tYXBpL3RoZS1v
ZmZsaW5lYXVkaW9jb250ZXh0LWludGVyZmFjZS9vZmZsaW5lYXVkaW9jb250ZXh0LWRldGFjaGVk
LWV4ZWN1dGlvbi1jb250ZXh0LnRlbnRhdGl2ZS1leHBlY3RlZC50eHQKaW5kZXggZDNmMGZhMDEy
ODQ3YWUzMDA3MjQxMWI2ZTlhM2E0YWI4NDU1MmRjMS4uYjJkYTA3MDQ1MDQwOGU5NmM0YjExMTZk
OTQzZDAyMWU2NDdjMDUxNyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy93ZWJhdWRpby90aGUtYXVkaW8tYXBpL3RoZS1vZmZsaW5lYXVkaW9j
b250ZXh0LWludGVyZmFjZS9vZmZsaW5lYXVkaW9jb250ZXh0LWRldGFjaGVkLWV4ZWN1dGlvbi1j
b250ZXh0LnRlbnRhdGl2ZS1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJhdWRpby90aGUtYXVkaW8tYXBpL3RoZS1vZmZsaW5l
YXVkaW9jb250ZXh0LWludGVyZmFjZS9vZmZsaW5lYXVkaW9jb250ZXh0LWRldGFjaGVkLWV4ZWN1
dGlvbi1jb250ZXh0LnRlbnRhdGl2ZS1leHBlY3RlZC50eHQKQEAgLTEsNyArMSw3IEBACiAKIAog
UEFTUyAjIEFVRElUIFRBU0sgUlVOTkVSIFNUQVJURUQuIAotRkFJTCBFeGVjdXRpbmcgImRlY29k
aW5nLW9uLWRldGFjaGVkLWlmcmFtZSIgcHJvbWlzZV90ZXN0OiBVbmhhbmRsZWQgcmVqZWN0aW9u
IHdpdGggdmFsdWU6IG9iamVjdCAiVHlwZUVycm9yOiB1bmRlZmluZWQgaXMgbm90IGEgY29uc3Ry
dWN0b3IgKGV2YWx1YXRpbmcgJ25ldyBpZnJhbWUuY29udGVudFdpbmRvdy5PZmZsaW5lQXVkaW9D
b250ZXh0KDEsIDEsIDMwMDApJykiCitGQUlMIEV4ZWN1dGluZyAiZGVjb2Rpbmctb24tZGV0YWNo
ZWQtaWZyYW1lIiBwcm9taXNlX3Rlc3Q6IFVuaGFuZGxlZCByZWplY3Rpb24gd2l0aCB2YWx1ZTog
b2JqZWN0ICJTeW50YXhFcnJvcjogVGhlIHN0cmluZyBkaWQgbm90IG1hdGNoIHRoZSBleHBlY3Rl
ZCBwYXR0ZXJuLiIKIFBBU1MgQXVkaXQgcmVwb3J0IAogUEFTUyA+IFtkZWNvZGluZy1vbi1kZXRh
Y2hlZC1pZnJhbWVdICAKIFBBU1MgIyBBVURJVCBUQVNLIFJVTk5FUiBGSU5JU0hFRDogMSB0YXNr
cyByYW4gc3VjY2Vzc2Z1bGx5LiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2lv
cy9qcy9kb20vY29uc3RydWN0b3ItbGVuZ3RoLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3Bs
YXRmb3JtL2lvcy9qcy9kb20vY29uc3RydWN0b3ItbGVuZ3RoLWV4cGVjdGVkLnR4dAppbmRleCA1
NTVkMjNiMzNmOGI2ZTlkYWMwMjRkMDg4YzM1MTZiN2IyYTJjNzcwLi5kYmNiYzc4OGIyNDNhZmFi
MDIwODBlNGRkNTU5ODhiOWJiNjBkMTI0IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9y
bS9pb3MvanMvZG9tL2NvbnN0cnVjdG9yLWxlbmd0aC1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0
VGVzdHMvcGxhdGZvcm0vaW9zL2pzL2RvbS9jb25zdHJ1Y3Rvci1sZW5ndGgtZXhwZWN0ZWQudHh0
CkBAIC00LDcgKzQsNyBAQCBPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBB
U1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURQogCiAKIFBBU1MgQXJyYXlC
dWZmZXIubGVuZ3RoIGlzIDEKLUZBSUwgQXVkaW9Db250ZXh0Lmxlbmd0aCBzaG91bGQgYmUgMC4g
VGhyZXcgZXhjZXB0aW9uIFJlZmVyZW5jZUVycm9yOiBDYW4ndCBmaW5kIHZhcmlhYmxlOiBBdWRp
b0NvbnRleHQKK1BBU1MgQXVkaW9Db250ZXh0Lmxlbmd0aCBpcyAwCiBGQUlMIEF1dG9jb21wbGV0
ZUVycm9yRXZlbnQubGVuZ3RoIHNob3VsZCBiZSAxLiBUaHJldyBleGNlcHRpb24gUmVmZXJlbmNl
RXJyb3I6IENhbid0IGZpbmQgdmFyaWFibGU6IEF1dG9jb21wbGV0ZUVycm9yRXZlbnQKIFBBU1Mg
QW5pbWF0aW9uRXZlbnQubGVuZ3RoIGlzIDEKIFBBU1MgQmxvYi5sZW5ndGggaXMgMApkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2pzL2RvbS9jb25zdHJ1Y3Rvci1sZW5ndGgt
ZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2pzL2RvbS9jb25zdHJ1Y3Rv
ci1sZW5ndGgtZXhwZWN0ZWQudHh0CmluZGV4IDU1NWQyM2IzM2Y4YjZlOWRhYzAyNGQwODhjMzUx
NmI3YjJhMmM3NzAuLmRiY2JjNzg4YjI0M2FmYWIwMjA4MGU0ZGQ1NTk4OGI5YmI2MGQxMjQgMTAw
NjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9qcy9kb20vY29uc3RydWN0b3ItbGVu
Z3RoLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvanMvZG9tL2Nv
bnN0cnVjdG9yLWxlbmd0aC1leHBlY3RlZC50eHQKQEAgLTQsNyArNCw3IEBAIE9uIHN1Y2Nlc3Ms
IHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJU
RVNUIENPTVBMRVRFCiAKIAogUEFTUyBBcnJheUJ1ZmZlci5sZW5ndGggaXMgMQotRkFJTCBBdWRp
b0NvbnRleHQubGVuZ3RoIHNob3VsZCBiZSAwLiBUaHJldyBleGNlcHRpb24gUmVmZXJlbmNlRXJy
b3I6IENhbid0IGZpbmQgdmFyaWFibGU6IEF1ZGlvQ29udGV4dAorUEFTUyBBdWRpb0NvbnRleHQu
bGVuZ3RoIGlzIDAKIEZBSUwgQXV0b2NvbXBsZXRlRXJyb3JFdmVudC5sZW5ndGggc2hvdWxkIGJl
IDEuIFRocmV3IGV4Y2VwdGlvbiBSZWZlcmVuY2VFcnJvcjogQ2FuJ3QgZmluZCB2YXJpYWJsZTog
QXV0b2NvbXBsZXRlRXJyb3JFdmVudAogUEFTUyBBbmltYXRpb25FdmVudC5sZW5ndGggaXMgMQog
UEFTUyBCbG9iLmxlbmd0aCBpcyAwCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93
aW4vanMvZG9tL2NvbnN0cnVjdG9yLWxlbmd0aC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9w
bGF0Zm9ybS93aW4vanMvZG9tL2NvbnN0cnVjdG9yLWxlbmd0aC1leHBlY3RlZC50eHQKaW5kZXgg
OWRkZGFlNDk3ZmE0OWJlYWEwZmU3YzU2N2I1NjA4ZDc0NzFjMDFlNi4uY2I2ZDk5ZjU1NGQ5MGEy
OTFjMDEwZmJiNWJhYWQ0MmY4NDZiZjU5ZCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZv
cm0vd2luL2pzL2RvbS9jb25zdHJ1Y3Rvci1sZW5ndGgtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91
dFRlc3RzL3BsYXRmb3JtL3dpbi9qcy9kb20vY29uc3RydWN0b3ItbGVuZ3RoLWV4cGVjdGVkLnR4
dApAQCAtNCw3ICs0LDcgQEAgT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQ
QVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUKIAogCiBQQVNTIEFycmF5
QnVmZmVyLmxlbmd0aCBpcyAxCi1GQUlMIEF1ZGlvQ29udGV4dC5sZW5ndGggc2hvdWxkIGJlIDAu
IFRocmV3IGV4Y2VwdGlvbiBSZWZlcmVuY2VFcnJvcjogQ2FuJ3QgZmluZCB2YXJpYWJsZTogQXVk
aW9Db250ZXh0CitQQVNTIEF1ZGlvQ29udGV4dC5sZW5ndGggaXMgMAogRkFJTCBBdXRvY29tcGxl
dGVFcnJvckV2ZW50Lmxlbmd0aCBzaG91bGQgYmUgMS4gVGhyZXcgZXhjZXB0aW9uIFJlZmVyZW5j
ZUVycm9yOiBDYW4ndCBmaW5kIHZhcmlhYmxlOiBBdXRvY29tcGxldGVFcnJvckV2ZW50CiBQQVNT
IEFuaW1hdGlvbkV2ZW50Lmxlbmd0aCBpcyAxCiBQQVNTIEJsb2IubGVuZ3RoIGlzIDAK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>402179</attachid>
            <date>2020-06-17 20:21:45 -0700</date>
            <delta_ts>2020-06-17 21:14:20 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-213268-20200617202144.patch</filename>
            <type>text/plain</type>
            <size>276935</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYzMTgwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMWI0YTE0M2FjNTM2MWI0
MGQ4ZjE0MmM0MmIyYzlhNzdhODYyZGU1MS4uZjdjNmJkNTY2ZTdlNWJjZmY3OTg1ZTBiMmZiMDk5
OGIwNzhkMjNkOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI5NiBAQAorMjAyMC0wNi0xNyAgQ2hy
aXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBleHBlcmltZW50YWwg
ZmVhdHVyZSBmbGFnIGZvciBtb2Rlcm4gJiB1bnByZWZpeGVkIFdlYkF1ZGlvIEFQSQorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjEzMjY4CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgSmVyIE5vYmxlLgorCisgICAgICAgIEFkZCBleHBlcmltZW50YWwgZmVh
dHVyZSBmbGFnIGZvciBtb2Rlcm4gJiB1bnByZWZpeGVkIFdlYkF1ZGlvIEFQSSwKKyAgICAgICAg
b2ZmIGJ5IGRlZmF1bHQuCisKKyAgICAgICAgVGhpcyBwYXRjaCBzcGxpdCB0aGUgQXVkaW9Db250
ZXh0LCBPZmZsaW5lQXVkaW9Db250ZXh0IGFuZCBQYW5uZXJOb2RlCisgICAgICAgIElETCBpbnRl
cmZhY2VzIGludG8gdGhlaXIgcHJlZml4ZWQgYW5kIHVucHJlZml4ZWQgdmVyc2lvbnMuIFRoZQor
ICAgICAgICB1bnByZWZpeGVkIHZlcnNpb25zIGFyZSBiZWhpbmQgdGhlIG5ldyBleHBlcmltZW50
YWwgZmVhdHVyZSBmbGFnIHRoYXQKKyAgICAgICAgaXMgY3VycmVudGx5IG9mZiBieSBkZWZhdWx0
IGJ1dCBhdXRvbWF0aWNhbGx5IGdldHMgdHVybmVkIG9uIGluIHRoZQorICAgICAgICBjb250ZXh0
IG9mIGxheW91dCB0ZXN0cy4KKworICAgICAgICBUaGlzIHdpbGwgZ2l2ZSB1cyBtb3JlIGZsZXhp
YmlsaXR5IHdoZW4gd29ya2luZyBvbiB0aGUgbW9kZXJuIGFuZAorICAgICAgICB1bnByZWZpeGVk
IFdlYkF1ZGlvIEFQSSBhcyB3ZSB3aWxsIG5vdCBoYXZlIHRvIHdvcnJ5IGFib3V0IGJhY2t3YXJk
CisgICAgICAgIGNvbXBhdGliaWxpdHkuIFRoaXMgYWxzbyBhbGxvd3MgdXMgdG8gZWFzaWx5IHR1
cm4gaXQgb24gb3Igb2ZmIHZpYQorICAgICAgICB0aGUgZXhwZXJpbWVudGFsIGZlYXR1cmVzIG1l
bnUgaW4gU2FmYXJpLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cywgcmViYXNlbGluZWQgZXhpc3Rp
bmcgdGVzdHMuCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBEZXJpdmVk
U291cmNlcy1pbnB1dC54Y2ZpbGVsaXN0OgorICAgICAgICAqIERlcml2ZWRTb3VyY2VzLW91dHB1
dC54Y2ZpbGVsaXN0OgorICAgICAgICAqIERlcml2ZWRTb3VyY2VzLm1ha2U6CisgICAgICAgICog
TW9kdWxlcy93ZWJhdWRpby9BbmFseXNlck5vZGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QW5h
bHlzZXJOb2RlOjpBbmFseXNlck5vZGUpOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vQW5h
bHlzZXJOb2RlLmg6CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9BdWRpb0Jhc2ljSW5zcGVj
dG9yTm9kZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb0Jhc2ljSW5zcGVjdG9yTm9kZTo6
QXVkaW9CYXNpY0luc3BlY3Rvck5vZGUpOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vQXVk
aW9CYXNpY0luc3BlY3Rvck5vZGUuaDoKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL0F1ZGlv
QmFzaWNQcm9jZXNzb3JOb2RlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvQmFzaWNQcm9j
ZXNzb3JOb2RlOjpBdWRpb0Jhc2ljUHJvY2Vzc29yTm9kZSk6CisgICAgICAgICogTW9kdWxlcy93
ZWJhdWRpby9BdWRpb0Jhc2ljUHJvY2Vzc29yTm9kZS5oOgorICAgICAgICAqIE1vZHVsZXMvd2Vi
YXVkaW8vQXVkaW9CdWZmZXJTb3VyY2VOb2RlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlv
QnVmZmVyU291cmNlTm9kZTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvQnVmZmVy
U291cmNlTm9kZTo6QXVkaW9CdWZmZXJTb3VyY2VOb2RlKToKKyAgICAgICAgKFdlYkNvcmU6OkF1
ZGlvQnVmZmVyU291cmNlTm9kZTo6c2V0QnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlv
QnVmZmVyU291cmNlTm9kZTo6c2V0UGFubmVyTm9kZSk6CisgICAgICAgICogTW9kdWxlcy93ZWJh
dWRpby9BdWRpb0J1ZmZlclNvdXJjZU5vZGUuaDoKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlv
L0F1ZGlvQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb0NvbnRleHRCYXNlOjpB
dWRpb0NvbnRleHRCYXNlKToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvQ29udGV4dDo6QXVkaW9D
b250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvQ29udGV4dEJhc2U6OmRvY3VtZW50IGNv
bnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvQ29udGV4dEJhc2U6OnNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQgY29uc3QpOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0
Lmg6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb0NvbnRleHRCYXNlOjpBdXRvTG9ja2VyOjpBdXRv
TG9ja2VyKToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvQ29udGV4dEJhc2U6OkF1dG9Mb2NrZXI6
On5BdXRvTG9ja2VyKToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvQ29udGV4dDo6bWF4TnVtYmVy
T2ZDaGFubmVscyk6CisgICAgICAgIChpc1R5cGUpOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVk
aW8vQXVkaW9Db250ZXh0LmlkbDoKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQ29u
dGV4dFN0YXRlLmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8v
T2ZmbGluZUF1ZGlvQ29udGV4dC5pZGwuCisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9BdWRp
b0NvbnRleHRTdGF0ZS5pZGw6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
YXVkaW8vT2ZmbGluZUF1ZGlvQ29udGV4dC5pZGwuCisgICAgICAgICogTW9kdWxlcy93ZWJhdWRp
by9BdWRpb0Rlc3RpbmF0aW9uTm9kZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb0Rlc3Rp
bmF0aW9uTm9kZTo6QXVkaW9EZXN0aW5hdGlvbk5vZGUpOgorICAgICAgICAqIE1vZHVsZXMvd2Vi
YXVkaW8vQXVkaW9EZXN0aW5hdGlvbk5vZGUuaDoKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlv
L0F1ZGlvTm9kZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb05vZGU6OkF1ZGlvTm9kZSk6
CisgICAgICAgIChXZWJDb3JlOjpBdWRpb05vZGU6OmNvbm5lY3QpOgorICAgICAgICAoV2ViQ29y
ZTo6QXVkaW9Ob2RlOjpkaXNjb25uZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvTm9kZTo6
c2V0Q2hhbm5lbENvdW50KToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvTm9kZTo6c2V0Q2hhbm5l
bENvdW50TW9kZSk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb05vZGU6OnNldENoYW5uZWxJbnRl
cnByZXRhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb05vZGU6OmVuYWJsZU91dHB1dHNJ
Zk5lY2Vzc2FyeSk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb05vZGU6OmRlcmVmKToKKyAgICAg
ICAgKFdlYkNvcmU6OkF1ZGlvTm9kZTo6Y29udGV4dEZvckJpbmRpbmdzIGNvbnN0KToKKyAgICAg
ICAgKiBNb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvTm9kZS5oOgorICAgICAgICAoV2ViQ29yZTo6QXVk
aW9Ob2RlOjpjb250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvTm9kZTo6Y29udGV4dCBj
b25zdCk6CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9BdWRpb05vZGUuaWRsOgorICAgICAg
ICAqIE1vZHVsZXMvd2ViYXVkaW8vQXVkaW9Ob2RlT3V0cHV0Lmg6CisgICAgICAgIChXZWJDb3Jl
OjpBdWRpb05vZGVPdXRwdXQ6OmNvbnRleHQpOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8v
QXVkaW9QYXJhbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb1BhcmFtOjpBdWRpb1BhcmFt
KToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvUGFyYW0uaDoKKyAgICAgICAgKiBN
b2R1bGVzL3dlYmF1ZGlvL0F1ZGlvUGFyYW1UaW1lbGluZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpBdWRpb1BhcmFtVGltZWxpbmU6OnZhbHVlRm9yQ29udGV4dFRpbWUpOgorICAgICAgICAqIE1v
ZHVsZXMvd2ViYXVkaW8vQXVkaW9QYXJhbVRpbWVsaW5lLmg6CisgICAgICAgICogTW9kdWxlcy93
ZWJhdWRpby9BdWRpb1NjaGVkdWxlZFNvdXJjZU5vZGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
QXVkaW9TY2hlZHVsZWRTb3VyY2VOb2RlOjpBdWRpb1NjaGVkdWxlZFNvdXJjZU5vZGUpOgorICAg
ICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vQXVkaW9TY2hlZHVsZWRTb3VyY2VOb2RlLmg6CisgICAg
ICAgICogTW9kdWxlcy93ZWJhdWRpby9BdWRpb1N1bW1pbmdKdW5jdGlvbi5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpBdWRpb1N1bW1pbmdKdW5jdGlvbjo6QXVkaW9TdW1taW5nSnVuY3Rpb24pOgor
ICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vQXVkaW9TdW1taW5nSnVuY3Rpb24uaDoKKyAgICAg
ICAgKFdlYkNvcmU6OkF1ZGlvU3VtbWluZ0p1bmN0aW9uOjpjb250ZXh0KToKKyAgICAgICAgKiBN
b2R1bGVzL3dlYmF1ZGlvL0JpcXVhZEZpbHRlck5vZGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
QmlxdWFkRmlsdGVyTm9kZTo6QmlxdWFkRmlsdGVyTm9kZSk6CisgICAgICAgICogTW9kdWxlcy93
ZWJhdWRpby9CaXF1YWRGaWx0ZXJOb2RlLmg6CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9C
aXF1YWRQcm9jZXNzb3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QmlxdWFkUHJvY2Vzc29yOjpC
aXF1YWRQcm9jZXNzb3IpOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vQmlxdWFkUHJvY2Vz
c29yLmg6CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9DaGFubmVsTWVyZ2VyTm9kZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpDaGFubmVsTWVyZ2VyTm9kZTo6Y3JlYXRlKToKKyAgICAgICAg
KFdlYkNvcmU6OkNoYW5uZWxNZXJnZXJOb2RlOjpDaGFubmVsTWVyZ2VyTm9kZSk6CisgICAgICAg
ICogTW9kdWxlcy93ZWJhdWRpby9DaGFubmVsTWVyZ2VyTm9kZS5oOgorICAgICAgICAqIE1vZHVs
ZXMvd2ViYXVkaW8vQ2hhbm5lbFNwbGl0dGVyTm9kZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpD
aGFubmVsU3BsaXR0ZXJOb2RlOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6Q2hhbm5lbFNw
bGl0dGVyTm9kZTo6Q2hhbm5lbFNwbGl0dGVyTm9kZSk6CisgICAgICAgICogTW9kdWxlcy93ZWJh
dWRpby9DaGFubmVsU3BsaXR0ZXJOb2RlLmg6CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9D
b252b2x2ZXJOb2RlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbnZvbHZlck5vZGU6OkNvbnZv
bHZlck5vZGUpOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vQ29udm9sdmVyTm9kZS5oOgor
ICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vRGVmYXVsdEF1ZGlvRGVzdGluYXRpb25Ob2RlLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkRlZmF1bHRBdWRpb0Rlc3RpbmF0aW9uTm9kZTo6RGVmYXVs
dEF1ZGlvRGVzdGluYXRpb25Ob2RlKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL0RlZmF1
bHRBdWRpb0Rlc3RpbmF0aW9uTm9kZS5oOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vRGVs
YXlOb2RlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRlbGF5Tm9kZTo6RGVsYXlOb2RlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkRlbGF5Tm9kZTo6Y3JlYXRlKToKKyAgICAgICAgKiBNb2R1bGVzL3dl
YmF1ZGlvL0RlbGF5Tm9kZS5oOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vRGVsYXlQcm9j
ZXNzb3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGVsYXlQcm9jZXNzb3I6OkRlbGF5UHJvY2Vz
c29yKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL0RlbGF5UHJvY2Vzc29yLmg6CisgICAg
ICAgICogTW9kdWxlcy93ZWJhdWRpby9EaXN0YW5jZU1vZGVsVHlwZS5oOiBDb3BpZWQgZnJvbSBT
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL09mZmxpbmVBdWRpb0NvbnRleHQuaWRsLgor
ICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vRGlzdGFuY2VNb2RlbFR5cGUuaWRsOiBDb3BpZWQg
ZnJvbSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL09mZmxpbmVBdWRpb0NvbnRleHQu
aWRsLgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vRHluYW1pY3NDb21wcmVzc29yTm9kZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpEeW5hbWljc0NvbXByZXNzb3JOb2RlOjpEeW5hbWljc0Nv
bXByZXNzb3JOb2RlKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL0R5bmFtaWNzQ29tcHJl
c3Nvck5vZGUuaDoKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL0dhaW5Ob2RlLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkdhaW5Ob2RlOjpHYWluTm9kZSk6CisgICAgICAgICogTW9kdWxlcy93
ZWJhdWRpby9HYWluTm9kZS5oOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vTWVkaWFFbGVt
ZW50QXVkaW9Tb3VyY2VOb2RlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhRWxlbWVudEF1
ZGlvU291cmNlTm9kZTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhRWxlbWVudEF1
ZGlvU291cmNlTm9kZTo6TWVkaWFFbGVtZW50QXVkaW9Tb3VyY2VOb2RlKToKKyAgICAgICAgKFdl
YkNvcmU6Ok1lZGlhRWxlbWVudEF1ZGlvU291cmNlTm9kZTo6c2V0Rm9ybWF0KToKKyAgICAgICAg
KiBNb2R1bGVzL3dlYmF1ZGlvL01lZGlhRWxlbWVudEF1ZGlvU291cmNlTm9kZS5oOgorICAgICAg
ICAqIE1vZHVsZXMvd2ViYXVkaW8vTWVkaWFTdHJlYW1BdWRpb0Rlc3RpbmF0aW9uTm9kZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbUF1ZGlvRGVzdGluYXRpb25Ob2RlOjpjcmVh
dGUpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTdHJlYW1BdWRpb0Rlc3RpbmF0aW9uTm9kZTo6
TWVkaWFTdHJlYW1BdWRpb0Rlc3RpbmF0aW9uTm9kZSk6CisgICAgICAgICogTW9kdWxlcy93ZWJh
dWRpby9NZWRpYVN0cmVhbUF1ZGlvRGVzdGluYXRpb25Ob2RlLmg6CisgICAgICAgICogTW9kdWxl
cy93ZWJhdWRpby9NZWRpYVN0cmVhbUF1ZGlvU291cmNlTm9kZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpNZWRpYVN0cmVhbUF1ZGlvU291cmNlTm9kZTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNv
cmU6Ok1lZGlhU3RyZWFtQXVkaW9Tb3VyY2VOb2RlOjpNZWRpYVN0cmVhbUF1ZGlvU291cmNlTm9k
ZSk6CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9NZWRpYVN0cmVhbUF1ZGlvU291cmNlTm9k
ZS5oOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vT2ZmbGluZUF1ZGlvQ29udGV4dC5pZGw6
CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9PZmZsaW5lQXVkaW9EZXN0aW5hdGlvbk5vZGUu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6T2ZmbGluZUF1ZGlvRGVzdGluYXRpb25Ob2RlOjpPZmZs
aW5lQXVkaW9EZXN0aW5hdGlvbk5vZGUpOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vT2Zm
bGluZUF1ZGlvRGVzdGluYXRpb25Ob2RlLmg6CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9P
c2NpbGxhdG9yTm9kZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpPc2NpbGxhdG9yTm9kZTo6Y3Jl
YXRlKToKKyAgICAgICAgKFdlYkNvcmU6Ok9zY2lsbGF0b3JOb2RlOjpPc2NpbGxhdG9yTm9kZSk6
CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9Pc2NpbGxhdG9yTm9kZS5oOgorICAgICAgICAq
IE1vZHVsZXMvd2ViYXVkaW8vUGFubmVyTm9kZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQYW5u
ZXJOb2RlQmFzZTo6UGFubmVyTm9kZUJhc2UpOgorICAgICAgICAoV2ViQ29yZTo6UGFubmVyTm9k
ZTo6UGFubmVyTm9kZSk6CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9QYW5uZXJOb2RlLmg6
CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9QYW5uZXJOb2RlLmlkbDoKKyAgICAgICAgKiBN
b2R1bGVzL3dlYmF1ZGlvL1Bhbm5pbmdNb2RlbFR5cGUuaDogQ29waWVkIGZyb20gU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJhdWRpby9PZmZsaW5lQXVkaW9Db250ZXh0LmlkbC4KKyAgICAgICAg
KiBNb2R1bGVzL3dlYmF1ZGlvL1Bhbm5pbmdNb2RlbFR5cGUuaWRsOiBDb3BpZWQgZnJvbSBTb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL09mZmxpbmVBdWRpb0NvbnRleHQuaWRsLgorICAg
ICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vU2NyaXB0UHJvY2Vzc29yTm9kZS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpTY3JpcHRQcm9jZXNzb3JOb2RlOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29y
ZTo6U2NyaXB0UHJvY2Vzc29yTm9kZTo6U2NyaXB0UHJvY2Vzc29yTm9kZSk6CisgICAgICAgICog
TW9kdWxlcy93ZWJhdWRpby9TY3JpcHRQcm9jZXNzb3JOb2RlLmg6CisgICAgICAgICogTW9kdWxl
cy93ZWJhdWRpby9XYXZlU2hhcGVyTm9kZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXYXZlU2hh
cGVyTm9kZTo6V2F2ZVNoYXBlck5vZGUpOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vV2F2
ZVNoYXBlck5vZGUuaDoKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL1dlYktpdEF1ZGlvQ29u
dGV4dC5jcHA6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVk
aW9Db250ZXh0LmNwcC4KKyAgICAgICAgKFdlYkNvcmU6OldlYktpdEF1ZGlvQ29udGV4dDo6aXNT
YW1wbGVSYXRlUmFuZ2VHb29kKToKKyAgICAgICAgKFdlYkNvcmU6OldlYktpdEF1ZGlvQ29udGV4
dDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OldlYktpdEF1ZGlvQ29udGV4dDo6V2ViS2l0
QXVkaW9Db250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OldlYktpdEF1ZGlvQ29udGV4dDo6Y29u
c3RydWN0Q29tbW9uKToKKyAgICAgICAgKFdlYkNvcmU6OldlYktpdEF1ZGlvQ29udGV4dDo6fldl
YktpdEF1ZGlvQ29udGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJLaXRBdWRpb0NvbnRleHQ6
OmxhenlJbml0aWFsaXplKToKKyAgICAgICAgKFdlYkNvcmU6OldlYktpdEF1ZGlvQ29udGV4dDo6
Y2xlYXIpOgorICAgICAgICAoV2ViQ29yZTo6V2ViS2l0QXVkaW9Db250ZXh0Ojp1bmluaXRpYWxp
emUpOgorICAgICAgICAoV2ViQ29yZTo6V2ViS2l0QXVkaW9Db250ZXh0Ojppc0luaXRpYWxpemVk
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OldlYktpdEF1ZGlvQ29udGV4dDo6YWRkUmVhY3Rp
b24pOgorICAgICAgICAoV2ViQ29yZTo6V2ViS2l0QXVkaW9Db250ZXh0OjpzZXRTdGF0ZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpXZWJLaXRBdWRpb0NvbnRleHQ6OnN0b3ApOgorICAgICAgICAoV2Vi
Q29yZTo6V2ViS2l0QXVkaW9Db250ZXh0OjpzdXNwZW5kKToKKyAgICAgICAgKFdlYkNvcmU6Oldl
YktpdEF1ZGlvQ29udGV4dDo6cmVzdW1lKToKKyAgICAgICAgKFdlYkNvcmU6OldlYktpdEF1ZGlv
Q29udGV4dDo6YWN0aXZlRE9NT2JqZWN0TmFtZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpX
ZWJLaXRBdWRpb0NvbnRleHQ6Omhvc3RpbmdEb2N1bWVudElkZW50aWZpZXIgY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6V2ViS2l0QXVkaW9Db250ZXh0Ojppc1N1c3BlbmRlZCBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpXZWJLaXRBdWRpb0NvbnRleHQ6OnZpc2liaWxpdHlTdGF0ZUNoYW5n
ZWQpOgorICAgICAgICAoV2ViQ29yZTo6V2ViS2l0QXVkaW9Db250ZXh0Ojp3b3VsZFRhaW50T3Jp
Z2luIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OldlYktpdEF1ZGlvQ29udGV4dDo6Y3JlYXRl
QnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OldlYktpdEF1ZGlvQ29udGV4dDo6ZGVjb2RlQXVk
aW9EYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OldlYktpdEF1ZGlvQ29udGV4dDo6Y3JlYXRlQnVm
ZmVyU291cmNlKToKKyAgICAgICAgKFdlYkNvcmU6OldlYktpdEF1ZGlvQ29udGV4dDo6Y3JlYXRl
TWVkaWFFbGVtZW50U291cmNlKToKKyAgICAgICAgKFdlYkNvcmU6OldlYktpdEF1ZGlvQ29udGV4
dDo6Y3JlYXRlTWVkaWFTdHJlYW1Tb3VyY2UpOgorICAgICAgICAoV2ViQ29yZTo6V2ViS2l0QXVk
aW9Db250ZXh0OjpjcmVhdGVNZWRpYVN0cmVhbURlc3RpbmF0aW9uKToKKyAgICAgICAgKFdlYkNv
cmU6OldlYktpdEF1ZGlvQ29udGV4dDo6Y3JlYXRlU2NyaXB0UHJvY2Vzc29yKToKKyAgICAgICAg
KFdlYkNvcmU6OldlYktpdEF1ZGlvQ29udGV4dDo6Y3JlYXRlQmlxdWFkRmlsdGVyKToKKyAgICAg
ICAgKFdlYkNvcmU6OldlYktpdEF1ZGlvQ29udGV4dDo6Y3JlYXRlV2F2ZVNoYXBlcik6CisgICAg
ICAgIChXZWJDb3JlOjpXZWJLaXRBdWRpb0NvbnRleHQ6OmNyZWF0ZVBhbm5lcik6CisgICAgICAg
IChXZWJDb3JlOjpXZWJLaXRBdWRpb0NvbnRleHQ6OmNyZWF0ZUNvbnZvbHZlcik6CisgICAgICAg
IChXZWJDb3JlOjpXZWJLaXRBdWRpb0NvbnRleHQ6OmNyZWF0ZUR5bmFtaWNzQ29tcHJlc3Nvcik6
CisgICAgICAgIChXZWJDb3JlOjpXZWJLaXRBdWRpb0NvbnRleHQ6OmNyZWF0ZUFuYWx5c2VyKToK
KyAgICAgICAgKFdlYkNvcmU6OldlYktpdEF1ZGlvQ29udGV4dDo6Y3JlYXRlR2Fpbik6CisgICAg
ICAgIChXZWJDb3JlOjpXZWJLaXRBdWRpb0NvbnRleHQ6OmNyZWF0ZURlbGF5KToKKyAgICAgICAg
KFdlYkNvcmU6OldlYktpdEF1ZGlvQ29udGV4dDo6Y3JlYXRlQ2hhbm5lbFNwbGl0dGVyKToKKyAg
ICAgICAgKFdlYkNvcmU6OldlYktpdEF1ZGlvQ29udGV4dDo6Y3JlYXRlQ2hhbm5lbE1lcmdlcik6
CisgICAgICAgIChXZWJDb3JlOjpXZWJLaXRBdWRpb0NvbnRleHQ6OmNyZWF0ZU9zY2lsbGF0b3Ip
OgorICAgICAgICAoV2ViQ29yZTo6V2ViS2l0QXVkaW9Db250ZXh0OjpjcmVhdGVQZXJpb2RpY1dh
dmUpOgorICAgICAgICAoV2ViQ29yZTo6V2ViS2l0QXVkaW9Db250ZXh0Ojpub3RpZnlOb2RlRmlu
aXNoZWRQcm9jZXNzaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OldlYktpdEF1ZGlvQ29udGV4dDo6
ZGVyZWZGaW5pc2hlZFNvdXJjZU5vZGVzKToKKyAgICAgICAgKFdlYkNvcmU6OldlYktpdEF1ZGlv
Q29udGV4dDo6cmVmTm9kZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJLaXRBdWRpb0NvbnRleHQ6
OmRlcmVmTm9kZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJLaXRBdWRpb0NvbnRleHQ6OmRlcmVm
VW5maW5pc2hlZFNvdXJjZU5vZGVzKToKKyAgICAgICAgKFdlYkNvcmU6OldlYktpdEF1ZGlvQ29u
dGV4dDo6bG9jayk6CisgICAgICAgIChXZWJDb3JlOjpXZWJLaXRBdWRpb0NvbnRleHQ6OnRyeUxv
Y2spOgorICAgICAgICAoV2ViQ29yZTo6V2ViS2l0QXVkaW9Db250ZXh0Ojp1bmxvY2spOgorICAg
ICAgICAoV2ViQ29yZTo6V2ViS2l0QXVkaW9Db250ZXh0Ojppc0F1ZGlvVGhyZWFkIGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6OldlYktpdEF1ZGlvQ29udGV4dDo6aXNHcmFwaE93bmVyIGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6OldlYktpdEF1ZGlvQ29udGV4dDo6YWRkRGVmZXJyZWRGaW5p
c2hEZXJlZik6CisgICAgICAgIChXZWJDb3JlOjpXZWJLaXRBdWRpb0NvbnRleHQ6OmhhbmRsZVBy
ZVJlbmRlclRhc2tzKToKKyAgICAgICAgKFdlYkNvcmU6OldlYktpdEF1ZGlvQ29udGV4dDo6aGFu
ZGxlUG9zdFJlbmRlclRhc2tzKToKKyAgICAgICAgKFdlYkNvcmU6OldlYktpdEF1ZGlvQ29udGV4
dDo6aGFuZGxlRGVmZXJyZWRGaW5pc2hEZXJlZnMpOgorICAgICAgICAoV2ViQ29yZTo6V2ViS2l0
QXVkaW9Db250ZXh0OjptYXJrRm9yRGVsZXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6V2ViS2l0
QXVkaW9Db250ZXh0OjpzY2hlZHVsZU5vZGVEZWxldGlvbik6CisgICAgICAgIChXZWJDb3JlOjpX
ZWJLaXRBdWRpb0NvbnRleHQ6OmRlbGV0ZU1hcmtlZE5vZGVzKToKKyAgICAgICAgKFdlYkNvcmU6
OldlYktpdEF1ZGlvQ29udGV4dDo6bWFya1N1bW1pbmdKdW5jdGlvbkRpcnR5KToKKyAgICAgICAg
KFdlYkNvcmU6OldlYktpdEF1ZGlvQ29udGV4dDo6cmVtb3ZlTWFya2VkU3VtbWluZ0p1bmN0aW9u
KToKKyAgICAgICAgKFdlYkNvcmU6OldlYktpdEF1ZGlvQ29udGV4dDo6bWFya0F1ZGlvTm9kZU91
dHB1dERpcnR5KToKKyAgICAgICAgKFdlYkNvcmU6OldlYktpdEF1ZGlvQ29udGV4dDo6aGFuZGxl
RGlydHlBdWRpb1N1bW1pbmdKdW5jdGlvbnMpOgorICAgICAgICAoV2ViQ29yZTo6V2ViS2l0QXVk
aW9Db250ZXh0OjpoYW5kbGVEaXJ0eUF1ZGlvTm9kZU91dHB1dHMpOgorICAgICAgICAoV2ViQ29y
ZTo6V2ViS2l0QXVkaW9Db250ZXh0OjphZGRBdXRvbWF0aWNQdWxsTm9kZSk6CisgICAgICAgIChX
ZWJDb3JlOjpXZWJLaXRBdWRpb0NvbnRleHQ6OnJlbW92ZUF1dG9tYXRpY1B1bGxOb2RlKToKKyAg
ICAgICAgKFdlYkNvcmU6OldlYktpdEF1ZGlvQ29udGV4dDo6dXBkYXRlQXV0b21hdGljUHVsbE5v
ZGVzKToKKyAgICAgICAgKFdlYkNvcmU6OldlYktpdEF1ZGlvQ29udGV4dDo6cHJvY2Vzc0F1dG9t
YXRpY1B1bGxOb2Rlcyk6CisgICAgICAgIChXZWJDb3JlOjpXZWJLaXRBdWRpb0NvbnRleHQ6Om5v
ZGVXaWxsQmVnaW5QbGF5YmFjayk6CisgICAgICAgIChXZWJDb3JlOjpzaG91bGREb2N1bWVudEFs
bG93V2ViQXVkaW9Ub0F1dG9QbGF5KToKKyAgICAgICAgKFdlYkNvcmU6OldlYktpdEF1ZGlvQ29u
dGV4dDo6d2lsbEJlZ2luUGxheWJhY2spOgorICAgICAgICAoV2ViQ29yZTo6V2ViS2l0QXVkaW9D
b250ZXh0Ojp3aWxsUGF1c2VQbGF5YmFjayk6CisgICAgICAgIChXZWJDb3JlOjpXZWJLaXRBdWRp
b0NvbnRleHQ6OnN0YXJ0UmVuZGVyaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OldlYktpdEF1ZGlv
Q29udGV4dDo6bWVkaWFDYW5TdGFydCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJLaXRBdWRpb0Nv
bnRleHQ6Om1lZGlhU3RhdGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6V2ViS2l0QXVkaW9D
b250ZXh0OjpwYWdlTXV0ZWRTdGF0ZURpZENoYW5nZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJL
aXRBdWRpb0NvbnRleHQ6OmlzUGxheWluZ0F1ZGlvRGlkQ2hhbmdlKToKKyAgICAgICAgKFdlYkNv
cmU6OldlYktpdEF1ZGlvQ29udGV4dDo6ZmluaXNoZWRSZW5kZXJpbmcpOgorICAgICAgICAoV2Vi
Q29yZTo6V2ViS2l0QXVkaW9Db250ZXh0OjpkaXNwYXRjaEV2ZW50KToKKyAgICAgICAgKFdlYkNv
cmU6OldlYktpdEF1ZGlvQ29udGV4dDo6aW5jcmVtZW50QWN0aXZlU291cmNlQ291bnQpOgorICAg
ICAgICAoV2ViQ29yZTo6V2ViS2l0QXVkaW9Db250ZXh0OjpkZWNyZW1lbnRBY3RpdmVTb3VyY2VD
b3VudCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJLaXRBdWRpb0NvbnRleHQ6OnN1c3BlbmRSZW5k
ZXJpbmcpOgorICAgICAgICAoV2ViQ29yZTo6V2ViS2l0QXVkaW9Db250ZXh0OjpyZXN1bWVSZW5k
ZXJpbmcpOgorICAgICAgICAoV2ViQ29yZTo6V2ViS2l0QXVkaW9Db250ZXh0OjpjbG9zZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpXZWJLaXRBdWRpb0NvbnRleHQ6OnN1c3BlbmRQbGF5YmFjayk6Cisg
ICAgICAgIChXZWJDb3JlOjpXZWJLaXRBdWRpb0NvbnRleHQ6Om1heVJlc3VtZVBsYXliYWNrKToK
KyAgICAgICAgKFdlYkNvcmU6OldlYktpdEF1ZGlvQ29udGV4dDo6cG9zdFRhc2spOgorICAgICAg
ICAoV2ViQ29yZTo6V2ViS2l0QXVkaW9Db250ZXh0OjpvcmlnaW4gY29uc3QpOgorICAgICAgICAo
V2ViQ29yZTo6V2ViS2l0QXVkaW9Db250ZXh0OjphZGRDb25zb2xlTWVzc2FnZSk6CisgICAgICAg
IChXZWJDb3JlOjpXZWJLaXRBdWRpb0NvbnRleHQ6OmNsZWFyUGVuZGluZ0FjdGl2aXR5KToKKyAg
ICAgICAgKFdlYkNvcmU6OldlYktpdEF1ZGlvQ29udGV4dDo6bWFrZVBlbmRpbmdBY3Rpdml0eSk6
CisgICAgICAgIChXZWJDb3JlOjpXZWJLaXRBdWRpb0NvbnRleHQ6OmxvZ0NoYW5uZWwgY29uc3Qp
OgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vV2ViS2l0QXVkaW9Db250ZXh0Lmg6IENvcGll
ZCBmcm9tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0LmguCisg
ICAgICAgIChXZWJDb3JlOjpXZWJLaXRBdWRpb0NvbnRleHQ6OmRlc3RpbmF0aW9uKToKKyAgICAg
ICAgKFdlYkNvcmU6OldlYktpdEF1ZGlvQ29udGV4dDo6YWN0aXZlU291cmNlQ291bnQgY29uc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6V2ViS2l0QXVkaW9Db250ZXh0OjpsaXN0ZW5lcik6CisgICAg
ICAgIChXZWJDb3JlOjpXZWJLaXRBdWRpb0NvbnRleHQ6OmlzQ2xvc2VkIGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OldlYktpdEF1ZGlvQ29udGV4dDo6Y29ubmVjdGlvbkNvdW50IGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6OldlYktpdEF1ZGlvQ29udGV4dDo6YXVkaW9UaHJlYWQgY29uc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6V2ViS2l0QXVkaW9Db250ZXh0OjptYXhOdW1iZXJPZkNoYW5u
ZWxzKToKKyAgICAgICAgKFdlYkNvcmU6OldlYktpdEF1ZGlvQ29udGV4dDo6dXNlckdlc3R1cmVS
ZXF1aXJlZEZvckF1ZGlvU3RhcnQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6V2ViS2l0QXVk
aW9Db250ZXh0OjpwYWdlQ29uc2VudFJlcXVpcmVkRm9yQXVkaW9TdGFydCBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpXZWJLaXRBdWRpb0NvbnRleHQ6OnN0YXRlIGNvbnN0KToKKyAgICAgICAg
KGlzVHlwZSk6CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9XZWJLaXRBdWRpb0NvbnRleHQu
aWRsOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQ29u
dGV4dC5pZGwuCisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9XZWJLaXRBdWRpb1Bhbm5lck5v
ZGUuY3BwOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1Bhbm5l
ck5vZGUuY3BwLgorICAgICAgICAoV2ViQ29yZTo6Zml4TkFOcyk6CisgICAgICAgIChXZWJDb3Jl
OjpXZWJLaXRBdWRpb1Bhbm5lck5vZGU6OldlYktpdEF1ZGlvUGFubmVyTm9kZSk6CisgICAgICAg
IChXZWJDb3JlOjpXZWJLaXRBdWRpb1Bhbm5lck5vZGU6On5XZWJLaXRBdWRpb1Bhbm5lck5vZGUp
OgorICAgICAgICAoV2ViQ29yZTo6V2ViS2l0QXVkaW9QYW5uZXJOb2RlOjpwdWxsSW5wdXRzKToK
KyAgICAgICAgKFdlYkNvcmU6OldlYktpdEF1ZGlvUGFubmVyTm9kZTo6cHJvY2Vzcyk6CisgICAg
ICAgIChXZWJDb3JlOjpXZWJLaXRBdWRpb1Bhbm5lck5vZGU6OnJlc2V0KToKKyAgICAgICAgKFdl
YkNvcmU6OldlYktpdEF1ZGlvUGFubmVyTm9kZTo6aW5pdGlhbGl6ZSk6CisgICAgICAgIChXZWJD
b3JlOjpXZWJLaXRBdWRpb1Bhbm5lck5vZGU6OnVuaW5pdGlhbGl6ZSk6CisgICAgICAgIChXZWJD
b3JlOjpXZWJLaXRBdWRpb1Bhbm5lck5vZGU6Omxpc3RlbmVyKToKKyAgICAgICAgKFdlYkNvcmU6
OldlYktpdEF1ZGlvUGFubmVyTm9kZTo6c2V0UGFubmluZ01vZGVsKToKKyAgICAgICAgKFdlYkNv
cmU6OldlYktpdEF1ZGlvUGFubmVyTm9kZTo6ZGlzdGFuY2VNb2RlbCBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpXZWJLaXRBdWRpb1Bhbm5lck5vZGU6OnNldERpc3RhbmNlTW9kZWwpOgorICAg
ICAgICAoV2ViQ29yZTo6V2ViS2l0QXVkaW9QYW5uZXJOb2RlOjpnZXRBemltdXRoRWxldmF0aW9u
KToKKyAgICAgICAgKFdlYkNvcmU6OldlYktpdEF1ZGlvUGFubmVyTm9kZTo6ZG9wcGxlclJhdGUp
OgorICAgICAgICAoV2ViQ29yZTo6V2ViS2l0QXVkaW9QYW5uZXJOb2RlOjpkaXN0YW5jZUNvbmVH
YWluKToKKyAgICAgICAgKFdlYkNvcmU6OldlYktpdEF1ZGlvUGFubmVyTm9kZTo6bm90aWZ5QXVk
aW9Tb3VyY2VzQ29ubmVjdGVkVG9Ob2RlKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL1dl
YktpdEF1ZGlvUGFubmVyTm9kZS5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmF1ZGlvL1Bhbm5lck5vZGUuaC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL1dlYktp
dEF1ZGlvUGFubmVyTm9kZS5pZGw6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViYXVkaW8vUGFubmVyTm9kZS5pZGwuCisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9XZWJL
aXRPZmZsaW5lQXVkaW9Db250ZXh0LmNwcDogQ29waWVkIGZyb20gU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJhdWRpby9EZWxheU5vZGUuY3BwLgorICAgICAgICAoV2ViQ29yZTo6V2ViS2l0T2Zm
bGluZUF1ZGlvQ29udGV4dDo6V2ViS2l0T2ZmbGluZUF1ZGlvQ29udGV4dCk6CisgICAgICAgIChX
ZWJDb3JlOjpXZWJLaXRPZmZsaW5lQXVkaW9Db250ZXh0OjpjcmVhdGUpOgorICAgICAgICAqIE1v
ZHVsZXMvd2ViYXVkaW8vV2ViS2l0T2ZmbGluZUF1ZGlvQ29udGV4dC5oOiBDb3BpZWQgZnJvbSBT
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0RlbGF5Tm9kZS5oLgorICAgICAgICAqIE1v
ZHVsZXMvd2ViYXVkaW8vV2ViS2l0T2ZmbGluZUF1ZGlvQ29udGV4dC5pZGw6IENvcGllZCBmcm9t
IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vT2ZmbGluZUF1ZGlvQ29udGV4dC5pZGwu
CisgICAgICAgICogU291cmNlcy50eHQ6CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qOgorICAgICAgICAqIGJpbmRpbmdzL2pzL1dlYkNvcmVCdWlsdGluTmFtZXMu
aDoKKyAgICAgICAgKiBkb20vRXZlbnRUYXJnZXRGYWN0b3J5LmluOgorICAgICAgICAqIHBhZ2Uv
U2V0dGluZ3MueWFtbDoKKyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFscy5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpJbnRlcm5hbHM6OnNldEF1ZGlvQ29udGV4dFJlc3RyaWN0aW9ucyk6CisgICAg
ICAgICogdGVzdGluZy9JbnRlcm5hbHMuaDoKKyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFscy5p
ZGw6CisKIDIwMjAtMDYtMTYgIEFudG9pbmUgUXVpbnQgIDxncmFvdXRzQHdlYmtpdC5vcmc+CiAK
ICAgICAgICAgcXVpa3IuY29tOiB1bmFibGUgdG8gc2VsZWN0IGl0ZW0gZnJvbSBkcm9wZG93bgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5n
ZUxvZwppbmRleCBkOGM2ZThmN2FkZmFlOGJhMDlmNDQ5ZWJhMjQ0ZWQ2OThjOGFlMGU1Li42MDE0
YTk4MDc1ZDM2NmI3MzBlNWQyZDNiMmNkM2Q5YmM5NWU4MzMwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsx
LDE1IEBACisyMDIwLTA2LTE3ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAg
ICAgICAgQWRkIGV4cGVyaW1lbnRhbCBmZWF0dXJlIGZsYWcgZm9yIG1vZGVybiAmIHVucHJlZml4
ZWQgV2ViQXVkaW8gQVBJCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMTMyNjgKKworICAgICAgICBSZXZpZXdlZCBieSBKZXIgTm9ibGUuCisKKyAgICAg
ICAgQWRkIGV4cGVyaW1lbnRhbCBmZWF0dXJlIGZsYWcgZm9yIG1vZGVybiAmIHVucHJlZml4ZWQg
V2ViQXVkaW8gQVBJLAorICAgICAgICBvZmYgYnkgZGVmYXVsdC4KKworICAgICAgICAqIFNoYXJl
ZC9XZWJQcmVmZXJlbmNlcy55YW1sOgorCiAyMDIwLTA2LTE3ICBBbGV4IENocmlzdGVuc2VuICA8
YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CiAKICAgICAgICAgTnVsbCBjaGVjayBwbHVnaW4ubV9k
YXRhIGJlZm9yZSB1c2luZyBpdCBpbiBQREZQbHVnaW46OkJ5dGVSYW5nZVJlcXVlc3Q6OmNvbXBs
ZXRlVW5jb25kaXRpb25hbGx5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3Rz
LnR4dCBiL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CmluZGV4IDk3NTk0ODk1ZDhjN2Fj
MjgxMThjOTdjNGYxOWFlNWI2YWI4OTFjOWUuLjM5OWE2YmQzZmQwOTZjNTExNzg4MWM5MjU3Njkx
NTA1MTMzYzMwMTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0Cisr
KyBiL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CkBAIC00MzMsNiArNDMzLDcgQEAgc2V0
KFdlYkNvcmVfTk9OX1NWR19JRExfRklMRVMKICAgICBNb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQnVm
ZmVyQ2FsbGJhY2suaWRsCiAgICAgTW9kdWxlcy93ZWJhdWRpby9BdWRpb0J1ZmZlclNvdXJjZU5v
ZGUuaWRsCiAgICAgTW9kdWxlcy93ZWJhdWRpby9BdWRpb0NvbnRleHQuaWRsCisgICAgTW9kdWxl
cy93ZWJhdWRpby9BdWRpb0NvbnRleHRTdGF0ZS5pZGwKICAgICBNb2R1bGVzL3dlYmF1ZGlvL0F1
ZGlvRGVzdGluYXRpb25Ob2RlLmlkbAogICAgIE1vZHVsZXMvd2ViYXVkaW8vQXVkaW9MaXN0ZW5l
ci5pZGwKICAgICBNb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvTm9kZS5pZGwKQEAgLTQ0Myw2ICs0NDQs
NyBAQCBzZXQoV2ViQ29yZV9OT05fU1ZHX0lETF9GSUxFUwogICAgIE1vZHVsZXMvd2ViYXVkaW8v
Q2hhbm5lbFNwbGl0dGVyTm9kZS5pZGwKICAgICBNb2R1bGVzL3dlYmF1ZGlvL0NvbnZvbHZlck5v
ZGUuaWRsCiAgICAgTW9kdWxlcy93ZWJhdWRpby9EZWxheU5vZGUuaWRsCisgICAgTW9kdWxlcy93
ZWJhdWRpby9EaXN0YW5jZU1vZGVsVHlwZS5pZGwKICAgICBNb2R1bGVzL3dlYmF1ZGlvL0R5bmFt
aWNzQ29tcHJlc3Nvck5vZGUuaWRsCiAgICAgTW9kdWxlcy93ZWJhdWRpby9HYWluTm9kZS5pZGwK
ICAgICBNb2R1bGVzL3dlYmF1ZGlvL01lZGlhRWxlbWVudEF1ZGlvU291cmNlTm9kZS5pZGwKQEAg
LTQ1Miw5ICs0NTQsMTMgQEAgc2V0KFdlYkNvcmVfTk9OX1NWR19JRExfRklMRVMKICAgICBNb2R1
bGVzL3dlYmF1ZGlvL09mZmxpbmVBdWRpb0NvbnRleHQuaWRsCiAgICAgTW9kdWxlcy93ZWJhdWRp
by9Pc2NpbGxhdG9yTm9kZS5pZGwKICAgICBNb2R1bGVzL3dlYmF1ZGlvL1Bhbm5lck5vZGUuaWRs
CisgICAgTW9kdWxlcy93ZWJhdWRpby9QYW5uaW5nTW9kZWxUeXBlLmlkbAogICAgIE1vZHVsZXMv
d2ViYXVkaW8vUGVyaW9kaWNXYXZlLmlkbAogICAgIE1vZHVsZXMvd2ViYXVkaW8vU2NyaXB0UHJv
Y2Vzc29yTm9kZS5pZGwKICAgICBNb2R1bGVzL3dlYmF1ZGlvL1dhdmVTaGFwZXJOb2RlLmlkbAor
ICAgIE1vZHVsZXMvd2ViYXVkaW8vV2ViS2l0QXVkaW9Db250ZXh0LmlkbAorICAgIE1vZHVsZXMv
d2ViYXVkaW8vV2ViS2l0QXVkaW9QYW5uZXJOb2RlLmlkbAorICAgIE1vZHVsZXMvd2ViYXVkaW8v
V2ViS2l0T2ZmbGluZUF1ZGlvQ29udGV4dC5pZGwKIAogICAgIE1vZHVsZXMvd2ViYXV0aG4vQXR0
ZXN0YXRpb25Db252ZXlhbmNlUHJlZmVyZW5jZS5pZGwKICAgICBNb2R1bGVzL3dlYmF1dGhuL0F1
dGhlbnRpY2F0aW9uRXh0ZW5zaW9uc0NsaWVudElucHV0cy5pZGwKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLWlucHV0LnhjZmlsZWxpc3QgYi9Tb3VyY2UvV2ViQ29y
ZS9EZXJpdmVkU291cmNlcy1pbnB1dC54Y2ZpbGVsaXN0CmluZGV4IDZhN2FhN2QxNGViYjQzN2Q3
NDFlYzJlZjg1MzM3NzVkMzQ0ZDQ2NTQuLmY3ZDY0YzE5M2QwZTdkZjI4MTY1YmRkNzRhNDBkM2Y5
MGU2YTgyMTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLWlucHV0
LnhjZmlsZWxpc3QKKysrIGIvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMtaW5wdXQueGNm
aWxlbGlzdApAQCAtMzAwLDYgKzMwMCw3IEBAICQoUFJPSkVDVF9ESVIpL01vZHVsZXMvd2ViYXVk
aW8vQXVkaW9CdWZmZXIuaWRsCiAkKFBST0pFQ1RfRElSKS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlv
QnVmZmVyQ2FsbGJhY2suaWRsCiAkKFBST0pFQ1RfRElSKS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlv
QnVmZmVyU291cmNlTm9kZS5pZGwKICQoUFJPSkVDVF9ESVIpL01vZHVsZXMvd2ViYXVkaW8vQXVk
aW9Db250ZXh0LmlkbAorJChQUk9KRUNUX0RJUikvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0NvbnRl
eHRTdGF0ZS5pZGwKICQoUFJPSkVDVF9ESVIpL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9EZXN0aW5h
dGlvbk5vZGUuaWRsCiAkKFBST0pFQ1RfRElSKS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvTGlzdGVu
ZXIuaWRsCiAkKFBST0pFQ1RfRElSKS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvTm9kZS5pZGwKQEAg
LTMxMCw2ICszMTEsNyBAQCAkKFBST0pFQ1RfRElSKS9Nb2R1bGVzL3dlYmF1ZGlvL0NoYW5uZWxN
ZXJnZXJOb2RlLmlkbAogJChQUk9KRUNUX0RJUikvTW9kdWxlcy93ZWJhdWRpby9DaGFubmVsU3Bs
aXR0ZXJOb2RlLmlkbAogJChQUk9KRUNUX0RJUikvTW9kdWxlcy93ZWJhdWRpby9Db252b2x2ZXJO
b2RlLmlkbAogJChQUk9KRUNUX0RJUikvTW9kdWxlcy93ZWJhdWRpby9EZWxheU5vZGUuaWRsCisk
KFBST0pFQ1RfRElSKS9Nb2R1bGVzL3dlYmF1ZGlvL0Rpc3RhbmNlTW9kZWxUeXBlLmlkbAogJChQ
Uk9KRUNUX0RJUikvTW9kdWxlcy93ZWJhdWRpby9EeW5hbWljc0NvbXByZXNzb3JOb2RlLmlkbAog
JChQUk9KRUNUX0RJUikvTW9kdWxlcy93ZWJhdWRpby9HYWluTm9kZS5pZGwKICQoUFJPSkVDVF9E
SVIpL01vZHVsZXMvd2ViYXVkaW8vTWVkaWFFbGVtZW50QXVkaW9Tb3VyY2VOb2RlLmlkbApAQCAt
MzE5LDkgKzMyMSwxMyBAQCAkKFBST0pFQ1RfRElSKS9Nb2R1bGVzL3dlYmF1ZGlvL09mZmxpbmVB
dWRpb0NvbXBsZXRpb25FdmVudC5pZGwKICQoUFJPSkVDVF9ESVIpL01vZHVsZXMvd2ViYXVkaW8v
T2ZmbGluZUF1ZGlvQ29udGV4dC5pZGwKICQoUFJPSkVDVF9ESVIpL01vZHVsZXMvd2ViYXVkaW8v
T3NjaWxsYXRvck5vZGUuaWRsCiAkKFBST0pFQ1RfRElSKS9Nb2R1bGVzL3dlYmF1ZGlvL1Bhbm5l
ck5vZGUuaWRsCiskKFBST0pFQ1RfRElSKS9Nb2R1bGVzL3dlYmF1ZGlvL1Bhbm5pbmdNb2RlbFR5
cGUuaWRsCiAkKFBST0pFQ1RfRElSKS9Nb2R1bGVzL3dlYmF1ZGlvL1BlcmlvZGljV2F2ZS5pZGwK
ICQoUFJPSkVDVF9ESVIpL01vZHVsZXMvd2ViYXVkaW8vU2NyaXB0UHJvY2Vzc29yTm9kZS5pZGwK
ICQoUFJPSkVDVF9ESVIpL01vZHVsZXMvd2ViYXVkaW8vV2F2ZVNoYXBlck5vZGUuaWRsCiskKFBS
T0pFQ1RfRElSKS9Nb2R1bGVzL3dlYmF1ZGlvL1dlYktpdEF1ZGlvQ29udGV4dC5pZGwKKyQoUFJP
SkVDVF9ESVIpL01vZHVsZXMvd2ViYXVkaW8vV2ViS2l0QXVkaW9QYW5uZXJOb2RlLmlkbAorJChQ
Uk9KRUNUX0RJUikvTW9kdWxlcy93ZWJhdWRpby9XZWJLaXRPZmZsaW5lQXVkaW9Db250ZXh0Lmlk
bAogJChQUk9KRUNUX0RJUikvTW9kdWxlcy93ZWJhdXRobi9BdHRlc3RhdGlvbkNvbnZleWFuY2VQ
cmVmZXJlbmNlLmlkbAogJChQUk9KRUNUX0RJUikvTW9kdWxlcy93ZWJhdXRobi9BdXRoZW50aWNh
dGlvbkV4dGVuc2lvbnNDbGllbnRJbnB1dHMuaWRsCiAkKFBST0pFQ1RfRElSKS9Nb2R1bGVzL3dl
YmF1dGhuL0F1dGhlbnRpY2F0aW9uRXh0ZW5zaW9uc0NsaWVudE91dHB1dHMuaWRsCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlzdCBiL1Nv
dXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0CmluZGV4IGExNDMz
NjI1MTQwMmY2ODM2ZWM4ODA0OGYzZTBjYmQ5MTQyNmIwMTcuLmNiYzY0OGFmZjg3MmUxN2M4YWVi
MmYzZGM2ZTliYzZiNzhjMDQ0OTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRT
b3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0CisrKyBiL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3Vy
Y2VzLW91dHB1dC54Y2ZpbGVsaXN0CkBAIC0xNTUsNiArMTU1LDggQEAgJChCVUlMVF9QUk9EVUNU
U19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNBdWRpb0NvbmZpZ3VyYXRpb24uY3BwCiAk
KEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0F1ZGlvQ29uZmln
dXJhdGlvbi5oCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9K
U0F1ZGlvQ29udGV4dC5jcHAKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9X
ZWJDb3JlL0pTQXVkaW9Db250ZXh0LmgKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291
cmNlcy9XZWJDb3JlL0pTQXVkaW9Db250ZXh0U3RhdGUuY3BwCiskKEJVSUxUX1BST0RVQ1RTX0RJ
UikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0F1ZGlvQ29udGV4dFN0YXRlLmgKICQoQlVJTFRf
UFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTQXVkaW9EZXN0aW5hdGlvbk5v
ZGUuY3BwCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0F1
ZGlvRGVzdGluYXRpb25Ob2RlLmgKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNl
cy9XZWJDb3JlL0pTQXVkaW9MaXN0ZW5lci5jcHAKQEAgLTQ4Niw2ICs0ODgsOCBAQCAkKEJVSUxU
X1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0RldmljZU9yaWVudGF0aW9u
T3JNb3Rpb25FdmVudC5jcAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dl
YkNvcmUvSlNEZXZpY2VPcmllbnRhdGlvbk9yTW90aW9uRXZlbnQuaAogJChCVUlMVF9QUk9EVUNU
U19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNEZXZpY2VPcmllbnRhdGlvbk9yTW90aW9u
UGVybWlzc2lvblN0YXRlLmNwcAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2Vz
L1dlYkNvcmUvSlNEZXZpY2VPcmllbnRhdGlvbk9yTW90aW9uUGVybWlzc2lvblN0YXRlLmgKKyQo
QlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTRGlzdGFuY2VNb2Rl
bFR5cGUuY3BwCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9K
U0Rpc3RhbmNlTW9kZWxUeXBlLmgKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNl
cy9XZWJDb3JlL0pTRG9jdW1lbnQuY3BwCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNv
dXJjZXMvV2ViQ29yZS9KU0RvY3VtZW50LmgKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVk
U291cmNlcy9XZWJDb3JlL0pTRG9jdW1lbnRBbmRFbGVtZW50RXZlbnRIYW5kbGVycy5jcHAKQEAg
LTEyMjQsNiArMTIyOCw4IEBAICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9X
ZWJDb3JlL0pTUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUuY3BwCiAkKEJVSUxUX1BST0RVQ1RTX0RJ
UikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU1BhaW50V29ya2xldEdsb2JhbFNjb3BlLmgKICQo
QlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTUGFubmVyTm9kZS5j
cHAKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTUGFubmVy
Tm9kZS5oCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU1Bh
bm5pbmdNb2RlbFR5cGUuY3BwCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMv
V2ViQ29yZS9KU1Bhbm5pbmdNb2RlbFR5cGUuaAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2
ZWRTb3VyY2VzL1dlYkNvcmUvSlNQYXJlbnROb2RlLmNwcAogJChCVUlMVF9QUk9EVUNUU19ESVIp
L0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNQYXJlbnROb2RlLmgKICQoQlVJTFRfUFJPRFVDVFNf
RElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTUGF0aDJELmNwcApAQCAtMjA3OCw2ICsyMDg0
LDEwIEBAICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTV2Vi
R1BVVGV4dHVyZVZpZXcuY3BwCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMv
V2ViQ29yZS9KU1dlYkdQVVRleHR1cmVWaWV3LmgKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJp
dmVkU291cmNlcy9XZWJDb3JlL0pTV2ViS2l0QW5pbWF0aW9uRXZlbnQuY3BwCiAkKEJVSUxUX1BS
T0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU1dlYktpdEFuaW1hdGlvbkV2ZW50
LmgKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTV2ViS2l0
QXVkaW9Db250ZXh0LmNwcAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dl
YkNvcmUvSlNXZWJLaXRBdWRpb0NvbnRleHQuaAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2
ZWRTb3VyY2VzL1dlYkNvcmUvSlNXZWJLaXRBdWRpb1Bhbm5lck5vZGUuY3BwCiskKEJVSUxUX1BS
T0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU1dlYktpdEF1ZGlvUGFubmVyTm9k
ZS5oCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU1dlYktp
dENTU01hdHJpeC5jcHAKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJD
b3JlL0pTV2ViS2l0Q1NTTWF0cml4LmgKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291
cmNlcy9XZWJDb3JlL0pTV2ViS2l0Q1NTVmlld3BvcnRSdWxlLmNwcApAQCAtMjA5NCw2ICsyMTA0
LDggQEAgJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNXZWJL
aXRNZWRpYUtleXMuY3BwCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2Vi
Q29yZS9KU1dlYktpdE1lZGlhS2V5cy5oCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNv
dXJjZXMvV2ViQ29yZS9KU1dlYktpdE5hbWVzcGFjZS5jcHAKICQoQlVJTFRfUFJPRFVDVFNfRElS
KS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTV2ViS2l0TmFtZXNwYWNlLmgKKyQoQlVJTFRfUFJP
RFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTV2ViS2l0T2ZmbGluZUF1ZGlvQ29u
dGV4dC5jcHAKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pT
V2ViS2l0T2ZmbGluZUF1ZGlvQ29udGV4dC5oCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZl
ZFNvdXJjZXMvV2ViQ29yZS9KU1dlYktpdFBsYXliYWNrVGFyZ2V0QXZhaWxhYmlsaXR5RXZlbnQu
Y3BwCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU1dlYktp
dFBsYXliYWNrVGFyZ2V0QXZhaWxhYmlsaXR5RXZlbnQuaAogJChCVUlMVF9QUk9EVUNUU19ESVIp
L0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNXZWJLaXRQb2ludC5jcHAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UgYi9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVk
U291cmNlcy5tYWtlCmluZGV4IGQyNjcwODllMzg3MzdkOTI0Zjk0NjUyOTkwY2FiOTIxM2M5OGJk
MjguLmIyN2M3OWNlNjYzZTJjOGI4ZWE0NjBhZTA4MWViZjFkZGU3MDMzYmEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UKKysrIGIvU291cmNlL1dlYkNvcmUv
RGVyaXZlZFNvdXJjZXMubWFrZQpAQCAtMzgzLDYgKzM4Myw3IEBAIEpTX0JJTkRJTkdfSURMUyA9
IFwKICAgICAkKFdlYkNvcmUpL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9CdWZmZXJDYWxsYmFjay5p
ZGwgXAogICAgICQoV2ViQ29yZSkvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0J1ZmZlclNvdXJjZU5v
ZGUuaWRsIFwKICAgICAkKFdlYkNvcmUpL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0Lmlk
bCBcCisgICAgJChXZWJDb3JlKS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQ29udGV4dFN0YXRlLmlk
bCBcCiAgICAgJChXZWJDb3JlKS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvRGVzdGluYXRpb25Ob2Rl
LmlkbCBcCiAgICAgJChXZWJDb3JlKS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvTGlzdGVuZXIuaWRs
IFwKICAgICAkKFdlYkNvcmUpL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Ob2RlLmlkbCBcCkBAIC0z
OTMsNiArMzk0LDcgQEAgSlNfQklORElOR19JRExTID0gXAogICAgICQoV2ViQ29yZSkvTW9kdWxl
cy93ZWJhdWRpby9DaGFubmVsU3BsaXR0ZXJOb2RlLmlkbCBcCiAgICAgJChXZWJDb3JlKS9Nb2R1
bGVzL3dlYmF1ZGlvL0NvbnZvbHZlck5vZGUuaWRsIFwKICAgICAkKFdlYkNvcmUpL01vZHVsZXMv
d2ViYXVkaW8vRGVsYXlOb2RlLmlkbCBcCisgICAgJChXZWJDb3JlKS9Nb2R1bGVzL3dlYmF1ZGlv
L0Rpc3RhbmNlTW9kZWxUeXBlLmlkbCBcCiAgICAgJChXZWJDb3JlKS9Nb2R1bGVzL3dlYmF1ZGlv
L0R5bmFtaWNzQ29tcHJlc3Nvck5vZGUuaWRsIFwKICAgICAkKFdlYkNvcmUpL01vZHVsZXMvd2Vi
YXVkaW8vR2Fpbk5vZGUuaWRsIFwKICAgICAkKFdlYkNvcmUpL01vZHVsZXMvd2ViYXVkaW8vTWVk
aWFFbGVtZW50QXVkaW9Tb3VyY2VOb2RlLmlkbCBcCkBAIC00MDIsOSArNDA0LDEzIEBAIEpTX0JJ
TkRJTkdfSURMUyA9IFwKICAgICAkKFdlYkNvcmUpL01vZHVsZXMvd2ViYXVkaW8vT2ZmbGluZUF1
ZGlvQ29udGV4dC5pZGwgXAogICAgICQoV2ViQ29yZSkvTW9kdWxlcy93ZWJhdWRpby9Pc2NpbGxh
dG9yTm9kZS5pZGwgXAogICAgICQoV2ViQ29yZSkvTW9kdWxlcy93ZWJhdWRpby9QYW5uZXJOb2Rl
LmlkbCBcCisgICAgJChXZWJDb3JlKS9Nb2R1bGVzL3dlYmF1ZGlvL1Bhbm5pbmdNb2RlbFR5cGUu
aWRsIFwKICAgICAkKFdlYkNvcmUpL01vZHVsZXMvd2ViYXVkaW8vUGVyaW9kaWNXYXZlLmlkbCBc
CiAgICAgJChXZWJDb3JlKS9Nb2R1bGVzL3dlYmF1ZGlvL1NjcmlwdFByb2Nlc3Nvck5vZGUuaWRs
IFwKICAgICAkKFdlYkNvcmUpL01vZHVsZXMvd2ViYXVkaW8vV2F2ZVNoYXBlck5vZGUuaWRsIFwK
KyAgICAkKFdlYkNvcmUpL01vZHVsZXMvd2ViYXVkaW8vV2ViS2l0QXVkaW9Db250ZXh0LmlkbCBc
CisgICAgJChXZWJDb3JlKS9Nb2R1bGVzL3dlYmF1ZGlvL1dlYktpdEF1ZGlvUGFubmVyTm9kZS5p
ZGwgXAorICAgICQoV2ViQ29yZSkvTW9kdWxlcy93ZWJhdWRpby9XZWJLaXRPZmZsaW5lQXVkaW9D
b250ZXh0LmlkbCBcCiAgICAgJChXZWJDb3JlKS9Nb2R1bGVzL3dlYmF1dGhuL0F0dGVzdGF0aW9u
Q29udmV5YW5jZVByZWZlcmVuY2UuaWRsIFwKICAgICAkKFdlYkNvcmUpL01vZHVsZXMvd2ViYXV0
aG4vQXV0aGVudGljYXRpb25FeHRlbnNpb25zQ2xpZW50SW5wdXRzLmlkbCBcCiAgICAgJChXZWJD
b3JlKS9Nb2R1bGVzL3dlYmF1dGhuL0F1dGhlbnRpY2F0aW9uRXh0ZW5zaW9uc0NsaWVudE91dHB1
dHMuaWRsIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQW5h
bHlzZXJOb2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQW5hbHlzZXJO
b2RlLmNwcAppbmRleCAxNzk4NzA3MDFmODUzMzg0OGI4YTQ5YTc1ZDNhZjEzNjE1NGIwOGQyLi4y
MTVkZTMyMWU5YTE2YzMyNDZjYTQ5NDc0ZDllYWUyNTIyNTM4MjAxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0FuYWx5c2VyTm9kZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BbmFseXNlck5vZGUuY3BwCkBAIC0zNiw3ICszNiw3
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogV1RGX01BS0VfSVNPX0FMTE9DQVRFRF9JTVBMKEFu
YWx5c2VyTm9kZSk7CiAKLUFuYWx5c2VyTm9kZTo6QW5hbHlzZXJOb2RlKEF1ZGlvQ29udGV4dCYg
Y29udGV4dCwgZmxvYXQgc2FtcGxlUmF0ZSkKK0FuYWx5c2VyTm9kZTo6QW5hbHlzZXJOb2RlKEF1
ZGlvQ29udGV4dEJhc2UmIGNvbnRleHQsIGZsb2F0IHNhbXBsZVJhdGUpCiAgICAgOiBBdWRpb0Jh
c2ljSW5zcGVjdG9yTm9kZShjb250ZXh0LCBzYW1wbGVSYXRlLCAyKQogewogICAgIHNldE5vZGVU
eXBlKE5vZGVUeXBlQW5hbHlzZXIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJhdWRpby9BbmFseXNlck5vZGUuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVk
aW8vQW5hbHlzZXJOb2RlLmgKaW5kZXggZGExYjVlODljYTI4ZGVlY2MzOWMyZjM2Njk3ZmQ5MGEw
YjNlMGY3ZS4uYTQwMjNhMzBkZWEwZGYyYmM5YTdiYjA0YmVkYWQ4YTMwZGI5ZGNlNSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BbmFseXNlck5vZGUuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0FuYWx5c2VyTm9kZS5oCkBAIC0zMiw3
ICszMiw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIEFuYWx5c2VyTm9kZSBmaW5hbCA6
IHB1YmxpYyBBdWRpb0Jhc2ljSW5zcGVjdG9yTm9kZSB7CiAgICAgV1RGX01BS0VfSVNPX0FMTE9D
QVRFRChBbmFseXNlck5vZGUpOwogcHVibGljOgotICAgIHN0YXRpYyBSZWY8QW5hbHlzZXJOb2Rl
PiBjcmVhdGUoQXVkaW9Db250ZXh0JiBjb250ZXh0LCBmbG9hdCBzYW1wbGVSYXRlKQorICAgIHN0
YXRpYyBSZWY8QW5hbHlzZXJOb2RlPiBjcmVhdGUoQXVkaW9Db250ZXh0QmFzZSYgY29udGV4dCwg
ZmxvYXQgc2FtcGxlUmF0ZSkKICAgICB7CiAgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEFu
YWx5c2VyTm9kZShjb250ZXh0LCBzYW1wbGVSYXRlKSk7CiAgICAgfQpAQCAtNTgsNyArNTgsNyBA
QCBwdWJsaWM6CiAgICAgdm9pZCBnZXRCeXRlVGltZURvbWFpbkRhdGEoY29uc3QgUmVmUHRyPEpT
Qzo6VWludDhBcnJheT4mIGFycmF5KSB7IG1fYW5hbHlzZXIuZ2V0Qnl0ZVRpbWVEb21haW5EYXRh
KGFycmF5LmdldCgpKTsgfQogCiBwcml2YXRlOgotICAgIEFuYWx5c2VyTm9kZShBdWRpb0NvbnRl
eHQmLCBmbG9hdCBzYW1wbGVSYXRlKTsKKyAgICBBbmFseXNlck5vZGUoQXVkaW9Db250ZXh0QmFz
ZSYsIGZsb2F0IHNhbXBsZVJhdGUpOwogCiAgICAgdm9pZCBwcm9jZXNzKHNpemVfdCBmcmFtZXNU
b1Byb2Nlc3MpIGZpbmFsOwogICAgIHZvaWQgcmVzZXQoKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9CYXNpY0luc3BlY3Rvck5vZGUuY3Bw
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0Jhc2ljSW5zcGVjdG9yTm9k
ZS5jcHAKaW5kZXggMGZiNTViMDhmMGMxYTJiZTJkMDcwYzRlMGQ4ZDhmNDY3ZTM0NmE3Mi4uMTQ1
M2RhY2FmZGExZDM4YTM0Y2ZkMWI2YjkzY2I3ODMzMjM1ZDk4OCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0Jhc2ljSW5zcGVjdG9yTm9kZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0Jhc2ljSW5zcGVjdG9yTm9k
ZS5jcHAKQEAgLTM2LDcgKzM2LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBXVEZfTUFLRV9J
U09fQUxMT0NBVEVEX0lNUEwoQXVkaW9CYXNpY0luc3BlY3Rvck5vZGUpOwogCi1BdWRpb0Jhc2lj
SW5zcGVjdG9yTm9kZTo6QXVkaW9CYXNpY0luc3BlY3Rvck5vZGUoQXVkaW9Db250ZXh0JiBjb250
ZXh0LCBmbG9hdCBzYW1wbGVSYXRlLCB1bnNpZ25lZCBvdXRwdXRDaGFubmVsQ291bnQpCitBdWRp
b0Jhc2ljSW5zcGVjdG9yTm9kZTo6QXVkaW9CYXNpY0luc3BlY3Rvck5vZGUoQXVkaW9Db250ZXh0
QmFzZSYgY29udGV4dCwgZmxvYXQgc2FtcGxlUmF0ZSwgdW5zaWduZWQgb3V0cHV0Q2hhbm5lbENv
dW50KQogICAgIDogQXVkaW9Ob2RlKGNvbnRleHQsIHNhbXBsZVJhdGUpCiB7CiAgICAgc2V0Tm9k
ZVR5cGUoTm9kZVR5cGVCYXNpY0luc3BlY3Rvcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQmFzaWNJbnNwZWN0b3JOb2RlLmggYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQmFzaWNJbnNwZWN0b3JOb2RlLmgKaW5kZXggODBl
MDhkMjk2MTdiMTc3NGM2MGRkMTg3OTNkMTYzMGVmMmFkMDNkYi4uZTc2OWU0NmFlMjFmNDczNDFj
MjczYzg4NDVjYmUwMjllODEyOGQ2NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJhdWRpby9BdWRpb0Jhc2ljSW5zcGVjdG9yTm9kZS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViYXVkaW8vQXVkaW9CYXNpY0luc3BlY3Rvck5vZGUuaApAQCAtMzQsNyArMzQs
NyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBBdWRpb0Jhc2ljSW5zcGVjdG9yTm9kZSA6
IHB1YmxpYyBBdWRpb05vZGUgewogICAgIFdURl9NQUtFX0lTT19BTExPQ0FURUQoQXVkaW9CYXNp
Y0luc3BlY3Rvck5vZGUpOwogcHVibGljOgotICAgIEF1ZGlvQmFzaWNJbnNwZWN0b3JOb2RlKEF1
ZGlvQ29udGV4dCYsIGZsb2F0IHNhbXBsZVJhdGUsIHVuc2lnbmVkIG91dHB1dENoYW5uZWxDb3Vu
dCk7CisgICAgQXVkaW9CYXNpY0luc3BlY3Rvck5vZGUoQXVkaW9Db250ZXh0QmFzZSYsIGZsb2F0
IHNhbXBsZVJhdGUsIHVuc2lnbmVkIG91dHB1dENoYW5uZWxDb3VudCk7CiAKIHByaXZhdGU6CiAg
ICAgdm9pZCBwdWxsSW5wdXRzKHNpemVfdCBmcmFtZXNUb1Byb2Nlc3MpIG92ZXJyaWRlOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0Jhc2ljUHJvY2Vz
c29yTm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQmFzaWNQ
cm9jZXNzb3JOb2RlLmNwcAppbmRleCAwYjlmMWNlZDg3NDViNWQ5OThkYzM4ZDYzNmU3OTBhYmZi
ZTZlOTgzLi5mN2I3OTZiZTU1NTQ1MzZhNmE1NDJjNzVlMzYwNTUyNWY5NDY4YTI5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQmFzaWNQcm9jZXNzb3JO
b2RlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQmFzaWNQ
cm9jZXNzb3JOb2RlLmNwcApAQCAtMzksNyArMzksNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
IFdURl9NQUtFX0lTT19BTExPQ0FURURfSU1QTChBdWRpb0Jhc2ljUHJvY2Vzc29yTm9kZSk7CiAK
LUF1ZGlvQmFzaWNQcm9jZXNzb3JOb2RlOjpBdWRpb0Jhc2ljUHJvY2Vzc29yTm9kZShBdWRpb0Nv
bnRleHQmIGNvbnRleHQsIGZsb2F0IHNhbXBsZVJhdGUpCitBdWRpb0Jhc2ljUHJvY2Vzc29yTm9k
ZTo6QXVkaW9CYXNpY1Byb2Nlc3Nvck5vZGUoQXVkaW9Db250ZXh0QmFzZSYgY29udGV4dCwgZmxv
YXQgc2FtcGxlUmF0ZSkKICAgICA6IEF1ZGlvTm9kZShjb250ZXh0LCBzYW1wbGVSYXRlKQogewog
ICAgIGFkZElucHV0KG1ha2VVbmlxdWU8QXVkaW9Ob2RlSW5wdXQ+KHRoaXMpKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9CYXNpY1Byb2Nlc3Nvck5v
ZGUuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9CYXNpY1Byb2Nlc3Nv
ck5vZGUuaAppbmRleCA4MmNmZmRhNTlmMjc4MjBkYjBkM2Q1NDYwMWQ2YWNjNGFjNzZmMTYxLi5l
MTYzNzNiZjAyOTc2YTQ1YWQ4MjVlMmU2M2E4MzdhZmY0ZjkyMTlhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQmFzaWNQcm9jZXNzb3JOb2RlLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0Jhc2ljUHJvY2Vzc29yTm9k
ZS5oCkBAIC0zNyw3ICszNyw3IEBAIGNsYXNzIEF1ZGlvUHJvY2Vzc29yOwogY2xhc3MgQXVkaW9C
YXNpY1Byb2Nlc3Nvck5vZGUgOiBwdWJsaWMgQXVkaW9Ob2RlIHsKICAgICBXVEZfTUFLRV9JU09f
QUxMT0NBVEVEKEF1ZGlvQmFzaWNQcm9jZXNzb3JOb2RlKTsKIHB1YmxpYzoKLSAgICBBdWRpb0Jh
c2ljUHJvY2Vzc29yTm9kZShBdWRpb0NvbnRleHQmLCBmbG9hdCBzYW1wbGVSYXRlKTsKKyAgICBB
dWRpb0Jhc2ljUHJvY2Vzc29yTm9kZShBdWRpb0NvbnRleHRCYXNlJiwgZmxvYXQgc2FtcGxlUmF0
ZSk7CiAKICAgICAvLyBBdWRpb05vZGUKICAgICB2b2lkIHByb2Nlc3Moc2l6ZV90IGZyYW1lc1Rv
UHJvY2Vzcykgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmF1ZGlvL0F1ZGlvQnVmZmVyU291cmNlTm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmF1ZGlvL0F1ZGlvQnVmZmVyU291cmNlTm9kZS5jcHAKaW5kZXggYzM2NjFkZTU3ZDczOWVj
NDcwZDZmYWQ5ZjU0MWU0OTVlYzk3NmRlZi4uMGMxYmE0ZTk0YTk4Y2JmN2QxOWJkYzNiMjNhNjJm
YTk0NmYwOTUzMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9B
dWRpb0J1ZmZlclNvdXJjZU5vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
YXVkaW8vQXVkaW9CdWZmZXJTb3VyY2VOb2RlLmNwcApAQCAtNDksMTIgKzQ5LDEyIEBAIGNvbnN0
IGRvdWJsZSBEZWZhdWx0R3JhaW5EdXJhdGlvbiA9IDAuMDIwOyAvLyAyMG1zCiAvLyB0byBtaW5p
bWl6ZSBsaW5lYXIgaW50ZXJwb2xhdGlvbiBhbGlhc2luZy4KIGNvbnN0IGRvdWJsZSBNYXhSYXRl
ID0gMTAyNDsKIAotUmVmPEF1ZGlvQnVmZmVyU291cmNlTm9kZT4gQXVkaW9CdWZmZXJTb3VyY2VO
b2RlOjpjcmVhdGUoQXVkaW9Db250ZXh0JiBjb250ZXh0LCBmbG9hdCBzYW1wbGVSYXRlKQorUmVm
PEF1ZGlvQnVmZmVyU291cmNlTm9kZT4gQXVkaW9CdWZmZXJTb3VyY2VOb2RlOjpjcmVhdGUoQXVk
aW9Db250ZXh0QmFzZSYgY29udGV4dCwgZmxvYXQgc2FtcGxlUmF0ZSkKIHsKICAgICByZXR1cm4g
YWRvcHRSZWYoKm5ldyBBdWRpb0J1ZmZlclNvdXJjZU5vZGUoY29udGV4dCwgc2FtcGxlUmF0ZSkp
OwogfQogCi1BdWRpb0J1ZmZlclNvdXJjZU5vZGU6OkF1ZGlvQnVmZmVyU291cmNlTm9kZShBdWRp
b0NvbnRleHQmIGNvbnRleHQsIGZsb2F0IHNhbXBsZVJhdGUpCitBdWRpb0J1ZmZlclNvdXJjZU5v
ZGU6OkF1ZGlvQnVmZmVyU291cmNlTm9kZShBdWRpb0NvbnRleHRCYXNlJiBjb250ZXh0LCBmbG9h
dCBzYW1wbGVSYXRlKQogICAgIDogQXVkaW9TY2hlZHVsZWRTb3VyY2VOb2RlKGNvbnRleHQsIHNh
bXBsZVJhdGUpCiAgICAgLCBtX2J1ZmZlcihudWxscHRyKQogICAgICwgbV9pc0xvb3BpbmcoZmFs
c2UpCkBAIC00MTMsNyArNDEzLDcgQEAgdm9pZCBBdWRpb0J1ZmZlclNvdXJjZU5vZGU6OnNldEJ1
ZmZlcihSZWZQdHI8QXVkaW9CdWZmZXI+JiYgYnVmZmVyKQogICAgIERFQlVHX0xPRyhMT0dJREVO
VElGSUVSKTsKIAogICAgIC8vIFRoZSBjb250ZXh0IG11c3QgYmUgbG9ja2VkIHNpbmNlIGNoYW5n
aW5nIHRoZSBidWZmZXIgY2FuIHJlLWNvbmZpZ3VyZSB0aGUgbnVtYmVyIG9mIGNoYW5uZWxzIHRo
YXQgYXJlIG91dHB1dC4KLSAgICBBdWRpb0NvbnRleHQ6OkF1dG9Mb2NrZXIgY29udGV4dExvY2tl
cihjb250ZXh0KCkpOworICAgIEF1ZGlvQ29udGV4dEJhc2U6OkF1dG9Mb2NrZXIgY29udGV4dExv
Y2tlcihjb250ZXh0KCkpOwogICAgIAogICAgIC8vIFRoaXMgc3luY2hyb25pemVzIHdpdGggcHJv
Y2VzcygpLgogICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sobV9wcm9jZXNzTXV0ZXgpOwpAQCAt
NTU3LDcgKzU1Nyw3IEBAIGJvb2wgQXVkaW9CdWZmZXJTb3VyY2VOb2RlOjpwcm9wYWdhdGVzU2ls
ZW5jZSgpIGNvbnN0CiAgICAgcmV0dXJuICFpc1BsYXlpbmdPclNjaGVkdWxlZCgpIHx8IGhhc0Zp
bmlzaGVkKCkgfHwgIW1fYnVmZmVyOwogfQogCi12b2lkIEF1ZGlvQnVmZmVyU291cmNlTm9kZTo6
c2V0UGFubmVyTm9kZShQYW5uZXJOb2RlKiBwYW5uZXJOb2RlKQordm9pZCBBdWRpb0J1ZmZlclNv
dXJjZU5vZGU6OnNldFBhbm5lck5vZGUoUGFubmVyTm9kZUJhc2UqIHBhbm5lck5vZGUpCiB7CiAg
ICAgaWYgKG1fcGFubmVyTm9kZSAhPSBwYW5uZXJOb2RlICYmICFoYXNGaW5pc2hlZCgpKSB7CiAg
ICAgICAgIGlmIChwYW5uZXJOb2RlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJhdWRpby9BdWRpb0J1ZmZlclNvdXJjZU5vZGUuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViYXVkaW8vQXVkaW9CdWZmZXJTb3VyY2VOb2RlLmgKaW5kZXggNTQ4YjI2ZTdmYTc1MTRk
ZTlhZDY0ZDNlMzUzNmI5ZjM0YmVkYTlmYi4uNjAxMTMxMTk5YTRmYTkyZDczMGM1MGQ1YWEyNjAw
MzhmNmZkOTZlYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9B
dWRpb0J1ZmZlclNvdXJjZU5vZGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1
ZGlvL0F1ZGlvQnVmZmVyU291cmNlTm9kZS5oCkBAIC0zMSw3ICszMSw3IEBACiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKIGNsYXNzIEF1ZGlvQnVmZmVyOwotY2xhc3MgUGFubmVyTm9kZTsKK2NsYXNz
IFBhbm5lck5vZGVCYXNlOwogCiAvLyBBdWRpb0J1ZmZlclNvdXJjZU5vZGUgaXMgYW4gQXVkaW9O
b2RlIHJlcHJlc2VudGluZyBhbiBhdWRpbyBzb3VyY2UgZnJvbSBhbiBpbi1tZW1vcnkgYXVkaW8g
YXNzZXQgcmVwcmVzZW50ZWQgYnkgYW4gQXVkaW9CdWZmZXIuCiAvLyBJdCBnZW5lcmFsbHkgd2ls
bCBiZSB1c2VkIGZvciBzaG9ydCBzb3VuZHMgd2hpY2ggcmVxdWlyZSBhIGhpZ2ggZGVncmVlIG9m
IHNjaGVkdWxpbmcgZmxleGliaWxpdHkgKGNhbiBwbGF5YmFjayBpbiByaHl0aG1pY2FsbHkgcGVy
ZmVjdCB3YXlzKS4KQEAgLTM5LDcgKzM5LDcgQEAgY2xhc3MgUGFubmVyTm9kZTsKIGNsYXNzIEF1
ZGlvQnVmZmVyU291cmNlTm9kZSBmaW5hbCA6IHB1YmxpYyBBdWRpb1NjaGVkdWxlZFNvdXJjZU5v
ZGUgewogICAgIFdURl9NQUtFX0lTT19BTExPQ0FURUQoQXVkaW9CdWZmZXJTb3VyY2VOb2RlKTsK
IHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPEF1ZGlvQnVmZmVyU291cmNlTm9kZT4gY3JlYXRlKEF1
ZGlvQ29udGV4dCYsIGZsb2F0IHNhbXBsZVJhdGUpOworICAgIHN0YXRpYyBSZWY8QXVkaW9CdWZm
ZXJTb3VyY2VOb2RlPiBjcmVhdGUoQXVkaW9Db250ZXh0QmFzZSYsIGZsb2F0IHNhbXBsZVJhdGUp
OwogCiAgICAgdmlydHVhbCB+QXVkaW9CdWZmZXJTb3VyY2VOb2RlKCk7CiAKQEAgLTc5LDcgKzc5
LDcgQEAgcHVibGljOgogICAgIEF1ZGlvUGFyYW0qIHBsYXliYWNrUmF0ZSgpIHsgcmV0dXJuIG1f
cGxheWJhY2tSYXRlLmdldCgpOyB9CiAKICAgICAvLyBJZiBhIHBhbm5lciBub2RlIGlzIHNldCwg
dGhlbiB3ZSBjYW4gaW5jb3Jwb3JhdGUgZG9wcGxlciBzaGlmdCBpbnRvIHRoZSBwbGF5YmFjayBw
aXRjaCByYXRlLgotICAgIHZvaWQgc2V0UGFubmVyTm9kZShQYW5uZXJOb2RlKik7CisgICAgdm9p
ZCBzZXRQYW5uZXJOb2RlKFBhbm5lck5vZGVCYXNlKik7CiAgICAgdm9pZCBjbGVhclBhbm5lck5v
ZGUoKTsKIAogICAgIC8vIElmIHdlIGFyZSBubyBsb25nZXIgcGxheWluZywgcHJvcG9nYXRlIHNp
bGVuY2UgYWhlYWQgdG8gZG93bnN0cmVhbSBub2Rlcy4KQEAgLTkxLDcgKzkxLDcgQEAgcHVibGlj
OgogICAgIGNvbnN0IGNoYXIqIGFjdGl2ZURPTU9iamVjdE5hbWUoKSBjb25zdCBvdmVycmlkZSB7
IHJldHVybiAiQXVkaW9CdWZmZXJTb3VyY2VOb2RlIjsgfQogCiBwcml2YXRlOgotICAgIEF1ZGlv
QnVmZmVyU291cmNlTm9kZShBdWRpb0NvbnRleHQmLCBmbG9hdCBzYW1wbGVSYXRlKTsKKyAgICBB
dWRpb0J1ZmZlclNvdXJjZU5vZGUoQXVkaW9Db250ZXh0QmFzZSYsIGZsb2F0IHNhbXBsZVJhdGUp
OwogCiAgICAgZG91YmxlIHRhaWxUaW1lKCkgY29uc3QgZmluYWwgeyByZXR1cm4gMDsgfQogICAg
IGRvdWJsZSBsYXRlbmN5VGltZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIDA7IH0KQEAgLTE0NSw3
ICsxNDUsNyBAQCBwcml2YXRlOgogCiAgICAgLy8gV2Ugb3B0aW9uYWxseSBrZWVwIHRyYWNrIG9m
IGEgcGFubmVyIG5vZGUgd2hpY2ggaGFzIGEgZG9wcGxlciBzaGlmdCB0aGF0IGlzIGluY29ycG9y
YXRlZCBpbnRvCiAgICAgLy8gdGhlIHBpdGNoIHJhdGUuIFdlIG1hbnVhbGx5IG1hbmFnZSByZWYt
Y291bnRpbmcgYmVjYXVzZSB3ZSB3YW50IHRvIHVzZSBSZWZUeXBlQ29ubmVjdGlvbi4KLSAgICBQ
YW5uZXJOb2RlKiBtX3Bhbm5lck5vZGU7CisgICAgUGFubmVyTm9kZUJhc2UqIG1fcGFubmVyTm9k
ZTsKIAogICAgIC8vIFRoaXMgc3luY2hyb25pemVzIHByb2Nlc3MoKSB3aXRoIHNldEJ1ZmZlcigp
IHdoaWNoIGNhbiBjYXVzZSBkeW5hbWljIGNoYW5uZWwgY291bnQgY2hhbmdlcy4KICAgICBtdXRh
YmxlIExvY2sgbV9wcm9jZXNzTXV0ZXg7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmF1ZGlvL0F1ZGlvQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmF1ZGlvL0F1ZGlvQ29udGV4dC5jcHAKaW5kZXggMzgyZGM3Y2YwY2QwZjVkNWQzMDI3NmU2M2Q5
MmRiZTBiNTM3ZWE1OS4uMjZlMWZjN2NjYWIxNDM0ZDA1YWYxYWJhYTFjNDhlMDAyZTJiMzFjMyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0NvbnRleHQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0LmNw
cApAQCAtMTA3LDYgKzEwNyw3IEBAIGNvbnN0IHVuc2lnbmVkIE1heFBlcmlvZGljV2F2ZUxlbmd0
aCA9IDQwOTY7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorV1RGX01BS0VfSVNPX0FMTE9DQVRF
RF9JTVBMKEF1ZGlvQ29udGV4dEJhc2UpOwogV1RGX01BS0VfSVNPX0FMTE9DQVRFRF9JTVBMKEF1
ZGlvQ29udGV4dCk7CiAKICNkZWZpbmUgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChmbXQsIC4uLikg
UkVMRUFTRV9MT0dfSUYoZG9jdW1lbnQoKSAmJiBkb2N1bWVudCgpLT5wYWdlKCkgJiYgZG9jdW1l
bnQoKS0+cGFnZSgpLT5pc0Fsd2F5c09uTG9nZ2luZ0FsbG93ZWQoKSwgTWVkaWEsICIlcCAtIEF1
ZGlvQ29udGV4dDo6IiBmbXQsIHRoaXMsICMjX19WQV9BUkdTX18pCkBAIC0xMzcsOSArMTM4LDE0
IEBAIEV4Y2VwdGlvbk9yPFJlZjxBdWRpb0NvbnRleHQ+PiBBdWRpb0NvbnRleHQ6OmNyZWF0ZShE
b2N1bWVudCYgZG9jdW1lbnQpCiAgICAgcmV0dXJuIGF1ZGlvQ29udGV4dDsKIH0KIAorQXVkaW9D
b250ZXh0QmFzZTo6QXVkaW9Db250ZXh0QmFzZShEb2N1bWVudCYgZG9jdW1lbnQpCisgICAgOiBB
Y3RpdmVET01PYmplY3QoZG9jdW1lbnQpCit7Cit9CisKIC8vIENvbnN0cnVjdG9yIGZvciByZW5k
ZXJpbmcgdG8gdGhlIGF1ZGlvIGhhcmR3YXJlLgogQXVkaW9Db250ZXh0OjpBdWRpb0NvbnRleHQo
RG9jdW1lbnQmIGRvY3VtZW50KQotICAgIDogQWN0aXZlRE9NT2JqZWN0KGRvY3VtZW50KQorICAg
IDogQXVkaW9Db250ZXh0QmFzZShkb2N1bWVudCkKICNpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQK
ICAgICAsIG1fbG9nZ2VyKGRvY3VtZW50LmxvZ2dlcigpKQogICAgICwgbV9sb2dJZGVudGlmaWVy
KHVuaXF1ZUxvZ0lkZW50aWZpZXIoKSkKQEAgLTE2NCw3ICsxNzAsNyBAQCBBdWRpb0NvbnRleHQ6
OkF1ZGlvQ29udGV4dChEb2N1bWVudCYgZG9jdW1lbnQpCiAKIC8vIENvbnN0cnVjdG9yIGZvciBv
ZmZsaW5lIChub24tcmVhbHRpbWUpIHJlbmRlcmluZy4KIEF1ZGlvQ29udGV4dDo6QXVkaW9Db250
ZXh0KERvY3VtZW50JiBkb2N1bWVudCwgQXVkaW9CdWZmZXIqIHJlbmRlclRhcmdldCkKLSAgICA6
IEFjdGl2ZURPTU9iamVjdChkb2N1bWVudCkKKyAgICA6IEF1ZGlvQ29udGV4dEJhc2UoZG9jdW1l
bnQpCiAjaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECiAgICAgLCBtX2xvZ2dlcihkb2N1bWVudC5s
b2dnZXIoKSkKICAgICAsIG1fbG9nSWRlbnRpZmllcih1bmlxdWVMb2dJZGVudGlmaWVyKCkpCkBA
IC0zNjYsNyArMzcyLDcgQEAgY29uc3QgY2hhciogQXVkaW9Db250ZXh0OjphY3RpdmVET01PYmpl
Y3ROYW1lKCkgY29uc3QKICAgICByZXR1cm4gIkF1ZGlvQ29udGV4dCI7CiB9CiAKLURvY3VtZW50
KiBBdWRpb0NvbnRleHQ6OmRvY3VtZW50KCkgY29uc3QKK0RvY3VtZW50KiBBdWRpb0NvbnRleHRC
YXNlOjpkb2N1bWVudCgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIGRvd25jYXN0PERvY3VtZW50Piht
X3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQpOwogfQpAQCAtMTAwMiw5ICsxMDA4LDE0IEBAIHZvaWQg
QXVkaW9Db250ZXh0OjpyZW1vdmVNYXJrZWRTdW1taW5nSnVuY3Rpb24oQXVkaW9TdW1taW5nSnVu
Y3Rpb24qIHN1bW1pbmdKdW5jCiAgICAgbV9kaXJ0eVN1bW1pbmdKdW5jdGlvbnMucmVtb3ZlKHN1
bW1pbmdKdW5jdGlvbik7CiB9CiAKK0V2ZW50VGFyZ2V0SW50ZXJmYWNlIEF1ZGlvQ29udGV4dDo6
ZXZlbnRUYXJnZXRJbnRlcmZhY2UoKSBjb25zdAoreworICAgIHJldHVybiBBdWRpb0NvbnRleHRF
dmVudFRhcmdldEludGVyZmFjZVR5cGU7Cit9CisKIHZvaWQgQXVkaW9Db250ZXh0OjptYXJrQXVk
aW9Ob2RlT3V0cHV0RGlydHkoQXVkaW9Ob2RlT3V0cHV0KiBvdXRwdXQpCiB7Ci0gICAgQVNTRVJU
KGlzR3JhcGhPd25lcigpKTsgICAgCisgICAgQVNTRVJUKGlzR3JhcGhPd25lcigpKTsKICAgICBt
X2RpcnR5QXVkaW9Ob2RlT3V0cHV0cy5hZGQob3V0cHV0KTsKIH0KIApAQCAtMTA2OCw3ICsxMDc5
LDcgQEAgdm9pZCBBdWRpb0NvbnRleHQ6OnByb2Nlc3NBdXRvbWF0aWNQdWxsTm9kZXMoc2l6ZV90
IGZyYW1lc1RvUHJvY2VzcykKICAgICAgICAgbm9kZS0+cHJvY2Vzc0lmTmVjZXNzYXJ5KGZyYW1l
c1RvUHJvY2Vzcyk7CiB9CiAKLVNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIEF1ZGlvQ29udGV4dDo6
c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpIGNvbnN0CitTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBB
dWRpb0NvbnRleHRCYXNlOjpzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkgY29uc3QKIHsKICAgICBy
ZXR1cm4gQWN0aXZlRE9NT2JqZWN0OjpzY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7CiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQ29udGV4dC5oIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0NvbnRleHQuaAppbmRleCA4ZTA5
NDM5NGNmZmNjNWRhYThiMGU0ZGM1ODkxMjE5NDQyZTZlMTJlLi41MDU5MjFmZjVlMzVkMjQ5NTMz
ODAyMDNhNDc5NWY2NGNhYzJkNWQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmF1ZGlvL0F1ZGlvQ29udGV4dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
YXVkaW8vQXVkaW9Db250ZXh0LmgKQEAgLTI4LDYgKzI4LDcgQEAKICNpbmNsdWRlICJBY3RpdmVE
T01PYmplY3QuaCIKICNpbmNsdWRlICJBc3luY0F1ZGlvRGVjb2Rlci5oIgogI2luY2x1ZGUgIkF1
ZGlvQnVzLmgiCisjaW5jbHVkZSAiQXVkaW9Db250ZXh0U3RhdGUuaCIKICNpbmNsdWRlICJBdWRp
b0Rlc3RpbmF0aW9uTm9kZS5oIgogI2luY2x1ZGUgIkV2ZW50VGFyZ2V0LmgiCiAjaW5jbHVkZSAi
TWVkaWFDYW5TdGFydExpc3RlbmVyLmgiCkBAIC03OSwyMCArODAsMTI3IEBAIGNsYXNzIFdhdmVT
aGFwZXJOb2RlOwogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBJRExUeXBlPiBjbGFzcyBET01Qcm9taXNl
RGVmZXJyZWQ7CiAKLS8vIEF1ZGlvQ29udGV4dCBpcyB0aGUgY29ybmVyc3RvbmUgb2YgdGhlIHdl
YiBhdWRpbyBBUEkgYW5kIGFsbCBBdWRpb05vZGVzIGFyZSBjcmVhdGVkIGZyb20gaXQuCi0vLyBG
b3IgdGhyZWFkIHNhZmV0eSBiZXR3ZWVuIHRoZSBhdWRpbyB0aHJlYWQgYW5kIHRoZSBtYWluIHRo
cmVhZCwgaXQgaGFzIGEgcmVuZGVyaW5nIGdyYXBoIGxvY2tpbmcgbWVjaGFuaXNtLiAKLQotY2xh
c3MgQXVkaW9Db250ZXh0CitjbGFzcyBBdWRpb0NvbnRleHRCYXNlCiAgICAgOiBwdWJsaWMgQWN0
aXZlRE9NT2JqZWN0CiAgICAgLCBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8QXVkaW9Db250
ZXh0PgogICAgICwgcHVibGljIEV2ZW50VGFyZ2V0V2l0aElubGluZURhdGEKICAgICAsIHB1Ymxp
YyBNZWRpYUNhblN0YXJ0TGlzdGVuZXIKICAgICAsIHB1YmxpYyBNZWRpYVByb2R1Y2VyCi0gICAg
LCBwcml2YXRlIFBsYXRmb3JtTWVkaWFTZXNzaW9uQ2xpZW50Ci0gICAgLCBwcml2YXRlIFZpc2li
aWxpdHlDaGFuZ2VDbGllbnQKICNpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKLSAgICAsIHByaXZh
dGUgTG9nZ2VySGVscGVyCisgICAgLCBwdWJsaWMgTG9nZ2VySGVscGVyCisjZW5kaWYKK3sKKyAg
ICBXVEZfTUFLRV9JU09fQUxMT0NBVEVEKEF1ZGlvQ29udGV4dEJhc2UpOworcHVibGljOgorICAg
IHZpcnR1YWwgfkF1ZGlvQ29udGV4dEJhc2UoKSA9IGRlZmF1bHQ7CisKKyAgICAvLyBSZWNvbmNp
bGUgcmVmL2RlcmVmIHdoaWNoIGFyZSBkZWZpbmVkIGJvdGggaW4gVGhyZWFkU2FmZVJlZkNvdW50
ZWQgYW5kIEV2ZW50VGFyZ2V0LgorICAgIHVzaW5nIFRocmVhZFNhZmVSZWZDb3VudGVkOjpyZWY7
CisgICAgdXNpbmcgVGhyZWFkU2FmZVJlZkNvdW50ZWQ6OmRlcmVmOworCisgICAgRG9jdW1lbnQq
IGRvY3VtZW50KCkgY29uc3Q7CisKKyAgICB2aXJ0dWFsIGJvb2wgaXNJbml0aWFsaXplZCgpIGNv
bnN0ID0gMDsKKworICAgIHZpcnR1YWwgc2l6ZV90IGN1cnJlbnRTYW1wbGVGcmFtZSgpIGNvbnN0
ID0gMDsKKyAgICB2aXJ0dWFsIGZsb2F0IHNhbXBsZVJhdGUoKSBjb25zdCA9IDA7CisgICAgdmly
dHVhbCBkb3VibGUgY3VycmVudFRpbWUoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBib29sIGlz
R3JhcGhPd25lcigpIGNvbnN0ID0gMDsKKworICAgIHZpcnR1YWwgdm9pZCBzZXRBdWRpb1RocmVh
ZChUaHJlYWQmKSA9IDA7CisgICAgdmlydHVhbCBib29sIGlzQXVkaW9UaHJlYWQoKSBjb25zdCA9
IDA7CisgICAgdmlydHVhbCBib29sIGlzQXVkaW9UaHJlYWRGaW5pc2hlZCgpID0gMDsKKworICAg
IHZpcnR1YWwgdm9pZCBpc1BsYXlpbmdBdWRpb0RpZENoYW5nZSgpID0gMDsKKyAgICB2aXJ0dWFs
IHZvaWQgbm9kZVdpbGxCZWdpblBsYXliYWNrKCkgPSAwOworCisgICAgdmlydHVhbCB2b2lkIHBv
c3RUYXNrKFdURjo6RnVuY3Rpb248dm9pZCgpPiYmKSA9IDA7CisgICAgdmlydHVhbCBib29sIGlz
U3RvcHBlZCgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGNvbnN0IFNlY3VyaXR5T3JpZ2luKiBv
cmlnaW4oKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCB2b2lkIGFkZENvbnNvbGVNZXNzYWdlKE1l
c3NhZ2VTb3VyY2UsIE1lc3NhZ2VMZXZlbCwgY29uc3QgU3RyaW5nJiBtZXNzYWdlKSA9IDA7CisK
KyAgICB2aXJ0dWFsIHZvaWQgbWFya0ZvckRlbGV0aW9uKEF1ZGlvTm9kZSYpID0gMDsKKyAgICB2
aXJ0dWFsIHZvaWQgZGVsZXRlTWFya2VkTm9kZXMoKSA9IDA7CisKKyAgICB2aXJ0dWFsIHZvaWQg
aGFuZGxlUHJlUmVuZGVyVGFza3MoKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGhhbmRsZVBvc3RS
ZW5kZXJUYXNrcygpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgcHJvY2Vzc0F1dG9tYXRpY1B1bGxO
b2RlcyhzaXplX3QgZnJhbWVzVG9Qcm9jZXNzKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGFkZERl
ZmVycmVkRmluaXNoRGVyZWYoQXVkaW9Ob2RlKikgPSAwOworCisgICAgdmlydHVhbCB2b2lkIHJl
bW92ZU1hcmtlZFN1bW1pbmdKdW5jdGlvbihBdWRpb1N1bW1pbmdKdW5jdGlvbiopID0gMDsKKyAg
ICB2aXJ0dWFsIHZvaWQgbWFya1N1bW1pbmdKdW5jdGlvbkRpcnR5KEF1ZGlvU3VtbWluZ0p1bmN0
aW9uKikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBtYXJrQXVkaW9Ob2RlT3V0cHV0RGlydHkoQXVk
aW9Ob2RlT3V0cHV0KikgPSAwOworCisgICAgZW51bSBCZWhhdmlvclJlc3RyaWN0aW9uRmxhZ3Mg
eworICAgICAgICBOb1Jlc3RyaWN0aW9ucyA9IDAsCisgICAgICAgIFJlcXVpcmVVc2VyR2VzdHVy
ZUZvckF1ZGlvU3RhcnRSZXN0cmljdGlvbiA9IDEgPDwgMCwKKyAgICAgICAgUmVxdWlyZVBhZ2VD
b25zZW50Rm9yQXVkaW9TdGFydFJlc3RyaWN0aW9uID0gMSA8PCAxLAorICAgIH07CisgICAgdHlw
ZWRlZiB1bnNpZ25lZCBCZWhhdmlvclJlc3RyaWN0aW9uczsKKyAgICB2aXJ0dWFsIEJlaGF2aW9y
UmVzdHJpY3Rpb25zIGJlaGF2aW9yUmVzdHJpY3Rpb25zKCkgY29uc3QgPSAwOworICAgIHZpcnR1
YWwgdm9pZCBhZGRCZWhhdmlvclJlc3RyaWN0aW9uKEJlaGF2aW9yUmVzdHJpY3Rpb25zKSA9IDA7
CisgICAgdmlydHVhbCB2b2lkIHJlbW92ZUJlaGF2aW9yUmVzdHJpY3Rpb24oQmVoYXZpb3JSZXN0
cmljdGlvbnMpID0gMDsKKworI2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRAorICAgIHZpcnR1YWwg
Y29uc3Qgdm9pZCogbmV4dEF1ZGlvTm9kZUxvZ0lkZW50aWZpZXIoKSA9IDA7CisgICAgdmlydHVh
bCBjb25zdCB2b2lkKiBuZXh0QXVkaW9QYXJhbWV0ZXJMb2dJZGVudGlmaWVyKCkgPSAwOwogI2Vu
ZGlmCisKKyAgICB2aXJ0dWFsIHZvaWQgYWRkQXV0b21hdGljUHVsbE5vZGUoQXVkaW9Ob2RlJikg
PSAwOworICAgIHZpcnR1YWwgdm9pZCByZW1vdmVBdXRvbWF0aWNQdWxsTm9kZShBdWRpb05vZGUm
KSA9IDA7CisKKyAgICB2aXJ0dWFsIHZvaWQgbm90aWZ5Tm9kZUZpbmlzaGVkUHJvY2Vzc2luZyhB
dWRpb05vZGUqKSA9IDA7CisKKyAgICB2aXJ0dWFsIHZvaWQgZmluaXNoZWRSZW5kZXJpbmcoYm9v
bCBkaWRSZW5kZXJpbmcpID0gMDsKKworICAgIHZpcnR1YWwgdm9pZCBpbmNyZW1lbnRDb25uZWN0
aW9uQ291bnQoKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGluY3JlbWVudEFjdGl2ZVNvdXJjZUNv
dW50KCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBkZWNyZW1lbnRBY3RpdmVTb3VyY2VDb3VudCgp
ID0gMDsKKworICAgIHZpcnR1YWwgYm9vbCBpc09mZmxpbmVDb250ZXh0KCkgY29uc3QgPSAwOwor
ICAgIHZpcnR1YWwgYm9vbCBpc0F1ZGlvQ29udGV4dCgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFs
IGJvb2wgaXNXZWJLaXRBdWRpb0NvbnRleHQoKSBjb25zdCA9IDA7CisKKyAgICAvLyBtdXN0UmVs
ZWFzZUxvY2sgaXMgc2V0IHRvIHRydWUgaWYgd2UgYWNxdWlyZWQgdGhlIGxvY2sgaW4gdGhpcyBt
ZXRob2QgY2FsbCBhbmQgY2FsbGVyIG11c3QgdW5sb2NrKCksIGZhbHNlIGlmIGl0IHdhcyBwcmV2
aW91c2x5IGFjcXVpcmVkLgorICAgIHZpcnR1YWwgdm9pZCBsb2NrKGJvb2wmIG11c3RSZWxlYXNl
TG9jaykgPSAwOworICAgIHZpcnR1YWwgYm9vbCB0cnlMb2NrKGJvb2wmIG11c3RSZWxlYXNlTG9j
aykgPSAwOworICAgIHZpcnR1YWwgdm9pZCB1bmxvY2soKSA9IDA7CisKKyAgICBjbGFzcyBBdXRv
TG9ja2VyIHsKKyAgICBwdWJsaWM6CisgICAgICAgIGV4cGxpY2l0IEF1dG9Mb2NrZXIoQXVkaW9D
b250ZXh0QmFzZSYgY29udGV4dCkKKyAgICAgICAgICAgIDogbV9jb250ZXh0KGNvbnRleHQpCisg
ICAgICAgIHsKKyAgICAgICAgICAgIG1fY29udGV4dC5sb2NrKG1fbXVzdFJlbGVhc2VMb2NrKTsK
KyAgICAgICAgfQorCisgICAgICAgIH5BdXRvTG9ja2VyKCkKKyAgICAgICAgeworICAgICAgICAg
ICAgaWYgKG1fbXVzdFJlbGVhc2VMb2NrKQorICAgICAgICAgICAgICAgIG1fY29udGV4dC51bmxv
Y2soKTsKKyAgICAgICAgfQorCisgICAgcHJpdmF0ZToKKyAgICAgICAgQXVkaW9Db250ZXh0QmFz
ZSYgbV9jb250ZXh0OworICAgICAgICBib29sIG1fbXVzdFJlbGVhc2VMb2NrOworICAgIH07CisK
KyAgICAvLyBFdmVudFRhcmdldAorICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQoKSBjb25zdCBmaW5hbDsKKyAgICB2b2lkIHJlZkV2ZW50VGFyZ2V0KCkg
b3ZlcnJpZGUgeyByZWYoKTsgfQorICAgIHZvaWQgZGVyZWZFdmVudFRhcmdldCgpIG92ZXJyaWRl
IHsgZGVyZWYoKTsgfQorCitwcm90ZWN0ZWQ6CisgICAgZXhwbGljaXQgQXVkaW9Db250ZXh0QmFz
ZShEb2N1bWVudCYpOworfTsKKworLy8gQXVkaW9Db250ZXh0IGlzIHRoZSBjb3JuZXJzdG9uZSBv
ZiB0aGUgd2ViIGF1ZGlvIEFQSSBhbmQgYWxsIEF1ZGlvTm9kZXMgYXJlIGNyZWF0ZWQgZnJvbSBp
dC4KKy8vIEZvciB0aHJlYWQgc2FmZXR5IGJldHdlZW4gdGhlIGF1ZGlvIHRocmVhZCBhbmQgdGhl
IG1haW4gdGhyZWFkLCBpdCBoYXMgYSByZW5kZXJpbmcgZ3JhcGggbG9ja2luZyBtZWNoYW5pc20u
IAorCitjbGFzcyBBdWRpb0NvbnRleHQKKyAgICA6IHB1YmxpYyBBdWRpb0NvbnRleHRCYXNlCisg
ICAgLCBwcml2YXRlIFBsYXRmb3JtTWVkaWFTZXNzaW9uQ2xpZW50CisgICAgLCBwcml2YXRlIFZp
c2liaWxpdHlDaGFuZ2VDbGllbnQKIHsKICAgICBXVEZfTUFLRV9JU09fQUxMT0NBVEVEKEF1ZGlv
Q29udGV4dCk7CiBwdWJsaWM6CkBAIC0xMDEsMjIgKzIwOSwyMCBAQCBwdWJsaWM6CiAKICAgICB2
aXJ0dWFsIH5BdWRpb0NvbnRleHQoKTsKIAotICAgIGJvb2wgaXNJbml0aWFsaXplZCgpIGNvbnN0
OworICAgIGJvb2wgaXNJbml0aWFsaXplZCgpIGNvbnN0IGZpbmFsOwogICAgIAotICAgIGJvb2wg
aXNPZmZsaW5lQ29udGV4dCgpIGNvbnN0IHsgcmV0dXJuIG1faXNPZmZsaW5lQ29udGV4dDsgfQot
Ci0gICAgRG9jdW1lbnQqIGRvY3VtZW50KCkgY29uc3Q7IC8vIEFTU0VSVHMgaWYgZG9jdW1lbnQg
bm8gbG9uZ2VyIGV4aXN0cy4KKyAgICBib29sIGlzT2ZmbGluZUNvbnRleHQoKSBjb25zdCBmaW5h
bCB7IHJldHVybiBtX2lzT2ZmbGluZUNvbnRleHQ7IH0KIAogICAgIERvY3VtZW50SWRlbnRpZmll
ciBob3N0aW5nRG9jdW1lbnRJZGVudGlmaWVyKCkgY29uc3QgZmluYWw7CiAKICAgICBBdWRpb0Rl
c3RpbmF0aW9uTm9kZSogZGVzdGluYXRpb24oKSB7IHJldHVybiBtX2Rlc3RpbmF0aW9uTm9kZS5n
ZXQoKTsgfQotICAgIHNpemVfdCBjdXJyZW50U2FtcGxlRnJhbWUoKSBjb25zdCB7IHJldHVybiBt
X2Rlc3RpbmF0aW9uTm9kZSA/IG1fZGVzdGluYXRpb25Ob2RlLT5jdXJyZW50U2FtcGxlRnJhbWUo
KSA6IDA7IH0KLSAgICBkb3VibGUgY3VycmVudFRpbWUoKSBjb25zdCB7IHJldHVybiBtX2Rlc3Rp
bmF0aW9uTm9kZSA/IG1fZGVzdGluYXRpb25Ob2RlLT5jdXJyZW50VGltZSgpIDogMC47IH0KLSAg
ICBmbG9hdCBzYW1wbGVSYXRlKCkgY29uc3QgeyByZXR1cm4gbV9kZXN0aW5hdGlvbk5vZGUgPyBt
X2Rlc3RpbmF0aW9uTm9kZS0+c2FtcGxlUmF0ZSgpIDogMC5mOyB9CisgICAgc2l6ZV90IGN1cnJl
bnRTYW1wbGVGcmFtZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fZGVzdGluYXRpb25Ob2RlID8g
bV9kZXN0aW5hdGlvbk5vZGUtPmN1cnJlbnRTYW1wbGVGcmFtZSgpIDogMDsgfQorICAgIGRvdWJs
ZSBjdXJyZW50VGltZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fZGVzdGluYXRpb25Ob2RlID8g
bV9kZXN0aW5hdGlvbk5vZGUtPmN1cnJlbnRUaW1lKCkgOiAwLjsgfQorICAgIGZsb2F0IHNhbXBs
ZVJhdGUoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2Rlc3RpbmF0aW9uTm9kZSA/IG1fZGVzdGlu
YXRpb25Ob2RlLT5zYW1wbGVSYXRlKCkgOiAwLmY7IH0KICAgICB1bnNpZ25lZCBsb25nIGFjdGl2
ZVNvdXJjZUNvdW50KCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8dW5zaWduZWQgbG9uZz4o
bV9hY3RpdmVTb3VyY2VDb3VudCk7IH0KIAotICAgIHZvaWQgaW5jcmVtZW50QWN0aXZlU291cmNl
Q291bnQoKTsKLSAgICB2b2lkIGRlY3JlbWVudEFjdGl2ZVNvdXJjZUNvdW50KCk7CisgICAgdm9p
ZCBpbmNyZW1lbnRBY3RpdmVTb3VyY2VDb3VudCgpIGZpbmFsOworICAgIHZvaWQgZGVjcmVtZW50
QWN0aXZlU291cmNlQ291bnQoKSBmaW5hbDsKICAgICAKICAgICBFeGNlcHRpb25PcjxSZWY8QXVk
aW9CdWZmZXI+PiBjcmVhdGVCdWZmZXIodW5zaWduZWQgbnVtYmVyT2ZDaGFubmVscywgc2l6ZV90
IG51bWJlck9mRnJhbWVzLCBmbG9hdCBzYW1wbGVSYXRlKTsKICAgICBFeGNlcHRpb25PcjxSZWY8
QXVkaW9CdWZmZXI+PiBjcmVhdGVCdWZmZXIoQXJyYXlCdWZmZXImLCBib29sIG1peFRvTW9ubyk7
CkBAIC0xMzAsNyArMjM2LDcgQEAgcHVibGljOgogICAgIHZvaWQgcmVzdW1lUmVuZGVyaW5nKERP
TVByb21pc2VEZWZlcnJlZDx2b2lkPiYmKTsKICAgICB2b2lkIGNsb3NlKERPTVByb21pc2VEZWZl
cnJlZDx2b2lkPiYmKTsKIAotICAgIGVudW0gY2xhc3MgU3RhdGUgeyBTdXNwZW5kZWQsIFJ1bm5p
bmcsIEludGVycnVwdGVkLCBDbG9zZWQgfTsKKyAgICB1c2luZyBTdGF0ZSA9IEF1ZGlvQ29udGV4
dFN0YXRlOwogICAgIFN0YXRlIHN0YXRlKCkgY29uc3Q7CiAgICAgYm9vbCBpc0Nsb3NlZCgpIGNv
bnN0IHsgcmV0dXJuIG1fc3RhdGUgPT0gU3RhdGU6OkNsb3NlZDsgfQogCkBAIC0xNjAsMzEgKzI2
NiwzMSBAQCBwdWJsaWM6CiAgICAgRXhjZXB0aW9uT3I8UmVmPFBlcmlvZGljV2F2ZT4+IGNyZWF0
ZVBlcmlvZGljV2F2ZShGbG9hdDMyQXJyYXkmIHJlYWwsIEZsb2F0MzJBcnJheSYgaW1hZ2luYXJ5
KTsKIAogICAgIC8vIFdoZW4gYSBzb3VyY2Ugbm9kZSBoYXMgbm8gbW9yZSBwcm9jZXNzaW5nIHRv
IGRvIChoYXMgZmluaXNoZWQgcGxheWluZyksIHRoZW4gaXQgdGVsbHMgdGhlIGNvbnRleHQgdG8g
ZGVyZWZlcmVuY2UgaXQuCi0gICAgdm9pZCBub3RpZnlOb2RlRmluaXNoZWRQcm9jZXNzaW5nKEF1
ZGlvTm9kZSopOworICAgIHZvaWQgbm90aWZ5Tm9kZUZpbmlzaGVkUHJvY2Vzc2luZyhBdWRpb05v
ZGUqKSBmaW5hbDsKIAogICAgIC8vIENhbGxlZCBhdCB0aGUgc3RhcnQgb2YgZWFjaCByZW5kZXIg
cXVhbnR1bS4KLSAgICB2b2lkIGhhbmRsZVByZVJlbmRlclRhc2tzKCk7CisgICAgdm9pZCBoYW5k
bGVQcmVSZW5kZXJUYXNrcygpIGZpbmFsOwogCiAgICAgLy8gQ2FsbGVkIGF0IHRoZSBlbmQgb2Yg
ZWFjaCByZW5kZXIgcXVhbnR1bS4KLSAgICB2b2lkIGhhbmRsZVBvc3RSZW5kZXJUYXNrcygpOwor
ICAgIHZvaWQgaGFuZGxlUG9zdFJlbmRlclRhc2tzKCkgZmluYWw7CiAKICAgICAvLyBDYWxsZWQg
cGVyaW9kaWNhbGx5IGF0IHRoZSBlbmQgb2YgZWFjaCByZW5kZXIgcXVhbnR1bSB0byBkZXJlZmVy
ZW5jZSBmaW5pc2hlZCBzb3VyY2Ugbm9kZXMuCiAgICAgdm9pZCBkZXJlZkZpbmlzaGVkU291cmNl
Tm9kZXMoKTsKIAogICAgIC8vIFdlIHNjaGVkdWxlIGRlbGV0aW9uIG9mIGFsbCBtYXJrZWQgbm9k
ZXMgYXQgdGhlIGVuZCBvZiBlYWNoIHJlYWx0aW1lIHJlbmRlciBxdWFudHVtLgotICAgIHZvaWQg
bWFya0ZvckRlbGV0aW9uKEF1ZGlvTm9kZSYpOwotICAgIHZvaWQgZGVsZXRlTWFya2VkTm9kZXMo
KTsKKyAgICB2b2lkIG1hcmtGb3JEZWxldGlvbihBdWRpb05vZGUmKSBmaW5hbDsKKyAgICB2b2lk
IGRlbGV0ZU1hcmtlZE5vZGVzKCkgZmluYWw7CiAKICAgICAvLyBBdWRpb0NvbnRleHQgY2FuIHB1
bGwgbm9kZShzKSBhdCB0aGUgZW5kIG9mIGVhY2ggcmVuZGVyIHF1YW50dW0gZXZlbiB3aGVuIHRo
ZXkgYXJlIG5vdCBjb25uZWN0ZWQgdG8gYW55IGRvd25zdHJlYW0gbm9kZXMuCiAgICAgLy8gVGhl
c2UgdHdvIG1ldGhvZHMgYXJlIGNhbGxlZCBieSB0aGUgbm9kZXMgd2hvIHdhbnQgdG8gYWRkL3Jl
bW92ZSB0aGVtc2VsdmVzIGludG8vZnJvbSB0aGUgYXV0b21hdGljIHB1bGwgbGlzdHMuCi0gICAg
dm9pZCBhZGRBdXRvbWF0aWNQdWxsTm9kZShBdWRpb05vZGUmKTsKLSAgICB2b2lkIHJlbW92ZUF1
dG9tYXRpY1B1bGxOb2RlKEF1ZGlvTm9kZSYpOworICAgIHZvaWQgYWRkQXV0b21hdGljUHVsbE5v
ZGUoQXVkaW9Ob2RlJikgZmluYWw7CisgICAgdm9pZCByZW1vdmVBdXRvbWF0aWNQdWxsTm9kZShB
dWRpb05vZGUmKSBmaW5hbDsKIAogICAgIC8vIENhbGxlZCByaWdodCBiZWZvcmUgaGFuZGxlUG9z
dFJlbmRlclRhc2tzKCkgdG8gaGFuZGxlIG5vZGVzIHdoaWNoIG5lZWQgdG8gYmUgcHVsbGVkIGV2
ZW4gd2hlbiB0aGV5IGFyZSBub3QgY29ubmVjdGVkIHRvIGFueXRoaW5nLgotICAgIHZvaWQgcHJv
Y2Vzc0F1dG9tYXRpY1B1bGxOb2RlcyhzaXplX3QgZnJhbWVzVG9Qcm9jZXNzKTsKKyAgICB2b2lk
IHByb2Nlc3NBdXRvbWF0aWNQdWxsTm9kZXMoc2l6ZV90IGZyYW1lc1RvUHJvY2VzcykgZmluYWw7
CiAKICAgICAvLyBLZWVwcyB0cmFjayBvZiB0aGUgbnVtYmVyIG9mIGNvbm5lY3Rpb25zIG1hZGUu
Ci0gICAgdm9pZCBpbmNyZW1lbnRDb25uZWN0aW9uQ291bnQoKQorICAgIHZvaWQgaW5jcmVtZW50
Q29ubmVjdGlvbkNvdW50KCkgZmluYWwKICAgICB7CiAgICAgICAgIEFTU0VSVChpc01haW5UaHJl
YWQoKSk7CiAgICAgICAgIG1fY29ubmVjdGlvbkNvdW50Kys7CkBAIC0xOTYsMTAzICszMDIsNzAg
QEAgcHVibGljOgogICAgIC8vIFRocmVhZCBTYWZldHkgYW5kIEdyYXBoIExvY2tpbmc6CiAgICAg
Ly8KICAgICAKLSAgICB2b2lkIHNldEF1ZGlvVGhyZWFkKFRocmVhZCYgdGhyZWFkKSB7IG1fYXVk
aW9UaHJlYWQgPSAmdGhyZWFkOyB9IC8vIEZJWE1FOiBjaGVjayBlaXRoZXIgbm90IGluaXRpYWxp
emVkIG9yIHRoZSBzYW1lCisgICAgdm9pZCBzZXRBdWRpb1RocmVhZChUaHJlYWQmIHRocmVhZCkg
ZmluYWwgeyBtX2F1ZGlvVGhyZWFkID0gJnRocmVhZDsgfSAvLyBGSVhNRTogY2hlY2sgZWl0aGVy
IG5vdCBpbml0aWFsaXplZCBvciB0aGUgc2FtZQogICAgIFRocmVhZCogYXVkaW9UaHJlYWQoKSBj
b25zdCB7IHJldHVybiBtX2F1ZGlvVGhyZWFkOyB9Ci0gICAgYm9vbCBpc0F1ZGlvVGhyZWFkKCkg
Y29uc3Q7CisgICAgYm9vbCBpc0F1ZGlvVGhyZWFkKCkgY29uc3QgZmluYWw7CiAKICAgICAvLyBS
ZXR1cm5zIHRydWUgb25seSBhZnRlciB0aGUgYXVkaW8gdGhyZWFkIGhhcyBiZWVuIHN0YXJ0ZWQg
YW5kIHRoZW4gc2h1dGRvd24uCi0gICAgYm9vbCBpc0F1ZGlvVGhyZWFkRmluaXNoZWQoKSB7IHJl
dHVybiBtX2lzQXVkaW9UaHJlYWRGaW5pc2hlZDsgfQorICAgIGJvb2wgaXNBdWRpb1RocmVhZEZp
bmlzaGVkKCkgZmluYWwgeyByZXR1cm4gbV9pc0F1ZGlvVGhyZWFkRmluaXNoZWQ7IH0KICAgICAK
ICAgICAvLyBtdXN0UmVsZWFzZUxvY2sgaXMgc2V0IHRvIHRydWUgaWYgd2UgYWNxdWlyZWQgdGhl
IGxvY2sgaW4gdGhpcyBtZXRob2QgY2FsbCBhbmQgY2FsbGVyIG11c3QgdW5sb2NrKCksIGZhbHNl
IGlmIGl0IHdhcyBwcmV2aW91c2x5IGFjcXVpcmVkLgotICAgIHZvaWQgbG9jayhib29sJiBtdXN0
UmVsZWFzZUxvY2spOworICAgIHZvaWQgbG9jayhib29sJiBtdXN0UmVsZWFzZUxvY2spIGZpbmFs
OwogCiAgICAgLy8gUmV0dXJucyB0cnVlIGlmIHdlIG93biB0aGUgbG9jay4KICAgICAvLyBtdXN0
UmVsZWFzZUxvY2sgaXMgc2V0IHRvIHRydWUgaWYgd2UgYWNxdWlyZWQgdGhlIGxvY2sgaW4gdGhp
cyBtZXRob2QgY2FsbCBhbmQgY2FsbGVyIG11c3QgdW5sb2NrKCksIGZhbHNlIGlmIGl0IHdhcyBw
cmV2aW91c2x5IGFjcXVpcmVkLgotICAgIGJvb2wgdHJ5TG9jayhib29sJiBtdXN0UmVsZWFzZUxv
Y2spOworICAgIGJvb2wgdHJ5TG9jayhib29sJiBtdXN0UmVsZWFzZUxvY2spIGZpbmFsOwogCi0g
ICAgdm9pZCB1bmxvY2soKTsKKyAgICB2b2lkIHVubG9jaygpIGZpbmFsOwogCiAgICAgLy8gUmV0
dXJucyB0cnVlIGlmIHRoaXMgdGhyZWFkIG93bnMgdGhlIGNvbnRleHQncyBsb2NrLgotICAgIGJv
b2wgaXNHcmFwaE93bmVyKCkgY29uc3Q7CisgICAgYm9vbCBpc0dyYXBoT3duZXIoKSBjb25zdCBm
aW5hbDsKIAogICAgIC8vIFJldHVybnMgdGhlIG1heGltdW0gbnVtYmVyIG9mIGNoYW5uZWxzIHdl
IGNhbiBzdXBwb3J0LgogICAgIHN0YXRpYyB1bnNpZ25lZCBtYXhOdW1iZXJPZkNoYW5uZWxzKCkg
eyByZXR1cm4gTWF4TnVtYmVyT2ZDaGFubmVsczsgfQotCi0gICAgY2xhc3MgQXV0b0xvY2tlciB7
Ci0gICAgcHVibGljOgotICAgICAgICBleHBsaWNpdCBBdXRvTG9ja2VyKEF1ZGlvQ29udGV4dCYg
Y29udGV4dCkKLSAgICAgICAgICAgIDogbV9jb250ZXh0KGNvbnRleHQpCi0gICAgICAgIHsKLSAg
ICAgICAgICAgIG1fY29udGV4dC5sb2NrKG1fbXVzdFJlbGVhc2VMb2NrKTsKLSAgICAgICAgfQot
ICAgICAgICAKLSAgICAgICAgfkF1dG9Mb2NrZXIoKQotICAgICAgICB7Ci0gICAgICAgICAgICBp
ZiAobV9tdXN0UmVsZWFzZUxvY2spCi0gICAgICAgICAgICAgICAgbV9jb250ZXh0LnVubG9jaygp
OwotICAgICAgICB9Ci0KLSAgICBwcml2YXRlOgotICAgICAgICBBdWRpb0NvbnRleHQmIG1fY29u
dGV4dDsKLSAgICAgICAgYm9vbCBtX211c3RSZWxlYXNlTG9jazsKLSAgICB9OwogICAgIAogICAg
IC8vIEluIEF1ZGlvTm9kZTo6ZGVyZWYoKSBhIHRyeUxvY2soKSBpcyB1c2VkIGZvciBjYWxsaW5n
IGZpbmlzaERlcmVmKCksIGJ1dCBpZiBpdCBmYWlscyBrZWVwIHRyYWNrIGhlcmUuCi0gICAgdm9p
ZCBhZGREZWZlcnJlZEZpbmlzaERlcmVmKEF1ZGlvTm9kZSopOworICAgIHZvaWQgYWRkRGVmZXJy
ZWRGaW5pc2hEZXJlZihBdWRpb05vZGUqKSBmaW5hbDsKIAogICAgIC8vIEluIHRoZSBhdWRpbyB0
aHJlYWQgYXQgdGhlIHN0YXJ0IG9mIGVhY2ggcmVuZGVyIGN5Y2xlLCB3ZSdsbCBjYWxsIGhhbmRs
ZURlZmVycmVkRmluaXNoRGVyZWZzKCkuCiAgICAgdm9pZCBoYW5kbGVEZWZlcnJlZEZpbmlzaERl
cmVmcygpOwogCiAgICAgLy8gT25seSBhY2Nlc3NlZCB3aGVuIHRoZSBncmFwaCBsb2NrIGlzIGhl
bGQuCi0gICAgdm9pZCBtYXJrU3VtbWluZ0p1bmN0aW9uRGlydHkoQXVkaW9TdW1taW5nSnVuY3Rp
b24qKTsKLSAgICB2b2lkIG1hcmtBdWRpb05vZGVPdXRwdXREaXJ0eShBdWRpb05vZGVPdXRwdXQq
KTsKKyAgICB2b2lkIG1hcmtTdW1taW5nSnVuY3Rpb25EaXJ0eShBdWRpb1N1bW1pbmdKdW5jdGlv
biopIGZpbmFsOworICAgIHZvaWQgbWFya0F1ZGlvTm9kZU91dHB1dERpcnR5KEF1ZGlvTm9kZU91
dHB1dCopIGZpbmFsOwogCiAgICAgLy8gTXVzdCBiZSBjYWxsZWQgb24gbWFpbiB0aHJlYWQuCi0g
ICAgdm9pZCByZW1vdmVNYXJrZWRTdW1taW5nSnVuY3Rpb24oQXVkaW9TdW1taW5nSnVuY3Rpb24q
KTsKKyAgICB2b2lkIHJlbW92ZU1hcmtlZFN1bW1pbmdKdW5jdGlvbihBdWRpb1N1bW1pbmdKdW5j
dGlvbiopIGZpbmFsOwogCiAgICAgLy8gRXZlbnRUYXJnZXQKLSAgICBFdmVudFRhcmdldEludGVy
ZmFjZSBldmVudFRhcmdldEludGVyZmFjZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIEF1ZGlvQ29u
dGV4dEV2ZW50VGFyZ2V0SW50ZXJmYWNlVHlwZTsgfQotCi0gICAgLy8gUmVjb25jaWxlIHJlZi9k
ZXJlZiB3aGljaCBhcmUgZGVmaW5lZCBib3RoIGluIFRocmVhZFNhZmVSZWZDb3VudGVkIGFuZCBF
dmVudFRhcmdldC4KLSAgICB1c2luZyBUaHJlYWRTYWZlUmVmQ291bnRlZDo6cmVmOwotICAgIHVz
aW5nIFRocmVhZFNhZmVSZWZDb3VudGVkOjpkZXJlZjsKKyAgICBFdmVudFRhcmdldEludGVyZmFj
ZSBldmVudFRhcmdldEludGVyZmFjZSgpIGNvbnN0IGZpbmFsOwogCiAgICAgdm9pZCBzdGFydFJl
bmRlcmluZygpOwotICAgIHZvaWQgZmluaXNoZWRSZW5kZXJpbmcoYm9vbCBkaWRSZW5kZXJpbmcp
OworICAgIHZvaWQgZmluaXNoZWRSZW5kZXJpbmcoYm9vbCBkaWRSZW5kZXJpbmcpIGZpbmFsOwog
CiAgICAgc3RhdGljIHVuc2lnbmVkIHNfaGFyZHdhcmVDb250ZXh0Q291bnQ7CiAKICAgICAvLyBS
ZXN0cmljdGlvbnMgdG8gY2hhbmdlIGRlZmF1bHQgYmVoYXZpb3JzLgotICAgIGVudW0gQmVoYXZp
b3JSZXN0cmljdGlvbkZsYWdzIHsKLSAgICAgICAgTm9SZXN0cmljdGlvbnMgPSAwLAotICAgICAg
ICBSZXF1aXJlVXNlckdlc3R1cmVGb3JBdWRpb1N0YXJ0UmVzdHJpY3Rpb24gPSAxIDw8IDAsCi0g
ICAgICAgIFJlcXVpcmVQYWdlQ29uc2VudEZvckF1ZGlvU3RhcnRSZXN0cmljdGlvbiA9IDEgPDwg
MSwKLSAgICB9OwotICAgIHR5cGVkZWYgdW5zaWduZWQgQmVoYXZpb3JSZXN0cmljdGlvbnM7Ci0K
LSAgICBCZWhhdmlvclJlc3RyaWN0aW9ucyBiZWhhdmlvclJlc3RyaWN0aW9ucygpIGNvbnN0IHsg
cmV0dXJuIG1fcmVzdHJpY3Rpb25zOyB9Ci0gICAgdm9pZCBhZGRCZWhhdmlvclJlc3RyaWN0aW9u
KEJlaGF2aW9yUmVzdHJpY3Rpb25zIHJlc3RyaWN0aW9uKSB7IG1fcmVzdHJpY3Rpb25zIHw9IHJl
c3RyaWN0aW9uOyB9Ci0gICAgdm9pZCByZW1vdmVCZWhhdmlvclJlc3RyaWN0aW9uKEJlaGF2aW9y
UmVzdHJpY3Rpb25zIHJlc3RyaWN0aW9uKSB7IG1fcmVzdHJpY3Rpb25zICY9IH5yZXN0cmljdGlv
bjsgfQorICAgIEJlaGF2aW9yUmVzdHJpY3Rpb25zIGJlaGF2aW9yUmVzdHJpY3Rpb25zKCkgY29u
c3QgZmluYWwgeyByZXR1cm4gbV9yZXN0cmljdGlvbnM7IH0KKyAgICB2b2lkIGFkZEJlaGF2aW9y
UmVzdHJpY3Rpb24oQmVoYXZpb3JSZXN0cmljdGlvbnMgcmVzdHJpY3Rpb24pIGZpbmFsIHsgbV9y
ZXN0cmljdGlvbnMgfD0gcmVzdHJpY3Rpb247IH0KKyAgICB2b2lkIHJlbW92ZUJlaGF2aW9yUmVz
dHJpY3Rpb24oQmVoYXZpb3JSZXN0cmljdGlvbnMgcmVzdHJpY3Rpb24pIGZpbmFsIHsgbV9yZXN0
cmljdGlvbnMgJj0gfnJlc3RyaWN0aW9uOyB9CiAKLSAgICB2b2lkIGlzUGxheWluZ0F1ZGlvRGlk
Q2hhbmdlKCk7CisgICAgdm9pZCBpc1BsYXlpbmdBdWRpb0RpZENoYW5nZSgpIGZpbmFsOwogCi0g
ICAgdm9pZCBub2RlV2lsbEJlZ2luUGxheWJhY2soKTsKKyAgICB2b2lkIG5vZGVXaWxsQmVnaW5Q
bGF5YmFjaygpIGZpbmFsOwogCiAjaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECiAgICAgY29uc3Qg
TG9nZ2VyJiBsb2dnZXIoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2xvZ2dlci5nZXQoKTsgfQog
ICAgIGNvbnN0IHZvaWQqIGxvZ0lkZW50aWZpZXIoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2xv
Z0lkZW50aWZpZXI7IH0KICAgICBXVEZMb2dDaGFubmVsJiBsb2dDaGFubmVsKCkgY29uc3QgZmlu
YWw7Ci0gICAgY29uc3Qgdm9pZCogbmV4dEF1ZGlvTm9kZUxvZ0lkZW50aWZpZXIoKSB7IHJldHVy
biBjaGlsZExvZ0lkZW50aWZpZXIobV9sb2dJZGVudGlmaWVyLCArK21fbmV4dEF1ZGlvTm9kZUlk
ZW50aWZpZXIpOyB9Ci0gICAgY29uc3Qgdm9pZCogbmV4dEF1ZGlvUGFyYW1ldGVyTG9nSWRlbnRp
ZmllcigpIHsgcmV0dXJuIGNoaWxkTG9nSWRlbnRpZmllcihtX2xvZ0lkZW50aWZpZXIsICsrbV9u
ZXh0QXVkaW9QYXJhbWV0ZXJJZGVudGlmaWVyKTsgfQorICAgIGNvbnN0IHZvaWQqIG5leHRBdWRp
b05vZGVMb2dJZGVudGlmaWVyKCkgZmluYWwgeyByZXR1cm4gY2hpbGRMb2dJZGVudGlmaWVyKG1f
bG9nSWRlbnRpZmllciwgKyttX25leHRBdWRpb05vZGVJZGVudGlmaWVyKTsgfQorICAgIGNvbnN0
IHZvaWQqIG5leHRBdWRpb1BhcmFtZXRlckxvZ0lkZW50aWZpZXIoKSBmaW5hbCB7IHJldHVybiBj
aGlsZExvZ0lkZW50aWZpZXIobV9sb2dJZGVudGlmaWVyLCArK21fbmV4dEF1ZGlvUGFyYW1ldGVy
SWRlbnRpZmllcik7IH0KICNlbmRpZgogCi0gICAgdm9pZCBwb3N0VGFzayhXVEY6OkZ1bmN0aW9u
PHZvaWQoKT4mJik7Ci0gICAgYm9vbCBpc1N0b3BwZWQoKSBjb25zdCB7IHJldHVybiBtX2lzU3Rv
cFNjaGVkdWxlZDsgfQotICAgIGNvbnN0IFNlY3VyaXR5T3JpZ2luKiBvcmlnaW4oKSBjb25zdDsK
LSAgICB2b2lkIGFkZENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VTb3VyY2UsIE1lc3NhZ2VMZXZlbCwg
Y29uc3QgU3RyaW5nJiBtZXNzYWdlKTsKLQotICAgIC8vIEV2ZW50VGFyZ2V0Ci0gICAgU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpIGNvbnN0IGZpbmFsOwor
ICAgIHZvaWQgcG9zdFRhc2soV1RGOjpGdW5jdGlvbjx2b2lkKCk+JiYpIGZpbmFsOworICAgIGJv
b2wgaXNTdG9wcGVkKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9pc1N0b3BTY2hlZHVsZWQ7IH0K
KyAgICBjb25zdCBTZWN1cml0eU9yaWdpbiogb3JpZ2luKCkgY29uc3QgZmluYWw7CisgICAgdm9p
ZCBhZGRDb25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNlLCBNZXNzYWdlTGV2ZWwsIGNvbnN0IFN0
cmluZyYgbWVzc2FnZSkgZmluYWw7CiAKIHByb3RlY3RlZDoKICAgICBleHBsaWNpdCBBdWRpb0Nv
bnRleHQoRG9jdW1lbnQmKTsKQEAgLTM2MCw5ICs0MzMsOCBAQCBwcml2YXRlOgogCiAgICAgdm9p
ZCB2aXNpYmlsaXR5U3RhdGVDaGFuZ2VkKCkgZmluYWw7CiAKLSAgICAvLyBFdmVudFRhcmdldAot
ICAgIHZvaWQgcmVmRXZlbnRUYXJnZXQoKSBvdmVycmlkZSB7IHJlZigpOyB9Ci0gICAgdm9pZCBk
ZXJlZkV2ZW50VGFyZ2V0KCkgb3ZlcnJpZGUgeyBkZXJlZigpOyB9CisgICAgYm9vbCBpc0F1ZGlv
Q29udGV4dCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIHRydWU7IH0KKyAgICBib29sIGlzV2ViS2l0
QXVkaW9Db250ZXh0KCkgY29uc3QgZmluYWwgeyByZXR1cm4gZmFsc2U7IH0KIAogICAgIHZvaWQg
aGFuZGxlRGlydHlBdWRpb1N1bW1pbmdKdW5jdGlvbnMoKTsKICAgICB2b2lkIGhhbmRsZURpcnR5
QXVkaW9Ob2RlT3V0cHV0cygpOwpAQCAtNDQ2LDIxICs1MTgsMTMgQEAgcHJpdmF0ZToKICAgICBS
ZWZQdHI8UGVuZGluZ0FjdGl2aXR5PEF1ZGlvQ29udGV4dD4+IG1fcGVuZGluZ0FjdGl2aXR5Owog
fTsKIAotLy8gRklYTUU6IEZpbmQgb3V0IHdoeSB0aGVzZSA9PS8hPSBmdW5jdGlvbnMgYXJlIG5l
ZWRlZCBhbmQgcmVtb3ZlIHRoZW0gaWYgcG9zc2libGUuCi0KLWlubGluZSBib29sIG9wZXJhdG9y
PT0oY29uc3QgQXVkaW9Db250ZXh0JiBsaHMsIGNvbnN0IEF1ZGlvQ29udGV4dCYgcmhzKQotewot
ICAgIHJldHVybiAmbGhzID09ICZyaHM7Ci19Ci0KLWlubGluZSBib29sIG9wZXJhdG9yIT0oY29u
c3QgQXVkaW9Db250ZXh0JiBsaHMsIGNvbnN0IEF1ZGlvQ29udGV4dCYgcmhzKQotewotICAgIHJl
dHVybiAmbGhzICE9ICZyaHM7Ci19Ci0KIGlubGluZSBBdWRpb0NvbnRleHQ6OlN0YXRlIEF1ZGlv
Q29udGV4dDo6c3RhdGUoKSBjb25zdAogewogICAgIHJldHVybiBtX3N0YXRlOwogfQogCiB9IC8v
IFdlYkNvcmUKKworU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19CRUdJTihXZWJDb3JlOjpBdWRpb0Nv
bnRleHQpCisgICAgc3RhdGljIGJvb2wgaXNUeXBlKGNvbnN0IFdlYkNvcmU6OkF1ZGlvQ29udGV4
dEJhc2UmIGNvbnRleHQpIHsgcmV0dXJuIGNvbnRleHQuaXNBdWRpb0NvbnRleHQoKTsgfQorU1BF
Q0lBTElaRV9UWVBFX1RSQUlUU19FTkQoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJhdWRpby9BdWRpb0NvbnRleHQuaWRsIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJhdWRpby9BdWRpb0NvbnRleHQuaWRsCmluZGV4IGU3MTE4MzliMzMzMDBkZTM0MWMyMzFjNGNj
OTZlOWU1NzYzMjQxMzUuLmYxZDQ5Y2EzNjhkNjQ1MDZhYmFiNTY5NzkwOWVlMDk3MjFiNWQ4Y2Yg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0
LmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQ29udGV4dC5p
ZGwKQEAgLTIzLDE5ICsyMywxMSBAQAogICogU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotZW51bSBBdWRpb0NvbnRleHRT
dGF0ZSB7Ci0gICAgInN1c3BlbmRlZCIsCi0gICAgInJ1bm5pbmciLAotICAgICJpbnRlcnJ1cHRl
ZCIsCi0gICAgImNsb3NlZCIKLX07Ci0KIFsKICAgICBBY3RpdmVET01PYmplY3QsCiAgICAgQ29u
ZGl0aW9uYWw9V0VCX0FVRElPLAotICAgIEVuYWJsZWRCeVNldHRpbmc9V2ViQXVkaW8sCisgICAg
RW5hYmxlZEJ5U2V0dGluZz1Nb2Rlcm5VbnByZWZpeGVkV2ViQXVkaW8sCiAgICAgRXhwb3J0TWFj
cm89V0VCQ09SRV9FWFBPUlQsCi0gICAgSW50ZXJmYWNlTmFtZT13ZWJraXRBdWRpb0NvbnRleHQs
CiBdIGludGVyZmFjZSBBdWRpb0NvbnRleHQgOiBFdmVudFRhcmdldCB7CiAgICAgW0NhbGxXaXRo
PURvY3VtZW50LCBNYXlUaHJvd0V4Y2VwdGlvbl0gY29uc3RydWN0b3IoKTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0NvbnRleHRTdGF0ZS5oIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0NvbnRleHRTdGF0ZS5oCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjE2MDEzMTEwOGZhNmE0YzE0YTlhZDYxN2I5MmNhMjE0NzQ0ODc4MGIKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQ29udGV4dFN0
YXRlLmgKQEAgLTAsMCArMSwzMiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE2LTIwMjAgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04KKyAqIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisg
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUworICogU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKK25h
bWVzcGFjZSBXZWJDb3JlIHsKKworZW51bSBjbGFzcyBBdWRpb0NvbnRleHRTdGF0ZSB7IFN1c3Bl
bmRlZCwgUnVubmluZywgSW50ZXJydXB0ZWQsIENsb3NlZCB9OworCit9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQ29udGV4dFN0YXRlLmlkbCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0U3RhdGUuaWRsCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLmM4ZDA4YmQyYjU2M2NkODI2ZWNjYTdmOTc5NDRjNzEzYThhN2VmNGIKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQ29udGV4dFN0
YXRlLmlkbApAQCAtMCwwICsxLDMxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwLCBHb29n
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDExIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OCisgKiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMKKyAqIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKK2VudW0gQXVkaW9Db250ZXh0U3Rh
dGUgeworICAgICJzdXNwZW5kZWQiLAorICAgICJydW5uaW5nIiwKKyAgICAiaW50ZXJydXB0ZWQi
LAorICAgICJjbG9zZWQiCit9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJhdWRpby9BdWRpb0Rlc3RpbmF0aW9uTm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmF1ZGlvL0F1ZGlvRGVzdGluYXRpb25Ob2RlLmNwcAppbmRleCBkOWFiYjk3NzdhOWQyNWVl
YWYyNDJmZjRmZmZjNWVjNWVmNDg2YzRlLi42Nzc2MTdlY2IzMzhkYTg5MWE3MTNhZTg4YTNmNWY2
NGY2ZmQ4NDlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1
ZGlvRGVzdGluYXRpb25Ob2RlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1
ZGlvL0F1ZGlvRGVzdGluYXRpb25Ob2RlLmNwcApAQCAtMzksNyArMzksNyBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAgICAgCiBXVEZfTUFLRV9JU09fQUxMT0NBVEVEX0lNUEwoQXVkaW9EZXN0aW5h
dGlvbk5vZGUpOwogCi1BdWRpb0Rlc3RpbmF0aW9uTm9kZTo6QXVkaW9EZXN0aW5hdGlvbk5vZGUo
QXVkaW9Db250ZXh0JiBjb250ZXh0LCBmbG9hdCBzYW1wbGVSYXRlKQorQXVkaW9EZXN0aW5hdGlv
bk5vZGU6OkF1ZGlvRGVzdGluYXRpb25Ob2RlKEF1ZGlvQ29udGV4dEJhc2UmIGNvbnRleHQsIGZs
b2F0IHNhbXBsZVJhdGUpCiAgICAgOiBBdWRpb05vZGUoY29udGV4dCwgc2FtcGxlUmF0ZSkKICAg
ICAsIG1fY3VycmVudFNhbXBsZUZyYW1lKDApCiAgICAgLCBtX2lzU2lsZW50KHRydWUpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvRGVzdGluYXRpb25O
b2RlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvRGVzdGluYXRpb25O
b2RlLmgKaW5kZXggODk0OGY0ZWU3MGE1YzBlODFhOGU4M2MxZjBjZDVmY2Y0NTFhY2M2MC4uMzc2
ZjQ2MjcxMmQ3ZjFjMmFlOGQ1MjAxMWZhMmExNWY2ZTE4YWVjNyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0Rlc3RpbmF0aW9uTm9kZS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9EZXN0aW5hdGlvbk5vZGUuaApAQCAt
MzYsNyArMzYsNyBAQCBjbGFzcyBBdWRpb0NvbnRleHQ7CiBjbGFzcyBBdWRpb0Rlc3RpbmF0aW9u
Tm9kZSA6IHB1YmxpYyBBdWRpb05vZGUsIHB1YmxpYyBBdWRpb0lPQ2FsbGJhY2sgewogICAgIFdU
Rl9NQUtFX0lTT19BTExPQ0FURUQoQXVkaW9EZXN0aW5hdGlvbk5vZGUpOwogcHVibGljOgotICAg
IEF1ZGlvRGVzdGluYXRpb25Ob2RlKEF1ZGlvQ29udGV4dCYsIGZsb2F0IHNhbXBsZVJhdGUpOwor
ICAgIEF1ZGlvRGVzdGluYXRpb25Ob2RlKEF1ZGlvQ29udGV4dEJhc2UmLCBmbG9hdCBzYW1wbGVS
YXRlKTsKICAgICB2aXJ0dWFsIH5BdWRpb0Rlc3RpbmF0aW9uTm9kZSgpOwogICAgIAogICAgIC8v
IEF1ZGlvTm9kZSAgIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRp
by9BdWRpb05vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb05v
ZGUuY3BwCmluZGV4IDc2NWVjZTMzMmY2MzY5YzQxOThmZTU3ZGQzYWU3Y2M1MTkzYjJhY2EuLmU1
NTQzNzc5ZDUxYTUwOGNlNjFhNmEwODMxMTJlOGQyZDBhODdkMGQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Ob2RlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvTm9kZS5jcHAKQEAgLTMzLDYgKzMzLDcgQEAKICNp
bmNsdWRlICJBdWRpb05vZGVPdXRwdXQuaCIKICNpbmNsdWRlICJBdWRpb1BhcmFtLmgiCiAjaW5j
bHVkZSAiTG9nZ2luZy5oIgorI2luY2x1ZGUgIldlYktpdEF1ZGlvQ29udGV4dC5oIgogI2luY2x1
ZGUgPHd0Zi9BdG9taWNzLmg+CiAjaW5jbHVkZSA8d3RmL0lzb01hbGxvY0lubGluZXMuaD4KICNp
bmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgpAQCAtOTUsNyArOTYsNyBAQCBTdHJpbmcgY29udmVy
dEVudW1lcmF0aW9uVG9TdHJpbmcoQXVkaW9Ob2RlOjpOb2RlVHlwZSBlbnVtZXJhdGlvblZhbHVl
KQogICAgIHJldHVybiB2YWx1ZXNbc3RhdGljX2Nhc3Q8c2l6ZV90PihlbnVtZXJhdGlvblZhbHVl
KV07CiB9CiAKLUF1ZGlvTm9kZTo6QXVkaW9Ob2RlKEF1ZGlvQ29udGV4dCYgY29udGV4dCwgZmxv
YXQgc2FtcGxlUmF0ZSkKK0F1ZGlvTm9kZTo6QXVkaW9Ob2RlKEF1ZGlvQ29udGV4dEJhc2UmIGNv
bnRleHQsIGZsb2F0IHNhbXBsZVJhdGUpCiAgICAgOiBtX2lzSW5pdGlhbGl6ZWQoZmFsc2UpCiAg
ICAgLCBtX25vZGVUeXBlKE5vZGVUeXBlVW5rbm93bikKICAgICAsIG1fY29udGV4dChjb250ZXh0
KQpAQCAtMTk0LDcgKzE5NSw3IEBAIEF1ZGlvTm9kZU91dHB1dCogQXVkaW9Ob2RlOjpvdXRwdXQo
dW5zaWduZWQgaSkKIEV4Y2VwdGlvbk9yPHZvaWQ+IEF1ZGlvTm9kZTo6Y29ubmVjdChBdWRpb05v
ZGUmIGRlc3RpbmF0aW9uLCB1bnNpZ25lZCBvdXRwdXRJbmRleCwgdW5zaWduZWQgaW5wdXRJbmRl
eCkKIHsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwotICAgIEF1ZGlvQ29udGV4dDo6QXV0
b0xvY2tlciBsb2NrZXIoY29udGV4dCgpKTsKKyAgICBBdWRpb0NvbnRleHRCYXNlOjpBdXRvTG9j
a2VyIGxvY2tlcihjb250ZXh0KCkpOwogCiAgICAgQUxXQVlTX0xPRyhMT0dJREVOVElGSUVSLCBk
ZXN0aW5hdGlvbi5ub2RlVHlwZSgpLCAiLCBvdXRwdXQgPSAiLCBvdXRwdXRJbmRleCwgIiwgaW5w
dXQgPSAiLCBpbnB1dEluZGV4KTsKICAgICAKQEAgLTIwNSw3ICsyMDYsNyBAQCBFeGNlcHRpb25P
cjx2b2lkPiBBdWRpb05vZGU6OmNvbm5lY3QoQXVkaW9Ob2RlJiBkZXN0aW5hdGlvbiwgdW5zaWdu
ZWQgb3V0cHV0SW5kZQogICAgIGlmIChpbnB1dEluZGV4ID49IGRlc3RpbmF0aW9uLm51bWJlck9m
SW5wdXRzKCkpCiAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBJbmRleFNpemVFcnJvciB9Owog
Ci0gICAgaWYgKGNvbnRleHQoKSAhPSBkZXN0aW5hdGlvbi5jb250ZXh0KCkpCisgICAgaWYgKCZj
b250ZXh0KCkgIT0gJmRlc3RpbmF0aW9uLmNvbnRleHQoKSkKICAgICAgICAgcmV0dXJuIEV4Y2Vw
dGlvbiB7IFN5bnRheEVycm9yIH07CiAKICAgICBhdXRvKiBpbnB1dCA9IGRlc3RpbmF0aW9uLmlu
cHV0KGlucHV0SW5kZXgpOwpAQCAtMjIwLDcgKzIyMSw3IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IEF1
ZGlvTm9kZTo6Y29ubmVjdChBdWRpb05vZGUmIGRlc3RpbmF0aW9uLCB1bnNpZ25lZCBvdXRwdXRJ
bmRlCiAKIEV4Y2VwdGlvbk9yPHZvaWQ+IEF1ZGlvTm9kZTo6Y29ubmVjdChBdWRpb1BhcmFtJiBw
YXJhbSwgdW5zaWduZWQgb3V0cHV0SW5kZXgpCiB7Ci0gICAgQXVkaW9Db250ZXh0OjpBdXRvTG9j
a2VyIGxvY2tlcihjb250ZXh0KCkpOworICAgIEF1ZGlvQ29udGV4dEJhc2U6OkF1dG9Mb2NrZXIg
bG9ja2VyKGNvbnRleHQoKSk7CiAKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogCkBAIC0y
MjksNyArMjMwLDcgQEAgRXhjZXB0aW9uT3I8dm9pZD4gQXVkaW9Ob2RlOjpjb25uZWN0KEF1ZGlv
UGFyYW0mIHBhcmFtLCB1bnNpZ25lZCBvdXRwdXRJbmRleCkKICAgICBpZiAob3V0cHV0SW5kZXgg
Pj0gbnVtYmVyT2ZPdXRwdXRzKCkpCiAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBJbmRleFNp
emVFcnJvciB9OwogCi0gICAgaWYgKGNvbnRleHQoKSAhPSBwYXJhbS5jb250ZXh0KCkpCisgICAg
aWYgKCZjb250ZXh0KCkgIT0gJnBhcmFtLmNvbnRleHQoKSkKICAgICAgICAgcmV0dXJuIEV4Y2Vw
dGlvbiB7IFN5bnRheEVycm9yIH07CiAKICAgICBhdXRvKiBvdXRwdXQgPSB0aGlzLT5vdXRwdXQo
b3V0cHV0SW5kZXgpOwpAQCAtMjQxLDcgKzI0Miw3IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IEF1ZGlv
Tm9kZTo6Y29ubmVjdChBdWRpb1BhcmFtJiBwYXJhbSwgdW5zaWduZWQgb3V0cHV0SW5kZXgpCiBF
eGNlcHRpb25Pcjx2b2lkPiBBdWRpb05vZGU6OmRpc2Nvbm5lY3QodW5zaWduZWQgb3V0cHV0SW5k
ZXgpCiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKLSAgICBBdWRpb0NvbnRleHQ6OkF1
dG9Mb2NrZXIgbG9ja2VyKGNvbnRleHQoKSk7CisgICAgQXVkaW9Db250ZXh0QmFzZTo6QXV0b0xv
Y2tlciBsb2NrZXIoY29udGV4dCgpKTsKIAogICAgIC8vIFNhbml0eSBjaGVjayBpbnB1dCBhbmQg
b3V0cHV0IGluZGljZXMuCiAgICAgaWYgKG91dHB1dEluZGV4ID49IG51bWJlck9mT3V0cHV0cygp
KQpAQCAtMjYzLDcgKzI2NCw3IEBAIHVuc2lnbmVkIEF1ZGlvTm9kZTo6Y2hhbm5lbENvdW50KCkK
IEV4Y2VwdGlvbk9yPHZvaWQ+IEF1ZGlvTm9kZTo6c2V0Q2hhbm5lbENvdW50KHVuc2lnbmVkIGNo
YW5uZWxDb3VudCkKIHsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwotICAgIEF1ZGlvQ29u
dGV4dDo6QXV0b0xvY2tlciBsb2NrZXIoY29udGV4dCgpKTsKKyAgICBBdWRpb0NvbnRleHRCYXNl
OjpBdXRvTG9ja2VyIGxvY2tlcihjb250ZXh0KCkpOwogCiAgICAgQUxXQVlTX0xPRyhMT0dJREVO
VElGSUVSLCBjaGFubmVsQ291bnQpOwogICAgIApAQCAtMjk2LDcgKzI5Nyw3IEBAIFN0cmluZyBB
dWRpb05vZGU6OmNoYW5uZWxDb3VudE1vZGUoKQogRXhjZXB0aW9uT3I8dm9pZD4gQXVkaW9Ob2Rl
OjpzZXRDaGFubmVsQ291bnRNb2RlKGNvbnN0IFN0cmluZyYgbW9kZSkKIHsKICAgICBBU1NFUlQo
aXNNYWluVGhyZWFkKCkpOwotICAgIEF1ZGlvQ29udGV4dDo6QXV0b0xvY2tlciBsb2NrZXIoY29u
dGV4dCgpKTsKKyAgICBBdWRpb0NvbnRleHRCYXNlOjpBdXRvTG9ja2VyIGxvY2tlcihjb250ZXh0
KCkpOwogCiAgICAgQUxXQVlTX0xPRyhMT0dJREVOVElGSUVSLCBtb2RlKTsKICAgICAKQEAgLTMz
Miw3ICszMzMsNyBAQCBTdHJpbmcgQXVkaW9Ob2RlOjpjaGFubmVsSW50ZXJwcmV0YXRpb24oKQog
RXhjZXB0aW9uT3I8dm9pZD4gQXVkaW9Ob2RlOjpzZXRDaGFubmVsSW50ZXJwcmV0YXRpb24oY29u
c3QgU3RyaW5nJiBpbnRlcnByZXRhdGlvbikKIHsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkp
OwotICAgIEF1ZGlvQ29udGV4dDo6QXV0b0xvY2tlciBsb2NrZXIoY29udGV4dCgpKTsKKyAgICBB
dWRpb0NvbnRleHRCYXNlOjpBdXRvTG9ja2VyIGxvY2tlcihjb250ZXh0KCkpOwogCiAgICAgQUxX
QVlTX0xPRyhMT0dJREVOVElGSUVSLCBpbnRlcnByZXRhdGlvbik7CiAgICAgCkBAIC00MzcsNyAr
NDM4LDcgQEAgdm9pZCBBdWRpb05vZGU6OmVuYWJsZU91dHB1dHNJZk5lY2Vzc2FyeSgpCiB7CiAg
ICAgaWYgKG1faXNEaXNhYmxlZCAmJiBtX2Nvbm5lY3Rpb25SZWZDb3VudCA+IDApIHsKICAgICAg
ICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKLSAgICAgICAgQXVkaW9Db250ZXh0OjpBdXRvTG9j
a2VyIGxvY2tlcihjb250ZXh0KCkpOworICAgICAgICBBdWRpb0NvbnRleHRCYXNlOjpBdXRvTG9j
a2VyIGxvY2tlcihjb250ZXh0KCkpOwogCiAgICAgICAgIG1faXNEaXNhYmxlZCA9IGZhbHNlOwog
ICAgICAgICBmb3IgKGF1dG8mIG91dHB1dCA6IG1fb3V0cHV0cykKQEAgLTUwMSw3ICs1MDIsNyBA
QCB2b2lkIEF1ZGlvTm9kZTo6ZGVyZWYoUmVmVHlwZSByZWZUeXBlKQogICAgIC8vIEluIHRoZSBj
YXNlIG9mIHRoZSBhdWRpbyB0aHJlYWQsIHdlIG11c3QgdXNlIGEgdHJ5TG9jayB0byBhdm9pZCBn
bGl0Y2hlcy4KICAgICBib29sIGhhc0xvY2sgPSBmYWxzZTsKICAgICBib29sIG11c3RSZWxlYXNl
TG9jayA9IGZhbHNlOwotICAgIAorCiAgICAgaWYgKGNvbnRleHQoKS5pc0F1ZGlvVGhyZWFkKCkp
IHsKICAgICAgICAgLy8gUmVhbC10aW1lIGF1ZGlvIHRocmVhZCBtdXN0IG5vdCBjb250ZW5kIGxv
Y2sgKHRvIGF2b2lkIGdsaXRjaGVzKS4KICAgICAgICAgaGFzTG9jayA9IGNvbnRleHQoKS50cnlM
b2NrKG11c3RSZWxlYXNlTG9jayk7CkBAIC01MzAsNiArNTMxLDEzIEBAIHZvaWQgQXVkaW9Ob2Rl
OjpkZXJlZihSZWZUeXBlIHJlZlR5cGUpCiAgICAgICAgIGNvbnRleHQoKS5kZWxldGVNYXJrZWRO
b2RlcygpOwogfQogCitWYXJpYW50PFJlZlB0cjxBdWRpb0NvbnRleHQ+LCBSZWZQdHI8V2ViS2l0
QXVkaW9Db250ZXh0Pj4gQXVkaW9Ob2RlOjpjb250ZXh0Rm9yQmluZGluZ3MoKSBjb25zdAorewor
ICAgIGlmIChtX2NvbnRleHQtPmlzV2ViS2l0QXVkaW9Db250ZXh0KCkpCisgICAgICAgIHJldHVy
biBtYWtlUmVmUHRyKHN0YXRpY19jYXN0PFdlYktpdEF1ZGlvQ29udGV4dCY+KG1fY29udGV4dC5n
ZXQoKSkpOworICAgIHJldHVybiBtYWtlUmVmUHRyKHN0YXRpY19jYXN0PEF1ZGlvQ29udGV4dCY+
KG1fY29udGV4dC5nZXQoKSkpOworfQorCiB2b2lkIEF1ZGlvTm9kZTo6ZmluaXNoRGVyZWYoUmVm
VHlwZSByZWZUeXBlKQogewogICAgIEFTU0VSVChjb250ZXh0KCkuaXNHcmFwaE93bmVyKCkpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb05vZGUuaCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Ob2RlLmgKaW5kZXggNDIxMDEw
MDZjYzdmNTRlZTc1YWRmNzA3MmVmYmU2NGJhYzU4ZDM2ZC4uYTk4ODFiZDRiOGRiNGMzYjEwZjlk
NzcxMTY1NjI2MDBjMTgwZmM5MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJhdWRpby9BdWRpb05vZGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlv
L0F1ZGlvTm9kZS5oCkBAIC0yOSwxNSArMjksMTggQEAKICNpbmNsdWRlICJFeGNlcHRpb25Pci5o
IgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8d3RmL0xvZ2dlckhlbHBlci5o
PgorI2luY2x1ZGUgPHd0Zi9WYXJpYW50Lmg+CiAKICNkZWZpbmUgREVCVUdfQVVESU9OT0RFX1JF
RkVSRU5DRVMgMAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEF1ZGlvQ29udGV4dDsK
K2NsYXNzIEF1ZGlvQ29udGV4dEJhc2U7CiBjbGFzcyBBdWRpb05vZGVJbnB1dDsKIGNsYXNzIEF1
ZGlvTm9kZU91dHB1dDsKIGNsYXNzIEF1ZGlvUGFyYW07CitjbGFzcyBXZWJLaXRBdWRpb0NvbnRl
eHQ7CiAKIC8vIEFuIEF1ZGlvTm9kZSBpcyB0aGUgYmFzaWMgYnVpbGRpbmcgYmxvY2sgZm9yIGhh
bmRsaW5nIGF1ZGlvIHdpdGhpbiBhbiBBdWRpb0NvbnRleHQuCiAvLyBJdCBtYXkgYmUgYW4gYXVk
aW8gc291cmNlLCBhbiBpbnRlcm1lZGlhdGUgcHJvY2Vzc2luZyBtb2R1bGUsIG9yIGFuIGF1ZGlv
IGRlc3RpbmF0aW9uLgpAQCAtNTYsMTEgKzU5LDEzIEBAIGNsYXNzIEF1ZGlvTm9kZQogcHVibGlj
OgogICAgIGVudW0geyBQcm9jZXNzaW5nU2l6ZUluRnJhbWVzID0gMTI4IH07CiAKLSAgICBBdWRp
b05vZGUoQXVkaW9Db250ZXh0JiwgZmxvYXQgc2FtcGxlUmF0ZSk7CisgICAgQXVkaW9Ob2RlKEF1
ZGlvQ29udGV4dEJhc2UmLCBmbG9hdCBzYW1wbGVSYXRlKTsKICAgICB2aXJ0dWFsIH5BdWRpb05v
ZGUoKTsKIAotICAgIEF1ZGlvQ29udGV4dCYgY29udGV4dCgpIHsgcmV0dXJuIG1fY29udGV4dC5n
ZXQoKTsgfQotICAgIGNvbnN0IEF1ZGlvQ29udGV4dCYgY29udGV4dCgpIGNvbnN0IHsgcmV0dXJu
IG1fY29udGV4dC5nZXQoKTsgfQorICAgIEF1ZGlvQ29udGV4dEJhc2UmIGNvbnRleHQoKSB7IHJl
dHVybiBtX2NvbnRleHQuZ2V0KCk7IH0KKyAgICBjb25zdCBBdWRpb0NvbnRleHRCYXNlJiBjb250
ZXh0KCkgY29uc3QgeyByZXR1cm4gbV9jb250ZXh0LmdldCgpOyB9CisKKyAgICBWYXJpYW50PFJl
ZlB0cjxBdWRpb0NvbnRleHQ+LCBSZWZQdHI8V2ViS2l0QXVkaW9Db250ZXh0Pj4gY29udGV4dEZv
ckJpbmRpbmdzKCkgY29uc3Q7CiAKICAgICBlbnVtIE5vZGVUeXBlIHsKICAgICAgICAgTm9kZVR5
cGVVbmtub3duLApAQCAtMjA5LDcgKzIxNCw3IEBAIHByaXZhdGU6CiAKICAgICB2b2xhdGlsZSBi
b29sIG1faXNJbml0aWFsaXplZDsKICAgICBOb2RlVHlwZSBtX25vZGVUeXBlOwotICAgIFJlZjxB
dWRpb0NvbnRleHQ+IG1fY29udGV4dDsKKyAgICBSZWY8QXVkaW9Db250ZXh0QmFzZT4gbV9jb250
ZXh0OwogICAgIGZsb2F0IG1fc2FtcGxlUmF0ZTsKICAgICBWZWN0b3I8c3RkOjp1bmlxdWVfcHRy
PEF1ZGlvTm9kZUlucHV0Pj4gbV9pbnB1dHM7CiAgICAgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxB
dWRpb05vZGVPdXRwdXQ+PiBtX291dHB1dHM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmF1ZGlvL0F1ZGlvTm9kZS5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmF1ZGlvL0F1ZGlvTm9kZS5pZGwKaW5kZXggNzBmZWM4YzgxNDUwNTk5MWUyMGFkOGMxYzkyY2Mx
MWVlZTk2ODQyZi4uNzE5MzljODMxNzE0YmZiZjM2ZGZiYWU1MmZiYzNkM2QyMDJmNjYyMSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb05vZGUuaWRsCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Ob2RlLmlkbApAQCAtMjUs
NyArMjUsNyBAQAogWwogICAgIENvbmRpdGlvbmFsPVdFQl9BVURJTywKIF0gaW50ZXJmYWNlIEF1
ZGlvTm9kZSA6IEV2ZW50VGFyZ2V0IHsKLSAgICByZWFkb25seSBhdHRyaWJ1dGUgQXVkaW9Db250
ZXh0IGNvbnRleHQ7CisgICAgW0ltcGxlbWVudGVkQXM9Y29udGV4dEZvckJpbmRpbmdzXSByZWFk
b25seSBhdHRyaWJ1dGUgKEF1ZGlvQ29udGV4dCBvciBXZWJLaXRBdWRpb0NvbnRleHQpIGNvbnRl
eHQ7CiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIHVuc2lnbmVkIGxvbmcgbnVtYmVyT2ZJbnB1dHM7
CiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIHVuc2lnbmVkIGxvbmcgbnVtYmVyT2ZPdXRwdXRzOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvTm9kZU91
dHB1dC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb05vZGVPdXRwdXQu
aAppbmRleCA1MGE5NWVlMjA1YzEyMDMwOTNjYTVmYzMwNzE3OTkxMzUzMmQ3M2E0Li5mMDg5ODM2
MzVmM2M1NTljNzk4MWYwYmE0YTVjMTIyYjE1OWMyY2I1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvTm9kZU91dHB1dC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Ob2RlT3V0cHV0LmgKQEAgLTQ3LDcgKzQ3LDcgQEAg
cHVibGljOgogCiAgICAgLy8gQ2FuIGJlIGNhbGxlZCBmcm9tIGFueSB0aHJlYWQuCiAgICAgQXVk
aW9Ob2RlKiBub2RlKCkgY29uc3QgeyByZXR1cm4gbV9ub2RlOyB9Ci0gICAgQXVkaW9Db250ZXh0
JiBjb250ZXh0KCkgeyByZXR1cm4gbV9ub2RlLT5jb250ZXh0KCk7IH0KKyAgICBBdWRpb0NvbnRl
eHRCYXNlJiBjb250ZXh0KCkgeyByZXR1cm4gbV9ub2RlLT5jb250ZXh0KCk7IH0KICAgICAKICAg
ICAvLyBDYXVzZXMgb3VyIEF1ZGlvTm9kZSB0byBwcm9jZXNzIGlmIGl0IGhhc24ndCBhbHJlYWR5
IGZvciB0aGlzIHJlbmRlciBxdWFudHVtLgogICAgIC8vIEl0IHJldHVybnMgdGhlIGJ1cyBjb250
YWluaW5nIHRoZSBwcm9jZXNzZWQgYXVkaW8gZm9yIHRoaXMgb3V0cHV0LCByZXR1cm5pbmcgaW5Q
bGFjZUJ1cyBpZiBpbi1wbGFjZSBwcm9jZXNzaW5nIHdhcyBwb3NzaWJsZS4KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9QYXJhbS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvUGFyYW0uY3BwCmluZGV4IDI5MzQ1NjQ0NWNj
MGUxYmRhOWQwMGQyYmQ5YTJjMGQxMTEwM2RjYzkuLmQ0NzBiZjc0NmVmYjVhYjIzY2EzNTJkN2Jk
OTUzMzhjMzgxNGZlN2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVk
aW8vQXVkaW9QYXJhbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9B
dWRpb1BhcmFtLmNwcApAQCAtNDEsNyArNDEsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjb25z
dCBkb3VibGUgQXVkaW9QYXJhbTo6RGVmYXVsdFNtb290aGluZ0NvbnN0YW50ID0gMC4wNTsKIGNv
bnN0IGRvdWJsZSBBdWRpb1BhcmFtOjpTbmFwVGhyZXNob2xkID0gMC4wMDE7CiAKLUF1ZGlvUGFy
YW06OkF1ZGlvUGFyYW0oQXVkaW9Db250ZXh0JiBjb250ZXh0LCBjb25zdCBTdHJpbmcmIG5hbWUs
IGRvdWJsZSBkZWZhdWx0VmFsdWUsIGRvdWJsZSBtaW5WYWx1ZSwgZG91YmxlIG1heFZhbHVlLCB1
bnNpZ25lZCB1bml0cykKK0F1ZGlvUGFyYW06OkF1ZGlvUGFyYW0oQXVkaW9Db250ZXh0QmFzZSYg
Y29udGV4dCwgY29uc3QgU3RyaW5nJiBuYW1lLCBkb3VibGUgZGVmYXVsdFZhbHVlLCBkb3VibGUg
bWluVmFsdWUsIGRvdWJsZSBtYXhWYWx1ZSwgdW5zaWduZWQgdW5pdHMpCiAgICAgOiBBdWRpb1N1
bW1pbmdKdW5jdGlvbihjb250ZXh0KQogICAgICwgbV9uYW1lKG5hbWUpCiAgICAgLCBtX3ZhbHVl
KGRlZmF1bHRWYWx1ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVk
aW8vQXVkaW9QYXJhbS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1Bh
cmFtLmgKaW5kZXggMjI2Yzk1N2U3MDZmZTYxZDJmMjMzYzBkNWJmOTZmMjA2ODczMWM0Mi4uMTZh
MjEwOTUwNDRmNjAxZWQyN2I4OTAxYTA3NjhmMmZhOWViMTZlNiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1BhcmFtLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1BhcmFtLmgKQEAgLTMxLDYgKzMxLDcgQEAKICNpbmNs
dWRlICJBdWRpb0NvbnRleHQuaCIKICNpbmNsdWRlICJBdWRpb1BhcmFtVGltZWxpbmUuaCIKICNp
bmNsdWRlICJBdWRpb1N1bW1pbmdKdW5jdGlvbi5oIgorI2luY2x1ZGUgIldlYktpdEF1ZGlvQ29u
dGV4dC5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0Zsb2F0MzJBcnJheS5oPgogI2luY2x1
ZGUgPHN5cy90eXBlcy5oPgogI2luY2x1ZGUgPHd0Zi9Mb2dnZXJIZWxwZXIuaD4KQEAgLTUyLDcg
KzUzLDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBjb25zdCBkb3VibGUgRGVmYXVsdFNtb290aGlu
Z0NvbnN0YW50OwogICAgIHN0YXRpYyBjb25zdCBkb3VibGUgU25hcFRocmVzaG9sZDsKIAotICAg
IHN0YXRpYyBSZWY8QXVkaW9QYXJhbT4gY3JlYXRlKEF1ZGlvQ29udGV4dCYgY29udGV4dCwgY29u
c3QgU3RyaW5nJiBuYW1lLCBkb3VibGUgZGVmYXVsdFZhbHVlLCBkb3VibGUgbWluVmFsdWUsIGRv
dWJsZSBtYXhWYWx1ZSwgdW5zaWduZWQgdW5pdHMgPSAwKQorICAgIHN0YXRpYyBSZWY8QXVkaW9Q
YXJhbT4gY3JlYXRlKEF1ZGlvQ29udGV4dEJhc2UmIGNvbnRleHQsIGNvbnN0IFN0cmluZyYgbmFt
ZSwgZG91YmxlIGRlZmF1bHRWYWx1ZSwgZG91YmxlIG1pblZhbHVlLCBkb3VibGUgbWF4VmFsdWUs
IHVuc2lnbmVkIHVuaXRzID0gMCkKICAgICB7CiAgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3
IEF1ZGlvUGFyYW0oY29udGV4dCwgbmFtZSwgZGVmYXVsdFZhbHVlLCBtaW5WYWx1ZSwgbWF4VmFs
dWUsIHVuaXRzKSk7CiAgICAgfQpAQCAtMTA4LDcgKzEwOSw3IEBAIHB1YmxpYzoKICAgICB2b2lk
IGRpc2Nvbm5lY3QoQXVkaW9Ob2RlT3V0cHV0Kik7CiAKIHByb3RlY3RlZDoKLSAgICBBdWRpb1Bh
cmFtKEF1ZGlvQ29udGV4dCYsIGNvbnN0IFN0cmluZyYsIGRvdWJsZSBkZWZhdWx0VmFsdWUsIGRv
dWJsZSBtaW5WYWx1ZSwgZG91YmxlIG1heFZhbHVlLCB1bnNpZ25lZCB1bml0cyA9IDApOworICAg
IEF1ZGlvUGFyYW0oQXVkaW9Db250ZXh0QmFzZSYsIGNvbnN0IFN0cmluZyYsIGRvdWJsZSBkZWZh
dWx0VmFsdWUsIGRvdWJsZSBtaW5WYWx1ZSwgZG91YmxlIG1heFZhbHVlLCB1bnNpZ25lZCB1bml0
cyA9IDApOwogCiBwcml2YXRlOgogICAgIC8vIHNhbXBsZUFjY3VyYXRlIGNvcnJlc3BvbmRzIHRv
IGEtcmF0ZSAoYXVkaW8gcmF0ZSkgdnMuIGstcmF0ZSBpbiB0aGUgV2ViIEF1ZGlvIHNwZWNpZmlj
YXRpb24uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlv
UGFyYW1UaW1lbGluZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlv
UGFyYW1UaW1lbGluZS5jcHAKaW5kZXggMmI1OTU3MGJmNmU2MWI1NDgzZWQxYjkwN2U2NzZmNjli
ZTliMzc0Mi4uNmM0MTMwMWQ4YWQ1YTdhYmJlOGRiMGRiYTE3Y2Y4NDRiZmVmZmI2MCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1BhcmFtVGltZWxpbmUu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9QYXJhbVRpbWVs
aW5lLmNwcApAQCAtMTEzLDcgKzExMyw3IEBAIHZvaWQgQXVkaW9QYXJhbVRpbWVsaW5lOjpjYW5j
ZWxTY2hlZHVsZWRWYWx1ZXMoZmxvYXQgc3RhcnRUaW1lKQogICAgIH0KIH0KIAotZmxvYXQgQXVk
aW9QYXJhbVRpbWVsaW5lOjp2YWx1ZUZvckNvbnRleHRUaW1lKEF1ZGlvQ29udGV4dCYgY29udGV4
dCwgZmxvYXQgZGVmYXVsdFZhbHVlLCBib29sJiBoYXNWYWx1ZSkKK2Zsb2F0IEF1ZGlvUGFyYW1U
aW1lbGluZTo6dmFsdWVGb3JDb250ZXh0VGltZShBdWRpb0NvbnRleHRCYXNlJiBjb250ZXh0LCBm
bG9hdCBkZWZhdWx0VmFsdWUsIGJvb2wmIGhhc1ZhbHVlKQogewogICAgIHsKICAgICAgICAgc3Rk
Ojp1bmlxdWVfbG9jazxMb2NrPiBsb2NrKG1fZXZlbnRzTXV0ZXgsIHN0ZDo6dHJ5X3RvX2xvY2sp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1BhcmFt
VGltZWxpbmUuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9QYXJhbVRp
bWVsaW5lLmgKaW5kZXggN2MxMDk5OTU2Y2VlYmM4ZDhmNmQ1MGUwZmIwZmM5YTFlZWZkYTM0ZC4u
YTU4NjhiZGVlMTgzZmRlMmE3MDhkNDY0Y2U2MzViMjQwMGU3NjFhMiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1BhcmFtVGltZWxpbmUuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvUGFyYW1UaW1lbGluZS5oCkBAIC01
Miw3ICs1Miw3IEBAIHB1YmxpYzoKIAogICAgIC8vIGhhc1ZhbHVlIGlzIHNldCB0byB0cnVlIGlm
IGEgdmFsaWQgdGltZWxpbmUgdmFsdWUgaXMgcmV0dXJuZWQuCiAgICAgLy8gb3RoZXJ3aXNlIGRl
ZmF1bHRWYWx1ZSBpcyByZXR1cm5lZC4KLSAgICBmbG9hdCB2YWx1ZUZvckNvbnRleHRUaW1lKEF1
ZGlvQ29udGV4dCYsIGZsb2F0IGRlZmF1bHRWYWx1ZSwgYm9vbCYgaGFzVmFsdWUpOworICAgIGZs
b2F0IHZhbHVlRm9yQ29udGV4dFRpbWUoQXVkaW9Db250ZXh0QmFzZSYsIGZsb2F0IGRlZmF1bHRW
YWx1ZSwgYm9vbCYgaGFzVmFsdWUpOwogCiAgICAgLy8gR2l2ZW4gdGhlIHRpbWUgcmFuZ2UsIGNh
bGN1bGF0ZXMgcGFyYW1ldGVyIHZhbHVlcyBpbnRvIHRoZSB2YWx1ZXMgYnVmZmVyCiAgICAgLy8g
YW5kIHJldHVybnMgdGhlIGxhc3QgcGFyYW1ldGVyIHZhbHVlIGNhbGN1bGF0ZWQgZm9yICJ2YWx1
ZXMiIG9yIHRoZSBkZWZhdWx0VmFsdWUgaWYgbm9uZSB3ZXJlIGNhbGN1bGF0ZWQuCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvU2NoZWR1bGVkU291cmNl
Tm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvU2NoZWR1bGVk
U291cmNlTm9kZS5jcHAKaW5kZXggMGY3MjY3NmZjNzQzYzRjZTI0MWFlZTNjOTBkMDI4ZjZhOTUy
NzAyMy4uN2MyODIzN2EwYmQwMzVlNGMzYWI3YmE1MTM3NTMzYmQ5MTVhN2U2MSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1NjaGVkdWxlZFNvdXJjZU5v
ZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9TY2hlZHVs
ZWRTb3VyY2VOb2RlLmNwcApAQCAtNDksNyArNDksNyBAQCBXVEZfTUFLRV9JU09fQUxMT0NBVEVE
X0lNUEwoQXVkaW9TY2hlZHVsZWRTb3VyY2VOb2RlKTsKIAogY29uc3QgZG91YmxlIEF1ZGlvU2No
ZWR1bGVkU291cmNlTm9kZTo6VW5rbm93blRpbWUgPSAtMTsKIAotQXVkaW9TY2hlZHVsZWRTb3Vy
Y2VOb2RlOjpBdWRpb1NjaGVkdWxlZFNvdXJjZU5vZGUoQXVkaW9Db250ZXh0JiBjb250ZXh0LCBm
bG9hdCBzYW1wbGVSYXRlKQorQXVkaW9TY2hlZHVsZWRTb3VyY2VOb2RlOjpBdWRpb1NjaGVkdWxl
ZFNvdXJjZU5vZGUoQXVkaW9Db250ZXh0QmFzZSYgY29udGV4dCwgZmxvYXQgc2FtcGxlUmF0ZSkK
ICAgICA6IEF1ZGlvTm9kZShjb250ZXh0LCBzYW1wbGVSYXRlKQogICAgICwgQWN0aXZlRE9NT2Jq
ZWN0KGNvbnRleHQuc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKQogICAgICwgbV9lbmRUaW1lKFVu
a25vd25UaW1lKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9B
dWRpb1NjaGVkdWxlZFNvdXJjZU5vZGUuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVk
aW8vQXVkaW9TY2hlZHVsZWRTb3VyY2VOb2RlLmgKaW5kZXggOGNhZGJlMTBhZmQzYTRkN2VjZTIw
MjIwMjQ0Mzg3ZjRjZTE0YzJlNC4uYjRkOTU4ODBjMWRmMzY2ZjgyMWUxYWJmY2ZjYTc3ZDc2MTEw
ZWEzZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1Nj
aGVkdWxlZFNvdXJjZU5vZGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlv
L0F1ZGlvU2NoZWR1bGVkU291cmNlTm9kZS5oCkBAIC01Myw3ICs1Myw3IEBAIHB1YmxpYzoKICAg
ICAgICAgRklOSVNIRURfU1RBVEUgPSAzCiAgICAgfTsKICAgICAKLSAgICBBdWRpb1NjaGVkdWxl
ZFNvdXJjZU5vZGUoQXVkaW9Db250ZXh0JiwgZmxvYXQgc2FtcGxlUmF0ZSk7CisgICAgQXVkaW9T
Y2hlZHVsZWRTb3VyY2VOb2RlKEF1ZGlvQ29udGV4dEJhc2UmLCBmbG9hdCBzYW1wbGVSYXRlKTsK
IAogICAgIEV4Y2VwdGlvbk9yPHZvaWQ+IHN0YXJ0TGF0ZXIoZG91YmxlIHdoZW4pOwogICAgIEV4
Y2VwdGlvbk9yPHZvaWQ+IHN0b3BMYXRlcihkb3VibGUgd2hlbik7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvU3VtbWluZ0p1bmN0aW9uLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9TdW1taW5nSnVuY3Rpb24uY3BwCmlu
ZGV4IGVlNjAwYTYyOWExYjg2OWNkOWE1YjNkMzcyYWU0NzZhM2UxMjdmYjAuLmRkNjRmZDNlYTgx
MzExZjAwZTA4YzNjYTQxZDc0MjhmMWYxZjM4NzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViYXVkaW8vQXVkaW9TdW1taW5nSnVuY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9TdW1taW5nSnVuY3Rpb24uY3BwCkBAIC0zNCw3
ICszNCw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotQXVkaW9TdW1taW5nSnVuY3Rpb246
OkF1ZGlvU3VtbWluZ0p1bmN0aW9uKEF1ZGlvQ29udGV4dCYgY29udGV4dCkKK0F1ZGlvU3VtbWlu
Z0p1bmN0aW9uOjpBdWRpb1N1bW1pbmdKdW5jdGlvbihBdWRpb0NvbnRleHRCYXNlJiBjb250ZXh0
KQogICAgIDogbV9jb250ZXh0KGNvbnRleHQpCiAgICAgLCBtX3JlbmRlcmluZ1N0YXRlTmVlZFVw
ZGF0aW5nKGZhbHNlKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJh
dWRpby9BdWRpb1N1bW1pbmdKdW5jdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJh
dWRpby9BdWRpb1N1bW1pbmdKdW5jdGlvbi5oCmluZGV4IGM5NGZmNmQ2YTVhZWQxMTEwMjA4YzQ3
NjQzODNkN2U1NmZkODQ2M2IuLjRjYmY4YWU5ZmI5NTFiNzgyMDc2YjBjYjUyNjExNmMxOWQ0YWVj
OWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9TdW1t
aW5nSnVuY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlv
U3VtbWluZ0p1bmN0aW9uLmgKQEAgLTMwLDE4ICszMCwxOCBAQAogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKLWNsYXNzIEF1ZGlvQ29udGV4dDsKK2NsYXNzIEF1ZGlvQ29udGV4dEJhc2U7CiBjbGFz
cyBBdWRpb05vZGVPdXRwdXQ7CiAKIC8vIEFuIEF1ZGlvU3VtbWluZ0p1bmN0aW9uIHJlcHJlc2Vu
dHMgYSBwb2ludCB3aGVyZSB6ZXJvLCBvbmUsIG9yIG1vcmUgQXVkaW9Ob2RlT3V0cHV0cyBjb25u
ZWN0LgogCiBjbGFzcyBBdWRpb1N1bW1pbmdKdW5jdGlvbiB7CiBwdWJsaWM6Ci0gICAgZXhwbGlj
aXQgQXVkaW9TdW1taW5nSnVuY3Rpb24oQXVkaW9Db250ZXh0Jik7CisgICAgZXhwbGljaXQgQXVk
aW9TdW1taW5nSnVuY3Rpb24oQXVkaW9Db250ZXh0QmFzZSYpOwogICAgIHZpcnR1YWwgfkF1ZGlv
U3VtbWluZ0p1bmN0aW9uKCk7CiAKICAgICAvLyBDYW4gYmUgY2FsbGVkIGZyb20gYW55IHRocmVh
ZC4KLSAgICBBdWRpb0NvbnRleHQmIGNvbnRleHQoKSB7IHJldHVybiBtX2NvbnRleHQuZ2V0KCk7
IH0KKyAgICBBdWRpb0NvbnRleHRCYXNlJiBjb250ZXh0KCkgeyByZXR1cm4gbV9jb250ZXh0OyB9
CiAKICAgICAvLyBUaGlzIG11c3QgYmUgY2FsbGVkIHdoZW5ldmVyIHdlIG1vZGlmeSBtX291dHB1
dHMuCiAgICAgdm9pZCBjaGFuZ2VkT3V0cHV0cygpOwpAQCAtNjAsNyArNjAsNyBAQCBwdWJsaWM6
CiAgICAgdmlydHVhbCB2b2lkIGRpZFVwZGF0ZSgpID0gMDsKIAogcHJvdGVjdGVkOgotICAgIFJl
ZjxBdWRpb0NvbnRleHQ+IG1fY29udGV4dDsKKyAgICBSZWY8QXVkaW9Db250ZXh0QmFzZT4gbV9j
b250ZXh0OwogCiAgICAgLy8gbV9vdXRwdXRzIGNvbnRhaW5zIHRoZSBBdWRpb05vZGVPdXRwdXRz
IHJlcHJlc2VudGluZyBjdXJyZW50IGNvbm5lY3Rpb25zIHdoaWNoIGFyZSBub3QgZGlzYWJsZWQu
CiAgICAgLy8gVGhlIHJlbmRlcmluZyBjb2RlIHNob3VsZCBuZXZlciB1c2UgdGhpcyBkaXJlY3Rs
eSwgYnV0IGluc3RlYWQgdXNlcyBtX3JlbmRlcmluZ091dHB1dHMuCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0JpcXVhZEZpbHRlck5vZGUuY3BwIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9CaXF1YWRGaWx0ZXJOb2RlLmNwcAppbmRleCA0YTgy
NTVlNmYwYWYwNzY3MTM4ZTQ2ODk4ZjhiNjM2YWIyZDc1NmU1Li5kZGUwNzczZDQ3M2QyNzIyYTVi
NTNkYzg2OTA2ZDM5MzcwY2JmZjQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmF1ZGlvL0JpcXVhZEZpbHRlck5vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViYXVkaW8vQmlxdWFkRmlsdGVyTm9kZS5jcHAKQEAgLTMzLDcgKzMzLDcgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogCiBXVEZfTUFLRV9JU09fQUxMT0NBVEVEX0lNUEwoQmlxdWFkRmlsdGVy
Tm9kZSk7CiAKLUJpcXVhZEZpbHRlck5vZGU6OkJpcXVhZEZpbHRlck5vZGUoQXVkaW9Db250ZXh0
JiBjb250ZXh0LCBmbG9hdCBzYW1wbGVSYXRlKQorQmlxdWFkRmlsdGVyTm9kZTo6QmlxdWFkRmls
dGVyTm9kZShBdWRpb0NvbnRleHRCYXNlJiBjb250ZXh0LCBmbG9hdCBzYW1wbGVSYXRlKQogICAg
IDogQXVkaW9CYXNpY1Byb2Nlc3Nvck5vZGUoY29udGV4dCwgc2FtcGxlUmF0ZSkKIHsKICAgICBz
ZXROb2RlVHlwZShOb2RlVHlwZUJpcXVhZEZpbHRlcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0JpcXVhZEZpbHRlck5vZGUuaCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViYXVkaW8vQmlxdWFkRmlsdGVyTm9kZS5oCmluZGV4IDgwOTRkOTFlYWIzYjky
YjE0OGE4NjI0MDkzMjZmNjVlZDliOTAxM2MuLmFjOGQ5NDdhMTBmN2FlNmEzM2YwM2EyZDA5ODQw
YzhlNmMxZTU0Y2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8v
QmlxdWFkRmlsdGVyTm9kZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8v
QmlxdWFkRmlsdGVyTm9kZS5oCkBAIC0zNCw3ICszNCw3IEBAIGNsYXNzIEF1ZGlvUGFyYW07CiBj
bGFzcyBCaXF1YWRGaWx0ZXJOb2RlIGZpbmFsIDogcHVibGljIEF1ZGlvQmFzaWNQcm9jZXNzb3JO
b2RlIHsKICAgICBXVEZfTUFLRV9JU09fQUxMT0NBVEVEKEJpcXVhZEZpbHRlck5vZGUpOwogcHVi
bGljOgotICAgIHN0YXRpYyBSZWY8QmlxdWFkRmlsdGVyTm9kZT4gY3JlYXRlKEF1ZGlvQ29udGV4
dCYgY29udGV4dCwgZmxvYXQgc2FtcGxlUmF0ZSkKKyAgICBzdGF0aWMgUmVmPEJpcXVhZEZpbHRl
ck5vZGU+IGNyZWF0ZShBdWRpb0NvbnRleHRCYXNlJiBjb250ZXh0LCBmbG9hdCBzYW1wbGVSYXRl
KQogICAgIHsKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQmlxdWFkRmlsdGVyTm9kZShj
b250ZXh0LCBzYW1wbGVSYXRlKSk7CiAgICAgfQpAQCAtNTIsNyArNTIsNyBAQCBwdWJsaWM6CiAg
ICAgdm9pZCBnZXRGcmVxdWVuY3lSZXNwb25zZShjb25zdCBSZWZQdHI8RmxvYXQzMkFycmF5PiYg
ZnJlcXVlbmN5SHosIGNvbnN0IFJlZlB0cjxGbG9hdDMyQXJyYXk+JiBtYWdSZXNwb25zZSwgY29u
c3QgUmVmUHRyPEZsb2F0MzJBcnJheT4mIHBoYXNlUmVzcG9uc2UpOwogCiBwcml2YXRlOgotICAg
IEJpcXVhZEZpbHRlck5vZGUoQXVkaW9Db250ZXh0JiwgZmxvYXQgc2FtcGxlUmF0ZSk7CisgICAg
QmlxdWFkRmlsdGVyTm9kZShBdWRpb0NvbnRleHRCYXNlJiwgZmxvYXQgc2FtcGxlUmF0ZSk7CiAK
ICAgICBCaXF1YWRQcm9jZXNzb3IqIGJpcXVhZFByb2Nlc3NvcigpIHsgcmV0dXJuIHN0YXRpY19j
YXN0PEJpcXVhZFByb2Nlc3Nvcio+KHByb2Nlc3NvcigpKTsgfQogfTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQmlxdWFkUHJvY2Vzc29yLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQmlxdWFkUHJvY2Vzc29yLmNwcAppbmRleCBlODRi
OTgwMzU2NzBmYjFkY2MzMjcwOTY2M2QyYjM5MDU1MmU2NWViLi4yZjYwNjdhNzJkY2VjMzNjM2Yw
ZDBkZTlkOTdlNGI2OTc2OTYyNmE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmF1ZGlvL0JpcXVhZFByb2Nlc3Nvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJhdWRpby9CaXF1YWRQcm9jZXNzb3IuY3BwCkBAIC0zMiw3ICszMiw3IEBACiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKICAgICAKLUJpcXVhZFByb2Nlc3Nvcjo6QmlxdWFkUHJvY2Vzc29yKEF1
ZGlvQ29udGV4dCYgY29udGV4dCwgZmxvYXQgc2FtcGxlUmF0ZSwgc2l6ZV90IG51bWJlck9mQ2hh
bm5lbHMsIGJvb2wgYXV0b0luaXRpYWxpemUpCitCaXF1YWRQcm9jZXNzb3I6OkJpcXVhZFByb2Nl
c3NvcihBdWRpb0NvbnRleHRCYXNlJiBjb250ZXh0LCBmbG9hdCBzYW1wbGVSYXRlLCBzaXplX3Qg
bnVtYmVyT2ZDaGFubmVscywgYm9vbCBhdXRvSW5pdGlhbGl6ZSkKICAgICA6IEF1ZGlvRFNQS2Vy
bmVsUHJvY2Vzc29yKHNhbXBsZVJhdGUsIG51bWJlck9mQ2hhbm5lbHMpCiAgICAgLCBtX3R5cGUo
QmlxdWFkRmlsdGVyVHlwZTo6TG93cGFzcykKICAgICAsIG1fcGFyYW1ldGVyMSgwKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9CaXF1YWRQcm9jZXNzb3IuaCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQmlxdWFkUHJvY2Vzc29yLmgKaW5kZXgg
YWRiZWVjNDMwMjVhZjAzYWYxN2UxMTUxYWJiZWZmZWVlZTc3ZjYzMi4uZGMzMDZhYjUxN2IzMjRi
YjFjYzU2YTI4OGQwZTQ5ZjFhOGU0ZTkwNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJhdWRpby9CaXF1YWRQcm9jZXNzb3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmF1ZGlvL0JpcXVhZFByb2Nlc3Nvci5oCkBAIC01MCw3ICs1MCw3IEBAIGVudW0gY2xh
c3MgQmlxdWFkRmlsdGVyVHlwZSB7CiBjbGFzcyBCaXF1YWRQcm9jZXNzb3IgZmluYWwgOiBwdWJs
aWMgQXVkaW9EU1BLZXJuZWxQcm9jZXNzb3IgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVE
OwogcHVibGljOgotICAgIEJpcXVhZFByb2Nlc3NvcihBdWRpb0NvbnRleHQmLCBmbG9hdCBzYW1w
bGVSYXRlLCBzaXplX3QgbnVtYmVyT2ZDaGFubmVscywgYm9vbCBhdXRvSW5pdGlhbGl6ZSk7Cisg
ICAgQmlxdWFkUHJvY2Vzc29yKEF1ZGlvQ29udGV4dEJhc2UmLCBmbG9hdCBzYW1wbGVSYXRlLCBz
aXplX3QgbnVtYmVyT2ZDaGFubmVscywgYm9vbCBhdXRvSW5pdGlhbGl6ZSk7CiAKICAgICB2aXJ0
dWFsIH5CaXF1YWRQcm9jZXNzb3IoKTsKICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViYXVkaW8vQ2hhbm5lbE1lcmdlck5vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJhdWRpby9DaGFubmVsTWVyZ2VyTm9kZS5jcHAKaW5kZXggZGY1MGYyNjg3MzY4
YWE1YzMyOTU0MTQ4MTUwNzc3YTAyOTE3MzJkOC4uZGUyOGFlYTdkMmM0MzQyODk2YjEwNGJhODk0
MWZkZWI3OThhZGMzZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRp
by9DaGFubmVsTWVyZ2VyTm9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJh
dWRpby9DaGFubmVsTWVyZ2VyTm9kZS5jcHAKQEAgLTQzLDcgKzQzLDcgQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogCiBXVEZfTUFLRV9JU09fQUxMT0NBVEVEX0lNUEwoQ2hhbm5lbE1lcmdlck5vZGUp
OwogCi1SZWZQdHI8Q2hhbm5lbE1lcmdlck5vZGU+IENoYW5uZWxNZXJnZXJOb2RlOjpjcmVhdGUo
QXVkaW9Db250ZXh0JiBjb250ZXh0LCBmbG9hdCBzYW1wbGVSYXRlLCB1bnNpZ25lZCBudW1iZXJP
ZklucHV0cykKK1JlZlB0cjxDaGFubmVsTWVyZ2VyTm9kZT4gQ2hhbm5lbE1lcmdlck5vZGU6OmNy
ZWF0ZShBdWRpb0NvbnRleHRCYXNlJiBjb250ZXh0LCBmbG9hdCBzYW1wbGVSYXRlLCB1bnNpZ25l
ZCBudW1iZXJPZklucHV0cykKIHsKICAgICBpZiAoIW51bWJlck9mSW5wdXRzIHx8IG51bWJlck9m
SW5wdXRzID4gQXVkaW9Db250ZXh0OjptYXhOdW1iZXJPZkNoYW5uZWxzKCkpCiAgICAgICAgIHJl
dHVybiBudWxscHRyOwpAQCAtNTEsNyArNTEsNyBAQCBSZWZQdHI8Q2hhbm5lbE1lcmdlck5vZGU+
IENoYW5uZWxNZXJnZXJOb2RlOjpjcmVhdGUoQXVkaW9Db250ZXh0JiBjb250ZXh0LCBmbG9hdAog
ICAgIHJldHVybiBhZG9wdFJlZigqbmV3IENoYW5uZWxNZXJnZXJOb2RlKGNvbnRleHQsIHNhbXBs
ZVJhdGUsIG51bWJlck9mSW5wdXRzKSk7ICAgICAgCiB9CiAKLUNoYW5uZWxNZXJnZXJOb2RlOjpD
aGFubmVsTWVyZ2VyTm9kZShBdWRpb0NvbnRleHQmIGNvbnRleHQsIGZsb2F0IHNhbXBsZVJhdGUs
IHVuc2lnbmVkIG51bWJlck9mSW5wdXRzKQorQ2hhbm5lbE1lcmdlck5vZGU6OkNoYW5uZWxNZXJn
ZXJOb2RlKEF1ZGlvQ29udGV4dEJhc2UmIGNvbnRleHQsIGZsb2F0IHNhbXBsZVJhdGUsIHVuc2ln
bmVkIG51bWJlck9mSW5wdXRzKQogICAgIDogQXVkaW9Ob2RlKGNvbnRleHQsIHNhbXBsZVJhdGUp
CiAgICAgLCBtX2Rlc2lyZWROdW1iZXJPZk91dHB1dENoYW5uZWxzKERlZmF1bHROdW1iZXJPZk91
dHB1dENoYW5uZWxzKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJh
dWRpby9DaGFubmVsTWVyZ2VyTm9kZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRp
by9DaGFubmVsTWVyZ2VyTm9kZS5oCmluZGV4IDY2NjM2ZWVkNmY3ZWU4NTUxZTkyY2M4NzdhMDRj
NWNjM2U1ZmRmMWQuLjYyOTc2ZTA1MDczNDFmZjkyNjYwYTZhZjBkYjU4YWViYTU1NzY4MWEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQ2hhbm5lbE1lcmdlck5v
ZGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0NoYW5uZWxNZXJnZXJO
b2RlLmgKQEAgLTM3LDcgKzM3LDcgQEAgY2xhc3MgQXVkaW9Db250ZXh0OwogY2xhc3MgQ2hhbm5l
bE1lcmdlck5vZGUgZmluYWwgOiBwdWJsaWMgQXVkaW9Ob2RlIHsKICAgICBXVEZfTUFLRV9JU09f
QUxMT0NBVEVEKENoYW5uZWxNZXJnZXJOb2RlKTsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmUHRy
PENoYW5uZWxNZXJnZXJOb2RlPiBjcmVhdGUoQXVkaW9Db250ZXh0JiwgZmxvYXQgc2FtcGxlUmF0
ZSwgdW5zaWduZWQgbnVtYmVyT2ZJbnB1dHMpOworICAgIHN0YXRpYyBSZWZQdHI8Q2hhbm5lbE1l
cmdlck5vZGU+IGNyZWF0ZShBdWRpb0NvbnRleHRCYXNlJiwgZmxvYXQgc2FtcGxlUmF0ZSwgdW5z
aWduZWQgbnVtYmVyT2ZJbnB1dHMpOwogCiAgICAgLy8gQXVkaW9Ob2RlCiAgICAgdm9pZCBwcm9j
ZXNzKHNpemVfdCBmcmFtZXNUb1Byb2Nlc3MpIG92ZXJyaWRlOwpAQCAtNTIsNyArNTIsNyBAQCBw
cml2YXRlOgogICAgIGRvdWJsZSB0YWlsVGltZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIDA7
IH0KICAgICBkb3VibGUgbGF0ZW5jeVRpbWUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiAwOyB9
CiAKLSAgICBDaGFubmVsTWVyZ2VyTm9kZShBdWRpb0NvbnRleHQmLCBmbG9hdCBzYW1wbGVSYXRl
LCB1bnNpZ25lZCBudW1iZXJPZklucHV0cyk7CisgICAgQ2hhbm5lbE1lcmdlck5vZGUoQXVkaW9D
b250ZXh0QmFzZSYsIGZsb2F0IHNhbXBsZVJhdGUsIHVuc2lnbmVkIG51bWJlck9mSW5wdXRzKTsK
IH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViYXVkaW8vQ2hhbm5lbFNwbGl0dGVyTm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmF1ZGlvL0NoYW5uZWxTcGxpdHRlck5vZGUuY3BwCmluZGV4IDgyZjY5YTA0
Zjk5OTI2MWQ1OGMxNTJiZmM2MDJhMzY2MDk2MDkxYjkuLmY1NTUzZDBjODM1YTM5MmQzY2VlZGU5
MmVlNWY4YjhjOTI4ZjlkYjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
YXVkaW8vQ2hhbm5lbFNwbGl0dGVyTm9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJhdWRpby9DaGFubmVsU3BsaXR0ZXJOb2RlLmNwcApAQCAtMzcsNyArMzcsNyBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKIFdURl9NQUtFX0lTT19BTExPQ0FURURfSU1QTChDaGFubmVsU3Bs
aXR0ZXJOb2RlKTsKICAgICAKLVJlZlB0cjxDaGFubmVsU3BsaXR0ZXJOb2RlPiBDaGFubmVsU3Bs
aXR0ZXJOb2RlOjpjcmVhdGUoQXVkaW9Db250ZXh0JiBjb250ZXh0LCBmbG9hdCBzYW1wbGVSYXRl
LCB1bnNpZ25lZCBudW1iZXJPZk91dHB1dHMpCitSZWZQdHI8Q2hhbm5lbFNwbGl0dGVyTm9kZT4g
Q2hhbm5lbFNwbGl0dGVyTm9kZTo6Y3JlYXRlKEF1ZGlvQ29udGV4dEJhc2UmIGNvbnRleHQsIGZs
b2F0IHNhbXBsZVJhdGUsIHVuc2lnbmVkIG51bWJlck9mT3V0cHV0cykKIHsKICAgICBpZiAoIW51
bWJlck9mT3V0cHV0cyB8fCBudW1iZXJPZk91dHB1dHMgPiBBdWRpb0NvbnRleHQ6Om1heE51bWJl
ck9mQ2hhbm5lbHMoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC00NSw3ICs0NSw3IEBA
IFJlZlB0cjxDaGFubmVsU3BsaXR0ZXJOb2RlPiBDaGFubmVsU3BsaXR0ZXJOb2RlOjpjcmVhdGUo
QXVkaW9Db250ZXh0JiBjb250ZXh0LCBmCiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQ2hhbm5l
bFNwbGl0dGVyTm9kZShjb250ZXh0LCBzYW1wbGVSYXRlLCBudW1iZXJPZk91dHB1dHMpKTsgICAg
ICAKIH0KIAotQ2hhbm5lbFNwbGl0dGVyTm9kZTo6Q2hhbm5lbFNwbGl0dGVyTm9kZShBdWRpb0Nv
bnRleHQmIGNvbnRleHQsIGZsb2F0IHNhbXBsZVJhdGUsIHVuc2lnbmVkIG51bWJlck9mT3V0cHV0
cykKK0NoYW5uZWxTcGxpdHRlck5vZGU6OkNoYW5uZWxTcGxpdHRlck5vZGUoQXVkaW9Db250ZXh0
QmFzZSYgY29udGV4dCwgZmxvYXQgc2FtcGxlUmF0ZSwgdW5zaWduZWQgbnVtYmVyT2ZPdXRwdXRz
KQogICAgIDogQXVkaW9Ob2RlKGNvbnRleHQsIHNhbXBsZVJhdGUpCiB7CiAgICAgc2V0Tm9kZVR5
cGUoTm9kZVR5cGVDaGFubmVsU3BsaXR0ZXIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJhdWRpby9DaGFubmVsU3BsaXR0ZXJOb2RlLmggYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmF1ZGlvL0NoYW5uZWxTcGxpdHRlck5vZGUuaAppbmRleCA4ZDk4MzI4MTIzN2Rk
MWQwZmNmMTQ3MGEzOGIwMDNmZTQyNjZiNTFlLi4xM2Q4ZDk4MGRhYTc3MzMwNGYxNjkwNWU5NTQ4
YTQyMGFlM2VlNDVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlv
L0NoYW5uZWxTcGxpdHRlck5vZGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1
ZGlvL0NoYW5uZWxTcGxpdHRlck5vZGUuaApAQCAtMzMsNyArMzMsNyBAQCBjbGFzcyBBdWRpb0Nv
bnRleHQ7CiBjbGFzcyBDaGFubmVsU3BsaXR0ZXJOb2RlIGZpbmFsIDogcHVibGljIEF1ZGlvTm9k
ZSB7CiAgICAgV1RGX01BS0VfSVNPX0FMTE9DQVRFRChDaGFubmVsU3BsaXR0ZXJOb2RlKTsKIHB1
YmxpYzoKLSAgICBzdGF0aWMgUmVmUHRyPENoYW5uZWxTcGxpdHRlck5vZGU+IGNyZWF0ZShBdWRp
b0NvbnRleHQmLCBmbG9hdCBzYW1wbGVSYXRlLCB1bnNpZ25lZCBudW1iZXJPZk91dHB1dHMpOwor
ICAgIHN0YXRpYyBSZWZQdHI8Q2hhbm5lbFNwbGl0dGVyTm9kZT4gY3JlYXRlKEF1ZGlvQ29udGV4
dEJhc2UmLCBmbG9hdCBzYW1wbGVSYXRlLCB1bnNpZ25lZCBudW1iZXJPZk91dHB1dHMpOwogCiAg
ICAgLy8gQXVkaW9Ob2RlCiAgICAgdm9pZCBwcm9jZXNzKHNpemVfdCBmcmFtZXNUb1Byb2Nlc3Mp
IG92ZXJyaWRlOwpAQCAtNDMsNyArNDMsNyBAQCBwcml2YXRlOgogICAgIGRvdWJsZSB0YWlsVGlt
ZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIDA7IH0KICAgICBkb3VibGUgbGF0ZW5jeVRpbWUo
KSBjb25zdCBvdmVycmlkZSB7IHJldHVybiAwOyB9CiAKLSAgICBDaGFubmVsU3BsaXR0ZXJOb2Rl
KEF1ZGlvQ29udGV4dCYsIGZsb2F0IHNhbXBsZVJhdGUsIHVuc2lnbmVkIG51bWJlck9mT3V0cHV0
cyk7CisgICAgQ2hhbm5lbFNwbGl0dGVyTm9kZShBdWRpb0NvbnRleHRCYXNlJiwgZmxvYXQgc2Ft
cGxlUmF0ZSwgdW5zaWduZWQgbnVtYmVyT2ZPdXRwdXRzKTsKIH07CiAKIH0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQ29u
dm9sdmVyTm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0NvbnZvbHZl
ck5vZGUuY3BwCmluZGV4IGNjOTcyZjEwZGJkN2FiZmY3M2Y3OTNjZmFjYzdjNDAwOGE3MjM0NDcu
LmUxZjVlYjgxNTYwZWMyZTkyYjgzNTgzNmM4NGIxODE5NDMzYWZhNGYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQ29udm9sdmVyTm9kZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9Db252b2x2ZXJOb2RlLmNwcApAQCAtNDcsNyAr
NDcsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFdURl9NQUtFX0lTT19BTExPQ0FURURfSU1Q
TChDb252b2x2ZXJOb2RlKTsKIAotQ29udm9sdmVyTm9kZTo6Q29udm9sdmVyTm9kZShBdWRpb0Nv
bnRleHQmIGNvbnRleHQsIGZsb2F0IHNhbXBsZVJhdGUpCitDb252b2x2ZXJOb2RlOjpDb252b2x2
ZXJOb2RlKEF1ZGlvQ29udGV4dEJhc2UmIGNvbnRleHQsIGZsb2F0IHNhbXBsZVJhdGUpCiAgICAg
OiBBdWRpb05vZGUoY29udGV4dCwgc2FtcGxlUmF0ZSkKIHsKICAgICBzZXROb2RlVHlwZShOb2Rl
VHlwZUNvbnZvbHZlcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1
ZGlvL0NvbnZvbHZlck5vZGUuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQ29u
dm9sdmVyTm9kZS5oCmluZGV4IDY0YmZlYmVkMmQ4N2U3NGMzM2FkZmFjOTM0OWQxYjkyNmUwZjY2
YzMuLjMxY2VjMWVjYzdmMGUwMDQ1ZWZhNzRmYmVmMzYwNjhkZGJiMWZkZmMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQ29udm9sdmVyTm9kZS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQ29udm9sdmVyTm9kZS5oCkBAIC0zNSw3ICsz
NSw3IEBAIGNsYXNzIFJldmVyYjsKIGNsYXNzIENvbnZvbHZlck5vZGUgZmluYWwgOiBwdWJsaWMg
QXVkaW9Ob2RlIHsKICAgICBXVEZfTUFLRV9JU09fQUxMT0NBVEVEKENvbnZvbHZlck5vZGUpOwog
cHVibGljOgotICAgIHN0YXRpYyBSZWY8Q29udm9sdmVyTm9kZT4gY3JlYXRlKEF1ZGlvQ29udGV4
dCYgY29udGV4dCwgZmxvYXQgc2FtcGxlUmF0ZSkKKyAgICBzdGF0aWMgUmVmPENvbnZvbHZlck5v
ZGU+IGNyZWF0ZShBdWRpb0NvbnRleHRCYXNlJiBjb250ZXh0LCBmbG9hdCBzYW1wbGVSYXRlKQog
ICAgIHsKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQ29udm9sdmVyTm9kZShjb250ZXh0
LCBzYW1wbGVSYXRlKSk7CiAgICAgfQpAQCAtNDksNyArNDksNyBAQCBwdWJsaWM6CiAgICAgdm9p
ZCBzZXROb3JtYWxpemUoYm9vbCBub3JtYWxpemUpIHsgbV9ub3JtYWxpemUgPSBub3JtYWxpemU7
IH0KIAogcHJpdmF0ZToKLSAgICBDb252b2x2ZXJOb2RlKEF1ZGlvQ29udGV4dCYsIGZsb2F0IHNh
bXBsZVJhdGUpOworICAgIENvbnZvbHZlck5vZGUoQXVkaW9Db250ZXh0QmFzZSYsIGZsb2F0IHNh
bXBsZVJhdGUpOwogCiAgICAgZG91YmxlIHRhaWxUaW1lKCkgY29uc3QgZmluYWw7CiAgICAgZG91
YmxlIGxhdGVuY3lUaW1lKCkgY29uc3QgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmF1ZGlvL0RlZmF1bHRBdWRpb0Rlc3RpbmF0aW9uTm9kZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0RlZmF1bHRBdWRpb0Rlc3RpbmF0aW9uTm9kZS5j
cHAKaW5kZXggMTc1OWFlNGE1YTYzNWJjMDU4ZTMwYzM2NWMxMzQ0ZmJiMzk3OWUxNS4uMDdlYjlh
NDFiNWNjOGU4MzkwOWFlNGI2ZTYzNGUzY2E5YmY1MzdlYSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJhdWRpby9EZWZhdWx0QXVkaW9EZXN0aW5hdGlvbk5vZGUuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vRGVmYXVsdEF1ZGlvRGVzdGluYXRp
b25Ob2RlLmNwcApAQCAtNDMsNyArNDMsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFdURl9N
QUtFX0lTT19BTExPQ0FURURfSU1QTChEZWZhdWx0QXVkaW9EZXN0aW5hdGlvbk5vZGUpOwogICAg
IAotRGVmYXVsdEF1ZGlvRGVzdGluYXRpb25Ob2RlOjpEZWZhdWx0QXVkaW9EZXN0aW5hdGlvbk5v
ZGUoQXVkaW9Db250ZXh0JiBjb250ZXh0KQorRGVmYXVsdEF1ZGlvRGVzdGluYXRpb25Ob2RlOjpE
ZWZhdWx0QXVkaW9EZXN0aW5hdGlvbk5vZGUoQXVkaW9Db250ZXh0QmFzZSYgY29udGV4dCkKICAg
ICA6IEF1ZGlvRGVzdGluYXRpb25Ob2RlKGNvbnRleHQsIEF1ZGlvRGVzdGluYXRpb246OmhhcmR3
YXJlU2FtcGxlUmF0ZSgpKQogewogICAgIC8vIE5vZGUtc3BlY2lmaWMgZGVmYXVsdCBtaXhpbmcg
cnVsZXMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0RlZmF1
bHRBdWRpb0Rlc3RpbmF0aW9uTm9kZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRp
by9EZWZhdWx0QXVkaW9EZXN0aW5hdGlvbk5vZGUuaAppbmRleCA2ZmQ5NWMwZjMwMTE0Y2RlMzJj
MjdmYTE4YTYxYWUyY2RlNTEyOGZjLi45NmM4MzdjOTkzNGViMDNiZjA0YjRkZTM5YmM0MmVmZmRm
ZGVlOGUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0RlZmF1
bHRBdWRpb0Rlc3RpbmF0aW9uTm9kZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
YXVkaW8vRGVmYXVsdEF1ZGlvRGVzdGluYXRpb25Ob2RlLmgKQEAgLTMzLDcgKzMzLDcgQEAgY2xh
c3MgQXVkaW9EZXN0aW5hdGlvbjsKIGNsYXNzIERlZmF1bHRBdWRpb0Rlc3RpbmF0aW9uTm9kZSBm
aW5hbCA6IHB1YmxpYyBBdWRpb0Rlc3RpbmF0aW9uTm9kZSB7CiAgICAgV1RGX01BS0VfSVNPX0FM
TE9DQVRFRChEZWZhdWx0QXVkaW9EZXN0aW5hdGlvbk5vZGUpOwogcHVibGljOgotICAgIHN0YXRp
YyBSZWY8RGVmYXVsdEF1ZGlvRGVzdGluYXRpb25Ob2RlPiBjcmVhdGUoQXVkaW9Db250ZXh0JiBj
b250ZXh0KQorICAgIHN0YXRpYyBSZWY8RGVmYXVsdEF1ZGlvRGVzdGluYXRpb25Ob2RlPiBjcmVh
dGUoQXVkaW9Db250ZXh0QmFzZSYgY29udGV4dCkKICAgICB7CiAgICAgICAgIHJldHVybiBhZG9w
dFJlZigqbmV3IERlZmF1bHRBdWRpb0Rlc3RpbmF0aW9uTm9kZShjb250ZXh0KSk7ICAgICAKICAg
ICB9CkBAIC00MSw3ICs0MSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5EZWZhdWx0QXVkaW9E
ZXN0aW5hdGlvbk5vZGUoKTsKICAgICAKIHByaXZhdGU6Ci0gICAgZXhwbGljaXQgRGVmYXVsdEF1
ZGlvRGVzdGluYXRpb25Ob2RlKEF1ZGlvQ29udGV4dCYpOworICAgIGV4cGxpY2l0IERlZmF1bHRB
dWRpb0Rlc3RpbmF0aW9uTm9kZShBdWRpb0NvbnRleHRCYXNlJik7CiAgICAgdm9pZCBjcmVhdGVE
ZXN0aW5hdGlvbigpOwogCiAgICAgdm9pZCBpbml0aWFsaXplKCkgZmluYWw7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0RlbGF5Tm9kZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0RlbGF5Tm9kZS5jcHAKaW5kZXggODFiZDdkMTliMjdl
NzQxYjUwZjZmODRlNTFmN2NlMjU1NzgwMmI5My4uNDA1MjdjODFmOWY1YmM1NmJjZjRlNzBjNTE2
Y2JjMTllNWJlMWU4YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRp
by9EZWxheU5vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vRGVs
YXlOb2RlLmNwcApAQCAtMzcsMTQgKzM3LDE0IEBAIFdURl9NQUtFX0lTT19BTExPQ0FURURfSU1Q
TChEZWxheU5vZGUpOwogCiBjb25zdCBkb3VibGUgbWF4aW11bUFsbG93ZWREZWxheVRpbWUgPSAx
ODA7CiAKLWlubGluZSBEZWxheU5vZGU6OkRlbGF5Tm9kZShBdWRpb0NvbnRleHQmIGNvbnRleHQs
IGZsb2F0IHNhbXBsZVJhdGUsIGRvdWJsZSBtYXhEZWxheVRpbWUpCitpbmxpbmUgRGVsYXlOb2Rl
OjpEZWxheU5vZGUoQXVkaW9Db250ZXh0QmFzZSYgY29udGV4dCwgZmxvYXQgc2FtcGxlUmF0ZSwg
ZG91YmxlIG1heERlbGF5VGltZSkKICAgICA6IEF1ZGlvQmFzaWNQcm9jZXNzb3JOb2RlKGNvbnRl
eHQsIHNhbXBsZVJhdGUpCiB7CiAgICAgc2V0Tm9kZVR5cGUoTm9kZVR5cGVEZWxheSk7CiAgICAg
bV9wcm9jZXNzb3IgPSBtYWtlVW5pcXVlPERlbGF5UHJvY2Vzc29yPihjb250ZXh0LCBzYW1wbGVS
YXRlLCAxLCBtYXhEZWxheVRpbWUpOwogfQogCi1FeGNlcHRpb25PcjxSZWY8RGVsYXlOb2RlPj4g
RGVsYXlOb2RlOjpjcmVhdGUoQXVkaW9Db250ZXh0JiBjb250ZXh0LCBmbG9hdCBzYW1wbGVSYXRl
LCBkb3VibGUgbWF4RGVsYXlUaW1lKQorRXhjZXB0aW9uT3I8UmVmPERlbGF5Tm9kZT4+IERlbGF5
Tm9kZTo6Y3JlYXRlKEF1ZGlvQ29udGV4dEJhc2UmIGNvbnRleHQsIGZsb2F0IHNhbXBsZVJhdGUs
IGRvdWJsZSBtYXhEZWxheVRpbWUpCiB7CiAgICAgaWYgKG1heERlbGF5VGltZSA8PSAwIHx8IG1h
eERlbGF5VGltZSA+PSBtYXhpbXVtQWxsb3dlZERlbGF5VGltZSkKICAgICAgICAgcmV0dXJuIEV4
Y2VwdGlvbiB7IE5vdFN1cHBvcnRlZEVycm9yIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmF1ZGlvL0RlbGF5Tm9kZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJhdWRpby9EZWxheU5vZGUuaAppbmRleCBjOWVjYWQ5ZjlmZGM1MWM0N2M1MmMzY2I4Njg3MGZk
ODQxMWI5ZmZhLi5iNmFmZGQwZjkzMDcxOGI0MjMyMzFmMmY2Y2Y5MDA1OTkxOTk3MDFiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0RlbGF5Tm9kZS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vRGVsYXlOb2RlLmgKQEAgLTMxLDEyICsz
MSwxMiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBEZWxheU5vZGUgZmluYWwgOiBwdWJs
aWMgQXVkaW9CYXNpY1Byb2Nlc3Nvck5vZGUgewogICAgIFdURl9NQUtFX0lTT19BTExPQ0FURUQo
RGVsYXlOb2RlKTsKIHB1YmxpYzoKLSAgICBzdGF0aWMgRXhjZXB0aW9uT3I8UmVmPERlbGF5Tm9k
ZT4+IGNyZWF0ZShBdWRpb0NvbnRleHQmLCBmbG9hdCBzYW1wbGVSYXRlLCBkb3VibGUgbWF4RGVs
YXlUaW1lKTsKKyAgICBzdGF0aWMgRXhjZXB0aW9uT3I8UmVmPERlbGF5Tm9kZT4+IGNyZWF0ZShB
dWRpb0NvbnRleHRCYXNlJiwgZmxvYXQgc2FtcGxlUmF0ZSwgZG91YmxlIG1heERlbGF5VGltZSk7
CiAKICAgICBBdWRpb1BhcmFtKiBkZWxheVRpbWUoKTsKIAogcHJpdmF0ZToKLSAgICBEZWxheU5v
ZGUoQXVkaW9Db250ZXh0JiwgZmxvYXQgc2FtcGxlUmF0ZSwgZG91YmxlIG1heERlbGF5VGltZSk7
CisgICAgRGVsYXlOb2RlKEF1ZGlvQ29udGV4dEJhc2UmLCBmbG9hdCBzYW1wbGVSYXRlLCBkb3Vi
bGUgbWF4RGVsYXlUaW1lKTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vRGVsYXlQcm9jZXNzb3IuY3BwIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9EZWxheVByb2Nlc3Nvci5jcHAKaW5kZXgg
MTAzNjZlZjZlYWZiNmM0NGRiMTkxMjcxYTk5NWQ5ZTZkMmFjYmE2OS4uY2JiZmQ5ZmEyZmFhNGNm
N2VhZTAxYjMyNmM0NmRjZjU4N2JmZTNjNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJhdWRpby9EZWxheVByb2Nlc3Nvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJhdWRpby9EZWxheVByb2Nlc3Nvci5jcHAKQEAgLTMyLDcgKzMyLDcgQEAKIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCi1EZWxheVByb2Nlc3Nvcjo6RGVsYXlQcm9jZXNzb3IoQXVkaW9D
b250ZXh0JiBjb250ZXh0LCBmbG9hdCBzYW1wbGVSYXRlLCB1bnNpZ25lZCBudW1iZXJPZkNoYW5u
ZWxzLCBkb3VibGUgbWF4RGVsYXlUaW1lKQorRGVsYXlQcm9jZXNzb3I6OkRlbGF5UHJvY2Vzc29y
KEF1ZGlvQ29udGV4dEJhc2UmIGNvbnRleHQsIGZsb2F0IHNhbXBsZVJhdGUsIHVuc2lnbmVkIG51
bWJlck9mQ2hhbm5lbHMsIGRvdWJsZSBtYXhEZWxheVRpbWUpCiAgICAgOiBBdWRpb0RTUEtlcm5l
bFByb2Nlc3NvcihzYW1wbGVSYXRlLCBudW1iZXJPZkNoYW5uZWxzKQogICAgICwgbV9tYXhEZWxh
eVRpbWUobWF4RGVsYXlUaW1lKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJhdWRpby9EZWxheVByb2Nlc3Nvci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJh
dWRpby9EZWxheVByb2Nlc3Nvci5oCmluZGV4IDg1ZDljYzZkN2ZkZTE2Y2VmZDc4ZDQ3OTQyMTBk
ZGQwODIzNGRmM2YuLmNiYWM3OWVjZjBmZTMzOWNmMTJmOTNkNGRiMjVhZjA1MTUyZmNlZmQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vRGVsYXlQcm9jZXNzb3Iu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0RlbGF5UHJvY2Vzc29yLmgK
QEAgLTM2LDcgKzM2LDcgQEAgY2xhc3MgQXVkaW9EU1BLZXJuZWw7CiBjbGFzcyBEZWxheVByb2Nl
c3NvciBmaW5hbCA6IHB1YmxpYyBBdWRpb0RTUEtlcm5lbFByb2Nlc3NvciB7CiAgICAgV1RGX01B
S0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6Ci0gICAgRGVsYXlQcm9jZXNzb3IoQXVkaW9Db250
ZXh0JiwgZmxvYXQgc2FtcGxlUmF0ZSwgdW5zaWduZWQgbnVtYmVyT2ZDaGFubmVscywgZG91Ymxl
IG1heERlbGF5VGltZSk7CisgICAgRGVsYXlQcm9jZXNzb3IoQXVkaW9Db250ZXh0QmFzZSYsIGZs
b2F0IHNhbXBsZVJhdGUsIHVuc2lnbmVkIG51bWJlck9mQ2hhbm5lbHMsIGRvdWJsZSBtYXhEZWxh
eVRpbWUpOwogICAgIHZpcnR1YWwgfkRlbGF5UHJvY2Vzc29yKCk7CiAgICAgCiAgICAgc3RkOjp1
bmlxdWVfcHRyPEF1ZGlvRFNQS2VybmVsPiBjcmVhdGVLZXJuZWwoKSBvdmVycmlkZTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vRGlzdGFuY2VNb2RlbFR5cGUu
aCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vRGlzdGFuY2VNb2RlbFR5cGUuaApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi5kZmUxMzE4MmNjMGE0NGJkZDA0ODBiNzJhZmZkN2I1NTcwODUyM2RiCi0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9EaXN0YW5jZU1v
ZGVsVHlwZS5oCkBAIC0wLDAgKzEsMjcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAsIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICog
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OCisgKiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAor
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKKyAqIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisj
aW5jbHVkZSAiRGlzdGFuY2UuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViYXVkaW8vRGlzdGFuY2VNb2RlbFR5cGUuaWRsIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJhdWRpby9EaXN0YW5jZU1vZGVsVHlwZS5pZGwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjhmZmNmZWQyMmM4Zjk2
MGQwNGYzZTg1YmUzZGE1OGI3MjA3MzdmZQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViYXVkaW8vRGlzdGFuY2VNb2RlbFR5cGUuaWRsCkBAIC0wLDAgKzEsMzEg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAsIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQor
ICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTgorICogQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
CisgKiBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCitbCisgICAgQ29uZGl0aW9uYWw9V0VCX0FVRElPLAorXSBlbnVtIERp
c3RhbmNlTW9kZWxUeXBlIHsKKyAgICAibGluZWFyIiwKKyAgICAiaW52ZXJzZSIsCisgICAgImV4
cG9uZW50aWFsIgorfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVk
aW8vRHluYW1pY3NDb21wcmVzc29yTm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmF1ZGlvL0R5bmFtaWNzQ29tcHJlc3Nvck5vZGUuY3BwCmluZGV4IDE0MDk2ZDhmMGM1OTZhNTI5
NzE2NjZlZjgyNjdhMDIzZmRiNDRiMjkuLmMzM2QxZGU3MmRjOTFmZThkNzRlNzU0N2EyMzU5OWNh
MDFmYzQ4NWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vRHlu
YW1pY3NDb21wcmVzc29yTm9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJh
dWRpby9EeW5hbWljc0NvbXByZXNzb3JOb2RlLmNwcApAQCAtNDEsNyArNDEsNyBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKIFdURl9NQUtFX0lTT19BTExPQ0FURURfSU1QTChEeW5hbWljc0NvbXBy
ZXNzb3JOb2RlKTsKIAotRHluYW1pY3NDb21wcmVzc29yTm9kZTo6RHluYW1pY3NDb21wcmVzc29y
Tm9kZShBdWRpb0NvbnRleHQmIGNvbnRleHQsIGZsb2F0IHNhbXBsZVJhdGUpCitEeW5hbWljc0Nv
bXByZXNzb3JOb2RlOjpEeW5hbWljc0NvbXByZXNzb3JOb2RlKEF1ZGlvQ29udGV4dEJhc2UmIGNv
bnRleHQsIGZsb2F0IHNhbXBsZVJhdGUpCiAgICAgOiBBdWRpb05vZGUoY29udGV4dCwgc2FtcGxl
UmF0ZSkKIHsKICAgICBzZXROb2RlVHlwZShOb2RlVHlwZUR5bmFtaWNzQ29tcHJlc3Nvcik7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0R5bmFtaWNzQ29tcHJl
c3Nvck5vZGUuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vRHluYW1pY3NDb21w
cmVzc29yTm9kZS5oCmluZGV4IDQ0Y2JmYmFhMDU5NzE3ZjZjMzUwMzIyYTI4MDRlNWQ4NjNhNjY4
NTcuLmI3MDUzYjIyMTczYzAyY2EwZDI2ZWNlNjFhMThjNzdlZTA3NTJkZmUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vRHluYW1pY3NDb21wcmVzc29yTm9kZS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vRHluYW1pY3NDb21wcmVzc29y
Tm9kZS5oCkBAIC0zNSw3ICszNSw3IEBAIGNsYXNzIER5bmFtaWNzQ29tcHJlc3NvcjsKIGNsYXNz
IER5bmFtaWNzQ29tcHJlc3Nvck5vZGUgZmluYWwgOiBwdWJsaWMgQXVkaW9Ob2RlIHsKICAgICBX
VEZfTUFLRV9JU09fQUxMT0NBVEVEKER5bmFtaWNzQ29tcHJlc3Nvck5vZGUpOwogcHVibGljOgot
ICAgIHN0YXRpYyBSZWY8RHluYW1pY3NDb21wcmVzc29yTm9kZT4gY3JlYXRlKEF1ZGlvQ29udGV4
dCYgY29udGV4dCwgZmxvYXQgc2FtcGxlUmF0ZSkKKyAgICBzdGF0aWMgUmVmPER5bmFtaWNzQ29t
cHJlc3Nvck5vZGU+IGNyZWF0ZShBdWRpb0NvbnRleHRCYXNlJiBjb250ZXh0LCBmbG9hdCBzYW1w
bGVSYXRlKQogICAgIHsKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRHluYW1pY3NDb21w
cmVzc29yTm9kZShjb250ZXh0LCBzYW1wbGVSYXRlKSk7CiAgICAgfQpAQCAtNjIsNyArNjIsNyBA
QCBwcml2YXRlOgogICAgIGRvdWJsZSB0YWlsVGltZSgpIGNvbnN0IG92ZXJyaWRlOwogICAgIGRv
dWJsZSBsYXRlbmN5VGltZSgpIGNvbnN0IG92ZXJyaWRlOwogCi0gICAgRHluYW1pY3NDb21wcmVz
c29yTm9kZShBdWRpb0NvbnRleHQmLCBmbG9hdCBzYW1wbGVSYXRlKTsKKyAgICBEeW5hbWljc0Nv
bXByZXNzb3JOb2RlKEF1ZGlvQ29udGV4dEJhc2UmLCBmbG9hdCBzYW1wbGVSYXRlKTsKIAogICAg
IHN0ZDo6dW5pcXVlX3B0cjxEeW5hbWljc0NvbXByZXNzb3I+IG1fZHluYW1pY3NDb21wcmVzc29y
OwogICAgIFJlZlB0cjxBdWRpb1BhcmFtPiBtX3RocmVzaG9sZDsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vR2Fpbk5vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJhdWRpby9HYWluTm9kZS5jcHAKaW5kZXggMjU3ZGYyZWNlMjMzOGNiY2JhYjll
ZDA1MTIzM2M2NGIxYzU3ZjI1ZC4uOTg0ZDExOTRiZGQ1NTJmMzg0YjBkNmQ5YmNlYmY3ZGE0MmZk
ODY5YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9HYWluTm9k
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9HYWluTm9kZS5jcHAK
QEAgLTM3LDcgKzM3LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBXVEZfTUFLRV9JU09fQUxM
T0NBVEVEX0lNUEwoR2Fpbk5vZGUpOwogCi1HYWluTm9kZTo6R2Fpbk5vZGUoQXVkaW9Db250ZXh0
JiBjb250ZXh0LCBmbG9hdCBzYW1wbGVSYXRlKQorR2Fpbk5vZGU6OkdhaW5Ob2RlKEF1ZGlvQ29u
dGV4dEJhc2UmIGNvbnRleHQsIGZsb2F0IHNhbXBsZVJhdGUpCiAgICAgOiBBdWRpb05vZGUoY29u
dGV4dCwgc2FtcGxlUmF0ZSkKICAgICAsIG1fbGFzdEdhaW4oMS4wKQogICAgICwgbV9zYW1wbGVB
Y2N1cmF0ZUdhaW5WYWx1ZXMoQXVkaW9Ob2RlOjpQcm9jZXNzaW5nU2l6ZUluRnJhbWVzKSAvLyBG
SVhNRTogY2FuIHByb2JhYmx5IHNoYXJlIHRlbXAgYnVmZmVyIGluIGNvbnRleHQKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vR2Fpbk5vZGUuaCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vR2Fpbk5vZGUuaAppbmRleCBmYTg1YjBiOWZmNTQ3ZjMy
OWY1NjY1YjJhMDU1Nzc0YmUwZjdjYWI4Li5kY2Y4NTVhOTFjOTU3YTkwMDBiYWY4Yjk5NDM2YWU3
NzM3OWZiYjUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0dh
aW5Ob2RlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9HYWluTm9kZS5o
CkBAIC0zOCw3ICszOCw3IEBAIGNsYXNzIEF1ZGlvQ29udGV4dDsKIGNsYXNzIEdhaW5Ob2RlIGZp
bmFsIDogcHVibGljIEF1ZGlvTm9kZSB7CiAgICAgV1RGX01BS0VfSVNPX0FMTE9DQVRFRChHYWlu
Tm9kZSk7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxHYWluTm9kZT4gY3JlYXRlKEF1ZGlvQ29u
dGV4dCYgY29udGV4dCwgZmxvYXQgc2FtcGxlUmF0ZSkKKyAgICBzdGF0aWMgUmVmPEdhaW5Ob2Rl
PiBjcmVhdGUoQXVkaW9Db250ZXh0QmFzZSYgY29udGV4dCwgZmxvYXQgc2FtcGxlUmF0ZSkKICAg
ICB7CiAgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEdhaW5Ob2RlKGNvbnRleHQsIHNhbXBs
ZVJhdGUpKTsKICAgICB9CkBAIC01Nyw3ICs1Nyw3IEBAIHByaXZhdGU6CiAgICAgZG91YmxlIHRh
aWxUaW1lKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gMDsgfQogICAgIGRvdWJsZSBsYXRlbmN5
VGltZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIDA7IH0KIAotICAgIEdhaW5Ob2RlKEF1ZGlv
Q29udGV4dCYsIGZsb2F0IHNhbXBsZVJhdGUpOworICAgIEdhaW5Ob2RlKEF1ZGlvQ29udGV4dEJh
c2UmLCBmbG9hdCBzYW1wbGVSYXRlKTsKIAogICAgIGZsb2F0IG1fbGFzdEdhaW47IC8vIGZvciBk
ZS16aXBwZXJpbmcKICAgICBSZWZQdHI8QXVkaW9QYXJhbT4gbV9nYWluOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9NZWRpYUVsZW1lbnRBdWRpb1NvdXJjZU5v
ZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9NZWRpYUVsZW1lbnRBdWRp
b1NvdXJjZU5vZGUuY3BwCmluZGV4IDBlNTk4MWZhNjg2ZGI5MjEyZmZhMGY4M2U5YmRjZDAzYWY5
YWFhYzMuLmM2NzVkN2RlNzE2ODM5MmU4N2RmOWY0M2RmYTY1OTk3YjU0ZmY4ZjQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vTWVkaWFFbGVtZW50QXVkaW9Tb3Vy
Y2VOb2RlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL01lZGlhRWxl
bWVudEF1ZGlvU291cmNlTm9kZS5jcHAKQEAgLTQzLDEyICs0MywxMiBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKIFdURl9NQUtFX0lTT19BTExPQ0FURURfSU1QTChNZWRpYUVsZW1lbnRBdWRpb1Nv
dXJjZU5vZGUpOwogCi1SZWY8TWVkaWFFbGVtZW50QXVkaW9Tb3VyY2VOb2RlPiBNZWRpYUVsZW1l
bnRBdWRpb1NvdXJjZU5vZGU6OmNyZWF0ZShBdWRpb0NvbnRleHQmIGNvbnRleHQsIEhUTUxNZWRp
YUVsZW1lbnQmIG1lZGlhRWxlbWVudCkKK1JlZjxNZWRpYUVsZW1lbnRBdWRpb1NvdXJjZU5vZGU+
IE1lZGlhRWxlbWVudEF1ZGlvU291cmNlTm9kZTo6Y3JlYXRlKEF1ZGlvQ29udGV4dEJhc2UmIGNv
bnRleHQsIEhUTUxNZWRpYUVsZW1lbnQmIG1lZGlhRWxlbWVudCkKIHsKICAgICByZXR1cm4gYWRv
cHRSZWYoKm5ldyBNZWRpYUVsZW1lbnRBdWRpb1NvdXJjZU5vZGUoY29udGV4dCwgbWVkaWFFbGVt
ZW50KSk7CiB9CiAKLU1lZGlhRWxlbWVudEF1ZGlvU291cmNlTm9kZTo6TWVkaWFFbGVtZW50QXVk
aW9Tb3VyY2VOb2RlKEF1ZGlvQ29udGV4dCYgY29udGV4dCwgSFRNTE1lZGlhRWxlbWVudCYgbWVk
aWFFbGVtZW50KQorTWVkaWFFbGVtZW50QXVkaW9Tb3VyY2VOb2RlOjpNZWRpYUVsZW1lbnRBdWRp
b1NvdXJjZU5vZGUoQXVkaW9Db250ZXh0QmFzZSYgY29udGV4dCwgSFRNTE1lZGlhRWxlbWVudCYg
bWVkaWFFbGVtZW50KQogICAgIDogQXVkaW9Ob2RlKGNvbnRleHQsIGNvbnRleHQuc2FtcGxlUmF0
ZSgpKQogICAgICwgbV9tZWRpYUVsZW1lbnQobWVkaWFFbGVtZW50KQogICAgICwgbV9zb3VyY2VO
dW1iZXJPZkNoYW5uZWxzKDApCkBAIC05Nyw3ICs5Nyw3IEBAIHZvaWQgTWVkaWFFbGVtZW50QXVk
aW9Tb3VyY2VOb2RlOjpzZXRGb3JtYXQoc2l6ZV90IG51bWJlck9mQ2hhbm5lbHMsIGZsb2F0IHNv
dXJjCiAKICAgICAgICAgewogICAgICAgICAgICAgLy8gVGhlIGNvbnRleHQgbXVzdCBiZSBsb2Nr
ZWQgd2hlbiBjaGFuZ2luZyB0aGUgbnVtYmVyIG9mIG91dHB1dCBjaGFubmVscy4KLSAgICAgICAg
ICAgIEF1ZGlvQ29udGV4dDo6QXV0b0xvY2tlciBjb250ZXh0TG9ja2VyKGNvbnRleHQoKSk7Cisg
ICAgICAgICAgICBBdWRpb0NvbnRleHRCYXNlOjpBdXRvTG9ja2VyIGNvbnRleHRMb2NrZXIoY29u
dGV4dCgpKTsKIAogICAgICAgICAgICAgLy8gRG8gYW55IG5lY2Vzc3NhcnkgcmUtY29uZmlndXJh
dGlvbiB0byB0aGUgb3V0cHV0J3MgbnVtYmVyIG9mIGNoYW5uZWxzLgogICAgICAgICAgICAgb3V0
cHV0KDApLT5zZXROdW1iZXJPZkNoYW5uZWxzKG51bWJlck9mQ2hhbm5lbHMpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9NZWRpYUVsZW1lbnRBdWRpb1NvdXJj
ZU5vZGUuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vTWVkaWFFbGVtZW50QXVk
aW9Tb3VyY2VOb2RlLmgKaW5kZXggM2ExMzE1NDE1ZjE4ZjliMzRhZGNlNDI0ZjI2YzI2MTJkM2M0
OGY1OS4uNzFkMGVkMTM4YTVmOWZkMzczMDUwMjA1NDFlZDVkNDdjM2FlYzBjYyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9NZWRpYUVsZW1lbnRBdWRpb1NvdXJj
ZU5vZGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL01lZGlhRWxlbWVu
dEF1ZGlvU291cmNlTm9kZS5oCkBAIC00MCw3ICs0MCw3IEBAIGNsYXNzIEF1ZGlvQ29udGV4dDsK
IGNsYXNzIE1lZGlhRWxlbWVudEF1ZGlvU291cmNlTm9kZSBmaW5hbCA6IHB1YmxpYyBBdWRpb05v
ZGUsIHB1YmxpYyBBdWRpb1NvdXJjZVByb3ZpZGVyQ2xpZW50IHsKICAgICBXVEZfTUFLRV9JU09f
QUxMT0NBVEVEKE1lZGlhRWxlbWVudEF1ZGlvU291cmNlTm9kZSk7CiBwdWJsaWM6Ci0gICAgc3Rh
dGljIFJlZjxNZWRpYUVsZW1lbnRBdWRpb1NvdXJjZU5vZGU+IGNyZWF0ZShBdWRpb0NvbnRleHQm
LCBIVE1MTWVkaWFFbGVtZW50Jik7CisgICAgc3RhdGljIFJlZjxNZWRpYUVsZW1lbnRBdWRpb1Nv
dXJjZU5vZGU+IGNyZWF0ZShBdWRpb0NvbnRleHRCYXNlJiwgSFRNTE1lZGlhRWxlbWVudCYpOwog
CiAgICAgdmlydHVhbCB+TWVkaWFFbGVtZW50QXVkaW9Tb3VyY2VOb2RlKCk7CiAKQEAgLTU3LDcg
KzU3LDcgQEAgcHVibGljOgogICAgIHZvaWQgdW5sb2NrKCk7CiAKIHByaXZhdGU6Ci0gICAgTWVk
aWFFbGVtZW50QXVkaW9Tb3VyY2VOb2RlKEF1ZGlvQ29udGV4dCYsIEhUTUxNZWRpYUVsZW1lbnQm
KTsKKyAgICBNZWRpYUVsZW1lbnRBdWRpb1NvdXJjZU5vZGUoQXVkaW9Db250ZXh0QmFzZSYsIEhU
TUxNZWRpYUVsZW1lbnQmKTsKIAogICAgIGRvdWJsZSB0YWlsVGltZSgpIGNvbnN0IG92ZXJyaWRl
IHsgcmV0dXJuIDA7IH0KICAgICBkb3VibGUgbGF0ZW5jeVRpbWUoKSBjb25zdCBvdmVycmlkZSB7
IHJldHVybiAwOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlv
L01lZGlhU3RyZWFtQXVkaW9EZXN0aW5hdGlvbk5vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJhdWRpby9NZWRpYVN0cmVhbUF1ZGlvRGVzdGluYXRpb25Ob2RlLmNwcAppbmRleCBk
NzY2MjkzMDMwOGE3NDZhNDZhZTAwODY4YTVkNjM0MWI4MmZmNzNiLi4zMGYxYTIyMmJlMjMwMGUx
MmRhZTc2NmJkZWU0MmIwYmIxY2YxZTg5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmF1ZGlvL01lZGlhU3RyZWFtQXVkaW9EZXN0aW5hdGlvbk5vZGUuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vTWVkaWFTdHJlYW1BdWRpb0Rlc3RpbmF0aW9u
Tm9kZS5jcHAKQEAgLTM5LDEyICszOSwxMiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFdURl9N
QUtFX0lTT19BTExPQ0FURURfSU1QTChNZWRpYVN0cmVhbUF1ZGlvRGVzdGluYXRpb25Ob2RlKTsK
IAotUmVmPE1lZGlhU3RyZWFtQXVkaW9EZXN0aW5hdGlvbk5vZGU+IE1lZGlhU3RyZWFtQXVkaW9E
ZXN0aW5hdGlvbk5vZGU6OmNyZWF0ZShBdWRpb0NvbnRleHQmIGNvbnRleHQsIHNpemVfdCBudW1i
ZXJPZkNoYW5uZWxzKQorUmVmPE1lZGlhU3RyZWFtQXVkaW9EZXN0aW5hdGlvbk5vZGU+IE1lZGlh
U3RyZWFtQXVkaW9EZXN0aW5hdGlvbk5vZGU6OmNyZWF0ZShBdWRpb0NvbnRleHRCYXNlJiBjb250
ZXh0LCBzaXplX3QgbnVtYmVyT2ZDaGFubmVscykKIHsKICAgICByZXR1cm4gYWRvcHRSZWYoKm5l
dyBNZWRpYVN0cmVhbUF1ZGlvRGVzdGluYXRpb25Ob2RlKGNvbnRleHQsIG51bWJlck9mQ2hhbm5l
bHMpKTsKIH0KIAotTWVkaWFTdHJlYW1BdWRpb0Rlc3RpbmF0aW9uTm9kZTo6TWVkaWFTdHJlYW1B
dWRpb0Rlc3RpbmF0aW9uTm9kZShBdWRpb0NvbnRleHQmIGNvbnRleHQsIHNpemVfdCBudW1iZXJP
ZkNoYW5uZWxzKQorTWVkaWFTdHJlYW1BdWRpb0Rlc3RpbmF0aW9uTm9kZTo6TWVkaWFTdHJlYW1B
dWRpb0Rlc3RpbmF0aW9uTm9kZShBdWRpb0NvbnRleHRCYXNlJiBjb250ZXh0LCBzaXplX3QgbnVt
YmVyT2ZDaGFubmVscykKICAgICA6IEF1ZGlvQmFzaWNJbnNwZWN0b3JOb2RlKGNvbnRleHQsIGNv
bnRleHQuc2FtcGxlUmF0ZSgpLCBudW1iZXJPZkNoYW5uZWxzKQogICAgICwgbV9zb3VyY2UoTWVk
aWFTdHJlYW1BdWRpb1NvdXJjZTo6Y3JlYXRlKGNvbnRleHQuc2FtcGxlUmF0ZSgpKSkKICAgICAs
IG1fc3RyZWFtKE1lZGlhU3RyZWFtOjpjcmVhdGUoKmNvbnRleHQuZG9jdW1lbnQoKSwgTWVkaWFT
dHJlYW1Qcml2YXRlOjpjcmVhdGUoY29udGV4dC5kb2N1bWVudCgpLT5sb2dnZXIoKSwgbV9zb3Vy
Y2UuY29weVJlZigpKSkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1
ZGlvL01lZGlhU3RyZWFtQXVkaW9EZXN0aW5hdGlvbk5vZGUuaCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViYXVkaW8vTWVkaWFTdHJlYW1BdWRpb0Rlc3RpbmF0aW9uTm9kZS5oCmluZGV4IGY1
YTdlOGZlYzRhOTAyYzkwYmRjZjljNWM3YjQ2N2M5ODBmOTdlM2EuLmRiYWQ5MjhkNzk2YTJkOGY0
MTBmNDM2ZmJlMzNlZjcyYWE4NDE3M2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViYXVkaW8vTWVkaWFTdHJlYW1BdWRpb0Rlc3RpbmF0aW9uTm9kZS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vTWVkaWFTdHJlYW1BdWRpb0Rlc3RpbmF0aW9uTm9k
ZS5oCkBAIC0zMiwxMyArMzIsMTMgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBB
dWRpb0NvbnRleHQ7CitjbGFzcyBBdWRpb0NvbnRleHRCYXNlOwogY2xhc3MgTWVkaWFTdHJlYW1B
dWRpb1NvdXJjZTsKIAogY2xhc3MgTWVkaWFTdHJlYW1BdWRpb0Rlc3RpbmF0aW9uTm9kZSBmaW5h
bCA6IHB1YmxpYyBBdWRpb0Jhc2ljSW5zcGVjdG9yTm9kZSB7CiAgICAgV1RGX01BS0VfSVNPX0FM
TE9DQVRFRChNZWRpYVN0cmVhbUF1ZGlvRGVzdGluYXRpb25Ob2RlKTsKIHB1YmxpYzoKLSAgICBz
dGF0aWMgUmVmPE1lZGlhU3RyZWFtQXVkaW9EZXN0aW5hdGlvbk5vZGU+IGNyZWF0ZShBdWRpb0Nv
bnRleHQmLCBzaXplX3QgbnVtYmVyT2ZDaGFubmVscyk7CisgICAgc3RhdGljIFJlZjxNZWRpYVN0
cmVhbUF1ZGlvRGVzdGluYXRpb25Ob2RlPiBjcmVhdGUoQXVkaW9Db250ZXh0QmFzZSYsIHNpemVf
dCBudW1iZXJPZkNoYW5uZWxzKTsKIAogICAgIHZpcnR1YWwgfk1lZGlhU3RyZWFtQXVkaW9EZXN0
aW5hdGlvbk5vZGUoKTsKIApAQCAtNDksNyArNDksNyBAQCBwdWJsaWM6CiAgICAgdm9pZCByZXNl
dCgpIGZpbmFsOwogICAgIAogcHJpdmF0ZToKLSAgICBNZWRpYVN0cmVhbUF1ZGlvRGVzdGluYXRp
b25Ob2RlKEF1ZGlvQ29udGV4dCYsIHNpemVfdCBudW1iZXJPZkNoYW5uZWxzKTsKKyAgICBNZWRp
YVN0cmVhbUF1ZGlvRGVzdGluYXRpb25Ob2RlKEF1ZGlvQ29udGV4dEJhc2UmLCBzaXplX3QgbnVt
YmVyT2ZDaGFubmVscyk7CiAKICAgICBkb3VibGUgdGFpbFRpbWUoKSBjb25zdCBmaW5hbCB7IHJl
dHVybiAwOyB9CiAgICAgZG91YmxlIGxhdGVuY3lUaW1lKCkgY29uc3QgZmluYWwgeyByZXR1cm4g
MDsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9NZWRpYVN0
cmVhbUF1ZGlvU291cmNlTm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlv
L01lZGlhU3RyZWFtQXVkaW9Tb3VyY2VOb2RlLmNwcAppbmRleCAxYjRmYjZkMTkyMmFkMWM0YjA0
MWNiOTEyOWM1NWMxMzg3MDdmN2NlLi4zNWU1NWE5MjAyYzNmMzA1NWJmMTg3YmFhNmY2NmZiNmJk
NTFmNjkwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL01lZGlh
U3RyZWFtQXVkaW9Tb3VyY2VOb2RlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmF1ZGlvL01lZGlhU3RyZWFtQXVkaW9Tb3VyY2VOb2RlLmNwcApAQCAtMzgsMTIgKzM4LDEyIEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogV1RGX01BS0VfSVNPX0FMTE9DQVRFRF9JTVBMKE1lZGlh
U3RyZWFtQXVkaW9Tb3VyY2VOb2RlKTsKIAotUmVmPE1lZGlhU3RyZWFtQXVkaW9Tb3VyY2VOb2Rl
PiBNZWRpYVN0cmVhbUF1ZGlvU291cmNlTm9kZTo6Y3JlYXRlKEF1ZGlvQ29udGV4dCYgY29udGV4
dCwgTWVkaWFTdHJlYW0mIG1lZGlhU3RyZWFtLCBNZWRpYVN0cmVhbVRyYWNrJiBhdWRpb1RyYWNr
KQorUmVmPE1lZGlhU3RyZWFtQXVkaW9Tb3VyY2VOb2RlPiBNZWRpYVN0cmVhbUF1ZGlvU291cmNl
Tm9kZTo6Y3JlYXRlKEF1ZGlvQ29udGV4dEJhc2UmIGNvbnRleHQsIE1lZGlhU3RyZWFtJiBtZWRp
YVN0cmVhbSwgTWVkaWFTdHJlYW1UcmFjayYgYXVkaW9UcmFjaykKIHsKICAgICByZXR1cm4gYWRv
cHRSZWYoKm5ldyBNZWRpYVN0cmVhbUF1ZGlvU291cmNlTm9kZShjb250ZXh0LCBtZWRpYVN0cmVh
bSwgYXVkaW9UcmFjaykpOwogfQogCi1NZWRpYVN0cmVhbUF1ZGlvU291cmNlTm9kZTo6TWVkaWFT
dHJlYW1BdWRpb1NvdXJjZU5vZGUoQXVkaW9Db250ZXh0JiBjb250ZXh0LCBNZWRpYVN0cmVhbSYg
bWVkaWFTdHJlYW0sIE1lZGlhU3RyZWFtVHJhY2smIGF1ZGlvVHJhY2spCitNZWRpYVN0cmVhbUF1
ZGlvU291cmNlTm9kZTo6TWVkaWFTdHJlYW1BdWRpb1NvdXJjZU5vZGUoQXVkaW9Db250ZXh0QmFz
ZSYgY29udGV4dCwgTWVkaWFTdHJlYW0mIG1lZGlhU3RyZWFtLCBNZWRpYVN0cmVhbVRyYWNrJiBh
dWRpb1RyYWNrKQogICAgIDogQXVkaW9Ob2RlKGNvbnRleHQsIGNvbnRleHQuc2FtcGxlUmF0ZSgp
KQogICAgICwgbV9tZWRpYVN0cmVhbShtZWRpYVN0cmVhbSkKICAgICAsIG1fYXVkaW9UcmFjayhh
dWRpb1RyYWNrKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9N
ZWRpYVN0cmVhbUF1ZGlvU291cmNlTm9kZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJh
dWRpby9NZWRpYVN0cmVhbUF1ZGlvU291cmNlTm9kZS5oCmluZGV4IGUzZWRlZmUxYmQ1NzAyYTcz
YTIyZjRhODM5ZDIzY2ZjMTljMjlhMDUuLmM3MmQzMTIyMzNkNTA2ZGQ1NGNlMjcwZmM5MjI3YjU0
NTc1ZWUyZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vTWVk
aWFTdHJlYW1BdWRpb1NvdXJjZU5vZGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmF1ZGlvL01lZGlhU3RyZWFtQXVkaW9Tb3VyY2VOb2RlLmgKQEAgLTQwLDcgKzQwLDcgQEAgY2xh
c3MgTXVsdGlDaGFubmVsUmVzYW1wbGVyOwogY2xhc3MgTWVkaWFTdHJlYW1BdWRpb1NvdXJjZU5v
ZGUgZmluYWwgOiBwdWJsaWMgQXVkaW9Ob2RlLCBwdWJsaWMgQXVkaW9Tb3VyY2VQcm92aWRlckNs
aWVudCB7CiAgICAgV1RGX01BS0VfSVNPX0FMTE9DQVRFRChNZWRpYVN0cmVhbUF1ZGlvU291cmNl
Tm9kZSk7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxNZWRpYVN0cmVhbUF1ZGlvU291cmNlTm9k
ZT4gY3JlYXRlKEF1ZGlvQ29udGV4dCYsIE1lZGlhU3RyZWFtJiwgTWVkaWFTdHJlYW1UcmFjayYp
OworICAgIHN0YXRpYyBSZWY8TWVkaWFTdHJlYW1BdWRpb1NvdXJjZU5vZGU+IGNyZWF0ZShBdWRp
b0NvbnRleHRCYXNlJiwgTWVkaWFTdHJlYW0mLCBNZWRpYVN0cmVhbVRyYWNrJik7CiAKICAgICB2
aXJ0dWFsIH5NZWRpYVN0cmVhbUF1ZGlvU291cmNlTm9kZSgpOwogCkBAIC01NCw3ICs1NCw3IEBA
IHB1YmxpYzoKICAgICB2b2lkIHNldEZvcm1hdChzaXplX3QgbnVtYmVyT2ZDaGFubmVscywgZmxv
YXQgc2FtcGxlUmF0ZSkgb3ZlcnJpZGU7CiAKIHByaXZhdGU6Ci0gICAgTWVkaWFTdHJlYW1BdWRp
b1NvdXJjZU5vZGUoQXVkaW9Db250ZXh0JiwgTWVkaWFTdHJlYW0mLCBNZWRpYVN0cmVhbVRyYWNr
Jik7CisgICAgTWVkaWFTdHJlYW1BdWRpb1NvdXJjZU5vZGUoQXVkaW9Db250ZXh0QmFzZSYsIE1l
ZGlhU3RyZWFtJiwgTWVkaWFTdHJlYW1UcmFjayYpOwogCiAgICAgZG91YmxlIHRhaWxUaW1lKCkg
Y29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gMDsgfQogICAgIGRvdWJsZSBsYXRlbmN5VGltZSgpIGNv
bnN0IG92ZXJyaWRlIHsgcmV0dXJuIDA7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViYXVkaW8vT2ZmbGluZUF1ZGlvQ29udGV4dC5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmF1ZGlvL09mZmxpbmVBdWRpb0NvbnRleHQuaWRsCmluZGV4IGY2ZWNiMWE2ODU4
MWNjOTQ2Njc5ZDkyNGY4ZTNlMTU0ZDAzNDNhYzYuLjBlNzFhMDZiYzNmYTJmOGU4NjI5OWYzYzI0
NTg3ZTZjYmE5YzQxMTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVk
aW8vT2ZmbGluZUF1ZGlvQ29udGV4dC5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJhdWRpby9PZmZsaW5lQXVkaW9Db250ZXh0LmlkbApAQCAtMjQsOCArMjQsOCBAQAogCiBbCiAg
ICAgQ29uZGl0aW9uYWw9V0VCX0FVRElPLAorICAgIEVuYWJsZWRCeVNldHRpbmc9TW9kZXJuVW5w
cmVmaXhlZFdlYkF1ZGlvLAogICAgIEpTR2VuZXJhdGVUb0pTT2JqZWN0LAotICAgIEludGVyZmFj
ZU5hbWU9d2Via2l0T2ZmbGluZUF1ZGlvQ29udGV4dAogXSBpbnRlcmZhY2UgT2ZmbGluZUF1ZGlv
Q29udGV4dCA6IEF1ZGlvQ29udGV4dCB7CiAgICAgW0NhbGxXaXRoPVNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQsIE1heVRocm93RXhjZXB0aW9uXSBjb25zdHJ1Y3Rvcih1bnNpZ25lZCBsb25nIG51bWJl
ck9mQ2hhbm5lbHMsIHVuc2lnbmVkIGxvbmcgbnVtYmVyT2ZGcmFtZXMsIHVucmVzdHJpY3RlZCBm
bG9hdCBzYW1wbGVSYXRlKTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmF1ZGlvL09mZmxpbmVBdWRpb0Rlc3RpbmF0aW9uTm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmF1ZGlvL09mZmxpbmVBdWRpb0Rlc3RpbmF0aW9uTm9kZS5jcHAKaW5kZXgg
NmExOTU1NDZjZjcxMzk0ZmU1YzQxNGI3NjViNmM5N2UwNWVkYzA0OS4uZmVjNTA4Y2JmZjFjNzFk
MzNiYzRiMTNlYTk4MmY5MmZjMGFmYjk5YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJhdWRpby9PZmZsaW5lQXVkaW9EZXN0aW5hdGlvbk5vZGUuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vT2ZmbGluZUF1ZGlvRGVzdGluYXRpb25Ob2RlLmNw
cApAQCAtNDEsNyArNDEsNyBAQCBXVEZfTUFLRV9JU09fQUxMT0NBVEVEX0lNUEwoT2ZmbGluZUF1
ZGlvRGVzdGluYXRpb25Ob2RlKTsKICAgICAKIGNvbnN0IHNpemVfdCByZW5kZXJRdWFudHVtU2l6
ZSA9IDEyODsgICAgCiAKLU9mZmxpbmVBdWRpb0Rlc3RpbmF0aW9uTm9kZTo6T2ZmbGluZUF1ZGlv
RGVzdGluYXRpb25Ob2RlKEF1ZGlvQ29udGV4dCYgY29udGV4dCwgQXVkaW9CdWZmZXIqIHJlbmRl
clRhcmdldCkKK09mZmxpbmVBdWRpb0Rlc3RpbmF0aW9uTm9kZTo6T2ZmbGluZUF1ZGlvRGVzdGlu
YXRpb25Ob2RlKEF1ZGlvQ29udGV4dEJhc2UmIGNvbnRleHQsIEF1ZGlvQnVmZmVyKiByZW5kZXJU
YXJnZXQpCiAgICAgOiBBdWRpb0Rlc3RpbmF0aW9uTm9kZShjb250ZXh0LCByZW5kZXJUYXJnZXQt
PnNhbXBsZVJhdGUoKSkKICAgICAsIG1fcmVuZGVyVGFyZ2V0KHJlbmRlclRhcmdldCkKICAgICAs
IG1fc3RhcnRlZFJlbmRlcmluZyhmYWxzZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViYXVkaW8vT2ZmbGluZUF1ZGlvRGVzdGluYXRpb25Ob2RlLmggYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmF1ZGlvL09mZmxpbmVBdWRpb0Rlc3RpbmF0aW9uTm9kZS5oCmluZGV4
IGRhMjQ5NTc0ZDQ4NGZmODEyYWE0OTM3YWMzYTE2NWVlOTU4Mjg0Y2MuLmY4NzEwZmRlMTBkZmZm
ZTQ5MDIzNGYxOTM2YmQ1OGJhYTNjYjJlOTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViYXVkaW8vT2ZmbGluZUF1ZGlvRGVzdGluYXRpb25Ob2RlLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9PZmZsaW5lQXVkaW9EZXN0aW5hdGlvbk5vZGUuaApA
QCAtMzcsOSArMzcsOSBAQCBjbGFzcyBBdWRpb0NvbnRleHQ7CiBjbGFzcyBPZmZsaW5lQXVkaW9E
ZXN0aW5hdGlvbk5vZGUgZmluYWwgOiBwdWJsaWMgQXVkaW9EZXN0aW5hdGlvbk5vZGUgewogICAg
IFdURl9NQUtFX0lTT19BTExPQ0FURUQoT2ZmbGluZUF1ZGlvRGVzdGluYXRpb25Ob2RlKTsKIHB1
YmxpYzoKLSAgICBzdGF0aWMgUmVmPE9mZmxpbmVBdWRpb0Rlc3RpbmF0aW9uTm9kZT4gY3JlYXRl
KEF1ZGlvQ29udGV4dCYgY29udGV4dCwgQXVkaW9CdWZmZXIqIHJlbmRlclRhcmdldCkKKyAgICBz
dGF0aWMgUmVmPE9mZmxpbmVBdWRpb0Rlc3RpbmF0aW9uTm9kZT4gY3JlYXRlKEF1ZGlvQ29udGV4
dEJhc2UmIGNvbnRleHQsIEF1ZGlvQnVmZmVyKiByZW5kZXJUYXJnZXQpCiAgICAgewotICAgICAg
ICByZXR1cm4gYWRvcHRSZWYoKm5ldyBPZmZsaW5lQXVkaW9EZXN0aW5hdGlvbk5vZGUoY29udGV4
dCwgcmVuZGVyVGFyZ2V0KSk7ICAgICAKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgT2Zm
bGluZUF1ZGlvRGVzdGluYXRpb25Ob2RlKGNvbnRleHQsIHJlbmRlclRhcmdldCkpOwogICAgIH0K
IAogICAgIHZpcnR1YWwgfk9mZmxpbmVBdWRpb0Rlc3RpbmF0aW9uTm9kZSgpOwpAQCAtNTUsNyAr
NTUsNyBAQCBwdWJsaWM6CiAgICAgZmxvYXQgc2FtcGxlUmF0ZSgpIGNvbnN0IG92ZXJyaWRlIHsg
cmV0dXJuIG1fcmVuZGVyVGFyZ2V0LT5zYW1wbGVSYXRlKCk7IH0KIAogcHJpdmF0ZToKLSAgICBP
ZmZsaW5lQXVkaW9EZXN0aW5hdGlvbk5vZGUoQXVkaW9Db250ZXh0JiwgQXVkaW9CdWZmZXIqIHJl
bmRlclRhcmdldCk7CisgICAgT2ZmbGluZUF1ZGlvRGVzdGluYXRpb25Ob2RlKEF1ZGlvQ29udGV4
dEJhc2UmLCBBdWRpb0J1ZmZlciogcmVuZGVyVGFyZ2V0KTsKIAogICAgIC8vIFRoaXMgQXVkaW9O
b2RlIHJlbmRlcnMgaW50byB0aGlzIEF1ZGlvQnVmZmVyLgogICAgIFJlZlB0cjxBdWRpb0J1ZmZl
cj4gbV9yZW5kZXJUYXJnZXQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmF1ZGlvL09zY2lsbGF0b3JOb2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVk
aW8vT3NjaWxsYXRvck5vZGUuY3BwCmluZGV4IDk1NjAwNTNhNDgwNWI5ZDRiZjU1OTllNzNhMTlh
ODFlMjViMGM5NmYuLmU4ZjMxYzcyMjBlNTA2NTY4ZTNhY2YwNThmNmNhYjQ3M2IwOTFlZDcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vT3NjaWxsYXRvck5vZGUu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vT3NjaWxsYXRvck5vZGUu
Y3BwCkBAIC00NSwxMiArNDUsMTIgQEAgUGVyaW9kaWNXYXZlKiBPc2NpbGxhdG9yTm9kZTo6c19w
ZXJpb2RpY1dhdmVTcXVhcmUgPSBudWxscHRyOwogUGVyaW9kaWNXYXZlKiBPc2NpbGxhdG9yTm9k
ZTo6c19wZXJpb2RpY1dhdmVTYXd0b290aCA9IG51bGxwdHI7CiBQZXJpb2RpY1dhdmUqIE9zY2ls
bGF0b3JOb2RlOjpzX3BlcmlvZGljV2F2ZVRyaWFuZ2xlID0gbnVsbHB0cjsKIAotUmVmPE9zY2ls
bGF0b3JOb2RlPiBPc2NpbGxhdG9yTm9kZTo6Y3JlYXRlKEF1ZGlvQ29udGV4dCYgY29udGV4dCwg
ZmxvYXQgc2FtcGxlUmF0ZSkKK1JlZjxPc2NpbGxhdG9yTm9kZT4gT3NjaWxsYXRvck5vZGU6OmNy
ZWF0ZShBdWRpb0NvbnRleHRCYXNlJiBjb250ZXh0LCBmbG9hdCBzYW1wbGVSYXRlKQogewogICAg
IHJldHVybiBhZG9wdFJlZigqbmV3IE9zY2lsbGF0b3JOb2RlKGNvbnRleHQsIHNhbXBsZVJhdGUp
KTsKIH0KIAotT3NjaWxsYXRvck5vZGU6Ok9zY2lsbGF0b3JOb2RlKEF1ZGlvQ29udGV4dCYgY29u
dGV4dCwgZmxvYXQgc2FtcGxlUmF0ZSkKK09zY2lsbGF0b3JOb2RlOjpPc2NpbGxhdG9yTm9kZShB
dWRpb0NvbnRleHRCYXNlJiBjb250ZXh0LCBmbG9hdCBzYW1wbGVSYXRlKQogICAgIDogQXVkaW9T
Y2hlZHVsZWRTb3VyY2VOb2RlKGNvbnRleHQsIHNhbXBsZVJhdGUpCiAgICAgLCBtX2ZpcnN0UmVu
ZGVyKHRydWUpCiAgICAgLCBtX3ZpcnR1YWxSZWFkSW5kZXgoMCkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vT3NjaWxsYXRvck5vZGUuaCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViYXVkaW8vT3NjaWxsYXRvck5vZGUuaAppbmRleCA0MmZmMGMxOTI0YjYy
ZWQwY2YwMDE3ZmZiOTdkZTYwMzI2YzczOTIyLi4wODk1YmNlM2RkZGY1OWQ2OWM1YzZhZjljZmQy
YjljZmJlOWViNGE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlv
L09zY2lsbGF0b3JOb2RlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9P
c2NpbGxhdG9yTm9kZS5oCkBAIC00NSw3ICs0NSw3IEBAIHB1YmxpYzoKICAgICAgICAgQ3VzdG9t
CiAgICAgfTsKIAotICAgIHN0YXRpYyBSZWY8T3NjaWxsYXRvck5vZGU+IGNyZWF0ZShBdWRpb0Nv
bnRleHQmLCBmbG9hdCBzYW1wbGVSYXRlKTsKKyAgICBzdGF0aWMgUmVmPE9zY2lsbGF0b3JOb2Rl
PiBjcmVhdGUoQXVkaW9Db250ZXh0QmFzZSYsIGZsb2F0IHNhbXBsZVJhdGUpOwogCiAgICAgdmly
dHVhbCB+T3NjaWxsYXRvck5vZGUoKTsKIApAQCAtNjAsNyArNjAsNyBAQCBwdWJsaWM6CiAgICAg
dm9pZCBzZXRQZXJpb2RpY1dhdmUoUGVyaW9kaWNXYXZlKik7CiAKIHByaXZhdGU6Ci0gICAgT3Nj
aWxsYXRvck5vZGUoQXVkaW9Db250ZXh0JiwgZmxvYXQgc2FtcGxlUmF0ZSk7CisgICAgT3NjaWxs
YXRvck5vZGUoQXVkaW9Db250ZXh0QmFzZSYsIGZsb2F0IHNhbXBsZVJhdGUpOwogCiAgICAgdm9p
ZCBwcm9jZXNzKHNpemVfdCBmcmFtZXNUb1Byb2Nlc3MpIGZpbmFsOwogICAgIHZvaWQgcmVzZXQo
KSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vUGFu
bmVyTm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1Bhbm5lck5vZGUu
Y3BwCmluZGV4IGVjODBlNjlkMmFiODcxMDI4YmM2YTZlNDQ3ZWFiZDE5ZTlmY2M3MjEuLmFlNDJm
MTE0YmJjMzkwNGRiN2MyY2MxNTZkMGIyY2JlNDIwMDY5OGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vUGFubmVyTm9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJhdWRpby9QYW5uZXJOb2RlLmNwcApAQCAtNDgsOCArNDgsMTMgQEAgc3Rh
dGljIHZvaWQgZml4TkFOcyhkb3VibGUgJngpCiAgICAgICAgIHggPSAwLjA7CiB9CiAKLVBhbm5l
ck5vZGU6OlBhbm5lck5vZGUoQXVkaW9Db250ZXh0JiBjb250ZXh0LCBmbG9hdCBzYW1wbGVSYXRl
KQorUGFubmVyTm9kZUJhc2U6OlBhbm5lck5vZGVCYXNlKEF1ZGlvQ29udGV4dEJhc2UmIGNvbnRl
eHQsIGZsb2F0IHNhbXBsZVJhdGUpCiAgICAgOiBBdWRpb05vZGUoY29udGV4dCwgc2FtcGxlUmF0
ZSkKK3sKK30KKworUGFubmVyTm9kZTo6UGFubmVyTm9kZShBdWRpb0NvbnRleHQmIGNvbnRleHQs
IGZsb2F0IHNhbXBsZVJhdGUpCisgICAgOiBQYW5uZXJOb2RlQmFzZShjb250ZXh0LCBzYW1wbGVS
YXRlKQogICAgICwgbV9wYW5uaW5nTW9kZWwoUGFubmluZ01vZGVsVHlwZTo6SFJURikKICAgICAs
IG1fbGFzdEdhaW4oLTEuMCkKICAgICAsIG1fcG9zaXRpb25YKEF1ZGlvUGFyYW06OmNyZWF0ZShj
b250ZXh0LCAicG9zaXRpb25YIl9zLCAwLCAtRkxUX01BWCwgRkxUX01BWCkpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1Bhbm5lck5vZGUuaCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vUGFubmVyTm9kZS5oCmluZGV4IDg0ODBjMjMzMjgwMGRj
ZjQ4ODUxNThkNjk0NTkyZGQ5ZWU1MjkyYjYuLjI5YjY0OGQwNjA3NjI5Mzg3YTFiMGMwNzAzN2M1
MGMyMmNmMDEwNTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8v
UGFubmVyTm9kZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vUGFubmVy
Tm9kZS5oCkBAIC0yNiw2ICsyNiw3IEBACiAKICNpZiBFTkFCTEUoV0VCX0FVRElPKQogCisjaW5j
bHVkZSAiQXVkaW9Db250ZXh0LmgiCiAjaW5jbHVkZSAiQXVkaW9MaXN0ZW5lci5oIgogI2luY2x1
ZGUgIkF1ZGlvTm9kZS5oIgogI2luY2x1ZGUgIkF1ZGlvUGFyYW0uaCIKQEAgLTQxLDYgKzQyLDE2
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgSFJURkRhdGFiYXNlTG9hZGVyOwogCitj
bGFzcyBQYW5uZXJOb2RlQmFzZSA6IHB1YmxpYyBBdWRpb05vZGUgeworcHVibGljOgorICAgIHZp
cnR1YWwgflBhbm5lck5vZGVCYXNlKCkgPSBkZWZhdWx0OworCisgICAgdmlydHVhbCBmbG9hdCBk
b3BwbGVyUmF0ZSgpID0gMDsKKworcHJvdGVjdGVkOgorICAgIFBhbm5lck5vZGVCYXNlKEF1ZGlv
Q29udGV4dEJhc2UmLCBmbG9hdCBzYW1wbGVSYXRlKTsKK307CisKIC8vIFBhbm5lck5vZGUgaXMg
YW4gQXVkaW9Ob2RlIHdpdGggb25lIGlucHV0IGFuZCBvbmUgb3V0cHV0LgogLy8gSXQgcG9zaXRp
b25zIGEgc291bmQgaW4gM0Qgc3BhY2UsIHdpdGggdGhlIGV4YWN0IGVmZmVjdCBkZXBlbmRlbnQg
b24gdGhlIHBhbm5pbmcgbW9kZWwuCiAvLyBJdCBoYXMgYSBwb3NpdGlvbiBhbmQgYW4gb3JpZW50
YXRpb24gaW4gM0Qgc3BhY2Ugd2hpY2ggaXMgcmVsYXRpdmUgdG8gdGhlIHBvc2l0aW9uIGFuZCBv
cmllbnRhdGlvbiBvZiB0aGUgY29udGV4dCdzIEF1ZGlvTGlzdGVuZXIuCkBAIC00OCw3ICs1OSw3
IEBAIGNsYXNzIEhSVEZEYXRhYmFzZUxvYWRlcjsKIC8vIEEgY29uZSBlZmZlY3Qgd2lsbCBhdHRl
bnVhdGUgdGhlIGdhaW4gYXMgdGhlIG9yaWVudGF0aW9uIG1vdmVzIGF3YXkgZnJvbSB0aGUgbGlz
dGVuZXIuCiAvLyBBbGwgb2YgdGhlc2UgZWZmZWN0cyBmb2xsb3cgdGhlIE9wZW5BTCBzcGVjaWZp
Y2F0aW9uIHZlcnkgY2xvc2VseS4KIAotY2xhc3MgUGFubmVyTm9kZSBmaW5hbCA6IHB1YmxpYyBB
dWRpb05vZGUgeworY2xhc3MgUGFubmVyTm9kZSBmaW5hbCA6IHB1YmxpYyBQYW5uZXJOb2RlQmFz
ZSB7CiAgICAgV1RGX01BS0VfSVNPX0FMTE9DQVRFRChQYW5uZXJOb2RlKTsKIHB1YmxpYzoKICAg
ICBzdGF0aWMgUmVmPFBhbm5lck5vZGU+IGNyZWF0ZShBdWRpb0NvbnRleHQmIGNvbnRleHQsIGZs
b2F0IHNhbXBsZVJhdGUpCkBAIC01OCw2ICs2OSw5IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwg
flBhbm5lck5vZGUoKTsKIAorICAgIEF1ZGlvQ29udGV4dCYgY29udGV4dCgpIHsgcmV0dXJuIGRv
d25jYXN0PEF1ZGlvQ29udGV4dD4oQXVkaW9Ob2RlOjpjb250ZXh0KCkpOyB9CisgICAgY29uc3Qg
QXVkaW9Db250ZXh0JiBjb250ZXh0KCkgY29uc3QgeyByZXR1cm4gZG93bmNhc3Q8QXVkaW9Db250
ZXh0PihBdWRpb05vZGU6OmNvbnRleHQoKSk7IH0KKwogICAgIC8vIEF1ZGlvTm9kZQogICAgIHZv
aWQgcHJvY2VzcyhzaXplX3QgZnJhbWVzVG9Qcm9jZXNzKSBvdmVycmlkZTsKICAgICB2b2lkIHB1
bGxJbnB1dHMoc2l6ZV90IGZyYW1lc1RvUHJvY2Vzcykgb3ZlcnJpZGU7CkBAIC0xMTEsNyArMTI1
LDcgQEAgcHVibGljOgogICAgIHZvaWQgc2V0Q29uZU91dGVyR2Fpbihkb3VibGUgYW5nbGUpIHsg
bV9jb25lRWZmZWN0LnNldE91dGVyR2FpbihhbmdsZSk7IH0KIAogICAgIHZvaWQgZ2V0QXppbXV0
aEVsZXZhdGlvbihkb3VibGUqIG91dEF6aW11dGgsIGRvdWJsZSogb3V0RWxldmF0aW9uKTsKLSAg
ICBmbG9hdCBkb3BwbGVyUmF0ZSgpOworICAgIGZsb2F0IGRvcHBsZXJSYXRlKCkgZmluYWw7CiAK
ICAgICAvLyBBY2Nlc3NvcnMgZm9yIGR5bmFtaWNhbGx5IGNhbGN1bGF0ZWQgZ2FpbiB2YWx1ZXMu
CiAgICAgQXVkaW9QYXJhbSogZGlzdGFuY2VHYWluKCkgeyByZXR1cm4gbV9kaXN0YW5jZUdhaW4u
Z2V0KCk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vUGFu
bmVyTm9kZS5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1Bhbm5lck5vZGUu
aWRsCmluZGV4IDAzMjk4MzdkMmY1YTI1YzdmNmE2ZjBkMDRlMzE4N2ExZjZhZDhiNDEuLjdiYjky
YzRmOGZiNDVkYjI5M2ZmZTNhMTdhOTcxMDNjMGI5MmU2ZTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vUGFubmVyTm9kZS5pZGwKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJhdWRpby9QYW5uZXJOb2RlLmlkbApAQCAtMjIsMjcgKzIyLDEwIEBACiAg
KiBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KICAqLwogCi1bCi0gICAgQ29uZGl0aW9uYWw9V0VCX0FVRElPLAotICAgIEltcGxlbWVu
dGVkQXM9UGFubmluZ01vZGVsVHlwZQotXSBlbnVtIFBhbm5pbmdNb2RlbFR5cGUgewotICAgICJl
cXVhbHBvd2VyIiwKLSAgICAiSFJURiIKLX07Ci0KLVsKLSAgICBDb25kaXRpb25hbD1XRUJfQVVE
SU8sCi0gICAgSW1wbGVtZW50ZWRBcz1EaXN0YW5jZU1vZGVsVHlwZQotXSBlbnVtIERpc3RhbmNl
TW9kZWxUeXBlIHsKLSAgICAibGluZWFyIiwKLSAgICAiaW52ZXJzZSIsCi0gICAgImV4cG9uZW50
aWFsIgotfTsKLQogWwogICAgIENvbmRpdGlvbmFsPVdFQl9BVURJTywKICAgICBKU0dlbmVyYXRl
VG9KU09iamVjdCwKLSAgICBJbnRlcmZhY2VOYW1lPXdlYmtpdEF1ZGlvUGFubmVyTm9kZSwKKyAg
ICBFbmFibGVkQnlTZXR0aW5nPU1vZGVyblVucHJlZml4ZWRXZWJBdWRpbywKIF0gaW50ZXJmYWNl
IFBhbm5lck5vZGUgOiBBdWRpb05vZGUgewogICAgIC8vIERlZmF1bHQgbW9kZWwgZm9yIHN0ZXJl
byBpcyBIUlRGIAogICAgIGF0dHJpYnV0ZSBQYW5uaW5nTW9kZWxUeXBlIHBhbm5pbmdNb2RlbDsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vUGFubmluZ01vZGVs
VHlwZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9QYW5uaW5nTW9kZWxUeXBl
LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uYWIwYjIyNzEyYTE3MGIxZmVmYWUxNmU2ZWYzZGY5NGQyMzhhMWE5Zgot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vUGFubmlu
Z01vZGVsVHlwZS5oCkBAIC0wLDAgKzEsMjcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAs
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQor
ICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OCisgKiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKKyAqIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQor
CisjaW5jbHVkZSAiUGFubmVyLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmF1ZGlvL1Bhbm5pbmdNb2RlbFR5cGUuaWRsIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJhdWRpby9QYW5uaW5nTW9kZWxUeXBlLmlkbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iZjdkZjhmNTU0MmZhYTQ1
MjYwN2JlMWYwOTllOTk3NGJkYWMzN2U2Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJhdWRpby9QYW5uaW5nTW9kZWxUeXBlLmlkbApAQCAtMCwwICsxLDMwIEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwLCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAq
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04KKyAqIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUwor
ICogU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworWworICAgIENvbmRpdGlvbmFsPVdFQl9BVURJTywKK10gZW51bSBQYW5u
aW5nTW9kZWxUeXBlIHsKKyAgICAiZXF1YWxwb3dlciIsCisgICAgIkhSVEYiCit9OwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9TY3JpcHRQcm9jZXNzb3JOb2Rl
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vU2NyaXB0UHJvY2Vzc29yTm9k
ZS5jcHAKaW5kZXggOTFjNzUzN2UxNWU4YjU1MjQxMWVhOWY2MTMwMWVjMWMzMjVhZDI1Ni4uNzYx
MGIxNTAyNDg3OGI2MDZlNWNkZDhjNGY1YWIwZmIxMWRjMDM0NiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9TY3JpcHRQcm9jZXNzb3JOb2RlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1NjcmlwdFByb2Nlc3Nvck5vZGUuY3BwCkBA
IC00NCwxMiArNDQsMTIgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBXVEZfTUFLRV9JU09fQUxM
T0NBVEVEX0lNUEwoU2NyaXB0UHJvY2Vzc29yTm9kZSk7CiAKLVJlZjxTY3JpcHRQcm9jZXNzb3JO
b2RlPiBTY3JpcHRQcm9jZXNzb3JOb2RlOjpjcmVhdGUoQXVkaW9Db250ZXh0JiBjb250ZXh0LCBm
bG9hdCBzYW1wbGVSYXRlLCBzaXplX3QgYnVmZmVyU2l6ZSwgdW5zaWduZWQgbnVtYmVyT2ZJbnB1
dENoYW5uZWxzLCB1bnNpZ25lZCBudW1iZXJPZk91dHB1dENoYW5uZWxzKQorUmVmPFNjcmlwdFBy
b2Nlc3Nvck5vZGU+IFNjcmlwdFByb2Nlc3Nvck5vZGU6OmNyZWF0ZShBdWRpb0NvbnRleHRCYXNl
JiBjb250ZXh0LCBmbG9hdCBzYW1wbGVSYXRlLCBzaXplX3QgYnVmZmVyU2l6ZSwgdW5zaWduZWQg
bnVtYmVyT2ZJbnB1dENoYW5uZWxzLCB1bnNpZ25lZCBudW1iZXJPZk91dHB1dENoYW5uZWxzKQog
ewogICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFNjcmlwdFByb2Nlc3Nvck5vZGUoY29udGV4dCwg
c2FtcGxlUmF0ZSwgYnVmZmVyU2l6ZSwgbnVtYmVyT2ZJbnB1dENoYW5uZWxzLCBudW1iZXJPZk91
dHB1dENoYW5uZWxzKSk7CiB9CiAKLVNjcmlwdFByb2Nlc3Nvck5vZGU6OlNjcmlwdFByb2Nlc3Nv
ck5vZGUoQXVkaW9Db250ZXh0JiBjb250ZXh0LCBmbG9hdCBzYW1wbGVSYXRlLCBzaXplX3QgYnVm
ZmVyU2l6ZSwgdW5zaWduZWQgbnVtYmVyT2ZJbnB1dENoYW5uZWxzLCB1bnNpZ25lZCBudW1iZXJP
Zk91dHB1dENoYW5uZWxzKQorU2NyaXB0UHJvY2Vzc29yTm9kZTo6U2NyaXB0UHJvY2Vzc29yTm9k
ZShBdWRpb0NvbnRleHRCYXNlJiBjb250ZXh0LCBmbG9hdCBzYW1wbGVSYXRlLCBzaXplX3QgYnVm
ZmVyU2l6ZSwgdW5zaWduZWQgbnVtYmVyT2ZJbnB1dENoYW5uZWxzLCB1bnNpZ25lZCBudW1iZXJP
Zk91dHB1dENoYW5uZWxzKQogICAgIDogQXVkaW9Ob2RlKGNvbnRleHQsIHNhbXBsZVJhdGUpCiAg
ICAgLCBBY3RpdmVET01PYmplY3QoY29udGV4dC5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpCiAg
ICAgLCBtX2RvdWJsZUJ1ZmZlckluZGV4KDApCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmF1ZGlvL1NjcmlwdFByb2Nlc3Nvck5vZGUuaCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViYXVkaW8vU2NyaXB0UHJvY2Vzc29yTm9kZS5oCmluZGV4IDVhNGU3Y2U0NzUyMmVm
MjhlYmYyZmQxNzk2YWY1ODRiYTc1YjQxMzMuLjRjMTRhMDc1N2RmNWM1ZTYyZGZlOTZhODhlYjQy
YjQ3ZjE1ZTcyNTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8v
U2NyaXB0UHJvY2Vzc29yTm9kZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVk
aW8vU2NyaXB0UHJvY2Vzc29yTm9kZS5oCkBAIC01Miw3ICs1Miw3IEBAIHB1YmxpYzoKICAgICAv
LyBUaGlzIHZhbHVlIGNvbnRyb2xzIGhvdyBmcmVxdWVudGx5IHRoZSBvbmF1ZGlvcHJvY2VzcyBl
dmVudCBoYW5kbGVyIGlzIGNhbGxlZCBhbmQgaG93IG1hbnkgc2FtcGxlLWZyYW1lcyBuZWVkIHRv
IGJlIHByb2Nlc3NlZCBlYWNoIGNhbGwuCiAgICAgLy8gTG93ZXIgbnVtYmVycyBmb3IgYnVmZmVy
U2l6ZSB3aWxsIHJlc3VsdCBpbiBhIGxvd2VyIChiZXR0ZXIpIGxhdGVuY3kuIEhpZ2hlciBudW1i
ZXJzIHdpbGwgYmUgbmVjZXNzYXJ5IHRvIGF2b2lkIGF1ZGlvIGJyZWFrdXAgYW5kIGdsaXRjaGVz
LgogICAgIC8vIFRoZSB2YWx1ZSBjaG9zZW4gbXVzdCBjYXJlZnVsbHkgYmFsYW5jZSBiZXR3ZWVu
IGxhdGVuY3kgYW5kIGF1ZGlvIHF1YWxpdHkuCi0gICAgc3RhdGljIFJlZjxTY3JpcHRQcm9jZXNz
b3JOb2RlPiBjcmVhdGUoQXVkaW9Db250ZXh0JiwgZmxvYXQgc2FtcGxlUmF0ZSwgc2l6ZV90IGJ1
ZmZlclNpemUsIHVuc2lnbmVkIG51bWJlck9mSW5wdXRDaGFubmVscywgdW5zaWduZWQgbnVtYmVy
T2ZPdXRwdXRDaGFubmVscyk7CisgICAgc3RhdGljIFJlZjxTY3JpcHRQcm9jZXNzb3JOb2RlPiBj
cmVhdGUoQXVkaW9Db250ZXh0QmFzZSYsIGZsb2F0IHNhbXBsZVJhdGUsIHNpemVfdCBidWZmZXJT
aXplLCB1bnNpZ25lZCBudW1iZXJPZklucHV0Q2hhbm5lbHMsIHVuc2lnbmVkIG51bWJlck9mT3V0
cHV0Q2hhbm5lbHMpOwogCiAgICAgdmlydHVhbCB+U2NyaXB0UHJvY2Vzc29yTm9kZSgpOwogCkBA
IC03MSw3ICs3MSw3IEBAIHByaXZhdGU6CiAgICAgZG91YmxlIHRhaWxUaW1lKCkgY29uc3Qgb3Zl
cnJpZGU7CiAgICAgZG91YmxlIGxhdGVuY3lUaW1lKCkgY29uc3Qgb3ZlcnJpZGU7CiAKLSAgICBT
Y3JpcHRQcm9jZXNzb3JOb2RlKEF1ZGlvQ29udGV4dCYsIGZsb2F0IHNhbXBsZVJhdGUsIHNpemVf
dCBidWZmZXJTaXplLCB1bnNpZ25lZCBudW1iZXJPZklucHV0Q2hhbm5lbHMsIHVuc2lnbmVkIG51
bWJlck9mT3V0cHV0Q2hhbm5lbHMpOworICAgIFNjcmlwdFByb2Nlc3Nvck5vZGUoQXVkaW9Db250
ZXh0QmFzZSYsIGZsb2F0IHNhbXBsZVJhdGUsIHNpemVfdCBidWZmZXJTaXplLCB1bnNpZ25lZCBu
dW1iZXJPZklucHV0Q2hhbm5lbHMsIHVuc2lnbmVkIG51bWJlck9mT3V0cHV0Q2hhbm5lbHMpOwog
CiAgICAgdm9pZCBmaXJlUHJvY2Vzc0V2ZW50KCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViYXVkaW8vV2F2ZVNoYXBlck5vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJhdWRpby9XYXZlU2hhcGVyTm9kZS5jcHAKaW5kZXggNmU3ZThkZDFjOWMxOWZh
M2M4NWUzZDlkODU1YWI5ZjQ1Nzg1Yjc5MC4uYWU0YWY5ZjIzMmY3NTEzNmMwODFhZmUxNGJkN2E3
OTU2YzA1Mjk2ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9X
YXZlU2hhcGVyTm9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9X
YXZlU2hhcGVyTm9kZS5jcHAKQEAgLTM1LDcgKzM1LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
CiBXVEZfTUFLRV9JU09fQUxMT0NBVEVEX0lNUEwoV2F2ZVNoYXBlck5vZGUpOwogCi1XYXZlU2hh
cGVyTm9kZTo6V2F2ZVNoYXBlck5vZGUoQXVkaW9Db250ZXh0JiBjb250ZXh0KQorV2F2ZVNoYXBl
ck5vZGU6OldhdmVTaGFwZXJOb2RlKEF1ZGlvQ29udGV4dEJhc2UmIGNvbnRleHQpCiAgICAgOiBB
dWRpb0Jhc2ljUHJvY2Vzc29yTm9kZShjb250ZXh0LCBjb250ZXh0LnNhbXBsZVJhdGUoKSkKIHsK
ICAgICBzZXROb2RlVHlwZShOb2RlVHlwZVdhdmVTaGFwZXIpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9XYXZlU2hhcGVyTm9kZS5oIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJhdWRpby9XYXZlU2hhcGVyTm9kZS5oCmluZGV4IGY0OWUzNDliYzNkYzhj
MjliNGE2ZTYzZGZkYmY5ODY0Yjk2Zjg2ODAuLjVmNDkzMjhiMjJkMGViZTVkNmVmNmQwM2M2YWU2
ZDZmZmMxYTExMGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8v
V2F2ZVNoYXBlck5vZGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1dh
dmVTaGFwZXJOb2RlLmgKQEAgLTMzLDcgKzMzLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xh
c3MgV2F2ZVNoYXBlck5vZGUgZmluYWwgOiBwdWJsaWMgQXVkaW9CYXNpY1Byb2Nlc3Nvck5vZGUg
ewogICAgIFdURl9NQUtFX0lTT19BTExPQ0FURUQoV2F2ZVNoYXBlck5vZGUpOwogcHVibGljOgot
ICAgIHN0YXRpYyBSZWY8V2F2ZVNoYXBlck5vZGU+IGNyZWF0ZShBdWRpb0NvbnRleHQmIGNvbnRl
eHQpCisgICAgc3RhdGljIFJlZjxXYXZlU2hhcGVyTm9kZT4gY3JlYXRlKEF1ZGlvQ29udGV4dEJh
c2UmIGNvbnRleHQpCiAgICAgewogICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBXYXZlU2hh
cGVyTm9kZShjb250ZXh0KSk7CiAgICAgfQpAQCAtNDksNyArNDksNyBAQCBwdWJsaWM6CiAgICAg
ZG91YmxlIGxhdGVuY3koKSBjb25zdCB7IHJldHVybiBsYXRlbmN5VGltZSgpOyB9CiAKIHByaXZh
dGU6ICAgIAotICAgIGV4cGxpY2l0IFdhdmVTaGFwZXJOb2RlKEF1ZGlvQ29udGV4dCYpOyAgICAK
KyAgICBleHBsaWNpdCBXYXZlU2hhcGVyTm9kZShBdWRpb0NvbnRleHRCYXNlJik7CiAKICAgICBX
YXZlU2hhcGVyUHJvY2Vzc29yKiB3YXZlU2hhcGVyUHJvY2Vzc29yKCkgeyByZXR1cm4gc3RhdGlj
X2Nhc3Q8V2F2ZVNoYXBlclByb2Nlc3Nvcio+KHByb2Nlc3NvcigpKTsgfQogfTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vV2ViS2l0QXVkaW9Db250ZXh0LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vV2ViS2l0QXVkaW9Db250ZXh0LmNw
cApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi5mNDAyMDgxOWE4OTM3ZmM2M2Q1M2Q1NWYzZWE3ZDc5Yjk0OTIxMTAyCi0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9XZWJLaXRB
dWRpb0NvbnRleHQuY3BwCkBAIC0wLDAgKzEsMTQwMiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAy
MDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFS
RQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OCisgKiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKKyAqIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJj
b25maWcuaCIKKworI2lmIEVOQUJMRShXRUJfQVVESU8pCisKKyNpbmNsdWRlICJXZWJLaXRBdWRp
b0NvbnRleHQuaCIKKworI2luY2x1ZGUgIkFuYWx5c2VyTm9kZS5oIgorI2luY2x1ZGUgIkFzeW5j
QXVkaW9EZWNvZGVyLmgiCisjaW5jbHVkZSAiQXVkaW9CdWZmZXIuaCIKKyNpbmNsdWRlICJBdWRp
b0J1ZmZlckNhbGxiYWNrLmgiCisjaW5jbHVkZSAiQXVkaW9CdWZmZXJTb3VyY2VOb2RlLmgiCisj
aW5jbHVkZSAiQXVkaW9MaXN0ZW5lci5oIgorI2luY2x1ZGUgIkF1ZGlvTm9kZUlucHV0LmgiCisj
aW5jbHVkZSAiQXVkaW9Ob2RlT3V0cHV0LmgiCisjaW5jbHVkZSAiQXVkaW9TZXNzaW9uLmgiCisj
aW5jbHVkZSAiQmlxdWFkRmlsdGVyTm9kZS5oIgorI2luY2x1ZGUgIkNoYW5uZWxNZXJnZXJOb2Rl
LmgiCisjaW5jbHVkZSAiQ2hhbm5lbFNwbGl0dGVyTm9kZS5oIgorI2luY2x1ZGUgIkNvbnZvbHZl
ck5vZGUuaCIKKyNpbmNsdWRlICJEZWZhdWx0QXVkaW9EZXN0aW5hdGlvbk5vZGUuaCIKKyNpbmNs
dWRlICJEZWxheU5vZGUuaCIKKyNpbmNsdWRlICJEb2N1bWVudC5oIgorI2luY2x1ZGUgIkR5bmFt
aWNzQ29tcHJlc3Nvck5vZGUuaCIKKyNpbmNsdWRlICJFdmVudE5hbWVzLmgiCisjaW5jbHVkZSAi
RkZURnJhbWUuaCIKKyNpbmNsdWRlICJGcmFtZS5oIgorI2luY2x1ZGUgIkZyYW1lTG9hZGVyLmgi
CisjaW5jbHVkZSAiR2Fpbk5vZGUuaCIKKyNpbmNsdWRlICJHZW5lcmljRXZlbnRRdWV1ZS5oIgor
I2luY2x1ZGUgIkhSVEZEYXRhYmFzZUxvYWRlci5oIgorI2luY2x1ZGUgIkhSVEZQYW5uZXIuaCIK
KyNpbmNsdWRlICJKU0RPTVByb21pc2VEZWZlcnJlZC5oIgorI2luY2x1ZGUgIkxvZ2dpbmcuaCIK
KyNpbmNsdWRlICJOZXR3b3JraW5nQ29udGV4dC5oIgorI2luY2x1ZGUgIk9mZmxpbmVBdWRpb0Nv
bXBsZXRpb25FdmVudC5oIgorI2luY2x1ZGUgIk9mZmxpbmVBdWRpb0Rlc3RpbmF0aW9uTm9kZS5o
IgorI2luY2x1ZGUgIk9zY2lsbGF0b3JOb2RlLmgiCisjaW5jbHVkZSAiUGFnZS5oIgorI2luY2x1
ZGUgIlBlcmlvZGljV2F2ZS5oIgorI2luY2x1ZGUgIlBsYXRmb3JtTWVkaWFTZXNzaW9uTWFuYWdl
ci5oIgorI2luY2x1ZGUgIlNjcmlwdENvbnRyb2xsZXIuaCIKKyNpbmNsdWRlICJTY3JpcHRQcm9j
ZXNzb3JOb2RlLmgiCisjaW5jbHVkZSAiV2F2ZVNoYXBlck5vZGUuaCIKKyNpbmNsdWRlICJXZWJL
aXRBdWRpb1Bhbm5lck5vZGUuaCIKKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9TY3JpcHRDYWxs
U3RhY2suaD4KKworI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCisjaW5jbHVkZSAiTWVkaWFTdHJl
YW0uaCIKKyNpbmNsdWRlICJNZWRpYVN0cmVhbUF1ZGlvRGVzdGluYXRpb25Ob2RlLmgiCisjaW5j
bHVkZSAiTWVkaWFTdHJlYW1BdWRpb1NvdXJjZS5oIgorI2luY2x1ZGUgIk1lZGlhU3RyZWFtQXVk
aW9Tb3VyY2VOb2RlLmgiCisjZW5kaWYKKworI2lmIEVOQUJMRShWSURFTykKKyNpbmNsdWRlICJI
VE1MTWVkaWFFbGVtZW50LmgiCisjaW5jbHVkZSAiTWVkaWFFbGVtZW50QXVkaW9Tb3VyY2VOb2Rl
LmgiCisjZW5kaWYKKworI2lmIERFQlVHX0FVRElPTk9ERV9SRUZFUkVOQ0VTCisjaW5jbHVkZSA8
c3RkaW8uaD4KKyNlbmRpZgorCisjaWYgVVNFKEdTVFJFQU1FUikKKyNpbmNsdWRlICJHU3RyZWFt
ZXJDb21tb24uaCIKKyNlbmRpZgorCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKKyNpbmNsdWRl
ICJTY3JpcHRDb250cm9sbGVyLmgiCisjaW5jbHVkZSAiU2V0dGluZ3MuaCIKKyNlbmRpZgorCisj
aW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvQXJyYXlCdWZmZXIuaD4KKyNpbmNsdWRlIDx3dGYvQXRv
bWljcy5oPgorI2luY2x1ZGUgPHd0Zi9Jc29NYWxsb2NJbmxpbmVzLmg+CisjaW5jbHVkZSA8d3Rm
L01haW5UaHJlYWQuaD4KKyNpbmNsdWRlIDx3dGYvUmVmLmg+CisjaW5jbHVkZSA8d3RmL1JlZkNv
dW50ZWQuaD4KKyNpbmNsdWRlIDx3dGYvU2NvcGUuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZT
dHJpbmcuaD4KKworY29uc3QgdW5zaWduZWQgTWF4UGVyaW9kaWNXYXZlTGVuZ3RoID0gNDA5NjsK
KworbmFtZXNwYWNlIFdlYkNvcmUgeworCitXVEZfTUFLRV9JU09fQUxMT0NBVEVEX0lNUEwoV2Vi
S2l0QXVkaW9Db250ZXh0KTsKKworI2RlZmluZSBSRUxFQVNFX0xPR19JRl9BTExPV0VEKGZtdCwg
Li4uKSBSRUxFQVNFX0xPR19JRihkb2N1bWVudCgpICYmIGRvY3VtZW50KCktPnBhZ2UoKSAmJiBk
b2N1bWVudCgpLT5wYWdlKCktPmlzQWx3YXlzT25Mb2dnaW5nQWxsb3dlZCgpLCBNZWRpYSwgIiVw
IC0gV2ViS2l0QXVkaW9Db250ZXh0OjoiIGZtdCwgdGhpcywgIyNfX1ZBX0FSR1NfXykKKworYm9v
bCBXZWJLaXRBdWRpb0NvbnRleHQ6OmlzU2FtcGxlUmF0ZVJhbmdlR29vZChmbG9hdCBzYW1wbGVS
YXRlKQoreworICAgIC8vIEZJWE1FOiBJdCB3b3VsZCBiZSBuaWNlIGlmIHRoZSBtaW5pbXVtIHNh
bXBsZS1yYXRlIGNvdWxkIGJlIGxlc3MgdGhhbiA0NC4xS0h6LAorICAgIC8vIGJ1dCB0aGF0IHdp
bGwgcmVxdWlyZSBzb21lIGZpeGVzIGluIEhSVEZQYW5uZXI6OmZmdFNpemVGb3JTYW1wbGVSYXRl
KCksIGFuZCBzb21lIHRlc3RpbmcgdGhlcmUuCisgICAgcmV0dXJuIHNhbXBsZVJhdGUgPj0gNDQx
MDAgJiYgc2FtcGxlUmF0ZSA8PSA5NjAwMDsKK30KKworI2lmIE9TKFdJTkRPV1MpCisvLyBEb24n
dCBhbGxvdyBtb3JlIHRoYW4gdGhpcyBudW1iZXIgb2Ygc2ltdWx0YW5lb3VzIEF1ZGlvQ29udGV4
dHMgdGFsa2luZyB0byBoYXJkd2FyZS4KK2NvbnN0ZXhwciB1bnNpZ25lZCBtYXhIYXJkd2FyZUNv
bnRleHRzID0gNDsKKyNlbmRpZgordW5zaWduZWQgV2ViS2l0QXVkaW9Db250ZXh0OjpzX2hhcmR3
YXJlQ29udGV4dENvdW50ID0gMDsKKworRXhjZXB0aW9uT3I8UmVmPFdlYktpdEF1ZGlvQ29udGV4
dD4+IFdlYktpdEF1ZGlvQ29udGV4dDo6Y3JlYXRlKERvY3VtZW50JiBkb2N1bWVudCkKK3sKKyAg
ICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworI2lmIE9TKFdJTkRPV1MpCisgICAgaWYgKHNfaGFy
ZHdhcmVDb250ZXh0Q291bnQgPj0gbWF4SGFyZHdhcmVDb250ZXh0cykKKyAgICAgICAgcmV0dXJu
IEV4Y2VwdGlvbiB7IFF1b3RhRXhjZWVkZWRFcnJvciB9OworI2VuZGlmCisKKyAgICBhdXRvIGF1
ZGlvQ29udGV4dCA9IGFkb3B0UmVmKCpuZXcgV2ViS2l0QXVkaW9Db250ZXh0KGRvY3VtZW50KSk7
CisgICAgYXVkaW9Db250ZXh0LT5zdXNwZW5kSWZOZWVkZWQoKTsKKyAgICByZXR1cm4gYXVkaW9D
b250ZXh0OworfQorCisvLyBDb25zdHJ1Y3RvciBmb3IgcmVuZGVyaW5nIHRvIHRoZSBhdWRpbyBo
YXJkd2FyZS4KK1dlYktpdEF1ZGlvQ29udGV4dDo6V2ViS2l0QXVkaW9Db250ZXh0KERvY3VtZW50
JiBkb2N1bWVudCkKKyAgICA6IEF1ZGlvQ29udGV4dEJhc2UoZG9jdW1lbnQpCisjaWYgIVJFTEVB
U0VfTE9HX0RJU0FCTEVECisgICAgLCBtX2xvZ2dlcihkb2N1bWVudC5sb2dnZXIoKSkKKyAgICAs
IG1fbG9nSWRlbnRpZmllcih1bmlxdWVMb2dJZGVudGlmaWVyKCkpCisjZW5kaWYKKyAgICAsIG1f
bWVkaWFTZXNzaW9uKFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpjcmVhdGUoUGxhdGZvcm1NZWRpYVNl
c3Npb25NYW5hZ2VyOjpzaGFyZWRNYW5hZ2VyKCksICp0aGlzKSkKKyAgICAsIG1fZXZlbnRRdWV1
ZShNYWluVGhyZWFkR2VuZXJpY0V2ZW50UXVldWU6OmNyZWF0ZSgqdGhpcykpCit7CisgICAgLy8g
QWNjb3JkaW5nIHRvIHNwZWMgQXVkaW9Db250ZXh0IG11c3QgZGllIG9ubHkgYWZ0ZXIgcGFnZSBu
YXZpZ2F0ZS4KKyAgICAvLyBMZXRzIG1hcmsgaXQgYXMgQWN0aXZlRE9NT2JqZWN0IHdpdGggcGVu
ZGluZyBhY3Rpdml0eSBhbmQgdW5tYXJrIGl0IGluIGNsZWFyIG1ldGhvZC4KKyAgICBtYWtlUGVu
ZGluZ0FjdGl2aXR5KCk7CisKKyAgICBjb25zdHJ1Y3RDb21tb24oKTsKKworICAgIG1fZGVzdGlu
YXRpb25Ob2RlID0gRGVmYXVsdEF1ZGlvRGVzdGluYXRpb25Ob2RlOjpjcmVhdGUoKnRoaXMpOwor
CisgICAgLy8gSW5pdGlhbGl6ZSB0aGUgZGVzdGluYXRpb24gbm9kZSdzIG11dGVkIHN0YXRlIHRv
IG1hdGNoIHRoZSBwYWdlJ3MgY3VycmVudCBtdXRlZCBzdGF0ZS4KKyAgICBwYWdlTXV0ZWRTdGF0
ZURpZENoYW5nZSgpOworCisgICAgZG9jdW1lbnQuYWRkQXVkaW9Qcm9kdWNlcigqdGhpcyk7Cisg
ICAgZG9jdW1lbnQucmVnaXN0ZXJGb3JWaXNpYmlsaXR5U3RhdGVDaGFuZ2VkQ2FsbGJhY2tzKCp0
aGlzKTsKK30KKworLy8gQ29uc3RydWN0b3IgZm9yIG9mZmxpbmUgKG5vbi1yZWFsdGltZSkgcmVu
ZGVyaW5nLgorV2ViS2l0QXVkaW9Db250ZXh0OjpXZWJLaXRBdWRpb0NvbnRleHQoRG9jdW1lbnQm
IGRvY3VtZW50LCBBdWRpb0J1ZmZlciogcmVuZGVyVGFyZ2V0KQorICAgIDogQXVkaW9Db250ZXh0
QmFzZShkb2N1bWVudCkKKyNpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKKyAgICAsIG1fbG9nZ2Vy
KGRvY3VtZW50LmxvZ2dlcigpKQorICAgICwgbV9sb2dJZGVudGlmaWVyKHVuaXF1ZUxvZ0lkZW50
aWZpZXIoKSkKKyNlbmRpZgorICAgICwgbV9pc09mZmxpbmVDb250ZXh0KHRydWUpCisgICAgLCBt
X21lZGlhU2Vzc2lvbihQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6Y3JlYXRlKFBsYXRmb3JtTWVkaWFT
ZXNzaW9uTWFuYWdlcjo6c2hhcmVkTWFuYWdlcigpLCAqdGhpcykpCisgICAgLCBtX2V2ZW50UXVl
dWUoTWFpblRocmVhZEdlbmVyaWNFdmVudFF1ZXVlOjpjcmVhdGUoKnRoaXMpKQorICAgICwgbV9y
ZW5kZXJUYXJnZXQocmVuZGVyVGFyZ2V0KQoreworICAgIGNvbnN0cnVjdENvbW1vbigpOworCisg
ICAgLy8gQ3JlYXRlIGEgbmV3IGRlc3RpbmF0aW9uIGZvciBvZmZsaW5lIHJlbmRlcmluZy4KKyAg
ICBtX2Rlc3RpbmF0aW9uTm9kZSA9IE9mZmxpbmVBdWRpb0Rlc3RpbmF0aW9uTm9kZTo6Y3JlYXRl
KCp0aGlzLCBtX3JlbmRlclRhcmdldC5nZXQoKSk7Cit9CisKK3ZvaWQgV2ViS2l0QXVkaW9Db250
ZXh0Ojpjb25zdHJ1Y3RDb21tb24oKQoreworICAgIEZGVEZyYW1lOjppbml0aWFsaXplKCk7CisK
KyAgICBtX2xpc3RlbmVyID0gQXVkaW9MaXN0ZW5lcjo6Y3JlYXRlKCk7CisKKyAgICBBU1NFUlQo
ZG9jdW1lbnQoKSk7CisgICAgaWYgKGRvY3VtZW50KCktPmF1ZGlvUGxheWJhY2tSZXF1aXJlc1Vz
ZXJHZXN0dXJlKCkpCisgICAgICAgIGFkZEJlaGF2aW9yUmVzdHJpY3Rpb24oUmVxdWlyZVVzZXJH
ZXN0dXJlRm9yQXVkaW9TdGFydFJlc3RyaWN0aW9uKTsKKyAgICBlbHNlCisgICAgICAgIG1fcmVz
dHJpY3Rpb25zID0gTm9SZXN0cmljdGlvbnM7CisKKyNpZiBQTEFURk9STShDT0NPQSkKKyAgICBh
ZGRCZWhhdmlvclJlc3RyaWN0aW9uKFJlcXVpcmVQYWdlQ29uc2VudEZvckF1ZGlvU3RhcnRSZXN0
cmljdGlvbik7CisjZW5kaWYKK30KKworV2ViS2l0QXVkaW9Db250ZXh0Ojp+V2ViS2l0QXVkaW9D
b250ZXh0KCkKK3sKKyNpZiBERUJVR19BVURJT05PREVfUkVGRVJFTkNFUworICAgIGZwcmludGYo
c3RkZXJyLCAiJXA6IFdlYktpdEF1ZGlvQ29udGV4dDo6fldlYktpdEF1ZGlvQ29udGV4dCgpXG4i
LCB0aGlzKTsKKyNlbmRpZgorICAgIEFTU0VSVCghbV9pc0luaXRpYWxpemVkKTsKKyAgICBBU1NF
UlQobV9pc1N0b3BTY2hlZHVsZWQpOworICAgIEFTU0VSVChtX25vZGVzVG9EZWxldGUuaXNFbXB0
eSgpKTsKKyAgICBBU1NFUlQobV9yZWZlcmVuY2VkTm9kZXMuaXNFbXB0eSgpKTsKKyAgICBBU1NF
UlQobV9maW5pc2hlZE5vZGVzLmlzRW1wdHkoKSk7IC8vIEZJWE1FIChidWcgMTA1ODcwKTogVGhp
cyBhc3NlcnRpb24gZmFpbHMgb24gdGVzdHMgc29tZXRpbWVzLgorICAgIEFTU0VSVChtX2F1dG9t
YXRpY1B1bGxOb2Rlcy5pc0VtcHR5KCkpOworICAgIGlmIChtX2F1dG9tYXRpY1B1bGxOb2Rlc05l
ZWRVcGRhdGluZykKKyAgICAgICAgbV9yZW5kZXJpbmdBdXRvbWF0aWNQdWxsTm9kZXMucmVzaXpl
KG1fYXV0b21hdGljUHVsbE5vZGVzLnNpemUoKSk7CisgICAgQVNTRVJUKG1fcmVuZGVyaW5nQXV0
b21hdGljUHVsbE5vZGVzLmlzRW1wdHkoKSk7CisgICAgLy8gRklYTUU6IENhbiB3ZSBhc3NlcnQg
dGhhdCBtX2RlZmVycmVkRmluaXNoRGVyZWZMaXN0IGlzIGVtcHR5PworCisgICAgaWYgKCFpc09m
ZmxpbmVDb250ZXh0KCkgJiYgc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKSB7CisgICAgICAgIGRv
Y3VtZW50KCktPnJlbW92ZUF1ZGlvUHJvZHVjZXIoKnRoaXMpOworICAgICAgICBkb2N1bWVudCgp
LT51bnJlZ2lzdGVyRm9yVmlzaWJpbGl0eVN0YXRlQ2hhbmdlZENhbGxiYWNrcygqdGhpcyk7Cisg
ICAgfQorfQorCit2b2lkIFdlYktpdEF1ZGlvQ29udGV4dDo6bGF6eUluaXRpYWxpemUoKQorewor
ICAgIEFTU0VSVCghbV9pc1N0b3BTY2hlZHVsZWQpOworCisgICAgaWYgKG1faXNJbml0aWFsaXpl
ZCkKKyAgICAgICAgcmV0dXJuOworCisgICAgLy8gRG9uJ3QgYWxsb3cgdGhlIGNvbnRleHQgdG8g
aW5pdGlhbGl6ZSBhIHNlY29uZCB0aW1lIGFmdGVyIGl0J3MgYWxyZWFkeSBiZWVuIGV4cGxpY2l0
bHkgdW5pbml0aWFsaXplZC4KKyAgICBBU1NFUlQoIW1faXNBdWRpb1RocmVhZEZpbmlzaGVkKTsK
KyAgICBpZiAobV9pc0F1ZGlvVGhyZWFkRmluaXNoZWQpCisgICAgICAgIHJldHVybjsKKworICAg
IGlmIChtX2Rlc3RpbmF0aW9uTm9kZSkgeworICAgICAgICBtX2Rlc3RpbmF0aW9uTm9kZS0+aW5p
dGlhbGl6ZSgpOworCisgICAgICAgIGlmICghaXNPZmZsaW5lQ29udGV4dCgpKSB7CisgICAgICAg
ICAgICAvLyBUaGlzIHN0YXJ0cyB0aGUgYXVkaW8gdGhyZWFkLiBUaGUgZGVzdGluYXRpb24gbm9k
ZSdzIHByb3ZpZGVJbnB1dCgpIG1ldGhvZCB3aWxsIG5vdyBiZSBjYWxsZWQgcmVwZWF0ZWRseSB0
byByZW5kZXIgYXVkaW8uCisgICAgICAgICAgICAvLyBFYWNoIHRpbWUgcHJvdmlkZUlucHV0KCkg
aXMgY2FsbGVkLCBhIHBvcnRpb24gb2YgdGhlIGF1ZGlvIHN0cmVhbSBpcyByZW5kZXJlZC4gTGV0
J3MgY2FsbCB0aGlzIHRpbWUgcGVyaW9kIGEgInJlbmRlciBxdWFudHVtIi4KKyAgICAgICAgICAg
IC8vIE5PVEU6IGZvciBub3cgZGVmYXVsdCBBdWRpb0NvbnRleHQgZG9lcyBub3QgbmVlZCBhbiBl
eHBsaWNpdCBzdGFydFJlbmRlcmluZygpIGNhbGwgZnJvbSBKYXZhU2NyaXB0LgorICAgICAgICAg
ICAgLy8gV2UgbWF5IHdhbnQgdG8gY29uc2lkZXIgcmVxdWlyaW5nIGl0IGZvciBzeW1tZXRyeSB3
aXRoIE9mZmxpbmVBdWRpb0NvbnRleHQuCisgICAgICAgICAgICBzdGFydFJlbmRlcmluZygpOwor
ICAgICAgICAgICAgKytzX2hhcmR3YXJlQ29udGV4dENvdW50OworICAgICAgICB9CisgICAgfQor
ICAgIG1faXNJbml0aWFsaXplZCA9IHRydWU7Cit9CisKK3ZvaWQgV2ViS2l0QXVkaW9Db250ZXh0
OjpjbGVhcigpCit7CisgICAgUmVmPFdlYktpdEF1ZGlvQ29udGV4dD4gcHJvdGVjdGVkVGhpcygq
dGhpcyk7CisKKyAgICAvLyBXZSBoYXZlIHRvIHJlbGVhc2Ugb3VyIHJlZmVyZW5jZSB0byB0aGUg
ZGVzdGluYXRpb24gbm9kZSBiZWZvcmUgdGhlIGNvbnRleHQgd2lsbCBldmVyIGJlIGRlbGV0ZWQg
c2luY2UgdGhlIGRlc3RpbmF0aW9uIG5vZGUgaG9sZHMgYSByZWZlcmVuY2UgdG8gdGhlIGNvbnRl
eHQuCisgICAgaWYgKG1fZGVzdGluYXRpb25Ob2RlKQorICAgICAgICBtX2Rlc3RpbmF0aW9uTm9k
ZSA9IG51bGxwdHI7CisKKyAgICAvLyBBdWRpbyB0aHJlYWQgaXMgZGVhZC4gTm9ib2R5IHdpbGwg
c2NoZWR1bGUgbm9kZSBkZWxldGlvbiBhY3Rpb24uIExldCdzIGRvIGl0IG91cnNlbHZlcy4KKyAg
ICBkbyB7CisgICAgICAgIGRlbGV0ZU1hcmtlZE5vZGVzKCk7CisgICAgICAgIG1fbm9kZXNUb0Rl
bGV0ZS5hcHBlbmRWZWN0b3IobV9ub2Rlc01hcmtlZEZvckRlbGV0aW9uKTsKKyAgICAgICAgbV9u
b2Rlc01hcmtlZEZvckRlbGV0aW9uLmNsZWFyKCk7CisgICAgfSB3aGlsZSAobV9ub2Rlc1RvRGVs
ZXRlLnNpemUoKSk7CisKKyAgICBjbGVhclBlbmRpbmdBY3Rpdml0eSgpOworfQorCit2b2lkIFdl
YktpdEF1ZGlvQ29udGV4dDo6dW5pbml0aWFsaXplKCkKK3sKKyAgICBBTFdBWVNfTE9HKExPR0lE
RU5USUZJRVIpOworCisgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKworICAgIGlmICghbV9p
c0luaXRpYWxpemVkKQorICAgICAgICByZXR1cm47CisKKyAgICAvLyBUaGlzIHN0b3BzIHRoZSBh
dWRpbyB0aHJlYWQgYW5kIGFsbCBhdWRpbyByZW5kZXJpbmcuCisgICAgaWYgKG1fZGVzdGluYXRp
b25Ob2RlKQorICAgICAgICBtX2Rlc3RpbmF0aW9uTm9kZS0+dW5pbml0aWFsaXplKCk7CisKKyAg
ICAvLyBEb24ndCBhbGxvdyB0aGUgY29udGV4dCB0byBpbml0aWFsaXplIGEgc2Vjb25kIHRpbWUg
YWZ0ZXIgaXQncyBhbHJlYWR5IGJlZW4gZXhwbGljaXRseSB1bmluaXRpYWxpemVkLgorICAgIG1f
aXNBdWRpb1RocmVhZEZpbmlzaGVkID0gdHJ1ZTsKKworICAgIGlmICghaXNPZmZsaW5lQ29udGV4
dCgpKSB7CisgICAgICAgIEFTU0VSVChzX2hhcmR3YXJlQ29udGV4dENvdW50KTsKKyAgICAgICAg
LS1zX2hhcmR3YXJlQ29udGV4dENvdW50OworCisgICAgICAgIC8vIE9mZmxpbmUgY29udGV4dHMg
bW92ZSB0byAnQ2xvc2VkJyBzdGF0ZSB3aGVuIGRpc3BhdGNoaW5nIHRoZSBjb21wbGV0aW9uIGV2
ZW50LgorICAgICAgICBzZXRTdGF0ZShTdGF0ZTo6Q2xvc2VkKTsKKyAgICB9CisKKyAgICAvLyBH
ZXQgcmlkIG9mIHRoZSBzb3VyY2VzIHdoaWNoIG1heSBzdGlsbCBiZSBwbGF5aW5nLgorICAgIGRl
cmVmVW5maW5pc2hlZFNvdXJjZU5vZGVzKCk7CisKKyAgICBtX2lzSW5pdGlhbGl6ZWQgPSBmYWxz
ZTsKK30KKworYm9vbCBXZWJLaXRBdWRpb0NvbnRleHQ6OmlzSW5pdGlhbGl6ZWQoKSBjb25zdAor
eworICAgIHJldHVybiBtX2lzSW5pdGlhbGl6ZWQ7Cit9CisKK3ZvaWQgV2ViS2l0QXVkaW9Db250
ZXh0OjphZGRSZWFjdGlvbihTdGF0ZSBzdGF0ZSwgRE9NUHJvbWlzZURlZmVycmVkPHZvaWQ+JiYg
cHJvbWlzZSkKK3sKKyAgICBzaXplX3Qgc3RhdGVJbmRleCA9IHN0YXRpY19jYXN0PHNpemVfdD4o
c3RhdGUpOworICAgIGlmIChzdGF0ZUluZGV4ID49IG1fc3RhdGVSZWFjdGlvbnMuc2l6ZSgpKQor
ICAgICAgICBtX3N0YXRlUmVhY3Rpb25zLmdyb3coc3RhdGVJbmRleCArIDEpOworCisgICAgbV9z
dGF0ZVJlYWN0aW9uc1tzdGF0ZUluZGV4XS5hcHBlbmQoV1RGTW92ZShwcm9taXNlKSk7Cit9CisK
K3ZvaWQgV2ViS2l0QXVkaW9Db250ZXh0OjpzZXRTdGF0ZShTdGF0ZSBzdGF0ZSkKK3sKKyAgICBp
ZiAobV9zdGF0ZSA9PSBzdGF0ZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9zdGF0ZSA9IHN0
YXRlOworICAgIG1fZXZlbnRRdWV1ZS0+ZW5xdWV1ZUV2ZW50KEV2ZW50OjpjcmVhdGUoZXZlbnRO
YW1lcygpLnN0YXRlY2hhbmdlRXZlbnQsIEV2ZW50OjpDYW5CdWJibGU6OlllcywgRXZlbnQ6Oklz
Q2FuY2VsYWJsZTo6Tm8pKTsKKworICAgIHNpemVfdCBzdGF0ZUluZGV4ID0gc3RhdGljX2Nhc3Q8
c2l6ZV90PihzdGF0ZSk7CisgICAgaWYgKHN0YXRlSW5kZXggPj0gbV9zdGF0ZVJlYWN0aW9ucy5z
aXplKCkpCisgICAgICAgIHJldHVybjsKKworICAgIFZlY3RvcjxET01Qcm9taXNlRGVmZXJyZWQ8
dm9pZD4+IHJlYWN0aW9uczsKKyAgICBtX3N0YXRlUmVhY3Rpb25zW3N0YXRlSW5kZXhdLnN3YXAo
cmVhY3Rpb25zKTsKKworICAgIGZvciAoYXV0byYgcHJvbWlzZSA6IHJlYWN0aW9ucykKKyAgICAg
ICAgcHJvbWlzZS5yZXNvbHZlKCk7Cit9CisKK3ZvaWQgV2ViS2l0QXVkaW9Db250ZXh0OjpzdG9w
KCkKK3sKKyAgICBBTFdBWVNfTE9HKExPR0lERU5USUZJRVIpOworCisgICAgQVNTRVJUKGlzTWFp
blRocmVhZCgpKTsKKworICAgIC8vIFVzdWFsbHkgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCBjYWxs
cyBzdG9wIHR3aWNlLgorICAgIGlmIChtX2lzU3RvcFNjaGVkdWxlZCkKKyAgICAgICAgcmV0dXJu
OworICAgIG1faXNTdG9wU2NoZWR1bGVkID0gdHJ1ZTsKKworICAgIEFTU0VSVChkb2N1bWVudCgp
KTsKKyAgICBkb2N1bWVudCgpLT51cGRhdGVJc1BsYXlpbmdNZWRpYSgpOworCisgICAgdW5pbml0
aWFsaXplKCk7CisgICAgY2xlYXIoKTsKK30KKwordm9pZCBXZWJLaXRBdWRpb0NvbnRleHQ6OnN1
c3BlbmQoUmVhc29uRm9yU3VzcGVuc2lvbikKK3sKKyAgICBpZiAoc3RhdGUoKSA9PSBTdGF0ZTo6
UnVubmluZykgeworICAgICAgICBtX21lZGlhU2Vzc2lvbi0+YmVnaW5JbnRlcnJ1cHRpb24oUGxh
dGZvcm1NZWRpYVNlc3Npb246OlBsYXliYWNrU3VzcGVuZGVkKTsKKyAgICAgICAgZG9jdW1lbnQo
KS0+dXBkYXRlSXNQbGF5aW5nTWVkaWEoKTsKKyAgICB9Cit9CisKK3ZvaWQgV2ViS2l0QXVkaW9D
b250ZXh0OjpyZXN1bWUoKQoreworICAgIGlmIChzdGF0ZSgpID09IFN0YXRlOjpJbnRlcnJ1cHRl
ZCkgeworICAgICAgICBtX21lZGlhU2Vzc2lvbi0+ZW5kSW50ZXJydXB0aW9uKFBsYXRmb3JtTWVk
aWFTZXNzaW9uOjpNYXlSZXN1bWVQbGF5aW5nKTsKKyAgICAgICAgZG9jdW1lbnQoKS0+dXBkYXRl
SXNQbGF5aW5nTWVkaWEoKTsKKyAgICB9Cit9CisKK2NvbnN0IGNoYXIqIFdlYktpdEF1ZGlvQ29u
dGV4dDo6YWN0aXZlRE9NT2JqZWN0TmFtZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuICJXZWJLaXRB
dWRpb0NvbnRleHQiOworfQorCitEb2N1bWVudElkZW50aWZpZXIgV2ViS2l0QXVkaW9Db250ZXh0
Ojpob3N0aW5nRG9jdW1lbnRJZGVudGlmaWVyKCkgY29uc3QKK3sKKyAgICBhdXRvKiBkb2N1bWVu
dCA9IGRvd25jYXN0PERvY3VtZW50PihtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQpOworICAgIHJl
dHVybiBkb2N1bWVudCA/IGRvY3VtZW50LT5pZGVudGlmaWVyKCkgOiBEb2N1bWVudElkZW50aWZp
ZXIgeyB9OworfQorCitib29sIFdlYktpdEF1ZGlvQ29udGV4dDo6aXNTdXNwZW5kZWQoKSBjb25z
dAoreworICAgIHJldHVybiAhZG9jdW1lbnQoKSB8fCBkb2N1bWVudCgpLT5hY3RpdmVET01PYmpl
Y3RzQXJlU3VzcGVuZGVkKCkgfHwgZG9jdW1lbnQoKS0+YWN0aXZlRE9NT2JqZWN0c0FyZVN0b3Bw
ZWQoKTsKK30KKwordm9pZCBXZWJLaXRBdWRpb0NvbnRleHQ6OnZpc2liaWxpdHlTdGF0ZUNoYW5n
ZWQoKQoreworICAgIC8vIERvIG5vdCBzdXNwZW5kIGlmIGF1ZGlvIGlzIGF1ZGlibGUuCisgICAg
aWYgKCFkb2N1bWVudCgpIHx8IG1lZGlhU3RhdGUoKSA9PSBNZWRpYVByb2R1Y2VyOjpJc1BsYXlp
bmdBdWRpbyB8fCBtX2lzU3RvcFNjaGVkdWxlZCkKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYg
KGRvY3VtZW50KCktPmhpZGRlbigpKSB7CisgICAgICAgIGlmIChzdGF0ZSgpID09IFN0YXRlOjpS
dW5uaW5nKSB7CisgICAgICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJ2aXNpYmlsaXR5
U3RhdGVDaGFuZ2VkKCkgU3VzcGVuZGluZyBwbGF5YmFjayBhZnRlciBnb2luZyB0byB0aGUgYmFj
a2dyb3VuZCIpOworICAgICAgICAgICAgbV9tZWRpYVNlc3Npb24tPmJlZ2luSW50ZXJydXB0aW9u
KFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpFbnRlcmluZ0JhY2tncm91bmQpOworICAgICAgICB9Cisg
ICAgfSBlbHNlIHsKKyAgICAgICAgaWYgKHN0YXRlKCkgPT0gU3RhdGU6OkludGVycnVwdGVkKSB7
CisgICAgICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJ2aXNpYmlsaXR5U3RhdGVDaGFu
Z2VkKCkgUmVzdW1pbmcgcGxheWJhY2sgYWZ0ZXIgZW50ZXJpbmcgZm9yZWdyb3VuZCIpOworICAg
ICAgICAgICAgbV9tZWRpYVNlc3Npb24tPmVuZEludGVycnVwdGlvbihQbGF0Zm9ybU1lZGlhU2Vz
c2lvbjo6TWF5UmVzdW1lUGxheWluZyk7CisgICAgICAgIH0KKyAgICB9Cit9CisKK2Jvb2wgV2Vi
S2l0QXVkaW9Db250ZXh0Ojp3b3VsZFRhaW50T3JpZ2luKGNvbnN0IFVSTCYgdXJsKSBjb25zdAor
eworICAgIGlmICh1cmwucHJvdG9jb2xJc0RhdGEoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOwor
CisgICAgaWYgKGF1dG8qIGRvY3VtZW50ID0gdGhpcy0+ZG9jdW1lbnQoKSkKKyAgICAgICAgcmV0
dXJuICFkb2N1bWVudC0+c2VjdXJpdHlPcmlnaW4oKS5jYW5SZXF1ZXN0KHVybCk7CisKKyAgICBy
ZXR1cm4gZmFsc2U7Cit9CisKK0V4Y2VwdGlvbk9yPFJlZjxBdWRpb0J1ZmZlcj4+IFdlYktpdEF1
ZGlvQ29udGV4dDo6Y3JlYXRlQnVmZmVyKHVuc2lnbmVkIG51bWJlck9mQ2hhbm5lbHMsIHNpemVf
dCBudW1iZXJPZkZyYW1lcywgZmxvYXQgc2FtcGxlUmF0ZSkKK3sKKyAgICBhdXRvIGF1ZGlvQnVm
ZmVyID0gQXVkaW9CdWZmZXI6OmNyZWF0ZShudW1iZXJPZkNoYW5uZWxzLCBudW1iZXJPZkZyYW1l
cywgc2FtcGxlUmF0ZSk7CisgICAgaWYgKCFhdWRpb0J1ZmZlcikKKyAgICAgICAgcmV0dXJuIEV4
Y2VwdGlvbiB7IE5vdFN1cHBvcnRlZEVycm9yIH07CisgICAgcmV0dXJuIGF1ZGlvQnVmZmVyLnJl
bGVhc2VOb25OdWxsKCk7Cit9CisKK0V4Y2VwdGlvbk9yPFJlZjxBdWRpb0J1ZmZlcj4+IFdlYktp
dEF1ZGlvQ29udGV4dDo6Y3JlYXRlQnVmZmVyKEFycmF5QnVmZmVyJiBhcnJheUJ1ZmZlciwgYm9v
bCBtaXhUb01vbm8pCit7CisgICAgYXV0byBhdWRpb0J1ZmZlciA9IEF1ZGlvQnVmZmVyOjpjcmVh
dGVGcm9tQXVkaW9GaWxlRGF0YShhcnJheUJ1ZmZlci5kYXRhKCksIGFycmF5QnVmZmVyLmJ5dGVM
ZW5ndGgoKSwgbWl4VG9Nb25vLCBzYW1wbGVSYXRlKCkpOworICAgIGlmICghYXVkaW9CdWZmZXIp
CisgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBTeW50YXhFcnJvciB9OworICAgIHJldHVybiBh
dWRpb0J1ZmZlci5yZWxlYXNlTm9uTnVsbCgpOworfQorCit2b2lkIFdlYktpdEF1ZGlvQ29udGV4
dDo6ZGVjb2RlQXVkaW9EYXRhKFJlZjxBcnJheUJ1ZmZlcj4mJiBhdWRpb0RhdGEsIFJlZlB0cjxB
dWRpb0J1ZmZlckNhbGxiYWNrPiYmIHN1Y2Nlc3NDYWxsYmFjaywgUmVmUHRyPEF1ZGlvQnVmZmVy
Q2FsbGJhY2s+JiYgZXJyb3JDYWxsYmFjaykKK3sKKyAgICBpZiAoIW1fYXVkaW9EZWNvZGVyKQor
ICAgICAgICBtX2F1ZGlvRGVjb2RlciA9IG1ha2VVbmlxdWU8QXN5bmNBdWRpb0RlY29kZXI+KCk7
CisgICAgbV9hdWRpb0RlY29kZXItPmRlY29kZUFzeW5jKFdURk1vdmUoYXVkaW9EYXRhKSwgc2Ft
cGxlUmF0ZSgpLCBXVEZNb3ZlKHN1Y2Nlc3NDYWxsYmFjayksIFdURk1vdmUoZXJyb3JDYWxsYmFj
aykpOworfQorCitFeGNlcHRpb25PcjxSZWY8QXVkaW9CdWZmZXJTb3VyY2VOb2RlPj4gV2ViS2l0
QXVkaW9Db250ZXh0OjpjcmVhdGVCdWZmZXJTb3VyY2UoKQoreworICAgIEFMV0FZU19MT0coTE9H
SURFTlRJRklFUik7CisKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworCisgICAgaWYgKG1f
aXNTdG9wU2NoZWR1bGVkKQorICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgSW52YWxpZFN0YXRl
RXJyb3IgfTsKKworICAgIGxhenlJbml0aWFsaXplKCk7CisgICAgUmVmPEF1ZGlvQnVmZmVyU291
cmNlTm9kZT4gbm9kZSA9IEF1ZGlvQnVmZmVyU291cmNlTm9kZTo6Y3JlYXRlKCp0aGlzLCBzYW1w
bGVSYXRlKCkpOworCisgICAgLy8gQmVjYXVzZSB0aGlzIGlzIGFuIEF1ZGlvU2NoZWR1bGVkU291
cmNlTm9kZSwgdGhlIGNvbnRleHQga2VlcHMgYSByZWZlcmVuY2UgdW50aWwgaXQgaGFzIGZpbmlz
aGVkIHBsYXlpbmcuCisgICAgLy8gV2hlbiB0aGlzIGhhcHBlbnMsIEF1ZGlvU2NoZWR1bGVkU291
cmNlTm9kZTo6ZmluaXNoKCkgY2FsbHMgV2ViS2l0QXVkaW9Db250ZXh0Ojpub3RpZnlOb2RlRmlu
aXNoZWRQcm9jZXNzaW5nKCkuCisgICAgcmVmTm9kZShub2RlKTsKKworICAgIHJldHVybiBub2Rl
OworfQorCisjaWYgRU5BQkxFKFZJREVPKQorCitFeGNlcHRpb25PcjxSZWY8TWVkaWFFbGVtZW50
QXVkaW9Tb3VyY2VOb2RlPj4gV2ViS2l0QXVkaW9Db250ZXh0OjpjcmVhdGVNZWRpYUVsZW1lbnRT
b3VyY2UoSFRNTE1lZGlhRWxlbWVudCYgbWVkaWFFbGVtZW50KQoreworICAgIEFMV0FZU19MT0co
TE9HSURFTlRJRklFUik7CisKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworCisgICAgaWYg
KG1faXNTdG9wU2NoZWR1bGVkIHx8IG1lZGlhRWxlbWVudC5hdWRpb1NvdXJjZU5vZGUoKSkKKyAg
ICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IEludmFsaWRTdGF0ZUVycm9yIH07CisKKyAgICBsYXp5
SW5pdGlhbGl6ZSgpOworCisgICAgYXV0byBub2RlID0gTWVkaWFFbGVtZW50QXVkaW9Tb3VyY2VO
b2RlOjpjcmVhdGUoKnRoaXMsIG1lZGlhRWxlbWVudCk7CisKKyAgICBtZWRpYUVsZW1lbnQuc2V0
QXVkaW9Tb3VyY2VOb2RlKG5vZGUucHRyKCkpOworCisgICAgcmVmTm9kZShub2RlLmdldCgpKTsg
Ly8gY29udGV4dCBrZWVwcyByZWZlcmVuY2UgdW50aWwgbm9kZSBpcyBkaXNjb25uZWN0ZWQKKyAg
ICByZXR1cm4gbm9kZTsKK30KKworI2VuZGlmCisKKyNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQor
CitFeGNlcHRpb25PcjxSZWY8TWVkaWFTdHJlYW1BdWRpb1NvdXJjZU5vZGU+PiBXZWJLaXRBdWRp
b0NvbnRleHQ6OmNyZWF0ZU1lZGlhU3RyZWFtU291cmNlKE1lZGlhU3RyZWFtJiBtZWRpYVN0cmVh
bSkKK3sKKyAgICBBTFdBWVNfTE9HKExPR0lERU5USUZJRVIpOworCisgICAgQVNTRVJUKGlzTWFp
blRocmVhZCgpKTsKKworICAgIGlmIChtX2lzU3RvcFNjaGVkdWxlZCkKKyAgICAgICAgcmV0dXJu
IEV4Y2VwdGlvbiB7IEludmFsaWRTdGF0ZUVycm9yIH07CisKKyAgICBhdXRvIGF1ZGlvVHJhY2tz
ID0gbWVkaWFTdHJlYW0uZ2V0QXVkaW9UcmFja3MoKTsKKyAgICBpZiAoYXVkaW9UcmFja3MuaXNF
bXB0eSgpKQorICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgSW52YWxpZFN0YXRlRXJyb3IgfTsK
KworICAgIE1lZGlhU3RyZWFtVHJhY2sqIHByb3ZpZGVyVHJhY2sgPSBudWxscHRyOworICAgIGZv
ciAoYXV0byYgdHJhY2sgOiBhdWRpb1RyYWNrcykgeworICAgICAgICBpZiAodHJhY2stPmF1ZGlv
U291cmNlUHJvdmlkZXIoKSkgeworICAgICAgICAgICAgcHJvdmlkZXJUcmFjayA9IHRyYWNrLmdl
dCgpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICB9CisgICAgaWYgKCFwcm92
aWRlclRyYWNrKQorICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgSW52YWxpZFN0YXRlRXJyb3Ig
fTsKKworICAgIGxhenlJbml0aWFsaXplKCk7CisKKyAgICBhdXRvIG5vZGUgPSBNZWRpYVN0cmVh
bUF1ZGlvU291cmNlTm9kZTo6Y3JlYXRlKCp0aGlzLCBtZWRpYVN0cmVhbSwgKnByb3ZpZGVyVHJh
Y2spOworICAgIG5vZGUtPnNldEZvcm1hdCgyLCBzYW1wbGVSYXRlKCkpOworCisgICAgcmVmTm9k
ZShub2RlKTsgLy8gY29udGV4dCBrZWVwcyByZWZlcmVuY2UgdW50aWwgbm9kZSBpcyBkaXNjb25u
ZWN0ZWQKKyAgICByZXR1cm4gbm9kZTsKK30KKworRXhjZXB0aW9uT3I8UmVmPE1lZGlhU3RyZWFt
QXVkaW9EZXN0aW5hdGlvbk5vZGU+PiBXZWJLaXRBdWRpb0NvbnRleHQ6OmNyZWF0ZU1lZGlhU3Ry
ZWFtRGVzdGluYXRpb24oKQoreworICAgIGlmIChtX2lzU3RvcFNjaGVkdWxlZCkKKyAgICAgICAg
cmV0dXJuIEV4Y2VwdGlvbiB7IEludmFsaWRTdGF0ZUVycm9yIH07CisKKyAgICAvLyBGSVhNRTog
QWRkIHN1cHBvcnQgZm9yIGFuIG9wdGlvbmFsIGFyZ3VtZW50IHdoaWNoIHNwZWNpZmllcyB0aGUg
bnVtYmVyIG9mIGNoYW5uZWxzLgorICAgIC8vIEZJWE1FOiBUaGUgZGVmYXVsdCBzaG91bGQgcHJv
YmFibHkgYmUgc3RlcmVvIGluc3RlYWQgb2YgbW9uby4KKyAgICByZXR1cm4gTWVkaWFTdHJlYW1B
dWRpb0Rlc3RpbmF0aW9uTm9kZTo6Y3JlYXRlKCp0aGlzLCAxKTsKK30KKworI2VuZGlmCisKK0V4
Y2VwdGlvbk9yPFJlZjxTY3JpcHRQcm9jZXNzb3JOb2RlPj4gV2ViS2l0QXVkaW9Db250ZXh0Ojpj
cmVhdGVTY3JpcHRQcm9jZXNzb3Ioc2l6ZV90IGJ1ZmZlclNpemUsIHNpemVfdCBudW1iZXJPZklu
cHV0Q2hhbm5lbHMsIHNpemVfdCBudW1iZXJPZk91dHB1dENoYW5uZWxzKQoreworICAgIEFMV0FZ
U19MT0coTE9HSURFTlRJRklFUik7CisKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworCisg
ICAgaWYgKG1faXNTdG9wU2NoZWR1bGVkKQorICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgSW52
YWxpZFN0YXRlRXJyb3IgfTsKKworICAgIGxhenlJbml0aWFsaXplKCk7CisKKyAgICAvLyBXM0Mg
RWRpdG9yJ3MgRHJhZnQgMDYgSnVuZSAyMDE3CisgICAgLy8gIGh0dHBzOi8vd2ViYXVkaW8uZ2l0
aHViLmlvL3dlYi1hdWRpby1hcGkvI3dpZGwtQmFzZUF1ZGlvQ29udGV4dC1jcmVhdGVTY3JpcHRQ
cm9jZXNzb3ItU2NyaXB0UHJvY2Vzc29yTm9kZS11bnNpZ25lZC1sb25nLWJ1ZmZlclNpemUtdW5z
aWduZWQtbG9uZy1udW1iZXJPZklucHV0Q2hhbm5lbHMtdW5zaWduZWQtbG9uZy1udW1iZXJPZk91
dHB1dENoYW5uZWxzCisKKyAgICAvLyBUaGUgYnVmZmVyU2l6ZSBwYXJhbWV0ZXIgZGV0ZXJtaW5l
cyB0aGUgYnVmZmVyIHNpemUgaW4gdW5pdHMgb2Ygc2FtcGxlLWZyYW1lcy4gSWYgaXQncyBub3Qg
cGFzc2VkIGluLAorICAgIC8vIG9yIGlmIHRoZSB2YWx1ZSBpcyAwLCB0aGVuIHRoZSBpbXBsZW1l
bnRhdGlvbiB3aWxsIGNob29zZSB0aGUgYmVzdCBidWZmZXIgc2l6ZSBmb3IgdGhlIGdpdmVuIGVu
dmlyb25tZW50LAorICAgIC8vIHdoaWNoIHdpbGwgYmUgY29uc3RhbnQgcG93ZXIgb2YgMiB0aHJv
dWdob3V0IHRoZSBsaWZldGltZSBvZiB0aGUgbm9kZS4gLi4uIElmIHRoZSB2YWx1ZSBvZiB0aGlz
IHBhcmFtZXRlcgorICAgIC8vIGlzIG5vdCBvbmUgb2YgdGhlIGFsbG93ZWQgcG93ZXItb2YtMiB2
YWx1ZXMgbGlzdGVkIGFib3ZlLCBhbiBJbmRleFNpemVFcnJvciBtdXN0IGJlIHRocm93bi4KKyAg
ICBzd2l0Y2ggKGJ1ZmZlclNpemUpIHsKKyAgICBjYXNlIDA6CisjaWYgVVNFKEFVRElPX1NFU1NJ
T04pCisgICAgICAgIC8vIFBpY2sgYSB2YWx1ZSBiZXR3ZWVuIDI1NiAoMl44KSBhbmQgMTYzODQg
KDJeMTQpLCBiYXNlZCBvbiB0aGUgYnVmZmVyIHNpemUgb2YgdGhlIGN1cnJlbnQgQXVkaW9TZXNz
aW9uOgorICAgICAgICBidWZmZXJTaXplID0gMSA8PCBzdGQ6Om1heDxzaXplX3Q+KDgsIHN0ZDo6
bWluPHNpemVfdD4oMTQsIHN0ZDo6bG9nMihBdWRpb1Nlc3Npb246OnNoYXJlZFNlc3Npb24oKS5i
dWZmZXJTaXplKCkpKSk7CisjZWxzZQorICAgICAgICBidWZmZXJTaXplID0gMjA0ODsKKyNlbmRp
ZgorICAgICAgICBicmVhazsKKyAgICBjYXNlIDI1NjoKKyAgICBjYXNlIDUxMjoKKyAgICBjYXNl
IDEwMjQ6CisgICAgY2FzZSAyMDQ4OgorICAgIGNhc2UgNDA5NjoKKyAgICBjYXNlIDgxOTI6Cisg
ICAgY2FzZSAxNjM4NDoKKyAgICAgICAgYnJlYWs7CisgICAgZGVmYXVsdDoKKyAgICAgICAgcmV0
dXJuIEV4Y2VwdGlvbiB7IEluZGV4U2l6ZUVycm9yIH07CisgICAgfQorCisgICAgLy8gQW4gSW5k
ZXhTaXplRXJyb3IgZXhjZXB0aW9uIG11c3QgYmUgdGhyb3duIGlmIGJ1ZmZlclNpemUgb3IgbnVt
YmVyT2ZJbnB1dENoYW5uZWxzIG9yIG51bWJlck9mT3V0cHV0Q2hhbm5lbHMKKyAgICAvLyBhcmUg
b3V0c2lkZSB0aGUgdmFsaWQgcmFuZ2UuIEl0IGlzIGludmFsaWQgZm9yIGJvdGggbnVtYmVyT2ZJ
bnB1dENoYW5uZWxzIGFuZCBudW1iZXJPZk91dHB1dENoYW5uZWxzIHRvIGJlIHplcm8uCisgICAg
Ly8gSW4gdGhpcyBjYXNlIGFuIEluZGV4U2l6ZUVycm9yIG11c3QgYmUgdGhyb3duLgorCisgICAg
aWYgKCFudW1iZXJPZklucHV0Q2hhbm5lbHMgJiYgIW51bWJlck9mT3V0cHV0Q2hhbm5lbHMpCisg
ICAgICAgIHJldHVybiBFeGNlcHRpb24geyBOb3RTdXBwb3J0ZWRFcnJvciB9OworCisgICAgLy8g
VGhpcyBwYXJhbWV0ZXIgW251bWJlck9mSW5wdXRDaGFubmVsc10gZGV0ZXJtaW5lcyB0aGUgbnVt
YmVyIG9mIGNoYW5uZWxzIGZvciB0aGlzIG5vZGUncyBpbnB1dC4gVmFsdWVzIG9mCisgICAgLy8g
dXAgdG8gMzIgbXVzdCBiZSBzdXBwb3J0ZWQuIEEgTm90U3VwcG9ydGVkRXJyb3IgbXVzdCBiZSB0
aHJvd24gaWYgdGhlIG51bWJlciBvZiBjaGFubmVscyBpcyBub3Qgc3VwcG9ydGVkLgorCisgICAg
aWYgKG51bWJlck9mSW5wdXRDaGFubmVscyA+IG1heE51bWJlck9mQ2hhbm5lbHMoKSkKKyAgICAg
ICAgcmV0dXJuIEV4Y2VwdGlvbiB7IE5vdFN1cHBvcnRlZEVycm9yIH07CisKKyAgICAvLyBUaGlz
IHBhcmFtZXRlciBbbnVtYmVyT2ZPdXRwdXRDaGFubmVsc10gZGV0ZXJtaW5lcyB0aGUgbnVtYmVy
IG9mIGNoYW5uZWxzIGZvciB0aGlzIG5vZGUncyBvdXRwdXQuIFZhbHVlcyBvZgorICAgIC8vIHVw
IHRvIDMyIG11c3QgYmUgc3VwcG9ydGVkLiBBIE5vdFN1cHBvcnRlZEVycm9yIG11c3QgYmUgdGhy
b3duIGlmIHRoZSBudW1iZXIgb2YgY2hhbm5lbHMgaXMgbm90IHN1cHBvcnRlZC4KKworICAgIGlm
IChudW1iZXJPZk91dHB1dENoYW5uZWxzID4gbWF4TnVtYmVyT2ZDaGFubmVscygpKQorICAgICAg
ICByZXR1cm4gRXhjZXB0aW9uIHsgTm90U3VwcG9ydGVkRXJyb3IgfTsKKworICAgIGF1dG8gbm9k
ZSA9IFNjcmlwdFByb2Nlc3Nvck5vZGU6OmNyZWF0ZSgqdGhpcywgc2FtcGxlUmF0ZSgpLCBidWZm
ZXJTaXplLCBudW1iZXJPZklucHV0Q2hhbm5lbHMsIG51bWJlck9mT3V0cHV0Q2hhbm5lbHMpOwor
CisgICAgcmVmTm9kZShub2RlKTsgLy8gY29udGV4dCBrZWVwcyByZWZlcmVuY2UgdW50aWwgd2Ug
c3RvcCBtYWtpbmcgamF2YXNjcmlwdCByZW5kZXJpbmcgY2FsbGJhY2tzCisgICAgcmV0dXJuIG5v
ZGU7Cit9CisKK0V4Y2VwdGlvbk9yPFJlZjxCaXF1YWRGaWx0ZXJOb2RlPj4gV2ViS2l0QXVkaW9D
b250ZXh0OjpjcmVhdGVCaXF1YWRGaWx0ZXIoKQoreworICAgIEFMV0FZU19MT0coTE9HSURFTlRJ
RklFUik7CisKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAgIGlmIChtX2lzU3RvcFNj
aGVkdWxlZCkKKyAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IEludmFsaWRTdGF0ZUVycm9yIH07
CisKKyAgICBsYXp5SW5pdGlhbGl6ZSgpOworCisgICAgcmV0dXJuIEJpcXVhZEZpbHRlck5vZGU6
OmNyZWF0ZSgqdGhpcywgc2FtcGxlUmF0ZSgpKTsKK30KKworRXhjZXB0aW9uT3I8UmVmPFdhdmVT
aGFwZXJOb2RlPj4gV2ViS2l0QXVkaW9Db250ZXh0OjpjcmVhdGVXYXZlU2hhcGVyKCkKK3sKKyAg
ICBBTFdBWVNfTE9HKExPR0lERU5USUZJRVIpOworCisgICAgQVNTRVJUKGlzTWFpblRocmVhZCgp
KTsKKyAgICBpZiAobV9pc1N0b3BTY2hlZHVsZWQpCisgICAgICAgIHJldHVybiBFeGNlcHRpb24g
eyBJbnZhbGlkU3RhdGVFcnJvciB9OworCisgICAgbGF6eUluaXRpYWxpemUoKTsKKyAgICByZXR1
cm4gV2F2ZVNoYXBlck5vZGU6OmNyZWF0ZSgqdGhpcyk7Cit9CisKK0V4Y2VwdGlvbk9yPFJlZjxX
ZWJLaXRBdWRpb1Bhbm5lck5vZGU+PiBXZWJLaXRBdWRpb0NvbnRleHQ6OmNyZWF0ZVBhbm5lcigp
Cit7CisgICAgQUxXQVlTX0xPRyhMT0dJREVOVElGSUVSKTsKKworICAgIEFTU0VSVChpc01haW5U
aHJlYWQoKSk7CisgICAgaWYgKG1faXNTdG9wU2NoZWR1bGVkKQorICAgICAgICByZXR1cm4gRXhj
ZXB0aW9uIHsgSW52YWxpZFN0YXRlRXJyb3IgfTsKKworICAgIGxhenlJbml0aWFsaXplKCk7Cisg
ICAgcmV0dXJuIFdlYktpdEF1ZGlvUGFubmVyTm9kZTo6Y3JlYXRlKCp0aGlzLCBzYW1wbGVSYXRl
KCkpOworfQorCitFeGNlcHRpb25PcjxSZWY8Q29udm9sdmVyTm9kZT4+IFdlYktpdEF1ZGlvQ29u
dGV4dDo6Y3JlYXRlQ29udm9sdmVyKCkKK3sKKyAgICBBTFdBWVNfTE9HKExPR0lERU5USUZJRVIp
OworCisgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKyAgICBpZiAobV9pc1N0b3BTY2hlZHVs
ZWQpCisgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBJbnZhbGlkU3RhdGVFcnJvciB9OworCisg
ICAgbGF6eUluaXRpYWxpemUoKTsKKyAgICByZXR1cm4gQ29udm9sdmVyTm9kZTo6Y3JlYXRlKCp0
aGlzLCBzYW1wbGVSYXRlKCkpOworfQorCitFeGNlcHRpb25PcjxSZWY8RHluYW1pY3NDb21wcmVz
c29yTm9kZT4+IFdlYktpdEF1ZGlvQ29udGV4dDo6Y3JlYXRlRHluYW1pY3NDb21wcmVzc29yKCkK
K3sKKyAgICBBTFdBWVNfTE9HKExPR0lERU5USUZJRVIpOworCisgICAgQVNTRVJUKGlzTWFpblRo
cmVhZCgpKTsKKyAgICBpZiAobV9pc1N0b3BTY2hlZHVsZWQpCisgICAgICAgIHJldHVybiBFeGNl
cHRpb24geyBJbnZhbGlkU3RhdGVFcnJvciB9OworCisgICAgbGF6eUluaXRpYWxpemUoKTsKKyAg
ICByZXR1cm4gRHluYW1pY3NDb21wcmVzc29yTm9kZTo6Y3JlYXRlKCp0aGlzLCBzYW1wbGVSYXRl
KCkpOworfQorCitFeGNlcHRpb25PcjxSZWY8QW5hbHlzZXJOb2RlPj4gV2ViS2l0QXVkaW9Db250
ZXh0OjpjcmVhdGVBbmFseXNlcigpCit7CisgICAgQUxXQVlTX0xPRyhMT0dJREVOVElGSUVSKTsK
KworICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisgICAgaWYgKG1faXNTdG9wU2NoZWR1bGVk
KQorICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgSW52YWxpZFN0YXRlRXJyb3IgfTsKKworICAg
IGxhenlJbml0aWFsaXplKCk7CisgICAgcmV0dXJuIEFuYWx5c2VyTm9kZTo6Y3JlYXRlKCp0aGlz
LCBzYW1wbGVSYXRlKCkpOworfQorCitFeGNlcHRpb25PcjxSZWY8R2Fpbk5vZGU+PiBXZWJLaXRB
dWRpb0NvbnRleHQ6OmNyZWF0ZUdhaW4oKQoreworICAgIEFMV0FZU19MT0coTE9HSURFTlRJRklF
Uik7CisKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAgIGlmIChtX2lzU3RvcFNjaGVk
dWxlZCkKKyAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IEludmFsaWRTdGF0ZUVycm9yIH07CisK
KyAgICBsYXp5SW5pdGlhbGl6ZSgpOworICAgIHJldHVybiBHYWluTm9kZTo6Y3JlYXRlKCp0aGlz
LCBzYW1wbGVSYXRlKCkpOworfQorCitFeGNlcHRpb25PcjxSZWY8RGVsYXlOb2RlPj4gV2ViS2l0
QXVkaW9Db250ZXh0OjpjcmVhdGVEZWxheShkb3VibGUgbWF4RGVsYXlUaW1lKQoreworICAgIEFM
V0FZU19MT0coTE9HSURFTlRJRklFUik7CisKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwor
ICAgIGlmIChtX2lzU3RvcFNjaGVkdWxlZCkKKyAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IElu
dmFsaWRTdGF0ZUVycm9yIH07CisKKyAgICBsYXp5SW5pdGlhbGl6ZSgpOworICAgIHJldHVybiBE
ZWxheU5vZGU6OmNyZWF0ZSgqdGhpcywgc2FtcGxlUmF0ZSgpLCBtYXhEZWxheVRpbWUpOworfQor
CitFeGNlcHRpb25PcjxSZWY8Q2hhbm5lbFNwbGl0dGVyTm9kZT4+IFdlYktpdEF1ZGlvQ29udGV4
dDo6Y3JlYXRlQ2hhbm5lbFNwbGl0dGVyKHNpemVfdCBudW1iZXJPZk91dHB1dHMpCit7CisgICAg
QUxXQVlTX0xPRyhMT0dJREVOVElGSUVSKTsKKworICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7
CisgICAgaWYgKG1faXNTdG9wU2NoZWR1bGVkKQorICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsg
SW52YWxpZFN0YXRlRXJyb3IgfTsKKworICAgIGxhenlJbml0aWFsaXplKCk7CisgICAgYXV0byBu
b2RlID0gQ2hhbm5lbFNwbGl0dGVyTm9kZTo6Y3JlYXRlKCp0aGlzLCBzYW1wbGVSYXRlKCksIG51
bWJlck9mT3V0cHV0cyk7CisgICAgaWYgKCFub2RlKQorICAgICAgICByZXR1cm4gRXhjZXB0aW9u
IHsgSW5kZXhTaXplRXJyb3IgfTsKKyAgICByZXR1cm4gbm9kZS5yZWxlYXNlTm9uTnVsbCgpOwor
fQorCitFeGNlcHRpb25PcjxSZWY8Q2hhbm5lbE1lcmdlck5vZGU+PiBXZWJLaXRBdWRpb0NvbnRl
eHQ6OmNyZWF0ZUNoYW5uZWxNZXJnZXIoc2l6ZV90IG51bWJlck9mSW5wdXRzKQoreworICAgIEFM
V0FZU19MT0coTE9HSURFTlRJRklFUik7CisKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwor
ICAgIGlmIChtX2lzU3RvcFNjaGVkdWxlZCkKKyAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IElu
dmFsaWRTdGF0ZUVycm9yIH07CisKKyAgICBsYXp5SW5pdGlhbGl6ZSgpOworICAgIGF1dG8gbm9k
ZSA9IENoYW5uZWxNZXJnZXJOb2RlOjpjcmVhdGUoKnRoaXMsIHNhbXBsZVJhdGUoKSwgbnVtYmVy
T2ZJbnB1dHMpOworICAgIGlmICghbm9kZSkKKyAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IElu
ZGV4U2l6ZUVycm9yIH07CisgICAgcmV0dXJuIG5vZGUucmVsZWFzZU5vbk51bGwoKTsKK30KKwor
RXhjZXB0aW9uT3I8UmVmPE9zY2lsbGF0b3JOb2RlPj4gV2ViS2l0QXVkaW9Db250ZXh0OjpjcmVh
dGVPc2NpbGxhdG9yKCkKK3sKKyAgICBBTFdBWVNfTE9HKExPR0lERU5USUZJRVIpOworCisgICAg
QVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKyAgICBpZiAobV9pc1N0b3BTY2hlZHVsZWQpCisgICAg
ICAgIHJldHVybiBFeGNlcHRpb24geyBJbnZhbGlkU3RhdGVFcnJvciB9OworCisgICAgbGF6eUlu
aXRpYWxpemUoKTsKKworICAgIFJlZjxPc2NpbGxhdG9yTm9kZT4gbm9kZSA9IE9zY2lsbGF0b3JO
b2RlOjpjcmVhdGUoKnRoaXMsIHNhbXBsZVJhdGUoKSk7CisKKyAgICAvLyBCZWNhdXNlIHRoaXMg
aXMgYW4gQXVkaW9TY2hlZHVsZWRTb3VyY2VOb2RlLCB0aGUgY29udGV4dCBrZWVwcyBhIHJlZmVy
ZW5jZSB1bnRpbCBpdCBoYXMgZmluaXNoZWQgcGxheWluZy4KKyAgICAvLyBXaGVuIHRoaXMgaGFw
cGVucywgQXVkaW9TY2hlZHVsZWRTb3VyY2VOb2RlOjpmaW5pc2goKSBjYWxscyBXZWJLaXRBdWRp
b0NvbnRleHQ6Om5vdGlmeU5vZGVGaW5pc2hlZFByb2Nlc3NpbmcoKS4KKyAgICByZWZOb2RlKG5v
ZGUpOworCisgICAgcmV0dXJuIG5vZGU7Cit9CisKK0V4Y2VwdGlvbk9yPFJlZjxQZXJpb2RpY1dh
dmU+PiBXZWJLaXRBdWRpb0NvbnRleHQ6OmNyZWF0ZVBlcmlvZGljV2F2ZShGbG9hdDMyQXJyYXkm
IHJlYWwsIEZsb2F0MzJBcnJheSYgaW1hZ2luYXJ5KQoreworICAgIEFMV0FZU19MT0coTE9HSURF
TlRJRklFUik7CisKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAgIGlmIChtX2lzU3Rv
cFNjaGVkdWxlZCkKKyAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IEludmFsaWRTdGF0ZUVycm9y
IH07CisKKyAgICBpZiAocmVhbC5sZW5ndGgoKSAhPSBpbWFnaW5hcnkubGVuZ3RoKCkgfHwgKHJl
YWwubGVuZ3RoKCkgPiBNYXhQZXJpb2RpY1dhdmVMZW5ndGgpIHx8ICFyZWFsLmxlbmd0aCgpKQor
ICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgSW5kZXhTaXplRXJyb3IgfTsKKyAgICBsYXp5SW5p
dGlhbGl6ZSgpOworICAgIHJldHVybiBQZXJpb2RpY1dhdmU6OmNyZWF0ZShzYW1wbGVSYXRlKCks
IHJlYWwsIGltYWdpbmFyeSk7Cit9CisKK3ZvaWQgV2ViS2l0QXVkaW9Db250ZXh0Ojpub3RpZnlO
b2RlRmluaXNoZWRQcm9jZXNzaW5nKEF1ZGlvTm9kZSogbm9kZSkKK3sKKyAgICBBU1NFUlQoaXNB
dWRpb1RocmVhZCgpKTsKKyAgICBtX2ZpbmlzaGVkTm9kZXMuYXBwZW5kKG5vZGUpOworfQorCit2
b2lkIFdlYktpdEF1ZGlvQ29udGV4dDo6ZGVyZWZGaW5pc2hlZFNvdXJjZU5vZGVzKCkKK3sKKyAg
ICBBU1NFUlQoaXNHcmFwaE93bmVyKCkpOworICAgIEFTU0VSVChpc0F1ZGlvVGhyZWFkKCkgfHwg
aXNBdWRpb1RocmVhZEZpbmlzaGVkKCkpOworICAgIGZvciAoYXV0byYgbm9kZSA6IG1fZmluaXNo
ZWROb2RlcykKKyAgICAgICAgZGVyZWZOb2RlKCpub2RlKTsKKworICAgIG1fZmluaXNoZWROb2Rl
cy5jbGVhcigpOworfQorCit2b2lkIFdlYktpdEF1ZGlvQ29udGV4dDo6cmVmTm9kZShBdWRpb05v
ZGUmIG5vZGUpCit7CisgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKyAgICBBdXRvTG9ja2Vy
IGxvY2tlcigqdGhpcyk7CisKKyAgICBub2RlLnJlZihBdWRpb05vZGU6OlJlZlR5cGVDb25uZWN0
aW9uKTsKKyAgICBtX3JlZmVyZW5jZWROb2Rlcy5hcHBlbmQoJm5vZGUpOworfQorCit2b2lkIFdl
YktpdEF1ZGlvQ29udGV4dDo6ZGVyZWZOb2RlKEF1ZGlvTm9kZSYgbm9kZSkKK3sKKyAgICBBU1NF
UlQoaXNHcmFwaE93bmVyKCkpOworCisgICAgbm9kZS5kZXJlZihBdWRpb05vZGU6OlJlZlR5cGVD
b25uZWN0aW9uKTsKKworICAgIEFTU0VSVChtX3JlZmVyZW5jZWROb2Rlcy5jb250YWlucygmbm9k
ZSkpOworICAgIG1fcmVmZXJlbmNlZE5vZGVzLnJlbW92ZUZpcnN0KCZub2RlKTsKK30KKwordm9p
ZCBXZWJLaXRBdWRpb0NvbnRleHQ6OmRlcmVmVW5maW5pc2hlZFNvdXJjZU5vZGVzKCkKK3sKKyAg
ICBBU1NFUlQoaXNNYWluVGhyZWFkKCkgJiYgaXNBdWRpb1RocmVhZEZpbmlzaGVkKCkpOworICAg
IGZvciAoYXV0byYgbm9kZSA6IG1fcmVmZXJlbmNlZE5vZGVzKQorICAgICAgICBub2RlLT5kZXJl
ZihBdWRpb05vZGU6OlJlZlR5cGVDb25uZWN0aW9uKTsKKworICAgIG1fcmVmZXJlbmNlZE5vZGVz
LmNsZWFyKCk7Cit9CisKK3ZvaWQgV2ViS2l0QXVkaW9Db250ZXh0Ojpsb2NrKGJvb2wmIG11c3RS
ZWxlYXNlTG9jaykKK3sKKyAgICAvLyBEb24ndCBhbGxvdyByZWd1bGFyIGxvY2sgaW4gcmVhbC10
aW1lIGF1ZGlvIHRocmVhZC4KKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworCisgICAgVGhy
ZWFkJiB0aGlzVGhyZWFkID0gVGhyZWFkOjpjdXJyZW50KCk7CisKKyAgICBpZiAoJnRoaXNUaHJl
YWQgPT0gbV9ncmFwaE93bmVyVGhyZWFkKSB7CisgICAgICAgIC8vIFdlIGFscmVhZHkgaGF2ZSB0
aGUgbG9jay4KKyAgICAgICAgbXVzdFJlbGVhc2VMb2NrID0gZmFsc2U7CisgICAgfSBlbHNlIHsK
KyAgICAgICAgLy8gQWNxdWlyZSB0aGUgbG9jay4KKyAgICAgICAgbV9jb250ZXh0R3JhcGhNdXRl
eC5sb2NrKCk7CisgICAgICAgIG1fZ3JhcGhPd25lclRocmVhZCA9ICZ0aGlzVGhyZWFkOworICAg
ICAgICBtdXN0UmVsZWFzZUxvY2sgPSB0cnVlOworICAgIH0KK30KKworYm9vbCBXZWJLaXRBdWRp
b0NvbnRleHQ6OnRyeUxvY2soYm9vbCYgbXVzdFJlbGVhc2VMb2NrKQoreworICAgIFRocmVhZCYg
dGhpc1RocmVhZCA9IFRocmVhZDo6Y3VycmVudCgpOworICAgIGJvb2wgaXNBdWRpb1RocmVhZCA9
ICZ0aGlzVGhyZWFkID09IGF1ZGlvVGhyZWFkKCk7CisKKyAgICAvLyBUcnkgdG8gY2F0Y2ggY2Fz
ZXMgb2YgdXNpbmcgdHJ5IGxvY2sgb24gbWFpbiB0aHJlYWQgLSBpdCBzaG91bGQgdXNlIHJlZ3Vs
YXIgbG9jay4KKyAgICBBU1NFUlQoaXNBdWRpb1RocmVhZCB8fCBpc0F1ZGlvVGhyZWFkRmluaXNo
ZWQoKSk7CisKKyAgICBpZiAoIWlzQXVkaW9UaHJlYWQpIHsKKyAgICAgICAgLy8gSW4gcmVsZWFz
ZSBidWlsZCB0cmVhdCB0cnlMb2NrKCkgYXMgbG9jaygpIChzaW5jZSBhYm92ZSBBU1NFUlQoaXNB
dWRpb1RocmVhZCkgbmV2ZXIgZmlyZXMpIC0gdGhpcyBpcyB0aGUgYmVzdCB3ZSBjYW4gZG8uCisg
ICAgICAgIGxvY2sobXVzdFJlbGVhc2VMb2NrKTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAg
fQorCisgICAgYm9vbCBoYXNMb2NrOworCisgICAgaWYgKCZ0aGlzVGhyZWFkID09IG1fZ3JhcGhP
d25lclRocmVhZCkgeworICAgICAgICAvLyBUaHJlYWQgYWxyZWFkeSBoYXMgdGhlIGxvY2suCisg
ICAgICAgIGhhc0xvY2sgPSB0cnVlOworICAgICAgICBtdXN0UmVsZWFzZUxvY2sgPSBmYWxzZTsK
KyAgICB9IGVsc2UgeworICAgICAgICAvLyBEb24ndCBhbHJlYWR5IGhhdmUgdGhlIGxvY2sgLSB0
cnkgdG8gYWNxdWlyZSBpdC4KKyAgICAgICAgaGFzTG9jayA9IG1fY29udGV4dEdyYXBoTXV0ZXgu
dHJ5TG9jaygpOworCisgICAgICAgIGlmIChoYXNMb2NrKQorICAgICAgICAgICAgbV9ncmFwaE93
bmVyVGhyZWFkID0gJnRoaXNUaHJlYWQ7CisKKyAgICAgICAgbXVzdFJlbGVhc2VMb2NrID0gaGFz
TG9jazsKKyAgICB9CisKKyAgICByZXR1cm4gaGFzTG9jazsKK30KKwordm9pZCBXZWJLaXRBdWRp
b0NvbnRleHQ6OnVubG9jaygpCit7CisgICAgQVNTRVJUKG1fZ3JhcGhPd25lclRocmVhZCA9PSAm
VGhyZWFkOjpjdXJyZW50KCkpOworCisgICAgbV9ncmFwaE93bmVyVGhyZWFkID0gbnVsbHB0cjsK
KyAgICBtX2NvbnRleHRHcmFwaE11dGV4LnVubG9jaygpOworfQorCitib29sIFdlYktpdEF1ZGlv
Q29udGV4dDo6aXNBdWRpb1RocmVhZCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fYXVkaW9UaHJl
YWQgPT0gJlRocmVhZDo6Y3VycmVudCgpOworfQorCitib29sIFdlYktpdEF1ZGlvQ29udGV4dDo6
aXNHcmFwaE93bmVyKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9ncmFwaE93bmVyVGhyZWFkID09
ICZUaHJlYWQ6OmN1cnJlbnQoKTsKK30KKwordm9pZCBXZWJLaXRBdWRpb0NvbnRleHQ6OmFkZERl
ZmVycmVkRmluaXNoRGVyZWYoQXVkaW9Ob2RlKiBub2RlKQoreworICAgIEFTU0VSVChpc0F1ZGlv
VGhyZWFkKCkpOworICAgIG1fZGVmZXJyZWRGaW5pc2hEZXJlZkxpc3QuYXBwZW5kKG5vZGUpOwor
fQorCit2b2lkIFdlYktpdEF1ZGlvQ29udGV4dDo6aGFuZGxlUHJlUmVuZGVyVGFza3MoKQorewor
ICAgIEFTU0VSVChpc0F1ZGlvVGhyZWFkKCkpOworCisgICAgLy8gQXQgdGhlIGJlZ2lubmluZyBv
ZiBldmVyeSByZW5kZXIgcXVhbnR1bSwgdHJ5IHRvIHVwZGF0ZSB0aGUgaW50ZXJuYWwgcmVuZGVy
aW5nIGdyYXBoIHN0YXRlIChmcm9tIG1haW4gdGhyZWFkIGNoYW5nZXMpLgorICAgIC8vIEl0J3Mg
T0sgaWYgdGhlIHRyeUxvY2soKSBmYWlscywgd2UnbGwganVzdCB0YWtlIHNsaWdodGx5IGxvbmdl
ciB0byBwaWNrIHVwIHRoZSBjaGFuZ2VzLgorICAgIGJvb2wgbXVzdFJlbGVhc2VMb2NrOworICAg
IGlmICh0cnlMb2NrKG11c3RSZWxlYXNlTG9jaykpIHsKKyAgICAgICAgLy8gRml4dXAgdGhlIHN0
YXRlIG9mIGFueSBkaXJ0eSBBdWRpb1N1bW1pbmdKdW5jdGlvbnMgYW5kIEF1ZGlvTm9kZU91dHB1
dHMuCisgICAgICAgIGhhbmRsZURpcnR5QXVkaW9TdW1taW5nSnVuY3Rpb25zKCk7CisgICAgICAg
IGhhbmRsZURpcnR5QXVkaW9Ob2RlT3V0cHV0cygpOworCisgICAgICAgIHVwZGF0ZUF1dG9tYXRp
Y1B1bGxOb2RlcygpOworCisgICAgICAgIGlmIChtdXN0UmVsZWFzZUxvY2spCisgICAgICAgICAg
ICB1bmxvY2soKTsKKyAgICB9Cit9CisKK3ZvaWQgV2ViS2l0QXVkaW9Db250ZXh0OjpoYW5kbGVQ
b3N0UmVuZGVyVGFza3MoKQoreworICAgIEFTU0VSVChpc0F1ZGlvVGhyZWFkKCkpOworCisgICAg
Ly8gTXVzdCB1c2UgYSB0cnlMb2NrKCkgaGVyZSB0b28uIERvbid0IHdvcnJ5LCB0aGUgbG9jayB3
aWxsIHZlcnkgcmFyZWx5IGJlIGNvbnRlbmRlZCBhbmQgdGhpcyBtZXRob2QgaXMgY2FsbGVkIGZy
ZXF1ZW50bHkuCisgICAgLy8gVGhlIHdvcnN0IHRoYXQgY2FuIGhhcHBlbiBpcyB0aGF0IHRoZXJl
IHdpbGwgYmUgc29tZSBub2RlcyB3aGljaCB3aWxsIHRha2Ugc2xpZ2h0bHkgbG9uZ2VyIHRoYW4g
dXN1YWwgdG8gYmUgZGVsZXRlZCBvciByZW1vdmVkCisgICAgLy8gZnJvbSB0aGUgcmVuZGVyIGdy
YXBoIChpbiB3aGljaCBjYXNlIHRoZXknbGwgcmVuZGVyIHNpbGVuY2UpLgorICAgIGJvb2wgbXVz
dFJlbGVhc2VMb2NrOworICAgIGlmICh0cnlMb2NrKG11c3RSZWxlYXNlTG9jaykpIHsKKyAgICAg
ICAgLy8gVGFrZSBjYXJlIG9mIGZpbmlzaGluZyBhbnkgZGVyZWZzIHdoZXJlIHRoZSB0cnlMb2Nr
KCkgZmFpbGVkIHByZXZpb3VzbHkuCisgICAgICAgIGhhbmRsZURlZmVycmVkRmluaXNoRGVyZWZz
KCk7CisKKyAgICAgICAgLy8gRHluYW1pY2FsbHkgY2xlYW4gdXAgbm9kZXMgd2hpY2ggYXJlIG5v
IGxvbmdlciBuZWVkZWQuCisgICAgICAgIGRlcmVmRmluaXNoZWRTb3VyY2VOb2RlcygpOworCisg
ICAgICAgIC8vIERvbid0IGRlbGV0ZSBpbiB0aGUgcmVhbC10aW1lIHRocmVhZC4gTGV0IHRoZSBt
YWluIHRocmVhZCBkbyBpdC4KKyAgICAgICAgLy8gUmVmLWNvdW50ZWQgb2JqZWN0cyBoZWxkIGJ5
IGNlcnRhaW4gQXVkaW9Ob2RlcyBtYXkgbm90IGJlIHRocmVhZC1zYWZlLgorICAgICAgICBzY2hl
ZHVsZU5vZGVEZWxldGlvbigpOworCisgICAgICAgIC8vIEZpeHVwIHRoZSBzdGF0ZSBvZiBhbnkg
ZGlydHkgQXVkaW9TdW1taW5nSnVuY3Rpb25zIGFuZCBBdWRpb05vZGVPdXRwdXRzLgorICAgICAg
ICBoYW5kbGVEaXJ0eUF1ZGlvU3VtbWluZ0p1bmN0aW9ucygpOworICAgICAgICBoYW5kbGVEaXJ0
eUF1ZGlvTm9kZU91dHB1dHMoKTsKKworICAgICAgICB1cGRhdGVBdXRvbWF0aWNQdWxsTm9kZXMo
KTsKKworICAgICAgICBpZiAobXVzdFJlbGVhc2VMb2NrKQorICAgICAgICAgICAgdW5sb2NrKCk7
CisgICAgfQorfQorCit2b2lkIFdlYktpdEF1ZGlvQ29udGV4dDo6aGFuZGxlRGVmZXJyZWRGaW5p
c2hEZXJlZnMoKQoreworICAgIEFTU0VSVChpc0F1ZGlvVGhyZWFkKCkgJiYgaXNHcmFwaE93bmVy
KCkpOworICAgIGZvciAoYXV0byYgbm9kZSA6IG1fZGVmZXJyZWRGaW5pc2hEZXJlZkxpc3QpCisg
ICAgICAgIG5vZGUtPmZpbmlzaERlcmVmKEF1ZGlvTm9kZTo6UmVmVHlwZUNvbm5lY3Rpb24pOwor
CisgICAgbV9kZWZlcnJlZEZpbmlzaERlcmVmTGlzdC5jbGVhcigpOworfQorCit2b2lkIFdlYktp
dEF1ZGlvQ29udGV4dDo6bWFya0ZvckRlbGV0aW9uKEF1ZGlvTm9kZSYgbm9kZSkKK3sKKyAgICBB
U1NFUlQoaXNHcmFwaE93bmVyKCkpOworCisgICAgaWYgKGlzQXVkaW9UaHJlYWRGaW5pc2hlZCgp
KQorICAgICAgICBtX25vZGVzVG9EZWxldGUuYXBwZW5kKCZub2RlKTsKKyAgICBlbHNlCisgICAg
ICAgIG1fbm9kZXNNYXJrZWRGb3JEZWxldGlvbi5hcHBlbmQoJm5vZGUpOworCisgICAgLy8gVGhp
cyBpcyBwcm9iYWJseSB0aGUgYmVzdCB0aW1lIGZvciB1cyB0byByZW1vdmUgdGhlIG5vZGUgZnJv
bSBhdXRvbWF0aWMgcHVsbCBsaXN0LAorICAgIC8vIHNpbmNlIGFsbCBjb25uZWN0aW9ucyBhcmUg
Z29uZSBhbmQgd2UgaG9sZCB0aGUgZ3JhcGggbG9jay4gVGhlbiB3aGVuIGhhbmRsZVBvc3RSZW5k
ZXJUYXNrcygpCisgICAgLy8gZ2V0cyBhIGNoYW5jZSB0byBzY2hlZHVsZSB0aGUgZGVsZXRpb24g
d29yaywgdXBkYXRlQXV0b21hdGljUHVsbE5vZGVzKCkgYWxzbyBnZXRzIGEgY2hhbmNlIHRvCisg
ICAgLy8gbW9kaWZ5IG1fcmVuZGVyaW5nQXV0b21hdGljUHVsbE5vZGVzLgorICAgIHJlbW92ZUF1
dG9tYXRpY1B1bGxOb2RlKG5vZGUpOworfQorCit2b2lkIFdlYktpdEF1ZGlvQ29udGV4dDo6c2No
ZWR1bGVOb2RlRGVsZXRpb24oKQoreworICAgIGJvb2wgaXNHb29kID0gbV9pc0luaXRpYWxpemVk
ICYmIGlzR3JhcGhPd25lcigpOworICAgIEFTU0VSVChpc0dvb2QpOworICAgIGlmICghaXNHb29k
KQorICAgICAgICByZXR1cm47CisKKyAgICAvLyBNYWtlIHN1cmUgdG8gY2FsbCBkZWxldGVNYXJr
ZWROb2RlcygpIG9uIG1haW4gdGhyZWFkLgorICAgIGlmIChtX25vZGVzTWFya2VkRm9yRGVsZXRp
b24uc2l6ZSgpICYmICFtX2lzRGVsZXRpb25TY2hlZHVsZWQpIHsKKyAgICAgICAgbV9ub2Rlc1Rv
RGVsZXRlLmFwcGVuZFZlY3RvcihtX25vZGVzTWFya2VkRm9yRGVsZXRpb24pOworICAgICAgICBt
X25vZGVzTWFya2VkRm9yRGVsZXRpb24uY2xlYXIoKTsKKworICAgICAgICBtX2lzRGVsZXRpb25T
Y2hlZHVsZWQgPSB0cnVlOworCisgICAgICAgIGNhbGxPbk1haW5UaHJlYWQoW3Byb3RlY3RlZFRo
aXMgPSBtYWtlUmVmKCp0aGlzKV0oKSBtdXRhYmxlIHsKKyAgICAgICAgICAgIHByb3RlY3RlZFRo
aXMtPmRlbGV0ZU1hcmtlZE5vZGVzKCk7CisgICAgICAgIH0pOworICAgIH0KK30KKwordm9pZCBX
ZWJLaXRBdWRpb0NvbnRleHQ6OmRlbGV0ZU1hcmtlZE5vZGVzKCkKK3sKKyAgICBBU1NFUlQoaXNN
YWluVGhyZWFkKCkpOworCisgICAgLy8gUHJvdGVjdCB0aGlzIG9iamVjdCBmcm9tIGJlaW5nIGRl
bGV0ZWQgYmVmb3JlIHdlIHJlbGVhc2UgdGhlIG11dGV4IGxvY2tlZCBieSBBdXRvTG9ja2VyLgor
ICAgIFJlZjxXZWJLaXRBdWRpb0NvbnRleHQ+IHByb3RlY3RlZFRoaXMoKnRoaXMpOworICAgIHsK
KyAgICAgICAgQXV0b0xvY2tlciBsb2NrZXIoKnRoaXMpOworCisgICAgICAgIHdoaWxlIChtX25v
ZGVzVG9EZWxldGUuc2l6ZSgpKSB7CisgICAgICAgICAgICBBdWRpb05vZGUqIG5vZGUgPSBtX25v
ZGVzVG9EZWxldGUudGFrZUxhc3QoKTsKKworICAgICAgICAgICAgLy8gQmVmb3JlIGRlbGV0aW5n
IHRoZSBub2RlLCBjbGVhciBvdXQgYW55IEF1ZGlvTm9kZUlucHV0cyBmcm9tIG1fZGlydHlTdW1t
aW5nSnVuY3Rpb25zLgorICAgICAgICAgICAgdW5zaWduZWQgbnVtYmVyT2ZJbnB1dHMgPSBub2Rl
LT5udW1iZXJPZklucHV0cygpOworICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8
IG51bWJlck9mSW5wdXRzOyArK2kpCisgICAgICAgICAgICAgICAgbV9kaXJ0eVN1bW1pbmdKdW5j
dGlvbnMucmVtb3ZlKG5vZGUtPmlucHV0KGkpKTsKKworICAgICAgICAgICAgLy8gQmVmb3JlIGRl
bGV0aW5nIHRoZSBub2RlLCBjbGVhciBvdXQgYW55IEF1ZGlvTm9kZU91dHB1dHMgZnJvbSBtX2Rp
cnR5QXVkaW9Ob2RlT3V0cHV0cy4KKyAgICAgICAgICAgIHVuc2lnbmVkIG51bWJlck9mT3V0cHV0
cyA9IG5vZGUtPm51bWJlck9mT3V0cHV0cygpOworICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBp
ID0gMDsgaSA8IG51bWJlck9mT3V0cHV0czsgKytpKQorICAgICAgICAgICAgICAgIG1fZGlydHlB
dWRpb05vZGVPdXRwdXRzLnJlbW92ZShub2RlLT5vdXRwdXQoaSkpOworCisgICAgICAgICAgICAv
LyBGaW5hbGx5LCBkZWxldGUgaXQuCisgICAgICAgICAgICBkZWxldGUgbm9kZTsKKyAgICAgICAg
fQorICAgICAgICBtX2lzRGVsZXRpb25TY2hlZHVsZWQgPSBmYWxzZTsKKyAgICB9Cit9CisKK3Zv
aWQgV2ViS2l0QXVkaW9Db250ZXh0OjptYXJrU3VtbWluZ0p1bmN0aW9uRGlydHkoQXVkaW9TdW1t
aW5nSnVuY3Rpb24qIHN1bW1pbmdKdW5jdGlvbikKK3sKKyAgICBBU1NFUlQoaXNHcmFwaE93bmVy
KCkpOworICAgIG1fZGlydHlTdW1taW5nSnVuY3Rpb25zLmFkZChzdW1taW5nSnVuY3Rpb24pOwor
fQorCit2b2lkIFdlYktpdEF1ZGlvQ29udGV4dDo6cmVtb3ZlTWFya2VkU3VtbWluZ0p1bmN0aW9u
KEF1ZGlvU3VtbWluZ0p1bmN0aW9uKiBzdW1taW5nSnVuY3Rpb24pCit7CisgICAgQVNTRVJUKGlz
TWFpblRocmVhZCgpKTsKKyAgICBBdXRvTG9ja2VyIGxvY2tlcigqdGhpcyk7CisgICAgbV9kaXJ0
eVN1bW1pbmdKdW5jdGlvbnMucmVtb3ZlKHN1bW1pbmdKdW5jdGlvbik7Cit9CisKK0V2ZW50VGFy
Z2V0SW50ZXJmYWNlIFdlYktpdEF1ZGlvQ29udGV4dDo6ZXZlbnRUYXJnZXRJbnRlcmZhY2UoKSBj
b25zdAoreworICAgIHJldHVybiBXZWJLaXRBdWRpb0NvbnRleHRFdmVudFRhcmdldEludGVyZmFj
ZVR5cGU7Cit9CisKK3ZvaWQgV2ViS2l0QXVkaW9Db250ZXh0OjptYXJrQXVkaW9Ob2RlT3V0cHV0
RGlydHkoQXVkaW9Ob2RlT3V0cHV0KiBvdXRwdXQpCit7CisgICAgQVNTRVJUKGlzR3JhcGhPd25l
cigpKTsKKyAgICBtX2RpcnR5QXVkaW9Ob2RlT3V0cHV0cy5hZGQob3V0cHV0KTsKK30KKwordm9p
ZCBXZWJLaXRBdWRpb0NvbnRleHQ6OmhhbmRsZURpcnR5QXVkaW9TdW1taW5nSnVuY3Rpb25zKCkK
K3sKKyAgICBBU1NFUlQoaXNHcmFwaE93bmVyKCkpOworCisgICAgZm9yIChhdXRvJiBqdW5jdGlv
biA6IG1fZGlydHlTdW1taW5nSnVuY3Rpb25zKQorICAgICAgICBqdW5jdGlvbi0+dXBkYXRlUmVu
ZGVyaW5nU3RhdGUoKTsKKworICAgIG1fZGlydHlTdW1taW5nSnVuY3Rpb25zLmNsZWFyKCk7Cit9
CisKK3ZvaWQgV2ViS2l0QXVkaW9Db250ZXh0OjpoYW5kbGVEaXJ0eUF1ZGlvTm9kZU91dHB1dHMo
KQoreworICAgIEFTU0VSVChpc0dyYXBoT3duZXIoKSk7CisKKyAgICBmb3IgKGF1dG8mIG91dHB1
dCA6IG1fZGlydHlBdWRpb05vZGVPdXRwdXRzKQorICAgICAgICBvdXRwdXQtPnVwZGF0ZVJlbmRl
cmluZ1N0YXRlKCk7CisKKyAgICBtX2RpcnR5QXVkaW9Ob2RlT3V0cHV0cy5jbGVhcigpOworfQor
Cit2b2lkIFdlYktpdEF1ZGlvQ29udGV4dDo6YWRkQXV0b21hdGljUHVsbE5vZGUoQXVkaW9Ob2Rl
JiBub2RlKQoreworICAgIEFTU0VSVChpc0dyYXBoT3duZXIoKSk7CisKKyAgICBpZiAobV9hdXRv
bWF0aWNQdWxsTm9kZXMuYWRkKCZub2RlKS5pc05ld0VudHJ5KQorICAgICAgICBtX2F1dG9tYXRp
Y1B1bGxOb2Rlc05lZWRVcGRhdGluZyA9IHRydWU7Cit9CisKK3ZvaWQgV2ViS2l0QXVkaW9Db250
ZXh0OjpyZW1vdmVBdXRvbWF0aWNQdWxsTm9kZShBdWRpb05vZGUmIG5vZGUpCit7CisgICAgQVNT
RVJUKGlzR3JhcGhPd25lcigpKTsKKworICAgIGlmIChtX2F1dG9tYXRpY1B1bGxOb2Rlcy5yZW1v
dmUoJm5vZGUpKQorICAgICAgICBtX2F1dG9tYXRpY1B1bGxOb2Rlc05lZWRVcGRhdGluZyA9IHRy
dWU7Cit9CisKK3ZvaWQgV2ViS2l0QXVkaW9Db250ZXh0Ojp1cGRhdGVBdXRvbWF0aWNQdWxsTm9k
ZXMoKQoreworICAgIEFTU0VSVChpc0dyYXBoT3duZXIoKSk7CisKKyAgICBpZiAobV9hdXRvbWF0
aWNQdWxsTm9kZXNOZWVkVXBkYXRpbmcpIHsKKyAgICAgICAgLy8gQ29weSBmcm9tIG1fYXV0b21h
dGljUHVsbE5vZGVzIHRvIG1fcmVuZGVyaW5nQXV0b21hdGljUHVsbE5vZGVzLgorICAgICAgICBt
X3JlbmRlcmluZ0F1dG9tYXRpY1B1bGxOb2Rlcy5yZXNpemUobV9hdXRvbWF0aWNQdWxsTm9kZXMu
c2l6ZSgpKTsKKworICAgICAgICB1bnNpZ25lZCBpID0gMDsKKyAgICAgICAgZm9yIChhdXRvJiBv
dXRwdXQgOiBtX2F1dG9tYXRpY1B1bGxOb2RlcykKKyAgICAgICAgICAgIG1fcmVuZGVyaW5nQXV0
b21hdGljUHVsbE5vZGVzW2krK10gPSBvdXRwdXQ7CisKKyAgICAgICAgbV9hdXRvbWF0aWNQdWxs
Tm9kZXNOZWVkVXBkYXRpbmcgPSBmYWxzZTsKKyAgICB9Cit9CisKK3ZvaWQgV2ViS2l0QXVkaW9D
b250ZXh0Ojpwcm9jZXNzQXV0b21hdGljUHVsbE5vZGVzKHNpemVfdCBmcmFtZXNUb1Byb2Nlc3Mp
Cit7CisgICAgQVNTRVJUKGlzQXVkaW9UaHJlYWQoKSk7CisKKyAgICBmb3IgKGF1dG8mIG5vZGUg
OiBtX3JlbmRlcmluZ0F1dG9tYXRpY1B1bGxOb2RlcykKKyAgICAgICAgbm9kZS0+cHJvY2Vzc0lm
TmVjZXNzYXJ5KGZyYW1lc1RvUHJvY2Vzcyk7Cit9CisKK3ZvaWQgV2ViS2l0QXVkaW9Db250ZXh0
Ojpub2RlV2lsbEJlZ2luUGxheWJhY2soKQoreworICAgIC8vIENhbGxlZCBieSBzY2hlZHVsZWQg
QXVkaW9Ob2RlcyB3aGVuIGNsaWVudHMgc2NoZWR1bGUgdGhlaXIgc3RhcnQgdGltZXMuCisgICAg
Ly8gUHJpb3IgdG8gdGhlIGludHJvZHVjdGlvbiBvZiBzdXNwZW5kKCksIHJlc3VtZSgpLCBhbmQg
c3RvcCgpLCBzdGFydGluZworICAgIC8vIGEgc2NoZWR1bGVkIEF1ZGlvTm9kZSB3b3VsZCByZW1v
dmUgdGhlIHVzZXItZ2VzdHVyZSByZXN0cmljdGlvbiwgaWYgcHJlc2VudCwKKyAgICAvLyBhbmQg
d291bGQgdGh1cyB1bm11dGUgdGhlIGNvbnRleHQuIE5vdyB0aGF0IEF1ZGlvQ29udGV4dCBzdGF5
cyBpbiB0aGUKKyAgICAvLyAic3VzcGVuZGVkIiBzdGF0ZSBpZiBhIHVzZXItZ2VzdHVyZSByZXN0
cmljdGlvbiBpcyBwcmVzZW50LCBzdGFydGluZyBhCisgICAgLy8gc2NoZWR1bGUgQXVkaW9Ob2Rl
IHNob3VsZCBzZXQgdGhlIHN0YXRlIHRvICJydW5uaW5nIiwgYnV0IG9ubHkgaWYgdGhlCisgICAg
Ly8gdXNlci1nZXN0dXJlIHJlc3RyaWN0aW9uIGlzIHNldC4KKyAgICBpZiAodXNlckdlc3R1cmVS
ZXF1aXJlZEZvckF1ZGlvU3RhcnQoKSkKKyAgICAgICAgc3RhcnRSZW5kZXJpbmcoKTsKK30KKwor
c3RhdGljIGJvb2wgc2hvdWxkRG9jdW1lbnRBbGxvd1dlYkF1ZGlvVG9BdXRvUGxheShjb25zdCBE
b2N1bWVudCYgZG9jdW1lbnQpCit7CisgICAgaWYgKGRvY3VtZW50LnByb2Nlc3NpbmdVc2VyR2Vz
dHVyZUZvck1lZGlhKCkgfHwgZG9jdW1lbnQuaXNDYXB0dXJpbmcoKSkKKyAgICAgICAgcmV0dXJu
IHRydWU7CisgICAgcmV0dXJuIGRvY3VtZW50LnF1aXJrcygpLnNob3VsZEF1dG9wbGF5V2ViQXVk
aW9Gb3JBcmJpdHJhcnlVc2VyR2VzdHVyZSgpICYmIGRvY3VtZW50LnRvcERvY3VtZW50KCkuaGFz
SGFkVXNlckludGVyYWN0aW9uKCk7Cit9CisKK2Jvb2wgV2ViS2l0QXVkaW9Db250ZXh0Ojp3aWxs
QmVnaW5QbGF5YmFjaygpCit7CisgICAgYXV0byogZG9jdW1lbnQgPSB0aGlzLT5kb2N1bWVudCgp
OworICAgIGlmICghZG9jdW1lbnQpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGlmICh1
c2VyR2VzdHVyZVJlcXVpcmVkRm9yQXVkaW9TdGFydCgpKSB7CisgICAgICAgIGlmICghc2hvdWxk
RG9jdW1lbnRBbGxvd1dlYkF1ZGlvVG9BdXRvUGxheSgqZG9jdW1lbnQpKSB7CisgICAgICAgICAg
ICBBTFdBWVNfTE9HKExPR0lERU5USUZJRVIsICJyZXR1cm5pbmcgZmFsc2UsIG5vdCBwcm9jZXNz
aW5nIHVzZXIgZ2VzdHVyZSBvciBjYXB0dXJpbmciKTsKKyAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICAgICAgfQorICAgICAgICByZW1vdmVCZWhhdmlvclJlc3RyaWN0aW9uKFdlYktpdEF1
ZGlvQ29udGV4dDo6UmVxdWlyZVVzZXJHZXN0dXJlRm9yQXVkaW9TdGFydFJlc3RyaWN0aW9uKTsK
KyAgICB9CisKKyAgICBpZiAocGFnZUNvbnNlbnRSZXF1aXJlZEZvckF1ZGlvU3RhcnQoKSkgewor
ICAgICAgICBhdXRvKiBwYWdlID0gZG9jdW1lbnQtPnBhZ2UoKTsKKyAgICAgICAgaWYgKHBhZ2Ug
JiYgIXBhZ2UtPmNhblN0YXJ0TWVkaWEoKSkgeworICAgICAgICAgICAgZG9jdW1lbnQtPmFkZE1l
ZGlhQ2FuU3RhcnRMaXN0ZW5lcigqdGhpcyk7CisgICAgICAgICAgICBBTFdBWVNfTE9HKExPR0lE
RU5USUZJRVIsICJyZXR1cm5pbmcgZmFsc2UsIHBhZ2UgZG9lc24ndCBhbGxvdyBtZWRpYSB0byBz
dGFydCIpOworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisgICAgICAgIHJl
bW92ZUJlaGF2aW9yUmVzdHJpY3Rpb24oV2ViS2l0QXVkaW9Db250ZXh0OjpSZXF1aXJlUGFnZUNv
bnNlbnRGb3JBdWRpb1N0YXJ0UmVzdHJpY3Rpb24pOworICAgIH0KKworICAgIGF1dG8gd2lsbEJl
Z2luID0gbV9tZWRpYVNlc3Npb24tPmNsaWVudFdpbGxCZWdpblBsYXliYWNrKCk7CisgICAgQUxX
QVlTX0xPRyhMT0dJREVOVElGSUVSLCAicmV0dXJuaW5nICIsIHdpbGxCZWdpbik7CisKKyAgICBy
ZXR1cm4gd2lsbEJlZ2luOworfQorCitib29sIFdlYktpdEF1ZGlvQ29udGV4dDo6d2lsbFBhdXNl
UGxheWJhY2soKQoreworICAgIGF1dG8qIGRvY3VtZW50ID0gdGhpcy0+ZG9jdW1lbnQoKTsKKyAg
ICBpZiAoIWRvY3VtZW50KQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBpZiAodXNlckdl
c3R1cmVSZXF1aXJlZEZvckF1ZGlvU3RhcnQoKSkgeworICAgICAgICBpZiAoIWRvY3VtZW50LT5w
cm9jZXNzaW5nVXNlckdlc3R1cmVGb3JNZWRpYSgpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OworICAgICAgICByZW1vdmVCZWhhdmlvclJlc3RyaWN0aW9uKFdlYktpdEF1ZGlvQ29udGV4dDo6
UmVxdWlyZVVzZXJHZXN0dXJlRm9yQXVkaW9TdGFydFJlc3RyaWN0aW9uKTsKKyAgICB9CisKKyAg
ICBpZiAocGFnZUNvbnNlbnRSZXF1aXJlZEZvckF1ZGlvU3RhcnQoKSkgeworICAgICAgICBhdXRv
KiBwYWdlID0gZG9jdW1lbnQtPnBhZ2UoKTsKKyAgICAgICAgaWYgKHBhZ2UgJiYgIXBhZ2UtPmNh
blN0YXJ0TWVkaWEoKSkgeworICAgICAgICAgICAgZG9jdW1lbnQtPmFkZE1lZGlhQ2FuU3RhcnRM
aXN0ZW5lcigqdGhpcyk7CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKyAg
ICAgICAgcmVtb3ZlQmVoYXZpb3JSZXN0cmljdGlvbihXZWJLaXRBdWRpb0NvbnRleHQ6OlJlcXVp
cmVQYWdlQ29uc2VudEZvckF1ZGlvU3RhcnRSZXN0cmljdGlvbik7CisgICAgfQorCisgICAgcmV0
dXJuIG1fbWVkaWFTZXNzaW9uLT5jbGllbnRXaWxsUGF1c2VQbGF5YmFjaygpOworfQorCit2b2lk
IFdlYktpdEF1ZGlvQ29udGV4dDo6c3RhcnRSZW5kZXJpbmcoKQoreworICAgIEFMV0FZU19MT0co
TE9HSURFTlRJRklFUik7CisgICAgaWYgKG1faXNTdG9wU2NoZWR1bGVkIHx8ICF3aWxsQmVnaW5Q
bGF5YmFjaygpKQorICAgICAgICByZXR1cm47CisKKyAgICBtYWtlUGVuZGluZ0FjdGl2aXR5KCk7
CisKKyAgICBkZXN0aW5hdGlvbigpLT5zdGFydFJlbmRlcmluZygpOworICAgIHNldFN0YXRlKFN0
YXRlOjpSdW5uaW5nKTsKK30KKwordm9pZCBXZWJLaXRBdWRpb0NvbnRleHQ6Om1lZGlhQ2FuU3Rh
cnQoRG9jdW1lbnQmIGRvY3VtZW50KQoreworICAgIEFTU0VSVF9VTlVTRUQoZG9jdW1lbnQsICZk
b2N1bWVudCA9PSB0aGlzLT5kb2N1bWVudCgpKTsKKyAgICByZW1vdmVCZWhhdmlvclJlc3RyaWN0
aW9uKFdlYktpdEF1ZGlvQ29udGV4dDo6UmVxdWlyZVBhZ2VDb25zZW50Rm9yQXVkaW9TdGFydFJl
c3RyaWN0aW9uKTsKKyAgICBtYXlSZXN1bWVQbGF5YmFjayh0cnVlKTsKK30KKworTWVkaWFQcm9k
dWNlcjo6TWVkaWFTdGF0ZUZsYWdzIFdlYktpdEF1ZGlvQ29udGV4dDo6bWVkaWFTdGF0ZSgpIGNv
bnN0Cit7CisgICAgaWYgKCFtX2lzU3RvcFNjaGVkdWxlZCAmJiBtX2Rlc3RpbmF0aW9uTm9kZSAm
JiBtX2Rlc3RpbmF0aW9uTm9kZS0+aXNQbGF5aW5nQXVkaW8oKSkKKyAgICAgICAgcmV0dXJuIE1l
ZGlhUHJvZHVjZXI6OklzUGxheWluZ0F1ZGlvOworCisgICAgcmV0dXJuIE1lZGlhUHJvZHVjZXI6
OklzTm90UGxheWluZzsKK30KKwordm9pZCBXZWJLaXRBdWRpb0NvbnRleHQ6OnBhZ2VNdXRlZFN0
YXRlRGlkQ2hhbmdlKCkKK3sKKyAgICBpZiAobV9kZXN0aW5hdGlvbk5vZGUgJiYgZG9jdW1lbnQo
KSAmJiBkb2N1bWVudCgpLT5wYWdlKCkpCisgICAgICAgIG1fZGVzdGluYXRpb25Ob2RlLT5zZXRN
dXRlZChkb2N1bWVudCgpLT5wYWdlKCktPmlzQXVkaW9NdXRlZCgpKTsKK30KKwordm9pZCBXZWJL
aXRBdWRpb0NvbnRleHQ6OmlzUGxheWluZ0F1ZGlvRGlkQ2hhbmdlKCkKK3sKKyAgICAvLyBNYWtl
IHN1cmUgdG8gY2FsbCBEb2N1bWVudDo6dXBkYXRlSXNQbGF5aW5nTWVkaWEoKSBvbiB0aGUgbWFp
biB0aHJlYWQsIHNpbmNlCisgICAgLy8gd2UgY291bGQgYmUgb24gdGhlIGF1ZGlvIEkvTyB0aHJl
YWQgaGVyZSBhbmQgdGhlIGNhbGwgaW50byBXZWJDb3JlIGNvdWxkIGJsb2NrLgorICAgIGNhbGxP
bk1haW5UaHJlYWQoW3Byb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKV0geworICAgICAgICBp
ZiAocHJvdGVjdGVkVGhpcy0+ZG9jdW1lbnQoKSkKKyAgICAgICAgICAgIHByb3RlY3RlZFRoaXMt
PmRvY3VtZW50KCktPnVwZGF0ZUlzUGxheWluZ01lZGlhKCk7CisgICAgfSk7Cit9CisKK3ZvaWQg
V2ViS2l0QXVkaW9Db250ZXh0OjpmaW5pc2hlZFJlbmRlcmluZyhib29sIGRpZFJlbmRlcmluZykK
K3sKKyAgICBBU1NFUlQoaXNPZmZsaW5lQ29udGV4dCgpKTsKKyAgICBBU1NFUlQoaXNNYWluVGhy
ZWFkKCkpOworICAgIGlmICghaXNNYWluVGhyZWFkKCkpCisgICAgICAgIHJldHVybjsKKworICAg
IGF1dG8gY2xlYXJQZW5kaW5nQWN0aXZpdHlJZkV4aXRFYXJseSA9IFdURjo6bWFrZVNjb3BlRXhp
dChbdGhpc10geworICAgICAgICBjbGVhclBlbmRpbmdBY3Rpdml0eSgpOworICAgIH0pOworCisK
KyAgICBBTFdBWVNfTE9HKExPR0lERU5USUZJRVIpOworCisgICAgaWYgKCFkaWRSZW5kZXJpbmcp
CisgICAgICAgIHJldHVybjsKKworICAgIEF1ZGlvQnVmZmVyKiByZW5kZXJlZEJ1ZmZlciA9IG1f
cmVuZGVyVGFyZ2V0LmdldCgpOworICAgIHNldFN0YXRlKFN0YXRlOjpDbG9zZWQpOworCisgICAg
QVNTRVJUKHJlbmRlcmVkQnVmZmVyKTsKKyAgICBpZiAoIXJlbmRlcmVkQnVmZmVyKQorICAgICAg
ICByZXR1cm47CisKKyAgICAvLyBBdm9pZCBmaXJpbmcgdGhlIGV2ZW50IGlmIHRoZSBkb2N1bWVu
dCBoYXMgYWxyZWFkeSBnb25lIGF3YXkuCisgICAgaWYgKG1faXNTdG9wU2NoZWR1bGVkKQorICAg
ICAgICByZXR1cm47CisKKyAgICBjbGVhclBlbmRpbmdBY3Rpdml0eUlmRXhpdEVhcmx5LnJlbGVh
c2UoKTsKKyAgICBtX2V2ZW50UXVldWUtPmVucXVldWVFdmVudChPZmZsaW5lQXVkaW9Db21wbGV0
aW9uRXZlbnQ6OmNyZWF0ZShyZW5kZXJlZEJ1ZmZlcikpOworfQorCit2b2lkIFdlYktpdEF1ZGlv
Q29udGV4dDo6ZGlzcGF0Y2hFdmVudChFdmVudCYgZXZlbnQpCit7CisgICAgRXZlbnRUYXJnZXQ6
OmRpc3BhdGNoRXZlbnQoZXZlbnQpOworICAgIGlmIChldmVudC5ldmVudEludGVyZmFjZSgpID09
IE9mZmxpbmVBdWRpb0NvbXBsZXRpb25FdmVudEludGVyZmFjZVR5cGUpCisgICAgICAgIGNsZWFy
UGVuZGluZ0FjdGl2aXR5KCk7Cit9CisKK3ZvaWQgV2ViS2l0QXVkaW9Db250ZXh0OjppbmNyZW1l
bnRBY3RpdmVTb3VyY2VDb3VudCgpCit7CisgICAgKyttX2FjdGl2ZVNvdXJjZUNvdW50OworfQor
Cit2b2lkIFdlYktpdEF1ZGlvQ29udGV4dDo6ZGVjcmVtZW50QWN0aXZlU291cmNlQ291bnQoKQor
eworICAgIC0tbV9hY3RpdmVTb3VyY2VDb3VudDsKK30KKwordm9pZCBXZWJLaXRBdWRpb0NvbnRl
eHQ6OnN1c3BlbmRSZW5kZXJpbmcoRE9NUHJvbWlzZURlZmVycmVkPHZvaWQ+JiYgcHJvbWlzZSkK
K3sKKyAgICBpZiAoaXNPZmZsaW5lQ29udGV4dCgpIHx8IG1faXNTdG9wU2NoZWR1bGVkKSB7Cisg
ICAgICAgIHByb21pc2UucmVqZWN0KEludmFsaWRTdGF0ZUVycm9yKTsKKyAgICAgICAgcmV0dXJu
OworICAgIH0KKworICAgIGlmIChtX3N0YXRlID09IFN0YXRlOjpTdXNwZW5kZWQpIHsKKyAgICAg
ICAgcHJvbWlzZS5yZXNvbHZlKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpZiAo
bV9zdGF0ZSA9PSBTdGF0ZTo6Q2xvc2VkIHx8IG1fc3RhdGUgPT0gU3RhdGU6OkludGVycnVwdGVk
IHx8ICFtX2Rlc3RpbmF0aW9uTm9kZSkgeworICAgICAgICBwcm9taXNlLnJlamVjdCgpOworICAg
ICAgICByZXR1cm47CisgICAgfQorCisgICAgYWRkUmVhY3Rpb24oU3RhdGU6OlN1c3BlbmRlZCwg
V1RGTW92ZShwcm9taXNlKSk7CisKKyAgICBpZiAoIXdpbGxQYXVzZVBsYXliYWNrKCkpCisgICAg
ICAgIHJldHVybjsKKworICAgIGxhenlJbml0aWFsaXplKCk7CisKKyAgICBtX2Rlc3RpbmF0aW9u
Tm9kZS0+c3VzcGVuZChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpXSB7Cisg
ICAgICAgIHNldFN0YXRlKFN0YXRlOjpTdXNwZW5kZWQpOworICAgIH0pOworfQorCit2b2lkIFdl
YktpdEF1ZGlvQ29udGV4dDo6cmVzdW1lUmVuZGVyaW5nKERPTVByb21pc2VEZWZlcnJlZDx2b2lk
PiYmIHByb21pc2UpCit7CisgICAgaWYgKGlzT2ZmbGluZUNvbnRleHQoKSB8fCBtX2lzU3RvcFNj
aGVkdWxlZCkgeworICAgICAgICBwcm9taXNlLnJlamVjdChJbnZhbGlkU3RhdGVFcnJvcik7Cisg
ICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpZiAobV9zdGF0ZSA9PSBTdGF0ZTo6UnVubmlu
ZykgeworICAgICAgICBwcm9taXNlLnJlc29sdmUoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0K
KworICAgIGlmIChtX3N0YXRlID09IFN0YXRlOjpDbG9zZWQgfHwgIW1fZGVzdGluYXRpb25Ob2Rl
KSB7CisgICAgICAgIHByb21pc2UucmVqZWN0KCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisK
KyAgICBhZGRSZWFjdGlvbihTdGF0ZTo6UnVubmluZywgV1RGTW92ZShwcm9taXNlKSk7CisKKyAg
ICBpZiAoIXdpbGxCZWdpblBsYXliYWNrKCkpCisgICAgICAgIHJldHVybjsKKworICAgIGxhenlJ
bml0aWFsaXplKCk7CisKKyAgICBtX2Rlc3RpbmF0aW9uTm9kZS0+cmVzdW1lKFt0aGlzLCBwcm90
ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyldIHsKKyAgICAgICAgc2V0U3RhdGUoU3RhdGU6OlJ1
bm5pbmcpOworICAgIH0pOworfQorCit2b2lkIFdlYktpdEF1ZGlvQ29udGV4dDo6Y2xvc2UoRE9N
UHJvbWlzZURlZmVycmVkPHZvaWQ+JiYgcHJvbWlzZSkKK3sKKyAgICBpZiAoaXNPZmZsaW5lQ29u
dGV4dCgpIHx8IG1faXNTdG9wU2NoZWR1bGVkKSB7CisgICAgICAgIHByb21pc2UucmVqZWN0KElu
dmFsaWRTdGF0ZUVycm9yKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlmIChtX3N0
YXRlID09IFN0YXRlOjpDbG9zZWQgfHwgIW1fZGVzdGluYXRpb25Ob2RlKSB7CisgICAgICAgIHBy
b21pc2UucmVzb2x2ZSgpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgYWRkUmVhY3Rp
b24oU3RhdGU6OkNsb3NlZCwgV1RGTW92ZShwcm9taXNlKSk7CisKKyAgICBsYXp5SW5pdGlhbGl6
ZSgpOworCisgICAgbV9kZXN0aW5hdGlvbk5vZGUtPmNsb3NlKFt0aGlzLCBwcm90ZWN0ZWRUaGlz
ID0gbWFrZVJlZigqdGhpcyldIHsKKyAgICAgICAgc2V0U3RhdGUoU3RhdGU6OkNsb3NlZCk7Cisg
ICAgICAgIHVuaW5pdGlhbGl6ZSgpOworICAgIH0pOworfQorCisKK3ZvaWQgV2ViS2l0QXVkaW9D
b250ZXh0OjpzdXNwZW5kUGxheWJhY2soKQoreworICAgIGlmICghbV9kZXN0aW5hdGlvbk5vZGUg
fHwgbV9zdGF0ZSA9PSBTdGF0ZTo6Q2xvc2VkKQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAo
bV9zdGF0ZSA9PSBTdGF0ZTo6U3VzcGVuZGVkKSB7CisgICAgICAgIGlmIChtX21lZGlhU2Vzc2lv
bi0+c3RhdGUoKSA9PSBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6SW50ZXJydXB0ZWQpCisgICAgICAg
ICAgICBzZXRTdGF0ZShTdGF0ZTo6SW50ZXJydXB0ZWQpOworICAgICAgICByZXR1cm47CisgICAg
fQorCisgICAgbGF6eUluaXRpYWxpemUoKTsKKworICAgIG1fZGVzdGluYXRpb25Ob2RlLT5zdXNw
ZW5kKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyldIHsKKyAgICAgICAgYm9v
bCBpbnRlcnJ1cHRlZCA9IG1fbWVkaWFTZXNzaW9uLT5zdGF0ZSgpID09IFBsYXRmb3JtTWVkaWFT
ZXNzaW9uOjpJbnRlcnJ1cHRlZDsKKyAgICAgICAgc2V0U3RhdGUoaW50ZXJydXB0ZWQgPyBTdGF0
ZTo6SW50ZXJydXB0ZWQgOiBTdGF0ZTo6U3VzcGVuZGVkKTsKKyAgICB9KTsKK30KKwordm9pZCBX
ZWJLaXRBdWRpb0NvbnRleHQ6Om1heVJlc3VtZVBsYXliYWNrKGJvb2wgc2hvdWxkUmVzdW1lKQor
eworICAgIGlmICghbV9kZXN0aW5hdGlvbk5vZGUgfHwgbV9zdGF0ZSA9PSBTdGF0ZTo6Q2xvc2Vk
IHx8IG1fc3RhdGUgPT0gU3RhdGU6OlJ1bm5pbmcpCisgICAgICAgIHJldHVybjsKKworICAgIGlm
ICghc2hvdWxkUmVzdW1lKSB7CisgICAgICAgIHNldFN0YXRlKFN0YXRlOjpTdXNwZW5kZWQpOwor
ICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgaWYgKCF3aWxsQmVnaW5QbGF5YmFjaygpKQor
ICAgICAgICByZXR1cm47CisKKyAgICBsYXp5SW5pdGlhbGl6ZSgpOworCisgICAgbV9kZXN0aW5h
dGlvbk5vZGUtPnJlc3VtZShbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpXSB7
CisgICAgICAgIHNldFN0YXRlKFN0YXRlOjpSdW5uaW5nKTsKKyAgICB9KTsKK30KKwordm9pZCBX
ZWJLaXRBdWRpb0NvbnRleHQ6OnBvc3RUYXNrKFdURjo6RnVuY3Rpb248dm9pZCgpPiYmIHRhc2sp
Cit7CisgICAgaWYgKG1faXNTdG9wU2NoZWR1bGVkKQorICAgICAgICByZXR1cm47CisKKyAgICBt
X3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPnBvc3RUYXNrKFdURk1vdmUodGFzaykpOworfQorCitj
b25zdCBTZWN1cml0eU9yaWdpbiogV2ViS2l0QXVkaW9Db250ZXh0OjpvcmlnaW4oKSBjb25zdAor
eworICAgIHJldHVybiBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQgPyBtX3NjcmlwdEV4ZWN1dGlv
bkNvbnRleHQtPnNlY3VyaXR5T3JpZ2luKCkgOiBudWxscHRyOworfQorCit2b2lkIFdlYktpdEF1
ZGlvQ29udGV4dDo6YWRkQ29uc29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZSBzb3VyY2UsIE1lc3Nh
Z2VMZXZlbCBsZXZlbCwgY29uc3QgU3RyaW5nJiBtZXNzYWdlKQoreworICAgIGlmIChtX3Njcmlw
dEV4ZWN1dGlvbkNvbnRleHQpCisgICAgICAgIG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+YWRk
Q29uc29sZU1lc3NhZ2Uoc291cmNlLCBsZXZlbCwgbWVzc2FnZSk7Cit9CisKK3ZvaWQgV2ViS2l0
QXVkaW9Db250ZXh0OjpjbGVhclBlbmRpbmdBY3Rpdml0eSgpCit7CisgICAgaWYgKCFtX3BlbmRp
bmdBY3Rpdml0eSkKKyAgICAgICAgcmV0dXJuOworICAgIG1fcGVuZGluZ0FjdGl2aXR5ID0gbnVs
bHB0cjsKKyAgICAvLyBGSVhNRTogUmVtb3ZlIHRoaXMgc3BlY2lmaWMgZGVyZWYoKSBhbmQgcmVm
KCkgY2FsbCBpbiBtYWtlUGVuZGluZ0FjdGl2aXR5KCkuCisgICAgZGVyZWYoKTsKK30KKwordm9p
ZCBXZWJLaXRBdWRpb0NvbnRleHQ6Om1ha2VQZW5kaW5nQWN0aXZpdHkoKQoreworICAgIGlmICht
X3BlbmRpbmdBY3Rpdml0eSkKKyAgICAgICAgcmV0dXJuOworICAgIG1fcGVuZGluZ0FjdGl2aXR5
ID0gQWN0aXZlRE9NT2JqZWN0OjptYWtlUGVuZGluZ0FjdGl2aXR5KCp0aGlzKTsKKyAgICByZWYo
KTsKK30KKworI2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRAorV1RGTG9nQ2hhbm5lbCYgV2ViS2l0
QXVkaW9Db250ZXh0Ojpsb2dDaGFubmVsKCkgY29uc3QKK3sKKyAgICByZXR1cm4gTG9nTWVkaWE7
Cit9CisjZW5kaWYKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxF
KFdFQl9BVURJTykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8v
V2ViS2l0QXVkaW9Db250ZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1dl
YktpdEF1ZGlvQ29udGV4dC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE0NDY2MDkzYTY4MmU3M2RhMjg2YWM1MTk4
YWNmZGQ1Y2JjOGY5ZTAKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmF1ZGlvL1dlYktpdEF1ZGlvQ29udGV4dC5oCkBAIC0wLDAgKzEsNDE3IEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTYtMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiAgUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJ
RUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTgorICogQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTCisgKiBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkFjdGl2ZURPTU9iamVjdC5oIgorI2lu
Y2x1ZGUgIkFzeW5jQXVkaW9EZWNvZGVyLmgiCisjaW5jbHVkZSAiQXVkaW9CdXMuaCIKKyNpbmNs
dWRlICJBdWRpb0NvbnRleHQuaCIKKyNpbmNsdWRlICJBdWRpb0NvbnRleHRTdGF0ZS5oIgorI2lu
Y2x1ZGUgIkF1ZGlvRGVzdGluYXRpb25Ob2RlLmgiCisjaW5jbHVkZSAiRXZlbnRUYXJnZXQuaCIK
KyNpbmNsdWRlICJNZWRpYUNhblN0YXJ0TGlzdGVuZXIuaCIKKyNpbmNsdWRlICJNZWRpYVByb2R1
Y2VyLmgiCisjaW5jbHVkZSAiUGxhdGZvcm1NZWRpYVNlc3Npb24uaCIKKyNpbmNsdWRlICJTY3Jp
cHRFeGVjdXRpb25Db250ZXh0LmgiCisjaW5jbHVkZSAiVmlzaWJpbGl0eUNoYW5nZUNsaWVudC5o
IgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0NvbnNvbGVUeXBlcy5oPgorI2luY2x1ZGUgPEph
dmFTY3JpcHRDb3JlL0Zsb2F0MzJBcnJheS5oPgorI2luY2x1ZGUgPGF0b21pYz4KKyNpbmNsdWRl
IDx3dGYvSGFzaFNldC5oPgorI2luY2x1ZGUgPHd0Zi9Mb2dnZXJIZWxwZXIuaD4KKyNpbmNsdWRl
IDx3dGYvTWFpblRocmVhZC5oPgorI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KKyNpbmNsdWRlIDx3
dGYvVGhyZWFkU2FmZVJlZkNvdW50ZWQuaD4KKyNpbmNsdWRlIDx3dGYvVGhyZWFkaW5nLmg+Cisj
aW5jbHVkZSA8d3RmL1VuaXF1ZVJlZi5oPgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKyNpbmNs
dWRlIDx3dGYvdGV4dC9BdG9tU3RyaW5nSGFzaC5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisK
K2NsYXNzIEFuYWx5c2VyTm9kZTsKK2NsYXNzIEF1ZGlvQnVmZmVyOworY2xhc3MgQXVkaW9CdWZm
ZXJDYWxsYmFjazsKK2NsYXNzIEF1ZGlvQnVmZmVyU291cmNlTm9kZTsKK2NsYXNzIEF1ZGlvTGlz
dGVuZXI7CitjbGFzcyBBdWRpb1N1bW1pbmdKdW5jdGlvbjsKK2NsYXNzIEJpcXVhZEZpbHRlck5v
ZGU7CitjbGFzcyBDaGFubmVsTWVyZ2VyTm9kZTsKK2NsYXNzIENoYW5uZWxTcGxpdHRlck5vZGU7
CitjbGFzcyBDb252b2x2ZXJOb2RlOworY2xhc3MgRGVsYXlOb2RlOworY2xhc3MgRG9jdW1lbnQ7
CitjbGFzcyBEeW5hbWljc0NvbXByZXNzb3JOb2RlOworY2xhc3MgR2Fpbk5vZGU7CitjbGFzcyBI
VE1MTWVkaWFFbGVtZW50OworY2xhc3MgTWFpblRocmVhZEdlbmVyaWNFdmVudFF1ZXVlOworY2xh
c3MgTWVkaWFFbGVtZW50QXVkaW9Tb3VyY2VOb2RlOworY2xhc3MgTWVkaWFTdHJlYW07CitjbGFz
cyBNZWRpYVN0cmVhbUF1ZGlvRGVzdGluYXRpb25Ob2RlOworY2xhc3MgTWVkaWFTdHJlYW1BdWRp
b1NvdXJjZU5vZGU7CitjbGFzcyBPc2NpbGxhdG9yTm9kZTsKK2NsYXNzIFBlcmlvZGljV2F2ZTsK
K2NsYXNzIFNjcmlwdFByb2Nlc3Nvck5vZGU7CitjbGFzcyBTZWN1cml0eU9yaWdpbjsKK2NsYXNz
IFdhdmVTaGFwZXJOb2RlOworY2xhc3MgV2ViS2l0QXVkaW9QYW5uZXJOb2RlOworCit0ZW1wbGF0
ZTx0eXBlbmFtZSBJRExUeXBlPiBjbGFzcyBET01Qcm9taXNlRGVmZXJyZWQ7CisKKy8vIEF1ZGlv
Q29udGV4dCBpcyB0aGUgY29ybmVyc3RvbmUgb2YgdGhlIHdlYiBhdWRpbyBBUEkgYW5kIGFsbCBB
dWRpb05vZGVzIGFyZSBjcmVhdGVkIGZyb20gaXQuCisvLyBGb3IgdGhyZWFkIHNhZmV0eSBiZXR3
ZWVuIHRoZSBhdWRpbyB0aHJlYWQgYW5kIHRoZSBtYWluIHRocmVhZCwgaXQgaGFzIGEgcmVuZGVy
aW5nIGdyYXBoIGxvY2tpbmcgbWVjaGFuaXNtLgorCitjbGFzcyBXZWJLaXRBdWRpb0NvbnRleHQK
KyAgICA6IHB1YmxpYyBBdWRpb0NvbnRleHRCYXNlCisgICAgLCBwcml2YXRlIFBsYXRmb3JtTWVk
aWFTZXNzaW9uQ2xpZW50CisgICAgLCBwcml2YXRlIFZpc2liaWxpdHlDaGFuZ2VDbGllbnQKK3sK
KyAgICBXVEZfTUFLRV9JU09fQUxMT0NBVEVEKFdlYktpdEF1ZGlvQ29udGV4dCk7CitwdWJsaWM6
CisgICAgLy8gQ3JlYXRlIGFuIFdlYktpdEF1ZGlvQ29udGV4dCBmb3IgcmVuZGVyaW5nIHRvIHRo
ZSBhdWRpbyBoYXJkd2FyZS4KKyAgICBzdGF0aWMgRXhjZXB0aW9uT3I8UmVmPFdlYktpdEF1ZGlv
Q29udGV4dD4+IGNyZWF0ZShEb2N1bWVudCYpOworCisgICAgdmlydHVhbCB+V2ViS2l0QXVkaW9D
b250ZXh0KCk7CisKKyAgICBib29sIGlzSW5pdGlhbGl6ZWQoKSBjb25zdCBmaW5hbDsKKworICAg
IGJvb2wgaXNPZmZsaW5lQ29udGV4dCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1faXNPZmZsaW5l
Q29udGV4dDsgfQorCisgICAgRG9jdW1lbnRJZGVudGlmaWVyIGhvc3RpbmdEb2N1bWVudElkZW50
aWZpZXIoKSBjb25zdCBmaW5hbDsKKworICAgIEF1ZGlvRGVzdGluYXRpb25Ob2RlKiBkZXN0aW5h
dGlvbigpIHsgcmV0dXJuIG1fZGVzdGluYXRpb25Ob2RlLmdldCgpOyB9CisgICAgc2l6ZV90IGN1
cnJlbnRTYW1wbGVGcmFtZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fZGVzdGluYXRpb25Ob2Rl
ID8gbV9kZXN0aW5hdGlvbk5vZGUtPmN1cnJlbnRTYW1wbGVGcmFtZSgpIDogMDsgfQorICAgIGRv
dWJsZSBjdXJyZW50VGltZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fZGVzdGluYXRpb25Ob2Rl
ID8gbV9kZXN0aW5hdGlvbk5vZGUtPmN1cnJlbnRUaW1lKCkgOiAwLjsgfQorICAgIGZsb2F0IHNh
bXBsZVJhdGUoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2Rlc3RpbmF0aW9uTm9kZSA/IG1fZGVz
dGluYXRpb25Ob2RlLT5zYW1wbGVSYXRlKCkgOiAwLmY7IH0KKyAgICB1bnNpZ25lZCBsb25nIGFj
dGl2ZVNvdXJjZUNvdW50KCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8dW5zaWduZWQgbG9u
Zz4obV9hY3RpdmVTb3VyY2VDb3VudCk7IH0KKworICAgIHZvaWQgaW5jcmVtZW50QWN0aXZlU291
cmNlQ291bnQoKSBmaW5hbDsKKyAgICB2b2lkIGRlY3JlbWVudEFjdGl2ZVNvdXJjZUNvdW50KCkg
ZmluYWw7CisKKyAgICBFeGNlcHRpb25PcjxSZWY8QXVkaW9CdWZmZXI+PiBjcmVhdGVCdWZmZXIo
dW5zaWduZWQgbnVtYmVyT2ZDaGFubmVscywgc2l6ZV90IG51bWJlck9mRnJhbWVzLCBmbG9hdCBz
YW1wbGVSYXRlKTsKKyAgICBFeGNlcHRpb25PcjxSZWY8QXVkaW9CdWZmZXI+PiBjcmVhdGVCdWZm
ZXIoQXJyYXlCdWZmZXImLCBib29sIG1peFRvTW9ubyk7CisKKyAgICAvLyBBc3luY2hyb25vdXMg
YXVkaW8gZmlsZSBkYXRhIGRlY29kaW5nLgorICAgIHZvaWQgZGVjb2RlQXVkaW9EYXRhKFJlZjxB
cnJheUJ1ZmZlcj4mJiwgUmVmUHRyPEF1ZGlvQnVmZmVyQ2FsbGJhY2s+JiYsIFJlZlB0cjxBdWRp
b0J1ZmZlckNhbGxiYWNrPiYmKTsKKworICAgIEF1ZGlvTGlzdGVuZXIqIGxpc3RlbmVyKCkgeyBy
ZXR1cm4gbV9saXN0ZW5lci5nZXQoKTsgfQorCisgICAgdm9pZCBzdXNwZW5kUmVuZGVyaW5nKERP
TVByb21pc2VEZWZlcnJlZDx2b2lkPiYmKTsKKyAgICB2b2lkIHJlc3VtZVJlbmRlcmluZyhET01Q
cm9taXNlRGVmZXJyZWQ8dm9pZD4mJik7CisgICAgdm9pZCBjbG9zZShET01Qcm9taXNlRGVmZXJy
ZWQ8dm9pZD4mJik7CisKKyAgICB1c2luZyBTdGF0ZSA9IEF1ZGlvQ29udGV4dFN0YXRlOworICAg
IFN0YXRlIHN0YXRlKCkgY29uc3Q7CisgICAgYm9vbCBpc0Nsb3NlZCgpIGNvbnN0IHsgcmV0dXJu
IG1fc3RhdGUgPT0gU3RhdGU6OkNsb3NlZDsgfQorCisgICAgYm9vbCB3b3VsZFRhaW50T3JpZ2lu
KGNvbnN0IFVSTCYpIGNvbnN0OworCisgICAgLy8gVGhlIEF1ZGlvTm9kZSBjcmVhdGUgbWV0aG9k
cyBhcmUgY2FsbGVkIG9uIHRoZSBtYWluIHRocmVhZCAoZnJvbSBKYXZhU2NyaXB0KS4KKyAgICBF
eGNlcHRpb25PcjxSZWY8QXVkaW9CdWZmZXJTb3VyY2VOb2RlPj4gY3JlYXRlQnVmZmVyU291cmNl
KCk7CisjaWYgRU5BQkxFKFZJREVPKQorICAgIEV4Y2VwdGlvbk9yPFJlZjxNZWRpYUVsZW1lbnRB
dWRpb1NvdXJjZU5vZGU+PiBjcmVhdGVNZWRpYUVsZW1lbnRTb3VyY2UoSFRNTE1lZGlhRWxlbWVu
dCYpOworI2VuZGlmCisjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKKyAgICBFeGNlcHRpb25PcjxS
ZWY8TWVkaWFTdHJlYW1BdWRpb1NvdXJjZU5vZGU+PiBjcmVhdGVNZWRpYVN0cmVhbVNvdXJjZShN
ZWRpYVN0cmVhbSYpOworICAgIEV4Y2VwdGlvbk9yPFJlZjxNZWRpYVN0cmVhbUF1ZGlvRGVzdGlu
YXRpb25Ob2RlPj4gY3JlYXRlTWVkaWFTdHJlYW1EZXN0aW5hdGlvbigpOworI2VuZGlmCisgICAg
RXhjZXB0aW9uT3I8UmVmPEdhaW5Ob2RlPj4gY3JlYXRlR2FpbigpOworICAgIEV4Y2VwdGlvbk9y
PFJlZjxCaXF1YWRGaWx0ZXJOb2RlPj4gY3JlYXRlQmlxdWFkRmlsdGVyKCk7CisgICAgRXhjZXB0
aW9uT3I8UmVmPFdhdmVTaGFwZXJOb2RlPj4gY3JlYXRlV2F2ZVNoYXBlcigpOworICAgIEV4Y2Vw
dGlvbk9yPFJlZjxEZWxheU5vZGU+PiBjcmVhdGVEZWxheShkb3VibGUgbWF4RGVsYXlUaW1lKTsK
KyAgICBFeGNlcHRpb25PcjxSZWY8V2ViS2l0QXVkaW9QYW5uZXJOb2RlPj4gY3JlYXRlUGFubmVy
KCk7CisgICAgRXhjZXB0aW9uT3I8UmVmPENvbnZvbHZlck5vZGU+PiBjcmVhdGVDb252b2x2ZXIo
KTsKKyAgICBFeGNlcHRpb25PcjxSZWY8RHluYW1pY3NDb21wcmVzc29yTm9kZT4+IGNyZWF0ZUR5
bmFtaWNzQ29tcHJlc3NvcigpOworICAgIEV4Y2VwdGlvbk9yPFJlZjxBbmFseXNlck5vZGU+PiBj
cmVhdGVBbmFseXNlcigpOworICAgIEV4Y2VwdGlvbk9yPFJlZjxTY3JpcHRQcm9jZXNzb3JOb2Rl
Pj4gY3JlYXRlU2NyaXB0UHJvY2Vzc29yKHNpemVfdCBidWZmZXJTaXplLCBzaXplX3QgbnVtYmVy
T2ZJbnB1dENoYW5uZWxzLCBzaXplX3QgbnVtYmVyT2ZPdXRwdXRDaGFubmVscyk7CisgICAgRXhj
ZXB0aW9uT3I8UmVmPENoYW5uZWxTcGxpdHRlck5vZGU+PiBjcmVhdGVDaGFubmVsU3BsaXR0ZXIo
c2l6ZV90IG51bWJlck9mT3V0cHV0cyk7CisgICAgRXhjZXB0aW9uT3I8UmVmPENoYW5uZWxNZXJn
ZXJOb2RlPj4gY3JlYXRlQ2hhbm5lbE1lcmdlcihzaXplX3QgbnVtYmVyT2ZJbnB1dHMpOworICAg
IEV4Y2VwdGlvbk9yPFJlZjxPc2NpbGxhdG9yTm9kZT4+IGNyZWF0ZU9zY2lsbGF0b3IoKTsKKyAg
ICBFeGNlcHRpb25PcjxSZWY8UGVyaW9kaWNXYXZlPj4gY3JlYXRlUGVyaW9kaWNXYXZlKEZsb2F0
MzJBcnJheSYgcmVhbCwgRmxvYXQzMkFycmF5JiBpbWFnaW5hcnkpOworCisgICAgLy8gV2hlbiBh
IHNvdXJjZSBub2RlIGhhcyBubyBtb3JlIHByb2Nlc3NpbmcgdG8gZG8gKGhhcyBmaW5pc2hlZCBw
bGF5aW5nKSwgdGhlbiBpdCB0ZWxscyB0aGUgY29udGV4dCB0byBkZXJlZmVyZW5jZSBpdC4KKyAg
ICB2b2lkIG5vdGlmeU5vZGVGaW5pc2hlZFByb2Nlc3NpbmcoQXVkaW9Ob2RlKikgZmluYWw7CisK
KyAgICAvLyBDYWxsZWQgYXQgdGhlIHN0YXJ0IG9mIGVhY2ggcmVuZGVyIHF1YW50dW0uCisgICAg
dm9pZCBoYW5kbGVQcmVSZW5kZXJUYXNrcygpIGZpbmFsOworCisgICAgLy8gQ2FsbGVkIGF0IHRo
ZSBlbmQgb2YgZWFjaCByZW5kZXIgcXVhbnR1bS4KKyAgICB2b2lkIGhhbmRsZVBvc3RSZW5kZXJU
YXNrcygpIGZpbmFsOworCisgICAgLy8gQ2FsbGVkIHBlcmlvZGljYWxseSBhdCB0aGUgZW5kIG9m
IGVhY2ggcmVuZGVyIHF1YW50dW0gdG8gZGVyZWZlcmVuY2UgZmluaXNoZWQgc291cmNlIG5vZGVz
LgorICAgIHZvaWQgZGVyZWZGaW5pc2hlZFNvdXJjZU5vZGVzKCk7CisKKyAgICAvLyBXZSBzY2hl
ZHVsZSBkZWxldGlvbiBvZiBhbGwgbWFya2VkIG5vZGVzIGF0IHRoZSBlbmQgb2YgZWFjaCByZWFs
dGltZSByZW5kZXIgcXVhbnR1bS4KKyAgICB2b2lkIG1hcmtGb3JEZWxldGlvbihBdWRpb05vZGUm
KSBmaW5hbDsKKyAgICB2b2lkIGRlbGV0ZU1hcmtlZE5vZGVzKCkgZmluYWw7CisKKyAgICAvLyBB
dWRpb0NvbnRleHQgY2FuIHB1bGwgbm9kZShzKSBhdCB0aGUgZW5kIG9mIGVhY2ggcmVuZGVyIHF1
YW50dW0gZXZlbiB3aGVuIHRoZXkgYXJlIG5vdCBjb25uZWN0ZWQgdG8gYW55IGRvd25zdHJlYW0g
bm9kZXMuCisgICAgLy8gVGhlc2UgdHdvIG1ldGhvZHMgYXJlIGNhbGxlZCBieSB0aGUgbm9kZXMg
d2hvIHdhbnQgdG8gYWRkL3JlbW92ZSB0aGVtc2VsdmVzIGludG8vZnJvbSB0aGUgYXV0b21hdGlj
IHB1bGwgbGlzdHMuCisgICAgdm9pZCBhZGRBdXRvbWF0aWNQdWxsTm9kZShBdWRpb05vZGUmKSBm
aW5hbDsKKyAgICB2b2lkIHJlbW92ZUF1dG9tYXRpY1B1bGxOb2RlKEF1ZGlvTm9kZSYpIGZpbmFs
OworCisgICAgLy8gQ2FsbGVkIHJpZ2h0IGJlZm9yZSBoYW5kbGVQb3N0UmVuZGVyVGFza3MoKSB0
byBoYW5kbGUgbm9kZXMgd2hpY2ggbmVlZCB0byBiZSBwdWxsZWQgZXZlbiB3aGVuIHRoZXkgYXJl
IG5vdCBjb25uZWN0ZWQgdG8gYW55dGhpbmcuCisgICAgdm9pZCBwcm9jZXNzQXV0b21hdGljUHVs
bE5vZGVzKHNpemVfdCBmcmFtZXNUb1Byb2Nlc3MpIGZpbmFsOworCisgICAgLy8gS2VlcHMgdHJh
Y2sgb2YgdGhlIG51bWJlciBvZiBjb25uZWN0aW9ucyBtYWRlLgorICAgIHZvaWQgaW5jcmVtZW50
Q29ubmVjdGlvbkNvdW50KCkgZmluYWwKKyAgICB7CisgICAgICAgIEFTU0VSVChpc01haW5UaHJl
YWQoKSk7CisgICAgICAgIG1fY29ubmVjdGlvbkNvdW50Kys7CisgICAgfQorCisgICAgdW5zaWdu
ZWQgY29ubmVjdGlvbkNvdW50KCkgY29uc3QgeyByZXR1cm4gbV9jb25uZWN0aW9uQ291bnQ7IH0K
KworICAgIC8vCisgICAgLy8gVGhyZWFkIFNhZmV0eSBhbmQgR3JhcGggTG9ja2luZzoKKyAgICAv
LworCisgICAgdm9pZCBzZXRBdWRpb1RocmVhZChUaHJlYWQmIHRocmVhZCkgZmluYWwgeyBtX2F1
ZGlvVGhyZWFkID0gJnRocmVhZDsgfSAvLyBGSVhNRTogY2hlY2sgZWl0aGVyIG5vdCBpbml0aWFs
aXplZCBvciB0aGUgc2FtZQorICAgIFRocmVhZCogYXVkaW9UaHJlYWQoKSBjb25zdCB7IHJldHVy
biBtX2F1ZGlvVGhyZWFkOyB9CisgICAgYm9vbCBpc0F1ZGlvVGhyZWFkKCkgY29uc3QgZmluYWw7
CisKKyAgICAvLyBSZXR1cm5zIHRydWUgb25seSBhZnRlciB0aGUgYXVkaW8gdGhyZWFkIGhhcyBi
ZWVuIHN0YXJ0ZWQgYW5kIHRoZW4gc2h1dGRvd24uCisgICAgYm9vbCBpc0F1ZGlvVGhyZWFkRmlu
aXNoZWQoKSBmaW5hbCB7IHJldHVybiBtX2lzQXVkaW9UaHJlYWRGaW5pc2hlZDsgfQorCisgICAg
Ly8gbXVzdFJlbGVhc2VMb2NrIGlzIHNldCB0byB0cnVlIGlmIHdlIGFjcXVpcmVkIHRoZSBsb2Nr
IGluIHRoaXMgbWV0aG9kIGNhbGwgYW5kIGNhbGxlciBtdXN0IHVubG9jaygpLCBmYWxzZSBpZiBp
dCB3YXMgcHJldmlvdXNseSBhY3F1aXJlZC4KKyAgICB2b2lkIGxvY2soYm9vbCYgbXVzdFJlbGVh
c2VMb2NrKSBmaW5hbDsKKworICAgIC8vIFJldHVybnMgdHJ1ZSBpZiB3ZSBvd24gdGhlIGxvY2su
CisgICAgLy8gbXVzdFJlbGVhc2VMb2NrIGlzIHNldCB0byB0cnVlIGlmIHdlIGFjcXVpcmVkIHRo
ZSBsb2NrIGluIHRoaXMgbWV0aG9kIGNhbGwgYW5kIGNhbGxlciBtdXN0IHVubG9jaygpLCBmYWxz
ZSBpZiBpdCB3YXMgcHJldmlvdXNseSBhY3F1aXJlZC4KKyAgICBib29sIHRyeUxvY2soYm9vbCYg
bXVzdFJlbGVhc2VMb2NrKSBmaW5hbDsKKworICAgIHZvaWQgdW5sb2NrKCkgZmluYWw7CisKKyAg
ICAvLyBSZXR1cm5zIHRydWUgaWYgdGhpcyB0aHJlYWQgb3ducyB0aGUgY29udGV4dCdzIGxvY2su
CisgICAgYm9vbCBpc0dyYXBoT3duZXIoKSBjb25zdCBmaW5hbDsKKworICAgIC8vIFJldHVybnMg
dGhlIG1heGltdW0gbnVtYmVyIG9mIGNoYW5uZWxzIHdlIGNhbiBzdXBwb3J0LgorICAgIHN0YXRp
YyB1bnNpZ25lZCBtYXhOdW1iZXJPZkNoYW5uZWxzKCkgeyByZXR1cm4gTWF4TnVtYmVyT2ZDaGFu
bmVsczsgfQorCisgICAgLy8gSW4gQXVkaW9Ob2RlOjpkZXJlZigpIGEgdHJ5TG9jaygpIGlzIHVz
ZWQgZm9yIGNhbGxpbmcgZmluaXNoRGVyZWYoKSwgYnV0IGlmIGl0IGZhaWxzIGtlZXAgdHJhY2sg
aGVyZS4KKyAgICB2b2lkIGFkZERlZmVycmVkRmluaXNoRGVyZWYoQXVkaW9Ob2RlKikgZmluYWw7
CisKKyAgICAvLyBJbiB0aGUgYXVkaW8gdGhyZWFkIGF0IHRoZSBzdGFydCBvZiBlYWNoIHJlbmRl
ciBjeWNsZSwgd2UnbGwgY2FsbCBoYW5kbGVEZWZlcnJlZEZpbmlzaERlcmVmcygpLgorICAgIHZv
aWQgaGFuZGxlRGVmZXJyZWRGaW5pc2hEZXJlZnMoKTsKKworICAgIC8vIE9ubHkgYWNjZXNzZWQg
d2hlbiB0aGUgZ3JhcGggbG9jayBpcyBoZWxkLgorICAgIHZvaWQgbWFya1N1bW1pbmdKdW5jdGlv
bkRpcnR5KEF1ZGlvU3VtbWluZ0p1bmN0aW9uKikgZmluYWw7CisgICAgdm9pZCBtYXJrQXVkaW9O
b2RlT3V0cHV0RGlydHkoQXVkaW9Ob2RlT3V0cHV0KikgZmluYWw7CisKKyAgICAvLyBNdXN0IGJl
IGNhbGxlZCBvbiBtYWluIHRocmVhZC4KKyAgICB2b2lkIHJlbW92ZU1hcmtlZFN1bW1pbmdKdW5j
dGlvbihBdWRpb1N1bW1pbmdKdW5jdGlvbiopIGZpbmFsOworCisgICAgLy8gRXZlbnRUYXJnZXQK
KyAgICBFdmVudFRhcmdldEludGVyZmFjZSBldmVudFRhcmdldEludGVyZmFjZSgpIGNvbnN0IGZp
bmFsOworCisgICAgdm9pZCBzdGFydFJlbmRlcmluZygpOworICAgIHZvaWQgZmluaXNoZWRSZW5k
ZXJpbmcoYm9vbCBkaWRSZW5kZXJpbmcpIGZpbmFsOworCisgICAgc3RhdGljIHVuc2lnbmVkIHNf
aGFyZHdhcmVDb250ZXh0Q291bnQ7CisKKyAgICAvLyBSZXN0cmljdGlvbnMgdG8gY2hhbmdlIGRl
ZmF1bHQgYmVoYXZpb3JzLgorICAgIEJlaGF2aW9yUmVzdHJpY3Rpb25zIGJlaGF2aW9yUmVzdHJp
Y3Rpb25zKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9yZXN0cmljdGlvbnM7IH0KKyAgICB2b2lk
IGFkZEJlaGF2aW9yUmVzdHJpY3Rpb24oQmVoYXZpb3JSZXN0cmljdGlvbnMgcmVzdHJpY3Rpb24p
IGZpbmFsIHsgbV9yZXN0cmljdGlvbnMgfD0gcmVzdHJpY3Rpb247IH0KKyAgICB2b2lkIHJlbW92
ZUJlaGF2aW9yUmVzdHJpY3Rpb24oQmVoYXZpb3JSZXN0cmljdGlvbnMgcmVzdHJpY3Rpb24pIGZp
bmFsIHsgbV9yZXN0cmljdGlvbnMgJj0gfnJlc3RyaWN0aW9uOyB9CisKKyAgICB2b2lkIGlzUGxh
eWluZ0F1ZGlvRGlkQ2hhbmdlKCkgZmluYWw7CisKKyAgICB2b2lkIG5vZGVXaWxsQmVnaW5QbGF5
YmFjaygpIGZpbmFsOworCisjaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECisgICAgY29uc3QgTG9n
Z2VyJiBsb2dnZXIoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2xvZ2dlci5nZXQoKTsgfQorICAg
IGNvbnN0IHZvaWQqIGxvZ0lkZW50aWZpZXIoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2xvZ0lk
ZW50aWZpZXI7IH0KKyAgICBXVEZMb2dDaGFubmVsJiBsb2dDaGFubmVsKCkgY29uc3QgZmluYWw7
CisgICAgY29uc3Qgdm9pZCogbmV4dEF1ZGlvTm9kZUxvZ0lkZW50aWZpZXIoKSBmaW5hbCB7IHJl
dHVybiBjaGlsZExvZ0lkZW50aWZpZXIobV9sb2dJZGVudGlmaWVyLCArK21fbmV4dEF1ZGlvTm9k
ZUlkZW50aWZpZXIpOyB9CisgICAgY29uc3Qgdm9pZCogbmV4dEF1ZGlvUGFyYW1ldGVyTG9nSWRl
bnRpZmllcigpIGZpbmFsIHsgcmV0dXJuIGNoaWxkTG9nSWRlbnRpZmllcihtX2xvZ0lkZW50aWZp
ZXIsICsrbV9uZXh0QXVkaW9QYXJhbWV0ZXJJZGVudGlmaWVyKTsgfQorI2VuZGlmCisKKyAgICB2
b2lkIHBvc3RUYXNrKFdURjo6RnVuY3Rpb248dm9pZCgpPiYmKSBmaW5hbDsKKyAgICBib29sIGlz
U3RvcHBlZCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1faXNTdG9wU2NoZWR1bGVkOyB9CisgICAg
Y29uc3QgU2VjdXJpdHlPcmlnaW4qIG9yaWdpbigpIGNvbnN0IGZpbmFsOworICAgIHZvaWQgYWRk
Q29uc29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZSwgTWVzc2FnZUxldmVsLCBjb25zdCBTdHJpbmcm
IG1lc3NhZ2UpIGZpbmFsOworCitwcm90ZWN0ZWQ6CisgICAgZXhwbGljaXQgV2ViS2l0QXVkaW9D
b250ZXh0KERvY3VtZW50Jik7CisgICAgV2ViS2l0QXVkaW9Db250ZXh0KERvY3VtZW50JiwgQXVk
aW9CdWZmZXIqIHJlbmRlclRhcmdldCk7CisKKyAgICBzdGF0aWMgYm9vbCBpc1NhbXBsZVJhdGVS
YW5nZUdvb2QoZmxvYXQgc2FtcGxlUmF0ZSk7CisgICAgdm9pZCBjbGVhclBlbmRpbmdBY3Rpdml0
eSgpOworICAgIHZvaWQgbWFrZVBlbmRpbmdBY3Rpdml0eSgpOworCitwcml2YXRlOgorICAgIHZv
aWQgY29uc3RydWN0Q29tbW9uKCk7CisKKyAgICB2b2lkIGxhenlJbml0aWFsaXplKCk7CisgICAg
dm9pZCB1bmluaXRpYWxpemUoKTsKKworICAgIGJvb2wgd2lsbEJlZ2luUGxheWJhY2soKTsKKyAg
ICBib29sIHdpbGxQYXVzZVBsYXliYWNrKCk7CisKKyAgICBib29sIHVzZXJHZXN0dXJlUmVxdWly
ZWRGb3JBdWRpb1N0YXJ0KCkgY29uc3QgeyByZXR1cm4gIWlzT2ZmbGluZUNvbnRleHQoKSAmJiBt
X3Jlc3RyaWN0aW9ucyAmIFJlcXVpcmVVc2VyR2VzdHVyZUZvckF1ZGlvU3RhcnRSZXN0cmljdGlv
bjsgfQorICAgIGJvb2wgcGFnZUNvbnNlbnRSZXF1aXJlZEZvckF1ZGlvU3RhcnQoKSBjb25zdCB7
IHJldHVybiAhaXNPZmZsaW5lQ29udGV4dCgpICYmIG1fcmVzdHJpY3Rpb25zICYgUmVxdWlyZVBh
Z2VDb25zZW50Rm9yQXVkaW9TdGFydFJlc3RyaWN0aW9uOyB9CisKKyAgICB2b2lkIHNldFN0YXRl
KFN0YXRlKTsKKworICAgIHZvaWQgY2xlYXIoKTsKKworICAgIHZvaWQgc2NoZWR1bGVOb2RlRGVs
ZXRpb24oKTsKKworICAgIHZvaWQgbWVkaWFDYW5TdGFydChEb2N1bWVudCYpIG92ZXJyaWRlOwor
CisgICAgLy8gRXZlbnRUYXJnZXQKKyAgICB2b2lkIGRpc3BhdGNoRXZlbnQoRXZlbnQmKSBmaW5h
bDsKKworICAgIC8vIE1lZGlhUHJvZHVjZXIKKyAgICBNZWRpYVByb2R1Y2VyOjpNZWRpYVN0YXRl
RmxhZ3MgbWVkaWFTdGF0ZSgpIGNvbnN0IG92ZXJyaWRlOworICAgIHZvaWQgcGFnZU11dGVkU3Rh
dGVEaWRDaGFuZ2UoKSBvdmVycmlkZTsKKworICAgIC8vIFRoZSBjb250ZXh0IGl0c2VsZiBrZWVw
cyBhIHJlZmVyZW5jZSB0byBhbGwgc291cmNlIG5vZGVzLiAgVGhlIHNvdXJjZSBub2RlcywgdGhl
biByZWZlcmVuY2UgYWxsIG5vZGVzIHRoZXkncmUgY29ubmVjdGVkIHRvLgorICAgIC8vIEluIHR1
cm4sIHRoZXNlIG5vZGVzIHJlZmVyZW5jZSBhbGwgbm9kZXMgdGhleSdyZSBjb25uZWN0ZWQgdG8u
ICBBbGwgbm9kZXMgYXJlIHVsdGltYXRlbHkgY29ubmVjdGVkIHRvIHRoZSBBdWRpb0Rlc3RpbmF0
aW9uTm9kZS4KKyAgICAvLyBXaGVuIHRoZSBjb250ZXh0IGRlcmVmZXJlbmNlcyBhIHNvdXJjZSBu
b2RlLCBpdCB3aWxsIGJlIGRlYWN0aXZhdGVkIGZyb20gdGhlIHJlbmRlcmluZyBncmFwaCBhbG9u
ZyB3aXRoIGFsbCBvdGhlciBub2RlcyBpdCBpcworICAgIC8vIHVuaXF1ZWx5IGNvbm5lY3RlZCB0
by4gIFNlZSB0aGUgQXVkaW9Ob2RlOjpyZWYoKSBhbmQgQXVkaW9Ob2RlOjpkZXJlZigpIG1ldGhv
ZHMgZm9yIG1vcmUgZGV0YWlscy4KKyAgICB2b2lkIHJlZk5vZGUoQXVkaW9Ob2RlJik7CisgICAg
dm9pZCBkZXJlZk5vZGUoQXVkaW9Ob2RlJik7CisKKyAgICAvLyBBY3RpdmVET01PYmplY3QgQVBJ
LgorICAgIHZvaWQgc3VzcGVuZChSZWFzb25Gb3JTdXNwZW5zaW9uKSBmaW5hbDsKKyAgICB2b2lk
IHJlc3VtZSgpIGZpbmFsOworICAgIHZvaWQgc3RvcCgpIG92ZXJyaWRlOworICAgIGNvbnN0IGNo
YXIqIGFjdGl2ZURPTU9iamVjdE5hbWUoKSBjb25zdCBvdmVycmlkZTsKKworICAgIC8vIFdoZW4g
dGhlIGNvbnRleHQgZ29lcyBhd2F5LCB0aGVyZSBtaWdodCBzdGlsbCBiZSBzb21lIHNvdXJjZXMg
d2hpY2ggaGF2ZW4ndCBmaW5pc2hlZCBwbGF5aW5nLgorICAgIC8vIE1ha2Ugc3VyZSB0byBkZXJl
ZmVyZW5jZSB0aGVtIGhlcmUuCisgICAgdm9pZCBkZXJlZlVuZmluaXNoZWRTb3VyY2VOb2Rlcygp
OworCisgICAgLy8gUGxhdGZvcm1NZWRpYVNlc3Npb25DbGllbnQKKyAgICBQbGF0Zm9ybU1lZGlh
U2Vzc2lvbjo6TWVkaWFUeXBlIG1lZGlhVHlwZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIFBs
YXRmb3JtTWVkaWFTZXNzaW9uOjpNZWRpYVR5cGU6OldlYkF1ZGlvOyB9CisgICAgUGxhdGZvcm1N
ZWRpYVNlc3Npb246Ok1lZGlhVHlwZSBwcmVzZW50YXRpb25UeXBlKCkgY29uc3Qgb3ZlcnJpZGUg
eyByZXR1cm4gUGxhdGZvcm1NZWRpYVNlc3Npb246Ok1lZGlhVHlwZTo6V2ViQXVkaW87IH0KKyAg
ICB2b2lkIG1heVJlc3VtZVBsYXliYWNrKGJvb2wgc2hvdWxkUmVzdW1lKSBvdmVycmlkZTsKKyAg
ICB2b2lkIHN1c3BlbmRQbGF5YmFjaygpIG92ZXJyaWRlOworICAgIGJvb2wgY2FuUmVjZWl2ZVJl
bW90ZUNvbnRyb2xDb21tYW5kcygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9Cisg
ICAgdm9pZCBkaWRSZWNlaXZlUmVtb3RlQ29udHJvbENvbW1hbmQoUGxhdGZvcm1NZWRpYVNlc3Np
b246OlJlbW90ZUNvbnRyb2xDb21tYW5kVHlwZSwgY29uc3QgUGxhdGZvcm1NZWRpYVNlc3Npb246
OlJlbW90ZUNvbW1hbmRBcmd1bWVudCopIG92ZXJyaWRlIHsgfQorICAgIGJvb2wgc3VwcG9ydHNT
ZWVraW5nKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KKyAgICBib29sIHNob3Vs
ZE92ZXJyaWRlQmFja2dyb3VuZFBsYXliYWNrUmVzdHJpY3Rpb24oUGxhdGZvcm1NZWRpYVNlc3Np
b246OkludGVycnVwdGlvblR5cGUpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9Cisg
ICAgYm9vbCBjYW5Qcm9kdWNlQXVkaW8oKSBjb25zdCBmaW5hbCB7IHJldHVybiB0cnVlOyB9Cisg
ICAgYm9vbCBpc1N1c3BlbmRlZCgpIGNvbnN0IGZpbmFsOworCisgICAgdm9pZCB2aXNpYmlsaXR5
U3RhdGVDaGFuZ2VkKCkgZmluYWw7CisKKyAgICBib29sIGlzQXVkaW9Db250ZXh0KCkgY29uc3Qg
ZmluYWwgeyByZXR1cm4gZmFsc2U7IH0KKyAgICBib29sIGlzV2ViS2l0QXVkaW9Db250ZXh0KCkg
Y29uc3QgZmluYWwgeyByZXR1cm4gdHJ1ZTsgfQorCisgICAgdm9pZCBoYW5kbGVEaXJ0eUF1ZGlv
U3VtbWluZ0p1bmN0aW9ucygpOworICAgIHZvaWQgaGFuZGxlRGlydHlBdWRpb05vZGVPdXRwdXRz
KCk7CisKKyAgICB2b2lkIGFkZFJlYWN0aW9uKFN0YXRlLCBET01Qcm9taXNlRGVmZXJyZWQ8dm9p
ZD4mJik7CisgICAgdm9pZCB1cGRhdGVBdXRvbWF0aWNQdWxsTm9kZXMoKTsKKworI2lmICFSRUxF
QVNFX0xPR19ESVNBQkxFRAorICAgIGNvbnN0IGNoYXIqIGxvZ0NsYXNzTmFtZSgpIGNvbnN0IGZp
bmFsIHsgcmV0dXJuICJXZWJLaXRBdWRpb0NvbnRleHQiOyB9CisKKyAgICBSZWY8TG9nZ2VyPiBt
X2xvZ2dlcjsKKyAgICBjb25zdCB2b2lkKiBtX2xvZ0lkZW50aWZpZXI7CisgICAgdWludDY0X3Qg
bV9uZXh0QXVkaW9Ob2RlSWRlbnRpZmllciB7IDAgfTsKKyAgICB1aW50NjRfdCBtX25leHRBdWRp
b1BhcmFtZXRlcklkZW50aWZpZXIgeyAwIH07CisjZW5kaWYKKworICAgIC8vIE9ubHkgYWNjZXNz
ZWQgaW4gdGhlIGF1ZGlvIHRocmVhZC4KKyAgICBWZWN0b3I8QXVkaW9Ob2RlKj4gbV9maW5pc2hl
ZE5vZGVzOworCisgICAgLy8gV2UgZG9uJ3QgdXNlIFJlZlB0cjxBdWRpb05vZGU+IGhlcmUgYmVj
YXVzZSBBdWRpb05vZGUgaGFzIGEgbW9yZSBjb21wbGV4IHJlZigpIC8gZGVyZWYoKSBpbXBsZW1l
bnRhdGlvbgorICAgIC8vIHdpdGggYW4gb3B0aW9uYWwgYXJndW1lbnQgZm9yIHJlZlR5cGUuICBX
ZSBuZWVkIHRvIHVzZSB0aGUgc3BlY2lhbCByZWZUeXBlOiBSZWZUeXBlQ29ubmVjdGlvbgorICAg
IC8vIEVpdGhlciBhY2Nlc3NlZCB3aGVuIHRoZSBncmFwaCBsb2NrIGlzIGhlbGQsIG9yIG9uIHRo
ZSBtYWluIHRocmVhZCB3aGVuIHRoZSBhdWRpbyB0aHJlYWQgaGFzIGZpbmlzaGVkLgorICAgIFZl
Y3RvcjxBdWRpb05vZGUqPiBtX3JlZmVyZW5jZWROb2RlczsKKworICAgIC8vIEFjY3VtdWxhdGUg
bm9kZXMgd2hpY2ggbmVlZCB0byBiZSBkZWxldGVkIGhlcmUuCisgICAgLy8gVGhpcyBpcyBjb3Bp
ZWQgdG8gbV9ub2Rlc1RvRGVsZXRlIGF0IHRoZSBlbmQgb2YgYSByZW5kZXIgY3ljbGUgaW4gaGFu
ZGxlUG9zdFJlbmRlclRhc2tzKCksIHdoZXJlIHdlJ3JlIGFzc3VyZWQgb2YgYSBzdGFibGUgZ3Jh
cGgKKyAgICAvLyBzdGF0ZSB3aGljaCB3aWxsIGhhdmUgbm8gcmVmZXJlbmNlcyB0byBhbnkgb2Yg
dGhlIG5vZGVzIGluIG1fbm9kZXNUb0RlbGV0ZSBvbmNlIHRoZSBjb250ZXh0IGxvY2sgaXMgcmVs
ZWFzZWQKKyAgICAvLyAod2hlbiBoYW5kbGVQb3N0UmVuZGVyVGFza3MoKSBoYXMgY29tcGxldGVk
KS4KKyAgICBWZWN0b3I8QXVkaW9Ob2RlKj4gbV9ub2Rlc01hcmtlZEZvckRlbGV0aW9uOworCisg
ICAgLy8gVGhleSB3aWxsIGJlIHNjaGVkdWxlZCBmb3IgZGVsZXRpb24gKG9uIHRoZSBtYWluIHRo
cmVhZCkgYXQgdGhlIGVuZCBvZiBhIHJlbmRlciBjeWNsZSAoaW4gcmVhbHRpbWUgdGhyZWFkKS4K
KyAgICBWZWN0b3I8QXVkaW9Ob2RlKj4gbV9ub2Rlc1RvRGVsZXRlOworCisgICAgYm9vbCBtX2lz
RGVsZXRpb25TY2hlZHVsZWQgeyBmYWxzZSB9OworICAgIGJvb2wgbV9pc1N0b3BTY2hlZHVsZWQg
eyBmYWxzZSB9OworICAgIGJvb2wgbV9pc0luaXRpYWxpemVkIHsgZmFsc2UgfTsKKyAgICBib29s
IG1faXNBdWRpb1RocmVhZEZpbmlzaGVkIHsgZmFsc2UgfTsKKyAgICBib29sIG1fYXV0b21hdGlj
UHVsbE5vZGVzTmVlZFVwZGF0aW5nIHsgZmFsc2UgfTsKKyAgICBib29sIG1faXNPZmZsaW5lQ29u
dGV4dCB7IGZhbHNlIH07CisKKyAgICAvLyBPbmx5IGFjY2Vzc2VkIHdoZW4gdGhlIGdyYXBoIGxv
Y2sgaXMgaGVsZC4KKyAgICBIYXNoU2V0PEF1ZGlvU3VtbWluZ0p1bmN0aW9uKj4gbV9kaXJ0eVN1
bW1pbmdKdW5jdGlvbnM7CisgICAgSGFzaFNldDxBdWRpb05vZGVPdXRwdXQqPiBtX2RpcnR5QXVk
aW9Ob2RlT3V0cHV0czsKKworICAgIC8vIEZvciB0aGUgc2FrZSBvZiB0aHJlYWQgc2FmZXR5LCB3
ZSBtYWludGFpbiBhIHNlcGVyYXRlIFZlY3RvciBvZiBhdXRvbWF0aWMgcHVsbCBub2RlcyBmb3Ig
cmVuZGVyaW5nIGluIG1fcmVuZGVyaW5nQXV0b21hdGljUHVsbE5vZGVzLgorICAgIC8vIEl0IHdp
bGwgYmUgY29waWVkIGZyb20gbV9hdXRvbWF0aWNQdWxsTm9kZXMgYnkgdXBkYXRlQXV0b21hdGlj
UHVsbE5vZGVzKCkgYXQgdGhlIHZlcnkgc3RhcnQgb3IgZW5kIG9mIHRoZSByZW5kZXJpbmcgcXVh
bnR1bS4KKyAgICBIYXNoU2V0PEF1ZGlvTm9kZSo+IG1fYXV0b21hdGljUHVsbE5vZGVzOworICAg
IFZlY3RvcjxBdWRpb05vZGUqPiBtX3JlbmRlcmluZ0F1dG9tYXRpY1B1bGxOb2RlczsKKyAgICAv
LyBPbmx5IGFjY2Vzc2VkIGluIHRoZSBhdWRpbyB0aHJlYWQuCisgICAgVmVjdG9yPEF1ZGlvTm9k
ZSo+IG1fZGVmZXJyZWRGaW5pc2hEZXJlZkxpc3Q7CisgICAgVmVjdG9yPFZlY3RvcjxET01Qcm9t
aXNlRGVmZXJyZWQ8dm9pZD4+PiBtX3N0YXRlUmVhY3Rpb25zOworCisgICAgc3RkOjp1bmlxdWVf
cHRyPFBsYXRmb3JtTWVkaWFTZXNzaW9uPiBtX21lZGlhU2Vzc2lvbjsKKyAgICBVbmlxdWVSZWY8
TWFpblRocmVhZEdlbmVyaWNFdmVudFF1ZXVlPiBtX2V2ZW50UXVldWU7CisKKyAgICBSZWZQdHI8
QXVkaW9CdWZmZXI+IG1fcmVuZGVyVGFyZ2V0OworICAgIFJlZlB0cjxBdWRpb0Rlc3RpbmF0aW9u
Tm9kZT4gbV9kZXN0aW5hdGlvbk5vZGU7CisgICAgUmVmUHRyPEF1ZGlvTGlzdGVuZXI+IG1fbGlz
dGVuZXI7CisKKyAgICB1bnNpZ25lZCBtX2Nvbm5lY3Rpb25Db3VudCB7IDAgfTsKKworICAgIC8v
IEdyYXBoIGxvY2tpbmcuCisgICAgTG9jayBtX2NvbnRleHRHcmFwaE11dGV4OworICAgIC8vIEZJ
WE1FOiBVc2luZyB2b2xhdGlsZSBzZWVtcyBpbmNvcnJlY3QuCisgICAgLy8gaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4MDMzMgorICAgIFRocmVhZCogdm9sYXRpbGUg
bV9hdWRpb1RocmVhZCB7IG51bGxwdHIgfTsKKyAgICBUaHJlYWQqIHZvbGF0aWxlIG1fZ3JhcGhP
d25lclRocmVhZCB7IG51bGxwdHIgfTsgLy8gaWYgdGhlIGxvY2sgaXMgaGVsZCB0aGVuIHRoaXMg
aXMgdGhlIHRocmVhZCB3aGljaCBvd25zIGl0LCBvdGhlcndpc2UgPT0gbnVsbHB0ci4KKworICAg
IHN0ZDo6dW5pcXVlX3B0cjxBc3luY0F1ZGlvRGVjb2Rlcj4gbV9hdWRpb0RlY29kZXI7CisKKyAg
ICAvLyBUaGlzIGlzIGNvbnNpZGVyaW5nIDMyIGlzIGxhcmdlIGVub3VnaCBmb3IgbXVsdGlwbGUg
Y2hhbm5lbHMgYXVkaW8uCisgICAgLy8gSXQgaXMgc29tZXdoYXQgYXJiaXRyYXJ5IGFuZCBjb3Vs
ZCBiZSBpbmNyZWFzZWQgaWYgbmVjZXNzYXJ5LgorICAgIGVudW0geyBNYXhOdW1iZXJPZkNoYW5u
ZWxzID0gMzIgfTsKKworICAgIC8vIE51bWJlciBvZiBBdWRpb0J1ZmZlclNvdXJjZU5vZGVzIHRo
YXQgYXJlIGFjdGl2ZSAocGxheWluZykuCisgICAgc3RkOjphdG9taWM8aW50PiBtX2FjdGl2ZVNv
dXJjZUNvdW50IHsgMCB9OworCisgICAgQmVoYXZpb3JSZXN0cmljdGlvbnMgbV9yZXN0cmljdGlv
bnMgeyBOb1Jlc3RyaWN0aW9ucyB9OworCisgICAgU3RhdGUgbV9zdGF0ZSB7IFN0YXRlOjpTdXNw
ZW5kZWQgfTsKKyAgICBSZWZQdHI8UGVuZGluZ0FjdGl2aXR5PFdlYktpdEF1ZGlvQ29udGV4dD4+
IG1fcGVuZGluZ0FjdGl2aXR5OworfTsKKworaW5saW5lIEF1ZGlvQ29udGV4dFN0YXRlIFdlYktp
dEF1ZGlvQ29udGV4dDo6c3RhdGUoKSBjb25zdAoreworICAgIHJldHVybiBtX3N0YXRlOworfQor
Cit9IC8vIFdlYkNvcmUKKworU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19CRUdJTihXZWJDb3JlOjpX
ZWJLaXRBdWRpb0NvbnRleHQpCisgICAgc3RhdGljIGJvb2wgaXNUeXBlKGNvbnN0IFdlYkNvcmU6
OkF1ZGlvQ29udGV4dEJhc2UmIGNvbnRleHQpIHsgcmV0dXJuIGNvbnRleHQuaXNXZWJLaXRBdWRp
b0NvbnRleHQoKTsgfQorU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19FTkQoKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9XZWJLaXRBdWRpb0NvbnRleHQuaWRsIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9XZWJLaXRBdWRpb0NvbnRleHQuaWRsCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjU2OTVjNzM2Njk4Njc4ZWIzNmVkNjQ4OTNiZDAyYjRjZDhiZGUwMGIKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1dlYktpdEF1ZGlv
Q29udGV4dC5pZGwKQEAgLTAsMCArMSw5MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCwg
R29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMSBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAq
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTgorICogQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
KyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTCisgKiBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCitbCisgICAgQWN0aXZlRE9N
T2JqZWN0LAorICAgIENvbmRpdGlvbmFsPVdFQl9BVURJTywKKyAgICBFbmFibGVkQnlTZXR0aW5n
PVdlYkF1ZGlvLAorICAgIEV4cG9ydE1hY3JvPVdFQkNPUkVfRVhQT1JULAorICAgIEludGVyZmFj
ZU5hbWU9d2Via2l0QXVkaW9Db250ZXh0LAorXSBpbnRlcmZhY2UgV2ViS2l0QXVkaW9Db250ZXh0
IDogRXZlbnRUYXJnZXQgeworICAgIFtDYWxsV2l0aD1Eb2N1bWVudCwgTWF5VGhyb3dFeGNlcHRp
b25dIGNvbnN0cnVjdG9yKCk7CisKKyAgICAvLyBBbGwgcmVuZGVyZWQgYXVkaW8gdWx0aW1hdGVs
eSBjb25uZWN0cyB0byBkZXN0aW5hdGlvbiwgd2hpY2ggcmVwcmVzZW50cyB0aGUgYXVkaW8gaGFy
ZHdhcmUuCisgICAgcmVhZG9ubHkgYXR0cmlidXRlIEF1ZGlvRGVzdGluYXRpb25Ob2RlIGRlc3Rp
bmF0aW9uOworCisgICAgLy8gQWxsIHNjaGVkdWxlZCB0aW1lcyBhcmUgcmVsYXRpdmUgdG8gdGhp
cyB0aW1lIGluIHNlY29uZHMuCisgICAgcmVhZG9ubHkgYXR0cmlidXRlIHVucmVzdHJpY3RlZCBk
b3VibGUgY3VycmVudFRpbWU7CisKKyAgICAvLyBBbGwgQXVkaW9Ob2RlcyBpbiB0aGUgY29udGV4
dCBydW4gYXQgdGhpcyBzYW1wbGUtcmF0ZSAoc2FtcGxlLWZyYW1lcyBwZXIgc2Vjb25kKS4KKyAg
ICByZWFkb25seSBhdHRyaWJ1dGUgdW5yZXN0cmljdGVkIGZsb2F0IHNhbXBsZVJhdGU7CisKKyAg
ICAvLyBBbGwgcGFubmluZyBpcyByZWxhdGl2ZSB0byB0aGlzIGxpc3RlbmVyLgorICAgIHJlYWRv
bmx5IGF0dHJpYnV0ZSBBdWRpb0xpc3RlbmVyIGxpc3RlbmVyOworCisgICAgW0ltcGxlbWVudGVk
QXM9c3VzcGVuZFJlbmRlcmluZ10gUHJvbWlzZTx2b2lkPiBzdXNwZW5kKCk7CisgICAgW0ltcGxl
bWVudGVkQXM9cmVzdW1lUmVuZGVyaW5nXSBQcm9taXNlPHZvaWQ+IHJlc3VtZSgpOworICAgIFBy
b21pc2U8dm9pZD4gY2xvc2UoKTsKKworICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBBdWRpb0NvbnRl
eHRTdGF0ZSBzdGF0ZTsKKyAgICBhdHRyaWJ1dGUgRXZlbnRIYW5kbGVyIG9uc3RhdGVjaGFuZ2U7
CisKKyAgICAvLyBOdW1iZXIgb2YgQXVkaW9CdWZmZXJTb3VyY2VOb2RlcyB0aGF0IGFyZSBjdXJy
ZW50bHkgcGxheWluZy4KKyAgICByZWFkb25seSBhdHRyaWJ1dGUgdW5zaWduZWQgbG9uZyBhY3Rp
dmVTb3VyY2VDb3VudDsKKworICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gQXVkaW9CdWZmZXIgY3Jl
YXRlQnVmZmVyKHVuc2lnbmVkIGxvbmcgbnVtYmVyT2ZDaGFubmVscywgdW5zaWduZWQgbG9uZyBu
dW1iZXJPZkZyYW1lcywgdW5yZXN0cmljdGVkIGZsb2F0IHNhbXBsZVJhdGUpOworICAgIFtNYXlU
aHJvd0V4Y2VwdGlvbl0gQXVkaW9CdWZmZXIgY3JlYXRlQnVmZmVyKEFycmF5QnVmZmVyIGJ1ZmZl
ciwgYm9vbGVhbiBtaXhUb01vbm8pOworCisgICAgLy8gQXN5bmNocm9ub3VzIGF1ZGlvIGZpbGUg
ZGF0YSBkZWNvZGluZy4KKyAgICAvLyBGSVhNRTogc3VjY2Vzc0NhbGxiYWNrIHNob3VsZCBiZSBv
cHRpb25hbCBhbmQgdGhlIGNhbGxiYWNrcyBzaG91bGQgbm90IGJlIG51bGxhYmxlLiBUaGlzIHNo
b3VsZCBhbHNvIHJldHVybiBhIFByb21pc2UuCisgICAgdm9pZCBkZWNvZGVBdWRpb0RhdGEoQXJy
YXlCdWZmZXIgYXVkaW9EYXRhLCBBdWRpb0J1ZmZlckNhbGxiYWNrPyBzdWNjZXNzQ2FsbGJhY2ss
IG9wdGlvbmFsIEF1ZGlvQnVmZmVyQ2FsbGJhY2s/IGVycm9yQ2FsbGJhY2spOworCisgICAgLy8g
U291cmNlcworICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gQXVkaW9CdWZmZXJTb3VyY2VOb2RlIGNy
ZWF0ZUJ1ZmZlclNvdXJjZSgpOworCisgICAgW0NvbmRpdGlvbmFsPVZJREVPLCBNYXlUaHJvd0V4
Y2VwdGlvbl0gTWVkaWFFbGVtZW50QXVkaW9Tb3VyY2VOb2RlIGNyZWF0ZU1lZGlhRWxlbWVudFNv
dXJjZShIVE1MTWVkaWFFbGVtZW50IG1lZGlhRWxlbWVudCk7CisKKyAgICBbQ29uZGl0aW9uYWw9
TUVESUFfU1RSRUFNLCBNYXlUaHJvd0V4Y2VwdGlvbl0gTWVkaWFTdHJlYW1BdWRpb1NvdXJjZU5v
ZGUgY3JlYXRlTWVkaWFTdHJlYW1Tb3VyY2UoTWVkaWFTdHJlYW0gbWVkaWFTdHJlYW0pOworICAg
IFtDb25kaXRpb25hbD1NRURJQV9TVFJFQU0sIE1heVRocm93RXhjZXB0aW9uXSBNZWRpYVN0cmVh
bUF1ZGlvRGVzdGluYXRpb25Ob2RlIGNyZWF0ZU1lZGlhU3RyZWFtRGVzdGluYXRpb24oKTsKKwor
ICAgIC8vIFByb2Nlc3Npbmcgbm9kZXMKKyAgICBbTWF5VGhyb3dFeGNlcHRpb25dIEdhaW5Ob2Rl
IGNyZWF0ZUdhaW4oKTsKKyAgICBbTWF5VGhyb3dFeGNlcHRpb25dIERlbGF5Tm9kZSBjcmVhdGVE
ZWxheShvcHRpb25hbCB1bnJlc3RyaWN0ZWQgZG91YmxlIG1heERlbGF5VGltZSA9IDEpOworICAg
IFtNYXlUaHJvd0V4Y2VwdGlvbl0gQmlxdWFkRmlsdGVyTm9kZSBjcmVhdGVCaXF1YWRGaWx0ZXIo
KTsKKyAgICBbTWF5VGhyb3dFeGNlcHRpb25dIFdhdmVTaGFwZXJOb2RlIGNyZWF0ZVdhdmVTaGFw
ZXIoKTsKKyAgICBbTWF5VGhyb3dFeGNlcHRpb25dIFdlYktpdEF1ZGlvUGFubmVyTm9kZSBjcmVh
dGVQYW5uZXIoKTsKKyAgICBbTWF5VGhyb3dFeGNlcHRpb25dIENvbnZvbHZlck5vZGUgY3JlYXRl
Q29udm9sdmVyKCk7CisgICAgW01heVRocm93RXhjZXB0aW9uXSBEeW5hbWljc0NvbXByZXNzb3JO
b2RlIGNyZWF0ZUR5bmFtaWNzQ29tcHJlc3NvcigpOworICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0g
QW5hbHlzZXJOb2RlIGNyZWF0ZUFuYWx5c2VyKCk7CisgICAgW01heVRocm93RXhjZXB0aW9uXSBT
Y3JpcHRQcm9jZXNzb3JOb2RlIGNyZWF0ZVNjcmlwdFByb2Nlc3NvcihvcHRpb25hbCB1bnNpZ25l
ZCBsb25nIGJ1ZmZlclNpemUgPSAwLCBvcHRpb25hbCB1bnNpZ25lZCBsb25nIG51bWJlck9mSW5w
dXRDaGFubmVscyA9IDIsIG9wdGlvbmFsIHVuc2lnbmVkIGxvbmcgbnVtYmVyT2ZPdXRwdXRDaGFu
bmVscyA9IDIpOworICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gT3NjaWxsYXRvck5vZGUgY3JlYXRl
T3NjaWxsYXRvcigpOworICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gUGVyaW9kaWNXYXZlIGNyZWF0
ZVBlcmlvZGljV2F2ZShGbG9hdDMyQXJyYXkgcmVhbCwgRmxvYXQzMkFycmF5IGltYWcpOworCisg
ICAgLy8gQ2hhbm5lbCBzcGxpdHRpbmcgYW5kIG1lcmdpbmcKKyAgICBbTWF5VGhyb3dFeGNlcHRp
b25dIENoYW5uZWxTcGxpdHRlck5vZGUgY3JlYXRlQ2hhbm5lbFNwbGl0dGVyKG9wdGlvbmFsIHVu
c2lnbmVkIGxvbmcgbnVtYmVyT2ZPdXRwdXRzID0gNik7CisgICAgW01heVRocm93RXhjZXB0aW9u
XSBDaGFubmVsTWVyZ2VyTm9kZSBjcmVhdGVDaGFubmVsTWVyZ2VyKG9wdGlvbmFsIHVuc2lnbmVk
IGxvbmcgbnVtYmVyT2ZJbnB1dHMgPSA2KTsKKworICAgIC8vIE9mZmxpbmUgcmVuZGVyaW5nCisg
ICAgLy8gdm9pZCBwcmVwYXJlT2ZmbGluZUJ1ZmZlclJlbmRlcmluZyh1bnNpZ25lZCBsb25nIG51
bWJlck9mQ2hhbm5lbHMsIHVuc2lnbmVkIGxvbmcgbnVtYmVyT2ZGcmFtZXMsIHVucmVzdHJpY3Rl
ZCBmbG9hdCBzYW1wbGVSYXRlKTsKKyAgICBhdHRyaWJ1dGUgRXZlbnRIYW5kbGVyIG9uY29tcGxl
dGU7CisgICAgdm9pZCBzdGFydFJlbmRlcmluZygpOworfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vV2ViS2l0QXVkaW9QYW5uZXJOb2RlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vV2ViS2l0QXVkaW9QYW5uZXJOb2RlLmNwcApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi4yNThmNDVlN2NmZDkxYzgyMmM2OTkyZTc1OGRhYTc1OGFkNzkwMmUyCi0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9XZWJLaXRBdWRpb1Bh
bm5lck5vZGUuY3BwCkBAIC0wLDAgKzEsMzYzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEw
LCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAg
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJF
CisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04KKyAqIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUworICogU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNv
bmZpZy5oIgorI2luY2x1ZGUgIldlYktpdEF1ZGlvUGFubmVyTm9kZS5oIgorCisjaWYgRU5BQkxF
KFdFQl9BVURJTykKKworI2luY2x1ZGUgIkF1ZGlvQnVmZmVyU291cmNlTm9kZS5oIgorI2luY2x1
ZGUgIkF1ZGlvQnVzLmgiCisjaW5jbHVkZSAiQXVkaW9Db250ZXh0LmgiCisjaW5jbHVkZSAiQXVk
aW9Ob2RlSW5wdXQuaCIKKyNpbmNsdWRlICJBdWRpb05vZGVPdXRwdXQuaCIKKyNpbmNsdWRlICJI
UlRGRGF0YWJhc2VMb2FkZXIuaCIKKyNpbmNsdWRlICJIUlRGUGFubmVyLmgiCisjaW5jbHVkZSAi
U2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgorI2luY2x1ZGUgPHd0Zi9Jc29NYWxsb2NJbmxpbmVz
Lmg+CisjaW5jbHVkZSA8d3RmL01hdGhFeHRyYXMuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgewor
CitXVEZfTUFLRV9JU09fQUxMT0NBVEVEX0lNUEwoV2ViS2l0QXVkaW9QYW5uZXJOb2RlKTsKKwor
c3RhdGljIHZvaWQgZml4TkFOcyhkb3VibGUgJngpCit7CisgICAgaWYgKHN0ZDo6aXNuYW4oeCkg
fHwgc3RkOjppc2luZih4KSkKKyAgICAgICAgeCA9IDAuMDsKK30KKworV2ViS2l0QXVkaW9QYW5u
ZXJOb2RlOjpXZWJLaXRBdWRpb1Bhbm5lck5vZGUoV2ViS2l0QXVkaW9Db250ZXh0JiBjb250ZXh0
LCBmbG9hdCBzYW1wbGVSYXRlKQorICAgIDogUGFubmVyTm9kZUJhc2UoY29udGV4dCwgc2FtcGxl
UmF0ZSkKKyAgICAsIG1fcGFubmluZ01vZGVsKFBhbm5pbmdNb2RlbFR5cGU6OkhSVEYpCisgICAg
LCBtX2xhc3RHYWluKC0xLjApCisgICAgLCBtX2Nvbm5lY3Rpb25Db3VudCgwKQoreworICAgIHNl
dE5vZGVUeXBlKE5vZGVUeXBlUGFubmVyKTsKKworICAgIC8vIExvYWQgdGhlIEhSVEYgZGF0YWJh
c2UgYXN5bmNocm9ub3VzbHkgc28gd2UgZG9uJ3QgYmxvY2sgdGhlIEphdmFzY3JpcHQgdGhyZWFk
IHdoaWxlIGNyZWF0aW5nIHRoZSBIUlRGIGRhdGFiYXNlLgorICAgIG1faHJ0ZkRhdGFiYXNlTG9h
ZGVyID0gSFJURkRhdGFiYXNlTG9hZGVyOjpjcmVhdGVBbmRMb2FkQXN5bmNocm9ub3VzbHlJZk5l
Y2Vzc2FyeShjb250ZXh0LnNhbXBsZVJhdGUoKSk7CisKKyAgICBhZGRJbnB1dChtYWtlVW5pcXVl
PEF1ZGlvTm9kZUlucHV0Pih0aGlzKSk7CisgICAgYWRkT3V0cHV0KG1ha2VVbmlxdWU8QXVkaW9O
b2RlT3V0cHV0Pih0aGlzLCAyKSk7CisKKyAgICAvLyBOb2RlLXNwZWNpZmljIGRlZmF1bHQgbWl4
aW5nIHJ1bGVzLgorICAgIG1fY2hhbm5lbENvdW50ID0gMjsKKyAgICBtX2NoYW5uZWxDb3VudE1v
ZGUgPSBDbGFtcGVkTWF4OworICAgIG1fY2hhbm5lbEludGVycHJldGF0aW9uID0gQXVkaW9CdXM6
OlNwZWFrZXJzOworCisgICAgbV9kaXN0YW5jZUdhaW4gPSBBdWRpb1BhcmFtOjpjcmVhdGUoY29u
dGV4dCwgImRpc3RhbmNlR2FpbiIsIDEuMCwgMC4wLCAxLjApOworICAgIG1fY29uZUdhaW4gPSBB
dWRpb1BhcmFtOjpjcmVhdGUoY29udGV4dCwgImNvbmVHYWluIiwgMS4wLCAwLjAsIDEuMCk7CisK
KyAgICBtX3Bvc2l0aW9uID0gRmxvYXRQb2ludDNEKDAsIDAsIDApOworICAgIG1fb3JpZW50YXRp
b24gPSBGbG9hdFBvaW50M0QoMSwgMCwgMCk7CisgICAgbV92ZWxvY2l0eSA9IEZsb2F0UG9pbnQz
RCgwLCAwLCAwKTsKKworICAgIGluaXRpYWxpemUoKTsKK30KKworV2ViS2l0QXVkaW9QYW5uZXJO
b2RlOjp+V2ViS2l0QXVkaW9QYW5uZXJOb2RlKCkKK3sKKyAgICB1bmluaXRpYWxpemUoKTsKK30K
Kwordm9pZCBXZWJLaXRBdWRpb1Bhbm5lck5vZGU6OnB1bGxJbnB1dHMoc2l6ZV90IGZyYW1lc1Rv
UHJvY2VzcykKK3sKKyAgICAvLyBXZSBvdmVycmlkZSBwdWxsSW5wdXRzKCksIHNvIHdlIGNhbiBk
ZXRlY3QgbmV3IEF1ZGlvU291cmNlTm9kZXMgd2hpY2ggaGF2ZSBjb25uZWN0ZWQgdG8gdXMgd2hl
biBuZXcgY29ubmVjdGlvbnMgYXJlIG1hZGUuCisgICAgLy8gVGhlc2UgQXVkaW9Tb3VyY2VOb2Rl
cyBuZWVkIHRvIGJlIG1hZGUgYXdhcmUgb2Ygb3VyIGV4aXN0ZW5jZSBpbiBvcmRlciB0byBoYW5k
bGUgZG9wcGxlciBzaGlmdCBwaXRjaCBjaGFuZ2VzLgorICAgIGlmIChtX2Nvbm5lY3Rpb25Db3Vu
dCAhPSBjb250ZXh0KCkuY29ubmVjdGlvbkNvdW50KCkpIHsKKyAgICAgICAgbV9jb25uZWN0aW9u
Q291bnQgPSBjb250ZXh0KCkuY29ubmVjdGlvbkNvdW50KCk7CisKKyAgICAgICAgLy8gUmVjdXJz
aXZlbHkgZ28gdGhyb3VnaCBhbGwgbm9kZXMgY29ubmVjdGVkIHRvIHVzLgorICAgICAgICBIYXNo
U2V0PEF1ZGlvTm9kZSo+IHZpc2l0ZWROb2RlczsKKyAgICAgICAgbm90aWZ5QXVkaW9Tb3VyY2Vz
Q29ubmVjdGVkVG9Ob2RlKHRoaXMsIHZpc2l0ZWROb2Rlcyk7CisgICAgfQorCisgICAgQXVkaW9O
b2RlOjpwdWxsSW5wdXRzKGZyYW1lc1RvUHJvY2Vzcyk7Cit9CisKK3ZvaWQgV2ViS2l0QXVkaW9Q
YW5uZXJOb2RlOjpwcm9jZXNzKHNpemVfdCBmcmFtZXNUb1Byb2Nlc3MpCit7CisgICAgQXVkaW9C
dXMqIGRlc3RpbmF0aW9uID0gb3V0cHV0KDApLT5idXMoKTsKKworICAgIGlmICghaXNJbml0aWFs
aXplZCgpIHx8ICFpbnB1dCgwKS0+aXNDb25uZWN0ZWQoKSB8fCAhbV9wYW5uZXIuZ2V0KCkpIHsK
KyAgICAgICAgZGVzdGluYXRpb24tPnplcm8oKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKwor
ICAgIEF1ZGlvQnVzKiBzb3VyY2UgPSBpbnB1dCgwKS0+YnVzKCk7CisgICAgaWYgKCFzb3VyY2Up
IHsKKyAgICAgICAgZGVzdGluYXRpb24tPnplcm8oKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0K
KworICAgIC8vIEhSVEZEYXRhYmFzZSBzaG91bGQgYmUgbG9hZGVkIGJlZm9yZSBwcm9jZWVkaW5n
IGZvciBvZmZsaW5lIGF1ZGlvIGNvbnRleHQgd2hlbiBwYW5uaW5nTW9kZWwoKSBpcyAiSFJURiIu
CisgICAgaWYgKHBhbm5pbmdNb2RlbCgpID09IFBhbm5pbmdNb2RlbFR5cGU6OkhSVEYgJiYgIW1f
aHJ0ZkRhdGFiYXNlTG9hZGVyLT5pc0xvYWRlZCgpKSB7CisgICAgICAgIGlmIChjb250ZXh0KCku
aXNPZmZsaW5lQ29udGV4dCgpKQorICAgICAgICAgICAgbV9ocnRmRGF0YWJhc2VMb2FkZXItPndh
aXRGb3JMb2FkZXJUaHJlYWRDb21wbGV0aW9uKCk7CisgICAgICAgIGVsc2UgeworICAgICAgICAg
ICAgZGVzdGluYXRpb24tPnplcm8oKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQor
ICAgIH0KKworICAgIC8vIFRoZSBhdWRpbyB0aHJlYWQgY2FuJ3QgYmxvY2sgb24gdGhpcyBsb2Nr
LCBzbyB3ZSB1c2Ugc3RkOjp0cnlfdG9fbG9jayBpbnN0ZWFkLgorICAgIHN0ZDo6dW5pcXVlX2xv
Y2s8TG9jaz4gbG9jayhtX3Bhbm5lck11dGV4LCBzdGQ6OnRyeV90b19sb2NrKTsKKyAgICBpZiAo
IWxvY2sub3duc19sb2NrKCkpIHsKKyAgICAgICAgLy8gVG9vIGJhZCAtIFRoZSB0cnlfbG9jaygp
IGZhaWxlZC4gV2UgbXVzdCBiZSBpbiB0aGUgbWlkZGxlIG9mIGNoYW5naW5nIHRoZSBwYW5uZXIu
CisgICAgICAgIGRlc3RpbmF0aW9uLT56ZXJvKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisK
KyAgICAvLyBBcHBseSB0aGUgcGFubmluZyBlZmZlY3QuCisgICAgZG91YmxlIGF6aW11dGg7Cisg
ICAgZG91YmxlIGVsZXZhdGlvbjsKKyAgICBnZXRBemltdXRoRWxldmF0aW9uKCZhemltdXRoLCAm
ZWxldmF0aW9uKTsKKyAgICBtX3Bhbm5lci0+cGFuKGF6aW11dGgsIGVsZXZhdGlvbiwgc291cmNl
LCBkZXN0aW5hdGlvbiwgZnJhbWVzVG9Qcm9jZXNzKTsKKworICAgIC8vIEdldCB0aGUgZGlzdGFu
Y2UgYW5kIGNvbmUgZ2Fpbi4KKyAgICBkb3VibGUgdG90YWxHYWluID0gZGlzdGFuY2VDb25lR2Fp
bigpOworCisgICAgLy8gU25hcCB0byBkZXNpcmVkIGdhaW4gYXQgdGhlIGJlZ2lubmluZy4KKyAg
ICBpZiAobV9sYXN0R2FpbiA9PSAtMS4wKQorICAgICAgICBtX2xhc3RHYWluID0gdG90YWxHYWlu
OworCisgICAgLy8gQXBwbHkgZ2FpbiBpbi1wbGFjZSB3aXRoIGRlLXppcHBlcmluZy4KKyAgICBk
ZXN0aW5hdGlvbi0+Y29weVdpdGhHYWluRnJvbSgqZGVzdGluYXRpb24sICZtX2xhc3RHYWluLCB0
b3RhbEdhaW4pOworfQorCit2b2lkIFdlYktpdEF1ZGlvUGFubmVyTm9kZTo6cmVzZXQoKQorewor
ICAgIG1fbGFzdEdhaW4gPSAtMS4wOyAvLyBmb3JjZSB0byBzbmFwIHRvIGluaXRpYWwgZ2Fpbgor
ICAgIGlmIChtX3Bhbm5lci5nZXQoKSkKKyAgICAgICAgbV9wYW5uZXItPnJlc2V0KCk7Cit9CisK
K3ZvaWQgV2ViS2l0QXVkaW9QYW5uZXJOb2RlOjppbml0aWFsaXplKCkKK3sKKyAgICBpZiAoaXNJ
bml0aWFsaXplZCgpKQorICAgICAgICByZXR1cm47CisKKyAgICBtX3Bhbm5lciA9IFBhbm5lcjo6
Y3JlYXRlKG1fcGFubmluZ01vZGVsLCBzYW1wbGVSYXRlKCksIG1faHJ0ZkRhdGFiYXNlTG9hZGVy
LmdldCgpKTsKKworICAgIEF1ZGlvTm9kZTo6aW5pdGlhbGl6ZSgpOworfQorCit2b2lkIFdlYktp
dEF1ZGlvUGFubmVyTm9kZTo6dW5pbml0aWFsaXplKCkKK3sKKyAgICBpZiAoIWlzSW5pdGlhbGl6
ZWQoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9wYW5uZXIgPSBudWxscHRyOworICAgIEF1
ZGlvTm9kZTo6dW5pbml0aWFsaXplKCk7Cit9CisKK0F1ZGlvTGlzdGVuZXIqIFdlYktpdEF1ZGlv
UGFubmVyTm9kZTo6bGlzdGVuZXIoKQoreworICAgIHJldHVybiBjb250ZXh0KCkubGlzdGVuZXIo
KTsKK30KKwordm9pZCBXZWJLaXRBdWRpb1Bhbm5lck5vZGU6OnNldFBhbm5pbmdNb2RlbChQYW5u
aW5nTW9kZWxUeXBlIG1vZGVsKQoreworICAgIGlmICghbV9wYW5uZXIuZ2V0KCkgfHwgbW9kZWwg
IT0gbV9wYW5uaW5nTW9kZWwpIHsKKyAgICAgICAgLy8gVGhpcyBzeW5jaHJvbml6ZXMgd2l0aCBw
cm9jZXNzKCkuCisgICAgICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sobV9wYW5uZXJNdXRleCk7
CisKKyAgICAgICAgbV9wYW5uZXIgPSBQYW5uZXI6OmNyZWF0ZShtb2RlbCwgc2FtcGxlUmF0ZSgp
LCBtX2hydGZEYXRhYmFzZUxvYWRlci5nZXQoKSk7CisgICAgICAgIG1fcGFubmluZ01vZGVsID0g
bW9kZWw7CisgICAgfQorfQorCitEaXN0YW5jZU1vZGVsVHlwZSBXZWJLaXRBdWRpb1Bhbm5lck5v
ZGU6OmRpc3RhbmNlTW9kZWwoKSBjb25zdAoreworICAgIHJldHVybiBjb25zdF9jYXN0PFdlYktp
dEF1ZGlvUGFubmVyTm9kZSo+KHRoaXMpLT5tX2Rpc3RhbmNlRWZmZWN0Lm1vZGVsKCk7Cit9CisK
K3ZvaWQgV2ViS2l0QXVkaW9QYW5uZXJOb2RlOjpzZXREaXN0YW5jZU1vZGVsKERpc3RhbmNlTW9k
ZWxUeXBlIG1vZGVsKQoreworICAgIG1fZGlzdGFuY2VFZmZlY3Quc2V0TW9kZWwobW9kZWwsIHRy
dWUpOworfQorCit2b2lkIFdlYktpdEF1ZGlvUGFubmVyTm9kZTo6Z2V0QXppbXV0aEVsZXZhdGlv
bihkb3VibGUqIG91dEF6aW11dGgsIGRvdWJsZSogb3V0RWxldmF0aW9uKQoreworICAgIC8vIEZJ
WE1FOiB3ZSBzaG91bGQgY2FjaGUgYXppbXV0aCBhbmQgZWxldmF0aW9uIChpZiBwb3NzaWJsZSks
IHNvIHdlIG9ubHkgcmUtY2FsY3VsYXRlIGlmIGEgY2hhbmdlIGhhcyBiZWVuIG1hZGUuCisKKyAg
ICBkb3VibGUgYXppbXV0aCA9IDAuMDsKKworICAgIC8vIENhbGN1bGF0ZSB0aGUgc291cmNlLWxp
c3RlbmVyIHZlY3RvcgorICAgIEZsb2F0UG9pbnQzRCBsaXN0ZW5lclBvc2l0aW9uID0gbGlzdGVu
ZXIoKS0+cG9zaXRpb24oKTsKKyAgICBGbG9hdFBvaW50M0Qgc291cmNlTGlzdGVuZXIgPSBwb3Np
dGlvbigpIC0gbGlzdGVuZXJQb3NpdGlvbjsKKworICAgIGlmIChzb3VyY2VMaXN0ZW5lci5pc1pl
cm8oKSkgeworICAgICAgICAvLyBkZWdlbmVyYXRlIGNhc2UgaWYgc291cmNlIGFuZCBsaXN0ZW5l
ciBhcmUgYXQgdGhlIHNhbWUgcG9pbnQKKyAgICAgICAgKm91dEF6aW11dGggPSAwLjA7CisgICAg
ICAgICpvdXRFbGV2YXRpb24gPSAwLjA7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBz
b3VyY2VMaXN0ZW5lci5ub3JtYWxpemUoKTsKKworICAgIC8vIEFsaWduIGF4ZXMKKyAgICBGbG9h
dFBvaW50M0QgbGlzdGVuZXJGcm9udCA9IGxpc3RlbmVyKCktPm9yaWVudGF0aW9uKCk7CisgICAg
RmxvYXRQb2ludDNEIGxpc3RlbmVyVXAgPSBsaXN0ZW5lcigpLT51cFZlY3RvcigpOworICAgIEZs
b2F0UG9pbnQzRCBsaXN0ZW5lclJpZ2h0ID0gbGlzdGVuZXJGcm9udC5jcm9zcyhsaXN0ZW5lclVw
KTsKKyAgICBsaXN0ZW5lclJpZ2h0Lm5vcm1hbGl6ZSgpOworCisgICAgRmxvYXRQb2ludDNEIGxp
c3RlbmVyRnJvbnROb3JtID0gbGlzdGVuZXJGcm9udDsKKyAgICBsaXN0ZW5lckZyb250Tm9ybS5u
b3JtYWxpemUoKTsKKworICAgIEZsb2F0UG9pbnQzRCB1cCA9IGxpc3RlbmVyUmlnaHQuY3Jvc3Mo
bGlzdGVuZXJGcm9udE5vcm0pOworCisgICAgZmxvYXQgdXBQcm9qZWN0aW9uID0gc291cmNlTGlz
dGVuZXIuZG90KHVwKTsKKworICAgIEZsb2F0UG9pbnQzRCBwcm9qZWN0ZWRTb3VyY2UgPSBzb3Vy
Y2VMaXN0ZW5lciAtIHVwUHJvamVjdGlvbiAqIHVwOworICAgIHByb2plY3RlZFNvdXJjZS5ub3Jt
YWxpemUoKTsKKworICAgIGF6aW11dGggPSAxODAuMCAqIGFjb3MocHJvamVjdGVkU291cmNlLmRv
dChsaXN0ZW5lclJpZ2h0KSkgLyBwaURvdWJsZTsKKyAgICBmaXhOQU5zKGF6aW11dGgpOyAvLyBh
dm9pZCBpbGxlZ2FsIHZhbHVlcworCisgICAgLy8gU291cmNlICBpbiBmcm9udCBvciBiZWhpbmQg
dGhlIGxpc3RlbmVyCisgICAgZG91YmxlIGZyb250QmFjayA9IHByb2plY3RlZFNvdXJjZS5kb3Qo
bGlzdGVuZXJGcm9udE5vcm0pOworICAgIGlmIChmcm9udEJhY2sgPCAwLjApCisgICAgICAgIGF6
aW11dGggPSAzNjAuMCAtIGF6aW11dGg7CisKKyAgICAvLyBNYWtlIGF6aW11dGggcmVsYXRpdmUg
dG8gImZyb250IiBhbmQgbm90ICJyaWdodCIgbGlzdGVuZXIgdmVjdG9yCisgICAgaWYgKChhemlt
dXRoID49IDAuMCkgJiYgKGF6aW11dGggPD0gMjcwLjApKQorICAgICAgICBhemltdXRoID0gOTAu
MCAtIGF6aW11dGg7CisgICAgZWxzZQorICAgICAgICBhemltdXRoID0gNDUwLjAgLSBhemltdXRo
OworCisgICAgLy8gRWxldmF0aW9uCisgICAgZG91YmxlIGVsZXZhdGlvbiA9IDkwLjAgLSAxODAu
MCAqIGFjb3Moc291cmNlTGlzdGVuZXIuZG90KHVwKSkgLyBwaURvdWJsZTsKKyAgICBmaXhOQU5z
KGVsZXZhdGlvbik7IC8vIGF2b2lkIGlsbGVnYWwgdmFsdWVzCisKKyAgICBpZiAoZWxldmF0aW9u
ID4gOTAuMCkKKyAgICAgICAgZWxldmF0aW9uID0gMTgwLjAgLSBlbGV2YXRpb247CisgICAgZWxz
ZSBpZiAoZWxldmF0aW9uIDwgLTkwLjApCisgICAgICAgIGVsZXZhdGlvbiA9IC0xODAuMCAtIGVs
ZXZhdGlvbjsKKworICAgIGlmIChvdXRBemltdXRoKQorICAgICAgICAqb3V0QXppbXV0aCA9IGF6
aW11dGg7CisgICAgaWYgKG91dEVsZXZhdGlvbikKKyAgICAgICAgKm91dEVsZXZhdGlvbiA9IGVs
ZXZhdGlvbjsKK30KKworZmxvYXQgV2ViS2l0QXVkaW9QYW5uZXJOb2RlOjpkb3BwbGVyUmF0ZSgp
Cit7CisgICAgZG91YmxlIGRvcHBsZXJTaGlmdCA9IDEuMDsKKworICAgIC8vIEZJWE1FOiBvcHRp
bWl6ZSBmb3IgY2FzZSB3aGVuIG5laXRoZXIgc291cmNlIG5vciBsaXN0ZW5lciBoYXMgY2hhbmdl
ZC4uLgorICAgIGRvdWJsZSBkb3BwbGVyRmFjdG9yID0gbGlzdGVuZXIoKS0+ZG9wcGxlckZhY3Rv
cigpOworCisgICAgaWYgKGRvcHBsZXJGYWN0b3IgPiAwLjApIHsKKyAgICAgICAgZG91YmxlIHNw
ZWVkT2ZTb3VuZCA9IGxpc3RlbmVyKCktPnNwZWVkT2ZTb3VuZCgpOworCisgICAgICAgIGNvbnN0
IEZsb2F0UG9pbnQzRCAmc291cmNlVmVsb2NpdHkgPSBtX3ZlbG9jaXR5OworICAgICAgICBjb25z
dCBGbG9hdFBvaW50M0QgJmxpc3RlbmVyVmVsb2NpdHkgPSBsaXN0ZW5lcigpLT52ZWxvY2l0eSgp
OworCisgICAgICAgIC8vIERvbid0IGJvdGhlciBpZiBib3RoIHNvdXJjZSBhbmQgbGlzdGVuZXIg
aGF2ZSBubyB2ZWxvY2l0eQorICAgICAgICBib29sIHNvdXJjZUhhc1ZlbG9jaXR5ID0gIXNvdXJj
ZVZlbG9jaXR5LmlzWmVybygpOworICAgICAgICBib29sIGxpc3RlbmVySGFzVmVsb2NpdHkgPSAh
bGlzdGVuZXJWZWxvY2l0eS5pc1plcm8oKTsKKworICAgICAgICBpZiAoc291cmNlSGFzVmVsb2Np
dHkgfHwgbGlzdGVuZXJIYXNWZWxvY2l0eSkgeworICAgICAgICAgICAgLy8gQ2FsY3VsYXRlIHRo
ZSBzb3VyY2UgdG8gbGlzdGVuZXIgdmVjdG9yCisgICAgICAgICAgICBGbG9hdFBvaW50M0QgbGlz
dGVuZXJQb3NpdGlvbiA9IGxpc3RlbmVyKCktPnBvc2l0aW9uKCk7CisgICAgICAgICAgICBGbG9h
dFBvaW50M0Qgc291cmNlVG9MaXN0ZW5lciA9IHBvc2l0aW9uKCkgLSBsaXN0ZW5lclBvc2l0aW9u
OworCisgICAgICAgICAgICBkb3VibGUgc291cmNlTGlzdGVuZXJNYWduaXR1ZGUgPSBzb3VyY2VU
b0xpc3RlbmVyLmxlbmd0aCgpOworCisgICAgICAgICAgICBkb3VibGUgbGlzdGVuZXJQcm9qZWN0
aW9uID0gc291cmNlVG9MaXN0ZW5lci5kb3QobGlzdGVuZXJWZWxvY2l0eSkgLyBzb3VyY2VMaXN0
ZW5lck1hZ25pdHVkZTsKKyAgICAgICAgICAgIGRvdWJsZSBzb3VyY2VQcm9qZWN0aW9uID0gc291
cmNlVG9MaXN0ZW5lci5kb3Qoc291cmNlVmVsb2NpdHkpIC8gc291cmNlTGlzdGVuZXJNYWduaXR1
ZGU7CisKKyAgICAgICAgICAgIGxpc3RlbmVyUHJvamVjdGlvbiA9IC1saXN0ZW5lclByb2plY3Rp
b247CisgICAgICAgICAgICBzb3VyY2VQcm9qZWN0aW9uID0gLXNvdXJjZVByb2plY3Rpb247CisK
KyAgICAgICAgICAgIGRvdWJsZSBzY2FsZWRTcGVlZE9mU291bmQgPSBzcGVlZE9mU291bmQgLyBk
b3BwbGVyRmFjdG9yOworICAgICAgICAgICAgbGlzdGVuZXJQcm9qZWN0aW9uID0gc3RkOjptaW4o
bGlzdGVuZXJQcm9qZWN0aW9uLCBzY2FsZWRTcGVlZE9mU291bmQpOworICAgICAgICAgICAgc291
cmNlUHJvamVjdGlvbiA9IHN0ZDo6bWluKHNvdXJjZVByb2plY3Rpb24sIHNjYWxlZFNwZWVkT2ZT
b3VuZCk7CisKKyAgICAgICAgICAgIGRvcHBsZXJTaGlmdCA9ICgoc3BlZWRPZlNvdW5kIC0gZG9w
cGxlckZhY3RvciAqIGxpc3RlbmVyUHJvamVjdGlvbikgLyAoc3BlZWRPZlNvdW5kIC0gZG9wcGxl
ckZhY3RvciAqIHNvdXJjZVByb2plY3Rpb24pKTsKKyAgICAgICAgICAgIGZpeE5BTnMoZG9wcGxl
clNoaWZ0KTsgLy8gYXZvaWQgaWxsZWdhbCB2YWx1ZXMKKworICAgICAgICAgICAgLy8gTGltaXQg
dGhlIHBpdGNoIHNoaWZ0aW5nIHRvIDQgb2N0YXZlcyB1cCBhbmQgMyBvY3RhdmVzIGRvd24uCisg
ICAgICAgICAgICBpZiAoZG9wcGxlclNoaWZ0ID4gMTYuMCkKKyAgICAgICAgICAgICAgICBkb3Bw
bGVyU2hpZnQgPSAxNi4wOworICAgICAgICAgICAgZWxzZSBpZiAoZG9wcGxlclNoaWZ0IDwgMC4x
MjUpCisgICAgICAgICAgICAgICAgZG9wcGxlclNoaWZ0ID0gMC4xMjU7CisgICAgICAgIH0KKyAg
ICB9CisKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8ZmxvYXQ+KGRvcHBsZXJTaGlmdCk7Cit9CisK
K2Zsb2F0IFdlYktpdEF1ZGlvUGFubmVyTm9kZTo6ZGlzdGFuY2VDb25lR2FpbigpCit7CisgICAg
RmxvYXRQb2ludDNEIGxpc3RlbmVyUG9zaXRpb24gPSBsaXN0ZW5lcigpLT5wb3NpdGlvbigpOwor
ICAgIEZsb2F0UG9pbnQzRCBzb3VyY2VQb3NpdGlvbiA9IHBvc2l0aW9uKCk7CisKKyAgICBkb3Vi
bGUgbGlzdGVuZXJEaXN0YW5jZSA9IHNvdXJjZVBvc2l0aW9uLmRpc3RhbmNlVG8obGlzdGVuZXJQ
b3NpdGlvbik7CisgICAgZG91YmxlIGRpc3RhbmNlR2FpbiA9IG1fZGlzdGFuY2VFZmZlY3QuZ2Fp
bihsaXN0ZW5lckRpc3RhbmNlKTsKKworICAgIG1fZGlzdGFuY2VHYWluLT5zZXRWYWx1ZShzdGF0
aWNfY2FzdDxmbG9hdD4oZGlzdGFuY2VHYWluKSk7CisKKyAgICAvLyBGSVhNRTogY291bGQgb3B0
aW1pemUgYnkgY2FjaGluZyBjb25lR2FpbgorICAgIGRvdWJsZSBjb25lR2FpbiA9IG1fY29uZUVm
ZmVjdC5nYWluKHNvdXJjZVBvc2l0aW9uLCBtX29yaWVudGF0aW9uLCBsaXN0ZW5lclBvc2l0aW9u
KTsKKworICAgIG1fY29uZUdhaW4tPnNldFZhbHVlKHN0YXRpY19jYXN0PGZsb2F0Pihjb25lR2Fp
bikpOworCisgICAgcmV0dXJuIGZsb2F0KGRpc3RhbmNlR2FpbiAqIGNvbmVHYWluKTsKK30KKwor
dm9pZCBXZWJLaXRBdWRpb1Bhbm5lck5vZGU6Om5vdGlmeUF1ZGlvU291cmNlc0Nvbm5lY3RlZFRv
Tm9kZShBdWRpb05vZGUqIG5vZGUsIEhhc2hTZXQ8QXVkaW9Ob2RlKj4mIHZpc2l0ZWROb2RlcykK
K3sKKyAgICBBU1NFUlQobm9kZSk7CisgICAgaWYgKCFub2RlKQorICAgICAgICByZXR1cm47CisK
KyAgICAvLyBGaXJzdCBjaGVjayBpZiB0aGlzIG5vZGUgaXMgYW4gQXVkaW9CdWZmZXJTb3VyY2VO
b2RlLiBJZiBzbywgbGV0IGl0IGtub3cgYWJvdXQgdXMgc28gdGhhdCBkb3BwbGVyIHNoaWZ0IHBp
dGNoIGNhbiBiZSB0YWtlbiBpbnRvIGFjY291bnQuCisgICAgaWYgKG5vZGUtPm5vZGVUeXBlKCkg
PT0gTm9kZVR5cGVBdWRpb0J1ZmZlclNvdXJjZSkgeworICAgICAgICBBdWRpb0J1ZmZlclNvdXJj
ZU5vZGUqIGJ1ZmZlclNvdXJjZU5vZGUgPSByZWludGVycHJldF9jYXN0PEF1ZGlvQnVmZmVyU291
cmNlTm9kZSo+KG5vZGUpOworICAgICAgICBidWZmZXJTb3VyY2VOb2RlLT5zZXRQYW5uZXJOb2Rl
KHRoaXMpOworICAgIH0gZWxzZSB7CisgICAgICAgIC8vIEdvIHRocm91Z2ggYWxsIGlucHV0cyB0
byB0aGlzIG5vZGUuCisgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBub2RlLT5udW1i
ZXJPZklucHV0cygpOyArK2kpIHsKKyAgICAgICAgICAgIEF1ZGlvTm9kZUlucHV0KiBpbnB1dCA9
IG5vZGUtPmlucHV0KGkpOworCisgICAgICAgICAgICAvLyBGb3IgZWFjaCBpbnB1dCwgZ28gdGhy
b3VnaCBhbGwgb2YgaXRzIGNvbm5lY3Rpb25zLCBsb29raW5nIGZvciBBdWRpb0J1ZmZlclNvdXJj
ZU5vZGVzLgorICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBqID0gMDsgaiA8IGlucHV0LT5udW1i
ZXJPZlJlbmRlcmluZ0Nvbm5lY3Rpb25zKCk7ICsraikgeworICAgICAgICAgICAgICAgIEF1ZGlv
Tm9kZU91dHB1dCogY29ubmVjdGVkT3V0cHV0ID0gaW5wdXQtPnJlbmRlcmluZ091dHB1dChqKTsK
KyAgICAgICAgICAgICAgICBBdWRpb05vZGUqIGNvbm5lY3RlZE5vZGUgPSBjb25uZWN0ZWRPdXRw
dXQtPm5vZGUoKTsKKyAgICAgICAgICAgICAgICBpZiAodmlzaXRlZE5vZGVzLmNvbnRhaW5zKGNv
bm5lY3RlZE5vZGUpKQorICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICAg
ICAgICAgIHZpc2l0ZWROb2Rlcy5hZGQoY29ubmVjdGVkTm9kZSk7CisgICAgICAgICAgICAgICAg
bm90aWZ5QXVkaW9Tb3VyY2VzQ29ubmVjdGVkVG9Ob2RlKGNvbm5lY3RlZE5vZGUsIHZpc2l0ZWRO
b2Rlcyk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9Cit9CisKK30gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShXRUJfQVVESU8pCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1dlYktpdEF1ZGlvUGFubmVyTm9kZS5oIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9XZWJLaXRBdWRpb1Bhbm5lck5vZGUuaApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi44OTc5N2MzYzRjNTBiMzY4OTIwNTgwNmMxOTdmMTBiZDljNTY3NmJlCi0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9XZWJLaXRBdWRp
b1Bhbm5lck5vZGUuaApAQCAtMCwwICsxLDE2MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
MCwgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFS
RQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OCisgKiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKKyAqIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25j
ZQorCisjaWYgRU5BQkxFKFdFQl9BVURJTykKKworI2luY2x1ZGUgIkF1ZGlvTGlzdGVuZXIuaCIK
KyNpbmNsdWRlICJBdWRpb05vZGUuaCIKKyNpbmNsdWRlICJBdWRpb1BhcmFtLmgiCisjaW5jbHVk
ZSAiQ29uZS5oIgorI2luY2x1ZGUgIkRpc3RhbmNlLmgiCisjaW5jbHVkZSAiRmxvYXRQb2ludDNE
LmgiCisjaW5jbHVkZSAiUGFubmVyLmgiCisjaW5jbHVkZSAiUGFubmVyTm9kZS5oIgorI2luY2x1
ZGUgIldlYktpdEF1ZGlvQ29udGV4dC5oIgorI2luY2x1ZGUgPG1lbW9yeT4KKyNpbmNsdWRlIDx3
dGYvSGFzaFNldC5oPgorI2luY2x1ZGUgPHd0Zi9Mb2NrLmg+CisKK25hbWVzcGFjZSBXZWJDb3Jl
IHsKKworY2xhc3MgSFJURkRhdGFiYXNlTG9hZGVyOworCisvLyBQYW5uZXJOb2RlIGlzIGFuIEF1
ZGlvTm9kZSB3aXRoIG9uZSBpbnB1dCBhbmQgb25lIG91dHB1dC4KKy8vIEl0IHBvc2l0aW9ucyBh
IHNvdW5kIGluIDNEIHNwYWNlLCB3aXRoIHRoZSBleGFjdCBlZmZlY3QgZGVwZW5kZW50IG9uIHRo
ZSBwYW5uaW5nIG1vZGVsLgorLy8gSXQgaGFzIGEgcG9zaXRpb24gYW5kIGFuIG9yaWVudGF0aW9u
IGluIDNEIHNwYWNlIHdoaWNoIGlzIHJlbGF0aXZlIHRvIHRoZSBwb3NpdGlvbiBhbmQgb3JpZW50
YXRpb24gb2YgdGhlIGNvbnRleHQncyBBdWRpb0xpc3RlbmVyLgorLy8gQSBkaXN0YW5jZSBlZmZl
Y3Qgd2lsbCBhdHRlbnVhdGUgdGhlIGdhaW4gYXMgdGhlIHBvc2l0aW9uIG1vdmVzIGF3YXkgZnJv
bSB0aGUgbGlzdGVuZXIuCisvLyBBIGNvbmUgZWZmZWN0IHdpbGwgYXR0ZW51YXRlIHRoZSBnYWlu
IGFzIHRoZSBvcmllbnRhdGlvbiBtb3ZlcyBhd2F5IGZyb20gdGhlIGxpc3RlbmVyLgorLy8gQWxs
IG9mIHRoZXNlIGVmZmVjdHMgZm9sbG93IHRoZSBPcGVuQUwgc3BlY2lmaWNhdGlvbiB2ZXJ5IGNs
b3NlbHkuCisKK2NsYXNzIFdlYktpdEF1ZGlvUGFubmVyTm9kZSBmaW5hbCA6IHB1YmxpYyBQYW5u
ZXJOb2RlQmFzZSB7CisgICAgV1RGX01BS0VfSVNPX0FMTE9DQVRFRChXZWJLaXRBdWRpb1Bhbm5l
ck5vZGUpOworcHVibGljOgorICAgIHN0YXRpYyBSZWY8V2ViS2l0QXVkaW9QYW5uZXJOb2RlPiBj
cmVhdGUoV2ViS2l0QXVkaW9Db250ZXh0JiBjb250ZXh0LCBmbG9hdCBzYW1wbGVSYXRlKQorICAg
IHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgV2ViS2l0QXVkaW9QYW5uZXJOb2RlKGNv
bnRleHQsIHNhbXBsZVJhdGUpKTsKKyAgICB9CisKKyAgICB2aXJ0dWFsIH5XZWJLaXRBdWRpb1Bh
bm5lck5vZGUoKTsKKworICAgIFdlYktpdEF1ZGlvQ29udGV4dCYgY29udGV4dCgpIHsgcmV0dXJu
IGRvd25jYXN0PFdlYktpdEF1ZGlvQ29udGV4dD4oQXVkaW9Ob2RlOjpjb250ZXh0KCkpOyB9Cisg
ICAgY29uc3QgV2ViS2l0QXVkaW9Db250ZXh0JiBjb250ZXh0KCkgY29uc3QgeyByZXR1cm4gZG93
bmNhc3Q8V2ViS2l0QXVkaW9Db250ZXh0PihBdWRpb05vZGU6OmNvbnRleHQoKSk7IH0KKworICAg
IC8vIEF1ZGlvTm9kZQorICAgIHZvaWQgcHJvY2VzcyhzaXplX3QgZnJhbWVzVG9Qcm9jZXNzKSBv
dmVycmlkZTsKKyAgICB2b2lkIHB1bGxJbnB1dHMoc2l6ZV90IGZyYW1lc1RvUHJvY2Vzcykgb3Zl
cnJpZGU7CisgICAgdm9pZCByZXNldCgpIG92ZXJyaWRlOworICAgIHZvaWQgaW5pdGlhbGl6ZSgp
IG92ZXJyaWRlOworICAgIHZvaWQgdW5pbml0aWFsaXplKCkgb3ZlcnJpZGU7CisKKyAgICAvLyBM
aXN0ZW5lcgorICAgIEF1ZGlvTGlzdGVuZXIqIGxpc3RlbmVyKCk7CisKKyAgICAvLyBQYW5uaW5n
IG1vZGVsCisgICAgUGFubmluZ01vZGVsVHlwZSBwYW5uaW5nTW9kZWwoKSBjb25zdCB7IHJldHVy
biBtX3Bhbm5pbmdNb2RlbDsgfQorICAgIHZvaWQgc2V0UGFubmluZ01vZGVsKFBhbm5pbmdNb2Rl
bFR5cGUpOworCisgICAgLy8gUG9zaXRpb24KKyAgICBGbG9hdFBvaW50M0QgcG9zaXRpb24oKSBj
b25zdCB7IHJldHVybiBtX3Bvc2l0aW9uOyB9CisgICAgdm9pZCBzZXRQb3NpdGlvbihmbG9hdCB4
LCBmbG9hdCB5LCBmbG9hdCB6KSB7IG1fcG9zaXRpb24gPSBGbG9hdFBvaW50M0QoeCwgeSwgeik7
IH0KKworICAgIC8vIE9yaWVudGF0aW9uCisgICAgRmxvYXRQb2ludDNEIG9yaWVudGF0aW9uKCkg
Y29uc3QgeyByZXR1cm4gbV9vcmllbnRhdGlvbjsgfQorICAgIHZvaWQgc2V0T3JpZW50YXRpb24o
ZmxvYXQgeCwgZmxvYXQgeSwgZmxvYXQgeikgeyBtX29yaWVudGF0aW9uID0gRmxvYXRQb2ludDNE
KHgsIHksIHopOyB9CisKKyAgICAvLyBWZWxvY2l0eQorICAgIEZsb2F0UG9pbnQzRCB2ZWxvY2l0
eSgpIGNvbnN0IHsgcmV0dXJuIG1fdmVsb2NpdHk7IH0KKyAgICB2b2lkIHNldFZlbG9jaXR5KGZs
b2F0IHgsIGZsb2F0IHksIGZsb2F0IHopIHsgbV92ZWxvY2l0eSA9IEZsb2F0UG9pbnQzRCh4LCB5
LCB6KTsgfQorCisgICAgLy8gRGlzdGFuY2UgcGFyYW1ldGVycworICAgIERpc3RhbmNlTW9kZWxU
eXBlIGRpc3RhbmNlTW9kZWwoKSBjb25zdDsKKyAgICB2b2lkIHNldERpc3RhbmNlTW9kZWwoRGlz
dGFuY2VNb2RlbFR5cGUpOworCisgICAgZG91YmxlIHJlZkRpc3RhbmNlKCkgeyByZXR1cm4gbV9k
aXN0YW5jZUVmZmVjdC5yZWZEaXN0YW5jZSgpOyB9CisgICAgdm9pZCBzZXRSZWZEaXN0YW5jZShk
b3VibGUgcmVmRGlzdGFuY2UpIHsgbV9kaXN0YW5jZUVmZmVjdC5zZXRSZWZEaXN0YW5jZShyZWZE
aXN0YW5jZSk7IH0KKworICAgIGRvdWJsZSBtYXhEaXN0YW5jZSgpIHsgcmV0dXJuIG1fZGlzdGFu
Y2VFZmZlY3QubWF4RGlzdGFuY2UoKTsgfQorICAgIHZvaWQgc2V0TWF4RGlzdGFuY2UoZG91Ymxl
IG1heERpc3RhbmNlKSB7IG1fZGlzdGFuY2VFZmZlY3Quc2V0TWF4RGlzdGFuY2UobWF4RGlzdGFu
Y2UpOyB9CisKKyAgICBkb3VibGUgcm9sbG9mZkZhY3RvcigpIHsgcmV0dXJuIG1fZGlzdGFuY2VF
ZmZlY3Qucm9sbG9mZkZhY3RvcigpOyB9CisgICAgdm9pZCBzZXRSb2xsb2ZmRmFjdG9yKGRvdWJs
ZSByb2xsb2ZmRmFjdG9yKSB7IG1fZGlzdGFuY2VFZmZlY3Quc2V0Um9sbG9mZkZhY3Rvcihyb2xs
b2ZmRmFjdG9yKTsgfQorCisgICAgLy8gU291bmQgY29uZXMgLSBhbmdsZXMgaW4gZGVncmVlcwor
ICAgIGRvdWJsZSBjb25lSW5uZXJBbmdsZSgpIGNvbnN0IHsgcmV0dXJuIG1fY29uZUVmZmVjdC5p
bm5lckFuZ2xlKCk7IH0KKyAgICB2b2lkIHNldENvbmVJbm5lckFuZ2xlKGRvdWJsZSBhbmdsZSkg
eyBtX2NvbmVFZmZlY3Quc2V0SW5uZXJBbmdsZShhbmdsZSk7IH0KKworICAgIGRvdWJsZSBjb25l
T3V0ZXJBbmdsZSgpIGNvbnN0IHsgcmV0dXJuIG1fY29uZUVmZmVjdC5vdXRlckFuZ2xlKCk7IH0K
KyAgICB2b2lkIHNldENvbmVPdXRlckFuZ2xlKGRvdWJsZSBhbmdsZSkgeyBtX2NvbmVFZmZlY3Qu
c2V0T3V0ZXJBbmdsZShhbmdsZSk7IH0KKworICAgIGRvdWJsZSBjb25lT3V0ZXJHYWluKCkgY29u
c3QgeyByZXR1cm4gbV9jb25lRWZmZWN0Lm91dGVyR2FpbigpOyB9CisgICAgdm9pZCBzZXRDb25l
T3V0ZXJHYWluKGRvdWJsZSBhbmdsZSkgeyBtX2NvbmVFZmZlY3Quc2V0T3V0ZXJHYWluKGFuZ2xl
KTsgfQorCisgICAgdm9pZCBnZXRBemltdXRoRWxldmF0aW9uKGRvdWJsZSogb3V0QXppbXV0aCwg
ZG91YmxlKiBvdXRFbGV2YXRpb24pOworICAgIGZsb2F0IGRvcHBsZXJSYXRlKCkgZmluYWw7CisK
KyAgICAvLyBBY2Nlc3NvcnMgZm9yIGR5bmFtaWNhbGx5IGNhbGN1bGF0ZWQgZ2FpbiB2YWx1ZXMu
CisgICAgQXVkaW9QYXJhbSogZGlzdGFuY2VHYWluKCkgeyByZXR1cm4gbV9kaXN0YW5jZUdhaW4u
Z2V0KCk7IH0KKyAgICBBdWRpb1BhcmFtKiBjb25lR2FpbigpIHsgcmV0dXJuIG1fY29uZUdhaW4u
Z2V0KCk7IH0KKworICAgIGRvdWJsZSB0YWlsVGltZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJu
IG1fcGFubmVyID8gbV9wYW5uZXItPnRhaWxUaW1lKCkgOiAwOyB9CisgICAgZG91YmxlIGxhdGVu
Y3lUaW1lKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9wYW5uZXIgPyBtX3Bhbm5lci0+bGF0
ZW5jeVRpbWUoKSA6IDA7IH0KKworcHJpdmF0ZToKKyAgICBXZWJLaXRBdWRpb1Bhbm5lck5vZGUo
V2ViS2l0QXVkaW9Db250ZXh0JiwgZmxvYXQgc2FtcGxlUmF0ZSk7CisKKyAgICAvLyBSZXR1cm5z
IHRoZSBjb21iaW5lZCBkaXN0YW5jZSBhbmQgY29uZSBnYWluIGF0dGVudWF0aW9uLgorICAgIGZs
b2F0IGRpc3RhbmNlQ29uZUdhaW4oKTsKKworICAgIC8vIE5vdGlmaWVzIGFueSBBdWRpb0J1ZmZl
clNvdXJjZU5vZGVzIGNvbm5lY3RlZCB0byB1cyBlaXRoZXIgZGlyZWN0bHkgb3IgaW5kaXJlY3Rs
eSBhYm91dCBvdXIgZXhpc3RlbmNlLgorICAgIC8vIFRoaXMgaXMgaW4gb3JkZXIgdG8gaGFuZGxl
IHRoZSBwaXRjaCBjaGFuZ2UgbmVjZXNzYXJ5IGZvciB0aGUgZG9wcGxlciBzaGlmdC4KKyAgICB2
b2lkIG5vdGlmeUF1ZGlvU291cmNlc0Nvbm5lY3RlZFRvTm9kZShBdWRpb05vZGUqLCBIYXNoU2V0
PEF1ZGlvTm9kZSo+JiB2aXNpdGVkTm9kZXMpOworCisgICAgc3RkOjp1bmlxdWVfcHRyPFBhbm5l
cj4gbV9wYW5uZXI7CisgICAgUGFubmluZ01vZGVsVHlwZSBtX3Bhbm5pbmdNb2RlbDsKKworICAg
IEZsb2F0UG9pbnQzRCBtX3Bvc2l0aW9uOworICAgIEZsb2F0UG9pbnQzRCBtX29yaWVudGF0aW9u
OworICAgIEZsb2F0UG9pbnQzRCBtX3ZlbG9jaXR5OworCisgICAgLy8gR2FpbgorICAgIFJlZlB0
cjxBdWRpb1BhcmFtPiBtX2Rpc3RhbmNlR2FpbjsKKyAgICBSZWZQdHI8QXVkaW9QYXJhbT4gbV9j
b25lR2FpbjsKKyAgICBEaXN0YW5jZUVmZmVjdCBtX2Rpc3RhbmNlRWZmZWN0OworICAgIENvbmVF
ZmZlY3QgbV9jb25lRWZmZWN0OworICAgIGZsb2F0IG1fbGFzdEdhaW47CisKKyAgICAvLyBIUlRG
IERhdGFiYXNlIGxvYWRlcgorICAgIFJlZlB0cjxIUlRGRGF0YWJhc2VMb2FkZXI+IG1faHJ0ZkRh
dGFiYXNlTG9hZGVyOworCisgICAgdW5zaWduZWQgbV9jb25uZWN0aW9uQ291bnQ7CisKKyAgICAv
LyBTeW5jaHJvbml6ZSBwcm9jZXNzKCkgYW5kIHNldFBhbm5pbmdNb2RlbCgpIHdoaWNoIGNhbiBj
aGFuZ2UgdGhlIHBhbm5lci4KKyAgICBtdXRhYmxlIExvY2sgbV9wYW5uZXJNdXRleDsKK307CisK
K30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1dlYktpdEF1ZGlvUGFubmVyTm9kZS5pZGwgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1dlYktpdEF1ZGlvUGFubmVyTm9kZS5pZGwKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uODhkMjY5MTBhZTE3NTA0MjEzNmE1ZTYyZmFjODEzY2M1ZmMzNjcyZgotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vV2ViS2l0QXVkaW9QYW5u
ZXJOb2RlLmlkbApAQCAtMCwwICsxLDQ5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwLCBH
b29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisg
KiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04KKyAqIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
CisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUworICogU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworWworICAgIENvbmRpdGlv
bmFsPVdFQl9BVURJTywKKyAgICBKU0dlbmVyYXRlVG9KU09iamVjdCwKKyAgICBJbnRlcmZhY2VO
YW1lPXdlYmtpdEF1ZGlvUGFubmVyTm9kZSwKK10gaW50ZXJmYWNlIFdlYktpdEF1ZGlvUGFubmVy
Tm9kZSA6IEF1ZGlvTm9kZSB7CisgICAgLy8gRGVmYXVsdCBtb2RlbCBmb3Igc3RlcmVvIGlzIEhS
VEYKKyAgICBhdHRyaWJ1dGUgUGFubmluZ01vZGVsVHlwZSBwYW5uaW5nTW9kZWw7CisKKyAgICAv
LyBVc2VzIGEgM0QgY2FydGVzaWFuIGNvb3JkaW5hdGUgc3lzdGVtCisgICAgdm9pZCBzZXRQb3Np
dGlvbih1bnJlc3RyaWN0ZWQgZmxvYXQgeCwgdW5yZXN0cmljdGVkIGZsb2F0IHksIHVucmVzdHJp
Y3RlZCBmbG9hdCB6KTsKKyAgICB2b2lkIHNldE9yaWVudGF0aW9uKHVucmVzdHJpY3RlZCBmbG9h
dCB4LCB1bnJlc3RyaWN0ZWQgZmxvYXQgeSwgdW5yZXN0cmljdGVkIGZsb2F0IHopOworICAgIHZv
aWQgc2V0VmVsb2NpdHkodW5yZXN0cmljdGVkIGZsb2F0IHgsIHVucmVzdHJpY3RlZCBmbG9hdCB5
LCB1bnJlc3RyaWN0ZWQgZmxvYXQgeik7CisKKyAgICAvLyBEaXN0YW5jZSBtb2RlbAorICAgIGF0
dHJpYnV0ZSBEaXN0YW5jZU1vZGVsVHlwZSBkaXN0YW5jZU1vZGVsOworCisgICAgYXR0cmlidXRl
IHVucmVzdHJpY3RlZCBkb3VibGUgcmVmRGlzdGFuY2U7CisgICAgYXR0cmlidXRlIHVucmVzdHJp
Y3RlZCBkb3VibGUgbWF4RGlzdGFuY2U7CisgICAgYXR0cmlidXRlIHVucmVzdHJpY3RlZCBkb3Vi
bGUgcm9sbG9mZkZhY3RvcjsKKworICAgIC8vIERpcmVjdGlvbmFsIHNvdW5kIGNvbmUKKyAgICBh
dHRyaWJ1dGUgdW5yZXN0cmljdGVkIGRvdWJsZSBjb25lSW5uZXJBbmdsZTsKKyAgICBhdHRyaWJ1
dGUgdW5yZXN0cmljdGVkIGRvdWJsZSBjb25lT3V0ZXJBbmdsZTsKKyAgICBhdHRyaWJ1dGUgdW5y
ZXN0cmljdGVkIGRvdWJsZSBjb25lT3V0ZXJHYWluOworfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vV2ViS2l0T2ZmbGluZUF1ZGlvQ29udGV4dC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1dlYktpdE9mZmxpbmVBdWRpb0NvbnRleHQu
Y3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLmQ4ZTM5OWExNGEzZDVkMzE2NzViYTlhMDZmODE0MDMxMjM1MmI0YTEK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1dlYktp
dE9mZmxpbmVBdWRpb0NvbnRleHQuY3BwCkBAIC0wLDAgKzEsNjIgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTIsIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiAgUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIg
UFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTgorICog
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTCisgKiBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
aW5jbHVkZSAiY29uZmlnLmgiCisKKyNpZiBFTkFCTEUoV0VCX0FVRElPKQorCisjaW5jbHVkZSAi
V2ViS2l0T2ZmbGluZUF1ZGlvQ29udGV4dC5oIgorCisjaW5jbHVkZSAiQXVkaW9CdWZmZXIuaCIK
KyNpbmNsdWRlICJEb2N1bWVudC5oIgorI2luY2x1ZGUgPHd0Zi9Jc29NYWxsb2NJbmxpbmVzLmg+
CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworV1RGX01BS0VfSVNPX0FMTE9DQVRFRF9JTVBMKFdl
YktpdE9mZmxpbmVBdWRpb0NvbnRleHQpOworCitpbmxpbmUgV2ViS2l0T2ZmbGluZUF1ZGlvQ29u
dGV4dDo6V2ViS2l0T2ZmbGluZUF1ZGlvQ29udGV4dChEb2N1bWVudCYgZG9jdW1lbnQsIEF1ZGlv
QnVmZmVyKiByZW5kZXJUYXJnZXQpCisgICAgOiBXZWJLaXRBdWRpb0NvbnRleHQoZG9jdW1lbnQs
IHJlbmRlclRhcmdldCkKK3sKK30KKworRXhjZXB0aW9uT3I8UmVmPFdlYktpdE9mZmxpbmVBdWRp
b0NvbnRleHQ+PiBXZWJLaXRPZmZsaW5lQXVkaW9Db250ZXh0OjpjcmVhdGUoU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCYgY29udGV4dCwgdW5zaWduZWQgbnVtYmVyT2ZDaGFubmVscywgc2l6ZV90IG51
bWJlck9mRnJhbWVzLCBmbG9hdCBzYW1wbGVSYXRlKQoreworICAgIC8vIEZJWE1FOiBBZGQgc3Vw
cG9ydCBmb3Igd29ya2Vycy4KKyAgICBpZiAoIWlzPERvY3VtZW50Pihjb250ZXh0KSkKKyAgICAg
ICAgcmV0dXJuIEV4Y2VwdGlvbiB7IE5vdFN1cHBvcnRlZEVycm9yIH07CisgICAgaWYgKCFudW1i
ZXJPZkNoYW5uZWxzIHx8IG51bWJlck9mQ2hhbm5lbHMgPiAxMCB8fCAhbnVtYmVyT2ZGcmFtZXMg
fHwgIWlzU2FtcGxlUmF0ZVJhbmdlR29vZChzYW1wbGVSYXRlKSkKKyAgICAgICAgcmV0dXJuIEV4
Y2VwdGlvbiB7IFN5bnRheEVycm9yIH07CisgICAgYXV0byByZW5kZXJUYXJnZXQgPSBBdWRpb0J1
ZmZlcjo6Y3JlYXRlKG51bWJlck9mQ2hhbm5lbHMsIG51bWJlck9mRnJhbWVzLCBzYW1wbGVSYXRl
KTsKKyAgICBpZiAoIXJlbmRlclRhcmdldCkKKyAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IFN5
bnRheEVycm9yIH07CisKKyAgICBhdXRvIGF1ZGlvQ29udGV4dCA9IGFkb3B0UmVmKCpuZXcgV2Vi
S2l0T2ZmbGluZUF1ZGlvQ29udGV4dChkb3duY2FzdDxEb2N1bWVudD4oY29udGV4dCksIHJlbmRl
clRhcmdldC5nZXQoKSkpOworICAgIGF1ZGlvQ29udGV4dC0+c3VzcGVuZElmTmVlZGVkKCk7Cisg
ICAgcmV0dXJuIGF1ZGlvQ29udGV4dDsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisj
ZW5kaWYgLy8gRU5BQkxFKFdFQl9BVURJTykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViYXVkaW8vV2ViS2l0T2ZmbGluZUF1ZGlvQ29udGV4dC5oIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJhdWRpby9XZWJLaXRPZmZsaW5lQXVkaW9Db250ZXh0LmgKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uYzI1NGVkNDFmZTAzZDYxZTdlY2I1NDg3ZTJjNzljNDc0NjE4MmY5NAotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vV2ViS2l0T2ZmbGluZUF1ZGlv
Q29udGV4dC5oCkBAIC0wLDAgKzEsNDAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIsIEdv
b2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAq
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTgorICogQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
KyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTCisgKiBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKwor
I2luY2x1ZGUgIldlYktpdEF1ZGlvQ29udGV4dC5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisK
K2NsYXNzIFdlYktpdE9mZmxpbmVBdWRpb0NvbnRleHQgZmluYWwgOiBwdWJsaWMgV2ViS2l0QXVk
aW9Db250ZXh0IHsKKyAgICBXVEZfTUFLRV9JU09fQUxMT0NBVEVEKFdlYktpdE9mZmxpbmVBdWRp
b0NvbnRleHQpOworcHVibGljOgorICAgIHN0YXRpYyBFeGNlcHRpb25PcjxSZWY8V2ViS2l0T2Zm
bGluZUF1ZGlvQ29udGV4dD4+IGNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiwgdW5zaWdu
ZWQgbnVtYmVyT2ZDaGFubmVscywgc2l6ZV90IG51bWJlck9mRnJhbWVzLCBmbG9hdCBzYW1wbGVS
YXRlKTsKKworcHJpdmF0ZToKKyAgICBXZWJLaXRPZmZsaW5lQXVkaW9Db250ZXh0KERvY3VtZW50
JiwgQXVkaW9CdWZmZXIqIHJlbmRlclRhcmdldCk7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1dlYktpdE9m
ZmxpbmVBdWRpb0NvbnRleHQuaWRsIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9X
ZWJLaXRPZmZsaW5lQXVkaW9Db250ZXh0LmlkbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41NmE2NDhiYzJhNWYyMWMz
MDVkZDQ4MGM0MWEwMDUyMzEyNGRjYmYxCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJhdWRpby9XZWJLaXRPZmZsaW5lQXVkaW9Db250ZXh0LmlkbApAQCAtMCww
ICsxLDMxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyLCBHb29nbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQgQU5ZCisg
KiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04KKyAqIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUworICogU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworWworICAgIENvbmRpdGlvbmFsPVdFQl9BVURJTywKKyAg
ICBJbnRlcmZhY2VOYW1lPXdlYmtpdE9mZmxpbmVBdWRpb0NvbnRleHQsCisgICAgSlNHZW5lcmF0
ZVRvSlNPYmplY3QsCitdIGludGVyZmFjZSBXZWJLaXRPZmZsaW5lQXVkaW9Db250ZXh0IDogV2Vi
S2l0QXVkaW9Db250ZXh0IHsKKyAgICBbQ2FsbFdpdGg9U2NyaXB0RXhlY3V0aW9uQ29udGV4dCwg
TWF5VGhyb3dFeGNlcHRpb25dIGNvbnN0cnVjdG9yKHVuc2lnbmVkIGxvbmcgbnVtYmVyT2ZDaGFu
bmVscywgdW5zaWduZWQgbG9uZyBudW1iZXJPZkZyYW1lcywgdW5yZXN0cmljdGVkIGZsb2F0IHNh
bXBsZVJhdGUpOworfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0IGIv
U291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKaW5kZXggMmM1NmVkNTEzOWRiMDc5YTg2Yzc3NTFh
OTU2MzhjYjI0OGJmZTZjNy4uMTQ5NTljMzgxNTAzNTZhODdkZWVlMzJlZmIzN2IyNjI1NjVmMjZl
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKKysrIGIvU291cmNlL1dl
YkNvcmUvU291cmNlcy50eHQKQEAgLTI2OSw2ICsyNjksOSBAQCBNb2R1bGVzL3dlYmF1ZGlvL1Nj
cmlwdFByb2Nlc3Nvck5vZGUuY3BwCiBNb2R1bGVzL3dlYmF1ZGlvL1dhdmVTaGFwZXJEU1BLZXJu
ZWwuY3BwCiBNb2R1bGVzL3dlYmF1ZGlvL1dhdmVTaGFwZXJOb2RlLmNwcAogTW9kdWxlcy93ZWJh
dWRpby9XYXZlU2hhcGVyUHJvY2Vzc29yLmNwcAorTW9kdWxlcy93ZWJhdWRpby9XZWJLaXRBdWRp
b0NvbnRleHQuY3BwCitNb2R1bGVzL3dlYmF1ZGlvL1dlYktpdEF1ZGlvUGFubmVyTm9kZS5jcHAK
K01vZHVsZXMvd2ViYXVkaW8vV2ViS2l0T2ZmbGluZUF1ZGlvQ29udGV4dC5jcHAKIAogTW9kdWxl
cy93ZWJhdXRobi9BdXRoZW50aWNhdG9yQ29vcmRpbmF0b3IuY3BwCiBNb2R1bGVzL3dlYmF1dGhu
L0F1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZS5jcHAKQEAgLTI3NDQsNiArMjc0Nyw3IEBA
IEpTQXVkaW9CdWZmZXJDYWxsYmFjay5jcHAKIEpTQXVkaW9CdWZmZXJTb3VyY2VOb2RlLmNwcAog
SlNBdWRpb0NvbmZpZ3VyYXRpb24uY3BwCiBKU0F1ZGlvQ29udGV4dC5jcHAKK0pTQXVkaW9Db250
ZXh0U3RhdGUuY3BwCiBKU0F1ZGlvRGVzdGluYXRpb25Ob2RlLmNwcAogSlNBdWRpb0xpc3RlbmVy
LmNwcAogSlNBdWRpb05vZGUuY3BwCkBAIC0yOTE0LDYgKzI5MTgsNyBAQCBKU0RldmljZU1vdGlv
bkV2ZW50LmNwcAogSlNEZXZpY2VPcmllbnRhdGlvbkV2ZW50LmNwcAogSlNEZXZpY2VPcmllbnRh
dGlvbk9yTW90aW9uUGVybWlzc2lvblN0YXRlLmNwcAogSlNEZXZpY2VPcmllbnRhdGlvbk9yTW90
aW9uRXZlbnQuY3BwCitKU0Rpc3RhbmNlTW9kZWxUeXBlLmNwcAogSlNEb2N1bWVudC5jcHAKIEpT
RG9jdW1lbnRBbmRFbGVtZW50RXZlbnRIYW5kbGVycy5jcHAKIEpTRG9jdW1lbnRGcmFnbWVudC5j
cHAKQEAgLTMyMTEsNiArMzIxNiw3IEBAIEpTT3ZlcmZsb3dFdmVudC5jcHAKIEpTUGFnZVRyYW5z
aXRpb25FdmVudC5jcHAKIEpTUGFpbnRSZW5kZXJpbmdDb250ZXh0MkQuY3BwCiBKU1Bhbm5lck5v
ZGUuY3BwCitKU1Bhbm5pbmdNb2RlbFR5cGUuY3BwCiBKU1BhcmVudE5vZGUuY3BwCiBKU1BhdGgy
RC5jcHAKIEpTUGF5ZXJFcnJvckZpZWxkcy5jcHAKQEAgLTM1NjcsNyArMzU3MywxMCBAQCBKU1dl
YkdQVVN3YXBDaGFpbi5jcHAKIEpTV2ViR1BVVGV4dHVyZS5jcHAKIEpTV2ViR1BVVGV4dHVyZVZp
ZXcuY3BwCiBKU1dlYktpdEFuaW1hdGlvbkV2ZW50LmNwcAorSlNXZWJLaXRBdWRpb0NvbnRleHQu
Y3BwCitKU1dlYktpdEF1ZGlvUGFubmVyTm9kZS5jcHAKIEpTV2ViS2l0Q1NTTWF0cml4LmNwcAor
SlNXZWJLaXRPZmZsaW5lQXVkaW9Db250ZXh0LmNwcAogSlNXZWJLaXRQbGF5YmFja1RhcmdldEF2
YWlsYWJpbGl0eUV2ZW50LmNwcAogSlNXZWJLaXRQb2ludC5jcHAKIEpTV2ViS2l0VHJhbnNpdGlv
bkV2ZW50LmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCmluZGV4IGM3YWFjODU5Njc2NzgxOGI2OWQzNThlM2FkODA0ODRlMTI2NGI4NjAu
LjQ2Zjk2ZDE1MGNiZjFiN2ZiZDg2NTkyNGI2YjE0ZDJmNmM4NzJlZDQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTI0MDcsMTIg
KzI0MDcsMTYgQEAKIAkJODMwMDMwRjgxQjdEM0I3ODAwRUQzQUFDIC8qIENhY2hlZEhUTUxDb2xs
ZWN0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4
MzAwMzBGNzFCN0QzOTg4MDBFRDNBQUMgLyogQ2FjaGVkSFRNTENvbGxlY3Rpb24uaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk4MzAzMzUwMjFGNTQ5
MDU3MDA0REY3MDcgLyogRmlsZVN5c3RlbURpcmVjdG9yeVJlYWRlci5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODMwMzM0RkMxRjU0OTA1MjAwNERGNzA3
IC8qIEZpbGVTeXN0ZW1EaXJlY3RvcnlSZWFkZXIuaCAqLzsgfTsKIAkJODMwMzM1MDMxRjU0OTA1
QTAwNERGNzA3IC8qIEZpbGVTeXN0ZW1FbnRyaWVzQ2FsbGJhY2suaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgzMDMzNEZFMUY1NDkwNTIwMDRERjcwNyAv
KiBGaWxlU3lzdGVtRW50cmllc0NhbGxiYWNrLmggKi87IH07CisJCTgzMDQwMjgyMjQ5QTdBNUYw
MEE5MEQ4RCAvKiBQYW5uaW5nTW9kZWxUeXBlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA4MzA0MDI4MDI0OUE3QTVDMDBBOTBEOEQgLyogUGFubmluZ01v
ZGVsVHlwZS5oICovOyB9OworCQk4MzA0MDI4MzI0OUE3QTYyMDBBOTBEOEQgLyogRGlzdGFuY2VN
b2RlbFR5cGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDgzMDQwMjdEMjQ5QTdBNUIwMEE5MEQ4RCAvKiBEaXN0YW5jZU1vZGVsVHlwZS5oICovOyB9Owog
CQk4MzA1MTk5NjFCQjBGMTEwMDBGMzc3MkUgLyogSFRNTFRpbWVFbGVtZW50LmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4MzA1MTk5MzFCQjBGMEU3MDBG
Mzc3MkUgLyogSFRNTFRpbWVFbGVtZW50LmggKi87IH07CiAJCTgzMDc4NEIyMUM1MkVFMkMwMDEw
NEQxRCAvKiBYTUxEb2N1bWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gODMwNzg0QjExQzUyRUUxOTAwMTA0RDFEIC8qIFhNTERvY3VtZW50LmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJODMwQTM2QkQx
REFDNUZBRDAwNkQ3RDA5IC8qIEpTTW91c2VFdmVudEluaXQuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgzMEEzNkJCMURBQzVGQTcwMDZEN0QwOSAvKiBK
U01vdXNlRXZlbnRJbml0LmggKi87IH07CiAJCTgzMTAyQjI3MUY5RUFERDkwMEU0MDRCOSAvKiBK
U0V4dGVuZGFibGVNZXNzYWdlRXZlbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDgzMTAyQjIzMUY5RUFEQzIwMEU0MDRCOSAvKiBKU0V4dGVuZGFibGVN
ZXNzYWdlRXZlbnQuaCAqLzsgfTsKIAkJODMxMUMwMDMxRkFBMkU5NTAwRTNDOEU1IC8qIFNXU2Vy
dmVySm9iUXVldWUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDgzMTFDMDAyMUZBQTJFODkwMEUzQzhFNSAvKiBTV1NlcnZlckpvYlF1ZXVlLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJODMxMjBDNzExQzU2
RjNGQjAwMUNCMTEyIC8qIEhUTUxEYXRhRWxlbWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODM0Qjg2QTcxQzU2RTgzQTAwRjNGMEUzIC8qIEhUTUxE
YXRhRWxlbWVudC5oICovOyB9OworCQk4MzFCNjE3NjI0OTlBNUJCMDBDMDdDNzkgLyogV2ViS2l0
QXVkaW9QYW5uZXJOb2RlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA4MzFCNjE3NDI0OTlBNTlDMDBDMDdDNzkgLyogV2ViS2l0QXVkaW9QYW5uZXJOb2Rl
LmggKi87IH07CisJCTgzMUI2MTc3MjQ5OUE1QkYwMEMwN0M3OSAvKiBXZWJLaXRPZmZsaW5lQXVk
aW9Db250ZXh0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA4MzFCNjE3NTI0OTlBNTlEMDBDMDdDNzkgLyogV2ViS2l0T2ZmbGluZUF1ZGlvQ29udGV4dC5o
ICovOyB9OwogCQk4MzIxNTA3RTFGMjdFQTFCMDA5NUIxMzYgLyogTmF2aWdhdG9yQmVhY29uLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4MzIxNTA3QjFG
MjdFQTE1MDA5NUIxMzYgLyogTmF2aWdhdG9yQmVhY29uLmggKi87IH07CiAJCTgzMkI4NDM0MTlE
OEU1NTEwMEIyNjA1NSAvKiBTVkdBbmltYXRlRWxlbWVudEJhc2UuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgzMkI4NDMzMTlEOEU1NTEwMEIyNjA1NSAv
KiBTVkdBbmltYXRlRWxlbWVudEJhc2UuaCAqLzsgfTsKIAkJODMzQjlFMzIxRjUwOEQ4NTAwRTBF
NDI4IC8qIEpTRmlsZVN5c3RlbURpcmVjdG9yeUVudHJ5LmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4MzNCOUUyRjFGNTA4RDgwMDBFMEU0MjggLyogSlNG
aWxlU3lzdGVtRGlyZWN0b3J5RW50cnkuaCAqLzsgfTsKQEAgLTI0NjgsMTAgKzI0NzIsMTIgQEAK
IAkJODM5QTJGMkUxRTIwNEE3MTAwMzkwNTdFIC8qIFdlYkdMU3RhdGVUcmFja2VyLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4MzlBMkYyQzFFMjA0QTZE
MDAzOTA1N0UgLyogV2ViR0xTdGF0ZVRyYWNrZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk4MzlBQUZFRDFBMEMwQzhEMDA2MDVGOTkgLyogSFRN
TFdCUkVsZW1lbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDgzOUFBRkVCMUEwQzBDOEQwMDYwNUY5OSAvKiBIVE1MV0JSRWxlbWVudC5oICovOyB9Owog
CQk4M0E4QUM0MDFGQUJCRkU1MDAyMDY0QUMgLyogU2VydmljZVdvcmtlcklkZW50aWZpZXIuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgzQThBQzNFMUZB
QkJGRDEwMDIwNjRBQyAvKiBTZXJ2aWNlV29ya2VySWRlbnRpZmllci5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTgzQjFBNzAyMjQ5OTg1RjAwMEZF
NTk2MSAvKiBXZWJLaXRBdWRpb0NvbnRleHQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDgzQjFBNkZGMjQ5OTg1RDAwMEZFNTk2MSAvKiBXZWJLaXRBdWRp
b0NvbnRleHQuaCAqLzsgfTsKIAkJODNCMkQxNzUxQjhCQ0Q2QTAwQTAyRTQ3IC8qIE5hdGl2ZU5v
ZGVGaWx0ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDgzRTk1OUUxMUI4QkMyMkIwMDREOTM4NSAvKiBOYXRpdmVOb2RlRmlsdGVyLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJODNCNzRFRjYxRjNFMEJG
MjAwOTk2QkM3IC8qIEtlZXBhbGl2ZVJlcXVlc3RUcmFja2VyLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4M0I3NEVGMzFGM0UwQkQ3MDA5OTZCQzcgLyog
S2VlcGFsaXZlUmVxdWVzdFRyYWNrZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwogCQk4M0I5Njg3QjE5RjhBQjgzMDA0RUY3QUYgLyogU3R5bGVCdWls
ZGVyQ29udmVydGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA4M0I5Njg3OTE5RjhBQjgzMDA0RUY3QUYgLyogU3R5bGVCdWlsZGVyQ29udmVydGVyLmgg
Ki87IH07CiAJCTgzQkI1Qzg4MUQ1RDZGNDUwMDVBNzFGNCAvKiBBbGxEZXNjZW5kYW50c0NvbGxl
Y3Rpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgz
QkI1Qzg3MUQ1RDZGM0EwMDVBNzFGNCAvKiBBbGxEZXNjZW5kYW50c0NvbGxlY3Rpb24uaCAqLzsg
fTsKKwkJODNCRDNDRUUyNDk5OEUwMTAwQkEzRTY3IC8qIEF1ZGlvQ29udGV4dFN0YXRlLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4M0JEM0NFRDI0OTk4
REY2MDBCQTNFNjcgLyogQXVkaW9Db250ZXh0U3RhdGUuaCAqLzsgfTsKIAkJODNDMDVBNUIxQTY4
NjIxMjAwN0U1REVBIC8qIFN0eWxlUHJvcGVydHlTaG9ydGhhbmRGdW5jdGlvbnMuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgzQzA1QTU5MUE2ODYyMTIw
MDdFNURFQSAvKiBTdHlsZVByb3BlcnR5U2hvcnRoYW5kRnVuY3Rpb25zLmggKi87IH07CiAJCTgz
QzFGNTk0MUVERjY5RDMwMDQxMEQyNyAvKiBRdWFsaWZpZWROYW1lQ2FjaGUuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgzQzFGNTkyMUVERjY5RDMwMDQx
MEQyNyAvKiBRdWFsaWZpZWROYW1lQ2FjaGUuaCAqLzsgfTsKIAkJODNDNDVCOEUxREMyQjY4QTAw
ODg3MUJBIC8qIFZhbGlkYXRpb25CdWJibGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDgzQzQ1QjhEMURDMkI2N0MwMDg4NzFCQSAvKiBWYWxpZGF0aW9u
QnViYmxlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
QEAgLTEwMjk3LDExICsxMDMwMywxNiBAQAogCQk4MzAwMzBGMzFCN0QzM0E2MDBFRDNBQUMgLyog
R2VuZXJpY0NhY2hlZEhUTUxDb2xsZWN0aW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IEdlbmVyaWNDYWNoZWRIVE1MQ29sbGVjdGlvbi5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTgzMDAzMEY0MUI3RDMzQTYwMEVEM0FBQyAvKiBHZW5lcmljQ2Fj
aGVkSFRNTENvbGxlY3Rpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gR2Vu
ZXJpY0NhY2hlZEhUTUxDb2xsZWN0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTgzMDAzMEY3MUI3RDM5ODgwMEVEM0FBQyAvKiBDYWNoZWRIVE1MQ29sbGVjdGlvbi5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDYWNoZWRIVE1MQ29sbGVjdGlvbi5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQk4MzAwM0UyQjI0OTk5N0E4MDA2MEFGOTQgLyogV2Vi
S2l0QXVkaW9Db250ZXh0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IFdlYktpdEF1ZGlvQ29udGV4dC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTgz
MDMzNEZCMUY1NDkwNTIwMDRERjcwNyAvKiBGaWxlU3lzdGVtRGlyZWN0b3J5UmVhZGVyLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEZpbGVTeXN0ZW1EaXJlY3RvcnlS
ZWFkZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4MzAzMzRGQzFGNTQ5MDUy
MDA0REY3MDcgLyogRmlsZVN5c3RlbURpcmVjdG9yeVJlYWRlci5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBGaWxlU3lzdGVtRGlyZWN0b3J5UmVhZGVyLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTgzMDMzNEZEMUY1NDkwNTIwMDRERjcwNyAvKiBGaWxlU3lzdGVt
RW50cmllc0NhbGxiYWNrLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBGaWxlU3lzdGVtRW50
cmllc0NhbGxiYWNrLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODMwMzM0RkUx
RjU0OTA1MjAwNERGNzA3IC8qIEZpbGVTeXN0ZW1FbnRyaWVzQ2FsbGJhY2suaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRmlsZVN5c3RlbUVudHJpZXNDYWxsYmFjay5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4MzAzMzRGRjFGNTQ5MDUyMDA0REY3MDcgLyogRmls
ZVN5c3RlbURpcmVjdG9yeVJlYWRlci5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gRmlsZVN5
c3RlbURpcmVjdG9yeVJlYWRlci5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTgz
MDQwMjdEMjQ5QTdBNUIwMEE5MEQ4RCAvKiBEaXN0YW5jZU1vZGVsVHlwZS5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBEaXN0YW5jZU1vZGVsVHlwZS5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQk4MzA0MDI3RjI0OUE3QTVDMDBBOTBEOEQgLyogRGlzdGFuY2VNb2Rl
bFR5cGUuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IERpc3RhbmNlTW9kZWxUeXBlLmlkbDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJODMwNDAyODAyNDlBN0E1QzAwQTkwRDhEIC8q
IFBhbm5pbmdNb2RlbFR5cGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUGFu
bmluZ01vZGVsVHlwZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk4MzA0MDI4MTI0
OUE3QTVEMDBBOTBEOEQgLyogUGFubmluZ01vZGVsVHlwZS5pZGwgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBw
YXRoID0gUGFubmluZ01vZGVsVHlwZS5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTgzMDUxOTkyMUJCMEYwRTcwMEYzNzcyRSAvKiBIVE1MVGltZUVsZW1lbnQuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSFRNTFRpbWVFbGVtZW50LmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODMwNTE5OTMxQkIwRjBFNzAwRjM3NzJFIC8qIEhUTUxU
aW1lRWxlbWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBIVE1MVGltZUVs
ZW1lbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODMwNTE5OTQxQkIwRjBFNzAw
RjM3NzJFIC8qIEhUTUxUaW1lRWxlbWVudC5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gSFRN
TFRpbWVFbGVtZW50LmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTEwMzE0LDYg
KzEwMzI1LDEyIEBACiAJCTgzMTAyQjI1MUY5RUFEQzIwMEU0MDRCOSAvKiBKU0V4dGVuZGFibGVN
ZXNzYWdlRXZlbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNF
eHRlbmRhYmxlTWVzc2FnZUV2ZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
ODMxMUMwMDAxRkFBMkU4OTAwRTNDOEU1IC8qIFNXU2VydmVySm9iUXVldWUuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU1dTZXJ2ZXJKb2JRdWV1ZS5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTgzMTFDMDAyMUZBQTJFODkwMEUzQzhFNSAvKiBTV1Nl
cnZlckpvYlF1ZXVlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNXU2VydmVy
Sm9iUXVldWUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJODMxQjYxNkYyNDk5QTU5
ODAwQzA3Qzc5IC8qIFdlYktpdEF1ZGlvUGFubmVyTm9kZS5pZGwgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBw
YXRoID0gV2ViS2l0QXVkaW9QYW5uZXJOb2RlLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJODMxQjYxNzEyNDk5QTU5OTAwQzA3Qzc5IC8qIFdlYktpdEF1ZGlvUGFubmVyTm9kZS5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJLaXRBdWRpb1Bhbm5l
ck5vZGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk4MzFCNjE3MjI0OTlBNTlB
MDBDMDdDNzkgLyogV2ViS2l0T2ZmbGluZUF1ZGlvQ29udGV4dC5pZGwgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0
OyBwYXRoID0gV2ViS2l0T2ZmbGluZUF1ZGlvQ29udGV4dC5pZGw7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTgzMUI2MTczMjQ5OUE1OUIwMEMwN0M3OSAvKiBXZWJLaXRPZmZsaW5lQXVk
aW9Db250ZXh0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYktp
dE9mZmxpbmVBdWRpb0NvbnRleHQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk4
MzFCNjE3NDI0OTlBNTlDMDBDMDdDNzkgLyogV2ViS2l0QXVkaW9QYW5uZXJOb2RlLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYktpdEF1ZGlvUGFubmVyTm9kZS5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQk4MzFCNjE3NTI0OTlBNTlEMDBDMDdDNzkgLyogV2Vi
S2l0T2ZmbGluZUF1ZGlvQ29udGV4dC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBXZWJLaXRPZmZsaW5lQXVkaW9Db250ZXh0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTgzMUM0NkMzMUY5RUU1RTAwMEVCRDQ1MCAvKiBKU0V4dGVuZGFibGVNZXNzYWdlRXZlbnRD
dXN0b20uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNFeHRlbmRh
YmxlTWVzc2FnZUV2ZW50Q3VzdG9tLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
ODMxRDFGMjkxQzU2RUNBMDAwRjVGNkMwIC8qIEhUTUxEYXRhRWxlbWVudC5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBIVE1MRGF0YUVsZW1lbnQuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk4MzIxNTA3QTFGMjdFQTE1MDA5NUIxMzYgLyogTmF2aWdh
dG9yQmVhY29uLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE5hdmlnYXRvckJlYWNvbi5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xMDQ0MSw2ICsxMDQ1OCw4IEBACiAJCTgzOUFB
RkVCMUEwQzBDOEQwMDYwNUY5OSAvKiBIVE1MV0JSRWxlbWVudC5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBIVE1MV0JSRWxlbWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk4M0E0QTlGODFDRTdGRDdFMDA3MDlCMDAgLyogSlNYTUxEb2N1bWVudEN1c3RvbS5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU1hNTERvY3VtZW50Q3Vz
dG9tLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODNBOEFDM0UxRkFCQkZEMTAw
MjA2NEFDIC8qIFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTgzQjFBNkZGMjQ5OTg1RDAwMEZFNTk2MSAvKiBXZWJLaXRBdWRpb0NvbnRl
eHQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViS2l0QXVkaW9Db250ZXh0
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTgzQjFBNzAxMjQ5OTg1RDAwMEZFNTk2
MSAvKiBXZWJLaXRBdWRpb0NvbnRleHQuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFdlYktp
dEF1ZGlvQ29udGV4dC5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTgzQjI1MDA5
MUZBMTE4MUMwMEJDMDJEOSAvKiBKU1NlcnZpY2VXb3JrZXJDbGllbnRUeXBlLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTU2VydmljZVdvcmtlckNsaWVudFR5cGUuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODNCMjUwMEIxRkExMTgxRDAwQkMwMkQ5IC8qIEpT
U2VydmljZVdvcmtlckNsaWVudFR5cGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gSlNTZXJ2aWNlV29ya2VyQ2xpZW50VHlwZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTgzQjVEQTQ1MUZBOTA3OTMwMEI1OURGNCAvKiBKU05hdmlnYXRvckN1c3Rv
bS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU05hdmlnYXRvckN1
c3RvbS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xMDQ0OCw2ICsxMDQ2Nyw4
IEBACiAJCTgzQjc0RUYzMUYzRTBCRDcwMDk5NkJDNyAvKiBLZWVwYWxpdmVSZXF1ZXN0VHJhY2tl
ci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBLZWVwYWxpdmVSZXF1ZXN0VHJh
Y2tlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4M0I5Njg3OTE5RjhBQjgzMDA0
RUY3QUYgLyogU3R5bGVCdWlsZGVyQ29udmVydGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFN0eWxlQnVpbGRlckNvbnZlcnRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk4M0JCNUM4NzFENUQ2RjNBMDA1QTcxRjQgLyogQWxsRGVzY2VuZGFudHNDb2xsZWN0
aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFsbERlc2NlbmRhbnRzQ29s
bGVjdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk4M0JEM0NFQjI0OTk4Q0M1
MDBCQTNFNjcgLyogQXVkaW9Db250ZXh0U3RhdGUuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9
IEF1ZGlvQ29udGV4dFN0YXRlLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJODNC
RDNDRUQyNDk5OERGNjAwQkEzRTY3IC8qIEF1ZGlvQ29udGV4dFN0YXRlLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEF1ZGlvQ29udGV4dFN0YXRlLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTgzQzA1QTU4MUE2ODYyMTIwMDdFNURFQSAvKiBTdHlsZVByb3BlcnR5
U2hvcnRoYW5kRnVuY3Rpb25zLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFt
ZSA9IFN0eWxlUHJvcGVydHlTaG9ydGhhbmRGdW5jdGlvbnMuY3BwOyBwYXRoID0gRGVyaXZlZFNv
dXJjZXMvV2ViQ29yZS9TdHlsZVByb3BlcnR5U2hvcnRoYW5kRnVuY3Rpb25zLmNwcDsgc291cmNl
VHJlZSA9IEJVSUxUX1BST0RVQ1RTX0RJUjsgfTsKIAkJODNDMDVBNTkxQTY4NjIxMjAwN0U1REVB
IC8qIFN0eWxlUHJvcGVydHlTaG9ydGhhbmRGdW5jdGlvbnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBuYW1lID0gU3R5bGVQcm9wZXJ0eVNob3J0aGFuZEZ1bmN0aW9ucy5oOyBwYXRoID0g
RGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9TdHlsZVByb3BlcnR5U2hvcnRoYW5kRnVuY3Rpb25zLmg7
IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19ESVI7IH07CiAJCTgzQzFGNTkxMUVERjY5RDMw
MDQxMEQyNyAvKiBRdWFsaWZpZWROYW1lQ2FjaGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gUXVhbGlmaWVkTmFtZUNhY2hlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKQEAgLTI5MjM5LDYgKzI5MjYwLDggQEAKIAkJCQlGRDMxNUZCQTEyQjAyNjc1MDBD
MUEzNTkgLyogQXVkaW9Db250ZXh0LmNwcCAqLywKIAkJCQlGRDMxNUZCQjEyQjAyNjc1MDBDMUEz
NTkgLyogQXVkaW9Db250ZXh0LmggKi8sCiAJCQkJRkQzMTVGQkMxMkIwMjY3NTAwQzFBMzU5IC8q
IEF1ZGlvQ29udGV4dC5pZGwgKi8sCisJCQkJODNCRDNDRUQyNDk5OERGNjAwQkEzRTY3IC8qIEF1
ZGlvQ29udGV4dFN0YXRlLmggKi8sCisJCQkJODNCRDNDRUIyNDk5OENDNTAwQkEzRTY3IC8qIEF1
ZGlvQ29udGV4dFN0YXRlLmlkbCAqLywKIAkJCQlGRDMxNUZCRDEyQjAyNjc1MDBDMUEzNTkgLyog
QXVkaW9EZXN0aW5hdGlvbk5vZGUuY3BwICovLAogCQkJCUZEMzE1RkJFMTJCMDI2NzUwMEMxQTM1
OSAvKiBBdWRpb0Rlc3RpbmF0aW9uTm9kZS5oICovLAogCQkJCUZEMzE1RkJGMTJCMDI2NzUwMEMx
QTM1OSAvKiBBdWRpb0Rlc3RpbmF0aW9uTm9kZS5pZGwgKi8sCkBAIC0yOTI4OSw2ICsyOTMxMiw4
IEBACiAJCQkJRkQzMTVGRTUxMkIwMjY3NjAwQzFBMzU5IC8qIERlbGF5Tm9kZS5pZGwgKi8sCiAJ
CQkJRkQzMTVGRTYxMkIwMjY3NjAwQzFBMzU5IC8qIERlbGF5UHJvY2Vzc29yLmNwcCAqLywKIAkJ
CQlGRDMxNUZFNzEyQjAyNjc2MDBDMUEzNTkgLyogRGVsYXlQcm9jZXNzb3IuaCAqLywKKwkJCQk4
MzA0MDI3RDI0OUE3QTVCMDBBOTBEOEQgLyogRGlzdGFuY2VNb2RlbFR5cGUuaCAqLywKKwkJCQk4
MzA0MDI3RjI0OUE3QTVDMDBBOTBEOEQgLyogRGlzdGFuY2VNb2RlbFR5cGUuaWRsICovLAogCQkJ
CUZENkVEMkMxMTM2QjhFNDIwMDNDRjA3MiAvKiBEeW5hbWljc0NvbXByZXNzb3JOb2RlLmNwcCAq
LywKIAkJCQlGRDZFRDJDMjEzNkI4RTQyMDAzQ0YwNzIgLyogRHluYW1pY3NDb21wcmVzc29yTm9k
ZS5oICovLAogCQkJCUZENkVEMkM5MTM2QjhFOUQwMDNDRjA3MiAvKiBEeW5hbWljc0NvbXByZXNz
b3JOb2RlLmlkbCAqLywKQEAgLTI5MzIxLDYgKzI5MzQ2LDggQEAKIAkJCQlGRDMxNUZDRjEyQjAy
Njc1MDBDMUEzNTkgLyogUGFubmVyTm9kZS5jcHAgKi8sCiAJCQkJRkQzMTVGRDAxMkIwMjY3NTAw
QzFBMzU5IC8qIFBhbm5lck5vZGUuaCAqLywKIAkJCQlGRDMxNUZEMTEyQjAyNjc1MDBDMUEzNTkg
LyogUGFubmVyTm9kZS5pZGwgKi8sCisJCQkJODMwNDAyODAyNDlBN0E1QzAwQTkwRDhEIC8qIFBh
bm5pbmdNb2RlbFR5cGUuaCAqLywKKwkJCQk4MzA0MDI4MTI0OUE3QTVEMDBBOTBEOEQgLyogUGFu
bmluZ01vZGVsVHlwZS5pZGwgKi8sCiAJCQkJRkQ1ODFGQjExNTIwRjkzQjAwM0E3QTc1IC8qIFBl
cmlvZGljV2F2ZS5jcHAgKi8sCiAJCQkJRkQ1ODFGQjIxNTIwRjkzQjAwM0E3QTc1IC8qIFBlcmlv
ZGljV2F2ZS5oICovLAogCQkJCUZENTgxRkIzMTUyMEY5M0IwMDNBN0E3NSAvKiBQZXJpb2RpY1dh
dmUuaWRsICovLApAQCAtMjkzMzYsNiArMjkzNjMsMTUgQEAKIAkJCQlGRDdGMjk4RTEzRDRDMENC
MDBBRDk1MzUgLyogV2F2ZVNoYXBlck5vZGUuaWRsICovLAogCQkJCUZEN0YyOThGMTNENEMwQ0Iw
MEFEOTUzNSAvKiBXYXZlU2hhcGVyUHJvY2Vzc29yLmNwcCAqLywKIAkJCQlGRDdGMjk5MDEzRDRD
MENCMDBBRDk1MzUgLyogV2F2ZVNoYXBlclByb2Nlc3Nvci5oICovLAorCQkJCTgzMDAzRTJCMjQ5
OTk3QTgwMDYwQUY5NCAvKiBXZWJLaXRBdWRpb0NvbnRleHQuY3BwICovLAorCQkJCTgzQjFBNkZG
MjQ5OTg1RDAwMEZFNTk2MSAvKiBXZWJLaXRBdWRpb0NvbnRleHQuaCAqLywKKwkJCQk4M0IxQTcw
MTI0OTk4NUQwMDBGRTU5NjEgLyogV2ViS2l0QXVkaW9Db250ZXh0LmlkbCAqLywKKwkJCQk4MzFC
NjE3MTI0OTlBNTk5MDBDMDdDNzkgLyogV2ViS2l0QXVkaW9QYW5uZXJOb2RlLmNwcCAqLywKKwkJ
CQk4MzFCNjE3NDI0OTlBNTlDMDBDMDdDNzkgLyogV2ViS2l0QXVkaW9QYW5uZXJOb2RlLmggKi8s
CisJCQkJODMxQjYxNkYyNDk5QTU5ODAwQzA3Qzc5IC8qIFdlYktpdEF1ZGlvUGFubmVyTm9kZS5p
ZGwgKi8sCisJCQkJODMxQjYxNzMyNDk5QTU5QjAwQzA3Qzc5IC8qIFdlYktpdE9mZmxpbmVBdWRp
b0NvbnRleHQuY3BwICovLAorCQkJCTgzMUI2MTc1MjQ5OUE1OUQwMEMwN0M3OSAvKiBXZWJLaXRP
ZmZsaW5lQXVkaW9Db250ZXh0LmggKi8sCisJCQkJODMxQjYxNzIyNDk5QTU5QTAwQzA3Qzc5IC8q
IFdlYktpdE9mZmxpbmVBdWRpb0NvbnRleHQuaWRsICovLAogCQkJKTsKIAkJCXBhdGggPSB3ZWJh
dWRpbzsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CkBAIC0yOTczMiw2ICsyOTc2OCw3IEBA
CiAJCQkJRkQzMTYwN0MxMkIwMjZGNzAwQzFBMzU5IC8qIEF1ZGlvQnVzLmggaW4gSGVhZGVycyAq
LywKIAkJCQlGRDMxNjA3RTEyQjAyNkY3MDBDMUEzNTkgLyogQXVkaW9DaGFubmVsLmggaW4gSGVh
ZGVycyAqLywKIAkJCQlGRDMxNjAwNTEyQjAyNjc2MDBDMUEzNTkgLyogQXVkaW9Db250ZXh0Lmgg
aW4gSGVhZGVycyAqLywKKwkJCQk4M0JEM0NFRTI0OTk4RTAxMDBCQTNFNjcgLyogQXVkaW9Db250
ZXh0U3RhdGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUZEMzE2MDdGMTJCMDI2RjcwMEMxQTM1OSAv
KiBBdWRpb0Rlc3RpbmF0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQk5QjEyMjlDNDIzRkU0QkQy
MDA4Q0E3NTEgLyogQXVkaW9EZXN0aW5hdGlvbkNvY29hLmggaW4gSGVhZGVycyAqLywKIAkJCQlG
RDMxNjBCRDEyQjAyNzJBMDBDMUEzNTkgLyogQXVkaW9EZXN0aW5hdGlvbk1hYy5oIGluIEhlYWRl
cnMgKi8sCkBAIC0zMDM4Nyw2ICszMDQyNCw3IEBACiAJCQkJMkQyOUVDQzgxOTJFQ0M4MzAwOTg0
Qjc4IC8qIERpc3BsYXlSZWZyZXNoTW9uaXRvck1hbmFnZXIuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTZGQ0UxQTFBMjI2MThBQkQwMDRGMDM0MyAvKiBEaXNwbGF5UnVuLmggaW4gSGVhZGVycyAqLywK
IAkJCQlGRDMxNjA5MTEyQjAyNkY3MDBDMUEzNTkgLyogRGlzdGFuY2UuaCBpbiBIZWFkZXJzICov
LAorCQkJCTgzMDQwMjgzMjQ5QTdBNjIwMEE5MEQ4RCAvKiBEaXN0YW5jZU1vZGVsVHlwZS5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJODQ3MzBENzcxMjQ4RjBCMzAwRDNBOUM5IC8qIERpc3RhbnRMaWdo
dFNvdXJjZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjJGMzRGRTYwRTgyRjgxNDAwRjYyN0NEIC8q
IEROUy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJN0VFNjg0NkYxMkQyNkUzODAwRTczMjE1IC8qIERO
U1Jlc29sdmVRdWV1ZUNGTmV0LmggaW4gSGVhZGVycyAqLywKQEAgLTMyNDAwLDYgKzMyNDM4LDcg
QEAKIAkJCQlBODBFNkNGQjBBMTk4OUNBMDA3RkI4QzUgLyogUGFpci5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJRkQzMTYwQTMxMkIwMjZGNzAwQzFBMzU5IC8qIFBhbm5lci5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJRkQzMTYwMUExMkIwMjY3NjAwQzFBMzU5IC8qIFBhbm5lck5vZGUuaCBpbiBIZWFkZXJz
ICovLAorCQkJCTgzMDQwMjgyMjQ5QTdBNUYwMEE5MEQ4RCAvKiBQYW5uaW5nTW9kZWxUeXBlLmgg
aW4gSGVhZGVycyAqLywKIAkJCQlBMTg4OTBBRjFBQTEzRjI1MDAyNkMzMDEgLyogUGFyZW50YWxD
b250cm9sc0NvbnRlbnRGaWx0ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUNEQ0Q0MUU4MUMzRERC
MEEwMDk2NUQ5OSAvKiBQYXJzZWRDb250ZW50UmFuZ2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTQ0
Nzk1ODA0MTY0M0I0OUEwMDFFMEE3RiAvKiBQYXJzZWRDb250ZW50VHlwZS5oIGluIEhlYWRlcnMg
Ki8sCkBAIC0zMzcyOCw2ICszMzc2Nyw4IEBACiAJCQkJQTU4NEZFMzAxODY0Q0I4NDAwODQzQjEw
IC8qIFdlYkluamVjdGVkU2NyaXB0TWFuYWdlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRjQ4MjIz
MTExRTM4NjlCODAwNjZGQzc5IC8qIFdlYkl0ZW1Qcm92aWRlclBhc3RlYm9hcmQuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTMxQzBGRjIyMEU0Q0VCNkUwMDdENkZFNSAvKiBXZWJLaXRBbmltYXRpb25F
dmVudC5oIGluIEhlYWRlcnMgKi8sCisJCQkJODNCMUE3MDIyNDk5ODVGMDAwRkU1OTYxIC8qIFdl
YktpdEF1ZGlvQ29udGV4dC5oIGluIEhlYWRlcnMgKi8sCisJCQkJODMxQjYxNzYyNDk5QTVCQjAw
QzA3Qzc5IC8qIFdlYktpdEF1ZGlvUGFubmVyTm9kZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNURG
RUJBQjcxODU5MkI2RDAwQzc1QkVCIC8qIFdlYktpdEF2YWlsYWJpbGl0eS5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJNDk4MzkxNTkwRjFFNzc2OTAwQzIzNzgyIC8qIFdlYktpdENTU01hdHJpeC5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJMkQwNjIxNDUxREE2MzlCQTAwQTdGQjI2IC8qIFdlYktpdE1lZGlh
S2V5TWVzc2FnZUV2ZW50LmggaW4gSGVhZGVycyAqLywKQEAgLTMzNzM2LDYgKzMzNzc3LDcgQEAK
IAkJCQkyRDA2MjE1MDFEQTYzQTk0MDBBN0ZCMjYgLyogV2ViS2l0TWVkaWFLZXlTZXNzaW9uLmgg
aW4gSGVhZGVycyAqLywKIAkJCQk3QzQ4QTZEMTE5MUM5RDY1MDAwMjY2NzQgLyogV2ViS2l0TmFt
ZXNwYWNlLmggaW4gSGVhZGVycyAqLywKIAkJCQk3QTIyNzMyMTIwQzlGQUZFMDBEQjFERUYgLyog
V2ViS2l0TlNJbWFnZUV4dHJhcy5oIGluIEhlYWRlcnMgKi8sCisJCQkJODMxQjYxNzcyNDk5QTVC
RjAwQzA3Qzc5IC8qIFdlYktpdE9mZmxpbmVBdWRpb0NvbnRleHQuaCBpbiBIZWFkZXJzICovLAog
CQkJCUE1REVCREE0MTZGQjkwODcwMDgzNkZFMCAvKiBXZWJLaXRQbGF5YmFja1RhcmdldEF2YWls
YWJpbGl0eUV2ZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQk0OTRCRDc5NTBGNTVDOEVFMDA3NDc4
MjggLyogV2ViS2l0UG9pbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTMxQzBGRjI1MEU0Q0VCNkUw
MDdENkZFNSAvKiBXZWJLaXRUcmFuc2l0aW9uRXZlbnQuaCBpbiBIZWFkZXJzICovLApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvV2ViQ29yZUJ1aWx0aW5OYW1lcy5oIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvV2ViQ29yZUJ1aWx0aW5OYW1lcy5oCmluZGV4IDQ5
OTdhYjk5M2NiNzk1NDU3NWE4NDMxN2Q2OWMyMGNjZWM2YTdkMDkuLmY5MTk3YzI2YWU5YTRjMzlj
OTIyM2I1NDFkNTlmYmMwYTgyMGU5OWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL1dlYkNvcmVCdWlsdGluTmFtZXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9XZWJDb3JlQnVpbHRpbk5hbWVzLmgKQEAgLTQ5LDYgKzQ5LDcgQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogICAgIG1hY3JvKEFwcGxlUGF5U2V0dXBGZWF0dXJlKSBcCiAgICAgbWFjcm8oQXR0
YWNobWVudEVsZW1lbnQpIFwKICAgICBtYWNybyhBdWRpbykgXAorICAgIG1hY3JvKEF1ZGlvQ29u
dGV4dCkgXAogICAgIG1hY3JvKEF1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZSkgXAogICAg
IG1hY3JvKEF1dGhlbnRpY2F0b3JBdHRlc3RhdGlvblJlc3BvbnNlKSBcCiAgICAgbWFjcm8oQXV0
aGVudGljYXRvclJlc3BvbnNlKSBcCkBAIC0xNjUsOSArMTY2LDExIEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKICAgICBtYWNybyhOYXZpZ2F0b3JDcmVkZW50aWFscykgXAogICAgIG1hY3JvKE5hdmln
YXRvck1lZGlhRGV2aWNlcykgXAogICAgIG1hY3JvKE5hdmlnYXRvclVzZXJNZWRpYSkgXAorICAg
IG1hY3JvKE9mZmxpbmVBdWRpb0NvbnRleHQpIFwKICAgICBtYWNybyhPZmZzY3JlZW5DYW52YXMp
IFwKICAgICBtYWNybyhPZmZzY3JlZW5DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQpIFwKICAgICBt
YWNybyhQYWludFJlbmRlcmluZ0NvbnRleHQyRCkgXAorICAgIG1hY3JvKFBhbm5lck5vZGUpIFwK
ICAgICBtYWNybyhQYXltZW50QWRkcmVzcykgXAogICAgIG1hY3JvKFBheW1lbnRNZXRob2RDaGFu
Z2VFdmVudCkgXAogICAgIG1hY3JvKFBheW1lbnRSZXF1ZXN0KSBcCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vRXZlbnRUYXJnZXRGYWN0b3J5LmluIGIvU291cmNlL1dlYkNvcmUvZG9t
L0V2ZW50VGFyZ2V0RmFjdG9yeS5pbgppbmRleCBmYzFkYjJjZTBlMDY1MDAyOGNkNGNiY2U0OWVi
ZDMyOTQ0YjMyYjM0Li5hMTU0YjQ0NWExM2FkNDc2OTYyOWQ5ZjdkOTM3N2E5ZGYxNTBmN2FjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRUYXJnZXRGYWN0b3J5LmluCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudFRhcmdldEZhY3RvcnkuaW4KQEAgLTUzLDYgKzUzLDcg
QEAgVmlkZW9UcmFja0xpc3QgY29uZGl0aW9uYWw9VklERU8KIFZpc3VhbFZpZXdwb3J0CiBXZWJB
bmltYXRpb24KIFdlYkdQVURldmljZSBjb25kaXRpb25hbD1XRUJHUFUKK1dlYktpdEF1ZGlvQ29u
dGV4dCBjb25kaXRpb25hbD1XRUJfQVVESU8KIFdlYktpdE1lZGlhS2V5U2Vzc2lvbiBjb25kaXRp
b25hbD1MRUdBQ1lfRU5DUllQVEVEX01FRElBCiBXZWJTb2NrZXQKIFdvcmtlcgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGFnZS9TZXR0aW5ncy55YW1sIGIvU291cmNlL1dlYkNvcmUvcGFn
ZS9TZXR0aW5ncy55YW1sCmluZGV4IDJkNmJjNmZmMmVmMGIwMDBkZDRlOTgwNmNlZDZjNDhmYjQ3
MGJlM2EuLjU4M2ZjNmY3OTVlZmMwNzAyZmIzODQwZGI0ZTgxMWI4ODYwOWZhM2UgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3MueWFtbAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL1NldHRpbmdzLnlhbWwKQEAgLTI1NSw2ICsyNTUsOCBAQCBsb2FkRGVmZXJyaW5nRW5h
YmxlZDoKICAgaW5pdGlhbDogdHJ1ZQogd2ViQXVkaW9FbmFibGVkOgogICBpbml0aWFsOiBmYWxz
ZQorbW9kZXJuVW5wcmVmaXhlZFdlYkF1ZGlvRW5hYmxlZDoKKyAgaW5pdGlhbDogZmFsc2UKIHBh
Z2luYXRlRHVyaW5nTGF5b3V0RW5hYmxlZDoKICAgaW5pdGlhbDogZmFsc2UKIGZ1bGxTY3JlZW5F
bmFibGVkOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3Bw
IGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCmluZGV4IDBmNWMxOTdhMjk4
MDdlNzYzY2FlYmYwOTAyYTRjZjlhNjIwOGI5N2MuLjYyZmFmYmVkMGNjY2U3NzQzY2UyZDRiMTk3
M2UwMTc4MjE4NDNjZTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJu
YWxzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKQEAgLTI4
MCw2ICsyODAsNyBAQAogCiAjaWYgRU5BQkxFKFdFQl9BVURJTykKICNpbmNsdWRlICJBdWRpb0Nv
bnRleHQuaCIKKyNpbmNsdWRlICJXZWJLaXRBdWRpb0NvbnRleHQuaCIKICNlbmRpZgogCiAjaWYg
RU5BQkxFKE1FRElBX1NFU1NJT04pCkBAIC00MjkwLDIyICs0MjkxLDI5IEBAIHZvaWQgSW50ZXJu
YWxzOjpzZW5kTWVkaWFDb250cm9sRXZlbnQoTWVkaWFDb250cm9sRXZlbnQgZXZlbnQpCiAjZW5k
aWYgLy8gRU5BQkxFKE1FRElBX1NFU1NJT04pCiAKICNpZiBFTkFCTEUoV0VCX0FVRElPKQotdm9p
ZCBJbnRlcm5hbHM6OnNldEF1ZGlvQ29udGV4dFJlc3RyaWN0aW9ucyhBdWRpb0NvbnRleHQmIGNv
bnRleHQsIFN0cmluZ1ZpZXcgcmVzdHJpY3Rpb25zU3RyaW5nKQordm9pZCBJbnRlcm5hbHM6OnNl
dEF1ZGlvQ29udGV4dFJlc3RyaWN0aW9ucyhjb25zdCBWYXJpYW50PFJlZlB0cjxBdWRpb0NvbnRl
eHQ+LCBSZWZQdHI8V2ViS2l0QXVkaW9Db250ZXh0Pj4mIGNvbnRleHRWYXJpYW50LCBTdHJpbmdW
aWV3IHJlc3RyaWN0aW9uc1N0cmluZykKIHsKLSAgICBBdWRpb0NvbnRleHQ6OkJlaGF2aW9yUmVz
dHJpY3Rpb25zIHJlc3RyaWN0aW9ucyA9IGNvbnRleHQuYmVoYXZpb3JSZXN0cmljdGlvbnMoKTsK
LSAgICBjb250ZXh0LnJlbW92ZUJlaGF2aW9yUmVzdHJpY3Rpb24ocmVzdHJpY3Rpb25zKTsKKyAg
ICBSZWZQdHI8QXVkaW9Db250ZXh0QmFzZT4gY29udGV4dDsKKyAgICBzd2l0Y2hPbihjb250ZXh0
VmFyaWFudCwgWyZdKFJlZlB0cjxBdWRpb0NvbnRleHQ+IGVudHJ5KSB7CisgICAgICAgIGNvbnRl
eHQgPSBlbnRyeTsKKyAgICB9LCBbJl0oUmVmUHRyPFdlYktpdEF1ZGlvQ29udGV4dD4gZW50cnkp
IHsKKyAgICAgICAgY29udGV4dCA9IGVudHJ5OworICAgIH0pOworCisgICAgYXV0byByZXN0cmlj
dGlvbnMgPSBjb250ZXh0LT5iZWhhdmlvclJlc3RyaWN0aW9ucygpOworICAgIGNvbnRleHQtPnJl
bW92ZUJlaGF2aW9yUmVzdHJpY3Rpb24ocmVzdHJpY3Rpb25zKTsKIAotICAgIHJlc3RyaWN0aW9u
cyA9IEF1ZGlvQ29udGV4dDo6Tm9SZXN0cmljdGlvbnM7CisgICAgcmVzdHJpY3Rpb25zID0gQXVk
aW9Db250ZXh0QmFzZTo6Tm9SZXN0cmljdGlvbnM7CiAKICAgICBmb3IgKFN0cmluZ1ZpZXcgcmVz
dHJpY3Rpb25TdHJpbmcgOiByZXN0cmljdGlvbnNTdHJpbmcuc3BsaXQoJywnKSkgewogICAgICAg
ICBpZiAoZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UocmVzdHJpY3Rpb25TdHJpbmcsICJu
b3Jlc3RyaWN0aW9ucyIpKQotICAgICAgICAgICAgcmVzdHJpY3Rpb25zIHw9IEF1ZGlvQ29udGV4
dDo6Tm9SZXN0cmljdGlvbnM7CisgICAgICAgICAgICByZXN0cmljdGlvbnMgfD0gQXVkaW9Db250
ZXh0QmFzZTo6Tm9SZXN0cmljdGlvbnM7CiAgICAgICAgIGlmIChlcXVhbExldHRlcnNJZ25vcmlu
Z0FTQ0lJQ2FzZShyZXN0cmljdGlvblN0cmluZywgInJlcXVpcmV1c2VyZ2VzdHVyZWZvcmF1ZGlv
c3RhcnQiKSkKLSAgICAgICAgICAgIHJlc3RyaWN0aW9ucyB8PSBBdWRpb0NvbnRleHQ6OlJlcXVp
cmVVc2VyR2VzdHVyZUZvckF1ZGlvU3RhcnRSZXN0cmljdGlvbjsKKyAgICAgICAgICAgIHJlc3Ry
aWN0aW9ucyB8PSBBdWRpb0NvbnRleHRCYXNlOjpSZXF1aXJlVXNlckdlc3R1cmVGb3JBdWRpb1N0
YXJ0UmVzdHJpY3Rpb247CiAgICAgICAgIGlmIChlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2Fz
ZShyZXN0cmljdGlvblN0cmluZywgInJlcXVpcmVwYWdlY29uc2VudGZvcmF1ZGlvc3RhcnQiKSkK
LSAgICAgICAgICAgIHJlc3RyaWN0aW9ucyB8PSBBdWRpb0NvbnRleHQ6OlJlcXVpcmVQYWdlQ29u
c2VudEZvckF1ZGlvU3RhcnRSZXN0cmljdGlvbjsKKyAgICAgICAgICAgIHJlc3RyaWN0aW9ucyB8
PSBBdWRpb0NvbnRleHRCYXNlOjpSZXF1aXJlUGFnZUNvbnNlbnRGb3JBdWRpb1N0YXJ0UmVzdHJp
Y3Rpb247CiAgICAgfQotICAgIGNvbnRleHQuYWRkQmVoYXZpb3JSZXN0cmljdGlvbihyZXN0cmlj
dGlvbnMpOworICAgIGNvbnRleHQtPmFkZEJlaGF2aW9yUmVzdHJpY3Rpb24ocmVzdHJpY3Rpb25z
KTsKIH0KIAogdm9pZCBJbnRlcm5hbHM6OnVzZU1vY2tBdWRpb0Rlc3RpbmF0aW9uQ29jb2EoKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaCBiL1NvdXJjZS9X
ZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmgKaW5kZXggMzQyMjc5OTRkNjRmYWQ2ZjYyOWQzODI2
MGE3MWIwYTU2OTg5MmJkYS4uYzFmYWQ5YmYyOTVjOTZjYWRiYjgyZTFkNmI1MDczNjRjMzFiZDAx
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5oCkBAIC0xMDgsNiArMTA4LDcgQEAgY2xh
c3MgVW5zdXNwZW5kYWJsZUFjdGl2ZURPTU9iamVjdDsKIGNsYXNzIFZvaWRDYWxsYmFjazsKIGNs
YXNzIFdlYkFuaW1hdGlvbjsKIGNsYXNzIFdlYkdMUmVuZGVyaW5nQ29udGV4dDsKK2NsYXNzIFdl
YktpdEF1ZGlvQ29udGV4dDsKIGNsYXNzIFdpbmRvd1Byb3h5OwogY2xhc3MgWE1MSHR0cFJlcXVl
c3Q7CiAKQEAgLTY3NCw3ICs2NzUsNyBAQCBwdWJsaWM6CiAjZW5kaWYKIAogI2lmIEVOQUJMRShX
RUJfQVVESU8pCi0gICAgdm9pZCBzZXRBdWRpb0NvbnRleHRSZXN0cmljdGlvbnMoQXVkaW9Db250
ZXh0JiwgU3RyaW5nVmlldyByZXN0cmljdGlvbnNTdHJpbmcpOworICAgIHZvaWQgc2V0QXVkaW9D
b250ZXh0UmVzdHJpY3Rpb25zKGNvbnN0IFZhcmlhbnQ8UmVmUHRyPEF1ZGlvQ29udGV4dD4sIFJl
ZlB0cjxXZWJLaXRBdWRpb0NvbnRleHQ+PiYsIFN0cmluZ1ZpZXcgcmVzdHJpY3Rpb25zU3RyaW5n
KTsKICAgICB2b2lkIHVzZU1vY2tBdWRpb0Rlc3RpbmF0aW9uQ29jb2EoKTsKICNlbmRpZgogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5pZGwgYi9Tb3VyY2Uv
V2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5pZGwKaW5kZXggODdhNzRiNWY5YWRlOTk4YjUyM2Ex
NGU5ZmE1MTM2NTVlODg4MTcyYi4uMmEzM2M5YWE1MWVhYjViNzY2OGY2MDk2ODRhMjExYTdiN2Q1
YzNlNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaWRsCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlkbApAQCAtNjc2LDcgKzY3Niw3
IEBAIGVudW0gQ29tcG9zaXRpbmdQb2xpY3kgewogICAgIFtDb25kaXRpb25hbD1WSURFTywgTWF5
VGhyb3dFeGNlcHRpb25dIHZvaWQgc2V0TWVkaWFTZXNzaW9uUmVzdHJpY3Rpb25zKERPTVN0cmlu
ZyBtZWRpYVR5cGUsIERPTVN0cmluZyByZXN0cmljdGlvbnMpOwogICAgIFtDb25kaXRpb25hbD1W
SURFTywgTWF5VGhyb3dFeGNlcHRpb25dIERPTVN0cmluZyBtZWRpYVNlc3Npb25SZXN0cmljdGlv
bnMoRE9NU3RyaW5nIG1lZGlhVHlwZSk7CiAgICAgW0NvbmRpdGlvbmFsPVZJREVPXSB2b2lkIHNl
dE1lZGlhRWxlbWVudFJlc3RyaWN0aW9ucyhIVE1MTWVkaWFFbGVtZW50IGVsZW1lbnQsIERPTVN0
cmluZyByZXN0cmljdGlvbnMpOwotICAgIFtDb25kaXRpb25hbD1XRUJfQVVESU9dIHZvaWQgc2V0
QXVkaW9Db250ZXh0UmVzdHJpY3Rpb25zKEF1ZGlvQ29udGV4dCBjb250ZXh0LCBET01TdHJpbmcg
cmVzdHJpY3Rpb25zKTsKKyAgICBbQ29uZGl0aW9uYWw9V0VCX0FVRElPXSB2b2lkIHNldEF1ZGlv
Q29udGV4dFJlc3RyaWN0aW9ucygoQXVkaW9Db250ZXh0IG9yIFdlYktpdEF1ZGlvQ29udGV4dCkg
Y29udGV4dCwgRE9NU3RyaW5nIHJlc3RyaWN0aW9ucyk7CiAgICAgW0NvbmRpdGlvbmFsPVZJREVP
LCBNYXlUaHJvd0V4Y2VwdGlvbl0gdm9pZCBwb3N0UmVtb3RlQ29udHJvbENvbW1hbmQoRE9NU3Ry
aW5nIGNvbW1hbmQsIG9wdGlvbmFsIHVucmVzdHJpY3RlZCBmbG9hdCBhcmd1bWVudCA9IDApOwog
ICAgIFtDb25kaXRpb25hbD1XSVJFTEVTU19QTEFZQkFDS19UQVJHRVRdIHZvaWQgc2V0TW9ja01l
ZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJFbmFibGVkKGJvb2xlYW4gZW5hYmxlZCk7CiAgICAgW0Nv
bmRpdGlvbmFsPVdJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVCwgTWF5VGhyb3dFeGNlcHRpb25dIHZv
aWQgc2V0TW9ja01lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJTdGF0ZShET01TdHJpbmcgZGV2aWNl
TmFtZSwgRE9NU3RyaW5nIGRldmljZVN0YXRlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL1dlYlByZWZlcmVuY2VzLnlhbWwgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQcmVm
ZXJlbmNlcy55YW1sCmluZGV4IGZhZDFhOWY1ODg2MjFlOTVlMTliMWE0ZmU3NGVhMzAyMzY0MjQx
M2QuLjUyMzVjZTcxZmY3YTkzMmUxMjM4YzY0MDE5ZGEzMTJjNTkxNmRiNmYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlByZWZlcmVuY2VzLnlhbWwKKysrIGIvU291cmNlL1dl
YktpdC9TaGFyZWQvV2ViUHJlZmVyZW5jZXMueWFtbApAQCAtMzM0LDYgKzMzNCwxNCBAQCBXZWJB
dWRpb0VuYWJsZWQ6CiAgIGRlZmF1bHRWYWx1ZTogdHJ1ZQogICBjb25kaXRpb246IEVOQUJMRShX
RUJfQVVESU8pCiAKK01vZGVyblVucHJlZml4ZWRXZWJBdWRpb0VuYWJsZWQ6CisgIHR5cGU6IGJv
b2wKKyAgZGVmYXVsdFZhbHVlOiBmYWxzZQorICBjb25kaXRpb246IEVOQUJMRShXRUJfQVVESU8p
CisgIGh1bWFuUmVhZGFibGVOYW1lOiAiTW9kZXJuIFdlYkF1ZGlvIEFQSSIKKyAgaHVtYW5SZWFk
YWJsZURlc2NyaXB0aW9uOiAiTW9kZXJuIGFuZCB1bnByZWZpeGVkIFdlYkF1ZGlvIEFQSSIKKyAg
Y2F0ZWdvcnk6IGV4cGVyaW1lbnRhbAorCiBBdHRhY2htZW50RWxlbWVudEVuYWJsZWQ6CiAgIHR5
cGU6IGJvb2wKICAgZGVmYXVsdFZhbHVlOiBmYWxzZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvV2ViVmlldy9XZWJQcmVmZXJlbmNlS2V5c1ByaXZhdGUuaCBiL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViUHJlZmVyZW5jZUtleXNQcml2YXRlLmgKaW5kZXgg
MTU2NDQxZTcyODljMGQzZGUyNDk4MDU4NDc0ODQ0NzQ5Mjg4ZTYyMy4uOGEyM2UxMzQ1MGZiYmFh
ZmYxZjMyMjM5ZjMzZjgzZDY4ZjI2MjU5NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvV2ViVmlldy9XZWJQcmVmZXJlbmNlS2V5c1ByaXZhdGUuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlByZWZlcmVuY2VLZXlzUHJpdmF0ZS5oCkBAIC0xMTgs
NiArMTE4LDcgQEAKICNkZWZpbmUgV2ViS2l0Q29udGVudENoYW5nZU9ic2VydmVyRW5hYmxlZFBy
ZWZlcmVuY2VLZXkgQCJXZWJLaXRDb250ZW50Q2hhbmdlT2JzZXJ2ZXJFbmFibGVkIgogI2RlZmlu
ZSBXZWJLaXRTaG93UmVwYWludENvdW50ZXJQcmVmZXJlbmNlS2V5IEAiV2ViS2l0U2hvd1JlcGFp
bnRDb3VudGVyIgogI2RlZmluZSBXZWJLaXRXZWJBdWRpb0VuYWJsZWRQcmVmZXJlbmNlS2V5IEAi
V2ViS2l0V2ViQXVkaW9FbmFibGVkIgorI2RlZmluZSBXZWJLaXRNb2Rlcm5VbnByZWZpeGVkV2Vi
QXVkaW9FbmFibGVkUHJlZmVyZW5jZUtleSBAIldlYktpdE1vZGVyblVucHJlZml4ZWRXZWJBdWRp
b0VuYWJsZWQiCiAjZGVmaW5lIFdlYktpdFdlYkdMRW5hYmxlZFByZWZlcmVuY2VLZXkgQCJXZWJL
aXRXZWJHTEVuYWJsZWQiCiAjZGVmaW5lIFdlYktpdFdlYkdMMkVuYWJsZWRQcmVmZXJlbmNlS2V5
IEAiV2ViS2l0V2ViR0wyRW5hYmxlZCIKICNkZWZpbmUgV2ViS2l0V2ViR1BVRW5hYmxlZFByZWZl
cmVuY2VLZXkgQCJXZWJLaXRXZWJHUFVFbmFibGVkIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvV2ViVmlldy9XZWJQcmVmZXJlbmNlcy5tbSBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL1dlYlZpZXcvV2ViUHJlZmVyZW5jZXMubW0KaW5kZXggYjg1MjhkMmUwN2I5YzY3MDJi
MGU1NmM0NGExZGE0OTBlZTc0Y2NjZi4uNWM4ZDNjZmY4ZmQyN2FjNTQ4MzY5ZDUzZDFjZTNjOTIz
Yzk2MWI1MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJQ
cmVmZXJlbmNlcy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlBy
ZWZlcmVuY2VzLm1tCkBAIC01NzQsNiArNTc0LDcgQEAgKyAodm9pZClpbml0aWFsaXplCiAgICAg
ICAgIEBOTywgV2ViS2l0RGlhZ25vc3RpY0xvZ2dpbmdFbmFibGVkS2V5LAogICAgICAgICBAKFdl
YkFsbG93QWxsU3RvcmFnZSksIFdlYktpdFN0b3JhZ2VCbG9ja2luZ1BvbGljeUtleSwKICAgICAg
ICAgQE5PLCBXZWJLaXRQbHVnSW5TbmFwc2hvdHRpbmdFbmFibGVkUHJlZmVyZW5jZUtleSwKKyAg
ICAgICAgQE5PLCBXZWJLaXRNb2Rlcm5VbnByZWZpeGVkV2ViQXVkaW9FbmFibGVkUHJlZmVyZW5j
ZUtleSwKIAogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgICAgIEBZRVMsIFdlYktpdENv
bnRlbnRDaGFuZ2VPYnNlcnZlckVuYWJsZWRQcmVmZXJlbmNlS2V5LApAQCAtMjE0OCw2ICsyMTQ5
LDE2IEBAIC0gKHZvaWQpc2V0V2ViQXVkaW9FbmFibGVkOihCT09MKWVuYWJsZWQKICAgICBbc2Vs
ZiBfc2V0Qm9vbFZhbHVlOmVuYWJsZWQgZm9yS2V5OldlYktpdFdlYkF1ZGlvRW5hYmxlZFByZWZl
cmVuY2VLZXldOwogfQogCistIChCT09MKW1vZGVyblVucHJlZml4ZWRXZWJBdWRpb0VuYWJsZWQK
K3sKKyAgICByZXR1cm4gW3NlbGYgX2Jvb2xWYWx1ZUZvcktleTpXZWJLaXRNb2Rlcm5VbnByZWZp
eGVkV2ViQXVkaW9FbmFibGVkUHJlZmVyZW5jZUtleV07Cit9CisKKy0gKHZvaWQpc2V0TW9kZXJu
VW5wcmVmaXhlZFdlYkF1ZGlvRW5hYmxlZDooQk9PTCllbmFibGVkCit7CisgICAgW3NlbGYgX3Nl
dEJvb2xWYWx1ZTplbmFibGVkIGZvcktleTpXZWJLaXRNb2Rlcm5VbnByZWZpeGVkV2ViQXVkaW9F
bmFibGVkUHJlZmVyZW5jZUtleV07Cit9CisKIC0gKEJPT0wpc3VicGl4ZWxDU1NPTUVsZW1lbnRN
ZXRyaWNzRW5hYmxlZAogewogICAgIHJldHVybiBbc2VsZiBfYm9vbFZhbHVlRm9yS2V5OldlYktp
dFN1YnBpeGVsQ1NTT01FbGVtZW50TWV0cmljc0VuYWJsZWRQcmVmZXJlbmNlS2V5XTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViUHJlZmVyZW5jZXNQcml2
YXRlLmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlByZWZlcmVuY2VzUHJp
dmF0ZS5oCmluZGV4IDhjODY2ZWI4YTg5ZDdiODg1NzQ0ODVhNjE3NTZhY2ZiZmZiZGEzYWQuLmE0
NTA5NDcxYTAwMzQ1YzRkNDdlN2Q1Y2MyZGQwZDRmM2M3ZmRjNWUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViUHJlZmVyZW5jZXNQcml2YXRlLmgKKysrIGIv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJQcmVmZXJlbmNlc1ByaXZhdGUuaApA
QCAtMjY5LDYgKzI2OSw5IEBAIGV4dGVybiBOU1N0cmluZyAqV2ViUHJlZmVyZW5jZXNDYWNoZU1v
ZGVsQ2hhbmdlZEludGVybmFsTm90aWZpY2F0aW9uIFdFQktJVF9ERVBSCiAtIChCT09MKXdlYkF1
ZGlvRW5hYmxlZDsKIC0gKHZvaWQpc2V0V2ViQXVkaW9FbmFibGVkOihCT09MKWVuYWJsZWQ7CiAK
Ky0gKEJPT0wpbW9kZXJuVW5wcmVmaXhlZFdlYkF1ZGlvRW5hYmxlZDsKKy0gKHZvaWQpc2V0TW9k
ZXJuVW5wcmVmaXhlZFdlYkF1ZGlvRW5hYmxlZDooQk9PTCllbmFibGVkOworCiAtIChCT09MKXN1
YnBpeGVsQ1NTT01FbGVtZW50TWV0cmljc0VuYWJsZWQ7CiAtICh2b2lkKXNldFN1YnBpeGVsQ1NT
T01FbGVtZW50TWV0cmljc0VuYWJsZWQ6KEJPT0wpZW5hYmxlZDsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tIGIvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCmluZGV4IDI5OWNiMWNhNzkzNGJhOGFhYTNkNjIw
Y2Y2MTU5NGJlNjQwYjAzOWEuLjg1MTIxMzI1MjA4YjhlZGE0YjI5OThjMmE5MTI1YmJiMWEzNjlm
MzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmlldy5t
bQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZpZXcubW0KQEAgLTMy
NjcsNiArMzI2Nyw3IEBAIC0gKHZvaWQpX3ByZWZlcmVuY2VzQ2hhbmdlZDooV2ViUHJlZmVyZW5j
ZXMgKilwcmVmZXJlbmNlcwogCiAjaWYgRU5BQkxFKFdFQl9BVURJTykKICAgICBzZXR0aW5ncy5z
ZXRXZWJBdWRpb0VuYWJsZWQoW3ByZWZlcmVuY2VzIHdlYkF1ZGlvRW5hYmxlZF0pOworICAgIHNl
dHRpbmdzLnNldE1vZGVyblVucHJlZml4ZWRXZWJBdWRpb0VuYWJsZWQoW3ByZWZlcmVuY2VzIG1v
ZGVyblVucHJlZml4ZWRXZWJBdWRpb0VuYWJsZWRdKTsKICNlbmRpZgogCiAjaWYgRU5BQkxFKEZV
TExTQ1JFRU5fQVBJKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vSW50ZXJm
YWNlcy9JV2ViUHJlZmVyZW5jZXNQcml2YXRlLmlkbCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2lu
L0ludGVyZmFjZXMvSVdlYlByZWZlcmVuY2VzUHJpdmF0ZS5pZGwKaW5kZXggMGM3ZTkyYmMxMWVh
ZTBiYWJlMWQwNDY1MDZkMDJmMzc2Njg0ZDE4My4uOWE4NzVkNDc5ZTdiZmFkNzM2MWE2ZjJmOGE0
ZDMxOTMzN2VlNTdmMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vSW50ZXJm
YWNlcy9JV2ViUHJlZmVyZW5jZXNQcml2YXRlLmlkbAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5
L3dpbi9JbnRlcmZhY2VzL0lXZWJQcmVmZXJlbmNlc1ByaXZhdGUuaWRsCkBAIC0yNjcsNCArMjY3
LDYgQEAgaW50ZXJmYWNlIElXZWJQcmVmZXJlbmNlc1ByaXZhdGU4IDogSVdlYlByZWZlcmVuY2Vz
UHJpdmF0ZTcKIHsKICAgICBIUkVTVUxUIGFsbG93VG9wTmF2aWdhdGlvblRvRGF0YVVSTHMoW291
dCwgcmV0dmFsXSBCT09MKiBlbmFibGVkKTsKICAgICBIUkVTVUxUIHNldEFsbG93VG9wTmF2aWdh
dGlvblRvRGF0YVVSTHMoW2luXSBCT09MIGVuYWJsZWQpOworICAgIEhSRVNVTFQgbW9kZXJuVW5w
cmVmaXhlZFdlYkF1ZGlvRW5hYmxlZChbb3V0LCByZXR2YWxdIEJPT0wqIGVuYWJsZWQpOworICAg
IEhSRVNVTFQgc2V0TW9kZXJuVW5wcmVmaXhlZFdlYkF1ZGlvRW5hYmxlZChbaW5dIEJPT0wgZW5h
YmxlZCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJQcmVmZXJl
bmNlS2V5c1ByaXZhdGUuaCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlByZWZlcmVuY2VL
ZXlzUHJpdmF0ZS5oCmluZGV4IDgwNDUzMWE0NmJmYjU3MjNmNmVkMWNhYzMyZjk1OGYxMzNmZWMy
ODMuLjJhMjEyMWFkYjk2ODY5ODQxMjFjMGU0YmE4ZGFmZmNhN2JjYzZjYWIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlByZWZlcmVuY2VLZXlzUHJpdmF0ZS5oCisrKyBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlByZWZlcmVuY2VLZXlzUHJpdmF0ZS5oCkBAIC03
NSw2ICs3NSw3IEBACiAjZGVmaW5lIFdlYktpdExvY2FsU3RvcmFnZURhdGFiYXNlUGF0aFByZWZl
cmVuY2VLZXkgIldlYktpdExvY2FsU3RvcmFnZURhdGFiYXNlUGF0aCIKICNkZWZpbmUgV2ViS2l0
SHlwZXJsaW5rQXVkaXRpbmdFbmFibGVkUHJlZmVyZW5jZUtleSAiV2ViS2l0SHlwZXJsaW5rQXVk
aXRpbmdFbmFibGVkIgogI2RlZmluZSBXZWJLaXRXZWJBdWRpb0VuYWJsZWRQcmVmZXJlbmNlS2V5
ICJXZWJLaXRXZWJBdWRpb0VuYWJsZWQiCisjZGVmaW5lIFdlYktpdE1vZGVyblVucHJlZml4ZWRX
ZWJBdWRpb0VuYWJsZWRQcmVmZXJlbmNlS2V5ICJXZWJLaXRXZWJBdWRpb0VuYWJsZWQiCiAjZGVm
aW5lIFdlYktpdFNob3VsZERpc3BsYXlTdWJ0aXRsZXNQcmVmZXJlbmNlS2V5ICJXZWJLaXRTaG91
bGREaXNwbGF5U3VidGl0bGVzIgogI2RlZmluZSBXZWJLaXRTaG91bGREaXNwbGF5Q2FwdGlvbnNQ
cmVmZXJlbmNlS2V5ICJXZWJLaXRTaG91bGREaXNwbGF5Q2FwdGlvbnMiCiAjZGVmaW5lIFdlYktp
dFNob3VsZERpc3BsYXlUZXh0RGVzY3JpcHRpb25zUHJlZmVyZW5jZUtleSAiV2ViS2l0U2hvdWxk
RGlzcGxheVRleHREZXNjcmlwdGlvbnMiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5
L3dpbi9XZWJQcmVmZXJlbmNlcy5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJQcmVm
ZXJlbmNlcy5jcHAKaW5kZXggNTgyNmU0MTk1OGMwMzM4ODkyM2NmMzg5ZWI3ZDJhODY1ZjM3ZjE1
My4uOTNkZThhMzIwYWExNTgzNDlhMDcyMDVkMDRlMmVhNGM0MTQ5ZjI5NCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViUHJlZmVyZW5jZXMuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvd2luL1dlYlByZWZlcmVuY2VzLmNwcApAQCAtMjMyLDYgKzIzMiw3IEBAIHZv
aWQgV2ViUHJlZmVyZW5jZXM6OmluaXRpYWxpemVEZWZhdWx0U2V0dGluZ3MoKQogICAgIENGRGlj
dGlvbmFyeUFkZFZhbHVlKGRlZmF1bHRzLCBDRlNUUihXZWJLaXRKYXZhU2NyaXB0UnVudGltZUZs
YWdzUHJlZmVyZW5jZUtleSksIENGU1RSKCIwIikpOwogICAgIENGRGljdGlvbmFyeUFkZFZhbHVl
KGRlZmF1bHRzLCBDRlNUUihXZWJLaXRXZWJTZWN1cml0eUVuYWJsZWRQcmVmZXJlbmNlS2V5KSwg
a0NGQm9vbGVhblRydWUpOwogICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKGRlZmF1bHRzLCBDRlNU
UihXZWJLaXRBbGxvd1RvcE5hdmlnYXRpb25Ub0RhdGFVUkxzUHJlZmVyZW5jZUtleSksIGtDRkJv
b2xlYW5GYWxzZSk7CisgICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVmYXVsdHMsIENGU1RSKFdl
YktpdFdlYkF1ZGlvRW5hYmxlZFByZWZlcmVuY2VLZXkpLCBrQ0ZCb29sZWFuRmFsc2UpOwogICAg
IENGRGljdGlvbmFyeUFkZFZhbHVlKGRlZmF1bHRzLCBDRlNUUihXZWJLaXRBbGxvd1VuaXZlcnNh
bEFjY2Vzc0Zyb21GaWxlVVJMc1ByZWZlcmVuY2VLZXkpLCBrQ0ZCb29sZWFuRmFsc2UpOwogICAg
IENGRGljdGlvbmFyeUFkZFZhbHVlKGRlZmF1bHRzLCBDRlNUUihXZWJLaXRBbGxvd0ZpbGVBY2Nl
c3NGcm9tRmlsZVVSTHNQcmVmZXJlbmNlS2V5KSwga0NGQm9vbGVhblRydWUpOwogICAgIENGRGlj
dGlvbmFyeUFkZFZhbHVlKGRlZmF1bHRzLCBDRlNUUihXZWJLaXRKYXZhU2NyaXB0Q2FuQWNjZXNz
Q2xpcGJvYXJkUHJlZmVyZW5jZUtleSksIGtDRkJvb2xlYW5GYWxzZSk7CkBAIC0yNDk5LDMgKzI1
MDAsMTcgQEAgSFJFU1VMVCBXZWJQcmVmZXJlbmNlczo6c2V0QWxsb3dUb3BOYXZpZ2F0aW9uVG9E
YXRhVVJMcyhCT09MIGFsbG93QWNjZXNzKQogICAgIHNldEJvb2xWYWx1ZShXZWJLaXRBbGxvd1Rv
cE5hdmlnYXRpb25Ub0RhdGFVUkxzUHJlZmVyZW5jZUtleSwgYWxsb3dBY2Nlc3MpOwogICAgIHJl
dHVybiBTX09LOwogfQorCitIUkVTVUxUIFdlYlByZWZlcmVuY2VzOjptb2Rlcm5VbnByZWZpeGVk
V2ViQXVkaW9FbmFibGVkKF9PdXRfIEJPT0wqIGVuYWJsZWQpCit7CisgICAgaWYgKCFlbmFibGVk
KQorICAgICAgICByZXR1cm4gRV9QT0lOVEVSOworICAgICplbmFibGVkID0gYm9vbFZhbHVlRm9y
S2V5KFdlYktpdFdlYkF1ZGlvRW5hYmxlZFByZWZlcmVuY2VLZXkpOworICAgIHJldHVybiBTX09L
OworfQorCitIUkVTVUxUIFdlYlByZWZlcmVuY2VzOjpzZXRNb2Rlcm5VbnByZWZpeGVkV2ViQXVk
aW9FbmFibGVkKEJPT0wgZW5hYmxlZCkKK3sKKyAgICBzZXRCb29sVmFsdWUoV2ViS2l0V2ViQXVk
aW9FbmFibGVkUHJlZmVyZW5jZUtleSwgZW5hYmxlZCk7CisgICAgcmV0dXJuIFNfT0s7Cit9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJQcmVmZXJlbmNlcy5oIGIvU291
cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViUHJlZmVyZW5jZXMuaAppbmRleCBmN2ZlNzY4NDJiNGRk
MjMyOTgxZWZmZjcyMWMxZmE0YjEwOTc5ZTk4Li4yNDM3YjBlNzYyODk1MDZjMjY0MDQ4ODZiZDJj
MDNmNTgzMjUzYzUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJQcmVm
ZXJlbmNlcy5oCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlByZWZlcmVuY2VzLmgK
QEAgLTMwNSw2ICszMDUsOCBAQCBwdWJsaWM6CiAgICAgLy8gSVdlYlByZWZlcmVuY2VzUHJpdmF0
ZTgKICAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgYWxsb3dUb3BOYXZpZ2F0
aW9uVG9EYXRhVVJMcyhfT3V0XyBCT09MKik7CiAgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhP
RENBTExUWVBFIHNldEFsbG93VG9wTmF2aWdhdGlvblRvRGF0YVVSTHMoQk9PTCk7CisgICAgdmly
dHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIG1vZGVyblVucHJlZml4ZWRXZWJBdWRpb0Vu
YWJsZWQoX091dF8gQk9PTCopOworICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQ
RSBzZXRNb2Rlcm5VbnByZWZpeGVkV2ViQXVkaW9FbmFibGVkKEJPT0wpOwogCiAgICAgLy8gV2Vi
UHJlZmVyZW5jZXMKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVmll
dy5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJWaWV3LmNwcAppbmRleCAyOGYyOTNk
OGM3ZjdkYTY5YjhlMTgxM2FmODhkMTc5ZThmYWZiMmY2Li5kYjI5MTE2YmZjMjU5OTUyY2U2ZGYz
M2YzNzM2NjI5YTY3YjliYTMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9X
ZWJWaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJWaWV3LmNwcApAQCAt
NTU1Niw2ICs1NTU2LDExIEBAIEhSRVNVTFQgV2ViVmlldzo6bm90aWZ5UHJlZmVyZW5jZXNDaGFu
Z2VkKElXZWJOb3RpZmljYXRpb24qIG5vdGlmaWNhdGlvbikKIAogI2lmIEVOQUJMRShXRUJfQVVE
SU8pCiAgICAgc2V0dGluZ3Muc2V0V2ViQXVkaW9FbmFibGVkKHRydWUpOworCisgICAgaHIgPSBw
cmVmc1ByaXZhdGUtPm1vZGVyblVucHJlZml4ZWRXZWJBdWRpb0VuYWJsZWQoJmVuYWJsZWQpOwor
ICAgIGlmIChGQUlMRUQoaHIpKQorICAgICAgICByZXR1cm4gaHI7CisgICAgc2V0dGluZ3Muc2V0
TW9kZXJuVW5wcmVmaXhlZFdlYkF1ZGlvRW5hYmxlZCghIWVuYWJsZWQpOwogI2VuZGlmIC8vIEVO
QUJMRShXRUJfQVVESU8pCiAKICNpZiBFTkFCTEUoV0VCR0wpCmRpZmYgLS1naXQgYS9Ub29scy9E
dW1wUmVuZGVyVHJlZS9tYWMvRHVtcFJlbmRlclRyZWUubW0gYi9Ub29scy9EdW1wUmVuZGVyVHJl
ZS9tYWMvRHVtcFJlbmRlclRyZWUubW0KaW5kZXggYjgxYTFjM2MzNTM3OWJkMDkwMWVlOTEwN2Q5
ZGVlNzc1N2RkYWUzNC4uODdjMDRkOTJmYTRjZTQ3MjIxNmU4YzM4ZmJlZTliYmY3MWEzMmQ5OSAx
MDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0R1bXBSZW5kZXJUcmVlLm1tCisr
KyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9EdW1wUmVuZGVyVHJlZS5tbQpAQCAtOTc5LDYg
Kzk3OSw3IEBAIHN0YXRpYyB2b2lkIHJlc2V0V2ViUHJlZmVyZW5jZXNUb0NvbnNpc3RlbnRWYWx1
ZXMoKQogI2VuZGlmCiAKICAgICBbcHJlZmVyZW5jZXMgc2V0V2ViQXVkaW9FbmFibGVkOllFU107
CisgICAgW3ByZWZlcmVuY2VzIHNldE1vZGVyblVucHJlZml4ZWRXZWJBdWRpb0VuYWJsZWQ6WUVT
XTsKICAgICBbcHJlZmVyZW5jZXMgc2V0TWVkaWFTb3VyY2VFbmFibGVkOllFU107CiAgICAgW3By
ZWZlcmVuY2VzIHNldFNvdXJjZUJ1ZmZlckNoYW5nZVR5cGVFbmFibGVkOllFU107CiAKZGlmZiAt
LWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9EdW1wUmVuZGVyVHJlZS5jcHAgYi9Ub29s
cy9EdW1wUmVuZGVyVHJlZS93aW4vRHVtcFJlbmRlclRyZWUuY3BwCmluZGV4IDBiMzdhZDQ1ZmUx
OGIyYTk0NjVhYzM1NzIzYmNkY2U2OTU2ZjYzNjIuLmQwYjlkOGM3ZTcyMGZkODMwYzZiNmYwY2Mw
NWQwNWI5OTM1ZGYwNDggMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9EdW1w
UmVuZGVyVHJlZS5jcHAKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL0R1bXBSZW5kZXJU
cmVlLmNwcApAQCAtODM2LDYgKzgzNiw3IEBAIHN0YXRpYyB2b2lkIHJlc2V0V2ViUHJlZmVyZW5j
ZXNUb0NvbnNpc3RlbnRWYWx1ZXMoSVdlYlByZWZlcmVuY2VzKiBwcmVmZXJlbmNlcykKICNlbmRp
ZgogCiAgICAgcHJlZnNQcml2YXRlLT5zZXRBbGxvd1RvcE5hdmlnYXRpb25Ub0RhdGFVUkxzKFRS
VUUpOworICAgIHByZWZzUHJpdmF0ZS0+c2V0TW9kZXJuVW5wcmVmaXhlZFdlYkF1ZGlvRW5hYmxl
ZChUUlVFKTsKICAgICBwcmVmc1ByaXZhdGUtPnNldEFsbG93VW5pdmVyc2FsQWNjZXNzRnJvbUZp
bGVVUkxzKFRSVUUpOwogICAgIHByZWZzUHJpdmF0ZS0+c2V0QWxsb3dGaWxlQWNjZXNzRnJvbUZp
bGVVUkxzKFRSVUUpOwogICAgIHByZWZlcmVuY2VzLT5zZXRTdGFuZGFyZEZvbnRGYW1pbHkoc3Rh
bmRhcmRGYW1pbHkpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0NoYW5n
ZUxvZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9DaGFuZ2VMb2cKaW5kZXggNTQ5ZTliNmY2
YTQwYzdlMjEzZDJiZDBiYjI3MWJhN2MxZTJlZjVmYy4uZTBjOGU0MjI5NmY0NjEyMWYzMmFiNjcy
ZWM3ODg3NDgwYzljM2M4NiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0No
YW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsMTggQEAKKzIwMjAtMDYtMTcgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKwor
ICAgICAgICBBZGQgZXhwZXJpbWVudGFsIGZlYXR1cmUgZmxhZyBmb3IgbW9kZXJuICYgdW5wcmVm
aXhlZCBXZWJBdWRpbyBBUEkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTIxMzI2OAorCisgICAgICAgIFJldmlld2VkIGJ5IEplciBOb2JsZS4KKworICAg
ICAgICBSZWJhc2VsaW5lIGEgZmV3IHdlYi1wbGF0Zm9ybS10ZXN0cyBub3cgdGhhdCB0aGV5IGFy
ZSBwYXNzaW5nIG9yIGZhaWxpbmcgYXQgYSBsYXRlciBzdGFnZS4KKyAgICAgICAgVGhpcyBpcyBk
dWUgdG8gb3VyIFdlYkF1ZGlvIGdldHRpbmcgcHJvcGVybHkgdW5wcmVmaXhlZCBpbiB0aGUgY29u
dGV4dCBvZiBsYXlvdXQgdGVzdHMuCisKKyAgICAgICAgKiB3ZWItcGxhdGZvcm0tdGVzdHMvd2Vi
YXVkaW8vaWRsaGFybmVzcy5odHRwcy53aW5kb3ctZXhwZWN0ZWQudHh0OgorICAgICAgICAqIHdl
Yi1wbGF0Zm9ybS10ZXN0cy93ZWJhdWRpby90aGUtYXVkaW8tYXBpL3RoZS1hdWRpb2NvbnRleHQt
aW50ZXJmYWNlL2F1ZGlvY29udGV4dC1kZXRhY2hlZC1leGVjdXRpb24tY29udGV4dC50ZW50YXRp
dmUtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy93ZWJhdWRpby90
aGUtYXVkaW8tYXBpL3RoZS1hdWRpb25vZGUtaW50ZXJmYWNlL2F1ZGlvbm9kZS1jb25uZWN0LW1l
dGhvZC1jaGFpbmluZy1leHBlY3RlZC50eHQ6CisgICAgICAgICogd2ViLXBsYXRmb3JtLXRlc3Rz
L3dlYmF1ZGlvL3RoZS1hdWRpby1hcGkvdGhlLW9mZmxpbmVhdWRpb2NvbnRleHQtaW50ZXJmYWNl
L29mZmxpbmVhdWRpb2NvbnRleHQtZGV0YWNoZWQtZXhlY3V0aW9uLWNvbnRleHQudGVudGF0aXZl
LWV4cGVjdGVkLnR4dDoKKwogMjAyMC0wNi0xNyAgUm9iIEJ1aXMgIDxyYnVpc0BpZ2FsaWEuY29t
PgogCiAgICAgICAgIEltYWdlIGByZWZlcnJlcnBvbGljeWAgbXV0YXRpb25zIHNob3VsZCBiZSBj
b25zaWRlcmVkICJyZWxldmFudCBtdXRhdGlvbnMiCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9m
YXN0L2RvbS9jYWxsLWEtY29uc3RydWN0b3ItYXMtYS1mdW5jdGlvbi1leHBlY3RlZC50eHQgYi9M
YXlvdXRUZXN0cy9mYXN0L2RvbS9jYWxsLWEtY29uc3RydWN0b3ItYXMtYS1mdW5jdGlvbi1leHBl
Y3RlZC50eHQKaW5kZXggOGExODAxY2EyMmZjNjZlZWRhMzkyY2QzZjdhZjBkNjIxNWYyOTJlMC4u
Mjc1NGY0OGU1ZjI1NjBjNDZlODU4YjhlNjBlMDQyZWI4Y2VkNjY2ZSAxMDA2NDQKLS0tIGEvTGF5
b3V0VGVzdHMvZmFzdC9kb20vY2FsbC1hLWNvbnN0cnVjdG9yLWFzLWEtZnVuY3Rpb24tZXhwZWN0
ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL2NhbGwtYS1jb25zdHJ1Y3Rvci1hcy1h
LWZ1bmN0aW9uLWV4cGVjdGVkLnR4dApAQCAtMyw3ICszLDcgQEAgVGhpcyB0ZXN0cyBpZiBUeXBl
RXJyb3IgaXMgdGhyb3duIG9yIG5vdCB3aGVuIHdlIGNhbGwgYSBjb25zdHJ1Y3RvciBhcyBhIG5v
cm1hbAogT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdl
cywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgogCiAKLVNLSVAgQXVkaW9Db250ZXh0IGlz
IG5vdCBpbXBsZW1lbnRlZC4KK1BBU1MgQXVkaW9Db250ZXh0KCkgdGhyZXcgZXhjZXB0aW9uIFR5
cGVFcnJvcjogQ29uc3RydWN0b3IgcmVxdWlyZXMgJ25ldycgb3BlcmF0b3IuCiBQQVNTIEZvcm1E
YXRhKCkgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogQ29uc3RydWN0b3IgcmVxdWlyZXMgJ25l
dycgb3BlcmF0b3IuCiBQQVNTIEV2ZW50U291cmNlKCkgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJv
cjogQ29uc3RydWN0b3IgcmVxdWlyZXMgJ25ldycgb3BlcmF0b3IuCiBQQVNTIEZpbGVSZWFkZXIo
KSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBDb25zdHJ1Y3RvciByZXF1aXJlcyAnbmV3JyBv
cGVyYXRvci4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvc2VydmljZS13b3JrZXJzL3NlcnZpY2Utd29ya2VyL2ZldGNoLWF1ZGlvLXRhaW50
aW5nLmh0dHBzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvc2VydmljZS13b3JrZXJzL3NlcnZpY2Utd29ya2VyL2ZldGNoLWF1ZGlvLXRh
aW50aW5nLmh0dHBzLWV4cGVjdGVkLnR4dAppbmRleCA0OThmNDEzNzAzNzcyMjZhM2NkZGYyMzgx
Y2RjYWU1OTVhNTQwZGVkLi5kNjJkZjdiYmEzYjA3NmRhMTVhNWQxNzZiMjQxM2Q0YmVmOTM4ZGQ2
IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3NlcnZpY2Utd29ya2Vycy9zZXJ2aWNlLXdvcmtlci9mZXRjaC1hdWRpby10YWludGluZy5odHRw
cy1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy9zZXJ2aWNlLXdvcmtlcnMvc2VydmljZS13b3JrZXIvZmV0Y2gtYXVkaW8tdGFpbnRp
bmcuaHR0cHMtZXhwZWN0ZWQudHh0CkBAIC0xLDQgKzEsNiBAQAogCiAKLUZBSUwgVmVyaWZ5IENP
UlMgWEhSIG9mIGZldGNoKCkgaW4gYSBTZXJ2aWNlIFdvcmtlciBwcm9taXNlX3Rlc3Q6IFVuaGFu
ZGxlZCByZWplY3Rpb24gd2l0aCB2YWx1ZTogb2JqZWN0ICJUeXBlRXJyb3I6IHVuZGVmaW5lZCBp
cyBub3QgYSBjb25zdHJ1Y3RvciAoZXZhbHVhdGluZyAnbmV3IHdpbi5BdWRpb0NvbnRleHQoKScp
IgorSGFybmVzcyBFcnJvciAoVElNRU9VVCksIG1lc3NhZ2UgPSBudWxsCisKK1RJTUVPVVQgVmVy
aWZ5IENPUlMgWEhSIG9mIGZldGNoKCkgaW4gYSBTZXJ2aWNlIFdvcmtlciBUZXN0IHRpbWVkIG91
dAogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3dlYmF1ZGlvL2lkbGhhcm5lc3MuaHR0cHMud2luZG93LWV4cGVjdGVkLnR4dCBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2ViYXVkaW8vaWRsaGFybmVz
cy5odHRwcy53aW5kb3ctZXhwZWN0ZWQudHh0CmluZGV4IGNjYzdlOWU4ZjcxYmYxZDQxMjRkYmNk
ZTg5MzYxNmMyNjQwYmMzYWQuLjg1OThkZGFmZTA4MDFmODYzYzdjOTAzZDIxMDI0ZTY4Y2IxYjg3
NjEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvd2ViYXVkaW8vaWRsaGFybmVzcy5odHRwcy53aW5kb3ctZXhwZWN0ZWQudHh0CisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2ViYXVkaW8vaWRsaGFy
bmVzcy5odHRwcy53aW5kb3ctZXhwZWN0ZWQudHh0CkBAIC00Myw3ICs0Myw3IEBAIEZBSUwgQmFz
ZUF1ZGlvQ29udGV4dCBpbnRlcmZhY2U6IG9wZXJhdGlvbiBjcmVhdGVXYXZlU2hhcGVyKCkgYXNz
ZXJ0X293bl9wcm9wZXJ0CiBGQUlMIEJhc2VBdWRpb0NvbnRleHQgaW50ZXJmYWNlOiBvcGVyYXRp
b24gZGVjb2RlQXVkaW9EYXRhKEFycmF5QnVmZmVyLCBvcHRpb25hbCBEZWNvZGVTdWNjZXNzQ2Fs
bGJhY2s/LCBvcHRpb25hbCBEZWNvZGVFcnJvckNhbGxiYWNrPykgYXNzZXJ0X293bl9wcm9wZXJ0
eTogc2VsZiBkb2VzIG5vdCBoYXZlIG93biBwcm9wZXJ0eSAiQmFzZUF1ZGlvQ29udGV4dCIgZXhw
ZWN0ZWQgcHJvcGVydHkgIkJhc2VBdWRpb0NvbnRleHQiIG1pc3NpbmcKIEZBSUwgQXVkaW9Db250
ZXh0IGludGVyZmFjZTogZXhpc3RlbmNlIGFuZCBwcm9wZXJ0aWVzIG9mIGludGVyZmFjZSBvYmpl
Y3QgYXNzZXJ0X293bl9wcm9wZXJ0eTogc2VsZiBkb2VzIG5vdCBoYXZlIG93biBwcm9wZXJ0eSAi
QmFzZUF1ZGlvQ29udGV4dCIgZXhwZWN0ZWQgcHJvcGVydHkgIkJhc2VBdWRpb0NvbnRleHQiIG1p
c3NpbmcKIFBBU1MgQXVkaW9Db250ZXh0IGludGVyZmFjZSBvYmplY3QgbGVuZ3RoIAotRkFJTCBB
dWRpb0NvbnRleHQgaW50ZXJmYWNlIG9iamVjdCBuYW1lIGFzc2VydF9lcXVhbHM6IHdyb25nIHZh
bHVlIGZvciBBdWRpb0NvbnRleHQubmFtZSBleHBlY3RlZCAiQXVkaW9Db250ZXh0IiBidXQgZ290
ICJ3ZWJraXRBdWRpb0NvbnRleHQiCitQQVNTIEF1ZGlvQ29udGV4dCBpbnRlcmZhY2Ugb2JqZWN0
IG5hbWUgCiBGQUlMIEF1ZGlvQ29udGV4dCBpbnRlcmZhY2U6IGV4aXN0ZW5jZSBhbmQgcHJvcGVy
dGllcyBvZiBpbnRlcmZhY2UgcHJvdG90eXBlIG9iamVjdCBhc3NlcnRfb3duX3Byb3BlcnR5OiBz
ZWxmIGRvZXMgbm90IGhhdmUgb3duIHByb3BlcnR5ICJCYXNlQXVkaW9Db250ZXh0IiBleHBlY3Rl
ZCBwcm9wZXJ0eSAiQmFzZUF1ZGlvQ29udGV4dCIgbWlzc2luZwogUEFTUyBBdWRpb0NvbnRleHQg
aW50ZXJmYWNlOiBleGlzdGVuY2UgYW5kIHByb3BlcnRpZXMgb2YgaW50ZXJmYWNlIHByb3RvdHlw
ZSBvYmplY3QncyAiY29uc3RydWN0b3IiIHByb3BlcnR5IAogUEFTUyBBdWRpb0NvbnRleHQgaW50
ZXJmYWNlOiBleGlzdGVuY2UgYW5kIHByb3BlcnRpZXMgb2YgaW50ZXJmYWNlIHByb3RvdHlwZSBv
YmplY3QncyBAQHVuc2NvcGFibGVzIHByb3BlcnR5IApAQCAtNTgsNyArNTgsNyBAQCBQQVNTIEF1
ZGlvQ29udGV4dCBpbnRlcmZhY2U6IG9wZXJhdGlvbiBjcmVhdGVNZWRpYVN0cmVhbVNvdXJjZShN
ZWRpYVN0cmVhbSkKIEZBSUwgQXVkaW9Db250ZXh0IGludGVyZmFjZTogb3BlcmF0aW9uIGNyZWF0
ZU1lZGlhU3RyZWFtVHJhY2tTb3VyY2UoTWVkaWFTdHJlYW1UcmFjaykgYXNzZXJ0X293bl9wcm9w
ZXJ0eTogaW50ZXJmYWNlIHByb3RvdHlwZSBvYmplY3QgbWlzc2luZyBub24tc3RhdGljIG9wZXJh
dGlvbiBleHBlY3RlZCBwcm9wZXJ0eSAiY3JlYXRlTWVkaWFTdHJlYW1UcmFja1NvdXJjZSIgbWlz
c2luZwogUEFTUyBBdWRpb0NvbnRleHQgaW50ZXJmYWNlOiBvcGVyYXRpb24gY3JlYXRlTWVkaWFT
dHJlYW1EZXN0aW5hdGlvbigpIAogUEFTUyBBdWRpb0NvbnRleHQgbXVzdCBiZSBwcmltYXJ5IGlu
dGVyZmFjZSBvZiBjb250ZXh0IAotRkFJTCBTdHJpbmdpZmljYXRpb24gb2YgY29udGV4dCBhc3Nl
cnRfY2xhc3Nfc3RyaW5nOiBjbGFzcyBzdHJpbmcgb2YgY29udGV4dCBleHBlY3RlZCAiW29iamVj
dCBBdWRpb0NvbnRleHRdIiBidXQgZ290ICJbb2JqZWN0IHdlYmtpdEF1ZGlvQ29udGV4dF0iCitQ
QVNTIFN0cmluZ2lmaWNhdGlvbiBvZiBjb250ZXh0IAogRkFJTCBBdWRpb0NvbnRleHQgaW50ZXJm
YWNlOiBjb250ZXh0IG11c3QgaW5oZXJpdCBwcm9wZXJ0eSAiYmFzZUxhdGVuY3kiIHdpdGggdGhl
IHByb3BlciB0eXBlIGFzc2VydF9pbmhlcml0czogcHJvcGVydHkgImJhc2VMYXRlbmN5IiBub3Qg
Zm91bmQgaW4gcHJvdG90eXBlIGNoYWluCiBGQUlMIEF1ZGlvQ29udGV4dCBpbnRlcmZhY2U6IGNv
bnRleHQgbXVzdCBpbmhlcml0IHByb3BlcnR5ICJvdXRwdXRMYXRlbmN5IiB3aXRoIHRoZSBwcm9w
ZXIgdHlwZSBhc3NlcnRfaW5oZXJpdHM6IHByb3BlcnR5ICJvdXRwdXRMYXRlbmN5IiBub3QgZm91
bmQgaW4gcHJvdG90eXBlIGNoYWluCiBGQUlMIEF1ZGlvQ29udGV4dCBpbnRlcmZhY2U6IGNvbnRl
eHQgbXVzdCBpbmhlcml0IHByb3BlcnR5ICJnZXRPdXRwdXRUaW1lc3RhbXAoKSIgd2l0aCB0aGUg
cHJvcGVyIHR5cGUgYXNzZXJ0X2luaGVyaXRzOiBwcm9wZXJ0eSAiZ2V0T3V0cHV0VGltZXN0YW1w
IiBub3QgZm91bmQgaW4gcHJvdG90eXBlIGNoYWluCkBAIC0xMDgsNyArMTA4LDcgQEAgUEFTUyBC
YXNlQXVkaW9Db250ZXh0IGludGVyZmFjZTogY29udGV4dCBtdXN0IGluaGVyaXQgcHJvcGVydHkg
ImRlY29kZUF1ZGlvRGF0YSgKIEZBSUwgQmFzZUF1ZGlvQ29udGV4dCBpbnRlcmZhY2U6IGNhbGxp
bmcgZGVjb2RlQXVkaW9EYXRhKEFycmF5QnVmZmVyLCBvcHRpb25hbCBEZWNvZGVTdWNjZXNzQ2Fs
bGJhY2s/LCBvcHRpb25hbCBEZWNvZGVFcnJvckNhbGxiYWNrPykgb24gY29udGV4dCB3aXRoIHRv
byBmZXcgYXJndW1lbnRzIG11c3QgdGhyb3cgVHlwZUVycm9yIGFzc2VydF91bnJlYWNoZWQ6IFRo
cm93cyAiVHlwZUVycm9yOiBOb3QgZW5vdWdoIGFyZ3VtZW50cyIgaW5zdGVhZCBvZiByZWplY3Rp
bmcgcHJvbWlzZSBSZWFjaGVkIHVucmVhY2hhYmxlIGNvZGUKIEZBSUwgT2ZmbGluZUF1ZGlvQ29u
dGV4dCBpbnRlcmZhY2U6IGV4aXN0ZW5jZSBhbmQgcHJvcGVydGllcyBvZiBpbnRlcmZhY2Ugb2Jq
ZWN0IGFzc2VydF9vd25fcHJvcGVydHk6IHNlbGYgZG9lcyBub3QgaGF2ZSBvd24gcHJvcGVydHkg
IkJhc2VBdWRpb0NvbnRleHQiIGV4cGVjdGVkIHByb3BlcnR5ICJCYXNlQXVkaW9Db250ZXh0IiBt
aXNzaW5nCiBGQUlMIE9mZmxpbmVBdWRpb0NvbnRleHQgaW50ZXJmYWNlIG9iamVjdCBsZW5ndGgg
YXNzZXJ0X2VxdWFsczogd3JvbmcgdmFsdWUgZm9yIE9mZmxpbmVBdWRpb0NvbnRleHQubGVuZ3Ro
IGV4cGVjdGVkIDEgYnV0IGdvdCAzCi1GQUlMIE9mZmxpbmVBdWRpb0NvbnRleHQgaW50ZXJmYWNl
IG9iamVjdCBuYW1lIGFzc2VydF9lcXVhbHM6IHdyb25nIHZhbHVlIGZvciBPZmZsaW5lQXVkaW9D
b250ZXh0Lm5hbWUgZXhwZWN0ZWQgIk9mZmxpbmVBdWRpb0NvbnRleHQiIGJ1dCBnb3QgIndlYmtp
dE9mZmxpbmVBdWRpb0NvbnRleHQiCitQQVNTIE9mZmxpbmVBdWRpb0NvbnRleHQgaW50ZXJmYWNl
IG9iamVjdCBuYW1lIAogRkFJTCBPZmZsaW5lQXVkaW9Db250ZXh0IGludGVyZmFjZTogZXhpc3Rl
bmNlIGFuZCBwcm9wZXJ0aWVzIG9mIGludGVyZmFjZSBwcm90b3R5cGUgb2JqZWN0IGFzc2VydF9v
d25fcHJvcGVydHk6IHNlbGYgZG9lcyBub3QgaGF2ZSBvd24gcHJvcGVydHkgIkJhc2VBdWRpb0Nv
bnRleHQiIGV4cGVjdGVkIHByb3BlcnR5ICJCYXNlQXVkaW9Db250ZXh0IiBtaXNzaW5nCiBQQVNT
IE9mZmxpbmVBdWRpb0NvbnRleHQgaW50ZXJmYWNlOiBleGlzdGVuY2UgYW5kIHByb3BlcnRpZXMg
b2YgaW50ZXJmYWNlIHByb3RvdHlwZSBvYmplY3QncyAiY29uc3RydWN0b3IiIHByb3BlcnR5IAog
UEFTUyBPZmZsaW5lQXVkaW9Db250ZXh0IGludGVyZmFjZTogZXhpc3RlbmNlIGFuZCBwcm9wZXJ0
aWVzIG9mIGludGVyZmFjZSBwcm90b3R5cGUgb2JqZWN0J3MgQEB1bnNjb3BhYmxlcyBwcm9wZXJ0
eSAKQEAgLTExOCw3ICsxMTgsNyBAQCBGQUlMIE9mZmxpbmVBdWRpb0NvbnRleHQgaW50ZXJmYWNl
OiBvcGVyYXRpb24gc3VzcGVuZChkb3VibGUpIGFzc2VydF9vd25fcHJvcGVydAogRkFJTCBPZmZs
aW5lQXVkaW9Db250ZXh0IGludGVyZmFjZTogYXR0cmlidXRlIGxlbmd0aCBhc3NlcnRfdHJ1ZTog
VGhlIHByb3RvdHlwZSBvYmplY3QgbXVzdCBoYXZlIGEgcHJvcGVydHkgImxlbmd0aCIgZXhwZWN0
ZWQgdHJ1ZSBnb3QgZmFsc2UKIEZBSUwgT2ZmbGluZUF1ZGlvQ29udGV4dCBpbnRlcmZhY2U6IGF0
dHJpYnV0ZSBvbmNvbXBsZXRlIGFzc2VydF9vd25fcHJvcGVydHk6IGV4cGVjdGVkIHByb3BlcnR5
ICJvbmNvbXBsZXRlIiBtaXNzaW5nCiBQQVNTIE9mZmxpbmVBdWRpb0NvbnRleHQgbXVzdCBiZSBw
cmltYXJ5IGludGVyZmFjZSBvZiBuZXcgT2ZmbGluZUF1ZGlvQ29udGV4dCgxLCAxLCBzYW1wbGVf
cmF0ZSkgCi1GQUlMIFN0cmluZ2lmaWNhdGlvbiBvZiBuZXcgT2ZmbGluZUF1ZGlvQ29udGV4dCgx
LCAxLCBzYW1wbGVfcmF0ZSkgYXNzZXJ0X2NsYXNzX3N0cmluZzogY2xhc3Mgc3RyaW5nIG9mIG5l
dyBPZmZsaW5lQXVkaW9Db250ZXh0KDEsIDEsIHNhbXBsZV9yYXRlKSBleHBlY3RlZCAiW29iamVj
dCBPZmZsaW5lQXVkaW9Db250ZXh0XSIgYnV0IGdvdCAiW29iamVjdCB3ZWJraXRPZmZsaW5lQXVk
aW9Db250ZXh0XSIKK1BBU1MgU3RyaW5naWZpY2F0aW9uIG9mIG5ldyBPZmZsaW5lQXVkaW9Db250
ZXh0KDEsIDEsIHNhbXBsZV9yYXRlKSAKIFBBU1MgT2ZmbGluZUF1ZGlvQ29udGV4dCBpbnRlcmZh
Y2U6IG5ldyBPZmZsaW5lQXVkaW9Db250ZXh0KDEsIDEsIHNhbXBsZV9yYXRlKSBtdXN0IGluaGVy
aXQgcHJvcGVydHkgInN0YXJ0UmVuZGVyaW5nKCkiIHdpdGggdGhlIHByb3BlciB0eXBlIAogUEFT
UyBPZmZsaW5lQXVkaW9Db250ZXh0IGludGVyZmFjZTogbmV3IE9mZmxpbmVBdWRpb0NvbnRleHQo
MSwgMSwgc2FtcGxlX3JhdGUpIG11c3QgaW5oZXJpdCBwcm9wZXJ0eSAicmVzdW1lKCkiIHdpdGgg
dGhlIHByb3BlciB0eXBlIAogUEFTUyBPZmZsaW5lQXVkaW9Db250ZXh0IGludGVyZmFjZTogbmV3
IE9mZmxpbmVBdWRpb0NvbnRleHQoMSwgMSwgc2FtcGxlX3JhdGUpIG11c3QgaW5oZXJpdCBwcm9w
ZXJ0eSAic3VzcGVuZChkb3VibGUpIiB3aXRoIHRoZSBwcm9wZXIgdHlwZSAKQEAgLTkwNCw3ICs5
MDQsNyBAQCBGQUlMIEF1ZGlvTm9kZSBpbnRlcmZhY2U6IG5ldyBPc2NpbGxhdG9yTm9kZShjb250
ZXh0KSBtdXN0IGluaGVyaXQgcHJvcGVydHkgImNoYQogRkFJTCBBdWRpb05vZGUgaW50ZXJmYWNl
OiBuZXcgT3NjaWxsYXRvck5vZGUoY29udGV4dCkgbXVzdCBpbmhlcml0IHByb3BlcnR5ICJjaGFu
bmVsSW50ZXJwcmV0YXRpb24iIHdpdGggdGhlIHByb3BlciB0eXBlIGFzc2VydF9lcXVhbHM6IFVu
ZXhwZWN0ZWQgZXhjZXB0aW9uIHdoZW4gZXZhbHVhdGluZyBvYmplY3QgZXhwZWN0ZWQgbnVsbCBi
dXQgZ290IG9iamVjdCAiVHlwZUVycm9yOiBmdW5jdGlvbiBpcyBub3QgYSBjb25zdHJ1Y3RvciAo
ZXZhbHVhdGluZyAnbmV3IE9zY2lsbGF0b3JOb2RlKGNvbnRleHQpJykiCiBQQVNTIFBhbm5lck5v
ZGUgaW50ZXJmYWNlOiBleGlzdGVuY2UgYW5kIHByb3BlcnRpZXMgb2YgaW50ZXJmYWNlIG9iamVj
dCAKIEZBSUwgUGFubmVyTm9kZSBpbnRlcmZhY2Ugb2JqZWN0IGxlbmd0aCBhc3NlcnRfZXF1YWxz
OiB3cm9uZyB2YWx1ZSBmb3IgUGFubmVyTm9kZS5sZW5ndGggZXhwZWN0ZWQgMSBidXQgZ290IDAK
LUZBSUwgUGFubmVyTm9kZSBpbnRlcmZhY2Ugb2JqZWN0IG5hbWUgYXNzZXJ0X2VxdWFsczogd3Jv
bmcgdmFsdWUgZm9yIFBhbm5lck5vZGUubmFtZSBleHBlY3RlZCAiUGFubmVyTm9kZSIgYnV0IGdv
dCAid2Via2l0QXVkaW9QYW5uZXJOb2RlIgorUEFTUyBQYW5uZXJOb2RlIGludGVyZmFjZSBvYmpl
Y3QgbmFtZSAKIFBBU1MgUGFubmVyTm9kZSBpbnRlcmZhY2U6IGV4aXN0ZW5jZSBhbmQgcHJvcGVy
dGllcyBvZiBpbnRlcmZhY2UgcHJvdG90eXBlIG9iamVjdCAKIFBBU1MgUGFubmVyTm9kZSBpbnRl
cmZhY2U6IGV4aXN0ZW5jZSBhbmQgcHJvcGVydGllcyBvZiBpbnRlcmZhY2UgcHJvdG90eXBlIG9i
amVjdCdzICJjb25zdHJ1Y3RvciIgcHJvcGVydHkgCiBQQVNTIFBhbm5lck5vZGUgaW50ZXJmYWNl
OiBleGlzdGVuY2UgYW5kIHByb3BlcnRpZXMgb2YgaW50ZXJmYWNlIHByb3RvdHlwZSBvYmplY3Qn
cyBAQHVuc2NvcGFibGVzIHByb3BlcnR5IApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJhdWRpby90aGUtYXVkaW8tYXBpL3RoZS1hdWRp
b2NvbnRleHQtaW50ZXJmYWNlL2F1ZGlvY29udGV4dC1kZXRhY2hlZC1leGVjdXRpb24tY29udGV4
dC50ZW50YXRpdmUtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy93ZWJhdWRpby90aGUtYXVkaW8tYXBpL3RoZS1hdWRpb2NvbnRleHQtaW50
ZXJmYWNlL2F1ZGlvY29udGV4dC1kZXRhY2hlZC1leGVjdXRpb24tY29udGV4dC50ZW50YXRpdmUt
ZXhwZWN0ZWQudHh0CmluZGV4IDM0NGZjZDljOTQwNWJlZGZhOWIzNDdkZWI3MzEyYjdkNDRiMjg3
NmYuLjhiOGRlOTBmY2JiNTRmZDliYzk2NjNmYTQ5MzQ1NTM4Y2EwZmUxMTAgMTAwNjQ0Ci0tLSBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2ViYXVkaW8vdGhl
LWF1ZGlvLWFwaS90aGUtYXVkaW9jb250ZXh0LWludGVyZmFjZS9hdWRpb2NvbnRleHQtZGV0YWNo
ZWQtZXhlY3V0aW9uLWNvbnRleHQudGVudGF0aXZlLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYmF1ZGlvL3RoZS1hdWRpby1h
cGkvdGhlLWF1ZGlvY29udGV4dC1pbnRlcmZhY2UvYXVkaW9jb250ZXh0LWRldGFjaGVkLWV4ZWN1
dGlvbi1jb250ZXh0LnRlbnRhdGl2ZS1leHBlY3RlZC50eHQKQEAgLTEsNyArMSw2IEBACiAKLQog
UEFTUyAjIEFVRElUIFRBU0sgUlVOTkVSIFNUQVJURUQuIAotRkFJTCBFeGVjdXRpbmcgImRlY29k
aW5nLW9uLWRldGFjaGVkLWlmcmFtZSIgcHJvbWlzZV90ZXN0OiBVbmhhbmRsZWQgcmVqZWN0aW9u
IHdpdGggdmFsdWU6IG9iamVjdCAiVHlwZUVycm9yOiB1bmRlZmluZWQgaXMgbm90IGEgY29uc3Ry
dWN0b3IgKGV2YWx1YXRpbmcgJ25ldyBpZnJhbWUuY29udGVudFdpbmRvdy5BdWRpb0NvbnRleHQo
KScpIgorRkFJTCBFeGVjdXRpbmcgImRlY29kaW5nLW9uLWRldGFjaGVkLWlmcmFtZSIgcHJvbWlz
ZV90ZXN0OiBVbmhhbmRsZWQgcmVqZWN0aW9uIHdpdGggdmFsdWU6IG9iamVjdCAiVHlwZUVycm9y
OiBOb3QgZW5vdWdoIGFyZ3VtZW50cyIKIFBBU1MgQXVkaXQgcmVwb3J0IAogUEFTUyA+IFtkZWNv
ZGluZy1vbi1kZXRhY2hlZC1pZnJhbWVdICAKIFBBU1MgIyBBVURJVCBUQVNLIFJVTk5FUiBGSU5J
U0hFRDogMSB0YXNrcyByYW4gc3VjY2Vzc2Z1bGx5LiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2ViYXVkaW8vdGhlLWF1ZGlvLWFwaS90
aGUtYXVkaW9ub2RlLWludGVyZmFjZS9hdWRpb25vZGUtY29ubmVjdC1tZXRob2QtY2hhaW5pbmct
ZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy93ZWJhdWRpby90aGUtYXVkaW8tYXBpL3RoZS1hdWRpb25vZGUtaW50ZXJmYWNlL2F1ZGlvbm9k
ZS1jb25uZWN0LW1ldGhvZC1jaGFpbmluZy1leHBlY3RlZC50eHQKaW5kZXggNzNmNzdlNTVjYzg5
MTY1NmMyYmRhNjhlM2E5ZTM3MTY5NTgyZjg0Yy4uNmE2NTliNTYyNThkNTQzNzk3NWI1NThkZDdk
M2I5OWZlODA3ZDI2YiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy93ZWJhdWRpby90aGUtYXVkaW8tYXBpL3RoZS1hdWRpb25vZGUtaW50ZXJm
YWNlL2F1ZGlvbm9kZS1jb25uZWN0LW1ldGhvZC1jaGFpbmluZy1leHBlY3RlZC50eHQKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJhdWRpby90aGUt
YXVkaW8tYXBpL3RoZS1hdWRpb25vZGUtaW50ZXJmYWNlL2F1ZGlvbm9kZS1jb25uZWN0LW1ldGhv
ZC1jaGFpbmluZy1leHBlY3RlZC50eHQKQEAgLTM2LDkgKzM2LDkgQEAgUEFTUyAgIFRoZSByZXR1
cm4gdmFsdWUgb2YgR2Fpbk5vZGUuY29ubmVjdChDaGFubmVsTWVyZ2VyTm9kZSwgMCwgMSkgbWF0
Y2hlcyB0aGUKIFBBU1MgICBUaGUgcmV0dXJuIHZhbHVlIG9mIE9zY2lsbGF0b3JOb2RlLmNvbm5l
Y3QoR2Fpbk5vZGUpIG1hdGNoZXMgdGhlIGRlc3RpbmF0aW9uIEdhaW5Ob2RlIGlzIGVxdWFsIHRv
IHRydWUuIAogUEFTUyAgIFRoZSByZXR1cm4gdmFsdWUgb2YgT3NjaWxsYXRvck5vZGUuY29ubmVj
dChCaXF1YWRGaWx0ZXJOb2RlLCAwKSBtYXRjaGVzIHRoZSBkZXN0aW5hdGlvbiBCaXF1YWRGaWx0
ZXJOb2RlIGlzIGVxdWFsIHRvIHRydWUuIAogUEFTUyAgIFRoZSByZXR1cm4gdmFsdWUgb2YgT3Nj
aWxsYXRvck5vZGUuY29ubmVjdChDaGFubmVsTWVyZ2VyTm9kZSwgMCwgMSkgbWF0Y2hlcyB0aGUg
ZGVzdGluYXRpb24gQ2hhbm5lbE1lcmdlck5vZGUgaXMgZXF1YWwgdG8gdHJ1ZS4gCi1QQVNTICAg
VGhlIHJldHVybiB2YWx1ZSBvZiB3ZWJraXRBdWRpb1Bhbm5lck5vZGUuY29ubmVjdChHYWluTm9k
ZSkgbWF0Y2hlcyB0aGUgZGVzdGluYXRpb24gR2Fpbk5vZGUgaXMgZXF1YWwgdG8gdHJ1ZS4gCi1Q
QVNTICAgVGhlIHJldHVybiB2YWx1ZSBvZiB3ZWJraXRBdWRpb1Bhbm5lck5vZGUuY29ubmVjdChC
aXF1YWRGaWx0ZXJOb2RlLCAwKSBtYXRjaGVzIHRoZSBkZXN0aW5hdGlvbiBCaXF1YWRGaWx0ZXJO
b2RlIGlzIGVxdWFsIHRvIHRydWUuIAotUEFTUyAgIFRoZSByZXR1cm4gdmFsdWUgb2Ygd2Via2l0
QXVkaW9QYW5uZXJOb2RlLmNvbm5lY3QoQ2hhbm5lbE1lcmdlck5vZGUsIDAsIDEpIG1hdGNoZXMg
dGhlIGRlc3RpbmF0aW9uIENoYW5uZWxNZXJnZXJOb2RlIGlzIGVxdWFsIHRvIHRydWUuIAorUEFT
UyAgIFRoZSByZXR1cm4gdmFsdWUgb2YgUGFubmVyTm9kZS5jb25uZWN0KEdhaW5Ob2RlKSBtYXRj
aGVzIHRoZSBkZXN0aW5hdGlvbiBHYWluTm9kZSBpcyBlcXVhbCB0byB0cnVlLiAKK1BBU1MgICBU
aGUgcmV0dXJuIHZhbHVlIG9mIFBhbm5lck5vZGUuY29ubmVjdChCaXF1YWRGaWx0ZXJOb2RlLCAw
KSBtYXRjaGVzIHRoZSBkZXN0aW5hdGlvbiBCaXF1YWRGaWx0ZXJOb2RlIGlzIGVxdWFsIHRvIHRy
dWUuIAorUEFTUyAgIFRoZSByZXR1cm4gdmFsdWUgb2YgUGFubmVyTm9kZS5jb25uZWN0KENoYW5u
ZWxNZXJnZXJOb2RlLCAwLCAxKSBtYXRjaGVzIHRoZSBkZXN0aW5hdGlvbiBDaGFubmVsTWVyZ2Vy
Tm9kZSBpcyBlcXVhbCB0byB0cnVlLiAKIFBBU1MgICBUaGUgcmV0dXJuIHZhbHVlIG9mIFNjcmlw
dFByb2Nlc3Nvck5vZGUuY29ubmVjdChHYWluTm9kZSkgbWF0Y2hlcyB0aGUgZGVzdGluYXRpb24g
R2Fpbk5vZGUgaXMgZXF1YWwgdG8gdHJ1ZS4gCiBQQVNTICAgVGhlIHJldHVybiB2YWx1ZSBvZiBT
Y3JpcHRQcm9jZXNzb3JOb2RlLmNvbm5lY3QoQmlxdWFkRmlsdGVyTm9kZSwgMCkgbWF0Y2hlcyB0
aGUgZGVzdGluYXRpb24gQmlxdWFkRmlsdGVyTm9kZSBpcyBlcXVhbCB0byB0cnVlLiAKIFBBU1Mg
ICBUaGUgcmV0dXJuIHZhbHVlIG9mIFNjcmlwdFByb2Nlc3Nvck5vZGUuY29ubmVjdChDaGFubmVs
TWVyZ2VyTm9kZSwgMCwgMSkgbWF0Y2hlcyB0aGUgZGVzdGluYXRpb24gQ2hhbm5lbE1lcmdlck5v
ZGUgaXMgZXF1YWwgdG8gdHJ1ZS4gCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYmF1ZGlvL3RoZS1hdWRpby1hcGkvdGhlLW9mZmxpbmVh
dWRpb2NvbnRleHQtaW50ZXJmYWNlL29mZmxpbmVhdWRpb2NvbnRleHQtZGV0YWNoZWQtZXhlY3V0
aW9uLWNvbnRleHQudGVudGF0aXZlLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2ViYXVkaW8vdGhlLWF1ZGlvLWFwaS90aGUtb2ZmbGlu
ZWF1ZGlvY29udGV4dC1pbnRlcmZhY2Uvb2ZmbGluZWF1ZGlvY29udGV4dC1kZXRhY2hlZC1leGVj
dXRpb24tY29udGV4dC50ZW50YXRpdmUtZXhwZWN0ZWQudHh0CmluZGV4IGQzZjBmYTAxMjg0N2Fl
MzAwNzI0MTFiNmU5YTNhNGFiODQ1NTJkYzEuLmIyZGEwNzA0NTA0MDhlOTZjNGIxMTE2ZDk0M2Qw
MjFlNjQ3YzA1MTcgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvd2ViYXVkaW8vdGhlLWF1ZGlvLWFwaS90aGUtb2ZmbGluZWF1ZGlvY29udGV4
dC1pbnRlcmZhY2Uvb2ZmbGluZWF1ZGlvY29udGV4dC1kZXRhY2hlZC1leGVjdXRpb24tY29udGV4
dC50ZW50YXRpdmUtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvd2ViYXVkaW8vdGhlLWF1ZGlvLWFwaS90aGUtb2ZmbGluZWF1ZGlv
Y29udGV4dC1pbnRlcmZhY2Uvb2ZmbGluZWF1ZGlvY29udGV4dC1kZXRhY2hlZC1leGVjdXRpb24t
Y29udGV4dC50ZW50YXRpdmUtZXhwZWN0ZWQudHh0CkBAIC0xLDcgKzEsNyBAQAogCiAKIFBBU1Mg
IyBBVURJVCBUQVNLIFJVTk5FUiBTVEFSVEVELiAKLUZBSUwgRXhlY3V0aW5nICJkZWNvZGluZy1v
bi1kZXRhY2hlZC1pZnJhbWUiIHByb21pc2VfdGVzdDogVW5oYW5kbGVkIHJlamVjdGlvbiB3aXRo
IHZhbHVlOiBvYmplY3QgIlR5cGVFcnJvcjogdW5kZWZpbmVkIGlzIG5vdCBhIGNvbnN0cnVjdG9y
IChldmFsdWF0aW5nICduZXcgaWZyYW1lLmNvbnRlbnRXaW5kb3cuT2ZmbGluZUF1ZGlvQ29udGV4
dCgxLCAxLCAzMDAwKScpIgorRkFJTCBFeGVjdXRpbmcgImRlY29kaW5nLW9uLWRldGFjaGVkLWlm
cmFtZSIgcHJvbWlzZV90ZXN0OiBVbmhhbmRsZWQgcmVqZWN0aW9uIHdpdGggdmFsdWU6IG9iamVj
dCAiU3ludGF4RXJyb3I6IFRoZSBzdHJpbmcgZGlkIG5vdCBtYXRjaCB0aGUgZXhwZWN0ZWQgcGF0
dGVybi4iCiBQQVNTIEF1ZGl0IHJlcG9ydCAKIFBBU1MgPiBbZGVjb2Rpbmctb24tZGV0YWNoZWQt
aWZyYW1lXSAgCiBQQVNTICMgQVVESVQgVEFTSyBSVU5ORVIgRklOSVNIRUQ6IDEgdGFza3MgcmFu
IHN1Y2Nlc3NmdWxseS4gCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9pb3MvanMv
ZG9tL2NvbnN0cnVjdG9yLWxlbmd0aC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9y
bS9pb3MvanMvZG9tL2NvbnN0cnVjdG9yLWxlbmd0aC1leHBlY3RlZC50eHQKaW5kZXggNTU1ZDIz
YjMzZjhiNmU5ZGFjMDI0ZDA4OGMzNTE2YjdiMmEyYzc3MC4uZGJjYmM3ODhiMjQzYWZhYjAyMDgw
ZTRkZDU1OTg4YjliYjYwZDEyNCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vaW9z
L2pzL2RvbS9jb25zdHJ1Y3Rvci1sZW5ndGgtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3Rz
L3BsYXRmb3JtL2lvcy9qcy9kb20vY29uc3RydWN0b3ItbGVuZ3RoLWV4cGVjdGVkLnR4dApAQCAt
NCw3ICs0LDcgQEAgT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBt
ZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUKIAogCiBQQVNTIEFycmF5QnVmZmVy
Lmxlbmd0aCBpcyAxCi1GQUlMIEF1ZGlvQ29udGV4dC5sZW5ndGggc2hvdWxkIGJlIDAuIFRocmV3
IGV4Y2VwdGlvbiBSZWZlcmVuY2VFcnJvcjogQ2FuJ3QgZmluZCB2YXJpYWJsZTogQXVkaW9Db250
ZXh0CitQQVNTIEF1ZGlvQ29udGV4dC5sZW5ndGggaXMgMAogRkFJTCBBdXRvY29tcGxldGVFcnJv
ckV2ZW50Lmxlbmd0aCBzaG91bGQgYmUgMS4gVGhyZXcgZXhjZXB0aW9uIFJlZmVyZW5jZUVycm9y
OiBDYW4ndCBmaW5kIHZhcmlhYmxlOiBBdXRvY29tcGxldGVFcnJvckV2ZW50CiBQQVNTIEFuaW1h
dGlvbkV2ZW50Lmxlbmd0aCBpcyAxCiBQQVNTIEJsb2IubGVuZ3RoIGlzIDAKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9qcy9kb20vY29uc3RydWN0b3ItbGVuZ3RoLWV4cGVj
dGVkLnR4dCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9qcy9kb20vY29uc3RydWN0b3ItbGVu
Z3RoLWV4cGVjdGVkLnR4dAppbmRleCA1NTVkMjNiMzNmOGI2ZTlkYWMwMjRkMDg4YzM1MTZiN2Iy
YTJjNzcwLi5kYmNiYzc4OGIyNDNhZmFiMDIwODBlNGRkNTU5ODhiOWJiNjBkMTI0IDEwMDY0NAot
LS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvanMvZG9tL2NvbnN0cnVjdG9yLWxlbmd0aC1l
eHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2pzL2RvbS9jb25zdHJ1
Y3Rvci1sZW5ndGgtZXhwZWN0ZWQudHh0CkBAIC00LDcgKzQsNyBAQCBPbiBzdWNjZXNzLCB5b3Ug
d2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBD
T01QTEVURQogCiAKIFBBU1MgQXJyYXlCdWZmZXIubGVuZ3RoIGlzIDEKLUZBSUwgQXVkaW9Db250
ZXh0Lmxlbmd0aCBzaG91bGQgYmUgMC4gVGhyZXcgZXhjZXB0aW9uIFJlZmVyZW5jZUVycm9yOiBD
YW4ndCBmaW5kIHZhcmlhYmxlOiBBdWRpb0NvbnRleHQKK1BBU1MgQXVkaW9Db250ZXh0Lmxlbmd0
aCBpcyAwCiBGQUlMIEF1dG9jb21wbGV0ZUVycm9yRXZlbnQubGVuZ3RoIHNob3VsZCBiZSAxLiBU
aHJldyBleGNlcHRpb24gUmVmZXJlbmNlRXJyb3I6IENhbid0IGZpbmQgdmFyaWFibGU6IEF1dG9j
b21wbGV0ZUVycm9yRXZlbnQKIFBBU1MgQW5pbWF0aW9uRXZlbnQubGVuZ3RoIGlzIDEKIFBBU1Mg
QmxvYi5sZW5ndGggaXMgMApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2luL2Zh
c3QvZG9tL2NhbGwtYS1jb25zdHJ1Y3Rvci1hcy1hLWZ1bmN0aW9uLWV4cGVjdGVkLnR4dCBiL0xh
eW91dFRlc3RzL3BsYXRmb3JtL3dpbi9mYXN0L2RvbS9jYWxsLWEtY29uc3RydWN0b3ItYXMtYS1m
dW5jdGlvbi1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOGExODAxY2EyMmZjNjZlZWRhMzkyY2Qz
ZjdhZjBkNjIxNWYyOTJlMAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3Jt
L3dpbi9mYXN0L2RvbS9jYWxsLWEtY29uc3RydWN0b3ItYXMtYS1mdW5jdGlvbi1leHBlY3RlZC50
eHQKQEAgLTAsMCArMSwyMyBAQAorVGhpcyB0ZXN0cyBpZiBUeXBlRXJyb3IgaXMgdGhyb3duIG9y
IG5vdCB3aGVuIHdlIGNhbGwgYSBjb25zdHJ1Y3RvciBhcyBhIG5vcm1hbCBmdW5jdGlvbi4KKwor
T24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9s
bG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1NLSVAgQXVkaW9Db250ZXh0IGlzIG5vdCBp
bXBsZW1lbnRlZC4KK1BBU1MgRm9ybURhdGEoKSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBD
b25zdHJ1Y3RvciByZXF1aXJlcyAnbmV3JyBvcGVyYXRvci4KK1BBU1MgRXZlbnRTb3VyY2UoKSB0
aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBDb25zdHJ1Y3RvciByZXF1aXJlcyAnbmV3JyBvcGVy
YXRvci4KK1BBU1MgRmlsZVJlYWRlcigpIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IENvbnN0
cnVjdG9yIHJlcXVpcmVzICduZXcnIG9wZXJhdG9yLgorUEFTUyBBdWRpbygpIHRocmV3IGV4Y2Vw
dGlvbiBUeXBlRXJyb3I6IENvbnN0cnVjdG9yIHJlcXVpcmVzICduZXcnIG9wZXJhdG9yLgorUEFT
UyBJbWFnZSgpIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IENvbnN0cnVjdG9yIHJlcXVpcmVz
ICduZXcnIG9wZXJhdG9yLgorUEFTUyBPcHRpb24oKSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9y
OiBDb25zdHJ1Y3RvciByZXF1aXJlcyAnbmV3JyBvcGVyYXRvci4KK1BBU1MgTWVzc2FnZUNoYW5u
ZWwoKSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBDb25zdHJ1Y3RvciByZXF1aXJlcyAnbmV3
JyBvcGVyYXRvci4KK1BBU1MgV2ViS2l0Q1NTTWF0cml4KCkgdGhyZXcgZXhjZXB0aW9uIFR5cGVF
cnJvcjogQ29uc3RydWN0b3IgcmVxdWlyZXMgJ25ldycgb3BlcmF0b3IuCitQQVNTIFdlYktpdFBv
aW50KCkgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogQ29uc3RydWN0b3IgcmVxdWlyZXMgJ25l
dycgb3BlcmF0b3IuCitQQVNTIFdlYlNvY2tldCgpIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6
IENvbnN0cnVjdG9yIHJlcXVpcmVzICduZXcnIG9wZXJhdG9yLgorUEFTUyBXb3JrZXIoKSB0aHJl
dyBleGNlcHRpb24gVHlwZUVycm9yOiBDb25zdHJ1Y3RvciByZXF1aXJlcyAnbmV3JyBvcGVyYXRv
ci4KK1BBU1MgWE1MSHR0cFJlcXVlc3QoKSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBDb25z
dHJ1Y3RvciByZXF1aXJlcyAnbmV3JyBvcGVyYXRvci4KK1BBU1MgWFNMVFByb2Nlc3NvcigpIHRo
cmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IENvbnN0cnVjdG9yIHJlcXVpcmVzICduZXcnIG9wZXJh
dG9yLgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL3dpbi9qcy9kb20vY29uc3RydWN0b3It
bGVuZ3RoLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL3dpbi9qcy9kb20vY29u
c3RydWN0b3ItbGVuZ3RoLWV4cGVjdGVkLnR4dAppbmRleCA5ZGRkYWU0OTdmYTQ5YmVhYTBmZTdj
NTY3YjU2MDhkNzQ3MWMwMWU2Li5jYjZkOTlmNTU0ZDkwYTI5MWMwMTBmYmI1YmFhZDQyZjg0NmJm
NTlkIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93aW4vanMvZG9tL2NvbnN0cnVj
dG9yLWxlbmd0aC1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2luL2pz
L2RvbS9jb25zdHJ1Y3Rvci1sZW5ndGgtZXhwZWN0ZWQudHh0CkBAIC00LDcgKzQsNyBAQCBPbiBz
dWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dl
ZCBieSAiVEVTVCBDT01QTEVURQogCiAKIFBBU1MgQXJyYXlCdWZmZXIubGVuZ3RoIGlzIDEKLUZB
SUwgQXVkaW9Db250ZXh0Lmxlbmd0aCBzaG91bGQgYmUgMC4gVGhyZXcgZXhjZXB0aW9uIFJlZmVy
ZW5jZUVycm9yOiBDYW4ndCBmaW5kIHZhcmlhYmxlOiBBdWRpb0NvbnRleHQKK1BBU1MgQXVkaW9D
b250ZXh0Lmxlbmd0aCBpcyAwCiBGQUlMIEF1dG9jb21wbGV0ZUVycm9yRXZlbnQubGVuZ3RoIHNo
b3VsZCBiZSAxLiBUaHJldyBleGNlcHRpb24gUmVmZXJlbmNlRXJyb3I6IENhbid0IGZpbmQgdmFy
aWFibGU6IEF1dG9jb21wbGV0ZUVycm9yRXZlbnQKIFBBU1MgQW5pbWF0aW9uRXZlbnQubGVuZ3Ro
IGlzIDEKIFBBU1MgQmxvYi5sZW5ndGggaXMgMAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>